addfile ./Package.hs addfile ./UseConfig.hs hunk ./Package.hs 1 +module Package where + +data PackageIdentifier + = PackageIdentifier {pkgName::String, pkgVersion::Version} + deriving (Read, Show, Eq, Ord) + +data PackageDescription + = PackageDescription { package :: PackageIdentifier, + licenese :: License, + copyright :: String, + maintainer :: String, + stability :: String} + +data PackageConfig + = PackageConfig {packageDescription :: Packagedescription, + buildDepends :: [ Dependency ], + sources :: [ FilePath ], + extensions :: [ Extension ], + library :: String, -- library name + extraLibs :: [ String ], + includeDirs :: [ FilePath ], + includes :: [ FilePath ], + options :: [ (Compiler, [String]) ] + } hunk ./UseConfig.hs 1 +-- This module is meant to be local-only to Distribution... + +module UseConfig where + +data UseConfig + = UseConfig { + pkgIdent :: PkgIdentifier, + license :: License, + copyright :: String, + maintainer :: String, + stability :: String, + auto :: Bool, +-- provides :: [String], +{- A bit pi-in-the-sky; might indicate that this package provides + functionality that other packages also provide, such as a compiler + or GUI framework, and upon which other packages might depend. -} + +-- isDefault :: Bool, +-- might indicate if this is the default compiler or GUI framework. + + importDirs :: [FilePath], + sourceDirs :: [FilePath], + libraryDirs :: [FilePath], + hsLibraries :: [String], + extraLibraries :: [String], + includeDirs :: [FilePath], + cIncludes :: [String], + depends :: [Dependency], -- use dependencies + extraHugsOpts :: [Opt], + extraCcOpts :: [Opt], + extraLdOpts :: [Opt], + frameworkDirs :: [FilePath], + extraFrameworks:: [String]} + deriving (Read, Show) adddir ./Distribution move ./Package.hs ./Distribution/Package.hs move ./UseConfig.hs ./Distribution/UseConfig.hs addfile ./Distribution/Version.hs addfile ./Distribution/Compiler.hs addfile ./Distribution/Build.hs hunk ./Distribution/Build.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Build +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : +-- + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Build where + +import Distribution.Package(PackageConfig) +import Distribution.Compiler(Compiler) + +build :: PackageConfig -> Compiler -> IO () +build _ _ = return () hunk ./Distribution/Compiler.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Compiler +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Compiler where + +data Flavor = GHC | NHC | Hugs | HBC | Helium | OtherCompiler String + +data Compiler = Compiler {flavor :: Compiler, + path :: FilePath, + packagingTool :: FilePath} hunk ./Distribution/Package.hs 1 -module Package where +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Package +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL hunk ./Distribution/Package.hs 13 +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Package(PackageIdentifier(..), + PackageDescription(..), + PackageConfig(..)) + where + hunk ./Distribution/Version.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Version +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC +-- +-- Explanation: Represents and parses versions like Nov-2003, 1.2-4, etc. + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Version where + +import Time (Month(..)) +import Text.ParserCombinators.Parsec +import Text.ParserCombinators.Parsec.Language +import qualified Text.ParserCombinators.Parsec.Token as P + +import HUnit + +data Version = DateVersion {versionYear :: Integer, + versionMonth :: Month, + versionDay :: Integer} + | NumberedVersion {versionMajor :: Integer, + versionMinor :: Integer, + versionPatchLevel :: Integer} + | NoVersion + deriving (Read, Show, Eq, Ord) + +-- |FIX: add between versions? striclyBetween, etc? +data VersionRange + = AnyVersion + | ExactlyThisVersion Version -- = version + | OrLaterVersion Version -- >= version + | OrEarlierVersion Version -- <= version + | StrictlyLaterVersion Version -- > version + | StrictlyEarlierVersion Version -- < version +-- v1 < x <= v3, etc. Note exactly and any don't make sense here: + | Between VersionRange VersionRange + deriving (Read, Show, Eq) + +number :: (Integral a, Read a) => Parser a +number = do{ ds <- many1 digit + ; return (read ds) + } + "number" + +showVer :: Version -> String +showVer (DateVersion yr mn day) + = (show yr) ++ "." ++ (show mn) ++ "." ++ (show day) +showVer (NumberedVersion mj mn p) + = (show mj) ++ "." ++ (show mn) ++ "-" ++ (show p) +showVer NoVersion = "none" + +-- |Does this version fall within the given range? +withinRange :: Version -> VersionRange -> Bool +withinRange _ AnyVersion = True +withinRange v1 (ExactlyThisVersion v2) = v1 == v2 +withinRange v1 (OrLaterVersion v2) = v2 <= v1 +withinRange v1 (OrEarlierVersion v2) = v1 <= v2 +withinRange v1 (StrictlyEarlierVersion v2) = v1 < v2 +withinRange v1 (StrictlyLaterVersion v2) = v2 < v1 +withinRange v (Between v1 v2) = (withinRange v v1) && (withinRange v v2) + +-- ------------------------------------------------------------ +-- * Parsing +-- ------------------------------------------------------------ + +word :: Parser String +word = many1 letter "word" + +-- ----------------------------------------------------------- +parseVersionRange :: Parser VersionRange +parseVersionRange = try (do reservedOp "<" + v <- versionParser + return $ StrictlyEarlierVersion v) + <|> (do reservedOp ">" + v <- versionParser + return $ StrictlyLaterVersion v) + <|> (do reservedOp ">=" + v <- versionParser + return $ OrLaterVersion v) + <|> (do reservedOp "<=" + v <- versionParser + return $ OrEarlierVersion v) + <|> (do reservedOp "==" + v <- versionParser + return $ ExactlyThisVersion v) + <|> (do reservedOp "-" + reserved "any" + return $ AnyVersion) + + +-- ----------------------------------------------------------- +-- |Parse any kind of version +versionParser :: Parser Version +versionParser + = do try numberedVersionParser + <|> dateVersionParser + + +-- ----------------------------------------------------------- +-- |Parse a version of the form 1.2-3 +numberedVersionParser :: Parser Version +numberedVersionParser + = do n1 <- number + char '.' + n2 <- number + char '-' + n3 <- number + return $ NumberedVersion n1 n2 n3 + + +-- ---------------------------------------------------------- +-- |Seperate the date with typically a '.' or a '-', /sep/ +dateSeparatedBy :: Char -> GenParser Char () Version +dateSeparatedBy sep + = try (do year <- number -- 2003.01.15, 2003.1.15 + char sep + month <- number + char sep + day <- number + return $ DateVersion year (toEnum $ month - 1) day) + <|> try (do year <- number -- 2003-Jan-15 + char sep + month <- shortMonthParser + char sep + day <- number + return $ DateVersion year month day) + + <|> try (do month <- shortMonthParser -- Nov-2002 + char sep + year <- number + return $ DateVersion year month 0) + + <|> try (do year <- number -- 2003-January-15 + char sep + month <- word + char sep + day <- number + return $ DateVersion year (read month) day) + +-- ---------------------------------------------------------- +-- |Parse a version in a variety of date formats +dateVersionParser :: Parser Version +dateVersionParser + = try (dateSeparatedBy '.') + <|> (dateSeparatedBy '-') + +shortMonthParser :: Parser Month +shortMonthParser = foldl1 (<|>) [do reserved a;return b | (a,b) + <- [("Jan", January), ("Feb", February), + ("Mar", March), ("Apr", April), + ("May", May), ("Jun", June), + ("Jul", July), ("Aug", August), + ("Sep", September), ("Oct", October), + ("Nov", November), ("Dec", December)]] + +lexer :: P.TokenParser () +lexer = P.makeTokenParser + (emptyDef + + { P.reservedNames = ["Jan","Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "any" + ], + P.identStart = letter <|> char '_', + P.identLetter = alphaNum <|> oneOf "_'", + P.reservedOpNames = ["<", ">", "<=", ">=", "==", "-"] + }) + +whiteSpace :: CharParser () () +whiteSpace = P.whiteSpace lexer + +lexeme :: CharParser () a -> CharParser () a +lexeme = P.lexeme lexer + +symbol :: String -> CharParser () String +symbol = P.symbol lexer + +natural :: CharParser () Integer +natural = P.natural lexer + +parens :: CharParser () a -> CharParser () a +parens = P.parens lexer + +semi :: CharParser () String +semi = P.semi lexer + +identifier :: CharParser () String +identifier = P.identifier lexer + +reserved :: String -> CharParser () () +reserved = P.reserved lexer + +reservedOp :: String -> CharParser () () +reservedOp = P.reservedOp lexer + + +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ +-- Most of the testing is for version related stuff. Move to Version? + +-- |Simple version parser wrapper +doVersionParse :: String -> Either String Version +doVersionParse input = let x = parse versionParser "" input + in case x of + Left err -> Left (show err) + Right y -> Right y + +-- |Version range parsing +doVersionRangeParse :: String -> Either String VersionRange +doVersionRangeParse input + = let x = parse parseVersionRange "" input + in case x of + Left err -> Left (show err) + Right y -> Right y + +tDateVersion :: Version +tDateVersion = DateVersion 2003 October 31 +tDateVersion2 :: Version +tDateVersion2 = DateVersion 2002 November 0 +tDateVersion3 :: Version +tDateVersion3 = DateVersion 2002 March 0 +tDateVersion4 :: Version +tDateVersion4 = DateVersion 2002 May 0 + +hunitTests :: [Test] +hunitTests + = [ + "simple dot date" ~: "failed" ~: Right tDateVersion + ~=? doVersionParse "2003.10.31", + "simple dash date" ~: "failed" ~: Right tDateVersion + ~=? doVersionParse "2003-10-31", + "year short day dot" ~: "failed" + ~: Right tDateVersion ~=? doVersionParse "2003.Oct.31", + "year short day dash" ~: "failed" + ~: Right tDateVersion ~=? doVersionParse "2003-Oct-31", + "hugs style" ~: "failed" + ~: Right tDateVersion2 ~=? doVersionParse "Nov-2002", + "hugs style may" ~: "failed" + ~: Right tDateVersion3 ~=? doVersionParse "Mar-2002", + "hugs style mar" ~: "failed" + ~: Right tDateVersion4 ~=? doVersionParse "May-2002", + "hugs style dot" ~: "failed" + ~: Right tDateVersion2 ~=? doVersionParse "Nov.2002", + "year-longmonth-day dash" + ~: Right tDateVersion ~=? doVersionParse "2003-October-31", + "year-longmonth-day dot" + ~: Right tDateVersion ~=? doVersionParse "2003.October.31", + "numbered version" ~: "failed" + ~: (Right $ NumberedVersion 1 2 3) ~=? doVersionParse "1.2-3", + + -- Version ranges + "greater than hugsStyle" ~: "failed" + ~: (Right $ StrictlyLaterVersion tDateVersion2) + ~=? doVersionRangeParse "> Nov-2002", + "greater than hugsStyle nospace" ~: "failed" + ~: (Right $ StrictlyLaterVersion tDateVersion2) + ~=? doVersionRangeParse ">Nov-2002", + "OrEarlier year-longmonth-day dash" ~: "failed" + ~: (Right $ OrEarlierVersion tDateVersion) + ~=? doVersionRangeParse "<=2003-October-31", + "OrLater year-longmonth-day dash" ~: "failed" + ~: (Right $ OrLaterVersion tDateVersion) + ~=? doVersionRangeParse ">=2003-October-31", + "Exactly This year-longmonth-day dot" ~: "failed" + ~: (Right $ ExactlyThisVersion tDateVersion) + ~=? doVersionRangeParse "==2003.October.31", + "Any version" ~: "failed" + ~: (Right $ AnyVersion) + ~=? doVersionRangeParse "-any", + "Any version space" ~: "failed" + ~: (Right $ AnyVersion) + ~=? doVersionRangeParse "- any", + "range comparison OrLaterVersion" ~: "failed" + ~: True + ~=? tDateVersion `withinRange` (OrLaterVersion tDateVersion2), + "range comparison Equal" ~: "failed" + ~: True + ~=? tDateVersion `withinRange` (ExactlyThisVersion tDateVersion), + "range comparison OrEarlierVersion1" ~: "failed" + ~: True + ~=? tDateVersion2 `withinRange` (OrEarlierVersion tDateVersion), + "range comparison OrEarlierVersion2" ~: "failed" + ~: False + ~=? tDateVersion `withinRange` (OrEarlierVersion tDateVersion2), + "range comparison OrEarlierVersion3" ~: "failed" + ~: True + ~=? tDateVersion `withinRange` (OrEarlierVersion tDateVersion), + "range comparison OrEarlierVersion4" ~: "failed" + ~: True + ~=? (NumberedVersion 1 2 3) + `withinRange` (OrLaterVersion $ NumberedVersion 0 0 0), + "range comparison StrictlyGreaterVersion" ~: "failed" + ~: False + ~=? (NumberedVersion 2 1 0) + `withinRange` (StrictlyLaterVersion $ NumberedVersion 3 0 0), + "range comparison StrictlyGreaterVersion 2" ~: "failed" + ~: True + ~=? (NumberedVersion 10 0 0) + `withinRange` (StrictlyLaterVersion $ NumberedVersion 3 0 0), + -- Comparing versions + "Different kinds" ~: "failed" + ~: True ~=? (NumberedVersion 1 2 3 > tDateVersion), + "Two dates" ~: "failed" + ~: True ~=? (tDateVersion > tDateVersion2) + ] + move ./Distribution/Compiler.hs ./Distribution/Misc.hs addfile ./Distribution/ModuleTest.hs hunk ./Distribution/Build.hs 45 -import Distribution.Compiler(Compiler) +import Distribution.Misc(Compiler) hunk ./Distribution/Misc.hs 44 -module Distribution.Compiler where +module Distribution.Misc(Compiler, License, Dependency, Extension, Opt) + where hunk ./Distribution/Misc.hs 47 +import Distribution.Version(VersionRange) + +-- ------------------------------------------------------------ +-- * Compiler +-- ------------------------------------------------------------ + hunk ./Distribution/Misc.hs 59 + +-- ------------------------------------------------------------ +-- * Misc +-- ------------------------------------------------------------ + +data License = GPL | LGPL | BSD3 | BSD4 | PublicDomain | AllRightsReserved + | {- ... | -} OtherLicense FilePath + deriving (Read, Show) + +-- |Maybe move to Distribution.Version? +data Dependency = Dependency String VersionRange + deriving (Read, Show) + +-- |This represents non-standard compiler extensions which each +-- package might employ. Not yet implemented. + +data Extension = Foo | Bar + +type Opt = String + hunk ./Distribution/ModuleTest.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.ModuleTest +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module ModuleTest where + +-- Import everything, since we want to test the compilation of them: + +import Distribution.Build() +import Distribution.Version() +import Distribution.UseConfig() +import Distribution.Misc() + +main :: IO () +main = return () hunk ./Distribution/Package.hs 47 - where hunk ./Distribution/Package.hs 48 +where + +import Distribution.Version(Version) +import Distribution.Misc(License, Dependency, Extension, Compiler) + hunk ./Distribution/Package.hs 65 - = PackageConfig {packageDescription :: Packagedescription, + = PackageConfig {packageDescription :: PackageDescription, hunk ./Distribution/UseConfig.hs 3 -module UseConfig where +module Distribution.UseConfig where hunk ./Distribution/UseConfig.hs 5 +import Distribution.Misc(License, Dependency, Opt) +import Distribution.Package(PackageIdentifier) + hunk ./Distribution/UseConfig.hs 10 - pkgIdent :: PkgIdentifier, + pkgIdent :: PackageIdentifier, addfile ./Distribution/Install.hs hunk ./Distribution/Install.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Install +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Install(install) where + +import Distribution.Package(PackageConfig) +import Distribution.Misc(Compiler) + +install :: PackageConfig -> Compiler -> IO () +install _ _ = return () hunk ./Distribution/ModuleTest.hs 48 +import Distribution.Install() hunk ./Distribution/ModuleTest.hs 53 +import Distribution.Package() hunk ./Distribution/Build.hs 45 -import Distribution.Misc(Compiler) +import Distribution.Misc(LocalBuildInfo) hunk ./Distribution/Build.hs 47 -build :: PackageConfig -> Compiler -> IO () +build :: PackageConfig -> LocalBuildInfo -> IO () hunk ./Distribution/Install.hs 47 -import Distribution.Misc(Compiler) +import Distribution.Misc(LocalBuildInfo) hunk ./Distribution/Install.hs 49 -install :: PackageConfig -> Compiler -> IO () +install :: PackageConfig -> LocalBuildInfo -> IO () hunk ./Distribution/Misc.hs 3 --- Module : Distribution.Compiler +-- Module : Distribution.Misc hunk ./Distribution/Misc.hs 44 -module Distribution.Misc(Compiler, License, Dependency, Extension, Opt) +module Distribution.Misc(Compiler, License(..), Dependency, + Extension, Opt, LocalBuildInfo, + Action(..), CommandLineOpts, + writePersistBuildConfig, getPersistBuildConfig) hunk ./Distribution/Misc.hs 57 + deriving Show hunk ./Distribution/Misc.hs 59 -data Compiler = Compiler {flavor :: Compiler, +data Compiler = Compiler {flavor :: Flavor, hunk ./Distribution/Misc.hs 62 + deriving Show hunk ./Distribution/Misc.hs 64 +emptyCompiler :: Compiler +emptyCompiler = Compiler (OtherCompiler "") "" "" hunk ./Distribution/Misc.hs 68 +-- * Command-Line +-- ------------------------------------------------------------ + +type CommandLineOpts = (Action, + [String]) -- The un-parsed remainder + +data Action = ConfigCmd LocalBuildInfo + | BuildCmd + | InstallCmd + | SDistCmd + | PackageInfoCmd + | UseInfoCmd + | TestCmd +-- | Register +-- | BDist + + + +-- ------------------------------------------------------------ +-- * build config +-- ------------------------------------------------------------ + +-- |Data cached after configuration step. +data LocalBuildInfo = LocalBuildInfo {prefix :: String, + compiler :: Compiler} + +emptyLocalBuildInfo :: LocalBuildInfo +emptyLocalBuildInfo = LocalBuildInfo "" emptyCompiler + +getPersistBuildConfig :: IO LocalBuildInfo +getPersistBuildConfig = return emptyLocalBuildInfo -- FIX + +writePersistBuildConfig :: LocalBuildInfo -> IO () +writePersistBuildConfig _ = return () --FIX + +-- ------------------------------------------------------------ hunk ./Distribution/Misc.hs 118 -data Extension = Foo | Bar +data Extension = Foo | Bar deriving Show hunk ./Distribution/Package.hs 63 + deriving Show hunk ./Distribution/Package.hs 76 + deriving Show addfile ./Distribution/Setup.hs hunk ./Distribution/Setup.hs 1 - +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Setup +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Setup (parseArgs, defaultMain) where + +-- Base +import System(getArgs) + +-- Local +import Distribution.Build(build) +import Distribution.Install(install) +import Distribution.Misc(CommandLineOpts(..), Action(..), + LocalBuildInfo, getPersistBuildConfig) +import Distribution.Package(PackageConfig) + +-- |Reads local build info, executes function +doBuildInstall :: (PackageConfig -> LocalBuildInfo -> IO ()) -- ^function to apply + -> PackageConfig + -> IO () +doBuildInstall f pkgConf + = do lbi <- getPersistBuildConfig + f pkgConf lbi + +-- |Parse the standard command-line arguments +parseArgs :: [String] -> CommandLineOpts +parseArgs _ = (BuildCmd, []) + +defaultMain :: PackageConfig -> IO () +defaultMain p + = do args <- getArgs + case parseArgs args of + (BuildCmd, _) -> doBuildInstall build p + (InstallCmd, _) -> doBuildInstall install p + (PackageInfoCmd, _) -> print p + return () hunk ./Distribution/UseConfig.hs 5 -import Distribution.Misc(License, Dependency, Opt) -import Distribution.Package(PackageIdentifier) +import Distribution.Misc(License(..), Dependency, Opt, LocalBuildInfo) +import Distribution.Package(PackageIdentifier(..), PackageConfig) +import Distribution.Version(Version(NoVersion)) hunk ./Distribution/UseConfig.hs 17 --- provides :: [String], -{- A bit pi-in-the-sky; might indicate that this package provides - functionality that other packages also provide, such as a compiler - or GUI framework, and upon which other packages might depend. -} - --- isDefault :: Bool, --- might indicate if this is the default compiler or GUI framework. - hunk ./Distribution/UseConfig.hs 32 +emptyUseConfig :: UseConfig +emptyUseConfig = UseConfig (PackageIdentifier "" NoVersion) + AllRightsReserved "" "" "" False [] [] [] [] [] [] + [] [] [] [] [] [] [] + +getUseInfo :: LocalBuildInfo -> PackageConfig -> UseConfig +getUseInfo _ _ = emptyUseConfig -- FIX + addfile ./Distribution/TODO hunk ./Distribution/TODO 1 +* Documentation +** Integrate SimonPJ's document into the "proposal" +** Outline first priorities + +* Code +** Version (simonMar) +** + +* Testing +** Parsing of command-lint opts +** use-cases based on SimonPJ's doc +** hunk ./Distribution/Misc.hs 56 -data Flavor = GHC | NHC | Hugs | HBC | Helium | OtherCompiler String +data CompilerFlavor = GHC | NHC | Hugs | HBC | Helium | OtherCompiler String hunk ./Distribution/Misc.hs 59 -data Compiler = Compiler {flavor :: Flavor, +data Compiler = Compiler {flavor :: CompilerFlavor, hunk ./Distribution/Package.hs 74 - options :: [ (Compiler, [String]) ] + options :: [ (CompilerFlavor, [String]) ] hunk ./Distribution/Misc.hs 68 --- * Command-Line --- ------------------------------------------------------------ - -type CommandLineOpts = (Action, - [String]) -- The un-parsed remainder - -data Action = ConfigCmd LocalBuildInfo - | BuildCmd - | InstallCmd - | SDistCmd - | PackageInfoCmd - | UseInfoCmd - | TestCmd --- | Register --- | BDist - - - --- ------------------------------------------------------------ hunk ./Distribution/ModuleTest.hs 44 -module ModuleTest where +module Main where hunk ./Distribution/ModuleTest.hs 56 -main = return () +main = do putStrLn "compile successful" + hunk ./Distribution/ModuleTest.hs 59 +-- Local Variables: +-- compile-command: "ghc --make ModuleTest.hs -o moduleTest" +-- End: + hunk ./Distribution/Setup.hs 76 + +type CommandLineOpts = (Action, + [String]) -- The un-parsed remainder + +data Action = ConfigCmd LocalBuildInfo + | BuildCmd + | InstallCmd + | SDistCmd + | PackageInfoCmd + | UseInfoCmd + | TestCmd +-- | Register +-- | BDist + + +-- options :: [ OptDescr (Options -> IO Options) ] +-- options = +-- [Option "p" ["prefix"] +-- (OptArg +-- (\arg opt -> return opt{command=useinfo... + hunk ./Distribution/Misc.hs 46 - Action(..), CommandLineOpts, + CompilerFlavor(..), hunk ./Distribution/ModuleTest.hs 56 -main = do putStrLn "compile successful" +main = putStrLn "compile successful" hunk ./Distribution/Package.hs 51 -import Distribution.Misc(License, Dependency, Extension, Compiler) +import Distribution.Misc(License, Dependency, Extension, CompilerFlavor) hunk ./Distribution/Setup.hs 52 -import Distribution.Misc(CommandLineOpts(..), Action(..), - LocalBuildInfo, getPersistBuildConfig) +import Distribution.Misc(LocalBuildInfo, getPersistBuildConfig) hunk ./Distribution/Setup.hs 76 + + +-- ------------------------------------------------------------ +-- * command line +-- ------------------------------------------------------------ + + adddir ./Distribution/Simple move ./Distribution/Build.hs ./Distribution/Simple/Build.hs move ./Distribution/Install.hs ./Distribution/Simple/Install.hs addfile ./Distribution/Simple/Default.hs hunk ./Distribution/ModuleTest.hs 48 -import Distribution.Install() -import Distribution.Build() hunk ./Distribution/ModuleTest.hs 53 +import Distribution.Simple.Default() +import Distribution.Simple.Install() +import Distribution.Simple.Build() + hunk ./Distribution/ModuleTest.hs 62 --- compile-command: "ghc --make ModuleTest.hs -o moduleTest" +-- compile-command: "ghc -i../:/usr/local/src/HUnit-1.0 -Wall --make ModuleTest.hs -o moduleTest" hunk ./Distribution/Setup.hs 44 -module Distribution.Setup (parseArgs, defaultMain) where +module Distribution.Setup (parseArgs, Action(..)) where hunk ./Distribution/Setup.hs 46 --- Base -import System(getArgs) - hunk ./Distribution/Setup.hs 47 -import Distribution.Build(build) -import Distribution.Install(install) -import Distribution.Misc(LocalBuildInfo, getPersistBuildConfig) -import Distribution.Package(PackageConfig) +import Distribution.Misc(LocalBuildInfo) hunk ./Distribution/Setup.hs 49 --- |Reads local build info, executes function -doBuildInstall :: (PackageConfig -> LocalBuildInfo -> IO ()) -- ^function to apply - -> PackageConfig - -> IO () -doBuildInstall f pkgConf - = do lbi <- getPersistBuildConfig - f pkgConf lbi - hunk ./Distribution/Setup.hs 53 -defaultMain :: PackageConfig -> IO () -defaultMain p - = do args <- getArgs - case parseArgs args of - (BuildCmd, _) -> doBuildInstall build p - (InstallCmd, _) -> doBuildInstall install p - (PackageInfoCmd, _) -> print p - return () - - - hunk ./Distribution/Simple/Build.hs 3 --- Module : Distribution.Build +-- Module : Distribution.Simple.Build hunk ./Distribution/Simple/Build.hs 42 -module Distribution.Build where +module Distribution.Simple.Build where hunk ./Distribution/Simple/Default.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.Default +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.Default (defaultMain) +where + +-- Base +import System(getArgs) + +import Distribution.Package(PackageConfig(..)) +import Distribution.Setup(parseArgs, Action(..)) +import Distribution.Misc(LocalBuildInfo(..), getPersistBuildConfig) + +import Distribution.Simple.Build(build) +import Distribution.Simple.Install(install) + +-- |Reads local build info, executes function +doBuildInstall :: (PackageConfig -> LocalBuildInfo -> IO ()) -- ^function to apply + -> PackageConfig + -> IO () +doBuildInstall f pkgConf + = do lbi <- getPersistBuildConfig + f pkgConf lbi + +defaultMain :: PackageConfig -> IO () +defaultMain p + = do args <- getArgs + case parseArgs args of + (BuildCmd, _) -> doBuildInstall build p + (InstallCmd, _) -> doBuildInstall install p + (PackageInfoCmd, _) -> print p + return () hunk ./Distribution/Simple/Install.hs 3 --- Module : Distribution.Install +-- Module : Distribution.Simple.Install hunk ./Distribution/Simple/Install.hs 44 -module Distribution.Install(install) where +module Distribution.Simple.Install(install) where hunk ./Distribution/TODO 14 +* Isaac +- test cases for option parsing +-- difference bt flags and opts... + adddir ./doc hunk ./Distribution/TODO 3 -** Outline first priorities hunk ./Distribution/TODO 6 -** +** command-line parser (isaac) hunk ./Distribution/TODO 11 -** hunk ./Distribution/TODO 16 +* Priorities for first beta release +(basically what was in SPJ's document): + +** Basic command-line interface for configure, build, install, + register, info +** Ability to wrap make +** basic build system (think hmake) +** binary distributions? + +* Priorities for 1.0 +** binary distributions? +** basic pre-processor extensions + +* looking ahead +** per-system source database +** rebuild for new compiler + +* Orthogonal (layered?) tools + +** visual studio support + +** public database of packages + +** downloadable public database of packages (wget filename;tar xf + filename;cd filename;./setup install) + + NOTE: such an interface might be implemented w/ xml-rpc, which is + there for Haskell now, though in general we'll probabliy want to be + careful here about dependencies. + +** debian package building (boilerplate) tool. Other debian support + w/ rebuild-all-packages? + addfile ./doc/libraryInfrastructure.sgml hunk ./doc/libraryInfrastructure.sgml 1 +GHC"> +NHC"> +Hugs"> +autoconf"> + + +Distribution module"> +haskell-config"> +Distribution.Package"> +Distribution.Build"> +Distribution.Install"> +Distribution.Config"> +HUnit"> +Distutils"> +CPAN"> +XEmacs"> +hmake"> +dpkg"> +rpm"> +]> + + + + + + + + + +
+ + 2003-09-12 + Library Infrastructure Project + + Isaac + Jones + +
ijones@syntaxpolice.org
+ + + The Library Infrastructure Project is an effort to provide + a framework for developers to more effectively contribute their + software to the Haskell community. + + The &impls;Herein, I will use &impl; as a + catch-all phrase to include compilers and interpreters for the + Haskell programming language. come included + with a good set of standard libraries, but this set is + constantly growing and is maintained centrally. This model does + not scale up well, and as Haskell grows in acceptance, the + quality and quantity of available libraries is becoming a major + issue. There are a wide variety of &impls; (both compilers and + interpreters), each of which target a variety of hardware + architectures and operating systems. There are also a number of + different groups and individuals providing libraries, and these + libraries depend upon each other and they depend upon external + systems such as Java or GTK. + + It can be very difficult for an end user to manage these + dependencies and build all the necessary software at the correct + version numbers on their platform: there is currently no generic + build system to abstract away differences between Haskell + Implementations and operating systems Your + humble author has in-depth knowledge of Debian GNU/Linux, but + could probably learn a thing or two about other operating + systems like Windows and MacOS. Should you notice anything here + which offends your sense of operating system, please let me + know.. + + The Library Infrastructure Project seeks to provide some + relief to this situation by building tools to assist developers, + end users, and operating system distributers. + + This is a draft proposal. If you have comments, please + email Isaac + Jones. The latest version of this document should be + available in a variety of formats from the Library + Infrastructure Project home + page. This proposal is seperate, but related + + +
+ + +
High-Level Overview + + On a high level, we say that we want the system to help the + user to install packages (whether they be libraries or applications) + and their dependencies. The system should work + with operating-system-level package managers + (such as &dpkg;, &rpm;, and FreeBSD's Ports system) rather than + replacing them. For operating systems without the luxury of a + package manager, we propose to add a Haskell-specific package + manager. + + To accomplish this, we propose a system similar to Python's + &distutils; () where each + Haskell tool is distributed with a script () that has a standard command-line + interface. This script will provide a familiar user interface + () for compiling, installing, and + removing packages and their dependencies. + + For instance, to install the &hunit; package, the user might + install it with their package manager, if available + (apt-get install hunit-hugs for instance) or + download the source code from the web site, change into the &hunit; + directory, and type ./Setup.lhs install default, + which would build and install the &hunit; package for the default + compiler. Similarly, he might type ./Setup.lhs install + nhc to install the package for &nhc;. + + Other tasks might be necessary to make the package known to + the system, such as registering it with the &impl; of interest + (). Such tasks would also be + performed by this Setup program. +
+ + +
Issues Facing Developers + + There are a number of issues facing developers of Haskell + software when they decide to deploy their work. + + + + Binary incompatibility between Haskell + Implementations and between versions of some implementations make it + very difficult to distribute binary libraries: if they are expected + to work together, all of the libraries on a user's system need to be + built with the same compiler. This makes it a virtual necessity + that the source code for a Haskell library be distributed to the end + user of that library, although other options exist for systems like + Debian () which have + auto-builders. + + Compilation is difficult: It was noted above that it + is usually necessary to distribute the source code for Haskell tools + to the end user. The end user has to compile each Haskell tool they + use, but the task of compilation is complicated by a plethora of + preprocessors (such as arrowp and greencard) and interfaces with + non-Haskell libraries (such as Java, X, C, and GTK). Further, there + is no way to formally express dependencies between Haskell tools, so + the users have to visit the home pages of the projects they're + interested in and find the dependencies. + + The &impls; are not completely compatible either: + They support different extensions, different libraries, different + binary formats, different flags, and different packaging + systems. + + Given that compilation is difficult in and of + itself, it is further complicated by a wide variety of target + platforms that it is desirable to support. These systems may treat + files differently (copying of files, path names) or have different + defaults for where to put compiled files or source code to make them + available to the user. The variety of &impls; and target platforms + make writing of a generic build system that "just works" very + difficult. + + Having managed to compile and install all of the + Haskell software they need, if a user installs a new compiler (or + version thereof), all this work needs to be redone. All of the + libraries on the system will have to be recompiled to match the + version of that compiler (this is apparently a bigger problem with + GHC than with NHC, and not much of a problem with + Hugs.) + + + + Compare this to the experience of installing a typical library + or tool written in C or C++ on a Debian GNU/Linux system: The user + consults a database of known programs (which is stored on her + computer) and runs a single command to install that package. The + package management tool figures out the dependencies, downloads all + dependencies downloads the package, and installs them in the proper + order. The packages are already compiled by a set of central + servers. In fact, there is no reason that this kind of interface + can't be available to the end user except for the difficulty of + creating binary packages. (See ) + +
Issues Facing Packagers + + There are roughly speaking, three different kinds of + operating-system package systems: source distributions (FreeBSD, + Gentoo), binary distributions (Debian, RPM), and language-specific + distributions (CPAN, XEmacs). What we are proposing to create is a + language-specific distribution that assists in the creation of both + source and binary packages for other operating systems. + + As mentioned above, it is possible to create an operating + system package for a Haskell library. Indeed, its no harder to + create a Haskell package than any other kind of package; Haskell + packages are harder to maintain, however. For instance, in the + Debian GNU/Linux system (), + which is a binary distribution, there is currently no way to express + that a library needs to be recompiled when a new compiler is + uploaded to the autobuilders. Currently, the only solution is to + re-upload library packages to the autobuilders at the same time you + upload a new &impl;. Similarly for Redhat, binary packages have to + include the version number for &ghc; that they were compiled + with. + + In a source distribution like FreeBSD (), this isn't a problem, since the + end user compiles all of their software themselves. However, when the + end user compiles and installs a new &impl;, all of the libraries + compiled with the old &impl; will no longer work and need to be + recompiled. As I understand it, there is currently no means of + performing this operation automatically. + + Emacs / XEmacs presents packagers with some of the same + issues; they are both, practically speaking, Lisp compilers, and + incompatible, much like different versions of &impls;. When an + elisp package is installed on Debian, it gets compiled automatically + (on the end user's machine) for each version of Emacs / XEmacs that + is installed. This procedure is orthogonal to the XEmacs Packaging + System () and is a duplication + of effort in some cases, but that is really the only way to make it + work with Debian. This has some ugly properties from Debian's + standpoint: once compiled, there are files in the operating system + that the packaging system doesn't know about. These are similar to + issues that Haskell packagers for Debian will have to face. + +
+ +
Why We Should Solve This + + + + We need to evolve a decentralized way of + distributing libraries. The current model of distributing them with + the &impls; puts too much strain upon the &impl; authors, and is not + sustainable in the long-term. If this continues, availability and + reliability of libraries will suffer, and Haskell itself will suffer + in the long-term as a rich set of libraries is becoming the standard + for successful programming languages. + + If we can help operating system packagers build + packages (Debian, RPM, etc.), then we'll have more happy end + users. + + If we lower the cost of evaluating Haskell and + Haskell tools, more people might try them out. + + Many Haskell programs are developed as research + prototypes and abandoned. The subsequent bitrot makes it difficult + for the community to take over the projects. Formally specifying + versioned dependencies and creating a central repository for Haskell + tools can help solve this problem. + + Active participation with the rest of the Free + Software community (inclusion of Haskell in OS distributions, + interoperability between Haskell tools and external libraries) can + bring attention to Haskell and perhaps bring more talented + developers into The Flock. + + + + +
+ +
+ + +
A Solution for Haskell in Haskell + + As mentioned above, the foremost user interface for this + system will be a Haskell program to be executed by the default + &impl;. This Haskell program, Setup.lhs, will + perform the tasks of building the package (where necessary), + installing the package, and making the package available to the + system. + + +
The Module Design + I propose a set of modules based on these three major tasks: + + + + &DistBuild;: For tasks of preparing the package for + installation, including tasking compilers and creating packages for + systems like Debian (). + + &DistInstall;: For moving the distribution files + into place (). + + &DistPackage;: For + accessing the database of installed packages, versions, etc. Might + also be responsible for removing packages (). + + &DistConfigure;: For discovering details about the + configuration of the target system not covered by the database of + installed packages. These are tasks typically performed by tools + such as &autoconf; (). + + Distribution: For general + purpose elements that don't fit into any of the above + categories. + +
+ + +
But Why Should We Use Haskell? + +It is very appropriate that this solution be implemented in +Haskell: + + + +Haskell runs on all the systems of interest. + +Haskell's standard libraries should include a rich set of operating +system operations needed for the task. These can abstract-away the +differences between systems in a way that is not possible for +Make-based tools. + +Haskell is a great language for many things, including tasks +typically relegated to languages like Python. Building, installing, +and managing packages is a perfect proving ground for these tasks, and +can help us to discover weaknesses in Haskell or its libraries that +prevent it from breaking into this "market". A positive side-effect +of this project might be to make Haskell more suitable for "scripting" +tasks. + +Likewise, each piece of the project (Building, Installing, and +Packaging) can be leveraged elsewhere if we make them into +libraries. + +Make is not particularly good for parsing, processing, and sharing +meta-information about packages. The availability of this information +to Haskell systems (including compilers, interpreters, and other +tools) is useful. Unlike Make, Haskell can also reuse unrelated +algorithms, parsers, and other libraries that have been developed in +the past. + +Dogfooding, the act of using the tools you +develop, is a healthy policy. + + +
+ + +
Setup.lhs Command-Line Interface + + The purpose of the Setup script is to provide a standard + interface to end users and layered tools. For any particular + application, the script may be implemented in a variety of ways: + For pure Haskell applications, the &distMod; should perform all + of the heavy lifting, requiring only a few lines of code from the + developer. For applications that feel they need a complete and + robust make-based system, the Setup script can wrap such a + system. + + One of the early design tasks of this project should be to decide + on a format for the command-line interface of the Setup script, + but here is an example of how it might behave: + + Setup.lhs interface + + + + ./Setup.lhs info + Output package configuration + information + + + ./Setup.lhs build all + Compile / prepare this package for + all installed &impls; + + + ./Setup.lhs build default + Compile / prepare this package for + the default &impl; + + ./Setup.lhs build {&nhc;,&ghc;,&hugs;, ...} + + + Compile / prepare this package for + the given &impl; + + ./Setup.lhs install {all,default,&nhc;,&ghc;,&hugs;,...} + Install this package. + + ./Setup.lhs register + {all,default,&nhc;,&ghc;,&hugs;,...} + Register this package with the + package management system (making it available to + the given &impl;.) + + ./Setup.lhs bdist_{deb,rpm,...} + Create a binary distribution package + for Debian, RPM, etc. + + ./Setup.lhs sdist + Create a source distribution + archive. + + ./Setup.lhs test + Run the package's test suite. + + +
+ + Other commands may be available, and it is important to + anticipate commands that may some day be desirable. + +
+ + + +
An Example Setup.lhs Script + + Here's what the setup script might look like for HUnit, which + has no complex dependencies. + +#!/usr/bin/env haskell +import Distribution.Core +import Distribution.Package + +toolInfo = (defaultPackage "HUnit" + (NumberedVersion 1 0 0)) + {haskellSources=[ + "HUnitLang98.lhs","HUnitLangExc.lhs", "Info.lhs", + "Terminal.lhs", "HUnitTest98.lhs", "TerminalTest.lhs", + "HUnit.lhs", "HUnitTestBase.lhs", "HUnitBase.lhs", + "HUnitTestExc.lhs", "HUnitLang.lhs", "HUnitText.lhs", + "Setup.lhs"], + docs = ["Example.hs", "Guide.html", "License", "README"]} + +main = defaultMain toolInfo id id +-- Those last to parameters might be pre-install and post-install functions + + +defaultMain would implement all of the +standard command-line flags, and defaultPackage is a template with +sane default values for most fields. + +
+ +
+ +
Distribution Module + + + +
&DistBuild; + +The basic strategy we will take for the actual task of building +Haskell tools is as follows: + + + + For simple tools like Haskell modules, leverage + &hmake;'s () abilities and create a Haskell-based + system (which will evolve to do more complex + tasks.) + + Tools that require something more complex can use + ``fptools'' or Yale's Make-based system (), or use their own build + system. + + All systems will be wrapped in a common veneer + () so they look the same to the average + user and to layered tools () + and so that once &DistBuild; evolves to be a more robust tool, + packages can transition to using it without effecting the interface + to their build system. + + + +Since it is obviously the compilers that do the actual compilation, +the task of &DistBuild; is more one of coordination among tools +outside the compiler. We hope to offer support for preprocessors +(both existing and those yet to come). &DistBuild; will handle the +task of compiling for a particular &impl;, or for all installed +&impls;, and help to abstract-away differences between command-line +flags. + +&DistBuild; could also be used to recompile all of the installed +libraries once a new &impl; is installed. This is an important +function, as it solves the problem of binary incompatibility between +&impls; and versions thereof. Another very useful function that +&DistBuild; could offer is the implementation of a generic +/usr/bin/haskell that either executes a Haskell +program using the default compiler or throws the user into the default +interpreter, depending upon how it is invoked. This allows Haskell +scripts (such as Setup.lhs) to be distributed with a +#!/usr/bin/env haskell annotation that has reasonable +behavior. + +
+ + +
&DistInstall; + + The &DistInstall; module performs the task of moving files + into place. Presumably, this is the last task before package + registration. &DistInstall; will have to understand configuration + options for the operating systems that Haskell modules are being + installed on. (For instance, different operating systems have different + policies for where to put documentation, source code, binary files, + and libraries.) Such information will most likely be read from a + file that can be edited by the system administrator (). + + Not only will this module have to support standards on + different operating systems, but it must have access to filesystem + functionality like copy and + move, as well as permission-related operations. + Such functions should be offered by a library such as + System.Posix.Files and + System.Directory, but the + System.Posix module is not available on all + operating systems. To some extent, &DistInstall; should handle the + differences between operating systems (file permissions for + instance), but Haskell should offer a more robust set of file + operations in order to encourage the use of Haskell for common + scripting tasks. (One issue that the author has noticed is that + System.Directory.renameDirectory is not + implemented the same in GHC and Hugs, which forces &DistInstall; to + find a way to abstract the differences.) + +
+ + +
&DistPackage; + + The complex task of packaging requires a lot of attention. + The proposed solution is not only a module to access the packaging + information, but also an application to assist external systems with + the same task: + + The main features of this system are: + + + + To let the &impls; know how to use a package, + whether its available by default (or whether it requires a -package + flag), and where the root of its hierarchy is. + + To store other information about a package, + including information such as its license, home page, version + number, and dependencies, to be used by other tools in the + Distribution hierarchy. + + All information will be made available through the + &DistPackage; module. The information can be made available to + non-haskell tools by way of a command-line tool, &haskellConfig; + () with easily parsable output + (similar to package-config) + though a different solution may be necessary for + windows. + + + +Some secondary features are: + + Let other tools, such as debuggers and + editors know where the source code for a module / package + is. + + When new Haskell implementations are installed, + allow them to find the source code and import it into their own + library tree (perhaps through other features of the + L.I.P.) + + For Haskell implementations that don't conform to + the new packaging interface, implement a wrapper so that it can + still utilize other important features of the Library + Infrastructure Project. + +The information would be held in a file, such as +/etc/haskell/packages.confor +/usr/local/etc/haskell/packages.conf or wherever the +default location for config files is. and +~/.haskell/packages.conf. + +
PackageConfig Data Structure + +The package data structure might look something like this (based +on GHC's Package class) + +data PkgIdentifier + = PkgIdentifier {pkgName::String, pkgVersion::Version} +{- ^Often need name and version since multiple versions of a single + package can exist on a system. -} + +data PackageConfig + = Package { + pkgIdent :: PkgIdentifier, + license :: License, + auto :: Bool, + + + import_dirs :: [FilePath], + source_dirs :: [FilePath], + library_dirs :: [FilePath], + include_dirs :: [FilePath], + hs_libraries :: [String], + extra_libraries :: [String], + c_includes :: [String], + build_deps :: [Dependency], -- build dependencies + depends :: [Dependency], -- use dependencies + + extra_cc_opts :: [String], + extra_ld_opts :: [String], + framework_dirs :: [String], + haddock_html_root :: String, + haddock_interface :: String, + default_grafting_point :: String, +-- ^Related to new packages proposal + vars :: [(String, String)], +-- ^Variable, value pairs, whatever author wants here + extra_frameworks:: [String]} + +data Version = DateVersion {versionYear :: Integer, + versionMonth :: Month, + versionDay :: Integer} + | NumberedVersion {versionMajor :: Integer, + versionMinor :: Integer, + versionPatchLevel :: Integer} + +data License = GPL | LGPL | BSD | {- ... | -} OtherLicense FilePath + +data Dependency = Dependency String VersionRange + +data VersionRange + = AnyVersion + | OrLaterVersion Version + | ExactlyThisVersion Version + | OrEarlierVersion Version + +type PackageMap = FiniteMap PkgIdentifier PackageConfig + + +But perhaps we'll need to be even more flexible: some +implementations might not be interested in certain fields, and others +might want their own fields. I propose that implementation-specific +fields be prepended with the implementation name: +ghc_interpreter_flags, +hugs_interpreter_flags, etc. In general it would +certainly be desirable to have a flexible parser so that we can add +more fields later and maintain backward compatibility. + +The &DistPackage; API might look like so: + +userPkgConfigLocation :: FilePath +systemPkgConfigLocation :: FilePath +getSystemPkgConfig :: IO [PackageMap] -- ^Query /etc/haskell/packages.conf +getUserPkgConfig :: IO [PackageMap] -- ^Query ~/.haskell/packages.conf +getPkgConfig :: FilePath -> IO [PackageMap] +addUserPackage :: PackageConfig -> IO () +addSystemPackage :: PackageConfig -> IO () +delUserPackage :: PkgIdentifier -> IO () +delSystemPackage :: PkgIdentifier -> IO () +basicPackage :: PackageConfig -- provides sensible defaults +checkLicense :: PackageConfig -> Bool +{- Just for fun, check to see if the licences that this package uses + conflicts with any of the licences of the packages it depends on -} + +
+ +
+ + + +
&haskellConfig; Command-line + interface + +The &haskellConfig; Because of the confusion +between different kinds of configuration (the kinds offered by +&DistPackage; and &DistConfigure;) I am torn about the name of this +program. There is the further confusion between package management +(the actual installation and removal of the programs themselves) and +interfacing with the packaging system. Further there is one more bit +of confusion between packages in the Haskell system (i.e. a set of +modules distributed together by an author) and a package on the +operating system. If anyone has an idea to straighten all of this +out, I'd be glad to hear it :) tool is a +command-line interface to the packaging system. It will presumably be +written in Haskell and import the &DistPackage; module. The purpose +of this tool is to give non-Haskell systems the ability to interact +with the packaging system, since they won't be able to import +&DistPackage;. This tool serves a purpose similar to ghc-pkg and +package-config. + +% haskell-config [--user] register < packageFile +% haskell-config [--user] unregister packageName +# add or remove packages from the package database. --user indicates +# that we should add it to the package database in the user's home +# directory, not to the system-wide package database. + +% haskell-config packageName c_includes +# would output this list in a way that a C compiler could use directly + +% haskell-config list-packages +% haskell-config list-user-packages +% haskell-config list-system-packages +# Query the database in a variety of ways + +
+ + + + +
haskell-pkg? + + The &haskellConfig; tool brings up an interesting question. + Should the functionality of &DistInstall; also be made available as + a command-line tool, perhaps called haskell-pkg + ("Haskell package")? In this sense, "package" would refer to that + word in the sense that dpkg and the 'P' + in RPM mean it: + haskell-pkg could be used for installing and + removing Haskell programs when supplied with the package metadata + that is defined by &DistPackage;. This would conflict with &ghc;'s + terminology for ghc-pkg. + +
+ +
&DistConfigure; + + The information available through the &DistPackage; module is + not all of the information that could possibly be needed to prepare + a package for installation. Typically, tools such as &autoconf; are + used to discover useful information about the system. The author + has not given a lot of thought to the configuration problem, but he + sees a few possible paths: + + + + A module, &DistConfigure; can act as an interface to + configuration information. This is the approach that Python has + taken. + + Some information can be written by the end user or + maintained on the system in a standard file format. The file could + reside, for example in + ~/.haskell/distributionConfig, + /etc/haskell/distributionConfig, and + distributionConfig within the package + directory. This information can be made available through the + &DistConfigure; module. + + Certain pieces of information are available when the + &impls; themselves are installed. This information can be made + available to installing scripts once again through the + distributionConfig file. + + Shortcomings in the &DistConfigure; module can be + made up by using &autoconf; itself, which can output information to + the above mentioned distributionConfig + file. + +
+ +
+ + +
Use Cases + + End User: The end user has identified a + Haskell package (tool or library) that she wants to use. + + The end user installs packages with a + operating-system-specific package management system like RPM, dpkg, + or FreeBSD's Ports collection. + + If no such packaging system is available on her + system, she, can run ./Setup.lhs install nhc or + ./Setup.lhs install hugs to build, install, and + register an &nhc; or &hugs; version of the program (for + instance). + + + +Packager: A packager is someone who makes +operating-system-specific packages so that an end-user can have an +easier time installing them on her own system. For each platform, +there should be one or more packager. + +The packager can run + ./Setup.lhs bdist_deb to build a skeleton Debian + package (for instance) for each of the installed &impls;. This + might generate Debian packages like hunit-hugs, + hunit-ghc, hunit-prof-ghc, + hunit-prof-nhc. + + + +3rd Party Author: A 3rd party author is a +Haskell developer (distinct from the &impl; authors or end users) who +wishes to distribute a library or application that he has developed in +Haskell. + +The 3rd Party Author writes a + Setup.lhs program. Setup.lhs + imports elements from the &distMod; which does most of the hard + work. A very common case, which should be our first priority, is a + pure Haskell 98 module that needn't interface with any external + systems. In this case the author only has to include the name of + the program, the version, and the source files. He can then call + Distribution.defaultMain to create an + executable script with the proper command-line flags that knows how + to interface with the &DistPackage; module. + +Should he have a more complex program (one which + perhaps depends on systems external to Haskell), then the &distMod; + could output a Makefile to be used in 'fptools' or Yale's system + (see ). + +Should he not want to migrate from his own build + system, he could write a Setup.lhs script to wrap + the build system so that it conforms to the standard command-line + interface. + + + +&impl; Authors: + +&impl; authors must conform to an + agreed-upon &DistPackage; interface. + + This may include writing functionality so the + compiler can be asked questions about itself. + + This may also include altering compilers to read + /etc/haskellPackages.conf (for instance) to + discover what packages are installed or where to look for + imports. + +Include the &distMod; with the &impls; (in exchange, we + can hopefully remove some libraries that are currently included with + the &impls;). + +Random Haskell Programmer: + +A random Haskell programmer can use the + &distMod; as a means to create layered tools that download, build, + or install packages. For instance: + + + &haskellConfig; is an example of a layered tool which interfaces with + the &distMod;. This tool gives the end user access to the database + of installed applications. + + A Graphical User Interface could be layered on top + of the Setup script to give installation a better look-and-feel + according to the target platform. + + The &distMod; could be augmented with an online + repository of libraries (see ), and a layered tool might + perform the searching and downloading functionality of the + installation process. + + Debuggers often need to locate the source code to a + library module in order to instrument them. + + Source code editors or browsers could benefit from + being able to locate related source code on the user's + system. + + + + + + + +
+ + + +
Means of Distribution + and Layered Tools + + Most of the discussion here has been about giving the user + tools to build, install, and manage libraries and tools written in + Haskell. There is another important component to this which + deserves attention, and that is the distribution of these tools. + + + + For C++ and Perl (and likely many other programming languages) there + are central repositories of libraries and tools (). In a way, Haskell has this + also, bit it is centrally maintained rather than being a + free-for-all where nearly anyone can get their package distributed. + The author feels that both approaches are appropriate, and libraries + can graduate from one to the other. + + Having a standard interface for installing packages allows us + to layer tools upon it. For instance, it would be nice to be able + to download and install Haskell libraries and all their dependencies + with one command. For Perl (by virtue of CPAN) this is already + possible. Other layered tools are discussed in the Use Cases (). + +
+ + +
Development Plan + +On a high level, this is the order in which we should approach +the tasks: + + + +We should agree first on the high-level design of the +packaging system (), since this will require a consensus from +the &impl; authors. Details such as the format of the database and +the exact API will evolve over the course of the project. The author +views this as the top priority. + +In parallel, we should decide on the command-line interface for the +Setup script (), and the particulars of +how it is invoked on various systems. + +The first priority for Build and Install support +should be pure Haskell modules, and reasonable support for wrapping +make-based systems that are currently more highly evolved. + +At this point, it may be possible to collect +libraries, convert them to use the Library Infrastructure Project, and +make them available at a central repository. + +The next priority should be tools to assist in the +creation and maintenance of operating-system packages (Debian and RPM +for instance). + +Once these features are in place, it makes sense to +augment the &distMod; with more complex tool support like +preprocessors and external libraries. + +Now we can add more fun features like GUI front-ends, +downloading tools, package security tools, etc. + + + +The author has implemented a "toy" prototype system that fulfills +many of the features outlined above. It uses &hmake; by running it as +an external command. It can build Debian packages and interfaces with +the Common Debian Build System. It can prepare installations for Hugs +and GHC. The author decided to stop implementation, however, until +details about the Packaging system () +are worked through. + +
+ + + +Related Systems + +I will try to outline interesting points in a variety of systems +that we can learn from. These systems may be intended for building or +installing packages, or repositories for packages. I am not deeply +familiar with all of the tools here, and would be interested in +hearing more relevant points from someone with more knowledge. +Another weakness of mine is that I don't know much about Microsoft +Windows, so some good examples for Windows systems would be +helpful. + +
Debian + + +The Debian GNU/Linux system +is a good example of a binary distribution +(meaning that packages are distributed in binary, as opposed to source +code form), and its packaging system (dpkg) +is somewhat similar to the more famous RPM. +Debian has several other tools to help the user to install packages, +most notably, apt. The Debian toolset is +interesting for several reasons: + + + + It handles dependencies extremely well. A single + command can download and install a package, as well as downloading + and installing all of its dependencies. + + It handles updates extremely well. One command + (apt-get update) checks for new versions of + packages and updates a local database. Another command + (apt-get dist-upgrade) downloads and installs all + new versions of installed packages and any new + dependencies. + + + There are standard commands for downloading and + building packages from source. If I'm interested in hacking on a + package, I can run apt-get source packagename + which will download and unpack the source code for the package. The + source can then be built with the standard command + debuild. + + + The Debian Project maintains a central repository + for packages, and the packaging tools offer support for using + unofficial repositories as well. The central repositories include a + set of servers, the autobuilders, which compile + uploaded source packages for a variety of hardware architectures + (see below) and make them available as binary packages. As a + packager, I merely upload the source code to my package, and the + autobuilders do the rest. + + Currently the hardware architectures supported by + Debian are Intel x86, Motorola 68k, Sun SPARC, Alpha, PowerPC, ARM, + MIPS, HP PA-RISC, IA-64, S/390. Debian also runs on non-Linux + systems, including GNU/Hurd, GNU/NetBSD, and GNU/FreeBSD. The + package management tools also run on MacOS X under the name of the + Fink project. + + + + +
+ +
Python Distutils + +Python's &distutils; +system is in many ways similar to what we propose here. It is +a system for building and installing Python modules, written purely in +Python. The user interface is a Python script, +(setup.py by convention) and a setup +configuration file (setup.cfg by convention). To +quote from Distributing +Python Modules, "The setup configuration file is a useful +middle-ground between the setup script--which, ideally, would be +opaque to installers -- and the command-line to the setup script, +which is outside of your control and entirely up to the +installer. " + +Its noteworthy that Python has a big advantage over many +programming languages when implementing a system like &distutils;: It +is designed to be well suited to so-called scripting tasks, which are +common to the installation task, and Python has done these tasks in a +portable way for a long time. I believe that Haskell should evolve +portable ways to perform common scripting tasks. + +
+ +
&cpan; and Boost + + Quoting from &cpan;'s web +site "&cpan; is the Comprehensive Perl Archive Network, a +large collection of Perl software and documentation." That really +says it all. It is a central location where Perl developers can +contribute the software they write. + +&cpan; has a means of standardizing installation, +Makefile.pl (which is a Perl script which creates +a Makefile with targets like "install", "test", "config", "clean", etc.). Makefile.pl typically uses the MakeMover +module. It also has a means of registering a namespace for the +module that a developer is contributing. + +From the Boost web +site "[Boost] provides free peer-reviewed portable C++ source +libraries. The emphasis is on libraries which work well with the C++ +Standard Library. One goal is to establish "existing practice" and +provide reference implementations so that the Boost libraries are +suitable for eventual standardization. Some of the libraries have +already been proposed for inclusion in the C++ Standards Committee's +upcoming C++ Standard Library Technical Report." + +From what I can tell, unlike &cpan;, Boost is a bit more focused +on standards and review. That is, it is perhaps more Cathedral than +Bazaar See Eric Raymond's essay The +Cathedral and the Bazaar.. Boost does not +currently have a standard means of installation. +
+ +
FreeBSD's Ports System + +The FreeBSD Ports +Collection is a collection of software with a standard means +of compilation and installation. FreeBSD is a source distribution +(whereas Debian is a Binary Distribution). Packages come in +source-code form with a Makefile suitable for installing the program +on a FreeBSD system. The ports collection is very large (around 9000 +packages). + +Some things may be simpler with a source distribution than with +a binary distribution. For instance, since the code is expected to be +already on the machine and buildable, when a new compiler is installed +one merely needs to rebuild the dependant libraries. In contrast, +with a binary distribution like Debian one must wait for a new binary +package to be made available. However, as I understand it, FreeBSD +has no means of recompiling dependant packages automatically when a +new compiler is installed. + +
+ + + + + +
The &xemacs; Packaging +System + + +As most folks know, &xemacs; is not only a text editor, but also a +Lisp environment. Its functionality can be extended with lisp +programs, and many such programs are available from &xemacs;' Packaging +System. Simply put, the packaging system offers a menu-driven +interface within &xemacs; where the user can browse available +packages, select packages she is interested in, and ask &xemacs; to +download and install them. This system is interesting because it is +cross-platform (Unix, Linux, Windows, etc.) and is designed to work +only with elisp. + + + + +
+ +
Make-Based Systems + +The "fptools" build system has been used for many years in the +cross-platform &ghc; compiler. It is a make-based system which is +capable of a wide variety of installation tasks, compilation tasks, +and system configuration tasks. Currently, it is not entirely generic +across &impls;, and does not yet deal with some of the package +registration issues mentioned above. + +At Yale, another system is being developed. It is also a +make-based system and works reasonably well on various platforms +(Unix, Linux, Windows) and &impls;. It also does not yet deal with +all of the package registration issues mentioned above. + +Both tools can benefit from a standard packaging system. + +Because make has been used for many +years, it is expected that these systems will be able to do more than +the initial release of the &distMod;. The Setup script will be +designed with this in mind, and should be able to wrap these tools in +order to provide a common interface for users and for layered +tools. + +
+ +
&hmake; + +From the &hmake; home page, +&hmake; is an intelligent compilation management tool for +Haskell programs. It automatically extracts dependencies between +source modules, and issues the appropriate compiler commands to +rebuild only those that have changed, given just the name of the +program or module that you want to build. Yes, you need never write a +Makefile again! &hmake; also does a good job of handling the +variety of compilers that might be installed on a user's system. It +maintains a list of compilers and can switch between them according to +a flag. It also has a default compiler. + +&hmake; is particularly interesting to us because it is written +in Haskell and handles the task of compiling Haskell tools quite well. +One shortcoming is that it is not extensible on a per-project basis: +it is difficult to add support for new preprocessors without editing +the &hmake; code itself. It does, however, perform a lot of the tasks +that &DistBuild; will ultimately have to perform, and we hope to reuse +some of the code. + +Another interesting feature of &hmake; is the +Haskell Interactive tool (hi). hi +is, an interpreter-like environment that you can wrap over any +common Haskell compiler to achieve an interactive development +style. This is interesting because it would be nice to have a +generic /usr/bin/haskell which would use the +default compiler to interpret Haskell scripts. + +
+ +
+ +
hunk ./Distribution/Package.hs 55 - deriving (Read, Show, Eq, Ord) + deriving (Read, Show, Eq) hunk ./Distribution/UseConfig.hs 7 -import Distribution.Version(Version(NoVersion)) hunk ./Distribution/UseConfig.hs 32 -emptyUseConfig = UseConfig (PackageIdentifier "" NoVersion) +emptyUseConfig = UseConfig (PackageIdentifier "" (error "no version")) hunk ./Distribution/Version.hs 43 -module Distribution.Version where +module Distribution.Version ( + -- * The Version type + Version(..), hunk ./Distribution/Version.hs 47 + -- * Package versions + showVersion, + parseVersion, + + -- ** Version ranges + VersionRange(..), + orLaterVersion, orEarlierVersion, + betweenVersionsInclusive, + withinRange, + showVersionRange, + parseVersionRange, + ) where + +import Data.List ( intersperse ) + hunk ./Distribution/Version.hs 69 -data Version = DateVersion {versionYear :: Integer, - versionMonth :: Month, - versionDay :: Integer} - | NumberedVersion {versionMajor :: Integer, - versionMinor :: Integer, - versionPatchLevel :: Integer} - | NoVersion - deriving (Read, Show, Eq, Ord) +-- ----------------------------------------------------------------------------- +-- The Version type hunk ./Distribution/Version.hs 72 --- |FIX: add between versions? striclyBetween, etc? +{- | +A 'Version' represents the version of a software entity. + +An instance 'Eq' is provided, which implements exact equality modulo +reordering of the tags in the 'versionTags' field. + +The interpretation of ordering is dependent on the entity being +versioned, and perhaps the application. For example, simple branch +ordering is probably sufficient for many uses (see the 'versionBranch' +field), but some versioning schemes may include pre-releases which +have tags @"pre1"@, @"pre2"@, and so on, and these would need to be +taken into account when determining ordering. In some cases, date +ordering may be more appropriate, so the application would have to +look for @date@ tags in the 'versionTags' field and compare those. + +Similarly, concrete representations of versions may differ, so we leave +parsing and printing up to the application. +-} +data Version = + Version { versionBranch :: [Int], + -- ^ The numeric branch for this version. This reflects the + -- fact that most software versions are tree-structured; there + -- is a main trunk which is tagged with versions at various + -- points (1,2,3...), and the first branch off the trunk after + -- version 3 is 3.1, the second branch off the trunk after + -- version 3 is 3.2, and so on. The tree can be branched + -- arbitrarily, just by adding more digits. + -- + -- We represent the branch as a list of 'Int', so + -- version 3.2.1 becomes [3,2,1]. Lexicographic ordering + -- (i.e. the default instance of 'Ord' for @[Int]@) gives + -- the natural ordering of branches. + + versionTags :: [String] -- really a bag + -- ^ A version can be tagged with an arbitrary list of strings. + -- The interpretation of the list of tags is entirely dependent + -- on the entity that this version applies to, but the following + -- conventions are recommended: + -- + -- * a tag can be of the form @"name=value"@ to specify a + -- property, or simply @name@ to specify a boolean property. + -- + -- * released versions should have the tag @"release"@, + -- + -- * the date of a release or snapshot can be included by + -- giving the tag @"date=@/date/@"@, where /date/ is a + -- date readable by the 'Read' instance for 'ClockTime'. + } + deriving (Read,Show) + +instance Eq Version where + v1 == v2 = versionBranch v1 == versionBranch v2 + && all (`elem` (versionTags v2)) (versionTags v1) + -- tags may be in any order + +-- ----------------------------------------------------------------------------- +-- Package Versions + +-- Todo: maybe move this to Distribution.Package.Version? +-- (package-specific versioning scheme). + +-- Our conventions: +-- +-- * Released versions have the tag "release", and are printed +-- with the branch only (e.g. 6.2.1) +-- +-- * Snapshot versions have the tag "date=" and are printed +-- with the branch followed by '-' (e.g. 6.2-12-Nov-2004). + +showVersion :: Version -> String +showVersion (Version branch tags) + | "release" `elem` tags + = branch_str + | otherwise + = case getDate tags of + Just date -> branch_str ++ '-' : date + _ -> error "Distribution.Version.showVer: release or date required" + where branch_str = concat (intersperse "." (map show branch)) + + getDate [] = Nothing + getDate (('d':'a':'t':'e':'=':date):_) = Just date + getDate (_:rest) = getDate rest + +-- ----------------------------------------------------------------------------- +-- Version ranges + +-- Todo: maybe move this to Distribution.Package.Version? +-- (package-specific versioning scheme). + hunk ./Distribution/Version.hs 163 - | ExactlyThisVersion Version -- = version - | OrLaterVersion Version -- >= version - | OrEarlierVersion Version -- <= version - | StrictlyLaterVersion Version -- > version - | StrictlyEarlierVersion Version -- < version --- v1 < x <= v3, etc. Note exactly and any don't make sense here: - | Between VersionRange VersionRange - deriving (Read, Show, Eq) + | ThisVersion Version -- = version + | LaterVersion Version -- > version (NB. not >=) + | EarlierVersion Version -- < version + -- ToDo: are these too general? + | UnionVersionRanges VersionRange VersionRange + | IntersectVersionRanges VersionRange VersionRange + deriving (Show,Read,Eq) hunk ./Distribution/Version.hs 171 -number :: (Integral a, Read a) => Parser a -number = do{ ds <- many1 digit - ; return (read ds) - } - "number" +orLaterVersion v = UnionVersionRanges (ThisVersion v) (LaterVersion v) +orEarlierVersion v = UnionVersionRanges (ThisVersion v) (EarlierVersion v) hunk ./Distribution/Version.hs 174 -showVer :: Version -> String -showVer (DateVersion yr mn day) - = (show yr) ++ "." ++ (show mn) ++ "." ++ (show day) -showVer (NumberedVersion mj mn p) - = (show mj) ++ "." ++ (show mn) ++ "-" ++ (show p) -showVer NoVersion = "none" +betweenVersionsInclusive v1 v2 = + IntersectVersionRanges (orLaterVersion v1) (orEarlierVersion v2) hunk ./Distribution/Version.hs 177 +v1 `laterVersion` v2 = versionBranch v1 > versionBranch v2 +v1 `earlierVersion` v2 = versionBranch v1 < versionBranch v2 + hunk ./Distribution/Version.hs 182 -withinRange _ AnyVersion = True -withinRange v1 (ExactlyThisVersion v2) = v1 == v2 -withinRange v1 (OrLaterVersion v2) = v2 <= v1 -withinRange v1 (OrEarlierVersion v2) = v1 <= v2 -withinRange v1 (StrictlyEarlierVersion v2) = v1 < v2 -withinRange v1 (StrictlyLaterVersion v2) = v2 < v1 -withinRange v (Between v1 v2) = (withinRange v v1) && (withinRange v v2) +withinRange _ AnyVersion = True +withinRange v1 (ThisVersion v2) = v1 == v2 +withinRange v1 (LaterVersion v2) = v1 `laterVersion` v2 +withinRange v1 (EarlierVersion v2) = v1 `earlierVersion` v2 +withinRange v1 (UnionVersionRanges v2 v3) + = v1 `withinRange` v2 || v1 `withinRange` v3 +withinRange v1 (IntersectVersionRanges v2 v3) + = v1 `withinRange` v2 && v1 `withinRange` v3 hunk ./Distribution/Version.hs 191 +showVersionRange :: VersionRange -> String +showVersionRange AnyVersion = "-any" +showVersionRange (ThisVersion v) = '=' : showVersion v +showVersionRange (LaterVersion v) = '>' : showVersion v +showVersionRange (EarlierVersion v) = '<' : showVersion v +showVersionRange (UnionVersionRanges r1 r2) + = showVersionRange r1 ++ "||" ++ showVersionRange r2 +showVersionRange (IntersectVersionRanges r1 r2) + = showVersionRange r1 ++ "&&" ++ showVersionRange r2 + hunk ./Distribution/Version.hs 211 - v <- versionParser - return $ StrictlyEarlierVersion v) + v <- parseVersion + return $ EarlierVersion v) hunk ./Distribution/Version.hs 214 - v <- versionParser - return $ StrictlyLaterVersion v) + v <- parseVersion + return $ LaterVersion v) hunk ./Distribution/Version.hs 217 - v <- versionParser - return $ OrLaterVersion v) + v <- parseVersion + return $ orLaterVersion v) hunk ./Distribution/Version.hs 220 - v <- versionParser - return $ OrEarlierVersion v) + v <- parseVersion + return $ orEarlierVersion v) hunk ./Distribution/Version.hs 223 - v <- versionParser - return $ ExactlyThisVersion v) + v <- parseVersion + return $ ThisVersion v) hunk ./Distribution/Version.hs 232 -versionParser :: Parser Version -versionParser - = do try numberedVersionParser - <|> dateVersionParser +parseVersion :: Parser Version +parseVersion + = do branch <- branchParser + date <- dateParser + return (Version{versionBranch=branch, versionTags=date}) hunk ./Distribution/Version.hs 238 - hunk ./Distribution/Version.hs 239 --- |Parse a version of the form 1.2-3 -numberedVersionParser :: Parser Version -numberedVersionParser - = do n1 <- number - char '.' - n2 <- number - char '-' - n3 <- number - return $ NumberedVersion n1 n2 n3 +-- |Parse a version of the form 1.2.3 +branchParser :: Parser [Int] +branchParser + = do n <- number + bs <- branches + return (n : bs) hunk ./Distribution/Version.hs 246 +branches :: Parser [Int] +branches + = option [] $ do + char '.' + n <- number + bs <- branches + return (n:bs) hunk ./Distribution/Version.hs 254 --- ---------------------------------------------------------- +dateParser :: Parser [String] +dateParser + = (try $ do char '-'; d <- many anyChar; return ["date="++d]) + <|> (do notFollowedBy anyChar; return []) + +number :: (Integral a, Read a) => Parser a +number = do{ ds <- many1 digit + ; return (read ds) + } + "number" + +-- ----------------------------------------------------------------------------- +-- Parsing dates + +{- +-- Here is some code for parsing dates. We might need this at some point. + hunk ./Distribution/Version.hs 299 --- ---------------------------------------------------------- --- |Parse a version in a variety of date formats -dateVersionParser :: Parser Version +dateVersionParser :: Parser String hunk ./Distribution/Version.hs 312 +-} hunk ./Distribution/Version.hs 353 - hunk ./Distribution/Version.hs 356 --- Most of the testing is for version related stuff. Move to Version? hunk ./Distribution/Version.hs 359 -doVersionParse input = let x = parse versionParser "" input +doVersionParse input = let x = parse parseVersion "" input hunk ./Distribution/Version.hs 372 -tDateVersion :: Version -tDateVersion = DateVersion 2003 October 31 -tDateVersion2 :: Version -tDateVersion2 = DateVersion 2002 November 0 -tDateVersion3 :: Version -tDateVersion3 = DateVersion 2002 March 0 -tDateVersion4 :: Version -tDateVersion4 = DateVersion 2002 May 0 +branch1 = [1] +branch2 = [1,2] +branch3 = [1,2,3] +branch4 = [1,2,3,4] hunk ./Distribution/Version.hs 377 +release1 = Version{versionBranch=branch1, versionTags=["release"]} +release2 = Version{versionBranch=branch2, versionTags=["release"]} +release3 = Version{versionBranch=branch3, versionTags=["release"]} +release4 = Version{versionBranch=branch4, versionTags=["release"]} +snap = Version{versionBranch=branch3, versionTags=["date=2003.10.31"]} +snapdash = Version{versionBranch=branch3, versionTags=["date=2003-10-31"]} + hunk ./Distribution/Version.hs 387 - "simple dot date" ~: "failed" ~: Right tDateVersion - ~=? doVersionParse "2003.10.31", - "simple dash date" ~: "failed" ~: Right tDateVersion - ~=? doVersionParse "2003-10-31", - "year short day dot" ~: "failed" - ~: Right tDateVersion ~=? doVersionParse "2003.Oct.31", - "year short day dash" ~: "failed" - ~: Right tDateVersion ~=? doVersionParse "2003-Oct-31", - "hugs style" ~: "failed" - ~: Right tDateVersion2 ~=? doVersionParse "Nov-2002", - "hugs style may" ~: "failed" - ~: Right tDateVersion3 ~=? doVersionParse "Mar-2002", - "hugs style mar" ~: "failed" - ~: Right tDateVersion4 ~=? doVersionParse "May-2002", - "hugs style dot" ~: "failed" - ~: Right tDateVersion2 ~=? doVersionParse "Nov.2002", - "year-longmonth-day dash" - ~: Right tDateVersion ~=? doVersionParse "2003-October-31", - "year-longmonth-day dot" - ~: Right tDateVersion ~=? doVersionParse "2003.October.31", - "numbered version" ~: "failed" - ~: (Right $ NumberedVersion 1 2 3) ~=? doVersionParse "1.2-3", + "released version 1" ~: "failed" + ~: (Right $ release1) ~=? doVersionParse "1", + "released version 3" ~: "failed" + ~: (Right $ release3) ~=? doVersionParse "1.2.3", + "simple dot date" ~: "failed" ~: Right snap + ~=? doVersionParse "1.2.3-2003.10.31", + "simple dash date" ~: "failed" ~: Right snapdash + ~=? doVersionParse "1.2.3-2003-10-31", hunk ./Distribution/Version.hs 397 - "greater than hugsStyle" ~: "failed" - ~: (Right $ StrictlyLaterVersion tDateVersion2) - ~=? doVersionRangeParse "> Nov-2002", - "greater than hugsStyle nospace" ~: "failed" - ~: (Right $ StrictlyLaterVersion tDateVersion2) - ~=? doVersionRangeParse ">Nov-2002", - "OrEarlier year-longmonth-day dash" ~: "failed" - ~: (Right $ OrEarlierVersion tDateVersion) - ~=? doVersionRangeParse "<=2003-October-31", - "OrLater year-longmonth-day dash" ~: "failed" - ~: (Right $ OrLaterVersion tDateVersion) - ~=? doVersionRangeParse ">=2003-October-31", - "Exactly This year-longmonth-day dot" ~: "failed" - ~: (Right $ ExactlyThisVersion tDateVersion) - ~=? doVersionRangeParse "==2003.October.31", hunk ./Distribution/Version.hs 403 - "range comparison OrLaterVersion" ~: "failed" + "range comparison LaterVersion 1" ~: "failed" hunk ./Distribution/Version.hs 405 - ~=? tDateVersion `withinRange` (OrLaterVersion tDateVersion2), - "range comparison Equal" ~: "failed" + ~=? release3 `withinRange` (LaterVersion release2), + "range comparison LaterVersion 2" ~: "failed" + ~: False + ~=? release2 `withinRange` (LaterVersion release3), + "range comparison EarlierVersion 1" ~: "failed" hunk ./Distribution/Version.hs 411 - ~=? tDateVersion `withinRange` (ExactlyThisVersion tDateVersion), - "range comparison OrEarlierVersion1" ~: "failed" - ~: True - ~=? tDateVersion2 `withinRange` (OrEarlierVersion tDateVersion), - "range comparison OrEarlierVersion2" ~: "failed" + ~=? release3 `withinRange` (LaterVersion release2), + "range comparison EarlierVersion 2" ~: "failed" hunk ./Distribution/Version.hs 414 - ~=? tDateVersion `withinRange` (OrEarlierVersion tDateVersion2), - "range comparison OrEarlierVersion3" ~: "failed" + ~=? release2 `withinRange` (LaterVersion release3), + "range comparison orLaterVersion 1" ~: "failed" hunk ./Distribution/Version.hs 417 - ~=? tDateVersion `withinRange` (OrEarlierVersion tDateVersion), - "range comparison OrEarlierVersion4" ~: "failed" + ~=? release3 `withinRange` (orLaterVersion release3), + "range comparison orLaterVersion 2" ~: "failed" hunk ./Distribution/Version.hs 420 - ~=? (NumberedVersion 1 2 3) - `withinRange` (OrLaterVersion $ NumberedVersion 0 0 0), - "range comparison StrictlyGreaterVersion" ~: "failed" + ~=? release3 `withinRange` (orLaterVersion release2), + "range comparison orLaterVersion 3" ~: "failed" hunk ./Distribution/Version.hs 423 - ~=? (NumberedVersion 2 1 0) - `withinRange` (StrictlyLaterVersion $ NumberedVersion 3 0 0), - "range comparison StrictlyGreaterVersion 2" ~: "failed" + ~=? release2 `withinRange` (orLaterVersion release3), + "range comparison orEarlierVersion 1" ~: "failed" hunk ./Distribution/Version.hs 426 - ~=? (NumberedVersion 10 0 0) - `withinRange` (StrictlyLaterVersion $ NumberedVersion 3 0 0), - -- Comparing versions - "Different kinds" ~: "failed" - ~: True ~=? (NumberedVersion 1 2 3 > tDateVersion), - "Two dates" ~: "failed" - ~: True ~=? (tDateVersion > tDateVersion2) + ~=? release2 `withinRange` (orEarlierVersion release2), + "range comparison orEarlierVersion 2" ~: "failed" + ~: True + ~=? release2 `withinRange` (orEarlierVersion release3), + "range comparison orEarlierVersion 3" ~: "failed" + ~: False + ~=? release3 `withinRange` (orEarlierVersion release2) hunk ./doc/libraryInfrastructure.sgml 87 -
High-Level Overview +
What we are trying to achieve hunk ./doc/libraryInfrastructure.sgml 119 -
hunk ./doc/libraryInfrastructure.sgml 266 +
hunk ./doc/libraryInfrastructure.sgml 268 + + hunk ./doc/libraryInfrastructure.sgml 271 + +
The Haskell Library Infrastructure + +The Haskell Library Infrastructure (HLI) is a framework and supporting +code aimed at the above problem. It is Haskell-specific, but independent of +any particular Haskell implementation (Hugs, GHC, etc) or platform (Unix, Windows, etc). + +We use the term ``compiler'' to mean GHC, Hugs, nhc, hbc, etc. Even though +Hugs isn't really a compiler, the term is less clumsy than ``Haskell implementation''. + +
Packages + +A package is the unit of distribution. +A package has explicit dependencies on other packages. + +
+ +
What the compilers must implement + +The HLI requires that the Haskell implementations be somewhat package-aware. +This section documents those requirements + +
Registering a package + +Installing a package ultimately involves these steps: + + + Compiling the source files, by invoking the compiler. Even Hugs may require + some processing (e.g running cpp) + + + + Copying the compiled files into some place. Typically the compiler + places no pre-conditions on where "some place" is; instead one + usually follows the conventions of the host operating system. + + + + Registering the package: telling the compiler about the + existence of the package, and where its files are. + + +In step (c), the compiler records the package information in some +implementation-specific way; how it does so is not constrained by the HLI. +To register the package one invokes a compiler-specific program (ghc-pkg, +hugs-pkg etc), passing it a file describing the package. The format of this +file is independent of the compiler. + +It must be possible to register many versions of the same package. + +A complete program +can include more than one version of the same package. For example, the user might use +package A:2.1 and B:1.0; but B might use A:1.9. +
+ +
Module imports + + +Installing a package means that subsequent invocations of the compiler will use a module namespace +augmented by the newly-installed package. + + +By default, the module namespace is populated only by the latest version of a particular package. +This can be overridden using the -package flag. (Question: what does -package hunit:1.2 -package hunit:1.3 do? +Does the second override the first? Or are they both in scope? I think the former.) + + +An attempt to import a module that is defined by more than one installed package yields an ambiguous-import +error, rather like an attempt to use an identifier that is defined by more than one imported module. +(Comment: there ought be some way to resolve such ambiguities. Per-import qualification? -disable-package X? +-package Y specifies winner?) + +
+ +
The interface to <function>X-pkg</function> + +Each Haskell implementation X must provide an associated program X-pkg which +allows a user to make a new package known to the compiler, and to ask what packages it knows. + + X-pkg register hunit-config +or + X-pkg register < hunit-config. + + The syntax of the package install configuration, here hunit-config, is given below. + + + + X-pkg query "hunit" + + returns the version(s) of all hunit packages, latest version first. + + + +X-pkg query "hunit" 4.3.1 + + returns the package install configuration of hunit 4.3.1, in the same syntax + understood by X-pkg register, if it exists; or + the empty string otherwise. + + +
+ +
Syntax of package install configuration + +...include the list of ``externally visible modules''. +
+
+ + +
Installing a package: the end user viewpoint + +Joe User wants to install a new Haskell library, say HUnit, for GHC. How he does this depends on +how the library is packaged: + +Debian: + Joe says: + + apt-get install hunit-ghc + +And that's all. +Any packages that hunit-ghc depends on are automatically installed as well. + + +Linux RPM: + Joe says: +... +(Dependencies?) + + +Windows installer: + +Joe downloads hunit-ghc.msi, and double-clicks on it. +(Dependencies?) + + +Binary tar-ball: + +A binary tarball is a bunch of files, already precompiled and ready to install. +Joe downloads hunit-ghc.tar, unpacks the tarball in some temporary location, cd's to the root directory +and says + + ./setup.hs install + +or + + runhugs setup.hs install + +(or whatever is necessary to run the setup.hs Haskell script). +The script setup.hs does whatever is necessary to install the library. + + +(Dependencies?) + + +Source tar-ball: + +A source tarball contains the library sources, which may need to be +compiled before being installed. The same source tarball may well be installable for several +Haskell implementations. Joe downloads and unpacks the tarball hunit-src.tar, and then says + + ./setup.hs configure ghc + ./setup.hs build + ./setup.hs install + +The configuration step checks at least that (a) the package author indeed intends the package to be buildable +with GHC, and that a sufficiently up-to-date GHC is available, and (b) checks that the packages on which +hunit depends are already installed for GHC. After that the build and install steps know what +compiler they are using. + +Question: can you abbreviate to setup install ghc? + + + + +
<function>setup</function> targets + + +Here is a specification of the complete command-line interface for the setup.hs program +that must be delivered with a package: + + + setup configure + --with-compiler=ghc/hugs/nhc + --with-compiler-flags=-O + --prefix = xxx + -- what else? + + + +setup build + + + +setup install + + +It is expected that setup.hs will record the results of setup configure +in a file (and in a format) of its choosing. +
+
+ +
Building a package: the author's viewpoint + +Angela Author has written a bunch of Haskell modules that she wants to package as a library. +What does she have to do? +She must simply build a package that can be installed as described above: nothing else is prescribed. +However, the HLI provides support for library authors to make it easy to fulfil these requirements. + + +
The Makefile route + +If Angela is happy with make, then she can build the library entirely using make. + +To support this, HLI provides a trivial implementation of setup.hs, setup-make.hs, which +simply parses the command line arguments and shells out into make. Thus, + + setup configure --with-compiler=ghc + +invokes + + make configure HC=ghc + +Similarly +setup build +invokes +make build And so on. + +Angela simply arranges that when her makefiles build a distribution, they include this simple setup.hs in +the root of the distribution, where the Joe User expects to find it. +
+ +
The simple build infrastructure + + +In many cases, though, a Haskell package will consist of nothing more than a bunch of Haskell modules, +with perhaps the odd C file. In that case, the HLI provides a simple build infrastructure that +completely replaces make. (Think hmake.) The emphasis is on ``simple'': it deals with the 90\% case only. +If you want something more elaborate, you can (a) modify the simple build infrastructure (which is written in Haskell) +(b) use makefiles, or (c) implement something else entirely. + +The simple build infrastructure works as follows. Angela puts the following Hasell file setup.hs in the +root of her tree: + + module Main where + import Distribution.Setup.Simple + + pkgInfo :: PkgInfo + pkgInfo = .... + + main = setup pkgInfo + +Here PkgInfo is a data structure that describes the package: its name, version, dependencies, and so on (Section ...). +It is not the same as the package install configuration described in Section XXX; the latter describes a particular +installation (e.g. where the files are), while PkgInfo gives only installation-independent information. + +Now Angela can build her package by saying + + setup.hs build + +She can even install it on her ownn machine by saying + + setup.hs install + +She can build a source tarball: + + setup.hs source-tarball + +The full details are given in Section YYYY. + +It is no coincidence that the interface is very similar to that described for a package tarball (Section ZZZ). +In fact, Distribution.Setup.Simple.setup conforms to the specification of Section ZZZ, and when it builds +a tarball, it includes ./setup.hs in the tarball, ready to be run by Joe User. +However, Distribution.Setup.Simple.setup of course implements a richer interface than that required by +Section ZZZ, becuase it's intended to support Angela as well as Joe. +The full specification is in Section SSSS. + + +
<function>PkgInfo</function> + +...describe PkgInfo... + +Which compiler flags does she put in the compiler-flags part of PkgInfo, and which does she +pass to setup configure? Answer: the package should compile in a sensible way using only the +former. The latter are just for build-specific modification (e.g. make a debug build). +
+ +
<function>Distribution.Setup.Simpl.setup</function> + +Command line interface to the simple build infrastructure. +
+ +
+ +
RPMs and Debian packages + +How do we build these? +
+
+
+ + hunk ./Distribution/Misc.hs 44 -module Distribution.Misc(Compiler, License(..), Dependency, - Extension, Opt, LocalBuildInfo, - CompilerFlavor(..), +module Distribution.Misc(License(..), Dependency, + Extension, Opt, LocalBuildInfo(..), + CompilerFlavor(..), Compiler(..), hunk ./Distribution/Misc.hs 57 - deriving Show + deriving (Show, Eq) hunk ./Distribution/Misc.hs 62 - deriving Show + deriving (Show, Eq) hunk ./Distribution/Misc.hs 74 + deriving (Show, Eq) hunk ./Distribution/Setup.hs 47 -import Distribution.Misc(LocalBuildInfo) +import Distribution.Misc(LocalBuildInfo, CompilerFlavor(..), + Compiler(..), LocalBuildInfo(..)) hunk ./Distribution/Setup.hs 50 +-- Misc: +import HUnit (Test, (~:), (~=?)) + hunk ./Distribution/Setup.hs 74 + deriving (Show, Eq) hunk ./Distribution/Setup.hs 83 + + +hunitTests :: IO [Test] +hunitTests = + do let basicGhcConfig = (ConfigCmd (LocalBuildInfo "/lib" + (Compiler GHC "/bin/ghc" + "/bin/ghc-pkg")), []) + let realGhcConfig = (ConfigCmd (LocalBuildInfo "" (Compiler Hugs "" "")), []) + return ["config prefix hugs given package tool" ~: "failed" ~: + basicGhcConfig ~=? (parseArgs ["--prefix=/lib", "--ghc", + "--with-compiler=/bin/ghc", + "--with-pkg=/bin/hugs/ghc-pkg", + "configure"]), + "find package tool" ~: "failed" ~: + basicGhcConfig ~=? (parseArgs ["--prefix=/lib", "--ghc", + "--with-compiler=/bin/ghc", + "configure"]), + "locate compiler and package tool" ~: "failed" ~: + realGhcConfig ~=? (parseArgs ["configure", "--ghc"]), + "should we default to the current compiler?" ~: "failed" ~: + realGhcConfig ~=? (parseArgs ["configure"]) + ] + +{- Testing ideas: + * IO to look for hugs and hugs-pkg (which hugs, etc) + * quickCheck to test permutations of arguments + * what other options can we over-ride with a command-line flag? +-} + hunk ./Distribution/ModuleTest.hs 52 +import qualified Distribution.Setup(hunitTests) hunk ./Distribution/ModuleTest.hs 58 +import HUnit(runTestTT, Test(TestList)) + hunk ./Distribution/ModuleTest.hs 61 -main = putStrLn "compile successful" - +main = do putStrLn "compile successful" + putStrLn "-= Setup Tests =-" + setupTests <- Distribution.Setup.hunitTests + runTestTT $ TestList setupTests + return () hunk ./Distribution/Setup.hs 44 -module Distribution.Setup (parseArgs, Action(..)) where +module Distribution.Setup (parseArgs, Action(..), hunitTests) where hunk ./Distribution/Setup.hs 55 -parseArgs _ = (BuildCmd, []) +parseArgs _ = (NoCmd, []) hunk ./Distribution/Setup.hs 70 - | UseInfoCmd - | TestCmd --- | Register --- | BDist + | RegisterCmd + | NoCmd -- error case? +-- | TestCmd 1.0? +-- | BDist -- 1.0 hunk ./Distribution/Setup.hs 84 - hunk ./Distribution/Setup.hs 90 - return ["config prefix hugs given package tool" ~: "failed" ~: + let compFlavMap = [("ghc", GHC), ("nhc", NHC), ("hugs", Hugs)] + return $ [-- Config: + "config prefix ghc given package tool" ~: "failed" ~: hunk ./Distribution/Setup.hs 95 - "--with-pkg=/bin/hugs/ghc-pkg", + "--with-pkg=/bin/ghc-pkg", hunk ./Distribution/Setup.hs 104 - realGhcConfig ~=? (parseArgs ["configure"]) - ] + realGhcConfig ~=? (parseArgs ["configure"])] + -- simpler commands: + ++ [flag ~: "failed" ~: (flagCmd, []) ~=? (parseArgs [flag]) + | (flag, flagCmd) <- [("build", BuildCmd), + ("install", InstallCmd), + ("sdist", SDistCmd), + ("packageinfo", PackageInfoCmd), + ("register", RegisterCmd)] + ] hunk ./Distribution/TODO 2 -** Integrate SimonPJ's document into the "proposal" +** Integrate SimonPJ's document into the "proposal" (simonpj) hunk ./Distribution/TODO 13 -- test cases for option parsing +- map over "compFlavMap" with config testing. hunk ./Distribution/TODO 16 +------------------------------------------------------------ +* Command-line interface +** Actions +- build +- install +- configure (+flags) +- packageinfo +- sdist + +* 1.0 +** actions +- bdist +- ... +** flags +--{,with-}{hbc,helium} +--with-compiler= + + + +** flags +--help +--ghc +--nhc +--hugs +--with-{ghc,nhc,hugs} + + +------------------------------------------------------------ + hunk ./Distribution/Setup.hs 83 +-- Locate the compiler based on the flavor +exeLoc :: CompilerFlavor -> IO FilePath +exeLoc _ = return "error, not yet implemented" -- FIX hunk ./Distribution/Setup.hs 87 +pkgLoc :: CompilerFlavor -> IO FilePath +pkgLoc _ = return "error, not yet implemented" -- FIX + hunk ./Distribution/Setup.hs 96 - let compFlavMap = [("ghc", GHC), ("nhc", NHC), ("hugs", Hugs)] + + m <- sequence [do loc <- exeLoc comp + pkg <- pkgLoc comp + return (name, comp, loc, pkg) + | (name, comp) <- [("ghc", GHC), ("nhc", NHC), ("hugs", Hugs)]] hunk ./Distribution/Setup.hs 115 + -- test location of various compilers + ++ ["locate " ++ name ++ " and pkg tool" ~: "failed" ~: + (ConfigCmd (LocalBuildInfo "/usr/local" + (Compiler comp comploc pkgloc)), []) + ~=? (parseArgs ["--prefix=/usr/local", "--"++name, "configure"]) + | (name, comp, comploc, pkgloc) <- m] + -- find the package tool + ++ ["locate pkg tool given " ++ name ~: "failed" ~: + (ConfigCmd (LocalBuildInfo "/usr/local" + (Compiler comp comploc pkgloc)), []) + ~=? (parseArgs ["--prefix=/usr/local", "--"++name, + "--with-compiler="++name, "configure"]) + | (name, comp, comploc, pkgloc) <- m] + hunk ./Distribution/TODO 3 +** x-pkg command-line interface hunk ./Distribution/TODO 8 +** cross-platform compiler location(simonmar?) +** build +** install +** register +** generate InstalledPackageInfo +** read & write config-droppings hunk ./Distribution/TODO 17 +** passing unknown options through. +** reading & writing configuration-dropping + hunk ./Distribution/TODO 21 +** discovering the location of the given flavor of compiler and pkg tool hunk ./Distribution/TODO 24 -- map over "compFlavMap" with config testing. hunk ./Distribution/TODO 27 -* Command-line interface +* Setup Command-line interface hunk ./Distribution/TODO 30 -- install +- install (+maybe installprefix, maybe system) hunk ./Distribution/TODO 34 +- register (maybe system) +- unregister (maybe system) hunk ./Distribution/TODO 37 +** flags +--help +--ghc +--nhc +--hugs +--with-compiler= +--prefix= +--instprefix= +--help (for compatibility? it's really more of an action) + hunk ./Distribution/TODO 50 -- ... +- clean +- doc stuff? + hunk ./Distribution/TODO 54 ---{,with-}{hbc,helium} +--hbc +--helium hunk ./Distribution/TODO 60 -** flags ---help ---ghc ---nhc ---hugs ---with-{ghc,nhc,hugs} - - hunk ./Distribution/TODO 66 - register, info + register, unregister, info hunk ./Distribution/TODO 74 +** hat support +** haddock support +** user use configuration vs system use configuration move ./Distribution/UseConfig.hs ./Distribution/InstalledPackageInfo.hs hunk ./Distribution/InstalledPackageInfo.hs 3 -module Distribution.UseConfig where +module Distribution.InstalledPackageInfo where hunk ./Distribution/InstalledPackageInfo.hs 8 -data UseConfig - = UseConfig { +data InstalledPackageInfo + = InstalledPackageInfo { hunk ./Distribution/InstalledPackageInfo.hs 31 -emptyUseConfig :: UseConfig -emptyUseConfig = UseConfig (PackageIdentifier "" (error "no version")) +emptyInstalledPackageInfo :: InstalledPackageInfo +emptyInstalledPackageInfo = InstalledPackageInfo (PackageIdentifier "" (error "no version")) hunk ./Distribution/InstalledPackageInfo.hs 36 -getUseInfo :: LocalBuildInfo -> PackageConfig -> UseConfig -getUseInfo _ _ = emptyUseConfig -- FIX +getUseInfo :: LocalBuildInfo -> PackageConfig -> InstalledPackageInfo +getUseInfo _ _ = emptyInstalledPackageInfo -- FIX hunk ./Distribution/ModuleTest.hs 49 -import Distribution.UseConfig() +import Distribution.InstalledPackageInfo() hunk ./Distribution/Package.hs 45 - PackageDescription(..), hunk ./Distribution/Package.hs 56 -data PackageDescription - = PackageDescription { package :: PackageIdentifier, - licenese :: License, - copyright :: String, - maintainer :: String, - stability :: String} - deriving Show - hunk ./Distribution/Package.hs 57 - = PackageConfig {packageDescription :: PackageDescription, + = PackageConfig {package :: PackageIdentifier, + licenese :: License, + copyright :: String, + maintainer :: String, + stability :: String, hunk ./Distribution/Setup.hs 46 --- Local + -- Local hunk ./Distribution/Setup.hs 74 +-- | CleanCmd -- clean hunk ./Distribution/Setup.hs 91 +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ + addfile ./Distribution/GetOpt.hs hunk ./Distribution/GetOpt.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.GetOpt +-- Copyright : (c) Sven Panne Oct. 1996 (small changes Feb. 2003) +-- License : BSD-style (see the file libraries/base/LICENSE) +-- +-- Maintainer : libraries@haskell.org +-- Stability : experimental +-- Portability : portable +-- +-- Edited by Isaac Jones to allow non-options to pass through. +-- +-- This library provides facilities for parsing the command-line options +-- in a standalone program. It is essentially a Haskell port of the GNU +-- @getopt@ library. +-- +----------------------------------------------------------------------------- + +{- +Sven Panne Oct. 1996 (small +changes Dec. 1997) + +Two rather obscure features are missing: The Bash 2.0 non-option hack +(if you don't already know it, you probably don't want to hear about +it...) and the recognition of long options with a single dash +(e.g. '-help' is recognised as '--help', as long as there is no short +option 'h'). + +Other differences between GNU's getopt and this implementation: + +* To enforce a coherent description of options and arguments, there + are explanation fields in the option/argument descriptor. + +* Error messages are now more informative, but no longer POSIX + compliant... :-( + +And a final Haskell advertisement: The GNU C implementation uses well +over 1100 lines, we need only 195 here, including a 46 line example! +:-) +-} + +module Distribution.GetOpt ( + -- * GetOpt + getOpt, + usageInfo, + ArgOrder(..), + OptDescr(..), + ArgDescr(..), + + -- * Example + + -- $example + ) where + +import Prelude +import Data.List ( isPrefixOf ) + +-- |What to do with options following non-options +data ArgOrder a + = RequireOrder -- ^ no option processing after first non-option + | Permute -- ^ freely intersperse options and non-options + | ReturnInOrder (String -> a) -- ^ wrap non-options into options + +{-| +Each 'OptDescr' describes a single option. + +The arguments to 'Option' are: + +* list of short option characters + +* list of long option strings (without \"--\") + +* argument descriptor + +* explanation of option for user +-} +data OptDescr a = -- description of a single options: + Option [Char] -- list of short option characters + [String] -- list of long option strings (without "--") + (ArgDescr a) -- argument descriptor + String -- explanation of option for user + +-- |Describes whether an option takes an argument or not, and if so +-- how the argument is injected into a value of type @a@. +data ArgDescr a + = NoArg a -- ^ no argument expected + | ReqArg (String -> a) String -- ^ option requires argument + | OptArg (Maybe String -> a) String -- ^ optional argument + +data OptKind a -- kind of cmd line arg (internal use only): + = Opt a -- an option + | UnreqOpt String -- an un-recognized option + | NonOpt String -- a non-option + | EndOfOpts -- end-of-options marker (i.e. "--") + | OptErr String -- something went wrong... + +-- | Return a string describing the usage of a command, derived from +-- the header (first argument) and the options described by the +-- second argument. +usageInfo :: String -- header + -> [OptDescr a] -- option descriptors + -> String -- nicely formatted decription of options +usageInfo header optDescr = unlines (header:table) + where (ss,ls,ds) = (unzip3 . map fmtOpt) optDescr + table = zipWith3 paste (sameLen ss) (sameLen ls) ds + paste x y z = " " ++ x ++ " " ++ y ++ " " ++ z + sameLen xs = flushLeft ((maximum . map length) xs) xs + flushLeft n xs = [ take n (x ++ repeat ' ') | x <- xs ] + +fmtOpt :: OptDescr a -> (String,String,String) +fmtOpt (Option sos los ad descr) = (sepBy ',' (map (fmtShort ad) sos), + sepBy ',' (map (fmtLong ad) los), + descr) + where sepBy _ [] = "" + sepBy _ [x] = x + sepBy ch (x:xs) = x ++ ch:' ':sepBy ch xs + +fmtShort :: ArgDescr a -> Char -> String +fmtShort (NoArg _ ) so = "-" ++ [so] +fmtShort (ReqArg _ ad) so = "-" ++ [so] ++ " " ++ ad +fmtShort (OptArg _ ad) so = "-" ++ [so] ++ "[" ++ ad ++ "]" + +fmtLong :: ArgDescr a -> String -> String +fmtLong (NoArg _ ) lo = "--" ++ lo +fmtLong (ReqArg _ ad) lo = "--" ++ lo ++ "=" ++ ad +fmtLong (OptArg _ ad) lo = "--" ++ lo ++ "[=" ++ ad ++ "]" + +{-| +Process the command-line, and return the list of values that matched +(and those that didn\'t). The arguments are: + +* The order requirements (see 'ArgOrder') + +* The option descriptions (see 'OptDescr') + +* The actual command line arguments (presumably got from + 'System.Environment.getArgs'). + +'getOpt' returns a triple, consisting of the argument values, a list +of non-option (commands, files, etc), a list of options that didn\'t +match, and a list of error messages.-} + +getOpt :: ArgOrder a -- non-option handling + -> [OptDescr a] -- option descriptors + -> [String] -- the commandline arguments + -> ([a],[String], [String] ,[String]) -- (options,non-options,unrecognized,error messages) +getOpt _ _ [] = ([],[],[],[]) +getOpt ordering optDescr (arg:args) = procNextOpt opt ordering + where procNextOpt (Opt o) _ = (o:os,xs,ur,es) + procNextOpt (UnreqOpt u) _ = (os,xs,u:ur,es) + procNextOpt (NonOpt x) RequireOrder = ([],x:rest,ur,[]) + procNextOpt (NonOpt x) Permute = (os,x:xs,ur,es) + procNextOpt (NonOpt x) (ReturnInOrder f) = (f x :os, xs,ur,es) + procNextOpt EndOfOpts RequireOrder = ([],rest,ur,[]) + procNextOpt EndOfOpts Permute = ([],rest,ur,[]) + procNextOpt EndOfOpts (ReturnInOrder f) = (map f rest,[],ur,[]) + procNextOpt (OptErr e) _ = (os,xs,ur,e:es) + + (opt,rest) = getNext arg args optDescr + (os,xs,ur,es) = getOpt ordering optDescr rest + +-- take a look at the next cmd line arg and decide what to do with it +getNext :: String -> [String] -> [OptDescr a] -> (OptKind a,[String]) +getNext ('-':'-':[]) rest _ = (EndOfOpts,rest) +getNext ('-':'-':xs) rest optDescr = longOpt xs rest optDescr +getNext ('-': x :xs) rest optDescr = shortOpt x xs rest optDescr +getNext a rest _ = (NonOpt a,rest) + +-- handle long option +longOpt :: String -> [String] -> [OptDescr a] -> (OptKind a,[String]) +longOpt ls rs optDescr = long ads arg rs + where (opt,arg) = break (=='=') ls + getWith p = [ o | o@(Option _ ls _ _) <- optDescr, l <- ls, opt `p` l ] + exact = getWith (==) + options = if null exact then getWith isPrefixOf else exact + ads = [ ad | Option _ _ ad _ <- options ] + optStr = ("--"++opt) + + long (_:_:_) _ rest = (errAmbig options optStr,rest) + long [NoArg a ] [] rest = (Opt a,rest) + long [NoArg _ ] ('=':_) rest = (errNoArg optStr,rest) + long [ReqArg _ d] [] [] = (errReq d optStr,[]) + long [ReqArg f _] [] (r:rest) = (Opt (f r),rest) + long [ReqArg f _] ('=':xs) rest = (Opt (f xs),rest) + long [OptArg f _] [] rest = (Opt (f Nothing),rest) + long [OptArg f _] ('=':xs) rest = (Opt (f (Just xs)),rest) + long _ _ rest = (UnreqOpt optStr,rest) + +-- handle short option +shortOpt :: Char -> String -> [String] -> [OptDescr a] -> (OptKind a,[String]) +shortOpt x xs rest optDescr = short ads xs rest + where options = [ o | o@(Option ss _ _ _) <- optDescr, s <- ss, x == s ] + ads = [ ad | Option _ _ ad _ <- options ] + optStr = '-':[x] + + short (_:_:_) _ rest = (errAmbig options optStr,rest) + short (NoArg a :_) [] rest = (Opt a,rest) + short (NoArg a :_) xs rest = (Opt a,('-':xs):rest) + short (ReqArg _ d:_) [] [] = (errReq d optStr,[]) + short (ReqArg f _:_) [] (r:rest) = (Opt (f r),rest) + short (ReqArg f _:_) xs rest = (Opt (f xs),rest) + short (OptArg f _:_) [] rest = (Opt (f Nothing),rest) + short (OptArg f _:_) xs rest = (Opt (f (Just xs)),rest) + short [] [] rest = (UnreqOpt optStr,rest) + short [] xs rest = (UnreqOpt optStr,('-':xs):rest) + +-- miscellaneous error formatting + +errAmbig :: [OptDescr a] -> String -> OptKind a +errAmbig ods optStr = OptErr (usageInfo header ods) + where header = "option `" ++ optStr ++ "' is ambiguous; could be one of:" + +errReq :: String -> String -> OptKind a +errReq d optStr = OptErr ("option `" ++ optStr ++ "' requires an argument " ++ d ++ "\n") + +-- errUnrec :: String -> OptKind a +-- errUnrec optStr = OptErr ("unrecognized option `" ++ optStr ++ "'\n") + +errNoArg :: String -> OptKind a +errNoArg optStr = OptErr ("option `" ++ optStr ++ "' doesn't allow an argument\n") + +{- +----------------------------------------------------------------------------------------- +-- and here a small and hopefully enlightening example: + +data Flag = Verbose | Version | Name String | Output String | Arg String deriving Show + +options :: [OptDescr Flag] +options = + [Option ['v'] ["verbose"] (NoArg Verbose) "verbosely list files", + Option ['V','?'] ["version","release"] (NoArg Version) "show version info", + Option ['o'] ["output"] (OptArg out "FILE") "use FILE for dump", + Option ['n'] ["name"] (ReqArg Name "USER") "only dump USER's files"] + +out :: Maybe String -> Flag +out Nothing = Output "stdout" +out (Just o) = Output o + +test :: ArgOrder Flag -> [String] -> String +test order cmdline = case getOpt order options cmdline of + (o,n,[] ) -> "options=" ++ show o ++ " args=" ++ show n ++ "\n" + (_,_,errs) -> concat errs ++ usageInfo header options + where header = "Usage: foobar [OPTION...] files..." + +-- example runs: +-- putStr (test RequireOrder ["foo","-v"]) +-- ==> options=[] args=["foo", "-v"] +-- putStr (test Permute ["foo","-v"]) +-- ==> options=[Verbose] args=["foo"] +-- putStr (test (ReturnInOrder Arg) ["foo","-v"]) +-- ==> options=[Arg "foo", Verbose] args=[] +-- putStr (test Permute ["foo","--","-v"]) +-- ==> options=[] args=["foo", "-v"] +-- putStr (test Permute ["-?o","--name","bar","--na=baz"]) +-- ==> options=[Version, Output "stdout", Name "bar", Name "baz"] args=[] +-- putStr (test Permute ["--ver","foo"]) +-- ==> option `--ver' is ambiguous; could be one of: +-- -v --verbose verbosely list files +-- -V, -? --version, --release show version info +-- Usage: foobar [OPTION...] files... +-- -v --verbose verbosely list files +-- -V, -? --version, --release show version info +-- -o[FILE] --output[=FILE] use FILE for dump +-- -n USER --name=USER only dump USER's files +----------------------------------------------------------------------------------------- +-} + +{- $example + +To hopefully illuminate the role of the different data +structures, here\'s the command-line options for a (very simple) +compiler: + +> module Opts where +> +> import GetOpt -- (not System.Console.GetOpt) +> import Data.Maybe ( fromMaybe ) +> +> data Flag +> = Verbose | Version +> | Input String | Output String | LibDir String +> deriving Show +> +> options :: [OptDescr Flag] +> options = +> [ Option ['v'] ["verbose"] (NoArg Verbose) "chatty output on stderr" +> , Option ['V','?'] ["version"] (NoArg Version) "show version number" +> , Option ['o'] ["output"] (OptArg outp "FILE") "output FILE" +> , Option ['c'] [] (OptArg inp "FILE") "input FILE" +> , Option ['L'] ["libdir"] (ReqArg LibDir "DIR") "library directory" +> ] +> +> inp,outp :: Maybe String -> Flag +> outp = Output . fromMaybe "stdout" +> inp = Input . fromMaybe "stdout" +> +> compilerOpts :: [String] -> IO ([Flag], [String], [String]) +> compilerOpts argv = +> case (getOpt Permute options argv) of +> (o,n,no,[] ) -> return (o,n,no) +> (_,_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) +> where header = "Usage: ic [OPTION...] files..." + +-} hunk ./Distribution/ModuleTest.hs 58 -import HUnit(runTestTT, Test(TestList)) +import HUnit(runTestTT, Test(..)) hunk ./Distribution/ModuleTest.hs 60 +label t = "-= " ++ t ++ " =-" + +runTestTT' t@(TestList _) = runTestTT t +runTestTT' (TestLabel l t) + = putStrLn (label l) >> runTestTT t +runTestTT' t = runTestTT t + hunk ./Distribution/ModuleTest.hs 71 - runTestTT $ TestList setupTests + mapM runTestTT' setupTests hunk ./Distribution/Setup.hs 49 +import Distribution.GetOpt hunk ./Distribution/Setup.hs 52 -import HUnit (Test, (~:), (~=?)) +import HUnit (Test(..), (~:), (~=?)) hunk ./Distribution/Setup.hs 54 --- |Parse the standard command-line arguments +-- |Parse the standard command-line arguments. FIX: is there a way to +-- use getOpts and still get the unknown flags? hunk ./Distribution/Setup.hs 63 - hunk ./Distribution/Setup.hs 66 -data Action = ConfigCmd LocalBuildInfo - | BuildCmd - | InstallCmd - | SDistCmd - | PackageInfoCmd - | RegisterCmd +data Flag = GhcFlag | NhcFlag | HugsFlag + | WithCompiler String | Prefix String | InstPrefix String +-- | Verbose | Version? + deriving (Show, Eq) + +options :: [OptDescr Flag] +options = [Option "g" ["ghc"] (NoArg GhcFlag) "compile with GHC", + Option "n" ["nhc"] (NoArg NhcFlag) "compile with NHC", + Option "" ["hugs"] (NoArg HugsFlag) "compile with hugs", + Option "w" ["with-compiler"] (ReqArg WithCompiler "COMPILER PATH") + "give the path to a particular compiler", + Option "" ["prefix"] (ReqArg Prefix "DIR") + "bake this prefix in preparation of installation", + Option "" ["install-prefix"] (ReqArg InstPrefix "DIR") + "specify the directory in which to place installed files" + ] + +-- |command, help string +commands :: [(String, String)] +commands = [("configure", "configure this package"), + ("build", ""), + ("install", ""), + ("sdist", ""), + ("packageinfo", ""), + ("register", ""), + ("unregister","") + ] + +data Action = ConfigCmd LocalBuildInfo -- config + | BuildCmd -- build + | InstallCmd -- install + | SDistCmd -- sdist + | PackageInfoCmd -- packageinfo + | RegisterCmd -- register + | UnregisterCmd -- unregister hunk ./Distribution/Setup.hs 107 - --- options :: [ OptDescr (Options -> IO Options) ] --- options = --- [Option "p" ["prefix"] --- (OptArg --- (\arg opt -> return opt{command=useinfo... - hunk ./Distribution/Setup.hs 129 - return $ [-- Config: + let (flags, commands, unkFlags, ers) + = getOpt Permute options ["configure", "foobar", "--prefix=/foo", "--ghc", "--nhc", "--hugs", "--with-compiler=/comp", "--unknown1", "--unknown2", "--install-prefix=/foo"] + return $ [TestLabel "very basic option parsing" $ TestList [ + "getOpt flags" ~: "failed" ~: + [Prefix "/foo", GhcFlag, NhcFlag, HugsFlag, + WithCompiler "/comp", InstPrefix "/foo"] + ~=? flags, + "getOpt commands" ~: "failed" ~: ["configure", "foobar"] ~=? commands, + "getOpt unknown opts" ~: "failed" ~: + ["--unknown1", "--unknown2"] ~=? unkFlags, + "getOpt errors" ~: "failed" ~: [] ~=? ers], + TestLabel "Config" $ TestList [ hunk ./Distribution/Setup.hs 153 - realGhcConfig ~=? (parseArgs ["configure"])] - -- test location of various compilers - ++ ["locate " ++ name ++ " and pkg tool" ~: "failed" ~: + realGhcConfig ~=? (parseArgs ["configure"])], + TestLabel "test location of various compilers" $ TestList + ["locate " ++ name ++ " and pkg tool" ~: "failed" ~: hunk ./Distribution/Setup.hs 159 - | (name, comp, comploc, pkgloc) <- m] - -- find the package tool - ++ ["locate pkg tool given " ++ name ~: "failed" ~: + | (name, comp, comploc, pkgloc) <- m], + TestLabel "find the package tool" $ TestList + ["locate pkg tool given " ++ name ~: "failed" ~: hunk ./Distribution/Setup.hs 166 - | (name, comp, comploc, pkgloc) <- m] + | (name, comp, comploc, pkgloc) <- m], hunk ./Distribution/Setup.hs 168 - -- simpler commands: - ++ [flag ~: "failed" ~: (flagCmd, []) ~=? (parseArgs [flag]) + TestLabel "simpler commands" $ TestList + [flag ~: "failed" ~: (flagCmd, []) ~=? (parseArgs [flag]) hunk ./Distribution/Setup.hs 175 - ] + ]] hunk ./Distribution/TODO 16 -** Parsing of command-lint opts +** testing of altered version of getopt +** Parsing of command-line opts hunk ./Distribution/Setup.hs 54 --- |Parse the standard command-line arguments. FIX: is there a way to --- use getOpts and still get the unknown flags? -parseArgs :: [String] -> CommandLineOpts -parseArgs _ = (NoCmd, []) +-- Locate the compiler based on the flavor +exeLoc :: CompilerFlavor -> IO FilePath +exeLoc _ = return "error, not yet implemented" -- FIX hunk ./Distribution/Setup.hs 58 +pkgLoc :: CompilerFlavor -> IO FilePath +pkgLoc _ = return "error, not yet implemented" -- FIX + hunk ./Distribution/Setup.hs 62 --- * command line +-- * Command Line Types and Exports hunk ./Distribution/Setup.hs 68 +-- |Most of these flags are for Configure, but InstPrefix is for Install. hunk ./Distribution/Setup.hs 70 - | WithCompiler String | Prefix String | InstPrefix String + | WithCompiler FilePath | Prefix FilePath + -- For install: + | InstPrefix FilePath hunk ./Distribution/Setup.hs 76 + +data Action = ConfigCmd LocalBuildInfo -- config + | BuildCmd -- build + | InstallCmd (Maybe FilePath) -- install + | SDistCmd -- sdist + | PackageInfoCmd -- packageinfo + | RegisterCmd -- register + | UnregisterCmd -- unregister + | NoCmd -- error case? +-- | TestCmd 1.0? +-- | BDist -- 1.0 +-- | CleanCmd -- clean + deriving (Show, Eq) + +-- |Parse the standard command-line arguments. +parseArgs :: [String] -> CommandLineOpts +parseArgs _ = (NoCmd, []) + +-- ------------------------------------------------------------ +-- * Option Specifications +-- ------------------------------------------------------------ + +-- |Flag-type options (not commands) hunk ./Distribution/Setup.hs 122 -data Action = ConfigCmd LocalBuildInfo -- config - | BuildCmd -- build - | InstallCmd -- install - | SDistCmd -- sdist - | PackageInfoCmd -- packageinfo - | RegisterCmd -- register - | UnregisterCmd -- unregister - | NoCmd -- error case? --- | TestCmd 1.0? --- | BDist -- 1.0 --- | CleanCmd -- clean - deriving (Show, Eq) - --- Locate the compiler based on the flavor -exeLoc :: CompilerFlavor -> IO FilePath -exeLoc _ = return "error, not yet implemented" -- FIX - -pkgLoc :: CompilerFlavor -> IO FilePath -pkgLoc _ = return "error, not yet implemented" -- FIX - hunk ./Distribution/Setup.hs 179 - ("install", InstallCmd), + ("install", InstallCmd Nothing), hunk ./Distribution/Simple/Default.hs 70 - (InstallCmd, _) -> doBuildInstall install p + (InstallCmd _, _) -> doBuildInstall install p hunk ./Distribution/Setup.hs 71 + | HelpFlag hunk ./Distribution/Setup.hs 78 -data Action = ConfigCmd LocalBuildInfo -- config +data Action = ConfigCmd [Flag] -- config hunk ./Distribution/Setup.hs 82 - | PackageInfoCmd -- packageinfo + | InfoCmd -- info hunk ./Distribution/Setup.hs 92 -parseArgs :: [String] -> CommandLineOpts -parseArgs _ = (NoCmd, []) +parseArgs :: [String] -> Either [String] CommandLineOpts +parseArgs args + = let (flags, commands, unkFlags, ers) = getOpt Permute options args + in case ers of + _:_ -> Left ers + [] -> case commands of + [] -> Left ["No command detected"] + [h] -> parseCommands h flags unkFlags + _:_ -> Left ["More than one command detected"] + where + parseCommands :: String -- command + -> [Flag] + -> [String] -- unknown flags + -> Either [String] CommandLineOpts + parseCommands "configure" flags unkFlags + | not (any isInstallPrefix flags) + = Right (ConfigCmd flags, unkFlags) + parseCommands "install" [InstPrefix m] unkFlags + = Right (InstallCmd $ Just m, unkFlags) + parseCommands "install" [] unkFlags + = Right (InstallCmd Nothing, unkFlags) + parseCommands "build" [] unkFlags + = Right (BuildCmd, unkFlags) + parseCommands "sdist" [] unkFlags + = Right (SDistCmd, unkFlags) + parseCommands "info" [] unkFlags + = Right (InfoCmd, unkFlags) + parseCommands "register" [] unkFlags + = Right (RegisterCmd, unkFlags) + parseCommands "unregister" [] unkFlags + = Right (UnregisterCmd, unkFlags) + parseCommands c _ _ + = Left $ ["command line syntax error for command: " ++ c] hunk ./Distribution/Setup.hs 126 + isInstallPrefix :: Flag -> Bool + isInstallPrefix (InstPrefix m) = True + isInstallPrefix _ = False + hunk ./Distribution/Setup.hs 134 +optionHelpString :: String -> String +optionHelpString prefix = usageInfo prefix options + hunk ./Distribution/Setup.hs 147 - "specify the directory in which to place installed files" + "specify the directory in which to place installed files", + Option "h?" ["help"] (NoArg HelpFlag) + "get information on options and commands" hunk ./Distribution/Setup.hs 158 - ("packageinfo", ""), + ("info", ""), hunk ./Distribution/Setup.hs 169 - do let basicGhcConfig = (ConfigCmd (LocalBuildInfo "/lib" - (Compiler GHC "/bin/ghc" - "/bin/ghc-pkg")), []) - let realGhcConfig = (ConfigCmd (LocalBuildInfo "" (Compiler Hugs "" "")), []) - - m <- sequence [do loc <- exeLoc comp + do m <- sequence [do loc <- exeLoc comp hunk ./Distribution/Setup.hs 171 - return (name, comp, loc, pkg) - | (name, comp) <- [("ghc", GHC), ("nhc", NHC), ("hugs", Hugs)]] + return (name, comp, loc, pkg, flag) + | (name, comp, flag) <- [("ghc", GHC, GhcFlag), + ("nhc", NHC, NhcFlag), + ("hugs", Hugs, HugsFlag)]] hunk ./Distribution/Setup.hs 186 - TestLabel "Config" $ TestList [ - "config prefix ghc given package tool" ~: "failed" ~: - basicGhcConfig ~=? (parseArgs ["--prefix=/lib", "--ghc", - "--with-compiler=/bin/ghc", - "--with-pkg=/bin/ghc-pkg", - "configure"]), - "find package tool" ~: "failed" ~: - basicGhcConfig ~=? (parseArgs ["--prefix=/lib", "--ghc", - "--with-compiler=/bin/ghc", - "configure"]), - "locate compiler and package tool" ~: "failed" ~: - realGhcConfig ~=? (parseArgs ["configure", "--ghc"]), - "should we default to the current compiler?" ~: "failed" ~: - realGhcConfig ~=? (parseArgs ["configure"])], hunk ./Distribution/Setup.hs 188 - (ConfigCmd (LocalBuildInfo "/usr/local" - (Compiler comp comploc pkgloc)), []) + (Right (ConfigCmd [Prefix "/usr/local", compFlag], [])) hunk ./Distribution/Setup.hs 190 - | (name, comp, comploc, pkgloc) <- m], + | (name, comp, comploc, pkgloc, compFlag) <- m], hunk ./Distribution/Setup.hs 193 - (ConfigCmd (LocalBuildInfo "/usr/local" - (Compiler comp comploc pkgloc)), []) + (Right (ConfigCmd [Prefix "/usr/local", compFlag, + WithCompiler name], [])) hunk ./Distribution/Setup.hs 197 - | (name, comp, comploc, pkgloc) <- m], + | (name, comp, comploc, pkgloc, compFlag) <- m], hunk ./Distribution/Setup.hs 200 - [flag ~: "failed" ~: (flagCmd, []) ~=? (parseArgs [flag]) + [flag ~: "failed" ~: (Right (flagCmd, [])) ~=? (parseArgs [flag]) hunk ./Distribution/Setup.hs 204 - ("packageinfo", PackageInfoCmd), + ("info", InfoCmd), hunk ./Distribution/Simple/Default.hs 68 - case parseArgs args of - (BuildCmd, _) -> doBuildInstall build p - (InstallCmd _, _) -> doBuildInstall install p - (PackageInfoCmd, _) -> print p +-- case parseArgs args of +-- (BuildCmd, _) -> doBuildInstall build p +-- (InstallCmd _, _) -> doBuildInstall install p +-- (InfoCmd, _) -> print p hunk ./Distribution/TODO 7 -** command-line parser (isaac) +** configure step hunk ./Distribution/TODO 15 +* later todo +** command-line parsing errors + hunk ./Distribution/Setup.hs 186 + hunk ./Distribution/Setup.hs 188 - ["locate " ++ name ++ " and pkg tool" ~: "failed" ~: + ["configure parsing for prefix and compiler flag" ~: "failed" ~: hunk ./Distribution/Setup.hs 192 + hunk ./Distribution/Setup.hs 194 - ["locate pkg tool given " ++ name ~: "failed" ~: + ["configure parsing for prefix comp flag, withcompiler" ~: "failed" ~: hunk ./Distribution/Version.hs 108 - -- on the entity that this version applies to, but the following - -- conventions are recommended: - -- - -- * a tag can be of the form @"name=value"@ to specify a - -- property, or simply @name@ to specify a boolean property. - -- - -- * released versions should have the tag @"release"@, - -- - -- * the date of a release or snapshot can be included by - -- giving the tag @"date=@/date/@"@, where /date/ is a - -- date readable by the 'Read' instance for 'ClockTime'. + -- on the entity that this version applies to. hunk ./Distribution/Version.hs 125 --- * Released versions have the tag "release", and are printed --- with the branch only (e.g. 6.2.1) --- --- * Snapshot versions have the tag "date=" and are printed --- with the branch followed by '-' (e.g. 6.2-12-Nov-2004). +-- * Versions are of the form A.B.C-tag1-tag2 +-- +-- * Ordering is determined by lexicographic ordering of the +-- numeric part of the version only. hunk ./Distribution/Version.hs 132 - | "release" `elem` tags - = branch_str - | otherwise - = case getDate tags of - Just date -> branch_str ++ '-' : date - _ -> error "Distribution.Version.showVer: release or date required" - where branch_str = concat (intersperse "." (map show branch)) + = concat (intersperse "." (map show branch)) ++ + concat (map ('-':) tags) hunk ./Distribution/Version.hs 135 - getDate [] = Nothing - getDate (('d':'a':'t':'e':'=':date):_) = Just date - getDate (_:rest) = getDate rest - hunk ./Distribution/Version.hs 357 -release1 = Version{versionBranch=branch1, versionTags=["release"]} -release2 = Version{versionBranch=branch2, versionTags=["release"]} -release3 = Version{versionBranch=branch3, versionTags=["release"]} -release4 = Version{versionBranch=branch4, versionTags=["release"]} -snap = Version{versionBranch=branch3, versionTags=["date=2003.10.31"]} -snapdash = Version{versionBranch=branch3, versionTags=["date=2003-10-31"]} +release1 = Version{versionBranch=branch1, versionTags=[]} +release2 = Version{versionBranch=branch2, versionTags=[]} +release3 = Version{versionBranch=branch3, versionTags=[]} +release4 = Version{versionBranch=branch4, versionTags=[]} hunk ./Distribution/Version.hs 369 - "simple dot date" ~: "failed" ~: Right snap - ~=? doVersionParse "1.2.3-2003.10.31", - "simple dash date" ~: "failed" ~: Right snapdash - ~=? doVersionParse "1.2.3-2003-10-31", hunk ./Distribution/Setup.hs 53 +import Control.Monad.Error hunk ./Distribution/Setup.hs 69 --- |Most of these flags are for Configure, but InstPrefix is for Install. -data Flag = GhcFlag | NhcFlag | HugsFlag - | WithCompiler FilePath | Prefix FilePath - | HelpFlag - -- For install: - | InstPrefix FilePath --- | Verbose | Version? - deriving (Show, Eq) - - -data Action = ConfigCmd [Flag] -- config +data Action = ConfigCmd ConfigFlags -- config hunk ./Distribution/Setup.hs 82 +type ConfigFlags = (Maybe CompilerFlavor, + Maybe FilePath, -- given compiler location + Maybe FilePath) -- prefix + hunk ./Distribution/Setup.hs 103 - = Right (ConfigCmd flags, unkFlags) + = case getConfigFlags flags of + Left err -> Left [err] + Right configFlags -> Right (ConfigCmd configFlags, unkFlags) hunk ./Distribution/Setup.hs 127 +getConfigFlags :: [Flag] -> Either String ConfigFlags +getConfigFlags flags + = do flavor <- getOneOpt [f | Just f <- map convert flags] + prefix <- getOneOpt [f | Prefix f <- flags] + withCom <- getOneOpt [f | WithCompiler f <- flags] + return (flavor,withCom,prefix) + where + convert GhcFlag = Just GHC + convert NhcFlag = Just NHC + convert HugsFlag = Just Hugs + convert _ = Nothing + + getOneOpt [] = return Nothing + getOneOpt [one] = return (Just one) + getOneOpt many = fail "Multiple prefix options" + hunk ./Distribution/Setup.hs 147 +-- |Most of these flags are for Configure, but InstPrefix is for Install. +data Flag = GhcFlag | NhcFlag | HugsFlag + | WithCompiler FilePath | Prefix FilePath + | HelpFlag + -- For install: + | InstPrefix FilePath +-- | Verbose | Version? + deriving (Show, Eq) + hunk ./Distribution/Setup.hs 193 - return (name, comp, loc, pkg, flag) - | (name, comp, flag) <- [("ghc", GHC, GhcFlag), - ("nhc", NHC, NhcFlag), - ("hugs", Hugs, HugsFlag)]] + return (name, comp, loc, pkg) + | (name, comp) <- [("ghc", GHC), + ("nhc", NHC), + ("hugs", Hugs)]] hunk ./Distribution/Setup.hs 211 - (Right (ConfigCmd [Prefix "/usr/local", compFlag], [])) + (Right (ConfigCmd (Just comp, Nothing, Just "/usr/local"), [])) hunk ./Distribution/Setup.hs 213 - | (name, comp, comploc, pkgloc, compFlag) <- m], + | (name, comp, comploc, pkgloc) <- m], hunk ./Distribution/Setup.hs 217 - (Right (ConfigCmd [Prefix "/usr/local", compFlag, - WithCompiler name], [])) + (Right (ConfigCmd (Just comp, Just "/foo/comp", Just "/usr/local"), [])) hunk ./Distribution/Setup.hs 219 - "--with-compiler="++name, "configure"]) - | (name, comp, comploc, pkgloc, compFlag) <- m], + "--with-compiler=/foo/comp", "configure"]) + | (name, comp, comploc, pkgloc) <- m], hunk ./Distribution/Setup.hs 229 - ]] + ] + ] hunk ./Distribution/TODO 9 +** help action without command... help command? hunk ./Distribution/TODO 20 -** testing of altered version of getopt -** Parsing of command-line opts -** passing unknown options through. +** error cases for parsing command-line args hunk ./Distribution/Setup.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} + hunk ./Distribution/Setup.hs 46 -module Distribution.Setup (parseArgs, Action(..), hunitTests) where +module Distribution.Setup (parseArgs, Action(..), ConfigFlags, +#ifdef DEBUG + hunitTests, +#endif + ) where hunk ./Distribution/Setup.hs 133 +-- Converts the abstract "flag" type to a more concrete type. addfile ./Distribution/Simple/Configure.hs addfile ./Distribution/Simple/Register.hs move ./Distribution/Simple/Default.hs ./Distribution/Simple.hs hunk ./Distribution/InstalledPackageInfo.hs 5 -import Distribution.Misc(License(..), Dependency, Opt, LocalBuildInfo) +import Distribution.Misc(License(..), Dependency, Opt) hunk ./Distribution/InstalledPackageInfo.hs 36 -getUseInfo :: LocalBuildInfo -> PackageConfig -> InstalledPackageInfo -getUseInfo _ _ = emptyInstalledPackageInfo -- FIX - hunk ./Distribution/Misc.hs 44 -module Distribution.Misc(License(..), Dependency, - Extension, Opt, LocalBuildInfo(..), - CompilerFlavor(..), Compiler(..), - writePersistBuildConfig, getPersistBuildConfig) +module Distribution.Misc(License(..), Dependency, Extension, Opt) hunk ./Distribution/Misc.hs 50 --- * Compiler --- ------------------------------------------------------------ - -data CompilerFlavor = GHC | NHC | Hugs | HBC | Helium | OtherCompiler String - deriving (Show, Eq) - -data Compiler = Compiler {flavor :: CompilerFlavor, - path :: FilePath, - packagingTool :: FilePath} - deriving (Show, Eq) - -emptyCompiler :: Compiler -emptyCompiler = Compiler (OtherCompiler "") "" "" - --- ------------------------------------------------------------ --- * build config --- ------------------------------------------------------------ - --- |Data cached after configuration step. -data LocalBuildInfo = LocalBuildInfo {prefix :: String, - compiler :: Compiler} - deriving (Show, Eq) - -emptyLocalBuildInfo :: LocalBuildInfo -emptyLocalBuildInfo = LocalBuildInfo "" emptyCompiler - -getPersistBuildConfig :: IO LocalBuildInfo -getPersistBuildConfig = return emptyLocalBuildInfo -- FIX - -writePersistBuildConfig :: LocalBuildInfo -> IO () -writePersistBuildConfig _ = return () --FIX - --- ------------------------------------------------------------ hunk ./Distribution/ModuleTest.hs 54 -import Distribution.Simple.Default() +import Distribution.Simple() hunk ./Distribution/ModuleTest.hs 57 +import Distribution.Simple.Configure() +import Distribution.Simple.Register() hunk ./Distribution/Package.hs 50 -import Distribution.Misc(License, Dependency, Extension, CompilerFlavor) +import Distribution.Misc(License, Dependency, Extension) +import Distribution.Setup(CompilerFlavor) hunk ./Distribution/Setup.hs 47 + CompilerFlavor(..), Compiler(..), hunk ./Distribution/Setup.hs 54 -import Distribution.Misc(LocalBuildInfo, CompilerFlavor(..), - Compiler(..), LocalBuildInfo(..)) hunk ./Distribution/Setup.hs 57 +#ifdef DEBUG hunk ./Distribution/Setup.hs 59 +#endif + hunk ./Distribution/Setup.hs 63 --- Locate the compiler based on the flavor -exeLoc :: CompilerFlavor -> IO FilePath -exeLoc _ = return "error, not yet implemented" -- FIX - -pkgLoc :: CompilerFlavor -> IO FilePath -pkgLoc _ = return "error, not yet implemented" -- FIX - hunk ./Distribution/Setup.hs 67 +data CompilerFlavor = GHC | NHC | Hugs | HBC | Helium | OtherCompiler String + deriving (Show, Eq) + +data Compiler = Compiler {compilerFlavor:: CompilerFlavor, + compilerPath :: FilePath, + compilerPkgTool :: FilePath} + deriving (Show, Eq) + +emptyCompiler :: Compiler +emptyCompiler = Compiler (OtherCompiler "") "" "" + hunk ./Distribution/Setup.hs 101 - = let (flags, commands, unkFlags, ers) = getOpt Permute options args + = let (flags, commands', unkFlags, ers) = getOpt Permute options args hunk ./Distribution/Setup.hs 104 - [] -> case commands of + [] -> case commands' of hunk ./Distribution/Setup.hs 136 - isInstallPrefix (InstPrefix m) = True + isInstallPrefix (InstPrefix _) = True hunk ./Distribution/Setup.hs 154 - getOneOpt many = fail "Multiple prefix options" + getOneOpt _ = fail "Multiple prefix options" hunk ./Distribution/Setup.hs 201 - +#ifdef DEBUG hunk ./Distribution/Setup.hs 204 - do m <- sequence [do loc <- exeLoc comp - pkg <- pkgLoc comp - return (name, comp, loc, pkg) - | (name, comp) <- [("ghc", GHC), - ("nhc", NHC), - ("hugs", Hugs)]] - let (flags, commands, unkFlags, ers) + do let m = [("ghc", GHC), ("nhc", NHC), ("hugs", Hugs)] + let (flags, commands', unkFlags, ers) hunk ./Distribution/Setup.hs 212 - "getOpt commands" ~: "failed" ~: ["configure", "foobar"] ~=? commands, + "getOpt commands" ~: "failed" ~: ["configure", "foobar"] ~=? commands', hunk ./Distribution/Setup.hs 221 - | (name, comp, comploc, pkgloc) <- m], + | (name, comp) <- m], hunk ./Distribution/Setup.hs 228 - | (name, comp, comploc, pkgloc) <- m], + | (name, comp) <- m], hunk ./Distribution/Setup.hs 239 +#endif hunk ./Distribution/Simple/Build.hs 45 -import Distribution.Misc(LocalBuildInfo) +import Distribution.Simple.Configure(LocalBuildInfo) hunk ./Distribution/Simple/Configure.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.Configure +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.Configure (writePersistBuildConfig, + getPersistBuildConfig, + LocalBuildInfo(..)) + where + +import Distribution.Setup(CompilerFlavor, Compiler) + +-- |Data cached after configuration step. +data LocalBuildInfo = LocalBuildInfo {prefix :: String, + compiler :: Compiler} + deriving (Show, Eq) + +emptyLocalBuildInfo :: LocalBuildInfo +emptyLocalBuildInfo = undefined + +getPersistBuildConfig :: IO LocalBuildInfo +getPersistBuildConfig = return emptyLocalBuildInfo -- FIX + +writePersistBuildConfig :: LocalBuildInfo -> IO () +writePersistBuildConfig _ = return () --FIX + +-- Locate the compiler based on the flavor +exeLoc :: CompilerFlavor -> IO FilePath +exeLoc _ = return "error, not yet implemented" -- FIX + +pkgLoc :: CompilerFlavor -> IO FilePath +pkgLoc _ = return "error, not yet implemented" -- FIX + hunk ./Distribution/Simple/Install.hs 47 -import Distribution.Misc(LocalBuildInfo) +import Distribution.Simple.Configure(LocalBuildInfo) hunk ./Distribution/Simple/Register.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.Register +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.Register where + +import Distribution.Simple.Configure(LocalBuildInfo) +import Distribution.Package(PackageConfig) +import Distribution.InstalledPackageInfo(InstalledPackageInfo) + +getUseInfo :: LocalBuildInfo -> PackageConfig -> InstalledPackageInfo +getUseInfo _ _ = undefined hunk ./Distribution/Simple.hs 3 --- Module : Distribution.Simple.Default +-- Module : Distribution.Simple hunk ./Distribution/Simple.hs 44 -module Distribution.Simple.Default (defaultMain) +module Distribution.Simple (defaultMain) hunk ./Distribution/Simple.hs 52 -import Distribution.Misc(LocalBuildInfo(..), getPersistBuildConfig) hunk ./Distribution/Simple.hs 54 +import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig) hunk ./Distribution/TODO 6 -** Version (simonMar) hunk ./Distribution/TODO 100 +groupAllBy :: (a -> a -> Bool) -> [a] -> [[a]] +groupAllBy fun (h:t) + = let (groups, rem') = (partition (fun h) t) + in if null groups + then [h]:(groupAllBy fun rem') + else (h:groups):(groupAllBy fun rem') +groupAllBy _ [] = [] + + + hunk ./Distribution/Setup.hs 48 + optionHelpString, hunk ./Distribution/Setup.hs 89 - | NoCmd -- error case? + | HelpCmd -- help hunk ./Distribution/Setup.hs 93 +-- | NoCmd -- error case? hunk ./Distribution/Setup.hs 106 - [] -> case commands' of - [] -> Left ["No command detected"] - [h] -> parseCommands h flags unkFlags - _:_ -> Left ["More than one command detected"] + [] -> if HelpFlag `elem` flags then + Right (HelpCmd, unkFlags) + else case commands' of + [] -> Left ["No command detected"] + [h] -> parseCommands h flags unkFlags + _:_ -> Left ["More than one command detected"] hunk ./Distribution/Simple/Configure.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} hunk ./Distribution/Simple/Configure.hs 47 - LocalBuildInfo(..)) + LocalBuildInfo(..), + configure) hunk ./Distribution/Simple/Configure.hs 51 -import Distribution.Setup(CompilerFlavor, Compiler) +import Distribution.Setup(ConfigFlags,CompilerFlavor(..), Compiler(..)) +import Distribution.Package(PackageConfig(..)) hunk ./Distribution/Simple/Configure.hs 54 +import System.IO +import System.Exit +import System.Directory +import System.Environment ( getEnv ) +import Control.Monad ( when ) + +#ifdef DEBUG +import HUnit +#endif + hunk ./Distribution/Simple/Configure.hs 78 --- Locate the compiler based on the flavor -exeLoc :: CompilerFlavor -> IO FilePath -exeLoc _ = return "error, not yet implemented" -- FIX +-- ----------------------------------------------------------------------------- +-- Configuration hunk ./Distribution/Simple/Configure.hs 81 -pkgLoc :: CompilerFlavor -> IO FilePath -pkgLoc _ = return "error, not yet implemented" -- FIX +configure :: PackageConfig -> ConfigFlags -> IO LocalBuildInfo +configure pkgconfig (maybe_hc_flavor, maybe_hc_path, maybe_prefix) + = do + -- prefix + let prefix = case maybe_prefix of + Just path -> path + Nothing -> system_default_prefix pkgconfig hunk ./Distribution/Simple/Configure.hs 89 + -- detect compiler + compiler <- configCompiler maybe_hc_flavor maybe_hc_path pkgconfig + return LocalBuildInfo{prefix=prefix, compiler=compiler} hunk ./Distribution/Simple/Configure.hs 93 +system_default_prefix PackageConfig{package=package} = +#ifdef mingw32_TARGET_OS + "C:\Program Files\" ++ pkgName package +#else + "/usr" +#endif + +-- ----------------------------------------------------------------------------- +-- Determining the compiler details + +configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> PackageConfig + -> IO Compiler + +configCompiler (Just flavor) (Just path) pkgconfig + = do pkgtool <- guessPkgToolFromHCPath flavor path + return (Compiler{compilerFlavor=flavor, + compilerPath=path, + compilerPkgTool=pkgtool}) + +configCompiler (Just flavor) Nothing pkgconfig + = do path <- findCompiler flavor + pkgtool <- guessPkgToolFromHCPath flavor path + return (Compiler{compilerFlavor=flavor, + compilerPath=path, + compilerPkgTool=pkgtool}) + +configCompiler Nothing maybe_path pkgconfig + = configCompiler (Just defaultCompilerFlavor) maybe_path pkgconfig + +defaultCompilerFlavor = +#if defined(__GLASGOW_HASKELL__) + GHC +#elif defined(__NHC__) + NHC +#elif defined(__HUGS__) + Hugs +#endif + +findCompiler :: CompilerFlavor -> IO FilePath +findCompiler flavor = findBinary (compilerBinaryName flavor) + -- ToDo: check that compiler works? check compiler version? + +compilerBinaryName GHC = "ghc" +compilerBinaryName NHC = "nhc98" +compilerBinaryName Hugs = "hugs" + +compilerPkgToolName GHC = "ghc-pkg" +compilerPkgToolName NHC = "nhc98-pkg" +compilerPkgToolName Hugs = "hugs-pkg" + +guessPkgToolFromHCPath :: CompilerFlavor -> FilePath -> IO FilePath +guessPkgToolFromHCPath flavor path + = do let (dir,_) = splitFilenameDir path + pkgtool = dir ++ '/':compilerPkgToolName flavor + exists <- doesFileExist pkgtool + when (not exists) $ + die ("Cannot find package tool: " ++ pkgtool) + return pkgtool + +findBinary :: String -> IO FilePath +findBinary binary = do + path <- getEnv "PATH" + search (parsePath path) + where + search :: [FilePath] -> IO FilePath + search [] = die ("Cannot find compiler for " ++ binary) + search (d:ds) = do + let path = d ++ '/':binary + b <- doesFileExist path + if b then return path else search ds + +parsePath :: String -> [FilePath] +parsePath path = split pathSep path + where +#ifdef mingw32_TARGET_OS + pathSep = ';' +#else + pathSep = ':' +#endif + +-- ----------------------------------------------------------------------------- +-- Utils + +-- "foo/bar/xyzzy.ext" -> ("foo/bar", "xyzzy.ext") +splitFilenameDir :: String -> (String,String) +splitFilenameDir str + = let (dir, rest) = split_longest_prefix str isPathSeparator + real_dir | null dir = "." + | otherwise = dir + in (real_dir, rest) + +split :: Char -> String -> [String] +split c s = case rest of + [] -> [chunk] + _:rest -> chunk : split c rest + where (chunk, rest) = break (==c) s + +split_longest_prefix :: String -> (Char -> Bool) -> (String,String) +split_longest_prefix s pred + = case pre of + [] -> ([], reverse suf) + (_:pre) -> (reverse pre, reverse suf) + where (suf,pre) = break pred (reverse s) + +isPathSeparator :: Char -> Bool +isPathSeparator ch = +#ifdef mingw32_TARGET_OS + ch == '/' || ch == '\\' +#else + ch == '/' +#endif + +die :: String -> IO a +die msg = do hPutStr stderr msg; exitWith (ExitFailure 1) + +#ifdef DEBUG +hunitTests :: IO [Test] +hunitTests = do + let simonMarGHCLoc = "/home/simonmar/fp/bin/i386-unknown-linux/ghc" + simonMarGHC <- configure PackageConfig{} (Just GHC, + Just simonMarGHCLoc, + Nothing) + return $ [TestLabel "Configure Testing" $ TestList [ + "finding ghc, etc on simonMar's machine" ~: "failed" ~: + (LocalBuildInfo "/usr" (Compiler GHC + simonMarGHCLoc + (simonMarGHCLoc ++ "-pkg"))) + ~=? simonMarGHC]] +#endif + hunk ./Distribution/Simple.hs 51 -import Distribution.Setup(parseArgs, Action(..)) +import Distribution.Setup(parseArgs, Action(..), optionHelpString) hunk ./Distribution/Simple.hs 57 +import System.IO + hunk ./Distribution/Simple.hs 70 --- case parseArgs args of + case parseArgs args of + Right (HelpCmd, _) -> hPutStr stderr (optionHelpString helpprefix) + hunk ./Distribution/Simple.hs 78 +helpprefix :: String +helpprefix = "Syntax: ./Setup.hs command [flags]\n" + hunk ./Distribution/TODO 6 +** make "configure" more verbose hunk ./Distribution/TODO 9 -** help action without command... help command? hunk ./Distribution/TODO 17 +** elaborate command-line help text addfile ./Distribution/Simple/Utils.hs adddir ./test addfile ./test/Setup.hs hunk ./Distribution/Setup.hs 69 - deriving (Show, Eq) + deriving (Show, Read, Eq) hunk ./Distribution/Setup.hs 74 - deriving (Show, Eq) + deriving (Show, Read, Eq) hunk ./Distribution/Simple/Configure.hs 53 +import Distribution.Simple.Utils (splitFilenameDir, die, split) hunk ./Distribution/Simple/Configure.hs 68 - deriving (Show, Eq) + deriving (Show, Read, Eq) hunk ./Distribution/Simple/Configure.hs 74 -getPersistBuildConfig = return emptyLocalBuildInfo -- FIX +getPersistBuildConfig = do + str <- readFile localBuildInfoFile + return (read str) hunk ./Distribution/Simple/Configure.hs 79 -writePersistBuildConfig _ = return () --FIX +writePersistBuildConfig lbi = do + writeFile localBuildInfoFile (show lbi) hunk ./Distribution/Simple/Configure.hs 82 +localBuildInfoFile :: FilePath +localBuildInfoFile = "./.setup-config" + hunk ./Distribution/Simple/Configure.hs 181 --- Utils +-- Tests hunk ./Distribution/Simple/Configure.hs 183 --- "foo/bar/xyzzy.ext" -> ("foo/bar", "xyzzy.ext") -splitFilenameDir :: String -> (String,String) -splitFilenameDir str - = let (dir, rest) = split_longest_prefix str isPathSeparator - real_dir | null dir = "." - | otherwise = dir - in (real_dir, rest) - -split :: Char -> String -> [String] -split c s = case rest of - [] -> [chunk] - _:rest -> chunk : split c rest - where (chunk, rest) = break (==c) s - -split_longest_prefix :: String -> (Char -> Bool) -> (String,String) -split_longest_prefix s pred - = case pre of - [] -> ([], reverse suf) - (_:pre) -> (reverse pre, reverse suf) - where (suf,pre) = break pred (reverse s) - -isPathSeparator :: Char -> Bool -isPathSeparator ch = -#ifdef mingw32_TARGET_OS - ch == '/' || ch == '\\' -#else - ch == '/' -#endif - -die :: String -> IO a -die msg = do hPutStr stderr msg; exitWith (ExitFailure 1) - hunk ./Distribution/Simple/Utils.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.Utils +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.Utils ( + splitFilenameDir, + split, + isPathSeparator, + die + ) where + +import System.IO +import System.Exit + +-- "foo/bar/xyzzy.ext" -> ("foo/bar", "xyzzy.ext") +splitFilenameDir :: String -> (String,String) +splitFilenameDir str + = let (dir, rest) = split_longest_prefix str isPathSeparator + real_dir | null dir = "." + | otherwise = dir + in (real_dir, rest) + +split :: Char -> String -> [String] +split c s = case rest of + [] -> [chunk] + _:rest -> chunk : split c rest + where (chunk, rest) = break (==c) s + +split_longest_prefix :: String -> (Char -> Bool) -> (String,String) +split_longest_prefix s pred + = case pre of + [] -> ([], reverse suf) + (_:pre) -> (reverse pre, reverse suf) + where (suf,pre) = break pred (reverse s) + +isPathSeparator :: Char -> Bool +isPathSeparator ch = +#ifdef mingw32_TARGET_OS + ch == '/' || ch == '\\' +#else + ch == '/' +#endif + +die :: String -> IO a +die msg = do hPutStr stderr msg; exitWith (ExitFailure 1) + hunk ./Distribution/Simple.hs 44 -module Distribution.Simple (defaultMain) -where +module Distribution.Simple ( + module Distribution.Package, + License(..), Version(..), + defaultMain, emptyPackageConfig, + ) where hunk ./Distribution/Simple.hs 53 -import Distribution.Package(PackageConfig(..)) +import Distribution.Package hunk ./Distribution/Simple.hs 57 -import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig) +import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, + configure, writePersistBuildConfig) hunk ./Distribution/Simple.hs 60 +import Distribution.Simple.Utils (die) +import Distribution.Misc (License(..)) +import Distribution.Version (Version(..)) hunk ./Distribution/Simple.hs 65 +import Control.Monad ( when ) +import Data.List ( intersperse ) hunk ./Distribution/Simple.hs 77 -defaultMain p +defaultMain pkgconfig hunk ./Distribution/Simple.hs 82 + Right (ConfigCmd flags, extra_flags) -> do + when (not (null extra_flags)) $ do + die ("Unrecognised flags: " ++ + concat (intersperse "," (extra_flags))) + localbuildinfo <- configure pkgconfig flags + writePersistBuildConfig localbuildinfo + hunk ./Distribution/Simple.hs 94 +emptyPackageConfig :: PackageConfig +emptyPackageConfig + = PackageConfig {package = undefined, + licenese = AllRightsReserved, + copyright = "", + maintainer = "", + stability = "", + buildDepends = [], + sources = [], + extensions = [], + library = "", + extraLibs = [], + includeDirs = [], + includes = [], + options = [] + } + hunk ./Distribution/TODO 7 -** configure step -** cross-platform compiler location(simonmar?) hunk ./Distribution/TODO 14 +** writePersistBuildConfig robustify + diagnostics hunk ./test/Setup.hs 1 +module Main where + +import Distribution.Simple + +pkgconfig = emptyPackageConfig { + package = PackageIdentifier "test" (Version [1,0] []) + } + +main = defaultMain pkgconfig hunk ./doc/libraryInfrastructure.sgml 86 - -
What we are trying to achieve hunk ./doc/libraryInfrastructure.sgml 87 - On a high level, we say that we want the system to help the - user to install packages (whether they be libraries or applications) - and their dependencies. The system should work - with operating-system-level package managers - (such as &dpkg;, &rpm;, and FreeBSD's Ports system) rather than - replacing them. For operating systems without the luxury of a - package manager, we propose to add a Haskell-specific package - manager. - - To accomplish this, we propose a system similar to Python's - &distutils; () where each - Haskell tool is distributed with a script () that has a standard command-line - interface. This script will provide a familiar user interface - () for compiling, installing, and - removing packages and their dependencies. - - For instance, to install the &hunit; package, the user might - install it with their package manager, if available - (apt-get install hunit-hugs for instance) or - download the source code from the web site, change into the &hunit; - directory, and type ./Setup.lhs install default, - which would build and install the &hunit; package for the default - compiler. Similarly, he might type ./Setup.lhs install - nhc to install the package for &nhc;. - - Other tasks might be necessary to make the package known to - the system, such as registering it with the &impl; of interest - (). Such tasks would also be - performed by this Setup program. - - -
Issues Facing Developers - - There are a number of issues facing developers of Haskell - software when they decide to deploy their work. - - - - Binary incompatibility between Haskell - Implementations and between versions of some implementations make it - very difficult to distribute binary libraries: if they are expected - to work together, all of the libraries on a user's system need to be - built with the same compiler. This makes it a virtual necessity - that the source code for a Haskell library be distributed to the end - user of that library, although other options exist for systems like - Debian () which have - auto-builders. - - Compilation is difficult: It was noted above that it - is usually necessary to distribute the source code for Haskell tools - to the end user. The end user has to compile each Haskell tool they - use, but the task of compilation is complicated by a plethora of - preprocessors (such as arrowp and greencard) and interfaces with - non-Haskell libraries (such as Java, X, C, and GTK). Further, there - is no way to formally express dependencies between Haskell tools, so - the users have to visit the home pages of the projects they're - interested in and find the dependencies. - - The &impls; are not completely compatible either: - They support different extensions, different libraries, different - binary formats, different flags, and different packaging - systems. - - Given that compilation is difficult in and of - itself, it is further complicated by a wide variety of target - platforms that it is desirable to support. These systems may treat - files differently (copying of files, path names) or have different - defaults for where to put compiled files or source code to make them - available to the user. The variety of &impls; and target platforms - make writing of a generic build system that "just works" very - difficult. - - Having managed to compile and install all of the - Haskell software they need, if a user installs a new compiler (or - version thereof), all this work needs to be redone. All of the - libraries on the system will have to be recompiled to match the - version of that compiler (this is apparently a bigger problem with - GHC than with NHC, and not much of a problem with - Hugs.) - - - - Compare this to the experience of installing a typical library - or tool written in C or C++ on a Debian GNU/Linux system: The user - consults a database of known programs (which is stored on her - computer) and runs a single command to install that package. The - package management tool figures out the dependencies, downloads all - dependencies downloads the package, and installs them in the proper - order. The packages are already compiled by a set of central - servers. In fact, there is no reason that this kind of interface - can't be available to the end user except for the difficulty of - creating binary packages. (See ) - -
Issues Facing Packagers - - There are roughly speaking, three different kinds of - operating-system package systems: source distributions (FreeBSD, - Gentoo), binary distributions (Debian, RPM), and language-specific - distributions (CPAN, XEmacs). What we are proposing to create is a - language-specific distribution that assists in the creation of both - source and binary packages for other operating systems. - - As mentioned above, it is possible to create an operating - system package for a Haskell library. Indeed, its no harder to - create a Haskell package than any other kind of package; Haskell - packages are harder to maintain, however. For instance, in the - Debian GNU/Linux system (), - which is a binary distribution, there is currently no way to express - that a library needs to be recompiled when a new compiler is - uploaded to the autobuilders. Currently, the only solution is to - re-upload library packages to the autobuilders at the same time you - upload a new &impl;. Similarly for Redhat, binary packages have to - include the version number for &ghc; that they were compiled - with. - - In a source distribution like FreeBSD (), this isn't a problem, since the - end user compiles all of their software themselves. However, when the - end user compiles and installs a new &impl;, all of the libraries - compiled with the old &impl; will no longer work and need to be - recompiled. As I understand it, there is currently no means of - performing this operation automatically. - - Emacs / XEmacs presents packagers with some of the same - issues; they are both, practically speaking, Lisp compilers, and - incompatible, much like different versions of &impls;. When an - elisp package is installed on Debian, it gets compiled automatically - (on the end user's machine) for each version of Emacs / XEmacs that - is installed. This procedure is orthogonal to the XEmacs Packaging - System () and is a duplication - of effort in some cases, but that is really the only way to make it - work with Debian. This has some ugly properties from Debian's - standpoint: once compiled, there are files in the operating system - that the packaging system doesn't know about. These are similar to - issues that Haskell packagers for Debian will have to face. - -
- -
Why We Should Solve This - - - - We need to evolve a decentralized way of - distributing libraries. The current model of distributing them with - the &impls; puts too much strain upon the &impl; authors, and is not - sustainable in the long-term. If this continues, availability and - reliability of libraries will suffer, and Haskell itself will suffer - in the long-term as a rich set of libraries is becoming the standard - for successful programming languages. - - If we can help operating system packagers build - packages (Debian, RPM, etc.), then we'll have more happy end - users. - - If we lower the cost of evaluating Haskell and - Haskell tools, more people might try them out. - - Many Haskell programs are developed as research - prototypes and abandoned. The subsequent bitrot makes it difficult - for the community to take over the projects. Formally specifying - versioned dependencies and creating a central repository for Haskell - tools can help solve this problem. - - Active participation with the rest of the Free - Software community (inclusion of Haskell in OS distributions, - interoperability between Haskell tools and external libraries) can - bring attention to Haskell and perhaps bring more talented - developers into The Flock. - - - - -
- -
-
- - - hunk ./doc/libraryInfrastructure.sgml 89 -
The Haskell Library Infrastructure +The Haskell Library Infrastructure: goals hunk ./doc/libraryInfrastructure.sgml 91 -The Haskell Library Infrastructure (HLI) is a framework and supporting -code aimed at the above problem. It is Haskell-specific, but independent of -any particular Haskell implementation (Hugs, GHC, etc) or platform (Unix, Windows, etc). +The Haskell Library Infrastructure (HLI) has the following main goal: +to specify a standard way in which a Haskell library can be packaged, so that it is +easy for consumers to use it, or re-package it, +regardless of the Haskell implementation or installation platform. hunk ./doc/libraryInfrastructure.sgml 96 -We use the term ``compiler'' to mean GHC, Hugs, nhc, hbc, etc. Even though -Hugs isn't really a compiler, the term is less clumsy than ``Haskell implementation''. +The HLI also +supports library authors by providing an instrastructure that automates the +process of building and packaging simple libraries. It is not necessary to use +this code --- indeed complex libraries may exceed its abilities --- but it should +handle 75% of the cases with no trouble. hunk ./doc/libraryInfrastructure.sgml 102 -
Packages - -A package is the unit of distribution. -A package has explicit dependencies on other packages. - -
- -
What the compilers must implement - -The HLI requires that the Haskell implementations be somewhat package-aware. -This section documents those requirements - -
Registering a package - -Installing a package ultimately involves these steps: +The HLI serves a number of different people: hunk ./doc/libraryInfrastructure.sgml 104 - - Compiling the source files, by invoking the compiler. Even Hugs may require - some processing (e.g running cpp) - + + Joe User is simply a Haskell user. He does not download new pacakges. Nevertheless, +he needs to know about his Haskell compiler's -package flag . + + + + Bob the Builder and Sam Sysadmin both download, build, + and install new pacakges. The only difference between the two is that Sam has root permission, + and can install pacakges in more globally-visible places. + + + + Roland RPM, Donald Debian, and Willie Windows + build Linux RPM, Debian, and Windows installer packages respectively. (This list is not exhaustive.) + They do this as a service for Angela Author, and may know little or nothing about the internal details + of the Haskell packages they are wrapping up. + + + + Angela Author wants to write a simple Haskell library, and distribute it with +minimum fuss, in such a way that all the above folk can easily use it. + + + + Marcus Makefile is like Angela, but more sophisticated. He has a complicated library, +and uses makefiles. Still, he wants to arrange that Roland, Donald, Bob, Sam, and Joe don't need to know +about his internal complexity. + + + +We describe Angela and Marcus as producers of their packages, and all the others +as package consumers. + + hunk ./doc/libraryInfrastructure.sgml 139 - - Copying the compiled files into some place. Typically the compiler - places no pre-conditions on where "some place" is; instead one - usually follows the conventions of the host operating system. - hunk ./doc/libraryInfrastructure.sgml 140 - - Registering the package: telling the compiler about the - existence of the package, and where its files are. - - -In step (c), the compiler records the package information in some -implementation-specific way; how it does so is not constrained by the HLI. -To register the package one invokes a compiler-specific program (ghc-pkg, -hugs-pkg etc), passing it a file describing the package. The format of this -file is independent of the compiler. +The Haskell Library Infrastructure: overview hunk ./doc/libraryInfrastructure.sgml 142 -It must be possible to register many versions of the same package. +This section summarises the vocabulary and main features of the Haskell Library Infrastructure. hunk ./doc/libraryInfrastructure.sgml 144 -A complete program -can include more than one version of the same package. For example, the user might use -package A:2.1 and B:1.0; but B might use A:1.9. -
+Packages hunk ./doc/libraryInfrastructure.sgml 146 -
Module imports - - -Installing a package means that subsequent invocations of the compiler will use a module namespace -augmented by the newly-installed package. - - -By default, the module namespace is populated only by the latest version of a particular package. -This can be overridden using the -package flag. (Question: what does -package hunit:1.2 -package hunit:1.3 do? -Does the second override the first? Or are they both in scope? I think the former.) - - -An attempt to import a module that is defined by more than one installed package yields an ambiguous-import -error, rather like an attempt to use an identifier that is defined by more than one imported module. -(Comment: there ought be some way to resolve such ambiguities. Per-import qualification? -disable-package X? --package Y specifies winner?) - -
- -
The interface to <function>X-pkg</function> - -Each Haskell implementation X must provide an associated program X-pkg which -allows a user to make a new package known to the compiler, and to ask what packages it knows. +A package is the unit of distribution for HLI. +Each package has a package description (PD) +that consists of: hunk ./doc/libraryInfrastructure.sgml 150 - X-pkg register hunit-config -or - X-pkg register < hunit-config. - - The syntax of the package install configuration, here hunit-config, is given below. +A globally-unique package name, containing no spaces. Chaos will result +if two distinct packages with the same name are installed on the same system. We need a +global web server where authors can claim and record package names. hunk ./doc/libraryInfrastructure.sgml 154 - - - X-pkg query "hunit" - - returns the version(s) of all hunit packages, latest version first. +A version, consisting of a sequence of one or more integers. hunk ./doc/libraryInfrastructure.sgml 158 -X-pkg query "hunit" 4.3.1 - - returns the package install configuration of hunit 4.3.1, in the same syntax - understood by X-pkg register, if it exists; or - the empty string otherwise. - - -
+A list of explicit dependencies on other packages. These are typically not exact; e.g. "I need hunit version +greater than 2.4". + + + +A list of exposed modules. Not all of the modules that comprise a package implementation are necessarily +exposed to a pacakge client. +The ability to expose some, but not all, of the modules making up a package +is rather like using an explicit export list on a Haskell module. + + +More detailed information about the make-up of the package and how to build it. +The full details are given in . + + +The first two components can be combined to form a single text string called the package ID, +using a hyphen to separate the version +from the name, and dots to separate the version components. For example, "hunit-2.3". + hunk ./doc/libraryInfrastructure.sgml 178 -
Syntax of package install configuration + hunk ./doc/libraryInfrastructure.sgml 180 -...include the list of ``externally visible modules''. -
-
+Package distributions hunk ./doc/libraryInfrastructure.sgml 182 - -
Installing a package: the end user viewpoint - -Joe User wants to install a new Haskell library, say HUnit, for GHC. How he does this depends on -how the library is packaged: - -Debian: - Joe says: - - apt-get install hunit-ghc - -And that's all. -Any packages that hunit-ghc depends on are automatically installed as well. - - -Linux RPM: - Joe says: -... -(Dependencies?) - - -Windows installer: - -Joe downloads hunit-ghc.msi, and double-clicks on it. -(Dependencies?) - - -Binary tar-ball: - -A binary tarball is a bunch of files, already precompiled and ready to install. -Joe downloads hunit-ghc.tar, unpacks the tarball in some temporary location, cd's to the root directory -and says - - ./setup.hs install - -or - - runhugs setup.hs install - -(or whatever is necessary to run the setup.hs Haskell script). -The script setup.hs does whatever is necessary to install the library. - - -(Dependencies?) - - -Source tar-ball: - -A source tarball contains the library sources, which may need to be +A HLI package can be distributed in several forms: + + +A HLI source distribution is a tree of files (tar-ball, zip file etc) +containing the library sources, which may need to be hunk ./doc/libraryInfrastructure.sgml 188 -Haskell implementations. Joe downloads and unpacks the tarball hunit-src.tar, and then says - - ./setup.hs configure ghc - ./setup.hs build - ./setup.hs install - -The configuration step checks at least that (a) the package author indeed intends the package to be buildable -with GHC, and that a sufficiently up-to-date GHC is available, and (b) checks that the packages on which -hunit depends are already installed for GHC. After that the build and install steps know what -compiler they are using. - -Question: can you abbreviate to setup install ghc? - - - +Haskell implementations. + +A source distribution may contain fewer files than appear in the developer's CVS repository; for example, +design notes may be omitted. It may also contain some derived files, that do not appear in the +the developer's repository; for example, ones made by a somewhat exotic pre-processor where it +seems simpler to ship the derived file than to ensure that all consumers have the pre-processor. + + +A HLI binary distribution is a tree of files that contains a pre-compiled library, ready +for installation. The pre-compilation means that the distribution will be Haskell-compiler-specific. + + + +The library may be packaged as an RPM, Debian distribution, +or Windows installer. (This list is not exhaustive.) +In that case, the way it is installed is prescribed by the respective distribution mechanism; +the only role of the HLI is to make it easy to construct such distributions. All three are +compiler-specific binary distributions. + + + + hunk ./doc/libraryInfrastructure.sgml 211 -
<function>setup</function> targets +Compilers hunk ./doc/libraryInfrastructure.sgml 213 - -Here is a specification of the complete command-line interface for the setup.hs program -that must be delivered with a package: +We use the term ``compiler'' to mean GHC, Hugs, nhc, hbc, etc. (Even though +Hugs isn't really a compiler, the term is less clumsy than ``Haskell implementation''.) + + The +HLI requires that a conforming Haskell compiler is somewhat package aware. +In summary, the requirements are these: hunk ./doc/libraryInfrastructure.sgml 220 - - setup configure - --with-compiler=ghc/hugs/nhc - --with-compiler-flags=-O - --prefix = xxx - -- what else? +Each compiler hc must provide an associated package-management +program hc-pkg. A compiler user installs a package by placing the package's +supporting files somewhere, and then using hc-pkg to make the compiler aware +of the new package. hunk ./doc/libraryInfrastructure.sgml 225 - - -setup build +Subsequent invocations of hc will include modules from the +new package in the module name space (i.e. visible to imnport statements). hunk ./doc/libraryInfrastructure.sgml 228 - hunk ./doc/libraryInfrastructure.sgml 229 -setup install +The compiler should support a -package flag for finer-grain control +of package visibility. hunk ./doc/libraryInfrastructure.sgml 233 -It is expected that setup.hs will record the results of setup configure -in a file (and in a format) of its choosing. -
-
+A complete specification of these requirements is given in . + +
hunk ./doc/libraryInfrastructure.sgml 237 -
Building a package: the author's viewpoint +The Setup script hunk ./doc/libraryInfrastructure.sgml 239 -Angela Author has written a bunch of Haskell modules that she wants to package as a library. -What does she have to do? -She must simply build a package that can be installed as described above: nothing else is prescribed. -However, the HLI provides support for library authors to make it easy to fulfil these requirements. - +The key question is this: how should Angela Author present her HLI package so that her consumers (from +Bob, Sam, Willie, etc) can conveniently use it? hunk ./doc/libraryInfrastructure.sgml 242 -
The Makefile route - -If Angela is happy with make, then she can build the library entirely using make. - -To support this, HLI provides a trivial implementation of setup.hs, setup-make.hs, which -simply parses the command line arguments and shells out into make. Thus, +Answer: she provides a tree of files, with the file Setup.lhs in the +root directory of the tree. Setup.lhs is an executable Haskell program +which conforms to a particular specification, given in detail in . +In summary, though, Setup.lhs allows a consumer to configure, build, +install, register, and un-register a package. + For example, consider a package hunit-2.3. +Bob the Builder downloads and unpacks a source tar-ball into a temporary directory, +cd's to root directory, and hunk ./doc/libraryInfrastructure.sgml 251 - setup configure --with-compiler=ghc + ./Setup.lhs configure --ghc + ./Setup.lhs build + ./Setup.lhs install hunk ./doc/libraryInfrastructure.sgml 255 -invokes - - make configure HC=ghc - -Similarly -setup build -invokes -make build And so on. +The configuration step checks, for example, that the package author indeed intends the package to be buildable +with GHC, that a sufficiently up-to-date GHC is available, that the packages on which +hunit-2.3 depends are already installed for GHC, and so on. +After that the build and install steps know what +compiler they are using. + +Question: can you abbreviate to Setup install ghc? + +In principle, the Setup program +could be written in any language; see for why we use Haskell. + hunk ./doc/libraryInfrastructure.sgml 267 -Angela simply arranges that when her makefiles build a distribution, they include this simple setup.hs in -the root of the distribution, where the Joe User expects to find it. -
+
hunk ./doc/libraryInfrastructure.sgml 269 -
The simple build infrastructure +Help for building packages hunk ./doc/libraryInfrastructure.sgml 271 - -In many cases, though, a Haskell package will consist of nothing more than a bunch of Haskell modules, -with perhaps the odd C file. In that case, the HLI provides a simple build infrastructure that -completely replaces make. (Think hmake.) The emphasis is on ``simple'': it deals with the 90\% case only. -If you want something more elaborate, you can (a) modify the simple build infrastructure (which is written in Haskell) -(b) use makefiles, or (c) implement something else entirely. - -The simple build infrastructure works as follows. Angela puts the following Hasell file setup.hs in the -root of her tree: +The HLI allows a package author to write the setup script in any way she pleases, provided +it conforms to the speciication of . However, many Haskell packages consist +of little more than a bunch of Haskell modules, and for these the HLI provides a library that does +all the work. +For example, suppose Angela Author has a bunch of Haskell modules Angela.Set, +Angela.Bag, and Angela.Internals, that she wants to +turn into a package. All she need do is write the setup script hunk ./doc/libraryInfrastructure.sgml 279 - module Main where - import Distribution.Setup.Simple + #! runhugs + import Distribution.Simple + + pkgDescr = PD { name = "angela", + version = [1], + modules = ["Angela.Set", "Angela.Bag"] } hunk ./doc/libraryInfrastructure.sgml 286 - pkgInfo :: PkgInfo - pkgInfo = .... - - main = setup pkgInfo + main = setup pkgDescr hunk ./doc/libraryInfrastructure.sgml 288 -Here PkgInfo is a data structure that describes the package: its name, version, dependencies, and so on (Section ...). -It is not the same as the package install configuration described in Section XXX; the latter describes a particular -installation (e.g. where the files are), while PkgInfo gives only installation-independent information. - -Now Angela can build her package by saying - - setup.hs build - -She can even install it on her ownn machine by saying - - setup.hs install - -She can build a source tarball: - - setup.hs source-tarball - -The full details are given in Section YYYY. - -It is no coincidence that the interface is very similar to that described for a package tarball (Section ZZZ). -In fact, Distribution.Setup.Simple.setup conforms to the specification of Section ZZZ, and when it builds -a tarball, it includes ./setup.hs in the tarball, ready to be run by Joe User. -However, Distribution.Setup.Simple.setup of course implements a richer interface than that required by -Section ZZZ, becuase it's intended to support Angela as well as Joe. -The full specification is in Section SSSS. +She tar's it up and that's her source distribution. hunk ./doc/libraryInfrastructure.sgml 290 +The details of Distribution.Simple are given in . + + hunk ./doc/libraryInfrastructure.sgml 294 -
<function>PkgInfo</function> hunk ./doc/libraryInfrastructure.sgml 295 -...describe PkgInfo... - -Which compiler flags does she put in the compiler-flags part of PkgInfo, and which does she -pass to setup configure? Answer: the package should compile in a sensible way using only the -former. The latter are just for build-specific modification (e.g. make a debug build). -
- -
<function>Distribution.Setup.Simpl.setup</function> - -Command line interface to the simple build infrastructure. -
- -
- -
RPMs and Debian packages - -How do we build these? -
-
-
- - -
A Solution for Haskell in Haskell - - As mentioned above, the foremost user interface for this - system will be a Haskell program to be executed by the default - &impl;. This Haskell program, Setup.lhs, will - perform the tasks of building the package (where necessary), - installing the package, and making the package available to the - system. - - -
The Module Design - I propose a set of modules based on these three major tasks: - - - - &DistBuild;: For tasks of preparing the package for - installation, including tasking compilers and creating packages for - systems like Debian (). - - &DistInstall;: For moving the distribution files - into place (). - - &DistPackage;: For - accessing the database of installed packages, versions, etc. Might - also be responsible for removing packages (). - - &DistConfigure;: For discovering details about the - configuration of the target system not covered by the database of - installed packages. These are tasks typically performed by tools - such as &autoconf; (). - - Distribution: For general - purpose elements that don't fit into any of the above - categories. - -
- hunk ./doc/libraryInfrastructure.sgml 296 -
But Why Should We Use Haskell? + But Why Should We Use Haskell? hunk ./doc/libraryInfrastructure.sgml 298 -It is very appropriate that this solution be implemented in -Haskell: - +The setup script, Setup.lhs, is written in Haskell. Why? hunk ./doc/libraryInfrastructure.sgml 331 -
+It is convenient for consumers to execute Setup.lhs directly, thus: + + ./Setup.lhs ... + +This can be achieved by starting Setup.lhs with "#! runhugs". +Since it's a literate Haskell script (.lhs file), the Haskell compiler will ignore +this line. +However, nothing stops a consumer from running the script interactively, or compiling it and running +the compiled binary. Any implementation of Haskell should suffice to run the script, provided +the implementation has the HLI libraries installed. + + We should provide runghc. + + hunk ./doc/libraryInfrastructure.sgml 346 - -
Setup.lhs Command-Line Interface + hunk ./doc/libraryInfrastructure.sgml 348 - The purpose of the Setup script is to provide a standard - interface to end users and layered tools. For any particular - application, the script may be implemented in a variety of ways: - For pure Haskell applications, the &distMod; should perform all - of the heavy lifting, requiring only a few lines of code from the - developer. For applications that feel they need a complete and - robust make-based system, the Setup script can wrap such a - system. +Package consumers and the setup script hunk ./doc/libraryInfrastructure.sgml 350 - One of the early design tasks of this project should be to decide - on a format for the command-line interface of the Setup script, - but here is an example of how it might behave: - - Setup.lhs interface + +The sole requirement of an HLI package is that it should contain a setup script, Setup.lhs, +in the root of its file structure. This section +specifies the complete command-line interface for the setup script, and how it satisfies the needs of +package consumers. hunk ./doc/libraryInfrastructure.sgml 356 +The setup script specification + +Here is the command-line interface the setup script must satisfy. +
setup.lhs interface + hunk ./doc/libraryInfrastructure.sgml 364 - Output package configuration - information + Output the package description. + hunk ./doc/libraryInfrastructure.sgml 368 - ./Setup.lhs build all - Compile / prepare this package for - all installed &impls; + ./Setup.lhs configure + Prepare to build the package. Typically, this step checks + that the target platform is capable of building the package, and + discovers platform-specific features that are needed during the build. + hunk ./doc/libraryInfrastructure.sgml 375 - ./Setup.lhs build default - Compile / prepare this package for - the default &impl; + ./Setup.lhs build + Build the package, ready for installation. For a true compiler, + this step involves compiling the Haskell source code. Even for an interpreter, however, + it may involve running a pre-processor. hunk ./doc/libraryInfrastructure.sgml 380 - ./Setup.lhs build {&nhc;,&ghc;,&hugs;, ...} - hunk ./doc/libraryInfrastructure.sgml 381 - Compile / prepare this package for - the given &impl; + ./Setup.lhs install + Copy the files into the install locations, and register + the package with the compiler. hunk ./doc/libraryInfrastructure.sgml 385 - ./Setup.lhs install {all,default,&nhc;,&ghc;,&hugs;,...} - Install this package. + + ./Setup.lhs register + ./Setup.lhs unregister + + + Register (or un-register) this package with the + compiler. (NB: registration is also done automatically by install.) + hunk ./doc/libraryInfrastructure.sgml 394 - ./Setup.lhs register - {all,default,&nhc;,&ghc;,&hugs;,...} - Register this package with the - package management system (making it available to - the given &impl;.) - - ./Setup.lhs bdist_{deb,rpm,...} - Create a binary distribution package - for Debian, RPM, etc. - - ./Setup.lhs sdist - Create a source distribution - archive. - hunk ./doc/libraryInfrastructure.sgml 399 + hunk ./doc/libraryInfrastructure.sgml 401 - Other commands may be available, and it is important to - anticipate commands that may some day be desirable. +<function>setup info</function> hunk ./doc/libraryInfrastructure.sgml 403 - +The command ./Setup.lhs info outputs the package description on the +standard output, in the format given below. This the only concrete way in which the package +descrption appears in the HLI: Angela Author does not write a file containing the package description. + +Insert package desription syntax here. + +NB: the package descrpition is not the same as an installed package description (); +the latter describes a particular +installation (e.g. where the files are), while PkgDescr gives only installation-independent information. + hunk ./doc/libraryInfrastructure.sgml 414 - + hunk ./doc/libraryInfrastructure.sgml 416 -
An Example Setup.lhs Script +<function>setup configure</function> hunk ./doc/libraryInfrastructure.sgml 418 - Here's what the setup script might look like for HUnit, which - has no complex dependencies. +The command ./Setup.lhs configure prepares +to build the package. For sophisticated packages, the configure step +may perform elaborate checks, to gather information about the target +system. It may write a file to record its results, but the name and +format of the file are not part of the specification. + + +All flags are optional. The flags are these: + +--with-compiler=path, +--ghc, +--nhc, +--hugs: +specifies which compiler to use. At most one of these flags may be specified. +The configure step checks +that the compiler is available, in a sufficiently up-to-date form for the package, and that the package +expects to work with that compiler. If the compiler name +is not specified, setup will choose one; some packages will come with one compiler baked in. + + +--prefix=path: specifies where the installed files +for the package should be installed. Typically on Unix this will be /usr/local and +on Windows it will be Program Files. The setup script will use a sensible default +(often platform-specific) if the flag is not specified. + + + +It is OK for these flags to be "baked into" the compiled library. In particular, the build system may +bake the installation path into the compiled files. There is no provision for installing the compiled +files anywhere other than the place specified in the configure step. + + hunk ./doc/libraryInfrastructure.sgml 451 -#!/usr/bin/env haskell -import Distribution.Core -import Distribution.Package +<function>setup build</function> hunk ./doc/libraryInfrastructure.sgml 453 -toolInfo = (defaultPackage "HUnit" - (NumberedVersion 1 0 0)) - {haskellSources=[ - "HUnitLang98.lhs","HUnitLangExc.lhs", "Info.lhs", - "Terminal.lhs", "HUnitTest98.lhs", "TerminalTest.lhs", - "HUnit.lhs", "HUnitTestBase.lhs", "HUnitBase.lhs", - "HUnitTestExc.lhs", "HUnitLang.lhs", "HUnitText.lhs", - "Setup.lhs"], - docs = ["Example.hs", "Guide.html", "License", "README"]} +The command ./Setup.lhs build builds the +package, ready for installation. It takes no flags. hunk ./doc/libraryInfrastructure.sgml 456 -main = defaultMain toolInfo id id --- Those last to parameters might be pre-install and post-install functions - + hunk ./doc/libraryInfrastructure.sgml 458 -defaultMain would implement all of the -standard command-line flags, and defaultPackage is a template with -sane default values for most fields. +<function>setup install</function> hunk ./doc/libraryInfrastructure.sgml 460 -
+The command ./Setup.lhs install copies files from the built package to +the right location for installed files, specified in the configure step. Then it registers the new package with +the compiler, using the hc-pkg command. + +--install-prefix=path has three effects. +First, it over-rides the --prefix flag specified in the configure step, +providing an alternative location. Second, it does not call hc-pkg to register the package. +Instead, third, it creates an installed package description file, installed-pkg-descr, +which can later be fed to hc-pkg. + +The reason for all this is that Roland RPM wants to create an exact installation tree, all ready +to bundle up for the target machine, but in a temporary location. He cannot use +this location for --prefix in the configure step, because that +might bake the wrong path into some compiled files. Nor does he want to register this temporary tree with the compiler +on his machine. Instead, he bundles up the temporary installation tree, plus the installed-pkg-descr, +and ships them all to the target machine. When they are installed there, the post-installation script runs +hc-pkg on the installed-pkg-descr file. + + hunk ./doc/libraryInfrastructure.sgml 480 - +--shared: if present, this flag is passed to hc-pkg +so that the package is registed as shared. This flag has no effect if --install-prefix is +used, because in that case hc-pkg is not called. + + + hunk ./doc/libraryInfrastructure.sgml 487 -
Distribution Module + hunk ./doc/libraryInfrastructure.sgml 489 - + hunk ./doc/libraryInfrastructure.sgml 491 -
&DistBuild; +<function>setup register</function> and <function>setup unregister</function> hunk ./doc/libraryInfrastructure.sgml 493 -The basic strategy we will take for the actual task of building -Haskell tools is as follows: - +The command ./Setup.lhs register registers the now-installed package with the compiler. +Similarly, ./Setup.lhs unregister un-registers the package. hunk ./doc/libraryInfrastructure.sgml 496 +--shared: registers/un-registers a shared package as shared. +The default is to treat the package as a user package. + + + hunk ./doc/libraryInfrastructure.sgml 502 - For simple tools like Haskell modules, leverage - &hmake;'s () abilities and create a Haskell-based - system (which will evolve to do more complex - tasks.) + + hunk ./doc/libraryInfrastructure.sgml 505 - Tools that require something more complex can use - ``fptools'' or Yale's Make-based system (), or use their own build - system. +Bob the Builder and Sam Sysadmin hunk ./doc/libraryInfrastructure.sgml 507 - All systems will be wrapped in a common veneer - () so they look the same to the average - user and to layered tools () - and so that once &DistBuild; evolves to be a more robust tool, - packages can transition to using it without effecting the interface - to their build system. +Bob the Builder can install a HLI source distribution thus. +He downloads the source distribution and unpacks it into a temporary directory, +cd's to that directory, and says + + ./Setup.lhs configure --ghc + ./Setup.lhs build + ./Setup.lhs install + +Similarly, Sam Sysadmin does exactly the same, except that he says + + ./Setup.lhs install --shared + +in the final step, so that the package is installed where all users will see it. + +For a binary distribution, both Bob and Sam would omit the first two steps, and just do the install step. + hunk ./doc/libraryInfrastructure.sgml 524 - +System packagers (Debian, RPM etc) + +System packagers, such as Donald Debian, will run the configure and build steps just like Bob and Sam. +A that point, Donald will say + + ./Setup.lhs install --install-prefix=/tmp/donald + +to construct a ready-to-zip tree of all the installed files, plus a file installed-pkg-descr +that describes the installed package. He arranges to deliver both these components to the target machine, +and then feed installed-pkg-descr to hc-pkg on the target machine. + hunk ./doc/libraryInfrastructure.sgml 536 -Since it is obviously the compilers that do the actual compilation, -the task of &DistBuild; is more one of coordination among tools -outside the compiler. We hope to offer support for preprocessors -(both existing and those yet to come). &DistBuild; will handle the -task of compiling for a particular &impl;, or for all installed -&impls;, and help to abstract-away differences between command-line -flags. +The file installed-pkg-descr also contains information he needs for building +his Debian distribution, namely the +package name, version, and (exact) dependencies. + + + hunk ./doc/libraryInfrastructure.sgml 543 -&DistBuild; could also be used to recompile all of the installed -libraries once a new &impl; is installed. This is an important -function, as it solves the problem of binary incompatibility between -&impls; and versions thereof. Another very useful function that -&DistBuild; could offer is the implementation of a generic -/usr/bin/haskell that either executes a Haskell -program using the default compiler or throws the user into the default -interpreter, depending upon how it is invoked. This allows Haskell -scripts (such as Setup.lhs) to be distributed with a -#!/usr/bin/env haskell annotation that has reasonable -behavior. +HLI support for building a package: the author's viewpoint hunk ./doc/libraryInfrastructure.sgml 545 -
+Angela Author has written a bunch of Haskell modules that she wants to package as a library. +What does she have to do? +She must simply build a package that can be installed as described above: nothing else is prescribed. +However, the HLI provides support for library authors to make it easy to fulfil these requirements. + hunk ./doc/libraryInfrastructure.sgml 551 - -
&DistInstall; +The Makefile route hunk ./doc/libraryInfrastructure.sgml 553 - The &DistInstall; module performs the task of moving files - into place. Presumably, this is the last task before package - registration. &DistInstall; will have to understand configuration - options for the operating systems that Haskell modules are being - installed on. (For instance, different operating systems have different - policies for where to put documentation, source code, binary files, - and libraries.) Such information will most likely be read from a - file that can be edited by the system administrator (). +Marcus Makefile is happy with make, +and he can build the library entirely using make. hunk ./doc/libraryInfrastructure.sgml 556 - Not only will this module have to support standards on - different operating systems, but it must have access to filesystem - functionality like copy and - move, as well as permission-related operations. - Such functions should be offered by a library such as - System.Posix.Files and - System.Directory, but the - System.Posix module is not available on all - operating systems. To some extent, &DistInstall; should handle the - differences between operating systems (file permissions for - instance), but Haskell should offer a more robust set of file - operations in order to encourage the use of Haskell for common - scripting tasks. (One issue that the author has noticed is that - System.Directory.renameDirectory is not - implemented the same in GHC and Hugs, which forces &DistInstall; to - find a way to abstract the differences.) +To support this, HLI provides a trivial setup library Distribution.Make, which +simply parses the command line arguments and shells out into make. Marcus uses the following +Setup.lhs + + module Main where + import Distribution.Make + main = setup + +All the package description information is assumed to be known to the makefile system, and so does not +appear in the setup script. +Thus, + + setup configure --ghc + +invokes + + ./configure --with-hc=ghc + +Similarly +setup build +invokes +make all And so on. hunk ./doc/libraryInfrastructure.sgml 579 -
+Marcus simply arranges that when his makefiles build a distribution, they include this simple setup script in +the root of the distribution, where the Bob the Builder expects to find it. + hunk ./doc/libraryInfrastructure.sgml 583 - -
&DistPackage; +The simple build infrastructure hunk ./doc/libraryInfrastructure.sgml 585 - The complex task of packaging requires a lot of attention. - The proposed solution is not only a module to access the packaging - information, but also an application to assist external systems with - the same task: + +In many cases, though, a Haskell package will consist of nothing more than a bunch of Haskell modules, +with perhaps the odd C file. In that case, the HLI provides a simple build infrastructure that +completely replaces make. (Think hmake.) The emphasis is on ``simple'': it deals with the 90% case only. +If you want something more elaborate, you can (a) modify the simple build infrastructure (which is written in Haskell) +(b) use makefiles, or (c) implement something else entirely. + +The simple build infrastructure works as follows. Angela puts the following Hasell file setup.hs in the +root of her tree: + + module Main where + import Distribution.Simple hunk ./doc/libraryInfrastructure.sgml 598 - The main features of this system are: + pkgDescr :: PkgDescr + pkgDescr = .... hunk ./doc/libraryInfrastructure.sgml 601 - + main = setup pkgDescr + +Here PkgDescr is a Haskell data structure that describes the package: its name, version, dependencies. +It contains precisely the information that is output by setup info -- see . + +Now Angela can build her package by saying + + setup.hs build + +She can even install it on her ownn machine by saying + + setup.hs install + +She can build a HLI source distribution: + + setup.hs source-dist + +The full details are given in . + +It is no coincidence that the interface is very similar to that for the setup script +for an HLI package distribution (). +In fact, Distribution.Simple.setup conforms to the specification of , and when it builds +a distribution, it includes ./Setup.lhs in the tarball, ready to be run by Bob the Builder. +However, Distribution.Simple.setup of course implements a richer interface than that required by +, becuase it's intended to support Angela as well as Bob. +The full specification is in . + hunk ./doc/libraryInfrastructure.sgml 629 - To let the &impls; know how to use a package, - whether its available by default (or whether it requires a -package - flag), and where the root of its hierarchy is. +<function>PkgInfo</function> hunk ./doc/libraryInfrastructure.sgml 631 - To store other information about a package, - including information such as its license, home page, version - number, and dependencies, to be used by other tools in the - Distribution hierarchy. +...describe PkgInfo... +Which compiler flags does she put in the compiler-flags part of PkgInfo, and which does she +pass to setup configure? Answer: the package should compile in a sensible way using only the +former. The latter are just for build-specific modification (e.g. make a debug build). hunk ./doc/libraryInfrastructure.sgml 636 - All information will be made available through the - &DistPackage; module. The information can be made available to - non-haskell tools by way of a command-line tool, &haskellConfig; - () with easily parsable output - (similar to package-config) - though a different solution may be necessary for - windows. + hunk ./doc/libraryInfrastructure.sgml 638 - +<function>Distribution.Simple.setup</function> hunk ./doc/libraryInfrastructure.sgml 640 -Some secondary features are: +Command line interface to the simple build infrastructure. + hunk ./doc/libraryInfrastructure.sgml 643 - Let other tools, such as debuggers and - editors know where the source code for a module / package - is. + hunk ./doc/libraryInfrastructure.sgml 645 - When new Haskell implementations are installed, - allow them to find the source code and import it into their own - library tree (perhaps through other features of the - L.I.P.) + hunk ./doc/libraryInfrastructure.sgml 647 - For Haskell implementations that don't conform to - the new packaging interface, implement a wrapper so that it can - still utilize other important features of the Library - Infrastructure Project. + hunk ./doc/libraryInfrastructure.sgml 649 -The information would be held in a file, such as -/etc/haskell/packages.confor -/usr/local/etc/haskell/packages.conf or wherever the -default location for config files is. and -~/.haskell/packages.conf. +What the compilers must implement hunk ./doc/libraryInfrastructure.sgml 651 -
PackageConfig Data Structure +The HLI requires that the Haskell implementations be somewhat package-aware. +This section documents those requirements hunk ./doc/libraryInfrastructure.sgml 654 -The package data structure might look something like this (based -on GHC's Package class) +Registering a package hunk ./doc/libraryInfrastructure.sgml 656 -data PkgIdentifier - = PkgIdentifier {pkgName::String, pkgVersion::Version} -{- ^Often need name and version since multiple versions of a single - package can exist on a system. -} +Installing a package ultimately involves these steps: + + + Compiling the source files, by invoking the compiler. Even Hugs may require + some processing (e.g running cpp). + hunk ./doc/libraryInfrastructure.sgml 663 -data PackageConfig - = Package { - pkgIdent :: PkgIdentifier, - license :: License, - auto :: Bool, + + Copying the compiled files into some place. Typically the compiler + places no pre-conditions on where "some place" is; instead one + usually follows the conventions of the host operating system. + hunk ./doc/libraryInfrastructure.sgml 669 + + Registering the package: telling the compiler about the + existence of the package, and where its files are. + To register the package one invokes a compiler-specific program hc-pkg (i.e. ghc-pkg, + hugs-pkg etc), passing it an installed package description (IPD) + describing the package. + + + +It must be possible to register many versions of the same package. hunk ./doc/libraryInfrastructure.sgml 680 - import_dirs :: [FilePath], - source_dirs :: [FilePath], - library_dirs :: [FilePath], - include_dirs :: [FilePath], - hs_libraries :: [String], - extra_libraries :: [String], - c_includes :: [String], - build_deps :: [Dependency], -- build dependencies - depends :: [Dependency], -- use dependencies - - extra_cc_opts :: [String], - extra_ld_opts :: [String], - framework_dirs :: [String], - haddock_html_root :: String, - haddock_interface :: String, - default_grafting_point :: String, --- ^Related to new packages proposal - vars :: [(String, String)], --- ^Variable, value pairs, whatever author wants here - extra_frameworks:: [String]} +Shared packages and user packages hunk ./doc/libraryInfrastructure.sgml 682 -data Version = DateVersion {versionYear :: Integer, - versionMonth :: Month, - versionDay :: Integer} - | NumberedVersion {versionMajor :: Integer, - versionMinor :: Integer, - versionPatchLevel :: Integer} + +A package can be registered either as a shared package or as a user package. +The former means that anyone invoking hc will see the new package. The latter means +that only the user who installed the package will see it. + + +User packages shadow shared packages, in the following sense: + + A Haskell import for module M will seek M in a user package first. + + + The hc-pkg commands that take package IDs will look for a user package first. + + + +Hmm. If there are several ghc's around, can their user packages get mixed up? I hope not. hunk ./doc/libraryInfrastructure.sgml 699 -data License = GPL | LGPL | BSD | {- ... | -} OtherLicense FilePath + hunk ./doc/libraryInfrastructure.sgml 701 -data Dependency = Dependency String VersionRange +Exposed packages and hidden packages hunk ./doc/libraryInfrastructure.sgml 703 -data VersionRange - = AnyVersion - | OrLaterVersion Version - | ExactlyThisVersion Version - | OrEarlierVersion Version + +An installed package can be exposed or hidden. An exposed package +populates the module name space, while a hidden package does not. Hidden packages are nevertheless necessary. +For example, the user might use +package A-2.1 and B-1.0; +but B-1.0 might depend on A-1.9. So the latter must be installed (else B-1.0 could not be), but +should be hidden, so that user imports see A-2.1. +The registration program hc-pkg provides operations to expose or hide an +already-installed package. + + hunk ./doc/libraryInfrastructure.sgml 715 -type PackageMap = FiniteMap PkgIdentifier PackageConfig - +Registration invariants hunk ./doc/libraryInfrastructure.sgml 717 -But perhaps we'll need to be even more flexible: some -implementations might not be interested in certain fields, and others -might want their own fields. I propose that implementation-specific -fields be prepended with the implementation name: -ghc_interpreter_flags, -hugs_interpreter_flags, etc. In general it would -certainly be desirable to have a flexible parser so that we can add -more fields later and maintain backward compatibility. - -The &DistPackage; API might look like so: - -userPkgConfigLocation :: FilePath -systemPkgConfigLocation :: FilePath -getSystemPkgConfig :: IO [PackageMap] -- ^Query /etc/haskell/packages.conf -getUserPkgConfig :: IO [PackageMap] -- ^Query ~/.haskell/packages.conf -getPkgConfig :: FilePath -> IO [PackageMap] -addUserPackage :: PackageConfig -> IO () -addSystemPackage :: PackageConfig -> IO () -delUserPackage :: PkgIdentifier -> IO () -delSystemPackage :: PkgIdentifier -> IO () -basicPackage :: PackageConfig -- provides sensible defaults -checkLicense :: PackageConfig -> Bool -{- Just for fun, check to see if the licences that this package uses - conflicts with any of the licences of the packages it depends on -} - -
- -
- - - -
&haskellConfig; Command-line - interface - -The &haskellConfig; Because of the confusion -between different kinds of configuration (the kinds offered by -&DistPackage; and &DistConfigure;) I am torn about the name of this -program. There is the further confusion between package management -(the actual installation and removal of the programs themselves) and -interfacing with the packaging system. Further there is one more bit -of confusion between packages in the Haskell system (i.e. a set of -modules distributed together by an author) and a package on the -operating system. If anyone has an idea to straighten all of this -out, I'd be glad to hear it :) tool is a -command-line interface to the packaging system. It will presumably be -written in Haskell and import the &DistPackage; module. The purpose -of this tool is to give non-Haskell systems the ability to interact -with the packaging system, since they won't be able to import -&DistPackage;. This tool serves a purpose similar to ghc-pkg and -package-config. - -% haskell-config [--user] register < packageFile -% haskell-config [--user] unregister packageName -# add or remove packages from the package database. --user indicates -# that we should add it to the package database in the user's home -# directory, not to the system-wide package database. - -% haskell-config packageName c_includes -# would output this list in a way that a C compiler could use directly - -% haskell-config list-packages -% haskell-config list-user-packages -% haskell-config list-system-packages -# Query the database in a variety of ways - -
- - - - -
haskell-pkg? - - The &haskellConfig; tool brings up an interesting question. - Should the functionality of &DistInstall; also be made available as - a command-line tool, perhaps called haskell-pkg - ("Haskell package")? In this sense, "package" would refer to that - word in the sense that dpkg and the 'P' - in RPM mean it: - haskell-pkg could be used for installing and - removing Haskell programs when supplied with the package metadata - that is defined by &DistPackage;. This would conflict with &ghc;'s - terminology for ghc-pkg. - -
- -
&DistConfigure; - - The information available through the &DistPackage; module is - not all of the information that could possibly be needed to prepare - a package for installation. Typically, tools such as &autoconf; are - used to discover useful information about the system. The author - has not given a lot of thought to the configuration problem, but he - sees a few possible paths: - - - - A module, &DistConfigure; can act as an interface to - configuration information. This is the approach that Python has - taken. - - Some information can be written by the end user or - maintained on the system in a standard file format. The file could - reside, for example in - ~/.haskell/distributionConfig, - /etc/haskell/distributionConfig, and - distributionConfig within the package - directory. This information can be made available through the - &DistConfigure; module. - - Certain pieces of information are available when the - &impls; themselves are installed. This information can be made - available to installing scripts once again through the - distributionConfig file. - - Shortcomings in the &DistConfigure; module can be - made up by using &autoconf; itself, which can output information to - the above mentioned distributionConfig - file. - -
- -
- - -
Use Cases - - End User: The end user has identified a - Haskell package (tool or library) that she wants to use. - - The end user installs packages with a - operating-system-specific package management system like RPM, dpkg, - or FreeBSD's Ports collection. - - If no such packaging system is available on her - system, she, can run ./Setup.lhs install nhc or - ./Setup.lhs install hugs to build, install, and - register an &nhc; or &hugs; version of the program (for - instance). - - - -Packager: A packager is someone who makes -operating-system-specific packages so that an end-user can have an -easier time installing them on her own system. For each platform, -there should be one or more packager. - -The packager can run - ./Setup.lhs bdist_deb to build a skeleton Debian - package (for instance) for each of the installed &impls;. This - might generate Debian packages like hunit-hugs, - hunit-ghc, hunit-prof-ghc, - hunit-prof-nhc. - - - -3rd Party Author: A 3rd party author is a -Haskell developer (distinct from the &impl; authors or end users) who -wishes to distribute a library or application that he has developed in -Haskell. - -The 3rd Party Author writes a - Setup.lhs program. Setup.lhs - imports elements from the &distMod; which does most of the hard - work. A very common case, which should be our first priority, is a - pure Haskell 98 module that needn't interface with any external - systems. In this case the author only has to include the name of - the program, the version, and the source files. He can then call - Distribution.defaultMain to create an - executable script with the proper command-line flags that knows how - to interface with the &DistPackage; module. - -Should he have a more complex program (one which - perhaps depends on systems external to Haskell), then the &distMod; - could output a Makefile to be used in 'fptools' or Yale's system - (see ). - -Should he not want to migrate from his own build - system, he could write a Setup.lhs script to wrap - the build system so that it conforms to the standard command-line - interface. - - - -&impl; Authors: - -&impl; authors must conform to an - agreed-upon &DistPackage; interface. - - This may include writing functionality so the - compiler can be asked questions about itself. - - This may also include altering compilers to read - /etc/haskellPackages.conf (for instance) to - discover what packages are installed or where to look for - imports. - -Include the &distMod; with the &impls; (in exchange, we - can hopefully remove some libraries that are currently included with - the &impls;). - -Random Haskell Programmer: - -A random Haskell programmer can use the - &distMod; as a means to create layered tools that download, build, - or install packages. For instance: - - - &haskellConfig; is an example of a layered tool which interfaces with - the &distMod;. This tool gives the end user access to the database - of installed applications. - - A Graphical User Interface could be layered on top - of the Setup script to give installation a better look-and-feel - according to the target platform. - - The &distMod; could be augmented with an online - repository of libraries (see ), and a layered tool might - perform the searching and downloading functionality of the - installation process. - - Debuggers often need to locate the source code to a - library module in order to instrument them. - - Source code editors or browsers could benefit from - being able to locate related source code on the user's - system. - - - +The registration program hc-pkg checks the following invariants: + + +Before registering a package P, check all the packages that P depends on are already registered. +If P is being registered as a shared package, P's dependencies must also be shared packages. hunk ./doc/libraryInfrastructure.sgml 723 + +Before registering an exposed user package P, check that the modules that are exposed by P do not have the same +names (in the hierarchical module name space) as any other module in an exposed user package Q. Similarly +for system packages. (However, a system package may expose a module with the same name as a user package. + + +Before un-registering a package P, check that no package that depends on P is registered. +The exception is that when un-registering a shared package, hc-pkg cannot +check that no user has a user package depending on P. + + + + + +The <function>-package</function> compiler flag hunk ./doc/libraryInfrastructure.sgml 740 -
+ +Registering a package means that subsequent invocations of the compiler will use a module namespace +augmented by the newly-installed package. hunk ./doc/libraryInfrastructure.sgml 744 - + +By default, the module namespace is populated only by the latest version of a particular package. +This can be overridden using the -package flag. +Question: what does -package hunit-1.2 -package hunit-1.3 do? +Does the second override the first? Or are they both in scope? I think the former. + +An attempt to import a module that is defined by more than one installed package yields an ambiguous-import +error, rather like an attempt to use an identifier that is defined by more than one imported module. +(Comment: there ought be some way to resolve such ambiguities. Per-import qualification? -disable-package X? +-package Y specifies winner?) + + hunk ./doc/libraryInfrastructure.sgml 757 -
Means of Distribution - and Layered Tools +The interface to <function>X-pkg</function> hunk ./doc/libraryInfrastructure.sgml 759 - Most of the discussion here has been about giving the user - tools to build, install, and manage libraries and tools written in - Haskell. There is another important component to this which - deserves attention, and that is the distribution of these tools. - +Registering a package with a compiler records the package information in some +implementation-specific way; how it does so is not constrained by the HLI. +Much of an IPD is independent of the compiler, but it may also include compiler-specific +fields. hunk ./doc/libraryInfrastructure.sgml 764 - - For C++ and Perl (and likely many other programming languages) there - are central repositories of libraries and tools (). In a way, Haskell has this - also, bit it is centrally maintained rather than being a - free-for-all where nearly anyone can get their package distributed. - The author feels that both approaches are appropriate, and libraries - can graduate from one to the other. +Each Haskell implementation hc must provide an associated program hc-pkg which +allows a user to make a new package known to the compiler, and to ask what packages it knows. Here is a summary of its interface hunk ./doc/libraryInfrastructure.sgml 767 - Having a standard interface for installing packages allows us - to layer tools upon it. For instance, it would be nice to be able - to download and install Haskell libraries and all their dependencies - with one command. For Perl (by virtue of CPAN) this is already - possible. Other layered tools are discussed in the Use Cases (). +
<function>hc-pkg</function> interface hunk ./doc/libraryInfrastructure.sgml 769 - + hunk ./doc/libraryInfrastructure.sgml 771 - -
Development Plan + hc-pkg register + filename + + + + Register the package using the specified installed package description. + The syntax for the latter is given in . hunk ./doc/libraryInfrastructure.sgml 779 -On a high level, this is the order in which we should approach -the tasks: hunk ./doc/libraryInfrastructure.sgml 780 - + hc-pkg unregister + pkg-id + + Unregister the specified package. hunk ./doc/libraryInfrastructure.sgml 785 -We should agree first on the high-level design of the -packaging system (), since this will require a consensus from -the &impl; authors. Details such as the format of the database and -the exact API will evolve over the course of the project. The author -views this as the top priority. + hc-pkg expose + pkg-id + + Expose the specified package. hunk ./doc/libraryInfrastructure.sgml 790 -In parallel, we should decide on the command-line interface for the -Setup script (), and the particulars of -how it is invoked on various systems. + hc-pkg hide + pkg-id + + Hide the specified package. hunk ./doc/libraryInfrastructure.sgml 795 -The first priority for Build and Install support -should be pure Haskell modules, and reasonable support for wrapping -make-based systems that are currently more highly evolved. + hc-pkg list + List all registered packages, both shared and user, hidden and exposed. hunk ./doc/libraryInfrastructure.sgml 798 -At this point, it may be possible to collect -libraries, convert them to use the Library Infrastructure Project, and -make them available at a central repository. hunk ./doc/libraryInfrastructure.sgml 799 -The next priority should be tools to assist in the -creation and maintenance of operating-system packages (Debian and RPM -for instance). + hc-pkg describe pkg-id + + Give the registered description for the specified package. + The description is returned in precisely the syntax required by + hc-pkg register. + hunk ./doc/libraryInfrastructure.sgml 806 -Once these features are in place, it makes sense to -augment the &distMod; with more complex tool support like -preprocessors and external libraries. + hc-pkg field pkg-id + field + hunk ./doc/libraryInfrastructure.sgml 810 -Now we can add more fun features like GUI front-ends, -downloading tools, package security tools, etc. + Extract the specifed field of the package description for the specified package. + hunk ./doc/libraryInfrastructure.sgml 813 - +
+
+A pkg argument can be a package ID, such as "hunit-2.3", or just a package name, +such as "hunit". To determine which package is meant, hc-pkg searches first the +registered user packages and then the shared packages. If no such package exists, the command fails; that is, it does nothing, +returning a non-zero error code. +If only a name is specified, hc-pkg fails +unless the name identifies a unique package among the user packages, or among the shared pacakges. As usual, the +user packages win. + +Can we give the flag to hide, expose, +describe? Can we register a package that is already registered? What if it's registered +as a shared package and we register it as a user package? + + hunk ./doc/libraryInfrastructure.sgml 829 -The author has implemented a "toy" prototype system that fulfills -many of the features outlined above. It uses &hmake; by running it as -an external command. It can build Debian packages and interfaces with -the Common Debian Build System. It can prepare installations for Hugs -and GHC. The author decided to stop implementation, however, until -details about the Packaging system () -are worked through. +Syntax of installed package description hunk ./doc/libraryInfrastructure.sgml 831 -
+...include the list of ``externally visible modules''. + + hunk ./Distribution/Setup.hs 89 +v v v v v v v hunk ./Distribution/Setup.hs 91 +************* + | NoCmd -- error case, help case. +^ ^ ^ ^ ^ ^ ^ hunk ./Distribution/Simple.hs 79 +v v v v v v v + case parseArgs args of + (NoCmd, _) -> putStrLn optionHelpString "" +************* hunk ./Distribution/Simple.hs 93 +^ ^ ^ ^ ^ ^ ^ hunk ./doc/libraryInfrastructure.sgml 39 + + Simon + Peyton Jones + + + Simon + Marlow + + + Malcolm + Wallace + + hunk ./doc/libraryInfrastructure.sgml 94 - page. This proposal is seperate, but related + page. This proposal is seperate, but related. hunk ./doc/libraryInfrastructure.sgml 109 + We need to come up w/ an agreed-upon name. For one thing, the + entire "infrastructure" will not only include the above, but also a + web site for uploading packages, etc. + hunk ./doc/libraryInfrastructure.sgml 123 -he needs to know about his Haskell compiler's -package flag . +he needs to know about his Haskell compiler's -package flag (see ). hunk ./doc/libraryInfrastructure.sgml 135 - They do this as a service for Angela Author, and may know little or nothing about the internal details + They do this as a service for Angela Author and the community, and may know little or nothing about the internal details hunk ./doc/libraryInfrastructure.sgml 184 + >This isn't specified in hunk ./doc/libraryInfrastructure.sgml 206 -Haskell implementations. +Haskell implementations, OSs, and platforms. hunk ./doc/libraryInfrastructure.sgml 213 + hunk ./doc/libraryInfrastructure.sgml 216 -for installation. The pre-compilation means that the distribution will be Haskell-compiler-specific. +for installation. The pre-compilation means that the distribution will be Haskell-compiler-specific, and certain "looser" dependencies (hunit > 2.3) will now be precisely fixed (hunit == 2.4). hunk ./doc/libraryInfrastructure.sgml 219 + hunk ./doc/libraryInfrastructure.sgml 246 -new package in the module name space (i.e. visible to imnport statements). +new package in the module name space (i.e. visible to import statements). hunk ./doc/libraryInfrastructure.sgml 275 + +Should we state the rule about when one must explictly call "register"? + hunk ./doc/libraryInfrastructure.sgml 279 -with GHC, that a sufficiently up-to-date GHC is available, that the packages on which -hunit-2.3 depends are already installed for GHC, and so on. +with GHC, that a sufficiently up-to-date GHC is available, that the packages which are required to build hunit-2.3 are already installed for GHC, and so on. hunk ./doc/libraryInfrastructure.sgml 301 - #! runhugs + #! /usr/bin/env runhugs hunk ./doc/libraryInfrastructure.sgml 304 - pkgDescr = PD { name = "angela", - version = [1], - modules = ["Angela.Set", "Angela.Bag"] } + pkgDescr = emptyPackage { name = "angela", + version = [1], + modules = ["Angela.Set", "Angela.Bag"] } hunk ./doc/libraryInfrastructure.sgml 308 - main = setup pkgDescr + main = defaultMain pkgDescr hunk ./doc/libraryInfrastructure.sgml 310 -She tar's it up and that's her source distribution. +Now she can use ./Setup.lhs sdist to create a source distribution. hunk ./doc/libraryInfrastructure.sgml 357 -This can be achieved by starting Setup.lhs with "#! runhugs". +This can be achieved by starting Setup.lhs with "#! /usr/bin/env runhugs". hunk ./doc/libraryInfrastructure.sgml 364 - We should provide runghc. + The GHC team should provide runghc. hunk ./doc/libraryInfrastructure.sgml 390 - ./Setup.lhs configure + ./Setup.lhs configure [flags] hunk ./doc/libraryInfrastructure.sgml 398 - Build the package, ready for installation. For a true compiler, + Make this package ready for installation. For a true compiler, hunk ./doc/libraryInfrastructure.sgml 403 - ./Setup.lhs install + ./Setup.lhs install [install-prefix] hunk ./doc/libraryInfrastructure.sgml 444 -format of the file are not part of the specification. +format of the file are not part of the specification. For wrapped +make-based systems (for instance), a command-line parser that +understands the standard targets will be provided. + hunk ./doc/libraryInfrastructure.sgml 456 -specifies which compiler to use. At most one of these flags may be specified. +specifies which compiler to use. At most one of the value of these flags may be specified. hunk ./doc/libraryInfrastructure.sgml 469 + +Unrecognized flags are errors in the default build system, but may be meaningful to wrapped make-based systems (for instance). Therefore, the provided command-line parser will pass unrecognized command-line flags on to the wrapped system. + hunk ./doc/libraryInfrastructure.sgml 481 -The command ./Setup.lhs build builds the +The command ./Setup.lhs build makes this hunk ./doc/libraryInfrastructure.sgml 525 -The default is to treat the package as a user package. - +The default is to treat the package as a user package. + +We have not yet introduced the concept of a user package at this point, I think. hunk ./doc/libraryInfrastructure.sgml 582 +Isaac isn't sure that we can provide much value here beside providing +a standard command-line parser (which is pretty good at least). I think it might be good to offer a boilerplate Setup.lhs file for makefiles, but implementing it in a library is a bit overkill. Perhaps in the future, if the build system is delivered w/ fptools or something, we could provide an API to wrap that. + hunk ./doc/libraryInfrastructure.sgml 620 -completely replaces make. (Think hmake.) The emphasis is on ``simple'': it deals with the 90% case only. +completely replaces make. (Think hmake.) The emphasis is on ``simple'': it deals with the 75% case only. hunk ./doc/libraryInfrastructure.sgml 624 -The simple build infrastructure works as follows. Angela puts the following Hasell file setup.hs in the +The simple build infrastructure works as follows. Angela puts the following Hasell file Setup.lhs in the hunk ./doc/libraryInfrastructure.sgml 640 - setup.hs build + Setup.lhs build hunk ./doc/libraryInfrastructure.sgml 642 -She can even install it on her ownn machine by saying +She can even install it on her own machine by saying hunk ./doc/libraryInfrastructure.sgml 644 - setup.hs install + Setup.lhs install hunk ./doc/libraryInfrastructure.sgml 648 - setup.hs source-dist + Setup.lhs source-dist hunk ./doc/libraryInfrastructure.sgml 654 -In fact, Distribution.Simple.setup conforms to the specification of , and when it builds +In fact, Distribution.Simple.defaultMain conforms to the specification of , and when it builds hunk ./doc/libraryInfrastructure.sgml 656 -However, Distribution.Simple.setup of course implements a richer interface than that required by +However, Distribution.Simple.defaultMain of course implements a richer interface than that required by hunk ./doc/libraryInfrastructure.sgml 670 -<function>Distribution.Simple.setup</function> +<function>Distribution.Simple.defaultMain</function> hunk ./doc/libraryInfrastructure.sgml 686 -Registering a package +Building and registering a package hunk ./doc/libraryInfrastructure.sgml 799 +Some of these commands (unregister, hide, and describe) make sense for package IDs which offer a range, such as "hc-pkg unregister "hmake<2.3". + hunk ./Distribution/Setup.hs 63 +import Data.List(intersperse) hunk ./Distribution/Setup.hs 90 -v v v v v v v hunk ./Distribution/Setup.hs 91 -************* - | NoCmd -- error case, help case. -^ ^ ^ ^ ^ ^ ^ +-- | NoCmd -- error case, help case. hunk ./Distribution/Setup.hs 113 - _:_ -> Left ["More than one command detected"] + c -> Left ["More than one command detected: " ++ (concat $ intersperse ", " c)] hunk ./Distribution/Setup.hs 160 - getOneOpt _ = fail "Multiple prefix options" + getOneOpt o = fail $ "Multiple options where one expected: " + ++ (concat $ intersperse ", " (map show o)) hunk ./Distribution/Simple/Configure.hs 148 -compilerPkgToolName Hugs = "hugs-pkg" +compilerPkgToolName Hugs = "hugs-package" hunk ./Distribution/Simple/Configure.hs 152 - = do let (dir,_) = splitFilenameDir path - pkgtool = dir ++ '/':compilerPkgToolName flavor + = do let pkgToolName = compilerPkgToolName flavor + (dir,_) = splitFilenameDir path + pkgtool = dir ++ '/':pkgToolName + message $ "looking for package tool: " ++ pkgToolName ++ " near compiler in " ++ path hunk ./Distribution/Simple/Configure.hs 159 + message $ "found package tool in " ++ pkgtool hunk ./Distribution/Simple/Configure.hs 165 + message $ "searching for " ++ binary ++ " in path." hunk ./Distribution/Simple/Configure.hs 173 - if b then return path else search ds + if b then do message ("found " ++ binary ++ " at "++ path); return path + else search ds hunk ./Distribution/Simple/Configure.hs 185 +message s = putStrLn $ "configure: " ++ s + hunk ./Distribution/Simple/Utils.hs 66 - _:rest -> chunk : split c rest + _:rest' -> chunk : split c rest' hunk ./Distribution/Simple.hs 79 -v v v v v v v - case parseArgs args of - (NoCmd, _) -> putStrLn optionHelpString "" -************* hunk ./Distribution/Simple.hs 88 - -^ ^ ^ ^ ^ ^ ^ + Left er -> putStrLn $ show er hunk ./Distribution/TODO 100 -groupAllBy :: (a -> a -> Bool) -> [a] -> [[a]] -groupAllBy fun (h:t) - = let (groups, rem') = (partition (fun h) t) - in if null groups - then [h]:(groupAllBy fun rem') - else (h:groups):(groupAllBy fun rem') -groupAllBy _ [] = [] - - - hunk ./Distribution/Simple/Configure.hs 96 + message $ "Using build prefix: " ++ prefix hunk ./Distribution/Simple/Configure.hs 98 - compiler <- configCompiler maybe_hc_flavor maybe_hc_path pkgconfig + compiler@(Compiler f' p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path pkgconfig + message $ "Using compiler flavor: " ++ (show f') + message $ "Using compiler: " ++ p' + message $ "Using package tool: " ++ pkg hunk ./Distribution/TODO 6 -** make "configure" more verbose hunk ./Distribution/Setup.hs 87 - | InfoCmd -- info hunk ./Distribution/Setup.hs 110 - [] -> Left ["No command detected"] + [] -> Left ["Missing command"] hunk ./Distribution/Setup.hs 112 - c -> Left ["More than one command detected: " ++ (concat $ intersperse ", " c)] + c -> Left ["Multiple commands: " ++ (concat $ intersperse ", " c)] hunk ./Distribution/Setup.hs 118 - parseCommands "configure" flags unkFlags + parseCommands str flags unkFlags + = case str of + "configure" -> parseConfigure flags unkFlags + "install" -> parseInstall flags unkFlags + "build" -> noFlags str BuildCmd flags unkFlags + "sdist" -> noFlags str SDistCmd flags unkFlags + "register" -> noFlags str RegisterCmd flags unkFlags + "unregister" -> noFlags str UnregisterCmd flags unkFlags + _ -> Left ["Unrecognised command: " ++ str] + + parseConfigure flags unkFlags hunk ./Distribution/Setup.hs 133 - parseCommands "install" [InstPrefix m] unkFlags + | otherwise + = commandSyntaxError "configure" + + parseInstall [InstPrefix m] unkFlags hunk ./Distribution/Setup.hs 138 - parseCommands "install" [] unkFlags + parseInstall [] unkFlags hunk ./Distribution/Setup.hs 140 - parseCommands "build" [] unkFlags - = Right (BuildCmd, unkFlags) - parseCommands "sdist" [] unkFlags - = Right (SDistCmd, unkFlags) - parseCommands "info" [] unkFlags - = Right (InfoCmd, unkFlags) - parseCommands "register" [] unkFlags - = Right (RegisterCmd, unkFlags) - parseCommands "unregister" [] unkFlags - = Right (UnregisterCmd, unkFlags) - parseCommands c _ _ - = Left $ ["command line syntax error for command: " ++ c] + parseInstall _ _ + = commandSyntaxError "install" hunk ./Distribution/Setup.hs 143 + noFlags str cmd [] unkFlags + = Right (cmd, unkFlags) + noFlags str cmd _ unkFlags + = commandSyntaxError str + + commandSyntaxError c = Left ["Syntax error for command: " ++ c] + hunk ./Distribution/Setup.hs 193 - Option "w" ["with-compiler"] (ReqArg WithCompiler "COMPILER PATH") + Option "w" ["with-compiler"] (ReqArg WithCompiler "PATH") hunk ./Distribution/Setup.hs 209 - ("info", ""), hunk ./Distribution/Setup.hs 250 - ("info", InfoCmd), hunk ./Distribution/Simple/Utils.hs 87 - hunk ./Distribution/Simple.hs 88 - Left er -> putStrLn $ show er + + Left err -> do + hPutStr stderr (unlines err) + hPutStr stderr (optionHelpString helpprefix) + hunk ./Distribution/Simple.hs 95 --- (InfoCmd, _) -> print p + + _other -> die "unimplemented command\n" hunk ./Distribution/TODO 46 ---help (for compatibility? it's really more of an action) addfile ./Distribution/Simple/SrcDist.hs hunk ./Distribution/InstalledPackageInfo.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.InstalledPackageInfo +-- Copyright : (c) The University of Glasgow 2004 +-- +-- Maintainer : libraries@haskell.org +-- Stability : alpha +-- Portability : portable +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2004, The University of Glasgow +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the University nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + hunk ./Distribution/InstalledPackageInfo.hs 46 -module Distribution.InstalledPackageInfo where +module Distribution.InstalledPackageInfo ( + InstalledPackageInfo(..), + emptyInstalledPackageInfo + ) where hunk ./Distribution/InstalledPackageInfo.hs 52 -import Distribution.Package(PackageIdentifier(..), PackageConfig) +import Distribution.Package(PackageIdentifier(..)) hunk ./Distribution/Package.hs 44 -module Distribution.Package(PackageIdentifier(..), - PackageConfig(..)) +module Distribution.Package ( + PackageIdentifier(..), + PackageDescription(..), + emptyPackageDescription + ) where hunk ./Distribution/Package.hs 50 -where - hunk ./Distribution/Package.hs 51 -import Distribution.Misc(License, Dependency, Extension) +import Distribution.Misc(License(..), Dependency, Extension) hunk ./Distribution/Package.hs 58 -data PackageConfig - = PackageConfig {package :: PackageIdentifier, - licenese :: License, - copyright :: String, - maintainer :: String, - stability :: String, - buildDepends :: [ Dependency ], - sources :: [ FilePath ], - extensions :: [ Extension ], - library :: String, -- library name - extraLibs :: [ String ], - includeDirs :: [ FilePath ], - includes :: [ FilePath ], - options :: [ (CompilerFlavor, [String]) ] +-- | This data type is the internal representation of the file @pkg.descr@. +-- It contains two kinds of information about the package: information +-- which is needed for all packages, such as the package name and version, and +-- information which is needed for the simple build system only, such as +-- the compiler options and library name. +-- +data PackageDescription + = PackageDescription { + -- the following are required by all packages: + package :: PackageIdentifier, + licenese :: License, + copyright :: String, + maintainer :: String, + stability :: String, + + -- the following are required by the simple build infrastructure only: + buildDepends :: [ Dependency ], + allModules :: [ String ], + exposedModules :: [ String ], + extensions :: [ Extension ], + library :: String, -- library name + extraLibs :: [ String ], + includeDirs :: [ FilePath ], + includes :: [ FilePath ], + options :: [ (CompilerFlavor, [String]) ] + } + deriving (Show) + +emptyPackageDescription :: PackageDescription +emptyPackageDescription + = PackageDescription {package = undefined, + licenese = AllRightsReserved, + copyright = "", + maintainer = "", + stability = "", + buildDepends = [], + allModules = [], + exposedModules = [], + extensions = [], + library = "", + extraLibs = [], + includeDirs = [], + includes = [], + options = [] hunk ./Distribution/Package.hs 103 - deriving Show hunk ./Distribution/Simple/Build.hs 42 -module Distribution.Simple.Build where +module Distribution.Simple.Build ( + build + ) where hunk ./Distribution/Simple/Build.hs 46 -import Distribution.Package(PackageConfig) +import Distribution.Package(PackageDescription) hunk ./Distribution/Simple/Build.hs 49 -build :: PackageConfig -> LocalBuildInfo -> IO () -build _ _ = return () +import System.IO +import System.Exit hunk ./Distribution/Simple/Build.hs 52 +build :: PackageDescription -> LocalBuildInfo -> IO () +build pkg_descr lbi = do + hPutStrLn stderr "ToDo: building..." + exitWith (ExitFailure 1) + + -- construct ghc --make command line + -- run it + -- build a library + + hunk ./Distribution/Simple/Configure.hs 52 -import Distribution.Package(PackageConfig(..)) +import Distribution.Package(PackageDescription(..)) hunk ./Distribution/Simple/Configure.hs 55 -import System.IO +import System.IO hiding (catch) hunk ./Distribution/Simple/Configure.hs 60 +import Control.Exception ( catch, evaluate ) +import Prelude hiding (catch) hunk ./Distribution/Simple/Configure.hs 78 - return (read str) + let bi = read str + evaluate bi `catch` \e -> + die "error reading .setup-config; perhaps run ./Setup.lhs configure?" + return bi hunk ./Distribution/Simple/Configure.hs 93 -configure :: PackageConfig -> ConfigFlags -> IO LocalBuildInfo +configure :: PackageDescription -> ConfigFlags -> IO LocalBuildInfo hunk ./Distribution/Simple/Configure.hs 109 -system_default_prefix PackageConfig{package=package} = +system_default_prefix PackageDescription{package=package} = hunk ./Distribution/Simple/Configure.hs 119 -configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> PackageConfig +configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> PackageDescription hunk ./Distribution/Simple/Configure.hs 203 - simonMarGHC <- configure PackageConfig{} (Just GHC, + simonMarGHC <- configure PackageDescription{} (Just GHC, hunk ./Distribution/Simple/Install.hs 46 -import Distribution.Package(PackageConfig) +import Distribution.Package(PackageDescription) hunk ./Distribution/Simple/Install.hs 49 -install :: PackageConfig -> LocalBuildInfo -> IO () +install :: PackageDescription -> LocalBuildInfo -> IO () hunk ./Distribution/Simple/Register.hs 44 -module Distribution.Simple.Register where +module Distribution.Simple.Register ( + register, + unregister, + ) where hunk ./Distribution/Simple/Register.hs 50 -import Distribution.Package(PackageConfig) +import Distribution.Package(PackageDescription) hunk ./Distribution/Simple/Register.hs 53 -getUseInfo :: LocalBuildInfo -> PackageConfig -> InstalledPackageInfo -getUseInfo _ _ = undefined +import System.IO +import System.Exit hunk ./Distribution/Simple/Register.hs 56 +register :: PackageDescription -> LocalBuildInfo -> IO () +register pkg_descr lbi = do + hPutStrLn stderr "ToDo: registering..." + exitWith (ExitFailure 1) + +unregister :: PackageDescription -> LocalBuildInfo -> IO () +unregister pkg_descr lbi = do + hPutStrLn stderr "ToDo: unregistering..." + exitWith (ExitFailure 1) + hunk ./Distribution/Simple/SrcDist.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.SrcDist +-- Copyright : Simon Marlow 2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : +-- + +{- Copyright (c) 2003-2004, Simon Marlow +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.SrcDist ( + sdist + ) where + +import Distribution.Package(PackageDescription) +import Distribution.Simple.Configure(LocalBuildInfo) + +import System.IO +import System.Exit + +sdist :: PackageDescription -> LocalBuildInfo -> IO () +sdist pkg_descr lbi = do + hPutStrLn stderr "ToDo: sdisting..." + exitWith (ExitFailure 1) hunk ./Distribution/Simple.hs 47 - defaultMain, emptyPackageConfig, + defaultMain, hunk ./Distribution/Simple.hs 56 -import Distribution.Simple.Build(build) +import Distribution.Simple.Build ( build ) +import Distribution.Simple.SrcDist ( sdist ) +import Distribution.Simple.Register ( register, unregister ) + hunk ./Distribution/Simple.hs 72 -doBuildInstall :: (PackageConfig -> LocalBuildInfo -> IO ()) -- ^function to apply - -> PackageConfig +doBuildInstall :: (PackageDescription -> LocalBuildInfo -> IO ()) -- ^function to apply + -> PackageDescription hunk ./Distribution/Simple.hs 79 -defaultMain :: PackageConfig -> IO () -defaultMain pkgconfig +defaultMain :: PackageDescription -> IO () +defaultMain pkg_descr hunk ./Distribution/Simple.hs 86 - when (not (null extra_flags)) $ do - die ("Unrecognised flags: " ++ - concat (intersperse "," (extra_flags))) - localbuildinfo <- configure pkgconfig flags + no_extra_flags extra_flags + localbuildinfo <- configure pkg_descr flags hunk ./Distribution/Simple.hs 90 + Right (BuildCmd, extra_flags) -> do + no_extra_flags extra_flags + localbuildinfo <- getPersistBuildConfig + build pkg_descr localbuildinfo + + Right (InstallCmd maybe_install_prefix, extra_flags) -> do + no_extra_flags extra_flags + localbuildinfo <- getPersistBuildConfig + install pkg_descr localbuildinfo + + Right (SDistCmd, extra_flags) -> do + no_extra_flags extra_flags + localbuildinfo <- getPersistBuildConfig + sdist pkg_descr localbuildinfo + + Right (RegisterCmd, extra_flags) -> do + no_extra_flags extra_flags + localbuildinfo <- getPersistBuildConfig + register pkg_descr localbuildinfo + + Right (UnregisterCmd, extra_flags) -> do + no_extra_flags extra_flags + localbuildinfo <- getPersistBuildConfig + unregister pkg_descr localbuildinfo + hunk ./Distribution/Simple.hs 118 - --- (BuildCmd, _) -> doBuildInstall build p --- (InstallCmd _, _) -> doBuildInstall install p - - _other -> die "unimplemented command\n" hunk ./Distribution/Simple.hs 120 -emptyPackageConfig :: PackageConfig -emptyPackageConfig - = PackageConfig {package = undefined, - licenese = AllRightsReserved, - copyright = "", - maintainer = "", - stability = "", - buildDepends = [], - sources = [], - extensions = [], - library = "", - extraLibs = [], - includeDirs = [], - includes = [], - options = [] - } +no_extra_flags [] = return () +no_extra_flags extra_flags = + die ("Unrecognised flags: " ++ concat (intersperse "," (extra_flags))) hunk ./Distribution/TODO 1 -* Documentation -** Integrate SimonPJ's document into the "proposal" (simonpj) -** x-pkg command-line interface - hunk ./Distribution/TODO 2 +** parse pkg.desc hunk ./Distribution/TODO 8 +** configure: check for presence of build dependencies hunk ./Distribution/TODO 12 -** command-line parsing errors hunk ./test/Setup.hs 5 -pkgconfig = emptyPackageConfig { - package = PackageIdentifier "test" (Version [1,0] []) +pkg_descr = emptyPackageDescription { + package = PackageIdentifier "test" (Version [1,0] []), + allModules = ["A"], + exposedModules = ["A"] hunk ./test/Setup.hs 11 -main = defaultMain pkgconfig +main = defaultMain pkg_descr hunk ./Distribution/Package.hs 45 - PackageIdentifier(..), + PackageIdentifier(..), + showPackageId, hunk ./Distribution/Package.hs 51 -import Distribution.Version(Version) +import Distribution.Version(Version, showVersion) hunk ./Distribution/Package.hs 59 +showPackageId :: PackageIdentifier -> String +showPackageId pkgid = + pkgName pkgid ++ '-': showVersion (pkgVersion pkgid) + hunk ./Distribution/Simple/Build.hs 46 -import Distribution.Package(PackageDescription) +import Distribution.Package hunk ./Distribution/Simple/Build.hs 48 +import Distribution.Simple.Utils(setupMessage) hunk ./Distribution/Simple/Build.hs 55 - hPutStrLn stderr "ToDo: building..." + setupMessage "Configuring" pkg_descr hunk ./Distribution/Simple/Configure.hs 53 -import Distribution.Simple.Utils (splitFilenameDir, die, split) +import Distribution.Simple.Utils (splitFilenameDir, die, split, setupMessage) hunk ./Distribution/Simple/Configure.hs 94 -configure pkgconfig (maybe_hc_flavor, maybe_hc_path, maybe_prefix) +configure pkg_descr (maybe_hc_flavor, maybe_hc_path, maybe_prefix) hunk ./Distribution/Simple/Configure.hs 96 + setupMessage "Configuring" pkg_descr hunk ./Distribution/Simple/Configure.hs 100 - Nothing -> system_default_prefix pkgconfig + Nothing -> system_default_prefix pkg_descr hunk ./Distribution/Simple/Configure.hs 104 - compiler@(Compiler f' p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path pkgconfig + compiler@(Compiler f' p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path pkg_descr hunk ./Distribution/Simple/Configure.hs 123 -configCompiler (Just flavor) (Just path) pkgconfig +configCompiler (Just flavor) (Just path) pkg_descr hunk ./Distribution/Simple/Configure.hs 129 -configCompiler (Just flavor) Nothing pkgconfig +configCompiler (Just flavor) Nothing pkg_descr hunk ./Distribution/Simple/Configure.hs 136 -configCompiler Nothing maybe_path pkgconfig - = configCompiler (Just defaultCompilerFlavor) maybe_path pkgconfig +configCompiler Nothing maybe_path pkg_descr + = configCompiler (Just defaultCompilerFlavor) maybe_path pkg_descr hunk ./Distribution/Simple/Install.hs 44 -module Distribution.Simple.Install(install) where +module Distribution.Simple.Install ( + install + ) where hunk ./Distribution/Simple/Install.hs 50 +import Distribution.Simple.Utils(setupMessage) hunk ./Distribution/Simple/Install.hs 52 +import System.Exit + hunk ./Distribution/Simple/Install.hs 55 -install _ _ = return () +install pkg_descr localbuildinfo = do + setupMessage "Installing" pkg_descr + exitWith (ExitFailure 1) hunk ./Distribution/Simple/Install.hs 59 + hunk ./Distribution/Simple/Register.hs 52 +import Distribution.Simple.Utils(setupMessage) hunk ./Distribution/Simple/Register.hs 59 - hPutStrLn stderr "ToDo: registering..." + setupMessage "Registering" pkg_descr hunk ./Distribution/Simple/Register.hs 64 - hPutStrLn stderr "ToDo: unregistering..." + setupMessage "Unregistering" pkg_descr hunk ./Distribution/Simple/SrcDist.hs 48 +import Distribution.Simple.Utils(setupMessage) hunk ./Distribution/Simple/SrcDist.hs 55 - hPutStrLn stderr "ToDo: sdisting..." + setupMessage "Building source dist for" pkg_descr hunk ./Distribution/Simple/Utils.hs 49 - die + setupMessage, + die, hunk ./Distribution/Simple/Utils.hs 53 +import Distribution.Package + hunk ./Distribution/Simple/Utils.hs 87 +setupMessage :: String -> PackageDescription -> IO () +setupMessage msg pkg_descr = + putStrLn (msg ++ ' ':showPackageId (package pkg_descr) ++ "...") + hunk ./Distribution/Simple/Build.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} hunk ./Distribution/Simple/Build.hs 47 +import Distribution.Setup hunk ./Distribution/Simple/Build.hs 49 -import Distribution.Simple.Configure(LocalBuildInfo) -import Distribution.Simple.Utils(setupMessage) +import Distribution.Simple.Configure +import Distribution.Simple.Utils hunk ./Distribution/Simple/Build.hs 54 +import System.Cmd (rawSystem) +import Control.Monad hunk ./Distribution/Simple/Build.hs 57 +-- ----------------------------------------------------------------------------- +-- Build the library + hunk ./Distribution/Simple/Build.hs 62 - setupMessage "Configuring" pkg_descr - exitWith (ExitFailure 1) + setupMessage "Building" pkg_descr hunk ./Distribution/Simple/Build.hs 64 - -- construct ghc --make command line - -- run it - -- build a library + when (compilerFlavor (compiler lbi) /= GHC) $ + die ("only building with GHC is implemented") + + -- first, build the modules + let args = constructGHCCmdLine pkg_descr lbi + rawSystemExit (compilerPath (compiler lbi)) args hunk ./Distribution/Simple/Build.hs 71 + -- now, build the library + let objs = map (++objsuffix) (allModules pkg_descr) + lib = mkLibName (library pkg_descr) + rawSystemPathExit "ar" (["q", lib] ++ objs) hunk ./Distribution/Simple/Build.hs 76 +constructGHCCmdLine :: PackageDescription -> LocalBuildInfo -> [String] +constructGHCCmdLine pkg_descr lbi = + [ + "--make", + "-package-name", showPackageId (package pkg_descr) + ] + ++ extensionsToGHCFlag (extensions pkg_descr) + ++ [ opt | (GHC,opts) <- options pkg_descr, opt <- opts ] + ++ allModules pkg_descr + +extensionsToGHCFlag _ = [] -- ToDo + +#ifdef mingw32_TARGET_OS +objsuffix = ".obj" +#else +objsuffix = ".o" +#endif + +mkLibName lib = "lib" ++ lib ++ ".a" + + -- ToDo: includes, includeDirs + hunk ./Distribution/Simple/Configure.hs 53 -import Distribution.Simple.Utils (splitFilenameDir, die, split, setupMessage) +import Distribution.Simple.Utils hunk ./Distribution/Simple/Configure.hs 68 -data LocalBuildInfo = LocalBuildInfo {prefix :: String, - compiler :: Compiler} - deriving (Show, Read, Eq) +data LocalBuildInfo = LocalBuildInfo { + prefix :: String, + compiler :: Compiler + } + deriving (Show, Read, Eq) hunk ./Distribution/Simple/Configure.hs 151 -findCompiler flavor = findBinary (compilerBinaryName flavor) +findCompiler flavor = do + let prog = compilerBinaryName flavor + message $ "searching for " ++ prog ++ " in path." + res <- findBinary prog + case res of + Nothing -> die ("Cannot find compiler for " ++ prog) + Just path -> do message ("found " ++ prog ++ " at "++ path) + return path hunk ./Distribution/Simple/Configure.hs 181 -findBinary :: String -> IO FilePath -findBinary binary = do - path <- getEnv "PATH" - message $ "searching for " ++ binary ++ " in path." - search (parsePath path) - where - search :: [FilePath] -> IO FilePath - search [] = die ("Cannot find compiler for " ++ binary) - search (d:ds) = do - let path = d ++ '/':binary - b <- doesFileExist path - if b then do message ("found " ++ binary ++ " at "++ path); return path - else search ds - -parsePath :: String -> [FilePath] -parsePath path = split pathSep path - where -#ifdef mingw32_TARGET_OS - pathSep = ';' -#else - pathSep = ':' -#endif - hunk ./Distribution/Simple/Utils.hs 51 + findBinary, + rawSystemPath, + rawSystemExit, + rawSystemPathExit, hunk ./Distribution/Simple/Utils.hs 61 +import System.Cmd +import System.Environment +import System.Directory hunk ./Distribution/Simple/Utils.hs 101 +-- ToDo: add cacheing? +findBinary :: String -> IO (Maybe FilePath) +findBinary binary = do + path <- getEnv "PATH" + search (parsePath path) + where + search :: [FilePath] -> IO (Maybe FilePath) + search [] = return Nothing + search (d:ds) = do + let path = d ++ '/':binary + b <- doesFileExist path + if b then return (Just path) + else search ds + +parsePath :: String -> [FilePath] +parsePath path = split pathSep path + where +#ifdef mingw32_TARGET_OS + pathSep = ';' +#else + pathSep = ':' +#endif + +-- ----------------------------------------------------------------------------- +-- rawSystem variants + +rawSystemPath :: String -> [String] -> IO ExitCode +rawSystemPath prog args = do + r <- findBinary prog + case r of + Nothing -> die ("Cannot find: " ++ prog) + Just path -> rawSystem path args + +maybeExit :: IO ExitCode -> IO () +maybeExit cmd = do + res <- cmd + if res /= ExitSuccess + then exitWith res + else return () + +-- Exit with the same exitcode if the subcommand fails +rawSystemExit :: FilePath -> [String] -> IO () +rawSystemExit path args = do + putStrLn (path ++ concat (map (' ':) args)) + --ToDo: make command display conditional on -v flag? + maybeExit $ rawSystem path args + +-- Exit with the same exitcode if the subcommand fails +rawSystemPathExit :: String -> [String] -> IO () +rawSystemPathExit prog args = do + putStrLn (prog ++ concat (map (' ':) args)) + --ToDo: make command display conditional on -v flag? + maybeExit $ rawSystemPath prog args + hunk ./Distribution/TODO 13 +** configure should check for 'ar' args + properties (see fptools/aclocal.m4) +** most commands should accept a -v flag to show command lines? hunk ./Distribution/Package.hs 81 + cSources :: [ FilePath ], hunk ./Distribution/Package.hs 84 - library :: String, -- library name hunk ./Distribution/Package.hs 100 + cSources = [], hunk ./Distribution/Package.hs 103 - library = "", hunk ./Distribution/Simple/Build.hs 71 + -- build any C sources + when (not (null (cSources pkg_descr))) $ + rawSystemExit (compilerPath (compiler lbi)) (cSources pkg_descr) + hunk ./Distribution/Simple/Build.hs 77 - lib = mkLibName (library pkg_descr) + lib = mkLibName (showPackageId (package pkg_descr)) hunk ./Distribution/Simple/Build.hs 98 -mkLibName lib = "lib" ++ lib ++ ".a" +mkLibName lib = "libHS" ++ lib ++ ".a" hunk ./Distribution/TODO 15 +** configure should check sanity of PackageDescription, eg. library /= "" ? addfile ./Distribution/Simple/GHCPackageConfig.hs addfile ./test/A.hs hunk ./Distribution/InstalledPackageInfo.hs 48 - emptyInstalledPackageInfo + emptyInstalledPackageInfo, hunk ./Distribution/Simple/Configure.hs 54 +import Distribution.Package ( PackageIdentifier ) hunk ./Distribution/Simple/Configure.hs 70 - prefix :: String, - compiler :: Compiler + prefix :: String, + -- ^ The installation directory (eg. @/usr/local@, or + -- @C:/Program Files/foo-1.2@ on Windows. + compiler :: Compiler, + -- ^ The compiler we're building with + packageDeps :: [PackageIdentifier] + -- ^ Which packages we depend on, *exactly*, The + -- 'PackageDescription' specifies a set of build dependencies + -- that must be satisfied in terms of version ranges. This + -- field fixes those dependencies to the specific versions + -- available on this machine for this compiler. hunk ./Distribution/Simple/Configure.hs 92 - die "error reading .setup-config; perhaps run ./Setup.lhs configure?" + die "error reading .setup-config; run ./Setup.lhs configure?\n" hunk ./Distribution/Simple/Configure.hs 120 - return LocalBuildInfo{prefix=prefix, compiler=compiler} + return LocalBuildInfo{prefix=prefix, compiler=compiler, packageDeps=[]} hunk ./Distribution/Simple/Configure.hs 207 - (simonMarGHCLoc ++ "-pkg"))) + (simonMarGHCLoc ++ "-pkg")) []) hunk ./Distribution/Simple/GHCPackageConfig.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.GHCPackageConfig +-- Copyright : (c) The University of Glasgow 2004 +-- +-- Maintainer : libraries@haskell.org +-- Stability : alpha +-- Portability : portable +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +module Distribution.Simple.GHCPackageConfig ( + GHCPackageConfig(..), + mkGHCPackageConfig, + defaultGHCPackageConfig, + showGHCPackageConfig + ) where + +import Distribution.Package +import Distribution.Simple.Configure +import Distribution.Simple.Install + +import Text.PrettyPrint.HughesPJ + +-- ----------------------------------------------------------------------------- +-- GHC 6.2 PackageConfig type + +-- Until GHC supports the InstalledPackageInfo type above, we use its +-- existing PackagConfig type. + +mkGHCPackageConfig :: PackageDescription -> LocalBuildInfo -> GHCPackageConfig +mkGHCPackageConfig pkg_descr lbi + = defaultGHCPackageConfig { + name = pkg_name, + auto = True, + import_dirs = [mkImportDir pkg_descr lbi], + hs_libraries = [pkg_name], + extra_libraries = extraLibs pkg_descr, + include_dirs = includeDirs pkg_descr, + c_includes = includes pkg_descr, + package_deps = map showPackageId (packageDeps lbi) + } + where + pkg_name = showPackageId (package pkg_descr) + +data GHCPackageConfig + = GHCPackage { + name :: String, + auto :: Bool, + import_dirs :: [String], + source_dirs :: [String], + library_dirs :: [String], + hs_libraries :: [String], + extra_libraries :: [String], + include_dirs :: [String], + c_includes :: [String], + package_deps :: [String], + extra_ghc_opts :: [String], + extra_cc_opts :: [String], + extra_ld_opts :: [String], + framework_dirs :: [String], -- ignored everywhere but on Darwin/MacOS X + extra_frameworks:: [String] -- ignored everywhere but on Darwin/MacOS X + } + +defaultGHCPackageConfig + = GHCPackage { + name = error "defaultPackage", + auto = False, + import_dirs = [], + source_dirs = [], + library_dirs = [], + hs_libraries = [], + extra_libraries = [], + include_dirs = [], + c_includes = [], + package_deps = [], + extra_ghc_opts = [], + extra_cc_opts = [], + extra_ld_opts = [], + framework_dirs = [], + extra_frameworks= [] + } + +-- --------------------------------------------------------------------------- +-- Pretty printing package info + +showGHCPackageConfig :: GHCPackageConfig -> String +showGHCPackageConfig pkg = render $ + text "Package" $$ nest 3 (braces ( + sep (punctuate comma [ + text "name = " <> text (show (name pkg)), + text "auto = " <> text (show (auto pkg)), + dumpField "import_dirs" (import_dirs pkg), + dumpField "source_dirs" (source_dirs pkg), + dumpField "library_dirs" (library_dirs pkg), + dumpField "hs_libraries" (hs_libraries pkg), + dumpField "extra_libraries" (extra_libraries pkg), + dumpField "include_dirs" (include_dirs pkg), + dumpField "c_includes" (c_includes pkg), + dumpField "package_deps" (package_deps pkg), + dumpField "extra_ghc_opts" (extra_ghc_opts pkg), + dumpField "extra_cc_opts" (extra_cc_opts pkg), + dumpField "extra_ld_opts" (extra_ld_opts pkg), + dumpField "framework_dirs" (framework_dirs pkg), + dumpField "extra_frameworks"(extra_frameworks pkg) + ]))) + +dumpField :: String -> [String] -> Doc +dumpField name val = hang (text name <+> equals) 2 (dumpFieldContents val) + +dumpFieldContents :: [String] -> Doc +dumpFieldContents val = brackets (sep (punctuate comma (map (text . show) val))) hunk ./Distribution/Simple/Install.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Install.hs 46 - install + install, + mkImportDir hunk ./Distribution/Simple/Install.hs 50 -import Distribution.Package(PackageDescription) -import Distribution.Simple.Configure(LocalBuildInfo) +import Distribution.Package +import Distribution.Simple.Configure(LocalBuildInfo(..)) hunk ./Distribution/Simple/Install.hs 62 +-- ----------------------------------------------------------------------------- +-- Installation policies + +mkImportDir :: PackageDescription -> LocalBuildInfo -> FilePath +mkImportDir pkg_descr lbi = +#ifdef mingw32_TARGET_OS + prefix lbi ++ '/':pkg_name +#else + prefix lbi ++ "/lib/" ++ pkg_name +#endif + where + pkg_name = showPackageId (package pkg_descr) + + hunk ./Distribution/Simple/Register.hs 49 -import Distribution.Simple.Configure(LocalBuildInfo) -import Distribution.Package(PackageDescription) +import Distribution.Simple.Configure +import Distribution.Setup +import Distribution.Package hunk ./Distribution/Simple/Register.hs 53 -import Distribution.Simple.Utils(setupMessage) +import Distribution.Simple.Utils +import Distribution.Simple.GHCPackageConfig hunk ./Distribution/Simple/Register.hs 59 +import Control.Monad + +-- ----------------------------------------------------------------------------- +-- Registration + hunk ./Distribution/Simple/Register.hs 67 - exitWith (ExitFailure 1) + + when (compilerFlavor (compiler lbi) /= GHC) $ + die ("only registering with GHC is implemented") + + let pkg_config = mkGHCPackageConfig pkg_descr lbi + writeFile installedPkgConfigFile (showGHCPackageConfig pkg_config) hunk ./Distribution/Simple/Register.hs 74 + rawSystemExit (compilerPkgTool (compiler lbi)) + ["--add-package", "--input-file="++installedPkgConfigFile] + +installedPkgConfigFile = "installed-pkg-config" + +-- ----------------------------------------------------------------------------- +-- Unregistration + hunk ./Distribution/Simple/Register.hs 85 - exitWith (ExitFailure 1) hunk ./Distribution/Simple/Register.hs 86 + when (compilerFlavor (compiler lbi) /= GHC) $ + die ("only unregistering with GHC is implemented") + + rawSystemExit (compilerPkgTool (compiler lbi)) + ["--remove-package=" ++ showPackageId (package pkg_descr)] + hunk ./Distribution/Simple/Utils.hs 65 +-- ----------------------------------------------------------------------------- +-- Pathname-related utils + hunk ./Distribution/Simple/Utils.hs 97 -setupMessage :: String -> PackageDescription -> IO () -setupMessage msg pkg_descr = - putStrLn (msg ++ ' ':showPackageId (package pkg_descr) ++ "...") - -die :: String -> IO a -die msg = do hPutStr stderr msg; exitWith (ExitFailure 1) - hunk ./Distribution/Simple/Utils.hs 121 +-- Utils for setup + +setupMessage :: String -> PackageDescription -> IO () +setupMessage msg pkg_descr = + putStrLn (msg ++ ' ':showPackageId (package pkg_descr) ++ "...") + +die :: String -> IO a +die msg = do hPutStr stderr msg; exitWith (ExitFailure 1) + +-- ----------------------------------------------------------------------------- hunk ./test/A.hs 1 +module A where +a = 42 :: Int hunk ./Distribution/ModuleTest.hs 2 + hunk ./Distribution/Setup.hs 143 - noFlags str cmd [] unkFlags + noFlags _ cmd [] unkFlags hunk ./Distribution/Setup.hs 145 - noFlags str cmd _ unkFlags + noFlags str _ _ _ hunk ./Distribution/Setup.hs 154 --- Converts the abstract "flag" type to a more concrete type. +-- |Converts the abstract "flag" type to a more concrete type. hunk ./Distribution/Simple.hs 68 -import Control.Monad ( when ) hunk ./Distribution/Simple.hs 94 - Right (InstallCmd maybe_install_prefix, extra_flags) -> do + Right (InstallCmd _, extra_flags) -> do hunk ./Distribution/Simple.hs 119 +no_extra_flags :: [String] -> IO () hunk ./Distribution/Simple/Build.hs 47 -import Distribution.Setup -import Distribution.Package -import Distribution.Simple.Configure -import Distribution.Simple.Utils +import Distribution.Misc (Extension) +import Distribution.Setup (CompilerFlavor(..), compilerFlavor, compilerPath) +import Distribution.Package (PackageDescription(..), showPackageId) +import Distribution.Simple.Configure (LocalBuildInfo, compiler) +import Distribution.Simple.Utils (rawSystemExit, setupMessage, + die, rawSystemPathExit) hunk ./Distribution/Simple/Build.hs 54 -import System.IO -import System.Exit -import System.Cmd (rawSystem) -import Control.Monad +import Control.Monad (when) hunk ./Distribution/Simple/Build.hs 80 -constructGHCCmdLine pkg_descr lbi = +constructGHCCmdLine pkg_descr _ = hunk ./Distribution/Simple/Build.hs 89 +extensionsToGHCFlag :: [ Extension ] -> [String] hunk ./Distribution/Simple/Build.hs 98 +mkLibName :: String -> String hunk ./Distribution/Simple/Configure.hs 59 -import System.Environment ( getEnv ) hunk ./Distribution/Simple/Configure.hs 90 - evaluate bi `catch` \e -> + evaluate bi `catch` \_ -> hunk ./Distribution/Simple/Configure.hs 121 +system_default_prefix :: PackageDescription -> String hunk ./Distribution/Simple/Configure.hs 135 -configCompiler (Just flavor) (Just path) pkg_descr +configCompiler (Just flavor) (Just path) _ hunk ./Distribution/Simple/Configure.hs 141 -configCompiler (Just flavor) Nothing pkg_descr +configCompiler (Just flavor) Nothing _ hunk ./Distribution/Simple/Configure.hs 171 +compilerBinaryName :: CompilerFlavor -> String hunk ./Distribution/Simple/Configure.hs 176 +compilerPkgToolName :: CompilerFlavor -> String hunk ./Distribution/Simple/Configure.hs 193 +message :: String -> IO () hunk ./Distribution/Simple/GHCPackageConfig.hs 66 +defaultGHCPackageConfig :: GHCPackageConfig hunk ./Distribution/Simple/GHCPackageConfig.hs 111 -dumpField name val = hang (text name <+> equals) 2 (dumpFieldContents val) +dumpField name' val = hang (text name' <+> equals) 2 (dumpFieldContents val) hunk ./Distribution/Simple/Install.hs 57 -install pkg_descr localbuildinfo = do +install pkg_descr _ = do hunk ./Distribution/Simple/Register.hs 49 -import Distribution.Simple.Configure -import Distribution.Setup -import Distribution.Package -import Distribution.InstalledPackageInfo(InstalledPackageInfo) -import Distribution.Simple.Utils -import Distribution.Simple.GHCPackageConfig +import Distribution.Simple.Configure (LocalBuildInfo, compiler) +import Distribution.Setup (CompilerFlavor(..), Compiler(..)) +import Distribution.Package (PackageDescription, package, showPackageId) +import Distribution.Simple.Utils (setupMessage, rawSystemExit, die) +import Distribution.Simple.GHCPackageConfig (mkGHCPackageConfig, showGHCPackageConfig) hunk ./Distribution/Simple/Register.hs 55 -import System.IO -import System.Exit +import Control.Monad (when) hunk ./Distribution/Simple/Register.hs 57 -import Control.Monad - hunk ./Distribution/Simple/SrcDist.hs 54 -sdist pkg_descr lbi = do +sdist pkg_descr _ = do hunk ./Distribution/Simple/Utils.hs 83 -split_longest_prefix s pred +split_longest_prefix s pred' hunk ./Distribution/Simple/Utils.hs 86 - (_:pre) -> (reverse pre, reverse suf) - where (suf,pre) = break pred (reverse s) + (_:pre') -> (reverse pre', reverse suf) + where (suf,pre) = break pred' (reverse s) hunk ./Distribution/Version.hs 62 -import Time (Month(..)) hunk ./Distribution/Version.hs 150 +orLaterVersion :: Version -> VersionRange hunk ./Distribution/Version.hs 152 + +orEarlierVersion :: Version -> VersionRange hunk ./Distribution/Version.hs 156 + +betweenVersionsInclusive :: Version -> Version -> VersionRange hunk ./Distribution/Version.hs 161 +laterVersion :: Version -> Version -> Bool hunk ./Distribution/Version.hs 163 + +earlierVersion :: Version -> Version -> Bool hunk ./Distribution/Version.hs 358 - +branch1 :: [Int] hunk ./Distribution/Version.hs 360 + +branch2 :: [Int] hunk ./Distribution/Version.hs 363 + +branch3 :: [Int] hunk ./Distribution/Version.hs 366 + +branch4 :: [Int] hunk ./Distribution/Version.hs 370 +release1 :: Version hunk ./Distribution/Version.hs 372 + +release2 :: Version hunk ./Distribution/Version.hs 375 + +release3 :: Version hunk ./Distribution/Version.hs 378 + +release4 :: Version hunk ./test/A.hs 1 -module A where +module Main where hunk ./test/A.hs 4 +main = print a + hunk ./Distribution/Simple/Build.hs 63 - when (compilerFlavor (compiler lbi) /= GHC) $ - die ("only building with GHC is implemented") - + case compilerFlavor (compiler lbi) of + GHC -> buildGHC pkg_descr lbi + NHC -> buildNHC pkg_descr lbi + _ -> die ("only building with GHC is implemented") + +-- |FIX: For now, the target must contain a main module :( +buildNHC :: PackageDescription -> LocalBuildInfo -> IO () +buildNHC pkg_descr lbi = do + rawSystemExit (compilerPath (compiler lbi)) + (["-nhc98"] + ++ extensionsToNHCFlag (extensions pkg_descr) + ++ [ opt | (NHC,opts) <- options pkg_descr, opt <- opts ] + ++ allModules pkg_descr) + +-- |Building for GHC +buildGHC :: PackageDescription -> LocalBuildInfo -> IO () +buildGHC pkg_descr lbi = do + hunk ./Distribution/Simple/Build.hs 107 +extensionsToNHCFlag :: [ Extension ] -> [String] +extensionsToNHCFlag _ = [] -- ToDo + +objsuffix :: String hunk ./Distribution/Simple/Configure.hs 173 -compilerBinaryName NHC = "nhc98" +compilerBinaryName NHC = "hmake" -- FIX: uses hmake for now hunk ./Distribution/Simple/Configure.hs 178 -compilerPkgToolName NHC = "nhc98-pkg" +compilerPkgToolName NHC = "hmake" -- FIX: nhc98-pkg Does not yet exist hunk ./Distribution/Simple/Register.hs 64 - when (compilerFlavor (compiler lbi) /= GHC) $ - die ("only registering with GHC is implemented") - - let pkg_config = mkGHCPackageConfig pkg_descr lbi - writeFile installedPkgConfigFile (showGHCPackageConfig pkg_config) + case compilerFlavor (compiler lbi) of + GHC -> do let pkg_config = mkGHCPackageConfig pkg_descr lbi + writeFile installedPkgConfigFile (showGHCPackageConfig pkg_config) + rawSystemExit (compilerPkgTool (compiler lbi)) + ["--add-package", "--input-file="++installedPkgConfigFile] + _ -> die ("only registering with GHC is implemented") hunk ./Distribution/Simple/Register.hs 71 - rawSystemExit (compilerPkgTool (compiler lbi)) - ["--add-package", "--input-file="++installedPkgConfigFile] - +installedPkgConfigFile :: String addfile ./test/Makefile hunk ./Distribution/Package.hs 80 - allModules :: [ String ], + allModules :: [ FilePath ], + mainModules :: [ FilePath ], hunk ./Distribution/Package.hs 101 + mainModules = [], hunk ./Distribution/Simple/Configure.hs 69 - prefix :: String, + prefix :: FilePath, hunk ./Distribution/Simple/Install.hs 54 +import Data.List(inits, nub, intersperse, findIndices) +import System.Cmd(system) +import System.Directory(doesDirectoryExist, createDirectory) hunk ./Distribution/Simple/Install.hs 59 + +-- |FIX: for now, only works with hugs or sdist-style +-- installation... must implement for .hi files and such... how do we +-- know which files to expect? hunk ./Distribution/Simple/Install.hs 64 -install pkg_descr _ = do +install pkg_descr lbi = do hunk ./Distribution/Simple/Install.hs 66 + moveSources (prefix lbi) (allModules pkg_descr) (mainModules pkg_descr) hunk ./Distribution/Simple/Install.hs 69 - hunk ./Distribution/Simple/Install.hs 82 +-- |Put the source files into the right directory in preperation for +-- something like sdist or installHugs. +moveSources :: FilePath -- ^Target directory + -> [FilePath] -- ^sources + -> [FilePath] -- ^Main modules + -> IO () +moveSources _targetDir sources mains + = do let targetDir = maybeAddSep _targetDir + createIfNotExists True targetDir + -- Create parent directories for everything: + mapM (createIfNotExists True) + $ nub [(removeFilename $ targetDir ++ x) + | x <- (sources ++ mains), (removeFilename x /= "")] + -- Put sources into place: + mapM system ["cp -r " ++ x ++ " " ++ targetDir ++ x + | x <- sources ++ mains] + return () hunk ./Distribution/Simple/Install.hs 100 +-- ------------------------------------------------------------ +-- * utility functions +-- ------------------------------------------------------------ + +-- |FIX: Do we actually have to make something differnet for windows, +-- or does this work? +pathSeperator = '/' +pathSeperatorStr = [pathSeperator] + +createIfNotExists :: Bool -- ^Create its parents too? + -> FilePath -- ^The path to the directory you want to make + -> IO () +createIfNotExists parents file + = do b <- doesDirectoryExist file + case (b,parents, file) of + (_, _, "") -> return () + (True, _, _) -> return() + (_, True, _) -> createDirectoryParents file + (_, False, _) -> createDirectory file + +-- |like mkdir -p. Create this directory and its parents +createDirectoryParents :: FilePath -> IO() +createDirectoryParents file + = mapM_ (createIfNotExists False) (pathInits file) + +-- |Get this path and all its parents. +pathInits :: FilePath -> [FilePath] +pathInits path + = map (concat . intersperse pathSeperatorStr) + (inits $ mySplit pathSeperator path) + +-- |Give a list of lists breaking apart elements who match the given criteria + +-- > mySplit '.' "foo.bar.bang" => ["foo","bar","bang"] :: [[Char]] +mySplit :: Eq a => a -> [a] -> [[a]] +mySplit a l = let (upto, rest) = break (== a) l + in if null rest + then [upto] + else upto:(mySplit a (tail rest)) + +-- |Find the last slash and remove it and everything after it. Turns +-- Foo/Bar.lhs into Foo +removeFilename :: FilePath -> FilePath +removeFilename path + = case findIndices (== pathSeperator) path of + [] -> path + l -> fst $ splitAt (maximum l) path + +-- |If this filename doesn't end in the path separator, add it. +maybeAddSep :: FilePath -> FilePath +maybeAddSep p = if last p == pathSeperator then p else p ++ pathSeperatorStr + hunk ./Distribution/TODO 2 +** Extensions -> flags interface + hunk ./Distribution/TODO 7 + +*** Installation for hugs-style (just copy source) is implemented. + also must implement for {g,n}hc style where we look for .o and .hi. + hunk ./test/Makefile 1 +all: + ghc -Wall --make -i../:/usr/local/src/HUnit-1.0 Setup.hs -o setup hunk ./test/Setup.hs 7 - allModules = ["A"], - exposedModules = ["A"] + allModules = ["A.hs", "B/A.hs"], + exposedModules = ["A.hs"] hunk ./Distribution/ModuleTest.hs 56 -import Distribution.Simple.Install() +import qualified Distribution.Simple.Install(hunitTests) hunk ./Distribution/ModuleTest.hs 75 + Distribution.Simple.Install.hunitTests >>= runTestTT' + hunk ./Distribution/Simple/Install.hs 47 - mkImportDir + mkImportDir, + hunitTests, hunk ./Distribution/Simple/Install.hs 56 +import Data.Maybe(Maybe, listToMaybe) hunk ./Distribution/Simple/Install.hs 58 -import System.Directory(doesDirectoryExist, createDirectory) +import System.Directory(doesDirectoryExist, createDirectory, doesFileExist) hunk ./Distribution/Simple/Install.hs 61 +import HUnit ((~:), (~=?), Test(..)) hunk ./Distribution/Simple/Install.hs 63 + hunk ./Distribution/Simple/Install.hs 156 +-- |Get the file path for this particular module. In the IO monad +-- because it looks for the actual file. Might eventually interface +-- with preprocessor libraries in order to correctly locate more +-- filenames. +-- Returns Nothing if the file doesn't exist. + +moduleToFilePath :: String -- ^Module Name + -> IO (Maybe FilePath) + +moduleToFilePath s + = do let possiblePaths = moduleToPossiblePaths s + matchList <- sequence $ map (\x -> do y <- doesFileExist x; return (x, y)) possiblePaths +-- sequence $ map (system . ("ls " ++)) possiblePaths + return $ listToMaybe [x | (x, True) <- matchList] + +-- |Get the possible file paths based on this module name. +moduleToPossiblePaths :: String -> [FilePath] +moduleToPossiblePaths s + = let splitted = mySplit '.' s + lastElem = last splitted + possibleSuffixes = [".hs", ".lhs"] + in [(concat (intersperse pathSeperatorStr (init splitted))) ++ pathSeperatorStr ++ x + | x <- map (lastElem++) possibleSuffixes] + + +hunitTests :: IO Test +hunitTests + = do mp1 <- moduleToFilePath "Simple.Build" --exists + mp2 <- moduleToFilePath "Foo.Bar" -- doesn't exist + return $ TestLabel "Install Tests" $ TestList + ["moduleToPossiblePaths" ~: "failed" ~: + ["Foo/Bar/Bang.hs","Foo/Bar/Bang.lhs"] + ~=? (moduleToPossiblePaths "Foo.Bar.Bang"), + "existing not found" ~: "failed" ~: (Just "Simple/Build.hs") ~=? mp1, + "not existing not nothing" ~: "failed" ~: Nothing ~=? mp2 + ] + addfile ./Makefile hunk ./Distribution/Package.hs 80 - allModules :: [ FilePath ], - mainModules :: [ FilePath ], + allModules :: [ String ], + mainModules :: [ String ], hunk ./Distribution/Simple/Install.hs 55 +import Control.Monad(when) hunk ./Distribution/Simple/Install.hs 57 -import Data.Maybe(Maybe, listToMaybe) +import Data.Maybe(Maybe, listToMaybe, isNothing, fromJust) hunk ./Distribution/Simple/Install.hs 64 - hunk ./Distribution/Simple/Install.hs 71 - exitWith (ExitFailure 1) hunk ./Distribution/Simple/Install.hs 88 - -> [FilePath] -- ^sources - -> [FilePath] -- ^Main modules + -> [String] -- ^Modules + -> [String] -- ^Main modules hunk ./Distribution/Simple/Install.hs 95 + sourceLocs <- sequence $ map moduleToFPErr (sources ++ mains) hunk ./Distribution/Simple/Install.hs 98 - | x <- (sources ++ mains), (removeFilename x /= "")] + | x <- sourceLocs, (removeFilename x /= "")] hunk ./Distribution/Simple/Install.hs 101 - | x <- sources ++ mains] + | x <- sourceLocs] hunk ./Distribution/Simple/Install.hs 103 + where moduleToFPErr m + = do p <- moduleToFilePath m + when (isNothing p) + (putStrLn ("Error: Could not find module: " ++ m) + >> exitWith (ExitFailure 1)) + return $ fromJust p hunk ./Distribution/Simple/Install.hs 116 +pathSeperator :: Char hunk ./Distribution/Simple/Install.hs 118 + +pathSeperatorStr :: String hunk ./Distribution/Simple/Install.hs 163 +maybeAddSep [] = [] hunk ./Distribution/Simple/Install.hs 187 - in [(concat (intersperse pathSeperatorStr (init splitted))) ++ pathSeperatorStr ++ x - | x <- map (lastElem++) possibleSuffixes] + pref = if (not $ null $ init splitted) + then concat (intersperse pathSeperatorStr (init splitted)) + ++ pathSeperatorStr + else "" + in [pref ++ x | x <- map (lastElem++) possibleSuffixes] hunk ./Distribution/Simple/Install.hs 194 +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ + hunk ./Distribution/Simple/Install.hs 200 - = do mp1 <- moduleToFilePath "Simple.Build" --exists + = do mp1 <- moduleToFilePath "Distribution.Simple.Build" --exists hunk ./Distribution/Simple/Install.hs 203 - ["moduleToPossiblePaths" ~: "failed" ~: + ["moduleToPossiblePaths 1" ~: "failed" ~: hunk ./Distribution/Simple/Install.hs 206 - "existing not found" ~: "failed" ~: (Just "Simple/Build.hs") ~=? mp1, + "moduleToPossiblePaths2 " ~: "failed" ~: + (moduleToPossiblePaths "Foo") + ~=? ["Foo.hs", "Foo.lhs"], + + + "existing not found" ~: "failed" ~: + (Just "Distribution/Simple/Build.hs") ~=? mp1, hunk ./Makefile 1 - +all: tests + +tests: + ghc -Wall --make -i../:/usr/local/src/HUnit-1.0 Distribution/ModuleTest -o moduleTest + +check: tests + ./moduleTest hunk ./test/Makefile 3 +clean: + rm *.o setup *.hi +check: all + ./setup configure --prefix=/tmp/foo + ./setup install + ls /tmp/foo* hunk ./test/Setup.hs 7 - allModules = ["A.hs", "B/A.hs"], - exposedModules = ["A.hs"] + allModules = ["A", "B.A"], + exposedModules = ["A"] hunk ./Distribution/ModuleTest.hs 56 -import qualified Distribution.Simple.Install(hunitTests) +import Distribution.Simple.Install() hunk ./Distribution/ModuleTest.hs 58 +import Distribution.Simple.SrcDist() +import qualified Distribution.Simple.Utils(hunitTests) hunk ./Distribution/ModuleTest.hs 77 - Distribution.Simple.Install.hunitTests >>= runTestTT' + Distribution.Simple.Utils.hunitTests >>= runTestTT' hunk ./Distribution/Simple/Install.hs 48 - hunitTests, hunk ./Distribution/Simple/Install.hs 52 -import Distribution.Simple.Utils(setupMessage) +import Distribution.Simple.Utils(setupMessage, moveSources) hunk ./Distribution/Simple/Install.hs 54 -import Control.Monad(when) -import Data.List(inits, nub, intersperse, findIndices) -import Data.Maybe(Maybe, listToMaybe, isNothing, fromJust) hunk ./Distribution/Simple/Install.hs 58 -import HUnit ((~:), (~=?), Test(..)) - hunk ./Distribution/Simple/Install.hs 79 --- |Put the source files into the right directory in preperation for --- something like sdist or installHugs. -moveSources :: FilePath -- ^Target directory - -> [String] -- ^Modules - -> [String] -- ^Main modules - -> IO () -moveSources _targetDir sources mains - = do let targetDir = maybeAddSep _targetDir - createIfNotExists True targetDir - -- Create parent directories for everything: - sourceLocs <- sequence $ map moduleToFPErr (sources ++ mains) - mapM (createIfNotExists True) - $ nub [(removeFilename $ targetDir ++ x) - | x <- sourceLocs, (removeFilename x /= "")] - -- Put sources into place: - mapM system ["cp -r " ++ x ++ " " ++ targetDir ++ x - | x <- sourceLocs] - return () - where moduleToFPErr m - = do p <- moduleToFilePath m - when (isNothing p) - (putStrLn ("Error: Could not find module: " ++ m) - >> exitWith (ExitFailure 1)) - return $ fromJust p - --- ------------------------------------------------------------ --- * utility functions --- ------------------------------------------------------------ - --- |FIX: Do we actually have to make something differnet for windows, --- or does this work? -pathSeperator :: Char -pathSeperator = '/' - -pathSeperatorStr :: String -pathSeperatorStr = [pathSeperator] - -createIfNotExists :: Bool -- ^Create its parents too? - -> FilePath -- ^The path to the directory you want to make - -> IO () -createIfNotExists parents file - = do b <- doesDirectoryExist file - case (b,parents, file) of - (_, _, "") -> return () - (True, _, _) -> return() - (_, True, _) -> createDirectoryParents file - (_, False, _) -> createDirectory file - --- |like mkdir -p. Create this directory and its parents -createDirectoryParents :: FilePath -> IO() -createDirectoryParents file - = mapM_ (createIfNotExists False) (pathInits file) - --- |Get this path and all its parents. -pathInits :: FilePath -> [FilePath] -pathInits path - = map (concat . intersperse pathSeperatorStr) - (inits $ mySplit pathSeperator path) - --- |Give a list of lists breaking apart elements who match the given criteria - --- > mySplit '.' "foo.bar.bang" => ["foo","bar","bang"] :: [[Char]] -mySplit :: Eq a => a -> [a] -> [[a]] -mySplit a l = let (upto, rest) = break (== a) l - in if null rest - then [upto] - else upto:(mySplit a (tail rest)) - --- |Find the last slash and remove it and everything after it. Turns --- Foo/Bar.lhs into Foo -removeFilename :: FilePath -> FilePath -removeFilename path - = case findIndices (== pathSeperator) path of - [] -> path - l -> fst $ splitAt (maximum l) path - --- |If this filename doesn't end in the path separator, add it. -maybeAddSep :: FilePath -> FilePath -maybeAddSep [] = [] -maybeAddSep p = if last p == pathSeperator then p else p ++ pathSeperatorStr - --- |Get the file path for this particular module. In the IO monad --- because it looks for the actual file. Might eventually interface --- with preprocessor libraries in order to correctly locate more --- filenames. --- Returns Nothing if the file doesn't exist. - -moduleToFilePath :: String -- ^Module Name - -> IO (Maybe FilePath) - -moduleToFilePath s - = do let possiblePaths = moduleToPossiblePaths s - matchList <- sequence $ map (\x -> do y <- doesFileExist x; return (x, y)) possiblePaths --- sequence $ map (system . ("ls " ++)) possiblePaths - return $ listToMaybe [x | (x, True) <- matchList] - --- |Get the possible file paths based on this module name. -moduleToPossiblePaths :: String -> [FilePath] -moduleToPossiblePaths s - = let splitted = mySplit '.' s - lastElem = last splitted - possibleSuffixes = [".hs", ".lhs"] - pref = if (not $ null $ init splitted) - then concat (intersperse pathSeperatorStr (init splitted)) - ++ pathSeperatorStr - else "" - in [pref ++ x | x <- map (lastElem++) possibleSuffixes] - - --- ------------------------------------------------------------ --- * Testing --- ------------------------------------------------------------ - -hunitTests :: IO Test -hunitTests - = do mp1 <- moduleToFilePath "Distribution.Simple.Build" --exists - mp2 <- moduleToFilePath "Foo.Bar" -- doesn't exist - return $ TestLabel "Install Tests" $ TestList - ["moduleToPossiblePaths 1" ~: "failed" ~: - ["Foo/Bar/Bang.hs","Foo/Bar/Bang.lhs"] - ~=? (moduleToPossiblePaths "Foo.Bar.Bang"), - "moduleToPossiblePaths2 " ~: "failed" ~: - (moduleToPossiblePaths "Foo") - ~=? ["Foo.hs", "Foo.lhs"], - - - "existing not found" ~: "failed" ~: - (Just "Distribution/Simple/Build.hs") ~=? mp1, - "not existing not nothing" ~: "failed" ~: Nothing ~=? mp2 - ] - hunk ./Distribution/Simple/SrcDist.hs 46 -import Distribution.Package(PackageDescription) +import Distribution.Package(PackageDescription(..), showPackageId) hunk ./Distribution/Simple/SrcDist.hs 48 -import Distribution.Simple.Utils(setupMessage) +import Distribution.Simple.Utils(setupMessage, moveSources, pathSeperatorStr) hunk ./Distribution/Simple/SrcDist.hs 50 -import System.IO -import System.Exit +import System.IO () +import System.Exit (ExitCode(..), exitWith) +import System.Cmd (system) hunk ./Distribution/Simple/SrcDist.hs 54 +-- |Create a source distribution. FIX: Calls tar directly (won't work +-- on windows). hunk ./Distribution/Simple/SrcDist.hs 59 - exitWith (ExitFailure 1) + moveSources (distSrc++pathSeperatorStr++nameVersion pkg_descr) + (allModules pkg_descr) (mainModules pkg_descr) + system $ "tar --directory=" ++ distSrc ++ " -zcf" + ++ " dist/" ++ (tarBallName pkg_descr) + ++ " " ++ (nameVersion pkg_descr) + system $ "rm -rf " ++ distSrc + putStrLn "Source tarball created." hunk ./Distribution/Simple/SrcDist.hs 67 +------------------------------------------------------------ + +distSrc :: FilePath +distSrc = "dist/src" + +-- |The file name of the tarball +tarBallName :: PackageDescription -> FilePath +tarBallName p = (nameVersion p) ++ ".tgz" + +nameVersion = showPackageId . package + hunk ./Distribution/Simple/Utils.hs 49 + pathSeperatorStr, hunk ./Distribution/Simple/Utils.hs 56 + moveSources, + hunitTests hunk ./Distribution/Simple/Utils.hs 62 +import Control.Monad(when) +import Data.List(inits, nub, intersperse, findIndices) +import Data.Maybe(Maybe, listToMaybe, isNothing, fromJust) + hunk ./Distribution/Simple/Utils.hs 72 +import HUnit ((~:), (~=?), Test(..)) + hunk ./Distribution/Simple/Utils.hs 170 + +-- ------------------------------------------------------------ +-- * File Utilities +-- ------------------------------------------------------------ + + +-- |FIX: Do we actually have to make something differnet for windows, +-- or does this work? +pathSeperator :: Char +pathSeperator = '/' + +pathSeperatorStr :: String +pathSeperatorStr = [pathSeperator] + +createIfNotExists :: Bool -- ^Create its parents too? + -> FilePath -- ^The path to the directory you want to make + -> IO () +createIfNotExists parents file + = do b <- doesDirectoryExist file + case (b,parents, file) of + (_, _, "") -> return () + (True, _, _) -> return() + (_, True, _) -> createDirectoryParents file + (_, False, _) -> createDirectory file + +-- |like mkdir -p. Create this directory and its parents +createDirectoryParents :: FilePath -> IO() +createDirectoryParents file + = mapM_ (createIfNotExists False) (pathInits file) + +-- |Get this path and all its parents. +pathInits :: FilePath -> [FilePath] +pathInits path + = map (concat . intersperse pathSeperatorStr) + (inits $ mySplit pathSeperator path) + +-- |Give a list of lists breaking apart elements who match the given criteria + +-- > mySplit '.' "foo.bar.bang" => ["foo","bar","bang"] :: [[Char]] +mySplit :: Eq a => a -> [a] -> [[a]] +mySplit a l = let (upto, rest) = break (== a) l + in if null rest + then [upto] + else upto:(mySplit a (tail rest)) + +-- |Find the last slash and remove it and everything after it. Turns +-- Foo/Bar.lhs into Foo +removeFilename :: FilePath -> FilePath +removeFilename path + = case findIndices (== pathSeperator) path of + [] -> path + l -> fst $ splitAt (maximum l) path + +-- |If this filename doesn't end in the path separator, add it. +maybeAddSep :: FilePath -> FilePath +maybeAddSep [] = [] +maybeAddSep p = if last p == pathSeperator then p else p ++ pathSeperatorStr + +-- |Get the file path for this particular module. In the IO monad +-- because it looks for the actual file. Might eventually interface +-- with preprocessor libraries in order to correctly locate more +-- filenames. +-- Returns Nothing if the file doesn't exist. + +moduleToFilePath :: String -- ^Module Name + -> IO (Maybe FilePath) + +moduleToFilePath s + = do let possiblePaths = moduleToPossiblePaths s + matchList <- sequence $ map (\x -> do y <- doesFileExist x; return (x, y)) possiblePaths +-- sequence $ map (system . ("ls " ++)) possiblePaths + return $ listToMaybe [x | (x, True) <- matchList] + +-- |Get the possible file paths based on this module name. +moduleToPossiblePaths :: String -> [FilePath] +moduleToPossiblePaths s + = let splitted = mySplit '.' s + lastElem = last splitted + possibleSuffixes = [".hs", ".lhs"] + pref = if (not $ null $ init splitted) + then concat (intersperse pathSeperatorStr (init splitted)) + ++ pathSeperatorStr + else "" + in [pref ++ x | x <- map (lastElem++) possibleSuffixes] + + + +-- |Put the source files into the right directory in preperation for +-- something like sdist or installHugs. +moveSources :: FilePath -- ^Target directory + -> [String] -- ^Modules + -> [String] -- ^Main modules + -> IO () +moveSources _targetDir sources mains + = do let targetDir = maybeAddSep _targetDir + createIfNotExists True targetDir + -- Create parent directories for everything: + sourceLocs <- sequence $ map moduleToFPErr (sources ++ mains) + mapM (createIfNotExists True) + $ nub [(removeFilename $ targetDir ++ x) + | x <- sourceLocs, (removeFilename x /= "")] + -- Put sources into place: + mapM system ["cp -r " ++ x ++ " " ++ targetDir ++ x + | x <- sourceLocs] + return () + where moduleToFPErr m + = do p <- moduleToFilePath m + when (isNothing p) + (putStrLn ("Error: Could not find module: " ++ m) + >> exitWith (ExitFailure 1)) + return $ fromJust p + +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ + +hunitTests :: IO Test +hunitTests + = do mp1 <- moduleToFilePath "Distribution.Simple.Build" --exists + mp2 <- moduleToFilePath "Foo.Bar" -- doesn't exist + return $ TestLabel "Utils Tests" $ TestList + ["moduleToPossiblePaths 1" ~: "failed" ~: + ["Foo/Bar/Bang.hs","Foo/Bar/Bang.lhs"] + ~=? (moduleToPossiblePaths "Foo.Bar.Bang"), + "moduleToPossiblePaths2 " ~: "failed" ~: + (moduleToPossiblePaths "Foo") + ~=? ["Foo.hs", "Foo.lhs"], + + + "existing not found" ~: "failed" ~: + (Just "Distribution/Simple/Build.hs") ~=? mp1, + "not existing not nothing" ~: "failed" ~: Nothing ~=? mp2 + ] + hunk ./test/Makefile 9 + ./setup sdist + ls dist hunk ./Distribution/TODO 5 -** build -** install +** build (for NHC and Hugs) +** install (for GHC and NHC) - look for .o and .hi, register, etc hunk ./Distribution/TODO 8 -*** Installation for hugs-style (just copy source) is implemented. - also must implement for {g,n}hc style where we look for .o and .hi. +** for fields like allModules, allow user to specify "Foo.Bar.*" or + something to indicate all haskell modules under that? hunk ./Distribution/TODO 11 +** SDist for windows machines, or machines without tar. +** Better way to find 'tar'; is there a library? +** sign flag? + +** grep for "FIX". + hunk ./Makefile 8 + +pushall: + darcs push --all ijones@monk.syntaxpolice.org:/home/ijones/public_html/darcs_repos/library-infrastructure + darcs push --all ijones@cvs.haskell.org:/home/ijones/library-infrastructure + hunk ./Distribution/Simple/GHCPackageConfig.hs 20 -import Distribution.Package -import Distribution.Simple.Configure -import Distribution.Simple.Install +import Distribution.Package (PackageDescription(..), showPackageId) +import Distribution.Simple.Configure (LocalBuildInfo(..)) +import Distribution.Simple.Install (mkImportDir) hunk ./Distribution/Simple/Install.hs 50 -import Distribution.Package +import Distribution.Package (PackageDescription(..), showPackageId) hunk ./Distribution/Simple/Install.hs 61 -install :: PackageDescription -> LocalBuildInfo -> IO () -install pkg_descr lbi = do +install :: PackageDescription -> LocalBuildInfo + -> Maybe FilePath -- ^install-prefix + -> IO () +install pkg_descr lbi install_prefixM = do + let pref = maybe (prefix lbi) id install_prefixM hunk ./Distribution/Simple/Install.hs 67 - moveSources (prefix lbi) (allModules pkg_descr) (mainModules pkg_descr) + moveSources pref (allModules pkg_descr) (mainModules pkg_descr) + -- installation step should be performed by caller. hunk ./Distribution/Simple.hs 50 --- Base -import System(getArgs) - -import Distribution.Package +-- local +import Distribution.Package --must not specify imports, since we're exporting moule. hunk ./Distribution/Simple.hs 65 -import System.IO +-- Base +import System(getArgs) + +import Control.Monad(when) +import Data.Maybe(isNothing) hunk ./Distribution/Simple.hs 71 +import System.IO (hPutStr, stderr) hunk ./Distribution/Simple.hs 97 - Right (InstallCmd _, extra_flags) -> do + Right (InstallCmd install_prefixM, extra_flags) -> do hunk ./Distribution/Simple.hs 100 - install pkg_descr localbuildinfo + install pkg_descr localbuildinfo install_prefixM + when (isNothing install_prefixM) (register pkg_descr localbuildinfo) hunk ./Distribution/TODO 17 +** Get function from hmake that creates a directory based on arch. + hunk ./Distribution/TODO 24 +** ./Setup test +- this may be something that's easy to break off and give to someone else. + hunk ./test/Makefile 6 - ./setup configure --prefix=/tmp/foo + ./setup configure --user --prefix=/tmp/foo + ./setup install --install-prefix=/tmp/bar + ls /tmp/bar* + # install w/ register! hunk ./test/Makefile 11 - ls /tmp/foo* +# ls /tmp/foo* hunk ./Distribution/Setup.hs 64 +import Data.Maybe(listToMaybe) hunk ./Distribution/Setup.hs 86 - | InstallCmd (Maybe FilePath) -- install + | InstallCmd (Maybe FilePath) Bool -- install (install-prefix) (--user flag) hunk ./Distribution/Setup.hs 88 - | RegisterCmd -- register + | RegisterCmd Bool -- register (--user flag) hunk ./Distribution/Setup.hs 115 + -- FIX: really must clean up all this parsing code. hunk ./Distribution/Setup.hs 126 - "register" -> noFlags str RegisterCmd flags unkFlags + "register" -> parseRegister flags unkFlags hunk ./Distribution/Setup.hs 138 - parseInstall [InstPrefix m] unkFlags - = Right (InstallCmd $ Just m, unkFlags) - parseInstall [] unkFlags - = Right (InstallCmd Nothing, unkFlags) - parseInstall _ _ - = commandSyntaxError "install" + -- | FIX: no error checking for bad flags. + parseInstall flags unkFlags + = let pref = listToMaybe [f | InstPrefix f <- flags] + in isUser flags (\x -> Right (InstallCmd pref x, unkFlags)) hunk ./Distribution/Setup.hs 143 + parseRegister flags unkFlags + = isUser flags (\x -> Right (RegisterCmd x, unkFlags)) + + isUser flags f + = if length (filter isUserGlobFlag flags) <= 1 + then f $ not $ null (filter isUserFlag flags) + else commandSyntaxError "Specify only one of --user and --global" + + isUserGlobFlag UserFlag = True + isUserGlobFlag GlobalFlag = True + isUserGlobFlag _ = False + isUserFlag UserFlag = True + isUserFlag _ = False + hunk ./Distribution/Setup.hs 181 - getOneOpt [] = return Nothing - getOneOpt [one] = return (Just one) - getOneOpt o = fail $ "Multiple options where one expected: " - ++ (concat $ intersperse ", " (map show o)) +getOneOpt [] = return Nothing +getOneOpt [one] = return (Just one) +getOneOpt o = fail $ "Multiple options where one expected: " + ++ (concat $ intersperse ", " (map show o)) hunk ./Distribution/Setup.hs 193 + | UserFlag | GlobalFlag hunk ./Distribution/Setup.hs 214 + Option "" ["user"] (NoArg UserFlag) + "upon registration, register this package in the user's local package database", + Option "" ["global"] (NoArg GlobalFlag) + "(default) upon registration, register this package in the system-wide package database", hunk ./Distribution/Setup.hs 240 - = getOpt Permute options ["configure", "foobar", "--prefix=/foo", "--ghc", "--nhc", "--hugs", "--with-compiler=/comp", "--unknown1", "--unknown2", "--install-prefix=/foo"] + = getOpt Permute options ["configure", "foobar", "--prefix=/foo", "--ghc", "--nhc", "--hugs", "--with-compiler=/comp", "--unknown1", "--unknown2", "--install-prefix=/foo", "--user", "--global"] hunk ./Distribution/Setup.hs 244 - WithCompiler "/comp", InstPrefix "/foo"] + WithCompiler "/comp", InstPrefix "/foo", UserFlag, GlobalFlag] hunk ./Distribution/Setup.hs 267 - ("install", InstallCmd Nothing), + ("install", InstallCmd Nothing False), hunk ./Distribution/Setup.hs 269 - ("register", RegisterCmd)] + ("register", RegisterCmd False)] hunk ./Distribution/Simple/Register.hs 60 -register :: PackageDescription -> LocalBuildInfo -> IO () -register pkg_descr lbi = do +register :: PackageDescription -> LocalBuildInfo + -> Bool -- ^Install in the user's database? FIX: doesn't use this yet. + -> IO () +register pkg_descr lbi userInst = do hunk ./Distribution/Simple/Register.hs 65 - + when userInst (putStrLn "Would install for --user, but not implemented") + hunk ./Distribution/Simple.hs 97 - Right (InstallCmd install_prefixM, extra_flags) -> do + Right (InstallCmd install_prefixM userInst, extra_flags) -> do hunk ./Distribution/Simple.hs 101 - when (isNothing install_prefixM) (register pkg_descr localbuildinfo) + when (isNothing install_prefixM) (register pkg_descr localbuildinfo userInst) hunk ./Distribution/Simple.hs 108 - Right (RegisterCmd, extra_flags) -> do + Right (RegisterCmd userFlag, extra_flags) -> do hunk ./Distribution/Simple.hs 111 - register pkg_descr localbuildinfo + register pkg_descr localbuildinfo userFlag hunk ./Distribution/TODO 12 -** Better way to find 'tar'; is there a library? +*** Better way to find 'tar'; is there a library? + hunk ./Distribution/TODO 20 +** clean up Setup parsing code. + hunk ./Distribution/Simple/Install.hs 52 -import Distribution.Simple.Utils(setupMessage, moveSources) +import Distribution.Simple.Utils(setupMessage, moveSources, pathSeperatorStr) hunk ./Distribution/Simple/Install.hs 65 - let pref = maybe (prefix lbi) id install_prefixM + let pref = (maybe (prefix lbi) id install_prefixM) ++ + pathSeperatorStr ++ "lib" ++ pathSeperatorStr ++ (showPackageId $ package pkg_descr) hunk ./Distribution/Simple/Register.hs 55 +import System(getEnv) + hunk ./Distribution/Simple/Register.hs 67 - when userInst (putStrLn "Would install for --user, but not implemented") hunk ./Distribution/Simple/Register.hs 71 + home <- getEnv "HOME" hunk ./Distribution/Simple/Register.hs 73 - ["--add-package", "--input-file="++installedPkgConfigFile] + (["--add-package", "--input-file="++installedPkgConfigFile] + ++ (if userInst then ["--config-file=" ++ home ++ "/.ghc-packages"] else [])) hunk ./Distribution/TODO 2 +** Write top-level Setup test cases (like "make check" under the test directory) + hunk ./Distribution/TODO 6 -** parse pkg.desc +** parse Setup.description hunk ./Distribution/TODO 25 -** generate InstalledPackageInfo -** read & write config-droppings +*** for hugs & nhc + adddir ./test/B addfile ./test/B/A.hs hunk ./Distribution/ModuleTest.hs 63 -import HUnit(runTestTT, Test(..)) +-- base +import Control.Monad(when) +import Directory(setCurrentDirectory, doesFileExist, + doesDirectoryExist, removeDirectory) +import System.Cmd(system) +import System.Exit(ExitCode(..)) hunk ./Distribution/ModuleTest.hs 70 +import HUnit(runTestTT, Test(..), assertBool) + hunk ./Distribution/ModuleTest.hs 79 +tests = [TestCase $ + do setCurrentDirectory "test" + dirE1 <- doesDirectoryExist ",tmp" + when dirE1 (system "rm -r ,tmp">>return()) + system "ls" + system "./setup configure --prefix=,tmp" + let targetDir = ",tmp/lib/test-1.0/" + system "./setup build" + instRetCode <- system "./setup install --user" + dirE <- doesDirectoryExist targetDir + assertBool "target dir exists" dirE + let files = ["A.hs", "B/A.hs", "libHStest-1.0.a"] + allFilesE <- sequence [doesFileExist (targetDir ++ t) + | t <- files] + + sequence [assertBool ("target file missing: " ++ targetDir ++ f) e + | (e, f) <- zip allFilesE files] + assertBool "install returned error code" (instRetCode == ExitSuccess) + ] + + hunk ./Distribution/ModuleTest.hs 106 - + runTestTT' $ TestList tests hunk ./Distribution/Simple/Build.hs 52 - die, rawSystemPathExit) + die, rawSystemPathExit, + pathSeperatorStr, split, createIfNotExists) hunk ./Distribution/Simple/Build.hs 55 + hunk ./Distribution/Simple/Build.hs 57 +import Data.List(intersperse) hunk ./Distribution/Simple/Build.hs 65 - + let pref = ("dist" ++ pathSeperatorStr ++ "build") + createIfNotExists True pref hunk ./Distribution/Simple/Build.hs 68 - GHC -> buildGHC pkg_descr lbi + GHC -> buildGHC pref pkg_descr lbi hunk ./Distribution/Simple/Build.hs 82 -buildGHC :: PackageDescription -> LocalBuildInfo -> IO () -buildGHC pkg_descr lbi = do +buildGHC :: FilePath -> PackageDescription -> LocalBuildInfo -> IO () +buildGHC pref pkg_descr lbi = do hunk ./Distribution/Simple/Build.hs 86 - let args = constructGHCCmdLine pkg_descr lbi + let args = constructGHCCmdLine pref pkg_descr lbi hunk ./Distribution/Simple/Build.hs 94 - let objs = map (++objsuffix) (allModules pkg_descr) + let objs = map (++objsuffix) (map dotToSep (allModules pkg_descr)) hunk ./Distribution/Simple/Build.hs 96 - rawSystemPathExit "ar" (["q", lib] ++ objs) + rawSystemPathExit "ar" (["q", lib] ++ (map (pref ++) objs)) hunk ./Distribution/Simple/Build.hs 98 -constructGHCCmdLine :: PackageDescription -> LocalBuildInfo -> [String] -constructGHCCmdLine pkg_descr _ = +constructGHCCmdLine :: FilePath -> PackageDescription -> LocalBuildInfo -> [String] +constructGHCCmdLine pref pkg_descr _ = hunk ./Distribution/Simple/Build.hs 101 - "--make", + "--make", "-odir " ++ pref, "-hidir " ++ pref, hunk ./Distribution/Simple/Build.hs 124 - -- ToDo: includes, includeDirs +dotToSep :: String -> String +dotToSep s = concat $ intersperse pathSeperatorStr (split '.' s) hunk ./Distribution/Simple/Build.hs 127 + -- Todo: includes, includeDirs + hunk ./Distribution/Simple/Utils.hs 57 - hunitTests + hunitTests, + createIfNotExists hunk ./Distribution/TODO 1 +* euroHaskell +** setup test suite to run on --push? +** Possibly create a (native?) zib library? +** port code to windows +** test / port code for Hugs and nhc +** ./Setup.lhs build for nhc +** nhc-pkg (see old package manager code) +** hugs-pkg +** make -Wall clean +** better command-line parsing interface +** ./Setup.lhs bdist + hunk ./Makefile 5 + cd test && make hunk ./test/B/A.hs 1 +module B.A where +a = 42 :: Int + +main = print a hunk ./Distribution/Simple/Configure.hs 124 - "C:\Program Files\" ++ pkgName package + "C:\\Program Files\\" ++ pkgName package hunk ./Makefile 7 +clean: + -rm -f Distribution/*.{o,hi} Distribution/Simple/*.{o,hi} + hunk ./Distribution/GetOpt.hs 173 - getWith p = [ o | o@(Option _ ls _ _) <- optDescr, l <- ls, opt `p` l ] + getWith p = [ o | o@(Option _ xs _ _) <- optDescr, x <- xs, opt `p` x ] hunk ./Distribution/GetOpt.hs 191 -shortOpt x xs rest optDescr = short ads xs rest - where options = [ o | o@(Option ss _ _ _) <- optDescr, s <- ss, x == s ] +shortOpt y ys rs optDescr = short ads ys rs + where options = [ o | o@(Option ss _ _ _) <- optDescr, s <- ss, y == s ] hunk ./Distribution/GetOpt.hs 194 - optStr = '-':[x] + optStr = '-':[y] hunk ./Distribution/ModuleTest.hs 63 --- base -import Control.Monad(when) -import Directory(setCurrentDirectory, doesFileExist, - doesDirectoryExist, removeDirectory) -import System.Cmd(system) -import System.Exit(ExitCode(..)) +import HUnit(runTestTT, Test(..)) hunk ./Distribution/ModuleTest.hs 65 -import HUnit(runTestTT, Test(..), assertBool) - hunk ./Distribution/ModuleTest.hs 67 +runTestTT' :: Test -> IO Counts hunk ./Distribution/Setup.hs 181 +getOneOpt :: Show a => [a] -> Either String (Maybe a) hunk ./Distribution/Simple/Configure.hs 57 -import System.Exit hunk ./Distribution/Simple/Install.hs 54 -import System.Cmd(system) -import System.Directory(doesDirectoryExist, createDirectory, doesFileExist) -import System.Exit - hunk ./Distribution/Simple/SrcDist.hs 50 -import System.IO () -import System.Exit (ExitCode(..), exitWith) hunk ./Distribution/Simple/SrcDist.hs 74 +nameVersion :: PackageDescription -> String hunk ./Distribution/ModuleTest.hs 63 -import HUnit(runTestTT, Test(..)) +-- base +import Control.Monad(when) +import Directory(setCurrentDirectory, doesFileExist, + doesDirectoryExist, removeDirectory) +import System.Cmd(system) +import System.Exit(ExitCode(..)) hunk ./Distribution/ModuleTest.hs 70 +import HUnit(runTestTT, Test(..), Counts, assertBool) + +label :: String -> String hunk ./Distribution/Misc.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} hunk ./Distribution/Misc.hs 45 -module Distribution.Misc(License(..), Dependency, Extension, Opt) +module Distribution.Misc(License(..), Dependency, Extension, Opt +#ifdef DEBUG + ,hunitTests +#endif + ) hunk ./Distribution/Misc.hs 54 +#ifdef DEBUG +import HUnit (Test) +#endif + hunk ./Distribution/Misc.hs 77 +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ + +#ifdef DEBUG +hunitTests :: [Test] +hunitTests = [] +#endif + hunk ./Distribution/ModuleTest.hs 49 -import Distribution.Version() -import Distribution.InstalledPackageInfo() -import Distribution.Misc() -import Distribution.Package() -import qualified Distribution.Setup(hunitTests) +import qualified Distribution.Version as D.V (hunitTests) +-- import qualified Distribution.InstalledPackageInfo(hunitTests) +import qualified Distribution.Misc as D.M (hunitTests) +import qualified Distribution.Package as D.P (hunitTests) +import qualified Distribution.Setup (hunitTests) hunk ./Distribution/ModuleTest.hs 55 -import Distribution.Simple() -import Distribution.Simple.Install() -import Distribution.Simple.Build() -import Distribution.Simple.SrcDist() -import qualified Distribution.Simple.Utils(hunitTests) -import Distribution.Simple.Configure() -import Distribution.Simple.Register() +import qualified Distribution.Simple as D.S (simpleHunitTests) +import qualified Distribution.Simple.Install as D.S.I (hunitTests) +import qualified Distribution.Simple.Build as D.S.B (hunitTests) +import qualified Distribution.Simple.SrcDist as D.S.S (hunitTests) +import qualified Distribution.Simple.Utils as D.S.U (hunitTests) +import qualified Distribution.Simple.Configure as D.S.C (hunitTests) +import qualified Distribution.Simple.Register as D.S.R (hunitTests) hunk ./Distribution/ModuleTest.hs 66 - doesDirectoryExist, removeDirectory) + doesDirectoryExist) hunk ./Distribution/ModuleTest.hs 81 +tests :: [Test] hunk ./Distribution/ModuleTest.hs 107 + confTests <- D.S.C.hunitTests + utilTests <- D.S.U.hunitTests hunk ./Distribution/ModuleTest.hs 110 - Distribution.Simple.Utils.hunitTests >>= runTestTT' + mapM runTestTT' confTests + runTestTT' utilTests + + runTestTT' $ TestList (D.S.R.hunitTests ++ D.V.hunitTests ++ + D.S.S.hunitTests ++ D.S.B.hunitTests ++ + D.S.I.hunitTests ++ D.S.simpleHunitTests ++ + D.P.hunitTests ++ D.M.hunitTests) hunk ./Distribution/ModuleTest.hs 124 + hunk ./Distribution/Package.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} hunk ./Distribution/Package.hs 49 - emptyPackageDescription + emptyPackageDescription, +#ifdef DEBUG + hunitTests +#endif hunk ./Distribution/Package.hs 59 +#ifdef DEBUG +import HUnit (Test) +#endif + hunk ./Distribution/Package.hs 118 +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ +#ifdef DEBUG +hunitTests :: [Test] +hunitTests = [] +#endif hunk ./Distribution/Setup.hs 78 -emptyCompiler :: Compiler -emptyCompiler = Compiler (OtherCompiler "") "" "" - hunk ./Distribution/Simple/Build.hs 45 +#ifdef DEBUG + ,hunitTests +#endif hunk ./Distribution/Simple/Build.hs 62 +#ifdef DEBUG +import HUnit (Test) +#endif + hunk ./Distribution/Simple/Build.hs 136 +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ + +#ifdef DEBUG +hunitTests :: [Test] +hunitTests = [] +#endif + hunk ./Distribution/Simple/Configure.hs 48 - configure) + configure, + hunitTests + ) hunk ./Distribution/Simple/Configure.hs 55 -import Distribution.Simple.Utils +import Distribution.Simple.Utils (die, setupMessage, + findBinary, splitFilenameDir) hunk ./Distribution/Simple/Install.hs 1 -{-# OPTIONS -cpp #-} +{-# OPTIONS -cpp -DDEBUG #-} hunk ./Distribution/Simple/Install.hs 48 +#ifdef DEBUG + ,hunitTests +#endif hunk ./Distribution/Simple/Install.hs 57 +#ifdef DEBUG +import HUnit (Test) +#endif + hunk ./Distribution/Simple/Install.hs 87 +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ +#ifdef DEBUG +hunitTests :: [Test] +hunitTests = [] +#endif + hunk ./Distribution/Simple/Register.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} hunk ./Distribution/Simple/Register.hs 48 +#ifdef DEBUG + hunitTests +#endif hunk ./Distribution/Simple/Register.hs 63 +#ifdef DEBUG +import HUnit (Test) +#endif + hunk ./Distribution/Simple/Register.hs 101 + +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ + +#ifdef DEBUG +hunitTests :: [Test] +hunitTests = [] +#endif + hunk ./Distribution/Simple/SrcDist.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} hunk ./Distribution/Simple/SrcDist.hs 45 +#ifdef DEBUG + ,hunitTests +#endif hunk ./Distribution/Simple/SrcDist.hs 56 +#ifdef DEBUG +import HUnit (Test) +#endif + hunk ./Distribution/Simple/SrcDist.hs 85 +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ + +#ifdef DEBUG +hunitTests :: [Test] +hunitTests = [] +#endif + hunk ./Distribution/Simple/Utils.hs 61 -import Distribution.Package +import Distribution.Package (PackageDescription(..), showPackageId) hunk ./Distribution/Simple/Utils.hs 287 +#ifdef DEBUG hunk ./Distribution/Simple/Utils.hs 305 +#endif hunk ./Distribution/Simple.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} hunk ./Distribution/Simple.hs 49 +#ifdef DEBUG + simpleHunitTests +#endif hunk ./Distribution/Simple.hs 77 +#ifdef DEBUG +import HUnit (Test) +#endif + hunk ./Distribution/Simple.hs 139 +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ +#ifdef DEBUG +simpleHunitTests :: [Test] +simpleHunitTests = [] +#endif + hunk ./Distribution/Version.hs 58 + hunitTests hunk ./Distribution/ModuleTest.hs 53 -import qualified Distribution.Setup (hunitTests) +import qualified Distribution.Setup as D.Setup (hunitTests) hunk ./Distribution/ModuleTest.hs 86 - system "ls" +-- system "ls" hunk ./Distribution/ModuleTest.hs 106 - setupTests <- Distribution.Setup.hunitTests - confTests <- D.S.C.hunitTests - utilTests <- D.S.U.hunitTests - mapM runTestTT' setupTests - mapM runTestTT' confTests - runTestTT' utilTests - - runTestTT' $ TestList (D.S.R.hunitTests ++ D.V.hunitTests ++ - D.S.S.hunitTests ++ D.S.B.hunitTests ++ - D.S.I.hunitTests ++ D.S.simpleHunitTests ++ - D.P.hunitTests ++ D.M.hunitTests) + runTestTT' $ TestList $ + (TestLabel "Utils Tests" $ TestList D.S.U.hunitTests): + (TestLabel "Setup Tests" $ TestList D.Setup.hunitTests): + (TestLabel "config Tests" $ TestList D.S.C.hunitTests): + (D.S.R.hunitTests ++ D.V.hunitTests ++ + D.S.S.hunitTests ++ D.S.B.hunitTests ++ + D.S.I.hunitTests ++ D.S.simpleHunitTests ++ + D.P.hunitTests ++ D.M.hunitTests) hunk ./Distribution/Setup.hs 234 -hunitTests :: IO [Test] +hunitTests :: [Test] hunk ./Distribution/Setup.hs 236 - do let m = [("ghc", GHC), ("nhc", NHC), ("hugs", Hugs)] - let (flags, commands', unkFlags, ers) + let m = [("ghc", GHC), ("nhc", NHC), ("hugs", Hugs)] + (flags, commands', unkFlags, ers) hunk ./Distribution/Setup.hs 239 - return $ [TestLabel "very basic option parsing" $ TestList [ + in [TestLabel "very basic option parsing" $ TestList [ hunk ./Distribution/Simple/Configure.hs 54 -import Distribution.Package(PackageDescription(..)) +import Distribution.Package(PackageDescription(..), emptyPackageDescription) hunk ./Distribution/Simple/Configure.hs 202 -hunitTests :: IO [Test] -hunitTests = do - let simonMarGHCLoc = "/home/simonmar/fp/bin/i386-unknown-linux/ghc" - simonMarGHC <- configure PackageDescription{} (Just GHC, +hunitTests :: [Test] +hunitTests + = [TestCase $ + do let simonMarGHCLoc = "/home/simonmar/fp/bin/i386-unknown-linux/ghc" + simonMarGHC <- configure emptyPackageDescription (Just GHC, hunk ./Distribution/Simple/Configure.hs 209 - return $ [TestLabel "Configure Testing" $ TestList [ - "finding ghc, etc on simonMar's machine" ~: "failed" ~: + assertEqual "finding ghc, etc on simonMar's machine failed" hunk ./Distribution/Simple/Configure.hs 213 - ~=? simonMarGHC]] + simonMarGHC + ] hunk ./Distribution/Simple/Utils.hs 73 -import HUnit ((~:), (~=?), Test(..)) +import HUnit ((~:), (~=?), Test(..), assertEqual) hunk ./Distribution/Simple/Utils.hs 288 -hunitTests :: IO Test +hunitTests :: [Test] hunk ./Distribution/Simple/Utils.hs 290 - = do mp1 <- moduleToFilePath "Distribution.Simple.Build" --exists - mp2 <- moduleToFilePath "Foo.Bar" -- doesn't exist - return $ TestLabel "Utils Tests" $ TestList - ["moduleToPossiblePaths 1" ~: "failed" ~: - ["Foo/Bar/Bang.hs","Foo/Bar/Bang.lhs"] + = [TestCase $ + do mp1 <- moduleToFilePath "Distribution.Simple.Build" --exists + mp2 <- moduleToFilePath "Foo.Bar" -- doesn't exist + assertEqual "existing not found failed" + (Just "Distribution/Simple/Build.hs") mp1 + assertEqual "not existing not nothing failed" Nothing mp2, + + "moduleToPossiblePaths 1" ~: "failed" ~: + ["Foo/Bar/Bang.hs","Foo/Bar/Bang.lhs"] hunk ./Distribution/Simple/Utils.hs 300 - "moduleToPossiblePaths2 " ~: "failed" ~: - (moduleToPossiblePaths "Foo") - ~=? ["Foo.hs", "Foo.lhs"], - - - "existing not found" ~: "failed" ~: - (Just "Distribution/Simple/Build.hs") ~=? mp1, - "not existing not nothing" ~: "failed" ~: Nothing ~=? mp2 - ] + "moduleToPossiblePaths2 " ~: "failed" ~: + (moduleToPossiblePaths "Foo") ~=? ["Foo.hs", "Foo.lhs"] + ] hunk ./Distribution/Simple/Configure.hs 54 -import Distribution.Package(PackageDescription(..), emptyPackageDescription) +import Distribution.Package(PackageDescription(..), emptyPackageDescription, + PackageIdentifier(..) + ) hunk ./Distribution/Simple/Configure.hs 60 +import Distribution.Version (Version(..)) hunk ./Distribution/Simple/Configure.hs 205 +packageID = PackageIdentifier "Foo" (Version [1] []) + hunk ./Distribution/Simple/Configure.hs 210 - do let simonMarGHCLoc = "/home/simonmar/fp/bin/i386-unknown-linux/ghc" - simonMarGHC <- configure emptyPackageDescription (Just GHC, + do let simonMarGHCLoc = "/usr/bin/ghc" + simonMarGHC <- configure emptyPackageDescription {package=packageID} + (Just GHC, hunk ./Distribution/ModuleTest.hs 70 -import HUnit(runTestTT, Test(..), Counts, assertBool) +import HUnit(runTestTT, Test(..), Counts, assertBool, assertEqual) hunk ./Distribution/ModuleTest.hs 86 + dirE2 <- doesDirectoryExist "dist" + when dirE2 (system "rm -r dist">>return()) hunk ./Distribution/ModuleTest.hs 93 - dirE <- doesDirectoryExist targetDir - assertBool "target dir exists" dirE - let files = ["A.hs", "B/A.hs", "libHStest-1.0.a"] + doesDirectoryExist targetDir >>= + assertBool "target dir exists" + let files = "libHStest-1.0.a":[x++y | + x <- ["A", "B/A"], + y <- [".o", ".hi", ".hs"]] hunk ./Distribution/ModuleTest.hs 103 - assertBool "install returned error code" (instRetCode == ExitSuccess) + assertEqual "install returned error code" ExitSuccess instRetCode + system "./setup sdist" + doesFileExist "dist/test-1.0.tgz" >>= + assertBool "sdist did not put the expected file in place" + doesFileExist "dist/src" >>= + assertEqual "dist/src exists" False + doesFileExist "dist/build" >>= + assertBool "dist/build doesn't exists" hunk ./Distribution/ModuleTest.hs 113 - hunk ./Distribution/Simple/Build.hs 56 - pathSeperatorStr, split, createIfNotExists) + pathSeperatorStr, split, createIfNotExists, + mkLibName + ) hunk ./Distribution/Simple/Build.hs 71 -build :: PackageDescription -> LocalBuildInfo -> IO () -build pkg_descr lbi = do +build :: FilePath -- ^Build location + -> PackageDescription -> LocalBuildInfo -> IO () +build pref pkg_descr lbi = do hunk ./Distribution/Simple/Build.hs 75 - let pref = ("dist" ++ pathSeperatorStr ++ "build") hunk ./Distribution/Simple/Build.hs 104 - lib = mkLibName (showPackageId (package pkg_descr)) - rawSystemPathExit "ar" (["q", lib] ++ (map (pref ++) objs)) + lib = mkLibName pref (showPackageId (package pkg_descr)) + rawSystemPathExit "ar" (["q", lib] ++ (map ((pref ++ pathSeperatorStr) ++) objs)) hunk ./Distribution/Simple/Build.hs 130 -mkLibName :: String -> String -mkLibName lib = "libHS" ++ lib ++ ".a" - hunk ./Distribution/Simple/Install.hs 55 -import Distribution.Simple.Utils(setupMessage, moveSources, pathSeperatorStr) +import Distribution.Simple.Utils(setupMessage, moveSources, + pathSeperatorStr, mkLibName) hunk ./Distribution/Simple/Install.hs 58 +import System.Cmd(system) + hunk ./Distribution/Simple/Install.hs 67 -install :: PackageDescription -> LocalBuildInfo +install :: FilePath -- ^build location + -> PackageDescription -> LocalBuildInfo hunk ./Distribution/Simple/Install.hs 71 -install pkg_descr lbi install_prefixM = do +install buildPref pkg_descr lbi install_prefixM = do hunk ./Distribution/Simple/Install.hs 75 - moveSources pref (allModules pkg_descr) (mainModules pkg_descr) - -- installation step should be performed by caller. + moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) + system $ "cp " ++ mkLibName buildPref (showPackageId (package pkg_descr)) + ++ " " ++ mkLibName pref (showPackageId (package pkg_descr)) + return () + -- register step should be performed by caller. hunk ./Distribution/Simple/SrcDist.hs 52 -import Distribution.Simple.Utils(setupMessage, moveSources, pathSeperatorStr) +import Distribution.Simple.Utils(setupMessage, moveSources, pathSeperatorStr, die) hunk ./Distribution/Simple/SrcDist.hs 54 +import Control.Monad(when) hunk ./Distribution/Simple/SrcDist.hs 56 +import System.Directory (doesDirectoryExist) hunk ./Distribution/Simple/SrcDist.hs 64 -sdist :: PackageDescription -> LocalBuildInfo -> IO () -sdist pkg_descr _ = do +sdist :: FilePath -- ^build prefix + -> FilePath -- ^TargetPrefix + -> PackageDescription -> LocalBuildInfo -> IO () +sdist srcPref targetPref pkg_descr _ = do hunk ./Distribution/Simple/SrcDist.hs 69 - moveSources (distSrc++pathSeperatorStr++nameVersion pkg_descr) + ex <- doesDirectoryExist srcPref + when ex (die $ "Source distribution already in place. please move: " ++ srcPref) + moveSources srcPref (srcPref++pathSeperatorStr++nameVersion pkg_descr) hunk ./Distribution/Simple/SrcDist.hs 73 - system $ "tar --directory=" ++ distSrc ++ " -zcf" - ++ " dist/" ++ (tarBallName pkg_descr) + system $ "tar --directory=" ++ srcPref ++ " -zcf " + ++ targetPref ++ pathSeperatorStr ++ (tarBallName pkg_descr) hunk ./Distribution/Simple/SrcDist.hs 76 - system $ "rm -rf " ++ distSrc + system $ "rm -rf " ++ srcPref hunk ./Distribution/Simple/SrcDist.hs 81 -distSrc :: FilePath -distSrc = "dist/src" - hunk ./Distribution/Simple/Utils.hs 58 - createIfNotExists + createIfNotExists, + mkLibName, hunk ./Distribution/Simple/Utils.hs 139 -die msg = do hPutStr stderr msg; exitWith (ExitFailure 1) +die msg = do hPutStr stderr (msg++"\n"); exitWith (ExitFailure 1) hunk ./Distribution/Simple/Utils.hs 261 -moveSources :: FilePath -- ^Target directory +moveSources :: FilePath -- ^build prefix (location of objects) + -> FilePath -- ^Target directory hunk ./Distribution/Simple/Utils.hs 266 -moveSources _targetDir sources mains +moveSources buildPref _targetDir sources mains hunk ./Distribution/Simple/Utils.hs 285 + +mkLibName :: FilePath -- ^file Prefix + -> String -- ^library name. + -> String +mkLibName pref lib = pref ++ pathSeperatorStr ++ "libHS" ++ lib ++ ".a" + hunk ./Distribution/Simple.hs 65 -import Distribution.Simple.Utils (die) +import Distribution.Simple.Utils (die, pathSeperatorStr) hunk ./Distribution/Simple.hs 92 + let distPref = "dist" + let buildPref = distPref ++ pathSeperatorStr ++ "build" + let srcPref = distPref ++ pathSeperatorStr ++ "src" hunk ./Distribution/Simple.hs 106 - build pkg_descr localbuildinfo + build buildPref pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 111 - install pkg_descr localbuildinfo install_prefixM + install buildPref pkg_descr localbuildinfo install_prefixM hunk ./Distribution/Simple.hs 117 - sdist pkg_descr localbuildinfo + sdist srcPref distPref pkg_descr localbuildinfo hunk ./test/A.hs 1 -module Main where +module A where hunk ./test/Makefile 4 - rm *.o setup *.hi + rm -f setup a.out + rm -rf ,tmp dist + find . -name "*.o" |xargs rm -f + find . -name "*.hi" |xargs rm -f hunk ./Distribution/ModuleTest.hs 103 - assertEqual "install returned error code" ExitSuccess instRetCode hunk ./Distribution/ModuleTest.hs 108 - doesFileExist "dist/build" >>= + doesDirectoryExist "dist/build" >>= hunk ./Distribution/ModuleTest.hs 110 + assertEqual "install returned error code" ExitSuccess instRetCode hunk ./Distribution/Simple/Install.hs 75 - moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) + moveSources "" pref (allModules pkg_descr) (mainModules pkg_descr) ["lhs", "hs"] + moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) ["hi"] + moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) ["o"] hunk ./Distribution/Simple/SrcDist.hs 71 - moveSources srcPref (srcPref++pathSeperatorStr++nameVersion pkg_descr) - (allModules pkg_descr) (mainModules pkg_descr) + moveSources "" (srcPref++pathSeperatorStr++nameVersion pkg_descr) + (allModules pkg_descr) (mainModules pkg_descr) ["lhs", "hs"] hunk ./Distribution/Simple/Utils.hs 236 -moduleToFilePath :: String -- ^Module Name +moduleToFilePath :: FilePath -- ^search location + -> String -- ^Module Name + -> [String] -- ^possible suffixes hunk ./Distribution/Simple/Utils.hs 241 -moduleToFilePath s - = do let possiblePaths = moduleToPossiblePaths s +moduleToFilePath pref s possibleSuffixes + = do let possiblePaths = moduleToPossiblePaths pref s possibleSuffixes hunk ./Distribution/Simple/Utils.hs 248 -moduleToPossiblePaths :: String -> [FilePath] -moduleToPossiblePaths s +moduleToPossiblePaths :: FilePath -- ^search prefix + -> String -- ^module name + -> [String] -- ^possible suffixes + -> [FilePath] +moduleToPossiblePaths searchPref s possibleSuffixes hunk ./Distribution/Simple/Utils.hs 255 - possibleSuffixes = [".hs", ".lhs"] hunk ./Distribution/Simple/Utils.hs 259 - in [pref ++ x | x <- map (lastElem++) possibleSuffixes] + in [(maybeAddSep searchPref) ++ pref ++ x + | x <- map (lastElem++) (map ("."++)possibleSuffixes)] hunk ./Distribution/Simple/Utils.hs 270 + -> [String] -- ^search suffixes hunk ./Distribution/Simple/Utils.hs 272 -moveSources buildPref _targetDir sources mains +moveSources pref _targetDir sources mains searchSuffixes hunk ./Distribution/Simple/Utils.hs 277 + let sourceLocsNoPref -- get rid of the prefix, for target location. + = if null pref then sourceLocs + else map (drop ((length pref) +1)) sourceLocs hunk ./Distribution/Simple/Utils.hs 282 - | x <- sourceLocs, (removeFilename x /= "")] + | x <- sourceLocsNoPref, (removeFilename x /= "")] hunk ./Distribution/Simple/Utils.hs 284 - mapM system ["cp -r " ++ x ++ " " ++ targetDir ++ x - | x <- sourceLocs] + mapM system ["cp -r " ++ x ++ " " ++ targetDir + ++ y | (x,y) <- (zip sourceLocs sourceLocsNoPref)] hunk ./Distribution/Simple/Utils.hs 288 - = do p <- moduleToFilePath m + = do p <- moduleToFilePath pref m searchSuffixes hunk ./Distribution/Simple/Utils.hs 290 - (putStrLn ("Error: Could not find module: " ++ m) + (putStrLn ("Error: Could not find module: " ++ m + ++ " with any suffix: " ++ (show searchSuffixes)) hunk ./Distribution/Simple/Utils.hs 308 - = [TestCase $ - do mp1 <- moduleToFilePath "Distribution.Simple.Build" --exists - mp2 <- moduleToFilePath "Foo.Bar" -- doesn't exist + = let suffixes = ["hs", "lhs"] + in [TestCase $ + do mp1 <- moduleToFilePath "" "Distribution.Simple.Build" suffixes --exists + mp2 <- moduleToFilePath "" "Foo.Bar" suffixes -- doesn't exist hunk ./Distribution/Simple/Utils.hs 318 - ~=? (moduleToPossiblePaths "Foo.Bar.Bang"), + ~=? (moduleToPossiblePaths "" "Foo.Bar.Bang" suffixes), hunk ./Distribution/Simple/Utils.hs 320 - (moduleToPossiblePaths "Foo") ~=? ["Foo.hs", "Foo.lhs"] + (moduleToPossiblePaths "" "Foo" suffixes) ~=? ["Foo.hs", "Foo.lhs"] hunk ./Distribution/Simple/Install.hs 75 + -- FIX: For hugs only hunk ./Distribution/Simple/Install.hs 77 + -- FIX: for GHC and NHC only hunk ./Distribution/TODO 1 -* euroHaskell +* misc hunk ./Distribution/TODO 9 -** make -Wall clean hunk ./Distribution/TODO 13 +** FIX: install currently moves .hs, .hi, and .o files for any target. + make it do the right thing for hugs (just move .hs) and {g,n}hc + (move .hi and .o) hunk ./Distribution/Simple/Utils.hs 143 - +-- FIX: rawSystem does not exist in Hugs hunk ./Distribution/Package.hs 81 - licenese :: License, + license :: License, hunk ./Distribution/Package.hs 103 - licenese = AllRightsReserved, + license = AllRightsReserved, hunk ./Distribution/ModuleTest.hs 49 -import qualified Distribution.Version as D.V (hunitTests) +import qualified Distribution.Version as D.V (hunitTests) hunk ./Distribution/ModuleTest.hs 60 +import Distribution.Simple.Utils(pathJoin) hunk ./Distribution/ModuleTest.hs 82 + +checkTargetDir :: FilePath + -> [String] -- ^suffixes + -> IO () +checkTargetDir targetDir suffixes + = do doesDirectoryExist targetDir >>= + assertBool "target dir exists" + let files = [x++y | + x <- ["A", "B/A"], + y <- suffixes] + allFilesE <- sequence [doesFileExist (targetDir ++ t) + | t <- files] + + sequence [assertBool ("target file missing: " ++ targetDir ++ f) e + | (e, f) <- zip allFilesE files] + return () + hunk ./Distribution/ModuleTest.hs 106 --- system "ls" - system "./setup configure --prefix=,tmp" - let targetDir = ",tmp/lib/test-1.0/" + system "./setup configure --ghc --prefix=,tmp" + >>= assertEqual "configure returned error code" ExitSuccess hunk ./Distribution/ModuleTest.hs 109 - instRetCode <- system "./setup install --user" - doesDirectoryExist targetDir >>= - assertBool "target dir exists" - let files = "libHStest-1.0.a":[x++y | - x <- ["A", "B/A"], - y <- [".o", ".hi", ".hs"]] - allFilesE <- sequence [doesFileExist (targetDir ++ t) - | t <- files] + >>= assertEqual "build returned error code" ExitSuccess hunk ./Distribution/ModuleTest.hs 111 - sequence [assertBool ("target file missing: " ++ targetDir ++ f) e - | (e, f) <- zip allFilesE files] hunk ./Distribution/ModuleTest.hs 112 + >>= assertEqual "setup sdist returned error code" ExitSuccess hunk ./Distribution/ModuleTest.hs 118 - assertBool "dist/build doesn't exists" + assertBool "dist/build doesn't exists", + TestCase $ -- GHC and --install-prefix (uses above config) + do let targetDir = ",tmp2" + instRetCode <- system $ "./setup install --install-prefix=" ++ targetDir + checkTargetDir ",tmp2/lib/test-1.0/" [".hi"] + doesFileExist (pathJoin [",tmp2/lib/test-1.0/", "libHStest-1.0.a"]) + >>= assertBool "library doesn't exist" + assertEqual "install returned error code" ExitSuccess instRetCode, + TestCase $ -- no intsall-prefix and hugs + do system "./setup configure --hugs --prefix=,tmp" + >>= assertEqual "HUGS configure returned error code" ExitSuccess + system "./setup build" + >>= assertEqual "HUGS build returned error code" ExitSuccess + instRetCode <- system "./setup install --user" + let targetDir = ",tmp/lib/test-1.0/" + checkTargetDir targetDir [".hs"] hunk ./Distribution/ModuleTest.hs 135 - ] + ] hunk ./Distribution/Simple/Install.hs 56 - pathSeperatorStr, mkLibName) + pathSeperatorStr, mkLibName, pathJoin, + copyFile, die + ) +import Distribution.Setup (CompilerFlavor(..), Compiler(..)) hunk ./Distribution/Simple/Install.hs 67 --- |FIX: for now, only works with hugs or sdist-style --- installation... must implement for .hi files and such... how do we --- know which files to expect? +-- |FIX: nhc isn't implemented yet. hunk ./Distribution/Simple/Install.hs 73 - let pref = (maybe (prefix lbi) id install_prefixM) ++ - pathSeperatorStr ++ "lib" ++ pathSeperatorStr ++ (showPackageId $ package pkg_descr) - setupMessage "Installing" pkg_descr - -- FIX: For hugs only - moveSources "" pref (allModules pkg_descr) (mainModules pkg_descr) ["lhs", "hs"] - -- FIX: for GHC and NHC only - moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) ["hi"] - moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) ["o"] - system $ "cp " ++ mkLibName buildPref (showPackageId (package pkg_descr)) - ++ " " ++ mkLibName pref (showPackageId (package pkg_descr)) + let pref = pathJoin [(maybe (prefix lbi) id install_prefixM), "lib", + (showPackageId $ package pkg_descr)] + setupMessage ("Installing: " ++ pref) pkg_descr + case compilerFlavor (compiler lbi) of + GHC -> installGHC pref buildPref pkg_descr + Hugs -> installHugs pref pkg_descr + _ -> die ("only installing with GHC or Hugs is implemented") hunk ./Distribution/Simple/Install.hs 83 +-- |Install for ghc, .hi and .a +installGHC :: FilePath -- ^install location + -> FilePath -- ^Build location + -> PackageDescription -> IO () +installGHC pref buildPref pkg_descr + = do moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) ["hi"] + copyFile (mkLibName buildPref (showPackageId (package pkg_descr))) + (mkLibName pref (showPackageId (package pkg_descr))) + +-- |Install for hugs, .lhs and .hs +installHugs :: FilePath -- ^Install location + -> PackageDescription -> IO () +installHugs pref pkg_descr + = moveSources "" pref (allModules pkg_descr) (mainModules pkg_descr) ["lhs", "hs"] + hunk ./Distribution/Simple/Utils.hs 60 + copyFile, + pathJoin hunk ./Distribution/Simple/Utils.hs 303 +-- | Create a path from a list of path elements +pathJoin :: [String] -> FilePath +pathJoin = concat . intersperse pathSeperatorStr + +-- FIX: does not preserve dates, does not set permissions +copyFile :: FilePath -> FilePath -> IO () +copyFile src dest + | dest == src = fail "copyFile: source and destination are the same file" + | otherwise = readFile src >>= writeFile dest + hunk ./Distribution/TODO 1 +* Quick +** fix "Seperator" - use pathJoin +** use copyFile instead of "cp" + hunk ./Distribution/TODO 6 -** setup test suite to run on --push? hunk ./Distribution/TODO 8 -** test / port code for Hugs and nhc hunk ./Distribution/TODO 14 +* testing +** count errors and output. +** setup test suite to run on --push? +** redirect non-hunit outputs to a file? +** test / port code for Hugs and nhc + hunk ./Distribution/TODO 21 +** FIX: does it try to register when we have "install --inst-prefix"? + (write test case) hunk ./Distribution/ModuleTest.hs 134 - assertEqual "install returned error code" ExitSuccess instRetCode + assertEqual "install HUGS returned error code" ExitSuccess instRetCode hunk ./Distribution/Package.hs 91 + hsSourceDir :: FilePath, hunk ./Distribution/Package.hs 112 + hsSourceDir = ".", hunk ./Distribution/Simple/Build.hs 57 - mkLibName + mkLibName, moveSources hunk ./Distribution/Simple/Build.hs 74 - setupMessage "Building" pkg_descr hunk ./Distribution/Simple/Build.hs 75 + preprocessSources pkg_descr lbi pref + setupMessage "Building" pkg_descr hunk ./Distribution/Simple/Build.hs 80 - _ -> die ("only building with GHC is implemented") + Hugs -> return () + _ -> die ("building with GHC & NHC is implemented, preprocessing for hugs.") hunk ./Distribution/Simple/Build.hs 135 +-- |Copy and (possibly) preprocess sources from hsSourceDirs +preprocessSources :: PackageDescription + -> LocalBuildInfo + -> FilePath -- ^ Directory to put preprocessed + -- sources in + -> IO () +preprocessSources pkg_descr lbi pref = + do + setupMessage "Preprocessing" pkg_descr + putStrLn (hsSourceDir pkg_descr) + moveSources (hsSourceDir pkg_descr) pref + (allModules pkg_descr) (mainModules pkg_descr) + ["hs","lhs"] + hunk ./Distribution/Simple/Install.hs 78 - Hugs -> installHugs pref pkg_descr + Hugs -> installHugs pref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 94 + -> FilePath -- ^Build location hunk ./Distribution/Simple/Install.hs 96 -installHugs pref pkg_descr - = moveSources "" pref (allModules pkg_descr) (mainModules pkg_descr) ["lhs", "hs"] +installHugs pref buildPref pkg_descr + = moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) ["lhs", "hs"] hunk ./Distribution/Package.hs 112 - hsSourceDir = ".", + hsSourceDir = ".", -- FIX: FileUtils.currentDir hunk ./Distribution/Simple/Build.hs 56 - pathSeperatorStr, split, createIfNotExists, - mkLibName, moveSources + split, createIfNotExists, + mkLibName, moveSources, pathJoin hunk ./Distribution/Simple/Build.hs 107 - rawSystemPathExit "ar" (["q", lib] ++ (map ((pref ++ pathSeperatorStr) ++) objs)) + rawSystemPathExit "ar" (["q", lib] ++ [pathJoin [pref, x] | x <- objs]) hunk ./Distribution/Simple/Build.hs 133 -dotToSep s = concat $ intersperse pathSeperatorStr (split '.' s) +dotToSep s = pathJoin (split '.' s) hunk ./Distribution/Simple/Install.hs 56 - pathSeperatorStr, mkLibName, pathJoin, + mkLibName, pathJoin, hunk ./Distribution/Simple/SrcDist.hs 52 -import Distribution.Simple.Utils(setupMessage, moveSources, pathSeperatorStr, die) +import Distribution.Simple.Utils(setupMessage, moveSources, die, pathJoin) hunk ./Distribution/Simple/SrcDist.hs 71 - moveSources "" (srcPref++pathSeperatorStr++nameVersion pkg_descr) + moveSources "" (pathJoin [srcPref, nameVersion pkg_descr]) hunk ./Distribution/Simple/SrcDist.hs 73 - system $ "tar --directory=" ++ srcPref ++ " -zcf " - ++ targetPref ++ pathSeperatorStr ++ (tarBallName pkg_descr) + system $ "tar --directory=" ++ srcPref ++ " -zcf " ++ + (pathJoin [targetPref, tarBallName pkg_descr]) hunk ./Distribution/Simple/Utils.hs 49 - pathSeperatorStr, + pathSeparatorStr, hunk ./Distribution/Simple/Utils.hs 182 -pathSeperator :: Char -pathSeperator = '/' +pathSeparator :: Char +#ifdef mingw32_TARGET_OS +pathSeparator = '\\' +#else +pathSeparator = '/' +#endif hunk ./Distribution/Simple/Utils.hs 189 -pathSeperatorStr :: String -pathSeperatorStr = [pathSeperator] +pathSeparatorStr :: String +pathSeparatorStr = [pathSeparator] hunk ./Distribution/Simple/Utils.hs 211 - = map (concat . intersperse pathSeperatorStr) - (inits $ mySplit pathSeperator path) + = map pathJoin (inits $ mySplit pathSeparator path) hunk ./Distribution/Simple/Utils.hs 226 - = case findIndices (== pathSeperator) path of + = case findIndices (== pathSeparator) path of hunk ./Distribution/Simple/Utils.hs 233 -maybeAddSep p = if last p == pathSeperator then p else p ++ pathSeperatorStr +maybeAddSep p = if last p == pathSeparator then p else p ++ pathSeparatorStr hunk ./Distribution/Simple/Utils.hs 261 - then concat (intersperse pathSeperatorStr (init splitted)) - ++ pathSeperatorStr + then maybeAddSep (pathJoin (init splitted)) hunk ./Distribution/Simple/Utils.hs 303 -mkLibName pref lib = pref ++ pathSeperatorStr ++ "libHS" ++ lib ++ ".a" +mkLibName pref lib = pathJoin [pref, ("libHS" ++ lib ++ ".a")] hunk ./Distribution/Simple/Utils.hs 307 -pathJoin = concat . intersperse pathSeperatorStr +pathJoin = concat . intersperse pathSeparatorStr hunk ./Distribution/Simple.hs 65 -import Distribution.Simple.Utils (die, pathSeperatorStr) +import Distribution.Simple.Utils (die, pathJoin) hunk ./Distribution/Simple.hs 93 - let buildPref = distPref ++ pathSeperatorStr ++ "build" - let srcPref = distPref ++ pathSeperatorStr ++ "src" + let buildPref = pathJoin [distPref, "build"] + let srcPref = pathJoin [distPref, "src"] hunk ./Distribution/Misc.hs 45 -module Distribution.Misc(License(..), Dependency, Extension, Opt +module Distribution.Misc(License(..), Dependency, Extension(..), Opt hunk ./Distribution/Misc.hs 73 -data Extension = Foo | Bar deriving Show +data Extension = + OverlappingInstances + | TypeSynonymInstances + | TemplateHaskell + deriving Show hunk ./Distribution/Simple/Build.hs 50 -import Distribution.Misc (Extension) +import Distribution.Misc (Extension(..)) hunk ./Distribution/Simple/Build.hs 62 -import Data.List(intersperse) +import Data.List(intersperse, nub) hunk ./Distribution/Simple/Build.hs 120 -extensionsToGHCFlag _ = [] -- ToDo +extensionsToGHCFlag = nub . map extensionToGHCFlag + where + extensionToGHCFlag OverlappingInstances = "-fallow-overlapping-instances" + extensionToGHCFlag TypeSynonymInstances = "-fglasgow-exts" + extensionToGHCFlag TemplateHaskell = "-fth" hunk ./Distribution/Simple/Utils.hs 288 - mapM system ["cp -r " ++ x ++ " " ++ targetDir - ++ y | (x,y) <- (zip sourceLocs sourceLocsNoPref)] + sequence_ [copyFile x (pathJoin [targetDir, y]) + | (x,y) <- (zip sourceLocs sourceLocsNoPref)] hunk ./Distribution/TODO 1 -* Quick -** fix "Seperator" - use pathJoin -** use copyFile instead of "cp" - hunk ./Distribution/ModuleTest.hs 100 -tests = [TestCase $ - do setCurrentDirectory "test" +tests = [TestLabel "configure GHC, sdist" $ TestCase $ + do system "ghc-pkg -r test-1.0 --config-file=$HOME/.ghc-packages" + setCurrentDirectory "test" hunk ./Distribution/ModuleTest.hs 120 - TestCase $ -- GHC and --install-prefix (uses above config) + TestLabel "GHC and install-prefix" $ TestCase $ -- (uses above config) hunk ./Distribution/ModuleTest.hs 127 - TestCase $ -- no intsall-prefix and hugs + TestLabel "GHC and install w/ no prefix" $ TestCase $ + do let targetDir = ",tmp/lib/test-1.0/" + instRetCode <- system $ "./setup install --user" + checkTargetDir targetDir [".hi"] + doesFileExist (pathJoin [targetDir, "libHStest-1.0.a"]) + >>= assertBool "library doesn't exist" + assertEqual "install returned error code" ExitSuccess instRetCode, + TestLabel "no install-prefix and hugs" $ TestCase $ hunk ./Distribution/Simple/GHCPackageConfig.hs 38 - hs_libraries = [pkg_name], + library_dirs = [mkImportDir pkg_descr lbi], + hs_libraries = ["HS"++pkg_name], hunk ./Distribution/Simple/Install.hs 105 - prefix lbi ++ '/':pkg_name + pathJoin [prefix lbi, pkg_name hunk ./Distribution/Simple/Install.hs 107 - prefix lbi ++ "/lib/" ++ pkg_name + pathJoin [prefix lbi, "lib", pkg_name] hunk ./Distribution/TODO 2 +** use HUnit as a packaging test. Doesn't work currently because: +*** multiple mains +*** multiple HUnitLang modules +*** maybe this can be solved w/ not using --make? + hunk ./Distribution/Misc.hs 45 -module Distribution.Misc(License(..), Dependency, Extension(..), Opt +module Distribution.Misc(License(..), Dependency(..), Extension(..), Opt hunk ./Distribution/Simple.hs 47 - License(..), Version(..), + License(..), Version(..), VersionRange(..), + orLaterVersion, orEarlierVersion, betweenVersionsInclusive, + Extension(..), Dependency(..), hunk ./Distribution/Simple.hs 68 -import Distribution.Misc (License(..)) -import Distribution.Version (Version(..)) +import Distribution.Misc (License(..), Extension(..), Dependency(..)) +import Distribution.Version (Version(..), VersionRange(..), + orLaterVersion, orEarlierVersion, + betweenVersionsInclusive) hunk ./Distribution/Simple/Build.hs 117 + ++ [ "-i" ++ pref ] adddir ./test/A move ./test/A.hs ./test/A/A.hs move ./test/B ./test/A/B move ./test/Makefile ./test/A/Makefile move ./test/Setup.hs ./test/A/Setup.hs hunk ./Distribution/ModuleTest.hs 102 - setCurrentDirectory "test" + setCurrentDirectory "test/A" hunk ./Makefile 1 -all: tests +all: main hunk ./Makefile 3 -tests: +main: hunk ./Makefile 5 - cd test && make +tests: + cd test/A && make hunk ./test/A/Makefile 2 - ghc -Wall --make -i../:/usr/local/src/HUnit-1.0 Setup.hs -o setup + ghc -Wall --make -i../../:/usr/local/src/HUnit-1.0 Setup.hs -o setup hunk ./Distribution/Misc.hs 71 --- package might employ. Not yet implemented. +-- package might employ. FIX: Most extensions not yet implemented. hunk ./Distribution/TODO 22 -** FIX: does it try to register when we have "install --inst-prefix"? - (write test case) -** FIX: install currently moves .hs, .hi, and .o files for any target. - make it do the right thing for hugs (just move .hs) and {g,n}hc - (move .hi and .o) -** Write top-level Setup test cases (like "make check" under the test directory) +** Extensions -> flags interface (Misc.hs) hunk ./Distribution/TODO 24 -** Extensions -> flags interface +** Change mainModules to [(String, String)] for (Module, executable name) hunk ./Distribution/TODO 27 -** build (for NHC and Hugs) -** install (for GHC and NHC) - look for .o and .hi, register, etc hunk ./Makefile 18 +dist: pushall + darcs dist + scp library-infrastructure--darcs.tar.gz ijones@www.haskell.org:~/libraryInfrastructure/libraryInfrastructure-code.tgz + adddir ./test/HUnit-1.0 addfile ./test/HUnit-1.0/Guide.html addfile ./test/HUnit-1.0/HUnitTester.hs addfile ./test/HUnit-1.0/License addfile ./test/HUnit-1.0/Makefile addfile ./test/HUnit-1.0/README addfile ./test/HUnit-1.0/Setup.lhs adddir ./test/HUnit-1.0/src addfile ./test/HUnit-1.0/src/Example.hs addfile ./test/HUnit-1.0/src/HUnit.lhs addfile ./test/HUnit-1.0/src/HUnitBase.lhs addfile ./test/HUnit-1.0/src/HUnitLang.lhs addfile ./test/HUnit-1.0/src/HUnitLang98.lhs addfile ./test/HUnit-1.0/src/HUnitLangExc.lhs addfile ./test/HUnit-1.0/src/HUnitTest98.lhs addfile ./test/HUnit-1.0/src/HUnitTestBase.lhs addfile ./test/HUnit-1.0/src/HUnitTestExc.lhs addfile ./test/HUnit-1.0/src/HUnitText.lhs addfile ./test/HUnit-1.0/src/Terminal.lhs addfile ./test/HUnit-1.0/src/TerminalTest.lhs hunk ./Distribution/ModuleTest.hs 67 - doesDirectoryExist) + doesDirectoryExist, getCurrentDirectory) hunk ./Distribution/ModuleTest.hs 71 -import HUnit(runTestTT, Test(..), Counts, assertBool, assertEqual) +import HUnit(runTestTT, Test(..), Counts, assertBool, assertEqual, Assertion) hunk ./Distribution/ModuleTest.hs 99 +-- |Run this command, and assert it returns a successful error code. +assertCmd :: String -- ^Command + -> String -- ^Comment + -> Assertion +assertCmd command comment + = system command >>= assertEqual (command ++ ":" ++ comment) ExitSuccess + hunk ./Distribution/ModuleTest.hs 107 -tests = [TestLabel "configure GHC, sdist" $ TestCase $ +tests = [TestLabel "testing the HUnit package" $ TestCase $ + do oldDir <- getCurrentDirectory + setCurrentDirectory "test/HUnit-1.0" +-- assertCmd "make semiclean" "make semiclean" + system "ghc-pkg --config-file=$HOME/.ghc-packages -r HUnit-1.0" + assertCmd "./setup configure --prefix=\",tmp\"" "hunit configure" + assertCmd "./setup build" "hunit build" + assertCmd "./setup install --user" "hunit install" + assertCmd "ghc -package-conf $HOME/.ghc-packages -package HUnit-1.0 HUnitTester.hs -o ./hunitTest" "compile w/ hunit" + assertCmd "./hunitTest" "hunit test" + assertCmd "ghc-pkg --config-file=$HOME/.ghc-packages -r HUnit-1.0" "package remove" + setCurrentDirectory oldDir, + + TestLabel "configure GHC, sdist" $ TestCase $ hunk ./Distribution/Package.hs 55 -import Distribution.Version(Version, showVersion) +import Distribution.Version(Version(..), showVersion) hunk ./Distribution/Package.hs 68 +showPackageId (PackageIdentifier n (Version [] _)) = n -- if no version, don't show version. hunk ./Distribution/Simple/Configure.hs 53 +import Distribution.Misc(Dependency(..)) hunk ./Distribution/Simple/Configure.hs 125 - return LocalBuildInfo{prefix=prefix, compiler=compiler, packageDeps=[]} + return LocalBuildInfo{prefix=prefix, compiler=compiler, + packageDeps=map buildDepToDep (buildDepends pkg_descr)} hunk ./Distribution/Simple/Configure.hs 128 +-- |Converts build dependencies to real dependencies. FIX: doesn't +-- set any version information. +buildDepToDep :: Dependency -> PackageIdentifier +buildDepToDep (Dependency s _) = PackageIdentifier s (Version [] []) + hunk ./Distribution/TODO 22 + +** buildDepToDep in Configure doesn't set version dependency. + hunk ./Makefile 7 + cd test/HUnit-1.0 && make hunk ./Makefile 11 + rm -f library-infrastructure--darcs.tar.gz hunk ./Makefile 13 -check: tests +check: tests main hunk ./Makefile 23 + rm -f library-infrastructure--darcs.tar.gz hunk ./test/HUnit-1.0/Guide.html 1 + + + + + + + + HUnit 1.0 User's Guide + + + +

HUnit 1.0 User's Guide

+ +HUnit is a unit testing framework for Haskell, inspired by the JUnit +tool for Java.  This guide describes how to use HUnit, assuming +you are familiar with Haskell, though not necessarily with +JUnit.  You can obtain HUnit, including this guide, at +http://hunit.sourceforge.net. + +

Introduction

+ +A test-centered methodology for software development is most effective +when tests are easy to create, change, and execute.  The JUnit tool pioneered support for +test-first development in Java.  +HUnit is an adaptation of JUnit to Haskell, a general-purpose, purely +functional programming language.  (To learn more about Haskell, +see http://www.haskell.org.) +

+With HUnit, as with JUnit, you can easily create tests, name them, +group them into suites, and execute them, with the framework checking +the results automatically.  Test specification in HUnit is even +more concise and flexible than in JUnit, thanks to the nature of the +Haskell language.  HUnit currently includes only a text-based +test controller, but the framework is designed for easy +extension.  (Would anyone care to write a graphical test +controller for HUnit?) +

+The next section helps you get started using HUnit in simple +ways.  Subsequent sections give details on writing tests and running tests.  The document concludes +with a section describing HUnit's constituent files and a section giving +references to further information. + +

Getting Started

+ +In the Haskell module where your tests will reside, import module +HUnit: +
+    import HUnit
+
+Define test cases as appropriate: +
+    test1 = TestCase (assertEqual "for (foo 3)," (1,2) (foo 3))
+    test2 = TestCase (do (x,y) <- partA 3
+                         assertEqual "for the first result of partA," 5 x
+                         b <- partB y
+                         assertBool ("(partB " ++ show y ++ ") failed") b)
+
+Name the test cases and group them together: +
+    tests = TestList [TestLabel "test1" test1, TestLabel "test2" test2]
+
+Run the tests as a group.  At a Haskell interpreter prompt, apply +the function runTestTT to the collected tests.  (The +"TT" suggests text orientation with output to +the terminal.) +
+    > runTestTT tests
+    Cases: 2  Tried: 2  Errors: 0  Failures: 0
+    >
+
+If the tests are proving their worth, you might see: +
+    > runTestTT tests
+    ### Failure in: 0:test1
+    for (foo 3),
+    expected: (1,2)
+     but got: (1,3)
+    Cases: 2  Tried: 2  Errors: 0  Failures: 1
+    >
+
+Isn't that easy? +

+You can specify tests even more succinctly using operators and +overloaded functions that HUnit provides: +

+    tests = test [ "test1" ~: "(foo 3)" ~: (1,2) ~=? (foo 3),
+                   "test2" ~: do (x, y) <- partA 3
+                                 assertEqual "for the first result of partA," 5 x
+                                 partB y @? "(partB " ++ show y ++ ") failed" ]
+
+Assuming the same test failures as before, you would see: +
+    > runTestTT tests
+    ### Failure in: 0:test1:(foo 3)
+    expected: (1,2)
+     but got: (1,3)
+    Cases: 2  Tried: 2  Errors: 0  Failures: 1
+    >
+
+ +

Writing Tests

+ +Tests are specified compositionally.  Assertions are combined to make a test case, and test cases are combined into tests.  HUnit also provides advanced features for more convenient +test specification. + +

Assertions

+ +The basic building block of a test is an assertion. +
+    type Assertion = IO ()
+
+An assertion is an IO computation that always produces a void +result.  Why is an assertion an IO computation? So that +programs with real-world side effects can be tested.  How does an +assertion assert anything if it produces no useful result? The answer +is that an assertion can signal failure by calling +assertFailure. +
+    assertFailure :: String -> Assertion
+    assertFailure msg = ioError (userError ("HUnit:" ++ msg))
+
+(assertFailure msg) raises an exception.  The string +argument identifies the failure.  The failure message is prefixed +by "HUnit:" to mark it as an HUnit assertion failure +message.  The HUnit test framework interprets such an exception +as indicating failure of the test whose execution raised the +exception.  (Note: The details concerning the implementation of +assertFailure are subject to change and should not be relied +upon.) +

+assertFailure can be used directly, but it is much more +common to use it indirectly through other assertion functions that +conditionally assert failure. +

+    assertBool :: String -> Bool -> Assertion
+    assertBool msg b = unless b (assertFailure msg)
+
+    assertString :: String -> Assertion
+    assertString s = unless (null s) (assertFailure s)
+
+    assertEqual :: (Eq a, Show a) => String -> a -> a -> Assertion
+    assertEqual preface expected actual =
+      unless (actual == expected) (assertFailure msg)
+     where msg = (if null preface then "" else preface ++ "\n") ++
+                 "expected: " ++ show expected ++ "\n but got: " ++ show actual
+
+With assertBool you give the assertion condition and failure +message separately.  With assertString the two are +combined.  With assertEqual you provide a "preface", an +expected value, and an actual value; the failure message shows the two +unequal values and is prefixed by the preface.  Additional ways +to create assertions are described later under Advanced Features. +

+Since assertions are IO computations, they may be +combined--along with other IO computations--using +(>>=), (>>), and the do notation.  As +long as its result is of type (IO ()), such a combination +constitutes a single, collective assertion, incorporating any number +of constituent assertions.  The important features of such a +collective assertion are that it fails if any of its constituent +assertions is executed and fails, and that the first constituent +assertion to fail terminates execution of the collective +assertion.  Such behavior is essential to specifying a test case. + +

Test Case

+ +A test case is the unit of test execution.  That is, +distinct test cases are executed independently.  The failure of +one is independent of the failure of any other. +

+A test case consists of a single, possibly collective, +assertion.  The possibly multiple constituent assertions in a +test case's collective assertion are not independent.  +Their interdependence may be crucial to specifying correct operation +for a test.  A test case may involve a series of steps, each +concluding in an assertion, where each step must succeed in order for +the test case to continue.  As another example, a test may +require some "set up" to be performed that must be undone ("torn down" +in JUnit parlance) once the test is complete.  In this case, you +could use Haskell's IO.bracket function to achieve the +desired effect. +

+You can make a test case from an assertion by applying the +TestCase constructor.  For example, +(TestCase (return ())) is a test case that never +fails, and +(TestCase (assertEqual "for x," 3 x)) +is a test case that checks that the value of x is 3.  +Additional ways to create test cases are described later under +Advanced Features. + +

Tests

+ +As soon as you have more than one test, you'll want to name them to +tell them apart.  As soon as you have more than several tests, +you'll want to group them to process them more easily.  So, +naming and grouping are the two keys to managing collections of tests. +

+In tune with the "composite" design pattern [1], a test is defined as a package +of test cases.  Concretely, a test is either a single test case, +a group of tests, or either of the first two identified by a label. +

+    data Test = TestCase Assertion
+              | TestList [Test]
+              | TestLabel String Test
+
+There are three important features of this definition to note: +
    +
  • +A TestList consists of a list of tests rather than a list of +test cases.  This means that the structure of a Test is +actually a tree.  Using a hierarchy helps organize tests just as +it helps organize files in a file system. +
  • +
  • +A TestLabel is attached to a test rather than to a test +case.  This means that all nodes in the test tree, not just test +case (leaf) nodes, can be labeled.  Hierarchical naming helps +organize tests just as it helps organize files in a file system. +
  • +
  • +A TestLabel is separate from both TestCase and +TestList.  This means that labeling is optional +everywhere in the tree.  Why is this a good thing? Because of +the hierarchical structure of a test, each constituent test case is +uniquely identified by its path in the tree, ignoring all +labels.  Sometimes a test case's path (or perhaps its subpath +below a certain node) is a perfectly adequate "name" for the test case +(perhaps relative to a certain node).  In this case, creating a +label for the test case is both unnecessary and inconvenient. +
  • +
+

+The number of test cases that a test comprises can be computed with +testCaseCount. +

+    testCaseCount :: Test -> Int
+
+

+As mentioned above, a test is identified by its path in the +test hierarchy. +

+    data Node  = ListItem Int | Label String
+      deriving (Eq, Show, Read)
+
+    type Path = [Node]    -- Node order is from test case to root.
+
+Each occurrence of TestList gives rise to a ListItem +and each occurrence of TestLabel gives rise to a +Label.  The ListItems by themselves ensure +uniqueness among test case paths, while the Labels allow you +to add mnemonic names for individual test cases and collections of +them. +

+Note that the order of nodes in a path is reversed from what you might +expect: The first node in the list is the one deepest in the +tree.  This order is a concession to efficiency: It allows common +path prefixes to be shared. +

+The paths of the test cases that a test comprises can be computed with +testCasePaths.  The paths are listed in the order in +which the corresponding test cases would be executed. +

+    testCasePaths :: Test -> [Path]
+
+

+The three variants of Test can be constructed simply by +applying TestCase, TestList, and TestLabel +to appropriate arguments.  Additional ways to create tests are +described later under Advanced +Features. +

+The design of the type Test provides great conciseness, +flexibility, and convenience in specifying tests.  Moreover, the +nature of Haskell significantly augments these qualities: +

    +
  • +Combining assertions and other code to construct test cases is easy +with the IO monad. +
  • +
  • +Using overloaded functions and special operators (see below), +specification of assertions and tests is extremely compact. +
  • +
  • +Structuring a test tree by value, rather than by name as in JUnit, +provides for more convenient, flexible, and robust test suite +specification.  In particular, a test suite can more easily be +computed "on the fly" than in other test frameworks. +
  • +
  • +Haskell's powerful abstraction facilities provide unmatched support +for test refactoring. +
  • +
+ +

Advanced Features

+ +HUnit provides additional features for specifying assertions and tests +more conveniently and concisely.  These facilities make use of +Haskell type classes. +

+The following operators can be used to construct assertions. +

+    infix 1 @?, @=?, @?=
+
+    (@?) :: (AssertionPredicable t) => t -> String -> Assertion
+    pred @? msg = assertionPredicate pred >>= assertBool msg
+
+    (@=?) :: (Eq a, Show a) => a -> a -> Assertion
+    expected @=? actual = assertEqual "" expected actual
+
+    (@?=) :: (Eq a, Show a) => a -> a -> Assertion
+    actual @?= expected = assertEqual "" expected actual
+
+You provide a boolean condition and failure message separately to +(@?), as for assertBool, but in a different +order.  The (@=?) and (@?=) operators provide +shorthands for assertEqual when no preface is required.  +They differ only in the order in which the expected and actual values +are provided.  (The actual value--the uncertain one--goes on the +"?" side of the operator.) +

+The (@?) operator's first argument is something from which an +assertion predicate can be made, that is, its type must be +AssertionPredicable. +

+    type AssertionPredicate = IO Bool
+
+    class AssertionPredicable t
+     where assertionPredicate :: t -> AssertionPredicate
+
+    instance AssertionPredicable Bool
+     where assertionPredicate = return
+
+    instance (AssertionPredicable t) => AssertionPredicable (IO t)
+     where assertionPredicate = (>>= assertionPredicate)
+
+The overloaded assert function in the Assertable +type class constructs an assertion. +
+    class Assertable t
+     where assert :: t -> Assertion
+
+    instance Assertable ()
+     where assert = return
+
+    instance Assertable Bool
+     where assert = assertBool ""
+
+    instance (ListAssertable t) => Assertable [t]
+     where assert = listAssert
+
+    instance (Assertable t) => Assertable (IO t)
+     where assert = (>>= assert)
+
+The ListAssertable class allows assert to be applied +to [Char] (that is, String). +
+    class ListAssertable t
+     where listAssert :: [t] -> Assertion
+
+    instance ListAssertable Char
+     where listAssert = assertString
+
+With the above declarations, (assert ()), +(assert True), and (assert "") (as well as +IO forms of these values, such as (return ())) +are all assertions that never fail, while (assert False) +and (assert "some failure message") (and their +IO forms) are assertions that always fail.  You may +define additional instances for the type classes Assertable, +ListAssertable, and AssertionPredicable if that +should be useful in your application. +

+The overloaded test function in the Testable type +class constructs a test. +

+    class Testable t
+     where test :: t -> Test
+
+    instance Testable Test
+     where test = id
+
+    instance (Assertable t) => Testable (IO t)
+     where test = TestCase . assert
+
+    instance (Testable t) => Testable [t]
+     where test = TestList . map test
+
+The test function makes a test from either an +Assertion (using TestCase), a list of +Testable items (using TestList), or a Test +(making no change). +

+The following operators can be used to construct tests. +

+    infix  1 ~?, ~=?, ~?=
+    infixr 0 ~:
+
+    (~?) :: (AssertionPredicable t) => t -> String -> Test
+    pred ~? msg = TestCase (pred @? msg)
+
+    (~=?) :: (Eq a, Show a) => a -> a -> Test
+    expected ~=? actual = TestCase (expected @=? actual)
+
+    (~?=) :: (Eq a, Show a) => a -> a -> Test
+    actual ~?= expected = TestCase (actual @?= expected)
+
+    (~:) :: (Testable t) => String -> t -> Test
+    label ~: t = TestLabel label (test t)
+
+(~?), (~=?), and (~?=) each make an +assertion, as for (@?), (@=?), and (@?=), +respectively, and then a test case from that assertion.  +(~:) attaches a label to something that is +Testable.  You may define additional instances for the +type class Testable should that be useful. + +

Running Tests

+ +HUnit is structured to support multiple test controllers.  The +first subsection below describes the test +execution characteristics common to all test controllers.  +The second subsection describes the +text-based controller that is +included with HUnit. + +

Test Execution

+ +All test controllers share a common test execution model.  They +differ only in how the results of test execution are shown. +

+The execution of a test (a value of type Test) involves the +serial execution (in the IO monad) of its constituent test +cases.  The test cases are executed in a depth-first, +left-to-right order.  During test execution, four counts of test +cases are maintained: +

+    data Counts = Counts { cases, tried, errors, failures :: Int }
+      deriving (Eq, Show, Read)
+
+
    +
  • +cases is the number of test cases included in the test.  +This number is a static property of a test and remains unchanged +during test execution. +
  • +
  • +tried is the number of test cases that have been executed so +far during the test execution. +
  • +
  • +errors is the number of test cases whose execution ended with +an unexpected exception being raised.  Errors indicate problems +with test cases, as opposed to the code under test. +
  • +
  • +failures is the number of test cases whose execution asserted +failure.  Failures indicate problems with the code under test. +
  • +
+Why is there no count for test case successes? The technical reason +is that the counts are maintained such that the number of test case +successes is always equal to +(tried - (errors + failures)).  The +psychosocial reason is that, with test-centered development and the +expectation that test failures will be few and short-lived, attention +should be focused on the failures rather than the successes. +

+As test execution proceeds, three kinds of reporting event are +communicated to the test controller.  (What the controller does +in response to the reporting events depends on the controller.) +

    +
  • +start -- +Just prior to initiation of a test case, the path of the test case and +the current counts (excluding the current test case) are reported. +
  • +
  • +error -- +When a test case terminates with an error, the error message is +reported, along with the test case path and current counts (including +the current test case). +
  • +
  • +failure -- +When a test case terminates with a failure, the failure message is +reported, along with the test case path and current counts (including +the current test case). +
  • +
+Typically, a test controller shows error and failure +reports immediately but uses the start report merely to update +an indication of overall test execution progress. + +

Text-Based Controller

+ +A text-based test controller is included with HUnit. +
+    runTestText :: PutText st -> Test -> IO (Counts, st)
+
+runTestText is generalized on a reporting scheme given +as its first argument.  During execution of the test given as its +second argument, the controller creates a string for each reporting +event and processes it according to the reporting scheme.  When +test execution is complete, the controller returns the final counts +along with the final state for the reporting scheme. +

+The strings for the three kinds of reporting event are as follows. +

    +
  • +A start report is the result of the function +showCounts applied to the counts current immediately prior to +initiation of the test case being started. +
  • +
  • +An error report is of the form +"Error in:   path\nmessage", +where path is the path of the test case in error, as shown by +showPath, and message is a message describing the +error.  If the path is empty, the report has the form +"Error:\nmessage". +
  • +
  • +A failure report is of the form +"Failure in: path\nmessage", where +path is the path of the test case in error, as shown by +showPath, and message is the failure message.  If +the path is empty, the report has the form +"Failure:\nmessage". +
  • +
+

+The function showCounts shows a set of counts. +

+    showCounts :: Counts -> String
+
+The form of its result is +"Cases: cases  Tried: tried  Errors: errors  Failures: failures" +where cases, tried, errors, and failures +are the count values. +

+The function showPath shows a test case path. +

+    showPath :: Path -> String
+
+The nodes in the path are reversed (so that the path reads from the +root down to the test case), and the representations for the nodes are +joined by ':' separators.  The representation for +(ListItem n) is (show n).  The +representation for (Label label) is normally +label.  However, if label contains a colon or if +(show label) is different from label surrounded +by quotation marks--that is, if any ambiguity could exist--then +(Label label) is represented as (show +label). +

+HUnit includes two reporting schemes for the text-based test +controller.  You may define others if you wish. +

+    putTextToHandle :: Handle -> Bool -> PutText Int
+
+putTextToHandle writes error and failure reports, plus a +report of the final counts, to the given handle.  Each of these +reports is terminated by a newline.  In addition, if the given +flag is True, it writes start reports to the handle as +well.  A start report, however, is not terminated by a +newline.  Before the next report is written, the start report is +"erased" with an appropriate sequence of carriage return and space +characters.  Such overwriting realizes its intended effect on +terminal devices. +
+    putTextToShowS :: PutText ShowS
+
+putTextToShowS ignores start reports and simply accumulates +error and failure reports, terminating them with newlines.  The +accumulated reports are returned (as the second element of the pair +returned by runTestText) as a ShowS function (that +is, one with type (String -> String)) whose first +argument is a string to be appended to the accumulated report lines. +

+HUnit provides a shorthand for the most common use of the text-based +test controller. +

+    runTestTT :: Test -> IO Counts
+
+runTestTT invokes runTestText, specifying +(putTextToHandle stderr True) for the reporting scheme, and +returns the final counts from the test execution. + +

Constituent Files

+ +HUnit 1.0 consists of the following files. +
+ +
Guide.html +
+This document. +
Example.hs +
+Haskell module that includes the examples given in the Getting Started section.  Run this +program to make sure you understand how to use HUnit. +
HUnit.lhs +
+Haskell module that you import to use HUnit. +
HUnitBase.lhs +
+Haskell module that defines HUnit's basic facilities. +
HUnitLang.lhs +
+Haskell module that defines how assertion failure is signaled and +caught.  By default, it is a copy of +HUnitLang98.lhs.  Replace it by a copy of +HUnitLangExc.lhs for more robust exception behavior. +
HUnitLang98.lhs +
+Haskell module that defines generic assertion failure handling.  +It is compliant to Haskell 98 but catches only IO errors. +
HUnitLangExc.lhs +
+Haskell module that defines more robust assertion failure +handling.  It catches more (though unfortunately not all) kinds +of exceptions.  However, it works only with Hugs (Dec. 2001 or +later) and GHC (5.00 and later). +
HUnitTest98.lhs +
+Haskell module that tests HUnit, assuming the generic assertion +failure handling of HUnitLang98.lhs. +
HUnitTestBase.lhs +
+Haskell module that defines testing support and basic (Haskell 98 +compliant) tests of HUnit (using HUnit, of course!).  Contains +more extensive and advanced examples of testing with HUnit. +
HUnitTestExc.lhs +
+Haskell module that tests HUnit, assuming the extended assertion +failure handling of HUnitLangExc.lhs. +
HUnitText.lhs +
+Haskell module that defines HUnit's text-based test controller. +
License +
+The license for use of HUnit. +
Terminal.lhs +
+Haskell module that assists in checking the output of HUnit tests +performed by the text-based test controller. +
TerminalTest.lhs +
+Haskell module that tests Terminal.lhs (using HUnit, of +course!). +
+ +

References

+ +
+ +
+[1] Gamma, E., et al. Design Patterns: +Elements of Reusable Object-Oriented Software, Addison-Wesley, +Reading, MA, 1995. +
+The classic book describing design patterns in an object-oriented +context. + +
+http://www.junit.org +
+Web page for JUnit, the tool after which HUnit is modeled. + +
+ +http://junit.sourceforge.net/doc/testinfected/testing.htm +
+A good introduction to test-first development and the use of JUnit. + +
+ +http://junit.sourceforge.net/doc/cookstour/cookstour.htm +
+A description of the internal structure of JUnit.  Makes for an +interesting comparison between JUnit and HUnit. + +
+ +

+


+ +The HUnit software and this guide were written by Dean Herington +(heringto@cs.unc.edu). + +

+HUnit development is supported by + +SourceForge.net Logo + + +

+[$Revision: 1.1 $ $Date: 2002/02/21 19:09:27 $] + + + hunk ./test/HUnit-1.0/HUnitTester.hs 1 +module Main where + +import HUnit + +main :: IO () +main = do runTestTT $ TestCase $ assertBool "foo!" True + putStrLn "Works :)" hunk ./test/HUnit-1.0/License 1 +HUnit is Copyright (c) Dean Herington, 2002, all rights reserved, +and is distributed as free software under the following license. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions, and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions, and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- The names of the copyright holders may not be used to endorse or +promote products derived from this software without specific prior +written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. hunk ./test/HUnit-1.0/Makefile 1 +all: + ghc -Wall --make -i../../:/usr/local/src/HUnit-1.0 Setup.lhs -o setup +semiclean: + rm -rf ,tmp dist + find . -name "*.o" |xargs rm -f + find . -name "*.hi" |xargs rm -f +clean: semiclean + rm -f setup a.out hunitTest + rm -f installed-pkg-config + +check: all + ./setup configure --user --prefix=/tmp/foo + ./setup install --install-prefix=/tmp/bar + ls /tmp/bar* + # install w/ register! + ./setup install +# ls /tmp/foo* + ./setup sdist + ls dist hunk ./test/HUnit-1.0/README 1 +HUnit is a unit testing framework for Haskell, inspired by the JUnit +tool for Java. HUnit is free software; see its "License" file for +details. HUnit is available at . + +HUnit 1.0 consists of a number of files. Besides Haskell source files +(whose names end in ".hs" or ".lhs"), these files include: + + * README -- this file + * Guide.html -- user's guide, in HTML format + * License -- license for use of HUnit + +See the user's guide for more information. hunk ./test/HUnit-1.0/Setup.lhs 1 +#!/usr/bin/runhugs + +> module Main where + +> import Distribution.Simple + +> pkg_descr = emptyPackageDescription { +> package = PackageIdentifier "HUnit" (Version [1,0] []), +> allModules = ["HUnitText", "HUnit", "HUnitLang", +> "HUnitTestBase", "Terminal", "HUnitBase"], +> exposedModules = ["HUnit"], +> buildDepends = [Dependency "haskell-src" AnyVersion], +> hsSourceDir = "src" +> } + +> main :: IO () +> main = do defaultMain pkg_descr hunk ./test/HUnit-1.0/src/Example.hs 1 +-- Example.hs -- Examples from HUnit user's guide + +-- $Id: Example.hs,v 1.2 2002/02/19 17:05:21 heringto Exp $ + + +module Main where + +import HUnit + + +foo :: Int -> (Int, Int) +foo x = (1, x) + +partA :: Int -> IO (Int, Int) +partA v = return (v+2, v+3) + +partB :: Int -> IO Bool +partB v = return (v > 5) + + +test1 = TestCase (assertEqual "for (foo 3)," (1,2) (foo 3)) + +test2 = TestCase (do (x,y) <- partA 3 + assertEqual "for the first result of partA," 5 x + b <- partB y + assertBool ("(partB " ++ show y ++ ") failed") b) + +tests = TestList [TestLabel "test1" test1, TestLabel "test2" test2] + + +tests' = test [ "test1" ~: "(foo 3)" ~: (1,2) ~=? (foo 3), + "test2" ~: do (x, y) <- partA 3 + assertEqual "for the first result of partA," 5 x + partB y @? "(partB " ++ show y ++ ") failed" ] + +main = do runTestTT tests + runTestTT tests' hunk ./test/HUnit-1.0/src/HUnit.lhs 1 +HUnit.lhs -- interface module for HUnit + +$Id: HUnit.lhs,v 1.3 2002/02/09 04:25:12 heringto Exp $ + +> module HUnit +> ( +> module HUnitBase, +> module HUnitText +> ) +> where + +> import HUnitBase +> import HUnitText hunk ./test/HUnit-1.0/src/HUnitBase.lhs 1 +HUnitBase.lhs -- basic definitions + +$Id: HUnitBase.lhs,v 1.12 2002/02/14 19:31:57 heringto Exp $ + +> module HUnitBase +> ( +> {- from HUnitLang: -} Assertion, assertFailure, +> assertString, assertBool, assertEqual, +> Assertable(..), ListAssertable(..), +> AssertionPredicate, AssertionPredicable(..), +> (@?), (@=?), (@?=), +> Test(..), Node(..), Path, +> testCaseCount, +> Testable(..), +> (~?), (~=?), (~?=), (~:), +> Counts(..), State(..), +> ReportStart, ReportProblem, +> testCasePaths, +> performTest +> ) +> where + +> import Monad (unless, foldM) + + +Assertion Definition +==================== + +> import HUnitLang + + +Conditional Assertion Functions +------------------------------- + +> assertBool :: String -> Bool -> Assertion +> assertBool msg b = unless b (assertFailure msg) + +> assertString :: String -> Assertion +> assertString s = unless (null s) (assertFailure s) + +> assertEqual :: (Eq a, Show a) => String -> a -> a -> Assertion +> assertEqual preface expected actual = +> unless (actual == expected) (assertFailure msg) +> where msg = (if null preface then "" else preface ++ "\n") ++ +> "expected: " ++ show expected ++ "\n but got: " ++ show actual + + +Overloaded `assert` Function +---------------------------- + +> class Assertable t +> where assert :: t -> Assertion + +> instance Assertable () +> where assert = return + +> instance Assertable Bool +> where assert = assertBool "" + +> instance (ListAssertable t) => Assertable [t] +> where assert = listAssert + +> instance (Assertable t) => Assertable (IO t) +> where assert = (>>= assert) + +We define the assertability of `[Char]` (that is, `String`) and leave +other types of list to possible user extension. + +> class ListAssertable t +> where listAssert :: [t] -> Assertion + +> instance ListAssertable Char +> where listAssert = assertString + + +Overloaded `assertionPredicate` Function +---------------------------------------- + +> type AssertionPredicate = IO Bool + +> class AssertionPredicable t +> where assertionPredicate :: t -> AssertionPredicate + +> instance AssertionPredicable Bool +> where assertionPredicate = return + +> instance (AssertionPredicable t) => AssertionPredicable (IO t) +> where assertionPredicate = (>>= assertionPredicate) + + +Assertion Construction Operators +-------------------------------- + +> infix 1 @?, @=?, @?= + +> (@?) :: (AssertionPredicable t) => t -> String -> Assertion +> pred @? msg = assertionPredicate pred >>= assertBool msg + +> (@=?) :: (Eq a, Show a) => a -> a -> Assertion +> expected @=? actual = assertEqual "" expected actual + +> (@?=) :: (Eq a, Show a) => a -> a -> Assertion +> actual @?= expected = assertEqual "" expected actual + + + +Test Definition +=============== + +> data Test = TestCase Assertion +> | TestList [Test] +> | TestLabel String Test + +> instance Show Test where +> showsPrec p (TestCase _) = showString "TestCase _" +> showsPrec p (TestList ts) = showString "TestList " . showList ts +> showsPrec p (TestLabel l t) = showString "TestLabel " . showString l +> . showChar ' ' . showsPrec p t + +> testCaseCount :: Test -> Int +> testCaseCount (TestCase _) = 1 +> testCaseCount (TestList ts) = sum (map testCaseCount ts) +> testCaseCount (TestLabel _ t) = testCaseCount t + + +> data Node = ListItem Int | Label String +> deriving (Eq, Show, Read) + +> type Path = [Node] -- Node order is from test case to root. + + +> testCasePaths :: Test -> [Path] +> testCasePaths t = tcp t [] +> where tcp (TestCase _) p = [p] +> tcp (TestList ts) p = +> concat [ tcp t (ListItem n : p) | (t,n) <- zip ts [0..] ] +> tcp (TestLabel l t) p = tcp t (Label l : p) + + +Overloaded `test` Function +-------------------------- + +> class Testable t +> where test :: t -> Test + +> instance Testable Test +> where test = id + +> instance (Assertable t) => Testable (IO t) +> where test = TestCase . assert + +> instance (Testable t) => Testable [t] +> where test = TestList . map test + + +Test Construction Operators +--------------------------- + +> infix 1 ~?, ~=?, ~?= +> infixr 0 ~: + +> (~?) :: (AssertionPredicable t) => t -> String -> Test +> pred ~? msg = TestCase (pred @? msg) + +> (~=?) :: (Eq a, Show a) => a -> a -> Test +> expected ~=? actual = TestCase (expected @=? actual) + +> (~?=) :: (Eq a, Show a) => a -> a -> Test +> actual ~?= expected = TestCase (actual @?= expected) + +> (~:) :: (Testable t) => String -> t -> Test +> label ~: t = TestLabel label (test t) + + + +Test Execution +============== + +> data Counts = Counts { cases, tried, errors, failures :: Int } +> deriving (Eq, Show, Read) + +> data State = State { path :: Path, counts :: Counts } +> deriving (Eq, Show, Read) + +> type ReportStart us = State -> us -> IO us + +> type ReportProblem us = String -> State -> us -> IO us + + +Note that the counts in a start report do not include the test case +being started, whereas the counts in a problem report do include the +test case just finished. The principle is that the counts are sampled +only between test case executions. As a result, the number of test +case successes always equals the difference of test cases tried and +the sum of test case errors and failures. + + +> performTest :: ReportStart us -> ReportProblem us -> ReportProblem us +> -> us -> Test -> IO (Counts, us) +> performTest reportStart reportError reportFailure us t = do +> (ss', us') <- pt initState us t +> unless (null (path ss')) $ error "performTest: Final path is nonnull" +> return (counts ss', us') +> where +> initState = State{ path = [], counts = initCounts } +> initCounts = Counts{ cases = testCaseCount t, tried = 0, +> errors = 0, failures = 0} + +> pt ss us (TestCase a) = do +> us' <- reportStart ss us +> r <- performTestCase a +> case r of Nothing -> do return (ss', us') +> Just (True, m) -> do usF <- reportFailure m ssF us' +> return (ssF, usF) +> Just (False, m) -> do usE <- reportError m ssE us' +> return (ssE, usE) +> where c@Counts{ tried = t } = counts ss +> ss' = ss{ counts = c{ tried = t + 1 } } +> ssF = ss{ counts = c{ tried = t + 1, failures = failures c + 1 } } +> ssE = ss{ counts = c{ tried = t + 1, errors = errors c + 1 } } + +> pt ss us (TestList ts) = foldM f (ss, us) (zip ts [0..]) +> where f (ss, us) (t, n) = withNode (ListItem n) ss us t + +> pt ss us (TestLabel label t) = withNode (Label label) ss us t + +> withNode node ss0 us0 t = do (ss2, us1) <- pt ss1 us0 t +> return (ss2{ path = path0 }, us1) +> where path0 = path ss0 +> ss1 = ss0{ path = node : path0 } hunk ./test/HUnit-1.0/src/HUnitLang.lhs 1 +HUnitLang98.lhs -- HUnit language support, generic Haskell 98 variant + +Note: The Haskell system you use needs to find this file when looking +for module `HUnitLang`. + +$Id: HUnitLang98.lhs,v 1.2 2002/02/14 19:27:56 heringto Exp $ + +> module HUnitLang +> ( +> Assertion, +> assertFailure, +> performTestCase +> ) +> where + + +When adapting this module for other Haskell language systems, change +the imports and the implementations but not the interfaces. + + + +Imports +------- + +> import List (isPrefixOf) +> import IO (ioeGetErrorString, try) + + + +Interfaces +---------- + +An assertion is an `IO` computation with trivial result. + +> type Assertion = IO () + +`assertFailure` signals an assertion failure with a given message. + +> assertFailure :: String -> Assertion + +`performTestCase` performs a single test case. The meaning of the +result is as follows: + Nothing test case success + Just (True, msg) test case failure with the given message + Just (False, msg) test case error with the given message + +> performTestCase :: Assertion -> IO (Maybe (Bool, String)) + + +Implementations +--------------- + +> hunitPrefix = "HUnit:" + +> hugsPrefix = "IO Error: User error\nReason: " +> nhc98Prefix = "I/O error (user-defined), call to function `userError':\n " +> -- GHC prepends no prefix to the user-supplied string. + +> assertFailure msg = ioError (userError (hunitPrefix ++ msg)) + +> performTestCase action = do r <- try action +> case r of Right () -> return Nothing +> Left e -> return (Just (decode e)) +> where +> decode e = let s0 = ioeGetErrorString e +> (_, s1) = dropPrefix hugsPrefix s0 +> (_, s2) = dropPrefix nhc98Prefix s1 +> in dropPrefix hunitPrefix s2 +> dropPrefix pref str = if pref `isPrefixOf` str +> then (True, drop (length pref) str) +> else (False, str) hunk ./test/HUnit-1.0/src/HUnitLang98.lhs 1 +HUnitLang98.lhs -- HUnit language support, generic Haskell 98 variant + +Note: The Haskell system you use needs to find this file when looking +for module `HUnitLang`. + +$Id: HUnitLang98.lhs,v 1.2 2002/02/14 19:27:56 heringto Exp $ + +> module HUnitLang +> ( +> Assertion, +> assertFailure, +> performTestCase +> ) +> where + + +When adapting this module for other Haskell language systems, change +the imports and the implementations but not the interfaces. + + + +Imports +------- + +> import List (isPrefixOf) +> import IO (ioeGetErrorString, try) + + + +Interfaces +---------- + +An assertion is an `IO` computation with trivial result. + +> type Assertion = IO () + +`assertFailure` signals an assertion failure with a given message. + +> assertFailure :: String -> Assertion + +`performTestCase` performs a single test case. The meaning of the +result is as follows: + Nothing test case success + Just (True, msg) test case failure with the given message + Just (False, msg) test case error with the given message + +> performTestCase :: Assertion -> IO (Maybe (Bool, String)) + + +Implementations +--------------- + +> hunitPrefix = "HUnit:" + +> hugsPrefix = "IO Error: User error\nReason: " +> nhc98Prefix = "I/O error (user-defined), call to function `userError':\n " +> -- GHC prepends no prefix to the user-supplied string. + +> assertFailure msg = ioError (userError (hunitPrefix ++ msg)) + +> performTestCase action = do r <- try action +> case r of Right () -> return Nothing +> Left e -> return (Just (decode e)) +> where +> decode e = let s0 = ioeGetErrorString e +> (_, s1) = dropPrefix hugsPrefix s0 +> (_, s2) = dropPrefix nhc98Prefix s1 +> in dropPrefix hunitPrefix s2 +> dropPrefix pref str = if pref `isPrefixOf` str +> then (True, drop (length pref) str) +> else (False, str) hunk ./test/HUnit-1.0/src/HUnitLangExc.lhs 1 +HUnitLangExc.lhs -- HUnit language support, using `Exception` type + +Note: The Haskell system you use needs to find this file when looking +for module `HUnitLang`. + +$Id: HUnitLangExc.lhs,v 1.1 2002/02/14 14:54:34 heringto Exp $ + +> module HUnitLang +> ( +> Assertion, +> assertFailure, +> performTestCase +> ) +> where + + +When adapting this module for other Haskell language systems, change +the imports and the implementations but not the interfaces. + + + +Imports +------- + +> import List (isPrefixOf) +> import qualified Exception (try) + + + +Interfaces +---------- + +An assertion is an `IO` computation with trivial result. + +> type Assertion = IO () + +`assertFailure` signals an assertion failure with a given message. + +> assertFailure :: String -> Assertion + +`performTestCase` performs a single test case. The meaning of the +result is as follows: + Nothing test case success + Just (True, msg) test case failure with the given message + Just (False, msg) test case error with the given message + +> performTestCase :: Assertion -> IO (Maybe (Bool, String)) + + +Implementations +--------------- + +> hunitPrefix = "HUnit:" + +> hugsPrefix = "IO Error: User error\nReason: " +> -- GHC prepends no prefix to the user-supplied string. + +> assertFailure msg = ioError (userError (hunitPrefix ++ msg)) + +> performTestCase action = do r <- Exception.try action +> case r of Right () -> return Nothing +> Left e -> return (Just (decode e)) +> where +> decode e = let s0 = show e +> (_, s1) = dropPrefix hugsPrefix s0 +> in dropPrefix hunitPrefix s1 +> dropPrefix pref str = if pref `isPrefixOf` str +> then (True, drop (length pref) str) +> else (False, str) hunk ./test/HUnit-1.0/src/HUnitTest98.lhs 1 +HUnitTest98.lhs -- test for HUnit, using Haskell language system "98" + +$Id: HUnitTest98.lhs,v 1.1 2002/02/19 17:12:14 heringto Exp $ + +> module Main (main) where + +> import HUnit +> import HUnitTestBase + + +> main = runTestTT (test [baseTests]) hunk ./test/HUnit-1.0/src/HUnitTestBase.lhs 1 +HUnitTestBase.lhs -- test support and basic tests (Haskell 98 compliant) + +$Id: HUnitTestBase.lhs,v 1.4 2002/02/14 19:34:54 heringto Exp $ + +> module HUnitTestBase where + +> import HUnit +> import Terminal (terminalAppearance) +> import IO (IOMode(..), openFile, hClose) + + +> data Report = Start State +> | Error String State +> | UnspecifiedError State +> | Failure String State +> deriving (Show, Read) + +> instance Eq Report where +> Start s1 == Start s2 = s1 == s2 +> Error m1 s1 == Error m2 s2 = m1 == m2 && s1 == s2 +> Error m1 s1 == UnspecifiedError s2 = s1 == s2 +> UnspecifiedError s1 == Error m2 s2 = s1 == s2 +> UnspecifiedError s1 == UnspecifiedError s2 = s1 == s2 +> Failure m1 s1 == Failure m2 s2 = m1 == m2 && s1 == s2 +> _ == _ = False + + +> expectReports :: [Report] -> Counts -> Test -> Test +> expectReports reports counts test = TestCase $ do +> (counts', reports') <- performTest (\ ss us -> return (Start ss : us)) +> (\m ss us -> return (Error m ss : us)) +> (\m ss us -> return (Failure m ss : us)) +> [] test +> assertEqual "for the reports from a test," reports (reverse reports') +> assertEqual "for the counts from a test," counts counts' + + +> simpleStart = Start (State [] (Counts 1 0 0 0)) + +> expectSuccess :: Test -> Test +> expectSuccess = expectReports [simpleStart] (Counts 1 1 0 0) + +> expectProblem :: (String -> State -> Report) -> Int -> String -> Test -> Test +> expectProblem kind err msg = +> expectReports [simpleStart, kind msg (State [] counts)] counts +> where counts = Counts 1 1 err (1-err) + +> expectError, expectFailure :: String -> Test -> Test +> expectError = expectProblem Error 1 +> expectFailure = expectProblem Failure 0 + +> expectUnspecifiedError :: Test -> Test +> expectUnspecifiedError = expectProblem (\ msg st -> UnspecifiedError st) 1 undefined + + +> data Expect = Succ | Err String | UErr | Fail String + +> expect :: Expect -> Test -> Test +> expect Succ test = expectSuccess test +> expect (Err m) test = expectError m test +> expect UErr test = expectUnspecifiedError test +> expect (Fail m) test = expectFailure m test + + + +> baseTests = test [ assertTests, +> testCaseCountTests, +> testCasePathsTests, +> reportTests, +> textTests, +> showPathTests, +> showCountsTests, +> assertableTests, +> predicableTests, +> compareTests, +> extendedTestTests ] + + +> ok = test (assert ()) +> bad m = test (assertFailure m) + + +> assertTests = test [ + +> "null" ~: expectSuccess ok, + +> "userError" ~: +> expectError "error" (TestCase (ioError (userError "error"))), + +> "IO error (file missing)" ~: +> expectUnspecifiedError +> (test (do openFile "3g9djs" ReadMode; return ())), + + "error" ~: + expectError "error" (TestCase (error "error")), + + "tail []" ~: + expectUnspecifiedError (TestCase (tail [] `seq` return ())), + + -- GHC doesn't currently catch arithmetic exceptions. + "div by 0" ~: + expectUnspecifiedError (TestCase ((3 `div` 0) `seq` return ())), + +> "assertFailure" ~: +> let msg = "simple assertFailure" +> in expectFailure msg (test (assertFailure msg)), + +> "assertString null" ~: expectSuccess (TestCase (assertString "")), + +> "assertString nonnull" ~: +> let msg = "assertString nonnull" +> in expectFailure msg (TestCase (assertString msg)), + +> let exp v non = +> show v ++ " with " ++ non ++ "null message" ~: +> expect (if v then Succ else Fail non) $ test $ assertBool non v +> in "assertBool" ~: [ exp v non | v <- [True, False], non <- ["non", ""] ], + +> let msg = "assertBool True" +> in msg ~: expectSuccess (test (assertBool msg True)), + +> let msg = "assertBool False" +> in msg ~: expectFailure msg (test (assertBool msg False)), + +> "assertEqual equal" ~: +> expectSuccess (test (assertEqual "" 3 3)), + +> "assertEqual unequal no msg" ~: +> expectFailure "expected: 3\n but got: 4" +> (test (assertEqual "" 3 4)), + +> "assertEqual unequal with msg" ~: +> expectFailure "for x,\nexpected: 3\n but got: 4" +> (test (assertEqual "for x," 3 4)) + +> ] + + +> emptyTest0 = TestList [] +> emptyTest1 = TestLabel "empty" emptyTest0 +> emptyTest2 = TestList [ emptyTest0, emptyTest1, emptyTest0 ] +> emptyTests = [emptyTest0, emptyTest1, emptyTest2] + +> testCountEmpty test = TestCase (assertEqual "" 0 (testCaseCount test)) + +> suite0 = (0, ok) +> suite1 = (1, TestList []) +> suite2 = (2, TestLabel "3" ok) +> suite3 = (3, suite) + +> suite = +> TestLabel "0" +> (TestList [ TestLabel "1" (bad "1"), +> TestLabel "2" (TestList [ TestLabel "2.1" ok, +> ok, +> TestLabel "2.3" (bad "2") ]), +> TestLabel "3" (TestLabel "4" (TestLabel "5" (bad "3"))), +> TestList [ TestList [ TestLabel "6" (bad "4") ] ] ]) + +> suiteCount = (6 :: Int) + +> suitePaths = [ +> [Label "0", ListItem 0, Label "1"], +> [Label "0", ListItem 1, Label "2", ListItem 0, Label "2.1"], +> [Label "0", ListItem 1, Label "2", ListItem 1], +> [Label "0", ListItem 1, Label "2", ListItem 2, Label "2.3"], +> [Label "0", ListItem 2, Label "3", Label "4", Label "5"], +> [Label "0", ListItem 3, ListItem 0, ListItem 0, Label "6"]] + +> suiteReports = [ Start (State (p 0) (Counts 6 0 0 0)), +> Failure "1" (State (p 0) (Counts 6 1 0 1)), +> Start (State (p 1) (Counts 6 1 0 1)), +> Start (State (p 2) (Counts 6 2 0 1)), +> Start (State (p 3) (Counts 6 3 0 1)), +> Failure "2" (State (p 3) (Counts 6 4 0 2)), +> Start (State (p 4) (Counts 6 4 0 2)), +> Failure "3" (State (p 4) (Counts 6 5 0 3)), +> Start (State (p 5) (Counts 6 5 0 3)), +> Failure "4" (State (p 5) (Counts 6 6 0 4))] +> where p n = reverse (suitePaths !! n) + +> suiteCounts = Counts 6 6 0 4 + +> suiteOutput = "### Failure in: 0:0:1\n\ +> \1\n\ +> \### Failure in: 0:1:2:2:2.3\n\ +> \2\n\ +> \### Failure in: 0:2:3:4:5\n\ +> \3\n\ +> \### Failure in: 0:3:0:0:6\n\ +> \4\n\ +> \Cases: 6 Tried: 6 Errors: 0 Failures: 4\n" + + +> suites = [suite0, suite1, suite2, suite3] + + +> testCount (num, test) count = +> "testCaseCount suite" ++ show num ~: +> TestCase $ assertEqual "for test count," count (testCaseCount test) + +> testCaseCountTests = TestList [ + +> "testCaseCount empty" ~: test (map testCountEmpty emptyTests), + +> testCount suite0 1, +> testCount suite1 0, +> testCount suite2 1, +> testCount suite3 suiteCount + +> ] + + +> testPaths (num, test) paths = +> "testCasePaths suite" ++ show num ~: +> TestCase $ assertEqual "for test paths," +> (map reverse paths) (testCasePaths test) + +> testPathsEmpty test = TestCase $ assertEqual "" [] (testCasePaths test) + +> testCasePathsTests = TestList [ + +> "testCasePaths empty" ~: test (map testPathsEmpty emptyTests), + +> testPaths suite0 [[]], +> testPaths suite1 [], +> testPaths suite2 [[Label "3"]], +> testPaths suite3 suitePaths + +> ] + + +> reportTests = "reports" ~: expectReports suiteReports suiteCounts suite + + +> expectText counts text test = TestCase $ do +> (counts', text') <- runTestText putTextToShowS test +> assertEqual "for the final counts," counts counts' +> assertEqual "for the failure text output," text (text' "") + + +> textTests = test [ + +> "lone error" ~: +> expectText (Counts 1 1 1 0) +> "### Error:\nxyz\nCases: 1 Tried: 1 Errors: 1 Failures: 0\n" +> (test (do ioError (userError "xyz"); return ())), + +> "lone failure" ~: +> expectText (Counts 1 1 0 1) +> "### Failure:\nxyz\nCases: 1 Tried: 1 Errors: 0 Failures: 1\n" +> (test (assert "xyz")), + +> "putTextToShowS" ~: +> expectText suiteCounts suiteOutput suite, + +> "putTextToHandle (file)" ~: +> let filename = "HUnitTest.tmp" +> trim = unlines . map (reverse . dropWhile (== ' ') . reverse) . lines +> in map test +> [ "show progress = " ++ show flag ~: do +> handle <- openFile filename WriteMode +> (counts, _) <- runTestText (putTextToHandle handle flag) suite +> hClose handle +> assertEqual "for the final counts," suiteCounts counts +> text <- readFile filename +> let text' = if flag then trim (terminalAppearance text) else text +> assertEqual "for the failure text output," suiteOutput text' +> | flag <- [False, True] ] + +> ] + + +> showPathTests = "showPath" ~: [ + +> "empty" ~: showPath [] ~?= "", +> ":" ~: showPath [Label ":", Label "::"] ~?= "\"::\":\":\"", +> "\"\\\n" ~: showPath [Label "\"\\n\n\""] ~?= "\"\\\"\\\\n\\n\\\"\"", +> "misc" ~: showPath [Label "b", ListItem 2, ListItem 3, Label "foo"] ~?= +> "foo:3:2:b" + +> ] + + +> showCountsTests = "showCounts" ~: showCounts (Counts 4 3 2 1) ~?= +> "Cases: 4 Tried: 3 Errors: 2 Failures: 1" + + + +> lift :: a -> IO a +> lift a = return a + + +> assertableTests = +> let assertables x = [ +> ( "", assert x , test (lift x)) , +> ( "IO ", assert (lift x) , test (lift (lift x))) , +> ( "IO IO ", assert (lift (lift x)), test (lift (lift (lift x))))] +> assertabled l e x = +> test [ test [ "assert" ~: pre ++ l ~: expect e $ test $ a, +> "test" ~: pre ++ "IO " ++ l ~: expect e $ t ] +> | (pre, a, t) <- assertables x ] +> in "assertable" ~: [ +> assertabled "()" Succ (), +> assertabled "True" Succ True, +> assertabled "False" (Fail "") False, +> assertabled "\"\"" Succ "", +> assertabled "\"x\"" (Fail "x") "x" +> ] + + +> predicableTests = +> let predicables x m = [ +> ( "", assertionPredicate x , x @? m, x ~? m ), +> ( "IO ", assertionPredicate (l x) , l x @? m, l x ~? m ), +> ( "IO IO ", assertionPredicate (l(l x)), l(l x) @? m, l(l x) ~? m )] +> l x = lift x +> predicabled l e m x = +> test [ test [ "pred" ~: pre ++ l ~: m ~: expect e $ test $ tst p, +> "(@?)" ~: pre ++ l ~: m ~: expect e $ test $ a, +> "(~?)" ~: pre ++ l ~: m ~: expect e $ t ] +> | (pre, p, a, t) <- predicables x m ] +> where tst p = p >>= assertBool m +> in "predicable" ~: [ +> predicabled "True" Succ "error" True, +> predicabled "False" (Fail "error") "error" False, +> predicabled "True" Succ "" True, +> predicabled "False" (Fail "" ) "" False +> ] + + +> compareTests = test [ + +> let succ = const Succ +> compare f exp act = test [ "(@=?)" ~: expect e $ test (exp @=? act), +> "(@?=)" ~: expect e $ test (act @?= exp), +> "(~=?)" ~: expect e $ exp ~=? act, +> "(~?=)" ~: expect e $ act ~?= exp ] +> where e = f $ "expected: " ++ show exp ++ "\n but got: " ++ show act +> in test [ +> compare succ 1 1, +> compare Fail 1 2, +> compare succ (1,'b',3.0) (1,'b',3.0), +> compare Fail (1,'b',3.0) (1,'b',3.1) +> ] + +> ] + + +> expectList1 :: Int -> Test -> Test +> expectList1 c = +> expectReports +> [ Start (State [ListItem n] (Counts c n 0 0)) | n <- [0..c-1] ] +> (Counts c c 0 0) + +> expectList2 :: [Int] -> Test -> Test +> expectList2 cs test = +> expectReports +> [ Start (State [ListItem j, ListItem i] (Counts c n 0 0)) +> | ((i,j),n) <- zip coords [0..] ] +> (Counts c c 0 0) +> test +> where coords = [ (i,j) | i <- [0 .. length cs - 1], j <- [0 .. cs!!i - 1] ] +> c = testCaseCount test + + +> extendedTestTests = test [ + +> "test idempotent" ~: expect Succ $ test $ test $ test $ ok, + +> "test list 1" ~: expectList1 3 $ test [assert (), assert "", assert True], + +> "test list 2" ~: expectList2 [0, 1, 2] $ test [[], [ok], [ok, ok]] + +> ] hunk ./test/HUnit-1.0/src/HUnitTestExc.lhs 1 +HUnitTestExc.lhs -- test for HUnit, using Haskell language system "Exc" + +$Id: HUnitTestExc.lhs,v 1.1 2002/02/19 17:12:47 heringto Exp $ + +> module Main (main) where + +> import HUnit +> import HUnitTestBase +> import qualified Exception (assert) + + + assertionMessage = "HUnitTestExc.lhs:13: Assertion failed\n" + assertion = Exception.assert False (return ()) + + + +> main = runTestTT (test [baseTests, excTests]) + +> excTests = test [ + + -- Hugs and GHC don't currently catch arithmetic exceptions. + "div by 0" ~: + expectUnspecifiedError (TestCase ((3 `div` 0) `seq` return ())), + + -- GHC doesn't currently catch array-related exceptions. + "array ref out of bounds" ~: + expectUnspecifiedError (TestCase (... `seq` return ())), + +> "error" ~: +> expectError "error" (TestCase (error "error")), + +> "tail []" ~: +> expectUnspecifiedError (TestCase (tail [] `seq` return ())) + + -- Hugs doesn't provide `assert`. + "assert" ~: + expectError assertionMessage (TestCase assertion) + +> ] hunk ./test/HUnit-1.0/src/HUnitText.lhs 1 +HUnitText.lhs -- text-based test controller + +$Id: HUnitText.lhs,v 1.9 2002/02/21 16:50:27 heringto Exp $ + +> module HUnitText +> ( +> PutText(..), +> putTextToHandle, putTextToShowS, +> runTestText, +> showPath, showCounts, +> runTestTT +> ) +> where + +> import HUnitBase + +> import Monad (when) +> import IO (Handle, stderr, hPutStr, hPutStrLn) + + +As the general text-based test controller (`runTestText`) executes a +test, it reports each test case start, error, and failure by +constructing a string and passing it to the function embodied in a +`PutText`. A report string is known as a "line", although it includes +no line terminator; the function in a `PutText` is responsible for +terminating lines appropriately. Besides the line, the function +receives a flag indicating the intended "persistence" of the line: +`True` indicates that the line should be part of the final overall +report; `False` indicates that the line merely indicates progress of +the test execution. Each progress line shows the current values of +the cumulative test execution counts; a final, persistent line shows +the final count values. + +The `PutText` function is also passed, and returns, an arbitrary state +value (called `st` here). The initial state value is given in the +`PutText`; the final value is returned by `runTestText`. + +> data PutText st = PutText (String -> Bool -> st -> IO st) st + + +Two reporting schemes are defined here. `putTextToHandle` writes +report lines to a given handle. `putTextToShowS` accumulates +persistent lines for return as a whole by `runTestText`. + + +`putTextToHandle` writes persistent lines to the given handle, +following each by a newline character. In addition, if the given flag +is `True`, it writes progress lines to the handle as well. A progress +line is written with no line termination, so that it can be +overwritten by the next report line. As overwriting involves writing +carriage return and blank characters, its proper effect is usually +only obtained on terminal devices. + +> putTextToHandle :: Handle -> Bool -> PutText Int +> putTextToHandle handle showProgress = PutText put initCnt +> where +> initCnt = if showProgress then 0 else -1 +> put line pers (-1) = do when pers (hPutStrLn handle line); return (-1) +> put line True cnt = do hPutStrLn handle (erase cnt ++ line); return 0 +> put line False cnt = do hPutStr handle ('\r' : line); return (length line) +> -- The "erasing" strategy with a single '\r' relies on the fact that the +> -- lengths of successive summary lines are monotonically nondecreasing. +> erase cnt = if cnt == 0 then "" else "\r" ++ replicate cnt ' ' ++ "\r" + + +`putTextToShowS` accumulates persistent lines (dropping progess lines) +for return by `runTestText`. The accumulated lines are represented by +a `ShowS` (`String -> String`) function whose first argument is the +string to be appended to the accumulated report lines. + +> putTextToShowS :: PutText ShowS +> putTextToShowS = PutText put id +> where put line pers f = return (if pers then acc f line else f) +> acc f line tail = f (line ++ '\n' : tail) + + +`runTestText` executes a test, processing each report line according +to the given reporting scheme. The reporting scheme's state is +threaded through calls to the reporting scheme's function and finally +returned, along with final count values. + +> runTestText :: PutText st -> Test -> IO (Counts, st) +> runTestText (PutText put us) t = do +> (counts, us') <- performTest reportStart reportError reportFailure us t +> us'' <- put (showCounts counts) True us' +> return (counts, us'') +> where +> reportStart ss us = put (showCounts (counts ss)) False us +> reportError = reportProblem "Error:" "Error in: " +> reportFailure = reportProblem "Failure:" "Failure in: " +> reportProblem p0 p1 msg ss us = put line True us +> where line = "### " ++ kind ++ path' ++ '\n' : msg +> kind = if null path' then p0 else p1 +> path' = showPath (path ss) + + +`showCounts` converts test execution counts to a string. + +> showCounts :: Counts -> String +> showCounts Counts{ cases = cases, tried = tried, +> errors = errors, failures = failures } = +> "Cases: " ++ show cases ++ " Tried: " ++ show tried ++ +> " Errors: " ++ show errors ++ " Failures: " ++ show failures + + +`showPath` converts a test case path to a string, separating adjacent +elements by ':'. An element of the path is quoted (as with `show`) +when there is potential ambiguity. + +> showPath :: Path -> String +> showPath [] = "" +> showPath nodes = foldl1 f (map showNode nodes) +> where f b a = a ++ ":" ++ b +> showNode (ListItem n) = show n +> showNode (Label label) = safe label (show label) +> safe s ss = if ':' `elem` s || "\"" ++ s ++ "\"" /= ss then ss else s + + +`runTestTT` provides the "standard" text-based test controller. +Reporting is made to standard error, and progress reports are +included. For possible programmatic use, the final counts are +returned. The "TT" in the name suggests "Text-based reporting to the +Terminal". + +> runTestTT :: Test -> IO Counts +> runTestTT t = do (counts, 0) <- runTestText (putTextToHandle stderr True) t +> return counts hunk ./test/HUnit-1.0/src/Terminal.lhs 1 +> module Terminal +> ( +> terminalAppearance +> ) +> where + +> import Char (isPrint) + + +Simplifies the input string by interpreting '\r' and '\b' characters +specially so that the result string has the same final (or "terminal", +pun intended) appearance as would the input string when written to a +terminal that overwrites character positions following carriage +returns and backspaces. + +The helper function `ta` takes an accumlating `ShowS`-style function +that holds "committed" lines of text, a (reversed) list of characters +on the current line *before* the cursor, a (normal) list of characters +on the current line *after* the cursor, and the remaining input. + +> terminalAppearance :: String -> String +> terminalAppearance str = ta id "" "" str +> where +> ta f bs as ('\n':cs) = ta (\t -> f (reverse bs ++ as ++ '\n' : t)) "" "" cs +> ta f bs as ('\r':cs) = ta f "" (reverse bs ++ as) cs +> ta f (b:bs) as ('\b':cs) = ta f bs (b:as) cs +> ta f "" as ('\b':cs) = error "'\\b' at beginning of line" +> ta f bs as (c:cs) | not (isPrint c) = error "invalid nonprinting character" +> | null as = ta f (c:bs) "" cs +> | otherwise = ta f (c:bs) (tail as) cs +> ta f bs as "" = f (reverse bs ++ as) hunk ./test/HUnit-1.0/src/TerminalTest.lhs 1 +TerminalTest.lhs + +> import Terminal +> import HUnit + +> main = runTestTT tests + +> try lab inp exp = lab ~: terminalAppearance inp ~?= exp + +> tests = test [ +> try "empty" "" "", +> try "end in \\n" "abc\ndef\n" "abc\ndef\n", +> try "not end in \\n" "abc\ndef" "abc\ndef", +> try "return 1" "abc\ndefgh\rxyz" "abc\nxyzgh", +> try "return 2" "\nabcdefgh\rijklm\rxy\n" "\nxyklmfgh\n", +> try "return 3" "\r\rabc\r\rdef\r\r\r\nghi\r\r\n" "def\nghi\n", +> try "back 1" "abc\bdef\b\bgh\b" "abdgh", +> try "back 2" "abc\b\b\bdef\b\bxy\b\b\n" "dxy\n" +> -- \b at beginning of line +> -- nonprinting char +> ] hunk ./Distribution/ModuleTest.hs 71 -import HUnit(runTestTT, Test(..), Counts, assertBool, assertEqual, Assertion) +import HUnit(runTestTT, Test(..), Counts(..), assertBool, + assertEqual, Assertion, showCounts) hunk ./Distribution/ModuleTest.hs 128 - system "./setup configure --ghc --prefix=,tmp" - >>= assertEqual "configure returned error code" ExitSuccess - system "./setup build" - >>= assertEqual "build returned error code" ExitSuccess + assertCmd "./setup configure --ghc --prefix=,tmp" + "configure returned error code" + assertCmd "./setup build" + "build returned error code" hunk ./Distribution/ModuleTest.hs 133 - system "./setup sdist" - >>= assertEqual "setup sdist returned error code" ExitSuccess + assertCmd "./setup sdist" + "setup sdist returned error code" hunk ./Distribution/ModuleTest.hs 156 - do system "./setup configure --hugs --prefix=,tmp" - >>= assertEqual "HUGS configure returned error code" ExitSuccess - system "./setup build" - >>= assertEqual "HUGS build returned error code" ExitSuccess + do assertCmd "./setup configure --hugs --prefix=,tmp" + "HUGS configure returned error code" + assertCmd "./setup build" + "HUGS build returned error code" hunk ./Distribution/ModuleTest.hs 169 - runTestTT' $ TestList $ + count1 <- runTestTT' $ TestList $ hunk ./Distribution/ModuleTest.hs 177 - runTestTT' $ TestList tests + count2 <- runTestTT' $ TestList tests + putStrLn "-------------" + putStrLn "Test Summary:" + putStrLn $ showCounts $ combineCounts count1 count2 hunk ./Distribution/ModuleTest.hs 183 +combineCounts :: Counts -> Counts -> Counts +combineCounts (Counts a b c d) (Counts a' b' c' d') + = Counts (a + a') (b + b') (c + c') (d + d') + hunk ./Distribution/Simple/Build.hs 53 -import Distribution.Simple.Configure (LocalBuildInfo, compiler) +import Distribution.Simple.Configure (LocalBuildInfo(..), compiler) hunk ./Distribution/Simple/Build.hs 110 -constructGHCCmdLine pref pkg_descr _ = +constructGHCCmdLine pref pkg_descr lbi = hunk ./Distribution/Simple/Build.hs 118 + ++ [ "-package " ++ showPackageId pkg | pkg <- packageDeps lbi ] addfile ./Distribution/Make.hs hunk ./Distribution/Make.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Make +-- Copyright : Martin Sjögren 2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC +-- +-- Explanation: +-- WHERE DOES THIS MODULE FIT IN AT A HIGH-LEVEL + +{- Copyright (c) 2004, Martin Sjögren +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Make ( + module Distribution.Package, + License(..), Version(..), + defaultMain, + ) where + +-- local +import Distribution.Package --must not specify imports, since we're exporting moule. +import Distribution.Setup --(parseArgs, Action(..), optionHelpString) + +import Distribution.Simple.Utils (maybeExit) + +import Distribution.Misc (License(..)) +import Distribution.Version (Version(..)) + +-- Base +import System(getArgs) + +import Control.Monad (when, unless) +import Data.Maybe (isNothing, maybe) +import Data.List ( intersperse ) +import System.IO (hPutStr, stderr) +import System.Cmd +import System.Exit + +{- +Basic assumptions +----------------- +Obviously we assume that there is a configure script, and that after the +ConfigCmd has been run, there is a Makefile. + +ConfigCmd: We assume the configure script accepts a --with-hc flag +BuildCmd: We assume the default Makefile target will build everything +InstallCmd: We assume there is an install target and a variable $(prefix) + that can be overridden + (./Setup --install-prefix=foo -> make prefix=foo install) + Note that we assume that this does *not* register the package! +SDistCmd: We assume there is an dist target +RegisterCmd: We assume there is a register target and a variable $(user) +UnregisterCmd: We assume there is an unregister target +-} + + +configureArgs :: ConfigFlags -> String +configureArgs (_, Just hc_path, maybe_prefix) + = "--with-hc=" ++ hc_path ++ maybe "" (" --prefix="++) maybe_prefix +configureArgs (Just hc, Nothing, maybe_prefix) + = "--with-hc=" ++ showHC hc ++ maybe "" (" --prefix="++) maybe_prefix + where showHC GHC = "ghc" + showHC NHC = "nhc98" + showHC Hugs = "hugs" +configureArgs (Nothing, Nothing, maybe_prefix) + = maybe "" ("--prefix="++) maybe_prefix + +exec :: String -> IO a +exec cmd = system cmd >>= exitWith + +defaultMain :: PackageDescription -> IO () +defaultMain pkg_descr + = do args <- getArgs + case parseArgs args of + Right (HelpCmd, _) -> hPutStr stderr (optionHelpString helpprefix) + + Right (ConfigCmd flags, extra_flags) -> do + no_extra_flags extra_flags + exec $ "./configure " ++ configureArgs flags + + Right (BuildCmd, extra_flags) -> do + no_extra_flags extra_flags + exec "make" + + Right (InstallCmd install_prefixM userInst, extra_flags) -> do + no_extra_flags extra_flags + maybeExit $ system $ "make install" ++ + maybe "" (" prefix="++) install_prefixM + when (isNothing install_prefixM) (exec "make register") + + Right (SDistCmd, extra_flags) -> do + no_extra_flags extra_flags + exec "make dist" + + Right (RegisterCmd userFlag, extra_flags) -> do + no_extra_flags extra_flags + exec "make register" + + Right (UnregisterCmd, extra_flags) -> do + no_extra_flags extra_flags + exec "make unregister" + + Left err -> do + hPutStr stderr (unlines err) + hPutStr stderr (optionHelpString helpprefix) + return () + +no_extra_flags :: [String] -> IO () +no_extra_flags [] = return () +no_extra_flags extra_flags = + do hPutStr stderr $ "Unrecognised flags: " ++ concat (intersperse "," (extra_flags)) + exitWith (ExitFailure 1) + +helpprefix :: String +helpprefix = "Syntax: ./Setup.hs command [flags]\n" hunk ./Distribution/TODO 2 -** use HUnit as a packaging test. Doesn't work currently because: -*** multiple mains -*** multiple HUnitLang modules -*** maybe this can be solved w/ not using --make? - hunk ./Distribution/TODO 18 +** BUG: sdist forgets to include the Setup.lhs file :) + hunk ./Distribution/Make.hs 62 -import Control.Monad (when, unless) +import Control.Monad (when) hunk ./Distribution/ModuleTest.hs 52 +import qualified Distribution.Make () hunk ./Distribution/Simple/Utils.hs 55 + maybeExit, hunk ./Makefile 4 - ghc -Wall --make -i../:/usr/local/src/HUnit-1.0 Distribution/ModuleTest -o moduleTest + ghc -Wall --make -i../:test/HUnit-1.0/src Distribution/ModuleTest -o moduleTest + hunk ./Makefile 12 - rm -f library-infrastructure--darcs.tar.gz + -rm -f library-infrastructure--darcs.tar.gz hunk ./Distribution/Simple/Install.hs 105 - pathJoin [prefix lbi, pkg_name + pathJoin [prefix lbi, pkg_name] hunk ./Distribution/Simple/SrcDist.hs 64 -sdist :: FilePath -- ^build prefix +sdist :: FilePath -- ^build prefix (temp dir) hunk ./Distribution/Simple/SrcDist.hs 67 -sdist srcPref targetPref pkg_descr _ = do +sdist tmpDir targetPref + pkg_descr@PackageDescription{allModules=mods, + mainModules=mainMods, + hsSourceDir=srcDir + } _ + = do hunk ./Distribution/Simple/SrcDist.hs 74 - ex <- doesDirectoryExist srcPref - when ex (die $ "Source distribution already in place. please move: " ++ srcPref) - moveSources "" (pathJoin [srcPref, nameVersion pkg_descr]) - (allModules pkg_descr) (mainModules pkg_descr) ["lhs", "hs"] - system $ "tar --directory=" ++ srcPref ++ " -zcf " ++ + ex <- doesDirectoryExist tmpDir + let tmpLoc1 = pathJoin [tmpDir, nameVersion pkg_descr, srcDir] + let tmpLoc2 = pathJoin [tmpDir, nameVersion pkg_descr] + when ex (die $ "Source distribution already in place. please move: " ++ tmpDir) + moveSources srcDir tmpLoc1 mods mainMods ["lhs", "hs"] + moveSources "" tmpLoc2 ["Setup"] [] ["lhs", "hs"] + system $ "tar --directory=" ++ tmpDir ++ " -zcf " ++ hunk ./Distribution/Simple/SrcDist.hs 83 - system $ "rm -rf " ++ srcPref + system $ "rm -rf " ++ tmpDir addfile ./Setup.lhs addfile ./README hunk ./Makefile 1 -all: main +GHCFLAGS= -itest/HUnit-1.0/src --make -Wall +PREF=/usr/local hunk ./Makefile 4 -main: - ghc -Wall --make -i../:test/HUnit-1.0/src Distribution/ModuleTest -o moduleTest +all: moduleTest hunk ./Makefile 6 -tests: - cd test/A && make - cd test/HUnit-1.0 && make +# build the library itself hunk ./Makefile 8 +setup: + ghc $(GHCFLAGS) Setup -o setup + +build: hunitInstall config + ./setup build + +config: setup + ./setup configure --prefix=$(PREF) + +install: build + ./setup install + hunk ./Makefile 23 + -rm -rf setup *.{o,hi} moduleTest dist installed-pkg-config hunk ./Makefile 25 +remove: + ghc-pkg -r Cabal-0.1 + ghc-pkg -r HUnit-1.0 + rm -r $(PREF)/lib/{Cabal-0.1,HUnit-1.0} + +# dependencies: + +hunit: + cd test/HUnit-1.0 && make && ./setup configure --prefix=$(PREF) && ./setup build + +hunitInstall: hunit + cd test/HUnit-1.0 && ./setup install + +# testing... + +moduleTest: + ghc $(GHCFLAGS) Distribution/ModuleTest -o moduleTest + +tests: moduleTest + cd test/A && make + hunk ./Makefile 49 +# distribution... + hunk ./README 1 +Cabal home page: +http://www.haskell.org/cabal + + +Quirky things about the build system + +* The Makefile wraps the standard Cabal setup script; the Makefile is + a convinience for bootstrapping the system. "sudo make install" + should handle HUnit, generate the setup script, configure, build, + install, and register it in a standard location. + +* HUnit is included both as a test case for Cabal, and because Cabal + uses HUnit for testing. Don't panic. + +* HUnit also uses the standard setup script interface, and has to get + installed and registered before the build setup of Cabal. The + install target of the Makefile does everything in the right order. hunk ./Setup.lhs 1 +#!/usr/bin/runhugs + +> module Main where + +> import Distribution.Simple + +> pkg_descr = emptyPackageDescription { +> package = PackageIdentifier "Cabal" (Version [0,1] []), +> allModules = ["Distribution.Package", +> "Distribution.Version", +> "Distribution.Misc", +> "Distribution.Setup", +> "Distribution.InstalledPackageInfo", +> "Distribution.Make", +> +> "Distribution.Simple", +> "Distribution/Simple.Build", +> "Distribution.Simple.Install", +> "Distribution.Simple.SrcDist", +> "Distribution.Simple.Configure", +> "Distribution.Simple.Utils", +> "Distribution.Simple.Register", +> "Distribution.Simple.GHCPackageConfig", +> "Distribution.GetOpt"], +> +> buildDepends = [Dependency "haskell-src" AnyVersion, +> Dependency "HUnit-1.0" AnyVersion +> ] +> } + +> main :: IO () +> main = do defaultMain pkg_descr hunk ./Makefile 30 -# dependencies: +# dependencies (included): hunk ./README 5 -Quirky things about the build system +-= Quirky things about the build system =- hunk ./README 16 - installed and registered before the build setup of Cabal. The - install target of the Makefile does everything in the right order. + installed and registered before you can build the setup for Cabal. + The install target of the Makefile does everything in the right + order. hunk ./README 20 +-= Your Help =- + +Portability is one of the most important things about this project. +We don't expect the early releases to work on every system, but it +should work on YOUR system! If it doesn't please help us figure out +why, and write a patch and test case to fix the problem, if you can! +The codebase is a very manageable size. + +-= Code =- + +You can get the code from the web page; the version control system we +use is very open and welcoming to new developers. + +-= Credits (in alphabetical order) =- + +Cabal Coders: +- Bjorn Bringert +- Isaac Jones +- Simon Marlow +- Martin Sjögren + +Cabal proposal: +- Isaac Jones +- Simon Marlow +- Ross Patterson +- Simon Peyton Jones +- Malcolm Wallace + hunk ./Distribution/Simple/Build.hs 63 +import System.Environment (getEnv) hunk ./Distribution/Simple/Build.hs 98 - let args = constructGHCCmdLine pref pkg_descr lbi + home <- getEnv "HOME" + let args = ["-package-conf", home ++ "/.ghc-packages"] + ++ constructGHCCmdLine pref pkg_descr lbi hunk ./Makefile 3 +USER_FLAG = +GHCPKGFLAGS = hunk ./Makefile 6 +ifdef USER +USER_FLAG = --user +GHCPKGFLAGS = -f ~/.ghc-packages +GHCFLAGS += -package-conf ~/.ghc-packages +endif + hunk ./Makefile 26 - ./setup install + ./setup install $(USER_FLAG) hunk ./Makefile 34 - ghc-pkg -r Cabal-0.1 - ghc-pkg -r HUnit-1.0 - rm -r $(PREF)/lib/{Cabal-0.1,HUnit-1.0} + -ghc-pkg $(GHCPKGFLAGS) -r Cabal-0.1 + -ghc-pkg $(GHCPKGFLAGS) -r HUnit-1.0 + -rm -r $(PREF)/lib/{Cabal-0.1,HUnit-1.0} hunk ./Makefile 40 -hunit: +hunit: hunit-stamp +hunit-stamp: hunk ./Makefile 43 + touch $@ hunk ./Makefile 45 -hunitInstall: hunit - cd test/HUnit-1.0 && ./setup install +hunitInstall: hunit-stamp hunitInstall-stamp +hunitInstall-stamp: + cd test/HUnit-1.0 && ./setup install $(USER_FLAG) + touch $@ hunk ./test/HUnit-1.0/Makefile 2 - ghc -Wall --make -i../../:/usr/local/src/HUnit-1.0 Setup.lhs -o setup + ghc -Wall --make -i../../:src Setup.lhs -o setup hunk ./Makefile 6 -ifdef USER +ifdef user addfile ./test/HUnit-1.0/Setup.description addfile ./test/A/Setup.description addfile ./Setup.description rmfile ./test/A/Setup.description hunk ./Distribution/Misc.hs 77 - deriving Show + deriving (Show, Read) hunk ./Distribution/Package.hs 50 + parsePackageDesc, hunk ./Distribution/Package.hs 60 +import System.IO(openFile, IOMode(..), hGetContents) + hunk ./Distribution/Package.hs 103 - deriving (Show) + deriving (Show, Read) hunk ./Distribution/Package.hs 124 + +-- |Parse the given package file. FIX: don't use read / show. +parsePackageDesc :: FilePath -> IO PackageDescription +parsePackageDesc p + = openFile p ReadMode >>= hGetContents >>= return . read + hunk ./Distribution/Simple.hs 50 - defaultMain, + defaultMain, defaultMainNoRead, hunk ./Distribution/Simple.hs 85 +defaultPackageDesc :: FilePath +defaultPackageDesc = "Setup.description" + hunk ./Distribution/Simple.hs 96 -defaultMain :: PackageDescription -> IO () -defaultMain pkg_descr +defaultMain :: IO () +defaultMain = parsePackageDesc defaultPackageDesc >>= defaultMainNoRead + +defaultMainNoRead :: PackageDescription -> IO () +defaultMainNoRead pkg_descr hunk ./Distribution/TODO 2 +** make a library from the FileUtils, look at Python's os.path. +** add en.wikipedia.org/wiki/Cabal to web page +** clean up ~/.ghc-packages location... hunk ./Makefile 58 -check: tests main +check: tests hunk ./Makefile 64 - darcs push --all ijones@monk.syntaxpolice.org:/home/ijones/public_html/darcs_repos/library-infrastructure - darcs push --all ijones@cvs.haskell.org:/home/ijones/library-infrastructure + darcs push --all ijones@cvs.haskell.org:/home/darcs/cabal hunk ./Setup.description 1 +PackageDescription {package = PackageIdentifier {pkgName = "Cabal", + pkgVersion = Version {versionBranch = [0,1], + versionTags = []}}, + license = AllRightsReserved, + copyright = "", + maintainer = "", + stability = "", + buildDepends = [Dependency "haskell-src" AnyVersion, + Dependency "HUnit-1.0" AnyVersion], + + allModules = ["Distribution.Package","Distribution.Version", + "Distribution.Misc","Distribution.Setup", + "Distribution.InstalledPackageInfo", + "Distribution.Make","Distribution.Simple", + "Distribution.Simple.Build", + "Distribution.Simple.Install","Distribution.Simple.SrcDist", + "Distribution.Simple.Configure","Distribution.Simple.Utils", + "Distribution.Simple.Register", + "Distribution.Simple.GHCPackageConfig", + "Distribution.GetOpt"], + + mainModules = [], + cSources = [], + hsSourceDir = ".", + exposedModules = [], + extensions = [], + extraLibs = [], + includeDirs = [], + includes = [], + options = [] +} hunk ./Setup.lhs 17 -> "Distribution/Simple.Build", +> "Distribution.Simple.Build", hunk ./Setup.lhs 32 -> main = do defaultMain pkg_descr +> main = defaultMain hunk ./test/A/Setup.hs 11 -main = defaultMain pkg_descr +main = defaultMainNoRead pkg_descr hunk ./test/HUnit-1.0/Setup.description 1 +PackageDescription {package = PackageIdentifier + {pkgName = "HUnit", + pkgVersion = Version {versionBranch = [1,0], + versionTags = []}}, + license = AllRightsReserved, + copyright = "", + maintainer = "", + stability = "", + buildDepends = [Dependency "haskell-src" AnyVersion], + allModules = ["HUnitText","HUnit","HUnitLang","HUnitTestBase", + "Terminal","HUnitBase"], + mainModules = [], + cSources = [], + hsSourceDir = "src", + exposedModules = ["HUnit"], + extensions = [], + extraLibs = [], + includeDirs = [], + includes = [], + options = [] +} hunk ./test/HUnit-1.0/Setup.lhs 7 -> pkg_descr = emptyPackageDescription { -> package = PackageIdentifier "HUnit" (Version [1,0] []), -> allModules = ["HUnitText", "HUnit", "HUnitLang", -> "HUnitTestBase", "Terminal", "HUnitBase"], -> exposedModules = ["HUnit"], -> buildDepends = [Dependency "haskell-src" AnyVersion], -> hsSourceDir = "src" -> } - hunk ./test/HUnit-1.0/Setup.lhs 8 -> main = do defaultMain pkg_descr +> main = defaultMain hunk ./Distribution/ModuleTest.hs 65 +import qualified Distribution.Simple.GHCPackageConfig as GHC (localPackageConfig) + hunk ./Distribution/ModuleTest.hs 115 - system "ghc-pkg --config-file=$HOME/.ghc-packages -r HUnit-1.0" + pkgConf <- GHC.localPackageConfig + system $ "ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit-1.0" hunk ./Distribution/ModuleTest.hs 120 - assertCmd "ghc -package-conf $HOME/.ghc-packages -package HUnit-1.0 HUnitTester.hs -o ./hunitTest" "compile w/ hunit" + assertCmd ("ghc -package-conf " ++ pkgConf ++ " -package HUnit-1.0 HUnitTester.hs -o ./hunitTest" "compile w/ hunit" hunk ./Distribution/ModuleTest.hs 122 - assertCmd "ghc-pkg --config-file=$HOME/.ghc-packages -r HUnit-1.0" "package remove" + assertCmd ("ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit-1.0" "package remove" hunk ./Distribution/ModuleTest.hs 126 - do system "ghc-pkg -r test-1.0 --config-file=$HOME/.ghc-packages" + do system $ "ghc-pkg -r test-1.0 --config-file=" ++ pkgConf hunk ./Distribution/Simple/Build.hs 64 +import qualified Distribution.Simple.GHCPackageConfig as GHC (localPackageConfig) hunk ./Distribution/Simple/Build.hs 99 - home <- getEnv "HOME" - let args = ["-package-conf", home ++ "/.ghc-packages"] + pkgConf <- GHC.localPackageConfig + let args = ["-package-conf", pkgConf] hunk ./Distribution/Simple/GHCPackageConfig.hs 17 - showGHCPackageConfig + showGHCPackageConfig, + localPackageConfig hunk ./Distribution/Simple/GHCPackageConfig.hs 24 +import Distribution.Simple.Utils(pathJoin) hunk ./Distribution/Simple/GHCPackageConfig.hs 27 +import System(getEnv) hunk ./Distribution/Simple/GHCPackageConfig.hs 29 +-- |Where ghc keeps the --user files. +localPackageConfig :: IO FilePath +localPackageConfig = do u <- getEnv "HOME" + return $ pathJoin [u, ".ghc-packages"] hunk ./Distribution/Simple/Register.hs 58 +import qualified Distribution.Simple.GHCPackageConfig as GHC (localPackageConfig) hunk ./Distribution/Simple/Register.hs 79 + localConf <- GHC.localPackageConfig hunk ./Distribution/Simple/Register.hs 81 - home <- getEnv "HOME" hunk ./Distribution/Simple/Register.hs 83 - ++ (if userInst then ["--config-file=" ++ home ++ "/.ghc-packages"] else [])) + ++ (if userInst then ["--config-file=" ++ localConf] else [])) hunk ./Distribution/TODO 4 -** clean up ~/.ghc-packages location... +** if the configure with --user make sure it installs with --user! hunk ./test/A/Makefile 10 + ./setup build hunk ./Distribution/ModuleTest.hs 114 --- assertCmd "make semiclean" "make semiclean" hunk ./Distribution/ModuleTest.hs 119 - assertCmd ("ghc -package-conf " ++ pkgConf ++ " -package HUnit-1.0 HUnitTester.hs -o ./hunitTest" "compile w/ hunit" + assertCmd ("ghc -package-conf " ++ pkgConf ++ " -package HUnit-1.0 HUnitTester.hs -o ./hunitTest") "compile w/ hunit" hunk ./Distribution/ModuleTest.hs 121 - assertCmd ("ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit-1.0" "package remove" + assertCmd ("ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit-1.0") "package remove" hunk ./Distribution/ModuleTest.hs 125 - do system $ "ghc-pkg -r test-1.0 --config-file=" ++ pkgConf + do pkgConf <- GHC.localPackageConfig + system $ "ghc-pkg -r test-1.0 --config-file=" ++ pkgConf hunk ./Distribution/TODO 2 -** make a library from the FileUtils, look at Python's os.path. hunk ./Distribution/TODO 3 -** if the configure with --user make sure it installs with --user! hunk ./Distribution/TODO 12 -** count errors and output. hunk ./Distribution/TODO 18 -** BUG: sdist forgets to include the Setup.lhs file :) - hunk ./Distribution/TODO 22 -** Change mainModules to [(String, String)] for (Module, executable name) +** Change mainModules to [(String, String)] for (Module, executable + name) +** Build executables for mainModules hunk ./Distribution/TODO 26 -** parse Setup.description +** parser for Setup.description hunk ./Distribution/TODO 2 -** add en.wikipedia.org/wiki/Cabal to web page -** Possibly create a (native?) zib library? +** Possibly create a (native?) zlib library? hunk ./Distribution/TODO 9 +** integrate hscpp, use it for preprocessing step. +** add more layered tools to appendix? +** make reference to "layered tools" appendix where approprote hunk ./Makefile 68 - scp library-infrastructure--darcs.tar.gz ijones@www.haskell.org:~/libraryInfrastructure/libraryInfrastructure-code.tgz - rm -f library-infrastructure--darcs.tar.gz + scp cabal.tar.gz ijones@www.haskell.org:~/libraryInfrastructure/libraryInfrastructure-code.tgz + rm -f cabal.tar.gz hunk ./Distribution/Package.hs 51 + parseField, hunk ./Distribution/Package.hs 57 -import Distribution.Version(Version(..), showVersion) +import Control.Monad(when) +import Data.Char(isSpace) + +import Distribution.Version(Version(..), showVersion, parseVersion) hunk ./Distribution/Package.hs 66 +import Text.ParserCombinators.Parsec + hunk ./Distribution/Package.hs 69 -import HUnit (Test) +import HUnit (Test(..), (~:), (~=?), assertEqual, assertBool, Assertion, runTestTT) hunk ./Distribution/Package.hs 131 + +-- ------------------------------------------------------------ +-- * Parsing +-- ------------------------------------------------------------ + hunk ./Distribution/Package.hs 141 +word :: Parser String +word = many1 letter "word" + +--parseWordCommaList :: GenParser Char st [t] +parseCommaList :: GenParser Char st a -- ^The parser for the stuff between commas + -> GenParser Char st [a] +parseCommaList p + = do words <- sepBy1 p separator + newline + return words + where separator = skipMany1 (space <|> char ',') + +parseWhite = try parseSpaceNotNewline + <|> (char '\n' >> parseWhite) + +parseSpaceNotNewline = (satisfy isSpaceNotNewline "space, not newline") + where isSpaceNotNewline :: Char -> Bool + isSpaceNotNewline '\n' = False + isSpaceNotNewline n = isSpace n + +parseField :: String -- ^The field name to parse + -> Bool -- ^Require newline? + -> GenParser Char st t -- ^The parser to use for this field + -> GenParser Char st t +parseField s newline p + = do when newline (char '\n'>>return ()) + string s + skipMany parseWhite + char ':' + skipMany parseWhite + p + hunk ./Distribution/Package.hs 178 -hunitTests = [] +hunitTests = [TestLabel "newline before word" $ TestCase $ + assertRight "newline before word" + "foo" (parse (skipMany parseWhite>>char '\n'>>word) "" " \n \nfoo"), + + TestLabel "skip spaces not newlines" $ TestCase $ + do assertRight "spaces with newlines" + "foo" (parse (skipMany parseWhite>>word) "" " \n foo") + assertRight "spaces with newlines" + "foo" (parse (skipMany parseWhite>>word) "" " \n \t\n foo") + assertRight "no preceding spaces" + "foo" (parse (skipMany parseWhite>>word) "" "foo") + assertBool "newline before data without in-between spaces" + (isError (parse (skipMany parseWhite>>word) "" " \n \nfoo")), + + TestLabel "basic fields" $ TestCase $ + do let p1 = parse (do w1 <- parseField "Foo" False parseVersion + skipMany parseWhite + w2 <- parseField "Bar" True word + return (w1, w2) + ) "" + knownVal1 = (Version {versionBranch = [3,2], versionTags = ["date=one"]},"boo") + assertRight "basic spaces 1" + knownVal1 (p1 "Foo: 3.2-one\nBar: boo") + assertRight "basic spaces 2" + knownVal1 (p1 "Foo: 3.2-one \t \nBar: boo") + assertRight "basic spaces 3" + knownVal1 (p1 "Foo : 3.2-one \t \nBar: boo ") + assertRight "basic spaces 3" + knownVal1 (p1 "Foo:3.2-one \t \nBar: boo ") + assertRight "basic spaces with newline" + knownVal1 (p1 "Foo:\n 3.2-one \t \nBar: boo ") + assertRight "basic spaces with newline" + knownVal1 (p1 "Foo:\n 3.2-one \t \n \nBar: boo ") + ] + +assertRight :: (Eq val) => String -> val -> (Either a val) -> Assertion +assertRight mes expected actual + = assertBool mes + (case actual of + (Right v) -> v == expected + _ -> False) + +isError (Left _) = True +isError _ = False + +main = runTestTT (TestList hunitTests) hunk ./Distribution/TODO 2 +** version parser is probably too greedy. hunk ./Distribution/Version.hs 244 - = (try $ do char '-'; d <- many anyChar; return ["date="++d]) + = (try $ do char '-'; d <- word; return ["date="++d]) hunk ./Distribution/Package.hs 154 - <|> (char '\n' >> parseWhite) + <|> (try (char '\n' >> parseWhite)) hunk ./Distribution/Package.hs 178 -hunitTests = [TestLabel "newline before word" $ TestCase $ - assertRight "newline before word" - "foo" (parse (skipMany parseWhite>>char '\n'>>word) "" " \n \nfoo"), +hunitTests = [TestLabel "newline before word (parsewhite)" $ TestCase $ + do assertRight "newline before word 1" + "foo" (parse (skipMany parseWhite>>char '\n'>>word) "" " \n \nfoo") + assertRight "newline before word 2" + "foo" (parse (skipMany parseWhite>>char '\n'>>word) "" " \n \t \n \nfoo"), hunk ./Distribution/Package.hs 185 - do assertRight "spaces with newlines" - "foo" (parse (skipMany parseWhite>>word) "" " \n foo") - assertRight "spaces with newlines" - "foo" (parse (skipMany parseWhite>>word) "" " \n \t\n foo") - assertRight "no preceding spaces" - "foo" (parse (skipMany parseWhite>>word) "" "foo") - assertBool "newline before data without in-between spaces" - (isError (parse (skipMany parseWhite>>word) "" " \n \nfoo")), + do assertRight "spaces with newlines" + "foo" (parse (skipMany parseWhite>>word) "" " \n foo") + assertRight "spaces with newlines" + "foo" (parse (skipMany parseWhite>>word) "" " \n \t\n foo") + assertRight "no preceding spaces" + "foo" (parse (skipMany parseWhite>>word) "" "foo") + assertBool "newline before data without in-between spaces" + (isError (parse (skipMany parseWhite>>word) "" " \n \nfoo")), hunk ./Distribution/Misc.hs 64 - deriving (Read, Show) + deriving (Read, Show, Eq) hunk ./Distribution/Misc.hs 68 - deriving (Read, Show) + deriving (Read, Show, Eq) hunk ./Distribution/Misc.hs 77 - deriving (Show, Read) + deriving (Show, Read, Eq) hunk ./Distribution/Package.hs 60 -import Distribution.Version(Version(..), showVersion, parseVersion) -import Distribution.Misc(License(..), Dependency, Extension) +import Distribution.Version(Version(..), VersionRange(..), showVersion, parseVersion) +import Distribution.Misc(License(..), Dependency(..), Extension) hunk ./Distribution/Package.hs 109 - deriving (Show, Read) + deriving (Show, Read, Eq) hunk ./Distribution/Package.hs 111 +-- |Set the name for this package. Convenience function. +setPkgName :: String -> PackageDescription -> PackageDescription +setPkgName n desc@PackageDescription{package=pkgIdent} + = desc{package=pkgIdent{pkgName=n}} + +-- |Set the version for this package. Convenience function. +setPkgVersion :: Version -> PackageDescription -> PackageDescription +setPkgVersion v desc@PackageDescription{package=pkgIdent} + = desc{package=pkgIdent{pkgVersion=v}} + hunk ./Distribution/Package.hs 151 + +parseDesc :: GenParser Char st PackageDescription +parseDesc = error "not yet implemented" + +-- |Parse the required fields. FIX: implmenet. We'll basically run +-- through these a bunch of times updating the state as we go along, +-- as is noted. +-- parseReqFields +-- = try (do v <- parseField "Version" True parseVersion +-- updateState(setPkgVersion v) +-- ) +-- <|> (parseField "Name" False +-- updateState (setPkgName n) +-- <|> (parseField + +-- |Must know when to stop ... :) +parseFreeText = error "not implemented" + hunk ./Distribution/Package.hs 205 +testPkgDesc = "-- Required\nName: Cabal\nVersion: 0.1.1.1.1-foo-bar-bang\nLicense: AllRightsReserved\nCopyright: Free Text String\n-- Optional - may be in source?\nStability: Free Text String\nBuild-Depends: haskell-src, HUnit>=1.0.0-foo\nModules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig\nMain-Modules: Distribution.Main\nC-Sources: foo/bar/bang.c, bong/boing.h\nHS-Source-Dir: src\nExposed-Modules: Distribution.Void, Foo.Bar\nExtensions: {some known extensions}\nExtra-Libs: libfoo, bar, bang\nInclude-Dirs: foo/bar, fang/fong\nIncludes: /foo/bar, jedi/night\nOptions: ghc: -fTH, hugs: +TH" + +testPkgDescAnswer = + PackageDescription {package = PackageIdentifier {pkgName = "Cabal", + pkgVersion = Version {versionBranch = [0,1], + versionTags = []}}, + license = AllRightsReserved, + copyright = "", + maintainer = "", + stability = "", + buildDepends = [Dependency "haskell-src" AnyVersion, + Dependency "HUnit-1.0" AnyVersion], + + allModules = ["Distribution.Package","Distribution.Version", + "Distribution.Misc","Distribution.Setup", + "Distribution.InstalledPackageInfo", + "Distribution.Make","Distribution.Simple", + "Distribution.Simple.Build", + "Distribution.Simple.Install","Distribution.Simple.SrcDist", + "Distribution.Simple.Configure","Distribution.Simple.Utils", + "Distribution.Simple.Register", + "Distribution.Simple.GHCPackageConfig", + "Distribution.GetOpt"], + + mainModules = [], + cSources = [], + hsSourceDir = ".", + exposedModules = [], + extensions = [], + extraLibs = [], + includeDirs = [], + includes = [], + options = [] +} + hunk ./Distribution/Package.hs 275 - knownVal1 (p1 "Foo:\n 3.2-one \t \n \nBar: boo ") + knownVal1 (p1 "Foo:\n 3.2-one \t \n \nBar: boo "), + + TestLabel "Package description" $ TestCase $ + assertRight "entire package description" testPkgDescAnswer + (parse parseDesc "" testPkgDesc) hunk ./Distribution/Version.hs 193 -word :: Parser String +word :: GenParser Char st String hunk ./Distribution/Version.hs 197 -parseVersionRange :: Parser VersionRange +parseVersionRange :: GenParser Char st VersionRange hunk ./Distribution/Version.hs 220 -parseVersion :: Parser Version +parseVersion :: GenParser Char st Version hunk ./Distribution/Version.hs 228 -branchParser :: Parser [Int] +branchParser :: GenParser Char st [Int] hunk ./Distribution/Version.hs 234 -branches :: Parser [Int] +branches :: GenParser Char st [Int] hunk ./Distribution/Version.hs 242 -dateParser :: Parser [String] +dateParser :: GenParser Char st [String] hunk ./Distribution/Version.hs 247 -number :: (Integral a, Read a) => Parser a +number :: (Integral a, Read a) => GenParser Char st a hunk ./Distribution/Version.hs 302 -lexer :: P.TokenParser () +lexer :: P.TokenParser st hunk ./Distribution/Version.hs 314 -whiteSpace :: CharParser () () +whiteSpace :: CharParser st () hunk ./Distribution/Version.hs 317 -lexeme :: CharParser () a -> CharParser () a +lexeme :: CharParser st a -> CharParser st a hunk ./Distribution/Version.hs 320 -symbol :: String -> CharParser () String +symbol :: String -> CharParser st String hunk ./Distribution/Version.hs 323 -natural :: CharParser () Integer +natural :: CharParser st Integer hunk ./Distribution/Version.hs 326 -parens :: CharParser () a -> CharParser () a +parens :: CharParser st a -> CharParser st a hunk ./Distribution/Version.hs 329 -semi :: CharParser () String +semi :: CharParser st String hunk ./Distribution/Version.hs 332 -identifier :: CharParser () String +identifier :: CharParser st String hunk ./Distribution/Version.hs 335 -reserved :: String -> CharParser () () +reserved :: String -> CharParser st () hunk ./Distribution/Version.hs 338 -reservedOp :: String -> CharParser () () +reservedOp :: String -> CharParser st () hunk ./Distribution/Package.hs 123 - = PackageDescription {package = undefined, + = PackageDescription {package = PackageIdentifier "" (Version [] []), hunk ./Distribution/Package.hs 146 +notImp :: String -> a +notImp s = error $ s ++ " not yet implemented" + hunk ./Distribution/Package.hs 154 - hunk ./Distribution/Package.hs 155 -parseDesc = error "not yet implemented" +parseDesc = notImp "parseDesc" hunk ./Distribution/Package.hs 157 --- |Parse the required fields. FIX: implmenet. We'll basically run --- through these a bunch of times updating the state as we go along, --- as is noted. --- parseReqFields --- = try (do v <- parseField "Version" True parseVersion --- updateState(setPkgVersion v) --- ) --- <|> (parseField "Name" False --- updateState (setPkgName n) --- <|> (parseField +--doParseReqFields :: String -> Either PackageDescription a +doParseReqFields = runParser parseReqFields emptyPackageDescription "" hunk ./Distribution/Package.hs 160 --- |Must know when to stop ... :) -parseFreeText = error "not implemented" +-- |Parse the required fields. We'll basically run through these a +-- bunch of times updating the state as we go along, as is noted. hunk ./Distribution/Package.hs 163 -word :: Parser String +parseReqFields = do many1 parseReqFieldsHelp + getState + where + parseReqFieldsHelp :: GenParser Char PackageDescription () + parseReqFieldsHelp + = try (parseField "Version" True parseVersion + >>= (updateState . setPkgVersion)) + <|> try (parseField "Name" False word + >>= (updateState . setPkgName)) + <|> try (parseField "Copyright" True parseFreeText + >>= (updateState . (\l pkgD -> pkgD{copyright=l}))) + <|> try (parseField "License" True parseLicense + >>= (updateState . (\c pkgD -> pkgD{license=c}))) + +-- |A parser for any of the given parsers. This actually seems to +-- behave differently from "choice". + +anyOf :: [GenParser tok st a] -> GenParser tok st a +anyOf [a] = a +anyOf (h:t) = foldl ((<|>) . try) (try h) t + +parseLicense :: GenParser Char st License +parseLicense = anyOf [string s>>return l | (s,l) <- licenses] + +-- |Mapping between the licenses and their names +licenses :: [(String, License)] +licenses= [("GPL", GPL), + ("LGPL", LGPL), + ("BSD3", BSD3), + ("BSD4", BSD4), + ("PublicDomain", PublicDomain), + ("AllRightsReserved", AllRightsReserved)] + +-- |Must know when to stop, but still not eat the next field! +parseFreeText = notImp "parseFreeText" + +word :: GenParser Char st String hunk ./Distribution/Package.hs 235 -testPkgDesc = "-- Required\nName: Cabal\nVersion: 0.1.1.1.1-foo-bar-bang\nLicense: AllRightsReserved\nCopyright: Free Text String\n-- Optional - may be in source?\nStability: Free Text String\nBuild-Depends: haskell-src, HUnit>=1.0.0-foo\nModules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig\nMain-Modules: Distribution.Main\nC-Sources: foo/bar/bang.c, bong/boing.h\nHS-Source-Dir: src\nExposed-Modules: Distribution.Void, Foo.Bar\nExtensions: {some known extensions}\nExtra-Libs: libfoo, bar, bang\nInclude-Dirs: foo/bar, fang/fong\nIncludes: /foo/bar, jedi/night\nOptions: ghc: -fTH, hugs: +TH" +testPkgDesc = "-- Required\nName: Cabal\nVersion: 0.1.1.1.1-foo-bar-bang\nLicense: LGPL\nCopyright: Free Text String\n-- Optional - may be in source?\nStability: Free Text String\nBuild-Depends: haskell-src, HUnit>=1.0.0-foo\nModules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig\nMain-Modules: Distribution.Main\nC-Sources: foo/bar/bang.c, bong/boing.h\nHS-Source-Dir: src\nExposed-Modules: Distribution.Void, Foo.Bar\nExtensions: {some known extensions}\nExtra-Libs: libfoo, bar, bang\nInclude-Dirs: foo/bar, fang/fong\nIncludes: /foo/bar, jedi/night\nOptions: ghc: -fTH, hugs: +TH" hunk ./Distribution/Package.hs 241 - license = AllRightsReserved, + license = LGPL, hunk ./Distribution/Package.hs 307 + TestCase (assertRight "BSD4" BSD4 (parse parseLicense "" "BSD4")), + + TestLabel "license parsers" $ + TestCase (sequence_ [assertRight ("license " ++ lName) lVal + (parse parseLicense "" lName) + | (lName, lVal) <- licenses]), + + TestLabel "Required fields" $ TestCase $ + do assertRight "some fields" + emptyPackageDescription{package=(PackageIdentifier "foo" + (Version [0,0] ["date=asdf"]))} + (doParseReqFields "Name: foo\nVersion: 0.0-asdf") + assertRight "more fields foo" + emptyPackageDescription{package=(PackageIdentifier "foo" + (Version [0,0]["date=asdf"])), + license=GPL} + (doParseReqFields "Name: foo\nVersion:0.0-asdf\nLicense: GPL") + + assertRight "required fields for foo" + emptyPackageDescription{package=(PackageIdentifier "foo" + (Version [0,0]["date=asdf"])), + license=GPL, copyright="2004 isaac jones"} + (doParseReqFields "Name: foo\nVersion:0.0-asdf\nCopyright: 2004 isaac jones\nLicense: GPL"), + + hunk ./Distribution/Package.hs 337 + hunk ./Distribution/TODO 2 -** version parser is probably too greedy. +** license parser parses either known strings, or a filename. hunk ./Distribution/Package.hs 53 - hunitTests + hunitTests, + main hunk ./Distribution/Package.hs 58 -import Control.Monad(when) +import Control.Monad(when, liftM) hunk ./Distribution/Package.hs 155 -parseDesc :: GenParser Char st PackageDescription -parseDesc = notImp "parseDesc" +-- |Wrapper function for 'parseDesc' +doParseDesc :: String -> Either ParseError PackageDescription +doParseDesc = runParser parseReqFields emptyPackageDescription "" hunk ./Distribution/Package.hs 159 ---doParseReqFields :: String -> Either PackageDescription a +-- |High-level parser for package descriptions +parseDesc :: GenParser Char PackageDescription PackageDescription +parseDesc = (many1 (parseReqFields >> parseDescHelp)) >> getState + where + parseDescHelp + -- Free string and file paths: + = try (parseField "Stability" False word + >>= updateState . (\l pkgD -> pkgD{stability=l})) + <|> try (parseField "C-Sources" True parseFilePath + >>= updateState . (\l pkgD -> pkgD{cSources=l})) + <|> try (parseField "Include-Dirs" True parseFilePath + >>= updateState . (\l pkgD -> pkgD{includeDirs=l})) + <|> try (parseField "Includes" True parseFilePath + >>= updateState . (\l pkgD -> pkgD{includes=l})) + <|> try (parseField "HS-Source-Dir" True parseFilePath + >>= updateState . (\l pkgD -> pkgD{hsSourceDir=l})) + +-- Parsing remains for: +-- +-- Build-Depends: haskell-src, HUnit>=1.0.0-foo +-- Modules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig +-- Main-Modules: Distribution.Main +-- Exposed-Modules: Distribution.Void, Foo.Bar +-- Extra-Libs: libfoo, bar, bang +-- Options: ghc: -fTH, hugs: +TH +-- Extensions: {some known extensions} + +-- |Wrapper function for 'parseReqFields' +doParseReqFields :: String -> Either ParseError PackageDescription hunk ./Distribution/Package.hs 193 -parseReqFields = do many1 parseReqFieldsHelp - getState +parseReqFields :: GenParser Char PackageDescription PackageDescription +parseReqFields = many1 parseReqFieldsHelp >> getState hunk ./Distribution/Package.hs 198 - = try (parseField "Version" True parseVersion - >>= (updateState . setPkgVersion)) - <|> try (parseField "Name" False word + = try (parseField "Name" False word hunk ./Distribution/Package.hs 200 - <|> try (parseField "Copyright" True parseFreeText + <|> try (parseField "Version" True parseVersion + >>= (updateState . setPkgVersion)) + <|> try (parseField "Copyright" True parseFreeText hunk ./Distribution/Package.hs 204 - <|> try (parseField "License" True parseLicense + <|> try (parseField "License" True parseLicense hunk ./Distribution/Package.hs 214 +-- |FIX: must learn to escape whitespace +parseFilePath :: GenParser Char st [FilePath] +parseFilePath + = parseCommaList (many1 (do try word + <|> toStr digit + <|> toStr (oneOf "!@#$%^&*()?>>= return . concat) + hunk ./Distribution/Package.hs 234 --- |Must know when to stop, but still not eat the next field! -parseFreeText = notImp "parseFreeText" +-- |FIX: Could be better. The problem is making it free enough without +-- eating the next field. +parseFreeText = many1 (do try word + <|> toStr digit + <|> toStr parseWhite + <|> toStr (oneOf "!@#$%^&*()?>>= return . concat +toStr c = c >>= \x -> return [x] hunk ./Distribution/Package.hs 247 +number :: Parser Integer +number = do{ ds <- many1 digit + ; return (read ds) + } + "number" + hunk ./Distribution/Package.hs 258 - newline hunk ./Distribution/Package.hs 259 - where separator = skipMany1 (space <|> char ',') + where separator = (skipMany parseWhite) >> char ',' >> (skipMany parseWhite) hunk ./Distribution/Package.hs 363 + TestLabel "misc fields" $ TestCase $ + do assertRight "path field" + ["foo/bar/bang","/baz/boom/pow", "/", "foob"] + (parse (parseField "Includes" False parseFilePath) "" + "Includes: foo/bar/bang , /baz/boom/pow, /, foob"), hunk ./Distribution/Package.hs 379 + + assertRight "copyright field" + "(c) 2004 foo bar bang" + (parse (parseField "Copyright" False parseFreeText) "" + "Copyright: (c) 2004 foo bar\n bang") hunk ./Distribution/Package.hs 394 - (parse parseDesc "" testPkgDesc) + (doParseDesc testPkgDesc) hunk ./Distribution/Package.hs 174 - >>= updateState . (\l pkgD -> pkgD{hsSourceDir=l})) + >>= updateState . (\l pkgD -> pkgD{hsSourceDir=head l})) hunk ./Distribution/Package.hs 214 + hunk ./Distribution/Package.hs 175 + <|> try (parseField "Main-Modules" True (parseCommaList moduleName) + >>= updateState . (\l pkgD -> pkgD{mainModules=l})) + <|> try (parseField "Exposed-Modules" True (parseCommaList moduleName) + >>= updateState . (\l pkgD -> pkgD{exposedModules=l})) + <|> try (parseField "Modules" True (parseCommaList moduleName) + >>= updateState . (\l pkgD -> pkgD{allModules=l})) hunk ./Distribution/Package.hs 185 --- Modules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig --- Main-Modules: Distribution.Main --- Exposed-Modules: Distribution.Void, Foo.Bar hunk ./Distribution/Package.hs 217 +-- |parse a module name +moduleName = many (alphaNum <|> oneOf "_'.") hunk ./Distribution/Package.hs 370 - do assertRight "path field" + do let someModules = ["Somewhere.I.Have.Never.Traveled", + "Gladly.Beyond.Any.Experience", + "Your.Eyes.Have.Their.Silence"] + let someModulesText = "Somewhere.I.Have.Never.Traveled\t , Gladly.Beyond.Any.Experience, \tYour.Eyes.Have.Their.Silence" + assertRight "path field" hunk ./Distribution/Package.hs 377 - "Includes: foo/bar/bang , /baz/boom/pow, /, foob"), + "Includes: foo/bar/bang , /baz/boom/pow, /, foob") + -- Module-related fields + assertRight "main modules field" + someModules (parse (parseField "Main-Modules" False + (parseCommaList moduleName)) "" + ("Main-Modules: " ++ someModulesText)) + assertRight "exposed modules field" + someModules (parse (parseField "Exposed-Modules" False + (parseCommaList moduleName)) "" + ("Exposed-Modules: " ++ someModulesText)) + assertRight "modules field" + someModules (parse (parseField "Modules" False + (parseCommaList moduleName)) "" + ("Modules: " ++ someModulesText)), hunk ./Distribution/Package.hs 394 - emptyPackageDescription{package=(PackageIdentifier "foo" + emptyPackageDescription{package=(PackageIdentifier "rain" hunk ./Distribution/Package.hs 396 - (doParseReqFields "Name: foo\nVersion: 0.0-asdf") - assertRight "more fields foo" - emptyPackageDescription{package=(PackageIdentifier "foo" + (doParseReqFields "Name: rain\nVersion: 0.0-asdf") + assertRight "more fields rain" + emptyPackageDescription{package=(PackageIdentifier "rain" hunk ./Distribution/Package.hs 401 - (doParseReqFields "Name: foo\nVersion:0.0-asdf\nLicense: GPL") + (doParseReqFields "Name: rain\nVersion:0.0-asdf\nLicense: GPL") hunk ./Distribution/Package.hs 407 - + hunk ./Distribution/Package.hs 61 -import Distribution.Version(Version(..), VersionRange(..), showVersion, parseVersion) +import Distribution.Version(Version(..), VersionRange(..), + showVersion, parseVersion, parseVersionRange) hunk ./Distribution/Package.hs 165 - -- Free string and file paths: + -- misc hunk ./Distribution/Package.hs 168 + <|> try (parseField "Extra-Libs" True (parseCommaList word) + >>= updateState . (\l pkgD -> pkgD{extraLibs=l})) + <|> try (parseField "Build-Depends" True (parseCommaList parseDependency) + >>= updateState . (\l pkgD -> pkgD{buildDepends=l})) + -- File-path-related hunk ./Distribution/Package.hs 181 + -- module related hunk ./Distribution/Package.hs 191 --- Build-Depends: haskell-src, HUnit>=1.0.0-foo --- Extra-Libs: libfoo, bar, bang hunk ./Distribution/Package.hs 236 +parseDependency :: GenParser Char st Dependency +parseDependency = do name <- word + skipMany parseWhite + ver <- parseVersionRange + skipMany parseWhite + return $ Dependency name ver + hunk ./Distribution/Package.hs 390 + assertRight "dependencies" + [Dependency "not" (LaterVersion (Version [0] [])), + Dependency "even" (ThisVersion (Version [3,3] ["date=the"])), + Dependency "rain" + (UnionVersionRanges (ThisVersion (Version [3,3] [])) + (LaterVersion (Version[3,3] [])))] + (parse (parseField "Build-Depends" False + (parseCommaList parseDependency)) "" + "Build-Depends: not>0, even == 3.3-the , rain>=3.3") hunk ./Distribution/Package.hs 411 - ("Modules: " ++ someModulesText)), + ("Modules: " ++ someModulesText)) + assertRight "extra libs" + ["inYour", "libMostFrail", "gestures"] + (parse (parseField "Extra-Libs" False (parseCommaList word)) + "" "Extra-Libs: inYour\t, libMostFrail,gestures"), hunk ./Distribution/Version.hs 223 - date <- dateParser + date <- option [] dateParser hunk ./Distribution/Version.hs 231 - bs <- branches + bs <- many branches hunk ./Distribution/Version.hs 234 -branches :: GenParser Char st [Int] +--branches :: GenParser Char st [Int] hunk ./Distribution/Version.hs 236 - = option [] $ do - char '.' - n <- number - bs <- branches - return (n:bs) + = do char '.' + n <- number + return (n) hunk ./Distribution/Package.hs 51 - parseField, hunk ./Distribution/Package.hs 57 -import Control.Monad(when, liftM) -import Data.Char(isSpace) +import Control.Monad.State +import Control.Monad(when, foldM) +import Control.Monad.Error +import Data.Char(isSpace, toLower) hunk ./Distribution/Package.hs 157 --- |Wrapper function for 'parseDesc' -doParseDesc :: String -> Either ParseError PackageDescription -doParseDesc = runParser parseReqFields emptyPackageDescription "" +data PError = Parsec ParseError | FromString String + deriving Show hunk ./Distribution/Package.hs 160 --- |High-level parser for package descriptions -parseDesc :: GenParser Char PackageDescription PackageDescription -parseDesc = (many1 (parseReqFields >> parseDescHelp)) >> getState - where - parseDescHelp - -- misc - = try (parseField "Stability" False word - >>= updateState . (\l pkgD -> pkgD{stability=l})) - <|> try (parseField "Extra-Libs" True (parseCommaList word) - >>= updateState . (\l pkgD -> pkgD{extraLibs=l})) - <|> try (parseField "Build-Depends" True (parseCommaList parseDependency) - >>= updateState . (\l pkgD -> pkgD{buildDepends=l})) - -- File-path-related - <|> try (parseField "C-Sources" True parseFilePath - >>= updateState . (\l pkgD -> pkgD{cSources=l})) - <|> try (parseField "Include-Dirs" True parseFilePath - >>= updateState . (\l pkgD -> pkgD{includeDirs=l})) - <|> try (parseField "Includes" True parseFilePath - >>= updateState . (\l pkgD -> pkgD{includes=l})) - <|> try (parseField "HS-Source-Dir" True parseFilePath - >>= updateState . (\l pkgD -> pkgD{hsSourceDir=head l})) - -- module related - <|> try (parseField "Main-Modules" True (parseCommaList moduleName) - >>= updateState . (\l pkgD -> pkgD{mainModules=l})) - <|> try (parseField "Exposed-Modules" True (parseCommaList moduleName) - >>= updateState . (\l pkgD -> pkgD{exposedModules=l})) - <|> try (parseField "Modules" True (parseCommaList moduleName) - >>= updateState . (\l pkgD -> pkgD{allModules=l})) +instance Error PError where + strMsg = FromString hunk ./Distribution/Package.hs 163 --- Parsing remains for: --- --- Options: ghc: -fTH, hugs: +TH --- Extensions: {some known extensions} +parseDescription :: String -> Either PError PackageDescription +parseDescription inp = foldM parseDescHelp emptyPackageDescription (splitLines inp) + where -- Required fields + parseDescHelp pkg (f@"name", val) = return (setPkgName val pkg) + parseDescHelp pkg (f@"version", val) = + do v <- runP f parseVersion val + return (setPkgVersion v pkg) + parseDescHelp pkg (f@"copyright", val) = return pkg{copyright=val} + parseDescHelp pkg (f@"license", val) = + do l <- runP f parseLicense val + return pkg{license=l} + -- Misc. + parseDescHelp pkg (f@"maintainer", val) = return pkg{maintainer=val} + parseDescHelp pkg (f@"stability", val) = return pkg{stability=val} + parseDescHelp pkg (f@"extra-libs", val) = + do xs <- runP f (parseCommaList word) val + return pkg{extraLibs=xs} + parseDescHelp pkg (f@"build-depends", val) = + do xs <- runP f (parseCommaList parseDependency) val + return pkg{buildDepends=xs} + -- Paths and stuff + parseDescHelp pkg (f@"c-sources", val) = + do path <- runP f parseFilePath val + return pkg{cSources=path} + parseDescHelp pkg (f@"include-dirs", val) = + do path <- runP f parseFilePath val + return pkg{includeDirs=path} + parseDescHelp pkg (f@"includes", val) = + do path <- runP f parseFilePath val + return pkg{includes=path} + parseDescHelp pkg (f@"hs-source-dir", val) = + do path <- runP f parseFilePath val + return pkg{hsSourceDir=head path} + -- Module related + parseDescHelp pkg (f@"main-modules", val) = + do xs <- runP f (parseCommaList moduleName) val + return pkg{mainModules=xs} + parseDescHelp pkg (f@"exposed-modules", val) = + do xs <- runP f (parseCommaList moduleName) val + return pkg{exposedModules=xs} + parseDescHelp pkg (f@"modules", val) = + do xs <- runP f (parseCommaList moduleName) val + return pkg{allModules=xs} + parseDescHelp pkg (f@"extensions", val) = + do -- ... + return pkg + parseDescHelp pkg (f@"options", val) = + do -- ... + return pkg + parseDescHelp pkg (field, val) = error $ "Unknown field :: " ++ field + -- ... + runP f p s = case parse p f s of + Left pe -> Left (Parsec pe) + Right a -> Right a hunk ./Distribution/Package.hs 218 --- |Wrapper function for 'parseReqFields' -doParseReqFields :: String -> Either ParseError PackageDescription -doParseReqFields = runParser parseReqFields emptyPackageDescription "" +splitLines :: String -> [(String,String)] +splitLines = merge . filter validLine . lines + where validLine s = case dropWhile isSpace s of + "" -> False -- Empty line + '-':'-':_ -> False -- Comment + _ -> True + merge (x:(' ':s):ys) = case dropWhile isSpace s of + "." -> merge ((x++"\n"):ys) + s' -> merge ((x++"\n"++s'):ys) + merge (x:ys) = brk x : merge ys + merge [] = [] + brk xs = case break (==':') xs of + (fld, ':':val) -> (map toLower fld, dropWhile isSpace val) + (fld, "") -> error "FIXME" hunk ./Distribution/Package.hs 233 --- |Parse the required fields. We'll basically run through these a --- bunch of times updating the state as we go along, as is noted. - -parseReqFields :: GenParser Char PackageDescription PackageDescription -parseReqFields = many1 parseReqFieldsHelp >> getState - where - parseReqFieldsHelp :: GenParser Char PackageDescription () - parseReqFieldsHelp - = try (parseField "Name" False word - >>= (updateState . setPkgName)) - <|> try (parseField "Version" True parseVersion - >>= (updateState . setPkgVersion)) - <|> try (parseField "Copyright" True parseFreeText - >>= (updateState . (\l pkgD -> pkgD{copyright=l}))) - <|> try (parseField "License" True parseLicense - >>= (updateState . (\c pkgD -> pkgD{license=c}))) - hunk ./Distribution/Package.hs 241 -moduleName = many (alphaNum <|> oneOf "_'.") +moduleName = many (alphaNum <|> oneOf "_'.") "moduleName" hunk ./Distribution/Package.hs 250 + "parseFilePath" hunk ./Distribution/Package.hs 254 + "parseLicense" hunk ./Distribution/Package.hs 257 -parseDependency = do name <- word +parseDependency = do name <- many1 (letter <|> digit <|> oneOf "-_") hunk ./Distribution/Package.hs 259 - ver <- parseVersionRange + ver <- parseVersionRange -- XXX Ugly ugly fix, this will + <|> return AnyVersion -- XXX probably break something hunk ./Distribution/Package.hs 263 + "parseDependency" hunk ./Distribution/Package.hs 274 --- |FIX: Could be better. The problem is making it free enough without --- eating the next field. -parseFreeText = many1 (do try word - <|> toStr digit - <|> toStr parseWhite - <|> toStr (oneOf "!@#$%^&*()?>>= return . concat hunk ./Distribution/Package.hs 279 -number :: Parser Integer -number = do{ ds <- many1 digit - ; return (read ds) - } - "number" - ---parseWordCommaList :: GenParser Char st [t] hunk ./Distribution/Package.hs 284 - where separator = (skipMany parseWhite) >> char ',' >> (skipMany parseWhite) + where separator = spaces >> char ',' >> spaces hunk ./Distribution/Package.hs 294 -parseField :: String -- ^The field name to parse - -> Bool -- ^Require newline? - -> GenParser Char st t -- ^The parser to use for this field - -> GenParser Char st t -parseField s newline p - = do when newline (char '\n'>>return ()) - string s - skipMany parseWhite - char ':' - skipMany parseWhite - p - hunk ./Distribution/Package.hs 350 - TestLabel "basic fields" $ TestCase $ - do let p1 = parse (do w1 <- parseField "Foo" False parseVersion - skipMany parseWhite - w2 <- parseField "Bar" True word - return (w1, w2) - ) "" - knownVal1 = (Version {versionBranch = [3,2], versionTags = ["date=one"]},"boo") - assertRight "basic spaces 1" - knownVal1 (p1 "Foo: 3.2-one\nBar: boo") - assertRight "basic spaces 2" - knownVal1 (p1 "Foo: 3.2-one \t \nBar: boo") - assertRight "basic spaces 3" - knownVal1 (p1 "Foo : 3.2-one \t \nBar: boo ") - assertRight "basic spaces 3" - knownVal1 (p1 "Foo:3.2-one \t \nBar: boo ") - assertRight "basic spaces with newline" - knownVal1 (p1 "Foo:\n 3.2-one \t \nBar: boo ") - assertRight "basic spaces with newline" - knownVal1 (p1 "Foo:\n 3.2-one \t \n \nBar: boo "), +-- TestLabel "basic fields" $ TestCase $ +-- do let p1 = parse (do w1 <- parseField "Foo" False parseVersion +-- skipMany parseWhite +-- w2 <- parseField "Bar" True word +-- return (w1, w2) +-- ) "" +-- knownVal1 = (Version {versionBranch = [3,2], versionTags = ["date=one"]},"boo") +-- assertRight "basic spaces 1" +-- knownVal1 (p1 "Foo: 3.2-one\nBar: boo") +-- assertRight "basic spaces 2" +-- knownVal1 (p1 "Foo: 3.2-one \t \nBar: boo") +-- assertRight "basic spaces 3" +-- knownVal1 (p1 "Foo : 3.2-one \t \nBar: boo ") +-- assertRight "basic spaces 3" +-- knownVal1 (p1 "Foo:3.2-one \t \nBar: boo ") +-- assertRight "basic spaces with newline" +-- knownVal1 (p1 "Foo:\n 3.2-one \t \nBar: boo ") +-- assertRight "basic spaces with newline" +-- knownVal1 (p1 "Foo:\n 3.2-one \t \n \nBar: boo "), hunk ./Distribution/Package.hs 375 - | (lName, lVal) <- licenses]), - TestLabel "misc fields" $ TestCase $ - do let someModules = ["Somewhere.I.Have.Never.Traveled", - "Gladly.Beyond.Any.Experience", - "Your.Eyes.Have.Their.Silence"] - let someModulesText = "Somewhere.I.Have.Never.Traveled\t , Gladly.Beyond.Any.Experience, \tYour.Eyes.Have.Their.Silence" - assertRight "path field" - ["foo/bar/bang","/baz/boom/pow", "/", "foob"] - (parse (parseField "Includes" False parseFilePath) "" - "Includes: foo/bar/bang , /baz/boom/pow, /, foob") - assertRight "dependencies" - [Dependency "not" (LaterVersion (Version [0] [])), - Dependency "even" (ThisVersion (Version [3,3] ["date=the"])), - Dependency "rain" - (UnionVersionRanges (ThisVersion (Version [3,3] [])) - (LaterVersion (Version[3,3] [])))] - (parse (parseField "Build-Depends" False - (parseCommaList parseDependency)) "" - "Build-Depends: not>0, even == 3.3-the , rain>=3.3") - -- Module-related fields - assertRight "main modules field" - someModules (parse (parseField "Main-Modules" False - (parseCommaList moduleName)) "" - ("Main-Modules: " ++ someModulesText)) - assertRight "exposed modules field" - someModules (parse (parseField "Exposed-Modules" False - (parseCommaList moduleName)) "" - ("Exposed-Modules: " ++ someModulesText)) - assertRight "modules field" - someModules (parse (parseField "Modules" False - (parseCommaList moduleName)) "" - ("Modules: " ++ someModulesText)) - assertRight "extra libs" - ["inYour", "libMostFrail", "gestures"] - (parse (parseField "Extra-Libs" False (parseCommaList word)) - "" "Extra-Libs: inYour\t, libMostFrail,gestures"), + | (lName, lVal) <- licenses]) hunk ./Distribution/Package.hs 377 - TestLabel "Required fields" $ TestCase $ - do assertRight "some fields" - emptyPackageDescription{package=(PackageIdentifier "rain" - (Version [0,0] ["date=asdf"]))} - (doParseReqFields "Name: rain\nVersion: 0.0-asdf") - assertRight "more fields rain" - emptyPackageDescription{package=(PackageIdentifier "rain" - (Version [0,0]["date=asdf"])), - license=GPL} - (doParseReqFields "Name: rain\nVersion:0.0-asdf\nLicense: GPL") +-- TestLabel "Required fields" $ TestCase $ +-- do assertRight "some fields" +-- emptyPackageDescription{package=(PackageIdentifier "foo" +-- (Version [0,0] ["date=asdf"]))} +-- (doParseReqFields "Name: foo\nVersion: 0.0-asdf") +-- assertRight "more fields foo" +-- emptyPackageDescription{package=(PackageIdentifier "foo" +-- (Version [0,0]["date=asdf"])), +-- license=GPL} +-- (doParseReqFields "Name: foo\nVersion:0.0-asdf\nLicense: GPL") +-- +-- assertRight "required fields for foo" +-- emptyPackageDescription{package=(PackageIdentifier "foo" +-- (Version [0,0]["date=asdf"])), +-- license=GPL, copyright="2004 isaac jones"} +-- (doParseReqFields "Name: foo\nVersion:0.0-asdf\nCopyright: 2004 isaac jones\nLicense: GPL") +-- +-- +-- TestLabel "Package description" $ TestCase $ +-- assertRight "entire package description" testPkgDescAnswer +-- (parse parseDesc "" testPkgDesc), hunk ./Distribution/Package.hs 399 - assertRight "copyright field" - "(c) 2004 foo bar bang" - (parse (parseField "Copyright" False parseFreeText) "" - "Copyright: (c) 2004 foo bar\n bang") - - assertRight "required fields for foo" - emptyPackageDescription{package=(PackageIdentifier "foo" - (Version [0,0]["date=asdf"])), - license=GPL, copyright="2004 isaac jones"} - (doParseReqFields "Name: foo\nVersion:0.0-asdf\nCopyright: 2004 isaac jones\nLicense: GPL"), - - - TestLabel "Package description" $ TestCase $ - assertRight "entire package description" testPkgDescAnswer - (doParseDesc testPkgDesc) hunk ./Distribution/Package.hs 302 - pkgVersion = Version {versionBranch = [0,1], - versionTags = []}}, + pkgVersion = Version {versionBranch = [0,1,1,1,1], + versionTags = ["date=foo"]}}, hunk ./Distribution/Package.hs 305 - copyright = "", + copyright = "Free Text String", hunk ./Distribution/Package.hs 307 - stability = "", + stability = "Free Text String", hunk ./Distribution/Package.hs 309 - Dependency "HUnit-1.0" AnyVersion], + Dependency "HUnit" + (UnionVersionRanges (ThisVersion (Version [1,0,0] ["date=foo"])) + (LaterVersion (Version [1,0,0] ["date=foo"])))], hunk ./Distribution/Package.hs 314 - "Distribution.Misc","Distribution.Setup", - "Distribution.InstalledPackageInfo", - "Distribution.Make","Distribution.Simple", - "Distribution.Simple.Build", - "Distribution.Simple.Install","Distribution.Simple.SrcDist", - "Distribution.Simple.Configure","Distribution.Simple.Utils", - "Distribution.Simple.Register", - "Distribution.Simple.GHCPackageConfig", - "Distribution.GetOpt"], + "Distribution.Simple.GHCPackageConfig"], hunk ./Distribution/Package.hs 316 - mainModules = [], - cSources = [], - hsSourceDir = ".", - exposedModules = [], + mainModules = ["Distribution.Main"], + cSources = ["foo/bar/bang"], + hsSourceDir = "src", + exposedModules = ["Distribution.Void", "Foo.Bar"], hunk ./Distribution/Package.hs 321 - extraLibs = [], - includeDirs = [], - includes = [], + extraLibs = ["libfoo", "bar", "bang"], + includeDirs = ["foo/bar", "fang/fong"], + includes = ["/foo/bar", "jedi/night"], hunk ./Distribution/Package.hs 369 - | (lName, lVal) <- licenses]) + | (lName, lVal) <- licenses]), hunk ./Distribution/Package.hs 371 --- TestLabel "Required fields" $ TestCase $ --- do assertRight "some fields" --- emptyPackageDescription{package=(PackageIdentifier "foo" --- (Version [0,0] ["date=asdf"]))} --- (doParseReqFields "Name: foo\nVersion: 0.0-asdf") --- assertRight "more fields foo" --- emptyPackageDescription{package=(PackageIdentifier "foo" --- (Version [0,0]["date=asdf"])), --- license=GPL} --- (doParseReqFields "Name: foo\nVersion:0.0-asdf\nLicense: GPL") --- --- assertRight "required fields for foo" --- emptyPackageDescription{package=(PackageIdentifier "foo" --- (Version [0,0]["date=asdf"])), --- license=GPL, copyright="2004 isaac jones"} --- (doParseReqFields "Name: foo\nVersion:0.0-asdf\nCopyright: 2004 isaac jones\nLicense: GPL") --- --- --- TestLabel "Package description" $ TestCase $ --- assertRight "entire package description" testPkgDescAnswer --- (parse parseDesc "" testPkgDesc), + TestLabel "Required fields" $ TestCase $ + do assertRight "some fields" + emptyPackageDescription{package=(PackageIdentifier "foo" + (Version [0,0] ["date=asdf"]))} + (parseDescription "Name: foo\nVersion: 0.0-asdf") hunk ./Distribution/Package.hs 377 + assertRight "more fields foo" + emptyPackageDescription{package=(PackageIdentifier "foo" + (Version [0,0]["date=asdf"])), + license=GPL} + (parseDescription "Name: foo\nVersion:0.0-asdf\nLicense: GPL") + + assertRight "required fields for foo" + emptyPackageDescription{package=(PackageIdentifier "foo" + (Version [0,0]["date=asdf"])), + license=GPL, copyright="2004 isaac jones"} + (parseDescription "Name: foo\nVersion:0.0-asdf\nCopyright: 2004 isaac jones\nLicense: GPL"), + + + TestLabel "Package description" $ TestCase $ + assertRight "entire package description" testPkgDescAnswer + (parseDescription testPkgDesc) + hunk ./Distribution/Package.hs 248 - <|> toStr (oneOf "!@#$%^&*()?> toStr (oneOf "!@#$%^&*()?>=1.0.0-foo\nModules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig\nMain-Modules: Distribution.Main\nC-Sources: foo/bar/bang.c, bong/boing.h\nHS-Source-Dir: src\nExposed-Modules: Distribution.Void, Foo.Bar\nExtensions: {some known extensions}\nExtra-Libs: libfoo, bar, bang\nInclude-Dirs: foo/bar, fang/fong\nIncludes: /foo/bar, jedi/night\nOptions: ghc: -fTH, hugs: +TH" +testPkgDesc = "-- Required\nName: Cabal\nVersion: 0.1.1.1.1-rain\nLicense: LGPL\nCopyright: Free Text String\n-- Optional - may be in source?\nStability: Free Text String\nBuild-Depends: haskell-src, HUnit>=1.0.0-rain\nModules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig\nMain-Modules: Distribution.Main\nC-Sources: not/even/rain.c, such/small/hands\nHS-Source-Dir: src\nExposed-Modules: Distribution.Void, Foo.Bar\nExtensions: {some known extensions}\nExtra-Libs: libfoo, bar, bang\nInclude-Dirs: your/slightest, look/will\nIncludes: /easily/unclose, /me\nOptions: ghc: -fTH, hugs: +TH" hunk ./Distribution/Package.hs 303 - versionTags = ["date=foo"]}}, + versionTags = ["date=rain"]}}, hunk ./Distribution/Package.hs 310 - (UnionVersionRanges (ThisVersion (Version [1,0,0] ["date=foo"])) - (LaterVersion (Version [1,0,0] ["date=foo"])))], + (UnionVersionRanges (ThisVersion (Version [1,0,0] ["date=rain"])) + (LaterVersion (Version [1,0,0] ["date=rain"])))], hunk ./Distribution/Package.hs 317 - cSources = ["foo/bar/bang"], + cSources = ["not/even/rain.c", "such/small/hands"], hunk ./Distribution/Package.hs 322 - includeDirs = ["foo/bar", "fang/fong"], - includes = ["/foo/bar", "jedi/night"], + includeDirs = ["your/slightest", "look/will"], + includes = ["/easily/unclose", "/me"], hunk ./Distribution/Package.hs 303 - versionTags = ["date=rain"]}}, + versionTags = ["rain"]}}, hunk ./Distribution/Package.hs 310 - (UnionVersionRanges (ThisVersion (Version [1,0,0] ["date=rain"])) - (LaterVersion (Version [1,0,0] ["date=rain"])))], + (UnionVersionRanges (ThisVersion (Version [1,0,0] ["rain"])) + (LaterVersion (Version [1,0,0] ["rain"])))], hunk ./Distribution/Package.hs 350 --- knownVal1 = (Version {versionBranch = [3,2], versionTags = ["date=one"]},"boo") +-- knownVal1 = (Version {versionBranch = [3,2], versionTags = ["one"]},"boo") hunk ./Distribution/Package.hs 374 - (Version [0,0] ["date=asdf"]))} + (Version [0,0] ["asdf"]))} hunk ./Distribution/Package.hs 379 - (Version [0,0]["date=asdf"])), + (Version [0,0]["asdf"])), hunk ./Distribution/Package.hs 385 - (Version [0,0]["date=asdf"])), + (Version [0,0]["asdf"])), hunk ./Distribution/Version.hs 223 - date <- option [] dateParser - return (Version{versionBranch=branch, versionTags=date}) + tags <- many (char '-' >> word) + return Version{versionBranch=branch, versionTags=tags} hunk ./Distribution/Version.hs 240 -dateParser :: GenParser Char st [String] -dateParser - = (try $ do char '-'; d <- word; return ["date="++d]) - <|> (do notFollowedBy anyChar; return []) - hunk ./Distribution/Package.hs 259 - ver <- parseVersionRange -- XXX Ugly ugly fix, this will - <|> return AnyVersion -- XXX probably break something + ver <- parseVersionRange <|> return AnyVersion hunk ./Distribution/Version.hs 198 -parseVersionRange = try (do reservedOp "<" +parseVersionRange = (do reservedOp "<" hunk ./Distribution/Version.hs 213 - <|> (do reservedOp "-" - reserved "any" - return $ AnyVersion) hunk ./Distribution/Version.hs 381 - -- Version ranges - "Any version" ~: "failed" - ~: (Right $ AnyVersion) - ~=? doVersionRangeParse "-any", - "Any version space" ~: "failed" - ~: (Right $ AnyVersion) - ~=? doVersionRangeParse "- any", addfile ./Distribution/Simple/Clean.hs hunk ./Distribution/Package.hs 53 - main + test hunk ./Distribution/Package.hs 406 -main = runTestTT (TestList hunitTests) +test = runTestTT (TestList hunitTests) hunk ./Distribution/Setup.hs 83 + | CleanCmd -- clean hunk ./Distribution/Setup.hs 123 + "clean" -> noFlags str CleanCmd flags unkFlags hunk ./Distribution/Simple/Clean.hs 1 +{-# OPTIONS -cpp -DDEBUG #-} +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.Clean +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : +-- + +{- Copyright (c) 2003-2004, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.Clean ( + clean +#ifdef DEBUG + ,hunitTests +#endif + ) where + +import Distribution.Simple.Utils (moduleToFilePath, mkLibName) +import Distribution.Package(PackageDescription(..), showPackageId) + +import Control.Monad(when) +import Data.Maybe(catMaybes) +import Data.List(intersperse) +import System.Directory(removeFile) + +#ifdef DEBUG +import HUnit (Test) +#endif + +-- |FIX: Doesn't remove directories created. Perhaps it should just +-- delete the .hi and .o files? Perhaps it should just delete the +-- entire build location recursively? + +clean :: FilePath -- ^Build location + -> PackageDescription + -> IO () +clean buildLoc pkg_descr + = do let modules = (allModules pkg_descr) ++ (mainModules pkg_descr) + removeMeo <- sequence [moduleToFilePath buildLoc m ["o"] | m <- modules] + removeMehi <- sequence [moduleToFilePath buildLoc m ["hi"]| m <- modules] + removeMehs <- sequence [moduleToFilePath buildLoc m ["hs"]| m <- modules] + let lib = mkLibName buildLoc (showPackageId (package pkg_descr)) + let removeMe = lib:(catMaybes (removeMeo ++ removeMehi ++ removeMehs)) + when (not $ null removeMe) + (putStrLn $ "Removing: " ++ (concat (intersperse ", " (map show removeMe)))) + sequence $ map removeFile removeMe + return () + +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ + +#ifdef DEBUG +hunitTests :: [Test] +hunitTests = [] +#endif hunk ./Distribution/Simple/Utils.hs 58 + moduleToFilePath, hunk ./Distribution/Simple.hs 61 +import Distribution.Simple.Clean ( clean ) hunk ./Distribution/Simple.hs 119 + Right (CleanCmd, extra_flags) -> do + no_extra_flags extra_flags + clean buildPref pkg_descr + hunk ./Distribution/TODO 2 +** clean target hunk ./Distribution/Package.hs 185 - do path <- runP f parseFilePath val - return pkg{cSources=path} + do paths <- runP f (parseCommaList parseFilePath) val + return pkg{cSources=paths} hunk ./Distribution/Package.hs 188 - do path <- runP f parseFilePath val - return pkg{includeDirs=path} + do paths <- runP f (parseCommaList parseFilePath) val + return pkg{includeDirs=paths} hunk ./Distribution/Package.hs 191 - do path <- runP f parseFilePath val - return pkg{includes=path} + do paths <- runP f (parseCommaList parseFilePath) val + return pkg{includes=paths} hunk ./Distribution/Package.hs 195 - return pkg{hsSourceDir=head path} + return pkg{hsSourceDir=path} hunk ./Distribution/Package.hs 244 -parseFilePath :: GenParser Char st [FilePath] -parseFilePath - = parseCommaList (many1 (do try word - <|> toStr digit - <|> toStr (oneOf "!@#$%^&*()?>>= return . concat) +parseFilePath :: GenParser Char st FilePath +parseFilePath = liftM concat (many1 ( + do try word + <|> toStr digit + <|> toStr (oneOf "!@#$%^&*()?> GenParser tok st a -anyOf [a] = a -anyOf (h:t) = foldl ((<|>) . try) (try h) t - hunk ./Distribution/Package.hs 245 -parseLicense :: GenParser Char st License -parseLicense = anyOf [string s>>return l | (s,l) <- licenses] - "parseLicense" - hunk ./Distribution/Package.hs 253 +parseLicense :: GenParser Char st License +parseLicense = choice [ try (string s >> return l) | (s,l) <- licenses] + "parseLicense" + hunk ./Distribution/Package.hs 290 -testPkgDesc = "-- Required\nName: Cabal\nVersion: 0.1.1.1.1-rain\nLicense: LGPL\nCopyright: Free Text String\n-- Optional - may be in source?\nStability: Free Text String\nBuild-Depends: haskell-src, HUnit>=1.0.0-rain\nModules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig\nMain-Modules: Distribution.Main\nC-Sources: not/even/rain.c, such/small/hands\nHS-Source-Dir: src\nExposed-Modules: Distribution.Void, Foo.Bar\nExtensions: {some known extensions}\nExtra-Libs: libfoo, bar, bang\nInclude-Dirs: your/slightest, look/will\nIncludes: /easily/unclose, /me\nOptions: ghc: -fTH, hugs: +TH" +testPkgDesc = unlines [ + "-- Required", + "Name: Cabal", + "Version: 0.1.1.1.1-rain", + "License: LGPL", + "Copyright: Free Text String", + "-- Optional - may be in source?", + "Stability: Free Text String", + "Build-Depends: haskell-src, HUnit>=1.0.0-rain", + "Modules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig", + "Main-Modules: Distribution.Main", + "C-Sources: not/even/rain.c, such/small/hands", + "HS-Source-Dir: src", + "Exposed-Modules: Distribution.Void, Foo.Bar", + "Extensions: {some known extensions}", + "Extra-Libs: libfoo, bar, bang", + "Include-Dirs: your/slightest, look/will", + "Includes: /easily/unclose, /me", + "Options: ghc: -fTH, hugs: +TH" + ] hunk ./Distribution/Package.hs 64 -import Distribution.Misc(License(..), Dependency(..), Extension) +import Distribution.Misc(License(..), Dependency(..), Extension(..)) hunk ./Distribution/Package.hs 207 - do -- ... - return pkg + do exts <- runP f (parseCommaList parseExtension) val + return pkg{extensions=exts} hunk ./Distribution/Package.hs 266 +parseExtension :: GenParser Char st Extension +parseExtension = choice [ try (string s >> return e) | (s,e) <- extensionsMap ] + "parseExtension" + +-- |Mapping between extensions and their names +extensionsMap = [("OverlappingInstances", OverlappingInstances), + ("TypeSynonymInstances", TypeSynonymInstances), + ("TemplateHaskell", TemplateHaskell)] + hunk ./Distribution/Package.hs 313 - "Extensions: {some known extensions}", + "Extensions: OverlappingInstances, TypeSynonymInstances", hunk ./Distribution/Package.hs 340 - extensions = [], + extensions = [OverlappingInstances, TypeSynonymInstances], hunk ./Distribution/Package.hs 61 +import Data.List(isPrefixOf) hunk ./Distribution/Package.hs 66 -import Distribution.Setup(CompilerFlavor) +import Distribution.Setup(CompilerFlavor(..)) hunk ./Distribution/Package.hs 125 +-- |Add options for a specific compiler. Convenience function. +setPkgOptions :: CompilerFlavor -> [String] -> PackageDescription -> PackageDescription +setPkgOptions c xs desc@PackageDescription{options=opts} + = desc{options=(c,xs):opts} + hunk ./Distribution/Package.hs 215 - parseDescHelp pkg (f@"options", val) = - do -- ... - return pkg + parseDescHelp pkg (f, val) | "options-" `isPrefixOf` f = + let compilers = [("ghc",GHC),("nhc",NHC),("hugs",Hugs)] -- FIXME + in case lookup (drop 8 f) compilers of + Just c -> do xs <- runP f (parseCommaList parseOption) val + return (setPkgOptions c xs pkg) + Nothing -> error $ "Unknown compiler (" ++ drop 8 f ++ ")" hunk ./Distribution/Package.hs 284 +parseOption = many1 (letter <|> digit <|> oneOf "-+/\\._") -- FIXME + hunk ./Distribution/Package.hs 328 - "Options: ghc: -fTH, hugs: +TH" + "Options-ghc: -fTH", + "Options-hugs: +TH" hunk ./Distribution/Package.hs 356 - options = [] + options = [(Hugs,["+TH"]), (GHC,["-fTH"])] -- Note reversed order hunk ./Distribution/Simple/Clean.hs 1 -{-# OPTIONS -cpp -DDEBUG #-} ------------------------------------------------------------------------------ --- | --- Module : Distribution.Simple.Clean --- Copyright : Isaac Jones 2003-2004 --- --- Maintainer : Isaac Jones --- Stability : alpha --- Portability : --- - -{- Copyright (c) 2003-2004, Isaac Jones -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * Neither the name of Isaac Jones nor the names of other - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} - -module Distribution.Simple.Clean ( - clean -#ifdef DEBUG - ,hunitTests -#endif - ) where - -import Distribution.Simple.Utils (moduleToFilePath, mkLibName) -import Distribution.Package(PackageDescription(..), showPackageId) - -import Control.Monad(when) -import Data.Maybe(catMaybes) -import Data.List(intersperse) -import System.Directory(removeFile) - -#ifdef DEBUG -import HUnit (Test) -#endif - --- |FIX: Doesn't remove directories created. Perhaps it should just --- delete the .hi and .o files? Perhaps it should just delete the --- entire build location recursively? - -clean :: FilePath -- ^Build location - -> PackageDescription - -> IO () -clean buildLoc pkg_descr - = do let modules = (allModules pkg_descr) ++ (mainModules pkg_descr) - removeMeo <- sequence [moduleToFilePath buildLoc m ["o"] | m <- modules] - removeMehi <- sequence [moduleToFilePath buildLoc m ["hi"]| m <- modules] - removeMehs <- sequence [moduleToFilePath buildLoc m ["hs"]| m <- modules] - let lib = mkLibName buildLoc (showPackageId (package pkg_descr)) - let removeMe = lib:(catMaybes (removeMeo ++ removeMehi ++ removeMehs)) - when (not $ null removeMe) - (putStrLn $ "Removing: " ++ (concat (intersperse ", " (map show removeMe)))) - sequence $ map removeFile removeMe - return () - --- ------------------------------------------------------------ --- * Testing --- ------------------------------------------------------------ - -#ifdef DEBUG -hunitTests :: [Test] -hunitTests = [] -#endif rmfile ./Distribution/Simple/Clean.hs hunk ./Distribution/ModuleTest.hs 116 + system "make clean" + system "make" hunk ./Distribution/ModuleTest.hs 119 + -- Test clean: hunk ./Distribution/ModuleTest.hs 121 + doesDirectoryExist "dist/build" >>= + assertBool "HUnit build did not create build directory" + assertCmd "./setup clean" "hunit clean" + doesDirectoryExist "dist/build" >>= + assertEqual "HUnit clean did not get rid of build directory" False + + assertCmd "./setup build" "hunit build" hunk ./Distribution/ModuleTest.hs 144 + hunk ./Distribution/ModuleTest.hs 147 - hunk ./Distribution/Simple/Utils.hs 63 - pathJoin + pathJoin, + removeFileRecursive hunk ./Distribution/Simple/Utils.hs 69 +import GHC.IOBase(Exception(..), IOException(..), + IOErrorType(InappropriateType), IOErrorType(..), + ioe_type, throw) hunk ./Distribution/Simple/Utils.hs 73 -import Data.List(inits, nub, intersperse, findIndices) -import Data.Maybe(Maybe, listToMaybe, isNothing, fromJust) - +import Data.List(inits, nub, intersperse, findIndices, partition) +import Data.Maybe(Maybe, listToMaybe, isNothing, fromJust, catMaybes) hunk ./Distribution/Simple/Utils.hs 320 +partitionIO :: (a -> IO Bool) -> [a] -> IO ([a], [a]) +partitionIO f l + = do bools <- sequence $ map f l + let both = zip l bools + return ([x | (x, True) <- both], [y | (y, False) <- both]) + +-- |Remove a list of files; if it encounters a directory, it doesn't +-- remove it, but returns it. Throws everything that removeFile +-- throws except InappropriateType. +removeFiles :: [FilePath] -- ^Files and directories to remove + -> IO [FilePath] + {- ^The ones we were unable to remove because they were of + an inappropriate type (directory) removeFiles -} +removeFiles files + = (sequence $ map rm' files) >>= (return . catMaybes) + where + rm' :: FilePath -> IO (Maybe FilePath) + rm' f = do temp <- try (removeFile f) + case temp of + Left (IOError{ioe_type=InappropriateType}) -> return $ Just f + Left e -> throw $ IOException e -- can't handle, throw. + Right _ -> return Nothing + +-- |Probably follows symlinks, be careful. +removeFileRecursive :: FilePath -> IO () +removeFileRecursive startLoc + = do cont' <- getDirectoryContents startLoc + let cont = filter (\x -> x /= "." && x /= "..") cont' + curDir <- getCurrentDirectory + setCurrentDirectory startLoc + dirs <- removeFiles cont + sequence $ map removeFileRecursive dirs + setCurrentDirectory curDir + removeDirectory startLoc + hunk ./Distribution/Simple.hs 61 -import Distribution.Simple.Clean ( clean ) hunk ./Distribution/Simple.hs 67 -import Distribution.Simple.Utils (die, pathJoin) +import Distribution.Simple.Utils (die, pathJoin, removeFileRecursive) hunk ./Distribution/Simple.hs 120 - clean buildPref pkg_descr + removeFileRecursive buildPref hunk ./Distribution/Misc.hs 46 + ,extensionsToNHCFlag, extensionsToGHCFlag hunk ./Distribution/Misc.hs 54 +import Data.List(intersperse, nub) hunk ./Distribution/Misc.hs 79 + | ForeignFunctionInterface + | NoMonomorphismRestriction + | AllowOverlappingInstances + | AllowUndecidableInstances + | AllowIncoherentInstances + | InlinePhase + | ContextStack + | Arrows + | Generics + | NoImplicitPrelude + | ImplicitParams hunk ./Distribution/Misc.hs 92 +-- |Return the unsupported extensions, and the flags for the supported extensions +extensionsToGHCFlag :: [ Extension ] -> ([Extension], [String]) +extensionsToGHCFlag l + = splitEither $ nub $ map extensionToGHCFlag l + where + extensionToGHCFlag :: Extension -> Either Extension String + extensionToGHCFlag OverlappingInstances = Right "-fallow-overlapping-instances" + extensionToGHCFlag TypeSynonymInstances = Right "-fglasgow-exts" + extensionToGHCFlag TemplateHaskell = Right "-fth" + extensionToGHCFlag ForeignFunctionInterface = Right "-ffi" + extensionToGHCFlag NoMonomorphismRestriction = Right "-fno-monomorphism-restriction" + extensionToGHCFlag AllowOverlappingInstances = Right "-fallow-overlapping-instances" + extensionToGHCFlag AllowUndecidableInstances = Right "-fallow-undecidable-instances" + extensionToGHCFlag AllowIncoherentInstances = Right "-fallow- incoherent-instances" + extensionToGHCFlag InlinePhase = Right "-finline-phase" + extensionToGHCFlag ContextStack = Right "-fcontext-stack" + extensionToGHCFlag Arrows = Right "-farrows" + extensionToGHCFlag Generics = Right "-fgenerics" + extensionToGHCFlag NoImplicitPrelude = Right "-fno-implicit-prelude" + extensionToGHCFlag ImplicitParams = Right "-fimplicit- params" + +-- |Return the unsupported extensions, and the flags for the supported extensions +extensionsToNHCFlag :: [ Extension ] -> ([Extension], [String]) +extensionsToNHCFlag e = (e, []) -- ToDo + +splitEither :: [Either a b] -> ([a], [b]) +splitEither l = ([a | Left a <- l], [b | Right b <- l]) + hunk ./Distribution/Simple/Build.hs 50 -import Distribution.Misc (Extension(..)) +import Distribution.Misc (Extension(..), extensionsToNHCFlag, extensionsToGHCFlag) hunk ./Distribution/Simple/Build.hs 62 -import Data.List(intersperse, nub) +import Data.List(intersperse) hunk ./Distribution/Simple/Build.hs 88 + let (unsupported, flags) = extensionsToNHCFlag (extensions pkg_descr) + when (not $ null unsupported) + (die $ "Unsupported extension for NHC: " + ++ (concat $ intersperse ", " (map show unsupported))) hunk ./Distribution/Simple/Build.hs 94 - ++ extensionsToNHCFlag (extensions pkg_descr) + ++ flags hunk ./Distribution/Simple/Build.hs 119 - [ - "--make", "-odir " ++ pref, "-hidir " ++ pref, - "-package-name", showPackageId (package pkg_descr) - ] - ++ extensionsToGHCFlag (extensions pkg_descr) - ++ [ opt | (GHC,opts) <- options pkg_descr, opt <- opts ] - ++ [ "-i" ++ pref ] - ++ [ "-package " ++ showPackageId pkg | pkg <- packageDeps lbi ] - ++ allModules pkg_descr + let (unsupported, flags) = extensionsToGHCFlag (extensions pkg_descr) + in if null unsupported + then [ + "--make", "-odir " ++ pref, "-hidir " ++ pref, + "-package-name", showPackageId (package pkg_descr) + ] + ++ flags + ++ [ opt | (GHC,opts) <- options pkg_descr, opt <- opts ] + ++ [ "-i" ++ pref ] + ++ [ "-package " ++ showPackageId pkg | pkg <- packageDeps lbi ] + ++ allModules pkg_descr + else error $ "Unsupported extension for GHC: " + ++ (concat $ intersperse ", " (map show unsupported)) hunk ./Distribution/Simple/Build.hs 133 -extensionsToGHCFlag :: [ Extension ] -> [String] -extensionsToGHCFlag = nub . map extensionToGHCFlag - where - extensionToGHCFlag OverlappingInstances = "-fallow-overlapping-instances" - extensionToGHCFlag TypeSynonymInstances = "-fglasgow-exts" - extensionToGHCFlag TemplateHaskell = "-fth" - -extensionsToNHCFlag :: [ Extension ] -> [String] -extensionsToNHCFlag _ = [] -- ToDo - hunk ./Distribution/TODO 1 -* misc -** clean target +* priorities +** Change mainModules to [(String, String)] for (Module, executable + name) +** Build executables for mainModules +** Extensions +- add as many as possible +- complain if their use makes the code non-portable + hunk ./Distribution/TODO 10 -** Possibly create a (native?) zlib library? hunk ./Distribution/TODO 16 -** integrate hscpp, use it for preprocessing step. hunk ./Distribution/TODO 18 +** add "clean" to doc? hunk ./Distribution/TODO 20 +* ideas +** Possibly create a (native?) zlib library? +** integrate hscpp, use it for preprocessing step. +** sign flag? + + hunk ./Distribution/TODO 31 -* Code +* Misc hunk ./Distribution/TODO 35 -** Extensions -> flags interface (Misc.hs) - -** Change mainModules to [(String, String)] for (Module, executable - name) -** Build executables for mainModules - -** parser for Setup.description - hunk ./Distribution/TODO 41 -** sign flag? - hunk ./Distribution/Misc.hs 54 -import Data.List(intersperse, nub) +import Data.List(nub) hunk ./Distribution/Misc.hs 73 --- package might employ. FIX: Most extensions not yet implemented. +-- package might employ. hunk ./Distribution/Misc.hs 77 + | RecursiveDo + | ParallelListComp + | MultiParamTypeClasses + | NoMonomorphismRestriction + | FunctionalDependencies + | RankTwoTypes + | PolymorphicComponents + | ExistentialQuantification + | PatternTypeAnnotations + | ImplicitParams + | FlexibleContexts + | FlexibleInstances + hunk ./Distribution/Misc.hs 93 - | NoMonomorphismRestriction hunk ./Distribution/Misc.hs 101 - | ImplicitParams + + | ExtensibleRecords + | RestrictedTypeSynonyms + | HereDocuments + | HoodDebugging + | UnsafeOverlappingInstances hunk ./Distribution/Misc.hs 109 --- |Return the unsupported extensions, and the flags for the supported extensions -extensionsToGHCFlag :: [ Extension ] -> ([Extension], [String]) +-- |GHC: Return the unsupported extensions, and the flags for the supported extensions +extensionsToGHCFlag :: [ Extension ] -> ([Extension], [Opt]) hunk ./Distribution/Misc.hs 115 - extensionToGHCFlag OverlappingInstances = Right "-fallow-overlapping-instances" - extensionToGHCFlag TypeSynonymInstances = Right "-fglasgow-exts" - extensionToGHCFlag TemplateHaskell = Right "-fth" - extensionToGHCFlag ForeignFunctionInterface = Right "-ffi" - extensionToGHCFlag NoMonomorphismRestriction = Right "-fno-monomorphism-restriction" - extensionToGHCFlag AllowOverlappingInstances = Right "-fallow-overlapping-instances" - extensionToGHCFlag AllowUndecidableInstances = Right "-fallow-undecidable-instances" - extensionToGHCFlag AllowIncoherentInstances = Right "-fallow- incoherent-instances" - extensionToGHCFlag InlinePhase = Right "-finline-phase" - extensionToGHCFlag ContextStack = Right "-fcontext-stack" - extensionToGHCFlag Arrows = Right "-farrows" - extensionToGHCFlag Generics = Right "-fgenerics" - extensionToGHCFlag NoImplicitPrelude = Right "-fno-implicit-prelude" - extensionToGHCFlag ImplicitParams = Right "-fimplicit- params" + extensionToGHCFlag OverlappingInstances = Right "-fallow-overlapping-instances" + extensionToGHCFlag TypeSynonymInstances = Right "-fglasgow-exts" + extensionToGHCFlag TemplateHaskell = Right "-fth" + extensionToGHCFlag ForeignFunctionInterface = Right "-ffi" + extensionToGHCFlag NoMonomorphismRestriction = Right "-fno-monomorphism-restriction" + extensionToGHCFlag AllowOverlappingInstances = Right "-fallow-overlapping-instances" + extensionToGHCFlag AllowUndecidableInstances = Right "-fallow-undecidable-instances" + extensionToGHCFlag AllowIncoherentInstances = Right "-fallow- incoherent-instances" + extensionToGHCFlag InlinePhase = Right "-finline-phase" + extensionToGHCFlag ContextStack = Right "-fcontext-stack" + extensionToGHCFlag Arrows = Right "-farrows" + extensionToGHCFlag Generics = Right "-fgenerics" + extensionToGHCFlag NoImplicitPrelude = Right "-fno-implicit-prelude" + extensionToGHCFlag ImplicitParams = Right "-fimplicit-params" hunk ./Distribution/Misc.hs 130 --- |Return the unsupported extensions, and the flags for the supported extensions -extensionsToNHCFlag :: [ Extension ] -> ([Extension], [String]) -extensionsToNHCFlag e = (e, []) -- ToDo + extensionToGHCFlag RecursiveDo = Right "-fglasgow-exts" + extensionToGHCFlag ParallelListComp = Right "-fglasgow-exts" + extensionToGHCFlag MultiParamTypeClasses = Right "-fglasgow-exts" + extensionToGHCFlag FunctionalDependencies = Right "-fglasgow-exts" + extensionToGHCFlag RankTwoTypes = Right "-fglasgow-exts" + extensionToGHCFlag PolymorphicComponents = Right "-fglasgow-exts" + extensionToGHCFlag ExistentialQuantification = Right "-fglasgow-exts" + extensionToGHCFlag PatternTypeAnnotations = Right "-fglasgow-exts" + extensionToGHCFlag FlexibleContexts = Right "-fglasgow-exts" + extensionToGHCFlag FlexibleInstances = Right "-fglasgow-exts" hunk ./Distribution/Misc.hs 141 + extensionToGHCFlag e@ExtensibleRecords = Left e + extensionToGHCFlag e@RestrictedTypeSynonyms = Left e + extensionToGHCFlag e@HereDocuments = Left e + extensionToGHCFlag e@HoodDebugging = Left e + extensionToGHCFlag e@UnsafeOverlappingInstances = Left e + +-- |NHC: Return the unsupported extensions, and the flags for the supported extensions +extensionsToNHCFlag :: [ Extension ] -> ([Extension], [Opt]) +extensionsToNHCFlag l + = splitEither $ nub $ map extensionToNHCFlag l + where + extensionToNHCFlag NoMonomorphismRestriction = Right "" -- not implemented in NHC + extensionToNHCFlag ForeignFunctionInterface = Right "" + extensionToNHCFlag HoodDebugging = Right "" + extensionToNHCFlag e = Left e + +-- |Hugs: Return the unsupported extensions, and the flags for the supported extensions +extensionsToHugsFlag :: [ Extension ] -> ([Extension], [Opt]) +extensionsToHugsFlag l + = splitEither $ nub $ map extensionToHugsFlag l + where + extensionToHugsFlag OverlappingInstances = Right "+o" + extensionToHugsFlag UnsafeOverlappingInstances = Right "+O" + extensionToHugsFlag HereDocuments = Right "+H" + extensionToHugsFlag RecursiveDo = Right "-98" + extensionToHugsFlag ParallelListComp = Right "-98" + extensionToHugsFlag MultiParamTypeClasses = Right "-98" + extensionToHugsFlag FunctionalDependencies = Right "-98" + extensionToHugsFlag RankTwoTypes = Right "-98" + extensionToHugsFlag PolymorphicComponents = Right "-98" + extensionToHugsFlag ExistentialQuantification = Right "-98" + extensionToHugsFlag PatternTypeAnnotations = Right "-98" + extensionToHugsFlag ImplicitParams = Right "-98" + extensionToHugsFlag ExtensibleRecords = Right "-98" + extensionToHugsFlag RestrictedTypeSynonyms = Right "-98" + extensionToHugsFlag HoodDebugging = Right "-98" + extensionToHugsFlag FlexibleContexts = Right "-98" + extensionToHugsFlag FlexibleInstances = Right "-98" + extensionToHugsFlag e = Left e + hunk ./Distribution/Package.hs 103 - mainModules :: [ String ], + mainModules :: [ (String, String) ], hunk ./Distribution/Package.hs 204 - do xs <- runP f (parseCommaList moduleName) val + do xs <- runP f (parseCommaList mainModule) val hunk ./Distribution/Package.hs 245 +mainModule = do filename <- word + skipMany parseWhite + char ':' + skipMany parseWhite + modname <- moduleName + return (filename,modname) + hunk ./Distribution/Package.hs 327 - "Main-Modules: Distribution.Main", + "Main-Modules: cabal: Distribution.Main", hunk ./Distribution/Package.hs 355 - mainModules = ["Distribution.Main"], + mainModules = [("cabal","Distribution.Main")], hunk ./Distribution/Package.hs 62 +import Data.Maybe(fromMaybe) hunk ./Distribution/Package.hs 100 - - -- the following are required by the simple build infrastructure only: - buildDepends :: [ Dependency ], - allModules :: [ String ], - mainModules :: [ (String, String) ], - cSources :: [ FilePath ], - hsSourceDir :: FilePath, - exposedModules :: [ String ], - extensions :: [ Extension ], - extraLibs :: [ String ], - includeDirs :: [ FilePath ], - includes :: [ FilePath ], - options :: [ (CompilerFlavor, [String]) ] + library :: Maybe BuildInfo, + executables :: [(String,BuildInfo)] hunk ./Distribution/Package.hs 105 +data BuildInfo = BuildInfo { + buildDepends :: [Dependency], + modules :: [String], + exposedModules :: [String], + cSources :: [FilePath], + hsSourceDir :: FilePath, + extensions :: [Extension], + extraLibs :: [String], + includeDirs :: [FilePath], + includes :: [FilePath], + options :: [(CompilerFlavor,[String])] + } + deriving (Show,Read,Eq) + hunk ./Distribution/Package.hs 129 --- |Add options for a specific compiler. Convenience function. -setPkgOptions :: CompilerFlavor -> [String] -> PackageDescription -> PackageDescription -setPkgOptions c xs desc@PackageDescription{options=opts} - = desc{options=(c,xs):opts} - hunk ./Distribution/Package.hs 136 - buildDepends = [], - allModules = [], - mainModules = [], - cSources = [], - hsSourceDir = ".", -- FIX: FileUtils.currentDir - exposedModules = [], - extensions = [], - extraLibs = [], - includeDirs = [], - includes = [], - options = [] + library = Nothing, + executables = [] hunk ./Distribution/Package.hs 140 +emptyBuildInfo :: BuildInfo +emptyBuildInfo = BuildInfo { + buildDepends = [], + modules = [], + exposedModules = [], -- Only used for libs + cSources = [], + hsSourceDir = ".", -- FIX: FileUtils.currentDir + extensions = [], + extraLibs = [], + includeDirs = [], + includes = [], + options = [] + } + +-- |Add options for a specific compiler. Convenience function. +setOptions :: CompilerFlavor -> [String] -> BuildInfo -> BuildInfo +setOptions c xs desc@BuildInfo{options=opts} + = desc{options=(c,xs):opts} hunk ./Distribution/Package.hs 178 -parseDescription inp = foldM parseDescHelp emptyPackageDescription (splitLines inp) - where -- Required fields - parseDescHelp pkg (f@"name", val) = return (setPkgName val pkg) - parseDescHelp pkg (f@"version", val) = +parseDescription inp = do let (st:sts) = splitStanzas inp + pkg <- foldM parseBasicStanza emptyPackageDescription st + exes <- mapM parseExecutableStanza sts + return pkg{executables=exes} + where -- The basic stanza, with library building info + parseBasicStanza pkg (f@"name", val) = return (setPkgName val pkg) + parseBasicStanza pkg (f@"version", val) = hunk ./Distribution/Package.hs 187 - parseDescHelp pkg (f@"copyright", val) = return pkg{copyright=val} - parseDescHelp pkg (f@"license", val) = + parseBasicStanza pkg (f@"copyright", val) = return pkg{copyright=val} + parseBasicStanza pkg (f@"license", val) = hunk ./Distribution/Package.hs 191 - -- Misc. - parseDescHelp pkg (f@"maintainer", val) = return pkg{maintainer=val} - parseDescHelp pkg (f@"stability", val) = return pkg{stability=val} - parseDescHelp pkg (f@"extra-libs", val) = + parseBasicStanza pkg (f@"maintainer", val) = return pkg{maintainer=val} + parseBasicStanza pkg (f@"stability", val) = return pkg{stability=val} + parseBasicStanza pkg (field, val) = + do let lib = fromMaybe emptyBuildInfo (library pkg) + lib' <- parseExeHelp lib (field, val) + return pkg{library=Just lib'} + -- Stanzas for executables + parseExecutableStanza (("executable",exeName):st) = + do binfo <- foldM parseExeHelp emptyBuildInfo st + return (exeName,binfo) + parseExeHelp binfo (f@"extra-libs", val) = hunk ./Distribution/Package.hs 203 - return pkg{extraLibs=xs} - parseDescHelp pkg (f@"build-depends", val) = + return binfo{extraLibs=xs} + parseExeHelp binfo (f@"build-depends", val) = hunk ./Distribution/Package.hs 206 - return pkg{buildDepends=xs} + return binfo{buildDepends=xs} hunk ./Distribution/Package.hs 208 - parseDescHelp pkg (f@"c-sources", val) = + parseExeHelp binfo (f@"c-sources", val) = hunk ./Distribution/Package.hs 210 - return pkg{cSources=paths} - parseDescHelp pkg (f@"include-dirs", val) = + return binfo{cSources=paths} + parseExeHelp binfo (f@"include-dirs", val) = hunk ./Distribution/Package.hs 213 - return pkg{includeDirs=paths} - parseDescHelp pkg (f@"includes", val) = + return binfo{includeDirs=paths} + parseExeHelp binfo (f@"includes", val) = hunk ./Distribution/Package.hs 216 - return pkg{includes=paths} - parseDescHelp pkg (f@"hs-source-dir", val) = + return binfo{includes=paths} + parseExeHelp binfo (f@"hs-source-dir", val) = hunk ./Distribution/Package.hs 219 - return pkg{hsSourceDir=path} + return binfo{hsSourceDir=path} hunk ./Distribution/Package.hs 221 - parseDescHelp pkg (f@"main-modules", val) = - do xs <- runP f (parseCommaList mainModule) val - return pkg{mainModules=xs} - parseDescHelp pkg (f@"exposed-modules", val) = + parseExeHelp binfo (f@"modules", val) = hunk ./Distribution/Package.hs 223 - return pkg{exposedModules=xs} - parseDescHelp pkg (f@"modules", val) = + return binfo{modules=xs} + parseExeHelp binfo (f@"exposed-modules", val) = hunk ./Distribution/Package.hs 226 - return pkg{allModules=xs} - parseDescHelp pkg (f@"extensions", val) = + return binfo{exposedModules=xs} + parseExeHelp binfo (f@"extensions", val) = hunk ./Distribution/Package.hs 229 - return pkg{extensions=exts} - parseDescHelp pkg (f, val) | "options-" `isPrefixOf` f = + return binfo{extensions=exts} + parseExeHelp binfo (f, val) | "options-" `isPrefixOf` f = hunk ./Distribution/Package.hs 234 - return (setPkgOptions c xs pkg) + return (setOptions c xs binfo) hunk ./Distribution/Package.hs 236 - parseDescHelp pkg (field, val) = error $ "Unknown field :: " ++ field + parseExeHelp binfo (field, val) = error $ "Unknown field :: " ++ field hunk ./Distribution/Package.hs 242 -splitLines :: String -> [(String,String)] -splitLines = merge . filter validLine . lines +type Stanza = [(String,String)] + +-- |Split a string into blank line-separated stanzas of +-- "Field: value" groups +splitStanzas :: String -> [Stanza] +splitStanzas = map merge . groupStanzas . filter validLine . lines hunk ./Distribution/Package.hs 249 - "" -> False -- Empty line hunk ./Distribution/Package.hs 251 + groupStanzas [] = [] + groupStanzas xs = let (ys,zs) = break (all isSpace) xs + in ys : groupStanzas (dropWhile (all isSpace) zs) hunk ./Distribution/Package.hs 348 - "Main-Modules: cabal: Distribution.Main", hunk ./Distribution/Package.hs 356 - "Options-hugs: +TH" + "Options-hugs: +TH", + "", + "-- Next is an executable", + "Executable: somescript", + "Modules: Foo1, Util, Main", + "HS-Source-Dir: scripts", + "Extensions: OverlappingInstances" hunk ./Distribution/Package.hs 373 - buildDepends = [Dependency "haskell-src" AnyVersion, - Dependency "HUnit" - (UnionVersionRanges (ThisVersion (Version [1,0,0] ["rain"])) - (LaterVersion (Version [1,0,0] ["rain"])))], hunk ./Distribution/Package.hs 374 - allModules = ["Distribution.Package","Distribution.Version", - "Distribution.Simple.GHCPackageConfig"], + library = Just $ BuildInfo { + buildDepends = [Dependency "haskell-src" AnyVersion, + Dependency "HUnit" + (UnionVersionRanges (ThisVersion (Version [1,0,0] ["rain"])) + (LaterVersion (Version [1,0,0] ["rain"])))], hunk ./Distribution/Package.hs 380 - mainModules = [("cabal","Distribution.Main")], - cSources = ["not/even/rain.c", "such/small/hands"], - hsSourceDir = "src", - exposedModules = ["Distribution.Void", "Foo.Bar"], - extensions = [OverlappingInstances, TypeSynonymInstances], - extraLibs = ["libfoo", "bar", "bang"], - includeDirs = ["your/slightest", "look/will"], - includes = ["/easily/unclose", "/me"], - options = [(Hugs,["+TH"]), (GHC,["-fTH"])] -- Note reversed order + modules = ["Distribution.Package","Distribution.Version", + "Distribution.Simple.GHCPackageConfig"], + + cSources = ["not/even/rain.c", "such/small/hands"], + hsSourceDir = "src", + exposedModules = ["Distribution.Void", "Foo.Bar"], + extensions = [OverlappingInstances, TypeSynonymInstances], + extraLibs = ["libfoo", "bar", "bang"], + includeDirs = ["your/slightest", "look/will"], + includes = ["/easily/unclose", "/me"], + options = [(Hugs,["+TH"]), (GHC,["-fTH"])] -- Note reversed order + }, + executables = [("somescript", emptyBuildInfo{ + modules = ["Foo1","Util","Main"], + hsSourceDir = "scripts", + extensions = [OverlappingInstances] + })] hunk ./Distribution/Package.hs 461 + TestCase $ assertRight "no library" Nothing + (library `liftM` parseDescription "Name: foo\nVersion: 1\nLicense: GPL\nMaintainer: someone\n\nExecutable: script\n"), hunk ./Distribution/Package.hs 49 + BuildInfo(..), hunk ./Distribution/Package.hs 167 --- |Parse the given package file. FIX: don't use read / show. +-- |Parse the given package file. hunk ./Distribution/Package.hs 169 -parsePackageDesc p - = openFile p ReadMode >>= hGetContents >>= return . read +parsePackageDesc p = do h <- openFile p ReadMode + str <- hGetContents h + case parseDescription str of + Left e -> error (show e) -- FIXME + Right x -> return x hunk ./Distribution/Simple/Build.hs 52 -import Distribution.Package (PackageDescription(..), showPackageId) +import Distribution.Package (PackageDescription(..), BuildInfo(..), showPackageId) hunk ./Distribution/Simple/Build.hs 88 - let (unsupported, flags) = extensionsToNHCFlag (extensions pkg_descr) + let (unsupported, flags) = extensionsToNHCFlag (maybe [] extensions (library pkg_descr)) hunk ./Distribution/Simple/Build.hs 95 - ++ [ opt | (NHC,opts) <- options pkg_descr, opt <- opts ] - ++ allModules pkg_descr) + ++ [ opt | (NHC,opts) <- maybe [] options (library pkg_descr), + opt <- opts ] + ++ maybe [] modules (library pkg_descr)) hunk ./Distribution/Simple/Build.hs 110 - when (not (null (cSources pkg_descr))) $ - rawSystemExit (compilerPath (compiler lbi)) (cSources pkg_descr) + when (not (null (maybe [] cSources (library pkg_descr)))) $ + rawSystemExit (compilerPath (compiler lbi)) (maybe [] cSources (library pkg_descr)) hunk ./Distribution/Simple/Build.hs 114 - let objs = map (++objsuffix) (map dotToSep (allModules pkg_descr)) + let objs = map (++objsuffix) (map dotToSep (maybe [] modules (library pkg_descr))) hunk ./Distribution/Simple/Build.hs 120 - let (unsupported, flags) = extensionsToGHCFlag (extensions pkg_descr) + let (unsupported, flags) = extensionsToGHCFlag (maybe [] extensions (library pkg_descr)) hunk ./Distribution/Simple/Build.hs 127 - ++ [ opt | (GHC,opts) <- options pkg_descr, opt <- opts ] + ++ [ opt | (GHC,opts) <- maybe [] options (library pkg_descr), + opt <- opts ] hunk ./Distribution/Simple/Build.hs 131 - ++ allModules pkg_descr + ++ maybe [] modules (library pkg_descr) hunk ./Distribution/Simple/Build.hs 154 - putStrLn (hsSourceDir pkg_descr) - moveSources (hsSourceDir pkg_descr) pref - (allModules pkg_descr) (mainModules pkg_descr) - ["hs","lhs"] + case library pkg_descr of + Just lib -> moveSources (hsSourceDir lib) pref (modules lib) ["hs","lhs"] + Nothing -> return () hunk ./Distribution/Simple/Configure.hs 56 - PackageIdentifier(..) + PackageIdentifier(..), BuildInfo(..) hunk ./Distribution/Simple/Configure.hs 114 + let lib = library pkg_descr hunk ./Distribution/Simple/Configure.hs 127 - packageDeps=map buildDepToDep (buildDepends pkg_descr)} + packageDeps=map buildDepToDep (maybe [] buildDepends lib)} hunk ./Distribution/Simple/GHCPackageConfig.hs 21 -import Distribution.Package (PackageDescription(..), showPackageId) +import Distribution.Package (PackageDescription(..), BuildInfo(..), showPackageId) hunk ./Distribution/Simple/GHCPackageConfig.hs 47 - extra_libraries = extraLibs pkg_descr, - include_dirs = includeDirs pkg_descr, - c_includes = includes pkg_descr, + extra_libraries = maybe [] extraLibs (library pkg_descr), + include_dirs = maybe [] includeDirs (library pkg_descr), + c_includes = maybe [] includes (library pkg_descr), hunk ./Distribution/Simple/Install.hs 53 -import Distribution.Package (PackageDescription(..), showPackageId) +import Distribution.Package (PackageDescription(..), BuildInfo(..), showPackageId) hunk ./Distribution/Simple/Install.hs 88 - = do moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) ["hi"] + = do moveSources buildPref pref (maybe [] modules (library pkg_descr)) ["hi"] hunk ./Distribution/Simple/Install.hs 97 - = moveSources buildPref pref (allModules pkg_descr) (mainModules pkg_descr) ["lhs", "hs"] + = moveSources buildPref pref (maybe [] modules (library pkg_descr)) ["lhs", "hs"] hunk ./Distribution/Simple/SrcDist.hs 50 -import Distribution.Package(PackageDescription(..), showPackageId) +import Distribution.Package(PackageDescription(..), BuildInfo(..), showPackageId) hunk ./Distribution/Simple/SrcDist.hs 67 -sdist tmpDir targetPref - pkg_descr@PackageDescription{allModules=mods, - mainModules=mainMods, - hsSourceDir=srcDir - } _ - = do +sdist tmpDir targetPref pkg_descr _ = do hunk ./Distribution/Simple/SrcDist.hs 70 - let tmpLoc1 = pathJoin [tmpDir, nameVersion pkg_descr, srcDir] - let tmpLoc2 = pathJoin [tmpDir, nameVersion pkg_descr] hunk ./Distribution/Simple/SrcDist.hs 71 - moveSources srcDir tmpLoc1 mods mainMods ["lhs", "hs"] - moveSources "" tmpLoc2 ["Setup"] [] ["lhs", "hs"] + case library pkg_descr of + Just lib -> let srcDir = hsSourceDir lib + tmpLoc1 = pathJoin [tmpDir, nameVersion pkg_descr, srcDir] + in moveSources srcDir tmpLoc1 (modules lib) ["lhs", "hs"] + Nothing -> return () + let tmpLoc2 = pathJoin [tmpDir, nameVersion pkg_descr] + moveSources "" tmpLoc2 ["Setup"] ["lhs", "hs"] hunk ./Distribution/Simple/Utils.hs 278 - -> [String] -- ^Main modules hunk ./Distribution/Simple/Utils.hs 280 -moveSources pref _targetDir sources mains searchSuffixes +moveSources pref _targetDir sources searchSuffixes hunk ./Distribution/Simple/Utils.hs 284 - sourceLocs <- sequence $ map moduleToFPErr (sources ++ mains) + sourceLocs <- sequence $ map moduleToFPErr sources hunk ./test/HUnit-1.0/Setup.description 1 -PackageDescription {package = PackageIdentifier - {pkgName = "HUnit", - pkgVersion = Version {versionBranch = [1,0], - versionTags = []}}, - license = AllRightsReserved, - copyright = "", - maintainer = "", - stability = "", - buildDepends = [Dependency "haskell-src" AnyVersion], - allModules = ["HUnitText","HUnit","HUnitLang","HUnitTestBase", - "Terminal","HUnitBase"], - mainModules = [], - cSources = [], - hsSourceDir = "src", - exposedModules = ["HUnit"], - extensions = [], - extraLibs = [], - includeDirs = [], - includes = [], - options = [] -} +Name: HUnit +Version: 1.0 +License: AllRightsReserved +Build-Depends: haskell-src +Modules: HUnitText, HUnit, HUnitLang, HUnitTestBase, Terminal, HUnitBase +Exposed-Modules: HUnit +HS-Source-Dir: src move ./test/A/Setup.hs ./test/A/Setup.lhs hunk ./Distribution/ModuleTest.hs 134 - TestLabel "configure GHC, sdist" $ TestCase $ + TestLabel "package A: configure GHC, sdist" $ TestCase $ hunk ./Distribution/ModuleTest.hs 138 - dirE1 <- doesDirectoryExist ",tmp" - when dirE1 (system "rm -r ,tmp">>return()) - dirE2 <- doesDirectoryExist "dist" - when dirE2 (system "rm -r dist">>return()) + system "make clean" + system "make" hunk ./Distribution/ModuleTest.hs 153 - TestLabel "GHC and install-prefix" $ TestCase $ -- (uses above config) + TestLabel "package A: GHC and install-prefix" $ TestCase $ -- (uses above config) hunk ./Distribution/TODO 2 +** Extension +- constructorless data-types hunk ./Makefile 55 -tests: moduleTest +tests: moduleTest clean + cd test/A && make clean + cd test/HUnit-1.0 && make clean hunk ./Makefile 59 + cd test/HUnit-1.0 && make hunk ./test/A/Makefile 2 - ghc -Wall --make -i../../:/usr/local/src/HUnit-1.0 Setup.hs -o setup + ghc -Wall --make -i../../:/usr/local/src/HUnit-1.0 Setup.lhs -o setup hunk ./test/A/Makefile 5 - rm -rf ,tmp dist + rm -rf ,tmp dist ,tmp2 hunk ./test/A/Setup.lhs 1 -module Main where +#!/usr/bin/runhugs hunk ./test/A/Setup.lhs 3 -import Distribution.Simple +> module Main where hunk ./test/A/Setup.lhs 5 -pkg_descr = emptyPackageDescription { - package = PackageIdentifier "test" (Version [1,0] []), - allModules = ["A", "B.A"], - exposedModules = ["A"] - } +> import Distribution.Simple hunk ./test/A/Setup.lhs 7 -main = defaultMainNoRead pkg_descr +> main :: IO () +> main = defaultMain hunk ./Distribution/Simple/Configure.hs 61 -import Distribution.Version (Version(..)) +import Distribution.Version (Version(..), VersionRange(..)) hunk ./Distribution/Simple/Configure.hs 132 + +-- if they specify the exact version, use that: +buildDepToDep (Dependency s (ThisVersion v)) = PackageIdentifier s v + +-- otherwise, calculate it from the installed module. FIX: not +-- implemented because HC-PKG doesn't yet do this. hunk ./Makefile 32 + -rm -f hunit-stamp hunitInstall-stamp hunk ./Setup.description 1 -PackageDescription {package = PackageIdentifier {pkgName = "Cabal", - pkgVersion = Version {versionBranch = [0,1], - versionTags = []}}, - license = AllRightsReserved, - copyright = "", - maintainer = "", - stability = "", - buildDepends = [Dependency "haskell-src" AnyVersion, - Dependency "HUnit-1.0" AnyVersion], +Name: Cabal +Version: 0.1 +License: AllRightsReserved +build-depends: haskell-src, HUnit==1.0 +Modules: Distribution.Package, Distribution.Version, + Distribution.Misc, Distribution.Setup, + Distribution.InstalledPackageInfo, + Distribution.Make, Distribution.Simple, + Distribution.Simple.Build, + Distribution.Simple.Install, Distribution.Simple.SrcDist, + Distribution.Simple.Configure, Distribution.Simple.Utils, + Distribution.Simple.Register, + Distribution.Simple.GHCPackageConfig, + Distribution.GetOpt hunk ./Setup.description 16 - allModules = ["Distribution.Package","Distribution.Version", - "Distribution.Misc","Distribution.Setup", - "Distribution.InstalledPackageInfo", - "Distribution.Make","Distribution.Simple", - "Distribution.Simple.Build", - "Distribution.Simple.Install","Distribution.Simple.SrcDist", - "Distribution.Simple.Configure","Distribution.Simple.Utils", - "Distribution.Simple.Register", - "Distribution.Simple.GHCPackageConfig", - "Distribution.GetOpt"], - - mainModules = [], - cSources = [], - hsSourceDir = ".", - exposedModules = [], - extensions = [], - extraLibs = [], - includeDirs = [], - includes = [], - options = [] -} - hunk ./Setup.lhs 7 -> pkg_descr = emptyPackageDescription { -> package = PackageIdentifier "Cabal" (Version [0,1] []), -> allModules = ["Distribution.Package", -> "Distribution.Version", -> "Distribution.Misc", -> "Distribution.Setup", -> "Distribution.InstalledPackageInfo", -> "Distribution.Make", -> -> "Distribution.Simple", -> "Distribution.Simple.Build", -> "Distribution.Simple.Install", -> "Distribution.Simple.SrcDist", -> "Distribution.Simple.Configure", -> "Distribution.Simple.Utils", -> "Distribution.Simple.Register", -> "Distribution.Simple.GHCPackageConfig", -> "Distribution.GetOpt"], -> -> buildDepends = [Dependency "haskell-src" AnyVersion, -> Dependency "HUnit-1.0" AnyVersion -> ] -> } - hunk ./Distribution/ModuleTest.hs 115 - system $ "ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit-1.0" + system $ "ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit" hunk ./Distribution/ModuleTest.hs 129 - assertCmd ("ghc -package-conf " ++ pkgConf ++ " -package HUnit-1.0 HUnitTester.hs -o ./hunitTest") "compile w/ hunit" + assertCmd ("ghc -package-conf " ++ pkgConf ++ " -package HUnit HUnitTester.hs -o ./hunitTest") "compile w/ hunit" hunk ./Distribution/ModuleTest.hs 131 - assertCmd ("ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit-1.0") "package remove" + assertCmd ("ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit") "package remove" hunk ./Distribution/ModuleTest.hs 136 - system $ "ghc-pkg -r test-1.0 --config-file=" ++ pkgConf + system $ "ghc-pkg -r test --config-file=" ++ pkgConf hunk ./Distribution/Simple/Build.hs 52 -import Distribution.Package (PackageDescription(..), BuildInfo(..), showPackageId) +import Distribution.Package (PackageDescription(..), BuildInfo(..), showPackageId, pkgName) hunk ./Distribution/Simple/Build.hs 124 - "-package-name", showPackageId (package pkg_descr) + "-package-name", pkgName (package pkg_descr) hunk ./Distribution/Simple/Build.hs 130 - ++ [ "-package " ++ showPackageId pkg | pkg <- packageDeps lbi ] + ++ [ "-package " ++ pkgName pkg | pkg <- packageDeps lbi ] hunk ./Distribution/Simple/GHCPackageConfig.hs 21 -import Distribution.Package (PackageDescription(..), BuildInfo(..), showPackageId) +import Distribution.Package (PackageDescription(..), BuildInfo(..), pkgName, showPackageId) hunk ./Distribution/Simple/GHCPackageConfig.hs 46 - hs_libraries = ["HS"++pkg_name], + hs_libraries = ["HS"++(showPackageId (package pkg_descr))], hunk ./Distribution/Simple/GHCPackageConfig.hs 50 - package_deps = map showPackageId (packageDeps lbi) + package_deps = map pkgName (packageDeps lbi) hunk ./Distribution/Simple/GHCPackageConfig.hs 53 - pkg_name = showPackageId (package pkg_descr) + pkg_name = pkgName (package pkg_descr) hunk ./Distribution/Simple/Register.hs 55 -import Distribution.Package (PackageDescription, package, showPackageId) +import Distribution.Package (PackageDescription, package, pkgName) hunk ./Distribution/Simple/Register.hs 100 - ["--remove-package=" ++ showPackageId (package pkg_descr)] + ["--remove-package=" ++ pkgName (package pkg_descr)] hunk ./Distribution/TODO 8 -- add as many as possible hunk ./Distribution/TODO 10 +** does clean remove installed-pkg-config and .setup-config or + whatever? should the former be a . file? hunk ./Distribution/TODO 1 -* priorities -** Extension -- constructorless data-types -** Change mainModules to [(String, String)] for (Module, executable - name) +* 0.1 hunk ./Distribution/TODO 4 -- complain if their use makes the code non-portable - +- complain if their use makes the code non-portable? +- constructorless data-types +** grep for "FIX" hunk ./Distribution/TODO 8 - whatever? should the former be a . file? -** license parser parses either known strings, or a filename. + whatever? should the former be a . file? should it be removed + after successful register? +** Clean up field parsers (Martin: what else goes here?) +*** license parser parses either known strings, or a filename. +** add "clean" to doc? +** add description file format to doc. +** Change name of Setup.description? + +* 1.0 +** HC-PKG (see "Depends on HC-PKG" below) hunk ./Distribution/TODO 20 -** nhc-pkg (see old package manager code) -** hugs-pkg hunk ./Distribution/TODO 24 -** add "clean" to doc? - -* ideas -** Possibly create a (native?) zlib library? hunk ./Distribution/TODO 25 -** sign flag? +** SDist for windows machines, or machines without tar. +** Better way to find 'tar'; is there a library? hunk ./Distribution/TODO 28 - hunk ./Distribution/TODO 32 +** error cases for parsing command-line args +** reading & writing configuration-dropping +** use-cases based on SimonPJ's doc +** discovering the location of the given flavor of compiler and pkg tool hunk ./Distribution/TODO 37 +* Depends on HC-PKG +** buildDepToDep in Configure doesn't set version dependency +** nhc-pkg (see old package manager code) +** hugs-pkg +** register +*** for hugs & nhc +** configure: check for presence of build dependencies + hunk ./Distribution/TODO 46 +** create a (native?) zlib library? hunk ./Distribution/TODO 48 -** buildDepToDep in Configure doesn't set version dependency. +** sign flag? hunk ./Distribution/TODO 53 -** SDist for windows machines, or machines without tar. -*** Better way to find 'tar'; is there a library? - -** grep for "FIX". - hunk ./Distribution/TODO 55 -** clean up Setup parsing code. - -** register -*** for hugs & nhc - -** configure: check for presence of build dependencies - hunk ./Distribution/TODO 58 -* later todo hunk ./Distribution/TODO 64 -* Testing -** error cases for parsing command-line args -** reading & writing configuration-dropping - -** use-cases based on SimonPJ's doc -** discovering the location of the given flavor of compiler and pkg tool - -* Isaac --- difference bt flags and opts... - hunk ./Distribution/TODO 72 +- clean hunk ./Distribution/TODO 88 -- clean hunk ./Distribution/TODO 96 - hunk ./Distribution/ModuleTest.hs 62 -import qualified Distribution.Simple.Configure as D.S.C (hunitTests) -import qualified Distribution.Simple.Register as D.S.R (hunitTests) +import qualified Distribution.Simple.Configure as D.S.C (hunitTests, localBuildInfoFile) +import qualified Distribution.Simple.Register as D.S.R (hunitTests, installedPkgConfigFile) hunk ./Distribution/ModuleTest.hs 118 + system $ "touch " ++ D.S.C.localBuildInfoFile + system $ "touch " ++ D.S.R.installedPkgConfigFile + doesFileExist D.S.C.localBuildInfoFile >>= + assertBool ("touch " ++ D.S.C.localBuildInfoFile ++ " failed") hunk ./Distribution/ModuleTest.hs 130 + doesFileExist D.S.C.localBuildInfoFile >>= + assertEqual ("clean " ++ D.S.C.localBuildInfoFile ++ " failed") False + doesFileExist D.S.R.installedPkgConfigFile >>= + assertEqual ("clean " ++ D.S.R.installedPkgConfigFile ++ " failed") False hunk ./Distribution/ModuleTest.hs 135 + assertCmd "./setup configure --prefix=\",tmp\"" "hunit configure" hunk ./Distribution/Simple/Configure.hs 49 - hunitTests + hunitTests, + localBuildInfoFile hunk ./Distribution/Simple/Register.hs 48 + installedPkgConfigFile, hunk ./Distribution/Simple/Register.hs 88 -installedPkgConfigFile = "installed-pkg-config" +installedPkgConfigFile = ".installed-pkg-config" hunk ./Distribution/Simple.hs 62 -import Distribution.Simple.Register ( register, unregister ) +import Distribution.Simple.Register ( register, unregister, installedPkgConfigFile ) hunk ./Distribution/Simple.hs 65 - configure, writePersistBuildConfig) + configure, writePersistBuildConfig, localBuildInfoFile) hunk ./Distribution/Simple.hs 75 +import System.Directory(removeFile) hunk ./Distribution/Simple.hs 77 +import Control.Exception(try) hunk ./Distribution/Simple.hs 122 - removeFileRecursive buildPref + try $ removeFileRecursive buildPref + try $ removeFile installedPkgConfigFile + try $ removeFile localBuildInfoFile + return () hunk ./Distribution/TODO 8 - whatever? should the former be a . file? should it be removed - after successful register? + whatever? +** should .installed-pkg-config be removed after successful register? hunk ./Distribution/Make.hs 47 - defaultMain, + defaultMain, defaultMainNoRead hunk ./Distribution/Make.hs 86 +-- I'm not happy about this being here. I just copied it from Simple.hs, +-- but it should be in a utility module. +defaultPackageDesc :: FilePath +defaultPackageDesc = "Setup.description" hunk ./Distribution/Make.hs 105 -defaultMain :: PackageDescription -> IO () -defaultMain pkg_descr +defaultMain :: IO () +defaultMain = parsePackageDesc defaultPackageDesc >>= defaultMainNoRead + +defaultMainNoRead :: PackageDescription -> IO () +defaultMainNoRead pkg_descr hunk ./Distribution/Simple/Build.hs 61 -import Control.Monad (when) +import Control.Monad (when, unless) hunk ./Distribution/Simple/Build.hs 63 +import System.Directory (doesFileExist) hunk ./Distribution/Simple/Build.hs 106 + pkgConfExists <- doesFileExist pkgConf + unless pkgConfExists $ writeFile pkgConf "[]\n" hunk ./Distribution/Package.hs 172 - Left e -> error (show e) -- FIXME + Left e -> error (showError e) -- FIXME hunk ./Distribution/Package.hs 181 +showError (Parsec pe) = show pe +showError (FromString s) = s + hunk ./Distribution/Package.hs 208 + parseExecutableStanza ((f,_):st) = throwError $ strMsg $ + "'Executable' stanza starts with field '" ++ f ++ "'" hunk ./Distribution/Package.hs 275 -mainModule = do filename <- word - skipMany parseWhite - char ':' - skipMany parseWhite - modname <- moduleName - return (filename,modname) - hunk ./Distribution/TODO 6 +- parsing for the options isn't yet implemented? hunk ./Makefile 33 + cd test/HUnit-1.0 && make clean + cd test/A && make clean hunk ./Makefile 37 - -ghc-pkg $(GHCPKGFLAGS) -r Cabal-0.1 - -ghc-pkg $(GHCPKGFLAGS) -r HUnit-1.0 - -rm -r $(PREF)/lib/{Cabal-0.1,HUnit-1.0} + -ghc-pkg $(GHCPKGFLAGS) -r Cabal + -ghc-pkg $(GHCPKGFLAGS) -r HUnit + -rm -r $(PREF)/lib/{Cabal,HUnit} hunk ./Setup.description 4 -build-depends: haskell-src, HUnit==1.0 +build-depends: haskell-src, HUnit==1.0, parsec hunk ./Distribution/Simple/Register.hs 83 - (["--add-package", "--input-file="++installedPkgConfigFile] + (["--auto-ghci-libs", "--add-package", + "--input-file="++installedPkgConfigFile] hunk ./Distribution/TODO 16 +** build ghci libraries hunk ./Distribution/TODO 29 +** sanity checking tool for configuration; are all the .hs files + included, etc. hunk ./Distribution/Package.hs 275 --- |FIX: must learn to escape whitespace hunk ./Distribution/Package.hs 276 -parseFilePath = liftM concat (many1 ( - do try word - <|> toStr digit - <|> toStr (oneOf "!@#$%^&*()?> (many1 (alphaNum <|> oneOf "-+/_.")) hunk ./Distribution/Package.hs 279 +parseReadS :: Read a => GenParser Char st a +parseReadS = do toks <- getInput + case reads toks of + [(str,toks')] -> do setInput toks' + return str + _ -> fail "Bad String" + addfile ./test/A/Setup.description hunk ./test/A/Setup.description 1 +Name: test +Version: 1.0 +Modules: A, B.A +Exposed-Modules: A hunk ./Distribution/Package.hs 358 - "Includes: /easily/unclose, /me", + "Includes: /easily/unclose, /me, \"funky, path\\\\name\"", hunk ./Distribution/Package.hs 393 - includes = ["/easily/unclose", "/me"], + includes = ["/easily/unclose", "/me", "funky, path\\name"], hunk ./Distribution/Package.hs 440 - TestCase (assertRight "BSD4" BSD4 (parse parseLicense "" "BSD4")), + TestLabel "license parsers" $ TestCase $ + sequence_ [assertRight ("license " ++ show lVal) lVal + (parse parseLicense "" (show lVal)) + | lVal <- [GPL,LGPL,BSD3,BSD4]], hunk ./Distribution/Package.hs 445 - TestLabel "license parsers" $ - TestCase (sequence_ [assertRight ("license " ++ lName) lVal - (parse parseLicense "" lName) - | (lName, lVal) <- licenses]), - hunk ./Distribution/Package.hs 295 -parseLicense = choice [ try (string s >> return l) | (s,l) <- licenses] - "parseLicense" +parseLicense = try parseReadS <|> liftM OtherLicense parseFilePath hunk ./Distribution/Package.hs 297 --- |Mapping between the licenses and their names -licenses :: [(String, License)] -licenses= [("GPL", GPL), - ("LGPL", LGPL), - ("BSD3", BSD3), - ("BSD4", BSD4), - ("PublicDomain", PublicDomain), - ("AllRightsReserved", AllRightsReserved)] - hunk ./Distribution/Package.hs 298 -parseExtension = choice [ try (string s >> return e) | (s,e) <- extensionsMap ] - "parseExtension" +parseExtension = parseReadS hunk ./Distribution/Package.hs 300 --- |Mapping between extensions and their names -extensionsMap = [("OverlappingInstances", OverlappingInstances), - ("TypeSynonymInstances", TypeSynonymInstances), - ("TemplateHaskell", TemplateHaskell)] - hunk ./Distribution/ModuleTest.hs 68 -import Control.Monad(when) +import Control.Monad(when, unless) hunk ./Distribution/ModuleTest.hs 114 - pkgConf <- GHC.localPackageConfig + (pkgConf, pkgConfExists) <- GHC.localPackageConfig + unless pkgConfExists $ writeFile pkgConf "[]\n" hunk ./Distribution/ModuleTest.hs 145 - do pkgConf <- GHC.localPackageConfig + do (pkgConf, pkgConfExists) <- GHC.localPackageConfig + unless pkgConfExists $ writeFile pkgConf "[]\n" hunk ./Distribution/Simple/Build.hs 63 -import System.Directory (doesFileExist) hunk ./Distribution/Simple/Build.hs 104 - pkgConf <- GHC.localPackageConfig - pkgConfExists <- doesFileExist pkgConf + (pkgConf, pkgConfExists) <- GHC.localPackageConfig hunk ./Distribution/Simple/GHCPackageConfig.hs 28 +import System.Directory (doesFileExist) hunk ./Distribution/Simple/GHCPackageConfig.hs 30 --- |Where ghc keeps the --user files. -localPackageConfig :: IO FilePath + +-- |Where ghc keeps the --user files, the bool is for whether it exists +localPackageConfig :: IO (FilePath, Bool) hunk ./Distribution/Simple/GHCPackageConfig.hs 34 - return $ pathJoin [u, ".ghc-packages"] + let f = pathJoin [u, ".ghc-packages"] + b <- doesFileExist f + return (f, b) hunk ./Distribution/Simple/Register.hs 63 -import Control.Monad (when) +import Control.Monad (when, unless) hunk ./Distribution/Simple/Register.hs 80 - localConf <- GHC.localPackageConfig + (localConf, pkgConfExists) <- GHC.localPackageConfig + unless pkgConfExists $ writeFile localConf "[]\n" addfile ./test/A/Main.hs hunk ./Distribution/ModuleTest.hs 156 + doesFileExist "dist/build/testA" >>= + assertBool "build did not create the executable: testA" hunk ./Distribution/TODO 3 +** if library is Nothing, then don't build the library. sanity check + for both library and executables == nothing. hunk ./Distribution/TODO 8 -- parsing for the options isn't yet implemented? +** clean up "make install" hunk ./Distribution/TODO 18 -** build ghci libraries hunk ./test/A/Main.hs 1 +module Main where + +import A + +main = print a hunk ./test/A/Setup.description 5 +Extensions: ForeignFunctionInterface hunk ./test/A/Setup.description 7 +Executable: testA +Modules: A, Main +Extensions: OverlappingInstances + hunk ./Makefile 39 - -rm -r $(PREF)/lib/{Cabal,HUnit} + -rm -r $(PREF)/lib/{Cabal-0.1,HUnit-1.0} hunk ./test/A/Main.hs 1 -module Main where - -import A - -main = print a hunk ./test/A/Setup.description 1 -Name: test -Version: 1.0 -Modules: A, B.A -Exposed-Modules: A -Extensions: ForeignFunctionInterface hunk ./test/A/Setup.description 2 -Executable: testA -Modules: A, Main -Extensions: OverlappingInstances - hunk ./Distribution/Simple/Build.hs 57 - mkLibName, moveSources, pathJoin + mkLibName, moveSources, pathJoin, splitExt hunk ./Distribution/Simple/Build.hs 112 - rawSystemExit (compilerPath (compiler lbi)) (maybe [] cSources (library pkg_descr)) + rawSystemExit (compilerPath (compiler lbi)) (maybe [] cSources (library pkg_descr) ++ ["-odir " ++ pref, "-hidir " ++ pref, "-c"]) hunk ./Distribution/Simple/Build.hs 115 - let objs = map (++objsuffix) (map dotToSep (maybe [] modules (library pkg_descr))) + let hObjs = map (++objsuffix) (map dotToSep (maybe [] modules (library pkg_descr))) + cObjs = [file ++ objsuffix | (file, _) <- (map splitExt (maybe [] cSources (library pkg_descr)))] hunk ./Distribution/Simple/Build.hs 118 - rawSystemPathExit "ar" (["q", lib] ++ [pathJoin [pref, x] | x <- objs]) + rawSystemPathExit "ar" (["q", lib] ++ [pathJoin [pref, x] | x <- hObjs ++ cObjs]) hunk ./Distribution/Simple/Utils.hs 64 - removeFileRecursive + removeFileRecursive, + splitExt hunk ./Distribution/Simple/Utils.hs 108 +-- |Split the path into filename and extension +splitExt :: FilePath -> (String, String) +splitExt p = split_longest_prefix p (== '.') + hunk ./test/A/Main.hs 1 +module Main where + +import A + +main = print a hunk ./test/A/Setup.description 1 +Name: test +Version: 1.0 +Modules: A, B.A +Exposed-Modules: A +C-Sources: hello.c +Extensions: ForeignFunctionInterface + +Executable: testA +Modules: A, Main +Extensions: OverlappingInstances addfile ./test/A/hello.c hunk ./test/A/hello.c 1 +int main () {return 9;} hunk ./Distribution/Package.hs 198 + parseBasicStanza pkg (f@"license-file", val) = + do path <- runP f parseFilePath val + return pkg{license=OtherLicense path} hunk ./Distribution/Package.hs 298 -parseLicense = try parseReadS <|> liftM OtherLicense parseFilePath +parseLicense = parseReadS hunk ./Distribution/Package.hs 102 - executables :: [(String,BuildInfo)] + executables :: [Executable] hunk ./Distribution/Package.hs 106 +data Executable = Executable { + exeName :: String, + modulePath :: FilePath, + buildInfo :: BuildInfo + } + deriving (Show, Read, Eq) + hunk ./Distribution/Package.hs 216 - do binfo <- foldM parseExeHelp emptyBuildInfo st - return (exeName,binfo) + case lookup "main-is" st of + Just xs -> do path <- runP "main-is" parseFilePath xs + binfo <- foldM parseExeHelp emptyBuildInfo st + return $ Executable exeName path binfo + Nothing -> throwError $ strMsg $ + "No 'Main-Is' field found for " ++ exeName ++ " stanza" hunk ./Distribution/Package.hs 224 + parseExeHelp binfo (f@"main-is", _) = return binfo hunk ./Distribution/Package.hs 363 + "Main-is: SomeFile.hs", hunk ./Distribution/Package.hs 396 - executables = [("somescript", emptyBuildInfo{ + executables = [Executable "somescript" "SomeFile.hs" ( + emptyBuildInfo{ hunk ./Distribution/Package.hs 465 - (library `liftM` parseDescription "Name: foo\nVersion: 1\nLicense: GPL\nMaintainer: someone\n\nExecutable: script\n"), + (library `liftM` parseDescription "Name: foo\nVersion: 1\nLicense: GPL\nMaintainer: someone\n\nExecutable: script\nMain-is: SomeFile.hs\n"), hunk ./test/A/Setup.description 10 +Main-is: Main.hs hunk ./test/A/hello.c 1 -int main () {return 9;} hunk ./Distribution/Package.hs 50 + Executable(..), hunk ./Distribution/Simple/Build.hs 52 -import Distribution.Package (PackageDescription(..), BuildInfo(..), showPackageId, pkgName) +import Distribution.Package (PackageDescription(..), BuildInfo(..), + showPackageId, pkgName, Executable(..)) hunk ./Distribution/Simple/Build.hs 115 + -- build any executables + sequence_ [rawSystemExit (compilerPath (compiler lbi)) + ["--make", modPath, "-o", pathJoin [pref, exeName]] + | (Executable exeName modPath _) <- executables pkg_descr] + hunk ./Distribution/TODO 8 -** clean up "make install" +- integrate suggestions from libraries@ hunk ./Distribution/TODO 18 +** the ./setup -h output should document which commands exist, and + which options are relevant to which commands. hunk ./test/A/A.hs 4 -main = print a +main2 = print a hunk ./test/A/Makefile 4 - rm -f setup a.out + rm -f setup a.out dist/build/testA hunk ./test/A/hello.c 1 +int main () {return 9;} hunk ./Distribution/Simple/Build.hs 131 - "--make", "-odir " ++ pref, "-hidir " ++ pref, + "--make", "-odir", pref, "-hidir", pref, hunk ./Distribution/Simple/Build.hs 138 - ++ [ "-package " ++ pkgName pkg | pkg <- packageDeps lbi ] + ++ (concat [ ["-package", pkgName pkg] | pkg <- packageDeps lbi ] ) move ./test/A/Main.hs ./test/A/MainA.hs hunk ./Distribution/ModuleTest.hs 158 + doesFileExist "dist/build/testB" >>= + assertBool "build did not create the executable: testB" hunk ./Distribution/Simple/Build.hs 117 - ["--make", modPath, "-o", pathJoin [pref, exeName]] - | (Executable exeName modPath _) <- executables pkg_descr] + ["--make", pathJoin [hsSourceDir bi, modPath], "-o", pathJoin [pref, exeName]] + | (Executable exeName modPath bi) <- executables pkg_descr] hunk ./Distribution/TODO 2 -** Build executables for mainModules hunk ./Distribution/TODO 4 +*** add test case for no libraries hunk ./test/A/Setup.description 10 -Main-is: Main.hs +Main-is: MainA.hs hunk ./test/A/Setup.description 13 +Executable: testB +Modules: B, Main +Main-is: MainB.hs +hs-source-dir: B + adddir ./test/wash2hs adddir ./test/wash2hs/hs adddir ./test/wash2hs/test addfile ./test/wash2hs/Makefile addfile ./test/wash2hs/LICENSE addfile ./test/wash2hs/CHANGES addfile ./test/wash2hs/Setup.lhs addfile ./test/wash2hs/Setup.description addfile ./test/wash2hs/test/ManuelsTable.wash addfile ./test/wash2hs/test/Counter.wash addfile ./test/wash2hs/test/Tutorial.wash addfile ./test/wash2hs/hs/WASHUtil.hs addfile ./test/wash2hs/hs/WASHOut.hs addfile ./test/wash2hs/hs/WASHFlags.hs addfile ./test/wash2hs/hs/WASHData.hs addfile ./test/wash2hs/hs/WASHClean.hs addfile ./test/wash2hs/hs/WASHExpression.hs addfile ./test/wash2hs/hs/WASHMain.hs addfile ./test/wash2hs/hs/WASHParser.hs addfile ./test/wash2hs/hs/WASHGenerator.hs hunk ./test/wash2hs/CHANGES 1 +* 20031112 + added JSP-style string escape: + <%= my nice haskell code %> + is mapped to + text (my nice haskell code) hunk ./test/wash2hs/LICENSE 1 +Copyright (C) 2000-2003 Erik Meijer, Danny van Velzen, and Peter Thiemann + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. +3. The names of the authors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. hunk ./test/wash2hs/Makefile 1 +all: + ghc -Wall --make -i../../:/../HUnit-1.0 Setup.lhs -o setup +clean: + rm -f setup + rm -rf ,tmp dist ,tmp2 + find . -name "*.o" |xargs rm -f + find . -name "*.hi" |xargs rm -f +check: all + ./setup configure --user --prefix=/tmp/foo + ./setup build + ./setup install --install-prefix=/tmp/bar + ls /tmp/bar* + # install w/ register! + ./setup install +# ls /tmp/foo* + ./setup sdist + ls dist hunk ./test/wash2hs/Setup.description 1 +Name: Wash_2hs +Version: 1.4.34 +License: BSD3 +hs-source-dir: hs + +executable: wash2hs +Build-Depends: text +hs-source-dir: hs +Modules: WASHClean, WASHExpression, WASHGenerator, WASHOut, + WASHData, WASHFlags, WASHMain, WASHParser, + WASHUtil +main-is: WASHMain.hs hunk ./test/wash2hs/Setup.lhs 1 +> module Main where + +> import Distribution.Simple + +> main :: IO () +> main = defaultMain + +to compile: +ghc -package Cabal -package parsec Setup.lhs -o setup hunk ./test/wash2hs/hs/WASHClean.hs 1 +module WASHClean where + +import Char + +import WASHData + +data CM a = CM ([String] -> a) +instance Monad CM where -- Reader monad + return x = CM (const x) + m >>= f = CM (\strs -> + case m of + CM mfun -> + case f (mfun strs) of + CM ffun -> + ffun strs) + +class Clean n where + clean :: n -> CM n + +cleanCodeFragList :: [CodeFrag] -> [CodeFrag] +cleanCodeFragList = map g + where g (EFrag el) = EFrag (cleanElement el) + g (CFrag cs) = CFrag (cleanContentList cs) + g cf = cf + +cleanElement :: Element -> Element +cleanElement e@Element{elemName = en, elemContent = ec} = + if en == "pre" + then e + else let ec' = cleanContentList ec in + e{elemContent = ec'} + +cleanContentList :: [Content] -> [Content] +cleanContentList = remove . map g . combine + where g c = case c of CElement{celem = el} -> CElement{celem = cleanElement el} + CText{ctext = et} -> CText{ctext = et { textString = cleanText (textString et) }} + CCode{ccode = ec} -> CCode{ccode = cleanCodeFragList ec} + _ -> c + combine (CText {ctext = t1} : CText {ctext = t2} : rest ) = + combine (CText {ctext = Text {textString = textString t1++ textString t2, textMode = textMode t1}} : rest) + combine (x : xs) = x : combine xs + combine [] = [] + remove (CText{ctext = tt} : rest) | textString tt == " " = remove rest + -- remove (CText{ctext = tt} : rest@(CElement{} : _)) = CText{ctext = dropRight tt} : remove rest + -- remove (e@CElement{} : (CText{ctext = tt} : rest)) = e : remove (CText{ctext = dropLeft tt} : rest) + remove (x : rest) = x : remove rest + remove [] = [] + +cleanText "" = "" +cleanText xs@[x] | isSpace x = " " + | otherwise = xs +cleanText (x : ys@(y : _)) | isSpace x = if isSpace y + then cleanText ys + else ' ' : cleanText ys + | otherwise = x : cleanText ys + +dropRight tt = tt { textString = reverse (dropWhile isSpace (reverse (textString tt))) } +dropLeft tt = tt { textString = dropWhile isSpace (textString tt) } hunk ./test/wash2hs/hs/WASHData.hs 1 +module WASHData -- derived from HSPData + ( File (..) + , Mode (..) + , Element (..) + , Text (..) + , Content (..) + , CodeFrag (..) + , Attribute (..) + , AttrValue (..) + ) +where { + + +-- Data type. + +data File = File { + fcode :: [CodeFrag], + topElem :: Element + } deriving Show; + +data Mode = V | S | F + deriving (Eq,Show); + +data Element = Element + { elemMode :: Mode + , elemName :: String + , elemAttrs :: [Attribute] + , elemContent :: [Content] + , elemEmptyTag :: Bool } + deriving Show; + +data Text = Text + { textMode :: Mode + , textString :: String + } + deriving Show; + +data Content + = CElement { celem :: Element } + | CText { ctext :: Text } + | CReference { creference :: Text } + | CPI { cpi :: String } + | CComment { ccomment :: String } + | CCode { ccode :: [CodeFrag] } + deriving Show; + +data CodeFrag + = HFrag String + | EFrag Element + | HSFrag String + | CFrag [Content] + | AFrag [Attribute] + | VFrag String + deriving Show; + +data Attribute + = Attribute + { attrMode :: Mode + , attrName :: String + , attrValue :: AttrValue } + | AttrPattern + { attrPattern :: String } + deriving Show; + +data AttrValue + = AText String + | ACode String + deriving Show; + +data Reference = Reference String deriving Show; + + + +} hunk ./test/wash2hs/hs/WASHExpression.hs 1 +module WASHExpression where + +import Monad + +import WASHFlags +import qualified WASHUtil +import WASHData +import WASHOut + +code :: FLAGS -> [CodeFrag] -> ShowS +code flags [] = id +code flags (x:xs) = code' flags x . code flags xs + +code' :: FLAGS -> CodeFrag -> ShowS +code' flags (HFrag h) = + showString h +code' flags (EFrag e) = + runOut $ element flags e +code' flags (CFrag cnts) = + showChar '(' . + runOut (contents flags [] cnts) . + showChar ')' +code' flags (AFrag attrs) = + showChar '(' . + WASHUtil.itemList (attribute flags) "CGI.empty" " >> " attrs . + showChar ')' +code' flags (VFrag var) = + id +code' flags _ = error "Unknown type: code" + +outMode :: Mode -> Out () +outMode = outShowS . showMode + +showMode :: Mode -> ShowS +showMode V = id +showMode S = showString "_T" +showMode F = showString "_S" + +element :: FLAGS -> Element -> Out [String] +element flags (Element mode nm ats cnt et) = + do outChar '(' + outString "CGI." + outString nm + when (generateBT flags) $ outMode mode + outChar '(' + outShowS $ attributes flags ats + rvs <- contents flags [] cnt + outString "))" + return rvs + +outRVS :: [String] -> Out () +outRVS [] = outString "()" +outRVS (x:xs) = + do outChar '(' + outString x + mapM_ g xs + outChar ')' + where g x = do { outChar ','; outString x; } + +outRVSpat :: [String] -> Out () +outRVSpat [] = outString "(_)" +outRVSpat xs = outRVS xs + +contents :: FLAGS -> [String] -> [Content] -> Out [String] +contents flags inRVS cts = + case cts of + [] -> + do outString "return" + outRVS inRVS + return inRVS + ct:cts -> + do rvs <- content flags ct + case rvs of + [] -> + case (cts, inRVS) of + ([],[]) -> + return [] + _ -> + do outString " >> " + contents flags inRVS cts + _ -> + case (cts, inRVS) of + ([],[]) -> + return rvs + _ -> + do outString " >>= \\ " + outRVSpat rvs + outString " -> " + contents flags (rvs ++ inRVS) cts + +content :: FLAGS -> Content -> Out [String] +content flags (CElement elem) = + element flags elem +content flags (CText txt) = + do text flags txt + return [] +content flags (CCode (VFrag var:c)) = + do outShowS $ (showChar '(' . code flags c . showChar ')') + return [var] +content flags (CCode c) = + do outShowS $ (showChar '(' . code flags c . showChar ')') + return [] +content flags (CComment cc) = + do outShowS $ (showString "return (const () " . shows cc . showChar ')') + return [] +content flags (CReference txt) = + do text flags txt + return [] +content flags c = + error $ "Unknown type: content -- " ++ (show c) + +text :: FLAGS -> Text -> Out [String] +text flags txt = + do outString "CGI.rawtext" + when (generateBT flags) $ outMode (textMode txt) + outChar ' ' + outs (textString txt) + return [] + +attributes :: FLAGS -> [Attribute] -> ShowS +attributes flags atts = + f atts + where + f [] = id + f (att:atts) = + attribute flags att . + showString " >> " . + f atts + +attribute :: FLAGS -> Attribute -> ShowS +attribute flags (Attribute m n v) = + showString "(CGI.attr" . + (if generateBT flags then (attrvalueBT m v) else id) . + showChar ' ' . + shows n . + showString " " . + attrvalue v . + showString ")" +attribute flags (AttrPattern pat) = + showString "( " . + showString pat . + showString " )" +attribute flags a = error $ "Unknown type: attribute -- " ++ (show a) + +attrvalue :: AttrValue -> ShowS +attrvalue (AText t) = + shows t +attrvalue (ACode c) = + showString "( " . + showString c . + showString " )" +attrvalue a = error $ "Unknown type: attrvalue -- " ++ (show a) + +attrvalueBT :: Mode -> AttrValue -> ShowS +attrvalueBT V _ = id +attrvalueBT m (AText _) = showMode m . showChar 'S' +attrvalueBT m (ACode _) = showMode m . showChar 'D' +attrvalueBT m a = error $ "Unknown type: attrvalueBT -- " ++ (show a) hunk ./test/wash2hs/hs/WASHFlags.hs 1 +module WASHFlags where +-- +flags0 = FLAGS { generateBT = False } + +data FLAGS = FLAGS { generateBT :: Bool } + + hunk ./test/wash2hs/hs/WASHGenerator.hs 1 +module WASHGenerator (preprocess, preprocessPIPE) where { + +import List; +import IO; + +import WASHData ; +import Parsec hiding (try) ; +import qualified WASHParser ; +import qualified WASHExpression ; +import qualified WASHClean ; +import WASHFlags ; + +-- import Trace; + +preprocess :: FLAGS -> String -> String -> String -> IO (); +preprocess flags srcName dstName globalDefs = + bracket (openFile srcName ReadMode) + (\ srcHandle -> hClose srcHandle) + (\ srcHandle -> + bracket (openFile dstName WriteMode) + (\ dstHandle -> hClose dstHandle) + (\ dstHandle -> + preprocessPIPE flags srcName srcHandle dstHandle globalDefs)); + + +preprocessPIPE :: FLAGS -> String -> Handle -> Handle -> String -> IO (); +preprocessPIPE flags srcName srcHandle dstHandle globalDefs = do { + input <- hGetContents srcHandle; + let { parsing = parse WASHParser.washfile srcName input }; + case parsing of { + Left error -> ioError $ userError $ show error; + Right washfile -> + hPutStrLn dstHandle (postprocess $ file flags globalDefs washfile ""); + }; +}; + +file :: FLAGS -> String -> [CodeFrag] -> ShowS ; +file flags globalDefs fcode = + WASHExpression.code flags (WASHClean.cleanCodeFragList fcode) . + showString globalDefs . + showString "\n" + ; + +imports :: [String] -> String ; +imports is = concat $ map (\m -> "import " ++ m ++ ";\n") is ; + +postprocess :: String -> String ; +postprocess = unlines . postprocess' . lines ; + +postprocess' :: [String] -> [String] ; +postprocess' [] = [] ; +postprocess' xs'@(x:xs) = + if "import" `isPrefixOf` x + then "import qualified CGI" : xs' + else x : postprocess' xs ; + +} hunk ./test/wash2hs/hs/WASHMain.hs 1 +module Main where + +-- ghc --make WASHMain -package text -o WASHMain + +import IO +import List +import System +import WASHGenerator +import WASHFlags + +main = + do args <- getArgs + runPreprocessor flags0 args + +runPreprocessor flags [washfile] = + if ".wash" `isSuffixOf` washfile + then + preprocess flags washfile (take (length washfile - 5) washfile ++ ".hs") "" + else + preprocess flags + (washfile ++ ".wash") + (washfile ++ ".hs") + "" +runPreprocessor flags [washfile, hsfile] = + preprocess flags (washfile) (hsfile) "" +runPreprocessor flags [originalFile, washfile, hsfile] = + preprocess flags (washfile) (hsfile) "" +runPreprocessor flags [] = + preprocessPIPE flags "" stdin stdout "" +runPreprocessor flags args = + do progName <- getProgName + hPutStrLn stderr ("Usage: " ++ progName ++ " washfile [hsfile]") + hPutStrLn stderr (" or: " ++ progName ++ " originalFile infile outfile") + hPutStrLn stderr (" or: " ++ progName) + hPutStrLn stderr (" to run as pipe processor") + hPutStrLn stderr ("Actual arguments: " ++ show args) hunk ./test/wash2hs/hs/WASHOut.hs 1 +module WASHOut where + +-- output monad + +data Out a = Out a ShowS + +instance Monad Out where + return a = Out a id + m >>= f = case m of + Out x shw1 -> + case f x of + Out y shw2 -> + Out y (shw1 . shw2) + +runOut :: Out a -> ShowS +runOut (Out a shw) = shw + +wrapper = (Out () .) + +outString :: String -> Out () +outString = wrapper showString + +outChar :: Char -> Out () +outChar = wrapper showChar + +outs :: Show a => a -> Out () +outs = wrapper shows + +outShowS :: ShowS -> Out () +outShowS = Out () hunk ./test/wash2hs/hs/WASHParser.hs 1 +module WASHParser ( xmlfile, washfile ) where { + +import Char ; +import Parsec hiding (letter) ; +import WASHData; +import WASHUtil; + + +notImplemented = char '\xff' >> return undefined + "something that isn't implemented yet"; + +f <$> p = do { x <- p; return $ f x; }; + +testParser p s = + case parse (do { x <- p; eof; return x; }) "bla" s of { + Left x -> print x; + Right y -> print y; + }; + +washfile :: Parser [CodeFrag] ; +washfile = + do code <- hBody + eof + return $ code + ; + +setMode :: Bool -> Mode ; +setMode toplevel = if toplevel then S else F ; + +-- The numbers given for each parser identify the section and +-- grammar production within the XML 1.0 definition (W3C +-- REC-xml-19980210). + + +-- 2.1 / 1 +xmlfile :: Parser File; +xmlfile = do { + prolog; + code <- option [] (do { + hs <- haskell; + s0; + return hs + }); + elem <- element True; + many misc; + eof; + return $ File { fcode = code, topElem = elem }; +}; + + +-- 2.2 / 2 +char' = (char '\t' <|> char '\n' <|> char '\r' <|> + satisfy (>= ' ')) "character"; + + +-- 2.3 / 3 +s = (try $ many1 (char ' ' <|> char '\t' <|> + char '\r' <|> char '\n')) "whitespace"; +s0 = option "" s; +{- +s0 = (try $ many (char ' ' <|> char '\t' <|> + char '\r' <|> char '\n')) "optional whitespace"; +-} + +-- 2.3 / 4 +nameChar = letter <|> digit <|> char '.' <|> char '-' <|> + char '_' <|> char ':' <|> combiningChar <|> extender; + + +-- 2.3 / 5 +name :: Parser String; +name = do { + c <- letter <|> char '_' <|> char ':'; + cs <- many nameChar; + return $ c:cs; +} "name"; + + +-- 2.3 / 6 +names :: Parser [String]; +names = sepBy1 name s; + + +-- 2.3 / 7 +nmtoken :: Parser String; +nmtoken = many1 nameChar "nmtoken"; + + +-- 2.3 / 8 +nmtokens :: Parser [String]; +nmtokens = sepBy1 name s; + + +-- 2.3 / 10 +attValue :: Parser AttrValue; +attValue = (((AText . concat) <$> ( + between (char '\"') (char '\"') (many (p '\"')) + <|> between (char '\'') (char '\'') (many (p '\'')) )) + <|> ACode <$> haskellAttr) "attvalue" +where { + p end = (\x -> [x]) <$> satisfy (f end) <|> reference; + f end = \c -> c /= '<' && c /= '&' && c /= end; +}; + +-- 2.3 / 11 +systemLiteral = do{ + char '\''; + sl <- many (satisfy (\c -> c /= '\'')); + char '\''; + return sl; +} <|> do{ + char '\"'; + sl <- many (satisfy (\c -> c /= '\"')); + char '\"'; + return sl; +}; + +-- 2.3 / 12 +pubidLiteral = do { + char '\''; + sl <- many (pubidChar False); + char '\''; + return sl; +} <|> do{ + char '\"'; + sl <- many (pubidChar True); + char '\"'; + return sl; +}; + +-- 2.3 / 13 +pubidChar w = satisfy (\c -> c >= 'A' && c <= 'Z' + || c >= 'a' && c <= 'z' + || c >= '0' && c <= '9' + || c `elem` " \n\r-()+,./:=?;!*#@$_%" + || w && c == '\''); + +-- 2.4 / 14 +charData :: Bool -> Parser Text; +charData toplevel = + do { s <- many1 charData'; return $ Text (setMode toplevel) $ concat s; } + "#PCDATA"; + +charData' :: Parser String; +charData' = do { + c <- satisfy f; + return [c]; +} <|> do { + string "]]"; + c <- satisfy (\c -> f c && c /= '>'); + return $ ']':']':[c]; +} +where { + f c = c /= '<' && c /= '&' && c /= ']'; +}; + + +-- 2.5 / 15 +comment :: Parser String; +comment = do { + try $ string " - - - - - - - -

- - 2003-09-12 - Library Infrastructure Project - - Isaac - Jones - - - Simon - Peyton Jones - - - Simon - Marlow - - - Malcolm - Wallace - - -
ijones@syntaxpolice.org
- - - The Library Infrastructure Project is an effort to provide - a framework for developers to more effectively contribute their - software to the Haskell community. - - The &impls;Herein, I will use &impl; as a - catch-all phrase to include compilers and interpreters for the - Haskell programming language. come included - with a good set of standard libraries, but this set is - constantly growing and is maintained centrally. This model does - not scale up well, and as Haskell grows in acceptance, the - quality and quantity of available libraries is becoming a major - issue. There are a wide variety of &impls; (both compilers and - interpreters), each of which target a variety of hardware - architectures and operating systems. There are also a number of - different groups and individuals providing libraries, and these - libraries depend upon each other and they depend upon external - systems such as Java or GTK. - - It can be very difficult for an end user to manage these - dependencies and build all the necessary software at the correct - version numbers on their platform: there is currently no generic - build system to abstract away differences between Haskell - Implementations and operating systems Your - humble author has in-depth knowledge of Debian GNU/Linux, but - could probably learn a thing or two about other operating - systems like Windows and MacOS. Should you notice anything here - which offends your sense of operating system, please let me - know.. - - The Library Infrastructure Project seeks to provide some - relief to this situation by building tools to assist developers, - end users, and operating system distributers. - - This is a draft proposal. If you have comments, please - email Isaac - Jones. The latest version of this document should be - available in a variety of formats from the Library - Infrastructure Project home - page. This proposal is seperate, but related. - - -
- - - - -The Haskell Library Infrastructure: goals - -The Haskell Library Infrastructure (HLI) has the following main goal: -to specify a standard way in which a Haskell library can be packaged, so that it is -easy for consumers to use it, or re-package it, -regardless of the Haskell implementation or installation platform. - - We need to come up w/ an agreed-upon name. For one thing, the - entire "infrastructure" will not only include the above, but also a - web site for uploading packages, etc. - -The HLI also -supports library authors by providing an instrastructure that automates the -process of building and packaging simple libraries. It is not necessary to use -this code --- indeed complex libraries may exceed its abilities --- but it should -handle 75% of the cases with no trouble. - -The HLI serves a number of different people: - - - Joe User is simply a Haskell user. He does not download new pacakges. Nevertheless, -he needs to know about his Haskell compiler's -package flag (see ). - - - - Bob the Builder and Sam Sysadmin both download, build, - and install new pacakges. The only difference between the two is that Sam has root permission, - and can install pacakges in more globally-visible places. - - - - Roland RPM, Donald Debian, and Willie Windows - build Linux RPM, Debian, and Windows installer packages respectively. (This list is not exhaustive.) - They do this as a service for Angela Author and the community, and may know little or nothing about the internal details - of the Haskell packages they are wrapping up. - - - - Angela Author wants to write a simple Haskell library, and distribute it with -minimum fuss, in such a way that all the above folk can easily use it. - - - - Marcus Makefile is like Angela, but more sophisticated. He has a complicated library, -and uses makefiles. Still, he wants to arrange that Roland, Donald, Bob, Sam, and Joe don't need to know -about his internal complexity. - - - -We describe Angela and Marcus as producers of their packages, and all the others -as package consumers. - - - - -The Haskell Library Infrastructure: overview - -This section summarises the vocabulary and main features of the Haskell Library Infrastructure. - -Packages - -A package is the unit of distribution for HLI. -Each package has a package description (PD) -that consists of: - -A globally-unique package name, containing no spaces. Chaos will result -if two distinct packages with the same name are installed on the same system. We need a -global web server where authors can claim and record package names. - -A version, consisting of a sequence of one or more integers. - - - -A list of explicit dependencies on other packages. These are typically not exact; e.g. "I need hunit version -greater than 2.4". - - - -A list of exposed modules. Not all of the modules that comprise a package implementation are necessarily -exposed to a pacakge client. -The ability to expose some, but not all, of the modules making up a package -is rather like using an explicit export list on a Haskell module. - >This isn't specified in - - -More detailed information about the make-up of the package and how to build it. -The full details are given in . - - -The first two components can be combined to form a single text string called the package ID, -using a hyphen to separate the version -from the name, and dots to separate the version components. For example, "hunit-2.3". - - - - -Package distributions - -A HLI package can be distributed in several forms: - - -A HLI source distribution is a tree of files (tar-ball, zip file etc) -containing the library sources, which may need to be -compiled before being installed. The same source tarball may well be installable for several -Haskell implementations, OSs, and platforms. - -A source distribution may contain fewer files than appear in the developer's CVS repository; for example, -design notes may be omitted. It may also contain some derived files, that do not appear in the -the developer's repository; for example, ones made by a somewhat exotic pre-processor where it -seems simpler to ship the derived file than to ensure that all consumers have the pre-processor. - - - -A HLI binary distribution is a tree of files that contains a pre-compiled library, ready -for installation. The pre-compilation means that the distribution will be Haskell-compiler-specific, and certain "looser" dependencies (hunit > 2.3) will now be precisely fixed (hunit == 2.4). - - - - -The library may be packaged as an RPM, Debian distribution, -or Windows installer. (This list is not exhaustive.) -In that case, the way it is installed is prescribed by the respective distribution mechanism; -the only role of the HLI is to make it easy to construct such distributions. All three are -compiler-specific binary distributions. - - - - - -Compilers - -We use the term ``compiler'' to mean GHC, Hugs, nhc, hbc, etc. (Even though -Hugs isn't really a compiler, the term is less clumsy than ``Haskell implementation''.) - - The -HLI requires that a conforming Haskell compiler is somewhat package aware. -In summary, the requirements are these: - -Each compiler hc must provide an associated package-management -program hc-pkg. A compiler user installs a package by placing the package's -supporting files somewhere, and then using hc-pkg to make the compiler aware -of the new package. - -Subsequent invocations of hc will include modules from the -new package in the module name space (i.e. visible to import statements). - - -The compiler should support a -package flag for finer-grain control -of package visibility. - - -A complete specification of these requirements is given in . - - - -The Setup script - -The key question is this: how should Angela Author present her HLI package so that her consumers (from -Bob, Sam, Willie, etc) can conveniently use it? - -Answer: she provides a tree of files, with the file Setup.lhs in the -root directory of the tree. Setup.lhs is an executable Haskell program -which conforms to a particular specification, given in detail in . -In summary, though, Setup.lhs allows a consumer to configure, build, -install, register, and un-register a package. - For example, consider a package hunit-2.3. -Bob the Builder downloads and unpacks a source tar-ball into a temporary directory, -cd's to root directory, and - - ./Setup.lhs configure --ghc - ./Setup.lhs build - ./Setup.lhs install - - -Should we state the rule about when one must explictly call "register"? - -The configuration step checks, for example, that the package author indeed intends the package to be buildable -with GHC, that a sufficiently up-to-date GHC is available, that the packages which are required to build hunit-2.3 are already installed for GHC, and so on. -After that the build and install steps know what -compiler they are using. - -Question: can you abbreviate to Setup install ghc? - -In principle, the Setup program -could be written in any language; see for why we use Haskell. - - - - -Help for building packages - -The HLI allows a package author to write the setup script in any way she pleases, provided -it conforms to the speciication of . However, many Haskell packages consist -of little more than a bunch of Haskell modules, and for these the HLI provides a library that does -all the work. -For example, suppose Angela Author has a bunch of Haskell modules Angela.Set, -Angela.Bag, and Angela.Internals, that she wants to -turn into a package. All she need do is write the setup script - - #! /usr/bin/env runhugs - import Distribution.Simple - - pkgDescr = emptyPackage { name = "angela", - version = [1], - modules = ["Angela.Set", "Angela.Bag"] } - - main = defaultMain pkgDescr - -Now she can use ./Setup.lhs sdist to create a source distribution. - -The details of Distribution.Simple are given in . - - - - - - But Why Should We Use Haskell? - -The setup script, Setup.lhs, is written in Haskell. Why? - - -Haskell runs on all the systems of interest. - -Haskell's standard libraries should include a rich set of operating -system operations needed for the task. These can abstract-away the -differences between systems in a way that is not possible for -Make-based tools. - -Haskell is a great language for many things, including tasks -typically relegated to languages like Python. Building, installing, -and managing packages is a perfect proving ground for these tasks, and -can help us to discover weaknesses in Haskell or its libraries that -prevent it from breaking into this "market". A positive side-effect -of this project might be to make Haskell more suitable for "scripting" -tasks. - -Likewise, each piece of the project (Building, Installing, and -Packaging) can be leveraged elsewhere if we make them into -libraries. - -Make is not particularly good for parsing, processing, and sharing -meta-information about packages. The availability of this information -to Haskell systems (including compilers, interpreters, and other -tools) is useful. Unlike Make, Haskell can also reuse unrelated -algorithms, parsers, and other libraries that have been developed in -the past. - -Dogfooding, the act of using the tools you -develop, is a healthy policy. - - -It is convenient for consumers to execute Setup.lhs directly, thus: - - ./Setup.lhs ... - -This can be achieved by starting Setup.lhs with "#! /usr/bin/env runhugs". -Since it's a literate Haskell script (.lhs file), the Haskell compiler will ignore -this line. -However, nothing stops a consumer from running the script interactively, or compiling it and running -the compiled binary. Any implementation of Haskell should suffice to run the script, provided -the implementation has the HLI libraries installed. - - The GHC team should provide runghc. - - - - - -Package consumers and the setup script - - -The sole requirement of an HLI package is that it should contain a setup script, Setup.lhs, -in the root of its file structure. This section -specifies the complete command-line interface for the setup script, and how it satisfies the needs of -package consumers. - -The setup script specification - -Here is the command-line interface the setup script must satisfy. - setup.lhs interface - - - - ./Setup.lhs info - Output the package description. - - - - ./Setup.lhs configure [flags] - Prepare to build the package. Typically, this step checks - that the target platform is capable of building the package, and - discovers platform-specific features that are needed during the build. - - - - ./Setup.lhs build - Make this package ready for installation. For a true compiler, - this step involves compiling the Haskell source code. Even for an interpreter, however, - it may involve running a pre-processor. - - - ./Setup.lhs install [install-prefix] - Copy the files into the install locations, and register - the package with the compiler. - - - ./Setup.lhs register - ./Setup.lhs unregister - - - Register (or un-register) this package with the - compiler. (NB: registration is also done automatically by install.) - - - ./Setup.lhs test - Run the package's test suite. - - -
-
- -<function>setup info</function> - -The command ./Setup.lhs info outputs the package description on the -standard output, in the format given below. This the only concrete way in which the package -descrption appears in the HLI: Angela Author does not write a file containing the package description. - -Insert package desription syntax here. - -NB: the package descrpition is not the same as an installed package description (); -the latter describes a particular -installation (e.g. where the files are), while PkgDescr gives only installation-independent information. - - - - -<function>setup configure</function> - -The command ./Setup.lhs configure prepares -to build the package. For sophisticated packages, the configure step -may perform elaborate checks, to gather information about the target -system. It may write a file to record its results, but the name and -format of the file are not part of the specification. For wrapped -make-based systems (for instance), a command-line parser that -understands the standard targets will be provided. - - - -All flags are optional. The flags are these: - ---with-compiler=path, ---ghc, ---nhc, ---hugs: -specifies which compiler to use. At most one of the value of these flags may be specified. -The configure step checks -that the compiler is available, in a sufficiently up-to-date form for the package, and that the package -expects to work with that compiler. If the compiler name -is not specified, setup will choose one; some packages will come with one compiler baked in. - - ---prefix=path: specifies where the installed files -for the package should be installed. Typically on Unix this will be /usr/local and -on Windows it will be Program Files. The setup script will use a sensible default -(often platform-specific) if the flag is not specified. - - - -Unrecognized flags are errors in the default build system, but may be meaningful to wrapped make-based systems (for instance). Therefore, the provided command-line parser will pass unrecognized command-line flags on to the wrapped system. - - -It is OK for these flags to be "baked into" the compiled library. In particular, the build system may -bake the installation path into the compiled files. There is no provision for installing the compiled -files anywhere other than the place specified in the configure step. - - - -<function>setup build</function> - -The command ./Setup.lhs build makes this -package, ready for installation. It takes no flags. - - - -<function>setup install</function> - -The command ./Setup.lhs install copies files from the built package to -the right location for installed files, specified in the configure step. Then it registers the new package with -the compiler, using the hc-pkg command. - ---install-prefix=path has three effects. -First, it over-rides the --prefix flag specified in the configure step, -providing an alternative location. Second, it does not call hc-pkg to register the package. -Instead, third, it creates an installed package description file, installed-pkg-descr, -which can later be fed to hc-pkg. - -The reason for all this is that Roland RPM wants to create an exact installation tree, all ready -to bundle up for the target machine, but in a temporary location. He cannot use -this location for --prefix in the configure step, because that -might bake the wrong path into some compiled files. Nor does he want to register this temporary tree with the compiler -on his machine. Instead, he bundles up the temporary installation tree, plus the installed-pkg-descr, -and ships them all to the target machine. When they are installed there, the post-installation script runs -hc-pkg on the installed-pkg-descr file. - - - ---shared: if present, this flag is passed to hc-pkg -so that the package is registed as shared. This flag has no effect if --install-prefix is -used, because in that case hc-pkg is not called. - - - - - - - - -<function>setup register</function> and <function>setup unregister</function> - -The command ./Setup.lhs register registers the now-installed package with the compiler. -Similarly, ./Setup.lhs unregister un-registers the package. - ---shared: registers/un-registers a shared package as shared. -The default is to treat the package as a user package. - -We have not yet introduced the concept of a user package at this point, I think. - - - - -
- -Bob the Builder and Sam Sysadmin - -Bob the Builder can install a HLI source distribution thus. -He downloads the source distribution and unpacks it into a temporary directory, -cd's to that directory, and says - - ./Setup.lhs configure --ghc - ./Setup.lhs build - ./Setup.lhs install - -Similarly, Sam Sysadmin does exactly the same, except that he says - - ./Setup.lhs install --shared - -in the final step, so that the package is installed where all users will see it. - -For a binary distribution, both Bob and Sam would omit the first two steps, and just do the install step. - - -System packagers (Debian, RPM etc) - -System packagers, such as Donald Debian, will run the configure and build steps just like Bob and Sam. -A that point, Donald will say - - ./Setup.lhs install --install-prefix=/tmp/donald - -to construct a ready-to-zip tree of all the installed files, plus a file installed-pkg-descr -that describes the installed package. He arranges to deliver both these components to the target machine, -and then feed installed-pkg-descr to hc-pkg on the target machine. - - -The file installed-pkg-descr also contains information he needs for building -his Debian distribution, namely the -package name, version, and (exact) dependencies. - - -
- -HLI support for building a package: the author's viewpoint - -Angela Author has written a bunch of Haskell modules that she wants to package as a library. -What does she have to do? -She must simply build a package that can be installed as described above: nothing else is prescribed. -However, the HLI provides support for library authors to make it easy to fulfil these requirements. - - -The Makefile route - -Isaac isn't sure that we can provide much value here beside providing -a standard command-line parser (which is pretty good at least). I think it might be good to offer a boilerplate Setup.lhs file for makefiles, but implementing it in a library is a bit overkill. Perhaps in the future, if the build system is delivered w/ fptools or something, we could provide an API to wrap that. - -Marcus Makefile is happy with make, -and he can build the library entirely using make. - -To support this, HLI provides a trivial setup library Distribution.Make, which -simply parses the command line arguments and shells out into make. Marcus uses the following -Setup.lhs - - module Main where - import Distribution.Make - main = setup - -All the package description information is assumed to be known to the makefile system, and so does not -appear in the setup script. -Thus, - - setup configure --ghc - -invokes - - ./configure --with-hc=ghc - -Similarly -setup build -invokes -make all And so on. - -Marcus simply arranges that when his makefiles build a distribution, they include this simple setup script in -the root of the distribution, where the Bob the Builder expects to find it. - - -The simple build infrastructure - - -In many cases, though, a Haskell package will consist of nothing more than a bunch of Haskell modules, -with perhaps the odd C file. In that case, the HLI provides a simple build infrastructure that -completely replaces make. (Think hmake.) The emphasis is on ``simple'': it deals with the 75% case only. -If you want something more elaborate, you can (a) modify the simple build infrastructure (which is written in Haskell) -(b) use makefiles, or (c) implement something else entirely. - -The simple build infrastructure works as follows. Angela puts the following Hasell file Setup.lhs in the -root of her tree: - - module Main where - import Distribution.Simple - - pkgDescr :: PkgDescr - pkgDescr = .... - - main = setup pkgDescr - -Here PkgDescr is a Haskell data structure that describes the package: its name, version, dependencies. -It contains precisely the information that is output by setup info -- see . - -Now Angela can build her package by saying - - Setup.lhs build - -She can even install it on her own machine by saying - - Setup.lhs install - -She can build a HLI source distribution: - - Setup.lhs source-dist - -The full details are given in . - -It is no coincidence that the interface is very similar to that for the setup script -for an HLI package distribution (). -In fact, Distribution.Simple.defaultMain conforms to the specification of , and when it builds -a distribution, it includes ./Setup.lhs in the tarball, ready to be run by Bob the Builder. -However, Distribution.Simple.defaultMain of course implements a richer interface than that required by -, becuase it's intended to support Angela as well as Bob. -The full specification is in . - - -<function>PkgInfo</function> - -...describe PkgInfo... -Which compiler flags does she put in the compiler-flags part of PkgInfo, and which does she -pass to setup configure? Answer: the package should compile in a sensible way using only the -former. The latter are just for build-specific modification (e.g. make a debug build). - - - -<function>Distribution.Simple.defaultMain</function> - -Command line interface to the simple build infrastructure. - - - - - - - - -What the compilers must implement - -The HLI requires that the Haskell implementations be somewhat package-aware. -This section documents those requirements - -Building and registering a package - -Installing a package ultimately involves these steps: - - - Compiling the source files, by invoking the compiler. Even Hugs may require - some processing (e.g running cpp). - - - - Copying the compiled files into some place. Typically the compiler - places no pre-conditions on where "some place" is; instead one - usually follows the conventions of the host operating system. - - - - Registering the package: telling the compiler about the - existence of the package, and where its files are. - To register the package one invokes a compiler-specific program hc-pkg (i.e. ghc-pkg, - hugs-pkg etc), passing it an installed package description (IPD) - describing the package. - - - -It must be possible to register many versions of the same package. - -Shared packages and user packages - - -A package can be registered either as a shared package or as a user package. -The former means that anyone invoking hc will see the new package. The latter means -that only the user who installed the package will see it. - - -User packages shadow shared packages, in the following sense: - - A Haskell import for module M will seek M in a user package first. - - - The hc-pkg commands that take package IDs will look for a user package first. - - - -Hmm. If there are several ghc's around, can their user packages get mixed up? I hope not. - - - -Exposed packages and hidden packages - - -An installed package can be exposed or hidden. An exposed package -populates the module name space, while a hidden package does not. Hidden packages are nevertheless necessary. -For example, the user might use -package A-2.1 and B-1.0; -but B-1.0 might depend on A-1.9. So the latter must be installed (else B-1.0 could not be), but -should be hidden, so that user imports see A-2.1. -The registration program hc-pkg provides operations to expose or hide an -already-installed package. - - - -Registration invariants - -The registration program hc-pkg checks the following invariants: - - -Before registering a package P, check all the packages that P depends on are already registered. -If P is being registered as a shared package, P's dependencies must also be shared packages. - - -Before registering an exposed user package P, check that the modules that are exposed by P do not have the same -names (in the hierarchical module name space) as any other module in an exposed user package Q. Similarly -for system packages. (However, a system package may expose a module with the same name as a user package. - - -Before un-registering a package P, check that no package that depends on P is registered. -The exception is that when un-registering a shared package, hc-pkg cannot -check that no user has a user package depending on P. - - - - - The <function>-package</function> compiler flag - - -Registering a package means that subsequent invocations of the compiler will use a module namespace -augmented by the newly-installed package. - - -By default, the module namespace is populated only by the latest version of a particular package. -This can be overridden using the -package flag. -Question: what does -package hunit-1.2 -package hunit-1.3 do? -Does the second override the first? Or are they both in scope? I think the former. - -An attempt to import a module that is defined by more than one installed package yields an ambiguous-import -error, rather like an attempt to use an identifier that is defined by more than one imported module. -(Comment: there ought be some way to resolve such ambiguities. Per-import qualification? -disable-package X? --package Y specifies winner?) - - - -The interface to <function>X-pkg</function> - -Registering a package with a compiler records the package information in some -implementation-specific way; how it does so is not constrained by the HLI. -Much of an IPD is independent of the compiler, but it may also include compiler-specific -fields. - -Each Haskell implementation hc must provide an associated program hc-pkg which -allows a user to make a new package known to the compiler, and to ask what packages it knows. Here is a summary of its interface - -Some of these commands (unregister, hide, and describe) make sense for package IDs which offer a range, such as "hc-pkg unregister "hmake<2.3". - - <function>hc-pkg</function> interface - - - - hc-pkg register - filename - - - - Register the package using the specified installed package description. - The syntax for the latter is given in . - - - hc-pkg unregister - pkg-id - - Unregister the specified package. - - hc-pkg expose - pkg-id - - Expose the specified package. - - hc-pkg hide - pkg-id - - Hide the specified package. - - hc-pkg list - List all registered packages, both shared and user, hidden and exposed. - - - hc-pkg describe pkg-id - - Give the registered description for the specified package. - The description is returned in precisely the syntax required by - hc-pkg register. - - - hc-pkg field pkg-id - field - - - Extract the specifed field of the package description for the specified package. - - - -
-A pkg argument can be a package ID, such as "hunit-2.3", or just a package name, -such as "hunit". To determine which package is meant, hc-pkg searches first the -registered user packages and then the shared packages. If no such package exists, the command fails; that is, it does nothing, -returning a non-zero error code. -If only a name is specified, hc-pkg fails -unless the name identifies a unique package among the user packages, or among the shared pacakges. As usual, the -user packages win. -
-Can we give the flag to hide, expose, -describe? Can we register a package that is already registered? What if it's registered -as a shared package and we register it as a user package? - -
- -Syntax of installed package description - -...include the list of ``externally visible modules''. - -
- - - -Related Systems - -I will try to outline interesting points in a variety of systems -that we can learn from. These systems may be intended for building or -installing packages, or repositories for packages. I am not deeply -familiar with all of the tools here, and would be interested in -hearing more relevant points from someone with more knowledge. -Another weakness of mine is that I don't know much about Microsoft -Windows, so some good examples for Windows systems would be -helpful. - -
Debian - - -The Debian GNU/Linux system -is a good example of a binary distribution -(meaning that packages are distributed in binary, as opposed to source -code form), and its packaging system (dpkg) -is somewhat similar to the more famous RPM. -Debian has several other tools to help the user to install packages, -most notably, apt. The Debian toolset is -interesting for several reasons: - - - - It handles dependencies extremely well. A single - command can download and install a package, as well as downloading - and installing all of its dependencies. - - It handles updates extremely well. One command - (apt-get update) checks for new versions of - packages and updates a local database. Another command - (apt-get dist-upgrade) downloads and installs all - new versions of installed packages and any new - dependencies. - - - There are standard commands for downloading and - building packages from source. If I'm interested in hacking on a - package, I can run apt-get source packagename - which will download and unpack the source code for the package. The - source can then be built with the standard command - debuild. - - - The Debian Project maintains a central repository - for packages, and the packaging tools offer support for using - unofficial repositories as well. The central repositories include a - set of servers, the autobuilders, which compile - uploaded source packages for a variety of hardware architectures - (see below) and make them available as binary packages. As a - packager, I merely upload the source code to my package, and the - autobuilders do the rest. - - Currently the hardware architectures supported by - Debian are Intel x86, Motorola 68k, Sun SPARC, Alpha, PowerPC, ARM, - MIPS, HP PA-RISC, IA-64, S/390. Debian also runs on non-Linux - systems, including GNU/Hurd, GNU/NetBSD, and GNU/FreeBSD. The - package management tools also run on MacOS X under the name of the - Fink project. - - - - -
- -
Python Distutils - -Python's &distutils; -system is in many ways similar to what we propose here. It is -a system for building and installing Python modules, written purely in -Python. The user interface is a Python script, -(setup.py by convention) and a setup -configuration file (setup.cfg by convention). To -quote from Distributing -Python Modules, "The setup configuration file is a useful -middle-ground between the setup script--which, ideally, would be -opaque to installers -- and the command-line to the setup script, -which is outside of your control and entirely up to the -installer. " - -Its noteworthy that Python has a big advantage over many -programming languages when implementing a system like &distutils;: It -is designed to be well suited to so-called scripting tasks, which are -common to the installation task, and Python has done these tasks in a -portable way for a long time. I believe that Haskell should evolve -portable ways to perform common scripting tasks. - -
- -
&cpan; and Boost - - Quoting from &cpan;'s web -site "&cpan; is the Comprehensive Perl Archive Network, a -large collection of Perl software and documentation." That really -says it all. It is a central location where Perl developers can -contribute the software they write. - -&cpan; has a means of standardizing installation, -Makefile.pl (which is a Perl script which creates -a Makefile with targets like "install", "test", "config", "clean", etc.). Makefile.pl typically uses the MakeMover -module. It also has a means of registering a namespace for the -module that a developer is contributing. - -From the Boost web -site "[Boost] provides free peer-reviewed portable C++ source -libraries. The emphasis is on libraries which work well with the C++ -Standard Library. One goal is to establish "existing practice" and -provide reference implementations so that the Boost libraries are -suitable for eventual standardization. Some of the libraries have -already been proposed for inclusion in the C++ Standards Committee's -upcoming C++ Standard Library Technical Report." - -From what I can tell, unlike &cpan;, Boost is a bit more focused -on standards and review. That is, it is perhaps more Cathedral than -Bazaar See Eric Raymond's essay The -Cathedral and the Bazaar.. Boost does not -currently have a standard means of installation. -
- -
FreeBSD's Ports System - -The FreeBSD Ports -Collection is a collection of software with a standard means -of compilation and installation. FreeBSD is a source distribution -(whereas Debian is a Binary Distribution). Packages come in -source-code form with a Makefile suitable for installing the program -on a FreeBSD system. The ports collection is very large (around 9000 -packages). - -Some things may be simpler with a source distribution than with -a binary distribution. For instance, since the code is expected to be -already on the machine and buildable, when a new compiler is installed -one merely needs to rebuild the dependant libraries. In contrast, -with a binary distribution like Debian one must wait for a new binary -package to be made available. However, as I understand it, FreeBSD -has no means of recompiling dependant packages automatically when a -new compiler is installed. - -
- - - - - -
The &xemacs; Packaging -System - - -As most folks know, &xemacs; is not only a text editor, but also a -Lisp environment. Its functionality can be extended with lisp -programs, and many such programs are available from &xemacs;' Packaging -System. Simply put, the packaging system offers a menu-driven -interface within &xemacs; where the user can browse available -packages, select packages she is interested in, and ask &xemacs; to -download and install them. This system is interesting because it is -cross-platform (Unix, Linux, Windows, etc.) and is designed to work -only with elisp. - - - - -
- -
Make-Based Systems - -The "fptools" build system has been used for many years in the -cross-platform &ghc; compiler. It is a make-based system which is -capable of a wide variety of installation tasks, compilation tasks, -and system configuration tasks. Currently, it is not entirely generic -across &impls;, and does not yet deal with some of the package -registration issues mentioned above. - -At Yale, another system is being developed. It is also a -make-based system and works reasonably well on various platforms -(Unix, Linux, Windows) and &impls;. It also does not yet deal with -all of the package registration issues mentioned above. - -Both tools can benefit from a standard packaging system. - -Because make has been used for many -years, it is expected that these systems will be able to do more than -the initial release of the &distMod;. The Setup script will be -designed with this in mind, and should be able to wrap these tools in -order to provide a common interface for users and for layered -tools. - -
- -
&hmake; - -From the &hmake; home page, -&hmake; is an intelligent compilation management tool for -Haskell programs. It automatically extracts dependencies between -source modules, and issues the appropriate compiler commands to -rebuild only those that have changed, given just the name of the -program or module that you want to build. Yes, you need never write a -Makefile again! &hmake; also does a good job of handling the -variety of compilers that might be installed on a user's system. It -maintains a list of compilers and can switch between them according to -a flag. It also has a default compiler. - -&hmake; is particularly interesting to us because it is written -in Haskell and handles the task of compiling Haskell tools quite well. -One shortcoming is that it is not extensible on a per-project basis: -it is difficult to add support for new preprocessors without editing -the &hmake; code itself. It does, however, perform a lot of the tasks -that &DistBuild; will ultimately have to perform, and we hope to reuse -some of the code. - -Another interesting feature of &hmake; is the -Haskell Interactive tool (hi). hi -is, an interpreter-like environment that you can wrap over any -common Haskell compiler to achieve an interactive development -style. This is interesting because it would be nice to have a -generic /usr/bin/haskell which would use the -default compiler to interpret Haskell scripts. - -
- -
- -
rmfile ./doc/libraryInfrastructure.sgml rmdir ./doc hunk ./Makefile 49 + cd test/wash2hs && make clean hunk ./Makefile 51 -remove: +remove: remove-cabal remove-hunit +remove-cabal: hunk ./Makefile 54 + -rm -rf $(PREF)/lib/Cabal-0.1 +remove-hunit: hunk ./Makefile 57 - -rm -r $(PREF)/lib/{Cabal-0.1,HUnit-1.0} + -rm -rf $(PREF)/lib/HUnit-1.0 adddir ./Compat addfile ./Compat/ReadP.hs hunk ./Compat/ReadP.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Text.ParserCombinators.ReadP +-- Copyright : (c) The University of Glasgow 2002 +-- License : BSD-style (see the file libraries/base/LICENSE) +-- +-- Maintainer : libraries@haskell.org +-- Stability : provisional +-- Portability : non-portable (local universal quantification) +-- +-- This is a library of parser combinators, originally written by Koen Claessen. +-- It parses all alternatives in parallel, so it never keeps hold of +-- the beginning of the input string, a common source of space leaks with +-- other parsers. The '(+++)' choice combinator is genuinely commutative; +-- it makes no difference which branch is \"shorter\". +-- +-- See also Koen's paper /Parallel Parsing Processes/ +-- (). +-- +-- This version of ReadP has been locally hacked to make it H98, by +-- Martin Sjögren +----------------------------------------------------------------------------- + +module Compat.ReadP + ( + -- * The 'ReadP' type + ReadP, -- :: * -> *; instance Functor, Monad, MonadPlus + + -- * Primitive operations + get, -- :: ReadP Char + look, -- :: ReadP String + (+++), -- :: ReadP a -> ReadP a -> ReadP a + (<++), -- :: ReadP a -> ReadP a -> ReadP a + gather, -- :: ReadP a -> ReadP (String, a) + + -- * Other operations + pfail, -- :: ReadP a + satisfy, -- :: (Char -> Bool) -> ReadP Char + char, -- :: Char -> ReadP Char + string, -- :: String -> ReadP String + munch, -- :: (Char -> Bool) -> ReadP String + munch1, -- :: (Char -> Bool) -> ReadP String + skipSpaces, -- :: ReadP () + choice, -- :: [ReadP a] -> ReadP a + count, -- :: Int -> ReadP a -> ReadP [a] + between, -- :: ReadP open -> ReadP close -> ReadP a -> ReadP a + option, -- :: a -> ReadP a -> ReadP a + optional, -- :: ReadP a -> ReadP () + many, -- :: ReadP a -> ReadP [a] + many1, -- :: ReadP a -> ReadP [a] + skipMany, -- :: ReadP a -> ReadP () + skipMany1, -- :: ReadP a -> ReadP () + sepBy, -- :: ReadP a -> ReadP sep -> ReadP [a] + sepBy1, -- :: ReadP a -> ReadP sep -> ReadP [a] + endBy, -- :: ReadP a -> ReadP sep -> ReadP [a] + endBy1, -- :: ReadP a -> ReadP sep -> ReadP [a] + chainr, -- :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a + chainl, -- :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a + chainl1, -- :: ReadP a -> ReadP (a -> a -> a) -> ReadP a + chainr1, -- :: ReadP a -> ReadP (a -> a -> a) -> ReadP a + manyTill, -- :: ReadP a -> ReadP end -> ReadP [a] + + -- * Running a parser + ReadS, -- :: *; = String -> [(a,String)] + readP_to_S, -- :: ReadP a -> ReadS a + readS_to_P, -- :: ReadS a -> ReadP a + + -- * Properties + -- $properties + ) + where + +import Control.Monad( MonadPlus(..), liftM2 ) +import Data.Char (isSpace) + +infixr 5 +++, <++ + +-- --------------------------------------------------------------------------- +-- The P type +-- is representation type -- should be kept abstract + +data P s a + = Get (s -> P s a) + | Look ([s] -> P s a) + | Fail + | Result a (P s a) + | Final [(a,[s])] -- invariant: list is non-empty! + +-- Monad, MonadPlus + +instance Monad (P s) where + return x = Result x Fail + + (Get f) >>= k = Get (\c -> f c >>= k) + (Look f) >>= k = Look (\s -> f s >>= k) + Fail >>= k = Fail + (Result x p) >>= k = k x `mplus` (p >>= k) + (Final r) >>= k = final [ys' | (x,s) <- r, ys' <- run (k x) s] + + fail _ = Fail + +instance MonadPlus (P s) where + mzero = Fail + + -- most common case: two gets are combined + Get f1 `mplus` Get f2 = Get (\c -> f1 c `mplus` f2 c) + + -- results are delivered as soon as possible + Result x p `mplus` q = Result x (p `mplus` q) + p `mplus` Result x q = Result x (p `mplus` q) + + -- fail disappears + Fail `mplus` p = p + p `mplus` Fail = p + + -- two finals are combined + -- final + look becomes one look and one final (=optimization) + -- final + sthg else becomes one look and one final + Final r `mplus` Final t = Final (r ++ t) + Final r `mplus` Look f = Look (\s -> Final (r ++ run (f s) s)) + Final r `mplus` p = Look (\s -> Final (r ++ run p s)) + Look f `mplus` Final r = Look (\s -> Final (run (f s) s ++ r)) + p `mplus` Final r = Look (\s -> Final (run p s ++ r)) + + -- two looks are combined (=optimization) + -- look + sthg else floats upwards + Look f `mplus` Look g = Look (\s -> f s `mplus` g s) + Look f `mplus` p = Look (\s -> f s `mplus` p) + p `mplus` Look f = Look (\s -> p `mplus` f s) + +-- --------------------------------------------------------------------------- +-- The ReadP type + +newtype Parser r s a = R ((a -> P s r) -> P s r) +type ReadP r a = Parser r Char a + +-- Functor, Monad, MonadPlus + +instance Functor (Parser r s) where + fmap h (R f) = R (\k -> f (k . h)) + +instance Monad (Parser r s) where + return x = R (\k -> k x) + fail _ = R (\_ -> Fail) + R m >>= f = R (\k -> m (\a -> let R m' = f a in m' k)) + +instance MonadPlus (Parser r s) where + mzero = pfail + mplus = (+++) + +-- --------------------------------------------------------------------------- +-- Operations over P + +final :: [(a,[s])] -> P s a +-- Maintains invariant for Final constructor +final [] = Fail +final r = Final r + +--run :: P s a -> ReadS a +run (Get f) (c:s) = run (f c) s +run (Look f) s = run (f s) s +run (Result x p) s = (x,s) : run p s +run (Final r) _ = r +run _ _ = [] + +-- --------------------------------------------------------------------------- +-- Operations over ReadP + +--get :: ReadP Char +-- ^ Consumes and returns the next character. +-- Fails if there is no input left. +get = R Get + +--look :: ReadP String +-- ^ Look-ahead: returns the part of the input that is left, without +-- consuming it. +look = R Look + +--pfail :: ReadP a +-- ^ Always fails. +pfail = R (\_ -> Fail) + +--(+++) :: ReadP a -> ReadP a -> ReadP a +-- ^ Symmetric choice. +R f1 +++ R f2 = R (\k -> f1 k `mplus` f2 k) + +--(<++) :: ReadP a -> ReadP a -> ReadP a +-- ^ Local, exclusive, left-biased choice: If left parser +-- locally produces any result at all, then right parser is +-- not used. +R f <++ q = + do s <- look + probe (f return) s 0 + where + probe (Get f) (c:s) n = probe (f c) s (n+1) + probe (Look f) s n = probe (f s) s n + probe p@(Result _ _) _ n = discard n >> R (p >>=) + probe (Final r) _ _ = R (Final r >>=) + probe _ _ _ = q + + discard 0 = return () + discard n = get >> discard (n-1) + +--gather :: ReadP a -> ReadP (String, a) +-- ^ Transforms a parser into one that does the same, but +-- in addition returns the exact characters read. +-- IMPORTANT NOTE: 'gather' gives a runtime error if its first argument +-- is built using any occurrences of readS_to_P. +gather (R m) = + R (\k -> gath id (m (\a -> return (\s -> k (s,a))))) + where + gath l (Get f) = Get (\c -> gath (l.(c:)) (f c)) + gath l Fail = Fail + gath l (Look f) = Look (\s -> gath l (f s)) + gath l (Result k p) = k (l []) `mplus` gath l p + gath l (Final r) = error "do not use readS_to_P in gather!" + +-- --------------------------------------------------------------------------- +-- Derived operations + +--satisfy :: (Char -> Bool) -> ReadP Char +-- ^ Consumes and returns the next character, if it satisfies the +-- specified predicate. +satisfy p = do c <- get; if p c then return c else pfail + +--char :: Char -> ReadP Char +-- ^ Parses and returns the specified character. +char c = satisfy (c ==) + +--string :: String -> ReadP String +-- ^ Parses and returns the specified string. +string this = do s <- look; scan this s + where + scan [] _ = do return this + scan (x:xs) (y:ys) | x == y = do get; scan xs ys + scan _ _ = do pfail + +--munch :: (Char -> Bool) -> ReadP String +-- ^ Parses the first zero or more characters satisfying the predicate. +munch p = + do s <- look + scan s + where + scan (c:cs) | p c = do get; s <- scan cs; return (c:s) + scan _ = do return "" + +--munch1 :: (Char -> Bool) -> ReadP String +-- ^ Parses the first one or more characters satisfying the predicate. +munch1 p = + do c <- get + if p c then do s <- munch p; return (c:s) else pfail + +--choice :: [ReadP a] -> ReadP a +-- ^ Combines all parsers in the specified list. +choice [] = pfail +choice [p] = p +choice (p:ps) = p +++ choice ps + +--skipSpaces :: ReadP () +-- ^ Skips all whitespace. +skipSpaces = + do s <- look + skip s + where + skip (c:s) | isSpace c = do get; skip s + skip _ = do return () + +--count :: Int -> ReadP a -> ReadP [a] +-- ^ @ count n p @ parses @n@ occurrences of @p@ in sequence. A list of +-- results is returned. +count n p = sequence (replicate n p) + +--between :: ReadP open -> ReadP close -> ReadP a -> ReadP a +-- ^ @ between open close p @ parses @open@, followed by @p@ and finally +-- @close@. Only the value of @p@ is returned. +between open close p = do open + x <- p + close + return x + +--option :: a -> ReadP a -> ReadP a +-- ^ @option x p@ will either parse @p@ or return @x@ without consuming +-- any input. +option x p = p +++ return x + +--optional :: ReadP a -> ReadP () +-- ^ @optional p@ optionally parses @p@ and always returns @()@. +optional p = (p >> return ()) +++ return () + +--many :: ReadP a -> ReadP [a] +-- ^ Parses zero or more occurrences of the given parser. +many p = return [] +++ many1 p + +--many1 :: ReadP a -> ReadP [a] +-- ^ Parses one or more occurrences of the given parser. +many1 p = liftM2 (:) p (many p) + +--skipMany :: ReadP a -> ReadP () +-- ^ Like 'many', but discards the result. +skipMany p = many p >> return () + +--skipMany1 :: ReadP a -> ReadP () +-- ^ Like 'many1', but discards the result. +skipMany1 p = p >> skipMany p + +--sepBy :: ReadP a -> ReadP sep -> ReadP [a] +-- ^ @sepBy p sep@ parses zero or more occurrences of @p@, separated by @sep@. +-- Returns a list of values returned by @p@. +sepBy p sep = sepBy1 p sep +++ return [] + +--sepBy1 :: ReadP a -> ReadP sep -> ReadP [a] +-- ^ @sepBy1 p sep@ parses one or more occurrences of @p@, separated by @sep@. +-- Returns a list of values returned by @p@. +sepBy1 p sep = liftM2 (:) p (many (sep >> p)) + +--endBy :: ReadP a -> ReadP sep -> ReadP [a] +-- ^ @endBy p sep@ parses zero or more occurrences of @p@, separated and ended +-- by @sep@. +endBy p sep = many (do x <- p ; sep ; return x) + +--endBy1 :: ReadP a -> ReadP sep -> ReadP [a] +-- ^ @endBy p sep@ parses one or more occurrences of @p@, separated and ended +-- by @sep@. +endBy1 p sep = many1 (do x <- p ; sep ; return x) + +--chainr :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a +-- ^ @chainr p op x@ parses zero or more occurrences of @p@, separated by @op@. +-- Returns a value produced by a /right/ associative application of all +-- functions returned by @op@. If there are no occurrences of @p@, @x@ is +-- returned. +chainr p op x = chainr1 p op +++ return x + +--chainl :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a +-- ^ @chainl p op x@ parses zero or more occurrences of @p@, separated by @op@. +-- Returns a value produced by a /left/ associative application of all +-- functions returned by @op@. If there are no occurrences of @p@, @x@ is +-- returned. +chainl p op x = chainl1 p op +++ return x + +--chainr1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a +-- ^ Like 'chainr', but parses one or more occurrences of @p@. +chainr1 p op = scan + where scan = p >>= rest + rest x = do f <- op + y <- scan + return (f x y) + +++ return x + +--chainl1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a +-- ^ Like 'chainl', but parses one or more occurrences of @p@. +chainl1 p op = p >>= rest + where rest x = do f <- op + y <- p + rest (f x y) + +++ return x + +--manyTill :: ReadP a -> ReadP end -> ReadP [a] +-- ^ @manyTill p end@ parses zero or more occurrences of @p@, until @end@ +-- succeeds. Returns a list of values returned by @p@. +manyTill p end = scan + where scan = (end >> return []) <++ (liftM2 (:) p scan) + +-- --------------------------------------------------------------------------- +-- Converting between ReadP and Read + +--readP_to_S :: ReadP a -> ReadS a +-- ^ Converts a parser into a Haskell ReadS-style function. +-- This is the main way in which you can \"run\" a 'ReadP' parser: +-- the expanded type is +-- @ readP_to_S :: ReadP a -> String -> [(a,String)] @ +readP_to_S (R f) = run (f return) + +--readS_to_P :: ReadS a -> ReadP a +-- ^ Converts a Haskell ReadS-style function into a parser. +-- Warning: This introduces local backtracking in the resulting +-- parser, and therefore a possible inefficiency. +readS_to_P r = + R (\k -> Look (\s -> final [bs'' | (a,s') <- r s, bs'' <- run (k a) s'])) + +-- --------------------------------------------------------------------------- +-- QuickCheck properties that hold for the combinators + +{- $properties +The following are QuickCheck specifications of what the combinators do. +These can be seen as formal specifications of the behavior of the +combinators. + +We use bags to give semantics to the combinators. + +> type Bag a = [a] + +Equality on bags does not care about the order of elements. + +> (=~) :: Ord a => Bag a -> Bag a -> Bool +> xs =~ ys = sort xs == sort ys + +A special equality operator to avoid unresolved overloading +when testing the properties. + +> (=~.) :: Bag (Int,String) -> Bag (Int,String) -> Bool +> (=~.) = (=~) + +Here follow the properties: + +> prop_Get_Nil = +> readP_to_S get [] =~ [] +> +> prop_Get_Cons c s = +> readP_to_S get (c:s) =~ [(c,s)] +> +> prop_Look s = +> readP_to_S look s =~ [(s,s)] +> +> prop_Fail s = +> readP_to_S pfail s =~. [] +> +> prop_Return x s = +> readP_to_S (return x) s =~. [(x,s)] +> +> prop_Bind p k s = +> readP_to_S (p >>= k) s =~. +> [ ys'' +> | (x,s') <- readP_to_S p s +> , ys'' <- readP_to_S (k (x::Int)) s' +> ] +> +> prop_Plus p q s = +> readP_to_S (p +++ q) s =~. +> (readP_to_S p s ++ readP_to_S q s) +> +> prop_LeftPlus p q s = +> readP_to_S (p <++ q) s =~. +> (readP_to_S p s +<+ readP_to_S q s) +> where +> [] +<+ ys = ys +> xs +<+ _ = xs +> +> prop_Gather s = +> forAll readPWithoutReadS $ \p -> +> readP_to_S (gather p) s =~ +> [ ((pre,x::Int),s') +> | (x,s') <- readP_to_S p s +> , let pre = take (length s - length s') s +> ] +> +> prop_String_Yes this s = +> readP_to_S (string this) (this ++ s) =~ +> [(this,s)] +> +> prop_String_Maybe this s = +> readP_to_S (string this) s =~ +> [(this, drop (length this) s) | this `isPrefixOf` s] +> +> prop_Munch p s = +> readP_to_S (munch p) s =~ +> [(takeWhile p s, dropWhile p s)] +> +> prop_Munch1 p s = +> readP_to_S (munch1 p) s =~ +> [(res,s') | let (res,s') = (takeWhile p s, dropWhile p s), not (null res)] +> +> prop_Choice ps s = +> readP_to_S (choice ps) s =~. +> readP_to_S (foldr (+++) pfail ps) s +> +> prop_ReadS r s = +> readP_to_S (readS_to_P r) s =~. r s +-} hunk ./Distribution/Package.hs 58 -import Control.Monad.State hunk ./Distribution/Package.hs 60 -import Data.Char(isSpace, toLower) +import Data.Char hunk ./Distribution/Package.hs 71 -import Text.ParserCombinators.Parsec +import Compat.ReadP hunk ./Distribution/Package.hs 192 -data PError = Parsec ParseError | FromString String +data PError = AmbigousParse | NoParse | FromString String hunk ./Distribution/Package.hs 198 -showError (Parsec pe) = show pe +showError AmbigousParse = "Ambigous parse" +showError NoParse = "No parse" hunk ./Distribution/Package.hs 210 - do v <- runP f parseVersion val + do v <- runP parseVersion val hunk ./Distribution/Package.hs 214 - do l <- runP f parseLicense val + do l <- runP parseLicense val hunk ./Distribution/Package.hs 217 - do path <- runP f parseFilePath val + do path <- runP parseFilePath val hunk ./Distribution/Package.hs 228 - Just xs -> do path <- runP "main-is" parseFilePath xs + Just xs -> do path <- runP parseFilePath xs hunk ./Distribution/Package.hs 231 - Nothing -> throwError $ strMsg $ + Nothing -> fail $ hunk ./Distribution/Package.hs 233 - parseExecutableStanza ((f,_):st) = throwError $ strMsg $ + parseExecutableStanza ((f,_):st) = fail $ hunk ./Distribution/Package.hs 237 - do xs <- runP f (parseCommaList word) val + do xs <- runP (parseCommaList word) val hunk ./Distribution/Package.hs 240 - do xs <- runP f (parseCommaList parseDependency) val + do xs <- runP (parseCommaList parseDependency) val hunk ./Distribution/Package.hs 244 - do paths <- runP f (parseCommaList parseFilePath) val + do paths <- runP (parseCommaList parseFilePath) val hunk ./Distribution/Package.hs 247 - do paths <- runP f (parseCommaList parseFilePath) val + do paths <- runP (parseCommaList parseFilePath) val hunk ./Distribution/Package.hs 250 - do paths <- runP f (parseCommaList parseFilePath) val + do paths <- runP (parseCommaList parseFilePath) val hunk ./Distribution/Package.hs 253 - do path <- runP f parseFilePath val + do path <- runP parseFilePath val hunk ./Distribution/Package.hs 257 - do xs <- runP f (parseCommaList moduleName) val + do xs <- runP (parseCommaList parseModuleName) val hunk ./Distribution/Package.hs 260 - do xs <- runP f (parseCommaList moduleName) val + do xs <- runP (parseCommaList parseModuleName) val hunk ./Distribution/Package.hs 263 - do exts <- runP f (parseCommaList parseExtension) val + do exts <- runP (parseCommaList parseExtension) val hunk ./Distribution/Package.hs 268 - Just c -> do xs <- runP f (parseCommaList parseOption) val + Just c -> do xs <- runP (parseCommaList parseOption) val hunk ./Distribution/Package.hs 273 - runP f p s = case parse p f s of - Left pe -> Left (Parsec pe) - Right a -> Right a hunk ./Distribution/Package.hs 274 +runP :: ReadP a a -> String -> Either PError a +runP p s = case [ x | (x,"") <- readP_to_S p s ] of + [a] -> Right a + [] -> Left NoParse + _ -> Left AmbigousParse + hunk ./Distribution/Package.hs 302 -moduleName = many (alphaNum <|> oneOf "_'.") "moduleName" +parseModuleName :: ReadP r String +parseModuleName = do x <- satisfy isUpper + xs <- munch (\x -> isAlphaNum x || x `elem` "_'.") + return (x:xs) hunk ./Distribution/Package.hs 307 -parseFilePath :: GenParser Char st FilePath -parseFilePath = parseReadS <|> (many1 (alphaNum <|> oneOf "-+/_.")) - "parseFilePath" +parseFilePath :: ReadP r FilePath +parseFilePath = parseReadS <++ (munch1 (\x -> isAlphaNum x || x `elem` "-+/_.")) hunk ./Distribution/Package.hs 310 -parseReadS :: Read a => GenParser Char st a -parseReadS = do toks <- getInput - case reads toks of - [(str,toks')] -> do setInput toks' - return str - _ -> fail "Bad String" +parseReadS :: Read a => ReadP r a +parseReadS = readS_to_P reads hunk ./Distribution/Package.hs 313 -parseDependency :: GenParser Char st Dependency -parseDependency = do name <- many1 (letter <|> digit <|> oneOf "-_") - skipMany parseWhite - ver <- parseVersionRange <|> return AnyVersion - skipMany parseWhite +parseDependency :: ReadP r Dependency +parseDependency = do name <- munch1 (\x -> isAlphaNum x || x `elem` "-_") + skipSpaces + ver <- parseVersionRange <++ return AnyVersion + skipSpaces hunk ./Distribution/Package.hs 319 - "parseDependency" hunk ./Distribution/Package.hs 320 -parseLicense :: GenParser Char st License +parseLicense :: ReadP r License hunk ./Distribution/Package.hs 323 -parseExtension :: GenParser Char st Extension +parseExtension :: ReadP r Extension hunk ./Distribution/Package.hs 326 -parseOption = many1 (letter <|> digit <|> oneOf "-+/\\._") -- FIXME +parseOption = munch1 (\x -> isAlphaNum x || x `elem` "-+/\\._") -- FIXME hunk ./Distribution/Package.hs 328 -toStr c = c >>= \x -> return [x] +word :: ReadP r String +word = munch1 isAlpha hunk ./Distribution/Package.hs 331 -word :: GenParser Char st String -word = many1 letter "word" +parseCommaList :: ReadP r a -- ^The parser for the stuff between commas + -> ReadP r [a] +parseCommaList p = sepBy1 p separator + where separator = skipSpaces >> char ',' >> skipSpaces hunk ./Distribution/Package.hs 336 -parseCommaList :: GenParser Char st a -- ^The parser for the stuff between commas - -> GenParser Char st [a] -parseCommaList p - = do words <- sepBy1 p separator - return words - where separator = spaces >> char ',' >> spaces hunk ./Distribution/Package.hs 337 -parseWhite = try parseSpaceNotNewline - <|> (try (char '\n' >> parseWhite)) - -parseSpaceNotNewline = (satisfy isSpaceNotNewline "space, not newline") - where isSpaceNotNewline :: Char -> Bool - isSpaceNotNewline '\n' = False - isSpaceNotNewline n = isSpace n - hunk ./Distribution/Package.hs 405 -hunitTests = [TestLabel "newline before word (parsewhite)" $ TestCase $ - do assertRight "newline before word 1" - "foo" (parse (skipMany parseWhite>>char '\n'>>word) "" " \n \nfoo") - assertRight "newline before word 2" - "foo" (parse (skipMany parseWhite>>char '\n'>>word) "" " \n \t \n \nfoo"), - - TestLabel "skip spaces not newlines" $ TestCase $ - do assertRight "spaces with newlines" - "foo" (parse (skipMany parseWhite>>word) "" " \n foo") - assertRight "spaces with newlines" - "foo" (parse (skipMany parseWhite>>word) "" " \n \t\n foo") - assertRight "no preceding spaces" - "foo" (parse (skipMany parseWhite>>word) "" "foo") - assertBool "newline before data without in-between spaces" - (isError (parse (skipMany parseWhite>>word) "" " \n \nfoo")), - --- TestLabel "basic fields" $ TestCase $ --- do let p1 = parse (do w1 <- parseField "Foo" False parseVersion --- skipMany parseWhite --- w2 <- parseField "Bar" True word --- return (w1, w2) --- ) "" --- knownVal1 = (Version {versionBranch = [3,2], versionTags = ["one"]},"boo") --- assertRight "basic spaces 1" --- knownVal1 (p1 "Foo: 3.2-one\nBar: boo") --- assertRight "basic spaces 2" --- knownVal1 (p1 "Foo: 3.2-one \t \nBar: boo") --- assertRight "basic spaces 3" --- knownVal1 (p1 "Foo : 3.2-one \t \nBar: boo ") --- assertRight "basic spaces 3" --- knownVal1 (p1 "Foo:3.2-one \t \nBar: boo ") --- assertRight "basic spaces with newline" --- knownVal1 (p1 "Foo:\n 3.2-one \t \nBar: boo ") --- assertRight "basic spaces with newline" --- knownVal1 (p1 "Foo:\n 3.2-one \t \n \nBar: boo "), - +hunitTests = [ hunk ./Distribution/Package.hs 408 - (parse parseLicense "" (show lVal)) + (runP parseLicense (show lVal)) hunk ./Distribution/Version.hs 64 +import Control.Monad ( liftM ) +import Data.Char ( isDigit, isAlpha ) hunk ./Distribution/Version.hs 68 -import Text.ParserCombinators.Parsec -import Text.ParserCombinators.Parsec.Language -import qualified Text.ParserCombinators.Parsec.Token as P +import Compat.ReadP hunk ./Distribution/Version.hs 198 -word :: GenParser Char st String -word = many1 letter "word" - hunk ./Distribution/Version.hs 199 -parseVersionRange :: GenParser Char st VersionRange -parseVersionRange = (do reservedOp "<" - v <- parseVersion - return $ EarlierVersion v) - <|> (do reservedOp ">" - v <- parseVersion - return $ LaterVersion v) - <|> (do reservedOp ">=" - v <- parseVersion - return $ orLaterVersion v) - <|> (do reservedOp "<=" - v <- parseVersion - return $ orEarlierVersion v) - <|> (do reservedOp "==" - v <- parseVersion - return $ ThisVersion v) +parseVersionRange :: ReadP r VersionRange +parseVersionRange = choice [ string s >> liftM f parseVersion + | (s,f) <- rangeOps ] + where rangeOps = [ ("<", EarlierVersion), + ("<=", orEarlierVersion), + (">", LaterVersion), + (">=", orLaterVersion), + ("==", ThisVersion) ] hunk ./Distribution/Version.hs 208 - hunk ./Distribution/Version.hs 210 -parseVersion :: GenParser Char st Version -parseVersion - = do branch <- branchParser - tags <- many (char '-' >> word) - return Version{versionBranch=branch, versionTags=tags} +parseVersion :: ReadP r Version +parseVersion = do branch <- sepBy1 (liftM read $ munch1 isDigit) (char '.') + tags <- many (char '-' >> munch1 isAlpha) + return Version{versionBranch=branch, versionTags=tags} hunk ./Distribution/Version.hs 215 --- ----------------------------------------------------------- --- |Parse a version of the form 1.2.3 -branchParser :: GenParser Char st [Int] -branchParser - = do n <- number - bs <- many branches - return (n : bs) - ---branches :: GenParser Char st [Int] -branches - = do char '.' - n <- number - return (n) - -number :: (Integral a, Read a) => GenParser Char st a -number = do{ ds <- many1 digit - ; return (read ds) - } - "number" - --- ----------------------------------------------------------------------------- --- Parsing dates - -{- --- Here is some code for parsing dates. We might need this at some point. - --- |Seperate the date with typically a '.' or a '-', /sep/ -dateSeparatedBy :: Char -> GenParser Char () Version -dateSeparatedBy sep - = try (do year <- number -- 2003.01.15, 2003.1.15 - char sep - month <- number - char sep - day <- number - return $ DateVersion year (toEnum $ month - 1) day) - <|> try (do year <- number -- 2003-Jan-15 - char sep - month <- shortMonthParser - char sep - day <- number - return $ DateVersion year month day) - - <|> try (do month <- shortMonthParser -- Nov-2002 - char sep - year <- number - return $ DateVersion year month 0) - - <|> try (do year <- number -- 2003-January-15 - char sep - month <- word - char sep - day <- number - return $ DateVersion year (read month) day) - -dateVersionParser :: Parser String -dateVersionParser - = try (dateSeparatedBy '.') - <|> (dateSeparatedBy '-') - -shortMonthParser :: Parser Month -shortMonthParser = foldl1 (<|>) [do reserved a;return b | (a,b) - <- [("Jan", January), ("Feb", February), - ("Mar", March), ("Apr", April), - ("May", May), ("Jun", June), - ("Jul", July), ("Aug", August), - ("Sep", September), ("Oct", October), - ("Nov", November), ("Dec", December)]] --} - -lexer :: P.TokenParser st -lexer = P.makeTokenParser - (emptyDef - - { P.reservedNames = ["Jan","Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "any" - ], - P.identStart = letter <|> char '_', - P.identLetter = alphaNum <|> oneOf "_'", - P.reservedOpNames = ["<", ">", "<=", ">=", "==", "-"] - }) - -whiteSpace :: CharParser st () -whiteSpace = P.whiteSpace lexer - -lexeme :: CharParser st a -> CharParser st a -lexeme = P.lexeme lexer - -symbol :: String -> CharParser st String -symbol = P.symbol lexer - -natural :: CharParser st Integer -natural = P.natural lexer - -parens :: CharParser st a -> CharParser st a -parens = P.parens lexer - -semi :: CharParser st String -semi = P.semi lexer - -identifier :: CharParser st String -identifier = P.identifier lexer - -reserved :: String -> CharParser st () -reserved = P.reserved lexer - -reservedOp :: String -> CharParser st () -reservedOp = P.reservedOp lexer - hunk ./Distribution/Version.hs 222 -doVersionParse input = let x = parse parseVersion "" input - in case x of - Left err -> Left (show err) - Right y -> Right y +doVersionParse input = case results of + [y] -> Right y + [] -> Left "No parse" + _ -> Left "Ambigous parse" + where results = [ x | (x,"") <- readP_to_S parseVersion input ] hunk ./Distribution/Version.hs 230 -doVersionRangeParse input - = let x = parse parseVersionRange "" input - in case x of - Left err -> Left (show err) - Right y -> Right y +doVersionRangeParse input = case results of + [y] -> Right y + [] -> Left "No parse" + _ -> Left "Ambigous parse" + where results = [ x | (x,"") <- readP_to_S parseVersionRange input ] + hunk ./Setup.description 4 -build-depends: haskell-src, parsec +build-depends: haskell-src hunk ./Setup.description 14 - Distribution.GetOpt + Distribution.GetOpt, + Compat.ReadP hunk ./Distribution/Misc.hs 88 + | EmptyDataDecls hunk ./Distribution/Misc.hs 140 + extensionToGHCFlag EmptyDataDecls = Right "-fglasgow-exts" hunk ./Distribution/Misc.hs 156 + extensionToNHCFlag EmptyDataDecls = Right "" hunk ./Distribution/Misc.hs 181 + extensionToHugsFlag EmptyDataDecls = Right "" hunk ./Distribution/TODO 5 +-- tricky because of need to preprocess :( hunk ./Distribution/TODO 9 -- constructorless data-types? hunk ./Distribution/TODO 13 -** Question: under what conditions does library == Nothing? -- Answer: when any of the buildInfo is filled out? hunk ./Distribution/ModuleTest.hs 117 - doesFileExist "dist/build/wash2hs" + doesFileExist "dist/build/hs/wash2hs" hunk ./Distribution/Simple/Build.hs 111 - "-odir", pref, "-hidir", pref + "-odir", pathJoin [pref, hsSourceDir build], + "-hidir", pathJoin [pref, hsSourceDir build] hunk ./Distribution/Simple/Build.hs 123 - let hObjs = map (++objsuffix) (map dotToSep (modules build)) - cObjs = [file ++ objsuffix | (file, _) - <- (map splitExt (cSources build))] + let hObjs = [ pathJoin [hsSourceDir build, dotToSep x ++ objsuffix] + | x <- modules build ] + cObjs = [ file ++ objsuffix + | (file, _) <- (map splitExt (cSources build)) ] hunk ./Distribution/Simple/Build.hs 133 - "-o", pathJoin [pref, exeName] + "-o", pathJoin [pref, hsSourceDir exeBi, exeName] hunk ./Distribution/Simple/Build.hs 136 - ++ [pathJoin [pref, modPath]] + ++ [pathJoin [pref, hsSourceDir exeBi, modPath]] hunk ./Distribution/Simple/Build.hs 144 - then [ "--make", "-i" ++ pref ] + then [ "--make", "-i" ++ pathJoin [pref, hsSourceDir build] ] hunk ./Distribution/Simple/Build.hs 170 - moveSources (hsSourceDir lib) pref (modules lib) ["hs","lhs"] - sequence_ [ moveSources (hsSourceDir exeBi) pref (modules exeBi) ["hs","lhs"] + moveSources (hsSourceDir lib) (pathJoin [pref, hsSourceDir lib]) (modules lib) ["hs","lhs"] + sequence_ [ moveSources (hsSourceDir exeBi) (pathJoin [pref, hsSourceDir exeBi]) (modules exeBi) ["hs","lhs"] hunk ./Distribution/Simple/Install.hs 81 - Hugs -> installHugs libPref buildPref pkg_descr + Hugs -> do when (hasLibs pkg_descr) (installHugs libPref buildPref pkg_descr) hunk ./Distribution/Simple/Install.hs 92 - sequence_ [copyFile (pathJoin [buildPref, e]) (pathJoin [pref, e]) - | Executable e _ _ <- executables pkg_descr] + sequence_ [copyFile (pathJoin [buildPref, hsSourceDir b, e]) (pathJoin [pref, e]) + | Executable e _ b <- executables pkg_descr] hunk ./Distribution/Simple/Install.hs 101 - = do moveSources buildPref pref (modules l) ["hi"] + = do moveSources (pathJoin [buildPref, hsSourceDir l]) pref (modules l) ["hi"] hunk ./Distribution/Simple/Install.hs 109 -installHugs pref buildPref pkg_descr - = moveSources buildPref pref (maybe [] modules (library pkg_descr)) ["lhs", "hs"] +installHugs pref buildPref pkg_descr@PackageDescription{library=Just l} + = moveSources (pathJoin [buildPref, hsSourceDir l]) pref (modules l) ["lhs", "hs"] hunk ./Makefile 74 - -rm -rf dist/debug hunk ./Makefile 75 - ghc $(GHCFLAGS) -DDEBUG -odir dist/debug -hidir dist/debug -i.:test/HUnit-1.0/src Distribution/ModuleTest -o moduleTest + ghc $(GHCFLAGS) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:test/HUnit-1.0/src Distribution/ModuleTest -o moduleTest hunk ./test/A/Makefile 3 - ghc -Wall --make -odir dist/tmp -hidir dist/tmp -i../..:../HUnit-1.0/src Setup.lhs -o setup + ghc --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup hunk ./test/HUnit-1.0/Makefile 3 - ghc -Wall --make -odir dist/tmp -hidir dist/tmp -i../..:src Setup.lhs -o setup + ghc --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup hunk ./test/wash2hs/Makefile 3 - ghc -Wall --make -odir dist/tmp -hidir dist/tmp -i../..:../HUnit-1.0/src Setup.lhs -o setup + ghc --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup addfile ./Compat/H98.hs hunk ./Compat/H98.hs 1 +module Compat.H98 where + +class Error e where + strMsg :: String -> e + +-- This is a horrible hack, but H98 doesn't allow +-- instance Error [Char] +instance Error Char where + strMsg s = head s +instance Error e => Error [e] where + strMsg s = map (strMsg . (:[])) s + +instance Error e => Monad (Either e) where + return = Right + fail = Left . strMsg + Left e >>= f = Left e + Right x >>= f = f x hunk ./Distribution/Package.hs 58 -import Control.Monad(when, foldM) +import Control.Monad(foldM) +#ifdef __NHC__ +-- nhc doesn't have C.M.Error (which defines Monad (Either String)) +import Compat.H98 +#else hunk ./Distribution/Package.hs 64 +#endif hunk ./Distribution/Package.hs 183 -notImp :: String -> a -notImp s = error $ s ++ " not yet implemented" - hunk ./Distribution/Package.hs 189 - Right x@PackageDescription{library=Nothing, - executables=[]} + Right PackageDescription{library=Nothing, + executables=[]} hunk ./Distribution/Package.hs 200 +showError :: PError -> String hunk ./Distribution/Package.hs 211 - parseBasicStanza pkg (f@"name", val) = return (setPkgName val pkg) - parseBasicStanza pkg (f@"version", val) = + parseBasicStanza pkg ("name", val) = return (setPkgName val pkg) + parseBasicStanza pkg ("version", val) = hunk ./Distribution/Package.hs 215 - parseBasicStanza pkg (f@"copyright", val) = return pkg{copyright=val} - parseBasicStanza pkg (f@"license", val) = + parseBasicStanza pkg ("copyright", val) = return pkg{copyright=val} + parseBasicStanza pkg ("license", val) = hunk ./Distribution/Package.hs 219 - parseBasicStanza pkg (f@"license-file", val) = + parseBasicStanza pkg ("license-file", val) = hunk ./Distribution/Package.hs 222 - parseBasicStanza pkg (f@"maintainer", val) = return pkg{maintainer=val} - parseBasicStanza pkg (f@"stability", val) = return pkg{stability=val} + parseBasicStanza pkg ("maintainer", val) = return pkg{maintainer=val} + parseBasicStanza pkg ("stability", val) = return pkg{stability=val} hunk ./Distribution/Package.hs 229 - parseExecutableStanza (("executable",exeName):st) = + parseExecutableStanza (("executable",eName):st) = hunk ./Distribution/Package.hs 233 - return $ Executable exeName path binfo + return $ Executable eName path binfo hunk ./Distribution/Package.hs 235 - "No 'Main-Is' field found for " ++ exeName ++ " stanza" - parseExecutableStanza ((f,_):st) = fail $ - "'Executable' stanza starts with field '" ++ f ++ "'" - parseExeHelp binfo (f@"main-is", _) = return binfo - parseExeHelp binfo (f@"extra-libs", val) = - do xs <- runP (parseCommaList word) val + "No 'Main-Is' field found for " ++ eName ++ " stanza" + parseExecutableStanza ((f,_):_) = fail $ + "'Executable' stanza starting with field '" ++ f ++ "'" + parseExecutableStanza _ = error "This shouldn't happen!" + parseExeHelp binfo ("main-is", _) = return binfo + parseExeHelp binfo ("extra-libs", val) = + do xs <- runP (parseCommaList parseLibName) val hunk ./Distribution/Package.hs 243 - parseExeHelp binfo (f@"build-depends", val) = + parseExeHelp binfo ("build-depends", val) = hunk ./Distribution/Package.hs 247 - parseExeHelp binfo (f@"c-sources", val) = + parseExeHelp binfo ("c-sources", val) = hunk ./Distribution/Package.hs 250 - parseExeHelp binfo (f@"include-dirs", val) = + parseExeHelp binfo ("include-dirs", val) = hunk ./Distribution/Package.hs 253 - parseExeHelp binfo (f@"includes", val) = + parseExeHelp binfo ("includes", val) = hunk ./Distribution/Package.hs 256 - parseExeHelp binfo (f@"hs-source-dir", val) = + parseExeHelp binfo ("hs-source-dir", val) = hunk ./Distribution/Package.hs 260 - parseExeHelp binfo (f@"modules", val) = + parseExeHelp binfo ("modules", val) = hunk ./Distribution/Package.hs 263 - parseExeHelp binfo (f@"exposed-modules", val) = + parseExeHelp binfo ("exposed-modules", val) = hunk ./Distribution/Package.hs 266 - parseExeHelp binfo (f@"extensions", val) = + parseExeHelp binfo ("extensions", val) = hunk ./Distribution/Package.hs 275 - parseExeHelp binfo (field, val) = error $ "Unknown field :: " ++ field + parseExeHelp _binfo (field, _val) = error $ "Unknown field :: " ++ field hunk ./Distribution/Package.hs 303 - (fld, "") -> error "FIXME" + (fld, _) -> error $ "Parser error: Line '" + ++ fld ++ "' has no colon" hunk ./Distribution/Package.hs 308 -parseModuleName = do x <- satisfy isUpper - xs <- munch (\x -> isAlphaNum x || x `elem` "_'.") - return (x:xs) +parseModuleName = do c <- satisfy isUpper + cs <- munch (\x -> isAlphaNum x || x `elem` "_'.") + return (c:cs) hunk ./Distribution/Package.hs 331 -parseOption = munch1 (\x -> isAlphaNum x || x `elem` "-+/\\._") -- FIXME +-- FIXME +-- Which characters are valid for arbitrary options to the compilers? +-- Couldn't this be basically anything? Maybe we should have a generic +-- parseAnything (that looks just like parseLibName, see below) +parseOption :: ReadP r String +parseOption = munch1 (\x -> isAlphaNum x || x `elem` "-+/\\._") hunk ./Distribution/Package.hs 338 -word :: ReadP r String -word = munch1 isAlpha +parseLibName :: ReadP r String +parseLibName = munch1 (\x -> not (isSpace x) && x /= ',') hunk ./Distribution/Setup.hs 62 -import Control.Monad.Error -import Data.List(intersperse) +import Data.List(intersperse, find) hunk ./Distribution/Setup.hs 65 +#ifdef __NHC__ +import Compat.H98 +#else +import Control.Monad.Error +#endif + hunk ./Distribution/TODO 13 -** Clean up field parsers (Martin: what else goes here?) +** Clean up field parsers: + - parseOption: Which characters are valid for arbitrary options + to the compilers? Yuck, that could be anything. Maybe we should + have a parseAnything function, that accepts anything that isn't + space or comma... hunk ./Setup.description 15 - Compat.ReadP + Compat.ReadP, Compat.H98 hunk ./Distribution/Make.hs 59 --- Base -import System(getArgs) +import System.Environment(getArgs) hunk ./Distribution/Make.hs 110 - case parseArgs args of - Right (HelpCmd, _) -> hPutStr stderr (optionHelpString helpprefix) - - Right (ConfigCmd flags, extra_flags) -> do - no_extra_flags extra_flags + (action, args) <- parseGlobalArgs args + case action of + ConfigCmd flags -> do + (flags, _, args) <- parseConfigureArgs flags args [] + no_extra_flags args hunk ./Distribution/Make.hs 117 - Right (BuildCmd, extra_flags) -> do - no_extra_flags extra_flags + BuildCmd -> do + (_, args) <- parseBuildArgs args [] + no_extra_flags args hunk ./Distribution/Make.hs 122 - Right (InstallCmd install_prefixM userInst, extra_flags) -> do - no_extra_flags extra_flags + CleanCmd -> do + (_, args) <- parseCleanArgs args [] + no_extra_flags args + exec "make clean" + + InstallCmd mprefix uInst -> do + ((mprefix,uInst), _, args) <- parseInstallArgs (mprefix,uInst) args [] + no_extra_flags args hunk ./Distribution/Make.hs 131 - maybe "" (" prefix="++) install_prefixM - when (isNothing install_prefixM) (exec "make register") + maybe "" (" prefix="++) mprefix + when (isNothing mprefix) (exec "make register") hunk ./Distribution/Make.hs 134 - Right (SDistCmd, extra_flags) -> do - no_extra_flags extra_flags + SDistCmd -> do + (_, args) <- parseSDistArgs args [] + no_extra_flags args hunk ./Distribution/Make.hs 139 - Right (RegisterCmd userFlag, extra_flags) -> do - no_extra_flags extra_flags + RegisterCmd uInst -> do + (uInst, _, args) <- parseRegisterArgs uInst args [] + no_extra_flags args hunk ./Distribution/Make.hs 144 - Right (UnregisterCmd, extra_flags) -> do - no_extra_flags extra_flags + UnregisterCmd -> do + (_, args) <- parseUnregisterArgs args [] + no_extra_flags args hunk ./Distribution/Make.hs 149 - Left err -> do - hPutStr stderr (unlines err) - hPutStr stderr (optionHelpString helpprefix) - return () - hunk ./Distribution/Setup.hs 46 -module Distribution.Setup (parseArgs, Action(..), ConfigFlags, +module Distribution.Setup (--parseArgs, + Action(..), ConfigFlags, hunk ./Distribution/Setup.hs 49 - optionHelpString, + --optionHelpString, hunk ./Distribution/Setup.hs 53 + parseGlobalArgs, commandList, + parseConfigureArgs, parseBuildArgs, parseCleanArgs, + parseInstallArgs, parseSDistArgs, parseRegisterArgs, + parseUnregisterArgs hunk ./Distribution/Setup.hs 59 - -- Local -import Distribution.GetOpt - hunk ./Distribution/Setup.hs 66 +import System.Console.GetOpt +import System.Exit +import System.Environment hunk ./Distribution/Setup.hs 110 --- |Parse the standard command-line arguments. -parseArgs :: [String] -> Either [String] CommandLineOpts -parseArgs args - = let (flags, commands', unkFlags, ers) = getOpt Permute options args - in case ers of - _:_ -> Left ers - [] -> if HelpFlag `elem` flags then - Right (HelpCmd, unkFlags) - else case commands' of - [] -> Left ["Missing command"] - [h] -> parseCommands h flags unkFlags - c -> Left ["Multiple commands: " ++ (concat $ intersperse ", " c)] - where - -- FIX: really must clean up all this parsing code. - parseCommands :: String -- command - -> [Flag] - -> [String] -- unknown flags - -> Either [String] CommandLineOpts - parseCommands str flags unkFlags - = case str of - "configure" -> parseConfigure flags unkFlags - "install" -> parseInstall flags unkFlags - "build" -> noFlags str BuildCmd flags unkFlags - "clean" -> noFlags str CleanCmd flags unkFlags - "sdist" -> noFlags str SDistCmd flags unkFlags - "register" -> parseRegister flags unkFlags - "unregister" -> noFlags str UnregisterCmd flags unkFlags - _ -> Left ["Unrecognised command: " ++ str] +-- |Most of these flags are for Configure, but InstPrefix is for Install. +data Flag a = GhcFlag | NhcFlag | HugsFlag + | WithCompiler FilePath | Prefix FilePath + | UserFlag | GlobalFlag + | HelpFlag + -- For install: + | InstPrefix FilePath +-- | Verbose | Version? + | Lift a + deriving (Show, Eq) hunk ./Distribution/Setup.hs 121 - parseConfigure flags unkFlags - | not (any isInstallPrefix flags) - = case getConfigFlags flags of - Left err -> Left [err] - Right configFlags -> Right (ConfigCmd configFlags, unkFlags) - | otherwise - = commandSyntaxError "configure" +cmd_help = Option "h?" ["help"] (NoArg HelpFlag) "Show this help text" hunk ./Distribution/Setup.hs 123 - -- | FIX: no error checking for bad flags. - parseInstall flags unkFlags - = let pref = listToMaybe [f | InstPrefix f <- flags] - in isUser flags (\x -> Right (InstallCmd pref x, unkFlags)) +-- Do we have any other interesting global flags? Verbose? +globalOptions :: [OptDescr (Flag a)] +globalOptions = [ + cmd_help + ] hunk ./Distribution/Setup.hs 129 - parseRegister flags unkFlags - = isUser flags (\x -> Right (RegisterCmd x, unkFlags)) +liftCustomOpts :: [OptDescr a] -> [OptDescr (Flag a)] +liftCustomOpts flags = [ Option shopt lopt (f adesc) help + | Option shopt lopt adesc help <- flags ] + where f (NoArg x) = NoArg (Lift x) + f (ReqArg g s) = ReqArg (Lift . g) s + f (OptArg g s) = OptArg (Lift . g) s hunk ./Distribution/Setup.hs 136 - isUser flags f - = if length (filter isUserGlobFlag flags) <= 1 - then f $ not $ null (filter isUserFlag flags) - else commandSyntaxError "Specify only one of --user and --global" +unliftFlags :: [Flag a] -> [a] +unliftFlags flags = [ fl | Lift fl <- flags ] hunk ./Distribution/Setup.hs 139 - isUserGlobFlag UserFlag = True - isUserGlobFlag GlobalFlag = True - isUserGlobFlag _ = False - isUserFlag UserFlag = True - isUserFlag _ = False +data Cmd a = Cmd { + cmdName :: String, + cmdHelp :: String, -- Short description + cmdDescription :: String, -- Long description + cmdOptions :: [OptDescr (Flag a)], + cmdAction :: Action + } hunk ./Distribution/Setup.hs 147 - noFlags _ cmd [] unkFlags - = Right (cmd, unkFlags) - noFlags str _ _ _ - = commandSyntaxError str +commandList :: [Cmd a] +commandList = [configureCmd, buildCmd, cleanCmd, installCmd, + sdistCmd, registerCmd, unregisterCmd] hunk ./Distribution/Setup.hs 151 - commandSyntaxError c = Left ["Syntax error for command: " ++ c] +lookupCommand :: String -> [Cmd a] -> Maybe (Cmd a) +lookupCommand name = find ((==name) . cmdName) hunk ./Distribution/Setup.hs 154 - isInstallPrefix :: Flag -> Bool - isInstallPrefix (InstPrefix _) = True - isInstallPrefix _ = False +printGlobalHelp :: IO () +printGlobalHelp = do pname <- getProgName + let syntax_line = "Usage: " ++ pname ++ " [GLOBAL FLAGS] COMMAND [FLAGS]\n\nGlobal flags:" + putStrLn (usageInfo syntax_line globalOptions) + putStrLn "Commands:" + let maxlen = maximum [ length (cmdName cmd) | cmd <- commandList ] + sequence_ [ do putStr " " + putStr (align maxlen (cmdName cmd)) + putStr " " + putStrLn (cmdHelp cmd) + | cmd <- commandList ] + putStrLn $ "\nFor more information about a command, try '" ++ pname ++ " COMMAND --help'." + where align n str = str ++ replicate (n - length str) ' ' hunk ./Distribution/Setup.hs 168 --- |Converts the abstract "flag" type to a more concrete type. -getConfigFlags :: [Flag] -> Either String ConfigFlags -getConfigFlags flags - = do flavor <- getOneOpt [f | Just f <- map convert flags] - prefix <- getOneOpt [f | Prefix f <- flags] - withCom <- getOneOpt [f | WithCompiler f <- flags] - return (flavor,withCom,prefix) - where - convert GhcFlag = Just GHC - convert NhcFlag = Just NHC - convert HugsFlag = Just Hugs - convert _ = Nothing +printCmdHelp :: Cmd a -> [OptDescr a] -> IO () +printCmdHelp cmd opts = do pname <- getProgName + let syntax_line = "Usage: " ++ pname ++ " [GLOBAL FLAGS] " ++ cmdName cmd ++ " [FLAGS]\n\nFlags for " ++ cmdName cmd ++ ":" + putStrLn (usageInfo syntax_line (cmdOptions cmd ++ liftCustomOpts opts)) + putStr (cmdDescription cmd) hunk ./Distribution/Setup.hs 174 -getOneOpt :: Show a => [a] -> Either String (Maybe a) -getOneOpt [] = return Nothing -getOneOpt [one] = return (Just one) -getOneOpt o = fail $ "Multiple options where one expected: " - ++ (concat $ intersperse ", " (map show o)) +getCmdOpt cmd opts = getOpt Permute (cmdOptions cmd ++ liftCustomOpts opts) hunk ./Distribution/Setup.hs 176 --- ------------------------------------------------------------ --- * Option Specifications --- ------------------------------------------------------------ +-- We don't want to use elem, because that imposes Eq a +hasHelpFlag :: [Flag a] -> Bool +hasHelpFlag flags = not . null $ [ () | HelpFlag <- flags ] hunk ./Distribution/Setup.hs 180 --- |Most of these flags are for Configure, but InstPrefix is for Install. -data Flag = GhcFlag | NhcFlag | HugsFlag - | WithCompiler FilePath | Prefix FilePath - | UserFlag | GlobalFlag - | HelpFlag - -- For install: - | InstPrefix FilePath --- | Verbose | Version? - deriving (Show, Eq) +parseGlobalArgs :: [String] -> IO (Action,[String]) +parseGlobalArgs args = + case getOpt RequireOrder globalOptions args of + (flags, _, []) | hasHelpFlag flags -> do + printGlobalHelp + exitWith ExitSuccess + (flags, cname:cargs, []) -> do + case lookupCommand cname commandList of + Just cmd -> return (cmdAction cmd,cargs) + Nothing -> do putStrLn $ "Unrecognised command: " ++ cname ++ " (try --help)" + exitWith (ExitFailure 1) + (_, [], []) -> do putStrLn $ "No command given (try --help)" + exitWith (ExitFailure 1) + (_, _, errs) -> do mapM_ putStrLn errs + exitWith (ExitFailure 1) hunk ./Distribution/Setup.hs 196 -optionHelpString :: String -> String -optionHelpString prefix = usageInfo prefix options - --- |Flag-type options (not commands) -options :: [OptDescr Flag] -options = [Option "g" ["ghc"] (NoArg GhcFlag) "compile with GHC", +configureCmd = Cmd { + cmdName = "configure", + cmdHelp = "Prepare to build the package.", + cmdDescription = "This is the long description for configure.\nMulti-line!\n", + cmdOptions = [cmd_help, + Option "g" ["ghc"] (NoArg GhcFlag) "compile with GHC", hunk ./Distribution/Setup.hs 207 - "bake this prefix in preparation of installation", + "bake this prefix in preparation of installation" + ], + cmdAction = ConfigCmd (Nothing, Nothing, Nothing) + } + +parseConfigureArgs :: ConfigFlags -> [String] -> [OptDescr a] -> + IO (ConfigFlags, [a], [String]) +parseConfigureArgs cfg args customOpts = + case getCmdOpt configureCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp configureCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (updateCfg flags cfg, unliftFlags flags, args') + (_, _, errs) -> do mapM_ putStrLn errs + exitWith (ExitFailure 1) + where updateCfg (fl:flags) t@(mcf, mpath, mprefix) = updateCfg flags $ + case fl of + GhcFlag -> (Just GHC, mpath, mprefix) + NhcFlag -> (Just NHC, mpath, mprefix) + HugsFlag -> (Just Hugs, mpath, mprefix) + WithCompiler path -> (mcf, Just path, mprefix) + Prefix path -> (mcf, mpath, Just path) + Lift _ -> t + _ -> error $ "Unexpected flag!" + updateCfg [] t = t + +buildCmd = Cmd { + cmdName = "build", + cmdHelp = "Make this package ready for installation.", + cmdDescription = "This is the long description for build.\nMulti-line!\n", + cmdOptions = [cmd_help], + cmdAction = BuildCmd + } + +parseBuildArgs :: [String] -> [OptDescr a] -> IO ([a], [String]) +parseBuildArgs args customOpts = + case getCmdOpt buildCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp buildCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (unliftFlags flags, args') + (_, _, errs) -> do mapM_ putStrLn errs + exitWith (ExitFailure 1) + +cleanCmd = Cmd { + cmdName = "clean", + cmdHelp = "Clean up after a build.", + cmdDescription = "This is the long description for clean.\nMulti-line!\n", + cmdOptions = [cmd_help], + cmdAction = CleanCmd + } + +parseCleanArgs :: [String] -> [OptDescr a] -> IO ([a], [String]) +parseCleanArgs args customOpts = + case getCmdOpt cleanCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp cleanCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (unliftFlags flags, args') + (_, _, errs) -> do mapM_ putStrLn errs + exitWith (ExitFailure 1) + +installCmd = Cmd { + cmdName = "install", + cmdHelp = "Copy the files into the install locations.", + cmdDescription = "This is the long description for install.\nMulti-line!\n", + cmdOptions = [cmd_help, hunk ./Distribution/Setup.hs 282 - "(default) upon registration, register this package in the system-wide package database", - Option "h?" ["help"] (NoArg HelpFlag) - "get information on options and commands" - ] + "(default) upon registration, register this package in the system-wide package database" + ], + cmdAction = InstallCmd Nothing False + } hunk ./Distribution/Setup.hs 287 --- |command, help string -commands :: [(String, String)] -commands = [("configure", "configure this package"), - ("build", ""), - ("install", ""), - ("sdist", ""), - ("register", ""), - ("unregister","") - ] +parseInstallArgs :: (Maybe FilePath, Bool) -> [String] -> [OptDescr a] -> + IO ((Maybe FilePath, Bool), [a], [String]) +parseInstallArgs cfg args customOpts = + case getCmdOpt installCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp installCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (updateCfg flags cfg, unliftFlags flags, args') + (_, _, errs) -> do mapM_ putStrLn errs + exitWith (ExitFailure 1) + where updateCfg (fl:flags) t@(mprefix, uFlag) = updateCfg flags $ + case fl of + InstPrefix path -> (Just path, uFlag) + UserFlag -> (mprefix, True) + GlobalFlag -> (mprefix, False) + Lift _ -> t + _ -> error $ "Unexpected flag!" + updateCfg [] t = t hunk ./Distribution/Setup.hs 307 --- ------------------------------------------------------------ --- * Testing --- ------------------------------------------------------------ -#ifdef DEBUG -hunitTests :: [Test] -hunitTests = - let m = [("ghc", GHC), ("nhc", NHC), ("hugs", Hugs)] - (flags, commands', unkFlags, ers) - = getOpt Permute options ["configure", "foobar", "--prefix=/foo", "--ghc", "--nhc", "--hugs", "--with-compiler=/comp", "--unknown1", "--unknown2", "--install-prefix=/foo", "--user", "--global"] - in [TestLabel "very basic option parsing" $ TestList [ - "getOpt flags" ~: "failed" ~: - [Prefix "/foo", GhcFlag, NhcFlag, HugsFlag, - WithCompiler "/comp", InstPrefix "/foo", UserFlag, GlobalFlag] - ~=? flags, - "getOpt commands" ~: "failed" ~: ["configure", "foobar"] ~=? commands', - "getOpt unknown opts" ~: "failed" ~: - ["--unknown1", "--unknown2"] ~=? unkFlags, - "getOpt errors" ~: "failed" ~: [] ~=? ers], +sdistCmd = Cmd { + cmdName = "sdist", + cmdHelp = "Generate a source distribution file (.tar.gz or .zip).", + cmdDescription = "This is the long description for sdist.\nMulti-line!\n", + cmdOptions = [cmd_help], + cmdAction = SDistCmd + } hunk ./Distribution/Setup.hs 315 - TestLabel "test location of various compilers" $ TestList - ["configure parsing for prefix and compiler flag" ~: "failed" ~: - (Right (ConfigCmd (Just comp, Nothing, Just "/usr/local"), [])) - ~=? (parseArgs ["--prefix=/usr/local", "--"++name, "configure"]) - | (name, comp) <- m], +parseSDistArgs :: [String] -> [OptDescr a] -> IO ([a], [String]) +parseSDistArgs args customOpts = + case getCmdOpt sdistCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp sdistCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (unliftFlags flags, args') + (_, _, errs) -> do mapM_ putStrLn errs + exitWith (ExitFailure 1) hunk ./Distribution/Setup.hs 326 - TestLabel "find the package tool" $ TestList - ["configure parsing for prefix comp flag, withcompiler" ~: "failed" ~: - (Right (ConfigCmd (Just comp, Just "/foo/comp", Just "/usr/local"), [])) - ~=? (parseArgs ["--prefix=/usr/local", "--"++name, - "--with-compiler=/foo/comp", "configure"]) - | (name, comp) <- m], +registerCmd = Cmd { + cmdName = "register", + cmdHelp = "Register this package with the compiler.", + cmdDescription = "This is the long description for register.\nMulti-line!\n", + cmdOptions = [cmd_help, + Option "" ["user"] (NoArg UserFlag) + "upon registration, register this package in the user's local package database", + Option "" ["global"] (NoArg GlobalFlag) + "(default) upon registration, register this package in the system-wide package database" + ], + cmdAction = RegisterCmd False + } hunk ./Distribution/Setup.hs 339 - TestLabel "simpler commands" $ TestList - [flag ~: "failed" ~: (Right (flagCmd, [])) ~=? (parseArgs [flag]) - | (flag, flagCmd) <- [("build", BuildCmd), - ("install", InstallCmd Nothing False), - ("sdist", SDistCmd), - ("register", RegisterCmd False)] - ] - ] +parseRegisterArgs :: Bool -> [String] -> [OptDescr a] -> + IO (Bool, [a], [String]) +parseRegisterArgs cfg args customOpts = + case getCmdOpt registerCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp registerCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (updateCfg flags cfg, unliftFlags flags, args') + (_, _, errs) -> do mapM_ putStrLn errs + exitWith (ExitFailure 1) + where updateCfg (fl:flags) uFlag = updateCfg flags $ + case fl of + UserFlag -> True + GlobalFlag -> False + Lift _ -> uFlag + _ -> error $ "Unexpected flag!" + updateCfg [] t = t + +unregisterCmd = Cmd { + cmdName = "unregister", + cmdHelp = "Unregister this package with the compiler.", + cmdDescription = "This is the long description for unregister.\nMulti-line!\n", + cmdOptions = [cmd_help], + cmdAction = UnregisterCmd + } + +parseUnregisterArgs :: [String] -> [OptDescr a] -> IO ([a], [String]) +parseUnregisterArgs args customOpts = + case getCmdOpt unregisterCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp unregisterCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (unliftFlags flags, args') + (_, _, errs) -> do mapM_ putStrLn errs + exitWith (ExitFailure 1) + +#ifdef DEBUG +hunitTests :: [Test] +hunitTests = [] +-- The test cases kinda have to be rewritten from the ground up... :/ +--hunitTests = +-- let m = [("ghc", GHC), ("nhc", NHC), ("hugs", Hugs)] +-- (flags, commands', unkFlags, ers) +-- = getOpt Permute options ["configure", "foobar", "--prefix=/foo", "--ghc", "--nhc", "--hugs", "--with-compiler=/comp", "--unknown1", "--unknown2", "--install-prefix=/foo", "--user", "--global"] +-- in [TestLabel "very basic option parsing" $ TestList [ +-- "getOpt flags" ~: "failed" ~: +-- [Prefix "/foo", GhcFlag, NhcFlag, HugsFlag, +-- WithCompiler "/comp", InstPrefix "/foo", UserFlag, GlobalFlag] +-- ~=? flags, +-- "getOpt commands" ~: "failed" ~: ["configure", "foobar"] ~=? commands', +-- "getOpt unknown opts" ~: "failed" ~: +-- ["--unknown1", "--unknown2"] ~=? unkFlags, +-- "getOpt errors" ~: "failed" ~: [] ~=? ers], +-- +-- TestLabel "test location of various compilers" $ TestList +-- ["configure parsing for prefix and compiler flag" ~: "failed" ~: +-- (Right (ConfigCmd (Just comp, Nothing, Just "/usr/local"), [])) +-- ~=? (parseArgs ["--prefix=/usr/local", "--"++name, "configure"]) +-- | (name, comp) <- m], +-- +-- TestLabel "find the package tool" $ TestList +-- ["configure parsing for prefix comp flag, withcompiler" ~: "failed" ~: +-- (Right (ConfigCmd (Just comp, Just "/foo/comp", Just "/usr/local"), [])) +-- ~=? (parseArgs ["--prefix=/usr/local", "--"++name, +-- "--with-compiler=/foo/comp", "configure"]) +-- | (name, comp) <- m], +-- +-- TestLabel "simpler commands" $ TestList +-- [flag ~: "failed" ~: (Right (flagCmd, [])) ~=? (parseArgs [flag]) +-- | (flag, flagCmd) <- [("build", BuildCmd), +-- ("install", InstallCmd Nothing False), +-- ("sdist", SDistCmd), +-- ("register", RegisterCmd False)] +-- ] +-- ] hunk ./Distribution/Setup.hs 418 + hunk ./Distribution/Setup.hs 425 + hunk ./Distribution/Simple.hs 59 -import Distribution.Setup(parseArgs, Action(..), optionHelpString) +import Distribution.Setup hunk ./Distribution/Simple.hs 75 -import System(getArgs) +import System.Environment(getArgs) hunk ./Distribution/Simple.hs 108 - case parseArgs args of - Right (HelpCmd, _) -> hPutStr stderr (optionHelpString helpprefix) - - Right (ConfigCmd flags, extra_flags) -> do - no_extra_flags extra_flags + (action, args) <- parseGlobalArgs args + case action of + ConfigCmd flags -> do + (flags, _, args) <- parseConfigureArgs flags args [] + no_extra_flags args hunk ./Distribution/Simple.hs 116 - Right (BuildCmd, extra_flags) -> do - no_extra_flags extra_flags + BuildCmd -> do + (_, args) <- parseBuildArgs args [] + no_extra_flags args hunk ./Distribution/Simple.hs 122 - Right (CleanCmd, extra_flags) -> do - no_extra_flags extra_flags + CleanCmd -> do + (_, args) <- parseCleanArgs args [] + no_extra_flags args hunk ./Distribution/Simple.hs 130 - Right (InstallCmd install_prefixM userInst, extra_flags) -> do - no_extra_flags extra_flags + InstallCmd mprefix uInst -> do + ((mprefix,uInst), _, args) <- parseInstallArgs (mprefix,uInst) args [] + no_extra_flags args hunk ./Distribution/Simple.hs 134 - install buildPref pkg_descr localbuildinfo install_prefixM - when (isNothing install_prefixM && hasLibs pkg_descr) - (register pkg_descr localbuildinfo userInst) + install buildPref pkg_descr localbuildinfo mprefix + when (isNothing mprefix && hasLibs pkg_descr) + (register pkg_descr localbuildinfo uInst) hunk ./Distribution/Simple.hs 138 - Right (SDistCmd, extra_flags) -> do - no_extra_flags extra_flags + SDistCmd -> do + (_, args) <- parseSDistArgs args [] + no_extra_flags args hunk ./Distribution/Simple.hs 144 - Right (RegisterCmd userFlag, extra_flags) -> do - no_extra_flags extra_flags + RegisterCmd uInst -> do + (uInst, _, args) <- parseRegisterArgs uInst args [] + no_extra_flags args hunk ./Distribution/Simple.hs 148 - when (hasLibs pkg_descr) (register pkg_descr localbuildinfo userFlag) + when (hasLibs pkg_descr) (register pkg_descr localbuildinfo uInst) hunk ./Distribution/Simple.hs 150 - Right (UnregisterCmd, extra_flags) -> do - no_extra_flags extra_flags + UnregisterCmd -> do + (_, args) <- parseUnregisterArgs args [] + no_extra_flags args hunk ./Distribution/Simple.hs 156 - Left err -> do - hPutStr stderr (unlines err) - hPutStr stderr (optionHelpString helpprefix) - return () - hunk ./Distribution/Make.hs 1 ------------------------------------------------------------------------------ --- | --- Module : Distribution.Make --- Copyright : Martin Sjögren 2004 --- --- Maintainer : Isaac Jones --- Stability : alpha --- Portability : GHC --- --- Explanation: Uses the parsed command-line from Distribution.Setup --- in order to build haskell tools using a backend build system based --- on Make. - -{- All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * Neither the name of Isaac Jones nor the names of other - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} - -module Distribution.Make ( - module Distribution.Package, - License(..), Version(..), - defaultMain, defaultMainNoRead - ) where - --- local -import Distribution.Package --must not specify imports, since we're exporting moule. -import Distribution.Setup --(parseArgs, Action(..), optionHelpString) - -import Distribution.Simple.Utils (maybeExit) - -import Distribution.Misc (License(..)) -import Distribution.Version (Version(..)) - -import System.Environment(getArgs) - -import Control.Monad (when) -import Data.Maybe (isNothing, maybe) -import Data.List ( intersperse ) -import System.IO (hPutStr, stderr) -import System.Cmd -import System.Exit - -{- -Basic assumptions ------------------ -Obviously we assume that there is a configure script, and that after the -ConfigCmd has been run, there is a Makefile. - -ConfigCmd: We assume the configure script accepts a --with-hc flag -BuildCmd: We assume the default Makefile target will build everything -InstallCmd: We assume there is an install target and a variable $(prefix) - that can be overridden - (./Setup --install-prefix=foo -> make prefix=foo install) - Note that we assume that this does *not* register the package! -SDistCmd: We assume there is an dist target -RegisterCmd: We assume there is a register target and a variable $(user) -UnregisterCmd: We assume there is an unregister target --} - --- I'm not happy about this being here. I just copied it from Simple.hs, --- but it should be in a utility module. -defaultPackageDesc :: FilePath -defaultPackageDesc = "Setup.description" - -configureArgs :: ConfigFlags -> String -configureArgs (_, Just hc_path, maybe_prefix) - = "--with-hc=" ++ hc_path ++ maybe "" (" --prefix="++) maybe_prefix -configureArgs (Just hc, Nothing, maybe_prefix) - = "--with-hc=" ++ showHC hc ++ maybe "" (" --prefix="++) maybe_prefix - where showHC GHC = "ghc" - showHC NHC = "nhc98" - showHC Hugs = "hugs" -configureArgs (Nothing, Nothing, maybe_prefix) - = maybe "" ("--prefix="++) maybe_prefix - -exec :: String -> IO a -exec cmd = system cmd >>= exitWith - -defaultMain :: IO () -defaultMain = parsePackageDesc defaultPackageDesc >>= defaultMainNoRead - -defaultMainNoRead :: PackageDescription -> IO () -defaultMainNoRead pkg_descr - = do args <- getArgs - (action, args) <- parseGlobalArgs args - case action of - ConfigCmd flags -> do - (flags, _, args) <- parseConfigureArgs flags args [] - no_extra_flags args - exec $ "./configure " ++ configureArgs flags - - BuildCmd -> do - (_, args) <- parseBuildArgs args [] - no_extra_flags args - exec "make" - - CleanCmd -> do - (_, args) <- parseCleanArgs args [] - no_extra_flags args - exec "make clean" - - InstallCmd mprefix uInst -> do - ((mprefix,uInst), _, args) <- parseInstallArgs (mprefix,uInst) args [] - no_extra_flags args - maybeExit $ system $ "make install" ++ - maybe "" (" prefix="++) mprefix - when (isNothing mprefix) (exec "make register") - - SDistCmd -> do - (_, args) <- parseSDistArgs args [] - no_extra_flags args - exec "make dist" - - RegisterCmd uInst -> do - (uInst, _, args) <- parseRegisterArgs uInst args [] - no_extra_flags args - exec "make register" - - UnregisterCmd -> do - (_, args) <- parseUnregisterArgs args [] - no_extra_flags args - exec "make unregister" - -no_extra_flags :: [String] -> IO () -no_extra_flags [] = return () -no_extra_flags extra_flags = - do hPutStr stderr $ "Unrecognised flags: " ++ concat (intersperse "," (extra_flags)) - exitWith (ExitFailure 1) - -helpprefix :: String -helpprefix = "Syntax: ./Setup.hs command [flags]\n" +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Make +-- Copyright : Martin Sjögren 2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC +-- +-- Explanation: Uses the parsed command-line from Distribution.Setup +-- in order to build haskell tools using a backend build system based +-- on Make. hunk ./Distribution/Make.hs 14 +{- All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Make ( + module Distribution.Package, + License(..), Version(..), + defaultMain, defaultMainNoRead + ) where + +-- local +import Distribution.Package --must not specify imports, since we're exporting moule. +import Distribution.Setup --(parseArgs, Action(..), optionHelpString) + +import Distribution.Simple.Utils (maybeExit) + +import Distribution.Misc (License(..)) +import Distribution.Version (Version(..)) + +import System.Environment(getArgs) + +import Control.Monad (when) +import Data.Maybe (isNothing, maybe) +import Data.List ( intersperse ) +import System.IO (hPutStr, stderr) +import System.Cmd +import System.Exit + +{- +Basic assumptions +----------------- +Obviously we assume that there is a configure script, and that after the +ConfigCmd has been run, there is a Makefile. + +ConfigCmd: We assume the configure script accepts a --with-hc flag +BuildCmd: We assume the default Makefile target will build everything +InstallCmd: We assume there is an install target and a variable $(prefix) + that can be overridden + (./Setup --install-prefix=foo -> make prefix=foo install) + Note that we assume that this does *not* register the package! +SDistCmd: We assume there is an dist target +RegisterCmd: We assume there is a register target and a variable $(user) +UnregisterCmd: We assume there is an unregister target +-} + +-- I'm not happy about this being here. I just copied it from Simple.hs, +-- but it should be in a utility module. +defaultPackageDesc :: FilePath +defaultPackageDesc = "Setup.description" + +configureArgs :: ConfigFlags -> String +configureArgs (_, Just hc_path, maybe_prefix) + = "--with-hc=" ++ hc_path ++ maybe "" (" --prefix="++) maybe_prefix +configureArgs (Just hc, Nothing, maybe_prefix) + = "--with-hc=" ++ showHC hc ++ maybe "" (" --prefix="++) maybe_prefix + where showHC GHC = "ghc" + showHC NHC = "nhc98" + showHC Hugs = "hugs" +configureArgs (Nothing, Nothing, maybe_prefix) + = maybe "" ("--prefix="++) maybe_prefix + +exec :: String -> IO a +exec cmd = system cmd >>= exitWith + +defaultMain :: IO () +defaultMain = parsePackageDesc defaultPackageDesc >>= defaultMainNoRead + +defaultMainNoRead :: PackageDescription -> IO () +defaultMainNoRead pkg_descr + = do args <- getArgs + (action, args) <- parseGlobalArgs args + case action of + ConfigCmd flags -> do + (flags, _, args) <- parseConfigureArgs flags args [] + no_extra_flags args + exec $ "./configure " ++ configureArgs flags + + BuildCmd -> do + (_, args) <- parseBuildArgs args [] + no_extra_flags args + exec "make" + + CleanCmd -> do + (_, args) <- parseCleanArgs args [] + no_extra_flags args + exec "make clean" + + InstallCmd mprefix uInst -> do + ((mprefix,uInst), _, args) <- parseInstallArgs (mprefix,uInst) args [] + no_extra_flags args + maybeExit $ system $ "make install" ++ + maybe "" (" prefix="++) mprefix + when (isNothing mprefix) (exec "make register") + + SDistCmd -> do + (_, args) <- parseSDistArgs args [] + no_extra_flags args + exec "make dist" + + RegisterCmd uInst -> do + (uInst, _, args) <- parseRegisterArgs uInst args [] + no_extra_flags args + exec "make register" + + UnregisterCmd -> do + (_, args) <- parseUnregisterArgs args [] + no_extra_flags args + exec "make unregister" + +no_extra_flags :: [String] -> IO () +no_extra_flags [] = return () +no_extra_flags extra_flags = + do hPutStr stderr $ "Unrecognised flags: " ++ concat (intersperse "," (extra_flags)) + exitWith (ExitFailure 1) + +helpprefix :: String +helpprefix = "Syntax: ./Setup.hs command [flags]\n" + hunk ./Distribution/Misc.hs 46 + ,extensionsToHugsFlag hunk ./Distribution/Misc.hs 154 - extensionToNHCFlag NoMonomorphismRestriction = Right "" -- not implemented in NHC + -- NHC doesn't enforce the monomorphism restriction at all. + extensionToNHCFlag NoMonomorphismRestriction = Right "" hunk ./Distribution/Simple/Build.hs 90 - let (unsupported, flags) = extensionsToNHCFlag (maybe [] extensions (library pkg_descr)) - unless (null unsupported) - (die $ "Unsupported extension for NHC: " - ++ (concat $ intersperse ", " (map show unsupported))) + -- Unsupported extensions have already been checked by configure + let flags = snd $ extensionsToNHCFlag (maybe [] extensions (library pkg_descr)) hunk ./Distribution/Simple/Build.hs 140 - let (unsupported, flags) = extensionsToGHCFlag (extensions build) - in if null unsupported - then [ "--make", "-i" ++ pathJoin [pref, hsSourceDir build] ] - ++ nub (flags ++ [ opt | (GHC,opts) <- options build, opt <- opts ]) - ++ (concat [ ["-package", pkgName pkg] | pkg <- deps ] ) - else error $ "Unsupported extension for GHC: " - ++ (concat $ intersperse ", " (map show unsupported)) + -- Unsupported extensions have already been checked by configure + let flags = snd $ extensionsToGHCFlag (extensions build) + in [ "--make", "-i" ++ pathJoin [pref, hsSourceDir build] ] + ++ nub (flags ++ [ opt | (GHC,opts) <- options build, opt <- opts ]) + ++ (concat [ ["-package", pkgName pkg] | pkg <- deps ]) hunk ./Distribution/Simple/Configure.hs 56 -import Distribution.Misc(Dependency(..)) +import Distribution.Misc(Dependency(..), Extension(..), + extensionsToGHCFlag, extensionsToNHCFlag, extensionsToHugsFlag) hunk ./Distribution/Simple/Configure.hs 67 +import Data.List (intersperse, nub) hunk ./Distribution/Simple/Configure.hs 71 -import Control.Monad ( when ) +import Control.Monad ( when, unless ) hunk ./Distribution/Simple/Configure.hs 130 - - message $ "Using build prefix: " ++ prefix hunk ./Distribution/Simple/Configure.hs 132 + -- check extensions + let extlist = nub $ maybe [] extensions lib ++ + concat [ extensions exeBi | Executable _ _ exeBi <- executables pkg_descr ] + let exts = case f' of + GHC -> fst $ extensionsToGHCFlag extlist + NHC -> fst $ extensionsToNHCFlag extlist + Hugs -> fst $ extensionsToHugsFlag extlist + _ -> [] -- Hmm. + unless (null exts) $ putStrLn $ -- Just warn, FIXME: Should this be an error? + "Warning: " ++ show f' ++ " does not support the following extensions:\n " ++ + concat (intersperse ", " (map show exts)) + + -- FIXME: maybe this should only be printed when verbose? + message $ "Using build prefix: " ++ prefix hunk ./Makefile 37 - -rm -f Distribution/*.{o,hi} Distribution/Simple/*.{o,hi} - -rm -f Compat/*.{o,hi} + -rm -f Distribution/*.o Distribution/*.hi + -rm -f Distribution/Simple/*.o Distribution/Simple/*.hi + -rm -f Compat/*.o Compat/*.hi hunk ./Makefile 41 - -rm -rf setup *.{o,hi} moduleTest dist installed-pkg-config + -rm -rf setup *.o *.hi moduleTest dist installed-pkg-config addfile ./Compat/RawSystem.hs hunk ./Compat/H98.hs 1 +{-# OPTIONS_COMPILE -prelude #-} hunk ./Compat/RawSystem.hs 1 +module Compat.RawSystem (rawSystem) where + +import Data.List (intersperse) +import System.Cmd (system) +import System.Exit (ExitCode) + +rawSystem :: String -> [String] -> IO ExitCode +rawSystem p args = system $ concat $ intersperse " " (p : map esc args) + where esc arg = "\"" ++ arg ++ "\"" -- this is hideously broken, actually hunk ./Distribution/Simple/Build.hs 51 -import Distribution.Setup (CompilerFlavor(..), compilerFlavor, compilerPath) +import Distribution.Setup (Compiler(..), CompilerFlavor(..)) hunk ./Distribution/Simple/Configure.hs 69 -import System.IO hiding (catch) hunk ./Distribution/Simple/Configure.hs 71 +#ifndef __NHC__ hunk ./Distribution/Simple/Configure.hs 73 +#endif hunk ./Distribution/Simple/Configure.hs 108 +#ifndef __NHC__ hunk ./Distribution/Simple/Configure.hs 111 +#else +-- FIXME: Is there anything we can do here? DeepSeq? +#endif hunk ./Distribution/Simple/GHCPackageConfig.hs 21 -import Distribution.Package (PackageDescription(..), BuildInfo(..), pkgName, showPackageId) +import Distribution.Package (PackageDescription(..), BuildInfo(..), + PackageIdentifier(..), showPackageId) hunk ./Distribution/Simple/Register.hs 57 -import Distribution.Package (PackageDescription, package, pkgName) +import Distribution.Package (PackageDescription(..), PackageIdentifier(..)) hunk ./Distribution/Simple/Utils.hs 71 -import GHC.IOBase(Exception(..), IOException(..), - IOErrorType(InappropriateType), IOErrorType(..), - ioe_type, throw) -import Control.Monad(when) +import Control.Monad(when, unless, liftM, mapM) hunk ./Distribution/Simple/Utils.hs 74 -import System.IO +import System.IO (hPutStr, stderr) +import System.IO.Error hunk ./Distribution/Simple/Utils.hs 77 -import System.Cmd +#ifdef __GLASGOW_HASKELL__ +import System.Cmd (rawSystem) +#else +import Compat.RawSystem (rawSystem) +#endif hunk ./Distribution/Simple/Utils.hs 160 --- FIX: rawSystem does not exist in Hugs hunk ./Distribution/Simple/Utils.hs 263 --- sequence $ map (system . ("ls " ++)) possiblePaths hunk ./Distribution/Simple/Utils.hs 337 --- throws except InappropriateType. +-- throws unless the file is a directory. hunk ./Distribution/Simple/Utils.hs 342 -removeFiles files - = (sequence $ map rm' files) >>= (return . catMaybes) +removeFiles files = liftM catMaybes (mapM rm' files) hunk ./Distribution/Simple/Utils.hs 347 - Left (IOError{ioe_type=InappropriateType}) -> return $ Just f - Left e -> throw $ IOException e -- can't handle, throw. + Left e -> do isDir <- doesDirectoryExist f + -- If f is not a directory, re-throw the error + unless isDir $ ioError e + return (Just f) hunk ./Distribution/Simple.hs 78 -import Control.Exception(try) +import System.IO.Error(try) hunk ./Compat/RawSystem.hs 1 -module Compat.RawSystem (rawSystem) where - -import Data.List (intersperse) -import System.Cmd (system) -import System.Exit (ExitCode) - -rawSystem :: String -> [String] -> IO ExitCode -rawSystem p args = system $ concat $ intersperse " " (p : map esc args) - where esc arg = "\"" ++ arg ++ "\"" -- this is hideously broken, actually hunk ./Compat/RawSystem.hs 1 +module Compat.RawSystem (rawSystem) where + +import Data.List (intersperse) +import System.Cmd (system) +import System.Exit (ExitCode) + +rawSystem :: String -> [String] -> IO ExitCode +rawSystem p args = system $ concat $ intersperse " " (p : map esc args) + where esc arg = "\"" ++ arg ++ "\"" -- this is hideously broken, actually hunk ./Distribution/TODO 3 +** have build -nhc output an error rather than doing something broken +** ask about dashes in package names. +- igloo thinks they should be [a-z0-0][a-z0-9]+ case sensitive +** look carefully at "rawSystem" and error handing stuff for nhc. hunk ./Distribution/TODO 15 +** Fix section on "why must we list hidden modules?" hunk ./Distribution/TODO 28 -** the ./setup -h output should document which commands exist, and - which options are relevant to which commands. hunk ./Distribution/Simple/Register.hs 49 + writeInstalledConfig, hunk ./Distribution/Simple/Register.hs 64 +import System.Directory(doesFileExist) hunk ./Distribution/Simple/Register.hs 75 +-- |Be sure to call writeInstalledConfig first hunk ./Distribution/Simple/Register.hs 86 - writeFile installedPkgConfigFile (showGHCPackageConfig pkg_config) + instConfExists <- doesFileExist installedPkgConfigFile + unless instConfExists (writeInstalledConfig pkg_descr lbi) hunk ./Distribution/Simple/Register.hs 94 +-- |Register doesn't drop the register info file, it must be done in a separate step. +writeInstalledConfig :: PackageDescription -> LocalBuildInfo -> IO () +writeInstalledConfig pkg_descr lbi = do + case compilerFlavor (compiler lbi) of + GHC -> do let pkg_config = mkGHCPackageConfig pkg_descr lbi + writeFile installedPkgConfigFile (showGHCPackageConfig pkg_config) + _ -> die ("only registering with GHC is implemented") + hunk ./Distribution/Simple.hs 63 -import Distribution.Simple.Register ( register, unregister, installedPkgConfigFile ) +import Distribution.Simple.Register ( register, unregister, + writeInstalledConfig, installedPkgConfigFile ) hunk ./Distribution/Simple.hs 122 - + writeInstalledConfig pkg_descr localbuildinfo + adddir ./debian addfile ./debian/README.Debian addfile ./debian/changelog addfile ./debian/compat addfile ./debian/dirs addfile ./debian/libhaskell-cabal-ghc6-dev.postrm addfile ./debian/copyright addfile ./debian/haskell-cabal1.dirs addfile ./debian/haskell-cabal1.files addfile ./debian/control addfile ./debian/rules addfile ./debian/docs addfile ./debian/haskell-cabal-dev.dirs addfile ./debian/haskell-cabal-dev.files addfile ./debian/libhaskell-cabal-ghc6-dev.postinst hunk ./debian/README.Debian 1 +haskell-cabal for Debian +------------------------ + +This is just a test package. + + -- Isaac Jones , Wed Jul 28 23:39:48 2004 hunk ./debian/changelog 1 +haskell-cabal (0.0.1-1) unstable; urgency=low + + * Initial Release. + + -- Isaac Jones Wed, 28 Jul 2004 22:29:38 -0400 + hunk ./debian/compat 1 +4 hunk ./debian/control 1 +Source: haskell-cabal +Priority: optional +Maintainer: Isaac Jones +Build-Depends: debhelper (>= 4.0.0), ghc6 (> 6.2) +Standards-Version: 3.6.0 + +Package: libhaskell-cabal-ghc6-dev +Section: devel +Architecture: any +Description: Haskell Common Architecture for Building Applications and Libraries + Haskell Common Architecture for Building Applications and Libraries hunk ./debian/copyright 1 +This package was debianized by Isaac Jones on +Wed, 28 Jul 2004 22:29:38 -0400. + +It was downloaded from + +Upstream Author(s): Isaac, Marvin, Simon, etc. + +Copyright: + +BSD-Like hunk ./debian/dirs 1 +usr/bin +usr/share/doc/libhaskell-cabal-ghc6-dev hunk ./debian/docs 1 +README hunk ./debian/haskell-cabal-dev.dirs 1 +usr/lib +usr/include hunk ./debian/haskell-cabal-dev.files 1 +usr/include/* +usr/lib/lib*.a +usr/lib/lib*.so +usr/lib/pkgconfig/* +/usr/lib/*.la hunk ./debian/haskell-cabal1.dirs 1 +usr/lib hunk ./debian/haskell-cabal1.files 1 +usr/lib/lib*.so.* hunk ./debian/libhaskell-cabal-ghc6-dev.postinst 1 +#!/bin/sh -e + +ghc-pkg -g --add-package \ + < /usr/share/doc/libhaskell-cabal-ghc6-dev/installed-pkg-config + +#DEBHELPER# hunk ./debian/libhaskell-cabal-ghc6-dev.postrm 1 +#!/bin/sh -e + +ghc-pkg -r Cabal + +#DEBHELPER# hunk ./debian/rules 1 +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +# shared library versions, option 1 +version=2.0.5 +major=2 +# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so +#version=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` +#major=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + make setup #bootstrap + ./setup configure --prefix=/usr --ghc + touch configure-stamp + + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + ./setup build + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) clean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/libhaskell-cabal-ghc6-dev + mkdir -p $(CURDIR)/debian/libhaskell-cabal-ghc6-dev/usr/share/doc/libhaskell-cabal-ghc6-dev + ./setup install --install-prefix=$(CURDIR)/debian/libhaskell-cabal-ghc6-dev/usr + cp .installed-pkg-config $(CURDIR)/debian/libhaskell-cabal-ghc6-dev/usr/share/doc/libhaskell-cabal-ghc6-dev/installed-pkg-config + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure hunk ./debian/control 7 -Package: libhaskell-cabal-ghc6-dev +Package: libghc6-cabal-dev hunk ./debian/dirs 2 -usr/share/doc/libhaskell-cabal-ghc6-dev +usr/share/doc/libghc6-cabal-dev hunk ./debian/rules 13 +CABAL_BIN=libghc6-cabal-dev hunk ./debian/rules 66 - # Add here commands to install the package into debian/libhaskell-cabal-ghc6-dev - mkdir -p $(CURDIR)/debian/libhaskell-cabal-ghc6-dev/usr/share/doc/libhaskell-cabal-ghc6-dev - ./setup install --install-prefix=$(CURDIR)/debian/libhaskell-cabal-ghc6-dev/usr - cp .installed-pkg-config $(CURDIR)/debian/libhaskell-cabal-ghc6-dev/usr/share/doc/libhaskell-cabal-ghc6-dev/installed-pkg-config + # Add here commands to install the package into debian/$(CABAL_BIN) + mkdir -p $(CURDIR)/debian/$(CABAL_BIN)/usr/share/doc/$(CABAL_BIN) + ./setup install --install-prefix=$(CURDIR)/debian/$(CABAL_BIN)/usr + cp .installed-pkg-config $(CURDIR)/debian/$(CABAL_BIN)/usr/share/doc/$(CABAL_BIN)/installed-pkg-config move ./debian/libhaskell-cabal-ghc6-dev.postrm ./debian/libhaskell-cabal-ghc6-dev.prerm move ./debian/libhaskell-cabal-ghc6-dev.postinst ./debian/libghc6-cabal-dev.postinst hunk ./debian/libghc6-cabal-dev.postinst 1 -#!/bin/sh -e - -ghc-pkg -g --add-package \ - < /usr/share/doc/libhaskell-cabal-ghc6-dev/installed-pkg-config - -#DEBHELPER# rmfile ./debian/libghc6-cabal-dev.postinst hunk ./debian/libhaskell-cabal-ghc6-dev.prerm 1 -#!/bin/sh -e - -ghc-pkg -r Cabal - -#DEBHELPER# rmfile ./debian/libhaskell-cabal-ghc6-dev.prerm addfile ./debian/libghc6-cabal-dev.postinst hunk ./debian/libghc6-cabal-dev.postinst 1 +#!/bin/sh -e + +ghc-pkg -g --add-package \ + < /usr/share/doc/libghc6-cabal-dev/installed-pkg-config + +#DEBHELPER# addfile ./debian/libghc6-cabal-dev.postrm rmfile ./debian/libghc6-cabal-dev.postrm addfile ./debian/libghc6-cabal-dev.prerm hunk ./debian/libghc6-cabal-dev.prerm 1 +#!/bin/sh -e + +ghc-pkg -r Cabal + +#DEBHELPER# hunk ./Setup.description 15 - Compat.ReadP, Compat.H98 - + Compat.ReadP hunk ./debian/changelog 1 +haskell-cabal (0.0.1-2) unstable; urgency=low + + * Cleaned up scripts and name of binary. + + -- Isaac Jones Thu, 29 Jul 2004 10:37:31 -0400 + hunk ./debian/libghc6-cabal-dev.prerm 4 +# ditch that ghci library: +rm /usr/lib/Cabal-0.1/HSCabal-0.1.o hunk ./Distribution/Package.hs 271 - in case lookup (drop 8 f) compilers of - Just c -> do xs <- runP (parseCommaList parseOption) val - return (setOptions c xs binfo) + in case lookup (drop (length "options-") f) compilers of + Just c -> return (setOptions c (words val) binfo) hunk ./Distribution/Package.hs 330 --- FIXME --- Which characters are valid for arbitrary options to the compilers? --- Couldn't this be basically anything? Maybe we should have a generic --- parseAnything (that looks just like parseLibName, see below) -parseOption :: ReadP r String -parseOption = munch1 (\x -> isAlphaNum x || x `elem` "-+/\\._") - hunk ./Distribution/Package.hs 360 - "Options-ghc: -fTH", + "Options-ghc: -fTH -fglasgow-exts", hunk ./Distribution/Package.hs 396 - options = [(Hugs,["+TH"]), (GHC,["-fTH"])] -- Note reversed order + -- Note reversed order: + options = [(Hugs,["+TH"]), (GHC,["-fTH","-fglasgow-exts"])] hunk ./Distribution/TODO 29 + +* 0.2 +** It actually makes sense to have several libraries ("hs-packages") + in one package ("cabal-package"), look at wxhaskell for example. + - So, Library stanzas, I suppose + - ./setup build should take an optional list of build targets + (that is, library and executable names) + - The overloaded terminology is *way* confusing. Feh. +** API Versioning? Libtool-style or just a major number? + + addfile ./Compat/Exception.hs hunk ./Compat/Exception.hs 1 +{-# OPTIONS -cpp #-} +module Compat.Exception (bracket) where + +#ifdef __NHC__ +import System.IO.Error (catch, ioError) +#else +import Control.Exception (bracket) +#endif + +#ifdef __NHC__ +bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c +bracket before after thing + = do a <- before + r <- thing a `catch` \e -> do after a + ioError e + after a + return r +#endif hunk ./Compat/H98.hs 1 -{-# OPTIONS_COMPILE -prelude #-} -module Compat.H98 where +{-# OPTIONS -cpp #-} +module Compat.H98 (Error(..)) where hunk ./Compat/H98.hs 4 +#ifndef __NHC__ +import Control.Monad.Error (Error(..)) +#endif + +#ifdef __NHC__ hunk ./Compat/H98.hs 24 +#endif hunk ./Compat/RawSystem.hs 1 +{-# OPTIONS -cpp #-} hunk ./Compat/RawSystem.hs 4 +#ifndef __GLASGOW_HASKELL__ hunk ./Compat/RawSystem.hs 8 +#else +import System.Cmd (rawSystem) +#endif hunk ./Compat/RawSystem.hs 12 + +#ifndef __GLASGOW_HASKELL__ hunk ./Compat/RawSystem.hs 17 +#endif hunk ./Distribution/Package.hs 59 -#ifdef __NHC__ --- nhc doesn't have C.M.Error (which defines Monad (Either String)) -import Compat.H98 -#else -import Control.Monad.Error -#endif hunk ./Distribution/Package.hs 70 +import Compat.H98 hunk ./Distribution/Setup.hs 70 -#ifdef __NHC__ -import Compat.H98 -#else -import Control.Monad.Error -#endif +import Compat.H98 () hunk ./Distribution/Simple/Utils.hs 74 -import System.IO (hPutStr, stderr) +import System.IO (hPutStr, stderr +#ifndef __NHC__ + , openBinaryFile, IOMode(..), hGetBuf, hPutBuf, hClose +#endif + ) hunk ./Distribution/Simple/Utils.hs 81 -#ifdef __GLASGOW_HASKELL__ -import System.Cmd (rawSystem) -#else hunk ./Distribution/Simple/Utils.hs 82 -#endif +import Compat.Exception (bracket) hunk ./Distribution/Simple/Utils.hs 85 +import Foreign.Marshal (allocaBytes) +#ifdef HAVE_UNIX_PACKAGE +import System.Posix.Files (getFileStatus, accessTime, modificationTime, setFileTimes) +#endif hunk ./Distribution/Simple/Utils.hs 326 --- |Preserves permissions, FIX: does not preserve dates +-- |Preserves permissions and, if possible, atime+mtime hunk ./Distribution/Simple/Utils.hs 330 +#ifdef __NHC__ hunk ./Distribution/Simple/Utils.hs 332 - p <- getPermissions src - setPermissions dest p + try (getPermissions src >>= setPermissions dest) + return () +#else + | otherwise = bracket (openBinaryFile src ReadMode) hClose $ \hSrc -> + bracket (openBinaryFile src WriteMode) hClose $ \hDest -> + do allocaBytes bufSize $ \buffer -> copyContents hSrc hDest buffer + try (getPermissions src >>= setPermissions dest) +#ifdef HAVE_UNIX_PACKAGE + try $ do st <- getFileStatus src + let atime = accessTime st + mtime = modificationTime st + setFileTimes dest atime mtime +#endif + return () + where bufSize = 1024 + copyContents hSrc hDest buffer + = do count <- hGetBuf hSrc buffer bufSize + when (count > 0) $ do hPutBuf hDest buffer count + copyContents hSrc hDest buffer +#endif hunk ./Makefile 20 +Setup-nhc: + hmake -nhc98 -package base -prelude Setup + hunk ./Makefile 24 - ./setup configure --prefix=$(PREF) + ./setup configure --ghc --prefix=$(PREF) hunk ./Setup.description 15 - Compat.ReadP + Compat.ReadP, Compat.H98 + hunk ./Compat/Exception.hs 1 -{-# OPTIONS -cpp #-} -module Compat.Exception (bracket) where - -#ifdef __NHC__ -import System.IO.Error (catch, ioError) -#else -import Control.Exception (bracket) -#endif - -#ifdef __NHC__ -bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c -bracket before after thing - = do a <- before - r <- thing a `catch` \e -> do after a - ioError e - after a - return r -#endif hunk ./Compat/Exception.hs 1 +{-# OPTIONS -cpp #-} +module Compat.Exception (bracket) where + +#ifdef __NHC__ +import System.IO.Error (catch, ioError) +#else +import Control.Exception (bracket) +#endif + +#ifdef __NHC__ +bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c +bracket before after thing + = do a <- before + r <- thing a `catch` \e -> do after a + ioError e + after a + return r +#endif adddir ./debianTemplate addfile ./debianTemplate/control addfile ./debianTemplate/package-dev.dirs addfile ./debianTemplate/package-dev.files addfile ./debianTemplate/package1.dirs addfile ./debianTemplate/package1.files addfile ./debianTemplate/rules addfile ./debianTemplate/shlibs.local.ex addfile ./debianTemplate/watch.ex hunk ./debianTemplate/control 1 +Source: #PACKAGE# +Priority: optional +Maintainer: #USERNAME# <#EMAIL#> +Build-Depends: debhelper (>= 4.0.0) +Standards-Version: #POLICY# + +Package: libghc6-#PACKAGE#-dev +Section: devel +Architecture: any +Depends: #PACKAGE#BROKEN (= ${Source-Version}) +Description: + + +# Package: libnhc98-#PACKAGE#-dev +# Section: devel +# Architecture: any +# Description: +# +# +# Package: libhugs-#PACKAGE#-dev +# Section: devel +# Architecture: any +# Description: +# hunk ./debianTemplate/package-dev.dirs 1 +usr/lib +usr/include hunk ./debianTemplate/package-dev.files 1 +usr/include/* +usr/lib/lib*.a +usr/lib/lib*.so +usr/lib/pkgconfig/* +/usr/lib/*.la hunk ./debianTemplate/package1.dirs 1 +usr/lib hunk ./debianTemplate/package1.files 1 +usr/lib/lib*.so.* hunk ./debianTemplate/rules 1 +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +#DPKG_ARCH# + +CFLAGS = -Wall -g +CABAL_GHC_BIN=libghc6-#PACKAGE#-dev + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +# shared library versions, option 1 +version=2.0.5 +major=2 +# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so +#version=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` +#major=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` + +#CONFIGURE# + +build: build-stamp +build-stamp: #CONFIGURE_STAMP# #CONFIG_STATUS# + dh_testdir + # Add here any extra commands to compile the package. + ghc -package Cabal Setup.lhs setup + ./setup configure --ghc --prefix=/usr + ./set build + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp #CONFIGURE_STAMP# + + # Add here any extra commands to clean up after the build process. + ./setup clean + + dh_clean #PRESERVE# + +install: build + dh_testdir + dh_testroot + dh_clean -k #PRESERVE# + dh_installdirs + + # Add here commands to install the package into debian/tmp + ./setup install --prefix=$(CURDIR)/debian/$(CABAL_GHC_BIN) + cp .installed-pkg-config $(CURDIR)/debian/$(CABAL_GHC_BIN)/usr/share/doc/$(CABAL_GHC_BIN)/installed-pkg-config + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs #CHANGELOGS# + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install #PHONY_CONFIGURE# hunk ./debianTemplate/shlibs.local.ex 1 +lib#PACKAGE# #VERSION# #PACKAGE# (>> #VERSION#-0), #PACKAGE# (<< #VERSION#-99) hunk ./debianTemplate/watch.ex 1 +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# Site Directory Pattern Version Script +version=2 +sunsite.unc.edu /pub/Linux/Incoming #PACKAGE#-(.*)\.tar\.gz debian uupdate addfile ./debianTemplate/package1.postinst addfile ./debianTemplate/package1.prerm hunk ./debianTemplate/package1.postinst 1 +#!/bin/sh -e + +ghc-pkg -g --add-package \ + < /usr/share/doc/#PACKAGE1#/installed-pkg-config + +#DEBHELPER# hunk ./debianTemplate/package1.prerm 1 +#!/bin/sh -e + +ghc-pkg -r #PACKAGE# +# ditch that ghci library: +rm /usr/lib/#PACKAGE#-#VERSION#/HS#PACKAGE#-#VERSION#.o + +#DEBHELPER# hunk ./Distribution/Simple/Utils.hs 75 -#ifndef __NHC__ +#ifdef __GLASGOW_HASKELL__ hunk ./Distribution/Simple/Utils.hs 330 -#ifdef __NHC__ +#ifndef __GLASGOW_HASKELL__ hunk ./Distribution/Simple/Utils.hs 336 - bracket (openBinaryFile src WriteMode) hClose $ \hDest -> + bracket (openBinaryFile dest WriteMode) hClose $ \hDest -> hunk ./test/wash2hs/Setup.description 1 -Name: Wash_2hs +Name: Wash-2hs hunk ./Distribution/Package.hs 58 -import Control.Monad(foldM) +import Control.Monad(foldM, liftM) hunk ./Distribution/Package.hs 189 -data PError = AmbigousParse | NoParse | FromString String +type LineNo = Int +type Stanza = [(LineNo,String,String)] + +data PError = AmbigousParse String LineNo + | NoParse String LineNo + | FromString String (Maybe LineNo) hunk ./Distribution/Package.hs 198 - strMsg = FromString + strMsg s = FromString s Nothing hunk ./Distribution/Package.hs 201 -showError AmbigousParse = "Ambigous parse" -showError NoParse = "No parse" -showError (FromString s) = s +showError (AmbigousParse f n) = "Line "++show n++": Ambigous parse in field '"++f++"'" +showError (NoParse f n) = "Line "++show n++": Parse of field '"++f++"' failed" +showError (FromString s (Just n)) = "Line "++show n++": " ++ s +showError (FromString s Nothing) = s hunk ./Distribution/Package.hs 206 +myError :: LineNo -> String -> Either PError a +myError n s = Left $ FromString s (Just n) + hunk ./Distribution/Package.hs 215 - parseBasicStanza pkg ("name", val) = return (setPkgName val pkg) - parseBasicStanza pkg ("version", val) = - do v <- runP parseVersion val + parseBasicStanza pkg (lineNo, f@"name", val) = + do name <- runP lineNo f parsePackageName val + return (setPkgName name pkg) + parseBasicStanza pkg (lineNo, f@"version", val) = + do v <- runP lineNo f parseVersion val hunk ./Distribution/Package.hs 221 - parseBasicStanza pkg ("copyright", val) = return pkg{copyright=val} - parseBasicStanza pkg ("license", val) = - do l <- runP parseLicense val + parseBasicStanza pkg (lineNo, "copyright", val) = return pkg{copyright=val} + parseBasicStanza pkg (lineNo, f@"license", val) = + do l <- runP lineNo f parseLicense val hunk ./Distribution/Package.hs 225 - parseBasicStanza pkg ("license-file", val) = - do path <- runP parseFilePath val + parseBasicStanza pkg (lineNo, f@"license-file", val) = + do path <- runP lineNo f parseFilePath val hunk ./Distribution/Package.hs 228 - parseBasicStanza pkg ("maintainer", val) = return pkg{maintainer=val} - parseBasicStanza pkg ("stability", val) = return pkg{stability=val} - parseBasicStanza pkg (field, val) = + parseBasicStanza pkg (lineNo, "maintainer", val) = return pkg{maintainer=val} + parseBasicStanza pkg (lineNo, "stability", val) = return pkg{stability=val} + parseBasicStanza pkg (lineNo, field, val) = hunk ./Distribution/Package.hs 232 - lib' <- parseExeHelp lib (field, val) + lib' <- parseBInfoField lib (lineNo, field, val) hunk ./Distribution/Package.hs 235 - parseExecutableStanza (("executable",eName):st) = - case lookup "main-is" st of - Just xs -> do path <- runP parseFilePath xs - binfo <- foldM parseExeHelp emptyBuildInfo st - return $ Executable eName path binfo + parseExecutableStanza ((lineNo, f@"executable",eName):st) = + case lookupField "main-is" st of + Just (lineNo,val) -> do path <- runP lineNo f parseFilePath val + binfo <- foldM parseBInfoField emptyBuildInfo st + return $ Executable eName path binfo hunk ./Distribution/Package.hs 242 - parseExecutableStanza ((f,_):_) = fail $ + parseExecutableStanza ((lineNo, f,_):_) = myError lineNo $ hunk ./Distribution/Package.hs 245 - parseExeHelp binfo ("main-is", _) = return binfo - parseExeHelp binfo ("extra-libs", val) = - do xs <- runP (parseCommaList parseLibName) val + parseBInfoField binfo (lineNo, "main-is", _) = return binfo + parseBInfoField binfo (lineNo, f@"extra-libs", val) = + do xs <- runP lineNo f (parseCommaList parseLibName) val hunk ./Distribution/Package.hs 249 - parseExeHelp binfo ("build-depends", val) = - do xs <- runP (parseCommaList parseDependency) val + parseBInfoField binfo (lineNo, f@"build-depends", val) = + do xs <- runP lineNo f (parseCommaList parseDependency) val hunk ./Distribution/Package.hs 253 - parseExeHelp binfo ("c-sources", val) = - do paths <- runP (parseCommaList parseFilePath) val + parseBInfoField binfo (lineNo, f@"c-sources", val) = + do paths <- runP lineNo f (parseCommaList parseFilePath) val hunk ./Distribution/Package.hs 256 - parseExeHelp binfo ("include-dirs", val) = - do paths <- runP (parseCommaList parseFilePath) val + parseBInfoField binfo (lineNo, f@"include-dirs", val) = + do paths <- runP lineNo f (parseCommaList parseFilePath) val hunk ./Distribution/Package.hs 259 - parseExeHelp binfo ("includes", val) = - do paths <- runP (parseCommaList parseFilePath) val + parseBInfoField binfo (lineNo, f@"includes", val) = + do paths <- runP lineNo f (parseCommaList parseFilePath) val hunk ./Distribution/Package.hs 262 - parseExeHelp binfo ("hs-source-dir", val) = - do path <- runP parseFilePath val + parseBInfoField binfo (lineNo, f@"hs-source-dir", val) = + do path <- runP lineNo f parseFilePath val hunk ./Distribution/Package.hs 266 - parseExeHelp binfo ("modules", val) = - do xs <- runP (parseCommaList parseModuleName) val + parseBInfoField binfo (lineNo, f@"modules", val) = + do xs <- runP lineNo f (parseCommaList parseModuleName) val hunk ./Distribution/Package.hs 269 - parseExeHelp binfo ("exposed-modules", val) = - do xs <- runP (parseCommaList parseModuleName) val + parseBInfoField binfo (lineNo, f@"exposed-modules", val) = + do xs <- runP lineNo f (parseCommaList parseModuleName) val hunk ./Distribution/Package.hs 272 - parseExeHelp binfo ("extensions", val) = - do exts <- runP (parseCommaList parseExtension) val + parseBInfoField binfo (lineNo, f@"extensions", val) = + do exts <- runP lineNo f (parseCommaList parseExtension) val hunk ./Distribution/Package.hs 275 - parseExeHelp binfo (f, val) | "options-" `isPrefixOf` f = + parseBInfoField binfo (lineNo, f, val) | "options-" `isPrefixOf` f = hunk ./Distribution/Package.hs 279 - Nothing -> error $ "Unknown compiler (" ++ drop 8 f ++ ")" - parseExeHelp _binfo (field, _val) = error $ "Unknown field :: " ++ field + Nothing -> myError lineNo $ "Unknown compiler '" ++ drop 8 f ++ "'" + parseBInfoField _binfo (lineNo, field, _val) = + myError lineNo $ "Unknown field '" ++ field ++ "'" hunk ./Distribution/Package.hs 283 + lookupField :: String -> Stanza -> Maybe (LineNo,String) + lookupField x [] = Nothing + lookupField x ((n,f,v):st) + | x == f = Just (n,v) + | otherwise = lookupField x st hunk ./Distribution/Package.hs 289 -runP :: ReadP a a -> String -> Either PError a -runP p s = case [ x | (x,"") <- readP_to_S p s ] of +runP :: LineNo -> String -> ReadP a a -> String -> Either PError a +runP lineNo field p s = + case [ x | (x,"") <- results ] of + [a] -> Right a + [] -> case [ x | (x,ys) <- results, all isSpace ys ] of hunk ./Distribution/Package.hs 295 - [] -> Left NoParse - _ -> Left AmbigousParse + [] -> Left (NoParse field lineNo) + _ -> Left (AmbigousParse field lineNo) + _ -> Left (AmbigousParse field lineNo) + where results = readP_to_S p s hunk ./Distribution/Package.hs 300 -type Stanza = [(String,String)] - hunk ./Distribution/Package.hs 303 -splitStanzas = map merge . groupStanzas . filter validLine . lines - where validLine s = case dropWhile isSpace s of - '-':'-':_ -> False -- Comment - _ -> True +splitStanzas = map merge . groupStanzas . filter validLine . zip [1..] . lines + where validLine (_,s) = case dropWhile isSpace s of + '-':'-':_ -> False -- Comment + _ -> True + allSpaces (_,xs) = all isSpace xs + groupStanzas :: [(Int,String)] -> [[(Int,String)]] hunk ./Distribution/Package.hs 310 - groupStanzas xs = let (ys,zs) = break (all isSpace) xs - in ys : groupStanzas (dropWhile (all isSpace) zs) - merge (x:(' ':s):ys) = case dropWhile isSpace s of - "." -> merge ((x++"\n"):ys) - s' -> merge ((x++"\n"++s'):ys) - merge (x:ys) = brk x : merge ys - merge [] = [] - brk xs = case break (==':') xs of - (fld, ':':val) -> (map toLower fld, dropWhile isSpace val) - (fld, _) -> error $ "Parser error: Line '" - ++ fld ++ "' has no colon" + groupStanzas xs = let (ys,zs) = break allSpaces xs + in ys : groupStanzas (dropWhile allSpaces zs) + merge ((n,x):(_,' ':s):ys) = case dropWhile isSpace s of + "." -> merge ((n,x++"\n"):ys) + s' -> merge ((n,x++"\n"++s'):ys) + merge ((n,x):ys) = brk n x : merge ys + merge [] = [] + brk n xs = case break (==':') xs of + (fld, ':':val) -> (n, map toLower fld, dropWhile isSpace val) + (fld, _) -> error $ "Line "++show n++": Invalid syntax (no colon after field name)" hunk ./Distribution/Package.hs 333 +parsePackageName :: ReadP r String +parsePackageName = do n <- satisfy isAlpha + name <- munch1 (\x -> isAlphaNum x || x `elem` "-") + return (n:name) + hunk ./Distribution/Package.hs 339 -parseDependency = do name <- munch1 (\x -> isAlphaNum x || x `elem` "-_") +parseDependency = do name <- parsePackageName hunk ./Distribution/Package.hs 373 - "Modules: Distribution.Package, Distribution.Version, Distribution.Simple.GHCPackageConfig", + "Modules: Distribution.Package, Distribution.Version,", + " Distribution.Simple.GHCPackageConfig", hunk ./Distribution/Package.hs 433 - (runP parseLicense (show lVal)) + (runP 1 "license" parseLicense (show lVal)) move ./debianTemplate/package1.postinst ./debianTemplate/libghc6-package-dev.postinst move ./debianTemplate/package1.prerm ./debianTemplate/libghc6-package-dev.prerm addfile ./debianTemplate/changelog hunk ./debianTemplate/changelog 1 +#PACKAGE# (#VERSION#-1) unstable; urgency=low + + * Initial Release. + + -- #USERNAME# <#EMAIL#> #DATE# + addfile ./debianTemplate/compat hunk ./debianTemplate/compat 1 - +4 hunk ./debianTemplate/control 10 -Depends: #PACKAGE#BROKEN (= ${Source-Version}) +#Depends: #PACKAGE# (= ${Source-Version}) addfile ./debianTemplate/libghc6-package-dev.docs hunk ./debianTemplate/libghc6-package-dev.docs 1 +installed-pkg-config hunk ./debianTemplate/package-dev.dirs 1 -usr/lib -usr/include rmfile ./debianTemplate/package-dev.dirs hunk ./debianTemplate/package-dev.files 1 -usr/include/* -usr/lib/lib*.a -usr/lib/lib*.so -usr/lib/pkgconfig/* -/usr/lib/*.la rmfile ./debianTemplate/package-dev.files hunk ./debianTemplate/package1.dirs 1 -usr/lib rmfile ./debianTemplate/package1.dirs hunk ./debianTemplate/package1.files 1 -usr/lib/lib*.so.* rmfile ./debianTemplate/package1.files hunk ./debianTemplate/rules 35 +setup: Setup.lhs + ghc -package Cabal Setup.lhs -o setup + hunk ./debianTemplate/rules 39 -build-stamp: #CONFIGURE_STAMP# #CONFIG_STATUS# +build-stamp: #CONFIGURE_STAMP# #CONFIG_STATUS# setup hunk ./debianTemplate/rules 42 - ghc -package Cabal Setup.lhs setup hunk ./debianTemplate/rules 43 - ./set build + ./setup build hunk ./debianTemplate/rules 47 -clean: +clean: setup hunk ./debianTemplate/rules 57 -install: build +install: build setup hunk ./debianTemplate/rules 64 - ./setup install --prefix=$(CURDIR)/debian/$(CABAL_GHC_BIN) - cp .installed-pkg-config $(CURDIR)/debian/$(CABAL_GHC_BIN)/usr/share/doc/$(CABAL_GHC_BIN)/installed-pkg-config + ./setup install --install-prefix=$(CURDIR)/debian/$(CABAL_GHC_BIN)/usr + cp .installed-pkg-config installed-pkg-config hunk ./debianTemplate/rules 98 - dh_shlibdeps +# dh_shlibdeps hunk ./debianTemplate/shlibs.local.ex 1 -lib#PACKAGE# #VERSION# #PACKAGE# (>> #VERSION#-0), #PACKAGE# (<< #VERSION#-99) rmfile ./debianTemplate/shlibs.local.ex hunk ./debianTemplate/watch.ex 1 -# Example watch control file for uscan -# Rename this file to "watch" and then you can run the "uscan" command -# to check for upstream updates and more. -# Site Directory Pattern Version Script -version=2 -sunsite.unc.edu /pub/Linux/Incoming #PACKAGE#-(.*)\.tar\.gz debian uupdate rmfile ./debianTemplate/watch.ex hunk ./Distribution/Simple/Build.hs 83 - NHC -> buildNHC pkg_descr lbi hunk ./Distribution/Simple/Build.hs 84 - _ -> die ("building with GHC & NHC is implemented, preprocessing for hugs.") + _ -> die ("Only building with GHC and preprocessing for hugs are implemented.") hunk ./Distribution/Simple/Build.hs 86 --- |FIX: For now, the target must contain a main module :( +-- |FIX: For now, the target must contain a main module :( Not used +-- ATM. Re-add later. hunk ./Distribution/Simple/Configure.hs 11 --- Explanation: Perform the "./setup configure" action. Outputs the +-- Explanation: Perform the ".\/setup configure" action. Outputs the hunk ./Distribution/Simple/Configure.hs 124 --- Configuration +-- * Configuration +-- ----------------------------------------------------------------------------- hunk ./Distribution/Simple/Configure.hs 209 +#else + error "Unknown compiler" hunk ./Distribution/Simple/Install.hs 11 --- Explanation: Perform the "./setup install" action. Move files into +-- Explanation: Perform the ".\/setup install" action. Move files into hunk ./Distribution/Simple/Register.hs 11 --- Explanation: Perform the "./setup register" action. Uses a +-- Explanation: Perform the ".\/setup register" action. Uses a hunk ./Distribution/Simple/Utils.hs 242 --- Foo/Bar.lhs into Foo +-- Foo\/Bar.lhs into Foo hunk ./Distribution/TODO 3 -** have build -nhc output an error rather than doing something broken -** ask about dashes in package names. -- igloo thinks they should be [a-z0-0][a-z0-9]+ case sensitive hunk ./Distribution/TODO 7 -** Extensions -- complain if their use makes the code non-portable? --- but what does this mean? ghc & hugs? hunk ./Distribution/TODO 32 +** Extensions +- complain if their use makes the code non-portable? +-- but what does this mean? ghc & hugs? hunk ./Makefile 34 -doc: - haddock --html --odir=dist/tmp/doc --title="The Haskell Cabal" --source=http://cvs.haskell.org/darcs/cabal/ `find Distribution -name "*.hs"` +haddock: + rm -rf dist/doc + mkdir -p dist/doc/Distribution/Simple + mkdir -p dist/tmp/doc/html + cpphs --noline Distribution/Package.hs > dist/doc/Distribution/Package.hs.raw + cpphs --noline Distribution/Misc.hs > dist/doc/Distribution/Misc.hs.raw + cpphs --noline Distribution/Version.hs > dist/doc/Distribution/Version.hs.raw + cpphs --noline Distribution/Setup.hs > dist/doc/Distribution/Setup.hs.raw + cpphs --noline Distribution/ModuleTest.hs > dist/doc/Distribution/ModuleTest.hs.raw + cpphs --noline Distribution/Simple.hs > dist/doc/Distribution/Simple.hs.raw + cpphs --noline Distribution/Make.hs > dist/doc/Distribution/Make.hs.raw + cpphs --noline Distribution/InstalledPackageInfo.hs > dist/doc/Distribution/InstalledPackageInfo.hs.raw + cpphs --noline Distribution/Simple/Build.hs > dist/doc/Distribution/Simple/Build.hs.raw + cpphs --noline Distribution/Simple/Install.hs > dist/doc/Distribution/Simple/Install.hs.raw + cpphs --noline Distribution/Simple/Configure.hs > dist/doc/Distribution/Simple/Configure.hs.raw + cpphs --noline Distribution/Simple/Register.hs > dist/doc/Distribution/Simple/Register.hs.raw + cpphs --noline Distribution/Simple/Utils.hs > dist/doc/Distribution/Simple/Utils.hs.raw + cpphs --noline Distribution/Simple/SrcDist.hs > dist/doc/Distribution/Simple/SrcDist.hs.raw + cpphs --noline Distribution/Simple/GHCPackageConfig.hs > dist/doc/Distribution/Simple/GHCPackageConfig.hs.raw + cpphs --noline Distribution/GetOpt.hs > dist/doc/Distribution/GetOpt.hs.raw + find dist/doc/Distribution -name "*.raw"|xargs haddock --html --odir=dist/tmp/doc/html --title="The Haskell Cabal" --source=http://cvs.haskell.org/darcs/cabal/ + rm -r dist/doc/* + mv dist/tmp/doc/html dist/doc + rmdir dist/tmp/doc + rmdir dist/tmp hunk ./debianTemplate/libghc6-package-dev.postinst 4 - < /usr/share/doc/#PACKAGE1#/installed-pkg-config + < /usr/share/doc/libghc6-#PACKAGE#-dev/installed-pkg-config hunk ./Distribution/TODO 5 -** make sure module documentation (haddock) builds. --- tricky because of need to preprocess :( -** add description file format to doc. - esp field descriptions +** doc +*** add description file format to doc. - esp field descriptions +*** Fix section on "why must we list hidden modules?" hunk ./Distribution/TODO 9 -** Fix section on "why must we list hidden modules?" +** add haddock generated stuff to .deb. hunk ./Distribution/TODO 25 +** elimintate need for cpphs in haddock makefile rule. hunk ./Makefile 33 -# FIX: doesn't work because of preprocsesing. +# Lame for now. I don't mind though, because cabal itself should be +# able to do this soon. Needs cpphs. hunk ./Makefile 119 -dist: pushall +dist: pushall haddock hunk ./Makefile 121 - scp cabal.tar.gz ijones@www.haskell.org:~/libraryInfrastructure/libraryInfrastructure-code.tgz - rm -f cabal.tar.gz + mv cabal.tar.gz /tmp + cd /tmp && tar -zxvf cabal.tar.gz + mkdir -p /tmp/cabal/doc/html + cp -r dist/doc/html /tmp/cabal/doc/html + cd /tmp && tar -zcvf cabal-code.tgz cabal + scp /tmp/cabal-code.tgz ijones@www.haskell.org:~/cabal/cabal-code.tgz + rm -f /tmp/cabal-code.tgz + rm -f /tmp/cabal.tar.gz + rm -rf /tmp/cabal hunk ./Distribution/Package.hs 313 - "." -> merge ((n,x++"\n"):ys) - s' -> merge ((n,x++"\n"++s'):ys) + ('.':s') -> merge ((n,x++"\n"++s'):ys) + s' -> merge ((n,x++"\n"++s'):ys) hunk ./Distribution/Version.hs 212 - tags <- many (char '-' >> munch1 isAlpha) + tags <- many (char '-' >> munch1 isAlphaNum) hunk ./Distribution/TODO 12 -** Clean up field parsers: - - parseOption: Which characters are valid for arbitrary options - to the compilers? Yuck, that could be anything. Maybe we should - have a parseAnything function, that accepts anything that isn't - space or comma... hunk ./Distribution/TODO 31 +** Parse error reporting +** Reorganize compiler dependent code into Distribution.Compiler.* +** Allow quoting in the options fields, to allow things like + -f"something with spaces" +** Instead of freaking out on unknown fields, the parser should return + a list of those unknown fields so a warning can be printed. Or not. hunk ./Distribution/Simple/Build.hs 170 - -- Todo: includes, includeDirs + -- FIX: includes, includeDirs hunk ./Distribution/Simple/Utils.hs 199 --- |FIX: Do we actually have to make something differnet for windows, +-- |FIX: Do we actually have to make something different for windows, hunk ./Distribution/TODO 8 +*** add information about executable stanzas hunk ./Distribution/Version.hs 65 -import Data.Char ( isDigit, isAlpha ) +import Data.Char ( isDigit, isAlphaNum ) addfile ./releaseNotes hunk ./Makefile 59 - rmdir dist/tmp hunk ./Makefile 122 - mkdir -p /tmp/cabal/doc/html - cp -r dist/doc/html /tmp/cabal/doc/html + mkdir -p /tmp/cabal/doc + cp -r dist/doc/html /tmp/cabal/doc/API + cd ~/usr/doc/haskell/haskell-report/packages && docbook2html -o /tmp/pkg-spec-html pkg-spec.sgml && docbook2pdf pkg-spec.sgml -o /tmp + cp -r /tmp/pkg-spec{-html,.pdf} /tmp/cabal/doc + hunk ./Makefile 129 - rm -f /tmp/cabal-code.tgz +# rm -f /tmp/cabal-code.tgz hunk ./Setup.description 15 - Compat.ReadP, Compat.H98 + Compat.ReadP, Compat.H98, Compat.Exception, Compat.RawSystem hunk ./releaseNotes 1 + The Haskell Cabal +The Common Architecture for Building Applications and Libraries. + +DOWNLOAD: + +The Haskell Cabal has reached pre-release stage, with a 0.1 version +The community should use this release to evaluate the interfaces and +explore the concepts of these tools. + +Download the Cabal here: +http://www.haskell.org/cabal/download.html + +BUGS: + +Please report bugs and wish-list items here: +http://sourceforge.net/tracker/?func=add&group_id=44807&atid=440922 + +Or email Isaac Jones: ijones@syntaxpolice.org + + +ABOUT: + +The Haskell Cabal is meant to be a part of a larger infrastructure for +distributing, organizing, and cataloging Haskell Libraries and +Tools. It is an effort to provide a framework for developers to more +effectively contribute their software to the Haskell community. + +Specifically, the Cabal describes what a Haskell package is, how these +packages interact with the language, and what Haskell implementations +must to do to support packages. The Cabal also specifies some +infrastructure (code) that makes it easy for tool authors to build and +distribute conforming packages. + +The Cabal is only one contribution to the larger goal. In particular, +the Cabal says nothing about more global issues such as how authors +decide where in the module name space their library should live; how +users can find a package they want; how orphan packages find new +owners; and so on. + +NOTES: + +This release is meant to provide the community with concrete +information about how the interfaces are shaping up. This release +does NOT fix the interfaces, we can't promise not to break anything +that relies on these interfaces. We hope that Haskell authors will +try to package their software using these tools, and let us know where +they fall short. + +MORE INFORMATION: + +Please see the web site for the source code, interfaces, and +especially the proposal, which will serve as documentation for this +release: + +http://www.haskell.org/cabal/ hunk ./releaseNotes 3 +http://www.haskell.org/cabal hunk ./releaseNotes 11 -Download the Cabal here: +Download the Cabal here (source and debian versions available): hunk ./Distribution/Simple/Build.hs 58 - mkLibName, moveSources, pathJoin, splitExt + mkLibName, moveSources, pathJoin, + splitExt, joinExt hunk ./Distribution/Simple/Build.hs 122 - let hObjs = [ pathJoin [hsSourceDir build, dotToSep x ++ objsuffix] + let hObjs = [ pathJoin [hsSourceDir build, dotToSep x `joinExt` objsuffix] hunk ./Distribution/Simple/Build.hs 124 - cObjs = [ file ++ objsuffix + cObjs = [ file `joinExt` objsuffix hunk ./Distribution/Simple/Build.hs 148 -#ifdef mingw32_TARGET_OS -objsuffix = ".obj" -#else -objsuffix = ".o" -#endif +objsuffix = "o" hunk ./Distribution/Simple/Configure.hs 62 -import Distribution.Simple.Utils (die, setupMessage, - findBinary, splitFilenameDir) +import Distribution.Simple.Utils (die, setupMessage, findBinary, + splitFilenameDir, splitExt, + joinFilenameDir, joinExt) hunk ./Distribution/Simple/Configure.hs 238 - (dir,_) = splitFilenameDir path - pkgtool = dir ++ '/':pkgToolName + (dir,fname) = splitFilenameDir path + (_,ext) = splitExt fname + pkgtool = dir `joinFilenameDir` pkgToolName `joinExt` ext hunk ./Distribution/Simple/Utils.hs 46 + joinFilenameDir, hunk ./Distribution/Simple/Utils.hs 65 + joinExt, hunk ./Distribution/Simple/Utils.hs 107 +-- "foo/bar" "xyzzy.ext" -> "foo/bar/xyzzy.ext" +joinFilenameDir :: String -> String -> FilePath +joinFilenameDir dir fname = dir++pathSeparator:fname + hunk ./Distribution/Simple/Utils.hs 124 --- |Split the path into filename and extension +-- | Split the path into filename and extension hunk ./Distribution/Simple/Utils.hs 126 -splitExt p = split_longest_prefix p (== '.') +splitExt p + = case pre of + [] -> (reverse suf, []) + (_:pre') -> (reverse pre', reverse suf) + where (suf,pre) = break (== '.') (reverse p) hunk ./Distribution/Simple/Utils.hs 132 +-- |Split the path into filename and extension +joinExt :: FilePath -> String -> String +joinExt path "" = path +joinExt path ext = path ++ '.':ext + hunk ./Distribution/Simple/Utils.hs 154 - let path = d ++ '/':binary + let path = d `joinFilenameDir` binary `joinExt` exeSuffix hunk ./Distribution/Simple/Utils.hs 159 +exeSuffix :: String +#ifdef mingw32_TARGET_OS +exeSuffix = "exe" +#else +exeSuffix = "" +#endif + hunk ./Distribution/Simple/Utils.hs 252 - = map pathJoin (inits $ mySplit pathSeparator path) + = map (\x -> device++pathJoin x) (tail $ inits $ mySplit pathSeparator path') + where +#ifdef mingw32_TARGET_OS -- Should we do this only on Windows? What about file://usr/bin? + (device,path') = case break (== ':') path of + (path,"") -> ("",path) + (device,c1:c2:path) | isPathSeparator c2 -> (device++[c1,c2],path) + (device,c1:path) -> (device++[c1],path) +#else + (device,path') = ("",path) +#endif hunk ./Distribution/Simple/Register.hs 89 - (["--auto-ghci-libs", "--add-package", + (["--auto-ghci-libs", "--update-package", hunk ./Distribution/Simple/Utils.hs 439 - (moduleToPossiblePaths "" "Foo" suffixes) ~=? ["Foo.hs", "Foo.lhs"] + (moduleToPossiblePaths "" "Foo" suffixes) ~=? ["Foo.hs", "Foo.lhs"], + TestLabel "splitExt" $ TestList + ["simpleCase" ~: "failed" ~: ("/foo/bar", ".txt") ~=? (splitExt"/foo/bar.txt"), + "dotInDirName" ~: "failed" ~: ("/foo.txt/bar","") ~=? (splitExt "/foo.txt/bar")] hunk ./Distribution/TODO 13 +** Fix example for angela, expose Data.Set, etc, not A, B, etc. hunk ./Distribution/TODO 19 +** add over-all license file. hunk ./Distribution/TODO 21 - hunk ./releaseNotes 43 +You cannot currently execute the setup scripts with "./Setup.lhs" +since Cabal Hugs support isn't ready-for-prime-time. You can compile +it with ghc thusly: "ghc -package Cabal Setup.lhs -o setup" and then +use the "setup" executable after that. + hunk ./Distribution/Simple/Build.hs 59 - splitExt, joinExt + splitFilePath, joinFilenameDir, joinExt hunk ./Distribution/Simple/Build.hs 124 - cObjs = [ file `joinExt` objsuffix - | (file, _) <- (map splitExt (cSources build)) ] + cObjs = [ path `joinFilenameDir` file `joinExt` objsuffix + | (path, file, _) <- (map splitFilePath (cSources build)) ] hunk ./Distribution/Simple/Configure.hs 63 - splitFilenameDir, splitExt, - joinFilenameDir, joinExt) + splitFilePath, joinFilenameDir, joinExt) hunk ./Distribution/Simple/Configure.hs 236 - = do let pkgToolName = compilerPkgToolName flavor - (dir,fname) = splitFilenameDir path - (_,ext) = splitExt fname - pkgtool = dir `joinFilenameDir` pkgToolName `joinExt` ext + = do let pkgToolName = compilerPkgToolName flavor + (dir,fname,ext) = splitFilePath path + pkgtool = dir `joinFilenameDir` pkgToolName `joinExt` ext hunk ./Distribution/Simple/Utils.hs 45 - splitFilenameDir, + splitFilePath, hunk ./Distribution/Simple/Utils.hs 47 - split, + joinExt, hunk ./Distribution/Simple/Utils.hs 50 + split, hunk ./Distribution/Simple/Utils.hs 65 - splitExt, - joinExt, hunk ./Distribution/Simple/Utils.hs 98 --- "foo/bar/xyzzy.ext" -> ("foo/bar", "xyzzy.ext") -splitFilenameDir :: String -> (String,String) -splitFilenameDir str - = let (dir, rest) = split_longest_prefix str isPathSeparator - real_dir | null dir = "." - | otherwise = dir - in (real_dir, rest) - --- "foo/bar" "xyzzy.ext" -> "foo/bar/xyzzy.ext" -joinFilenameDir :: String -> String -> FilePath -joinFilenameDir dir fname = dir++pathSeparator:fname - -split :: Char -> String -> [String] -split c s = case rest of - [] -> [chunk] - _:rest' -> chunk : split c rest' - where (chunk, rest) = break (==c) s - -split_longest_prefix :: String -> (Char -> Bool) -> (String,String) -split_longest_prefix s pred' - = case pre of - [] -> ([], reverse suf) - (_:pre') -> (reverse pre', reverse suf) - where (suf,pre) = break pred' (reverse s) - hunk ./Distribution/Simple/Utils.hs 99 -splitExt :: FilePath -> (String, String) -splitExt p - = case pre of - [] -> (reverse suf, []) - (_:pre') -> (reverse pre', reverse suf) - where (suf,pre) = break (== '.') (reverse p) +splitFilePath :: FilePath -> (String, String, String) +splitFilePath p = + case pre of + [] -> (reverse real_dir, reverse suf, []) + (_:pre) -> (reverse real_dir, reverse pre, reverse suf) + where + (file,dir) = break isPathSeparator (reverse p) + (suf,pre) = break (== '.') file + + real_dir = case dir of + [] -> "." + [_] -> pathSeparatorStr + (_:dir) -> dir hunk ./Distribution/Simple/Utils.hs 113 --- |Split the path into filename and extension +-- | Join extension to file path hunk ./Distribution/Simple/Utils.hs 116 -joinExt path ext = path ++ '.':ext +joinExt path ext = path++'.':ext hunk ./Distribution/Simple/Utils.hs 118 +-- Join file name to directory +joinFilenameDir :: String -> String -> FilePath +joinFilenameDir dir "" = dir +joinFilenameDir dir fname = dir++pathSeparator:fname + hunk ./Distribution/Simple/Utils.hs 131 +pathSeparator :: Char +#ifdef mingw32_TARGET_OS +pathSeparator = '\\' +#else +pathSeparator = '/' +#endif + +pathSeparatorStr :: String +pathSeparatorStr = [pathSeparator] + +split :: Char -> String -> [String] +split c s = case rest of + [] -> [chunk] + _:rest' -> chunk : split c rest' + where (chunk, rest) = break (==c) s + hunk ./Distribution/Simple/Utils.hs 223 --- |FIX: Do we actually have to make something different for windows, --- or does this work? -pathSeparator :: Char -#ifdef mingw32_TARGET_OS -pathSeparator = '\\' -#else -pathSeparator = '/' -#endif - -pathSeparatorStr :: String -pathSeparatorStr = [pathSeparator] - hunk ./Distribution/Simple/Utils.hs 430 - TestLabel "splitExt" $ TestList - ["simpleCase" ~: "failed" ~: ("/foo/bar", ".txt") ~=? (splitExt"/foo/bar.txt"), - "dotInDirName" ~: "failed" ~: ("/foo.txt/bar","") ~=? (splitExt "/foo.txt/bar")] - ] + TestLabel "splitFilePath" $ TestList + ["simpleCase" ~: ("/foo", "bar", "txt") ~=? (splitFilePath "/foo/bar.txt"), + "dotInDirName" ~: ("/foo.txt", "bar", "") ~=? (splitFilePath "/foo.txt/bar"), + "justName" ~: (".", "bar", "") ~=? (splitFilePath "bar"), + "justExt" ~: (".", "", "txt") ~=? (splitFilePath ".txt"), + "rootDir" ~: ("/", "foo", "") ~=? (splitFilePath "/foo"), + "noFile" ~: ("/foo/bar", "", "") ~=? (splitFilePath "/foo/bar/"), + "curDir" ~: (".", "", "") ~=? (splitFilePath "."), + "root" ~: ("/", "", "") ~=? (splitFilePath "/") + ], + TestLabel "joinFilenameDir&joinExt" $ TestList + ["simpleCase" ~: ("/foo/bar.txt") ~=? ("/foo" `joinFilenameDir` ("bar" `joinExt` "txt")), + "justDir" ~: ("/foo") ~=? ("/foo" `joinFilenameDir` ("" `joinExt` "")), + "justExt" ~: ("./.txt") ~=? ("." `joinFilenameDir` ("" `joinExt` "txt")), + "curDir" ~: ("/") ~=? ("/" `joinFilenameDir` ("" `joinExt` "")), + "root" ~: (".") ~=? ("." `joinFilenameDir` ("" `joinExt` "")) + ] + ] hunk ./Distribution/Simple/Utils.hs 105 - (file,dir) = break isPathSeparator (reverse p) - (suf,pre) = break (== '.') file +#ifdef mingw32_TARGET_OS + (path,drive) = break (== ':') (reverse p) +#else + (path,drive) = (reverse p,"") +#endif + (file,dir) = break isPathSeparator path + (suf,pre) = break (== '.') file hunk ./Distribution/Simple/Utils.hs 114 - [] -> "." - [_] -> pathSeparatorStr - (_:dir) -> dir + [] -> "."++drive + [_] -> pathSeparatorStr++drive + (_:dir) -> dir++drive hunk ./Distribution/Simple/Utils.hs 424 +#ifdef mingw32_TARGET_OS hunk ./Distribution/Simple/Utils.hs 428 + (Just "Distribution\\Simple\\Build.hs") mp1 + assertEqual "not existing not nothing failed" Nothing mp2, + + "moduleToPossiblePaths 1" ~: "failed" ~: + ["Foo\\Bar\\Bang.hs","Foo\\Bar\\Bang.lhs"] + ~=? (moduleToPossiblePaths "" "Foo.Bar.Bang" suffixes), + "moduleToPossiblePaths2 " ~: "failed" ~: + (moduleToPossiblePaths "" "Foo" suffixes) ~=? ["Foo.hs", "Foo.lhs"], + + TestLabel "splitFilePath" $ TestList + ["simpleCase" ~: ("c:\\foo", "bar", "txt") ~=? (splitFilePath "c:\\foo\\bar.txt"), + "dotInDirName" ~: ("\\foo.txt", "bar", "") ~=? (splitFilePath "\\foo.txt\\bar"), + "justName" ~: (".", "bar", "") ~=? (splitFilePath "bar"), + "justExt" ~: (".", "", "txt") ~=? (splitFilePath ".txt"), + "rootDir" ~: ("\\", "foo", "") ~=? (splitFilePath "\\foo"), + "noFile" ~: ("\\foo\\bar", "", "") ~=? (splitFilePath "\\foo\\bar\\"), + "curDir" ~: (".", "", "") ~=? (splitFilePath "."), + "root" ~: ("\\", "", "") ~=? (splitFilePath "\\"), + "curDirDrive" ~: ("c:.", "", "") ~=? (splitFilePath "c:."), + "rootDrive1" ~: ("c:\\", "", "") ~=? (splitFilePath "c:\\"), + "rootDrive2" ~: ("c:.", "", "") ~=? (splitFilePath "c:"), + "rootDrive2" ~: ("c:.", "test", "txt") ~=? (splitFilePath "c:test.txt") + ], + TestLabel "joinFilenameDir&joinExt" $ TestList + ["simpleCase" ~: ("\\foo\\bar.txt") ~=? ("\\foo" `joinFilenameDir` ("bar" `joinExt` "txt")), + "justDir" ~: ("\\foo") ~=? ("\\foo" `joinFilenameDir` ("" `joinExt` "")), + "justExt" ~: (".\\.txt") ~=? ("." `joinFilenameDir` ("" `joinExt` "txt")), + "curDir" ~: (".") ~=? ("." `joinFilenameDir` ("" `joinExt` "")), + "root" ~: ("\\") ~=? ("\\" `joinFilenameDir` ("" `joinExt` "")) + ] +#else + do mp1 <- moduleToFilePath "" "Distribution.Simple.Build" suffixes --exists + mp2 <- moduleToFilePath "" "Foo.Bar" suffixes -- doesn't exist + assertEqual "existing not found failed" hunk ./Distribution/Simple/Utils.hs 464 - + hunk ./Distribution/Simple/Utils.hs 470 + hunk ./Distribution/Simple/Utils.hs 485 - "curDir" ~: ("/") ~=? ("/" `joinFilenameDir` ("" `joinExt` "")), - "root" ~: (".") ~=? ("." `joinFilenameDir` ("" `joinExt` "")) + "curDir" ~: (".") ~=? ("." `joinFilenameDir` ("" `joinExt` "")), + "root" ~: ("/") ~=? ("/" `joinFilenameDir` ("" `joinExt` "")) hunk ./Distribution/Simple/Utils.hs 488 +#endif hunk ./Distribution/Simple/Utils.hs 278 -maybeAddSep p = if last p == pathSeparator then p else p ++ pathSeparatorStr +maybeAddSep p = if isPathSeparator (last p) then p else p ++ pathSeparatorStr hunk ./Distribution/Simple/Utils.hs 280 +-- |If this filename ends in the path separator, remove it. +maybeRemoveSep :: FilePath -> FilePath +maybeRemoveSep [] = [] +maybeRemoveSep p = if isPathSeparator (last p) then init p else p + hunk ./Distribution/Simple/Utils.hs 47 - joinExt, + joinExt, + pathInits, hunk ./Distribution/Simple/Utils.hs 129 +-- |Get this path and all its parents. +pathInits :: FilePath -> [FilePath] +pathInits p = + map ((++) root') (tail $ inits path') + where +#ifdef mingw32_TARGET_OS + (root,path) = case break (== ':') p of + (path, "") -> ("",path) + (root,_:path) -> (root++":",path) +#else + (root,path) = ("",p) +#endif + (root',path') = case path of + (c:path) | isPathSeparator c -> (root++pathSeparatorStr,path) + _ -> (root,path) + + inits :: String -> [String] + inits [] = [""] + inits cs = + case pre of + "." -> inits suf + _ -> [""] ++ map (joinFilenameDir pre) (inits suf) + where + (pre,suf) = case break isPathSeparator cs of + (pre,"") -> (pre, "") + (pre,_:suf) -> (pre,suf) + hunk ./Distribution/Simple/Utils.hs 272 --- |Get this path and all its parents. -pathInits :: FilePath -> [FilePath] -pathInits path - = map (\x -> device++pathJoin x) (tail $ inits $ mySplit pathSeparator path') - where -#ifdef mingw32_TARGET_OS -- Should we do this only on Windows? What about file://usr/bin? - (device,path') = case break (== ':') path of - (path,"") -> ("",path) - (device,c1:c2:path) | isPathSeparator c2 -> (device++[c1,c2],path) - (device,c1:path) -> (device++[c1],path) -#else - (device,path') = ("",path) -#endif - hunk ./Distribution/Simple/Utils.hs 273 - hunk ./Distribution/Simple/Utils.hs 475 + ], + + TestLabel "pathInits" $ TestList + ["simpleCase" ~: ["c:\\foo","c:\\foo\\bar.txt"] ~=? (pathInits "c:\\foo\\bar.txt"), + "justName" ~: ["bar.txt"] ~=? (pathInits "bar.txt"), + "driveAndName1" ~: ["c:bar.txt"] ~=? (pathInits "c:bar.txt"), + "driveAndName2" ~: ["c:\\bar.txt"] ~=? (pathInits "c:\\bar.txt"), + "locDir" ~: ["bar.txt"] ~=? (pathInits ".\\bar.txt"), + "midLocDir" ~: ["foo","foo\\bar.txt"] ~=? (pathInits "foo\\.\\bar.txt"), + "rootFile" ~: ["\\bar.txt"] ~=? (pathInits "\\bar.txt"), + "curDir" ~: [] ~=? (pathInits "."), + "root" ~: [] ~=? (pathInits "\\") hunk ./Distribution/Simple/Utils.hs 517 + ], + + TestLabel "pathInits" $ TestList + ["simpleCase" ~: ["/foo","/foo/bar.txt"] ~=? (pathInits "/foo/bar.txt"), + "justName" ~: ["bar.txt"] ~=? (pathInits "bar.txt"), + "locDir" ~: ["bar.txt"] ~=? (pathInits "./bar.txt"), + "midLocDir" ~: ["foo","foo/bar.txt"] ~=? (pathInits "foo/./bar.txt"), + "rootFile" ~: ["/bar.txt"] ~=? (pathInits "/bar.txt"), + "curDir" ~: [] ~=? (pathInits "."), + "root" ~: [] ~=? (pathInits "/") hunk ./Distribution/Simple/Utils.hs 132 - map ((++) root') (tail $ inits path') + map ((++) root') (dropEmptyPath $ inits path') hunk ./Distribution/Simple/Utils.hs 144 + + dropEmptyPath ("":paths) = paths + dropEmptyPath paths = paths hunk ./Distribution/Simple/Utils.hs 152 - "." -> inits suf - _ -> [""] ++ map (joinFilenameDir pre) (inits suf) + "." -> inits suf + ".." -> map (joinFilenameDir pre) (dropEmptyPath $ inits suf) + _ -> "" : map (joinFilenameDir pre) (inits suf) hunk ./Distribution/Simple/Utils.hs 488 + "withParentDir1"~: ["..\\foo"] ~=? (pathInits "..\\foo"), + "withParentDir2"~: ["foo\\..\\bar", "foo\\..\\bar\\baz"] ~=? (pathInits "foo\\..\\bar\\baz"), + "parentDir" ~: [] ~=? (pathInits ".."), hunk ./Distribution/Simple/Utils.hs 532 + "withParentDir1"~: ["../foo"] ~=? (pathInits "../foo"), + "withParentDir2"~: ["foo/../bar", "foo/../bar/baz"] ~=? (pathInits "foo/../bar/baz"), + "parentDir" ~: [] ~=? (pathInits ".."), hunk ./Distribution/Simple/Utils.hs 146 - dropEmptyPath paths = paths + dropEmptyPath paths = paths hunk ./Distribution/Simple/Utils.hs 112 - (suf,pre) = break (== '.') file + (suf,pre) = case file of + ".." -> ("..", "") + _ -> break (== '.') file hunk ./Distribution/Simple/Utils.hs 468 + "parentDir" ~: (".", "..", "") ~=? (splitFilePath ".."), hunk ./Distribution/Simple/Utils.hs 518 + "parentDir" ~: (".", "..", "") ~=? (splitFilePath ".."), hunk ./Distribution/Simple/GHCPackageConfig.hs 24 -import Distribution.Simple.Install (mkImportDir) +import Distribution.Simple.Install (mkLibDir) hunk ./Distribution/Simple/GHCPackageConfig.hs 49 - import_dirs = [mkImportDir pkg_descr lbi], - library_dirs = [mkImportDir pkg_descr lbi], + import_dirs = [mkLibDir pkg_descr lbi Nothing], + library_dirs = [mkLibDir pkg_descr lbi Nothing], hunk ./Distribution/Simple/Install.hs 46 - mkImportDir, + mkBinDir, + mkLibDir, hunk ./Distribution/Simple/Install.hs 75 - let libPref = pathJoin [(maybe (prefix lbi) id install_prefixM), "lib", - (showPackageId $ package pkg_descr)] - let binPref = pathJoin [(maybe (prefix lbi) id install_prefixM), "bin"] + let libPref = mkLibDir pkg_descr lbi install_prefixM + let binPref = mkBinDir pkg_descr lbi install_prefixM hunk ./Distribution/Simple/Install.hs 115 -mkImportDir :: PackageDescription -> LocalBuildInfo -> FilePath -mkImportDir pkg_descr lbi = -#ifdef mingw32_TARGET_OS - pathJoin [prefix lbi, pkg_name] -#else - pathJoin [prefix lbi, "lib", pkg_name] +mkLibDir :: PackageDescription -> LocalBuildInfo -> Maybe FilePath -> FilePath +mkLibDir pkg_descr lbi install_prefixM = + pathJoin [ maybe (prefix lbi) id install_prefixM +#ifndef mingw32_TARGET_OS + , "lib" hunk ./Distribution/Simple/Install.hs 121 - where - pkg_name = showPackageId (package pkg_descr) + , showPackageId (package pkg_descr) + ] hunk ./Distribution/Simple/Install.hs 124 +mkBinDir :: PackageDescription -> LocalBuildInfo -> Maybe FilePath -> FilePath +mkBinDir pkg_descr lbi install_prefixM = + pathJoin [(maybe (prefix lbi) id install_prefixM), "bin"] + hunk ./Distribution/Simple/Build.hs 64 +import Control.Exception (try) hunk ./Distribution/Simple/Build.hs 68 +import System.Directory (removeFile) hunk ./Distribution/Simple/Build.hs 129 - unless (null hObjs && null cObjs) - (rawSystemPathExit "ar" (["q", lib] ++ [pathJoin [pref, x] | x <- hObjs ++ cObjs])) + unless (null hObjs && null cObjs) $ do + try (removeFile lib) -- first remove library if it exists + rawSystemPathExit "ar" (["q", lib] ++ [pathJoin [pref, x] | x <- hObjs ++ cObjs]) hunk ./Distribution/Package.hs 48 + emptyBuildInfo, hunk ./Distribution/TODO 1 -* 0.1 -RC: -** look carefully at "rawSystem" and error handing stuff for nhc. +* 0.2 +** add simple (cpphs) preprocessing? + hunk ./Distribution/TODO 5 -** doc -*** add description file format to doc. - esp field descriptions -*** Fix section on "why must we list hidden modules?" +** Compatibility +*** add information for compiling w/ nhc +*** add install target for hugs & nhc +*** Make runhugs stuff work +*** verify windows test suite +*** Better way to find 'tar'; is there a library? what does darcs do? + +** Doc +*** Fix example for angela, expose Data.Set, etc, not A, B, etc.b +*** add over-all license file. hunk ./Distribution/TODO 16 -** Look over rest of TODO list. Should anything be promoted? -** add haddock generated stuff to .deb. +*** elimintate need for cpphs in haddock makefile rule. hunk ./Distribution/TODO 18 -HIGH: -** Fix example for angela, expose Data.Set, etc, not A, B, etc. - -LOW -** clean -- should .installed-pkg-config be removed after successful register? hunk ./Distribution/TODO 19 -** add over-all license file. +- allow foo.hsproj? hunk ./Distribution/TODO 21 -* 0.2 -** elimintate need for cpphs in haddock makefile rule. +** look carefully at "rawSystem" and error handing stuff for nhc. + hunk ./Distribution/TODO 33 -** Parse error reporting + hunk ./Distribution/TODO 35 -** Allow quoting in the options fields, to allow things like + +** Parsing +*** Parser error reporting +*** Allow quoting in the options fields, to allow things like hunk ./Distribution/TODO 40 -** Instead of freaking out on unknown fields, the parser should return - a list of those unknown fields so a warning can be printed. Or not. +*** Instead of freaking out on unknown fields, the parser should return + a list of those unknown fields so a warning can be printed. Or not. hunk ./Distribution/TODO 47 -** port code to windows hunk ./Distribution/TODO 48 -** better command-line parsing interface hunk ./Distribution/TODO 53 -** Better way to find 'tar'; is there a library? hunk ./README 33 +-= Debian Templates =- + +Build a Debian source tree with: + +dh_make -d -t /full/path/to/debiantemplates + +After, you just need to edit the copyright, description, and +dependencies... + hunk ./Distribution/Make.hs 105 -defaultMain = parsePackageDesc defaultPackageDesc >>= defaultMainNoRead +defaultMain = readPackageDescription defaultPackageDesc >>= defaultMainNoRead hunk ./Distribution/Package.hs 47 + emptyPackageDescription, + readPackageDescription, + writePackageDescription, + hasLibs, hunk ./Distribution/Package.hs 54 - emptyPackageDescription, - parsePackageDesc, - hasLibs, + emptyExecutable, hunk ./Distribution/Package.hs 62 +import Control.Exception(bracket) hunk ./Distribution/Package.hs 68 - showVersion, parseVersion, parseVersionRange) + showVersion, parseVersion, + showVersionRange, parseVersionRange) hunk ./Distribution/Package.hs 73 -import System.IO(openFile, IOMode(..), hGetContents) +import System.IO(openFile, IOMode(..), hGetContents, hClose, hPutStrLn) hunk ./Distribution/Package.hs 91 + hunk ./Distribution/Package.hs 111 -data Executable = Executable { - exeName :: String, - modulePath :: FilePath, - buildInfo :: BuildInfo - } - deriving (Show, Read, Eq) +emptyPackageDescription :: PackageDescription +emptyPackageDescription + = PackageDescription {package = PackageIdentifier "" (Version [] []), + license = AllRightsReserved, + copyright = "", + maintainer = "", + stability = "", + library = Nothing, + executables = [] + } hunk ./Distribution/Package.hs 122 +-- |Set the name for this package. Convenience function. +setPkgName :: String -> PackageDescription -> PackageDescription +setPkgName n desc@PackageDescription{package=pkgIdent} + = desc{package=pkgIdent{pkgName=n}} + +-- |Set the version for this package. Convenience function. +setPkgVersion :: Version -> PackageDescription -> PackageDescription +setPkgVersion v desc@PackageDescription{package=pkgIdent} + = desc{package=pkgIdent{pkgVersion=v}} + +-- |does this package have any libraries? +hasLibs :: PackageDescription -> Bool +hasLibs p = case library p of + Just l -> if null (cSources l) && null (modules l) + then False else True + Nothing -> False + + hunk ./Distribution/Package.hs 154 --- |Set the name for this package. Convenience function. -setPkgName :: String -> PackageDescription -> PackageDescription -setPkgName n desc@PackageDescription{package=pkgIdent} - = desc{package=pkgIdent{pkgName=n}} - --- |Set the version for this package. Convenience function. -setPkgVersion :: Version -> PackageDescription -> PackageDescription -setPkgVersion v desc@PackageDescription{package=pkgIdent} - = desc{package=pkgIdent{pkgVersion=v}} - -emptyPackageDescription :: PackageDescription -emptyPackageDescription - = PackageDescription {package = PackageIdentifier "" (Version [] []), - license = AllRightsReserved, - copyright = "", - maintainer = "", - stability = "", - library = Nothing, - executables = [] - } - hunk ./Distribution/Package.hs 167 - + hunk ./Distribution/Package.hs 173 --- |does this package have any libraries? -hasLibs :: PackageDescription -> Bool -hasLibs p = case library p of - Just l -> if null (cSources l) && null (modules l) - then False else True - Nothing -> False hunk ./Distribution/Package.hs 174 +data Executable = Executable { + exeName :: String, + modulePath :: FilePath, + buildInfo :: BuildInfo + } + deriving (Show, Read, Eq) hunk ./Distribution/Package.hs 181 +emptyExecutable :: Executable +emptyExecutable = Executable { + exeName = "", + modulePath = "", + buildInfo = emptyBuildInfo + } + hunk ./Distribution/Package.hs 189 --- * Parsing +-- * Parsing & Pretty printing hunk ./Distribution/Package.hs 192 --- |Parse the given package file. -parsePackageDesc :: FilePath -> IO PackageDescription -parsePackageDesc p = do h <- openFile p ReadMode - str <- hGetContents h - case parseDescription str of - Left e -> error (showError e) -- FIXME - Right PackageDescription{library=Nothing, - executables=[]} - -> error "no library listed, and no executable stanza." - Right x -> return x - hunk ./Distribution/Package.hs 193 -type Stanza = [(LineNo,String,String)] hunk ./Distribution/Package.hs 211 +data Field a + = Field + { fieldName :: String + , fieldGet :: a -> String + , fieldSet :: LineNo -> String -> a -> Either PError a + } + +basicStanzaFields :: [Field PackageDescription] +basicStanzaFields = + [ simpleField "name" + id parsePackageName + (pkgName . package) (\name pkg -> pkg{package=(package pkg){pkgName=name}}) + , simpleField "version" + showVersion parseVersion + (pkgVersion . package) (\ver pkg -> pkg{package=(package pkg){pkgVersion=ver}}) + , licenseField "license" False + license (\l pkg -> pkg{license=l}) + , licenseField "license-file" True + license (\l pkg -> pkg{license=l}) + , simpleField "copyright" + id (munch (const True)) + copyright (\val pkg -> pkg{copyright=val}) + , simpleField "maintainer" + id (munch (const True)) + maintainer (\val pkg -> pkg{maintainer=val}) + , simpleField "stability" + id (munch (const True)) + stability (\val pkg -> pkg{stability=val}) + ] + +executableStanzaFields :: [Field Executable] +executableStanzaFields = + [ simpleField "executable" + id (munch (const True)) + exeName (\xs exe -> exe{exeName=xs}) + , simpleField "main-is" + id parseFilePath + modulePath (\xs exe -> exe{modulePath=xs}) + ] + +binfoFields :: [Field BuildInfo] +binfoFields = + [ listField "build-depends" + showDependency parseDependency + buildDepends (\xs binfo -> binfo{buildDepends=xs}) + , listField "modules" + id parseModuleName + modules (\xs binfo -> binfo{modules=xs}) + , listField "exposed-modules" + id parseModuleName + exposedModules (\xs binfo -> binfo{exposedModules=xs}) + , listField "c-sources" + id parseFilePath + cSources (\paths binfo -> binfo{cSources=paths}) + , listField "extensions" + show parseExtension + extensions (\exts binfo -> binfo{extensions=exts}) + , listField "extra-libs" + id parseLibName + extraLibs (\xs binfo -> binfo{extraLibs=xs}) + , listField "includes" + id parseFilePath + includes (\paths binfo -> binfo{includes=paths}) + , simpleField "hs-source-dir" + id parseFilePath + hsSourceDir (\path binfo -> binfo{hsSourceDir=path}) + , optsField "options-ghc" GHC + options (\path binfo -> binfo{options=path}) + , optsField "options-hugs" Hugs + options (\path binfo -> binfo{options=path}) + , optsField "options-nhc" NHC + options (\path binfo -> binfo{options=path}) + ] + +simpleField :: String -> (a -> String) -> (ReadP a a) -> (b -> a) -> (a -> b -> b) -> Field b +simpleField name showF readF get set = Field name + (\st -> name ++ ": " ++ showF (get st)) + (\lineNo val st -> do + x <- runP lineNo name readF val + return (set x st)) + +listField :: String -> (a -> String) -> (ReadP [a] a) -> (b -> [a]) -> ([a] -> b -> b) -> Field b +listField name showF readF get set = Field name + (\st -> case get st of + [] -> "" + (value:values) -> + init (unlines ((name ++ ": " ++ showF value) : + map (\val -> (replicate (length name) ' '++", "++showF val)) values))) + (\lineNo val st -> do + xs <- runP lineNo name (parseCommaList readF) val + return (set xs st)) + +licenseField :: String -> Bool -> (b -> License) -> (License -> b -> b) -> Field b +licenseField name flag get set = Field name + (\st -> case get st of + OtherLicense path | flag -> name ++ ": " ++ path + | otherwise -> "" + license | not flag -> name ++ ": " ++ show license + | otherwise -> "") + (\lineNo val st -> + if flag + then do + path <- runP lineNo name parseFilePath val + return (set (OtherLicense path) st) + else do + x <- runP lineNo name parseLicense val + return (set x st)) + +optsField :: String -> CompilerFlavor -> (b -> [(CompilerFlavor,[String])]) -> ([(CompilerFlavor,[String])] -> b -> b) -> Field b +optsField name flavor get set = Field name + (\st -> case lookup flavor (get st) of + Just args -> name++": "++unwords args + Nothing -> "") + (\lineNo val st -> + let + old_val = get st + old_args = case lookup flavor old_val of + Just args -> args + Nothing -> [] + val' = filter (\(f,_) -> f/=flavor) old_val + in return (set ((flavor,words val++old_args) : val') st)) + +-- -------------------------------------------- +-- ** Parsing + +-- |Parse the given package file. +readPackageDescription :: FilePath -> IO PackageDescription +readPackageDescription p = do + h <- openFile p ReadMode + str <- hGetContents h + case parseDescription str of + Left e -> error (showError e) -- FIXME + Right PackageDescription{library=Nothing, executables=[]} -> error "no library listed, and no executable stanza." + Right x -> return x + hunk ./Distribution/Package.hs 348 - pkg <- foldM parseBasicStanza emptyPackageDescription st + pkg <- foldM (parseBasicStanza basicStanzaFields) emptyPackageDescription st hunk ./Distribution/Package.hs 352 - parseBasicStanza pkg (lineNo, f@"name", val) = - do name <- runP lineNo f parsePackageName val - return (setPkgName name pkg) - parseBasicStanza pkg (lineNo, f@"version", val) = - do v <- runP lineNo f parseVersion val - return (setPkgVersion v pkg) - parseBasicStanza pkg (lineNo, "copyright", val) = return pkg{copyright=val} - parseBasicStanza pkg (lineNo, f@"license", val) = - do l <- runP lineNo f parseLicense val - return pkg{license=l} - parseBasicStanza pkg (lineNo, f@"license-file", val) = - do path <- runP lineNo f parseFilePath val - return pkg{license=OtherLicense path} - parseBasicStanza pkg (lineNo, "maintainer", val) = return pkg{maintainer=val} - parseBasicStanza pkg (lineNo, "stability", val) = return pkg{stability=val} - parseBasicStanza pkg (lineNo, field, val) = - do let lib = fromMaybe emptyBuildInfo (library pkg) - lib' <- parseBInfoField lib (lineNo, field, val) - return pkg{library=Just lib'} - -- Stanzas for executables - parseExecutableStanza ((lineNo, f@"executable",eName):st) = + parseBasicStanza ((Field name get set):fields) pkg (lineNo, f, val) + | name == f = set lineNo val pkg + | otherwise = parseBasicStanza fields pkg (lineNo, f, val) + parseBasicStanza [] pkg (lineNo, f, val) = do + let lib = fromMaybe emptyBuildInfo (library pkg) + lib' <- parseBInfoField binfoFields lib (lineNo, f, val) + return pkg{library=Just lib'} + + parseExecutableStanza st@((lineNo, f@"executable",eName):st1) = hunk ./Distribution/Package.hs 362 - Just (lineNo,val) -> do path <- runP lineNo f parseFilePath val - binfo <- foldM parseBInfoField emptyBuildInfo st - return $ Executable eName path binfo - Nothing -> fail $ - "No 'Main-Is' field found for " ++ eName ++ " stanza" - parseExecutableStanza ((lineNo, f,_):_) = myError lineNo $ - "'Executable' stanza starting with field '" ++ f ++ "'" + Just (lineNo,val) -> foldM (parseExecutableField executableStanzaFields) emptyExecutable st + Nothing -> fail $ "No 'Main-Is' field found for " ++ eName ++ " stanza" + parseExecutableStanza ((lineNo, f,_):_) = + myError lineNo $ "'Executable' stanza starting with field '" ++ f ++ "'" hunk ./Distribution/Package.hs 367 - parseBInfoField binfo (lineNo, "main-is", _) = return binfo - parseBInfoField binfo (lineNo, f@"extra-libs", val) = - do xs <- runP lineNo f (parseCommaList parseLibName) val - return binfo{extraLibs=xs} - parseBInfoField binfo (lineNo, f@"build-depends", val) = - do xs <- runP lineNo f (parseCommaList parseDependency) val - return binfo{buildDepends=xs} - -- Paths and stuff - parseBInfoField binfo (lineNo, f@"c-sources", val) = - do paths <- runP lineNo f (parseCommaList parseFilePath) val - return binfo{cSources=paths} - parseBInfoField binfo (lineNo, f@"include-dirs", val) = - do paths <- runP lineNo f (parseCommaList parseFilePath) val - return binfo{includeDirs=paths} - parseBInfoField binfo (lineNo, f@"includes", val) = - do paths <- runP lineNo f (parseCommaList parseFilePath) val - return binfo{includes=paths} - parseBInfoField binfo (lineNo, f@"hs-source-dir", val) = - do path <- runP lineNo f parseFilePath val - return binfo{hsSourceDir=path} - -- Module related - parseBInfoField binfo (lineNo, f@"modules", val) = - do xs <- runP lineNo f (parseCommaList parseModuleName) val - return binfo{modules=xs} - parseBInfoField binfo (lineNo, f@"exposed-modules", val) = - do xs <- runP lineNo f (parseCommaList parseModuleName) val - return binfo{exposedModules=xs} - parseBInfoField binfo (lineNo, f@"extensions", val) = - do exts <- runP lineNo f (parseCommaList parseExtension) val - return binfo{extensions=exts} - parseBInfoField binfo (lineNo, f, val) | "options-" `isPrefixOf` f = - let compilers = [("ghc",GHC),("nhc",NHC),("hugs",Hugs)] -- FIXME - in case lookup (drop (length "options-") f) compilers of - Just c -> return (setOptions c (words val) binfo) - Nothing -> myError lineNo $ "Unknown compiler '" ++ drop 8 f ++ "'" - parseBInfoField _binfo (lineNo, field, _val) = - myError lineNo $ "Unknown field '" ++ field ++ "'" + + parseExecutableField ((Field name get set):fields) exe (lineNo, f, val) + | name == f = set lineNo val exe + | otherwise = parseExecutableField fields exe (lineNo, f, val) + parseExecutableField [] exe (lineNo, f, val) = do + binfo <- parseBInfoField binfoFields (buildInfo exe) (lineNo, f, val) + return exe{buildInfo=binfo} + + parseBInfoField ((Field name get set):fields) binfo (lineNo, f, val) + | name == f = set lineNo val binfo + | otherwise = parseBInfoField fields binfo (lineNo, f, val) + parseBInfoField [] binfo (lineNo, f, val) = + myError lineNo $ "Unknown field '" ++ f ++ "'" hunk ./Distribution/Package.hs 387 + hunk ./Distribution/Package.hs 399 +type Stanza = [(LineNo,String,String)] + hunk ./Distribution/Package.hs 461 + +-- -------------------------------------------- +-- ** Pretty printing + +writePackageDescription :: FilePath -> PackageDescription -> IO () +writePackageDescription fpath pkg = bracket (openFile fpath WriteMode) hClose $ \hFile -> do + hPutFields hFile pkg basicStanzaFields + case library pkg of + Nothing -> return () + Just lib -> hPutFields hFile lib binfoFields + mapM_ (hPutExecutable hFile) (executables pkg) + where + hPutExecutable hFile exe = do + hPutStrLn hFile "" + hPutFields hFile exe executableStanzaFields + hPutFields hFile (buildInfo exe) binfoFields + + hPutFields hFile pkg [] = return () + hPutFields hFile pkg ((Field name get set):flds) + | value /= "" = do + hPutStrLn hFile value + hPutFields hFile pkg flds + | otherwise = do + hPutFields hFile pkg flds + where + value = get pkg + +showDependency :: Dependency -> String +showDependency (Dependency name ver) = name ++ " " ++ showVersionRange ver + hunk ./Distribution/Simple.hs 101 -defaultMain = parsePackageDesc defaultPackageDesc >>= defaultMainNoRead +defaultMain = readPackageDescription defaultPackageDesc >>= defaultMainNoRead hunk ./Distribution/Simple/Utils.hs 99 --- | Split the path into filename and extension +-- | Split the path into (directory, filename sans extension, extension) hunk ./Distribution/Simple/Utils.hs 126 +-- |Not exported. Does this file have the given extension? +hasExt :: FilePath -- ^Does this file + -> String -- ^Have this extension? + -> Bool +hasExt f testExt = let (_, _, realExt) = splitFilePath f + in testExt == realExt + hunk ./Distribution/Simple/Utils.hs 446 +-- |Might want to make this more generic some day, with regexps +-- or something. +filesWithExtensions :: FilePath -- ^Directory to look in + -> String -- ^The extension + -> IO [FilePath] {- ^The file names (not full + path) of all the files with this + extension in this directory. -} +filesWithExtensions dir extension + = do allFiles <- getDirectoryContents dir + return $ filter ((flip hasExt) extension) allFiles + hunk ./Distribution/Simple/Utils.hs 538 - "root" ~: ("/", "", "") ~=? (splitFilePath "/") + "root" ~: ("/", "", "") ~=? (splitFilePath "/"), + "hasExt" ~: True ~=? (hasExt "foo/bang.hs" "hs") hunk ./Distribution/Simple/Utils.hs 541 + hunk ./Distribution/Simple/Utils.hs 561 - ] + ], + TestCase (do files <- filesWithExtensions "." "description" + assertEqual "filesWithExtensions" "Setup.description" (head files)) hunk ./Distribution/Package.hs 66 +import Text.PrettyPrint.HughesPJ hunk ./Distribution/Package.hs 212 -data Field a - = Field +data StanzaField a + = StanzaField hunk ./Distribution/Package.hs 215 - , fieldGet :: a -> String + , fieldGet :: a -> Doc hunk ./Distribution/Package.hs 219 -basicStanzaFields :: [Field PackageDescription] +basicStanzaFields :: [StanzaField PackageDescription] hunk ./Distribution/Package.hs 222 - id parsePackageName + text parsePackageName hunk ./Distribution/Package.hs 225 - showVersion parseVersion + (text . showVersion) parseVersion hunk ./Distribution/Package.hs 232 - id (munch (const True)) + text (munch (const True)) hunk ./Distribution/Package.hs 235 - id (munch (const True)) + text (munch (const True)) hunk ./Distribution/Package.hs 238 - id (munch (const True)) + text (munch (const True)) hunk ./Distribution/Package.hs 242 -executableStanzaFields :: [Field Executable] +executableStanzaFields :: [StanzaField Executable] hunk ./Distribution/Package.hs 245 - id (munch (const True)) + text (munch (const True)) hunk ./Distribution/Package.hs 248 - id parseFilePath + showFilePath parseFilePath hunk ./Distribution/Package.hs 252 -binfoFields :: [Field BuildInfo] +binfoFields :: [StanzaField BuildInfo] hunk ./Distribution/Package.hs 258 - id parseModuleName + text parseModuleName hunk ./Distribution/Package.hs 261 - id parseModuleName + text parseModuleName hunk ./Distribution/Package.hs 264 - id parseFilePath + showFilePath parseFilePath hunk ./Distribution/Package.hs 267 - show parseExtension + (text . show) parseExtension hunk ./Distribution/Package.hs 270 - id parseLibName + text parseLibName hunk ./Distribution/Package.hs 273 - id parseFilePath + showFilePath parseFilePath hunk ./Distribution/Package.hs 275 + , listField "include-dirs" + showFilePath parseFilePath + includes (\paths binfo -> binfo{includeDirs=paths}) hunk ./Distribution/Package.hs 279 - id parseFilePath + showFilePath parseFilePath hunk ./Distribution/Package.hs 289 -simpleField :: String -> (a -> String) -> (ReadP a a) -> (b -> a) -> (a -> b -> b) -> Field b -simpleField name showF readF get set = Field name - (\st -> name ++ ": " ++ showF (get st)) +simpleField :: String -> (a -> Doc) -> (ReadP a a) -> (b -> a) -> (a -> b -> b) -> StanzaField b +simpleField name showF readF get set = StanzaField name + (\st -> text name <> colon <+> showF (get st)) hunk ./Distribution/Package.hs 296 -listField :: String -> (a -> String) -> (ReadP [a] a) -> (b -> [a]) -> ([a] -> b -> b) -> Field b -listField name showF readF get set = Field name +listField :: String -> (a -> Doc) -> (ReadP [a] a) -> (b -> [a]) -> ([a] -> b -> b) -> StanzaField b +listField name showF readF get set = StanzaField name hunk ./Distribution/Package.hs 299 - [] -> "" + [] -> empty hunk ./Distribution/Package.hs 301 - init (unlines ((name ++ ": " ++ showF value) : - map (\val -> (replicate (length name) ' '++", "++showF val)) values))) + text name <> vcat ( colon <+> showF value: + map (\value -> comma <+> showF value) values)) hunk ./Distribution/Package.hs 307 -licenseField :: String -> Bool -> (b -> License) -> (License -> b -> b) -> Field b -licenseField name flag get set = Field name +licenseField :: String -> Bool -> (b -> License) -> (License -> b -> b) -> StanzaField b +licenseField name flag get set = StanzaField name hunk ./Distribution/Package.hs 310 - OtherLicense path | flag -> name ++ ": " ++ path - | otherwise -> "" - license | not flag -> name ++ ": " ++ show license - | otherwise -> "") + OtherLicense path | flag -> text name <> colon <+> showFilePath path + | otherwise -> empty + license | not flag -> text name <> colon <+> text (show license) + | otherwise -> empty) hunk ./Distribution/Package.hs 323 -optsField :: String -> CompilerFlavor -> (b -> [(CompilerFlavor,[String])]) -> ([(CompilerFlavor,[String])] -> b -> b) -> Field b -optsField name flavor get set = Field name +optsField :: String -> CompilerFlavor -> (b -> [(CompilerFlavor,[String])]) -> ([(CompilerFlavor,[String])] -> b -> b) -> StanzaField b +optsField name flavor get set = StanzaField name hunk ./Distribution/Package.hs 326 - Just args -> name++": "++unwords args - Nothing -> "") + Just args -> text name <> colon <+> hsep (map text args) + Nothing -> empty) hunk ./Distribution/Package.hs 342 -readPackageDescription p = do - h <- openFile p ReadMode - str <- hGetContents h +readPackageDescription fpath = do + str <- readFile fpath hunk ./Distribution/Package.hs 355 - parseBasicStanza ((Field name get set):fields) pkg (lineNo, f, val) + parseBasicStanza ((StanzaField name get set):fields) pkg (lineNo, f, val) hunk ./Distribution/Package.hs 371 - parseExecutableField ((Field name get set):fields) exe (lineNo, f, val) + parseExecutableField ((StanzaField name get set):fields) exe (lineNo, f, val) hunk ./Distribution/Package.hs 378 - parseBInfoField ((Field name get set):fields) binfo (lineNo, f, val) + parseBInfoField ((StanzaField name get set):fields) binfo (lineNo, f, val) hunk ./Distribution/Package.hs 434 +showFilePath :: FilePath -> Doc +showFilePath fpath + | all (\x -> isAlphaNum x || x `elem` "-+/_.") fpath = text fpath + | otherwise = doubleQuotes (text fpath) + + hunk ./Distribution/Package.hs 467 - where separator = skipSpaces >> char ',' >> skipSpaces + where separator = skipSpaces >> Compat.ReadP.char ',' >> skipSpaces hunk ./Distribution/Package.hs 475 -writePackageDescription fpath pkg = bracket (openFile fpath WriteMode) hClose $ \hFile -> do - hPutFields hFile pkg basicStanzaFields - case library pkg of - Nothing -> return () - Just lib -> hPutFields hFile lib binfoFields - mapM_ (hPutExecutable hFile) (executables pkg) +writePackageDescription fpath pkg = writeFile fpath (showPackageDescription pkg) + +showPackageDescription :: PackageDescription -> String +showPackageDescription pkg = render $ + ppFields pkg basicStanzaFields $$ + (case library pkg of + Nothing -> empty + Just lib -> ppFields lib binfoFields) $$ + vcat (map ppExecutable (executables pkg)) hunk ./Distribution/Package.hs 485 - hPutExecutable hFile exe = do - hPutStrLn hFile "" - hPutFields hFile exe executableStanzaFields - hPutFields hFile (buildInfo exe) binfoFields + ppExecutable exe = + space $$ + ppFields exe executableStanzaFields $$ + ppFields (buildInfo exe) binfoFields hunk ./Distribution/Package.hs 490 - hPutFields hFile pkg [] = return () - hPutFields hFile pkg ((Field name get set):flds) - | value /= "" = do - hPutStrLn hFile value - hPutFields hFile pkg flds - | otherwise = do - hPutFields hFile pkg flds - where - value = get pkg + ppFields pkg [] = empty + ppFields pkg ((StanzaField name get set):flds) = + get pkg $$ ppFields pkg flds hunk ./Distribution/Package.hs 494 -showDependency :: Dependency -> String -showDependency (Dependency name ver) = name ++ " " ++ showVersionRange ver +showDependency :: Dependency -> Doc +showDependency (Dependency name ver) = text name <+> text (showVersionRange ver) hunk ./Distribution/Version.hs 186 -showVersionRange (ThisVersion v) = '=' : showVersion v +showVersionRange (ThisVersion v) = '=' : '=' : showVersion v hunk ./Distribution/Version.hs 189 +showVersionRange (UnionVersionRanges (ThisVersion v1) (LaterVersion v2)) + | v1 == v2 = '>' : '=' : showVersion v1 +showVersionRange (UnionVersionRanges (LaterVersion v2) (ThisVersion v1)) + | v1 == v2 = '>' : '=' : showVersion v1 +showVersionRange (UnionVersionRanges (ThisVersion v1) (EarlierVersion v2)) + | v1 == v2 = '<' : '=' : showVersion v1 +showVersionRange (UnionVersionRanges (EarlierVersion v2) (ThisVersion v1)) + | v1 == v2 = '<' : '=' : showVersion v1 hunk ./Distribution/Version.hs 208 -parseVersionRange = choice [ string s >> liftM f parseVersion - | (s,f) <- rangeOps ] - where rangeOps = [ ("<", EarlierVersion), +parseVersionRange = do + f1 <- factor + (do + string "||" + f2 <- factor + return (UnionVersionRanges f1 f2) + +++ + do + string "&&" + f2 <- factor + return (IntersectVersionRanges f1 f2) + +++ + return f1) + where + factor = choice ((string "-any" >> return AnyVersion) : + [ string s >> liftM f parseVersion + | (s,f) <- rangeOps ]) + rangeOps = [ ("<", EarlierVersion), hunk ./Distribution/Setup.hs 104 + Maybe FilePath, -- given hc-pkg location hunk ./Distribution/Setup.hs 109 - | WithCompiler FilePath | Prefix FilePath + | WithCompiler FilePath | WithHcPkg FilePath | Prefix FilePath hunk ./Distribution/Setup.hs 203 + Option "w" ["with-hc-pkg"] (ReqArg WithHcPkg "PATH") + "give the path to the package tool", hunk ./Distribution/Setup.hs 208 - cmdAction = ConfigCmd (Nothing, Nothing, Nothing) + cmdAction = ConfigCmd (Nothing, Nothing, Nothing, Nothing) hunk ./Distribution/Setup.hs 222 - where updateCfg (fl:flags) t@(mcf, mpath, mprefix) = updateCfg flags $ + where updateCfg (fl:flags) t@(mcf, mpath, mhcpkg, mprefix) = updateCfg flags $ hunk ./Distribution/Setup.hs 224 - GhcFlag -> (Just GHC, mpath, mprefix) - NhcFlag -> (Just NHC, mpath, mprefix) - HugsFlag -> (Just Hugs, mpath, mprefix) - WithCompiler path -> (mcf, Just path, mprefix) - Prefix path -> (mcf, mpath, Just path) + GhcFlag -> (Just GHC, mpath, mhcpkg, mprefix) + NhcFlag -> (Just NHC, mpath, mhcpkg, mprefix) + HugsFlag -> (Just Hugs, mpath, mhcpkg, mprefix) + WithCompiler path -> (mcf, Just path, mhcpkg, mprefix) + WithHcPkg path -> (mcf, mpath, Just path, mprefix) + Prefix path -> (mcf, mpath, mhcpkg, Just path) hunk ./Distribution/Simple/Configure.hs 56 +#if __GLASGOW_HASKELL__ < 603 +#include "config.h" +#endif + hunk ./Distribution/Simple/Configure.hs 132 -configure pkg_descr (maybe_hc_flavor, maybe_hc_path, maybe_prefix) +configure pkg_descr (maybe_hc_flavor, maybe_hc_path, maybe_hc_pkg, maybe_prefix) hunk ./Distribution/Simple/Configure.hs 141 - compiler@(Compiler f' p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path pkg_descr + compiler@(Compiler f' p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path maybe_hc_pkg pkg_descr hunk ./Distribution/Simple/Configure.hs 187 -configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> PackageDescription - -> IO Compiler +configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath + -> PackageDescription -> IO Compiler hunk ./Distribution/Simple/Configure.hs 190 -configCompiler (Just flavor) (Just path) _ - = do pkgtool <- guessPkgToolFromHCPath flavor path - return (Compiler{compilerFlavor=flavor, - compilerPath=path, - compilerPkgTool=pkgtool}) +configCompiler (Just flavor) maybe_compiler maybe_pkgtool _ + = do compiler <- + case maybe_compiler of + Just path -> return path + Nothing -> findCompiler flavor hunk ./Distribution/Simple/Configure.hs 196 -configCompiler (Just flavor) Nothing _ - = do path <- findCompiler flavor - pkgtool <- guessPkgToolFromHCPath flavor path + pkgtool <- + case maybe_pkgtool of + Just path -> return path + Nothing -> guessPkgToolFromHCPath flavor compiler + hunk ./Distribution/Simple/Configure.hs 202 - compilerPath=path, + compilerPath=compiler, hunk ./Distribution/Simple/Configure.hs 205 -configCompiler Nothing maybe_path pkg_descr - = configCompiler (Just defaultCompilerFlavor) maybe_path pkg_descr +configCompiler Nothing maybe_path maybe_hc_pkg pkg_descr + = configCompiler (Just defaultCompilerFlavor) + maybe_path maybe_hc_pkg pkg_descr hunk ./Distribution/Simple/Install.hs 53 +#if __GLASGOW_HASKELL__ < 603 +#include "config.h" +#endif + hunk ./Distribution/Simple/Utils.hs 71 +#if __GLASGOW_HASKELL__ < 603 +#include "config.h" +#endif + hunk ./Distribution/Simple/Utils.hs 80 -import System.IO (hPutStr, stderr +import System.IO (hPutStr, stderr, hFlush, stdout hunk ./Distribution/Simple/Utils.hs 235 -die msg = do hPutStr stderr (msg++"\n"); exitWith (ExitFailure 1) +die msg = do hFlush stdout; hPutStr stderr (msg++"\n"); exitWith (ExitFailure 1) hunk ./Distribution/TODO 91 +** configure should check version of compiler hunk ./Makefile 16 -setup: +setup:: hunk ./Distribution/Make.hs 91 -configureArgs (_, Just hc_path, maybe_prefix) - = "--with-hc=" ++ hc_path ++ maybe "" (" --prefix="++) maybe_prefix -configureArgs (Just hc, Nothing, maybe_prefix) - = "--with-hc=" ++ showHC hc ++ maybe "" (" --prefix="++) maybe_prefix - where showHC GHC = "ghc" +configureArgs (flavour, mb_hc_path, mb_hc_pkg_path, mb_prefix) + = unwords (hc_flag ++ hc_pkg_flag ++ prefix_flag) + where + hc_flag = case (flavour, mb_hc_path) of + (_, Just hc_path) -> ["--with-hc=" ++ hc_path] + (Just hc, Nothing) -> ["--with-hc=" ++ showHC hc] + (Nothing,Nothing) -> [] + hc_pkg_flag = case mb_hc_pkg_path of + Just hc_pkg_path -> ["--with-hc-pkg=" ++ hc_pkg_path] + Nothing -> [] + prefix_flag = case mb_prefix of + Just p -> ["--with-hc=" ++ p] + Nothing -> [] + + showHC GHC = "ghc" hunk ./Distribution/Make.hs 108 -configureArgs (Nothing, Nothing, maybe_prefix) - = maybe "" ("--prefix="++) maybe_prefix hunk ./Distribution/Simple/Configure.hs 269 - Nothing) + Nothing, Nothing) addfile ./copyright hunk ./Distribution/TODO 3 +** clarify description filename issues +- allow foo.hsproj? hunk ./Distribution/TODO 16 -*** add over-all license file. hunk ./Distribution/TODO 19 -** Change name of Setup.description? -- allow foo.hsproj? - hunk ./README 49 +- Krasimir Angelov hunk ./copyright 1 +Copyright (c) 2003-2004, Isaac Jones, Simon Marlow, Martin Sjögren, + Bjorn Bringert, Krasimir Angelov +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. addfile ./Distribution/PreProcess.hs hunk ./Distribution/PreProcess.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.PreProcess +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC, Hugs +-- +{- Copyright (c) 2003-2004, Isaac Jones, Malcolm Wallace +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.PreProcess (preprocessSources) where + +import Distribution.Package (PackageDescription(..), BuildInfo(..), Executable(..)) +import Distribution.Simple.Configure (LocalBuildInfo(..)) +import Distribution.Simple.Utils (setupMessage,moveSources, pathJoin, withLib) + + +-- |Copy and (possibly) preprocess sources from hsSourceDirs +preprocessSources :: PackageDescription + -> LocalBuildInfo + -> FilePath -- ^ Directory to put preprocessed + -- sources in + -> IO () +preprocessSources pkg_descr _ pref = + do + setupMessage "Preprocessing" pkg_descr + withLib pkg_descr $ \lib -> + moveSources (hsSourceDir lib) (pathJoin [pref, hsSourceDir lib]) (modules lib) ["hs","lhs"] + sequence_ [ moveSources (hsSourceDir exeBi) (pathJoin [pref, hsSourceDir exeBi]) (modules exeBi) ["hs","lhs"] + | Executable _ _ exeBi <- executables pkg_descr] hunk ./Distribution/Simple/Build.hs 54 +import Distribution.PreProcess (preprocessSources) hunk ./Distribution/Simple/Build.hs 60 - splitFilePath, joinFilenameDir, joinExt + splitFilePath, joinFilenameDir, joinExt, + withLib hunk ./Distribution/Simple/Build.hs 158 --- |Copy and (possibly) preprocess sources from hsSourceDirs -preprocessSources :: PackageDescription - -> LocalBuildInfo - -> FilePath -- ^ Directory to put preprocessed - -- sources in - -> IO () -preprocessSources pkg_descr lbi pref = - do - setupMessage "Preprocessing" pkg_descr - withLib pkg_descr $ \lib -> - moveSources (hsSourceDir lib) (pathJoin [pref, hsSourceDir lib]) (modules lib) ["hs","lhs"] - sequence_ [ moveSources (hsSourceDir exeBi) (pathJoin [pref, hsSourceDir exeBi]) (modules exeBi) ["hs","lhs"] - | Executable exeName modPath exeBi <- executables pkg_descr] - - -- FIX: includes, includeDirs - --- |If the package description has a library section, call the given --- function with the library build info as argument. -withLib :: PackageDescription -> (BuildInfo -> IO ()) -> IO () -withLib pkg_descr f = when (hasLibs pkg_descr) $ f (fromJust (library pkg_descr)) - hunk ./Distribution/Simple/Utils.hs 66 + withLib, hunk ./Distribution/Simple/Utils.hs 76 -import Distribution.Package (PackageDescription(..), showPackageId) +import Distribution.Package (PackageDescription(..), showPackageId, + BuildInfo(..), hasLibs) hunk ./Distribution/Simple/Utils.hs 463 + +-- |If the package description has a library section, call the given +-- function with the library build info as argument. +withLib :: PackageDescription -> (BuildInfo -> IO ()) -> IO () +withLib pkg_descr f = when (hasLibs pkg_descr) $ f (fromJust (library pkg_descr)) + hunk ./README 50 +- Malcolm Wallace (via hmake) hunk ./copyright 2 - Bjorn Bringert, Krasimir Angelov + Bjorn Bringert, Krasimir Angelov, + Malcolm Wallace adddir ./Distribution/PreProcess addfile ./Distribution/PreProcess/Unlit.hs hunk ./Distribution/PreProcess/Unlit.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.PreProcess.Unlit +-- Copyright : ... +-- +-- Maintainer : Malcolm Wallace +-- Stability : Stable +-- Portability : All +-- +-- Remove the "literal" markups from a Haskell source file, including +-- ">", "\begin{code}, \end{code}", and "#" +-- +-- Part of the following code is from +-- "Report on the Programming Language Haskell", +-- version 1.2, appendix C. + +module Distribution.PreProcess.Unlit(unlit,plain) where + +import Char + +-- exports: + +unlit :: String -> String -> String +unlit file lhs = (unlines . map unclassify . adjacent file (0::Int) Blank + . classify 0) (tolines lhs) + +plain :: String -> String -> String -- no unliteration +plain _ hs = hs +---- + +data Classified = Program String | Blank | Comment + | Include Int String | Pre String + +classify :: Int -> [String] -> [Classified] +classify _ [] = [] +classify _ (('\\':x):xs) | x == "begin{code}" = Blank : allProg xs + where allProg [] = [] -- Should give an error message, but I have no + -- good position information. + allProg (('\\':x):xs) | x == "end{code}" = Blank : classify 0 xs + allProg (x:xs) = Program x:allProg xs +classify 0 (('>':x):xs) = let (sp,code) = span isSpace x in + Program code : classify (length sp + 1) xs +classify n (('>':x):xs) = Program (drop (n-1) x) : classify n xs +classify _ (('#':x):xs) = + (case words x of + (line:file:_) | all isDigit line -> Include (read line) file + _ -> Pre x + ) : classify 0 xs +classify _ (x:xs) | all isSpace x = Blank:classify 0 xs +classify _ (x:xs) = Comment:classify 0 xs + +unclassify :: Classified -> String +unclassify (Program s) = s +unclassify (Pre s) = '#':s +unclassify (Include i f) = '#':' ':show i ++ ' ':f +unclassify Blank = "" +unclassify Comment = "" + +adjacent :: String -> Int -> Classified -> [Classified] -> [Classified] +adjacent file 0 _ (x :xs) = x: adjacent file 1 x xs + -- force evaluation of line number +adjacent file n y@(Program _) (x@Comment :xs) = + error (message file n "program" "comment") +adjacent file n y@(Program _) (x@(Include i f):xs) = x: adjacent f i y xs +adjacent file n y@(Program _) (x@(Pre _) :xs) = x: adjacent file (n+1) y xs +adjacent file n y@Comment (x@(Program _) :xs) = + error (message file n "comment" "program") +adjacent file n y@Comment (x@(Include i f):xs) = x: adjacent f i y xs +adjacent file n y@Comment (x@(Pre _) :xs) = x: adjacent file (n+1) y xs +adjacent file n y@Blank (x@(Include i f):xs) = x: adjacent f i y xs +adjacent file n y@Blank (x@(Pre _) :xs) = x: adjacent file (n+1) y xs +adjacent file n _ (x@next :xs) = x: adjacent file (n+1) x xs +adjacent file n _ [] = [] + +message "\"\"" n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n" +message [] n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n" +message file n p c = "In file " ++ file ++ " at line " + ++show n++": "++p++ " line before "++c++" line.\n" + + +-- Re-implementation of 'lines', for better efficiency (but decreased +-- laziness). Also, importantly, accepts non-standard DOS and Mac line +-- ending characters. +tolines s = lines' s id + where + lines' [] acc = [acc []] + lines' ('\^M':'\n':s) acc = acc [] : lines' s id -- DOS + lines' ('\^M':s) acc = acc [] : lines' s id -- MacOS + lines' ('\n':s) acc = acc [] : lines' s id -- Unix + lines' (c:s) acc = lines' s (acc . (c:)) + + + +{- +-- A very naive version of unliteration.... +module Unlit(unlit) where +-- This version does not handle \begin{code} & \end{code}, and it is +-- careless with indentation. +unlit = map unlitline + +unlitline ('>' : s) = s +unlitline _ = "" +-} + hunk ./Distribution/PreProcess.hs 42 +import Distribution.PreProcess.Unlit(plain, unlit) hunk ./Distribution/PreProcess.hs 46 +import Distribution.Setup (CompilerFlavor(..)) hunk ./Distribution/PreProcess.hs 48 - hunk ./Distribution/PreProcess.hs 51 - -> FilePath -- ^ Directory to put preprocessed - -- sources in + -> [PPSuffixHandler] -- ^ preprocessors to try + -> FilePath {- ^ Directory to put preprocessed + sources in -} hunk ./Distribution/PreProcess.hs 55 -preprocessSources pkg_descr _ pref = +preprocessSources pkg_descr _ _ pref = hunk ./Distribution/PreProcess.hs 63 +data PreProcessor = PreProcessor + { ppExecutableName :: String, + ppDefaultOptions :: [String] + -- |How to construct the output option + ppOutputFileOption :: FilePath -> String, + -- |Whether the pp produces source appropriate for this compiler. + ppSuitable :: CompilerFlavor -> Bool, + } + | PreProcessAction (FilePath -> IO ()) + +type PPSuffixHandler + = (String, (String->String->String), PreProcessor) + +-- |Leave in unlit since some preprocessors can't handle literated +-- source? +knownSuffixes :: [ PPSuffixHandler ] +knownSuffixes = + [ ("gc", plain, ppGreenCard) + , ("chs", plain, ppC2hs) + , ("hsc", plain, ppHsc2hs) + , ("y", plain, ppHappy) + , ("ly", unlit, ppHappy) +-- , ("hs.cpp", plain, ppCpp) + , ("gc", plain, ppNone) -- note, for nhc98 only + , ("hs", plain, ppNone) +-- , ("lhs", unlit, ppNone) + ] + +ppGreenCard, ppHsc2hs, ppC2hs, ppHappy, ppNone :: PreProcessor +-- ppCpp = PreProcessor +-- { ppExecutableName = "gcc -E -traditional" +-- , ppDefaultOptions = \d-> "-x c" : map ("-D"++) (defs d++zdefs d) +-- , ppOutputFileOption = \f-> "> "++f +-- , ppSuitable = \hc-> True +-- } +ppGreenCard = PreProcessor + { ppExecutableName = "green-card" + , ppDefaultOptions = ["-tffi"] -- + includePath of compiler? + , ppOutputFileOption = \f-> "-o "++f + , ppSuitable = \hc-> hc == GHC + } +ppHsc2hs = PreProcessor + { ppExecutableName = "hsc2hs" + , ppDefaultOptions = [] + , ppOutputFileOption = \_-> "" + , ppSuitable = \hc-> hc `elem` [GHC,NHC] + } +ppC2hs = PreProcessor + { ppExecutableName = "c2hs" + , ppDefaultOptions = [] + , ppOutputFileOption = \_-> "" + , ppSuitable = \hc-> hc `elem` [GHC,NHC] + } +ppHappy = PreProcessor + { ppExecutableName = "happy" + , ppDefaultOptions = [] + , ppOutputFileOption = \_-> "" + , ppSuitable = \hc-> True + } +ppNone = PreProcessor + { ppExecutableName = "" + , ppDefaultOptions = [] + , ppOutputFileOption = \_-> "" + , ppSuitable = \hc-> True + } + hunk ./Distribution/TODO 2 -** add simple (cpphs) preprocessing? +** Preprocessing +- add simple (cpphs) preprocessing? +- what other preprocessors can't unlit? +- + hunk ./Distribution/PreProcess.hs 40 -module Distribution.PreProcess (preprocessSources) where +module Distribution.PreProcess (preprocessSources, knownSuffixes, + PPSuffixHandler, PreProcessor(..)) + where hunk ./Distribution/PreProcess.hs 67 - ppDefaultOptions :: [String] + ppDefaultOptions :: [String], hunk ./Distribution/PreProcess.hs 71 - ppSuitable :: CompilerFlavor -> Bool, + ppSuitable :: CompilerFlavor -> Bool hunk ./Distribution/PreProcess.hs 87 --- , ("hs.cpp", plain, ppCpp) + , ("cpphs", plain, ppCpp) hunk ./Distribution/PreProcess.hs 93 -ppGreenCard, ppHsc2hs, ppC2hs, ppHappy, ppNone :: PreProcessor --- ppCpp = PreProcessor --- { ppExecutableName = "gcc -E -traditional" --- , ppDefaultOptions = \d-> "-x c" : map ("-D"++) (defs d++zdefs d) --- , ppOutputFileOption = \f-> "> "++f --- , ppSuitable = \hc-> True --- } +ppCpp, ppGreenCard, ppHsc2hs, ppC2hs, ppHappy, ppNone :: PreProcessor +ppCpp = PreProcessor + { ppExecutableName = "cpphs" + , ppDefaultOptions = [] + , ppOutputFileOption = \f-> "-O"++f + , ppSuitable = \_-> True + } hunk ./Distribution/PreProcess.hs 122 - , ppSuitable = \hc-> True + , ppSuitable = \_-> True hunk ./Distribution/Simple/Build.hs 84 - preprocessSources pkg_descr lbi pref + preprocessSources pkg_descr lbi [] pref hunk ./Distribution/PreProcess.hs 47 -import Distribution.Simple.Utils (setupMessage,moveSources, pathJoin, withLib) +import Distribution.Simple.Utils (setupMessage,moveSources, pathJoin, + withLib, rawSystemPath) hunk ./Distribution/PreProcess.hs 74 - | PreProcessAction (FilePath -> IO ()) + | PreProcessAction + {ppFun :: (FilePath -- Input file + -> FilePath -- output file + -> IO ()), + ppSuitable :: CompilerFlavor -> Bool} hunk ./Distribution/PreProcess.hs 83 +--| FIX: Some preprocessors aren't respecting the output location; for +-- these, we should move the file? Should we change it to "directory"? + +ppCommandLine :: PreProcessor + -> FilePath -- ^Location of the source file + -> FilePath -- ^Location of the output file + -> IO () -- ^The constructed command-line +ppCommandLine (PreProcessor exeName inOpts outFun _) sourceFile outFile + = let opts = if (null (outFun outFile)) + then inOpts ++ [sourceFile] + else (inOpts ++ [outFun outFile, sourceFile]) + in rawSystemPath exeName opts >> return () +ppCommandLine (PreProcessAction f _) sourceFile outFile + = f sourceFile outFile + hunk ./Distribution/TODO 1 -* 0.2 hunk ./Distribution/TODO 2 -- add simple (cpphs) preprocessing? +- move files to output location +- integrate into preprocessSources function hunk ./Distribution/TODO 5 -- hunk ./Distribution/PreProcess.hs 83 ---| FIX: Some preprocessors aren't respecting the output location; for +-- |FIX: Some preprocessors aren't respecting the output location; for hunk ./Distribution/PreProcess.hs 86 -ppCommandLine :: PreProcessor - -> FilePath -- ^Location of the source file - -> FilePath -- ^Location of the output file - -> IO () -- ^The constructed command-line -ppCommandLine (PreProcessor exeName inOpts outFun _) sourceFile outFile +executePreprocessor :: PreProcessor + -> FilePath -- ^Location of the source file + -> FilePath -- ^Location of the output file + -> IO () -- ^The constructed command-line +executePreprocessor (PreProcessor exeName inOpts outFun _) sourceFile outFile hunk ./Distribution/PreProcess.hs 95 -ppCommandLine (PreProcessAction f _) sourceFile outFile +executePreprocessor (PreProcessAction f _) sourceFile outFile move ./Distribution/TODO ./TODO hunk ./Distribution/Simple/Build.hs 50 -import Distribution.Misc (Extension(..), extensionsToNHCFlag, extensionsToGHCFlag) +import Distribution.Misc (extensionsToGHCFlag, extensionsToNHCFlag) hunk ./Distribution/Simple/Build.hs 53 - BuildInfo(..), showPackageId, Executable(..), hasLibs) + BuildInfo(..), showPackageId, Executable(..)) hunk ./Distribution/Simple/Build.hs 59 - mkLibName, moveSources, pathJoin, + mkLibName, pathJoin, hunk ./Distribution/Simple/Build.hs 65 -import Control.Monad (when, unless) +import Control.Monad (unless) hunk ./Distribution/Simple/Build.hs 67 -import Data.List(intersperse, nub) -import Data.Maybe(fromJust) -import System.Environment (getEnv) +import Data.List(nub) hunk ./Distribution/Simple/Build.hs 109 - withLib pkg_descr $ \build -> do + withLib pkg_descr $ \buildInfo' -> do hunk ./Distribution/Simple/Build.hs 112 - "-odir", pathJoin [pref, hsSourceDir build], - "-hidir", pathJoin [pref, hsSourceDir build] + "-odir", pathJoin [pref, hsSourceDir buildInfo'], + "-hidir", pathJoin [pref, hsSourceDir buildInfo'] hunk ./Distribution/Simple/Build.hs 115 - ++ constructGHCCmdLine pref build (packageDeps lbi) - ++ modules build - unless (null (modules build)) $ + ++ constructGHCCmdLine pref buildInfo' (packageDeps lbi) + ++ modules buildInfo' + unless (null (modules buildInfo')) $ hunk ./Distribution/Simple/Build.hs 121 - unless (null (cSources build)) $ - rawSystemExit ghcPath (cSources build ++ ["-odir", pref, "-hidir", pref, "-c"]) + unless (null (cSources buildInfo')) $ + rawSystemExit ghcPath (cSources buildInfo' ++ ["-odir", pref, "-hidir", pref, "-c"]) hunk ./Distribution/Simple/Build.hs 124 - let hObjs = [ pathJoin [hsSourceDir build, dotToSep x `joinExt` objsuffix] - | x <- modules build ] + let hObjs = [ pathJoin [hsSourceDir buildInfo', dotToSep x `joinExt` objsuffix] + | x <- modules buildInfo' ] hunk ./Distribution/Simple/Build.hs 127 - | (path, file, _) <- (map splitFilePath (cSources build)) ] + | (path, file, _) <- (map splitFilePath (cSources buildInfo')) ] hunk ./Distribution/Simple/Build.hs 135 - "-o", pathJoin [pref, hsSourceDir exeBi, exeName] + "-o", pathJoin [pref, hsSourceDir exeBi, exeName'] hunk ./Distribution/Simple/Build.hs 137 - ++ constructGHCCmdLine pref exeBi (exeDeps exeName lbi) + ++ constructGHCCmdLine pref exeBi (exeDeps exeName' lbi) hunk ./Distribution/Simple/Build.hs 140 - | Executable exeName modPath exeBi <- executables pkg_descr] + | Executable exeName' modPath exeBi <- executables pkg_descr] hunk ./Distribution/Simple/Build.hs 143 -constructGHCCmdLine pref build deps = +constructGHCCmdLine pref buildInfo' deps = hunk ./Distribution/Simple/Build.hs 145 - let flags = snd $ extensionsToGHCFlag (extensions build) - in [ "--make", "-i" ++ pathJoin [pref, hsSourceDir build] ] - ++ nub (flags ++ [ opt | (GHC,opts) <- options build, opt <- opts ]) + let flags = snd $ extensionsToGHCFlag (extensions buildInfo') + in [ "--make", "-i" ++ pathJoin [pref, hsSourceDir buildInfo'] ] + ++ nub (flags ++ [ opt | (GHC,opts) <- options buildInfo', opt <- opts ]) hunk ./Distribution/Simple/Configure.hs 60 -import Distribution.Misc(Dependency(..), Extension(..), - extensionsToGHCFlag, extensionsToNHCFlag, extensionsToHugsFlag) +import Distribution.Misc(Dependency(..), extensionsToGHCFlag, + extensionsToNHCFlag, extensionsToHugsFlag) hunk ./Distribution/Simple/Configure.hs 63 -import Distribution.Package(PackageDescription(..), emptyPackageDescription, - PackageIdentifier(..), BuildInfo(..), Executable(..) +import Distribution.Package(PackageDescription(..), PackageIdentifier(..), + BuildInfo(..), Executable(..) hunk ./Distribution/Simple/Configure.hs 105 -emptyLocalBuildInfo :: LocalBuildInfo -emptyLocalBuildInfo = undefined - hunk ./Distribution/Simple/Configure.hs 134 - let prefix = case maybe_prefix of + let pref = case maybe_prefix of hunk ./Distribution/Simple/Configure.hs 138 - compiler@(Compiler f' p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path maybe_hc_pkg pkg_descr + comp@(Compiler f' p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path maybe_hc_pkg pkg_descr hunk ./Distribution/Simple/Configure.hs 152 - message $ "Using build prefix: " ++ prefix + message $ "Using build prefix: " ++ pref hunk ./Distribution/Simple/Configure.hs 156 - return LocalBuildInfo{prefix=prefix, compiler=compiler, + return LocalBuildInfo{prefix=pref, compiler=comp, hunk ./Distribution/Simple/Configure.hs 174 -system_default_prefix PackageDescription{package=package} = hunk ./Distribution/Simple/Configure.hs 175 - "C:\\Program Files\\" ++ pkgName package +system_default_prefix PackageDescription{package=pkg} = + "C:\\Program Files\\" ++ pkgName pkg hunk ./Distribution/Simple/Configure.hs 178 +system_default_prefix _ = hunk ./Distribution/Simple/Configure.hs 189 - = do compiler <- + = do comp <- hunk ./Distribution/Simple/Configure.hs 197 - Nothing -> guessPkgToolFromHCPath flavor compiler + Nothing -> guessPkgToolFromHCPath flavor comp hunk ./Distribution/Simple/Configure.hs 200 - compilerPath=compiler, + compilerPath=comp, hunk ./Distribution/Simple/Configure.hs 207 +defaultCompilerFlavor :: CompilerFlavor hunk ./Distribution/Simple/Configure.hs 243 - (dir,fname,ext) = splitFilePath path + (dir,_,ext) = splitFilePath path hunk ./Distribution/Simple/Install.hs 67 -import System.Cmd(system) hunk ./Distribution/Simple/Install.hs 102 -installLibGHC pref buildPref pkg_descr@PackageDescription{library=Just l, - package=p} +installLibGHC pref buildPref PackageDescription{library=Just l, + package=p} hunk ./Distribution/Simple/Install.hs 112 -installHugs pref buildPref pkg_descr@PackageDescription{library=Just l} +installHugs pref buildPref PackageDescription{library=Just l} hunk ./Distribution/Simple/Install.hs 128 -mkBinDir pkg_descr lbi install_prefixM = +mkBinDir _ lbi install_prefixM = hunk ./Distribution/Simple/Register.hs 63 -import System(getEnv) hunk ./Distribution/Simple/Register.hs 82 - GHC -> do let pkg_config = mkGHCPackageConfig pkg_descr lbi - (localConf, pkgConfExists) <- GHC.localPackageConfig + GHC -> do (localConf, pkgConfExists) <- GHC.localPackageConfig hunk ./Distribution/Package.hs 62 -import Control.Exception(bracket) hunk ./Distribution/Package.hs 63 -import Data.List(isPrefixOf) hunk ./Distribution/Package.hs 72 -import System.IO(openFile, IOMode(..), hGetContents, hClose, hPutStrLn) - hunk ./Distribution/Simple/Configure.hs 64 - BuildInfo(..), Executable(..) + BuildInfo(..), Executable(..), emptyPackageDescription hunk ./Distribution/Simple/Utils.hs 80 -import Data.List(inits, nub, intersperse, findIndices, partition) +import Data.List(nub, intersperse, findIndices) hunk ./Distribution/Simple/Utils.hs 109 - [] -> (reverse real_dir, reverse suf, []) - (_:pre) -> (reverse real_dir, reverse pre, reverse suf) + [] -> (reverse real_dir, reverse suf, []) + (_:pre') -> (reverse real_dir, reverse pre', reverse suf) hunk ./Distribution/Simple/Utils.hs 123 - [] -> "."++drive - [_] -> pathSeparatorStr++drive - (_:dir) -> dir++drive + [] -> "."++drive + [_] -> pathSeparatorStr++drive + (_:dir') -> dir'++drive hunk ./Distribution/Simple/Utils.hs 157 - (c:path) | isPathSeparator c -> (root++pathSeparatorStr,path) - _ -> (root,path) + (c:path'') | isPathSeparator c -> (root++pathSeparatorStr,path'') + _ -> (root,path) hunk ./Distribution/Simple/Utils.hs 172 - (pre,"") -> (pre, "") - (pre,_:suf) -> (pre,suf) + (pre',"") -> (pre', "") + (pre',_:suf') -> (pre',suf') hunk ./Distribution/PreProcess.hs 48 - withLib, rawSystemPath) + withLib, rawSystemPath, joinFilenameDir) hunk ./Distribution/PreProcess.hs 50 +import System.Exit (ExitCode) +import System.Directory (renameFile) hunk ./Distribution/PreProcess.hs 82 +-- |If both output locations are null, just output to the default +-- location for this preprocessor (may be stdout?). If directory is +-- null, default to "." if output file is null, use the default +-- filename, but move to the output directory. +type PreProcessor2 = FilePath -- ^Location of the source file in need of preprocessing + -> Maybe FilePath -- ^Directory to output the preprocessed file (output) + -> Maybe FilePath -- ^Filename of the preprocessed file (output) + -> IO ExitCode + +ppCpp2 :: PreProcessor2 +ppCpp2 inFile Nothing Nothing + = rawSystemPath "cpphs" ["-O" ++ inFile ++ ".hs", inFile] +ppCpp2 inFile j@(Just outDir) Nothing + = ppCpp2 inFile j (Just (inFile ++ ".hs")) +ppCpp2 inFile Nothing (Just outFile) + = rawSystemPath "cpphs" ["-O" ++ outFile, inFile] +ppCpp2 inFile (Just outDir) (Just outFile) + = do c <- rawSystemPath "cpphs" ["-O" ++ outFile, inFile] + renameFile outFile (joinFilenameDir outDir outFile) + return c + + hunk ./Distribution/PreProcess.hs 41 - PPSuffixHandler, PreProcessor(..)) + PPSuffixHandler, PreProcessor) hunk ./Distribution/PreProcess.hs 48 - withLib, rawSystemPath, joinFilenameDir) -import Distribution.Setup (CompilerFlavor(..)) -import System.Exit (ExitCode) -import System.Directory (renameFile) + withLib, rawSystemPath) +import System.Exit (ExitCode(..)) hunk ./Distribution/PreProcess.hs 66 -data PreProcessor = PreProcessor - { ppExecutableName :: String, - ppDefaultOptions :: [String], - -- |How to construct the output option - ppOutputFileOption :: FilePath -> String, - -- |Whether the pp produces source appropriate for this compiler. - ppSuitable :: CompilerFlavor -> Bool - } - | PreProcessAction - {ppFun :: (FilePath -- Input file - -> FilePath -- output file - -> IO ()), - ppSuitable :: CompilerFlavor -> Bool} - hunk ./Distribution/PreProcess.hs 70 -type PreProcessor2 = FilePath -- ^Location of the source file in need of preprocessing - -> Maybe FilePath -- ^Directory to output the preprocessed file (output) - -> Maybe FilePath -- ^Filename of the preprocessed file (output) - -> IO ExitCode +type PreProcessor = FilePath -- ^Location of the source file in need of preprocessing + -> FilePath -- ^Output filename + -> IO ExitCode hunk ./Distribution/PreProcess.hs 74 -ppCpp2 :: PreProcessor2 -ppCpp2 inFile Nothing Nothing - = rawSystemPath "cpphs" ["-O" ++ inFile ++ ".hs", inFile] -ppCpp2 inFile j@(Just outDir) Nothing - = ppCpp2 inFile j (Just (inFile ++ ".hs")) -ppCpp2 inFile Nothing (Just outFile) +ppCpp, ppGreenCard, ppHsc2hs, ppC2hs, ppHappy, ppNone :: PreProcessor + +ppCpp inFile outFile hunk ./Distribution/PreProcess.hs 78 -ppCpp2 inFile (Just outDir) (Just outFile) - = do c <- rawSystemPath "cpphs" ["-O" ++ outFile, inFile] - renameFile outFile (joinFilenameDir outDir outFile) - return c +ppGreenCard inFile outFile + = rawSystemPath "green-card" ["-tffi", "-o" ++ outFile, inFile] +ppHsc2hs = standardPP "hsc2hs" +ppC2hs inFile outFile + = rawSystemPath "c2hs" ["-o " ++ outFile, inFile] hunk ./Distribution/PreProcess.hs 84 +ppHappy = standardPP "happy" +ppNone _ _ = return ExitSuccess hunk ./Distribution/PreProcess.hs 87 +standardPP :: String -> PreProcessor +standardPP eName inFile outFile + = rawSystemPath eName ["-o" ++ outFile, inFile] + hunk ./Distribution/PreProcess.hs 94 --- |FIX: Some preprocessors aren't respecting the output location; for --- these, we should move the file? Should we change it to "directory"? - -executePreprocessor :: PreProcessor - -> FilePath -- ^Location of the source file - -> FilePath -- ^Location of the output file - -> IO () -- ^The constructed command-line -executePreprocessor (PreProcessor exeName inOpts outFun _) sourceFile outFile - = let opts = if (null (outFun outFile)) - then inOpts ++ [sourceFile] - else (inOpts ++ [outFun outFile, sourceFile]) - in rawSystemPath exeName opts >> return () -executePreprocessor (PreProcessAction f _) sourceFile outFile - = f sourceFile outFile - hunk ./Distribution/PreProcess.hs 106 --- , ("lhs", unlit, ppNone) + , ("lhs", unlit, ppNone) hunk ./Distribution/PreProcess.hs 109 -ppCpp, ppGreenCard, ppHsc2hs, ppC2hs, ppHappy, ppNone :: PreProcessor -ppCpp = PreProcessor - { ppExecutableName = "cpphs" - , ppDefaultOptions = [] - , ppOutputFileOption = \f-> "-O"++f - , ppSuitable = \_-> True - } -ppGreenCard = PreProcessor - { ppExecutableName = "green-card" - , ppDefaultOptions = ["-tffi"] -- + includePath of compiler? - , ppOutputFileOption = \f-> "-o "++f - , ppSuitable = \hc-> hc == GHC - } -ppHsc2hs = PreProcessor - { ppExecutableName = "hsc2hs" - , ppDefaultOptions = [] - , ppOutputFileOption = \_-> "" - , ppSuitable = \hc-> hc `elem` [GHC,NHC] - } -ppC2hs = PreProcessor - { ppExecutableName = "c2hs" - , ppDefaultOptions = [] - , ppOutputFileOption = \_-> "" - , ppSuitable = \hc-> hc `elem` [GHC,NHC] - } -ppHappy = PreProcessor - { ppExecutableName = "happy" - , ppDefaultOptions = [] - , ppOutputFileOption = \_-> "" - , ppSuitable = \_-> True - } -ppNone = PreProcessor - { ppExecutableName = "" - , ppDefaultOptions = [] - , ppOutputFileOption = \_-> "" - , ppSuitable = \hc-> True - } - hunk ./Distribution/Simple/Utils.hs 94 -#ifdef HAVE_UNIX_PACKAGE -import System.Posix.Files (getFileStatus, accessTime, modificationTime, setFileTimes) -#endif +import System.Posix.Files (getFileStatus, accessTime, modificationTime, setFileTimes, fileMode, setFileMode) hunk ./Distribution/Simple/Utils.hs 387 + +copyPermissions src dest + = do srcStatus <- getFileStatus src + setFileMode dest (fileMode srcStatus) + hunk ./Distribution/Simple/Utils.hs 398 - try (getPermissions src >>= setPermissions dest) + try (copyPermissions src dest) hunk ./Distribution/Simple/Utils.hs 404 - try (getPermissions src >>= setPermissions dest) + try (copyPermissions src dest) hunk ./Setup.description 7 + Distribution.PreProcess, hunk ./Distribution/Simple/Utils.hs 94 +#ifndef mingw32_TARGET_OS hunk ./Distribution/Simple/Utils.hs 96 +#endif hunk ./Distribution/Simple/Utils.hs 390 +copyPermissions :: FilePath -> FilePath -> IO () +#ifndef mingw32_TARGET_OS hunk ./Distribution/Simple/Utils.hs 395 +#else +copyPermissions src dest + = return () +#endif hunk ./Distribution/Simple/Utils.hs 400 +copyFileTimes :: FilePath -> FilePath -> IO () +#ifndef mingw32_TARGET_OS +copyFileTimes src dest + = do st <- getFileStatus src + let atime = accessTime st + mtime = modificationTime st + setFileTimes dest atime mtime +#else +copyFileTimes src dest + = return () +#endif + hunk ./Distribution/Simple/Utils.hs 425 -#ifdef HAVE_UNIX_PACKAGE - try $ do st <- getFileStatus src - let atime = accessTime st - mtime = modificationTime st - setFileTimes dest atime mtime -#endif + try (copyFileTimes src dest) hunk ./Compat/RawSystem.hs 4 -#ifndef __GLASGOW_HASKELL__ +#if (!(defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 600)) hunk ./Compat/RawSystem.hs 13 -#ifndef __GLASGOW_HASKELL__ +#if (!(defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 600)) hunk ./Distribution/Simple/Utils.hs 416 -#ifndef __GLASGOW_HASKELL__ +#if (!(defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 600)) hunk ./Distribution/Simple.hs 79 -import System.IO.Error(try) hunk ./Distribution/Simple.hs 82 -import System.IO (hPutStr, stderr) +import System.IO (hPutStr, stderr, try) hunk ./debian/changelog 1 -haskell-cabal (0.0.1-2) unstable; urgency=low +haskell-cabal (0.1-4) unstable; urgency=low hunk ./debian/changelog 3 - * Cleaned up scripts and name of binary. + * Added basic infrastructure for multiple targets, though + have not yet enabled it because it doesn't yet work upstream. hunk ./debian/changelog 6 - -- Isaac Jones Thu, 29 Jul 2004 10:37:31 -0400 + -- John Goerzen Tue, 5 Oct 2004 19:45:27 -0500 hunk ./debian/changelog 8 -haskell-cabal (0.0.1-1) unstable; urgency=low +haskell-cabal (0.1-3) unstable; urgency=low hunk ./debian/changelog 10 - * Initial Release. + * Fixed old postinst, postrm scripts to do the right thing in more cases. hunk ./debian/changelog 12 - -- Isaac Jones Wed, 28 Jul 2004 22:29:38 -0400 + -- John Goerzen Tue, 5 Oct 2004 16:25:29 -0500 + +haskell-cabal (0.1-2) unstable; urgency=low + + * Install binary under /usr/lib/haskell-libraries/ghc6 in keeping + with new Haskell policy. + + -- John Goerzen Tue, 5 Oct 2004 15:56:03 -0500 + +haskell-cabal (0.1-1) unstable; urgency=low + + * Initial release. Closes: #275069. + + -- John Goerzen Tue, 05 Oct 2004 13:36:08 -0500 + hunk ./debian/control 3 -Maintainer: Isaac Jones -Build-Depends: debhelper (>= 4.0.0), ghc6 (> 6.2) +Maintainer: John Goerzen +Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.1), ghc6 (<< 6.2.2), ghc5 (>= 5.04.3), ghc5 (<< 5.04.4) hunk ./debian/control 10 +Depends: ghc6 (>= 6.2.1), ghc6 (<< 6.2.2) hunk ./debian/control 12 - Haskell Common Architecture for Building Applications and Libraries + The Haskell Cabal is a system for building and installing Haskell + programs and libraries. It is aware of multiple different compilers + and can handle them without trouble. + . + This package will provide the infrastructure necessary to build + Cabalized packages on Debian machines, or to Debianize those packages. + hunk ./debian/copyright 4 -It was downloaded from +John Goerzen updated it for sid in October 5, 2004. hunk ./debian/copyright 6 -Upstream Author(s): Isaac, Marvin, Simon, etc. +It was downloaded from http://www.haskell.org/cabal/code.html hunk ./debian/copyright 8 +Upstream Author(s): Bjorn Bringert, Isaac Jones, Simon Marlow, +Martin Sjögren + hunk ./debian/copyright 13 -BSD-Like +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. hunk ./debian/docs 2 +releaseNotes hunk ./debian/libghc6-cabal-dev.postinst 1 -#!/bin/sh -e +#! /bin/sh +# postinst script for missingh +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package +# + +case "$1" in + configure) + /usr/lib/ghc-6.2.1/bin/ghc-pkg-6.2.1 -g --add-package \ + < /usr/share/doc/libghc6-cabal-dev/installed-pkg-config + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac hunk ./debian/libghc6-cabal-dev.postinst 36 -ghc-pkg -g --add-package \ - < /usr/share/doc/libghc6-cabal-dev/installed-pkg-config +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. hunk ./debian/libghc6-cabal-dev.postinst 40 + +exit 0 + + hunk ./debian/libghc6-cabal-dev.prerm 1 -#!/bin/sh -e +#! /bin/sh +# prerm script for missingh +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + /usr/lib/ghc-6.2.1/bin/ghc-pkg-6.2.1 -r Cabal + rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.1/HSCabal*.o + +# install-info --quiet --remove /usr/info/missingh.info.gz + ;; + failed-upgrade) + ;; + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac hunk ./debian/libghc6-cabal-dev.prerm 35 -ghc-pkg -r Cabal -# ditch that ghci library: -rm /usr/lib/Cabal-0.1/HSCabal-0.1.o +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. hunk ./debian/libghc6-cabal-dev.prerm 39 + +exit 0 + + hunk ./debian/rules 9 - +GHCVERSION=6.2.1 +GHCPATH=/usr/lib/ghc-$(GHCVERSION)/bin +PATH:=$(GHCPATH):$(PATH) hunk ./debian/rules 13 +export PATH hunk ./debian/rules 16 -CABAL_BIN=libghc6-cabal-dev +LIBPATH=/usr/lib/haskell-packages/$(1) +PACKAGE=lib$(1)-cabal-dev +FLAVORS=ghc6 + +define build_flavor +echo BUILDING FOR $(1) +-./setup clean +rm -f .*config* +./setup configure --prefix=$(LIBPATH) --with-compiler=/usr/bin/$(1) +./setup build +mkdir -p $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) +./setup install --install-prefix=$(CURDIR)/debian/$(PACKAGE)$(LIBPATH) +cp .installed-pkg-config $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE)/installed-pkg-config + +endef hunk ./debian/rules 54 - make setup #bootstrap - ./setup configure --prefix=/usr --ghc + make setup hunk ./debian/rules 63 - ./setup build hunk ./debian/rules 73 + rm -f .*config* hunk ./debian/rules 81 - - # Add here commands to install the package into debian/$(CABAL_BIN) - mkdir -p $(CURDIR)/debian/$(CABAL_BIN)/usr/share/doc/$(CABAL_BIN) - ./setup install --install-prefix=$(CURDIR)/debian/$(CABAL_BIN)/usr - cp .installed-pkg-config $(CURDIR)/debian/$(CABAL_BIN)/usr/share/doc/$(CABAL_BIN)/installed-pkg-config hunk ./debian/rules 82 + $(foreach tgt,$(FLAVORS),$(call build_flavor,$(tgt))) hunk ./debian/rules 92 - dh_installchangelogs - dh_installdocs - dh_installexamples + dh_installchangelogs -a + dh_installdocs -a + dh_installexamples -a hunk ./debian/rules 105 - dh_installman - dh_link - dh_strip - dh_compress - dh_fixperms + dh_installman -a + dh_link -a + dh_strip -a + dh_compress -a + dh_fixperms -a hunk ./debian/rules 113 - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a + dh_md5sums -a + dh_builddeb -a hunk ./Distribution/Simple/Utils.hs 94 -#ifndef mingw32_TARGET_OS hunk ./Distribution/Simple/Utils.hs 95 -#endif hunk ./Distribution/Simple/Utils.hs 388 -copyPermissions :: FilePath -> FilePath -> IO () -#ifndef mingw32_TARGET_OS hunk ./Distribution/Simple/Utils.hs 391 -#else -copyPermissions src dest - = return () -#endif hunk ./Makefile 6 +# Comment out this line if your system doesn't have System.Posix. +ISPOSIX=-DHAVE_UNIX_PACKAGE + hunk ./Makefile 105 - ghc $(GHCFLAGS) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:test/HUnit-1.0/src Distribution/ModuleTest -o moduleTest + ghc $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:test/HUnit-1.0/src Distribution/ModuleTest -o moduleTest hunk ./Distribution/Simple/Utils.hs 92 -import System.Directory +import System.Directory hiding (copyFile) hunk ./Distribution/Simple/Utils.hs 92 -import System.Directory hiding (copyFile) + +import System.Directory (getDirectoryContents, removeDirectory, + setCurrentDirectory, getCurrentDirectory, + doesDirectoryExist, doesFileExist, removeFile, + createDirectory) + hunk ./Distribution/Simple/Utils.hs 99 + +#ifndef mingw32_TARGET_OS hunk ./Distribution/Simple/Utils.hs 102 +#endif hunk ./Distribution/Simple/Utils.hs 396 +copyPermissions :: FilePath -> FilePath -> IO () +#ifndef mingw32_TARGET_OS hunk ./Distribution/Simple/Utils.hs 401 +#else +copyPermissions src dest + = getPermissions src >>= setPermissions dest +#endif + hunk ./Distribution/PreProcess.hs 48 - withLib, rawSystemPath) + withLib, rawSystemPath, splitFilePath) hunk ./Distribution/PreProcess.hs 51 +-- |A preprocessor must fulfill this basic interface. It can be an +-- external program, or just a function. +type PreProcessor = FilePath -- ^Location of the source file in need of preprocessing + -> FilePath -- ^Output filename + -> IO ExitCode + + +-- |How to dispatch this file to a preprocessor. Is there a better +-- way to handle this "Unlit" business? It is nice that it can handle +-- happy, for instance. Maybe we need a way to chain preprocessors +-- that would solve this problem. + +type PPSuffixHandler + = (String, (String->String->String), PreProcessor) + hunk ./Distribution/PreProcess.hs 73 + hunk ./Distribution/PreProcess.hs 82 --- |If both output locations are null, just output to the default --- location for this preprocessor (may be stdout?). If directory is --- null, default to "." if output file is null, use the default --- filename, but move to the output directory. -type PreProcessor = FilePath -- ^Location of the source file in need of preprocessing - -> FilePath -- ^Output filename - -> IO ExitCode +dispatchPP :: FilePath -> [ PPSuffixHandler ] -> IO () +dispatchPP p handlers + = do let (dir, file, ext) = splitFilePath p + let (Just (lit, pp)) = findPP ext handlers + return () + +findPP :: String -- ^Extension + -> [PPSuffixHandler] + -> Maybe ((String -> String -> String), PreProcessor) +findPP ext ((e2, lit, pp):t) + | e2 == ext = Just (lit, pp) + | otherwise = findPP ext t +findPP _ [] = Nothing + hunk ./Distribution/PreProcess.hs 106 - hunk ./Distribution/PreProcess.hs 112 - -type PPSuffixHandler - = (String, (String->String->String), PreProcessor) hunk ./Distribution/ModuleTest.hs 171 + doesFileExist "dist/build/C.o" >>= + assertBool "C.testSuffix did not get compiled to C.o." + doesFileExist "C.hs" >>= + assertEqual "C.hs (a generated file) should not be in the top-level of the source tree" + False hunk ./Distribution/PreProcess.hs 40 -module Distribution.PreProcess (preprocessSources, knownSuffixes, +module Distribution.PreProcess (preprocessSources, knownSuffixHandlers, hunk ./Distribution/PreProcess.hs 48 - withLib, rawSystemPath, splitFilePath) + withLib, rawSystemPath, splitFilePath, + joinFilenameDir, joinExt, moduleToFilePath) hunk ./Distribution/PreProcess.hs 52 +import Data.Maybe(catMaybes) + hunk ./Distribution/PreProcess.hs 77 -preprocessSources pkg_descr _ _ pref = +preprocessSources pkg_descr _ handlers pref = hunk ./Distribution/PreProcess.hs 80 + -- preprocess all sources before moving them + allSources <- findAllSourceFiles pkg_descr [a | (a, _, _) <- knownSuffixHandlers] + sequence [dispatchPP src handlers | src <- allSources] -- FIX: output errors? + -- move sources into place hunk ./Distribution/PreProcess.hs 89 -dispatchPP :: FilePath -> [ PPSuffixHandler ] -> IO () +dispatchPP :: FilePath -> [ PPSuffixHandler ] -> IO ExitCode hunk ./Distribution/PreProcess.hs 93 - return () + pp p (joinFilenameDir dir (joinExt file "hs")) hunk ./Distribution/PreProcess.hs 104 +-- |Locate the source files based on the module names, the search +-- pathes (both in PackageDescription) and the suffixes we might be +-- interested in. +findAllSourceFiles :: PackageDescription + -> [String] -- ^search suffixes + -> IO [FilePath] +findAllSourceFiles PackageDescription{executables=execs, library=lib} allSuffixes + = do exeFiles <- sequence [buildInfoSources (buildInfo e) allSuffixes | e <- execs] + libFiles <- case lib of + Just bi -> buildInfoSources bi allSuffixes + Nothing -> return [] + return $ catMaybes ((concat exeFiles) ++ libFiles) + + where buildInfoSources :: BuildInfo -> [String] -> IO [Maybe FilePath] + buildInfoSources BuildInfo{modules=mods, hsSourceDir=dir} allSuffixes + = sequence [moduleToFilePath dir mod allSuffixes | mod <- mods] + + +-- ------------------------------------------------------------ +-- * known preprocessors +-- ------------------------------------------------------------ + hunk ./Distribution/PreProcess.hs 138 +ppTestHandler inFile outFile + = do stuff <- readFile inFile + writeFile outFile ("-- this file has been preprocessed as a test\n\n" ++ stuff) + return ExitSuccess + hunk ./Distribution/PreProcess.hs 149 -knownSuffixes :: [ PPSuffixHandler ] -knownSuffixes = +knownSuffixHandlers :: [ PPSuffixHandler ] +knownSuffixHandlers = hunk ./Distribution/PreProcess.hs 160 + , ("testSuffix", plain, ppTestHandler) hunk ./Distribution/Simple/Build.hs 54 -import Distribution.PreProcess (preprocessSources) +import Distribution.PreProcess (preprocessSources, knownSuffixHandlers) hunk ./Distribution/Simple/Build.hs 82 - preprocessSources pkg_descr lbi [] pref + preprocessSources pkg_descr lbi knownSuffixHandlers pref hunk ./TODO 1 +** integrate w/ GHC distro hunk ./TODO 3 -- move files to output location -- integrate into preprocessSources function hunk ./TODO 4 + +- right now, preprocessors just stick files into the current + directory, then copies them into the destination. this is no good + since we now won't be able to tell them from real source files the + next time around. clean is broken here... hunk ./test/A/Setup.description 3 -Modules: A, B.A +Modules: A, B.A, C hunk ./TODO 9 +** several solutions to above problem: +-- remember the source files to remove somehow +-- move them into place first, then preprocess them, leave source + files there (depends on answer to below) +-- preprocess them, and put them in place in the new + location. best solution, but not set up well for that right now, + since we concat together the entire filename (including module name) + +** for a source tarball, do we want to include JUST the unpreprocessed sources? hunk ./Distribution/PreProcess.hs 92 - let (Just (lit, pp)) = findPP ext handlers + let (Just (lit, pp)) = findPP ext handlers --FIX: Nothing case? hunk ./Distribution/PreProcess.hs 118 - buildInfoSources BuildInfo{modules=mods, hsSourceDir=dir} allSuffixes - = sequence [moduleToFilePath dir mod allSuffixes | mod <- mods] + buildInfoSources BuildInfo{modules=mods, hsSourceDir=dir} suffixes + = sequence [moduleToFilePath dir modu suffixes | modu <- mods] hunk ./Distribution/PreProcess.hs 138 +ppTestHandler :: FilePath -- ^InFile + -> FilePath -- ^OutFile + -> IO ExitCode hunk ./Distribution/Setup.hs 64 -import Data.List(intersperse, find) -import Data.Maybe(listToMaybe) +import Data.List(find) hunk ./Distribution/Setup.hs 69 -import Compat.H98 () +import Compat.H98 () -- FIX: is this line necessary for some platform? hunk ./Distribution/Setup.hs 83 -type CommandLineOpts = (Action, - [String]) -- The un-parsed remainder +-- type CommandLineOpts = (Action, +-- [String]) -- The un-parsed remainder hunk ./Distribution/Setup.hs 117 +cmd_help :: OptDescr (Flag a) hunk ./Distribution/Setup.hs 171 +getCmdOpt :: Cmd a -> [OptDescr a] -> [String] -> ([Flag a], [String], [String]) hunk ./Distribution/Setup.hs 194 +configureCmd :: Cmd a hunk ./Distribution/Setup.hs 236 +buildCmd :: Cmd a hunk ./Distribution/Setup.hs 256 +cleanCmd :: Cmd a hunk ./Distribution/Setup.hs 276 +installCmd :: Cmd a hunk ./Distribution/Setup.hs 312 +sdistCmd :: Cmd a hunk ./Distribution/Setup.hs 332 +registerCmd :: Cmd a hunk ./Distribution/Setup.hs 365 +unregisterCmd :: Cmd a hunk ./Distribution/PreProcess/Unlit.hs 39 - allProg (('\\':x):xs) | x == "end{code}" = Blank : classify 0 xs - allProg (x:xs) = Program x:allProg xs + allProg (('\\':x'):xs') | x' == "end{code}" = Blank : classify 0 xs' + allProg (x':xs') = Program x':allProg xs' hunk ./Distribution/PreProcess/Unlit.hs 50 -classify _ (x:xs) = Comment:classify 0 xs +classify _ (_:xs) = Comment:classify 0 xs hunk ./Distribution/PreProcess/Unlit.hs 62 -adjacent file n y@(Program _) (x@Comment :xs) = +adjacent file n (Program _) (Comment :_) = hunk ./Distribution/PreProcess/Unlit.hs 64 -adjacent file n y@(Program _) (x@(Include i f):xs) = x: adjacent f i y xs +adjacent _ _ y@(Program _) (x@(Include i f):xs) = x: adjacent f i y xs hunk ./Distribution/PreProcess/Unlit.hs 66 -adjacent file n y@Comment (x@(Program _) :xs) = +adjacent file n Comment ((Program _) :_) = hunk ./Distribution/PreProcess/Unlit.hs 68 -adjacent file n y@Comment (x@(Include i f):xs) = x: adjacent f i y xs +adjacent _ _ y@Comment (x@(Include i f):xs) = x: adjacent f i y xs hunk ./Distribution/PreProcess/Unlit.hs 70 -adjacent file n y@Blank (x@(Include i f):xs) = x: adjacent f i y xs +adjacent _ _ y@Blank (x@(Include i f):xs) = x: adjacent f i y xs hunk ./Distribution/PreProcess/Unlit.hs 72 -adjacent file n _ (x@next :xs) = x: adjacent file (n+1) x xs -adjacent file n _ [] = [] +adjacent file n _ (x :xs) = x: adjacent file (n+1) x xs +adjacent _ _ _ [] = [] hunk ./Distribution/PreProcess/Unlit.hs 75 +message :: (Show a) => String -> a -> String -> String -> String hunk ./Distribution/PreProcess/Unlit.hs 85 -tolines s = lines' s id +tolines :: String -> [String] +tolines s' = lines' s' id hunk ./Distribution/Package.hs 73 -import Compat.ReadP +import Compat.ReadP hiding (get) hunk ./Distribution/Package.hs 298 - map (\value -> comma <+> showF value) values)) + map (\value' -> comma <+> showF value') values)) hunk ./Distribution/Package.hs 308 - license | not flag -> text name <> colon <+> text (show license) + license' | not flag -> text name <> colon <+> text (show license') hunk ./Distribution/Package.hs 324 - (\lineNo val st -> + (\_ val st -> hunk ./Distribution/Package.hs 351 - parseBasicStanza ((StanzaField name get set):fields) pkg (lineNo, f, val) + parseBasicStanza ((StanzaField name _ set):fields) pkg (lineNo, f, val) hunk ./Distribution/Package.hs 359 - parseExecutableStanza st@((lineNo, f@"executable",eName):st1) = + parseExecutableStanza st@((_, "executable",eName):_) = hunk ./Distribution/Package.hs 361 - Just (lineNo,val) -> foldM (parseExecutableField executableStanzaFields) emptyExecutable st + Just (_,_) -> foldM (parseExecutableField executableStanzaFields) emptyExecutable st hunk ./Distribution/Package.hs 367 - parseExecutableField ((StanzaField name get set):fields) exe (lineNo, f, val) + parseExecutableField ((StanzaField name _ set):fields) exe (lineNo, f, val) hunk ./Distribution/Package.hs 374 - parseBInfoField ((StanzaField name get set):fields) binfo (lineNo, f, val) + parseBInfoField ((StanzaField name _ set):fields) binfo (lineNo, f, val) hunk ./Distribution/Package.hs 377 - parseBInfoField [] binfo (lineNo, f, val) = + parseBInfoField [] _ (lineNo, f, _) = hunk ./Distribution/Package.hs 381 - lookupField x [] = Nothing + lookupField _ [] = Nothing hunk ./Distribution/Package.hs 419 - (fld, _) -> error $ "Line "++show n++": Invalid syntax (no colon after field name)" + (_, _) -> error $ "Line "++show n++": Invalid syntax (no colon after field name)" hunk ./Distribution/Package.hs 486 - ppFields pkg [] = empty - ppFields pkg ((StanzaField name get set):flds) = - get pkg $$ ppFields pkg flds + ppFields _ [] = empty + ppFields pkg' ((StanzaField _ get _):flds) = + get pkg' $$ ppFields pkg' flds hunk ./Distribution/PreProcess.hs 47 -import Distribution.Simple.Utils (setupMessage,moveSources, pathJoin, - withLib, rawSystemPath, splitFilePath, +import Distribution.Simple.Utils (setupMessage, rawSystemPath, splitFilePath, hunk ./Distribution/PreProcess.hs 72 - -> FilePath {- ^ Directory to put preprocessed - sources in -} hunk ./Distribution/PreProcess.hs 74 -preprocessSources pkg_descr _ handlers pref = +preprocessSources pkg_descr _ handlers = hunk ./Distribution/PreProcess.hs 80 - -- move sources into place - withLib pkg_descr $ \lib -> - moveSources (hsSourceDir lib) (pathJoin [pref, hsSourceDir lib]) (modules lib) ["hs","lhs"] - sequence_ [ moveSources (hsSourceDir exeBi) (pathJoin [pref, hsSourceDir exeBi]) (modules exeBi) ["hs","lhs"] - | Executable _ _ exeBi <- executables pkg_descr] + return () hunk ./Distribution/Simple/Build.hs 82 - preprocessSources pkg_descr lbi knownSuffixHandlers pref + preprocessSources pkg_descr lbi knownSuffixHandlers hunk ./Distribution/Simple/Build.hs 110 + createIfNotExists True (pathJoin [pref, hsSourceDir buildInfo']) hunk ./Distribution/Simple/Build.hs 116 - ++ constructGHCCmdLine pref buildInfo' (packageDeps lbi) + ++ constructGHCCmdLine buildInfo' (packageDeps lbi) hunk ./Distribution/Simple/Build.hs 135 - sequence_ [ do let args = ["-package-conf", pkgConf, + sequence_ [ do createIfNotExists True (pathJoin [pref, hsSourceDir exeBi]) + let args = ["-package-conf", pkgConf, + "-odir", pathJoin [pref, hsSourceDir exeBi], + "-hidir", pathJoin [pref, hsSourceDir exeBi], hunk ./Distribution/Simple/Build.hs 141 - ++ constructGHCCmdLine pref exeBi (exeDeps exeName' lbi) - ++ [pathJoin [pref, hsSourceDir exeBi, modPath]] + ++ constructGHCCmdLine exeBi (exeDeps exeName' lbi) + ++ [pathJoin [hsSourceDir exeBi, modPath]] hunk ./Distribution/Simple/Build.hs 146 -constructGHCCmdLine :: FilePath -> BuildInfo -> [PackageIdentifier] -> [String] -constructGHCCmdLine pref buildInfo' deps = +constructGHCCmdLine :: BuildInfo -> [PackageIdentifier] -> [String] +constructGHCCmdLine buildInfo' deps = hunk ./Distribution/Simple/Build.hs 150 - in [ "--make", "-i" ++ pathJoin [pref, hsSourceDir buildInfo'] ] + in [ "--make", "-i" ++ hsSourceDir buildInfo' ] hunk ./Distribution/PreProcess.hs 41 - PPSuffixHandler, PreProcessor) + ppSuffixes, PPSuffixHandler, PreProcessor) hunk ./Distribution/PreProcess.hs 77 - -- preprocess all sources before moving them - allSources <- findAllSourceFiles pkg_descr [a | (a, _, _) <- knownSuffixHandlers] + allSources <- findAllSourceFiles pkg_descr (ppSuffixes knownSuffixHandlers) hunk ./Distribution/PreProcess.hs 107 - return $ catMaybes ((concat exeFiles) ++ libFiles) + return $ ((concat exeFiles) ++ libFiles) hunk ./Distribution/PreProcess.hs 109 - where buildInfoSources :: BuildInfo -> [String] -> IO [Maybe FilePath] + where buildInfoSources :: BuildInfo -> [String] -> IO [FilePath] hunk ./Distribution/PreProcess.hs 111 - = sequence [moduleToFilePath dir modu suffixes | modu <- mods] + = sequence [moduleToFilePath dir modu suffixes | modu <- mods] >>= return . concat hunk ./Distribution/PreProcess.hs 141 + +-- |Convinience function; get the suffixes of these preprocessors. +ppSuffixes :: [ PPSuffixHandler ] -> [String] +ppSuffixes h = [s | (s, _, _) <- h] hunk ./Distribution/Simple/SrcDist.hs 53 +import Distribution.PreProcess (PPSuffixHandler, ppSuffixes, knownSuffixHandlers) hunk ./Distribution/Simple/SrcDist.hs 67 + -> [PPSuffixHandler] -- ^ extra preprocessors (includes suffixes) hunk ./Distribution/Simple/SrcDist.hs 69 -sdist tmpDir targetPref pkg_descr _ = do +sdist tmpDir targetPref pps pkg_descr _ = do hunk ./Distribution/Simple/SrcDist.hs 76 - in moveSources srcDir tmpLoc1 (modules lib) ["lhs", "hs"] + in moveSources srcDir tmpLoc1 (modules lib) + (ppSuffixes (knownSuffixHandlers ++ pps)) hunk ./Distribution/Simple/Utils.hs 332 - -> IO (Maybe FilePath) + -> IO [FilePath] hunk ./Distribution/Simple/Utils.hs 337 - return $ listToMaybe [x | (x, True) <- matchList] + return [x | (x, True) <- matchList] hunk ./Distribution/Simple/Utils.hs 366 - sourceLocs <- sequence $ map moduleToFPErr sources + sourceLocs' <- sequence $ map moduleToFPErr sources + let sourceLocs = concat sourceLocs' hunk ./Distribution/Simple/Utils.hs 380 - when (isNothing p) + when (null p) hunk ./Distribution/Simple/Utils.hs 384 - return $ fromJust p + return p hunk ./Distribution/Simple/Utils.hs 558 - (Just "Distribution/Simple/Build.hs") mp1 - assertEqual "not existing not nothing failed" Nothing mp2, + ["Distribution/Simple/Build.hs"] mp1 + assertEqual "not existing not nothing failed" [] mp2, hunk ./Distribution/Simple.hs 143 - sdist srcPref distPref pkg_descr localbuildinfo + sdist srcPref distPref [] pkg_descr localbuildinfo hunk ./TODO 16 +** is cpp ever run yet? hunk ./TODO 18 -** for a source tarball, do we want to include JUST the unpreprocessed sources? + +** for a source tarball:? +- include the unpreprocessed sources... +- if there's a flag, --include-preprocessed-sources (or something + better) run the preprocessing phase and include both the + unpreprocessed and the preprocessed sources in the source tarball? + +** if the config file isn't there, output a better error message. hunk ./Distribution/PreProcess.hs 48 - joinFilenameDir, joinExt, moduleToFilePath) -import System.Exit (ExitCode(..)) + joinFilenameDir, joinExt, moduleToFilePath, + sequenceMap, removeFiles, hasExt) +import Control.Monad(when) +import System.Exit (ExitCode(..), exitWith) hunk ./Distribution/PreProcess.hs 99 --- pathes (both in PackageDescription) and the suffixes we might be +-- paths (both in PackageDescription) and the suffixes we might be hunk ./Distribution/PreProcess.hs 115 +-- |Remove the preprocessed .hs files. (do we need to get some .lhs files too?) +removePreprocessed :: FilePath -- ^search Location + -> [String] -- ^Modules + -> [String] -- ^suffixes + -> IO () +removePreprocessed searchLoc mods suffixesIn + = sequenceMap (\m -> moduleToFilePath searchLoc m suffixesIn) mods -- collect related files + >>= sequenceMap removeIfDup -- delete the .hs stuff. + >> return () + where -- ^Should give a list of files that only differ by the extension. + removeIfDup :: [FilePath] -> IO () + removeIfDup [] = return () + removeIfDup [x] = return () -- if there's only one, it needs to stay + removeIfDup l = do when (not $ extensionProp l) + (putStrLn "Internal Error: attempt to remove source with no matching preprocessed element." + >> exitWith (ExitFailure 1)) + let hsFiles = (filter (\x -> hasExt x "hs") l) + when (length hsFiles > 1) + (putStrLn "Internal Error: multiple \".hs\" files found while removing preprocessed element." + >> exitWith (ExitFailure 1)) + putStrLn $ show hsFiles + putStrLn $ show l + removeFiles hsFiles + return () + -- the files in this list only differ by their extension + extensionProp [] = True + extensionProp [x] = True + extensionProp (x1:x2:xs) + = let (dir1, name1, _) = splitFilePath x1 + (dir2, name2, _) = splitFilePath x2 + in dir1 == dir2 && name1 == name2 && (extensionProp (x2:xs)) hunk ./Distribution/Simple/Utils.hs 67 + sequenceMap, + removeFiles, + hasExt, hunk ./Distribution/Simple/Utils.hs 497 + +sequenceMap :: (Monad m) => (a -> m b) -> [a] -> m [b] +sequenceMap f l = sequence $ map f l hunk ./Distribution/Package.hs 55 + allModules, hunk ./Distribution/Package.hs 119 + +-- |Get all the module names from this package +allModules :: PackageDescription -> [String] +allModules PackageDescription{executables=execs, library=lib} + = (concat $ map (\e -> modules $ buildInfo e) execs) + ++ (maybe [] modules lib) hunk ./Distribution/PreProcess.hs 41 - ppSuffixes, PPSuffixHandler, PreProcessor) + ppSuffixes, PPSuffixHandler, PreProcessor, + removePreprocessed) hunk ./Distribution/PreProcess.hs 136 - putStrLn $ show hsFiles - putStrLn $ show l hunk ./Distribution/Simple/SrcDist.hs 43 +-- NOTE: FIX: we don't have a great way of testing this module, since +-- we can't easily look inside a tarball once its created. + hunk ./Distribution/Simple/SrcDist.hs 53 -import Distribution.Package(PackageDescription(..), BuildInfo(..), showPackageId) +import Distribution.Package(PackageDescription(..), BuildInfo(..), showPackageId, allModules) hunk ./Distribution/Simple/SrcDist.hs 56 -import Distribution.PreProcess (PPSuffixHandler, ppSuffixes, knownSuffixHandlers) +import Distribution.PreProcess (PPSuffixHandler, ppSuffixes, knownSuffixHandlers, removePreprocessed) hunk ./Distribution/Simple/SrcDist.hs 79 - in moveSources srcDir tmpLoc1 (modules lib) - (ppSuffixes (knownSuffixHandlers ++ pps)) + in do moveSources srcDir tmpLoc1 (modules lib) + (ppSuffixes (knownSuffixHandlers ++ pps)) + removePreprocessed tmpLoc1 (modules lib) (ppSuffixes pps) + hunk ./Distribution/Simple/SrcDist.hs 84 +-- FIX: move executables! +-- removePreprocessed tmpLoc1 (allModules pkg_descr) (ppSuffixes pps) (for execs) hunk ./Distribution/Simple.hs 59 +import Distribution.PreProcess (knownSuffixHandlers) hunk ./Distribution/Simple.hs 144 - sdist srcPref distPref [] pkg_descr localbuildinfo + sdist srcPref distPref knownSuffixHandlers pkg_descr localbuildinfo hunk ./TODO 1 +** make sure we have consistent behavior, either we pass in the + knownPreprocessors or we require the user to pass them in... +** bug in srcDist where it doesn't move exe sources into place + hunk ./Distribution/ModuleTest.hs 173 - doesFileExist "C.hs" >>= - assertEqual "C.hs (a generated file) should not be in the top-level of the source tree" - False hunk ./Distribution/ModuleTest.hs 194 - assertEqual "install returned error code" ExitSuccess instRetCode + assertEqual "install returned error code" ExitSuccess instRetCode, + TestLabel "package A: GHC and clean" $ TestCase $ + do let targetDir = ",tmp/lib/test-1.0/" + system "make clean" + doesFileExist "C.hs" >>= + assertEqual "C.hs (a generated file) not cleaned." False + hunk ./TODO 5 +** change all concat $ map to concatMap and sequence $ map to + sequenceMap + +** sdist remove file probably doesn't look in the right place, doesn't + put in the files for executables + +** where are we using allModules, is this the right place? + hunk ./Distribution/ModuleTest.hs 196 - do let targetDir = ",tmp/lib/test-1.0/" - system "make clean" + do system "./setup clean" hunk ./Distribution/Package.hs 158 +currentDir :: FilePath +currentDir = "."-- FIX: FileUtils.currentDir + hunk ./Distribution/Package.hs 167 - hsSourceDir = ".", -- FIX: FileUtils.currentDir + hsSourceDir = currentDir, hunk ./Distribution/PreProcess.hs 42 - removePreprocessed) + removePreprocessed, removePreprocessedPackage) hunk ./Distribution/PreProcess.hs 50 - sequenceMap, removeFiles, hasExt) + sequenceMap, removeFiles, hasExt, pathJoin) hunk ./Distribution/PreProcess.hs 115 + +removePreprocessedPackage :: PackageDescription + -> FilePath -- ^root of source tree (where to look for hsSources) + -> [String] -- ^suffixes + -> IO () +removePreprocessedPackage pkg_descr r suff + = do maybe (return ()) removePPBuildInfo (library pkg_descr) + sequenceMap removePPBuildInfo (map buildInfo (executables pkg_descr)) + return () + where removePPBuildInfo :: BuildInfo -> IO () + removePPBuildInfo bi + = removePreprocessed (pathJoin [r, (hsSourceDir bi)]) (modules bi) suff hunk ./Distribution/Simple/SrcDist.hs 53 -import Distribution.Package(PackageDescription(..), BuildInfo(..), showPackageId, allModules) +import Distribution.Package(PackageDescription(..), BuildInfo(..), showPackageId) hunk ./Distribution/Simple.hs 59 -import Distribution.PreProcess (knownSuffixHandlers) +import Distribution.PreProcess (knownSuffixHandlers, ppSuffixes, removePreprocessedPackage) hunk ./Distribution/Simple.hs 100 +currentDir :: FilePath +currentDir = "."-- FIX: FileUtils.currentDir + hunk ./Distribution/Simple.hs 126 - + hunk ./Distribution/Simple.hs 133 + removePreprocessedPackage pkg_descr currentDir (ppSuffixes knownSuffixHandlers) hunk ./TODO 13 +** move some of the junk in Utils up one level, then use currentDir = + "." there. + hunk ./Distribution/PreProcess.hs 80 - allSources <- findAllSourceFiles pkg_descr (ppSuffixes knownSuffixHandlers) + allSources <- findAllSourceFiles pkg_descr (ppSuffixes handlers) hunk ./Distribution/Simple/Build.hs 54 -import Distribution.PreProcess (preprocessSources, knownSuffixHandlers) +import Distribution.PreProcess (preprocessSources, PPSuffixHandler) hunk ./Distribution/Simple/Build.hs 79 - -> PackageDescription -> LocalBuildInfo -> IO () -build pref pkg_descr lbi = do + -> PackageDescription + -> LocalBuildInfo + -> [ PPSuffixHandler ] + -> IO () +build pref pkg_descr lbi suffixes = do hunk ./Distribution/Simple/Build.hs 85 - preprocessSources pkg_descr lbi knownSuffixHandlers + preprocessSources pkg_descr lbi suffixes hunk ./Distribution/Simple/SrcDist.hs 56 -import Distribution.PreProcess (PPSuffixHandler, ppSuffixes, knownSuffixHandlers, removePreprocessed) +import Distribution.PreProcess (PPSuffixHandler, ppSuffixes, removePreprocessed) hunk ./Distribution/Simple/SrcDist.hs 71 - -> PackageDescription -> LocalBuildInfo -> IO () + -> PackageDescription + -> LocalBuildInfo -> IO () hunk ./Distribution/Simple/SrcDist.hs 80 - in do moveSources srcDir tmpLoc1 (modules lib) - (ppSuffixes (knownSuffixHandlers ++ pps)) + in do moveSources srcDir tmpLoc1 (modules lib) (ppSuffixes pps) hunk ./Distribution/Simple/SrcDist.hs 82 - hunk ./Distribution/Simple.hs 124 - build buildPref pkg_descr localbuildinfo + build buildPref pkg_descr localbuildinfo knownSuffixHandlers hunk ./TODO 1 -** make sure we have consistent behavior, either we pass in the - knownPreprocessors or we require the user to pass them in... hunk ./Distribution/Package.hs 64 +import Data.List(concatMap) hunk ./Distribution/Package.hs 124 - = (concat $ map (\e -> modules $ buildInfo e) execs) + = (concatMap (\e -> modules $ buildInfo e) execs) hunk ./Distribution/Simple/Utils.hs 267 - putStrLn (path ++ concat (map (' ':) args)) + putStrLn (path ++ concatMap (' ':) args) hunk ./Distribution/Simple/Utils.hs 274 - putStrLn (prog ++ concat (map (' ':) args)) + putStrLn (prog ++ concatMap (' ':) args) hunk ./Distribution/Simple/Utils.hs 339 - matchList <- sequence $ map (\x -> do y <- doesFileExist x; return (x, y)) possiblePaths + matchList <- sequenceMap (\x -> do y <- doesFileExist x; return (x, y)) possiblePaths hunk ./Distribution/Simple/Utils.hs 369 - sourceLocs' <- sequence $ map moduleToFPErr sources + sourceLocs' <- sequenceMap moduleToFPErr sources hunk ./Distribution/Simple/Utils.hs 447 - = do bools <- sequence $ map f l + = do bools <- sequenceMap f l hunk ./Distribution/Simple/Utils.hs 477 - sequence $ map removeFileRecursive dirs + sequenceMap removeFileRecursive dirs hunk ./Distribution/Version.hs 138 - concat (map ('-':) tags) + concatMap ('-':) tags hunk ./TODO 1 -** bug in srcDist where it doesn't move exe sources into place - hunk ./TODO 4 -** sdist remove file probably doesn't look in the right place, doesn't - put in the files for executables +** sdist probably doesn't look in the right place, doesn't put in the + files for executables hunk ./TODO 13 -** Preprocessing -- what other preprocessors can't unlit? hunk ./TODO 14 -- right now, preprocessors just stick files into the current - directory, then copies them into the destination. this is no good - since we now won't be able to tell them from real source files the - next time around. clean is broken here... +** what other preprocessors can't unlit? + hunk ./TODO 23 + hunk ./Distribution/Simple/Utils.hs 101 +#ifndef mingw32_TARGET_OS +import System.Directory (getPermissions,setPermissions) +#endif + hunk ./Setup.description 8 + Distribution.PreProcess.Unlit, hunk ./Distribution/Simple/Utils.hs 101 -#ifndef mingw32_TARGET_OS +#ifdef mingw32_TARGET_OS hunk ./Distribution/Simple/Configure.hs 107 + e <- doesFileExist localBuildInfoFile + let dieMsg = "error reading " ++ localBuildInfoFile ++ "; run \"setup configure\" command?\n" + when (not e) (die dieMsg) hunk ./Distribution/Simple/Configure.hs 114 - die "error reading .setup-config; run ./Setup.lhs configure?\n" + die dieMsg hunk ./TODO 1 -** change all concat $ map to concatMap and sequence $ map to - sequenceMap - hunk ./TODO 13 -** several solutions to above problem: --- remember the source files to remove somehow --- move them into place first, then preprocess them, leave source - files there (depends on answer to below) --- preprocess them, and put them in place in the new - location. best solution, but not set up well for that right now, - since we concat together the entire filename (including module name) - hunk ./TODO 15 - hunk ./TODO 16 -- include the unpreprocessed sources... hunk ./TODO 19 - -** if the config file isn't there, output a better error message. hunk ./Distribution/Simple/SrcDist.hs 53 -import Distribution.Package(PackageDescription(..), BuildInfo(..), showPackageId) +import Distribution.Package(PackageDescription(..), BuildInfo(..), buildInfo, showPackageId) hunk ./Distribution/Simple/SrcDist.hs 55 -import Distribution.Simple.Utils(setupMessage, moveSources, die, pathJoin) +import Distribution.Simple.Utils(setupMessage, moveSources, die, pathJoin, sequenceMap) hunk ./Distribution/Simple/SrcDist.hs 77 - case library pkg_descr of - Just lib -> let srcDir = hsSourceDir lib - tmpLoc1 = pathJoin [tmpDir, nameVersion pkg_descr, srcDir] - in do moveSources srcDir tmpLoc1 (modules lib) (ppSuffixes pps) - removePreprocessed tmpLoc1 (modules lib) (ppSuffixes pps) - Nothing -> return () --- FIX: move executables! --- removePreprocessed tmpLoc1 (allModules pkg_descr) (ppSuffixes pps) (for execs) - let tmpLoc2 = pathJoin [tmpDir, nameVersion pkg_descr] - moveSources "" tmpLoc2 ["Setup"] ["lhs", "hs"] + let targetDir = pathJoin [tmpDir, nameVersion pkg_descr] + -- maybe move the library files into place + maybe (return ()) (prepareDir targetDir pps) (library pkg_descr) + -- move the executables into place + sequenceMap (prepareDir targetDir pps) (map buildInfo (executables pkg_descr)) + -- setup isn't listed in the description file. + moveSources "" targetDir ["Setup"] ["lhs", "hs"] hunk ./Distribution/Simple/SrcDist.hs 89 + +-- |Move the sources into place based on buildInfo +prepareDir :: FilePath -- ^TargetPrefix + -> [PPSuffixHandler] -- ^ extra preprocessors (includes suffixes) + -> BuildInfo + -> IO () +prepareDir inPref pps BuildInfo{hsSourceDir=srcDir, modules=mods} + = do let pref = pathJoin [inPref, srcDir] + let suff = ppSuffixes pps + moveSources srcDir pref mods suff + removePreprocessed pref mods suff hunk ./TODO 19 +- why does it need configure first? hunk ./Distribution/Simple.hs 147 - localbuildinfo <- getPersistBuildConfig - sdist srcPref distPref knownSuffixHandlers pkg_descr localbuildinfo + sdist srcPref distPref knownSuffixHandlers pkg_descr hunk ./Distribution/Simple/SrcDist.hs 72 - -> LocalBuildInfo -> IO () -sdist tmpDir targetPref pps pkg_descr _ = do + -> IO () +sdist tmpDir targetPref pps pkg_descr = do hunk ./TODO 1 -** sdist probably doesn't look in the right place, doesn't put in the - files for executables - hunk ./TODO 16 -- why does it need configure first? hunk ./Distribution/Package.hs 56 + setupMessage, + withLib, hunk ./Distribution/Package.hs 64 -import Control.Monad(foldM, liftM) +import Control.Monad(foldM, liftM, when) hunk ./Distribution/Package.hs 67 -import Data.Maybe(fromMaybe) +import Data.Maybe(fromMaybe, fromJust) hunk ./Distribution/Package.hs 75 +import Distribution.Simple.Utils(currentDir) hunk ./Distribution/Package.hs 162 -currentDir :: FilePath -currentDir = "."-- FIX: FileUtils.currentDir - hunk ./Distribution/Package.hs 195 + +-- ------------------------------------------------------------ +-- * Utils +-- ------------------------------------------------------------ + +-- |If the package description has a library section, call the given +-- function with the library build info as argument. +withLib :: PackageDescription -> (BuildInfo -> IO ()) -> IO () +withLib pkg_descr f = when (hasLibs pkg_descr) $ f (fromJust (library pkg_descr)) + +setupMessage :: String -> PackageDescription -> IO () +setupMessage msg pkg_descr = + putStrLn (msg ++ ' ':showPackageId (package pkg_descr) ++ "...") + hunk ./Distribution/PreProcess.hs 46 -import Distribution.Package (PackageDescription(..), BuildInfo(..), Executable(..)) +import Distribution.Package (setupMessage, PackageDescription(..), + BuildInfo(..), Executable(..)) hunk ./Distribution/PreProcess.hs 49 -import Distribution.Simple.Utils (setupMessage, rawSystemPath, splitFilePath, +import Distribution.Simple.Utils (rawSystemPath, splitFilePath, hunk ./Distribution/Simple/Build.hs 53 - BuildInfo(..), showPackageId, Executable(..)) + BuildInfo(..), showPackageId, setupMessage, + withLib, Executable(..)) hunk ./Distribution/Simple/Build.hs 57 -import Distribution.Simple.Utils (rawSystemExit, setupMessage, - die, rawSystemPathExit, +import Distribution.Simple.Utils (rawSystemExit, die, rawSystemPathExit, hunk ./Distribution/Simple/Build.hs 60 - splitFilePath, joinFilenameDir, joinExt, - withLib + splitFilePath, joinFilenameDir, joinExt hunk ./Distribution/Simple/Configure.hs 64 - BuildInfo(..), Executable(..), emptyPackageDescription + BuildInfo(..), Executable(..), setupMessage, + emptyPackageDescription hunk ./Distribution/Simple/Configure.hs 67 -import Distribution.Simple.Utils (die, setupMessage, findBinary, - splitFilePath, joinFilenameDir, joinExt) +import Distribution.Simple.Utils (die, findBinary, splitFilePath, + joinFilenameDir, joinExt) hunk ./Distribution/Simple/Install.hs 58 - showPackageId, hasLibs) + showPackageId, setupMessage, hasLibs) hunk ./Distribution/Simple/Install.hs 60 -import Distribution.Simple.Utils(setupMessage, moveSources, +import Distribution.Simple.Utils(moveSources, hunk ./Distribution/Simple/Register.hs 58 -import Distribution.Package (PackageDescription(..), PackageIdentifier(..)) -import Distribution.Simple.Utils (setupMessage, rawSystemExit, die) +import Distribution.Package (setupMessage, PackageDescription(..), PackageIdentifier(..)) +import Distribution.Simple.Utils (rawSystemExit, die) hunk ./Distribution/Simple/SrcDist.hs 53 -import Distribution.Package(PackageDescription(..), BuildInfo(..), buildInfo, showPackageId) +import Distribution.Package(PackageDescription(..), BuildInfo(..), buildInfo, + setupMessage, showPackageId) hunk ./Distribution/Simple/SrcDist.hs 56 -import Distribution.Simple.Utils(setupMessage, moveSources, die, pathJoin, sequenceMap) +import Distribution.Simple.Utils(moveSources, die, pathJoin, sequenceMap) hunk ./Distribution/Simple/Utils.hs 52 - setupMessage, hunk ./Distribution/Simple/Utils.hs 65 - withLib, hunk ./Distribution/Simple/Utils.hs 68 + currentDir, hunk ./Distribution/Simple/Utils.hs 78 -import Distribution.Package (PackageDescription(..), showPackageId, - BuildInfo(..), hasLibs) - hunk ./Distribution/Simple/Utils.hs 241 -setupMessage :: String -> PackageDescription -> IO () -setupMessage msg pkg_descr = - putStrLn (msg ++ ' ':showPackageId (package pkg_descr) ++ "...") - hunk ./Distribution/Simple/Utils.hs 385 +-- |The path name that represents the current directory. May be +-- system-specific. In Unix, it's "." FIX: What about other arches? +currentDir :: FilePath +currentDir = "." hunk ./Distribution/Simple/Utils.hs 491 - - --- |If the package description has a library section, call the given --- function with the library build info as argument. -withLib :: PackageDescription -> (BuildInfo -> IO ()) -> IO () -withLib pkg_descr f = when (hasLibs pkg_descr) $ f (fromJust (library pkg_descr)) hunk ./Distribution/Simple.hs 70 -import Distribution.Simple.Utils (die, pathJoin, removeFileRecursive) +import Distribution.Simple.Utils (die, pathJoin, removeFileRecursive, currentDir) hunk ./Distribution/Simple.hs 99 - -currentDir :: FilePath -currentDir = "."-- FIX: FileUtils.currentDir hunk ./TODO 3 -** move some of the junk in Utils up one level, then use currentDir = - "." there. - hunk ./Distribution/Package.hs 55 - allModules, hunk ./Distribution/Package.hs 124 -allModules :: PackageDescription -> [String] -allModules PackageDescription{executables=execs, library=lib} - = (concatMap (\e -> modules $ buildInfo e) execs) - ++ (maybe [] modules lib) +-- allModules :: PackageDescription -> [String] +-- allModules PackageDescription{executables=execs, library=lib} +-- = (concatMap (\e -> modules $ buildInfo e) execs) +-- ++ (maybe [] modules lib) hunk ./TODO 1 -** where are we using allModules, is this the right place? +* misc hunk ./TODO 7 +** find a real test case that uses a preprocessor + hunk ./TODO 20 + hunk ./TODO 96 -- this may be something that's easy to break off and give to someone else. +- this may be something that's easy to break off and give to someone + else. +- give to John Goerzen? hunk ./TODO 3 +** unregistering the package, etc + +*** think about HC-PKG's role here. maybe HC-PKG should do all this + instead +*** Should "setup install" copy Setup.lhs, Setup.description, and + local-build-info into a common location for the sake of unregister? + Will we have to make this a requirement of 'install'? (suggested by + kosmikus) Would it be better for HC-PKG to have the unregister + command? +*** Add a flag to configure to specify where to put them? + hunk ./Distribution/Package.hs 49 + parseDescription, hunk ./Distribution/Package.hs 51 + showPackageDescription, + basicStanzaFields, + setupMessage, + withLib, hunk ./Distribution/Package.hs 60 - setupMessage, - withLib, + StanzaField(..), + allModules, hunk ./Distribution/Package.hs 111 + author :: String, hunk ./Distribution/Package.hs 113 + testedWith :: [(CompilerFlavor,VersionRange)], + homepage :: String, + pkgUrl :: String, + description :: String, + category :: String, hunk ./Distribution/Package.hs 129 + author = "", hunk ./Distribution/Package.hs 131 + testedWith = [], + homepage = "", + pkgUrl = "", + description = "", + category = "", hunk ./Distribution/Package.hs 141 --- allModules :: PackageDescription -> [String] --- allModules PackageDescription{executables=execs, library=lib} --- = (concatMap (\e -> modules $ buildInfo e) execs) --- ++ (maybe [] modules lib) +allModules :: PackageDescription -> [String] +allModules PackageDescription{executables=execs, library=lib} + = (concatMap (\e -> modules $ buildInfo e) execs) + ++ (maybe [] modules lib) hunk ./Distribution/Package.hs 252 + , fieldShow :: a -> Doc hunk ./Distribution/Package.hs 278 + , simpleField "homepage" + text (munch (const True)) + homepage (\val pkg -> pkg{homepage=val}) + , simpleField "package-url" + text (munch (const True)) + pkgUrl (\val pkg -> pkg{pkgUrl=val}) + , simpleField "description" + text (munch (const True)) + description (\val pkg -> pkg{description=val}) + , simpleField "category" + text (munch (const True)) + category (\val pkg -> pkg{category=val}) + , simpleField "author" + text (munch (const True)) + author (\val pkg -> pkg{author=val}) + , listField "tested-with" + showTestedWith parseTestedWith + testedWith (\val pkg -> pkg{testedWith=val}) + hunk ./Distribution/Package.hs 349 + (showF . get) hunk ./Distribution/Package.hs 358 - (value:values) -> - text name <> vcat ( colon <+> showF value: - map (\value' -> comma <+> showF value') values)) + lst -> + text name <> vcat (map (\value -> comma <+> showF value) lst)) + (\st -> case get st of + [] -> empty + lst -> + vcat (map (\value -> comma <+> showF value) lst)) hunk ./Distribution/Package.hs 375 + (\st -> case get st of + OtherLicense path | flag -> showFilePath path + | otherwise -> empty + license' | not flag -> text (show license') + | otherwise -> empty) hunk ./Distribution/Package.hs 394 + (\st -> case lookup flavor (get st) of + Just args -> sep (map text args) + Nothing -> empty) hunk ./Distribution/Package.hs 424 - parseBasicStanza ((StanzaField name _ set):fields) pkg (lineNo, f, val) + parseBasicStanza ((StanzaField name _ _ set):fields) pkg (lineNo, f, val) hunk ./Distribution/Package.hs 440 - parseExecutableField ((StanzaField name _ set):fields) exe (lineNo, f, val) + parseExecutableField ((StanzaField name _ _ set):fields) exe (lineNo, f, val) hunk ./Distribution/Package.hs 447 - parseBInfoField ((StanzaField name _ set):fields) binfo (lineNo, f, val) + parseBInfoField ((StanzaField name _ _ set):fields) binfo (lineNo, f, val) hunk ./Distribution/Package.hs 450 - parseBInfoField [] _ (lineNo, f, _) = + parseBInfoField [] binfo (lineNo, f, _) = hunk ./Distribution/Package.hs 500 +parseTestedWith :: ReadP [(CompilerFlavor,VersionRange)] (CompilerFlavor,VersionRange) +parseTestedWith = do compiler <- parseReadS + skipSpaces + version <- parseVersionRange <++ return AnyVersion + skipSpaces + return (compiler,version) + hunk ./Distribution/Package.hs 550 +showTestedWith :: (CompilerFlavor,VersionRange) -> Doc +showTestedWith (compiler,version) = text (show compiler ++ " " ++ showVersionRange version) + hunk ./Distribution/Package.hs 570 - ppFields pkg' ((StanzaField _ get _):flds) = + ppFields pkg' ((StanzaField _ get _ _):flds) = hunk ./Distribution/Package.hs 587 + "Author: Happy Haskell Hacker", + "Homepage: http://www.haskell.org/foo", + "Package-url: http://www.haskell.org/foo", + "Description: a nice package!", + "Category: tools", + "Tested-with: GHC", hunk ./Distribution/Package.hs 621 + author = "Happy Haskell Hacker", + homepage = "http://www.haskell.org/foo", + pkgUrl = "http://www.haskell.org/foo", + description = "a nice package!", + category = "tools", + testedWith=[(GHC, AnyVersion)], hunk ./TODO 40 +*** do comments have to start in the first column? +*** clarify relationship between exposed-modules and modules, etc. +*** add preprocessor explanation (see bottom of this TODO). hunk ./TODO 190 + +------------------------------------------------------------ +[1] Foo.y is a happy grammer which, when processed, will produce Foo.hs. + +The description file should include the module Foo. + +./setup sdist (source distribution): Include Foo.y, not Foo.hs. Maybe +we could add a flag to include Foo.hs as well. This makes sense for +some preprocessors and not for others, but I'm wary of including too +much preprocessor-specific behavior. + +./setup clean: Removes Foo.hs if Foo.y exists. + +./setup build: Preprocesses Foo.y to Create Foo.hs before any +compilation. + +The issue with cpp is that we can't go by extensions as we do with the +rest of the preprocessors... There is a function in HMake which tests +to see if a file needs to be cpp'd, so we can employ that. I think +we'll probably have to just treat cpp a little differently from the +others, unfortunitely, and I haven't gotten around to it. hunk ./Distribution/Simple/Configure.hs 50 + buildDepToDep, hunk ./Distribution/ModuleTest.hs 63 -import qualified Distribution.Simple.GHCPackageConfig as GHC (localPackageConfig) +import qualified Distribution.Simple.GHCPackageConfig + as GHC (localPackageConfig, maybeCreatePackageConfig) hunk ./Distribution/ModuleTest.hs 127 - (pkgConf, pkgConfExists) <- GHC.localPackageConfig - unless pkgConfExists $ writeFile pkgConf "[]\n" + pkgConf <- GHC.localPackageConfig + GHC.maybeCreatePackageConfig hunk ./Distribution/ModuleTest.hs 157 - do (pkgConf, pkgConfExists) <- GHC.localPackageConfig - unless pkgConfExists $ writeFile pkgConf "[]\n" + do pkgConf <- GHC.localPackageConfig + GHC.maybeCreatePackageConfig hunk ./Distribution/Simple/Build.hs 68 -import qualified Distribution.Simple.GHCPackageConfig as GHC (localPackageConfig) +import qualified Distribution.Simple.GHCPackageConfig + as GHC (localPackageConfig, maybeCreatePackageConfig, canReadPackageConfig) hunk ./Distribution/Simple/Build.hs 109 - (pkgConf, pkgConfExists) <- GHC.localPackageConfig - unless pkgConfExists $ writeFile pkgConf "[]\n" + GHC.maybeCreatePackageConfig + pkgConf <- GHC.localPackageConfig + pkgConfReadable <- GHC.canReadPackageConfig hunk ./Distribution/Simple/Build.hs 115 - let args = ["-package-conf", pkgConf, - "-package-name", pkgName (package pkg_descr), + let args = (if pkgConfReadable then ["-package-conf", pkgConf] else []) + ++ ["-package-name", pkgName (package pkg_descr), hunk ./Distribution/Simple/Build.hs 140 - let args = ["-package-conf", pkgConf, - "-odir", pathJoin [pref, hsSourceDir exeBi], + let args = (if pkgConfReadable then ["-package-conf", pkgConf] else []) + ++ ["-odir", pathJoin [pref, hsSourceDir exeBi], hunk ./Distribution/Simple/GHCPackageConfig.hs 18 - localPackageConfig + + localPackageConfig, maybeCreatePackageConfig, + canWritePackageConfig, canReadPackageConfig hunk ./Distribution/Simple/GHCPackageConfig.hs 29 +import Control.Exception (try) +import Control.Monad(liftM, unless) hunk ./Distribution/Simple/GHCPackageConfig.hs 33 -import System.Directory (doesFileExist) +import System.Directory (doesFileExist, getPermissions, Permissions (..)) hunk ./Distribution/Simple/GHCPackageConfig.hs 36 --- |Where ghc keeps the --user files, the bool is for whether it exists -localPackageConfig :: IO (FilePath, Bool) +-- |Where ghc keeps the --user files. +-- |return the file, whether it exists, and whether it's readable + +localPackageConfig :: IO FilePath hunk ./Distribution/Simple/GHCPackageConfig.hs 41 - let f = pathJoin [u, ".ghc-packages"] - b <- doesFileExist f - return (f, b) + return $ pathJoin [u, ".ghc-packages"] + +-- |If the package file doesn't exist, we should try to create it. If +-- it already exists, do nothing and return true. This does not take +-- into account whether it is readable or writeable. +maybeCreatePackageConfig :: IO Bool -- ^success? +maybeCreatePackageConfig + = do f <- localPackageConfig + exists <- doesFileExist f + unless exists $ (try (writeFile f "[]\n") >> return ()) + doesFileExist f + + +-- |Helper function for canReadPackageConfig and canWritePackageConfig +checkPermission perm + = do f <- localPackageConfig + exists <- doesFileExist f + if exists + then getPermissions f >>= (return . perm) + else return False + +-- |Check for read permission on the localPackageConfig +canReadPackageConfig :: IO Bool +canReadPackageConfig = checkPermission readable + +-- |Check for write permission on the localPackageConfig +canWritePackageConfig :: IO Bool +canWritePackageConfig = checkPermission writable + hunk ./Distribution/Simple/Register.hs 61 -import qualified Distribution.Simple.GHCPackageConfig as GHC (localPackageConfig) +import qualified Distribution.Simple.GHCPackageConfig + as GHC (localPackageConfig, canWritePackageConfig, maybeCreatePackageConfig) hunk ./Distribution/Simple/Register.hs 83 - GHC -> do (localConf, pkgConfExists) <- GHC.localPackageConfig - unless pkgConfExists $ writeFile localConf "[]\n" + GHC -> do GHC.maybeCreatePackageConfig + localConf <- GHC.localPackageConfig + pkgConfWriteable <- GHC.canWritePackageConfig + when (userInst && (not pkgConfWriteable)) + (die ("--user flag passed, but cannot write to local package config: " + ++ localConf)) hunk ./Distribution/Simple/Register.hs 94 - ++ (if userInst then ["--config-file=" ++ localConf] else [])) + ++ (if userInst + then ["--config-file=" ++ localConf] + else [])) hunk ./TODO 14 +** if we can't create ~/.ghc-packages, don't provide the -package-conf + flag to GHC. + hunk ./Distribution/ModuleTest.hs 64 - as GHC (localPackageConfig, maybeCreatePackageConfig) + as GHC (localPackageConfig, maybeCreateLocalPackageConfig) hunk ./Distribution/ModuleTest.hs 128 - GHC.maybeCreatePackageConfig + GHC.maybeCreateLocalPackageConfig hunk ./Distribution/ModuleTest.hs 158 - GHC.maybeCreatePackageConfig + GHC.maybeCreateLocalPackageConfig hunk ./Distribution/Simple/Build.hs 69 - as GHC (localPackageConfig, maybeCreatePackageConfig, canReadPackageConfig) + as GHC (localPackageConfig, canReadLocalPackageConfig) hunk ./Distribution/Simple/Build.hs 105 --- |Building for GHC +-- |Building for GHC. If ~/.ghc-packages exists and is readable, add +-- it to the command-line. hunk ./Distribution/Simple/Build.hs 110 - GHC.maybeCreatePackageConfig hunk ./Distribution/Simple/Build.hs 111 - pkgConfReadable <- GHC.canReadPackageConfig + pkgConfReadable <- GHC.canReadLocalPackageConfig hunk ./Distribution/Simple/GHCPackageConfig.hs 19 - localPackageConfig, maybeCreatePackageConfig, - canWritePackageConfig, canReadPackageConfig + localPackageConfig, maybeCreateLocalPackageConfig, + canWriteLocalPackageConfig, canReadLocalPackageConfig hunk ./Distribution/Simple/GHCPackageConfig.hs 46 -maybeCreatePackageConfig :: IO Bool -- ^success? -maybeCreatePackageConfig +maybeCreateLocalPackageConfig :: IO Bool -- ^success? +maybeCreateLocalPackageConfig hunk ./Distribution/Simple/GHCPackageConfig.hs 63 -canReadPackageConfig :: IO Bool -canReadPackageConfig = checkPermission readable +canReadLocalPackageConfig :: IO Bool +canReadLocalPackageConfig = checkPermission readable hunk ./Distribution/Simple/GHCPackageConfig.hs 67 -canWritePackageConfig :: IO Bool -canWritePackageConfig = checkPermission writable +canWriteLocalPackageConfig :: IO Bool +canWriteLocalPackageConfig = checkPermission writable hunk ./Distribution/Simple/Register.hs 62 - as GHC (localPackageConfig, canWritePackageConfig, maybeCreatePackageConfig) + as GHC (localPackageConfig, canWriteLocalPackageConfig, maybeCreateLocalPackageConfig) hunk ./Distribution/Simple/Register.hs 75 --- |Be sure to call writeInstalledConfig first +-- |Be sure to call writeInstalledConfig first. If the --uesr flag +-- was passed, and ~/.ghc-packages is writable, or can be created, +-- then we use that file, perhaps creating it. + hunk ./Distribution/Simple/Register.hs 86 - GHC -> do GHC.maybeCreatePackageConfig + GHC -> do when userInst (GHC.maybeCreateLocalPackageConfig >> return() ) hunk ./Distribution/Simple/Register.hs 88 - pkgConfWriteable <- GHC.canWritePackageConfig + pkgConfWriteable <- GHC.canWriteLocalPackageConfig hunk ./TODO 14 -** if we can't create ~/.ghc-packages, don't provide the -package-conf - flag to GHC. - hunk ./Distribution/Simple/Build.hs 59 - mkLibName, pathJoin, + mkLibName, pathJoin, moveSources, hunk ./Distribution/Simple/Build.hs 64 -import Control.Monad (unless) +import Control.Monad (unless, when) hunk ./Distribution/Simple/Build.hs 89 - Hugs -> return () + Hugs -> buildHugs pref pkg_descr lbi hunk ./Distribution/Simple/Build.hs 157 + +-- | +buildHugs :: FilePath -> PackageDescription -> LocalBuildInfo -> IO () +buildHugs pref pkg_descr lbi + = do -- move library-related source files into place. + withLib pkg_descr (\buildInfo@BuildInfo{hsSourceDir=srcDir, modules=mods} -> + do let targetDir = pathJoin [pref, hsSourceDir buildInfo] + moveSources srcDir pref mods ["hs", "lhs"] + ) + + + {- FIX (HUGS): something smart must happen here; we need to + create a shell script or bat file or something to call + runhugs for running the executable file. For now, ignore + executables -} + when (not $ null $ executables $ pkg_descr) + (setupMessage "Warning: executable stanzas ignored for HUGS.\nNot yet implemented in cabal." pkg_descr) + return () + hunk ./Distribution/Simple/Configure.hs 243 + +-- FIX (HUGS): This tool doesn't actually implement the HC-PKG +-- spec. it does something different. hunk ./Distribution/Simple/Install.hs 58 - showPackageId, setupMessage, hasLibs) + showPackageId, setupMessage, hasLibs, withLib) hunk ./Distribution/Simple/Install.hs 60 -import Distribution.Simple.Utils(moveSources, +import Distribution.Simple.Utils(moveSources, rawSystemExit, hunk ./Distribution/Simple/Install.hs 67 +import Data.Maybe(maybeToList) hunk ./Distribution/Simple/Install.hs 77 + -> Bool -- ^Install for user? hunk ./Distribution/Simple/Install.hs 79 -install buildPref pkg_descr lbi install_prefixM = do +install buildPref pkg_descr lbi install_prefixM uInst = do hunk ./Distribution/Simple/Install.hs 82 - setupMessage ("Installing: " ++ libPref ++ "&" ++ binPref) pkg_descr + setupMessage ("Installing: " ++ libPref ++ " & " ++ binPref) pkg_descr hunk ./Distribution/Simple/Install.hs 86 - Hugs -> do when (hasLibs pkg_descr) (installHugs libPref buildPref pkg_descr) + Hugs -> do -- FIX (HUGS): fix 'die' checks commands below. + when uInst (die "Hugs cannot yet install user-only packages.") + withLib pkg_descr (\buildInfo@BuildInfo{hsSourceDir=srcDir} -> + do let targetDir = pathJoin [buildPref, + srcDir] + let args = targetDir + : (maybeToList install_prefixM) + let hugsPkg = compilerPkgTool $ compiler $ lbi + rawSystemExit hugsPkg args) + -- FIX (HUGS): Install executables, still needs work in build step hunk ./Distribution/Simple/Register.hs 75 --- |Be sure to call writeInstalledConfig first. If the --uesr flag +-- |Be sure to call writeInstalledConfig first. If the --user flag hunk ./Distribution/Simple/Register.hs 100 + -- FIX (HUGS): + Hugs -> setupMessage "Warning: Hugs has no packaging tool\nLibrary files will just be moved into place." pkg_descr hunk ./Distribution/Simple/Register.hs 110 + Hugs -> return () hunk ./Distribution/Simple.hs 137 - install buildPref pkg_descr localbuildinfo mprefix + install buildPref pkg_descr localbuildinfo mprefix uInst hunk ./TODO 18 +** Hugs +- look for "FIX (HUGS)" +- can't handle cabal's OPTIONS pragmas at the top. +- no way to tell Hugs to turn packages on or off +- no register / unregister for hugs + hunk ./TODO 26 -** is cpp ever run yet? +** is cpp ever run yet? NO! hunk ./TODO 20 -- can't handle cabal's OPTIONS pragmas at the top. +- can't handle cabal's OPTIONS pragmas at the top. this requires + getting cpp to work from the Setup.description file. hunk ./Distribution/Misc.hs 90 + | CPP hunk ./Distribution/Misc.hs 131 + extensionToGHCFlag CPP = Right "-cpp" hunk ./Distribution/Misc.hs 162 + extensionToNHCFlag CPP = Right "-cpp" hunk ./Distribution/Simple/Build.hs 92 --- |FIX: For now, the target must contain a main module :( Not used +-- |FIX: For now, the target must contain a main module. Not used hunk ./Distribution/Simple/Build.hs 105 --- |Building for GHC. If ~/.ghc-packages exists and is readable, add +-- |Building for GHC. If .ghc-packages exists and is readable, add hunk ./Distribution/Simple/Register.hs 76 --- was passed, and ~/.ghc-packages is writable, or can be created, +-- was passed, and ~\/.ghc-packages is writable, or can be created, hunk ./Distribution/Simple/Utils.hs 297 --- > mySplit '.' "foo.bar.bang" => ["foo","bar","bang"] :: [[Char]] +-- mySplit '.' "foo.bar.bang" => ["foo","bar","bang"] :: [[Char]] hunk ./Setup.description 5 +Extensions: CPP hunk ./TODO 27 -** is cpp ever run yet? NO! - hunk ./Setup.description 2 -Version: 0.1 +Version: 0.2 hunk ./Setup.description 8 - Distribution.PreProcess, + Distribution.PreProcess, Distribution.PreProcess.Unlit, hunk ./Setup.description 15 - Distribution.Simple.Register, + Distribution.Simple.Register, hunk ./Distribution/Misc.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Package.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Setup.hs 1 -{-# OPTIONS -cpp #-} - hunk ./Distribution/Simple/Build.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Configure.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Install.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Register.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Register.hs 75 --- was passed, and ~\/.ghc-packages is writable, or can be created, + -- was passed, and ~\/.ghc-packages is writable, or can be created, hunk ./Distribution/Simple/SrcDist.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Utils.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Version.hs 1 -{-# OPTIONS -cpp #-} hunk ./debian/changelog 1 +haskell-cabal (0.2-1) unstable; urgency=low + + * New upstream release + * Includes cleanup of treatment of the local packages file + ~/.ghc-packages. Doesn't touch this file unless it's + necessary. (Closes: #278667) + * Some work on preprocessors. + + -- Isaac Jones Tue, 2 Nov 2004 20:06:22 -0800 + hunk ./debian/control 3 -Maintainer: John Goerzen -Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.1), ghc6 (<< 6.2.2), ghc5 (>= 5.04.3), ghc5 (<< 5.04.4) +Maintainer: Isaac Jones +Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.2), ghc6 (<< 6.2.3), ghc5 (>= 5.04.3), ghc5 (<< 5.04.4) hunk ./debian/control 10 -Depends: ghc6 (>= 6.2.1), ghc6 (<< 6.2.2) +Depends: ghc6 (>= 6.2.2), ghc6 (<< 6.2.3) hunk ./debian/copyright 8 -Upstream Author(s): Bjorn Bringert, Isaac Jones, Simon Marlow, +Upstream Authors: Bjorn Bringert, Isaac Jones, Simon Marlow, hunk ./debian/libghc6-cabal-dev.postinst 22 - /usr/lib/ghc-6.2.1/bin/ghc-pkg-6.2.1 -g --add-package \ + /usr/lib/ghc-6.2.2/bin/ghc-pkg-6.2.2 -g --add-package \ hunk ./debian/libghc6-cabal-dev.prerm 22 - /usr/lib/ghc-6.2.1/bin/ghc-pkg-6.2.1 -r Cabal - rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.1/HSCabal*.o + /usr/lib/ghc-6.2.2/bin/ghc-pkg-6.2.2 -r Cabal + rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.2/HSCabal*.o hunk ./debian/rules 9 -GHCVERSION=6.2.1 +GHCVERSION=6.2.2 hunk ./Makefile 1 -GHCFLAGS= --make -Wall +GHCFLAGS= --make -Wall -cpp hunk ./test/A/Makefile 3 - ghc --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup + ghc -cpp --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup hunk ./test/HUnit-1.0/Makefile 3 - ghc --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup + ghc -cpp --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup hunk ./test/wash2hs/Makefile 3 - ghc --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup + ghc -cpp --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup hunk ./Makefile 121 -dist: pushall haddock +pushdist: pushall dist + scp /tmp/cabal-code.tgz ijones@www.haskell.org:~/cabal/cabal-code.tgz +# rm -f /tmp/cabal-code.tgz + +dist: haddock hunk ./Makefile 135 - scp /tmp/cabal-code.tgz ijones@www.haskell.org:~/cabal/cabal-code.tgz -# rm -f /tmp/cabal-code.tgz hunk ./Makefile 36 +hugsbootstrap: + rm -rf dist/tmp + mkdir -p dist/tmp + mkdir dist/hugs + cp -r Distribution Compat dist/tmp + hugs-package dist/tmp dist/hugs + cp Setup.lhs Setup.description dist/hugs + +hugsinstall: hugsbootstrap + cd dist/hugs && ./Setup.lhs configure --hugs + cd dist/hugs && ./Setup.lhs build + cd dist/hugs && ./Setup.lhs install + hunk ./Makefile 85 + -rm -rf dist/hugs hunk ./Setup.lhs 1 -#!/usr/bin/runhugs +#!/usr/bin/runhugs -98 hunk ./TODO 3 +** give usage message before erroring when no description file? +** give better error message for missing description file + hunk ./releaseNotes 63 +NOTES 0.2: Adds more HUGS support and preprocessor support. + hunk ./Distribution/Package.hs 72 +import System.Directory(doesFileExist) hunk ./Distribution/Package.hs 79 -import Distribution.Simple.Utils(currentDir) +import Distribution.Simple.Utils(currentDir, die) hunk ./Distribution/Package.hs 412 + exists <- doesFileExist fpath + when (not exists) (die $ "Error: description file \"" ++ fpath ++ "\" doesn't exist. Cannot continue.") hunk ./Distribution/Simple.hs 99 +-- |Reads the package description file using IO. hunk ./Distribution/Simple.hs 101 -defaultMain = readPackageDescription defaultPackageDesc >>= defaultMainNoRead +defaultMain = do args <- getArgs + (action, args) <- parseGlobalArgs args + pkg_descr <- readPackageDescription defaultPackageDesc + defaultMainWorker pkg_descr action args hunk ./Distribution/Simple.hs 106 +-- |Accept description as input rather than using IO to read it. hunk ./Distribution/Simple.hs 110 - let distPref = "dist" + (action, args) <- parseGlobalArgs args + defaultMainWorker pkg_descr action args + +-- |Helper function for /defaultMain/ and /defaultMainNoRead/ +defaultMainWorker :: PackageDescription + -> Action + -> [String] -- ^args1 + -> IO () +defaultMainWorker pkg_descr action args + = do let distPref = "dist" hunk ./Distribution/Simple.hs 122 - (action, args) <- parseGlobalArgs args hunk ./TODO 3 -** give usage message before erroring when no description file? -** give better error message for missing description file - hunk ./Setup.description 9 - Distribution.PreProcess.Unlit, hunk ./Setup.description 4 -build-depends: haskell-src +build-depends: haskell-src, posix hunk ./debian/changelog 1 +haskell-cabal (0.2-2) unstable; urgency=low + + * Removed spurious depends on ghc5. Should close 279988. I'll close + that by hand once I'm sure. + + -- Isaac Jones Sun, 7 Nov 2004 14:21:38 -0800 + hunk ./debian/changelog 13 - necessary. (Closes: #278667) + necessary. (Closes: #278667 Closes: #279556). hunk ./debian/control 4 -Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.2), ghc6 (<< 6.2.3), ghc5 (>= 5.04.3), ghc5 (<< 5.04.4) +Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.2), ghc6 (<< 6.2.3) hunk ./debian/control 18 - hunk ./TODO 16 -** what other preprocessors can't unlit? +** Preprocessors +*** hscpp extensions +*** chain of preprocessors +*** what other preprocessors can't unlit? hunk ./TODO 23 -- can't handle cabal's OPTIONS pragmas at the top. this requires - getting cpp to work from the Setup.description file. hunk ./TODO 40 -*** add install target for hugs & nhc +*** add install target for nhc hunk ./Distribution/Simple/Build.hs 126 - rawSystemExit ghcPath (cSources buildInfo' ++ ["-odir", pref, "-hidir", pref, "-c"]) + sequence_ [do let odir = pathJoin [pref, dirOf c] + createIfNotExists True odir + rawSystemExit ghcPath (c: ["-odir", odir , "-hidir", pref, "-c"]) + | c <- cSources buildInfo'] hunk ./Distribution/Simple/Build.hs 131 + -- link: hunk ./Distribution/Simple/Build.hs 152 + +dirOf :: FilePath -> FilePath +dirOf f = (\ (x, _, _) -> x) $ (splitFilePath f) move ./Compat ./Distribution/Compat move ./Distribution/Compat/H98.hs ./Distribution/Compat/Error.hs move ./Distribution/Misc.hs ./Distribution/Extension.hs move ./Distribution/Package.hs ./Distribution/PackageDescription.hs addfile ./Distribution/Compat/Directory.hs hunk ./Distribution/Compat/Directory.hs 1 +{-# OPTIONS -cpp #-} +module Distribution.Compat.Directory ( + findExecutable, copyFile + ) where + +#if __GLASGOW_HASKELL__ < 603 +#include "config.h" +#endif + +#if __GLASGOW_HASKELL__ > 602 + +import System.Directory ( findExecutable, copyFile ) + +#else /* to end of file... */ + +import System.Environment ( getEnv ) +import Distribution.Compat.FilePath +import System.IO +import Foreign +import System.Directory +import Distribution.Compat.Exception (bracket) +import Control.Monad (when) +import System.Posix (getFileStatus,setFileMode,fileMode,accessTime, + setFileMode,modificationTime,setFileTimes) + +findExecutable :: String -> IO (Maybe FilePath) +findExecutable binary = do + path <- getEnv "PATH" + search (parseSearchPath path) + where + search :: [FilePath] -> IO (Maybe FilePath) + search [] = return Nothing + search (d:ds) = do + let path = d `joinFileName` binary `joinFileExt` exeSuffix + b <- doesFileExist path + if b then return (Just path) + else search ds + +exeSuffix :: String +#ifdef mingw32_TARGET_OS +exeSuffix = "exe" +#else +exeSuffix = "" +#endif + +copyPermissions :: FilePath -> FilePath -> IO () +#ifndef mingw32_TARGET_OS +copyPermissions src dest + = do srcStatus <- getFileStatus src + setFileMode dest (fileMode srcStatus) +#else +copyPermissions src dest + = getPermissions src >>= setPermissions dest +#endif + + +copyFileTimes :: FilePath -> FilePath -> IO () +#ifndef mingw32_TARGET_OS +copyFileTimes src dest + = do st <- getFileStatus src + let atime = accessTime st + mtime = modificationTime st + setFileTimes dest atime mtime +#else +copyFileTimes src dest + = return () +#endif + +-- |Preserves permissions and, if possible, atime+mtime +copyFile :: FilePath -> FilePath -> IO () +copyFile src dest + | dest == src = fail "copyFile: source and destination are the same file" +#if (!(defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 600)) + | otherwise = do readFile src >>= writeFile dest + try (copyPermissions src dest) + return () +#else + | otherwise = bracket (openBinaryFile src ReadMode) hClose $ \hSrc -> + bracket (openBinaryFile dest WriteMode) hClose $ \hDest -> + do allocaBytes bufSize $ \buffer -> copyContents hSrc hDest buffer + try (copyPermissions src dest) + try (copyFileTimes src dest) + return () + where bufSize = 1024 + copyContents hSrc hDest buffer + = do count <- hGetBuf hSrc buffer bufSize + when (count > 0) $ do hPutBuf hDest buffer count + copyContents hSrc hDest buffer +#endif + +#endif hunk ./Distribution/Compat/Error.hs 2 -module Compat.H98 (Error(..)) where +module Distribution.Compat.Error (Error(..)) where hunk ./Distribution/Compat/Exception.hs 2 -module Compat.Exception (bracket) where +module Distribution.Compat.Exception (bracket,finally) where hunk ./Distribution/Compat/Exception.hs 7 -import Control.Exception (bracket) +import Control.Exception (bracket,finally) hunk ./Distribution/Compat/Exception.hs 18 + +finally :: IO a -> IO b -> IO a +finally thing after = bracket (return ()) (const after) thing hunk ./Distribution/Compat/RawSystem.hs 2 -module Compat.RawSystem (rawSystem) where +module Distribution.Compat.RawSystem (rawSystem) where hunk ./Distribution/Compat/ReadP.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Compat/ReadP.hs 4 --- Module : Text.ParserCombinators.ReadP +-- Module : Distribution.Compat.ReadP hunk ./Distribution/Compat/ReadP.hs 23 +-- hunk ./Distribution/Compat/ReadP.hs 26 -module Compat.ReadP +module Distribution.Compat.ReadP hunk ./Distribution/Compat/ReadP.hs 68 - readS_to_P, -- :: ReadS a -> ReadP a + readS_to_P -- :: ReadS a -> ReadP a hunk ./Distribution/Compat/ReadP.hs 70 +#if __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Compat/ReadP.hs 73 +#endif hunk ./Distribution/Compat/ReadP.hs 77 +#if __GLASGOW_HASKELL__ >= 603 + +import Text.ParserCombinators.ReadP hiding (ReadP) +import qualified Text.ParserCombinators.ReadP as ReadP + +type ReadP r a = ReadP.ReadP a + +#else + hunk ./Distribution/Compat/ReadP.hs 482 + +#endif hunk ./Distribution/Extension.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Extension.hs 4 --- Module : Distribution.Misc +-- Module : Distribution.Extension hunk ./Distribution/Extension.hs 9 --- Portability : +-- Portability : portable hunk ./Distribution/Extension.hs 11 --- Explanation: Misc stuff that doesn't fit elsewhere. License, --- Dependencies, extensions. +-- Haskell language extensions hunk ./Distribution/Extension.hs 43 -module Distribution.Misc(License(..), Dependency(..), Extension(..), Opt - ,extensionsToNHCFlag, extensionsToGHCFlag - ,extensionsToHugsFlag +module Distribution.Extension ( + Extension(..), Opt, + extensionsToNHCFlag, extensionsToGHCFlag, extensionsToHugsFlag, hunk ./Distribution/Extension.hs 47 - ,hunitTests + hunitTests hunk ./Distribution/Extension.hs 49 - ) - where + ) where hunk ./Distribution/Extension.hs 51 -import Distribution.Version(VersionRange) hunk ./Distribution/Extension.hs 58 --- * Misc +-- * Extension hunk ./Distribution/Extension.hs 60 - -data License = GPL | LGPL | BSD3 | BSD4 | PublicDomain | AllRightsReserved - | {- ... | -} OtherLicense FilePath - deriving (Read, Show, Eq) - --- |Maybe move to Distribution.Version? -data Dependency = Dependency String VersionRange - deriving (Read, Show, Eq) hunk ./Distribution/InstalledPackageInfo.hs 52 + parseInstalledPackageInfo, + showInstalledPackageInfo, + showInstalledPackageInfoField, hunk ./Distribution/InstalledPackageInfo.hs 57 -import Distribution.Misc(License(..), Dependency, Opt) -import Distribution.Package(PackageIdentifier(..)) +import Distribution.ParseUtils ( + StanzaField(..), singleStanza, PError(..), + simpleField, listField, licenseField, + parseFilePath, parseLibName, parseModuleName, + showFilePath, parseReadS, parseOptVersion ) +import Distribution.License ( License(..) ) +import Distribution.Extension ( Opt ) +import Distribution.Package ( PackageIdentifier(..), showPackageId, + parsePackageName, parsePackageId ) +import Distribution.Version ( Version(..), showVersion ) +import Distribution.Compat.ReadP as ReadP + +import Control.Monad ( foldM ) +import Text.PrettyPrint + +-- ----------------------------------------------------------------------------- +-- The InstalledPackageInfo type hunk ./Distribution/InstalledPackageInfo.hs 77 - pkgIdent :: PackageIdentifier, - license :: License, - copyright :: String, - maintainer :: String, - stability :: String, - auto :: Bool, - importDirs :: [FilePath], - sourceDirs :: [FilePath], - libraryDirs :: [FilePath], - hsLibraries :: [String], - extraLibraries :: [String], - includeDirs :: [FilePath], - cIncludes :: [String], - depends :: [Dependency], -- use dependencies - extraHugsOpts :: [Opt], - extraCcOpts :: [Opt], - extraLdOpts :: [Opt], - frameworkDirs :: [FilePath], - extraFrameworks:: [String]} + -- these parts are exactly the same as PackageDescription + package :: PackageIdentifier, + license :: License, + copyright :: String, + maintainer :: String, + author :: String, + stability :: String, + homepage :: String, + pkgUrl :: String, + description :: String, + category :: String, + -- these parts are required by an installed package only: + exposed :: Bool, + exposedModules :: [String], + hiddenModules :: [String], + importDirs :: [FilePath], -- contain sources in case of Hugs + libraryDirs :: [FilePath], + hsLibraries :: [String], + extraLibraries :: [String], + includeDirs :: [FilePath], + includes :: [String], + depends :: [PackageIdentifier], + extraHugsOpts :: [Opt], + extraCcOpts :: [Opt], + extraLdOpts :: [Opt], + frameworkDirs :: [FilePath], + extraFrameworks :: [String], + haddockInterfaces :: [FilePath], + haddockHTMLs :: [FilePath] + } hunk ./Distribution/InstalledPackageInfo.hs 110 -emptyInstalledPackageInfo = InstalledPackageInfo (PackageIdentifier "" (error "no version")) - AllRightsReserved "" "" "" False [] [] [] [] [] [] - [] [] [] [] [] [] [] +emptyInstalledPackageInfo + = InstalledPackageInfo { + package = PackageIdentifier "" noVersion, + license = AllRightsReserved, + copyright = "", + maintainer = "", + author = "", + stability = "", + homepage = "", + pkgUrl = "", + description = "", + category = "", + exposed = False, + exposedModules = [], + hiddenModules = [], + importDirs = [], + libraryDirs = [], + hsLibraries = [], + extraLibraries = [], + includeDirs = [], + includes = [], + depends = [], + extraHugsOpts = [], + extraCcOpts = [], + extraLdOpts = [], + frameworkDirs = [], + extraFrameworks = [], + haddockInterfaces = [], + haddockHTMLs = [] + } + +noVersion = Version{ versionBranch=[], versionTags=[] } + +-- ----------------------------------------------------------------------------- +-- Parsing + +parseInstalledPackageInfo :: String -> Either PError InstalledPackageInfo +parseInstalledPackageInfo inp = do + lines <- singleStanza inp + -- not interested in stanzas, so just allow blank lines in + -- the package info. + foldM (parseBasicStanza fields) emptyInstalledPackageInfo lines + +parseBasicStanza ((StanzaField name _ _ set):fields) pkg (lineNo, f, val) + | name == f = set lineNo val pkg + | otherwise = parseBasicStanza fields pkg (lineNo, f, val) +parseBasicStanza [] pkg (lineNo, f, val) = return pkg + + +-- ----------------------------------------------------------------------------- +-- Pretty-printing + +showInstalledPackageInfo :: InstalledPackageInfo -> String +showInstalledPackageInfo pkg = render (ppFields fields) + where + ppFields [] = empty + ppFields ((StanzaField _ get _ _):flds) = get pkg $$ ppFields flds + +showInstalledPackageInfoField + :: String + -> Maybe (InstalledPackageInfo -> String) +showInstalledPackageInfoField field + = case [ get | (StanzaField f get _ _) <- fields, f == field ] of + [] -> Nothing + (get:_) -> Just (render . get) + +-- ----------------------------------------------------------------------------- +-- Description of the fields, for parsing/printing + +fields = basicStanzaFields ++ installedStanzaFields + +basicStanzaFields :: [StanzaField InstalledPackageInfo] +basicStanzaFields = + [ simpleField "name" + text parsePackageName + (pkgName . package) (\name pkg -> pkg{package=(package pkg){pkgName=name}}) + , simpleField "version" + (text . showVersion) parseOptVersion + (pkgVersion . package) (\ver pkg -> pkg{package=(package pkg){pkgVersion=ver}}) + , licenseField "license" False + license (\l pkg -> pkg{license=l}) + , licenseField "license-file" True + license (\l pkg -> pkg{license=l}) + , simpleField "copyright" + text (munch (const True)) + copyright (\val pkg -> pkg{copyright=val}) + , simpleField "maintainer" + text (munch (const True)) + maintainer (\val pkg -> pkg{maintainer=val}) + , simpleField "stability" + text (munch (const True)) + stability (\val pkg -> pkg{stability=val}) + , simpleField "homepage" + text (munch (const True)) + homepage (\val pkg -> pkg{homepage=val}) + , simpleField "package-url" + text (munch (const True)) + pkgUrl (\val pkg -> pkg{pkgUrl=val}) + , simpleField "description" + text (munch (const True)) + description (\val pkg -> pkg{description=val}) + , simpleField "category" + text (munch (const True)) + category (\val pkg -> pkg{category=val}) + , simpleField "author" + text (munch (const True)) + author (\val pkg -> pkg{author=val}) + ] + +installedStanzaFields :: [StanzaField InstalledPackageInfo] +installedStanzaFields = [ + simpleField "exposed" + (text.show) parseReadS + exposed (\val pkg -> pkg{exposed=val}) + , listField "exposed-modules" + text parseModuleName + exposedModules (\xs pkg -> pkg{exposedModules=xs}) + , listField "hidden-modules" + text parseModuleName + hiddenModules (\xs pkg -> pkg{hiddenModules=xs}) + , listField "import-dirs" + showFilePath parseFilePath + importDirs (\xs pkg -> pkg{importDirs=xs}) + , listField "library-dirs" + showFilePath parseFilePath + libraryDirs (\xs pkg -> pkg{libraryDirs=xs}) + , listField "hs-libraries" + showFilePath parseLibName + hsLibraries (\xs pkg -> pkg{hsLibraries=xs}) + , listField "extra-libs" + text parseLibName + extraLibraries (\xs pkg -> pkg{extraLibraries=xs}) + , listField "include-dirs" + showFilePath parseFilePath + includeDirs (\xs pkg -> pkg{includeDirs=xs}) + , listField "includes" + showFilePath parseFilePath + includes (\xs pkg -> pkg{includes=xs}) + , listField "depends" + (text.showPackageId) parsePackageId + depends (\xs pkg -> pkg{depends=xs}) + , listField "extra-hugs-opts" + text parseFilePath + extraHugsOpts (\path pkg -> pkg{extraHugsOpts=path}) + , listField "extra-cc-opts" + text parseFilePath + extraCcOpts (\path pkg -> pkg{extraCcOpts=path}) + , listField "extra-ld-opts" + text parseFilePath + extraLdOpts (\path pkg -> pkg{extraLdOpts=path}) + , listField "framework-dirs" + showFilePath parseFilePath + frameworkDirs (\xs pkg -> pkg{frameworkDirs=xs}) + , listField "extra-frameworks" + showFilePath parseFilePath + extraFrameworks (\xs pkg -> pkg{extraFrameworks=xs}) + , listField "haddock-interfaces" + showFilePath parseFilePath + haddockInterfaces (\xs pkg -> pkg{haddockInterfaces=xs}) + , listField "haddock-html" + showFilePath parseFilePath + haddockHTMLs (\xs pkg -> pkg{haddockHTMLs=xs}) + ] + addfile ./Distribution/License.hs hunk ./Distribution/License.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.License +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : portable +-- +-- The License datatype. + +{- All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.License ( + License(..) + ) where + + +data License = GPL | LGPL | BSD3 | BSD4 | PublicDomain | AllRightsReserved + | {- ... | -} OtherLicense FilePath + deriving (Read, Show, Eq) hunk ./Distribution/Make.hs 52 +import Distribution.PackageDescription hunk ./Distribution/Make.hs 57 -import Distribution.Misc (License(..)) +import Distribution.License (License(..)) hunk ./Distribution/ModuleTest.hs 49 -import qualified Distribution.Misc as D.M (hunitTests) +import qualified Distribution.License as D.L +import qualified Distribution.Extension as D.E (hunitTests) hunk ./Distribution/ModuleTest.hs 52 -import qualified Distribution.Package as D.P (hunitTests) +import qualified Distribution.Package as D.P () +import qualified Distribution.PackageDescription as D.PD (hunitTests) hunk ./Distribution/ModuleTest.hs 61 -import Distribution.Simple.Utils(pathJoin) +import Distribution.Compat.FilePath(joinFileName) hunk ./Distribution/ModuleTest.hs 114 - = [TestLabel "testing the wash2hs package" $ TestCase $ - do setCurrentDirectory $ pathJoin [currDir, "test", "wash2hs"] + = let testdir = currDir `joinFileName` "test" in + [TestLabel "testing the wash2hs package" $ TestCase $ + do setCurrentDirectory $ (testdir `joinFileName` "wash2hs") hunk ./Distribution/ModuleTest.hs 129 - do setCurrentDirectory $ pathJoin [currDir, "test", "HUnit-1.0"] + do setCurrentDirectory $ (testdir `joinFileName` "HUnit-1.0") hunk ./Distribution/ModuleTest.hs 163 - setCurrentDirectory $ pathJoin [currDir, "test", "A"] + setCurrentDirectory $ (testdir `joinFileName` "A") hunk ./Distribution/ModuleTest.hs 189 - doesFileExist (pathJoin [",tmp2/lib/test-1.0/", "libHStest-1.0.a"]) + doesFileExist (",tmp2/lib/test-1.0/" `joinFileName` "libHStest-1.0.a") hunk ./Distribution/ModuleTest.hs 196 - doesFileExist (pathJoin [targetDir, "libHStest-1.0.a"]) + doesFileExist (targetDir `joinFileName` "libHStest-1.0.a") hunk ./Distribution/ModuleTest.hs 225 - D.P.hunitTests ++ D.M.hunitTests) + D.PD.hunitTests ++ D.E.hunitTests) addfile ./Distribution/Package.hs hunk ./Distribution/Package.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Package +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : portable +-- +-- Packages. + +{- All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Package ( + PackageIdentifier(..), + showPackageId, parsePackageId, parsePackageName, + ) where + +import Distribution.Version +import Distribution.Compat.ReadP as ReadP +import Data.Char ( isAlphaNum ) +import Data.List ( intersperse ) + +data PackageIdentifier + = PackageIdentifier { + pkgName :: String, + pkgVersion :: Version + } + deriving (Read, Show, Eq) + +showPackageId :: PackageIdentifier -> String +showPackageId (PackageIdentifier n (Version [] _)) = n -- if no version, don't show version. +showPackageId pkgid = + pkgName pkgid ++ '-': showVersion (pkgVersion pkgid) + +parsePackageName :: ReadP r String +parsePackageName = do ns <- sepBy1 (munch1 isAlphaNum) (char '-') + return (concat (intersperse "-" ns)) + +parsePackageId :: ReadP r PackageIdentifier +parsePackageId = do + n <- parsePackageName + v <- (ReadP.char '-' >> parseVersion) <++ return (Version [] []) + return PackageIdentifier{pkgName=n,pkgVersion=v} hunk ./Distribution/PackageDescription.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/PackageDescription.hs 4 --- Module : Distribution.Package +-- Module : Distribution.PackageDescription hunk ./Distribution/PackageDescription.hs 11 --- Explanation: Package description and parsing +-- Package description and parsing. hunk ./Distribution/PackageDescription.hs 43 -module Distribution.Package ( - PackageIdentifier(..), - showPackageId, +module Distribution.PackageDescription ( hunk ./Distribution/PackageDescription.hs 58 - StanzaField(..), hunk ./Distribution/PackageDescription.hs 65 -import Control.Monad(foldM, liftM, when) +import Control.Monad(foldM, when) hunk ./Distribution/PackageDescription.hs 72 +import Distribution.ParseUtils +import Distribution.Package(PackageIdentifier(..),showPackageId, + parsePackageName) hunk ./Distribution/PackageDescription.hs 76 - showVersion, parseVersion, - showVersionRange, parseVersionRange) -import Distribution.Misc(License(..), Dependency(..), Extension(..)) + showVersion, parseVersion) +import Distribution.License(License(..)) +import Distribution.Version(Dependency(..)) +import Distribution.Extension(Extension(..)) hunk ./Distribution/PackageDescription.hs 83 -import Compat.H98 -import Compat.ReadP hiding (get) +import Distribution.Compat.ReadP as ReadP hiding (get) hunk ./Distribution/PackageDescription.hs 86 +import Control.Monad (liftM) hunk ./Distribution/PackageDescription.hs 88 +import Distribution.ParseUtils (runP) hunk ./Distribution/PackageDescription.hs 91 -data PackageIdentifier - = PackageIdentifier {pkgName::String, pkgVersion::Version} - deriving (Read, Show, Eq) - -showPackageId :: PackageIdentifier -> String -showPackageId (PackageIdentifier n (Version [] _)) = n -- if no version, don't show version. -showPackageId pkgid = - pkgName pkgid ++ '-': showVersion (pkgVersion pkgid) - - hunk ./Distribution/PackageDescription.hs 223 -type LineNo = Int - -data PError = AmbigousParse String LineNo - | NoParse String LineNo - | FromString String (Maybe LineNo) - deriving Show - -instance Error PError where - strMsg s = FromString s Nothing - -showError :: PError -> String -showError (AmbigousParse f n) = "Line "++show n++": Ambigous parse in field '"++f++"'" -showError (NoParse f n) = "Line "++show n++": Parse of field '"++f++"' failed" -showError (FromString s (Just n)) = "Line "++show n++": " ++ s -showError (FromString s Nothing) = s - -myError :: LineNo -> String -> Either PError a -myError n s = Left $ FromString s (Just n) - -data StanzaField a - = StanzaField - { fieldName :: String - , fieldShow :: a -> Doc - , fieldGet :: a -> Doc - , fieldSet :: LineNo -> String -> a -> Either PError a - } - hunk ./Distribution/PackageDescription.hs 312 -simpleField :: String -> (a -> Doc) -> (ReadP a a) -> (b -> a) -> (a -> b -> b) -> StanzaField b -simpleField name showF readF get set = StanzaField name - (\st -> text name <> colon <+> showF (get st)) - (showF . get) - (\lineNo val st -> do - x <- runP lineNo name readF val - return (set x st)) - -listField :: String -> (a -> Doc) -> (ReadP [a] a) -> (b -> [a]) -> ([a] -> b -> b) -> StanzaField b -listField name showF readF get set = StanzaField name - (\st -> case get st of - [] -> empty - lst -> - text name <> vcat (map (\value -> comma <+> showF value) lst)) - (\st -> case get st of - [] -> empty - lst -> - vcat (map (\value -> comma <+> showF value) lst)) - (\lineNo val st -> do - xs <- runP lineNo name (parseCommaList readF) val - return (set xs st)) - -licenseField :: String -> Bool -> (b -> License) -> (License -> b -> b) -> StanzaField b -licenseField name flag get set = StanzaField name - (\st -> case get st of - OtherLicense path | flag -> text name <> colon <+> showFilePath path - | otherwise -> empty - license' | not flag -> text name <> colon <+> text (show license') - | otherwise -> empty) - (\st -> case get st of - OtherLicense path | flag -> showFilePath path - | otherwise -> empty - license' | not flag -> text (show license') - | otherwise -> empty) - (\lineNo val st -> - if flag - then do - path <- runP lineNo name parseFilePath val - return (set (OtherLicense path) st) - else do - x <- runP lineNo name parseLicense val - return (set x st)) - -optsField :: String -> CompilerFlavor -> (b -> [(CompilerFlavor,[String])]) -> ([(CompilerFlavor,[String])] -> b -> b) -> StanzaField b -optsField name flavor get set = StanzaField name - (\st -> case lookup flavor (get st) of - Just args -> text name <> colon <+> hsep (map text args) - Nothing -> empty) - (\st -> case lookup flavor (get st) of - Just args -> sep (map text args) - Nothing -> empty) - (\_ val st -> - let - old_val = get st - old_args = case lookup flavor old_val of - Just args -> args - Nothing -> [] - val' = filter (\(f,_) -> f/=flavor) old_val - in return (set ((flavor,words val++old_args) : val') st)) - hunk ./Distribution/PackageDescription.hs 327 -parseDescription inp = do let (st:sts) = splitStanzas inp +parseDescription inp = do (st:sts) <- splitStanzas inp hunk ./Distribution/PackageDescription.hs 368 -runP :: LineNo -> String -> ReadP a a -> String -> Either PError a -runP lineNo field p s = - case [ x | (x,"") <- results ] of - [a] -> Right a - [] -> case [ x | (x,ys) <- results, all isSpace ys ] of - [a] -> Right a - [] -> Left (NoParse field lineNo) - _ -> Left (AmbigousParse field lineNo) - _ -> Left (AmbigousParse field lineNo) - where results = readP_to_S p s - -type Stanza = [(LineNo,String,String)] - --- |Split a string into blank line-separated stanzas of --- "Field: value" groups -splitStanzas :: String -> [Stanza] -splitStanzas = map merge . groupStanzas . filter validLine . zip [1..] . lines - where validLine (_,s) = case dropWhile isSpace s of - '-':'-':_ -> False -- Comment - _ -> True - allSpaces (_,xs) = all isSpace xs - groupStanzas :: [(Int,String)] -> [[(Int,String)]] - groupStanzas [] = [] - groupStanzas xs = let (ys,zs) = break allSpaces xs - in ys : groupStanzas (dropWhile allSpaces zs) - merge ((n,x):(_,' ':s):ys) = case dropWhile isSpace s of - ('.':s') -> merge ((n,x++"\n"++s'):ys) - s' -> merge ((n,x++"\n"++s'):ys) - merge ((n,x):ys) = brk n x : merge ys - merge [] = [] - brk n xs = case break (==':') xs of - (fld, ':':val) -> (n, map toLower fld, dropWhile isSpace val) - (_, _) -> error $ "Line "++show n++": Invalid syntax (no colon after field name)" - --- |parse a module name -parseModuleName :: ReadP r String -parseModuleName = do c <- satisfy isUpper - cs <- munch (\x -> isAlphaNum x || x `elem` "_'.") - return (c:cs) - -parseTestedWith :: ReadP [(CompilerFlavor,VersionRange)] (CompilerFlavor,VersionRange) -parseTestedWith = do compiler <- parseReadS - skipSpaces - version <- parseVersionRange <++ return AnyVersion - skipSpaces - return (compiler,version) - -parseFilePath :: ReadP r FilePath -parseFilePath = parseReadS <++ (munch1 (\x -> isAlphaNum x || x `elem` "-+/_.")) - -showFilePath :: FilePath -> Doc -showFilePath fpath - | all (\x -> isAlphaNum x || x `elem` "-+/_.") fpath = text fpath - | otherwise = doubleQuotes (text fpath) - - -parseReadS :: Read a => ReadP r a -parseReadS = readS_to_P reads - -parsePackageName :: ReadP r String -parsePackageName = do n <- satisfy isAlpha - name <- munch1 (\x -> isAlphaNum x || x `elem` "-") - return (n:name) - -parseDependency :: ReadP r Dependency -parseDependency = do name <- parsePackageName - skipSpaces - ver <- parseVersionRange <++ return AnyVersion - skipSpaces - return $ Dependency name ver - -parseLicense :: ReadP r License -parseLicense = parseReadS - -parseExtension :: ReadP r Extension -parseExtension = parseReadS - -parseLibName :: ReadP r String -parseLibName = munch1 (\x -> not (isSpace x) && x /= ',') - -parseCommaList :: ReadP r a -- ^The parser for the stuff between commas - -> ReadP r [a] -parseCommaList p = sepBy1 p separator - where separator = skipSpaces >> Compat.ReadP.char ',' >> skipSpaces - - - hunk ./Distribution/PackageDescription.hs 371 -showTestedWith :: (CompilerFlavor,VersionRange) -> Doc -showTestedWith (compiler,version) = text (show compiler ++ " " ++ showVersionRange version) - hunk ./Distribution/PackageDescription.hs 391 -showDependency :: Dependency -> Doc -showDependency (Dependency name ver) = text name <+> text (showVersionRange ver) - addfile ./Distribution/ParseUtils.hs hunk ./Distribution/ParseUtils.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.ParseUtils +-- Copyright : (c) The University of Glasgow 2004 +-- +-- Maintainer : libraries@haskell.org +-- Stability : alpha +-- Portability : portable +-- +-- Utilities for parsing PackageDescription and InstalledPackageInfo. + + +{- All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the University nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +-- This module is meant to be local-only to Distribution... + +-- #hide +module Distribution.ParseUtils ( + LineNo, PError(..), showError, myError, runP, + StanzaField(..), splitStanzas, Stanza, singleStanza, + parseFilePath, parseLibName, + parseModuleName, parseReadS, parseDependency, parseOptVersion, + parseTestedWith, parseLicense, parseExtension, parseCommaList, + showFilePath, showTestedWith, showDependency, + simpleField, listField, licenseField, optsField, + ) where + +import Text.PrettyPrint.HughesPJ +import Distribution.License +import Distribution.Version +import Distribution.Extension +import Distribution.Package ( parsePackageName ) +import Distribution.Compat.ReadP as ReadP hiding (get) +import Distribution.Compat.Error +import Distribution.Setup(CompilerFlavor(..)) + +import Data.Char + +-- ----------------------------------------------------------------------------- + +type LineNo = Int + +data PError = AmbigousParse String LineNo + | NoParse String LineNo + | FromString String (Maybe LineNo) + deriving Show + +instance Error PError where + strMsg s = FromString s Nothing + +runP :: LineNo -> String -> ReadP a a -> String -> Either PError a +runP lineNo field p s = + case [ x | (x,"") <- results ] of + [a] -> Right a + [] -> case [ x | (x,ys) <- results, all isSpace ys ] of + [a] -> Right a + [] -> Left (NoParse field lineNo) + _ -> Left (AmbigousParse field lineNo) + _ -> Left (AmbigousParse field lineNo) + where results = readP_to_S p s + +showError :: PError -> String +showError (AmbigousParse f n) = "Line "++show n++": Ambigous parse in field '"++f++"'" +showError (NoParse f n) = "Line "++show n++": Parse of field '"++f++"' failed" +showError (FromString s (Just n)) = "Line "++show n++": " ++ s +showError (FromString s Nothing) = s + +myError :: LineNo -> String -> Either PError a +myError n s = Left $ FromString s (Just n) + +data StanzaField a + = StanzaField + { fieldName :: String + , fieldShow :: a -> Doc + , fieldGet :: a -> Doc + , fieldSet :: LineNo -> String -> a -> Either PError a + } + +simpleField :: String -> (a -> Doc) -> (ReadP a a) -> (b -> a) -> (a -> b -> b) -> StanzaField b +simpleField name showF readF get set = StanzaField name + (\st -> text name <> colon <+> showF (get st)) + (showF . get) + (\lineNo val st -> do + x <- runP lineNo name readF val + return (set x st)) + +listField :: String -> (a -> Doc) -> (ReadP [a] a) -> (b -> [a]) -> ([a] -> b -> b) -> StanzaField b +listField name showF readF get set = StanzaField name + (\st -> case get st of + [] -> empty + lst -> + text name <> colon <+> sep (punctuate comma (map showF lst))) + (\st -> case get st of + [] -> empty + lst -> + vcat (map (\value -> comma <+> showF value) lst)) + (\lineNo val st -> do + xs <- runP lineNo name (parseCommaList readF) val + return (set xs st)) + +licenseField :: String -> Bool -> (b -> License) -> (License -> b -> b) -> StanzaField b +licenseField name flag get set = StanzaField name + (\st -> case get st of + OtherLicense path | flag -> text name <> colon <+> showFilePath path + | otherwise -> empty + license' | not flag -> text name <> colon <+> text (show license') + | otherwise -> empty) + (\st -> case get st of + OtherLicense path | flag -> showFilePath path + | otherwise -> empty + license' | not flag -> text (show license') + | otherwise -> empty) + (\lineNo val st -> + if flag + then do + path <- runP lineNo name parseFilePath val + return (set (OtherLicense path) st) + else do + x <- runP lineNo name parseLicense val + return (set x st)) + +optsField :: String -> CompilerFlavor -> (b -> [(CompilerFlavor,[String])]) -> ([(CompilerFlavor,[String])] -> b -> b) -> StanzaField b +optsField name flavor get set = StanzaField name + (\st -> case lookup flavor (get st) of + Just args -> text name <> colon <+> hsep (map text args) + Nothing -> empty) + (\st -> case lookup flavor (get st) of + Just args -> sep (map text args) + Nothing -> empty) + (\_ val st -> + let + old_val = get st + old_args = case lookup flavor old_val of + Just args -> args + Nothing -> [] + val' = filter (\(f,_) -> f/=flavor) old_val + in return (set ((flavor,words val++old_args) : val') st)) + +type Stanza = [(LineNo,String,String)] + +-- |Split a string into blank line-separated stanzas of +-- "Field: value" groups +splitStanzas :: String -> Either PError [Stanza] +splitStanzas = mapM (mapM brk) . map merge . groupStanzas . filter validLine . zip [1..] . lines + where validLine (_,s) = case dropWhile isSpace s of + '-':'-':_ -> False -- Comment + _ -> True + groupStanzas :: [(Int,String)] -> [[(Int,String)]] + groupStanzas [] = [] + groupStanzas xs = let (ys,zs) = break allSpaces xs + in ys : groupStanzas (dropWhile allSpaces zs) + +allSpaces (_,xs) = all isSpace xs + +-- |Split a file into "Field: value" groups, but blank lines have no +-- significance, unlike 'splitStanzas'. A field value may span over blank +-- lines. +singleStanza :: String -> Either PError Stanza +singleStanza = mapM brk . merge . filter (not.allSpaces) . zip [1..] . lines + +merge ((n,x):(_,c:s):ys) + | c == ' ' || c == '\t' = case dropWhile isSpace s of + ('.':s') -> merge ((n,x++"\n"++s'):ys) + s' -> merge ((n,x++"\n"++s'):ys) +merge ((n,x):ys) = (n,x) : merge ys +merge [] = [] + +brk :: (Int,String) -> Either PError (Int,String,String) +brk (n,xs) = case break (==':') xs of + (fld, ':':val) -> return (n, map toLower fld, dropWhile isSpace val) + (_, _) -> fail $ "Line "++show n++": Invalid syntax (no colon after field name)" + +-- |parse a module name +parseModuleName :: ReadP r String +parseModuleName = do c <- satisfy isUpper + cs <- munch (\x -> isAlphaNum x || x `elem` "_'.") + return (c:cs) + +parseFilePath :: ReadP r FilePath +parseFilePath = parseReadS <++ (munch1 (\x -> isAlphaNum x || x `elem` "-+/_.")) + +parseReadS :: Read a => ReadP r a +parseReadS = readS_to_P reads + +parseDependency :: ReadP r Dependency +parseDependency = do name <- parsePackageName + skipSpaces + ver <- parseVersionRange <++ return AnyVersion + skipSpaces + return $ Dependency name ver + +parseOptVersion :: ReadP r Version +parseOptVersion = parseVersion <++ return noVersion + where noVersion = Version{ versionBranch=[], versionTags=[] } + +parseTestedWith :: ReadP [(CompilerFlavor,VersionRange)] (CompilerFlavor,VersionRange) +parseTestedWith = do compiler <- parseReadS + skipSpaces + version <- parseVersionRange <++ return AnyVersion + skipSpaces + return (compiler,version) + +parseLicense :: ReadP r License +parseLicense = parseReadS + +parseExtension :: ReadP r Extension +parseExtension = parseReadS + +parseLibName :: ReadP r String +parseLibName = parseReadS <++ munch1 (\x -> not (isSpace x) && x /= ',') + +parseCommaList :: ReadP r a -- ^The parser for the stuff between commas + -> ReadP r [a] +parseCommaList p = sepBy p separator + where separator = skipSpaces >> ReadP.char ',' >> skipSpaces + +-- -------------------------------------------- +-- ** Pretty printing + +showFilePath :: FilePath -> Doc +showFilePath fpath + | all (\x -> isAlphaNum x || x `elem` "-+/_.") fpath = text fpath + | otherwise = doubleQuotes (text fpath) + + +showTestedWith :: (CompilerFlavor,VersionRange) -> Doc +showTestedWith (compiler,version) = text (show compiler ++ " " ++ showVersionRange version) + +showDependency :: Dependency -> Doc +showDependency (Dependency name ver) = text name <+> text (showVersionRange ver) hunk ./Distribution/PreProcess.hs 46 -import Distribution.Package (setupMessage, PackageDescription(..), +import Distribution.PackageDescription (setupMessage, PackageDescription(..), hunk ./Distribution/PreProcess.hs 49 -import Distribution.Simple.Utils (rawSystemPath, splitFilePath, - joinFilenameDir, joinExt, moduleToFilePath, - sequenceMap, removeFiles, hasExt, pathJoin) +import Distribution.Simple.Utils (rawSystemPath, moduleToFilePath, + sequenceMap, removeFiles) hunk ./Distribution/PreProcess.hs 53 - -import Data.Maybe(catMaybes) +import Distribution.Compat.FilePath + (splitFilePath, splitFileExt, joinFileName, joinFileExt) hunk ./Distribution/PreProcess.hs 88 - pp p (joinFilenameDir dir (joinExt file "hs")) + pp p (joinFileName dir (joinFileExt file "hs")) hunk ./Distribution/PreProcess.hs 126 - = removePreprocessed (pathJoin [r, (hsSourceDir bi)]) (modules bi) suff + = removePreprocessed (r `joinFileName` (hsSourceDir bi)) (modules bi) suff hunk ./Distribution/PreProcess.hs 144 - let hsFiles = (filter (\x -> hasExt x "hs") l) + let hsFiles = (filter (\x -> fst (splitFileExt x) == "hs") l) hunk ./Distribution/PreProcess/Unlit.hs 19 -import Char +import Data.Char hunk ./Distribution/Setup.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Setup.hs 14 - hunk ./Distribution/Setup.hs 62 +import Distribution.Version (Version) hunk ./Distribution/Setup.hs 68 -import Compat.H98 () -- FIX: is this line necessary for some platform? - hunk ./Distribution/Setup.hs 76 + compilerVersion :: Version, hunk ./Distribution/Simple.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Simple.hs 59 +import Distribution.PackageDescription hunk ./Distribution/Simple.hs 71 -import Distribution.Simple.Utils (die, pathJoin, removeFileRecursive, currentDir) -import Distribution.Misc (License(..), Extension(..), Dependency(..)) -import Distribution.Version (Version(..), VersionRange(..), +import Distribution.Simple.Utils (die, removeFileRecursive, currentDir) +import Distribution.License (License(..)) +import Distribution.Extension (Extension(..)) +import Distribution.Version (Version(..), VersionRange(..), Dependency(..), hunk ./Distribution/Simple.hs 85 -import System.IO (hPutStr, stderr, try) +import System.IO (try) +import Distribution.Compat.FilePath(joinFileName) hunk ./Distribution/Simple.hs 124 - let buildPref = pathJoin [distPref, "build"] - let srcPref = pathJoin [distPref, "src"] + let buildPref = distPref `joinFileName` "build" + let srcPref = distPref `joinFileName` "src" hunk ./Distribution/Simple/Build.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Build.hs 50 -import Distribution.Misc (extensionsToGHCFlag, extensionsToNHCFlag) +import Distribution.Extension (extensionsToGHCFlag, extensionsToNHCFlag) hunk ./Distribution/Simple/Build.hs 52 -import Distribution.Package (PackageIdentifier(..), PackageDescription(..), - BuildInfo(..), showPackageId, setupMessage, - withLib, Executable(..)) +import Distribution.PackageDescription (PackageDescription(..), BuildInfo(..), + setupMessage, withLib, Executable(..)) +import Distribution.Package (PackageIdentifier(..), showPackageId) hunk ./Distribution/Simple/Build.hs 58 - split, createIfNotExists, - mkLibName, pathJoin, moveSources, - splitFilePath, joinFilenameDir, joinExt + createIfNotExists, + mkLibName, moveSources, dotToSep hunk ./Distribution/Simple/Build.hs 67 +import Distribution.Compat.FilePath (splitFilePath, joinFileName, joinFileExt) hunk ./Distribution/Simple/Build.hs 114 - createIfNotExists True (pathJoin [pref, hsSourceDir buildInfo']) + createIfNotExists True (pref `joinFileName` (hsSourceDir buildInfo')) hunk ./Distribution/Simple/Build.hs 117 - "-odir", pathJoin [pref, hsSourceDir buildInfo'], - "-hidir", pathJoin [pref, hsSourceDir buildInfo'] + "-odir", pref `joinFileName` (hsSourceDir buildInfo'), + "-hidir", pref `joinFileName` (hsSourceDir buildInfo') hunk ./Distribution/Simple/Build.hs 127 - sequence_ [do let odir = pathJoin [pref, dirOf c] + sequence_ [do let odir = pref `joinFileName` dirOf c hunk ./Distribution/Simple/Build.hs 133 - let hObjs = [ pathJoin [hsSourceDir buildInfo', dotToSep x `joinExt` objsuffix] + let hObjs = [ (hsSourceDir buildInfo') `joinFileName` (dotToSep x) `joinFileExt` objsuffix hunk ./Distribution/Simple/Build.hs 135 - cObjs = [ path `joinFilenameDir` file `joinExt` objsuffix + cObjs = [ path `joinFileName` file `joinFileExt` objsuffix hunk ./Distribution/Simple/Build.hs 140 - rawSystemPathExit "ar" (["q", lib] ++ [pathJoin [pref, x] | x <- hObjs ++ cObjs]) + rawSystemPathExit "ar" (["q", lib] ++ [pref `joinFileName` x | x <- hObjs ++ cObjs]) hunk ./Distribution/Simple/Build.hs 143 - sequence_ [ do createIfNotExists True (pathJoin [pref, hsSourceDir exeBi]) + sequence_ [ do createIfNotExists True (pref `joinFileName` (hsSourceDir exeBi)) hunk ./Distribution/Simple/Build.hs 145 - ++ ["-odir", pathJoin [pref, hsSourceDir exeBi], - "-hidir", pathJoin [pref, hsSourceDir exeBi], - "-o", pathJoin [pref, hsSourceDir exeBi, exeName'] + ++ ["-odir", pref `joinFileName` (hsSourceDir exeBi), + "-hidir", pref `joinFileName` (hsSourceDir exeBi), + "-o", pref `joinFileName` (hsSourceDir exeBi) `joinFileName` exeName' hunk ./Distribution/Simple/Build.hs 150 - ++ [pathJoin [hsSourceDir exeBi, modPath]] + ++ [hsSourceDir exeBi `joinFileName` modPath] hunk ./Distribution/Simple/Build.hs 170 - do let targetDir = pathJoin [pref, hsSourceDir buildInfo] + do let targetDir = pref `joinFileName` (hsSourceDir buildInfo) hunk ./Distribution/Simple/Build.hs 186 - -dotToSep :: String -> String -dotToSep s = pathJoin (split '.' s) hunk ./Distribution/Simple/Configure.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Configure.hs 61 -import Distribution.Misc(Dependency(..), extensionsToGHCFlag, +import Distribution.Extension(extensionsToGHCFlag, hunk ./Distribution/Simple/Configure.hs 64 -import Distribution.Package(PackageDescription(..), PackageIdentifier(..), - BuildInfo(..), Executable(..), setupMessage, - emptyPackageDescription - ) -import Distribution.Simple.Utils (die, findBinary, splitFilePath, - joinFilenameDir, joinExt) -import Distribution.Package ( PackageIdentifier ) -import Distribution.Version (Version(..), VersionRange(..)) +import Distribution.Package (PackageIdentifier(..)) +import Distribution.PackageDescription( + PackageDescription(..), + BuildInfo(..), Executable(..), setupMessage) +import Distribution.Simple.Utils (die, withTempFile,maybeExit) +import Distribution.Version (Version(..), VersionRange(..), Dependency(..), + parseVersion, showVersion) hunk ./Distribution/Simple/Configure.hs 73 +import Data.Char (isSpace) hunk ./Distribution/Simple/Configure.hs 76 +import Distribution.Compat.FilePath (splitFilePath, joinFileName, joinFileExt) +import System.Cmd ( system ) hunk ./Distribution/Simple/Configure.hs 79 +import Distribution.Compat.ReadP +import Distribution.Compat.Directory (findExecutable) hunk ./Distribution/Simple/Configure.hs 84 +import Data.Char (isDigit) hunk ./Distribution/Simple/Configure.hs 87 + hunk ./Distribution/Simple/Configure.hs 149 - comp@(Compiler f' p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path maybe_hc_pkg pkg_descr + comp@(Compiler f' ver p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path maybe_hc_pkg pkg_descr hunk ./Distribution/Simple/Configure.hs 164 - message $ "Using compiler flavor: " ++ (show f') hunk ./Distribution/Simple/Configure.hs 165 + message $ "Compiler flavor: " ++ (show f') + message $ "Compiler version: " ++ showVersion ver hunk ./Distribution/Simple/Configure.hs 206 + ver <- configCompilerVersion flavor comp + hunk ./Distribution/Simple/Configure.hs 214 + compilerVersion=ver, hunk ./Distribution/Simple/Configure.hs 238 - res <- findBinary prog + res <- findExecutable prog hunk ./Distribution/Simple/Configure.hs 253 - hunk ./Distribution/Simple/Configure.hs 257 +configCompilerVersion :: CompilerFlavor -> FilePath -> IO Version +configCompilerVersion GHC compiler = + withTempFile "." "" $ \tmp -> do + maybeExit $ system (compiler ++ " --version >" ++ tmp) + str <- readFile tmp + case pCheck (readP_to_S parseVersion (dropWhile (not.isDigit) str)) of + [v] -> return v + _ -> die ("cannot determine version of " ++ compiler ++ ":\n " + ++ str) +configCompilerVersion _ _ = return Version{ versionBranch=[],versionTags=[] } + +pCheck rs = [ r | (r,s) <- rs, all isSpace s ] + hunk ./Distribution/Simple/Configure.hs 274 - pkgtool = dir `joinFilenameDir` pkgToolName `joinExt` ext + pkgtool = dir `joinFileName` pkgToolName `joinFileExt` ext hunk ./Distribution/Simple/Configure.hs 292 -hunitTests +hunitTests = [] +{- Too specific: hunk ./Distribution/Simple/Configure.hs 302 - simonMarGHCLoc + (Version [6,2,2] []) simonMarGHCLoc hunk ./Distribution/Simple/Configure.hs 306 +-} hunk ./Distribution/Simple/GHCPackageConfig.hs 23 -import Distribution.Package (PackageDescription(..), BuildInfo(..), - PackageIdentifier(..), showPackageId) +import Distribution.PackageDescription (PackageDescription(..), BuildInfo(..)) +import Distribution.Package (PackageIdentifier(..), showPackageId) hunk ./Distribution/Simple/GHCPackageConfig.hs 27 -import Distribution.Simple.Utils(pathJoin) hunk ./Distribution/Simple/GHCPackageConfig.hs 29 -import Control.Monad(liftM, unless) +import Control.Monad(unless) hunk ./Distribution/Simple/GHCPackageConfig.hs 31 -import System(getEnv) +import System.Environment(getEnv) hunk ./Distribution/Simple/GHCPackageConfig.hs 33 - +import Distribution.Compat.FilePath (joinFileName) hunk ./Distribution/Simple/GHCPackageConfig.hs 40 - return $ pathJoin [u, ".ghc-packages"] + return $ (u `joinFileName` ".ghc-packages") hunk ./Distribution/Simple/Install.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Install.hs 57 -import Distribution.Package (PackageDescription(..), BuildInfo(..), Executable(..), - showPackageId, setupMessage, hasLibs, withLib) +import Distribution.PackageDescription ( + PackageDescription(..), BuildInfo(..), Executable(..), + setupMessage, hasLibs, withLib) +import Distribution.Package (showPackageId) hunk ./Distribution/Simple/Install.hs 63 - mkLibName, pathJoin, - copyFile, die, createIfNotExists + mkLibName, + die, createIfNotExists hunk ./Distribution/Simple/Install.hs 69 -import Data.Maybe(maybeToList) +import Data.Maybe(maybeToList, fromMaybe) +import Distribution.Compat.Directory(copyFile) +import Distribution.Compat.FilePath(joinFileName) hunk ./Distribution/Simple/Install.hs 93 - do let targetDir = pathJoin [buildPref, - srcDir] + do let targetDir = buildPref `joinFileName` srcDir hunk ./Distribution/Simple/Install.hs 109 - sequence_ [copyFile (pathJoin [buildPref, hsSourceDir b, e]) (pathJoin [pref, e]) + sequence_ [copyFile (buildPref `joinFileName` (hsSourceDir b) `joinFileName` e) (pref `joinFileName` e) hunk ./Distribution/Simple/Install.hs 118 - = do moveSources (pathJoin [buildPref, hsSourceDir l]) pref (modules l) ["hi"] + = do moveSources (buildPref `joinFileName` (hsSourceDir l)) pref (modules l) ["hi"] hunk ./Distribution/Simple/Install.hs 127 - = moveSources (pathJoin [buildPref, hsSourceDir l]) pref (modules l) ["lhs", "hs"] + = moveSources (buildPref `joinFileName` (hsSourceDir l)) pref (modules l) ["lhs", "hs"] hunk ./Distribution/Simple/Install.hs 134 - pathJoin [ maybe (prefix lbi) id install_prefixM + (fromMaybe (prefix lbi) install_prefixM) `joinFileName` hunk ./Distribution/Simple/Install.hs 136 - , "lib" + "lib" `joinFileName` hunk ./Distribution/Simple/Install.hs 138 - , showPackageId (package pkg_descr) - ] + showPackageId (package pkg_descr) hunk ./Distribution/Simple/Install.hs 142 - pathJoin [(maybe (prefix lbi) id install_prefixM), "bin"] + (fromMaybe (prefix lbi) install_prefixM) `joinFileName` "bin" hunk ./Distribution/Simple/Register.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Register.hs 58 -import Distribution.Package (setupMessage, PackageDescription(..), PackageIdentifier(..)) +import Distribution.PackageDescription (setupMessage, PackageDescription(..)) +import Distribution.Package (PackageIdentifier(..)) hunk ./Distribution/Simple/SrcDist.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/SrcDist.hs 53 -import Distribution.Package(PackageDescription(..), BuildInfo(..), buildInfo, - setupMessage, showPackageId) -import Distribution.Simple.Configure(LocalBuildInfo) -import Distribution.Simple.Utils(moveSources, die, pathJoin, sequenceMap) +import Distribution.PackageDescription + (PackageDescription(..), BuildInfo(..), buildInfo, setupMessage) +import Distribution.Package (showPackageId) +import Distribution.Simple.Utils(moveSources, die, sequenceMap) hunk ./Distribution/Simple/SrcDist.hs 62 +import Distribution.Compat.FilePath (joinFileName) hunk ./Distribution/Simple/SrcDist.hs 79 - let targetDir = pathJoin [tmpDir, nameVersion pkg_descr] + let targetDir = tmpDir `joinFileName` (nameVersion pkg_descr) hunk ./Distribution/Simple/SrcDist.hs 87 - (pathJoin [targetPref, tarBallName pkg_descr]) + (targetPref `joinFileName` (tarBallName pkg_descr)) hunk ./Distribution/Simple/SrcDist.hs 98 - = do let pref = pathJoin [inPref, srcDir] + = do let pref = inPref `joinFileName` srcDir hunk ./Distribution/Simple/Utils.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Utils.hs 45 - splitFilePath, - joinFilenameDir, - joinExt, - pathInits, - isPathSeparator, - pathSeparatorStr, - split, hunk ./Distribution/Simple/Utils.hs 46 - findBinary, hunk ./Distribution/Simple/Utils.hs 54 - copyFile, - pathJoin, hunk ./Distribution/Simple/Utils.hs 57 - hasExt, hunk ./Distribution/Simple/Utils.hs 58 + dotToSep, + withTempFile, hunk ./Distribution/Simple/Utils.hs 68 + +import Distribution.Compat.RawSystem (rawSystem) +import Distribution.Compat.Exception (finally) hunk ./Distribution/Simple/Utils.hs 73 -import Data.List(nub, intersperse, findIndices) -import Data.Maybe(Maybe, listToMaybe, isNothing, fromJust, catMaybes) -import System.IO (hPutStr, stderr, hFlush, stdout -#ifdef __GLASGOW_HASKELL__ - , openBinaryFile, IOMode(..), hGetBuf, hPutBuf, hClose -#endif - ) +import Data.List(nub) +import Data.Maybe(Maybe, catMaybes) +import System.IO (hPutStr, stderr, hFlush, stdout) hunk ./Distribution/Simple/Utils.hs 78 -import Compat.RawSystem (rawSystem) -import Compat.Exception (bracket) -import System.Environment +#if defined(__GLASGOW_HASKELL__) && !defined(mingw32_TARGET_OS) +import System.Posix.Internals (c_getpid) +#endif hunk ./Distribution/Simple/Utils.hs 82 +import Distribution.Compat.FilePath + (splitFileName, splitFileExt, joinFileName, joinFileExt, + pathParents, pathSeparator) hunk ./Distribution/Simple/Utils.hs 87 - doesDirectoryExist, doesFileExist, removeFile, + doesDirectoryExist, doesFileExist, removeFile, hunk ./Distribution/Simple/Utils.hs 89 - -#ifdef mingw32_TARGET_OS -import System.Directory (getPermissions,setPermissions) -#endif - -import Foreign.Marshal (allocaBytes) hunk ./Distribution/Simple/Utils.hs 90 -#ifndef mingw32_TARGET_OS -import System.Posix.Files (getFileStatus, accessTime, modificationTime, setFileTimes, fileMode, setFileMode) -#endif +import Distribution.Compat.Directory (copyFile,findExecutable) hunk ./Distribution/Simple/Utils.hs 94 -#endif - --- ----------------------------------------------------------------------------- --- Pathname-related utils - --- | Split the path into (directory, filename sans extension, extension) -splitFilePath :: FilePath -> (String, String, String) -splitFilePath p = - case pre of - [] -> (reverse real_dir, reverse suf, []) - (_:pre') -> (reverse real_dir, reverse pre', reverse suf) - where -#ifdef mingw32_TARGET_OS - (path,drive) = break (== ':') (reverse p) -#else - (path,drive) = (reverse p,"") -#endif - (file,dir) = break isPathSeparator path - (suf,pre) = case file of - ".." -> ("..", "") - _ -> break (== '.') file - - real_dir = case dir of - [] -> "."++drive - [_] -> pathSeparatorStr++drive - (_:dir') -> dir'++drive - --- | Join extension to file path -joinExt :: FilePath -> String -> String -joinExt path "" = path -joinExt path ext = path++'.':ext - --- |Not exported. Does this file have the given extension? -hasExt :: FilePath -- ^Does this file - -> String -- ^Have this extension? - -> Bool -hasExt f testExt = let (_, _, realExt) = splitFilePath f - in testExt == realExt - --- Join file name to directory -joinFilenameDir :: String -> String -> FilePath -joinFilenameDir dir "" = dir -joinFilenameDir dir fname = dir++pathSeparator:fname - --- |Get this path and all its parents. -pathInits :: FilePath -> [FilePath] -pathInits p = - map ((++) root') (dropEmptyPath $ inits path') - where -#ifdef mingw32_TARGET_OS - (root,path) = case break (== ':') p of - (path, "") -> ("",path) - (root,_:path) -> (root++":",path) -#else - (root,path) = ("",p) -#endif - (root',path') = case path of - (c:path'') | isPathSeparator c -> (root++pathSeparatorStr,path'') - _ -> (root,path) - - dropEmptyPath ("":paths) = paths - dropEmptyPath paths = paths - - inits :: String -> [String] - inits [] = [""] - inits cs = - case pre of - "." -> inits suf - ".." -> map (joinFilenameDir pre) (dropEmptyPath $ inits suf) - _ -> "" : map (joinFilenameDir pre) (inits suf) - where - (pre,suf) = case break isPathSeparator cs of - (pre',"") -> (pre', "") - (pre',_:suf') -> (pre',suf') - -isPathSeparator :: Char -> Bool -isPathSeparator ch = -#ifdef mingw32_TARGET_OS - ch == '/' || ch == '\\' -#else - ch == '/' -#endif - -pathSeparator :: Char -#ifdef mingw32_TARGET_OS -pathSeparator = '\\' -#else -pathSeparator = '/' -#endif - -pathSeparatorStr :: String -pathSeparatorStr = [pathSeparator] - -split :: Char -> String -> [String] -split c s = case rest of - [] -> [chunk] - _:rest' -> chunk : split c rest' - where (chunk, rest) = break (==c) s - --- ToDo: add cacheing? -findBinary :: String -> IO (Maybe FilePath) -findBinary binary = do - path <- getEnv "PATH" - search (parsePath path) - where - search :: [FilePath] -> IO (Maybe FilePath) - search [] = return Nothing - search (d:ds) = do - let path = d `joinFilenameDir` binary `joinExt` exeSuffix - b <- doesFileExist path - if b then return (Just path) - else search ds - -exeSuffix :: String -#ifdef mingw32_TARGET_OS -exeSuffix = "exe" -#else -exeSuffix = "" -#endif - -parsePath :: String -> [FilePath] -parsePath path = split pathSep path - where -#ifdef mingw32_TARGET_OS - pathSep = ';' -#else - pathSep = ':' hunk ./Distribution/Simple/Utils.hs 106 - r <- findBinary prog + r <- findExecutable prog hunk ./Distribution/Simple/Utils.hs 152 - = mapM_ (createIfNotExists False) (pathInits file) - --- |Give a list of lists breaking apart elements who match the given criteria --- mySplit '.' "foo.bar.bang" => ["foo","bar","bang"] :: [[Char]] -mySplit :: Eq a => a -> [a] -> [[a]] -mySplit a l = let (upto, rest) = break (== a) l - in if null rest - then [upto] - else upto:(mySplit a (tail rest)) - --- |Find the last slash and remove it and everything after it. Turns --- Foo\/Bar.lhs into Foo -removeFilename :: FilePath -> FilePath -removeFilename path - = case findIndices (== pathSeparator) path of - [] -> path - l -> fst $ splitAt (maximum l) path - --- |If this filename doesn't end in the path separator, add it. -maybeAddSep :: FilePath -> FilePath -maybeAddSep [] = [] -maybeAddSep p = if isPathSeparator (last p) then p else p ++ pathSeparatorStr - --- |If this filename ends in the path separator, remove it. -maybeRemoveSep :: FilePath -> FilePath -maybeRemoveSep [] = [] -maybeRemoveSep p = if isPathSeparator (last p) then init p else p + = mapM_ (createIfNotExists False) (tail (pathParents file)) hunk ./Distribution/Simple/Utils.hs 175 -moduleToPossiblePaths searchPref s possibleSuffixes - = let splitted = mySplit '.' s - lastElem = last splitted - pref = if (not $ null $ init splitted) - then maybeAddSep (pathJoin (init splitted)) - else "" - in [(maybeAddSep searchPref) ++ pref ++ x - | x <- map (lastElem++) (map ("."++)possibleSuffixes)] - +moduleToPossiblePaths searchPref s possibleSuffixes = + let fname = searchPref `joinFileName` (dotToSep s) + in [fname `joinFileExt` ext | ext <- possibleSuffixes] hunk ./Distribution/Simple/Utils.hs 179 +dotToSep :: String -> String +dotToSep = map dts + where + dts '.' = pathSeparator + dts c = c hunk ./Distribution/Simple/Utils.hs 192 -moveSources pref _targetDir sources searchSuffixes - = do let targetDir = maybeAddSep _targetDir - createIfNotExists True targetDir +moveSources pref targetDir sources searchSuffixes + = do createIfNotExists True targetDir hunk ./Distribution/Simple/Utils.hs 201 - $ nub [(removeFilename $ targetDir ++ x) - | x <- sourceLocsNoPref, (removeFilename x /= "")] + $ nub [fst (splitFileName (targetDir `joinFileName` x)) + | x <- sourceLocsNoPref, fst (splitFileName x) /= "."] hunk ./Distribution/Simple/Utils.hs 204 - sequence_ [copyFile x (pathJoin [targetDir, y]) + sequence_ [copyFile x (targetDir `joinFileName` y) hunk ./Distribution/Simple/Utils.hs 219 + hunk ./Distribution/Simple/Utils.hs 224 -mkLibName pref lib = pathJoin [pref, ("libHS" ++ lib ++ ".a")] - --- | Create a path from a list of path elements -pathJoin :: [String] -> FilePath -pathJoin = concat . intersperse pathSeparatorStr - - -copyPermissions :: FilePath -> FilePath -> IO () -#ifndef mingw32_TARGET_OS -copyPermissions src dest - = do srcStatus <- getFileStatus src - setFileMode dest (fileMode srcStatus) -#else -copyPermissions src dest - = getPermissions src >>= setPermissions dest -#endif - - -copyFileTimes :: FilePath -> FilePath -> IO () -#ifndef mingw32_TARGET_OS -copyFileTimes src dest - = do st <- getFileStatus src - let atime = accessTime st - mtime = modificationTime st - setFileTimes dest atime mtime -#else -copyFileTimes src dest - = return () -#endif - --- |Preserves permissions and, if possible, atime+mtime -copyFile :: FilePath -> FilePath -> IO () -copyFile src dest - | dest == src = fail "copyFile: source and destination are the same file" -#if (!(defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 600)) - | otherwise = do readFile src >>= writeFile dest - try (copyPermissions src dest) - return () -#else - | otherwise = bracket (openBinaryFile src ReadMode) hClose $ \hSrc -> - bracket (openBinaryFile dest WriteMode) hClose $ \hDest -> - do allocaBytes bufSize $ \buffer -> copyContents hSrc hDest buffer - try (copyPermissions src dest) - try (copyFileTimes src dest) - return () - where bufSize = 1024 - copyContents hSrc hDest buffer - = do count <- hGetBuf hSrc buffer bufSize - when (count > 0) $ do hPutBuf hDest buffer count - copyContents hSrc hDest buffer -#endif +mkLibName pref lib = pref `joinFileName` ("libHS" ++ lib ++ ".a") hunk ./Distribution/Simple/Utils.hs 271 - return $ filter ((flip hasExt) extension) allFiles + return $ filter hasExt allFiles + where + hasExt f = snd (splitFileExt f) == extension hunk ./Distribution/Simple/Utils.hs 277 + + +-- ----------------------------------------------------------------------------- +-- * temporary file names +-- ----------------------------------------------------------------------------- + +-- use a temporary filename that doesn't already exist. +-- NB. *not* secure (we don't atomically lock the tmp file we get) +withTempFile :: FilePath -> String -> (FilePath -> IO a) -> IO a +withTempFile tmp_dir extn action + = do x <- getProcessID + findTempName tmp_dir x + where + findTempName tmp_dir x + = do let filename = ("tmp" ++ show x) `joinFileExt` extn + path = tmp_dir `joinFileName` filename + b <- doesFileExist filename + if b then findTempName tmp_dir (x+1) + else action filename `finally` try (removeFile filename) + +#ifdef mingw32_HOST_OS +foreign import ccall unsafe "_getpid" getProcessID :: IO Int -- relies on Int == Int32 on Windows +#elif defined(__GLASGOW_HASKELL__) +getProcessID :: IO Int +getProcessID = System.Posix.Internals.c_getpid >>= return . fromIntegral +#else +#error ToDo: getProcessID +#endif hunk ./Distribution/Simple/Utils.hs 327 - - TestLabel "splitFilePath" $ TestList - ["simpleCase" ~: ("c:\\foo", "bar", "txt") ~=? (splitFilePath "c:\\foo\\bar.txt"), - "dotInDirName" ~: ("\\foo.txt", "bar", "") ~=? (splitFilePath "\\foo.txt\\bar"), - "justName" ~: (".", "bar", "") ~=? (splitFilePath "bar"), - "justExt" ~: (".", "", "txt") ~=? (splitFilePath ".txt"), - "rootDir" ~: ("\\", "foo", "") ~=? (splitFilePath "\\foo"), - "noFile" ~: ("\\foo\\bar", "", "") ~=? (splitFilePath "\\foo\\bar\\"), - "parentDir" ~: (".", "..", "") ~=? (splitFilePath ".."), - "curDir" ~: (".", "", "") ~=? (splitFilePath "."), - "root" ~: ("\\", "", "") ~=? (splitFilePath "\\"), - "curDirDrive" ~: ("c:.", "", "") ~=? (splitFilePath "c:."), - "rootDrive1" ~: ("c:\\", "", "") ~=? (splitFilePath "c:\\"), - "rootDrive2" ~: ("c:.", "", "") ~=? (splitFilePath "c:"), - "rootDrive2" ~: ("c:.", "test", "txt") ~=? (splitFilePath "c:test.txt") - ], - TestLabel "joinFilenameDir&joinExt" $ TestList - ["simpleCase" ~: ("\\foo\\bar.txt") ~=? ("\\foo" `joinFilenameDir` ("bar" `joinExt` "txt")), - "justDir" ~: ("\\foo") ~=? ("\\foo" `joinFilenameDir` ("" `joinExt` "")), - "justExt" ~: (".\\.txt") ~=? ("." `joinFilenameDir` ("" `joinExt` "txt")), - "curDir" ~: (".") ~=? ("." `joinFilenameDir` ("" `joinExt` "")), - "root" ~: ("\\") ~=? ("\\" `joinFilenameDir` ("" `joinExt` "")) - ], - - TestLabel "pathInits" $ TestList - ["simpleCase" ~: ["c:\\foo","c:\\foo\\bar.txt"] ~=? (pathInits "c:\\foo\\bar.txt"), - "justName" ~: ["bar.txt"] ~=? (pathInits "bar.txt"), - "driveAndName1" ~: ["c:bar.txt"] ~=? (pathInits "c:bar.txt"), - "driveAndName2" ~: ["c:\\bar.txt"] ~=? (pathInits "c:\\bar.txt"), - "locDir" ~: ["bar.txt"] ~=? (pathInits ".\\bar.txt"), - "midLocDir" ~: ["foo","foo\\bar.txt"] ~=? (pathInits "foo\\.\\bar.txt"), - "withParentDir1"~: ["..\\foo"] ~=? (pathInits "..\\foo"), - "withParentDir2"~: ["foo\\..\\bar", "foo\\..\\bar\\baz"] ~=? (pathInits "foo\\..\\bar\\baz"), - "parentDir" ~: [] ~=? (pathInits ".."), - "rootFile" ~: ["\\bar.txt"] ~=? (pathInits "\\bar.txt"), - "curDir" ~: [] ~=? (pathInits "."), - "root" ~: [] ~=? (pathInits "\\") - ] hunk ./Distribution/Simple/Utils.hs 339 - - TestLabel "splitFilePath" $ TestList - ["simpleCase" ~: ("/foo", "bar", "txt") ~=? (splitFilePath "/foo/bar.txt"), - "dotInDirName" ~: ("/foo.txt", "bar", "") ~=? (splitFilePath "/foo.txt/bar"), - "justName" ~: (".", "bar", "") ~=? (splitFilePath "bar"), - "justExt" ~: (".", "", "txt") ~=? (splitFilePath ".txt"), - "rootDir" ~: ("/", "foo", "") ~=? (splitFilePath "/foo"), - "noFile" ~: ("/foo/bar", "", "") ~=? (splitFilePath "/foo/bar/"), - "parentDir" ~: (".", "..", "") ~=? (splitFilePath ".."), - "curDir" ~: (".", "", "") ~=? (splitFilePath "."), - "root" ~: ("/", "", "") ~=? (splitFilePath "/"), - "hasExt" ~: True ~=? (hasExt "foo/bang.hs" "hs") - ], - - TestLabel "joinFilenameDir&joinExt" $ TestList - ["simpleCase" ~: ("/foo/bar.txt") ~=? ("/foo" `joinFilenameDir` ("bar" `joinExt` "txt")), - "justDir" ~: ("/foo") ~=? ("/foo" `joinFilenameDir` ("" `joinExt` "")), - "justExt" ~: ("./.txt") ~=? ("." `joinFilenameDir` ("" `joinExt` "txt")), - "curDir" ~: (".") ~=? ("." `joinFilenameDir` ("" `joinExt` "")), - "root" ~: ("/") ~=? ("/" `joinFilenameDir` ("" `joinExt` "")) - ], hunk ./Distribution/Simple/Utils.hs 340 - TestLabel "pathInits" $ TestList - ["simpleCase" ~: ["/foo","/foo/bar.txt"] ~=? (pathInits "/foo/bar.txt"), - "justName" ~: ["bar.txt"] ~=? (pathInits "bar.txt"), - "locDir" ~: ["bar.txt"] ~=? (pathInits "./bar.txt"), - "midLocDir" ~: ["foo","foo/bar.txt"] ~=? (pathInits "foo/./bar.txt"), - "rootFile" ~: ["/bar.txt"] ~=? (pathInits "/bar.txt"), - "withParentDir1"~: ["../foo"] ~=? (pathInits "../foo"), - "withParentDir2"~: ["foo/../bar", "foo/../bar/baz"] ~=? (pathInits "foo/../bar/baz"), - "parentDir" ~: [] ~=? (pathInits ".."), - "curDir" ~: [] ~=? (pathInits "."), - "root" ~: [] ~=? (pathInits "/") - ], hunk ./Distribution/Version.hs 1 +{-# OPTIONS -cpp -fglasgow-exts #-} hunk ./Distribution/Version.hs 5 --- Copyright : Isaac Jones 2003-2004 +-- Copyright : Isaac Jones, Simon Marlow 2003-2004 hunk ./Distribution/Version.hs 11 --- Explanation: Represents and parses versions like Nov-2003, 1.2-4, etc. +-- Versions for packages, based on the 'Version' datatype. hunk ./Distribution/Version.hs 45 - -- * The Version type - Version(..), - hunk ./Distribution/Version.hs 46 + Version(..), hunk ./Distribution/Version.hs 50 - -- ** Version ranges + -- * Version ranges hunk ./Distribution/Version.hs 57 + + -- * Dependencies + Dependency(..), + hunk ./Distribution/Version.hs 65 + +#if __GLASGOW_HASKELL__ >= 603 +import Data.Version ( Version(..), showVersion, parseVersion ) +#endif hunk ./Distribution/Version.hs 74 -import Compat.ReadP +import Distribution.Compat.ReadP hunk ./Distribution/Version.hs 82 + +#if __GLASGOW_HASKELL__ < 603 + +-- Code copied from Data.Version in GHC 6.3+ : + +-- These #ifdefs are necessary because this code might be compiled as +-- part of ghc/lib/compat, and hence might be compiled by an older version +-- of GHC. In which case, we might need to pick up ReadP from +-- Distribution.Compat.ReadP, because the version in +-- Text.ParserCombinators.ReadP doesn't have all the combinators we need. +#if __GLASGOW_HASKELL__ <= 602 +import Distribution.Compat.ReadP +#else +import Text.ParserCombinators.ReadP +#endif + +#if __GLASGOW_HASKELL__ < 602 +import Data.Dynamic ( Typeable(..), TyCon, mkTyCon, mkAppTy ) +#else +import Data.Typeable ( Typeable ) +#endif + +import Data.List ( intersperse ) +import Control.Monad ( liftM ) +import Data.Char ( isDigit, isAlphaNum ) hunk ./Distribution/Version.hs 109 -A 'Version' represents the version of a software entity. +A 'Version' represents the version of a software entity. hunk ./Distribution/Version.hs 111 -An instance 'Eq' is provided, which implements exact equality modulo -reordering of the tags in the 'versionTags' field. +An instance of 'Eq' is provided, which implements exact equality +modulo reordering of the tags in the 'versionTags' field. hunk ./Distribution/Version.hs 114 -The interpretation of ordering is dependent on the entity being -versioned, and perhaps the application. For example, simple branch -ordering is probably sufficient for many uses (see the 'versionBranch' -field), but some versioning schemes may include pre-releases which -have tags @"pre1"@, @"pre2"@, and so on, and these would need to be -taken into account when determining ordering. In some cases, date +An instance of 'Ord' is also provided, which gives lexicographic +ordering on the 'versionBranch' fields (i.e. 2.1 > 2.0, 1.2.3 > 1.2.2, +etc.). This is expected to be sufficient for many uses, but note that +you may need to use a more specific ordering for your versioning +scheme. For example, some versioning schemes may include pre-releases +which have tags @"pre1"@, @"pre2"@, and so on, and these would need to +be taken into account when determining ordering. In some cases, date hunk ./Distribution/Version.hs 123 +The bottom line is, don't always assume that 'compare' and other 'Ord' +operations are the right thing for every 'Version'. hunk ./Distribution/Version.hs 126 -Similarly, concrete representations of versions may differ, so we leave -parsing and printing up to the application. +Similarly, concrete representations of versions may differ. One +possible concrete representation is provided (see 'showVersion' and +'parseVersion'), but depending on the application a different concrete +representation may be more appropriate. hunk ./Distribution/Version.hs 151 - deriving (Read,Show) + deriving (Read,Show +#if __GLASGOW_HASKELL__ >= 602 + ,Typeable +#endif + ) + +#if __GLASGOW_HASKELL__ < 602 +versionTc :: TyCon +versionTc = mkTyCon "Version" + +instance Typeable Version where + typeOf _ = mkAppTy versionTc [] +#endif hunk ./Distribution/Version.hs 169 + +instance Ord Version where + v1 `compare` v2 = versionBranch v1 `compare` versionBranch v2 hunk ./Distribution/Version.hs 174 --- Package Versions - --- Todo: maybe move this to Distribution.Package.Version? --- (package-specific versioning scheme). +-- A concrete representation of 'Version' hunk ./Distribution/Version.hs 176 --- Our conventions: --- --- * Versions are of the form A.B.C-tag1-tag2 +-- | Provides one possible concrete representation for 'Version'. For +-- a version with 'versionBranch' @= [1,2,3]@ and 'versionTags' +-- @= ["tag1","tag2"]@, the output will be @1.2.3-tag1-tag2@. hunk ./Distribution/Version.hs 180 --- * Ordering is determined by lexicographic ordering of the --- numeric part of the version only. - hunk ./Distribution/Version.hs 184 + +-- | A parser for versions in the format produced by 'showVersion'. +-- +#if __GLASGOW_HASKELL__ <= 602 +parseVersion :: ReadP r Version +#else +parseVersion :: ReadP Version +#endif +parseVersion = do branch <- sepBy1 (liftM read $ munch1 isDigit) (char '.') + tags <- many (char '-' >> munch1 isAlphaNum) + return Version{versionBranch=branch, versionTags=tags} + +#endif hunk ./Distribution/Version.hs 259 + +-- ------------------------------------------------------------ +-- * Package dependencies +-- ------------------------------------------------------------ + +data Dependency = Dependency String VersionRange + deriving (Read, Show, Eq) hunk ./Distribution/Version.hs 295 - --- ----------------------------------------------------------- --- |Parse any kind of version -parseVersion :: ReadP r Version -parseVersion = do branch <- sepBy1 (liftM read $ munch1 isDigit) (char '.') - tags <- many (char '-' >> munch1 isAlphaNum) - return Version{versionBranch=branch, versionTags=tags} hunk ./Makefile 1 -GHCFLAGS= --make -Wall -cpp +GHCFLAGS= --make -W -fno-warn-unused-matches -cpp +# later: -Wall hunk ./Setup.description 6 -Modules: Distribution.Package, Distribution.Version, - Distribution.Misc, Distribution.Setup, - Distribution.PreProcess, Distribution.PreProcess.Unlit, - Distribution.InstalledPackageInfo, - Distribution.Make, Distribution.Simple, - Distribution.Simple.Build, - Distribution.Simple.Install, Distribution.Simple.SrcDist, - Distribution.Simple.Configure, Distribution.Simple.Utils, - Distribution.Simple.Register, - Distribution.Simple.GHCPackageConfig, - Distribution.GetOpt, - Compat.ReadP, Compat.H98, Compat.Exception, Compat.RawSystem +Modules: + Distribution.Compat.Error, + Distribution.Compat.Exception, + Distribution.Compat.RawSystem, + Distribution.Compat.ReadP, + Distribution.Compat.FilePath, + Distribution.Compat.Directory, + Distribution.Simple, + Distribution.Simple.Build, + Distribution.Simple.Install, + Distribution.Simple.Utils, + Distribution.Simple.Register, + Distribution.Simple.Configure, + Distribution.Simple.SrcDist, + Distribution.Simple.GHCPackageConfig, + Distribution.GetOpt, + Distribution.Version, + Distribution.Setup, + Distribution.PreProcess.Unlit, + Distribution.License, + Distribution.Extension, + Distribution.PackageDescription, + Distribution.Package, + Distribution.InstalledPackageInfo, + Distribution.ParseUtils, + Distribution.Make, + Distribution.PreProcess hunk ./Distribution/Compat/Directory.hs 23 +#ifndef mingw32_TARGET_OS hunk ./Distribution/Compat/Directory.hs 26 +#endif hunk ./Distribution/Simple/Utils.hs 1 -{-# OPTIONS -cpp #-} +{-# OPTIONS -cpp -fffi #-} addfile ./Distribution/Compat/FilePath.hs hunk ./Distribution/Compat/FilePath.hs 1 +{-# OPTIONS -cpp #-} +module Distribution.Compat.FilePath + ( -- * File path + FilePath + , splitFileName + , splitFileExt + , splitFilePath + , joinFileName + , joinFileExt + , joinPaths + , changeFileExt + , isRootedPath + , isAbsolutePath + + , pathParents + , commonParent + + -- * Search path + , parseSearchPath + , mkSearchPath + + -- * Separators + , isPathSeparator + , pathSeparator + , searchPathSeparator + ) where + +#if !__GLASGOW_HASKELL__ || __GLASGOW_HASKELL__ >= 603 + +import System.FilePath + +#else /* to end of file... */ + +#include "config.h" + +import Data.List(intersperse) + +-------------------------------------------------------------- +-- * FilePath +-------------------------------------------------------------- + +-- | Split the path into directory and file name +-- +-- Examples: +-- +-- \[Posix\] +-- +-- > splitFileName "/" == ("/", "") +-- > splitFileName "/foo/bar.ext" == ("/foo", "bar.ext") +-- > splitFileName "bar.ext" == (".", "bar.ext") +-- > splitFileName "/foo/." == ("/foo", ".") +-- > splitFileName "/foo/.." == ("/foo", "..") +-- +-- \[Windows\] +-- +-- > splitFileName "\\" == ("\\", "") +-- > splitFileName "c:\\foo\\bar.ext" == ("c:\\foo", "bar.ext") +-- > splitFileName "bar.ext" == (".", "bar.ext") +-- > splitFileName "c:\\foo\\." == ("c:\\foo", ".") +-- > splitFileName "c:\\foo\\.." == ("c:\\foo", "..") +-- +-- The first case in the above examples returns an empty file name. +-- This is a special case because the \"\/\" (\"\\\\\" on Windows) +-- path doesn\'t refer to an object (file or directory) which resides +-- within a directory. +splitFileName :: FilePath -> (String, String) +splitFileName p = (reverse (path2++drive), reverse fname) + where +#ifdef mingw32_TARGET_OS + (path,drive) = break (== ':') (reverse p) +#else + (path,drive) = (reverse p,"") +#endif + (fname,path1) = break isPathSeparator path + path2 = case path1 of + [] -> "." + [_] -> path1 -- don't remove the trailing slash if + -- there is only one character + (c:path) | isPathSeparator c -> path + _ -> path1 + +-- | Split the path into file name and extension. If the file doesn\'t have extension, +-- the function will return empty string. The extension doesn\'t include a leading period. +-- +-- Examples: +-- +-- > splitFileExt "foo.ext" == ("foo", "ext") +-- > splitFileExt "foo" == ("foo", "") +-- > splitFileExt "." == (".", "") +-- > splitFileExt ".." == ("..", "") +splitFileExt :: FilePath -> (String, String) +splitFileExt p = + case pre of + [] -> (p, []) + (_:pre) -> (reverse (pre++path), reverse suf) + where + (fname,path) = break isPathSeparator (reverse p) + (suf,pre) | fname == "." || fname == ".." = (fname,"") + | otherwise = break (== '.') fname + +-- | Split the path into directory, file name and extension. +-- The function is an optimized version of the following equation: +-- +-- > splitFilePath path = (dir,name,ext) +-- > where +-- > (dir,basename) = splitFileName path +-- > (name,ext) = splitFileExt basename +splitFilePath :: FilePath -> (String, String, String) +splitFilePath p = + case pre of + [] -> (reverse real_dir, reverse suf, []) + (_:pre) -> (reverse real_dir, reverse pre, reverse suf) + where +#ifdef mingw32_TARGET_OS + (path,drive) = break (== ':') (reverse p) +#else + (path,drive) = (reverse p,"") +#endif + (file,dir) = break isPathSeparator path + (suf,pre) = case file of + ".." -> ("..", "") + _ -> break (== '.') file + + real_dir = case dir of + [] -> '.':drive + [_] -> pathSeparator:drive + (_:dir) -> dir++drive + +-- | The 'joinFileName' function is the opposite of 'splitFileName'. +-- It joins directory and file names to form complete file path. +-- +-- The general rule is: +-- +-- > dir `joinFileName` basename == path +-- > where +-- > (dir,basename) = splitFileName path +-- +-- There might be an exeptions to the rule but in any case the +-- reconstructed path will refer to the same object (file or directory). +-- An example exception is that on Windows some slashes might be converted +-- to backslashes. +joinFileName :: String -> String -> FilePath +joinFileName "" fname = fname +joinFileName "." fname = fname +joinFileName dir "" = dir +joinFileName dir fname + | isPathSeparator (last dir) = dir++fname + | otherwise = dir++pathSeparator:fname + +-- | The 'joinFileExt' function is the opposite of 'splitFileExt'. +-- It joins file name and extension to form complete file path. +-- +-- The general rule is: +-- +-- > filename `joinFileExt` ext == path +-- > where +-- > (filename,ext) = splitFileExt path +joinFileExt :: String -> String -> FilePath +joinFileExt path "" = path +joinFileExt path ext = path ++ '.':ext + +-- | Given a directory path \"dir\" and a file\/directory path \"rel\", +-- returns a merged path \"full\" with the property that +-- (cd dir; do_something_with rel) is equivalent to +-- (do_something_with full). If the \"rel\" path is an absolute path +-- then the returned path is equal to \"rel\" +joinPaths :: FilePath -> FilePath -> FilePath +joinPaths path1 path2 + | isRootedPath path2 = path2 + | otherwise = +#ifdef mingw32_TARGET_OS + case path2 of + d:':':path2' | take 2 path1 == [d,':'] -> path1 `joinFileName` path2' + | otherwise -> path2 + _ -> path1 `joinFileName` path2 +#else + path1 `joinFileName` path2 +#endif + +-- | Changes the extension of a file path. +changeFileExt :: FilePath -- ^ The path information to modify. + -> String -- ^ The new extension (without a leading period). + -- Specify an empty string to remove an existing + -- extension from path. + -> FilePath -- ^ A string containing the modified path information. +changeFileExt path ext = joinFileExt name ext + where + (name,_) = splitFileExt path + +-- | On Unix and Macintosh the 'isRootedPath' function is a synonym to 'isAbsolutePath'. +-- The difference is important only on Windows. The rooted path must start from the root +-- directory but may not include the drive letter while the absolute path always includes +-- the drive letter and the full file path. +isRootedPath :: FilePath -> Bool +isRootedPath (c:_) | isPathSeparator c = True +#ifdef mingw32_TARGET_OS +isRootedPath (_:':':c:_) | isPathSeparator c = True -- path with drive letter +#endif +isRootedPath _ = False + +-- | Returns True if this path\'s meaning is independent of any OS +-- "working directory", False if it isn\'t. +isAbsolutePath :: FilePath -> Bool +#ifdef mingw32_TARGET_OS +isAbsolutePath (_:':':c:_) | isPathSeparator c = True +#else +isAbsolutePath (c:_) | isPathSeparator c = True +#endif +isAbsolutePath _ = False + +-- | Gets this path and all its parents. +-- The function is useful in case if you want to create +-- some file but you aren\'t sure whether all directories +-- in the path exists or if you want to search upward for some file. +-- +-- Some examples: +-- +-- \[Posix\] +-- +-- > pathParents "/" == ["/"] +-- > pathParents "/dir1" == ["/", "/dir1"] +-- > pathParents "/dir1/dir2" == ["/", "/dir1", "/dir1/dir2"] +-- > pathParents "dir1" == [".", "dir1"] +-- > pathParents "dir1/dir2" == [".", "dir1", "dir1/dir2"] +-- +-- In the above examples \"\/\" isn\'t included in the list +-- because you can\'t create root directory. +-- +-- \[Windows\] +-- +-- > pathParents "c:" == ["c:."] +-- > pathParents "c:\\" == ["c:\\"] +-- > pathParents "c:\\dir1" == ["c:\\", "c:\\dir1"] +-- > pathParents "c:\\dir1\\dir2" == ["c:\\", "c:\\dir1", "c:\\dir1\\dir2"] +-- > pathParents "c:dir1" == ["c:.","c:dir1"] +-- > pathParents "dir1\\dir2" == [".", "dir1", "dir1\\dir2"] +-- +-- Note that if the file is relative then the the current directory (\".\") +-- will be explicitly listed. +pathParents :: FilePath -> [FilePath] +pathParents p = + root'' : map ((++) root') (dropEmptyPath $ inits path') + where +#ifdef mingw32_TARGET_OS + (root,path) = case break (== ':') p of + (path, "") -> ("",path) + (root,_:path) -> (root++":",path) +#else + (root,path) = ("",p) +#endif + (root',root'',path') = case path of + (c:path) | isPathSeparator c -> (root++[pathSeparator],root++[pathSeparator],path) + _ -> (root ,root++"." ,path) + + dropEmptyPath ("":paths) = paths + dropEmptyPath paths = paths + + inits :: String -> [String] + inits [] = [""] + inits cs = + case pre of + "." -> inits suf + ".." -> map (joinFileName pre) (dropEmptyPath $ inits suf) + _ -> "" : map (joinFileName pre) (inits suf) + where + (pre,suf) = case break isPathSeparator cs of + (pre,"") -> (pre, "") + (pre,_:suf) -> (pre,suf) + +-- | Given a list of file paths, returns the longest common parent. +commonParent :: [FilePath] -> Maybe FilePath +commonParent [] = Nothing +commonParent paths@(p:ps) = + case common Nothing "" p ps of +#ifdef mingw32_TARGET_OS + Nothing | all (not . isAbsolutePath) paths -> + let + getDrive (d:':':_) ds + | not (d `elem` ds) = d:ds + getDrive _ ds = ds + in + case foldr getDrive [] paths of + [] -> Just "." + [d] -> Just [d,':'] + _ -> Nothing +#else + Nothing | all (not . isAbsolutePath) paths -> Just "." +#endif + mb_path -> mb_path + where + common i acc [] ps = checkSep i acc ps + common i acc (c:cs) ps + | isPathSeparator c = removeSep i acc cs [] ps + | otherwise = removeChar i acc c cs [] ps + + checkSep i acc [] = Just (reverse acc) + checkSep i acc ([]:ps) = Just (reverse acc) + checkSep i acc ((c1:p):ps) + | isPathSeparator c1 = checkSep i acc ps + checkSep i acc ps = i + + removeSep i acc cs pacc [] = + common (Just (reverse (pathSeparator:acc))) (pathSeparator:acc) cs pacc + removeSep i acc cs pacc ([] :ps) = Just (reverse acc) + removeSep i acc cs pacc ((c1:p):ps) + | isPathSeparator c1 = removeSep i acc cs (p:pacc) ps + removeSep i acc cs pacc ps = i + + removeChar i acc c cs pacc [] = common i (c:acc) cs pacc + removeChar i acc c cs pacc ([] :ps) = i + removeChar i acc c cs pacc ((c1:p):ps) + | c == c1 = removeChar i acc c cs (p:pacc) ps + removeChar i acc c cs pacc ps = i + +-------------------------------------------------------------- +-- * Search path +-------------------------------------------------------------- + +-- | The function splits the given string to substrings +-- using the 'searchPathSeparator'. +parseSearchPath :: String -> [FilePath] +parseSearchPath path = split searchPathSeparator path + where + split :: Char -> String -> [String] + split c s = + case rest of + [] -> [chunk] + _:rest' -> chunk : split c rest' + where + (chunk, rest) = break (==c) s + +-- | The function concatenates the given paths to form a +-- single string where the paths are separated with 'searchPathSeparator'. +mkSearchPath :: [FilePath] -> String +mkSearchPath paths = concat (intersperse [searchPathSeparator] paths) + + +-------------------------------------------------------------- +-- * Separators +-------------------------------------------------------------- + +-- | Checks whether the character is a valid path separator for the host platform. +-- The valid character is a 'pathSeparator' but since the Windows operating system +-- also accepts a backslash (\"\\\") the function also checks for \"\/\" on this platform. +isPathSeparator :: Char -> Bool +isPathSeparator ch = +#ifdef mingw32_TARGET_OS + ch == '/' || ch == '\\' +#else + ch == '/' +#endif + +-- | Provides a platform-specific character used to separate directory levels in a +-- path string that reflects a hierarchical file system organization. +-- The separator is a slash (\"\/\") on Unix and Macintosh, and a backslash (\"\\\") on the +-- Windows operating system. +pathSeparator :: Char +#ifdef mingw32_TARGET_OS +pathSeparator = '\\' +#else +pathSeparator = '/' +#endif + +-- | A platform-specific character used to separate search path strings in +-- environment variables. The separator is a colon (\":\") on Unix and Macintosh, +-- and a semicolon (\";\") on the Windows operating system. +searchPathSeparator :: Char +#ifdef mingw32_TARGET_OS +searchPathSeparator = ';' +#else +searchPathSeparator = ':' +#endif + +#endif hunk ./TODO 2 - +** make debian watchfile +** postinst, test, copy? +** multiple libraries? +** find a real test case that uses preprocessors +** sync w/ GHC distro +** add noregister and nopostinst flags to install? hunk ./TODO 9 +*** --user flag to unregister hunk ./TODO 20 -** integrate w/ GHC distro hunk ./TODO 31 -** find a real test case that uses a preprocessor hunk ./TODO 45 -*** Make runhugs stuff work move ./Makefile ./Makefile.upstream hunk ./Distribution/GetOpt.hs 1 ------------------------------------------------------------------------------ --- | --- Module : Distribution.GetOpt --- Copyright : (c) Sven Panne Oct. 1996 (small changes Feb. 2003) --- License : BSD-style (see the file libraries/base/LICENSE) --- --- Maintainer : libraries@haskell.org --- Stability : experimental --- Portability : portable --- --- Edited by Isaac Jones to allow non-options to pass through. --- --- This library provides facilities for parsing the command-line options --- in a standalone program. It is essentially a Haskell port of the GNU --- @getopt@ library. --- ------------------------------------------------------------------------------ - -{- -Sven Panne Oct. 1996 (small -changes Dec. 1997) - -Two rather obscure features are missing: The Bash 2.0 non-option hack -(if you don't already know it, you probably don't want to hear about -it...) and the recognition of long options with a single dash -(e.g. '-help' is recognised as '--help', as long as there is no short -option 'h'). - -Other differences between GNU's getopt and this implementation: - -* To enforce a coherent description of options and arguments, there - are explanation fields in the option/argument descriptor. - -* Error messages are now more informative, but no longer POSIX - compliant... :-( - -And a final Haskell advertisement: The GNU C implementation uses well -over 1100 lines, we need only 195 here, including a 46 line example! -:-) --} - -module Distribution.GetOpt ( - -- * GetOpt - getOpt, - usageInfo, - ArgOrder(..), - OptDescr(..), - ArgDescr(..), - - -- * Example - - -- $example - ) where - -import Prelude -import Data.List ( isPrefixOf ) - --- |What to do with options following non-options -data ArgOrder a - = RequireOrder -- ^ no option processing after first non-option - | Permute -- ^ freely intersperse options and non-options - | ReturnInOrder (String -> a) -- ^ wrap non-options into options - -{-| -Each 'OptDescr' describes a single option. - -The arguments to 'Option' are: - -* list of short option characters - -* list of long option strings (without \"--\") - -* argument descriptor - -* explanation of option for user --} -data OptDescr a = -- description of a single options: - Option [Char] -- list of short option characters - [String] -- list of long option strings (without "--") - (ArgDescr a) -- argument descriptor - String -- explanation of option for user - --- |Describes whether an option takes an argument or not, and if so --- how the argument is injected into a value of type @a@. -data ArgDescr a - = NoArg a -- ^ no argument expected - | ReqArg (String -> a) String -- ^ option requires argument - | OptArg (Maybe String -> a) String -- ^ optional argument - -data OptKind a -- kind of cmd line arg (internal use only): - = Opt a -- an option - | UnreqOpt String -- an un-recognized option - | NonOpt String -- a non-option - | EndOfOpts -- end-of-options marker (i.e. "--") - | OptErr String -- something went wrong... - --- | Return a string describing the usage of a command, derived from --- the header (first argument) and the options described by the --- second argument. -usageInfo :: String -- header - -> [OptDescr a] -- option descriptors - -> String -- nicely formatted decription of options -usageInfo header optDescr = unlines (header:table) - where (ss,ls,ds) = (unzip3 . map fmtOpt) optDescr - table = zipWith3 paste (sameLen ss) (sameLen ls) ds - paste x y z = " " ++ x ++ " " ++ y ++ " " ++ z - sameLen xs = flushLeft ((maximum . map length) xs) xs - flushLeft n xs = [ take n (x ++ repeat ' ') | x <- xs ] - -fmtOpt :: OptDescr a -> (String,String,String) -fmtOpt (Option sos los ad descr) = (sepBy ',' (map (fmtShort ad) sos), - sepBy ',' (map (fmtLong ad) los), - descr) - where sepBy _ [] = "" - sepBy _ [x] = x - sepBy ch (x:xs) = x ++ ch:' ':sepBy ch xs - -fmtShort :: ArgDescr a -> Char -> String -fmtShort (NoArg _ ) so = "-" ++ [so] -fmtShort (ReqArg _ ad) so = "-" ++ [so] ++ " " ++ ad -fmtShort (OptArg _ ad) so = "-" ++ [so] ++ "[" ++ ad ++ "]" - -fmtLong :: ArgDescr a -> String -> String -fmtLong (NoArg _ ) lo = "--" ++ lo -fmtLong (ReqArg _ ad) lo = "--" ++ lo ++ "=" ++ ad -fmtLong (OptArg _ ad) lo = "--" ++ lo ++ "[=" ++ ad ++ "]" - -{-| -Process the command-line, and return the list of values that matched -(and those that didn\'t). The arguments are: - -* The order requirements (see 'ArgOrder') - -* The option descriptions (see 'OptDescr') - -* The actual command line arguments (presumably got from - 'System.Environment.getArgs'). - -'getOpt' returns a triple, consisting of the argument values, a list -of non-option (commands, files, etc), a list of options that didn\'t -match, and a list of error messages.-} - -getOpt :: ArgOrder a -- non-option handling - -> [OptDescr a] -- option descriptors - -> [String] -- the commandline arguments - -> ([a],[String], [String] ,[String]) -- (options,non-options,unrecognized,error messages) -getOpt _ _ [] = ([],[],[],[]) -getOpt ordering optDescr (arg:args) = procNextOpt opt ordering - where procNextOpt (Opt o) _ = (o:os,xs,ur,es) - procNextOpt (UnreqOpt u) _ = (os,xs,u:ur,es) - procNextOpt (NonOpt x) RequireOrder = ([],x:rest,ur,[]) - procNextOpt (NonOpt x) Permute = (os,x:xs,ur,es) - procNextOpt (NonOpt x) (ReturnInOrder f) = (f x :os, xs,ur,es) - procNextOpt EndOfOpts RequireOrder = ([],rest,ur,[]) - procNextOpt EndOfOpts Permute = ([],rest,ur,[]) - procNextOpt EndOfOpts (ReturnInOrder f) = (map f rest,[],ur,[]) - procNextOpt (OptErr e) _ = (os,xs,ur,e:es) - - (opt,rest) = getNext arg args optDescr - (os,xs,ur,es) = getOpt ordering optDescr rest - --- take a look at the next cmd line arg and decide what to do with it -getNext :: String -> [String] -> [OptDescr a] -> (OptKind a,[String]) -getNext ('-':'-':[]) rest _ = (EndOfOpts,rest) -getNext ('-':'-':xs) rest optDescr = longOpt xs rest optDescr -getNext ('-': x :xs) rest optDescr = shortOpt x xs rest optDescr -getNext a rest _ = (NonOpt a,rest) - --- handle long option -longOpt :: String -> [String] -> [OptDescr a] -> (OptKind a,[String]) -longOpt ls rs optDescr = long ads arg rs - where (opt,arg) = break (=='=') ls - getWith p = [ o | o@(Option _ xs _ _) <- optDescr, x <- xs, opt `p` x ] - exact = getWith (==) - options = if null exact then getWith isPrefixOf else exact - ads = [ ad | Option _ _ ad _ <- options ] - optStr = ("--"++opt) - - long (_:_:_) _ rest = (errAmbig options optStr,rest) - long [NoArg a ] [] rest = (Opt a,rest) - long [NoArg _ ] ('=':_) rest = (errNoArg optStr,rest) - long [ReqArg _ d] [] [] = (errReq d optStr,[]) - long [ReqArg f _] [] (r:rest) = (Opt (f r),rest) - long [ReqArg f _] ('=':xs) rest = (Opt (f xs),rest) - long [OptArg f _] [] rest = (Opt (f Nothing),rest) - long [OptArg f _] ('=':xs) rest = (Opt (f (Just xs)),rest) - long _ _ rest = (UnreqOpt optStr,rest) - --- handle short option -shortOpt :: Char -> String -> [String] -> [OptDescr a] -> (OptKind a,[String]) -shortOpt y ys rs optDescr = short ads ys rs - where options = [ o | o@(Option ss _ _ _) <- optDescr, s <- ss, y == s ] - ads = [ ad | Option _ _ ad _ <- options ] - optStr = '-':[y] - - short (_:_:_) _ rest = (errAmbig options optStr,rest) - short (NoArg a :_) [] rest = (Opt a,rest) - short (NoArg a :_) xs rest = (Opt a,('-':xs):rest) - short (ReqArg _ d:_) [] [] = (errReq d optStr,[]) - short (ReqArg f _:_) [] (r:rest) = (Opt (f r),rest) - short (ReqArg f _:_) xs rest = (Opt (f xs),rest) - short (OptArg f _:_) [] rest = (Opt (f Nothing),rest) - short (OptArg f _:_) xs rest = (Opt (f (Just xs)),rest) - short [] [] rest = (UnreqOpt optStr,rest) - short [] xs rest = (UnreqOpt optStr,('-':xs):rest) - --- miscellaneous error formatting - -errAmbig :: [OptDescr a] -> String -> OptKind a -errAmbig ods optStr = OptErr (usageInfo header ods) - where header = "option `" ++ optStr ++ "' is ambiguous; could be one of:" - -errReq :: String -> String -> OptKind a -errReq d optStr = OptErr ("option `" ++ optStr ++ "' requires an argument " ++ d ++ "\n") - --- errUnrec :: String -> OptKind a --- errUnrec optStr = OptErr ("unrecognized option `" ++ optStr ++ "'\n") - -errNoArg :: String -> OptKind a -errNoArg optStr = OptErr ("option `" ++ optStr ++ "' doesn't allow an argument\n") - -{- ------------------------------------------------------------------------------------------ --- and here a small and hopefully enlightening example: - -data Flag = Verbose | Version | Name String | Output String | Arg String deriving Show - -options :: [OptDescr Flag] -options = - [Option ['v'] ["verbose"] (NoArg Verbose) "verbosely list files", - Option ['V','?'] ["version","release"] (NoArg Version) "show version info", - Option ['o'] ["output"] (OptArg out "FILE") "use FILE for dump", - Option ['n'] ["name"] (ReqArg Name "USER") "only dump USER's files"] - -out :: Maybe String -> Flag -out Nothing = Output "stdout" -out (Just o) = Output o - -test :: ArgOrder Flag -> [String] -> String -test order cmdline = case getOpt order options cmdline of - (o,n,[] ) -> "options=" ++ show o ++ " args=" ++ show n ++ "\n" - (_,_,errs) -> concat errs ++ usageInfo header options - where header = "Usage: foobar [OPTION...] files..." - --- example runs: --- putStr (test RequireOrder ["foo","-v"]) --- ==> options=[] args=["foo", "-v"] --- putStr (test Permute ["foo","-v"]) --- ==> options=[Verbose] args=["foo"] --- putStr (test (ReturnInOrder Arg) ["foo","-v"]) --- ==> options=[Arg "foo", Verbose] args=[] --- putStr (test Permute ["foo","--","-v"]) --- ==> options=[] args=["foo", "-v"] --- putStr (test Permute ["-?o","--name","bar","--na=baz"]) --- ==> options=[Version, Output "stdout", Name "bar", Name "baz"] args=[] --- putStr (test Permute ["--ver","foo"]) --- ==> option `--ver' is ambiguous; could be one of: --- -v --verbose verbosely list files --- -V, -? --version, --release show version info --- Usage: foobar [OPTION...] files... --- -v --verbose verbosely list files --- -V, -? --version, --release show version info --- -o[FILE] --output[=FILE] use FILE for dump --- -n USER --name=USER only dump USER's files ------------------------------------------------------------------------------------------ --} - -{- $example - -To hopefully illuminate the role of the different data -structures, here\'s the command-line options for a (very simple) -compiler: - -> module Opts where -> -> import GetOpt -- (not System.Console.GetOpt) -> import Data.Maybe ( fromMaybe ) -> -> data Flag -> = Verbose | Version -> | Input String | Output String | LibDir String -> deriving Show -> -> options :: [OptDescr Flag] -> options = -> [ Option ['v'] ["verbose"] (NoArg Verbose) "chatty output on stderr" -> , Option ['V','?'] ["version"] (NoArg Version) "show version number" -> , Option ['o'] ["output"] (OptArg outp "FILE") "output FILE" -> , Option ['c'] [] (OptArg inp "FILE") "input FILE" -> , Option ['L'] ["libdir"] (ReqArg LibDir "DIR") "library directory" -> ] -> -> inp,outp :: Maybe String -> Flag -> outp = Output . fromMaybe "stdout" -> inp = Input . fromMaybe "stdout" -> -> compilerOpts :: [String] -> IO ([Flag], [String], [String]) -> compilerOpts argv = -> case (getOpt Permute options argv) of -> (o,n,no,[] ) -> return (o,n,no) -> (_,_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) -> where header = "Usage: ic [OPTION...] files..." - --} rmfile ./Distribution/GetOpt.hs hunk ./Setup.description 21 - Distribution.GetOpt, addfile ./Makefile hunk ./Distribution/Compat/Directory.hs 6 -#if __GLASGOW_HASKELL__ < 603 +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Compat/Directory.hs 10 -#if __GLASGOW_HASKELL__ > 602 +#if !__GLASGOW_HASKELL__ || __GLASGOW_HASKELL__ > 602 hunk ./Distribution/Compat/RawSystem.hs 4 -#if (!(defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 600)) +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 602 hunk ./Distribution/Compat/RawSystem.hs 12 - -#if (!(defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 600)) +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 602 hunk ./Distribution/Compat/RawSystem.hs 15 - where esc arg = "\"" ++ arg ++ "\"" -- this is hideously broken, actually + where esc arg = "'" ++ arg ++ "'" -- this is hideously broken, actually hunk ./Distribution/Compat/ReadP.hs 77 -#if __GLASGOW_HASKELL__ >= 603 +#if __GLASGOW_HASKELL__ >= 603 || __HUGS__ hunk ./Distribution/Compat/ReadP.hs 196 ---(+++) :: ReadP a -> ReadP a -> ReadP a +--(+++) :: ReadP r a -> ReadP r a -> ReadP r a hunk ./Distribution/InstalledPackageInfo.hs 60 - parseFilePath, parseLibName, parseModuleName, - showFilePath, parseReadS, parseOptVersion ) + parseFilePathQ, parseLibNameQ, parseModuleNameQ, parsePackageNameQ, + showFilePath, parseReadS, parseOptVersion, parseQuoted) hunk ./Distribution/InstalledPackageInfo.hs 184 - text parsePackageName + text parsePackageNameQ hunk ./Distribution/InstalledPackageInfo.hs 225 - text parseModuleName + text parseModuleNameQ hunk ./Distribution/InstalledPackageInfo.hs 228 - text parseModuleName + text parseModuleNameQ hunk ./Distribution/InstalledPackageInfo.hs 231 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 234 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 237 - showFilePath parseLibName + showFilePath parseLibNameQ hunk ./Distribution/InstalledPackageInfo.hs 240 - text parseLibName + text parseLibNameQ hunk ./Distribution/InstalledPackageInfo.hs 243 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 246 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 249 - (text.showPackageId) parsePackageId + (text.showPackageId) parsePackageId' hunk ./Distribution/InstalledPackageInfo.hs 252 - text parseFilePath + text parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 255 - text parseFilePath + text parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 258 - text parseFilePath + text parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 261 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 264 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 267 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 270 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/InstalledPackageInfo.hs 274 +parsePackageId' = parseQuoted parsePackageId <++ parsePackageId hunk ./Distribution/PackageDescription.hs 260 - showTestedWith parseTestedWith + showTestedWith parseTestedWithQ hunk ./Distribution/PackageDescription.hs 271 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/PackageDescription.hs 281 - text parseModuleName + text parseModuleNameQ hunk ./Distribution/PackageDescription.hs 284 - text parseModuleName + text parseModuleNameQ hunk ./Distribution/PackageDescription.hs 287 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/PackageDescription.hs 290 - (text . show) parseExtension + (text . show) parseExtensionQ hunk ./Distribution/PackageDescription.hs 293 - text parseLibName + text parseLibNameQ hunk ./Distribution/PackageDescription.hs 296 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/PackageDescription.hs 299 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/PackageDescription.hs 302 - showFilePath parseFilePath + showFilePath parseFilePathQ hunk ./Distribution/ParseUtils.hs 49 - parseFilePath, parseLibName, - parseModuleName, parseReadS, parseDependency, parseOptVersion, - parseTestedWith, parseLicense, parseExtension, parseCommaList, + parseFilePathQ, parseLibNameQ, + parseModuleNameQ, parseDependency, parseOptVersion, + parsePackageNameQ, parseVersionRangeQ, + parseTestedWithQ, parseLicenseQ, parseExtensionQ, parseCommaList, hunk ./Distribution/ParseUtils.hs 54 - simpleField, listField, licenseField, optsField, + simpleField, listField, licenseField, optsField, + parseReadS, parseQuoted, hunk ./Distribution/ParseUtils.hs 146 - path <- runP lineNo name parseFilePath val + path <- runP lineNo name parseFilePathQ val hunk ./Distribution/ParseUtils.hs 149 - x <- runP lineNo name parseLicense val + x <- runP lineNo name parseLicenseQ val hunk ./Distribution/ParseUtils.hs 204 -parseModuleName :: ReadP r String -parseModuleName = do c <- satisfy isUpper - cs <- munch (\x -> isAlphaNum x || x `elem` "_'.") - return (c:cs) +parseModuleNameQ :: ReadP r String +parseModuleNameQ = parseQuoted mod <++ mod + where mod = do + c <- satisfy isUpper + cs <- munch (\x -> isAlphaNum x || x `elem` "_'.") + return (c:cs) hunk ./Distribution/ParseUtils.hs 211 -parseFilePath :: ReadP r FilePath -parseFilePath = parseReadS <++ (munch1 (\x -> isAlphaNum x || x `elem` "-+/_.")) +parseFilePathQ :: ReadP r FilePath +parseFilePathQ = parseReadS <++ (munch1 (\x -> isAlphaNum x || x `elem` "-+/_.")) hunk ./Distribution/ParseUtils.hs 218 -parseDependency = do name <- parsePackageName +parseDependency = do name <- parsePackageNameQ hunk ./Distribution/ParseUtils.hs 220 - ver <- parseVersionRange <++ return AnyVersion + ver <- parseVersionRangeQ <++ return AnyVersion hunk ./Distribution/ParseUtils.hs 223 + +parsePackageNameQ = parseQuoted parsePackageName <++ parsePackageName +parseVersionRangeQ = parseQuoted parseVersionRange <++ parseVersionRange hunk ./Distribution/ParseUtils.hs 228 -parseOptVersion = parseVersion <++ return noVersion - where noVersion = Version{ versionBranch=[], versionTags=[] } +parseOptVersion = parseQuoted ver <++ ver + where ver = parseVersion <++ return noVersion + noVersion = Version{ versionBranch=[], versionTags=[] } + +parseTestedWithQ :: ReadP r (CompilerFlavor,VersionRange) +parseTestedWithQ = parseQuoted tw <++ tw + where tw = do compiler <- parseReadS + skipSpaces + version <- parseVersionRange <++ return AnyVersion + skipSpaces + return (compiler,version) hunk ./Distribution/ParseUtils.hs 240 -parseTestedWith :: ReadP [(CompilerFlavor,VersionRange)] (CompilerFlavor,VersionRange) -parseTestedWith = do compiler <- parseReadS - skipSpaces - version <- parseVersionRange <++ return AnyVersion - skipSpaces - return (compiler,version) +parseLicenseQ :: ReadP r License +parseLicenseQ = parseQuoted parseReadS <++ parseReadS hunk ./Distribution/ParseUtils.hs 243 -parseLicense :: ReadP r License -parseLicense = parseReadS +-- urgh, we can't define optQuotes :: ReadP r a -> ReadP r a +-- because the "compat" version of ReadP isn't quite powerful enough. In +-- particular, the type of <++ is ReadP r r -> ReadP r a -> ReadP r a +-- Hence the trick above to make 'lic' polymorphic. hunk ./Distribution/ParseUtils.hs 248 -parseExtension :: ReadP r Extension -parseExtension = parseReadS +parseExtensionQ :: ReadP r Extension +parseExtensionQ = parseQuoted parseReadS <++ parseReadS hunk ./Distribution/ParseUtils.hs 251 -parseLibName :: ReadP r String -parseLibName = parseReadS <++ munch1 (\x -> not (isSpace x) && x /= ',') +parseLibNameQ :: ReadP r String +parseLibNameQ = parseReadS <++ munch1 (\x -> not (isSpace x) && x /= ',') hunk ./Distribution/ParseUtils.hs 258 + +parseQuoted :: ReadP r a -> ReadP r a +parseQuoted p = between (ReadP.char '"') (ReadP.char '"') p hunk ./Distribution/Simple/Configure.hs 57 -#if __GLASGOW_HASKELL__ < 603 +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Simple/Configure.hs 61 +import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..)) +import Distribution.Simple.Register (removeInstalledConfig) hunk ./Distribution/Simple/Configure.hs 94 --- |Data cached after configuration step. -data LocalBuildInfo = LocalBuildInfo { - prefix :: FilePath, - -- ^ The installation directory (eg. @/usr/local@, or - -- @C:/Program Files/foo-1.2@ on Windows. - compiler :: Compiler, - -- ^ The compiler we're building with - packageDeps :: [PackageIdentifier], - -- ^ Which packages we depend on, *exactly*, The - -- 'PackageDescription' specifies a set of build dependencies - -- that must be satisfied in terms of version ranges. This - -- field fixes those dependencies to the specific versions - -- available on this machine for this compiler. - executableDeps :: [(String,[PackageIdentifier])] - } - deriving (Show, Read, Eq) - hunk ./Distribution/Simple/Configure.hs 128 + removeInstalledConfig hunk ./Distribution/Simple/GHCPackageConfig.hs 25 -import Distribution.Simple.Configure (LocalBuildInfo(..)) +import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..)) hunk ./Distribution/Simple/Install.hs 53 -#if __GLASGOW_HASKELL__ < 603 +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Simple/Install.hs 61 -import Distribution.Simple.Configure(LocalBuildInfo(..)) +import Distribution.Simple.LocalBuildInfo(LocalBuildInfo(..)) hunk ./Distribution/Simple/Register.hs 50 + removeInstalledConfig, hunk ./Distribution/Simple/Register.hs 57 -import Distribution.Simple.Configure (LocalBuildInfo, compiler) +import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..)) +import Distribution.Simple.Install (mkLibDir) hunk ./Distribution/Simple/Register.hs 60 -import Distribution.PackageDescription (setupMessage, PackageDescription(..)) -import Distribution.Package (PackageIdentifier(..)) +import Distribution.PackageDescription (setupMessage, PackageDescription(..), + BuildInfo(..)) +import Distribution.Package (PackageIdentifier(..), showPackageId) +import Distribution.Version (Version(..)) +import Distribution.InstalledPackageInfo + (InstalledPackageInfo, showInstalledPackageInfo, + emptyInstalledPackageInfo) +import qualified Distribution.InstalledPackageInfo as IPI hunk ./Distribution/Simple/Register.hs 73 -import System.Directory(doesFileExist) +import System.Directory(doesFileExist, removeFile) +import System.IO (try) hunk ./Distribution/Simple/Register.hs 77 +import Data.Maybe (isNothing, fromJust) hunk ./Distribution/Simple/Register.hs 95 + if isNothing (library pkg_descr) + then do setupMessage "No package to register" pkg_descr + return () + else do hunk ./Distribution/Simple/Register.hs 101 - GHC -> do when userInst (GHC.maybeCreateLocalPackageConfig >> return() ) - localConf <- GHC.localPackageConfig - pkgConfWriteable <- GHC.canWriteLocalPackageConfig - when (userInst && (not pkgConfWriteable)) - (die ("--user flag passed, but cannot write to local package config: " - ++ localConf)) - instConfExists <- doesFileExist installedPkgConfigFile - unless instConfExists (writeInstalledConfig pkg_descr lbi) - rawSystemExit (compilerPkgTool (compiler lbi)) - (["--auto-ghci-libs", "--update-package", - "--input-file="++installedPkgConfigFile] - ++ (if userInst - then ["--config-file=" ++ localConf] - else [])) + GHC -> do + let ghc_63_plus = compilerVersion (compiler lbi) >= Version [6,3] [] + + config_flags <- + if userInst + then if ghc_63_plus + then return ["--user"] + else do + GHC.maybeCreateLocalPackageConfig + localConf <- GHC.localPackageConfig + pkgConfWriteable <- GHC.canWriteLocalPackageConfig + when (not pkgConfWriteable) $ userPkgConfErr localConf + return ["--config-file=" ++ localConf] + else return [] + + instConfExists <- doesFileExist installedPkgConfigFile + unless instConfExists (writeInstalledConfig pkg_descr lbi) + + let register_flags + | ghc_63_plus = ["register", installedPkgConfigFile] + | otherwise = ["--update-package", + "--input_file="++installedPkgConfigFile] + + rawSystemExit (compilerPkgTool (compiler lbi)) + (["--auto-ghci-libs"] + ++ register_flags + ++ config_flags) hunk ./Distribution/Simple/Register.hs 132 +userPkgConfErr local_conf = + die ("--user flag passed, but cannot write to local package config: " + ++ local_conf ) + hunk ./Distribution/Simple/Register.hs 139 - case compilerFlavor (compiler lbi) of - GHC -> do let pkg_config = mkGHCPackageConfig pkg_descr lbi - writeFile installedPkgConfigFile (showGHCPackageConfig pkg_config) + let hc = compiler lbi + case compilerFlavor hc of + GHC -> + let pkg_config + | compilerVersion hc >= Version [6,3] [] + = showInstalledPackageInfo (mkInstalledPackageInfo pkg_descr lbi) + | otherwise + = showGHCPackageConfig (mkGHCPackageConfig pkg_descr lbi) + in + writeFile installedPkgConfigFile ( pkg_config) hunk ./Distribution/Simple/Register.hs 152 +removeInstalledConfig :: IO () +removeInstalledConfig = try (removeFile installedPkgConfigFile) >> return () + hunk ./Distribution/Simple/Register.hs 157 + +-- ----------------------------------------------------------------------------- +-- Making the InstalledPackageInfo + +mkInstalledPackageInfo + :: PackageDescription + -> LocalBuildInfo + -> InstalledPackageInfo +mkInstalledPackageInfo pkg_descr lbi + = let + lib = fromJust (library pkg_descr) -- checked for Nothing earlier + in + emptyInstalledPackageInfo{ + IPI.package = package pkg_descr, + IPI.license = license pkg_descr, + IPI.copyright = copyright pkg_descr, + IPI.maintainer = maintainer pkg_descr, + IPI.author = author pkg_descr, + IPI.stability = stability pkg_descr, + IPI.homepage = homepage pkg_descr, + IPI.pkgUrl = pkgUrl pkg_descr, + IPI.description = description pkg_descr, + IPI.category = category pkg_descr, + IPI.exposed = True, + IPI.exposedModules = exposedModules lib, + IPI.hiddenModules = filter (`notElem` exposedModules lib) (modules lib), + IPI.importDirs = [mkLibDir pkg_descr lbi Nothing], + IPI.libraryDirs = [mkLibDir pkg_descr lbi Nothing], + IPI.hsLibraries = ["HS" ++ showPackageId (package pkg_descr)], + IPI.extraLibraries = extraLibs lib, + IPI.includeDirs = includeDirs lib, + IPI.includes = includes lib, + IPI.depends = packageDeps lbi, + IPI.extraHugsOpts = concat [opts | (Hugs,opts) <- options lib], + IPI.extraCcOpts = [], + IPI.extraLdOpts = [], + IPI.frameworkDirs = [], + IPI.extraFrameworks = [], + IPI.haddockInterfaces = [], + IPI.haddockHTMLs = [] + } hunk ./Distribution/Simple/Utils.hs 65 -#if __GLASGOW_HASKELL__ < 603 +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Simple/Utils.hs 78 -#if defined(__GLASGOW_HASKELL__) && !defined(mingw32_TARGET_OS) +#if (__GLASGOW_HASKELL__ || __HUGS__) && !defined(mingw32_TARGET_OS) hunk ./Distribution/Simple/Utils.hs 297 -#ifdef mingw32_HOST_OS -foreign import ccall unsafe "_getpid" getProcessID :: IO Int -- relies on Int == Int32 on Windows -#elif defined(__GLASGOW_HASKELL__) +#ifdef mingw32_TARGET_OS +foreign import ccall unsafe "_getpid" getProcessID :: IO Int + -- relies on Int == Int32 on Windows +#elif __GLASGOW_HASKELL__ || __HUGS__ hunk ./Distribution/Version.hs 66 -#if __GLASGOW_HASKELL__ >= 603 +#if !__GLASGOW_HASKELL__ || __GLASGOW_HASKELL__ >= 603 hunk ./Distribution/Version.hs 83 -#if __GLASGOW_HASKELL__ < 603 +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 hunk ./Makefile 1 +TOP=.. +include $(TOP)/mk/boilerplate.mk + +ALL_DIRS = \ + Distribution \ + Distribution/Simple \ + Distribution/PreProcess \ + Distribution/Compat + +PACKAGE = Cabal +VERSION = 1.0 + +# Distribution.PackageDescription requires mtl for the Error monad, +PACKAGE_DEPS = base mtl + +SRC_HADDOCK_OPTS += -t "Haskell Core Libraries (Cabal package)" + +include $(TOP)/mk/target.mk adddir ./test/A/c_src hunk ./test/A/Setup.description 5 -C-Sources: hello.c +C-Sources: hello.c, c_src/hello.c addfile ./test/A/c_src/hello.c hunk ./test/A/c_src/hello.c 1 +int foo () {return 9;} hunk ./Distribution/PackageDescription.hs 165 + extraLibDirs :: [String], hunk ./Distribution/PackageDescription.hs 181 + extraLibDirs = [], hunk ./Distribution/PackageDescription.hs 297 + , listField "extra-lib-dirs" + text parseLibName + extraLibDirs (\xs binfo -> binfo{extraLibDirs=xs}) hunk ./Distribution/Simple/GHCPackageConfig.hs 81 - library_dirs = [mkLibDir pkg_descr lbi Nothing], + library_dirs = (mkLibDir pkg_descr lbi Nothing : + maybe [] extraLibDirs (library pkg_descr)), hunk ./Distribution/PackageDescription.hs 422 + "Extra-Lib-Dirs: \"/usr/local/libs\"", hunk ./Distribution/PackageDescription.hs 465 + extraLibDirs = ["/usr/local/libs"], addfile ./test/A/C.testSuffix hunk ./test/A/C.testSuffix 1 +module C where +a = 42 :: Int + +main2 = print a hunk ./Distribution/PreProcess.hs 144 - let hsFiles = (filter (\x -> fst (splitFileExt x) == "hs") l) + let hsFiles = (filter (\x -> snd (splitFileExt x) == "hs") l) hunk ./Distribution/ModuleTest.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/ModuleTest.hs 44 -module Main where - +module Distribution.ModuleTest where +#ifdef DEBUG hunk ./Distribution/ModuleTest.hs 237 - +#endif hunk ./Distribution/ModuleTest.hs 237 -#endif + hunk ./Distribution/ModuleTest.hs 44 -module Distribution.ModuleTest where -#ifdef DEBUG +module Main where + hunk ./Distribution/ModuleTest.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/ModuleTest.hs 1 +{-# OPTIONS -cpp #-} hunk ./Distribution/ModuleTest.hs 44 -module Main where - +module Distribution.ModuleTest where +#ifdef DEBUG hunk ./Distribution/ModuleTest.hs 237 - +#endif hunk ./Makefile.upstream 120 - ghc $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:test/HUnit-1.0/src Distribution/ModuleTest -o moduleTest + ghc -main-is Distribution.ModuleTest.main $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:test/HUnit-1.0/src Distribution/ModuleTest -o moduleTest hunk ./Distribution/PackageDescription.hs 298 - text parseLibName + text parseLibNameQ hunk ./Distribution/PackageDescription.hs 483 - (runP 1 "license" parseLicense (show lVal)) + (runP 1 "license" parseLicenseQ (show lVal)) hunk ./Distribution/Simple/Register.hs 122 - "--input_file="++installedPkgConfigFile] + "--input-file="++installedPkgConfigFile] hunk ./Makefile 1 -TOP=.. -include $(TOP)/mk/boilerplate.mk - -ALL_DIRS = \ - Distribution \ - Distribution/Simple \ - Distribution/PreProcess \ - Distribution/Compat - -PACKAGE = Cabal -VERSION = 1.0 - -# Distribution.PackageDescription requires mtl for the Error monad, -PACKAGE_DEPS = base mtl - -SRC_HADDOCK_OPTS += -t "Haskell Core Libraries (Cabal package)" - -include $(TOP)/mk/target.mk rmfile ./Makefile move ./Makefile.upstream ./GNUmakefile hunk ./README 7 -* The Makefile wraps the standard Cabal setup script; the Makefile is - a convinience for bootstrapping the system. "sudo make install" - should handle HUnit, generate the setup script, configure, build, - install, and register it in a standard location. +* GNUmakefile is the one you're probably interested in. If you see + Makefile, it is probably from the fptools build tree, and it won't + work on its own. + +* The GNUmakefile wraps the standard Cabal setup script; the + GNUmakefile is a convinience for bootstrapping the system. "sudo + make install" should handle HUnit, generate the setup script, + configure, build, install, and register it in a standard location. hunk ./README 21 - The install target of the Makefile does everything in the right + The install target of the GNUmakefile does everything in the right addfile ./Distribution/Simple/LocalBuildInfo.hs hunk ./Distribution/Simple/LocalBuildInfo.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.LocalBuildInfo +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : GHC +-- +-- Definition of the LocalBuildInfo data type. + +{- All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.LocalBuildInfo ( LocalBuildInfo(..) ) + where + +import Distribution.Package (PackageIdentifier) +import Distribution.Setup (Compiler) + +-- |Data cached after configuration step. +data LocalBuildInfo = LocalBuildInfo { + prefix :: FilePath, + -- ^ The installation directory (eg. @/usr/local@, or + -- @C:/Program Files/foo-1.2@ on Windows. + compiler :: Compiler, + -- ^ The compiler we're building with + packageDeps :: [PackageIdentifier], + -- ^ Which packages we depend on, *exactly*, The + -- 'PackageDescription' specifies a set of build dependencies + -- that must be satisfied in terms of version ranges. This + -- field fixes those dependencies to the specific versions + -- available on this machine for this compiler. + executableDeps :: [(String,[PackageIdentifier])] + } + deriving (Show, Read, Eq) + hunk ./debian/changelog 1 -haskell-cabal (0.2-2) unstable; urgency=low +haskell-cabal (0.1-2) unstable; urgency=low hunk ./debian/changelog 3 - * Removed spurious depends on ghc5. Should close 279988. I'll close - that by hand once I'm sure. + * Some small fixes to package hunk ./debian/changelog 5 - -- Isaac Jones Sun, 7 Nov 2004 14:21:38 -0800 + -- Isaac Jones Tue, 7 Sep 2004 10:20:05 -0400 hunk ./debian/changelog 7 -haskell-cabal (0.2-1) unstable; urgency=low +haskell-cabal (0.1-1) unstable; urgency=low hunk ./debian/changelog 10 - * Includes cleanup of treatment of the local packages file - ~/.ghc-packages. Doesn't touch this file unless it's - necessary. (Closes: #278667 Closes: #279556). - * Some work on preprocessors. hunk ./debian/changelog 11 - -- Isaac Jones Tue, 2 Nov 2004 20:06:22 -0800 + -- Isaac Jones Sun, 1 Aug 2004 18:47:08 -0400 hunk ./debian/changelog 13 -haskell-cabal (0.1-4) unstable; urgency=low +haskell-cabal (0.0.1-2) unstable; urgency=low hunk ./debian/changelog 15 - * Added basic infrastructure for multiple targets, though - have not yet enabled it because it doesn't yet work upstream. + * Cleaned up scripts and name of binary. hunk ./debian/changelog 17 - -- John Goerzen Tue, 5 Oct 2004 19:45:27 -0500 + -- Isaac Jones Thu, 29 Jul 2004 10:37:31 -0400 hunk ./debian/changelog 19 -haskell-cabal (0.1-3) unstable; urgency=low +haskell-cabal (0.0.1-1) unstable; urgency=low hunk ./debian/changelog 21 - * Fixed old postinst, postrm scripts to do the right thing in more cases. + * Initial Release. hunk ./debian/changelog 23 - -- John Goerzen Tue, 5 Oct 2004 16:25:29 -0500 - -haskell-cabal (0.1-2) unstable; urgency=low - - * Install binary under /usr/lib/haskell-libraries/ghc6 in keeping - with new Haskell policy. - - -- John Goerzen Tue, 5 Oct 2004 15:56:03 -0500 - -haskell-cabal (0.1-1) unstable; urgency=low - - * Initial release. Closes: #275069. - - -- John Goerzen Tue, 05 Oct 2004 13:36:08 -0500 - + -- Isaac Jones Wed, 28 Jul 2004 22:29:38 -0400 hunk ./debian/control 4 -Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.2), ghc6 (<< 6.2.3) +Build-Depends: debhelper (>= 4.0.0), ghc6 (> 6.2) hunk ./debian/control 6 +Section: devel hunk ./debian/control 9 -Section: devel hunk ./debian/control 10 -Depends: ghc6 (>= 6.2.2), ghc6 (<< 6.2.3) hunk ./debian/control 11 - The Haskell Cabal is a system for building and installing Haskell - programs and libraries. It is aware of multiple different compilers - and can handle them without trouble. - . - This package will provide the infrastructure necessary to build - Cabalized packages on Debian machines, or to Debianize those packages. + the Cabal describes what a Haskell package is, how these packages + interact with the language, and what Haskell implementations must to + do to support packages. The Cabal also specifies some infrastructure + (code) that makes it easy for tool authors to build and distribute + conforming packages. hunk ./debian/copyright 4 -John Goerzen updated it for sid in October 5, 2004. +It was downloaded from http://www.haskell.org/cabal hunk ./debian/copyright 6 -It was downloaded from http://www.haskell.org/cabal/code.html +Upstream Author(s): Isaac, Marvin, Simon, etc. hunk ./debian/copyright 8 -Upstream Authors: Bjorn Bringert, Isaac Jones, Simon Marlow, -Martin Sjögren - hunk ./debian/copyright 10 -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * Neither the name of Isaac Jones nor the names of other - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +BSD-Like hunk ./debian/docs 2 -releaseNotes hunk ./debian/libghc6-cabal-dev.postinst 1 -#! /bin/sh -# postinst script for missingh -# -# see: dh_installdeb(1) - -set -e - -# summary of how this script can be called: -# * `configure' -# * `abort-upgrade' -# * `abort-remove' `in-favour' -# -# * `abort-deconfigure' `in-favour' -# `removing' -# -# for details, see http://www.debian.org/doc/debian-policy/ or -# the debian-policy package -# - -case "$1" in - configure) - /usr/lib/ghc-6.2.2/bin/ghc-pkg-6.2.2 -g --add-package \ - < /usr/share/doc/libghc6-cabal-dev/installed-pkg-config - ;; - - abort-upgrade|abort-remove|abort-deconfigure) - - ;; - - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac +#!/bin/sh -e hunk ./debian/libghc6-cabal-dev.postinst 3 -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. +ghc-pkg -g --add-package \ + < /usr/share/doc/libghc6-cabal-dev/installed-pkg-config hunk ./debian/libghc6-cabal-dev.postinst 7 - -exit 0 - - hunk ./debian/libghc6-cabal-dev.prerm 1 -#! /bin/sh -# prerm script for missingh -# -# see: dh_installdeb(1) - -set -e - -# summary of how this script can be called: -# * `remove' -# * `upgrade' -# * `failed-upgrade' -# * `remove' `in-favour' -# * `deconfigure' `in-favour' -# `removing' -# -# for details, see http://www.debian.org/doc/debian-policy/ or -# the debian-policy package - - -case "$1" in - remove|upgrade|deconfigure) - /usr/lib/ghc-6.2.2/bin/ghc-pkg-6.2.2 -r Cabal - rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.2/HSCabal*.o - -# install-info --quiet --remove /usr/info/missingh.info.gz - ;; - failed-upgrade) - ;; - *) - echo "prerm called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac +#!/bin/sh -e hunk ./debian/libghc6-cabal-dev.prerm 3 -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. +ghc-pkg -r Cabal +# ditch that ghci library: +rm /usr/lib/Cabal-0.1/HSCabal-0.1.o hunk ./debian/libghc6-cabal-dev.prerm 8 - -exit 0 - - hunk ./debian/rules 9 -GHCVERSION=6.2.2 -GHCPATH=/usr/lib/ghc-$(GHCVERSION)/bin -PATH:=$(GHCPATH):$(PATH) + hunk ./debian/rules 11 -export PATH hunk ./debian/rules 13 -LIBPATH=/usr/lib/haskell-packages/$(1) -PACKAGE=lib$(1)-cabal-dev -FLAVORS=ghc6 - -define build_flavor -echo BUILDING FOR $(1) --./setup clean -rm -f .*config* -./setup configure --prefix=$(LIBPATH) --with-compiler=/usr/bin/$(1) -./setup build -mkdir -p $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) -./setup install --install-prefix=$(CURDIR)/debian/$(PACKAGE)$(LIBPATH) -cp .installed-pkg-config $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE)/installed-pkg-config - -endef +CABAL_BIN=libghc6-cabal-dev hunk ./debian/rules 37 - make setup + make setup #bootstrap + ./setup configure --prefix=/usr --ghc hunk ./debian/rules 47 + ./setup build hunk ./debian/rules 58 - rm -f .*config* hunk ./debian/rules 65 + + # Add here commands to install the package into debian/$(CABAL_BIN) + mkdir -p $(CURDIR)/debian/$(CABAL_BIN)/usr/share/doc/$(CABAL_BIN) + ./setup install --install-prefix=$(CURDIR)/debian/$(CABAL_BIN)/usr + cp .installed-pkg-config $(CURDIR)/debian/$(CABAL_BIN)/usr/share/doc/$(CABAL_BIN)/installed-pkg-config hunk ./debian/rules 71 - $(foreach tgt,$(FLAVORS),$(call build_flavor,$(tgt))) hunk ./debian/rules 80 - dh_installchangelogs -a - dh_installdocs -a - dh_installexamples -a + dh_installchangelogs + dh_installdocs + dh_installexamples hunk ./debian/rules 93 - dh_installman -a - dh_link -a - dh_strip -a - dh_compress -a - dh_fixperms -a + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms hunk ./debian/rules 101 - dh_installdeb -a - dh_shlibdeps -a - dh_gencontrol -a - dh_md5sums -a - dh_builddeb -a + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb hunk ./debian/changelog 1 -haskell-cabal (0.1-2) unstable; urgency=low +haskell-cabal (0.2-3) unstable; urgency=low + + * added depends on posix (Closes: #280244). + + -- Isaac Jones Mon, 8 Nov 2004 07:01:53 -0800 + +haskell-cabal (0.2-2) unstable; urgency=low hunk ./debian/changelog 9 - * Some small fixes to package + * Removed spurious depends on ghc5. Should close 279988. I'll close + that by hand once I'm sure. hunk ./debian/changelog 12 - -- Isaac Jones Tue, 7 Sep 2004 10:20:05 -0400 + -- Isaac Jones Sun, 7 Nov 2004 14:21:38 -0800 hunk ./debian/changelog 14 -haskell-cabal (0.1-1) unstable; urgency=low +haskell-cabal (0.2-1) unstable; urgency=low hunk ./debian/changelog 17 + * Includes cleanup of treatment of the local packages file + ~/.ghc-packages. Doesn't touch this file unless it's + necessary. (Closes: #278667 Closes: #279556). + * Some work on preprocessors. + + -- Isaac Jones Tue, 2 Nov 2004 20:06:22 -0800 + +haskell-cabal (0.1-4) unstable; urgency=low + + * Added basic infrastructure for multiple targets, though + have not yet enabled it because it doesn't yet work upstream. + + -- John Goerzen Tue, 5 Oct 2004 19:45:27 -0500 + +haskell-cabal (0.1-3) unstable; urgency=low + + * Fixed old postinst, postrm scripts to do the right thing in more cases. + + -- John Goerzen Tue, 5 Oct 2004 16:25:29 -0500 hunk ./debian/changelog 37 - -- Isaac Jones Sun, 1 Aug 2004 18:47:08 -0400 +haskell-cabal (0.1-2) unstable; urgency=low hunk ./debian/changelog 39 -haskell-cabal (0.0.1-2) unstable; urgency=low + * Install binary under /usr/lib/haskell-libraries/ghc6 in keeping + with new Haskell policy. hunk ./debian/changelog 42 - * Cleaned up scripts and name of binary. + -- John Goerzen Tue, 5 Oct 2004 15:56:03 -0500 hunk ./debian/changelog 44 - -- Isaac Jones Thu, 29 Jul 2004 10:37:31 -0400 +haskell-cabal (0.1-1) unstable; urgency=low hunk ./debian/changelog 46 -haskell-cabal (0.0.1-1) unstable; urgency=low + * Initial release. Closes: #275069. hunk ./debian/changelog 48 - * Initial Release. + -- John Goerzen Tue, 05 Oct 2004 13:36:08 -0500 hunk ./debian/changelog 50 - -- Isaac Jones Wed, 28 Jul 2004 22:29:38 -0400 hunk ./debian/control 4 -Build-Depends: debhelper (>= 4.0.0), ghc6 (> 6.2) +Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.2), ghc6 (<< 6.2.3) hunk ./debian/control 6 -Section: devel hunk ./debian/control 8 +Section: devel hunk ./debian/control 10 +Depends: ghc6 (>= 6.2.2), ghc6 (<< 6.2.3) hunk ./debian/control 12 - the Cabal describes what a Haskell package is, how these packages - interact with the language, and what Haskell implementations must to - do to support packages. The Cabal also specifies some infrastructure - (code) that makes it easy for tool authors to build and distribute - conforming packages. + The Haskell Cabal is a system for building and installing Haskell + programs and libraries. It is aware of multiple different compilers + and can handle them without trouble. + . + This package will provide the infrastructure necessary to build + Cabalized packages on Debian machines, or to Debianize those packages. hunk ./debian/copyright 4 -It was downloaded from http://www.haskell.org/cabal +John Goerzen updated it for sid in October 5, 2004. hunk ./debian/copyright 6 -Upstream Author(s): Isaac, Marvin, Simon, etc. +It was downloaded from http://www.haskell.org/cabal/code.html hunk ./debian/copyright 8 +Upstream Authors: Bjorn Bringert, Isaac Jones, Simon Marlow, +Martin Sjögren + hunk ./debian/copyright 13 -BSD-Like +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. hunk ./debian/docs 2 +releaseNotes hunk ./debian/libghc6-cabal-dev.postinst 1 -#!/bin/sh -e +#! /bin/sh +# postinst script for missingh +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package +# + +case "$1" in + configure) + /usr/lib/ghc-6.2.2/bin/ghc-pkg-6.2.2 -g --add-package \ + < /usr/share/doc/libghc6-cabal-dev/installed-pkg-config + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac hunk ./debian/libghc6-cabal-dev.postinst 36 -ghc-pkg -g --add-package \ - < /usr/share/doc/libghc6-cabal-dev/installed-pkg-config +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. hunk ./debian/libghc6-cabal-dev.postinst 40 + +exit 0 + + hunk ./debian/libghc6-cabal-dev.prerm 1 -#!/bin/sh -e +#! /bin/sh +# prerm script for missingh +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + /usr/lib/ghc-6.2.2/bin/ghc-pkg-6.2.2 -r Cabal + rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.2/HSCabal*.o + +# install-info --quiet --remove /usr/info/missingh.info.gz + ;; + failed-upgrade) + ;; + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac hunk ./debian/libghc6-cabal-dev.prerm 35 -ghc-pkg -r Cabal -# ditch that ghci library: -rm /usr/lib/Cabal-0.1/HSCabal-0.1.o +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. hunk ./debian/libghc6-cabal-dev.prerm 39 + +exit 0 + + hunk ./debian/rules 9 - +GHCVERSION=6.2.2 +GHCPATH=/usr/lib/ghc-$(GHCVERSION)/bin +PATH:=$(GHCPATH):$(PATH) hunk ./debian/rules 13 +export PATH hunk ./debian/rules 16 -CABAL_BIN=libghc6-cabal-dev +LIBPATH=/usr/lib/haskell-packages/$(1) +PACKAGE=lib$(1)-cabal-dev +FLAVORS=ghc6 + +define build_flavor +echo BUILDING FOR $(1) +-./setup clean +rm -f .*config* +./setup configure --prefix=$(LIBPATH) --with-compiler=/usr/bin/$(1) +./setup build +mkdir -p $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) +./setup install --install-prefix=$(CURDIR)/debian/$(PACKAGE)$(LIBPATH) +cp .installed-pkg-config $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE)/installed-pkg-config + +endef hunk ./debian/rules 54 - make setup #bootstrap - ./setup configure --prefix=/usr --ghc + make setup hunk ./debian/rules 63 - ./setup build hunk ./debian/rules 73 + rm -f .*config* hunk ./debian/rules 81 - - # Add here commands to install the package into debian/$(CABAL_BIN) - mkdir -p $(CURDIR)/debian/$(CABAL_BIN)/usr/share/doc/$(CABAL_BIN) - ./setup install --install-prefix=$(CURDIR)/debian/$(CABAL_BIN)/usr - cp .installed-pkg-config $(CURDIR)/debian/$(CABAL_BIN)/usr/share/doc/$(CABAL_BIN)/installed-pkg-config hunk ./debian/rules 82 + $(foreach tgt,$(FLAVORS),$(call build_flavor,$(tgt))) hunk ./debian/rules 92 - dh_installchangelogs - dh_installdocs - dh_installexamples + dh_installchangelogs -a + dh_installdocs -a + dh_installexamples -a hunk ./debian/rules 105 - dh_installman - dh_link - dh_strip - dh_compress - dh_fixperms + dh_installman -a + dh_link -a + dh_strip -a + dh_compress -a + dh_fixperms -a hunk ./debian/rules 113 - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a + dh_md5sums -a + dh_builddeb -a hunk ./Distribution/Setup.hs 87 + | CopyCmd FilePath -- copy hunk ./Distribution/Simple/Install.hs 81 - -> Bool -- ^Install for user? hunk ./Distribution/Simple/Install.hs 82 -install buildPref pkg_descr lbi install_prefixM uInst = do +install buildPref pkg_descr lbi install_prefixM = do hunk ./Distribution/Simple/Install.hs 89 - Hugs -> do -- FIX (HUGS): fix 'die' checks commands below. - when uInst (die "Hugs cannot yet install user-only packages.") - withLib pkg_descr (\buildInfo@BuildInfo{hsSourceDir=srcDir} -> + Hugs -> do withLib pkg_descr (\buildInfo@BuildInfo{hsSourceDir=srcDir} -> hunk ./Distribution/Simple.hs 149 + CopyCmd mprefix -> return () hunk ./Distribution/Simple.hs 154 - install buildPref pkg_descr localbuildinfo mprefix uInst + -- FIX (HUGS): fix 'die' checks commands below. + when (compilerFlavor (compiler (localbuildinfo)) == Hugs && uInst) + (die "Hugs cannot yet install user-only packages.") + install buildPref pkg_descr localbuildinfo mprefix hunk ./Distribution/Setup.hs 54 - parseUnregisterArgs + parseUnregisterArgs, parseCopyArgs hunk ./Distribution/Setup.hs 87 - | CopyCmd FilePath -- copy + | CopyCmd (Maybe FilePath) -- copy hunk ./Distribution/Setup.hs 145 - sdistCmd, registerCmd, unregisterCmd] + copyCmd, sdistCmd, registerCmd, unregisterCmd] hunk ./Distribution/Setup.hs 279 - cmdDescription = "This is the long description for install.\nMulti-line!\n", + cmdDescription = "Unlike the copy command, 'install calls the register command.\nMulti-line!\n", hunk ./Distribution/Setup.hs 282 - "specify the directory in which to place installed files", + "[deprecated, use copy] specify the directory in which to place installed files", hunk ./Distribution/Setup.hs 291 +copyCmd :: Cmd a +copyCmd = Cmd { + cmdName = "copy", + cmdHelp = "Copy the files into the install locations.", + cmdDescription = "Does not call register, and allows a prefix at install time\nWithout the copy-prefix flag, configure determines location.\n", + cmdOptions = [cmd_help, + Option "" ["copy-prefix"] (ReqArg InstPrefix "DIR") + "specify the directory in which to place installed files" + ], + cmdAction = CopyCmd Nothing + } + +parseCopyArgs :: (Maybe FilePath) -> [String] -> [OptDescr a] -> + IO ((Maybe FilePath), [a], [String]) +parseCopyArgs cfg args customOpts = + case getCmdOpt copyCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp copyCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (updateCfg flags cfg, unliftFlags flags, args') + (_, _, errs) -> do mapM_ putStrLn errs + exitWith (ExitFailure 1) + where updateCfg (fl:flags) mprefix = updateCfg flags $ + case fl of + InstPrefix path -> Just path + Lift _ -> mprefix + _ -> error $ "Unexpected flag!" + updateCfg [] t = t + hunk ./Distribution/Setup.hs 334 - InstPrefix path -> (Just path, uFlag) + InstPrefix path -> error "--install-prefix is deprecated. Use copy command instead." hunk ./Distribution/Simple.hs 149 - CopyCmd mprefix -> return () + CopyCmd mprefix -> do + (mprefix, _, args) <- parseCopyArgs mprefix args [] + no_extra_flags args + localbuildinfo <- getPersistBuildConfig + install buildPref pkg_descr localbuildinfo mprefix + return () + hunk ./Distribution/Make.hs 136 - InstallCmd mprefix uInst -> do - ((mprefix,uInst), _, args) <- parseInstallArgs (mprefix,uInst) args [] + CopyCmd mprefix -> do + (mprefix, _, args) <- parseCopyArgs mprefix args [] hunk ./Distribution/Make.hs 141 + + InstallCmd mprefix uInst -> do + ((mprefix,uInst), _, args) <- parseInstallArgs (mprefix,uInst) args [] + no_extra_flags args + maybeExit $ system $ "make install" hunk ./Distribution/ModuleTest.hs 186 - TestLabel "package A: GHC and install-prefix" $ TestCase $ -- (uses above config) + TestLabel "package A: GHC and copy-prefix" $ TestCase $ -- (uses above config) hunk ./Distribution/ModuleTest.hs 188 - instRetCode <- system $ "./setup install --install-prefix=" ++ targetDir + instRetCode <- system $ "./setup copy --copy-prefix=" ++ targetDir hunk ./Distribution/ModuleTest.hs 191 + >>= assertBool "library doesn't exist" + assertEqual "install returned error code" ExitSuccess instRetCode, + TestLabel "package A: GHC and copy to configure loc." $ TestCase $ -- (uses above config) + do let targetDir = ",tmp2" + instRetCode <- system $ "./setup copy" + checkTargetDir ",tmp/lib/test-1.0/" [".hi"] + doesFileExist (",tmp/lib/test-1.0/" `joinFileName` "libHStest-1.0.a") hunk ./Distribution/Setup.hs 279 - cmdDescription = "Unlike the copy command, 'install calls the register command.\nMulti-line!\n", + cmdDescription = "Unlike the copy command, install calls the register command.\nIf you want to install into a location that is not what was\nspecified in the configure step, use the copy command.\n", hunk ./TODO 3 -** postinst, test, copy? +** postinst, test hunk ./TODO 6 -** sync w/ GHC distro -** add noregister and nopostinst flags to install? hunk ./Distribution/Simple/Configure.hs 234 -compilerBinaryName Hugs = "hugs" +compilerBinaryName Hugs = "ffihugs" hunk ./Distribution/Simple/Configure.hs 239 --- FIX (HUGS): This tool doesn't actually implement the HC-PKG --- spec. it does something different. -compilerPkgToolName Hugs = "hugs-package" +compilerPkgToolName Hugs = "hugs" -- FIX (HUGS): hugs-pkg does not yet exist addfile ./package.conf.in hunk ./package.conf.in 1 +name: PACKAGE +version: VERSION +license: BSD3 +maintainer: Isaac Jones +exposed: True + +exposed-modules: + Distribution.Extension, + Distribution.InstalledPackageInfo, + Distribution.License, + Distribution.Make, + Distribution.Package, + Distribution.PackageDescription, + Distribution.ParseUtils, + Distribution.PreProcess, + Distribution.Setup, + Distribution.Simple, + Distribution.Version, + Distribution.PreProcess.Unlit, + Distribution.Simple.Build, + Distribution.Simple.Configure, + Distribution.Simple.GHCPackageConfig, + Distribution.Simple.Install, + Distribution.Simple.LocalBuildInfo, + Distribution.Simple.Register, + Distribution.Simple.SrcDist, + Distribution.Simple.Utils + +hidden-modules: + Distribution.Compat.Error, + Distribution.Compat.Exception, + Distribution.Compat.RawSystem, + Distribution.Compat.FilePath, + Distribution.Compat.Directory, + Distribution.Compat.ReadP + +import-dirs: IMPORT_DIR +library-dirs: LIB_DIR +hs-libraries: "HSCabal" +extra-libs: + +include-dirs: +includes: +depends: base, mtl +extra-hugs-opts: +extra-cc-opts: +extra-ld-opts: +framework-dirs: +extra-frameworks: +haddock-interfaces: +haddock-html: + hunk ./TODO 18 +** It would be useful to have alternatives in dependencies, e.g. HGL + could depend on X11 | Win32. + +** How about replacing the modules field with hidden-modules, to avoid + repetition? + +** Rename moveSources hunk ./Distribution/PackageDescription.hs 58 - allModules, + libModules, + exeModules, + biModules, hunk ./Distribution/PackageDescription.hs 135 --- |Get all the module names from this package -allModules :: PackageDescription -> [String] -allModules PackageDescription{executables=execs, library=lib} - = (concatMap (\e -> modules $ buildInfo e) execs) - ++ (maybe [] modules lib) +-- |All the modules listed in this BuildInfo. +biModules :: BuildInfo -> [String] +biModules BuildInfo{executableModules=exeMods, + exposedModules=expMods, + hiddenModules=hMods} + = exeMods ++ hMods ++ expMods hunk ./Distribution/PackageDescription.hs 142 +-- |Get all the module names from the libraries in this package +libModules :: PackageDescription -> [String] +libModules PackageDescription{library=lib} + = (maybe [] exposedModules lib) + ++ (maybe [] hiddenModules lib) + +-- |Get all the module names from the exes in this package +exeModules :: PackageDescription -> [String] +exeModules PackageDescription{executables=execs} + = concatMap (\e -> executableModules $ buildInfo e) execs + hunk ./Distribution/PackageDescription.hs 166 - Just l -> if null (cSources l) && null (modules l) + Just l -> if null (cSources l) + && null (hiddenModules l) + && null (exposedModules l) hunk ./Distribution/PackageDescription.hs 173 +-- Consider refactoring into executable and library versions. hunk ./Distribution/PackageDescription.hs 175 - buildDepends :: [Dependency], - modules :: [String], - exposedModules :: [String], - cSources :: [FilePath], - hsSourceDir :: FilePath, - extensions :: [Extension], - extraLibs :: [String], - extraLibDirs :: [String], - includeDirs :: [FilePath], - includes :: [FilePath], - options :: [(CompilerFlavor,[String])] + buildDepends :: [Dependency], + executableModules :: [String], -- Only used for executables + exposedModules :: [String], -- Only used for libs + hiddenModules :: [String], -- Only used for libs + cSources :: [FilePath], + hsSourceDir :: FilePath, + extensions :: [Extension], + extraLibs :: [String], + extraLibDirs :: [String], + includeDirs :: [FilePath], + includes :: [FilePath], + options :: [(CompilerFlavor,[String])] hunk ./Distribution/PackageDescription.hs 192 - buildDepends = [], - modules = [], - exposedModules = [], -- Only used for libs - cSources = [], - hsSourceDir = currentDir, - extensions = [], - extraLibs = [], - extraLibDirs = [], - includeDirs = [], - includes = [], - options = [] + buildDepends = [], + executableModules = [], -- Only used for executables + exposedModules = [], -- Only used for libs + hiddenModules = [], -- Only used for libs + cSources = [], + hsSourceDir = currentDir, + extensions = [], + extraLibs = [], + extraLibDirs = [], + includeDirs = [], + includes = [], + options = [] hunk ./Distribution/PackageDescription.hs 301 - , listField "modules" + , listField "hidden-modules" hunk ./Distribution/PackageDescription.hs 303 - modules (\xs binfo -> binfo{modules=xs}) + hiddenModules (\xs binfo -> binfo{hiddenModules=xs}) hunk ./Distribution/PackageDescription.hs 307 + , listField "executable-modules" + text parseModuleNameQ + exposedModules (\xs binfo -> binfo{executableModules=xs}) hunk ./Distribution/PackageDescription.hs 437 - "Modules: Distribution.Package, Distribution.Version,", - " Distribution.Simple.GHCPackageConfig", + "Hidden-Modules: Distribution.Package, Distribution.Version,", + " Distribution.Simple.GHCPackageConfig", hunk ./Distribution/PackageDescription.hs 453 - "Modules: Foo1, Util, Main", + "Executable-Modules: Foo1, Util, Main", hunk ./Distribution/PackageDescription.hs 479 - modules = ["Distribution.Package","Distribution.Version", - "Distribution.Simple.GHCPackageConfig"], - + hiddenModules = ["Distribution.Package","Distribution.Version", + "Distribution.Simple.GHCPackageConfig"], + executableModules=[], hunk ./Distribution/PackageDescription.hs 495 - modules = ["Foo1","Util","Main"], + executableModules = ["Foo1","Util","Main"], hunk ./Distribution/PreProcess.hs 47 - BuildInfo(..), Executable(..)) + BuildInfo(..), Executable(..), biModules) hunk ./Distribution/PreProcess.hs 113 - buildInfoSources BuildInfo{modules=mods, hsSourceDir=dir} suffixes - = sequence [moduleToFilePath dir modu suffixes | modu <- mods] >>= return . concat + buildInfoSources bi@BuildInfo{hsSourceDir=dir} suffixes + = sequence [moduleToFilePath dir modu suffixes | modu <- biModules bi] + >>= return . concat hunk ./Distribution/PreProcess.hs 127 - = removePreprocessed (r `joinFileName` (hsSourceDir bi)) (modules bi) suff + = removePreprocessed (r `joinFileName` (hsSourceDir bi)) (biModules bi) suff hunk ./Distribution/Simple/Build.hs 53 - setupMessage, withLib, Executable(..)) + setupMessage, withLib, Executable(..), + libModules) hunk ./Distribution/Simple/Build.hs 104 - ++ maybe [] modules (library pkg_descr)) + ++ (libModules pkg_descr)) hunk ./Distribution/Simple/Build.hs 122 - ++ modules buildInfo' - unless (null (modules buildInfo')) $ + ++ (exposedModules buildInfo' ++ hiddenModules buildInfo') + unless (null (hiddenModules buildInfo' ++ exposedModules buildInfo')) $ hunk ./Distribution/Simple/Build.hs 135 - | x <- modules buildInfo' ] + | x <- exposedModules buildInfo' ++ hiddenModules buildInfo' ] hunk ./Distribution/Simple/Build.hs 170 - withLib pkg_descr (\buildInfo@BuildInfo{hsSourceDir=srcDir, modules=mods} -> + withLib pkg_descr (\buildInfo@BuildInfo{hsSourceDir=srcDir} -> hunk ./Distribution/Simple/Build.hs 172 - moveSources srcDir pref mods ["hs", "lhs"] + moveSources srcDir pref (libModules pkg_descr) ["hs", "lhs"] hunk ./Distribution/Simple/Install.hs 59 - setupMessage, hasLibs, withLib) + setupMessage, hasLibs, withLib, libModules) hunk ./Distribution/Simple/Install.hs 113 -installLibGHC pref buildPref PackageDescription{library=Just l, +installLibGHC pref buildPref pd@PackageDescription{library=Just l, hunk ./Distribution/Simple/Install.hs 115 - = do moveSources (buildPref `joinFileName` (hsSourceDir l)) pref (modules l) ["hi"] + = do moveSources (buildPref `joinFileName` (hsSourceDir l)) pref (libModules pd) ["hi"] hunk ./Distribution/Simple/Install.hs 123 -installHugs pref buildPref PackageDescription{library=Just l} - = moveSources (buildPref `joinFileName` (hsSourceDir l)) pref (modules l) ["lhs", "hs"] +installHugs pref buildPref pd@PackageDescription{library=Just l} + = moveSources (buildPref `joinFileName` (hsSourceDir l)) pref (libModules pd) ["lhs", "hs"] hunk ./Distribution/Simple/Register.hs 182 - IPI.hiddenModules = filter (`notElem` exposedModules lib) (modules lib), + IPI.hiddenModules = hiddenModules lib, hunk ./Distribution/Simple/SrcDist.hs 54 - (PackageDescription(..), BuildInfo(..), buildInfo, setupMessage) + (PackageDescription(..), BuildInfo(..), buildInfo, setupMessage, biModules) hunk ./Distribution/Simple/SrcDist.hs 97 -prepareDir inPref pps BuildInfo{hsSourceDir=srcDir, modules=mods} +prepareDir inPref pps bi@BuildInfo{hsSourceDir=srcDir} hunk ./Distribution/Simple/SrcDist.hs 100 - moveSources srcDir pref mods suff - removePreprocessed pref mods suff + moveSources srcDir pref (biModules bi) suff + removePreprocessed pref (biModules bi) suff hunk ./Setup.description 6 -Modules: - Distribution.Compat.Error, - Distribution.Compat.Exception, - Distribution.Compat.RawSystem, - Distribution.Compat.ReadP, - Distribution.Compat.FilePath, - Distribution.Compat.Directory, +Exposed-Modules: hunk ./Setup.description 26 +Hidden-Modules: + Distribution.Compat.Error, + Distribution.Compat.Exception, + Distribution.Compat.RawSystem, + Distribution.Compat.ReadP, + Distribution.Compat.FilePath, + Distribution.Compat.Directory hunk ./test/A/Setup.description 3 -Modules: A, B.A, C +Hidden-Modules: B.A, C hunk ./test/A/Setup.description 9 -Modules: A, MainA +Executable-Modules: A, MainA hunk ./test/A/Setup.description 14 -Modules: B.A, B.MainB +Executable-Modules: B.A, B.MainB hunk ./test/HUnit-1.0/Setup.description 5 -Modules: HUnitText, HUnit, HUnitLang, HUnitTestBase, Terminal, HUnitBase +Hidden-Modules: HUnitText, HUnitLang, HUnitTestBase, Terminal, HUnitBase hunk ./test/wash2hs/Setup.description 9 -Modules: WASHClean, WASHExpression, WASHGenerator, WASHOut, - WASHData, WASHFlags, WASHMain, WASHParser, - WASHUtil +Executable-Modules: WASHClean, WASHExpression, WASHGenerator, WASHOut, + WASHData, WASHFlags, WASHMain, WASHParser, + WASHUtil hunk ./Distribution/Simple.hs 80 +import System.Exit(ExitCode(..)) hunk ./Distribution/Simple.hs 95 + +hookedPackageDesc :: FilePath +hookedPackageDesc = ".Setup.description.hooked" + +data UserHooks = UserHooks + { + runTests :: Bool -> IO ExitCode, -- ^Used for './setup test' + readDesc :: IO (Maybe PackageDescription), -- ^Read the description file + + preConf :: IO (Maybe PackageDescription), + postConf :: IO ExitCode, + + preBuild :: IO (Maybe PackageDescription), + postBuild :: IO ExitCode, + + preClean :: IO (Maybe PackageDescription), + postClean :: IO ExitCode, + + preCopy :: IO (Maybe PackageDescription), + postCopy :: IO ExitCode, + + preInst :: IO (Maybe PackageDescription), + postInst :: IO ExitCode, -- ^guaranteed to be run on target + + preSDist :: IO (Maybe PackageDescription), + postSDist :: IO ExitCode, + + preReg :: IO (Maybe PackageDescription), + postReg :: IO ExitCode, + + preUnreg :: IO (Maybe PackageDescription), + postUnreg :: IO ExitCode + } hunk ./Distribution/Simple.hs 142 - defaultMainWorker pkg_descr action args + defaultMainWorker pkg_descr action args Nothing + return () + +defaultMainWithHooks :: UserHooks + -> IO () +defaultMainWithHooks hooks + = do args <- getArgs + (action, args) <- parseGlobalArgs args + maybeDesc <- readDesc hooks + case maybeDesc of + Just pkg_descr -> defaultMainWorker pkg_descr action args (Just hooks) >> return () + Nothing -> do pkg_descr <- readPackageDescription defaultPackageDesc + defaultMainWorker pkg_descr action args (Just hooks) + return () hunk ./Distribution/Simple.hs 162 - defaultMainWorker pkg_descr action args + defaultMainWorker pkg_descr action args Nothing + return () hunk ./Distribution/Simple.hs 169 - -> IO () -defaultMainWorker pkg_descr action args + -> Maybe UserHooks + -> IO ExitCode +defaultMainWorker pkg_descr_in action args hooks hunk ./Distribution/Simple.hs 175 + let hookOrInput f = case hooks of + Nothing -> return pkg_descr_in + Just h -> do maybeDesc <- f h + case maybeDesc of + Nothing -> return pkg_descr_in + Just x -> return x + let postHook f = case hooks of + Nothing -> return ExitSuccess + Just h -> f h hunk ./Distribution/Simple.hs 186 + pkg_descr <- hookOrInput preConf hunk ./Distribution/Simple.hs 191 + postHook postConf hunk ./Distribution/Simple.hs 194 + pkg_descr <- hookOrInput preBuild hunk ./Distribution/Simple.hs 200 + postHook postBuild hunk ./Distribution/Simple.hs 203 + pkg_descr <- hookOrInput preClean hunk ./Distribution/Simple.hs 210 - return () + postHook postClean hunk ./Distribution/Simple.hs 213 + pkg_descr <- hookOrInput preCopy hunk ./Distribution/Simple.hs 218 - return () + postHook postCopy hunk ./Distribution/Simple.hs 221 + pkg_descr <- hookOrInput preInst hunk ./Distribution/Simple.hs 231 + postHook postInst hunk ./Distribution/Simple.hs 234 + pkg_descr <- hookOrInput preSDist hunk ./Distribution/Simple.hs 238 + postHook postSDist hunk ./Distribution/Simple.hs 241 + pkg_descr <- hookOrInput preReg hunk ./Distribution/Simple.hs 246 + postHook postReg hunk ./Distribution/Simple.hs 249 + pkg_descr <- hookOrInput preUnreg hunk ./Distribution/Simple.hs 254 + postHook postUnreg hunk ./Distribution/Simple.hs 263 + + +emptyUserHooks :: UserHooks +emptyUserHooks + = UserHooks + { + runTests = \_ -> res, + readDesc = rn, + preConf = rn, + postConf = res, + preBuild = rn, + postBuild = res, + preClean = rn, + postClean = res, + preCopy = rn, + postCopy = res, + preInst = rn, + postInst = res, + preSDist = rn, + postSDist = res, + preReg = rn, + postReg = res, + preUnreg = rn, + postUnreg = res + } + where rn = return Nothing + res = return ExitSuccess + +defaultUserHooks :: UserHooks +defaultUserHooks + = emptyUserHooks + { + preConf = return Nothing, + preBuild = readHook, + preClean = readHook, + preCopy = readHook, + preInst = readHook, + preSDist = readHook, + preReg = readHook, + preUnreg = readHook + } + where readHook = readPackageDescription hookedPackageDesc >>= (return . Just) + + hunk ./Distribution/Simple.hs 97 -hookedPackageDesc = ".Setup.description.hooked" +hookedPackageDesc = "Setup.buildinfo" hunk ./Distribution/Simple.hs 186 - pkg_descr <- hookOrInput preConf hunk ./Distribution/Simple.hs 187 + pkg_descr <- hookOrInput preConf hunk ./Distribution/Simple.hs 194 - pkg_descr <- hookOrInput preBuild hunk ./Distribution/Simple.hs 195 + pkg_descr <- hookOrInput preBuild hunk ./Distribution/Simple.hs 203 - pkg_descr <- hookOrInput preClean hunk ./Distribution/Simple.hs 204 + pkg_descr <- hookOrInput preClean hunk ./Distribution/Simple.hs 213 - pkg_descr <- hookOrInput preCopy hunk ./Distribution/Simple.hs 214 + pkg_descr <- hookOrInput preCopy hunk ./Distribution/Simple.hs 221 - pkg_descr <- hookOrInput preInst hunk ./Distribution/Simple.hs 222 + pkg_descr <- hookOrInput preInst hunk ./Distribution/Simple.hs 234 - pkg_descr <- hookOrInput preSDist hunk ./Distribution/Simple.hs 235 + pkg_descr <- hookOrInput preSDist hunk ./Distribution/Simple.hs 241 - pkg_descr <- hookOrInput preReg hunk ./Distribution/Simple.hs 242 + pkg_descr <- hookOrInput preReg hunk ./Distribution/Simple.hs 249 - pkg_descr <- hookOrInput preUnreg hunk ./Distribution/Simple.hs 250 + pkg_descr <- hookOrInput preUnreg hunk ./Distribution/Simple/Install.hs 80 - -> Maybe FilePath -- ^install-prefix + -> Maybe FilePath -- ^install-prefix FIX: Is this now unused? hunk ./Distribution/Simple.hs 104 - preConf :: IO (Maybe PackageDescription), + preConf :: ConfigFlags -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 113 - preCopy :: IO (Maybe PackageDescription), + preCopy :: (Maybe FilePath) -- Copy Location + -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 117 - preInst :: IO (Maybe PackageDescription), + preInst :: Bool -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 123 - preReg :: IO (Maybe PackageDescription), + preReg :: Bool -- Install in the user's database? + -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 183 + let hookOrInArgs f i = case hooks of + Nothing -> return pkg_descr_in + Just h -> do maybeDesc <- (f h) $ i + case maybeDesc of + Nothing -> return pkg_descr_in + Just x -> return x hunk ./Distribution/Simple.hs 195 - pkg_descr <- hookOrInput preConf + pkg_descr <- hookOrInArgs preConf flags hunk ./Distribution/Simple.hs 222 - pkg_descr <- hookOrInput preCopy + pkg_descr <- hookOrInArgs preCopy mprefix hunk ./Distribution/Simple.hs 230 - pkg_descr <- hookOrInput preInst + pkg_descr <- hookOrInArgs preInst uInst hunk ./Distribution/Simple.hs 250 - pkg_descr <- hookOrInput preReg + pkg_descr <- hookOrInArgs preReg uInst hunk ./Distribution/Simple.hs 279 - preConf = rn, + preConf = \_ -> rn, hunk ./Distribution/Simple.hs 285 - preCopy = rn, + preCopy = \_ -> rn, hunk ./Distribution/Simple.hs 287 - preInst = rn, + preInst = \_ -> rn, hunk ./Distribution/Simple.hs 291 - preReg = rn, + preReg = \_ -> rn, hunk ./Distribution/Simple.hs 303 - preConf = return Nothing, + preConf = \_ -> return Nothing, hunk ./Distribution/Simple.hs 306 - preCopy = readHook, - preInst = readHook, + preCopy = \_ -> readHook, + preInst = \_ -> readHook, hunk ./Distribution/Simple.hs 309 - preReg = readHook, + preReg = \_ -> readHook, hunk ./Distribution/Simple/Install.hs 80 - -> Maybe FilePath -- ^install-prefix FIX: Is this now unused? hunk ./Distribution/Simple/Install.hs 81 -install buildPref pkg_descr lbi install_prefixM = do - let libPref = mkLibDir pkg_descr lbi install_prefixM - let binPref = mkBinDir pkg_descr lbi install_prefixM +install buildPref pkg_descr lbi = do + let libPref = mkLibDir pkg_descr lbi Nothing + let binPref = mkBinDir pkg_descr lbi Nothing hunk ./Distribution/Simple/Install.hs 90 - let args = targetDir - : (maybeToList install_prefixM) + let args = [targetDir] hunk ./Distribution/Simple.hs 225 - install buildPref pkg_descr localbuildinfo mprefix + install buildPref pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 236 - install buildPref pkg_descr localbuildinfo mprefix + install buildPref pkg_descr localbuildinfo hunk ./Distribution/Setup.hs 334 - InstPrefix path -> error "--install-prefix is deprecated. Use copy command instead." - UserFlag -> (mprefix, True) - GlobalFlag -> (mprefix, False) - Lift _ -> t - _ -> error $ "Unexpected flag!" + InstPrefix _ -> error "--install-prefix is deprecated. Use copy command instead." + UserFlag -> (mprefix, True) + GlobalFlag -> (mprefix, False) + Lift _ -> t + _ -> error $ "Unexpected flag!" hunk ./Distribution/Simple/Install.hs 80 + -> Maybe FilePath -- ^install-prefix FIX: Is this now unused? hunk ./Distribution/Simple/Install.hs 82 -install buildPref pkg_descr lbi = do - let libPref = mkLibDir pkg_descr lbi Nothing - let binPref = mkBinDir pkg_descr lbi Nothing +install buildPref pkg_descr lbi install_prefixM = do + let libPref = mkLibDir pkg_descr lbi install_prefixM + let binPref = mkBinDir pkg_descr lbi install_prefixM hunk ./Distribution/Simple/Install.hs 91 - let args = [targetDir] + let args = targetDir + : (maybeToList install_prefixM) hunk ./Distribution/Simple.hs 225 - install buildPref pkg_descr localbuildinfo + install buildPref pkg_descr localbuildinfo mprefix hunk ./Distribution/Simple.hs 236 - install buildPref pkg_descr localbuildinfo + install buildPref pkg_descr localbuildinfo Nothing hunk ./Distribution/Setup.hs 88 - | InstallCmd (Maybe FilePath) Bool -- install (install-prefix) (--user flag) + | InstallCmd Bool -- install (install-prefix) (--user flag) hunk ./Distribution/Setup.hs 288 - cmdAction = InstallCmd Nothing False + cmdAction = InstallCmd False hunk ./Distribution/Setup.hs 321 -parseInstallArgs :: (Maybe FilePath, Bool) -> [String] -> [OptDescr a] -> - IO ((Maybe FilePath, Bool), [a], [String]) +parseInstallArgs :: Bool -> [String] -> [OptDescr a] -> + IO (Bool, [a], [String]) hunk ./Distribution/Setup.hs 332 - where updateCfg (fl:flags) t@(mprefix, uFlag) = updateCfg flags $ + where updateCfg (fl:flags) uFlag = updateCfg flags $ hunk ./Distribution/Setup.hs 335 - UserFlag -> (mprefix, True) - GlobalFlag -> (mprefix, False) - Lift _ -> t + UserFlag -> True + GlobalFlag -> False + Lift _ -> uFlag hunk ./Distribution/Simple.hs 228 - InstallCmd mprefix uInst -> do - ((mprefix,uInst), _, args) <- parseInstallArgs (mprefix,uInst) args [] + InstallCmd uInst -> do + (uInst, _, args) <- parseInstallArgs uInst args [] hunk ./Distribution/Simple.hs 237 - when (isNothing mprefix && hasLibs pkg_descr) + when (hasLibs pkg_descr) hunk ./Distribution/Simple/SrcDist.hs 100 - moveSources srcDir pref (biModules bi) suff - removePreprocessed pref (biModules bi) suff + moveSources srcDir pref (biModules bi) (suff ++ ["hs", "lhs"]) + removePreprocessed pref (biModules bi) (suff ++ ["hs", "lhs"]) hunk ./Distribution/Make.hs 142 - InstallCmd mprefix uInst -> do - ((mprefix,uInst), _, args) <- parseInstallArgs (mprefix,uInst) args [] + InstallCmd uInst -> do + (uInst, _, args) <- parseInstallArgs uInst args [] hunk ./Distribution/Make.hs 146 - when (isNothing mprefix) (exec "make register") + exec "make register" hunk ./Distribution/PackageDescription.hs 113 + -- possibly system-dependent build parameters + buildPackage :: Bool, -- ^ package is buildable here + ccOptions :: [String], -- ^ options for C compiler + ldOptions :: [String], -- ^ options for linker + frameworks :: [String], + -- components hunk ./Distribution/PackageDescription.hs 137 + buildPackage = True, + ccOptions = [], + ldOptions = [], + frameworks = [], hunk ./Distribution/PackageDescription.hs 293 + , simpleField "build-package" + (text . show) parseReadS + buildPackage (\val pkg -> pkg{buildPackage=val}) + , simpleField "cc-options" + (fsep . map text) (fmap words (munch (const True))) + ccOptions (\val pkg -> pkg{ccOptions=val}) + , simpleField "ld-options" + (fsep . map text) (fmap words (munch (const True))) + ldOptions (\val pkg -> pkg{ldOptions=val}) + , simpleField "frameworks" + (fsep . map text) (fmap words (munch (const True))) + frameworks (\val pkg -> pkg{frameworks=val}) hunk ./Distribution/PackageDescription.hs 456 + "Build-Package: True", + "CC-OPTIONS: -g -o", + "LD-OPTIONS: -BStatic -dn", + "Frameworks: foo", hunk ./Distribution/PackageDescription.hs 495 + buildPackage = True, + ccOptions = ["-g", "-o"], + ldOptions = ["-BStatic", "-dn"], + frameworks = ["foo"], hunk ./Distribution/ParseUtils.hs 224 +parsePackageNameQ :: ReadP r String hunk ./Distribution/ParseUtils.hs 226 + +parseVersionRangeQ :: ReadP r VersionRange hunk ./Distribution/PreProcess.hs 45 -import Distribution.PreProcess.Unlit(plain, unlit) +import Distribution.PreProcess.Unlit(unlit) hunk ./Distribution/PreProcess.hs 47 - BuildInfo(..), Executable(..), biModules) + BuildInfo(..), Executable(..), + biModules, withLib) +import Distribution.Setup (CompilerFlavor(..), compilerFlavor) hunk ./Distribution/PreProcess.hs 51 -import Distribution.Simple.Utils (rawSystemPath, moduleToFilePath, - sequenceMap, removeFiles) -import Control.Monad(when) -import System.Exit (ExitCode(..), exitWith) +import Distribution.Simple.Utils (rawSystemPath, moduleToFilePath, die) +import Control.Monad (when) +import Data.Maybe (fromJust) +import System.Exit (ExitCode(..)) +import System.Directory (removeFile) hunk ./Distribution/PreProcess.hs 57 - (splitFilePath, splitFileExt, joinFileName, joinFileExt) + (splitFileExt, joinFileName, joinFileExt) hunk ./Distribution/PreProcess.hs 66 --- |How to dispatch this file to a preprocessor. Is there a better --- way to handle this "Unlit" business? It is nice that it can handle --- happy, for instance. Maybe we need a way to chain preprocessors --- that would solve this problem. - +-- |A preprocessor for turning non-Haskell files with the given extension +-- into plain Haskell source files. hunk ./Distribution/PreProcess.hs 69 - = (String, (String->String->String), PreProcessor) + = (String, PackageDescription -> LocalBuildInfo -> PreProcessor) hunk ./Distribution/PreProcess.hs 71 --- |Copy and (possibly) preprocess sources from hsSourceDirs +-- |Apply preprocessors to the sources from 'hsSourceDirs', to obtain +-- a Haskell source file for each module. hunk ./Distribution/PreProcess.hs 78 -preprocessSources pkg_descr _ handlers = - do +preprocessSources pkg_descr lbi handlers = do hunk ./Distribution/PreProcess.hs 80 - allSources <- findAllSourceFiles pkg_descr (ppSuffixes handlers) - sequence [dispatchPP src handlers | src <- allSources] -- FIX: output errors? - return () - -dispatchPP :: FilePath -> [ PPSuffixHandler ] -> IO ExitCode -dispatchPP p handlers - = do let (dir, file, ext) = splitFilePath p - let (Just (lit, pp)) = findPP ext handlers --FIX: Nothing case? - pp p (joinFileName dir (joinFileExt file "hs")) - -findPP :: String -- ^Extension - -> [PPSuffixHandler] - -> Maybe ((String -> String -> String), PreProcessor) -findPP ext ((e2, lit, pp):t) - | e2 == ext = Just (lit, pp) - | otherwise = findPP ext t -findPP _ [] = Nothing - - --- |Locate the source files based on the module names, the search --- paths (both in PackageDescription) and the suffixes we might be --- interested in. -findAllSourceFiles :: PackageDescription - -> [String] -- ^search suffixes - -> IO [FilePath] -findAllSourceFiles PackageDescription{executables=execs, library=lib} allSuffixes - = do exeFiles <- sequence [buildInfoSources (buildInfo e) allSuffixes | e <- execs] - libFiles <- case lib of - Just bi -> buildInfoSources bi allSuffixes - Nothing -> return [] - return $ ((concat exeFiles) ++ libFiles) + foreachBuildInfo pkg_descr $ \ bi -> + sequence_ [preprocessModule (hsSourceDir bi) mod localHandlers | + mod <- biModules bi] -- FIX: output errors? + where hc = compilerFlavor (compiler lbi) + builtinSuffixes + | hc == NHC = ["hs", "lhs", "gc"] + | otherwise = ["hs", "lhs"] + localHandlers = [(ext, Nothing) | ext <- builtinSuffixes] ++ + [(ext, Just (h pkg_descr lbi)) | (ext, h) <- handlers] hunk ./Distribution/PreProcess.hs 90 - where buildInfoSources :: BuildInfo -> [String] -> IO [FilePath] - buildInfoSources bi@BuildInfo{hsSourceDir=dir} suffixes - = sequence [moduleToFilePath dir modu suffixes | modu <- biModules bi] - >>= return . concat +-- |Find the first extension of the file that exists, and preprocess it +-- if required. +preprocessModule + :: FilePath -- ^source directory + -> String -- ^module name + -> [(String, Maybe PreProcessor)] -- ^possible preprocessors + -> IO ExitCode +preprocessModule searchLoc mod handlers = do + srcFiles <- moduleToFilePath searchLoc mod (map fst handlers) + case srcFiles of + [] -> die ("can't find source for " ++ mod) + (srcFile:_) -> do + let (srcStem, ext) = splitFileExt srcFile + case fromJust (lookup ext handlers) of -- FIX: can't fail? + Nothing -> return ExitSuccess + Just pp -> pp srcFile (srcStem `joinFileExt` "hs") hunk ./Distribution/PreProcess.hs 112 - = do maybe (return ()) removePPBuildInfo (library pkg_descr) - sequenceMap removePPBuildInfo (map buildInfo (executables pkg_descr)) - return () - where removePPBuildInfo :: BuildInfo -> IO () - removePPBuildInfo bi - = removePreprocessed (r `joinFileName` (hsSourceDir bi)) (biModules bi) suff + = foreachBuildInfo pkg_descr $ \ bi -> + removePreprocessed (r `joinFileName` hsSourceDir bi) (biModules bi) suff hunk ./Distribution/PreProcess.hs 121 - = sequenceMap (\m -> moduleToFilePath searchLoc m suffixesIn) mods -- collect related files - >>= sequenceMap removeIfDup -- delete the .hs stuff. - >> return () - where -- ^Should give a list of files that only differ by the extension. - removeIfDup :: [FilePath] -> IO () - removeIfDup [] = return () - removeIfDup [x] = return () -- if there's only one, it needs to stay - removeIfDup l = do when (not $ extensionProp l) - (putStrLn "Internal Error: attempt to remove source with no matching preprocessed element." - >> exitWith (ExitFailure 1)) - let hsFiles = (filter (\x -> snd (splitFileExt x) == "hs") l) - when (length hsFiles > 1) - (putStrLn "Internal Error: multiple \".hs\" files found while removing preprocessed element." - >> exitWith (ExitFailure 1)) - removeFiles hsFiles - return () - -- the files in this list only differ by their extension - extensionProp [] = True - extensionProp [x] = True - extensionProp (x1:x2:xs) - = let (dir1, name1, _) = splitFilePath x1 - (dir2, name2, _) = splitFilePath x2 - in dir1 == dir2 && name1 == name2 && (extensionProp (x2:xs)) + = mapM_ removePreprocessedModule mods + where removePreprocessedModule m = do + -- collect related files + fs <- moduleToFilePath searchLoc m otherSuffixes + -- does M.hs also exist? + hs <- moduleToFilePath searchLoc m ["hs"] + when (not (null fs)) (mapM_ removeFile hs) + otherSuffixes = filter (/= "hs") suffixesIn + +-- | Perform the action on each 'BuildInfo' in the package description. +foreachBuildInfo :: PackageDescription -> (BuildInfo -> IO a) -> IO () +foreachBuildInfo pkg_descr action = do + withLib pkg_descr (\ bi -> action bi >> return ()) + mapM_ (action . buildInfo) (executables pkg_descr) hunk ./Distribution/PreProcess.hs 140 -ppCpp, ppGreenCard, ppHsc2hs, ppC2hs, ppHappy, ppNone :: PreProcessor +ppCpp, ppGreenCard, ppC2hs :: PreProcessor hunk ./Distribution/PreProcess.hs 146 -ppHsc2hs = standardPP "hsc2hs" hunk ./Distribution/PreProcess.hs 148 -ppHappy = standardPP "happy" -ppNone _ _ = return ExitSuccess + +-- This one is useful for preprocessors that can't handle literate source. +-- We also need a way to chain preprocessors. +ppUnlit :: PreProcessor +ppUnlit inFile outFile = do + contents <- readFile inFile + writeFile outFile (unlit inFile contents) + return ExitSuccess + +-- FIX (non-GHC): This uses hsc2hs as supplied with GHC, but this may +-- not be present, and if present will pass GHC-specific cpp defines to +-- the C compiler. +ppHsc2hs :: PackageDescription -> LocalBuildInfo -> PreProcessor +ppHsc2hs pkg_descr lbi + = standardPP "hsc2hs" (hcFlags hc ++ ccOptions pkg_descr) + where hc = compilerFlavor (compiler lbi) + hcFlags NHC = ["-D__NHC__"] + hcFlags Hugs = ["-D__HUGS__"] + hcFlags _ = [] + +ppHappy :: PackageDescription -> LocalBuildInfo -> PreProcessor +ppHappy _ lbi + = standardPP "happy" (hcFlags hc) + where hc = compilerFlavor (compiler lbi) + hcFlags GHC = ["-agc"] + hcFlags _ = [] hunk ./Distribution/PreProcess.hs 183 -standardPP :: String -> PreProcessor -standardPP eName inFile outFile - = rawSystemPath eName ["-o" ++ outFile, inFile] +standardPP :: String -> [String] -> PreProcessor +standardPP eName args inFile outFile + = rawSystemPath eName (args ++ ["-o" ++ outFile, inFile]) hunk ./Distribution/PreProcess.hs 187 --- |Convinience function; get the suffixes of these preprocessors. +-- |Convenience function; get the suffixes of these preprocessors. hunk ./Distribution/PreProcess.hs 189 -ppSuffixes h = [s | (s, _, _) <- h] +ppSuffixes = map fst hunk ./Distribution/PreProcess.hs 191 --- |Leave in unlit since some preprocessors can't handle literated --- source? hunk ./Distribution/PreProcess.hs 193 - [ ("gc", plain, ppGreenCard) - , ("chs", plain, ppC2hs) - , ("hsc", plain, ppHsc2hs) - , ("y", plain, ppHappy) - , ("ly", unlit, ppHappy) - , ("cpphs", plain, ppCpp) - , ("gc", plain, ppNone) -- note, for nhc98 only - , ("hs", plain, ppNone) - , ("lhs", unlit, ppNone) - , ("testSuffix", plain, ppTestHandler) - ] + [ ("gc", \ _ _ -> ppGreenCard) + , ("chs", \ _ _ -> ppC2hs) + , ("hsc", ppHsc2hs) + , ("y", ppHappy) + , ("ly", ppHappy) + , ("cpphs", \ _ _ -> ppCpp) + , ("testSuffix", \ _ _ -> ppTestHandler) + ] hunk ./Distribution/Simple/Configure.hs 149 - message $ "Using build prefix: " ++ pref + message $ "Using install prefix: " ++ pref hunk ./Distribution/Simple/Configure.hs 155 + buildDir="dist" `joinFileName` "build", hunk ./Distribution/Simple/Install.hs 80 - -> Maybe FilePath -- ^install-prefix FIX: Is this now unused? + -> Maybe FilePath -- ^install-prefix hunk ./Distribution/Simple/LocalBuildInfo.hs 55 + buildDir :: FilePath, + -- ^ Where to put the result of building. hunk ./Distribution/Simple/LocalBuildInfo.hs 58 - -- ^ Which packages we depend on, *exactly*, The - -- 'PackageDescription' specifies a set of build dependencies + -- ^ Which packages we depend on, /exactly/. + -- The 'Distribution.PackageDescription.PackageDescription' + -- specifies a set of build dependencies hunk ./Distribution/Simple/Utils.hs 60 + getOptionsFromSource, + stripComments, hunk ./Distribution/Simple/Utils.hs 73 +import Distribution.Extension (Extension) +import Distribution.Setup (CompilerFlavor(..)) +import Distribution.PreProcess.Unlit (unlit) hunk ./Distribution/Simple/Utils.hs 78 -import Data.List(nub) -import Data.Maybe(Maybe, catMaybes) +import Data.Char(isSpace) +import Data.List(nub, isSuffixOf) +import Data.Maybe(Maybe, catMaybes, mapMaybe) hunk ./Distribution/Simple/Utils.hs 312 + +-- ------------------------------------------------------------ +-- * options in source files +-- ------------------------------------------------------------ + +-- |Read the initial part of a source file, before any Haskell code, +-- and return the contents of any OPTIONS or LANGUAGE pragmas. +getOptionsFromSource + :: FilePath + -> IO ([Extension], -- LANGUAGE pragma, if any + [(CompilerFlavor,[String])] -- OPTIONS_FOO pragmas + ) +getOptionsFromSource file = do + text <- readFile file + return $ foldr appendOptions ([],[]) $ map getOptions $ + takeWhileJust $ map getPragma $ + filter textLine $ map (dropWhile isSpace) $ lines $ + stripComments True $ + if ".lhs" `isSuffixOf` file then unlit file text else text + where textLine [] = False + textLine ('#':_) = False + textLine _ = True + + getPragma :: String -> Maybe [String] + getPragma line = case words line of + ("{-#" : rest) | last rest == "#-}" -> Just (init rest) + _ -> Nothing + + getOptions ("OPTIONS":opts) = ([], [(GHC, opts)]) + getOptions ("OPTIONS_GHC":opts) = ([], [(GHC, opts)]) + getOptions ("OPTIONS_NHC":opts) = ([], [(NHC, opts)]) + getOptions ("OPTIONS_HUGS":opts) = ([], [(Hugs, opts)]) + getOptions ("LANGUAGE":ws) = (mapMaybe readExtension ws, []) + where readExtension :: String -> Maybe Extension + readExtension w = case reads w of + [(ext, "")] -> Just ext + [(ext, ",")] -> Just ext + _ -> Nothing + getOptions _ = ([], []) + + appendOptions (exts, opts) (exts', opts') = (exts++exts', opts++opts') + +-- takeWhileJust f = map fromJust . takeWhile isJust +takeWhileJust :: [Maybe a] -> [a] +takeWhileJust (Just x:xs) = x : takeWhileJust xs +takeWhileJust _ = [] + +-- |Strip comments from Haskell source. +stripComments + :: Bool -- ^ preserve pragmas? + -> String -- ^ input source text + -> String +stripComments keepPragmas = stripCommentsLevel 0 + where stripCommentsLevel :: Int -> String -> String + stripCommentsLevel 0 ('-':'-':cs) = -- FIX: symbols like --> + stripCommentsLevel 0 (dropWhile (/= '\n') cs) + stripCommentsLevel 0 ('{':'-':'#':cs) + | keepPragmas = '{' : '-' : '#' : copyPragma cs + stripCommentsLevel n ('{':'-':cs) = stripCommentsLevel (n+1) cs + stripCommentsLevel 0 (c:cs) = c : stripCommentsLevel 0 cs + stripCommentsLevel n ('-':'}':cs) = stripCommentsLevel (n-1) cs + stripCommentsLevel n (c:cs) = stripCommentsLevel n cs + stripCommentsLevel _ [] = [] + + copyPragma ('#':'-':'}':cs) = '#' : '-' : '}' : stripCommentsLevel 0 cs + copyPragma (c:cs) = c : copyPragma cs + copyPragma [] = [] hunk ./Distribution/Simple.hs 87 +import System.Console.GetOpt hunk ./Distribution/Simple.hs 102 - runTests :: Bool -> IO ExitCode, -- ^Used for './setup test' + runTests :: Bool -> IO ExitCode, -- ^Used for @.\/setup test@ hunk ./Distribution/Simple.hs 176 - let buildPref = distPref `joinFileName` "build" hunk ./Distribution/Simple.hs 194 - (flags, _, args) <- parseConfigureArgs flags args [] hunk ./Distribution/Simple.hs 195 + (flags, optFns, args) <- + parseConfigureArgs flags args [buildDirOpt] hunk ./Distribution/Simple.hs 199 - writePersistBuildConfig localbuildinfo + writePersistBuildConfig (foldr id localbuildinfo optFns) hunk ./Distribution/Simple.hs 207 + let buildPref = buildDir localbuildinfo hunk ./Distribution/Simple.hs 216 + localbuildinfo <- getPersistBuildConfig + let buildPref = buildDir localbuildinfo hunk ./Distribution/Simple.hs 229 + let buildPref = buildDir localbuildinfo hunk ./Distribution/Simple.hs 238 + let buildPref = buildDir localbuildinfo hunk ./Distribution/Simple.hs 274 + +buildDirOpt :: OptDescr (LocalBuildInfo -> LocalBuildInfo) +buildDirOpt = Option "b" ["builddir"] (ReqArg setBuildDir "DIR") + "directory to receive the built package [dist/build]" + where setBuildDir dir lbi = lbi { buildDir = dir } hunk ./Distribution/Simple/Build.hs 50 -import Distribution.Extension (extensionsToGHCFlag, extensionsToNHCFlag) +import Distribution.Extension (Extension(..), + extensionsToGHCFlag, extensionsToNHCFlag) hunk ./Distribution/Simple/Build.hs 55 - libModules) + libModules, biModules) hunk ./Distribution/Simple/Build.hs 58 +import Distribution.PreProcess.Unlit (unlit) hunk ./Distribution/Simple/Build.hs 62 - mkLibName, moveSources, dotToSep + mkLibName, moveSources, dotToSep, + moduleToFilePath, currentDir, + getOptionsFromSource, stripComments hunk ./Distribution/Simple/Build.hs 70 -import Data.List(nub) -import System.Directory (removeFile) -import Distribution.Compat.FilePath (splitFilePath, joinFileName, joinFileExt) +import Data.Char (isAlpha, isAlphaNum) +import Data.List(nub, sort, isSuffixOf) +import System.Directory (removeFile, copyFile) +import System.Exit (ExitCode(..)) +import Distribution.Compat.FilePath (splitFilePath, joinFileName, joinFileExt, + searchPathSeparator) hunk ./Distribution/Simple/Build.hs 175 -buildHugs pref pkg_descr lbi - = do -- move library-related source files into place. - withLib pkg_descr (\buildInfo@BuildInfo{hsSourceDir=srcDir} -> - do let targetDir = pref `joinFileName` (hsSourceDir buildInfo) - moveSources srcDir pref (libModules pkg_descr) ["hs", "lhs"] - ) +buildHugs pref pkg_descr lbi = do + withLib pkg_descr $ compileBuildInfo pref + mapM_ (compileExecutable (pref `joinFileName` "programs")) + (executables pkg_descr) + where + {- FIX (HUGS): we need to create a shell script or bat file or + something to call runhugs on the modulePath. -} + compileExecutable :: FilePath -> Executable -> IO () + compileExecutable destDir (Executable {modulePath=mainPath, buildInfo=bi}) = do + let srcMainFile = hsSourceDir bi `joinFileName` mainPath + let destMainFile = destDir `joinFileName` mainPath + copyModule (CPP `elem` extensions bi) srcMainFile destMainFile + compileBuildInfo destDir bi + compileFFI bi destMainFile + + compileBuildInfo :: FilePath -> BuildInfo -> IO () + compileBuildInfo destDir bi = do + -- Pass 1: copy or cpp files from src directory to build directory + let useCpp = CPP `elem` extensions bi + let srcDir = hsSourceDir bi + fileLists <- sequence [moduleToFilePath srcDir mod suffixes | + mod <- biModules bi] + let trimSrcDir + | null srcDir || srcDir == currentDir = id + | otherwise = drop (length srcDir + 1) + let copy_or_cpp f = + copyModule useCpp f (destDir `joinFileName` trimSrcDir f) + mapM_ copy_or_cpp (concat fileLists) + -- Pass 2: compile foreign stubs in build directory + fileLists <- sequence [moduleToFilePath destDir mod suffixes | + mod <- biModules bi] + mapM_ (compileFFI bi) (concat fileLists) hunk ./Distribution/Simple/Build.hs 208 + suffixes = ["hs", "lhs"] hunk ./Distribution/Simple/Build.hs 210 - {- FIX (HUGS): something smart must happen here; we need to - create a shell script or bat file or something to call - runhugs for running the executable file. For now, ignore - executables -} - when (not $ null $ executables $ pkg_descr) - (setupMessage "Warning: executable stanzas ignored for HUGS.\nNot yet implemented in cabal." pkg_descr) - return () + -- Copy or cpp a file from the source directory to the build directory. + copyModule :: Bool -> FilePath -> FilePath -> IO () + copyModule cppAll srcFile destFile = do + createIfNotExists True (dirOf destFile) + (exts, opts) <- getOptionsFromSource srcFile + let ghcOpts = hcOptions GHC opts + if cppAll || CPP `elem` exts || "-cpp" `elem` ghcOpts then + cppFile srcFile destFile + else + copyFile srcFile destFile hunk ./Distribution/Simple/Build.hs 221 + {- FIX (HUGS): assumes gcc -} + cppFile inFile outFile = + rawSystemExit "cpp" + (["-traditional", "-P", "-D__HUGS__"] ++ + ccOptions pkg_descr ++ [inFile, outFile]) + + compileFFI :: BuildInfo -> FilePath -> IO () + compileFFI bi file = do + -- Only compile FFI stubs for a file if it contains some FFI stuff + inp <- readHaskellFile file + when ("foreign" `elem` identifiers (stripComments False inp)) $ do + (_, opts) <- getOptionsFromSource file + let ghcOpts = hcOptions GHC opts + let srcDir = hsSourceDir bi + let pkg_incs = ["\"" ++ inc ++ "\"" | inc <- includes bi] + let incs = uniq (sort (includeOpts ghcOpts ++ pkg_incs)) + let pathFlag = "-P" ++ buildDir lbi ++ [searchPathSeparator] + let hugsArgs = "-98" : pathFlag : map ("-i" ++) incs + cfiles <- getCFiles file + let cArgs = + ccOptions pkg_descr ++ + map (joinFileName srcDir) cfiles ++ + ["-L" ++ dir | dir <- extraLibDirs bi] ++ + ldOptions pkg_descr ++ + ["-l" ++ lib | lib <- extraLibs bi] ++ + concat [["-framework", f] | f <- frameworks pkg_descr] + rawSystemExit ffihugs (hugsArgs ++ file : cArgs) + + ffihugs = compilerPath (compiler lbi) + + includeOpts :: [String] -> [String] + includeOpts [] = [] + includeOpts ("-#include" : arg : opts) = arg : includeOpts opts + includeOpts (_ : opts) = includeOpts opts + + -- get C file names from CFILES pragmas throughout the source file + getCFiles :: FilePath -> IO [String] + getCFiles file = do + inp <- readHaskellFile file + return [cfile | + "{-#" : "CFILES" : rest <- + map words $ lines $ stripComments True inp, + last rest == "#-}", + cfile <- init rest] + + -- List of variable identifiers (and reserved words) in a source file. + identifiers :: String -> [String] + identifiers cs = case dropWhile (not . isStartChar) cs of + [] -> [] + rest -> ident : identifiers cs' + where (ident, cs') = span isFollowChar rest + + isStartChar c = c == '_' || isAlpha c + isFollowChar c = c == '_' || c == '\'' || isAlphaNum c + + -- Get the non-literate source of a Haskell module. + readHaskellFile :: FilePath -> IO String + readHaskellFile file = do + text <- readFile file + return $ if ".lhs" `isSuffixOf` file then unlit file text else text + +hcOptions :: CompilerFlavor -> [(CompilerFlavor, [String])] -> [String] +hcOptions hc hc_opts = [opt | (hc',opts) <- hc_opts, hc' == hc, opt <- opts] + +uniq :: Ord a => [a] -> [a] +uniq [] = [] +uniq (x:xs) = x : uniq (dropWhile (== x) xs) hunk ./Distribution/PreProcess.hs 53 -import Data.Maybe (fromJust) +import Data.Maybe (fromMaybe) hunk ./Distribution/PreProcess.hs 103 - case fromJust (lookup ext handlers) of -- FIX: can't fail? + case fromMaybe (error "Internal error in preProcess module: Just expected") + (lookup ext handlers) of -- FIX: can't fail? hunk ./Distribution/Simple/Configure.hs 76 -import Data.Maybe(fromJust) +import Data.Maybe(fromMaybe) hunk ./Distribution/Simple/Configure.hs 96 -exeDeps s d = fromJust $ lookup s (executableDeps d) +exeDeps s d = fromMaybe (error "Incorrect executableDeps in .setup-config file. Re-run configure?") (lookup s (executableDeps d)) hunk ./Distribution/ParseUtils.hs 189 -singleStanza = mapM brk . merge . filter (not.allSpaces) . zip [1..] . lines +singleStanza = mapM brk . merge . filter validLine . zip [1..] . lines + where validLine (_,s) = case dropWhile isSpace s of + '-':'-':_ -> False -- Comment + [] -> False -- blank line + _ -> True hunk ./Distribution/Simple/Build.hs 72 -import System.Directory (removeFile, copyFile) +import System.Directory (removeFile) hunk ./Distribution/Simple/Build.hs 74 +import Distribution.Compat.Directory (copyFile) hunk ./Distribution/Simple/Build.hs 87 -build :: FilePath -- ^Build location - -> PackageDescription +build :: PackageDescription hunk ./Distribution/Simple/Build.hs 91 -build pref pkg_descr lbi suffixes = do - createIfNotExists True pref +build pkg_descr lbi suffixes = do + createIfNotExists True (buildDir lbi) hunk ./Distribution/Simple/Build.hs 96 - GHC -> buildGHC pref pkg_descr lbi - Hugs -> buildHugs pref pkg_descr lbi + GHC -> buildGHC pkg_descr lbi + Hugs -> buildHugs pkg_descr lbi hunk ./Distribution/Simple/Build.hs 115 -buildGHC :: FilePath -> PackageDescription -> LocalBuildInfo -> IO () -buildGHC pref pkg_descr lbi = do +buildGHC :: PackageDescription -> LocalBuildInfo -> IO () +buildGHC pkg_descr lbi = do + let pref = buildDir lbi hunk ./Distribution/Simple/Build.hs 124 - let args = (if pkgConfReadable then ["-package-conf", pkgConf] else []) + let args = ccOptions pkg_descr + ++ (if pkgConfReadable then ["-package-conf", pkgConf] else []) hunk ./Distribution/Simple/Build.hs 139 - rawSystemExit ghcPath (c: ["-odir", odir , "-hidir", pref, "-c"]) + let args = ccOptions pkg_descr + ++ ["-odir", odir, "-hidir", pref, "-c"] + rawSystemExit ghcPath (args ++ [c]) hunk ./Distribution/Simple/Build.hs 156 - let args = (if pkgConfReadable then ["-package-conf", pkgConf] else []) - ++ ["-odir", pref `joinFileName` (hsSourceDir exeBi), - "-hidir", pref `joinFileName` (hsSourceDir exeBi), - "-o", pref `joinFileName` (hsSourceDir exeBi) `joinFileName` exeName' + let targetDir = pref `joinFileName` hsSourceDir exeBi + let args = ccOptions pkg_descr + ++ (if pkgConfReadable then ["-package-conf", pkgConf] else []) + ++ ["-odir", targetDir, + "-hidir", targetDir, + "-o", targetDir `joinFileName` exeName' hunk ./Distribution/Simple/Build.hs 165 + ++ ldOptions pkg_descr hunk ./Distribution/Simple/Build.hs 177 + ++ [ "-#include \"" ++ inc ++ "\"" | inc <- includes buildInfo' ] hunk ./Distribution/Simple/Build.hs 182 -buildHugs :: FilePath -> PackageDescription -> LocalBuildInfo -> IO () -buildHugs pref pkg_descr lbi = do +buildHugs :: PackageDescription -> LocalBuildInfo -> IO () +buildHugs pkg_descr lbi = do + let pref = buildDir lbi hunk ./Distribution/Simple/Install.hs 78 -install :: FilePath -- ^build location - -> PackageDescription -> LocalBuildInfo +install :: PackageDescription + -> LocalBuildInfo hunk ./Distribution/Simple/Install.hs 82 -install buildPref pkg_descr lbi install_prefixM = do +install pkg_descr lbi install_prefixM = do + let buildPref = buildDir lbi hunk ./Distribution/Simple/Register.hs 191 - IPI.extraCcOpts = [], - IPI.extraLdOpts = [], + IPI.extraCcOpts = ccOptions pkg_descr, + IPI.extraLdOpts = ldOptions pkg_descr, hunk ./Distribution/Simple/Register.hs 194 - IPI.extraFrameworks = [], + IPI.extraFrameworks = frameworks pkg_descr, hunk ./Distribution/Simple.hs 207 - let buildPref = buildDir localbuildinfo - build buildPref pkg_descr localbuildinfo knownSuffixHandlers + build pkg_descr localbuildinfo knownSuffixHandlers hunk ./Distribution/Simple.hs 228 - let buildPref = buildDir localbuildinfo - install buildPref pkg_descr localbuildinfo mprefix + install pkg_descr localbuildinfo mprefix hunk ./Distribution/Simple.hs 236 - let buildPref = buildDir localbuildinfo hunk ./Distribution/Simple.hs 239 - install buildPref pkg_descr localbuildinfo Nothing + install pkg_descr localbuildinfo Nothing hunk ./Setup.description 15 + Distribution.Simple.LocalBuildInfo, hunk ./TODO 2 +** two executables in same directory fails because both create Main.o hunk ./Distribution/Compat/FilePath.hs 26 + + -- * Filename extensions + , exeExtension + , objExtension + , dllExtension hunk ./Distribution/Compat/FilePath.hs 379 +#endif +-- ToDo: This should be determined via autoconf (AC_EXEEXT) +-- | Extension for executable files +-- (typically @\"\"@ on Unix and @\".exe\"@ on Windows or OS\/2) +exeExtension :: String +#ifdef mingw32_TARGET_OS +exeExtension = ".exe" +#else +exeExtension = "" +#endif + +-- ToDo: This should be determined via autoconf (AC_OBJEXT) +-- | Extension for object files +-- (typically @\".o\"@ on Unix and @\".obj\"@ on Windows) +objExtension :: String +#ifdef mingw32_TARGET_OS +objExtension = ".obj" +#else +objExtension = ".o" +#endif + +-- | Extension for dynamically linked (or shared) libraries +-- (typically @\".so\"@ on Unix and @\".dll\"@ on Windows) +dllExtension :: String +#ifdef mingw32_TARGET_OS +dllExtension = ".dll" +#else +dllExtension = ".so" hunk ./Distribution/Simple.hs 51 - defaultMain, defaultMainNoRead, + defaultMain, defaultMainNoRead, hookedPackageDesc, hunk ./TODO 3 +** Executables that depend on the package itself hunk ./Distribution/Simple.hs 100 +type Args = [String] + hunk ./Distribution/Simple.hs 107 - preConf :: ConfigFlags -> IO (Maybe PackageDescription), + preConf :: Args -> ConfigFlags -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 110 - preBuild :: IO (Maybe PackageDescription), + preBuild :: Args -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 113 - preClean :: IO (Maybe PackageDescription), + preClean :: Args -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 116 - preCopy :: (Maybe FilePath) -- Copy Location + preCopy :: Args + -> (Maybe FilePath) -- Copy Location hunk ./Distribution/Simple.hs 121 - preInst :: Bool -> IO (Maybe PackageDescription), + preInst :: Args -> Bool -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 124 - preSDist :: IO (Maybe PackageDescription), + preSDist :: Args -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 127 - preReg :: Bool -- Install in the user's database? + preReg :: Args + -> Bool -- Install in the user's database? hunk ./Distribution/Simple.hs 132 - preUnreg :: IO (Maybe PackageDescription), + preUnreg :: Args -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 179 - = do let distPref = "dist" - let srcPref = distPref `joinFileName` "src" - let hookOrInput f = case hooks of - Nothing -> return pkg_descr_in - Just h -> do maybeDesc <- f h - case maybeDesc of - Nothing -> return pkg_descr_in - Just x -> return x - let hookOrInArgs f i = case hooks of - Nothing -> return pkg_descr_in - Just h -> do maybeDesc <- (f h) $ i - case maybeDesc of - Nothing -> return pkg_descr_in - Just x -> return x - let postHook f = case hooks of - Nothing -> return ExitSuccess - Just h -> f h - case action of + = do case action of hunk ./Distribution/Simple.hs 181 - pkg_descr <- hookOrInArgs preConf flags hunk ./Distribution/Simple.hs 183 + pkg_descr <- hookOrInArgs preConf args flags hunk ./Distribution/Simple.hs 191 - pkg_descr <- hookOrInput preBuild + pkg_descr <- hookOrInput preBuild args hunk ./Distribution/Simple.hs 200 - pkg_descr <- hookOrInput preClean + pkg_descr <- hookOrInput preClean args hunk ./Distribution/Simple.hs 212 - pkg_descr <- hookOrInArgs preCopy mprefix + pkg_descr <- hookOrInArgs preCopy args mprefix hunk ./Distribution/Simple.hs 220 - pkg_descr <- hookOrInArgs preInst uInst + pkg_descr <- hookOrInArgs preInst args uInst hunk ./Distribution/Simple.hs 232 + let distPref = "dist" + let srcPref = distPref `joinFileName` "src" hunk ./Distribution/Simple.hs 235 - pkg_descr <- hookOrInput preSDist + pkg_descr <- hookOrInput preSDist args hunk ./Distribution/Simple.hs 242 - pkg_descr <- hookOrInArgs preReg uInst + pkg_descr <- hookOrInArgs preReg args uInst hunk ./Distribution/Simple.hs 250 - pkg_descr <- hookOrInput preUnreg + pkg_descr <- hookOrInput preUnreg args hunk ./Distribution/Simple.hs 255 + where + hookOrInput :: (UserHooks -> (b -> IO (Maybe PackageDescription))) + -> b + -> IO PackageDescription + hookOrInput f i + = case hooks of + Nothing -> return pkg_descr_in + Just h -> do maybeDesc <- (f h) $ i + case maybeDesc of + Nothing -> return pkg_descr_in + Just x -> return x + postHook f = case hooks of + Nothing -> return ExitSuccess + Just h -> f h + + hookOrInArgs :: (UserHooks -> (a -> b -> IO (Maybe PackageDescription))) + -> a + -> b + -> IO PackageDescription + hookOrInArgs f a i + = case hooks of + Nothing -> return pkg_descr_in + Just h -> do maybeDesc <- (f h) a i + case maybeDesc of + Nothing -> return pkg_descr_in + Just x -> return x hunk ./Distribution/Simple.hs 301 - readDesc = rn, + readDesc = return Nothing, hunk ./Distribution/Simple.hs 319 - where rn = return Nothing + where rn _ = return Nothing hunk ./Distribution/Simple.hs 326 - preConf = \_ -> return Nothing, + preConf = \_ _ -> return Nothing, hunk ./Distribution/Simple.hs 335 - where readHook = readPackageDescription hookedPackageDesc >>= (return . Just) + where readHook _ = readPackageDescription hookedPackageDesc >>= (return . Just) hunk ./Distribution/Simple.hs 51 - defaultMain, defaultMainNoRead, hookedPackageDesc, + defaultMain, defaultMainNoRead, defaultMainWithHooks, + UserHooks (..), defaultUserHooks, emptyUserHooks, hookedPackageDesc, hunk ./Distribution/Simple.hs 52 - UserHooks (..), defaultUserHooks, emptyUserHooks, hookedPackageDesc, + UserHooks (..), defaultUserHooks, hookedPackageDesc, hunk ./Distribution/Simple.hs 80 +import System.Cmd (rawSystem) hunk ./Distribution/Simple.hs 83 -import System.Directory(removeFile) +import System.Directory(removeFile, doesFileExist) hunk ./Distribution/Simple.hs 298 +-- |Empty UserHooks which do nothing. hunk ./Distribution/Simple.hs 325 +-- |Basic default 'UserHooks' which read and write to +-- 'hookedPackageDesc'. It's likely that unless you have a very +-- basic /configure/ script, you will want to override preConf. + hunk ./Distribution/Simple.hs 333 - preConf = \_ _ -> return Nothing, + preConf = defaultPreConf, hunk ./Distribution/Simple.hs 343 + defaultPreConf :: [String] -> ConfigFlags -> IO (Maybe PackageDescription) + defaultPreConf args (_, _, _, mb_prefix) + = do let prefix_opt pref opts = ("--prefix=" ++ pref) : opts + whenM (doesFileExist "configure") $ + rawSystem "./configure" + (maybe id prefix_opt mb_prefix args) + outDesc <- readPackageDescription hookedPackageDesc + return $ Just outDesc hunk ./Distribution/Simple.hs 353 + +whenM :: IO Bool -> IO a -> IO () +whenM cond act = do + b <- cond + when b $ do + act + return () hunk ./Distribution/Simple.hs 329 +-- FIXME: do something sensible for windows, or do nothing in preConf. + hunk ./Distribution/Compat/FilePath.hs 379 -#endif hunk ./Distribution/Compat/FilePath.hs 407 + +#endif /* __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ <= 603 */ hunk ./Distribution/Extension.hs 175 + extensionToHugsFlag ForeignFunctionInterface = Right "" hunk ./Distribution/Simple/Install.hs 48 + hugsPackageDir, + hugsProgramsDir, hunk ./Distribution/Simple/Install.hs 61 - setupMessage, hasLibs, withLib, libModules) -import Distribution.Package (showPackageId) + setupMessage, hasLibs, withLib, libModules, exeModules, biModules) +import Distribution.Package (showPackageId, pkgName) hunk ./Distribution/Simple/Install.hs 65 - mkLibName, + mkLibName, removeFileRecursive, hunk ./Distribution/Simple/Install.hs 70 -import Control.Monad(when) +import Control.Monad(when, unless) hunk ./Distribution/Simple/Install.hs 73 -import Distribution.Compat.FilePath(joinFileName) +import Distribution.Compat.FilePath(joinFileName, dllExtension) +import System.IO.Error(try) hunk ./Distribution/Simple/Install.hs 93 - Hugs -> do withLib pkg_descr (\buildInfo@BuildInfo{hsSourceDir=srcDir} -> - do let targetDir = buildPref `joinFileName` srcDir - let args = targetDir - : (maybeToList install_prefixM) - let hugsPkg = compilerPkgTool $ compiler $ lbi - rawSystemExit hugsPkg args) - -- FIX (HUGS): Install executables, still needs work in build step + Hugs -> installHugs libPref binPref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 117 --- |Install for hugs, .lhs and .hs -installHugs :: FilePath -- ^Install location - -> FilePath -- ^Build location - -> PackageDescription -> IO () -installHugs pref buildPref pd@PackageDescription{library=Just l} - = moveSources (buildPref `joinFileName` (hsSourceDir l)) pref (libModules pd) ["lhs", "hs"] +-- |Install for Hugs +installHugs + :: FilePath -- ^Library install location + -> FilePath -- ^Executable install location + -> FilePath -- ^Build location + -> PackageDescription + -> IO () +installHugs libPref binPref buildPref pkg_descr = do + let hugsDir = libPref `joinFileName` "hugs" + let pkg_name = pkgName (package pkg_descr) + withLib pkg_descr $ \ libInfo -> do + let pkgDir = hugsDir `joinFileName` "packages" + `joinFileName` pkg_name + try $ removeFileRecursive pkgDir + moveSources buildPref pkgDir (biModules libInfo) hugsInstallSuffixes + unless (null (executables pkg_descr)) $ do + let progBuildDir = buildPref `joinFileName` "programs" + let progInstallDir = hugsDir `joinFileName` "programs" + `joinFileName` pkg_name + try $ removeFileRecursive progInstallDir + moveSources progBuildDir progInstallDir + (exeModules pkg_descr) hugsInstallSuffixes + flip mapM_ (executables pkg_descr) $ \ Executable {modulePath=e} -> + copyFile (progBuildDir `joinFileName` e) + (progInstallDir `joinFileName` e) + -- FIX (HUGS): Install executables, still needs work (in build step?) + +hugsInstallSuffixes :: [String] +hugsInstallSuffixes = ["hs", "lhs", drop 1 dllExtension] + +hugsPackageDir :: PackageDescription -> LocalBuildInfo -> FilePath +hugsPackageDir pkg_descr lbi = + prefix lbi `joinFileName` "lib" `joinFileName` "hugs" + `joinFileName` "packages" `joinFileName` pkgName (package pkg_descr) + +hugsProgramsDir :: PackageDescription -> LocalBuildInfo -> FilePath +hugsProgramsDir pkg_descr lbi = + prefix lbi `joinFileName` "lib" `joinFileName` "hugs" + `joinFileName` "programs" `joinFileName` pkgName (package pkg_descr) hunk ./Distribution/Simple/Register.hs 68 -import Distribution.Simple.Utils (rawSystemExit, die) +import Distribution.Simple.Utils (rawSystemExit, die, removeFileRecursive) +import Distribution.Simple.Install (hugsPackageDir, hugsProgramsDir) hunk ./Distribution/Simple/Register.hs 73 +import Distribution.Compat.Directory (copyFile) +import Distribution.Compat.FilePath (joinFileName) hunk ./Distribution/Simple/Register.hs 96 -register pkg_descr lbi userInst = do - setupMessage "Registering" pkg_descr - if isNothing (library pkg_descr) - then do setupMessage "No package to register" pkg_descr - return () - else do - - case compilerFlavor (compiler lbi) of - GHC -> do +register pkg_descr lbi userInst + | isNothing (library pkg_descr) = do + setupMessage "No package to register" pkg_descr + return () + | otherwise = do + setupMessage "Registering" pkg_descr + case compilerFlavor (compiler lbi) of + GHC -> do hunk ./Distribution/Simple/Register.hs 130 - -- FIX (HUGS): - Hugs -> setupMessage "Warning: Hugs has no packaging tool\nLibrary files will just be moved into place." pkg_descr - _ -> die ("only registering with GHC is implemented") + -- FIX (HUGS): + Hugs -> do + let + copyFile installedPkgConfigFile + (hugsPackageDir pkg_descr lbi `joinFileName` "package.conf") + _ -> die ("only registering with GHC is implemented") hunk ./Distribution/Simple/Register.hs 145 - case compilerFlavor hc of - GHC -> - let pkg_config - | compilerVersion hc >= Version [6,3] [] - = showInstalledPackageInfo (mkInstalledPackageInfo pkg_descr lbi) - | otherwise - = showGHCPackageConfig (mkGHCPackageConfig pkg_descr lbi) - in - writeFile installedPkgConfigFile ( pkg_config) - Hugs -> return () - _ -> die ("only registering with GHC is implemented") + let pkg_config = case compilerFlavor hc of + GHC | compilerVersion hc < Version [6,3] [] -> + showGHCPackageConfig (mkGHCPackageConfig pkg_descr lbi) + _ -> showInstalledPackageInfo (mkInstalledPackageInfo pkg_descr lbi) + writeFile installedPkgConfigFile pkg_config hunk ./Distribution/Simple/Register.hs 205 - when (compilerFlavor (compiler lbi) /= GHC) $ - die ("only unregistering with GHC is implemented") + case compilerFlavor (compiler lbi) of + GHC -> + rawSystemExit (compilerPkgTool (compiler lbi)) + ["--remove-package=" ++ pkgName (package pkg_descr)] + Hugs -> do + try $ removeFileRecursive (hugsPackageDir pkg_descr lbi) + try $ removeFileRecursive (hugsProgramsDir pkg_descr lbi) + return () + _ -> + die ("only unregistering with GHC and Hugs is implemented") hunk ./Distribution/Simple/Register.hs 216 - rawSystemExit (compilerPkgTool (compiler lbi)) - ["--remove-package=" ++ pkgName (package pkg_descr)] hunk ./Distribution/Simple.hs 52 - UserHooks (..), defaultUserHooks, hookedPackageDesc, + UserHooks (..), emptyUserHooks, defaultUserHooks, hookedPackageDesc, hunk ./Distribution/Simple/Register.hs 68 -import Distribution.Simple.Utils (rawSystemExit, die, removeFileRecursive) +import Distribution.Simple.Utils (rawSystemExit, die, removeFileRecursive, createIfNotExists) hunk ./Distribution/Simple/Register.hs 133 + createIfNotExists True (hugsPackageDir pkg_descr lbi) hunk ./Distribution/InstalledPackageInfo.hs 61 - showFilePath, parseReadS, parseOptVersion, parseQuoted) + showFilePath, parseReadS, parseOptVersion, parseQuoted, + showFreeText) hunk ./Distribution/InstalledPackageInfo.hs 195 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/InstalledPackageInfo.hs 198 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/InstalledPackageInfo.hs 201 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/InstalledPackageInfo.hs 204 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/InstalledPackageInfo.hs 207 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/InstalledPackageInfo.hs 210 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/InstalledPackageInfo.hs 213 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/InstalledPackageInfo.hs 216 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 249 - hunk ./Distribution/PackageDescription.hs 266 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 269 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 272 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 275 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 278 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 281 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 284 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 287 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 310 - text (munch (const True)) + showFreeText (munch (const True)) hunk ./Distribution/PackageDescription.hs 371 - Right PackageDescription{library=Nothing, executables=[]} -> error "no library listed, and no executable stanza." +-- Right PackageDescription{library=Nothing, executables=[]} -> error "no library listed, and no executable stanza." hunk ./Distribution/ParseUtils.hs 53 - showFilePath, showTestedWith, showDependency, + showFilePath, showTestedWith, showDependency, showFreeText, hunk ./Distribution/ParseUtils.hs 283 + +-- | Pretty-print free-format text, ensuring that it is vertically aligned, +-- and with blank lines replaced by dots for correct re-parsing. +showFreeText :: String -> Doc +showFreeText s = vcat [text (if null l then "." else l) | l <- lines s] hunk ./Distribution/Simple/Register.hs 150 - writeFile installedPkgConfigFile pkg_config + writeFile installedPkgConfigFile (pkg_config ++ "\n") hunk ./Distribution/PackageDescription.hs 560 - (parseDescription testPkgDesc) - + (parseDescription testPkgDesc), + TestLabel "Package description pretty" $ TestCase $ + case parseDescription testPkgDesc of + Left _ -> assertBool "can't parse description" False + Right d -> assertRight "parse . show . parse not identity" + testPkgDescAnswer (parseDescription $ showPackageDescription d) adddir ./test/withHooks addfile ./test/withHooks/.setup-config addfile ./test/withHooks/Makefile addfile ./test/withHooks/Setup.buildinfo.in addfile ./test/withHooks/Setup.description addfile ./test/withHooks/Setup.lhs addfile ./test/withHooks/WithHooks.hs hunk ./test/withHooks/.setup-config 1 - +LocalBuildInfo {prefix = "/usr", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,2,2], versionTags = []}, compilerPath = "/usr/bin/ghc", compilerPkgTool = "/usr/bin/ghc-pkg"}, buildDir = "dist/build", packageDeps = [], executableDeps = [("withHooks",[])]} hunk ./test/withHooks/Makefile 1 +all: + mkdir -p dist/tmp + ghc -cpp --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup +clean: + rm -f setup a.out dist/build/testA + rm -rf ,tmp dist ,tmp2 + find . -name "*.o" |xargs rm -f + find . -name "*.hi" |xargs rm -f +check: all + ./setup configure --user --prefix=/tmp/foo + ./setup build + ./setup install --install-prefix=/tmp/bar + ls /tmp/bar* + # install w/ register! + ./setup install +# ls /tmp/foo* + ./setup sdist + ls dist hunk ./test/withHooks/Setup.buildinfo.in 1 +copyright: Copyright 2005 Happy New Year!! +license: LGPL +description: This program outputs very important information. +exposed-modules: WithHooks hunk ./test/withHooks/Setup.description 1 +Name: withHooks +Version: 1.0 + +Executable: withHooks +Executable-Modules: WithHooks +Main-is: WithHooks.hs hunk ./test/withHooks/Setup.lhs 1 +#!/usr/bin/runhugs + +> module Main where + +> import Distribution.Simple +> import Distribution.PackageDescription (readPackageDescription) +> import Distribution.Compat.Directory (copyFile) +> import System.Directory (removeFile) +> import System.Exit(ExitCode(..)) + +> myPreConf _ _ = do copyFile "Setup.buildinfo.in" "Setup.buildinfo" +> d <- readPackageDescription hookedPackageDesc +> return $ Just d + +> main :: IO () +> main = defaultMainWithHooks defaultUserHooks +> {preConf=myPreConf, +> postClean=removeFile "Setup.buildinfo" >> return ExitSuccess +> } hunk ./test/withHooks/WithHooks.hs 1 +module Main where + +main = putStrLn "Happy New Year!" hunk ./test/withHooks/.setup-config 1 -LocalBuildInfo {prefix = "/usr", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,2,2], versionTags = []}, compilerPath = "/usr/bin/ghc", compilerPkgTool = "/usr/bin/ghc-pkg"}, buildDir = "dist/build", packageDeps = [], executableDeps = [("withHooks",[])]} + rmfile ./test/withHooks/.setup-config addfile ./test/withHooks/Main.hs hunk ./test/withHooks/Main.hs 1 +module Main where + +main = putStrLn "Happy New Year!" hunk ./test/withHooks/Setup.description 5 -Executable-Modules: WithHooks -Main-is: WithHooks.hs +Executable-Modules: Main +Main-is: Main.hs hunk ./test/withHooks/WithHooks.hs 1 -module Main where +module WithHooks where hunk ./test/withHooks/WithHooks.hs 3 -main = putStrLn "Happy New Year!" +f = 34 hunk ./Distribution/ModuleTest.hs 210 - assertEqual "C.hs (a generated file) not cleaned." False + assertEqual "C.hs (a generated file) not cleaned." False, + TestLabel "package withHooks: GHC building" $ TestCase $ + do setCurrentDirectory $ (testdir `joinFileName` "withHooks") + system "make clean" + system "make" + assertCmd "./setup configure --ghc --prefix=,tmp" + "configure returned error code" + assertCmd "./setup build" + "build returned error code" + doesFileExist "dist/build/withHooks" >>= + assertBool "build did not create the executable: withHooks", + TestLabel "package withHooks: GHC and copy" $ TestCase $ + do let targetDir = ",tmp" + instRetCode <- system $ "./setup copy --copy-prefix=" ++ targetDir + doesFileExist (",tmp/lib/withHooks-1.0/" `joinFileName` "libHSwithHooks-1.0.a") + >>= assertBool "library doesn't exist" + doesFileExist ",tmp/bin/withHooks" + >>= assertBool "executable doesn't exist" + assertEqual "install returned error code" ExitSuccess instRetCode hunk ./Distribution/PackageDescription.hs 50 + unionPackageDescription, hunk ./Distribution/PackageDescription.hs 249 + +-- |This isn't quite the right way to go about this. For one thing, +-- the Right Thing for excutables isn't exactly clear. For another +-- thing, it's hard to tell whether or not the field was provided at +-- all in /p1/. The only way to guess (as the parser is currently +-- implemented) is to compare it with the 'emptyPackageDescription' +-- variable, though it's possible that they will be equal, but the +-- user actually did provide that field. Another question is what to +-- do about the "required," static fields which should not be in /p2/. +-- We should definitely check to be sure they're in /p1/, and not in +-- /p2/, though not in this function. +-- FIXME: executables not implemented correctly, library (buildinfo) +-- not yet implemented. + +unionPackageDescription :: PackageDescription -> PackageDescription -> PackageDescription +unionPackageDescription p1 p2 + = p1{ -- simple fields + license = override license "license", + copyright = override copyright "copyright", + maintainer = override maintainer "maintainer", + author = override author "author", + stability = override stability "stability", + homepage = override homepage "homepage", + pkgUrl = override pkgUrl "package-url", + description = override description "description", + category = override category "category", + buildPackage = override buildPackage "build-package", + -- combine fields: + ccOptions = combine ccOptions, + ldOptions = combine ldOptions, + frameworks = combine frameworks, + testedWith = combine testedWith, + -- it's not obvious what to do with executables: + executables = combine executables, + + -- complex fields + package = unionPackageIdent (package p1) (package p2), + library = makeLib (library p1) (library p2) +-- library :: Maybe BuildInfo, + } + where + override :: (Eq a) => (PackageDescription -> a) + -> String -- Field name + -> a + override f s + | f p1 == f p2 = f p1 + | f p1 /= f emptyPackageDescription + && f p2 /= f emptyPackageDescription + = error $ "union: Two non-empty fields found in union attempt:" ++ s + | f p1 == f emptyPackageDescription = f p2 + | otherwise = f p1 + combine :: (Eq a) => (PackageDescription -> [a]) + -> [a] + combine f = f p1 ++ f p2 + makeLib :: Maybe BuildInfo -> Maybe BuildInfo -> Maybe BuildInfo + makeLib Nothing Nothing = Nothing + makeLib Nothing j = j + makeLib j Nothing = j + makeLib (Just b1) (Just b2) = Just $ unionBuildInfo b1 b2 + +unionBuildInfo :: BuildInfo -> BuildInfo -> BuildInfo +unionBuildInfo b1 b2 + = b1{buildDepends = combine buildDepends, + executableModules = combine executableModules, + exposedModules = combine exposedModules, + hiddenModules = combine hiddenModules, + cSources = combine cSources, + hsSourceDir = combine hsSourceDir, + extensions = combine extensions, + extraLibs = combine extraLibs, + extraLibDirs = combine extraLibDirs, + includeDirs = combine includeDirs, + includes = combine includes, + options = combine options + } + where + combine :: (Eq a) => (BuildInfo -> [a]) + -> [a] + combine f = f b1 ++ f b2 + + +unionPackageIdent :: PackageIdentifier -> PackageIdentifier -> PackageIdentifier +unionPackageIdent p1 p2 + = p1{pkgName = override pkgName "name", + pkgVersion = override pkgVersion "version"} + where + override :: (Eq a) => (PackageIdentifier -> a) + -> String -- Field name + -> a + override f s + | f p1 == f p2 = f p1 + | f p1 /= f emptyIdent + && f p2 /= f emptyIdent + = error $ "union: Two non-empty fields found in union attempt:" ++ s + | f p1 == f emptyIdent = f p2 + | otherwise = f p1 + emptyIdent = PackageIdentifier "" (Version [] []) hunk ./Distribution/Simple.hs 267 - Just x -> return x - postHook f = case hooks of - Nothing -> return ExitSuccess - Just h -> f h - + Just x -> return (unionPackageDescription pkg_descr_in x) hunk ./Distribution/Simple.hs 278 - Just x -> return x + Just x -> return (unionPackageDescription pkg_descr_in x) + postHook f = case hooks of + Nothing -> return ExitSuccess + Just h -> f h hunk ./Distribution/Extension.hs 177 + extensionToHugsFlag CPP = Right "" hunk ./Distribution/Simple/Build.hs 60 +import Distribution.Simple.Install (hugsMainFilename) hunk ./Distribution/Simple/Build.hs 190 - {- FIX (HUGS): we need to create a shell script or bat file or - something to call runhugs on the modulePath. -} hunk ./Distribution/Simple/Build.hs 191 - compileExecutable destDir (Executable {modulePath=mainPath, buildInfo=bi}) = do + compileExecutable destDir (exe@Executable {modulePath=mainPath, buildInfo=bi}) = do hunk ./Distribution/Simple/Build.hs 193 - let destMainFile = destDir `joinFileName` mainPath + let destMainFile = destDir `joinFileName` hugsMainFilename exe hunk ./Distribution/Simple/Install.hs 50 + hugsMainFilename, hunk ./Distribution/Simple/Install.hs 74 -import Distribution.Compat.FilePath(joinFileName, dllExtension) +import Distribution.Compat.FilePath(joinFileName, dllExtension, + splitFileExt, joinFileExt) hunk ./Distribution/Simple/Install.hs 77 +import System.Directory(Permissions(..), getPermissions, setPermissions) hunk ./Distribution/Simple/Install.hs 91 + let targetLibPref = mkLibDir pkg_descr lbi Nothing hunk ./Distribution/Simple/Install.hs 97 - Hugs -> installHugs libPref binPref buildPref pkg_descr + Hugs -> installHugs libPref binPref targetLibPref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 125 + -> FilePath -- ^Library location on target system hunk ./Distribution/Simple/Install.hs 129 -installHugs libPref binPref buildPref pkg_descr = do - let hugsDir = libPref `joinFileName` "hugs" +installHugs libPref binPref targetLibPref buildPref pkg_descr = do + let hugsInstallDir = libPref `joinFileName` "hugs" + let hugsTargetDir = targetLibPref `joinFileName` "hugs" hunk ./Distribution/Simple/Install.hs 134 - let pkgDir = hugsDir `joinFileName` "packages" + let pkgDir = hugsInstallDir `joinFileName` "packages" hunk ./Distribution/Simple/Install.hs 140 - let progInstallDir = hugsDir `joinFileName` "programs" + let progInstallDir = hugsInstallDir `joinFileName` "programs" + `joinFileName` pkg_name + let progTargetDir = hugsTargetDir `joinFileName` "programs" hunk ./Distribution/Simple/Install.hs 147 - flip mapM_ (executables pkg_descr) $ \ Executable {modulePath=e} -> - copyFile (progBuildDir `joinFileName` e) - (progInstallDir `joinFileName` e) - -- FIX (HUGS): Install executables, still needs work (in build step?) + flip mapM_ (executables pkg_descr) $ \ exe -> do + let fname = hugsMainFilename exe + let installName = progInstallDir `joinFileName` fname + let targetName = progTargetDir `joinFileName` fname + copyFile (progBuildDir `joinFileName` fname) installName + let exeFile = binPref `joinFileName` exeName exe + -- FIX (HUGS): works for Unix only + -- FIX (HUGS): supply language options for runhugs? + let script = unlines [ + "#! /bin/sh", + "runhugs " ++ targetName] + writeFile exeFile script + perms <- getPermissions exeFile + setPermissions exeFile perms { executable = True, readable = True } hunk ./Distribution/Simple/Install.hs 165 +-- |Prefix for Hugs package directories hunk ./Distribution/Simple/Install.hs 171 +-- |Prefix for Hugs program directories hunk ./Distribution/Simple/Install.hs 176 + +-- |Filename used by Hugs for the main module of an executable. +-- This is a simple filename, so that Hugs will look for any auxiliary +-- modules it uses relative to the directory it's in. +hugsMainFilename :: Executable -> FilePath +hugsMainFilename exe = (exeName exe ++ "-Main") `joinFileExt` ext + where (_, ext) = splitFileExt (modulePath exe) hunk ./TODO 2 +** if you're passing arguments to hooks, you shouldn't call + no_extra_flags, should you? Perhaps it should be in the empty hooks. + hunk ./TODO 8 -** postinst, test hunk ./GNUmakefile 128 -check: tests +check: + rm moduleTest + make moduleTest hunk ./Distribution/Simple/Configure.hs 178 - "/usr" + "/usr/local" hunk ./Distribution/ModuleTest.hs 189 - checkTargetDir ",tmp2/lib/test-1.0/" [".hi"] - doesFileExist (",tmp2/lib/test-1.0/" `joinFileName` "libHStest-1.0.a") + checkTargetDir ",tmp2/,tmp/lib/test-1.0/" [".hi"] + doesFileExist (",tmp2/,tmp/lib/test-1.0/" `joinFileName` "libHStest-1.0.a") hunk ./Distribution/ModuleTest.hs 194 - do let targetDir = ",tmp2" - instRetCode <- system $ "./setup copy" + do instRetCode <- system $ "./setup copy" hunk ./Distribution/ModuleTest.hs 223 - doesFileExist (",tmp/lib/withHooks-1.0/" `joinFileName` "libHSwithHooks-1.0.a") + doesFileExist (",tmp/,tmp/lib/withHooks-1.0/" `joinFileName` "libHSwithHooks-1.0.a") hunk ./Distribution/ModuleTest.hs 225 - doesFileExist ",tmp/bin/withHooks" + doesFileExist ",tmp/,tmp/bin/withHooks" hunk ./Distribution/Setup.hs 298 - "specify the directory in which to place installed files" + "specify the directory in which to place installed files, prepended to configure-time install path" hunk ./Distribution/Simple.hs 90 -import Distribution.Compat.FilePath(joinFileName) +import Distribution.Compat.FilePath(joinFileName, joinPaths) hunk ./Distribution/Simple.hs 217 - install pkg_descr localbuildinfo mprefix + install pkg_descr localbuildinfo (mJoinPaths mprefix (prefix localbuildinfo)) hunk ./Distribution/Simple.hs 258 + mJoinPaths :: Maybe FilePath -> FilePath -> Maybe FilePath + mJoinPaths f1 f2 = do f1' <- f1 + return $ joinPaths f1' f2 hunk ./test/withHooks/Setup.lhs 10 +> import Control.Monad(when) hunk ./test/withHooks/Setup.lhs 12 -> myPreConf _ _ = do copyFile "Setup.buildinfo.in" "Setup.buildinfo" -> d <- readPackageDescription hookedPackageDesc -> return $ Just d +> myPreConf (h:_) _ = do when (h /= "--woohoo") +> (error "--woohoo flag (for testing) not passed to ./setup configure.") +> copyFile "Setup.buildinfo.in" "Setup.buildinfo" +> d <- readPackageDescription hookedPackageDesc +> return $ Just d +> myPreConf [] _ = error "--woohoo flag (for testing) not passed to ./setup configure." addfile ./test/Tests.mk hunk ./test/A/Makefile 1 -all: - mkdir -p dist/tmp - ghc -cpp --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup -clean: - rm -f setup a.out dist/build/testA - rm -rf ,tmp dist ,tmp2 - find . -name "*.o" |xargs rm -f - find . -name "*.hi" |xargs rm -f -check: all - ./setup configure --user --prefix=/tmp/foo - ./setup build - ./setup install --install-prefix=/tmp/bar - ls /tmp/bar* - # install w/ register! - ./setup install -# ls /tmp/foo* - ./setup sdist - ls dist +include ../Tests.mk hunk ./test/HUnit-1.0/Makefile 1 -all: - mkdir -p dist/tmp - ghc -cpp --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup -semiclean: - rm -rf ,tmp dist - find . -name "*.o" |xargs rm -f - find . -name "*.hi" |xargs rm -f -clean: semiclean - rm -f setup a.out hunitTest - rm -f installed-pkg-config - -check: all - ./setup configure --user --prefix=/tmp/foo - ./setup install --install-prefix=/tmp/bar - ls /tmp/bar* - # install w/ register! - ./setup install -# ls /tmp/foo* - ./setup sdist - ls dist +include ../Tests.mk hunk ./test/Tests.mk 1 +all: + ghc -cpp --make -i../.. Setup.lhs -o setup +clean: + rm -f setup a.out + rm -rf ,tmp* dist + find . -name "*.o" |xargs rm -f + find . -name "*.hi" |xargs rm -f +check: all + ./setup configure --user --prefix=/tmp/foo + ./setup build + ./setup install --install-prefix=/tmp/bar + ls /tmp/bar* + # install w/ register! + ./setup install +# ls /tmp/foo* + ./setup sdist + ls dist hunk ./test/wash2hs/Makefile 1 -all: - mkdir -p dist/tmp - ghc -cpp --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup -clean: - rm -f setup - rm -rf ,tmp dist ,tmp2 - find . -name "*.o" |xargs rm -f - find . -name "*.hi" |xargs rm -f -check: all - ./setup configure --user --prefix=/tmp/foo - ./setup build - ./setup install --install-prefix=/tmp/bar - ls /tmp/bar* - # install w/ register! - ./setup install -# ls /tmp/foo* - ./setup sdist - ls dist +include ../Tests.mk hunk ./test/withHooks/Makefile 1 -all: - mkdir -p dist/tmp - ghc -cpp --make -odir dist/tmp -hidir dist/tmp -i../.. Setup.lhs -o setup -clean: - rm -f setup a.out dist/build/testA - rm -rf ,tmp dist ,tmp2 - find . -name "*.o" |xargs rm -f - find . -name "*.hi" |xargs rm -f -check: all - ./setup configure --user --prefix=/tmp/foo - ./setup build - ./setup install --install-prefix=/tmp/bar - ls /tmp/bar* - # install w/ register! - ./setup install -# ls /tmp/foo* - ./setup sdist - ls dist +include ../Tests.mk hunk ./Distribution/ModuleTest.hs 113 +-- |Run this command, and assert it returns an unsuccessful error code. +assertCmdFail :: String -- ^Command + -> String -- ^Comment + -> Assertion +assertCmdFail command comment + = do code <- system command + assertBool (command ++ ":" ++ comment) (code /= ExitSuccess) + hunk ./Distribution/ModuleTest.hs 128 + assertCmdFail "./setup configure --someUnknownFlag" "wash2hs configure with unknown flag" hunk ./Distribution/ModuleTest.hs 223 - assertCmd "./setup configure --ghc --prefix=,tmp" + assertCmd "./setup configure --ghc --prefix=,tmp --woohoo" hunk ./GNUmakefile 129 - rm moduleTest + rm -f moduleTest adddir ./test/twoMains addfile ./test/twoMains/.installed-pkg-config addfile ./test/twoMains/.setup-config addfile ./test/twoMains/MainA.hs addfile ./test/twoMains/MainB.hs addfile ./test/twoMains/Makefile addfile ./test/twoMains/Setup.description addfile ./test/twoMains/Setup.lhs hunk ./Distribution/ModuleTest.hs 236 - assertEqual "install returned error code" ExitSuccess instRetCode + assertEqual "install returned error code" ExitSuccess instRetCode, + TestLabel "package twoMains: GHC building" $ TestCase $ + do setCurrentDirectory $ (testdir `joinFileName` "twoMains") + system "make clean" + system "make" + assertCmd "./setup configure --ghc --prefix=,tmp" + "configure returned error code" + assertCmd "./setup build" + "build returned error code" + doesFileExist "dist/build/testA" >>= + assertBool "build did not create the executable: testA" + doesFileExist "dist/build/testB" >>= + assertBool "build did not create the executable: testB" + assertCmd "./dist/build/testA isA" "A is not A" + assertCmd "./dist/build/testB isB" "B is not B" hunk ./test/Tests.mk 8 + find . -name "*~" | xargs rm -f hunk ./test/twoMains/.installed-pkg-config 1 +Package + {name = "test", + auto = False, + import_dirs = [",tmp/lib/test-1.0"], + source_dirs = [], + library_dirs = [",tmp/lib/test-1.0"], + hs_libraries = ["HStest-1.0"], + extra_libraries = [], + include_dirs = [], + c_includes = [], + package_deps = [], + extra_ghc_opts = [], + extra_cc_opts = [], + extra_ld_opts = [], + framework_dirs = [], + extra_frameworks = []} hunk ./test/twoMains/.setup-config 1 - +LocalBuildInfo {prefix = ",tmp", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,2,2], versionTags = []}, compilerPath = "/usr/bin/ghc", compilerPkgTool = "/usr/bin/ghc-pkg"}, buildDir = "dist/build", packageDeps = [], executableDeps = [("testA",[]),("testB",[])]} hunk ./test/twoMains/MainA.hs 1 +module Main where +import System +import Control.Monad(when) +main = do print 'a' + args <- getArgs + let isB = head args + when (isB /= "isA") (error "A is not A!") hunk ./test/twoMains/MainB.hs 1 +module Main where +import System +import Control.Monad (when) +main = do print 'b' + args <- getArgs + let isB = head args + when (isB /= "isB") (error "B is not B!") hunk ./test/twoMains/Makefile 1 +include ../Tests.mk hunk ./test/twoMains/Setup.description 1 +Name: test +Version: 1.0 + +Executable: testA +Executable-Modules: MainA +Main-is: MainA.hs + +Executable: testB +Executable-Modules: MainB +Main-is: MainB.hs hunk ./test/twoMains/Setup.lhs 1 +#!/usr/bin/runhugs + +> module Main where + +> import Distribution.Simple + +> main :: IO () +> main = defaultMain addfile ./Distribution/GetOpt.hs hunk ./Distribution/GetOpt.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.GetOpt +-- Copyright : (c) Sven Panne Oct. 1996 (small changes Feb. 2003) +-- License : BSD-style (see the file libraries/base/LICENSE) +-- +-- Maintainer : libraries@haskell.org +-- Stability : experimental +-- Portability : portable +-- +-- Edited by Isaac Jones to allow non-options to pass through. +-- +-- This library provides facilities for parsing the command-line options +-- in a standalone program. It is essentially a Haskell port of the GNU +-- @getopt@ library. +-- +----------------------------------------------------------------------------- + +{- +Sven Panne Oct. 1996 (small +changes Dec. 1997) + +Two rather obscure features are missing: The Bash 2.0 non-option hack +(if you don't already know it, you probably don't want to hear about +it...) and the recognition of long options with a single dash +(e.g. '-help' is recognised as '--help', as long as there is no short +option 'h'). + +Other differences between GNU's getopt and this implementation: + +* To enforce a coherent description of options and arguments, there + are explanation fields in the option/argument descriptor. + +* Error messages are now more informative, but no longer POSIX + compliant... :-( + +And a final Haskell advertisement: The GNU C implementation uses well +over 1100 lines, we need only 195 here, including a 46 line example! +:-) +-} + +module Distribution.GetOpt ( + -- * GetOpt + getOpt, + usageInfo, + ArgOrder(..), + OptDescr(..), + ArgDescr(..), + + -- * Example + + -- $example + ) where + +import Prelude +import Data.List ( isPrefixOf ) + +-- |What to do with options following non-options +data ArgOrder a + = RequireOrder -- ^ no option processing after first non-option + | Permute -- ^ freely intersperse options and non-options + | ReturnInOrder (String -> a) -- ^ wrap non-options into options + +{-| +Each 'OptDescr' describes a single option. + +The arguments to 'Option' are: + +* list of short option characters + +* list of long option strings (without \"--\") + +* argument descriptor + +* explanation of option for user +-} +data OptDescr a = -- description of a single options: + Option [Char] -- list of short option characters + [String] -- list of long option strings (without "--") + (ArgDescr a) -- argument descriptor + String -- explanation of option for user + +-- |Describes whether an option takes an argument or not, and if so +-- how the argument is injected into a value of type @a@. +data ArgDescr a + = NoArg a -- ^ no argument expected + | ReqArg (String -> a) String -- ^ option requires argument + | OptArg (Maybe String -> a) String -- ^ optional argument + +data OptKind a -- kind of cmd line arg (internal use only): + = Opt a -- an option + | UnreqOpt String -- an un-recognized option + | NonOpt String -- a non-option + | EndOfOpts -- end-of-options marker (i.e. "--") + | OptErr String -- something went wrong... + +-- | Return a string describing the usage of a command, derived from +-- the header (first argument) and the options described by the +-- second argument. +usageInfo :: String -- header + -> [OptDescr a] -- option descriptors + -> String -- nicely formatted decription of options +usageInfo header optDescr = unlines (header:table) + where (ss,ls,ds) = (unzip3 . map fmtOpt) optDescr + table = zipWith3 paste (sameLen ss) (sameLen ls) ds + paste x y z = " " ++ x ++ " " ++ y ++ " " ++ z + sameLen xs = flushLeft ((maximum . map length) xs) xs + flushLeft n xs = [ take n (x ++ repeat ' ') | x <- xs ] + +fmtOpt :: OptDescr a -> (String,String,String) +fmtOpt (Option sos los ad descr) = (sepBy ',' (map (fmtShort ad) sos), + sepBy ',' (map (fmtLong ad) los), + descr) + where sepBy _ [] = "" + sepBy _ [x] = x + sepBy ch (x:xs) = x ++ ch:' ':sepBy ch xs + +fmtShort :: ArgDescr a -> Char -> String +fmtShort (NoArg _ ) so = "-" ++ [so] +fmtShort (ReqArg _ ad) so = "-" ++ [so] ++ " " ++ ad +fmtShort (OptArg _ ad) so = "-" ++ [so] ++ "[" ++ ad ++ "]" + +fmtLong :: ArgDescr a -> String -> String +fmtLong (NoArg _ ) lo = "--" ++ lo +fmtLong (ReqArg _ ad) lo = "--" ++ lo ++ "=" ++ ad +fmtLong (OptArg _ ad) lo = "--" ++ lo ++ "[=" ++ ad ++ "]" + +{-| +Process the command-line, and return the list of values that matched +(and those that didn\'t). The arguments are: + +* The order requirements (see 'ArgOrder') + +* The option descriptions (see 'OptDescr') + +* The actual command line arguments (presumably got from + 'System.Environment.getArgs'). + +'getOpt' returns a triple, consisting of the argument values, a list +of non-option (commands, files, etc), a list of options that didn\'t +match, and a list of error messages.-} + +getOpt :: ArgOrder a -- non-option handling + -> [OptDescr a] -- option descriptors + -> [String] -- the commandline arguments + -> ([a],[String], [String] ,[String]) -- (options,non-options,unrecognized,error messages) +getOpt _ _ [] = ([],[],[],[]) +getOpt ordering optDescr (arg:args) = procNextOpt opt ordering + where procNextOpt (Opt o) _ = (o:os,xs,ur,es) + procNextOpt (UnreqOpt u) _ = (os,xs,u:ur,es) + procNextOpt (NonOpt x) RequireOrder = ([],x:rest,ur,[]) + procNextOpt (NonOpt x) Permute = (os,x:xs,ur,es) + procNextOpt (NonOpt x) (ReturnInOrder f) = (f x :os, xs,ur,es) + procNextOpt EndOfOpts RequireOrder = ([],rest,ur,[]) + procNextOpt EndOfOpts Permute = ([],rest,ur,[]) + procNextOpt EndOfOpts (ReturnInOrder f) = (map f rest,[],ur,[]) + procNextOpt (OptErr e) _ = (os,xs,ur,e:es) + + (opt,rest) = getNext arg args optDescr + (os,xs,ur,es) = getOpt ordering optDescr rest + +-- take a look at the next cmd line arg and decide what to do with it +getNext :: String -> [String] -> [OptDescr a] -> (OptKind a,[String]) +getNext ('-':'-':[]) rest _ = (EndOfOpts,rest) +getNext ('-':'-':xs) rest optDescr = longOpt xs rest optDescr +getNext ('-': x :xs) rest optDescr = shortOpt x xs rest optDescr +getNext a rest _ = (NonOpt a,rest) + +-- handle long option +longOpt :: String -> [String] -> [OptDescr a] -> (OptKind a,[String]) +longOpt ls rs optDescr = long ads arg rs + where (opt,arg) = break (=='=') ls + getWith p = [ o | o@(Option _ xs _ _) <- optDescr, x <- xs, opt `p` x ] + exact = getWith (==) + options = if null exact then getWith isPrefixOf else exact + ads = [ ad | Option _ _ ad _ <- options ] + optStr = ("--"++opt) + + long (_:_:_) _ rest = (errAmbig options optStr,rest) + long [NoArg a ] [] rest = (Opt a,rest) + long [NoArg _ ] ('=':_) rest = (errNoArg optStr,rest) + long [ReqArg _ d] [] [] = (errReq d optStr,[]) + long [ReqArg f _] [] (r:rest) = (Opt (f r),rest) + long [ReqArg f _] ('=':xs) rest = (Opt (f xs),rest) + long [OptArg f _] [] rest = (Opt (f Nothing),rest) + long [OptArg f _] ('=':xs) rest = (Opt (f (Just xs)),rest) + long _ _ rest = (UnreqOpt optStr,rest) + +-- handle short option +shortOpt :: Char -> String -> [String] -> [OptDescr a] -> (OptKind a,[String]) +shortOpt y ys rs optDescr = short ads ys rs + where options = [ o | o@(Option ss _ _ _) <- optDescr, s <- ss, y == s ] + ads = [ ad | Option _ _ ad _ <- options ] + optStr = '-':[y] + + short (_:_:_) _ rest = (errAmbig options optStr,rest) + short (NoArg a :_) [] rest = (Opt a,rest) + short (NoArg a :_) xs rest = (Opt a,('-':xs):rest) + short (ReqArg _ d:_) [] [] = (errReq d optStr,[]) + short (ReqArg f _:_) [] (r:rest) = (Opt (f r),rest) + short (ReqArg f _:_) xs rest = (Opt (f xs),rest) + short (OptArg f _:_) [] rest = (Opt (f Nothing),rest) + short (OptArg f _:_) xs rest = (Opt (f (Just xs)),rest) + short [] [] rest = (UnreqOpt optStr,rest) + short [] xs rest = (UnreqOpt optStr,('-':xs):rest) + +-- miscellaneous error formatting + +errAmbig :: [OptDescr a] -> String -> OptKind a +errAmbig ods optStr = OptErr (usageInfo header ods) + where header = "option `" ++ optStr ++ "' is ambiguous; could be one of:" + +errReq :: String -> String -> OptKind a +errReq d optStr = OptErr ("option `" ++ optStr ++ "' requires an argument " ++ d ++ "\n") + +-- errUnrec :: String -> OptKind a +-- errUnrec optStr = OptErr ("unrecognized option `" ++ optStr ++ "'\n") + +errNoArg :: String -> OptKind a +errNoArg optStr = OptErr ("option `" ++ optStr ++ "' doesn't allow an argument\n") + +{- +----------------------------------------------------------------------------------------- +-- and here a small and hopefully enlightening example: + +data Flag = Verbose | Version | Name String | Output String | Arg String deriving Show + +options :: [OptDescr Flag] +options = + [Option ['v'] ["verbose"] (NoArg Verbose) "verbosely list files", + Option ['V','?'] ["version","release"] (NoArg Version) "show version info", + Option ['o'] ["output"] (OptArg out "FILE") "use FILE for dump", + Option ['n'] ["name"] (ReqArg Name "USER") "only dump USER's files"] + +out :: Maybe String -> Flag +out Nothing = Output "stdout" +out (Just o) = Output o + +test :: ArgOrder Flag -> [String] -> String +test order cmdline = case getOpt order options cmdline of + (o,n,[] ) -> "options=" ++ show o ++ " args=" ++ show n ++ "\n" + (_,_,errs) -> concat errs ++ usageInfo header options + where header = "Usage: foobar [OPTION...] files..." + +-- example runs: +-- putStr (test RequireOrder ["foo","-v"]) +-- ==> options=[] args=["foo", "-v"] +-- putStr (test Permute ["foo","-v"]) +-- ==> options=[Verbose] args=["foo"] +-- putStr (test (ReturnInOrder Arg) ["foo","-v"]) +-- ==> options=[Arg "foo", Verbose] args=[] +-- putStr (test Permute ["foo","--","-v"]) +-- ==> options=[] args=["foo", "-v"] +-- putStr (test Permute ["-?o","--name","bar","--na=baz"]) +-- ==> options=[Version, Output "stdout", Name "bar", Name "baz"] args=[] +-- putStr (test Permute ["--ver","foo"]) +-- ==> option `--ver' is ambiguous; could be one of: +-- -v --verbose verbosely list files +-- -V, -? --version, --release show version info +-- Usage: foobar [OPTION...] files... +-- -v --verbose verbosely list files +-- -V, -? --version, --release show version info +-- -o[FILE] --output[=FILE] use FILE for dump +-- -n USER --name=USER only dump USER's files +----------------------------------------------------------------------------------------- +-} + +{- $example + +To hopefully illuminate the role of the different data +structures, here\'s the command-line options for a (very simple) +compiler: + +> module Opts where +> +> import GetOpt -- (not System.Console.GetOpt) +> import Data.Maybe ( fromMaybe ) +> +> data Flag +> = Verbose | Version +> | Input String | Output String | LibDir String +> deriving Show +> +> options :: [OptDescr Flag] +> options = +> [ Option ['v'] ["verbose"] (NoArg Verbose) "chatty output on stderr" +> , Option ['V','?'] ["version"] (NoArg Version) "show version number" +> , Option ['o'] ["output"] (OptArg outp "FILE") "output FILE" +> , Option ['c'] [] (OptArg inp "FILE") "input FILE" +> , Option ['L'] ["libdir"] (ReqArg LibDir "DIR") "library directory" +> ] +> +> inp,outp :: Maybe String -> Flag +> outp = Output . fromMaybe "stdout" +> inp = Input . fromMaybe "stdout" +> +> compilerOpts :: [String] -> IO ([Flag], [String], [String]) +> compilerOpts argv = +> case (getOpt Permute options argv) of +> (o,n,no,[] ) -> return (o,n,no) +> (_,_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) +> where header = "Usage: ic [OPTION...] files..." + +-} hunk ./Distribution/Setup.hs 64 -import System.Console.GetOpt +import Distribution.GetOpt hunk ./Distribution/Setup.hs 171 -getCmdOpt cmd opts = getOpt Permute (cmdOptions cmd ++ liftCustomOpts opts) +getCmdOpt cmd opts s = let (a,b,c,d) = getOpt Permute (cmdOptions cmd ++ liftCustomOpts opts) s + in (a,c,d) hunk ./Distribution/Setup.hs 181 - (flags, _, []) | hasHelpFlag flags -> do + (flags, _, _, []) | hasHelpFlag flags -> do hunk ./Distribution/Setup.hs 184 - (flags, cname:cargs, []) -> do + (flags, cname:cargs, _, []) -> do hunk ./Distribution/Setup.hs 189 - (_, [], []) -> do putStrLn $ "No command given (try --help)" - exitWith (ExitFailure 1) - (_, _, errs) -> do mapM_ putStrLn errs - exitWith (ExitFailure 1) + (_, [], _, []) -> do putStrLn $ "No command given (try --help)" + exitWith (ExitFailure 1) + (_, _, _, errs) -> do putStrLn "Errors:" + mapM_ putStrLn errs + exitWith (ExitFailure 1) hunk ./Distribution/Setup.hs 223 - (_, _, errs) -> do mapM_ putStrLn errs + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs hunk ./Distribution/Setup.hs 255 - (_, _, errs) -> do mapM_ putStrLn errs + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs hunk ./Distribution/Setup.hs 276 - (_, _, errs) -> do mapM_ putStrLn errs + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs hunk ./Distribution/Setup.hs 317 - (_, _, errs) -> do mapM_ putStrLn errs + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs hunk ./Distribution/Setup.hs 336 - (_, _, errs) -> do mapM_ putStrLn errs + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs hunk ./Distribution/Setup.hs 365 - (_, _, errs) -> do mapM_ putStrLn errs + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs hunk ./Distribution/Setup.hs 392 - (_, _, errs) -> do mapM_ putStrLn errs + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs hunk ./Distribution/Setup.hs 420 - (_, _, errs) -> do mapM_ putStrLn errs + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs hunk ./Distribution/Simple.hs 85 -import Control.Monad(when) +import Control.Monad(when, unless) hunk ./Distribution/Simple.hs 89 -import System.Console.GetOpt +import Distribution.GetOpt hunk ./Distribution/Simple.hs 186 - no_extra_flags args hunk ./Distribution/Simple.hs 193 - no_extra_flags args hunk ./Distribution/Simple.hs 201 - no_extra_flags args hunk ./Distribution/Simple.hs 212 - no_extra_flags args hunk ./Distribution/Simple.hs 219 - no_extra_flags args hunk ./Distribution/Simple.hs 233 - no_extra_flags args hunk ./Distribution/Simple.hs 239 - no_extra_flags args hunk ./Distribution/Simple.hs 246 - no_extra_flags args hunk ./Distribution/Simple.hs 263 - hookOrInArgs :: (UserHooks -> (a -> b -> IO (Maybe PackageDescription))) - -> a + hookOrInArgs :: (UserHooks -> ([String] -> b -> IO (Maybe PackageDescription))) + -> [String] hunk ./Distribution/Simple.hs 269 - Nothing -> return pkg_descr_in + Nothing -> no_extra_flags a >> return pkg_descr_in hunk ./Distribution/Simple.hs 332 - preCopy = \_ -> readHook, - preInst = \_ -> readHook, + preCopy = readHook2, + preInst = readHook2, hunk ./Distribution/Simple.hs 335 - preReg = \_ -> readHook, + preReg = readHook2, hunk ./Distribution/Simple.hs 338 - where readHook _ = readPackageDescription hookedPackageDesc >>= (return . Just) + where readHook a = no_extra_flags a + >> readPackageDescription hookedPackageDesc + >>= (return . Just) + readHook2 a _ = no_extra_flags a + >> readPackageDescription hookedPackageDesc + >>= (return . Just) hunk ./Distribution/Simple.hs 347 - whenM (doesFileExist "configure") $ - rawSystem "./configure" + confExists <- doesFileExist "configure" + when confExists + (rawSystem "./configure" hunk ./Distribution/Simple.hs 351 + >> return ()) + unless confExists (no_extra_flags args) hunk ./Setup.description 17 + Distribution.GetOpt, hunk ./Distribution/Setup.hs 9 --- Portability : +-- Portability : GHC, Hugs hunk ./Distribution/Simple/Register.hs 9 --- Portability : +-- Portability : GHC, Hugs hunk ./Distribution/Simple/Register.hs 90 - -- was passed, and ~\/.ghc-packages is writable, or can be created, +-- was passed, and ~\/.ghc-packages is writable, or can be created, hunk ./Distribution/Simple/Register.hs 132 - let hunk ./Distribution/Compat/Directory.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Compat/Error.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Compat/Exception.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Compat/FilePath.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Compat/RawSystem.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Compat/ReadP.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Extension.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/ModuleTest.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/PackageDescription.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Setup.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Build.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Configure.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Install.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Register.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/SrcDist.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Simple/Utils.hs 1 -{-# OPTIONS -cpp -fffi #-} +{-# OPTIONS -fffi #-} hunk ./Distribution/Simple.hs 1 -{-# OPTIONS -cpp #-} hunk ./Distribution/Version.hs 1 -{-# OPTIONS -cpp -fglasgow-exts #-} +{-# OPTIONS -fglasgow-exts #-} hunk ./GNUmakefile 38 - rm -rf dist/tmp + rm -rf dist/tmp dist/hugs hunk ./GNUmakefile 41 - cp -r Distribution Compat dist/tmp + cp -r Distribution dist/tmp hunk ./Distribution/PackageDescription.hs 61 + hcOptions, hunk ./Distribution/PackageDescription.hs 346 + +-- |Select options for a particular Haskell compiler. +hcOptions :: CompilerFlavor -> [(CompilerFlavor, [String])] -> [String] +hcOptions hc hc_opts = [opt | (hc',opts) <- hc_opts, hc' == hc, opt <- opts] hunk ./Distribution/PreProcess.hs 71 --- |Apply preprocessors to the sources from 'hsSourceDirs', to obtain +-- |Apply preprocessors to the sources from 'hsSourceDir', to obtain hunk ./Distribution/Setup.hs 198 - cmdDescription = "This is the long description for configure.\nMulti-line!\n", + cmdDescription = "This is the long description for configure.\n", -- Multi-line! hunk ./Distribution/Setup.hs 241 - cmdDescription = "This is the long description for build.\nMulti-line!\n", + cmdDescription = "This is the long description for build.\n", -- Multi-line! hunk ./Distribution/Setup.hs 262 - cmdDescription = "This is the long description for clean.\nMulti-line!\n", + cmdDescription = "This is the long description for clean.\n", -- Multi-line! hunk ./Distribution/Setup.hs 351 - cmdDescription = "This is the long description for sdist.\nMulti-line!\n", + cmdDescription = "This is the long description for sdist.\n", -- Multi-line! hunk ./Distribution/Setup.hs 372 - cmdDescription = "This is the long description for register.\nMulti-line!\n", + cmdDescription = "This is the long description for register.\n", -- Multi-line! hunk ./Distribution/Setup.hs 406 - cmdDescription = "This is the long description for unregister.\nMulti-line!\n", + cmdDescription = "This is the long description for unregister.\n", -- Multi-line! hunk ./Distribution/Simple/Build.hs 54 - libModules, biModules) + libModules, biModules, hcOptions) hunk ./Distribution/Simple/Build.hs 70 -import Data.Char (isAlpha, isAlphaNum) hunk ./Distribution/Simple/Build.hs 75 - searchPathSeparator) + searchPathSeparator, objExtension) hunk ./Distribution/Simple/Build.hs 108 - ++ [ opt | (NHC,opts) <- maybe [] options (library pkg_descr), - opt <- opts ] + ++ maybe [] (hcOptions NHC . options) (library pkg_descr) hunk ./Distribution/Simple/Build.hs 143 - let hObjs = [ (hsSourceDir buildInfo') `joinFileName` (dotToSep x) `joinFileExt` objsuffix + let hObjs = [ (hsSourceDir buildInfo') `joinFileName` (dotToSep x) `joinFileExt` objExtension hunk ./Distribution/Simple/Build.hs 145 - cObjs = [ path `joinFileName` file `joinFileExt` objsuffix + cObjs = [ path `joinFileName` file `joinFileExt` objExtension hunk ./Distribution/Simple/Build.hs 176 - ++ nub (flags ++ [ opt | (GHC,opts) <- options buildInfo', opt <- opts ]) + ++ nub (flags ++ hcOptions GHC (options buildInfo')) hunk ./Distribution/Simple/Build.hs 236 - when ("foreign" `elem` identifiers (stripComments False inp)) $ do + when ("foreign" `elem` symbols (stripComments False inp)) $ do hunk ./Distribution/Simple/Build.hs 271 - -- List of variable identifiers (and reserved words) in a source file. - identifiers :: String -> [String] - identifiers cs = case dropWhile (not . isStartChar) cs of - [] -> [] - rest -> ident : identifiers cs' - where (ident, cs') = span isFollowChar rest - - isStartChar c = c == '_' || isAlpha c - isFollowChar c = c == '_' || c == '\'' || isAlphaNum c + -- List of terminal symbols in a source file. + symbols :: String -> [String] + symbols cs = case lex cs of + (sym, cs'):_ | not (null sym) -> sym : symbols cs' + _ -> [] hunk ./Distribution/Simple/Build.hs 282 - -hcOptions :: CompilerFlavor -> [(CompilerFlavor, [String])] -> [String] -hcOptions hc hc_opts = [opt | (hc',opts) <- hc_opts, hc' == hc, opt <- opts] hunk ./Distribution/Simple/Build.hs 286 - -objsuffix :: String -objsuffix = "o" hunk ./Distribution/Simple/Install.hs 61 - setupMessage, hasLibs, withLib, libModules, exeModules, biModules) + setupMessage, hasLibs, withLib, libModules, exeModules, biModules, + hcOptions) hunk ./Distribution/Simple/Install.hs 150 - let targetName = progTargetDir `joinFileName` fname hunk ./Distribution/Simple/Install.hs 151 - let exeFile = binPref `joinFileName` exeName exe +#ifndef mingw32_TARGET_OS hunk ./Distribution/Simple/Install.hs 153 - -- FIX (HUGS): supply language options for runhugs? + let targetName = progTargetDir `joinFileName` fname + let exeFile = binPref `joinFileName` exeName exe + -- FIX (HUGS): use extensions, and options from file too? + let hugsOptions = hcOptions Hugs (options (buildInfo exe)) hunk ./Distribution/Simple/Install.hs 159 - "runhugs " ++ targetName] + unwords ("runhugs" : hugsOptions ++ [targetName, "\"$@\""])] hunk ./Distribution/Simple/Install.hs 163 +#endif hunk ./Distribution/Simple.hs 95 +-- |Package description file (@Setup.description@) hunk ./Distribution/Simple.hs 99 +-- |Package build information file (@Setup.buildinfo@) used by +-- 'defaultUserHooks'. hunk ./Distribution/Simple.hs 294 --- |Empty UserHooks which do nothing. +-- |Empty 'UserHooks' which do nothing. hunk ./Distribution/Simple.hs 321 --- |Basic default 'UserHooks' which read and write to --- 'hookedPackageDesc'. It's likely that unless you have a very --- basic /configure/ script, you will want to override preConf. +-- |Basic default 'UserHooks': +-- +-- * on non-Windows systems, 'preConf' runs @.\/configure@, if present. +-- +-- * all pre-hooks read additional build information from 'hookedPackageDesc', +-- if present. +-- +-- Thus @configure@ can use local system information to generate +-- 'hookedPackageDesc' and possibly other files. hunk ./Distribution/Simple.hs 346 - where readHook a = no_extra_flags a - >> readPackageDescription hookedPackageDesc - >>= (return . Just) - readHook2 a _ = no_extra_flags a - >> readPackageDescription hookedPackageDesc - >>= (return . Just) + where readHook a = no_extra_flags a >> readHookedPackageDesc + readHook2 a _ = no_extra_flags a >> readHookedPackageDesc hunk ./Distribution/Simple.hs 349 +#ifdef mingw32_TARGET_OS + defaultPreConf = readHook2 +#else hunk ./Distribution/Simple.hs 355 - when confExists - (rawSystem "./configure" + if confExists then do + rawSystem "./configure" hunk ./Distribution/Simple.hs 358 - >> return ()) - unless confExists (no_extra_flags args) - outDesc <- readPackageDescription hookedPackageDesc - return $ Just outDesc - - - -whenM :: IO Bool -> IO a -> IO () -whenM cond act = do - b <- cond - when b $ do - act - return () + return () + else + no_extra_flags args + readHookedPackageDesc +#endif + readHookedPackageDesc + = do exists <- doesFileExist hookedPackageDesc + if exists then do + pkg_descr <- readPackageDescription hookedPackageDesc + return (Just pkg_descr) + else + return Nothing hunk ./Distribution/Compat/FilePath.hs 380 --- (typically @\"\"@ on Unix and @\".exe\"@ on Windows or OS\/2) +-- (typically @\"\"@ on Unix and @\"exe\"@ on Windows or OS\/2) hunk ./Distribution/Compat/FilePath.hs 383 -exeExtension = ".exe" +exeExtension = "exe" hunk ./Distribution/Compat/FilePath.hs 390 --- (typically @\".o\"@ on Unix and @\".obj\"@ on Windows) +-- (typically @\"o\"@ on Unix and @\"obj\"@ on Windows) hunk ./Distribution/Compat/FilePath.hs 393 -objExtension = ".obj" +objExtension = "obj" hunk ./Distribution/Compat/FilePath.hs 395 -objExtension = ".o" +objExtension = "o" hunk ./Distribution/Compat/FilePath.hs 399 --- (typically @\".so\"@ on Unix and @\".dll\"@ on Windows) +-- (typically @\"so\"@ on Unix and @\"dll\"@ on Windows) hunk ./Distribution/Compat/FilePath.hs 402 -dllExtension = ".dll" +dllExtension = "dll" hunk ./Distribution/Compat/FilePath.hs 404 -dllExtension = ".so" +dllExtension = "so" hunk ./Distribution/Simple/Install.hs 166 -hugsInstallSuffixes = ["hs", "lhs", drop 1 dllExtension] +hugsInstallSuffixes = ["hs", "lhs", dllExtension] hunk ./Distribution/PackageDescription.hs 72 -import Text.PrettyPrint.HughesPJ +import Text.PrettyPrint.HughesPJ(text, render, ($$), empty, space, vcat, fsep) hunk ./Distribution/PackageDescription.hs 432 - exposedModules (\xs binfo -> binfo{executableModules=xs}) + executableModules (\xs binfo -> binfo{executableModules=xs}) hunk ./Distribution/PackageDescription.hs 450 - includes (\paths binfo -> binfo{includeDirs=paths}) + includeDirs (\paths binfo -> binfo{includeDirs=paths}) hunk ./Distribution/ParseUtils.hs 274 - | all (\x -> isAlphaNum x || x `elem` "-+/_.") fpath = text fpath - | otherwise = doubleQuotes (text fpath) - + | all (\x -> isAlphaNum x || x `elem` "-+/_.") fpath = text (replaceSlash fpath) + | otherwise = doubleQuotes (text (replaceSlash fpath)) + where + replaceSlash s = case break (== '\\') s of + (a, (h:t)) -> a ++ (h:h:(replaceSlash t)) + (a, []) -> a hunk ./TODO 2 -** if you're passing arguments to hooks, you shouldn't call - no_extra_flags, should you? Perhaps it should be in the empty hooks. - hunk ./Distribution/Simple/Build.hs 75 - searchPathSeparator, objExtension) + searchPathSeparator, objExtension, joinPaths) hunk ./Distribution/Simple/Build.hs 155 + let exeDir = joinPaths targetDir (exeName' ++ "-tmp") + createIfNotExists True exeDir hunk ./Distribution/Simple/Build.hs 159 - ++ ["-odir", targetDir, - "-hidir", targetDir, + ++ ["-odir", exeDir, + "-hidir", exeDir, hunk ./TODO 2 -** two executables in same directory fails because both create Main.o -** Executables that depend on the package itself + +** Executables that depend on the package itself: build the package +first, install it into a local package.conf and then build the +executables against the package. + hunk ./package.conf.in 9 + Distribution.GetOpt, hunk ./Distribution/Compat/Directory.hs 2 - findExecutable, copyFile + findExecutable, copyFile, getHomeDirectory hunk ./Distribution/Compat/Directory.hs 11 -import System.Directory ( findExecutable, copyFile ) +import System.Directory ( findExecutable, copyFile, getHomeDirectory ) hunk ./Distribution/Compat/Directory.hs 91 + +getHomeDirectory :: IO FilePath +getHomeDirectory = getEnv "HOME" hunk ./Distribution/Simple/GHCPackageConfig.hs 31 -import System.Environment(getEnv) hunk ./Distribution/Simple/GHCPackageConfig.hs 33 +import Distribution.Compat.Directory (getHomeDirectory) hunk ./Distribution/Simple/GHCPackageConfig.hs 39 -localPackageConfig = do u <- getEnv "HOME" +localPackageConfig = do u <- getHomeDirectory hunk ./Distribution/License.hs 4 --- Copyright : Isaac Jones 2003-2004 +-- Copyright : Isaac Jones 2003-2005 hunk ./Distribution/License.hs 10 --- The License datatype. +-- The License datatype. For more information about these and other +-- open-source licenses, you may visit . +-- +-- I am not a lawyer, but as a general guideline, most Haskell +-- software seems to be released under a BSD3 license, which is very +-- open and free. If you don't want to restrict the use of your +-- software or its source code, use BSD3 or PublicDomain. hunk ./Distribution/License.hs 52 +-- |This datatype indicates the license under which your package is +-- released. It is also wise to add your license to each source file. +-- The "AllRightsReserved" constructor is not actually a license, but +-- states that you are not giving anyone else a license to use or +-- distribute your work. The comments below are general guidelines. +-- Please read the licenses themselves and consult a lawyer if you are +-- unsure of your rights to release the software. hunk ./Distribution/License.hs 60 -data License = GPL | LGPL | BSD3 | BSD4 | PublicDomain | AllRightsReserved +data License = GPL -- ^GNU Public License. Source code must accompany alterations. + | LGPL -- ^Lesser GPL, Less restrictive than GPL, useful for libraries. + | BSD3 -- ^3-clause BSD license, newer, no advertising clause. Very free license. + | BSD4 -- ^4-clause BSD license, older, with advertising clause. + | PublicDomain -- ^Holder makes no claim to ownership, least restrictive license. + | AllRightsReserved -- ^No rights are granted to others. Undistributable. Most restrictive. hunk ./Distribution/License.hs 67 + -- ^Use another license by listing the relative path to your license file. hunk ./Setup.description 3 -License: AllRightsReserved +License: BSD3 adddir ./test/depOnLib adddir ./test/depOnLib/libs adddir ./test/depOnLib/mains hunk ./Distribution/ModuleTest.hs 249 - assertCmd "./dist/build/testB isB" "B is not B" + assertCmd "./dist/build/testB isB" "B is not B", + TestLabel "package depOnLib: GHC building (executable depending on its lib)" $ TestCase $ + do setCurrentDirectory $ (testdir `joinFileName` "depOnLib") + system "make clean" + system "make" + assertCmd "./setup configure --ghc --prefix=,tmp" + "configure returned error code" + assertCmd "./setup build" + "build returned error code" + doesFileExist "dist/build/mainForA" >>= + assertBool "build did not create the executable: mainForA" + doesFileExist ("dist/build/" `joinFileName` "libHStest-1.0.a") + >>= assertBool "library doesn't exist" addfile ./test/depOnLib/Makefile hunk ./test/depOnLib/Makefile 1 +include ../Tests.mk addfile ./test/depOnLib/Setup.description hunk ./test/depOnLib/Setup.description 1 +Name: test +Version: 1.0 +hs-source-dir: libs +exposed-modules: A + +Executable: mainForA +Executable-Modules: Main, A +hs-source-dir: mains +Main-is: Main.hs addfile ./test/depOnLib/Setup.lhs hunk ./test/depOnLib/Setup.lhs 1 +#!/usr/bin/runhugs + +> module Main where + +> import Distribution.Simple + +> main :: IO () +> main = defaultMain addfile ./test/depOnLib/libs/A.hs hunk ./test/depOnLib/libs/A.hs 1 +module A where + +a :: Char +a = 'a' addfile ./test/depOnLib/mains/Main.hs hunk ./test/depOnLib/mains/Main.hs 1 - +module Main where +import A + +main = putStrLn "Hello, cabal." hunk ./Distribution/ModuleTest.hs 258 - doesFileExist "dist/build/mainForA" >>= + assertCmd "./setup copy" + "instal returned error code" + doesFileExist "dist/build/mains/mainForA" >>= hunk ./Distribution/ModuleTest.hs 264 + doesFileExist (",tmp/bin/mainForA") + >>= assertBool "installed bin doesn't exist" + doesFileExist (",tmp/lib/test-1.0/libHStest-1.0.a") + >>= assertBool "installed lib doesn't exist" hunk ./test/Tests.mk 1 -all: +setup: hunk ./test/Tests.mk 4 - rm -f setup a.out + rm -f setup a.out .setup-config hunk ./Distribution/PreProcess.hs 53 -import Data.Maybe (fromMaybe) +import Data.Maybe (fromMaybe, maybeToList) hunk ./Distribution/PreProcess.hs 79 - setupMessage "Preprocessing" pkg_descr - foreachBuildInfo pkg_descr $ \ bi -> - sequence_ [preprocessModule (hsSourceDir bi) mod localHandlers | + setupMessage "Preprocessing library" pkg_descr + + withLib pkg_descr $ \ bi -> + sequence_ [preprocessModule [hsSourceDir bi] mod localHandlers | + mod <- biModules bi] -- FIX: output errors? + setupMessage "Preprocessing executables for" pkg_descr + foreachBuildInfo False pkg_descr $ \ bi -> + sequence_ [preprocessModule ((hsSourceDir bi) + :(maybeToList (library pkg_descr >>= Just . hsSourceDir))) + mod localHandlers | hunk ./Distribution/PreProcess.hs 100 - :: FilePath -- ^source directory + :: [FilePath] -- ^source directories hunk ./Distribution/PreProcess.hs 107 - [] -> die ("can't find source for " ++ mod) + [] -> die ("can't find source for " ++ mod ++ " in " ++ show searchLoc ) hunk ./Distribution/PreProcess.hs 119 -removePreprocessedPackage pkg_descr r suff - = foreachBuildInfo pkg_descr $ \ bi -> +removePreprocessedPackage pkg_descr r suff + = foreachBuildInfo True pkg_descr $ \ bi -> hunk ./Distribution/PreProcess.hs 132 - fs <- moduleToFilePath searchLoc m otherSuffixes + fs <- moduleToFilePath [searchLoc] m otherSuffixes hunk ./Distribution/PreProcess.hs 134 - hs <- moduleToFilePath searchLoc m ["hs"] + hs <- moduleToFilePath [searchLoc] m ["hs"] hunk ./Distribution/PreProcess.hs 139 -foreachBuildInfo :: PackageDescription -> (BuildInfo -> IO a) -> IO () -foreachBuildInfo pkg_descr action = do - withLib pkg_descr (\ bi -> action bi >> return ()) +foreachBuildInfo :: Bool -- Including the library? + -> PackageDescription -> (BuildInfo -> IO a) + -> IO () +foreachBuildInfo includeLib pkg_descr action = do + when includeLib (withLib pkg_descr (\ bi -> action bi >> return ())) hunk ./Distribution/Simple/Build.hs 67 - +import Data.Maybe(maybeToList) hunk ./Distribution/Simple/Build.hs 128 - ++ constructGHCCmdLine buildInfo' (packageDeps lbi) + ++ constructGHCCmdLine Nothing buildInfo' (packageDeps lbi) hunk ./Distribution/Simple/Build.hs 163 - ++ constructGHCCmdLine exeBi (exeDeps exeName' lbi) + ++ constructGHCCmdLine (library pkg_descr >>= Just . hsSourceDir) + exeBi (exeDeps exeName' lbi) hunk ./Distribution/Simple/Build.hs 173 -constructGHCCmdLine :: BuildInfo -> [PackageIdentifier] -> [String] -constructGHCCmdLine buildInfo' deps = +constructGHCCmdLine :: Maybe FilePath -- If we're building an executable, we need the library's filepath + -> BuildInfo + -> [PackageIdentifier] + -> [String] +constructGHCCmdLine mSrcLoc buildInfo' deps = hunk ./Distribution/Simple/Build.hs 181 + ++ maybe [] (\l -> ["-i" ++ l]) mSrcLoc hunk ./Distribution/Simple/Build.hs 190 - withLib pkg_descr $ compileBuildInfo pref + withLib pkg_descr $ compileBuildInfo pref Nothing hunk ./Distribution/Simple/Build.hs 199 - compileBuildInfo destDir bi + compileBuildInfo destDir (library pkg_descr >>= Just . hsSourceDir) bi hunk ./Distribution/Simple/Build.hs 202 - compileBuildInfo :: FilePath -> BuildInfo -> IO () - compileBuildInfo destDir bi = do + compileBuildInfo :: FilePath + -> Maybe FilePath -- ^The library source dir, if building exes + -> BuildInfo -> IO () + compileBuildInfo destDir mLibSrcDir bi = do hunk ./Distribution/Simple/Build.hs 208 - let srcDir = hsSourceDir bi - fileLists <- sequence [moduleToFilePath srcDir mod suffixes | + let srcDir = hsSourceDir bi + let srcDirs = srcDir:(maybeToList mLibSrcDir) + fileLists <- sequence [moduleToFilePath srcDirs mod suffixes | hunk ./Distribution/Simple/Build.hs 219 - fileLists <- sequence [moduleToFilePath destDir mod suffixes | + fileLists <- sequence [moduleToFilePath [destDir] mod suffixes | hunk ./Distribution/Simple/Utils.hs 166 -moduleToFilePath :: FilePath -- ^search location +moduleToFilePath :: [FilePath] -- ^search locations hunk ./Distribution/Simple/Utils.hs 172 - = do let possiblePaths = moduleToPossiblePaths pref s possibleSuffixes + = do let possiblePaths = concatMap (searchModuleToPossiblePaths s possibleSuffixes) pref hunk ./Distribution/Simple/Utils.hs 175 + where searchModuleToPossiblePaths :: String -> [String] -> FilePath -> [FilePath] + searchModuleToPossiblePaths s suffs searchP + = moduleToPossiblePaths searchP s suffs hunk ./Distribution/Simple/Utils.hs 217 - = do p <- moduleToFilePath pref m searchSuffixes + = do p <- moduleToFilePath [pref] m searchSuffixes hunk ./Distribution/Simple/Utils.hs 405 - do mp1 <- moduleToFilePath "" "Distribution.Simple.Build" suffixes --exists - mp2 <- moduleToFilePath "" "Foo.Bar" suffixes -- doesn't exist + do mp1 <- moduleToFilePath [""] "Distribution.Simple.Build" suffixes --exists + mp2 <- moduleToFilePath [""] "Foo.Bar" suffixes -- doesn't exist hunk ./TODO 3 -** Executables that depend on the package itself: build the package -first, install it into a local package.conf and then build the -executables against the package. - hunk ./Distribution/PreProcess.hs 69 - = (String, PackageDescription -> LocalBuildInfo -> PreProcessor) + = (String, PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor) hunk ./Distribution/PreProcess.hs 81 - withLib pkg_descr $ \ bi -> - sequence_ [preprocessModule [hsSourceDir bi] mod localHandlers | + withLib pkg_descr $ \ bi -> do + let biHandlers = localHandlers bi + sequence_ [preprocessModule [hsSourceDir bi] mod biHandlers | hunk ./Distribution/PreProcess.hs 86 - foreachBuildInfo False pkg_descr $ \ bi -> + foreachBuildInfo False pkg_descr $ \ bi -> do + let biHandlers = localHandlers bi hunk ./Distribution/PreProcess.hs 90 - mod localHandlers | + mod biHandlers | hunk ./Distribution/PreProcess.hs 96 - localHandlers = [(ext, Nothing) | ext <- builtinSuffixes] ++ - [(ext, Just (h pkg_descr lbi)) | (ext, h) <- handlers] + trivialHandlers = [(ext, Nothing) | ext <- builtinSuffixes] + localHandlers bi = trivialHandlers ++ + [(ext, Just (h pkg_descr bi lbi)) | (ext, h) <- handlers] hunk ./Distribution/PreProcess.hs 153 -ppCpp, ppGreenCard, ppC2hs :: PreProcessor +ppGreenCard, ppC2hs :: PreProcessor hunk ./Distribution/PreProcess.hs 155 -ppCpp inFile outFile - = rawSystemPath "cpphs" ["-O" ++ outFile, inFile] hunk ./Distribution/PreProcess.hs 168 +ppCpp :: PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor +ppCpp pkg_descr bi lbi = pp + where pp inFile outFile + = rawSystemPath "cpphs" (extraArgs ++ ["-O" ++ outFile, inFile]) + extraArgs = hcFlags hc ++ + ["-I" ++ dir | dir <- includeDirs bi] ++ ccOptions pkg_descr + hc = compilerFlavor (compiler lbi) + hunk ./Distribution/PreProcess.hs 179 -ppHsc2hs :: PackageDescription -> LocalBuildInfo -> PreProcessor -ppHsc2hs pkg_descr lbi - = standardPP "hsc2hs" (hcFlags hc ++ ccOptions pkg_descr) +ppHsc2hs :: PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor +ppHsc2hs pkg_descr bi lbi + = standardPP "hsc2hs" (hcFlags hc ++ incOptions ++ ccOptions pkg_descr) hunk ./Distribution/PreProcess.hs 183 - hcFlags NHC = ["-D__NHC__"] - hcFlags Hugs = ["-D__HUGS__"] - hcFlags _ = [] + incOptions = ["-I" ++ dir | dir <- includeDirs bi] hunk ./Distribution/PreProcess.hs 185 -ppHappy :: PackageDescription -> LocalBuildInfo -> PreProcessor -ppHappy _ lbi +-- FIX: should add NHC versions too (maybe just use nhc as cpp?) +hcFlags :: CompilerFlavor -> [String] +hcFlags NHC = ["-D__NHC__"] +hcFlags Hugs = ["-D__HUGS__"] +hcFlags _ = [] + +ppHappy :: PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor +ppHappy _ _ lbi hunk ./Distribution/PreProcess.hs 216 - [ ("gc", \ _ _ -> ppGreenCard) - , ("chs", \ _ _ -> ppC2hs) + [ ("gc", \ _ _ _ -> ppGreenCard) + , ("chs", \ _ _ _ -> ppC2hs) hunk ./Distribution/PreProcess.hs 221 - , ("cpphs", \ _ _ -> ppCpp) - , ("testSuffix", \ _ _ -> ppTestHandler) + , ("cpphs", ppCpp) + , ("testSuffix", \ _ _ _ -> ppTestHandler) hunk ./Distribution/Simple/Build.hs 122 - let args = ccOptions pkg_descr + let args = ["-I" ++ dir | dir <- includeDirs buildInfo'] + ++ ccOptions pkg_descr hunk ./Distribution/Simple/Build.hs 138 - let args = ccOptions pkg_descr + let args = ["-I" ++ dir | dir <- includeDirs buildInfo'] + ++ ccOptions pkg_descr hunk ./Distribution/Simple/Build.hs 159 - let args = ccOptions pkg_descr + let args = ["-I" ++ dir | dir <- includeDirs exeBi] + ++ ccOptions pkg_descr hunk ./Distribution/Simple/Build.hs 201 - copyModule (CPP `elem` extensions bi) srcMainFile destMainFile + copyModule (CPP `elem` extensions bi) bi srcMainFile destMainFile hunk ./Distribution/Simple/Build.hs 219 - copyModule useCpp f (destDir `joinFileName` trimSrcDir f) + copyModule useCpp bi f (destDir `joinFileName` trimSrcDir f) hunk ./Distribution/Simple/Build.hs 229 - copyModule :: Bool -> FilePath -> FilePath -> IO () - copyModule cppAll srcFile destFile = do + copyModule :: Bool -> BuildInfo -> FilePath -> FilePath -> IO () + copyModule cppAll bi srcFile destFile = do hunk ./Distribution/Simple/Build.hs 235 - cppFile srcFile destFile + cppFile bi srcFile destFile hunk ./Distribution/Simple/Build.hs 240 - cppFile inFile outFile = + cppFile bi inFile outFile = hunk ./Distribution/Simple/Build.hs 243 + ["-I" ++ dir | dir <- includeDirs bi] ++ hunk ./Distribution/Simple/Build.hs 260 + ["-I" ++ dir | dir <- includeDirs bi] ++ move ./test/A/Setup.description ./test/A/A.cabal move ./test/depOnLib/Setup.description ./test/depOnLib/test.cabal hunk ./Distribution/Make.hs 55 -import Distribution.Simple.Utils (maybeExit) +import Distribution.Simple.Utils (maybeExit, defaultPackageDesc) hunk ./Distribution/Make.hs 86 --- I'm not happy about this being here. I just copied it from Simple.hs, --- but it should be in a utility module. -defaultPackageDesc :: FilePath -defaultPackageDesc = "Setup.description" - hunk ./Distribution/Make.hs 109 -defaultMain = readPackageDescription defaultPackageDesc >>= defaultMainNoRead +defaultMain = defaultPackageDesc >>= readPackageDescription >>= defaultMainNoRead hunk ./Distribution/Simple/Utils.hs 62 + defaultPackageDesc, + hookedPackageDesc, + findPackageDesc, hunk ./Distribution/Simple/Utils.hs 111 +warn :: String -> IO () +warn msg = do hFlush stdout; hPutStr stderr ("Warning: " ++ msg++"\n") + hunk ./Distribution/Simple/Utils.hs 388 + + + + +-- ------------------------------------------------------------ +-- * Finding the description file +-- ------------------------------------------------------------ + +oldDescFile = "Setup.description" +cabalExt = "cabal" + +matchesDescFile :: FilePath -> Bool +matchesDescFile p = (snd $ splitFileExt p) == cabalExt + || p == oldDescFile + +noDesc = die $ "No description file found, please create a cabal-formatted description file with the name ." ++ cabalExt + +multiDesc l = die $ "Multiple description files found. Please use only one of : " + ++ show (filter (/= oldDescFile) l) + +-- |A list of possibly correct description files. Should be pre-filtered. +descriptionCheck :: [FilePath] -> IO FilePath +descriptionCheck [] = noDesc +descriptionCheck [x] + | x == oldDescFile + = do warn $ "The filename \"Setup.description\" is deprecated, please move to ." ++ cabalExt + return x + | matchesDescFile x = return x + | otherwise = noDesc +descriptionCheck [x,y] + | x == oldDescFile + = do warn $ "The filename \"Setup.description\" is deprecated. Please move out of the way. Using \"" + ++ y ++ "\"" + return y + | y == oldDescFile + = do warn $ "The filename \"Setup.description\" is deprecated. Please move out of the way. Using \"" + ++ x ++ "\"" + return x + + | otherwise = multiDesc [x,y] +descriptionCheck l = multiDesc l + +-- |Package description file (@.cabal@) +defaultPackageDesc :: IO FilePath +defaultPackageDesc = getCurrentDirectory >>= findPackageDesc + +-- |Find a package description file in the given directory. Looks for +-- .cabal files. +findPackageDesc :: FilePath -- ^Where to look + -> IO FilePath -- .cabal +findPackageDesc p = do ls <- getDirectoryContents p + let descs = filter matchesDescFile ls + descriptionCheck descs + +-- |Package build information file (@Setup.buildinfo@) used by +-- 'defaultUserHooks'. +hookedPackageDesc :: FilePath +hookedPackageDesc = "Setup.buildinfo" hunk ./Distribution/Simple.hs 71 -import Distribution.Simple.Utils (die, removeFileRecursive, currentDir) +import Distribution.Simple.Utils (die, removeFileRecursive, currentDir, + defaultPackageDesc, hookedPackageDesc) hunk ./Distribution/Simple.hs 96 --- |Package description file (@Setup.description@) -defaultPackageDesc :: FilePath -defaultPackageDesc = "Setup.description" - --- |Package build information file (@Setup.buildinfo@) used by --- 'defaultUserHooks'. -hookedPackageDesc :: FilePath -hookedPackageDesc = "Setup.buildinfo" - hunk ./Distribution/Simple.hs 144 - pkg_descr <- readPackageDescription defaultPackageDesc + pkg_descr <- defaultPackageDesc >>= readPackageDescription hunk ./Distribution/Simple.hs 156 - Nothing -> do pkg_descr <- readPackageDescription defaultPackageDesc + Nothing -> do pkg_descr <- defaultPackageDesc >>= readPackageDescription hunk ./Setup.description 2 -Version: 0.2 +Version: 0.3 +Copyright: 2003-2005, Isaac Jones hunk ./Setup.description 5 -build-depends: haskell-src, posix -Extensions: CPP +Author: Isaac Jones +Maintainer: Isaac Jones +Package-URL: http://www.haskell.org/cabal/ +Description: + Common Architecture for Building Applications and Libraries: + a framework defining a common interface for authors to more + easily build their Haskell applications in a portable way. + . + The Haskell Cabal is meant to be a part of a larger infrastructure + for distributing, organizing, and cataloging Haskell libraries + and tools. +Category: Distribution hunk ./Setup.description 18 - Distribution.Simple, - Distribution.Simple.Build, - Distribution.Simple.Install, - Distribution.Simple.Utils, - Distribution.Simple.Register, - Distribution.Simple.Configure, - Distribution.Simple.SrcDist, - Distribution.Simple.GHCPackageConfig, - Distribution.Simple.LocalBuildInfo, - Distribution.Version, - Distribution.GetOpt, - Distribution.Setup, - Distribution.PreProcess.Unlit, - Distribution.License, - Distribution.Extension, - Distribution.PackageDescription, - Distribution.Package, - Distribution.InstalledPackageInfo, - Distribution.ParseUtils, - Distribution.Make, - Distribution.PreProcess + Distribution.Extension, + Distribution.GetOpt, + Distribution.InstalledPackageInfo, + Distribution.License, + Distribution.Make, + Distribution.Package, + Distribution.PackageDescription, + Distribution.ParseUtils, + Distribution.PreProcess, + Distribution.PreProcess.Unlit, + Distribution.Setup, + Distribution.Simple, + Distribution.Simple.Build, + Distribution.Simple.Configure, + Distribution.Simple.GHCPackageConfig, + Distribution.Simple.Install, + Distribution.Simple.LocalBuildInfo, + Distribution.Simple.Register, + Distribution.Simple.SrcDist, + Distribution.Simple.Utils, + Distribution.Version hunk ./Setup.description 40 - Distribution.Compat.Error, - Distribution.Compat.Exception, - Distribution.Compat.RawSystem, - Distribution.Compat.ReadP, - Distribution.Compat.FilePath, - Distribution.Compat.Directory + Distribution.Compat.Directory, + Distribution.Compat.Error, + Distribution.Compat.Exception, + Distribution.Compat.FilePath, + Distribution.Compat.RawSystem, + Distribution.Compat.ReadP +Build-Depends: base, mtl +Extensions: CPP hunk ./Distribution/Compat/FilePath.hs 13 + , dropAbsolutePrefix hunk ./Distribution/Compat/FilePath.hs 215 + +-- | If the function is applied to an absolute path then it returns a local path droping +-- the absolute prefix in the path. Under Windows the prefix is \"\\\", \"c:\" or \"c:\\\". Under +-- Unix the prefix is always \"/\". +dropAbsolutePrefix :: FilePath -> FilePath +dropAbsolutePrefix (c:cs) | isPathSeparator c = cs +#ifdef mingw32_TARGET_OS +dropAbsolutePrefix (_:':':c:cs) | isPathSeparator c = cs -- path with drive letter +dropAbsolutePrefix (_:':':cs) = cs +#endif +dropAbsolutePrefix cs = cs hunk ./Distribution/Simple.hs 90 -import Distribution.Compat.FilePath(joinFileName, joinPaths) +import Distribution.Compat.FilePath(joinFileName, dropAbsolutePrefix) hunk ./Distribution/Simple.hs 246 - return $ joinPaths f1' f2 + let f2' = dropAbsolutePrefix f2 + return $ (joinFileName f1' f2') hunk ./README 19 -* HUnit also uses the standard setup script interface, and has to get - installed and registered before you can build the setup for Cabal. - The install target of the GNUmakefile does everything in the right - order. - hunk ./README 44 +- Krasimir Angelov hunk ./README 48 +- Ross Patterson hunk ./README 50 -- Krasimir Angelov hunk ./Setup.description 19 - Distribution.GetOpt, hunk ./Setup.description 39 + Distribution.GetOpt, hunk ./Distribution/ModuleTest.hs 129 + assertCmd "./setup haddock" "setup haddock returned error code." hunk ./Distribution/ModuleTest.hs 150 + assertCmd "./setup haddock" "setup haddock returned error code." + hunk ./Distribution/ModuleTest.hs 165 + assertCmd "./setup haddock" "setup haddock returned error code." hunk ./Distribution/ModuleTest.hs 181 + assertCmd "./setup haddock" "setup haddock returned error code." hunk ./Distribution/ModuleTest.hs 229 + assertCmd "./setup haddock" "setup haddock returned error code." hunk ./Distribution/ModuleTest.hs 248 + assertCmd "./setup haddock" "setup haddock returned error code." hunk ./Distribution/ModuleTest.hs 263 + assertCmd "./setup haddock" "setup haddock returned error code." hunk ./Distribution/PackageDescription.hs 243 -withLib :: PackageDescription -> (BuildInfo -> IO ()) -> IO () -withLib pkg_descr f = when (hasLibs pkg_descr) $ f (fromJust (library pkg_descr)) +withLib :: PackageDescription -> a -> (BuildInfo -> IO a) -> IO a +withLib pkg_descr a f = if hasLibs pkg_descr + then f (fromJust (library pkg_descr)) + else return a hunk ./Distribution/PreProcess.hs 9 -{- Copyright (c) 2003-2004, Isaac Jones, Malcolm Wallace +{- Copyright (c) 2003-2005, Isaac Jones, Malcolm Wallace hunk ./Distribution/PreProcess.hs 42 - removePreprocessed, removePreprocessedPackage) + removePreprocessed, removePreprocessedPackage, + ppCpp, ppGreenCard, ppC2hs, ppHsc2hs, ppHappy, ppUnlit + ) hunk ./Distribution/PreProcess.hs 63 -type PreProcessor = FilePath -- ^Location of the source file in need of preprocessing - -> FilePath -- ^Output filename +type PreProcessor = FilePath -- Location of the source file in need of preprocessing + -> FilePath -- Output filename hunk ./Distribution/PreProcess.hs 83 - withLib pkg_descr $ \ bi -> do + withLib pkg_descr () $ \ bi -> do hunk ./Distribution/PreProcess.hs 148 - when includeLib (withLib pkg_descr (\ bi -> action bi >> return ())) + when includeLib (withLib pkg_descr () (\ bi -> action bi >> return ())) hunk ./Distribution/PreProcess.hs 174 - extraArgs = hcFlags hc ++ + extraArgs = "--noline":hcFlags hc ++ hunk ./Distribution/Setup.hs 52 + parseHaddockArgs, hunk ./Distribution/Setup.hs 88 + | HaddockCmd -- haddock hunk ./Distribution/Setup.hs 146 - copyCmd, sdistCmd, registerCmd, unregisterCmd] + copyCmd, sdistCmd, haddockCmd, registerCmd, unregisterCmd] hunk ./Distribution/Setup.hs 249 -parseBuildArgs args customOpts = - case getCmdOpt buildCmd customOpts args of - (flags, _, []) | hasHelpFlag flags -> do - printCmdHelp buildCmd customOpts - exitWith ExitSuccess - (flags, args', []) -> - return (unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) +parseBuildArgs = parseNoArgs buildCmd + +haddockCmd :: Cmd a +haddockCmd = Cmd { + cmdName = "haddock", + cmdHelp = "Generate Haddock HTML code from Exposed-Modules.", + cmdDescription = "Requires cpphs and haddock.", + cmdOptions = [cmd_help], + cmdAction = HaddockCmd + } + +parseHaddockArgs = parseNoArgs haddockCmd hunk ./Distribution/Setup.hs 266 - cmdDescription = "This is the long description for clean.\n", -- Multi-line! + cmdDescription = "Removes .hi, .o, preprocessed sources, etc.\n", -- Multi-line! hunk ./Distribution/Setup.hs 272 -parseCleanArgs args customOpts = - case getCmdOpt cleanCmd customOpts args of - (flags, _, []) | hasHelpFlag flags -> do - printCmdHelp cleanCmd customOpts - exitWith ExitSuccess - (flags, args', []) -> - return (unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) +parseCleanArgs = parseNoArgs cleanCmd hunk ./Distribution/Setup.hs 277 - cmdHelp = "Copy the files into the install locations.", + cmdHelp = "Copy the files into the install locations. Run register.", hunk ./Distribution/Setup.hs 352 -parseSDistArgs args customOpts = - case getCmdOpt sdistCmd customOpts args of - (flags, _, []) | hasHelpFlag flags -> do - printCmdHelp sdistCmd customOpts - exitWith ExitSuccess - (flags, args', []) -> - return (unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) +parseSDistArgs = parseNoArgs sdistCmd hunk ./Distribution/Setup.hs 398 -parseUnregisterArgs args customOpts = - case getCmdOpt unregisterCmd customOpts args of +parseUnregisterArgs = parseNoArgs unregisterCmd + +-- |Helper function for commands with no arguments +parseNoArgs :: (Cmd a) -> [String] -> [OptDescr a] -> IO ([a], [String]) +parseNoArgs cmd args customOpts = + case getCmdOpt cmd customOpts args of hunk ./Distribution/Setup.hs 405 - printCmdHelp unregisterCmd customOpts + printCmdHelp cmd customOpts hunk ./Distribution/Simple/Build.hs 120 - withLib pkg_descr $ \buildInfo' -> do + withLib pkg_descr () $ \buildInfo' -> do hunk ./Distribution/Simple/Build.hs 193 - withLib pkg_descr $ compileBuildInfo pref Nothing + withLib pkg_descr () $ compileBuildInfo pref Nothing hunk ./Distribution/Simple/Install.hs 133 - withLib pkg_descr $ \ libInfo -> do + withLib pkg_descr () $ \ libInfo -> do hunk ./Distribution/Simple.hs 60 -import Distribution.PreProcess (knownSuffixHandlers, ppSuffixes, removePreprocessedPackage) +import Distribution.PreProcess (knownSuffixHandlers, ppSuffixes, ppCpp, ppUnlit, + removePreprocessedPackage, preprocessSources) hunk ./Distribution/Simple.hs 73 - defaultPackageDesc, hookedPackageDesc) + defaultPackageDesc, hookedPackageDesc, + createIfNotExists, moduleToFilePath, rawSystemPath) hunk ./Distribution/Simple.hs 84 -import System.Exit(ExitCode(..)) +import System.Exit(ExitCode(..), exitWith) hunk ./Distribution/Simple.hs 92 -import Distribution.Compat.FilePath(joinFileName, dropAbsolutePrefix) +import Distribution.Compat.FilePath(joinFileName, dropAbsolutePrefix, + joinPaths, splitFileName, joinFileExt, + splitFileExt, changeFileExt) hunk ./Distribution/Simple.hs 195 - + HaddockCmd -> do + (_, args) <- parseHaddockArgs args [] + pkg_descr <- hookOrInput preBuild args + withLib pkg_descr ExitSuccess (\bi -> + do lbi <- getPersistBuildConfig + let targetDir = joinPaths (buildDir lbi) (joinPaths "doc" "html") + let tmpDir = joinPaths (buildDir lbi) "tmp" + createIfNotExists True targetDir + preprocessSources pkg_descr lbi knownSuffixHandlers + inFiles <- sequence [moduleToFilePath [hsSourceDir bi] m ["hs", "lhs"] + | m <- exposedModules bi] >>= return . concat + mapM (mockCpp pkg_descr bi lbi tmpDir) inFiles + let outFiles = map (joinFileName tmpDir) + (map ((flip changeFileExt) "hs") inFiles) + code <- rawSystem "haddock" (["-h", "-o" ++ targetDir] ++ outFiles) + removeFileRecursive tmpDir + when (code /= ExitSuccess) (exitWith code) + return code) hunk ./Distribution/Simple.hs 293 + mockCpp pkg_descr bi lbi pref file + = do let (filePref, fileName) = splitFileName file + let targetDir = joinPaths pref filePref + let targetFile = joinFileName targetDir fileName + let (targetFileNoext, targetFileExt) = splitFileExt targetFile + createIfNotExists True targetDir + ret <- ppCpp pkg_descr bi lbi file targetFile + when (targetFileExt == "lhs") + (ppUnlit targetFile (joinFileExt targetFileNoext "hs") >> return ()) + hunk ./GNUmakefile 50 -# Lame for now. I don't mind though, because cabal itself should be -# able to do this soon. Needs cpphs. -haddock: - rm -rf dist/doc - mkdir -p dist/doc/Distribution/Simple - mkdir -p dist/tmp/doc/html - cpphs --noline Distribution/Package.hs > dist/doc/Distribution/Package.hs.raw - cpphs --noline Distribution/Misc.hs > dist/doc/Distribution/Misc.hs.raw - cpphs --noline Distribution/Version.hs > dist/doc/Distribution/Version.hs.raw - cpphs --noline Distribution/Setup.hs > dist/doc/Distribution/Setup.hs.raw - cpphs --noline Distribution/ModuleTest.hs > dist/doc/Distribution/ModuleTest.hs.raw - cpphs --noline Distribution/Simple.hs > dist/doc/Distribution/Simple.hs.raw - cpphs --noline Distribution/Make.hs > dist/doc/Distribution/Make.hs.raw - cpphs --noline Distribution/InstalledPackageInfo.hs > dist/doc/Distribution/InstalledPackageInfo.hs.raw - cpphs --noline Distribution/Simple/Build.hs > dist/doc/Distribution/Simple/Build.hs.raw - cpphs --noline Distribution/Simple/Install.hs > dist/doc/Distribution/Simple/Install.hs.raw - cpphs --noline Distribution/Simple/Configure.hs > dist/doc/Distribution/Simple/Configure.hs.raw - cpphs --noline Distribution/Simple/Register.hs > dist/doc/Distribution/Simple/Register.hs.raw - cpphs --noline Distribution/Simple/Utils.hs > dist/doc/Distribution/Simple/Utils.hs.raw - cpphs --noline Distribution/Simple/SrcDist.hs > dist/doc/Distribution/Simple/SrcDist.hs.raw - cpphs --noline Distribution/Simple/GHCPackageConfig.hs > dist/doc/Distribution/Simple/GHCPackageConfig.hs.raw - cpphs --noline Distribution/GetOpt.hs > dist/doc/Distribution/GetOpt.hs.raw - find dist/doc/Distribution -name "*.raw"|xargs haddock --html --odir=dist/tmp/doc/html --title="The Haskell Cabal" --source=http://cvs.haskell.org/darcs/cabal/ - rm -r dist/doc/* - mv dist/tmp/doc/html dist/doc - rmdir dist/tmp/doc +haddock: setup + ./setup haddock hunk ./GNUmakefile 120 - mv cabal.tar.gz /tmp - cd /tmp && tar -zxvf cabal.tar.gz + mv Cabal.tar.gz /tmp + cd /tmp && tar -zxvf Cabal.tar.gz hunk ./Distribution/Simple.hs 200 - let targetDir = joinPaths (buildDir lbi) (joinPaths "doc" "html") + let targetDir = joinPaths "dist" (joinPaths "doc" "html") hunk ./Distribution/InstalledPackageInfo.hs 66 - parsePackageName, parsePackageId ) + parsePackageId ) hunk ./Distribution/Make.hs 62 -import Control.Monad (when) -import Data.Maybe (isNothing, maybe) -import Data.List ( intersperse ) +import Data.Maybe (maybe) +import Data.List ( intersperse ) hunk ./Distribution/Make.hs 162 - -helpprefix :: String -helpprefix = "Syntax: ./Setup.hs command [flags]\n" hunk ./Distribution/ModuleTest.hs 69 -import Control.Monad(when, unless) hunk ./Distribution/PackageDescription.hs 90 -import HUnit (Test(..), (~:), (~=?), assertEqual, assertBool, Assertion, runTestTT) +import HUnit (Test(..), assertBool, Assertion, runTestTT) hunk ./Distribution/PackageDescription.hs 164 --- |Set the name for this package. Convenience function. -setPkgName :: String -> PackageDescription -> PackageDescription -setPkgName n desc@PackageDescription{package=pkgIdent} - = desc{package=pkgIdent{pkgName=n}} - --- |Set the version for this package. Convenience function. -setPkgVersion :: Version -> PackageDescription -> PackageDescription -setPkgVersion v desc@PackageDescription{package=pkgIdent} - = desc{package=pkgIdent{pkgVersion=v}} - hunk ./Distribution/PackageDescription.hs 207 --- |Add options for a specific compiler. Convenience function. -setOptions :: CompilerFlavor -> [String] -> BuildInfo -> BuildInfo -setOptions c xs desc@BuildInfo{options=opts} - = desc{options=(c,xs):opts} - - hunk ./Distribution/PackageDescription.hs 663 - -isError (Left _) = True -isError _ = False hunk ./Distribution/Setup.hs 59 -import HUnit (Test(..), (~:), (~=?)) +import HUnit (Test(..)) hunk ./Distribution/Setup.hs 172 -getCmdOpt cmd opts s = let (a,b,c,d) = getOpt Permute (cmdOptions cmd ++ liftCustomOpts opts) s +getCmdOpt cmd opts s = let (a,_,c,d) = getOpt Permute (cmdOptions cmd ++ liftCustomOpts opts) s hunk ./Distribution/Simple/Build.hs 61 - createIfNotExists, - mkLibName, moveSources, dotToSep, + createIfNotExists, mkLibName, dotToSep, hunk ./Distribution/Simple/Build.hs 71 -import System.Exit (ExitCode(..)) hunk ./Distribution/Simple/Install.hs 65 -import Distribution.Simple.Utils(moveSources, rawSystemExit, - mkLibName, removeFileRecursive, - die, createIfNotExists - ) +import Distribution.Simple.Utils(moveSources, mkLibName, removeFileRecursive, + die, createIfNotExists) hunk ./Distribution/Simple/Install.hs 70 -import Data.Maybe(maybeToList, fromMaybe) +import Data.Maybe(fromMaybe) hunk ./Distribution/Simple/Install.hs 114 - package=p} + package=p} hunk ./Distribution/Simple/Install.hs 118 +installLibGHC _ _ PackageDescription{library=Nothing} + = die $ "Internal Error. installLibGHC called with no library." hunk ./Distribution/Simple/SrcDist.hs 55 -import Distribution.Simple.Utils(moveSources, die, sequenceMap) +import Distribution.Simple.Utils(moveSources, die) hunk ./Distribution/Simple/SrcDist.hs 82 - sequenceMap (prepareDir targetDir pps) (map buildInfo (executables pkg_descr)) + mapM_ (prepareDir targetDir pps) (map buildInfo (executables pkg_descr)) hunk ./Distribution/Simple/Utils.hs 55 - sequenceMap, - removeFiles, hunk ./Distribution/Simple/Utils.hs 155 - (True, _, _) -> return() + (True, _, _) -> return () hunk ./Distribution/Simple/Utils.hs 177 - matchList <- sequenceMap (\x -> do y <- doesFileExist x; return (x, y)) possiblePaths + matchList <- mapM (\x -> do y <- doesFileExist x; return (x, y)) possiblePaths hunk ./Distribution/Simple/Utils.hs 208 - sourceLocs' <- sequenceMap moduleToFPErr sources + sourceLocs' <- mapM moduleToFPErr sources hunk ./Distribution/Simple/Utils.hs 232 - hunk ./Distribution/Simple/Utils.hs 237 - -partitionIO :: (a -> IO Bool) -> [a] -> IO ([a], [a]) -partitionIO f l - = do bools <- sequenceMap f l - let both = zip l bools - return ([x | (x, True) <- both], [y | (y, False) <- both]) hunk ./Distribution/Simple/Utils.hs 264 - sequenceMap removeFileRecursive dirs + mapM removeFileRecursive dirs hunk ./Distribution/Simple/Utils.hs 280 - -sequenceMap :: (Monad m) => (a -> m b) -> [a] -> m [b] -sequenceMap f l = sequence $ map f l hunk ./Distribution/Simple/Utils.hs 296 - b <- doesFileExist filename + b <- doesFileExist path hunk ./Distribution/Simple/Utils.hs 298 - else action filename `finally` try (removeFile filename) + else action path `finally` try (removeFile path) hunk ./Distribution/Simple.hs 74 - createIfNotExists, moduleToFilePath, rawSystemPath) + createIfNotExists, moduleToFilePath) hunk ./Distribution/Simple.hs 87 -import Control.Monad(when, unless) -import Data.Maybe(isNothing) +import Control.Monad(when) hunk ./Distribution/Simple.hs 135 --- |Reads local build info, executes function -doBuildInstall :: (PackageDescription -> LocalBuildInfo -> IO ()) -- ^function to apply - -> PackageDescription - -> IO () -doBuildInstall f pkgConf - = do lbi <- getPersistBuildConfig - f pkgConf lbi - hunk ./Distribution/Simple.hs 255 + + HelpCmd -> return ExitSuccess -- this is handled elsewhere hunk ./Distribution/Simple.hs 306 - -helpprefix :: String -helpprefix = "Syntax: ./Setup.hs command [flags]\n" - hunk ./Distribution/Version.hs 309 --- |Version range parsing -doVersionRangeParse :: String -> Either String VersionRange -doVersionRangeParse input = case results of - [y] -> Right y - [] -> Left "No parse" - _ -> Left "Ambigous parse" - where results = [ x | (x,"") <- readP_to_S parseVersionRange input ] - hunk ./Distribution/Version.hs 318 -branch4 :: [Int] -branch4 = [1,2,3,4] - hunk ./Distribution/Version.hs 326 - -release4 :: Version -release4 = Version{versionBranch=branch4, versionTags=[]} hunk ./TODO 4 -** multiple libraries? hunk ./Distribution/Compat/Error.hs 1 -module Distribution.Compat.Error (Error(..)) where - -#ifndef __NHC__ -import Control.Monad.Error (Error(..)) -#endif - -#ifdef __NHC__ -class Error e where - strMsg :: String -> e - --- This is a horrible hack, but H98 doesn't allow --- instance Error [Char] -instance Error Char where - strMsg s = head s -instance Error e => Error [e] where - strMsg s = map (strMsg . (:[])) s - -instance Error e => Monad (Either e) where - return = Right - fail = Left . strMsg - Left e >>= f = Left e - Right x >>= f = f x -#endif rmfile ./Distribution/Compat/Error.hs hunk ./Distribution/Compat/Directory.hs 2 - findExecutable, copyFile, getHomeDirectory + findExecutable, copyFile, getHomeDirectory, createDirectoryIfMissing, removeDirectoryRecursive hunk ./Distribution/Compat/Directory.hs 11 -import System.Directory ( findExecutable, copyFile, getHomeDirectory ) +import System.Directory ( findExecutable, copyFile, getHomeDirectory,createDirectoryIfMissing,removeDirectoryRecursive ) hunk ./Distribution/Compat/Directory.hs 21 -import Control.Monad (when) +import Control.Monad (when, unless) hunk ./Distribution/Compat/Directory.hs 94 + +createDirectoryIfMissing :: Bool -- ^ Create its parents too? + -> FilePath -- ^ The path to the directory you want to make + -> IO () +createDirectoryIfMissing parents file = do + b <- doesDirectoryExist file + case (b,parents, file) of + (_, _, "") -> return () + (True, _, _) -> return () + (_, True, _) -> mapM_ (createDirectoryIfMissing False) (tail (pathParents file)) + (_, False, _) -> createDirectory file + +removeDirectoryRecursive :: FilePath -> IO () +removeDirectoryRecursive startLoc = do + cont <- getDirectoryContents startLoc + sequence_ [rm (startLoc `joinFileName` x) | x <- cont, x /= "." && x /= ".."] + removeDirectory startLoc + where + rm :: FilePath -> IO () + rm f = do temp <- try (removeFile f) + case temp of + Left e -> do isDir <- doesDirectoryExist f + -- If f is not a directory, re-throw the error + unless isDir $ ioError e + removeDirectoryRecursive f + Right _ -> return () hunk ./Distribution/Compat/Exception.hs 5 +import IO (bracket) hunk ./Distribution/Compat/Exception.hs 11 -bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c -bracket before after thing - = do a <- before - r <- thing a `catch` \e -> do after a - ioError e - after a - return r - hunk ./Distribution/Compat/Exception.hs 12 -finally thing after = bracket (return ()) (const after) thing +finally thing after = bracket (return ()) (const after) (const thing) hunk ./Distribution/InstalledPackageInfo.hs 58 - StanzaField(..), singleStanza, PError(..), + StanzaField(..), singleStanza, ParseResult, hunk ./Distribution/InstalledPackageInfo.hs 147 -parseInstalledPackageInfo :: String -> Either PError InstalledPackageInfo +parseInstalledPackageInfo :: String -> ParseResult InstalledPackageInfo hunk ./Distribution/Make.hs 62 -import Data.Maybe (maybe) hunk ./Distribution/Package.hs 43 - PackageIdentifier(..), + PackageIdentifier(..), hunk ./Distribution/PackageDescription.hs 70 -import Data.List(concatMap) hunk ./Distribution/PackageDescription.hs 457 - Left e -> error (showError e) -- FIXME --- Right PackageDescription{library=Nothing, executables=[]} -> error "no library listed, and no executable stanza." - Right x -> return x + ParseFailed e -> error (showError e) -- FIXME +-- ParseOk PackageDescription{library=Nothing, executables=[]} -> error "no library listed, and no executable stanza." + ParseOk x -> return x hunk ./Distribution/PackageDescription.hs 461 -parseDescription :: String -> Either PError PackageDescription +parseDescription :: String -> ParseResult PackageDescription hunk ./Distribution/PackageDescription.hs 620 - sequence_ [assertRight ("license " ++ show lVal) lVal + sequence_ [assertParseOk ("license " ++ show lVal) lVal hunk ./Distribution/PackageDescription.hs 625 - do assertRight "some fields" + do assertParseOk "some fields" hunk ./Distribution/PackageDescription.hs 630 - assertRight "more fields foo" + assertParseOk "more fields foo" hunk ./Distribution/PackageDescription.hs 636 - assertRight "required fields for foo" + assertParseOk "required fields for foo" hunk ./Distribution/PackageDescription.hs 642 - TestCase $ assertRight "no library" Nothing + TestCase $ assertParseOk "no library" Nothing hunk ./Distribution/PackageDescription.hs 646 - assertRight "entire package description" testPkgDescAnswer + assertParseOk "entire package description" testPkgDescAnswer hunk ./Distribution/PackageDescription.hs 650 - Left _ -> assertBool "can't parse description" False - Right d -> assertRight "parse . show . parse not identity" + ParseFailed _ -> assertBool "can't parse description" False + ParseOk d -> assertParseOk "parse . show . parse not identity" hunk ./Distribution/PackageDescription.hs 656 -assertRight :: (Eq val) => String -> val -> (Either a val) -> Assertion -assertRight mes expected actual +assertParseOk :: (Eq val) => String -> val -> ParseResult val -> Assertion +assertParseOk mes expected actual hunk ./Distribution/PackageDescription.hs 660 - (Right v) -> v == expected + ParseOk v -> v == expected hunk ./Distribution/ParseUtils.hs 48 + ParseResult(..), hunk ./Distribution/ParseUtils.hs 65 -import Distribution.Compat.Error hunk ./Distribution/ParseUtils.hs 78 -instance Error PError where - strMsg s = FromString s Nothing +data ParseResult a = ParseFailed PError | ParseOk a + deriving Show hunk ./Distribution/ParseUtils.hs 81 -runP :: LineNo -> String -> ReadP a a -> String -> Either PError a +instance Monad ParseResult where + return x = ParseOk x + ParseFailed err >>= _ = ParseFailed err + ParseOk x >>= f = f x + fail s = ParseFailed (FromString s Nothing) + +runP :: LineNo -> String -> ReadP a a -> String -> ParseResult a hunk ./Distribution/ParseUtils.hs 90 - [a] -> Right a + [a] -> ParseOk a hunk ./Distribution/ParseUtils.hs 92 - [a] -> Right a - [] -> Left (NoParse field lineNo) - _ -> Left (AmbigousParse field lineNo) - _ -> Left (AmbigousParse field lineNo) + [a] -> ParseOk a + [] -> ParseFailed (NoParse field lineNo) + _ -> ParseFailed (AmbigousParse field lineNo) + _ -> ParseFailed (AmbigousParse field lineNo) hunk ./Distribution/ParseUtils.hs 104 -myError :: LineNo -> String -> Either PError a -myError n s = Left $ FromString s (Just n) +myError :: LineNo -> String -> ParseResult a +myError n s = ParseFailed $ FromString s (Just n) hunk ./Distribution/ParseUtils.hs 112 - , fieldSet :: LineNo -> String -> a -> Either PError a + , fieldSet :: LineNo -> String -> a -> ParseResult a hunk ./Distribution/ParseUtils.hs 179 -splitStanzas :: String -> Either PError [Stanza] +splitStanzas :: String -> ParseResult [Stanza] hunk ./Distribution/ParseUtils.hs 194 -singleStanza :: String -> Either PError Stanza +singleStanza :: String -> ParseResult Stanza hunk ./Distribution/ParseUtils.hs 208 -brk :: (Int,String) -> Either PError (Int,String,String) +brk :: (Int,String) -> ParseResult (Int,String,String) hunk ./Distribution/PreProcess.hs 51 -import Distribution.Setup (CompilerFlavor(..), compilerFlavor) +import Distribution.Setup (CompilerFlavor(..), Compiler(compilerFlavor)) hunk ./Distribution/PreProcess.hs 57 -import System.Directory (removeFile) +import System.Directory (removeFile, getModificationTime) hunk ./Distribution/PreProcess.hs 85 - sequence_ [preprocessModule [hsSourceDir bi] mod biHandlers | + sequence_ [preprocessModule [hsSourceDir bi] mod builtinSuffixes biHandlers | hunk ./Distribution/PreProcess.hs 92 - mod biHandlers | + mod builtinSuffixes biHandlers | hunk ./Distribution/PreProcess.hs 98 - trivialHandlers = [(ext, Nothing) | ext <- builtinSuffixes] - localHandlers bi = trivialHandlers ++ - [(ext, Just (h pkg_descr bi lbi)) | (ext, h) <- handlers] + localHandlers bi = [(ext, h pkg_descr bi lbi) | (ext, h) <- handlers] hunk ./Distribution/PreProcess.hs 105 - -> [(String, Maybe PreProcessor)] -- ^possible preprocessors + -> [String] -- ^builtin suffixes + -> [(String, PreProcessor)] -- ^possible preprocessors hunk ./Distribution/PreProcess.hs 108 -preprocessModule searchLoc mod handlers = do - srcFiles <- moduleToFilePath searchLoc mod (map fst handlers) - case srcFiles of - [] -> die ("can't find source for " ++ mod ++ " in " ++ show searchLoc ) - (srcFile:_) -> do - let (srcStem, ext) = splitFileExt srcFile - case fromMaybe (error "Internal error in preProcess module: Just expected") - (lookup ext handlers) of -- FIX: can't fail? - Nothing -> return ExitSuccess - Just pp -> pp srcFile (srcStem `joinFileExt` "hs") +preprocessModule searchLoc mod builtinSuffixes handlers = do + bsrcFiles <- moduleToFilePath searchLoc mod builtinSuffixes + psrcFiles <- moduleToFilePath searchLoc mod (map fst handlers) + case psrcFiles of + [] -> case bsrcFiles of + [] -> die ("can't find source for " ++ mod ++ " in " ++ show searchLoc) + _ -> return ExitSuccess + (psrcFile:_) -> do + let (srcStem, ext) = splitFileExt psrcFile + pp = fromMaybe (error "Internal error in preProcess module: Just expected") + (lookup ext handlers) + recomp <- case bsrcFiles of + [] -> return True + (bsrcFile:_) -> do + btime <- getModificationTime bsrcFile + ptime <- getModificationTime psrcFile + return (btime < ptime) + if recomp + then pp psrcFile (srcStem `joinFileExt` "hs") + else return ExitSuccess hunk ./Distribution/Simple/Build.hs 58 -import Distribution.Simple.Configure (LocalBuildInfo(..), compiler, exeDeps) +import Distribution.Simple.Configure (LocalBuildInfo(..), exeDeps) hunk ./Distribution/Simple/Build.hs 61 - createIfNotExists, mkLibName, dotToSep, + mkLibName, dotToSep, hunk ./Distribution/Simple/Build.hs 68 +#ifndef __NHC__ hunk ./Distribution/Simple/Build.hs 70 +#else +import IO (try) +#endif hunk ./Distribution/Simple/Build.hs 75 -import Distribution.Compat.Directory (copyFile) +import Distribution.Compat.Directory (copyFile,createDirectoryIfMissing) hunk ./Distribution/Simple/Build.hs 93 - createIfNotExists True (buildDir lbi) + createDirectoryIfMissing True (buildDir lbi) hunk ./Distribution/Simple/Build.hs 123 - createIfNotExists True (pref `joinFileName` (hsSourceDir buildInfo')) + createDirectoryIfMissing True (pref `joinFileName` (hsSourceDir buildInfo')) hunk ./Distribution/Simple/Build.hs 125 - ++ ccOptions pkg_descr + ++ ["-optc" ++ opt | opt <- ccOptions pkg_descr] hunk ./Distribution/Simple/Build.hs 139 - createIfNotExists True odir + createDirectoryIfMissing True odir hunk ./Distribution/Simple/Build.hs 141 - ++ ccOptions pkg_descr + ++ ["-optc" ++ opt | opt <- ccOptions pkg_descr] hunk ./Distribution/Simple/Build.hs 157 - sequence_ [ do createIfNotExists True (pref `joinFileName` (hsSourceDir exeBi)) + sequence_ [ do createDirectoryIfMissing True (pref `joinFileName` (hsSourceDir exeBi)) hunk ./Distribution/Simple/Build.hs 160 - createIfNotExists True exeDir + createDirectoryIfMissing True exeDir hunk ./Distribution/Simple/Build.hs 162 - ++ ccOptions pkg_descr + ++ ["-optc" ++ opt | opt <- ccOptions pkg_descr] hunk ./Distribution/Simple/Build.hs 233 - createIfNotExists True (dirOf destFile) + createDirectoryIfMissing True (dirOf destFile) hunk ./Distribution/Simple/GHCPackageConfig.hs 28 +#ifndef __NHC__ hunk ./Distribution/Simple/GHCPackageConfig.hs 30 +#else +import IO (try) +#endif hunk ./Distribution/Simple/Install.hs 63 -import Distribution.Package (showPackageId, pkgName) +import Distribution.Package (showPackageId, PackageIdentifier(pkgName)) hunk ./Distribution/Simple/Install.hs 65 -import Distribution.Simple.Utils(moveSources, mkLibName, removeFileRecursive, - die, createIfNotExists) +import Distribution.Simple.Utils(moveSources, mkLibName, die) hunk ./Distribution/Simple/Install.hs 70 -import Distribution.Compat.Directory(copyFile) +import Distribution.Compat.Directory(copyFile,createDirectoryIfMissing,removeDirectoryRecursive) hunk ./Distribution/Simple/Install.hs 104 - = do createIfNotExists True pref + = do createDirectoryIfMissing True pref hunk ./Distribution/Simple/Install.hs 135 - try $ removeFileRecursive pkgDir + try $ removeDirectoryRecursive pkgDir hunk ./Distribution/Simple/Install.hs 143 - try $ removeFileRecursive progInstallDir + try $ removeDirectoryRecursive progInstallDir hunk ./Distribution/Simple/Register.hs 67 -import Distribution.Simple.Utils (rawSystemExit, die, removeFileRecursive, createIfNotExists) +import Distribution.Simple.Utils (rawSystemExit, die) hunk ./Distribution/Simple/Register.hs 72 -import Distribution.Compat.Directory (copyFile) +import Distribution.Compat.Directory (copyFile,createDirectoryIfMissing,removeDirectoryRecursive) hunk ./Distribution/Simple/Register.hs 76 -import System.IO (try) +import System.IO.Error (try) hunk ./Distribution/Simple/Register.hs 131 - createIfNotExists True (hugsPackageDir pkg_descr lbi) + createDirectoryIfMissing True (hugsPackageDir pkg_descr lbi) hunk ./Distribution/Simple/Register.hs 209 - try $ removeFileRecursive (hugsPackageDir pkg_descr lbi) - try $ removeFileRecursive (hugsProgramsDir pkg_descr lbi) + try $ removeDirectoryRecursive (hugsPackageDir pkg_descr lbi) + try $ removeDirectoryRecursive (hugsProgramsDir pkg_descr lbi) hunk ./Distribution/Simple/SrcDist.hs 53 - (PackageDescription(..), BuildInfo(..), buildInfo, setupMessage, biModules) + (PackageDescription(..), BuildInfo(..), Executable(buildInfo), setupMessage, biModules) hunk ./Distribution/Simple/Utils.hs 52 - createIfNotExists, hunk ./Distribution/Simple/Utils.hs 53 - removeFileRecursive, hunk ./Distribution/Simple/Utils.hs 76 -import Control.Monad(when, unless, liftM, mapM) +import Control.Monad(when) hunk ./Distribution/Simple/Utils.hs 79 -import Data.Maybe(Maybe, catMaybes, mapMaybe) +import Data.Maybe(mapMaybe) hunk ./Distribution/Simple/Utils.hs 89 - pathParents, pathSeparator) -import System.Directory (getDirectoryContents, removeDirectory, - setCurrentDirectory, getCurrentDirectory, - doesDirectoryExist, doesFileExist, removeFile, - createDirectory) + pathSeparator) +import System.Directory (getDirectoryContents, getCurrentDirectory, + doesFileExist, removeFile) hunk ./Distribution/Simple/Utils.hs 93 -import Distribution.Compat.Directory (copyFile,findExecutable) +import Distribution.Compat.Directory (copyFile,findExecutable,createDirectoryIfMissing) hunk ./Distribution/Simple/Utils.hs 143 - -createIfNotExists :: Bool -- ^Create its parents too? - -> FilePath -- ^The path to the directory you want to make - -> IO () -createIfNotExists parents file - = do b <- doesDirectoryExist file - case (b,parents, file) of - (_, _, "") -> return () - (True, _, _) -> return () - (_, True, _) -> createDirectoryParents file - (_, False, _) -> createDirectory file - --- |like mkdir -p. Create this directory and its parents -createDirectoryParents :: FilePath -> IO() -createDirectoryParents file - = mapM_ (createIfNotExists False) (tail (pathParents file)) - hunk ./Distribution/Simple/Utils.hs 185 - = do createIfNotExists True targetDir + = do createDirectoryIfMissing True targetDir hunk ./Distribution/Simple/Utils.hs 192 - mapM (createIfNotExists True) + mapM (createDirectoryIfMissing True) hunk ./Distribution/Simple/Utils.hs 217 --- |Remove a list of files; if it encounters a directory, it doesn't --- remove it, but returns it. Throws everything that removeFile --- throws unless the file is a directory. -removeFiles :: [FilePath] -- ^Files and directories to remove - -> IO [FilePath] - {- ^The ones we were unable to remove because they were of - an inappropriate type (directory) removeFiles -} -removeFiles files = liftM catMaybes (mapM rm' files) - where - rm' :: FilePath -> IO (Maybe FilePath) - rm' f = do temp <- try (removeFile f) - case temp of - Left e -> do isDir <- doesDirectoryExist f - -- If f is not a directory, re-throw the error - unless isDir $ ioError e - return (Just f) - Right _ -> return Nothing - --- |Probably follows symlinks, be careful. -removeFileRecursive :: FilePath -> IO () -removeFileRecursive startLoc - = do cont' <- getDirectoryContents startLoc - let cont = filter (\x -> x /= "." && x /= "..") cont' - curDir <- getCurrentDirectory - setCurrentDirectory startLoc - dirs <- removeFiles cont - mapM removeFileRecursive dirs - setCurrentDirectory curDir - removeDirectory startLoc - --- |Might want to make this more generic some day, with regexps --- or something. -filesWithExtensions :: FilePath -- ^Directory to look in - -> String -- ^The extension - -> IO [FilePath] {- ^The file names (not full - path) of all the files with this - extension in this directory. -} -filesWithExtensions dir extension - = do allFiles <- getDirectoryContents dir - return $ filter hasExt allFiles - where - hasExt f = snd (splitFileExt f) == extension - - hunk ./Distribution/Simple/Utils.hs 242 -#error ToDo: getProcessID +-- #error ToDo: getProcessID +foreign import ccall unsafe "getpid" getProcessID :: IO Int hunk ./Distribution/Simple/Utils.hs 275 - getOptions ("OPTIONS_NHC":opts) = ([], [(NHC, opts)]) + getOptions ("OPTIONS_NHC98":opts) = ([], [(NHC, opts)]) hunk ./Distribution/Simple/Utils.hs 409 + +-- |Might want to make this more generic some day, with regexps +-- or something. +filesWithExtensions :: FilePath -- ^Directory to look in + -> String -- ^The extension + -> IO [FilePath] {- ^The file names (not full + path) of all the files with this + extension in this directory. -} +filesWithExtensions dir extension + = do allFiles <- getDirectoryContents dir + return $ filter hasExt allFiles + where + hasExt f = snd (splitFileExt f) == extension hunk ./Distribution/Simple.hs 72 -import Distribution.Simple.Utils (die, removeFileRecursive, currentDir, +import Distribution.Simple.Utils (die, currentDir, hunk ./Distribution/Simple.hs 74 - createIfNotExists, moduleToFilePath) + moduleToFilePath) hunk ./Distribution/Simple.hs 89 -import System.IO (try) +import System.IO.Error (try) hunk ./Distribution/Simple.hs 91 + +import Distribution.Compat.Directory(createDirectoryIfMissing,removeDirectoryRecursive) hunk ./Distribution/Simple.hs 195 - createIfNotExists True targetDir + createDirectoryIfMissing True targetDir hunk ./Distribution/Simple.hs 203 - removeFileRecursive tmpDir + removeDirectoryRecursive tmpDir hunk ./Distribution/Simple.hs 211 - try $ removeFileRecursive buildPref + try $ removeDirectoryRecursive buildPref hunk ./Distribution/Simple.hs 293 - createIfNotExists True targetDir + createDirectoryIfMissing True targetDir hunk ./Distribution/Simple.hs 364 -#ifdef mingw32_TARGET_OS - defaultPreConf = readHook2 -#else hunk ./Distribution/Simple.hs 368 - rawSystem "./configure" - (maybe id prefix_opt mb_prefix args) + rawSystem "sh" + ("configure" : maybe id prefix_opt mb_prefix args) hunk ./Distribution/Simple.hs 374 -#endif hunk ./Distribution/Version.hs 66 -#if !__GLASGOW_HASKELL__ || __GLASGOW_HASKELL__ >= 603 +#if __HUGS__ || __GLASGOW_HASKELL__ >= 603 hunk ./Distribution/Version.hs 71 -import Data.Char ( isDigit, isAlphaNum ) -import Data.List ( intersperse ) hunk ./Distribution/Version.hs 81 -#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 +#if ( __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 ) || __NHC__ hunk ./Distribution/Version.hs 90 -#if __GLASGOW_HASKELL__ <= 602 +#if __GLASGOW_HASKELL__ <= 602 || __NHC__ hunk ./Distribution/Version.hs 103 -import Control.Monad ( liftM ) hunk ./Distribution/Version.hs 154 -#if __GLASGOW_HASKELL__ < 602 +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 602 hunk ./Setup.description 18 + Distribution.Compat.ReadP, hunk ./Setup.description 42 - Distribution.Compat.Error, hunk ./Setup.description 44 - Distribution.Compat.RawSystem, - Distribution.Compat.ReadP -Build-Depends: base, mtl + Distribution.Compat.RawSystem +Build-Depends: base hunk ./package.conf.in 31 - Distribution.Compat.Error, hunk ./TODO 35 +** Haddock + - should process hidden modules as well as exposed ones. The hidden + modules might contain entities that are re-exported by an exposed + module. Hidden modules should use the #hide haddock directive. + + - configure should detect haddock. We should have a --with-haddock +too + (similarly for all the other programs we use - I made this change +for + VS a while ago and didn't get around to pushing it, now it'll be + conflict city. oh well). + + - if GHC is present and hscpp is not, we can use 'ghc -E -cpp'. This + also unlits. + + - hscpp need to define __HADDOCK__ when preprocessing for haddock. +This + means we have to preprocess seprately for haddock. + + - haddock should be passed the names of the interface files for the + dependent packages (gotten from haddock_interfaces field of the + dependent packages, query ghc-pkg). + + - we should install the haddock interface, and fill in the location + in haddock_interfaces. Similarly for the HTML, and haddock_html. move ./Setup.description ./Cabal.cabal hunk ./Distribution/PreProcess.hs 43 - ppCpp, ppGreenCard, ppC2hs, ppHsc2hs, ppHappy, ppUnlit + ppCpp, ppGreenCard, ppC2hs, ppHsc2hs, + ppHappy, ppAlex, ppUnlit hunk ./Distribution/PreProcess.hs 210 +ppAlex :: PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor +ppAlex _ _ lbi + = standardPP "alex" (hcFlags hc) + where hc = compilerFlavor (compiler lbi) + hcFlags GHC = ["-g"] + hcFlags _ = [] + hunk ./Distribution/PreProcess.hs 238 + , ("x", ppAlex) hunk ./Distribution/Simple/Utils.hs 59 - hookedPackageDesc, hunk ./Distribution/Simple/Utils.hs 60 + defaultHookedPackageDesc, + findHookedPackageDesc, hunk ./Distribution/Simple/Utils.hs 323 +buildInfoExt = "buildinfo" hunk ./Distribution/Simple/Utils.hs 368 --- |Package build information file (@Setup.buildinfo@) used by --- 'defaultUserHooks'. -hookedPackageDesc :: FilePath -hookedPackageDesc = "Setup.buildinfo" +-- |Optional auxiliary package information file (/pkgname/@.buildinfo@) +defaultHookedPackageDesc :: IO (Maybe FilePath) +defaultHookedPackageDesc = getCurrentDirectory >>= findHookedPackageDesc + +-- |Find auxiliary package information in the given directory. +-- Looks for @.buildinfo@ files. +findHookedPackageDesc + :: FilePath -- ^Directory to search + -> IO (Maybe FilePath) -- ^/dir/@\/@/pkgname/@.buildinfo@, if present +findHookedPackageDesc dir = do + ns <- getDirectoryContents dir + case [dir `joinFileName` n | + n <- ns, snd (splitFileExt n) == buildInfoExt] of + [] -> return Nothing + [f] -> return (Just f) + _ -> die ("Multiple files with extension " ++ buildInfoExt) hunk ./Distribution/Simple.hs 51 - UserHooks (..), emptyUserHooks, defaultUserHooks, hookedPackageDesc, + UserHooks (..), emptyUserHooks, defaultUserHooks, defaultHookedPackageDesc, hunk ./Distribution/Simple.hs 73 - defaultPackageDesc, hookedPackageDesc, + defaultPackageDesc, defaultHookedPackageDesc, hunk ./Distribution/Simple.hs 340 --- * all pre-hooks read additional build information from 'hookedPackageDesc', --- if present. +-- * all pre-hooks read additional build information from +-- /package/@.buildinfo@, if present. hunk ./Distribution/Simple.hs 344 --- 'hookedPackageDesc' and possibly other files. +-- /package/@.buildinfo@ and possibly other files. hunk ./Distribution/Simple.hs 375 - = do exists <- doesFileExist hookedPackageDesc - if exists then do - pkg_descr <- readPackageDescription hookedPackageDesc - return (Just pkg_descr) - else - return Nothing + = do maybe_infoFile <- defaultHookedPackageDesc + case maybe_infoFile of + Nothing -> return Nothing + Just infoFile -> do + pkg_descr <- readPackageDescription infoFile + return (Just pkg_descr) hunk ./Distribution/Compat/ReadP.hs 21 --- Martin Sjögren +-- Martin Sjögren hunk ./Distribution/Make.hs 4 --- Copyright : Martin Sjögren 2004 +-- Copyright : Martin Sjögren 2004 hunk ./Distribution/Simple/Utils.hs 361 --- .cabal files. +-- @.cabal@ files. hunk ./Distribution/Simple/Utils.hs 419 - TestCase (do files <- filesWithExtensions "." "description" - assertEqual "filesWithExtensions" "Setup.description" (head files)) + TestCase (do files <- filesWithExtensions "." "cabal" + assertEqual "filesWithExtensions" "Cabal.cabal" (head files)) hunk ./test/withHooks/Setup.lhs 8 +> import Distribution.Simple.Utils (defaultHookedPackageDesc) hunk ./test/withHooks/Setup.lhs 12 +> import Data.Maybe(fromJust, isNothing) hunk ./test/withHooks/Setup.lhs 17 -> d <- readPackageDescription hookedPackageDesc +> m <- defaultHookedPackageDesc +> when (isNothing m) (error "can't open hooked package description!") +> d <- readPackageDescription (fromJust m) hunk ./Cabal.cabal 7 -Package-URL: http://www.haskell.org/cabal/ +Homepage: http://www.haskell.org/cabal/ hunk ./Distribution/PackageDescription.hs 57 + Library(..), hunk ./Distribution/PackageDescription.hs 59 - libModules, hunk ./Distribution/PackageDescription.hs 60 - biModules, + libModules, hunk ./Distribution/PackageDescription.hs 113 + buildDepends :: [Dependency], hunk ./Distribution/PackageDescription.hs 120 - library :: Maybe BuildInfo, + library :: Maybe Library, hunk ./Distribution/PackageDescription.hs 125 +data Library = Library { exposedModules :: [String], + hiddenModules :: [String], + libBuildInfo :: BuildInfo } + deriving (Show, Eq, Read) + +emptyLibrary :: Library +emptyLibrary = Library [] [] emptyBuildInfo + hunk ./Distribution/PackageDescription.hs 142 + buildDepends = [], hunk ./Distribution/PackageDescription.hs 155 --- |All the modules listed in this BuildInfo. -biModules :: BuildInfo -> [String] -biModules BuildInfo{executableModules=exeMods, - exposedModules=expMods, - hiddenModules=hMods} - = exeMods ++ hMods ++ expMods - hunk ./Distribution/PackageDescription.hs 164 - = concatMap (\e -> executableModules $ buildInfo e) execs + = concatMap executableModules execs hunk ./Distribution/PackageDescription.hs 169 - Just l -> if null (cSources l) + Just l -> if null (cSources $ libBuildInfo l) hunk ./Distribution/PackageDescription.hs 174 - hunk ./Distribution/PackageDescription.hs 177 - buildDepends :: [Dependency], - executableModules :: [String], -- Only used for executables - exposedModules :: [String], -- Only used for libs - hiddenModules :: [String], -- Only used for libs hunk ./Distribution/PackageDescription.hs 190 - buildDepends = [], - executableModules = [], -- Only used for executables - exposedModules = [], -- Only used for libs - hiddenModules = [], -- Only used for libs hunk ./Distribution/PackageDescription.hs 199 - + hunk ./Distribution/PackageDescription.hs 202 + executableModules :: [String], hunk ./Distribution/PackageDescription.hs 212 - buildInfo = emptyBuildInfo + buildInfo = emptyBuildInfo, + executableModules=[] hunk ./Distribution/PackageDescription.hs 222 -withLib :: PackageDescription -> a -> (BuildInfo -> IO a) -> IO a +withLib :: PackageDescription -> a -> (Library -> IO a) -> IO a hunk ./Distribution/PackageDescription.hs 268 --- library :: Maybe BuildInfo, hunk ./Distribution/PackageDescription.hs 283 - makeLib :: Maybe BuildInfo -> Maybe BuildInfo -> Maybe BuildInfo + makeLib :: Maybe Library -> Maybe Library -> Maybe Library hunk ./Distribution/PackageDescription.hs 287 - makeLib (Just b1) (Just b2) = Just $ unionBuildInfo b1 b2 + makeLib (Just b1) (Just b2) = Just $ unionLibrary b1 b2 hunk ./Distribution/PackageDescription.hs 289 +unionLibrary :: Library -> Library -> Library +unionLibrary l1 l2 + = l1{ exposedModules = combine exposedModules, + hiddenModules = combine hiddenModules, + libBuildInfo = unionBuildInfo (libBuildInfo l1) (libBuildInfo l2) + } + where + combine :: (Eq a) => (Library -> [a]) -> [a] + combine f = f l1 ++ f l2 + hunk ./Distribution/PackageDescription.hs 301 - = b1{buildDepends = combine buildDepends, - executableModules = combine executableModules, - exposedModules = combine exposedModules, - hiddenModules = combine hiddenModules, - cSources = combine cSources, + = b1{cSources = combine cSources, hunk ./Distribution/PackageDescription.hs 310 - where - combine :: (Eq a) => (BuildInfo -> [a]) - -> [a] + where + combine :: (Eq a) => (BuildInfo -> [a]) -> [a] hunk ./Distribution/PackageDescription.hs 358 + , listField "build-depends" + showDependency parseDependency + buildDepends (\xs pkg -> pkg{buildDepends=xs}) hunk ./Distribution/PackageDescription.hs 395 + , listField "hidden-modules" + text parseModuleNameQ + (\p -> maybe [] hiddenModules (library p)) + (\xs pkg -> let lib = fromMaybe emptyLibrary (library pkg) in + pkg{library = Just lib{hiddenModules=xs}}) + , listField "exposed-modules" + text parseModuleNameQ + (\p -> maybe [] exposedModules (library p)) + (\xs pkg -> let lib = fromMaybe emptyLibrary (library pkg) in + pkg{library = Just lib{exposedModules=xs}}) hunk ./Distribution/PackageDescription.hs 415 + , listField "executable-modules" + text parseModuleNameQ + executableModules (\xs exe -> exe{executableModules=xs}) hunk ./Distribution/PackageDescription.hs 422 - [ listField "build-depends" - showDependency parseDependency - buildDepends (\xs binfo -> binfo{buildDepends=xs}) - , listField "hidden-modules" - text parseModuleNameQ - hiddenModules (\xs binfo -> binfo{hiddenModules=xs}) - , listField "exposed-modules" - text parseModuleNameQ - exposedModules (\xs binfo -> binfo{exposedModules=xs}) - , listField "executable-modules" - text parseModuleNameQ - executableModules (\xs binfo -> binfo{executableModules=xs}) - , listField "c-sources" + [ listField "c-sources" hunk ./Distribution/PackageDescription.hs 475 - let lib = fromMaybe emptyBuildInfo (library pkg) - lib' <- parseBInfoField binfoFields lib (lineNo, f, val) - return pkg{library=Just lib'} + let lib = fromMaybe emptyLibrary (library pkg) + bi <- parseBInfoField binfoFields (libBuildInfo lib) (lineNo, f, val) + return pkg{library=Just lib{libBuildInfo=bi}} hunk ./Distribution/PackageDescription.hs 497 - parseBInfoField [] binfo (lineNo, f, _) = + parseBInfoField [] _ (lineNo, f, _) = hunk ./Distribution/PackageDescription.hs 518 - Just lib -> ppFields lib binfoFields) $$ + Just lib -> ppFields (libBuildInfo lib) binfoFields) $$ hunk ./Distribution/PackageDescription.hs 586 + buildDepends = [Dependency "haskell-src" AnyVersion, + Dependency "HUnit" + (UnionVersionRanges (ThisVersion (Version [1,0,0] ["rain"])) + (LaterVersion (Version [1,0,0] ["rain"])))], hunk ./Distribution/PackageDescription.hs 597 - library = Just $ BuildInfo { - buildDepends = [Dependency "haskell-src" AnyVersion, - Dependency "HUnit" - (UnionVersionRanges (ThisVersion (Version [1,0,0] ["rain"])) - (LaterVersion (Version [1,0,0] ["rain"])))], - + library = Just $ Library { hunk ./Distribution/PackageDescription.hs 600 - executableModules=[], - cSources = ["not/even/rain.c", "such/small/hands"], - hsSourceDir = "src", hunk ./Distribution/PackageDescription.hs 601 - extensions = [OverlappingInstances, TypeSynonymInstances], - extraLibs = ["libfoo", "bar", "bang"], - extraLibDirs = ["/usr/local/libs"], - includeDirs = ["your/slightest", "look/will"], - includes = ["/easily/unclose", "/me", "funky, path\\name"], - -- Note reversed order: - options = [(Hugs,["+TH"]), (GHC,["-fTH","-fglasgow-exts"])] + libBuildInfo=BuildInfo { + cSources = ["not/even/rain.c", "such/small/hands"], + hsSourceDir = "src", + extensions = [OverlappingInstances, TypeSynonymInstances], + extraLibs = ["libfoo", "bar", "bang"], + extraLibDirs = ["/usr/local/libs"], + includeDirs = ["your/slightest", "look/will"], + includes = ["/easily/unclose", "/me", "funky, path\\name"], + -- Note reversed order: + options = [(Hugs,["+TH"]), (GHC,["-fTH","-fglasgow-exts"])]} hunk ./Distribution/PackageDescription.hs 612 - executables = [Executable "somescript" "SomeFile.hs" ( + executables = [Executable "somescript" + ["Foo1","Util","Main"] "SomeFile.hs" ( hunk ./Distribution/PackageDescription.hs 615 - executableModules = ["Foo1","Util","Main"], + hunk ./Distribution/PreProcess.hs 51 - biModules, withLib) + Library(..), withLib, libModules) hunk ./Distribution/PreProcess.hs 84 - withLib pkg_descr () $ \ bi -> do + withLib pkg_descr () $ \ lib -> do + let bi = libBuildInfo lib hunk ./Distribution/PreProcess.hs 88 - mod <- biModules bi] -- FIX: output errors? + mod <- libModules pkg_descr] -- FIX: output errors? hunk ./Distribution/PreProcess.hs 90 - foreachBuildInfo False pkg_descr $ \ bi -> do + foreachExe pkg_descr $ \ theExe -> do + let bi = buildInfo theExe hunk ./Distribution/PreProcess.hs 94 - :(maybeToList (library pkg_descr >>= Just . hsSourceDir))) + :(maybeToList (library pkg_descr >>= Just . hsSourceDir . libBuildInfo))) hunk ./Distribution/PreProcess.hs 96 - mod <- biModules bi] -- FIX: output errors? + mod <- executableModules theExe] -- FIX: output errors? hunk ./Distribution/PreProcess.hs 137 - = foreachBuildInfo True pkg_descr $ \ bi -> - removePreprocessed (r `joinFileName` hsSourceDir bi) (biModules bi) suff + = do withLib pkg_descr () (\lib -> do + let bi = libBuildInfo lib + removePreprocessed (r `joinFileName` hsSourceDir bi) (libModules pkg_descr) suff) + foreachExe pkg_descr (\theExe -> do + let bi = buildInfo theExe + removePreprocessed (r `joinFileName` hsSourceDir bi) (executableModules theExe) suff) hunk ./Distribution/PreProcess.hs 159 --- | Perform the action on each 'BuildInfo' in the package description. -foreachBuildInfo :: Bool -- Including the library? - -> PackageDescription -> (BuildInfo -> IO a) - -> IO () -foreachBuildInfo includeLib pkg_descr action = do - when includeLib (withLib pkg_descr () (\ bi -> action bi >> return ())) - mapM_ (action . buildInfo) (executables pkg_descr) +-- | Perform the action on each 'Executable' in the package description. +foreachExe :: PackageDescription + -> (Executable -> IO a) + -> IO () +foreachExe pkg_descr action = mapM_ action (executables pkg_descr) hunk ./Distribution/Simple/Build.hs 52 -import Distribution.PackageDescription (PackageDescription(..), BuildInfo(..), +import Distribution.PackageDescription (PackageDescription(..), BuildInfo(..), hunk ./Distribution/Simple/Build.hs 54 - libModules, biModules, hcOptions) + Library(..), libModules, hcOptions) hunk ./Distribution/Simple/Build.hs 106 - let flags = snd $ extensionsToNHCFlag (maybe [] extensions (library pkg_descr)) + let flags = snd $ extensionsToNHCFlag (maybe [] (extensions . libBuildInfo) (library pkg_descr)) hunk ./Distribution/Simple/Build.hs 110 - ++ maybe [] (hcOptions NHC . options) (library pkg_descr) + ++ maybe [] (hcOptions NHC . options . libBuildInfo) (library pkg_descr) hunk ./Distribution/Simple/Build.hs 122 - withLib pkg_descr () $ \buildInfo' -> do + withLib pkg_descr () $ \lib -> do + let buildInfo' = libBuildInfo lib hunk ./Distribution/Simple/Build.hs 133 - ++ (exposedModules buildInfo' ++ hiddenModules buildInfo') - unless (null (hiddenModules buildInfo' ++ exposedModules buildInfo')) $ + ++ (libModules pkg_descr) + unless (null (libModules pkg_descr)) $ hunk ./Distribution/Simple/Build.hs 149 - | x <- exposedModules buildInfo' ++ hiddenModules buildInfo' ] + | x <- libModules pkg_descr ] hunk ./Distribution/Simple/Build.hs 169 - ++ constructGHCCmdLine (library pkg_descr >>= Just . hsSourceDir) + ++ constructGHCCmdLine (library pkg_descr >>= Just . hsSourceDir . libBuildInfo) hunk ./Distribution/Simple/Build.hs 174 - | Executable exeName' modPath exeBi <- executables pkg_descr] + | Executable exeName' exeMods modPath exeBi <- executables pkg_descr] hunk ./Distribution/Simple/Build.hs 196 - withLib pkg_descr () $ compileBuildInfo pref Nothing + withLib pkg_descr () $ (\l -> compileBuildInfo pref Nothing (libModules pkg_descr) (libBuildInfo l)) hunk ./Distribution/Simple/Build.hs 201 - compileExecutable destDir (exe@Executable {modulePath=mainPath, buildInfo=bi}) = do + compileExecutable destDir (exe@Executable {modulePath=mainPath, buildInfo=bi, + executableModules=exeMods}) = do hunk ./Distribution/Simple/Build.hs 206 - compileBuildInfo destDir (library pkg_descr >>= Just . hsSourceDir) bi + compileBuildInfo destDir (library pkg_descr >>= Just . hsSourceDir . libBuildInfo) exeMods bi hunk ./Distribution/Simple/Build.hs 211 + -> [String] -- ^Modules hunk ./Distribution/Simple/Build.hs 213 - compileBuildInfo destDir mLibSrcDir bi = do + compileBuildInfo destDir mLibSrcDir mods bi = do hunk ./Distribution/Simple/Build.hs 219 - mod <- biModules bi] + mod <- mods] hunk ./Distribution/Simple/Build.hs 228 - mod <- biModules bi] + mod <- mods] hunk ./Distribution/Simple/Configure.hs 67 - PackageDescription(..), + PackageDescription(..), Library(..), hunk ./Distribution/Simple/Configure.hs 134 - comp@(Compiler f' ver p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path maybe_hc_pkg pkg_descr + comp@(Compiler f' ver p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path maybe_hc_pkg pkg_descr hunk ./Distribution/Simple/Configure.hs 136 - let extlist = nub $ maybe [] extensions lib ++ - concat [ extensions exeBi | Executable _ _ exeBi <- executables pkg_descr ] + let extlist = nub $ maybe [] (extensions . libBuildInfo) lib ++ + concat [ extensions exeBi | Executable _ _ _ exeBi <- executables pkg_descr ] hunk ./Distribution/Simple/Configure.hs 155 - packageDeps=map buildDepToDep (maybe [] buildDepends lib), - executableDeps = [(n, map buildDepToDep (buildDepends exeBi)) - | Executable n _ exeBi <- executables pkg_descr] + packageDeps=map buildDepToDep (buildDepends pkg_descr), + executableDeps = [(n, map buildDepToDep (buildDepends pkg_descr)) + | Executable n _ _ _ <- executables pkg_descr] hunk ./Distribution/Simple/GHCPackageConfig.hs 23 -import Distribution.PackageDescription (PackageDescription(..), BuildInfo(..)) +import Distribution.PackageDescription (PackageDescription(..), BuildInfo(..), Library(..)) hunk ./Distribution/Simple/GHCPackageConfig.hs 86 - maybe [] extraLibDirs (library pkg_descr)), + maybe [] (extraLibDirs . libBuildInfo) (library pkg_descr)), hunk ./Distribution/Simple/GHCPackageConfig.hs 88 - extra_libraries = maybe [] extraLibs (library pkg_descr), - include_dirs = maybe [] includeDirs (library pkg_descr), - c_includes = maybe [] includes (library pkg_descr), + extra_libraries = maybe [] (extraLibs . libBuildInfo) (library pkg_descr), + include_dirs = maybe [] (includeDirs . libBuildInfo) (library pkg_descr), + c_includes = maybe [] (includes . libBuildInfo) (library pkg_descr), hunk ./Distribution/Simple/Install.hs 60 - PackageDescription(..), BuildInfo(..), Executable(..), - setupMessage, hasLibs, withLib, libModules, exeModules, biModules, + PackageDescription(..), BuildInfo(..), Executable(..), Library (..), + setupMessage, hasLibs, withLib, libModules, exeModules, hunk ./Distribution/Simple/Install.hs 106 - | Executable e _ b <- executables pkg_descr] + | Executable e _ _ b <- executables pkg_descr] hunk ./Distribution/Simple/Install.hs 114 - = do moveSources (buildPref `joinFileName` (hsSourceDir l)) pref (libModules pd) ["hi"] + = do moveSources (buildPref `joinFileName` (hsSourceDir $ libBuildInfo l)) pref (libModules pd) ["hi"] hunk ./Distribution/Simple/Install.hs 136 - moveSources buildPref pkgDir (biModules libInfo) hugsInstallSuffixes + moveSources buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes hunk ./Distribution/Simple/LocalBuildInfo.hs 64 - executableDeps :: [(String,[PackageIdentifier])] + executableDeps :: [(String,[PackageIdentifier])] -- FIX: No longer used?! hunk ./Distribution/Simple/Register.hs 60 - BuildInfo(..)) + BuildInfo(..), Library(..)) hunk ./Distribution/Simple/Register.hs 184 - IPI.extraLibraries = extraLibs lib, - IPI.includeDirs = includeDirs lib, - IPI.includes = includes lib, + IPI.extraLibraries = extraLibs $ libBuildInfo lib, + IPI.includeDirs = includeDirs $ libBuildInfo lib, + IPI.includes = includes $ libBuildInfo lib, hunk ./Distribution/Simple/Register.hs 188 - IPI.extraHugsOpts = concat [opts | (Hugs,opts) <- options lib], + IPI.extraHugsOpts = concat [opts | (Hugs,opts) <- options $ libBuildInfo lib], hunk ./Distribution/Simple/SrcDist.hs 53 - (PackageDescription(..), BuildInfo(..), Executable(buildInfo), setupMessage, biModules) + (PackageDescription(..), BuildInfo(..), Executable(..), Library(..), + setupMessage, libModules) hunk ./Distribution/Simple/SrcDist.hs 81 - maybe (return ()) (prepareDir targetDir pps) (library pkg_descr) + maybe (return ()) (\l -> prepareDir targetDir pps (libModules pkg_descr) (libBuildInfo l)) + (library pkg_descr) hunk ./Distribution/Simple/SrcDist.hs 84 - mapM_ (prepareDir targetDir pps) (map buildInfo (executables pkg_descr)) + sequence_ [prepareDir targetDir pps exeM exeBi | (Executable _ exeM _ exeBi) <- executables pkg_descr] hunk ./Distribution/Simple/SrcDist.hs 96 + -> [String] -- ^Modules hunk ./Distribution/Simple/SrcDist.hs 99 -prepareDir inPref pps bi@BuildInfo{hsSourceDir=srcDir} +prepareDir inPref pps mods bi@BuildInfo{hsSourceDir=srcDir} hunk ./Distribution/Simple/SrcDist.hs 102 - moveSources srcDir pref (biModules bi) (suff ++ ["hs", "lhs"]) - removePreprocessed pref (biModules bi) (suff ++ ["hs", "lhs"]) + moveSources srcDir pref mods (suff ++ ["hs", "lhs"]) + removePreprocessed pref mods (suff ++ ["hs", "lhs"]) hunk ./Distribution/Simple.hs 191 - withLib pkg_descr ExitSuccess (\bi -> + withLib pkg_descr ExitSuccess (\lib -> hunk ./Distribution/Simple.hs 193 + let bi = libBuildInfo lib hunk ./Distribution/Simple.hs 199 - | m <- exposedModules bi] >>= return . concat + | m <- exposedModules lib] >>= return . concat hunk ./test/wash2hs/Setup.description 5 +Build-Depends: text hunk ./test/wash2hs/Setup.description 8 -Build-Depends: text hunk ./Distribution/PackageDescription.hs 302 - hsSourceDir = combine hsSourceDir, + hsSourceDir = override hsSourceDir "hs-source-dir" currentDir, hunk ./Distribution/PackageDescription.hs 313 - + override :: (Eq a) + => (BuildInfo -> a) -- ^ field extractor + -> String -- ^ field name + -> a -- ^ default value + -> a + override f s def + | v1 == def = v2 + | v2 == def = v1 + | otherwise = error $ "union: Two non-empty fields found in union attempt: " ++ s + where v1 = f b1 + v2 = f b2 hunk ./debian/changelog 1 +haskell-cabal (0.3-1) unstable; urgency=low + + * new upstream version + + -- Isaac Jones Sat, 15 Jan 2005 12:55:49 -0800 + hunk ./debian/rules 27 -./setup install --install-prefix=$(CURDIR)/debian/$(PACKAGE)$(LIBPATH) +./setup copy --copy-prefix=$(CURDIR)/debian/$(PACKAGE)$(LIBPATH) hunk ./Distribution/Simple.hs 222 - install pkg_descr localbuildinfo (mJoinPaths mprefix (prefix localbuildinfo)) + install pkg_descr localbuildinfo mprefix hunk ./Cabal.cabal 4 +Build-Depends: posix hunk ./Cabal.cabal 35 - Distribution.Simple.LocalBuildInfo, hunk ./Cabal.cabal 35 + Distribution.Simple.LocalBuildInfo, hunk ./debian/libghc6-cabal-dev.prerm 23 - rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.2/HSCabal*.o + rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.3/HSCabal*.o hunk ./Distribution/Setup.hs 297 - "specify the directory in which to place installed files, prepended to configure-time install path" + "specify the directory in which to place installed files" hunk ./Distribution/Setup.hs 339 - _ -> error $ "Unexpected flag!" - updateCfg [] t = t + _ -> error $ "Internal Error: Unexpected flag!" + updateCfg [] t = t hunk ./Distribution/ModuleTest.hs 201 - checkTargetDir ",tmp2/,tmp/lib/test-1.0/" [".hi"] - doesFileExist (",tmp2/,tmp/lib/test-1.0/" `joinFileName` "libHStest-1.0.a") + checkTargetDir ",tmp2/lib/test-1.0/" [".hi"] + doesFileExist (",tmp2/lib/test-1.0/" `joinFileName` "libHStest-1.0.a") hunk ./Distribution/ModuleTest.hs 236 - doesFileExist (",tmp/,tmp/lib/withHooks-1.0/" `joinFileName` "libHSwithHooks-1.0.a") + doesFileExist (",tmp/lib/withHooks-1.0/" `joinFileName` "libHSwithHooks-1.0.a") hunk ./Distribution/ModuleTest.hs 238 - doesFileExist ",tmp/,tmp/bin/withHooks" + doesFileExist ",tmp/bin/withHooks" hunk ./Distribution/ModuleTest.hs 266 - "instal returned error code" + "copy returned error code" hunk ./Distribution/PackageDescription.hs 258 + buildDepends = combine buildDepends, hunk ./test/Tests.mk 2 - ghc -cpp --make -i../.. Setup.lhs -o setup + ghc -cpp --make -i../.. Setup.lhs -o setup 2>out.build hunk ./Cabal.cabal 4 -Build-Depends: posix +Build-Depends: base, util hunk ./Cabal.cabal 46 -Build-Depends: base hunk ./Distribution/PackageDescription.hs 113 - buildDepends :: [Dependency], + buildDepends :: [Dependency], hunk ./Distribution/PackageDescription.hs 115 - buildPackage :: Bool, -- ^ package is buildable here + buildable :: Bool, -- ^ package is buildable here hunk ./Distribution/PackageDescription.hs 147 - buildPackage = True, + buildable = True, hunk ./Distribution/PackageDescription.hs 256 - buildPackage = override buildPackage "build-package", + buildable = override buildable "buildable", hunk ./Distribution/PackageDescription.hs 303 - hsSourceDir = override hsSourceDir "hs-source-dir" currentDir, + hsSourceDir = override hsSourceDir "hs-source-dir", hunk ./Distribution/PackageDescription.hs 314 - override :: (Eq a) - => (BuildInfo -> a) -- ^ field extractor - -> String -- ^ field name - -> a -- ^ default value - -> a - override f s def + override :: (Eq a) => (BuildInfo -> a) -> String -> a + override f s hunk ./Distribution/PackageDescription.hs 321 + def = f emptyBuildInfo hunk ./Distribution/PackageDescription.hs 366 - , listField "build-depends" + , listField "build-depends" hunk ./Distribution/PackageDescription.hs 390 - , simpleField "build-package" + , simpleField "buildable" hunk ./Distribution/PackageDescription.hs 392 - buildPackage (\val pkg -> pkg{buildPackage=val}) + buildable (\val pkg -> pkg{buildable=val}) hunk ./Distribution/PackageDescription.hs 554 - "Build-Package: True", + "buildable: True", hunk ./Distribution/PackageDescription.hs 593 - buildPackage = True, - buildDepends = [Dependency "haskell-src" AnyVersion, + buildable = True, + buildDepends = [Dependency "haskell-src" AnyVersion, hunk ./Distribution/ParseUtils.hs 180 -splitStanzas = mapM (mapM brk) . map merge . groupStanzas . filter validLine . zip [1..] . lines +splitStanzas = mapM mkStanza . map merge . groupStanzas . filter validLine . zip [1..] . lines hunk ./Distribution/ParseUtils.hs 195 -singleStanza = mapM brk . merge . filter validLine . zip [1..] . lines +singleStanza = mkStanza . merge . filter validLine . zip [1..] . lines hunk ./Distribution/ParseUtils.hs 208 -brk :: (Int,String) -> ParseResult (Int,String,String) -brk (n,xs) = case break (==':') xs of - (fld, ':':val) -> return (n, map toLower fld, dropWhile isSpace val) - (_, _) -> fail $ "Line "++show n++": Invalid syntax (no colon after field name)" +mkStanza :: [(Int,String)] -> ParseResult Stanza +mkStanza [] = return [] +mkStanza ((n,xs):ys) = + case break (==':') xs of + (fld', ':':val) -> do + let fld = map toLower fld' + ss <- mkStanza ys + checkDuplField fld ss + return ((n, fld, dropWhile isSpace val):ss) + (_, _) -> fail $ "Line "++show n++": Invalid syntax (no colon after field name)" + where + checkDuplField fld [] = return () + checkDuplField fld (x'@(n',fld',val'):xs') + | fld' == fld = fail ("The field "++fld++" is defined on both line "++show n++" and "++show n') + | otherwise = checkDuplField fld xs' hunk ./Distribution/Setup.hs 339 - _ -> error $ "Internal Error: Unexpected flag!" - updateCfg [] t = t + _ -> error $ "Unexpected flag!" + updateCfg [] t = t hunk ./Distribution/Simple.hs 177 + when (not (buildable pkg_descr)) $ do + let name = showPackageId (package pkg_descr) + die ("Package " ++ name ++ " can't be built on this system.") hunk ./Distribution/Make.hs 120 - (_, args) <- parseBuildArgs args [] + (_, _, args) <- parseBuildArgs 0 args [] hunk ./Distribution/PreProcess.hs 66 + -> Int -- verbose hunk ./Distribution/PreProcess.hs 79 + -> Int -- ^ verbose hunk ./Distribution/PreProcess.hs 83 -preprocessSources pkg_descr lbi handlers = do +preprocessSources pkg_descr lbi verbose handlers = do hunk ./Distribution/PreProcess.hs 89 - sequence_ [preprocessModule [hsSourceDir bi] mod builtinSuffixes biHandlers | + sequence_ [preprocessModule [hsSourceDir bi] mod verbose builtinSuffixes biHandlers | hunk ./Distribution/PreProcess.hs 97 - mod builtinSuffixes biHandlers | + mod verbose builtinSuffixes biHandlers | hunk ./Distribution/PreProcess.hs 110 + -> Int -- ^verbose hunk ./Distribution/PreProcess.hs 114 -preprocessModule searchLoc mod builtinSuffixes handlers = do +preprocessModule searchLoc mod verbose builtinSuffixes handlers = do hunk ./Distribution/PreProcess.hs 132 - then pp psrcFile (srcStem `joinFileExt` "hs") + then pp psrcFile (srcStem `joinFileExt` "hs") verbose hunk ./Distribution/PreProcess.hs 174 -ppGreenCard inFile outFile - = rawSystemPath "green-card" ["-tffi", "-o" ++ outFile, inFile] -ppC2hs inFile outFile - = rawSystemPath "c2hs" ["-o " ++ outFile, inFile] +ppGreenCard inFile outFile verbose + = rawSystemPath verbose "green-card" ["-tffi", "-o" ++ outFile, inFile] +ppC2hs inFile outFile verbose + = rawSystemPath verbose "c2hs" ["-o " ++ outFile, inFile] hunk ./Distribution/PreProcess.hs 182 -ppUnlit inFile outFile = do +ppUnlit inFile outFile verbose = do hunk ./Distribution/PreProcess.hs 189 - where pp inFile outFile - = rawSystemPath "cpphs" (extraArgs ++ ["-O" ++ outFile, inFile]) + where pp inFile outFile verbose + = rawSystemPath verbose "cpphs" (extraArgs ++ ["-O" ++ outFile, inFile]) hunk ./Distribution/PreProcess.hs 226 + -> Int -- ^verbose hunk ./Distribution/PreProcess.hs 228 -ppTestHandler inFile outFile - = do stuff <- readFile inFile +ppTestHandler inFile outFile verbose + = do when (verbose > 0) $ + putStrLn (inFile++" has been preprocessed as a test to "++outFile) + stuff <- readFile inFile hunk ./Distribution/PreProcess.hs 236 -standardPP eName args inFile outFile - = rawSystemPath eName (args ++ ["-o" ++ outFile, inFile]) +standardPP eName args inFile outFile verbose + = rawSystemPath verbose eName (args ++ ["-o" ++ outFile, inFile]) hunk ./Distribution/Setup.hs 113 --- | Verbose | Version? + | Verbose Int +-- | Version? hunk ./Distribution/Setup.hs 121 --- Do we have any other interesting global flags? Verbose? +cmd_verbose :: OptDescr (Flag a) +cmd_verbose = Option "v" ["verbose"] (OptArg verboseFlag "n") "Control verbosity (n is 0--5, normal verbosity level is 1, -v alone is equivalent to -v3)" + where + verboseFlag mb_s = Verbose (maybe 1 read mb_s) + +-- Do we have any other interesting global flags? hunk ./Distribution/Setup.hs 129 - cmd_help + cmd_help, + cmd_verbose hunk ./Distribution/Setup.hs 251 - cmdOptions = [cmd_help], + cmdOptions = [cmd_help, cmd_verbose], hunk ./Distribution/Setup.hs 255 -parseBuildArgs :: [String] -> [OptDescr a] -> IO ([a], [String]) -parseBuildArgs = parseNoArgs buildCmd +parseBuildArgs :: Int -> [String] -> [OptDescr a] -> IO (Int, [a], [String]) +parseBuildArgs verbose args customOpts = + case getCmdOpt buildCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp buildCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (updateBld flags verbose, unliftFlags flags, args') + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs + exitWith (ExitFailure 1) + where + updateBld (fl:flags) verbose = updateBld flags $ + case fl of + Verbose n -> n + _ -> error $ "Unexpected flag!" + updateBld [] t = t hunk ./Distribution/Setup.hs 278 - cmdOptions = [cmd_help], + cmdOptions = [cmd_help, cmd_verbose], hunk ./Distribution/Setup.hs 282 -parseHaddockArgs = parseNoArgs haddockCmd +parseHaddockArgs verbose args customOpts = + case getCmdOpt haddockCmd customOpts args of + (flags, _, []) | hasHelpFlag flags -> do + printCmdHelp haddockCmd customOpts + exitWith ExitSuccess + (flags, args', []) -> + return (updateBld flags verbose, unliftFlags flags, args') + (_, _, errs) -> do putStrLn "Errors: " + mapM_ putStrLn errs + exitWith (ExitFailure 1) + where + updateBld (fl:flags) verbose = updateBld flags $ + case fl of + Verbose n -> n + _ -> error $ "Unexpected flag!" + updateBld [] t = t + hunk ./Distribution/Simple/Build.hs 90 + -> Int -- verbose hunk ./Distribution/Simple/Build.hs 93 -build pkg_descr lbi suffixes = do +build pkg_descr lbi verbose suffixes = do hunk ./Distribution/Simple/Build.hs 95 - preprocessSources pkg_descr lbi suffixes + preprocessSources pkg_descr lbi verbose suffixes hunk ./Distribution/Simple/Build.hs 98 - GHC -> buildGHC pkg_descr lbi - Hugs -> buildHugs pkg_descr lbi + GHC -> buildGHC pkg_descr lbi verbose + Hugs -> buildHugs pkg_descr lbi verbose hunk ./Distribution/Simple/Build.hs 104 -buildNHC :: PackageDescription -> LocalBuildInfo -> IO () -buildNHC pkg_descr lbi = do +buildNHC :: PackageDescription -> LocalBuildInfo -> Int -> IO () +buildNHC pkg_descr lbi verbose = do hunk ./Distribution/Simple/Build.hs 108 - rawSystemExit (compilerPath (compiler lbi)) + rawSystemExit verbose (compilerPath (compiler lbi)) hunk ./Distribution/Simple/Build.hs 116 -buildGHC :: PackageDescription -> LocalBuildInfo -> IO () -buildGHC pkg_descr lbi = do +buildGHC :: PackageDescription -> LocalBuildInfo -> Int -> IO () +buildGHC pkg_descr lbi verbose = do hunk ./Distribution/Simple/Build.hs 136 - rawSystemExit ghcPath args + rawSystemExit verbose ghcPath args hunk ./Distribution/Simple/Build.hs 145 - rawSystemExit ghcPath (args ++ [c]) + rawSystemExit verbose ghcPath (args ++ [c]) hunk ./Distribution/Simple/Build.hs 156 - rawSystemPathExit "ar" (["q", lib] ++ [pref `joinFileName` x | x <- hObjs ++ cObjs]) + rawSystemPathExit verbose "ar" (["q", lib] ++ [pref `joinFileName` x | x <- hObjs ++ cObjs]) hunk ./Distribution/Simple/Build.hs 174 - rawSystemExit ghcPath args + rawSystemExit verbose ghcPath args hunk ./Distribution/Simple/Build.hs 194 -buildHugs :: PackageDescription -> LocalBuildInfo -> IO () -buildHugs pkg_descr lbi = do +buildHugs :: PackageDescription -> LocalBuildInfo -> Int -> IO () +buildHugs pkg_descr lbi verbose = do hunk ./Distribution/Simple/Build.hs 247 - rawSystemExit "cpp" + rawSystemExit verbose "cpp" hunk ./Distribution/Simple/Build.hs 273 - rawSystemExit ffihugs (hugsArgs ++ file : cArgs) + rawSystemExit verbose ffihugs (hugsArgs ++ file : cArgs) hunk ./Distribution/Simple/Register.hs 125 - rawSystemExit (compilerPkgTool (compiler lbi)) + rawSystemExit 0 (compilerPkgTool (compiler lbi)) hunk ./Distribution/Simple/Register.hs 206 - rawSystemExit (compilerPkgTool (compiler lbi)) + rawSystemExit 0 (compilerPkgTool (compiler lbi)) hunk ./Distribution/Simple/Utils.hs 111 -rawSystemPath :: String -> [String] -> IO ExitCode -rawSystemPath prog args = do +rawSystemPath :: Int -> String -> [String] -> IO ExitCode +rawSystemPath verbose prog args = do hunk ./Distribution/Simple/Utils.hs 116 - Just path -> rawSystem path args + Just path -> do + when (verbose > 0) $ + putStrLn (path ++ concatMap (' ':) args) + rawSystem path args hunk ./Distribution/Simple/Utils.hs 129 -rawSystemExit :: FilePath -> [String] -> IO () -rawSystemExit path args = do - putStrLn (path ++ concatMap (' ':) args) - --ToDo: make command display conditional on -v flag? +rawSystemExit :: Int -> FilePath -> [String] -> IO () +rawSystemExit verbose path args = do + when (verbose > 0) $ + putStrLn (path ++ concatMap (' ':) args) hunk ./Distribution/Simple/Utils.hs 136 -rawSystemPathExit :: String -> [String] -> IO () -rawSystemPathExit prog args = do - putStrLn (prog ++ concatMap (' ':) args) - --ToDo: make command display conditional on -v flag? - maybeExit $ rawSystemPath prog args +rawSystemPathExit :: Int -> String -> [String] -> IO () +rawSystemPathExit verbose prog args = do + maybeExit $ rawSystemPath verbose prog args hunk ./Distribution/Simple.hs 72 -import Distribution.Simple.Utils (die, currentDir, +import Distribution.Simple.Utils (die, currentDir, rawSystemPath, hunk ./Distribution/Simple.hs 185 - (_, args) <- parseBuildArgs args [] + (verbose, _, args) <- parseBuildArgs 0 args [] hunk ./Distribution/Simple.hs 188 - build pkg_descr localbuildinfo knownSuffixHandlers + build pkg_descr localbuildinfo verbose knownSuffixHandlers hunk ./Distribution/Simple.hs 192 - (_, args) <- parseHaddockArgs args [] + (verbose, _, args) <- parseHaddockArgs 0 args [] hunk ./Distribution/Simple.hs 200 - preprocessSources pkg_descr lbi knownSuffixHandlers + preprocessSources pkg_descr lbi verbose knownSuffixHandlers hunk ./Distribution/Simple.hs 203 - mapM (mockCpp pkg_descr bi lbi tmpDir) inFiles + mapM (mockCpp pkg_descr bi lbi tmpDir verbose) inFiles hunk ./Distribution/Simple.hs 206 - code <- rawSystem "haddock" (["-h", "-o" ++ targetDir] ++ outFiles) + code <- rawSystemPath verbose "haddock" (["-h", "-o", targetDir] ++ outFiles) hunk ./Distribution/Simple.hs 292 - mockCpp pkg_descr bi lbi pref file + mockCpp pkg_descr bi lbi pref verbose file hunk ./Distribution/Simple.hs 298 - ret <- ppCpp pkg_descr bi lbi file targetFile + ret <- ppCpp pkg_descr bi lbi file targetFile verbose hunk ./Distribution/Simple.hs 300 - (ppUnlit targetFile (joinFileExt targetFileNoext "hs") >> return ()) + (ppUnlit targetFile (joinFileExt targetFileNoext "hs") verbose >> return ()) addfile ./changelog hunk ./changelog 1 +-*-change-log-*- + +0.3 Isaac Jones Sun Jan 16 2005 + + * Interface Changes: + + ** WARNING: this is a pre-release and the interfaces are still + likely to change until we reach a 1.0 release. + + ** Instead of Package.description, you should name your + description files .cabal. In particular, we suggest + that you name it .cabal, but this is not enforced + (yet). Multiple .cabal files in the same directory is an error, + at least for now. + + ** ./setup install --install-prefix is gone. Use ./setup copy + --copy-prefix instead. + + ** The "Modules" field is gone. Use "hidden-modules", + "exposed-modules", and "executable-modules". + + ** Build-depends is now a package-only field, and can't go into + executable stanzas. Build-depends is a package-to-package + relationship. + + ** Some new fields. Use the Source. + + * New Features + + ** Cabal is now included as a package in the CVS version of + fptools. That means it'll be released as "-package Cabal" in + future versions of the compilers, and if you are a bleeding-edge + user, you can grab it from the CVS repository with the compilers. + + ** Hugs compatibility and NHC98 compatibility should both be + improved. + + ** Hooks Interface / Autoconf compatibility: Most of the hooks + interface is hidden for now, because it's not finalized. I have + exposed only "defaultMainWithHooks" and "defaultUserHooks". This + allows you to use a ./configure script to preprocess + "foo.buildinfo", which gets merged with "foo.cabal". In future + releases, we'll expose UserHooks, but we're definitely going to + change the interface to those. The interface to the two functions + I've exposed should stay the same, though. + + ** ./setup haddock is a baby feature which pre-processes the + source code with hscpp and runs haddock on it. This is brand new + and hardly tested, so you get to knock it around and see what you + think. + + ** Some commands now actually implement verbosity. + + ** The preprocessors have been tested a bit more, and seem to work + OK. Please give feedback if you use these. + +0.2 Isaac Jones + + * Adds more HUGS support and preprocessor support. hunk ./releaseNotes 5 +IMPORTANT INFORMATION: + +See both the README file and the changelog. + hunk ./releaseNotes 11 -The Haskell Cabal has reached pre-release stage, with a 0.1 version +The Haskell Cabal has reached pre-release stage, with a 0.3 version hunk ./releaseNotes 20 -Please report bugs and wish-list items here: -http://sourceforge.net/tracker/?func=add&group_id=44807&atid=440922 - -Or email Isaac Jones: ijones@syntaxpolice.org +Please report bugs and wish-list items to libraries@haskell.org and +Isaac Jones: ijones@syntaxpolice.org. hunk ./releaseNotes 65 -NOTES 0.2: Adds more HUGS support and preprocessor support. hunk ./copyright 1 -Copyright (c) 2003-2004, Isaac Jones, Simon Marlow, Martin Sjögren, +Copyright (c) 2003-2005, Isaac Jones, Simon Marlow, Martin Sjögren, hunk ./copyright 3 - Malcolm Wallace + Malcolm Wallace, Ross Patterson hunk ./Distribution/Setup.hs 62 +import Control.Monad(when) hunk ./Distribution/Setup.hs 320 - "[deprecated, use copy] specify the directory in which to place installed files", + "[DEPRECATED, use copy]", hunk ./Distribution/Setup.hs 368 + when (any isInstallPref flags) (error "--install-prefix is deprecated. Use copy command instead.") >> hunk ./Distribution/Setup.hs 373 - where updateCfg (fl:flags) uFlag = updateCfg flags $ + where updateCfg :: [Flag a] -> Bool -> Bool + updateCfg (fl:flags) uFlag = updateCfg flags $ hunk ./Distribution/Setup.hs 382 + isInstallPref (InstPrefix _) = True + isInstallPref _ = False hunk ./Distribution/Simple/Utils.hs 244 --- #error ToDo: getProcessID +-- error ToDo: getProcessID hunk ./Distribution/Simple.hs 51 - UserHooks (..), emptyUserHooks, defaultUserHooks, defaultHookedPackageDesc, + defaultUserHooks, -- UserHooks (..), emptyUserHooks, defaultHookedPackageDesc, hunk ./Distribution/Simple.hs 204 + setupMessage "Running Haddock" pkg_descr hunk ./changelog 5 + * Much thanks to all the awesome fptools hackers who have been + working hard to build the Haskell Cabal! + hunk ./GNUmakefile 128 - rm -f /tmp/cabal.tar.gz + rm -f /tmp/Cabal.tar.gz hunk ./debian/changelog 3 - * new upstream version + * new upstream version. see upstream changelog for more info. + * some interface changes. hunk ./GNUmakefile 16 +# the cabal tarball... +CABALBALL=cabal.tar.gz + hunk ./GNUmakefile 121 -dist: haddock +$(CABALBALL): hunk ./GNUmakefile 123 - mv Cabal.tar.gz /tmp - cd /tmp && tar -zxvf Cabal.tar.gz - mkdir -p /tmp/cabal/doc - cp -r dist/doc/html /tmp/cabal/doc/API + mv Cabal.tar.gz $(CABALBALL) + +TMPDISTLOC=/tmp/cabaldist + +dist: haddock $(CABALBALL) + rm -rf /tmp/cabal* /tmp/Cabal* + rm -rf $(TMPDISTLOC) + mkdir $(TMPDISTLOC) + mv $(CABALBALL) $(TMPDISTLOC) + cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) && mv Cabal cabal + mkdir $(TMPDISTLOC)/cabal/doc + cp -r dist/doc/html $(TMPDISTLOC)/cabal/doc/API hunk ./GNUmakefile 136 - cp -r /tmp/pkg-spec{-html,.pdf} /tmp/cabal/doc + cp -r /tmp/pkg-spec{-html,.pdf} $(TMPDISTLOC)/cabal/doc hunk ./GNUmakefile 138 - cd /tmp && tar -zcvf cabal-code.tgz cabal - rm -f /tmp/Cabal.tar.gz - rm -rf /tmp/cabal + cd $(TMPDISTLOC) && tar -zcvf /tmp/cabal-code.tgz cabal +# rm -f /tmp/Cabal.tar.gz +# rm -rf /tmp/cabal hunk ./README 7 +* "make install" as root, then try "ghci -package Cabal" to test it. + hunk ./debian/changelog 4 - * some interface changes. + * some interface changes, see upstream changelog. + * bumped standards-version. hunk ./debian/control 5 -Standards-Version: 3.6.0 +Standards-Version: 3.6.1 hunk ./Cabal.cabal 2 -Version: 0.3 +Version: 0.4 hunk ./GNUmakefile 1 +CABALVERSION=0.4 hunk ./GNUmakefile 122 +deb: dist + cd $(TMPDISTLOC) && ln -s $(CABALBALL) haskell-cabal_$(CABALVERSION).orig.tar.gz + cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) + mv $(TMPDISTLOC)/cabal $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) + cd $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) && debuild + hunk ./GNUmakefile 129 + rm -rf /tmp/cabal* /tmp/Cabal* + rm -rf $(TMPDISTLOC) hunk ./GNUmakefile 137 - rm -rf /tmp/cabal* /tmp/Cabal* - rm -rf $(TMPDISTLOC) hunk ./GNUmakefile 145 - cd $(TMPDISTLOC) && tar -zcvf /tmp/cabal-code.tgz cabal + cd $(TMPDISTLOC) && tar -zcvf $(CABALBALL) cabal hunk ./changelog 3 -0.3 Isaac Jones Sun Jan 16 2005 +0.4 Isaac Jones Sun Jan 16 2005 hunk ./changelog 59 + +0.3 Isaac Jones Sun Jan 16 2005 + * Unstable snapshot release + * From now on, stable releases are even. hunk ./debian/changelog 1 -haskell-cabal (0.3-1) unstable; urgency=low +haskell-cabal (0.4-1) unstable; urgency=low hunk ./debian/libghc6-cabal-dev.prerm 23 - rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.3/HSCabal*.o + rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.4/HSCabal*.o hunk ./releaseNotes 7 -See both the README file and the changelog. +See both the README file and the changelog for important interface +changes. hunk ./releaseNotes 12 -The Haskell Cabal has reached pre-release stage, with a 0.3 version +The Haskell Cabal has reached pre-release stage, with a 0.4 version hunk ./Cabal.cabal 10 - Common Architecture for Building Applications and Libraries: - a framework defining a common interface for authors to more + The Haskell Common Architecture for Building Applications and + Libraries: a framework defining a common interface for authors to more hunk ./Distribution/Make.hs 125 - (_, args) <- parseCleanArgs args [] + (_, _, args) <- parseCleanArgs args [] hunk ./Distribution/Make.hs 142 - (_, args) <- parseSDistArgs args [] + (_, _, args) <- parseSDistArgs args [] hunk ./Distribution/Make.hs 152 - (_, args) <- parseUnregisterArgs args [] + (_, _, args) <- parseUnregisterArgs args [] hunk ./Distribution/Setup.hs 125 - verboseFlag mb_s = Verbose (maybe 1 read mb_s) + verboseFlag mb_s = Verbose (maybe 3 read mb_s) hunk ./Distribution/Setup.hs 283 -parseHaddockArgs verbose args customOpts = - case getCmdOpt haddockCmd customOpts args of - (flags, _, []) | hasHelpFlag flags -> do - printCmdHelp haddockCmd customOpts - exitWith ExitSuccess - (flags, args', []) -> - return (updateBld flags verbose, unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) - where - updateBld (fl:flags) verbose = updateBld flags $ - case fl of - Verbose n -> n - _ -> error $ "Unexpected flag!" - updateBld [] t = t +parseHaddockArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) +parseHaddockArgs = parseNoArgs haddockCmd hunk ./Distribution/Setup.hs 286 - hunk ./Distribution/Setup.hs 295 -parseCleanArgs :: [String] -> [OptDescr a] -> IO ([a], [String]) +parseCleanArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) hunk ./Distribution/Setup.hs 379 -parseSDistArgs :: [String] -> [OptDescr a] -> IO ([a], [String]) +parseSDistArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) hunk ./Distribution/Setup.hs 425 -parseUnregisterArgs :: [String] -> [OptDescr a] -> IO ([a], [String]) +parseUnregisterArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) hunk ./Distribution/Setup.hs 428 --- |Helper function for commands with no arguments -parseNoArgs :: (Cmd a) -> [String] -> [OptDescr a] -> IO ([a], [String]) +-- |Helper function for commands with no arguments except for verbose +-- and help. + +parseNoArgs :: (Cmd a) -> [String] -> [OptDescr a] -> IO (Int, [a], [String]) hunk ./Distribution/Setup.hs 438 - return (unliftFlags flags, args') + return (updateCmd flags 0, unliftFlags flags, args') hunk ./Distribution/Setup.hs 442 + where + updateCmd (fl:flags) _ = updateCmd flags $ + case fl of + Verbose n -> n + _ -> error $ "Unexpected flag!" + updateCmd [] t = t + + hunk ./Distribution/Simple.hs 51 - defaultUserHooks, -- UserHooks (..), emptyUserHooks, defaultHookedPackageDesc, + defaultUserHooks, UserHooks (..), emptyUserHooks, defaultHookedPackageDesc, hunk ./Distribution/Simple.hs 192 - (verbose, _, args) <- parseHaddockArgs 0 args [] + (verbose, _, args) <- parseHaddockArgs args [] hunk ./Distribution/Simple.hs 204 - setupMessage "Running Haddock" pkg_descr + let showPkg = showPackageId (package pkg_descr) + let prologName = showPkg ++ "-haddock-prolog.txt" + writeFile prologName ((description pkg_descr) ++ "\n") + setupMessage "Running Haddock for" pkg_descr hunk ./Distribution/Simple.hs 210 - code <- rawSystemPath verbose "haddock" (["-h", "-o", targetDir] ++ outFiles) + putStrLn $ "verbose: " ++ (show verbose) + code <- rawSystemPath verbose "haddock" (["-h", + "-o", targetDir, + "-t", showPkg, + "-p", prologName] + ++ outFiles) hunk ./Distribution/Simple.hs 217 +-- removeFile prologName hunk ./Distribution/Simple.hs 221 - (_, args) <- parseCleanArgs args [] + (verbose,_, args) <- parseCleanArgs args [] hunk ./Distribution/Simple.hs 253 - (_, args) <- parseSDistArgs args [] + (verbose,_, args) <- parseSDistArgs args [] hunk ./Distribution/Simple.hs 266 - (_, args) <- parseUnregisterArgs args [] + (verbose,_, args) <- parseUnregisterArgs args [] hunk ./Distribution/Simple.hs 274 - mJoinPaths :: Maybe FilePath -> FilePath -> Maybe FilePath - mJoinPaths f1 f2 = do f1' <- f1 - let f2' = dropAbsolutePrefix f2 - return $ (joinFileName f1' f2') hunk ./debian/control 6 +Suggests: haddock, cpphs hunk ./Distribution/Make.hs 85 -configureArgs (flavour, mb_hc_path, mb_hc_pkg_path, mb_prefix) +configureArgs (flavour, mb_hc_path, mb_hc_pkg_path, mb_prefix, mb_haddock) hunk ./Distribution/Setup.hs 105 - Maybe FilePath) -- prefix + Maybe FilePath, -- prefix + Maybe FilePath -- Haddock path + ) hunk ./Distribution/Setup.hs 111 - | WithCompiler FilePath | WithHcPkg FilePath | Prefix FilePath + | WithCompiler FilePath | WithHaddock FilePath + | WithHcPkg FilePath | Prefix FilePath hunk ./Distribution/Setup.hs 218 - Option "w" ["with-hc-pkg"] (ReqArg WithHcPkg "PATH") + Option "" ["with-hc-pkg"] (ReqArg WithHcPkg "PATH") hunk ./Distribution/Setup.hs 221 - "bake this prefix in preparation of installation" + "bake this prefix in preparation of installation", + Option "" ["with-haddock"] (ReqArg WithHaddock "PATH") + "give the path to haddock" hunk ./Distribution/Setup.hs 225 - cmdAction = ConfigCmd (Nothing, Nothing, Nothing, Nothing) + cmdAction = ConfigCmd (Nothing, Nothing, Nothing, Nothing, Nothing) hunk ./Distribution/Setup.hs 240 - where updateCfg (fl:flags) t@(mcf, mpath, mhcpkg, mprefix) = updateCfg flags $ + where updateCfg (fl:flags) t@(mcf, mpath, mhcpkg, mprefix, mHaddockPath) = updateCfg flags $ hunk ./Distribution/Setup.hs 242 - GhcFlag -> (Just GHC, mpath, mhcpkg, mprefix) - NhcFlag -> (Just NHC, mpath, mhcpkg, mprefix) - HugsFlag -> (Just Hugs, mpath, mhcpkg, mprefix) - WithCompiler path -> (mcf, Just path, mhcpkg, mprefix) - WithHcPkg path -> (mcf, mpath, Just path, mprefix) - Prefix path -> (mcf, mpath, mhcpkg, Just path) + GhcFlag -> (Just GHC, mpath, mhcpkg, mprefix, mHaddockPath) + NhcFlag -> (Just NHC, mpath, mhcpkg, mprefix, mHaddockPath) + HugsFlag -> (Just Hugs, mpath, mhcpkg, mprefix, mHaddockPath) + WithCompiler path -> (mcf, Just path, mhcpkg, mprefix, mHaddockPath) + WithHaddock path -> (mcf, mpath, mhcpkg, mprefix, Just path) + WithHcPkg path -> (mcf, mpath, Just path, mprefix, mHaddockPath) + Prefix path -> (mcf, mpath, mhcpkg, Just path, mHaddockPath) hunk ./Distribution/Simple/Configure.hs 50 + findHaddock, hunk ./Distribution/Simple/Configure.hs 125 -configure pkg_descr (maybe_hc_flavor, maybe_hc_path, maybe_hc_pkg, maybe_prefix) +configure pkg_descr (maybe_hc_flavor, maybe_hc_path, maybe_hc_pkg, maybe_prefix, maybe_haddock) hunk ./Distribution/Simple/Configure.hs 147 - + had <- findHaddock maybe_haddock hunk ./Distribution/Simple/Configure.hs 154 + message $ maybe "No haddock found" ((++) "Using haddock: ") had hunk ./Distribution/Simple/Configure.hs 158 + withHaddock=had, hunk ./Distribution/Simple/Configure.hs 162 + +-- |If configure has been given the with-haddock argument, return +-- that, otherwise look in the path for it. +findHaddock :: Maybe FilePath -> IO (Maybe FilePath) +findHaddock p@(Just _) = return p +findHaddock Nothing = findExecutable "haddock" hunk ./Distribution/Simple/LocalBuildInfo.hs 64 + withHaddock :: Maybe FilePath, -- ^Might be the location of the Haddock executable. hunk ./Distribution/Simple/Utils.hs 47 + rawSystemVerbose, hunk ./Distribution/Simple/Utils.hs 121 + +rawSystemVerbose :: Int -> String -> [String] -> IO ExitCode +rawSystemVerbose verbose prog args = do + when (verbose > 0) $ + putStrLn (prog ++ concatMap (' ':) args) + rawSystem prog args hunk ./Distribution/Simple.hs 69 -import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, +import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, findHaddock, hunk ./Distribution/Simple.hs 72 -import Distribution.Simple.Utils (die, currentDir, rawSystemPath, +import Distribution.Simple.Utils (die, currentDir, rawSystemVerbose, hunk ./Distribution/Simple.hs 89 +import Data.Maybe (isNothing, fromJust) hunk ./Distribution/Simple.hs 197 + mHaddock <- findHaddock (withHaddock lbi) + when (isNothing mHaddock) (error "haddock command not found") hunk ./Distribution/Simple.hs 213 - putStrLn $ "verbose: " ++ (show verbose) - code <- rawSystemPath verbose "haddock" (["-h", - "-o", targetDir, - "-t", showPkg, - "-p", prologName] - ++ outFiles) + code <- rawSystemVerbose verbose (fromJust mHaddock) + (["-h", + "-o", targetDir, + "-t", showPkg, + "-p", prologName] + ++ (if verbose > 4 then ["-v"] else []) + ++ outFiles + ) hunk ./Distribution/Simple.hs 222 --- removeFile prologName + removeFile prologName hunk ./Distribution/Simple.hs 379 - defaultPreConf args (_, _, _, mb_prefix) + defaultPreConf args (_, _, _, mb_prefix, _) hunk ./test/twoMains/.setup-config 1 -LocalBuildInfo {prefix = ",tmp", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,2,2], versionTags = []}, compilerPath = "/usr/bin/ghc", compilerPkgTool = "/usr/bin/ghc-pkg"}, buildDir = "dist/build", packageDeps = [], executableDeps = [("testA",[]),("testB",[])]} +LocalBuildInfo {prefix = ",tmp", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,2,2], versionTags = []}, compilerPath = "/usr/bin/ghc", compilerPkgTool = "/usr/bin/ghc-pkg"}, buildDir = "dist/build", packageDeps = [], withHaddock = Just "/usr/bin/haddock", executableDeps = [("testA",[]),("testB",[])]} hunk ./Distribution/Simple.hs 14 +-- +-- This module isn't called "Simple" because it's simple. Far from +-- it. It's called "Simple" because it does complicated things to +-- simple software. hunk ./Distribution/Simple.hs 98 -import Distribution.Compat.FilePath(joinFileName, dropAbsolutePrefix, - joinPaths, splitFileName, joinFileExt, +import Distribution.Compat.FilePath(joinFileName, joinPaths, splitFileName, joinFileExt, hunk ./Distribution/Simple.hs 209 - mapM (mockCpp pkg_descr bi lbi tmpDir verbose) inFiles + if (needsCpp pkg_descr) + then (mapM_ (mockCpp pkg_descr bi lbi tmpDir verbose) inFiles) + else return () hunk ./Distribution/Simple.hs 317 - + needsCpp :: PackageDescription -> Bool + needsCpp p | not (hasLibs p) = False + | otherwise = any (== CPP) (extensions $ libBuildInfo $ fromJust $ library p) hunk ./TODO 40 - - configure should detect haddock. We should have a --with-haddock -too - (similarly for all the other programs we use - I made this change -for - VS a while ago and didn't get around to pushing it, now it'll be - conflict city. oh well). - hunk ./TODO 44 -This - means we have to preprocess seprately for haddock. + This means we have to preprocess seprately for haddock. hunk ./Distribution/Simple.hs 97 -import Distribution.Compat.Directory(createDirectoryIfMissing,removeDirectoryRecursive) +import Distribution.Compat.Directory(createDirectoryIfMissing,removeDirectoryRecursive, copyFile) hunk ./Distribution/Simple.hs 209 - if (needsCpp pkg_descr) - then (mapM_ (mockCpp pkg_descr bi lbi tmpDir verbose) inFiles) - else return () + mapM_ (mockPP pkg_descr bi lbi tmpDir verbose) inFiles hunk ./Distribution/Simple.hs 306 - mockCpp pkg_descr bi lbi pref verbose file + mockPP pkg_descr bi lbi pref verbose file hunk ./Distribution/Simple.hs 312 - ret <- ppCpp pkg_descr bi lbi file targetFile verbose + if (needsCpp pkg_descr) + then ppCpp pkg_descr bi lbi file targetFile verbose + else copyFile file targetFile >> return ExitSuccess hunk ./package.conf.in 8 + Distribution.Compat.ReadP, hunk ./package.conf.in 35 - Distribution.Compat.Directory, - Distribution.Compat.ReadP + Distribution.Compat.Directory hunk ./package.conf.in 50 -haddock-interfaces: -haddock-html: - +haddock-interfaces: HADDOCK_IFACE +haddock-html: HTML_DIR hunk ./Distribution/PackageDescription.hs 462 --- |Parse the given package file. -readPackageDescription :: FilePath -> IO PackageDescription -readPackageDescription fpath = do +-- | Given a parser and a filename, return the parse of the file, +-- after checking if the file exists. +readAndParseFile :: (String -> ParseResult a) -> FilePath -> IO a +readAndParseFile parser fpath = do hunk ./Distribution/PackageDescription.hs 467 - when (not exists) (die $ "Error: description file \"" ++ fpath ++ "\" doesn't exist. Cannot continue.") + when (not exists) (die $ "Error Parsing: file \"" ++ fpath ++ "\" doesn't exist. Cannot continue.") hunk ./Distribution/PackageDescription.hs 469 - case parseDescription str of + case parser str of hunk ./Distribution/PackageDescription.hs 471 --- ParseOk PackageDescription{library=Nothing, executables=[]} -> error "no library listed, and no executable stanza." hunk ./Distribution/PackageDescription.hs 473 +-- |Parse the given package file. +readPackageDescription :: FilePath -> IO PackageDescription +readPackageDescription = readAndParseFile parseDescription + +readBuildInfo :: FilePath -> IO [BuildInfo] +readBuildInfo = readAndParseFile parseBuildInfo + hunk ./Distribution/PackageDescription.hs 509 - parseBInfoField ((StanzaField name _ _ set):fields) binfo (lineNo, f, val) - | name == f = set lineNo val binfo - | otherwise = parseBInfoField fields binfo (lineNo, f, val) - parseBInfoField [] _ (lineNo, f, _) = - myError lineNo $ "Unknown field '" ++ f ++ "'" hunk ./Distribution/PackageDescription.hs 511 - lookupField _ [] = Nothing + hunk ./Distribution/PackageDescription.hs 515 + lookupField _ [] = Nothing hunk ./Distribution/PackageDescription.hs 517 + +parseBuildInfo :: String -> ParseResult [BuildInfo] +parseBuildInfo inp = splitStanzas inp >>= mapM parseBI + where + parseBI :: Stanza -> ParseResult BuildInfo + parseBI st = foldM (parseBInfoField binfoFields) emptyBuildInfo st + +parseBInfoField :: [StanzaField a] -> a -> (LineNo, String, String) -> ParseResult a +parseBInfoField ((StanzaField name _ _ set):fields) binfo (lineNo, f, val) + | name == f = set lineNo val binfo + | otherwise = parseBInfoField fields binfo (lineNo, f, val) +parseBInfoField [] _ (lineNo, f, _) = + myError lineNo $ "Unknown field '" ++ f ++ "'" hunk ./Distribution/GetOpt.hs 4 --- Copyright : (c) Sven Panne Oct. 1996 (small changes Feb. 2003) +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Distribution/GetOpt.hs 10 --- --- Edited by Isaac Jones to allow non-options to pass through. hunk ./Distribution/GetOpt.hs 41 - -- * GetOpt - getOpt, - usageInfo, - ArgOrder(..), - OptDescr(..), - ArgDescr(..), + -- * GetOpt + getOpt, getOpt', + usageInfo, + ArgOrder(..), + OptDescr(..), + ArgDescr(..), + + -- * Example + + -- $example +) where hunk ./Distribution/GetOpt.hs 53 - -- * Example - - -- $example - ) where +import Prelude -- necessary to get dependencies right hunk ./Distribution/GetOpt.hs 55 -import Prelude -import Data.List ( isPrefixOf ) +import Data.List ( isPrefixOf ) hunk ./Distribution/GetOpt.hs 103 - where (ss,ls,ds) = (unzip3 . map fmtOpt) optDescr + where (ss,ls,ds) = (unzip3 . concatMap fmtOpt) optDescr hunk ./Distribution/GetOpt.hs 109 -fmtOpt :: OptDescr a -> (String,String,String) -fmtOpt (Option sos los ad descr) = (sepBy ',' (map (fmtShort ad) sos), - sepBy ',' (map (fmtLong ad) los), - descr) +fmtOpt :: OptDescr a -> [(String,String,String)] +fmtOpt (Option sos los ad descr) = + case lines descr of + [] -> [(sosFmt,losFmt,"")] + (d:ds) -> (sosFmt,losFmt,d) : [ ("","",d') | d' <- ds ] hunk ./Distribution/GetOpt.hs 117 + sosFmt = sepBy ',' (map (fmtShort ad) sos) + losFmt = sepBy ',' (map (fmtLong ad) los) hunk ./Distribution/GetOpt.hs 140 - -'getOpt' returns a triple, consisting of the argument values, a list -of non-option (commands, files, etc), a list of options that didn\'t -match, and a list of error messages.-} hunk ./Distribution/GetOpt.hs 141 +'getOpt' returns a triple consisting of the option arguments, a list +of non-options, and a list of error messages. +-} hunk ./Distribution/GetOpt.hs 146 - -> [String] -- the commandline arguments - -> ([a],[String], [String] ,[String]) -- (options,non-options,unrecognized,error messages) -getOpt _ _ [] = ([],[],[],[]) -getOpt ordering optDescr (arg:args) = procNextOpt opt ordering - where procNextOpt (Opt o) _ = (o:os,xs,ur,es) - procNextOpt (UnreqOpt u) _ = (os,xs,u:ur,es) - procNextOpt (NonOpt x) RequireOrder = ([],x:rest,ur,[]) - procNextOpt (NonOpt x) Permute = (os,x:xs,ur,es) - procNextOpt (NonOpt x) (ReturnInOrder f) = (f x :os, xs,ur,es) - procNextOpt EndOfOpts RequireOrder = ([],rest,ur,[]) - procNextOpt EndOfOpts Permute = ([],rest,ur,[]) - procNextOpt EndOfOpts (ReturnInOrder f) = (map f rest,[],ur,[]) - procNextOpt (OptErr e) _ = (os,xs,ur,e:es) + -> [String] -- the command-line arguments + -> ([a],[String],[String]) -- (options,non-options,error messages) +getOpt ordering optDescr args = (os,xs,es ++ map errUnrec us) + where (os,xs,us,es) = getOpt' ordering optDescr args + +{-| +This is almost the same as 'getOpt', but returns a quadruple +consisting of the option arguments, a list of non-options, a list of +unrecognized options, and a list of error messages. +-} +getOpt' :: ArgOrder a -- non-option handling + -> [OptDescr a] -- option descriptors + -> [String] -- the command-line arguments + -> ([a],[String], [String] ,[String]) -- (options,non-options,unrecognized,error messages) +getOpt' _ _ [] = ([],[],[],[]) +getOpt' ordering optDescr (arg:args) = procNextOpt opt ordering + where procNextOpt (Opt o) _ = (o:os,xs,us,es) + procNextOpt (UnreqOpt u) _ = (os,xs,u:us,es) + procNextOpt (NonOpt x) RequireOrder = ([],x:rest,us,[]) + procNextOpt (NonOpt x) Permute = (os,x:xs,us,es) + procNextOpt (NonOpt x) (ReturnInOrder f) = (f x :os, xs,us,es) + procNextOpt EndOfOpts RequireOrder = ([],rest,us,[]) + procNextOpt EndOfOpts Permute = ([],rest,us,[]) + procNextOpt EndOfOpts (ReturnInOrder f) = (map f rest,[],us,[]) + procNextOpt (OptErr e) _ = (os,xs,us,e:es) hunk ./Distribution/GetOpt.hs 173 - (os,xs,ur,es) = getOpt ordering optDescr rest + (os,xs,us,es) = getOpt' ordering optDescr rest hunk ./Distribution/GetOpt.hs 229 --- errUnrec :: String -> OptKind a --- errUnrec optStr = OptErr ("unrecognized option `" ++ optStr ++ "'\n") +errUnrec :: String -> String +errUnrec optStr = "unrecognized option `" ++ optStr ++ "'\n" hunk ./Distribution/GetOpt.hs 289 -> import GetOpt -- (not System.Console.GetOpt) +> import Distribution.GetOpt hunk ./Distribution/GetOpt.hs 295 -> deriving Show +> deriving Show hunk ./Distribution/GetOpt.hs 308 -> inp = Input . fromMaybe "stdout" +> inp = Input . fromMaybe "stdin" hunk ./Distribution/GetOpt.hs 310 -> compilerOpts :: [String] -> IO ([Flag], [String], [String]) +> compilerOpts :: [String] -> IO ([Flag], [String]) hunk ./Distribution/GetOpt.hs 312 -> case (getOpt Permute options argv) of -> (o,n,no,[] ) -> return (o,n,no) -> (_,_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) +> case getOpt Permute options argv of +> (o,n,[] ) -> return (o,n) +> (_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) hunk ./Distribution/Make.hs 120 - (_, _, args) <- parseBuildArgs 0 args [] + (_, _, args) <- parseBuildArgs args [] hunk ./Distribution/Setup.hs 133 - cmd_help, - cmd_verbose + cmd_help hunk ./Distribution/Setup.hs 182 -getCmdOpt cmd opts s = let (a,_,c,d) = getOpt Permute (cmdOptions cmd ++ liftCustomOpts opts) s +getCmdOpt cmd opts s = let (a,_,c,d) = getOpt' Permute (cmdOptions cmd ++ liftCustomOpts opts) s hunk ./Distribution/Setup.hs 191 - case getOpt RequireOrder globalOptions args of + case getOpt' RequireOrder globalOptions args of hunk ./Distribution/Setup.hs 261 -parseBuildArgs :: Int -> [String] -> [OptDescr a] -> IO (Int, [a], [String]) -parseBuildArgs verbose args customOpts = - case getCmdOpt buildCmd customOpts args of - (flags, _, []) | hasHelpFlag flags -> do - printCmdHelp buildCmd customOpts - exitWith ExitSuccess - (flags, args', []) -> - return (updateBld flags verbose, unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) - where - updateBld (fl:flags) verbose = updateBld flags $ - case fl of - Verbose n -> n - _ -> error $ "Unexpected flag!" - updateBld [] t = t +parseBuildArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) +parseBuildArgs = parseNoArgs buildCmd hunk ./Distribution/Simple/Build.hs 135 + ++ (if verbose > 4 then ["-v"] else []) hunk ./Distribution/Simple/Build.hs 146 + ++ (if verbose > 4 then ["-v"] else []) hunk ./Distribution/Simple/Build.hs 158 - rawSystemPathExit verbose "ar" (["q", lib] ++ [pref `joinFileName` x | x <- hObjs ++ cObjs]) + let args = ["q"++ (if verbose > 4 then "v" else "")] + ++ [lib] + ++ [pref `joinFileName` x | x <- hObjs ++ cObjs] + rawSystemPathExit verbose "ar" args hunk ./Distribution/Simple/Build.hs 179 + ++ (if verbose > 4 then ["-v"] else []) hunk ./Distribution/Simple.hs 189 - (verbose, _, args) <- parseBuildArgs 0 args [] + (verbose, _, args) <- parseBuildArgs args [] hunk ./Distribution/Compat/FilePath.hs 33 -#if !__GLASGOW_HASKELL__ || __GLASGOW_HASKELL__ >= 603 - -import System.FilePath - -#else /* to end of file... */ - +#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Compat/FilePath.hs 36 +#else +#include "ghcconfig.h" +#endif +#endif hunk ./Distribution/Compat/FilePath.hs 53 --- > splitFileName "/" == ("/", "") +-- > splitFileName "/" == ("/", ".") hunk ./Distribution/Compat/FilePath.hs 67 --- The first case in the above examples returns an empty file name. --- This is a special case because the \"\/\" (\"\\\\\" on Windows) --- path doesn\'t refer to an object (file or directory) which resides --- within a directory. +-- The first case in the Windows examples returns an empty file name. +-- This is a special case because the \"\\\\\" path doesn\'t refer to +-- an object (file or directory) which resides within a directory. hunk ./Distribution/Compat/FilePath.hs 71 +#ifdef mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 74 -#ifdef mingw32_TARGET_OS - (path,drive) = break (== ':') (reverse p) -#else - (path,drive) = (reverse p,"") -#endif + (path,drive) = case p of + (c:':':p) -> (reverse p,[':',c]) + _ -> (reverse p,"") hunk ./Distribution/Compat/FilePath.hs 84 +#else +splitFileName p = (reverse path1, reverse fname1) + where + (fname,path) = break isPathSeparator (reverse p) + path1 = case path of + "" -> "." + _ -> case dropWhile isPathSeparator path of + "" -> [pathSeparator] + p -> p + fname1 = case fname of + "" -> "." + _ -> fname +#endif hunk ./Distribution/Compat/FilePath.hs 107 +-- > splitFileExt "foo.bar."== ("foo.bar.", "") hunk ./Distribution/Compat/FilePath.hs 110 - case pre of - [] -> (p, []) - (_:pre) -> (reverse (pre++path), reverse suf) + case break (== '.') fname of + (suf@(_:_),_:pre) -> (reverse (pre++path), reverse suf) + _ -> (p, []) hunk ./Distribution/Compat/FilePath.hs 115 - (suf,pre) | fname == "." || fname == ".." = (fname,"") - | otherwise = break (== '.') fname hunk ./Distribution/Compat/FilePath.hs 124 -splitFilePath p = - case pre of - [] -> (reverse real_dir, reverse suf, []) - (_:pre) -> (reverse real_dir, reverse pre, reverse suf) +splitFilePath path = case break (== '.') (reverse basename) of + (name_r, "") -> (dir, reverse name_r, "") + (ext_r, _:name_r) -> (dir, reverse name_r, reverse ext_r) hunk ./Distribution/Compat/FilePath.hs 128 -#ifdef mingw32_TARGET_OS - (path,drive) = break (== ':') (reverse p) -#else - (path,drive) = (reverse p,"") -#endif - (file,dir) = break isPathSeparator path - (suf,pre) = case file of - ".." -> ("..", "") - _ -> break (== '.') file - - real_dir = case dir of - [] -> '.':drive - [_] -> pathSeparator:drive - (_:dir) -> dir++drive + (dir, basename) = splitFileName path hunk ./Distribution/Compat/FilePath.hs 131 --- It joins directory and file names to form complete file path. +-- It joins directory and file names to form a complete file path. hunk ./Distribution/Compat/FilePath.hs 139 --- There might be an exeptions to the rule but in any case the +-- There might be an exceptions to the rule but in any case the hunk ./Distribution/Compat/FilePath.hs 152 --- It joins file name and extension to form complete file path. +-- It joins a file name and an extension to form a complete file path. hunk ./Distribution/Compat/FilePath.hs 202 --- | Returns True if this path\'s meaning is independent of any OS --- "working directory", False if it isn\'t. +-- | Returns 'True' if this path\'s meaning is independent of any OS +-- \"working directory\", or 'False' if it isn\'t. hunk ./Distribution/Compat/FilePath.hs 214 --- Unix the prefix is always \"/\". +-- Unix the prefix is always \"\/\". hunk ./Distribution/Compat/FilePath.hs 226 --- in the path exists or if you want to search upward for some file. +-- in the path exist or if you want to search upward for some file. hunk ./Distribution/Compat/FilePath.hs 238 --- In the above examples \"\/\" isn\'t included in the list --- because you can\'t create root directory. --- hunk ./Distribution/Compat/FilePath.hs 247 --- Note that if the file is relative then the the current directory (\".\") +-- Note that if the file is relative then the current directory (\".\") hunk ./Distribution/Compat/FilePath.hs 351 --- | Checks whether the character is a valid path separator for the host platform. --- The valid character is a 'pathSeparator' but since the Windows operating system --- also accepts a backslash (\"\\\") the function also checks for \"\/\" on this platform. +-- | Checks whether the character is a valid path separator for the host +-- platform. The valid character is a 'pathSeparator' but since the Windows +-- operating system also accepts a slash (\"\/\") since DOS 2, the function +-- checks for it on this platform, too. hunk ./Distribution/Compat/FilePath.hs 363 --- | Provides a platform-specific character used to separate directory levels in a --- path string that reflects a hierarchical file system organization. --- The separator is a slash (\"\/\") on Unix and Macintosh, and a backslash (\"\\\") on the --- Windows operating system. +-- | Provides a platform-specific character used to separate directory levels in +-- a path string that reflects a hierarchical file system organization. The +-- separator is a slash (@\"\/\"@) on Unix and Macintosh, and a backslash +-- (@\"\\\"@) on the Windows operating system. hunk ./Distribution/Compat/FilePath.hs 395 --- | Extension for object files --- (typically @\"o\"@ on Unix and @\"obj\"@ on Windows) +-- | Extension for object files. For GHC and NHC the extension is @\"o\"@. +-- Hugs uses either @\"o\"@ or @\"obj\"@ depending on the used C compiler. hunk ./Distribution/Compat/FilePath.hs 398 -#ifdef mingw32_TARGET_OS -objExtension = "obj" -#else hunk ./Distribution/Compat/FilePath.hs 399 -#endif hunk ./Distribution/Compat/FilePath.hs 408 - -#endif /* __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ <= 603 */ hunk ./Distribution/Compat/Directory.hs 5 -#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 +#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Compat/Directory.hs 8 +#else +#include "ghcconfig.h" +#endif hunk ./Distribution/ParseUtils.hs 128 - text name <> colon <+> sep (punctuate comma (map showF lst))) + text name <> colon <+> fsep (punctuate comma (map showF lst))) hunk ./Distribution/Simple/Configure.hs 57 -#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 +#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Simple/Configure.hs 60 +#else +#include "ghcconfig.h" +#endif hunk ./Distribution/Simple/Install.hs 55 -#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 +#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Simple/Install.hs 58 +#else +#include "ghcconfig.h" +#endif hunk ./Distribution/Simple/Utils.hs 68 -#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 603 +#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ < 603 hunk ./Distribution/Simple/Utils.hs 71 +#else +#include "ghcconfig.h" +#endif hunk ./Distribution/Make.hs 85 -configureArgs (flavour, mb_hc_path, mb_hc_pkg_path, mb_prefix, mb_haddock) +configureArgs flags hunk ./Distribution/Make.hs 88 - hc_flag = case (flavour, mb_hc_path) of + hc_flag = case (configHcFlavor flags, configHcPath flags) of hunk ./Distribution/Make.hs 92 - hc_pkg_flag = case mb_hc_pkg_path of + hc_pkg_flag = case configHcPkg flags of hunk ./Distribution/Make.hs 95 - prefix_flag = case mb_prefix of + prefix_flag = case configPrefix flags of hunk ./Distribution/PreProcess.hs 54 -import Distribution.Simple.Utils (rawSystemPath, moduleToFilePath, die) +import Distribution.Simple.Utils (rawSystemPath, rawSystemVerbose, + moduleToFilePath, die) hunk ./Distribution/PreProcess.hs 60 +import System.IO (stderr, hPutStrLn) hunk ./Distribution/PreProcess.hs 86 - setupMessage "Preprocessing library" pkg_descr - hunk ./Distribution/PreProcess.hs 87 + setupMessage "Preprocessing library" pkg_descr hunk ./Distribution/PreProcess.hs 92 - setupMessage "Preprocessing executables for" pkg_descr + when (not (null (executables pkg_descr))) $ + setupMessage "Preprocessing executables for" pkg_descr hunk ./Distribution/PreProcess.hs 202 - = standardPP "hsc2hs" (hcFlags hc ++ incOptions ++ ccOptions pkg_descr) - where hc = compilerFlavor (compiler lbi) + = maybe (ppNone "hsc2hs") pp (withHsc2hs lbi) + where pp n = standardPP n (hcFlags hc ++ incOptions ++ ccOptions pkg_descr) + hc = compilerFlavor (compiler lbi) hunk ./Distribution/PreProcess.hs 215 - = standardPP "happy" (hcFlags hc) - where hc = compilerFlavor (compiler lbi) + = maybe (ppNone "happy") pp (withHappy lbi) + where pp n = standardPP n (hcFlags hc) + hc = compilerFlavor (compiler lbi) hunk ./Distribution/PreProcess.hs 223 - = standardPP "alex" (hcFlags hc) - where hc = compilerFlavor (compiler lbi) + = maybe (ppNone "alex") pp (withAlex lbi) + where pp n = standardPP n (hcFlags hc) + hc = compilerFlavor (compiler lbi) hunk ./Distribution/PreProcess.hs 242 - = rawSystemPath verbose eName (args ++ ["-o" ++ outFile, inFile]) + = rawSystemVerbose verbose eName (args ++ ["-o" ++ outFile, inFile]) + +ppNone :: String -> PreProcessor +ppNone name inFile _ _ = do + hPutStrLn stderr (inFile ++ ": no " ++ name ++ " preprocessor available") + return (ExitFailure 1) hunk ./Distribution/Setup.hs 44 - Action(..), ConfigFlags, + Action(..), ConfigFlags(..), hunk ./Distribution/Setup.hs 102 -type ConfigFlags = (Maybe CompilerFlavor, - Maybe FilePath, -- given compiler location - Maybe FilePath, -- given hc-pkg location - Maybe FilePath, -- prefix - Maybe FilePath -- Haddock path - ) +data ConfigFlags = ConfigFlags { + configHcFlavor :: Maybe CompilerFlavor, + configHcPath :: Maybe FilePath, -- ^given compiler location + configHcPkg :: Maybe FilePath, -- ^given hc-pkg location + configHaddock :: Maybe FilePath, -- ^Haddock path + configHappy :: Maybe FilePath, -- ^Happy path + configAlex :: Maybe FilePath, -- ^Alex path + configHsc2hs :: Maybe FilePath, -- ^Hsc2hs path + configCpphs :: Maybe FilePath, -- ^Cpphs path + configPrefix :: Maybe FilePath -- ^installation prefix + } + deriving (Show, Eq) + +emptyConfigFlags :: ConfigFlags +emptyConfigFlags = ConfigFlags { + configHcFlavor = Nothing, + configHcPath = Nothing, + configHcPkg = Nothing, + configHaddock = Nothing, + configHappy = Nothing, + configAlex = Nothing, + configHsc2hs = Nothing, + configCpphs = Nothing, + configPrefix = Nothing + } hunk ./Distribution/Setup.hs 130 - | WithCompiler FilePath | WithHaddock FilePath - | WithHcPkg FilePath | Prefix FilePath + | WithCompiler FilePath | WithHcPkg FilePath | Prefix FilePath + | WithHaddock FilePath | WithHappy FilePath | WithAlex FilePath + | WithHsc2hs FilePath | WithCpphs FilePath hunk ./Distribution/Setup.hs 242 - "give the path to haddock" + "give the path to haddock", + Option "" ["with-happy"] (ReqArg WithHappy "PATH") + "give the path to happy", + Option "" ["with-alex"] (ReqArg WithAlex "PATH") + "give the path to alex", + Option "" ["with-hsc2hs"] (ReqArg WithHsc2hs "PATH") + "give the path to hsc2hs", + Option "" ["with-cpphs"] (ReqArg WithCpphs "PATH") + "give the path to cpphs" hunk ./Distribution/Setup.hs 252 - cmdAction = ConfigCmd (Nothing, Nothing, Nothing, Nothing, Nothing) + cmdAction = ConfigCmd emptyConfigFlags hunk ./Distribution/Setup.hs 267 - where updateCfg (fl:flags) t@(mcf, mpath, mhcpkg, mprefix, mHaddockPath) = updateCfg flags $ + where updateCfg (fl:flags) t = updateCfg flags $ hunk ./Distribution/Setup.hs 269 - GhcFlag -> (Just GHC, mpath, mhcpkg, mprefix, mHaddockPath) - NhcFlag -> (Just NHC, mpath, mhcpkg, mprefix, mHaddockPath) - HugsFlag -> (Just Hugs, mpath, mhcpkg, mprefix, mHaddockPath) - WithCompiler path -> (mcf, Just path, mhcpkg, mprefix, mHaddockPath) - WithHaddock path -> (mcf, mpath, mhcpkg, mprefix, Just path) - WithHcPkg path -> (mcf, mpath, Just path, mprefix, mHaddockPath) - Prefix path -> (mcf, mpath, mhcpkg, Just path, mHaddockPath) + GhcFlag -> t { configHcFlavor = Just GHC } + NhcFlag -> t { configHcFlavor = Just NHC } + HugsFlag -> t { configHcFlavor = Just Hugs } + WithCompiler path -> t { configHcPath = Just path } + WithHcPkg path -> t { configHcPkg = Just path } + WithHaddock path -> t { configHaddock = Just path } + WithHappy path -> t { configHappy = Just path } + WithAlex path -> t { configAlex = Just path } + WithHsc2hs path -> t { configHsc2hs = Just path } + WithCpphs path -> t { configCpphs = Just path } + Prefix path -> t { configPrefix = Just path } hunk ./Distribution/Simple/Build.hs 75 +import System.Info hunk ./Distribution/Simple/Build.hs 245 - (exts, opts) <- getOptionsFromSource srcFile + (exts, opts, _) <- getOptionsFromSource srcFile hunk ./Distribution/Simple/Build.hs 255 - (["-traditional", "-P", "-D__HUGS__"] ++ + (["-traditional", "-P"] ++ defines ++ hunk ./Distribution/Simple/Build.hs 259 + defines = "-D__HUGS__" : + ["-D" ++ os ++ "_" ++ loc ++ "_OS" | loc <- locations] ++ + ["-D" ++ arch ++ "_" ++ loc ++ "_ARCH" | loc <- locations] + locations = ["HOST", "TARGET"] + hunk ./Distribution/Simple/Build.hs 269 - (_, opts) <- getOptionsFromSource file + (_, opts, file_incs) <- getOptionsFromSource file hunk ./Distribution/Simple/Build.hs 273 - let incs = uniq (sort (includeOpts ghcOpts ++ pkg_incs)) + let incs = uniq (sort (file_incs ++ includeOpts ghcOpts ++ pkg_incs)) hunk ./Distribution/Simple/Configure.hs 50 - findHaddock, + findProgram, hunk ./Distribution/Simple/Configure.hs 69 -import Distribution.Setup(ConfigFlags,CompilerFlavor(..), Compiler(..)) +import Distribution.Setup(ConfigFlags(..),CompilerFlavor(..), Compiler(..)) hunk ./Distribution/Simple/Configure.hs 129 -configure pkg_descr (maybe_hc_flavor, maybe_hc_path, maybe_hc_pkg, maybe_prefix, maybe_haddock) +configure pkg_descr cfg hunk ./Distribution/Simple/Configure.hs 135 - let pref = case maybe_prefix of - Just path -> path - Nothing -> system_default_prefix pkg_descr + let pref = fromMaybe (system_default_prefix pkg_descr) (configPrefix cfg) hunk ./Distribution/Simple/Configure.hs 137 - comp@(Compiler f' ver p' pkg) <- configCompiler maybe_hc_flavor maybe_hc_path maybe_hc_pkg pkg_descr + comp@(Compiler f' ver p' pkg) <- configCompiler (configHcFlavor cfg) (configHcPath cfg) (configHcPkg cfg) pkg_descr hunk ./Distribution/Simple/Configure.hs 149 - had <- findHaddock maybe_haddock + haddock <- findProgram "haddock" (configHaddock cfg) + happy <- findProgram "happy" (configHappy cfg) + alex <- findProgram "alex" (configAlex cfg) + hsc2hs <- findProgram "hsc2hs" (configHsc2hs cfg) + cpphs <- findProgram "cpphs" (configCpphs cfg) hunk ./Distribution/Simple/Configure.hs 160 - message $ maybe "No haddock found" ((++) "Using haddock: ") had + reportProgram "haddock" haddock + reportProgram "happy" happy + reportProgram "alex" alex + reportProgram "hsc2hs" hsc2hs + reportProgram "cpphs" cpphs hunk ./Distribution/Simple/Configure.hs 168 - withHaddock=had, + withHaddock=haddock, + withHappy=happy, withAlex=alex, + withHsc2hs=hsc2hs, withCpphs=cpphs, hunk ./Distribution/Simple/Configure.hs 175 --- |If configure has been given the with-haddock argument, return --- that, otherwise look in the path for it. -findHaddock :: Maybe FilePath -> IO (Maybe FilePath) -findHaddock p@(Just _) = return p -findHaddock Nothing = findExecutable "haddock" +-- |Return the explicit path if given, otherwise look for the program +-- name in the path. +findProgram + :: String -- ^ program name + -> Maybe FilePath -- ^ optional explicit path + -> IO (Maybe FilePath) +findProgram name Nothing = findExecutable name +findProgram _ p = return p + +reportProgram :: String -> Maybe FilePath -> IO () +reportProgram name Nothing = message ("No " ++ name ++ " found") +reportProgram name (Just p) = message ("Using " ++ name ++ ": " ++ p) hunk ./Distribution/Simple/LocalBuildInfo.hs 65 + withHappy :: Maybe FilePath, -- ^Might be the location of the Happy executable. + withAlex :: Maybe FilePath, -- ^Might be the location of the Alex executable. + withHsc2hs :: Maybe FilePath, -- ^Might be the location of the Hsc2hs executable. + withCpphs :: Maybe FilePath, -- ^Might be the location of the Cpphs executable. hunk ./Distribution/Simple/Utils.hs 264 --- and return the contents of any OPTIONS or LANGUAGE pragmas. +-- and return the contents of any LANGUAGE, OPTIONS and INCLUDE pragmas. hunk ./Distribution/Simple/Utils.hs 268 - [(CompilerFlavor,[String])] -- OPTIONS_FOO pragmas + [(CompilerFlavor,[String])], -- OPTIONS_FOO pragmas + [String] -- INCLUDE pragmas hunk ./Distribution/Simple/Utils.hs 273 - return $ foldr appendOptions ([],[]) $ map getOptions $ + return $ foldr appendOptions ([],[],[]) $ map getOptions $ hunk ./Distribution/Simple/Utils.hs 287 - getOptions ("OPTIONS":opts) = ([], [(GHC, opts)]) - getOptions ("OPTIONS_GHC":opts) = ([], [(GHC, opts)]) - getOptions ("OPTIONS_NHC98":opts) = ([], [(NHC, opts)]) - getOptions ("OPTIONS_HUGS":opts) = ([], [(Hugs, opts)]) - getOptions ("LANGUAGE":ws) = (mapMaybe readExtension ws, []) + getOptions ("OPTIONS":opts) = ([], [(GHC, opts)], []) + getOptions ("OPTIONS_GHC":opts) = ([], [(GHC, opts)], []) + getOptions ("OPTIONS_NHC98":opts) = ([], [(NHC, opts)], []) + getOptions ("OPTIONS_HUGS":opts) = ([], [(Hugs, opts)], []) + getOptions ("LANGUAGE":ws) = (mapMaybe readExtension ws, [], []) hunk ./Distribution/Simple/Utils.hs 297 - getOptions _ = ([], []) + getOptions ("INCLUDE":ws) = ([], [], ws) + getOptions _ = ([], [], []) hunk ./Distribution/Simple/Utils.hs 300 - appendOptions (exts, opts) (exts', opts') = (exts++exts', opts++opts') + appendOptions (exts, opts, incs) (exts', opts', incs') + = (exts++exts', opts++opts', incs++incs') hunk ./Distribution/Simple.hs 73 -import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, findHaddock, +import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, findProgram, hunk ./Distribution/Simple.hs 200 - mHaddock <- findHaddock (withHaddock lbi) + mHaddock <- findProgram "haddock" (withHaddock lbi) hunk ./Distribution/Simple.hs 386 - defaultPreConf args (_, _, _, mb_prefix, _) - = do let prefix_opt pref opts = ("--prefix=" ++ pref) : opts + defaultPreConf args flags + = do let prefix_opt pref opts = + ("--prefix=" ++ pref) : opts hunk ./Distribution/Simple.hs 392 - ("configure" : maybe id prefix_opt mb_prefix args) + ("configure" : maybe id prefix_opt (configPrefix flags) args) hunk ./Distribution/Make.hs 130 - (mprefix, _, args) <- parseCopyArgs mprefix args [] + ((mprefix,verbose), _, args) <- parseCopyArgs (mprefix,0) args [] hunk ./Distribution/Make.hs 136 - (uInst, _, args) <- parseInstallArgs uInst args [] + ((uInst,verbose), _, args) <- parseInstallArgs (uInst,0) args [] hunk ./Distribution/Make.hs 147 - (uInst, _, args) <- parseRegisterArgs uInst args [] + ((uInst,0), _, args) <- parseRegisterArgs (uInst,0) args [] hunk ./Distribution/Setup.hs 153 - cmd_help + cmd_help, cmd_verbose hunk ./Distribution/Setup.hs 325 - cmdOptions = [cmd_help, + cmdOptions = [cmd_help, cmd_verbose, hunk ./Distribution/Setup.hs 341 - cmdOptions = [cmd_help, + cmdOptions = [cmd_help, cmd_verbose, hunk ./Distribution/Setup.hs 348 -parseCopyArgs :: (Maybe FilePath) -> [String] -> [OptDescr a] -> - IO ((Maybe FilePath), [a], [String]) +parseCopyArgs :: (Maybe FilePath,Int) -> [String] -> [OptDescr a] -> + IO ((Maybe FilePath,Int), [a], [String]) hunk ./Distribution/Setup.hs 360 - where updateCfg (fl:flags) mprefix = updateCfg flags $ + where updateCfg (fl:flags) (mprefix,verbose) = updateCfg flags $ hunk ./Distribution/Setup.hs 362 - InstPrefix path -> Just path - Lift _ -> mprefix + InstPrefix path -> (Just path,verbose) + Verbose n -> (mprefix,n) + Lift _ -> (mprefix,verbose) hunk ./Distribution/Setup.hs 368 -parseInstallArgs :: Bool -> [String] -> [OptDescr a] -> - IO (Bool, [a], [String]) +parseInstallArgs :: (Bool,Int) -> [String] -> [OptDescr a] -> + IO ((Bool,Int), [a], [String]) hunk ./Distribution/Setup.hs 381 - where updateCfg :: [Flag a] -> Bool -> Bool - updateCfg (fl:flags) uFlag = updateCfg flags $ + where updateCfg :: [Flag a] -> (Bool,Int) -> (Bool,Int) + updateCfg (fl:flags) (uFlag,verbose) = updateCfg flags $ hunk ./Distribution/Setup.hs 385 - UserFlag -> True - GlobalFlag -> False - Lift _ -> uFlag + UserFlag -> (True,verbose) + GlobalFlag -> (False,verbose) + Verbose n -> (uFlag,n) + Lift _ -> (uFlag,verbose) hunk ./Distribution/Setup.hs 399 - cmdOptions = [cmd_help], + cmdOptions = [cmd_help,cmd_verbose], hunk ./Distribution/Setup.hs 411 - cmdOptions = [cmd_help, + cmdOptions = [cmd_help, cmd_verbose, hunk ./Distribution/Setup.hs 420 -parseRegisterArgs :: Bool -> [String] -> [OptDescr a] -> - IO (Bool, [a], [String]) +parseRegisterArgs :: (Bool,Int) -> [String] -> [OptDescr a] -> + IO ((Bool,Int), [a], [String]) hunk ./Distribution/Setup.hs 432 - where updateCfg (fl:flags) uFlag = updateCfg flags $ + where updateCfg (fl:flags) (uFlag,verbose) = updateCfg flags $ hunk ./Distribution/Setup.hs 434 - UserFlag -> True - GlobalFlag -> False - Lift _ -> uFlag + UserFlag -> (True,verbose) + GlobalFlag -> (False,verbose) + Verbose n -> (uFlag,n) + Lift _ -> (uFlag,verbose) hunk ./Distribution/Setup.hs 446 - cmdOptions = [cmd_help], + cmdOptions = [cmd_help, cmd_verbose], hunk ./Distribution/Simple/Install.hs 69 -import Distribution.Simple.Utils(moveSources, mkLibName, die) +import Distribution.Simple.Utils(moveSources, copyFileVerbose, mkLibName, die) hunk ./Distribution/Simple/Install.hs 74 -import Distribution.Compat.Directory(copyFile,createDirectoryIfMissing,removeDirectoryRecursive) +import Distribution.Compat.Directory(createDirectoryIfMissing,removeDirectoryRecursive) hunk ./Distribution/Simple/Install.hs 87 - -> Maybe FilePath -- ^install-prefix + -> (Maybe FilePath,Int) -- ^install-prefix, verbose hunk ./Distribution/Simple/Install.hs 89 -install pkg_descr lbi install_prefixM = do +install pkg_descr lbi (install_prefixM,verbose) = do hunk ./Distribution/Simple/Install.hs 96 - GHC -> do when (hasLibs pkg_descr) (installLibGHC libPref buildPref pkg_descr) - installExeGhc binPref buildPref pkg_descr - Hugs -> installHugs libPref binPref targetLibPref buildPref pkg_descr + GHC -> do when (hasLibs pkg_descr) (installLibGHC verbose libPref buildPref pkg_descr) + installExeGhc verbose binPref buildPref pkg_descr + Hugs -> installHugs verbose libPref binPref targetLibPref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 104 -installExeGhc :: FilePath -- ^install location +installExeGhc :: Int -- ^verbose + -> FilePath -- ^install location hunk ./Distribution/Simple/Install.hs 108 -installExeGhc pref buildPref pkg_descr +installExeGhc verbose pref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 110 - sequence_ [copyFile (buildPref `joinFileName` (hsSourceDir b) `joinFileName` e) (pref `joinFileName` e) + sequence_ [copyFileVerbose verbose (buildPref `joinFileName` (hsSourceDir b) `joinFileName` e) (pref `joinFileName` e) hunk ./Distribution/Simple/Install.hs 114 -installLibGHC :: FilePath -- ^install location +installLibGHC :: Int -- ^verbose + -> FilePath -- ^install location hunk ./Distribution/Simple/Install.hs 118 -installLibGHC pref buildPref pd@PackageDescription{library=Just l, +installLibGHC verbose pref buildPref pd@PackageDescription{library=Just l, hunk ./Distribution/Simple/Install.hs 120 - = do moveSources (buildPref `joinFileName` (hsSourceDir $ libBuildInfo l)) pref (libModules pd) ["hi"] - copyFile (mkLibName buildPref (showPackageId p)) - (mkLibName pref (showPackageId p)) -installLibGHC _ _ PackageDescription{library=Nothing} + = do moveSources verbose (buildPref `joinFileName` (hsSourceDir $ libBuildInfo l)) pref (libModules pd) ["hi"] + copyFileVerbose verbose (mkLibName buildPref (showPackageId p)) (mkLibName pref (showPackageId p)) +installLibGHC _ _ _ PackageDescription{library=Nothing} hunk ./Distribution/Simple/Install.hs 127 - :: FilePath -- ^Library install location + :: Int -- ^verbose + -> FilePath -- ^Library install location hunk ./Distribution/Simple/Install.hs 134 -installHugs libPref binPref targetLibPref buildPref pkg_descr = do +installHugs verbose libPref binPref targetLibPref buildPref pkg_descr = do hunk ./Distribution/Simple/Install.hs 142 - moveSources buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes + moveSources verbose buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes hunk ./Distribution/Simple/Install.hs 150 - moveSources progBuildDir progInstallDir + moveSources verbose progBuildDir progInstallDir hunk ./Distribution/Simple/Install.hs 155 - copyFile (progBuildDir `joinFileName` fname) installName + copyFileVerbose verbose (progBuildDir `joinFileName` fname) installName hunk ./Distribution/Simple/Register.hs 67 -import Distribution.Simple.Utils (rawSystemExit, die) +import Distribution.Simple.Utils (rawSystemExit, copyFileVerbose, die) hunk ./Distribution/Simple/Register.hs 72 -import Distribution.Compat.Directory (copyFile,createDirectoryIfMissing,removeDirectoryRecursive) +import Distribution.Compat.Directory (createDirectoryIfMissing,removeDirectoryRecursive) hunk ./Distribution/Simple/Register.hs 93 - -> Bool -- ^Install in the user's database? + -> (Bool,Int) -- ^Install in the user's database?; verbose hunk ./Distribution/Simple/Register.hs 95 -register pkg_descr lbi userInst +register pkg_descr lbi (userInst,verbose) hunk ./Distribution/Simple/Register.hs 118 - unless instConfExists (writeInstalledConfig pkg_descr lbi) + unless instConfExists $ do + when (verbose > 0) $ + putStrLn ("create "++installedPkgConfigFile) + writeInstalledConfig pkg_descr lbi hunk ./Distribution/Simple/Register.hs 128 - rawSystemExit 0 (compilerPkgTool (compiler lbi)) - (["--auto-ghci-libs"] - ++ register_flags - ++ config_flags) + rawSystemExit verbose (compilerPkgTool (compiler lbi)) + (["--auto-ghci-libs"] + ++ register_flags + ++ config_flags) hunk ./Distribution/Simple/Register.hs 135 - copyFile installedPkgConfigFile + copyFileVerbose verbose installedPkgConfigFile hunk ./Distribution/Simple/Register.hs 203 -unregister :: PackageDescription -> LocalBuildInfo -> IO () -unregister pkg_descr lbi = do +unregister :: PackageDescription -> LocalBuildInfo -> Int -> IO () +unregister pkg_descr lbi verbose = do hunk ./Distribution/Simple/Register.hs 209 - rawSystemExit 0 (compilerPkgTool (compiler lbi)) + rawSystemExit verbose (compilerPkgTool (compiler lbi)) hunk ./Distribution/Simple/SrcDist.hs 72 + -> Int -- ^verbose hunk ./Distribution/Simple/SrcDist.hs 76 -sdist tmpDir targetPref pps pkg_descr = do +sdist tmpDir targetPref verbose pps pkg_descr = do hunk ./Distribution/Simple/SrcDist.hs 82 - maybe (return ()) (\l -> prepareDir targetDir pps (libModules pkg_descr) (libBuildInfo l)) + maybe (return ()) (\l -> prepareDir verbose targetDir pps (libModules pkg_descr) (libBuildInfo l)) hunk ./Distribution/Simple/SrcDist.hs 85 - sequence_ [prepareDir targetDir pps exeM exeBi | (Executable _ exeM _ exeBi) <- executables pkg_descr] + sequence_ [prepareDir verbose targetDir pps exeM exeBi | (Executable _ exeM _ exeBi) <- executables pkg_descr] hunk ./Distribution/Simple/SrcDist.hs 87 - moveSources "" targetDir ["Setup"] ["lhs", "hs"] + moveSources verbose "" targetDir ["Setup"] ["lhs", "hs"] hunk ./Distribution/Simple/SrcDist.hs 95 -prepareDir :: FilePath -- ^TargetPrefix +prepareDir :: Int -- ^verbose + -> FilePath -- ^TargetPrefix hunk ./Distribution/Simple/SrcDist.hs 101 -prepareDir inPref pps mods bi@BuildInfo{hsSourceDir=srcDir} +prepareDir verbose inPref pps mods bi@BuildInfo{hsSourceDir=srcDir} hunk ./Distribution/Simple/SrcDist.hs 104 - moveSources srcDir pref mods (suff ++ ["hs", "lhs"]) + moveSources verbose srcDir pref mods (suff ++ ["hs", "lhs"]) hunk ./Distribution/Simple/Utils.hs 52 + copyFileVerbose, hunk ./Distribution/Simple/Utils.hs 193 -moveSources :: FilePath -- ^build prefix (location of objects) +moveSources :: Int -- ^verbose + -> FilePath -- ^build prefix (location of objects) hunk ./Distribution/Simple/Utils.hs 199 -moveSources pref targetDir sources searchSuffixes +moveSources verbose pref targetDir sources searchSuffixes hunk ./Distribution/Simple/Utils.hs 211 - sequence_ [copyFile x (targetDir `joinFileName` y) + sequence_ [copyFileVerbose verbose x (targetDir `joinFileName` y) hunk ./Distribution/Simple/Utils.hs 221 + +copyFileVerbose :: Int -> FilePath -> FilePath -> IO () +copyFileVerbose verbose src dest = do + when (verbose > 0) $ + putStrLn ("copy " ++ src ++ " to " ++ dest) + copyFile src dest hunk ./Distribution/Simple.hs 115 - preBuild :: Args -> IO (Maybe PackageDescription), + preBuild :: Args -> Int -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 118 - preClean :: Args -> IO (Maybe PackageDescription), + preClean :: Args -> Int -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 122 - -> (Maybe FilePath) -- Copy Location + -> (Maybe FilePath,Int) -- Copy Location,verbose hunk ./Distribution/Simple.hs 126 - preInst :: Args -> Bool -> IO (Maybe PackageDescription), + preInst :: Args -> (Bool,Int) -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 129 - preSDist :: Args -> IO (Maybe PackageDescription), + preSDist :: Args -> Int -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 133 - -> Bool -- Install in the user's database? + -> (Bool,Int) -- Install in the user's database?; verbose hunk ./Distribution/Simple.hs 137 - preUnreg :: Args -> IO (Maybe PackageDescription), + preUnreg :: Args -> Int -> IO (Maybe PackageDescription), hunk ./Distribution/Simple.hs 189 - (verbose, _, args) <- parseBuildArgs args [] - pkg_descr <- hookOrInput preBuild args + (flags, _, args) <- parseBuildArgs args [] + pkg_descr <- hookOrInArgs preBuild args flags hunk ./Distribution/Simple.hs 192 - build pkg_descr localbuildinfo verbose knownSuffixHandlers + build pkg_descr localbuildinfo flags knownSuffixHandlers hunk ./Distribution/Simple.hs 197 - pkg_descr <- hookOrInput preBuild args + pkg_descr <- hookOrInArgs preBuild args verbose hunk ./Distribution/Simple.hs 230 - pkg_descr <- hookOrInput preClean args + pkg_descr <- hookOrInArgs preClean args verbose hunk ./Distribution/Simple.hs 240 - (mprefix, _, args) <- parseCopyArgs mprefix args [] - pkg_descr <- hookOrInArgs preCopy args mprefix + (flags, _, args) <- parseCopyArgs (mprefix,0) args [] + pkg_descr <- hookOrInArgs preCopy args flags hunk ./Distribution/Simple.hs 243 - install pkg_descr localbuildinfo mprefix + install pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 247 - (uInst, _, args) <- parseInstallArgs uInst args [] - pkg_descr <- hookOrInArgs preInst args uInst + (flags@(uInst, verbose), _, args) <- parseInstallArgs (uInst,0) args [] + pkg_descr <- hookOrInArgs preInst args flags hunk ./Distribution/Simple.hs 253 - install pkg_descr localbuildinfo Nothing + install pkg_descr localbuildinfo (Nothing, verbose) hunk ./Distribution/Simple.hs 255 - (register pkg_descr localbuildinfo uInst) + (register pkg_descr localbuildinfo flags) hunk ./Distribution/Simple.hs 262 - pkg_descr <- hookOrInput preSDist args - sdist srcPref distPref knownSuffixHandlers pkg_descr + pkg_descr <- hookOrInArgs preSDist args verbose + sdist srcPref distPref verbose knownSuffixHandlers pkg_descr hunk ./Distribution/Simple.hs 267 - (uInst, _, args) <- parseRegisterArgs uInst args [] - pkg_descr <- hookOrInArgs preReg args uInst + (flags, _, args) <- parseRegisterArgs (uInst,0) args [] + pkg_descr <- hookOrInArgs preReg args flags hunk ./Distribution/Simple.hs 270 - when (hasLibs pkg_descr) (register pkg_descr localbuildinfo uInst) + when (hasLibs pkg_descr) (register pkg_descr localbuildinfo flags) hunk ./Distribution/Simple.hs 274 - (verbose,_, args) <- parseUnregisterArgs args [] - pkg_descr <- hookOrInput preUnreg args + (flags,_, args) <- parseUnregisterArgs args [] + pkg_descr <- hookOrInArgs preUnreg args flags hunk ./Distribution/Simple.hs 277 - unregister pkg_descr localbuildinfo + unregister pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 282 - hookOrInput :: (UserHooks -> (b -> IO (Maybe PackageDescription))) - -> b - -> IO PackageDescription - hookOrInput f i - = case hooks of - Nothing -> return pkg_descr_in - Just h -> do maybeDesc <- (f h) $ i - case maybeDesc of - Nothing -> return pkg_descr_in - Just x -> return (unionPackageDescription pkg_descr_in x) hunk ./Distribution/Simple.hs 291 - Nothing -> return pkg_descr_in - Just x -> return (unionPackageDescription pkg_descr_in x) + Nothing -> return pkg_descr_in + Just x -> return (unionPackageDescription pkg_descr_in x) hunk ./Distribution/Simple.hs 328 - preConf = \_ -> rn, + preConf = rn, hunk ./Distribution/Simple.hs 334 - preCopy = \_ -> rn, + preCopy = rn, hunk ./Distribution/Simple.hs 336 - preInst = \_ -> rn, + preInst = rn, hunk ./Distribution/Simple.hs 340 - preReg = \_ -> rn, + preReg = rn, hunk ./Distribution/Simple.hs 345 - where rn _ = return Nothing - res = return ExitSuccess + where rn _ _ = return Nothing + res = return ExitSuccess hunk ./Distribution/Simple.hs 367 - preCopy = readHook2, - preInst = readHook2, + preCopy = readHook, + preInst = readHook, hunk ./Distribution/Simple.hs 370 - preReg = readHook2, + preReg = readHook, hunk ./Distribution/Simple.hs 373 - where readHook a = no_extra_flags a >> readHookedPackageDesc - readHook2 a _ = no_extra_flags a >> readHookedPackageDesc + where readHook a _ = no_extra_flags a >> readHookedPackageDesc hunk ./Distribution/Simple.hs 391 - pkg_descr <- readPackageDescription infoFile - return (Just pkg_descr) + pkg_descr <- readPackageDescription infoFile + return (Just pkg_descr) hunk ./Distribution/PackageDescription.hs 49 - unionPackageDescription, + updatePackageDescription, + HookedBuildInfo, + emptyHookedBuildInfo, + readHookedBuildInfo, + parseHookedBuildInfo, + writeHookedBuildInfo, + showHookedBuildInfo, hunk ./Distribution/PackageDescription.hs 77 -import Text.PrettyPrint.HughesPJ(text, render, ($$), empty, space, vcat, fsep) +import Text.PrettyPrint.HughesPJ(text, render, ($$), (<+>), empty, space, vcat, fsep) hunk ./Distribution/PackageDescription.hs 214 +data LibOrExe = Lib String | Exe String + hunk ./Distribution/PackageDescription.hs 224 +type HookedBuildInfo = (Maybe BuildInfo, [(String, BuildInfo)]) + +emptyHookedBuildInfo = (Nothing, []) + hunk ./Distribution/PackageDescription.hs 256 -unionPackageDescription :: PackageDescription -> PackageDescription -> PackageDescription -unionPackageDescription p1 p2 - = p1{ -- simple fields - license = override license "license", - copyright = override copyright "copyright", - maintainer = override maintainer "maintainer", - author = override author "author", - stability = override stability "stability", - homepage = override homepage "homepage", - pkgUrl = override pkgUrl "package-url", - description = override description "description", - category = override category "category", - buildable = override buildable "buildable", - -- combine fields: - buildDepends = combine buildDepends, - ccOptions = combine ccOptions, - ldOptions = combine ldOptions, - frameworks = combine frameworks, - testedWith = combine testedWith, - -- it's not obvious what to do with executables: - executables = combine executables, +updatePackageDescription :: HookedBuildInfo -> PackageDescription -> PackageDescription +updatePackageDescription (mb_lib_bi, exe_bi) p + = p{ executables = updateExecutables exe_bi (executables p) + , library = updateLibrary mb_lib_bi (library p) + } + where + updateLibrary :: Maybe BuildInfo -> Maybe Library -> Maybe Library + updateLibrary (Just bi) (Just lib) = Just (lib{libBuildInfo = unionBuildInfo bi (libBuildInfo lib)}) + updateLibrary Nothing mb_lib = mb_lib hunk ./Distribution/PackageDescription.hs 266 - -- complex fields - package = unionPackageIdent (package p1) (package p2), - library = makeLib (library p1) (library p2) - } - where - override :: (Eq a) => (PackageDescription -> a) - -> String -- Field name - -> a - override f s - | f p1 == f p2 = f p1 - | f p1 /= f emptyPackageDescription - && f p2 /= f emptyPackageDescription - = error $ "union: Two non-empty fields found in union attempt:" ++ s - | f p1 == f emptyPackageDescription = f p2 - | otherwise = f p1 - combine :: (Eq a) => (PackageDescription -> [a]) - -> [a] - combine f = f p1 ++ f p2 - makeLib :: Maybe Library -> Maybe Library -> Maybe Library - makeLib Nothing Nothing = Nothing - makeLib Nothing j = j - makeLib j Nothing = j - makeLib (Just b1) (Just b2) = Just $ unionLibrary b1 b2 + --the lib only exists in the buildinfo file. FIX: Is this + --wrong? If there aren't any exposedModules, then the library + --won't build anyway. + updateLibrary (Just bi) Nothing = Just emptyLibrary{libBuildInfo=bi} hunk ./Distribution/PackageDescription.hs 271 -unionLibrary :: Library -> Library -> Library -unionLibrary l1 l2 - = l1{ exposedModules = combine exposedModules, - hiddenModules = combine hiddenModules, - libBuildInfo = unionBuildInfo (libBuildInfo l1) (libBuildInfo l2) - } - where - combine :: (Eq a) => (Library -> [a]) -> [a] - combine f = f l1 ++ f l2 + updateExecutables :: [(String, BuildInfo)] -> [Executable] -> [Executable] + updateExecutables exe_bi executables = foldr updateExecutable executables exe_bi + + updateExecutable :: (String, BuildInfo) -> [Executable] -> [Executable] + updateExecutable exe_bi [] = [] + updateExecutable exe_bi@(name,bi) (exe:exes) + | exeName exe == name = exe{buildInfo = unionBuildInfo bi (buildInfo exe)} : exes + | otherwise = updateExecutable exe_bi exes hunk ./Distribution/PackageDescription.hs 303 -unionPackageIdent :: PackageIdentifier -> PackageIdentifier -> PackageIdentifier -unionPackageIdent p1 p2 - = p1{pkgName = override pkgName "name", - pkgVersion = override pkgVersion "version"} - where - override :: (Eq a) => (PackageIdentifier -> a) - -> String -- Field name - -> a - override f s - | f p1 == f p2 = f p1 - | f p1 /= f emptyIdent - && f p2 /= f emptyIdent - = error $ "union: Two non-empty fields found in union attempt:" ++ s - | f p1 == f emptyIdent = f p2 - | otherwise = f p1 - emptyIdent = PackageIdentifier "" (Version [] []) - hunk ./Distribution/PackageDescription.hs 440 -readBuildInfo :: FilePath -> IO [BuildInfo] -readBuildInfo = readAndParseFile parseBuildInfo +readHookedBuildInfo :: FilePath -> IO HookedBuildInfo +readHookedBuildInfo = readAndParseFile parseHookedBuildInfo hunk ./Distribution/PackageDescription.hs 480 - -parseBuildInfo :: String -> ParseResult [BuildInfo] -parseBuildInfo inp = splitStanzas inp >>= mapM parseBI - where +parseHookedBuildInfo :: String -> ParseResult HookedBuildInfo +parseHookedBuildInfo inp = do + stanzas@(mLibStr:exes) <- splitStanzas inp + mLib <- parseLib mLibStr + case mLib of + Nothing -> do biExes <- mapM parseExe stanzas + return (Nothing, biExes) + lib@(Just _) -> do biExes <- mapM parseExe exes + return (lib, biExes) + where + parseLib :: Stanza -> ParseResult (Maybe BuildInfo) + parseLib ((_, fieldName, mName):bi) + | map toLower fieldName == "name" = do bi' <- parseBI bi; return $ Just bi' + | otherwise = return Nothing + parseLib [] = return Nothing + parseExe :: Stanza -> ParseResult (String, BuildInfo) + parseExe ((_, fieldName, mName):bi) + | map toLower fieldName == "executable" + = do bis <- parseBI bi + return (mName, bis) + | otherwise = error "expecting 'executable' at top of stanza" -- FIX + parseExe [] = error "error in parsing buildinfo file" -- FIX hunk ./Distribution/PackageDescription.hs 534 - + +writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO () +writeHookedBuildInfo fpath pbi = writeFile fpath (showHookedBuildInfo pbi) + +showHookedBuildInfo :: HookedBuildInfo -> String +showHookedBuildInfo (mb_lib_bi, ex_bi) = render $ + (case mb_lib_bi of + Nothing -> empty + Just bi -> ppFields bi binfoFields) $$ + vcat (map ppExeBuildInfo ex_bi) + where + ppExeBuildInfo (name, bi) = + space $$ + text "executable:" <+> text name $$ + ppFields bi binfoFields + + ppFields _ [] = empty + ppFields bi ((StanzaField _ get _ _):flds) = + get bi $$ ppFields bi flds + hunk ./Distribution/Simple.hs 112 - preConf :: Args -> ConfigFlags -> IO (Maybe PackageDescription), + preConf :: Args -> ConfigFlags -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 115 - preBuild :: Args -> Int -> IO (Maybe PackageDescription), + preBuild :: Args -> Int -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 118 - preClean :: Args -> Int -> IO (Maybe PackageDescription), + preClean :: Args -> Int -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 123 - -> IO (Maybe PackageDescription), + -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 126 - preInst :: Args -> (Bool,Int) -> IO (Maybe PackageDescription), + preInst :: Args -> (Bool,Int) -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 129 - preSDist :: Args -> Int -> IO (Maybe PackageDescription), + preSDist :: Args -> Int -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 134 - -> IO (Maybe PackageDescription), + -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 137 - preUnreg :: Args -> Int -> IO (Maybe PackageDescription), + preUnreg :: Args -> Int -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 282 - hookOrInArgs :: (UserHooks -> ([String] -> b -> IO (Maybe PackageDescription))) + hookOrInArgs :: (UserHooks -> ([String] -> b -> IO HookedBuildInfo)) hunk ./Distribution/Simple.hs 289 - Just h -> do maybeDesc <- (f h) a i - case maybeDesc of - Nothing -> return pkg_descr_in - Just x -> return (unionPackageDescription pkg_descr_in x) + Just h -> do pbi <- f h a i + return (updatePackageDescription pbi pkg_descr_in) hunk ./Distribution/Simple.hs 343 - where rn _ _ = return Nothing + where rn _ _ = return (Nothing, []) hunk ./Distribution/Simple.hs 371 - where readHook a _ = no_extra_flags a >> readHookedPackageDesc - defaultPreConf :: [String] -> ConfigFlags -> IO (Maybe PackageDescription) + where readHook a _ = no_extra_flags a >> readExistingHookedBuildInfo + defaultPreConf :: [String] -> ConfigFlags -> IO HookedBuildInfo hunk ./Distribution/Simple.hs 383 - readHookedPackageDesc - readHookedPackageDesc + readExistingHookedBuildInfo + readExistingHookedBuildInfo hunk ./Distribution/Simple.hs 387 - Nothing -> return Nothing - Just infoFile -> do - pkg_descr <- readPackageDescription infoFile - return (Just pkg_descr) + Nothing -> return emptyHookedBuildInfo + Just infoFile -> readHookedBuildInfo infoFile hunk ./test/twoMains/.setup-config 1 -LocalBuildInfo {prefix = ",tmp", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,2,2], versionTags = []}, compilerPath = "/usr/bin/ghc", compilerPkgTool = "/usr/bin/ghc-pkg"}, buildDir = "dist/build", packageDeps = [], withHaddock = Just "/usr/bin/haddock", executableDeps = [("testA",[]),("testB",[])]} +LocalBuildInfo {prefix = ",tmp", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,2,2], versionTags = []}, compilerPath = "/usr/bin/ghc", compilerPkgTool = "/usr/bin/ghc-pkg"}, buildDir = "dist/build", packageDeps = [], withHaddock = Just "/usr/bin/haddock", withHappy = Just "/usr/bin/happy", withAlex = Just "/usr/bin/alex", withHsc2hs = Just "/usr/bin/hsc2hs", withCpphs = Just "/usr/local/bin/cpphs", executableDeps = [("testA",[]),("testB",[])]} hunk ./test/withHooks/Setup.buildinfo.in 1 -copyright: Copyright 2005 Happy New Year!! -license: LGPL -description: This program outputs very important information. -exposed-modules: WithHooks +name: withHooks +include-dirs: /foo/bar, /bang/baz +extensions: CPP + +executable: withHooks +extensions: TemplateHaskell hunk ./test/withHooks/Setup.description 3 +exposed-modules: Main hunk ./test/withHooks/Setup.lhs 6 -> import Distribution.PackageDescription (readPackageDescription) +> import Distribution.PackageDescription (readPackageDescription, readHookedBuildInfo) hunk ./test/withHooks/Setup.lhs 14 + myPreConf :: Args -> ConfigFlags -> IO HookedBuildInfo + hunk ./test/withHooks/Setup.lhs 21 -> d <- readPackageDescription (fromJust m) -> return $ Just d +> readHookedBuildInfo (fromJust m) +> hunk ./Distribution/PreProcess.hs 52 -import Distribution.Setup (CompilerFlavor(..), Compiler(compilerFlavor)) +import Distribution.Setup (CompilerFlavor(..), Compiler(..)) hunk ./Distribution/PreProcess.hs 56 +import Distribution.Version (Version(..)) hunk ./Distribution/PreProcess.hs 61 +import System.Info (os, arch) hunk ./Distribution/PreProcess.hs 192 -ppCpp pkg_descr bi lbi = pp - where pp inFile outFile verbose - = rawSystemPath verbose "cpphs" (extraArgs ++ ["-O" ++ outFile, inFile]) - extraArgs = "--noline":hcFlags hc ++ - ["-I" ++ dir | dir <- includeDirs bi] ++ ccOptions pkg_descr - hc = compilerFlavor (compiler lbi) +ppCpp pkg_descr bi lbi + = maybe (ppNone "cpphs") pp (withCpphs lbi) + where pp cpphs inFile outFile verbose + = rawSystemVerbose verbose cpphs (extraArgs ++ ["-O" ++ outFile, inFile]) + extraArgs = "--noline" : hcDefines hc ++ sysDefines ++ + incOptions ++ ccOptions pkg_descr + hc = compiler lbi + sysDefines = + ["-D" ++ os ++ "_" ++ loc ++ "_OS" | loc <- locations] ++ + ["-D" ++ arch ++ "_" ++ loc ++ "_ARCH" | loc <- locations] + locations = ["HOST", "TARGET"] + incOptions = ["-I" ++ dir | dir <- includeDirs bi] hunk ./Distribution/PreProcess.hs 205 --- FIX (non-GHC): This uses hsc2hs as supplied with GHC, but this may --- not be present, and if present will pass GHC-specific cpp defines to --- the C compiler. hunk ./Distribution/PreProcess.hs 208 - where pp n = standardPP n (hcFlags hc ++ incOptions ++ ccOptions pkg_descr) - hc = compilerFlavor (compiler lbi) + where pp n = standardPP n (hcDefines hc ++ incOptions ++ ccOptions pkg_descr) + hc = compiler lbi hunk ./Distribution/PreProcess.hs 212 --- FIX: should add NHC versions too (maybe just use nhc as cpp?) -hcFlags :: CompilerFlavor -> [String] -hcFlags NHC = ["-D__NHC__"] -hcFlags Hugs = ["-D__HUGS__"] -hcFlags _ = [] +hcDefines :: Compiler -> [String] +hcDefines Compiler { compilerFlavor=NHC, compilerVersion=version } + = ["-D__NHC__=" ++ versionInt version] +hcDefines Compiler { compilerFlavor=Hugs } + = ["-D__HUGS__"] +hcDefines _ = [] + +versionInt :: Version -> String +versionInt (Version { versionBranch = [] }) = "1" +versionInt (Version { versionBranch = [n] }) = show n +versionInt (Version { versionBranch = n1:n2:_ }) + = show n1 ++ take 2 ('0' : show n2) hunk ./Distribution/Simple/Build.hs 127 - let args = ["-I" ++ dir | dir <- includeDirs buildInfo'] + let ghcArgs = ["-I" ++ dir | dir <- includeDirs buildInfo'] hunk ./Distribution/Simple/Build.hs 138 - rawSystemExit verbose ghcPath args + rawSystemExit verbose ghcPath ghcArgs hunk ./Distribution/Simple/Build.hs 144 - let args = ["-I" ++ dir | dir <- includeDirs buildInfo'] + let cArgs = ["-I" ++ dir | dir <- includeDirs buildInfo'] hunk ./Distribution/Simple/Build.hs 148 - rawSystemExit verbose ghcPath (args ++ [c]) + rawSystemExit verbose ghcPath (cArgs ++ [c]) hunk ./Distribution/Simple/Build.hs 156 - lib = mkLibName pref (showPackageId (package pkg_descr)) + libName = mkLibName pref (showPackageId (package pkg_descr)) hunk ./Distribution/Simple/Build.hs 158 - try (removeFile lib) -- first remove library if it exists - let args = ["q"++ (if verbose > 4 then "v" else "")] - ++ [lib] + try (removeFile libName) -- first remove library if it exists + let arArgs = ["q"++ (if verbose > 4 then "v" else "")] + ++ [libName] hunk ./Distribution/Simple/Build.hs 162 - rawSystemPathExit verbose "ar" args + rawSystemPathExit verbose "ar" arArgs hunk ./Distribution/Simple/Build.hs 169 - let args = ["-I" ++ dir | dir <- includeDirs exeBi] + let binArgs = ["-I" ++ dir | dir <- includeDirs exeBi] hunk ./Distribution/Simple/Build.hs 181 - rawSystemExit verbose ghcPath args + rawSystemExit verbose ghcPath binArgs hunk ./Distribution/Simple/Build.hs 226 - fileLists <- sequence [moduleToFilePath srcDirs mod suffixes | - mod <- mods] + fileLists <- sequence [moduleToFilePath srcDirs modu suffixes | + modu <- mods] hunk ./Distribution/Simple/Build.hs 235 - fileLists <- sequence [moduleToFilePath [destDir] mod suffixes | + stubsFileLists <- sequence [moduleToFilePath [destDir] mod suffixes | hunk ./Distribution/Simple/Build.hs 237 - mapM_ (compileFFI bi) (concat fileLists) + mapM_ (compileFFI bi) (concat stubsFileLists) hunk ./Distribution/Simple/SrcDist.hs 101 -prepareDir verbose inPref pps mods bi@BuildInfo{hsSourceDir=srcDir} +prepareDir verbose inPref pps mods BuildInfo{hsSourceDir=srcDir} hunk ./TODO 26 -*** hscpp extensions hunk ./TODO 42 - - hscpp need to define __HADDOCK__ when preprocessing for haddock. - This means we have to preprocess seprately for haddock. - hunk ./TODO 53 - -** clarify description filename issues -- allow foo.hsproj? hunk ./Distribution/PreProcess.hs 43 - ppCpp, ppGreenCard, ppC2hs, ppHsc2hs, + ppCpp, ppCppHaddock, ppGreenCard, ppC2hs, ppHsc2hs, hunk ./Distribution/PreProcess.hs 92 - sequence_ [preprocessModule [hsSourceDir bi] mod verbose builtinSuffixes biHandlers | - mod <- libModules pkg_descr] -- FIX: output errors? + sequence_ [preprocessModule [hsSourceDir bi] modu verbose builtinSuffixes biHandlers | + modu <- libModules pkg_descr] -- FIX: output errors? hunk ./Distribution/PreProcess.hs 101 - mod verbose builtinSuffixes biHandlers | - mod <- executableModules theExe] -- FIX: output errors? + modu verbose builtinSuffixes biHandlers | + modu <- executableModules theExe] -- FIX: output errors? hunk ./Distribution/PreProcess.hs 118 -preprocessModule searchLoc mod verbose builtinSuffixes handlers = do - bsrcFiles <- moduleToFilePath searchLoc mod builtinSuffixes - psrcFiles <- moduleToFilePath searchLoc mod (map fst handlers) +preprocessModule searchLoc modu verbose builtinSuffixes handlers = do + bsrcFiles <- moduleToFilePath searchLoc modu builtinSuffixes + psrcFiles <- moduleToFilePath searchLoc modu (map fst handlers) hunk ./Distribution/PreProcess.hs 123 - [] -> die ("can't find source for " ++ mod ++ " in " ++ show searchLoc) + [] -> die ("can't find source for " ++ modu ++ " in " ++ show searchLoc) hunk ./Distribution/PreProcess.hs 192 -ppCpp pkg_descr bi lbi +ppCpp = ppCppHaddock False + +ppCppHaddock :: Bool -> PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor +ppCppHaddock forHaddock pkg_descr bi lbi hunk ./Distribution/PreProcess.hs 199 - extraArgs = "--noline" : hcDefines hc ++ sysDefines ++ + extraArgs = "--noline" : compOrHaddock ++ sysDefines ++ hunk ./Distribution/PreProcess.hs 202 + compOrHaddock = if forHaddock then ["-D__HADDOCK__"] else hcDefines hc hunk ./Distribution/Simple.hs 64 -import Distribution.PreProcess (knownSuffixHandlers, ppSuffixes, ppCpp, ppUnlit, - removePreprocessedPackage, preprocessSources) +import Distribution.PreProcess (knownSuffixHandlers, ppSuffixes, ppCppHaddock, + ppUnlit, removePreprocessedPackage, preprocessSources) hunk ./Distribution/Simple.hs 301 - then ppCpp pkg_descr bi lbi file targetFile verbose + then ppCppHaddock True pkg_descr bi lbi file targetFile verbose hunk ./Distribution/PackageDescription.hs 243 --- |This isn't quite the right way to go about this. For one thing, --- the Right Thing for excutables isn't exactly clear. For another --- thing, it's hard to tell whether or not the field was provided at --- all in /p1/. The only way to guess (as the parser is currently --- implemented) is to compare it with the 'emptyPackageDescription' --- variable, though it's possible that they will be equal, but the --- user actually did provide that field. Another question is what to --- do about the "required," static fields which should not be in /p2/. --- We should definitely check to be sure they're in /p1/, and not in --- /p2/, though not in this function. --- FIXME: executables not implemented correctly, library (buildinfo) --- not yet implemented. +-- |Update the given package description with the output from the +-- pre-hooks. hunk ./Distribution/PackageDescription.hs 258 - --won't build anyway. + --won't build anyway. add to sanity checker? hunk ./Distribution/PackageDescription.hs 486 - parseExe ((_, fieldName, mName):bi) + parseExe ((lineNo, fieldName, mName):bi) hunk ./Distribution/PackageDescription.hs 490 - | otherwise = error "expecting 'executable' at top of stanza" -- FIX - parseExe [] = error "error in parsing buildinfo file" -- FIX + | otherwise = myError lineNo "expecting 'executable' at top of stanza" + parseExe [] = myError 0 "error in parsing buildinfo file. Expected executable stanza" hunk ./Distribution/PackageDescription.hs 214 -data LibOrExe = Lib String | Exe String - hunk ./Distribution/PackageDescription.hs 224 +emptyHookedBuildInfo :: HookedBuildInfo hunk ./Distribution/PackageDescription.hs 261 - updateExecutables exe_bi executables = foldr updateExecutable executables exe_bi + updateExecutables exe_bi' executables' = foldr updateExecutable executables' exe_bi' hunk ./Distribution/PackageDescription.hs 264 - updateExecutable exe_bi [] = [] - updateExecutable exe_bi@(name,bi) (exe:exes) + updateExecutable _ [] = [] + updateExecutable exe_bi'@(name,bi) (exe:exes) hunk ./Distribution/PackageDescription.hs 267 - | otherwise = updateExecutable exe_bi exes + | otherwise = updateExecutable exe_bi' exes hunk ./Distribution/PackageDescription.hs 480 - parseLib ((_, fieldName, mName):bi) - | map toLower fieldName == "name" = do bi' <- parseBI bi; return $ Just bi' + parseLib ((_, inFieldName, _mName):bi) -- FIX: should we check that mName == library's name? + | map toLower inFieldName == "name" = do bi' <- parseBI bi; return $ Just bi' hunk ./Distribution/PackageDescription.hs 485 - parseExe ((lineNo, fieldName, mName):bi) - | map toLower fieldName == "executable" + parseExe ((lineNo, inFieldName, mName):bi) + | map toLower inFieldName == "executable" hunk ./TODO 3 +** Add package sanity checker? + hunk ./Distribution/PackageDescription.hs 68 + sanityCheckPackage, hunk ./Distribution/PackageDescription.hs 543 + + +-- ------------------------------------------------------------ +-- * Sanity Checking +-- ------------------------------------------------------------ + +sanityCheckPackage :: PackageDescription -> IO Bool +sanityCheckPackage pkg_descr + = do libSane <- sanityCheckLib (library pkg_descr) + identSane <- if null (pkgName (package pkg_descr)) + || null (versionBranch (pkgVersion (package pkg_descr))) + then sanityWarning "package identifier malformed, either empty name or empty version" + else return False + return $ any (==True) [libSane, identSane] + +sanityCheckLib :: Maybe Library -> IO Bool +sanityCheckLib Nothing = return True +sanityCheckLib (Just l) + = if null $ exposedModules l + then sanityWarning "Non-empty library, but empty exposed modules list. Cabal may not build this library correctly" + else return True + +sanityWarning :: String -> IO Bool +sanityWarning s = do putStrLn $ "Sanity Check Warning: " ++ s + return True hunk ./Distribution/Simple.hs 183 - die ("Package " ++ name ++ " can't be built on this system.") + die ("Package " ++ name ++ " is marked as unbuildable on this system.") hunk ./Distribution/Simple.hs 186 + sanityCheckPackage pkg_descr hunk ./TODO 4 +** add hooks to haddock cmd hunk ./Distribution/PackageDescription.hs 77 -import Data.Maybe(fromMaybe, fromJust) +import Data.Maybe(fromMaybe, fromJust, isNothing) hunk ./Distribution/PackageDescription.hs 549 +-- |Fix: checking for required fields and such hunk ./Distribution/PackageDescription.hs 553 - identSane <- if null (pkgName (package pkg_descr)) - || null (versionBranch (pkgVersion (package pkg_descr))) - then sanityWarning "package identifier malformed, either empty name or empty version" - else return False - return $ any (==True) [libSane, identSane] + identSane <- checkSanity + (null (pkgName (package pkg_descr)) + || null (versionBranch (pkgVersion (package pkg_descr)))) + "package identifier malformed, either empty name or empty version" + nothingToDo <- checkSanity + (null (executables pkg_descr) && isNothing (library pkg_descr)) + "No executables and no library found. Nothing to do." + noModules <- checkSanity (hasMods pkg_descr) + "No non-hidden modules in this package." + + return $ any (==True) [libSane, identSane, nothingToDo, noModules] hunk ./Distribution/PackageDescription.hs 571 + +checkSanity :: Bool -> String -> IO Bool +checkSanity False _ = return False +checkSanity True s = sanityWarning s hunk ./Distribution/PackageDescription.hs 579 + +hasMods :: PackageDescription -> Bool +hasMods pkg_descr + | isNothing (library pkg_descr) = null $ executables pkg_descr + | otherwise = null (executables pkg_descr) + && null (exposedModules (fromJust (library pkg_descr))) hunk ./TODO 107 +** add sanity checking command? hunk ./TODO 145 -** configure should check sanity of PackageDescription, eg. library /= "" ? hunk ./Distribution/PackageDescription.hs 549 --- |Fix: checking for required fields and such +-- |Sanity check this description file. + +-- FIX: add a sanity check for missing haskell files? hunk ./Distribution/Simple/Install.hs 69 -import Distribution.Simple.Utils(moveSources, copyFileVerbose, mkLibName, die) +import Distribution.Simple.Utils(smartCopySources, copyFileVerbose, mkLibName, die) hunk ./Distribution/Simple/Install.hs 120 - = do moveSources verbose (buildPref `joinFileName` (hsSourceDir $ libBuildInfo l)) pref (libModules pd) ["hi"] + = do smartCopySources verbose (buildPref `joinFileName` (hsSourceDir $ libBuildInfo l)) pref (libModules pd) ["hi"] hunk ./Distribution/Simple/Install.hs 142 - moveSources verbose buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes + smartCopySources verbose buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes hunk ./Distribution/Simple/Install.hs 150 - moveSources verbose progBuildDir progInstallDir + smartCopySources verbose progBuildDir progInstallDir hunk ./Distribution/Simple/SrcDist.hs 56 -import Distribution.Simple.Utils(moveSources, die) +import Distribution.Simple.Utils(smartCopySources, die) hunk ./Distribution/Simple/SrcDist.hs 87 - moveSources verbose "" targetDir ["Setup"] ["lhs", "hs"] + smartCopySources verbose "" targetDir ["Setup"] ["lhs", "hs"] hunk ./Distribution/Simple/SrcDist.hs 104 - moveSources verbose srcDir pref mods (suff ++ ["hs", "lhs"]) + smartCopySources verbose srcDir pref mods (suff ++ ["hs", "lhs"]) hunk ./Distribution/Simple/Utils.hs 51 - moveSources, + smartCopySources, hunk ./Distribution/Simple/Utils.hs 191 --- |Put the source files into the right directory in preperation for --- something like sdist or installHugs. -moveSources :: Int -- ^verbose +-- |Copy the source files into the right directory. Looks in the +-- build prefix for files that look like the input modules, based on +-- the input search suffixes. It copies the files into the target +-- directory. + +smartCopySources :: Int -- ^verbose hunk ./Distribution/Simple/Utils.hs 202 -moveSources verbose pref targetDir sources searchSuffixes +smartCopySources verbose pref targetDir sources searchSuffixes hunk ./TODO 3 -** Add package sanity checker? hunk ./TODO 25 -** Rename moveSources - hunk ./TODO 102 -** sanity checking tool for configuration; are all the .hs files - included, etc. hunk ./TODO 122 +** sanity checking tool for configuration; are all the .hs files + included, etc. + hunk ./GNUmakefile 47 - cp Setup.lhs Setup.description dist/hugs + cp Setup.lhs Cabal.cabal dist/hugs hunk ./Distribution/PackageDescription.hs 75 -import Control.Monad(foldM, when) +import Control.Monad(liftM, foldM, when) hunk ./Distribution/PackageDescription.hs 95 -import Control.Monad (liftM) hunk ./Distribution/PackageDescription.hs 120 - -- possibly system-dependent build parameters - buildable :: Bool, -- ^ package is buildable here - ccOptions :: [String], -- ^ options for C compiler - ldOptions :: [String], -- ^ options for linker - frameworks :: [String], hunk ./Distribution/PackageDescription.hs 127 - hiddenModules :: [String], hunk ./Distribution/PackageDescription.hs 131 -emptyLibrary = Library [] [] emptyBuildInfo +emptyLibrary = Library [] emptyBuildInfo hunk ./Distribution/PackageDescription.hs 147 - buildable = True, - ccOptions = [], - ldOptions = [], - frameworks = [], hunk ./Distribution/PackageDescription.hs 155 - ++ (maybe [] hiddenModules lib) + ++ (maybe [] (hiddenModules . libBuildInfo) lib) hunk ./Distribution/PackageDescription.hs 160 - = concatMap executableModules execs + = concatMap (hiddenModules . buildInfo) execs hunk ./Distribution/PackageDescription.hs 164 -hasLibs p = case library p of - Just l -> if null (cSources $ libBuildInfo l) - && null (hiddenModules l) - && null (exposedModules l) - then False else True - Nothing -> False - +hasLibs p = maybe False (buildable . libBuildInfo) (library p) + hunk ./Distribution/PackageDescription.hs 168 + buildable :: Bool, -- ^ component is buildable here + ccOptions :: [String], -- ^ options for C compiler + ldOptions :: [String], -- ^ options for linker + frameworks :: [String], hunk ./Distribution/PackageDescription.hs 174 + hiddenModules :: [String], hunk ./Distribution/PackageDescription.hs 186 + buildable = True, + ccOptions = [], + ldOptions = [], + frameworks = [], hunk ./Distribution/PackageDescription.hs 192 + hiddenModules = [], hunk ./Distribution/PackageDescription.hs 203 - executableModules :: [String], hunk ./Distribution/PackageDescription.hs 212 - buildInfo = emptyBuildInfo, - executableModules=[] + buildInfo = emptyBuildInfo hunk ./Distribution/PackageDescription.hs 264 - = b1{cSources = combine cSources, + = b1{buildable = buildable b1 && buildable b2, + ccOptions = combine ccOptions, + ldOptions = combine ldOptions, + frameworks = combine frameworks, + cSources = combine cSources, hunk ./Distribution/PackageDescription.hs 270 + hiddenModules = combine hiddenModules, hunk ./Distribution/PackageDescription.hs 340 - , simpleField "buildable" - (text . show) parseReadS - buildable (\val pkg -> pkg{buildable=val}) - , simpleField "cc-options" - (fsep . map text) (fmap words (munch (const True))) - ccOptions (\val pkg -> pkg{ccOptions=val}) - , simpleField "ld-options" - (fsep . map text) (fmap words (munch (const True))) - ldOptions (\val pkg -> pkg{ldOptions=val}) - , simpleField "frameworks" - (fsep . map text) (fmap words (munch (const True))) - frameworks (\val pkg -> pkg{frameworks=val}) hunk ./Distribution/PackageDescription.hs 341 - , listField "hidden-modules" - text parseModuleNameQ - (\p -> maybe [] hiddenModules (library p)) - (\xs pkg -> let lib = fromMaybe emptyLibrary (library pkg) in - pkg{library = Just lib{hiddenModules=xs}}) hunk ./Distribution/PackageDescription.hs 356 - , listField "executable-modules" - text parseModuleNameQ - executableModules (\xs exe -> exe{executableModules=xs}) hunk ./Distribution/PackageDescription.hs 360 - [ listField "c-sources" + [ simpleField "buildable" + (text . show) parseReadS + buildable (\val binfo -> binfo{buildable=val}) + , simpleField "cc-options" + (fsep . map text) (fmap words (munch (const True))) + ccOptions (\val binfo -> binfo{ccOptions=val}) + , simpleField "ld-options" + (fsep . map text) (fmap words (munch (const True))) + ldOptions (\val binfo -> binfo{ldOptions=val}) + , simpleField "frameworks" + (fsep . map text) (fmap words (munch (const True))) + frameworks (\val binfo -> binfo{frameworks=val}) + , listField "c-sources" hunk ./Distribution/PackageDescription.hs 393 + , listField "hidden-modules" + text parseModuleNameQ + hiddenModules (\val binfo -> binfo{hiddenModules=val}) hunk ./Distribution/PackageDescription.hs 473 - parseLib ((_, inFieldName, _mName):bi) -- FIX: should we check that mName == library's name? - | map toLower inFieldName == "name" = do bi' <- parseBI bi; return $ Just bi' - | otherwise = return Nothing - parseLib [] = return Nothing + parseLib (bi@((_, inFieldName, _):_)) + | map toLower inFieldName /= "executable" = liftM Just (parseBI bi) + parseLib _ = return Nothing hunk ./Distribution/PackageDescription.hs 634 - buildable = True, hunk ./Distribution/PackageDescription.hs 638 - ccOptions = ["-g", "-o"], - ldOptions = ["-BStatic", "-dn"], - frameworks = ["foo"], hunk ./Distribution/PackageDescription.hs 643 - hiddenModules = ["Distribution.Package","Distribution.Version", - "Distribution.Simple.GHCPackageConfig"], hunk ./Distribution/PackageDescription.hs 645 + buildable = True, + ccOptions = ["-g", "-o"], + ldOptions = ["-BStatic", "-dn"], + frameworks = ["foo"], hunk ./Distribution/PackageDescription.hs 664 + hiddenModules = ["Distribution.Package","Distribution.Version", + "Distribution.Simple.GHCPackageConfig"], hunk ./Distribution/PreProcess.hs 102 - modu <- executableModules theExe] -- FIX: output errors? + modu <- hiddenModules bi] -- FIX: output errors? hunk ./Distribution/PreProcess.hs 149 - removePreprocessed (r `joinFileName` hsSourceDir bi) (executableModules theExe) suff) + removePreprocessed (r `joinFileName` hsSourceDir bi) (hiddenModules bi) suff) hunk ./Distribution/PreProcess.hs 200 - incOptions ++ ccOptions pkg_descr + incOptions ++ ccOptions bi hunk ./Distribution/PreProcess.hs 206 - locations = ["HOST", "TARGET"] + locations = ["BUILD", "HOST"] hunk ./Distribution/PreProcess.hs 212 - where pp n = standardPP n (hcDefines hc ++ incOptions ++ ccOptions pkg_descr) + where pp n = standardPP n (hcDefines hc ++ incOptions ++ ccOptions bi) hunk ./Distribution/Simple/Build.hs 125 - let buildInfo' = libBuildInfo lib - createDirectoryIfMissing True (pref `joinFileName` (hsSourceDir buildInfo')) - let ghcArgs = ["-I" ++ dir | dir <- includeDirs buildInfo'] - ++ ["-optc" ++ opt | opt <- ccOptions pkg_descr] + let libBi = libBuildInfo lib + createDirectoryIfMissing True (pref `joinFileName` (hsSourceDir libBi)) + let ghcArgs = ["-I" ++ dir | dir <- includeDirs libBi] + ++ ["-optc" ++ opt | opt <- ccOptions libBi] hunk ./Distribution/Simple/Build.hs 131 - "-odir", pref `joinFileName` (hsSourceDir buildInfo'), - "-hidir", pref `joinFileName` (hsSourceDir buildInfo') + "-odir", pref `joinFileName` (hsSourceDir libBi), + "-hidir", pref `joinFileName` (hsSourceDir libBi) hunk ./Distribution/Simple/Build.hs 134 - ++ constructGHCCmdLine Nothing buildInfo' (packageDeps lbi) + ++ constructGHCCmdLine Nothing libBi (packageDeps lbi) hunk ./Distribution/Simple/Build.hs 141 - unless (null (cSources buildInfo')) $ + unless (null (cSources libBi)) $ hunk ./Distribution/Simple/Build.hs 144 - let cArgs = ["-I" ++ dir | dir <- includeDirs buildInfo'] - ++ ["-optc" ++ opt | opt <- ccOptions pkg_descr] + let cArgs = ["-I" ++ dir | dir <- includeDirs libBi] + ++ ["-optc" ++ opt | opt <- ccOptions libBi] hunk ./Distribution/Simple/Build.hs 149 - | c <- cSources buildInfo'] + | c <- cSources libBi] hunk ./Distribution/Simple/Build.hs 152 - let hObjs = [ (hsSourceDir buildInfo') `joinFileName` (dotToSep x) `joinFileExt` objExtension + let hObjs = [ (hsSourceDir libBi) `joinFileName` (dotToSep x) `joinFileExt` objExtension hunk ./Distribution/Simple/Build.hs 155 - | (path, file, _) <- (map splitFilePath (cSources buildInfo')) ] + | (path, file, _) <- (map splitFilePath (cSources libBi)) ] hunk ./Distribution/Simple/Build.hs 170 - ++ ["-optc" ++ opt | opt <- ccOptions pkg_descr] + ++ ["-optc" ++ opt | opt <- ccOptions exeBi] hunk ./Distribution/Simple/Build.hs 179 - ++ ldOptions pkg_descr + ++ ldOptions exeBi hunk ./Distribution/Simple/Build.hs 182 - | Executable exeName' exeMods modPath exeBi <- executables pkg_descr] + | Executable exeName' modPath exeBi <- executables pkg_descr] hunk ./Distribution/Simple/Build.hs 191 -constructGHCCmdLine mSrcLoc buildInfo' deps = +constructGHCCmdLine mSrcLoc bi deps = hunk ./Distribution/Simple/Build.hs 193 - let flags = snd $ extensionsToGHCFlag (extensions buildInfo') - in [ "--make", "-i" ++ hsSourceDir buildInfo' ] + let flags = snd $ extensionsToGHCFlag (extensions bi) + in [ "--make", "-i" ++ hsSourceDir bi ] hunk ./Distribution/Simple/Build.hs 196 - ++ [ "-#include \"" ++ inc ++ "\"" | inc <- includes buildInfo' ] - ++ nub (flags ++ hcOptions GHC (options buildInfo')) + ++ [ "-#include \"" ++ inc ++ "\"" | inc <- includes bi ] + ++ nub (flags ++ hcOptions GHC (options bi)) hunk ./Distribution/Simple/Build.hs 209 - compileExecutable destDir (exe@Executable {modulePath=mainPath, buildInfo=bi, - executableModules=exeMods}) = do + compileExecutable destDir (exe@Executable {modulePath=mainPath, buildInfo=bi}) = do + let exeMods = hiddenModules bi hunk ./Distribution/Simple/Build.hs 257 - ccOptions pkg_descr ++ [inFile, outFile]) + ccOptions bi ++ [inFile, outFile]) hunk ./Distribution/Simple/Build.hs 279 - ccOptions pkg_descr ++ + ccOptions bi ++ hunk ./Distribution/Simple/Build.hs 282 - ldOptions pkg_descr ++ + ldOptions bi ++ hunk ./Distribution/Simple/Build.hs 284 - concat [["-framework", f] | f <- frameworks pkg_descr] + concat [["-framework", f] | f <- frameworks bi] hunk ./Distribution/Simple/Configure.hs 1 +{-# OPTIONS -fffi #-} + hunk ./Distribution/Simple/Configure.hs 94 +#ifdef mingw32_TARGET_OS +import Foreign +import Foreign.C +#endif hunk ./Distribution/Simple/Configure.hs 141 - let pref = fromMaybe (system_default_prefix pkg_descr) (configPrefix cfg) + defPrefix <- system_default_prefix pkg_descr + let pref = fromMaybe defPrefix (configPrefix cfg) hunk ./Distribution/Simple/Configure.hs 147 - concat [ extensions exeBi | Executable _ _ _ exeBi <- executables pkg_descr ] + concat [ extensions exeBi | Executable _ _ exeBi <- executables pkg_descr ] hunk ./Distribution/Simple/Configure.hs 179 - | Executable n _ _ _ <- executables pkg_descr] + | Executable n _ _ <- executables pkg_descr] hunk ./Distribution/Simple/Configure.hs 206 -system_default_prefix :: PackageDescription -> String +system_default_prefix :: PackageDescription -> IO String hunk ./Distribution/Simple/Configure.hs 208 -system_default_prefix PackageDescription{package=pkg} = - "C:\\Program Files\\" ++ pkgName pkg +system_default_prefix PackageDescription{package=pkg} = + allocaBytes long_path_size $ \pPath -> do + r <- c_SHGetFolderPath nullPtr csidl_PROGRAM_FILES nullPtr 0 pPath + s <- peekCString pPath + return (s++'\\':pkgName pkg) + where + csidl_PROGRAM_FILES = 0x0026 + long_path_size = 1024 + +foreign import stdcall unsafe "SHGetFolderPath" + c_SHGetFolderPath :: Ptr () + -> CInt + -> Ptr () + -> CInt + -> CString + -> IO CInt hunk ./Distribution/Simple/Configure.hs 226 - "/usr/local" + return "/usr/local" hunk ./Distribution/Simple/Install.hs 111 - | Executable e _ _ b <- executables pkg_descr] + | Executable e _ b <- executables pkg_descr] hunk ./Distribution/Simple/Register.hs 124 - | ghc_63_plus = ["register", installedPkgConfigFile] + | ghc_63_plus = ["update", installedPkgConfigFile] hunk ./Distribution/Simple/Register.hs 169 + bi = libBuildInfo lib hunk ./Distribution/Simple/Register.hs 184 - IPI.hiddenModules = hiddenModules lib, + IPI.hiddenModules = hiddenModules bi, hunk ./Distribution/Simple/Register.hs 188 - IPI.extraLibraries = extraLibs $ libBuildInfo lib, - IPI.includeDirs = includeDirs $ libBuildInfo lib, - IPI.includes = includes $ libBuildInfo lib, + IPI.extraLibraries = extraLibs bi, + IPI.includeDirs = includeDirs bi, + IPI.includes = includes bi, hunk ./Distribution/Simple/Register.hs 192 - IPI.extraHugsOpts = concat [opts | (Hugs,opts) <- options $ libBuildInfo lib], - IPI.extraCcOpts = ccOptions pkg_descr, - IPI.extraLdOpts = ldOptions pkg_descr, + IPI.extraHugsOpts = concat [opts | (Hugs,opts) <- options bi], + IPI.extraCcOpts = ccOptions bi, + IPI.extraLdOpts = ldOptions bi, hunk ./Distribution/Simple/Register.hs 196 - IPI.extraFrameworks = frameworks pkg_descr, + IPI.extraFrameworks = frameworks bi, hunk ./Distribution/Simple/SrcDist.hs 85 - sequence_ [prepareDir verbose targetDir pps exeM exeBi | (Executable _ exeM _ exeBi) <- executables pkg_descr] + sequence_ [prepareDir verbose targetDir pps [] exeBi | (Executable _ _ exeBi) <- executables pkg_descr] hunk ./Distribution/Simple/SrcDist.hs 98 - -> [String] -- ^Modules + -> [String] -- ^Exposed modules hunk ./Distribution/Simple/SrcDist.hs 101 -prepareDir verbose inPref pps mods BuildInfo{hsSourceDir=srcDir} +prepareDir verbose inPref pps mods BuildInfo{hsSourceDir=srcDir, hiddenModules=mods'} hunk ./Distribution/Simple/SrcDist.hs 104 - smartCopySources verbose srcDir pref mods (suff ++ ["hs", "lhs"]) + smartCopySources verbose srcDir pref (mods++mods') (suff ++ ["hs", "lhs"]) hunk ./Distribution/Simple.hs 93 -import Data.Maybe (isNothing, fromJust) +import Data.Maybe ( isNothing, fromJust, maybeToList ) hunk ./Distribution/Simple.hs 109 - runTests :: Bool -> IO ExitCode, -- ^Used for @.\/setup test@ + runTests :: Args -> Bool -> IO ExitCode, -- ^Used for @.\/setup test@ hunk ./Distribution/Simple.hs 113 - postConf :: IO ExitCode, + postConf :: Args -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 116 - postBuild :: IO ExitCode, + postBuild :: Args -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 119 - postClean :: IO ExitCode, + postClean :: Args -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 124 - postCopy :: IO ExitCode, + postCopy :: Args -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 127 - postInst :: IO ExitCode, -- ^guaranteed to be run on target + postInst :: Args -> LocalBuildInfo -> IO ExitCode, -- ^guaranteed to be run on target hunk ./Distribution/Simple.hs 130 - postSDist :: IO ExitCode, + postSDist :: Args -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 135 - postReg :: IO ExitCode, + postReg :: Args -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 138 - postUnreg :: IO ExitCode + postUnreg :: Args -> LocalBuildInfo -> IO ExitCode hunk ./Distribution/Simple.hs 181 - when (not (buildable pkg_descr)) $ do + let buildInfos = + map libBuildInfo (maybeToList (library pkg_descr)) ++ + map buildInfo (executables pkg_descr) + when (not (any buildable buildInfos)) $ do hunk ./Distribution/Simple.hs 186 - die ("Package " ++ name ++ " is marked as unbuildable on this system.") + die ("Package " ++ name ++ " can't be built on this system.") hunk ./Distribution/Simple.hs 190 - postHook postConf + postHook postConf args localbuildinfo hunk ./Distribution/Simple.hs 198 - postHook postBuild + postHook postBuild args localbuildinfo hunk ./Distribution/Simple.hs 241 - postHook postClean + postHook postClean args localbuildinfo hunk ./Distribution/Simple.hs 248 - postHook postCopy + postHook postCopy args localbuildinfo hunk ./Distribution/Simple.hs 260 - postHook postInst + postHook postInst args localbuildinfo hunk ./Distribution/Simple.hs 267 + localbuildinfo <- getPersistBuildConfig hunk ./Distribution/Simple.hs 269 - postHook postSDist + postHook postSDist args localbuildinfo hunk ./Distribution/Simple.hs 276 - postHook postReg + postHook postReg args localbuildinfo hunk ./Distribution/Simple.hs 283 - postHook postUnreg + postHook postUnreg args localbuildinfo hunk ./Distribution/Simple.hs 296 - postHook f = case hooks of - Nothing -> return ExitSuccess - Just h -> f h + postHook f a localbuildinfo + = case hooks of + Nothing -> return ExitSuccess + Just h -> f h a localbuildinfo hunk ./Distribution/Simple.hs 330 - runTests = \_ -> res, + runTests = res, hunk ./Distribution/Simple.hs 349 - where rn _ _ = return (Nothing, []) - res = return ExitSuccess + where rn _ _ = return emptyHookedBuildInfo + res _ _ = return ExitSuccess hunk ./package.conf.in 1 +#include "ghcconfig.h" + hunk ./package.conf.in 43 +#if defined(mingw32_HOST_OS) || defined(__MINGW32__) || defined(_MSC_VER) + "shell32" +#endif hunk ./Distribution/PackageDescription.hs 618 - "Executable-Modules: Foo1, Util, Main", + "Hidden-Modules: Foo1, Util, Main", hunk ./Distribution/PackageDescription.hs 651 + hiddenModules = ["Distribution.Package", + "Distribution.Version", + "Distribution.Simple.GHCPackageConfig"], hunk ./Distribution/PackageDescription.hs 663 - ["Foo1","Util","Main"] "SomeFile.hs" ( + "SomeFile.hs" ( hunk ./Distribution/PackageDescription.hs 665 - + hiddenModules=["Foo1","Util","Main"], hunk ./Distribution/PackageDescription.hs 667 - hiddenModules = ["Distribution.Package","Distribution.Version", - "Distribution.Simple.GHCPackageConfig"], hunk ./Distribution/Simple.hs 209 + createDirectoryIfMissing True tmpDir hunk ./changelog 3 +0.6 Isaac Jones Wed Feb 2 2005 + * No more executable-modules. Use "hidden-modules" instead. + + hunk ./test/A/A.cabal 9 -Executable-Modules: A, MainA +Hidden-Modules: A, MainA hunk ./test/A/A.cabal 14 -Executable-Modules: B.A, B.MainB +Hidden-Modules: B.A, B.MainB hunk ./test/depOnLib/test.cabal 7 -Executable-Modules: Main, A +Hidden-Modules: Main, A hunk ./test/twoMains/Setup.description 5 -Executable-Modules: MainA +Hidden-Modules: MainA hunk ./test/twoMains/Setup.description 9 -Executable-Modules: MainB +Hidden-Modules: MainB hunk ./test/wash2hs/Setup.description 4 -hs-source-dir: hs hunk ./test/wash2hs/Setup.description 8 -Executable-Modules: WASHClean, WASHExpression, WASHGenerator, WASHOut, - WASHData, WASHFlags, WASHMain, WASHParser, - WASHUtil +hidden-Modules: WASHClean, WASHExpression, WASHGenerator, WASHOut, + WASHData, WASHFlags, WASHMain, WASHParser, + WASHUtil hunk ./test/withHooks/Setup.buildinfo.in 1 -name: withHooks hunk ./test/withHooks/Setup.description 6 -Executable-Modules: Main +Hidden-Modules: Main hunk ./test/withHooks/Setup.lhs 28 -> postClean=removeFile "Setup.buildinfo" >> return ExitSuccess +> postClean=(\_ _ -> removeFile "Setup.buildinfo" >> return ExitSuccess) hunk ./Distribution/PreProcess.hs 43 - ppCpp, ppCppHaddock, ppGreenCard, ppC2hs, ppHsc2hs, + ppCpp, ppCpp', ppGreenCard, ppC2hs, ppHsc2hs, hunk ./Distribution/PreProcess.hs 192 -ppCpp = ppCppHaddock False +ppCpp = ppCpp' [] hunk ./Distribution/PreProcess.hs 194 -ppCppHaddock :: Bool -> PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor -ppCppHaddock forHaddock pkg_descr bi lbi +ppCpp' :: [String] -> PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor +ppCpp' inputArgs pkg_descr bi lbi hunk ./Distribution/PreProcess.hs 199 - extraArgs = "--noline" : compOrHaddock ++ sysDefines ++ - incOptions ++ ccOptions bi + extraArgs = "--noline" : sysDefines ++ + incOptions ++ ccOptions bi ++ inputArgs hunk ./Distribution/PreProcess.hs 202 - compOrHaddock = if forHaddock then ["-D__HADDOCK__"] else hcDefines hc hunk ./Distribution/Setup.hs 52 - parseHaddockArgs, + parseHaddockArgs, parseProgramaticaArgs, hunk ./Distribution/Setup.hs 90 + | ProgramaticaCmd -- pfesetup hunk ./Distribution/Setup.hs 177 - copyCmd, sdistCmd, haddockCmd, registerCmd, unregisterCmd] + copyCmd, sdistCmd, haddockCmd, programaticaCmd, + registerCmd, unregisterCmd] hunk ./Distribution/Setup.hs 306 + +programaticaCmd :: Cmd a +programaticaCmd = Cmd { + cmdName = "pfe", + cmdHelp = "Generate Programatica Project.", + cmdDescription = "", + cmdOptions = [cmd_help, cmd_verbose], + cmdAction = ProgramaticaCmd + } + +parseProgramaticaArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) +parseProgramaticaArgs = parseNoArgs programaticaCmd hunk ./Distribution/Simple.hs 64 -import Distribution.PreProcess (knownSuffixHandlers, ppSuffixes, ppCppHaddock, +import Distribution.PreProcess (knownSuffixHandlers, ppSuffixes, ppCpp', hunk ./Distribution/Simple.hs 214 - mapM_ (mockPP pkg_descr bi lbi tmpDir verbose) inFiles + mapM_ (mockPP ["-D__HADDOCK__"] pkg_descr bi lbi tmpDir verbose) inFiles hunk ./Distribution/Simple.hs 233 + ProgramaticaCmd -> do + (verbose, _, args) <- parseProgramaticaArgs args [] + pkg_descr <- hookOrInArgs preBuild args verbose + withLib pkg_descr ExitSuccess (\lib -> + do lbi <- getPersistBuildConfig + mPfe <- findProgram "pfesetup" Nothing + when (isNothing mPfe) (error "pfe command not found") + putStrLn $ "using : " ++ fromJust mPfe + let bi = libBuildInfo lib + let mods = exposedModules lib ++ hiddenModules (libBuildInfo lib) + preprocessSources pkg_descr lbi verbose knownSuffixHandlers + inFiles <- sequence [moduleToFilePath [hsSourceDir bi] m ["hs", "lhs"] + | m <- mods] >>= return . concat + let tmpDir = joinPaths (buildDir lbi) "tmp" + mapM_ (mockPP ["-D__HUGS__"] pkg_descr bi lbi tmpDir verbose) inFiles + setupMessage "Running pfesetup for " pkg_descr + let outFiles = map (joinFileName tmpDir) + (map ((flip changeFileExt) "hs") inFiles) + code <- rawSystemVerbose verbose (fromJust mPfe) +-- (["-h", +-- "-o", targetDir, +-- "-t", showPkg, +-- "-p", prologName] + ((if verbose > 4 then ["-v"] else []) + ++ outFiles) + when (code /= ExitSuccess) (exitWith code) + return code) + hunk ./Distribution/Simple.hs 329 - mockPP pkg_descr bi lbi pref verbose file + mockPP inputArgs pkg_descr bi lbi pref verbose file hunk ./Distribution/Simple.hs 336 - then ppCppHaddock True pkg_descr bi lbi file targetFile verbose + then ppCpp' inputArgs pkg_descr bi lbi file targetFile verbose hunk ./TODO 3 +> > Is it sufficient to put License: BSD3 in the package description? +> > Or should License-File be mandatory, and License just an optional +> > hint? + +* Write semantic checker for package description file. start w/ + sanity checker. give error if buildInfo field given when no + exposed or hidden modules for a library. + move ./test/wash2hs/Setup.description ./test/wash2hs/wash2hs.cabal hunk ./Distribution/Simple.hs 91 -import Control.Monad(when) +import Control.Monad(when, unless) hunk ./Distribution/Simple.hs 236 + unless (hasLibs pkg_descr) (error "no libraries found in this project.") hunk ./Distribution/Simple.hs 257 - ((if verbose > 4 then ["-v"] else []) - ++ outFiles) + ("noplogic":"cpp": (if verbose > 4 then ["-v"] else []) + ++ inFiles) hunk ./Distribution/InstalledPackageInfo.hs 51 + ParseResult(..), hunk ./Distribution/License.hs 54 --- The "AllRightsReserved" constructor is not actually a license, but +-- The 'AllRightsReserved' constructor is not actually a license, but hunk ./Distribution/PackageDescription.hs 43 + -- * Package descriptions hunk ./Distribution/PackageDescription.hs 50 - updatePackageDescription, + sanityCheckPackage, + setupMessage, + Library(..), + withLib, + hasLibs, + libModules, + Executable(..), + exeModules, + -- * Build information + BuildInfo(..), + emptyBuildInfo, + -- ** Supplementary build information hunk ./Distribution/PackageDescription.hs 68 - basicStanzaFields, - setupMessage, - withLib, - hasLibs, - BuildInfo(..), - emptyBuildInfo, - Executable(..), - Library(..), - emptyExecutable, - exeModules, - libModules, + updatePackageDescription, + -- * Utilities + ParseResult(..), + PError, showError, hunk ./Distribution/PackageDescription.hs 73 - sanityCheckPackage, hunk ./Distribution/PreProcess/Unlit.hs 10 --- Remove the "literal" markups from a Haskell source file, including --- ">", "\begin{code}, \end{code}", and "#" +-- Remove the \"literal\" markups from a Haskell source file, including +-- \"@>@\", \"@\\begin{code}@\", \"@\\end{code}@\", and \"@#@\" hunk ./Distribution/PreProcess/Unlit.hs 14 --- "Report on the Programming Language Haskell", +-- /Report on the Programming Language Haskell/, hunk ./Distribution/Setup.hs 50 - parseGlobalArgs, commandList, + parseGlobalArgs, hunk ./Distribution/Simple/Utils.hs 232 --- system-specific. In Unix, it's "." FIX: What about other arches? +-- system-specific. In Unix, it's @\".\"@. FIX: What about other arches? hunk ./Distribution/Simple/Utils.hs 382 --- |Package description file (@.cabal@) +-- |Package description file (/pkgname/@.cabal@) hunk ./Distribution/Simple.hs 11 --- Distribution/Simple/\* modules. When given the parsed command-line +-- Distribution.Simple.\* modules. When given the parsed command-line hunk ./Distribution/Simple.hs 15 --- This module isn't called "Simple" because it's simple. Far from --- it. It's called "Simple" because it does complicated things to +-- This module isn't called \"Simple\" because it's simple. Far from +-- it. It's called \"Simple\" because it does complicated things to hunk ./Distribution/Simple.hs 51 - License(..), Version(..), VersionRange(..), + module Distribution.License, + Version(..), VersionRange(..), hunk ./Distribution/Simple.hs 56 - defaultUserHooks, UserHooks (..), emptyUserHooks, defaultHookedPackageDesc, + UserHooks(..), Args, defaultUserHooks, emptyUserHooks, + defaultHookedPackageDesc, hunk ./Distribution/Simple.hs 81 -import Distribution.License (License(..)) +import Distribution.License hunk ./Distribution/Compat/ReadP.hs 21 --- Martin Sjögren +-- Martin Sjögren hunk ./Distribution/Simple/Configure.hs 12 --- Explanation: Perform the ".\/setup configure" action. Outputs the --- .setup-config file. +-- Explanation: Perform the \"@.\/setup configure@\" action. +-- Outputs the @.setup-config@ file. hunk ./Distribution/Simple/Install.hs 10 --- Explanation: Perform the ".\/setup install" action. Move files into +-- Explanation: Perform the \"@.\/setup install@\" action. Move files into hunk ./Distribution/Simple/Register.hs 10 --- Explanation: Perform the ".\/setup register" action. Uses a --- drop-file for HC-PKG. See also InstalledPackageInfo - +-- Explanation: Perform the \"@.\/setup register@\" action. +-- Uses a drop-file for HC-PKG. See also "Distribution.InstalledPackageInfo". hunk ./Distribution/PreProcess.hs 77 - = (String, PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor) + = (String, BuildInfo -> LocalBuildInfo -> PreProcessor) hunk ./Distribution/PreProcess.hs 107 - localHandlers bi = [(ext, h pkg_descr bi lbi) | (ext, h) <- handlers] + localHandlers bi = [(ext, h bi lbi) | (ext, h) <- handlers] hunk ./Distribution/PreProcess.hs 191 -ppCpp :: PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor +ppCpp :: BuildInfo -> LocalBuildInfo -> PreProcessor hunk ./Distribution/PreProcess.hs 194 -ppCpp' :: [String] -> PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor -ppCpp' inputArgs pkg_descr bi lbi +ppCpp' :: [String] -> BuildInfo -> LocalBuildInfo -> PreProcessor +ppCpp' inputArgs bi lbi hunk ./Distribution/PreProcess.hs 199 - extraArgs = "--noline" : sysDefines ++ + extraArgs = "--noline" : hcDefines hc ++ sysDefines ++ hunk ./Distribution/PreProcess.hs 208 -ppHsc2hs :: PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor -ppHsc2hs pkg_descr bi lbi +ppHsc2hs :: BuildInfo -> LocalBuildInfo -> PreProcessor +ppHsc2hs bi lbi hunk ./Distribution/PreProcess.hs 228 -ppHappy :: PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor -ppHappy _ _ lbi +ppHappy :: BuildInfo -> LocalBuildInfo -> PreProcessor +ppHappy _ lbi hunk ./Distribution/PreProcess.hs 236 -ppAlex :: PackageDescription -> BuildInfo -> LocalBuildInfo -> PreProcessor -ppAlex _ _ lbi +ppAlex :: BuildInfo -> LocalBuildInfo -> PreProcessor +ppAlex _ lbi hunk ./Distribution/PreProcess.hs 270 - [ ("gc", \ _ _ _ -> ppGreenCard) - , ("chs", \ _ _ _ -> ppC2hs) + [ ("gc", \ _ _ -> ppGreenCard) + , ("chs", \ _ _ -> ppC2hs) hunk ./Distribution/PreProcess.hs 277 - , ("testSuffix", \ _ _ _ -> ppTestHandler) + , ("testSuffix", \ _ _ -> ppTestHandler) hunk ./Distribution/Simple.hs 339 - then ppCpp' inputArgs pkg_descr bi lbi file targetFile verbose + then ppCpp' inputArgs bi lbi file targetFile verbose hunk ./package.conf.in 49 -depends: base, mtl +depends: base adddir ./doc adddir ./examples addfile ./doc/Cabal.xml addfile ./doc/Makefile addfile ./examples/Makefile addfile ./examples/hapax.hs hunk ./doc/Cabal.xml 1 + +Distribution.Simple'> + Distribution.Make'> + License'> + Extension'> + ]> + +
+ Common Architecture for Building Applications and Tools + User's Guide + + + The Cabal aims to simplify the + distribution of Haskell software. It does this by specifying a + number of interfaces between package authors, builders and users, + as well as providing a library implementing these interfaces. + + +
+ Packages + + A package is the unit of distribution + for the Cabal. Its purpose, when installed, is to make available + either or both of: + + + A library, exposing a number of Haskell modules. A library + may also contain hidden modules, which + are used internally but not available to clients. + Hugs doesn't support module hiding. + Just pretend they're not there, OK? + + + + + + One or more Haskell programs. + + + However having both a library and executables in a package + does not work very well, as the executables may not depend on + the library. + + Internally, the package may consist of much more than a bunch + of Haskell modules: it may also have C source code and header + files, documentation, test cases, auxiliary tools etc. + + A package is identified by a globally-unique + package name, an identifier containing + no spaces. Chaos will result if two distinct packages with the + same name are installed on the same system, but there is not + yet a mechanism for allocating these names. + A particular version of the package is distinguished by a + version number, consisting of a sequence + of one or more integers. These can be combined to form a single + text string called the package ID, using + a hyphen to separate the version from the name, and dots to + separate the version components, e.g. + HUnit-1.1. + + + Packages are not part of the Haskell language; + they simply populate the hierarchical space of module names. + It is still the case that all the modules of a program must have + distinct module names, regardless of the package they come from, + and whether they are exposed or hidden. + This also means that although some implementations (i.e. GHC) may + allow several versions of a package to be installed at the same + time, a program cannot use two packages, P and Q, which depend + on different versions of the same underlying package R. + +
+ +
+ Creating a package + Suppose you have a directory hierarchy containing the files + that make up your package. You will need to add two more files + to the root directory of the package: + + + package.cabal + + a text file containing a package description + (for details of the syntax of this file, see + ), and + + + + + Setup.hs or + Setup.lhs + + a Haskell script to perform various setup tasks (with + the interface described in ). + In most cases this will be trivial, calling on the Cabal + library to do most of the work. + + + + Once you have these, you can create a source bundle of this + directory for distribution. Building of the package is discussed in + . + + + A package containing a simple library + The HUnit package contains a file HUnit.cabal + containing: + +Name: HUnit +Version: 1.1 +License: BSD3 +Author: Dean Herington +Homepage: http://hunit.sourceforge.net/ +Category: Testing +Build-Depends: base +Description: + HUnit is a unit testing framework for Haskell, inspired by the + JUnit tool for Java, see: <http://www.junit.org>. +Exposed-modules: + Test.HUnit, Test.HUnit.Base, Test.HUnit.Lang, + Test.HUnit.Terminal, Test.HUnit.Text +Extensions: CPP + and the following Setup.hs: + +import Distribution.Simple +main = defaultMain + + + + A package containing executable programs + +Name: TestPackage +Version: 0.0 +License: BSD3 +Author: Angela Author +Build-Depends: HUnit + +Executable: program1 +Main-Is: Main.hs +Hs-Source-Dir: prog1 + +Executable: program2 +Main-Is: Main.hs +Hs-Source-Dir: prog2 +Hidden-Modules: Utils + with Setup.hs the same as above. + + + The trivial setup script used in these examples uses + the simple build infrastructure + provided by the Cabal library (see &Simple;). + The simplicity lies in its interface rather that its implementation. + It automatically handles preprocessing with standard preprocessors, + and builds packages for all the Haskell implementations (except + nhc98, for now). + + The simple build infrastructure can also handle packages + where building is governed by system-dependent parameters, + if you specify a little more (see ). + A few packages require more elaborate solutions + (see ). + +
+ Package descriptions + The package description file should have a name + ending in .cabal, and contain several + stanzas separated by blank lines. + Each stanza consists of a number of fields, with a syntax like + mail message headers. + + + case is not significant in field names + + + to continue a field value, indent the next line + + + to get a blank line in a field value, use an indented + . + + + Lines beginning with -- + are treated as comments and ignored. + + The first stanza describes the package + as a whole, as well as the library it contains (if any), using + the following fields: + + + name: identifier + + The unique name of the package, without the version number + (required). + + + + + version: string + + The package version number, usually consisting of + a sequence of natural numbers separated by dots + (required). + + + + + license: string + + The type of license under which this package is distributed. + License names are the constants of the &License; type. + + + + + license-file: filename + + The name of a file containing the precise license for + this package. + + + + + copyright: freeform text + + The name of the holder of the copyright on the package. + + + + + author: freeform text + + The original author of the package. + + + + + maintainer: email address + + The current maintainer of the package, if different + from the author. + + + + + stability: freeform text + + The stability level of the package, e.g. + alpha, experimental, + provisional, stable. + + + + + homepage: URL + + The package homepage. + + + + + package-url: URL + + The location of a source bundle for the package. + + + + + description: freeform text + + Description of the package. This may be several + paragraphs, and should be aimed at a Haskell programmer + who has never heard of your package before. + + + + + category: freeform text + + A classification category for future use by the package + catalogue Hackage. These categories + have not yet been specified, but the upper levels of the + module hierarchy make a good start. + + + + + tested-with: compiler list + + A list of compilers and versions against which the + package has been tested (or at least built). + + + + + build-depends: package list + + A list of packages, possibly annotated with versions, + needed to build this one, e.g. foo > 1.2, bar. + If no version constraint is specified, any version is assumed + to be acceptable. + + + + + exposed-modules: module list + + A list of modules added by this package (required if + this package contains a library). + + + + + This stanza may also contain build information fields relating + to the library (see ). +
+ Executables + Subsequent stanzas (if present) describe executable programs + contained in the package, using the following fields, as well as + build information fields (see ). + + + executable: string + + The name of the executable program (required). + + + + + main-is: filename + + The name of the source file containing the main module, + relative to the hs-sources directory + (required). + + + +
+ +
+ Build information + The following fields may be present in any stanza, and + give information for the building of the corresponding library + or executable. All are optional. + + + buildable: Boolean + + Is the component buildable? + (default: True.) + Like some of the other fields below, this field is + more useful with the slightly more elaborate form of + the simple build infrastructure described in + . + + + + + hidden-modules: module list + + A list of modules used by the component + but not exposed to users. For a library component, these + would be hidden modules of the library. For an executable, + these would be auxiliary modules to be linked with the + file named in the main-is field. + + + + + hs-source-dir: directory + + The name of root directory of the module + hierarchy, relative to the package root + (default: .). + + + + extensions: string list + + A list of Haskell extensions used by every module. + Extension names are the constructors of the &Extension; type. + These determine corresponding compiler options. + In particular, CPP specifies that + Haskell source files are to be preprocessed with a + C preprocessor. + + Extensions used only by one module may be specified + by placing a LANGUAGE pragma in the + source file affected, e.g.: + {-# LANGUAGE CPP, MultiParamTypeClasses #-} + + + + + options-ghc: string list + + Additional options for GHC. You can often achieve + the same effect using the extensions + field, which is preferred. + + Options required only by one module may be specified + by placing an OPTIONS_GHC pragma in the + source file affected. + + + + + options-hugs: string list + + Additional options for Hugs. You can often achieve + the same effect using the extensions + field, which is preferred. + + Options required only by one module may be specified + by placing an OPTIONS_HUGS pragma in the + source file affected. + + + + + options-nhc: string list + + Additional options for nhc98. You can often achieve + the same effect using the extensions + field, which is preferred. + + Options required only by one module may be specified + by placing an OPTIONS_NHC pragma in the + source file affected. + + + + + includes: string list + + A list of header files, typically + containing function prototypes for any foreign imports + used by the package. These will be included in any + compilations via C. + + + + + include-dirs: directory list + + A list of directories to search for + header files. + + + + + c-sources: filename list + + A list of C source files to be compiled + and linked with the Haskell files. + + If you use this field, you should also name the + C files in CFILES pragmas in the + Haskell source files that use them, e.g.: + {-# CFILES dir/file1.c dir/file2.c #-} + These are ignored by the compilers, but needed by Hugs. + + + + + extra-libs: string list + + A list of extra libraries to link with. + + + + + extra-lib-dirs: string list + + A list of directories to search for libraries. + + + + + cc-options: space separated list + + Command-line arguments to be passed to the C compiler. + Since the arguments are compiler-dependent, this field + is more useful with the setup described in + . + + + + + ld-options: space separated list + + Command-line arguments to be passed to the linker. + Since the arguments are compiler-dependent, this field + is more useful with the setup described in + . + + + + + frameworks: space separated list + + On Darwin/MacOS X, a list of + frameworks to link to. Take a look at Apple's developer + documentation to find out what frameworks actually are. + This entry is ignored on all other platforms. + + + +
+
+ +
+ System-dependent parameters + For this you need a slightly extended + Setup.hs: + +import Distribution.Simple +main = defaultMainWithHooks defaultUserHooks + This differs from defaultMain in two + ways: + + + If the package root directory contains a file called + configure, the configure step will + run that. This configure program + may be a script produced by the autoconf + system, or may be hand-written. In this way you can generate + system-dependent header files and the like. (Clearly this + won't work for Windows without MSYS or Cygwin: other ideas + are needed.) + + + + If the file + package.buildinfo + exists after the configuration step, subsequent steps will read + it to obtain additional build information. In particular, this + file may be produced by the configure + script mentioned above. + + + + The build information file should have the following + structure: + +buildinfo + +executable: name +buildinfo + +executable: name +buildinfo + +... + + Each buildinfo may include settings + of any of the fields listed in . + The first one (if present) relates to the library, while each + of the others relate to the named executable. (The names must + match the package description, but you don't have to have entries + for all of them.) + + The buildinfo's you + supply here will be merged with the ones given in the + .cabal file. In this way you can make some + of the above buildinfo fields vary + depending on the build environment. + + + Using autoconf + + (This example is for people familiar with the autoconf + tools.) + + In the X11 package, the file configure.ac + contains: + +AC_INIT([Haskell X11 package], [1.1], [libraries@haskell.org], [X11]) + +# Safety check: Ensure that we are in the correct source directory. +AC_CONFIG_SRCDIR([include/HsXlib.h]) + +# Header file to place defines in +AC_CONFIG_HEADERS([include/HsX11Config.h]) + +# Check for X11 include paths and libraries +AC_PATH_XTRA +AC_TRY_CPP([#include <X11/Xlib.h>],,[no_x=yes]) + +# Build the package if we found X11 stuff +if test "$no_x" = yes +then BUILD_PACKAGE_BOOL=False +else BUILD_PACKAGE_BOOL=True +fi +AC_SUBST([BUILD_PACKAGE_BOOL]) + +AC_CONFIG_FILES([X11.buildinfo]) +AC_OUTPUT + + Then the setup script will run the + configure script, which checks for the + presence of the X11 libraries and substitutes for variables + in the file X11.buildinfo.in: + +buildable: @BUILD_PACKAGE_BOOL@ +cc-options: @X_CFLAGS@ +ld-options: @X_LIBS@ + + This produces a file X11.buildinfo + supplying the parameters needed by later stages: + +buildable: True +cc-options: -I/usr/X11R6/include +ld-options: -L/usr/X11R6/lib + +
+ +
+ More complex packages + + For packages that don't fit the simple schemes described above, + you have a few options: + + + + Customizing the simple build infrastructure using + hooks. See &Simple; for details. + + + + You could delegate all the work to make, + though this is unlikely to be very portable. + + Cabal supports this with a trivial setup library &Make;, + which simply parses the command line arguments and invokes + make. Here Setup.hs + looks like + +import Distribution.Make +main = defaultMain + This assumes a configure script and + a Makefile with a default target that + builds the package, plus targets install, + register, unregister, + clean, dist. + (More detail needed.) + + + + Writing your own setup script conforming to the interface + of , possibly using the Cabal + library for part of the work. Good luck. + + +
+
+ +
+ Building and installing a package + After you've unpacked a Cabal package, you can build it + by moving into the root directory of the package and using the + Setup.hs or Setup.lhs + script there: + + runhaskell Setup.hs + command + option + + where runhaskell might be + runhugs, runghc or + runnhc. The command + argument selects a particular step in the build/install + process. + + + Building and installing a system package + +runhaskell Setup.hs configure --ghc +runhaskell Setup.hs build +runhaskell Setup.hs install + + The first line readies the system to build the tool using GHC; + for example, it checks that GHC exists on the system. The second + line performs the actual building, while the last both copies the + build results to some permanent place and registers the package + with GHC. + + + Building and installing a user package + +runhaskell Setup.hs configure --ghc --prefix=$HOME +runhaskell Setup.hs build +runhaskell Setup.hs install --user + In this case, since the package will be registered in the + user's package database, we also install it under the user's + home directory. + + + + Creating a binary package + When creating binary packages (e.g. for RedHat or + Debian) one needs to create a tarball that can be sent to + another system for unpacking in the root directory: + +runhaskell Setup.hs configure --ghc --prefix=/usr +runhaskell Setup.hs build +runhaskell Setup.hs copy --copy-prefix=/tmp/mypkg/usr +(cd /tmp/mypkg; tar cf - .) | gzip -9 >mypkg.tar.gz + After unpacking on the target system, the package must be + registered: + runhaskell Setup.lhs register + A similar procedure would be needed for creating Windows + installer packages. + + + The following options are understood by all commands: + + + , or + + + List the available options. + + + + + =n + or n + + Set the verbosity level (0-5). The normal level is 1; + a missing n defaults to 3. + + + + + The various commands and the additional options they support + are described below. In the simple build infrastructure, any + other options will be reported as errors, except in the case of + the configure command. + +
+ setup configure + Prepare to build the package. + Typically, this step checks that the target platform is capable + of building the package, and discovers platform-specific features + that are needed during the build. In addition to the general + options, this command recognizes the following + + + + =dir + + Specify the installation prefix + (default: /usr/local on Unix systems). + + + + + or + or + + + Specify which Haskell implementation to use to build + the package. At most one of these flags may be given. + If none is given, the implementation under which the setup + script was compiled or interpreted is used. + + + + + =path + or path + + Specify the path to a particular compiler. If given, + this must match the implementation selected above. The + default is to search for the selected compiler. + + + + + =path + + Specify the path to the package tool. + + + + + =path + + Specify the path to haddock. + + + + + =path + + Specify the path to happy. + + + + + =path + + Specify the path to alex. + + + + + =path + + Specify the path to hsc2hs. + + + + + =path + + Specify the path to cpphs. + + + + + In the simple build infrastructure, an additional option + recognized: + + + =dir or + dir + + Specify the directory into which the package will be + build (default: dist/build. + + + + + If a user-supplied configure script is + run (see ), it is passed the + option and any unrecognized options. + + In the simple build infrastructure, the values supplied via + these options are recorded in a private file for use by later + stages. + +
+ +
+ setup build + Perform any preprocessing or compilation needed to make this + package ready for installation. +
+ +
+ setup haddock + Build the interface documentation for a library using + haddock. +
+ +
+ setup install + Copy the files into the install locations and register the + package with the compiler, i.e. make the modules it contains + available to programs. This command takes the following + options: + + + + + + Register this package in the system-wide database. + (This is the default.) + + + + + + + Register this package in the user's local package + database. + + + +
+ +
+ setup copy + Copy the files without registering them. This command + is mainly of use to those creating binary packages. + This command takes the following option: + + + + =path + + Specify the directory under which to place + installed files. If this is not given, the + argument of the option to + configure is used. + + + +
+ +
+ setup register + Register this package with the compiler, i.e. make the + modules it contains available to programs. Note that the + install command incorporates this action. + The main use of this separate command is in the post-installation + step for a binary package. + + This command takes the following options: + + + + + + Register this package in the system-wide database. + (This is the default.) + + + + + + + Register this package in the user's local package + database. + + + +
+ +
+ setup unregister + Deregister this package with the compiler. +
+ +
+ setup clean + Remove any files created during the configure, build, or + register steps. +
+ +
+ setup sdist + This command is intended to create a system- and + compiler-independent source distribution, but it's not working + yet. + + The plan is to produce a file + package-version.tgz + which can be distributed to package builders. When unpacked, + the commands listed in this section will be available. +
+
+ +
+ Installed packages + + (steal from GHC User's Guide?) + +
+ Package management +
+ +
+ Installed package descriptions +
+
+ +
hunk ./doc/Makefile 1 +TOP = ../.. +include $(TOP)/mk/boilerplate.mk + +XML_DOC = Cabal +INSTALL_XML_DOC = $(XML_DOC) + +include $(TOP)/mk/target.mk hunk ./examples/Makefile 1 +# ----------------------------------------------------------------------------- + +TOP = ../.. +include $(TOP)/mk/boilerplate.mk + +# +# Disable 'make boot' +# +NO_BOOT_TARGET=YES + +WAYS= + +# ----------------------------------------------------------------------------- + +EXAMPLES := $(wildcard *.hs) +BINS := $(EXAMPLES:.hs=$(exeext)) +CLEAN_FILES += $(BINS) + +HC = $(GHC_INPLACE) +MKDEPENDHS = $(GHC_INPLACE) +SRC_HC_OPTS += -package Cabal + +all:: $(BINS) + +$(BINS): %$(exeext): %.hs + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./examples/hapax.hs 1 +-- Simple general-purpose Cabal setup script + +module Main (main) where + +import Distribution.Simple (defaultMainWithHooks, defaultUserHooks) + +main :: IO () +main = defaultMainWithHooks defaultUserHooks hunk ./doc/Cabal.xml 43 - does not work very well, as the executables may not depend on - the library.
+ does not work very well; if the executables depend on the library, + they must explicitly list the modules they use from that + library.
hunk ./doc/Cabal.xml 47 - Internally, the package may consist of much more than a bunch - of Haskell modules: it may also have C source code and header - files, documentation, test cases, auxiliary tools etc. + Internally, the package may consist of much more than a + bunch of Haskell modules: it may also have C source code and + header files, source code meant for preprocessing, documentation, + test cases, auxiliary tools etc. hunk ./doc/Cabal.xml 134 - A package containing executable programs + A package containing a library and executable programs hunk ./doc/Cabal.xml 136 -Name: TestPackage -Version: 0.0 -License: BSD3 -Author: Angela Author -Build-Depends: HUnit +Name: TestPackage +Version: 0.0 +License: BSD3 +Author: Angela Author +Build-Depends: HUnit +Exposed-Modules: A, B, C hunk ./doc/Cabal.xml 145 +Hidden-Modules: A, B hunk ./doc/Cabal.xml 150 +Hidden-Modules: C hunk ./doc/Cabal.xml 656 - Writing your own setup script conforming to the interface - of , possibly using the Cabal - library for part of the work. Good luck. + Writing your own setup script conforming to the + interface of , possibly using the + Cabal library for part of the work. One option is to copy + the source of Distribution.Simple, and alter it for your + needs. Good luck. hunk ./doc/Cabal.xml 971 + ... hunk ./doc/Cabal.xml 976 + ... move ./test/A/C.testSuffix ./test/withHooks/C.testSuffix hunk ./Distribution/ModuleTest.hs 188 - doesFileExist "dist/build/C.o" >>= - assertBool "C.testSuffix did not get compiled to C.o." hunk ./Distribution/ModuleTest.hs 216 - TestLabel "package A: GHC and clean" $ TestCase $ - do system "./setup clean" - doesFileExist "C.hs" >>= - assertEqual "C.hs (a generated file) not cleaned." False, hunk ./Distribution/ModuleTest.hs 226 - assertBool "build did not create the executable: withHooks", + assertBool "build did not create the executable: withHooks" + doesFileExist "dist/build/C.o" >>= + assertBool "C.testSuffix did not get compiled to C.o.", hunk ./Distribution/ModuleTest.hs 237 + TestLabel "package withHooks: GHC and clean" $ TestCase $ + do system "./setup clean" + doesFileExist "C.hs" >>= + assertEqual "C.hs (a generated file) not cleaned." False, hunk ./Distribution/PreProcess.hs 244 -ppTestHandler :: FilePath -- ^InFile - -> FilePath -- ^OutFile - -> Int -- ^verbose - -> IO ExitCode -ppTestHandler inFile outFile verbose - = do when (verbose > 0) $ - putStrLn (inFile++" has been preprocessed as a test to "++outFile) - stuff <- readFile inFile - writeFile outFile ("-- this file has been preprocessed as a test\n\n" ++ stuff) - return ExitSuccess - hunk ./Distribution/PreProcess.hs 266 - , ("testSuffix", \ _ _ -> ppTestHandler) hunk ./Distribution/Simple.hs 67 - ppUnlit, removePreprocessedPackage, preprocessSources) + ppUnlit, removePreprocessedPackage, + preprocessSources, PPSuffixHandler) hunk ./Distribution/Simple.hs 114 + hookedPreProcessors :: [ PPSuffixHandler ], -- ^Add custom preprocessors hunk ./Distribution/Simple.hs 180 - = do case action of + = do let pps = maybe knownSuffixHandlers + (\h -> knownSuffixHandlers ++ hookedPreProcessors h) + hooks + case action of hunk ./Distribution/Simple.hs 203 - build pkg_descr localbuildinfo flags knownSuffixHandlers + build pkg_descr localbuildinfo flags pps hunk ./Distribution/Simple.hs 218 - preprocessSources pkg_descr lbi verbose knownSuffixHandlers + preprocessSources pkg_descr lbi verbose pps hunk ./Distribution/Simple.hs 251 - preprocessSources pkg_descr lbi verbose knownSuffixHandlers + preprocessSources pkg_descr lbi verbose pps hunk ./Distribution/Simple.hs 277 - removePreprocessedPackage pkg_descr currentDir (ppSuffixes knownSuffixHandlers) + removePreprocessedPackage pkg_descr currentDir (ppSuffixes pps) hunk ./Distribution/Simple.hs 305 - sdist srcPref distPref verbose knownSuffixHandlers pkg_descr + sdist srcPref distPref verbose pps pkg_descr hunk ./Distribution/Simple.hs 369 + hookedPreProcessors = [], hunk ./test/A/A.cabal 3 -Hidden-Modules: B.A, C +Hidden-Modules: B.A hunk ./test/withHooks/Setup.description 3 -exposed-modules: Main +exposed-modules: Main, C hunk ./test/withHooks/Setup.lhs 25 +> ppTestHandler :: FilePath -- ^InFile +> -> FilePath -- ^OutFile +> -> Int -- ^verbose +> -> IO ExitCode +> ppTestHandler inFile outFile verbose +> = do when (verbose > 0) $ +> putStrLn (inFile++" has been preprocessed as a test to "++outFile) +> stuff <- readFile inFile +> writeFile outFile ("-- this file has been preprocessed as a test\n\n" ++ stuff) +> return ExitSuccess + hunk ./test/withHooks/Setup.lhs 39 +> hookedPreProcessors= [("testSuffix", \ _ _ -> ppTestHandler)], move ./test/HUnit-1.0/Setup.description ./test/HUnit-1.0/HUnit.cabal move ./test/twoMains/Setup.description ./test/twoMains/test.cabal move ./test/withHooks/Setup.description ./test/withHooks/withHooks.cabal hunk ./doc/Cabal.xml 5 + Distribution.PreProcess'> hunk ./doc/Cabal.xml 634 - hooks. See &Simple; for details. + hooks. See for details. hunk ./doc/Cabal.xml 962 +
+ + +
+ Preprocessors and Customization + + As mentioned in , there + are a number of ways to customize your packages. Preprocessors + like cpp allow you to call out to external programs to alter your + source files. "User Hooks" allow you to add your own + functionality before and after a command is run. (see also + &Simple;) + +
+ PreProcessors + + Some more complex packages may require the use of + preprocessors. There is a set of "built-in" preprocessors in + the module Distribution.PreProcess, including Greencard, C2hs, + Hsc2hs, Alex, Happy, and cpphs. + + The behavior of preprocessors is pretty straightforward. + If your package includes module "P", Cabal will first try to + find P.hs or P.lhs. Failing that, it looks for suffixes + relating to known preprocessors, such as P.cpphs. If it finds + P.cpphs, Cabal will generate P.hs from that and build it. + + If you want to use a preprocessor that's not defined in + Distribution.PreProcess.knownSuffixHandlers, you may define your + own and provide them as hooks (see ). A + "SuffixHandler" has the following type. + +type PPSuffixHandler + = (String, -- The extension + BuildInfo -> LocalBuildInfo -> PreProcessor) + +type PreProcessor = FilePath -- Location of source to preprocess + -> FilePath -- Output filename + -> Int -- verbose + -> IO ExitCode + + + For more information see &PreProcess;. + + You might therefore create your own preprocessor which, + for example prepends a comment to the given source file. This + definition would appear in your Setup.lhs file. + + + A Custom PreProcessor + +ppTestHandler :: FilePath -- ^InFile + -> FilePath -- ^OutFile + -> Int -- ^verbose + -> IO ExitCode +ppTestHandler inFile outFile verbose + = do when (verbose > 0) $ + putStrLn (inFile++" has been preprocessed to "++outFile) + stuff <- readFile inFile + writeFile outFile ("-- preprocessed as a test\n\n" ++ stuff) + return ExitSuccess + + + This preprocessor must then be hooked into your Setup + file with the function defaultMainWithHooks. + See for more details. + +
+
+ Hooks + ... hunk ./Distribution/PreProcess.hs 66 --- |A preprocessor must fulfill this basic interface. It can be an --- external program, or just a function. +-- |The interface to a preprocessor, which may be implemented using an +-- external program, but need not be. The arguments are the name of +-- the input file, the name of the output file and a verbosity level. +-- Here is a simple example that merely prepends a comment to the given +-- source file: +-- +-- > ppTestHandler :: PreProcessor +-- > ppTestHandler inFile outFile verbose +-- > = do when (verbose > 0) $ +-- > putStrLn (inFile++" has been preprocessed to "++outFile) +-- > stuff <- readFile inFile +-- > writeFile outFile ("-- preprocessed as a test\n\n" ++ stuff) +-- > return ExitSuccess +-- hunk ./Distribution/PreProcess.hs 269 +-- |Standard preprocessors: GreenCard, c2hs, hsc2hs, happy, alex and cpphs. hunk ./Distribution/Simple.hs 51 + module Distribution.Version, hunk ./Distribution/Simple.hs 53 - Version(..), VersionRange(..), - orLaterVersion, orEarlierVersion, betweenVersionsInclusive, - Extension(..), Dependency(..), - defaultMain, defaultMainNoRead, defaultMainWithHooks, - UserHooks(..), Args, defaultUserHooks, emptyUserHooks, + module Distribution.Extension, + -- * Simple interface + defaultMain, defaultMainNoRead, + -- * Customization + UserHooks(..), Args, + defaultMainWithHooks, defaultUserHooks, emptyUserHooks, hunk ./Distribution/Simple.hs 85 -import Distribution.Extension (Extension(..)) -import Distribution.Version (Version(..), VersionRange(..), Dependency(..), - orLaterVersion, orEarlierVersion, - betweenVersionsInclusive) +import Distribution.Extension +import Distribution.Version hunk ./Distribution/Simple.hs 110 +-- | Hooks allow authors to add specific functionality before and after +-- a command is run, and also to specify additional preprocessors. hunk ./Distribution/Simple.hs 116 - hookedPreProcessors :: [ PPSuffixHandler ], -- ^Add custom preprocessors + hookedPreProcessors :: [ PPSuffixHandler ], + -- ^Custom preprocessors in addition to 'knownSuffixHandlers'. hunk ./Distribution/Simple.hs 148 --- |Reads the package description file using IO. +-- |A simple implementation of @main@ for a Cabal setup script. +-- It reads the package description file using IO, and performs the +-- action specified on the command line. hunk ./Distribution/Simple.hs 158 +-- | A customizable version of 'defaultMain'. hunk ./Distribution/Simple.hs 171 --- |Accept description as input rather than using IO to read it. +-- |Like 'defaultMain', but accepts the package description as input +-- rather than using IO to read it. hunk ./doc/Cabal.xml 5 - Distribution.PreProcess'> hunk ./doc/Cabal.xml 43 - does not work very well; if the executables depend on the library, - they must explicitly list the modules they use from that - library. + does not work very well; if the executables depend on the library, + they must explicitly list all the modules they directly or + indirectly import from that library. hunk ./doc/Cabal.xml 80 - Suppose you have a directory hierarchy containing the files - that make up your package. You will need to add two more files - to the root directory of the package: + + Suppose you have a directory hierarchy containing the source + files that make up your package. You will need to add two more + files to the root directory of the package: hunk ./doc/Cabal.xml 135 + A package containing executable programs + +Name: TestPackage +Version: 0.0 +License: BSD3 +Author: Angela Author +Build-Depends: HUnit + +Executable: program1 +Main-Is: Main.hs +Hs-Source-Dir: prog1 + +Executable: program2 +Main-Is: Main.hs +Hs-Source-Dir: prog2 +Hidden-Modules: Utils + with Setup.hs the same as above. + + + hunk ./doc/Cabal.xml 166 -Hidden-Modules: A, B hunk ./doc/Cabal.xml 167 +Hidden-Modules: A, B hunk ./doc/Cabal.xml 171 -Hidden-Modules: C hunk ./doc/Cabal.xml 172 -Hidden-Modules: Utils +Hidden-Modules: A, C, Utils hunk ./doc/Cabal.xml 338 - hunk ./doc/Cabal.xml 339 + + + Module names may correspond to Haskell source files, i.e. + with names ending in .hs + or .lhs, or to inputs for + various Haskell preprocessors. The simple build infrastructure + understands + .gc (GreenCard), + .chs (c2hs), + .hsc (hsc2hs), + .y and + .ly (happy), + .x (alex) + and + .cpphs (cpphs). + In such cases the appropriate preprocessor will be run + automatically as required. + + hunk ./doc/Cabal.xml 360 + hunk ./doc/Cabal.xml 363 + hunk ./doc/Cabal.xml 367 + hunk ./doc/Cabal.xml 673 - Customizing the simple build infrastructure using - hooks. See for details. + You can customize the simple build infrastructure using + hooks. These allow you to perform + additional actions before and after each command is run, + and also to specify additional preprocessors. See &Simple; + for the details. hunk ./doc/Cabal.xml 682 - though this is unlikely to be very portable. - - Cabal supports this with a trivial setup library &Make;, + though this is unlikely to be very portable. + Cabal supports this with a trivial setup library &Make;, hunk ./doc/Cabal.xml 699 - Writing your own setup script conforming to the - interface of , possibly using the - Cabal library for part of the work. One option is to copy - the source of Distribution.Simple, and alter it for your - needs. Good luck. + You can write your own setup script conforming to the + interface of , possibly using the + Cabal library for part of the work. One option is to copy the + source of Distribution.Simple, and alter it for your needs. + Good luck. hunk ./doc/Cabal.xml 1004 -
-
- -
- Preprocessors and Customization - - As mentioned in , there - are a number of ways to customize your packages. Preprocessors - like cpp allow you to call out to external programs to alter your - source files. "User Hooks" allow you to add your own - functionality before and after a command is run. (see also - &Simple;) - -
- PreProcessors - - Some more complex packages may require the use of - preprocessors. There is a set of "built-in" preprocessors in - the module Distribution.PreProcess, including Greencard, C2hs, - Hsc2hs, Alex, Happy, and cpphs. - - The behavior of preprocessors is pretty straightforward. - If your package includes module "P", Cabal will first try to - find P.hs or P.lhs. Failing that, it looks for suffixes - relating to known preprocessors, such as P.cpphs. If it finds - P.cpphs, Cabal will generate P.hs from that and build it. - - If you want to use a preprocessor that's not defined in - Distribution.PreProcess.knownSuffixHandlers, you may define your - own and provide them as hooks (see ). A - "SuffixHandler" has the following type. - -type PPSuffixHandler - = (String, -- The extension - BuildInfo -> LocalBuildInfo -> PreProcessor) - -type PreProcessor = FilePath -- Location of source to preprocess - -> FilePath -- Output filename - -> Int -- verbose - -> IO ExitCode - - - For more information see &PreProcess;. - - You might therefore create your own preprocessor which, - for example prepends a comment to the given source file. This - definition would appear in your Setup.lhs file. - - - A Custom PreProcessor - -ppTestHandler :: FilePath -- ^InFile - -> FilePath -- ^OutFile - -> Int -- ^verbose - -> IO ExitCode -ppTestHandler inFile outFile verbose - = do when (verbose > 0) $ - putStrLn (inFile++" has been preprocessed to "++outFile) - stuff <- readFile inFile - writeFile outFile ("-- preprocessed as a test\n\n" ++ stuff) - return ExitSuccess - - - This preprocessor must then be hooked into your Setup - file with the function defaultMainWithHooks. - See for more details. - -
-
- Hooks - ... hunk ./Cabal.cabal 9 +Synopsis: A framework for packaging Haskell software hunk ./Cabal.cabal 41 -Hidden-Modules: +Other-Modules: hunk ./Distribution/InstalledPackageInfo.hs 59 - StanzaField(..), singleStanza, ParseResult, - simpleField, listField, licenseField, + StanzaField(..), singleStanza, ParseResult(..), + simpleField, listField, parseLicenseQ, hunk ./Distribution/InstalledPackageInfo.hs 191 - , licenseField "license" False - license (\l pkg -> pkg{license=l}) - , licenseField "license-file" True + , simpleField "license" + (text . show) parseLicenseQ hunk ./Distribution/License.hs 66 - | {- ... | -} OtherLicense FilePath - -- ^Use another license by listing the relative path to your license file. + | {- ... | -} OtherLicense -- ^Some other license. hunk ./Distribution/PackageDescription.hs 114 + licenseFile :: FilePath, hunk ./Distribution/PackageDescription.hs 122 + synopsis :: String, hunk ./Distribution/PackageDescription.hs 143 + licenseFile = "", hunk ./Distribution/PackageDescription.hs 152 + synopsis = "", hunk ./Distribution/PackageDescription.hs 163 - ++ (maybe [] (hiddenModules . libBuildInfo) lib) + ++ (maybe [] (otherModules . libBuildInfo) lib) hunk ./Distribution/PackageDescription.hs 168 - = concatMap (hiddenModules . buildInfo) execs + = concatMap (otherModules . buildInfo) execs hunk ./Distribution/PackageDescription.hs 182 - hiddenModules :: [String], + otherModules :: [String], hunk ./Distribution/PackageDescription.hs 200 - hiddenModules = [], + otherModules = [], hunk ./Distribution/PackageDescription.hs 278 - hiddenModules = combine hiddenModules, + otherModules = combine otherModules, hunk ./Distribution/PackageDescription.hs 314 - , licenseField "license" False + , simpleField "license" + (text . show) parseLicenseQ hunk ./Distribution/PackageDescription.hs 317 - , licenseField "license-file" True - license (\l pkg -> pkg{license=l}) + , simpleField "license-file" + showFilePath parseFilePathQ + licenseFile (\l pkg -> pkg{licenseFile=l}) hunk ./Distribution/PackageDescription.hs 338 + , simpleField "synopsis" + showFreeText (munch (const True)) + synopsis (\val pkg -> pkg{synopsis=val}) hunk ./Distribution/PackageDescription.hs 406 - , listField "hidden-modules" + , listField "other-modules" hunk ./Distribution/PackageDescription.hs 408 - hiddenModules (\val binfo -> binfo{hiddenModules=val}) + otherModules (\val binfo -> binfo{otherModules=val}) hunk ./Distribution/PackageDescription.hs 567 - "No non-hidden modules in this package." + "No exposed modules or executables in this package." hunk ./Distribution/PackageDescription.hs 606 - "Description: a nice package!", + "Synopsis: a nice package!", + "Description: a really nice package!", hunk ./Distribution/PackageDescription.hs 616 - "Hidden-Modules: Distribution.Package, Distribution.Version,", + "Other-Modules: Distribution.Package, Distribution.Version,", hunk ./Distribution/PackageDescription.hs 632 - "Hidden-Modules: Foo1, Util, Main", + "Other-Modules: Foo1, Util, Main", hunk ./Distribution/PackageDescription.hs 646 - description = "a nice package!", + synopsis = "a nice package!", + description = "a really nice package!", hunk ./Distribution/PackageDescription.hs 666 - hiddenModules = ["Distribution.Package", - "Distribution.Version", - "Distribution.Simple.GHCPackageConfig"], + otherModules = ["Distribution.Package", + "Distribution.Version", + "Distribution.Simple.GHCPackageConfig"], hunk ./Distribution/PackageDescription.hs 680 - hiddenModules=["Foo1","Util","Main"], + otherModules=["Foo1","Util","Main"], hunk ./Distribution/ParseUtils.hs 55 - simpleField, listField, licenseField, optsField, + simpleField, listField, optsField, hunk ./Distribution/ParseUtils.hs 136 - -licenseField :: String -> Bool -> (b -> License) -> (License -> b -> b) -> StanzaField b -licenseField name flag get set = StanzaField name - (\st -> case get st of - OtherLicense path | flag -> text name <> colon <+> showFilePath path - | otherwise -> empty - license' | not flag -> text name <> colon <+> text (show license') - | otherwise -> empty) - (\st -> case get st of - OtherLicense path | flag -> showFilePath path - | otherwise -> empty - license' | not flag -> text (show license') - | otherwise -> empty) - (\lineNo val st -> - if flag - then do - path <- runP lineNo name parseFilePathQ val - return (set (OtherLicense path) st) - else do - x <- runP lineNo name parseLicenseQ val - return (set x st)) hunk ./Distribution/PreProcess.hs 114 - modu <- hiddenModules bi] -- FIX: output errors? + modu <- otherModules bi] -- FIX: output errors? hunk ./Distribution/PreProcess.hs 161 - removePreprocessed (r `joinFileName` hsSourceDir bi) (hiddenModules bi) suff) + removePreprocessed (r `joinFileName` hsSourceDir bi) (otherModules bi) suff) hunk ./Distribution/Setup.hs 45 + CopyFlags, InstallFlags, RegisterFlags, hunk ./Distribution/Setup.hs 104 +-- | Flags to @configure@ command hunk ./Distribution/Setup.hs 364 -parseCopyArgs :: (Maybe FilePath,Int) -> [String] -> [OptDescr a] -> - IO ((Maybe FilePath,Int), [a], [String]) +-- | Flags to @copy@: (Copy Location, verbose) +type CopyFlags = (Maybe FilePath,Int) + +parseCopyArgs :: CopyFlags -> [String] -> [OptDescr a] -> + IO (CopyFlags, [a], [String]) hunk ./Distribution/Setup.hs 387 -parseInstallArgs :: (Bool,Int) -> [String] -> [OptDescr a] -> - IO ((Bool,Int), [a], [String]) +-- | Flags to @install@: (user package, verbose) +type InstallFlags = (Bool,Int) + +parseInstallArgs :: InstallFlags -> [String] -> [OptDescr a] -> + IO (InstallFlags, [a], [String]) hunk ./Distribution/Setup.hs 442 -parseRegisterArgs :: (Bool,Int) -> [String] -> [OptDescr a] -> - IO ((Bool,Int), [a], [String]) +-- | Flags to @register@: (user package, verbose) +type RegisterFlags = (Bool,Int) + +parseRegisterArgs :: RegisterFlags -> [String] -> [OptDescr a] -> + IO (RegisterFlags, [a], [String]) hunk ./Distribution/Simple/Build.hs 210 - let exeMods = hiddenModules bi + let exeMods = otherModules bi hunk ./Distribution/Simple/Register.hs 183 - IPI.hiddenModules = hiddenModules bi, + IPI.hiddenModules = otherModules bi, hunk ./Distribution/Simple/SrcDist.hs 101 -prepareDir verbose inPref pps mods BuildInfo{hsSourceDir=srcDir, hiddenModules=mods'} +prepareDir verbose inPref pps mods BuildInfo{hsSourceDir=srcDir, otherModules=mods'} hunk ./Distribution/Simple/SrcDist.hs 103 - let suff = ppSuffixes pps - smartCopySources verbose srcDir pref (mods++mods') (suff ++ ["hs", "lhs"]) - removePreprocessed pref mods (suff ++ ["hs", "lhs"]) + let suff = ppSuffixes pps ++ ["hs", "lhs"] + smartCopySources verbose srcDir pref (mods++mods') suff + removePreprocessed pref mods suff hunk ./Distribution/Simple.hs 114 - runTests :: Args -> Bool -> IO ExitCode, -- ^Used for @.\/setup test@ + runTests :: Args -> Bool -> LocalBuildInfo -> IO ExitCode, -- ^Used for @.\/setup test@ hunk ./Distribution/Simple.hs 120 - postConf :: Args -> LocalBuildInfo -> IO ExitCode, + postConf :: Args -> ConfigFlags -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 123 - postBuild :: Args -> LocalBuildInfo -> IO ExitCode, + postBuild :: Args -> Int -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 126 - postClean :: Args -> LocalBuildInfo -> IO ExitCode, + postClean :: Args -> Int -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 128 - preCopy :: Args - -> (Maybe FilePath,Int) -- Copy Location,verbose - -> IO HookedBuildInfo, - postCopy :: Args -> LocalBuildInfo -> IO ExitCode, + preCopy :: Args -> CopyFlags -> IO HookedBuildInfo, + postCopy :: Args -> CopyFlags -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 131 - preInst :: Args -> (Bool,Int) -> IO HookedBuildInfo, - postInst :: Args -> LocalBuildInfo -> IO ExitCode, -- ^guaranteed to be run on target + preInst :: Args -> InstallFlags -> IO HookedBuildInfo, + postInst :: Args -> InstallFlags -> LocalBuildInfo -> IO ExitCode, -- ^guaranteed to be run on target hunk ./Distribution/Simple.hs 135 - postSDist :: Args -> LocalBuildInfo -> IO ExitCode, + postSDist :: Args -> Int -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 137 - preReg :: Args - -> (Bool,Int) -- Install in the user's database?; verbose - -> IO HookedBuildInfo, - postReg :: Args -> LocalBuildInfo -> IO ExitCode, + preReg :: Args -> RegisterFlags -> IO HookedBuildInfo, + postReg :: Args -> RegisterFlags -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 141 - postUnreg :: Args -> LocalBuildInfo -> IO ExitCode + postUnreg :: Args -> Int -> LocalBuildInfo -> IO ExitCode hunk ./Distribution/Simple.hs 150 - pkg_descr <- defaultPackageDesc >>= readPackageDescription + pkg_descr_file <- defaultPackageDesc + pkg_descr <- readPackageDescription pkg_descr_file hunk ./Distribution/Simple.hs 156 -defaultMainWithHooks :: UserHooks - -> IO () +defaultMainWithHooks :: UserHooks -> IO () hunk ./Distribution/Simple.hs 161 - case maybeDesc of - Just pkg_descr -> defaultMainWorker pkg_descr action args (Just hooks) >> return () - Nothing -> do pkg_descr <- defaultPackageDesc >>= readPackageDescription - defaultMainWorker pkg_descr action args (Just hooks) - return () + pkg_descr <- maybe (defaultPackageDesc >>= readPackageDescription) + return maybeDesc + defaultMainWorker pkg_descr action args (Just hooks) + return () hunk ./Distribution/Simple.hs 190 - let buildInfos = - map libBuildInfo (maybeToList (library pkg_descr)) ++ - map buildInfo (executables pkg_descr) - when (not (any buildable buildInfos)) $ do - let name = showPackageId (package pkg_descr) - die ("Package " ++ name ++ " can't be built on this system.") + sanityCheckPackage pkg_descr hunk ./Distribution/Simple.hs 193 - sanityCheckPackage pkg_descr - postHook postConf args localbuildinfo + postHook postConf args flags localbuildinfo hunk ./Distribution/Simple.hs 198 + let buildInfos = + map libBuildInfo (maybeToList (library pkg_descr)) ++ + map buildInfo (executables pkg_descr) + when (not (any buildable buildInfos)) $ do + let name = showPackageId (package pkg_descr) + die ("Package " ++ name ++ " can't be built on this system.") hunk ./Distribution/Simple.hs 207 - postHook postBuild args localbuildinfo + postHook postBuild args flags localbuildinfo hunk ./Distribution/Simple.hs 252 - let mods = exposedModules lib ++ hiddenModules (libBuildInfo lib) + let mods = exposedModules lib ++ otherModules (libBuildInfo lib) hunk ./Distribution/Simple.hs 280 - postHook postClean args localbuildinfo + postHook postClean args verbose localbuildinfo hunk ./Distribution/Simple.hs 287 - postHook postCopy args localbuildinfo + postHook postCopy args flags localbuildinfo hunk ./Distribution/Simple.hs 299 - postHook postInst args localbuildinfo + postHook postInst args flags localbuildinfo hunk ./Distribution/Simple.hs 308 - postHook postSDist args localbuildinfo + postHook postSDist args verbose localbuildinfo hunk ./Distribution/Simple.hs 315 - postHook postReg args localbuildinfo + postHook postReg args flags localbuildinfo hunk ./Distribution/Simple.hs 322 - postHook postUnreg args localbuildinfo + postHook postUnreg args flags localbuildinfo hunk ./Distribution/Simple.hs 335 - postHook f a localbuildinfo + postHook f args flags localbuildinfo hunk ./Distribution/Simple.hs 338 - Just h -> f h a localbuildinfo + Just h -> f h args flags localbuildinfo hunk ./Distribution/Simple.hs 389 - where rn _ _ = return emptyHookedBuildInfo - res _ _ = return ExitSuccess + where rn _ _ = return emptyHookedBuildInfo + res _ _ _ = return ExitSuccess hunk ./Distribution/Simple.hs 394 --- * on non-Windows systems, 'preConf' runs @.\/configure@, if present. +-- * on non-Windows systems, 'postConf' runs @.\/configure@, if present. hunk ./Distribution/Simple.hs 396 --- * all pre-hooks read additional build information from +-- * all pre-hooks except 'preConf' read additional build information from hunk ./Distribution/Simple.hs 402 --- FIXME: do something sensible for windows, or do nothing in preConf. +-- FIXME: do something sensible for windows, or do nothing in postConf. hunk ./Distribution/Simple.hs 408 - preConf = defaultPreConf, + postConf = defaultPostConf, hunk ./Distribution/Simple.hs 417 - where readHook a _ = no_extra_flags a >> readExistingHookedBuildInfo - defaultPreConf :: [String] -> ConfigFlags -> IO HookedBuildInfo - defaultPreConf args flags + where defaultPostConf :: Args -> ConfigFlags -> LocalBuildInfo -> IO ExitCode + defaultPostConf args flags lbi hunk ./Distribution/Simple.hs 428 - readExistingHookedBuildInfo - readExistingHookedBuildInfo - = do maybe_infoFile <- defaultHookedPackageDesc - case maybe_infoFile of - Nothing -> return emptyHookedBuildInfo - Just infoFile -> readHookedBuildInfo infoFile + return ExitSuccess + + readHook :: Args -> a -> IO HookedBuildInfo + readHook a _ = do + no_extra_flags a + maybe_infoFile <- defaultHookedPackageDesc + case maybe_infoFile of + Nothing -> return emptyHookedBuildInfo + Just infoFile -> readHookedBuildInfo infoFile hunk ./TODO 3 -> > Is it sufficient to put License: BSD3 in the package description? -> > Or should License-File be mandatory, and License just an optional -> > hint? +* I guess we should take the "OtherLicense" + option out of license type, add a licenseFile field, and make either + /or required. + +* make preprocessors in hooks override the built-in ones + +* Fix up sdist! +* Write tests for make and hugs hunk ./doc/Cabal.xml 121 -Description: - HUnit is a unit testing framework for Haskell, inspired by the - JUnit tool for Java, see: <http://www.junit.org>. +Synopsis: Unit testing framework for Haskell hunk ./doc/Cabal.xml 293 + synopsis: freeform text + + A very short description of the package, + for use in a table of packages. This is your headline, + so keep it short (one line) but as informative as possible. + Save space by not including the package name or saying + it's written in Haskell. + + + + hunk ./doc/Cabal.xml 415 - hidden-modules: module list + other-modules: module list hunk ./doc/Cabal.xml 732 - argument selects a particular step in the build/install - process. + argument selects a particular step in the build/install process. + You can also get a summary of the command syntax with + + runhaskell Setup.hs + hunk ./doc/Cabal.xml 785 - List the available options. + List the available options for the command. hunk ./Distribution/PackageDescription.hs 601 + "License-File: foo", hunk ./Distribution/PackageDescription.hs 643 + licenseFile = "foo", hunk ./Distribution/Simple.hs 84 -import Distribution.License -import Distribution.Extension -import Distribution.Version - hunk ./Distribution/Simple.hs 90 +import Distribution.License hunk ./Distribution/Simple.hs 103 +import Distribution.Extension hiding (hunitTests) +import Distribution.Version hiding (hunitTests) +#else +import Distribution.Extension +import Distribution.Version hunk ./Distribution/Simple.hs 109 + hunk ./test/A/A.cabal 3 -Hidden-Modules: B.A +Other-Modules: B.A hunk ./test/A/A.cabal 9 -Hidden-Modules: A, MainA +Other-Modules: A, MainA hunk ./test/A/A.cabal 14 -Hidden-Modules: B.A, B.MainB +Other-Modules: B.A, B.MainB hunk ./test/HUnit-1.0/HUnit.cabal 5 -Hidden-Modules: HUnitText, HUnitLang, HUnitTestBase, Terminal, HUnitBase +Other-Modules: HUnitText, HUnitLang, HUnitTestBase, Terminal, HUnitBase hunk ./test/depOnLib/test.cabal 7 -Hidden-Modules: Main, A +Other-Modules: Main, A hunk ./test/twoMains/test.cabal 5 -Hidden-Modules: MainA +Other-Modules: MainA hunk ./test/twoMains/test.cabal 9 -Hidden-Modules: MainB +Other-Modules: MainB hunk ./test/wash2hs/wash2hs.cabal 8 -hidden-Modules: WASHClean, WASHExpression, WASHGenerator, WASHOut, +Other-Modules: WASHClean, WASHExpression, WASHGenerator, WASHOut, hunk ./test/withHooks/Setup.lhs 39 +> postConf=(\_ _ _-> return ExitSuccess), hunk ./test/withHooks/Setup.lhs 41 -> postClean=(\_ _ -> removeFile "Setup.buildinfo" >> return ExitSuccess) +> postClean=(\_ _ _ -> removeFile "Setup.buildinfo" >> return ExitSuccess) hunk ./test/withHooks/withHooks.cabal 6 -Hidden-Modules: Main +Other-Modules: Main hunk ./Distribution/ModuleTest.hs 228 - assertBool "C.testSuffix did not get compiled to C.o.", + assertBool "C.testSuffix did not get compiled to C.o." + doesFileExist "dist/build/D.o" >>= + assertBool "D.gc did not get compiled to D.o this is an overriding test", hunk ./Distribution/Simple.hs 92 -import Data.List ( intersperse ) +import Data.List ( intersperse, unionBy ) hunk ./Distribution/Simple.hs 186 - (\h -> knownSuffixHandlers ++ hookedPreProcessors h) + (\h -> overridesPP (hookedPreProcessors h) knownSuffixHandlers) hunk ./Distribution/Simple.hs 192 + putStrLn $ "Suffix Handlers are: " ++ concatMap (show . fst) pps hunk ./Distribution/Simple.hs 357 - + overridesPP :: [PPSuffixHandler] -> [PPSuffixHandler] -> [PPSuffixHandler] + overridesPP = unionBy (\x y -> fst x == fst y) +-- (filter (\x -> notElem x overriders) overridden) ++ overriders + hunk ./TODO 3 -* I guess we should take the "OtherLicense" - option out of license type, add a licenseFile field, and make either - /or required. - hunk ./test/withHooks/Setup.lhs 25 -> ppTestHandler :: FilePath -- ^InFile +> ppTestHandler :: a -> b -> FilePath -- ^InFile hunk ./test/withHooks/Setup.lhs 29 -> ppTestHandler inFile outFile verbose +> ppTestHandler _ _ inFile outFile verbose hunk ./test/withHooks/Setup.lhs 36 + +Override "gc" to test the overriding mechanism. + hunk ./test/withHooks/Setup.lhs 43 -> hookedPreProcessors= [("testSuffix", \ _ _ -> ppTestHandler)], +> hookedPreProcessors= [("testSuffix", ppTestHandler), ("gc", ppTestHandler)], hunk ./test/withHooks/withHooks.cabal 3 -exposed-modules: Main, C +exposed-modules: Main, C, D hunk ./Distribution/Compat/Directory.hs 2 - findExecutable, copyFile, getHomeDirectory, createDirectoryIfMissing, removeDirectoryRecursive + findExecutable, copyFile, getHomeDirectory, createDirectoryIfMissing, + removeDirectoryRecursive, module System.Directory hunk ./Distribution/PackageDescription.hs 48 + basicStanzaFields, hunk ./Distribution/Simple/SrcDist.hs 56 -import Distribution.Simple.Utils(smartCopySources, die) +import Distribution.Simple.Utils(smartCopySources, die, findPackageDesc) hunk ./Distribution/Simple/SrcDist.hs 61 -import System.Directory (doesDirectoryExist) +import Distribution.Compat.Directory (doesDirectoryExist, getCurrentDirectory, copyFile) hunk ./Distribution/Simple/SrcDist.hs 88 + descFile <- getCurrentDirectory >>= findPackageDesc + copyFile descFile (joinFileName targetDir descFile) hunk ./Distribution/Simple.hs 120 - -- ^Custom preprocessors in addition to 'knownSuffixHandlers'. + -- ^Custom preprocessors in addition to and overriding 'knownSuffixHandlers'. hunk ./TODO 3 -* make preprocessors in hooks override the built-in ones - hunk ./test/Tests.mk 1 -setup: +setup: Setup.lhs hunk ./Distribution/PackageDescription.hs 58 + withExe, hunk ./Distribution/PackageDescription.hs 224 + +-- | Perform the action on each buildable 'Executable' in the package +-- description. +withExe :: PackageDescription -> (Executable -> IO a) -> IO () +withExe pkg_descr f = + sequence_ [f exe | exe <- executables pkg_descr, buildable (buildInfo exe)] hunk ./Distribution/PreProcess.hs 50 - BuildInfo(..), Executable(..), + BuildInfo(..), Executable(..), withExe, hunk ./Distribution/PreProcess.hs 108 - foreachExe pkg_descr $ \ theExe -> do + withExe pkg_descr $ \ theExe -> do hunk ./Distribution/PreProcess.hs 159 - foreachExe pkg_descr (\theExe -> do + withExe pkg_descr (\theExe -> do hunk ./Distribution/PreProcess.hs 177 - --- | Perform the action on each 'Executable' in the package description. -foreachExe :: PackageDescription - -> (Executable -> IO a) - -> IO () -foreachExe pkg_descr action = mapM_ action (executables pkg_descr) hunk ./Distribution/Simple/Build.hs 53 - setupMessage, withLib, Executable(..), + setupMessage, withLib, + Executable(..), withExe, hunk ./Distribution/Simple/Build.hs 166 - sequence_ [ do createDirectoryIfMissing True (pref `joinFileName` (hsSourceDir exeBi)) + withExe pkg_descr $ \ (Executable exeName' modPath exeBi) -> do + createDirectoryIfMissing True (pref `joinFileName` (hsSourceDir exeBi)) hunk ./Distribution/Simple/Build.hs 184 - | Executable exeName' modPath exeBi <- executables pkg_descr] hunk ./Distribution/Simple/Build.hs 206 - mapM_ (compileExecutable (pref `joinFileName` "programs")) - (executables pkg_descr) + withExe pkg_descr $ compileExecutable (pref `joinFileName` "programs") hunk ./Distribution/Simple/Install.hs 65 - setupMessage, hasLibs, withLib, libModules, exeModules, + setupMessage, hasLibs, withLib, libModules, withExe, exeModules, hunk ./Distribution/Simple/Install.hs 110 - sequence_ [copyFileVerbose verbose (buildPref `joinFileName` (hsSourceDir b) `joinFileName` e) (pref `joinFileName` e) - | Executable e _ b <- executables pkg_descr] + withExe pkg_descr $ \ (Executable e _ b) -> + copyFileVerbose verbose (buildPref `joinFileName` (hsSourceDir b) `joinFileName` e) (pref `joinFileName` e) hunk ./Distribution/Simple/Install.hs 152 - flip mapM_ (executables pkg_descr) $ \ exe -> do + withExe pkg_descr $ \ exe -> do adddir ./test/HSQL adddir ./test/HSQL/NSIS adddir ./test/HSQL/RPM adddir ./test/HSQL/build adddir ./test/HSQL/build/Database adddir ./test/HSQL/build/Database/HSQL adddir ./test/HSQL/doc adddir ./test/HSQL/examples adddir ./test/HSQL/mingw32lib adddir ./test/HSQL/src adddir ./test/HSQL/src/HSQL addfile ./test/HSQL/HSQL.cabal addfile ./test/HSQL/LICENSE addfile ./test/HSQL/Makefile addfile ./test/HSQL/NSIS/hsql_installer.nsi addfile ./test/HSQL/RPM/HSQL.spec addfile ./test/HSQL/Setup.lhs addfile ./test/HSQL/build/Database/HSQL.hs.tmp addfile ./test/HSQL/build/Database/HSQL/Types.hs.tmp addfile ./test/HSQL/config.guess addfile ./test/HSQL/config.mk.in addfile ./test/HSQL/config.sub addfile ./test/HSQL/configure addfile ./test/HSQL/configure.ac addfile ./test/HSQL/doc/Database.HSQL.MySQL.html addfile ./test/HSQL/doc/Database.HSQL.ODBC.html addfile ./test/HSQL/doc/Database.HSQL.PostgreSQL.html addfile ./test/HSQL/doc/Database.HSQL.SQLite.html addfile ./test/HSQL/doc/Database.HSQL.html addfile ./test/HSQL/doc/doc-index-B.html addfile ./test/HSQL/doc/doc-index-C.html addfile ./test/HSQL/doc/doc-index-D.html addfile ./test/HSQL/doc/doc-index-E.html addfile ./test/HSQL/doc/doc-index-F.html addfile ./test/HSQL/doc/doc-index-G.html addfile ./test/HSQL/doc/doc-index-H.html addfile ./test/HSQL/doc/doc-index-I.html addfile ./test/HSQL/doc/doc-index-L.html addfile ./test/HSQL/doc/doc-index-O.html addfile ./test/HSQL/doc/doc-index-P.html addfile ./test/HSQL/doc/doc-index-Q.html addfile ./test/HSQL/doc/doc-index-S.html addfile ./test/HSQL/doc/doc-index-T.html addfile ./test/HSQL/doc/doc-index.html addfile ./test/HSQL/doc/haddock.css addfile ./test/HSQL/doc/haskell_icon.gif addfile ./test/HSQL/doc/index.html addfile ./test/HSQL/examples/Main.hs addfile ./test/HSQL/examples/Queries.hs addfile ./test/HSQL/hsql.pkg.in addfile ./test/HSQL/install-sh addfile ./test/HSQL/mingw32lib/Makefile addfile ./test/HSQL/mingw32lib/libmysql.def addfile ./test/HSQL/mingw32lib/libpqdll.def addfile ./test/HSQL/mingw32lib/sqlite.def addfile ./test/HSQL/out.build addfile ./test/HSQL/setup addfile ./test/HSQL/src/HSQL.hsc addfile ./test/HSQL/src/HSQL/HsMySQL.h addfile ./test/HSQL/src/HSQL/HsODBC.c addfile ./test/HSQL/src/HSQL/HsODBC.h addfile ./test/HSQL/src/HSQL/MySQL.hsc addfile ./test/HSQL/src/HSQL/ODBC.hsc addfile ./test/HSQL/src/HSQL/PostgreSQL.hsc addfile ./test/HSQL/src/HSQL/SQLite.hsc addfile ./test/HSQL/src/HSQL/Types.hs hunk ./Distribution/Make.hs 61 - +import Distribution.GetOpt(OptDescr) +import Control.Monad (unless) hunk ./Distribution/Make.hs 64 -import System.IO (hPutStr, stderr) +import System.IO (hPutStrLn, stderr) hunk ./Distribution/Make.hs 97 - Just p -> ["--with-hc=" ++ p] + Just p -> ["--prefix=" ++ p] hunk ./Distribution/Make.hs 104 -exec :: String -> IO a -exec cmd = system cmd >>= exitWith +exec :: String -> IO ExitCode +exec cmd = (putStrLn $ "-=-= Cabal executing: " ++ cmd ++ "=-=-") + >> system cmd hunk ./Distribution/Make.hs 119 - exec $ "./configure " ++ configureArgs flags + retVal <- exec $ "./configure " ++ configureArgs flags + if (retVal == ExitSuccess) + then putStrLn "Configure Succeeded." + else putStrLn "Configure failed." + exitWith retVal hunk ./Distribution/Make.hs 128 - exec "make" + retVal <- exec "make" + if (retVal == ExitSuccess) + then putStrLn "Build Succeeded." + else putStrLn "Build failed." + exitWith retVal hunk ./Distribution/Make.hs 137 - exec "make clean" + retVal <- exec "make clean" + if (retVal == ExitSuccess) + then putStrLn "Clean Succeeded." + else putStrLn "Clean failed." + exitWith retVal hunk ./Distribution/Make.hs 153 - exec "make register" + retVal <- exec "make register" + if (retVal == ExitSuccess) + then putStrLn "Install Succeeded." + else putStrLn "Install failed." + exitWith retVal hunk ./Distribution/Make.hs 162 - exec "make dist" + retVal <- exec "make dist" + if (retVal == ExitSuccess) + then putStrLn "Sdist Succeeded." + else putStrLn "Sdist failed." + exitWith retVal hunk ./Distribution/Make.hs 171 - exec "make register" + retVal <- exec "make register" + if (retVal == ExitSuccess) + then putStrLn "Register Succeeded." + else putStrLn "Register failed." + exitWith retVal hunk ./Distribution/Make.hs 180 - exec "make unregister" + retVal <- exec "make unregister" + if (retVal == ExitSuccess) + then putStrLn "Unregister Succeeded." + else putStrLn "Unregister failed." + exitWith retVal + cmd -> do + error $ "Simple Cabal Makefile interface doesn't support command: " ++ (show cmd) hunk ./Distribution/Make.hs 191 - do hPutStr stderr $ "Unrecognised flags: " ++ concat (intersperse "," (extra_flags)) + do hPutStrLn stderr $ "Unrecognised flags: " ++ concat (intersperse "," (extra_flags)) hunk ./test/A/A.cabal 3 +synopsis: this package is really awesome. hunk ./test/HSQL/HSQL.cabal 1 +name: hsql +license: BSD3 +version: 1.4 +synopsis: interface to databases +description: a simple library, which provides an interface to multiple databases. MySQL, PostgreSQL, ODBC and SQLite (new) are currently supported. hunk ./test/HSQL/LICENSE 1 +Copyright (c) 2003, Krasimir Angelov +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + + * Neither the name of the HToolkit nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. hunk ./test/HSQL/Makefile 1 +include config.mk + +COMPILERS = +ifneq "$(GHC)" "" +COMPILERS += ghc +endif +ifneq "$(HUGS)" "" +COMPILERS += hugs +endif + +#-------------------------------------------------------------------------- +# DIRECTORIES +#-------------------------------------------------------------------------- + +# library and doc output +BUILDDIR = build +DOCDIR = doc + +HOUTDIR = $(BUILDDIR)/Database + +HSQLLib = $(BUILDDIR)/libHSsql.a + +# source dirs +VPATH = src + +#-------------------------------------------------------------------------- +# SOURCES +#-------------------------------------------------------------------------- + +HSC_SRC += HSQL.hsc + +ifeq "$(WithODBC)" "YES" +HSC_SRC += HSQL/ODBC.hsc +endif + +ifeq "$(WithPostgreSQL)" "YES" +HSC_SRC += HSQL/PostgreSQL.hsc +endif + +ifeq "$(WithMySQL)" "YES" +HSC_SRC += HSQL/MySQL.hsc +endif + +ifeq "$(WithSQLite)" "YES" +HSC_SRC += HSQL/SQLite.hsc +endif + +SO_SRC = $(patsubst %.hsc,$(HOUTDIR)/%.$(SO_EXT),$(HSC_SRC)) +HS_SRC = $(HOUTDIR)/HSQL/Types.hs $(patsubst %.hsc,$(HOUTDIR)/%.hs,$(HSC_SRC)) +HI_SRC = $(patsubst %.hs,%.hi,$(HS_SRC)) +OBJS = $(patsubst %.hs,%.o, $(HS_SRC)) +HS_DEPS = $(patsubst %.hs,%.d, $(HS_SRC)) + +ifeq "$(WithODBC)" "YES" +ifeq "$(WIN32)" "YES" +HsODBC_o = $(HOUTDIR)/HSQL/HsODBC.o +endif +endif + +#-------------------------------------------------------------------------- +# FLAGS +#-------------------------------------------------------------------------- + +FFIHUGS_FLAGS = $(patsubst %, +L"%", $(CPPFLAGS)) +ifeq "$(WIN32)" "YES" +ODBC_FFIHUGS_FLAGS = +L"$(HsODBC_o)" +FFIHUGS_FLAGS += $(patsubst %, +L"%", $(patsubst -l%, %.lib, $(LDFLAGS))) +else +FFIHUGS_FLAGS += $(patsubst %, +L"%", $(LDFLAGS)) +endif + +ifeq "$(HADDOCK)" "" +HADDOCK = echo +else +HS_PPS = $(addsuffix .raw-hs, $(basename $(HS_SRC))) +endif + +#-------------------------------------------------------------------------- +# RULES +#-------------------------------------------------------------------------- + +.SUFFIXES: .hs .hi .o .c + +# should be: +# +# $(HSC2HS) $< -o $@ $(CPPFLAGS) +# +# but there is a bug in hsc2hs from GHC 6.2 for Windows +$(HOUTDIR)/%.hs: %.hsc + $(HSC2HS) $< $(CPPFLAGS) + mv $(patsubst %.hsc, %.hs, $<) $@ +%.o : %.hs + mkdir -p $(basename $<)_split + rm -f $(basename $<)_split/* + $(GHC) $< -O -c -i$(BUILDDIR) -fglasgow-exts -split-objs $(CPPFLAGS) -package-name hsql + $(LD) -r -o $@ $(basename $<)_split/*.o + @# create dependency file + @$(GHC) $< -M -i$(BUILDDIR) -optdep-f -optdep$(*F).d $(CPPFLAGS) + @sed -e 's|$(subst .hs,,$<)\.o|$*\.o|' $(*F).d > $*.d + @rm $(*F).d +.o.hi: + @: +%.$(SO_EXT): %.hs + $(FFIHUGS) -98 +G -P$(BUILDDIR): $(FFIHUGS_FLAGS) $($(*F)_FFIHUGS_FLAGS) $< +%.raw-hs : %.hs + $(GHC) -Iincludes $(CPPFLAGS) -D__HADDOCK__ -E -cpp $< -o $<.tmp && sed -e 's/^#.*//' <$<.tmp >$@ + + +all: $(patsubst %, all-%, $(COMPILERS)) +all-ghc: $(HSQLLib) +all-hugs: $(SO_SRC) + + +$(HSQLLib): $(OBJS) $(HsODBC_o) + rm -f $(HSQLLib) + for i in $(patsubst %.o,%_split, $(OBJS)); do \ + $(AR) -q $(HSQLLib) $$i/*.o; \ + done + $(AR) -q $(HSQLLib) $(HsODBC_o) + +genclean: distclean + rm -rf configure autom4te.cache + +distclean: clean + rm -f $(HSQLLib) + rm -f config.status config.log config.mk hsql.pkg + +clean: + rm -f $(OBJS) + rm -f $(HI_SRC) + rm -f $(SO_SRC) + rm -f $(HS_SRC) + rm -f $(patsubst %.hs,%.c,$(HS_SRC)) + rm -f $(HS_PPS) + rm -f $(HS_DEPS) + rm -rf $(patsubst %.o,%_split, $(OBJS)) + rm -f $(HSQLLib) + + +docs : $(HS_PPS) + mkdir -p $(DOCDIR) + $(HADDOCK) -h -o $(DOCDIR) $(HS_PPS) + + +install: $(patsubst %, install-%, $(COMPILERS)) + +install-ghc: $(HSQLLib) $(HI_SRC) docs + $(INSTALL) -d $(GHC_DIR) + $(INSTALL) $(HSQLLib) $(GHC_DIR)/libHSsql.a + for i in $(patsubst $(BUILDDIR)/%,%,$(HI_SRC)); do \ + $(INSTALL) -d $(GHC_DIR)/imports/`dirname $$i`; \ + $(INSTALL) -c $(BUILDDIR)/$$i $(GHC_DIR)/imports/`dirname $$i`; \ + done + rm -f $(GHC_DIR)/HSsql.o + $(GHC_PKG) -u -g -i hsql.pkg + if test -f $(DOCDIR)/index.html; then \ + $(INSTALL) -d $(DOC_DIR); \ + $(INSTALL) -c $(DOCDIR)/* $(DOC_DIR); \ + fi + +install-hugs: $(HS_SRC) $(SO_SRC) + $(INSTALL) -d $(HUGS_DIR)/libraries/Database + for i in $(patsubst $(BUILDDIR)/%,%,$(HS_SRC) $(SO_SRC)); do \ + $(INSTALL) -d $(HUGS_DIR)/libraries/`dirname $$i`; \ + $(INSTALL) -c $(BUILDDIR)/$$i $(HUGS_DIR)/libraries/`dirname $$i`; \ + done + +setup: Setup.lhs + ghc -cpp --make -i../.. Setup.lhs -o setup 2>out.build + +-include $(HS_DEPS) + +$(HOUTDIR)/HSQL/ODBC.hs : HSQL/HsODBC.h + +$(HOUTDIR)/HSQL/Types.hs : HSQL/Types.hs + cp $< $@ + +$(HOUTDIR)/HSQL/HsODBC.o : HSQL/HsODBC.c HSQL/HsODBC.h + $(CC) $< -o $@ -O -c $(CPPFLAGS) hunk ./test/HSQL/NSIS/hsql_installer.nsi 1 +; Script generated by the HM NIS Edit Script Wizard. + +; HM NIS Edit Wizard helper defines +!define PRODUCT_NAME "HSQL" +!define PRODUCT_VERSION "1.4" +!define PRODUCT_PUBLISHER "Krasimir Angelov" +!define PRODUCT_WEB_SITE "http://htoolkit.sourceforge.net" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" + +!define REQUIRED_GHC_VERSION "6.2.1" + +; Path to the HSQL build directory: +!define HSQL_PATH ".." + +; MUI 1.67 compatible ------ +!include "MUI.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" +!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" + +; Welcome page +!insertmacro MUI_PAGE_WELCOME +; License page +!insertmacro MUI_PAGE_LICENSE "${HSQL_PATH}\LICENSE" +; Settings +!insertmacro MUI_PAGE_COMPONENTS +; Directory page +!insertmacro MUI_PAGE_DIRECTORY +;Startmenu +Var STARTMENU_FOLDER +!insertmacro MUI_PAGE_STARTMENU PRODUCT_NAME $STARTMENU_FOLDER +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_INSTFILES + +; Language files +!insertmacro MUI_LANGUAGE "English" + +; MUI end ------ + +!include "StrFunc.nsh" +${StrRep} + + +Var GHCDIR +Var DOCS + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}.exe" +InstallDir "c:\HToolkit\HSQL" +ShowInstDetails show +ShowUnInstDetails show + +Section "HSQL for GHC-${REQUIRED_GHC_VERSION}" SEC01 + ReadRegStr $GHCDIR HKLM "SOFTWARE\Haskell\GHC\ghc-${REQUIRED_GHC_VERSION}" "InstallDir" + StrCmp $GHCDIR "" GetDir Ok + IfErrors +1 Ok + GetDir: + MessageBox MB_ICONEXCLAMATION "Couldn't find GHC" + StrCpy $GHCDIR $R9 + StrCmp $GHCDIR "" Cancel Ok + + Cancel: + Abort "Couldn't find GHC" + + Ok: + SetOverwrite ifnewer + + SetOutPath "$INSTDIR\GHC" + File /r "${HSQL_PATH}\hsql.pkg.in" + File /r "${HSQL_PATH}\build\libHSsql.a" + File /r "${HSQL_PATH}\mingw32lib\liblibmysql.a" + File /r "${HSQL_PATH}\mingw32lib\liblibpq.a" + File /r "${HSQL_PATH}\mingw32lib\libsqlite.a" + + SetOutPath "$INSTDIR\GHC\imports" + File /r "${HSQL_PATH}\build\*.hi" + + ; Fix the hsql.pkg-file + Call fixPkg + StrCpy $R0 "$GHCDIR\bin\ghc-pkg -u -g -i $\"$INSTDIR\GHC\hsql.pkg$\"" + ExecWait $R0 +SectionEnd + +Section "HSQL for Hugs" SEC02 + SetOutPath "$INSTDIR\Hugs\libraries" + File /r "${HSQL_PATH}\build\*.hs" + File /r "${HSQL_PATH}\build\*.dll" +SectionEnd + +Section "Documentation" SEC03 + StrCpy $DOCS "yes" + SetOverwrite ifnewer + SetOutPath "$INSTDIR\doc" + File /r "${HSQL_PATH}\doc\*.html" + File /r "${HSQL_PATH}\doc\*.gif" + File /r "${HSQL_PATH}\doc\*.css" +SectionEnd + +Section "Examples" SEC04 + SetOverwrite ifnewer + SetOutPath "$INSTDIR\examples" + File /r "${HSQL_PATH}\examples\*.hs" +SectionEnd + +Section -DLL + SetOverwrite ifnewer + SetOutPath "$SYSDIR" + File /r "${HSQL_PATH}\mingw32lib\*.dll" +SectionEnd + +Section -AdditionalIcons + WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" + CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" + StrCmp $DOCS "yes" +1 +2 + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Documentation.lnk" "$INSTDIR\doc\index.html" + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\uninst.exe" +SectionEnd + +Section -Post + WriteUninstaller "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "StartMenu" "$STARTMENU_FOLDER" +SectionEnd + +; Component descriptions +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $(DESC_Section1) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} $(DESC_Section2) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(DESC_Section3) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(DESC_Section4) +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +LangString DESC_Section1 ${LANG_ENGLISH} "Install HSQL for GHC" +LangString DESC_Section2 ${LANG_ENGLISH} "Install HSQL for Hugs" +LangString DESC_Section3 ${LANG_ENGLISH} "Install HSQL with documentation" +LangString DESC_Section4 ${LANG_ENGLISH} "Install HSQL examples" + + +Function fixPkg + ; Fix the hsql.pkg file to the right paths + ; in order to be able to add the hsql package to ghc. + clearErrors + FileOpen $0 "$INSTDIR\GHC\hsql.pkg.in" "r" + GetTempFileName $R0 + FileOpen $1 $R0 "w" + loop: + FileRead $0 $2 + IfErrors done + + ${StrRep} $R1 $2 "@GHC_DIR@" "$INSTDIR/GHC" + ${StrRep} $R1 $R1 "@LIB_DIRS@" "$\"$INSTDIR/GHC$\"" + ${StrRep} $R1 $R1 "@DEP_LIBS@" "$\"sqlite$\", $\"libpq$\", $\"odbc32$\", $\"libmysql$\"" + ${StrRep} $R1 $R1 "\" "/" + + FileWrite $1 $R1 + Goto loop + + done: + FileClose $0 + FileClose $1 + CopyFiles /SILENT $R0 "$INSTDIR\GHC\hsql.pkg" + Delete $R0 +FunctionEnd + +Function un.onUninstSuccess + HideWindow + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." +FunctionEnd + +Function un.onInit + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 + Abort +FunctionEnd + +Section Uninstall + + ; Remove HSQL from statmenu + ReadRegStr $STARTMENU_FOLDER ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "StartMenu" + ifErrors +2 +1 + RMDir /r "$SMPROGRAMS\$STARTMENU_FOLDER" + RMDir /r "$INSTDIR" + + ; Remove hsql package from ghc + ReadRegStr $GHCDIR HKLM "SOFTWARE\Haskell\GHC\ghc-${REQUIRED_GHC_VERSION}" "InstallDir" + ifErrors +1 +3 + MessageBox MB_ICONEXCLAMATION "Unable to remove hsql lib files from the ghc folder" + goto end + + StrCpy $R0 "$\"$GHCDIR\bin\ghc-pkg$\" -r hsql" + ExecWait $R0 + + end: + DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" + SetAutoClose true +SectionEnd hunk ./test/HSQL/RPM/HSQL.spec 1 +Summary: Haskell database interaction library +Name: HSQL +Version: 1.4 +Release: 1 +Copyright: BSD +vendor: HToolkit Team +packager: Conny Andersson +Group: Development/Libraries +Source: HSQL.tar.gz +Requires: ghc >= 6.2.1 +Requires: hugs98 = Nov2003 +Requires: sqlite >= 2.8.12 +Requires: postgresql-libs >= 7.4.1 +Requires: unixODBC >= 2.2.5 +Requires: MySQL-shared >= 4.1.1 +%description +HSQL allows haskell programmers to interact with databases using MySQL, PostgreSQL, ODBC and SQLite. + +%prep +%setup -n HSQL + +%post +ghc-pkg -u --auto-ghci-libs <<- \EOF +Package + {name = "hsql", + auto=True, + import_dirs = ["/usr/lib/ghc-6.2/imports"], + source_dirs = [], + library_dirs = ["/usr/lib/ghc-6.2","/usr/lib","/usr/lib/mysql"], + hs_libraries = ["HSsql"], + extra_libraries = ["sqlite","pq","odbc","mysqlclient","z","crypt","nsl","m","c","nss_files","nss_dns","resolv","c","nss_files","nss_dns","resolv","sqlite"], + include_dirs = [], + c_includes = [], + package_deps = ["base"], + extra_ghc_opts = [], + extra_cc_opts = [], + extra_ld_opts = [], + framework_dirs = [], + extra_frameworks = [] + } +EOF + +%postun +ghc-pkg -r hsql + +%build +./configure --enable-mysql --enable-postgres --enable-odbc --enable-sqlite +make +make docs + +%install +make install + +%files +%defattr (-,root,root) + +#GHC +/usr/lib/ghc-6.2/libHSsql.a +/usr/lib/ghc-6.2/imports/Database/HSQL +/usr/lib/ghc-6.2/imports/Database/HSQL.hi + +#Hugs +/usr/lib/hugs/libraries/Database/HSQL +/usr/lib/hugs/libraries/Database/HSQL.hs +/usr/lib/hugs/libraries/Database/HSQL.so + +#GHC-Docs +/usr/lib/ghc-6.2/doc/html/libraries/hsql hunk ./test/HSQL/Setup.lhs 1 +#!/usr/bin/runhugs + +> module Main where + +> import Distribution.Make + +> main :: IO () +> main = defaultMain hunk ./test/HSQL/build/Database/HSQL/Types.hs.tmp 1 +# 1 "build/Database/HSQL/Types.hs" +# 1 "" +# 1 "" +# 1 "build/Database/HSQL/Types.hs" +-- #hide +module Database.HSQL.Types where + +import Control.Concurrent.MVar +import Data.Dynamic +import Foreign.C + +type FieldDef = (String, SqlType, Bool) + +data SqlType + = SqlChar Int -- ODBC, MySQL, PostgreSQL + | SqlVarChar Int -- ODBC, MySQL, PostgreSQL + | SqlLongVarChar Int -- ODBC + | SqlText -- , , PostgreSQL + | SqlWChar Int -- ODBC + | SqlWVarChar Int -- ODBC + | SqlWLongVarChar Int -- ODBC + | SqlDecimal Int Int -- ODBC + | SqlNumeric Int Int -- ODBC, MySQL, PostgreSQL + | SqlSmallInt -- ODBC, MySQL, PostgreSQL + | SqlMedInt -- , MySQL + | SqlInteger -- ODBC, MySQL, PostgreSQL + | SqlReal -- ODBC, MySQL, PostgreSQL + | SqlFloat -- ODBC + | SqlDouble -- ODBC, MySQL, PostgreSQL + | SqlBit -- ODBC, , PostgreSQL + | SqlTinyInt -- ODBC, MySQL, PostgreSQL + | SqlBigInt -- ODBC, MySQL, PostgreSQL + | SqlBinary Int -- ODBC, , PostgreSQL + | SqlVarBinary Int -- ODBC, , PostgreSQL + | SqlLongVarBinary Int -- ODBC + | SqlDate -- ODBC, MySQL, PostgreSQL + | SqlTime -- ODBC, MySQL, PostgreSQL + | SqlTimeTZ -- , , PostgreSQL + | SqlAbsTime -- , , PostgreSQL + | SqlRelTime -- , , PostgreSQL + | SqlTimeInterval -- , , PostgreSQL + | SqlAbsTimeInterval -- , , PostgreSQL + | SqlTimeStamp -- ODBC, MySQL + | SqlDateTime -- , MySQL + | SqlDateTimeTZ -- , MySQL, PostgreSQL + | SqlYear -- , MySQL + | SqlSET -- , MySQL + | SqlENUM -- , MySQL + | SqlBLOB -- , MySQL + | SqlMoney -- , , PostgreSQL + | SqlINetAddr -- , , PostgreSQL + | SqlCIDRAddr -- , , PostgreSQL + | SqlMacAddr -- , , PostgreSQL + | SqlPoint -- , , PostgreSQL + | SqlLSeg -- , , PostgreSQL + | SqlPath -- , , PostgreSQL + | SqlBox -- , , PostgreSQL + | SqlPolygon -- , , PostgreSQL + | SqlLine -- , , PostgreSQL + | SqlCircle -- , , PostgreSQL + | SqlUnknown Int -- ^ HSQL returns @SqlUnknown tp@ for all + -- columns for which it cannot determine + -- the right type. The @tp@ here is the + -- internal type code returned from the + -- backend library + deriving (Eq, Show) + +data SqlError + = SqlError + { seState :: String + , seNativeError :: Int + , seErrorMsg :: String + } + | SqlNoData + | SqlInvalidHandle + | SqlStillExecuting + | SqlNeedData + | SqlBadTypeCast + { seFieldName :: String + , seFieldType :: SqlType + } + | SqlFetchNull + { seFieldName :: String + } + | SqlUnknownField + { seFieldName :: String + } + | SqlUnsupportedOperation + | SqlClosedHandle + +sqlErrorTc :: TyCon +sqlErrorTc = mkTyCon "Database.HSQL.SqlError" + +instance Typeable SqlError where + typeOf _ = mkAppTy sqlErrorTc [] + +instance Show SqlError where + showsPrec _ (SqlError{seErrorMsg=msg}) = showString msg + showsPrec _ SqlNoData = showString "No data" + showsPrec _ SqlInvalidHandle = showString "Invalid handle" + showsPrec _ SqlStillExecuting = showString "Stlll executing" + showsPrec _ SqlNeedData = showString "Need data" + showsPrec _ (SqlBadTypeCast name tp) = showString ("The type of " ++ name ++ " field can't be converted to " ++ show tp ++ " type") + showsPrec _ (SqlFetchNull name) = showString ("The value of " ++ name ++ " field is null") + showsPrec _ (SqlUnknownField name) = showString ("Unknown field name: " ++ name) + showsPrec _ SqlUnsupportedOperation = showString "Unsupported operation" + showsPrec _ SqlClosedHandle = showString "The referenced handle is already closed" + +-- | A 'Connection' type represents a connection to a database, through which you can operate on the it. +-- In order to create the connection you need to use the @connect@ function from the module for +-- your prefered backend. +data Connection + = Connection + { connDisconnect :: IO () + , connExecute :: String -> IO () + , connQuery :: String -> IO Statement + , connTables :: IO [String] + , connDescribe :: String -> IO [FieldDef] + , connBeginTransaction :: IO () + , connCommitTransaction :: IO () + , connRollbackTransaction :: IO () + , connClosed :: MVar Bool + } + +-- | The 'Statement' type represents a result from the execution of given SQL query. +data Statement + = Statement + { stmtConn :: Connection + , stmtClose :: IO () + , stmtFetch :: IO Bool + , stmtGetCol :: forall a . Int -> FieldDef -> (SqlType -> CString -> Int -> IO (Maybe a)) -> IO (Maybe a) + , stmtFields :: [FieldDef] + , stmtClosed :: MVar Bool + } + + +class SqlBind a where + -- This allows for faster conversion for eq. integral numeric types, etc. + -- Default version uses fromSqlValue. + fromNonNullSqlCStringLen :: SqlType -> CString -> Int -> IO (Maybe a) + fromNonNullSqlCStringLen sqlType cstr cstrLen = do + str <- peekCStringLen (cstr, cstrLen) + return (fromSqlValue sqlType str) + + fromSqlValue :: SqlType -> String -> Maybe a + toSqlValue :: a -> String hunk ./test/HSQL/build/Database/HSQL.hs.tmp 1 +# 1 "build/Database/HSQL.hs" +# 1 "" +# 1 "" +# 1 "build/Database/HSQL.hs" +{-# OPTIONS -#include #-} +{-# LINE 1 "HSQL.hsc" #-} +----------------------------------------------------------------------------------------- +{-# LINE 2 "HSQL.hsc" #-} +{-| Module : Database.HSQL.ODBC + Copyright : (c) Krasimir Angelov 2003 + License : BSD-style + + Maintainer : ka2_mail@yahoo.com + Stability : provisional + Portability : portable + + The module provides an abstract database interface +-} +----------------------------------------------------------------------------------------- + +module Database.HSQL + ( + -- * Connect\/Disconnect + Connection + , disconnect -- :: Connection -> IO () + + -- * Command Execution Functions + -- | Once a connection to a database has been successfully established, + -- the functions described here are used to perform SQL queries and commands. + , execute -- :: Connection -> String -> IO () + , Statement + , query -- :: Connection -> String -> IO Statement + , closeStatement -- :: Statement -> IO () + , fetch -- :: Statement -> IO Bool + + -- * Retrieving Statement values and types + , FieldDef, SqlType(..), SqlBind, toSqlValue + , getFieldValueMB -- :: SqlBind a => Statement -> String -> IO (Maybe a) + , getFieldValue -- :: SqlBind a => Statement -> String -> IO a + , getFieldValue' -- :: SqlBind a => Statement -> String -> a -> IO a + , getFieldValueType -- :: Statement -> String -> (SqlType, Bool) + , getFieldsTypes -- :: Statement -> [(String, SqlType, Bool)] + + -- * Transactions + , inTransaction -- :: Connection -> (Connection -> IO a) -> IO a + + + -- * SQL Exceptions handling + , SqlError(..) + , catchSql -- :: IO a -> (SqlError -> IO a) -> IO a + , handleSql -- :: (SqlError -> IO a) -> IO a -> IO a + , sqlExceptions -- :: Exception -> Maybe SqlError + + -- * Utilities + , forEachRow -- :: (Statement -> s -> IO s) -- ^ an action + , forEachRow' -- :: (Statement -> IO ()) -> Statement -> IO () + , collectRows -- :: (Statement -> IO a) -> Statement -> IO [a] + + -- * Metadata + , tables -- :: Connection -> IO [String] + , describe -- :: Connection -> String -> IO [FieldDef] + + -- * Extra types + , Point(..), Line(..), Path(..), Box(..), Circle(..), Polygon(..) + ) where + +import Prelude hiding (catch) +import Foreign +import Foreign.C +import Data.Int +import Data.Char +import Data.Dynamic +import System.Time +import System.IO.Unsafe(unsafePerformIO) +import Control.Monad(when,unless,mplus) +import Control.Exception (throwDyn, catchDyn, dynExceptions, Exception(..), finally, catch, throwIO) +import Control.Concurrent.MVar +import Text.ParserCombinators.ReadP +import Text.Read +import Text.Read.Lex +import Numeric +import Database.HSQL.Types + + +{-# LINE 78 "HSQL.hsc" #-} + +----------------------------------------------------------------------------------------- +-- routines for exception handling +----------------------------------------------------------------------------------------- + +catchSql :: IO a -> (SqlError -> IO a) -> IO a +catchSql = catchDyn + +handleSql :: (SqlError -> IO a) -> IO a -> IO a +handleSql h f = catchDyn f h + +sqlExceptions :: Exception -> Maybe SqlError +sqlExceptions e = dynExceptions e >>= fromDynamic + +checkHandle :: MVar Bool -> IO a -> IO a +checkHandle ref action = + withMVar ref (\closed -> when closed (throwDyn SqlClosedHandle) >> action) + +closeHandle :: MVar Bool -> IO () -> IO () +closeHandle ref action = + modifyMVar_ ref (\closed -> unless closed action >> return True) + +----------------------------------------------------------------------------------------- +-- Operations on the connection +----------------------------------------------------------------------------------------- + +-- | Closes the connection. Performing 'disconnect' on a connection that has already been +-- closed has no effect. All other operations on a closed connection will fail. +disconnect :: Connection -> IO () +disconnect conn = closeHandle (connClosed conn) (connDisconnect conn) + +-- | Submits a command to the database. +execute :: Connection -- ^ the database connection + -> String -- ^ the text of SQL command + -> IO () +execute conn query = checkHandle (connClosed conn) (connExecute conn query) + +-- | Executes a query and returns a result set +query :: Connection -- ^ the database connection + -> String -- ^ the text of SQL query + -> IO Statement -- ^ the associated statement. Must be closed with + -- the 'closeStatement' function +query conn query = checkHandle (connClosed conn) (connQuery conn query) + + +-- | List all tables in the database. +tables :: Connection -- ^ Database connection + -> IO [String] -- ^ The names of all tables in the database. +tables conn = checkHandle (connClosed conn) (connTables conn) + +-- | List all columns in a table along with their types and @nullable@ flags +describe :: Connection -- ^ Database connection + -> String -- ^ Name of a database table + -> IO [FieldDef] -- ^ The list of fields in the table +describe conn table = checkHandle (connClosed conn) (connDescribe conn table) + +----------------------------------------------------------------------------------------- +-- transactions +----------------------------------------------------------------------------------------- + +-- | The 'inTransaction' function executes the specified action in transaction mode. +-- If the action completes successfully then the transaction will be commited. +-- If the action completes with an exception then the transaction will be rolled back +-- and the exception will be throw again. +inTransaction :: Connection + -> (Connection -> IO a) -- ^ an action + -> IO a -- ^ the returned value is the result returned from action +inTransaction conn action = do + checkHandle (connClosed conn) (connBeginTransaction conn) + r <- catch (action conn) (\err -> do + checkHandle (connClosed conn) (connRollbackTransaction conn) + throwIO err) + checkHandle (connClosed conn) (connCommitTransaction conn) + return r + +----------------------------------------------------------------------------------------- +-- Operations on the statements +----------------------------------------------------------------------------------------- + +-- | 'fetch' fetches the next rowset of data from the result set. +-- The values from columns can be retrieved with 'getFieldValue' function. +fetch :: Statement -> IO Bool +fetch stmt = checkHandle (stmtClosed stmt) (stmtFetch stmt) + +-- | 'closeStatement' stops processing associated with a specific statement, closes any open cursors +-- associated with the statement, discards pending results, and frees all resources associated with +-- the statement. Performing 'closeStatement' on a statement that has already been +-- closed has no effect. All other operations on a closed statement will fail. +closeStatement :: Statement -> IO () +closeStatement stmt = closeHandle (stmtClosed stmt) (stmtClose stmt) + +-- | Returns the type and the @nullable@ flag for field with specified name +getFieldValueType :: Statement -> String -> (SqlType, Bool) +getFieldValueType stmt name = (sqlType, nullable) + where + (sqlType,nullable,colNumber) = findFieldInfo name (stmtFields stmt) 0 + +-- | Returns the list of fields with their types and @nullable@ flags +getFieldsTypes :: Statement -> [(String, SqlType, Bool)] +getFieldsTypes stmt = stmtFields stmt + +findFieldInfo :: String -> [FieldDef] -> Int -> (SqlType,Bool,Int) +findFieldInfo name [] colNumber = throwDyn (SqlUnknownField name) +findFieldInfo name (fieldDef@(name',sqlType,nullable):fields) colNumber + | name == name' = (sqlType,nullable,colNumber) + | otherwise = findFieldInfo name fields $! (colNumber+1) + +----------------------------------------------------------------------------------------- +-- binding +----------------------------------------------------------------------------------------- + +foreign import ccall "stdlib.h atoi" c_atoi :: CString -> IO Int + +{-# LINE 193 "HSQL.hsc" #-} +foreign import ccall "stdlib.h strtoll" c_strtoll :: CString -> Ptr CString -> Int -> IO Int64 + +{-# LINE 195 "HSQL.hsc" #-} + +instance SqlBind Int where + fromNonNullSqlCStringLen sqlType cstr cstrLen = do + if sqlType==SqlInteger || sqlType==SqlMedInt + || sqlType==SqlTinyInt || sqlType==SqlSmallInt + || sqlType==SqlBigInt + then do + val <- c_atoi cstr + return (Just val) + else + return Nothing + + fromSqlValue SqlInteger s = Just (read s) + fromSqlValue SqlMedInt s = Just (read s) + fromSqlValue SqlTinyInt s = Just (read s) + fromSqlValue SqlSmallInt s = Just (read s) + fromSqlValue SqlBigInt s = Just (read s) + fromSqlValue _ _ = Nothing + + toSqlValue s = show s + +instance SqlBind Int64 where + fromNonNullSqlCStringLen sqlType cstr cstrLen = do + if sqlType==SqlInteger || sqlType==SqlMedInt + || sqlType==SqlTinyInt || sqlType==SqlSmallInt || sqlType==SqlBigInt + then do + +{-# LINE 224 "HSQL.hsc" #-} + val <- c_strtoll cstr nullPtr 10 + +{-# LINE 226 "HSQL.hsc" #-} + return (Just val) + else + return Nothing + + fromSqlValue SqlInteger s = Just (read s) + fromSqlValue SqlMedInt s = Just (read s) + fromSqlValue SqlTinyInt s = Just (read s) + fromSqlValue SqlSmallInt s = Just (read s) + fromSqlValue SqlBigInt s = Just (read s) + fromSqlValue _ s = Nothing + + toSqlValue val = show val + +instance SqlBind Integer where + fromSqlValue SqlInteger s = Just (read s) + fromSqlValue SqlMedInt s = Just (read s) + fromSqlValue SqlTinyInt s = Just (read s) + fromSqlValue SqlSmallInt s = Just (read s) + fromSqlValue SqlBigInt s = Just (read s) + fromSqlValue _ _ = Nothing + + toSqlValue s = show s +instance SqlBind String where + fromSqlValue _ = Just + + toSqlValue s = '\'' : foldr mapChar "'" s + where + mapChar '\\' s = '\\':'\\':s + mapChar '\'' s = '\\':'\'':s + mapChar '\n' s = '\\':'n' :s + mapChar '\r' s = '\\':'r' :s + mapChar '\t' s = '\\':'t' :s + mapChar '\NUL' s = '\\':'0' :s + mapChar c s = c :s + +instance SqlBind Bool where + fromSqlValue SqlBit s = Just (s == "t") + fromSqlValue _ _ = Nothing + + toSqlValue True = "'t'" + toSqlValue False = "'f'" + +instance SqlBind Double where + fromSqlValue (SqlDecimal _ _) s = Just (read s) + fromSqlValue (SqlNumeric _ _) s = Just (read s) + fromSqlValue SqlDouble s = Just (read s) + fromSqlValue SqlReal s = Just (read s) + fromSqlValue SqlFloat s = Just (read s) + fromSqlValue _ _ = Nothing + + toSqlValue d = show d + +mkClockTime :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> ClockTime +mkClockTime year mon mday hour min sec tz = + unsafePerformIO $ do + allocaBytes (44) $ \ p_tm -> do +{-# LINE 282 "HSQL.hsc" #-} + ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) p_tm (fromIntegral sec :: CInt) +{-# LINE 283 "HSQL.hsc" #-} + ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) p_tm (fromIntegral min :: CInt) +{-# LINE 284 "HSQL.hsc" #-} + ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) p_tm (fromIntegral hour :: CInt) +{-# LINE 285 "HSQL.hsc" #-} + ((\hsc_ptr -> pokeByteOff hsc_ptr 12)) p_tm (fromIntegral mday :: CInt) +{-# LINE 286 "HSQL.hsc" #-} + ((\hsc_ptr -> pokeByteOff hsc_ptr 16)) p_tm (fromIntegral (mon-1) :: CInt) +{-# LINE 287 "HSQL.hsc" #-} + ((\hsc_ptr -> pokeByteOff hsc_ptr 20)) p_tm (fromIntegral (year-1900) :: CInt) +{-# LINE 288 "HSQL.hsc" #-} + ((\hsc_ptr -> pokeByteOff hsc_ptr 32)) p_tm (-1 :: CInt) +{-# LINE 289 "HSQL.hsc" #-} + t <- mktime p_tm + return (TOD (fromIntegral t + fromIntegral (tz-currTZ)) 0) +foreign import ccall unsafe mktime :: Ptr () -> IO CTime + +{-# NOINLINE currTZ #-} +currTZ :: Int +currTZ = ctTZ (unsafePerformIO (getClockTime >>= toCalendarTime)) -- Hack + +parseTZ :: ReadP Int +parseTZ = (char '+' >> readDecP) `mplus` (char '-' >> fmap negate readDecP) + +f_read :: ReadP a -> String -> Maybe a +f_read f s = case readP_to_S f s of {[(x,_)] -> Just x} + +instance SqlBind ClockTime where + fromSqlValue SqlTimeTZ s = f_read getTimeTZ s + where + getTimeTZ :: ReadP ClockTime + getTimeTZ = do + hour <- readDecP + char ':' + minutes <- readDecP + char ':' + seconds <- readDecP + (char '.' >> readDecP) `mplus` (return 0) + tz <- parseTZ + return (mkClockTime 1970 1 1 hour minutes seconds (tz*3600)) + + fromSqlValue SqlTime s = f_read getTime s + where + getTime :: ReadP ClockTime + getTime = do + hour <- readDecP + char ':' + minutes <- readDecP + char ':' + seconds <- readDecP + return (mkClockTime 1970 1 1 hour minutes seconds currTZ) + + fromSqlValue SqlDate s = f_read getDate s + where + getDate :: ReadP ClockTime + getDate = do + year <- readDecP + char '-' + month <- readDecP + char '-' + day <- readDecP + return (mkClockTime year month day 0 0 0 currTZ) + + fromSqlValue SqlDateTimeTZ s = f_read getDateTimeTZ s + where + getDateTimeTZ :: ReadP ClockTime + getDateTimeTZ = do + year <- readDecP + char '-' + month <- readDecP + char '-' + day <- readDecP + skipSpaces + hour <- readDecP + char ':' + minutes <- readDecP + char ':' + seconds <- readDecP + char '.' >> readDecP -- ) `mplus` (return 0) + tz <- parseTZ + return (mkClockTime year month day hour minutes seconds (tz*3600)) + + fromSqlValue SqlDateTime s = f_read getDateTime s + where + getDateTime :: ReadP ClockTime + getDateTime = do + year <- readDecP + char '-' + month <- readDecP + char '-' + day <- readDecP + skipSpaces + hour <- readDecP + char ':' + minutes <- readDecP + char ':' + seconds <- readDecP + return (mkClockTime year month day hour minutes seconds currTZ) + + fromSqlValue SqlTimeStamp s = + let + [year,month,day,hour,minutes,seconds] = parts [4,2,2,2,2,2] s + + parts [] xs = [] + parts (ix:ixs) xs = part ix 0 xs + where + part 0 n xs = n : parts ixs xs + part k n (x:xs) = part (k-1) (n*10 + (ord x - ord '0')) xs + in + Just (mkClockTime year month day hour minutes seconds currTZ) + + fromSqlValue _ _ = Nothing + + toSqlValue ct = '\'' : (shows (ctYear t) . + score . + shows (ctMonth t) . + score . + shows (ctDay t) . + space . + shows (ctHour t) . + colon . + shows (ctMin t) . + colon . + shows (ctSec t)) "'" + where + t = toUTCTime ct + score = showChar '-' + space = showChar ' ' + colon = showChar ':' + +data Point = Point Double Double deriving (Eq, Show) +data Line = Line Point Point deriving (Eq, Show) +data Path = OpenPath [Point] | ClosedPath [Point] deriving (Eq, Show) +data Box = Box Double Double Double Double deriving (Eq, Show) +data Circle = Circle Point Double deriving (Eq, Show) +data Polygon = Polygon [Point] deriving (Eq, Show) + +instance SqlBind Point where + fromSqlValue SqlPoint s = case read s of + (x,y) -> Just (Point x y) + fromSqlValue _ _ = Nothing + + toSqlValue (Point x y) = '\'' : shows (x,y) "'" + +instance SqlBind Line where + fromSqlValue SqlLSeg s = case read s of + [(x1,y1),(x2,y2)] -> Just (Line (Point x1 y1) (Point x2 y2)) + fromSqlValue _ _ = Nothing + + toSqlValue (Line (Point x1 y1) (Point x2 y2)) = '\'' : shows [(x1,y1),(x2,y2)] "'" + +instance SqlBind Path where + fromSqlValue SqlPath ('(':s) = case read ("["++init s++"]") of -- closed path + ps -> Just (ClosedPath (map (\(x,y) -> Point x y) ps)) + fromSqlValue SqlPath s = case read s of -- closed path -- open path + ps -> Just (OpenPath (map (\(x,y) -> Point x y) ps)) + fromSqlValue SqlLSeg s = case read s of + [(x1,y1),(x2,y2)] -> Just (OpenPath [(Point x1 y1), (Point x2 y2)]) + fromSqlValue SqlPoint s = case read s of + (x,y) -> Just (ClosedPath [Point x y]) + fromSqlValue _ _ = Nothing + + toSqlValue (OpenPath ps) = '\'' : shows ps "'" + toSqlValue (ClosedPath ps) = "'(" ++ init (tail (show ps)) ++ "')" + +instance SqlBind Box where + fromSqlValue SqlBox s = case read ("("++s++")") of + ((x1,y1),(x2,y2)) -> Just (Box x1 y1 x2 y2) + fromSqlValue _ _ = Nothing + + toSqlValue (Box x1 y1 x2 y2) = '\'' : shows ((x1,y1),(x2,y2)) "'" + +instance SqlBind Polygon where + fromSqlValue SqlPolygon s = case read ("["++init (tail s)++"]") of + ps -> Just (Polygon (map (\(x,y) -> Point x y) ps)) + fromSqlValue _ _ = Nothing + + toSqlValue (Polygon ps) = "'(" ++ init (tail (show ps)) ++ "')" + +instance SqlBind Circle where + fromSqlValue SqlCircle s = case read ("("++init (tail s)++")") of + ((x,y),r) -> Just (Circle (Point x y) r) + fromSqlValue _ _ = Nothing + + toSqlValue (Circle (Point x y) r) = "'<" ++ show (x,y) ++ "," ++ show r ++ "'>" + +data INetAddr = INetAddr Int Int Int Int Int deriving (Eq,Show) + +instance SqlBind INetAddr where + fromSqlValue t s + | t == SqlINetAddr || t == SqlCIDRAddr = + case readNum s of + (x1,s) -> case readNum s of + (x2,s) -> case readNum s of + (x3,s) -> case readNum s of + (x4,s) -> case readNum s of + (mask,_) -> Just (INetAddr x1 x2 x3 x4 mask) + | otherwise = Nothing + where + readNum s = case readDec s of + [(x,'.':s)] -> (x,s) + [(x,'/':s)] -> (x,s) + [(x,"")] -> (x,"") + _ -> (0,"") + + toSqlValue (INetAddr x1 x2 x3 x4 mask) = '\'' : + (shows x1 . + dot . + shows x2. + dot . + shows x3 . + dot . + shows x4 . + slash . + shows mask) "'" + where + dot = showChar '.' + slash = showChar '/' + +data MacAddr = MacAddr Int Int Int Int Int Int deriving (Eq,Show) + +instance SqlBind MacAddr where + fromSqlValue SqlMacAddr s = + case readHex s of + [(x1,':':s)] -> case readHex s of + [(x2,':':s)] -> case readHex s of + [(x3,':':s)] -> case readHex s of + [(x4,':':s)] -> case readHex s of + [(x5,':':s)] -> case readHex s of + [(x6,_)] -> Just (MacAddr x1 x2 x3 x4 x5 x6) + fromSqlValue _ _ = Nothing + + toSqlValue (MacAddr x1 x2 x3 x4 x5 x6) = '\'' : + (showHex x1 . + colon . + showHex x2 . + colon . + showHex x3 . + colon . + showHex x4 . + colon . + showHex x5 . + colon . + showHex x6) "'" + where + colon = showChar ':' + showHex = showIntAtBase 16 intToDigit + +-- | Retrieves the value of field with the specified name. +-- The returned value is Nothing if the field value is @null@. +getFieldValueMB :: SqlBind a => Statement + -> String -- ^ Field name + -> IO (Maybe a) -- ^ Field value or Nothing +getFieldValueMB stmt name = checkHandle (stmtClosed stmt) $ + stmtGetCol stmt colNumber (name,sqlType,nullable) fromNonNullSqlCStringLen + where + (sqlType,nullable,colNumber) = findFieldInfo name (stmtFields stmt) 0 + +-- | Retrieves the value of field with the specified name. +-- If the field value is @null@ then the function will throw 'SqlFetchNull' exception. +getFieldValue :: SqlBind a => Statement + -> String -- ^ Field name + -> IO a -- ^ Field value +getFieldValue stmt name = do + mb_v <- getFieldValueMB stmt name + case mb_v of + Nothing -> throwDyn (SqlFetchNull name) + Just a -> return a + +-- | Retrieves the value of field with the specified name. +-- If the field value is @null@ then the function will return the default value. +getFieldValue' :: SqlBind a => Statement + -> String -- ^ Field name + -> a -- ^ Default field value + -> IO a -- ^ Field value +getFieldValue' stmt name def = do + mb_v <- getFieldValueMB stmt name + return (case mb_v of { Nothing -> def; Just a -> a }) + + +----------------------------------------------------------------------------------------- +-- helpers +----------------------------------------------------------------------------------------- + +-- | The 'forEachRow' function iterates through the result set in 'Statement' and +-- executes the given action for each row in the set. The function closes the 'Statement' +-- after the last row processing or if the given action raises an exception. +forEachRow :: (Statement -> s -> IO s) -- ^ an action + -> Statement -- ^ the statement + -> s -- ^ initial state + -> IO s -- ^ final state +forEachRow f stmt s = loop s `finally` closeStatement stmt + where + loop s = do + success <- fetch stmt + if success then f stmt s >>= loop else return s + +-- | The 'forEachRow\'' function is analogous to 'forEachRow' but doesn't provide state. +-- The function closes the 'Statement' after the last row processing or if the given +-- action raises an exception. +forEachRow' :: (Statement -> IO ()) -> Statement -> IO () +forEachRow' f stmt = loop `finally` closeStatement stmt + where + loop = do + success <- fetch stmt + when success (f stmt >> loop) + +-- | The 'collectRows' function iterates through the result set in 'Statement' and +-- executes the given action for each row in the set. The values returned from action +-- are collected and returned as list. The function closes the 'Statement' after the +-- last row processing or if the given action raises an exception. +collectRows :: (Statement -> IO a) -> Statement -> IO [a] +collectRows f stmt = loop `finally` closeStatement stmt + where + loop = do + success <- fetch stmt + if success + then do + x <- f stmt + xs <- loop + return (x:xs) + else return [] hunk ./test/HSQL/config.guess 1 +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + cat <dummy.s + .globl main + .ent main +main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + ${CC-cc} dummy.s -o dummy 2>/dev/null + if test "$?" = 0 ; then + ./dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + fi + rm -f dummy.s dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]` + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + arc64:OpenBSD:*:*) + echo mips64el-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hkmips:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + arm32:NetBSD:*:*) + echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + SR2?01:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + Power*:Darwin:*:*) + echo powerpc-apple-macosx${UNAME_RELEASE} + exit 0 ;; + macppc:NetBSD:*:*) + echo powerpc-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >dummy.c + int main (argc, argv) int argc; char **argv; { + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + ${CC-cc} dummy.c -o dummy \ + && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` + if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/6?? | 9000/7?? | 9000/80[24] | 9000/8?[13679] | 9000/892 ) + sed 's/^ //' << EOF >dummy.c + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (${CC-cc} dummy.c -o dummy 2>/dev/null ) && HP_ARCH=`./dummy` + rm -f dummy.c dummy + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + # uname on the ARM produces all sorts of strangeness, and we need to + # filter it out. + case "$UNAME_MACHINE" in + arm* | sa110*) UNAME_MACHINE="arm" ;; + esac + + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. + ld_help_string=`ld --help 2>&1` + ld_supported_emulations=`echo $ld_help_string \ + | sed -ne '/supported emulations:/!d + s/[ ][ ]*/ /g + s/.*supported emulations: *// + s/ .*// + p'` + case "$ld_supported_emulations" in + i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; + i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; + sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;; + esac + + if test "${UNAME_MACHINE}" = "alpha" ; then + sed 's/^ //' <dummy.s + .globl main + .ent main + main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + LIBC="" + ${CC-cc} dummy.s -o dummy 2>/dev/null + if test "$?" = 0 ; then + ./dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + + objdump --private-headers dummy | \ + grep ld.so.1 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f dummy.s dummy + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 + elif test "${UNAME_MACHINE}" = "mips" ; then + cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + else + # Either a pre-BFD a.out linker (linux-gnuoldld) + # or one that does not give us useful --help. + # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. + # If ld does not provide *any* "supported emulations:" + # that means it is gnuoldld. + echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" + test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + + case "${UNAME_MACHINE}" in + i?86) + VENDOR=pc; + ;; + *) + VENDOR=unknown; + ;; + esac + # Determine whether the default compiler is a.out or elf + cat >dummy.c < +main(argc, argv) + int argc; + char *argv[]; +{ +#ifdef __ELF__ +# ifdef __GLIBC__ +# if __GLIBC__ >= 2 + printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +#else + printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); +#endif + return 0; +} +EOF + ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + i?86:UnixWare:*:*) + if /bin/uname -X 2>/dev/null >/dev/null ; then + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + fi + echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION} + exit 0 ;; + pc:*:*:*) + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:*:6*) + echo mips-sony-newsos6 + exit 0 ;; + R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 +rm -f dummy.c dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 hunk ./test/HSQL/config.mk.in 1 +WithODBC=@WithODBC@ +WithPostgreSQL=@WithPostgreSQL@ +WithMySQL=@WithMySQL@ +WithSQLite=@WithSQLite@ + +SO_EXT = @SO_EXT@ + +WIN32=@WIN32@ + +AR = @AR@ +LD = @LD@ +INSTALL = @INSTALL@ + +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ + +HSC2HS = @HSC2HS@ + +HADDOCK = @HADDOCK@ +DOC_DIR = @DOC_DIR@ + +GHC = @GHC@ +GHC_DIR = @GHC_DIR@ +GHC_PKG = @GHC_PKG@ + +HUGS = @HUGS@ +HUGS_DIR = @HUGS_DIR@ +FFIHUGS = @FFIHUGS@ hunk ./test/HSQL/config.sub 1 +#! /bin/sh + +#--------------------------------------------------------------------- +# Modified and adapted for the Lazy Virtual Machine by Daan Leijen. +# + added better "windows" support +#--------------------------------------------------------------------- + +# $Id: config.sub,v 1.1 2003/09/05 11:37:55 kr_angelov Exp $ + +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + linux-gnu*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ + | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ + | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \ + | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \ + | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \ + | mips64 | mipsel | mips64el | mips64orion | mips64orionel \ + | mipstx39 | mipstx39el \ + | sparc | sparclet | sparclite | sparc64 | v850) + basic_machine=$basic_machine-unknown + ;; + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i[34567]86) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \ + | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \ + | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \ + | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \ + | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \ + | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ + | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mipstx39-* | mipstx39el-* \ + | f301-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigaos | amigados) + basic_machine=m68k-cbm + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[34567]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[34567]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[34567]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[34567]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux-gnu + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux-gnu + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + np1) + basic_machine=np1-gould + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | nexen) + basic_machine=i586-pc + ;; + pentiumpro | p6 | k6 | 6x86) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | nexen-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | k6-* | 6x86-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + if [ x$os = x-linux-gnu ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -windows*) + # LVM: added windows + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -xenix) + os=-xenix + ;; + -macosx*) + os=-macosx + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f301-fujitsu) + os=-uxpv + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os hunk ./test/HSQL/configure 1 +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.57 for HSQL 1.0. +# +# Report bugs to . +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='HSQL' +PACKAGE_TARNAME='hsql' +PACKAGE_VERSION='1.0' +PACKAGE_STRING='HSQL 1.0' +PACKAGE_BUGREPORT='htoolkit-users@lists.sourceforge.net' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os WithODBC WithPostgreSQL WithMySQL WithSQLite GHC GHC_DIR HSC2HS GHC_PKG HUGS HUGS_DIR SO_EXT FFIHUGS HADDOCK DOC_DIR CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR LD EGREP WIN32 PG_CONFIG MYSQL_CONFIG DEP_LIBS LIB_DIRS LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures HSQL 1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of HSQL 1.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-odbc + Build an ODBC binding for Haskell. + + --enable-postgres + Build a PostgreSQL binding for Haskell. + + --enable-mysql + Build a MySQL binding for Haskell. + + --enable-sqlite + Build a SQLite binding for Haskell. + + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-ghc= + Use a different command instead of 'ghc' for the Haskell compiler. + + --with-hsc2hs= + Use a different command instead of 'hsc2hs' + + --with-ghc-pkg= + Use a different command instead of 'ghc-pkg' + + --with-hugs= + Use a different command instead of 'hugs' for the Hugs interpreter. + + --with-ffihugs= + Use a different command instead of 'ffihugs' for the Hugs FFI compiler. + + --with-haddock= + Use a different command instead of 'haddock' for the documentation builder. + + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +HSQL configure 1.0 +generated by GNU Autoconf 2.57 + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by HSQL $as_me 1.0, which was +generated by GNU Autoconf 2.57. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ac_config_files="$ac_config_files config.mk:config.mk.in hsql.pkg:hsql.pkg.in" + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6 +if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_target_alias=$target_alias +test "x$ac_cv_target_alias" = "x" && + ac_cv_target_alias=$ac_cv_host_alias +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6 +target=$ac_cv_target +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +# Check whether --enable-odbc or --disable-odbc was given. +if test "${enable_odbc+set}" = set; then + enableval="$enable_odbc" + WithODBC=YES +else + WithODBC=NO + +fi; + + +# Check whether --enable-postgres or --disable-postgres was given. +if test "${enable_postgres+set}" = set; then + enableval="$enable_postgres" + WithPostgreSQL=YES +else + WithPostgreSQL=NO + +fi; + + +# Check whether --enable-mysql or --disable-mysql was given. +if test "${enable_mysql+set}" = set; then + enableval="$enable_mysql" + WithMySQL=YES +else + WithMySQL=NO + +fi; + + +# Check whether --enable-sqlite or --disable-sqlite was given. +if test "${enable_sqlite+set}" = set; then + enableval="$enable_sqlite" + WithSQLite=YES +else + WithSQLite=NO + +fi; + + + +# Check whether --with-ghc or --without-ghc was given. +if test "${with_ghc+set}" = set; then + withval="$with_ghc" + GHC="$withval" +else + # Extract the first word of "ghc", so it can be a program name with args. +set dummy ghc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GHC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GHC in + [\\/]* | ?:[\\/]*) + ac_cv_path_GHC="$GHC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GHC="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +GHC=$ac_cv_path_GHC + +if test -n "$GHC"; then + echo "$as_me:$LINENO: result: $GHC" >&5 +echo "${ECHO_T}$GHC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +fi; + +if test "$GHC" = "" || test ! -f $GHC; then + echo "$as_me:$LINENO: result: The build for GHC will be skiped." >&5 +echo "${ECHO_T}The build for GHC will be skiped." >&6 + GHC="" +fi + +if test "x$prefix" != xNONE; then + GHC_DIR="$prefix/lib/HSQL/GHC" +else + GHC_DIR="$ac_default_prefix/lib/HSQL/Hugs" +fi + + + + + +# Check whether --with-hsc2hs or --without-hsc2hs was given. +if test "${with_hsc2hs+set}" = set; then + withval="$with_hsc2hs" + HSC2HS="$withval" +else + # Extract the first word of "hsc2hs", so it can be a program name with args. +set dummy hsc2hs; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_HSC2HS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $HSC2HS in + [\\/]* | ?:[\\/]*) + ac_cv_path_HSC2HS="$HSC2HS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_HSC2HS="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +HSC2HS=$ac_cv_path_HSC2HS + +if test -n "$HSC2HS"; then + echo "$as_me:$LINENO: result: $HSC2HS" >&5 +echo "${ECHO_T}$HSC2HS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +fi; + +if test "$HSC2HS" = "" || test ! -f $HSC2HS; then + { { echo "$as_me:$LINENO: error: HSC2HS is required to build the package" >&5 +echo "$as_me: error: HSC2HS is required to build the package" >&2;} + { (exit 1); exit 1; }; } +fi + + + + +# Check whether --with-ghc-pkg or --without-ghc-pkg was given. +if test "${with_ghc_pkg+set}" = set; then + withval="$with_ghc_pkg" + GHC_PKG="$withval" +else + # Extract the first word of "ghc-pkg", so it can be a program name with args. +set dummy ghc-pkg; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GHC_PKG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GHC_PKG in + [\\/]* | ?:[\\/]*) + ac_cv_path_GHC_PKG="$GHC_PKG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GHC_PKG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +GHC_PKG=$ac_cv_path_GHC_PKG + +if test -n "$GHC_PKG"; then + echo "$as_me:$LINENO: result: $GHC_PKG" >&5 +echo "${ECHO_T}$GHC_PKG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +fi; + +if test "$GHC_PKG" = "" || test ! -f $GHC_PKG; then + { { echo "$as_me:$LINENO: error: ghc-pkg is required to build the package" >&5 +echo "$as_me: error: ghc-pkg is required to build the package" >&2;} + { (exit 1); exit 1; }; } +fi + + + + +# Check whether --with-hugs or --without-hugs was given. +if test "${with_hugs+set}" = set; then + withval="$with_hugs" + HUGS="$withval" +else + # Extract the first word of "hugs", so it can be a program name with args. +set dummy hugs; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_HUGS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $HUGS in + [\\/]* | ?:[\\/]*) + ac_cv_path_HUGS="$HUGS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_HUGS="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +HUGS=$ac_cv_path_HUGS + +if test -n "$HUGS"; then + echo "$as_me:$LINENO: result: $HUGS" >&5 +echo "${ECHO_T}$HUGS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +fi; + +if test "$HUGS" = "" || test ! -f $HUGS; then + echo "$as_me:$LINENO: result: The build for HUGS will be skiped." >&5 +echo "${ECHO_T}The build for HUGS will be skiped." >&6 + HUGS="" +fi + +if test "x$prefix" != xNONE; then + HUGS_DIR="$prefix/lib/HSQL/Hugs" +else + HUGS_DIR="$ac_default_prefix/lib/HSQL/Hugs" +fi + +case $ac_cv_target_alias in + i[3456]86-*-cygwin*|i[3456]86-*-mingw32*) + SO_EXT=dll;; + *) SO_EXT=so;; +esac + + + + + + +# Check whether --with-ffihugs or --without-ffihugs was given. +if test "${with_ffihugs+set}" = set; then + withval="$with_ffihugs" + FFIHUGS="$withval" +else + # Extract the first word of "ffihugs", so it can be a program name with args. +set dummy ffihugs; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_FFIHUGS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $FFIHUGS in + [\\/]* | ?:[\\/]*) + ac_cv_path_FFIHUGS="$FFIHUGS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_FFIHUGS="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +FFIHUGS=$ac_cv_path_FFIHUGS + +if test -n "$FFIHUGS"; then + echo "$as_me:$LINENO: result: $FFIHUGS" >&5 +echo "${ECHO_T}$FFIHUGS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +fi; + +if test "$HUGS" != ""; then + if test "$FFIHUGS" = "" || test ! -f $FFIHUGS; then + { { echo "$as_me:$LINENO: error: ffihugs is required to build the Hugs libraries" >&5 +echo "$as_me: error: ffihugs is required to build the Hugs libraries" >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + + +# Check whether --with-haddock or --without-haddock was given. +if test "${with_haddock+set}" = set; then + withval="$with_haddock" + HADDOCK="$withval" +else + # Extract the first word of "haddock", so it can be a program name with args. +set dummy haddock; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_HADDOCK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $HADDOCK in + [\\/]* | ?:[\\/]*) + ac_cv_path_HADDOCK="$HADDOCK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_HADDOCK="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +HADDOCK=$ac_cv_path_HADDOCK + +if test -n "$HADDOCK"; then + echo "$as_me:$LINENO: result: $HADDOCK" >&5 +echo "${ECHO_T}$HADDOCK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +fi; + +if test "$HADDOCK" = "" || test ! -f $HADDOCK; then + echo "$as_me:$LINENO: result: HADDOCK is required to build the documentations" >&5 +echo "${ECHO_T}HADDOCK is required to build the documentations" >&6 +fi + +if test "x$prefix" != xNONE; then + DOC_DIR="$prefix/doc/HSQL" +else + DOC_DIR="$ac_default_prefix/doc/HSQL" +fi + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $AR in + [\\/]* | ?:[\\/]*) + ac_cv_path_AR="$AR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +AR=$ac_cv_path_AR + +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + +# Extract the first word of "ld", so it can be a program name with args. +set dummy ld; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $LD in + [\\/]* | ?:[\\/]*) + ac_cv_path_LD="$LD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LD="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +LD=$ac_cv_path_LD + +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + +case $ac_cv_target_alias in + i[3456]86-*-cygwin*|i[3456]86-*-mingw32*) + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_windows_h+set}" = set; then + echo "$as_me:$LINENO: checking for windows.h" >&5 +echo $ECHO_N "checking for windows.h... $ECHO_C" >&6 +if test "${ac_cv_header_windows_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_windows_h" >&5 +echo "${ECHO_T}$ac_cv_header_windows_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking windows.h usability" >&5 +echo $ECHO_N "checking windows.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking windows.h presence" >&5 +echo $ECHO_N "checking windows.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: windows.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: windows.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: windows.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: windows.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: windows.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: windows.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: windows.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: windows.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: windows.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: windows.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for windows.h" >&5 +echo $ECHO_N "checking for windows.h... $ECHO_C" >&6 +if test "${ac_cv_header_windows_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_windows_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_windows_h" >&5 +echo "${ECHO_T}$ac_cv_header_windows_h" >&6 + +fi + + + CFLAGS="$CFLAGS -mno-cygwin" + CPPFLAGS="$CPPFLAGS -D_WIN32_" + ac_includes_default="$ac_includes_default +#include " + WIN32=YES + ;; + *) WIN32=NO + ;; +esac + + + + + +if test $WithODBC = YES; then + if test "${ac_cv_header_sqlext_h+set}" = set; then + echo "$as_me:$LINENO: checking for sqlext.h" >&5 +echo $ECHO_N "checking for sqlext.h... $ECHO_C" >&6 +if test "${ac_cv_header_sqlext_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sqlext_h" >&5 +echo "${ECHO_T}$ac_cv_header_sqlext_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking sqlext.h usability" >&5 +echo $ECHO_N "checking sqlext.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking sqlext.h presence" >&5 +echo $ECHO_N "checking sqlext.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: sqlext.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: sqlext.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: sqlext.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sqlext.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: sqlext.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: sqlext.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: sqlext.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: sqlext.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: sqlext.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sqlext.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for sqlext.h" >&5 +echo $ECHO_N "checking for sqlext.h... $ECHO_C" >&6 +if test "${ac_cv_header_sqlext_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_sqlext_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sqlext_h" >&5 +echo "${ECHO_T}$ac_cv_header_sqlext_h" >&6 + +fi +if test $ac_cv_header_sqlext_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: sqlext.h and libodbc required to build ODBC building." >&5 +echo "$as_me: error: sqlext.h and libodbc required to build ODBC building." >&2;} + { (exit 1); exit 1; }; } +fi + + + case $WIN32 in + YES) + cat >conftest.$ac_ext <<_ACEOF + + #include + #include + + int main() + { + SQLAllocEnv (NULL); + return 0; + } + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBS="${LIBS} -lodbc32" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: sqlext.h and libodbc required to build ODBC building." >&5 +echo "$as_me: error: sqlext.h and libodbc required to build ODBC building." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ;; + NO) + +echo "$as_me:$LINENO: checking for SQLAllocEnv in -lodbc" >&5 +echo $ECHO_N "checking for SQLAllocEnv in -lodbc... $ECHO_C" >&6 +if test "${ac_cv_lib_odbc_SQLAllocEnv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lodbc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char SQLAllocEnv (); +int +main () +{ +SQLAllocEnv (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_odbc_SQLAllocEnv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_odbc_SQLAllocEnv=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_odbc_SQLAllocEnv" >&5 +echo "${ECHO_T}$ac_cv_lib_odbc_SQLAllocEnv" >&6 +if test $ac_cv_lib_odbc_SQLAllocEnv = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBODBC 1 +_ACEOF + + LIBS="-lodbc $LIBS" + +else + { { echo "$as_me:$LINENO: error: sqlext.h and libodbc required to build ODBC building." >&5 +echo "$as_me: error: sqlext.h and libodbc required to build ODBC building." >&2;} + { (exit 1); exit 1; }; } +fi + + ;; + esac + + CPPFLAGS="$CPPFLAGS -Isrc/HSQL" +fi + + +if test $WithPostgreSQL = YES; then + if test $WIN32 = NO; then + # Extract the first word of "pg_config", so it can be a program name with args. +set dummy pg_config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PG_CONFIG="$PG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +PG_CONFIG=$ac_cv_path_PG_CONFIG + +if test -n "$PG_CONFIG"; then + echo "$as_me:$LINENO: result: $PG_CONFIG" >&5 +echo "${ECHO_T}$PG_CONFIG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + if test "$PG_CONFIG" = "" || test ! -f $PG_CONFIG; then + { { echo "$as_me:$LINENO: error: pg_config is required to build PostgreSQL binding" >&5 +echo "$as_me: error: pg_config is required to build PostgreSQL binding" >&2;} + { (exit 1); exit 1; }; } + fi + + incdir=`$PG_CONFIG --includedir` + incdir_server=`$PG_CONFIG --includedir-server` + case $ac_cv_target_alias in + i[3456]86-*-cygwin*|i[3456]86-*-mingw32*) + LDFLAGS="$LDFLAGS -L$(cygpath -m `$PG_CONFIG --libdir`)" + incdir=$(cygpath -m $incdir) + CPPFLAGS="$CPPFLAGS -I$(cygpath -m /usr/include) -I$incdir -I$incdir_server" + ;; + *) LDFLAGS="$LDFLAGS -L`$PG_CONFIG --libdir`" + CPPFLAGS="$CPPFLAGS -I$incdir -I$incdir_server" + ;; + esac + else + CPPFLAGS="$CPPFLAGS -D_MSC_VER" + fi + + if test "${ac_cv_header_libpq_fe_h+set}" = set; then + echo "$as_me:$LINENO: checking for libpq-fe.h" >&5 +echo $ECHO_N "checking for libpq-fe.h... $ECHO_C" >&6 +if test "${ac_cv_header_libpq_fe_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libpq_fe_h" >&5 +echo "${ECHO_T}$ac_cv_header_libpq_fe_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking libpq-fe.h usability" >&5 +echo $ECHO_N "checking libpq-fe.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking libpq-fe.h presence" >&5 +echo $ECHO_N "checking libpq-fe.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: libpq-fe.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: libpq-fe.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: libpq-fe.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libpq-fe.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: libpq-fe.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: libpq-fe.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: libpq-fe.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: libpq-fe.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: libpq-fe.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libpq-fe.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for libpq-fe.h" >&5 +echo $ECHO_N "checking for libpq-fe.h... $ECHO_C" >&6 +if test "${ac_cv_header_libpq_fe_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_libpq_fe_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libpq_fe_h" >&5 +echo "${ECHO_T}$ac_cv_header_libpq_fe_h" >&6 + +fi +if test $ac_cv_header_libpq_fe_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: libpq-fe.h header not found" >&5 +echo "$as_me: error: libpq-fe.h header not found" >&2;} + { (exit 1); exit 1; }; } +fi + + + if test "${ac_cv_header_postgres_h+set}" = set; then + echo "$as_me:$LINENO: checking for postgres.h" >&5 +echo $ECHO_N "checking for postgres.h... $ECHO_C" >&6 +if test "${ac_cv_header_postgres_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_postgres_h" >&5 +echo "${ECHO_T}$ac_cv_header_postgres_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking postgres.h usability" >&5 +echo $ECHO_N "checking postgres.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking postgres.h presence" >&5 +echo $ECHO_N "checking postgres.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: postgres.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: postgres.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: postgres.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: postgres.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: postgres.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: postgres.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: postgres.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: postgres.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: postgres.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: postgres.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for postgres.h" >&5 +echo $ECHO_N "checking for postgres.h... $ECHO_C" >&6 +if test "${ac_cv_header_postgres_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_postgres_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_postgres_h" >&5 +echo "${ECHO_T}$ac_cv_header_postgres_h" >&6 + +fi +if test $ac_cv_header_postgres_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: postgres.h header not found" >&5 +echo "$as_me: error: postgres.h header not found" >&2;} + { (exit 1); exit 1; }; } +fi + + + + case $WIN32 in + YES) +echo "$as_me:$LINENO: checking for PQsetdbLogin in -llibpq" >&5 +echo $ECHO_N "checking for PQsetdbLogin in -llibpq... $ECHO_C" >&6 +if test "${ac_cv_lib_libpq_PQsetdbLogin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-llibpq $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char PQsetdbLogin (); +int +main () +{ +PQsetdbLogin (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_libpq_PQsetdbLogin=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_libpq_PQsetdbLogin=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_libpq_PQsetdbLogin" >&5 +echo "${ECHO_T}$ac_cv_lib_libpq_PQsetdbLogin" >&6 +if test $ac_cv_lib_libpq_PQsetdbLogin = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBLIBPQ 1 +_ACEOF + + LIBS="-llibpq $LIBS" + +else + { { echo "$as_me:$LINENO: error: liblibpq.a library not found" >&5 +echo "$as_me: error: liblibpq.a library not found" >&2;} + { (exit 1); exit 1; }; } +fi +;; + NO) +echo "$as_me:$LINENO: checking for PQsetdbLogin in -lpq" >&5 +echo $ECHO_N "checking for PQsetdbLogin in -lpq... $ECHO_C" >&6 +if test "${ac_cv_lib_pq_PQsetdbLogin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpq $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char PQsetdbLogin (); +int +main () +{ +PQsetdbLogin (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pq_PQsetdbLogin=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pq_PQsetdbLogin=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pq_PQsetdbLogin" >&5 +echo "${ECHO_T}$ac_cv_lib_pq_PQsetdbLogin" >&6 +if test $ac_cv_lib_pq_PQsetdbLogin = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPQ 1 +_ACEOF + + LIBS="-lpq $LIBS" + +else + { { echo "$as_me:$LINENO: error: libpq.a library not found" >&5 +echo "$as_me: error: libpq.a library not found" >&2;} + { (exit 1); exit 1; }; } +fi +;; + esac +fi + + +if test $WithMySQL = YES; then + if test $WIN32 = NO; then + # Extract the first word of "mysql_config", so it can be a program name with args. +set dummy mysql_config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MYSQL_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MYSQL_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_MYSQL_CONFIG="$MYSQL_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MYSQL_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +MYSQL_CONFIG=$ac_cv_path_MYSQL_CONFIG + +if test -n "$MYSQL_CONFIG"; then + echo "$as_me:$LINENO: result: $MYSQL_CONFIG" >&5 +echo "${ECHO_T}$MYSQL_CONFIG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + if test "$MYSQL_CONFIG" = "" || test ! -f $MYSQL_CONFIG; then + { { echo "$as_me:$LINENO: error: mysql_config is required to build MySQL binding" >&5 +echo "$as_me: error: mysql_config is required to build MySQL binding" >&2;} + { (exit 1); exit 1; }; } + fi + + LDFLAGS="$LDFLAGS `$MYSQL_CONFIG --libs`" + + for mysql_opt in `$MYSQL_CONFIG --cflags` + do + case $mysql_opt in + -I*) + CPPFLAGS="$CPPFLAGS ${mysql_opt}";; + esac + done + fi + + if test "${ac_cv_header_mysql_h+set}" = set; then + echo "$as_me:$LINENO: checking for mysql.h" >&5 +echo $ECHO_N "checking for mysql.h... $ECHO_C" >&6 +if test "${ac_cv_header_mysql_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_mysql_h" >&5 +echo "${ECHO_T}$ac_cv_header_mysql_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking mysql.h usability" >&5 +echo $ECHO_N "checking mysql.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking mysql.h presence" >&5 +echo $ECHO_N "checking mysql.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: mysql.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: mysql.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: mysql.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: mysql.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: mysql.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: mysql.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: mysql.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: mysql.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: mysql.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: mysql.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for mysql.h" >&5 +echo $ECHO_N "checking for mysql.h... $ECHO_C" >&6 +if test "${ac_cv_header_mysql_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_mysql_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_mysql_h" >&5 +echo "${ECHO_T}$ac_cv_header_mysql_h" >&6 + +fi +if test $ac_cv_header_mysql_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: mysql.h header not found" >&5 +echo "$as_me: error: mysql.h header not found" >&2;} + { (exit 1); exit 1; }; } +fi + + + + case $WIN32 in + YES) + cat >conftest.$ac_ext <<_ACEOF + + #include + #include + + int main () + { + mysql_init (NULL); + return 0; + } + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBS="${LIBS} -llibmysql" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: liblibmysql.a library not found" >&5 +echo "$as_me: error: liblibmysql.a library not found" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ;; + NO) + +echo "$as_me:$LINENO: checking for mysql_init in -lmysqlclient" >&5 +echo $ECHO_N "checking for mysql_init in -lmysqlclient... $ECHO_C" >&6 +if test "${ac_cv_lib_mysqlclient_mysql_init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmysqlclient $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mysql_init (); +int +main () +{ +mysql_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_mysqlclient_mysql_init=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_mysqlclient_mysql_init=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_mysqlclient_mysql_init" >&5 +echo "${ECHO_T}$ac_cv_lib_mysqlclient_mysql_init" >&6 +if test $ac_cv_lib_mysqlclient_mysql_init = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBMYSQLCLIENT 1 +_ACEOF + + LIBS="-lmysqlclient $LIBS" + +else + { { echo "$as_me:$LINENO: error: libmysql.a library not found" >&5 +echo "$as_me: error: libmysql.a library not found" >&2;} + { (exit 1); exit 1; }; } +fi + + ;; + esac + +fi + + +if test $WithSQLite = YES; then +if test "${ac_cv_header_sqlite_h+set}" = set; then + echo "$as_me:$LINENO: checking for sqlite.h" >&5 +echo $ECHO_N "checking for sqlite.h... $ECHO_C" >&6 +if test "${ac_cv_header_sqlite_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sqlite_h" >&5 +echo "${ECHO_T}$ac_cv_header_sqlite_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking sqlite.h usability" >&5 +echo $ECHO_N "checking sqlite.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking sqlite.h presence" >&5 +echo $ECHO_N "checking sqlite.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: sqlite.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: sqlite.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: sqlite.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sqlite.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: sqlite.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: sqlite.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: sqlite.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: sqlite.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: sqlite.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sqlite.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for sqlite.h" >&5 +echo $ECHO_N "checking for sqlite.h... $ECHO_C" >&6 +if test "${ac_cv_header_sqlite_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_sqlite_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sqlite_h" >&5 +echo "${ECHO_T}$ac_cv_header_sqlite_h" >&6 + +fi +if test $ac_cv_header_sqlite_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: sqlite.h header not found" >&5 +echo "$as_me: error: sqlite.h header not found" >&2;} + { (exit 1); exit 1; }; } +fi + + + +echo "$as_me:$LINENO: checking for sqlite_open in -lsqlite" >&5 +echo $ECHO_N "checking for sqlite_open in -lsqlite... $ECHO_C" >&6 +if test "${ac_cv_lib_sqlite_sqlite_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char sqlite_open (); +int +main () +{ +sqlite_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_sqlite_sqlite_open=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_sqlite_sqlite_open=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_sqlite_sqlite_open" >&5 +echo "${ECHO_T}$ac_cv_lib_sqlite_sqlite_open" >&6 +if test $ac_cv_lib_sqlite_sqlite_open = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSQLITE 1 +_ACEOF + + LIBS="-lsqlite $LIBS" + +else + { { echo "$as_me:$LINENO: error: sqlite.h and libsqlite required to build SQLite building." >&5 +echo "$as_me: error: sqlite.h and libsqlite required to build SQLite building." >&2;} + { (exit 1); exit 1; }; } +fi + + +LDFLAGS="$LDFLAGS -lsqlite" +fi + + +LDFLAGS="${LIBS} ${LDFLAGS}" +LIB_DIRS='"'${GHC_DIR}'"' + +for lib_opt in ${LDFLAGS} +do + case $lib_opt in + -l*) + if test x$DEP_LIBS = x; then + DEP_LIBS='"'`echo ${lib_opt} | sed s,-l,,`'"' + else + DEP_LIBS=$DEP_LIBS,'"'`echo ${lib_opt} | sed s,-l,,`'"' + fi;; + -L*) + LIB_DIRS=$LIB_DIRS,'"'`echo ${lib_opt} | sed s,-L,, | sed s,"'",, | sed s,"'",,`'"' + esac +done + + + + + + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by HSQL $as_me 1.0, which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +HSQL config.status 1.0 +configured by $0, generated by GNU Autoconf 2.57, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + + + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "config.mk" ) CONFIG_FILES="$CONFIG_FILES config.mk:config.mk.in" ;; + "hsql.pkg" ) CONFIG_FILES="$CONFIG_FILES hsql.pkg:hsql.pkg.in" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@target@,$target,;t t +s,@target_cpu@,$target_cpu,;t t +s,@target_vendor@,$target_vendor,;t t +s,@target_os@,$target_os,;t t +s,@WithODBC@,$WithODBC,;t t +s,@WithPostgreSQL@,$WithPostgreSQL,;t t +s,@WithMySQL@,$WithMySQL,;t t +s,@WithSQLite@,$WithSQLite,;t t +s,@GHC@,$GHC,;t t +s,@GHC_DIR@,$GHC_DIR,;t t +s,@HSC2HS@,$HSC2HS,;t t +s,@GHC_PKG@,$GHC_PKG,;t t +s,@HUGS@,$HUGS,;t t +s,@HUGS_DIR@,$HUGS_DIR,;t t +s,@SO_EXT@,$SO_EXT,;t t +s,@FFIHUGS@,$FFIHUGS,;t t +s,@HADDOCK@,$HADDOCK,;t t +s,@DOC_DIR@,$DOC_DIR,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@AR@,$AR,;t t +s,@LD@,$LD,;t t +s,@EGREP@,$EGREP,;t t +s,@WIN32@,$WIN32,;t t +s,@PG_CONFIG@,$PG_CONFIG,;t t +s,@MYSQL_CONFIG@,$MYSQL_CONFIG,;t t +s,@DEP_LIBS@,$DEP_LIBS,;t t +s,@LIB_DIRS@,$LIB_DIRS,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + +echo "creating output directories:" +echo " - build/Database/HSQL" +mkdir -p build/Database/HSQL + +echo +echo "Backends" +echo "--------" +echo +echo "MySQL: $WithMySQL" +echo "PostgreSQL: $WithPostgreSQL" +echo "SQLite: $WithSQLite" +echo "ODBC: $WithODBC" +echo hunk ./test/HSQL/configure.ac 1 +AC_INIT([HSQL],[1.0],[htoolkit-users@lists.sourceforge.net],[hsql]) + +AC_CONFIG_FILES([config.mk:config.mk.in hsql.pkg:hsql.pkg.in]) + +AC_CANONICAL_SYSTEM + +dnl *********************************************** +dnl Enable/Disable ODBC binding +dnl *********************************************** +AC_ARG_ENABLE(odbc, +[ --enable-odbc + Build an ODBC binding for Haskell. +], +[WithODBC=YES], +[WithODBC=NO] +) +AC_SUBST(WithODBC) + +dnl *********************************************** +dnl Enable/Disable PostgreSQL binding +dnl *********************************************** +AC_ARG_ENABLE(postgres, +[ --enable-postgres + Build a PostgreSQL binding for Haskell. +], +[WithPostgreSQL=YES], +[WithPostgreSQL=NO] +) +AC_SUBST(WithPostgreSQL) + +dnl *********************************************** +dnl Enable/Disable MySQL binding +dnl *********************************************** +AC_ARG_ENABLE(mysql, +[ --enable-mysql + Build a MySQL binding for Haskell. +], +[WithMySQL=YES], +[WithMySQL=NO] +) +AC_SUBST(WithMySQL) + +dnl *********************************************** +dnl Enable/Disable SQLite binding +dnl *********************************************** +AC_ARG_ENABLE(sqlite, +[ --enable-sqlite + Build a SQLite binding for Haskell. +], +[WithSQLite=YES], +[WithSQLite=NO] +) +AC_SUBST(WithSQLite) + +dnl *********************************************** +dnl GHC +dnl *********************************************** +AC_ARG_WITH(ghc, +[ --with-ghc= + Use a different command instead of 'ghc' for the Haskell compiler. +], +[GHC="$withval"], +[AC_PATH_PROG(GHC,ghc)] +) + +if test "$GHC" = "" || test ! -f $GHC; then + AC_MSG_RESULT([The build for GHC will be skiped.]) + GHC="" +fi + +if test "x$prefix" != xNONE; then + GHC_DIR="$prefix/lib/HSQL/GHC" +else + GHC_DIR="$ac_default_prefix/lib/HSQL/Hugs" +fi + +AC_SUBST(GHC) +AC_SUBST(GHC_DIR) + +dnl *********************************************** +dnl hsc2hs +dnl *********************************************** +AC_ARG_WITH(hsc2hs, +[ --with-hsc2hs= + Use a different command instead of 'hsc2hs' +], +[HSC2HS="$withval"], +[AC_PATH_PROG(HSC2HS,hsc2hs)] +) + +if test "$HSC2HS" = "" || test ! -f $HSC2HS; then + AC_MSG_ERROR([HSC2HS is required to build the package]) +fi + +AC_SUBST(HSC2HS) + +dnl *********************************************** +dnl ghc-pkg +dnl *********************************************** +AC_ARG_WITH(ghc-pkg, +[ --with-ghc-pkg= + Use a different command instead of 'ghc-pkg' +], +[GHC_PKG="$withval"], +[AC_PATH_PROG(GHC_PKG,ghc-pkg)] +) + +if test "$GHC_PKG" = "" || test ! -f $GHC_PKG; then + AC_MSG_ERROR([ghc-pkg is required to build the package]) +fi + +AC_SUBST(GHC_PKG) + +dnl *********************************************** +dnl HUGS +dnl *********************************************** +AC_ARG_WITH(hugs, +[ --with-hugs= + Use a different command instead of 'hugs' for the Hugs interpreter. +], +[HUGS="$withval"], +[AC_PATH_PROG(HUGS,hugs)] +) + +if test "$HUGS" = "" || test ! -f $HUGS; then + AC_MSG_RESULT([The build for HUGS will be skiped.]) + HUGS="" +fi + +if test "x$prefix" != xNONE; then + HUGS_DIR="$prefix/lib/HSQL/Hugs" +else + HUGS_DIR="$ac_default_prefix/lib/HSQL/Hugs" +fi + +case $ac_cv_target_alias in + i[[3456]]86-*-cygwin*|i[[3456]]86-*-mingw32*) + SO_EXT=dll;; + *) SO_EXT=so;; +esac + +AC_SUBST(HUGS) +AC_SUBST(HUGS_DIR) +AC_SUBST(SO_EXT) + +dnl *********************************************** +dnl FFIHUGS +dnl *********************************************** +AC_ARG_WITH(ffihugs, +[ --with-ffihugs= + Use a different command instead of 'ffihugs' for the Hugs FFI compiler. +], +[FFIHUGS="$withval"], +[AC_PATH_PROG(FFIHUGS,ffihugs)] +) + +if test "$HUGS" != ""; then + if test "$FFIHUGS" = "" || test ! -f $FFIHUGS; then + AC_MSG_ERROR([ffihugs is required to build the Hugs libraries]) + fi +fi + +AC_SUBST(FFIHUGS) + +dnl *********************************************** +dnl HADDOCK +dnl *********************************************** +AC_ARG_WITH(haddock, +[ --with-haddock= + Use a different command instead of 'haddock' for the documentation builder. +], +[HADDOCK="$withval"], +[AC_PATH_PROG(HADDOCK,haddock)] +) + +if test "$HADDOCK" = "" || test ! -f $HADDOCK; then + AC_MSG_RESULT([HADDOCK is required to build the documentations]) +fi + +if test "x$prefix" != xNONE; then + DOC_DIR="$prefix/doc/HSQL" +else + DOC_DIR="$ac_default_prefix/doc/HSQL" +fi + +AC_SUBST(HADDOCK) +AC_SUBST(DOC_DIR) + +dnl *********************************************** +dnl other progs +dnl *********************************************** + +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL + +AC_PATH_PROG(AR,ar) +AC_SUBST(AR) + +AC_PATH_PROG(LD,ld) +AC_SUBST(LD) + +case $ac_cv_target_alias in + i[[3456]]86-*-cygwin*|i[[3456]]86-*-mingw32*) + AC_CHECK_HEADER(windows.h) + CFLAGS="$CFLAGS -mno-cygwin" + CPPFLAGS="$CPPFLAGS -D_WIN32_" + ac_includes_default="$ac_includes_default +#include " + WIN32=YES + ;; + *) WIN32=NO + ;; +esac + +AC_SUBST(WIN32) + +dnl *********************************************** +dnl check for headers and libraries for ODBC +dnl *********************************************** + + +if test $WithODBC = YES; then + AC_CHECK_HEADER(sqlext.h,,AC_MSG_ERROR([sqlext.h and libodbc required to build ODBC building.])) + case $WIN32 in + YES) + AC_COMPILE_IFELSE( + [ + #include + #include + + int main() + { + SQLAllocEnv (NULL); + return 0; + } + ], + [LIBS="${LIBS} -lodbc32"], + AC_MSG_ERROR([sqlext.h and libodbc required to build ODBC building.])) + ;; + NO) + AC_CHECK_LIB(odbc,SQLAllocEnv,,AC_MSG_ERROR([sqlext.h and libodbc required to build ODBC building.])) + ;; + esac + + CPPFLAGS="$CPPFLAGS -Isrc/HSQL" +fi + +dnl *********************************************** +dnl check for headers and libraries for PostgreSQL +dnl *********************************************** + +if test $WithPostgreSQL = YES; then + if test $WIN32 = NO; then + AC_PATH_PROG(PG_CONFIG, pg_config) + + if test "$PG_CONFIG" = "" || test ! -f $PG_CONFIG; then + AC_MSG_ERROR([pg_config is required to build PostgreSQL binding]) + fi + + incdir=`$PG_CONFIG --includedir` + incdir_server=`$PG_CONFIG --includedir-server` + case $ac_cv_target_alias in + i[[3456]]86-*-cygwin*|i[[3456]]86-*-mingw32*) + LDFLAGS="$LDFLAGS -L$(cygpath -m `$PG_CONFIG --libdir`)" + incdir=$(cygpath -m $incdir) + CPPFLAGS="$CPPFLAGS -I$(cygpath -m /usr/include) -I$incdir -I$incdir_server" + ;; + *) LDFLAGS="$LDFLAGS -L`$PG_CONFIG --libdir`" + CPPFLAGS="$CPPFLAGS -I$incdir -I$incdir_server" + ;; + esac + else + CPPFLAGS="$CPPFLAGS -D_MSC_VER" + fi + + AC_CHECK_HEADER(libpq-fe.h,,AC_MSG_ERROR([libpq-fe.h header not found])) + AC_CHECK_HEADER(postgres.h,,AC_MSG_ERROR([postgres.h header not found])) + + case $WIN32 in + YES) AC_CHECK_LIB(libpq,PQsetdbLogin,,AC_MSG_ERROR([liblibpq.a library not found]));; + NO) AC_CHECK_LIB(pq, PQsetdbLogin,,AC_MSG_ERROR([libpq.a library not found]));; + esac +fi + +dnl *********************************************** +dnl check for headers and libraries for MySQL +dnl *********************************************** + +if test $WithMySQL = YES; then + if test $WIN32 = NO; then + AC_PATH_PROG(MYSQL_CONFIG, mysql_config) + + if test "$MYSQL_CONFIG" = "" || test ! -f $MYSQL_CONFIG; then + AC_MSG_ERROR([mysql_config is required to build MySQL binding]) + fi + + LDFLAGS="$LDFLAGS `$MYSQL_CONFIG --libs`" + + for mysql_opt in `$MYSQL_CONFIG --cflags` + do + case $mysql_opt in + -I*) + CPPFLAGS="$CPPFLAGS ${mysql_opt}";; + esac + done + fi + + AC_CHECK_HEADER(mysql.h,, AC_MSG_ERROR([mysql.h header not found])) + + case $WIN32 in + YES) + AC_COMPILE_IFELSE( + [ + #include + #include + + int main () + { + mysql_init (NULL); + return 0; + } + ], + [LIBS="${LIBS} -llibmysql"], + AC_MSG_ERROR([liblibmysql.a library not found])) + ;; + NO) + AC_CHECK_LIB(mysqlclient,mysql_init,,AC_MSG_ERROR([libmysql.a library not found])) + ;; + esac + +fi + +dnl *********************************************** +dnl check for headers and libraries for SQLite +dnl *********************************************** + +if test $WithSQLite = YES; then +AC_CHECK_HEADER(sqlite.h,, AC_MSG_ERROR([sqlite.h header not found])) +AC_CHECK_LIB(sqlite,sqlite_open,,AC_MSG_ERROR([sqlite.h and libsqlite required to build SQLite building.])) + +LDFLAGS="$LDFLAGS -lsqlite" +fi + +dnl *********************************************** +dnl subst +dnl *********************************************** + +LDFLAGS="${LIBS} ${LDFLAGS}" +LIB_DIRS='"'${GHC_DIR}'"' + +for lib_opt in ${LDFLAGS} +do + case $lib_opt in + -l*) + if test x$DEP_LIBS = x; then + DEP_LIBS='"'`echo ${lib_opt} | sed s,-l,,`'"' + else + DEP_LIBS=$DEP_LIBS,'"'`echo ${lib_opt} | sed s,-l,,`'"' + fi;; + -L*) + LIB_DIRS=$LIB_DIRS,'"'`echo ${lib_opt} | sed s,-L,, | sed s,"'",, | sed s,"'",,`'"' + esac +done + +AC_SUBST(CPPFLAGS) +AC_SUBST(LDFLAGS) +AC_SUBST(DEP_LIBS) +AC_SUBST(LIB_DIRS) + +dnl *********************************************** +dnl Create directories and output files +dnl *********************************************** + +AC_OUTPUT + +echo "creating output directories:" +echo " - build/Database/HSQL" +mkdir -p build/Database/HSQL + +echo +echo "Backends" +echo "--------" +echo +echo "MySQL: $WithMySQL" +echo "PostgreSQL: $WithPostgreSQL" +echo "SQLite: $WithSQLite" +echo "ODBC: $WithODBC" +echo hunk ./test/HSQL/doc/Database.HSQL.MySQL.html 1 + + +Database.HSQL.MySQL
 ContentsIndex
Database.HSQL.MySQL
Portability portable
Stability provisional
Maintainer ka2_mail@yahoo.com
Description
The module provides interface to MySQL database +
Synopsis
connect :: String -> String -> String -> String -> IO Connection
module Database.HSQL
Documentation
connect
:: StringServer name
-> StringDatabase name
-> StringUser identifier
-> StringAuthentication string (password)
-> IO Connection
Makes a new connection to the database server.
module Database.HSQL
Produced by Haddock version 0.6
hunk ./test/HSQL/doc/Database.HSQL.ODBC.html 1 + + +Database.HSQL.ODBC
 ContentsIndex
Database.HSQL.ODBC
Portability portable
Stability provisional
Maintainer ka2_mail@yahoo.com
Description
The module provides interface to ODBC +
Synopsis
connect :: String -> String -> String -> IO Connection
driverConnect :: String -> IO Connection
module Database.HSQL
Documentation
connect
:: StringData source name
-> StringUser identifier
-> StringAuthentication string (password)
-> IO Connectionthe returned value represents the new connection
Makes a new connection to the ODBC data source
driverConnect
:: StringConnection string
-> IO Connectionthe returned value represents the new connection
driverConnect is an alternative to connect. It supports data sources that +require more connection information than the three arguments in connect +and data sources that are not defined in the system information.
module Database.HSQL
Produced by Haddock version 0.6
hunk ./test/HSQL/doc/Database.HSQL.PostgreSQL.html 1 + + +Database.HSQL.PostgreSQL
 ContentsIndex
Database.HSQL.PostgreSQL
Portability portable
Stability provisional
Maintainer ka2_mail@yahoo.com
Description
The module provides interface to PostgreSQL database +
Synopsis
connect :: String -> String -> String -> String -> IO Connection
module Database.HSQL
Documentation
connect
:: StringServer name
-> StringDatabase name
-> StringUser identifier
-> StringAuthentication string (password)
-> IO Connection
Makes a new connection to the database server.
module Database.HSQL
Produced by Haddock version 0.6
hunk ./test/HSQL/doc/Database.HSQL.SQLite.html 1 + + +Database.HSQL.SQLite
 ContentsIndex
Database.HSQL.SQLite
Portability portable
Stability provisional
Maintainer ka2_mail@yahoo.com
Description
The module provides interface to SQLite +
Synopsis
connect :: FilePath -> IOMode -> IO Connection
module Database.HSQL
Produced by Haddock version 0.6
hunk ./test/HSQL/doc/Database.HSQL.html 1 + + +Database.HSQL
 ContentsIndex
Database.HSQL
Portability portable
Stability provisional
Maintainer ka2_mail@yahoo.com
Contents
Connect/Disconnect
Command Execution Functions
Retrieving Statement values and types
Transactions
SQL Exceptions handling
Utilities
Metadata
Extra types
Description
The module provides an abstract database interface +
Synopsis
data Connection
disconnect :: Connection -> IO ()
execute :: Connection -> String -> IO ()
data Statement
query :: Connection -> String -> IO Statement
closeStatement :: Statement -> IO ()
fetch :: Statement -> IO Bool
type FieldDef = (String, SqlType, Bool)
data SqlType
= SqlChar Int
| SqlVarChar Int
| SqlLongVarChar Int
| SqlText
| SqlWChar Int
| SqlWVarChar Int
| SqlWLongVarChar Int
| SqlDecimal Int Int
| SqlNumeric Int Int
| SqlSmallInt
| SqlMedInt
| SqlInteger
| SqlReal
| SqlFloat
| SqlDouble
| SqlBit
| SqlTinyInt
| SqlBigInt
| SqlBinary Int
| SqlVarBinary Int
| SqlLongVarBinary Int
| SqlDate
| SqlTime
| SqlTimeTZ
| SqlAbsTime
| SqlRelTime
| SqlTimeInterval
| SqlAbsTimeInterval
| SqlTimeStamp
| SqlDateTime
| SqlDateTimeTZ
| SqlYear
| SqlSET
| SqlENUM
| SqlBLOB
| SqlMoney
| SqlINetAddr
| SqlCIDRAddr
| SqlMacAddr
| SqlPoint
| SqlLSeg
| SqlPath
| SqlBox
| SqlPolygon
| SqlLine
| SqlCircle
| SqlUnknown Int
class SqlBind a
toSqlValue :: SqlBind a => a -> String
getFieldValueMB :: SqlBind a => Statement -> String -> IO (Maybe a)
getFieldValue :: SqlBind a => Statement -> String -> IO a
getFieldValue' :: SqlBind a => Statement -> String -> a -> IO a
getFieldValueType :: Statement -> String -> (SqlType, Bool)
getFieldsTypes :: Statement -> [(String, SqlType, Bool)]
inTransaction :: Connection -> (Connection -> IO a) -> IO a
data SqlError
= SqlError {
seState :: String
seNativeError :: Int
seErrorMsg :: String
}
| SqlNoData
| SqlInvalidHandle
| SqlStillExecuting
| SqlNeedData
| SqlBadTypeCast {
seFieldName :: String
seFieldType :: SqlType
}
| SqlFetchNull {
seFieldName :: String
}
| SqlUnknownField {
seFieldName :: String
}
| SqlUnsupportedOperation
| SqlClosedHandle
catchSql :: IO a -> (SqlError -> IO a) -> IO a
handleSql :: (SqlError -> IO a) -> IO a -> IO a
sqlExceptions :: Exception -> Maybe SqlError
forEachRow :: (Statement -> s -> IO s) -> Statement -> s -> IO s
forEachRow' :: (Statement -> IO ()) -> Statement -> IO ()
collectRows :: (Statement -> IO a) -> Statement -> IO [a]
tables :: Connection -> IO [String]
describe :: Connection -> String -> IO [FieldDef]
data Point = Point Double Double
data Line = Line Point Point
data Path
= OpenPath [Point]
| ClosedPath [Point]
data Box = Box Double Double Double Double
data Circle = Circle Point Double
data Polygon = Polygon [Point]
Connect/Disconnect
data Connection
A Connection type represents a connection to a database, through which you can operate on the it. +In order to create the connection you need to use the connect function from the module for +your prefered backend.
disconnect :: Connection -> IO ()
Closes the connection. Performing disconnect on a connection that has already been +closed has no effect. All other operations on a closed connection will fail.
Command Execution Functions
Once a connection to a database has been successfully established, +the functions described here are used to perform SQL queries and commands.
execute
:: Connectionthe database connection
-> Stringthe text of SQL command
-> IO ()
Submits a command to the database.
data Statement
The Statement type represents a result from the execution of given SQL query.
query
:: Connectionthe database connection
-> Stringthe text of SQL query
-> IO Statementthe associated statement. Must be closed with +the closeStatement function
Executes a query and returns a result set
closeStatement :: Statement -> IO ()
closeStatement stops processing associated with a specific statement, closes any open cursors +associated with the statement, discards pending results, and frees all resources associated with +the statement. Performing closeStatement on a statement that has already been +closed has no effect. All other operations on a closed statement will fail.
fetch :: Statement -> IO Bool
fetch fetches the next rowset of data from the result set. +The values from columns can be retrieved with getFieldValue function.
Retrieving Statement values and types
type FieldDef = (String, SqlType, Bool)
data SqlType
Constructors
SqlChar Int
SqlVarChar Int
SqlLongVarChar Int
SqlText
SqlWChar Int
SqlWVarChar Int
SqlWLongVarChar Int
SqlDecimal Int Int
SqlNumeric Int Int
SqlSmallInt
SqlMedInt
SqlInteger
SqlReal
SqlFloat
SqlDouble
SqlBit
SqlTinyInt
SqlBigInt
SqlBinary Int
SqlVarBinary Int
SqlLongVarBinary Int
SqlDate
SqlTime
SqlTimeTZ
SqlAbsTime
SqlRelTime
SqlTimeInterval
SqlAbsTimeInterval
SqlTimeStamp
SqlDateTime
SqlDateTimeTZ
SqlYear
SqlSET
SqlENUM
SqlBLOB
SqlMoney
SqlINetAddr
SqlCIDRAddr
SqlMacAddr
SqlPoint
SqlLSeg
SqlPath
SqlBox
SqlPolygon
SqlLine
SqlCircle
SqlUnknown IntHSQL returns SqlUnknown tp for all +columns for which it cannot determine +the right type. The tp here is the +internal type code returned from the +backend library
Instances
Eq SqlType
Show SqlType
class SqlBind a
Instances
SqlBind Int
SqlBind Int64
SqlBind Integer
SqlBind String
SqlBind Bool
SqlBind Double
SqlBind ClockTime
SqlBind Point
SqlBind Line
SqlBind Path
SqlBind Box
SqlBind Polygon
SqlBind Circle
SqlBind INetAddr
SqlBind MacAddr
toSqlValue :: SqlBind a => a -> String
getFieldValueMB
:: SqlBind a
=> Statement
-> StringField name
-> IO (Maybe a)Field value or Nothing
Retrieves the value of field with the specified name. +The returned value is Nothing if the field value is null.
getFieldValue
:: SqlBind a
=> Statement
-> StringField name
-> IO aField value
Retrieves the value of field with the specified name. +If the field value is null then the function will throw SqlFetchNull exception.
getFieldValue'
:: SqlBind a
=> Statement
-> StringField name
-> aDefault field value
-> IO aField value
Retrieves the value of field with the specified name. +If the field value is null then the function will return the default value.
getFieldValueType :: Statement -> String -> (SqlType, Bool)
Returns the type and the nullable flag for field with specified name
getFieldsTypes :: Statement -> [(String, SqlType, Bool)]
Returns the list of fields with their types and nullable flags
Transactions
inTransaction
:: Connection
-> (Connection -> IO a)an action
-> IO athe returned value is the result returned from action
The inTransaction function executes the specified action in transaction mode. +If the action completes successfully then the transaction will be commited. +If the action completes with an exception then the transaction will be rolled back +and the exception will be throw again.
SQL Exceptions handling
data SqlError
Constructors
SqlError
seState :: String
seNativeError :: Int
seErrorMsg :: String
SqlNoData
SqlInvalidHandle
SqlStillExecuting
SqlNeedData
SqlBadTypeCast
seFieldName :: String
seFieldType :: SqlType
SqlFetchNull
seFieldName :: String
SqlUnknownField
seFieldName :: String
SqlUnsupportedOperation
SqlClosedHandle
Instances
Typeable SqlError
Show SqlError
catchSql :: IO a -> (SqlError -> IO a) -> IO a
handleSql :: (SqlError -> IO a) -> IO a -> IO a
sqlExceptions :: Exception -> Maybe SqlError
Utilities
forEachRow
:: (Statement -> s -> IO s)an action
-> Statementthe statement
-> sinitial state
-> IO sfinal state
The forEachRow function iterates through the result set in Statement and +executes the given action for each row in the set. The function closes the Statement +after the last row processing or if the given action raises an exception.
forEachRow' :: (Statement -> IO ()) -> Statement -> IO ()
The forEachRow' function is analogous to forEachRow but doesn't provide state. +The function closes the Statement after the last row processing or if the given +action raises an exception.
collectRows :: (Statement -> IO a) -> Statement -> IO [a]
The collectRows function iterates through the result set in Statement and +executes the given action for each row in the set. The values returned from action +are collected and returned as list. The function closes the Statement after the +last row processing or if the given action raises an exception.
Metadata
tables
:: ConnectionDatabase connection
-> IO [String]The names of all tables in the database.
List all tables in the database.
describe
:: ConnectionDatabase connection
-> StringName of a database table
-> IO [FieldDef]The list of fields in the table
List all columns in a table along with their types and nullable flags
Extra types
data Point
Constructors
Point Double Double
Instances
SqlBind Point
Eq Point
Show Point
data Line
Constructors
Line Point Point
Instances
SqlBind Line
Eq Line
Show Line
data Path
Constructors
OpenPath [Point]
ClosedPath [Point]
Instances
SqlBind Path
Eq Path
Show Path
data Box
Constructors
Box Double Double Double Double
Instances
SqlBind Box
Eq Box
Show Box
data Circle
Constructors
Circle Point Double
Instances
SqlBind Circle
Eq Circle
Show Circle
data Polygon
Constructors
Polygon [Point]
Instances
SqlBind Polygon
Eq Polygon
Show Polygon
Produced by Haddock version 0.6
hunk ./test/HSQL/doc/doc-index-B.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (B)
Box
1 (Type/Class)
2 (Data Constructor)
hunk ./test/HSQL/doc/doc-index-C.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (C)
Circle
1 (Type/Class)
2 (Data Constructor)
ClosedPath
Connection
catchSql
closeStatement
collectRows
hunk ./test/HSQL/doc/doc-index-D.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (D)
describe
disconnect
hunk ./test/HSQL/doc/doc-index-E.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (E)
execute
hunk ./test/HSQL/doc/doc-index-F.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (F)
FieldDef
fetch
forEachRow
forEachRow'
hunk ./test/HSQL/doc/doc-index-G.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (G)
getFieldValue
getFieldValue'
getFieldValueMB
getFieldValueType
getFieldsTypes
hunk ./test/HSQL/doc/doc-index-H.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (H)
handleSql
hunk ./test/HSQL/doc/doc-index-I.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (I)
inTransaction
hunk ./test/HSQL/doc/doc-index-L.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (L)
Line
1 (Type/Class)
2 (Data Constructor)
hunk ./test/HSQL/doc/doc-index-O.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (O)
OpenPath
hunk ./test/HSQL/doc/doc-index-P.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (P)
Path
Point
1 (Type/Class)
2 (Data Constructor)
Polygon
1 (Type/Class)
2 (Data Constructor)
hunk ./test/HSQL/doc/doc-index-Q.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (Q)
query
hunk ./test/HSQL/doc/doc-index-S.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (S)
SqlAbsTime
SqlAbsTimeInterval
SqlBLOB
SqlBadTypeCast
SqlBigInt
SqlBinary
SqlBind
SqlBit
SqlBox
SqlCIDRAddr
SqlChar
SqlCircle
SqlClosedHandle
SqlDate
SqlDateTime
SqlDateTimeTZ
SqlDecimal
SqlDouble
SqlENUM
SqlError
1 (Type/Class)
2 (Data Constructor)
SqlFetchNull
SqlFloat
SqlINetAddr
SqlInteger
SqlInvalidHandle
SqlLSeg
SqlLine
SqlLongVarBinary
SqlLongVarChar
SqlMacAddr
SqlMedInt
SqlMoney
SqlNeedData
SqlNoData
SqlNumeric
SqlPath
SqlPoint
SqlPolygon
SqlReal
SqlRelTime
SqlSET
SqlSmallInt
SqlStillExecuting
SqlText
SqlTime
SqlTimeInterval
SqlTimeStamp
SqlTimeTZ
SqlTinyInt
SqlType
SqlUnknown
SqlUnknownField
SqlUnsupportedOperation
SqlVarBinary
SqlVarChar
SqlWChar
SqlWLongVarChar
SqlWVarChar
SqlYear
Statement
seErrorMsg
seFieldName
seFieldType
seNativeError
seState
sqlExceptions
hunk ./test/HSQL/doc/doc-index-T.html 1 + + + (Index)
 ContentsIndex
BCFLOPS
Index (T)
tables
toSqlValue
hunk ./test/HSQL/doc/doc-index.html 1 + + + (Index)
 ContentsIndex
Index
BCFLOPS
hunk ./test/HSQL/doc/haddock.css 1 +/* -------- Global things --------- */ + +BODY { + background-color: #ffffff; + color: #000000; + font-family: sans-serif; + } + +A:link { color: #0000e0; text-decoration: none } +A:visited { color: #0000a0; text-decoration: none } +A:hover { background-color: #e0e0ff; text-decoration: none } + +TABLE.vanilla { + width: 100%; + border-width: 0px; + /* I can't seem to specify cellspacing or cellpadding properly using CSS... */ +} + +/* font is a little too small in MSIE */ +TT { font-size: 100%; } +PRE { font-size: 100%; } + +LI P { margin: 0pt } + +TD { + border-width: 0px; +} + +TABLE.narrow { + border-width: 0px; +} + +TD.s8 { height: 8px; } +TD.s15 { height: 15px; } + +SPAN.keyword { text-decoration: underline; } + +/* --------- Documentation elements ---------- */ + +TD.children { + padding-left: 25px; + } + +TD.synopsis { + padding: 2px; + background-color: #f0f0f0; + font-family: monospace + } + +TD.decl { + padding: 2px; + background-color: #f0f0f0; + font-family: monospace; + white-space: nowrap; + vertical-align: top; + } + +TD.recfield { padding-left: 20px } + +TD.doc { + padding-top: 2px; + padding-left: 10px; + } + +TD.ndoc { + padding: 2px; + } + +TD.rdoc { + padding: 2px; + padding-left: 10px; + width: 100%; + } + +TD.body { + padding-left: 10px + } + +TD.pkg { + width: 100%; + padding-left: 10px +} + +TD.indexentry { + vertical-align: top; + padding-right: 10px + } + +TD.indexannot { + vertical-align: top; + padding-left: 20px; + white-space: nowrap + } + +TD.indexlinks { + width: 100% + } + +/* ------- Section Headings ------- */ + +TD.section1 { + padding-top: 15px; + font-weight: bold; + font-size: 150% + } + +TD.section2 { + padding-top: 10px; + font-weight: bold; + font-size: 130% + } + +TD.section3 { + padding-top: 5px; + font-weight: bold; + font-size: 110% + } + +TD.section4 { + font-weight: bold; + font-size: 100% + } + +/* -------------- The title bar at the top of the page */ + +TD.infohead { + color: #ffffff; + font-weight: bold; + padding-right: 10px; + text-align: left; +} + +TD.infoval { + color: #ffffff; + padding-right: 10px; + text-align: left; +} + +TD.topbar { + background-color: #000099; + padding: 5px; +} + +TD.title { + color: #ffffff; + padding-left: 10px; + width: 100% + } + +TD.topbut { + padding-left: 5px; + padding-right: 5px; + border-left-width: 1px; + border-left-color: #ffffff; + border-left-style: solid; + white-space: nowrap; + } + +TD.topbut A:link { + color: #ffffff + } + +TD.topbut A:visited { + color: #ffff00 + } + +TD.topbut A:hover { + background-color: #6060ff; + } + +TD.topbut:hover { + background-color: #6060ff + } + +TD.modulebar { + background-color: #0077dd; + padding: 5px; + border-top-width: 1px; + border-top-color: #ffffff; + border-top-style: solid; + } + +/* --------- The page footer --------- */ + +TD.botbar { + background-color: #000099; + color: #ffffff; + padding: 5px + } +TD.botbar A:link { + color: #ffffff; + text-decoration: underline + } +TD.botbar A:visited { + color: #ffff00 + } +TD.botbar A:hover { + background-color: #6060ff + } + binary ./test/HSQL/doc/haskell_icon.gif oldhex * newhex *47494638376110001000f70f00000000800000008000808000000080800080008080c0c0c08080 *80ff000000ff00ffff000000ffff00ff00ffffffffff0000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0021f90401000000002c000000001000100007086c0001007840b0a0418202073e38b0b021c387 *07143e2440c0a143040e091cd0787021c686151f84347800e343901d4b12646870e44a930d0952 *3ca832a6cc990555b2bc2992e4c79d3847ea2c88b3a7c89a2c8b8aa43874e941a60810003840b5 *aa55aa511346ddca75abc080003b hunk ./test/HSQL/doc/index.html 1 + + +
 ContentsIndex
Modules
Database
Database.HSQL
Produced by Haddock version 0.6
hunk ./test/HSQL/examples/Main.hs 1 +module Main where + +import Control.Exception +import Database.HSQL.ODBC +import Queries + +-- Change the following definitions to connect to +-- another data source +datasource = "HSQL_Example" +user_id = "" +password = "" + +main = handleSql print $ do + bracket (connect datasource user_id password) disconnect $ \c -> + inTransaction c $ \c -> do + createTables c + insertRecords c + retrieveRecords c + rs <- retrieveRecords c + + putStrLn " Records inserted in table Test are: " + putStrLn "*************************************" + mapM print rs + putStrLn "*************************************" + putStrLn "" + + putStrLn " The tables in your database are: " + putStrLn "*************************************" + mi <- getMetaInfo c + mapM print mi + putStrLn "*************************************" + putStrLn "" + + dropTables c hunk ./test/HSQL/examples/Queries.hs 1 +module Queries where + +import Database.HSQL + +createTables :: Connection -> IO () +createTables c = do + execute c "create table Test(id integer not null, name varchar(255) not null)" + +dropTables :: Connection -> IO () +dropTables c = do + execute c "drop table Test" + +insertRecords :: Connection -> IO () +insertRecords c = do + execute c "insert into Test(id,name) values (1,'Test1')" + execute c "insert into Test(id,name) values (2,'Test2')" + execute c "insert into Test(id,name) values (3,'Test3')" + execute c "insert into Test(id,name) values (4,'Test4')" + +retrieveRecords :: Connection -> IO [(Int,String)] +retrieveRecords c = do + query c "select id, name from Test" >>= collectRows getRow + where + getRow :: Statement -> IO (Int,String) + getRow stmt = do + id <- getFieldValue stmt "id" + name <- getFieldValue stmt "name" + return (id,name) + +getMetaInfo :: Connection -> IO [(String,[FieldDef])] +getMetaInfo c = do + ts <- tables c + mapM (\t -> describe c t >>= \cs -> return (t,cs)) ts hunk ./test/HSQL/hsql.pkg.in 1 - +Package + {name = "hsql", + auto=True, + import_dirs = ["@GHC_DIR@/imports"], + source_dirs = [], + library_dirs = [@LIB_DIRS@], + hs_libraries = ["HSsql"], + extra_libraries = [@DEP_LIBS@], + include_dirs = [], + c_includes = [], + package_deps = ["base"], + extra_ghc_opts = [], + extra_cc_opts = [], + extra_ld_opts = [], + framework_dirs = [], + extra_frameworks = [] + } hunk ./test/HSQL/install-sh 1 +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. +# + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +tranformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 hunk ./test/HSQL/mingw32lib/Makefile 1 +all: liblibmysql.a liblibpq.a libsqlite.a + +liblibmysql.a: libmysql.def + dlltool --input-def libmysql.def --dllname libmysql.dll --output-lib liblibmysql.a -k + +liblibpq.a: libpqdll.def + dlltool --input-def libpqdll.def --dllname libpq.dll --output-lib liblibpq.a -k + +libsqlite.a: sqlite.def + dlltool --input-def sqlite.def --dllname sqlite.dll --output-lib libsqlite.a -k hunk ./test/HSQL/mingw32lib/libmysql.def 1 +LIBRARY LIBMYSQL.DLL + +EXPORTS + _dig_vec + bmove_upp + delete_dynamic + init_dynamic_array + insert_dynamic + int2str + is_prefix + list_add + list_delete + max_allowed_packet + my_casecmp + my_end + my_init + my_malloc + my_memdup + my_no_flags_free + my_realloc + my_strdup + my_thread_end + my_thread_init + myodbc_remove_escape@8 + mysql_affected_rows@4 + mysql_change_user@16 + mysql_character_set_name@4 + mysql_close@4 + mysql_connect@16 + mysql_create_db@8 + mysql_data_seek@12 + mysql_debug@4 + mysql_drop_db@8 + mysql_dump_debug_info@4 + mysql_eof@4 + mysql_errno@4 + mysql_error@4 + mysql_escape_string@12 + mysql_fetch_field@4 + mysql_fetch_field_direct@8 + mysql_fetch_fields@4 + mysql_fetch_lengths@4 + mysql_fetch_row@4 + mysql_field_count@4 + mysql_field_seek@8 + mysql_field_tell@4 + mysql_free_result@4 + mysql_get_client_info@0 + mysql_get_host_info@4 + mysql_get_proto_info@4 + mysql_get_server_info@4 + mysql_info@4 + mysql_init@4 + mysql_insert_id@4 + mysql_kill@8 + mysql_list_dbs@8 + mysql_list_fields@12 + mysql_list_processes@4 + mysql_list_tables@8 + mysql_num_fields@4 + mysql_num_rows@4 + mysql_odbc_escape_string@28 + mysql_options@12 + mysql_ping@4 + mysql_query@8 + mysql_read_query_result@4 + mysql_real_connect@32 + mysql_real_escape_string@16 + mysql_real_query@12 + mysql_refresh@8 + mysql_row_seek@8 + mysql_row_tell@4 + mysql_select_db@8 + mysql_send_query@12 + mysql_shutdown@4 + mysql_stat@4 + mysql_store_result@4 + mysql_thread_id@4 + mysql_thread_safe@0 + mysql_use_result@4 + net_buffer_length + set_dynamic + strcend + strdup_root + strfill + strinstr + strmake + strmov + strxmov + mysql_ssl_cipher@4 + mysql_ssl_clear@4 + mysql_ssl_set@20 hunk ./test/HSQL/mingw32lib/libpqdll.def 1 +; DEF file for MS VC++ +LIBRARY LIBPQ +DESCRIPTION "PostgreSQL Client Library" +EXPORTS + PQconnectdb @ 1 + PQsetdbLogin @ 2 + PQconndefaults @ 3 + PQfinish @ 4 + PQreset @ 5 + PQrequestCancel @ 6 + PQdb @ 7 + PQuser @ 8 + PQpass @ 9 + PQhost @ 10 + PQport @ 11 + PQtty @ 12 + PQoptions @ 13 + PQstatus @ 14 + PQerrorMessage @ 15 + PQsocket @ 16 + PQbackendPID @ 17 + PQtrace @ 18 + PQuntrace @ 19 + PQsetNoticeProcessor @ 20 + PQexec @ 21 + PQnotifies @ 22 + PQsendQuery @ 23 + PQgetResult @ 24 + PQisBusy @ 25 + PQconsumeInput @ 26 + PQgetline @ 27 + PQputline @ 28 + PQgetlineAsync @ 29 + PQputnbytes @ 30 + PQendcopy @ 31 + PQfn @ 32 + PQresultStatus @ 33 + PQntuples @ 34 + PQnfields @ 35 + PQbinaryTuples @ 36 + PQfname @ 37 + PQfnumber @ 38 + PQftype @ 39 + PQfsize @ 40 + PQfmod @ 41 + PQcmdStatus @ 42 + PQoidStatus @ 43 + PQcmdTuples @ 44 + PQgetvalue @ 45 + PQgetlength @ 46 + PQgetisnull @ 47 + PQclear @ 48 + PQmakeEmptyPGresult @ 49 + PQprint @ 50 + PQdisplayTuples @ 51 + PQprintTuples @ 52 + lo_open @ 53 + lo_close @ 54 + lo_read @ 55 + lo_write @ 56 + lo_lseek @ 57 + lo_creat @ 58 + lo_tell @ 59 + lo_unlink @ 60 + lo_import @ 61 + lo_export @ 62 + pgresStatus @ 63 + PQmblen @ 64 + PQresultErrorMessage @ 65 + PQresStatus @ 66 + termPQExpBuffer @ 67 + appendPQExpBufferChar @ 68 + initPQExpBuffer @ 69 + resetPQExpBuffer @ 70 + PQoidValue @ 71 + PQclientEncoding @ 72 + PQenv2encoding @ 73 + appendBinaryPQExpBuffer @ 74 + appendPQExpBufferStr @ 75 + destroyPQExpBuffer @ 76 + createPQExpBuffer @ 77 + PQconninfoFree @ 78 + PQconnectPoll @ 79 + PQconnectStart @ 80 + PQflush @ 81 + PQisnonblocking @ 82 + PQresetPoll @ 83 + PQresetStart @ 84 + PQsetClientEncoding @ 85 + PQsetnonblocking @ 86 + PQfreeNotify @ 87 + PQescapeString @ 88 + PQescapeBytea @ 89 + printfPQExpBuffer @ 90 + appendPQExpBuffer @ 91 + pg_encoding_to_char @ 92 + pg_utf_mblen @ 93 + PQunescapeBytea @ 94 + PQfreemem @ 95 + PQtransactionStatus @ 96 + PQparameterStatus @ 97 + PQprotocolVersion @ 98 + PQsetErrorVerbosity @ 99 + PQsetNoticeReceiver @ 100 + PQexecParams @ 101 + PQsendQueryParams @ 102 + PQputCopyData @ 103 + PQputCopyEnd @ 104 + PQgetCopyData @ 105 + PQresultErrorField @ 106 + PQftable @ 107 + PQftablecol @ 108 + PQfformat @ 109 + PQexecPrepared @ 110 + PQsendQueryPrepared @ 111 hunk ./test/HSQL/mingw32lib/sqlite.def 1 +EXPORTS +sqlite_open +sqlite_close +sqlite_exec +sqlite_last_insert_rowid +sqlite_error_string +sqlite_interrupt +sqlite_complete +sqlite_busy_handler +sqlite_busy_timeout +sqlite_get_table +sqlite_free_table +sqlite_mprintf +sqlite_vmprintf +sqlite_exec_printf +sqlite_exec_vprintf +sqlite_get_table_printf +sqlite_get_table_vprintf +sqlite_freemem +sqlite_libversion +sqlite_libencoding +sqlite_changes +sqlite_create_function +sqlite_create_aggregate +sqlite_function_type +sqlite_user_data +sqlite_aggregate_context +sqlite_aggregate_count +sqlite_set_result_string +sqlite_set_result_int +sqlite_set_result_double +sqlite_set_result_error +sqliteMalloc +sqliteFree +sqliteRealloc +sqlite_set_authorizer +sqlite_trace +sqlite_compile +sqlite_step +sqlite_finalize hunk ./test/HSQL/out.build 1 +Chasing modules from: Setup.lhs +Skipping Distribution.Compat.RawSystem ( ../../Distribution/Compat/RawSystem.hs, ../../Distribution/Compat/RawSystem.o ) +Skipping Distribution.Compat.Exception ( ../../Distribution/Compat/Exception.hs, ../../Distribution/Compat/Exception.o ) +Skipping Distribution.Extension ( ../../Distribution/Extension.hs, ../../Distribution/Extension.o ) +Skipping Distribution.PreProcess.Unlit ( ../../Distribution/PreProcess/Unlit.hs, ../../Distribution/PreProcess/Unlit.o ) +Skipping Distribution.Compat.FilePath ( ../../Distribution/Compat/FilePath.hs, ../../Distribution/Compat/FilePath.o ) +Skipping Distribution.Compat.Directory ( ../../Distribution/Compat/Directory.hs, ../../Distribution/Compat/Directory.o ) +Skipping Distribution.Compat.ReadP ( ../../Distribution/Compat/ReadP.hs, ../../Distribution/Compat/ReadP.o ) +Skipping Distribution.License ( ../../Distribution/License.hs, ../../Distribution/License.o ) +Skipping Distribution.Version ( ../../Distribution/Version.hs, ../../Distribution/Version.o ) +Skipping Distribution.Package ( ../../Distribution/Package.hs, ../../Distribution/Package.o ) +Skipping Distribution.GetOpt ( ../../Distribution/GetOpt.hs, ../../Distribution/GetOpt.o ) +Skipping Distribution.Setup ( ../../Distribution/Setup.hs, ../../Distribution/Setup.o ) +Skipping Distribution.Simple.Utils ( ../../Distribution/Simple/Utils.hs, ../../Distribution/Simple/Utils.o ) +Skipping Distribution.ParseUtils ( ../../Distribution/ParseUtils.hs, ../../Distribution/ParseUtils.o ) +Skipping Distribution.PackageDescription ( ../../Distribution/PackageDescription.hs, ../../Distribution/PackageDescription.o ) +Compiling Distribution.Make ( ../../Distribution/Make.hs, ../../Distribution/Make.o ) +Skipping Main ( Setup.lhs, Setup.o ) +Linking ... binary ./test/HSQL/setup oldhex * newhex *7f454c460101010000000000000000000200030001000000b0990408340000001ca60d00000000 *00340020000800280022001f000600000034000000348004083480040800010000000100000500 *000004000000030000003401000034810408348104081300000013000000040000000100000001 *00000000000000008004080080040894110d0094110d00050000000010000001000000a0110d00 *a0a11108a0a1110848750000c02b01000600000000100000020000006c840d006c1412086c1412 *08e0000000e0000000060000000400000004000000480100004881040848810408200000002000 *0000040000000400000050e5746468110d0068911108689111082c0000002c0000000400000004 *00000051e57464000000000000000000000000000000000000000007000000040000002f6c6962 *2f6c642d6c696e75782e736f2e320000040000001000000001000000474e550000000000020000 *000200000000000000610000006b00000016000000030000005600000000000000000000003300 *0000000000000000000000000000230000006a0000001300000050000000570000004700000043 *0000001a0000002a0000002800000019000000520000004200000039000000340000005c000000 *400000001500000055000000620000000000000000000000170000000c0000005e000000630000 *000000000051000000210000006100000000000000000000000000000000000000660000000000 *000027000000650000003a000000530000000000000035000000000000005f0000000000000000 *0000000000000069000000410000002200000000000000040000005b000000360000000f000000 *37000000000000006400000038000000540000000d0000003c0000000700000000000000000000 *00000000002b0000000000000068000000060000003f0000004a000000240000004f0000001e00 *00005a000000000000004b00000000000000000000003d00000000000000670000005d00000045 *0000004e000000440000001f000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000e000000000000000000000000000000000000000000000000000000090000001100 *000000000000000000001200000000000000000000001c00000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000001400000000000000 *18000000000000002e0000000000000000000000050000003000000000000000000000001d0000 *000000000000000000020000000000000001000000000000000000000029000000000000000000 *00000000000000000000000000000b0000000000000000000000000000003e0000001b00000000 *00000000000000000000000000000000000000310000003b0000002c0000002d00000020000000 *0a0000004800000046000000080000004900000058000000000000002500000000000000000000 *00590000003200000000000000000000002f000000600000004d0000004c000000000000002600 *0000000000001000000000000000000000000000000000000000000000004b000000000000003d *000000120000008d030000000000003a000000120000007e01000000000000082c000012000000 *1203000000000000be0000001200000034020000000000003a0000001200000069020000000000 *005300000012000000ef01000000000000ec00000012000000d701000000000000080000001200 *0000560000006c141208000000001100f1ff5f000000000000008e02000012000000fb02000000 *0000007c0000001200000099020000000000003f00000012000000b00200000000000071000000 *12000000d7020000000000005c00000012000000f501000000000000d400000012000000690100 *0000000000bc000000120000009f030000000000002300000012000000d8020000000000005a00 *000012000000c701000000000000f6000000120000001702000000000000df0000001200000050 *02000000000000360000001200000057020000000000003a00000012000000d002000000000000 *9c0000001200000010020000000000009400000012000000a901000000000000ad000000120000 *0083030000000000001902000012000000b6020000000000000106000012000000010300000000 *000039000000120000002503000000000000d3000000120000002e020000000000003a00000012 *0000006f0000000000000001040000120000007a000000000000004e0200001200000096000000 *a49304080000000012000a00fc01000000000000b501000012000000ba010000000000003a0000 *0012000000b2010000000000008b00000012000000e5010000000000003c000000120000008500 *000000000000d101000012000000c002000000000000d300000012000000900100000017120804 *00000011001700c90200000417120804000000110017002802000000000000fa01000012000000 *900000000000000043000000120000009c00000000000000d60500001200000076010000000000 *0040000000120000009e030000000000003b3b000012000000a700000000000000320500001200 *00005b010000000000007c000000120000001e020000000000004700000012000000f102000000 *000000d300000012000000b200000000000000630500001200000055030000000000007f000000 *120000006d030000000000000d02000012000000b2030000000000004c00000012000000bd0000 *00000000007f02000012000000c800000000000000de0000001200000063010000000000006100 *000012000000dd02000000000000d800000012000000d7000000000000001b0200001200000073 *020000000000001001000012000000cd030000e8161208000000001000f1ff4303000000000000 *fa00000012000000a7030000000000004600000012000000e600000000000000b2010000120000 *006102000000000000ba01000012000000f400000070ec10080000000012000d007d0300000000 *00007d00000012000000de010000000000004600000012000000bf03000000000000be00000012 *000000af0200000000000080010000120000003b02000000000000b901000012000000c1010000 *000000003600000012000000fa00000000000000c8000000120000000a02000000000000360000 *0012000000be030000000000003300000012000000740300000000000086000000120000007d02 *0000000000003a000000120000009102000000000000c0010000120000009d010000000000004d *000000120000003e03000000000000d100000012000000ce01000000000000d300000012000000 *c6030000e8161208000000001000f1ff0701000060151208000000001100f1ffad030000000000 *00b100000012000000d903000060cd1208000000001000f1ff97010000000000003a0000001200 *0000a0020000000000002801000012000000030200000000000035000000120000008a02000000 *00000052000000120000003d0300000000000013000000120000004802000000000000a6000000 *120000001d010000000000008f010000120000002b0100000000000068000000120000002e0300 *00a4ec10080400000011000e005d03000000000000870100001200000069030000000000001400 *000012000000a7020000000000003400000012000000fa0200000000000065010000120000000c *000000000000000000000020000000e30200000000000071000000120000001b03000000000000 *470000001200000043020000000000007c00000012000000930300000000000010010000120000 *0046010000000000007f0200001200000020000000000000000000000020000000390000000000 *00007f00000012000000006c6962646c2e736f2e32005f4a765f5265676973746572436c617373 *6573005f5f676d6f6e5f73746172745f5f006c69626d2e736f2e36006c64657870006c6962676d *702e736f2e33005f5f676d706e5f636d70005f44594e414d4943005f5f676d707a5f6469766578 *616374005f5f676d707a5f676364005f5f676d707a5f6d756c005f5f676d707a5f636f6d005f5f *676d707a5f696e6974005f5f676d707a5f786f72005f5f676d707a5f616e64005f5f676d707a5f *696f72005f5f676d707a5f616464005f5f676d707a5f666469765f7172005f5f676d707a5f7464 *69765f7172005f5f676d707a5f746469765f72005f66696e69005f5f676d706e5f6763645f3100 *5f474c4f42414c5f4f46465345545f5441424c455f005f5f676d707a5f746469765f71005f5f67 *6d705f7365745f6d656d6f72795f66756e6374696f6e73005f5f676d707a5f737562006c696263 *2e736f2e36007761697470696400706175736500736967696e7465727275707400737973636f6e *66005f5f737472746f645f696e7465726e616c007374646f7574007574696d6500736967656d70 *7479736574007374726572726f72006d656d6d6f7665006d756e6d61700074696d657300676574 *656e7600697377616c70686100676574706964006d656d637079007365746974696d6572006578 *65636c00706572726f72006d616c6c6f630069736174747900726d6469720073656c6563740066 *666c757368007369676164647365740061626f72740063686d6f640072656e616d650073747272 *6368720072656164007374726e63707900756e6c696e6b00676574727573616765007265616c6c *6f6300736967616374696f6e005f5f787374617436340067657474696d656f66646179006d656d *736574006f70656e64697200737472636d700067657463776400737072696e74660066636c6f73 *65007365746c6f63616c6500697377646967697400737464657272006d6d617036340076666f72 *6b006670757463005f5f63747970655f625f6c6f6300697377757070657200667772697465005f *5f6572726e6f5f6c6f636174696f6e00746f776c6f7765720073696764656c7365740069737761 *6c6e756d005f494f5f737464696e5f75736564005f65786974005f5f6c6962635f73746172745f *6d61696e006c7365656b3634007265616464697236345f72006162730065786563767000636c6f *73656469720066636e746c00746373657461747472006d6b646972005f5f667873746174363400 *76667072696e746600726169736500667265650073696770726f636d61736b00666f70656e3634 *005f6564617461005f5f6273735f7374617274005f656e6400474c4942435f322e3000474c4942 *435f322e3300474c4942435f322e3200474c4942435f322e310000000000020002000200020002 *000200020001000000020002000200020002000200020002000200020002000200030002000200 *020002000200020002000000000001000200020002000200000002000200020002000000000002 *000200000002000200020000000300020002000000000002000200000004000100020002000000 *020001000200020003000300020002000000020003000200020002000200020002000100010002 *000100020002000200020002000200000000000100040002000200020000000500020002000400 *000000000600010001002f00000010000000200000001069690d00000600de0300000000000001 *0004005101000010000000000000001369690d00000500e8030000100000001269690d00000400 *f2030000100000001169690d00000300fc030000100000001069690d00000200de030000000000 *00e416120806690000001712080528000004171208052900006c15120807010000701512080702 *0000741512080703000078151208070400007c1512080705000080151208070600008415120807 *07000088151208070800008c151208070a000090151208070b000094151208070c000098151208 *070d00009c151208070e0000a0151208070f0000a415120807100000a815120807110000ac1512 *0807120000b015120807130000b415120807140000b815120807150000bc15120807160000c015 *120807170000c415120807180000c815120807190000cc151208071a0000d0151208071b0000d4 *151208071c0000d8151208071d0000dc151208071e0000e0151208071f0000e415120807200000 *e815120807220000ec15120807230000f015120807240000f415120807250000f8151208072600 *00fc1512080727000000161208072a000004161208072b000008161208072c00000c161208072d *000010161208072e000014161208072f000018161208073000001c161208073100002016120807 *320000241612080733000028161208073400002c16120807350000301612080736000034161208 *0737000038161208073800003c1612080739000040161208073a000044161208073b0000481612 *08073c00004c161208073e000050161208073f0000541612080740000058161208074100005c16 *1208074300006016120807440000641612080745000068161208074600006c1612080747000070 *16120807480000741612080749000078161208074a00007c161208074b000080161208074c0000 *84161208074d000088161208074e00008c161208074f0000901612080750000094161208075100 *0098161208075400009c16120807560000a016120807570000a416120807580000a81612080759 *0000ac161208075a0000b0161208075b0000b4161208075c0000b8161208075d0000bc16120807 *5f0000c016120807600000c416120807610000c816120807620000cc16120807640000d0161208 *07650000d416120807660000d816120807670000dc16120807680000e0161208076a00005589e5 *83ec08e825060000e88c060000e887580c00c9c300ff3564151208ff256815120800000000ff25 *6c1512086800000000e9e0ffffffff25701512086808000000e9d0ffffffff2574151208681000 *0000e9c0ffffffff25781512086818000000e9b0ffffffff257c1512086820000000e9a0ffffff *ff25801512086828000000e990ffffffff25841512086830000000e980ffffffff258815120868 *38000000e970ffffffff258c1512086840000000e960ffffffff25901512086848000000e950ff *ffffff25941512086850000000e940ffffffff25981512086858000000e930ffffffff259c1512 *086860000000e920ffffffff25a01512086868000000e910ffffffff25a41512086870000000e9 *00ffffffff25a81512086878000000e9f0feffffff25ac1512086880000000e9e0feffffff25b0 *1512086888000000e9d0feffffff25b41512086890000000e9c0feffffff25b815120868980000 *00e9b0feffffff25bc15120868a0000000e9a0feffffff25c015120868a8000000e990feffffff *25c415120868b0000000e980feffffff25c815120868b8000000e970feffffff25cc15120868c0 *000000e960feffffff25d015120868c8000000e950feffffff25d415120868d0000000e940feff *ffff25d815120868d8000000e930feffffff25dc15120868e0000000e920feffffff25e0151208 *68e8000000e910feffffff25e415120868f0000000e900feffffff25e815120868f8000000e9f0 *fdffffff25ec1512086800010000e9e0fdffffff25f01512086808010000e9d0fdffffff25f415 *12086810010000e9c0fdffffff25f81512086818010000e9b0fdffffff25fc1512086820010000 *e9a0fdffffff25001612086828010000e990fdffffff25041612086830010000e980fdffffff25 *081612086838010000e970fdffffff250c1612086840010000e960fdffffff2510161208684801 *0000e950fdffffff25141612086850010000e940fdffffff25181612086858010000e930fdffff *ff251c1612086860010000e920fdffffff25201612086868010000e910fdffffff252416120868 *70010000e900fdffffff25281612086878010000e9f0fcffffff252c1612086880010000e9e0fc *ffffff25301612086888010000e9d0fcffffff25341612086890010000e9c0fcffffff25381612 *086898010000e9b0fcffffff253c16120868a0010000e9a0fcffffff254016120868a8010000e9 *90fcffffff254416120868b0010000e980fcffffff254816120868b8010000e970fcffffff254c *16120868c0010000e960fcffffff255016120868c8010000e950fcffffff255416120868d00100 *00e940fcffffff255816120868d8010000e930fcffffff255c16120868e0010000e920fcffffff *256016120868e8010000e910fcffffff256416120868f0010000e900fcffffff256816120868f8 *010000e9f0fbffffff256c1612086800020000e9e0fbffffff25701612086808020000e9d0fbff *ffff25741612086810020000e9c0fbffffff25781612086818020000e9b0fbffffff257c161208 *6820020000e9a0fbffffff25801612086828020000e990fbffffff25841612086830020000e980 *fbffffff25881612086838020000e970fbffffff258c1612086840020000e960fbffffff259016 *12086848020000e950fbffffff25941612086850020000e940fbffffff25981612086858020000 *e930fbffffff259c1612086860020000e920fbffffff25a01612086868020000e910fbffffff25 *a41612086870020000e900fbffffff25a81612086878020000e9f0faffffff25ac161208688002 *0000e9e0faffffff25b01612086888020000e9d0faffffff25b41612086890020000e9c0faffff *ff25b81612086898020000e9b0faffffff25bc16120868a0020000e9a0faffffff25c016120868 *a8020000e990faffffff25c416120868b0020000e980faffffff25c816120868b8020000e970fa *ffffff25cc16120868c0020000e960faffffff25d016120868c8020000e950faffffff25d41612 *0868d0020000e940faffffff25d816120868d8020000e930faffffff25dc16120868e0020000e9 *20faffffff25e016120868e8020000e910faffff0000000031ed5e89e183e4f050545268e0eb10 *086880eb1008515668e0b70f08e87bfdfffff490905589e553e8000000005b81c3837b0d00508b *838401000085c07402ffd08b5dfcc9c3909090909090909090905589e583ec08803d0817120800 *752da1a8a111088b1085d2741b8db60000000083c004a3a8a11108ffd2a1a8a111088b1085d275 *ebc6050817120801c9c389f65589e583ec08a15c15120885c07421b80000000085c07418c70424 *5c151208e89c65fbf78db6000000008dbf0000000089ec5dc3e900000000833daca1110800751e *c705aca1110801000000c74500819b040883c504c7450090310c0883c50483c5fcff650089f6e9 *c7ffffff8d760014a21108b09a040800000200180001008d45f43b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e86d630b0083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcbe14a2110883c5f4e98c6c0b0034d5110814a21108109b04080000 *0200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e809630b0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f414a2 *1108be34d5110883c5f0e98d760b0090e900000000833dd0a11108000f8596000000c705d0a111 *0801000000c7450074320c0883c504c74500f0440c0883c504c745005c460c0883c504c7450004 *aa0b0883c504c7450004a10b0883c504c7450035d2040883c504c74500f8400c0883c504c74500 *3519050883c504c74500919f050883c504c745008db3050883c504c74500e524060883c504c745 *009162070883c504c745006dc4090883c504c7450090310c0883c50483c5fcff650089f6e4d111 *08d4d1110844d11108dcd21108d0d5110860d51108409c040801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4be60d5110883c5f0e990750b00309c040800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8ec1008894df4 *bed4d1110883c5f0e977730b008d76002c9c040801000100130003008d45ec3b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8849c04088d4ff8894df48b *56048955f0bee4d1110883c5ece910790b00309c040800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9b0ec1008894df4bed4d1110883c5f0e9eb720b008d7600 *2c9c040801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ecc09c04088b46048947f0c747f8109d04088d47ec8945f48d47f889 *45f0bee4d1110883c5ece977780b008d76002c9c040801000100130017008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f84c9d04088b4e04894f *fc8d57f88955f4c745f0d0d51108be44d1110883c5ece91d780b00902c9c040801000000240037 *0083c7183b7b5c760ac7436c06000000ff63f8c747ec509c04088b45048947f0c747f8ac9d0408 *8b45048947fc8d47ec8945048d47f88945008b760883c5fce9cd770b00902c9c04080400010000 *00000011003f008d45f83b43547308bed4a11108ff63fcbedcd21108c745fc049e040883c5fcff *268d7600e4d11108d4d11108b8d3110844d11108dcd21108b0d51108b8d5110858d21108b0d011 *080000000024000000c745000cd211088b760c83c5fce94e730b0089f6bedcd21108c74500a89e *0408ff2689f6909e040800000200120001008d45f03b4354720883c7083b7b5c760ac7436c0200 *0000ff63f8c745f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d51108 *83c5f0e9ec720b009c9e040801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fcb80a1208c70700d211088b4e *04894df48d57f88955f0beb0d0110883c5ece99b760b008d7600849e040801000100130041008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f828 *9f04088b4e04894ffc8d57f88955f4beb8d3110883c5f0e93c720b00809e040800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c8ec1008894df4bed4d1110883 *c5f0e923700b008d76007c9e040801000100130007018d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec889f04088b46048947f0c747f8d89f0408 *8d47ec8945f48d47f88945f0bee4d1110883c5ece9af750b008d7600949e040800000200120003 *008d45f03b43547303ff63f8c745f8d46d10088975fcc745f458d21108beb8d5110883c5f0e96b *710b008d76007c9e0408010001001300cf018d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec14a004088b46048947f0c747f874a004088d47ec89 *45f48d47f88945f0be44d1110883c5ece917750b008d76007c9e0408010000002400ef0183c718 *3b7b5c760ac7436c06000000ff63f8c747ecd89e0408c747f8aca004088b45048947fc8d4fec89 *4d048d57f88955008b760883c5fce9cb740b008d7600897500bedcd21108c745fc0ca1040883c5 *fcff264ca10408bc9e04087c9e0408000000002500ff017c9e040804000100000000001100ff01 *8d45f83b43547308bedca11108ff63fc8b7500c7450074a10408ff26e4d1110854d211084cd211 *08d4d1110844d11108d8d01108dcd21108ccd21108b0b011080cac11083cac110804ac110814ac *110834ac1108fcab1108e4ab1108e8ad1108e0ad1108a4a91108a0d01108d0d5110860d51108ac *d51108b0d51108d4a11108dca11108a0a104081a000000ffffff03a0a104081a000000bfffff03 *a0a104081a000000bfffbf03a0a104081a000000bfffbd03a0a104081a000000bfffbd03a0a104 *081a000000bfffbd0301000000240000008b7608e9a86f0b00c0a1040801000100130001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beb0b01108c745f058a2040883c5 *f0ff26aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e0ec1008894df4bed4d1110883c5f0e9576d0b008d7600a0a1040801000100130009018d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec6ca204 *088b46048947f0c747f8a4a204088d47ec8945f48d47f88945f0bee4d1110883c5ece9e3720b00 *8d7600a0a104081a0000009d009803a0a104081a0000009d009803a0a10408190000009d009801 *aca104081500000011001200fca1040801000100130001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4beb0d5110883c5f0e9706e0b00aca104081200000011000200aca1 *04081200000001000200aca104081200000001000200aca1040800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b91ced1008894df4bed4d1110883c5f0e9336c0b *008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8c8a304088d47f8894500bed0d511 *0883c5fce9e46d0b00aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b930ed1008894df4bed4d1110883c5f0e9cb6b0b008d760083c70c3b7b5c760ac7 *436c03000000ff63f8c747f830a404088d47f8894500bed0d5110883c5fce97c6d0b0060a40408 *f8a30408b0a30408000000002500ffffa4a30408010000002400ffffc74500fcd211088b450489 *45fc8b7608c74504a0a4040883c5f8e949710b009098a30408010001001300ffff8d45e83b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4beccd21108c745f0aca4040883c5f0ff2658 *a3040804000100010000000c00ffff8d45f83b4354720883c7183b7b5c760ac7436c06000000ff *63fcc747ec70a304088b45008947f0c747f8d8a404088b45008947fc8d47ec8945008d47f88945 *fc8b760483c5f8e9b5700b0090a0a10408190000001d000801a0a10408140000000d000800a0a1 *0408140000000d000800be00d2110883c504ff25c46d100889f6aca1040800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b948ed1008894df4bed4d1110883c5f0 *e95b6a0b008d7600a0a1040801000100130009008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8a0a504088b4e04894df48d57f88955f0bee4d1 *110883c5ece9f46f0b0083c7183b7b5c760ac7436c06000000ff63f8c747ecdca504088b460489 *47f0c747f87cdc0b088d4fec894ffcc70700d211088d77f883c504ff25c06d100889f620a60408 *84a50408a0a104080000000025000900a0a1040800000000240009008b7624c7450074a60408ff *26a0a1040801000100130009008d45f43b43547303ff63f8c745f8d46d10088975fc8b7604c745 *f480a6040883c5f4ff26be00d2110883c504ff25c46d100889f6aca1040800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954ed1008894df4bed4d1110883c5f0 *e923690b008d7600a0a1040801000100130009008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8d8a604088b4e04894df48d57f88955f0bee4d1 *110883c5ece9bc6e0b0083c7183b7b5c760ac7436c06000000ff63f8c747ec14a704088b460489 *47f0c747f87cdc0b088d4fec894ffcc70700d211088d77f883c504ff25c06d100889f658a70408 *bca60408a0a104080000000025000900a0a1040800000000240009008b760cc74500aca70408ff *26a0a1040801000100130009008d45f43b43547303ff63f8c745f8d46d10088975fc8b7604c745 *f4b8a7040883c5f4ff26a0a1040801000100130009008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec98a604088b46048947f0c747f8d0a70408 *8b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9bd6d0b0090be00d2110883c5 *04ff25c46d100889f6b864ed1008894500bed4d1110883c5fce9ab670b008d7600b868ed100889 *4500bed4d1110883c5fce993670b008d7600b870ed1008894500bed4d1110883c5fce97b670b00 *8d7600b878ed1008894500be4cd2110883c5fce963670b008d7600b0a80408b0a80408b0a80408 *98a8040880a8040868a80408a8a104080000000025000300a8a1040801000100130003008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b7604c745f4eca8040883c5f4ff26aca104080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8ed1008894df4be *d4d1110883c5f0e9d3660b008d7600a0a104080100010013000d008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf8a804088b46048947f0c747 *f828a904088d47ec8945f48d47f88945f0bee4d1110883c5ece95f6c0b008d760083c7183b7b5c *760ac7436c06000000ff63f8c747ec64a904088b46048947f0c747f87cdc0b088d4fec894ffcc7 *0700d211088d77f883c504ff25c06d100889f6b8a9040858a80408a0a104080000000025000d00 *8b7504c745040caa040883c504ff2690aca1040800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9b4ed1008894df4bed4d1110883c5f0e9d3650b008d7600a0a1 *040801000100130009008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f828aa04088b4e04894df48d57f88955f0bee4d1110883c5ece96c6b0b00 *83c7183b7b5c760ac7436c06000000ff63f8c747ec64aa04088b46048947f0c747f87cdc0b088d *4fec894ffcc70700d211088d77f883c508ff25c06d100889f6a8aa04080caa0408a0a104080100 *000025000d00a0a104080000000024000d008b46048945008b7608c745fcfcaa040883c5fcff26 *8d7600a0a104080100010013000d008d45f03b43547303ff63f8c745f8d46d10088975fc8b7604 *c745f408ab040883c5f4ff26a0a104080100010013000d008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec00a804088b46048947f0c747f82cab *04088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9616a0b009078a5040801 *0001001300ffff8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f85cab04088b4e04894ffc8d57f88955f4bea0d0110883c5f0e904660b00aca104 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c0ed100889 *4df4bed4d1110883c5f0e9eb630b008d76006ca50408010001001300ffff8d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecc0ab04088b46048947 *f0c747f810ac04088d47ec8945f48d47f88945f0bee4d1110883c5ece977690b008d760060a504 *08010001001300ffff8d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f84cac04088b4e04894ffc8d57f88955f4c745f0d4a11108be44d1110883c5 *ece91d690b00904ca30408030000001200ffff8d45ec3b4354720883c7143b7b5c760ac7436c05 *000000ff63f8c745f8d46d10088975fcc747f014a504088b46088947f4c747f8acac04088b4604 *8947fc8d47f08945f48d47f88945f08b760c83c5ece9bb680b008d760004a20408010001001300 *01008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9f9f3ffff9040 *a30408020000002400ffff83c71c3b7b5c760ac7436c07000000ff63f8c747e804ad04088b4604 *8947ec8b45088947f08b45048947f4c747f868ad04088b460c8947fc8d47f88945048b75088d47 *e8894508e930680b0034a3040804000100020000000e00ffff8d45f83b43547303ff63fc8b4608 *8945fc8b45008b4e04894d0089c6c745f898ad040883c5f8ff26e0a1040802000000150001008d *45e83b43547303ff63f8c745f8d46d10088975fcc745f400d211088b4e08894df08b56048955ec *bee8ad110883c5e8e9876c0b008d7600aca104081700000011007200aca1040817000000110072 *00aca104081600000011003200aca104081500000011001200fca1040801000100130001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beb0d5110883c5f0e944630b00ac *a104081200000011000200aca104081200000001000200aca104081200000001000200aca10408 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d0ed1008894d *f4bed4d1110883c5f0e907610b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8f4 *ae04088d47f8894500bed0d5110883c5fce9b8620b00aca1040800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9e0ed1008894df4bed4d1110883c5f0e99f600b *008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f85caf04088d47f8894500bed0d511 *0883c5fce950620b008caf040824af0408dcae0408000000002500ffffd0ae0408010000002400 *ffffc74500fcd211088b45048945fc8b7608c74504ccaf040883c5f8e91d660b0090c4ae040801 *0001001300ffff8d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beccd21108 *c745f0d8af040883c5f0ff2684ae040804000100010000000c00ffff8d45f83b4354720883c718 *3b7b5c760ac7436c06000000ff63fcc747ec9cae04088b45008947f0c747f804b004088b450089 *47fc8d47ec8945008d47f88945fc8b760483c5f8e989650b0090aca104081600000001002000ac *a1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f4ed10 *08894df4bed4d1110883c5f0e9575f0b008d76008cb00408000002001200ffff8d45f43b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a4b004088d4ff8 *894df483c5f4e93fedffff8d760078ae0408020000001500ffff8d45ec3b4354720883c7143b7b *5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f040b004088b46048947f4c747f8 *e0b004088d47f08945f48d47f88945f08b760883c5ece99d640b009004a2040801000100130001 *008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9ddefffff906cae *0408020000002400ffff83c7183b7b5c760ac7436c06000000ff63f8c747ec28b104088b450889 *47f08b45048947f4c747f884b104088b460c8947fc8d47f88945048b75088d47ec894508e91a64 *0b0089f660ae040804000100020000000e00ffff8d45f83b43547303ff63fc8b46088945fc8b45 *008b4e04894d0089c6c745f8b4b1040883c5f8ff26dca1040801000100130001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fcc745f400d211088b4e04894df0bee4ab110883c5ece9a563 *0b0090aca104081700000011007200aca104081700000011007200aca104081600000011003200 *aca104081500000011001200fca1040801000100130001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4beb0d5110883c5f0e9345f0b00aca104081200000011000200aca1 *04081200000001000200aca104081200000001000200aca1040800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9fced1008894df4bed4d1110883c5f0e9f75c0b *008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f804b304088d47f8894500bed0d511 *0883c5fce9a85e0b00aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b90cee1008894df4bed4d1110883c5f0e98f5c0b008d760083c70c3b7b5c760ac7 *436c03000000ff63f8c747f86cb304088d47f8894500bed0d5110883c5fce9405e0b009cb30408 *34b30408ecb20408000000002500ffffe0b20408010000002400ffffc74500fcd211088b450489 *45fc8b7608c74504dcb3040883c5f8e90d620b0090d4b20408010001001300ffff8d45e83b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4beccd21108c745f0e8b3040883c5f0ff2694 *b2040804000100010000000c00ffff8d45f83b4354720883c7183b7b5c760ac7436c06000000ff *63fcc747ecacb204088b45008947f0c747f814b404088b45008947fc8d47ec8945008d47f88945 *fc8b760483c5f8e979610b0090aca104081600000001002000aca1040800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b920ee1008894df4bed4d1110883c5f0e9 *475b0b008d76009cb40408000002001200ffff8d45f43b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8b4b404088d4ff8894df483c5f4e92fe9ffff8d76 *0088b20408020000001500ffff8d45ec3b4354720883c7143b7b5c760ac7436c05000000ff63f8 *c745f8d46d10088975fcc747f050b404088b46048947f4c747f8f0b404088d47f08945f48d47f8 *8945f08b760883c5ece98d600b009004a2040801000100130001008d45f43b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df483c5f4e9cdebffff907cb20408020000002400ffff83c718 *3b7b5c760ac7436c06000000ff63f8c747ec38b504088b45088947f08b45048947f4c747f894b5 *04088b460c8947fc8d47f88945048b75088d47ec894508e90a600b0089f670b204080400010002 *0000000e00ffff8d45f83b43547303ff63fc8b46088945fc8b45008b4e04894d0089c6c745f8c4 *b5040883c5f8ff26d8a1040801000100130001008d45ec3b43547303ff63f8c745f8d46d100889 *75fcc745f400d211088b4e04894df0befcab110883c5ece9955f0b0090a0a104081a0000003900 *2402a0a104081a00000039002402a0a104081a00000039002402a0a104081600000039002400a0 *a104081600000039002000aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b92cee1008894df4bed4d1110883c5f0e933590b008d7600a0a10408040001 *00010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbee4d1110883c5f8e9ee5e0b00 *89f6a0a1040801000100130029008d45e83b4354720883c7143b7b5c760ac7436c05000000ff63 *f8c745f8d46d10088975fcc747f0c8b60408c747fc08b704088d47f089078b46048945f48d47fc *8945f0c745ec00d21108bed8d0110883c5e8e959630b0090aca1040800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b938ee1008894df4bed4d1110883c5f0e963 *580b008d7600a0a1040801000100130029008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec34b704088b46048947f0c747f898b704088d47ec89 *45f48d47f88945f0bee4d1110883c5ece9ef5d0b008d7600b0b60408010001001300ffff8d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d4b704 *088b4e04894ffc8d57f88955f4c745f060d51108be44d1110883c5ece9955d0b0090a4b6040801 *0001001300ffff8d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f834b804088b4e04894ffc8d57f88955f4c745f0a4a91108be44d1110883c5ece9 *3d5d0b009004a2040801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b *4e04894df483c5f4e97de8ffff9098b60408020000002400ffff83c7183b7b5c760ac7436c0600 *0000ff63f8c747ec8cb804088b46048947f0c747f8e4b804088b45048947fc8d47f88945048b75 *088d47ec894508e9c05c0b008cb60408010000002400ffff8b460c8945008b7604c745fc14b904 *0883c5fcff268d760080b6040804000100010000000c00ffff8d45f83b43547303ff63fc8b4d00 *8b560489550089cec745fc60b9040883c5fcff2689f6d4a1040802000000150001008d45e83b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e4bb0b088b *46088947fcc707d8111208c745f400d211088b46048945f08d47f88945ecbe34ac110883c5e8e9 *d5600b0090aca104081700000013807600aca104081700000013807600aca10408170000001380 *7600aca104081600000013803600aca104081600000011003200aca104081500000011001200fc *a1040801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be *b0d5110883c5f0e97c570b00aca104081200000011000200aca104081200000001000200aca104 *081200000001000200aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b948ee1008894df4bed4d1110883c5f0e93f550b008d760083c70c3b7b5c760ac7 *436c03000000ff63f8c747f8bcba04088d47f8894500bed0d5110883c5fce9f0560b00aca10408 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b958ee1008894d *f4bed4d1110883c5f0e9d7540b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f824 *bb04088d47f8894500bed0d5110883c5fce988560b0054bb0408ecba0408a4ba04080000000025 *00ffff98ba0408010000002400ffffc74500fcd211088b45048945fc8b7608c7450494bb040883 *c5f8e9555a0b00908cba0408010001001300ffff8d45e83b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df4beccd21108c745f0a0bb040883c5f0ff264cba040804000100010000000c00 *ffff8d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec64ba04088b450089 *47f0c747f8ccbb04088b45008947fc8d47ec8945008d47f88945fc8b760483c5f8e9c1590b0090 *aca104081600000001002000aca1040800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b96cee1008894df4bed4d1110883c5f0e98f530b008d760054bc04080000 *02001200ffff8d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f86cbc04088d4ff8894df483c5f4e977e1ffff8d760040ba0408020000001500ffff *8d45ec3b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0 *08bc04088b46048947f4c747f8a8bc04088d47f08945f48d47f88945f08b760883c5ece9d5580b *0090aca104081300000003800400aca104081300000003000400aca1040800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97cee1008894df4bed4d1110883c5f0 *e997520b008d76004cbd0408000002001200ffff8d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f864bd04088d4ff8894df4c745f060d51108be44 *d1110883c5ece92f580b008d760040bd0408000002001200ffff8d45ec3b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a0bd04088d4ff8894df4c745f0 *a4a91108be44d1110883c5ece9db570b008d760034ba0408020000001500ffff8d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf0bc04088b4604 *8947f08b46088947f4c747f8f4bd04088d47ec8945f48d47f88945f08b760483c5ece977570b00 *8d760004a2040801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df483c5f4e9b5e2ffff9028ba0408030000002400ffff83c7183b7b5c760ac7436c06000000 *ff63f8c747ec48be04088b450c8947f08b45088947f4c747f8acbe04088b45048947fc8d47f889 *45088b750c8d47ec89450c83c504e9ef560b008d76001cba0408020000002400ffff8b460c8945 *008b7604c745fcdcbe040883c5fcff268d760010ba040804000100020000000e00ffff8d45f43b *43547303ff63fc8b46088945fc8b45008b4e04894d0089c6c745f834bf040883c5f8ff26d0a104 *0802000000150001008d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8e4bb0b088b46088947fcc707d8111208c745f400d211088b46048945f08d *47f88945ecbe14ac110883c5e8e9fd5a0b0090aca104081700000011007200aca1040817000000 *11007200aca104081600000011003200aca104081500000011001200fca1040801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beb0d5110883c5f0e9bc51 *0b00aca104081200000011000200aca104081200000001000200aca104081200000001000200ac *a1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98cee10 *08894df4bed4d1110883c5f0e97f4f0b008d760083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f87cc004088d47f8894500bed0d5110883c5fce930510b00aca1040800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b99cee1008894df4bed4d1110883c5f0e9 *174f0b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8e4c004088d47f8894500be *d0d5110883c5fce9c8500b0014c10408acc0040864c00408000000002500ffff58c00408010000 *002400ffffc74500fcd211088b45048945fc8b7608c7450454c1040883c5f8e995540b00904cc0 *0408010001001300ffff8d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894df4becc *d21108c745f060c1040883c5f0ff260cc0040804000100010000000c00ffff8d45f83b43547208 *83c7183b7b5c760ac7436c06000000ff63fcc747ec24c004088b45008947f0c747f88cc104088b *45008947fc8d47ec8945008d47f88945fc8b760483c5f8e901540b0090aca10408160000000100 *2000aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *b0ee1008894df4bed4d1110883c5f0e9cf4d0b008d760014c20408000002001200ffff8d45f43b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82cc20408 *8d4ff8894df483c5f4e9b7dbffff8d760000c00408020000001500ffff8d45ec3b4354720883c7 *143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0c8c104088b46048947f4 *c747f868c204088d47f08945f48d47f88945f08b760883c5ece915530b009004a2040801000100 *130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e955deffff *90f4bf0408020000002400ffff83c7183b7b5c760ac7436c06000000ff63f8c747ecb0c204088b *45088947f08b45048947f4c747f80cc304088b460c8947fc8d47f88945048b75088d47ec894508 *e992520b0089f6e8bf040804000100020000000e00ffff8d45f83b43547303ff63fc8b46088945 *fc8b45008b4e04894d0089c6c745f83cc3040883c5f8ff26cca1040801000100130001008d45ec *3b43547303ff63f8c745f8d46d10088975fcc745f400d211088b4e04894df0be04ac110883c5ec *e91d520b0090aca104081700000011007200aca104081700000011007200aca104081700000011 *007200aca104081700000011007200aca1040800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9bcee1008894df4bed4d1110883c5f0e9c74b0b008d7600aca104 *081600000011003200aca104081500000011001200fca1040801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4beb0d5110883c5f0e9584d0b00aca1040812 *00000011000200aca104081200000001000200aca104081200000001000200aca1040800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b908ef1008894df4bed4d1 *110883c5f0e91b4b0b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8e0c404088d *47f8894500bed0d5110883c5fce9cc4c0b00aca1040800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b91cef1008894df4bed4d1110883c5f0e9b34a0b008d7600 *83c70c3b7b5c760ac7436c03000000ff63f8c747f848c504088d47f8894500bed0d5110883c5fc *e9644c0b0078c5040810c50408c8c40408000000002500ffffbcc40408010000002400ffffc745 *00fcd211088b45048945fc8b7608c74504b8c5040883c5f8e931500b0090b0c404080100010013 *00ffff8d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beccd21108c745f0c4 *c5040883c5f0ff2670c4040804000100010000000c00ffff8d45f83b4354720883c7183b7b5c76 *0ac7436c06000000ff63fcc747ec88c404088b45008947f0c747f8f0c504088b45008947fc8d47 *ec8945008d47f88945fc8b760483c5f8e99d4f0b0090aca104081600000001002000aca1040800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930ef1008894df4 *bed4d1110883c5f0e96b490b008d760078c60408000002001200ffff8d45f43b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f890c604088d4ff8894df483 *c5f4e953d7ffff8d760064c40408020000001500ffff8d45ec3b4354720883c7143b7b5c760ac7 *436c05000000ff63f8c745f8d46d10088975fcc747f02cc604088b46048947f4c747f8ccc60408 *8d47f08945f48d47f88945f08b760883c5ece9b14e0b009004a2040801000100130001008d45f4 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9f1d9ffff901cc404080400 *00002400ffff83c7183b7b5c760ac7436c06000000ff63f8837e04007537c747ec14c704088b45 *108947f08b450c8947f4c747f870c704088b45048947fc8d47f889450c8b75108d47ec89451083 *c508e9254e0b00c747ec34c404088d47ec8945108b750883c50c83c7f4e9fe490b0089f610c404 *08040000002400ffff8b7608c74500a0c70408ff2604c40408030000002400ffff8b460c894500 *8b7604c745fc18c8040883c5fcff268d7600f8c3040804000100030000000b00ffff8d45f03b43 *547303ff63fc8b460c8945f88b46088945fc8b45008b4e04894d0089c6c745f430c8040883c5f4 *ff2689f6c8a1040802000000150001008d45e83b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8e4bb0b088b46088947fcc707d8111208c745f400d21108 *8b46048945f08d47f88945ecbe3cac110883c5e8e9f9510b0090aca104081700000011007200ac *a104081700000011007200aca104081600000011003200aca104081500000011001200fca10408 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beb0d511 *0883c5f0e9b8480b00aca104081200000011000200aca104081200000001000200aca104081200 *000001000200aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b940ef1008894df4bed4d1110883c5f0e97b460b008d760083c70c3b7b5c760ac7436c03 *000000ff63f8c747f880c904088d47f8894500bed0d5110883c5fce92c480b00aca10408000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954ef1008894df4bed4 *d1110883c5f0e913460b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8e8c90408 *8d47f8894500bed0d5110883c5fce9c4470b0018ca0408b0c9040868c90408000000002500ffff *5cc90408010000002400ffffc74500fcd211088b45048945fc8b7608c7450458ca040883c5f8e9 *914b0b009050c90408010001001300ffff8d45e83b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4beccd21108c745f064ca040883c5f0ff2610c9040804000100010000000c00ffff8d *45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec28c904088b45008947f0c7 *47f890ca04088b45008947fc8d47ec8945008d47f88945fc8b760483c5f8e9fd4a0b0090aca104 *081600000001002000aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b96cef1008894df4bed4d1110883c5f0e9cb440b008d760018cb04080000020012 *00ffff8d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f830cb04088d4ff8894df483c5f4e9b3d2ffff8d760004c90408020000001500ffff8d45ec *3b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0ccca04 *088b46048947f4c747f86ccb04088d47f08945f48d47f88945f08b760883c5ece9114a0b009004 *a2040801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483 *c5f4e951d5ffff90f8c80408020000002400ffff83c7183b7b5c760ac7436c06000000ff63f8c7 *47ecb4cb04088b45088947f08b45048947f4c747f810cc04088b460c8947fc8d47f88945048b75 *088d47ec894508e98e490b0089f6ecc8040804000100020000000e00ffff8d45f83b43547303ff *63fc8b46088945fc8b45008b4e04894d0089c6c745f840cc040883c5f8ff26c4a1040801000100 *130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f400d211088b4e04894df0be *0cac110883c5ece919490b009044a20408040000002400ffff8b068b40fcc1e81085c00f8c7002 *000083f8090f8f67020000b9eca11108ff24818d760083c7183b7b5c760ac7436c06000000ff63 *f8c747ecf4ad04088b45108947f08b450c8947f4c747f828ae04088b46048947fc8b450489078d *47ec8945108b750c8d47f889450c83c508e99a480b0083c7183b7b5c760ac7436c06000000ff63 *f8c747ec0cb204088b45108947f08b450c8947f4c747f840b204088b45048947fc8d47ec894510 *8b750c8d47f889450c83c508e951480b0083c7183b7b5c760ac7436c06000000ff63f8c747ec1c *b604088b45108947f08b450c8947f4c747f850b604088b45048947fc8d47ec8945108b750c8d47 *f889450c83c508e908480b0083c7143b7b5c760ac7436c05000000ff63f8c747f088b904088b45 *108947f4c747f8b8b904088b45048947fc8b460489078d47f08945108b750c8d47f889450c83c5 *08e9c0470b0083c7183b7b5c760ac7436c06000000ff63f8c747ec5cbf04088b45108947f08b45 *0c8947f4c747f890bf04088b45048947fc8b460489078d47ec8945108b750c8d47f889450c83c5 *08e972470b0083c7183b7b5c760ac7436c06000000ff63f8c747ec94c304088b45108947f08b45 *0c8947f4c747f8c8c304088b45048947fc8d47ec8945108b750c8d47f889450c83c508e929470b *0083c71c3b7b5c760ac7436c07000000ff63f8c747e858c804088b45108947ec8b450c8947f08b *45088947f4c747f894c804088b45048947fc8b460489078d47e88945108b750c8d47f889450c83 *c508e9d5460b0083c7183b7b5c760ac7436c06000000ff63f8c747ec98cc04088b45108947f08b *450c8947f4c747f8cccc04088b45048947fc8d47ec8945108b750c8d47f889450c83c508e98c46 *0b0083c70c3b7b5c760ac7436c03000000ff63f8c747f8e0a204088977fc8d47f8894510c7450c *54d21108be44d1110883c508e956460b0089f638a20408030000002400ffff8b46088945008b76 *04c745fc08cd040883c5fcff268d76002ca2040804000100030000000b00ffff8d45f03b435473 *03ff63fc8b460c8945f88b46088945fc8b45008b4e04894d0089c6c745f4cccf040883c5f4ff26 *89f6e4a1040801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4bee0ad110883c5f0e9b0410b0020a2040804000100030000000b00ffff8d45f83b43547208 *83c71c3b7b5c760ac7436c07000000ff63fcc747e8f4cf04088b46048947ec8b46088947f08b46 *0c8947f4c747f830d004088b45008947fc8d47e88945008d47f88945fc8b760883c5f8e955450b *009014a20408000000002400ffff83c7103b7b5c760ac7436c04000000ff63f8c747f468d00408 *8b46088947f88b46048947fc8b461089078d47f4894500c745fcacd511088b760483c5f8e90645 *0b0089f608a2040804000100000000001100ffff8d45f83b43547308bee4a11108ff63fcbedcd2 *1108c74500ccd00408ff2689f6dcd211087caa1108b4bf1108e4a1110844d10408010001001300 *03008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4b4bf1108c745f07caa11088b76 *0483c5ece98a440b0089f644d10408000000002400070083c70c3b7b5c760ac7436c03000000ff *63f8c747f85cd104088b46048947fcc74500e4a111088d4ff8894dfc8b760483c5f8e945440b00 *9040d104080000020018000f008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8512c0b0083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcbedcd21108c745f498d1040883c5f4ff26e900000000833d24a2110800751ec70524a21108 *01000000c7450004aa0b0883c504c7450090310c0883c50483c5fcff650089f6e4d11108d4d111 *0864d2040801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f87cdc0b08c747fca8091208c70700d211088d4ff8894df48b5604 *8955f0bee4d1110883c5ece94b430b008d760068d2040800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b97cef1008894df4bed4d1110883c5f0e9233d0b008d76 *0064d2040801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ec78d204088b46048947f0c747f8d8d204088d47ec8945f48d47f8 *8945f0bee4d1110883c5ece9af420b008d760064d2040802000000150003008d45ec3b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f814d304088b460889 *47fc8d47f88945f48b46048945f0bee4d1110883c5ece956420b0089f668d20408000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b994ef1008894df4bed4d11108 *83c5f0e92f3c0b008d760064d2040802000000150003008d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec74d304088b46048947f08b46088947f4 *c747f8ccd304088d47ec8945f48d47f88945f0bee4d1110883c5ece9b5410b009064d204080b00 *0200000000001100030083c7143b7b5c760fbe28a21108c7436c05000000ff63fcc747f008d404 *088b45048947f48b45008947f8c747fc601805088d47f089078d77fc83c5088b4500ff60e089f6 *e4d11108d4d11108e0d11108acd01108be00d2110883c50c8b4500ff60f089f68b750483c510ff *2683c7283b7b5c760ac7436c0a000000ff63f8c747dcc86b10088b450c8947e08b45088947e489 *77e8c747ec7cdc0b08c747f0580a12088d47dc8947f4c747f87cdc0b088b45088947fc8d47ec89 *078d47f889450c8b4504894508bee4d1110883c504e9d1400b0090dcd40408d4d40408b4d40408 *03000000250001008b46048945008b7608c745fc58d5040883c5fcff268d760058d50408c4d404 *08b4d404080200000025000100b4d404080b000200000001000b0001008d45f83b43547303ff63 *fc8b4d0489750489cec745fc84d5040883c5fcff269083c7183b7b5c760ac7436c06000000ff63 *f8c747ec7cdc0b088b45048947f0c747f400d21108c747f87cdc0b08c747fcc00a1208c70700d2 *11088d4fec894d048d57f8895500bee4d1110883c5fce90d400b0090b4d4040801000100130001 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f87cdc0b08c747fc580a1208c70700d211088b4e04894df48d57f88955f0bee4d1110883c5ece9 *af3f0b008d7600b4d4040802000000150001008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec14d604088b46088947f0c747f87cdc0b088b4604 *8947fcc70700d211088d47ec8945f48d47f88945f0bee4d1110883c5ece9433f0b008d760083c7 *183b7b5c760ac7436c06000000ff63f8c747ec74d604088b45048947f08b46088947f4c747f87c *dc0b08c747fcc00a1208c70700d211088d47ec8945048d47f8894500bee4d1110883c5fce9ee3e *0b0089f6b4d4040801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc400c1208c70700d211088d4ff8894df4 *8b56048955f0bee4d1110883c5ece98f3e0b008d7600b4d4040801000100130001008d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec34d704088b *46048947f0c747f87cdc0b08c747fc300c1208c70700d211088d47ec8945f48d47f88945f0bee4 *d1110883c5ece9223e0b0089f6b4d4040802000000150001008d45ec3b4354720883c7183b7b5c *760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec94d704088b46088947f0c747f87c *dc0b088b46048947fcc70700d211088d47ec8945f48d47f88945f0bee4d1110883c5ece9b73d0b *008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec00d804088b45048947f08b460889 *47f4c747f87cdc0b08c747fcc00a1208c70700d211088d47ec8945048d47f8894500bee4d11108 *83c5fce9623d0b0089f660d80408d4d60408b4d50408b4d404080100000025000100b4d4040804 *000100010000000c0001008d45f83b43547303ff63fc8b7604c745fcccd8040883c5fcff2689f6 *b4d4040802000000150005008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c7 *45f8d46d10088975fcc747fcdcd804088b460489078b46088945f48d47fc8945f0bee0d1110883 *c5ece9c73c0b008d7600b4d4040803000000120005008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f804d904088b46088947fc8b460c89078d47 *f88945f4c745f0b80a12088b760483c5f0e9eafbffff89f6b8d4040800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9a0ef1008894df4bed4d1110883c5f0e943 *360b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8b8d904088d47f8894500bee4 *d1110883c5fce9003c0b00b4d4040801000100130001008d45ec3b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc400b1208c70700d211 *088b4e04894df48d57f88955f0bee4d1110883c5ece9a33b0b008d7600b4d40408020000001500 *01008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f820da04088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece94a3b0b0089f6 *b8d4040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a4ef *1008894df4bed4d1110883c5f0e923350b008d760083c7183b7b5c760ac7436c06000000ff63f8 *c747ec80da04088b45048947f08b46088947f4c747f8d8da04088d47ec8945048d47f8894500be *e4d1110883c5fce9c73a0b008d7600b4d4040801000100130001008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc400c1208c7 *0700d211088d4ff8894df48b56048955f0bee4d1110883c5ece9673a0b008d7600b8d404080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8ef1008894df4be *d4d1110883c5f0e93f340b008d7600b4d4040801000100130003008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec5cdb04088b46048947f0c747 *f8bcdb04088d47ec8945f48d47f88945f0bee4d1110883c5ece9cb390b008d7600b4d404080200 *0000150003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8f8db04088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece97239 *0b0089f6b8d4040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9acef1008894df4bed4d1110883c5f0e94b330b008d760083c7183b7b5c760ac7436c060000 *00ff63f8c747ec58dc04088b45048947f08b46088947f4c747f8b0dc04088d47ec8945048d47f8 *894500bee4d1110883c5fce9ef380b008d7600e0dc040808db0408e8d90408b4d4040801000000 *25000300b4d4040804000100010000000c0003008d45f83b43547303ff63fc8b7604c745fc40dd *040883c5fcff2689f6b4d4040802000000150007008d45ec3b4354720883c7083b7b5c760ac743 *6c02000000ff63f8c745f8d46d10088975fcc747fc50dd04088b460489078b46088945f48d47fc *8945f0bee0d1110883c5ece953380b008d7600b4d4040803000000120007008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f878dd04088b460889 *47fc8b460c89078d47f88945f4c745f0b80a12088b760483c5f0e976f7ffff89f683c71c3b7b5c *760ac7436c07000000ff63f8c747e8fcbb0b088b45088947ec8b45048947f0c747f400d21108c7 *47f87cdc0b088d47e88947fcc70700d211088d77f883c50c8b4500ff60ec90be00d2110883c508 *8b4500ff60f089f683c7283b7b5c760ac7436c0a000000ff63f8c747dc8c6b10088b45048947e0 *8b46088947e4c747e8fcbb0b08c747ec00d21108c747f000d211088b46048947f4c747f87cdc0b *088d47e88947fc8d47dc89078d77f883c5088b4500ff60ec89f67cde04086cde04080000000001 *0000002500000004000100000001000b0000008d45fc3b43547303ff63fc8b4d0089750089cec7 *45fcf0de040883c5fcff269001000100130000008d45f43b4354720883c7083b7b5c760ac7436c *02000000ff63f8c745f8d46d10088975fcc747fcfcde04088b4e04894df48d77fc83c5f4eb9f8d *760083c7283b7b5c760ac7436c0a000000ff63f8c747dc24df04088b46088947e0c747e8fcbb0b *088b45088947ec8b45048947f08b46048947f4c747f87cdc0b088d47e88947fc8d47dc89078d77 *f883c50c8b4500ff60ec89f660df040820de0408000000000200000025000000b4d40408000000 *0024000f0083c7283b7b5c760ac7436c0a000000ff63f8c747dc94d50408c747e45cd904088d47 *dc8947e88b460c8947ec8b46048947f0c747f4d0dd04088d47dc8947f88b460c8947fc8b460889 *078b46108945f48d47f48945fc8d47e4894500beacd01108c745f8ccdf040883c5f0e9c0310b00 *b4d40408040001000000000011000f008d45f03b43547308be30a21108ff63fc8b7500c74500d8 *df0408ff2690d1110844d3110874e0040800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e8a51d0b0083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f490d11108be44d3110883c5f0e929310b0090e4d11108 *d4d1110848d11108e0d1110830a2110838d3110840d311083cd3110888d3110874d3110880d311 *08a8d0110838a21108ece0040800000200120021008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f488d31108bee0d1110883c5f0e9bf300b008d7600e8e0040801000100130043048d *45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f820 *e104088b4e04894df48d57f88955f0c745ec38a21108be48d1110883c5e8e941390b0090be00d2 *110883c50c8b4500ff60f089f608e1040800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fcc745f4580a1208be80d3110883c5f0e91f300b008d7600e0e004080100010013 *0001048d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8c0e104088d4ff8894df48b56048955f0bee4d1110883c5ece9d8330b00e0e00408020000 *00150001068d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8f8e104088b46088947fc8d47f88945f48b46048945f0be74d3110883c5ece982330b *0089f683c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b45048947e48b46088947 *e8c747ec48e204088b45088947f08b46048947f4c747f87cdc0b088d47ec8947fc8d47e089078d *77f883c50c8b4500ff60ec89f694e20408a4e10408e0e004080200000025000106e0e004080400 *0100010000000c0001068d45f83b43547303ff63fc8975fc8b4d008b560489550089cec745f800 *e3040883c5f8ff268d7600e0e0040804000100000001000b000d1783c7143b7b5c760ac7436c05 *000000ff63fcc747f058e104088b45008947f4c747fc10e304088d4ff0890f8d77fceb98f0e004 *0800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f430a21108be40 *d3110883c5f0e95b2e0b008d7600e8e004080100010013001d008d45e83b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f884e304088b4e04894df48d57f8 *8955f0c745ec38d31108be48d1110883c5e8e9dd360b009002000000150000008d45f43b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8985f10088b4e08 *894ffc8d57f88955f48b760483c5f4e9f6feffff89f602000000150000008d45f43b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80c5f10088b4e08894f *fc8d57f88955f48b760483c5f4e9aafeffff89f6e4e0040800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9b0ef1008894df4bed4d1110883c5f0e94f2b0b008d *7600e0e0040801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8ace404088b4e04894df48d57f88955f0bee4d1110883c5ece9 *e8300b00e0e0040802000000150003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8e8e404088b46088947fc8d47f88945f48b46048945f0be *e4d1110883c5ece992300b0089f6e4e0040800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9b4ef1008894df4bed4d1110883c5f0e96b2a0b008d7600e0e00408 *02000000150003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ec38e504088b46048947f08b46088947f4c747f890e504088d47ec8945f48d47 *f88945f0bee4d1110883c5ece9f12f0b0090e0e0040803000000120003008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8cce504088b46088947 *fc8b460c89078d47f88945f48b46048945f0bee4d1110883c5ece9952f0b0090e4e00408000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b8ef1008894df4bed4 *d1110883c5f0e96f290b008d7600e0e0040816000300000001000b00030083c71c3b7b5c760ac7 *436c07000000ff63fcc747e830e604088b45008947ec8b45048947f08b45088947f4c747f88ce6 *04088d47e88945088d47f8894504bee4d11108e9002f0b00e0e0040802000000150083008d45e4 *3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d8246010 *088b46088947dcc747e410e404088b46048947e88b46088947ecc747f05ce404088b46048947f4 *8b46088947f8c747fccce604088d47d88945f48d47e48945f08d47f08945ec8d47fc8945e8be3c *d3110883c5e4e9d9350b0090e0e004080b000200000000001100ff1f83c72c3b7b5c760fbe48a2 *1108c7436c0b000000ff63fcc747d848e30408c747e0bce304088b45048947e4c747ec20e70408 *8d47d88947f08d47e08947f4c747f87cdc0b088b45008947fc8d47ec89078d47f8894504bea8d0 *1108e9f4290b00e4d11108d4d1110848a2110818e8040800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9bcef1008894df4bed4d1110883c5f0e9cf270b008d76 *0014e8040801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f82ce804088d4ff8894df48b56048955f0bee4d1110883c5ece968 *2d0b0018e8040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e0ef1008894df4bed4d1110883c5f0e943270b008d760014e8040801000100130003008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec68e804 *088b46048947f0c747f8b8e804088d47ec8945f48d47f88945f0bee4d1110883c5ece9cf2c0b00 *8d760014e8040802000000150007008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8f4e804088b46048947fc8b46088945f48d47f88945f083c5 *f0e91bfeffff8d760014e804080b000200000000001100070083c7143b7b5c760fbe50a21108c7 *436c05000000ff63fcc747f054e904088b45048947f48b45008947f8c747fc601805088d47f089 *078d77fc83c5088b4500ff60e089f6ccd1110880d11108f0e9040800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e829140b0083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0 *e9ad270b009058a2110800000000240000008b7608e92c1d0b005cea040800000200180001008d *45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b1130b0083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe58a21108c745f468ea0408 *83c5f4ff2680d11108b8d01108d0ea040800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e849130b0083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f480d11108beb8d0110883c5f0e9cd260b0090e4d11108 *d4d1110880d11108e0d1110888a2110850a2110828a2110860d311088cd3110868a2110878a211 *0883c7143b7b5c760ac7436c05000000ff63f8c747f014bc0b08c747f400d21108c747f800d211 *08c747fc00d21108c70700d211088d77f083c510ff65008d760083c7143b7b5c760ac7436c0500 *0000ff63f8c747f030180508c747f400d21108c747f8e4bb0b088d47f08947fc8b4d08890f8d77 *f883c50ce9ef810b008d760083c7143b7b5c760ac7436c05000000ff63f8c747f0301805088b45 *048947f4c747f8e4bb0b088d4ff0894ffc8b550c89178d77f883c510e9b0810b00be00d2110883 *c50c8b4500ff60f089f68b751083c514e991010000908b45108945148b750483c514e9c3000000 *8d760083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b45108947 *f4c747f87cdc0b088b45088947fc8d47ec89078d77f883c5188b4500ff60ec9054ec040840ec04 *0800000000850200002500000005000000240000008b45148945fc8b4d0c894df88b7608c74500 *acec040883c5f4e942290b0089f68b46088945108b4e04894d14be80d11108c74500b4ec0408ff *2689f6d4ec040834ec040844eb0408050000002500010044eb040804000100040000000b000100 *8d45e03b43547303ff63fc8975f08b46108945f48b460c8945f88b46088945fc8b45008b4e0489 *4d0089c6c745ec04ed040883c5ecff269044eb0408030000002400010083c7143b7b5c760ac743 *6c05000000ff63f8c747f014ed04088b45048947f48b450c8947f88b45088947fc89378b460489 *450c8d77f083c50ceb81908b46088945008b7604c745fc58ed040883c5fcff268d760094ed0408 *24ec040844eb0408020000002500010044eb040804000100010000000c0001008d45f43b435473 *03ff63fc8b4e04894dfc8b550089750089d6c745f8c0ed040883c5f8ff268d760044eb04080200 *0000150001008d45f43b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fcd0ed04088b4e04890f8b56088955f48d77fc83c5f4eb8e89f6be00d2110883c508 *8b4500ff60f089f6020000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b *10088b45088947f08b45048947f4c747f87cdc0b088b460c8947fc8d47ec89078d77f883c50c8b *4500ff60ec908b46088945008b7604c745fc5cee040883c5fcff268d7600a0ee040844ee040800 *000000010000002500000004000100000001000b0000008d45f83b43547303ff63fc8b4d008975 *0089cec745fcccee040883c5fcff269083c72c3b7b5c760ac7436c0b000000ff63f8c747d87cdc *0b088b45048947dcc747e000d21108c747e47cdc0b08c747e8c00a12088d47d88947ecc747f010 *1805088d47e48947f4c747f8e4bb0b088d47f08947fc8b450889078d77f883c50ce9787e0b0083 *c7443b7b5c760ac7436c11000000ff63f8c747c07cdc0b08c747c4c00a12088977c8c747cc7cdc *0b088d47c08947d08b45088947d4c747d87cdc0b088b45048947dcc747e000d21108c747e47cdc *0b08c747e8c00a12088d47d88947ecc747f0101805088d47e48947f4c747f8e4bb0b088d47f089 *47fc8d47cc89078d77f883c50ce9f07d0b005cef0408f8ee04080000000002000000250000008b *7508c74508f8ef040883c508ff269083c7143b7b5c760ac7436c05000000ff63f8c747f0f01705 *088b45048947f4c747f8e4bb0b088d4ff0894ffc8b550889178d77f883c50ce9907d0b0083c72c *3b7b5c760ac7436c0b000000ff63f8c747d87cdc0b08c747dcc00a12088977e0c747e47cdc0b08 *8d47d88947e88b45088947ecc747f0f01705088b45048947f4c747f8e4bb0b088d47f08947fc8d *47e489078d77f883c50ce9307d0b0044f0040808f004080000000002000000250000008b460489 *45088b7504c74504b8f0040883c504ff268d760054eb040802000000150001008d45f03b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec7cdc0b088b4604 *8947f0c747f400d21108c747f87cdc0b08c747fcc00a12088d47ec89078d47f88945f48b460889 *45f083c5f0e935e3ffff9083c7183b7b5c760ac7436c06000000ff63f8c747ecdcf004088b450c *8947f08b4d04894ff4c747f8e4bb0b088d57ec8957fcc70700d211088d77f883c514e9557c0b00 *9083c7203b7b5c760ac7436c08000000ff63f8c747e48c6b10088b45088947e88b46048947ecc7 *47f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b460889078d77f883c514e9057c *0b009080f104083cf1040854eb040804010000250001008b7510c74500e4f10408ff2683c7203b *7b5c760ac7436c08000000ff63f8c747e48c6b10088b45088947e88977ecc747f0f01705088d47 *e48947f4c747f8e4bb0b088d47f08947fc8b451089078d77f883c514e9987b0b00f0f10408e4f1 *040854eb040804000000250001008b46088945008b4d048b560489550489cec745fc50f2040883 *c5fcff268d760001000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4 *e0d011088b760483c5f0e9691f0b009083c7203b7b5c760ac7436c08000000ff63f8c747e478f2 *04088b45048947e8c747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b45088907 *8d77f883c50ce9eb7a0b008d760002000000150000008d45f03b4354720883c7083b7b5c760ac7 *436c02000000ff63f8c745f8d46d10088975fcc747fc94b90b088b4e04890f8d57fc8955f48b76 *0883c5f0e9d31e0b008d760083c7203b7b5c760ac7436c08000000ff63f8c747e4f4f204088977 *e88b45048947ecc747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b450889078d *77f883c50ce9507a0b0038f30408a0f204080000000002000000250000008b46048945088b7504 *c7450498f3040883c504ff268d760098f3040850f20408b8f0040854eb04080300000025000100 *8b7504c74508c8f3040883c508ff269050eb040802000000150001008d45f03b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec7cdc0b088b46048947f0c7 *47f400d21108c747f87cdc0b08c747fcc00a12088d47ec89078d47f88945f48b46088945f083c5 *f0e969f5ffff9083c7183b7b5c760ac7436c06000000ff63f8c747ece4f304088b45108947f08b *45088947f4c747f8e4bb0b088d47ec8947fc8b451489078d77f883c518e94e790b0089f644f404 *08c8f3040850eb040805000000250003008b46048945008b7608c745fc9cf4040883c5fcff268d *76009cf40408f8ef040850eb0408040000002500030083c70c3b7b5c760ac7436c03000000ff63 *f8c747f8e4bb0b08c747fcc0a211088b450889078d77f883c50ce9dc780b000200000024000000 *8b45088b4d04894d088945048b7608e900210b0044eb040804000100010000000c0001008d45f8 *3b43547303ff63fc8b4e04894dfcbe80d11108c745f800f5040883c5f8ff2689f644eb04080100 *0100130021008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc24f50408c707400b12088b4e04894df48d57fc8955f0be60d3110883c5ece97620 *0b0089f6be00d2110883c5108b4500ff60f089f68b45148945188b751083c518e96f0100008d76 *008b750483c518e99d0000009083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b *45048947f08b45188947f4c747f87cdc0b088b45088947fc8d47ec89078d77f883c51c8b4500ff *60ec90d0f50408c4f504080000000086030000250000008b46048945fc8b4d18894df88b560889 *55188b750cc7450028f6040883c5f4e9c81f0b0028f60408b0f504080000000006000000250000 *0004000100050000000b0000008d45dc3b43547303ff63fc8975ec8b46148945f08b46108945f4 *8b460c8945f88b46088945fc8b45008b4e04894d0089c6c745e860f6040883c5e8ff268d760004 *0000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec6cf604088b45108947f08b *45048947f48b450c8947f88b45088947fc89378b46088945108d77ec83c510e974ffffff8b4608 *8945008b7604c745fcb4f6040883c5fcff268d7600f8f60408a0f5040800000000030000002500 *000004000100020000000e0000008d45f03b43547303ff63fc8b46088945f88975fc8b45008b4e *04894d0089c6c745f424f7040883c5f4ff269004000100020000000e00000083c70c3b7b5c760a *c7436c03000000ff63fcc747f830f704088b46088947fc8b4d00890f8b56048955008d77f8eb99 *9060eb040801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fcc745f468a2 *11088b760483c5f4eba08b750483c50cff268b7508c7450878a2110883c508eb8990d0f70408c8 *f7040864eb040802000000250001005ceb040802000000150005008d45e43b43547303ff63f8c7 *45f8d46d10088975fc8b46088945e88b46088945f08b46048945f4be8cd31108c745ecf4f70408 *83c5e4e9cd190b0090be00d2110883c5088b4500ff60f089f6020000002400000083c7183b7b5c *760ac7436c06000000ff63f8c747ec8c6b10088b45088947f08b45048947f4c747f87cdc0b088b *460c8947fc8d47ec89078d77f883c50c8b4500ff60ec908b46088945008b7604c745fc54f80408 *83c5fcff268d760098f804083cf8040800000000010000002500000004000100000001000b0000 *008d45f83b43547303ff63fc8b4d0089750089cec745fcc4f8040883c5fcff269040eb04080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ecef1008894df4be *d4d1110883c5f0e9ff160b008d76003ceb040801000100130003008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fcf804088b4e04894df48d57 *f88955f0bee4d1110883c5ece9981c0b0083c7203b7b5c760ac7436c08000000ff63f8c747e438 *f904088b45088947e8c747f0101805088d47e48947f4c747f8e4bb0b088d47f08947fc8b451089 *078d77f883c514e90f740b008d760083c7143b7b5c760ac7436c05000000ff63f8c747f0f01705 *088b45088947f4c747f8e4bb0b088d4ff0894ffc8b550c89178d77f883c510e9d0730b0040eb04 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f0ef100889 *4df4bed4d1110883c5f0e9eb150b008d76003ceb040801000100130003008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f810fa04088b4e04894d *f48d57f88955f0bee4d1110883c5ece9841b0b0040eb040800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9f4ef1008894df4bed4d1110883c5f0e95f150b008d *760040eb040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *14f01008894df4bed4d1110883c5f0e923150b008d76003ceb040801000100130003008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d8fa0408 *8b4e04894df48d57f88955f0bee4d1110883c5ece9bc1a0b003ceb040801000100130003008d45 *ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec9cfa *0408c747f814fb04088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece95f1a0b *008d760040eb040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b918f01008894df4bed4d1110883c5f0e937140b008d76003ceb040801000100130003008d45 *ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec64fb *04088b46048947f0c747f8c4fb04088d47ec8945f48d47f88945f0bee4d1110883c5ece9c3190b *008d76003ceb0408430000002400030083c7203b7b5c760ac7436c08000000ff63f88b460483f8 *3d7537c747e400fc04088b45048947e8c747f0601805088d47e48947f4c747f8e4bb0b088d47f0 *8947fc8b450c89078d77f883c510e923710b00c747e44cfa04088b45048947e8c747f010180508 *8d47e48947f4c747f8e4bb0b088d47f08947fc8b450c89078d77f883c510e9ec700b008b7604c7 *450060fc0408ff26e8fc0408c8f904083ceb040803000000250003003ceb040803000000240003 *008b7608c7450008fd0408ff268b45088b4e04894d0889c6c7450014fd0408ff2640eb04080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b924f01008894df4be *d4d1110883c5f0e9bb120b008d76003ceb040801000100130003008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f840fd04088b4e04894df48d57 *f88955f0bee4d1110883c5ece954180b003ceb040802000000150043008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cfd04088b46048947fc *8d47f88945f48b46088945f083c5f0e95fd6ffff8d760083c7183b7b5c760ac7436c06000000ff *63f8c747ecccfd04088b45088947f08b4d04894ff4c747f8e4bb0b088d57ec8957fcc70700d211 *088d77f883c514e97d6f0b009083c7203b7b5c760ac7436c08000000ff63f8c747e48c6b10088b *450c8947e88b46048947ecc747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b46 *0889078d77f883c514e92d6f0b009058fe040814fe04083ceb040804010000250043008b7510c7 *4500bcfe0408ff2640eb040800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b928f01008894df4bed4d1110883c5f0e927110b008d76003ceb0408010001001300 *03008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8d4fe04088b4e04894df48d57f88955f0bee4d1110883c5ece9c0160b003ceb040804000000 *2400030083c7203b7b5c760ac7436c08000000ff63f88b460483f83d753dc747e48c6b10088b45 *0c8947e88b45048947ecc747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b4510 *89078d77f883c514e91d6e0b00c747e410ff04088b45088947e8c747f0101805088d47e48947f4 *c747f8e4bb0b088d47f08947fc8b451089078d77f883c514e9e66d0b0089f68b46088945048b76 *04c7450060ff0408ff2689f6f0ff0408bcfe04083ceb040804000000250043003ceb0408040000 *00240043008b7608c7450018000508ff268b46088945008b4d088b560489550889cec745fc2400 *050883c5fcff268d760001000100130000008d45f03b43547303ff63f8c745f8d46d10088975fc *c745f4e0d011088b760483c5f0e989110b009083c7203b7b5c760ac7436c08000000ff63f8c747 *e4580005088b45088947e8c747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b45 *0c89078d77f883c510e90b6d0b008d760040eb040800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b92cf01008894df4bed4d1110883c5f0e9230f0b008d76003c *eb040801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8d80005088b4e04894df48d57f88955f0bee4d1110883c5ece9bc140b *0002000000150000008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fc94b90b088b4e04890f8d57fc8955f48b760883c5f0e967100b008d76003c *eb0408040000002400030083c7203b7b5c760ac7436c08000000ff63f88b460483f83d753dc747 *e4600105088b45048947e88b450c8947ecc747f0f01705088d47e48947f4c747f8e4bb0b088d47 *f08947fc8b451089078d77f883c514e9cd6b0b00c747e4140105088b45088947e8c747f0101805 *088d47e48947f4c747f8e4bb0b088d47f08947fc8b451089078d77f883c514e9966b0b0089f68b *46088945008b7604c745fcb001050883c5fcff268d760040020508800005083ceb040803000000 *250003003ceb040803000000240003008b7608c745006c020508ff268b45088b4e04894d0889c6 *c7450078020508ff26840205083000050820fd04083ceb040803000000250043008b7504c74508 *b002050883c508ff269040eb040800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b930f01008894df4bed4d1110883c5f0e92f0d0b008d76003ceb040801000100 *130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975 *fcc747f8cc0205088b4e04894df48d57f88955f0bee4d1110883c5ece9c8120b003ceb04080200 *0000150023008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8080305088b46048947fc8d47f88945f48b46088945f083c5f0e90fe6ffff8d7600 *83c7183b7b5c760ac7436c06000000ff63f8c747ec580305088b450c8947f08b45088947f4c747 *f8e4bb0b088d47ec8947fc8b451489078d77f883c518e9f2690b0089f6a0030508b00205083ceb *040805000000250063008b46048945008b7608c745fcf803050883c5fcff268d7600f80305087c *f904083ceb0408040000002500630083c7443b7b5c760ac7436c11000000ff63f8c747c054f504 *088977c4c747cc0c5f10088d47c08947d0c747d868f704088b45048947dc8d47cc8947e0c747e4 *a4f704088d47d88947e8c747f000f804088d47d88947f48d47e48947f8c747fcd0f804088d47f0 *8945f48d47f08945fc8d47cc8945008d47c08945048d77fcc745f82404050883c5f4e91ff4ffff *8d760024040508c8f404083ceb0408020000002500e7073ceb0408030000002400e70783c7143b *7b5c760ac7436c05000000ff63f88b460483f82d75128b7504c74504c804050883c50483c7ecff *26c747f004ee04088977f48b45088947f8c747fcd8ee04088d47f08945f88d47f0894500897508 *8d77fcc745fcc8f4040883c5f8e9a0e9ffff8b46088945048b7604c74500d4040508ff2689f638 *050508e8eb04083ceb0408030000002500e7073ceb0408040000002400e70783c7143b7b5c760a *c7436c05000000ff63f88b460483f82d75128b7504c745046005050883c50483c7ecff26c747f0 *301805088b45088947f4c747f8e4bb0b088d47f08947fc8b451089078d77f883c514e912680b00 *89f68b46088945fc8975008b7604c745f86c05050883c5f8ff26c4050508a8eb04083ceb040802 *0000002500e7073ceb0408030000001200e7078d45e03b43547303ff63f8c745f8d46d10088975 *fc8b4e0c894df08b56088955f48b7604c745ecf005050883c5ecff264ceb040803000000120001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b46088945f48b46048945f08b460c8945 *ec83c5ece9310500009083c7503b7b5c760ac7436c14000000ff63f8c747b4b06010088b450889 *47b8c747c0246010088b45088947c4c747cc985f10088b45088947d0c747d80c5f10088b450889 *47dcc747e47cdc0b088b46048947e88d47d88947ecc747f014bc0b088d47e48947f48d47cc8947 *f88d47c08947fc8d47b489078d77f083c510ff650083c7503b7b5c760ac7436c14000000ff63f8 *c747b4b06010088b45088947b8c747c0246010088b45088947c4c747cc7cdc0b088b46048947d0 *8d47c08947d4c747d8985f10088b45088947dcc747e40c5f10088b45088947e8c747f014bc0b08 *8d47e48947f48d47d88947f88d47cc8947fc8d47b489078d77f083c510ff650083c72c3b7b5c76 *0ac7436c0b000000ff63f8c747d8246010088b45088947dcc747e47cdc0b088b45048947e88b45 *0c8947ecc747f014bc0b08c747f400d211088d47e48947f88d47d88947fcc70700d211088d77f0 *83c510ff65009083c7503b7b5c760ac7436c14000000ff63f8c747b4b06010088b45088947b8c7 *47c0246010088b45088947c4c747cc985f10088b45088947d0c747d87cdc0b088b45048947dc8d *47cc8947e0c747e40c5f10088b45088947e8c747f014bc0b088d47e48947f48d47d88947f88d47 *c08947fc8d47b489078d77f083c510ff650083c75c3b7b5c760ac7436c17000000ff63f8c747a8 *b06010088b45088947acc747b4246010088b45088947b8c747c0985f10088b45088947c4c747cc *0c5f10088b45088947d0c747d88c6b10088b46048947dc8b45048947e0c747e47cdc0b088d47d8 *8947e88d47cc8947ecc747f014bc0b088d47e48947f48d47c08947f88d47b48947fc8d47a88907 *8d77f083c510ff65009044080508c4070508680705080000000003000000250000008b45048b4e *04894d0489c6c74500f0080508ff2683c7203b7b5c760ac7436c08000000ff63f8c747e4246010 *088b45048947e8c747f014bc0b08c747f400d211088b4d08894ff88d57e48957fcc70700d21108 *8d77f083c50cff650083c7203b7b5c760ac7436c08000000ff63f8c747e4246010088b45048947 *e8c747f014bc0b08c747f400d211088b4d08894ff88d57e48957fcc70700d211088d77f083c50c *ff650048eb040802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df48b56088955f0bee0d1110883c5ece9460c0b0089f683c72c3b7b5c760ac7436c0b000000 *ff63f8c747d8246010088b45048947dcc747e4a00905088b45088947e88b46048947ecc747f014 *bc0b088d47e48947f4c747f800d211088d47d88947fcc70700d211088d77f083c50cff650090d0 *0905084c0905080409050848eb040802000000250001008b7504c74504440a050883c504ff2690 *83c7503b7b5c760ac7436c14000000ff63f8c747b4b06010088b45088947b8c747c07cdc0b088b *46048947c48d47b48947c8c747cc246010088b45088947d0c747d8985f10088b45088947dcc747 *e40c5f10088b45088947e8c747f014bc0b088d47e48947f48d47d88947f88d47cc8947fc8d47c0 *89078d77f083c510ff6500540a0508440a0508f0080508e80605086806050848eb040803000000 *2500010048eb040803000000240001008b7604c74500f40a0508ff2683c72c3b7b5c760ac7436c *0b000000ff63f8c747d8fc0505088b46048947dc8b46088947e08b45088947e4c747e8985f1008 *8d47d88947ecc747f4380605088b45088947f88d47e88947fc8b450489078d47f48945088d47e8 *89450c8d77d8c74500000b0508ff260c0b050868eb04083ceb0408830000002500ff073ceb0408 *16000300000000001100ff078d45fc3b43547308be88a21108ff63fc8b7508c745fc880b050883 *c5fcff2690e4d11108d4d11108bc0b050800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b934f01008894df4bed4d1110883c5f0e92f040b008d7600b80b050801 *000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8cc0b05088d4ff8894df48b56048955f0bee4d1110883c5ece9c8090b00bc0b05 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b938f0100889 *4df4bed4d1110883c5f0e9a3030b008d7600b80b05080400010000000000110003008d45f83b43 *54720883c7183b7b5c760fbe90a21108c7436c06000000ff63fcc747ec080c05088b45008947f0 *c747f8580c05088d47ec8945008d47f88945fcbee4d1110883c5f8e930090b00e4d11108e0d111 *0888a2110890a21108ec0c050803000000120001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b460c8945f48b46088945f08b46048945ec83c5ece969feffff90e80c05080100010013 *0005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8246010088b4e04894ffc8d57f88955f4c745f090a21108bee0d1110883c5ece98d080b00 *90e40c05080100010013000b008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ec3c0d05088b46048947f0c747f8b06010088b46048947fc8d47ec *8945f48d47f88945f0bee4d1110883c5ece929080b0090e40c0508160003000000000011000f00 *83c7443b7b5c760fbe98a21108c7436c11000000ff63fcc747c0000d05088b45008947c48b4504 *8947c88b45088947ccc747d0940d05088d47c08947d4c747dc985f10088d47c08947e0c747e80c *5f10088d47c08947ecc747f4fcbb0b088d47e88947f88d47dc8947fc8d47d089078d77f483c50c *ff650004000100000000001100000083c7083b7b5c760fbea8a21108c7436c02000000ff63fcc7 *47fc181905088b450089078d77fc83c5048b4d00ff61e890bea0a2110883c5048b4500ff60f089 *f6bea4a2110883c5048b4500ff60ec89f683c7083b7b5c760ac7436c02000000ff63f8c747fc18 *1905088b460489078d77fc83c5048b4d00ff61e889f6d00e0508c00e0508000000000000000025 *0000008b7604c74500100f0508ff26100f0508b00e050800000000000000002500000004000100 *00000000110000008b7500c74500300f0508ff2683c7083b7b5c760ac7436c02000000ff63f8c7 *47fcf0dc0b08c70708d211088d77fc83c5048b4500ff60f09083c7103b7b5c760ac7436c040000 *00ff63f8c747f4f0dc0b08c747f808d21108c747fc10dd0b088d47f489078d77fc83c5048b4d00 *ff61ec83c7103b7b5c760ac7436c04000000ff63f8c747f410dd0b088b46048947f8c747fc10dd *0b088d4ff4890f8d77fc83c5048b5500ff62ec90ac0f0508740f0508480f050800000000000000 *00250000000400010000000000110000008b7500c74500fc0f0508ff2604000100000000001100 *000083c7083b7b5c760fbeb4a21108c7436c02000000ff63fcc747fcf01705088b450089078d77 *fc83c5048b4d00ff61f09004000100000000001100000083c7083b7b5c760fbeb8a21108c7436c *02000000ff63fcc747fc101805088b450089078d77fc83c5048b4d00ff61ec9004000100000000 *001100000083c7083b7b5c760fbebca21108c7436c02000000ff63fcc747fc301805088b450089 *078d77fc83c5048b4d00ff61e89004000100000000001100000083c7083b7b5c760fbec4a21108 *c7436c02000000ff63fcc747fc601805088b450089078d77fc83c5048b4d00ff61e09083c7083b *7b5c760ac7436c02000000ff63f8c747fcf01705088b460489078d77fc83c5048b4d00ff61f089 *f683c7083b7b5c760ac7436c02000000ff63f8c747fc101805088b460489078d77fc83c5048b4d *00ff61ec89f630110508041105080000000000000000250000008b7604c7450070110508ff2683 *c7083b7b5c760ac7436c02000000ff63f8c747fc301805088b460489078d77fc83c5048b4d00ff *61e889f6bec0a2110883c5048b4500ff60e489f683c7083b7b5c760ac7436c02000000ff63f8c7 *47fc601805088b460489078d77fc83c5048b4d00ff61e089f6b8110508a8110508000000000000 *0000250000008b7604c74500f8110508ff26f81105087c1105080000000000000000250000008b *7604c7450018120508ff2618120508701105080000000000000000250000000400010000000000 *110000008b7500c7450038120508ff2683c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc *0b088b46048947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f09083c7103b7b5c *760ac7436c04000000ff63f8c747f410dd0b088b46048947f8c747fcf0dc0b088d4ff4890f8d77 *fc83c5048b5500ff62f09083c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b088b4604 *8947f8c747fc10dd0b088d4ff4890f8d77fc83c5048b5500ff62ec9083c7183b7b5c760ac7436c *06000000ff63f8c747ecf0dc0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fc10dd *0b088d4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b7b5c760ac7436c06000000ff63 *f8c747ec10dd0b088b46048947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f48907 *8d77fc83c5048b4500ff60ec40130508f8120508c0120508881205085012050800000000000000 *00250000000400010000000000110000008b7500c74500a4130508ff2604000100000000001100 *000083c7083b7b5c760fbed0a21108c7436c02000000ff63fcc747fc801805088b450089078d77 *fc83c5048b4d00ff61f0900b000200000000001100000083c70c3b7b5c760fbed4a21108c7436c *03000000ff63fcc747f8a01805088b45008947fc8b4d04890f8d77f883c5088b5500ff62ec8d76 *000b000200000000001100000083c70c3b7b5c760fbed8a21108c7436c03000000ff63fcc747f8 *c01805088b45008947fc8b4d04890f8d77f883c5088b5500ff62e88d760083c7083b7b5c760ac7 *436c02000000ff63f8c747fc801805088b460489078d77fc83c5048b4d00ff61f089f600000000 *2400000083c70c3b7b5c760ac7436c03000000ff63f8c747f8a01805088b46048947fc8b4e0889 *0f8d77f883c5048b5500ff62ec8b7604c74500b4140508ff26000000002400000083c70c3b7b5c *760ac7436c03000000ff63f8c747f8c01805088b46048947fc8b4e08890f8d77f883c5048b5500 *ff62e88b7604c74500f8140508ff2628150508e41405080000000000000000250000008b7604c7 *450048150508ff2648150508801405080000000000000000250000000400010000000000110000 *008b7500c7450068150508ff2683c7083b7b5c760ac7436c02000000ff63f8c747fcf0dc0b088b *460489078d77fc83c5048b4d00ff61f089f683c71c3b7b5c760ac7436c07000000ff63f8c747e8 *d8dc0b088b46048947ec8b46088947f0c747f4f0dc0b088d47e88947f8c747fc10dd0b088d47f4 *89078d77fc83c5048b4500ff60ec89f683c71c3b7b5c760ac7436c07000000ff63f8c747e8d8dc *0b088b46048947ec8b46088947f0c747f410dd0b088d47e88947f8c747fc10dd0b088d47f48907 *8d77fc83c5048b4500ff60ec89f6f8150508ac1505088015050800000000000000002500000004 *00010000000000110000008b7500c745005c160508ff2617000400000000001100000083c7143b *7b5c760fbee4a21108c7436c05000000ff63fcc747f0e01805088b45008947f48b45048947f88b *45088947fc8b450c89078d77f083c510ff650089f6020000002400000083c7143b7b5c760ac743 *6c05000000ff63f8c747f0e01805088b45088947f48b45048947f88b46048947fc8b460889078d *77f083c50cff65008d760001000000240000008b46088945008b4d048b560489550489cec745fc *c816050883c5fcff268d760000000000240000008b46088945008b7604c745fc0c17050883c5fc *ff268d76000400010000000000110000008d45f83b43547308bee8a21108ff63fc8b7500c74500 *34170508ff26000000002400000083c7243b7b5c760ac7436c09000000ff63f8c747e0d8dc0b08 *8b460c8947e48b46108947e8c747ecd8dc0b088b46048947f08b46088947f4c747f8d8dc0b088d *47ec8947fc8d47e089078d77f883c504ff6500900400010000000000110000008b7500c745007c *170508ff2601000000020000008b4500ff60f089f601000000090000008b4500ff60f089f60100 *0000020001008b4500ff60ec89f601000000090001008b4500ff60ec89f601000000020002008b *4500ff60e889f601000000090002008b4500ff60e889f6000000000a0003008b4500ff60e489f6 *01000000020004008b4500ff60e089f601000000090004008b4500ff60e089f601000000020000 *008b4500ff60f089f601000000090000008b4500ff60f089f602000000040001008b4500ff60ec *89f602000000090001008b4500ff60ec89f602000000040002008b4500ff60e889f60200000009 *0002008b4500ff60e889f60400000001000000ff6500900400000009000000ff65009000000000 *0a0000008b4500ff60f089f6000000000a0001008b4500ff60ec89f601000000020002008b4500 *ff60e889f601000000090002008b4500ff60e89090e900000000833df0a21108007546c705f0a2 *110801000000c7450004aa0b0883c504c7450004a10b0883c504c7450090310c0883c504c74500 *50a70b0883c504c745002cbc0b0883c504c745004dec090883c50483c5fcff650089f684d41108 *4cd411088c19050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e88de40a0083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f44cd41108be84d4110883c5f0e911f80a0090f4a2110800000000240000008b *760ce990ed0a00f819050800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e815e40a0083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcbef4a21108c745f4041a050883c5f4ff2684d41108f4a211086c1a05080000 *0200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e8ade30a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4a2 *1108be84d4110883c5f0e931f70a009014a3110800000000240000008b760ce9b0ec0a00d81a05 *0800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e835e30a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe14 *a31108c745f4e41a050883c5f4ff268cd4110830d411084c1b050800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8cde20a0083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f48cd41108be30d4110883c5f0 *e951f60a009080d1110844d111083cc61108e4c611085cc61108acc6110894c611087cd011084c *d5110848d5110834a31108b81b050800000200120041008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f480d11108be94c6110883c5f0e9eff50a008d7600020000002400000083c70c *3b7b5c760ac7436c03000000ff63f8c747f87c9f05088b45048947fc8b4d08890f8d57f8895508 *8b760c83c504e9aff50a008d7600c01b050804000100010000000c0001008d45f83b43547303ff *63fc8b4e04894dfcbe3cc61108c745f8241c050883c5f8ff2689f6cc1b05080000020012001100 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f448d51108beacc6110883c5f0e943f5 *0a008d760001000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4c00a *12088b760483c5f0e911f50a0090cc1b0508010000002400110083c7183b7b5c760ac7436c0600 *0000ff63f8c747ec9c1c0508c747f8d01c05088b45048947fc8d4fec894d048d57f88955008b76 *0883c5fce9d3f80a008d7600c01b050801000100130089008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4be3cc61108c745f0041d050883c5f0ff26c01b0508010001001300 *8d008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8501d05088b4e04894ffc8d57f88955f4be5cc6110883c5f0e93cf40a00c01b050802000000 *24008d0083c7143b7b5c760ac7436c05000000ff63f8c747f06c1c05088b45088947f4c747f888 *1d05088b45048947fc8d47f08945088d47f88945048b7604e9fcf70a00c01b0508040001000100 *00000c008d008d45f83b43547303ff63fc8b4e04894dfcbe3cc61108c745f8d81d050883c5f8ff *2689f601000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4c80a1208 *8b760483c5f0e98df30a0090cc1b050800000200120009008d45f03b43547303ff63f8c745f8d4 *6d10088975fcc745f44cd51108beacc6110883c5f0e957f30a008d7600c01b0508000002001200 *21018d45ec3b43547303ff63f8c745f8d46d10088975fcc745f434a31108c745f03cc61108be7c *d0110883c5ece924f70a00bc1b0508000002001200d3028d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec881e0508c747f8c01e05088d4fec894d *f48d57f88955f0be44d1110883c5ece9cdf60a0090bc1b0508010001001300d7028d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec541e05088b46 *048947f0c747f8fc1e05088d47ec8945f48d47f88945f0bee4c6110883c5ece96ff60a008d7600 *bc1b0508010000002400df0383c7143b7b5c760ac7436c05000000ff63f8c747f0281e05088b45 *048947f4c747f8541f05088b45048947fc8d47f08945048d47f88945008b760483c5fce91df60a *0090b81b0508000002001800ff078d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c747ec085c100856e829de0a0083c4048d47ec894604c706245b1008c745f8d46d10088d47ec *8945fcc747f8f01b05088d47f88945f4be3cc61108c745f0b41f050883c5f0ff268d76008cd411 *0884d411086820050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e8b1dd0a0083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcc745f48cd41108be84d4110883c5f0e935f10a009054a311080000000024000000 *8b760ce9b4e60a00d420050800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e839dd0a0083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcbe54a31108c745f4e020050883c5f4ff26f4d41108d8d411084821050800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8d1dc0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4 *d41108bed8d4110883c5f0e955f00a0090d8d4110874a31108b421050800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e865dc0a0083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f474a31108bed8d4110883 *c5f0e9e9ef0a009008d5110800000000240000008b7608e968e50a002022050800000200180001 *008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8eddb0a *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe08d51108c745f42c22 *050883c5f4ff2608d51108d8d411089422050800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e885db0a0083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f408d51108bed8d4110883c5f0e909ef0a0090d0d1 *110890d111080023050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e819db0a0083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f490d11108bed0d1110883c5f0e99dee0a0090ccd1110880d111086c2305 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8adda0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f480d11108beccd1110883c5f0e931ee0a009050d31108c4a31108d82305080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e841da0a00 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c4a31108be50d311 *0883c5f0e9c5ed0a0090b4a3110800000000240000008b760483c504ff26442405080000020018 *0001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c9 *d90a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbeb4a31108c745f4 *5024050883c5f4ff26bcd1110854d31108d4a31108e4a31108c024050804000100010000000c00 *01008d45f83b43547303ff63fc8b4d00894dfc8b5604895500bed4a3110883c5f8e918f10a00bc *24050802000000150003008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745 *f8d46d10088975fcc747e4985f10088b46048947e8c747f0985f10088b46088947f4c747fcd824 *05088d47f089078d47e48945f48d47fc8945f0be54d3110883c5ece9a9f00a0090020000002400 *000083c7183b7b5c760ac7436c06000000ff63f8c747ec0c5f10088b45048947f0c747f80c5f10 *088b45088947fc8d47ec8945088d47f88945048b7608e960f00a00c42405080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4bee4a31108c7 *45ec7425050883c5ecff2689f6b82405080b0002000000000011000f008d45fc3b4354720883c7 *183b7b5c760fbef4a31108c7436c06000000ff63fcc747ec082505088b45008947f08b45048947 *f4c747f8c02505088b45008947fc8b450489078d47ec8945048d47f8894500bebcd1110883c5fc *e9b3ef0a008d7600b4a31108020000002400000083c7183b7b5c760ac7436c06000000ff63f8c7 *47ec0c5f10088b45088947f0c747f80c5f10088b45048947fc8d47ec8945088d47f88945048b76 *08e964ef0a00642605080b00020000000000110001008d45fc3b43547308befca31108ff63fcbe *b4a31108c745fc7026050883c5fcff268d7600d4d11108f4d01108fcd01108e426050800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950f01008894df4bed4d1 *110883c5f0e9ffe80a008d7600e426050800000200120003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fc2605088d4ff8894df4bef4d011 *0883c5f0e992ea0a0089f6e42605080400010000000000110007008d45f83b4354720883c70c3b *7b5c760fbe04a41108c7436c03000000ff63fcc747f838270508c7450000d211088d4ff8894dfc *befcd0110883c5f8e94cee0a00d4d1110890d1110848d11108bcd41108c0d4110884a31108a4a3 *1108d827050800000200120001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0 *d4110883c5f0e9cde90a00900100000024000000c74500d81112088b760483c5fce9beed0a0089 *f6dc27050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be84a31108c745f04428050883c5f0ff26d02705080100010013000d008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf0270508c747f86428 *05088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece927ed0a008d7600c82705 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b970f0100889 *4df4bed4d1110883c5f0e9ffe60a008d7600c827050800000200120011008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fc2805088d4ff8894d *f4bec0d4110883c5f0e992e80a0089f6c827050801000100130035008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec9c2805088b46048947f0c7 *47f8382905088d47ec8945f48d47f88945f0be48d1110883c5ece93fec0a008d7600c827050800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980f01008894df4 *bed4d1110883c5f0e917e60a008d7600c827050800000200120011008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e42905088d4ff8894df4be *c0d4110883c5f0e9aae70a0089f6c827050801000100130035008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec842905088b46048947f0c747f8 *202a05088d47ec8945f48d47f88945f0be48d1110883c5ece957eb0a008d760001000000240000 *00c74500d81112088b760483c5fce93aeb0a0089f6e027050801000100130001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4bea4a31108c745f0c82a050883c5f0ff26c8 *27050802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec6c2a05088b46088947f0c747f8e82a05088b46048947fc8d47ec8945 *f48d47f88945f0be48d1110883c5ece99dea0a0090c827050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b984f01008894df4bed4d1110883c5f0e977e40a00 *8d7600c827050800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8842b05088d4ff8894df4bec0d4110883c5f0e90ae60a0089 *f6c827050802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ec202b05088b46048947f08b46088947f4c747f8c02b05088d47ec *8945f48d47f88945f0be48d1110883c5ece9b1e90a0090c827050800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b998f01008894df4bed4d1110883c5f0e98be3 *0a008d7600c827050800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8702c05088d4ff8894df4bec0d4110883c5f0e91ee50a *0089f6c827050802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec0c2c05088b46048947f08b46088947f4c747f8ac2c05088d *47ec8945f48d47f88945f0be48d1110883c5ece9c5e80a009001000000240000008b4504894500 *c74504301212088b761483c5fce9a4e80a00cc27050801000100130001008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0582d050883c5f0ff26c8270508 *4200000024007f0083c7183b7b5c760ac7436c06000000ff63f8c747ecf82c05088b46048947f0 *8b46088947f4c747f87c2d05088b45048947fc8d47ec8945088d47f8894504bebcd41108e918e8 *0a00c82705080b0002000000000011007f008d45fc3b43547308be0ca41108ff63fc8b7504c745 *fcb42d050883c5fcff26900ca4110814a411082c2e050800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8edcf0a0083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f414a41108be0ca4110883c5f0e971e30a *0090ccd411081ca41108982e050800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e881cf0a0083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f41ca41108beccd4110883c5f0e905e30a0090c4d11108d4d111 *0828d41108a8d6110888d6110898d6110824a3110864a31108082f050800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a4f01008894df4bed4d1110883c5f0e9 *cbe00a008d7600082f0508420000002400010083c70c3b7b5c761ec745006c2f0508c7436c0300 *0000b8ff00000083f000894320e91e0e0b00c747f8302f05088d4ff8894d088b750483c504e95e *e20a0089f6082f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9f0f01008894df4bed4d1110883c5f0e943e00a008d760083c504e97cffffff082f050800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f8f01008894df4 *bed4d1110883c5f0e9ffdf0a008d7600082f0508420000002400010083c70c3b7b5c761ec74500 *38300508c7436c03000000b8ff00000083f000894320e9520d0b00c747f8fc2f05088d4ff8894d *088b750483c504e992e10a0089f683c504ebbb8d7600082f050800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b944f11008894df4bed4d1110883c5f0e96fdf0a *008d7600082f0508420000002400010083c70c3b7b5c761ec74500c8300508c7436c03000000b8 *ff00000083f000894320e9c20c0b00c747f88c3005088d4ff8894d088b750483c504e902e10a00 *89f6082f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *90f11008894df4bed4d1110883c5f0e9e7de0a008d760083c504e97cffffff082f050800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a0f11008894df4bed4d1 *110883c5f0e9a3de0a008d7600082f0508420000002400010083c70c3b7b5c761ec74500943105 *08c7436c03000000b8ff00000083f000894320e9f60b0b00c747f8583105088d4ff8894d088b75 *0483c504e936e00a0089f683c504ebbb8d7600082f050800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9ecf11008894df4bed4d1110883c5f0e913de0a008d76 *00082f0508420000002400010083c70c3b7b5c761ec7450024320508c7436c03000000b8ff0000 *0083f000894320e9660b0b00c747f8e83105088d4ff8894d088b750483c504e9a6df0a0089f683 *c508ebbb8d7600082f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b938f21008894df4bed4d1110883c5f0e983dd0a008d7600082f050842000000240001 *0083c70c3b7b5c761ec74500b4320508c7436c03000000b8ff00000083f000894320e9d60a0b00 *c747f8783205088d4ff8894d088b750483c504e916df0a0089f6082f050800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b984f21008894df4bed4d1110883c5f0 *e9fbdc0a008d760083c508e97cffffff082f050800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b990f21008894df4bed4d1110883c5f0e9b7dc0a008d7600082f *0508420000002400010083c70c3b7b5c761ec7450080330508c7436c03000000b8ff00000083f0 *00894320e90a0a0b00c747f8443305088d4ff8894d088b750483c504e94ade0a0089f683c508eb *bb8d7600082f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9dcf21008894df4bed4d1110883c5f0e927dc0a008d7600082f0508420000002400010083c7 *0c3b7b5c761ec7450010340508c7436c03000000b8ff00000083f000894320e97a090b00c747f8 *d43305088d4ff8894d088b750483c504e9badd0a0089f683c508ebbb8d760083c70c3b7b5c760a *c7436c03000000ff63f8c747f87c9f05088b45108947fc8b4d08890f8d57f88955108b750483c5 *0ce97bdd0a008d760083c508e978ffffff9034050858340508082f05080400000025000100082f *050805000000240001008b460483f87d750f8b7504c74504ac34050883c504ff2683c50ce939ff *ffff908b46088945008b7604c745fcb834050883c5fcff268d7600d834050850340508082f0508 *04000000250001008b7604c7450004350508ff2683c508e9f8feffff1035050810350508103505 *081035050810350508043505081035050810350508082f05080400000025000100082f05080400 *0100040000000b0001008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745f04435050883c5f0ff26082f050804000100040000000b000300 *8d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0543505088b46048947f4 *8b46088947f88b45008947fc8b460c89078d47f0894500c745fc28d411088b761083c5f8e92ce0 *0a00182f050800000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc745f424 *a31108be98d6110883c5f0e9ebdb0a008d760083c7203b7b5c760ac7436c08000000ff63f8c747 *e4983505088b450c8947e88b45108947ec8b45088947f08b45048947f4c747f8f43505088d47e4 *8945108d47f889450c8b750483c508e9a5df0a009083c508e908fdffff7036050820360508082f *05080400000025003300082f050805000000240033008b460483f83d750f8b7504c745048c3605 *0883c504ff2683c50ce9c9fcffff908b46088945008b7604c745fc9836050883c5fcff268d7600 *b8360508c0330508082f050804000000250033008b7604c74500e4360508ff2683c508e988fcff *fff0360508f0360508f0360508f0360508f0360508e4360508f0360508f0360508082f05080400 *000025003300082f050804000100040000000b0033008d45ec3b43547303ff63fc8b46048945fc *8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f02437050883c5f0ff2683c7143b *7b5c760ac7436c05000000ff63f8c747f0343705088b450c8947f48b45108947f88b45088947fc *8b450489078d47f0894510c7450c28d411088b750483c508e964de0a006837050830330508082f *0508040000002500330083c70c3b7b5c760ac7436c03000000ff63f8c747f8003305088b460489 *45fc8d4ff8894df8bec4d11108c74500c437050883c5f4e917de0a008d760083c508e9acfaffff *00380508003805080038050800380508c4370508003805080038050800380508042f0508040000 *0025006700042f050804000100040000000b0067008d45e43b43547303ff63fc8b46048945fc8b *46108945f48b460c8945f88b45008b4e08894d0089c6c745f03438050883c5f0ff2683c7143b7b *5c760ac7436c05000000ff63f8c747f0443805088b450c8947f48b45108947f88b45088947fc8b *450489078d47f0894510c7450c28d411088b750483c508e954dd0a0083c508e95cf9ffffc03805 *0878380508042f05080400000025006700042f050805000000240067008b460483f82c750f8b75 *04c74504dc38050883c504ff2683c50ce91df9ffff908b46088945008b7604c745fce838050883 *c5fcff268d76000839050864320508042f050804000000250067008b7604c7450034390508ff26 *83c508e9dcf8ffff40390508403905084039050840390508403905083439050840390508403905 *08042f05080400000025006700042f050804000100040000000b0067008d45ec3b43547303ff63 *fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f07439050883c5 *f0ff26042f050804000100030000000b0067008d45f83b4354720883c7143b7b5c760ac7436c05 *000000ff63fcc747f0843905088b46048947f48b45008947f88b46088947fc8b460c89078d47f0 *894500c745fc28d411088b760c83c5f8e9fcdb0a00182f050800000200120005008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f464a31108be98d6110883c5f0e9bbd70a008d760083 *c71c3b7b5c760ac7436c07000000ff63f8c747e8c83905088b45088947ec8b450c8947f08b4504 *8947f4c747f8243a05088d47e889450c8d47f88945088b750483c504e97bdb0a008d760083c504 *e9f0f6ffff9c3a0508503a0508042f0508030000002500e700042f0508040000002400e7008b46 *0483f83d750f8b7504c74504b83a050883c504ff2683c508e9b1f6ffff908b46088945008b7604 *c745fcc43a050883c5fcff268d7600e43a0508d4310508042f0508030000002500e7008b7604c7 *4500103b0508ff2683c504e970f6ffff1c3b05081c3b05081c3b05081c3b05081c3b0508103b05 *081c3b05081c3b0508042f0508030000002500e700042f050804000100030000000b00e7008d45 *f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4503b0508 *83c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4603b05088b45088947f88b *450c8947fc8b450489078d47f489450cc7450828d411088b750483c504e942da0a0089f6903b05 *0844310508042f0508030000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f814 *3105088b46048945fc8d4ff8894df8bec4d11108c74500e83b050883c5f4e9f3d90a008d760083 *c504e99cf4ffff243c0508243c0508243c0508243c0508e83b0508243c0508243c0508243c0508 *042f0508030000002500e700042f050804000100030000000b00e7008d45e83b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4583c050883c5f4ff2689f683c7 *103b7b5c760ac7436c04000000ff63f8c747f4683c05088b45088947f88b450c8947fc8b450489 *078d47f489450cc7450828d411088b750483c504e93ad90a0089f683c504e954f3ffffdc3c0508 *983c0508042f0508030000002500e700042f0508040000002400e7008b460483f87b750f8b7504 *c74504f83c050883c504ff2683c508e915f3ffff908b46088945008b7604c745fc043d050883c5 *fcff268d7600243d050878300508042f0508030000002500e7008b7604c74500503d0508ff2683 *c504e9d4f2ffff5c3d05085c3d05085c3d05085c3d05085c3d0508503d05085c3d05085c3d0508 *042f0508030000002500e700042f050804000100030000000b00e7008d45f03b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4903d050883c5f4ff2689f683c7 *103b7b5c760ac7436c04000000ff63f8c747f4a03d05088b45088947f88b450c8947fc8b450489 *078d47f489450cc7450828d411088b750483c504e902d80a0089f6d03d0508e82f0508042f0508 *030000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f8b82f05088b46048945fc *8d4ff8894df8bec4d11108c74500283e050883c5f4e9b3d70a008d760083c504e900f1ffff643e *0508643e0508643e0508643e0508283e0508643e0508643e0508643e0508042f05080300000025 *00e700042f050804000100030000000b00e7008d45e83b43547303ff63fc8b46048945fc8b460c *8945f88b45008b4e08894d0089c6c745f4983e050883c5f4ff2689f6042f0508000000002400e7 *0083c7103b7b5c760ac7436c04000000ff63f8c747f4a83e05088b46108947f88b460c8947fc8b *460489078d47f4894500c745fc28d411088b760483c5f8e9eed60a0089f6042f05080000020012 *00ef008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4e43e050883c5f4 *ff2689f6042f0508000002001800ff008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c747ec085c100856e8c5be0a0083c4048d47ec894604c706245b1008c745f8d46d10088d *47ec8945fcc747f8343f05088d47f88945f4c745f028121208be88d6110883c5ece948d60a0020 *d411083ca41108cc3f050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e84dbe0a0083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f43ca41108be20d4110883c5f0e9d1d10a0090e4d11108b8d31108e0d1 *1108b0d0110840d3110894a3110804000100010000000c00000083c70c3b7b5c760ac7436c0300 *0000ff63fcc747f87cdc0b088b46048947fc8b4d00890f8d77f883c5048b5500ff62ec48400508 *01000100130001008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d *10088975fcc747fc5c400508c707c00a12088b4e04894df48d57fc8955f0be40d3110883c5ece9 *32d50a0089f64040050801000100130009008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4c745f094a31108bee0d1110883c5ece9f5d40a0090404005080100010013000b00 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *f04005088b46048947f0c747f87cdc0b08c747fcc80a1208c70700d211088d47ec8945f48d47f8 *8945f0beb0d0110883c5ece98ad40a0089f63c40050801000100130017008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82c4105088b4e04894f *fc8d57f88955f4beb8d3110883c5f0e92cd00a00384005080000000024003f0083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec984005088b46088947f0c747f8984105088b46048947fc8d47 *ec8945008d47f88945fcbee4d1110883c5f8e9e7d30a008d760038400508040001000000000011 *003f008d45f83b43547308be5ca41108ff63fc8b7500c74500e8410508ff260400010000000000 *1100000083c71c3b7b5c760fbe64a41108c7436c07000000ff63fcc747e8fc9e05088b45008947 *ecc747f0dc9e05088b45008947f4c747f83c9f05088d47f08947fc8d47e889078d77f883c5048b *4500ff60e09004000100000000001100000083c71c3b7b5c760fbe68a41108c7436c07000000ff *63fcc747e81c9f05088b45008947ecc747f0dc9e05088b45008947f4c747f83c9f05088d47f089 *47fc8d47e889078d77f883c5048b4500ff60e09001000100130000008d45f43b43547303ff63f8 *c745f8d46d10088975fc8b4e04894df483c5f4e985ffffff9001000100130000008d45f43b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9fdfeffff900b0002000000000011 *00000083c7243b7b5c760fbe6ca41108c7436c09000000ff63fcc747e01c4305088b45048947e4 *c747ec484305088b45008947f0c747f85c9f05088d47ec8947fc8d47e089078d77f883c5088b45 *00ff60dc90d4d1110880d1110814c611083cc611081cc611089cc611087cd0110844a31108cc43 *050800000200120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f480d11108be *9cc6110883c5f0e9ebcd0a008d7600cc43050800000200120011008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f480d11108be9cc6110883c5f0e9b3cd0a008d7600d4430508000002 *00120009008d45f03b43547303ff63f8c745f8d46d10088975fcc745f43cc61108be7cd0110883 *c5f0e97bcd0a008d7600be00d2110883c5108b4500ff60f089f6e443050802000000150001008d *45ec3b43547303ff63f8c745f8d46d10088975fcc745f444a311088b4e08894df08b760483c5ec *e93bd10a008d7600e4430508040000002400010083c7183b7b5c760ac7436c06000000ff63f8c7 *47ecac4405088b450c8947f08b45048947f4c747f88c6b10088b45108947fc8b450889078d47ec *8945108d47f889450c8b760883c508e9ded00a0089f6d443050804000000120011008d45e43b43 *547303ff63f8c745f8d46d10088975fc8b46108945e88b460c8945ec8b46088945f08b46048945 *f4be3cc61108c745e4e844050883c5e4ff2689f6d4430508040000002400110083c72c3b7b5c76 *0ac7436c0b000000ff63f8c747d88c6b10088b45088947dc8b45048947e0c747e4444505088b45 *108947e88b450c8947ec8b46048947f08b46088947f4c747f87cdc0b088d47e48947fc8d47d889 *078d77f883c5148b4500ff60ec89f68b46088945008b7604c745fc9045050883c5fcff268d7600 *f445050890440508d44305080300000025001100d443050804000100020000000e0011008d45f0 *3b43547303ff63fc8975f88b46088945fc8b45008b4e04894d0089c6c745f42046050883c5f4ff *2690c843050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *28f31008894df4bed4d1110883c5f0e993c90a008d7600c843050800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b92cf31008894df4bed4d1110883c5f0e957c9 *0a008d7600c843050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b930f31008894df4bed4d1110883c5f0e91bc90a008d7600c843050802000000150089008d *45f43b4354720b81c7c00000003b7b5c760ac7436c30000000ff63f8c745f8d46d10088975fcc7 *8744ffffff304605088b4604898748ffffff8b460889874cffffffc78750ffffff68460508c787 *5cffffffe4bb0b088d8750ffffff898760ffffffc78764ffffff74a71108c78768ffffff7cdc0b *088d875cffffff89876cffffffc78770ffffff00d21108c78774ffffffa4460508c74780e4bb0b *088d8774ffffff894784c7478864a41108c7478c7cdc0b088d47808947908d8768ffffff894794 *c747987cdc0b08c7479c480b1208c747a000d21108c747a4e4bb0b088d47988947a8c747ac78a7 *1108c747b07cdc0b088d47a48947b48d478c8947b8c747bce0460508c747c8e4bb0b088d47bc89 *47ccc747d068a41108c747d47cdc0b088d47c88947d88d47b08947dcc747e07cdc0b08c747e438 *0b1208c747e800d21108c747ece4bb0b088d47e08947f0c747f47ca71108c747f87cdc0b088d47 *ec8947fc8d47d489078d47f88945f48db744ffffff83c5f4e997fdffff8d760000000000240000 *00c7450070a711088b760c83c5fce952c90a0089f6d443050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcbe3cc61108c745f4a448050883c5f4ff2689f6c843050800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b934f31008894df4 *bed4d1110883c5f0e903c70a008d7600c843050801000100130001008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f84805088d4ff8894df48b *760483c5f0e998c80a00c8430508010000002400090083c7183b7b5c760ac7436c06000000ff63 *f8c747ecc4480508c747f8344905088b45048947fc8d4fec894d048d57f88955008b760883c5fc *e95bcc0a008d7600c843050801000100130009008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df4be3cc61108c745f07c49050883c5f0ff26c8430508000002001200fb008d45 *f03b4354720883c73c3b7b5c760ac7436c0f000000ff63f8c745f8d46d10088975fcc747c82c44 *0508c747d464440508c747e01c4705088d47c88947e48d47d48947e8c747ecc84905088d47c889 *47f0c747f87cdc0b088d47ec8947fc8d47e089078d47f88945f4be1cc6110883c5f0e991c70a00 *9001000000240000008b760ce980c70a00d443050801000100130001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f0804a050883c5f0ff260200000024 *00000083c70c3b7b5c760ac7436c03000000ff63f8c747f85c9f05088b45048947fc8b4d08890f *8d57f88955088b760c83c504e90bc70a008d7600d443050804000100010000000c0001008d45f8 *3b43547303ff63fc8b4e04894dfcbe3cc61108c745f8c84a050883c5f8ff2689f6d44305080200 *00002400010083c7083b7b5c760ac7436c02000000ff63f8c747fc104b05088b450489078b4d08 *894d048d57fc8955088b7604e9a2ca0a0089f6d443050802000000150001008d45ec3b43547303 *ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be3cc61108c745ec404b050883c5 *ecff2689f6c843050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b93cf31008894df4bed4d1110883c5f0e93bc40a008d7600c843050801000100130001008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c0 *4b05088d4ff8894df48b760483c5f0e9d0c50a00c8430508030000002400090083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec804b05088b45088947f08b45048947f4c747f8fc4b05088b45 *0c8947fc8d47ec89450c8d47f88945088b760883c504e987c90a008d7600c84305080300000012 *0009008d45e83b43547303ff63f8c745f8d46d10088975fc8b460c8945ec8b46088945f08b4604 *8945f4be3cc61108c745e8444c050883c5e8ff26c84305080300000012000d008d45ec3b435472 *0883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8944a05088b460c *8947ecc747f49c4c05088b46048947f88b46088947fc8b460c89078d47e88945f48d47f48945f0 *be14c6110883c5ece9d2c80a0089f6020000002400000083c70c3b7b5c760ac7436c03000000ff *63f8c747f83c9f05088b45048947fc8b4d08890f8d57f88955088b760c83c504e987c40a008d76 *00d443050804000100010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbe3cc61108 *c745f84c4d050883c5f8ff2689f6d4430508020000002400010083c7083b7b5c760ac7436c0200 *0000ff63f8c747fc944d05088b450489078b4d08894d048d57fc8955088b7604e91ec80a0089f6 *d443050802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df0 *8b56048955f4be3cc61108c745ecc44d050883c5ecff2689f6c843050800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b940f31008894df4bed4d1110883c5f0e9 *b7c10a008d7600c843050801000100130001008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8444e05088d4ff8894df48b760483c5f0e94cc30a *00c8430508030000002400090083c7183b7b5c760ac7436c06000000ff63f8c747ec044e05088b *45088947f08b45048947f4c747f8804e05088b450c8947fc8d47ec89450c8d47f88945088b7608 *83c504e903c70a008d7600c843050803000000120009008d45e83b43547303ff63f8c745f8d46d *10088975fc8b460c8945ec8b46088945f08b46048945f4be3cc61108c745e8c84e050883c5e8ff *26c843050804000100020000000e000d008d45f83b4354720883c7203b7b5c760ac7436c080000 *00ff63fcc747e4e04c05088b46048947e88b46088947ec8b45008947f0c747f4204f05088b4604 *8947f88b46088947fc8b450089078d47e48945008d47f48945fcbe14c6110883c5f8e948c60a00 *c84305080200000024000d0083c70c3b7b5c760ac7436c03000000ff63f8c747f8684f05088b45 *088947fc8b4d04890f8d57f88955088b7604e90ac60a0089f6c8430508000002001800ff008d45 *ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856e815ae0a0083c4 *048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ecf4430508c747f8004a05 *088d47f88945f08d47ec8945f4be3cc61108c745ecd84f050883c5ecff2689f6d4d4110880a411 *088850050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e891ad0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcc745f480a41108bed4d4110883c5f0e915c10a0090d4d1110890d1110848d11108b8d41108 *bcd41108c0d411080ca41108a4a41108f450050800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b944f31008894df4bed4d1110883c5f0e9dbbe0a008d760083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8205105088d47f8894508bec0d4110883c504e98c *c00a000c51050801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4c745f03012120883c5f0e95adcffff89f6f450050800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b950f31008894df4bed4d1110883c5f0e93bbe0a008d *7600f450050800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8c05105088d4ff8894df4bec0d4110883c5f0e9cebf0a0089f6 *f450050801000100130065008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec885105088b46048947f0c747f8fc5105088d47ec8945f48d47f889 *45f0be48d1110883c5ece97bc30a008d760001000000240000008b4504894500c7450430121208 *8b761483c5fce958c30a00f850050801000100130001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be90d11108c745f0a452050883c5f0ff2683c7183b7b5c760ac7436c *06000000ff63f8c747ec485205088b46048947f0c747f8c85205088b45048947fc8d47ec894508 *8d47f8894504bebcd41108e9dec20a0089f60c51050801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f03012120883c5f0e99edaffff89f6f4500508 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b960f31008894d *f4bed4d1110883c5f0e97fbc0a008d7600f450050800000200120021008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87c5305088d4ff8894df4 *bec0d4110883c5f0e912be0a0089f6f450050801000100130065008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec445305088b46048947f0c747 *f8b85305088d47ec8945f48d47f88945f0be48d1110883c5ece9bfc10a008d7600010000002400 *00008b4504894500c74504301212088b761483c5fce99cc10a00f850050801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f06054050883 *c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec045405088b46048947f0c747f884 *5405088b45048947fc8d47ec8945088d47f8894504bebcd41108e922c10a0089f60c5105080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0301212 *0883c5f0e9e2d8ffff89f6f450050800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b970f31008894df4bed4d1110883c5f0e9c3ba0a008d7600f4500508000002 *00120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8385505088d4ff8894df4bec0d4110883c5f0e956bc0a0089f6f45005080100010013 *0065008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec005505088b46048947f0c747f8745505088d47ec8945f48d47f88945f0be48d1110883c5 *ece903c00a008d760001000000240000008b4504894500c74504301212088b761483c5fce9e0bf *0a00f850050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be90d11108c745f01c56050883c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747 *ecc05505088b46048947f0c747f8405605088b45048947fc8d47ec8945088d47f8894504bebcd4 *1108e966bf0a0089f61051050801000100130001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4c745f03012120883c5f0e96e05000089f6fc50050801000100130023008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8bc *5605088b4e04894ffc8d57f88955f4c745f0b8d41108be48d1110883c5ece9d5be0a0090105105 *0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0 *3012120883c5f0e9de04000089f6fc50050802000000150023008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf45605088b46088947f0c747f8 *4c5705088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece939be0a0090f45005 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980f3100889 *4df4bed4d1110883c5f0e913b80a008d7600f450050800000200120021008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e85705088d4ff8894d *f4bec0d4110883c5f0e9a6b90a0089f6f4500508020000001500ad008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec845705088b46048947f08b *46088947f4c747f8245805088d47ec8945f48d47f88945f0be48d1110883c5ece94dbd0a009001 *000000240000008b4504894500c74504301212088b761483c5fce92cbd0a00f850050801000100 *130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0 *d058050883c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec705805088b46048947 *f08b46088947f4c747f8f45805088b45048947fc8d47ec8945088d47f8894504bebcd41108e9ac *bc0a001051050801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4c745f03012120883c5f0e9b602000089f6fc50050801000100130023008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8745905088b4e04 *894ffc8d57f88955f4c745f0b8d41108be48d1110883c5ece91dbc0a0090105105080100010013 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03012120883c5 *f0e92602000089f6fc50050802000000150023008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747ecac5905088b46088947f0c747f8045a05088b46 *048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece981bb0a0090f45005080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b994f31008894df4bed4d111 *0883c5f0e95bb50a008d7600f450050800000200120021008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a05a05088d4ff8894df4bec0d41108 *83c5f0e9eeb60a0089f6f4500508020000001500ad008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec3c5a05088b46048947f08b46088947f4c7 *47f8dc5a05088d47ec8945f48d47f88945f0be48d1110883c5ece995ba0a009001000000240000 *008b4504894500c74504301212088b761483c5fce974ba0a00f850050801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0885b050883c5 *f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec285b05088b46048947f08b46088947 *f4c747f8ac5b05088b45048947fc8d47ec8945088d47f8894504bebcd41108e9f4b90a00d85b05 *08205905086c560508b0540508f452050850510508f4500508420000002500ff00f45005080b00 *0200000000001100ff008d45fc3b43547308bea4a41108ff63fc8b7504c745fc445c050883c5fc *ff2690a4a41108aca41108745c050800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8a5a10a0083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f4aca41108bea4a4110883c5f0e929b50a0090ccd41108b4a4 *1108e05c050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e839a10a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f4b4a41108beccd4110883c5f0e9bdb40a009048d41108d4a4110844d41108d4a411 *083cd41108d4a411084c5d050800000200180003008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e8bda00a0083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4d4a41108be48d4110883c5f0e941b40a0090545d050800000200 *180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *59a00a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d4a41108 *be44d4110883c5f0e9ddb30a00905c5d050800000200180003008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8f59f0a0083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcc745f4d4a41108be3cd4110883c5f0e979b30a0090c4d111 *08d4d1110828d41108a8d6110880d6110888d611088cd611084ca411082ca5110820d411081ca5 *1108945e050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *acf31008894df4bed4d1110883c5f0e933b10a008d7600945e0508420000002400010083c70c3b *7b5c761ec74500045f0508c7436c03000000b8ff00000083f000894320e986de0a00c747f8c85e *05088d4ff8894d088b750483c504e9c6b20a0089f6945e050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9f8f31008894df4bed4d1110883c5f0e9abb00a00 *8d760083c504e97cffffff04000100020000000e0000008d45fc3b4354720883c70c3b7b5c760a *c7436c03000000ff63fcc747f85c9f05088b46048947fc8b450089078d47f88945008b760883c5 *fce937b20a008d7600a85e050800000200120005008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f42ca51108be8cd6110883c5f0e9ffb10a008d7600a85e050804000100020000000e *0005008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec945f05088b4500 *8947f08b46048947f4c747f8e05f05088d47ec8945008d47f88945fc8b760883c5f8e9adb50a00 *90a85e050800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42ca5 *1108be8cd6110883c5f0e96bb10a008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec *1c6005088b450c8947f08b45048947f4c747f8746005088d47ec89450c8d47f88945088b750483 *c504e931b50a0090a0600508805f0508945e0508030000002500a10083c70c3b7b5c760ac7436c *03000000ff63f8c747f8505f05088b46048945fc8d4ff8894df8bec4d11108c74500f860050883 *c5f4e9e3b40a008d760083c504e9c8fdffff34610508346105083461050834610508f860050834 *6105083461050834610508905e05080300000025004301905e050804000100030000000b004301 *8d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f46861 *050883c5f4ff2689f6905e0508000000002400470183c7103b7b5c760ac7436c04000000ff63f8 *c747f4786105088b46108947f88b460c8947fc8b460489078d47f4894500c745fc28d411088b76 *0483c5f8e91eb40a0089f6905e05080000020012004f018d45ec3b43547303ff63f8c745f8d46d *10088975fcbea8d61108c745f4b461050883c5f4ff2689f6905e05080000020012006f018d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8046205 *088d4ff8894df4c745f028121208be88d6110883c5ece997b30a008d7600945e05080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910f41008894df4bed4d111 *0883c5f0e96fad0a008d7600945e0508420000002400010083c70c3b7b5c761ec74500c8620508 *c7436c03000000b8ff00000083f000894320e9c2da0a00c747f88c6205088d4ff8894d088b7504 *83c504e902af0a0089f6945e050800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b95cf41008894df4bed4d1110883c5f0e9e7ac0a008d760083c504e97cffffff *04000100020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc7 *47f83c9f05088b46048947fc8b450089078d47f88945008b760883c5fce973ae0a008d7600a85e *050800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42ca51108be *8cd6110883c5f0e93bae0a008d7600a85e050804000100020000000e0005008d45f83b43547208 *83c7183b7b5c760ac7436c06000000ff63fcc747ec586305088b45008947f08b46048947f4c747 *f8a46305088d47ec8945008d47f88945fc8b760883c5f8e9e9b10a0090a85e0508000002001200 *05008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42ca51108be8cd6110883c5f0e9 *a7ad0a008d760083c7183b7b5c760ac7436c06000000ff63f8c747ece06305088b450c8947f08b *45048947f4c747f8386405088d47ec89450c8d47f88945088b750483c504e96db10a0090646405 *0844630508945e0508030000002500a10083c70c3b7b5c760ac7436c03000000ff63f8c747f814 *6305088b46048945fc8d4ff8894df8bec4d11108c74500bc64050883c5f4e91fb10a008d760083 *c504e9c8fdfffff8640508f8640508f8640508f8640508bc640508f8640508f8640508f8640508 *905e05080300000025004301905e050804000100030000000b0043018d45e83b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f42c65050883c5f4ff2689f6905e *0508000000002400470183c7103b7b5c760ac7436c04000000ff63f8c747f43c6505088b461089 *47f88b460c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e95ab00a0089f6 *905e05080000020012004f018d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c7 *45f47865050883c5f4ff2689f6905e05080000020012006f018d45ec3b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c86505088d4ff8894df4c745f028 *121208be88d6110883c5ece9d3af0a008d7600905e05080000020012007f018d45ec3b43547208 *83c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec38620508c747f8fc *6505088d4fec894df48d57f88955f0be80d6110883c5ece979af0a0090945e0508000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b970f41008894df4bed4d11108 *83c5f0e953a90a008d7600945e0508420000002400010083c70c3b7b5c761ec74500e4660508c7 *436c03000000b8ff00000083f000894320e9a6d60a00c747f8a86605088d4ff8894d088b750483 *c504e9e6aa0a0089f6945e050800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9bcf41008894df4bed4d1110883c5f0e9cba80a008d760083c504e97cffffff04 *000100010000000c0000008d45fc3b4354720883c7083b7b5c760ac7436c02000000ff63fcc747 *fc1c9f05088b4d00890f8d57fc8955008b760483c5fce95daa0a0090a85e050800000200120003 *008d45f03b43547303ff63f8c745f8d46d10088975fcc745f44ca41108be8cd6110883c5f0e927 *aa0a008d760083c7143b7b5c760ac7436c05000000ff63f8c747f0746705088b450c8947f4c747 *f8b86705088d4ff0894d0c8d57f88955088b750483c504e9f3ad0a008d7600e467050860670508 *945e0508030000002500610083c70c3b7b5c760ac7436c03000000ff63f8c747f8306705088b46 *048945fc8d4ff8894df8bec4d11108c745003868050883c5f4e9a3ad0a008d760083c504e968fe *ffff7468050874680508746805087468050838680508746805087468050874680508905e050803 *0000002500c300905e050804000100030000000b00c3008d45e83b43547303ff63fc8b46048945 *fc8b460c8945f88b45008b4e08894d0089c6c745f4a868050883c5f4ff2689f6905e0508000000 *002400c70083c7103b7b5c760ac7436c04000000ff63f8c747f4b86805088b46108947f88b460c *8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e9deac0a0089f6905e050800 *0002001200cf008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4f46805 *0883c5f4ff2689f6905e0508000002001200ef008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8446905088d4ff8894df4c745f028121208be88 *d6110883c5ece957ac0a008d7600905e0508000002001200ff018d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec50660508c747f8786905088d4f *ec894df48d57f88955f0be80d6110883c5ece9fdab0a0090945e050800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9ccf41008894df4bed4d1110883c5f0e9d7 *a50a008d7600945e0508420000002400010083c70c3b7b5c761ec74500606a0508c7436c030000 *00b8ff00000083f000894320e92ad30a00c747f8246a05088d4ff8894d088b750483c504e96aa7 *0a0089f6945e050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b918f51008894df4bed4d1110883c5f0e94fa50a008d760083c504e97cffffff040001000100 *00000c0000008d45fc3b4354720883c7083b7b5c760ac7436c02000000ff63fcc747fcfc9e0508 *8b4d00890f8d57fc8955008b760483c5fce9e1a60a0090a85e050800000200120003008d45f03b *43547303ff63f8c745f8d46d10088975fcc745f44ca41108be8cd6110883c5f0e9aba60a008d76 *0083c7143b7b5c760ac7436c05000000ff63f8c747f0f06a05088b450c8947f4c747f8346b0508 *8d4ff0894d0c8d57f88955088b750483c504e977aa0a008d7600606b0508dc6a0508945e050803 *0000002500610083c70c3b7b5c760ac7436c03000000ff63f8c747f8ac6a05088b46048945fc8d *4ff8894df8bec4d11108c74500b46b050883c5f4e927aa0a008d760083c504e968fefffff06b05 *08f06b0508f06b0508f06b0508b46b0508f06b0508f06b0508f06b0508905e0508030000002500 *c300905e050804000100030000000b00c3008d45e83b43547303ff63fc8b46048945fc8b460c89 *45f88b45008b4e08894d0089c6c745f4246c050883c5f4ff2689f6905e0508000000002400c700 *83c7103b7b5c760ac7436c04000000ff63f8c747f4346c05088b46108947f88b460c8947fc8b46 *0489078d47f4894500c745fc28d411088b760483c5f8e962a90a0089f6905e0508000002001200 *cf008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4706c050883c5f4ff *2689f6905e0508000002001200ef008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8c06c05088d4ff8894df4c745f028121208be88d6110883c5 *ece9dba80a008d7600905e0508000002001200ff018d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747eccc690508c747f8f46c05088d4fec894df48d *57f88955f0be80d6110883c5ece981a80a0090945e050800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b928f51008894df4bed4d1110883c5f0e95ba20a008d76 *00945e0508420000002400010083c70c3b7b5c761ec74500dc6d0508c7436c03000000b8ff0000 *0083f000894320e9aecf0a00c747f8a06d05088d4ff8894d088b750483c504e9eea30a0089f694 *5e050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974f510 *08894df4bed4d1110883c5f0e9d3a10a008d760083c504e97cffffff04000100010000000c0000 *008d45fc3b4354720883c7083b7b5c760ac7436c02000000ff63fcc747fcdc9e05088b4d00890f *8d57fc8955008b760483c5fce965a30a0090a85e050800000200120003008d45f03b43547303ff *63f8c745f8d46d10088975fcc745f44ca41108be8cd6110883c5f0e92fa30a008d760083c7143b *7b5c760ac7436c05000000ff63f8c747f06c6e05088b450c8947f4c747f8b06e05088d4ff0894d *0c8d57f88955088b750483c504e9fba60a008d7600dc6e0508586e0508945e0508030000002500 *610083c70c3b7b5c760ac7436c03000000ff63f8c747f8286e05088b46048945fc8d4ff8894df8 *bec4d11108c74500306f050883c5f4e9aba60a008d760083c504e968feffff6c6f05086c6f0508 *6c6f05086c6f0508306f05086c6f05086c6f05086c6f0508905e0508030000002500c300905e05 *0804000100030000000b00c3008d45e83b43547303ff63fc8b46048945fc8b460c8945f88b4500 *8b4e08894d0089c6c745f4a06f050883c5f4ff2689f6905e0508000000002400c70083c7103b7b *5c760ac7436c04000000ff63f8c747f4b06f05088b46108947f88b460c8947fc8b460489078d47 *f4894500c745fc28d411088b760483c5f8e9e6a50a0089f6905e0508000002001200cf008d45ec *3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4ec6f050883c5f4ff2689f6905e *0508000002001200ef008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f83c7005088d4ff8894df4c745f028121208be88d6110883c5ece95fa50a *008d7600905e0508000002001200ff018d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ec486d0508c747f8707005088d4fec894df48d57f88955f0 *be80d6110883c5ece905a50a0090945e050800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b980f51008894df4bed4d1110883c5f0e9df9e0a008d7600945e0508 *420000002400010083c70c3b7b5c761ec7450058710508c7436c03000000b8ff00000083f00089 *4320e932cc0a00c747f81c7105088d4ff8894d088b750483c504e972a00a0089f6945e05080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ccf51008894df4be *d4d1110883c5f0e9579e0a008d7600eb8289f68b7508c7450870a7110883c504e91ea00a0089f6 *d8710508d4710508945e0508020000002500010083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8a47105088b46048945fc8d4ff8894df8bec4d11108c745000072050883c5f4e9dba30a008d *7600e917ffffff8d76003c7205083c7205083c7205083c720508007205083c7205083c7205083c *720508905e05080200000025000300905e050804000100020000000e0003008d45ec3b43547303 *ff63fc8b46048945fc8b45008b4e08894d0089c6c745f87072050883c5f8ff26905e0508000000 *002400070083c70c3b7b5c760ac7436c03000000ff63f8c747f8807205088b46108947fc8b4e0c *890f8d57f8895500c745fc28d411088b760483c5f8e924a30a00905e05080000020012000f008d *45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4b472050883c5f4ff2689f6 *905e0508000002001800ff018d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c7 *47e0085c100856e8fd8a0a0083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945 *fcc747ecc4700508c747f8fc7205088d47ec8945f48d47f88945f0be80d6110883c5ece97aa20a *0089f6b45e050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c747f8085c100856e8858a0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47 *f88945fcc745f41ca51108be20d4110883c5f0e9099e0a009048d411083ca5110844d411083ca5 *11083cd411083ca511080074050800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8098a0a0083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f43ca51108be48d4110883c5f0e98d9d0a009008740508000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8a5890a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f43ca511 *08be44d4110883c5f0e9299d0a00901074050800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e841890a0083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f43ca51108be3cd4110883c5f0e9c59c0a0090c4d1 *1108d4d1110828d41108a8d6110888d611088cd6110804a311082ca51108487505080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d8f51008894df4bed4d111 *0883c5f0e98b9a0a008d760048750508420000002400010083c70c3b7b5c761ec74500ac750508 *c7436c03000000b8ff00000083f000894320e9dec70a00c747f8707505088d4ff8894d088b7504 *83c504e91e9c0a0089f64875050800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b924f61008894df4bed4d1110883c5f0e9039a0a008d760083c504e97cffffff *04000100020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc7 *47f8b49e05088b46048947fc8b450089078d47f88945008b760883c5fce98f9b0a008d76005875 *050800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42ca51108be *8cd6110883c5f0e9579b0a008d76005875050804000100020000000e0005008d45f83b43547208 *83c7183b7b5c760ac7436c06000000ff63fcc747ec3c7605088b45008947f08b46048947f4c747 *f8887605088d47ec8945008d47f88945fc8b760883c5f8e9059f0a009058750508000002001200 *03008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404a31108be8cd6110883c5f0e9 *c39a0a008d760083c7183b7b5c760ac7436c06000000ff63f8c747ecc47605088b450c8947f08b *45048947f4c747f81c7705088d47ec89450c8d47f88945088b750483c504e9899e0a0090487705 *082876050848750508030000002500710083c70c3b7b5c760ac7436c03000000ff63f8c747f8f8 *7505088b46048945fc8d4ff8894df8bec4d11108c74500a077050883c5f4e93b9e0a008d760083 *c504e9c8fdffffdc770508dc770508dc770508dc770508a0770508dc770508dc770508dc770508 *44750508030000002500e3004475050804000100030000000b00e3008d45e83b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f41078050883c5f4ff2689f64475 *0508000000002400e70083c7103b7b5c760ac7436c04000000ff63f8c747f4207805088b461089 *47f88b460c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e9769d0a0089f6 *44750508000002001200ef008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c7 *45f45c78050883c5f4ff2689f644750508000002001800ff008d45ec3b4354720883c7183b7b5c *760ac7436c06000000ff63f8c747ec085c100856e84d850a0083c4048d47ec894604c706245b10 *08c745f8d46d10088d47ec8945fcc747f8ac7805088d47f88945f4c745f028121208be88d61108 *83c5ece9d09c0a0020d4110884a511084479050800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8d5840a0083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f484a51108be20d4110883c5f0e959980a0090d4 *d41108a4a51108b079050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e869840a0083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f4a4a51108bed4d4110883c5f0e9ed970a0090d4d1110890d1110848d1 *1108b8d41108bcd41108c0d4110874a31108a4a41108387a050801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03012120883c5f0e9e2e1ffff89f6 *247a050801000100130023008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8487a05088b4e04894ffc8d57f88955f4c745f0b8d41108be48d111 *0883c5ece9499b0a00900100000024000000c74500301212088b760483c5fce92e9b0a0089f634 *7a050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be *74a31108c745f0d47a050883c5f0ff26247a050802000000150033008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec807a05088b46088947f0c7 *47f8f47a05088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece9919a0a00901c *7a050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930f610 *08894df4bed4d1110883c5f0e96b940a008d76001c7a050800000200120021008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8907b05088d4ff8 *894df4bec0d4110883c5f0e9fe950a0089f61c7a0508020000001500ed008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec2c7b05088b46048947 *f08b46088947f4c747f8cc7b05088d47ec8945f48d47f88945f0be48d1110883c5ece9a5990a00 *9001000000240000008b4504894500c74504301212088b761483c5fce984990a00207a05080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c7 *45f0787c050883c5f0ff261c7a0508420000002400ff0083c7183b7b5c760ac7436c06000000ff *63f8c747ec187c05088b46048947f08b46088947f4c747f89c7c05088b45048947fc8d47ec8945 *088d47f8894504bebcd41108e9f8980a001c7a05080b000200000000001100ff008d45fc3b4354 *7308bec8a51108ff63fc8b7504c745fcd47c050883c5fcff2690c8a51108d0a511084c7d050800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8cd800a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d0 *a51108bec8a5110883c5f0e951940a0090ccd41108d8a51108b87d050800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e861800a0083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d8a51108beccd4110883 *c5f0e9e5930a0090d4d41108f8a51108247e050800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f57f0a0083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4f8a51108bed4d4110883c5f0e979930a009048 *d411081ca6110844d411081ca611083cd411081ca61108907e050800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8797f0a0083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f41ca61108be48d4110883c5f0 *e9fd920a0090987e050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e8157f0a0083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f41ca61108be44d4110883c5f0e999920a0090a07e050800000200180003 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b17e0a *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f41ca61108be3cd4 *110883c5f0e935920a0090c8d1110864a61108d47f050800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8457e0a0083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f464a61108bec8d1110883c5f0e9c9910a *00906cd1110884a6110868d1110884a6110864d1110884a6110860d1110884a611085cd1110884 *a6110858d1110884a611084080050800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8b17d0a0083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f484a61108be6cd1110883c5f0e935910a0090488005080000 *0200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e84d7d0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f484a6 *1108be68d1110883c5f0e9d1900a00905080050800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8e97c0a0083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f484a61108be64d1110883c5f0e96d900a009058 *80050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8857c0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f484a61108be60d1110883c5f0e909900a00906080050800000200180003008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8217c0a0083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f484a61108be5cd1110883c5f0e9a5 *8f0a00906880050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8bd7b0a0083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f484a61108be58d1110883c5f0e9418f0a0090bcd11108b8d111080ca71108b4 *a31108f4a31108be04d2110883c50c8b4500ff60ec89f68b460489450883c504e90aa3ffff89f6 *020000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec0c5f10088b45088947f0 *c747f80c5f10088b45048947fc8d47ec8945088d47f88945048b7610e9d0920a008b4604894508 *beb4a31108c7450004830508ff26020000002400000083c7183b7b5c760ac7436c06000000ff63 *f8c747ec0c5f10088b45088947f0c747f80c5f10088b45048947fc8d47ec8945088d47f8894504 *8b7618e974920a008b4604894508beb4a31108c7450060830508ff26d082050802000000150001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0e97f *0100008d7600d082050802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e08894df48b56048955f083c5f0e9470100008d760083c7183b7b5c760ac7436c06000000ff *63f8c747ecc08305088b45048947f08b46088947f4c747f8f88305088b45048947fc8b46048907 *8d47ec8945088d47f8894504beb8d11108e9a3910a008d7600d082050802000000150001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0e9bf000000 *8d7600d082050802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08 *894df48b56048955f083c5f0e9870000008d760083c7183b7b5c760ac7436c06000000ff63f8c7 *47ec808405088b45048947f08b46088947f4c747f8b88405088b45048947fc8b460489078d47ec *8945088d47f8894504bebcd11108e9e3900a008d7600e484050824840508a083050844830508ec *820508dc820508c88205084200000025001f00c88205080b0002000000000011001f008d45fc3b *43547308be0ca71108ff63fc8b7504c745fc5885050883c5fcff2690e4d11108d4d111085ca411 *0814a71108f4a31108b83cf61008894500bed4d1110883c5fce9778a0a008d7600908505080100 *0100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e95dbc *ffff9083c7243b7b5c760ac7436c09000000ff63f8c747e0c08505088b46048947e4c747ec7cdc *0b08c747f0400b12088d47e08947f4c747f87cdc0b08c747fc400b12088d47ec89078d77f883c5 *048b4500ff60ec89f69085050801000100130001008d45f43b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df483c5f4e9d9bbffff9083c7183b7b5c760ac7436c06000000ff63f8c747ec *448605088b46048947f0c747f87cdc0b08c747fc480b12088d4fec890f8d77f883c5048b5500ff *62ec89f69085050801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e *04894df483c5f4e969bbffff9083c7183b7b5c760ac7436c06000000ff63f8c747ecb48605088b *46048947f0c747f87cdc0b08c747fc380b12088d4fec890f8d77f883c5048b5500ff62ec89f694 *85050801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483 *c5f4e9bd060000908c85050800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b944f61008894df4bed4d1110883c5f0e9a7880a008d760088850508010001001300 *0b008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc7 *47ec248705088b46048947f0c747f8548705088d47ec8945f48d47f88945f0bee4d1110883c5ec *e9338e0a008d76009485050801000100130001008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df483c5f4e9f105000090888505080200000024000b0083c7183b7b5c761ec745 *0020880508c7436c06000000b8ff00000083f000894320e96ab50a00c747ec908705088b450489 *47f0c747f8f08705088b45088947fc8d47ec8945088d47f8894504bee4d11108e99e8d0a0089f6 *83c504eba38d76009085050801000100130001008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df483c5f4e991b9ffff9083c7243b7b5c760ac7436c09000000ff63f8c747e08c *8805088b45048947e4c747ec7cdc0b08c747f0400b12088d47e08947f4c747f87cdc0b08c747fc *480b12088d47ec89078d77f883c5108b4500ff60ec89f6b0880508788805088885050803000000 *25000f008b46048945fc8b4d04894df8c745001889050883c5f8e9d19cffff9083c504e9e4feff *ff9085050801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f483c5f4e9d5b8ffff9083c7243b7b5c760ac7436c09000000ff63f8c747e0488905088b450489 *47e4c747ec7cdc0b08c747f0400b12088d47e08947f4c747f87cdc0b08c747fc380b12088d47ec *89078d77f883c5108b4500ff60ec89f66c89050834890508888505080300000025000f008b4604 *8945fc8b4d04894df8c74500d489050883c5f8e9159cffff9083c504e928fefffff0890508f089 *0508d489050818890508f0890508f0890508888505080300000025001f008b46048945008b7504 *c745fc1c8a050883c5fcff268d760083c504e9e4fdffff9085050801000100130001008d45f43b *43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9d5b7ffff9083c7243b7b5c76 *0ac7436c09000000ff63f8c747e0488a05088b45048947e4c747ec7cdc0b08c747f0400b12088d *47e08947f4c747f87cdc0b08c747fc480b12088d47ec89078d77f883c5108b4500ff60ec89f66c *8a0508348a0508888505080300000025000f008b45048945fc8b4e04894df88b5604895504c745 *00d48a050883c5f8e90f9bffff8d760083c504e920fdfffff88a0508f88a0508f88a0508f88a05 *08d48a0508f88a0508888505080300000025001f008b46048945008b7504c745fc248b050883c5 *fcff268d760083c504e9dcfcffff9085050801000100130001008d45f43b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df483c5f4e9cdb6ffff9083c7243b7b5c760ac7436c09000000ff *63f8c747e0508b05088b45048947e4c747ec7cdc0b08c747f0400b12088d47e08947f4c747f87c *dc0b08c747fc380b12088d47ec89078d77f883c5108b4500ff60ec89f6748b05083c8b05088885 *05080300000025000f008b45048945fc8b4e04894df88b5604895504c74500dc8b050883c5f8e9 *079affff8d760083c504e918fcffff008c0508008c0508008c0508008c0508dc8b0508008c0508 *888505080300000025001f008b46048945008b7504c745fc2c8c050883c5fcff268d7600e9d7fb *ffff8d7600448c0508448c05082c8c0508248b05081c8a0508448c050888850508020000002500 *1f008b46048945008b4e08894dfc8b7604c745f8708c050883c5f8ff2690948505080100010013 *0001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e94901000090 *8c85050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b948f6 *1008894df4bed4d1110883c5f0e933830a008d7600888505080100010013000b008d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec988c05088b46 *048947f0c747f8c88c05088d47ec8945f48d47f88945f0bee4d1110883c5ece9bf880a008d7600 *9485050801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *83c5f4e97d0000009083c7183b7b5c760ac7436c06000000ff63f8c747ec048d05088b46088947 *f0c747f8648d05088b46048947fc8d47ec8945008d47f88945fcbee4d1110883c5f8e947880a00 *8d7600888d0508708c0508d886050868860508e48505089c850508888505080000000025001f00 *88850508040001000000000011001f008d45ec3b43547308be14a71108ff63fc8b7500c74500f4 *8d0508ff26bcd11108f4a311081ca71108be04d2110883c5048b4500ff60ec89f6befcd1110883 *c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60 *f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f67c8e0508 *6c8e05085c8e05084c8e05083c8e05082c8e05080000000000000000250000008b7504c74504b0 *8e050883c504ff2690befcd1110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec *89f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd11108 *83c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6108f0508008f0508f08e0508 *e08e0508d08e0508c08e05080000000000000000250000008b7504c74504448f050883c504ff26 *90befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be04d2110883 *c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60 *f089f6befcd1110883c5048b4500ff60f089f6a48f0508948f0508848f0508748f0508648f0508 *548f05080000000000000000250000008b7504c74504d88f050883c504ff2690befcd1110883c5 *048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f0 *89f6be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6befcd11108 *83c5048b4500ff60f089f638900508289005081890050808900508f88f0508e88f050800000000 *00000000250000008b7504c745046c90050883c504ff2690befcd1110883c5048b4500ff60f089 *f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883 *c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60 *f089f6cc900508bc900508ac9005089c9005088c9005087c900508000000000000000025000000 *8b7504c745040091050883c504ff2690befcd1110883c5048b4500ff60f089f6befcd1110883c5 *048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f0 *89f6befcd1110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f66091050850 *910508409105083091050820910508109105080000000000000000250000008b7504c745049491 *050883c504ff269094910508009105086c900508d88f0508448f0508b08e050800000000010000 *002500000002000000240000008b7504c74504c891050883c504ff2690ebee89f68b460489450c *8b4d04894d0883c508e90c94ffff83c504ebd38d7600f8910508f8910508f8910508f8910508e4 *910508f8910508248e050803000000250001008b46048945008b7508c745fc2492050883c5fcff *268d76008b460489450c8b4d04894d0883c508e9b493ffff83c504e978ffffff50920508509205 *08509205083c9205085092050850920508248e050803000000250001008b46048945008b7508c7 *45fc7c92050883c5fcff268d76008b460489450c8b4d04894d0883c508e95c93ffff83c504e920 *ffffffa8920508a892050894920508a8920508a8920508a8920508248e05080300000025000100 *8b46048945008b7508c745fcd492050883c5fcff268d7600288e050802000000150001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0e90f0200008d *7600288e050802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0889 *4df48b56048955f083c5f0e9d70100008d760083c7183b7b5c760ac7436c06000000ff63f8c747 *ecf89205088b45048947f08b46088947f4c747f8309305088b45088947fc8b460489078d47ec89 *45108d47f889450cbebcd1110883c508e968820a0083c508e91cfeffffac9305085c930508ac93 *0508ac930508ac930508ac930508208e050804000000250005008b46088945fc8b4e04894d008b *7508c745f8d893050883c5f8ff2690288e050802000000150001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e08894df48b56048955f083c5f0e9070100008d7600288e0508020000 *00150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083 *c5f0e9cf0000008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec009405088b450489 *47f08b46088947f4c747f8389405088b45088947fc8b460489078d47ec8945108d47f889450cbe *bcd1110883c508e960810a0083c508e914fdffff64940508b4940508b4940508b4940508b49405 *08b4940508208e050804000000250005008b46088945fc8b4e04894d008b7508c745f8e0940508 *83c5f8ff2690e0940508d8930508d49205087c92050824920508e0910508208e05080200000025 *000700208e05080b00020000000000110007008d45f43b43547308be1ca71108ff63fc8b7500c7 *45fc2095050883c5fcff269054d111081ca711085495050802000000150001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0eba689f6509505080b00 *0200000000001100030083c70c3b7b5c760fbe24a71108c7436c03000000ff63fcc747f8649505 *088b45008947fc8b4d04890f8d57f8895504be54d11108e9337c0a008d7600bcd11108c4a31108 *1ca71108e095050802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *08894df48b56048955f083c5f0e917ffffff8d760002000000240000008b45088b4d04894d0889 *45048b7608e9dc7f0a00dc95050802000000150001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e08894df08b56048955f4bec4a31108c745ec2496050883c5ecff2689f6d8950508 *020000002400070083c7183b7b5c760ac7436c06000000ff63f8c747ecf09505088b45048947f0 *8b46088947f4c747f8449605088b45088947fc8b460489078d47ec8945088d47f8894504bebcd1 *1108e9437f0a008d7600d895050801000000240007008b46088945008b4d048b560489550489ce *c745fc8496050883c5fcff268d7600d89505080b00020000000000110007008d45fc3b43547308 *be3ca71108ff63fc8b7500c74500e0960508ff2654d111083ca711083097050802000000150001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebaa *89f62c9705080b000200000000001100030083c70c3b7b5c760fbe44a71108c7436c03000000ff *63fcc747f8409705088b45008947fc8b4d04890f8d57f8895504be54d11108e9577a0a008d7600 *00000000240000008b760483c504ff260400010000000000110000008b7500c74500bc970508ff *2600000000240000008b760883c504ff260400010000000000110000008b7500c74500e4970508 *ff260b000200000000001100000083c70c3b7b5c760fbe64a71108c7436c03000000ff63fcc747 *f87c9f05088b45008947fc8b4d04890f8d77f883c508ff650089f6000000002400000083c70c3b *7b5c760ac7436c03000000ff63f8c747f87c9f05088b46048947fc8b4e08890f8d77f883c504ff *65008d76000400010000000000110000008b7500c745004c980508ff26000000002400000083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8d8dc0b088b46048947fc8b4e08890f8d77f883c5 *04ff65008d76000400010000000000110000008b7500c745009c980508ff260400010000000000 *1100000083c7083b7b5c760fbe74a71108c7436c02000000ff63fcc747fcdc9e05088b45008907 *8d77fc83c5048b4d00ff61ec9004000100000000001100000083c7083b7b5c760fbe78a71108c7 *436c02000000ff63fcc747fcfc9e05088b450089078d77fc83c5048b4d00ff61e8900400010000 *0000001100000083c7083b7b5c760fbe7ca71108c7436c02000000ff63fcc747fc1c9f05088b45 *0089078d77fc83c5048b4d00ff61e4900b000200000000001100000083c70c3b7b5c760fbe80a7 *1108c7436c03000000ff63fcc747f83c9f05088b45008947fc8b4d04890f8d77f883c5088b5500 *ff62e08d76000b000200000000001100000083c70c3b7b5c760fbe84a71108c7436c03000000ff *63fcc747f85c9f05088b45008947fc8b4d04890f8d77f883c5088b5500ff62dc8d7600be70a711 *0883c5048b4500ff60f089f683c7083b7b5c760ac7436c02000000ff63f8c747fcdc9e05088b46 *0489078d77fc83c5048b4d00ff61ec89f683c7083b7b5c760ac7436c02000000ff63f8c747fcfc *9e05088b460489078d77fc83c5048b4d00ff61e889f65c9a0508309a0508000000000000000025 *0000008b7604c745009c9a0508ff269c9a0508209a05080000000000000000250000008b7604c7 *4500bc9a0508ff2683c7083b7b5c760ac7436c02000000ff63f8c747fc1c9f05088b460489078d *77fc83c5048b4d00ff61e489f6000000002400000083c70c3b7b5c760ac7436c03000000ff63f8 *c747f83c9f05088b46048947fc8b4e08890f8d77f883c5048b5500ff62e08b7604c74500fc9a05 *08ff26000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f85c9f05088b4604 *8947fc8b4e08890f8d77f883c5048b5500ff62dc8b7604c74500409b0508ff26709b05082c9b05 *080000000000000000250000008b7604c74500909b0508ff26909b0508c89a0508000000000000 *0000250000008b7604c74500b09b0508ff26b09b0508bc9a050800000000000000002500000004 *00010000000000110000008b7500c74500d09b0508ff2683c7103b7b5c760ac7436c04000000ff *63f8c747f4f0dc0b08c747f808d21108c747fcf0dc0b088d47f489078d77fc83c5048b4d00ff61 *f083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b088b46048947f0c747f410dd0b08 *8d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7183b7b5c760ac7 *436c06000000ff63f8c747ec10dd0b088b46048947f0c747f410dd0b088d47ec8947f8c747fcf0 *dc0b088d47f489078d77fc83c5048b4500ff60f083c7103b7b5c760ac7436c04000000ff63f8c7 *47f4f0dc0b088b46048947f8c747fc10dd0b088d4ff4890f8d77fc83c5048b5500ff62ec9083c7 *243b7b5c760ac7436c09000000ff63f8c747e0d8dc0b088b46048947e48b46088947e8c747ecf0 *dc0b088d47e08947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5 *048b4500ff60ec9083c7243b7b5c760ac7436c09000000ff63f8c747e0d8dc0b088b46048947e4 *8b46088947e8c747ec10dd0b088d47e08947f0c747f410dd0b088d47ec8947f8c747fc10dd0b08 *8d47f489078d77fc83c5048b4500ff60ec90389d0508e09c0508a89c0508649c0508209c0508e8 *9b05080000000000000000250000000400010000000000110000008b7500c74500b49d0508ff26 *0b000200000000001100000083c70c3b7b5c760fbe90a71108c7436c03000000ff63fcc747f8b4 *9e05088b45008947fc8b4d04890f8d77f883c508ff650089f6000000002400000083c70c3b7b5c *760ac7436c03000000ff63f8c747f8b49e05088b46048947fc8b4e08890f8d77f883c504ff6500 *8d76000400010000000000110000008b7500c74500149e0508ff26000000002400000083c70c3b *7b5c760ac7436c03000000ff63f8c747f8d8dc0b088b46048947fc8b4e08890f8d77f883c504ff *65008d76000400010000000000110000008b7500c74500649e0508ff260200000004000000ff65 *00900200000009000000ff650090000000000a0000008b4500ff60f089f601000000020001008b *4500ff60ec89f601000000090001008b4500ff60ec89f601000000020002008b4500ff60e889f6 *01000000090002008b4500ff60e889f601000000020003008b4500ff60e489f601000000090003 *008b4500ff60e489f602000000040004008b4500ff60e089f602000000090004008b4500ff60e0 *89f602000000040005008b4500ff60dc89f602000000090005008b4500ff60dc89f60200000004 *000000ff6500900200000009000000ff650090e900000000833d9ca71108007514c7059ca71108 *01000000c7450090310c0883c50483c5fcff6500d4d11108c0d41108b49f050800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94cf61008894df4bed4d1110883 *c5f0e933700a008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8c89f05088d47f889 *4500bec0d4110883c5fce9e4710a00b49f050800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b950f61008894df4bed4d1110883c5f0e9cb6f0a008d760083c70c *3b7b5c760ac7436c03000000ff63f8c747f830a005088d47f8894500bec0d4110883c5fce97c71 *0a00b49f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *58f61008894df4bed4d1110883c5f0e9636f0a008d760083c70c3b7b5c760ac7436c03000000ff *63f8c747f898a005088d47f8894500bec0d4110883c5fce914710a00b49f050800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b960f61008894df4bed4d1110883 *c5f0e9fb6e0a008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f800a105088d47f889 *4500bec0d4110883c5fce9ac700a00b49f050800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b968f61008894df4bed4d1110883c5f0e9936e0a008d760083c70c *3b7b5c760ac7436c03000000ff63f8c747f868a105088d47f8894500bec0d4110883c5fce94470 *0a00b49f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *78f61008894df4bed4d1110883c5f0e92b6e0a008d760083c70c3b7b5c760ac7436c03000000ff *63f8c747f8d0a105088d47f8894500bec0d4110883c5fce9dc6f0a00b49f050800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98cf61008894df4bed4d1110883 *c5f0e9c36d0a008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f838a205088d47f889 *4500bec0d4110883c5fce9746f0a0068a2050800a2050898a1050830a10508c8a0050860a00508 *f89f0508b49f05080000000025000300b49f05080b00020000000000110003008b7504c74504bc *a2050883c504ff2690a0a71108a8a71108dca2050800000200180003008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83d5b0a0083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fcc745f4a8a71108bea0a7110883c5f0e9c16e0a0090 *ccd41108b0a7110848a3050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8d15a0a0083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f4b0a71108beccd4110883c5f0e9556e0a0090d4d1110818d41108a8 *d611080000000024000000c7450090a811088b760c83c5fce92e6e0a0089f6bca3050800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4c8a3050883c5 *f4ff2689f6b4a3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b99cf61008894df4bed4d1110883c5f0e9df6b0a008d76000000000024000000c745008ca8 *11088b760c83c5fce9a26d0a0089f6bca3050800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcbea8d61108c745f454a4050883c5f4ff2689f6b4a3050800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9acf61008894df4bed4d1110883 *c5f0e9536b0a008d76000000000024000000c7450088a811088b760c83c5fce9166d0a0089f6bc *a3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745 *f4e0a4050883c5f4ff2689f6b4a3050800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9c0f61008894df4bed4d1110883c5f0e9c76a0a008d7600000000002400 *0000c7450084a811088b760c83c5fce98a6c0a0089f6bca3050800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fcbea8d61108c745f46ca5050883c5f4ff2689f6b4a30508 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d0f61008894d *f4bed4d1110883c5f0e93b6a0a008d76000000000024000000c7450080a811088b760c83c5fce9 *fe6b0a0089f6bca3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *bea8d61108c745f4f8a5050883c5f4ff2689f6b4a3050800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9d8f61008894df4bed4d1110883c5f0e9af690a008d76 *000000000024000000c745007ca811088b760c83c5fce9726b0a0089f6bca30508000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f484a6050883c5f4ff *2689f6b4a3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e0f61008894df4bed4d1110883c5f0e923690a008d76000000000024000000c7450078a81108 *8b760c83c5fce9e66a0a0089f6bca3050800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fcbea8d61108c745f410a7050883c5f4ff2689f6b4a3050800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e8f61008894df4bed4d1110883c5f0 *e997680a008d7600b4a3050800000200180007008d45f03b4354720b81c75c0100003b7b5c760a *c7436c57000000ff63f8c787a8feffff085c100856e887560a0083c4048d87a8feffff894604c7 *06245b1008c745f8d46d10088d87a8feffff8945fcc787b4feffffe8a30508c787c0feffff1ca4 *0508c787ccfeffffe4bb0b088d87c0feffff8987d0feffff8d87b4feffff8987d4feffffc787d8 *feffff7cdc0b088d87ccfeffff8987dcfeffffc787e0feffff00d21108c787e4feffff74a40508 *c787f0feffffa8a40508c787fcfeffffe4bb0b088d87f0feffff898700ffffff8d87e4feffff89 *8704ffffffc78708ffffff7cdc0b088d87fcfeffff89870cffffff8d87d8feffff898710ffffff *c78714ffffff00a50508c78720ffffff34a50508c7872cffffffe4bb0b088d8720ffffff898730 *ffffff8d8714ffffff898734ffffffc78738ffffff7cdc0b088d872cffffff89873cffffff8d87 *08ffffff898740ffffffc78744ffffff8ca50508c78750ffffffc0a50508c7875cffffffe4bb0b *088d8750ffffff898760ffffff8d8744ffffff898764ffffffc78768ffffff7cdc0b088d875cff *ffff89876cffffff8d8738ffffff898770ffffffc78774ffffff18a60508c747804ca60508c747 *8ce4bb0b088d47808947908d8774ffffff894794c747987cdc0b088d478c89479c8d8768ffffff *8947a0c747a4a4a60508c747b0d8a60508c747bce4bb0b088d47b08947c08d47a48947c4c747c8 *7cdc0b088d47bc8947cc8d47988947d0c747d430a70508c747e064a70508c747ece4bb0b088d47 *e08947f08d47d48947f4c747f87cdc0b088d47ec8947fc8d47c889078d47f88945f4be18d41108 *83c5f0e904680a0020d41108d0a7110804aa050800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e815540a0083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4d0a71108be20d4110883c5f0e999670a0090be *04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f680aa050880aa0508 *80aa050880aa050880aa050880aa050870aa05080000000000000000250000008b7504c74504b8 *aa050883c504ff2690be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f0 *89f6d8aa0508d8aa0508d8aa0508d8aa0508d8aa0508c8aa0508d8aa0508000000000000000025 *0000008b7504c7450410ab050883c504ff2690be04d2110883c5048b4500ff60ec89f6befcd111 *0883c5048b4500ff60f089f630ab050830ab050830ab050830ab050820ab050830ab050830ab05 *080000000000000000250000008b7504c7450468ab050883c504ff2690be04d2110883c5048b45 *00ff60ec89f6befcd1110883c5048b4500ff60f089f688ab050888ab050888ab050878ab050888 *ab050888ab050888ab05080000000000000000250000008b7504c74504c0ab050883c504ff2690 *be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6e0ab0508e0ab05 *08d0ab0508e0ab0508e0ab0508e0ab0508e0ab05080000000000000000250000008b7504c74504 *18ac050883c504ff2690be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60 *f089f638ac050828ac050838ac050838ac050838ac050838ac050838ac05080000000000000000 *250000008b7504c7450470ac050883c504ff2690befcd1110883c5048b4500ff60f089f6befcd1 *110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b45 *00ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be *04d2110883c5048b4500ff60ec89f6e0ac0508d0ac0508c0ac0508b0ac0508a0ac050890ac0508 *80ac05080000000000000000250000008b7504c7450418ad050883c504ff269018ad050870ac05 *0818ac0508c0ab050868ab050810ab0508b8aa05080000000001000000250000000b0002000000 *0000110000008b7500c7450050ad0508ff2654d1110802000000150000008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebc289f668ad05080b000200 *000000001100010083c70c3b7b5c760fbef4a71108c7436c03000000ff63fcc747f874ad05088b *45008947fc8b4d04890f8d57f8895504be54d11108e923640a008d760048d411080ca8110844d4 *11080ca811083cd411080ca81108e8ad050800000200180003008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e821500a0083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcc745f40ca81108be48d4110883c5f0e9a5630a0090f0ad05 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8bd4f0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f40ca81108be44d4110883c5f0e941630a0090f8ad050800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8594f0a0083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f40ca81108be3cd4110883c5f0e9dd620a *0090d4d4110854a811082caf050800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8ed4e0a0083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f454a81108bed4d4110883c5f0e971620a0090be78a8110883c5 *048b4500ff60f089f6be7ca8110883c5048b4500ff60ec89f6be80a8110883c5048b4500ff60e8 *89f6b8af0508a8af05080000000000000000250000008b7604c74500dcaf0508ff26dcaf050898 *af05080000000000000000250000008b7604c74500fcaf0508ff26be84a8110883c5048b4500ff *60e489f6be88a8110883c5048b4500ff60e089f618b0050808b005080000000000000000250000 *008b7604c745003cb00508ff26be8ca8110883c5048b4500ff60dc89f6be90a8110883c5048b45 *00ff60d889f658b0050848b005080000000000000000250000008b7604c745007cb00508ff267c *b005083cb005080000000000000000250000008b7604c745009cb00508ff269cb00508fcaf0508 *0000000000000000250000000400010000000000110000008b7500c74500bcb00508ff2683c710 *3b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c747f808d21108c747fcf0dc0b088d47f4 *89078d77fc83c5048b4d00ff61f083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b08 *c747f008d21108c747f410dd0b088d47ec8947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b *5500ff62f08d760083c7183b7b5c760ac7436c06000000ff63f8c747ec10dd0b08c747f008d211 *08c747f410dd0b088d47ec8947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f08d *760083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b08c747f008d21108c747f4f0dc *0b088d47ec8947f8c747fc10dd0b088d4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b *7b5c760ac7436c06000000ff63f8c747ec10dd0b08c747f008d21108c747f4f0dc0b088d47ec89 *47f8c747fc10dd0b088d4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b7b5c760ac743 *6c06000000ff63f8c747ecf0dc0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fc10 *dd0b088d4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b7b5c760ac7436c06000000ff *63f8c747ec10dd0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fc10dd0b088d4ff4 *890f8d77fc83c5048b5500ff62ec8d760074b205082cb20508e4b105089cb1050854b105080cb1 *0508d4b005080000000000000000250000000400010000000000110000008b7500c74500e4b205 *08ff26000000000a0000008b4500ff60f089f6000000000a0001008b4500ff60ec89f600000000 *0a0002008b4500ff60e889f6000000000a0003008b4500ff60e489f6000000000a0004008b4500 *ff60e089f6000000000a0005008b4500ff60dc89f6000000000a0006008b4500ff60d889f678a8 *11087ca8110880a8110884a8110888a811088ca8110890a81108e900000000833d9ca81108000f *85b4000000c7059ca8110801000000c7450049bb0a0883c504c74500cd640a0883c504c7450051 *450a0883c504c74500d8480c0883c504c7450094b40b0883c504c7450004aa0b0883c504c74500 *04a10b0883c504c745009c360c0883c504c74500f0440c0883c504c74500e524060883c504c745 *0050a70b0883c504c7450035180b0883c504c745005c460c0883c504c7450090310c0883c504c7 *4500984a0c0883c504c745000d8a0a0883c504c7450069180b0883c50483c5fcff6500be00d211 *0883c5048b4500ff60f089f6be00d2110883c5088b4500ff60f089f601000100130000008d45f4 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e98d0000009083c7183b7b5c *760ac7436c06000000ff63f8c747ec7cb405088b45048947f0c747f87cdc0b088b46048947fc8d *47ec89078d77f883c5088b4500ff60ec8d7600a0b4050864b40508000000000100000025000000 *8b46088945008b7604c745fcf4b4050883c5fcff268d7600f4b4050854b4050800000000000000 *00250000000400010000000000110000008d45fc3b43547308bea0a81108ff63fc8b7500c74500 *20b50508ff2638d41108a4cb110848b5050800000200180003008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8d1480a0083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcc745f4a4cb1108be38d4110883c5f0e9555c0a0090bcd311 *0834d61108b4d41108b4b5050800000200180007008d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e861480a0083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4bcd31108c745f034d61108beb4d4110883c5ece9ea5f0a0089f6 *f4d41108d8d411082cb6050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8ed470a0083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f4f4d41108bed8d4110883c5f0e9715b0a0090d8d41108d4a8110898 *b6050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e881470a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f4d4a81108bed8d4110883c5f0e9055b0a009080d11108bcd0110804b70508000002001800 *03008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e81547 *0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f480d11108bebc *d0110883c5f0e9995a0a0090ccd1110880d1110870b7050800000200180003008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a9460a0083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e92d5a *0a0090b4d0110804a91108dcb7050800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e83d460a0083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f404a91108beb4d0110883c5f0e9c1590a0090dcd211080000 *0000240000008b760ce9404f0a0048b8050800000200180001008d45f43b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8c5450a0083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcbedcd21108c745f454b8050883c5f4ff26e4d11108dcd211 *08a0d2110880d2110858d2110868d21108b0d51108d4b8050800000200120001008d45f03b4354 *720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc14e90b08c707 *e01112088d4ffc894df4beb0d5110883c5f0e9e0580a00bcb8050801000100130001008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08 *c747fca8091208c70700d211088d4ff8894df48b56048955f0bee4d1110883c5ece98f5c0a008d *7600bcb8050801000100130015008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f834b905088b4e04894ffc8d57f88955f4c745f058d21108bea0 *d2110883c5ece9355c0a0090bcb8050802000000150055008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ece4b80508c747f894b905088b460489 *47fc8d47ec8945f48d47f88945f08b760883c5ece9d95b0a0090c8b8050800000200120005008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f468d21108be80d2110883c5f0e997570a *008d7600bcb805080100000024007d0083c7183b7b5c760ac7436c06000000ff63f8c747ececb9 *05088b45048947f08b46088947f4c747f848ba05088d47ec8945048d47f88945008b760883c5fc *e9515b0a0090bcb80508040001000000000011007f008d45f83b43547308be34a91108ff63fcbe *dcd21108c745fc80ba050883c5fcff268d760084d01108dcd21108f8ba05080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e821430a00 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be84d011 *0883c5f0e9a5560a009098d01108dcd2110864bb050800000200180003008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b5420a0083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be98d0110883c5f0e939560a00 *9098d01108dcd21108d0bb050800000200180003008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e849420a0083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4dcd21108be98d0110883c5f0e9cd550a00908cd01108dcd21108 *3cbc050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e8dd410a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fcc745f4dcd21108be8cd0110883c5f0e961550a009098d01108dcd21108a8bc05080000020018 *0003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e871 *410a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be *98d0110883c5f0e9f5540a0090e4d11108d4d1110890d1110844d11108dcd21108d8c71108d0d5 *110840d3110834a9110858d511083ca9110818bd050800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9ecf61008894df4bed4d1110883c5f0e9af520a008d7600 *14bd050801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f84cbd05088b4e04894df48d57f88955f0bee4d1110883c5ece94858 *0a0083c70c3b7b5c760ac7436c03000000ff63f8c747f888bd05088b45108947fc8d4ff8894d10 *83c510e9dbfcffff8d760038bd050802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df48b56048955f0be58d5110883c5ece9de570a0089f604000100010000 *000c00000083c70c3b7b5c760ac7436c03000000ff63fcc747f87cdc0b088b46048947fc8b4d00 *890f8d77f883c5048b5500ff62ec30bd050801000100130001008d45ec3b4354720883c7083b7b *5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc44be0508c707580a12088b4e04 *894df48d57fc8955f0be40d3110883c5ece94a570a0089f614bd050802000000150081008d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f880be05 *088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece9f2560a0089f614bd050802 *0000001500c1008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8d8be05088b46048947fc8b460889078d47f88945f4bed0d5110883c5f0e98f52 *0a008d760001000000240000008b4504894500c74504a4a811088b761083c5fce978560a001cbd *050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90 *d11108c745f084bf050883c5f0ff261cbd050801000100130001018d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a8bf05088b4e04894ffc8d57 *f88955f4be3ca9110883c5f0e9e4510a0014bd0508030000001200cd048d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec30bf05088b46088947f0 *8b460c8947f4c747f8e0bf05088b46048947fc8d47ec8945f48d47f88945f0be44d1110883c5ec *e987550a008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e808be05088b46048947ec *8b45088947f0c747f430c005088b450c8947f88b46048947fc8b450889078d47e88945108d47f4 *89450c8b750483c508e930550a0090c00508ccbd050814bd0508040000002500cf0714bd050804 *000100040000000b00cf078d45f03b43547303ff63fc8b46108945f48b460c8945f88b46088945 *fc8b45008b4e04894d0089c6c745f0f8c0050883c5f0ff2628bd050801000100130001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bed8c7110883c5f0e998500a0014bd *0508030000002400ef0783c7203b7b5c760ac7436c08000000ff63f8c747e408c105088b450889 *47e88b45048947ec8b450c8947f08b46088947f4c747f848c105088b45088947fc8d47e489450c *8d47f88945088b760483c504e943540a008d760014bd050816000300000000001100ff078d45fc *3b43547308be8ca91108ff63fcbedcd21108c745fc7cc1050883c5fcff268d7600e4d11108d4d1 *1108dcd21108a0d2110880d2110858d2110868d2110808c2050801000100130001008d45ec3b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c7 *47fca8091208c70700d211088d4ff8894df48b56048955f0bee4d1110883c5ece993530a008d76 *000cc2050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9fc *f61008894df4bed4d1110883c5f0e96b4d0a008d760008c2050801000100130003008d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec30c205088b *46048947f0c747f890c205088d47ec8945f48d47f88945f0bee4d1110883c5ece9f7520a008d76 *0008c205080100010013002b008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8ccc205088b4e04894ffc8d57f88955f4c745f058d21108bea0d2 *110883c5ece99d520a009018c2050800000200120005008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f468d21108be80d2110883c5f0e95b4e0a008d760008c205080100000024007b *0083c7183b7b5c760ac7436c06000000ff63f8c747ec2cc305088b45048947f0c747f884c30508 *8d4fec894d048d57f88955008b760883c5fce91b520a008d760008c20508040001000000000011 *007f008d45f83b43547308be94a91108ff63fcbedcd21108c745fcbcc3050883c5fcff268d7600 *e4d1110890d1110844d11108dcd21108d0d5110840d3110858d511083ca9110848c40508020000 *00150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be *58d5110883c5ece98a510a0089f604000100010000000c00000083c70c3b7b5c760ac7436c0300 *0000ff63fcc747f87cdc0b088b46048947fc8b4d00890f8d77f883c5048b5500ff62ec44c40508 *01000100130001008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d *10088975fcc747fc98c40508c707580a12088b4e04894df48d57fc8955f0be40d3110883c5ece9 *f6500a0089f630c4050802000000150021008d45ec3b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8d4c405088b46088947fc8d47f88945f48b46048945 *f0bee4d1110883c5ece99e500a0089f630c4050802000000150031008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82cc505088b46048947fc8b *460889078d47f88945f4bed0d5110883c5f0e93b4c0a008d760001000000240000008b45048945 *00c74504a4a811088b761083c5fce924500a0034c4050801000100130001008d45ec3b43547303 *ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0d8c5050883c5f0ff2634c405 *0801000100130041008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8fcc505088b4e04894ffc8d57f88955f4be3ca9110883c5f0e9904b0a0030 *c40508030000001200b7008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec84c505088b46088947f08b460c8947f4c747f834c605088b46048947 *fc8d47ec8945f48d47f88945f0be44d1110883c5ece9334f0a008d760030c40508030000002400 *f70083c71c3b7b5c760ac7436c07000000ff63f8c747e85cc405088b45088947ec8b450c8947f0 *c747f484c605088b45048947f88b45088947fc8b450c89078d47e889450c8d47f48945088b7608 *83c504e9d04e0a0030c4050816000300000000001100ff008d45fc3b43547308be9ca91108ff63 *fcbedcd21108c745fcf0c6050883c5fcff268d7600dcd21108ccd21108b0d51108c745080cd211 *088b750483c504e9724a0a0089f6beb0d5110883c504e9634a0a008d760098c7050884c7050880 *c70508020000002500010080c705080200000024000100c745fcfcd211088b45088945f88b7604 *c74500bcc7050883c5f4e92d4e0a00907cc7050804000100010000000c0003008d45ec3b435473 *03ff63fc8b4e04894dfcbeccd21108c745f8c8c7050883c5f8ff2689f67cc70508010000002400 *030083c7083b7b5c760ac7436c02000000ff63f8c747fcf8c705088b460c89078b4d04894d008d *57fc8955048b760483c5fce9b74d0a008d760078c705080400010000000000110007008d45f83b *43547308bea4a91108ff63fcbedcd21108c745fc28c8050883c5fcff268d7600e4d1110890d111 *0844d11108dcd21108d0d5110840d31108a4a9110858d511083ca91108b0c80508020000001500 *01008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be58d511 *0883c5ece9224d0a0089f69cc8050802000000150031008d45ec3b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f8c4c805088b46048947fc8b460889078d *47f88945f4c745f0a4a91108be44d1110883c5ece9c44c0a0004000100010000000c00000083c7 *0c3b7b5c760ac7436c03000000ff63fcc747f87cdc0b088b46048947fc8b4d00890f8d77f883c5 *048b5500ff62eca8c8050801000100130001008d45ec3b4354720883c7083b7b5c760ac7436c02 *000000ff63f8c745f8d46d10088975fcc747fc5cc90508c707580a12088b4e04894df48d57fc89 *55f0be40d3110883c5ece9324c0a0089f694c8050802000000150021008d45ec3b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f898c905088b46088947fc *8d47f88945f48b46048945f0bee4d1110883c5ece9da4b0a0089f694c805080200000015003100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *f0c905088b46048947fc8b460889078d47f88945f4bed0d5110883c5f0e977470a008d76000100 *0000240000008b4504894500c74504a4a811088b761083c5fce9604b0a0098c805080100010013 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f09c *ca050883c5f0ff2698c8050801000100130081008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8c0ca05088b4e04894ffc8d57f88955f4be3ca9 *110883c5f0e9cc460a0094c8050803000000120037018d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec48ca05088b46088947f08b460c8947f4c7 *47f8f8ca05088b46048947fc8d47ec8945f48d47f88945f0be44d1110883c5ece96f4a0a008d76 *0094c80508030000002400f70183c71c3b7b5c760ac7436c07000000ff63f8c747e800c905088b *45088947ec8b450c8947f0c747f448cb05088b45048947f88b45088947fc8b450c89078d47e889 *450c8d47f48945088b760883c504e90c4a0a0094c8050816000300000000001100ff018d45fc3b *43547308beaca91108ff63fcbedcd21108c745fcb4cb050883c5fcff268d760044d111088ca911 *08a4a9110840cc050803000000120001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *460c8945f48b46088945f08b46048945ec83c5ece961f5ffff903ccc0508160003000000000011 *00070083c7103b7b5c760fbeb4a91108c7436c04000000ff63fcc747f454cc05088b45008947f8 *8b45048947fc8b450889078d47f4894508c74504a4a91108be44d11108e93a490a0089f654c811 *08dccc050800000000240001008b460483f82e750abe54c8110883c504ff2683c504ff2690dccc *05080400010000000000110001008b7500c74500eccc0508ff26e0d1110854c8110820cd050800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8f9300a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4bc *a91108bee0d1110883c5f0e97d440a00901cc8110864c81108dcd2110898d5110840d31108c4a9 *11087ca91108be00d2110883c5088b4500ff60f089f68b750c8b450889450c83c50ce9b3000000 *8d760083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b450c8947f08b45088947 *f4c747f87cdc0b088b45048947fc8d47ec89078d77f883c5108b4500ff60ec90cccd0508b8cd05 *0800000000030000002500000002000000240000008b46048945008b7608c745fc24ce050883c5 *fcff268d76008b46088945008b7604c745fc2cce050883c5fcff268d760044ce0508a8cd050800 *000000010000002500000004000100000001000b0000008d45f43b43547303ff63fc8b4d008975 *0089cec745fc70ce050883c5fcff269001000100130000008d45f43b4354720883c7083b7b5c76 *0ac7436c02000000ff63f8c745f8d46d10088975fcc747fc7cce05088b4e04894df48d77fc83c5 *f4eb9f8d760004000100010000000c0000008d45fc3b4354720883c70c3b7b5c760ac7436c0300 *0000ff63fcc747f8a4ce05088b4d00894ffc8d57f88955008b760483c5fce9e4420a00a0cd0508 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bec4a911 *0883c5f0e9b0420a0090cd050802000000150011008d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f830cf05088b46088947fc8d47f88945f48b46 *048945f0be64c8110883c5ece966460a0089f6be00d2110883c50c8b4500ff60f089f68ccd0508 *02000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b560489 *55f0be1cc8110883c5ece91a460a0089f683c7243b7b5c760ac7436c09000000ff63f8c747e08c *6b10088b45048947e48b46088947e8c747eccccf05088b45088947f08b46048947f4c747f87cdc *0b088d47ec8947fc8d47e089078d77f883c50c8b4500ff60ec89f6fccf0508b0cf05088ccd0508 *02000000250001008ccd050804000100010000000c0001008d45f83b43547303ff63fc8975fc8b *4d008b560489550089cec745f868d0050883c5f8ff268d76008ccd050804000100020000000e00 *230083c7143b7b5c760ac7436c05000000ff63fcc747f064cf05088b45008947f48b46048947f8 *c747fc78d005088d47f089078b46088945008d77fceb8c8ccd050803000000120033008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b0d00508 *8b46048947fc8b460889078b460c8945f48d47f88945f0be40d3110883c5ece9cd440a00900400 *0100020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8 *e4bb0b088b46048947fc8b450089078d47f88945008b760883c5fce977400a008d760098cd0508 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be98d511 *0883c5f0e940400a0098cd050804000100020000000e0001008d45f83b4354720883c7183b7b5c *760ac7436c06000000ff63fcc747ec54d105088b45008947f08b46048947f4c747f8a0d105088b *45008947fc8d47ec8945008d47f88945fc8b760883c5f8e9eb430a008d76008ccd050805000000 *12007b008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975 *fcc747e8f8d005088b460c8947ec8b46108947f08b46148947f4c747f8d8d105088b46048947fc *8b460889078d47e88945f48d47f88945f0be7ca9110883c5ece974430a008ccd05080300000024 *007b0083c7203b7b5c760ac7436c08000000ff63f8c747e4ecce05088b460c8947e8c747ec38d2 *05088b460c8947f08b46048947f48b45088947f88b450c8947fc8b450489078d47e489450c8d47 *ec8945088b760483c504e90e430a0089f68ccd0508160003000000000011007f008d45fc3b4354 *7308bed4a91108ff63fcbedcd21108c745fcacd2050883c5fcff268d7600e4d11108d4d1110890 *d1110844d11108dcd21108e0c71108d0d511083ca9110850d3050802000000150001008d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0bee0c7110883c5ece97e *420a0089f640d3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b908f71008894df4bed4d1110883c5f0e9573c0a008d76003cd3050801000100130003008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a4 *d305088b4e04894df48d57f88955f0bee4d1110883c5ece9f0410a003cd3050802000000150003 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8e0d305088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece99a410a0089f640 *d3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910f710 *08894df4bed4d1110883c5f0e9733b0a008d76003cd3050802000000150003008d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec30d405088b4604 *8947f08b46088947f4c747f888d405088d47ec8945f48d47f88945f0bee4d1110883c5ece9f940 *0a00903cd3050802000000150043008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8c4d405088b46048947fc8b460889078d47f88945f4bed0d5 *110883c5f0e9973c0a008d760001000000240000008b4504894500c74504a4a811088b761083c5 *fce980400a0044d3050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be90d11108c745f07cd5050883c5f0ff2644d3050801000100130021008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a0d50508 *8b4e04894ffc8d57f88955f4be3ca9110883c5f0e9ec3b0a003cd30508030000001200cf008d45 *ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec28d5 *05088b46088947f08b460c8947f4c747f8d8d505088b46048947fc8d47ec8945f48d47f88945f0 *be44d1110883c5ece98f3f0a008d76003cd30508030000002400ef0083c71c3b7b5c760ac7436c *07000000ff63f8c747e868d305088b45088947ec8b450c8947f0c747f428d605088b45048947f8 *8b45088947fc8b450c89078d47e889450c8d47f48945088b760883c504e92c3f0a003cd3050816 *000300000000001100ff008d45fc3b43547308bedca91108ff63fcbedcd21108c745fc94d60508 *83c5fcff268d7600e4d11108d4d11108b8d31108b0d31108f0d0110844d11108e0d1110864c811 *087cc81108dcd2110808c81108d0d51108bcd3110870d3110888d311088cd31108d4a91108dca9 *1108b0d51108e4a8110804a9110814a911083ca911084ca911085ca911086ca911081cd705081a *000000ffffff031cd705081a000000fffdff031cd705081a000000fffdff0324d7050818000000 *7fbdcc0024d7050801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4beb8d3110883c5f0e9203a0a0054d7050801000100130001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be88d3110883c5f0e9ec390a0054d705080100000024 *00010083c70c3b7b5c760ac7436c03000000ff63f8c747f8f4d705088b45048947fcc74504aca8 *11088d4ff8894d008b761483c5fce9b53d0a00904cd7050801000100130005008d45ec3b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f028d8050883c5f0ff264cd7 *050801000100130007008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f86cd805088b4e04894ffc8d57f88955f4be70d3110883c5f0e920390a00 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8a4d805088b45088947fc8b4d04894d088d57 *f8895504bee0d11108e9f73c0a008d76008b750483c50cff2620d90508e8d8050834d705080200 *00002500c10134d70508020000001500c1038d45e43b43547303ff63f8c745f8d46d10088975fc *8b46048945e88b46088945f08b46048945f4be8cd31108c745ec3cd9050883c5e4e985380a0090 *28d70508170000001140400001000100130000008d45f03b43547303ff63f8c745f8d46d100889 *75fcc745f40cd211088b760483c5f0e949380a009028d705081700000011404000be00d2110883 *c5108b4500ff60f089f638d7050802000000150001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e08894df48b56048955f0be64c8110883c5ece9fe3b0a0089f638d7050804000000 *120001048d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975 *fcc747f8e8d905088b46048947fc8b461089078d47f88945f48b460c8945f08b46088945ec83c5 *ece984fcffff38d70508040000002400010483c72c3b7b5c760ac7436c0b000000ff63f8c747d8 *8c6b10088b45088947dc8b45048947e0c747e424da05088b45108947e88b450c8947ec8b460489 *47f08b46088947f4c747f87cdc0b088d47e48947fc8d47d889078d77f883c5148b4500ff60ec89 *f68b46088945008b7604c745fc80da050883c5fcff268d7600e4da0508ccd9050838d705080300 *00002500010438d7050804000100020000000e0001048d45f03b43547303ff63fc8975f88b4608 *8945fc8b45008b4e04894d0089c6c745f410db050883c5f4ff269028d705080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0beb0d3110883 *c5ece98e3a0a0089f628d7050804000000120011408d45f43b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747ec20db05088b46048947f08b46108947f4c747 *f858db05088b46088947fc8b460c89078d47f88945f48d77ec83c5f4e932ffffff89f6c0d90508 *040000001200ffff8d45f03b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d *10088975fcc747f094db05088b46048947f48b46088947f88b460c8947fc8b461089078d47f089 *45f4be6ca9110883c5f0e9b7350a008d760084d90508060000001200ffff8d45ec3b4354720883 *c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e498d905088b460c8947 *e8c747f0fcdb05088b46048947f48b46108947f88b46148947fc8b461889078d47e48945f48d47 *f08945f08b760883c5ece94e390a0089f62cd70508150000005b0013002cd70508120000001900 *03002cd7050811000000190001002cd7050811000000190001002cd705081100000019000100be *00d2110883c50c8b4500ff60f089f63cd7050801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be7cc8110883c5f0e9c0340a002cd7050801000100130011 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f820dd05088b4e04894ffc8d57f88955f4bef0d0110883c5f0e970340a008b45048945108b750c *83c510e9ff0100008d760038d7050802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df48b56048955f0be64c8110883c5ece92e380a0089f638d70508020000 *00150003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8b8dd05088b46048947fc8b460889078d47f88945f4be7cc8110883c5f0e9cb330a00 *8d76002cd7050802000000150019008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8f4dd05088b46048947fc8b460889078d47f88945f4bef0d0 *110883c5f0e973330a008d760083c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b *450c8947e48b45048947e8c747ec4cde05088b45108947f08b45088947f4c747f87cdc0b088d47 *ec8947fc8d47e089078d77f883c5148b4500ff60ec89f698de050898dd05082cd7050804000000 *250019002cd70508040000002400190083c7183b7b5c760ac7436c06000000ff63f8c747ec7cdc *0b08c747f0c80a1208c747f400d21108c747f854dd05088b45088947fc8d4fec894dfc8d57f889 *55f88b7604c7450004df050883c5f4e9b2360a0089f68b46088945fc8b4e04894d00be04a91108 *c745f810df050883c5f8ff268d760064df050804dd0508f8dc0508020000002500ffffecdc0508 *04000100010000000c00ffff8d45e43b43547303ff63fc8975fc8b4d008b560489550089cec745 *f898df050883c5f8ff268d7600e0dc0508020000001500ffff8d45f43b4354720883c7083b7b5c *760ac7436c02000000ff63f8c745f8d46d10088975fcc747fca8df05088b4e04890f8b56088955 *f48d77fc83c5f4eb8e89f6d4dc0508020000001500ffff8d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f8dcdf05088b46048947fc8b460889078d *47f88945f4be14a9110883c5f0e997310a008d760044d7050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f404d21108be08c8110883c5f0e95f310a008d760044 *d7050800000200120001408d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f880e005088d4ff8894df4be5ca9110883c5f0e912310a0089f6c8dc05 *08020000001500ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747ec28e005088b46048947f08b46088947f4c747f8b8e005088d47ec8945f48d *47f88945f0be44d1110883c5ece9b9340a0090a8d7050804000100050000000b00ffff8d45f83b *4354720883c7403b7b5c760ac7436c10000000ff63fcc747c4c0d705088b45008947c8c747d048 *d905088b46088947d48d47c48947d8c747dc60dc05088b46048947e08b460c8947e48b46108947 *e88d47c48947ec8d47d08947f08b46148947f4c747f804e105088b46048947fc8d47d089078d47 *dc8945008d47f88945fc8b760c83c5f8e91a340a0089f61cd70508180000000388cd001cd70508 *1700000003884d001cd705081700000003884c001cd705081700000003884c001cd70508140000 *0003080c0064d7050800000200120001008d45f03b4354720883c7083b7b5c760ac7436c020000 *00ff63f8c745f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883 *c5f0e9802f0a001cd7050814000000030808001cd7050814000000030008001cd7050814000000 *030008001cd70508140000000300080001000000240000008b7608e9402f0a0068d70508010001 *00130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee4a81108c745 *f0c0e2050883c5f0ff2620d7050800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b918f71008894df4bed4d1110883c5f0e9ef2c0a008d7600ace2050801000100 *1300ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975 *fcc747ecd4e205088b46048947f0c747f80ce305088d47ec8945f48d47f88945f0bee4d1110883 *c5ece97b320a008d7600a0e20508020000001500ffff8d45ec3b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f848e305088b46088947fc8d47f88945f48b *46048945f0bee4d1110883c5ece922320a0089f620d7050800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b92cf71008894df4bed4d1110883c5f0e9fb2b0a008d *760094e20508020000001500ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c745f8d46d10088975fcc747eca8e305088b46048947f08b46088947f4c747f800e405088d47 *ec8945f48d47f88945f0bee4d1110883c5ece981310a009088e20508020000001500ffff8d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f83ce405 *088b46048947fc8b460889078d47f88945f4bed0d5110883c5f0e91f2d0a008d76002ce2050803 *0000001200ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec44e20508c747f8a0e405088b46048947fc8b460889078d47ec8945f48d47f889 *45f08b760c83c5ece9c8300a0058d7050801000100130001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4be8cd3110883c5f0e9882c0a0020e20508040000001200ffff8d *45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8f8 *e405088b46048947ec8b46088947f08b46108947f4c747f858e505088b460c8947fc8d47e88945 *f48d47f88945f0be3ca9110883c5ece925300a009014e2050804000100040000000b00ffff8d45 *f83b4354720883c7203b7b5c760ac7436c08000000ff63fcc747e48c6b10088b46108947e88b45 *008947ecc747f08ce505088b46048947f48b46088947f88b45008947fc8b460c89078d47e48945 *008d47f08945fc8b760c83c5f8e9b22f0a0089f65cd7050803000000120001008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b088b4604 *8947fcc70700d211088b460c8945f48b46088945f08d47f88945ec83c5ece957ecffff8d760008 *e2050804000100050000000b00ffff8d45f83b4354720883c7243b7b5c760ac7436c09000000ff *63fcc747e000e605088b45008947e48b46088947e88b460c8947ec8b46108947f0c747f470e605 *088b46048947f88b45008947fc8b460889078d47e08945008d47f48945fc8b761483c5f8e9d82e *0a00fce10508060000001200ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c745f8d46d10088975fcc747ecd4e605088b46048947f08b46088947f48b460c8947f88b4610 *8947fc8b461489078b46188945f48d47ec8945f0be4ca9110883c5ece96b2e0a008d76009cd705 *08080000001200ffff8d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d4 *6d10088975fcc747d06ce105088b46048947d48b46088947d88b46108947dc8b46148947e08b46 *208947e4c747e848e705088b46088947ec8b460c8947f08b46108947f48b46148947f88b461889 *47fc8b461c89078d47d08945f48d47e88945f08b761883c5ece9d22d0a0089f644d70508010001 *00130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f004d21108 *be08c8110883c5ece9952d0a009090d70508050000002400ffff83c7303b7b5c760ac7436c0c00 *0000ff63f8c747d4b8e705088b450c8947d88b45088947dc8b45148947e08b46088947e48b460c *8947e88b46048947ec8b45108947f08b45048947f4c747f850e805088b450c8947fc8d47d48945 *148d47f88945108b760883c50ce91b2d0a008d760084d7050818000500000000001100ffff8d45 *fc3b43547308bee4a91108ff63fcbedcd21108c745fc8ce8050883c5fcff268d7600e4d11108d4 *d1110864c8110834e9050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b94cf71008894df4bed4d1110883c5f0e9b3260a008d760030e9050801000100130003 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f848e905088d4ff8894df48b56048955f0bee4d1110883c5ece94c2c0a0034e905080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950f71008894df4bed4d111 *0883c5f0e927260a008d760030e9050801000100130003008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec84e905088b46048947f0c747f8d4e9 *05088d47ec8945f48d47f88945f0bee4d1110883c5ece9b32b0a008d760030e905080b00020000 *000000110007008d45fc3b4354720883c70c3b7b5c760fbe04aa1108c7436c03000000ff63fcc7 *47f810ea05088b4d04894ffc8d57f8895504be64c8110883c5fce9612b0a009048d11108dcd211 *08ecd51108c4a8110824a91108b4ea050800000200120019008d45ec3b43547303ff63f8c745f8 *d46d10088975fcc745f4c4a81108c745f024a91108be48d1110883c5ece9102b0a00b4ea050800 *00000024001d0083c70c3b7b5c760ac7436c03000000ff63f8c747f8d4ea05088d47f8894500c7 *45fcecd511088b760483c5f8e9d32a0a008d7600b4ea05080000020018001f008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8dd120a0083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcbedcd21108c745f410eb050883c5f4ff26e4 *d11108d4d111081cc8110864c81108dcd2110898d51108e4d5110880d51108bcd3110870d01108 *0caa1108000000002400000083c7083b7b5c760ac7436c02000000ff63f8c747fcb8050c08c707 *010000008d47fc8945008b762483c5fce900260a00c4eb050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcbebcd31108c745f4d8eb050883c5f4ff2689f60100000024 *0000008b7608e9bc250a0001000000240000008b7608c7450044ec0508ff26c4eb050801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f0 *54ec050883c5f0ff26a8eb050800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b958f71008894df4bed4d1110883c5f0e957230a008d7600a4eb05080100010013 *0003018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec6cec05088b46048947f0c747f8a4ec05088d47ec8945f48d47f88945f0bee4d1110883c5 *ece9e3280a008d7600a4eb050802000000150007018d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8e0ec05088b46048947fc8b46088945f48d47 *f88945f0be1cc8110883c5ece98a280a0089f6a4eb05080300000012000f018d45ec3b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f840ed05088b460889 *47fc8b460c89078d47f88945f48b46048945f0be64c8110883c5ece92d280a0090c0eb05080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be80d5110883 *c5f0e9ec230a00bceb050801000100130003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8f4ed05088b4e04894ffc8d57f88955f4bee4d511 *0883c5f0e99c230a0083c7183b7b5c760ac7436c06000000ff63f8c747ec28ee05088b450c8947 *f0c747f88c6b10088b45048947fc8b450c89078d47ec8945188d47f8894514be70d0110883c510 *e95e270a0089f602000000240000008b7614e94c270a00c4eb050802000000150001008d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4bebcd31108c745ecc0ee *050883c5ecff2689f683c70c3b7b5c760ac7436c03000000ff63f8c747f8d4ee05088b45188947 *fc8b4d10890f8d57f88955188b750883c514e91b0100008d760008ef05086cee0508bceb050806 *00000025000f00bceb050804000100060000000b000f008d45e83b43547303ff63fc8b46188945 *ec8b46148945f08b46108945f48b460c8945f88b46088945fc8b45008b4e04894d0089c6c745e8 *54ef050883c5e8ff26b8eb050801000100130001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4be98d5110883c5f0e930220a00b8eb05080600000024001f0083c7283b7b *5c760ac7436c0a000000ff63f8c747dc64ef05088b45108947e08b45148947e48b45188947e88b *450c8947ec8b45088947f08b45048947f4c747f8b0ef05088b450c8947fc8d47dc8945188d47f8 *8945148b760483c510e9cf250a008d7600a4eb05080b000200030000000b00ff038d45ec3b4354 *720883c7103b7b5c760ac7436c04000000ff63fcc747f498ed05088b45008947f88b45048947fc *8b460889078b460c8945f08975f48d47f48945f88b46048945fcbedcd21108c745ece4ef050883 *c5ecff2604000100020000000e0000008d45fc3b43547303ff63fc8b4e08894dfc8b760483c5fc *eb838d7600cceb0508430000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f8bc *f005088b450c8947fc8b4d04890f8d57f889550cc745080caa11088b760483c504e9f4240a00a4 *eb050816000300000000001100ff078d45fc3b4354720883c71c3b7b5c760fbe1caa1108c7436c *07000000ff63fcc747e814ec0508c747f458f005088d47e88947f88b45048947fc8b450889078d *47f4894508bedcd21108c745fce4f0050883c5fcff268d760080d11108bcd3110878d31108be00 *d2110883c50c8b4500ff60f089f601000100130000008d45f43b43547303ff63f8c745f8d46d10 *088975fcc745f400d211088b760483c5f4e9cd0200009083c7183b7b5c760ac7436c06000000ff *63f8c747ecacf105088b450c8947f0c747f87cdc0b088b45048947fc8d47ec89078d77f883c510 *8b4500ff60ec8d760083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45108947 *f08b45048947f4c747f87cdc0b088b45088947fc8d47ec89078d77f883c5148b4500ff60ec9002 *000000150000008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d811 *12088b760883c5f0e9ef0800008d7600050000002400000083c7303b7b5c760ac7436c0c000000 *ff63f88b460483f87d755ac747d460f205088b45048947d88b45108947dcc747e07cdc0b08c747 *e4400d12088d47d48947e8c747ec7cdc0b08c747f0c00a12088d47e08947f4c747f87cdc0b08c7 *47fc700a12088d47ec89078d77f883c5188b4500ff60ecc747d48c6b10088b45148947d88b4508 *8947dcc747e07cdc0b088b450c8947e48d47d48947e88d77e083c51883c7e88b4500ff60ec8d76 *008b46088945008b7604c745fc98f2050883c5fcff268d760044f3050814f20508000000000400 *000025000000050000002400000083c7183b7b5c760ac7436c06000000ff63f88b460483f82d75 *128b7504c7450470f3050883c50483c7e8ff26c747ec8c6b10088b45148947f08b45088947f4c7 *47f87cdc0b088b450c8947fc8d47ec89078d77f883c5188b4500ff60ec8d76008b46088945fc89 *75008b7604c745f878f3050883c5f8ff26d8f30508d4f105080000000003000000250000000300 *00002400000083c7183b7b5c760ac7436c06000000ff63f88b460483f82375148b450489750489 *c6c7450004f4050883c7e8ff26c747ec8c6b10088b450c8947f08b45048947f4c747f87cdc0b08 *8977fc8d47ec89078d77f883c5108b4500ff60ec8b46088945008b7604c745fc0cf4050883c5fc *ff268d760068f4050894f1050800000000020000002500000004000100010000000c0000008d45 *ec3b43547303ff63fc8b4e04894dfc8b550089750089d6c745f894f4050883c5f8ff268d7600be *00d2110883c5108b4500ff60f089f6c7450c00d211088b750483c508e99206000089f601000000 *240000008b4504894500c74504aca811088b760c83c5fce908210a008cf1050801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f0f4f405 *0883c5f0ff268cf10508040000002400010083c70c3b7b5c760ac7436c03000000ff63f88b4604 *83f87d7524c747f818f505088b450c8947fc8b45048945108d47f889450c8b750883c50ce9ee05 *00008b750883c50c83c7f4e9e00500008b460889450089750c8b7604c745fc50f5050883c5fcff *269cf50508d8f405088cf1050883000000250001008cf1050803000000240001008b460483f82d *750c8b750cc74500c8f50508ff268b750483c508e989050000908b460889450c8b7604c74500d4 *f50508ff2689f6f4f50508c8f405088cf1050883000000250001008cf105080300000024000100 *8b750cc745001cf60508ff26ebf289f602000000150000008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e08894df4c745f0d81112088b760483c5f0e90f0500008d760083c7183b7b5c *760ac7436c06000000ff63f8c747ec40f605088b45048947f08b46088947f4c747f87cdc0b088b *46048947fc8d47ec89078d77f883c5108b4500ff60ec9070f6050834f605088cf1050803000000 *250001008cf105080300000024000100837e0400750c8b750cc74500c8f60508ff26e93dffffff *908cf1050803000000240001008b7508c74500d4f60508ff26ebf289f6ebee89f6010000002400 *00008b4504894500c74504aca811088b761483c5fce9e81e0a008cf1050801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f014f7050883 *c5f0ff268cf10508040000002400010083c70c3b7b5c760ac7436c03000000ff63f88b460483f8 *2d7524c747f838f705088b450c8947fc8b45048945108d47f889450c8b750883c50ce9ce030000 *83c50483c7f4e93fffffff8d76008b46088945008b7604c745fc70f7050883c5fcff268d7600bc *f7050808f705088cf1050803000000250001008cf1050804000000240001008b460483f87b750f *8b7504c74504e8f7050883c504ff2683c504e9e5feffff908b46088945008b7604c745fcf4f705 *0883c5fcff268d760014f8050804f705088cf1050803000000250001008cf10508030000002400 *01008b750cc7450040f80508ff2683c508ebef8d7600ebea89f602000000240000008b45088b4d *04894d088945048b7604e9941d0a0088f1050804000100010000000c0001008d45f83b43547303 *ff63fc8b4e04894dfcbe80d11108c745f86cf8050883c5f8ff2689f688f1050801000100130005 *008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747 *fc90f80508c707a80912088b4e04894df48d57fc8955f0be78d3110883c5ece90a1d0a0089f688 *f10508040000002400070083c70c3b7b5c760ac7436c03000000ff63f88b460483f82d7525c747 *f8c0f805088b4d04894ffc8d57f8895510c7450cd81112088b750883c50ce92502000083c50483 *c7f4e9eafeffff89f68b46088945008b7604c745fc18f9050883c5fcff268d760064f9050860f8 *050888f10508030000002500070083c508e9b4feffff83c508e9acfeffff83c50ce9a4feffff83 *c7303b7b5c760ac7436c0c000000ff63f8c747d48c6b10088b450c8947d88b45048947dcc747e0 *7cdc0b08c747e4700a12088d47d48947e8c747ec7cdc0b08c747f0c00a12088d47e08947f4c747 *f87cdc0b08c747fc300d12088d47ec89078d77f883c51c8b4500ff60eca8f90508a0f905088cf1 *050846000000250001008cf1050806000000240001008b460483f823750c8b7508c7450028fa05 *08ff2683c50ce9fcfdffff8b46088945008b7604c745fc34fa050883c5fcff268d760050fa0508 *98f905088cf1050805000000250001008cf1050806000000240001008b460483f82d750f8b7504 *c745047cfa050883c504ff2683c50ce9a5fdffff908b46088945008b7604c745fc88fa050883c5 *fcff268d7600a8fa050890f905088cf10508050000002500010088f1050806000000240007008b *460483f87b7d1483f82d75238b7504c7450c90f9050883c50cff2683f87b750f8b7504c74504d4 *fa050883c504ff2683c50ce934fdffff8b46088945008b7604c745fce0fa050883c5fcff268d76 *0018fb050858f8050888f10508050000002500070088f105080500000024000700837e0400750c *8b7514c7450044fb0508ff2683c508e9e2fcffff89f688f105080b000200020000000e0007008d *45ec3b43547303ff63fc8975fc8b4e08894df48b56048955f88b7500c745f050fb050883c5f0ff *268d760088f105080b000200000000001100070083c7143b7b5c760fbe24aa1108c7436c050000 *00ff63fcc747f0a0f405088d47f88947f4c747f87cfb05088d4ff0894ffc8b55008917c74500d8 *1112088d77f8eb8289f6e4d11108dcd11108c4d11108d4d11108b4d3110844d11108e0d1110830 *c91108c4d01108dcd21108c8d5110878d3110890d3110898d31108acd01108a4d0110824aa1108 *50d51108b4a81108f4a8110804a9110824a91108fcfb050816000000ffff3f00fcfb0508020000 *00150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be *e4d1110883c5ece97a190a0089f6fcfb050802000000150001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df48b56048955f0bee4d1110883c5ece93e190a0089f6fcfb0508 *02000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b560489 *55f0bee4d1110883c5ece902190a0089f6fcfb0508030000002400010083c7343b7b5c760ac743 *6c0d000000ff63f8c747d06cfc05088b45048947d48b460c8947d8c747dca8fc05088b45088947 *e08b46088947e4c747e8e4fc05088b450c8947ec8b46048947f0c747f4fcbb0b088d47e88947f8 *8d47dc8947fc8d47d089078d77f483c510ff6500fcfb050801000000240001008b460c8945fc8b *46088945008b45048b4e04894d0489c6c745f820fd050883c5f8ff2690fcfb05080b0002000000 *01000b0001008d45f83b43547303ff63fc8b7500c7450098fd0508ff269004fc05081100000043 *00010004fc0508110000004300010083c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b *08c747f800d21108c747fc00d21108c70700d211088d77f483c504ff650089f608fc0508000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b95cf71008894df4bed4 *d1110883c5f0e9bb110a008d760004fc0508110000004300010008fc050800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b964f71008894df4bed4d1110883c5f0 *e973110a008d760004fc0508110000004300010008fc050800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b970f71008894df4bed4d1110883c5f0e92b110a008d *760004fc0508110000004300010008fc050800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b980f71008894df4bed4d1110883c5f0e9e3100a008d760004fc0508 *110000004300010008fc050800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b990f71008894df4bed4d1110883c5f0e99b100a008d760004fc0508110000004300 *010008fc050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *9cf71008894df4bed4d1110883c5f0e953100a008d760083c7103b7b5c760ac7436c04000000ff *63f8c747f4fcbb0b08c747f800d21108c747fc00d21108c70700d211088d77f483c50cff650089 *f683c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b08c747f800d21108c747fc00d211 *088b450489078d77f483c50cff65008d760010000608d8ff050800000000420000002500000083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8a8ff05088b45088945fc8d4ff8894df8bec4d1 *1108c745005c00060883c5f4e97f150a008d7600bee0d0110883c5048b4500ff60f089f683c708 *3b7b5c760ac7436c02000000ff63f8c747fc94b90b088b450489078d77fc83c50c8b4d00ff61ec *89f6bee0d0110883c50c8b4500ff60f089f6d4000608a80006080000000042000000250000008b *7508c74500f8000608ff2683c7083b7b5c760ac7436c02000000ff63f8c747fc94b90b088b4504 *89078d77fc83c50c8b4d00ff61ec89f6bee0d0110883c50c8b4500ff60f089f630010608040106 *080000000042000000250000008b7508c7450054010608ff26bee0d0110883c50c8b4500ff60f0 *89f6600106085401060800000000020000002500000003000000240000008b460483f82c750f8b *7504c745048401060883c504ff26bee0d0110883c5108b4d00ff61f08d76008b46088945008b76 *04c745fc8c01060883c5fcff268d7600b4010608f8000608000000000200000025000000010000 *00240000008b46048945008b7608c745fce001060883c5fcff268d76008b46088945008b7604c7 *45fce801060883c5fcff268d7600000206089800060800000000000000002500000044fc050804 *000100000001000b0001008d45f43b43547303ff63fc8b4d00894dfcbeb4a81108c745002c0206 *0883c5f8e9a70f0a008d76001cfc050801000100130001048d45ec3b4354720883c7083b7b5c76 *0ac7436c02000000ff63f8c745f8d46d10088975fcc747fc3c0206088b4e04894df48d57fc8955 *f0bec4d0110883c5ece960130a0083c71c3b7b5c760ac7436c07000000ff63f8c747e870020608 *8b45048947ecc747f4fcbb0b088d4fe8894ff8c747fc00d21108c70700d211088d77f483c50cff *650089f6b40206085c00060890ff0508020000002500ffff83c70c3b7b5c760ac7436c03000000 *ff63f8c747f860ff05088b45088945fc8d4ff8894df8bec4d11108c745000c03060883c5f4e9cf *120a008d760083c7283b7b5c760ac7436c0a000000ff63f8c747dce4bb0b08c747e0acb111088b *45048947e4c747e87cdc0b088d4fdc894fecc747f000d21108c747f4fcbb0b08c747f800d21108 *8d57e88957fcc70700d211088d77f483c50cff65008d7600480306080c03060848ff0508020000 *002500ffff83c70c3b7b5c760ac7436c03000000ff63f8c747f818ff05088b45088945fc8d4ff8 *894df8bec4d11108c74500bc03060883c5f4e91f120a008d760083c7283b7b5c760ac7436c0a00 *0000ff63f8c747dce4bb0b08c747e0a8b111088b45048947e4c747e87cdc0b088d4fdc894fecc7 *47f000d21108c747f4fcbb0b08c747f800d211088d57e88957fcc70700d211088d77f483c50cff *65008d7600f8030608bc03060800ff0508020000002500ffff83c70c3b7b5c760ac7436c030000 *00ff63f8c747f8d0fe05088b45088945fc8d4ff8894df8bec4d11108c745006c04060883c5f4e9 *6f110a008d760083c7283b7b5c760ac7436c0a000000ff63f8c747dce4bb0b08c747e0a4b11108 *8b45048947e4c747e87cdc0b088d4fdc894fecc747f000d21108c747f4fcbb0b08c747f800d211 *088d57e88957fcc70700d211088d77f483c50cff65008d7600a80406086c040608b8fe05080200 *00002500ffff83c70c3b7b5c760ac7436c03000000ff63f8c747f888fe05088b45088945fc8d4f *f8894df8bec4d11108c745001c05060883c5f4e9bf100a008d760083c7283b7b5c760ac7436c0a *000000ff63f8c747dce4bb0b08c747e0a4b111088b45048947e4c747e87cdc0b088d4fdc894fec *c747f000d21108c747f4fcbb0b08c747f800d211088d57e88957fcc70700d211088d77f483c50c *ff65008d7600580506081c05060870fe0508020000002500ffff83c70c3b7b5c760ac7436c0300 *0000ff63f8c747f840fe05088b46048945f48d47f88945f08b46088945fc8b4604894500bec4d1 *1108c745f8cc05060883c5ece903100a008d7600cc050608fcfd0508f0fd0508000000002500ff *ffe4fd050804000100000001000b00ffff8d45ec3b43547303ff63fc8b7500c7450028060608ff *269004fc050813000000032c040004fc050813000000030c0400bee0d0110883c5048b4500ff60 *f089f608fc050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9a4f71008894df4bed4d1110883c5f0e977090a008d760008fc05081200000001060200bee0d0 *110883c5088b4500ff60f089f608fc050800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9a8f71008894df4bed4d1110883c5f0e91f090a008d760030fc050801 *000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be98d31108 *83c5f0e9c80a0a00bee0d0110883c5088b4500ff60f089f62cfc050801000100130001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d3110883c5f0e9840a0a0083c7 *143b7b5c760ac7436c05000000ff63f8c747f05c0706088b45048947f4c747fc94b90b088d4ff0 *890f8d77fc83c5088b5500ff62ec9084070608400706082cfc0508010000002500010008fc0508 *010000002400010683c7183b7b5c760ac7436c06000000ff63f8c747ecdc060608c747f8180706 *088b45048947fc8d4fec894dfc8d57f88955f88b7608c74500d007060883c5f4e9f40d0a00be04 *a91108c74500dc070608ff2689f620080608c0060608b4060608010000002500ffff83c70c3b7b *5c760ac7436c03000000ff63f8c747f8840606088b46048945f88d4ff8894df48b5608895500be *c4d11108c745fc4408060883c5f0e9910d0a009044080608680606085c060608000000002500ff *ff5006060804000100000001000b00ffff8d45f03b43547303ff63fc8b4d00894dfcbea4d01108 *c745009808060883c5f8e93b090a008d7600befcd1110883c5048b4500ff60f089f60000000024 *0000008b460483f823750ebefcd1110883c5048b4d00ff61f0be04d2110883c5048b5500ff62ec *8b7604c74500e8080608ff260c090608d008060800000000000000002500000004000100000001 *000b0000008b7500c745002c090608ff2600fc0508150000007da6150000fc0508150000007da4 *150000fc0508130000007da4050008fc0508110000001f69010008fc0508110000001f69010008 *fc0508110000001f69010008fc0508110000001f69010008fc0508110000001d69010008fc0508 *110000001528010008fc0508110000001520010008fc0508110000001100010008fc0508000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9acf71008894df4bed4 *d1110883c5f0e927060a008d76008b750483c50cff268b45088b4d04894d08894504be30c91108 *e9f20b0a0089f60c0a0608040a060818fc05080200000025000100bc090608020000001500ffff *8d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *d40906088b46048945e88d47f88945e48b46088945f08b46048945f4bef4a81108c745ec380a06 *0883c5e0e9790b0a00903cfc050800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fcc745f404d21108be24aa110883c5f0e937070a008d7600b0090608020000001500ffff *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *440a06088b46048947f08b46088947f4c747f8a80a06088d47ec8945f48d47f88945f0be44d111 *0883c5ece9dd0a0a0090a4090608020000001500ffff8d45ec3b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8e00a06088b46048947fc8b460889078d47 *f88945f4c745f0acd01108be44d1110883c5ece9800a0a0028fc050800000200120041008d45f0 *3b43547303ff63f8c745f8d46d10088975fcc745f450d51108be78d3110883c5f0e93f060a008d *760014fc050800000200120021088d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8a00b06088d4ff8894df4bee0d1110883c5f0e9f2050a0089f6 *98090608020000001500ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec440b06088b46048947f08b46088947f4c747f8d80b06088d47ec89 *45f48d47f88945f0be44d1110883c5ece999090a00900cfc050801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4beb4d3110883c5f0e958050a008c090608 *030000001200ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ec240c06088b46088947f08b460c8947f4c747f8880c06088b46048947fc8d47 *ec8945f48d47f88945f0be44d1110883c5ece9fb080a008d760014fc050801000100130001008d *45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee0d1110883c5f0e9b8040a00 *80090608040000001200ffff8d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c7 *45f8d46d10088975fcc747e8bc0c06088b46088947ec8b460c8947f08b46108947f4c747f8280d *06088b46048947fc8d47e88945f48d47f88945f0be44d1110883c5ece955080a00907409060804 *0000001200ffff8d45ec3b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10 *088975fcc747f05c0d06088b46048947f48b46088947f88b460c8947fc8b461089078d47f08945 *f4c745f0a0a81108be44d1110883c5ece9ec070a0014fc050801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4bee0d1110883c5f0e9ac030a006809060805 *0000001200ffff8d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10 *088975fcc747e4cc0d06088b46088947e88b460c8947ec8b46108947f08b46148947f4c747f834 *0e06088b46048947fc8d47e48945f48d47f88945f0be44d1110883c5ece943070a008d760000fc *050801000100130001008d45ec3b4354720883c7103b7b5c760ac7436c04000000ff63f8c745f8 *d46d10088975fcc747f4fcbb0b08c747f800d21108c747fc00d21108c70700d211088d4ff4894d *f48b56048955f0bedcd1110883c5ece9dc060a005c090608060000001200ffff8d45ec3b435472 *0883c7243b7b5c760ac7436c09000000ff63f8c745f8d46d10088975fcc747e0680e06088b4608 *8947e48b460c8947e88b46108947ec8b46148947f08b46188947f4c747f8e00e06088b46048947 *fc8d47e08945f48d47f88945f0be44d1110883c5ece961060a0090500906080400010005000000 *0b00ffff8d45f83b4354720883c71c3b7b5c760ac7436c07000000ff63fcc747e8440f06088b46 *048947ec8b46088947f08b460c8947f48b46108947f88b46148947fc8b450089078d47e8894500 *c745fc24a91108be44d1110883c5f8e9f2050a0089f624fc050801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4bec8d5110883c5f0e9b0010a0044090608 *050000002400ffff83c7243b7b5c760ac7436c09000000ff63f8c747e0c40f06088b45108947e4 *8b450c8947e88b45088947ec8b45048947f08b45148947f4c747f8301006088b45148947fc8d47 *e08945148d47f88945108b760483c50ce955050a009054fc050804000100000000001100ffff8d *45ec3b4354720883c7203b7b5c760fbe2caa1108c7436c08000000ff63fcc747e4ccfd0508c747 *ec38060608c747f4a8080608c747fc380906088d47fc8945f08d47f48945f48d47ec8945f88d47 *e48945fcbedcd21108c745ec6410060883c5ecff26d4d111083411060800000200180001008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8e9ec090083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8b4f710088945f4bed4d111 *0883c5f0e98bfe09008d7600e4d11108d4d11108b4d3110844d1110834a91108e4a8110804a911 *0834aa1108bc11060801000000240001008b4504894500c7450434aa11088b760483c5fce93004 *0a00b811060804000100000001000b0003008d45f83b43547303ff63fcbe04a91108c745fccc11 *060883c5fcff26a811060801000100130031008d45ec3b4354720883c7083b7b5c760ac7436c02 *000000ff63f8c745f8d46d10088975fcc747fcf41106088b4e04894df48d57fc8955f0beb4d311 *0883c5ece9b4030a00a8110608010000002400310083c70c3b7b5c760ac7436c03000000ff63f8 *c747f81c1206088b45048947fc8d4ff8894d048b7608e96fff09008d7600a81106080100010013 *0039008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee4a81108c745f06c *12060883c5f0ff26a411060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9c8f71008894df4bed4d1110883c5f0e91bfd09008d7600a0110608010001001300 *e7008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc7 *47eca81206088b46048947f0c747f8e01206088d47ec8945f48d47f88945f0bee4d1110883c5ec *e9a7020a008d7600a011060804000100000000001100ff008d45f83b4354720883c70c3b7b5c76 *0fbe44aa1108c7436c03000000ff63fcc747f81c1306088b4d00894ffc8d57f8895500c745fc34 *a91108be44d1110883c5f8e94e020a0089f6d4d11108c813060800000200180001008d45f03b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e855ea090083c4048d47 *f8894604c706245b1008c745f8d46d10088d47f88945fc90b808f810088945f4bed4d1110883c5 *f0e9f7fb09008d7600ecd01108b8d1110844d1110844c8110804a9110834aa11084caa11084814 *060801000000240001008b4504894500c7450434aa11088b760883c5fce9a0010a004414060801 *000100130003008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be04a91108 *c745f05c14060883c5f0ff264014060801000100130001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4be44c8110883c5f0e928fd0900341406080100010013000d008d45 *ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b814 *06088b4e04894ffc8d57f88955f4c745f0ecd01108be44d1110883c5ece9dd000a009034140608 *0100000024004d0083c70c3b7b5c760ac7436c03000000ff63f8c747f8ec1406088b45048947fc *c745044caa11088d4ff8894d008b760883c5fce999000a0090341406080100010013005d008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be04a91108c745f04415060883c5 *f0ff2634140608040001000000000011007f008d45f83b4354720883c7183b7b5c760fbe5caa11 *08c7436c06000000ff63fcc747ec801406088b45008947f0c747f8881506088b45008947fc8d47 *ec8945008d47f88945fcbeb8d1110883c5f8e9feff090089f6e4d11108d4d1110844d1110834a9 *11084caa11081c16060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b910f81008894df4bed4d1110883c5f0e9c3f909008d7600181606080000020012001300 *8d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *38160608c745f44caa11088d4ff8894df0bee4d1110883c5ece95bff09008d7600181606080000 *020018001f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c1008 *56e865e7090083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f87416 *06088d47f88945f4c745f034a91108be44d1110883c5ece9e8fe0900e4d11108d4d11108b4d311 *0844d11108dcd2110868d5110864aa110844aa110804a9110894a9110834aa11084caa11085caa *1108be64aa110883c508e92ff009008d7600be64aa110883c510e91ff009008d76008b75108b45 *0489451083c50ce977fa09008d7600801706087017060844170608c4000000250001008b450489 *45fcc74500a817060883c5fce907feffff8d76003017060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b978f81008894df4bed4d1110883c5f0e92ff809008d *76002c17060800000200120003088d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8cc170608c745f44caa11088d4ff8894df0bee4d1110883c5ec *e9c7fd09008d76002c1706080000020012000b0a8d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8081806088d4ff8894df4c745f094a91108be44 *d1110883c5ece973fd09008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b1008 *8b45108947f08b45048947f4c747f85c1806088d47ec8945108b750c8d47f889450c83c508e92d *fd090090a4180608a81706082c1706084400000025004b1a2c1706084400000024004b1ec745fc *34aa11088b45048945f88b7608c74500fc18060883c5f4e9edfc090090be04a91108c745000819 *0608ff2689f683c7183b7b5c760ac7436c06000000ff63f8c747ec7cdc0b088b45048947f0c747 *f400d21108c747f87cdc0b088b45088947fc8d47ec89078d47f889451483c514e902faffff89f6 *2c17060801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f87cdc0b08c747fc680a1208c70700d211088d4ff8894df48b560489 *55f0bee4d1110883c5ece937fc09008d76003017060800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9c4f81008894df4bed4d1110883c5f0e90ff609008d7600 *2c17060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec8c1906088b46048947f0c747f8ec1906088d47ec8945f48d47f889 *45f0bee4d1110883c5ece99bfb09008d76002c1706080100010013000b028d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8281a06088b4e04894f *fc8d57f88955f4c745f094a91108be44d1110883c5ece941fb09009083c7183b7b5c760ac7436c *06000000ff63f8c747ec8c6b10088b45148947f08b45088947f4c747f8881a06088b45088947fc *8d47ec8945148b75108d47f889451083c50ce9f7fa09008d7600d41a0608381906082c17060885 *00000025008b02c745fc34aa11088b45048945f88b750cc74500341b060883c5f4e9c1fa090090 *2c17060801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f87cdc0b08c747fc680a1208c70700d211088d4ff8894df48b560489 *55f0bee4d1110883c5ece963fa09008d76003017060800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b91cf91008894df4bed4d1110883c5f0e93bf409008d7600 *2c17060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec601b06088b46048947f0c747f8c01b06088d47ec8945f48d47f889 *45f0bee4d1110883c5ece9c7f909008d76002c1706080100010013000b028d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fc1b06088b4e04894f *fc8d57f88955f4c745f094a91108be44d1110883c5ece96df909009083c7183b7b5c760ac7436c *06000000ff63f8c747ec8c6b10088b45148947f08b45048947f4c747f85c1c06088b45048947fc *8d47ec8945148b75108d47f889451083c50ce923f909008d7600a81c0608341b06082c17060805 *00000025008b062c1706088500000024008b06c745fc34aa11088b45088945f88b4e08894d0c8b *7608c74500081d060883c5f4e9dbf809008d7600be04a91108c74500141d0608ff2689f68b450c *89451483c514e926f6ffff89f64c1d06083c1d06082c1706080500000025008b078b4604894500 *8b7608c745fc701d060883c5fcff268d7600701d0608281906082c170608040000002500cb1f8b *46048945fc8975008b7608c745f89c1d060883c5f8ff269c1d0608601706082c17060802000000 *2500cb1f2c17060804000100020000000e00cf1f8d45e03b43547303ff63fc8b45008945f4c745 *f05caa11088b46088945fc8b4604894500beb4d31108c745f8c81d060883c5ece904f809004017 *060801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be68 *d5110883c5f0e9c4f309002c170608010000002400ef1f83c7183b7b5c760ac7436c06000000ff *63f8c747ecd81d06088b460c8947f08b46088947f4c747f81c1e06088b45048947fc8d47ec8945 *048d47f88945008b760483c5fce97bf709008d76002c17060804000100000000001100ff1f8d45 *f83b43547308be74aa1108ff63fcbedcd21108c745fc501e060883c5fcff268d7600dcd2110888 *d5110874aa1108d41e06080000000024000300c7450074aa1108c745fc88d511088b760483c5f8 *e913f709008d7600d01e060800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e81ddf090083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcbedcd21108c745f4e81e060883c5f4ff26d4d11108641f06080000020018 *0001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b9 *de090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b874f910088945 *f4bed4d1110883c5f0e95bf009008d7600e4d11108d4d11108ecd0110864c8110844c81108dcd2 *110868d5110834a9110804a911088caa1108be00d2110883c50c8b4500ff60f089f6e01f060801 *000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be44c81108 *83c5f0e9ccf10900d81f060801000100130005008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8142006088b4e04894ffc8d57f88955f4beecd0 *110883c5f0e97cf109008b45048945108b750c83c510e93b0100008d7600dc1f06080200000015 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be64c8 *110883c5ece93af5090089f683c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b45 *0c8947e48b45048947e8c747ecac2006088b45108947f08b45088947f4c747f87cdc0b088d47ec *8947fc8d47e089078d77f883c5148b4500ff60ec89f6dc2006088c200608dc1f06080400000025 *000100d81f0608040000002400870083c70c3b7b5c760ac7436c03000000ff63f8c747f8482006 *088b45088947fcc745fc8caa11088d4ff8894df88b7608c745004821060883c5f4e982f4090089 *f68b46088945fc8b4e04894d00be04a91108c745f85421060883c5f8ff268d760094210608f81f *0608d81f0608020000002500c700d81f060804000100010000000c00c7008d45e43b43547303ff *63fc8975fc8b4d008b560489550089cec745f8c821060883c5f8ff268d76008b7504c74504e0d0 *1108e9f9ef09009083c7083b7b5c760ac7436c02000000ff63f8c747fc94b90b088b450489078b *75088d4ffc894d0883c504e9c9ef090090d41f060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b980f91008894df4bed4d1110883c5f0e9afed09008d7600d0 *1f060800000200120003028d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f84c220608c745f48caa11088d4ff8894df0bee4d1110883c5ece947f3 *09008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8882206088d47f889450883c508 *e9dd97ffff90d022060810220608d01f060802000000250083028b46048945008b7608c745fc0c *23060883c5fcff268d76000c23060800220608d01f06080100000025008302d01f060804000100 *020000000e009f038d45f83b4354720883c7083b7b5c760ac7436c02000000ff63fcc747fcd821 *06088b460489078b45008945f88b46088945008d77fcc745fc3823060883c5f8e94cfeffffe81f *060801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be68 *d5110883c5f0e948ee0900d01f0608010000002400df0383c7183b7b5c760ac7436c06000000ff *63f8c747ec482306088b45048947f08b460c8947f4c747f8982306088b45048947fc8d47ec8945 *048d47f88945008b760483c5fce9fff109008d7600d01f060804000100000000001100ff038d45 *f83b43547308be9caa1108ff63fcbedcd21108c745fccc23060883c5fcff268d7600dcd2110888 *d511089caa1108502406080000000024000300c745009caa1108c745fc88d511088b760483c5f8 *e997f109008d76004c24060800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8a1d9090083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcbedcd21108c745f46424060883c5f4ff26e900000000833db4aa11080075 *50c705b4aa110801000000c745003519050883c504c7450035d2040883c504c7450004aa0b0883 *c504c7450004a10b0883c504c74500f0440c0883c504c74500f8400c0883c504c7450090310c08 *83c50483c5fcff650044d1110848d1110854d111088cd31108be00d2110883c5088b4500ff60f0 *89f602000000240000008b068b40fcc1e81083f80d754483c7183b7b5c760ac7436c06000000ff *63f8c747ec8c6b10088b45088947f08b45048947f4c747f87cdc0b08c747fc0cd211088d47ec89 *078d77f883c50c8b4500ff60ec8b75088b450489450883c508eb39908b46088945008b7604c745 *fc6c25060883c5fcff268d7600cc25060854250608000000000100000025000000040001000000 *01000b0000008d45f83b43547303ff63fc8b4d0089750089cec745fcf825060883c5fcff269001 *000100130000008d45f43b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10 *088975fcc747fc042606088b4e04894df48d77fc83c5f4eb9f8d76004825060800000200120007 *008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f48cd31108c745f054d11108be48d1 *110883c5ece970ef090044250608040001000000000011000f008d45f83b4354720883c7183b7b *5c760fbeb8aa1108c7436c06000000ff63fcc747ec2c2606088b45008947f0c747f8742606088d *47ec8945008d47f88945fcbe44d1110883c5f8e914ef0900be00d2110883c5088b4500ff60f089 *f602000000240000008b068b40fcc1e81083f810754383c7183b7b5c760ac7436c06000000ff63 *f8c747ec8c6b10088b45088947f08b45048947f4c747f87cdc0b088b46048947fc8d47ec89078d *77f883c50c8b4500ff60ec8b75088b450489450883c508eb3a89f68b46088945008b7604c745fc *1827060883c5fcff268d7600782706080027060800000000010000002500000004000100000001 *000b0000008d45f83b43547303ff63fc8b4d0089750089cec745fca427060883c5fcff26900400 *0100000000001100000083c7083b7b5c760fbec0aa1108c7436c02000000ff63fcc747fcb02706 *088d77fcebb19048d11108be00d2110883c5088b4500ff60f089f683c7103b7b5c760ac7436c04 *000000ff63f8c747f4286107088b46048947f8c747fc801805088d4ff4890f8d77fc83c504ff25 *c46d1008900028060801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4c745f078b21108be48d1110883c5ece98ded09009083c7183b7b5c760ac7436c0600 *0000ff63f8c747ec582806088b46048947f0c747f8a01805088d4fec894ffc8b560889178d77f8 *83c504ff25c06d10088d76000028060801000100130001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4c745f078b21108be48d1110883c5ece911ed09009083c7183b7b5c *760ac7436c06000000ff63f8c747ecd42806088b46048947f0c747f8c01805088d4fec894ffc8b *560889178d77f883c504ff25bc6d10088d76000429060888280608142806080028060800000000 *250001000028060801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b76 *04c745f45c29060883c5f4ff2600280608020000002400010083c7383b7b5c760ac7436c0e0000 *00ff63f8c747cc8c6b10088b45088947d08b45048947d4c747d8682906088b460c8947dcc747e4 *e01805088b46048947e88b46088947ec8d47d88947f08b46108947f4c747f87cdc0b088d47e489 *47fc8d47cc89078d77f883c50c8b4500ff60ec908b46088945008b7604c745fc9829060883c5fc *ff268d7600082a0608042806080028060801000000250001000028060804000100000001000b00 *01008d45f83b43547303ff63fc8b4d0089750089cec745fc342a060883c5fcff26900028060804 *000100000000001100010083c7083b7b5c760fbec4aa1108c7436c02000000ff63fcc747fc442a *06088d77fcebad90d4d11108982a060800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9a0f91008894df4bed4d1110883c5f0e953e509008d7600982a06080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b4f91008894df4be *d4d1110883c5f0e917e509008d7600982a060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9bcf91008894df4bed4d1110883c5f0e9dbe409008d7600982a06 *0800000200180001008d45f83b4354720883c7583b7b5c760ac7436c16000000ff63f8c747ac08 *5c100856e8d1d2090083c4048d47ac894604c706245b1008c745f8d46d10088d47ac8945fcc747 *b8a82a0608c747c480180508c747c86cb21108c747cce42a0608c747d87cdc0b088d47cc8947dc *c747e000d21108c747e4202b0608c747f0e01805088d47e48947f48d47d88947f88d47c48947fc *8d47b889078d77f083c5f8e9d5410a0090d4d11108ccaa1108002c060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c0f91008894df4bed4d1110883c5f0e9 *e7e309008d7600002c060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9f0f91008894df4bed4d1110883c5f0e9abe309008d7600002c060800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b908fa1008894df4bed4d1110883 *c5f0e96fe309008d7600002c060800000200180003008d45f83b4354720883c7543b7b5c760ac7 *436c15000000ff63f8c747b0085c100856e865d1090083c4048d47b0894604c706245b1008c745 *f8d46d10088d47b08945fcc747bc7cdc0b08c747c0ccaa1108c747c400d21108c747c8142c0608 *c747d4502c0608c747e08c2c0608c747ecd85f07088d47e08947f08d47d48947f48d47c88947f8 *8d47bc8947fcc707e4b111088d77ec83c5f8e96f400a008d76008cd4110830d41108682d060800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8b1d0090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f48c *d41108be30d4110883c5f0e935e4090090d4d11108d8d01108f4aa1108d82d0608010001001300 *03008d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0f4aa1108c745ec *ecaa1108bed8d0110883c5e8e9c2ec090089f6d82d060804000100000001000b00030083c7143b *7b5c760ac7436c05000000ff63fcc747f0ec2d06088b45008947f4c747fc106107088d4ff0890f *8d77fc83c504ff6500d42d060800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b910fa1008894df4bed4d1110883c5f0e987e109008d7600d42d06080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96cfa1008894df4bed4d111 *0883c5f0e94be109008d7600d42d060800000200180007008d45f83b4354720883c7703b7b5c76 *0ac7436c1c000000ff63f8c74794085c100856e841cf090083c4048d4794894604c706245b1008 *c745f8d46d10088d47948945fcc747a0342e0608c747a8742e0608c747b47cdc0b08c747b8c80c *1208c747bc00d21108c747c0c01805088d47a08947c48d47b48947c8c747ccb02e0608c747d87c *dc0b088d47cc8947dcc747e000d21108c747e47cdc0b08c747e8080d1208c747ec00d21108c747 *f0e01805088d47e48947f48d47d88947f88d47c08947fc8d47a889078d77f083c5f8e9163e0a00 *89f6ccaa110804ab1108c02f060800000200180003008d45f83b4354720883c7243b7b5c760ac7 *436c09000000ff63f8c747e0085c100856e859ce090083c4048d47e0894604c706245b1008c745 *f8d46d10088d47e08945fcc747ec7cdc0b08c747f004ab1108c747f400d21108c747f87cdc0b08 *c747fcccaa11088d47ec89078d77f883c5f8ff25c06d100890d4d11108ccaa110804ab11084c30 *060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974fa1008 *894df4bed4d1110883c5f0e997df09008d76004c30060800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9a0fa1008894df4bed4d1110883c5f0e95bdf09008d76 *004c30060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc *fa1008894df4bed4d1110883c5f0e91fdf09008d76004c30060800000200180007008d45f83b43 *54720883c7603b7b5c760ac7436c18000000ff63f8c747a4085c100856e815cd090083c4048d47 *a4894604c706245b1008c745f8d46d10088d47a48945fcc747b07cdc0b08c747b404ab1108c747 *b800d21108c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747c864300608c747d4a0300608 *c747e0dc300608c747ecd85f07088d47e08947f08d47d48947f48d47c88947f88d47bc8947fcc7 *07e0b111088d77ec83c5f8e90b3c0a008d7600d4d11108ccaa110804ab1108cc31060800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d4fa1008894df4bed4d1 *110883c5f0e917de09008d7600cc31060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9f0fa1008894df4bed4d1110883c5f0e9dbdd09008d7600cc31060800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b924fb1008894df4 *bed4d1110883c5f0e99fdd09008d7600cc31060800000200180007008d45f83b4354720883c760 *3b7b5c760ac7436c18000000ff63f8c747a4085c100856e895cb090083c4048d47a4894604c706 *245b1008c745f8d46d10088d47a48945fcc747b07cdc0b08c747b404ab1108c747b800d21108c7 *47bc7cdc0b08c747c0ccaa11088d47b08947c4c747c8e4310608c747d420320608c747e05c3206 *08c747ecd85f07088d47e08947f08d47d48947f48d47c88947f88d47bc8947fcc707ecb111088d *77ec83c5f8e98b3a0a008d7600d4d11108ccaa110804ab11084c33060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b92cfb1008894df4bed4d1110883c5f0e9 *97dc09008d76004c33060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b94cfb1008894df4bed4d1110883c5f0e95bdc09008d76004c33060800000200180007 *008d45f83b4354720883c7543b7b5c760ac7436c15000000ff63f8c747b0085c100856e851ca09 *0083c4048d47b0894604c706245b1008c745f8d46d10088d47b08945fcc747bc7cdc0b08c747c0 *04ab1108c747c400d21108c747c87cdc0b08c747ccccaa11088d47bc8947d0c747d464330608c7 *47e0a0330608c747ecd85f07088d47e08947f08d47d48947f4c747f800d211088d47c88947fcc7 *07f0b111088d77ec83c5f8e94d390a0090d4d11108ccaa110804ab110888340608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950fb1008894df4bed4d11108 *83c5f0e95bdb09008d76008834060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9a8fb1008894df4bed4d1110883c5f0e91fdb09008d760088340608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b0fb1008894df4bed4 *d1110883c5f0e9e3da09008d76008834060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b900fc1008894df4bed4d1110883c5f0e9a7da09008d760088340608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b908fc1008894d *f4bed4d1110883c5f0e96bda09008d76008834060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b920fc1008894df4bed4d1110883c5f0e92fda09008d760088 *34060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b924fc10 *08894df4bed4d1110883c5f0e9f3d909008d76008834060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b934fc1008894df4bed4d1110883c5f0e9b7d909008d *76008834060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *e8fc1008894df4bed4d1110883c5f0e97bd909008d76008834060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b924fd1008894df4bed4d1110883c5f0e93fd9 *09008d76008834060800000200180007008d45f83b4354720b81c75c0100003b7b5c760ac7436c *57000000ff63f8c787a8feffff085c100856e82fc7090083c4048d87a8feffff894604c706245b *1008c745f8d46d10088d87a8feffff8945fcc787b4feffffb8610708c787b8fefffffcd11108c7 *87bcfeffffa0340608c787c8feffff80180508c787ccfeffff68b21108c787d0feffffdc340608 *c787dcfeffff7cdc0b088d87d0feffff8987e0feffffc787e4feffff00d21108c787e8feffffe0 *180508c787ecfeffff00d211088d87dcfeffff8987f0feffff8d87c8feffff8987f4feffff8d87 *bcfeffff8987f8feffffc787fcfeffff7cdc0b088d87e8feffff898700ffffffc78704ffffff00 *d21108c78708ffffff18350608c78714ffffff80180508c78718ffffff64b21108c7871cffffff *54350608c78728ffffff7cdc0b088d871cffffff89872cffffffc78730ffffff00d21108c78734 *ffffffe0180508c78738ffffff00d211088d8728ffffff89873cffffff8d8714ffffff898740ff *ffff8d8708ffffff898744ffffffc78748ffffff7cdc0b088d8734ffffff89874cffffff8d87fc *feffff898750ffffffc78754ffffff90350608c78760ffffffcc350608c7876cffffffa0180508 *c78770ffffff70b211088d8760ffffff898774ffffffc78778ffffff08360608c747847cdc0b08 *8d8778ffffff894788c7478c00d21108c74790e0180508c7479400d211088d47848947988d876c *ffffff89479c8d8754ffffff8947a0c747a47cdc0b088d47908947a88d8748ffffff8947acc747 *b07cdc0b08c747b404ab11088d47a48947b8c747bc7cdc0b08c747c0ccaa11088d47b08947c4c7 *47c844360608c747d480360608c747e0bc360608c747ecd85f07088d47e08947f08d47d48947f4 *8d47c88947f88d47bc8947fc8d87b4feffff89078d77ec83c5f8e937340a008d7600d4d11108cc *aa110804ab1108a039060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b92cfd1008894df4bed4d1110883c5f0e943d609008d7600a039060800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b964fd1008894df4bed4d1110883 *c5f0e907d609008d7600a039060800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b968fd1008894df4bed4d1110883c5f0e9cbd509008d7600a039060800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974fd1008894df4bed4d1 *110883c5f0e98fd509008d7600a039060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9f0fd1008894df4bed4d1110883c5f0e953d509008d7600a039060800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b91cfe1008894df4 *bed4d1110883c5f0e917d509008d7600a039060800000200180007008d45f83b4354720b81c7c4 *0000003b7b5c760ac7436c31000000ff63f8c78740ffffff085c100856e807c3090083c4048d87 *40ffffff894604c706245b1008c745f8d46d10088d8740ffffff8945fcc7874cffffff88610708 *c78750ffffffe0d01108c78754ffffffb8390608c78760fffffff4390608c7876cffffffa01805 *08c78770ffffff70b211088d8760ffffff898774ffffffc78778ffffff303a0608c747847cdc0b *088d8778ffffff894788c7478c00d21108c74790e0180508c7479400d211088d47848947988d87 *6cffffff89479c8d8754ffffff8947a0c747a47cdc0b088d47908947a8c747ac00d21108c747b0 *7cdc0b08c747b404ab11088d47a48947b8c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747 *c86c3a0608c747d4a83a0608c747e0e43a0608c747ecd85f07088d47e08947f08d47d48947f48d *47c88947f88d47bc8947fc8d874cffffff89078d77ec83c5f8e953310a008d7600d4d11108ccaa *110804ab1108843c060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b924fe1008894df4bed4d1110883c5f0e95fd309008d7600843c06080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950fe1008894df4bed4d1110883c5 *f0e923d309008d7600843c060800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b988fe1008894df4bed4d1110883c5f0e9e7d209008d7600843c06080000020018 *0007008d45f83b4354720883c7603b7b5c760ac7436c18000000ff63f8c747a4085c100856e8dd *c0090083c4048d47a4894604c706245b1008c745f8d46d10088d47a48945fcc747b07cdc0b08c7 *47b404ab1108c747b800d21108c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747c89c3c06 *08c747d4d83c0608c747e0143d0608c747ecd85f07088d47e08947f08d47d48947f48d47c88947 *f88d47bc8947fcc707f8b111088d77ec83c5f8e9d32f0a008d7600d4d11108ccaa110804ab1108 *043e060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b990fe *1008894df4bed4d1110883c5f0e9dfd109008d7600043e060800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9e8fe1008894df4bed4d1110883c5f0e9a3d10900 *8d7600043e060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9f0fe1008894df4bed4d1110883c5f0e967d109008d7600043e060800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b940ff1008894df4bed4d1110883c5f0e92b *d109008d7600043e060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b948ff1008894df4bed4d1110883c5f0e9efd009008d7600043e06080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974ff1008894df4bed4d1110883c5 *f0e9b3d009008d7600043e060800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9a0ff1008894df4bed4d1110883c5f0e977d009008d7600043e06080000020018 *0007008d45f83b4354720b81c7000100003b7b5c760ac7436c40000000ff63f8c78704ffffff08 *5c100856e867be090083c4048d8704ffffff894604c706245b1008c745f8d46d10088d8704ffff *ff8945fcc78710ffffffdc610708c78714fffffffcd11108c78718ffffff1c3e0608c78724ffff *ff80180508c78728ffffff68b21108c7872cffffff583e0608c78738ffffff7cdc0b088d872cff *ffff89873cffffffc78740ffffff00d21108c78744ffffffe0180508c78748ffffff00d211088d *8738ffffff89874cffffff8d8724ffffff898750ffffff8d8718ffffff898754ffffffc78758ff *ffff7cdc0b088d8744ffffff89875cffffffc78760ffffff00d21108c78764ffffff943e0608c7 *8770ffffff80180508c78774ffffff64b21108c78778ffffffd03e0608c747847cdc0b088d8778 *ffffff894788c7478c00d21108c74790e0180508c7479400d211088d47848947988d8770ffffff *89479c8d8764ffffff8947a0c747a47cdc0b088d47908947a88d8758ffffff8947acc747b07cdc *0b08c747b404ab11088d47a48947b8c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747c80c *3f0608c747d4483f0608c747e0843f0608c747ecd85f07088d47e08947f08d47d48947f48d47c8 *8947f88d47bc8947fc8d8710ffffff89078d77ec83c5f8e9272c0a008d7600d4d11108ccaa1108 *04ab1108b041060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9acff1008894df4bed4d1110883c5f0e933ce09008d7600b041060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9dcff1008894df4bed4d1110883c5f0e9 *f7cd09008d7600b041060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b908001108894df4bed4d1110883c5f0e9bbcd09008d7600b041060800000200180007 *008d45f83b4354720883c7603b7b5c760ac7436c18000000ff63f8c747a4085c100856e8b1bb09 *0083c4048d47a4894604c706245b1008c745f8d46d10088d47a48945fcc747b07cdc0b08c747b4 *04ab1108c747b800d21108c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747c8c8410608c7 *47d404420608c747e040420608c747ecd85f07088d47e08947f08d47d48947f48d47c88947f88d *47bc8947fcc70700b211088d77ec83c5f8e9a72a0a008d7600e4d11108d4d11108d8d51108d0d5 *110848a21108dcd2110848d11108a8d511083843060801000100130001008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8246010088b4e04894f *fc8d57f88955f4bed8d5110883c5f0e968ce09004843060801000100130001008d45f43b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9a5e6ffff9030430608020000001500 *41008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc7 *47ecac4306088b46088947f0c747f8b06010088b46048947fc8d47ec8945f48d47f88945f0bee4 *d1110883c5ece9e1d10900903043060801000100130001008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec7cdc0b08c747f0280b1208c747f400 *d21108c747f80c5f10088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece975d1 *0900903443060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b914001108894df4bed4d1110883c5f0e94fcb09008d76003043060801000100130003008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec404406 *088b46048947f0c747f8ac4406088d47ec8945f48d47f88945f0bee4d1110883c5ece9dbd00900 *8d76003043060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ece84406088b46048947f0c747f80c5f10088b46048947fc8d *47ec8945f48d47f88945f0bee4d1110883c5ece975d00900903443060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c001108894df4bed4d1110883c5f0e9 *4fca09008d76003043060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec484506088b46048947f0c747f8ac4506088d47ec *8945f48d47f88945f0bee4d1110883c5ece9dbcf09008d76003043060802000000150003008d45 *ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e845 *06088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece982cf090089f634430608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b940001108894d *f4bed4d1110883c5f0e95bc909008d76003043060802000000150003008d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec484606088b46048947f0 *8b46088947f4c747f8a04606088d47ec8945f48d47f88945f0bee4d1110883c5ece9e1ce090090 *3043060803000000120053008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ecdc4306088b46088947f08b460c8947f4c747f8dc4606088b460489 *47fc8b460889078d47ec8945f48d47f88945f0be48a2110883c5ece972ce090089f63043060803 *00000012005b008d45f03b4354720883c7103b7b5c760ac7436c04000000ff63f8c745f8d46d10 *088975fcc747f4404706088b46048947f88b46088947fc8b460c89078d47f48945f4bed0d51108 *83c5f0e909ca0900903043060804000100030000000b005f008d45f83b4354720883c71c3b7b5c *760ac7436c07000000ff63fcc747e85c4306088b46048947ecc747f4b04706088b45008947f88b *46048947fc8b460889078d47e88945008d47f48945fc8b760c83c5f8e9aecd090089f630430608 *020000002400df0083c7103b7b5c760ac7436c04000000ff63f8c747f4104806088b45048947f8 *8b45088947fc8b460889078d47f4894508c74504a8d511088b7604e961cd090090304306080b00 *0200000000001100ff008d45fc3b43547308bea4ab1108ff63fcbedcd21108c745fc7448060883 *c5fcff268d760090d01108dcd21108e848060800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e831b5090083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f4dcd21108be90d0110883c5f0e9b5c80900908cd0 *1108dcd211085449060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e8c5b4090083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f4dcd21108be8cd0110883c5f0e949c809009084d01108dcd21108c04906 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e859b4090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f4dcd21108be84d0110883c5f0e9ddc7090090e4d1110854d21108d4d1110844d11108d0d51108 *88a21108dcd2110848d11108a4ab1108b8aa1108b0d51108acab1108484a060801000100130001 *008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9e9dfffff902c4a *060802000000150081008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8 *d46d10088975fcc747ec684a06088b46088947f0c747f8b06010088b46048947fc8d47ec8945f4 *8d47f88945f0bee4d1110883c5ece925cb0900902c4a0608030000001200a1008d45e83b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8984a06088b4604 *8947fc8b460889078b460c8945f48d47f88945f0c745eca4a21108be88a2110883c5e8e992cf09 *0089f601000100130000008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483 *c5f4e95ddcffff908b750883c50cff26344a060800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b948001108894df4bed4d1110883c5f0e967c409008d7600304a *060800000000240007008b068b48fcc1e91083f90f75088b760483c504ff2683c70c3b7b5c760a *c7436c03000000ff63f8c747f8944b06088d57f8895500c745fc54d21108be44d1110883c5f8e9 *fcc90900304a060801000100130007008d45ec3b43547303ff63f8c745f8d46d10088975fc8b76 *04c745f4d04b060883c5f4ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec244c06088b *46048947f0c747f88c6b10088b45048947fc8b460889078d47ec8945088d47f8894504be44d111 *08e985c9090090484c0608804b0608304a06080200000025000700304a06080b00020000000100 *0b0007008d45fc3b43547303ff63fc8b4d0089750089cec745fca44c060883c5fcff2690304a06 *0801000100130007008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fcb44c0608c745f4d81112088b4e04894df08d77fc83c5f0eb94304a060844 *0100002400070083c7283b7b5c760ac7436c0a000000ff63f8c747dc5c4b06088b450c8947e0c7 *47e8e04c06088b450c8947ecc747f4fcbb0b088d47e88947f88d47dc8947fc8b450489078d47f4 *8945108b760c83c50ce987c409008d7600bedcd21108c745002c4d0608ff2689f6544a06080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4fcd21108beb0d51108 *83c5f0e93fc409008d76004c4a060802000000150001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e08894df48b56048955f083c5f0e9c3faffff8d76004c4a060843000000240005 *0083c7183b7b5c760ac7436c06000000ff63f8c747eca04d0608c747f8d84d06088b45048947fc *8b450c89078d47ec89450c8d47f88945088b760883c504e9c2c7090089f6bedcd21108c7450410 *4e060883c504ff268d7600544e0608844d0608304a0608040000002500a7028b450c8945fcc745 *007c4e060883c5fce923d8ffff8d7600544a060800000200120001008d45f03b4354720883c708 *3b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc14e90b08c707e01112088d *4ffc894df4beb0d5110883c5f0e924c309003c4a060801000100130081008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f0d0d51108beacab110883c5ece9f5c6090090 *3c4a0608020000001500c1008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747eca04e0608c747f8f04e06088b46048947fc8d47ec8945f48d47f889 *45f08b760883c5ece999c6090090344a060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b95c001108894df4bed4d1110883c5f0e973c009008d7600344a0608 *00000200120005008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8884f06088d4ff8894df4bed0d5110883c5f0e906c2090089f6344a06080100 *00002400050383c7183b7b5c760ac7436c06000000ff63f8c747ec2c4f06088b45048947f08b46 *088947f4c747f8c44f06088d47ec8945048d47f88945008b760883c5fce9c1c5090090897510be *dcd21108c7450c1050060883c50cff26545006087c4e0608304a0608040000002500af07304a06 *08030000002400af078b460c8945008b7610c745fc7c50060883c5fcff268d76002c4a06081600 *0300000000001100ff0f8d45f43b4354720883c71c3b7b5c760fbedcab1108c7436c07000000ff *63fcc747e8fc4a06088b45008947ec8b45088947f08b45048947f4c747f80c5f10088d47e88947 *fc8d47f88945048d77e8c745fc8850060883c5fcff2689f624ab1108dcab11080c5106080b0002 *0000000000110003008d45fc3b43547308bee4ab1108ff63fcc745fc24ab110883c5fce96dffff *ff9044ab1108dcab1108445106080b00020000000000110003008d45fc3b43547308beecab1108 *ff63fcc745fc44ab110883c5fce935ffffff9034ab1108dcab11087c5106080b00020000000000 *110003008d45fc3b43547308bef4ab1108ff63fcc745fc34ab110883c5fce9fdfeffff90dcaa11 *08dcab1108b45106080b00020000000000110003008d45fc3b43547308befcab1108ff63fcc745 *fcdcaa110883c5fce9c5feffff9074ab1108dcab1108ec5106080b00020000000000110003008d *45fc3b43547308be04ac1108ff63fcc745fc74ab110883c5fce98dfeffff9094ab1108dcab1108 *245206080b00020000000000110003008d45fc3b43547308be0cac1108ff63fcc745fc94ab1108 *83c5fce955feffff90e4d1110854d21108d4d1110844d1110858d31108d0d5110888a21108dcd2 *110848d11108a4ab1108b8aa110854ab1108b0d51108acab1108ccab11088b750883c50cff2664 *52060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9680011 *08894df4bed4d1110883c5f0e94fbd09008d7600897500be54d2110883c5fce91cbf0900dc5206 *08dc5206086052060800000000250001006052060802000000240007008b068b40fcc1e81083f8 *0b0f8cee00000083f8100f8fe5000000b91cac110883c0f5ff24818d760083c70c3b7b5c760ac7 *436c03000000ff63f8c747f8e4bb0b08c747fc04d211088b450489078d77f883c50ce9701a0a00 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b08c747fcfcd111088b450489078d77 *f883c50ce9401a0a00b87c001108894504bed4d11108c7450800530608e97bbc090083c70c3b7b *5c760ac7436c03000000ff63f8c747f8e4bb0b088b45088947fc8b460489078d77f883c50ce9f8 *190a0083c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b45088947fc8b45048907 *8d77f883c50ce9c9190a0083c70c3b7b5c760ac7436c03000000ff63f8c747f8ac5206088d47f8 *894508c7450454d21108be44d11108e9d9c10900906052060803000000120007008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e0c894df08b56088955f48b7604c745ec0c53060883c5 *ecff2660520608030000002400070083c71c3b7b5c760ac7436c07000000ff63f8c747e8485406 *088b45048947ec8b46048947f08b46088947f4c747f88c6b10088b45088947fc8b450c89078d47 *e889450c8d47f8894508be44d1110883c504e93ac1090089f68b46048945008b4d088b56088955 *0889cec745fc8454060883c5fcff268d7600dc5406089852060860520608020000002500070060 *5206080b000200000001000b0007008d45f83b43547303ff63fc8b4d0089750089cec745fc1055 *060883c5fcff26907c52060801000100130001008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df483c5f4e905d5ffff9000000000240000008b761083c504ff26885206080000 *0200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbe54ab1108c745f478550608 *83c5f4ff2689f65c52060801000100130001098d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec4c5506088b46048947f0c747f88c5506088d47ec *8945f48d47f88945f0bee4d1110883c5ece903c009008d76005c52060802000000150041098d45 *e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c055 *06088b46048947fc8b46088945f48d47f88945f0c745eca4a21108be88a2110883c5e8e973c409 *008d760001000100130000008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *83c5f4e93dd1ffff9005000000120000008d45f03b4354720883c72c3b7b5c760ac7436c0b0000 *00ff63f8c745f8d46d10088975fcc747d87c5606088b46088947dcc747e4c86b10088b46048947 *e88b46088947ec8b460c8947f0c747f4fcbb0b088d47e48947f88d47d88947fc8b461089078d47 *f48945f48b761483c5f0e9edba090090897500be54d2110883c5fce9dcba09001c5706081c5706 *086052060800000000250001006052060800000200120003008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8d7600b9b8001108894df0bed4d11108c745f44057060883c5ece9a8b8090000 *000000240000008b068b40fcc1e81083f80e750ebe04d2110883c5048b4500ff60ecbefcd11108 *83c5048b4500ff60f08d760004000100000001000b0000008b7500c7450088570608ff266c5206 *0801000100130001008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fcc05706088b4e04894df48d57fc8955f0be58d3110883c5ece9f8bd090060 *5206080100010013000b208d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec4c570608c747f8d85706088b46048947fc8d47ec8945f48d47f88945 *f0beccab110883c5ece99bbd09008d7600605206080502000024000b2083c7243b7b5c760ac743 *6c09000000ff63f8c747e0a85606088b45108947e48b45088947e88b450c8947ec8b45048947f0 *8b460c8947f4c747f8285806088b45088947fc8d47e08945148d47f88945108b760883c50ce931 *bd090090bedcd21108c7450088580608ff2689f68c52060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fcc745f4fcd21108beb0d5110883c5f0e9dfb809008d76008052 *060801000100130005008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745 *f054ab110883c5f0e962efffff89f6805206080100000024000d0083c7183b7b5c760ac7436c06 *000000ff63f8c747ec00590608c747f8385906088b45048947fc8d4fec894d048d57f88955008b *760883c5fce967bc09008d7600bedcd21108c745107059060883c510ff268d7600b0590608e458 *0608605206080500000025004b2d8b45088945fcc74500d859060883c5fce9c7ccffff8d76008c *52060800000200120001008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745 *f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e9c8b709 *007052060801000100130001018d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4c745f0d0d51108beacab110883c5ece999bb0900907052060802000000150081018d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecfc590608c7 *47f84c5a06088b46048947fc8d47ec8945f48d47f88945f08b760883c5ece93dbb090090645206 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f400110889 *4df4bed4d1110883c5f0e917b509008d76006452060800000200120009008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e45a06088d4ff8894d *f4bed0d5110883c5f0e9aab6090089f664520608010000002400090c83c7183b7b5c760ac7436c *06000000ff63f8c747ec885a06088b45048947f08b46088947f4c747f8205b06088d47ec894504 *8d47f88945008b760883c5fce965ba090090897514bedcd21108c745106c5b060883c510ff26b0 *5b0608d8590608605206080500000025005b3f605206080400000024005b3f8b460c8945008b76 *10c745fcd85b060883c5fcff268d76005c52060816000300000000001100ff7f8d45f03b435472 *0883c7203b7b5c760fbe14ac1108c7436c08000000ff63fcc747e420550608c747ec205606088b *45088947f08b45048947f4c747f80c5f10088d47ec8947fc8d47f88945fc8d47e48945048d77ec *c745f8e45b060883c5f8ff268d7600e4d1110854d21108d4d1110844d11108d0d5110888a21108 *dcd2110848d11108a4ab1108b8aa110864ab1108b0d51108acab11088c5c060801000100130001 *008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9a1cdffff900000 *0000240000008b761083c504ff26985c060800000200120001008d45f43b43547303ff63f8c745 *f8d46d10088975fcbe64ab1108c745f4dc5c060883c5f4ff2689f6705c06080100010013008104 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *b05c06088b46048947f0c747f8f05c06088d47ec8945f48d47f88945f0bee4d1110883c5ece99f *b809008d7600705c0608020000001500a1048d45e83b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8245d06088b46048947fc8b46088945f48d47f88945 *f0c745eca4a21108be88a2110883c5e8e90fbd09008d760001000100130000008d45f43b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9d9c9ffff908b750883c50cff26785c *060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b900011108 *894df4bed4d1110883c5f0e9e3b109008d7600745c060802000000240007008b068b40fcc1e810 *83f80f7d4583f80e0f85a400000083c7143b7b5c760ac7436c05000000ff63f8c747f094b90b08 *8b46048947f4c747f8e4bb0b088d47f08947fc8b450489078d77f883c50ce92e0f0a0083f8107d *2f83c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b45088947fc8b460489078d77 *f883c50ce9fa0e0a0083f810752f83c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b08 *8b45088947fc8b450489078d77f883c50ce9c60e0a0083c70c3b7b5c760ac7436c03000000ff63 *f8c747f8185e06088d47f8894508c7450454d21108be44d11108e9d6b6090089f6745c06080300 *0000120007008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0c894df08b56088955f4 *8b7604c745ec545e060883c5ecff26745c0608030000002400070083c71c3b7b5c760ac7436c07 *000000ff63f8c747e84c5f06088b45048947ec8b46048947f08b46088947f4c747f88c6b10088b *45088947fc8b450c89078d47e889450c8d47f8894508be44d1110883c504e936b6090089f68b46 *048945008b4d088b560889550889cec745fc885f060883c5fcff268d7600e05f0608045e060874 *5c06080200000025000700745c06080b000200000001000b0007008d45f83b43547303ff63fc8b *4d0089750089cec745fc1460060883c5fcff2690745c060802000000150007008d45f03b435472 *0883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc246006088b4e08 *894df48b56048955f08d77fc83c5f0eb9590745c0608040100002400070083c7283b7b5c760ac7 *436c0a000000ff63f8c747dce05d06088b450c8947e0c747e8506006088b450c8947ec8b450889 *47f0c747f4fcbb0b088d47e88947f88d47dc8947fc8b450489078d47f48945108b760c83c50ce9 *11b1090090bedcd21108c745009c600608ff2689f69c5c060800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f4fcd21108beb0d5110883c5f0e9cbb009008d760090 *5c060801000100130005008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c7 *45f064ab110883c5f0e94ee7ffff89f6905c06080100000024000d0083c7183b7b5c760ac7436c *06000000ff63f8c747ec14610608c747f84c6106088b45048947fc8d4fec894d048d57f8895500 *8b760883c5fce953b409008d7600bedcd21108c7450c8461060883c50cff268d7600c4610608f8 *600608745c0608040000002500a7068b450c8945fcc74500ec61060883c5fce9b3c4ffff8d7600 *9c5c060800000200120001008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c7 *45f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e9b4af *0900805c060801000100130001018d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4c745f0d0d51108beacab110883c5ece985b3090090805c060802000000150081018d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec10620608 *c747f8606206088b46048947fc8d47ec8945f48d47f88945f08b760883c5ece929b3090090785c *060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b914011108 *894df4bed4d1110883c5f0e903ad09008d7600785c060800000200120005008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f86206088d4ff889 *4df4bed0d5110883c5f0e996ae090089f6785c0608010000002400050683c7183b7b5c760ac743 *6c06000000ff63f8c747ec9c6206088b45048947f08b46088947f4c747f8346306088d47ec8945 *048d47f88945008b760883c5fce951b2090090897510bedcd21108c7450c8063060883c50cff26 *c4630608ec610608745c0608040000002500af0f745c0608030000002400af0f8b460c8945008b *7610c745fcec63060883c5fcff268d7600705c060816000300000000001100ff1f8d45f43b4354 *720883c7183b7b5c760fbe34ac1108c7436c06000000ff63fcc747ec845d06088b45088947f08b *45048947f4c747f80c5f10088d47ec8947fc8d47f88945048d77ecc745fcf863060883c5fcff26 *e4d1110854d21108d4d1110844d11108d0d5110888a21108dcd2110848d11108a4ab1108b8aa11 *0884ab1108b0d51108acab11089064060801000100130001008d45f43b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df483c5f4e99dc5ffff9000000000240000008b761083c504ff269c *64060800000200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbe84ab1108c745 *f4e064060883c5f4ff2689f67464060801000100130081048d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb46406088b46048947f0c747f8f464 *06088d47ec8945f48d47f88945f0bee4d1110883c5ece99bb009008d7600746406080200000015 *00a1048d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8286506088b46048947fc8b46088945f48d47f88945f0c745eca4a21108be88a2110883c5 *e8e90bb509008d760001000100130000008d45f43b43547303ff63f8c745f8d46d10088975fc8b *4e04894df483c5f4e9d5c1ffff908b750883c50cff267c64060800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b920011108894df4bed4d1110883c5f0e9dfa909 *008d76007864060802000000240007008b068b40fcc1e81083f80f7d7783f80c7d3983f80b0f85 *d100000083c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b08c747fc04d211088b4504 *89078d77f883c50ce931070a0083f80c0f859800000083c70c3b7b5c760ac7436c03000000ff63 *f8c747f8e4bb0b08c747fcfcd111088b450489078d77f883c50ce9f8060a0083f8107d2f83c70c *3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b45088947fc8b460489078d77f883c50c *e9c4060a0083f810752f83c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b450889 *47fc8b450489078d77f883c50ce990060a0083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *1c6606088d47f8894508c7450454d21108be44d11108e9a0ae0900786406080300000012000700 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0c894df08b56088955f48b7604c745ec *5866060883c5ecff2678640608030000002400070083c71c3b7b5c760ac7436c07000000ff63f8 *c747e8806706088b45048947ec8b46048947f08b46088947f4c747f88c6b10088b45088947fc8b *450c89078d47e889450c8d47f8894508be44d1110883c504e902ae090089f68b46048945008b4d *088b560889550889cec745fcbc67060883c5fcff268d7600146806080866060878640608020000 *0025000700786406080b000200000001000b0007008d45f83b43547303ff63fc8b4d0089750089 *cec745fc4868060883c5fcff26907864060802000000150007008d45f03b4354720883c7083b7b *5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc586806088b4e08894df48b5604 *8955f08d77fc83c5f0eb959078640608040100002400070083c7283b7b5c760ac7436c0a000000 *ff63f8c747dce46506088b450c8947e0c747e8846806088b450c8947ec8b45088947f0c747f4fc *bb0b088d47e88947f88d47dc8947fc8b450489078d47f48945108b760c83c50ce9dda8090090be *dcd21108c74500d0680608ff2689f6a064060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f4fcd21108beb0d5110883c5f0e997a809008d760094640608010001 *00130005008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f084ab1108 *83c5f0e91adfffff89f6946406080100000024000d0083c7183b7b5c760ac7436c06000000ff63 *f8c747ec48690608c747f8806906088b45048947fc8d4fec894d048d57f88955008b760883c5fc *e91fac09008d7600bedcd21108c7450cb869060883c50cff268d7600f86906082c690608786406 *08040000002500a7068b450c8945fcc74500206a060883c5fce97fbcffff8d7600a06406080000 *0200120001008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e980a7090084640608 *01000100130001018d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d0 *d51108beacab110883c5ece951ab0900908464060802000000150081018d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec446a0608c747f8946a06 *088b46048947fc8d47ec8945f48d47f88945f08b760883c5ece9f5aa0900907c64060800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b934011108894df4bed4d1 *110883c5f0e9cfa409008d76007c64060800000200120005008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82c6b06088d4ff8894df4bed0d511 *0883c5f0e962a6090089f67c640608010000002400050683c7183b7b5c760ac7436c06000000ff *63f8c747ecd06a06088b45048947f08b46088947f4c747f8686b06088d47ec8945048d47f88945 *008b760883c5fce91daa090090897510bedcd21108c7450cb46b060883c50cff26f86b0608206a *060878640608040000002500af0f78640608030000002400af0f8b460c8945008b7610c745fc20 *6c060883c5fcff268d76007464060816000300000000001100ff1f8d45f43b4354720883c7183b *7b5c760fbe3cac1108c7436c06000000ff63fcc747ec886506088b45088947f08b45048947f4c7 *47f80c5f10088d47ec8947fc8d47f88945048d77ecc745fc2c6c060883c5fcff26bcd311080000 *0000240000008b760883c504ff26a86c060800000200180001008d45f43b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e86591090083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcbebcd31108c745f4b46c060883c5f4ff2644ac1108000000 *00240000008b7604e96c9a09001c6d060800000200180001008d45f43b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e8f190090083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcbe44ac1108c745f4286d060883c5f4ff26bcd3110800000000 *240000008b760483c504ff26906d060800000200180001008d45f43b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e87d90090083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcbebcd31108c745f49c6d060883c5f4ff2664ac11080000000024 *0000008b7608e984990900046e060800000200180001008d45f43b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e80990090083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcbe64ac1108c745f4106e060883c5f4ff26d4a41108000000002400 *00008b760ce910990900786e060800000200180001008d45f43b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8958f090083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcbed4a41108c745f4846e060883c5f4ff26f4d41108d8d41108ec6e06 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e82d8f090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f4f4d41108bed8d4110883c5f0e9b1a20900901cd5110894ac1108586f06080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c18e0900 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f494ac1108be1cd511 *0883c5f0e945a209009094ac110800000000240000008b7604e9c4970900c46f06080000020018 *0001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e849 *8e090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe94ac1108c745f4 *d06f060883c5f4ff2690d1110844d311083870060800000200180003008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8e18d090083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fcc745f490d11108be44d3110883c5f0e965a1090090 *90d1110800000000240000008b7614e9e4960900a470060800000200180001008d45f43b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8698d090083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcbe90d11108c745f4b070060883c5f4ff2684 *d411084cd411081871060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8018d090083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f44cd41108be84d4110883c5f0e985a0090090e4ac1108000000002400 *00008b760ce9049609008471060800000200180001008d45f43b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8898c090083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcbee4ac1108c745f49071060883c5f4ff26ccd1110880d11108f87106 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8218c090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f480d11108beccd1110883c5f0e9a59f090090dcd0110804ad1108647206080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b58b0900 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f404ad1108bedcd011 *0883c5f0e9399f09009004ad110800000000240000008b7608e9b8940900d07206080000020018 *0001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83d *8b090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe04ad1108c745f4 *dc72060883c5f4ff26c4d11108d4d1110818d4110828d41108a8d6110880d6110888d611088cd6 *1108f4ac11084873060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b940011108894df4bed4d1110883c5f0e9879c09008d7600487306084200000024000100 *83c70c3b7b5c761ec74500b0730608c7436c03000000b8ff00000083f000894320e9dac90900c7 *47f8747306088d4ff8894d088b750483c504e91a9e090089f64873060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b98c011108894df4bed4d1110883c5f0e9 *ff9b09008d760083c504e97cffffff04000100010000000c0000008d45fc3b4354720883c7083b *7b5c760ac7436c02000000ff63fcc747fc746207088b4d00890f8d57fc8955008b760483c5fce9 *919d0900906073060800000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc7 *45f4f4ac1108be8cd6110883c5f0e95b9d09008d760083c7143b7b5c760ac7436c05000000ff63 *f8c747f0407406088b450c8947f4c747f8847406088d4ff0894d0c8d57f88955088b750483c504 *e927a109008d7600b07406082c74060848730608030000002500c10083c70c3b7b5c760ac7436c *03000000ff63f8c747f8fc7306088b46048945fc8d4ff8894df8bec4d11108c745000475060883 *c5f4e9d7a009008d760083c504e968feffff407506084075060840750608407506080475060840 *75060840750608407506084473060803000000250083014473060804000100030000000b008301 *8d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f47475 *060883c5f4ff2689f6447306080000000024008b0183c7103b7b5c760ac7436c04000000ff63f8 *c747f4847506088b46108947f88b460c8947fc8b460489078d47f4894500c745fc28d411088b76 *0483c5f8e912a0090089f6447306080000020012009b018d45ec3b43547303ff63f8c745f8d46d *10088975fcbea8d61108c745f4c075060883c5f4ff2689f644730608000002001200db018d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8107606 *088d4ff8894df4c745f028121208be88d6110883c5ece98b9f09008d76000000000024000000c7 *4500b4b111088b760c83c5fce9629b090089f65473060800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fcbea8d61108c745f49476060883c5f4ff2689f648730608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b99c011108894df4bed4 *d1110883c5f0e9139909008d76000000000024000000c74500b0b111088b760c83c5fce9d69a09 *0089f65473060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d6 *1108c745f42077060883c5f4ff2689f64873060800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9a4011108894df4bed4d1110883c5f0e9879809008d76000000 *000024000000c74500acb111088b760c83c5fce94a9a090089f65473060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4ac77060883c5f4ff2689f6 *4873060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a801 *1108894df4bed4d1110883c5f0e9fb9709008d76000000000024000000c74500a8b111088b760c *83c5fce9be99090089f65473060800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fcbea8d61108c745f43878060883c5f4ff2689f64873060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9b0011108894df4bed4d1110883c5f0e96f97 *09008d76000000000024000000c74500a4b111088b760c83c5fce93299090089f6547306080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4c4780608 *83c5f4ff2689f64873060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9b4011108894df4bed4d1110883c5f0e9e39609008d7600487306080000020012000b *008d45f03b4354720b81c7f00000003b7b5c760ac7436c3c000000ff63f8c745f8d46d10088975 *fcc78714ffffffb4760608c78720ffffffe8760608c7872cffffffe4bb0b088d8720ffffff8987 *30ffffff8d8714ffffff898734ffffffc78738ffffff7cdc0b088d872cffffff89873cffffffc7 *8740ffffff00d21108c78744ffffff40770608c78750ffffff74770608c7875cffffffe4bb0b08 *8d8750ffffff898760ffffff8d8744ffffff898764ffffffc78768ffffff7cdc0b088d875cffff *ff89876cffffff8d8738ffffff898770ffffffc78774ffffffcc770608c7478000780608c7478c *e4bb0b088d47808947908d8774ffffff894794c747987cdc0b088d478c89479c8d8768ffffff89 *47a0c747a458780608c747b08c780608c747bce4bb0b088d47b08947c08d47a48947c4c747c87c *dc0b088d47bc8947cc8d47988947d0c747d4e4780608c747e018790608c747ece4bb0b088d47e0 *8947f08d47d48947f4c747f87cdc0b088d47ec8947fc8d47c889078d47f88945f4be18d4110883 *c5f0e92897090044730608000002001800ff018d45ec3b4354720883c7243b7b5c760ac7436c09 *000000ff63f8c747e0085c100856e84183090083c4048d47e0894604c706245b1008c745f8d46d *10088d47e08945fcc747ec44760608c747f8547906088d47ec8945f48d47f88945f0be80d61108 *83c5ece9be9a090089f620d4110834ad1108587b060800000200180003008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c182090083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f434ad1108be20d4110883c5f0e945960900 *90d4d1110890d1110848d11108bcd41108c0d4110894ac1108c47b060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b8011108894df4bed4d1110883c5f0e9 *139409008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8e87b06088d47f8894508be *c0d4110883c504e9c4950900c47b060800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9bc011108894df4bed4d1110883c5f0e9ab9309008d760083c70c3b7b5c *760ac7436c03000000ff63f8c747f8507c06088d47f8894508bec0d4110883c504e95c950900c4 *7b060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c00111 *08894df4bed4d1110883c5f0e9439309008d760083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8b87c06088d47f8894508bec0d4110883c504e9f4940900c47b060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c8011108894df4bed4d1110883c5f0e9 *db9209008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8207d06088d47f8894508be *c0d4110883c504e98c940900c47b060800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9cc011108894df4bed4d1110883c5f0e9739209008d760083c70c3b7b5c *760ac7436c03000000ff63f8c747f8887d06088d47f8894508bec0d4110883c504e92494090001 *00000024000000c74500301212088b760483c5fce91698090089f6d87b06080100010013000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be94ac1108c745f0ec7d0608 *83c5f0ff26c47b060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9d4011108894df4bed4d1110883c5f0e9b79109008d7600c47b060800000200120011008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f844 *7e06088d4ff8894df4bec0d4110883c5f0e94a93090089f6c47b060801000100130035008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec0c7e06 *088b46048947f0c747f8807e06088d47ec8945f48d47f88945f0be48d1110883c5ece9f7960900 *8d760001000000240000008b4504894500c74504301212088b761483c5fce9d4960900c87b0608 *01000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d111 *08c745f0287f060883c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747eccc7e06088b *46048947f0c747f84c7f06088b45048947fc8d47ec8945088d47f8894504bebcd41108e95a9609 *0089f6787f0608b87d0608507d0608e87c0608807c0608187c0608c47b06084200000025003f00 *c47b06080b0002000000000011003f008d45fc3b43547308be54ad1108ff63fc8b7504c745fce0 *7f060883c5fcff269054ad11085cad11081080060800000200180003008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8097e090083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fcc745f45cad1108be54ad110883c5f0e98d91090090 *ccd4110864ad11087c80060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e89d7d090083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f464ad1108beccd4110883c5f0e92191090090d4d11108ccaa1108e8 *80060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e40111 *08894df4bed4d1110883c5f0e9ff8e09008d7600e880060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9fc011108894df4bed4d1110883c5f0e9c38e09008d *7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *04021108894df4bed4d1110883c5f0e9878e09008d7600e880060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b910021108894df4bed4d1110883c5f0e94b8e *09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b928021108894df4bed4d1110883c5f0e90f8e09008d7600e880060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930021108894df4bed4d1110883c5f0 *e9d38d09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b93c021108894df4bed4d1110883c5f0e9978d09008d7600e8800608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954021108894df4bed4d11108 *83c5f0e95b8d09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b95c021108894df4bed4d1110883c5f0e91f8d09008d7600e8800608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b968021108894df4bed4 *d1110883c5f0e9e38c09008d7600e880060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b980021108894df4bed4d1110883c5f0e9a78c09008d7600e8800608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b988021108894d *f4bed4d1110883c5f0e96b8c09008d7600e880060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b994021108894df4bed4d1110883c5f0e92f8c09008d7600e8 *80060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b00211 *08894df4bed4d1110883c5f0e9f38b09008d7600e880060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9b8021108894df4bed4d1110883c5f0e9b78b09008d *7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *c8021108894df4bed4d1110883c5f0e97b8b09008d7600e880060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9f8021108894df4bed4d1110883c5f0e93f8b *09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9fc021108894df4bed4d1110883c5f0e9038b09008d7600e880060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b904031108894df4bed4d1110883c5f0 *e9c78a09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b928031108894df4bed4d1110883c5f0e98b8a09008d7600e8800608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930031108894df4bed4d11108 *83c5f0e94f8a09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b93c031108894df4bed4d1110883c5f0e9138a09008d7600e8800608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b964031108894df4bed4 *d1110883c5f0e9d78909008d7600e880060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b96c031108894df4bed4d1110883c5f0e99b8909008d7600e8800608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97c031108894d *f4bed4d1110883c5f0e95f8909008d7600e880060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b990031108894df4bed4d1110883c5f0e9238909008d7600e8 *80060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9980311 *08894df4bed4d1110883c5f0e9e78809008d7600e880060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9ac031108894df4bed4d1110883c5f0e9ab8809008d *7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *b0031108894df4bed4d1110883c5f0e96f8809008d7600e880060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9c4031108894df4bed4d1110883c5f0e93388 *09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9c8031108894df4bed4d1110883c5f0e9f78709008d7600e880060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f8031108894df4bed4d1110883c5f0 *e9bb8709008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b918041108894df4bed4d1110883c5f0e97f8709008d7600e8800608000002001800 *03008d45f83b4354720b81c7440400003b7b5c760ac7436c11010000ff63f8c787c0fbffff085c *100856e86f75090083c4048d87c0fbffff894604c706245b1008c745f8d46d10088d87c0fbffff *8945fcc787ccfbffff58610708c787d0fbffff84ad1108c787d4fbfffffc800608c787e0fbffff *38810608c787ecfbffffa0180508c787f0fbffff60b211088d87e0fbffff8987f4fbffffc787f8 *fbffff74810608c78704fcffff7cdc0b088d87f8fbffff898708fcffffc7870cfcffff00d21108 *c78710fcffffe0180508c78714fcffff00d211088d8704fcffff898718fcffff8d87ecfbffff89 *871cfcffff8d87d4fbffff898720fcffffc78724fcffff7cdc0b088d8710fcffff898728fcffff *c7872cfcffff00d21108c78730fcffffb0810608c7873cfcffffec810608c78748fcffffa01805 *08c7874cfcffff5cb211088d873cfcffff898750fcffffc78754fcffff28820608c78760fcffff *7cdc0b088d8754fcffff898764fcffffc78768fcffff00d21108c7876cfcffffe0180508c78770 *fcffff00d211088d8760fcffff898774fcffff8d8748fcffff898778fcffff8d8730fcffff8987 *7cfcffffc78780fcffff7cdc0b088d876cfcffff898784fcffff8d8724fcffff898788fcffffc7 *878cfcffff64820608c78798fcffffa0820608c787a4fcffffa0180508c787a8fcffff58b21108 *8d8798fcffff8987acfcffffc787b0fcffffdc820608c787bcfcffff7cdc0b088d87b0fcffff89 *87c0fcffffc787c4fcffff00d21108c787c8fcffffe0180508c787ccfcffff00d211088d87bcfc *ffff8987d0fcffff8d87a4fcffff8987d4fcffff8d878cfcffff8987d8fcffffc787dcfcffff7c *dc0b088d87c8fcffff8987e0fcffff8d8780fcffff8987e4fcffffc787e8fcffff18830608c787 *f4fcffff54830608c78700fdffffa0180508c78704fdffff54b211088d87f4fcffff898708fdff *ffc7870cfdffff90830608c78718fdffff7cdc0b088d870cfdffff89871cfdffffc78720fdffff *00d21108c78724fdffffe0180508c78728fdffff00d211088d8718fdffff89872cfdffff8d8700 *fdffff898730fdffff8d87e8fcffff898734fdffffc78738fdffff7cdc0b088d8724fdffff8987 *3cfdffff8d87dcfcffff898740fdffffc78744fdffffcc830608c78750fdffff08840608c7875c *fdffffa0180508c78760fdffff50b211088d8750fdffff898764fdffffc78768fdffff44840608 *c78774fdffff7cdc0b088d8768fdffff898778fdffffc7877cfdffff00d21108c78780fdffffe0 *180508c78784fdffff00d211088d8774fdffff898788fdffff8d875cfdffff89878cfdffff8d87 *44fdffff898790fdffffc78794fdffff7cdc0b088d8780fdffff898798fdffff8d8738fdffff89 *879cfdffffc787a0fdffff80840608c787acfdffffbc840608c787b8fdffffa0180508c787bcfd *ffff4cb211088d87acfdffff8987c0fdffffc787c4fdfffff8840608c787d0fdffff7cdc0b088d *87c4fdffff8987d4fdffffc787d8fdffff00d21108c787dcfdffffe0180508c787e0fdffff00d2 *11088d87d0fdffff8987e4fdffff8d87b8fdffff8987e8fdffff8d87a0fdffff8987ecfdffffc7 *87f0fdffff7cdc0b088d87dcfdffff8987f4fdffff8d8794fdffff8987f8fdffffc787fcfdffff *34850608c78708feffff70850608c78714feffffa0180508c78718feffff48b211088d8708feff *ff89871cfeffffc78720feffffac850608c7872cfeffff7cdc0b088d8720feffff898730feffff *c78734feffff00d21108c78738feffffe0180508c7873cfeffff00d211088d872cfeffff898740 *feffff8d8714feffff898744feffff8d87fcfdffff898748feffffc7874cfeffff7cdc0b088d87 *38feffff898750feffff8d87f0fdffff898754feffffc78758feffffe8850608c78764feffff24 *860608c78770feffffa0180508c78774feffff44b211088d8764feffff898778feffffc7877cfe *ffff60860608c78788feffff7cdc0b088d877cfeffff89878cfeffffc78790feffff00d21108c7 *8794feffff7cdc0b08c78798feffff100d1208c7879cfeffff00d21108c787a0feffffe0180508 *8d8794feffff8987a4feffff8d8788feffff8987a8feffff8d8770feffff8987acfeffff8d8758 *feffff8987b0feffffc787b4feffff7cdc0b088d87a0feffff8987b8feffff8d874cfeffff8987 *bcfeffffc787c0feffff9c860608c787ccfeffff80180508c787d0feffff40b21108c787d4feff *ffd8860608c787e0feffff7cdc0b088d87d4feffff8987e4feffffc787e8feffff00d21108c787 *ecfeffffe0180508c787f0feffff00d211088d87e0feffff8987f4feffff8d87ccfeffff8987f8 *feffff8d87c0feffff8987fcfeffffc78700ffffff7cdc0b088d87ecfeffff898704ffffff8d87 *b4feffff898708ffffffc7870cffffff14870608c78718ffffff80180508c7871cffffff3cb211 *08c78720ffffff50870608c7872cffffff7cdc0b088d8720ffffff898730ffffffc78734ffffff *00d21108c78738ffffff7cdc0b08c7873cffffffc80c1208c78740ffffff00d21108c78744ffff *ffe01805088d8738ffffff898748ffffff8d872cffffff89874cffffff8d8718ffffff898750ff *ffff8d870cffffff898754ffffffc78758ffffff7cdc0b088d8744ffffff89875cffffff8d8700 *ffffff898760ffffffc78764ffffff8c870608c78770ffffff80180508c78774ffffff38b21108 *c78778ffffffc8870608c747847cdc0b088d8778ffffff894788c7478c00d21108c747907cdc0b *08c74794900c1208c7479800d21108c7479ce01805088d47908947a08d47848947a48d8770ffff *ff8947a88d8764ffffff8947acc747b07cdc0b088d479c8947b48d8758ffffff8947b8c747bc7c *dc0b08c747c0ccaa11088d47b08947c4c747c804880608c747d440880608c747e07c880608c747 *ecd85f07088d47e08947f08d47d48947f48d47c88947f88d47bc8947fc8d87ccfbffff89078d77 *ec83c5f8e98ddc090090b0ad110824ab110834ab110844ab1108dcaa110854ab110864ab110874 *ab110884ab110894ab110848910608000002001800ff038d45f83b4354720b81c7840000003b7b *5c760ac7436c21000000ff63f8c74780085c100856e8ae6c090083c4048d4780894604c706245b *1008c745f8d46d10088d47808945fcc7478c7cdc0b08c7479094ab1108c7479400d21108c74798 *7cdc0b08c7479c84ab11088d478c8947a0c747a47cdc0b08c747a844ab11088d47988947acc747 *b07cdc0b08c747b434ab11088d47a48947b8c747bc7cdc0b08c747c074ab11088d47b08947c4c7 *47c87cdc0b08c747cc64ab11088d47bc8947d0c747d47cdc0b08c747d854ab11088d47c88947dc *c747e07cdc0b08c747e4dcaa11088d47d48947e8c747ec7cdc0b08c747f024ab11088d47e08947 *f4c747f87cdc0b08c747fcb0ad11088d47ec89078d77f883c5f8ff25c06d100889f6e4d11108d4 *d1110844d1110888d3110884d31108d8d51108d0d5110848a21108dcd2110814ab1108c0ad1108 *a8d51108bcd31108bcab1108c4ac1108be00d2110883c5088b4500ff60f089f6a4920608010001 *00130001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f80c5f10088b4e04894ffc8d57f88955f4be88d3110883c5f0e9d47e090083c7243b7b *5c760ac7436c09000000ff63f8c747e08c6b10088b45048947e48b46088947e8c747ecf0920608 *8b46048947f0c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5088b4500ff60ec349306 *08d4920608a49206080100000025000100a492060804000100000001000b0001008d45fc3b4354 *7303ff63fc8b4d0089750089cec745fc9893060883c5fcff2690a492060800000200120081008d *45f43b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fca8 *930608c745f4c0ad11088d77fc83c5f4eb9a89f6a492060800000200120081088d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d49306088d4ff8 *894df4bec4ac110883c5f0e9ae7d090089f69c92060800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b924041108894df4bed4d1110883c5f0e9937b09008d7600 *9892060801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8689406088d4ff8894df48b56048955f0bee4d1110883c5ece92c81 *09009c92060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *38041108894df4bed4d1110883c5f0e9077b09008d76009892060801000100130003008d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747eca4940608 *8b46048947f0c747f8f49406088d47ec8945f48d47f88945f0bee4d1110883c5ece9938009008d *76009892060801000100130047008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8309506088b4e04894ffc8d57f88955f4c745f0d0d51108be44 *d1110883c5ece93980090090be00d2110883c5108b4500ff60f089f6b092060801000100130001 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8985f10088b4e04894ffc8d57f88955f4bed0d5110883c5f0e9cc7b09009c9206080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b968041108894df4bed4d111 *0883c5f0e9b37909008d76009c92060800000200120011008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8489606088d4ff8894df4bed8d51108 *83c5f0e9467b090089f69c92060802000000150031008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ecf89506088b46048947f0c747f884960608 *8d47ec8945f48d47f88945f08b760883c5ece9f57e090090a492060801000100130001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be88d3110883c5f0e9b47a0900a492 *0608020000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f82c9706088b450489 *47fc8b4d08894d048d57f88955088b760ce9817e090090a492060802000000150001028d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4bebcd31108c745ec6097 *060883c5ecff2689f6a492060802000000150003028d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8a09706088b46048947fc8b46088907c745f4 *580a12088d47f88945f0be84d3110883c5ece9e47d09009892060802000000150019108d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec0c5f1008 *8b46088947f0c747f8e09706088b46048947fc8d47ec89078d47f88945f48d47ec8945f0bee4d1 *110883c5ece97c7d09009892060802000000150039108d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f83c9806088b46048947fc8b460889078d47 *f88945f4bed8d5110883c5f0e91b7909008d7600989206080300000012007b108d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecd09606088b4608 *8947f08b460c8947f4c747f8a49806088b46048947fc8b460889078d47ec8945f48d47f88945f0 *8b760c83c5ece9b87c09009c92060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b970041108894df4bed4d1110883c5f0e9937609008d76009c920608000002 *00120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8689906088d4ff8894df4bed8d5110883c5f0e92678090089f6989206080300000012 *007b108d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fc *c747e8fc9806088b46048947ec8b46088947f08b460c8947f4c747f8a49906088d47e88945f48d *47f88945f08b760c83c5ece9c97b09009083c7283b7b5c760ac7436c0a000000ff63f8c747dc8c *6b10088b45048947e08b46088947e4c747e8f09906088b450c8947ec8b46048947f08b45088947 *f4c747f87cdc0b088d47e88947fc8d47dc89078d77f883c5108b4500ff60ec4c9a0608dc950608 *989206080300000025007b109892060804000100020000000e007b108d45f43b43547303ff63fc *8975f88b46088945fc8b45008b4e04894d0089c6c745f4bc9a060883c5f4ff2690989206080200 *000015007b148d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8cc9a06088b4e04894ffc8b56088917c745f4c0ad11088d77f883c5f4eb838d7600 *989206080200000015007b348d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8049b06088b46048947fc8b460889078d47f88945f4bebcab110883 *c5f0e9677609008d7600989206080200000015007f748d45ec3b4354720883c7243b7b5c760ac7 *436c09000000ff63f8c745f8d46d10088975fcc747e01c940608c747ec909506088b46048947f0 *c747f8589b06088d47e08947fc8b460889078d47ec8945f48d47f88945f08b760883c5ece9037a *09008d76009c92060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b974041108894df4bed4d1110883c5f0e9db7309008d76009c92060800000200120021008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f820 *9c06088d4ff8894df4bed0d5110883c5f0e96e75090089f6989206080200000015007f748d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb09b06 *088b46048947f08b46088947f4c747f85c9c06088d47ec8945f48d47f88945f08b760883c5ece9 *177909008d76009c92060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b980041108894df4bed4d1110883c5f0e9ef7209008d76009892060801000100130003 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f80c9d06088d4ff8894df48b56048955f0bee4d1110883c5ece9887809009c9206080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b0041108894df4bed4d111 *0883c5f0e9637209008d76009892060801000100130003008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec489d06088b46048947f0c747f8989d *06088d47ec8945f48d47f88945f0bee4d1110883c5ece9ef7709008d7600989206080100010013 *0083028d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8d49d06088b4e04894ffcc745f414ab11088d57f88955f0be48a2110883c5ece995770900 *9098920608010001001300c3028d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8349e06088b4e04894ffc8d57f88955f4bed0d5110883c5f0e938 *7309009892060804000100010000000c00ff768d45f83b4354720883c7183b7b5c760ac7436c06 *000000ff63fcc747eca89c06088b45008947f08b46048947f4c747f88c9e06088b45008947fc8d *47ec8945008d47f88945fc8b760483c5f8e9e37609008d760098920608000000002400ff7e83c7 *083b7b5c760ac7436c02000000ff63f8c747fce09e06088b460889078d4ffc894d00c745fca8d5 *11088b760483c5f8e99e76090089f698920608000002001800ff7f8d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8a95e090083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcbedcd21108c745f4409f060883c5f4ff26e4d11108d4d1 *110844d1110848d11108d0d5110888a21108dcd2110814ab1108c0ad1108b8aa1108c0d01108b0 *d51108acab110804ad1108d0ad110804a0060800000200120001008d45f03b4354720883c7083b *7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc14e90b08c707e01112088d4f *fc894df4beb0d5110883c5f0e9a4710900e89f060801000100130001018d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4c745f0d0d51108beacab110883c5ece97575090090e8 *9f060802000000150081018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec20a00608c747f870a006088b46048947fc8d47ec8945f48d47f88945 *f08b760883c5ece91975090090dc9f060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9b8041108894df4bed4d1110883c5f0e9f36e09008d7600dc9f060800 *000200120009008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f808a106088d4ff8894df4bed0d5110883c5f0e98670090089f6dc9f0608010000 *002400090c83c7183b7b5c760ac7436c06000000ff63f8c747ecaca006088b45048947f08b4608 *8947f4c747f844a106088d47ec8945048d47f88945008b760883c5fce94174090090dc9f060822 *0000002400290cbedcd21108c7450490a1060883c504ff268d760004a006080000020012000100 *8d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc *14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e9c46f0900dc9f0608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c0041108894df4bed4d11108 *83c5f0e9ab6d09008d7600dc9f06080000020012000b008d45ec3b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f850a206088d4ff8894df4c745f0d0d511 *08be44d1110883c5ece9437309008d7600dc9f06080000000024000b0483c7183b7b5c760ac743 *6c06000000ff63f8c747ec00a20608c747f88ca206088d47ec8945008d4ff8894dfc8b760883c5 *f8e9fd72090090bedcd21108c74504e0a2060883c504ff268d760083c5fce9acfeffff2ca30608 *18a30608dc9f06080100000025002b0c8b7504c7450048a30608ff2602000000240000008b4508 *8b4d04894d088945048b7608e9a47209000ca0060804000100010000000c0001008d45f83b4354 *7303ff63fc8b4e04894dfcbe04ad1108c745f85ca3060883c5f8ff2689f6e49f06080100010013 *0001048d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fc *c747fc80a306088b4e04890fc745f45cb111088d57fc8955f0be48d1110883c5ece91a72090089 *f604a0060800000200120001008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8 *c745f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e9bc *6d0900dc9f060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e0041108894df4bed4d1110883c5f0e9a36b09008d7600d89f060801000100130003008d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f858a406 *088d4ff8894df48b56048955f0bee4d1110883c5ece93c710900dc9f060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f0041108894df4bed4d1110883c5f0 *e9176b09008d7600d89f060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747ec94a406088b46048947f0c747f8e4a406088d47 *ec8945f48d47f88945f0bee4d1110883c5ece9a37009008d7600d89f060801000100130017008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f820 *a506088b4e04894ffc8d57f88955f4c745f0d0d51108be44d1110883c5ece94970090090d89f06 *08420000002400170883c7183b7b5c760ac7436c06000000ff63f8c747ec08a40608c747f880a5 *06088b45048947fc8d4fec894d088d57f88955048b7608e90270090089f6bedcd21108c74504d8 *a5060883c504ff268d7600430000002400000083c7183b7b5c760ac7436c06000000ff63f8c747 *ec3c6110088b450c8947f0c747f8e4bb0b088d47ec8947fc8b450489078d47f889450c8b760c83 *c508e9966b090089f68b460489450cbedcd21108c7450030a60608ff2674a6060814a60608d89f *0608830000002500570883c70c3b7b5c760ac7436c03000000ff63f8c747f8b0a306088b450889 *47fcc745fcc0ad11088d4ff8894df8bec0d01108c745009ca6060883c5f4e9386f090083c504e9 *fcfaffffdca606089ca60608d89f06080300000025005f3d8b46088945fc8b4e04894d008b7504 *c745f8f8a6060883c5f8ff2690f8a6060848a30608d89f06080100000025005f3dd89f06080200 *000024005f3d8b7504c7450428a7060883c504ff2690ebee89f604a0060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f4fcd21108beb0d5110883c5f0e98b6a09 *008d760004a00608000000002400090083c70c3b7b5c760ac7436c03000000ff63f8c747f854a7 *06088d47f8894500c745fcd0ad11088b760883c5f8e9576e09008d7600bedcd21108c745088ca7 *060883c508ff268d7600c0a7060844a70608d89f06080200000025005f7d8b4504894500c74504 *e8a70608e9ba7effff89f683c504e930fffffffca70608e8a70608d89f06080300000025005f7f *d89f06080000000024005f7f8b46108945008b4e08894dfc8b56048955f88b7610c745f418a806 *0883c5f4ff268d7600d89f060804000100000000001100ff7f8d45e83b43547308bee0ad1108ff *63fc8b4d00894dfcc745f814ab1108c745f4a0a21108be88a21108c7450024a8060883c5f0e954 *720900e4d1110854d21108d4d1110844d11108d0d5110888a21108dcd2110848d11108a4ab1108 *b8aa1108b0ad1108b0d51108acab1108aca8060801000100130001008d45f43b43547303ff63f8 *c745f8d46d10088975fc8b4e04894df483c5f4e98181ffff9000000000240000008b761083c504 *ff26b8a8060800000200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbeb0ad11 *08c745f4fca8060883c5f4ff2689f690a8060801000100130081048d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecd0a806088b46048947f0c747 *f810a906088d47ec8945f48d47f88945f0bee4d1110883c5ece97f6c09008d760090a806080200 *00001500a1048d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f844a906088b46048947fc8b46088945f48d47f88945f0c745eca4a21108be88a211 *0883c5e8e9ef7009008d760001000100130000008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df483c5f4e9b97dffff908b750883c50cff2698a8060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b908051108894df4bed4d1110883c5f0e9 *c36509008d7600010000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b *088b45048947d8c747dc406107088b46048947e08b46088947e48b460c8947e88b46108947ec8b *46148947f08b46188947f48b461c8947f88d47d48947fc8b462489078d77dc83c508e9fec20900 *89f6010000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b088b450489 *47d8c747dc406107088b46048947e08b46088947e48b460c8947e88b46108947ec8b46148947f0 *8b46188947f48d47d48947f88b46208947fc8b462489078d77dc83c508e98ec2090089f6010000 *002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b088b45048947d8c747dc *406107088b46048947e08b46088947e48b460c8947e88b46108947ec8b46148947f08d47d48947 *f48b461c8947f88b46208947fc8b462489078d77dc83c508e91ec2090089f60100000024000000 *83c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b088b45048947d8c747dc406107088b *46048947e08b46088947e48b460c8947e88b46108947ec8d47d48947f08b46188947f48b461c89 *47f88b46208947fc8b462489078d77dc83c508e9aec1090089f6010000002400000083c7303b7b *5c760ac7436c0c000000ff63f8c747d494b90b088b45048947d8c747dc406107088b46048947e0 *8b46088947e48b460c8947e88d47d48947ec8b46148947f08b46188947f48b461c8947f88b4620 *8947fc8b462489078d77dc83c508e93ec1090089f6010000002400000083c7303b7b5c760ac743 *6c0c000000ff63f8c747d494b90b088b45048947d8c747dc406107088b46048947e08b46088947 *e48b460c8947e88b46108947ec8b46148947f08b46188947f48b461c8947f88b46208947fc8d47 *d489078d77dc83c508e9cec0090089f6010000002400000083c7303b7b5c760ac7436c0c000000 *ff63f8c747d494b90b088b45048947d8c747dc406107088b46048947e08b46088947e48d47d489 *47e88b46108947ec8b46148947f08b46188947f48b461c8947f88b46208947fc8b462489078d77 *dc83c508e95ec0090089f6010000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747 *d494b90b088b45048947d8c747dc406107088b46048947e08d47d48947e48b460c8947e88b4610 *8947ec8b46148947f08b46188947f48b461c8947f88b46208947fc8b462489078d77dc83c508e9 *eebf090089f6000000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b08 *c747d8acb11108c747dc406107088d47d48947e08b46088947e48b460c8947e88b46108947ec8b *46148947f08b46188947f48b461c8947f88b46208947fc8b462489078d77dc83c504e97dbf0900 *90000000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b08c747d8a8b1 *1108c747dc406107088d47d48947e08b46088947e48b460c8947e88b46108947ec8b46148947f0 *8b46188947f48b461c8947f88b46208947fc8b462489078d77dc83c504e90dbf09009000000000 *2400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b08c747d8a4b11108c747dc *406107088d47d48947e08b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947 *f48b461c8947f88b46208947fc8b462489078d77dc83c504e99dbe09009094a806080100000024 *0007008b068b40fcc1e81085c00f8ce900000083f8100f8fe0000000b9f0ad1108ff24818d7600 *8b7504c74504d0ae060883c504ff268b7504c7450460ae060883c504ff268b7504c74504f0ad06 *0883c504ff268b45048b4e04894d0489c6c7450080ad0608ff268b45048b4e04894d0489c6c745 *0010ad0608ff268b45048b4e04894d0489c6c74500a0ac0608ff268b45048b4e04894d0489c6c7 *450030ac0608ff268b45048b4e04894d0489c6c74500c0ab0608ff268b45048b4e04894d0489c6 *c7450050ab0608ff268b45048b4e04894d0489c6c74500e0aa0608ff268b45048b4e04894d0489 *c6c7450070aa0608ff268b750483c508ff2683c70c3b7b5c760ac7436c03000000ff63f8c747f8 *38aa06088d47f8894504c7450054d21108be44d1110883c5fce9a465090094a806080200000015 *0007008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b7604c745f044af06 *0883c5f0ff2689f683c7183b7b5c760ac7436c06000000ff63f8c747ec7cb006088b46048947f0 *8b45088947f4c747f88c6b10088b45048947fc8b460889078d47ec8945088d47f8894504be44d1 *1108e91f6509008d7600a8b0060824aa060894a80608020000002500070094a806080b00020000 *0001000b0007008d45fc3b43547303ff63fc8b4d0089750089cec745fc0cb1060883c5fcff2690 *94a8060802000000150007008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c7 *45f8d46d10088975fcc747fc1cb106088b4e08894df48b56048955f08d77fc83c5f0eb959094a8 *0608040100002400070083c7283b7b5c760ac7436c0a000000ff63f8c747dc00aa06088b450c89 *47e0c747e848b106088b450c8947ec8b45088947f0c747f4fcbb0b088d47e88947f88d47dc8947 *fc8b450489078d47f48945108b760c83c50ce91960090090bedcd21108c7450094b10608ff2689 *f6bca8060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4fcd2 *1108beb0d5110883c5f0e9d35f09008d7600b0a8060801000100130005008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f0b0ad110883c5f0e95696ffff89f6b0a80608 *0100000024000d0083c7183b7b5c760ac7436c06000000ff63f8c747ec0cb20608c747f844b206 *088b45048947fc8d4fec894d048d57f88955008b760883c5fce95b6309008d7600bedcd21108c7 *450c7cb2060883c50cff268d7600bcb20608f0b1060894a80608040000002500a7068b450c8945 *fcc74500e4b2060883c5fce9bb73ffff8d7600bca8060800000200120001008d45f03b43547208 *83c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc14e90b08c707e011 *12088d4ffc894df4beb0d5110883c5f0e9bc5e0900a0a8060801000100130001018d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d0d51108beacab110883c5ece98d62 *090090a0a8060802000000150081018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec08b30608c747f858b306088b46048947fc8d47ec8945f48d *47f88945f08b760883c5ece9316209009098a8060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b91c051108894df4bed4d1110883c5f0e90b5c09008d760098 *a8060800000200120005008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8f0b306088d4ff8894df4bed0d5110883c5f0e99e5d090089f698a806 *08010000002400050683c7183b7b5c760ac7436c06000000ff63f8c747ec94b306088b45048947 *f08b46088947f4c747f82cb406088d47ec8945048d47f88945008b760883c5fce9596109009089 *7510bedcd21108c7450c78b4060883c50cff26bcb40608e4b2060894a80608040000002500af0f *94a80608030000002400af0f8b460c8945008b7610c745fce4b4060883c5fcff268d760090a806 *0816000300000000001100ff1f8d45f43b4354720883c7183b7b5c760fbee8ad1108c7436c0600 *0000ff63fcc747eca4a906088b45088947f08b45048947f4c747f80c5f10088d47ec8947fc8d47 *f88945048d77ecc745fcf0b4060883c5fcff2640d111086cb50608040001000000000011000100 *8d45fc3b43547308be34ae1108ff63fcbe40d1110883c5fce96b5c09008d760004ad1108be04d2 *110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b45 *00ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be *fcd1110883c5048b4500ff60f089f6f4b50608e4b50608d4b50608c4b50608b4b50608a4b50608 *0000000000000000250000008b7504c7450428b6060883c504ff2690befcd1110883c5048b4500 *ff60f089f6be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6befc *d1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b *4500ff60f089f688b6060878b6060868b6060858b6060848b6060838b606080000000000000000 *250000008b7504c74504bcb6060883c504ff2690befcd1110883c5048b4500ff60f089f6befcd1 *110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b45 *00ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f61c *b706080cb70608fcb60608ecb60608dcb60608ccb606080000000000000000250000008b7504c7 *450450b7060883c504ff2690befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500 *ff60f089f6befcd1110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f6befc *d1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6b0b70608a0b7060890 *b7060880b7060870b7060860b706080000000000000000250000008b7504c74504e4b7060883c5 *04ff2690befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1 *110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be04d2110883c5048b45 *00ff60ec89f6befcd1110883c5048b4500ff60f089f644b8060834b8060824b8060814b8060804 *b80608f4b706080000000000000000250000008b7504c7450478b8060883c504ff2690befcd111 *0883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500 *ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be04 *d2110883c5048b4500ff60ec89f6d8b80608c8b80608b8b80608a8b8060898b8060888b8060800 *00000000000000250000008b7504c745040cb9060883c504ff26900cb9060878b80608e4b70608 *50b70608bcb6060828b6060800000000010000002500000002000000240000008b7504c7450440 *b9060883c504ff269043000000240000008b45048945088b760883c504e9a35c09008d76008b46 *0489450cbe04ad1108c7450060b90608ff2683c504ebbb8d760074b9060888b9060888b9060888 *b9060888b9060888b90608a0b5060803000000250001008b46048945008b7508c745fcb4b90608 *83c5fcff268d7600e977ffffff8d7600b4b90608ccb90608ccb90608ccb90608ccb90608ccb906 *08a0b506080200000025000100a0b506080b00020000000000110001008d45f83b43547308be3c *ae1108ff63fc8b7500c745fcf8b9060883c5fcff269054d1110804ad11082cba06080200000015 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0 *eba689f628ba06080b000200000000001100030083c70c3b7b5c760fbe44ae1108c7436c030000 *00ff63fcc747f83cba06088b45008947fc8b4d04890f8d57f8895504be54d11108e95b5709008d *7600dcd011084cae1108b0ba060800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e86943090083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f44cae1108bedcd0110883c5f0e9ed56090090bcd1110814ad11 *085cae110802000000240000008b45088b4d04894d088945048b7608e9d05a090020bb06080200 *0000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4 *be14ad1108c745ec30bb060883c5ecff2689f602000000240000008b45088b4d04894d08894504 *8b7608e9745a090020bb060802000000150001008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e08894df08b56048955f4be14ad1108c745ec8cbb060883c5ecff2689f6020000002400 *00008b45088b4d04894d088945048b7608e9185a090020bb060802000000150001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be14ad1108c745ece8bb06 *0883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e9bc59090020bb06 *0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be14ad1108c745ec44bc060883c5ecff2689f602000000240000008b45088b4d04894d08 *8945048b7608e96059090020bb060802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be14ad1108c745eca0bc060883c5ecff2689f6020000 *00240000008b45088b4d04894d088945048b7608e90459090020bb060802000000150001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be14ad1108c745ec *fcbc060883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e9a8580900 *20bb060802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df0 *8b56048955f4be14ad1108c745ec58bd060883c5ecff2689f602000000240000008b45088b4d04 *894d088945048b7608e94c58090020bb060802000000150001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df08b56048955f4be14ad1108c745ecb4bd060883c5ecff2689f6 *02000000240000008b45088b4d04894d088945048b7608e9f057090024bb060802000000150001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be5cae1108 *c745ec10be060883c5ecff2689f61cbb060804000000120007008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecd4bd06088b460c8947f08b4610 *8947f4c747f830be06088b46048947fc8b460889078d47ec8945f48d47f88945f0bebcd1110883 *c5ece94257090089f61cbb060806000000120007008d45ec3b4354720883c7203b7b5c760ac743 *6c08000000ff63f8c745f8d46d10088975fcc747e478bd06088b46148947e88b46188947ecc747 *f070be06088b46048947f48b46088947f88b460c8947fc8b461089078d47e48945f48d47f08945 *f0bebcd1110883c5ece9c656090089f61cbb060808000000120007008d45ec3b4354720883c728 *3b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dc1cbd06088b461c8947e08b *46208947e4c747e8e0be06088b46048947ec8b46088947f08b460c8947f48b46108947f88b4614 *8947fc8b461889078d47dc8945f48d47e88945f0bebcd1110883c5ece93e56090089f61cbb0608 *0a000000120007008d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d *10088975fcc747d4c0bc06088b46248947d88b46288947dcc747e05cbf06088b46048947e48b46 *088947e88b460c8947ec8b46108947f08b46148947f48b46188947f88b461c8947fc8b46208907 *8d47d48945f48d47e08945f0bebcd1110883c5ece9aa55090089f61cbb06080c00000012000700 *8d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747cc *64bc06088b462c8947d08b46308947d4c747d8e4bf06088b46048947dc8b46088947e08b460c89 *47e48b46108947e88b46148947ec8b46188947f08b461c8947f48b46208947f88b46248947fc8b *462889078d47cc8945f48d47d88945f0bebcd1110883c5ece90a55090089f61cbb06080e000000 *120007008d45ec3b4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975 *fcc747c408bc06088b46348947c88b46388947ccc747d078c006088b46048947d48b46088947d8 *8b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b4624 *8947f48b46288947f88b462c8947fc8b463089078d47c48945f48d47d08945f0bebcd1110883c5 *ece95e54090089f61cbb060810000000120007008d45ec3b4354720883c7483b7b5c760ac7436c *12000000ff63f8c745f8d46d10088975fcc747bcacbb06088b463c8947c08b46408947c4c747c8 *18c106088b46048947cc8b46088947d08b460c8947d48b46108947d88b46148947dc8b46188947 *e08b461c8947e48b46208947e88b46248947ec8b46288947f08b462c8947f48b46308947f88b46 *348947fc8b463889078d47bc8945f48d47c88945f0bebcd1110883c5ece9a653090089f61cbb06 *08090000002400070083c7503b7b5c760ac7436c14000000ff63f8c747b450bb06088b45048947 *b88b46248947bcc747c0c4c106088b45248947c48b46048947c88b45208947cc8b46088947d08b *451c8947d48b460c8947d88b45188947dc8b46108947e08b45148947e48b46148947e88b451089 *47ec8b46188947f08b450c8947f48b461c8947f88b45088947fc8b462089078d47b48945248d47 *c0894520bebcd1110883c51ce9f45209001cbb060801000000240007008b46248945e48b462089 *45e88b461c8945ec8b46188945f08b46148945f48b46108945f88b460c8945fc8b46088945008b *45048b4e04894d0489c6c745e07cc2060883c5e0ff26901cbb06080b0002000000000011000700 *8d45e03b43547308be6cae1108ff63fc8b7500c745002cc30608ff2654d111086cae1108a4c306 *0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b5604 *8955f083c5f0ebaa89f6a0c306080b000200000000001100030083c70c3b7b5c760fbe74ae1108 *c7436c03000000ff63fcc747f8b4c306088b45008947fc8b4d04890f8d57f8895504be54d11108 *e9e34d09008d7600bcd1110864a6110804ad110804ad110802000000240000008b45088b4d0489 *4d088945048b7608e9c051090030c4060802000000150001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df08b56048955f4be04ad1108c745ec40c4060883c5ecff2689f602 *000000240000008b45088b4d04894d088945048b7608e96451090030c406080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be04ad1108c7 *45ec9cc4060883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e90851 *09002cc4060802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0889 *4df08b56048955f4be64a61108c745ecf8c4060883c5ecff2689f634c406080200000015000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0e987f4 *ffff8d760028c406080400000012000b008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec18c506088b460c8947f08b46108947f4c747f858c506 *088b46048947fc8b460889078d47ec8945f48d47f88945f0bebcd1110883c5ece92250090089f6 *28c406080600000012000f008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c7 *45f8d46d10088975fcc747e4bcc406088b46148947e88b46188947ecc747f090c506088b460489 *47f48b46088947f88b460c8947fc8b461089078d47e48945f48d47f08945f0bebcd1110883c5ec *e9a64f090089f628c406080400000024000f0083c7283b7b5c760ac7436c0a000000ff63f8c747 *dc60c406088b45048947e08b46108947e4c747e800c606088b45108947ec8b46048947f08b450c *8947f48b46088947f88b45088947fc8b460c89078d47dc8945108d47e889450cbebcd1110883c5 *08e9304f090028c406080100000024000f008b46108945f88b460c8945fc8b46088945008b4504 *8b4e04894d0489c6c745f47cc6060883c5f4ff268d760028c406080b0002000000000011000f00 *8d45f43b43547308be8cae1108ff63fc8b7500c74500f0c60608ff2654d111088cae11084cc706 *0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b5604 *8955f083c5f0ebaa89f648c706080b000200000000001100030083c70c3b7b5c760fbe94ae1108 *c7436c03000000ff63fcc747f85cc706088b45008947fc8b4d04890f8d57f8895504be54d11108 *e93b4a09008d760048d41108acae110844d41108acae11083cd41108acae1108d0c70608000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e83936090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4acae11 *08be48d4110883c5f0e9bd49090090d8c7060800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8d535090083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f4acae1108be44d4110883c5f0e95949090090e0c7 *060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e87135090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4acae1108be3cd4110883c5f0e9f548090090c4d11108d4d1110828d41108a8d6110888d611 *0898d6110884ac1108f4ac110844ad110818c9060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b928051108894df4bed4d1110883c5f0e9b74609008d760018 *c90608420000002400010083c70c3b7b5c761ec7450080c90608c7436c03000000b8ff00000083 *f000894320e90a740900c747f844c906088d4ff8894d088b750483c504e94a48090089f618c906 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97405110889 *4df4bed4d1110883c5f0e92f4609008d760083c504e97cffffff18c9060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980051108894df4bed4d1110883c5f0 *e9eb4509008d760018c90608420000002400010083c70c3b7b5c761ec745004cca0608c7436c03 *000000b8ff00000083f000894320e93e730900c747f810ca06088d4ff8894d088b750483c504e9 *7e47090089f683c504ebbb8d760018c9060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9cc051108894df4bed4d1110883c5f0e95b4509008d760018c90608 *420000002400010083c70c3b7b5c761ec74500dcca0608c7436c03000000b8ff00000083f00089 *4320e9ae720900c747f8a0ca06088d4ff8894d088b750483c504e9ee46090089f618c906080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b918061108894df4be *d4d1110883c5f0e9d34409008d760083c504e97cffffff18c9060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b928061108894df4bed4d1110883c5f0e98f44 *09008d760018c90608420000002400010083c70c3b7b5c761ec74500a8cb0608c7436c03000000 *b8ff00000083f000894320e9e2710900c747f86ccb06088d4ff8894d088b750483c504e9224609 *0089f683c504ebbb8d760018c9060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b974061108894df4bed4d1110883c5f0e9ff4309008d760018c90608420000 *002400010083c70c3b7b5c761ec7450038cc0608c7436c03000000b8ff00000083f000894320e9 *52710900c747f8fccb06088d4ff8894d088b750483c504e99245090089f683c508ebbb8d760018 *c9060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c00611 *08894df4bed4d1110883c5f0e96f4309008d760018c90608420000002400010083c70c3b7b5c76 *1ec74500c8cc0608c7436c03000000b8ff00000083f000894320e9c2700900c747f88ccc06088d *4ff8894d088b750483c504e90245090089f618c9060800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b90c071108894df4bed4d1110883c5f0e9e74209008d7600 *83c508e97cffffff18c9060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b91c071108894df4bed4d1110883c5f0e9a34209008d760018c90608420000002400 *010083c70c3b7b5c761ec7450094cd0608c7436c03000000b8ff00000083f000894320e9f66f09 *00c747f858cd06088d4ff8894d088b750483c504e93644090089f683c508ebbb8d760018c90608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b968071108894d *f4bed4d1110883c5f0e9134209008d760018c90608420000002400010083c70c3b7b5c761ec745 *0024ce0608c7436c03000000b8ff00000083f000894320e9666f0900c747f8e8cd06088d4ff889 *4d088b750483c504e9a643090089f683c50cebbb8d760018c9060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9b4071108894df4bed4d1110883c5f0e98341 *09008d760018c90608420000002400010083c70c3b7b5c761ec74500b4ce0608c7436c03000000 *b8ff00000083f000894320e9d66e0900c747f878ce06088d4ff8894d088b750483c504e9164309 *0089f618c9060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b900081108894df4bed4d1110883c5f0e9fb4009008d760083c50ce97cffffff18c90608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910081108894df4bed4 *d1110883c5f0e9b74009008d760018c90608420000002400010083c70c3b7b5c761ec7450080cf *0608c7436c03000000b8ff00000083f000894320e90a6e0900c747f844cf06088d4ff8894d088b *750483c504e94a42090089f683c50cebbb8d760018c9060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b95c081108894df4bed4d1110883c5f0e9274009008d *760018c90608420000002400010083c70c3b7b5c761ec7450010d00608c7436c03000000b8ff00 *000083f000894320e97a6d0900c747f8d4cf06088d4ff8894d088b750483c504e9ba41090089f6 *83c510ebbb8d760018c9060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9a8081108894df4bed4d1110883c5f0e9973f09008d760018c90608420000002400 *010083c70c3b7b5c761ec74500a0d00608c7436c03000000b8ff00000083f000894320e9ea6c09 *00c747f864d006088d4ff8894d088b750483c504e92a41090089f618c906080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f4081108894df4bed4d1110883c5 *f0e90f3f09008d760083c510e97cffffff18c9060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b904091108894df4bed4d1110883c5f0e9cb3e09008d760018 *c90608420000002400010083c70c3b7b5c761ec745006cd10608c7436c03000000b8ff00000083 *f000894320e91e6c0900c747f830d106088d4ff8894d088b750483c504e95e40090089f683c510 *ebbb8d760018c9060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b950091108894df4bed4d1110883c5f0e93b3e09008d760018c90608420000002400010083 *c70c3b7b5c761ec74500fcd10608c7436c03000000b8ff00000083f000894320e98e6b0900c747 *f8c0d106088d4ff8894d088b750483c504e9ce3f090089f683c510ebbb8d760083c7143b7b5c76 *0ac7436c05000000ff63f8c747f00c6207088b45188947f48b45108947f88b450c8947fc8b4508 *89078d47f08945188b750483c514e9833f09008d760083c510e96cffffff88d2060844d2060818 *c90608060000002500010018c9060807000000240001008b460483f87d750f8b7504c74504a4d2 *060883c504ff2683c514e92dffffff908b46088945008b7604c745fcb0d2060883c5fcff268d76 *00d0d206083cd2060818c9060806000000250001008b7604c74500fcd20608ff2683c510e9ecfe *ffff08d3060808d3060808d3060808d3060808d30608fcd2060808d3060808d3060818c9060806 *0000002500010018c9060804000100060000000b0001008d45e43b43547303ff63fc8b46048945 *fc8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e8 *3cd3060883c5e8ff2618c9060804000100060000000b0003008d45f83b4354720883c71c3b7b5c *760ac7436c07000000ff63fcc747e84cd306088b46048947ec8b46088947f08b460c8947f48b46 *108947f88b45008947fc8b461489078d47e8894500c745fc28d411088b761883c5f8e91c420900 *28c9060800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4f4ac11 *08be98d6110883c5f0e9db3d09008d760083c7283b7b5c760ac7436c0a000000ff63f8c747dc9c *d306088b45148947e08b45188947e48b45108947e88b450c8947ec8b45088947f08b45048947f4 *c747f804d406088d47dc8945188d47f88945148b750483c510e9894109009083c510e9d8fcffff *8cd4060830d4060818c90608060000002500530018c9060807000000240053008b460483f83d75 *0f8b7504c74504a8d4060883c504ff2683c514e999fcffff908b46088945008b7604c745fcb4d4 *060883c5fcff268d7600d4d40608acd1060818c9060806000000250053008b7604c7450000d506 *08ff2683c510e958fcffff0cd506080cd506080cd506080cd506080cd5060800d506080cd50608 *0cd5060818c90608060000002500530018c9060804000100060000000b0053008d45e43b435473 *03ff63fc8b46048945fc8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745e840d5060883c5e8ff2683c71c3b7b5c760ac7436c07000000ff63f8c747e8 *50d506088b45148947ec8b45188947f08b45108947f48b450c8947f88b45088947fc8b45048907 *8d47e8894518c7451428d411088b750483c510e93040090090d506081cd1060818c90608060000 *002500530083c70c3b7b5c760ac7436c03000000ff63f8c747f8ecd006088b46048945fc8d4ff8 *894df8bec4d11108c74500f8d5060883c5f4e9e33f09008d760083c510e964faffff34d6060834 *d6060834d6060834d60608f8d5060834d6060834d6060834d6060814c90608060000002500a700 *14c9060804000100060000000b00a7008d45dc3b43547303ff63fc8b46048945fc8b46188945ec *8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e868d6060883c5e8 *ff2683c71c3b7b5c760ac7436c07000000ff63f8c747e878d606088b45148947ec8b45188947f0 *8b45108947f48b450c8947f88b45088947fc8b450489078d47e8894518c7451428d411088b7504 *83c510e9083f090083c510e9fcf8ffff0cd70608b8d6060814c90608060000002500a70014c906 *08070000002400a7008b460483f82c750f8b7504c7450428d7060883c504ff2683c514e9bdf8ff *ff908b46088945008b7604c745fc34d7060883c5fcff268d760054d7060850d0060814c9060806 *0000002500a7008b7604c7450080d70608ff2683c510e97cf8ffff8cd706088cd706088cd70608 *8cd706088cd7060880d706088cd706088cd7060814c90608060000002500a70014c90608040001 *00060000000b00a7008d45e43b43547303ff63fc8b46048945fc8b46188945ec8b46148945f08b *46108945f48b460c8945f88b45008b4e08894d0089c6c745e8c0d7060883c5e8ff2614c9060804 *000100050000000b00a7008d45f83b4354720883c71c3b7b5c760ac7436c07000000ff63fcc747 *e8d0d706088b46048947ec8b46088947f08b460c8947f48b45008947f88b46108947fc8b461489 *078d47e8894500c745fc28d411088b761483c5f8e9983d090028c9060800000200120005008d45 *f03b43547303ff63f8c745f8d46d10088975fcc745f4f4ac1108be98d6110883c5f0e957390900 *8d760083c7243b7b5c760ac7436c09000000ff63f8c747e020d806088b45108947e48b45148947 *e88b450c8947ec8b45088947f08b45048947f4c747f888d806088d47e08945148d47f88945108b *750483c50ce90b3d09008d760083c50ce96cf6ffff0cd90608b4d8060814c90608050000002500 *a70014c90608060000002400a7008b460483f83d750f8b7504c7450428d9060883c504ff2683c5 *10e92df6ffff908b46088945008b7604c745fc34d9060883c5fcff268d760054d90608c0cf0608 *14c90608050000002500a7008b7604c7450080d90608ff2683c50ce9ecf5ffff8cd906088cd906 *088cd906088cd906088cd9060880d906088cd906088cd9060814c90608050000002500a70014c9 *060804000100050000000b00a7008d45e83b43547303ff63fc8b46048945fc8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745ecc0d9060883c5ecff2689f683c7183b *7b5c760ac7436c06000000ff63f8c747ecd0d906088b45108947f08b45148947f48b450c8947f8 *8b45088947fc8b450489078d47ec894514c7451028d411088b750483c50ce9ba3b090089f60cda *060830cf060814c90608050000002500a70083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *00cf06088b46048945fc8d4ff8894df8bec4d11108c7450070da060883c5f4e96b3b09008d7600 *83c50ce900f4ffffacda0608acda0608acda0608acda060870da0608acda0608acda0608acda06 *0814c90608050000002500a70014c9060804000100050000000b00a7008d45e03b43547303ff63 *fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745ec *e0da060883c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8c747ecf0da06088b4510 *8947f08b45148947f48b450c8947f88b45088947fc8b450489078d47ec894514c7451028d41108 *8b750483c50ce99a3a090089f683c50ce9a0f2ffff7cdb06082cdb060814c90608050000002500 *a70014c90608060000002400a7008b460483f82c750f8b7504c7450498db060883c504ff2683c5 *10e961f2ffff908b46088945008b7604c745fca4db060883c5fcff268d7600c4db060864ce0608 *14c90608050000002500a7008b7604c74500f0db0608ff2683c50ce920f2fffffcdb0608fcdb06 *08fcdb0608fcdb0608fcdb0608f0db0608fcdb0608fcdb060814c90608050000002500a70014c9 *060804000100050000000b00a7008d45e83b43547303ff63fc8b46048945fc8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745ec30dc060883c5ecff2689f614c90608 *04000100040000000b00a7008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc7 *47ec40dc06088b46048947f08b46088947f48b45008947f88b460c8947fc8b461089078d47ec89 *4500c745fc28d411088b761083c5f8e93239090089f628c9060800000200120003008d45f03b43 *547303ff63f8c745f8d46d10088975fcc745f484ac1108be98d6110883c5f0e9ef3409008d7600 *83c7203b7b5c760ac7436c08000000ff63f8c747e48cdc06088b450c8947e88b45108947ec8b45 *088947f08b45048947f4c747f8f0dc06088d47e48945108d47f889450c8b750483c508e9a93809 *009083c508e920f0ffff6cdd06081cdd060814c90608040000002500e70014c906080500000024 *00e7008b460483f83d750f8b7504c7450488dd060883c504ff2683c50ce9e1efffff908b460889 *45008b7604c745fc94dd060883c5fcff268d7600b4dd0608d4cd060814c90608040000002500e7 *008b7604c74500e0dd0608ff2683c508e9a0efffffecdd0608ecdd0608ecdd0608ecdd0608ecdd *0608e0dd0608ecdd0608ecdd060814c90608040000002500e70014c9060804000100040000000b *00e7008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e0889 *4d0089c6c745f020de060883c5f0ff2683c7143b7b5c760ac7436c05000000ff63f8c747f030de *06088b450c8947f48b45108947f88b45088947fc8b450489078d47f0894510c7450c28d411088b *750483c508e96837090064de060844cd060814c90608040000002500e70083c70c3b7b5c760ac7 *436c03000000ff63f8c747f814cd06088b46048945fc8d4ff8894df8bec4d11108c74500c0de06 *0883c5f4e91b3709008d760083c508e9c4edfffffcde0608fcde0608fcde0608fcde0608c0de06 *08fcde0608fcde0608fcde060814c90608040000002500e70014c9060804000100040000000b00 *e7008d45e43b43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d *0089c6c745f030df060883c5f0ff2683c7143b7b5c760ac7436c05000000ff63f8c747f040df06 *088b450c8947f48b45108947f88b45088947fc8b450489078d47f0894510c7450c28d411088b75 *0483c508e95836090083c508e974ecffffbcdf060874df060814c90608040000002500e70014c9 *0608050000002400e7008b460483f82c750f8b7504c74504d8df060883c504ff2683c50ce935ec *ffff908b46088945008b7604c745fce4df060883c5fcff268d760004e0060878cc060814c90608 *040000002500e7008b7604c7450030e00608ff2683c508e9f4ebffff3ce006083ce006083ce006 *083ce006083ce0060830e006083ce006083ce0060814c90608040000002500e70014c906080400 *0100040000000b00e7008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745f070e0060883c5f0ff2614c9060804000100030000000b00e700 *8d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f080e006088b46048947f4 *8b45008947f88b46088947fc8b460c89078d47f0894500c745fc28d411088b760c83c5f8e90035 *090028c9060800000200120009008d45f03b43547303ff63f8c745f8d46d10088975fcc745f444 *ad1108be98d6110883c5f0e9bf3009008d760083c71c3b7b5c760ac7436c07000000ff63f8c747 *e8c4e006088b45088947ec8b450c8947f08b45048947f4c747f820e106088d47e889450c8d47f8 *8945088b750483c504e97f3409008d760083c504e908eaffff98e106084ce1060814c906080300 *00002500e70114c90608040000002400e7018b460483f83d750f8b7504c74504b4e1060883c504 *ff2683c508e9c9e9ffff908b46088945008b7604c745fcc0e1060883c5fcff268d7600e0e10608 *e8cb060814c90608030000002500e7018b7604c745000ce20608ff2683c504e988e9ffff18e206 *0818e2060818e2060818e2060818e206080ce2060818e2060818e2060814c90608030000002500 *e70114c9060804000100030000000b00e7018d45f03b43547303ff63fc8b46048945fc8b460c89 *45f88b45008b4e08894d0089c6c745f44ce2060883c5f4ff2689f683c7103b7b5c760ac7436c04 *000000ff63f8c747f45ce206088b45088947f88b450c8947fc8b450489078d47f489450cc74508 *28d411088b750483c504e94633090089f68ce2060858cb060814c90608030000002500e70183c7 *0c3b7b5c760ac7436c03000000ff63f8c747f828cb06088b46048945fc8d4ff8894df8bec4d111 *08c74500e4e2060883c5f4e9f73209008d760083c504e9b4e7ffff20e3060820e3060820e30608 *20e30608e4e2060820e3060820e3060820e3060814c90608030000002500e70114c90608040001 *00030000000b00e7018d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e0889 *4d0089c6c745f454e3060883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4 *64e306088b45088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c5 *04e93e32090089f683c504e96ce6ffffd8e3060894e3060814c90608030000002500e70114c906 *08040000002400e7018b460483f87b750f8b7504c74504f4e3060883c504ff2683c508e92de6ff *ff908b46088945008b7604c745fc00e4060883c5fcff268d760020e406088cca060814c9060803 *0000002500e7018b7604c745004ce40608ff2683c504e9ece5ffff58e4060858e4060858e40608 *58e4060858e406084ce4060858e4060858e4060814c90608030000002500e70114c90608040001 *00030000000b00e7018d45f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e0889 *4d0089c6c745f48ce4060883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4 *9ce406088b45088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c5 *04e90631090089f6cce40608fcc9060814c90608030000002500e70183c70c3b7b5c760ac7436c *03000000ff63f8c747f8ccc906088b46048945fc8d4ff8894df8bec4d11108c7450024e5060883 *c5f4e9b73009008d760083c504e918e4ffff60e5060860e5060860e5060860e5060824e5060860 *e5060860e5060860e5060814c90608030000002500e70114c9060804000100030000000b00e701 *8d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f494e5 *060883c5f4ff2689f614c90608000000002400e70183c7103b7b5c760ac7436c04000000ff63f8 *c747f4a4e506088b46108947f88b460c8947fc8b460489078d47f4894500c745fc28d411088b76 *0483c5f8e9f22f090089f614c90608000002001200ef018d45ec3b43547303ff63f8c745f8d46d *10088975fcbea8d61108c745f4e0e5060883c5f4ff2689f614c90608000002001800ff018d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8c917090083c404 *8d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f830e606088d47f88945f4c7 *45f028121208be88d6110883c5ece94c2f090020d41108f4ae1108c8e606080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e851170900 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4ae1108be20d411 *0883c5f0e9d52a090090d4d4110814af110834e7060800000200180003008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8e516090083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f414af1108bed4d4110883c5f0e9692a0900 *90d4d1110890d1110848d11108bcd41108c0d4110880a4110894ac110854ad1108b0e706080000 *0200120001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e9f1 *290900900100000024000000c74500d81112088b760483c5fce9e22d090089f6b8e70608010001 *00130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be94ac1108c745 *f020e8060883c5f0ff26a8e7060801000100130015008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747eccce70608c747f840e806088b46048947fc *8d47ec8945f48d47f88945f0be48d1110883c5ece94b2d09008d7600a0e7060800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b99c091108894df4bed4d1110883 *c5f0e9232709008d7600a0e7060800000200120011008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8d8e806088d4ff8894df4bec0d4110883c5 *f0e9b628090089f6a0e7060801000100130055008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747ec78e806088b46048947f0c747f814e906088d47 *ec8945f48d47f88945f0be48d1110883c5ece9632c09008d7600a0e7060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b0091108894df4bed4d1110883c5f0 *e93b2609008d7600a0e7060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8c0e906088d4ff8894df4bec0d4110883c5f0e9 *ce27090089f6a0e7060801000100130055008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec60e906088b46048947f0c747f8fce906088d47ec89 *45f48d47f88945f0be48d1110883c5ece97b2b09008d76000100000024000000c74500d8111208 *8b760483c5fce95e2b090089f6b8e7060801000100130001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4be94ac1108c745f0a4ea060883c5f0ff26a0e706080200000015 *0055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec48ea06088b46088947f0c747f8c4ea06088b46048947fc8d47ec8945f48d47f88945f0be *48d1110883c5ece9c12a090090a0e7060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9b4091108894df4bed4d1110883c5f0e99b2409008d7600a0e7060800 *000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f860eb06088d4ff8894df4bec0d4110883c5f0e92e26090089f6a0e70608020000 *00150055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d100889 *75fcc747ecfcea06088b46048947f08b46088947f4c747f89ceb06088d47ec8945f48d47f88945 *f0be48d1110883c5ece9d529090090a0e7060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9c4091108894df4bed4d1110883c5f0e9af2309008d7600a0e706 *0800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f84cec06088d4ff8894df4bec0d4110883c5f0e94225090089f6a0e7060802 *000000150055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ece8eb06088b46048947f08b46088947f4c747f888ec06088d47ec8945f48d47f8 *8945f0be48d1110883c5ece9e9280900900100000024000000c74500d81112088b760483c5fce9 *ce28090089f6b4e7060801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be80a41108c745f034ed060883c5f0ff26a0e7060803000000120075008d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecd4ec0608 *8b46088947f08b460c8947f4c747f854ed06088b46048947fc8d47ec8945f48d47f88945f0be48 *d1110883c5ece92b2809008d7600a0e7060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9c8091108894df4bed4d1110883c5f0e9032209008d7600a0e70608 *00000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8f8ed06088d4ff8894df4bec0d4110883c5f0e99623090089f6a0e706080300 *0000120075008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d1008 *8975fcc747e88ced06088b46048947ec8b46088947f08b460c8947f4c747f834ee06088d47e889 *45f48d47f88945f0be48d1110883c5ece9372709008d7600a0e7060800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9dc091108894df4bed4d1110883c5f0e90f *2109008d7600a0e7060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8ecee06088d4ff8894df4bec0d4110883c5f0e9a222 *090089f6a0e7060803000000120075008d45ec3b4354720883c71c3b7b5c760ac7436c07000000 *ff63f8c745f8d46d10088975fcc747e880ee06088b46048947ec8b46088947f08b460c8947f4c7 *47f828ef06088d47e88945f48d47f88945f0be48d1110883c5ece9432609008d7600bce7060801 *000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d811 *120883c5f0e9e68fffff89f6a0e70608040000001200f5008d45ec3b4354720883c71c3b7b5c76 *0ac7436c07000000ff63f8c745f8d46d10088975fcc747e874ef06088b46088947ec8b460c8947 *f08b46108947f4c747f8e0ef06088b46048947fc8d47e88945f48d47f88945f0be48d1110883c5 *ece99925090090a0e7060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9e0091108894df4bed4d1110883c5f0e9731f09008d7600a0e7060800000200120011 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f888f006088d4ff8894df4bec0d4110883c5f0e90621090089f6a0e70608040000001200f5008d *45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e418 *f006088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f8c4f006088d47e48945 *f48d47f88945f0be48d1110883c5ece9a124090090a0e7060800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9f4091108894df4bed4d1110883c5f0e97b1e0900 *8d7600a0e7060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f880f106088d4ff8894df4bec0d4110883c5f0e90e20090089 *f6a0e70608040000001200f5008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8 *c745f8d46d10088975fcc747e410f106088b46048947e88b46088947ec8b460c8947f08b461089 *47f4c747f8bcf106088d47e48945f48d47f88945f0be48d1110883c5ece9a92309009001000000 *240000008b4504894500c74504301212088b761483c5fce988230900a4e7060801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f074f206 *0883c5f0ff26a0e70608420000002400ff0083c7203b7b5c760ac7436c08000000ff63f8c747e4 *08f206088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f898f206088b450489 *47fc8d47e48945088d47f8894504bebcd41108e9f0220900a0e706080b000200000000001100ff *008d45fc3b43547308be38af1108ff63fc8b7504c745fcd0f2060883c5fcff269038af110840af *110854f3060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8c50a090083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f440af1108be38af110883c5f0e9491e090090ccd4110848af1108c0f30608000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8590a090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f448af11 *08beccd4110883c5f0e9dd1d0900901cd5110814af11082cf4060800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8ed09090083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f414af1108be1cd5110883c5f0 *e9711d090090d4d1110890d1110848d11108bcd41108c0d41108a4ac110868af1108a8f4060800 *000200120001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e9 *fd1c0900900100000024000000c74500d81112088b760483c5fce9ee20090089f6acf406080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea4ac1108c7 *45f014f5060883c5f0ff26a0f406080100010013000d008d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ecc0f40608c747f834f506088b46048947 *fc8d47ec8945f48d47f88945f0be48d1110883c5ece9572009008d760098f40608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9000a1108894df4bed4d11108 *83c5f0e92f1a09008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f8ccf506088d4ff8894df4bec0d4110883 *c5f0e9c21b090089f698f4060801000100130035008d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747ec6cf506088b46048947f0c747f808f606088d *47ec8945f48d47f88945f0be48d1110883c5ece96f1f09008d760098f406080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9100a1108894df4bed4d1110883c5 *f0e9471909008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8b4f606088d4ff8894df4bec0d4110883c5f0 *e9da1a090089f698f4060801000100130035008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec54f606088b46048947f0c747f8f0f606088d47ec *8945f48d47f88945f0be48d1110883c5ece9871e09008d76000100000024000000c74500d81112 *088b760483c5fce96a1e090089f6acf4060801000100130001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df4bea4ac1108c745f098f7060883c5f0ff2698f4060802000000 *150035008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975 *fcc747ec3cf706088b46088947f0c747f8b8f706088b46048947fc8d47ec8945f48d47f88945f0 *be48d1110883c5ece9cd1d09009098f4060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9140a1108894df4bed4d1110883c5f0e9a71709008d760098f40608 *00000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f854f806088d4ff8894df4bec0d4110883c5f0e93a19090089f698f406080200 *0000150035008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d1008 *8975fcc747ecf0f706088b46048947f08b46088947f4c747f890f806088d47ec8945f48d47f889 *45f0be48d1110883c5ece9e11c09009098f4060800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9240a1108894df4bed4d1110883c5f0e9bb1609008d760098f4 *060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f840f906088d4ff8894df4bec0d4110883c5f0e94e18090089f698f40608 *02000000150035008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ecdcf806088b46048947f08b46088947f4c747f87cf906088d47ec8945f48d47 *f88945f0be48d1110883c5ece9f51b0900900100000024000000c74500d81112088b760483c5fc *e9da1b090089f6acf4060801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4bea4ac1108c745f028fa060883c5f0ff2698f4060803000000120035008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecc8f906 *088b46088947f08b460c8947f4c747f848fa06088b46048947fc8d47ec8945f48d47f88945f0be *48d1110883c5ece9371b09008d760098f4060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9280a1108894df4bed4d1110883c5f0e90f1509008d760098f406 *0800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8ecfa06088d4ff8894df4bec0d4110883c5f0e9a216090089f698f4060803 *000000120035008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10 *088975fcc747e880fa06088b46048947ec8b46088947f08b460c8947f4c747f828fb06088d47e8 *8945f48d47f88945f0be48d1110883c5ece9431a09008d760098f4060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9380a1108894df4bed4d1110883c5f0e9 *1b1409008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8e0fb06088d4ff8894df4bec0d4110883c5f0e9ae *15090089f698f4060803000000120035008d45ec3b4354720883c71c3b7b5c760ac7436c070000 *00ff63f8c745f8d46d10088975fcc747e874fb06088b46048947ec8b46088947f08b460c8947f4 *c747f81cfc06088d47e88945f48d47f88945f0be48d1110883c5ece94f1909008d760001000000 *24000000c74500d81112088b760483c5fce93219090089f6acf4060801000100130001008d45ec *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea4ac1108c745f0d0fc060883c5f0 *ff2698f4060804000000120035008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63 *f8c745f8d46d10088975fcc747e868fc06088b46088947ec8b460c8947f08b46108947f4c747f8 *f0fc06088b46048947fc8d47e88945f48d47f88945f0be48d1110883c5ece9891809009098f406 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c0a110889 *4df4bed4d1110883c5f0e9631209008d760098f4060800000200120011008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f898fd06088d4ff8894d *f4bec0d4110883c5f0e9f613090089f698f4060804000000120035008d45ec3b4354720883c720 *3b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e428fd06088b46048947e88b *46088947ec8b460c8947f08b46108947f4c747f8d4fd06088d47e48945f48d47f88945f0be48d1 *110883c5ece9911709009098f4060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b94c0a1108894df4bed4d1110883c5f0e96b1109008d760098f40608000002 *00120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f890fe06088d4ff8894df4bec0d4110883c5f0e9fe12090089f698f406080400000012 *0035008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fc *c747e420fe06088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f8ccfe06088d *47e48945f48d47f88945f0be48d1110883c5ece999160900900100000024000000c74500d81112 *088b760483c5fce97e16090089f6acf4060801000100130001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df4bea4ac1108c745f084ff060883c5f0ff2698f4060805000000 *120035008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975 *fcc747e418ff06088b46088947e88b460c8947ec8b46108947f08b46148947f4c747f8a4ff0608 *8b46048947fc8d47e48945f48d47f88945f0be48d1110883c5ece9cf1509008d760098f4060800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9500a1108894df4 *bed4d1110883c5f0e9a70f09008d760098f4060800000200120011008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8540007088d4ff8894df4be *c0d4110883c5f0e93a11090089f698f4060805000000120035008d45ec3b4354720883c7243b7b *5c760ac7436c09000000ff63f8c745f8d46d10088975fcc747e0dcff06088b46048947e48b4608 *8947e88b460c8947ec8b46108947f08b46148947f4c747f8900007088d47e08945f48d47f88945 *f0be48d1110883c5ece9cf1409008d760098f4060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9600a1108894df4bed4d1110883c5f0e9a70e09008d760098 *f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8540107088d4ff8894df4bec0d4110883c5f0e93a10090089f698f406 *0805000000120035008d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c745f8d4 *6d10088975fcc747e0dc0007088b46048947e48b46088947e88b460c8947ec8b46108947f08b46 *148947f4c747f8900107088d47e08945f48d47f88945f0be48d1110883c5ece9cf1309008d7600 *0100000024000000c74500d81112088b760483c5fce9b213090089f6acf4060801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea4ac1108c745f0500207 *0883c5f0ff2698f4060806000000120035008d45ec3b4354720883c7243b7b5c760ac7436c0900 *0000ff63f8c745f8d46d10088975fcc747e0dc0107088b46088947e48b460c8947e88b46108947 *ec8b46148947f08b46188947f4c747f8700207088b46048947fc8d47e08945f48d47f88945f0be *48d1110883c5ece9fd1209009098f4060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9640a1108894df4bed4d1110883c5f0e9d70c09008d760098f4060800 *000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8240307088d4ff8894df4bec0d4110883c5f0e96a0e090089f698f40608060000 *00120035008d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d100889 *75fcc747dca80207088b46048947e08b46088947e48b460c8947e88b46108947ec8b46148947f0 *8b46188947f4c747f8600307088d47dc8945f48d47f88945f0be48d1110883c5ece9f911090090 *98f4060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9780a *1108894df4bed4d1110883c5f0e9d30b09008d760098f4060800000200120011008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8280407088d4f *f8894df4bec0d4110883c5f0e9660d090089f698f4060806000000120035008d45ec3b43547208 *83c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dcac0307088b460489 *47e08b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947f4c747f864040708 *8d47dc8945f48d47f88945f0be48d1110883c5ece9f5100900900100000024000000c74500d811 *12088b760483c5fce9da10090089f6acf4060801000100130001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4bea4ac1108c745f02805070883c5f0ff2698f40608070000 *00120035008d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d100889 *75fcc747dcb00407088b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f0 *8b461c8947f4c747f8480507088b46048947fc8d47dc8945f48d47f88945f0be48d1110883c5ec *e91f1009008d760098f4060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b97c0a1108894df4bed4d1110883c5f0e9f70909008d760098f40608000002001200 *11008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8040607088d4ff8894df4bec0d4110883c5f0e98a0b090089f698f406080700000012003500 *8d45ec3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d8 *800507088b46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947 *f08b461c8947f4c747f8400607088d47d88945f48d47f88945f0be48d1110883c5ece9130f0900 *8d760098f4060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b98c0a1108894df4bed4d1110883c5f0e9eb0809008d760098f4060800000200120011008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8100707 *088d4ff8894df4bec0d4110883c5f0e97e0a090089f698f4060807000000120035008d45ec3b43 *54720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d88c0607088b *46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b461c89 *47f4c747f84c0707088d47d88945f48d47f88945f0be48d1110883c5ece9070e09008d76000100 *000024000000c74500d81112088b760483c5fce9ea0d090089f6acf4060801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea4ac1108c745f01808070883 *c5f0ff2698f4060808000000120035008d45ec3b4354720883c72c3b7b5c760ac7436c0b000000 *ff63f8c745f8d46d10088975fcc747d8980707088b46088947dc8b460c8947e08b46108947e48b *46148947e88b46188947ec8b461c8947f08b46208947f4c747f8380807088b46048947fc8d47d8 *8945f48d47f88945f0be48d1110883c5ece9290d09009098f4060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9900a1108894df4bed4d1110883c5f0e90307 *09008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8f80807088d4ff8894df4bec0d4110883c5f0e9960809 *0089f698f4060808000000120035008d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff *63f8c745f8d46d10088975fcc747d4700807088b46048947d88b46088947dc8b460c8947e08b46 *108947e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f8340907088d47d489 *45f48d47f88945f0be48d1110883c5ece9190c09009098f4060800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9a00a1108894df4bed4d1110883c5f0e9f30509 *008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8080a07088d4ff8894df4bec0d4110883c5f0e986070900 *89f698f4060808000000120035008d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63 *f8c745f8d46d10088975fcc747d4800907088b46048947d88b46088947dc8b460c8947e08b4610 *8947e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f8440a07088d47d48945 *f48d47f88945f0be48d1110883c5ece9090b0900900100000024000000c74500d81112088b7604 *83c5fce9ee0a090089f6b0f4060801000100130001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e04894df4be68af1108c745f0140b070883c5f0ff2698f406080900000012007500 *8d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc747d4 *900a07088b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947 *ec8b46208947f08b46248947f4c747f8340b07088b46048947fc8d47d48945f48d47f88945f0be *48d1110883c5ece9270a09008d760098f4060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9a40a1108894df4bed4d1110883c5f0e9ff0309008d760098f406 *0800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8fc0b07088d4ff8894df4bec0d4110883c5f0e99205090089f698f4060809 *000000120075008d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d46d10 *088975fcc747d06c0b07088b46048947d48b46088947d88b460c8947dc8b46108947e08b461489 *47e48b46188947e88b461c8947ec8b46208947f08b46248947f4c747f8380c07088d47d08945f4 *8d47f88945f0be48d1110883c5ece90f0909008d760098f4060800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9b80a1108894df4bed4d1110883c5f0e9e70209 *008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8140d07088d4ff8894df4bec0d4110883c5f0e97a040900 *89f698f4060809000000120075008d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63 *f8c745f8d46d10088975fcc747d0840c07088b46048947d48b46088947d88b460c8947dc8b4610 *8947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f4c747f8500d07 *088d47d08945f48d47f88945f0be48d1110883c5ece9f70709008d760001000000240000008b45 *04894500c74504301212088b761483c5fce9d40709009cf4060801000100130001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0280e070883c5f0ff26 *98f406084200000024007f0083c7343b7b5c760ac7436c0d000000ff63f8c747d09c0d07088b46 *048947d48b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947 *ec8b46208947f08b46248947f4c747f84c0e07088b45048947fc8d47d08945088d47f8894504be *bcd41108e91e07090089f698f406080b0002000000000011007f008d45fc3b43547308be78af11 *08ff63fc8b7504c745fc840e070883c5fcff269078af110880af1108280f070800000200180003 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f1ee08 *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f480af1108be78af *110883c5f0e97502090090ccd4110888af1108940f070800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e885ee080083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f488af1108beccd4110883c5f0e9090209 *009048d41108a8af110844d41108a8af11083cd41108a8af11080010070800000200180003008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e809ee080083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a8af1108be48d41108 *83c5f0e98d010900900810070800000200180003008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e8a5ed080083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4a8af1108be44d4110883c5f0e929010900901010070800000200 *180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *41ed080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a8af1108 *be3cd4110883c5f0e9c500090090d4d41108f0af11084411070800000200180003008d45f03b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8d5ec080083c4048d47 *f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f0af1108bed4d4110883c5f0e9 *590009009070d1110840d1110814ad11086cae110821000000240000003975040f94c083e00183 *c508b92cdc0b088b34818b4d00f7d883c0fcff248190b411070801000000240001008b45048945 *fc897504be40d11108c74500c811070883c5f8e9f7ff08008d760021000000240000003975040f *94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff248190b411070801000000240001 *008b45048945fc897504be40d11108c745001c12070883c5f8e9a3ff08008d7600020000002400 *00008b7608e99c030900b011070802000000240003008b068b40fcc1e81083f80875148b460489 *4508be70d11108c7450070120708ff268b4508894500897508be40d11108c745044812070883c5 *fce946ff080089f621000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d00 *f7d883c0fcff248190b411070801000000240001008b45048945fc897504be40d11108c74500cc *12070883c5f8e9f3fe08008d760002000000240000008b7608e9ec020900b01107080200000024 *0003008b068b40fcc1e81083f80675148b4604894508be70d11108c7450020130708ff268b4508 *894500897508be40d11108c74504f812070883c5fce996fe080089f62100000024000000397504 *0f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff248190b4110708010000002400 *01008b45048945fc897504be40d11108c745007c13070883c5f8e943fe08008d76000200000024 *0000008b7608e93c020900b411070802000000240003008b068b40fcc1e81083f80375148b4604 *894508be14ad1108c74500d0130708ff268b4508894500897508be40d11108c74504a813070883 *c5fce9e6fd080089f621000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d *00f7d883c0fcff248190b411070801000000240001008b45048945fc897504be40d11108c74500 *2c14070883c5f8e993fd08008d7600b411070802000000240005008b068b40fcc1e81085c0750e *8b460489450883c504e9e6aeffff8b4508894500897508be40d11108c745045814070883c5fce9 *4dfd080090b01107080100000024000f008b068b40fcc1e81083f8067d4283f8037d1e85c0757c *8b46048945008b450489750489c6c745fc8414070883c5fcff2683f803755d8b46048945008b45 *0489750489c6c745fce413070883c5fcff2683f8087d1f83f80675398b46048945008b45048975 *0489c6c745fc3413070883c5fcff2683f808751a8b46048945008b450489750489c6c745fc8412 *070883c5fcff268975fcbe40d11108c74500f411070883c5f8e997fc08008d7600b01107080b00 *02000000000011000f008d45f83b43547308be14b01108ff63fc8b7500c74500c8140708ff2654 *d1110814b01108a415070802000000150001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8b4e08894df48b56048955f083c5f0ebaa89f6a01507080b000200000000001100030083c70c *3b7b5c760fbe1cb01108c7436c03000000ff63fcc747f8b41507088b45008947fc8b4d04890f8d *57f8895504be54d11108e9e3fb08008d7600d4d4110834b011082816070800000200180003008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f1e7080083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f434b01108bed4d41108 *83c5f0e975fb080090d4d1110890d1110848d11108e0d41108bcd41108c0d41108a4ac110878af *11089416070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *c80a1108894df4bed4d1110883c5f0e93bf908008d76009416070800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9d00a1108894df4bed4d1110883c5f0e9fff8 *08008d76000100000024000000c74500301212088b760483c5fce9cefe080089f6a01607080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee0d41108c7 *45f03417070883c5f0ff269416070800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9e00a1108894df4bed4d1110883c5f0e96ff808008d760094160708000002 *00120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f88c1707088d4ff8894df4bec0d4110883c5f0e902fa080089f6941607080100010013 *002d008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec541707088b46048947f0c747f8c81707088d47ec8945f48d47f88945f0be48d1110883c5 *ece9affd08008d760001000000240000008b4504894500c74504301212088b761483c5fce98cfd *08009816070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be90d11108c745f07018070883c5f0ff269416070800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9f00a1108894df4bed4d1110883c5f0e92ff708008d76 *000100000024000000c74500301212088b760483c5fce9fefc080089f6a0160708010001001300 *01008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee0d41108c745f00419 *070883c5f0ff269416070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9fc0a1108894df4bed4d1110883c5f0e99ff608008d76009416070800000200120021 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f85c1907088d4ff8894df4bec0d4110883c5f0e932f8080089f6941607080100010013002d008d *45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec24 *1907088b46048947f0c747f8981907088d47ec8945f48d47f88945f0be48d1110883c5ece9dffb *08008d760001000000240000008b4504894500c74504301212088b761483c5fce9bcfb08009816 *070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90 *d11108c745f0401a070883c5f0ff269416070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9080b1108894df4bed4d1110883c5f0e95ff508008d7600941607 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9180b110889 *4df4bed4d1110883c5f0e923f508008d76000100000024000000c74500301212088b760483c5fc *e9f2fa080089f6ac16070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4bea4ac1108c745f0101b070883c5f0ff269416070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9240b1108894df4bed4d1110883c5f0e993 *f408008d76009416070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8681b07088d4ff8894df4bec0d4110883c5f0e926f6 *080089f69416070801000100130065008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ec301b07088b46048947f0c747f8a41b07088d47ec8945f4 *8d47f88945f0be48d1110883c5ece9d3f908008d760001000000240000008b4504894500c74504 *301212088b761483c5fce9b0f908009816070801000100130001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be90d11108c745f04c1c070883c5f0ff2694160708000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9300b1108894df4bed4 *d1110883c5f0e953f308008d76009416070800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b93c0b1108894df4bed4d1110883c5f0e917f308008d7600b0160708 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f030 *12120883c5f0e9bef1ffff89f69416070800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9480b1108894df4bed4d1110883c5f0e9a3f208008d76009416070800 *000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8581d07088d4ff8894df4bec0d4110883c5f0e936f4080089f694160708010001 *001300a5008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d100889 *75fcc747ec201d07088b46048947f0c747f8941d07088d47ec8945f48d47f88945f0be48d11108 *83c5ece9e3f708008d760001000000240000008b4504894500c74504301212088b761483c5fce9 *c0f708009816070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be90d11108c745f03c1e070883c5f0ff2694160708420000002400ff008b068b40fcc1 *e81085c00f8c2402000083f8090f8f1b020000b960b01108ff24818d760083c7183b7b5c760ac7 *436c06000000ff63f8c747ece01d07088b46048947f0c747f8601e07088b45048947fc8d47ec89 *45088d47f8894504bebcd41108e916f7080083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *e41c07088d47f8894508bec0d4110883c504e9def2080083c70c3b7b5c760ac7436c03000000ff *63f8c747f8a81c07088d47f8894508bec0d4110883c504e9b2f2080083c7183b7b5c760ac7436c *06000000ff63f8c747ecf01b07088b46048947f0c747f8701c07088b45048947fc8d47ec894508 *8d47f8894504bebcd41108e97cf6080083c70c3b7b5c760ac7436c03000000ff63f8c747f8d81a *07088d47f8894508bec0d4110883c504e944f2080083c70c3b7b5c760ac7436c03000000ff63f8 *c747f89c1a07088d47f8894508bec0d4110883c504e918f2080083c7183b7b5c760ac7436c0600 *0000ff63f8c747ece41907088b46048947f0c747f8641a07088b45048947fc8d47ec8945088d47 *f8894504bebcd41108e9e2f5080083c70c3b7b5c760ac7436c03000000ff63f8c747f8cc180708 *8d47f8894508bec0d4110883c504e9aaf1080083c7183b7b5c760ac7436c06000000ff63f8c747 *ec141807088b46048947f0c747f8941807088b45048947fc8d47ec8945088d47f8894504bebcd4 *1108e974f5080083c70c3b7b5c760ac7436c03000000ff63f8c747f8fc1607088d47f8894508be *c0d4110883c504e93cf1080083c70c3b7b5c760ac7436c03000000ff63f8c747f8c01607088d47 *f8894508bec0d4110883c504e910f10800941607080b000200000000001100ff008d45fc3b4354 *7308be58b01108ff63fc8b7504c745fc981e070883c5fcff269058b0110888b011082821070800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8f1dc080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f488 *b01108be58b0110883c5f0e975f0080090ccd4110890b011089421070800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e885dc080083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f490b01108beccd4110883 *c5f0e909f0080090d4d41108b0b011080022070800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e819dc080083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4b0b01108bed4d4110883c5f0e99def08009054 *d1110874ac110824ad110840d1110821000000240000003975040f94c083e00183c508b92cdc0b *088b34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc897504c745 *008422070883c5fce9b892ffff21000000240000003975040f94c083e00183c508b92cdc0b088b *34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc897504c74500d0 *22070883c5fce96c92ffff7822070803000000240001008b068b40fcc1e81083f810751e8b4604 *89450c8b45088945008b4504894508c7450414161008e995b704008b450c89450489750cc74508 *fc22070883c504e91d92ffff9021000000240000003975040f94c083e00183c508b92cdc0b088b *34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc897504c745006c *23070883c5fce9d091ffff7022070802000000240005008b068b40fcc1e81083f80f75108b4604 *894508be74ac1108e93bf208008b4508894500897508c7450498230708e99291ffff89f6210000 *00240000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff2481907822 *070801000000240001008b45048945fc897504c74500f823070883c5fce94491ffff7422070802 *000000240003008b068b40fcc1e81083f80e75108b4604894508be24ad1108e9aff108008b4508 *894500897508c7450424240708e90691ffff89f621000000240000003975040f94c083e00183c5 *08b92cdc0b088b34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc *897504c745008424070883c5fce9b890ffff7422070802000000240003008b068b40fcc1e81083 *f80a75108b4604894508be24ad1108e923f108008b4508894500897508c74504b0240708e97a90 *ffff89f621000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0 *fcff2481907822070801000000240001008b45048945fc897504c745001025070883c5fce92c90 *ffff7422070802000000240003008b068b40fcc1e81083f80975108b4604894508be24ad1108e9 *97f008008b4508894500897508c745043c250708e9ee8fffff89f621000000240000003975040f *94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff2481907822070801000000240001 *008b45048945fc897504c745009c25070883c5fce9a08fffff7422070802000000240003008b06 *8b40fcc1e81083f80875108b4604894508be24ad1108e90bf008008b4508894500897508c74504 *c8250708e9628fffff89f621000000240000003975040f94c083e00183c508b92cdc0b088b3481 *8b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc897504c74500282607 *0883c5fce9148fffff7422070802000000240003008b068b40fcc1e81083f80775108b46048945 *08be24ad1108e97fef08008b4508894500897508c7450454260708e9d68effff89f62100000024 *0000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff24819078220708 *01000000240001008b45048945fc897504c74500b426070883c5fce9888effff74220708020000 *00240003008b068b40fcc1e81083f80675108b4604894508be24ad1108e9f3ee08008b45088945 *00897508c74504e0260708e94a8effff89f621000000240000003975040f94c083e00183c508b9 *2cdc0b088b34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc8975 *04c745004027070883c5fce9fc8dffff7422070802000000240003008b068b40fcc1e81083f805 *75108b4604894508be24ad1108e967ee08008b4508894500897508c745046c270708e9be8dffff *89f621000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff *2481907822070801000000240001008b45048945fc897504c74500cc27070883c5fce9708dffff *7422070802000000240003008b068b40fcc1e81083f80475108b4604894508be24ad1108e9dbed *08008b4508894500897508c74504f8270708e9328dffff89f621000000240000003975040f94c0 *83e00183c508b92cdc0b088b34818b4d00f7d883c0fcff2481907822070801000000240001008b *45048945fc897504c745005828070883c5fce9e48cffff7422070802000000240003008b068b40 *fcc1e81083f80375108b4604894508be24ad1108e94fed08008b4508894500897508c745048428 *0708e9a68cffff89f67022070802000000240007008b068b40fcc1e81083f8030f8c1701000083 *f8100f8f0e010000b9dcb0110883c0fdff24818d76008b46048945048b450889750889c6c74500 *a8280708ff268b46048945048b450889750889c6c745001c280708ff268b46048945048b450889 *750889c6c7450090270708ff268b46048945048b450889750889c6c7450004270708ff268b4604 *8945048b450889750889c6c7450078260708ff268b46048945048b450889750889c6c74500ec25 *0708ff268b46048945048b450889750889c6c7450060250708ff268b46048945048b4508897508 *89c6c74500d4240708ff268b46048945048b450889750889c6c7450048240708ff268b46048945 *048b450889750889c6c74500bc230708ff268b46048945008b450889750889c6c745fc20230708 *83c5fcff26897500c74504b0220708e9618bffff90702207080b000200010000000c0007008d45 *f83b43547303ff63fc8b4d008b560489550089cec745fce828070883c5fcff2689f66c2207080b *000200010000000c00010083c7103b7b5c760ac7436c04000000ff63fcc747f4c86b10088b4604 *8947f88b45008947fc8b450489078d47f4894504be54d11108e96ae7080089f66c220708040001 *000000000011000f0083c71c3b7b5c760fbed4b01108c7436c07000000ff63fcc747e8302a0708 *8b45008947ecc747f0642a07088d47e88947f4c747f880dd0b088d47f08947fc8d47e889078d77 *f883c504ff6500d4d1110848d11108d4d41108bcd41108c0d41108ccd4110854ac1108b4ac1108 *d4ac110802000000150000008d45e83b43547303ff63f8c745f8d46d10088975fc8b4e08894df4 *c745f030121208c745ec141610088b56048955e883c5e8e9a101050090fc2a0708000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9540b1108894df4bed4d11108 *83c5f0e98fe408008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f86c2b07088d4ff8894df4bec0d4110883 *c5f0e922e6080089f6fc2a070802000000150013008d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747ec282b07088b46048947f08b46088947f4c747 *f8a82b07088d47ec8945f48d47f88945f0be48d1110883c5ece9c9e90800901c2b070801000100 *130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0be *d4ac110883c5ece98de9080090142b070801000100130001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4c745f030121208be54ac110883c5ece951e9080090fc2a070800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b95c0b1108894df4 *bed4d1110883c5f0e92be308008d7600fc2a070800000200120011008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d02c07088d4ff8894df4be *c0d4110883c5f0e9bee4080089f6fc2a070801000100130053008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec942c07088b46048947f0c747f8 *0c2d07088d47ec8945f48d47f88945f0be48d1110883c5ece96be808008d76001c2b0708010001 *00130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0 *bed4ac110883c5ece92de8080090182b070801000100130001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df4c745f030121208beb4ac110883c5ece9f1e7080090fc2a0708 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9680b1108894d *f4bed4d1110883c5f0e9cbe108008d7600fc2a070800000200120011008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8302e07088d4ff8894df4 *bec0d4110883c5f0e95ee3080089f6fc2a070801000100130093008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf42d07088b46048947f0c747 *f86c2e07088d47ec8945f48d47f88945f0be48d1110883c5ece90be708008d76001c2b07080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894d *f0bed4ac110883c5ece9cde6080090fc2a070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9740b1108894df4bed4d1110883c5f0e9a7e008008d7600fc2a07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9800b110889 *4df4bed4d1110883c5f0e96be008008d7600fc2a070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b98c0b1108894df4bed4d1110883c5f0e92fe008008d7600 *182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *c745f030121208beb4ac110883c5ece9dde5080090fc2a070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9980b1108894df4bed4d1110883c5f0e9b7df0800 *8d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8443007088d4ff8894df4bec0d4110883c5f0e94ae1080089 *f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ec083007088b46048947f0c747f8803007088d47ec8945f48d47f8 *8945f0be48d1110883c5ece9f7e408008d76001c2b070801000100130001008d45ec3b43547303 *ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece9b9e40800 *90182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4c745f030121208beb4ac110883c5ece97de4080090fc2a070800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9a40b1108894df4bed4d1110883c5f0e957de08 *008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8a43107088d4ff8894df4bec0d4110883c5f0e9eadf0800 *89f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c745f8d46d10088975fcc747ec683107088b46048947f0c747f8e03107088d47ec8945f48d47 *f88945f0be48d1110883c5ece997e308008d76001c2b070801000100130001008d45ec3b435473 *03ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece959e308 *0090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4c745f030121208beb4ac110883c5ece91de3080090fc2a070800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9b00b1108894df4bed4d1110883c5f0e9f7dc *08008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8043307088d4ff8894df4bec0d4110883c5f0e98ade08 *0089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ecc83207088b46048947f0c747f8403307088d47ec8945f48d *47f88945f0be48d1110883c5ece937e208008d76001c2b070801000100130001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece9f9e1 *080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4c745f030121208beb4ac110883c5ece9bde1080090fc2a070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9bc0b1108894df4bed4d1110883c5f0e997 *db08008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8643407088d4ff8894df4bec0d4110883c5f0e92add *080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ec283407088b46048947f0c747f8a03407088d47ec8945f4 *8d47f88945f0be48d1110883c5ece9d7e008008d76001c2b070801000100130001008d45ec3b43 *547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece999 *e0080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4c745f030121208beb4ac110883c5ece95de0080090fc2a070800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c80b1108894df4bed4d1110883c5f0e9 *37da08008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8c43507088d4ff8894df4bec0d4110883c5f0e9ca *db080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec883507088b46048947f0c747f8003607088d47ec8945 *f48d47f88945f0be48d1110883c5ece977df08008d76001c2b070801000100130001008d45ec3b *43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece9 *39df080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4c745f030121208beb4ac110883c5ece9fdde080090fc2a070800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d80b1108894df4bed4d1110883c5f0 *e9d7d808008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8243707088d4ff8894df4bec0d4110883c5f0e9 *6ada080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ece83607088b46048947f0c747f8603707088d47ec89 *45f48d47f88945f0be48d1110883c5ece917de08008d76001c2b070801000100130001008d45ec *3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ec *e9d9dd080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4c745f030121208beb4ac110883c5ece99ddd080090fc2a07080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e00b1108894df4bed4d1110883c5 *f0e977d708008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8843807088d4ff8894df4bec0d4110883c5f0 *e90ad9080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec483807088b46048947f0c747f8c03807088d47ec *8945f48d47f88945f0be48d1110883c5ece9b7dc08008d76001c2b070801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5 *ece979dc080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4c745f030121208beb4ac110883c5ece93ddc080090fc2a070800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ec0b1108894df4bed4d1110883 *c5f0e917d608008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8e43907088d4ff8894df4bec0d4110883c5 *f0e9aad7080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747eca83907088b46048947f0c747f8203a07088d47 *ec8945f48d47f88945f0be48d1110883c5ece957db08008d76001c2b070801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883 *c5ece919db080090fc2a070800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9fc0b1108894df4bed4d1110883c5f0e9f3d408008d7600fc2a0708000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9080c1108894df4bed4d11108 *83c5f0e9b7d408008d7600fc2a070800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9100c1108894df4bed4d1110883c5f0e97bd408008d7600fc2a0708020000 *002400db018b068b40fcc1e81085c00f8cb003000083f80f0f8fa7030000b91cb11108ff24818d *760083c70c3b7b5c760ac7436c03000000ff63f8c747f8803b07088d47f8894508bec0d4110883 *c504e9fcd5080083c70c3b7b5c760ac7436c03000000ff63f8c747f8443b07088d47f8894508be *c0d4110883c504e9d0d5080083c70c3b7b5c760ac7436c03000000ff63f8c747f8083b07088d47 *f8894508bec0d4110883c504e9a4d5080083c7183b7b5c760ac7436c06000000ff63f8c747ec6c *3a07088b46048947f0c747f8cc3a07088b45048947fc8d47ec8945088d47f8894504bebcd41108 *e96ed9080083c7183b7b5c760ac7436c06000000ff63f8c747ec0c3907088b46048947f0c747f8 *6c3907088b45048947fc8d47ec8945088d47f8894504bebcd41108e92cd9080083c7183b7b5c76 *0ac7436c06000000ff63f8c747ecac3707088b46048947f0c747f80c3807088b45048947fc8d47 *ec8945088d47f8894504bebcd41108e9ead8080083c7183b7b5c760ac7436c06000000ff63f8c7 *47ec4c3607088b46048947f0c747f8ac3607088b45048947fc8d47ec8945088d47f8894504bebc *d41108e9a8d8080083c7183b7b5c760ac7436c06000000ff63f8c747ecec3407088b46048947f0 *c747f84c3507088b45048947fc8d47ec8945088d47f8894504bebcd41108e966d8080083c7183b *7b5c760ac7436c06000000ff63f8c747ec8c3307088b46048947f0c747f8ec3307088b45048947 *fc8d47ec8945088d47f8894504bebcd41108e924d8080083c7183b7b5c760ac7436c06000000ff *63f8c747ec2c3207088b46048947f0c747f88c3207088b45048947fc8d47ec8945088d47f88945 *04bebcd41108e9e2d7080083c7183b7b5c760ac7436c06000000ff63f8c747eccc3007088b4604 *8947f0c747f82c3107088b45048947fc8d47ec8945088d47f8894504bebcd41108e9a0d7080083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8cc2f07088d47f8894508bec0d4110883c504e9 *68d3080083c70c3b7b5c760ac7436c03000000ff63f8c747f8902f07088d47f8894508bec0d411 *0883c504e93cd3080083c70c3b7b5c760ac7436c03000000ff63f8c747f8542f07088d47f88945 *08bec0d4110883c504e910d3080083c7183b7b5c760ac7436c06000000ff63f8c747ecb82e0708 *8b46048947f0c747f8182f07088b45048947fc8d47ec8945088d47f8894504bebcd41108e9dad6 *080083c7183b7b5c760ac7436c06000000ff63f8c747ec582d07088b46048947f0c747f8b82d07 *088b45048947fc8d47ec8945088d47f8894504bebcd41108e998d6080083c7183b7b5c760ac743 *6c06000000ff63f8c747ecf42b07088b45088947f08b46048947f4c747f8582c07088b45048947 *fc8d47ec8945088d47f8894504bebcd41108e950d60800fc2a07080b000200010000000c00db01 *8d45fc3b43547303ff63fc8b4d048b560489550489cec745fcbc3b070883c5fcff2689f6102b07 *0801000100130001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f88c6b10088b4e04894ffcc707d81112088d57f88955f4beccd4110883c5f0 *e9bad1080089f6042b070801000100130001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4bed4d4110883c5f0e984d10800fc2a070804000100000000001100ff0183c730 *3b7b5c760fbe14b11108c7436c0c000000ff63fcc747d4d43f07088b45008947d8c747dc044007 *088d47d48947e0c747e84c2d0c088d47d48947ec8d47f88947f08d47dc8947f4c747f85c400708 *8d47e88947fc8d77e883c504e956ec040089f600000000240000008b760483c504ff2604000100 *00000000110000008b7500c7450000410708ff2600000000240000008b760883c504ff26040001 *0000000000110000008b7500c7450028410708ff2600000000240000008b760c83c504ff260400 *010000000000110000008b7500c7450050410708ff2600000000240000008b761083c504ff2604 *00010000000000110000008b7500c7450078410708ff2600000000240000008b761483c504ff26 *0400010000000000110000008b7500c74500a0410708ff2600000000240000008b760483c504ff *260400010000000000110000008b7500c74500c8410708ff2600000000240000008b760883c504 *ff260400010000000000110000008b7500c74500f0410708ff2600000000240000008b760c83c5 *04ff260400010000000000110000008b7500c7450018420708ff2600000000240000008b761083 *c504ff260400010000000000110000008b7500c7450040420708ff2600000000240000008b7614 *83c504ff260400010000000000110000008b7500c7450068420708ff2600000000240000008b76 *1883c504ff260400010000000000110000008b7500c7450090420708ff2600000000240000008b *761c83c504ff260400010000000000110000008b7500c74500b8420708ff260000000024000000 *8b762083c504ff260400010000000000110000008b7500c74500e0420708ff2600000000240000 *008b762483c504ff260400010000000000110000008b7500c7450008430708ff26000000002400 *00008b760483c504ff260400010000000000110000008b7500c7450030430708ff260000000024 *0000008b760883c504ff260400010000000000110000008b7500c7450058430708ff2600000000 *240000008b760c83c504ff260400010000000000110000008b7500c7450080430708ff26000000 *00240000008b761083c504ff260400010000000000110000008b7500c74500a8430708ff260400 *0100000000001100000083c7083b7b5c760fbeb8b11108c7436c02000000ff63fcc747fc746207 *088b450089078d77fc83c5048b4d00ff61dc90bea4b1110883c5048b4500ff60f089f6bea8b111 *0883c5048b4500ff60ec89f6beacb1110883c5048b4500ff60e889f62444070814440708000000 *0000000000250000008b7604c7450048440708ff26484407080444070800000000000000002500 *00008b7604c7450068440708ff26beb0b1110883c5048b4500ff60e489f6beb4b1110883c5048b *4500ff60e089f683c7083b7b5c760ac7436c02000000ff63f8c747fc746207088b460489078d77 *fc83c5048b4d00ff61dc89f694440708844407080000000000000000250000008b7604c74500d4 *440708ff26d4440708744407080000000000000000250000008b7604c74500f4440708ff26f444 *0708684407080000000000000000250000000400010000000000110000008b7500c74500144507 *08ff2683c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c747f808d21108c747fcf0 *dc0b088d47f489078d77fc83c5048b4d00ff61f083c7183b7b5c760ac7436c06000000ff63f8c7 *47ecf0dc0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fcf0dc0b088d4ff4890f8d *77fc83c5048b5500ff62f08d760083c7183b7b5c760ac7436c06000000ff63f8c747ec10dd0b08 *c747f008d21108c747f410dd0b088d47ec8947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b *5500ff62f08d760083c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c747f808d211 *08c747fc10dd0b088d47f489078d77fc83c5048b4d00ff61ec83c7183b7b5c760ac7436c060000 *00ff63f8c747ecf0dc0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fc10dd0b088d *4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b7b5c760ac7436c06000000ff63f8c747 *ec10dd0b088b46048947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc *83c5048b4500ff60ec744607082c460708f4450708ac450708644507082c450708000000000000 *0000250000000400010000000000110000008b7500c74500dc460708ff26170004000000000011 *00000083c7143b7b5c760fbec4b11108c7436c05000000ff63fcc747f00c6207088b45008947f4 *8b45048947f88b45088947fc8b450c89078d77f083c510ff650089f6020000002400000083c714 *3b7b5c760ac7436c05000000ff63f8c747f00c6207088b45088947f48b45048947f88b46048947 *fc8b460889078d77f083c50cff65008d760001000000240000008b46088945008b4d048b560489 *550489cec745fc4847070883c5fcff268d760000000000240000008b46088945008b7604c745fc *8c47070883c5fcff268d76000400010000000000110000008d45f83b43547308bec8b11108ff63 *fc8b7500c74500b4470708ff26000000002400000083c7243b7b5c760ac7436c09000000ff63f8 *c747e0d8dc0b088b460c8947e48b46108947e8c747ecd8dc0b088b46048947f08b46088947f4c7 *47f8d8dc0b088d47ec8947fc8d47e089078d77f883c504ff650090040001000000000011000000 *8b7500c74500fc470708ff2683c500e91800000068480708090000000000000000000900000000 *001100000083c7283b7b5c7612bed0b1110883c500c7436c0a000000ff63fcc747dc406107088b *45008947e08b45048947e48b45088947e88b450c8947ec8b45108947f08b45148947f48b451889 *47f88b451c8947fc8b452089078d77dc83c524ff650090070000002400000083c7283b7b5c760a *c7436c0a000000ff63f8c747dc406107088b45188947e08b45148947e48b451c8947e88b451089 *47ec8b450c8947f08b45088947f48b45048947f88b46048947fc8b460889078d77dc83c520ff65 *009006000000240000008b46048945008b7608c745fcf048070883c5fcff268d76000500000024 *0000008b46088945008b4d048b560489550489cec745fc5049070883c5fcff268d760004000000 *240000008b46088945008b7604c745fc7049070883c5fcff268d760003000000240000008b4608 *8945008b4d0c8b560489550c89cec745fc9849070883c5fcff268d760002000000240000008b46 *088945008b4d048b560489550489cec745fcb849070883c5fcff268d760001000000240000008b *46088945008b7604c745fce049070883c5fcff268d760000000000240000008b46088945008b76 *04c745fc084a070883c5fcff268d76000400010000000000110000008d45e43b43547308bed4b1 *1108ff63fc8b7500c74500284a0708ff26000000002400000083c7603b7b5c760ac7436c180000 *00ff63f8c747a4d8dc0b088b46208947a88b46248947acc747b0d8dc0b088b461c8947b48d47a4 *8947b8c747bcd8dc0b088b46148947c08b46188947c4c747c8d8dc0b088d47bc8947cc8d47b089 *47d0c747d4d8dc0b088b460c8947d88b46108947dcc747e0d8dc0b088b46048947e48b46088947 *e8c747ecd8dc0b088d47e08947f08d47d48947f4c747f8d8dc0b088d47ec8947fc8d47c889078d *77f883c504ff650089f60400010000000000110000008b7500c74500704a0708ff260400010000 *0000001100000083c7083b7b5c760fbedcb11108c7436c02000000ff63fcc747fc586107088b45 *0089078d77fc83c504ff650004000100000000001100000083c7083b7b5c760fbee8b11108c743 *6c02000000ff63fcc747fc886107088b450089078d77fc83c504ff650004000100000000001100 *000083c7083b7b5c760fbef4b11108c7436c02000000ff63fcc747fcb86107088b450089078d77 *fc83c504ff650004000100000000001100000083c7083b7b5c760fbefcb11108c7436c02000000 *ff63fcc747fcdc6107088b450089078d77fc83c504ff650083c7083b7b5c760ac7436c02000000 *ff63f8c747fc586107088b460489078d77fc83c504ff650090bee0b1110883c504ff650090444c *07081c4c07080000000000000000250000008b7604c74500644c0708ff26bee4b1110883c504ff *65009083c7083b7b5c760ac7436c02000000ff63f8c747fc886107088b460489078d77fc83c504 *ff650090beecb1110883c504ff650090a44c07087c4c07080000000000000000250000008b7604 *c74500c44c0708ff26c44c0708704c07080000000000000000250000008b7604c74500e44c0708 *ff26e44c0708644c07080000000000000000250000008b7604c74500044d0708ff26bef0b11108 *83c504ff65009083c7083b7b5c760ac7436c02000000ff63f8c747fcb86107088b460489078d77 *fc83c504ff650090bef8b1110883c504ff650090444d07081c4d07080000000000000000250000 *008b7604c74500644d0708ff26644d0708104d07080000000000000000250000008b7604c74500 *844d0708ff2683c7083b7b5c760ac7436c02000000ff63f8c747fcdc6107088b460489078d77fc *83c504ff650090be00b2110883c504ff650090be04b2110883c504ff650090c44d0708b84d0708 *0000000000000000250000008b7604c74500e44d0708ff26e44d0708904d070800000000000000 *00250000008b7604c74500044e0708ff26044e0708844d07080000000000000000250000008b76 *04c74500244e0708ff26244e0708044d0708000000000000000025000000040001000000000011 *0000008b7500c74500444e0708ff2600000000240000008b068b40fcc1e81083f8010f8c100300 *0083f80a0f8f07030000b910b2110848ff24819083c7183b7b5c760ac7436c06000000ff63f8c7 *47ec10dd0b08c747f008d21108c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d *77fc83c5048b4500ff60f083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b08c747f0 *08d21108c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff *60f083c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b088b46048947e8c747ec10dd0b *088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b *4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747 *ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc *83c5048b4500ff60f083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b08c747f008d2 *1108c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec *83c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b088b46048947e8c747ec10dd0b088d *47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500 *ff60ec83c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ec10 *dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5 *048b4500ff60ec83c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b088b46048947f0c7 *47f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c720 *3b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c747ec10dd0b088d47e4 *8947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60 *ec83c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ec10dd0b *088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b *4500ff60ec83c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b088b46048947f0c747f4 *f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f08d76000400 *010000000000110000008b7500c74500644e0708ff2604000100000000001100000083c7083b7b *5c760fbe44b21108c7436c02000000ff63fcc747fc146007088b450089078d77fc83c504ff6500 *04000100000000001100000083c7083b7b5c760fbe48b21108c7436c02000000ff63fcc747fc2c *6007088b450089078d77fc83c504ff650004000100000000001100000083c7083b7b5c760fbe4c *b21108c7436c02000000ff63fcc747fc446007088b450089078d77fc83c504ff65000400010000 *0000001100000083c7083b7b5c760fbe50b21108c7436c02000000ff63fcc747fc5c6007088b45 *0089078d77fc83c504ff650004000100000000001100000083c7083b7b5c760fbe54b21108c743 *6c02000000ff63fcc747fc746007088b450089078d77fc83c504ff650004000100000000001100 *000083c7083b7b5c760fbe58b21108c7436c02000000ff63fcc747fc8c6007088b450089078d77 *fc83c504ff650004000100000000001100000083c7083b7b5c760fbe5cb21108c7436c02000000 *ff63fcc747fca46007088b450089078d77fc83c504ff650004000100000000001100000083c708 *3b7b5c760fbe60b21108c7436c02000000ff63fcc747fcbc6007088b450089078d77fc83c504ff *650004000100000000001100000083c7083b7b5c760fbe70b21108c7436c02000000ff63fcc747 *fcf86007088b450089078d77fc83c504ff650004000100000000001100000083c7083b7b5c760f *be74b21108c7436c02000000ff63fcc747fc106107088b450089078d77fc83c504ff6500040001 *00000000001100000083c7083b7b5c760fbe78b21108c7436c02000000ff63fcc747fc28610708 *8b450089078d77fc83c504ff6500be38b2110883c504ff650090be3cb2110883c504ff65009058 *5407084c5407080000000000000000250000008b7604c7450078540708ff26be40b2110883c504 *ff65009083c7083b7b5c760ac7436c02000000ff63f8c747fc146007088b460489078d77fc83c5 *04ff65009090540708845407080000000000000000250000008b7604c74500cc540708ff26cc54 *0708785407080000000000000000250000008b7604c74500ec540708ff2683c7083b7b5c760ac7 *436c02000000ff63f8c747fc2c6007088b460489078d77fc83c504ff65009083c7083b7b5c760a *c7436c02000000ff63f8c747fc446007088b460489078d77fc83c504ff65009020550708f85407 *080000000000000000250000008b7604c745005c550708ff2683c7083b7b5c760ac7436c020000 *00ff63f8c747fc5c6007088b460489078d77fc83c504ff65009083c7083b7b5c760ac7436c0200 *0000ff63f8c747fc746007088b460489078d77fc83c504ff650090905507086855070800000000 *00000000250000008b7604c74500cc550708ff26cc5507085c5507080000000000000000250000 *008b7604c74500ec550708ff26ec550708ec5407080000000000000000250000008b7604c74500 *0c560708ff2683c7083b7b5c760ac7436c02000000ff63f8c747fc8c6007088b460489078d77fc *83c504ff65009083c7083b7b5c760ac7436c02000000ff63f8c747fca46007088b460489078d77 *fc83c504ff65009040560708185607080000000000000000250000008b7604c745007c560708ff *2683c7083b7b5c760ac7436c02000000ff63f8c747fcbc6007088b460489078d77fc83c504ff65 *0090be64b2110883c504ff650090b0560708885607080000000000000000250000008b7604c745 *00d0560708ff26d05607087c5607080000000000000000250000008b7604c74500f0560708ff26 *be68b2110883c504ff650090be6cb2110883c504ff65009008570708fc56070800000000000000 *00250000008b7604c7450028570708ff2683c7083b7b5c760ac7436c02000000ff63f8c747fcf8 *6007088b460489078d77fc83c504ff65009083c7083b7b5c760ac7436c02000000ff63f8c747fc *106107088b460489078d77fc83c504ff65009083c7083b7b5c760ac7436c02000000ff63f8c747 *fc286107088b460489078d77fc83c504ff650090845707085c5707080000000000000000250000 *008b7604c74500c0570708ff26c0570708345707080000000000000000250000008b7604c74500 *e0570708ff26e0570708285707080000000000000000250000008b7604c7450000580708ff2600 *580708f05607080000000000000000250000008b7604c7450020580708ff26205807080c560708 *0000000000000000250000000400010000000000110000008b7500c7450040580708ff26000000 *00240000008b068b40fcc1e81083f8010f8c4205000083f8100f8f39050000b984b2110848ff24 *819083c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ecf0dc *0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c504 *8b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c7 *47ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77 *fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b088b460489 *47e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489 *078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b088b *46048947e8c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d *47f489078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e410dd *0b088b46048947e8c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc *0b088d47f489078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747 *e4f0dc0b088b46048947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c747 *fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63 *f8c747e410dd0b088b46048947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947 *f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c080000 *00ff63f8c747e4f0dc0b088b46048947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b088d47 *ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7203b7b5c760ac7436c *08000000ff63f8c747e410dd0b088b46048947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b *088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7203b7b5c760a *c7436c08000000ff63f8c747e4f0dc0b088b46048947e8c747ec10dd0b088d47e48947f0c747f4 *f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7203b7b *5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ec10dd0b088d47e48947 *f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83 *c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c747ecf0dc0b088d *47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500 *ff60ec83c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ecf0 *dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5 *048b4500ff60ec83c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b088b46048947e8c7 *47ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77 *fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b088b460489 *47e0c747e410dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec89 *47f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a00 *0000ff63f8c747dc10dd0b088b46048947e0c747e410dd0b088d47dc8947e8c747ec10dd0b088d *47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500 *ff60ec83c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c747ecf0 *dc0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5 *048b4500ff60f08d76000400010000000000110000008b7500c7450060580708ff261800050000 *0000001100000083c7183b7b5c760fbec4b21108c7436c06000000ff63fcc747ecd85f07088b45 *008947f08b45048947f48b45088947f88b450c8947fc8b451089078d77ec83c514ff6500030000 *002400000083c7183b7b5c760ac7436c06000000ff63f8c747ecd85f07088b450c8947f08b4508 *8947f48b45048947f88b46048947fc8b460889078d77ec83c510ff65009002000000240000008b *46048945008b7608c745fc785e070883c5fcff268d760001000000240000008b46088945008b4d *048b560489550489cec745fcc05e070883c5fcff268d760000000000240000008b46088945008b *7604c745fce05e070883c5fcff268d76000400010000000000110000008d45f43b43547308bec8 *b21108ff63fc8b7500c74500085f0708ff26000000002400000083c7303b7b5c760ac7436c0c00 *0000ff63f8c747d4d8dc0b088b46108947d88b46148947dcc747e0d8dc0b088b460c8947e48d47 *d48947e8c747ecd8dc0b088b46048947f08b46088947f4c747f8d8dc0b088d47ec8947fc8d47e0 *89078d77f883c504ff650089f60400010000000000110000008b7500c74500505f0708ff260500 *000001000000ff6500900500000009000000ff650090000000000a000000ff650090000000000a *000100ff650090000000000a000200ff6500900100000002000300ff6500900100000009000300 *ff6500900100000002000400ff6500900100000009000400ff6500900100000002000500ff6500 *900100000009000500ff6500900100000002000600ff6500900100000009000600ff6500900100 *000002000700ff6500900100000009000700ff6500900100000002000800ff6500900100000009 *000800ff6500900100000002000900ff6500900100000009000900ff6500900100000002000a00 *ff6500900100000009000a00ff650090000000000a000b00ff650090000000000a000c00ff6500 *90000000000a000d00ff6500900100000002000e00ff6500900100000009000e00ff6500900100 *000002000f00ff6500900100000009000f00ff6500900100000002001000ff6500900100000009 *001000ff6500900900000001000000ff6500900900000009000000ff6500900100000002000000 *ff6500900100000009000000ff650090000000000a000100ff650090000000000a000200ff6500 *900100000002000300ff6500900100000009000300ff650090000000000a000400ff6500900000 *00000a000500ff6500900100000002000600ff6500900100000009000600ff650090000000000a *000700ff6500900100000002000800ff6500900100000009000800ff650090000000000a000900 *ff650090000000000a000a00ff6500900400000001000000ff6500900400000009000000ff6500 *90000000000a0000008b4500ff60f089f6000000000a0001008b4500ff60ec89f6000000000a00 *02008b4500ff60e889f6000000000a0003008b4500ff60e489f6000000000a0004008b4500ff60 *e089f601000000020005008b4500ff60dc89f601000000090005008b4500ff60dc9090e9000000 *00833dd0b21108000f8596000000c705d0b2110801000000c7450049bb0a0883c504c745003519 *050883c504c7450094b40b0883c504c7450004a10b0883c504c74500919f050883c504c745009c *360c0883c504c745008db3050883c504c74500e524060883c504c745006dc4090883c504c74500 *50a70b0883c504c745004dec090883c504c7450090310c0883c504c745009d180b0883c504c745 *00d4630c0883c50483c5fcff650089f68cd01108dcd211083c63070800000200120003008d45f0 *3b43547303ff63f8c745f8d46d10088975fcc745f4dcd21108be8cd0110883c5f0e98fae08008d *7600be00d2110883c50c8b4500ff60f089f68b45088945108b750c83c510e9d70000008d760083 *c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b450c8947e48b45088947e8c747ec *8c6b10088b45108947f08b45048947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5 *148b4500ff60ec89f6a06307088c63070800000000040000002500000004000000240000008b76 *04c745000c640708ff2603000000240000008975008b760cc745fc1464070883c5fcff2689f68b *46088945008b7604c745fc2864070883c5fcff268d76003c6407087c6307080000000002000000 *2500000004000100010000000c0000008d45f03b43547303ff63fc8975fc8b4d008b5604895500 *89cec745f86864070883c5f8ff268d760002000000150000008d45f43b4354720883c7143b7b5c *760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0746407088b46048947f4c747f840 *6710088b46088947fc8d47f88945f48d77f083c5f4eb840b000200010000000c00000083c70c3b *7b5c760ac7436c03000000ff63fcc747f8a46407088b45048947fc8b4d00890f8d57f88955048b *7604e9daac080089f63c63070800000200180003008d45f83b4354720883c7203b7b5c760ac743 *6c08000000ff63f8c747e4085c100856e8f198080083c4048d47e4894604c706245b1008c745f8 *d46d10088d47e48945fcc747f050630708c747fcfc6407088d47f089078d77fc83c5f8e9370809 *008d760084d01108dcd21108a065070800000200180003008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e87998080083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcc745f4dcd21108be84d0110883c5f0e9fdab080090dcd2110800 *000000240000008b760ce97ca108000c66070800000200180001008d45f43b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e80198080083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcbedcd21108c745f41866070883c5f4ff26e4d1110854d2 *1108d4d1110844d1110854d11108dcd2110834a91108d0ce110898d51108c8d51108e4b2110889 *7500be54d2110883c5fce94cab0800ac660708ac6607088466070800000000250001008b460489 *4500bed0ce1108c74504d066070883c5fce91eab080089f68b45048b4e04894d0489c6e90cab08 *00ec660708d06607088466070801000000250041008466070804000100020000000e0041008d45 *f43b43547303ff63fc8b4d00894df88b56088955008b7604c745fc1067070883c5f4e9bfaa0800 *8d7600a466070801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4bec8d5110883c5f0e988aa08008466070804000000120041018d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec206707088b46088947f08b *460c8947f4c747f8586707088b46048947fc8d47ec8945f48d47f88945f08b761083c5ece92dae *0800908866070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9180c1108894df4bed4d1110883c5f0e907a808008d76008066070801000100130005008d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f46707 *088d4ff8894df48b56048955f0bee4d1110883c5ece9a0ad08008866070800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c0c1108894df4bed4d1110883c5f0 *e97ba708008d76008066070801000100130005008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747ec306807088b46048947f0c747f8806807088d47 *ec8945f48d47f88945f0bee4d1110883c5ece907ad08008d7600806607080100010013004d008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8bc *6807088b4e04894ffc8d57f88955f4c745f034a91108be44d1110883c5ece9adac080090906607 *0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be54d1 *110883c5f0e96ca80800806607080200000015005d048d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec1c6907088b46048947f0c747f874690708 *8b46088947fc8d47ec8945f48d47f88945f0bee4b2110883c5ece915ac08009080660708040001 *00050000000b00df068d45f83b4354720883c7203b7b5c760ac7436c08000000ff63fcc747e48c *6707088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f8a86907088b46048947 *fc8b450089078d47e48945008d47f88945fc8b761483c5f8e9a2ab080089f6a066070801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be98d5110883c5f0 *e960a7080080660708020000002400df0783c7243b7b5c760ac7436c09000000ff63f8c747e010 *6a07088b45088947e48b45048947e88b460c8947ec8b46048947f08b46088947f4c747f8806a07 *088b45088947fc8d47e08945088d47f88945048b7604e908ab0800806607080b00020000000000 *1100ff078d45fc3b43547308be04b31108ff63fcbedcd21108c745fcb46a070883c5fcff268d76 *0024cf110800000000240000008b7610e9489c0800406b070800000200180001008d45f43b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8cd92080083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcbe24cf1108c745f44c6b070883c5f4ff26 *88d0110824cf1108b46b070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e86592080083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f424cf1108be88d0110883c5f0e9e9a508009088d0110824cf110820 *6c070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8f991080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f424cf1108be88d0110883c5f0e97da508009098d0110824cf11088c6c0708000002001800 *03008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88d91 *080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f424cf1108be98 *d0110883c5f0e911a508009088d0110824cf1108f86c070800000200180003008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e82191080083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcc745f424cf1108be88d0110883c5f0e9a5a4 *0800907cd0110824cf1108646d070800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8b590080083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f424cf1108be7cd0110883c5f0e939a408009098d0110824cf *1108d06d070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e84990080083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f424cf1108be98d0110883c5f0e9cda308009080cb110800000000240000008b7608 *e94c9908003c6e070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e8d18f080083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcbe80cb1108c745f4486e070883c5f4ff26d8d4110880cb1108b06e070800000200 *180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *698f080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f480cb1108 *bed8d4110883c5f0e9eda2080090e0d4110800000000240000008b7608e96c9808001c6f070800 *000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8f18e080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbee0d411 *08c745f4286f070883c5f4ff2684d41108a4cb1108906f070800000200180003008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8898e080083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4cb1108be84d4110883c5f0e90d *a2080090acb3110800000000240000008b760ce98c970800fc6f070800000200180001008d45f4 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8118e080083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcbeacb31108c745f40870070883c5 *f4ff2664d411084ccd11087070070800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8a98d080083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f464d41108be4ccd110883c5f0e92da108009064d411080000 *0000240000008b760ce9ac960800dc70070800000200180001008d45f43b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8318d080083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcbe64d41108c745f4e870070883c5f4ff26ccd1110844ca11 *085071070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8c98c080083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcc745f444ca1108beccd1110883c5f0e94da0080090d8d41108f8a51108bc71070800000200 *180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *5d8c080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f8a51108 *bed8d4110883c5f0e9e19f08009024d51108a4a5110814af11082872070800000200180007008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8ed8b080083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4a51108c745f014af *1108be24d5110883c5ece976a3080089f6d8d411080cb41108a072070800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8798b080083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f40cb41108bed8d4110883 *c5f0e9fd9e080090f4d41108d8d411080c73070800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e80d8b080083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4f4d41108bed8d4110883c5f0e9919e080090d8 *d411082cb411087873070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8a18a080083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f42cb41108bed8d4110883c5f0e9259e08009024d5110814af11083cb4 *1108e473070800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8318a080083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f43cb41108c745f014af1108be24d5110883c5ece9baa1080089f6d8d411084cb411 *085c74070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8bd89080083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcc745f44cb41108bed8d4110883c5f0e9419d08009054a8110800000000240000008b7608e9 *c0920800c874070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e84589080083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcbe54a81108c745f4d474070883c5f4ff2684d411081ca611083c7507080000020018 *0003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8dd *88080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f41ca61108be *84d4110883c5f0e9619c0800907cb4110800000000240000008b760ce9e0910800a87507080000 *0200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e86588080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe7cb41108 *c745f4b475070883c5f4ff26a4d411083ca51108acae11081c76070800000200180007008d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f987080083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f43ca51108c745f0acae1108 *bea4d4110883c5ece9829f080089f684d411089cb411089476070800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88587080083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f49cb41108be84d4110883c5f0 *e9099b080090acb4110800000000240000008b760ce9889008000077070800000200180001008d *45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e80d87080083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbeacb41108c745f40c770708 *83c5f4ff2684d411084cd411087477070800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e8a586080083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f44cd41108be84d4110883c5f0e9299a08009084d41108 *ccb41108e077070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e83986080083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f4ccb41108be84d4110883c5f0e9bd99080090a4d41108acae1108dcb411084c *78070800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8c985080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f4dcb41108c745f0acae1108bea4d4110883c5ece9529d080089f684d41108ecb41108c478 *070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e85585080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4ecb41108be84d4110883c5f0e9d998080090fcb4110800000000240000008b760ce9588e08 *003079070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8dd84080083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcbefcb41108c745f43c79070883c5f4ff26dcb4110800000000240000008b760ce9e48d0800 *a479070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e86984080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fcbedcb41108c745f4b079070883c5f4ff26ccb4110800000000240000008b760ce9708d080018 *7a070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8f583080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *beccb41108c745f4247a070883c5f4ff260ca8110800000000240000008b760ce9fc8c08008c7a *070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e88183080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe *0ca81108c745f4987a070883c5f4ff267cc5110800000000240000008b760ce9888c0800007b07 *0800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e80d83080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe7c *c51108c745f40c7b070883c5f4ff26ccd111084ca71108747b070800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a582080083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f44ca71108beccd1110883c5f0 *e92996080090e8d011082ca711084cae1108e07b070800000200180007008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83582080083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f42ca71108c745f04cae1108bee8d0110883 *c5ece9be99080089f6ccd111086cb51108587c070800000200180003008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c181080083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fcc745f46cb51108beccd1110883c5f0e94595080090 *ccd1110880d11108c47c070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e85581080083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f480d11108beccd1110883c5f0e9d994080090ccd111088cb5110830 *7d070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e980080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f48cb51108beccd1110883c5f0e96d94080090e8d011084cae11089cb511089c7d07080000 *0200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e87980080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f49cb5 *1108c745f04cae1108bee8d0110883c5ece90298080089f6ccd11108acb51108147e0708000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e80580080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4acb511 *08beccd1110883c5f0e98993080090e4d11108d4d1110844d111086ccd1108ccb511088cb51108 *807e070801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f87cdc0b08c747fc900a1208c70700d211088d4ff8894df48b560489 *55f0bee4d1110883c5ece91f9708008d7600847e070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9540c1108894df4bed4d1110883c5f0e9f79008008d7600 *807e070801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747eca47e07088b46048947f0c747f8047f07088d47ec8945f48d47f889 *45f0bee4d1110883c5ece9839608008d76008c7e070801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be6ccd110883c5f0e940920800807e070800000000 *24000f0083c7183b7b5c760ac7436c06000000ff63f8c747ec407f07088b46088947f0c747f8a0 *7f07088b46048947fc8d47ec8945008d47f88945fcbe44d1110883c5f8e9fb9508008d76008b75 *08c74508d47f070883c508ff269083c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b08 *8b45088947f88b450c8947fc8b450489078d47f489451c83c514e9f80000008b451889451c8b4d *04894d188b55088955148b751083c510e9639a08008d7600648007082c800708907e0708070800 *0025000100907e070807000000240001008b450c8945fc8b4d1c894df88b7608c7450098800708 *83c5f4e95295080089f6907e070804000000240003008b460c8945f88b4e04894dfc8b56088955 *00be8cb51108c745f4a480070883c5f4ff2690907e070803000000240003008b46108945008b4d *0c8b560489550c89cec745fcd080070883c5fcff268d76008b46088945008b7604c745fc008107 *0883c5fcff268d7600208107081c800708807e07080200000025003f00807e0708160003000000 *000011003f008d45e03b43547308beccb51108ff63fc8b7500c745004c810708ff26bcd1110870 *d11108ecb311088cb511089cb51108bcb5110802000000240000008b45088b4d04894d08894504 *8b7608e9689408008c81070802000000150001008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e08894df08b56048955f4bebcb51108c745ec9881070883c5ecff2689f6020000002400 *00008b45088b4d04894d088945048b7608e90c9408008881070802000000150001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be9cb51108c745ecf48107 *0883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e9b0930800888107 *0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be9cb51108c745ec5082070883c5ecff2689f602000000240000008b45088b4d04894d08 *8945048b7608e9549308008881070802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be9cb51108c745ecac82070883c5ecff2689f6020000 *00240000008b45088b4d04894d088945048b7608e9f89208008881070802000000150001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be9cb51108c745ec *0883070883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e99c920800 *8081070802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df0 *8b56048955f4beecb31108c745ec6483070883c5ecff2689f602000000240000008b45088b4d04 *894d088945048b7608e9409208008881070802000000150001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df08b56048955f4be9cb51108c745ecc083070883c5ecff2689f6 *02000000240000008b45088b4d04894d088945048b7608e9e49108008481070802000000150001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108 *c745ec1c84070883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e988 *9108008881070802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08 *894df08b56048955f4be9cb51108c745ec7884070883c5ecff2689f602000000240000008b4508 *8b4d04894d088945048b7608e92c9108008881070802000000150001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e08894df08b56048955f4be9cb51108c745ecd484070883c5ecff *2689f602000000240000008b45088b4d04894d088945048b7608e9d09008008881070802000000 *150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be9c *b51108c745ec3085070883c5ecff2689f602000000240000008b45088b4d04894d088945048b76 *08e9749008008881070802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e08894df08b56048955f4be9cb51108c745ec8c85070883c5ecff2689f60200000024000000 *8b45088b4d04894d088945048b7608e9189008007c81070802000000150001008d45ec3b435473 *03ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be70d11108c745ece885070883 *c5ecff2689f67881070804000000120013008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ecac8507088b460c8947f08b46108947f4c747f80886 *07088b46048947fc8b460889078d47ec8945f48d47f88945f0bebcd1110883c5ece96a8f080089 *f67881070806000000120013008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8 *c745f8d46d10088975fcc747e4508507088b46148947e88b46188947ecc747f0488607088b4604 *8947f48b46088947f88b460c8947fc8b461089078d47e48945f48d47f08945f0bebcd1110883c5 *ece9ee8e080089f67881070808000000120013008d45ec3b4354720883c7283b7b5c760ac7436c *0a000000ff63f8c745f8d46d10088975fcc747dcf48407088b461c8947e08b46208947e4c747e8 *b88607088b46048947ec8b46088947f08b460c8947f48b46108947f88b46148947fc8b46188907 *8d47dc8945f48d47e88945f0bebcd1110883c5ece9668e080089f6788107080a00000012001300 *8d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc747d4 *988407088b46248947d88b46288947dcc747e0348707088b46048947e48b46088947e88b460c89 *47ec8b46108947f08b46148947f48b46188947f88b461c8947fc8b462089078d47d48945f48d47 *e08945f0bebcd1110883c5ece9d28d080089f6788107080c00000012001b008d45ec3b43547208 *83c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747cc3c8407088b462c89 *47d08b46308947d4c747d8bc8707088b46048947dc8b46088947e08b460c8947e48b46108947e8 *8b46148947ec8b46188947f08b461c8947f48b46208947f88b46248947fc8b462889078d47cc89 *45f48d47d88945f0bebcd1110883c5ece9328d080089f6788107080e00000012001b008d45ec3b *4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975fcc747c4e0830708 *8b46348947c88b46388947ccc747d0508807088b46048947d48b46088947d88b460c8947dc8b46 *108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f48b46288947 *f88b462c8947fc8b463089078d47c48945f48d47d08945f0bebcd1110883c5ece9868c080089f6 *788107081000000012001f008d45ec3b4354720883c7483b7b5c760ac7436c12000000ff63f8c7 *45f8d46d10088975fcc747bc848307088b463c8947c08b46408947c4c747c8f08807088b460489 *47cc8b46088947d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c8947e48b *46208947e88b46248947ec8b46288947f08b462c8947f48b46308947f88b46348947fc8b463889 *078d47bc8945f48d47c88945f0bebcd1110883c5ece9ce8b080089f6788107081200000012001f *008d45ec3b4354720883c7503b7b5c760ac7436c14000000ff63f8c745f8d46d10088975fcc747 *b4288307088b46448947b88b46488947bcc747c09c8907088b46048947c48b46088947c88b460c *8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e4 *8b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88b463c8947fc8b4640 *89078d47b48945f48d47c08945f0bebcd1110883c5ece90a8b080089f678810708140000001200 *1f008d45ec3b4354720883c7583b7b5c760ac7436c16000000ff63f8c745f8d46d10088975fcc7 *47accc8207088b464c8947b08b46508947b4c747b8548a07088b46048947bc8b46088947c08b46 *0c8947c48b46108947c88b46148947cc8b46188947d08b461c8947d48b46208947d88b46248947 *dc8b46288947e08b462c8947e48b46308947e88b46348947ec8b46388947f08b463c8947f48b46 *408947f88b46448947fc8b464889078d47ac8945f48d47b88945f0bebcd1110883c5ece93a8a08 *0089f6788107081600000012001f008d45ec3b4354720883c7603b7b5c760ac7436c18000000ff *63f8c745f8d46d10088975fcc747a4708207088b46548947a88b46588947acc747b0188b07088b *46048947b48b46088947b88b460c8947bc8b46108947c08b46148947c48b46188947c88b461c89 *47cc8b46208947d08b46248947d48b46288947d88b462c8947dc8b46308947e08b46348947e48b *46388947e88b463c8947ec8b46408947f08b46448947f48b46488947f88b464c8947fc8b465089 *078d47a48945f48d47b08945f0bebcd1110883c5ece95e89080089f6788107081800000012001f *008d45ec3b4354720883c7683b7b5c760ac7436c1a000000ff63f8c745f8d46d10088975fcc747 *9c148207088b465c8947a08b46608947a4c747a8e88b07088b46048947ac8b46088947b08b460c *8947b48b46108947b88b46148947bc8b46188947c08b461c8947c48b46208947c88b46248947cc *8b46288947d08b462c8947d48b46308947d88b46348947dc8b46388947e08b463c8947e48b4640 *8947e88b46448947ec8b46488947f08b464c8947f48b46508947f88b46548947fc8b465889078d *479c8945f48d47a88945f0bebcd1110883c5ece97688080089f6788107080d00000024003f0083 *c7703b7b5c760ac7436c1c000000ff63f8c74794b88107088b45048947988b463489479cc747a0 *c48c07088b45348947a48b46048947a88b45308947ac8b46088947b08b452c8947b48b460c8947 *b88b45288947bc8b46108947c08b45248947c48b46148947c88b45208947cc8b46188947d08b45 *1c8947d48b461c8947d88b45188947dc8b46208947e08b45148947e48b46248947e88b45108947 *ec8b46288947f08b450c8947f48b462c8947f88b45088947fc8b463089078d47948945348d47a0 *894530bebcd1110883c52ce994870800788107080100000024003f008b46348945d48b46308945 *d88b462c8945dc8b46288945e08b46248945e48b46208945e88b461c8945ec8b46188945f08b46 *148945f48b46108945f88b460c8945fc8b46088945008b45048b4e04894d0489c6c745d0ac8d07 *0883c5d0ff2690788107080b0002000000000011003f008d45d03b43547308bed4b51108ff63fc *8b7500c745008c8e0708ff2654d11108d4b511081c8f070802000000150001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebaa89f6188f07080b00 *0200000000001100030083c70c3b7b5c760fbedcb51108c7436c03000000ff63fcc747f82c8f07 *088b45008947fc8b4d04890f8d57f8895504be54d11108e96b8208008d7600c4d11108d4d11108 *28d41108a8d6110888d6110898d61108bcb31108dcb311080cb511081cb511082cb51108a48f07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9640c110889 *4df4bed4d1110883c5f0e9238008008d7600a48f0708420000002400010083c70c3b7b5c761ec7 *450014900708c7436c03000000b8ff00000083f000894320e976ad0800c747f8d88f07088d4ff8 *894d088b750483c504e9b681080089f6a48f070800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9bc0c1108894df4bed4d1110883c5f0e99b7f08008d760083c5 *04e97cffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9c80c1108894df4bed4d1110883c5f0e9577f08008d7600a48f07084200000024000100 *83c70c3b7b5c761ec74500e0900708c7436c03000000b8ff00000083f000894320e9aaac0800c7 *47f8a49007088d4ff8894d088b750483c504e9ea80080089f683c504ebbb8d7600a48f07080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9200d1108894df4be *d4d1110883c5f0e9c77e08008d7600a48f0708420000002400010083c70c3b7b5c761ec7450070 *910708c7436c03000000b8ff00000083f000894320e91aac0800c747f8349107088d4ff8894d08 *8b750483c504e95a80080089f6a48f070800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9780d1108894df4bed4d1110883c5f0e93f7e08008d760083c504e97c *ffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9840d1108894df4bed4d1110883c5f0e9fb7d08008d7600a48f0708420000002400010083c70c *3b7b5c761ec745003c920708c7436c03000000b8ff00000083f000894320e94eab0800c747f800 *9207088d4ff8894d088b750483c504e98e7f080089f683c504ebbb8d7600a48f07080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9dc0d1108894df4bed4d111 *0883c5f0e96b7d08008d7600a48f0708420000002400010083c70c3b7b5c761ec74500cc920708 *c7436c03000000b8ff00000083f000894320e9beaa0800c747f8909207088d4ff8894d088b7504 *83c504e9fe7e080089f683c508ebbb8d7600a48f070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9340e1108894df4bed4d1110883c5f0e9db7c08008d7600 *a48f0708420000002400010083c70c3b7b5c761ec745005c930708c7436c03000000b8ff000000 *83f000894320e92eaa0800c747f8209307088d4ff8894d088b750483c504e96e7e080089f6a48f *070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98c0e1108 *894df4bed4d1110883c5f0e9537c08008d760083c508e97cffffffa48f07080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9980e1108894df4bed4d1110883c5 *f0e90f7c08008d7600a48f0708420000002400010083c70c3b7b5c761ec7450028940708c7436c *03000000b8ff00000083f000894320e962a90800c747f8ec9307088d4ff8894d088b750483c504 *e9a27d080089f683c508ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9f00e1108894df4bed4d1110883c5f0e97f7b08008d7600a48f07 *08420000002400010083c70c3b7b5c761ec74500b8940708c7436c03000000b8ff00000083f000 *894320e9d2a80800c747f87c9407088d4ff8894d088b750483c504e9127d080089f683c50cebbb *8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9480f1108894df4bed4d1110883c5f0e9ef7a08008d7600a48f0708420000002400010083c70c *3b7b5c761ec7450048950708c7436c03000000b8ff00000083f000894320e942a80800c747f80c *9507088d4ff8894d088b750483c504e9827c080089f6a48f070800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9a00f1108894df4bed4d1110883c5f0e9677a08 *008d760083c50ce97cffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9ac0f1108894df4bed4d1110883c5f0e9237a08008d7600a48f07084200 *00002400010083c70c3b7b5c761ec7450014960708c7436c03000000b8ff00000083f000894320 *e976a70800c747f8d89507088d4ff8894d088b750483c504e9b67b080089f683c50cebbb8d7600 *a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90410 *1108894df4bed4d1110883c5f0e9937908008d7600a48f0708420000002400010083c70c3b7b5c *761ec74500a4960708c7436c03000000b8ff00000083f000894320e9e6a60800c747f868960708 *8d4ff8894d088b750483c504e9267b080089f683c510ebbb8d7600a48f07080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b95c101108894df4bed4d1110883c5 *f0e9037908008d7600a48f0708420000002400010083c70c3b7b5c761ec7450034970708c7436c *03000000b8ff00000083f000894320e956a60800c747f8f89607088d4ff8894d088b750483c504 *e9967a080089f6a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9b4101108894df4bed4d1110883c5f0e97b7808008d760083c510e97cffffffa48f07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c010110889 *4df4bed4d1110883c5f0e9377808008d7600a48f0708420000002400010083c70c3b7b5c761ec7 *450000980708c7436c03000000b8ff00000083f000894320e98aa50800c747f8c49707088d4ff8 *894d088b750483c504e9ca79080089f683c510ebbb8d7600a48f070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b918111108894df4bed4d1110883c5f0e9a7 *7708008d7600a48f0708420000002400010083c70c3b7b5c761ec7450090980708c7436c030000 *00b8ff00000083f000894320e9faa40800c747f8549807088d4ff8894d088b750483c504e93a79 *080089f683c514ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b970111108894df4bed4d1110883c5f0e9177708008d7600a48f07084200 *00002400010083c70c3b7b5c761ec7450020990708c7436c03000000b8ff00000083f000894320 *e96aa40800c747f8e49807088d4ff8894d088b750483c504e9aa78080089f6a48f070800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c8111108894df4bed4d1 *110883c5f0e98f7608008d760083c514e97cffffffa48f070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9d4111108894df4bed4d1110883c5f0e94b760800 *8d7600a48f0708420000002400010083c70c3b7b5c761ec74500ec990708c7436c03000000b8ff *00000083f000894320e99ea30800c747f8b09907088d4ff8894d088b750483c504e9de77080089 *f683c514ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b92c121108894df4bed4d1110883c5f0e9bb7508008d7600a48f07084200000024 *00010083c70c3b7b5c761ec745007c9a0708c7436c03000000b8ff00000083f000894320e90ea3 *0800c747f8409a07088d4ff8894d088b750483c504e94e77080089f683c518ebbb8d7600a48f07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98412110889 *4df4bed4d1110883c5f0e92b7508008d7600a48f0708420000002400010083c70c3b7b5c761ec7 *45000c9b0708c7436c03000000b8ff00000083f000894320e97ea20800c747f8d09a07088d4ff8 *894d088b750483c504e9be76080089f6a48f070800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9dc121108894df4bed4d1110883c5f0e9a37408008d760083c5 *18e97cffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9e8121108894df4bed4d1110883c5f0e95f7408008d7600a48f07084200000024000100 *83c70c3b7b5c761ec74500d89b0708c7436c03000000b8ff00000083f000894320e9b2a10800c7 *47f89c9b07088d4ff8894d088b750483c504e9f275080089f683c518ebbb8d7600a48f07080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b940131108894df4be *d4d1110883c5f0e9cf7308008d7600a48f0708420000002400010083c70c3b7b5c761ec7450068 *9c0708c7436c03000000b8ff00000083f000894320e922a10800c747f82c9c07088d4ff8894d08 *8b750483c504e96275080089f683c51cebbb8d7600a48f070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b998131108894df4bed4d1110883c5f0e93f730800 *8d7600a48f0708420000002400010083c70c3b7b5c761ec74500f89c0708c7436c03000000b8ff *00000083f000894320e992a00800c747f8bc9c07088d4ff8894d088b750483c504e9d274080089 *f6a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f0 *131108894df4bed4d1110883c5f0e9b77208008d760083c51ce97cffffffa48f07080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b900141108894df4bed4d111 *0883c5f0e9737208008d7600a48f0708420000002400010083c70c3b7b5c761ec74500c49d0708 *c7436c03000000b8ff00000083f000894320e9c69f0800c747f8889d07088d4ff8894d088b7504 *83c504e90674080089f683c51cebbb8d7600a48f070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b958141108894df4bed4d1110883c5f0e9e37108008d7600 *a48f0708420000002400010083c70c3b7b5c761ec74500549e0708c7436c03000000b8ff000000 *83f000894320e9369f0800c747f8189e07088d4ff8894d088b750483c504e97673080089f683c5 *20ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9b0141108894df4bed4d1110883c5f0e9537108008d7600a48f07084200000024000100 *83c70c3b7b5c761ec74500e49e0708c7436c03000000b8ff00000083f000894320e9a69e0800c7 *47f8a89e07088d4ff8894d088b750483c504e9e672080089f6a48f070800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b908151108894df4bed4d1110883c5f0e9 *cb7008008d760083c520e97cffffffa48f070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b914151108894df4bed4d1110883c5f0e9877008008d7600a48f07 *08420000002400010083c70c3b7b5c761ec74500b09f0708c7436c03000000b8ff00000083f000 *894320e9da9d0800c747f8749f07088d4ff8894d088b750483c504e91a72080089f683c520ebbb *8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b96c151108894df4bed4d1110883c5f0e9f76f08008d7600a48f0708420000002400010083c70c *3b7b5c761ec7450040a00708c7436c03000000b8ff00000083f000894320e94a9d0800c747f804 *a007088d4ff8894d088b750483c504e98a71080089f683c524ebbb8d7600a48f07080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c4151108894df4bed4d111 *0883c5f0e9676f08008d7600a48f0708420000002400010083c70c3b7b5c761ec74500d0a00708 *c7436c03000000b8ff00000083f000894320e9ba9c0800c747f894a007088d4ff8894d088b7504 *83c504e9fa70080089f6a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b91c161108894df4bed4d1110883c5f0e9df6e08008d760083c524e97cffffff *a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92816 *1108894df4bed4d1110883c5f0e99b6e08008d7600a48f0708420000002400010083c70c3b7b5c *761ec745009ca10708c7436c03000000b8ff00000083f000894320e9ee9b0800c747f860a10708 *8d4ff8894d088b750483c504e92e70080089f683c524ebbb8d7600a48f07080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980161108894df4bed4d1110883c5 *f0e90b6e08008d7600a48f0708420000002400010083c70c3b7b5c761ec745002ca20708c7436c *03000000b8ff00000083f000894320e95e9b0800c747f8f0a107088d4ff8894d088b750483c504 *e99e6f080089f683c528ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9d8161108894df4bed4d1110883c5f0e97b6d08008d7600a48f07 *08420000002400010083c70c3b7b5c761ec74500bca20708c7436c03000000b8ff00000083f000 *894320e9ce9a0800c747f880a207088d4ff8894d088b750483c504e90e6f080089f6a48f070800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930171108894df4 *bed4d1110883c5f0e9f36c08008d760083c528e97cffffffa48f070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b940171108894df4bed4d1110883c5f0e9af *6c08008d7600a48f0708420000002400010083c70c3b7b5c761ec7450088a30708c7436c030000 *00b8ff00000083f000894320e9029a0800c747f84ca307088d4ff8894d088b750483c504e9426e *080089f683c528ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b998171108894df4bed4d1110883c5f0e91f6c08008d7600a48f07084200 *00002400010083c70c3b7b5c761ec7450018a40708c7436c03000000b8ff00000083f000894320 *e972990800c747f8dca307088d4ff8894d088b750483c504e9b26d080089f683c52cebbb8d7600 *a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f017 *1108894df4bed4d1110883c5f0e98f6b08008d7600a48f0708420000002400010083c70c3b7b5c *761ec74500a8a40708c7436c03000000b8ff00000083f000894320e9e2980800c747f86ca40708 *8d4ff8894d088b750483c504e9226d080089f6a48f070800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b948181108894df4bed4d1110883c5f0e9076b08008d76 *0083c52ce97cffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b954181108894df4bed4d1110883c5f0e9c36a08008d7600a48f07084200000024 *00010083c70c3b7b5c761ec7450074a50708c7436c03000000b8ff00000083f000894320e91698 *0800c747f838a507088d4ff8894d088b750483c504e9566c080089f683c52cebbb8d7600a48f07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ac18110889 *4df4bed4d1110883c5f0e9336a08008d7600a48f0708420000002400010083c70c3b7b5c761ec7 *450004a60708c7436c03000000b8ff00000083f000894320e986970800c747f8c8a507088d4ff8 *894d088b750483c504e9c66b080089f683c530ebbb8d7600a48f070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b904191108894df4bed4d1110883c5f0e9a3 *6908008d7600a48f0708420000002400010083c70c3b7b5c761ec7450094a60708c7436c030000 *00b8ff00000083f000894320e9f6960800c747f858a607088d4ff8894d088b750483c504e9366b *080089f6a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b95c191108894df4bed4d1110883c5f0e91b6908008d760083c530e97cffffffa48f07080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b968191108894df4be *d4d1110883c5f0e9d76808008d7600a48f0708420000002400010083c70c3b7b5c761ec7450060 *a70708c7436c03000000b8ff00000083f000894320e92a960800c747f824a707088d4ff8894d08 *8b750483c504e96a6a080089f683c530ebbb8d7600a48f070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9c0191108894df4bed4d1110883c5f0e947680800 *8d7600a48f0708420000002400010083c70c3b7b5c761ec74500f0a70708c7436c03000000b8ff *00000083f000894320e99a950800c747f8b4a707088d4ff8894d088b750483c504e9da69080089 *f683c534ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9181a1108894df4bed4d1110883c5f0e9b76708008d7600a48f07084200000024 *00010083c70c3b7b5c761ec7450080a80708c7436c03000000b8ff00000083f000894320e90a95 *0800c747f844a807088d4ff8894d088b750483c504e94a69080089f6a48f070800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9701a1108894df4bed4d1110883 *c5f0e92f6708008d760083c534e97cffffffa48f070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9781a1108894df4bed4d1110883c5f0e9eb6608008d7600 *a48f0708420000002400010083c70c3b7b5c761ec745004ca90708c7436c03000000b8ff000000 *83f000894320e93e940800c747f810a907088d4ff8894d088b750483c504e97e68080089f683c5 *34ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9d01a1108894df4bed4d1110883c5f0e95b6608008d7600a48f07084200000024000100 *83c70c3b7b5c761ec74500dca90708c7436c03000000b8ff00000083f000894320e9ae930800c7 *47f8a0a907088d4ff8894d088b750483c504e9ee67080089f683c534ebbb8d760083c7383b7b5c *760ac7436c0e000000ff63f8c747cc28c409088b453c8947d08b45348947d48b45308947d88b45 *2c8947dc8b45288947e08b45248947e48b45208947e88b451c8947ec8b45188947f08b45148947 *f48b45108947f88b450c8947fc8b450889078d47cc89453c8b750483c538e96d6708009083c534 *e938ffffff9caa070824aa0708a48f07080f00000025000100a48f070810000000240001008b46 *0483f87d750f8b7504c74504b8aa070883c504ff2683c538e9f9feffff908b46088945008b7604 *c745fcc4aa070883c5fcff268d7600e4aa07081caa0708a48f07080f000000250001008b7604c7 *450010ab0708ff2683c534e9b8feffff1cab07081cab07081cab07081cab07081cab070810ab07 *081cab07081cab0708a48f07080f00000025000100a48f0708040001000f0000000b0001008d45 *c03b43547303ff63fc8b46048945fc8b463c8945c88b46388945cc8b46348945d08b46308945d4 *8b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b4614 *8945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c450ab070883c5c4ff2689 *f6a48f0708040001000f0000000b0003008d45f83b4354720883c7403b7b5c760ac7436c100000 *00ff63fcc747c460ab07088b46048947c88b46088947cc8b460c8947d08b46108947d48b461489 *47d88b46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec8b462c8947f08b *46308947f48b46348947f88b45008947fc8b463889078d47c4894500c745fc28d411088b763c83 *c5f8e99a69080089f6b48f070800000200120009008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f40cb51108be98d6110883c5f0e9576508008d760083c74c3b7b5c760ac7436c1300 *0000ff63f8c747b8e8ab07088b45388947bc8b453c8947c08b45348947c48b45308947c88b452c *8947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f888ac07088d47b889453c8d47 *f88945388b750483c534e9cf6808008d760083c534e9fcfbffff48ad0708b4ac0708a48f07080f *00000025009300a48f070810000000240093008b460483f83d750f8b7504c7450464ad070883c5 *04ff2683c538e9bdfbffff908b46088945008b7604c745fc70ad070883c5fcff268d760090ad07 *088ca90708a48f07080f000000250093008b7604c74500bcad0708ff2683c534e97cfbffffc8ad *0708c8ad0708c8ad0708c8ad0708c8ad0708bcad0708c8ad0708c8ad0708a48f07080f00000025 *009300a48f0708040001000f0000000b0093008d45c03b43547303ff63fc8b46048945fc8b463c *8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e0 *8b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b4500 *8b4e08894d0089c6c745c4fcad070883c5c4ff2689f683c7403b7b5c760ac7436c10000000ff63 *f8c747c40cae07088b45388947c88b453c8947cc8b45348947d08b45308947d48b452c8947d88b *45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b451089 *47f48b450c8947f88b45088947fc8b450489078d47c489453cc7453828d411088b750483c534e9 *0667080089f684ae0708fca80708a48f07080f0000002500930083c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8cca807088b46048945fc8d4ff8894df8bec4d11108c7450024af070883c5f4 *e9b76608008d760083c534e918f9ffff60af070860af070860af070860af070824af070860af07 *0860af070860af0708a08f07080f00000025002701a08f0708040001000f0000000b0027018d45 *b83b43547303ff63fc8b46048945fc8b463c8945c88b46388945cc8b46348945d08b46308945d4 *8b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b4614 *8945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c494af070883c5c4ff2689 *f683c7403b7b5c760ac7436c10000000ff63f8c747c4a4af07088b45388947c88b453c8947cc8b *45348947d08b45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c89 *47e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47 *c489453cc7453828d411088b750483c534e96e65080089f683c534e940f7ffffa8b007081cb007 *08a08f07080f00000025002701a08f070810000000240027018b460483f82c750f8b7504c74504 *c4b0070883c504ff2683c538e901f7ffff908b46088945008b7604c745fcd0b0070883c5fcff26 *8d7600f0b0070830a80708a08f07080f000000250027018b7604c745001cb10708ff2683c534e9 *c0f6ffff28b1070828b1070828b1070828b1070828b107081cb1070828b1070828b10708a08f07 *080f00000025002701a08f0708040001000f0000000b0027018d45c03b43547303ff63fc8b4604 *8945fc8b463c8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc *8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c *8945f88b45008b4e08894d0089c6c745c45cb1070883c5c4ff2689f6a08f0708040001000e0000 *000b0027018d45f83b4354720883c7403b7b5c760ac7436c10000000ff63fcc747c46cb107088b *46048947c88b46088947cc8b460c8947d08b46108947d48b46148947d88b46188947dc8b461c89 *47e08b46208947e48b46248947e88b46288947ec8b462c8947f08b46308947f48b45008947f88b *46348947fc8b463889078d47c4894500c745fc28d411088b763883c5f8e98e63080089f6b48f07 *0800000200120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98 *d6110883c5f0e94b5f08008d760083c7483b7b5c760ac7436c12000000ff63f8c747bcf4b10708 *8b45348947c08b45388947c48b45308947c88b452c8947cc8b45288947d08b45248947d48b4520 *8947d88b451c8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f0 *8b45048947f4c747f894b207088d47bc8945388d47f88945348b750483c530e9c96208009083c5 *30e90cf4ffff4cb30708c0b20708a08f07080e00000025002703a08f07080f000000240027038b *460483f83d750f8b7504c7450468b3070883c504ff2683c534e9cdf3ffff908b46088945008b76 *04c745fc74b3070883c5fcff268d760094b30708a0a70708a08f07080e000000250027038b7604 *c74500c0b30708ff2683c530e98cf3ffffccb30708ccb30708ccb30708ccb30708ccb30708c0b3 *0708ccb30708ccb30708a08f07080e00000025002703a08f0708040001000e0000000b0027038d *45c43b43547303ff63fc8b46048945fc8b46388945cc8b46348945d08b46308945d48b462c8945 *d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745c800b4070883c5c8ff2683c73c3b7b5c *760ac7436c0f000000ff63f8c747c810b407088b45348947cc8b45388947d08b45308947d48b45 *2c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947 *f08b45108947f48b450c8947f88b45088947fc8b450489078d47c8894538c7453428d411088b75 *0483c530e91061080080b4070810a70708a08f07080e0000002500270383c70c3b7b5c760ac743 *6c03000000ff63f8c747f8e0a607088b46048945fc8d4ff8894df8bec4d11108c7450018b50708 *83c5f4e9c36008008d760083c530e938f1ffff54b5070854b5070854b5070854b5070818b50708 *54b5070854b5070854b50708a08f07080e00000025002703a08f0708040001000e0000000b0027 *038d45bc3b43547303ff63fc8b46048945fc8b46388945cc8b46348945d08b46308945d48b462c *8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f0 *8b46108945f48b460c8945f88b45008b4e08894d0089c6c745c888b5070883c5c8ff2683c73c3b *7b5c760ac7436c0f000000ff63f8c747c898b507088b45348947cc8b45388947d08b45308947d4 *8b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b4514 *8947f08b45108947f48b450c8947f88b45088947fc8b450489078d47c8894538c7453428d41108 *8b750483c530e9885f080083c530e970efffff8cb6070808b60708a08f07080e00000025002703 *a08f07080f000000240027038b460483f82c750f8b7504c74504a8b6070883c504ff2683c534e9 *31efffff908b46088945008b7604c745fcb4b6070883c5fcff268d7600d4b6070844a60708a08f *07080e000000250027038b7604c7450000b70708ff2683c530e9f0eeffff0cb707080cb707080c *b707080cb707080cb7070800b707080cb707080cb70708a08f07080e00000025002703a08f0708 *040001000e0000000b0027038d45c43b43547303ff63fc8b46048945fc8b46388945cc8b463489 *45d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b *46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c840b7 *070883c5c8ff26a08f0708040001000d0000000b0027038d45f83b4354720883c73c3b7b5c760a *c7436c0f000000ff63fcc747c850b707088b46048947cc8b46088947d08b460c8947d48b461089 *47d88b46148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f08b *462c8947f48b45008947f88b46308947fc8b463489078d47c8894500c745fc28d411088b763483 *c5f8e9b85d0800b48f070800000200120011008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f41cb51108be98d6110883c5f0e9775908008d760083c7443b7b5c760ac7436c11000000 *ff63f8c747c0d0b707088b45308947c48b45348947c88b452c8947cc8b45288947d08b45248947 *d48b45208947d88b451c8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45 *088947f08b45048947f4c747f868b807088d47c08945348d47f88945308b750483c52ce9fb5c08 *008d760083c52ce950ecffff1cb9070894b80708a08f07080d00000025002703a08f07080e0000 *00240027038b460483f83d750f8b7504c7450438b9070883c504ff2683c530e911ecffff908b46 *088945008b7604c745fc44b9070883c5fcff268d760064b90708b4a50708a08f07080d00000025 *0027038b7604c7450090b90708ff2683c52ce9d0ebffff9cb907089cb907089cb907089cb90708 *9cb9070890b907089cb907089cb90708a08f07080d00000025002703a08f0708040001000d0000 *000b0027038d45c83b43547303ff63fc8b46048945fc8b46348945d08b46308945d48b462c8945 *d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745ccd0b9070883c5ccff2689f683c7383b *7b5c760ac7436c0e000000ff63f8c747cce0b907088b45308947d08b45348947d48b452c8947d8 *8b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b4510 *8947f48b450c8947f88b45088947fc8b450489078d47cc894534c7453028d411088b750483c52c *e94a5b080089f64cba070824a50708a08f07080d0000002500270383c70c3b7b5c760ac7436c03 *000000ff63f8c747f8f4a407088b46048945fc8d4ff8894df8bec4d11108c74500e0ba070883c5 *f4e9fb5a08008d760083c52ce984e9ffff1cbb07081cbb07081cbb07081cbb0708e0ba07081cbb *07081cbb07081cbb0708a08f07080d00000025002703a08f0708040001000d0000000b0027038d *45c03b43547303ff63fc8b46048945fc8b46348945d08b46308945d48b462c8945d88b46288945 *dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b46 *0c8945f88b45008b4e08894d0089c6c745cc50bb070883c5ccff2689f683c7383b7b5c760ac743 *6c0e000000ff63f8c747cc60bb07088b45308947d08b45348947d48b452c8947d88b45288947dc *8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c *8947f88b45088947fc8b450489078d47cc894534c7453028d411088b750483c52ce9ca59080089 *f683c52ce9c4e7ffff4cbc0708ccbb0708a08f07080d00000025002703a08f07080e0000002400 *27038b460483f82c750f8b7504c7450468bc070883c504ff2683c530e985e7ffff908b46088945 *008b7604c745fc74bc070883c5fcff268d760094bc070858a40708a08f07080d00000025002703 *8b7604c74500c0bc0708ff2683c52ce944e7ffffccbc0708ccbc0708ccbc0708ccbc0708ccbc07 *08c0bc0708ccbc0708ccbc0708a08f07080d00000025002703a08f0708040001000d0000000b00 *27038d45c83b43547303ff63fc8b46048945fc8b46348945d08b46308945d48b462c8945d88b46 *288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945 *f48b460c8945f88b45008b4e08894d0089c6c745cc00bd070883c5ccff2689f6a08f0708040001 *000c0000000b0027038d45f83b4354720883c7383b7b5c760ac7436c0e000000ff63fcc747cc10 *bd07088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e4 *8b461c8947e88b46208947ec8b46248947f08b46288947f48b45008947f88b462c8947fc8b4630 *89078d47cc894500c745fc28d411088b763083c5f8e90258080089f6b48f070800000200120011 *008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6110883c5f0e9bf *5308008d760083c7403b7b5c760ac7436c10000000ff63f8c747c48cbd07088b452c8947c88b45 *308947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947 *e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f820be07088d47c48945308d *47f889452c8b750483c528e9495708009083c528e9b4e4ffffccbe07084cbe0708a08f07080c00 *000025002703a08f07080d000000240027038b460483f83d750f8b7504c74504e8be070883c504 *ff2683c52ce975e4ffff908b46088945008b7604c745fcf4be070883c5fcff268d760014bf0708 *c8a30708a08f07080c000000250027038b7604c7450040bf0708ff2683c528e934e4ffff4cbf07 *084cbf07084cbf07084cbf07084cbf070840bf07084cbf07084cbf0708a08f07080c0000002500 *2703a08f0708040001000c0000000b0027038d45cc3b43547303ff63fc8b46048945fc8b463089 *45d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b *46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d080bf070883c5d0ff *2683c7343b7b5c760ac7436c0d000000ff63f8c747d090bf07088b452c8947d48b45308947d88b *45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b451089 *47f48b450c8947f88b45088947fc8b450489078d47d0894530c7452c28d411088b750483c528e9 *a8550800f4bf070838a30708a08f07080c0000002500270383c70c3b7b5c760ac7436c03000000 *ff63f8c747f808a307088b46048945fc8d4ff8894df8bec4d11108c7450080c0070883c5f4e95b *5508008d760083c528e9f8e1ffffbcc00708bcc00708bcc00708bcc0070880c00708bcc00708bc *c00708bcc00708a08f07080c00000025002703a08f0708040001000c0000000b0027038d45c43b *43547303ff63fc8b46048945fc8b46308945d48b462c8945d88b46288945dc8b46248945e08b46 *208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745d0f0c0070883c5d0ff2683c7343b7b5c760ac7436c0d000000ff63f8c747d0 *00c107088b452c8947d48b45308947d88b45288947dc8b45248947e08b45208947e48b451c8947 *e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47d0 *894530c7452c28d411088b750483c528e93854080083c528e948e0ffffdcc1070864c10708a08f *07080c00000025002703a08f07080d000000240027038b460483f82c750f8b7504c74504f8c107 *0883c504ff2683c52ce909e0ffff908b46088945008b7604c745fc04c2070883c5fcff268d7600 *24c207086ca20708a08f07080c000000250027038b7604c7450050c20708ff2683c528e9c8dfff *ff5cc207085cc207085cc207085cc207085cc2070850c207085cc207085cc20708a08f07080c00 *000025002703a08f0708040001000c0000000b0027038d45cc3b43547303ff63fc8b46048945fc *8b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b4618 *8945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d090c20708 *83c5d0ff26a08f0708040001000b0000000b0027038d45f83b4354720883c7343b7b5c760ac743 *6c0d000000ff63fcc747d0a0c207088b46048947d48b46088947d88b460c8947dc8b46108947e0 *8b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f48b45008947f88b4628 *8947fc8b462c89078d47d0894500c745fc28d411088b762c83c5f8e980520800b48f0708000002 *00120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6110883 *c5f0e93f4e08008d760083c73c3b7b5c760ac7436c0f000000ff63f8c747c814c307088b452889 *47cc8b452c8947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e48b *45108947e88b450c8947ec8b45088947f08b45048947f4c747f8a0c307088d47c889452c8d47f8 *8945288b750483c524e9cf5108008d760083c524e94cddffff48c40708ccc30708a08f07080b00 *000025002703a08f07080c000000240027038b460483f83d750f8b7504c7450464c4070883c504 *ff2683c528e90dddffff908b46088945008b7604c745fc70c4070883c5fcff268d760090c40708 *dca10708a08f07080b000000250027038b7604c74500bcc40708ff2683c524e9ccdcffffc8c407 *08c8c40708c8c40708c8c40708c8c40708bcc40708c8c40708c8c40708a08f07080b0000002500 *2703a08f0708040001000b0000000b0027038d45d03b43547303ff63fc8b46048945fc8b462c89 *45d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b *46108945f48b460c8945f88b45008b4e08894d0089c6c745d4fcc4070883c5d4ff2689f683c730 *3b7b5c760ac7436c0c000000ff63f8c747d40cc507088b45288947d88b452c8947dc8b45248947 *e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45 *088947fc8b450489078d47d489452cc7452828d411088b750483c524e93650080089f66cc50708 *4ca10708a08f07080b0000002500270383c70c3b7b5c760ac7436c03000000ff63f8c747f81ca1 *07088b46048945fc8d4ff8894df8bec4d11108c74500f4c5070883c5f4e9e74f08008d760083c5 *24e998daffff30c6070830c6070830c6070830c60708f4c5070830c6070830c6070830c60708a0 *8f07080b00000025002703a08f0708040001000b0000000b0027038d45c83b43547303ff63fc8b *46048945fc8b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b461889 *45ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d464c6070883 *c5d4ff2689f683c7303b7b5c760ac7436c0c000000ff63f8c747d474c607088b45288947d88b45 *2c8947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947 *f48b450c8947f88b45088947fc8b450489078d47d489452cc7452828d411088b750483c524e9ce *4e080089f683c524e9f0d8ffff48c70708d4c60708a08f07080b00000025002703a08f07080c00 *0000240027038b460483f82c750f8b7504c7450464c7070883c504ff2683c528e9b1d8ffff908b *46088945008b7604c745fc70c7070883c5fcff268d760090c7070880a00708a08f07080b000000 *250027038b7604c74500bcc70708ff2683c524e970d8ffffc8c70708c8c70708c8c70708c8c707 *08c8c70708bcc70708c8c70708c8c70708a08f07080b00000025002703a08f0708040001000b00 *00000b0027038d45d03b43547303ff63fc8b46048945fc8b462c8945d88b46288945dc8b462489 *45e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b *45008b4e08894d0089c6c745d4fcc7070883c5d4ff2689f6a08f0708040001000a0000000b0027 *038d45f83b4354720883c7303b7b5c760ac7436c0c000000ff63fcc747d40cc807088b46048947 *d88b46088947dc8b460c8947e08b46108947e48b46148947e88b46188947ec8b461c8947f08b46 *208947f48b45008947f88b46248947fc8b462889078d47d4894500c745fc28d411088b762883c5 *f8e91e4d080089f6b48f070800000200120003008d45f03b43547303ff63f8c745f8d46d100889 *75fcc745f4bcb31108be98d6110883c5f0e9db4808008d760083c7383b7b5c760ac7436c0e0000 *00ff63f8c747cc7cc807088b45248947d08b45288947d48b45208947d88b451c8947dc8b451889 *47e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f804c90708 *8d47cc8945288d47f88945248b750483c520e9714c08009083c520e904d6ffffa4c9070830c907 *08a08f07080a00000025006703a08f07080b000000240067038b460483f83d750f8b7504c74504 *c0c9070883c504ff2683c524e9c5d5ffff908b46088945008b7604c745fcccc9070883c5fcff26 *8d7600ecc90708f09f0708a08f07080a000000250067038b7604c7450018ca0708ff2683c520e9 *84d5ffff24ca070824ca070824ca070824ca070824ca070818ca070824ca070824ca0708a08f07 *080a00000025006703a08f0708040001000a0000000b0067038d45d43b43547303ff63fc8b4604 *8945fc8b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f0 *8b46108945f48b460c8945f88b45008b4e08894d0089c6c745d858ca070883c5d8ff2683c72c3b *7b5c760ac7436c0b000000ff63f8c747d868ca07088b45248947dc8b45288947e08b45208947e4 *8b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b4504 *89078d47d8894528c7452428d411088b750483c520e9e84a0800c0ca0708609f0708a08f07080a *0000002500670383c70c3b7b5c760ac7436c03000000ff63f8c747f8309f07088b46048945fc8d *4ff8894df8bec4d11108c7450040cb070883c5f4e99b4a08008d760083c520e960d3ffff7ccb07 *087ccb07087ccb07087ccb070840cb07087ccb07087ccb07087ccb0708a08f07080a0000002500 *6703a08f0708040001000a0000000b0067038d45cc3b43547303ff63fc8b46048945fc8b462889 *45dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b *460c8945f88b45008b4e08894d0089c6c745d8b0cb070883c5d8ff2683c72c3b7b5c760ac7436c *0b000000ff63f8c747d8c0cb07088b45248947dc8b45288947e08b45208947e48b451c8947e88b *45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47d88945 *28c7452428d411088b750483c520e99049080083c520e9c8d1ffff84cc070818cc0708a08f0708 *0a00000025006703a08f07080b000000240067038b460483f82c750f8b7504c74504a0cc070883 *c504ff2683c524e989d1ffff908b46088945008b7604c745fcaccc070883c5fcff268d7600cccc *0708949e0708a08f07080a000000250067038b7604c74500f8cc0708ff2683c520e948d1ffff04 *cd070804cd070804cd070804cd070804cd0708f8cc070804cd070804cd0708a08f07080a000000 *25006703a08f0708040001000a0000000b0067038d45d43b43547303ff63fc8b46048945fc8b46 *288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945 *f48b460c8945f88b45008b4e08894d0089c6c745d838cd070883c5d8ff26a08f07080400010009 *0000000b0067038d45f83b4354720883c72c3b7b5c760ac7436c0b000000ff63fcc747d848cd07 *088b46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b46 *1c8947f48b45008947f88b46208947fc8b462489078d47d8894500c745fc28d411088b762483c5 *f8e9f0470800b48f070800000200120011008d45f03b43547303ff63f8c745f8d46d10088975fc *c745f41cb51108be98d6110883c5f0e9af4308008d760083c7343b7b5c760ac7436c0d000000ff *63f8c747d0b0cd07088b45208947d48b45248947d88b451c8947dc8b45188947e08b45148947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f830ce07088d47d08945248d47 *f88945208b750483c51ce94b4708008d760083c51ce9f0ceffffccce07085cce0708a08f070809 *00000025006703a08f07080a000000240067038b460483f83d750f8b7504c74504e8ce070883c5 *04ff2683c520e9b1ceffff908b46088945008b7604c745fcf4ce070883c5fcff268d760014cf07 *08049e0708a08f070809000000250067038b7604c7450040cf0708ff2683c51ce970ceffff4ccf *07084ccf07084ccf07084ccf07084ccf070840cf07084ccf07084ccf0708a08f07080900000025 *006703a08f070804000100090000000b0067038d45d83b43547303ff63fc8b46048945fc8b4624 *8945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745dc80cf070883c5dcff2689f683c7283b7b5c760ac7436c0a0000 *00ff63f8c747dc90cf07088b45208947e08b45248947e48b451c8947e88b45188947ec8b451489 *47f08b45108947f48b450c8947f88b45088947fc8b450489078d47dc894524c7452028d411088b *750483c51ce9ca45080089f6e4cf0708749d0708a08f0708090000002500670383c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8449d07088b46048945fc8d4ff8894df8bec4d11108c7450060 *d0070883c5f4e97b4508008d760083c51ce954ccffff9cd007089cd007089cd007089cd0070860 *d007089cd007089cd007089cd00708a08f07080900000025006703a08f07080400010009000000 *0b0067038d45d03b43547303ff63fc8b46048945fc8b46248945e08b46208945e48b461c8945e8 *8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745dcd0 *d0070883c5dcff2689f683c7283b7b5c760ac7436c0a000000ff63f8c747dce0d007088b452089 *47e08b45248947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b *45088947fc8b450489078d47dc894524c7452028d411088b750483c51ce97a44080089f683c51c *e9c4caffff9cd1070834d10708a08f07080900000025006703a08f07080a000000240067038b46 *0483f82c750f8b7504c74504b8d1070883c504ff2683c520e985caffff908b46088945008b7604 *c745fcc4d1070883c5fcff268d7600e4d10708a89c0708a08f070809000000250067038b7604c7 *450010d20708ff2683c51ce944caffff1cd207081cd207081cd207081cd207081cd2070810d207 *081cd207081cd20708a08f07080900000025006703a08f070804000100090000000b0067038d45 *d83b43547303ff63fc8b46048945fc8b46248945e08b46208945e48b461c8945e88b46188945ec *8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745dc50d2070883c5dc *ff2689f6a08f070804000100080000000b0067038d45f83b4354720883c7283b7b5c760ac7436c *0a000000ff63fcc747dc60d207088b46048947e08b46088947e48b460c8947e88b46108947ec8b *46148947f08b46188947f48b45008947f88b461c8947fc8b462089078d47dc894500c745fc28d4 *11088b762083c5f8e9e242080089f6b48f070800000200120021008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f42cb51108be98d6110883c5f0e99f3e08008d760083c7303b7b5c76 *0ac7436c0c000000ff63f8c747d4c4d207088b451c8947d88b45208947dc8b45188947e08b4514 *8947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f840d307088d47d48945 *208d47f889451c8b750483c518e9414208009083c518e9fcc7ffffd4d307086cd30708a08f0708 *0800000025006707a08f070809000000240067078b460483f83d750f8b7504c74504f0d3070883 *c504ff2683c51ce9bdc7ffff908b46088945008b7604c745fcfcd3070883c5fcff268d76001cd4 *0708189c0708a08f070808000000250067078b7604c7450048d40708ff2683c518e97cc7ffff54 *d4070854d4070854d4070854d4070854d4070848d4070854d4070854d40708a08f070808000000 *25006707a08f070804000100080000000b0067078d45dc3b43547303ff63fc8b46048945fc8b46 *208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745e088d4070883c5e0ff2683c7243b7b5c760ac7436c09000000ff63f8c747e0 *98d407088b451c8947e48b45208947e88b45188947ec8b45148947f08b45108947f48b450c8947 *f88b45088947fc8b450489078d47e0894520c7451c28d411088b750483c518e9d0400800e4d407 *08889b0708a08f0708080000002500670783c70c3b7b5c760ac7436c03000000ff63f8c747f858 *9b07088b46048945fc8d4ff8894df8bec4d11108c7450058d5070883c5f4e9834008008d760083 *c518e970c5ffff94d5070894d5070894d5070894d5070858d5070894d5070894d5070894d50708 *a08f07080800000025006707a08f070804000100080000000b0067078d45d43b43547303ff63fc *8b46048945fc8b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c *8945f88b45008b4e08894d0089c6c745e0c8d5070883c5e0ff2683c7243b7b5c760ac7436c0900 *0000ff63f8c747e0d8d507088b451c8947e48b45208947e88b45188947ec8b45148947f08b4510 *8947f48b450c8947f88b45088947fc8b450489078d47e0894520c7451c28d411088b750483c518 *e9903f080083c518e9f0c3ffff84d6070824d60708a08f07080800000025006707a08f07080900 *0000240067078b460483f82c750f8b7504c74504a0d6070883c504ff2683c51ce9b1c3ffff908b *46088945008b7604c745fcacd6070883c5fcff268d7600ccd60708bc9a0708a08f070808000000 *250067078b7604c74500f8d60708ff2683c518e970c3ffff04d7070804d7070804d7070804d707 *0804d70708f8d6070804d7070804d70708a08f07080800000025006707a08f0708040001000800 *00000b0067078d45dc3b43547303ff63fc8b46048945fc8b46208945e48b461c8945e88b461889 *45ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e038d7070883 *c5e0ff26a08f070804000100070000000b0067078d45f83b4354720883c7243b7b5c760ac7436c *09000000ff63fcc747e048d707088b46048947e48b46088947e88b460c8947ec8b46108947f08b *46148947f48b45008947f88b46188947fc8b461c89078d47e0894500c745fc28d411088b761c83 *c5f8e9083e0800b48f070800000200120011008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f41cb51108be98d6110883c5f0e9c73908008d760083c72c3b7b5c760ac7436c0b000000 *ff63f8c747d8a4d707088b45188947dc8b451c8947e08b45148947e48b45108947e88b450c8947 *ec8b45088947f08b45048947f4c747f818d807088d47d889451c8d47f88945188b750483c514e9 *6f3d08008d760083c514e93cc1ffffa8d8070844d80708a08f07080700000025006707a08f0708 *08000000240067078b460483f83d750f8b7504c74504c4d8070883c504ff2683c518e9fdc0ffff *908b46088945008b7604c745fcd0d8070883c5fcff268d7600f0d807082c9a0708a08f07080700 *0000250067078b7604c745001cd90708ff2683c514e9bcc0ffff28d9070828d9070828d9070828 *d9070828d907081cd9070828d9070828d90708a08f07080700000025006707a08f070804000100 *070000000b0067078d45e03b43547303ff63fc8b46048945fc8b461c8945e88b46188945ec8b46 *148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e45cd9070883c5e4ff26 *89f683c7203b7b5c760ac7436c08000000ff63f8c747e46cd907088b45188947e88b451c8947ec *8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e489451cc7451828 *d411088b750483c514e9063c080089f6b4d907089c990708a08f0708070000002500670783c70c *3b7b5c760ac7436c03000000ff63f8c747f86c9907088b46048945fc8d4ff8894df8bec4d11108 *c7450024da070883c5f4e9b73b08008d760083c514e9b8beffff60da070860da070860da070860 *da070824da070860da070860da070860da0708a08f07080700000025006707a08f070804000100 *070000000b0067078d45d83b43547303ff63fc8b46048945fc8b461c8945e88b46188945ec8b46 *148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e494da070883c5e4ff26 *89f683c7203b7b5c760ac7436c08000000ff63f8c747e4a4da07088b45188947e88b451c8947ec *8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e489451cc7451828 *d411088b750483c514e9ce3a080089f683c514e940bdffff48db0708ecda0708a08f0708070000 *0025006707a08f070808000000240067078b460483f82c750f8b7504c7450464db070883c504ff *2683c518e901bdffff908b46088945008b7604c745fc70db070883c5fcff268d760090db0708d0 *980708a08f070807000000250067078b7604c74500bcdb0708ff2683c514e9c0bcffffc8db0708 *c8db0708c8db0708c8db0708c8db0708bcdb0708c8db0708c8db0708a08f070807000000250067 *07a08f070804000100070000000b0067078d45e03b43547303ff63fc8b46048945fc8b461c8945 *e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e4 *fcdb070883c5e4ff2689f6a08f070804000100060000000b0067078d45f83b4354720883c7203b *7b5c760ac7436c08000000ff63fcc747e40cdc07088b46048947e88b46088947ec8b460c8947f0 *8b46108947f48b45008947f88b46148947fc8b461889078d47e4894500c745fc28d411088b7618 *83c5f8e94e39080089f6b48f070800000200120011008d45f03b43547303ff63f8c745f8d46d10 *088975fcc745f41cb51108be98d6110883c5f0e90b3508008d760083c7283b7b5c760ac7436c0a *000000ff63f8c747dc64dc07088b45148947e08b45188947e48b45108947e88b450c8947ec8b45 *088947f08b45048947f4c747f8d4dc07088d47dc8945188d47f88945148b750483c510e9b93808 *009083c510e99cbaffff5cdd070800dd0708a08f07080600000025006707a08f07080700000024 *0067078b460483f83d750f8b7504c7450478dd070883c504ff2683c514e95dbaffff908b460889 *45008b7604c745fc84dd070883c5fcff268d7600a4dd070840980708a08f070806000000250067 *078b7604c74500d0dd0708ff2683c510e91cbaffffdcdd0708dcdd0708dcdd0708dcdd0708dcdd *0708d0dd0708dcdd0708dcdd0708a08f07080600000025006707a08f070804000100060000000b *0067078d45e43b43547303ff63fc8b46048945fc8b46188945ec8b46148945f08b46108945f48b *460c8945f88b45008b4e08894d0089c6c745e810de070883c5e8ff2683c71c3b7b5c760ac7436c *07000000ff63f8c747e820de07088b45148947ec8b45188947f08b45108947f48b450c8947f88b *45088947fc8b450489078d47e8894518c7451428d411088b750483c510e96037080060de0708b0 *970708a08f0708060000002500670783c70c3b7b5c760ac7436c03000000ff63f8c747f8809707 *088b46048945fc8d4ff8894df8bec4d11108c74500c8de070883c5f4e9133708008d760083c510 *e928b8ffff04df070804df070804df070804df0708c8de070804df070804df070804df0708a08f *07080600000025006707a08f070804000100060000000b0067078d45dc3b43547303ff63fc8b46 *048945fc8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6 *c745e838df070883c5e8ff2683c71c3b7b5c760ac7436c07000000ff63f8c747e848df07088b45 *148947ec8b45188947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e8894518 *c7451428d411088b750483c510e93836080083c510e9c0b6ffffdcdf070888df0708a08f070806 *00000025006707a08f070807000000240067078b460483f82c750f8b7504c74504f8df070883c5 *04ff2683c514e981b6ffff908b46088945008b7604c745fc04e0070883c5fcff268d760024e007 *08e4960708a08f070806000000250067078b7604c7450050e00708ff2683c510e940b6ffff5ce0 *07085ce007085ce007085ce007085ce0070850e007085ce007085ce00708a08f07080600000025 *006707a08f070804000100060000000b0067078d45e43b43547303ff63fc8b46048945fc8b4618 *8945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e890e00708 *83c5e8ff26a08f070804000100050000000b0067078d45f83b4354720883c71c3b7b5c760ac743 *6c07000000ff63fcc747e8a0e007088b46048947ec8b46088947f08b460c8947f48b45008947f8 *8b46108947fc8b461489078d47e8894500c745fc28d411088b761483c5f8e9c8340800b48f0708 *00000200120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6 *110883c5f0e9873008008d760083c7243b7b5c760ac7436c09000000ff63f8c747e0f0e007088b *45108947e48b45148947e88b450c8947ec8b45088947f08b45048947f4c747f858e107088d47e0 *8945148d47f88945108b750483c50ce93b3408008d760083c50ce930b4ffffdce1070884e10708 *a08f07080500000025006707a08f070806000000240067078b460483f83d750f8b7504c74504f8 *e1070883c504ff2683c510e9f1b3ffff908b46088945008b7604c745fc04e2070883c5fcff268d *760024e2070854960708a08f070805000000250067078b7604c7450050e20708ff2683c50ce9b0 *b3ffff5ce207085ce207085ce207085ce207085ce2070850e207085ce207085ce20708a08f0708 *0500000025006707a08f070804000100050000000b0067078d45e83b43547303ff63fc8b460489 *45fc8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745ec90e2070883 *c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8c747eca0e207088b45108947f08b45 *148947f48b450c8947f88b45088947fc8b450489078d47ec894514c7451028d411088b750483c5 *0ce9ea32080089f6dce20708c4950708a08f0708050000002500670783c70c3b7b5c760ac7436c *03000000ff63f8c747f8949507088b46048945fc8d4ff8894df8bec4d11108c7450040e3070883 *c5f4e99b3208008d760083c50ce9c4b1ffff7ce307087ce307087ce307087ce3070840e307087c *e307087ce307087ce30708a08f07080500000025006707a08f070804000100050000000b006707 *8d45e03b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745ecb0e3070883c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8 *c747ecc0e307088b45108947f08b45148947f48b450c8947f88b45088947fc8b450489078d47ec *894514c7451028d411088b750483c50ce9ca31080089f683c50ce964b0ffff4ce40708fce30708 *a08f07080500000025006707a08f070806000000240067078b460483f82c750f8b7504c7450468 *e4070883c504ff2683c510e925b0ffff908b46088945008b7604c745fc74e4070883c5fcff268d *760094e40708f8940708a08f070805000000250067078b7604c74500c0e40708ff2683c50ce9e4 *afffffcce40708cce40708cce40708cce40708cce40708c0e40708cce40708cce40708a08f0708 *0500000025006707a08f070804000100050000000b0067078d45e83b43547303ff63fc8b460489 *45fc8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745ec00e5070883 *c5ecff2689f6a08f070804000100040000000b0067078d45f83b4354720883c7183b7b5c760ac7 *436c06000000ff63fcc747ec10e507088b46048947f08b46088947f48b45008947f88b460c8947 *fc8b461089078d47ec894500c745fc28d411088b761083c5f8e96230080089f6b48f0708000002 *00120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6110883 *c5f0e91f2c08008d760083c7203b7b5c760ac7436c08000000ff63f8c747e45ce507088b450c89 *47e88b45108947ec8b45088947f08b45048947f4c747f8c0e507088d47e48945108d47f889450c *8b750483c508e9d92f08009083c508e9e4adffff3ce60708ece50708a08f070804000000250067 *07a08f070805000000240067078b460483f83d750f8b7504c7450458e6070883c504ff2683c50c *e9a5adffff908b46088945008b7604c745fc64e6070883c5fcff268d760084e6070868940708a0 *8f070804000000250067078b7604c74500b0e60708ff2683c508e964adffffbce60708bce60708 *bce60708bce60708bce60708b0e60708bce60708bce60708a08f07080400000025006707a08f07 *0804000100040000000b0067078d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c *8945f88b45008b4e08894d0089c6c745f0f0e6070883c5f0ff2683c7143b7b5c760ac7436c0500 *0000ff63f8c747f000e707088b450c8947f48b45108947f88b45088947fc8b450489078d47f089 *4510c7450c28d411088b750483c508e9982e080034e70708d8930708a08f070804000000250067 *0783c70c3b7b5c760ac7436c03000000ff63f8c747f8a89307088b46048945fc8d4ff8894df8be *c4d11108c7450090e7070883c5f4e94b2e08008d760083c508e988abffffcce70708cce70708cc *e70708cce7070890e70708cce70708cce70708cce70708a08f07080400000025006707a08f0708 *04000100040000000b0067078d45e43b43547303ff63fc8b46048945fc8b46108945f48b460c89 *45f88b45008b4e08894d0089c6c745f000e8070883c5f0ff2683c7143b7b5c760ac7436c050000 *00ff63f8c747f010e807088b450c8947f48b45108947f88b45088947fc8b450489078d47f08945 *10c7450c28d411088b750483c508e9882d080083c508e938aaffff8ce8070844e80708a08f0708 *0400000025006707a08f070805000000240067078b460483f82c750f8b7504c74504a8e8070883 *c504ff2683c50ce9f9a9ffff908b46088945008b7604c745fcb4e8070883c5fcff268d7600d4e8 *07080c930708a08f070804000000250067078b7604c7450000e90708ff2683c508e9b8a9ffff0c *e907080ce907080ce907080ce907080ce9070800e907080ce907080ce90708a08f070804000000 *25006707a08f070804000100040000000b0067078d45ec3b43547303ff63fc8b46048945fc8b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745f040e9070883c5f0ff26a08f07080400 *0100030000000b0067078d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0 *50e907088b46048947f48b45008947f88b46088947fc8b460c89078d47f0894500c745fc28d411 *088b760c83c5f8e9302c0800b48f070800000200120005008d45f03b43547303ff63f8c745f8d4 *6d10088975fcc745f4dcb31108be98d6110883c5f0e9ef2708008d760083c71c3b7b5c760ac743 *6c07000000ff63f8c747e894e907088b45088947ec8b450c8947f08b45048947f4c747f8f0e907 *088d47e889450c8d47f88945088b750483c504e9af2b08008d760083c504e9cca7ffff68ea0708 *1cea0708a08f0708030000002500e707a08f0708040000002400e7078b460483f83d750f8b7504 *c7450484ea070883c504ff2683c508e98da7ffff908b46088945008b7604c745fc90ea070883c5 *fcff268d7600b0ea07087c920708a08f0708030000002500e7078b7604c74500dcea0708ff2683 *c504e94ca7ffffe8ea0708e8ea0708e8ea0708e8ea0708e8ea0708dcea0708e8ea0708e8ea0708 *a08f0708030000002500e707a08f070804000100030000000b00e7078d45f03b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f41ceb070883c5f4ff2689f683c7 *103b7b5c760ac7436c04000000ff63f8c747f42ceb07088b45088947f88b450c8947fc8b450489 *078d47f489450cc7450828d411088b750483c504e9762a080089f65ceb0708ec910708a08f0708 *030000002500e70783c70c3b7b5c760ac7436c03000000ff63f8c747f8bc9107088b46048945fc *8d4ff8894df8bec4d11108c74500b4eb070883c5f4e9272a08008d760083c504e978a5fffff0eb *0708f0eb0708f0eb0708f0eb0708b4eb0708f0eb0708f0eb0708f0eb0708a08f07080300000025 *00e707a08f070804000100030000000b00e7078d45e83b43547303ff63fc8b46048945fc8b460c *8945f88b45008b4e08894d0089c6c745f424ec070883c5f4ff2689f683c7103b7b5c760ac7436c *04000000ff63f8c747f434ec07088b45088947f88b450c8947fc8b450489078d47f489450cc745 *0828d411088b750483c504e96e29080089f683c504e930a4ffffa8ec070864ec0708a08f070803 *0000002500e707a08f0708040000002400e7078b460483f87b750f8b7504c74504c4ec070883c5 *04ff2683c508e9f1a3ffff908b46088945008b7604c745fcd0ec070883c5fcff268d7600f0ec07 *0820910708a08f0708030000002500e7078b7604c745001ced0708ff2683c504e9b0a3ffff28ed *070828ed070828ed070828ed070828ed07081ced070828ed070828ed0708a08f07080300000025 *00e707a08f070804000100030000000b00e7078d45f03b43547303ff63fc8b46048945fc8b460c *8945f88b45008b4e08894d0089c6c745f45ced070883c5f4ff2689f683c7103b7b5c760ac7436c *04000000ff63f8c747f46ced07088b45088947f88b450c8947fc8b450489078d47f489450cc745 *0828d411088b750483c504e93628080089f69ced070890900708a08f0708030000002500e70783 *c70c3b7b5c760ac7436c03000000ff63f8c747f8609007088b46048945fc8d4ff8894df8bec4d1 *1108c74500f4ed070883c5f4e9e72708008d760083c504e9dca1ffff30ee070830ee070830ee07 *0830ee0708f4ed070830ee070830ee070830ee0708a08f0708030000002500e707a08f07080400 *0100030000000b00e7078d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08 *894d0089c6c745f464ee070883c5f4ff2689f6a08f0708000000002400e70783c7103b7b5c760a *c7436c04000000ff63f8c747f474ee07088b46108947f88b460c8947fc8b460489078d47f48945 *00c745fc28d411088b760483c5f8e92227080089f6a08f0708000002001200ef078d45ec3b4354 *7303ff63f8c745f8d46d10088975fcbea8d61108c745f4b0ee070883c5f4ff2689f6a08f070800 *0002001800ff078d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c10 *0856e8f90e080083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f800 *ef07088d47f88945f4c745f028121208be88d6110883c5ece97c26080020d41108f4b5110898ef *070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e8810e080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4f4b51108be20d4110883c5f0e90522080090d4d1110890d1110848d11108e0d41108bcd411 *08c0d411088cb311082cb411083cb411085cb4110818f0070800000200120001008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747 *fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e985210800900100000024000000 *c74500d81112088b760483c5fce97625080089f628f0070801000100130001008d45ec3b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df4be5cb41108c745f08cf0070883c5f0ff260cf0 *070801000100130089008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8 *d46d10088975fcc747ec38f00708c747f8acf007088b46048947fc8d47ec8945f48d47f88945f0 *be48d1110883c5ece9df2408008d760004f0070800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9281b1108894df4bed4d1110883c5f0e9b71e08008d760004f0 *070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f844f107088d4ff8894df4bec0d4110883c5f0e94a20080089f604f00708 *01000100130025028d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ece4f007088b46048947f0c747f880f107088d47ec8945f48d47f88945f0be48 *d1110883c5ece9f72308008d760004f0070800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9341b1108894df4bed4d1110883c5f0e9cf1d08008d760004f00708 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f82cf207088d4ff8894df4bec0d4110883c5f0e9621f080089f604f007080100 *0100130025028d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d1008 *8975fcc747ecccf107088b46048947f0c747f868f207088d47ec8945f48d47f88945f0be48d111 *0883c5ece90f2308008d76000100000024000000c74500d81112088b760483c5fce9f222080089 *f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be3cb41108c745f010f3070883c5f0ff2604f0070802000000150025038d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb4f207088b46088947 *f0c747f830f307088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece955220800 *9004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b938 *1b1108894df4bed4d1110883c5f0e92f1c08008d760004f0070800000200120021008d45f03b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8ccf307088d *4ff8894df4bec0d4110883c5f0e9c21d080089f604f0070802000000150025038d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec68f307088b4604 *8947f08b46088947f4c747f808f407088d47ec8945f48d47f88945f0be48d1110883c5ece96921 *08009004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9441b1108894df4bed4d1110883c5f0e9431b08008d760004f0070800000200120021008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b8f407 *088d4ff8894df4bec0d4110883c5f0e9d61c080089f604f0070802000000150025038d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec54f407088b *46048947f08b46088947f4c747f8f4f407088d47ec8945f48d47f88945f0be48d1110883c5ece9 *7d200800900100000024000000c74500d81112088b760483c5fce96220080089f624f007080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cb41108c7 *45f0a0f5070883c5f0ff2604f0070803000000120025038d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec40f507088b46088947f08b460c8947f4 *c747f8c0f507088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece9bf1f08008d *760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *481b1108894df4bed4d1110883c5f0e9971908008d760004f0070800000200120021008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f864f60708 *8d4ff8894df4bec0d4110883c5f0e92a1b080089f604f0070803000000120025038d45ec3b4354 *720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8f8f507088b46 *048947ec8b46088947f08b460c8947f4c747f8a0f607088d47e88945f48d47f88945f0be48d111 *0883c5ece9cb1e08008d760004f0070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9581b1108894df4bed4d1110883c5f0e9a31808008d760004f007080000 *0200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f858f707088d4ff8894df4bec0d4110883c5f0e9361a080089f604f0070803000000 *120025038d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975 *fcc747e8ecf607088b46048947ec8b46088947f08b460c8947f4c747f894f707088d47e88945f4 *8d47f88945f0be48d1110883c5ece9d71d08008d76000100000024000000c74500d81112088b76 *0483c5fce9ba1d080089f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be3cb41108c745f048f8070883c5f0ff2604f0070804000000120025 *038d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747 *e8e0f707088b46088947ec8b460c8947f08b46108947f4c747f868f807088b46048947fc8d47e8 *8945f48d47f88945f0be48d1110883c5ece9111d08009004f0070800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b95c1b1108894df4bed4d1110883c5f0e9eb16 *08008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f810f907088d4ff8894df4bec0d4110883c5f0e97e1808 *0089f604f0070804000000120025038d45ec3b4354720883c7203b7b5c760ac7436c08000000ff *63f8c745f8d46d10088975fcc747e4a0f807088b46048947e88b46088947ec8b460c8947f08b46 *108947f4c747f84cf907088d47e48945f48d47f88945f0be48d1110883c5ece9191c08009004f0 *070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c1b1108 *894df4bed4d1110883c5f0e9f31508008d760004f0070800000200120021008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f808fa07088d4ff889 *4df4bec0d4110883c5f0e98617080089f604f0070804000000120025038d45ec3b4354720883c7 *203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e498f907088b46048947e8 *8b46088947ec8b460c8947f08b46108947f4c747f844fa07088d47e48945f48d47f88945f0be48 *d1110883c5ece9211b0800900100000024000000c74500d81112088b760483c5fce9061b080089 *f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be3cb41108c745f0fcfa070883c5f0ff2604f0070805000000120025038d45ec3b4354720883 *c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e490fa07088b46088947 *e88b460c8947ec8b46108947f08b46148947f4c747f81cfb07088b46048947fc8d47e48945f48d *47f88945f0be48d1110883c5ece9571a08008d760004f0070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9701b1108894df4bed4d1110883c5f0e92f140800 *8d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8ccfb07088d4ff8894df4bec0d4110883c5f0e9c215080089 *f604f0070805000000120025038d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8 *c745f8d46d10088975fcc747e054fb07088b46048947e48b46088947e88b460c8947ec8b461089 *47f08b46148947f4c747f808fc07088d47e08945f48d47f88945f0be48d1110883c5ece9571908 *008d760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9801b1108894df4bed4d1110883c5f0e92f1308008d760004f0070800000200120021008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8ccfc *07088d4ff8894df4bec0d4110883c5f0e9c214080089f604f0070805000000120025038d45ec3b *4354720883c7243b7b5c760ac7436c09000000ff63f8c745f8d46d10088975fcc747e054fc0708 *8b46048947e48b46088947e88b460c8947ec8b46108947f08b46148947f4c747f808fd07088d47 *e08945f48d47f88945f0be48d1110883c5ece9571808008d76000100000024000000c74500d811 *12088b760483c5fce93a18080089f61cf0070801000100130001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be8cb31108c745f0c8fd070883c5f0ff2604f00708060000 *00120065038d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c745f8d46d100889 *75fcc747e054fd07088b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947f4 *c747f8e8fd07088b46048947fc8d47e08945f48d47f88945f0be48d1110883c5ece98517080090 *04f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9841b *1108894df4bed4d1110883c5f0e95f1108008d760004f0070800000200120021008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f89cfe07088d4f *f8894df4bec0d4110883c5f0e9f212080089f604f0070806000000120065038d45ec3b43547208 *83c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dc20fe07088b460489 *47e08b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947f4c747f8d8fe0708 *8d47dc8945f48d47f88945f0be48d1110883c5ece9811608009004f0070800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9941b1108894df4bed4d1110883c5f0 *e95b1008008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8a0ff07088d4ff8894df4bec0d4110883c5f0e9 *ee11080089f604f0070806000000120065038d45ec3b4354720883c7283b7b5c760ac7436c0a00 *0000ff63f8c745f8d46d10088975fcc747dc24ff07088b46048947e08b46088947e48b460c8947 *e88b46108947ec8b46148947f08b46188947f4c747f8dcff07088d47dc8945f48d47f88945f0be *48d1110883c5ece97d150800900100000024000000c74500d81112088b760483c5fce962150800 *89f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be3cb41108c745f0a000080883c5f0ff2604f0070807000000120065038d45ec3b43547208 *83c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dc280008088b460889 *47e08b460c8947e48b46108947e88b46148947ec8b46188947f08b461c8947f4c747f8c0000808 *8b46048947fc8d47dc8945f48d47f88945f0be48d1110883c5ece9a71408008d760004f0070800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9981b1108894df4 *bed4d1110883c5f0e97f0e08008d760004f0070800000200120021008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87c0108088d4ff8894df4be *c0d4110883c5f0e91210080089f604f0070807000000120065038d45ec3b4354720883c72c3b7b *5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d8f80008088b46048947dc8b4608 *8947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b461c8947f4c747f8b80108 *088d47d88945f48d47f88945f0be48d1110883c5ece99b1308008d760004f00708000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a81b1108894df4bed4d11108 *83c5f0e9730d08008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f8880208088d4ff8894df4bec0d4110883 *c5f0e9060f080089f604f0070807000000120065038d45ec3b4354720883c72c3b7b5c760ac743 *6c0b000000ff63f8c745f8d46d10088975fcc747d8040208088b46048947dc8b46088947e08b46 *0c8947e48b46108947e88b46148947ec8b46188947f08b461c8947f4c747f8c40208088d47d889 *45f48d47f88945f0be48d1110883c5ece98f1208008d76000100000024000000c74500d8111208 *8b760483c5fce97212080089f620f0070801000100130001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4be2cb41108c745f09003080883c5f0ff2604f007080800000012 *00e5038d45ec3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fc *c747d8100308088b46088947dc8b460c8947e08b46108947e48b46148947e88b46188947ec8b46 *1c8947f08b46208947f4c747f8b00308088b46048947fc8d47d88945f48d47f88945f0be48d111 *0883c5ece9b11108009004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b9ac1b1108894df4bed4d1110883c5f0e98b0b08008d760004f0070800000200 *120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975 *fcc747f8700408088d4ff8894df4bec0d4110883c5f0e91e0d080089f604f00708080000001200 *e5038d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc7 *47d4e80308088b46048947d88b46088947dc8b460c8947e08b46108947e48b46148947e88b4618 *8947ec8b461c8947f08b46208947f4c747f8ac0408088d47d48945f48d47f88945f0be48d11108 *83c5ece9a11008009004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9bc1b1108894df4bed4d1110883c5f0e97b0a08008d760004f007080000020012 *0021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8800508088d4ff8894df4bec0d4110883c5f0e90e0c080089f604f00708080000001200e5 *038d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc747 *d4f80408088b46048947d88b46088947dc8b460c8947e08b46108947e48b46148947e88b461889 *47ec8b461c8947f08b46208947f4c747f8bc0508088d47d48945f48d47f88945f0be48d1110883 *c5ece9910f0800900100000024000000c74500d81112088b760483c5fce9760f080089f624f007 *0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cb4 *1108c745f08c06080883c5f0ff2604f00708090000001200e5038d45ec3b4354720883c7303b7b *5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc747d4080608088b46088947d88b460c *8947dc8b46108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f4 *c747f8ac0608088b46048947fc8d47d48945f48d47f88945f0be48d1110883c5ece9af0e08008d *760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *c01b1108894df4bed4d1110883c5f0e9870808008d760004f0070800000200120021008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f874070808 *8d4ff8894df4bec0d4110883c5f0e91a0a080089f604f00708090000001200e5038d45ec3b4354 *720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d46d10088975fcc747d0e40608088b46 *048947d48b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947 *ec8b46208947f08b46248947f4c747f8b00708088d47d08945f48d47f88945f0be48d1110883c5 *ece9970d08008d760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9cc1b1108894df4bed4d1110883c5f0e96f0708008d760004f007080000020012 *0021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f88c0808088d4ff8894df4bec0d4110883c5f0e90209080089f604f00708090000001200e5 *038d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d46d10088975fcc747 *d0fc0708088b46048947d48b46088947d88b460c8947dc8b46108947e08b46148947e48b461889 *47e88b461c8947ec8b46208947f08b46248947f4c747f8c80808088d47d08945f48d47f88945f0 *be48d1110883c5ece97f0c08008d76000100000024000000c74500d81112088b760483c5fce962 *0c080089f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4be3cb41108c745f0a009080883c5f0ff2604f007080a0000001200e5038d45ec3b43 *54720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d46d10088975fcc747d0140908088b *46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b462089 *47ec8b46248947f08b46288947f4c747f8c00908088b46048947fc8d47d08945f48d47f88945f0 *be48d1110883c5ece9950b08009004f0070800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9d01b1108894df4bed4d1110883c5f0e96f0508008d760004f00708 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f88c0a08088d4ff8894df4bec0d4110883c5f0e90207080089f604f007080a00 *00001200e5038d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d1008 *8975fcc747ccf80908088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947 *e08b46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f4c747f8c80a08088d *47cc8945f48d47f88945f0be48d1110883c5ece9790a08009004f0070800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e01b1108894df4bed4d1110883c5f0e9 *530408008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8a80b08088d4ff8894df4bec0d4110883c5f0e9e6 *05080089f604f007080a0000001200e5038d45ec3b4354720883c7383b7b5c760ac7436c0e0000 *00ff63f8c745f8d46d10088975fcc747cc140b08088b46048947d08b46088947d48b460c8947d8 *8b46108947dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b46248947f08b4628 *8947f4c747f8e40b08088d47cc8945f48d47f88945f0be48d1110883c5ece95d09080090010000 *0024000000c74500d81112088b760483c5fce94209080089f624f0070801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cb41108c745f0c00c080883c5 *f0ff2604f007080b0000001200e5038d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff *63f8c745f8d46d10088975fcc747cc300c08088b46088947d08b460c8947d48b46108947d88b46 *148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f08b462c8947 *f4c747f8e00c08088b46048947fc8d47cc8945f48d47f88945f0be48d1110883c5ece96f080800 *8d760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e41b1108894df4bed4d1110883c5f0e9470208008d760004f0070800000200120021008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b40d08 *088d4ff8894df4bec0d4110883c5f0e9da03080089f604f007080b0000001200e5038d45ec3b43 *54720883c73c3b7b5c760ac7436c0f000000ff63f8c745f8d46d10088975fcc747c8180d08088b *46048947cc8b46088947d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c89 *47e48b46208947e88b46248947ec8b46288947f08b462c8947f4c747f8f00d08088d47c88945f4 *8d47f88945f0be48d1110883c5ece94b0708008d760004f0070800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9f41b1108894df4bed4d1110883c5f0e9230108 *008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8d80e08088d4ff8894df4bec0d4110883c5f0e9b6020800 *89f604f007080b0000001200e5038d45ec3b4354720883c73c3b7b5c760ac7436c0f000000ff63 *f8c745f8d46d10088975fcc747c83c0e08088b46048947cc8b46088947d08b460c8947d48b4610 *8947d88b46148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f0 *8b462c8947f4c747f8140f08088d47c88945f48d47f88945f0be48d1110883c5ece9270608008d *76000100000024000000c74500d81112088b760483c5fce90a06080089f624f007080100010013 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cb41108c745f0f8 *0f080883c5f0ff2604f007080c0000001200e5038d45ec3b4354720883c73c3b7b5c760ac7436c *0f000000ff63f8c745f8d46d10088975fcc747c8600f08088b46088947cc8b460c8947d08b4610 *8947d48b46148947d88b46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec *8b462c8947f08b46308947f4c747f8181008088b46048947fc8d47c88945f48d47f88945f0be48 *d1110883c5ece9310508009004f0070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9f81b1108894df4bed4d1110883c5f0e90bff07008d760004f007080000 *0200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8f01008088d4ff8894df4bec0d4110883c5f0e99e00080089f604f007080c000000 *1200e5038d45ec3b4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975 *fcc747c4501008088b46048947c88b46088947cc8b460c8947d08b46108947d48b46148947d88b *46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec8b462c8947f08b463089 *47f4c747f82c1108088d47c48945f48d47f88945f0be48d1110883c5ece9090408009004f00708 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9081c1108894d *f4bed4d1110883c5f0e9e3fd07008d760004f0070800000200120021008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8181208088d4ff8894df4 *bec0d4110883c5f0e976ff070089f604f007080c0000001200e5038d45ec3b4354720883c7403b *7b5c760ac7436c10000000ff63f8c745f8d46d10088975fcc747c4781108088b46048947c88b46 *088947cc8b460c8947d08b46108947d48b46148947d88b46188947dc8b461c8947e08b46208947 *e48b46248947e88b46288947ec8b462c8947f08b46308947f4c747f8541208088d47c48945f48d *47f88945f0be48d1110883c5ece9e1020800900100000024000000c74500d81112088b760483c5 *fce9c602080089f610f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df4bee0d41108c745f03c13080883c5f0ff2604f007080d0000001200ed038d45 *ec3b4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975fcc747c4a012 *08088b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b *46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f4c747f85c *1308088b46048947fc8d47c48945f48d47f88945f0be48d1110883c5ece9e70108008d760004f0 *070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90c1c1108 *894df4bed4d1110883c5f0e9bffb07008d760004f0070800000200120021008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f83c1408088d4ff889 *4df4bec0d4110883c5f0e952fd070089f604f007080d0000001200ed038d45ec3b4354720883c7 *443b7b5c760ac7436c11000000ff63f8c745f8d46d10088975fcc747c0941308088b46048947c4 *8b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b4620 *8947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f4c747f8781408 *088d47c08945f48d47f88945f0be48d1110883c5ece9b70008008d760004f00708000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b91c1c1108894df4bed4d11108 *83c5f0e98ffa07008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f86c1508088d4ff8894df4bec0d4110883 *c5f0e922fc070089f604f007080d0000001200ed038d45ec3b4354720883c7443b7b5c760ac743 *6c11000000ff63f8c745f8d46d10088975fcc747c0c41408088b46048947c48b46088947c88b46 *0c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947 *e48b46288947e88b462c8947ec8b46308947f08b46348947f4c747f8a81508088d47c08945f48d *47f88945f0be48d1110883c5ece987ff07008d760001000000240000008b4504894500c7450430 *1212088b761483c5fce964ff070008f0070801000100130001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df4be90d11108c745f09816080883c5f0ff2604f0070842000000 *2400ff0383c7443b7b5c760ac7436c11000000ff63f8c747c0f41508088b46048947c48b460889 *47c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b *46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f4c747f8bc1608088b4504 *8947fc8d47c08945088d47f8894504bebcd41108e996fe070089f604f007080b00020000000000 *1100ff038d45fc3b43547308be14b61108ff63fc8b7504c745fcf416080883c5fcff269014b611 *081cb61108b017080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e869e6070083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcc745f41cb61108be14b6110883c5f0e9edf9070090ccd4110824b611081c180808 *00000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c *100856e8fde5070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4 *24b61108beccd4110883c5f0e981f9070090e4d1110848d11108d8d011088c1808080000020012 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f490c31108c745f070c31108be *48d1110883c5ece944fd07008c18080801000100130003008d45e83b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a01808088b4e04894df48d57f88955 *f0c745ec00d21108bed8d0110883c5e8e9bd010800909018080801000100130001008d45e83b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f08cc31108c745ec00d21108bed8d0 *110883c5e8e97a01080089f688180808000000002400070083c7183b7b5c760ac7436c06000000 *ff63f8c747ecdc1808088b463c8947f0c747f8341908088b463c8947fc8d47ec8945008d47f889 *45fcbee4d1110883c5f8e957fc07008d7600881808080400010000000000110007008d45f83b43 *547308beacb61108ff63fc8b7500c7450078190808ff2648d1110840d31108ec19080800000200 *120001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f454c31108c745f070c31108 *be48d1110883c5ece9e4fb0700ec190808000000002400030083c70c3b7b5c760ac7436c030000 *00ff63f8c747f8001a08088b46408945008d4ff8894dfcbe40d3110883c5f8e9a6fb070089f6ec *1908080400010000000000110003008d45f83b43547308beb4b61108ff63fc8b7500c745003c1a *0808ff2648d11108d8d011089c1a080800000200120001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fcc745f490c31108c745f058c31108be48d1110883c5ece934fb07009c1a08080400 *010000000000110003008d45f43b4354720883c7183b7b5c760fbebcb61108c7436c06000000ff *63fcc747ecb46610088b45008947f0c747f8b01a08088d47ec8945008d47f88945fcc745f8fcd1 *1108bed8d0110883c5f4e9a1ff07009048d11108ccd01108d8d01108dcd21108441b0808000002 *00120001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f490c31108c745f058c311 *08be48d1110883c5ece984fa070042000000240000008b45048945088b760c83c504e95ff60700 *8d7600bedcd21108c74504981b080883c504ff268d7600481b080801000100130001008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b4661008 *8b4e04894ffc8d57f88955f4beccd0110883c5f0e9f8f5070083c70c3b7b5c760ac7436c030000 *00ff63f8c747f8cc1b08088b45048947fc8b750c8d4ff8894d0c83c508e9c8f50700101c0808ac *1b0808481b08080300000025000500441b0808160003000000000011000f008d45ec3b43547208 *83c7183b7b5c760fbec4b61108c7436c06000000ff63fcc747ecb46610088b45008947f0c747f8 *601b08088d47ec8945f88d47f88945f4c745f0fcd11108bed8d01108c745fc541c080883c5ece9 *26fe070089f6e4d1110854d21108d4d11108bcd1110844d11108f4a911088cb51108c01c080802 *000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f89c6510088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece9e2 *f8070089f6c01c080802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8106510088b46048947fc8d47f88945f48b46088945f0 *bee4d1110883c5ece98af8070089f6c01c080802000000150001008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8846410088b46048947fc8d47 *f88945f48b46088945f0bee4d1110883c5ece932f8070089f6c01c080802000000150001008d45 *ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f863 *10088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece9daf7070089f6c01c0808 *02000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f86c6310088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece9 *82f7070089f6c01c080802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8e06210088b46048947fc8d47f88945f48b46088945 *f0bee4d1110883c5ece92af7070089f6c01c080802000000150001008d45ec3b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8546210088b46048947fc8d *47f88945f48b46088945f0bee4d1110883c5ece9d2f6070089f6c81c080800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9281c1108894df4bed4d1110883c5f0 *e9abf007008d7600c81c080800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9381c1108894df4bed4d1110883c5f0e96ff007008d7600c01c0808000002001200 *05008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc7 *47ec501f0808c747f88c1f08088d4fec894df48d57f88955f0bee4d1110883c5ece901f6070090 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8c81f08088d47f8894508c7450454d21108be *44d11108e9d0f507008b750483c50cff264420080814200808c01c0808420000002500170083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8c86110088b450c8947fcc74500f4a911088d4ff8 *894dfc8b7504c745046020080883c5f8e976f5070089f600000000240000008b761883c504ff26 *8b750cc7450ca820080883c50cff2690b020080860200808c01c08080300000025003700c01c08 *080200000024003700c745f8f4a911088b45048945f48b4e08894d008b7608c745fcd420080883 *c5f0e90ff507008d7600c01c080802000000150077008d45dc3b43547303ff63f8c745f8d46d10 *088975fc8b4e08894df08b56048955f4be8cb51108c745ece020080883c5ecff2689f6c01c0808 *02000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f83c6110088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece9 *76f4070089f6c01c080802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8b06010088b46048947fc8d47f88945f48b46088945 *f0bee4d1110883c5ece91ef4070089f6c01c080802000000150001008d45ec3b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8246010088b46048947fc8d *47f88945f48b46088945f0bee4d1110883c5ece9c6f3070089f6c01c080802000000150001008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f898 *5f10088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece96ef3070089f6cc1c08 *0802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f80c5f10088b46088947fc8d47f88945f48b46048945f0bebcd1110883c5ec *e916f3070089f6c01c08080100000024007f0081c7d40000003b7b5c760ac7436c35000000ff63 *f8c78730ffffffe81c08088b4504898734ffffff8b4634898738ffffffc7873cffffff401d0808 *8b4504898740ffffff8b4630898744ffffffc78748ffffff981d08088b450489874cffffff8b46 *2c898750ffffffc78754fffffff01d08088b4504898758ffffff8b462889875cffffffc78760ff *ffff481e08088b4504898764ffffff8b4624898768ffffffc7876cffffffa01e08088b45048987 *70ffffff8b4620898774ffffffc78778fffffff81e08088b450489877cffffff8b461c894780c7 *4784142108088b45048947888b461889478cc74790542108088b45048947948b4614894798c747 *9cac2108088b45048947a08b46108947a4c747a8042208088b45048947ac8b460c8947b0c747b4 *5c2208088b45048947b88b46088947bcc747c0b42208088b46048947c48b45048947c8c747cc28 *c409088d47c08947d08d47b48947d48d47a88947d88d479c8947dc8d47908947e08d47848947e4 *8d8778ffffff8947e88d876cffffff8947ec8d8760ffffff8947f08d8754ffffff8947f48d8748 *ffffff8947f88d873cffffff8947fc8d8730ffffff89078d77cc83c508ff650089f6c01c08080b *0002000000000011007f008b7500c745000c230808ff26dcd111088cb511081cb71108be00d211 *0883c50c8b4500ff60f089f68b45048945148b75188b4d10894d1883c514e9d501000090ec2408 *0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b5604 *8955f083c5f0eb8e89f6ec240808010000002400010083c71c3b7b5c760ac7436c07000000ff63 *f8c747e8242508088b45048947ec8b460c8947f0c747f410c409088b46048947f88b46088947fc *8d47e889078d77f483c508e934480800ec24080802000000150001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8b4e08894df48b7604c745f05825080883c5f0ff2689f683c7183b7b5c *760ac7436c06000000ff63f8c747ecac2508088b45148947f08b45088947f4c747f87cdc0b088d *47ec8947fc8b451089078d77f883c51c8b4500ff60ec90d825080800250808ec24080886000000 *25000100ec240808060000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f80c5f *10088b45148947fc8b4d0c894dfc8d57f88955f88b7608c745003026080883c5f4e99bef07008d *7600e824080803000000240003008975f88b46088945fc8b4e04894d00be8cb51108c745f43c26 *080883c5f4ff268b46088945008b4d048b560489550489cec745fc8826080883c5fcff268d7600 *a8260808f0240808e82408080200000025000300e82408080b000200000001000b0003008d45e0 *3b43547303ff63fc8b4d0489750489cec745fcdc26080883c5fcff2690e4240808030000001200 *01008d45e83b43547303ff63f8c745f8d46d10088975fc8b460c8945f48b46088945f08b460489 *45ecbedcd1110883c5e8e998f307008b750483c508ff2683c7143b7b5c760ac7436c05000000ff *63f8c747f040c40908c747f400d211088b45048947f8c747fc94b90b088d4ff0890f8d77fc83c5 *08ff25c06d100889f6ec24080802000000150001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8b4e08894df48b56048955f083c5f0e90ffdffff8d7600ec240808010000002400010083 *c7183b7b5c760ac7436c06000000ff63f8c747eca02708088b45048947f08b46088947f4c747f8 *40c409088b46048947fc8d47ec89078d77f883c508e9ba45080089f6ec24080802000000150001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b7604c745f0d827080883 *c5f0ff2689f683c7143b7b5c760ac7436c05000000ff63f8c747f0282808088b46048947f48b4d *04894ff8c747fc94b90b088d57f089178d77fc83c508ff25c06d10088d76005428080854270808 *ec24080801000000250001008b45048b4e04894d0489c6c74500a8280808ff26a82808084c2708 *08ec2408080100000025000100ec24080802000000150001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df48b7604c745f0d028080883c5f0ff2689f6e42408080300000024 *00050083c7603b7b5c760ac7436c18000000ff63f8c747a4182708088b450c8947a88b46408947 *ac8b45048947b0c747b4dc2808088b45088947b88b463c8947bcc747c058c409088b46048947c4 *8b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b4620 *8947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f8 *8d47b48947fc8d47a489078d77c083c510ff65008d7600e4240808010000002400070083c7083b *7b5c760ac7436c02000000ff63f8c747fcec2608088b46088945fc8b4e04894d008b75048d57fc *895504c745f81429080883c5f8ff2689f6e42408080b00020000000000110007008d45f83b4354 *7308be34b71108ff63fc8b7500c74500d0290808ff26c8d0110824b71108010000002400000083 *c70c3b7b5c760ac7436c03000000ff63f8c747f840c409088b45048947fc8b4e08890f8d77f883 *c508e95d43080090382a080802000000150003008d45e43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894decc745e824b711088b56088955f4bec8d01108c745f0482a080883c5e4e954eb *0700382a0808420000002400030083c7583b7b5c760ac7436c16000000ff63f8c747ac842a0808 *8b463c8947b08b45048947b4c747b894b90b088d47ac8947bcc747c058c409088b46048947c48b *46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b462089 *47e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88d *47b88947fc8b464089078d77c083c50cff65008d7600382a08080b00020000000000110003008d *45fc3b43547308be3cb71108ff63fc8b7504c745fccc2a080883c5fcff2690d8d01108a02b0808 *0400010000000000110001008d45f43b4354720883c70c3b7b5c760fbe44b71108c7436c030000 *00ff63fcc747f8b46610088b4d00894ffc8d57f8895500c745fc8cc31108c745f800d21108bed8 *d0110883c5f4e9e3ee07008d7600d4d11108042c080800000200180001008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e819d2070083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fc90b8701c11088945f4bed4d1110883c5f0e9bbe3 *07008d760024ce110854cf1108ccd611084cb71108d8d011083cb71108702c0808000002001800 *3f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e899d1 *070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f43cb71108c745 *f044b71108c745ec24ce1108c745e8ccd61108c745e44cb71108be54cf110883c5e0e975f30700 *90420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46048947 *c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b45 *048947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947 *f88b463c8947fc8b464089078d77c083c50cff65008d76000b00020000000000110000008d45fc *3b43547308be7cb71108ff63fc8b7504c745fc102d080883c5fcff2690d4d11108c02d08080000 *0200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e85dd0070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8801c11 *088945f4bed4d1110883c5f0e9ffe107008d7600e0ce110854cd110854cf110880b711087cb711 *082c2e08080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8e1cf070083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcc745f47cb71108c745f0b0c31108c745ec54cd1108c745e8e0ce1108c745e480b71108be54 *cf110883c5e0e9bdf1070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c7 *47c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b4504 *8947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f0 *8b46348947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65008d76000b000200 *00000000110000008d45fc3b43547308beb0b71108ff63fc8b7504c745fcc82e080883c5fcff26 *904cd11108a4c61108782f080800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f404d21108be4cd1110883c5f0e953e207008d7600782f080800000200180003008d *45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e869ce070083 *c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f88c2f08088d47f88945 *f4bea4c6110883c5f0e9e7e107008d7600d4d111082430080800000200180001008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f9cd070083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fc90b88c1c11088945f4bed4d1110883c5f0 *e99bdf07008d7600f0ce11084ccf1108c4b71108b4b71108b0b71108903008080000020018001f *008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e87dcd07 *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4b0b71108c745f0 *a8c31108c745ecb4b71108c745e8f0ce1108c745e4c4b71108be4ccf110883c5e0e959ef070090 *420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46048947c4 *8b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b4620 *8947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b45048947f48b46388947f8 *8b463c8947fc8b464089078d77c083c50cff65008d76000b00020000000000110000008d45fc3b *43547308bef4b71108ff63fc8b7504c745fc2c31080883c5fcff26904cd11108a4c61108dc3108 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4c *d1110883c5f0e9efdf07008d7600dc31080800000200180003008d45f03b4354720883c7183b7b *5c760ac7436c06000000ff63f8c747ec085c100856e805cc070083c4048d47ec894604c706245b *1008c745f8d46d10088d47ec8945fcc747f8f03108088d47f88945f4bea4c6110883c5f0e983df *07008d7600d4d111088832080800000200180001008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e895cb070083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fc90b8941c11088945f4bed4d1110883c5f0e937dd07008d7600f0ce1108 *4ccf110808b81108f8b71108f4b71108f43208080000020018001f008d45e03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e819cb070083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4f4b71108c745f0c4c31108c745ecf8b71108c7 *45e8f0ce1108c745e408b81108be4ccf110883c5e0e9f5ec070090420000002400000083c7443b *7b5c760ac7436c11000000ff63f8c747c058c409088b46048947c48b46088947c88b460c8947cc *8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b4628 *8947e88b462c8947ec8b45048947f08b46348947f48b46388947f88b463c8947fc8b464089078d *77c083c50cff65008d76000b00020000000000110000008d45fc3b43547308be38b81108ff63fc *8b7504c745fc9033080883c5fcff26904cd11108a4c611084034080800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883c5f0e98bdd07008d *76004034080800000200180003008d45f03b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c747ec085c100856e8a1c9070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec *8945fcc747f8543408088d47f88945f4bea4c6110883c5f0e91fdd07008d7600d4d11108ec3408 *0800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e831c9070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8 *a01c11088945f4bed4d1110883c5f0e9d3da07008d7600f0ce11084ccf11084cb811083cb81108 *38b81108583508080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8b5c8070083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f438b81108c745f0c0c31108c745ec3cb81108c745e8f0ce1108c745e44cb811 *08be4ccf110883c5e0e991ea070090420000002400000083c7443b7b5c760ac7436c11000000ff *63f8c747c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d4 *8b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b45048947ec8b4630 *8947f08b46348947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65008d76000b *00020000000000110000008d45fc3b43547308be7cb81108ff63fc8b7504c745fcf435080883c5 *fcff26904cd11108a4c61108a436080800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fcc745f404d21108be4cd1110883c5f0e927db07008d7600a4360808000002001800 *03008d45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e83dc7 *070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8b83608088d47 *f88945f4bea4c6110883c5f0e9bbda07008d7600d4d111085037080800000200180001008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8cdc6070083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8ac1c11088945f4bed4d11108 *83c5f0e96fd807008d7600f0ce11084ccf110890b8110880b811087cb81108bc37080800000200 *18001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *51c6070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f47cb81108 *c745f0bcc31108c745ec80b81108c745e8f0ce1108c745e490b81108be4ccf110883c5e0e92de8 *070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b4604 *8947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc *8b46208947e08b46248947e48b45048947e88b462c8947ec8b46308947f08b46348947f48b4638 *8947f88b463c8947fc8b464089078d77c083c50cff65008d76000b00020000000000110000008d *45fc3b43547308bec0b81108ff63fc8b7504c745fc5838080883c5fcff26904cd11108a4c61108 *0839080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d211 *08be4cd1110883c5f0e9c3d807008d76000839080800000200180003008d45f03b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8d9c4070083c4048d47ec894604c7 *06245b1008c745f8d46d10088d47ec8945fcc747f81c3908088d47f88945f4bea4c6110883c5f0 *e957d807008d7600d4d11108b439080800000200180001008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e869c4070083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fc90b8b81c11088945f4bed4d1110883c5f0e90bd607008d7600f0 *ce11084ccf1108d4b81108c4b81108c0b81108203a08080000020018001f008d45e03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8edc3070083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f4c0b81108c745f0b8c31108c745ecc4b8 *1108c745e8f0ce1108c745e4d4b81108be4ccf110883c5e0e9c9e5070090420000002400000083 *c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46048947c48b46088947c88b460c *8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b45048947e4 *8b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88b463c8947fc8b4640 *89078d77c083c50cff65008d76000b00020000000000110000008d45fc3b43547308be04b91108 *ff63fc8b7504c745fcbc3a080883c5fcff26904cd11108a4c611086c3b08080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883c5f0e95fd6 *07008d76006c3b080800000200180003008d45f03b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c747ec085c100856e875c2070083c4048d47ec894604c706245b1008c745f8d46d1008 *8d47ec8945fcc747f8803b08088d47f88945f4bea4c6110883c5f0e9f3d507008d7600d4d11108 *183c080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e805c2070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fc90b8c41c11088945f4bed4d1110883c5f0e9a7d307008d7600f0ce11084ccf110818b9110808 *b9110804b91108843c08080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e889c1070083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f404b91108c745f0b4c31108c745ec08b91108c745e8f0ce1108c745e4 *18b91108be4ccf110883c5e0e965e3070090420000002400000083c7443b7b5c760ac7436c1100 *0000ff63f8c747c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b4614 *8947d48b46188947d88b45048947dc8b46208947e08b46248947e48b46288947e88b462c8947ec *8b46308947f08b46348947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65008d *76000b00020000000000110000008d45fc3b43547308be48b91108ff63fc8b7504c745fc203d08 *0883c5fcff26904cd11108a4c61108d03d080800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f404d21108be4cd1110883c5f0e9fbd307008d7600d03d0808000002 *00180003008d45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856 *e811c0070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8e43d08 *088d47f88945f4bea4c6110883c5f0e98fd307008d7600d4d111087c3e08080000020018000100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a1bf0700 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8d01c11088945f4bed4 *d1110883c5f0e943d107008d7600f0ce11084ccf11085cb911084cb9110848b91108e83e080800 *00020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e825bf070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f448 *b91108c745f0acc31108c745ec4cb91108c745e8f0ce1108c745e45cb91108be4ccf110883c5e0 *e901e1070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c40908 *8b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c *8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f4 *8b45048947f88b463c8947fc8b464089078d77c083c50cff65008d76000b000200000000001100 *00008d45fc3b43547308be8cb91108ff63fc8b7504c745fc843f080883c5fcff2690d4d1110834 *40080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e9bd070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *90b8dc1c11088945f4bed4d1110883c5f0e98bcf07008d7600e8ce11083ccd110854cf110890b9 *11088cb91108a04008080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e86dbd070083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f48cb91108c745f0c8c31108c745ec3ccd1108c745e8e8ce1108c745e490 *b91108be54cf110883c5e0e949df070090420000002400000083c7443b7b5c760ac7436c110000 *00ff63f8c747c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b450489 *47d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b *46308947f08b46348947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65008d76 *000b00020000000000110000008d45fc3b43547308bec0b91108ff63fc8b7504c745fc3c410808 *83c5fcff26904cd11108a4c61108ec41080800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fcc745f404d21108be4cd1110883c5f0e9dfcf07008d7600ec41080800000200 *180003008d45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8 *f5bb070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f800420808 *8d47f88945f4bea4c6110883c5f0e973cf07008d7600d4d111089842080800000200180001008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e885bb070083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8ec1c11088945f4bed4d1 *110883c5f0e927cd07008d7600f0ce11084ccf1108d4b91108c4b91108c0b91108044308080000 *020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e809bb070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c0b9 *1108c745f0a4c31108c745ecc4b91108c745e8f0ce1108c745e4d4b91108be4ccf110883c5e0e9 *e5dc070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b *46048947c48b46088947c88b460c8947cc8b45048947d08b46148947d48b46188947d88b461c89 *47dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b *46388947f88b463c8947fc8b464089078d77c083c50cff65008d76000b00020000000000110000 *008d45fc3b43547308be04ba1108ff63fc8b7504c745fca043080883c5fcff26904cd11108a4c6 *11085044080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404 *d21108be4cd1110883c5f0e97bcd07008d76005044080800000200180003008d45f03b43547208 *83c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e891b9070083c4048d47ec8946 *04c706245b1008c745f8d46d10088d47ec8945fcc747f8644408088d47f88945f4bea4c6110883 *c5f0e90fcd07008d7600d4d11108fc44080800000200180001008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e821b9070083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fc90b8f81c11088945f4bed4d1110883c5f0e9c3ca07008d76 *00f0ce11084ccf110818ba110808ba110804ba1108684508080000020018001f008d45e03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a5b8070083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f404ba1108c745f0a0c31108c745ec *08ba1108c745e8f0ce1108c745e418ba1108be4ccf110883c5e0e981da07009042000000240000 *0083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46048947c48b46088947c88b *45048947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b462489 *47e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88b463c8947fc8b *464089078d77c083c50cff65008d76000b00020000000000110000008d45fc3b43547308be48ba *1108ff63fc8b7504c745fc0446080883c5fcff2690d4d11108b446080800000200180001008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e869b7070083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8041d11088945f4bed4d111 *0883c5f0e90bc907008d7600d8ce110814ce11084ccf11084cba110848ba110820470808000002 *0018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8edb6070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f448ba11 *08c745f09cc31108c745ec14ce1108c745e8d8ce1108c745e44cba1108be4ccf110883c5e0e9c9 *d8070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46 *048947c48b45048947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947 *dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46 *388947f88b463c8947fc8b464089078d77c083c50cff65008d76000b0002000000000011000000 *8d45fc3b43547308be7cba1108ff63fc8b7504c745fcbc47080883c5fcff269048d11108ccd611 *086cb411086c48080800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e8a9b5070083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcc745f46cb41108c745f0ccd61108be48d1110883c5ece932cd070089f6d4d11108 *e448080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e839b5070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fc90b8141d11088945f4bed4d1110883c5f0e9dbc607008d760094cd11084ccf110890ba110880 *ba11087cba1108504908080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8bdb4070083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f47cba1108c745f098c31108c745ec94cd1108c745e880ba1108c745e4 *90ba1108be4ccf110883c5e0e999d6070090010000002400000083c70c3b7b5c760ac7436c0300 *0000ff63f8c747f838ec09088b46048947fc8b4d04890f8d77f883c508e9b92308009002000000 *150000008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b7604c745f0ec49 *080883c5f0ff2689f6420000002400000083c7503b7b5c760ac7436c14000000ff63f8c747b424 *4a08088b46048947b88b45048947bcc747c058c409088d47b48947c48b46088947c88b460c8947 *cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46 *288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88b463c8947fc8b46408907 *8d77c083c50cff65000b00020000000000110000008d45fc3b43547308bec0ba1108ff63fc8b75 *04c745fc584a080883c5fcff269048d11108184b080800000200180001008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e805b3070083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f494c31108c745f090c51108be48d1110883 *c5ece98eca070089f648d111085ca41108ccd61108884b080800000200180007008d45ec3b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88db2070083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f45ca41108c745f0ccd61108be48d1 *110883c5ece916ca070089f6d4d11108004c080800000200180001008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e81db2070083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fc90b81c1d11088945f4bed4d1110883c5f0e9bfc30700 *8d760044a311084ccf1108e4ba1108d4ba1108c4ba1108c0ba11086c4c08080000020018003f00 *8d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e89db10700 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c0ba1108c745f0c4 *ba1108c745ec44a31108c745e8d4ba1108c745e4e4ba1108be4ccf110883c5e0e979d307009001 *0000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f838ec09088b45048947fc8b *4e08890f8d77f883c508e9992008009002000000150000008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e08894df48b7604c745f00c4d080883c5f0ff2689f6420000002400000083c7 *503b7b5c760ac7436c14000000ff63f8c747b4444d08088b46048947b88b45048947bcc747c058 *c409088d47b48947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d8 *8b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b4634 *8947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65000b000200000000001100 *00008d45fc3b43547308be14bb1108ff63fc8b7504c745fc784d080883c5fcff269048d1110838 *4e080800000200180001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e5af070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f494c31108c745f08cc51108be48d1110883c5ece96ec7070089f6d4d11108a84e08080000 *0200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e875af070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8241d11 *088945f4bed4d1110883c5f0e917c107008d760008c411084ccf1108ccd6110828bb110818bb11 *0814bb1108144f08080000020018003f008d45e03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e8f5ae070083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcc745f414bb1108c745f018bb1108c745ec08c41108c745e8ccd61108c745e428bb *1108be4ccf110883c5e0e9d1d0070090e4d11108d4d11108f8c41108d0d51108b04f0808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c1d1108894df4bed4 *d1110883c5f0e933c007008d7600b44f080801000100130001008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80c5f10088b4e04894ffc8d57f8 *8955f4bef8c4110883c5f0e9c0c10700ac4f080801000100130007008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecc84f0808c747f804500808 *8b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece96fc507008d7600ac4f080802 *000000150007008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec545008088b46088947f0c747f87cdc0b08c747fc580a12088d47ec89078d47f8 *8945f48b46048945f0bee4d1110883c5ece903c507008d7600ac4f08080b000200000000001100 *0f0083c70c3b7b5c760fbe68bb1108c7436c03000000ff63fcc747f8b45008088b45008947fc8b *4d04890f8d57f8895504bed0d51108e9abc007008d76004cae1108be00d2110883c50c8b4500ff *60f089f68b450c8945148b751083c514e9770100008d76008b750883c50ce9690100009083c718 *3b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b46088947f4c747f87cdc *0b088b46048947fc8d47ec89078d77f883c5108b4500ff60ec9094510808885108080000000003 *0000002500000004000100020000000e0000008d45f43b43547303ff63fc8975f88b46088945fc *8b45008b4e04894d0089c6c745f4ec51080883c5f4ff269083c70c3b7b5c760ac7436c03000000 *ff63f8c747f8f85108088b450c8947fc8b4d10890f8b55048955148d77f883c514eba289f62452 *08087451080800000000450200002500000005000000240000008b45148945fc8b4d08894df88b *7608c745006c52080883c5f4e982c3070089f66051080803000000240001008b46088945fc8b4e *04894d00be4cae1108c745f87452080883c5f8ff268d76008b46088945008b7604c745fca05208 *0883c5fcff268d7600c05208086451080860510808020000002500010060510808040001000100 *00000c0001008d45e03b43547303ff63fc8975fc8b4d008b560489550089cec745f8ec52080883 *c5f8ff268d7600605108080b000200000000001100010083c7083b7b5c760fbe70bb1108c7436c *02000000ff63fcc747fcfc5208088b450089078d77fc83c504eb9d90420000002400000083c710 *3b7b5c760ac7436c04000000ff63f8c747f410c409088b46048947f88b4d04894ffc8b560c8917 *8d77f483c50cff6500900b00020000000000110000008d45fc3b43547308be78bb1108ff63fc8b *7504c745fc6853080883c5fcff2690d4d11108c853080800000200180001008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e855aa070083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fc90b8301d11088945f4bed4d1110883c5f0e9f7 *bb07008d7600d8ce110814ce11084ccf11087cbb110878bb1108345408080000020018001f008d *45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8d9a9070083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f478bb1108c745f050c3 *1108c745ec14ce1108c745e8d8ce1108c745e47cbb1108be4ccf110883c5e0e9b5cb0700904200 *00002400000083c7103b7b5c760ac7436c04000000ff63f8c747f410c409088b45048947f88b4e *08894ffc8b560c89178d77f483c50cff6500900b00020000000000110000008d45fc3b43547308 *beacbb1108ff63fc8b7504c745fcd054080883c5fcff26904cd11108a4c6110830550808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883 *c5f0e99bbc07008d76003055080800000200180003008d45f03b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c747ec085c100856e8b1a8070083c4048d47ec894604c706245b1008c745 *f8d46d10088d47ec8945fcc747f8445508088d47f88945f4bea4c6110883c5f0e92fbc07008d76 *00d4d11108dc55080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e841a8070083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fc90b8381d11088945f4bed4d1110883c5f0e9e3b907008d7600f0ce11084ccf1108 *c0bb1108b0bb1108acbb1108485608080000020018001f008d45e03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e8c5a7070083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcc745f4acbb1108c745f04cc31108c745ecb0bb1108c745e8f0ce *1108c745e4c0bb1108be4ccf110883c5e0e9a1c9070090420000002400000083c7383b7b5c760a *c7436c0e000000ff63f8c747cc28c409088b46048947d08b46088947d48b460c8947d88b461089 *47dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b *462c8947f88b46308947fc8b450489078d77cc83c50cff6500900b00020000000000110000008d *45fc3b43547308bef0bb1108ff63fc8b7504c745fce456080883c5fcff2690d4d1110880570808 *00000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c *100856e89da6070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b844 *1d11088945f4bed4d1110883c5f0e93fb807008d760044cf1108f4bb1108f0bb1108ec57080800 *000200180007008d45e43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e829a6070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f0 *bb1108c745f088c31108c745eca8b11108c745e8f4bb1108be44cf110883c5e4e90cc507004200 *00002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b46 *088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b46208947 *ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b450489078d77cc83c50cff6500 *900b00020000000000110000008d45fc3b43547308be24bc1108ff63fc8b7504c745fc78580808 *83c5fcff2690d4d111081459080800000200180001008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e809a5070083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fc90b8501d11088945f4bed4d1110883c5f0e9abb607008d760044cf11 *0828bc110824bc11088059080800000200180007008d45e43b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e895a4070083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f424bc1108c745f088c31108c745ecacb11108c745e828bc1108be *44cf110883c5e4e978c30700420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c7 *47cc28c409088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b4618 *8947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b462c8947f88b46308947fc *8b450489078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308be58bc11 *08ff63fc8b7504c745fc0c5a080883c5fcff2690d4d11108a85a080800000200180001008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e875a3070083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8601d11088945f4bed4d11108 *83c5f0e917b507008d760044cf11085cbc110858bc1108145b080800000200180007008d45e43b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e801a3070083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f458bc1108c745f088c31108c7 *45eca4b11108c745e85cbc1108be44cf110883c5e4e9e4c10700420000002400000083c7383b7b *5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b46088947d48b460c8947d88b *46108947dc8b46148947e08b46188947e48b45048947e88b46208947ec8b46248947f08b462889 *47f48b462c8947f88b46308947fc8b463489078d77cc83c50cff6500900b000200000000001100 *00008d45fc3b43547308be8cbc1108ff63fc8b7504c745fca05b080883c5fcff2690d4d111083c *5c080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e1a1070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *90b86c1d11088945f4bed4d1110883c5f0e983b307008d760024ce110854cf1108ccd6110890bc *11088cbc1108a85c08080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e865a1070083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f48cbc1108c745f070c31108c745ec24ce1108c745e8ccd61108c745e490 *bc1108be54cf110883c5e0e941c3070090420000002400000083c7383b7b5c760ac7436c0e0000 *00ff63f8c747cc28c409088b46048947d08b46088947d48b460c8947d88b46108947dc8b461489 *47e08b45048947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b462c8947f88b *46308947fc8b463489078d77cc83c50cff6500900b00020000000000110000008d45fc3b435473 *08bec0bc1108ff63fc8b7504c745fc445d080883c5fcff2690d4d11108e05d0808000002001800 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83da0 *070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b87c1d11088945f4 *bed4d1110883c5f0e9dfb107008d7600d8ce110814ce11084ccf1108c4bc1108c0bc11084c5e08 *080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8c19f070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f4c0bc1108c745f06cc31108c745ec14ce1108c745e8d8ce1108c745e4c4bc1108be4ccf110883 *c5e0e99dc1070090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c4 *09088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b *461c8947e88b46208947ec8b46248947f08b46288947f48b45048947f88b46308947fc8b463489 *078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308bef4bc1108ff63fc *8b7504c745fce85e080883c5fcff2690d4d11108845f080800000200180001008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8999e070083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fc90b88c1d11088945f4bed4d1110883c5f0e9 *3bb007008d7600d8ce110814ce110854cf1108f8bc1108f4bc1108f05f08080000020018001f00 *8d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e81d9e0700 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4bc1108c745f080 *c31108c745ec14ce1108c745e8d8ce1108c745e4f8bc1108be54cf110883c5e0e9f9bf07009042 *0000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b *46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b462089 *47ec8b46248947f08b46288947f48b462c8947f88b45048947fc8b463489078d77cc83c50cff65 *00900b00020000000000110000008d45fc3b43547308be28bd1108ff63fc8b7504c745fc8c6008 *0883c5fcff2690d4d111082861080800000200180001008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8f59c070083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fc90b89c1d11088945f4bed4d1110883c5f0e997ae07008d7600d8ce *110814ce110854cf11082cbd110828bd1108946108080000020018001f008d45e03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8799c070083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f428bd1108c745f084c31108c745ec14ce11 *08c745e8d8ce1108c745e42cbd1108be54cf110883c5e0e955be070090420000002400000083c7 *383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b46088947d48b460c89 *47d88b46108947dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b46248947f08b *45048947f48b462c8947f88b46308947fc8b463489078d77cc83c50cff6500900b000200000000 *00110000008d45fc3b43547308be5cbd1108ff63fc8b7504c745fc3062080883c5fcff2690d4d1 *1108cc62080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8519b070083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fc90b8a81d11088945f4bed4d1110883c5f0e9f3ac07008d760034ce110854cf1108ccd611 *0860bd11085cbd1108386308080000020018001f008d45e03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e8d59a070083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f45cbd1108c745f07cc31108c745ec34ce1108c745e8ccd61108c7 *45e460bd1108be54cf110883c5e0e9b1bc070090420000002400000083c7383b7b5c760ac7436c *0e000000ff63f8c747cc28c409088b46048947d08b46088947d48b460c8947d88b46108947dc8b *46148947e08b46188947e48b461c8947e88b46208947ec8b45048947f08b46288947f48b462c89 *47f88b46308947fc8b463489078d77cc83c50cff6500900b00020000000000110000008d45fc3b *43547308be90bd1108ff63fc8b7504c745fcd463080883c5fcff2690d4d1110870640808000002 *00180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8ad99070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8b81d1108 *8945f4bed4d1110883c5f0e94fab07008d760034ce110854cf1108ccd6110894bd110890bd1108 *dc6408080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e83199070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fcc745f490bd1108c745f078c31108c745ec34ce1108c745e8ccd61108c745e494bd1108be54cf *110883c5e0e90dbb070090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747 *cc28c409088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b461889 *47e48b461c8947e88b45048947ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b *463489078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308bec4bd1108 *ff63fc8b7504c745fc7865080883c5fcff269048d11108ccd611087cb311081466080800000200 *180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *0198070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f47cb31108 *c745f0ccd61108be48d1110883c5ece98aaf070089f6d4d111088c66080800000200180001008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e89197070083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8c41d11088945f4bed4d1 *110883c5f0e933a907008d7600b4cd110854cf1108d8bd1108c8bd1108c4bd1108f86608080000 *020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e81597070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c4bd *1108c745f074c31108c745ecb4cd1108c745e8c8bd1108c745e4d8bd1108be54cf110883c5e0e9 *f1b8070090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b *46048947d08b46088947d48b460c8947d88b46108947dc8b45048947e08b46188947e48b461c89 *47e88b46208947ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b463489078d77 *cc83c50cff6500900b00020000000000110000008d45fc3b43547308be08be1108ff63fc8b7504 *c745fc9467080883c5fcff2690d4d111083068080800000200180001008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8ed95070083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fc90b8d01d11088945f4bed4d1110883c5f0e98fa707 *008d7600d8ce110814ce110854cf11080cbe110808be11089c6808080000020018001f008d45e0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e87195070083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f408be1108c745f068c31108 *c745ec14ce1108c745e8d8ce1108c745e40cbe1108be54cf110883c5e0e94db707009042000000 *2400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b460889 *47d48b460c8947d88b45048947dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b *46248947f08b46288947f48b462c8947f88b46308947fc8b463489078d77cc83c50cff6500900b *00020000000000110000008d45fc3b43547308be3cbe1108ff63fc8b7504c745fc3869080883c5 *fcff26904cd1110834c61108a4c61108a4d01108d469080800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883c5f0e9efa707008d7600d469 *080800000200120005008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f8f06908088d4ff8894df4bea4c6110883c5f0e9a2a7070089f6d4690808 *0000020018000f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c *100856e8b993070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8 *286a08088d47f88945f4c745f0a4d01108be34c6110883c5ece93cab070048d11108e0d1110820 *d71108ccd61108dc6a080800000200120005008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f4ccd61108bee0d1110883c5f0e9eba607008d7600d86a08080000020018000f008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e80193070083c404 *8d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8f46a08088d47f88945f4c7 *45f020d71108be48d1110883c5ece984aa0700d4d11108906b080800000200180001008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88d92070083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8dc1d11088945f4bed4d1110883 *c5f0e92fa407008d76004ccf110860be110850be110840be11083cbe1108fc6b08080000020018 *001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e811 *92070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f43cbe1108c7 *45f064c31108c745ec40be1108c745e850be1108c745e460be1108be4ccf110883c5e0e9edb307 *0090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b460489 *47d08b46088947d48b45048947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b *46208947ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b463489078d77cc83c5 *0cff6500900b00020000000000110000008d45fc3b43547308be90be1108ff63fc8b7504c745fc *986c080883c5fcff26904cd1110834c61108a4c61108a4d01108346d080800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883c5f0e98fa407 *008d7600346d080800000200120005008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8506d08088d4ff8894df4bea4c6110883c5f0e942a40700 *89f6346d08080000020018000f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c747ec085c100856e85990070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec *8945fcc747f8886d08088d47f88945f4c745f0a4d01108be34c6110883c5ece9dca7070048d111 *08e0d1110820d71108ccd611083c6e080800000200120005008d45f03b43547303ff63f8c745f8 *d46d10088975fcc745f4ccd61108bee0d1110883c5f0e98ba307008d7600386e08080000020018 *000f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8a1 *8f070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8546e08088d *47f88945f4c745f020d71108be48d1110883c5ece924a70700d4d11108f06e0808000002001800 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e82d8f *070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8e81d11088945f4 *bed4d1110883c5f0e9cfa007008d76004ccf1108b4be1108a4be110894be110890be11085c6f08 *080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8b18e070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f490be1108c745f060c31108c745ec94be1108c745e8a4be1108c745e4b4be1108be4ccf110883 *c5e0e98db0070090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c4 *09088b46048947d08b45048947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b *461c8947e88b46208947ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b463489 *078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308bee4be1108ff63fc *8b7504c745fcf86f080883c5fcff26904cd1110834c61108a4c61108a4d0110894700808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883 *c5f0e92fa107008d76009470080800000200120005008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8b07008088d4ff8894df4bea4c6110883c5 *f0e9e2a0070089f6947008080000020018000f008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c747ec085c100856e8f98c070083c4048d47ec894604c706245b1008c745f8d4 *6d10088d47ec8945fcc747f8e87008088d47f88945f4c745f0a4d01108be34c6110883c5ece97c *a4070048d11108e0d1110820d71108ccd611089c71080800000200120005008d45f03b43547303 *ff63f8c745f8d46d10088975fcc745f4ccd61108bee0d1110883c5f0e92ba007008d7600987108 *080000020018000f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec08 *5c100856e8418c070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747 *f8b47108088d47f88945f4c745f020d71108be48d1110883c5ece9c4a30700d4d1110850720808 *00000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c *100856e8cd8b070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8f4 *1d11088945f4bed4d1110883c5f0e96f9d07008d76004ccf110808bf1108f8be1108e8be1108e4 *be1108bc7208080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c747f8085c100856e8518b070083c4048d47f8894604c706245b1008c745f8d46d10088d47 *f88945fcc745f4e4be1108c745f05cc31108c745ece8be1108c745e8f8be1108c745e408bf1108 *be4ccf110883c5e0e92dad070090420000002400000083c7383b7b5c760ac7436c0e000000ff63 *f8c747cc28c409088b45048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b *46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b462c8947f88b463089 *47fc8b463489078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308be38 *bf1108ff63fc8b7504c745fc5873080883c5fcff269048d11108ccd611089cb31108f473080800 *000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8218a070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f49c *b31108c745f0ccd61108be48d1110883c5ece9aaa1070089f6d4d111086c740808000002001800 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b189 *070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8001e11088945f4 *bed4d1110883c5f0e9539b07008d76004ccf1108ccb311084cbf11083cbf110838bf1108d87408 *080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e83589070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f438bf1108c745f058c31108c745ecccb31108c745e83cbf1108c745e44cbf1108be4ccf110883 *c5e0e911ab070090d4d1110844d11108e0d1110830d71108c0d61108c8d61108ccd61108d0d611 *08d8d61108e4d611086cbf1108bed0d6110883c50cff2689f680750808030000002400010083c7 *1c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b450c8947ec8b45088947f08b450489 *47f4c747f88c6b10088b46088947fc8b450889078d47e889450c8d47f8894508bec8d6110883c5 *04e90ea0070089f68b46088945008b7604c745fcb075080883c5fcff268d760008760808987508 *08807508080200000025000500807508080b000200000001000b0005008d45f83b43547303ff63 *fc8b4d0489750489cec745fc3476080883c5fcff26908075080800000200120005008d45f83b43 *54720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc447608088d *77fc83c5f8e92ef7070089f69475080802000000150001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fcc745f46cbf11088b4e08894df08b760483c5ece9339f07008d7600847508080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beccd6110883 *c5f0e9f09a07006c75080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b90c1e1108894df4bed4d1110883c5f0e9d79807008d76006c75080800000200120041 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8247708088d4ff8894df4beccd6110883c5f0e96a9a070089f66c75080801000100130051008d *45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf0 *7608088b46048947f0c747f8607708088d47ec8945f48d47f88945f0bec0d6110883c5ece9179e *07008d76006c75080801000100130071028d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8ac7708088b4e04894ffc8d57f88955f4c745f0e4d611 *08bec8d6110883c5ece9bd9d0700906c750808010000002400710683c7183b7b5c760ac7436c06 *000000ff63f8c747ecb47608088b45048947f08b46088947f4c747f80c7808088b46048947fc8d *47ec8945048d47f8894500bec8d6110883c5fce9659d0700906c75080804000100010000000c00 *71068d45f83b43547303ff63fc8b4d008b560489550089cec745fc6478080883c5fcff2689f66c *75080802000000150075068d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745 *f8d46d10088975fcc747fcc07808088b460489078b46088945f48d47fc8945f0bee0d1110883c5 *ece9db9c07008d76006c75080802000000150075078d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8f07808088b46048947fc8b460889078d47f8 *8945f4bed8d6110883c5f0e9779807008d7600bed0d6110883c508ff2689f68b46048945008b75 *04c745046cbf110883c5fce95c9c0700a079080894790808887508080100000025000900887508 *0802000000150009008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df48b7608 *c745f0cc79080883c5f0ff2689f66c750808030000001200f5078d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec487908088b46048947f08b460c *8947f4c747f8d87908088b46048947fc8b460889078d47ec8945f48d47f88945f0bec8d6110883 *c5ece9a29b070089f66c750808000000002400ff0783c71c3b7b5c760ac7436c07000000ff63f8 *c747e870760808c747f4107a08088d47e88947f88b46048947fc8b460889078d47f4894500c745 *fc30d71108be44d1110883c5f8e9499b0700906c75080804000100000000001100ff078d45f83b *43547308be7cbf1108ff63fc8b7500c74500807a0808ff267cbf1108c0d51108f87a0808010001 *00130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9adffff *ff90f87a08080b00020000000000110003008d45fc3b4354720883c70c3b7b5c760fbe84bf1108 *c7436c03000000ff63fcc747f80c7b08088b4d04894ffc8d57f8895504bec0d5110883c5fce995 *9a070090d4d11108e0d1110824cf1108accf11086ccd1108ccb61108ccb511083cd511084cb311 *085cb311086cb311088cb511086cbf1108807b080800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9181e1108894df4bed4d1110883c5f0e93b9407008d760083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8c07b08088d47f8894500c745fcd8111208be6c *cd110883c5f8e9f199070090807b080800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9541e1108894df4bed4d1110883c5f0e9cb9307008d7600847b08080100 *0100130041008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03cd511 *08bee0d1110883c5ece97999070090807b080800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9601e1108894df4bed4d1110883c5f0e9539307008d760083c70c *3b7b5c760ac7436c03000000ff63f8c747f8a87c08088d47f88945108b4d04894d0cbe6ccd1108 *83c508e90a99070089f604000100020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7 *436c03000000ff63fcc747f8e4bb0b088b46048947fc8b450089078d47f88945008b760883c5fc *e9b39407008d7600987b080800000200120041008d45f03b43547303ff63f8c745f8d46d100889 *75fcc745f46cbf1108beccb5110883c5f0e97b9407008d7600947b08080100010013008b008d45 *e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8647d *08088b4e04894df4c745f0ccb611088d57f88955ecbe4cb3110883c5e8e9fd9c070090947b0808 *4300000024008b0083c7183b7b5c760ac7436c06000000ff63f8c747ec187d08088b45048947f0 *8b460c8947f4c747f89c7d08088b450c8947fc8d47ec89450c8d47f88945088b760483c504e9d7 *9707008d7600be24cf1108c74504f47d080883c504ff268d7600407e0808d87c0808807b080884 *00000025007511807b0808040000002400f71183c7183b7b5c760ac7436c06000000ff63f8c747 *ec307c0808c747f86c7c08088b450c8947fc8d4fec894dfc8d57f88955f88b7608c74500687e08 *0883c5f4e95c970700807b0808010000002400f7198b46048945f88b4e0c894dfc8b5608895500 *be8cb51108c745f4747e080883c5f4ff26908b46088945008b7604c745fcc47e080883c5fcff26 *8d7600e87e0808f07b0808807b0808000000002500f719807b080804000100000001000b00f719 *8d45e43b43547303ff63fc8b7500c74500147f0808ff2690807b080800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9881e1108894df4bed4d1110883c5f0e9b3 *9007008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8487f08088d47f88945108b75 *0c83c50ce96692070089f604000100010000000c0000008d45fc3b4354720883c70c3b7b5c760a *c7436c03000000ff63fcc747f8e4bb0b08c747fce0d011088b4d00890f8d57f88955008b760483 *c5fce91a92070089f6a87b080802000000150001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e08894df48b56048955f0be6cb3110883c5ece9ea95070089f683c7143b7b5c760ac7 *436c05000000ff63f8c747f0b07f08088b45108947f4c747f8fc7f08088b45148947fc8b450489 *078d47f08945148d47f88945108b750883c50ce9a095070004000100020000000e0000008d45fc *3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8e4bb0b088b46088947fc8b4500 *89078d47f88945008b760483c5fce94b9107008d7600a87b080802000000150001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be6cb3110883c5ece91a95 *070089f683c7183b7b5c760ac7436c06000000ff63f8c747ec808008088b45108947f08977f4c7 *47f8cc8008088b45148947fc8b450c89078d47ec8945148d47f88945108b750883c50ce9cd9407 *0090fc8008082c800808a87b08080500000025000100a87b080804000100050000000b0001008d *45ec3b43547303ff63fc8b46148945f08b46108945f48b460c8945f88b46088945fc8b45008b4e *04894d0089c6c745ec5c81080883c5ecff2689f68b7504c74504e0d01108e95190070090807b08 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e01e110889 *4df4bed4d1110883c5f0e9378e07008d7600847b080801000100130041008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f03cd51108bee0d1110883c5ece9e593070090 *8b7508c74508e0d0110883c504e9c68f070089f6987b080800000200120041008d45f03b435473 *03ff63f8c745f8d46d10088975fcc745f46cbf1108beccb5110883c5f0e98f8f07008d7600947b *08080100010013008b008d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f8508208088b4e04894df4c745f0ccb611088d57f88955ecbe4cb3110883 *c5e8e9119807009083c70c3b7b5c760ac7436c03000000ff63f8c747f8888208088b45048947fc *8d4ff8894d08c74504e4d01108be5cb31108e90a93070089f6d482080830820808947b08080200 *000025009b00807b0808030000002400e31383c7183b7b5c760ac7436c06000000ff63f8c747ec *c4810808c747f8008208088b45048947fc8d4fec894d008d57f88955fc8b7604c7450420830808 *83c5f8e9a4920700807b0808020000002400e31b8b4608894500be8cb51108c745fc2c83080883 *c5fcff26908975008b7604c745fc7c83080883c5fcff2689f694830808a8810808807b08080100 *00002500e31b807b0808020000001500e31b8d45e03b43547303ff63f8c745f8d46d10088975fc *8b4e08894df48b7604c745f0bc83080883c5f0ff2689f683c7243b7b5c760ac7436c09000000ff *63f8c747e06c8108088b45108947e48b45088947e88b46088947ec8b45048947f08977f4c747f8 *c88308088b46048947fc8b450889078d47e08945108d47f889450c8b750483c508e9c39107008d *7600f4830808787f0808807b0808040000002500e31f807b080804000100040000000b00e31f8d *45f03b43547303ff63fc8b46108945f48b460c8945f88b46088945fc8b45008b4e04894d0089c6 *c745f06884080883c5f0ff268c7b080801000100130001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4beaccf110883c5f0e9288d0700807b0808020000002400eb1f83c7 *203b7b5c760ac7436c08000000ff63f8c747e4788408088b45048947e88b46108947ec8b460c89 *47f08b46048947f4c747f8b88408088b45088947fc8d47e48945088d47f88945048b7604e9d690 *070089f6807b080804000100000000001100ff1f8d45f83b4354720883c7083b7b5c760fbe8cbf *1108c7436c02000000ff63fcc747fc247f08088d4ffc894dfcbe24cf1108c745f8ec84080883c5 *f8ff268d760004b311088cbf1108908508080400010000000000110003008d45fc3b43547308be *94bf1108ff63fcc745fc8cbf110883c5fce955e5feff9044d11108e0d1110830d71108c8d61108 *d0d61108d8d61108e4d6110848bb1108e0bb11086cbf1108bed0d6110883c50cff2689f6d48508 *08030000002400010083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b450c8947 *ec8b45088947f08b45048947f4c747f88c6b10088b46088947fc8b450889078d47e889450c8d47 *f8894508bec8d6110883c504e9b68f070089f68b46088945008b7604c745fc0886080883c5fcff *268d760060860808f0850808d48508080200000025000300d48508080b000200000001000b0003 *008d45f83b43547303ff63fc8b4d0489750489cec745fc8c86080883c5fcff2690d48508080000 *0200120003008d45f83b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc9c8608088d77fc83c5f8e9d6e6070089f6ec85080802000000150001008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f824601008 *8b4e08894ffcc745f46cbf11088d57f88955f08b760483c5ece9bf8e07008d7600e88508080200 *0000150001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4e0bb11088b4e08894d *f08b760483c5ece9838e07008d7600d485080802000000150029008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8648708088b46048947fc8b46 *0889078d47f88945f4c745f0e4d61108bec8d6110883c5ece9248e0700d4850808040001000100 *00000c0069008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec0c870808 *8b46048947f08b45008947f4c747f8a08708088b46048947fc8b450089078d47ec8945008d47f8 *8945fcbec8d6110883c5f8e9bc8d0700cc850808020000001500a5018d45ec3b4354720883c714 *3b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0406710088b46088947f4c7 *47fc008808088b460489078d47f08945f48d47fc8945f0bee0d1110883c5ece95a8d070089f6cc *850808020000001500b5018d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8648808088b46048947fc8b460889078d47f88945f4bed8d6110883c5 *f0e9f78807008d7600bed0d6110883c508ff2689f683c70c3b7b5c760ac7436c03000000ff63f8 *c747f8985f10088b46048947fc8d4ff8894d008b7504c745046cbf110883c5fce9bd8c07009020 *89080814890808d88508080100000025002100d885080801000000240021008b763cc745006c89 *0808ff26d885080802000000150021008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e *04894df48b7608c745f07889080883c5f0ff2689f6e485080802000000150001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fcc745f448bb11088b4e08894df08b760483c5ece91f8c0700 *8d7600d485080802000000150053008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec908908088b46048947f08b46088947f4c747f8c88908088b *46048947fc8b460889078d47ec8945f48d47f88945f0bec8d6110883c5ece9ae8b070089f6cc85 *0808020000001500fd018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8 *d46d10088975fcc747ecc88808088b46048947f08b46088947f4c747f8048a08088b46048947fc *8b460889078d47ec8945f48d47f88945f0bec8d6110883c5ece93e8b070089f6c8850808040001 *00000000001100ff038d45f83b4354720883c7183b7b5c760fbe9cbf1108c7436c06000000ff63 *fcc747ecc8860808c747f8748a08088d47ec8947fc8b450089078d47f8894500c745fc30d71108 *be44d1110883c5f8e9da8a070089f69cbf1108c0d511083c8b080801000100130001008d45f43b *43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e975ffffff903c8b08080b0002 *0000000000110003008d45fc3b4354720883c70c3b7b5c760fbea4bf1108c7436c03000000ff63 *fcc747f8508b08088b4d04894ffc8d57f8895504bec0d5110883c5fce9518a070090e4d1110854 *d21108c4d11108d4d1110844d11108c8d0110824cf1108accf11086ccd110848bb1108ccb51108 *0cb311081cb311082cb311083cb311088cb5110808b7110824b71108e0bb11086cbf1108c48b08 *0814000000ffff0f00bee0d0110883c50c8b4500ff60f089f68b75188b451089451883c514e9eb *0000008d760083c7143b7b5c760ac7436c05000000ff63f8c747f0e4bb0b088b45088947f48b45 *048947f8c747fc94b90b088d47f089078d77fc83c51c8b4500ff60ec8d7600448c0808308c0808 *00000000860000002500000006000000240000008b450c8945fc8b4d14894df88b7608c7450098 *8c080883c5f4e95689070089f6008c080803000000240001008b460c8945f88b4e04894dfc8b56 *08895500be8cb51108c745f4a08c080883c5f4ff26908b46088945008b7604c745fccc8c080883 *c5fcff268d7600f08c0808208c0808008c08080200000025000100008c08080b00020000000100 *0b0001008d45e03b43547303ff63fc8b4d0489750489cec745fc1c8d080883c5fcff2690010000 *002400000083c7103b7b5c760ac7436c04000000ff63f8c747f410c409088b46048947f88b4e08 *894ffc8b550489178d77f483c508e94be007008d760002000000150000008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e08894df48b7604c745f0548d080883c5f0ff2689f604000100 *020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8948d *08088b46048947fc8b450089078d47f88945008b760883c5fce9ff8307008d7600ec8b08080400 *0000120001028d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d1008 *8975fcc747e8fcbb0b088b46088947ec8b460c8947f08b46108947f4c747f8246010088b460489 *47fc8d47e88945f48d47f88945f0c745ec6cbf110883c5ece9dff2feff8d7600ec8b0808040000 *002400010283c7203b7b5c760ac7436c08000000ff63f8c747e4cc8d08088b450c8947e88b460c *8947ecc747f0188e08088b450c8947f48b45108947f88b45088947fc8b450489078d47e4894510 *8d47f089450c8b760483c508e92e87070089f6dc8b080842000000240011208b460c8945fc8b4e *08894d008b5604895508be24cf1108c745f88c8e080883c5f8ff26908b750cc74504f48e080883 *c504ff269083c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b088b45088947f88b450c *8947fc8b450489078d47f48945208b75188b451489451883c518e9f70000008d76008b451c8945 *208b4d04894d1c8b55088955188b751083c514e95b8b07008d76006c8f0808288f080800000000 *081000002500000008000000240000008b450c8945fc8b4d20894df88b7608c74500a08f080883 *c5f4e94e86070089f6008c080805000000240001008b460c8945f88b4e04894dfc8b5608895500 *be8cb51108c745f4a88f080883c5f4ff2690008c080804000000240001008b46108945008b4d10 *8b560489551089cec745fcd48f080883c5fcff268d76008b46088945008b7604c745fc04900808 *83c5fcff268d760024900808188f0808dc8b08080300000025001122dc8b080816000300000001 *000b0011228d45dc3b43547303ff63fc8b4d0089750089cec745fc5090080883c5fcff2690c48b *0808130000001f190500c48b0808130000001f190500897500be54d2110883c5fce96081070098 *90080898900808c88b08080000000025000100b8ec1e1108894504bed4d11108c74508bc900808 *e9537f07008d7600c48b0808130000001d190500d08b080800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9041f1108894df4bed4d1110883c5f0e90b7f07008d *7600c48b08081300000019190500c48b080801000100130001008d45ec3b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc900a1208c707 *00d211088d4ff8894df48b56048955f0bee4d1110883c5ece98b8407008d7600d08b0808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9101f1108894df4bed4 *d1110883c5f0e9637e07008d7600c48b080801000100130009008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec389108088b46048947f0c747f8 *989108088d47ec8945f48d47f88945f0bee4d1110883c5ece9ef8307008d7600e48b0808010001 *00130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be6ccd110883c5 *f0e9ac7f070083c7183b7b5c760ac7436c06000000ff63f8c747ecd49108088b450c8947f0c747 *f8349208088b45048947fc8d47ec8945188d47f8894514be44d1110883c510e9738307008d7600 *d08b080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c1f *1108894df4bed4d1110883c5f0e94b7d07008d7600c48b08081300000019180500d08b08080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9441f1108894df4be *d4d1110883c5f0e9037d07008d7600c48b080801000100130009008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f89208088d4ff8894df48b56 *048955f0bee4d1110883c5ece99c820700d08b080800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b94c1f1108894df4bed4d1110883c5f0e9777c07008d7600c4 *8b080801000100130009008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec349308088b46048947f0c747f8849308088d47ec8945f48d47f88945 *f0bee4d1110883c5ece9038207008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8c0 *9308088b45048947fc8d4ff8894d14c745100cb31108be44d1110883c50ce9c78107008d76000c *8c080801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4e0bb1108 *8b760483c5f0e9857d070090f48b0808830000002400510083c70c3b7b5c760ac7436c03000000 *ff63f8c747f85c9408088b45088947fc8b4d04894d0cc7450808b711088d57f8895504be1cb311 *08e9188607008b7604c745089094080883c508ff2690cc94080814940808e09208084502000025 *00ffff83c70c3b7b5c760ac7436c03000000ff63f8c747f8b09208088b45108945008d4ff8894d *fc8b7518c74504f094080883c5fce905f8ffff90f09408085c92080820910808060000002500ff *ffd8900808030000002400ffff83c70c3b7b5c760ac7436c03000000ff63f8c747f8f09008088b *46088945f08d47f88945ec8b46048945f88b460c8945fc8b4608894500bec4d11108c745f43c95 *080883c5e8e981800700908975008b7604c745fc4895080883c5fcff2689f694950808bc900808 *8c900808020000002500ffff8090080804000100020000000e00ffff8d45dc3b43547303ff63fc *8b46088945fc8b45008b4e04894d0089c6c745f8bc95080883c5f8ff26d88b0808010001001300 *01108d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8b46610088b4e04894ffc8d57f88955f4c745f024b71108bec8d0110883c5ece9c97f070090 *010000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f840c409088b46048947fc *8b4d04890f8d77f883c508e951d707009002000000150000008d45f03b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df48b7604c745f05496080883c5f0ff2689f6020000002400000083 *c7583b7b5c760ac7436c16000000ff63f8c747ac8c9608088b45088947b08b45048947b4c747b8 *94b90b088d47ac8947bcc747c058c409088b46048947c48b46088947c88b460c8947cc8b461089 *47d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b *462c8947ec8b46308947f08b46348947f48b46388947f88d47b88947fc8b464089078d77c083c5 *0ce971d607009003000000120000008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0c *894df08b56088955f48b7604c745ecc096080883c5ecff2604000100030000000b0000008d45fc *3b4354720883c7103b7b5c760ac7436c04000000ff63fcc747f46c9708088b46048947f88b4608 *8947fc8b450089078d47f48945008b760c83c5fce91d7a070090ec8b080804000000120001028d *45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8fc *bb0b088b46088947ec8b460c8947f08b46108947f4c747f8985f10088b46048947fc8d47e88945 *f48d47f88945f0c745ec6cbf110883c5ece9ffe8feff8d7600ec8b0808050000002400010283c7 *243b7b5c760ac7436c09000000ff63f8c747e0a89708088b45108947e48b45148947e88b460c89 *47ecc747f0f89708088b45148947f48b450c8947f88b45088947fc8b450489078d47e08945148d *47f08945108b760483c50ce9487d0700d88b0808420000002400235083c70c3b7b5c760ac7436c *03000000ff63f8c747f8009608088b45048947fc8b460c8945f88b46088945fc8b46048945008d *47f8894508be24cf1108c745f46c98080883c5f4ff268b750cc74504d898080883c504ff269083 *c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b088b45088947f88b450c8947fc8b4504 *89078d47f48945208b75188b451489451883c518e9f70000008d76008b451c8945208b4d04894d *1c8b55088955188b751083c514e9538107008d7600749908083099080800000000081000002500 *000008000000240000008b450c8945fc8b4d20894df88b7608c74500a899080883c5f4e9467c07 *0089f6008c080805000000240001008b460c8945f88b4e04894dfc8b5608895500be8cb51108c7 *45f4b099080883c5f4ff2690008c080804000000240001008b46108945008b4d108b5604895510 *89cec745fcdc99080883c5fcff268d76008b46088945008b7604c745fc0c9a080883c5fcff268d *76002c9a080820990808d88b08080300000025002354d88b080816000300000001000b0023548d *45dc3b43547303ff63fc8b4d0089750089cec745fc589a080883c5fcff2690d08b080800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c1f1108894df4bed4d1 *110883c5f0e9677507008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8949a08088d *47f88945148b750c83c510e91a77070089f6010000002400000083c7443b7b5c760ac7436c1100 *0000ff63f8c747c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b4614 *8947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec *8b46308947f08b46348947f48b46388947f88b463c8947fc8b450489078d77c083c508e959d207 *009002000000150000008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b76 *04c745f0f89a080883c5f0ff2689f604000100020000000e0000008d45fc3b4354720883c70c3b *7b5c760ac7436c03000000ff63fcc747f8849b08088b46048947fc8b450089078d47f88945008b *760883c5fce90f7607008d7600fc8b080802000000150001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df48b56048955f0be3cb3110883c5ece9de79070089f6fc8b080804 *000100040000000b0001008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747 *ecbc9b08088b45008947f08b460c8947f4c747f8089c08088b46048947fc8b460889078d47ec89 *45008d47f88945fc8b761083c5f8e97679070089f6e88b080801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f448bb11088b760483c5f0e93575070090e88b080802 *000000150011008d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8ac9c08088b46048947fc8b46088945f4c745f064b611088d47f88945ecbe2cb3 *110883c5e8e9b37d07008d760083c7203b7b5c760ac7436c08000000ff63f8c747e4489c08088b *45148947e88b46088947ec8b45088947f08b45048947f4c747f8e09c08088b45108947fc8b4604 *89078d47e48945148d47f88945108b750483c50ce98678070089f6349d0808c49a0808d08b0808 *050000002500410cd08b080804000100050000000b00410c8d45ec3b43547303ff63fc8b461489 *45f08b46108945f48b460c8945f88b46088945fc8b45008b4e04894d0089c6c745eca49d080883 *c5ecff2689f6e08b080801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4beaccf110883c5f0e9e4730700d08b0808030000002400510c83c7243b7b5c760a *c7436c09000000ff63f8c747e0b49d08088b45088947e48b45048947e88b46108947ec8b460c89 *47f08b46048947f4c747f8fc9d08088b450c8947fc8d47e089450c8d47f88945088b760483c504 *e98977070090148c080804000100000000001100ffff8d45f43b4354720883c7243b7b5c760fbe *acbf1108c7436c09000000ff63fcc747e02c8d0808c747e860900808c747f0cc9508088d47e089 *47f48d47e88947f8c747fc689a08088d47fc8945f88d47f08945fcbe24cf1108c745f4309e0808 *83c5f4ff2604b31108acbf1108009f08080400010000000000110003008d45fc3b43547308beb4 *bf1108ff63fcc745fcacbf110883c5fce9e5cbfeff90e4d11108d4d1110844d11108dcd21108d0 *d5110801000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108 *8b760483c5f0e98d720700903c9f080800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9c41f1108894df4bed4d1110883c5f0e9737007008d7600389f08080100 *0100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8889f08088b4e04894df48d57f88955f0bee4d1110883c5ece90c760700389f0808 *01000100130017008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8c49f08088b4e04894ffc8d57f88955f4c745f0d0d51108be44d1110883c5ec *e9b575070090389f0808010000002400170083c7183b7b5c760ac7436c06000000ff63f8c747ec *549f08088b460c8947f0c747f814a008088b45048947fc8d47ec8945048d47f88945008b760883 *c5fce96575070090389f0808040001000000000011001f008d45f83b43547308bebcbf1108ff63 *fcbedcd21108c745fc6ca0080883c5fcff268d7600d4d11108bcd11108b8d1110870d1110844d1 *1108ccd01108d4d01108dcd211088cd3110858d31108f4b21108bcbf110801000000240000008b *4504894500c7450404d211088b760883c5fce9e0740700f0a0080804000100000001000b000100 *8d45f83b43547303ff63fcbe70d11108c745fc1ca1080883c5fcff26f0a0080804000000120041 *008d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747 *cc7cdc0b088b46108947d0c747d400d21108c747d87cdc0b088b460c8947dc8d47cc8947e0c747 *e47cdc0b088b46088947e88d47d88947ecc747f07cdc0b088b46048947f48d47e48947f8c747fc *44a108088d47f08945f48d47fc8945f0be58d3110883c5ece9177407008d7600f0a00808040001 *00030000000b00c3008d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f06c *a108088b46048947f48b46088947f88b460c8947fc8b450089078d47f0894500c745fcf4b21108 *be44d1110883c5f8e9b273070089f6e4a0080800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9dc1f1108894df4bed4d1110883c5f0e98b6d07008d7600e4a008 *08000000002400010883c70c3b7b5c761ec74500aca20808c7436c03000000b8ff00000083f000 *894320e9de9a0700c747f870a208088d4ff8894d00e9dcfdffff00000000240000008b760483c5 *04ff26f8a0080801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8b46610088b4e04894ffc8d57f88955f0beccd01108c745f4 *eca2080883c5ece9bd6e070090f8a0080801000100130009008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f800a308088b4e04894ffc8d57f889 *55f4be8cd3110883c5f0e96c6e070004a1080801000100130001008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8406710088b4e04894ffc8d57 *f88955f4be8cd3110883c5f0e91c6e0700c74508fcd111088b750483c504e90a6e070089f683c5 *08e9a4feffff00a40808eca30808e4a00808420000002500010883c7183b7b5c760ac7436c0600 *0000ff63f8c747ec58a308088b45088947f0c747f8a8a308088b45088947fc8d47ec8945fc8d47 *f88945f8bebcd11108c745001ca4080883c5f4e9ac710700c74508fcd111088b750483c504e98e *6d070089f683c508e928feffff7ca4080868a40808e4a00808420000002500010883c70c3b7b5c *760ac7436c03000000ff63f8c747f8406710088b45088947fc8d4ff8894dfcc745f88cd31108be *44d11108c7450098a4080883c5f4e93c71070098a408081ca40808e4a008080200000025003309 *e4a0080802000000150073098d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8b46610088b46048947fc8d47f88945e88b46088945f08b46048945 *f4bed4d01108c745ececa4080883c5e4e9b96c070090e4a0080804000100050000000b007b0f8d *45f83b4354720883c71c3b7b5c760ac7436c07000000ff63fcc747e810a208088b460c8947ec8b *46108947f08b45008947f4c747f8f8a408088b46048947fc8b460889078d47e88945008d47f889 *45fc8b761483c5f8e958700700fca0080801000100130001008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b46610088b4e04894ffc8d57f889 *55f4bed4d0110883c5f0e9fc6b070004a1080801000100130001008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8406710088b4e04894ffc8d57 *f88955f4be8cd3110883c5f0e9ac6b07008b7504c74504fcd11108e99d6b070090e4a008080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910201108894df4be *d4d1110883c5f0e9836907008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f878a608 *088d47f889450483c504e9f1f9ffff90a8a608085ca60808e4a008080100000025000108e4a008 *0802000000150043098d45e43b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747ecc8a508088b46048947f0c747f818a608088b46048947fc8d47ec8945ec8d *47f88945e88b46088945f4bebcd11108c745f0e4a6080883c5e4e9c06e0700e4a0080804000100 *040000000b007b0f8d45f83b4354720883c7243b7b5c760ac7436c09000000ff63fcc747e060a5 *08088b46048947e48b46088947e88b460c8947ec8b45008947f08b46108947f4c747f8f0a60808 *8b46048947fc8b460889078d47e08945008d47f88945fc8b761083c5f8e9486e07000000000024 *0000008b760483c504ff2600000000240000008b7608c74500d4a70808ff260000000024000000 *8b7604c74500e4a70808ff2601000100130000008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b7604c745f4f8a7080883c5f4ff2604a1080801000100130001008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80ca808088b4e04894ffc *8d57f88955f4be8cd3110883c5f0e98869070000000000240000008b760483c504ff2600000000 *240000008b7604c7450088a80808ff2601000100130000008d45f43b43547303ff63f8c745f8d4 *6d10088975fc8b7604c745f498a8080883c5f4ff2604a1080801000100130001008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8aca808088b4e *04894ffc8d57f88955f4be8cd3110883c5f0e9e86807008b7504c74504fcd11108e9d968070090 *e4a0080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94420 *1108894df4bed4d1110883c5f0e9bf6607008d760083c70c3b7b5c760ac7436c03000000ff63f8 *c747f83ca908088d47f889450483c504e92df7ffff906ca9080820a90808e4a008080100000025 *000108e4a0080802000000150005098d45e43b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec3ca808088b46048947f0c747f8dca808088b46048947fc8d *47ec8945ec8d47f88945e88b46088945f4beb8d11108c745f0a8a9080883c5e4e9fc6b0700e4a0 *080804000100030000000b007f0f8d45f83b4354720883c7203b7b5c760ac7436c08000000ff63 *fcc747e464a708088b46048947e88b46088947ec8b45008947f08b460c8947f4c747f8b4a90808 *8b46048947fc8b460889078d47e48945008d47f88945fc8b760c83c5f8e98a6b070089f68b7504 *c7450404d21108e96d670700908b7504c7450404d21108e95d67070090e4a00808000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b988201108894df4bed4d11108 *83c5f0e9436507008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8b8aa08088d47f8 *89450483c504e9b1f5ffff90e8aa08089caa0808e4a00808010000002500010883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f80c5f10088b46048947fc8d4ff8894dfcc745f88cd31108be44 *d11108c7450024ab080883c5f4e9b06a070024ab08088caa0808e4a008080100000025001109e4 *a0080801000000240011098b763cc7450078ab0808ff26e4a0080802000000150011098d45e43b *43547303ff63f8c745f8d46d10088975fc8b4e08894df48b7604c745f084ab080883c5f0ff2689 *f6e4a008080100000024007f0f83c71c3b7b5c760ac7436c07000000ff63f8c747e828aa08088b *45048947ec8b460c8947f08b46048947f4c747f89cab08088b45048947fc8b460c89078d47e889 *45048d47f88945008b760483c5fce9ec690700e4a0080804000100000000001100ff0f8d45f83b *43547308bec4bf1108ff63fcbedcd21108c745fcd4ab080883c5fcff268d7600bcd111089cb511 *08d4b5110864ac080802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b *4e08894df48b56048955f083c5f0e95fe2feff8d760002000000240000008b45088b4d04894d08 *8945048b7608e95869070060ac080802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be9cb51108c745eca8ac080883c5ecff2689f65cac08 *08020000002400070083c7183b7b5c760ac7436c06000000ff63f8c747ec74ac08088b45048947 *f08b46088947f4c747f8c8ac08088b45088947fc8b460489078d47ec8945088d47f8894504bebc *d11108e9bf6807008d76005cac080801000000240007008b46088945008b4d048b560489550489 *cec745fc08ad080883c5fcff268d76005cac08080b00020000000000110007008d45fc3b435473 *08beccbf1108ff63fc8b7500c7450064ad0808ff2654d11108ccbf1108b4ad0808020000001500 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0eb *aa89f6b0ad08080b000200000000001100030083c70c3b7b5c760fbed4bf1108c7436c03000000 *ff63fcc747f8c4ad08088b45008947fc8b4d04890f8d57f8895504be54d11108e9d36307008d76 *00dcd01108dcbf110838ae080800000200180003008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e8e14f070083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4dcbf1108bedcd0110883c5f0e96563070090bcd111088cb51108 *d4b51108acae080802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *08894df48b56048955f083c5f0e917e0feff8d760002000000240000008b45088b4d04894d0889 *45048b7608e910670700a8ae080802000000150001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e08894df08b56048955f4be8cb51108c745ecf0ae080883c5ecff2689f602000000 *240000008b45088b4d04894d088945048b7608e9b4660700a8ae080802000000150001008d45ec *3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108c745ec4c *af080883c5ecff2689f6a4ae080804000000120003008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec10af08088b460c8947f08b46108947f4c7 *47f86caf08088b46048947fc8b460889078d47ec8945f48d47f88945f0bebcd1110883c5ece906 *66070089f6a4ae0808030000002400070083c7203b7b5c760ac7436c08000000ff63f8c747e4bc *ae08088b45048947e88b460c8947ecc747f0acaf08088b450c8947f48b46048947f88b45088947 *fc8b460889078d47e489450c8d47f0894508bebcd1110883c504e99c650700a4ae080801000000 *240007008b460c8945fc8b46088945008b45048b4e04894d0489c6c745f81cb0080883c5f8ff26 *90a4ae08080b00020000000000110007008d45f83b43547308befcbf1108ff63fc8b7500c74500 *84b00808ff2654d11108fcbf1108d8b0080802000000150001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebaa89f6d4b008080b00020000000000 *1100030083c70c3b7b5c760fbe04c01108c7436c03000000ff63fcc747f8e8b008088b45008947 *fc8b4d04890f8d57f8895504be54d11108e9af6007008d760048d411081cc0110844d411081cc0 *11083cd411081cc011085cb1080800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8ad4c070083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f41cc01108be48d4110883c5f0e9316007009064b10808000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8494c070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f41cc011 *08be44d4110883c5f0e9cd5f0700906cb1080800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8e54b070083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f41cc01108be3cd4110883c5f0e9695f070090c4d1 *1108d4d1110828d41108a8d6110888d6110898d611081cb5110804b61108a4b208080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e8201108894df4bed4d111 *0883c5f0e92f5d07008d7600a4b20808420000002400010083c70c3b7b5c761ec7450008b30808 *c7436c03000000b8ff00000083f000894320e9828a0700c747f8ccb208088d4ff8894d088b7504 *83c504e9c25e070089f6a4b2080800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b940211108894df4bed4d1110883c5f0e9a75c07008d760083c504e97cffffff *a4b2080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94821 *1108894df4bed4d1110883c5f0e9635c07008d7600a4b20808420000002400010083c70c3b7b5c *761ec74500d4b30808c7436c03000000b8ff00000083f000894320e9b6890700c747f898b30808 *8d4ff8894d088b750483c504e9f65d070089f683c504ebbb8d7600a4b208080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a0211108894df4bed4d1110883c5 *f0e9d35b07008d7600a4b20808420000002400010083c70c3b7b5c761ec7450064b40808c7436c *03000000b8ff00000083f000894320e926890700c747f828b408088d4ff8894d088b750483c504 *e9665d070089f6a4b2080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9f8211108894df4bed4d1110883c5f0e94b5b07008d760083c504e97cffffffa4b208 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90822110889 *4df4bed4d1110883c5f0e9075b07008d7600a4b20808420000002400010083c70c3b7b5c761ec7 *450030b50808c7436c03000000b8ff00000083f000894320e95a880700c747f8f4b408088d4ff8 *894d088b750483c504e99a5c070089f683c504ebbb8d7600a4b2080800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b960221108894df4bed4d1110883c5f0e977 *5a07008d7600a4b20808420000002400010083c70c3b7b5c761ec74500c0b50808c7436c030000 *00b8ff00000083f000894320e9ca870700c747f884b508088d4ff8894d088b750483c504e90a5c *070089f683c508ebbb8d7600a4b2080800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9b8221108894df4bed4d1110883c5f0e9e75907008d7600a4b208084200 *00002400010083c70c3b7b5c761ec7450050b60808c7436c03000000b8ff00000083f000894320 *e93a870700c747f814b608088d4ff8894d088b750483c504e97a5b070089f6a4b2080800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910231108894df4bed4d1 *110883c5f0e95f5907008d760083c508e97cffffffa4b2080800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b920231108894df4bed4d1110883c5f0e91b590700 *8d7600a4b20808420000002400010083c70c3b7b5c761ec745001cb70808c7436c03000000b8ff *00000083f000894320e96e860700c747f8e0b608088d4ff8894d088b750483c504e9ae5a070089 *f683c508ebbb8d7600a4b2080800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b978231108894df4bed4d1110883c5f0e98b5807008d7600a4b208084200000024 *00010083c70c3b7b5c761ec74500acb70808c7436c03000000b8ff00000083f000894320e9de85 *0700c747f870b708088d4ff8894d088b750483c504e91e5a070089f683c508ebbb8d760083c70c *3b7b5c760ac7436c03000000ff63f8c747f840c409088b45108947fc8b4d08890f8d57f8895510 *8b750483c50ce9df5907008d760083c508e978ffffff2cb80808f4b70808a4b208080400000025 *000100a4b2080805000000240001008b460483f87d750f8b7504c7450448b8080883c504ff2683 *c50ce939ffffff908b46088945008b7604c745fc54b8080883c5fcff268d760074b80808ecb708 *08a4b2080804000000250001008b7604c74500a0b80808ff2683c508e9f8feffffacb80808acb8 *0808acb80808acb80808acb80808a0b80808acb80808acb80808a4b208080400000025000100a4 *b2080804000100040000000b0001008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b *460c8945f88b45008b4e08894d0089c6c745f0e0b8080883c5f0ff26a4b2080804000100040000 *000b0003008d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0f0b808088b *46048947f48b46088947f88b45008947fc8b460c89078d47f0894500c745fc28d411088b761083 *c5f8e9905c0700b4b2080800000200120005008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f404b61108be98d6110883c5f0e94f5807008d760083c7203b7b5c760ac7436c08000000 *ff63f8c747e434b908088b450c8947e88b45108947ec8b45088947f08b45048947f4c747f890b9 *08088d47e48945108d47f889450c8b750483c508e9095c07009083c508e908fdffff0cba0808bc *b90808a4b208080400000025005300a4b2080805000000240053008b460483f83d750f8b7504c7 *450428ba080883c504ff2683c50ce9c9fcffff908b46088945008b7604c745fc34ba080883c5fc *ff268d760054ba08085cb70808a4b2080804000000250053008b7604c7450080ba0808ff2683c5 *08e988fcffff8cba08088cba08088cba08088cba08088cba080880ba08088cba08088cba0808a4 *b208080400000025005300a4b2080804000100040000000b0053008d45ec3b43547303ff63fc8b *46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f0c0ba080883c5f0ff *2683c7143b7b5c760ac7436c05000000ff63f8c747f0d0ba08088b450c8947f48b45108947f88b *45088947fc8b450489078d47f0894510c7450c28d411088b750483c508e9c85a070004bb0808cc *b60808a4b20808040000002500530083c70c3b7b5c760ac7436c03000000ff63f8c747f89cb608 *088b46048945fc8d4ff8894df8bec4d11108c7450060bb080883c5f4e97b5a07008d760083c508 *e9acfaffff9cbb08089cbb08089cbb08089cbb080860bb08089cbb08089cbb08089cbb0808a0b2 *0808040000002500a700a0b2080804000100040000000b00a7008d45e43b43547303ff63fc8b46 *048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f0d0bb080883c5f0ff26 *83c7143b7b5c760ac7436c05000000ff63f8c747f0e0bb08088b450c8947f48b45108947f88b45 *088947fc8b450489078d47f0894510c7450c28d411088b750483c508e9b859070083c508e95cf9 *ffff5cbc080814bc0808a0b20808040000002500a700a0b20808050000002400a7008b460483f8 *2c750f8b7504c7450478bc080883c504ff2683c50ce91df9ffff908b46088945008b7604c745fc *84bc080883c5fcff268d7600a4bc080800b60808a0b20808040000002500a7008b7604c74500d0 *bc0808ff2683c508e9dcf8ffffdcbc0808dcbc0808dcbc0808dcbc0808dcbc0808d0bc0808dcbc *0808dcbc0808a0b20808040000002500a700a0b2080804000100040000000b00a7008d45ec3b43 *547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f010 *bd080883c5f0ff26a0b2080804000100030000000b00a7008d45f83b4354720883c7143b7b5c76 *0ac7436c05000000ff63fcc747f020bd08088b46048947f48b45008947f88b46088947fc8b460c *89078d47f0894500c745fc28d411088b760c83c5f8e960580700b4b2080800000200120003008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6110883c5f0e91f5407 *008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e864bd08088b45088947ec8b450c89 *47f08b45048947f4c747f8c0bd08088d47e889450c8d47f88945088b750483c504e9df5707008d *760083c504e9f0f6ffff38be0808ecbd0808a0b20808030000002500e700a0b208080400000024 *00e7008b460483f83d750f8b7504c7450454be080883c504ff2683c508e9b1f6ffff908b460889 *45008b7604c745fc60be080883c5fcff268d760080be080870b50808a0b20808030000002500e7 *008b7604c74500acbe0808ff2683c504e970f6ffffb8be0808b8be0808b8be0808b8be0808b8be *0808acbe0808b8be0808b8be0808a0b20808030000002500e700a0b2080804000100030000000b *00e7008d45f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745 *f4ecbe080883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4fcbe08088b45 *088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c504e9a6560700 *89f62cbf0808e0b40808a0b20808030000002500e70083c70c3b7b5c760ac7436c03000000ff63 *f8c747f8b0b408088b46048945fc8d4ff8894df8bec4d11108c7450084bf080883c5f4e9575607 *008d760083c504e99cf4ffffc0bf0808c0bf0808c0bf0808c0bf080884bf0808c0bf0808c0bf08 *08c0bf0808a0b20808030000002500e700a0b2080804000100030000000b00e7008d45e83b4354 *7303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4f4bf080883c5f4ff *2689f683c7103b7b5c760ac7436c04000000ff63f8c747f404c008088b45088947f88b450c8947 *fc8b450489078d47f489450cc7450828d411088b750483c504e99e55070089f683c504e954f3ff *ff78c0080834c00808a0b20808030000002500e700a0b20808040000002400e7008b460483f87b *750f8b7504c7450494c0080883c504ff2683c508e915f3ffff908b46088945008b7604c745fca0 *c0080883c5fcff268d7600c0c0080814b40808a0b20808030000002500e7008b7604c74500ecc0 *0808ff2683c504e9d4f2fffff8c00808f8c00808f8c00808f8c00808f8c00808ecc00808f8c008 *08f8c00808a0b20808030000002500e700a0b2080804000100030000000b00e7008d45f03b4354 *7303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f42cc1080883c5f4ff *2689f683c7103b7b5c760ac7436c04000000ff63f8c747f43cc108088b45088947f88b450c8947 *fc8b450489078d47f489450cc7450828d411088b750483c504e96654070089f66cc1080884b308 *08a0b20808030000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f854b308088b *46048945fc8d4ff8894df8bec4d11108c74500c4c1080883c5f4e9175407008d760083c504e900 *f1ffff00c2080800c2080800c2080800c20808c4c1080800c2080800c2080800c20808a0b20808 *030000002500e700a0b2080804000100030000000b00e7008d45e83b43547303ff63fc8b460489 *45fc8b460c8945f88b45008b4e08894d0089c6c745f434c2080883c5f4ff2689f6a0b208080000 *00002400e70083c7103b7b5c760ac7436c04000000ff63f8c747f444c208088b46108947f88b46 *0c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e95253070089f6a0b20808 *000002001200ef008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f480c2 *080883c5f4ff2689f6a0b20808000002001800ff008d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c747ec085c100856e8293b070083c4048d47ec894604c706245b1008c745f8 *d46d10088d47ec8945fcc747f8d0c208088d47f88945f4c745f028121208be88d6110883c5ece9 *ac52070020d4110864c0110868c3080800000200180003008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e8b13a070083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcc745f464c01108be20d4110883c5f0e9354e07009048d4110884 *c0110844d4110884c011083cd4110884c01108d4c3080800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8353a070083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f484c01108be48d4110883c5f0e9b94d07 *0090dcc3080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8d139070083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f484c01108be44d4110883c5f0e9554d070090e4c3080800000200180003008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e86d39070083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f484c01108be3cd4110883c5 *f0e9f14c0700907cd4110884c0110818c5080800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e80139070083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f484c01108be7cd4110883c5f0e9854c070090ccc0 *110800000000240000008b760ce90442070084c5080800000200180001008d45f43b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88938070083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcbeccc01108c745f490c5080883c5f4ff26c4d111 *08d4d1110828d41108a8d6110888d6110898d611082cb5110804b61108fcc50808000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d0231108894df4bed4d11108 *83c5f0e9d74907008d7600fcc50808420000002400010083c70c3b7b5c761ec7450060c60808c7 *436c03000000b8ff00000083f000894320e92a770700c747f824c608088d4ff8894d088b750483 *c504e96a4b070089f6fcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b928241108894df4bed4d1110883c5f0e94f4907008d760083c504e97cfffffffc *c5080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9342411 *08894df4bed4d1110883c5f0e90b4907008d7600fcc50808420000002400010083c70c3b7b5c76 *1ec745002cc70808c7436c03000000b8ff00000083f000894320e95e760700c747f8f0c608088d *4ff8894d088b750483c504e99e4a070089f683c504ebbb8d7600fcc5080800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98c241108894df4bed4d1110883c5f0 *e97b4807008d7600fcc50808420000002400010083c70c3b7b5c761ec74500bcc70808c7436c03 *000000b8ff00000083f000894320e9ce750700c747f880c708088d4ff8894d088b750483c504e9 *0e4a070089f6fcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9e4241108894df4bed4d1110883c5f0e9f34707008d760083c504e97cfffffffcc50808 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ec241108894d *f4bed4d1110883c5f0e9af4707008d7600fcc50808420000002400010083c70c3b7b5c761ec745 *0088c80808c7436c03000000b8ff00000083f000894320e902750700c747f84cc808088d4ff889 *4d088b750483c504e94249070089f683c504ebbb8d7600fcc5080800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b944251108894df4bed4d1110883c5f0e91f47 *07008d7600fcc50808420000002400010083c70c3b7b5c761ec7450018c90808c7436c03000000 *b8ff00000083f000894320e972740700c747f8dcc808088d4ff8894d088b750483c504e9b24807 *0089f683c508ebbb8d7600fcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b99c251108894df4bed4d1110883c5f0e98f4607008d7600fcc50808420000 *002400010083c70c3b7b5c761ec74500a8c90808c7436c03000000b8ff00000083f000894320e9 *e2730700c747f86cc908088d4ff8894d088b750483c504e92248070089f6fcc508080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f4251108894df4bed4d111 *0883c5f0e9074607008d760083c508e97cfffffffcc5080800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b900261108894df4bed4d1110883c5f0e9c34507008d *7600fcc50808420000002400010083c70c3b7b5c761ec7450074ca0808c7436c03000000b8ff00 *000083f000894320e916730700c747f838ca08088d4ff8894d088b750483c504e95647070089f6 *83c508ebbb8d7600fcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b958261108894df4bed4d1110883c5f0e9334507008d7600fcc50808420000002400 *010083c70c3b7b5c761ec7450004cb0808c7436c03000000b8ff00000083f000894320e9867207 *00c747f8c8ca08088d4ff8894d088b750483c504e9c646070089f683c50cebbb8d7600fcc50808 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b0261108894d *f4bed4d1110883c5f0e9a34407008d7600fcc50808420000002400010083c70c3b7b5c761ec745 *0094cb0808c7436c03000000b8ff00000083f000894320e9f6710700c747f858cb08088d4ff889 *4d088b750483c504e93646070089f6fcc5080800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b908271108894df4bed4d1110883c5f0e91b4407008d760083c50c *e97cfffffffcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b914271108894df4bed4d1110883c5f0e9d74307008d7600fcc50808420000002400010083 *c70c3b7b5c761ec7450060cc0808c7436c03000000b8ff00000083f000894320e92a710700c747 *f824cc08088d4ff8894d088b750483c504e96a45070089f683c50cebbb8d7600fcc50808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c271108894df4bed4 *d1110883c5f0e9474307008d7600fcc50808420000002400010083c70c3b7b5c761ec74500f0cc *0808c7436c03000000b8ff00000083f000894320e99a700700c747f8b4cc08088d4ff8894d088b *750483c504e9da44070089f683c50cebbb8d760083c7103b7b5c760ac7436c04000000ff63f8c7 *47f410c409088b45148947f88b450c8947fc8b450889078d47f48945148b750483c510e9954407 *009083c50ce974ffffff74cd080838cd0808fcc508080500000025000100fcc508080600000024 *0001008b460483f87d750f8b7504c7450490cd080883c504ff2683c510e935ffffff908b460889 *45008b7604c745fc9ccd080883c5fcff268d7600bccd080830cd0808fcc5080805000000250001 *008b7604c74500e8cd0808ff2683c50ce9f4fefffff4cd0808f4cd0808f4cd0808f4cd0808f4cd *0808e8cd0808f4cd0808f4cd0808fcc508080500000025000100fcc5080804000100050000000b *0001008d45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b *45008b4e08894d0089c6c745ec28ce080883c5ecff2689f6fcc5080804000100050000000b0003 *008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec38ce08088b46048947 *f08b46088947f48b460c8947f88b45008947fc8b461089078d47ec894500c745fc28d411088b76 *1483c5f8e93a47070089f60cc6080800000200120005008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f404b61108be98d6110883c5f0e9f74207008d760083c7243b7b5c760ac7436c *09000000ff63f8c747e084ce08088b45108947e48b45148947e88b450c8947ec8b45088947f08b *45048947f4c747f8e8ce08088d47e08945148d47f88945108b750483c50ce9ab4607008d760083 *c50ce9ecfcffff6ccf080814cf0808fcc508080500000025005300fcc508080600000024005300 *8b460483f83d750f8b7504c7450488cf080883c504ff2683c510e9adfcffff908b46088945008b *7604c745fc94cf080883c5fcff268d7600b4cf0808a0cc0808fcc5080805000000250053008b76 *04c74500e0cf0808ff2683c50ce96cfcffffeccf0808eccf0808eccf0808eccf0808eccf0808e0 *cf0808eccf0808eccf0808fcc508080500000025005300fcc5080804000100050000000b005300 *8d45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745ec20d0080883c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8 *c747ec30d008088b45108947f08b45148947f48b450c8947f88b45088947fc8b450489078d47ec *894514c7451028d411088b750483c50ce95a45070089f66cd0080810cc0808fcc5080805000000 *2500530083c70c3b7b5c760ac7436c03000000ff63f8c747f8e0cb08088b46048945fc8d4ff889 *4df8bec4d11108c74500d0d0080883c5f4e90b4507008d760083c50ce980faffff0cd108080cd1 *08080cd108080cd10808d0d008080cd108080cd108080cd10808f8c50808050000002500a700f8 *c5080804000100050000000b00a7008d45e03b43547303ff63fc8b46048945fc8b46148945f08b *46108945f48b460c8945f88b45008b4e08894d0089c6c745ec40d1080883c5ecff2689f683c718 *3b7b5c760ac7436c06000000ff63f8c747ec50d108088b45108947f08b45148947f48b450c8947 *f88b45088947fc8b450489078d47ec894514c7451028d411088b750483c50ce93a44070089f683 *c50ce920f9ffffdcd108088cd10808f8c50808050000002500a700f8c50808060000002400a700 *8b460483f82c750f8b7504c74504f8d1080883c504ff2683c510e9e1f8ffff908b46088945008b *7604c745fc04d2080883c5fcff268d760024d2080844cb0808f8c50808050000002500a7008b76 *04c7450050d20808ff2683c50ce9a0f8ffff5cd208085cd208085cd208085cd208085cd2080850 *d208085cd208085cd20808f8c50808050000002500a700f8c5080804000100050000000b00a700 *8d45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745ec90d2080883c5ecff2689f6f8c5080804000100040000000b00a7008d45 *f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747eca0d208088b46048947f08b46 *088947f48b45008947f88b460c8947fc8b461089078d47ec894500c745fc28d411088b761083c5 *f8e9d242070089f60cc6080800000200120003008d45f03b43547303ff63f8c745f8d46d100889 *75fcc745f42cb51108be98d6110883c5f0e98f3e07008d760083c7203b7b5c760ac7436c080000 *00ff63f8c747e4ecd208088b450c8947e88b45108947ec8b45088947f08b45048947f4c747f850 *d308088d47e48945108d47f889450c8b750483c508e9494207009083c508e9a0f6ffffccd30808 *7cd30808f8c50808040000002500e700f8c50808050000002400e7008b460483f83d750f8b7504 *c74504e8d3080883c504ff2683c50ce961f6ffff908b46088945008b7604c745fcf4d3080883c5 *fcff268d760014d40808b4ca0808f8c50808040000002500e7008b7604c7450040d40808ff2683 *c508e920f6ffff4cd408084cd408084cd408084cd408084cd4080840d408084cd408084cd40808 *f8c50808040000002500e700f8c5080804000100040000000b00e7008d45ec3b43547303ff63fc *8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f080d4080883c5f0 *ff2683c7143b7b5c760ac7436c05000000ff63f8c747f090d408088b450c8947f48b45108947f8 *8b45088947fc8b450489078d47f0894510c7450c28d411088b750483c508e908410700c4d40808 *24ca0808f8c50808040000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f8f4c9 *08088b46048945fc8d4ff8894df8bec4d11108c7450020d5080883c5f4e9bb4007008d760083c5 *08e944f4ffff5cd508085cd508085cd508085cd5080820d508085cd508085cd508085cd50808f8 *c50808040000002500e700f8c5080804000100040000000b00e7008d45e43b43547303ff63fc8b *46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f090d5080883c5f0ff *2683c7143b7b5c760ac7436c05000000ff63f8c747f0a0d508088b450c8947f48b45108947f88b *45088947fc8b450489078d47f0894510c7450c28d411088b750483c508e9f83f070083c508e9f4 *f2ffff1cd60808d4d50808f8c50808040000002500e700f8c50808050000002400e7008b460483 *f82c750f8b7504c7450438d6080883c504ff2683c50ce9b5f2ffff908b46088945008b7604c745 *fc44d6080883c5fcff268d760064d6080858c90808f8c50808040000002500e7008b7604c74500 *90d60808ff2683c508e974f2ffff9cd608089cd608089cd608089cd608089cd6080890d608089c *d608089cd60808f8c50808040000002500e700f8c5080804000100040000000b00e7008d45ec3b *43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f0 *d0d6080883c5f0ff26f8c5080804000100030000000b00e7008d45f83b4354720883c7143b7b5c *760ac7436c05000000ff63fcc747f0e0d608088b46048947f48b45008947f88b46088947fc8b46 *0c89078d47f0894500c745fc28d411088b760c83c5f8e9a03e07000cc608080000020012000300 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e95f3a *07008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e824d708088b45088947ec8b450c *8947f08b45048947f4c747f880d708088d47e889450c8d47f88945088b750483c504e91f3e0700 *8d760083c504e988f0fffff8d70808acd70808f8c50808030000002500e700f8c5080804000000 *2400e7008b460483f83d750f8b7504c7450414d8080883c504ff2683c508e949f0ffff908b4608 *8945008b7604c745fc20d8080883c5fcff268d760040d80808c8c80808f8c50808030000002500 *e7008b7604c745006cd80808ff2683c504e908f0ffff78d8080878d8080878d8080878d8080878 *d808086cd8080878d8080878d80808f8c50808030000002500e700f8c508080400010003000000 *0b00e7008d45f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c7 *45f4acd8080883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4bcd808088b *45088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c504e9e63c07 *0089f6ecd8080838c80808f8c50808030000002500e70083c70c3b7b5c760ac7436c03000000ff *63f8c747f808c808088b46048945fc8d4ff8894df8bec4d11108c7450044d9080883c5f4e9973c *07008d760083c504e934eeffff80d9080880d9080880d9080880d9080844d9080880d9080880d9 *080880d90808f8c50808030000002500e700f8c5080804000100030000000b00e7008d45e83b43 *547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4b4d9080883c5f4 *ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4c4d908088b45088947f88b450c89 *47fc8b450489078d47f489450cc7450828d411088b750483c504e9de3b070089f683c504e9ecec *ffff38da0808f4d90808f8c50808030000002500e700f8c50808040000002400e7008b460483f8 *7b750f8b7504c7450454da080883c504ff2683c508e9adecffff908b46088945008b7604c745fc *60da080883c5fcff268d760080da08086cc70808f8c50808030000002500e7008b7604c74500ac *da0808ff2683c504e96cecffffb8da0808b8da0808b8da0808b8da0808b8da0808acda0808b8da *0808b8da0808f8c50808030000002500e700f8c5080804000100030000000b00e7008d45f03b43 *547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4ecda080883c5f4 *ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4fcda08088b45088947f88b450c89 *47fc8b450489078d47f489450cc7450828d411088b750483c504e9a63a070089f62cdb0808dcc6 *0808f8c50808030000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f8acc60808 *8b46048945fc8d4ff8894df8bec4d11108c7450084db080883c5f4e9573a07008d760083c504e9 *98eaffffc0db0808c0db0808c0db0808c0db080884db0808c0db0808c0db0808c0db0808f8c508 *08030000002500e700f8c5080804000100030000000b00e7008d45e83b43547303ff63fc8b4604 *8945fc8b460c8945f88b45008b4e08894d0089c6c745f4f4db080883c5f4ff2689f6f8c5080800 *0000002400e70083c7103b7b5c760ac7436c04000000ff63f8c747f404dc08088b46108947f88b *460c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e99239070089f6f8c508 *08000002001200ef008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f440 *dc080883c5f4ff2689f6f8c50808000002001800ff008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c747ec085c100856e86921070083c4048d47ec894604c706245b1008c745 *f8d46d10088d47ec8945fcc747f890dc08088d47f88945f4c745f028121208be88d6110883c5ec *e9ec38070020d41108ecc0110828dd080800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e8f120070083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f4ecc01108be20d4110883c5f0e97534070090d4d41108 *0cc1110894dd080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e88520070083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f40cc11108bed4d4110883c5f0e90934070090d4d1110890d1110848d11108bc *d41108c0d411083cb4110814b6110810de080800000200120001008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc400d1208c7 *0700d211088d4ff8894df4bec0d4110883c5f0e9953307009018de080801000100130001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d811120883c5f0e9e638ff *ff89f608de080801000100130015008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec28de0808c747f880de08088b46048947fc8d47ec8945f48d *47f88945f0be48d1110883c5ece90b3707008d760000de080800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9c4271108894df4bed4d1110883c5f0e9e3300700 *8d760000de080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f818df08088d4ff8894df4bec0d4110883c5f0e97632070089 *f600de080801000100130055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ecb8de08088b46048947f0c747f854df08088d47ec8945f48d47f8 *8945f0be48d1110883c5ece9233607008d760000de080800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9d4271108894df4bed4d1110883c5f0e9fb2f07008d76 *0000de080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f800e008088d4ff8894df4bec0d4110883c5f0e98e31070089f600 *de080801000100130055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747eca0df08088b46048947f0c747f83ce008088d47ec8945f48d47f88945 *f0be48d1110883c5ece93b3507008d76000100000024000000c74500d81112088b760483c5fce9 *1e35070089f614de080801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be3cb41108c745f0e4e0080883c5f0ff2600de080802000000150075008d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec88e00808 *8b46088947f0c747f804e108088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ec *e9813407009000de080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9d8271108894df4bed4d1110883c5f0e95b2e07008d760000de08080000020012001100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *a0e108088d4ff8894df4bec0d4110883c5f0e9ee2f070089f600de080802000000150075008d45 *ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec3ce1 *08088b46048947f08b46088947f4c747f8dce108088d47ec8945f48d47f88945f0be48d1110883 *c5ece9953307009000de080800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9ec271108894df4bed4d1110883c5f0e96f2d07008d760000de0808000002001200 *11008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f88ce208088d4ff8894df4bec0d4110883c5f0e9022f070089f600de08080200000015007500 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *28e208088b46048947f08b46088947f4c747f8c8e208088d47ec8945f48d47f88945f0be48d111 *0883c5ece9a93207009001000000240000008b4504894500c74504301212088b761483c5fce988 *32070004de080801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4be90d11108c745f074e3080883c5f0ff2600de08084200000024007f0083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec14e308088b46048947f08b46088947f4c747f898e308088b45 *048947fc8d47ec8945088d47f8894504bebcd41108e9fc31070000de08080b0002000000000011 *007f008d45fc3b43547308be30c11108ff63fc8b7504c745fcd0e3080883c5fcff269030c11108 *38c1110848e4080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8d119070083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f438c11108be30c1110883c5f0e9552d070090ccd4110840c11108b4e4080800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e86519070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f440 *c11108beccd4110883c5f0e9e92c070090d4d4110860c1110820e5080800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f918070083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f460c11108bed4d4110883 *c5f0e97d2c0700901cd5110860c111088ce5080800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88d18070083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f460c11108be1cd5110883c5f0e9112c070090d4 *d1110890d1110848d11108bcd41108c0d411082cb4110814b6110808e608080000020012000100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *7cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e99d2b07009010e6 *080801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745 *f0d811120883c5f0e9ee30ffff89f600e6080801000100130015008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec20e60808c747f878e608088b *46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece9132f07008d7600f8e508080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f8271108894df4be *d4d1110883c5f0e9eb2807008d7600f8e5080800000200120011008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f810e708088d4ff8894df4bec0 *d4110883c5f0e97e2a070089f6f8e5080801000100130055008d45ec3b4354720883c7183b7b5c *760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb0e608088b46048947f0c747f84c *e708088d47ec8945f48d47f88945f0be48d1110883c5ece92b2e07008d7600f8e5080800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b908281108894df4bed4d1 *110883c5f0e9032807008d7600f8e5080800000200120011008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f8e708088d4ff8894df4bec0d411 *0883c5f0e99629070089f6f8e5080801000100130055008d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec98e708088b46048947f0c747f834e808 *088d47ec8945f48d47f88945f0be48d1110883c5ece9432d07008d76000100000024000000c745 *00d81112088b760483c5fce9262d070089f60ce6080801000100130001008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0dce8080883c5f0ff26f8e50808 *02000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ec80e808088b46088947f0c747f8fce808088b46048947fc8d47ec8945f48d47 *f88945f0be48d1110883c5ece9892c070090f8e5080800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b90c281108894df4bed4d1110883c5f0e9632607008d7600 *f8e5080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f898e908088d4ff8894df4bec0d4110883c5f0e9f627070089f6f8e5 *080802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8 *d46d10088975fcc747ec34e908088b46048947f08b46088947f4c747f8d4e908088d47ec8945f4 *8d47f88945f0be48d1110883c5ece99d2b070090f8e5080800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b91c281108894df4bed4d1110883c5f0e9772507008d *7600f8e5080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f884ea08088d4ff8894df4bec0d4110883c5f0e90a27070089f6 *f8e5080802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec20ea08088b46048947f08b46088947f4c747f8c0ea08088d47ec89 *45f48d47f88945f0be48d1110883c5ece9b12a0700900100000024000000c74500d81112088b76 *0483c5fce9962a070089f60ce6080801000100130001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be2cb41108c745f06ceb080883c5f0ff26f8e5080803000000120075 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec0ceb08088b46088947f08b460c8947f4c747f88ceb08088b46048947fc8d47ec8945f48d47f8 *8945f0be48d1110883c5ece9f32907008d7600f8e5080800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b920281108894df4bed4d1110883c5f0e9cb2307008d76 *00f8e5080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f830ec08088d4ff8894df4bec0d4110883c5f0e95e25070089f6f8 *e5080803000000120075008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745 *f8d46d10088975fcc747e8c4eb08088b46048947ec8b46088947f08b460c8947f4c747f86cec08 *088d47e88945f48d47f88945f0be48d1110883c5ece9ff2807008d7600f8e50808000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c281108894df4bed4d11108 *83c5f0e9d72207008d7600f8e5080800000200120011008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f824ed08088d4ff8894df4bec0d4110883 *c5f0e96a24070089f6f8e5080803000000120075008d45ec3b4354720883c71c3b7b5c760ac743 *6c07000000ff63f8c745f8d46d10088975fcc747e8b8ec08088b46048947ec8b46088947f08b46 *0c8947f4c747f860ed08088d47e88945f48d47f88945f0be48d1110883c5ece90b2807008d7600 *01000000240000008b4504894500c74504301212088b761483c5fce9e8270700fce50808010001 *00130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745 *f014ee080883c5f0ff26f8e508084200000024007f0083c71c3b7b5c760ac7436c07000000ff63 *f8c747e8aced08088b46048947ec8b46088947f08b460c8947f4c747f838ee08088b45048947fc *8d47e88945088d47f8894504bebcd41108e95627070089f6f8e508080b0002000000000011007f *008d45fc3b43547308be94c11108ff63fc8b7504c745fc70ee080883c5fcff269094c111089cc1 *1108f0ee080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8290f070083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f49cc11108be94c1110883c5f0e9ad22070090ccd41108a4c111085cef0808000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8bd0e070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4c111 *08beccd4110883c5f0e94122070090ccd111080cc01108c8ef080800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8510e070083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f40cc01108beccd1110883c5f0 *e9d521070090bcd11108fca7110898c411085cb511087cb511088cb51108ecbf1108c4c1110802 *000000240000008b45088b4d04894d088945048b7608e9a425070050f008080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4bec4c11108c7 *45ec5cf0080883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e94825 *07004cf0080802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0889 *4df08b56048955f4beecbf1108c745ecb8f0080883c5ecff2689f602000000240000008b45088b *4d04894d088945048b7608e9ec24070040f0080802000000150001008d45ec3b43547303ff63f8 *c745f8d46d10088975fc8b4e08894df08b56048955f4be5cb51108c745ec14f1080883c5ecff26 *89f602000000240000008b45088b4d04894d088945048b7608e99024070048f008080200000015 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb5 *1108c745ec70f1080883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608 *e93424070048f0080802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e08894df08b56048955f4be8cb51108c745ecccf1080883c5ecff2689f602000000240000008b *45088b4d04894d088945048b7608e9d823070048f0080802000000150001008d45ec3b43547303 *ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108c745ec28f2080883c5 *ecff2689f602000000240000008b45088b4d04894d088945048b7608e97c23070048f008080200 *0000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4 *be8cb51108c745ec84f2080883c5ecff2689f602000000240000008b45088b4d04894d08894504 *8b7608e92023070048f0080802000000150001008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e08894df08b56048955f4be8cb51108c745ece0f2080883c5ecff2689f6020000002400 *00008b45088b4d04894d088945048b7608e9c422070044f0080802000000150001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be7cb51108c745ec3cf308 *0883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e96822070048f008 *0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be8cb51108c745ec98f3080883c5ecff2689f602000000240000008b45088b4d04894d08 *8945048b7608e90c22070048f0080802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be8cb51108c745ecf4f3080883c5ecff2689f6020000 *00240000008b45088b4d04894d088945048b7608e9b021070048f0080802000000150001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108c745ec *50f4080883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e954210700 *48f0080802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df0 *8b56048955f4be8cb51108c745ecacf4080883c5ecff2689f602000000240000008b45088b4d04 *894d088945048b7608e9f820070048f0080802000000150001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108c745ec08f5080883c5ecff2689f6 *02000000240000008b45088b4d04894d088945048b7608e99c20070038f0080802000000150001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4befca71108 *c745ec64f5080883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e940 *2007003cf0080802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08 *894df08b56048955f4be98c41108c745ecc0f5080883c5ecff2689f634f0080804000000120007 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec84f508088b460c8947f08b46108947f4c747f8e0f508088b46048947fc8b460889078d47ec89 *45f48d47f88945f0bebcd1110883c5ece9921f070089f634f0080806000000120027008d45ec3b *4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e428f50808 *8b46148947e88b46188947ecc747f020f608088b46048947f48b46088947f88b460c8947fc8b46 *1089078d47e48945f48d47f08945f0bebcd1110883c5ece9161f070089f634f008080800000012 *0027008d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fc *c747dcccf408088b461c8947e08b46208947e4c747e890f608088b46048947ec8b46088947f08b *460c8947f48b46108947f88b46148947fc8b461889078d47dc8945f48d47e88945f0bebcd11108 *83c5ece98e1e070089f634f008080a000000120027008d45ec3b4354720883c7303b7b5c760ac7 *436c0c000000ff63f8c745f8d46d10088975fcc747d470f408088b46248947d88b46288947dcc7 *47e00cf708088b46048947e48b46088947e88b460c8947ec8b46108947f08b46148947f48b4618 *8947f88b461c8947fc8b462089078d47d48945f48d47e08945f0bebcd1110883c5ece9fa1d0700 *89f634f008080c000000120027008d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff63 *f8c745f8d46d10088975fcc747cc14f408088b462c8947d08b46308947d4c747d894f708088b46 *048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b461c8947 *f48b46208947f88b46248947fc8b462889078d47cc8945f48d47d88945f0bebcd1110883c5ece9 *5a1d070089f634f008080e000000120027008d45ec3b4354720883c7403b7b5c760ac7436c1000 *0000ff63f8c745f8d46d10088975fcc747c4b8f308088b46348947c88b46388947ccc747d028f8 *08088b46048947d48b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b *461c8947ec8b46208947f08b46248947f48b46288947f88b462c8947fc8b463089078d47c48945 *f48d47d08945f0bebcd1110883c5ece9ae1c070089f634f0080810000000120037008d45ec3b43 *54720883c7483b7b5c760ac7436c12000000ff63f8c745f8d46d10088975fcc747bc5cf308088b *463c8947c08b46408947c4c747c8c8f808088b46048947cc8b46088947d08b460c8947d48b4610 *8947d88b46148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f0 *8b462c8947f48b46308947f88b46348947fc8b463889078d47bc8945f48d47c88945f0bebcd111 *0883c5ece9f61b070089f634f0080812000000120037008d45ec3b4354720883c7503b7b5c760a *c7436c14000000ff63f8c745f8d46d10088975fcc747b400f308088b46448947b88b46488947bc *c747c074f908088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46 *188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947 *f08b46348947f48b46388947f88b463c8947fc8b464089078d47b48945f48d47c08945f0bebcd1 *110883c5ece9321b070089f634f0080814000000120037008d45ec3b4354720883c7583b7b5c76 *0ac7436c16000000ff63f8c745f8d46d10088975fcc747aca4f208088b464c8947b08b46508947 *b4c747b82cfa08088b46048947bc8b46088947c08b460c8947c48b46108947c88b46148947cc8b *46188947d08b461c8947d48b46208947d88b46248947dc8b46288947e08b462c8947e48b463089 *47e88b46348947ec8b46388947f08b463c8947f48b46408947f88b46448947fc8b464889078d47 *ac8945f48d47b88945f0bebcd1110883c5ece9621a070089f634f0080816000000120037008d45 *ec3b4354720883c7603b7b5c760ac7436c18000000ff63f8c745f8d46d10088975fcc747a448f2 *08088b46548947a88b46588947acc747b0f0fa08088b46048947b48b46088947b88b460c8947bc *8b46108947c08b46148947c48b46188947c88b461c8947cc8b46208947d08b46248947d48b4628 *8947d88b462c8947dc8b46308947e08b46348947e48b46388947e88b463c8947ec8b46408947f0 *8b46448947f48b46488947f88b464c8947fc8b465089078d47a48945f48d47b08945f0bebcd111 *0883c5ece98619070089f634f0080818000000120037008d45ec3b4354720883c7683b7b5c760a *c7436c1a000000ff63f8c745f8d46d10088975fcc7479cecf108088b465c8947a08b46608947a4 *c747a8c0fb08088b46048947ac8b46088947b08b460c8947b48b46108947b88b46148947bc8b46 *188947c08b461c8947c48b46208947c88b46248947cc8b46288947d08b462c8947d48b46308947 *d88b46348947dc8b46388947e08b463c8947e48b46408947e88b46448947ec8b46488947f08b46 *4c8947f48b46508947f88b46548947fc8b465889078d479c8945f48d47a88945f0bebcd1110883 *c5ece99e18070089f634f008081a000000120037008d45ec3b4354720883c7703b7b5c760ac743 *6c1c000000ff63f8c745f8d46d10088975fcc7479490f108088b46648947988b466889479cc747 *a09cfc08088b46048947a48b46088947a88b460c8947ac8b46108947b08b46148947b48b461889 *47b88b461c8947bc8b46208947c08b46248947c48b46288947c88b462c8947cc8b46308947d08b *46348947d48b46388947d88b463c8947dc8b46408947e08b46448947e48b46488947e88b464c89 *47ec8b46508947f08b46548947f48b46588947f88b465c8947fc8b466089078d47948945f48d47 *a08945f0bebcd1110883c5ece9aa17070089f634f008081c00000012003f008d45ec3b43547208 *83c7783b7b5c760ac7436c1e000000ff63f8c745f8d46d10088975fcc7478c34f108088b466c89 *47908b4670894794c7479884fd08088b460489479c8b46088947a08b460c8947a48b46108947a8 *8b46148947ac8b46188947b08b461c8947b48b46208947b88b46248947bc8b46288947c08b462c *8947c48b46308947c88b46348947cc8b46388947d08b463c8947d48b46408947d88b46448947dc *8b46488947e08b464c8947e48b46508947e88b46548947ec8b46588947f08b465c8947f48b4660 *8947f88b46648947fc8b466889078d478c8945f48d47988945f0bebcd1110883c5ece9aa160700 *89f634f008081e00000012007f008d45ec3b4354720b81c7800000003b7b5c760ac7436c200000 *00ff63f8c745f8d46d10088975fcc74784d8f008088b46748947888b467889478cc7479078fe08 *088b46048947948b46088947988b460c89479c8b46108947a08b46148947a48b46188947a88b46 *1c8947ac8b46208947b08b46248947b48b46288947b88b462c8947bc8b46308947c08b46348947 *c48b46388947c88b463c8947cc8b46408947d08b46448947d48b46488947d88b464c8947dc8b46 *508947e08b46548947e48b46588947e88b465c8947ec8b46608947f08b46648947f48b46688947 *f88b466c8947fc8b467089078d47848945f48d47908945f0bebcd1110883c5ece99b1507008d76 *0034f00808100000002400ff0081c7880000003b7b5c760ac7436c22000000ff63f8c7877cffff *ff7cf008088b45048947808b4640894784c7478878ff08088b454089478c8b46048947908b453c *8947948b46088947988b453889479c8b460c8947a08b45348947a48b46108947a88b45308947ac *8b46148947b08b452c8947b48b46188947b88b45288947bc8b461c8947c08b45248947c48b4620 *8947c88b45208947cc8b46248947d08b451c8947d48b46288947d88b45188947dc8b462c8947e0 *8b45148947e48b46308947e88b45108947ec8b46348947f08b450c8947f48b46388947f88b4508 *8947fc8b463c89078d877cffffff8945408d478889453cbebcd1110883c538e98b1407008d7600 *34f00808010000002400ff008b46408945c88b463c8945cc8b46388945d08b46348945d48b4630 *8945d88b462c8945dc8b46288945e08b46248945e48b46208945e88b461c8945ec8b46188945f0 *8b46148945f48b46108945f88b460c8945fc8b46088945008b45048b4e04894d0489c6c745c488 *00090883c5c4ff268d760034f008080b000200000000001100ff008d45c43b43547308bed4c111 *08ff63fc8b7500c7450098010908ff2654d11108d4c111083c02090802000000150001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebaa89f63802 *09080b000200000000001100030083c70c3b7b5c760fbedcc11108c7436c03000000ff63fcc747 *f84c0209088b45008947fc8b4d04890f8d57f8895504be54d11108e94b0f07008d760048d41108 *f4c1110844d41108f4c111083cd41108f4c11108c002090800000200180003008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e849fb060083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcc745f4f4c11108be48d4110883c5f0e9cd0e *070090c802090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c747f8085c100856e8e5fa060083c4048d47f8894604c706245b1008c745f8d46d10088d47 *f88945fcc745f4f4c11108be44d4110883c5f0e9690e070090d002090800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e881fa060083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4c11108be3cd4110883 *c5f0e9050e07009084d41108f4c111080404090800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e815fa060083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4f4c11108be84d4110883c5f0e9990d0700903c *c2110800000000240000008b760ce9180307007004090800000200180001008d45f43b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e89df9060083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcbe3cc21108c745f47c04090883c5f4ff26c4d1 *1108d4d1110828d41108a8d6110888d6110898d611088cb41108bcb411082cb511083cb511084c *b51108dcc011084cc21108e804090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b93c281108894df4bed4d1110883c5f0e9d70a07008d7600e8040908420000 *002400010083c70c3b7b5c761ec7450060050908c7436c03000000b8ff00000083f000894320e9 *2a380700c747f8240509088d4ff8894d088b750483c504e96a0c070089f6e80409080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b994281108894df4bed4d111 *0883c5f0e94f0a07008d760083c504e97cffffffe804090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9a8281108894df4bed4d1110883c5f0e90b0a07008d *7600e8040908420000002400010083c70c3b7b5c761ec745002c060908c7436c03000000b8ff00 *000083f000894320e95e370700c747f8f00509088d4ff8894d088b750483c504e99e0b070089f6 *83c504ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b900291108894df4bed4d1110883c5f0e97b0907008d7600e8040908420000002400 *010083c70c3b7b5c761ec74500bc060908c7436c03000000b8ff00000083f000894320e9ce3607 *00c747f8800609088d4ff8894d088b750483c504e90e0b070089f6e80409080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b958291108894df4bed4d1110883c5 *f0e9f30807008d760083c504e97cffffffe804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b960291108894df4bed4d1110883c5f0e9af0807008d7600e8 *040908420000002400010083c70c3b7b5c761ec7450088070908c7436c03000000b8ff00000083 *f000894320e902360700c747f84c0709088d4ff8894d088b750483c504e9420a070089f683c504 *ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9b8291108894df4bed4d1110883c5f0e91f0807008d7600e8040908420000002400010083 *c70c3b7b5c761ec7450018080908c7436c03000000b8ff00000083f000894320e972350700c747 *f8dc0709088d4ff8894d088b750483c504e9b209070089f683c508ebbb8d7600e8040908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9102a1108894df4bed4 *d1110883c5f0e98f0707008d7600e8040908420000002400010083c70c3b7b5c761ec74500a808 *0908c7436c03000000b8ff00000083f000894320e9e2340700c747f86c0809088d4ff8894d088b *750483c504e92209070089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9682a1108894df4bed4d1110883c5f0e9070707008d760083c508e97cff *ffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *702a1108894df4bed4d1110883c5f0e9c30607008d7600e8040908420000002400010083c70c3b *7b5c761ec7450074090908c7436c03000000b8ff00000083f000894320e916340700c747f83809 *09088d4ff8894d088b750483c504e95608070089f683c508ebbb8d7600e8040908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c82a1108894df4bed4d11108 *83c5f0e9330607008d7600e8040908420000002400010083c70c3b7b5c761ec74500040a0908c7 *436c03000000b8ff00000083f000894320e986330700c747f8c80909088d4ff8894d088b750483 *c504e9c607070089f683c50cebbb8d7600e804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9202b1108894df4bed4d1110883c5f0e9a30507008d7600e8 *040908420000002400010083c70c3b7b5c761ec74500940a0908c7436c03000000b8ff00000083 *f000894320e9f6320700c747f8580a09088d4ff8894d088b750483c504e93607070089f6e80409 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9782b110889 *4df4bed4d1110883c5f0e91b0507008d760083c50ce97cffffffe804090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9842b1108894df4bed4d1110883c5f0 *e9d70407008d7600e8040908420000002400010083c70c3b7b5c761ec74500600b0908c7436c03 *000000b8ff00000083f000894320e92a320700c747f8240b09088d4ff8894d088b750483c504e9 *6a06070089f683c50cebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9dc2b1108894df4bed4d1110883c5f0e9470407008d7600e8040908 *420000002400010083c70c3b7b5c761ec74500f00b0908c7436c03000000b8ff00000083f00089 *4320e99a310700c747f8b40b09088d4ff8894d088b750483c504e9da05070089f683c510ebbb8d *7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *342c1108894df4bed4d1110883c5f0e9b70307008d7600e8040908420000002400010083c70c3b *7b5c761ec74500800c0908c7436c03000000b8ff00000083f000894320e90a310700c747f8440c *09088d4ff8894d088b750483c504e94a05070089f6e804090800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b98c2c1108894df4bed4d1110883c5f0e92f030700 *8d760083c510e97cffffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9982c1108894df4bed4d1110883c5f0e9eb0207008d7600e8040908420000 *002400010083c70c3b7b5c761ec745004c0d0908c7436c03000000b8ff00000083f000894320e9 *3e300700c747f8100d09088d4ff8894d088b750483c504e97e04070089f683c510ebbb8d7600e8 *04090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f02c11 *08894df4bed4d1110883c5f0e95b0207008d7600e8040908420000002400010083c70c3b7b5c76 *1ec74500dc0d0908c7436c03000000b8ff00000083f000894320e9ae2f0700c747f8a00d09088d *4ff8894d088b750483c504e9ee03070089f683c514ebbb8d7600e804090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9482d1108894df4bed4d1110883c5f0 *e9cb0107008d7600e8040908420000002400010083c70c3b7b5c761ec745006c0e0908c7436c03 *000000b8ff00000083f000894320e91e2f0700c747f8300e09088d4ff8894d088b750483c504e9 *5e03070089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9a02d1108894df4bed4d1110883c5f0e9430107008d760083c514e97cffffffe8040908 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ac2d1108894d *f4bed4d1110883c5f0e9ff0007008d7600e8040908420000002400010083c70c3b7b5c761ec745 *00380f0908c7436c03000000b8ff00000083f000894320e9522e0700c747f8fc0e09088d4ff889 *4d088b750483c504e99202070089f683c514ebbb8d7600e804090800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9042e1108894df4bed4d1110883c5f0e96f00 *07008d7600e8040908420000002400010083c70c3b7b5c761ec74500c80f0908c7436c03000000 *b8ff00000083f000894320e9c22d0700c747f88c0f09088d4ff8894d088b750483c504e9020207 *0089f683c518ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b95c2e1108894df4bed4d1110883c5f0e9dfff06008d7600e8040908420000 *002400010083c70c3b7b5c761ec7450058100908c7436c03000000b8ff00000083f000894320e9 *322d0700c747f81c1009088d4ff8894d088b750483c504e97201070089f6e80409080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b42e1108894df4bed4d111 *0883c5f0e957ff06008d760083c518e97cffffffe804090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9bc2e1108894df4bed4d1110883c5f0e913ff06008d *7600e8040908420000002400010083c70c3b7b5c761ec7450024110908c7436c03000000b8ff00 *000083f000894320e9662c0700c747f8e81009088d4ff8894d088b750483c504e9a600070089f6 *83c518ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9142f1108894df4bed4d1110883c5f0e983fe06008d7600e8040908420000002400 *010083c70c3b7b5c761ec74500b4110908c7436c03000000b8ff00000083f000894320e9d62b07 *00c747f8781109088d4ff8894d088b750483c504e91600070089f683c51cebbb8d7600e8040908 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c2f1108894d *f4bed4d1110883c5f0e9f3fd06008d7600e8040908420000002400010083c70c3b7b5c761ec745 *0044120908c7436c03000000b8ff00000083f000894320e9462b0700c747f8081209088d4ff889 *4d088b750483c504e986ff060089f6e804090800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9c42f1108894df4bed4d1110883c5f0e96bfd06008d760083c51c *e97cffffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9d02f1108894df4bed4d1110883c5f0e927fd06008d7600e8040908420000002400010083 *c70c3b7b5c761ec7450010130908c7436c03000000b8ff00000083f000894320e97a2a0700c747 *f8d41209088d4ff8894d088b750483c504e9bafe060089f683c51cebbb8d7600e8040908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b928301108894df4bed4 *d1110883c5f0e997fc06008d7600e8040908420000002400010083c70c3b7b5c761ec74500a013 *0908c7436c03000000b8ff00000083f000894320e9ea290700c747f8641309088d4ff8894d088b *750483c504e92afe060089f683c520ebbb8d7600e804090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b980301108894df4bed4d1110883c5f0e907fc06008d *7600e8040908420000002400010083c70c3b7b5c761ec7450030140908c7436c03000000b8ff00 *000083f000894320e95a290700c747f8f41309088d4ff8894d088b750483c504e99afd060089f6 *e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d830 *1108894df4bed4d1110883c5f0e97ffb06008d760083c520e97cffffffe8040908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e4301108894df4bed4d11108 *83c5f0e93bfb06008d7600e8040908420000002400010083c70c3b7b5c761ec74500fc140908c7 *436c03000000b8ff00000083f000894320e98e280700c747f8c01409088d4ff8894d088b750483 *c504e9cefc060089f683c520ebbb8d7600e804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b93c311108894df4bed4d1110883c5f0e9abfa06008d7600e8 *040908420000002400010083c70c3b7b5c761ec745008c150908c7436c03000000b8ff00000083 *f000894320e9fe270700c747f8501509088d4ff8894d088b750483c504e93efc060089f683c524 *ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b994311108894df4bed4d1110883c5f0e91bfa06008d7600e8040908420000002400010083 *c70c3b7b5c761ec745001c160908c7436c03000000b8ff00000083f000894320e96e270700c747 *f8e01509088d4ff8894d088b750483c504e9aefb060089f6e804090800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9ec311108894df4bed4d1110883c5f0e993 *f906008d760083c524e97cffffffe804090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9f8311108894df4bed4d1110883c5f0e94ff906008d7600e8040908 *420000002400010083c70c3b7b5c761ec74500e8160908c7436c03000000b8ff00000083f00089 *4320e9a2260700c747f8ac1609088d4ff8894d088b750483c504e9e2fa060089f683c524ebbb8d *7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *50321108894df4bed4d1110883c5f0e9bff806008d7600e8040908420000002400010083c70c3b *7b5c761ec7450078170908c7436c03000000b8ff00000083f000894320e912260700c747f83c17 *09088d4ff8894d088b750483c504e952fa060089f683c528ebbb8d7600e8040908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8321108894df4bed4d11108 *83c5f0e92ff806008d7600e8040908420000002400010083c70c3b7b5c761ec7450008180908c7 *436c03000000b8ff00000083f000894320e982250700c747f8cc1709088d4ff8894d088b750483 *c504e9c2f9060089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b900331108894df4bed4d1110883c5f0e9a7f706008d760083c528e97cffffffe8 *04090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9083311 *08894df4bed4d1110883c5f0e963f706008d7600e8040908420000002400010083c70c3b7b5c76 *1ec74500d4180908c7436c03000000b8ff00000083f000894320e9b6240700c747f8981809088d *4ff8894d088b750483c504e9f6f8060089f683c528ebbb8d7600e804090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b960331108894df4bed4d1110883c5f0 *e9d3f606008d7600e8040908420000002400010083c70c3b7b5c761ec7450064190908c7436c03 *000000b8ff00000083f000894320e926240700c747f8281909088d4ff8894d088b750483c504e9 *66f8060089f683c52cebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9b8331108894df4bed4d1110883c5f0e943f606008d7600e8040908 *420000002400010083c70c3b7b5c761ec74500f4190908c7436c03000000b8ff00000083f00089 *4320e996230700c747f8b81909088d4ff8894d088b750483c504e9d6f7060089f6e80409080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910341108894df4be *d4d1110883c5f0e9bbf506008d760083c52ce97cffffffe804090800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b91c341108894df4bed4d1110883c5f0e977f5 *06008d7600e8040908420000002400010083c70c3b7b5c761ec74500c01a0908c7436c03000000 *b8ff00000083f000894320e9ca220700c747f8841a09088d4ff8894d088b750483c504e90af706 *0089f683c52cebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b974341108894df4bed4d1110883c5f0e9e7f406008d7600e8040908420000 *002400010083c70c3b7b5c761ec74500501b0908c7436c03000000b8ff00000083f000894320e9 *3a220700c747f8141b09088d4ff8894d088b750483c504e97af6060089f683c530ebbb8d7600e8 *04090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc3411 *08894df4bed4d1110883c5f0e957f406008d7600e8040908420000002400010083c70c3b7b5c76 *1ec74500e01b0908c7436c03000000b8ff00000083f000894320e9aa210700c747f8a41b09088d *4ff8894d088b750483c504e9eaf5060089f6e804090800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b924351108894df4bed4d1110883c5f0e9cff306008d7600 *83c530e97cffffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b930351108894df4bed4d1110883c5f0e98bf306008d7600e8040908420000002400 *010083c70c3b7b5c761ec74500ac1c0908c7436c03000000b8ff00000083f000894320e9de2007 *00c747f8701c09088d4ff8894d088b750483c504e91ef5060089f683c530ebbb8d7600e8040908 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b988351108894d *f4bed4d1110883c5f0e9fbf206008d7600e8040908420000002400010083c70c3b7b5c761ec745 *003c1d0908c7436c03000000b8ff00000083f000894320e94e200700c747f8001d09088d4ff889 *4d088b750483c504e98ef4060089f683c534ebbb8d7600e804090800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9e0351108894df4bed4d1110883c5f0e96bf2 *06008d7600e8040908420000002400010083c70c3b7b5c761ec74500cc1d0908c7436c03000000 *b8ff00000083f000894320e9be1f0700c747f8901d09088d4ff8894d088b750483c504e9fef306 *0089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b938361108894df4bed4d1110883c5f0e9e3f106008d760083c534e97cffffffe8040908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b944361108894df4bed4 *d1110883c5f0e99ff106008d7600e8040908420000002400010083c70c3b7b5c761ec74500981e *0908c7436c03000000b8ff00000083f000894320e9f21e0700c747f85c1e09088d4ff8894d088b *750483c504e932f3060089f683c534ebbb8d7600e804090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b99c361108894df4bed4d1110883c5f0e90ff106008d *7600e8040908420000002400010083c70c3b7b5c761ec74500281f0908c7436c03000000b8ff00 *000083f000894320e9621e0700c747f8ec1e09088d4ff8894d088b750483c504e9a2f2060089f6 *83c538ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9f4361108894df4bed4d1110883c5f0e97ff006008d7600e8040908420000002400 *010083c70c3b7b5c761ec74500b81f0908c7436c03000000b8ff00000083f000894320e9d21d07 *00c747f87c1f09088d4ff8894d088b750483c504e912f2060089f6e80409080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94c371108894df4bed4d1110883c5 *f0e9f7ef06008d760083c538e97cffffffe804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b95c371108894df4bed4d1110883c5f0e9b3ef06008d7600e8 *040908420000002400010083c70c3b7b5c761ec7450084200908c7436c03000000b8ff00000083 *f000894320e9061d0700c747f8482009088d4ff8894d088b750483c504e946f1060089f683c538 *ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9b4371108894df4bed4d1110883c5f0e923ef06008d7600e8040908420000002400010083 *c70c3b7b5c761ec7450014210908c7436c03000000b8ff00000083f000894320e9761c0700c747 *f8d82009088d4ff8894d088b750483c504e9b6f0060089f683c53cebbb8d7600e8040908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90c381108894df4bed4 *d1110883c5f0e993ee06008d7600e8040908420000002400010083c70c3b7b5c761ec74500a421 *0908c7436c03000000b8ff00000083f000894320e9e61b0700c747f8682109088d4ff8894d088b *750483c504e926f0060089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b964381108894df4bed4d1110883c5f0e90bee06008d760083c53ce97cff *ffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *6c381108894df4bed4d1110883c5f0e9c7ed06008d7600e8040908420000002400010083c70c3b *7b5c761ec7450070220908c7436c03000000b8ff00000083f000894320e91a1b0700c747f83422 *09088d4ff8894d088b750483c504e95aef060089f683c53cebbb8d7600e8040908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c4381108894df4bed4d11108 *83c5f0e937ed06008d7600e8040908420000002400010083c70c3b7b5c761ec7450000230908c7 *436c03000000b8ff00000083f000894320e98a1a0700c747f8c42209088d4ff8894d088b750483 *c504e9caee060089f683c540ebbb8d7600e804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b91c391108894df4bed4d1110883c5f0e9a7ec06008d7600e8 *040908420000002400010083c70c3b7b5c761ec7450090230908c7436c03000000b8ff00000083 *f000894320e9fa190700c747f8542309088d4ff8894d088b750483c504e93aee060089f6e80409 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97439110889 *4df4bed4d1110883c5f0e91fec06008d760083c540e97cffffffe804090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980391108894df4bed4d1110883c5f0 *e9dbeb06008d7600e8040908420000002400010083c70c3b7b5c761ec745005c240908c7436c03 *000000b8ff00000083f000894320e92e190700c747f8202409088d4ff8894d088b750483c504e9 *6eed060089f683c540ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9d8391108894df4bed4d1110883c5f0e94beb06008d7600e8040908 *420000002400010083c70c3b7b5c761ec74500ec240908c7436c03000000b8ff00000083f00089 *4320e99e180700c747f8b02409088d4ff8894d088b750483c504e9deec060089f683c540ebbb8d *760083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b45488947c48b45408947c8 *8b453c8947cc8b45388947d08b45348947d48b45308947d88b452c8947dc8b45288947e08b4524 *8947e48b45208947e88b451c8947ec8b45188947f08b45148947f48b45108947f88b450c8947fc *8b450889078d47c08945488b750483c544e94bec06008d760083c540e924ffffffc02509083425 *0908e80409081200000025000100e804090813000000240001008b460483f87d750f8b7504c745 *04dc25090883c504ff2683c544e9e5feffff908b46088945008b7604c745fce825090883c5fcff *268d7600082609082c250908e804090812000000250001008b7604c7450034260908ff2683c540 *e9a4feffff4026090840260908402609084026090840260908342609084026090840260908e804 *09081200000025000100e804090804000100120000000b0001008d45b43b43547303ff63fc8b46 *048945fc8b46488945bc8b46448945c08b46408945c48b463c8945c88b46388945cc8b46348945 *d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46 *188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745b8742609 *0883c5b8ff26e804090804000100120000000b0003008d45f83b4354720883c74c3b7b5c760ac7 *436c13000000ff63fcc747b8842609088b46048947bc8b46088947c08b460c8947c48b46108947 *c88b46148947cc8b46188947d08b461c8947d48b46208947d88b46248947dc8b46288947e08b46 *2c8947e48b46308947e88b46348947ec8b46388947f08b463c8947f48b46408947f88b45008947 *fc8b464489078d47b8894500c745fc28d411088b764883c5f8e954ee0600f80409080000020012 *0081008d45f03b43547303ff63f8c745f8d46d10088975fcc745f44cc21108be98d6110883c5f0 *e913ea06008d760083c7583b7b5c760ac7436c16000000ff63f8c747ac1c2709088b45448947b0 *8b45488947b48b45408947b88b453c8947bc8b45388947c08b45348947c48b45308947c88b452c *8947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f8cc2709088d47ac8945488d47 *f88945448b750483c540e979ed06009083c540e9b8fbffff9c280908f8270908e8040908120000 *0025001308e804090813000000240013088b460483f83d750f8b7504c74504b828090883c504ff *2683c544e979fbffff908b46088945008b7604c745fcc428090883c5fcff268d7600e42809089c *240908e804090812000000250013088b7604c7450010290908ff2683c540e938fbffff1c290908 *1c2909081c2909081c2909081c290908102909081c2909081c290908e804090812000000250013 *08e804090804000100120000000b0013088d45b43b43547303ff63fc8b46048945fc8b46488945 *bc8b46448945c08b46408945c48b463c8945c88b46388945cc8b46348945d08b46308945d48b46 *2c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945 *f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745b85029090883c5b8ff2683c74c *3b7b5c760ac7436c13000000ff63f8c747b8602909088b45448947bc8b45488947c08b45408947 *c48b453c8947c88b45388947cc8b45348947d08b45308947d48b452c8947d88b45288947dc8b45 *248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947 *f88b45088947fc8b450489078d47b8894548c7454428d411088b750483c540e990eb0600e82909 *080c240908e8040908120000002500130883c70c3b7b5c760ac7436c03000000ff63f8c747f8dc *2309088b46048945fc8d4ff8894df8bec4d11108c74500982a090883c5f4e943eb06008d760083 *c540e9b4f8ffffd42a0908d42a0908d42a0908d42a0908982a0908d42a0908d42a0908d42a0908 *e40409081200000025002710e404090804000100120000000b0027108d45ac3b43547303ff63fc *8b46048945fc8b46488945bc8b46448945c08b46408945c48b463c8945c88b46388945cc8b4634 *8945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e8 *8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745b808 *2b090883c5b8ff2683c74c3b7b5c760ac7436c13000000ff63f8c747b8182b09088b45448947bc *8b45488947c08b45408947c48b453c8947c88b45388947cc8b45348947d08b45308947d48b452c *8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f0 *8b45108947f48b450c8947f88b45088947fc8b450489078d47b8894548c7454428d411088b7504 *83c540e9d8e9060083c540e9bcf6ffff3c2c0908a02b0908e40409081200000025002710e40409 *0813000000240027108b460483f82c750f8b7504c74504582c090883c504ff2683c544e97df6ff *ff908b46088945008b7604c745fc642c090883c5fcff268d7600842c090840230908e404090812 *000000250027108b7604c74500b02c0908ff2683c540e93cf6ffffbc2c0908bc2c0908bc2c0908 *bc2c0908bc2c0908b02c0908bc2c0908bc2c0908e40409081200000025002710e4040908040001 *00120000000b0027108d45b43b43547303ff63fc8b46048945fc8b46488945bc8b46448945c08b *46408945c48b463c8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b462889 *45dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b *460c8945f88b45008b4e08894d0089c6c745b8f02c090883c5b8ff26e404090804000100110000 *000b0027108d45f83b4354720883c74c3b7b5c760ac7436c13000000ff63fcc747b8002d09088b *46048947bc8b46088947c08b460c8947c48b46108947c88b46148947cc8b46188947d08b461c89 *47d48b46208947d88b46248947dc8b46288947e08b462c8947e48b46308947e88b46348947ec8b *46388947f08b463c8947f48b45008947f88b46408947fc8b464489078d47b8894500c745fc28d4 *11088b764483c5f8e9d8e70600f804090800000200120041008d45f03b43547303ff63f8c745f8 *d46d10088975fcc745f4dcc01108be98d6110883c5f0e997e306008d760083c7543b7b5c760ac7 *436c15000000ff63f8c747b0982d09088b45408947b48b45448947b88b453c8947bc8b45388947 *c08b45348947c48b45308947c88b452c8947cc8b45288947d08b45248947d48b45208947d88b45 *1c8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947 *f4c747f8482e09088d47b08945448d47f88945408b750483c53ce903e706008d760083c53ce954 *f3ffff142f0908742e0908e40409081100000025002718e404090812000000240027188b460483 *f83d750f8b7504c74504302f090883c504ff2683c540e915f3ffff908b46088945008b7604c745 *fc3c2f090883c5fcff268d76005c2f0908b0220908e404090811000000250027188b7604c74500 *882f0908ff2683c53ce9d4f2ffff942f0908942f0908942f0908942f0908942f0908882f090894 *2f0908942f0908e40409081100000025002718e404090804000100110000000b0027188d45b83b *43547303ff63fc8b46048945fc8b46448945c08b46408945c48b463c8945c88b46388945cc8b46 *348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945 *e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745bc *c82f090883c5bcff2689f683c7483b7b5c760ac7436c12000000ff63f8c747bcd82f09088b4540 *8947c08b45448947c48b453c8947c88b45388947cc8b45348947d08b45308947d48b452c8947d8 *8b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b4510 *8947f48b450c8947f88b45088947fc8b450489078d47bc894544c7454028d411088b750483c53c *e922e5060089f65c30090820220908e4040908110000002500271883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8f02109088b46048945fc8d4ff8894df8bec4d11108c745000831090883c5 *f4e9d3e406008d760083c53ce958f0ffff44310908443109084431090844310908083109084431 *09084431090844310908e40409081100000025002718e404090804000100110000000b0027188d *45b03b43547303ff63fc8b46048945fc8b46448945c08b46408945c48b463c8945c88b46388945 *cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b46 *1c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6 *c745bc7831090883c5bcff2689f683c7483b7b5c760ac7436c12000000ff63f8c747bc88310908 *8b45408947c08b45448947c48b453c8947c88b45388947cc8b45348947d08b45308947d48b452c *8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f0 *8b45108947f48b450c8947f88b45088947fc8b450489078d47bc894544c7454028d411088b7504 *83c53ce972e3060089f683c53ce968eeffffa43209080c320908e40409081100000025002718e4 *04090812000000240027188b460483f82c750f8b7504c74504c032090883c504ff2683c540e929 *eeffff908b46088945008b7604c745fccc32090883c5fcff268d7600ec32090854210908e40409 *0811000000250027188b7604c7450018330908ff2683c53ce9e8edffff24330908243309082433 *09082433090824330908183309082433090824330908e40409081100000025002718e404090804 *000100110000000b0027188d45b83b43547303ff63fc8b46048945fc8b46448945c08b46408945 *c48b463c8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46 *248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945 *f88b45008b4e08894d0089c6c745bc5833090883c5bcff2689f6e404090804000100100000000b *0027188d45f83b4354720883c7483b7b5c760ac7436c12000000ff63fcc747bc683309088b4604 *8947c08b46088947c48b460c8947c88b46108947cc8b46148947d08b46188947d48b461c8947d8 *8b46208947dc8b46248947e08b46288947e48b462c8947e88b46308947ec8b46348947f08b4638 *8947f48b45008947f88b463c8947fc8b464089078d47bc894500c745fc28d411088b764083c5f8 *e97ae1060089f6f804090800000200120003008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f48cb41108be98d6110883c5f0e937dd06008d760083c7503b7b5c760ac7436c14000000 *ff63f8c747b4fc3309088b453c8947b88b45408947bc8b45388947c08b45348947c48b45308947 *c88b452c8947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45 *148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f8a83409088d47b489 *45408d47f889453c8b750483c538e9a9e006009083c538e910ebffff6c350908d4340908e40409 *081000000025006718e404090811000000240067188b460483f83d750f8b7504c7450488350908 *83c504ff2683c53ce9d1eaffff908b46088945008b7604c745fc9435090883c5fcff268d7600b4 *350908c4200908e404090810000000250067188b7604c74500e0350908ff2683c538e990eaffff *ec350908ec350908ec350908ec350908ec350908e0350908ec350908ec350908e4040908100000 *0025006718e404090804000100100000000b0067188d45bc3b43547303ff63fc8b46048945fc8b *46408945c48b463c8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b462889 *45dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b *460c8945f88b45008b4e08894d0089c6c745c02036090883c5c0ff2683c7443b7b5c760ac7436c *11000000ff63f8c747c0303609088b453c8947c48b45408947c88b45388947cc8b45348947d08b *45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b451889 *47ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47c0894540c745 *3c28d411088b750483c538e9d8de0600ac36090834200908e4040908100000002500671883c70c *3b7b5c760ac7436c03000000ff63f8c747f8042009088b46048945fc8d4ff8894df8bec4d11108 *c745005037090883c5f4e98bde06008d760083c538e924e8ffff8c3709088c3709088c3709088c *370908503709088c3709088c3709088c370908e40409081000000025006718e404090804000100 *100000000b0067188d45b43b43547303ff63fc8b46048945fc8b46408945c48b463c8945c88b46 *388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945 *e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d *0089c6c745c0c037090883c5c0ff2683c7443b7b5c760ac7436c11000000ff63f8c747c0d03709 *088b453c8947c48b45408947c88b45388947cc8b45348947d08b45308947d48b452c8947d88b45 *288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947 *f48b450c8947f88b45088947fc8b450489078d47c0894540c7453c28d411088b750483c538e938 *dd060083c538e944e6ffffdc3809084c380908e40409081000000025006718e404090811000000 *240067188b460483f82c750f8b7504c74504f838090883c504ff2683c53ce905e6ffff908b4608 *8945008b7604c745fc0439090883c5fcff268d760024390908681f0908e4040908100000002500 *67188b7604c7450050390908ff2683c538e9c4e5ffff5c3909085c3909085c3909085c3909085c *390908503909085c3909085c390908e40409081000000025006718e40409080400010010000000 *0b0067188d45bc3b43547303ff63fc8b46048945fc8b46408945c48b463c8945c88b46388945cc *8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c *8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c7 *45c09039090883c5c0ff26e4040908040001000f0000000b0067188d45f83b4354720883c7443b *7b5c760ac7436c11000000ff63fcc747c0a03909088b46048947c48b46088947c88b460c8947cc *8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b4628 *8947e88b462c8947ec8b46308947f08b46348947f48b45008947f88b46388947fc8b463c89078d *47c0894500c745fc28d411088b763c83c5f8e950db0600f804090800000200120009008d45f03b *43547303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e90fd706008d76 *0083c74c3b7b5c760ac7436c13000000ff63f8c747b82c3a09088b45388947bc8b453c8947c08b *45348947c48b45308947c88b452c8947cc8b45288947d08b45248947d48b45208947d88b451c89 *47dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c7 *47f8d03a09088d47b889453c8d47f88945388b750483c534e987da06008d760083c534e900e3ff *ff903b0908fc3a0908e40409080f00000025006719e404090810000000240067198b460483f83d *750f8b7504c74504ac3b090883c504ff2683c538e9c1e2ffff908b46088945008b7604c745fcb8 *3b090883c5fcff268d7600d83b0908d81e0908e40409080f000000250067198b7604c74500043c *0908ff2683c534e980e2ffff103c0908103c0908103c0908103c0908103c0908043c0908103c09 *08103c0908e40409080f00000025006719e4040908040001000f0000000b0067198d45c03b4354 *7303ff63fc8b46048945fc8b463c8945c88b46388945cc8b46348945d08b46308945d48b462c89 *45d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b *46108945f48b460c8945f88b45008b4e08894d0089c6c745c4443c090883c5c4ff2689f683c740 *3b7b5c760ac7436c10000000ff63f8c747c4543c09088b45388947c88b453c8947cc8b45348947 *d08b45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45 *188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47c489453c *c7453828d411088b750483c534e9bed8060089f6cc3c0908481e0908e40409080f000000250067 *1983c70c3b7b5c760ac7436c03000000ff63f8c747f8181e09088b46048945fc8d4ff8894df8be *c4d11108c745006c3d090883c5f4e96fd806008d760083c534e91ce0ffffa83d0908a83d0908a8 *3d0908a83d09086c3d0908a83d0908a83d0908a83d0908e40409080f00000025006719e4040908 *040001000f0000000b0067198d45b83b43547303ff63fc8b46048945fc8b463c8945c88b463889 *45cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b *461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089 *c6c745c4dc3d090883c5c4ff2689f683c7403b7b5c760ac7436c10000000ff63f8c747c4ec3d09 *088b45388947c88b453c8947cc8b45348947d08b45308947d48b452c8947d88b45288947dc8b45 *248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947 *f88b45088947fc8b450489078d47c489453cc7453828d411088b750483c534e926d7060089f683 *c534e944defffff03e0908643e0908e40409080f00000025006719e40409081000000024006719 *8b460483f82c750f8b7504c745040c3f090883c504ff2683c538e905deffff908b46088945008b *7604c745fc183f090883c5fcff268d7600383f09087c1d0908e40409080f000000250067198b76 *04c74500643f0908ff2683c534e9c4ddffff703f0908703f0908703f0908703f0908703f090864 *3f0908703f0908703f0908e40409080f00000025006719e4040908040001000f0000000b006719 *8d45c03b43547303ff63fc8b46048945fc8b463c8945c88b46388945cc8b46348945d08b463089 *45d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b *46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c4a43f090883c5c4ff *2689f6e4040908040001000e0000000b0067198d45f83b4354720883c7403b7b5c760ac7436c10 *000000ff63fcc747c4b43f09088b46048947c88b46088947cc8b460c8947d08b46108947d48b46 *148947d88b46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec8b462c8947 *f08b46308947f48b45008947f88b46348947fc8b463889078d47c4894500c745fc28d411088b76 *3883c5f8e946d5060089f6f804090800000200120009008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f42cb51108be98d6110883c5f0e903d106008d760083c7483b7b5c760ac7436c *12000000ff63f8c747bc3c4009088b45348947c08b45388947c48b45308947c88b452c8947cc8b *45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e48b451089 *47e88b450c8947ec8b45088947f08b45048947f4c747f8dc4009088d47bc8945388d47f8894534 *8b750483c530e981d406009083c530e910dbffff9441090808410908e40409080e000000250067 *19e40409080f000000240067198b460483f83d750f8b7504c74504b041090883c504ff2683c534 *e9d1daffff908b46088945008b7604c745fcbc41090883c5fcff268d7600dc410908ec1c0908e4 *0409080e000000250067198b7604c7450008420908ff2683c530e990daffff1442090814420908 *144209081442090814420908084209081442090814420908e40409080e00000025006719e40409 *08040001000e0000000b0067198d45c43b43547303ff63fc8b46048945fc8b46388945cc8b4634 *8945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e8 *8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c848 *42090883c5c8ff2683c73c3b7b5c760ac7436c0f000000ff63f8c747c8584209088b45348947cc *8b45388947d08b45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c *8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d *47c8894538c7453428d411088b750483c530e9c8d20600c84209085c1c0908e40409080e000000 *2500671983c70c3b7b5c760ac7436c03000000ff63f8c747f82c1c09088b46048945fc8d4ff889 *4df8bec4d11108c745006043090883c5f4e97bd206008d760083c530e93cd8ffff9c4309089c43 *09089c4309089c430908604309089c4309089c4309089c430908e40409080e00000025006719e4 *040908040001000e0000000b0067198d45bc3b43547303ff63fc8b46048945fc8b46388945cc8b *46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c89 *45e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745 *c8d043090883c5c8ff2683c73c3b7b5c760ac7436c0f000000ff63f8c747c8e04309088b453489 *47cc8b45388947d08b45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b *451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489 *078d47c8894538c7453428d411088b750483c530e940d1060083c530e974d6ffffd44409085044 *0908e40409080e00000025006719e40409080f000000240067198b460483f82c750f8b7504c745 *04f044090883c504ff2683c534e935d6ffff908b46088945008b7604c745fcfc44090883c5fcff *268d76001c450908901b0908e40409080e000000250067198b7604c7450048450908ff2683c530 *e9f4d5ffff5445090854450908544509085445090854450908484509085445090854450908e404 *09080e00000025006719e4040908040001000e0000000b0067198d45c43b43547303ff63fc8b46 *048945fc8b46388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945 *e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45 *008b4e08894d0089c6c745c88845090883c5c8ff26e4040908040001000d0000000b0067198d45 *f83b4354720883c73c3b7b5c760ac7436c0f000000ff63fcc747c8984509088b46048947cc8b46 *088947d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c8947e48b46208947 *e88b46248947ec8b46288947f08b462c8947f48b45008947f88b46308947fc8b463489078d47c8 *894500c745fc28d411088b763483c5f8e970cf0600f804090800000200120009008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e92fcb06008d760083 *c7443b7b5c760ac7436c11000000ff63f8c747c0184609088b45308947c48b45348947c88b452c *8947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f8b04609088d47c08945348d47 *f88945308b750483c52ce9b3ce06008d760083c52ce954d3ffff64470908dc460908e40409080d *00000025006719e40409080e000000240067198b460483f83d750f8b7504c745048047090883c5 *04ff2683c530e915d3ffff908b46088945008b7604c745fc8c47090883c5fcff268d7600ac4709 *08001b0908e40409080d000000250067198b7604c74500d8470908ff2683c52ce9d4d2ffffe447 *0908e4470908e4470908e4470908e4470908d8470908e4470908e4470908e40409080d00000025 *006719e4040908040001000d0000000b0067198d45c83b43547303ff63fc8b46048945fc8b4634 *8945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e8 *8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745cc18 *48090883c5ccff2689f683c7383b7b5c760ac7436c0e000000ff63f8c747cc284809088b453089 *47d08b45348947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b *45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47cc8945 *34c7453028d411088b750483c52ce902cd060089f694480908701a0908e40409080d0000002500 *671983c70c3b7b5c760ac7436c03000000ff63f8c747f8401a09088b46048945fc8d4ff8894df8 *bec4d11108c745002849090883c5f4e9b3cc06008d760083c52ce988d0ffff6449090864490908 *644909086449090828490908644909086449090864490908e40409080d00000025006719e40409 *08040001000d0000000b0067198d45c03b43547303ff63fc8b46048945fc8b46348945d08b4630 *8945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec *8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745cc9849090883c5cc *ff2689f683c7383b7b5c760ac7436c0e000000ff63f8c747cca84909088b45308947d08b453489 *47d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b *45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47cc894534c7453028d4 *11088b750483c52ce982cb060089f683c52ce9c8ceffff944a0908144a0908e40409080d000000 *25006719e40409080e000000240067198b460483f82c750f8b7504c74504b04a090883c504ff26 *83c530e989ceffff908b46088945008b7604c745fcbc4a090883c5fcff268d7600dc4a0908a419 *0908e40409080d000000250067198b7604c74500084b0908ff2683c52ce948ceffff144b090814 *4b0908144b0908144b0908144b0908084b0908144b0908144b0908e40409080d00000025006719 *e4040908040001000d0000000b0067198d45c83b43547303ff63fc8b46048945fc8b46348945d0 *8b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b4618 *8945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745cc484b0908 *83c5ccff2689f6e4040908040001000c0000000b0067198d45f83b4354720883c7383b7b5c760a *c7436c0e000000ff63fcc747cc584b09088b46048947d08b46088947d48b460c8947d88b461089 *47dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b *45008947f88b462c8947fc8b463089078d47cc894500c745fc28d411088b763083c5f8e9bac906 *0089f6f804090800000200120009008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4 *2cb51108be98d6110883c5f0e977c506008d760083c7403b7b5c760ac7436c10000000ff63f8c7 *47c4d44b09088b452c8947c88b45308947cc8b45288947d08b45248947d48b45208947d88b451c *8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4 *c747f8684c09088d47c48945308d47f889452c8b750483c528e901c906009083c528e9b8cbffff *144d0908944c0908e40409080c00000025006719e40409080d000000240067198b460483f83d75 *0f8b7504c74504304d090883c504ff2683c52ce979cbffff908b46088945008b7604c745fc3c4d *090883c5fcff268d76005c4d090814190908e40409080c000000250067198b7604c74500884d09 *08ff2683c528e938cbffff944d0908944d0908944d0908944d0908944d0908884d0908944d0908 *944d0908e40409080c00000025006719e4040908040001000c0000000b0067198d45cc3b435473 *03ff63fc8b46048945fc8b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945 *e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d *0089c6c745d0c84d090883c5d0ff2683c7343b7b5c760ac7436c0d000000ff63f8c747d0d84d09 *088b452c8947d48b45308947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45 *188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47d0894530 *c7452c28d411088b750483c528e960c706003c4e090884180908e40409080c0000002500671983 *c70c3b7b5c760ac7436c03000000ff63f8c747f8541809088b46048945fc8d4ff8894df8bec4d1 *1108c74500c84e090883c5f4e913c706008d760083c528e9fcc8ffff044f0908044f0908044f09 *08044f0908c84e0908044f0908044f0908044f0908e40409080c00000025006719e40409080400 *01000c0000000b0067198d45c43b43547303ff63fc8b46048945fc8b46308945d48b462c8945d8 *8b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b4610 *8945f48b460c8945f88b45008b4e08894d0089c6c745d0384f090883c5d0ff2683c7343b7b5c76 *0ac7436c0d000000ff63f8c747d0484f09088b452c8947d48b45308947d88b45288947dc8b4524 *8947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f8 *8b45088947fc8b450489078d47d0894530c7452c28d411088b750483c528e9f0c5060083c528e9 *4cc7ffff24500908ac4f0908e40409080c00000025006719e40409080d000000240067198b4604 *83f82c750f8b7504c745044050090883c504ff2683c52ce90dc7ffff908b46088945008b7604c7 *45fc4c50090883c5fcff268d76006c500908b8170908e40409080c000000250067198b7604c745 *0098500908ff2683c528e9ccc6ffffa4500908a4500908a4500908a4500908a450090898500908 *a4500908a4500908e40409080c00000025006719e4040908040001000c0000000b0067198d45cc *3b43547303ff63fc8b46048945fc8b46308945d48b462c8945d88b46288945dc8b46248945e08b *46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745d0d850090883c5d0ff26e4040908040001000b0000000b0067198d45f83b *4354720883c7343b7b5c760ac7436c0d000000ff63fcc747d0e85009088b46048947d48b460889 *47d88b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b *46248947f48b45008947f88b46288947fc8b462c89078d47d0894500c745fc28d411088b762c83 *c5f8e938c40600f804090800000200120009008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f42cb51108be98d6110883c5f0e9f7bf06008d760083c73c3b7b5c760ac7436c0f000000 *ff63f8c747c85c5109088b45288947cc8b452c8947d08b45248947d48b45208947d88b451c8947 *dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747 *f8e85109088d47c889452c8d47f88945288b750483c524e987c306008d760083c524e950c4ffff *9052090814520908e40409080b00000025006719e40409080c000000240067198b460483f83d75 *0f8b7504c74504ac52090883c504ff2683c528e911c4ffff908b46088945008b7604c745fcb852 *090883c5fcff268d7600d852090828170908e40409080b000000250067198b7604c74500045309 *08ff2683c524e9d0c3ffff10530908105309081053090810530908105309080453090810530908 *10530908e40409080b00000025006719e4040908040001000b0000000b0067198d45d03b435473 *03ff63fc8b46048945fc8b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945 *e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d4 *4453090883c5d4ff2689f683c7303b7b5c760ac7436c0c000000ff63f8c747d4545309088b4528 *8947d88b452c8947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f0 *8b45108947f48b450c8947f88b45088947fc8b450489078d47d489452cc7452828d411088b7504 *83c524e9eec1060089f6b453090898160908e40409080b0000002500671983c70c3b7b5c760ac7 *436c03000000ff63f8c747f8681609088b46048945fc8d4ff8894df8bec4d11108c745003c5409 *0883c5f4e99fc106008d760083c524e99cc1ffff785409087854090878540908785409083c5409 *08785409087854090878540908e40409080b00000025006719e4040908040001000b0000000b00 *67198d45c83b43547303ff63fc8b46048945fc8b462c8945d88b46288945dc8b46248945e08b46 *208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745d4ac54090883c5d4ff2689f683c7303b7b5c760ac7436c0c000000ff63f8c7 *47d4bc5409088b45288947d88b452c8947dc8b45248947e08b45208947e48b451c8947e88b4518 *8947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47d489452cc7 *452828d411088b750483c524e986c0060089f683c524e9f4bfffff905509081c550908e4040908 *0b00000025006719e40409080c000000240067198b460483f82c750f8b7504c74504ac55090883 *c504ff2683c528e9b5bfffff908b46088945008b7604c745fcb855090883c5fcff268d7600d855 *0908cc150908e40409080b000000250067198b7604c7450004560908ff2683c524e974bfffff10 *56090810560908105609081056090810560908045609081056090810560908e40409080b000000 *25006719e4040908040001000b0000000b0067198d45d03b43547303ff63fc8b46048945fc8b46 *2c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945 *f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d44456090883c5d4ff2689f6e4 *040908040001000a0000000b0067198d45f83b4354720883c7303b7b5c760ac7436c0c000000ff *63fcc747d4545609088b46048947d88b46088947dc8b460c8947e08b46108947e48b46148947e8 *8b46188947ec8b461c8947f08b46208947f48b45008947f88b46248947fc8b462889078d47d489 *4500c745fc28d411088b762883c5f8e9d6be060089f6f804090800000200120005008d45f03b43 *547303ff63f8c745f8d46d10088975fcc745f4bcb41108be98d6110883c5f0e993ba06008d7600 *83c7383b7b5c760ac7436c0e000000ff63f8c747ccc45609088b45248947d08b45288947d48b45 *208947d88b451c8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947 *f08b45048947f4c747f84c5709088d47cc8945288d47f88945248b750483c520e929be06009083 *c520e908bdffffec57090878570908e40409080a0000002500e719e40409080b0000002400e719 *8b460483f83d750f8b7504c745040858090883c504ff2683c524e9c9bcffff908b46088945008b *7604c745fc1458090883c5fcff268d7600345809083c150908e40409080a0000002500e7198b76 *04c7450060580908ff2683c520e988bcffff6c5809086c5809086c5809086c5809086c58090860 *5809086c5809086c580908e40409080a0000002500e719e4040908040001000a0000000b00e719 *8d45d43b43547303ff63fc8b46048945fc8b46288945dc8b46248945e08b46208945e48b461c89 *45e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745 *d8a058090883c5d8ff2683c72c3b7b5c760ac7436c0b000000ff63f8c747d8b05809088b452489 *47dc8b45288947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b *450c8947f88b45088947fc8b450489078d47d8894528c7452428d411088b750483c520e9a0bc06 *0008590908ac140908e40409080a0000002500e71983c70c3b7b5c760ac7436c03000000ff63f8 *c747f87c1409088b46048945fc8d4ff8894df8bec4d11108c745008859090883c5f4e953bc0600 *8d760083c520e964baffffc4590908c4590908c4590908c459090888590908c4590908c4590908 *c4590908e40409080a0000002500e719e4040908040001000a0000000b00e7198d45cc3b435473 *03ff63fc8b46048945fc8b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945 *ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d8f859090883c5 *d8ff2683c72c3b7b5c760ac7436c0b000000ff63f8c747d8085a09088b45248947dc8b45288947 *e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45 *088947fc8b450489078d47d8894528c7452428d411088b750483c520e948bb060083c520e9ccb8 *ffffcc5a0908605a0908e40409080a0000002500e719e40409080b0000002400e7198b460483f8 *2c750f8b7504c74504e85a090883c504ff2683c524e98db8ffff908b46088945008b7604c745fc *f45a090883c5fcff268d7600145b0908e0130908e40409080a0000002500e7198b7604c7450040 *5b0908ff2683c520e94cb8ffff4c5b09084c5b09084c5b09084c5b09084c5b0908405b09084c5b *09084c5b0908e40409080a0000002500e719e4040908040001000a0000000b00e7198d45d43b43 *547303ff63fc8b46048945fc8b46288945dc8b46248945e08b46208945e48b461c8945e88b4618 *8945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d8805b0908 *83c5d8ff26e404090804000100090000000b00e7198d45f83b4354720883c72c3b7b5c760ac743 *6c0b000000ff63fcc747d8905b09088b46048947dc8b46088947e08b460c8947e48b46108947e8 *8b46148947ec8b46188947f08b461c8947f48b45008947f88b46208947fc8b462489078d47d889 *4500c745fc28d411088b762483c5f8e9a8b90600f804090800000200120009008d45f03b435473 *03ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e967b506008d760083c7 *343b7b5c760ac7436c0d000000ff63f8c747d0f85b09088b45208947d48b45248947d88b451c89 *47dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c7 *47f8785c09088d47d08945248d47f88945208b750483c51ce903b906008d760083c51ce9f4b5ff *ff145d0908a45c0908e4040908090000002500e719e40409080a0000002400e7198b460483f83d *750f8b7504c74504305d090883c504ff2683c520e9b5b5ffff908b46088945008b7604c745fc3c *5d090883c5fcff268d76005c5d090850130908e4040908090000002500e7198b7604c74500885d *0908ff2683c51ce974b5ffff945d0908945d0908945d0908945d0908945d0908885d0908945d09 *08945d0908e4040908090000002500e719e404090804000100090000000b00e7198d45d83b4354 *7303ff63fc8b46048945fc8b46248945e08b46208945e48b461c8945e88b46188945ec8b461489 *45f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745dcc85d090883c5dcff2689f6 *83c7283b7b5c760ac7436c0a000000ff63f8c747dcd85d09088b45208947e08b45248947e48b45 *1c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b45048907 *8d47dc894524c7452028d411088b750483c51ce982b7060089f62c5e0908c0120908e404090809 *0000002500e71983c70c3b7b5c760ac7436c03000000ff63f8c747f8901209088b46048945fc8d *4ff8894df8bec4d11108c74500a85e090883c5f4e933b706008d760083c51ce958b3ffffe45e09 *08e45e0908e45e0908e45e0908a85e0908e45e0908e45e0908e45e0908e4040908090000002500 *e719e404090804000100090000000b00e7198d45d03b43547303ff63fc8b46048945fc8b462489 *45e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b *45008b4e08894d0089c6c745dc185f090883c5dcff2689f683c7283b7b5c760ac7436c0a000000 *ff63f8c747dc285f09088b45208947e08b45248947e48b451c8947e88b45188947ec8b45148947 *f08b45108947f48b450c8947f88b45088947fc8b450489078d47dc894524c7452028d411088b75 *0483c51ce932b6060089f683c51ce9c8b1ffffe45f09087c5f0908e4040908090000002500e719 *e40409080a0000002400e7198b460483f82c750f8b7504c745040060090883c504ff2683c520e9 *89b1ffff908b46088945008b7604c745fc0c60090883c5fcff268d76002c600908f4110908e404 *0908090000002500e7198b7604c7450058600908ff2683c51ce948b1ffff646009086460090864 *6009086460090864600908586009086460090864600908e4040908090000002500e719e4040908 *04000100090000000b00e7198d45d83b43547303ff63fc8b46048945fc8b46248945e08b462089 *45e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e0889 *4d0089c6c745dc9860090883c5dcff2689f6e404090804000100080000000b00e7198d45f83b43 *54720883c7283b7b5c760ac7436c0a000000ff63fcc747dca86009088b46048947e08b46088947 *e48b460c8947e88b46108947ec8b46148947f08b46188947f48b45008947f88b461c8947fc8b46 *2089078d47dc894500c745fc28d411088b762083c5f8e99ab4060089f6f8040908000002001200 *09008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e9 *57b006008d760083c7303b7b5c760ac7436c0c000000ff63f8c747d40c6109088b451c8947d88b *45208947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b450489 *47f4c747f8886109088d47d48945208d47f889451c8b750483c518e9f9b306009083c518e900af *ffff1c620908b4610908e4040908080000002500e719e4040908090000002400e7198b460483f8 *3d750f8b7504c745043862090883c504ff2683c51ce9c1aeffff908b46088945008b7604c745fc *4462090883c5fcff268d76006462090864110908e4040908080000002500e7198b7604c7450090 *620908ff2683c518e980aeffff9c6209089c6209089c6209089c6209089c620908906209089c62 *09089c620908e4040908080000002500e719e404090804000100080000000b00e7198d45dc3b43 *547303ff63fc8b46048945fc8b46208945e48b461c8945e88b46188945ec8b46148945f08b4610 *8945f48b460c8945f88b45008b4e08894d0089c6c745e0d062090883c5e0ff2683c7243b7b5c76 *0ac7436c09000000ff63f8c747e0e06209088b451c8947e48b45208947e88b45188947ec8b4514 *8947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e0894520c7451c28d41108 *8b750483c518e988b206002c630908d4100908e4040908080000002500e71983c70c3b7b5c760a *c7436c03000000ff63f8c747f8a41009088b46048945fc8d4ff8894df8bec4d11108c74500a063 *090883c5f4e93bb206008d760083c518e974acffffdc630908dc630908dc630908dc630908a063 *0908dc630908dc630908dc630908e4040908080000002500e719e404090804000100080000000b *00e7198d45d43b43547303ff63fc8b46048945fc8b46208945e48b461c8945e88b46188945ec8b *46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e01064090883c5e0ff *2683c7243b7b5c760ac7436c09000000ff63f8c747e0206409088b451c8947e48b45208947e88b *45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e08945 *20c7451c28d411088b750483c518e948b1060083c518e9f4aaffffcc6409086c640908e4040908 *080000002500e719e4040908090000002400e7198b460483f82c750f8b7504c74504e864090883 *c504ff2683c51ce9b5aaffff908b46088945008b7604c745fcf464090883c5fcff268d76001465 *090808100908e4040908080000002500e7198b7604c7450040650908ff2683c518e974aaffff4c *6509084c6509084c6509084c6509084c650908406509084c6509084c650908e404090808000000 *2500e719e404090804000100080000000b00e7198d45dc3b43547303ff63fc8b46048945fc8b46 *208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745e08065090883c5e0ff26e404090804000100070000000b00e7198d45f83b43 *54720883c7243b7b5c760ac7436c09000000ff63fcc747e0906509088b46048947e48b46088947 *e88b460c8947ec8b46108947f08b46148947f48b45008947f88b46188947fc8b461c89078d47e0 *894500c745fc28d411088b761c83c5f8e9c0af0600f804090800000200120009008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e97fab06008d760083 *c72c3b7b5c760ac7436c0b000000ff63f8c747d8ec6509088b45188947dc8b451c8947e08b4514 *8947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f8606609088d47d88945 *1c8d47f88945188b750483c514e927af06008d760083c514e940a8fffff06609088c660908e404 *0908070000002500e719e4040908080000002400e7198b460483f83d750f8b7504c745040c6709 *0883c504ff2683c518e901a8ffff908b46088945008b7604c745fc1867090883c5fcff268d7600 *38670908780f0908e4040908070000002500e7198b7604c7450064670908ff2683c514e9c0a7ff *ff7067090870670908706709087067090870670908646709087067090870670908e40409080700 *00002500e719e404090804000100070000000b00e7198d45e03b43547303ff63fc8b46048945fc *8b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d00 *89c6c745e4a467090883c5e4ff2689f683c7203b7b5c760ac7436c08000000ff63f8c747e4b467 *09088b45188947e88b451c8947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b *450489078d47e489451cc7451828d411088b750483c514e9bead060089f6fc670908e80e0908e4 *040908070000002500e71983c70c3b7b5c760ac7436c03000000ff63f8c747f8b80e09088b4604 *8945fc8d4ff8894df8bec4d11108c745006c68090883c5f4e96fad06008d760083c514e9bca5ff *ffa8680908a8680908a8680908a86809086c680908a8680908a8680908a8680908e40409080700 *00002500e719e404090804000100070000000b00e7198d45d83b43547303ff63fc8b46048945fc *8b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d00 *89c6c745e4dc68090883c5e4ff2689f683c7203b7b5c760ac7436c08000000ff63f8c747e4ec68 *09088b45188947e88b451c8947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b *450489078d47e489451cc7451828d411088b750483c514e986ac060089f683c514e944a4ffff90 *69090834690908e4040908070000002500e719e4040908080000002400e7198b460483f82c750f *8b7504c74504ac69090883c504ff2683c518e905a4ffff908b46088945008b7604c745fcb86909 *0883c5fcff268d7600d86909081c0e0908e4040908070000002500e7198b7604c74500046a0908 *ff2683c514e9c4a3ffff106a0908106a0908106a0908106a0908106a0908046a0908106a090810 *6a0908e4040908070000002500e719e404090804000100070000000b00e7198d45e03b43547303 *ff63fc8b46048945fc8b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745e4446a090883c5e4ff2689f6e404090804000100060000000b00 *e7198d45f83b4354720883c7203b7b5c760ac7436c08000000ff63fcc747e4546a09088b460489 *47e88b46088947ec8b460c8947f08b46108947f48b45008947f88b46148947fc8b461889078d47 *e4894500c745fc28d411088b761883c5f8e906ab060089f6f804090800000200120009008d45f0 *3b43547303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e9c3a606008d *760083c7283b7b5c760ac7436c0a000000ff63f8c747dcac6a09088b45148947e08b45188947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f81c6b09088d47dc8945188d47 *f88945148b750483c510e971aa06009083c510e9a0a1ffffa46b0908486b0908e4040908060000 *002500e719e4040908070000002400e7198b460483f83d750f8b7504c74504c06b090883c504ff *2683c514e961a1ffff908b46088945008b7604c745fccc6b090883c5fcff268d7600ec6b09088c *0d0908e4040908060000002500e7198b7604c74500186c0908ff2683c510e920a1ffff246c0908 *246c0908246c0908246c0908246c0908186c0908246c0908246c0908e4040908060000002500e7 *19e404090804000100060000000b00e7198d45e43b43547303ff63fc8b46048945fc8b46188945 *ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e8586c090883c5 *e8ff2683c71c3b7b5c760ac7436c07000000ff63f8c747e8686c09088b45148947ec8b45188947 *f08b45108947f48b450c8947f88b45088947fc8b450489078d47e8894518c7451428d411088b75 *0483c510e918a90600a86c0908fc0c0908e4040908060000002500e71983c70c3b7b5c760ac743 *6c03000000ff63f8c747f8cc0c09088b46048945fc8d4ff8894df8bec4d11108c74500106d0908 *83c5f4e9cba806008d760083c510e92c9fffff4c6d09084c6d09084c6d09084c6d0908106d0908 *4c6d09084c6d09084c6d0908e4040908060000002500e719e404090804000100060000000b00e7 *198d45dc3b43547303ff63fc8b46048945fc8b46188945ec8b46148945f08b46108945f48b460c *8945f88b45008b4e08894d0089c6c745e8806d090883c5e8ff2683c71c3b7b5c760ac7436c0700 *0000ff63f8c747e8906d09088b45148947ec8b45188947f08b45108947f48b450c8947f88b4508 *8947fc8b450489078d47e8894518c7451428d411088b750483c510e9f0a7060083c510e9c49dff *ff246e0908d06d0908e4040908060000002500e719e4040908070000002400e7198b460483f82c *750f8b7504c74504406e090883c504ff2683c514e9859dffff908b46088945008b7604c745fc4c *6e090883c5fcff268d76006c6e0908300c0908e4040908060000002500e7198b7604c74500986e *0908ff2683c510e9449dffffa46e0908a46e0908a46e0908a46e0908a46e0908986e0908a46e09 *08a46e0908e4040908060000002500e719e404090804000100060000000b00e7198d45e43b4354 *7303ff63fc8b46048945fc8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745e8d86e090883c5e8ff26e404090804000100050000000b00e7198d45f83b *4354720883c71c3b7b5c760ac7436c07000000ff63fcc747e8e86e09088b46048947ec8b460889 *47f08b460c8947f48b45008947f88b46108947fc8b461489078d47e8894500c745fc28d411088b *761483c5f8e980a60600f804090800000200120009008d45f03b43547303ff63f8c745f8d46d10 *088975fcc745f42cb51108be98d6110883c5f0e93fa206008d760083c7243b7b5c760ac7436c09 *000000ff63f8c747e0386f09088b45108947e48b45148947e88b450c8947ec8b45088947f08b45 *048947f4c747f8a06f09088d47e08945148d47f88945108b750483c50ce9f3a506008d760083c5 *0ce9349bffff24700908cc6f0908e4040908050000002500e719e4040908060000002400e7198b *460483f83d750f8b7504c745044070090883c504ff2683c510e9f59affff908b46088945008b76 *04c745fc4c70090883c5fcff268d76006c700908a00b0908e4040908050000002500e7198b7604 *c7450098700908ff2683c50ce9b49affffa4700908a4700908a4700908a4700908a47009089870 *0908a4700908a4700908e4040908050000002500e719e404090804000100050000000b00e7198d *45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745ecd870090883c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8c7 *47ece87009088b45108947f08b45148947f48b450c8947f88b45088947fc8b450489078d47ec89 *4514c7451028d411088b750483c50ce9a2a4060089f624710908100b0908e40409080500000025 *00e71983c70c3b7b5c760ac7436c03000000ff63f8c747f8e00a09088b46048945fc8d4ff8894d *f8bec4d11108c745008871090883c5f4e953a406008d760083c50ce9c898ffffc4710908c47109 *08c4710908c471090888710908c4710908c4710908c4710908e4040908050000002500e719e404 *090804000100050000000b00e7198d45e03b43547303ff63fc8b46048945fc8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745ecf871090883c5ecff2689f683c7183b *7b5c760ac7436c06000000ff63f8c747ec087209088b45108947f08b45148947f48b450c8947f8 *8b45088947fc8b450489078d47ec894514c7451028d411088b750483c50ce982a3060089f683c5 *0ce96897ffff9472090844720908e4040908050000002500e719e4040908060000002400e7198b *460483f82c750f8b7504c74504b072090883c504ff2683c510e92997ffff908b46088945008b76 *04c745fcbc72090883c5fcff268d7600dc720908440a0908e4040908050000002500e7198b7604 *c7450008730908ff2683c50ce9e896ffff14730908147309081473090814730908147309080873 *09081473090814730908e4040908050000002500e719e404090804000100050000000b00e7198d *45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745ec4873090883c5ecff2689f6e404090804000100040000000b00e7198d45f8 *3b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec587309088b46048947f08b4608 *8947f48b45008947f88b460c8947fc8b461089078d47ec894500c745fc28d411088b761083c5f8 *e91aa2060089f6f804090800000200120011008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f43cb51108be98d6110883c5f0e9d79d06008d760083c7203b7b5c760ac7436c08000000 *ff63f8c747e4a47309088b450c8947e88b45108947ec8b45088947f08b45048947f4c747f80874 *09088d47e48945108d47f889450c8b750483c508e991a106009083c508e9e894ffff8474090834 *740908e4040908040000002500e71be4040908050000002400e71b8b460483f83d750f8b7504c7 *4504a074090883c504ff2683c50ce9a994ffff908b46088945008b7604c745fcac74090883c5fc *ff268d7600cc740908b4090908e4040908040000002500e71b8b7604c74500f8740908ff2683c5 *08e96894ffff0475090804750908047509080475090804750908f87409080475090804750908e4 *040908040000002500e71be404090804000100040000000b00e71b8d45ec3b43547303ff63fc8b *46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f03875090883c5f0ff *2683c7143b7b5c760ac7436c05000000ff63f8c747f0487509088b450c8947f48b45108947f88b *45088947fc8b450489078d47f0894510c7450c28d411088b750483c508e950a006007c75090824 *090908e4040908040000002500e71b83c70c3b7b5c760ac7436c03000000ff63f8c747f8f40809 *088b46048945fc8d4ff8894df8bec4d11108c74500d875090883c5f4e903a006008d760083c508 *e98c92ffff14760908147609081476090814760908d8750908147609081476090814760908e404 *0908040000002500e71be404090804000100040000000b00e71b8d45e43b43547303ff63fc8b46 *048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f04876090883c5f0ff26 *83c7143b7b5c760ac7436c05000000ff63f8c747f0587609088b450c8947f48b45108947f88b45 *088947fc8b450489078d47f0894510c7450c28d411088b750483c508e9409f060083c508e93c91 *ffffd47609088c760908e4040908040000002500e71be4040908050000002400e71b8b460483f8 *2c750f8b7504c74504f076090883c504ff2683c50ce9fd90ffff908b46088945008b7604c745fc *fc76090883c5fcff268d76001c77090858080908e4040908040000002500e71b8b7604c7450048 *770908ff2683c508e9bc90ffff5477090854770908547709085477090854770908487709085477 *090854770908e4040908040000002500e71be404090804000100040000000b00e71b8d45ec3b43 *547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f088 *77090883c5f0ff26e404090804000100030000000b00e71b8d45f83b4354720883c7143b7b5c76 *0ac7436c05000000ff63fcc747f0987709088b46048947f48b45008947f88b46088947fc8b460c *89078d47f0894500c745fc28d411088b760c83c5f8e9e89d0600f804090800000200120021008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f44cb51108be98d6110883c5f0e9a79906 *008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8dc7709088b45088947ec8b450c89 *47f08b45048947f4c747f8387809088d47e889450c8d47f88945088b750483c504e9679d06008d *760083c504e9d08effffb078090864780908e4040908030000002500e71fe40409080400000024 *00e71f8b460483f83d750f8b7504c74504cc78090883c504ff2683c508e9918effff908b460889 *45008b7604c745fcd878090883c5fcff268d7600f8780908c8070908e4040908030000002500e7 *1f8b7604c7450024790908ff2683c504e9508effff307909083079090830790908307909083079 *0908247909083079090830790908e4040908030000002500e71fe404090804000100030000000b *00e71f8d45f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745 *f46479090883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4747909088b45 *088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c504e92e9c0600 *89f6a479090838070908e4040908030000002500e71f83c70c3b7b5c760ac7436c03000000ff63 *f8c747f8080709088b46048945fc8d4ff8894df8bec4d11108c74500fc79090883c5f4e9df9b06 *008d760083c504e97c8cffff387a0908387a0908387a0908387a0908fc790908387a0908387a09 *08387a0908e4040908030000002500e71fe404090804000100030000000b00e71f8d45e83b4354 *7303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f46c7a090883c5f4ff *2689f683c7103b7b5c760ac7436c04000000ff63f8c747f47c7a09088b45088947f88b450c8947 *fc8b450489078d47f489450cc7450828d411088b750483c504e9269b060089f683c504e9348bff *fff07a0908ac7a0908e4040908030000002500e71fe4040908040000002400e71f8b460483f87b *750f8b7504c745040c7b090883c504ff2683c508e9f58affff908b46088945008b7604c745fc18 *7b090883c5fcff268d7600387b09086c060908e4040908030000002500e71f8b7604c74500647b *0908ff2683c504e9b48affff707b0908707b0908707b0908707b0908707b0908647b0908707b09 *08707b0908e4040908030000002500e71fe404090804000100030000000b00e71f8d45f03b4354 *7303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4a47b090883c5f4ff *2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4b47b09088b45088947f88b450c8947 *fc8b450489078d47f489450cc7450828d411088b750483c504e9ee99060089f6e47b0908dc0509 *08e4040908030000002500e71f83c70c3b7b5c760ac7436c03000000ff63f8c747f8ac0509088b *46048945fc8d4ff8894df8bec4d11108c745003c7c090883c5f4e99f9906008d760083c504e9e0 *88ffff787c0908787c0908787c0908787c09083c7c0908787c0908787c0908787c0908e4040908 *030000002500e71fe404090804000100030000000b00e71f8d45e83b43547303ff63fc8b460489 *45fc8b460c8945f88b45008b4e08894d0089c6c745f4ac7c090883c5f4ff2689f6e40409080000 *00002400e71f83c7103b7b5c760ac7436c04000000ff63f8c747f4bc7c09088b46108947f88b46 *0c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e9da98060089f6e4040908 *000002001200ef1f8d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4f87c *090883c5f4ff2689f6e4040908000002001800ff1f8d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c747ec085c100856e8b180060083c4048d47ec894604c706245b1008c745f8 *d46d10088d47ec8945fcc747f8487d09088d47f88945f4c745f028121208be88d6110883c5ece9 *3498060020d411085cc21108e07d090800000200180003008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e83980060083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcc745f45cc21108be20d4110883c5f0e9bd9306009048d411087c *c2110844d411087cc211083cd411087cc211084c7e090800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8bd7f060083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f47cc21108be48d4110883c5f0e9419306 *0090547e090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8597f060083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f47cc21108be44d4110883c5f0e9dd920600905c7e090800000200180003008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f57e060083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f47cc21108be3cd4110883c5 *f0e97992060090d4d41108c4c21108907f090800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8897e060083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f4c4c21108bed4d4110883c5f0e90d92060090d8d4 *1108c4c21108fc7f090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e81d7e060083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f4c4c21108bed8d4110883c5f0e9a191060090d4d1110890d1110848d111 *0854a81108bcd41108c0d4110824c51108fcb311081cb411082cb4110884c11108e8c211087c80 *090800000200120001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883 *c5f0e919910600900100000024000000c74500d81112088b760483c5fce90a95060089f6948009 *0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee8c2 *1108c745f0f880090883c5f0ff267080090801000100130009028d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747eca4800908c747f8188109088b46 *048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece9739406008d760068800908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9303a1108894df4bed4 *d1110883c5f0e94b8e06008d76006880090800000200120021008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b08109088d4ff8894df4bec0d4 *110883c5f0e9de8f060089f66880090801000100130025088d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec508109088b46048947f0c747f8ec81 *09088d47ec8945f48d47f88945f0be48d1110883c5ece98b9306008d7600688009080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9403a1108894df4bed4d111 *0883c5f0e9638d06008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8988209088d4ff8894df4bec0d41108 *83c5f0e9f68e060089f66880090801000100130025088d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec388209088b46048947f0c747f8d4820908 *8d47ec8945f48d47f88945f0be48d1110883c5ece9a39206008d76000100000024000000c74500 *d81112088b760483c5fce98692060089f69080090801000100130001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be84c11108c745f07c83090883c5f0ff266880090802 *0000001500250c8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec208309088b46088947f0c747f89c8309088b46048947fc8d47ec8945f48d47f8 *8945f0be48d1110883c5ece9e9910600906880090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9443a1108894df4bed4d1110883c5f0e9c38b06008d760068 *80090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8388409088d4ff8894df4bec0d4110883c5f0e9568d060089f6688009 *08020000001500250c8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747ecd48309088b46048947f08b46088947f4c747f8748409088d47ec8945f48d *47f88945f0be48d1110883c5ece9fd900600906880090800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9503a1108894df4bed4d1110883c5f0e9d78a06008d76 *006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8248509088d4ff8894df4bec0d4110883c5f0e96a8c060089f668 *800908020000001500250c8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ecc08409088b46048947f08b46088947f4c747f8608509088d47ec8945 *f48d47f88945f0be48d1110883c5ece911900600900100000024000000c74500d81112088b7604 *83c5fce9f68f060089f68480090801000100130001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e04894df4befcb31108c745f00c86090883c5f0ff2668800908030000001200a50c *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *ac8509088b46088947f08b460c8947f4c747f82c8609088b46048947fc8d47ec8945f48d47f889 *45f0be48d1110883c5ece9538f06008d76006880090800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9543a1108894df4bed4d1110883c5f0e92b8906008d7600 *6880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8d08609088d4ff8894df4bec0d4110883c5f0e9be8a060089f66880 *0908030000001200a50c8d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8 *d46d10088975fcc747e8648609088b46048947ec8b46088947f08b460c8947f4c747f80c870908 *8d47e88945f48d47f88945f0be48d1110883c5ece95f8e06008d76006880090800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9643a1108894df4bed4d1110883 *c5f0e9378806008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8c48709088d4ff8894df4bec0d4110883c5 *f0e9ca89060089f668800908030000001200a50c8d45ec3b4354720883c71c3b7b5c760ac7436c *07000000ff63f8c745f8d46d10088975fcc747e8588709088b46048947ec8b46088947f08b460c *8947f4c747f8008809088d47e88945f48d47f88945f0be48d1110883c5ece96b8d06008d760001 *00000024000000c74500d81112088b760483c5fce94e8d060089f68c8009080100010013000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0b4880908 *83c5f0ff2668800908040000001200a50e8d45ec3b4354720883c71c3b7b5c760ac7436c070000 *00ff63f8c745f8d46d10088975fcc747e84c8809088b46088947ec8b460c8947f08b46108947f4 *c747f8d48809088b46048947fc8d47e88945f48d47f88945f0be48d1110883c5ece9a58c060090 *6880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9683a *1108894df4bed4d1110883c5f0e97f8606008d76006880090800000200120021008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87c8909088d4f *f8894df4bec0d4110883c5f0e91288060089f668800908040000001200a50e8d45ec3b43547208 *83c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e40c8909088b460489 *47e88b46088947ec8b460c8947f08b46108947f4c747f8b88909088d47e48945f48d47f88945f0 *be48d1110883c5ece9ad8b0600906880090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9743a1108894df4bed4d1110883c5f0e9878506008d760068800908 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8748a09088d4ff8894df4bec0d4110883c5f0e91a87060089f6688009080400 *00001200a50e8d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d1008 *8975fcc747e4048a09088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f8b08a *09088d47e48945f48d47f88945f0be48d1110883c5ece9b58a0600900100000024000000c74500 *d81112088b760483c5fce99a8a060089f68c80090801000100130001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0688b090883c5f0ff266880090805 *0000001200a50e8d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10 *088975fcc747e4fc8a09088b46088947e88b460c8947ec8b46108947f08b46148947f4c747f888 *8b09088b46048947fc8d47e48945f48d47f88945f0be48d1110883c5ece9eb8906008d76006880 *090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9783a1108 *894df4bed4d1110883c5f0e9c38306008d76006880090800000200120021008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8388c09088d4ff889 *4df4bec0d4110883c5f0e95685060089f668800908050000001200a50e8d45ec3b4354720883c7 *243b7b5c760ac7436c09000000ff63f8c745f8d46d10088975fcc747e0c08b09088b46048947e4 *8b46088947e88b460c8947ec8b46108947f08b46148947f4c747f8748c09088d47e08945f48d47 *f88945f0be48d1110883c5ece9eb8806008d76006880090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9883a1108894df4bed4d1110883c5f0e9c38206008d *76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8388d09088d4ff8894df4bec0d4110883c5f0e95684060089f6 *68800908050000001200a50e8d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c7 *45f8d46d10088975fcc747e0c08c09088b46048947e48b46088947e88b460c8947ec8b46108947 *f08b46148947f4c747f8748d09088d47e08945f48d47f88945f0be48d1110883c5ece9eb870600 *8d76000100000024000000c74500d81112088b760483c5fce9ce87060089f68c80090801000100 *130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0 *348e090883c5f0ff2668800908060000001200a50e8d45ec3b4354720883c7243b7b5c760ac743 *6c09000000ff63f8c745f8d46d10088975fcc747e0c08d09088b46088947e48b460c8947e88b46 *108947ec8b46148947f08b46188947f4c747f8548e09088b46048947fc8d47e08945f48d47f889 *45f0be48d1110883c5ece919870600906880090800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b98c3a1108894df4bed4d1110883c5f0e9f38006008d76006880 *090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f8088f09088d4ff8894df4bec0d4110883c5f0e98682060089f668800908 *060000001200a50e8d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d *10088975fcc747dc8c8e09088b46048947e08b46088947e48b460c8947e88b46108947ec8b4614 *8947f08b46188947f4c747f8448f09088d47dc8945f48d47f88945f0be48d1110883c5ece91586 *0600906880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9983a1108894df4bed4d1110883c5f0e9ef7f06008d76006880090800000200120021008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80c9009 *088d4ff8894df4bec0d4110883c5f0e98281060089f668800908060000001200a50e8d45ec3b43 *54720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dc908f09088b *46048947e08b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947f4c747f848 *9009088d47dc8945f48d47f88945f0be48d1110883c5ece911850600900100000024000000c745 *00d81112088b760483c5fce9f684060089f68c80090801000100130001008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f00c91090883c5f0ff2668800908 *070000001200a50e8d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d *10088975fcc747dc949009088b46088947e08b460c8947e48b46108947e88b46148947ec8b4618 *8947f08b461c8947f4c747f82c9109088b46048947fc8d47dc8945f48d47f88945f0be48d11108 *83c5ece93b8406008d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b99c3a1108894df4bed4d1110883c5f0e9137e06008d760068800908000002 *00120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8e89109088d4ff8894df4bec0d4110883c5f0e9a67f060089f6688009080700000012 *00a50e8d45ec3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fc *c747d8649109088b46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46 *188947f08b461c8947f4c747f8249209088d47d88945f48d47f88945f0be48d1110883c5ece92f *8306008d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9a83a1108894df4bed4d1110883c5f0e9077d06008d7600688009080000020012002100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *f49209088d4ff8894df4bec0d4110883c5f0e99a7e060089f668800908070000001200a50e8d45 *ec3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d87092 *09088b46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b *461c8947f4c747f8309309088d47d88945f48d47f88945f0be48d1110883c5ece9238206008d76 *000100000024000000c74500d81112088b760483c5fce90682060089f68c800908010001001300 *01008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0fc93 *090883c5f0ff2668800908080000001200a50e8d45ec3b4354720883c72c3b7b5c760ac7436c0b *000000ff63f8c745f8d46d10088975fcc747d87c9309088b46088947dc8b460c8947e08b461089 *47e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f81c9409088b46048947fc *8d47d88945f48d47f88945f0be48d1110883c5ece945810600906880090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ac3a1108894df4bed4d1110883c5f0 *e91f7b06008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8dc9409088d4ff8894df4bec0d4110883c5f0e9 *b27c060089f668800908080000001200a50e8d45ec3b4354720883c7303b7b5c760ac7436c0c00 *0000ff63f8c745f8d46d10088975fcc747d4549409088b46048947d88b46088947dc8b460c8947 *e08b46108947e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f8189509088d *47d48945f48d47f88945f0be48d1110883c5ece935800600906880090800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b83a1108894df4bed4d1110883c5f0e9 *0f7a06008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8ec9509088d4ff8894df4bec0d4110883c5f0e9a2 *7b060089f668800908080000001200a50e8d45ec3b4354720883c7303b7b5c760ac7436c0c0000 *00ff63f8c745f8d46d10088975fcc747d4649509088b46048947d88b46088947dc8b460c8947e0 *8b46108947e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f8289609088d47 *d48945f48d47f88945f0be48d1110883c5ece9257f0600900100000024000000c74500d8111208 *8b760483c5fce90a7f060089f68880090801000100130001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4be1cb41108c745f0f896090883c5f0ff26688009080900000012 *00a50f8d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fc *c747d4749609088b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b46 *1c8947ec8b46208947f08b46248947f4c747f8189709088b46048947fc8d47d48945f48d47f889 *45f0be48d1110883c5ece9437e06008d76006880090800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9bc3a1108894df4bed4d1110883c5f0e91b7806008d7600 *6880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8e09709088d4ff8894df4bec0d4110883c5f0e9ae79060089f66880 *0908090000001200a50f8d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745f8 *d46d10088975fcc747d0509709088b46048947d48b46088947d88b460c8947dc8b46108947e08b *46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f4c747f81c9809088d47d0 *8945f48d47f88945f0be48d1110883c5ece92b7d06008d76006880090800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc3a1108894df4bed4d1110883c5f0e9 *037706008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8f89809088d4ff8894df4bec0d4110883c5f0e996 *78060089f668800908090000001200a50f8d45ec3b4354720883c7343b7b5c760ac7436c0d0000 *00ff63f8c745f8d46d10088975fcc747d0689809088b46048947d48b46088947d88b460c8947dc *8b46108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f4c747f8 *349909088d47d08945f48d47f88945f0be48d1110883c5ece9137c06008d760001000000240000 *00c74500d81112088b760483c5fce9f67b060089f68c80090801000100130001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f00c9a090883c5f0ff2668 *8009080a0000001200a50f8d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745 *f8d46d10088975fcc747d0809909088b46088947d48b460c8947d88b46108947dc8b46148947e0 *8b46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f4c747f82c9a09088b46 *048947fc8d47d08945f48d47f88945f0be48d1110883c5ece9297b060090688009080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d03a1108894df4bed4d111 *0883c5f0e9037506008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f89a09088d4ff8894df4bec0d41108 *83c5f0e99676060089f6688009080a0000001200a50f8d45ec3b4354720883c7383b7b5c760ac7 *436c0e000000ff63f8c745f8d46d10088975fcc747cc649a09088b46048947d08b46088947d48b *460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b462489 *47f08b46288947f4c747f8349b09088d47cc8945f48d47f88945f0be48d1110883c5ece90d7a06 *00906880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *e03a1108894df4bed4d1110883c5f0e9e77306008d76006880090800000200120021008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8149c0908 *8d4ff8894df4bec0d4110883c5f0e97a75060089f6688009080a0000001200a50f8d45ec3b4354 *720883c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747cc809b09088b46 *048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947 *e88b46208947ec8b46248947f08b46288947f4c747f8509c09088d47cc8945f48d47f88945f0be *48d1110883c5ece9f1780600900100000024000000c74500d81112088b760483c5fce9d6780600 *89f68c80090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be2cb41108c745f02c9d090883c5f0ff26688009080b0000001200a50f8d45ec3b43547208 *83c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747cc9c9c09088b460889 *47d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c8947e48b46208947e88b *46248947ec8b46288947f08b462c8947f4c747f84c9d09088b46048947fc8d47cc8945f48d47f8 *8945f0be48d1110883c5ece9037806008d76006880090800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9e43a1108894df4bed4d1110883c5f0e9db7106008d76 *006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8209e09088d4ff8894df4bec0d4110883c5f0e96e73060089f668 *8009080b0000001200a50f8d45ec3b4354720883c73c3b7b5c760ac7436c0f000000ff63f8c745 *f8d46d10088975fcc747c8849d09088b46048947cc8b46088947d08b460c8947d48b46108947d8 *8b46148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f08b462c *8947f4c747f85c9e09088d47c88945f48d47f88945f0be48d1110883c5ece9df7606008d760068 *80090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f03a11 *08894df4bed4d1110883c5f0e9b77006008d76006880090800000200120021008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8449f09088d4ff8 *894df4bec0d4110883c5f0e94a72060089f6688009080b0000001200a50f8d45ec3b4354720883 *c73c3b7b5c760ac7436c0f000000ff63f8c745f8d46d10088975fcc747c8a89e09088b46048947 *cc8b46088947d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c8947e48b46 *208947e88b46248947ec8b46288947f08b462c8947f4c747f8809f09088d47c88945f48d47f889 *45f0be48d1110883c5ece9bb7506008d76000100000024000000c74500d81112088b760483c5fc *e99e75060089f68c80090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4be2cb41108c745f064a0090883c5f0ff26688009080c0000001200a50f8d45ec *3b4354720883c73c3b7b5c760ac7436c0f000000ff63f8c745f8d46d10088975fcc747c8cc9f09 *088b46088947cc8b460c8947d08b46108947d48b46148947d88b46188947dc8b461c8947e08b46 *208947e48b46248947e88b46288947ec8b462c8947f08b46308947f4c747f884a009088b460489 *47fc8d47c88945f48d47f88945f0be48d1110883c5ece9c5740600906880090800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f43a1108894df4bed4d1110883 *c5f0e99f6e06008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f85ca109088d4ff8894df4bec0d4110883c5 *f0e93270060089f6688009080c0000001200a50f8d45ec3b4354720883c7403b7b5c760ac7436c *10000000ff63f8c745f8d46d10088975fcc747c4bca009088b46048947c88b46088947cc8b460c *8947d08b46108947d48b46148947d88b46188947dc8b461c8947e08b46208947e48b46248947e8 *8b46288947ec8b462c8947f08b46308947f4c747f898a109088d47c48945f48d47f88945f0be48 *d1110883c5ece99d730600906880090800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9043b1108894df4bed4d1110883c5f0e9776d06008d7600688009080000 *0200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f884a209088d4ff8894df4bec0d4110883c5f0e90a6f060089f6688009080c000000 *1200a50f8d45ec3b4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975 *fcc747c4e4a109088b46048947c88b46088947cc8b460c8947d08b46108947d48b46148947d88b *46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec8b462c8947f08b463089 *47f4c747f8c0a209088d47c48945f48d47f88945f0be48d1110883c5ece9757206009001000000 *24000000c74500d81112088b760483c5fce95a72060089f68c80090801000100130001008d45ec *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0a8a3090883c5f0 *ff26688009080d0000001200a50f8d45ec3b4354720883c7403b7b5c760ac7436c10000000ff63 *f8c745f8d46d10088975fcc747c40ca309088b46088947c88b460c8947cc8b46108947d08b4614 *8947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec *8b46308947f08b46348947f4c747f8c8a309088b46048947fc8d47c48945f48d47f88945f0be48 *d1110883c5ece97b7106008d76006880090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9083b1108894df4bed4d1110883c5f0e9536b06008d760068800908 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8a8a409088d4ff8894df4bec0d4110883c5f0e9e66c060089f6688009080d00 *00001200a50f8d45ec3b4354720883c7443b7b5c760ac7436c11000000ff63f8c745f8d46d1008 *8975fcc747c000a409088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947 *d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46 *308947f08b46348947f4c747f8e4a409088d47c08945f48d47f88945f0be48d1110883c5ece94b *7006008d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9183b1108894df4bed4d1110883c5f0e9236a06008d7600688009080000020012002100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *d8a509088d4ff8894df4bec0d4110883c5f0e9b66b060089f6688009080d0000001200a50f8d45 *ec3b4354720883c7443b7b5c760ac7436c11000000ff63f8c745f8d46d10088975fcc747c030a5 *09088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b *461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b463489 *47f4c747f814a609088d47c08945f48d47f88945f0be48d1110883c5ece91b6f06008d76000100 *000024000000c74500d81112088b760483c5fce9fe6e060089f68c80090801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f004a7090883 *c5f0ff26688009080e0000001200a50f8d45ec3b4354720883c7443b7b5c760ac7436c11000000 *ff63f8c745f8d46d10088975fcc747c060a609088b46088947c48b460c8947c88b46108947cc8b *46148947d08b46188947d48b461c8947d88b46208947dc8b46248947e08b46288947e48b462c89 *47e88b46308947ec8b46348947f08b46388947f4c747f824a709088b46048947fc8d47c08945f4 *8d47f88945f0be48d1110883c5ece9196e0600906880090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b91c3b1108894df4bed4d1110883c5f0e9f36706008d *76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f808a809088d4ff8894df4bec0d4110883c5f0e98669060089f6 *688009080e0000001200a50f8d45ec3b4354720883c7483b7b5c760ac7436c12000000ff63f8c7 *45f8d46d10088975fcc747bc5ca709088b46048947c08b46088947c48b460c8947c88b46108947 *cc8b46148947d08b46188947d48b461c8947d88b46208947dc8b46248947e08b46288947e48b46 *2c8947e88b46308947ec8b46348947f08b46388947f4c747f844a809088d47bc8945f48d47f889 *45f0be48d1110883c5ece9e56c0600906880090800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b92c3b1108894df4bed4d1110883c5f0e9bf6606008d76006880 *090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f83ca909088d4ff8894df4bec0d4110883c5f0e95268060089f668800908 *0e0000001200a50f8d45ec3b4354720883c7483b7b5c760ac7436c12000000ff63f8c745f8d46d *10088975fcc747bc90a809088b46048947c08b46088947c48b460c8947c88b46108947cc8b4614 *8947d08b46188947d48b461c8947d88b46208947dc8b46248947e08b46288947e48b462c8947e8 *8b46308947ec8b46348947f08b46388947f4c747f878a909088d47bc8945f48d47f88945f0be48 *d1110883c5ece9b16b0600900100000024000000c74500d81112088b760483c5fce9966b060089 *f67480090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be54a81108c745f06caa090883c5f0ff26688009080f0000001200ad0f8d45ec3b4354720883 *c7483b7b5c760ac7436c12000000ff63f8c745f8d46d10088975fcc747bcc4a909088b46088947 *c08b460c8947c48b46108947c88b46148947cc8b46188947d08b461c8947d48b46208947d88b46 *248947dc8b46288947e08b462c8947e48b46308947e88b46348947ec8b46388947f08b463c8947 *f4c747f88caa09088b46048947fc8d47bc8945f48d47f88945f0be48d1110883c5ece9ab6a0600 *8d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9303b1108894df4bed4d1110883c5f0e9836406008d76006880090800000200120021008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f878ab09 *088d4ff8894df4bec0d4110883c5f0e91666060089f6688009080f0000001200ad0f8d45ec3b43 *54720883c74c3b7b5c760ac7436c13000000ff63f8c745f8d46d10088975fcc747b8c4aa09088b *46048947bc8b46088947c08b460c8947c48b46108947c88b46148947cc8b46188947d08b461c89 *47d48b46208947d88b46248947dc8b46288947e08b462c8947e48b46308947e88b46348947ec8b *46388947f08b463c8947f4c747f8b4ab09088d47b88945f48d47f88945f0be48d1110883c5ece9 *6f6906008d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b93c3b1108894df4bed4d1110883c5f0e9476306008d76006880090800000200120021 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8b4ac09088d4ff8894df4bec0d4110883c5f0e9da64060089f6688009080f0000001200ad0f8d *45ec3b4354720883c74c3b7b5c760ac7436c13000000ff63f8c745f8d46d10088975fcc747b800 *ac09088b46048947bc8b46088947c08b460c8947c48b46108947c88b46148947cc8b46188947d0 *8b461c8947d48b46208947d88b46248947dc8b46288947e08b462c8947e48b46308947e88b4634 *8947ec8b46388947f08b463c8947f4c747f8f0ac09088d47b88945f48d47f88945f0be48d11108 *83c5ece9336806008d76000100000024000000c74500d81112088b760483c5fce91668060089f6 *8080090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *be24c51108c745f0ecad090883c5f0ff2668800908100000001200ed0f8d45ec3b4354720883c7 *4c3b7b5c760ac7436c13000000ff63f8c745f8d46d10088975fcc747b83cad09088b46088947bc *8b460c8947c08b46108947c48b46148947c88b46188947cc8b461c8947d08b46208947d48b4624 *8947d88b46288947dc8b462c8947e08b46308947e48b46348947e88b46388947ec8b463c8947f0 *8b46408947f4c747f80cae09088b46048947fc8d47b88945f48d47f88945f0be48d1110883c5ec *e925670600906880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9403b1108894df4bed4d1110883c5f0e9ff6006008d7600688009080000020012002100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *fcae09088d4ff8894df4bec0d4110883c5f0e99262060089f668800908100000001200ed0f8d45 *ec3b4354720883c7503b7b5c760ac7436c14000000ff63f8c745f8d46d10088975fcc747b444ae *09088b46048947b88b46088947bc8b460c8947c08b46108947c48b46148947c88b46188947cc8b *461c8947d08b46208947d48b46248947d88b46288947dc8b462c8947e08b46308947e48b463489 *47e88b46388947ec8b463c8947f08b46408947f4c747f838af09088d47b48945f48d47f88945f0 *be48d1110883c5ece9e5650600906880090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b94c3b1108894df4bed4d1110883c5f0e9bf5f06008d760068800908 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f83cb009088d4ff8894df4bec0d4110883c5f0e95261060089f6688009081000 *00001200ed0f8d45ec3b4354720883c7503b7b5c760ac7436c14000000ff63f8c745f8d46d1008 *8975fcc747b484af09088b46048947b88b46088947bc8b460c8947c08b46108947c48b46148947 *c88b46188947cc8b461c8947d08b46208947d48b46248947d88b46288947dc8b462c8947e08b46 *308947e48b46348947e88b46388947ec8b463c8947f08b46408947f4c747f878b009088d47b489 *45f48d47f88945f0be48d1110883c5ece9a56406009001000000240000008b4504894500c74504 *301212088b761483c5fce9846406006c80090801000100130001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be90d11108c745f078b1090883c5f0ff2668800908420000 *002400ff0f83c7503b7b5c760ac7436c14000000ff63f8c747b4c4b009088b46048947b88b4608 *8947bc8b460c8947c08b46108947c48b46148947c88b46188947cc8b461c8947d08b46208947d4 *8b46248947d88b46288947dc8b462c8947e08b46308947e48b46348947e88b46388947ec8b463c *8947f08b46408947f4c747f89cb109088b45048947fc8d47b48945088d47f8894504bebcd41108 *e9a4630600688009080b000200000000001100ff0f8d45fc3b43547308bef8c21108ff63fc8b75 *04c745fcd4b1090883c5fcff2690f8c2110800c31108a0b2090800000200180003008d45f03b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8794b060083c4048d47 *f8894604c706245b1008c745f8d46d10088d47f88945fcc745f400c31108bef8c2110883c5f0e9 *fd5e060090ccd4110808c311080cb3090800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e80d4b060083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f408c31108beccd4110883c5f0e9915e060090d4d41108 *28c3110878b3090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8a14a060083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f428c31108bed4d4110883c5f0e9255e06009000000000240000008b760483c5 *04ff260400010000000000110000008b7500c74500ecb30908ff2600000000240000008b760883 *c504ff260400010000000000110000008b7500c7450014b40908ff2600000000240000008b760c *83c504ff260400010000000000110000008b7500c745003cb40908ff2600000000240000008b76 *0483c504ff260400010000000000110000008b7500c7450064b40908ff2600000000240000008b *760883c504ff260400010000000000110000008b7500c745008cb40908ff260000000024000000 *8b760c83c504ff260400010000000000110000008b7500c74500b4b40908ff2600000000240000 *008b761083c504ff260400010000000000110000008b7500c74500dcb40908ff26000000002400 *00008b761483c504ff260400010000000000110000008b7500c7450004b50908ff260000000024 *0000008b761883c504ff260400010000000000110000008b7500c745002cb50908ff2600000000 *240000008b761c83c504ff260400010000000000110000008b7500c7450054b50908ff26000000 *00240000008b762083c504ff260400010000000000110000008b7500c745007cb50908ff260000 *0000240000008b762483c504ff260400010000000000110000008b7500c74500a4b50908ff2600 *000000240000008b762883c504ff260400010000000000110000008b7500c74500ccb50908ff26 *00000000240000008b762c83c504ff260400010000000000110000008b7500c74500f4b50908ff *2600000000240000008b763083c504ff260400010000000000110000008b7500c745001cb60908 *ff2600000000240000008b763483c504ff260400010000000000110000008b7500c7450044b609 *08ff2600000000240000008b760483c504ff260400010000000000110000008b7500c745006cb6 *0908ff2600000000240000008b760883c504ff260400010000000000110000008b7500c7450094 *b60908ff2600000000240000008b760483c504ff260400010000000000110000008b7500c74500 *bcb60908ff2600000000240000008b760883c504ff260400010000000000110000008b7500c745 *00e4b60908ff2600000000240000008b760c83c504ff260400010000000000110000008b7500c7 *45000cb70908ff2600000000240000008b761083c504ff260400010000000000110000008b7500 *c7450034b70908ff2600000000240000008b761483c504ff260400010000000000110000008b75 *00c745005cb70908ff2600000000240000008b761883c504ff260400010000000000110000008b *7500c7450084b70908ff2600000000240000008b761c83c504ff26040001000000000011000000 *8b7500c74500acb70908ff2600000000240000008b762083c504ff260400010000000000110000 *008b7500c74500d4b70908ff2600000000240000008b762483c504ff2604000100000000001100 *00008b7500c74500fcb70908ff2600000000240000008b762883c504ff26040001000000000011 *0000008b7500c7450024b80908ff2600000000240000008b762c83c504ff260400010000000000 *110000008b7500c745004cb80908ff2600000000240000008b763083c504ff2604000100000000 *00110000008b7500c7450074b80908ff2600000000240000008b763483c504ff26040001000000 *0000110000008b7500c745009cb80908ff2600000000240000008b763883c504ff260400010000 *000000110000008b7500c74500c4b80908ff2600000000240000008b763c83c504ff2604000100 *00000000110000008b7500c74500ecb80908ff2600000000240000008b764083c504ff26040001 *0000000000110000008b7500c7450014b90908ff2683c500e91800000034b909080d0000000000 *000000000d00000000001100000083c7383b7b5c7612bed4c3110883c500c7436c0e000000ff63 *fcc747cc28c409088b45008947d08b45048947d48b45088947d88b450c8947dc8b45108947e08b *45148947e48b45188947e88b451c8947ec8b45208947f08b45248947f48b45288947f88b452c89 *47fc8b453089078d77cc83c534ff6500900b0000002400000083c7383b7b5c760ac7436c0e0000 *00ff63f8c747cc28c409088b45248947d08b45288947d48b45208947d88b451c8947dc8b452c89 *47e08b45188947e48b45108947e88b45148947ec8b450c8947f08b45088947f48b45048947f88b *46048947fc8b460889078d77cc83c530ff6500900a000000240000008b46088945008b4d048b56 *0489550489cec745fcd4b9090883c5fcff268d760009000000240000008b46088945008b7604c7 *45fc4cba090883c5fcff268d760008000000240000008b46088945008b4d088b560489550889ce *c745fc74ba090883c5fcff268d760007000000240000008b46048945008b7608c745fc94ba0908 *83c5fcff268d760006000000240000008b46088945008b7604c745fcbcba090883c5fcff268d76 *0005000000240000008b46088945008b4d148b560489551489cec745fcdcba090883c5fcff268d *760004000000240000008b46048945008b7608c745fcfcba090883c5fcff268d76000300000024 *0000008b46088945008b4d088b560489550889cec745fc24bb090883c5fcff268d760002000000 *240000008b46048945008b7608c745fc44bb090883c5fcff268d760001000000240000008b4608 *8945008b7604c745fc6cbb090883c5fcff268d760000000000240000008b46088945008b7604c7 *45fc8cbb090883c5fcff268d76000400010000000000110000008d45d43b43547308bed8c31108 *ff63fc8b7500c74500acbb0908ff26000000002400000081c7900000003b7b5c760ac7436c2400 *0000ff63f8c78774ffffffd8dc0b088b4630898778ffffff8b463489877cffffffc74780d8dc0b *088b46288947848b462c894788c7478cd8dc0b088d47808947908d8774ffffff894794c74798d8 *dc0b088b462089479c8b46248947a0c747a4d8dc0b088b461c8947a88d47988947acc747b0d8dc *0b088d47a48947b48d478c8947b8c747bcd8dc0b088b46148947c08b46188947c4c747c8d8dc0b *088b46108947cc8d47bc8947d0c747d4d8dc0b088b46088947d88b460c8947dcc747e0d8dc0b08 *8b46048947e48d47d48947e8c747ecd8dc0b088d47e08947f08d47c88947f4c747f8d8dc0b088d *47ec8947fc8d47b089078d77f883c504ff65008d76000400010000000000110000008b7500c745 *00f4bb0908ff260b000200000000001100000083c70c3b7b5c760fbee0c31108c7436c03000000 *ff63fcc747f840c409088b45008947fc8b4d04890f8d77f883c508ff650089f600000000240000 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f840c409088b46048947fc8b4e08890f8d77 *f883c504ff65008d76000400010000000000110000008b7500c7450064bd0908ff260000000024 *00000083c70c3b7b5c760ac7436c03000000ff63f8c747f8d8dc0b088b46048947fc8b4e08890f *8d77f883c504ff65008d76000400010000000000110000008b7500c74500b4bd0908ff26160003 *00000000001100000083c7103b7b5c760fbeecc31108c7436c04000000ff63fcc747f410c40908 *8b45008947f88b4d04894ffc8b550889178d77f483c50cff6500010000002400000083c7103b7b *5c760ac7436c04000000ff63f8c747f410c409088b45048947f88b4e04894ffc8b560889178d77 *f483c508ff65009000000000240000008b46048945008b7608c745fc48be090883c5fcff268d76 *000400010000000000110000008d45fc3b43547308bef0c31108ff63fc8b7500c7450084be0908 *ff26000000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ecd8dc0b088b460889 *47f08b460c8947f4c747f8d8dc0b088b46048947fc8d47ec89078d77f883c504ff650004000100 *00000000110000008b7500c74500ccbe0908ff2683c500e91800000024bf090810000000000000 *0000001000000000001100000083c7443b7b5c7612bef8c3110883c500c7436c11000000ff63fc *c747c058c409088b45008947c48b45048947c88b45088947cc8b450c8947d08b45108947d48b45 *148947d88b45188947dc8b451c8947e08b45208947e48b45248947e88b45288947ec8b452c8947 *f08b45308947f48b45348947f88b45388947fc8b453c89078d77c083c540ff65008d76000e0000 *002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b45308947c48b452c *8947c88b45348947cc8b45288947d08b45248947d48b45208947d88b45388947dc8b451c8947e0 *8b45148947e48b45108947e88b45188947ec8b450c8947f08b45088947f48b45048947f88b4604 *8947fc8b460889078d77c083c53cff65008d76000d000000240000008b46088945008b4d048b56 *0489550489cec745fcd8bf090883c5fcff268d76000c000000240000008b46088945008b7604c7 *45fc64c0090883c5fcff268d76000b000000240000008b46088945008b4d0c8b560489550c89ce *c745fc8cc0090883c5fcff268d76000a000000240000008b46088945008b4d048b560489550489 *cec745fcacc0090883c5fcff268d760009000000240000008b46088945008b7604c745fcd4c009 *0883c5fcff268d760008000000240000008b46088945008b7604c745fcfcc0090883c5fcff268d *760007000000240000008b46088945008b4d1c8b560489551c89cec745fc1cc1090883c5fcff26 *8d760006000000240000008b46088945008b4d048b560489550489cec745fc3cc1090883c5fcff *268d760005000000240000008b46088945008b7604c745fc64c1090883c5fcff268d7600040000 *00240000008b46088945008b4d0c8b560489550c89cec745fc8cc1090883c5fcff268d76000300 *0000240000008b46088945008b4d048b560489550489cec745fcacc1090883c5fcff268d760002 *000000240000008b46088945008b7604c745fcd4c1090883c5fcff268d76000100000024000000 *8b46088945008b7604c745fcfcc1090883c5fcff268d760000000000240000008b46088945008b *7604c745fc1cc2090883c5fcff268d76000400010000000000110000008d45c83b43547308befc *c31108ff63fc8b7500c745003cc20908ff26000000002400000081c7b40000003b7b5c760ac743 *6c2d000000ff63f8c78750ffffffd8dc0b088b463c898754ffffff8b4640898758ffffffc7875c *ffffffd8dc0b088b4634898760ffffff8b4638898764ffffffc78768ffffffd8dc0b088d875cff *ffff89876cffffff8d8750ffffff898770ffffffc78774ffffffd8dc0b088b462c898778ffffff *8b463089877cffffffc74780d8dc0b088b46248947848b4628894788c7478cd8dc0b088d478089 *47908d8774ffffff894794c74798d8dc0b088d478c89479c8d8768ffffff8947a0c747a4d8dc0b *088b461c8947a88b46208947acc747b0d8dc0b088b46148947b48b46188947b8c747bcd8dc0b08 *8d47b08947c08d47a48947c4c747c8d8dc0b088b460c8947cc8b46108947d0c747d4d8dc0b088b *46048947d88b46088947dcc747e0d8dc0b088d47d48947e48d47c88947e8c747ecd8dc0b088d47 *e08947f08d47bc8947f4c747f8d8dc0b088d47ec8947fc8d479889078d77f883c504ff650089f6 *0400010000000000110000008b7500c7450084c20908ff260300000001000000ff650090030000 *0009000000ff6500900d00000001000000ff6500900d00000009000000ff650090020000000400 *0000ff6500900200000009000000ff6500901000000001000000ff6500901000000009000000ff *650090e900000000833d04c4110800753cc70504c4110801000000c7450004aa0b0883c504c745 *003519050883c504c7450090310c0883c504c7450050a70b0883c504c745004dec090883c50483 *c5fcff6500b8d3110880d111083cc61108e4c61108acc6110894c61108b0d0110848d51108d0c4 *090801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f87cdc0b08c747fcc00a1208c70700d211088b4e04894df48d57f88955f0 *beb0d0110883c5ece9df5006008d7600b8c4090801000100130041008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e4c409088b4e04894ffc8d *57f88955f4beb8d3110883c5f0e9804c0600b8c40908010000002400410083c70c3b7b5c760ac7 *436c03000000ff63f8c747f844c509088b45048947fc8d4ff8894d048b760ce9474c06008d7600 *b8c4090804000100000001000b0045008d45fc3b43547303ff63fcbe3cc61108c745fc94c50908 *83c5fcff26bcc4090800000200120011008d45ec3b43547303ff63f8c745f8d46d10088975fcc7 *45f4c00a1208c745f080d11108be94c6110883c5ece9e84f0600c8c4090800000200120009008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f448d51108beacc6110883c5f0e9a74b06 *008d7600bcc409080000020012005d008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ecfcc50908c747f838c609088d4fec894df48d57f88955f0 *bee4c6110883c5ece9594f060090b8c40908000000002400ff0083c7143b7b5c760ac7436c0500 *0000ff63f8c747f0d4c50908c747f870c609088d47f08945008d4ff8894dfc8b760483c5f8e915 *4f060090b8c40908000002001800ff008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e82137060083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcbe3cc61108c745f4c8c6090883c5f4ff26d4a4110800000000240000008b760ce928 *40060060c7090800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c747f8085c100856e8ad36060083c4048d47f8894604c706245b1008c745f8d46d10088d47 *f88945fcbed4a41108c745f46cc7090883c5f4ff2684d411084cd41108d4c70908000002001800 *03008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e84536 *060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f44cd41108be84 *d4110883c5f0e9c94906009028c4110800000000240000008b760ce9483f060040c80908000002 *00180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8cd35060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe28c41108c7 *45f44cc8090883c5f4ff26f4d41108d8d41108b4c8090800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e86535060083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f4f4d41108bed8d4110883c5f0e9e94806 *009080d1110894c6110820c9090800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8f934060083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f480d11108be94c6110883c5f0e97d480600907cc611083cc611 *0844a3110808c4110858c41108020000002400000083c70c3b7b5c760ac7436c03000000ff63f8 *c747f838ec09088b45048947fc8b4d08890f8d57f88955088b760c83c504e92b4806008d760090 *c9090804000100010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbe3cc61108c745 *f8a8c9090883c5f8ff2689f6000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f87c9f0508c747fc00d21108c70700d211088d47f88945008b760c83c5fce9b54706009090c9 *090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f4 *1cca090883c5f4ff2689f69cc9090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f4c00a1208be58c4110883c5f0e94b4706008d760094c9090800000000240005 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f894ca0908c7450044a311088d47f88945fc *8b760883c5f8e9174b06008d760090c909080000020012000b008d45ec3b43547303ff63f8c745 *f8d46d10088975fcbe3cc61108c745f4ccca090883c5f4ff2689f68cc909080000020012001700 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *60ca0908c747f80ccb09088d4fec894df48d57f88955f0be7cc6110883c5ece9894a0600908cc9 *0908010000002400170083c7143b7b5c760ac7436c05000000ff63f8c747f0f0c909088b450489 *47f4c747f840cb09088d4ff0894d048d57f88955008b760483c5fce93f4a06008d76008cc90908 *04000100000001000b0017008d45f83b43547303ff63fcbe3cc61108c745fc98cb090883c5fcff *268cc909080000000024001f0083c7083b7b5c760ac7436c02000000ff63f8c747fce8cb09088d *47fc894500c745fc08c411088b760483c5f8e9d34906008d76008cc909080000020018001f008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8dd31060083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe3cc61108c745f410cc0908 *83c5f4ff26ccd1110880d11108a4cc090800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e87531060083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e9f944060090bcd11108 *64a6110878c4110802000000240000008b45088b4d04894d088945048b7608e9dc48060014cd09 *0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be64a61108c745ec24cd090883c5ecff2689f602000000240000008b45088b4d04894d08 *8945048b7608e98048060018cd090802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be78c41108c745ec80cd090883c5ecff2689f610cd09 *08020000002400070083c7183b7b5c760ac7436c06000000ff63f8c747ec44cd09088b45048947 *f08b46088947f4c747f8a0cd09088b45088947fc8b460489078d47ec8945088d47f8894504bebc *d11108e9e74706008d760010cd090801000000240007008b46088945008b4d048b560489550489 *cec745fce0cd090883c5fcff268d760010cd09080b00020000000000110007008d45fc3b435473 *08be88c41108ff63fc8b7500c745003cce0908ff2654d1110888c411088cce0908020000001500 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0eb *aa89f688ce09080b000200000000001100030083c70c3b7b5c760fbe90c41108c7436c03000000 *ff63fcc747f89cce09088b45008947fc8b4d04890f8d57f8895504be54d11108e9fb4206008d76 *00d4d1110890d1110848d11108bcd41108c0d4110880a4110848c4110820cf0908000002001200 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e98542060090 *0100000024000000c74500d81112088b760483c5fce97646060089f624cf090801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be80a41108c745f08ccf09 *0883c5f0ff2618cf09080100010013000d008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec38cf0908c747f8accf09088b46048947fc8d47ec89 *45f48d47f88945f0be48d1110883c5ece9df4506008d760010cf090800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9643b1108894df4bed4d1110883c5f0e9b7 *3f06008d760010cf090800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f844d009088d4ff8894df4bec0d4110883c5f0e94a41 *060089f610cf090801000100130035008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ece4cf09088b46048947f0c747f880d009088d47ec8945f4 *8d47f88945f0be48d1110883c5ece9f74406008d760010cf090800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9743b1108894df4bed4d1110883c5f0e9cf3e06 *008d760010cf090800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f82cd109088d4ff8894df4bec0d4110883c5f0e962400600 *89f610cf090801000100130035008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c745f8d46d10088975fcc747ecccd009088b46048947f0c747f868d109088d47ec8945f48d47 *f88945f0be48d1110883c5ece90f4406008d76000100000024000000c74500d81112088b760483 *c5fce9f243060089f628cf090801000100130001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4be48c41108c745f010d2090883c5f0ff2610cf090802000000150075008d *45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb4 *d109088b46088947f0c747f830d209088b46048947fc8d47ec8945f48d47f88945f0be48d11108 *83c5ece9554306009010cf090800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9783b1108894df4bed4d1110883c5f0e92f3d06008d760010cf09080000020012 *0011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8ccd209088d4ff8894df4bec0d4110883c5f0e9c23e060089f610cf090802000000150075 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec68d209088b46048947f08b46088947f4c747f808d309088d47ec8945f48d47f88945f0be48d1 *110883c5ece9694206009010cf090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9843b1108894df4bed4d1110883c5f0e9433c06008d760010cf0908000002 *00120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8b8d309088d4ff8894df4bec0d4110883c5f0e9d63d060089f610cf09080200000015 *0075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec54d309088b46048947f08b46088947f4c747f8f4d309088d47ec8945f48d47f88945f0be *48d1110883c5ece97d4106009001000000240000008b4504894500c74504301212088b761483c5 *fce95c41060014cf090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be90d11108c745f0a0d4090883c5f0ff2610cf09084200000024007f0083c7183b *7b5c760ac7436c06000000ff63f8c747ec40d409088b46048947f08b46088947f4c747f8c4d409 *088b45048947fc8d47ec8945088d47f8894504bebcd41108e9d040060010cf09080b0002000000 *000011007f008d45fc3b43547308bea8c41108ff63fc8b7504c745fcfcd4090883c5fcff2690a8 *c41108b0c4110874d5090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8a528060083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f4b0c41108bea8c4110883c5f0e9293c060090ccd41108b8c41108e0d5 *090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e83928060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4b8c41108beccd4110883c5f0e9bd3b060090c4d11108d4d1110828d41108a8d6110888d611 *0898d6110818c4110838c4110850d6090800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9983b1108894df4bed4d1110883c5f0e9833906008d760050d6090842 *0000002400010083c70c3b7b5c761ec74500b4d60908c7436c03000000b8ff00000083f0008943 *20e9d6660600c747f878d609088d4ff8894d088b750483c504e9163b060089f650d60908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e43b1108894df4bed4 *d1110883c5f0e9fb3806008d760083c504e97cffffff50d6090800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9f83b1108894df4bed4d1110883c5f0e9b73806 *008d760050d60908420000002400010083c70c3b7b5c761ec7450080d70908c7436c03000000b8 *ff00000083f000894320e90a660600c747f844d709088d4ff8894d088b750483c504e94a3a0600 *89f683c504ebbb8d760050d6090800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b9443c1108894df4bed4d1110883c5f0e9273806008d760050d6090842000000 *2400010083c70c3b7b5c761ec7450010d80908c7436c03000000b8ff00000083f000894320e97a *650600c747f8d4d709088d4ff8894d088b750483c504e9ba39060089f650d60908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9903c1108894df4bed4d11108 *83c5f0e99f3706008d760083c504e97cffffff50d6090800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9983c1108894df4bed4d1110883c5f0e95b3706008d76 *0050d60908420000002400010083c70c3b7b5c761ec74500dcd80908c7436c03000000b8ff0000 *0083f000894320e9ae640600c747f8a0d809088d4ff8894d088b750483c504e9ee38060089f683 *c504ebbb8d760050d6090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9e43c1108894df4bed4d1110883c5f0e9cb3606008d760050d6090842000000240001 *0083c70c3b7b5c761ec745006cd90908c7436c03000000b8ff00000083f000894320e91e640600 *c747f830d909088d4ff8894d088b750483c504e95e38060089f683c508ebbb8d760050d6090800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9303d1108894df4 *bed4d1110883c5f0e93b3606008d760050d60908420000002400010083c70c3b7b5c761ec74500 *fcd90908c7436c03000000b8ff00000083f000894320e98e630600c747f8c0d909088d4ff8894d *088b750483c504e9ce37060089f650d6090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b97c3d1108894df4bed4d1110883c5f0e9b33506008d760083c508e9 *7cffffff50d6090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9883d1108894df4bed4d1110883c5f0e96f3506008d760050d60908420000002400010083c7 *0c3b7b5c761ec74500c8da0908c7436c03000000b8ff00000083f000894320e9c2620600c747f8 *8cda09088d4ff8894d088b750483c504e90237060089f683c508ebbb8d760050d6090800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d43d1108894df4bed4d1 *110883c5f0e9df3406008d760050d60908420000002400010083c70c3b7b5c761ec7450058db09 *08c7436c03000000b8ff00000083f000894320e932620600c747f81cdb09088d4ff8894d088b75 *0483c504e97236060089f683c508ebbb8d760083c70c3b7b5c760ac7436c03000000ff63f8c747 *f838ec09088b45108947fc8b4d08890f8d57f88955108b750483c50ce9333606008d760083c508 *e978ffffffd8db0908a0db090850d60908040000002500010050d6090805000000240001008b46 *0483f87d750f8b7504c74504f4db090883c504ff2683c50ce939ffffff908b46088945008b7604 *c745fc00dc090883c5fcff268d760020dc090898db090850d6090804000000250001008b7604c7 *45004cdc0908ff2683c508e9f8feffff58dc090858dc090858dc090858dc090858dc09084cdc09 *0858dc090858dc090850d60908040000002500010050d6090804000100040000000b0001008d45 *ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c7 *45f08cdc090883c5f0ff2650d6090804000100040000000b0003008d45f83b4354720883c7143b *7b5c760ac7436c05000000ff63fcc747f09cdc09088b46048947f48b46088947f88b45008947fc *8b460c89078d47f0894500c745fc28d411088b761083c5f8e9e438060060d60908000002001200 *03008d45f03b43547303ff63f8c745f8d46d10088975fcc745f418c41108be98d6110883c5f0e9 *a33406008d760083c7203b7b5c760ac7436c08000000ff63f8c747e4e0dc09088b450c8947e88b *45108947ec8b45088947f08b45048947f4c747f83cdd09088d47e48945108d47f889450c8b7504 *83c508e95d3806009083c508e908fdffffb8dd090868dd090850d60908040000002500330050d6 *090805000000240033008b460483f83d750f8b7504c74504d4dd090883c504ff2683c50ce9c9fc *ffff908b46088945008b7604c745fce0dd090883c5fcff268d760000de090808db090850d60908 *04000000250033008b7604c745002cde0908ff2683c508e988fcffff38de090838de090838de09 *0838de090838de09082cde090838de090838de090850d60908040000002500330050d609080400 *0100040000000b0033008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745f06cde090883c5f0ff2683c7143b7b5c760ac7436c05000000ff *63f8c747f07cde09088b450c8947f48b45108947f88b45088947fc8b450489078d47f0894510c7 *450c28d411088b750483c508e91c370600b0de090878da090850d60908040000002500330083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f848da09088b46048945fc8d4ff8894df8bec4d111 *08c745000cdf090883c5f4e9cf3606008d760083c508e9acfaffff48df090848df090848df0908 *48df09080cdf090848df090848df090848df09084cd6090804000000250067004cd60908040001 *00040000000b0067008d45e43b43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b *45008b4e08894d0089c6c745f07cdf090883c5f0ff2683c7143b7b5c760ac7436c05000000ff63 *f8c747f08cdf09088b450c8947f48b45108947f88b45088947fc8b450489078d47f0894510c745 *0c28d411088b750483c508e90c36060083c508e95cf9ffff08e00908c0df09084cd60908040000 *00250067004cd6090805000000240067008b460483f82c750f8b7504c7450424e0090883c504ff *2683c50ce91df9ffff908b46088945008b7604c745fc30e0090883c5fcff268d760050e00908ac *d909084cd6090804000000250067008b7604c745007ce00908ff2683c508e9dcf8ffff88e00908 *88e0090888e0090888e0090888e009087ce0090888e0090888e009084cd6090804000000250067 *004cd6090804000100040000000b0067008d45ec3b43547303ff63fc8b46048945fc8b46108945 *f48b460c8945f88b45008b4e08894d0089c6c745f0bce0090883c5f0ff264cd609080400010003 *0000000b0067008d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0cce009 *088b46048947f48b45008947f88b46088947fc8b460c89078d47f0894500c745fc28d411088b76 *0c83c5f8e9b434060060d6090800000200120005008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f438c41108be98d6110883c5f0e9733006008d760083c71c3b7b5c760ac7436c0700 *0000ff63f8c747e810e109088b45088947ec8b450c8947f08b45048947f4c747f86ce109088d47 *e889450c8d47f88945088b750483c504e9333406008d760083c504e9f0f6ffffe4e1090898e109 *084cd60908030000002500e7004cd60908040000002400e7008b460483f83d750f8b7504c74504 *00e2090883c504ff2683c508e9b1f6ffff908b46088945008b7604c745fc0ce2090883c5fcff26 *8d76002ce209081cd909084cd60908030000002500e7008b7604c7450058e20908ff2683c504e9 *70f6ffff64e2090864e2090864e2090864e2090864e2090858e2090864e2090864e209084cd609 *08030000002500e7004cd6090804000100030000000b00e7008d45f03b43547303ff63fc8b4604 *8945fc8b460c8945f88b45008b4e08894d0089c6c745f498e2090883c5f4ff2689f683c7103b7b *5c760ac7436c04000000ff63f8c747f4a8e209088b45088947f88b450c8947fc8b450489078d47 *f489450cc7450828d411088b750483c504e9fa32060089f6d8e209088cd809084cd60908030000 *002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f85cd809088b46048945fc8d4ff8 *894df8bec4d11108c7450030e3090883c5f4e9ab3206008d760083c504e99cf4ffff6ce309086c *e309086ce309086ce3090830e309086ce309086ce309086ce309084cd60908030000002500e700 *4cd6090804000100030000000b00e7008d45e83b43547303ff63fc8b46048945fc8b460c8945f8 *8b45008b4e08894d0089c6c745f4a0e3090883c5f4ff2689f683c7103b7b5c760ac7436c040000 *00ff63f8c747f4b0e309088b45088947f88b450c8947fc8b450489078d47f489450cc7450828d4 *11088b750483c504e9f231060089f683c504e954f3ffff24e40908e0e309084cd6090803000000 *2500e7004cd60908040000002400e7008b460483f87b750f8b7504c7450440e4090883c504ff26 *83c508e915f3ffff908b46088945008b7604c745fc4ce4090883c5fcff268d76006ce40908c0d7 *09084cd60908030000002500e7008b7604c7450098e40908ff2683c504e9d4f2ffffa4e40908a4 *e40908a4e40908a4e40908a4e4090898e40908a4e40908a4e409084cd60908030000002500e700 *4cd6090804000100030000000b00e7008d45f03b43547303ff63fc8b46048945fc8b460c8945f8 *8b45008b4e08894d0089c6c745f4d8e4090883c5f4ff2689f683c7103b7b5c760ac7436c040000 *00ff63f8c747f4e8e409088b45088947f88b450c8947fc8b450489078d47f489450cc7450828d4 *11088b750483c504e9ba30060089f618e5090830d709084cd60908030000002500e70083c70c3b *7b5c760ac7436c03000000ff63f8c747f800d709088b46048945fc8d4ff8894df8bec4d11108c7 *450070e5090883c5f4e96b3006008d760083c504e900f1fffface50908ace50908ace50908ace5 *090870e50908ace50908ace50908ace509084cd60908030000002500e7004cd609080400010003 *0000000b00e7008d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d00 *89c6c745f4e0e5090883c5f4ff2689f64cd60908000000002400e70083c7103b7b5c760ac7436c *04000000ff63f8c747f4f0e509088b46108947f88b460c8947fc8b460489078d47f4894500c745 *fc28d411088b760483c5f8e9a62f060089f64cd60908000002001200ef008d45ec3b43547303ff *63f8c745f8d46d10088975fcbea8d61108c745f42ce6090883c5f4ff2689f64cd6090800000200 *1800ff008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8 *7d17060083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f87ce60908 *8d47f88945f4c745f028121208be88d6110883c5ece9002f060020d41108d8c4110814e7090800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e80517060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d8 *c41108be20d4110883c5f0e9892a060090e4d111085ca411088b750883c50cff2684e709080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be5ca4110883 *c5f0e9442a060083c7183b7b5c760ac7436c06000000ff63f8c747ec9ce709088b45048947f0c7 *47f87cdc0b08c747fcc00a12088d47ec89078b45088945048d47f8894508bee4d11108e9082e06 *00c4e7090888e7090880e70908020000002500030080e7090801000000240003008975008b7604 *c745fc20e8090883c5fcff2689f680e7090800000000240003008b46048945008b7608c745fc2c *e8090883c5fcff268d760080e709080400010000000000110003008d45f83b43547308bef8c411 *08ff63fc8b7500c745004ce80908ff26d4d4110800c5110890e8090800000200180003008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88915060083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f400c51108bed4d4110883c5 *f0e90d2906009000c51108fce8090800000200180001008d45f83b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e82115060083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcbe00c5110883c5f8e9f043020048d4110834c5110844d4110834c5 *11083cd4110834c511085ce9090800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8ad14060083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f434c51108be48d4110883c5f0e9312806009064e90908000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e84914060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f434c511 *08be44d4110883c5f0e9cd270600906ce9090800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8e513060083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f434c51108be3cd4110883c5f0e9692706009034c5 *1108a0ea090800000200180001008d45f83b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e87d13060083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcbe34c5110883c5f8e9f432020000000000240000008b760483c504ff2604000100000000 *00110000008b7500c7450008eb0908ff2600000000240000008b760883c504ff26040001000000 *0000110000008b7500c7450030eb0908ff260b000200000000001100000083c70c3b7b5c760fbe *94c51108c7436c03000000ff63fcc747f838ec09088b45008947fc8b4d04890f8d77f883c508ff *650089f6000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f838ec09088b46 *048947fc8b4e08890f8d77f883c504ff65008d76000400010000000000110000008b7500c74500 *98eb0908ff26000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f8d8dc0b08 *8b46048947fc8b4e08890f8d77f883c504ff65008d76000400010000000000110000008b7500c7 *4500e8eb0908ff260200000004000000ff6500900200000009000000ff650090e900000000833d *a0c51108007528c705a0c5110801000000c7450004a10b0883c504c7450090310c0883c504c745 *0050a70b0883c50483c5fcff650004000100030000000b0000008d45f83b4354720883c70c3b7b *5c760ac7436c03000000ff63fcc747f88c6b10088b46088947fc8b450089078d47f88945008b46 *048945fc8b760c83c5f8e9412906009005000000120000008d45ec3b4354720883c7103b7b5c76 *0ac7436c04000000ff63f8c745f8d46d10088975fcc747f490ec09088b46088947f88b460c8947 *fc8b461089078d47f48945f48b46048945f08b761483c5ece9e528060090030000002400000083 *c7183b7b5c760ac7436c06000000ff63f8c747ecdcec09088b450c8947f08b45088947f48b460c *8947f88b46088947fc8b460489078d47ec89450c8b45048945088b760883c504e98f2806008d76 *001700040000000000110000008b7500c7450038ed0908ff2684d3110894d01108a4ed09080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be94d0110883 *c5f0e92c240600a0ed090802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e08894df48b56048955f0be84d3110883c5ece9fe27060089f6a0ed09080b000200010000 *000c00010083c70c3b7b5c760ac7436c03000000ff63fcc747f8e8ed09088b45008947fc8b4d04 *890f8d57f88955048b7604e9ae23060089f6a0ed090804000100000000001100030083c7143b7b *5c760fbea8c51108c7436c05000000ff63fcc747f0b4ed09088b45008947f4c747fc28ee09088d *4ff0890f8d77fc83c504ff65008d7600040001000000000011000000be54c7110883c5048b4500 *ff60e889f604000100000000001100000083c7083b7b5c760fbeb4c51108c7436c02000000ff63 *fcc747fce4440a088b450089078d77fc83c5048b4d00ff61ec9004000100000000001100000083 *c7083b7b5c760fbeb8c51108c7436c02000000ff63fcc747fcc4440a088b450089078d77fc83c5 *048b4d00ff61f090be00d2110883c50c8b4500ff60f089f683c70c3b7b5c760ac7436c03000000 *ff63f8c747f88c6b10088b45088947fc8b460489078b46088945088b75048d47f889450483c504 *e901010000904cef09083cef09080000000002000000250000008b45088b4e04894d0889c6c745 *009cef0908ff2683c70c3b7b5c760ac7436c03000000ff63f8c747f88c6b10088b46048947fc8b *4d08890f8b75048d57f889550483c504e9a30000008d7600be00d2110883c50c8b4500ff60f089 *f683c7283b7b5c760ac7436c0a000000ff63f8c747dcc86b10088b45048947e08b46088947e48b *45088947e8c747ece4bb0b088b46048947f08b45088947f4c747f87cdc0b088d47ec8947fc8d47 *dc89078d77f883c50c8b4500ff60ec8b760483c50cff2654f00908f8ef0908e8ef0908b0ef0908 *9cef09080000000002000000250000000b000200000001000b0000008d45fc3b43547303ff63fc *8b4d0089750089cec745fc7cf0090883c5fcff269000000200180000008d45f83b4354720883c7 *143b7b5c760ac7436c05000000ff63f8c747f0085c100856e87d0d060083c4048d47f0894604c7 *06245b1008c745f8d46d10088d47f08945fcc747fc88f009088d77fc83c5f8e9cf7c06008d7600 *bcc51108be00d2110883c50c8b4500ff60f089f68b750883c50ce9850100009083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b46088947f4c747f87cdc0b088b46 *048947fc8d47ec89078d77f883c5108b4500ff60ec9028f109081cf10908000000000300000025 *00000004000100020000000e0000008d45f43b43547303ff63fc8975f88b46088945fc8b45008b *4e04894d0089c6c745f480f1090883c5f4ff269008f1090803000000120001008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f88c6b10088b4608 *8947fc8b460489078b460c8945f48d47f88945f0bebcc5110883c5ece9012406009008f1090803 *0000002400010083c71c3b7b5c760ac7436c07000000ff63f8c747e88cf109088b45048947ec8b *450c8947f0c747f4c4f109088b46048947f88b45088947fc8b460889078d47f489450c8d77e883 *c50ce91effffff89f68b46088945008b7604c745fc20f2090883c5fcff268d760070f209080cf1 *090808f10908020000002500010008f1090804000100010000000c0001008d45f43b43547303ff *63fc8b4e04894dfc8b550089750089d6c745f89cf2090883c5f8ff268d7600be54c7110883c504 *8b4500ff60e889f683c7083b7b5c760ac7436c02000000ff63f8c747fc34450a0889378d77fc83 *c5048b4500ff60e090e4f20908d4f2090800000000000000002500000008f10908040001000200 *00000e0001008d45fc3b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0acf20908 *8b46048947f4c747f88c6b10088b46088947fc8b450089078d47f88945fc8d77f0c7450020f309 *0883c5fce92bffffff8d760008f109080b000200000000001100010083c7143b7b5c760fbeccc5 *1108c7436c05000000ff63fcc747f030f309088b45048947f48b45008947f8c747fce4440a088d *47f089078d77fc83c5088b4500ff60ec89f6e8d31108000000002400000083c7083b7b5c760ac7 *436c02000000ff63f8c747fcb8050c08c707000000008d47fc8945008b762483c5fce9f41d0600 *d8f3090800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e80d0a060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fcbee8d31108c745f4e4f3090883c5f4ff263cd11108bcc51108f4c51108e4d111084cd21108bc *c51108e4c5110804000100000001000b000000be54c7110883c5048b4500ff60e889f604000100 *000001000b00000083c70c3b7b5c760ac7436c03000000ff63fcc747f814450a088b45008947fc *c70754c711088d77f883c5048b4d00ff61e48d760004000100030000000b0000008d45fc3b4354 *720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10088b460c8947fc8b450089078b *46048945008d47f88945fc8b760883c5fce9e10300009083c7183b7b5c760ac7436c06000000ff *63f8c747ecf8f409088b45088947f08b45048947f48b46048947f8c747fcc4440a088d47ec8907 *8d77fc83c50c8b4500ff60f09004000100030000000b0000008d45fc3b4354720883c70c3b7b5c *760ac7436c03000000ff63fcc747f88c6b10088b460c8947fc8b450089078b46048945008d47f8 *8945fc8b760883c5fce94d0300009083c7183b7b5c760ac7436c06000000ff63f8c747ec8cf509 *088b45088947f08b45048947f48b46048947f8c747fce4440a088d47ec89078d77fc83c50c8b45 *00ff60ec90be54c7110883c50c8b4500ff60e889f6040000002400000083c71c3b7b5c760ac743 *6c07000000ff63f8c747e8c86b10088b450c8947ec8b45048947f08b45108947f4c747f88c6b10 *088b45108947fc8b450889078d47e88945108d47f889450c8b760c83c508e9941f06008b460889 *45fc8b4e04894d00bef4c51108c745f82cf6090883c5f8ff268d7600be00d2110883c50c8b4500 *ff60f089f68b750883c50ce9850100009083c7183b7b5c760ac7436c06000000ff63f8c747ec8c *6b10088b45048947f08b46088947f4c747f87cdc0b088b46048947fc8d47ec89078d77f883c510 *8b4500ff60ec90bcf60908b0f6090800000000030000002500000004000100020000000e000000 *8d45f43b43547303ff63fc8975f88b46088945fc8b45008b4e04894d0089c6c745f414f7090883 *c5f4ff269078f4090803000000120001008d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f88c6b10088b46088947fc8b460489078b460c8945f48d *47f88945f0bebcc5110883c5ece96d1e06009078f40908030000002400010083c71c3b7b5c760a *c7436c07000000ff63f8c747e820f709088b45048947ec8b450c8947f0c747f458f709088b4604 *8947f88b45088947fc8b460889078d47f489450c8d77e883c50ce91effffff89f68b4608894500 *8b7604c745fcb4f7090883c5fcff268d760004f80908a0f6090878f40908020000002500010078 *f4090804000100010000000c0001008d45f43b43547303ff63fc8b4e04894dfc8b550089750089 *d6c745f830f8090883c5f8ff268d7600be54c7110883c5048b4500ff60e889f683c7083b7b5c76 *0ac7436c02000000ff63f8c747fc34450a0889378d77fc83c5048b4500ff60e09078f8090868f8 *090800000000000000002500000083c7083b7b5c760ac7436c02000000ff63f8c747fc40f80908 *8b450889078b4e04894d048d77fcc74508b4f8090883c504e956ffffff89f6b4f8090880f60908 *14f60908d0f509083cf5090878f40908020000002500030078f409080b000200000001000b0003 *008d45f43b43547303ff63fc8b4d0089750089cec745fc0cf9090883c5fcff269074f409080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cd1110883 *c5f0e99818060074f4090800000200180007008d45f83b4354720883c7443b7b5c760ac7436c11 *000000ff63f8c747c0085c100856e8b104060083c4048d47c0894604c706245b1008c745f8d46d *10088d47c08945fcc747cc9cf40908c747d4b8f40908c747dc1cf90908c747e450dd0b088d47dc *8947e88d47f88947ec8d47d48947f08d47cc8947f4c747f848f909088d47e48947fc8d77e483c5 *f8e945e301009083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b45048947ec8b *45088947f08b46088947f4c747f814450a088b46048947fc8d47e889078d77f883c5108b4500ff *60e48d76008b750c83c510ff268b750c83c510ff2688f4090802000000150001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0bebcc5110883c5ece9721b06 *0089f680f4090803000000120005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f874fa09088b46048947fc8b460889078b460c8945f48d47f8 *8945f0bee4d1110883c5ece9151b06009080f4090804000100020000000e00050083c7183b7b5c *760ac7436c06000000ff63fcc747ecb0fa09088b46048947f08b45008947f48b46088947f8c747 *fc34450a088d47ec89078d77fc83c5048b4500ff60e09083c7143b7b5c760ac7436c05000000ff *63f8c747f010fb09088b450c8947f48b46048947f8c747fce4440a088d47f089078d77fc83c510 *8b4500ff60ec8d760004000100030000000b0000008d45fc3b4354720883c70c3b7b5c760ac743 *6c03000000ff63fcc747f88c6b10088b46088947fc8b450089078b460c8945008d47f88945fc8b *760483c5fce95d0900009083c7183b7b5c760ac7436c06000000ff63f8c747eca0fb09088b4504 *8947f08b450c8947f48977f8c747fce4440a088d47ec89078d77fc83c5108b4500ff60ec040001 *00030000000b0000008d45fc3b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec8c *6b10088b460c8947f08b45008947f4c747f88c6b10088b46088947fc8b450089078d47ec894500 *8d47f88945fc8b760483c5fce9ba08000089f683c7183b7b5c760ac7436c06000000ff63f8c747 *ec30fc09088b45048947f08b450c8947f48b46048947f8c747fce4440a088d47ec89078d77fc83 *c5108b4500ff60ec9000000000000000000000000088fc0908e4fb090800000000430000002500 *00008b450c8b4e04894d0c89c6c74500ecfc0908ff26b8203e110889450cbe4cd2110883c508e9 *131306008d760004000100030000000b0000008d45fc3b4354720883c70c3b7b5c760ac7436c03 *000000ff63fcc747f88c6b10088b46088947fc8b450089078d47f88945008b46048945fc8b760c *83c5fce9d90700009083c7183b7b5c760ac7436c06000000ff63f8c747ec24fd09088b450c8947 *f08b46048947f48b45048947f8c747fce4440a088d47ec89078d77fc83c5108b4500ff60ec9000 *000000000000000000000068fd090800fd090884f4090843000000250001008b450c89750c89c6 *c74500ccfd0908ff268d7600ccfd0908ccfd0908ccfd0908ecfc0908ccfd090884f40908430000 *00250001008b450c89750c89c6c7450000fe0908ff268d760054fb090800fe090800fe090800fe *090800fe090880f40908430000002500070080f4090803000000240007008b7508c7450034fe09 *08ff2688f4090802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f88c6b10088b46088947fc8b460489078b46048945f48d47f8 *8945f0bebcc5110883c5ece96d1706009080f4090803000000120005008d45ec3b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f858fe09088b46048947fc *8b460889078b460c8945f48d47f88945f0bee4d1110883c5ece9111706009080f4090804000100 *020000000e00050083c7183b7b5c760ac7436c06000000ff63fcc747ecb4fe09088b45008947f0 *8b46048947f48b46088947f8c747fc34450a088d47ec89078d77fc83c5048b4500ff60e09083c7 *143b7b5c760ac7436c05000000ff63f8c747f014ff09088b45048947f48b46048947f8c747fce4 *440a088d47f089078d77fc83c5148b4500ff60ec8d760083c504e9a0feffff58ff090898ff0908 *98ff090898ff090898ff090880f4090804000000250007008b46048945008b7508c745fcc0ff09 *0883c5fcff268d760088f4090802000000150001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e08894df48b56048955f0bebcc5110883c5ece90216060089f680f409080300000012 *0005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8e4ff09088b46088947fc8b460c89078d47f88945f48b46048945f0bee4d1110883c5ece9 *a51506009080f4090804000100020000000e00050083c7183b7b5c760ac7436c06000000ff63fc *c747ec20000a088b46048947f08b46088947f48b45008947f8c747fc34450a088d47ec89078d77 *fc83c5048b4500ff60e09083c7143b7b5c760ac7436c05000000ff63f8c747f080000a088b4504 *8947f48977f8c747fce4440a088d4ff0890f8d77fc83c5088b5500ff62ec89f688f40908020000 *00150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f88c6b10088b46088947fc8b460489078b46048945f48d47f88945f0bebcc5110883c5 *ece9b91406009080f4090803000000120005008d45ec3b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f80c010a088b46088947fc8b460c89078d47f88945 *f48b46048945f0bee4d1110883c5ece95d1406009080f4090804000100020000000e00050083c7 *183b7b5c760ac7436c06000000ff63fcc747ec68010a088b46048947f08b45008947f48b460889 *47f8c747fc34450a088d47ec89078d77fc83c5048b4500ff60e09083c7143b7b5c760ac7436c05 *000000ff63f8c747f0c8010a088b45048947f48b46048947f8c747fce4440a088d47f089078d77 *fc83c5088b4500ff60ec8d760080f4090802000000150001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df48b56048955f0bee4d1110883c5ece98e13060089f683c7143b7b *5c760ac7436c05000000ff63f8c747f058020a088b45048947f48b46048947f8c747fc34450a08 *8d47f089078d77fc83c5088b4500ff60e08d760088020a0800000000000000000c020a08c4000a *0880f4090801000000250005008b460489450c8b7508c74508e8020a0883c508ff268d7600e93b *fbffff8d7600e8020a0800030a0800030a08c0ff090800030a0880f40908030000002500070089 *75088b750cc7450028030a08ff269028030a0828030a0860fa090828030a0828030a0880f40908 *43000000250007008b450c89750c89c6c7450058030a08ff268d760058030a0858030a0858fa09 *0858030a0858030a0880f40908430000002500070089750c8b7508c745008c030a08ff26908c03 *0a080cfa09088c030a088c030a088c030a0880f40908830000002500070080f409080300000024 *0007008b750cc74500bc030a08ff2604000100030000000b0000008d45fc3b4354720883c7183b *7b5c760ac7436c06000000ff63fcc747ec8c6b10088b460c8947f08b45008947f4c747f88c6b10 *088b46088947fc8b450089078d47ec8945008d47f88945fc8b760483c5fce90a01000089f683c7 *183b7b5c760ac7436c06000000ff63f8c747ece0030a088b45088947f08b45048947f48b460489 *47f8c747fcc4440a088d47ec89078d77fc83c5148b4500ff60f09083c504e944ffffff7c040a08 *7c040a087c040a087c040a0838040a0880f4090804000000250007008b46048945008b750cc745 *fca4040a0883c5fcff268d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b *45048947ec8b46088947f08b450c8947f4c747f814450a088b46048947fc8d47e889078d77f883 *c5108b4500ff60e48d7600e9bbfeffff8d760008050a08bc040a0808050a0808050a08a4040a08 *80f40908030000002500070080f409080b000200000001000b0007008d45f43b43547303ff63fc *8975fc8b7500c745f830050a0883c5f8ff268d760080f409080000020018000f008d45f83b4354 *720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856e8c1f8050083c4048d47e0 *894604c706245b1008c745f8d46d10088d47e08945fcc747ec40050a08c747f4f8a60b08c747f8 *e4c51108c747fc54c711088d47ec89078d77f483c5f8e9f967060090bcc51108e4c51108000000 *00240000008b760ce9a8010600e0050a0800000200120001008d45f43b43547303ff63f8c745f8 *d46d10088975fcbee4c51108c745f4ec050a0883c5f4ff2689f6dc050a0804000100010000000c *0001008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10088b4500 *8947fc8b460489078d47f8894500bebcc5110883c5fce9910b060090dc050a0800000200180003 *008d45f83b4354720883c7203b7b5c760ac7436c08000000ff63f8c747e4085c100856e8a9f705 *0083c4048d47e4894604c706245b1008c745f8d46d10088d47e48945fcc747f000060a08c747fc *38060a088d47f089078d77fc83c5f8e9ef6606008d7600f4c51108030000002400000083c7183b *7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45088947f08b450c8947f4c747f88c6b10 *088b45048947fc8b450c89078d47ec89450c8d47f88945088b760c83c504e9d20e060089f6e806 *0a081600030000000000110001008d45fc3b43547308be14c61108ff63fcbef4c51108c745fcf4 *060a0883c5fcff268d7600f4c51108beb0c5110883c508ff6500908b750483c508e90900060090 *030000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45088947f0 *8b450c8947f4c747f88c6b10088b45048947fc8b450c89078d47ec89450c8d47f88945088b760c *83c504e92a0e060089f678070a0804000100020000000e0001008d45f43b43547303ff63fc8b4e *08894df88b56048955fcbef4c51108c745f49c070a0883c5f4ff2683c7183b7b5c760ac7436c06 *000000ff63f8c747ec8c6b10088b45088947f08977f4c747f8fc070a088d4fec894ffc8b550489 *178d77f883c50cff65008d760024080a0888070a0878070a0802000000250001008b4604894500 *8b7608c745fc78080a0883c5fcff268d760078080a087c070a0878070a08010000002500010078 *070a0804000100000001000b0001008d45f83b43547303ff63fc8b4d0089750089cec745fca408 *0a0883c5fcff269078070a0800000200180001008d45f83b4354720883c7143b7b5c760ac7436c *05000000ff63f8c747f0085c100856e84df5050083c4048d47f0894604c706245b1008c745f8d4 *6d10088d47f08945fcc747fcb4080a088d77fc83c5f8e99f6406008d760054d21108d4d1110848 *d1110850d11108e4c51108f4c5110804000100010000000c00000083c70c3b7b5c760ac7436c03 *000000ff63fcc747f87cdc0b088b46048947fc8b4d00890f8d77f883c5048b5500ff62ec40090a *0802000000150001008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fc5c090a088b460889078d47fc8945f48b46048945f0be48d1110883c5ece9 *330c06008d760040090a0804000100030000000b0001008d45fc3b4354720883c7183b7b5c760a *c7436c06000000ff63fcc747ec8c6b10088b460c8947f08b45008947f4c747f898090a088b4604 *8947fc8b450089078d47ec8945008d47f88945fc8b760883c5fce95202000089f683c7183b7b5c *760ac7436c06000000ff63f8c747ecf4090a088b45048947f08b45088947f48b46048947f8c747 *fcc4440a088d47ec89078d77fc83c50c8b4500ff60f09004000100030000000b0000008d45fc3b *4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10088b460c8947fc8b450089 *078d47f88945008b46048945fc8b760883c5fce9bd0100009083c7183b7b5c760ac7436c060000 *00ff63f8c747ec9c0a0a088b45048947f08b45088947f48b46048947f8c747fce4440a088d47ec *89078d77fc83c50c8b4500ff60ec90be54c7110883c50c8b4500ff60e889f60100010013000000 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f400d211088b760483c5f0e9a5060600 *9002000000150000008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f83c0b0a088b4e04894ffc8d57f88955f48b760883c5f0e95a06060089f604 *0000002400000083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b45108947ec8b *450c8947f08b45048947f4c747f86c0b0a088b450c8947fc8b450889078d47e88945108d47f889 *450c8b760c83c508e9080a06008b46088945fc8b4e04894d00bef4c51108c745f8b80b0a0883c5 *f8ff268d7600897500be54d2110883c5fce9cc0506002c0c0a082c0c0a0838090a080000000025 *000100b8583e1108894504bed4d11108c74508500c0a08e9bf0306008d7600500c0a080c0c0a08 *240b0a08e00a0a084c0a0a0838090a08020000002500270038090a080b000200000001000b0027 *008d45f43b43547303ff63fc8b4d0489750489cec745fc8c0c0a0883c5fcff269038090a080000 *0200120027008d45f83b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc9c0c0a088d77fc83c5f8e9d660060089f604000100020000000e0000008d45fc3b *4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8e4bb0b088b45008947fc8b460489 *078d47f88945008b760883c5fce9bf0406008d7600020000002400000083c70c3b7b5c760ac743 *6c03000000ff63f8c747f80c0d0a088b45088947fc8b4d04890f8d57f88955088b760c83c504e9 *7f0406008d760048090a0804000100010000000c0001008d45f83b43547303ff63fc8b4e04894d *fcbee4c51108c745f8540d0a0883c5f8ff2689f648090a0802000000150001008d45f03b435472 *0883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc9c0d0a088b4e04 *890f8d57fc8955f48b760883c5f0e9fb0306008d760044090a0804000100020000000e0003008d *45f83b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8cc0d0a088b45008947fc8b *460889078d47f8894500c745fc50d111088b760483c5f8e9b007060038090a0804000100000000 *0011003f0083c7183b7b5c760fbe2cc61108c7436c06000000ff63fcc747ecc80c0a08c747f820 *0e0a088d47ec8947fc8b4d00890f8d77f883c504ff65008d760048d11108b00e0a080200000015 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be48d1 *110883c5ece92607060089f6b00e0a0816000300000000001100010083c70c3b7b5c760fbe34c6 *1108c7436c03000000ff63fcc747f8c00e0a088b45088947fc8b4d00890f8d57f88955088b7504 *83c504e9ce02060089f63cd111080b000200000001000b000000be54c7110883c5088b4500ff60 *e889f60b000200000001000b0000008b75048b4500894504e99202060089f60400010002000000 *0e0000008d45f83b43547303ff63fc8b4d00894dfc8b56048955008b760883c5f8e96e06060089 *f616000300000001000b00000083c70c3b7b5c760ac7436c03000000ff63fcc747f8840f0a088b *45088947fc8b4d04890f8d57f88955088b750083c504e91f0206008d76003c0f0a080100010013 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cd1110883c5f0e9 *e80106003c0f0a0800000200180001008d45f83b4354720883c7443b7b5c760ac7436c11000000 *ff63f8c747c0085c100856e801ee050083c4048d47c0894604c706245b1008c745f8d46d10088d *47c08945fcc747cc4c0f0a08c747d4680f0a08c747dcb40f0a08c747e450dd0b088d47dc8947e8 *8d47f88947ec8d47d48947f08d47cc8947f4c747f8f80f0a088d47e48947fc8d77e483c5f8e995 *cc01009078d01108f4c511083cc61108bc100a0800000200120005008d45f03b43547303ff63f8 *c745f8d46d10088975fcc745f43cc61108be78d0110883c5f0e90b0106008d7600000000002400 *0000c7450000d211088b760c83c5fce9ee00060089f6c4100a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fcbe3cc61108c745f408110a0883c5f4ff2689f603000000 *2400000083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b450c89 *47f4c747f88c6b10088b45088947fc8b450c89078d47ec89450c8d47f88945088b760c83c504e9 *6e04060089f6c0100a0804000100020000000e0001008d45f43b43547303ff63fc8b4e08894df8 *8b56048955fcbef4c51108c745f458110a0883c5f4ff26c0100a0804000100010000000c000300 *8d45f43b4354720883c7243b7b5c760ac7436c09000000ff63fcc747e028110a08c747ec8c6b10 *088977f08b45008947f4c747f8b8110a088d47e08947fc8d47ec89078b45008945fc8d47f88945 *00c745f8f8d111088b760483c5f4e9930806008d76000000000024000000c7450000d211088b76 *0c83c5fce99aff050089f6c4100a0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fcbe3cc61108c745f45c120a0883c5f4ff2689f6030000002400000083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45 *088947fc8b450c89078d47ec89450c8d47f88945088b760c83c504e91a03060089f6c0100a0804 *000100020000000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108 *c745f4ac120a0883c5f4ff26c0100a0804000100010000000c00030083c7243b7b5c760ac7436c *09000000ff63fcc747e07c120a08c747ec8c6b10088b46048947f08b45008947f4c747f80c130a *088d47e08947fc8d47ec89078d77f883c504ff650090bc100a0800000200180007008d45f83b43 *54720883c7343b7b5c760ac7436c0d000000ff63f8c747d0085c100856e895ea050083c4048d47 *d0894604c706245b1008c745f8d46d10088d47d08945fcc747dcd4100a08c747e8f0110a088d47 *dc8947ecc747f044130a088d47e88947f4c747f8e4bb0b088d47f08947fc8d47e889078d77f883 *c5f8e9bb5906008d76004cc6110800000000240000008b7604e96cf305001c140a080000020018 *0001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f1 *e9050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe4cc61108c745f4 *28140a0883c5f4ff264cc6110800000000240000008b7608e9f8f2050090140a08000002001800 *01008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e87de9 *050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe4cc61108c745f49c *140a0883c5f4ff26e8d31108d4c51108e4c511083cc6110800000000240000008b760ce978f205 *000c150a0800000200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbee4c51108 *c745f41c150a0883c5f4ff2689f6000000002400000083c7083b7b5c760ac7436c02000000ff63 *f8c747fcb8050c08c707000000008d47fc8945008b762483c5fce978fc050004150a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fcbee8d31108c745f460150a0883c5 *f4ff2689f6000000002400000083c7083b7b5c760ac7436c02000000ff63f8c747fcb8050c08c7 *07010000008d47fc8945008b762483c5fce90cfc050004150a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fcbee8d31108c745f4cc150a0883c5f4ff2689f604000000 *120000008d45f43b4354720883c7103b7b5c760ac7436c04000000ff63f8c745f8d46d10088975 *fcc747f4c86b10088b460c8947f88b46088947fc8b460489078d47f48945f48b761083c5f4e907 *0100008d7600050100002400000083c7143b7b5c760ac7436c05000000ff63f8c747f038160a08 *8b450c8947f48b45148947f88b45048947fc8b450889078d47f0894514c745104cc711088b7608 *83c50ce93cff0500be3cc61108c7450090160a08ff2689f60000000024000000c745000cd21108 *8b760c83c5fce906fb050089f6be3cc61108c74514f0160a0883c514ff268d760004170a08d816 *0a0810150a08050100002500010010150a0805000000240001008b45148945fc8b4d10894df88b *7608c745002c170a0883c5f4e9befe050089f610150a0804000000240001008b460c8945008b76 *04c745fc38170a0883c5fcff268d760004150a0804000100020000000e0009008d45e03b435473 *03ff63fc8975f48b4e08894df88b56048955fcbee8d31108c745f064170a0883c5f0ff26900000 *00002400000083c7083b7b5c760ac7436c02000000ff63f8c747fcb8050c08c707010000008d47 *fc8945008b762483c5fce918fa050004150a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcbee8d31108c745f4c0170a0883c5f4ff2689f68b750883c518e96def0500 *9002000000240000008b7614e9d4fd050004150a0802000000150001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e08894df08b56048955f4bee8d31108c745ec38180a0883c5ecff *2689f683c7183b7b5c760ac7436c06000000ff63f8c747ec4c180a088b450c8947f08b45188947 *f4c747f88c6b10088b45148947fc8b460489078d47ec8945188b46088945148d47f88945108b75 *0483c510e9c001000080180a0824180a0804150a0806010000250001008b45148b4e04894d1489 *c6c74500e8180a08ff2683c70c3b7b5c760ac7436c03000000ff63f8c747f88c6b10088b460489 *47fc8b4d14890f8d57f88955108b750483c510e9630100008d76008b750883c518e95dee050090 *02000000240000008b7604e9c4fc05000c150a0804000100010000000c0001008d45f83b435473 *03ff63fc8b4e04894dfcbee4c51108c745f848190a0883c5f8ff2689f60c150a08030000002400 *010083c7143b7b5c760ac7436c05000000ff63f8c747f060190a088b45088947f4c747f88c6b10 *088b45048947fc8b450c89078d47f089450c8d47f88945088b760883c504e93cfc0500897514be *3cc61108c7450c90190a0883c50cff2602000000240000008b7604e918fc05000c150a08040001 *00010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbee4c51108c745f8f4190a0883 *c5f8ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f434450a088b46048947f8c747 *fc0c1a0a088d4ff4890f8d77fc83c51cff6500301a0a08d8190a0834190a08fc180a08e8180a08 *04150a080600000025000d0004150a0816000300030000000b000d008d45f03b43547303ff63fc *8975f48b460c8945f88b46088945fc8b45008b4e04894d0089c6c745f0841a0a0883c5f0ff268d *760008150a0804000100030000000b0001008d45f83b4354720883c70c3b7b5c760ac7436c0300 *0000ff63fcc747f88c6b10088b460c8947fc8b460489078b45008945fcc74500d4c511088d47f8 *8945f88b760883c5f8e972ffffff89f608150a08030000002400010083c7103b7b5c760ac7436c *04000000ff63f8c747f4d81a0a088b450c8947f88b45048947fc8b450889078d47f489450cc745 *0850c711088b760483c504e9a2fa050089f604150a080b000200010000000c000f008d45f83b43 *54720883c7403b7b5c760ac7436c10000000ff63fcc747c49c150a08c747d008160a08c747dc8c *170a088d47c48947e08d47d08947e4c747e8fc170a08c747f4941a0a088d47dc8947f88d47e889 *47fc8b450489078d47f48945fc8b4604894504be3cc61108c745f8301b0a0883c5f8ff26900415 *0a080000020018000f008d45f83b4354720883c7203b7b5c760ac7436c08000000ff63f8c747e4 *085c100856e825e2050083c4048d47e4894604c706245b1008c745f8d46d10088d47e48945fcc7 *47f030150a08c747fc841b0a088d47f089078d77fc83c5f8e96b5106008d76003cc61108beb0c5 *110883c508ff65009001000000240000008b760ce97cf50500be3cc61108c74500841c0a08ff26 *89f68c1c0a08701c0a086c1c0a0801000000250001006c1c0a0804000100010000000c0001008d *45f43b43547303ff63fc8b4d00894df88b7604c745fcb01c0a0883c5f4e925f50500906c1c0a08 *010000002400010083c7083b7b5c760ac7436c02000000ff63f8c747fcc01c0a088b450489078d *4ffc894d04c745004cc711088b760483c5fce9eef8050089f66c1c0a0804000100000000001100 *01008d45f83b43547308be8cc61108ff63fcbe3cc61108c745fcf01c0a0883c5fcff268d76003c *c61108beb0c5110883c508ff65009001000000240000008b760ce98cf40500be3cc61108c74500 *741d0a08ff2689f67c1d0a08601d0a085c1d0a0801000000250001005c1d0a0802000000240001 *008b45088945008b4d04894dfc8b7608c74504a01d0a0883c5f8e94af8050089f65c1d0a080400 *0100020000000e0001008d45f03b43547303ff63fc8b4e08894dfc8b7604c745f8ac1d0a0883c5 *f8ff265c1d0a08020000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f8dc1d0a *088b45048947fc8b4d08890f8d57f8895508c745044cc711088b7604e9d3f705008d76005c1d0a *080b00020000000000110001008d45fc3b43547308be94c61108ff63fcbe3cc61108c745fc081e *0a0883c5fcff268d76003cc61108c4010000240000008b45048945108b760c83c50ce973f30500 *8d7600be3cc61108c74500841e0a08ff2689f6beb0c5110883c514ff650090beb0c5110883c518 *ff650090050300002400000083c7103b7b5c760ac7436c04000000ff63f8c747f4c86b10088b45 *0c8947f88b45088947fc8b450489078d47f4894514c745104cc711088b760883c50ce90af70500 *89f6be3cc61108c74500c81e0a08ff2689f60c1f0a08b41e0a08781e0a08050300002500010078 *1e0a0805000000240001008b45108945fc8b4d14894df88b7608c74500301f0a0883c5f4e9baf6 *050089f68b46088945008b4d0c8b560489550c89cec745fc3c1f0a0883c5fcff268d76005c1f0a *08a81e0a08781e0a0804000000250001008b46088945048b4d108b560489551089cec74500901f *0a08ff2689f6901f0a08981e0a08781e0a080400000025000100781e0a080b000200020000000e *0001008d45e43b43547303ff63fc8b46088945f88975fc8b45008b4e04894d0089c6c745f4c01f *0a0883c5f4ff269004000100020000000e0000008d45fc3b43547303ff63fc8b4e08894dfc8b76 *0483c5fcebaf8d7600020000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f808 *200a088b45048947fc8b4d08890f8d57f8895508c7450450c711088b7604e9aff505008d760078 *1e0a080b00020000000000110001008d45fc3b4354720883c70c3b7b5c760fbe9cc61108c7436c *03000000ff63fcc747f8d01f0a088b45008947fc8b450489078d47f8894500be3cc61108c745fc *2c200a0883c5fcff263cc611080000000024000000c7450000d211088b760c83c5fce92af10500 *89f6be3cc61108c74508cc200a0883c508ff268d76000000000024000000c7450000d211088b76 *0c83c5fce9faf0050089f6be3cc61108c7450cfc200a0883c50cff268d76000200000024000000 *83c70c3b7b5c760ac7436c03000000ff63f8c747f87cdc0b088b45048947fc8b4d08890f8d57f8 *8955088b760c83c504e9a7f005008d7600c0200a0804000100010000000c0001008d45f83b4354 *7303ff63fc8b4e04894dfcbe3cc61108c745f82c210a0883c5f8ff2689f6c0200a080300000024 *00010083c7143b7b5c760ac7436c05000000ff63f8c747f074210a088b450c8947f4c747f88c6b *10088b45048947fc8b450889078d47f089450c8d47f88945088b760483c504e928f40500c0200a *0803000000120001008d45e83b43547303ff63f8c745f8d46d10088975fc8b460c8945ec8b4608 *8945f08b46048945f4be3cc61108c745e8a4210a0883c5e8ff26c0200a08030000002400010083 *c7103b7b5c760ac7436c04000000ff63f8c747f4f8210a088b450c8947f88b45048947fc8b4508 *89078d47f489450cc745084cc711088b760883c504e996f3050089f6be3cc61108c745003c220a *08ff2689f680220a0810210a08c0200a0803000000250001008b46048945f88b46088945008b45 *088b4e04894d0889c6c745fca4220a0883c5f4e93eef050089f6a4220a08e0200a08c0200a0802 *00000025000100c0200a0804000100010000000c0001008d45ec3b43547303ff63fc8975fc8b4d *008b560489550089cec745f8e0220a0883c5f8ff268d7600c0200a0801000100130001008d45f8 *3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fcf0220a *088b4e04890f8d77fc83c5f8e9754a06009004000100010000000c0000008d45fc3b43547303ff *63fc8b760483c5fce986ee050089f6010000002400000083c7083b7b5c760ac7436c02000000ff *63f8c747fc6c230a088b450489078d4ffc894d04c7450050c711088b760483c5fce952f2050089 *f6c0200a080400010000000000110001008d45f83b4354720883c70c3b7b5c760fbea4c61108c7 *436c03000000ff63fcc747f824230a088b4d00894ffc8d57f8895500be3cc61108c745fc8c230a *0883c5fcff26903cc611083cc61108beb0c5110883c50cff650090020000002400000083c70c3b *7b5c760ac7436c03000000ff63f8c747f87cdc0b088b45048947fc8b4d08890f8d57f88955088b *760c83c504e99fed05008d76001c240a0804000100010000000c0001008d45f83b43547303ff63 *fc8b4e04894dfcbe3cc61108c745f834240a0883c5f8ff2689f618240a0801000100130001008d *45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e905ffffff9018240a08 *020000002400030083c7143b7b5c760ac7436c05000000ff63f8c747f07c240a088b45088947f4 *c747f8ac240a088b45048947fc8d47f08945088d47f88945048b7604e9f8f00500be3cc61108c7 *4500dc240a08ff2689f61c250a0820240a0818240a08020000002500030018240a080400010001 *0000000c0003008d45f03b43547303ff63fc8b4d00894df48b56048955fc8b7604c745f840250a *0883c5f0e98fec05008d760018240a08010000002400030083c7083b7b5c760ac7436c02000000 *ff63f8c747fc50250a088b450489078d4ffc894d04c745004cc711088b760483c5fce956f00500 *89f618240a080400010000000000110003008d45f83b43547308beacc61108ff63fcbe3cc61108 *c745fc88250a0883c5fcff268d760050d511083cc611080000000024000000c745000cd211088b *760c83c5fce9f2eb050089f6be3cc61108c7450404260a0883c504ff268d760000000000240000 *00c745000cd211088b760c83c5fce9c2eb050089f6be3cc61108c7450834260a0883c508ff268d *7600020000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f88c6b10088b450889 *47fc8b4d04890f8d57f8895508c745044cc711088b7608e977ef05008d7600be3cc61108c74500 *64260a08ff2689f6a0260a0848260a08f8250a0802000000250001008b46048945f88b4e08894d *00be50d51108c745fcc4260a0883c5f4e924eb0500c4260a0818260a08f4250a08010000002500 *0300f4250a0804000100000001000b0003008d45f03b43547303ff63fc8b4d0089750089cec745 *fcf8260a0883c5fcff2690f4250a0800000200120003008d45f83b4354720883c7083b7b5c760a *c7436c02000000ff63f8c745f8d46d10088975fcc747fc08270a088d77fc83c5f8e96a46060089 *f604000100010000000c0000008d45fc3b43547303ff63fc8b760483c5fce97aea050089f60100 *00002400000083c7083b7b5c760ac7436c02000000ff63f8c747fc78270a088b450489078d4ffc *894d04c7450050c711088b760483c5fce946ee050089f6f4250a0800000200180003008d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e851d6050083c4048d *47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f834270a088d47f88945f4be3c *c61108c745f098270a0883c5f0ff268d7600f4c511083cc6110801000000240000008b760ce9b0 *e9050044280a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4be3cc61108c745f050280a0883c5f0ff26030000002400000083c7183b7b5c760ac7436c *06000000ff63f8c747ec8c6b10088b45088947f08b450c8947f4c747f88c6b10088b45048947fc *8b450c89078d47ec89450c8d47f88945088b760c83c504e92eed050089f640280a080400010002 *0000000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f498 *280a0883c5f4ff2640280a080b000200000000001100030083c7183b7b5c760fbec4c61108c743 *6c06000000ff63fcc747ec64280a088b45008947f0c747f8f8280a088d4fec894ffc8b55048917 *8d77f883c508ff650090f4c511083cc611080000000024000000c745000cd211088b760c83c5fc *e976e8050089f674290a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fcbe3cc61108c745f480290a0883c5f4ff2689f674290a08010000002400010083c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8a0290a088b45048945008d4ff8894d048b760883c5fce910ec *050074290a0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be3cc61108c745f0d4290a0883c5f0ff260000000024000000c745000cd211088b760c83c5 *fce9b2e7050089f674290a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fcbe3cc61108c745f4442a0a0883c5f4ff2689f6030000002400000083c7183b7b5c760ac743 *6c06000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45088947 *fc8b450c89078d47ec89450c8d47f88945088b760c83c504e932eb050089f670290a0804000100 *020000000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f4 *942a0a0883c5f4ff2670290a0804000100000000001100030083c7243b7b5c760fbeccc61108c7 *436c09000000ff63fcc747e0102a0a088b45008947e4c747ec642a0a08c747f8f42a0a088d4fe0 *894ffc8d57ec89178d77f883c504ff650089f63cc611084cc611080000000024000000c745000c *d211088b760c83c5fce972e6050089f6742b0a0800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fcbe3cc61108c745f4842b0a0883c5f4ff2689f601000000240000008b76 *04e92ce60500782b0a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be4cc61108c745f0d42b0a0883c5f0ff26742b0a08010000002400030083c7183b *7b5c760ac7436c06000000ff63f8c747eca42b0a08c747f8e82b0a088b45048947fc8d4fec894d *048d57f88955008b760883c5fce9b7e905008d7600742b0a080400010000000000110003008d45 *f83b43547308bed4c61108ff63fcbe3cc61108c745fc202c0a0883c5fcff268d7600d4c611083c *c61108942c0a0801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df483c5f4e9a5ffffff90942c0a08010000002400010083c70c3b7b5c760ac7436c03000000 *ff63f8c747f8a82c0a088b45048947fc8b4d04894d008d57f88955048b760883c5fce906e90500 *89f6942c0a080400010000000000110003008d45f83b43547308bedcc61108ff63fcbe3cc61108 *c745fcd82c0a0883c5fcff268d760078d011083cc611084cc61108442d0a080000020012000300 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f43cc61108be78d0110883c5f0e983e4 *05008d760002000000240000008b7608e97ce80500482d0a0802000000150001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be3cc61108c745ec902d0a08 *83c5ecff2689f6482d0a08020000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747 *f8a42d0a088b45088947fc8b4d04890f8d57f88955088b760483c504e9efe305008d7600482d0a *0802000000150003008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be4cc61108c745ece42d0a0883c5ecff2689f6482d0a080b000200010000000c0003008d *45f83b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8282e0a088b45008947fc8b *450489078d47f8894504c745fcf8d111088b760483c5f8e934ec0500442d0a0800000200180007 *008d45f83b4354720883c7203b7b5c760ac7436c08000000ff63f8c747e4085c100856e871cf05 *0083c4048d47e4894604c706245b1008c745f8d46d10088d47e48945fcc747f05c2d0a08c747fc *6c2e0a088d47f089078d77fc83c5f8e9b73e06008d7600e4c61108f4c511083cc61108202f0a08 *02000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b560489 *55f0bee4c6110883c5ece9aee6050089f60000000024000000c7450000d211088b760c83c5fce9 *86e2050089f6282f0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *be3cc61108c745f4702f0a0883c5f4ff2689f6030000002400000083c7183b7b5c760ac7436c06 *000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45088947fc8b *450c89078d47ec89450c8d47f88945088b760c83c504e906e6050089f6242f0a08040001000200 *00000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f4c02f *0a0883c5f4ff26202f0a080b000200000000001100070083c7243b7b5c760fbef4c61108c7436c *09000000ff63fcc747e0382f0a088b45008947e48b45048947e8c747ec902f0a08c747f820300a *088d47e08947fc8d47ec89078d77f883c508ff65003cc611084cc6110801000000240000008b76 *0ce94ce10500a4300a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be3cc61108c745f0b4300a0883c5f0ff26a4300a08020000002400010083c70c3b *7b5c760ac7436c03000000ff63f8c747f8c8300a088b45088947fc8d4ff8894d088b7608e9e7e4 *05008d7600a4300a0804000100010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbe *3cc61108c745f800310a0883c5f8ff2689f6a4300a08020000002400010083c7083b7b5c760ac7 *436c02000000ff63f8c747fc40310a088b450489078b4d08894d048d57fc8955088b7604e972e4 *050089f6a4300a0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e *08894df08b56048955f4be3cc61108c745ec70310a0883c5ecff2689f6a4300a08020000002400 *010083c70c3b7b5c760ac7436c03000000ff63f8c747f8b0310a088b45048947fc8b4d08890f8d *57f88955088b760483c504e9e3df05008d7600a4300a080b00020000000000110003008d45fc3b *43547308befcc61108ff63fcbe4cc61108c745fcf0310a0883c5fcff268d76003cc611084cc611 *0801000000240000008b760ce994df05005c320a0801000100130001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f06c320a0883c5f0ff265c320a0802 *0000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f880320a088b45088947fc8d *4ff8894d088b7608e92fe305008d76005c320a0804000100010000000c0001008d45f83b435473 *03ff63fc8b4e04894dfcbe3cc61108c745f8b8320a0883c5f8ff2689f65c320a08020000002400 *010083c7083b7b5c760ac7436c02000000ff63f8c747fcf8320a088b450489078b4d08894d048d *57fc8955088b7604e9bae2050089f65c320a0802000000150001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e08894df08b56048955f4be3cc61108c745ec28330a0883c5ecff2689 *f65c320a08020000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f868330a088b *45048947fc8b4d08890f8d57f88955088b760883c504e92bde05008d76005c320a080b00020000 *000000110003008d45fc3b43547308be04c71108ff63fcbe4cc61108c745fca8330a0883c5fcff *268d7600f4c511083cc61108030000002400000083c7103b7b5c760ac7436c04000000ff63f8c7 *47f4c86b10088b45048947f88b45088947fc8b450c89078d47f489450c8b760c83c508e9a9dd05 *009018340a0804000100020000000e0001008d45f43b43547303ff63fc8b4e08894df88b560489 *55fcbe3cc61108c745f424340a0883c5f4ff2618340a08030000002400010083c70c3b7b5c760a *c7436c03000000ff63f8c747f870340a088b45048947fc8b4d0c890f8d57f889550c8b760483c5 *04e93be105008d760018340a0804000100020000000e0001008d45f43b43547303ff63fc8b4e08 *894df88b56048955fcbe3cc61108c745f4a4340a0883c5f4ff2618340a08030000002400010083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8ec340a088b45088947fc8b450489078b450c89 *45088d47f889450c8b760483c504e9b9e005009018340a0803000000120001008d45e83b435473 *03ff63f8c745f8d46d10088975fc8b460c8945ec8b46088945f08b46048945f4be3cc61108c745 *e820350a0883c5e8ff2601000000240000008b760ce958dc050018340a0801000100130001008d *45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f0a8350a0883 *c5f0ff26030000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45 *048947f08b450c8947f4c747f88c6b10088b45088947fc8b450c89078d47ec89450c8d47f88945 *088b760c83c504e9d6df050089f614340a0804000100020000000e0001008d45f43b43547303ff *63fc8b4e08894df88b56048955fcbef4c51108c745f4f0350a0883c5f4ff2614340a0804000100 *020000000e00030083c7283b7b5c760ac7436c0a000000ff63fcc747dc68350a088b46048947e0 *8b46088947e48b45008947e8c747ecbc350a088b45008947f0c747f850360a088d47dc8947fc8d *47ec89078d77f883c504ff65009014340a08030000002400030083c70c3b7b5c760ac7436c0300 *0000ff63f8c747f888360a088b45088947fc8b450489078b450c8945088d47f889450c8b760483 *c504e9f1de05009014340a0802000000150003008d45e83b43547303ff63f8c745f8d46d100889 *75fc8975ec8b4e08894df08b56048955f4be3cc61108c745e8e8360a0883c5e8ff268d76001434 *0a080b000200000000001100030083c70c3b7b5c760fbe0cc71108c7436c03000000ff63fcc747 *f830370a088b45008947fc8b4d04890f8d77f883c504e9f0cf05000cc71108f4c511083cc61108 *ac370a0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df4 *8b56048955f083c5f0e98bffffff8d760001000000240000008b760ce908da0500b4370a080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cc61108c7 *45f0f8370a0883c5f0ff26030000002400000083c7183b7b5c760ac7436c06000000ff63f8c747 *ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45088947fc8b450c89078d47ec89 *450c8d47f88945088b760c83c504e986dd050089f6b0370a0804000100020000000e0001008d45 *f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f440380a0883c5f4ff26ac *370a0816000300000000001100070083c7243b7b5c760fbe14c71108c7436c09000000ff63fcc7 *47e0c4370a088b45008947e48b45048947e8c747ec0c380a088b45088947f0c747f8a0380a088d *47e08947fc8d47ec89078d77f883c50cff650089f6f4c511083cc6110804000100030000000b00 *000083c7103b7b5c760ac7436c04000000ff63fcc747f4c86b10088b46088947f88b46048947fc *8b450089078d47f48945008b760ce908020000040000002400000083c7103b7b5c760ac7436c04 *000000ff63f8c747f440390a088b45088947f88b45108947fc8b450489078d47f48945108b7604 *83c508e959dc05009030390a0804000100030000000b0001008d45f03b43547303ff63fc8b460c *8945f48b46088945f88b46048945fcbe3cc61108c745f080390a0883c5f0ff2689f630390a0804 *0000002400010083c7103b7b5c760ac7436c04000000ff63f8c747f4cc390a088b450c8947f88b *45088947fc8b450489078b451089450c8d47f48945108b760483c508e9cbdb05008d760030390a *0804000000120001008d45e43b43547303ff63f8c745f8d46d10088975fc8b46108945e88b460c *8945ec8b46088945f08b46048945f4be3cc61108c745e4083a0a0883c5e4ff2689f60100000024 *0000008b760ce960d7050030390a0801000100130001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be3cc61108c745f0a03a0a0883c5f0ff26030000002400000083c718 *3b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b *10088b45088947fc8b450c89078d47ec89450c8d47f88945088b760c83c504e9deda050089f62c *390a0804000100020000000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbe *f4c51108c745f4e83a0a0883c5f4ff262c390a0804000100020000000e00030083c72c3b7b5c76 *0ac7436c0b000000ff63fcc747d8583a0a088b46048947dc8b46088947e08b45008947e48977e8 *c747ecb43a0a088b45008947f0c747f8483b0a088d47d88947fc8d47ec89078d77f883c504ff65 *0089f602000000240000008b7604e92cda05002c390a080b00020000000000110003008d45fc3b *4354720883c70c3b7b5c760fbe1cc71108c7436c03000000ff63fcc747f8803b0a088b45048947 *fc8b450089078d47f8894504be3cc61108c745fce03b0a0883c5fcff261cc71108f4c511083cc6 *1108403c0a0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0889 *4df48b56048955f083c5f0e977ffffff8d760001000000240000008b760ce974d50500483c0a08 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cc611 *08c745f08c3c0a0883c5f0ff26030000002400000083c7183b7b5c760ac7436c06000000ff63f8 *c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45088947fc8b450c89078d47 *ec89450c8d47f88945088b760c83c504e9f2d8050089f6443c0a0804000100020000000e000100 *8d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f4d43c0a0883c5f4ff *26403c0a0816000300000000001100070083c7243b7b5c760fbe24c71108c7436c09000000ff63 *fcc747e0583c0a088b45008947e48b45048947e8c747eca03c0a088b45088947f0c747f8343d0a *088d47e08947fc8d47ec89078d77f883c50cff650089f67cc6110878d011083cc61108c43d0a08 *00000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc745f43cc61108be78d0 *110883c5f0e907d405008d760003000000120000008d45e83b43547303ff63f8c745f8d46d1008 *8975fc8b4e0c894df48b56088955f0c745ecf8d111088b760483c5e8e9a5dc0500900000000024 *000000c7450000d211088b760c83c5fce9aed3050089f6c83d0a0800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f4483e0a0883c5f4ff2689f6c83d0a *08010000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f8683e0a088b45048945 *008d4ff8894d048b760883c5fce948d70500c83d0a0801000100130001008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f09c3e0a0883c5f0ff26c03d0a08 *03000000120005008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d *10088975fcc747e80c3e0a088b46048947ec8b460c8947f08977f4c747f8d83e0a088b46088947 *fc8d47e88945f48d47f88945f0be7cc6110883c5ece9a4d60500c03d0a080b000200010000000c *00050083c7103b7b5c760ac7436c04000000ff63fcc747f4103f0a088b46048947f88b4d04894f *fc8b550089178d77f483c504e9e7c705008d7600c03d0a0800000200180007008d45f83b435472 *0883c7203b7b5c760ac7436c08000000ff63f8c747e4085c100856e869be050083c4048d47e489 *4604c706245b1008c745f8d46d10088d47e48945fcc747f0d83d0a08c747fc803f0a088d47f089 *078d77fc83c5f8e9af2d06008d7600f4c511083cc6110828400a0800000200180003008d45f83b *4354720883c71c3b7b5c760ac7436c07000000ff63f8c747e8085c100856e8f1bd050083c4048d *47e8894604c706245b1008c745f8d46d10088d47e88945fcc747f4f8a60b08c747f83cc61108c7 *47fcb0c51108c70714c611088d77f483c5f8e92f2d06008d760004000100000000001100000083 *c7083b7b5c760fbe4cc71108c7436c02000000ff63fcc747fcc4440a088b450089078d77fc83c5 *048b4d00ff61f09004000100000000001100000083c7083b7b5c760fbe50c71108c7436c020000 *00ff63fcc747fce4440a088b450089078d77fc83c5048b4d00ff61ec900b000200000000001100 *000083c70c3b7b5c760fbe58c71108c7436c03000000ff63fcc747f814450a088b45008947fc8b *4d04890f8d77f883c5088b5500ff62e48d760004000100000000001100000083c7083b7b5c760f *be5cc71108c7436c02000000ff63fcc747fc34450a088b450089078d77fc83c5048b4d00ff61e0 *9083c7083b7b5c760ac7436c02000000ff63f8c747fcc4440a088b460489078d77fc83c5048b4d *00ff61f089f683c7083b7b5c760ac7436c02000000ff63f8c747fce4440a088b460489078d77fc *83c5048b4d00ff61ec89f6cc410a08a0410a080000000000000000250000008b7604c745000c42 *0a08ff26be54c7110883c5048b4500ff60e889f6000000002400000083c70c3b7b5c760ac7436c *03000000ff63f8c747f814450a088b46048947fc8b4e08890f8d77f883c5048b5500ff62e48b76 *04c7450030420a08ff2683c7083b7b5c760ac7436c02000000ff63f8c747fc34450a088b460489 *078d77fc83c5048b4d00ff61e089f66c420a0860420a080000000000000000250000008b7604c7 *4500ac420a08ff26ac420a0818420a080000000000000000250000008b7604c74500cc420a08ff *26cc420a080c420a080000000000000000250000000400010000000000110000008b7500c74500 *ec420a08ff2683c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b088b46048947f8c747 *fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f09083c7103b7b5c760ac7436c04000000ff *63f8c747f410dd0b088b46048947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f0 *9083c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c747f808d21108c747fc10dd0b *088d47f489078d77fc83c5048b4d00ff61ec83c7243b7b5c760ac7436c09000000ff63f8c747e0 *d8dc0b088b46048947e48b46088947e8c747ecf0dc0b088d47e08947f0c747f410dd0b088d47ec *8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec9083c7183b7b5c760ac7436c *06000000ff63f8c747ec10dd0b088b46048947f0c747f410dd0b088d47ec8947f8c747fc10dd0b *088d47f489078d77fc83c5048b4500ff60ec04440a08ac430a0874430a083c430a0804430a0800 *00000000000000250000000400010000000000110000008b7500c7450068440a08ff2604000100 *00000000110000008b7500e908c30500040001000000000011000000e9e7ffffff8d7600040001 *0000000000110000008b7500e9e0c2050001000000020000008b4500ff60f089f6010000000900 *00008b4500ff60f089f601000000020001008b4500ff60ec89f601000000090001008b4500ff60 *ec89f6000000000a0002008b4500ff60e889f602000000040003008b4500ff60e489f602000000 *090003008b4500ff60e489f601000000020004008b4500ff60e089f601000000090004008b4500 *ff60e09090e900000000833d74c71108007564c70574c7110801000000c74500cd640a0883c504 *c7450004a10b0883c504c745009c360c0883c504c74500f8400c0883c504c745009c8c0b0883c5 *04c7450035180b0883c504c7450050be0b0883c504c745005c460c0883c504c7450090310c0883 *c50483c5fcff6500ccd1110880d11108c4450a0800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e855b8050083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e9d9cb05009084 *d01108dcd2110830460a0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8e9b7050083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f4dcd21108be84d0110883c5f0e96dcb05009090d01108dcd211089c46 *0a0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e87db7050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4dcd21108be90d0110883c5f0e901cb05009080d01108dcd2110808470a0800000200180003 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e811b705 *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be80d0 *110883c5f0e995ca0500908cd01108dcd2110874470a0800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a5b6050083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be8cd0110883c5f0e929ca05 *0090d4d111089cc811081cc8110864c81108dcd2110898d51108a0d511080000000024000000c7 *4500e0d011088b760c83c5fce9f2c9050089f6bedcd21108c7450804480a0883c508ff268d7600 *ec470a0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df4 *8b56048955f0be64c8110883c5ece9aecd050089f6e8470a0802000000150003008d45ec3b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f838480a088b46 *048947fc8b46088907c745f400d211088d47f88945f0be1cc8110883c5ece950cd05008b450889 *45108b750483c510e9870100008d760083c7083b7b5c760ac7436c02000000ff63f8c747fc94b9 *0b088b451089078d4ffc894d108b750c83c50ce901c9050090d8480a08c4480a08000000000400 *00002500000004000100040000000b0000008d45f03b43547303ff63fc8b46108945f48b460c89 *45f88b46088945fc8b45008b4e04894d0089c6c745f01c490a0883c5f0ff26f4470a0801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be98d5110883c5f0 *e978c80500f4470a08030000002400010083c7203b7b5c760ac7436c08000000ff63f8c747e428 *490a088b450c8947e88b460c8947ec8b45048947f08b45088947f4c747f868490a088b450c8947 *fc8d47e489450c8d47f88945088b760483c504e923cc05008d760083c70c3b7b5c760ac7436c03 *000000ff63f8c747f874480a088b46048947fc8b450889078b46088945008d47f8894508bedcd2 *1108c745fc9c490a0883c5fcff268d7600f4490a0818480a08e8470a080200000025000f00e847 *0a0804000100010000000c000f008d45f43b43547303ff63fc8975fc8b4d008b560489550089ce *c745f84c4a0a0883c5f8ff268d7600e4470a0801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be9cc8110883c5f0e950c70500e4470a0804000100010000 *000c00010083c70c3b7b5c760ac7436c03000000ff63fcc747f8904a0a088b45008947fc8d4ff8 *894d008b7604e967ffffff8d7600e0470a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b97c3e1108894df4bed4d1110883c5f0e9f7c405008d7600e0470a08 *00000200120041008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8044b0a088d4ff8894df4bea0d5110883c5f0e98ac6050089f6e0470a080100 *00002400430083c7143b7b5c760ac7436c05000000ff63f8c747f0c84a0a088b45048947f4c747 *f8404b0a088d4ff0894d048d57f88955008b760483c5fce94bca05008d7600e0470a0804000100 *0000000011007f008d45f83b4354720883c7083b7b5c760fbed8c71108c7436c02000000ff63fc *c747fc5c4a0a088b4d00890f8d57fc895500bedcd21108c745fc8c4b0a0883c5fcff2689f6d4d1 *110890d1110844d11108dcd2110810d0110818d0110804d0110800d01108fccf110808d0110890 *d2110898d2110874d0110888d2110878d2110838d11108e4d5110888c7110898c71108204c0a08 *13000000ffff0700244c0a081200000007060200244c0a081200000007060200244c0a08120000 *0003060200244c0a0812000000030402004c4c0a0803000000120001008d45e83b43547303ff63 *f8c745f8d46d10088975fc8b46088945f48b46048945f08b460c8945ecbe98d2110883c5e8e9fc *cd05004c4c0a0806000000120001008d45ec3b4354720883c7243b7b5c760ac7436c09000000ff *63f8c745f8d46d10088975fcc747e00c6c10088b46148947e48b46048947e88b46108947ec8b46 *088947f0c747f4b44c0a088b46088947f88b460c8947fc8b461089078d47e08945f48d47f48945 *f08b761883c5ece9aec8050089f6244c0a08120000000100020001000000240000008b45048945 *00c7450478c711088b761083c5fce980c80500244c0a0801000100130001008d45ec3b43547303 *ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f07c4d0a0883c5f0ff26684d0a *08010001001300ffff8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8a04d0a088b4e04894ffc8d57f88955f4be98c7110883c5f0e9ecc305009c *4c0a0804000100050000000b00ffff8d45f83b4354720883c7283b7b5c760ac7436c0a000000ff *63fcc747dcf44c0a088b46048947e08b46088947e48b45008947e88b460c8947ec8b46108947f0 *8b46148947f4c747f8d84d0a088b45008947fc8d47dc8945008d47f88945fcbe44d1110883c5f8 *e97dc7050090484c0a0802000000150001008d45e83b43547303ff63f8c745f8d46d10088975fc *c745f480c711088b4e08894df08b56048955ecbe90d2110883c5e8e90bcc05008d7600904c0a08 *040000002400ffff83c7243b7b5c760ac7436c09000000ff63f8c747e02c4e0a088b45088947e4 *8b45108947e88b450c8947ec8b45048947f08b46088947f4c747f8a44e0a088b45088947fc8b45 *1089078d47e08945108d47f889450c8b760483c508e9ccc60500844c0a0816000300000001000b *00ffff8d45f83b43547303ff63fc8975fcbedcd21108c745f8e84e0a0883c5f8ff2690784c0a08 *000002001200ffff8d45f83b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d *10088975fcc747fc584f0a088d77fc83c5f8e91a1e060089f6204c0a0811000000fdf30100204c *0a0811000000fdf3010001000100130000008d45f03b43547303ff63f8c745f8d46d10088975fc *c745f40cd211088b760483c5f0e905c2050090404c0a0801000100130001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8b4e04894df4befccf110883c5f0e9d0c105003c4c0a08010001 *00130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be00d0110883c5 *f0e99cc105003c4c0a0804000100010000000c0007008d45f43b4354720883c7183b7b5c760ac7 *436c06000000ff63fcc747ec10500a088b45008947f0c747f844500a088b45008947fc8d47ec89 *45008d47f88945fc8b46048945f8be08d0110883c5f4e915ca050090344c0a0801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be18d0110883c5f0e904c1 *0500344c0a080300000012001d008d45ec3b4354720883c7143b7b5c760ac7436c05000000ff63 *f8c745f8d46d10088975fcc747f07c500a088b46048947f4c747f8dc500a088b46088947fc8d47 *f08945f48d47f88945f08b760c83c5ece9afc405008d7600344c0a080300000012001d088d45f0 *3b4354720883c7103b7b5c760ac7436c04000000ff63f8c745f8d46d10088975fcc747f410510a *088b46048947f88b46088947fc8b460c89078d47f48945f4bee4d5110883c5f0e945c005009034 *4c0a080500000012001d088d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745 *f8d46d10088975fcc747e8dc4f0a088b46108947ecc747f474510a088b46048947f88b46088947 *fc8b460c89078d47e88945f48d47f48945f08b761483c5ece9e4c30500384c0a08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be04d0110883c5f0e9a4 *bf0500304c0a0804000100010000000c0005008d45f83b4354720883c70c3b7b5c760ac7436c03 *000000ff63fcc747f83c520a088b45008947fc8d47f88945008b46048945fcbe10d0110883c5f8 *e960c30500344c0a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4be18d0110883c5f0e920bf0500304c0a0803000000120007008d45ec3b4354720883 *c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f074520a088b46048947 *f4c747f8c0520a088b46088947fc8d47f08945f48d47f88945f08b760c83c5ece9cbc205008d76 *00304c0a0803000000120007108d45f03b4354720883c7103b7b5c760ac7436c04000000ff63f8 *c745f8d46d10088975fcc747f4f4520a088b46048947f88b46088947fc8b460c89078d47f48945 *f4bee4d5110883c5f0e961be050090304c0a080500000012003f108d45ec3b4354720883c7283b *7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dcd0510a088b46048947e08b46 *088947e48b460c8947e88b46108947ec8b46148947f0c747f458530a088b46048947f88b460889 *47fc8b460c89078d47dc8945f48d47f48945f08b761483c5ece9e8c1050004000100030000000b *0000008d45f43b43547303ff63fc8b4e0c894dfc8b56088955f88b760483c5f4e98ac6050089f6 *5c4c0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f480c711 *08be38d1110883c5f0e977bd05008d7600284c0a0803000000120001208d45ec3b4354720883c7 *1c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e838540a088b46048947ec *8b46088947f08b460c8947f4c747f868540a088d47e88945f48d47f88945f0be44d1110883c5ec *e917c105008d7600284c0a08050000002400fd6083c7283b7b5c760ac7436c0a000000ff63f8c7 *47dcb4530a088b450c8947e08b45088947e48b46048947e88b460c8947ec8b46088947f0c747f4 *a0540a088b45108947f88b45048947fc8b451489078d47dc8945148d47f48945108b760883c50c *e9a2c0050089f6284c0a0804000100040000000b00ff608d45ec3b43547303ff63fc8b46108945 *f08b460c8945f48b46088945f88b46048945fcbedcd21108c745ec0c550a0883c5ecff26544c0a *0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f410d311088b4e *04894df0be88d2110883c5ece921c0050090504c0a0801000100130007008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c4550a088b4e04894f *fcc745f478d211088d57f88955f0be74d0110883c5ece9c9bf050090284c0a0804000100030000 *000b00ff7c8d45f83b4354720883c7203b7b5c760ac7436c08000000ff63fcc747e484550a088b *46048947e88b46088947ec8b460c8947f08b45008947f4c747f800560a088b46088947fc8d47e4 *8945008d47f88945fcbe44d1110883c5f8e959bf050090544c0a0801000100130001008d45ec3b *43547303ff63f8c745f8d46d10088975fcc745f40cd311088b4e04894df0be88d2110883c5ece9 *1dbf050090504c0a0801000100130007008d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8c8560a088b4e04894ffcc745f478d211088d57f88955 *f0be74d0110883c5ece9c5be05009083c71c3b7b5c760ac7436c07000000ff63f8c747e85c560a *088b45048947ec8b450c8947f08b45088947f4c747f804570a088b45088947fc8d47e889450c8d *47f8894508be44d1110883c504e973be05008d7600204c0a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9843e1108894df4bed4d1110883c5f0e94bb80500 *8d7600204c0a08000000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f8b0570a *088d47f88945008b761083c5fce9f2b9050089f6bedcd21108c7450cec570a0883c50cff268d76 *0018580a0850570a08c84f0a08030000002500ffffbc4f0a08030000002400ffff8b45088945fc *8b4d0c894df88b7608c7450040580a0883c5f4e9aabd050089f66c4c0a080b0002000000000011 *00ffff8d45ec3b4354720883c70c3b7b5c760fbee0c71108c7436c03000000ff63fcc747f8844f *0a088d4ff8894dfcbe88c71108c745f84c580a0883c5f8ff268d7600d4d11108bc580a08000002 *00180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e861a5050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8b83e1108 *8945f4bed4d1110883c5f0e903b705008d7600a0d51108e8c7110828590a080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f1a40500 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4e8c71108bea0d511 *0883c5f0e975b805009074c81108dcd2110808c8110890d51108a0d3110870d51108a8c71108c7 *450c0cd211088b750483c508e946b8050089f6be70d51108e93ab8050089f694590a0801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be74c8110883c5f0 *e904b8050094590a0801000100130011008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8dc590a088b4e04894ffc8d57f88955f4bea0d3110883 *c5f0e9b4b705009c590a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f4fcd11108be08c8110883c5f0e97fb705008d760083c7183b7b5c760ac7436c06000000 *ff63f8c747ec105a0a088b45048947f0c747f8605a0a088d4fec894d048d57f8895500bea8c711 *0883c5fce949bb0500908c5a0a08c4590a0894590a0801000000250075008b7508c74508e05a0a *0883c508ff2690c7450c0cd211088b750483c508e906b7050089f6f05a0a08e05a0a0894590a08 *03000000250075008b450c89750c89c6c74500185b0a08ff268d7600185b0a08b0590a0894590a *08030000002500750094590a0804000100030000000b0075008d45f43b43547303ff63fc8b4e0c *894df88b56088955fc8b7604c745f4405b0a0883c5f4ff2689f6a0590a0801000100130001008d *45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d5110883c5f0e95cb60500 *94590a080200000024007d0083c71c3b7b5c760ac7436c07000000ff63f8c747e8505b0a088b45 *088947ec8b45048947f08b460c8947f4c747f8845b0a088b45088947fc8d47e88945088d47f889 *45048b7604e910ba050094590a080b0002000000000011007f008d45fc3b43547308be08c81108 *ff63fcbedcd21108c745fcb85b0a0883c5fcff268d7600d4d11108bcd1110844d1110864c81108 *dcd21108a8d2110810c81108e4d5110890d5110880d5110868d5110878d5110888c71108b8c711 *08c8c71108645c0a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4be78d5110883c5f0e960b50500be00d2110883c5188b4500ff60f089f6385c0a0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c03e1108894df4 *bed4d1110883c5f0e937b305008d7600385c0a08010000002400010083c70c3b7b5c760ac7436c *03000000ff63f8c747f8c45c0a088b45048945008d4ff8894d048b760483c5fce9e4b80500385c *0a0801000100130001108d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be88 *c71108c745f0005d0a0883c5f0ff26010000002400000083c70c3b7b5c760ac7436c03000000ff *63f8c747f87cdc0b08c747fcc80a1208c70700d211088b45048945008d4ff8894d048b760483c5 *fce967b805008d7600685c0a0801000100130001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4be88c71108c745f0705d0a0883c5f0ff268b450489451c8b750c83c51ce9 *8f0400008d7600445c0a0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e08894df48b56048955f0be64c8110883c5ece9deb7050089f6505c0a0801000100130001 *008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e93d060000904c5c *0a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea8 *d2110883c5f0e96cb305006c5c0a0801000100130001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4beb8c7110883c5f0e938b30500405c0a0802000000150009088d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec745e0a *088b46088947f0c747f8a85e0a088b46048947fc8d47ec8945f48d47f88945f0be44d1110883c5 *ece9e1b6050090405c0a0804000100030000000b0019088d45f83b4354720883c7183b7b5c760a *c7436c06000000ff63fcc747ec445e0a088b46048947f0c747f8dc5e0a088b45008947fc8b4608 *89078d47ec8945008d47f88945fc8b760c83c5f8e980b60500585c0a0801000100130001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d5110883c5f0e940b2050083 *c71c3b7b5c760ac7436c07000000ff63f8c747e8445f0a088b45108947ec8b46048947f08b450c *8947f4c747f8a05f0a088b45108947fc8d47e88945108d47f889450c8b750883c508e9fdb50500 *90c745100cd211088b750483c50ce9deb1050089f618600a08c85f0a08405c0a08040000002500 *5908405c0a0804000100040000000b0059088d45f03b43547303ff63fc8b46108945f48b460c89 *45f88b46088945fc8b45008b4e04894d0089c6c745f040600a0883c5f0ff265c5c0a0801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be80d5110883c5f0 *e950b10500545c0a0801000100130005008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f890600a088b4e04894ffc8d57f88955f4bee4d5110883 *c5f0e900b10500405c0a08050000001200fb088d45ec3b4354720883c72c3b7b5c760ac7436c0b *000000ff63f8c745f8d46d10088975fcc747d8085e0a088b46048947dc8b46088947e0c747e450 *600a088d47d88947e88b460c8947ec8b46108947f08b46148947f4c747f8c4600a088d47d88947 *fc8d47e48945f48d47f88945f08b761083c5ece986b4050089f683c7303b7b5c760ac7436c0c00 *0000ff63f8c747d48c6b10088b450c8947d88b45048947dcc747e014610a088b451c8947e48b45 *088947e88b45188947ec8b45148947f08b45108947f4c747f87cdc0b088d47e08947fc8d47d489 *078d77f883c5208b4500ff60ec90610a08e85d0a08405c0a08070000002500fb0883c7183b7b5c *760ac7436c06000000ff63f8c747ec3c5d0a088b46048947f0c747f8bc5d0a088b46048947fc8d *47ec8945f48d47f88945f08b46088945fc8b4604894500bebcd11108c745f80c620a0883c5ece9 *b0b305000c620a08a85c0a08385c0a08050000002500ef33385c0a0804000100040000000b00ef *338d45d83b43547303ff63fc8975f08b46108945f48b460c8945f88b46088945fc8b45008b4e04 *894d0089c6c745ec78620a0883c5ecff2690385c0a08050000001200ef338d45f43b4354720883 *c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f088620a088b46048947 *f48b46088947f88b460c8947fc8b461089078b46148945f48d77f083c5f4e969ffffff90385c0a *08050000001200ef738d45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747eccc620a088b46048947f08b46088947f48b460c8947f88b46108947fc8b46 *1489078d47ec8945f4bec8c7110883c5f0e981ae050090385c0a0804000100040000000b00ef7b *8d45f83b4354720883c7243b7b5c760ac7436c09000000ff63fcc747e0805c0a088b46048947e4 *c747ec2c630a088b46048947f08b46088947f48b460c8947f88b46108947fc8b450089078d47e0 *8945008d47ec8945fc8b760883c5f8e91ab2050089f6605c0a0801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4be68d5110883c5f0e9d8ad0500385c0a08 *010000002400ef7f83c7203b7b5c760ac7436c08000000ff63f8c747e498630a088b45048947e8 *8b46088947ec8b46048947f08b460c8947f4c747f808640a088b45048947fc8d47e48945048d47 *f88945008b760483c5fce983b105008d7600385c0a0804000100000000001100ff7f8d45f83b43 *547308be10c81108ff63fcbedcd21108c745fc3c640a0883c5fcff26909090e900000000833d18 *c8110800751ec70518c8110801000000c7450004aa0b0883c504c7450090310c0883c50483c5fc *ff650089f6e4d111088b750483c50cff2683c70c3b7b5c760ac7436c03000000ff63f8c747f87c *dc0b08c747fcc80a120889378d47f8894508bee4d11108e9dab0050089f608650a0800650a08fc *640a084200000025000100fc640a080b00020000000000110001008d45fc3b43547308be1cc811 *08ff63fc8b7504c745fc50650a0883c5fcff269080d1110801000000240000008b4504894500c7 *4504d00a12088b760883c5fce970b0050080650a080400010000000000110001008d45f83b4354 *7308be24c81108ff63fcbe80d11108c745fc8c650a0883c5fcff268d760080d11108be00d21108 *83c5048b4500ff60f089f68b750483c510ff268b750883c510ff26f4650a08ec650a0800000000 *83000000250000000300000024000000c745fcd00a12088b450c8945f88b7608c7450010660a08 *83c5f4e9ddaf0500908975f88b46088945fc8b4e04894d00be80d11108c745f418660a0883c5f4 *ff2638660a08dc650a08d8650a080000000025000100d8650a080400010000000000110001008d *45e83b43547308be2cc81108ff63fc8b7500c745006c660a08ff2680d11108befcd1110883c504 *8b4500ff60f089f601000000240000008b4504894500c74504d00a12088b760883c5fce948af05 *008b4604894500be80d11108c745fcb4660a0883c5fcff2690cc660a089c660a0898660a080000 *00002500010098660a080400010000000000110001008d45f83b43547308be34c81108ff63fc8b *7500c74500f8660a08ff2680d11108befcd1110883c5048b4500ff60f089f60100000024000000 *8b4504894500c74504d00a12088b760883c5fce9bcae05008b4604894500be80d11108c745fc40 *670a0883c5fcff269058670a0828670a0824670a08000000002500010024670a08040001000000 *0000110001008d45f83b43547308be3cc81108ff63fc8b7500c7450084670a08ff26e4d1110880 *d1110860d311085cd3110880d11108bc670a0801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e910aa0500b8670a0801000100130007 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8d0670a088b4e04894ffc8d57f88955f4c745f024c81108be60d3110883c5ece9c5ad05009002 *000000240000008b45088b4d04894d088945048b7608e9a8ad0500b4670a080400010001000000 *0c0001008d45f83b43547303ff63fc8b4e04894dfcbe80d11108c745f858680a0883c5f8ff2689 *f683c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b450c8947fcc70700d211088d *77f883c510ff650089f683c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b450c89 *47fcc70700d211088d77f883c510ff650089f6bc670a0801000100130001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e9d4a80500b0670a08020000 *00150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8985f10088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece98aac05 *0089f6b0670a0802000000150009008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f840690a088b46048947fc8b460889078d47f88945f4be5cd3 *110883c5f0e927a805008d760083c7243b7b5c760ac7436c09000000ff63f8c747e00c690a088b *45048947e4c747ec98690a088b45088947f08b46088947f4c747f8e4bb0b088d47ec8947fc8d47 *e089078d77f883c510ff65008d7600e4690a08d0680a08b0670a0803000000250009008b450489 *750489c6c74500486a0a08ff268d7600486a0a08a0680a08b0670a080300000025000900b0670a *0802000000240009008b46088945008b7604c745fc706a0a0883c5fcff268d7600b0670a080400 *01000000000011001f008d45ec3b4354720883c7203b7b5c760fbe44c81108c7436c08000000ff *63fcc747e404680a088b45008947e8c747f00c5f10088d47e48947f4c747fc7c680a08c707c80a *12088d47f08945f48d47fc8945f08d47e48945fcbe60d31108c745f87c6a0a0883c5ece904ab05 *00e4d1110844c8110800000000240000008b760483c504ff26c74508206b0a0883c504e96dffff *ff9000000000240000008b760483c504ff26146b0a0801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df0c745f4406b0a0883c5f0e926ffffff89f683c7183b *7b5c760ac7436c06000000ff63f8c747ec7cdc0b08c747f0c80a12088977f4c747f8546b0a088b *45048947fc8d4fec894d088d57f8895504bee4d11108e94eaa050089f6806b0a08286b0a08106b *0a084200000025000300106b0a080b00020000000000110003008d45fc3b43547308be4cc81108 *ff63fc8b7504c745fcdc6b0a0883c5fcff269080d1110848d1110854d1110854d311085cd31108 *80d11108bee0d0110883c5048b4500ff60f089f61c6c0a0801000100130001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e9a0a5050083c7143b7b5c *760ac7436c05000000ff63f8c747f0406c0a088b45088947f4c747fc94b90b088d4ff0890f8d77 *fc83c5108b5500ff62ec901c6c0a0801000100130001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be5cd3110883c5f0e934a5050083c7143b7b5c760ac7436c05000000 *ff63f8c747f0ac6c0a088b450c8947f4c747fc94b90b088d4ff0890f8d77fc83c5148b5500ff62 *ec908b750883c514ff268b75108b450489451083c508e9a70000008d7600146d0a080c6d0a0800 *00000004000000250000000500000024000000c74500d00a12088b45048945fc8b7608c745043c *6d0a0883c5f8e9b1a80500908b4604894500be80d11108c745fc446d0a0883c5fcff2690646d0a *08d46c0a080c6c0a0804000000250011008b46088945008b7604c745fc906d0a0883c5fcff268d *7600906d0a08686c0a080c6c0a0803000000250011000c6c0a0816000300000001000b0011008d *45ec3b43547303ff63fc8b4d0889750889cec745fcbc6d0a0883c5fcff26900c6c0a0800000200 *120011008d45f83b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975 *fcc747fccc6d0a088d77fc83c5f8e9a6ff050089f68b75148b45108945148b4d0c894d1083c50c *e99dac0500908b451489450c8b45048945148b75088b45108945088b4518894510c7451800d211 *0883c508e90e02000089f6c7451800d211088b750c8b451089450c8b4d14894d108b5504895514 *83c50ce924040000746e0a08486e0a080000000007000000250000000700000024000000c745fc *d00a12088b45188945f88b7608c74500ac6e0a0883c5f4e941a70500908b46088945008b4e0489 *4d14be80d11108c745fcb46e0a0883c5fcff268d7600d46e0a08306e0a080c6c0a080600000025 *0001000c6c0a0817000400030000000b0001008d45e43b43547303ff63fc8b460c8945f88b4608 *8945fc8b45088b4e04894d0889c6c745f4086f0a0883c5f4ff2689f683c70c3b7b5c760ac7436c *03000000ff63f8c747f87cdc0b088b45108947fc8b450c89078b451889451c8b45148945188d47 *f88945148b45088945108b750483c510eb8c8b750883c520ff268b751083c528ff2683c70c3b7b *5c760ac7436c03000000ff63f8c747f87cdc0b088b45048947fc8b452089078d47f88945208b75 *248b450c89452483c510e9a9000000909c6f0a08946f0a08000000004900000025000000090000 *00240000008b45088945fc8b4d18894df88b7608c74500ec6f0a0883c5f4e902a6050089f68b46 *088945fc8b4e04894d00be80d11108c745f8f46f0a0883c5f8ff268d760014700a088c6f0a080c *6c0a0807000000250001008b46088945048b7604c7450048700a08ff2689f648700a08486f0a08 *0c6c0a0807000000250001000c6c0a0819000600010000000c0001008d45e43b43547303ff63fc *8b4e04894dfc8b551489751489d6c745f870700a0883c5f8ff268d76001c6c0a08010001001300 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f87cdc0b08c747fc54c811088b4e04890f8d57f88955f4be5cd3110883c5f0e90aa1050089f6 *83c7203b7b5c760ac7436c08000000ff63f8c747e47cdc0b08c747e854c811088b450c8947ecc7 *47f0b4700a088b450c8947f4c747fc94b90b088d47f089078b45148945188b45108945148d47e4 *8945108d47fc89450c8b750483c50ce9b6fdffff89f61c6c0a0801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e970a0050083c7143b *7b5c760ac7436c05000000ff63f8c747f070710a088b450c8947f4c747fc94b90b088d4ff0890f *8d77fc83c51c8b5500ff62ec908b751083c524ff2683c70c3b7b5c760ac7436c03000000ff63f8 *c747f87cdc0b088b45048947fc8b451c89078d47f889451c8b75208b450c89452083c510e9a900 *000090d8710a08d0710a080000000048000000250000000800000024000000c745fcd00a12088b *45088945f88b7608c7450028720a0883c5f4e9c5a30500908b46088945fc8b4e04894d00be80d1 *1108c745f830720a0883c5f8ff268d760050720a0898710a080c6c0a0806000000250011008b46 *088945048b7604c7450084720a08ff2689f684720a0800710a080c6c0a0806000000250011000c *6c0a0818000500010000000c0011008d45e43b43547303ff63fc8b4e04894dfc8b551089751089 *d6c745f8ac720a0883c5f8ff268d7600106c0a0800000200120013008d45ec3b43547303ff63f8 *c745f8d46d10088975fcc745f434c81108c745f054d11108be48d1110883c5ece9f4a20500bee0 *d0110883c5048b4500ff60f089f683c7143b7b5c760ac7436c05000000ff63f8c747f07cdc0b08 *c747f4c80a1208c747f800d21108c747fc94b90b088d47f089078d77fc83c5048b4d00ff61ec90 *30730a0820730a0800000000000000002500000083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8f0720a088b45048945008d4ff8894dfcbe54d31108c7450484730a0883c5f8e957a205008d *760083c508ff268d7600c0730a0884730a08106c0a08010000002500170083c72c3b7b5c760ac7 *436c0b000000ff63f8c747d8f86d0a08c747e4186f0a088d47d88947e88d47fc8947ec8d47f489 *47f0c747f480700a088d47e48947f8c747fcbc720a088d47e489078b46088945f88b46048945f4 *c745f000d21108c745ece0d011088975008d77e4c745fcdc730a0883c5ece9c2faffff89f6dc73 *0a08246c0a080c6c0a080000000025003f000c6c0a08040001000000000011003f008d45ec3b43 *547308be5cc81108ff63fc8b7500c745006c740a08ff26e4d1110880d1110898d311088b750483 *c50cff26a0740a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be98d3110883c5f0e9289d050083c70c3b7b5c760ac7436c03000000ff63f8c747f87c *dc0b08c747fc54c811088b450889078d4ff8894d08bee4d11108e9ffa005008d7600bee4d11108 *e9f2a0050089f618750a08e0740a0898740a08020000002500010098740a080200000024000500 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8b8740a088b45048947fcc745fcd00a12088d *4ff8894df88b7608c7450038750a0883c5f4e992a0050089f6897508be80d11108c7450044750a *08ff268d760084750a08a4740a0898740a08420000002500070098740a0802000000240007008b *7508c74500ac750a08ff268b750883c50cff268b750883c50cff26ebe289f6d4750a08cc750a08 *98740a08020000002500070098740a0803000000240007008b460483f82e750f8b7504c74504ec *750a0883c504ff2683c504eba48b46088945008b7604c745fcf8750a0883c5fcff268d76001476 *0a08c4750a0898740a08020000002500070098740a080b00020000000000110007008d45f03b43 *547308be64c81108ff63fc8b7500c745fc40760a0883c5fcff269080d1110864c81108c7450800 *d2110883c504e9c9ffffff908b450489450c83c508e9baffffff89f68b750483c510ff2698760a *0888760a0874760a08830000002500010074760a080300000024000100c745fcd00a12088b450c *8945f88b7608c74500b4760a0883c5f4e9359f0500908975008b4604894508be80d11108c745fc *c0760a0883c5fcff2689f6e0760a0878760a0870760a08420000002500030070760a080b000200 *00000000110003008d45ec3b43547308be6cc81108ff63fc8b7504c745fc10770a0883c5fcff26 *90e4d11108c4d11108d4d1110880d1110844d11108e0d1110860d3110864c8110880d11108be00 *d2110883c5048b4500ff60f089f68b750483c50cff268b750883c50cff267c770a0874770a0800 *00000002000000250000008b46088945fc8975008b7604c745f898770a0883c5f8ff2698770a08 *64770a0800000000000000002500000004000100000001000b0000008d45f83b43547303ff63fc *8b7500c74500c4770a08ff269083c70c3b7b5c760ac7436c03000000ff63f8c747f87cdc0b08c7 *47fc00d21108c70700d211088d77f883c50c8b4500ff60ec89f683c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8e4bb0b088b45048947fcc70700d211088d77f883c508e988f5050083c70c3b *7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b45048947fc8b4e08890f8d77f883c508e9 *59f50500904c780a081c780a0800000000010000002500000000000000240000008b4604894500 *8b7608c745fc90780a0883c5fcff268d760058770a0801000100130005008d45e83b43547303ff *63f8c745f8d46d10088975fc8b4e04894df0c745ec24c81108be60d31108c745f498780a0883c5 *e8e9229d050089f648770a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9c43e1108894df4bed4d1110883c5f0e9fb9605008d76005c770a08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be64c8110883c5f0e9a4 *98050054770a0803000000120005008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec8c6b10088b460c8947f08b46048947f4c747f83c790a088b *46088947fc8d47ec8945f48d47f88945f0bee0d1110883c5ece9479c05008d760083c71c3b7b5c *760ac7436c07000000ff63f8c747e870790a088b45088947ec8b45048947f08b450c8947f4c747 *f87cdc0b08c747fc00d211088d47e889078d77f883c5148b4500ff60ec89f650770a0803000000 *120001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975 *fcc747f88c6b10088b460c8947fc8b460889078d47f88945f48b46048945f0be44d1110883c5ec *e99d9b0500905c770a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be64c8110883c5f0e95c97050083c71c3b7b5c760ac7436c07000000ff63f8c747 *e8287a0a088b45108947ec8b45088947f08b450c8947f4c747f8847a0a088b45048947fc8d47e8 *8945108d47f889450cbee0d1110883c508e9179b05008d7600ac7a0a08d0790a0850770a080400 *000025000b0044770a080400000024005b0083c70c3b7b5c761ec74500207b0a08c7436c030000 *00b8ff00000083f000894320e96ac20500c747f800790a088b4d04894dfc8d57f88955f8bec4d1 *1108c74500147b0a0883c5f4e9a79a05008d7600ebae89f68b45088945108b750c83c510e9eb00 *00008d7600eb9689f6887b0a08747b0a0844770a080400000025005b0044770a08050000002400 *5b008b460483f82e750f8b7504c74504a07b0a0883c504ff2683c504e955ffffff908b46088945 *008b7604c745fcac7b0a0883c5fcff268d7600cc7b0a08707b0a0844770a080400000025005b00 *83c7243b7b5c760ac7436c09000000ff63f8c747e0bc780a088977e4c747ec985f10088d47e089 *47f0c747f80c5f10088d47e08947fc8d47ec8945008d47f88945fc8d77f8c745f8f87b0a0883c5 *f8ff268d7600f87b0a08e8770a0844770a08020000002500fb0044770a0804000100010000000c *00fb008d45e43b43547303ff63fc8975fc8b4d008b560489550089cec745f8607c0a0883c5f8ff *268d760040770a0800000200120001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fcc80a1208c70700d211088d4ff8894df4 *c745f000d21108bee4d1110883c5ece91e99050089f683c7103b7b5c760ac7436c04000000ff63 *f8c747f4fcbb0b08c747f800d211088b45048947fcc70700d211088d77f483c508e9a5f0050090 *83c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b08c747f800d211088b45108947fc8b *4d04890f8d77f483c514e96ef0050089f640770a0800000200120001008d45ec3b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc54c811 *08c70700d211088d4ff8894df4c745f000d21108bee4d1110883c5ece94e98050089f640770a08 *00000200120001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f87cdc0b08c747fc54c81108c70700d211088d4ff8894df4c745f000d21108be *e4d1110883c5ece9ee97050089f683c7283b7b5c760ac7436c0a000000ff63f8c747dc747d0a08 *c747e8d47d0a08c747f4fcbb0b088d47e88947f88d4fdc894ffc8b550889178d77f483c514e969 *ef050090287e0a08307d0a0840770a08840000002500010040770a080400000024000100c745fc *d00a12088b450c8945f88b7608c74500807e0a0883c5f4e969970500908975f88b46088945fc8b *4e04894d00be80d11108c745f48c7e0a0883c5f4ff26ac7e0a08f87c0a0840770a080100000025 *00090040770a0801000100130009008d45d83b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8a47c0a088d4ff8894df48b7604c745f0e07e0a0883c5f0ff *2602000000150000008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8246010088b4e08894ffc8d57f88955f48b760483c5f4e9fafcffff89f650 *770a0803000000120001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8347f0a088b46088947fc8b460c89078d47f88945f48b46048945f0be *44d1110883c5ece9419605009040770a0801000100130001008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80c5f10088b4e04894ffc8d57f889 *55f4bee4d1110883c5f0e9e491050040770a0803000000120031008d45ec3b4354720883c71c3b *7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8847f0a088b46048947ec8b46 *088947f08b460c8947f4c747f8e07f0a088b460c8947fc8d47e88945f48d47f88945f0bee0d111 *0883c5ece9819505009040770a0804000100000000001100ff0183c7443b7b5c760fbe74c81108 *c7436c11000000ff63fcc747c0d0770a08c747c8707c0a088d47c08947ccc747d0ec7e0a088b45 *008947d4c747dc30800a088d47c08947e08d47c88947e48d47d08947e8c747ec985f10088d47d0 *8947f0c747f87cdc0b088d47ec8947fc8d47dc89078d77f883c5048b4500ff60ec78d3110860d3 *11085cd3110880d1110828810a0801000100130001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8b4e04894df4be5cd3110883c5f0e9a490050024810a0801000100130007008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f83c810a08 *8b4e04894ffc8d57f88955f4c745f024c81108be60d3110883c5ece9599405009083c70c3b7b5c *760ac7436c03000000ff63f8c747f87cdc0b08c747fcc80a1208c70700d211088d77f883c504ff *25c06d100889f683c504ff268d7600f0810a08bc810a0800000000000000002500000000000000 *240000008b7604c745000c820a08ff2601000100130000008d45f43b43547303ff63f8c745f8d4 *6d10088975fc8b7604c745f414820a0883c5f4ff2628810a0801000100130001008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f828820a088b4e *04894ffc8d57f88955f4be5cd3110883c5f0e96c8f050083c70c3b7b5c760ac7436c03000000ff *63f8c747f87cdc0b08c747fcc80a1208c70700d211088d77f883c504ff25c06d100889f683c70c *3b7b5c760ac7436c03000000ff63f8c747f87cdc0b08c747fc54c81108c70700d211088d77f883 *c504ff25c06d100889f683c504ff268d760004830a08d0820a0800000000000000002500000089 *75fcc745f824c81108be78d31108c7450020830a0883c5f4e9d692050089f620830a089c820a08 *20810a08000000002500090020810a0800000000240009008b7608c7450054830a08ff2620810a *0801000100130009008d45e83b43547303ff63f8c745f8d46d10088975fc8b7604c745f460830a *0883c5f4ff2620810a080100010013000d008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f878830a088b4e04894ffc8d57f88955f4be5cd31108 *83c5f0e91c8e050020810a08040001000000000011000f0083c7303b7b5c760fbe7cc81108c743 *6c0c000000ff63fcc747d470810a088b45008947d8c747e058820a088d47d48947e4c747eca883 *0a088d47d48947f0c747f8e4bb0b088d47ec8947fc8d47e089078d77f883c504ff65008d760080 *d1110860d311085cd311087cc8110864840a0801000100130001008d45f43b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df483c5f4e965ffffff9060840a0801000100130001008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8985f10 *088b4e04894ffc8d57f88955f4be5cd3110883c5f0e9208d050002000000240000008b45088b4d *04894d088945048b7608e91091050058840a0804000100010000000c0001008d45f83b43547303 *ff63fc8b4e04894dfcbe80d11108c745f8f0840a0883c5f8ff2689f660840a0801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e99c8c *050083c7283b7b5c760ac7436c0a000000ff63f8c747dc44850a088b45048947e0c747e80c5f10 *088b45088947ecc747f4fcbb0b088d47e88947f88d47dc8947fcc70700d211088d77f483c50cff *650089f660840a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be5cd3110883c5f0e9188c050060840a0801000100130001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e9e48b050083c7343b7b5c760ac7 *436c0d000000ff63f8c747d0c8850a088b45048947d4c747dcfc850a088b46088947e0c747e80c *5f10088b45088947ecc747f4fcbb0b088d47e88947f88d47dc8947fc8d47d089078d77f483c50c *ff650089f624860a086c850a0860840a08020000002500010060840a0801000000240001008b46 *048945008b7608c745fc94860a0883c5fcff268d760058840a08040001000000000011000f008d *45f03b4354720883c7203b7b5c760fbe84c81108c7436c08000000ff63fcc747e474840a088b45 *008947e8c747f0a4840a088d47e48947f4c747fc14850a08c707c80a12088d47f08945f88d47fc *8945f48d47e4894500be60d31108c745fca0860a0883c5f0e9e08e0500b8d31108b0d011083887 *0a0801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f87cdc0b08c747fc8cc81108c70700d211088b4e04894df48d57f88955f0 *beb0d0110883c5ece97b8e05008d760034870a080400010000000000110003008d45fc3b435472 *0883c70c3b7b5c760fbe94c81108c7436c03000000ff63fcc747f848870a088b4d00894ffc8d57 *f8895500beb8d3110883c5fce91d8a05009080d1110860d3110802000000240000008b45088b4d *04894d088945048b7608e9048e0500ec870a0804000100010000000c0001008d45f83b43547303 *ff63fc8b4e04894dfcbe80d11108c745f8fc870a0883c5f8ff2689f683c70c3b7b5c760ac7436c *03000000ff63f8c747f87cdc0b088b45048947fcc70700d211088d77f883c5108b4d00ff61ec8d *760083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b450c8947ec8b45088947f0 *8b46088947f4c747f87cdc0b088b45048947fc8d47e889078d77f883c5108b4500ff60ec8d7600 *78880a0844880a0800000000030000002500000002000000240000008b46048945008b7608c745 *fcd8880a0883c5fcff268d7600ec870a080b000200000001000b0003008d45f03b4354720883c7 *083b7b5c760ac7436c02000000ff63fcc747fc20880a088b450089078b45048945f88d47fc8945 *f4897504be60d31108c745fce0880a0883c5f0e9c38c05008d7600ec870a080400010000000000 *110003008d45fc3b4354720883c7083b7b5c760fbe9cc81108c7436c02000000ff63fcc747fc08 *890a08c745fc8cc811088d77fc83c5fce96cffffffd4d111089c890a0800000200180001008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88174050083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8c83e11088945f4bed4d111 *0883c5f0e923860500909090e900000000833dd0c8110800751ec705d0c8110801000000c74500 *90310c0883c504c7450050a70b0883c50483c5fcff650089f630d411088cd411083c8a0a080000 *0200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e8dd73050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f48cd4 *1108be30d4110883c5f0e96187050090bcd3110800000000240000008b760883c504ff26a88a0a *0800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e86573050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbebc *d31108c745f4b48a0a0883c5f4ff26e4d11108c4d11108d4d11108ecc81108248b0a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc3e1108894df4bed4d1 *110883c5f0e9c38405008d7600248b0a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9d03e1108894df4bed4d1110883c5f0e9878405008d76001c8b0a0801 *000100130005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8748b0a088d4ff8894df48b56048955f0bee4d1110883c5ece9208a0500248b0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d83e110889 *4df4bed4d1110883c5f0e9fb8305008d76001c8b0a0801000100130005008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb08b0a088b46048947 *f0c747f8008c0a088d47ec8945f48d47f88945f0bee4d1110883c5ece9878905008d76001c8b0a *0802000000150005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f83c8c0a088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ec *e92e89050089f6248b0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9e83e1108894df4bed4d1110883c5f0e9078305008d76001c8b0a0802000000150005 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec9c8c0a088b46048947f08b46088947f4c747f8f48c0a088d47ec8945f48d47f88945f0bee4d1 *110883c5ece98d8805009001000000240000008b7608e970840500288b0a080100010013000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beecc81108c745f0908d0a08 *83c5f0ff261c8b0a080300000012000d008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec308d0a088b46088947f08b460c8947f4c747f8a48d0a *088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9db8705008d7600248b0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ec3e1108894d *f4bed4d1110883c5f0e9b38105008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8dc *8d0a088b45048947ec8b45088947f08b450c8947f4c747f8488e0a088d47e889450c8d47f88945 *08bee4d1110883c504e95187050090248b0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9f43e1108894df4bed4d1110883c5f0e92b8105008d76001c8b0a *0801000100130005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8d08e0a088d4ff8894df48b56048955f0bee4d1110883c5ece9c486050024 *8b0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9fc3e11 *08894df4bed4d1110883c5f0e99f8005008d76001c8b0a0801000100130005008d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec0c8f0a088b4604 *8947f0c747f85c8f0a088d47ec8945f48d47f88945f0bee4d1110883c5ece92b8605008d76001c *8b0a0802000000150005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8988f0a088b46088947fc8d47f88945f48b46048945f0bee4d1110883 *c5ece9d285050089f6248b0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b90c3f1108894df4bed4d1110883c5f0e9ab7f05008d76001c8b0a080200000015 *0005008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ecf88f0a088b46048947f08b46088947f4c747f850900a088d47ec8945f48d47f88945f0be *e4d1110883c5ece9318505009001000000240000008b7608e914810500288b0a08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beecc81108c745f0ec90 *0a0883c5f0ff261c8b0a080300000012000d008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec8c900a088b46088947f08b460c8947f4c747f800 *910a088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece97f8405008d7600248b *0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9103f1108 *894df4bed4d1110883c5f0e9577e05008d76001c8b0a080300000012000d008d45ec3b43547208 *83c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e838910a088b460489 *47ec8b46088947f08b460c8947f4c747f8a4910a088d47e88945f48d47f88945f0bee4d1110883 *c5ece9d78305008d76001c8b0a080400000012000d008d45ec3b4354720883c7103b7b5c760ac7 *436c04000000ff63f8c745f8d46d10088975fcc747f4e0910a088b46048947f88b46088947fc8b *460c89078d47f48945f48b46108945f0bee4d1110883c5ece9738305008d7600248b0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b91c3f1108894df4bed4 *d1110883c5f0e94b7d05008d760083c7203b7b5c760ac7436c08000000ff63f8c747e44c920a08 *8b45048947e88b45088947ec8b450c8947f08977f4c747f8b0920a088d47e489450c8d47f88945 *08bee4d1110883c504e9e682050089f6e0920a08788e0a081c8b0a080300000025000d008b7504 *c7450444930a0883c504ff2690248b0a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9283f1108894df4bed4d1110883c5f0e99b7c05008d76001c8b0a0801 *000100130005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f860930a088d4ff8894df48b56048955f0bee4d1110883c5ece934820500248b0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9303f110889 *4df4bed4d1110883c5f0e90f7c05008d76001c8b0a0801000100130005008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec9c930a088b46048947 *f0c747f8ec930a088d47ec8945f48d47f88945f0bee4d1110883c5ece99b8105008d76001c8b0a *0802000000150005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f828940a088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ec *e94281050089f6248b0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9403f1108894df4bed4d1110883c5f0e91b7b05008d76001c8b0a0802000000150005 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec88940a088b46048947f08b46088947f4c747f8e0940a088d47ec8945f48d47f88945f0bee4d1 *110883c5ece9a18005009001000000240000008b7608e9847c0500288b0a080100010013000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beecc81108c745f07c950a08 *83c5f0ff261c8b0a080300000012000d008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec1c950a088b46088947f08b460c8947f4c747f890950a *088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9ef7f05008d7600248b0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9443f1108894d *f4bed4d1110883c5f0e9c77905008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8c8 *950a088b45088947ec8b450c8947f08b45108947f4c747f834960a088d47e88945108d47f88945 *0cbee4d1110883c508e9657f05009064960a0844930a081c8b0a080400000025000d001c8b0a08 *170004000000000011000f008d45f03b4354720883c70c3b7b5c760fbefcc81108c7436c030000 *00ff63fcc747f8388b0a088b4d00894df88d57f88955f4bec4d11108c745fcc4960a0883c5f0e9 *fa7e050089f6ccd1110880d111081c970a0800000200180003008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8fd66050083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e9817a0500900b0002 *0000000000110000008b750483c508ff264cd21108d4d1110868d3110850d5110888d3110870d3 *1108a4d0110854d311084cd51108bcd31108dcc8110804c9110818c91108b84c3f1108894508be *4cd2110883c504e9437805008d7600cc970a0801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4c745f0d811120883c5f0e9020c000089f683c7183b7b5c76 *0ac7436c06000000ff63f8c747ecf4970a088b45048947f0c747f87cdc0b08c747fc40c911088d *4fec890f8d77f883c5108b5500ff62ec89f6cc970a0801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f0d811120883c5f0e98a0b000089f683c7183b *7b5c760ac7436c06000000ff63f8c747ec6c980a088b45048947f0c747f87cdc0b08c747fc3cc9 *11088d4fec890f8d77f883c5108b5500ff62ec89f698980a0820980a08cc970a08c30000002500 *0100a8970a0843000000240011028b450c8945fcc745f850d51108be54d31108c74500ec980a08 *83c5f4e9fb7c05008d7600ebda89f6cc970a0802000000150001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df48b56088955f083c5f0e9cb0a00008d760001000000240000 *008b4504894500c74504d4c811088b760c83c5fce99c7c0500c0970a0801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f060990a0883c5 *f0ff26b0970a0802000000150011008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f884990a088b46048947fc8b46088945f48d47f88945f0be70 *d3110883c5ece90e7c050089f6cc970a0801000100130001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4c745f0d811120883c5f0e9e209000089f683c7083b7b5c760ac7 *436c02000000ff63f8c747fc2cbb0a088b450489078d77fc83c508ff25b46d100889f683c7083b *7b5c760ac7436c02000000ff63f8c747fc2cbb0a088b450889078d77fc83c50cff25b46d100889 *f683c7083b7b5c760ac7436c02000000ff63f8c747fc2cbb0a088b450c89078d77fc83c510ff25 *b46d100889f6c4970a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4bedcc8110883c5f0e91077050083c7183b7b5c760ac7436c06000000ff63f8c747 *ecd09a0a088b45088947f0c747f80cbb0a088d4fec894ffc8b550489178d77f883c510ff25b86d *10088d7600f89a0a08989a0a08c4970a0803000000250001008b45048945f8c745f44cd511088b *4e04894d00be54d31108c745fc4c9b0a0883c5f0e9a17a0500904c9b0a086c9a0a08b8970a0802 *00000025000b008b46048945008b7608c745fc889b0a0883c5fcff268d7600889b0a08409a0a08 *b8970a080100000025000b00b4970a0801000100130017008d45dc3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894dec8b56048955f4bea4d01108c745f0b49b0a0883c5e8e9137605008d *7600a8970a08040000002400fd0283c72c3b7b5c760ac7436c0b000000ff63f88b460483f83e7d *4583f8230f8592000000c747d8149a0a088b45088947dcc747e4c09b0a088b45048947e8c747f0 *7cdc0b088d47e48947f48d47d88947f88d77f083c51483c7f88b4500ff60ec83f83e7551c747d8 *2c990a088b45088947dc8b450c8947e0c747e4bc990a088b450c8947e88b45048947ecc747f0cc *ba0a088d47e48947f4c747f87cdc0b088d47f08947fc8d47d889078d77f883c5148b4500ff60ec *83c50483c7d4e934fcffff8b46088945008b7604c745fc049c0a0883c5fcff268d7600c49c0a08 *1c990a08a8970a08030000002500fd028b46048945088b4e08894d008b7604c745fcf09c0a0883 *c5fcff2690f09c0a08d0970a089c970a08420000002500e9179c970a08020000002400e9178b75 *08c74500209d0a08ff26ebf289f683c504ebeb8d7600a4970a0801000100130003008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f050d51108be68d3110883c5ece995 *78050090ac970a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be88d3110883c5f0e954740500ac970a08010000002400010083c70c3b7b5c760ac743 *6c03000000ff63f8c747f88c9d0a088b45048947fcc74504d4c811088d4ff8894d008b761483c5 *fce91d78050090ac970a0801000100130021008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4bebcd31108c745f0c09d0a0883c5f0ff26ac970a0802000000150021018d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8049e0a *088b46048947fc8b46088945f48d47f88945f083c5f0e99f0500008d76009c970a080400000024 *00fd1783c7443b7b5c760ac7436c11000000ff63f88b460483f83e7565c747c0509d0a088b4504 *8947c4c747cc985f10088d47c08947d0c747d80c5f10088d47c08947dcc747e43c9e0a088d47d8 *8947e88b45088947ecc747f0ccba0a088d47cc8947f4c747f87cdc0b088d47f08947fc8d47e489 *078d77f883c5148b4500ff60ec83c50883c7bce912feffff89f68b46088945008b7604c745fc90 *9e0a0883c5fcff268d76001c9f0a083c9d0a089c970a08030000002500fd178b46088945008b76 *04c745fc489f0a0883c5fcff268d7600489f0a08389d0a089c970a08020000002500fd179c970a *08020000002400fd17837e0400750c8b7508c74500749f0a08ff26e995fdffff909c970a080200 *00002400fd178b7504c74500809f0a08ff26be00d2110883c50c8b4500ff60f089f683c504ebdf *8d7600be00d2110883c5088b4500ff60f089f683c7203b7b5c760ac7436c08000000ff63f8c747 *e48c6b10088b45088947e88b45048947ecc747f0ccba0a08c747f400d21108c747f87cdc0b088d *47f08947fc8d47e489078d77f883c50c8b4500ff60ec8d7600a0970a0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9883f1108894df4bed4d1110883c5f0e9 *c36f05008d760083c7203b7b5c760ac7436c08000000ff63f8c747e48c6b10088b450c8947e88b *45088947ecc747f0ccba0a088b45048947f4c747f87cdc0b088d47f08947fc8d47e489078d77f8 *83c5108b4500ff60eccc970a0801000100130001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4c745f0d811120883c5f0e93203000089f683c7183b7b5c760ac7436c0600 *0000ff63f8c747ecc4a00a088b45088947f0c747f87cdc0b08c747fc3cc911088d4fec890f8d77 *f883c5108b5500ff62ec89f6f0a00a0868a00a08cc970a080300000025000100a0970a08040000 *002400010883c70c3b7b5c760ac7436c03000000ff63f8c747f838a00a088d47f88945008b4d04 *894dfc8b7608c7450444a10a0883c5f8e98d74050090a0970a08040000002400010c83c7203b7b *5c760ac7436c08000000ff63f88b460483f85c7511be04c91108c7450050a10a0883c7e0ff26c7 *47e48c6b10088b45108947e88b450c8947ecc747f0ccba0a088b45088947f4c747f87cdc0b088d *47f08947fc8d47e489078d77f883c5148b4500ff60ec8d76008b46088945fc8975008b7604c745 *f894a10a0883c5f8ff2600a20a08d89f0a08a0970a08020000002500010c8b46088945008b7604 *c745fc2ca20a0883c5fcff268d76002ca20a08c89f0a08a0970a08010000002500010ca0970a08 *04000100000001000b00010c8d45e83b43547303ff63fc8b4d0089750089cec745fc58a20a0883 *c5fcff2690a0970a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9943f1108894df4bed4d1110883c5f0e9676d05008d760083c50ce9d8fcffff83c7183b7b *5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f87cdc0b08 *c747fc3cc911088d47ec89078d77f883c5188b4500ff60eccca20a08c4a20a089c970a08450000 *002500fd179c970a08050000002400ff1783c70c3b7b5c760ac7436c03000000ff63f8c747f894 *a20a088d47f88945fc8b4d08894df88b7608c7450024a30a0883c5f4e9ad720500909c970a0804 *0000002400ff1f83c7083b7b5c760ac7436c02000000ff63f88b460483f85c751ec747fc68a20a *088d4ffc894d00be04c91108c745fc30a30a0883c5fcff2683c50883c7f8e9edfbffff908b4608 *8945008b7604c745fc74a30a0883c5fcff268d7600b8a30a08c09f0a089c970a08030000002500 *ff1f8b46088945008b7604c745fce4a30a0883c5fcff268d7600e4a30a08b09f0a089c970a0802 *0000002500ff1f9c970a080b000200000000001100ff1f8d45e43b43547308be18c91108ff63fc *8b7504c745fc10a40a0883c5fcff2690e4d11108ecc811088b760483c504ff26be00d2110883c5 *048b4500ff60f089f6be00d2110883c5048b4500ff60f089f601000000240000008b7608e9886d *050044a40a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4beecc81108c745f078a40a0883c5f0ff2640a40a0802000000150003008d45ec3b43547208 *83c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec7cdc0b08c747f058 *0a12088b46088947f4c747f88ca40a088b46048947fc8d47ec8945f48d47f88945f0bee4d11108 *83c5ece9f270050089f683c7243b7b5c760ac7436c09000000ff63f8c747e0c4a40a088b460489 *47e48b46088947e8c747ec7cdc0b08c747f0580a12088d47e08947f4c747f87cdc0b08c747fc70 *0a12088d47ec89078d77f883c5048b4500ff60ec83c70c3b7b5c760ac7436c03000000ff63f8c7 *47f87cdc0b08c747fc700a12088b460489078d77f883c5048b4d00ff61ec8d76007ca50a0824a5 *0a0860a40a0850a40a0848a40a0840a40a08000000002500030040a40a08040001000000000011 *0003008b7500c74500d0a50a08ff2654d21108d4d11108bcd31108fcc8110828c91108be00d211 *0883c5148b4500ff60f089f601000000240000008b4504894500c74504d4c811088b761483c5fc *e9e46f0500f4a50a0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4bebcd31108c745f018a60a0883c5f0ff26f4a50a0804000000120005008d45e83b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f83ca60a088b *460c8947fc8b46108945f48b46048945f08d47f88945ec8b46088945e883c5e8e93b0900008d76 *0083c7203b7b5c760ac7436c08000000ff63f8c747e474a60a088b46048947e88b45048947ec8b *45088947f08b46088947f4c747f87cdc0b088b46048947fc8d47e489078d77f883c5148b4500ff *60ec90c8a60a0800a60a08f4a50a088401000025000500f4a50a0884000000240005008b7510c7 *45002ca70a08ff26ebf289f6f0a50a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9a03f1108894df4bed4d1110883c5f0e9a76805008d7600f0a50a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a83f1108894df4be *d4d1110883c5f0e96b6805008d7600897500be54d2110883c5fce9386a0500c0a70a08c0a70a08 *eca50a08000000002500010083c7183b7b5c760ac7436c06000000ff63f8c747ec54a70a08c747 *f890a70a088d47ec8945108b45088945048b450c8945088d47f889450cc74514e4a70a0883c504 *e9a9eeffff90fca50a0804000000120001008d45e83b43547303ff63f8c745f8d46d10088975fc *8b46088945f48b46048945f08b46108945ec8b460c8945e883c5e8e9930700008d760083c7203b *7b5c760ac7436c08000000ff63f8c747e438a80a088b45108947e88b45048947ec8b46088947f0 *8b46048947f4c747f87cdc0b088977fc8d47e489078d77f883c5188b4500ff60ec010000002400 *00008b4504894500c74504d4c811088b761483c5fce9386d0500f4a50a0801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f0c4a80a0883 *c5f0ff26f4a50a0804000000120005008d45e83b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8e8a80a088b46088947fc8b46108945f48b460c8945f08d *47f88945ec8b46048945e883c5e8e98f0600008d760083c7203b7b5c760ac7436c08000000ff63 *f8c747e420a90a088b45088947e88b450c8947ec8b45108947f08b45048947f4c747f87cdc0b08 *8977fc8d47e489078d77f883c5188b4500ff60ec83c504e970fdffff74a90a0870a80a08e4a70a *08c0a90a08c0a90a08eca50a080500000025001f008b46088945008b7604c745fce8a90a0883c5 *fcff268d7600e8a90a0844a70a08eca50a080400000025001f0089750c8b7510c7450014aa0a08 *ff2690e90ffdffff8d7600fca50a0803000000120001008d45e83b43547303ff63f8c745f8d46d *10088975fc8b46048945f4c745f03cc911088b460c8945ec8b46088945e883c5e8e99205000089 *f683c71c3b7b5c760ac7436c07000000ff63f8c747e838aa0a088b450c8947ec8b46088947f08b *46048947f4c747f87cdc0b088977fc8d47e889078d77f883c5148b4500ff60ec89f60100000024 *0000008b4504894500c74504d4c811088b761483c5fce93c6b0500f4a50a080100010013000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f0c0aa0a08 *83c5f0ff26f4a50a0803000000120005008d45e83b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8e4aa0a088b46088947fc8b460c8945f4c745f03cc911 *088d47f88945ec8b46048945e883c5e8e99204000089f683c71c3b7b5c760ac7436c07000000ff *63f8c747e81cab0a088b45048947ec8b45088947f08b450c8947f4c747f87cdc0b088977fc8d47 *e889078d77f883c5148b4500ff60ec89f6e97bfbffff8d760070ab0a0870aa0a08b8ab0a08b8ab *0a08b8ab0a08f4a50a0804000000250005008b460889450c8b7604c74500e0ab0a08ff2689f6e0 *ab0a0824aa0a08f4a50a0884000000250005008b7510c7450008ac0a08ff26e91ffbffff8d7600 *f0a50a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b03f *1108894df4bed4d1110883c5f0e9d36305008d7600f0a50a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9b83f1108894df4bed4d1110883c5f0e997630500 *8d7600897500be54d2110883c5fce96465050094ac0a0894ac0a08eca50a080000000025000100 *83c7183b7b5c760ac7436c06000000ff63f8c747ec28ac0a08c747f864ac0a088d47ec89450c8b *45048945008b45088945048d47f8894508c74510b8ac0a08e9d8e9fffffca50a08030000001200 *01008d45e83b43547303ff63f8c745f8d46d10088975fc8b46048945f4c745f040c911088b460c *8945ec8b46088945e883c5e8e9c202000089f683c71c3b7b5c760ac7436c07000000ff63f8c747 *e808ad0a088b450c8947ec8b46088947f08b46048947f4c747f87cdc0b088977fc8d47e889078d *77f883c5148b4500ff60ec89f601000000240000008b4504894500c74504d4c811088b761483c5 *fce96c680500f4a50a0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4bebcd31108c745f090ad0a0883c5f0ff26f4a50a0803000000120005008d45e83b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b4ad0a08 *8b46088947fc8b460c8945f4c745f040c911088d47f88945ec8b46048945e883c5e8e9c2010000 *89f683c71c3b7b5c760ac7436c07000000ff63f8c747e8ecad0a088b45048947ec8b45088947f0 *8b450c8947f4c747f87cdc0b088977fc8d47e889078d77f883c5148b4500ff60ec89f6e9abf8ff *ff8d760040ae0a0840ad0a0888ae0a0888ae0a08b8ac0a08eca50a080400000025001f008b4608 *89450c8b7604c74500b0ae0a08ff2689f6b0ae0a0814ac0a08eca50a088400000025001f008b75 *10c74500d8ae0a08ff26e94ff8ffff8d7600e4ae0a08e4ae0a08d8ae0a0808ac0a0814aa0a08ec *a50a088400000025001f00eca50a080400000024001f008b750cc745000caf0a08ff26ebf289f6 *fca50a0803000000120001008d45e83b43547303ff63f8c745f8d46d10088975fc8b460c8945f4 *8b46088945f0c745ece01112088b46048945e883c5e8e99600000089f683c71c3b7b5c760ac743 *6c07000000ff63f8c747e834af0a088b45048947ec8b46048947f08b46088947f4c747f87cdc0b *088b46048947fc8d47e889078d77f883c5148b4500ff60ec8d76006caf0a0824af0a08eca50a08 *0400000025001f00eca50a080400000024001f00837e0400750c8b7510c74500ccaf0a08ff26e9 *29ffffff90eca50a08170004000000000011001f008d45f83b43547308be28c91108ff63fc8b75 *04c745fcd8af0a0883c5fcff269048d1110850d11108e0d11108a8d0110818c9110820c9110828 *c9110801000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f400d21108 *8b760483c5f0e99d6105009083c7183b7b5c760ac7436c06000000ff63f8c747ec44b00a088b45 *088947f0c747f87cdc0b088d4fec894ffcc70700d211088d77f883c50c8b5500ff62ec89f60400 *0100010000000c00000083c70c3b7b5c760ac7436c03000000ff63fcc747f87cdc0b088b460489 *47fc8b4d00890f8d77f883c5048b5500ff62ec20b00a0802000000150001008d45ec3b43547208 *83c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fcb8b00a088b460889 *078d47fc8945f48b46048945f0be48d1110883c5ece9d76405008d760024b00a08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fcc745f450d11108c745f000d211088b76 *0483c5f0e97603000089f601000100130000008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f400d211088b760483c5f0e95d6005009083c7243b7b5c760ac7436c09000000ff63f8c7 *47e04cb10a088b45048947e4c747ec84b10a088b45088947f0c747f87cdc0b088d47ec8947fc8d *47e089078d77f883c50c8b4500ff60ec89f624b00a0802000000150001008d45f03b43547303ff *63f8c745f8d46d10088975fcc745f450d111088b4e08894df08b760483c5f0e9bf0200008d7600 *01000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f400d211088b7604 *83c5f0e9a55f05009024b00a0802000000150001008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f450d111088b4e08894df08b760483c5f0e9530200008d760001000100130000008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f400d211088b760483c5f0e9395f050090 *24b00a08040000002400010083c7243b7b5c760ac7436c09000000ff63f88b460483f80a753ec7 *47e070b20a088b450c8947e48b45048947e8c747eca8b20a088b45108947f0c747f87cdc0b088d *47ec8947fc8d47e089078d77f883c5148b4500ff60ecc747e004b20a088b450c8947e48b450889 *47e8c747ec3cb20a088b45108947f0c747f87cdc0b088d47ec8947fc8d47e089078d77f883c514 *8b4500ff60ec89f68b46088945fc8975008b7604c745f8dcb20a0883c5f8ff2674b30a08acb10a *0824b00a08020000002500010024b00a0802000000150001008d45f03b43547303ff63f8c745f8 *d46d10088975fcc745f450d111088b4e04894df08b760883c5f0e9170100008d76000100010013 *0000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f400d211088b760483c5f0e9fd *5d05009020b00a08030000002400030083c7243b7b5c760ac7436c09000000ff63f88b460483f8 *0d7d4383f80a7555c747e0acb30a088b45048947e48b45088947e8c747ece4b30a088b450c8947 *f0c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5108b4500ff60ec83f80d75128b7504 *c74504a0b30a0883c50483c7dcff26c747e0f4b00a088b450c8947e48977e88d47e089450c8b75 *088b450489450883c50883c7e8eb3d908b46088945008b7604c745fc18b40a0883c5fcff268d76 *00b4b40a086cb00a0820b00a08020000002500030020b00a080b000200000001000b0003008d45 *f43b43547303ff63fc8b4d0089750089cec745fce0b40a0883c5fcff269020b00a080100010013 *0003008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fc *c747fcf0b40a08c745f450d111088b4e04894df08d77fc83c5f0eb9430b00a0801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be18c9110883c5f0e9785c *050038b00a0802000000150001008d45e83b43547303ff63f8c745f8d46d10088975fcc745f43c *c911088b4e08894df08b56048955ecbe28c9110883c5e8e9136505008d760020b00a0801000100 *130051008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975 *fcc747ec68b50a08c747f0d8111208c747f89cb50a088b46048947fcc707d81112088d47ec8945 *f48d47f88945f0be48d1110883c5ece9d65f050089f628b00a0800000200120009008d45f03b43 *547303ff63f8c745f8d46d10088975fcc745f420c91108bee0d1110883c5f0e9935b05008d7600 *20b00a0801000100130075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ece0b50a088b46048947f0c747f84cb60a088d47ec8945f48d47f889 *45f0be48d1110883c5ece93f5f05008d760020b00a080b0002000000000011007f008d45f83b43 *54720883c7183b7b5c760fbe30c91108c7436c06000000ff63fcc747ec1cb50a088b45048947f0 *c747f884b60a088b45008947fc8d47ec8945048d47f8894500c745fca8d01108be48d1110883c5 *f8e9a36305008d760004000100000000001100000083c7083b7b5c760fbe38c91108c7436c0200 *0000ff63fcc747fcccba0a088b450089078d77fc83c5048b4d00ff61f0900b0002000000000011 *00000083c70c3b7b5c760fbe44c91108c7436c03000000ff63fcc747f80cbb0a088b45008947fc *8b4d04890f8d77f883c5088b5500ff62e48d760004000100000000001100000083c7083b7b5c76 *0fbe48c91108c7436c02000000ff63fcc747fc2cbb0a088b450089078d77fc83c5048b4d00ff61 *e09083c7083b7b5c760ac7436c02000000ff63f8c747fcccba0a088b460489078d77fc83c5048b *4d00ff61f089f6be3cc9110883c5048b4500ff60ec89f62cb80a0800b80a080000000000000000 *250000008b7604c7450050b80a08ff26be40c9110883c5048b4500ff60e889f600000000240000 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f80cbb0a088b46048947fc8b4e08890f8d77 *f883c5048b5500ff62e48b7604c7450074b80a08ff2683c7083b7b5c760ac7436c02000000ff63 *f8c747fc2cbb0a088b460489078d77fc83c5048b4d00ff61e089f6b0b80a08a4b80a0800000000 *00000000250000008b7604c74500f0b80a08ff26f0b80a085cb80a080000000000000000250000 *008b7604c7450010b90a08ff2610b90a0850b80a08000000000000000025000000040001000000 *0000110000008b7500c7450030b90a08ff2683c7103b7b5c760ac7436c04000000ff63f8c747f4 *f0dc0b088b46048947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f09083c7103b *7b5c760ac7436c04000000ff63f8c747f410dd0b08c747f808d21108c747fcf0dc0b088d47f489 *078d77fc83c5048b4d00ff61f083c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c7 *47f808d21108c747fc10dd0b088d47f489078d77fc83c5048b4d00ff61ec83c7243b7b5c760ac7 *436c09000000ff63f8c747e0d8dc0b088b46048947e48b46088947e8c747ecf0dc0b088d47e089 *47f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec *9083c7183b7b5c760ac7436c06000000ff63f8c747ec10dd0b088b46048947f0c747f410dd0b08 *8d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec48ba0a08f0b90a08b8 *b90a0880b90a0848b90a080000000000000000250000000400010000000000110000008b7500c7 *4500acba0a08ff2601000000020000008b4500ff60f089f601000000090000008b4500ff60f089 *f6000000000a0001008b4500ff60ec89f6000000000a0002008b4500ff60e889f6020000000400 *03008b4500ff60e489f602000000090003008b4500ff60e489f601000000020004008b4500ff60 *e089f601000000090004008b4500ff60e09090e900000000833d54c9110800751ec70554c91108 *01000000c7450004aa0b0883c504c7450090310c0883c50483c5fcff650089f6be00d2110883c5 *088b4500ff60f089f68b75088b450489450883c508e9930000008d760083c7183b7b5c760ac743 *6c06000000ff63f8c747ec8c6b10088b45088947f08b45048947f4c747f87cdc0b088b46048947 *fc8d47ec89078d77f883c50c8b4500ff60ec909cbb0a0888bb0a08000000000200000025000000 *8b46088945008b7604c745fcf4bb0a0883c5fcff268d7600f4bb0a0878bb0a0800000000010000 *002500000004000100000001000b0000008d45f83b43547303ff63fc8b4d0089750089cec745fc *20bc0a0883c5fcff269001000100130000008d45f43b4354720883c7083b7b5c760ac7436c0200 *0000ff63f8c745f8d46d10088975fcc747fc2cbc0a088b4e04894df48d77fc83c5f4eb9f8d7600 *be00d2110883c5088b4500ff60f089f683c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b *10088b45088947f08b45048947f4c747f87cdc0b088b46048947fc8d47ec89078d77f883c50c8b *4500ff60ec908b75088b450489450883c508eb4e89f6e4bc0a08a0bc0a08000000000200000025 *0000008b46088945008b7604c745fc08bd0a0883c5fcff268d760008bd0a0890bc0a0800000000 *010000002500000004000100000001000b0000008d45f83b43547303ff63fc8b4d0089750089ce *c745fc34bd0a0883c5fcff269001000100130000008d45f43b4354720883c7083b7b5c760ac743 *6c02000000ff63f8c745f8d46d10088975fcc747fc40bd0a088b4e04894df48d77fc83c5f4eb9f *8d760004000100000000001100000083c7243b7b5c760fbe58c91108c7436c09000000ff63fcc7 *47e054bc0a088b45008947e4c747ec68bd0a088b45008947f0c747f8e4bb0b088d47ec8947fc8d *47e089078d77f883c504ff6500ccd1110880d11108fcbd0a0800000200180003008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e81d40050083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e9a1 *53050090d4d1110818d41108a8d611080000000024000000c7450064cc11088b760c83c5fce97a *53050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbe *a8d61108c745f47cbe0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9c03f1108894df4bed4d1110883c5f0e92b5105008d7600 *0000000024000000c7450060cc11088b760c83c5fce9ee52050089f670be0a0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f408bf0a0883c5f4ff26 *89f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *dc3f1108894df4bed4d1110883c5f0e99f5005008d76000000000024000000c745005ccc11088b *760c83c5fce96252050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fcbea8d61108c745f494bf0a0883c5f4ff2689f668be0a0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ec3f1108894df4bed4d1110883c5f0e9 *135005008d76000000000024000000c7450058cc11088b760c83c5fce9d651050089f670be0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f420c0 *0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b904401108894df4bed4d1110883c5f0e9874f05008d76000000000024000000c7 *450054cc11088b760c83c5fce94a51050089f670be0a0800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fcbea8d61108c745f4acc00a0883c5f4ff2689f668be0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b918401108894df4bed4 *d1110883c5f0e9fb4e05008d76000000000024000000c7450050cc11088b760c83c5fce9be5005 *0089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d6 *1108c745f438c10a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b928401108894df4bed4d1110883c5f0e96f4e05008d76000000 *000024000000c745004ccc11088b760c83c5fce93250050089f670be0a0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4c4c10a0883c5f4ff2689f6 *68be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c40 *1108894df4bed4d1110883c5f0e9e34d05008d76000000000024000000c7450048cc11088b760c *83c5fce9a64f050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fcbea8d61108c745f450c20a0883c5f4ff2689f668be0a0800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b948401108894df4bed4d1110883c5f0e9574d *05008d76000000000024000000c7450044cc11088b760c83c5fce91a4f050089f670be0a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4dcc20a08 *83c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b950401108894df4bed4d1110883c5f0e9cb4c05008d76000000000024000000c74500 *40cc11088b760c83c5fce98e4e050089f670be0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fcbea8d61108c745f468c30a0883c5f4ff2689f668be0a080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b960401108894df4bed4d111 *0883c5f0e93f4c05008d76000000000024000000c745003ccc11088b760c83c5fce9024e050089 *f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108 *c745f4f4c30a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b96c401108894df4bed4d1110883c5f0e9b34b05008d760000000000 *24000000c7450038cc11088b760c83c5fce9764d050089f670be0a0800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f480c40a0883c5f4ff2689f668be *0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b988401108 *894df4bed4d1110883c5f0e9274b05008d76000000000024000000c7450034cc11088b760c83c5 *fce9ea4c050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fcbea8d61108c745f40cc50a0883c5f4ff2689f668be0a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9a4401108894df4bed4d1110883c5f0e99b4a0500 *8d76000000000024000000c7450030cc11088b760c83c5fce95e4c050089f670be0a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f498c50a0883c5 *f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9c0401108894df4bed4d1110883c5f0e90f4a05008d76000000000024000000c745002ccc *11088b760c83c5fce9d24b050089f670be0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcbea8d61108c745f424c60a0883c5f4ff2689f668be0a0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9dc401108894df4bed4d1110883 *c5f0e9834905008d76000000000024000000c7450028cc11088b760c83c5fce9464b050089f670 *be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745 *f4b0c60a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9ec401108894df4bed4d1110883c5f0e9f74805008d7600000000002400 *0000c7450024cc11088b760c83c5fce9ba4a050089f670be0a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fcbea8d61108c745f43cc70a0883c5f4ff2689f668be0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b904411108894d *f4bed4d1110883c5f0e96b4805008d76000000000024000000c7450020cc11088b760c83c5fce9 *2e4a050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *bea8d61108c745f4c8c70a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b908411108894df4bed4d1110883c5f0e9df4705008d76 *000000000024000000c745001ccc11088b760c83c5fce9a249050089f670be0a08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f454c80a0883c5f4ff *2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b918411108894df4bed4d1110883c5f0e9534705008d76000000000024000000c7450018cc1108 *8b760c83c5fce91649050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fcbea8d61108c745f4e0c80a0883c5f4ff2689f668be0a0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c411108894df4bed4d1110883c5f0 *e9c74605008d76000000000024000000c7450014cc11088b760c83c5fce98a48050089f670be0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f46c *c90a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b940411108894df4bed4d1110883c5f0e93b4605008d76000000000024000000 *c7450010cc11088b760c83c5fce9fe47050089f670be0a0800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fcbea8d61108c745f4f8c90a0883c5f4ff2689f668be0a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950411108894df4be *d4d1110883c5f0e9af4505008d76000000000024000000c745000ccc11088b760c83c5fce97247 *050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8 *d61108c745f484ca0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b964411108894df4bed4d1110883c5f0e9234505008d760000 *00000024000000c7450008cc11088b760c83c5fce9e646050089f670be0a080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f410cb0a0883c5f4ff2689 *f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980 *411108894df4bed4d1110883c5f0e9974405008d76000000000024000000c7450004cc11088b76 *0c83c5fce95a46050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fcbea8d61108c745f49ccb0a0883c5f4ff2689f668be0a0800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b998411108894df4bed4d1110883c5f0e90b *4405008d76000000000024000000c7450000cc11088b760c83c5fce9ce45050089f670be0a0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f428cc0a *0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9a4411108894df4bed4d1110883c5f0e97f4305008d76000000000024000000c745 *00fccb11088b760c83c5fce94245050089f670be0a0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fcbea8d61108c745f4b4cc0a0883c5f4ff2689f668be0a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9bc411108894df4bed4d1 *110883c5f0e9f34205008d76000000000024000000c74500f8cb11088b760c83c5fce9b6440500 *89f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d611 *08c745f440cd0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9d8411108894df4bed4d1110883c5f0e9674205008d7600000000 *0024000000c74500f4cb11088b760c83c5fce92a44050089f670be0a0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4cccd0a0883c5f4ff2689f668 *be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f04111 *08894df4bed4d1110883c5f0e9db4105008d76000000000024000000c74500f0cb11088b760c83 *c5fce99e43050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fcbea8d61108c745f458ce0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b904421108894df4bed4d1110883c5f0e94f4105 *008d76000000000024000000c74500eccb11088b760c83c5fce91243050089f670be0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4e4ce0a0883 *c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b910421108894df4bed4d1110883c5f0e9c34005008d760068be0a080000020018000700 *8d45f03b4354720b81c7dc0500003b7b5c760ac7436c77010000ff63f8c78728faffff085c1008 *56e8b32e050083c4048d8728faffff894604c706245b1008c745f8d46d10088d8728faffff8945 *fcc78734faffff9cbe0a08c78740faffffd0be0a08c7874cfaffffe4bb0b088d8740faffff8987 *50faffff8d8734faffff898754faffffc78758faffff7cdc0b088d874cfaffff89875cfaffffc7 *8760faffff00d21108c78764faffff28bf0a08c78770faffff5cbf0a08c7877cfaffffe4bb0b08 *8d8770faffff898780faffff8d8764faffff898784faffffc78788faffff7cdc0b088d877cfaff *ff89878cfaffff8d8758faffff898790faffffc78794faffffb4bf0a08c787a0faffffe8bf0a08 *c787acfaffffe4bb0b088d87a0faffff8987b0faffff8d8794faffff8987b4faffffc787b8faff *ff7cdc0b088d87acfaffff8987bcfaffff8d8788faffff8987c0faffffc787c4faffff40c00a08 *c787d0faffff74c00a08c787dcfaffffe4bb0b088d87d0faffff8987e0faffff8d87c4faffff89 *87e4faffffc787e8faffff7cdc0b088d87dcfaffff8987ecfaffff8d87b8faffff8987f0faffff *c787f4faffffccc00a08c78700fbffff00c10a08c7870cfbffffe4bb0b088d8700fbffff898710 *fbffff8d87f4faffff898714fbffffc78718fbffff7cdc0b088d870cfbffff89871cfbffff8d87 *e8faffff898720fbffffc78724fbffff58c10a08c78730fbffff8cc10a08c7873cfbffffe4bb0b *088d8730fbffff898740fbffff8d8724fbffff898744fbffffc78748fbffff7cdc0b088d873cfb *ffff89874cfbffff8d8718fbffff898750fbffffc78754fbffffe4c10a08c78760fbffff18c20a *08c7876cfbffffe4bb0b088d8760fbffff898770fbffff8d8754fbffff898774fbffffc78778fb *ffff7cdc0b088d876cfbffff89877cfbffff8d8748fbffff898780fbffffc78784fbffff70c20a *08c78790fbffffa4c20a08c7879cfbffffe4bb0b088d8790fbffff8987a0fbffff8d8784fbffff *8987a4fbffffc787a8fbffff7cdc0b088d879cfbffff8987acfbffff8d8778fbffff8987b0fbff *ffc787b4fbfffffcc20a08c787c0fbffff30c30a08c787ccfbffffe4bb0b088d87c0fbffff8987 *d0fbffff8d87b4fbffff8987d4fbffffc787d8fbffff7cdc0b088d87ccfbffff8987dcfbffff8d *87a8fbffff8987e0fbffffc787e4fbffff88c30a08c787f0fbffffbcc30a08c787fcfbffffe4bb *0b088d87f0fbffff898700fcffff8d87e4fbffff898704fcffffc78708fcffff7cdc0b088d87fc *fbffff89870cfcffff8d87d8fbffff898710fcffffc78714fcffff14c40a08c78720fcffff48c4 *0a08c7872cfcffffe4bb0b088d8720fcffff898730fcffff8d8714fcffff898734fcffffc78738 *fcffff7cdc0b088d872cfcffff89873cfcffff8d8708fcffff898740fcffffc78744fcffffa0c4 *0a08c78750fcffffd4c40a08c7875cfcffffe4bb0b088d8750fcffff898760fcffff8d8744fcff *ff898764fcffffc78768fcffff7cdc0b088d875cfcffff89876cfcffff8d8738fcffff898770fc *ffffc78774fcffff2cc50a08c78780fcffff60c50a08c7878cfcffffe4bb0b088d8780fcffff89 *8790fcffff8d8774fcffff898794fcffffc78798fcffff7cdc0b088d878cfcffff89879cfcffff *8d8768fcffff8987a0fcffffc787a4fcffffb8c50a08c787b0fcffffecc50a08c787bcfcffffe4 *bb0b088d87b0fcffff8987c0fcffff8d87a4fcffff8987c4fcffffc787c8fcffff7cdc0b088d87 *bcfcffff8987ccfcffff8d8798fcffff8987d0fcffffc787d4fcffff44c60a08c787e0fcffff78 *c60a08c787ecfcffffe4bb0b088d87e0fcffff8987f0fcffff8d87d4fcffff8987f4fcffffc787 *f8fcffff7cdc0b088d87ecfcffff8987fcfcffff8d87c8fcffff898700fdffffc78704fdffffd0 *c60a08c78710fdffff04c70a08c7871cfdffffe4bb0b088d8710fdffff898720fdffff8d8704fd *ffff898724fdffffc78728fdffff7cdc0b088d871cfdffff89872cfdffff8d87f8fcffff898730 *fdffffc78734fdffff5cc70a08c78740fdffff90c70a08c7874cfdffffe4bb0b088d8740fdffff *898750fdffff8d8734fdffff898754fdffffc78758fdffff7cdc0b088d874cfdffff89875cfdff *ff8d8728fdffff898760fdffffc78764fdffffe8c70a08c78770fdffff1cc80a08c7877cfdffff *e4bb0b088d8770fdffff898780fdffff8d8764fdffff898784fdffffc78788fdffff7cdc0b088d *877cfdffff89878cfdffff8d8758fdffff898790fdffffc78794fdffff74c80a08c787a0fdffff *a8c80a08c787acfdffffe4bb0b088d87a0fdffff8987b0fdffff8d8794fdffff8987b4fdffffc7 *87b8fdffff7cdc0b088d87acfdffff8987bcfdffff8d8788fdffff8987c0fdffffc787c4fdffff *00c90a08c787d0fdffff34c90a08c787dcfdffffe4bb0b088d87d0fdffff8987e0fdffff8d87c4 *fdffff8987e4fdffffc787e8fdffff7cdc0b088d87dcfdffff8987ecfdffff8d87b8fdffff8987 *f0fdffffc787f4fdffff8cc90a08c78700feffffc0c90a08c7870cfeffffe4bb0b088d8700feff *ff898710feffff8d87f4fdffff898714feffffc78718feffff7cdc0b088d870cfeffff89871cfe *ffff8d87e8fdffff898720feffffc78724feffff18ca0a08c78730feffff4cca0a08c7873cfeff *ffe4bb0b088d8730feffff898740feffff8d8724feffff898744feffffc78748feffff7cdc0b08 *8d873cfeffff89874cfeffff8d8718feffff898750feffffc78754feffffa4ca0a08c78760feff *ffd8ca0a08c7876cfeffffe4bb0b088d8760feffff898770feffff8d8754feffff898774feffff *c78778feffff7cdc0b088d876cfeffff89877cfeffff8d8748feffff898780feffffc78784feff *ff30cb0a08c78790feffff64cb0a08c7879cfeffffe4bb0b088d8790feffff8987a0feffff8d87 *84feffff8987a4feffffc787a8feffff7cdc0b088d879cfeffff8987acfeffff8d8778feffff89 *87b0feffffc787b4feffffbccb0a08c787c0fefffff0cb0a08c787ccfeffffe4bb0b088d87c0fe *ffff8987d0feffff8d87b4feffff8987d4feffffc787d8feffff7cdc0b088d87ccfeffff8987dc *feffff8d87a8feffff8987e0feffffc787e4feffff48cc0a08c787f0feffff7ccc0a08c787fcfe *ffffe4bb0b088d87f0feffff898700ffffff8d87e4feffff898704ffffffc78708ffffff7cdc0b *088d87fcfeffff89870cffffff8d87d8feffff898710ffffffc78714ffffffd4cc0a08c78720ff *ffff08cd0a08c7872cffffffe4bb0b088d8720ffffff898730ffffff8d8714ffffff898734ffff *ffc78738ffffff7cdc0b088d872cffffff89873cffffff8d8708ffffff898740ffffffc78744ff *ffff60cd0a08c78750ffffff94cd0a08c7875cffffffe4bb0b088d8750ffffff898760ffffff8d *8744ffffff898764ffffffc78768ffffff7cdc0b088d875cffffff89876cffffff8d8738ffffff *898770ffffffc78774ffffffeccd0a08c7478020ce0a08c7478ce4bb0b088d47808947908d8774 *ffffff894794c747987cdc0b088d478c89479c8d8768ffffff8947a0c747a478ce0a08c747b0ac *ce0a08c747bce4bb0b088d47b08947c08d47a48947c4c747c87cdc0b088d47bc8947cc8d479889 *47d0c747d404cf0a08c747e038cf0a08c747ece4bb0b088d47e08947f08d47d48947f4c747f87c *dc0b088d47ec8947fc8d47c889078d47f88945f4be18d4110883c5f0e9f037050020d411086cc9 *110818da0a0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e80124050083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f46cc91108be20d4110883c5f0e98537050090d4d11108c0d4110884da0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b928421108894df4bed4 *d1110883c5f0e9633505008d760084da0a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b944421108894df4bed4d1110883c5f0e9273505008d760084da0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954421108894d *f4bed4d1110883c5f0e9eb3405008d760084da0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b96c421108894df4bed4d1110883c5f0e9af3405008d760084 *da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9804211 *08894df4bed4d1110883c5f0e9733405008d760084da0a0800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b990421108894df4bed4d1110883c5f0e9373405008d *760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *a4421108894df4bed4d1110883c5f0e9fb3305008d760084da0a0800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9b0421108894df4bed4d1110883c5f0e9bf33 *05008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9b8421108894df4bed4d1110883c5f0e9833305008d760084da0a0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c8421108894df4bed4d1110883c5f0 *e9473305008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9d4421108894df4bed4d1110883c5f0e90b3305008d760084da0a08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f0421108894df4bed4d11108 *83c5f0e9cf3205008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b90c431108894df4bed4d1110883c5f0e9933205008d760084da0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b928431108894df4bed4 *d1110883c5f0e9573205008d760084da0a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b944431108894df4bed4d1110883c5f0e91b3205008d760084da0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954431108894d *f4bed4d1110883c5f0e9df3105008d760084da0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b96c431108894df4bed4d1110883c5f0e9a33105008d760084 *da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9704311 *08894df4bed4d1110883c5f0e9673105008d760084da0a0800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b980431108894df4bed4d1110883c5f0e92b3105008d *760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *94431108894df4bed4d1110883c5f0e9ef3005008d760084da0a0800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9a8431108894df4bed4d1110883c5f0e9b330 *05008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9b8431108894df4bed4d1110883c5f0e9773005008d760084da0a0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc431108894df4bed4d1110883c5f0 *e93b3005008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9e8431108894df4bed4d1110883c5f0e9ff2f05008d760084da0a08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b900441108894df4bed4d11108 *83c5f0e9c32f05008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b90c441108894df4bed4d1110883c5f0e9872f05008d760084da0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b924441108894df4bed4 *d1110883c5f0e94b2f05008d760084da0a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b940441108894df4bed4d1110883c5f0e90f2f05008d760084da0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b958441108894d *f4bed4d1110883c5f0e9d32e05008d760084da0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b96c441108894df4bed4d1110883c5f0e9972e05008d760084 *da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9784411 *08894df4bed4d1110883c5f0e95b2e05008d760084da0a0800000000240003008b068b40fcc1e8 *1085c00f8c3c05000083f81d0f8f33050000b994c91108ff24818d760083c70c3b7b5c760ac743 *6c03000000ff63f8c747f8a0e10a088d47f8894500bec0d4110883c5fce9dc2f050083c70c3b7b *5c760ac7436c03000000ff63f8c747f864e10a088d47f8894500bec0d4110883c5fce9b02f0500 *83c70c3b7b5c760ac7436c03000000ff63f8c747f828e10a088d47f8894500bec0d4110883c5fc *e9842f050083c70c3b7b5c760ac7436c03000000ff63f8c747f8ece00a088d47f8894500bec0d4 *110883c5fce9582f050083c70c3b7b5c760ac7436c03000000ff63f8c747f8b0e00a088d47f889 *4500bec0d4110883c5fce92c2f050083c70c3b7b5c760ac7436c03000000ff63f8c747f874e00a *088d47f8894500bec0d4110883c5fce9002f050083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f838e00a088d47f8894500bec0d4110883c5fce9d42e050083c70c3b7b5c760ac7436c030000 *00ff63f8c747f8fcdf0a088d47f8894500bec0d4110883c5fce9a82e050083c70c3b7b5c760ac7 *436c03000000ff63f8c747f8c0df0a088d47f8894500bec0d4110883c5fce97c2e050083c70c3b *7b5c760ac7436c03000000ff63f8c747f884df0a088d47f8894500bec0d4110883c5fce9502e05 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f848df0a088d47f8894500bec0d4110883c5 *fce9242e050083c70c3b7b5c760ac7436c03000000ff63f8c747f80cdf0a088d47f8894500bec0 *d4110883c5fce9f82d050083c70c3b7b5c760ac7436c03000000ff63f8c747f8d0de0a088d47f8 *894500bec0d4110883c5fce9cc2d050083c70c3b7b5c760ac7436c03000000ff63f8c747f894de *0a088d47f8894500bec0d4110883c5fce9a02d050083c70c3b7b5c760ac7436c03000000ff63f8 *c747f858de0a088d47f8894500bec0d4110883c5fce9742d050083c70c3b7b5c760ac7436c0300 *0000ff63f8c747f81cde0a088d47f8894500bec0d4110883c5fce9482d050083c70c3b7b5c760a *c7436c03000000ff63f8c747f8e0dd0a088d47f8894500bec0d4110883c5fce91c2d050083c70c *3b7b5c760ac7436c03000000ff63f8c747f8a4dd0a088d47f8894500bec0d4110883c5fce9f02c *050083c70c3b7b5c760ac7436c03000000ff63f8c747f868dd0a088d47f8894500bec0d4110883 *c5fce9c42c050083c70c3b7b5c760ac7436c03000000ff63f8c747f82cdd0a088d47f8894500be *c0d4110883c5fce9982c050083c70c3b7b5c760ac7436c03000000ff63f8c747f8f0dc0a088d47 *f8894500bec0d4110883c5fce96c2c050083c70c3b7b5c760ac7436c03000000ff63f8c747f8b4 *dc0a088d47f8894500bec0d4110883c5fce9402c050083c70c3b7b5c760ac7436c03000000ff63 *f8c747f878dc0a088d47f8894500bec0d4110883c5fce9142c050083c70c3b7b5c760ac7436c03 *000000ff63f8c747f83cdc0a088d47f8894500bec0d4110883c5fce9e82b050083c70c3b7b5c76 *0ac7436c03000000ff63f8c747f800dc0a088d47f8894500bec0d4110883c5fce9bc2b050083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8c4db0a088d47f8894500bec0d4110883c5fce990 *2b050083c70c3b7b5c760ac7436c03000000ff63f8c747f888db0a088d47f8894500bec0d41108 *83c5fce9642b050083c70c3b7b5c760ac7436c03000000ff63f8c747f84cdb0a088d47f8894500 *bec0d4110883c5fce9382b050083c70c3b7b5c760ac7436c03000000ff63f8c747f810db0a088d *47f8894500bec0d4110883c5fce90c2b050083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *d4da0a088d47f8894500bec0d4110883c5fce9e02a050083c70c3b7b5c760ac7436c03000000ff *63f8c747f898da0a088d47f8894500bec0d4110883c5fce9b42a050084da0a080b000200000000 *00110003008b7504c74504dce10a0883c504ff26908cc911080cca110874e70a08000002001800 *03008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a516 *050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f40cca1108be8c *c9110883c5f0e9292a050090ccd4110814ca1108e0e70a0800000200180003008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83916050083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcc745f414ca1108beccd4110883c5f0e9bd29 *05009040d1110821000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7 *d883c0fcff2481904ce80a0801000000240001008b45048945fc897504be40d11108c7450058e8 *0a0883c5f8e9672905008d76004ce80a080b00020000000000110001008d45f83b43547308be34 *ca1108ff63fc8b4d00894dfcbe40d11108c7450084e80a0883c5f8e92a29050089f654d1110840 *d11108e4e80a0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08 *894df48b56048955f083c5f0eb9a89f6e0e80a080b000200000000001100030083c70c3b7b5c76 *0fbe3cca1108c7436c03000000ff63fcc747f8f4e80a088b45008947fc8b4d04890f8d57f88955 *04be54d11108e9a32805008d76009cd011085cc9110844ca110868e90a0800000200180007008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8ad14050083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f45cc91108c745f044ca *1108be9cd0110883c5ece9362c050089f6b4d0110854ca1108e0e90a0800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83914050083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f454ca1108beb4d0110883 *c5f0e9bd27050090d4d1110844d11108e0d1110864ca11084cea0a0800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b990441108894df4bed4d1110883c5f0e993 *2505008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9a8441108894df4bed4d1110883c5f0e9572505008d76004cea0a080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b4441108894df4bed4d1110883c5 *f0e91b2505008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9c0441108894df4bed4d1110883c5f0e9df2405008d76004cea0a080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d0441108894df4bed4d111 *0883c5f0e9a32405008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9e0441108894df4bed4d1110883c5f0e9672405008d76004cea0a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b900451108894df4be *d4d1110883c5f0e92b2405008d76004cea0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b920451108894df4bed4d1110883c5f0e9ef2305008d76004cea0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94045110889 *4df4bed4d1110883c5f0e9b32305008d76004cea0a0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b948451108894df4bed4d1110883c5f0e9772305008d7600 *4cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b95045 *1108894df4bed4d1110883c5f0e93b2305008d76004cea0a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b960451108894df4bed4d1110883c5f0e9ff220500 *8d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b968451108894df4bed4d1110883c5f0e9c32205008d76004cea0a0800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b978451108894df4bed4d1110883c5f0e987 *2205008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b988451108894df4bed4d1110883c5f0e94b2205008d76004cea0a080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b998451108894df4bed4d1110883c5 *f0e90f2205008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9ac451108894df4bed4d1110883c5f0e9d32105008d76004cea0a080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9bc451108894df4bed4d111 *0883c5f0e9972105008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9cc451108894df4bed4d1110883c5f0e95b2105008d76004cea0a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9dc451108894df4be *d4d1110883c5f0e91f2105008d76004cea0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9ec451108894df4bed4d1110883c5f0e9e32005008d76004cea0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9fc45110889 *4df4bed4d1110883c5f0e9a72005008d76004cea0a0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b91c461108894df4bed4d1110883c5f0e96b2005008d7600 *4cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c46 *1108894df4bed4d1110883c5f0e92f2005008d76004cea0a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b93c461108894df4bed4d1110883c5f0e9f31f0500 *8d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b94c461108894df4bed4d1110883c5f0e9b71f05008d76004cea0a0800000000240001008b068b *40fcc1e81085c00f8cba05000083f81d0f8fb1050000b97cca1108ff24818d760083c7143b7b5c *760ac7436c05000000ff63f8c747f044f00a08c747fce4a90b088d47f089078d77fc83c5048b45 *00ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f008f00a08c747fce4a90b088d47f0 *89078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0ccef0a08 *c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000 *ff63f8c747f090ef0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b *5c760ac7436c05000000ff63f8c747f054ef0a08c747fce4a90b088d47f089078d77fc83c5048b *4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f018ef0a08c747fce4a90b088d47 *f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0dcee0a *08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c050000 *00ff63f8c747f0a0ee0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b *7b5c760ac7436c05000000ff63f8c747f064ee0a08c747fce4a90b088d47f089078d77fc83c504 *8b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f028ee0a08c747fce4a90b088d *47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0eced *0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c0500 *0000ff63f8c747f0b0ed0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c714 *3b7b5c760ac7436c05000000ff63f8c747f074ed0a08c747fce4a90b088d47f089078d77fc83c5 *048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f038ed0a08c747fce4a90b08 *8d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0fc *ec0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05 *000000ff63f8c747f0c0ec0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7 *143b7b5c760ac7436c05000000ff63f8c747f084ec0a08c747fce4a90b088d47f089078d77fc83 *c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f048ec0a08c747fce4a90b *088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0 *0cec0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c *05000000ff63f8c747f0d0eb0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83 *c7143b7b5c760ac7436c05000000ff63f8c747f094eb0a08c747fce4a90b088d47f089078d77fc *83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f058eb0a08c747fce4a9 *0b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747 *f01ceb0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac743 *6c05000000ff63f8c747f0e0ea0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec *83c7143b7b5c760ac7436c05000000ff63f8c747f0a4ea0a08c747fce4a90b088d47f089078d77 *fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f068ea0a08c747fce4 *a90b088d47f089078d77fc83c5048b4500ff60ec83c7083b7b5c760ac7436c02000000ff63f8c7 *47fcc4a90b08c70754cc11088d77fc83c5048b4500ff60f083c7083b7b5c760ac7436c02000000 *ff63f8c747fcc4a90b08c70758cc11088d77fc83c5048b4500ff60f083c7083b7b5c760ac7436c *02000000ff63f8c747fcc4a90b08c7075ccc11088d77fc83c5048b4500ff60f083c7083b7b5c76 *0ac7436c02000000ff63f8c747fcc4a90b08c70760cc11088d77fc83c5048b4500ff60f083c708 *3b7b5c760ac7436c02000000ff63f8c747fcc4a90b08c70764cc11088d77fc83c5048b4500ff60 *f08d76004cea0a0804000100000001000b0001008b7500c7450080f00a08ff264cea0a08010001 *00130005008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d100889 *75fcc747fc88f60a088b4e04894df48d57fc8955f0bee0d1110883c5ece9301f05004cea0a0801 *00010013000f008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8a0f60a088b4e04894ffc8d57f88955f4c745f064ca1108be44d1110883c5ece9 *d91e0500904cea0a08040001000000000011000f008d45f83b4354720883c70c3b7b5c760fbe74 *ca1108c7436c03000000ff63fcc747f8f0f60a088b4d00894ffc8d57f8895500c745fc58c91108 *be44d1110883c5f8e9821e050089f6d4d1110844d11108e0d1110864ca110894f70a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c461108894df4bed4d1 *110883c5f0e94b1805008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b970461108894df4bed4d1110883c5f0e90f1805008d760094f70a0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974461108894df4 *bed4d1110883c5f0e9d31705008d760094f70a0800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b978461108894df4bed4d1110883c5f0e9971705008d760094f7 *0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97c461108 *894df4bed4d1110883c5f0e95b1705008d760094f70a0800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b980461108894df4bed4d1110883c5f0e91f1705008d76 *0094f70a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b984 *461108894df4bed4d1110883c5f0e9e31605008d760094f70a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b988461108894df4bed4d1110883c5f0e9a71605 *008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b98c461108894df4bed4d1110883c5f0e96b1605008d760094f70a0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b990461108894df4bed4d1110883c5f0e9 *2f1605008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b994461108894df4bed4d1110883c5f0e9f31505008d760094f70a0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b998461108894df4bed4d1110883 *c5f0e9b71505008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b99c461108894df4bed4d1110883c5f0e97b1505008d760094f70a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a0461108894df4bed4d1 *110883c5f0e93f1505008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9a4461108894df4bed4d1110883c5f0e9031505008d760094f70a0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8461108894df4 *bed4d1110883c5f0e9c71405008d760094f70a0800000000240001008b068b40fcc1e81085c00f *8ca503000083f81e0f8f9c030000b9fcca1108ff24818d760083c7143b7b5c760ac7436c050000 *00ff63f8c747f034fb0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b *7b5c760ac7436c05000000ff63f8c747f0f8fa0a08c747fce4a90b088d47f089078d77fc83c504 *8b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0bcfa0a08c747fce4a90b088d *47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f080fa *0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c0500 *0000ff63f8c747f044fa0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c714 *3b7b5c760ac7436c05000000ff63f8c747f008fa0a08c747fce4a90b088d47f089078d77fc83c5 *048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0ccf90a08c747fce4a90b08 *8d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f090 *f90a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05 *000000ff63f8c747f054f90a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7 *143b7b5c760ac7436c05000000ff63f8c747f018f90a08c747fce4a90b088d47f089078d77fc83 *c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0dcf80a08c747fce4a90b *088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0 *a0f80a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7083b7b5c760ac7436c *02000000ff63f8c747fce4a90b08c70700d211088d77fc83c5048b4500ff60ec83c7083b7b5c76 *0ac7436c02000000ff63f8c747fce4a90b08c70700d211088d77fc83c5048b4500ff60ec83c708 *3b7b5c760ac7436c02000000ff63f8c747fce4a90b08c70700d211088d77fc83c5048b4500ff60 *ec83c7143b7b5c760ac7436c05000000ff63f8c747f064f80a08c747fce4a90b088d47f089078d *77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f028f80a08c747fc *e4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8 *c747f0ecf70a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760a *c7436c05000000ff63f8c747f0b0f70a08c747fce4a90b088d47f089078d77fc83c5048b4500ff *60ec83c7083b7b5c760ac7436c02000000ff63f8c747fcc4a90b0889378d77fc83c5048b4500ff *60f094f70a0804000100000001000b0001008b7500c7450070fb0a08ff2694f70a080100010013 *0005008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fc *c747fc5cff0a088b4e04894df48d57fc8955f0bee0d1110883c5ece95c16050094f70a08010001 *0013000f008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f874ff0a088b4e04894ffc8d57f88955f4c745f064ca1108be44d1110883c5ece90516 *05009094f70a08040001000000000011000f008d45f83b4354720883c70c3b7b5c760fbef4ca11 *08c7436c03000000ff63fcc747f8c4ff0a088b4d00894ffc8d57f8895500c745fc58c91108be44 *d1110883c5f8e9ae15050089f6d4d1110844d11108e0d1110864ca110868000b08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ac461108894df4bed4d11108 *83c5f0e9770f05008d760068000b0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9b4461108894df4bed4d1110883c5f0e93b0f05008d760068000b08000000 *00240001008b068b40fcc1e81083f80e0f8d9d00000083f8087d3483f8040f853901000083c708 *3b7b5c760ac7436c02000000ff63f8c747fce4a90b08c70700d211088d77fc83c5048b4500ff60 *ec83f80d7d3483f8080f850001000083c7083b7b5c760ac7436c02000000ff63f8c747fce4a90b *08c70700d211088d77fc83c5048b4500ff60ec83c7083b7b5c760ac7436c02000000ff63f8c747 *fce4a90b08c70700d211088d77fc83c5048b4500ff60ec83f8117d3a83f80e0f859c00000083c7 *143b7b5c760ac7436c05000000ff63f8c747f0c0000b08c747fce4a90b088d47f089078d77fc83 *c5048b4500ff60ec83f81a7d3083f811756183c7083b7b5c760ac7436c02000000ff63f8c747fc *e4a90b08c70700d211088d77fc83c5048b4500ff60ec83f81a753183c7143b7b5c760ac7436c05 *000000ff63f8c747f084000b08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7 *083b7b5c760ac7436c02000000ff63f8c747fcc4a90b0889378d77fc83c5048b4500ff60f09068 *000b0804000100000001000b0001008b7500c74500fc000b08ff2668000b080100010013000500 *8d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc *8c020b088b4e04894df48d57fc8955f0bee0d1110883c5ece92c13050068000b08010001001300 *0f008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8a4020b088b4e04894ffc8d57f88955f4c745f064ca1108be44d1110883c5ece9d512050090 *68000b08040001000000000011000f008d45f83b4354720883c70c3b7b5c760fbe78cb1108c743 *6c03000000ff63fcc747f8f4020b088b4d00894ffc8d57f8895500c745fc58c91108be44d11108 *83c5f8e97e12050089f6d4d4110880cb110898030b0800000200180003008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e881fa040083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f480cb1108bed4d4110883c5f0e9050e0500 *9048d41108a4cb110844d41108a4cb11083cd41108a4cb110804040b0800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e805fa040083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4cb1108be48d4110883 *c5f0e9890d0500900c040b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8a1f9040083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f4a4cb1108be44d4110883c5f0e9250d05009014040b080000020018 *0003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83d *f9040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4cb1108be *3cd4110883c5f0e9c10c050090beeccb110883c504ff650090bef0cb110883c504ff650090bef4 *cb110883c504ff65009060050b0854050b080000000000000000250000008b7604c7450080050b *08ff2680050b0848050b080000000000000000250000008b7604c74500a0050b08ff26bef8cb11 *0883c504ff650090befccb110883c504ff650090b8050b08ac050b080000000000000000250000 *008b7604c74500d8050b08ff26be00cc110883c504ff650090be04cc110883c504ff650090f005 *0b08e4050b080000000000000000250000008b7604c7450010060b08ff2610060b08d8050b0800 *00000000000000250000008b7604c7450030060b08ff2630060b08a0050b080000000000000000 *250000008b7604c7450050060b08ff26be08cc110883c504ff650090be0ccc110883c504ff6500 *9068060b085c060b080000000000000000250000008b7604c7450088060b08ff26be10cc110883 *c504ff650090be14cc110883c504ff650090a0060b0894060b080000000000000000250000008b *7604c74500c0060b08ff26c0060b0888060b080000000000000000250000008b7604c74500e006 *0b08ff26be18cc110883c504ff650090be1ccc110883c504ff650090f8060b08ec060b08000000 *0000000000250000008b7604c7450018070b08ff26be20cc110883c504ff650090be24cc110883 *c504ff65009030070b0824070b080000000000000000250000008b7604c7450050070b08ff2650 *070b0818070b080000000000000000250000008b7604c7450070070b08ff2670070b08e0060b08 *0000000000000000250000008b7604c7450090070b08ff2690070b0850060b0800000000000000 *00250000008b7604c74500b0070b08ff26be28cc110883c504ff650090be2ccc110883c504ff65 *0090c8070b08bc070b080000000000000000250000008b7604c74500e8070b08ff26be30cc1108 *83c504ff650090be34cc110883c504ff65009000080b08f4070b08000000000000000025000000 *8b7604c7450020080b08ff2620080b08e8070b080000000000000000250000008b7604c7450040 *080b08ff26be38cc110883c504ff650090be3ccc110883c504ff65009058080b084c080b080000 *000000000000250000008b7604c7450078080b08ff26be40cc110883c504ff650090be44cc1108 *83c504ff65009090080b0884080b080000000000000000250000008b7604c74500b0080b08ff26 *b0080b0878080b080000000000000000250000008b7604c74500d0080b08ff26d0080b0840080b *080000000000000000250000008b7604c74500f0080b08ff26be48cc110883c504ff650090be4c *cc110883c504ff65009008090b08fc080b080000000000000000250000008b7604c7450028090b *08ff26be50cc110883c504ff650090be54cc110883c504ff65009040090b0834090b0800000000 *00000000250000008b7604c7450060090b08ff2660090b0828090b080000000000000000250000 *008b7604c7450080090b08ff26be58cc110883c504ff650090be5ccc110883c504ff6500909809 *0b088c090b080000000000000000250000008b7604c74500b8090b08ff26be60cc110883c504ff *650090be64cc110883c504ff650090d0090b08c4090b080000000000000000250000008b7604c7 *4500f0090b08ff26f0090b08b8090b080000000000000000250000008b7604c74500100a0b08ff *26100a0b0880090b080000000000000000250000008b7604c74500300a0b08ff26300a0b08f008 *0b080000000000000000250000008b7604c74500500a0b08ff26500a0b08b0070b080000000000 *000000250000000400010000000000110000008b7500c74500700a0b08ff260000000024000000 *8b068b40fcc1e81083f8010f8c350b000083f81e0f8f2c0b0000b970cc110848ff24819083c728 *3b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e410dd0b088d47dc *8947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f4 *89078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08 *c747e008d21108c747e410dd0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b *088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760a *c7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747 *ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc *83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d2 *1108c747e4f0dc0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec89 *47f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a00 *0000ff63f8c747dcf0dc0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ec10dd0b08 *8d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b45 *00ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e4 *10dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc *f0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8 *c747dcf0dc0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ecf0dc0b088d47e48947 *f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083 *c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e4f0dc0b088d *47dc8947e8c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d *47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc *0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f410 *dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c *760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e410dd0b088d47dc8947e8 *c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d *77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e0 *08d21108c747e4f0dc0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47 *ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c *0a000000ff63f8c747dc10dd0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ec10dd *0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c504 *8b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c7 *47e410dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c7 *47fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff *63f8c747dc10dd0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ec10dd0b088d47e4 *8947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60 *f083c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e4f0dc0b *088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b *088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dc *10dd0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747 *f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b *7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e410dd0b088d47dc89 *47e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489 *078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c7 *47e008d21108c747e410dd0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b08 *8d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7 *436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ec *10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83 *c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d211 *08c747e4f0dc0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947 *f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a0000 *00ff63f8c747dcf0dc0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ec10dd0b088d *47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500 *ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e410 *dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10 *dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c7 *47dcf0dc0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ecf0dc0b088d47e48947f0 *c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7 *283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e4f0dc0b088d47 *dc8947e8c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47 *f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b *08c747e008d21108c747e410dd0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f410dd *0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c76 *0ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e410dd0b088d47dc8947e8c7 *47ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77 *fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008 *d21108c747e4f0dc0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec *8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a *000000ff63f8c747dc10dd0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ec10dd0b *088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b *4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747 *e410dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c747 *fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63 *f8c747dc10dd0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ec10dd0b088d47e489 *47f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec *83c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c747ecf0dc0b08 *8d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b45 *00ff60f00400010000000000110000008b7500c74500900a0b08ff26000000000a000000ff6500 *90000000000a000100ff650090000000000a000200ff650090000000000a000300ff6500900000 *00000a000400ff650090000000000a000500ff650090000000000a000600ff650090000000000a *000700ff650090000000000a000800ff650090000000000a000900ff650090000000000a000a00 *ff650090000000000a000b00ff650090000000000a000c00ff650090000000000a000d00ff6500 *90000000000a000e00ff650090000000000a000f00ff650090000000000a001000ff6500900000 *00000a001100ff650090000000000a001200ff650090000000000a001300ff650090000000000a *001400ff650090000000000a001500ff650090000000000a001600ff650090000000000a001700 *ff650090000000000a001800ff650090000000000a001900ff650090000000000a001a00ff6500 *90000000000a001b00ff650090000000000a001c00ff650090000000000a001d00ff6500900000 *00000a001e00ff650090eccb1108f0cb1108f4cb1108f8cb1108fccb110800cc110804cc110808 *cc11080ccc110810cc110814cc110818cc11081ccc110820cc110824cc110828cc11082ccc1108 *30cc110834cc110838cc11083ccc110840cc110844cc110848cc11084ccc110850cc110854cc11 *0858cc11085ccc110860cc110864cc1108e900000000833de8cc110800751ec705e8cc11080100 *0000c7450090310c0883c504c74500689d0b0883c50483c5fcff65009090e900000000833deccc *110800751ec705eccc110801000000c7450074320c0883c504c7450090310c0883c50483c5fcff *65009090e900000000833df0cc1108007564c705f0cc110801000000c7450049bb0a0883c504c7 *45003519050883c504c74500919f050883c504c74500e524060883c504c745006dc4090883c504 *c7450050a70b0883c504c745004dec090883c504c7450090310c0883c504c74500d4630c0883c5 *0483c5fcff650080d111083cc61108a4c5110894c6110814190b0800000200120003008d45f03b *43547303ff63f8c745f8d46d10088975fcc745f43cc61108bea4c5110883c5f0e9b3f804008d76 *0010190b0800000200120009008d45f03b43547303ff63f8c745f8d46d10088975fcc745f480d1 *1108be94c6110883c5f0e97bf804008d760001000100130000008d45f03b43547303ff63f8c745 *f8d46d10088975fcc745f4680a12088b760483c5f0e949f804009001000100130000008d45f03b *43547303ff63f8c745f8d46d10088975fcc745f4680a12088b760483c5f0e919f804009010190b *080000020018000f008d45ec3b4354720883c73c3b7b5c760ac7436c0f000000ff63f8c747c808 *5c100856e831e4040083c4048d47c8894604c706245b1008c745f8d46d10088d47c88945fcc747 *d42c190b08c747e064190b08c747ec98190b088d47e08947f0c747f8c8190b088d47e08947fc8d *47ec8945f48d47f88945f08d77d483c5ece996fb040089f680d111083cc61108f4c61108b4c611 *0894c61108801a0b0800000200120011008d45ec3b43547303ff63f8c745f8d46d10088975fcc7 *45f4b80a1208c745f080d11108be94c6110883c5ece944fb0400801a0b08000000002400190083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8a01a0b088d47f8894500c745fcb4c611088b76 *0883c5f8e907fb04008d7600801a0b080000020012001b008d45ec3b43547303ff63f8c745f8d4 *6d10088975fcbe3cc61108c745f4dc1a0b0883c5f4ff2689f6801a0b080000000024001b0083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f81c1b0b08c74500b4c611088d47f88945fc8b7608 *83c5f8e993fa04008d7600801a0b080000020012001b008d45ec3b43547303ff63f8c745f8d46d *10088975fcbe3cc61108c745f4501b0b0883c5f4ff2689f6801a0b08040001000000000011001f *008d45f83b4354720883c70c3b7b5c760fbe04cd1108c7436c03000000ff63fcc747f8901b0b08 *8b4d00894dfc8d57f8895500bef4c6110883c5f8e90dfa0400907cc611083cc6110844a31108f4 *cc1108000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f87c9f0508c747fc *00d21108c70700d211088d47f88945008b760c83c5fce9b1f50400900c1c0b0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f4201c0b0883c5f4ff26 *89f6081c0b0800000200120007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8641c0b088d4ff8894df4c745f044a31108be7cc6110883c5ec *e937f904008d7600141c0b0801000100130001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df4bef4cc110883c5f0e9f4f40400081c0b080000020018000f008d45ec3b4354 *720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856e80de1040083c4048d47e0 *894604c706245b1008c745f8d46d10088d47e08945fcc747ec981c0b08c747f8ec1c0b088d47ec *8947fc8d47ec8945f48d47f88945f0be7cc6110883c5ece984f804007cc6110870a41108f4cc11 *08941d0b0800000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc745f470a4 *1108bef4cc110883c5f0e937f404008d7600901d0b0800000200180007008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e84de0040083c4048d47ec894604 *c706245b1008c745f8d46d10088d47ec8945fcc747f8a81d0b08c745f470a411088d47f88945f0 *be7cc6110883c5ece9d0f704007cc6110808c41108f4cc1108481e0b0800000200120003008d45 *f03b43547303ff63f8c745f8d46d10088975fcc745f408c41108bef4cc110883c5f0e983f30400 *8d7600441e0b0800000200180007008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c747ec085c100856e899df040083c4048d47ec894604c706245b1008c745f8d46d10088d47 *ec8945fcc747f85c1e0b08c745f408c411088d47f88945f0be7cc6110883c5ece91cf7040044d1 *11087cc611083cc61108b4c611082ccd11081ccd110800000000240000008b760ce97ce8040000 *1f0b0800000200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745 *f4181f0b0883c5f4ff2689f6f81e0b0803000000120001008d45ec3b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b49e05088b46088947fc8b460c8907 *8d47f88945f48b46048945f0be44d1110883c5ece965f6040090f81e0b08030000002400090083 *c7103b7b5c760ac7436c04000000ff63f8c747f4601f0b088b45088947f88b45048947fc8b450c *89078d47f489450cc74508b4c611088b760883c504e916f6040089f6f81e0b0804000100020000 *000e000d008d45f43b43547303ff63fc8b4e08894df88b56048955fcbe3cc61108c745f4bc1f0b *0883c5f4ff260000000024000000c7450070a711088b760c83c5fce9b6f1040089f6001f0b0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f440200b *0883c5f4ff2689f6fc1e0b0800000200120013008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f860200b088d4ff8894df4c745f01ccd1108be7c *c6110883c5ece93bf504008d7600f81e0b080200000024002f0083c7183b7b5c760ac7436c0600 *0000ff63f8c747ec10200b088b45088947f08b45048947f4c747f894200b088d47ec8945088d47 *f88945048b7604e9ecf40400f81e0b080200000015002f008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e08894df08b56048955f4be3cc61108c745ece8200b0883c5ecff2689f6f81e *0b080200000024002f0083c70c3b7b5c760ac7436c03000000ff63f8c747f834210b088b450489 *47fc8b4d08890f8d57f8895508c74504b4c611088b7608e967f404008d7600f81e0b0804000100 *010000000c002f008d45f83b43547303ff63fc8b4e04894dfcbe3cc61108c745f874210b0883c5 *f8ff2689f6f81e0b080100000024003f0083c7083b7b5c760ac7436c02000000ff63f8c747fcc0 *210b088b450489078d4ffc894d04c745002ccd11088b760483c5fce9eef3040089f6f81e0b0800 *00020018003f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c10 *0856e8f9db040083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f82c *1f0b088d47f88945f4be3cc61108c745f0f0210b0883c5f0ff268d7600ccc5110838d411089c22 *0b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be38 *d4110883c5f0e934ef040098220b080400010000000000110003008d45fc3b4354720883c70c3b *7b5c760fbe4ccd1108c7436c03000000ff63fcc747f8ac220b088b4d00894ffc8d57f8895500be *ccc5110883c5fce9e5ee0400907cc611083cc61108b4c6110870a41108acae11084ccd1108f4cc *1108020000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b450889 *47fc8b4d04890f8d57f88955088b760c83c504e98bee04008d760028230b080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be3cc61108c7 *45ec48230b0883c5ecff2689f628230b08020000002400030083c70c3b7b5c760ac7436c030000 *00ff63f8c747f88c230b088b45048947fc8b4d08890f8d57f8895508c74504b4c611088b7608e9 *0ff204008d760028230b0804000100010000000c0003008d45f83b43547303ff63fc8b4e04894d *fcbe3cc61108c745f8cc230b0883c5f8ff2689f60000000024000000c7450070a711088b760c83 *c5fce9b2ed040089f628230b0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fcbe3cc61108c745f444240b0883c5f4ff2689f624230b080000020012000b008d45ec3b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f864240b088d *4ff8894df4c745f070a41108be7cc6110883c5ece937f104008d760024230b080100000024000f *0083c7143b7b5c760ac7436c05000000ff63f8c747f018240b088b45048947f4c747f898240b08 *8d4ff0894d048d57f88955008b760483c5fce9ebf004008d760024230b080100010013000f008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f0ec240b0883 *c5f0ff2624230b080100000024000f0083c70c3b7b5c760ac7436c03000000ff63f8c747f83825 *0b088b45048947fc8d4ff8894d04c74500b4c611088b760883c5fce96df004009024230b080400 *0100000001000b000f008d45f83b43547303ff63fcbe3cc61108c745fc70250b0883c5fcff2634 *230b0800000200120003008d45f43b43547303ff63f8c745f8d46d10088975fcc745f4acae1108 *83c5f4e9e0fcffff24230b080000000024003f0083c7143b7b5c760ac7436c05000000ff63f8c7 *47f0b8250b08c747f8e0250b088d47f08945008d4ff8894dfc8b760483c5f8e9cdef0400902423 *0b080000020012003f008d45ec3b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f4 *10260b0883c5f4ff2689f63c230b0801000100130001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4bef4cc110883c5f0e958eb040024230b080000020018007f008d45ec *3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856e871d7040083c404 *8d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ec54260b08c747f888260b08 *8d47ec8947fc8d47ec8945f48d47f88945f0be7cc6110883c5ece9e8ee040054d3110850d51108 *2c270b0800000000240003008b4608894500c745fc50d51108be54d3110883c5f8e9baee040089 *f62c270b080400010000000000110003008d45f83b43547308be64cd1108ff63fc8b7500c74500 *40270b08ff2644d1110888270b080b00020000000000110001008d45fc3b4354720883c7143b7b *5c760fbe6ccd1108c7436c05000000ff63fcc747f094b90b088b45008947f4c747f87c8c0b088b *45048947fc8d47f089078d47f8894504c74500e0cf1108be44d1110883c5fce920ee040004c611 *0854d3110850d51108f4270b0802000000150001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e08894df48b56048955f0be04c6110883c5ece9daed040089f6be00d2110883c5088b *4500ff60f089f683c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b450c8947f08b *45088947f4c747f87cdc0b088b45048947fc8d47ec89078d77f883c5108b4500ff60ec908b750c *8b450889450c83c50ceb6e89f690280b084c280b08000000000300000025000000020000002400 *00008b46048945008b7608c745fcb4280b0883c5fcff268d76008b46088945008b7604c745fcbc *280b0883c5fcff268d7600d4280b083c280b080000000001000000250000000400010000000100 *0b0000008d45f43b43547303ff63fc8b4d0089750089cec745fc00290b0883c5fcff2690be00d2 *110883c5088b4500ff60f089f68b750c8b450889450c83c50ce9cb0000008d760083c7183b7b5c *760ac7436c06000000ff63f8c747ec8c6b10088b450c8947f08b45088947f4c747f87cdc0b088b *45048947fc8d47ec89078d77f883c5108b4500ff60ec9050290b083c290b080000000003000000 *25000000f8270b0802000000240003008b46088945f8c745f450d511088b4e04894d00be54d311 *08c745fca8290b0883c5f0e939ec0400908b46088945008b7604c745fcb4290b0883c5fcff268d *7600dc290b082c290b08f8270b080100000025000300f8270b0804000100000001000b0003008d *45e83b43547303ff63fc8b4d0089750089cec745fc082a0b0883c5fcff269083c7143b7b5c760a *c7436c05000000ff63f8c747f05c8c0b088b45088947f48b45048947f8c747fcfc8b0b088d47f0 *89078d77fc83c5148b4500ff60f08d760083c7083b7b5c760ac7436c02000000ff63f8c747fc1c *8c0b088b451089078d77fc83c5148b4d00ff61ec89f683c7143b7b5c760ac7436c05000000ff63 *f8c747f03c8c0b088b45088947f48b45048947f8c747fcfc8b0b088d47f089078d77fc83c5148b *4500ff60f08d7600a42a0b08782a0b080000000084000000250000008b46048945108b7608c745 *00f82a0b08ff2689f6f82a0b08382a0b0800000000840100002500000083c7083b7b5c760ac743 *6c02000000ff63f8c747fc182a0b088b45108945fc8d77fcc74500202b0b0883c5fce9c7feffff *8d760083c7083b7b5c760ac7436c02000000ff63f8c747fc1c8c0b088b451089078d77fc83c514 *8b4d00ff61ec89f683c7143b7b5c760ac7436c05000000ff63f8c747f03c8c0b088b45088947f4 *8b45048947f8c747fcfc8b0b088d47f089078d77fc83c5148b4500ff60f08d7600802b0b08542b *0b080000000084000000250000008b46048945108b7608c74500d42b0b08ff2689f6d42b0b0820 *2b0b08f8270b088400000025000300f4270b081700040000000000110007008d45f83b43547208 *83c7143b7b5c760fbe74cd1108c7436c05000000ff63fcc747f00c280b088b45088947f48b450c *8947f8c747fc0c290b088d47f08945f88d47f089450c8d77fcc745fcfc2b0b0883c5f8e9a9fcff *ff900ca811084ccd1108642c0b0800000200180003008d45f43b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8b5d1040083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f40ca8110883c5f4e91af6ffff89f67cc611080ca811084ccd11 *08f4cc110884cd1108d02c0b0800000200120003008d45f43b43547303ff63f8c745f8d46d1008 *8975fcc745f40ca8110883c5f4e9d4f5ffffd82c0b0800000200120003008d45f03b43547303ff *63f8c745f8d46d10088975fcc745f484cd1108bef4cc110883c5f0e9c3e404008d7600cc2c0b08 *0000020018001f008d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c *100856e8d9d0040083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ec *ec2c0b08c747f81c2d0b088d47ec8945f48d47f88945f0be7cc6110883c5ece956e8040089f6a4 *cb11084ccd1108c02d0b0800000200180003008d45f43b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e859d0040083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f4a4cb110883c5f4e9bef4ffff89f67cc61108a4cb11084ccd1108f4cc *1108a4cd11082c2e0b0800000200120003008d45f43b43547303ff63f8c745f8d46d10088975fc *c745f4a4cb110883c5f4e978f4ffff342e0b0800000200120003008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f4a4cd1108bef4cc110883c5f0e967e304008d7600282e0b08000002 *0018001f008d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856 *e87dcf040083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ec482e0b *08c747f8782e0b088d47ec8945f48d47f88945f0be7cc6110883c5ece9fae6040089f684d41108 *4cd411081c2f0b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8fdce040083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f44cd41108be84d4110883c5f0e981e204009038d41108c4cd1108882f0b0800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e891ce040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c4 *cd1108be38d4110883c5f0e915e2040090ccc51108d4cd1108f42f0b0800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e825ce040083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d4cd1108beccc5110883 *c5f0e9a9e1040090ccd1110880d1110860300b0800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b9cd040083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e93de104009080 *d1110850d31108cc300b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e84dcd040083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f480d11108be50d3110883c5f0e9d1e0040090d4d11108b8d111087cc6 *1108acc6110848d51108e4cd110804ce110838310b0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9bc461108894df4bed4d1110883c5f0e99bde04008d7600 *38310b0801000100130041008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f860310b088d4ff8894df48b56048955f0be04ce110883c5ece934e4 *040048310b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be48d5110883c5f0e9f4df040038310b0804000100000001000b0053008d45f83b43547208 *83c7183b7b5c760ac7436c06000000ff63fcc747ec9c310b088b45008947f0c747f8ec310b088b *45008947fc8d47ec8945008d47f88945fcbeb8d1110883c5f8e9a3e304008d760038310b080000 *020012005b008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc24320b088d4ffc894df4beacc6110883c5f0e94adf040089f638310b0800000200 *18007f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8 *61cb040083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f880320b08 *8d47f88945f4c745f0e4cd1108be7cc6110883c5ece9e4e20400d4d11108b8d111087cc611083c *c61108a4c611088cc6110844d5110848d51108f4cc110804ce1108020000002400000083c70c3b *7b5c760ac7436c03000000ff63f8c747f87cdc0b088b45048947fc8b4d08890f8d57f88955088b *760c83c504e973de04008d76003c330b0804000100010000000c0001008d45f83b43547303ff63 *fc8b4e04894dfcbe3cc61108c745f860330b0883c5f8ff2689f630330b0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c4461108894df4bed4d1110883c5f0 *e923dc04008d760030330b0801000100130001028d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8d8330b088d4ff8894df48b56048955f0be04ce *110883c5ece9bce104004c330b0801000100130001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8b4e04894df4be48d5110883c5f0e97cdd040030330b0804000100000001000b008302 *8d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec14340b088b45008947f0 *c747f864340b088b45008947fc8d47ec8945008d47f88945fcbeb8d1110883c5f8e92be104008d *760030330b0800000200120093028d45f03b4354720883c7083b7b5c760ac7436c02000000ff63 *f8c745f8d46d10088975fcc747fc9c340b088d4ffc894df4bea4c6110883c5f0e9d2dc040089f6 *30330b080100000024009b0283c7143b7b5c760ac7436c05000000ff63f8c747f0a8330b088b45 *048947f4c747f8f8340b088d4ff0894d048d57f88955008b760483c5fce993e004008d76003033 *0b0804000100000001000b009b028d45f83b43547303ff63fcbe3cc61108c745fc44350b0883c5 *fcff2644330b0800000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4 *44d51108be8cc6110883c5f0e923dc04008d760030330b08000000002400fb0283c7143b7b5c76 *0ac7436c05000000ff63f8c747f094350b08c747f8bc350b088d47f08945008d4ff8894dfc8b76 *0483c5f8e9e9df04009030330b08000002001200fb028d45ec3b43547303ff63f8c745f8d46d10 *088975fcbe3cc61108c745f4f4350b0883c5f4ff2689f650330b0801000100130001008d45f03b *43547303ff63f8c745f8d46d10088975fc8b4e04894df4bef4cc110883c5f0e974db040030330b *08000002001800ff038d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e008 *5c100856e88dc7040083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747 *ec38360b08c747f86c360b088d47ec8947fc8d47ec8945f48d47f88945f0be7cc6110883c5ece9 *04df0400bcd1110880d1110854d111087cc61108acc6110850d51108e4cd110801000000240000 *008b4504894500c74504b80a12088b760483c5fce9c8de040014370b0801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be80d11108c745f034370b0883c5 *f0ff2624370b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4be50d5110883c5f0e950da040018370b0801000100130009008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f890370b088b4e04894ffc8d *57f88955f4be54d1110883c5f0e900da040010370b0804000100000001000b0027008d45f83b43 *54720883c7183b7b5c760ac7436c06000000ff63fcc747ec58370b088b45008947f0c747f8c437 *0b088b45008947fc8d47ec8945008d47f88945fcbebcd1110883c5f8e9afdd04008d760010370b *0800000200120037008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fc18380b088d4ffc894df4beacc6110883c5f0e956d9040089f610370b0800 *00020018007f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c10 *0856e86dc5040083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f874 *380b088d47f88945f4c745f0e4cd1108be7cc6110883c5ece9f0dc0400e4d11108b8d1110880d1 *110878d3110850d51108be00d2110883c5088b4500ff60f089f601000100130000008d45f43b43 *547303ff63f8c745f8d46d10088975fcc745f400d211088b760483c5f4e9e10500009083c7243b *7b5c760ac7436c09000000ff63f8c747e050390b088b450c8947e4c747ece4bb0b088b45088947 *f08b45048947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5108b4500ff60ec83c7 *243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b45148947e48b45088947e8c747ece4 *bb0b088b45108947f08b450c8947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c518 *8b4500ff60ec89f601000000240000008b4504894500c74504a00912088b760883c5fce9d4db04 *002c390b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be80d11108c745f0283a0b0883c5f0ff2601000000240000008b4504894500c74504580a1208 *8b760883c5fce97cdb04002c390b0801000100130001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be80d11108c745f0803a0b0883c5f0ff2683c7243b7b5c760ac7436c *09000000ff63f8c747e08c6b10088b45188947e48b450c8947e8c747ece4bb0b088b45148947f0 *8b45108947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c51c8b4500ff60ec89f630 *390b0801000100130003008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c7 *45f050d51108be78d3110883c5ece9b1da04009024390b0801000100130001008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc *a8091208c70700d211088b4e04894df48d57f88955f0bee4d1110883c5ece953da04008d760024 *390b0802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8703b0b088b46088947fc8d47f88945f48b46048945f0bee4d1110883 *c5ece9fad9040089f624390b08050000002400010083c7243b7b5c761ec74500283c0b08c7436c *09000000b8ff00000083f000894320e962010500c747e0d03b0b088b450c8947e48b45088947e8 *c747ece4bb0b088b45108947f08d47e08947f4c747f87cdc0b088d47ec8947fc8b450489078b75 *148d47f889451483c514e9c102000090eb8e89f624390b0801000100130001008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc *a8091208c70700d211088b4e04894df48d57f88955f0bee4d1110883c5ece91bd904008d760024 *390b0802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8a83c0b088b46088947fc8d47f88945f48b46048945f0bee4d1110883 *c5ece9c2d8040089f624390b08060000002400010083c7243b7b5c760ac7436c09000000ff63f8 *8b460483f82e7549c747e0083d0b088b45108947e48b45048947e8c747ece4bb0b088b45148947 *f08d47e08947f4c747f87cdc0b088d47ec8947fc8b450889078b75188d47f889451883c518e995 *01000083c50483c7dce95afeffff89f68b46088945008b7604c745fc603d0b0883c5fcff268d76 *00d03d0b08983c0b0824390b08050000002500010083c70c3b7b5c760ac7436c03000000ff63f8 *c747f8343b0b088b45048947fc8d4ff8894d0c8d77f8c74504fc3d0b0883c504ff26fc3d0b08d0 *3a0b0824390b08060000002500190083c7183b7b5c760ac7436c06000000ff63f8c747ec4c3a0b *088b46048947f0c747f8a43a0b088b46048947fc8d47ec8945f88d47f88945f48b4608894500be *b8d11108c745fc443e0b0883c5f0e97ed7040089f6443e0b08c8390b0824390b08050000002500 *1f0024390b080500000024001f008b7608c74500ac3e0b08ff268b46088945fc8975008b7604c7 *45f8b83e0b0883c5f8ff26c43e0b0878390b0824390b080300000025001f0024390b0802000000 *24001f008b46088945008b4d048b560489550489cec745fcf03e0b0883c5fcff268d76008b4608 *8945008b7604c745fcfc3e0b0883c5fcff268d76001c3f0b0838390b0824390b08010000002500 *1f0024390b0804000100000001000b001f008d45dc3b43547303ff63fc8b4d0089750089cec745 *fc483f0b0883c5fcff269024390b080000020018001f008d45f83b4354720883c7143b7b5c760a *c7436c05000000ff63f8c747f0085c100856e8a9be040083c4048d47f0894604c706245b1008c7 *45f8d46d10088d47f08945fcc747fc583f0b088d77fc83c5f8e9fb2d05008d76004cd311084cae *1108dc3f0b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e83dbe040083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f44cae1108be4cd3110883c5f0e9c1d10400901cd5110808d5110848400b08000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8d1bd040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f408d511 *08be1cd5110883c5f0e955d1040090f4d41108d8d41108b4400b0800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e865bd040083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4d41108bed8d4110883c5f0 *e9e9d004009090d1110800000000240000008b7614e968c6040020410b0800000200180001008d *45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8edbc040083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe90d11108c745f42c410b08 *83c5f4ff2604000100000000001100000083c7143b7b5c760fbe94ce1108c7436c05000000ff63 *fcc747f07c8c0b088b45008947f4c747f8e0d01108c747fcfc8b0b088d4ff0890f8d77fc83c504 *8b5500ff62f09004000100000000001100000083c7083b7b5c760fbe98ce1108c7436c02000000 *ff63fcc747fc1c8c0b088b450089078d77fc83c5048b4d00ff61ec9083c7083b7b5c760ac7436c *02000000ff63f8c747fcfc8b0b088b460489078d77fc83c5088b4d00ff61f089f68b45048b4e04 *894d0489c6e9accf04004c420b0820420b080000000001000000250000000b0002000000000011 *0000008b7500c7450070420b08ff26d4d1110890d1110848d1110808d51108b8d41108bcd41108 *c0d4110864ce110874ce11080100000024000000c74500301212088b760483c5fce94ed3040089 *f694420b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be08d51108c745f0b4420b0883c5f0ff2690420b0801000100130007008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d4420b088b4e04894f *fc8d57f88955f4c745f0b8d41108be48d1110883c5ece9bdd20400900100000024000000c74500 *301212088b760483c5fce9a2d2040089f6a8420b0801000100130001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be74ce1108c745f060430b0883c5f0ff2690420b0802 *000000150047008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec0c430b088b46088947f0c747f880430b088b46048947fc8d47ec8945f48d47f8 *8945f0be48d1110883c5ece905d204009088420b0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9c8461108894df4bed4d1110883c5f0e9dfcb04008d760088 *420b0800000200120041008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f81c440b088d4ff8894df4bec0d4110883c5f0e972cd040089f688420b *080200000015005d018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747ecb8430b088b46048947f08b46088947f4c747f858440b088d47ec8945f48d *47f88945f0be48d1110883c5ece919d104009001000000240000008b4504894500c74504301212 *088b761483c5fce9f8d004008c420b0801000100130001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4be90d11108c745f004450b0883c5f0ff2683c7183b7b5c760ac743 *6c06000000ff63f8c747eca4440b088b46048947f08b46088947f4c747f828450b088b45048947 *fc8d47ec8945088d47f8894504bebcd41108e978d004000100000024000000c74500301212088b *760483c5fce95ed0040089f694420b0801000100130001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4be08d51108c745f0a4450b0883c5f0ff2690420b08010001001300 *07008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8c4450b088b4e04894ffc8d57f88955f4c745f0b8d41108be48d1110883c5ece9cdcf040090 *0100000024000000c74500301212088b760483c5fce9b2cf040089f6a8420b0801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be74ce1108c745f050460b *0883c5f0ff2690420b0802000000150047008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ecfc450b088b46088947f0c747f870460b088b460489 *47fc8d47ec8945f48d47f88945f0be48d1110883c5ece915cf04009088420b0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d8461108894df4bed4d1110883 *c5f0e9efc804008d760088420b0800000200120041008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f80c470b088d4ff8894df4bec0d4110883c5 *f0e982ca040089f688420b080200000015005d018d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747eca8460b088b46048947f08b46088947f4c747f8 *48470b088d47ec8945f48d47f88945f0be48d1110883c5ece929ce04009001000000240000008b *4504894500c74504301212088b761483c5fce908ce04008c420b0801000100130001008d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0f4470b0883c5f0ff *2683c7183b7b5c760ac7436c06000000ff63f8c747ec94470b088b46048947f08b46088947f4c7 *47f818480b088b45048947fc8d47ec8945088d47f8894504bebcd41108e988cd04000100000024 *000000c74500301212088b760483c5fce96ecd040089f6a4420b0801000100130001008d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e04894df4be64ce1108c745f094480b0883c5f0ff *2690420b0801000100130025008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8b4480b088b4e04894ffc8d57f88955f4c745f0b8d41108be48d1 *110883c5ece9ddcc0400900100000024000000c74500301212088b760483c5fce9c2cc040089f6 *a8420b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *be74ce1108c745f040490b0883c5f0ff2690420b0802000000150065008d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecec480b088b46088947f0 *c747f860490b088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece925cc040090 *88420b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e446 *1108894df4bed4d1110883c5f0e9ffc504008d760088420b0800000200120041008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fc490b088d4f *f8894df4bec0d4110883c5f0e992c7040089f688420b08020000001500d5018d45ec3b43547208 *83c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec98490b088b460489 *47f08b46088947f4c747f8384a0b088d47ec8945f48d47f88945f0be48d1110883c5ece939cb04 *009001000000240000008b4504894500c74504301212088b761483c5fce918cb04008c420b0801 *000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108 *c745f0e44a0b0883c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec844a0b088b46 *048947f08b46088947f4c747f8084b0b088b45048947fc8d47ec8945088d47f8894504bebcd411 *08e998ca0400344b0b0844480b0854450b0888420b08420000002500ff0188420b080b00020000 *0000001100ff018d45fc3b43547308bea0ce1108ff63fc8b7504c745fc944b0b0883c5fcff2690 *a0ce1108a8ce1108c44b0b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e855b2040083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f4a8ce1108bea0ce110883c5f0e9d9c5040090ccd41108b0ce110830 *4c0b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e9b1040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f4b0ce1108beccd4110883c5f0e96dc5040090e4d11108d4d1110808d511089c4c0b080100 *0100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f87cdc0b08c747fc900a1208c70700d211088d4ff8894df48b56048955f0bee4d111 *0883c5ece90fc904008d7600a04c0b0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9f0461108894df4bed4d1110883c5f0e9e7c204008d76009c4c0b080100 *0100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d1008 *8975fcc747ecb44c0b088b46048947f0c747f8144d0b088d47ec8945f48d47f88945f0bee4d111 *0883c5ece973c804008d760001000000240000008b7608e954c40400a44c0b0801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be08d51108c745f0ac4d0b *0883c5f0ff269c4c0b0802000000150007008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec504d0b088b46088947f0c747f8c04d0b088b460489 *47fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9c5c7040090a04c0b0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90c471108894df4bed4d1110883 *c5f0e99fc104008d760083c7183b7b5c760ac7436c06000000ff63f8c747ecf84d0b088b460889 *47f08b46048947f4c747f85c4e0b088d47ec8945008d47f88945fcbee4d1110883c5f8e943c704 *008d7600a04c0b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b914471108894df4bed4d1110883c5f0e91bc104008d76009c4c0b0801000100130003008d45 *ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e04e *0b088d4ff8894df48b56048955f0bee4d1110883c5ece9b4c60400a04c0b080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b920471108894df4bed4d1110883c5 *f0e98fc004008d76009c4c0b0801000100130003008d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747ec1c4f0b088b46048947f0c747f86c4f0b088d *47ec8945f48d47f88945f0bee4d1110883c5ece91bc604008d760001000000240000008b7608e9 *fcc10400a44c0b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be08d51108c745f004500b0883c5f0ff269c4c0b0802000000150007008d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747eca84f0b088b46 *088947f0c747f818500b088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece96d *c5040090a04c0b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b934471108894df4bed4d1110883c5f0e947bf04008d760083c7183b7b5c760ac7436c060000 *00ff63f8c747ec50500b088b46088947f08b46048947f4c747f8b4500b088d47ec8945008d47f8 *8945fcbee4d1110883c5f8e9ebc404008d76008b750483c508ff26a04c0b080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c471108894df4bed4d1110883c5 *f0e9bbbe04008d76009c4c0b0801000100130003008d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f840510b088b4e04894df48d57f88955f0bee4 *d1110883c5ece954c4040001000000240000008b7608e938c00400a44c0b080100010013000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be08d51108c745f0c8510b08 *83c5f0ff269c4c0b0802000000150007008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec7c510b088b46088947f0c747f8dc510b088b46048947 *fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9a9c3040090a04c0b080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b940471108894df4bed4d1110883c5 *f0e983bd04008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec14520b088b46048947 *f08b45048947f4c747f878520b088d47ec8945048d47f8894500bee4d1110883c5fce927c30400 *8d7600a8520b082c510b089c4c0b0801000000250007008b46048945008b7608c745fc04530b08 *83c5fcff268d760004530b08e4500b088c4e0b089c4c0b0800000000250007009c4c0b08040001 *0000000000110007008d45f83b43547308bed0ce1108ff63fc8b7500c7450034530b08ff26e4d1 *1108d4d11108b8d1110880d1110854d3110860d3110848d51108ccd61108e0d6110804ce110802 *000000240000008b45088b4d04894d088945048b7608e970c204006c530b080400010001000000 *0c0001008d45f83b43547303ff63fc8b4e04894dfcbe80d11108c745f890530b0883c5f8ff2689 *f68b750483c50cff2683c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b45088947 *e48b46088947e8c747ec7cdc0b088b46048947f08d47e08947f4c747f87cdc0b088b46048947fc *8d47ec89078d47f8894508bee4d11108e9dac1040089f6e0530b08d8530b0860530b0802000000 *2500010060530b0801000000240001008b46048945008b7608c745fc50540b0883c5fcff268d76 *0060530b0804000100000001000b0029008d45f03b4354720883c7083b7b5c760ac7436c020000 *00ff63fcc747fcb4530b08c707380c12088b4d00894df88d57fc8955f4897500be60d31108c745 *fc5c540b0883c5f0e946c1040089f664530b0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b948471108894df4bed4d1110883c5f0e91fbb04008d760064530b *0801000100130001018d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8dc540b088d4ff8894df48b56048955f0be04ce110883c5ece9b8c0040078 *530b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be *48d5110883c5f0e978bc040064530b0804000100000001000b0023018d45f83b4354720883c718 *3b7b5c760ac7436c06000000ff63fcc747ec18550b088b45008947f0c747f868550b088b450089 *47fc8d47ec8945008d47f88945fcbeb8d1110883c5f8e927c004008d76007c530b080200000015 *0001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f88c6b10088b46048947fc8b460889078d47f88945f4beccd6110883c5f0e9c3bb04008d76 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f8fc550b088b45048947fc8b4d08890f8d57 *f8895508bee0d6110883c504e989bb04009083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *8c6b10088b45048947fc8b4d08890f8d57f8895508beccd6110883c504e951bb04009080560b08 *48560b087c530b08020000002500030060530b0804000100000000001100ff038d45ec3b435472 *0883c7103b7b5c760fbed8ce1108c7436c04000000ff63fcc747f484540b08c747fca0550b088b *45008945f48d47fc8945f08d47f48945fcbe54d31108c745f8cc560b0883c5ece9e5be040090e4 *d1110814a7110814af1108ccd6110834570b0801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be14a7110883c5f0e994ba040030570b0801000100130003 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec4c570b088b46048947f0c747f87cdc0b08c747fc580a1208c70700d211088d47ec8945f48d47 *f88945f0bee4d1110883c5ece936be040089f601000000240000008b7608e918ba040038570b08 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be14af11 *08c745f0e8570b0883c5f0ff2630570b0802000000150007008d45ec3b4354720883c7183b7b5c *760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec80570b088b46088947f0c747f8fc *570b088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece989bd04009030570b08 *0000000024000f0083c70c3b7b5c760ac7436c03000000ff63f8c747f834580b088b46048947fc *8b4e08890f8d57f8895500beccd6110883c5fce939b904009030570b0804000100000000001100 *0f008d45fc3b43547308bee0ce1108ff63fc8b7500c7450098580b08ff2614a71108c0d61108cc *d61108fc580b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4be14a7110883c5f0e9ccb80400fc580b0801000100130005008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f814590b088b4e04894ffc8d *57f88955f4beccd6110883c5f0e97cb8040004590b0801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4beccd6110883c5f0e948b80400fc580b0800000000 *2400070083c7183b7b5c760ac7436c06000000ff63f8c747ec48590b088b46088947f0c747f898 *590b088b46048947fc8d47ec8945008d47f88945fcbec0d6110883c5f8e903bc04008d7600fc58 *0b080400010000000000110007008d45f83b43547308bee8ce1108ff63fc8b7500c74500cc590b *08ff26acd011088cd31108ccd61108d8d61108be00d2110883c5088b4500ff60f089f68b750483 *c508ff2683c70c3b7b5c760ac7436c03000000ff63f8c747f87cdc0b08c747fcc80a1208c70700 *d211088d77f883c508ff25c06d100889f6685a0b08605a0b08000000000100000025000000445a *0b0801000100130001008d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894dec8b56 *048955f4be8cd31108c745f0b05a0b0883c5e8e917b704008d7600445a0b080100010013000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *bc5a0b088b4e04894ffc8d57f88955f4beccd6110883c5f0e9c4b6040083c7243b7b5c760ac743 *6c09000000ff63f8c747e08c6b10088b45048947e48b46088947e8c747ec005b0b088b46048947 *f0c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5088b4500ff60ec445b0b08505a0b08 *445a0b080100000025000300445a0b0804000100000001000b0003008d45fc3b43547303ff63fc *8b4d0089750089cec745fca85b0b0883c5fcff2690405a0b0801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4beacd0110883c5f0e9fcb50400405a0b0801 *000100130007008d45f43b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10 *088975fcc747f0b85b0b08c747f8e45b0b088b4e04894ffc8d57f88955f48d77f083c5f4e957ff *ffff8d7600405a0b08040001000000000011000f008d45fc3b4354720883c70c3b7b5c760fbef0 *ce1108c7436c03000000ff63fcc747f8185c0b088b4d00894ffc8d57f8895500bed8d6110883c5 *fce955b5040090d4d41108f8ce1108b45c0b0800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e865a1040083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f4f8ce1108bed4d4110883c5f0e9e9b4040090d4d1 *110848d11108d4d41108bcd41108c0d41108ccd4110884ce1108a0ce11083c5d0b080100010013 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03012120883c5 *f0e92eeeffff89f6205d0b0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b950471108894df4bed4d1110883c5f0e977b204008d7600205d0b08000002001200 *11008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8845d0b088d4ff8894df4bec0d4110883c5f0e90ab4040089f6205d0b080100010013009300 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *4c5d0b088b46048947f0c747f8c05d0b088d47ec8945f48d47f88945f0be48d1110883c5ece9b7 *b704008d7600385d0b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *c745f4301212088b4e04894df0be84ce110883c5ece979b704009083c7183b7b5c760ac7436c06 *000000ff63f8c747ec0c5e0b088b46048947f0c747f86c5e0b088b45048947fc8d47ec8945088d *47f8894504bebcd41108e936b7040089f602000000150000008d45e83b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df4c745f030121208c745ec141610088b56048955e883c5e8e9e1cd *000090205d0b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b960471108894df4bed4d1110883c5f0e9cfb004008d7600205d0b0800000200120011008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82c5f0b *088d4ff8894df4bec0d4110883c5f0e962b2040089f6205d0b0802000000150013008d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ece85e0b088b *46048947f08b46088947f4c747f8685f0b088d47ec8945f48d47f88945f0be48d1110883c5ece9 *09b6040090385d0b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc7 *45f4301212088b4e04894df0be84ce110883c5ece9cdb504009083c7183b7b5c760ac7436c0600 *0000ff63f8c747ecb45f0b088b45088947f08b46048947f4c747f818600b088b45048947fc8d47 *ec8945088d47f8894504bebcd41108e984b5040048600b089c5e0b08205d0b08020000002500db *00205d0b080b000200010000000c00db008d45fc3b43547303ff63fc8b4d048b560489550489ce *c745fca4600b0883c5fcff2689f6345d0b0801000100130001008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f88c6b10088b4e04894ffcc707d8 *1112088d57f88955f4beccd4110883c5f0e9dab0040089f6285d0b0801000100130001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bed4d4110883c5f0e9a4b00400205d *0b0804000100000000001100ff0083c7303b7b5c760fbe1ccf1108c7436c0c000000ff63fcc747 *d4b4600b088b45008947d8c747dce4600b088d47d48947e0c747e84c2d0c088d47d48947ec8d47 *f88947f08d47dc8947f4c747f83c610b088d47e88947fc8d77e883c504e976cb000089f634cf11 *083cd1110824cf1108d8610b0800000200180001008d45f83b4354720883c7203b7b5c760ac743 *6c08000000ff63f8c747e4085c100856e83d9c040083c4048d47e4894604c706245b1008c745f8 *d46d10088d47e48945fcc747f050dd0b08c747f49cce1108c747f834cf1108c747fc98ce1108c7 *0794ce11088d77f083c5f8e9740b0500dc610b0800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c19b040083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f424cf1108be3cd1110883c5f0e945af040090e4 *d11108b4d31108e0d11108a4d011084cae1108c4d61108c0d61108ccd611080cd71108d0d61108 *dcd6110828d7110854ce110802000000240000008b7604e90cb30400d4620b0801000000240001 *008b4604894500be4cae1108c745fc00630b0883c5fcff2690d4620b0804000100010000000c00 *01008d45f83b43547303ff63fc8b4d008b560489550089cec745fc14630b0883c5fcff2689f6c8 *620b0802000000150009008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745 *f8d46d10088975fcc747fc3c630b088b460489078b46088945f48d47fc8945f0beb4d3110883c5 *ece95fb204008d7600be00d2110883c504ff25c46d100889f68b760483c504ff26c8630b08b863 *0b08000000000000000025000000f4620b0802000000150001008d45e83b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df08b56048955ecbe54ce1108c745f4e4630b0883c5e8e9efb104 *008d7600d0620b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4bea4d0110883c5f0e9acad0400c4620b0803000000120009108d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf0630b088b46048947f0 *8b46088947f4c747f834640b088b460c8947fc8d47ec8945f48d47f88945f0bee4d1110883c5ec *e94fb104008d7600c4620b080500000012001b108d45ec3b4354720883c7343b7b5c760ac7436c *0d000000ff63f8c745f8d46d10088975fcc747d06c630b088b46048947d48b460c8947d8c747dc *68640b088b46048947e08b460c8947e48b46108947e8c747ece4bb0b088b46048947f08d47dc89 *47f4c747f87cdc0b088d47ec8947fc8d47d089078b46088945f48d47f88945f08b761483c5ece9 *b4b00400c4620b0816000300030000000b001b1083c72c3b7b5c760ac7436c0b000000ff63fcc7 *47d88c6b10088b46088947dc8b45088947e0c747e4d4640b088b46048947e88b45088947ec8d47 *d88947f08b45048947f48b460c8947f8c747fc1c8c0b088d47e489078d77fc83c50c8b4500ff60 *ec89f6bed0d6110883c504ff2689f6cc620b0801000100130021008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4c745f0ccd61108bee0d1110883c5ece9f9af04009083c70c *3b7b5c760ac7436c03000000ff63f8c747f8ec650b088b46048947fc8d4ff8894d00be28d71108 *83c5fce9baab040089f61c660b08d4650b08cc620b08000000002500a102cc620b080400010002 *0000000e00a1068d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10 *088b46088947fc8b450089078d47f88945fc8b46048945f8be54ce1108c7450064660b0883c5f4 *e954af0400bed0d6110883c508ff2689f6cc620b0801000100130021008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4c745f0ccd61108bee0d1110883c5ece90daf040090cc *620b0801000100130021018d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8d8660b088b4e04894ffc8d57f88955f4bedcd6110883c5f0e9b0aa04 *00e0620b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4beccd6110883c5f0e97caa0400d8620b080100010013000d008d45ec3b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f864670b088b4e04894ffcc745f4 *0cd711088d57f88955f0bec4d6110883c5ece931ae04009083c7183b7b5c760ac7436c06000000 *ff63f8c747ec14670b088b46048947f0c747f898670b088b45048947fc8d47ec8945048d47f889 *4500bec0d6110883c5fce9ebad04008d7600e4670b08c0660b08cc620b08010000002500f901cc *620b0804000100030000000b00f9058d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63fcc747f88c6b10088b460c8947fc8b450089078d47f88945f88b46088945f48b4604894500be *54ce1108c745fc40680b0883c5f0e972ad040089f6c4620b0817000400000000001100ff1f83c7 *403b7b5c760fbe44cf1108c7436c10000000ff63fcc747c470650b088b45048947c88b45088947 *cc8b450c8947d0c747d474660b088b45048947d88b45088947dcc747e050680b088b45008947e4 *8b45048947e88b45088947ecc747f0e48b0b088b45008947f48d47e08947f88d47d48947fc8d47 *c489078d77f083c510ff65009048d11108c4d61108c0d6110874cd1108ccd611080cd7110883c7 *083b7b5c760ac7436c02000000ff63f8c747fcfc8b0b088b460489078d77fc83c50c8b4d00ff61 *f089f683c7183b7b5c760ac7436c06000000ff63f8c747ecc86b10088b45048947f08b46048947 *f48b45088947f8c747fc1c8c0b088d47ec89078d77fc83c50c8b4500ff60ec907c690b0850690b *0800000000020000002500000044690b0816000300030000000b0001008d45f03b43547303ff63 *fc8b45048945fc8b46088945f88b46048945f48b45008945f08b460c894504c74500d4690b0883 *c5f0e9f0c1ffff38690b0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df48b56088955f0be48d1110883c5ece9beab040089f603000000120000008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f88c6b10 *088b46088947fc8b460489078d47f88945f48b760c83c5f0e961a704009048690b080100010013 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beccd6110883c5f0e9 *2ca704003c690b0801000100130019008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8b46a0b088b4e04894ffcc745f40cd711088d57f88955f0 *bec4d6110883c5ece9e1aa0400903c690b0804000100030000000b001b008d45f83b4354720883 *c71c3b7b5c760ac7436c07000000ff63fcc747e8606a0b088b45008947ec8b46088947f08b460c *8947f4c747f8e86a0b088b46048947fc8d47e88945008d47f88945fcbec0d6110883c5f8e977aa *04008d760038690b08180005000000000011003f0083c7403b7b5c760fbe4ccf1108c7436c1000 *0000ff63fcc747c4e4690b088b45008947c88b45088947cc8b45108947d0c747d4286a0b088b45 *0c8947d88b45048947dcc747e0446b0b088b45008947e48b450c8947e88b45048947ecc747f0e4 *8b0b088b45008947f48d47e08947f88d47d48947fc8d47c489078d77f083c514ff650090e0d111 *08c4d61108c0d6110874cd110804cd1108ccd611080cd71108d0d6110820d71108d4d61108f8d6 *1108d8d61108446c0b0801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc *8b4e04894df483c5f4e935afffff9083c7083b7b5c760ac7436c02000000ff63f8c747fcfc8b0b *088b460489078d77fc83c50c8b4d00ff61f089f683c7183b7b5c760ac7436c06000000ff63f8c7 *47ecc86b10088b45048947f08b46048947f48b45088947f8c747fc1c8c0b088d47ec89078d77fc *83c50c8b4500ff60ec90c06c0b08946c0b08000000000200000025000000406c0b081600030003 *0000000b0003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8706c0b *088b46088947fc8b45048945fc8d47f88945f88b46048945f48b45008945f08b460c894504c745 *00186d0b0883c5f0e990beffffbed0d6110883c508ff2689f63c6c0b0804000100010000000c00 *01018d45f83b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10088b460489 *47fc8b450089078d47f8894500c745fcf8d61108bec0d6110883c5f8e936a8040089f6346c0b08 *02000000150005048d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d *10088975fcc747fc986d0b088b460489078b46088945f48d47fc8945f0bee0d1110883c5ece9df *a704008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8ec6d0b088b45048947fc8937 *8d4ff8894d04bed8d61108e99fa304008d7600386e0b087c6d0b08346c0b08010000002500850c *346c0b0804000100020000000e00850c8d45f43b43547303ff63fc8b4d00894df88b5608895500 *8b7604c745fc806e0b0883c5f4e94fa304008d7600bed0d6110883c50cff2689f6346c0b080200 *0000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0 *bee0d1110883c5ece912a7040089f6346c0b0802000000150001068d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d46e0b088b46048947fc8b46 *0889078d47f88945f4c745f0f8d61108bed4d6110883c5ece9b4a60400346c0b08020000001500 *01078d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8106f0b088b46048947fc8b460889078d47f88945f4be20d7110883c5f0e953a204008d7600 *486c0b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *beccd6110883c5f0e91ca20400386c0b0801000100130031008d45ec3b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c46f0b088b4e04894ffcc745f40c *d711088d57f88955f0bec4d6110883c5ece9d1a504009083c7183b7b5c760ac7436c06000000ff *63f8c747ec6c6f0b088b45048947f08977f4c747f8f86f0b088b45088947fc8d47ec8945088d47 *f8894504bec0d61108e98ba504008d760044700b08bc6e0b08346c0b08020000002500e707346c *0b0804000100030000000b00e7078d45f03b43547303ff63fc8b45008945f48b460c8945fc8b46 *048945008b7608c745f8a0700b0883c5f0e929a1040090346c0b0818000500000000001100ff0f *83c7403b7b5c760fbe54cf1108c7436c10000000ff63fcc747c4286d0b088b45008947c88b4508 *8947cc8b45108947d0c747d4906e0b088b450c8947d88b45048947dcc747e0b0700b088b450089 *47e48b450c8947e88b45048947ecc747f0e48b0b088b45008947f48d47e08947f88d47d48947fc *8d47c489078d77f083c514ff650090e4d11108d4d1110880d1110844d11108e0d1110808d51108 *60d3110878d3110850d511083cd51108f4cd110834cf11085ccf110883c7083b7b5c760ac7436c *02000000ff63f8c747fc1c8c0b08c70700d211088d77fc83c5048b4500ff60ec9083c7083b7b5c *760ac7436c02000000ff63f8c747fc1c8c0b08c7070cd211088d77fc83c5108b4500ff60ec908b *450c8945188b751083c514e9370400008d760001000000240000008b7608e9e49f040088710b08 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be08d511 *08c745f01c720b0883c5f0ff2678710b0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b96c471108894df4bed4d1110883c5f0e9939d04008d760074710b0801 *000100130023008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec30720b088b46048947f0c747f868720b088d47ec8945f48d47f88945f0bee4d1 *110883c5ece91fa304008d760001000000240000008b7608e9009f040088710b08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be08d51108c745f00073 *0b0883c5f0ff2674710b0802000000150023008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747eca4720b088b46088947f0c747f814730b088b4604 *8947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece971a204009078710b08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974471108894df4bed4d11108 *83c5f0e94b9c04008d760074710b0802000000150023008d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec4c730b088b46048947f08b46088947f4 *c747f8b0730b088d47ec8945f48d47f88945f0bee4d1110883c5ece9d1a104009074710b080300 *0000120023008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8ec730b088b46088947fc8b460c89078d47f88945f48b46048945f0bee4d1110883 *c5ece975a104009078710b0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b990471108894df4bed4d1110883c5f0e94f9b04008d760074710b08030000001200 *23008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc7 *47e850740b088b46048947ec8b46088947f08b460c8947f4c747f8ac740b088d47e88945f48d47 *f88945f0bee4d1110883c5ece9cfa004008d760083c7243b7b5c760ac7436c09000000ff63f8c7 *47e0e8740b088b45148947e48b45188947e88b45048947ecc747f07c8c0b088d47e08947f4c747 *f8e0d01108c747fcfc8b0b088d47f089078d77fc83c51c8b4500ff60f09048750b0800720b0874 *710b08460000002500230074710b0806000000240023008b45148945fc8b4d08894df88b7608c7 *4500b4750b0883c5f4e936a0040089f674710b0804000000240023048b46048945fc8b4e08894d *00bef4cd1108c745f8c0750b0883c5f8ff268d76008b46088945008b7604c745fcec750b0883c5 *fcff268d76000c760b08d4710b0874710b08030000002500230474710b080b000200010000000c *0023048d45e03b43547303ff63fc8975fc8b4d048b560489550489cec745f838760b0883c5f8ff *268d760002000000240000008b45088b4d04894d088945048b7608e9889f04007c710b08040001 *00010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbe80d11108c745f878760b0883 *c5f8ff2689f678710b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b99c471108894df4bed4d1110883c5f0e92f9904008d760001000000240000008b7608e9 *fc9a040088710b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be08d51108c745f004770b0883c5f0ff2674710b0801000100130023008d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747eccc760b08c747 *f818770b088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9739e04008d7600 *78710b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc47 *1108894df4bed4d1110883c5f0e94b9804008d760074710b0801000100130023008d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec50770b088b46 *048947f0c747f8b0770b088d47ec8945f48d47f88945f0bee4d1110883c5ece9d79d04008d7600 *74710b08a300000024002b0083c70c3b7b5c761ec745004c780b08c7436c03000000b8ff000000 *83f000894320e93ec50400c747f8ec770b088b4d08894ffc8d57f889550cc7450894ce1108be44 *d1110883c504e97b9d04008d760083c504ebab8d760084710b0801000100130021008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03cd51108bee0d1110883c5ece935 *9d04009083c7083b7b5c760ac7436c02000000ff63f8c747fcfc8b0b088b460489078d77fc83c5 *188b4d00ff61f089f690710b0801000100130003008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4c745f050d51108be78d3110883c5ece9cd9c04009083c7403b7b5c760ac7 *436c10000000ff63f8c747c418790b088b45048947c8c747d0fcbb0b088b45108947d48b451489 *47d88d47c48947dcc747e07cdc0b088d47d08947e48b46048947e8c747ec1c8c0b088d47e08947 *f0c747f4c86b10088b450c8947f88b45148947fc8b460489078d47ec8945148d47f4894510be34 *cf110883c50ce9439c04008d760048790b08e0780b0890710b08450000002500130074710b0805 *0000002400bb1b83c70c3b7b5c760ac7436c03000000ff63f88b460483f83a7528c747f8b0780b *088b45088947fc8b45148945fc8d47f8894514c74500e8790b0883c5fce9fe00000083c50883c7 *f4e90bfeffff8d76008b46088945008b7604c745fcf4790b0883c5fcff268d7600447a0b089c78 *0b0874710b08040000002500bb1b74710b08030000002400bb1b8b46048945008b7608c745fc70 *7a0b0883c5fcff268d760074710b08010000002400ff1f83c7103b7b5c760ac7436c04000000ff *63f8c747f448760b088b46048947f8c747fc9c760b08c707280b12088b46088945f48d47fc8945 *f08d47f48945fc8b4604894500be60d31108c745f87c7a0b0883c5ece91c9b04008b4608894500 *8b7604c745fca07a0b0883c5fcff268d7600f87a0b08a8710b0874710b08000000002500ff1f74 *710b0804000100000000001100ff1f8d45e83b43547308be5ccf1108ff63fc8b7500c74500247b *0b08ff26b4d31108b0d3110848d11108acd0110878d3110824d2110850d5110844ce1108000000 *0024000000c745007ccd11088b761483c5fce97e96040089f6647b0b0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fcbe24d21108c745f4787b0b0883c5f4ff2689f654 *7b0b0800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8987b0b088d4ff8894df4beb0d3110883c5f0e9fe95040089f6547b0b *0800000200120017008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8cc7b0b08c745f4acd011088d4ff8894df0be48d1110883c5ece9b7990400 *8d7600befcd1110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f600000000 *240000008b460483f82d750ebefcd1110883c5048b4d00ff61f0be04d2110883c5048b5500ff62 *ec8b7604c74500887c0b08ff26ac7c0b08707c0b08000000000000000025000000010000002400 *00008b460483f82d750f8b7504c74504cc7c0b0883c504ff26be04d2110883c5088b4d00ff61ec *8d76008b46088945008b7604c745fcd47c0b0883c5fcff268d7600fc7c0b08607c0b0800000000 *0000000025000000607b0b0800000000240005008b46088945fcc745f850d51108be78d31108c7 *4500287d0b0883c5f4e9bf9804008d7600607b0b0804000100000001000b0005008d45f43b4354 *7303ff63fc8b7500c74500347d0b08ff2690507b0b0800000200120051008d45f03b4354720883 *c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc687d0b088d4ffc894d *f4beb4d3110883c5f0e93e94040089f6507b0b080000020012007f008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec187c0b08c747f88c7d0b08 *8d4fec894df48d57f88955f0be48d1110883c5ece9f197040090507b0b08000002001800ff008d *45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8fd7f040083 *c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8d87d0b088d47f88945 *f4c745f044ce1108be48d1110883c5ece98097040048d111085ccf110864cf1108947e0b080000 *0200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e8817f040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f464cf *1108c745f05ccf1108be48d1110883c5ece90a97040089f660d3110878d3110864cd110884cf11 *08be00d2110883c5048b4500ff60f089f60c7f0b0801000100130005008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4c745f064cd1108be60d3110883c5ece9ad9604009010 *7f0b0801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8985f10088b4e04894ffc8d57f88955f4c745f064cd1108be78d31108 *83c5ece95596040090107f0b0801000100130007008d45f43b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8747f0b088b4e04894ffc8d57f88955f483c5 *f4eb7883c7303b7b5c760ac7436c0c000000ff63f8c747d4387f0b088977d8c747e0cc7f0b088d *47d48947e4c747ec0c5f10088d47d48947f0c747f87cdc0b088d47ec8947fc8d47e089078d77f8 *83c5048b4500ff60ec08800b081c7f0b080c7f0b080000000025000f000c7f0b08040001000000 *000011000f008b7500c7450070800b08ff26b4d31108b0d3110848d11108e0d11108acd0110878 *d3110824d2110850d5110844ce110884cf11080000000024000000c745007ccd11088b761483c5 *fce93a91040089f6a4800b0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fcbe24d21108c745f4bc800b0883c5f4ff2689f690800b0800000200120021008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8dc800b088d4f *f8894df4beb0d3110883c5f0e9ba90040089f690800b080000020012002b008d45ec3b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f810810b08c745f4ac *d011088d4ff8894df0be48d1110883c5ece9739404008d7600be04d2110883c5048b4500ff60ec *89f6be04d2110883c5048b4500ff60ec89f600000000240000008b460483f82d750ebefcd11108 *83c5048b4d00ff61f0be04d2110883c5048b5500ff62ec8b7604c74500cc810b08ff26f0810b08 *b4810b0800000000000000002500000001000000240000008b460483f82d750f8b7504c7450410 *820b0883c504ff26be04d2110883c5088b4d00ff61ec8d76008b46088945008b7604c745fc1882 *0b0883c5fcff268d760040820b08a4810b08000000000000000025000000a0800b080000000024 *0005008b46088945fcc745f850d51108be78d31108c745006c820b0883c5f4e97b9304008d7600 *a0800b0804000100000001000b0005008d45f43b43547303ff63fc8b7500c7450078820b08ff26 *908c800b08000002001200a1008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8 *c745f8d46d10088975fcc747fcac820b088d4ffc894df4beb4d3110883c5f0e9fa8e040089f68c *800b08000002001200f7008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec5c810b08c747f8d0820b088d4fec894df48d57f88955f0be48d11108 *83c5ece9ad920400908c800b08000002001200f7028d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f81c830b088d4ff8894df4c745f084cf1108be *48d1110883c5ece95b9204008d760098800b0800000200120021008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f444ce1108bee0d1110883c5f0e9178e04008d76008c800b08000002 *001800ff038d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856 *e82d7a040083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ec74830b *08c747f8c8830b088d47ec8945f48d47f88945f0be48d1110883c5ece9aa91040089f698d01108 *24cf11085ccf11086c840b0800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8a979040083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f45ccf1108c745f024cf1108be98d0110883c5ece93291040089f648 *d111089ccf11088ccf1108e4840b0800000200180007008d45ec3b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e83179040083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f48ccf1108c745f09ccf1108be48d1110883c5ece9ba900400 *89f600000000240000008b760483c504ff260400010000000000110000008b7500c7450064850b *08ff2600000000240000008b7608e9088204000400010000000000110000008b7500c745008c85 *0b08ff2600000000240000008b760ce9e08104000400010000000000110000008b7500c74500b4 *850b08ff2600000000240000008b7610e9b88104000400010000000000110000008b7500c74500 *dc850b08ff260b000200000000001100000083c70c3b7b5c760fbecccf1108c7436c03000000ff *63fcc747f83c8c0b088b45008947fc8b4d04890f8d77f883c5088b5500ff62f08d76000b000200 *000000001100000083c70c3b7b5c760fbed0cf1108c7436c03000000ff63fcc747f85c8c0b088b *45008947fc8b4d04890f8d77f883c5088b5500ff62ec8d76000b000200000000001100000083c7 *0c3b7b5c760fbed4cf1108c7436c03000000ff63fcc747f87c8c0b088b45008947fc8b4d04890f *8d77f883c5088b5500ff62e88d7600000000002400000083c70c3b7b5c760ac7436c03000000ff *63f8c747f83c8c0b088b46048947fc8b4e08890f8d77f883c5048b5500ff62f08b7604c74500d0 *860b08ff26000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f85c8c0b088b *46048947fc8b4e08890f8d77f883c5048b5500ff62ec8b7604c7450014870b08ff260000000024 *00000083c70c3b7b5c760ac7436c03000000ff63f8c747f87c8c0b088b46048947fc8b4e08890f *8d77f883c5048b5500ff62e88b7604c7450058870b08ff2688870b0844870b0800000000000000 *00250000008b7604c74500a8870b08ff26a8870b0800870b080000000000000000250000000400 *010000000000110000008b7500c74500c8870b08ff2683c7143b7b5c760ac7436c05000000ff63 *f8c747f0d8dc0b088b46048947f48b46088947f8c747fcf0dc0b088d47f089078d77fc83c5048b *4500ff60f08d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8d8dc0b088b46048947ec *8b46088947f0c747f4f0dc0b088d47e88947f8c747fc10dd0b088d47f489078d77fc83c5048b45 *00ff60ec89f683c71c3b7b5c760ac7436c07000000ff63f8c747e8d8dc0b088b46048947ec8b46 *088947f0c747f410dd0b088d47e88947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff *60ec89f66c880b0820880b08e0870b080000000000000000250000000400010000000000110000 *008b7500c74500d0880b08ff2604000100000000001100000083c7083b7b5c760fbee0cf1108c7 *436c02000000ff63fcc747fcfc8b0b088b450089078d77fc83c5048b4d00ff61f0900400010000 *0000001100000083c7083b7b5c760fbee4cf1108c7436c02000000ff63fcc747fc1c8c0b088b45 *0089078d77fc83c5048b4d00ff61ec9083c7083b7b5c760ac7436c02000000ff63f8c747fcfc8b *0b088b460489078d77fc83c5048b4d00ff61f089f683c7083b7b5c760ac7436c02000000ff63f8 *c747fc1c8c0b088b460489078d77fc83c5048b4d00ff61ec89f68c890b0860890b080000000000 *000000250000000400010000000000110000008b7500c74500cc890b08ff2683c7083b7b5c760a *c7436c02000000ff63f8c747fcf0dc0b088b460489078d77fc83c5048b4d00ff61f089f683c708 *3b7b5c760ac7436c02000000ff63f8c747fc10dd0b088b460489078d77fc83c5048b4d00ff61ec *89f6108a0b08e4890b080000000000000000250000000400010000000000110000008b7500c745 *00508a0b08ff2617000400000000001100000083c7143b7b5c760fbef0cf1108c7436c05000000 *ff63fcc747f0e48b0b088b45008947f48b45048947f88b45088947fc8b450c89078d77f083c510 *ff650089f6020000002400000083c7143b7b5c760ac7436c05000000ff63f8c747f0e48b0b088b *45088947f48b45048947f88b46048947fc8b460889078d77f083c50cff65008d76000100000024 *0000008b46088945008b4d048b560489550489cec745fcbc8a0b0883c5fcff268d760000000000 *240000008b46088945008b7604c745fc008b0b0883c5fcff268d76000400010000000000110000 *008d45f83b43547308bef4cf1108ff63fc8b7500c74500288b0b08ff26000000002400000083c7 *243b7b5c760ac7436c09000000ff63f8c747e0d8dc0b088b460c8947e48b46108947e8c747ecd8 *dc0b088b46048947f08b46088947f4c747f8d8dc0b088d47ec8947fc8d47e089078d77f883c504 *ff6500900400010000000000110000008b7500c74500708b0b08ff260400000001000000ff6500 *900400000009000000ff65009001000000020000008b4500ff60f089f601000000090000008b45 *00ff60f089f601000000020001008b4500ff60ec89f601000000090001008b4500ff60ec89f602 *000000040000008b4500ff60f089f602000000090000008b4500ff60f089f60200000004000100 *8b4500ff60ec89f602000000090001008b4500ff60ec89f602000000040002008b4500ff60e889 *f602000000090002008b4500ff60e89090b89c8c0b08ffe090833d0c171208000f8596000000c7 *050c17120801000000c74500f49a0b0883c504c74500f4980b0883c504c74500349a0b0883c504 *c7450094990b0883c504c7450040990b0883c504c74500b08d0b0883c504c74500a4970b0883c5 *04c745002c980b0883c504c74500809a0b0883c504c745002c8e0b0883c504c74500508d0b0883 *c504c74500a04d0c0883c504c74500004e0c0883c504c7450090310c0883c50483ed04ff650090 *9090b8508d0b08ffe090833d10171208007546c7051017120801000000c7450050be0b0883c504 *c74500ccbe0b0883c504c745009c360c0883c504c74500984a0c0883c504c74500004e0c0883c5 *04c7450090310c0883c50483ed04ff6500909090b8b08d0b08ffe090833d14171208007564c705 *1417120801000000c7450004a10b0883c504c7450094b40b0883c504c7450048c80b0883c504c7 *45009cc70b0883c504c74500a4c50b0883c504c7450058c10b0883c504c745008cc30b0883c504 *c745000cbf0b0883c504c7450090310c0883c50483ed04ff650090b82c8e0b08ffe090833d1817 *1208007550c7051817120801000000c7450050be0b0883c504c74500ccbe0b0883c504c7450098 *4a0c0883c504c7450010a70b0883c504c745006c4a0c0883c504c74500004e0c0883c504c74500 *90310c0883c50483ed04ff65009004000100000000001100000083c7083b7b5c7611c7436c0200 *0000befccf11088b43fcffe0c747fc988f0b088b450089078d47fc894500b88ce80b08ebe589f6 *e9c70000008d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b450489 *078d77fc83c5088b4500ebe79083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b *088b450489078d77fc83c5088b4500ebe790008f0b08d48e0b0800000000210000002500000001 *000000240000008b46488b7504894504c74500408f0b08ff2689f68b46048b7004ebe48b760483 *c608ebdc648f0b085c8f0b08000000000100000025000000cc8e0b080000000000000000000001 *00010000000c0000008d45f83b435473058b43fcffe08b46048945fc8b7604c745f8808f0b0883 *ed088b06ebe704000100000000001100000083c7083b7b5c7611c7436c02000000be00d011088b *43fcffe0c747fcc8900b088b450089078d47fc894500b88ce80b08ebe589f6e9c70000008d7600 *83c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b450489078d77fc83c5088b *4500ebe79083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b450489078d77 *fc83c5088b4500ebe79030900b0804900b0800000000210000002500000001000000240000008b *46408b7504894504c7450070900b08ff2689f68b46048b7004ebe48b760483c608ebdc94900b08 *8c900b08000000000100000025000000fc8f0b08000000000000000000000100010000000c0000 *008d45f83b435473058b43fcffe08b46048945fc8b7604c745f8b0900b0883ed088b06ebe70400 *0100000000001100000083c7083b7b5c7611c7436c02000000be04d011088b43fcffe0c747fcf8 *910b088b450089078d47fc894500b88ce80b08ebe589f6e9c70000008d760083c7083b7b5c760c *c7436c020000008b43f8ffe0c747fcd8300c088b450489078d77fc83c5088b4500ebe79083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fcd8300c088b450489078d77fc83c5088b4500eb *e79060910b0834910b0800000000210000002500000001000000240000008b46108b7504894504 *c74500a0910b08ff2689f68b46048b7004ebe48b760483c608ebdcc4910b08bc910b0800000000 *01000000250000002c910b08000000000000000000000100010000000c0000008d45f83b435473 *058b43fcffe08b46048945fc8b7604c745f8e0910b0883ed088b06ebe720d0110850d011081c92 *0b0816000400000000001100030083c70c3b7b5c7611c7436c03000000be08d011088b43fcffe0 *c747f838940b088b45048947fc8b450889078d47f88945088b450089450483c504b8e4c10b08eb *d68d7600eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8 *b03d1008ffe0c747fcd8300c0889378d77fc83c5048b4500ebea8d760078920b08000000000000 *00000000010000000200100000008d45f43b435473058b43fcffe08b46048945f88b46088945f4 *c745fc84920b0883ed0cb8244b0c08ebe189f6210000002400000083c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8d0920b088b45048947fc8b460489078d77f883c508b8d46d1008ebdf *9001000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f48b7604c745f004930b0883ed108b06ebdb420000002400000083c50cff650089f61c920b0823 *0000002400030083c70c3b7b5c760cc7436c030000008b43f8ffe08b55048b4604894204c747f8 *40930b088b450c8947fc8b450489078d47f8894500c745fc20d01108be50d01108c7450478930b *0883ed08b84c181008ebc089f61c920b0803000000240003008b550883c2088b460489028b7504 *895504c745008c930b08ff2689f61c920b08030000002400030089f08b7508894508c74500ec93 *0b08ff268d76001c920b0804000200020000000e0003008d45ec3b435473058b43fcffe08b4604 *8945fc8b46088945f8be08000000c745f414940b0883ed0cb8cc421008ebdc9040d0110860d011 *0868940b080b000300000000001100030083c7083b7b5c7611c7436c02000000be10d011088b43 *fcffe0c747fcfc940b088b450489078d47fc894504b8e4c10b08ebe589f602000000150000008d *45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10 *b8ac4c0c08ebdc9068940b0804000100010000000c0003008d45f83b4354720883c70c3b7b5c76 *0cc7436c030000008b43fcffe0c747f8bc940b088b45008947fc8b460489078d47f8894500c745 *fc40d01108be60d0110883ed08b814161008ebd0909030d0110860d0110848950b080400020000 *000000110003008d45f03b4354730abe18d011088b43fcffe0be00d21108c745fc84970b0883ed *04b89c431008ebe8eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff *000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760088950b080000 *0000000000000000010000000200100000008d45f43b435473058b43fcffe08b46048945f88b46 *088945f4c745fc94950b0883ed0cb8b04b0c08ebe189f6210000002400000083c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8e0950b088b45048947fc8b460489078d77f883c508b8d46d *1008ebdf9001000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b *46088945f48b7604c745f014960b0883ed108b06ebdb48950b0804000100000001000d0003008d *45f83b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f850960b088b45008947 *fc8b460489078d47f8894500c745fc30d01108be60d0110883ed08b814161008ebd089f6020000 *002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f8dce0 *0b088b45088947fc8b450489078d77f883c50c8b4500ebe189f648950b08020000002400030083 *c7083b7b5c7615c7436c02000000c74320fe000000b8b03d1008ffe08d4608c747fc90960b0889 *078d47fc8945fc8b45088945f8897508c74500e4960b0883ed08b8e4c10b08ebd28d760048950b *080100000024000300897500be60000000c745fc2c970b0883ed04e931ab040090b8a4970b08ff *e090833d1c17120800756ec7051c17120801000000c74500fce00b0883c504c74500cce70b0883 *c504c7450010a70b0883c504c74500ccbe0b0883c504c7450050be0b0883c504c74500984a0c08 *83c504c74500004e0c0883c504c74500d8480c0883c504c745005c460c0883c504c7450090310c *0883c50483ed04ff6500909090b82c980b08ffe090833d20171208000f85aa000000c705201712 *0801000000c74500a04d0c0883c504c7450004a10b0883c504c74500004e0c0883c504c74500f0 *440c0883c504c74500d8480c0883c504c745005c460c0883c504c7450048c80b0883c504c74500 *10c80b0883c504c745009cc70b0883c504c7450020c70b0883c504c74500a4c50b0883c504c745 *00e8c40b0883c504c745008cc30b0883c504c7450058c10b0883c504c745000cbf0b0883c504c7 *450090310c0883c50483ed04ff6500909090b8f4980b08ffe090833d24171208007532c7052417 *120801000000c7450050be0b0883c504c74500ccbe0b0883c504c74500004e0c0883c504c74500 *90310c0883c50483ed04ff6500909090b840990b08ffe090833d2817120800753cc70528171208 *01000000c74500004e0c0883c504c74500ccbe0b0883c504c74500a4970b0883c504c745005c46 *0c0883c504c7450090310c0883c50483ed04ff650090b894990b08ffe090833d2c171208000f85 *82000000c7052c17120801000000c745006c4a0c0883c504c74500004e0c0883c504c7450048c8 *0b0883c504c745009cc70b0883c504c7450020c70b0883c504c745002cc40b0883c504c745008c *c30b0883c504c7450058c10b0883c504c745000cbf0b0883c504c7450050a70b0883c504c74500 *10a70b0883c504c7450090310c0883c50483ed04ff6500909090b8349a0b08ffe090833d301712 *08007532c7053017120801000000c7450050be0b0883c504c74500ccbe0b0883c504c74500004e *0c0883c504c7450090310c0883c50483ed04ff6500909090b8809a0b08ffe090833d3417120800 *755ac7053417120801000000c74500004e0c0883c504c74500984a0c0883c504c745009cc70b08 *83c504c74500e8c40b0883c504c745008cc30b0883c504c7450058c10b0883c504c745000cbf0b *0883c504c7450090310c0883c50483ed04ff6500909090b8f49a0b08ffe090833d381712080075 *3cc7053817120801000000c74500ccbe0b0883c504c74500984a0c0883c504c7450050be0b0883 *c504c74500004e0c0883c504c7450090310c0883c50483ed04ff65009073657446696c6554696d *6573008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8d16204008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0409b0b0883ed10b84cce0b08ebbf9067657446696c6553746174 *75730089f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e85d6204008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0b49b0b0883ed10b84cce0b08ebbf9073657446696c654d6f646500 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8ed6104008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f0289c0b0883ed10b84cce0b08ebbf9008d61108989c0b0800000200180001008d *45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e881 *6104008d47f8894604c706245b10088d55f8c702d46d1008894204c745f408d6110883ed0cb88c *bf0b08ebc60cd11108fc9c0b0800000200180001008d45f43b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e81d6104008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f40cd1110883ed0cb88cbf0b08ebc6b8689d0b08ffe090833d3c17 *120800755ac7053c17120801000000c745006c4a0c0883c504c74500a4a70b0883c504c74500d8 *480c0883c504c7450090310c0883c504c74500cce70b0883c504c7450098dd0b0883c504c74500 *78df0b0883c504c74500d8c80b0883c50483ed04ff65009090900b000200000000001100000083 *c7283b7b5c7611c7436c0a000000be70d011088b43fcffe0c747dc609e0b088b45048947e0c747 *e4a09e0b088b45008947e8c747ecf89e0b088b45048947f08d47dc8947f48d47e48947f8c747fc *449f0b088d47ec89078d77fc83c5088b4500ebb490010000002400000083c504e9204a00000400 *0200010000000c0000008d45f83b435473058b43fcffe08b7604c745fc4c9e0b0883ed08b81c09 *1008ebea8d7600eb1a89f6849e0b08000000000000000000000100010000000c0000008b7604e9 *d0920400eb4e89f601000000240000008b750483c508ff65008d760001000000240000008b4504 *89750489c6c74500b49e0b0883ed04e93d6a040090a89e0b080000000000000000000001000300 *00000b0000008d45f43b435473058b43fcffe08b46048945fc8b46088943048b760cc745f8c89e *0b0883ed08b870331008ebde8d7600eb1a89f6289f0b0800000000000000000000010001000000 *0c0000008b7604e9b091040016000400000000001100000083c7103b7b5c7611c7436c04000000 *be74d011088b43fcffe0c747f4cca00b088b45008947f88b45088947fc8b450489078d77f483c5 *0cb8fc301008ebd989f6e92f0100008d7600010000002400000083c504e9c44800000400020001 *0000000c0000008d45f83b435473058b43fcffe08b7604c745fca89f0b0883ed08b81c091008eb *ea8d7600eb1a89f6e09f0b08000000000000000000000100010000000c0000008b7604e9749104 *0001000000240000008b750483c508ff65008d760002000000240000008b45088945008975088b *7504c745040ca00b0883ed04e9ad73040090020000002400000083c7283b7b5c7615c7436c0a00 *0000c74320fe000000b8b03d1008ffe0c747dc8c6b10088b45048947e08977e4c747e8bc9f0b08 *8d47dc8947ecc747f08c6b10088b45088947f48977f8c747fcfc9f0b088d47f089078975088d47 *e88943048d77fcc7450020a00b08b870331008ebab989f0b080000000000000000000001000300 *00000b0000008d45f03b435473058b43fcffe08b460c8945f88b46088945fc8b7604c745f444a0 *0b0883ed10b81c091008ebde909090b804a10b08ffe090833d40171208007528c7054017120801 *000000c74500b4ed0b0883c504c74500d8c80b0883c504c7450094b40b0883c50483ed04ff6500 *901700040000000000110000008d45fc3b4354730abe78d011088b43fcffe08b7500c7450070a1 *0b088b06ebf003000000240000008b460c8945008b46048945fc83ed04e970d700001600030000 *000000110000008b7500c74500f4a10b08ff2604000100020000000e0000008d45fc3b43547208 *83c70c3b7b5c760cc7436c030000008b43fcffe0c747f88c6b10088b46048947fc8b450089078d *47f88945008b760883ed04b808121008ebd98d7600020000002400000083c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8a8a10b088b45048947fc8b460c89078b45088945048d47f88945 *088b7604b814161008ebd61600030000000000110000008d45fc3b4354730abe80d011088b43fc *ffe08b7504c745fcaca20b0883ed048b06ebed908b750c83c50ce9316504009000000000240000 *00c745000cd211088b760c83ed04e9826f040089f68b7504c7450c74a20b0883c50cff269088a2 *0b0860a20b080000000043000000250000001600030000000000110000008d45fc3b4354730abe *84d011088b43fcffe08b7504c745fc28a30b0883ed048b06ebed900000000024000000c745000c *d211088b760c83ed04e9126f040089f68b7504c7450ce4a20b0883c50cff26908b750c83c50ce9 *896404009008a30b08f8a20b080000000043000000250000001700040000000000110000008d45 *fc3b4354730abe88d011088b43fcffe08b7500c745005ca30b088b06ebf003000000240000008b *460c8945008b46048945fc83ed04e944d400000b00020000000000110000008d45fc3b43547208 *83c7183b7b5c7611c7436c06000000be8cd011088b43fcffe0c747ecd8a30b088b45008947f0c7 *47f818a40b088b45008947fc8d47ec8945008d47f88945fc83ed04b860d80b08ebce8d76000100 *0100130000008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f40cd21108c7 *45f0081210088b46048945ec83ed14b858db0b08ebd49001000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb830db0b08ebe2909090160003 *0000000000110000008d45f43b4354730abe90d011088b43fcffe08b45088945f88b45048945f4 *c745fca8a40b0883ed0cb844d90b08ebe19089750c8b450489450883c508e9ebfeffff8d760080 *a40b0880a40b0800000000c3000000250000000b00020000000000110000008d45fc3b43547208 *83c7243b7b5c7611c7436c09000000be94d011088b43fcffe0c747e020a50b088b45008947e4c7 *47ec60a50b088b45008947f0c747f844a60b088b45008947fc8d47ec89078d47e08945008d47f8 *8945fc83ed04b860d80b08ebbc9001000100130000008d45ec3b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f400d21108c745f0081210088b46048945ec83ed14b858db0b08ebd490 *01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4 *83ed0cb808db0b08ebe28d760004000100020000000e0000008d45f83b4354720883c70c3b7b5c *760cc7436c030000008b43fcffe0c747f87cdc0b088b46088947fc8b450089078d47f8894500c7 *45fc081210088b46048945f883ed08b858db0b08ebcf9004000100030000000b0000008d45f83b *4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f898a50b088b46048947fc8b45 *0089078d47f88945008b460c8945fc8b760883ed08b814161008ebd3900b000200020000000e00 *00008d45fc3b4354720883c7103b7b5c760cc7436c040000008b43fcffe0c747f4f0a50b088b46 *048947f88b46088947fc8b450489078d47f48945048b760883ed04b814161008ebd39016000300 *00000000110000008d45f43b4354730abe98d011088b43fcffe08b45088945f88b45048945f4c7 *45fcf0a60b0883ed0cb844d90b08ebe19089750c8b450489450883c508e9dbfdffff8d7600c8a6 *0b08c8a60b0800000000c3000000250000000300000001000000ff6500900300000009000000ff *650090b810a70b08ffe090833d44171208007528c7054417120801000000c745000c1e0c0883c5 *04c74500d8c80b0883c504c7450064050c0883c50483ed04ff650090b850a70b08ffe090833d48 *17120800753cc7054817120801000000c74500642e0c0883c504c7450064050c0883c504c74500 *10070c0883c504c74500a01f0c0883c504c74500d8c80b0883c50483ed04ff650090b8a4a70b08 *ffe090833d4c171208007546c7054c17120801000000c7450064de0b0883c504c7450064050c08 *83c504c74500a01f0c0883c504c74500d8c80b0883c504c7450094b40b0883c504c745002cbc0b *0883c50483ed04ff65009090900b000200000000001100000083c7203b7b5c7611c7436c080000 *00be9cd011088b43fcffe0c747e438a90b088b45008947e88b45048947ecc747f08ca90b088d47 *e48947f4c747f880dd0b088d47f08947fc8d47e489078d77f883c5088b4500ebc189f6c7450014 *1610088b45048945fc8b45088945048b460489450883ed04e95f3200008d7600befcd1110883c5 *0c8b4500ff60f089f684a80b0860a80b080000000002000000250000008b550c8b460489450c89 *d6c74504a8a80b0883c504ff2690befcd1110883c5108b4500ff60f089f68b450c8945088b4604 *89450c8b4504894500c7450414161008e9f231000089f6d0a80b08c0a80b080000000043000000 *250000008b550c8b460489450c89d6c7450004a90b08ff2604a90b08a8a80b0800000000030000 *00250000000b000200020000000e0000008d45f83b435473058b43fcffe08b46088945fc8b5500 *8b460489450089d6c745f82ca90b0883ed088b06ebdf897500e9dc20000064a90b0864a90b0800 *00000000000000250000000b000200010000000c0000008d45fc3b435473058b43fcffe08b4500 *8945fc8b45048945008b7604c7450480a90b0883ed04b838a90b08ebde90909001000000020000 *008b4500ff60f089f601000000090000008b4500ff60f0909001000000020001008b4500ff60ec *89f601000000090001008b4500ff60ec9090b804aa0b08ffe090833d50171208007546c7055017 *120801000000c74500b4ed0b0883c504c74500d8c80b0883c504c745000c1e0c0883c504c74500 *64050c0883c504c7450050a70b0883c504c7450094b40b0883c50483ed04ff6500909090040001 *0000000000110000008d45fc3b4354730abea0d011088b43fcffe08b7500c7450058ab0b088b06 *ebf0be00d2110883c5048b4500ff60f089f68b750483c508ff2601000100130000008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb868aa0b08ebe28d7600 *83c7183b7b5c760cc7436c060000008b43f8ffe0c747eca8aa0b088977f0c747f87cdc0b08c747 *fc5cd711088d47ec89078b45048945008d47f8894504b82cda0b08ebced4aa0b0898aa0b080000 *000001000000250000008b46048945008b7608c745fc2cab0b0883ed04ff268d76002cab0b0888 *aa0b080000000000000000250000000400010000000000110000008d45f83b4354730abea4d011 *088b43fcffe08b45008945fcc745f850d51108c74500dcac0b0883ed08b898fb0b08ebe0be00d2 *110883c5048b4500ff60f089f6000000002400000083c70c3b7b5c7615c7436c03000000c74320 *fe000001b8b03d1008ffe0c747f8e4bb0b088977fc8b450089078d77f883c508b8d46d1008ebe2 *8d760001000100130000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b4604 *8945f0c745ec50d51108c745f4acab0b0883ed14b80cf80b08ebd49000000000240000008b4608 *894500e929ffffff9001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008 *8970048b7604c745f430ac0b0883ed0c8b06ebe189f683c7303b7b5c760cc7436c0c0000008b43 *f8ffe0c747d4f0ab0b088977d8c747e044ac0b088d47d48947e4c747ec0c5f10088947f0c747f8 *7cdc0b088d47ec8947fc8d47e089078d77f883c5048b45008b40ecebbd8d760070ac0b0894ab0b *080000000000000000250000000400010000000000110000008d45fc3b4354730abea8d011088b *43fcffe08b7500c74500acad0b088b06ebf0be00d2110883c5048b4500ff60f089f60100010013 *0000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e8 *ac0b08ebe28d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec20ad0b088b460889 *47f0c747f87cdc0b08c747fc64d711088d47ec89078d47f88945008b46048945fc83ed04b82cda *0b08ebc889f64cad0b0808ad0b080000000000000000250000000400010000000000110000008b *7500c745003caf0b08ff26be00d2110883c5048b4500ff60f089f6000000002400000083c70c3b *7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8e4bb0b088977fc8b450089 *078d77f883c508b8d46d1008ebe28d760001000100130000008d45ec3b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f0c745ec6cd71108c745f4dcad0b0883ed14b80cf80b08 *ebd490be00d2110883c504ff25c46d100889f68b4608894500e945ffffff9068ae0b0858ae0b08 *00000000000000002500000000000000240000008b7608c7450088ae0b08ff2601000100130000 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f490ae0b0883ed0c *8b06ebe189f683c7303b7b5c760cc7436c0c0000008b43f8ffe0c747d420ae0b088977d8c747e0 *a4ae0b088d47d48947e4c747ec0c5f10088947f0c747f87cdc0b088d47ec8947fc8d47e089078d *77f883c5048b45008b40ecebbd8d7600d0ae0b08c4ad0b080000000000000000250000000b0002 *0000000000110000008d45fc3b4354730abeb0d011088b43fcffe08b7504c745fc80b00b0883ed *048b06ebed90be00d2110883c50c8b4500ff60f089f683c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f87cdc0b088b45088947fcc70700d211088d77f883c50c8b45008b40ecebdd8d7600 *02000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f4 *8b46048945f083ed10b848af0b08ebdc9083c7243b7b5c760cc7436c090000008b43f8ffe0c747 *e0bcaf0b088b45048947e48977e8c747ec7cdc0b088b45048947f08d47e08947f4c747f87cdc0b *088b45088947fc8d47ec89078d77f883c50c8b45008b40ecebbb90ecaf0b087caf0b0800000000 *02000000250000008b46048945088b7608c7450058b00b08ff2689f658b00b086caf0b08000000 *0042000000250000000b000200000000001100000083c7083b7b5c7611c7436c02000000beb4d0 *11088b43fcffe0c747fcfcb10b088b450089078b4504894500c7450400d211088d77fcb8fcb10b *08ebdbbe00d2110883c5108b4500ff60f089f604000000120000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f87cdc0b088b460489 *47fc8b460889078d47f88945f48b460c8945f08b761083ed10b8fcb10b08ebc79083c7203b7b5c *760cc7436c080000008b43f8ffe0c747e4e0b00b088b450c8947e88b45108947ec8b45048947f0 *8b45088947f4c747f87cdc0b088b450c8947fc8d47e489078d77f883c5148b45008b40ecebbf90 *8b450489450c8b750883c50ceb6689f688b10b0834b10b080000000004000000250000008b450c *8945f88b46048945f48b45088945f08b46088945008b4604894508c745fcacb10b0883ed10e953 *4300008d7600acb10b08c8b00b080000000003000000250000000b000200010000000c0000008d *45e83b435473058b43fcffe08975fc8b55008b460489450089d6c745f8f0b10b0883ed088b06eb *e29090901600030000000000110000008d45e83b4354730abeb8d011088b43fcffe08b45088945 *f88b750483ed08b83cb30b08ebeb8d7600be04d2110883c5188b4500ff60ec89f6befcd1110883 *c5108b4500ff60f089f6befcd1110883c5188b4500ff60f089f68b751083c504e9a5000000908c *b20b087cb20b0800000000450200002500000005000000240000008b45088945fc8b45148945f8 *8b7608c74500acb20b0883ed0ce94263040089f68b46088945fc8b46048945008b7504c745f8b4 *b20b0883ed08ff2690d4b20b086cb20b080000000003000000250000008b46088945108b460489 *45148b7504c7450804b30b0883c508ff269004b30b085cb20b08000000004503000025000000c3 *00000024000000c745fc34b30b0883ed04ff261600030000000000110000008d45f43b43547208 *83c70c3b7b5c7611c7436c03000000bebcd011088b43fcffe0c747f8b0b30b088b45088947fcc7 *45f800d211088b45048945f48d47f8894508c745fcfcb30b0883ed0cb84cee0b08ebcd89f60100 *0100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed *0cb858f70b08ebe28d760089750883c504e94dfeffff90dcb30b08dcb30b080000000043000000 *250000000b00020000000000110000008d45fc3b4354730abec0d011088b43fcffe08b45008945 *fc8b4504894500c745048cb40b0883ed04b840020c08ebe190bee0d0110883c5048b4500ff60f0 *89f683c7083b7b5c760cc7436c020000008b43f8ffe0c747fc94b90b088b460489078d77fc83c5 *048b45008b40ecebe489f648b40b0838b40b08000000000000000025000000b894b40b08ffe090 *833d5417120800751ec7055417120801000000c7450064de0b0883c504c74500d8c80b0883c504 *83ed04ff65009090900b00020000000000110000008d45f43b4354730abec4d011088b43fcffe0 *8b7504c745fcd4b50b0883ed048b06ebed90be00d2110883c50c8b4500ff60f089f683c504e9c4 *ffffff02000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b4608 *8945f48b46048945f083ed10b8d0b40b08ebdc9083c7183b7b5c760cc7436c060000008b43f8ff *e0c747ec14b50b088b45048947f08b45088947f4c747f87cdc0b088b46048947fc8d47ec89078d *77f883c50c8b45008b40ecebcb9044b50b0804b50b080000000002000000250000008b46048945 *fc8b46088945088b7504c74500a0b50b0883ed08e94a5c040089f6a0b50b08f4b40b0800000000 *42000000250000000b00020000000000110000008d45fc3b4354730abec8d011088b43fcffe08b *7504c745fc30b60b0883ed048b06ebed908b750483c508e98d510400908b760483c508e9815104 *009010b60b0804b60b0800000000420000002500000070d7110830b60b08040001000000000011 *0001008b7500c7450078b60b08ff26be70d71108e94251040089f68b7604e9385104005cb60b08 *50b60b0830b60b0800000000250001000400010000000000110000008b7500c74500c4b60b08ff *26be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6a0b60b0890b6 *0b080000000000000000250000001600030000000000110000008d45fc3b4354730abed8d01108 *8b43fcffe08b7508c745fc28b70b0883ed048b06ebed908b750483c50ce99d500400908b460489 *450c8b750883c508e9f75a04008d760000b70b08f4b60b08000000008300000025000000040001 *00000000001100000083c71c3b7b5c7611c7436c07000000bedcd011088b43fcffe0c747e8bcb8 *0b088b45008947ecc747f00cb90b088d47e88947f4c747f880dd0b088d47f08947fc8d47e88907 *8d77f883c5048b4500ebc721000000240000003975040f94c00fb6c08944240883c5088b34852c *dc0b088b542408c1e2028b450029d0ff60f089f601000000240000008b45048945fc897504c745 *008cb70b0883ed04e938c40000897500c74504bcb70b08e929c400009021000000240000003975 *040f94c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f089f601 *000000240000008b45048945fc897504c74500ecb70b0883ed04e9d8c300008b450c8945048975 *0cc745081cb80b0883c504e9c0c300008b460489450c8b45088945008b4504894508c745041416 *1008e97622000089f64cb80b0834b80b080000000003000000250000008b46048945008b450889 *750889c6c745fc80b80b0883ed04ff2689f680b80b08d4b70b080000000002000000250000000b *000200010000000c0000008d45f83b435473058b43fcffe08b55008b460489450089d6c745fcb0 *b80b0883ed048b06ebe589f6897500e95c110000e4b80b08e4b80b080000000000000000250000 *000b000200010000000c0000008d45fc3b435473058b43fcffe08b45008945fc8b45048945008b *7604c7450400b90b0883ed04b8bcb80b08ebde90909004000100000000001100000083c7083b7b *5c7611c7436c02000000bee4d011088b43fcffe0c747fc94b90b088b450089078d77fc83c5048b *45008b40ecebe490000000000a0000008b4500ff60f0909001000000020001008b4500ff60ec89 *f601000000090001008b4500ff60ec90900b000200000000001100000083c7203b7b5c7611c743 *6c08000000bee8d011088b43fcffe0c747e408bb0b088b45008947e88b45048947ecc747f05cbb *0b088d47e48947f4c747f880dd0b088d47f08947fc8d47e489078d77f883c5088b4500ebc189f6 *03000000120000008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f4 *8b46088945f0c745ec141610088b46048945e883ed18b8e0da0b08ebcf897500e9ac13000054ba *0b0854ba0b08000000000100000025000000040000002400000083c7103b7b5c760cc7436c0400 *00008b43f8ffe0c747f418ba0b088b45088947f88b45048947fc8b460889078b46048945088b45 *10894504c74500141610088b450c8945fc8d47f4894510c7450c70ba0b0883ed04b8e0da0b08eb *b603000000240000008b46088945008b550c8b460489450c89d6c745fc78ba0b0883ed04ff268d *76000b000200020000000e0000008d45f03b435473058b43fcffe08b46088945fc8b55008b4604 *89450089d6c745f8dcba0b0883ed088b06ebdf897500e90c0f000034bb0b0834bb0b0800000000 *00000000250000000b000200010000000c0000008d45fc3b435473058b43fcffe08b45008945fc *8b45048945008b7604c7450450bb0b0883ed04b808bb0b08ebde90909004000100000000001100 *00008b7500c74500acbb0b08ff2600000000240000008b7608e9e84b0400040001000000000011 *0000008b7500c74500d4bb0b08ff2600000000240000008b7604e9c04b04000200000004000000 *ff6500900200000009000000ff6500900300000001000000ff6500900300000009000000ff6500 *900400000001000000ff6500900400000009000000ff650090b82cbc0b08ffe090833d58171208 *000f85a0000000c7055817120801000000c74500b4060c0883c504c74500642d0c0883c504c745 *00cce70b0883c504c745000c1e0c0883c504c74500b0df0b0883c504c7450064050c0883c504c7 *450064de0b0883c504c74500a01f0c0883c504c74500d8c80b0883c504c7450004aa0b0883c504 *c7450024be0b0883c504c74500e07a0c0883c504c74500247a0c0883c504c7450094b40b0883c5 *04c74500507a0c0883c50483ed04ff65009084d71108e0bc0b080400010000000000110001008d *45fc3b4354730abef4d011088b43fcffe08b45008945fcc7450028bd0b0883ed04b8887c0c08eb *e78d7600000000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008 *ffe0c747f8f4bd0b088b45008947fc89378d77f883c5088b4500ebe4908cd7110860bd0b080b00 *020000000000110001008d45fc3b4354730abefcd011088b43fcffe08b45008945fc8b45048945 *00c74504acbd0b0883ed04b890800c08ebe190000000002400000083c7103b7b5c7615c7436c04 *000000c74320ff000002b8b03d1008ffe0c747f40cbe0b088b45008947f88b45048947fc89378d *77f483c50c8b4500ebde9090900100010005000000ff6500900100010009000000ff6500900200 *010001000000ff6500900200010009000000ff650090b824be0b08ffe090833d5c171208007514 *c7055c17120801000000c7450014300c0883c50483ed04ff650090b850be0b08ffe090833d6017 *1208007564c7056017120801000000c7450094c40b0883c504c745006c4a0c0883c504c7450048 *c80b0883c504c7450010c80b0883c504c745002cc40b0883c504c745009cc70b0883c504c74500 *24be0b0883c504c74500e07a0c0883c504c7450010a70b0883c50483ed04ff650090b8ccbe0b08 *ffe090833d64171208007528c7056417120801000000c7450058c10b0883c504c745000cbf0b08 *83c504c745008cc30b0883c50483ed04ff650090b80cbf0b08ffe090833d68171208007564c705 *6817120801000000c7450064050c0883c504c74500d8c80b0883c504c74500cce70b0883c504c7 *450094b40b0883c504c745002cc60b0883c504c7450058c10b0883c504c745008cc30b0883c504 *c745009cc70b0883c504c7450048c80b0883c50483ed04ff650090040001000000000011000000 *83c7183b7b5c7611c7436c06000000be04d111088b43fcffe0c747ec4cc00b088b45008947f0c7 *47f820c10b088b45008947fc8d47ec89078d77f883c5048b4500ebd49001000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4a0d711088b760483ed10b80812 *1008ebde8d7600000000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8d8 *bf0b088b46248947fc8d47f88945008b761883ed04b808121008ebde01000100130000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f410c00b0883ed0c8b06ebe1 *89f6be0cd2110883c50cff6500900000000024000000be0cd2110883c504ff650090c745088cc0 *0b0883c504e931c100009098c00b0878c00b080000000042000000250000000300000024000000 *8b45048945008b450c8945fc8b7608c74504bcc00b0883ed08e93255040089f603000000240000 *008b7604c74500c4c00b08ff2603000000240000008b450c89750c89c6c74500ecc00b08ff268d *76000b000300020000000e0000008d45f03b435473058b43fcffe08b46088945fc8b55048b4604 *89450489d6c745f800c10b0883ed0cb81c091008ebdc90b858c10b08ffe090833d6c1712080075 *6ec7056c17120801000000c74500cce70b0883c504c74500d8c80b0883c504c7450064050c0883 *c504c745000c1e0c0883c504c74500b4ed0b0883c504c7450024be0b0883c504c7450048c80b08 *83c504c745009cc70b0883c504c745008cc30b0883c504c74500a4c50b0883c50483ed04ff6500 *9090900b00030000000000110000008d45f03b4354730abe08d111088b43fcffe0c745f8000000 *008b45008945f4c745fc74c30b0883ed0cb804ee0b08ebe08b55088b450cc6041000be0cd21108 *83c510ff65008d760084010000240000000fbe4e048b550c8b4510880c10ff45108b450489450c *8b750883c50ceb3a89f68b46088945008b7604c745fc34c20b0883ed04ff268d760054c20b0814 *c20b0800000000c3000000250000000a000300000001000d0000008d45f43b435473058b43fcff *e08975fc8b55008b460489450089d6c745f880c20b0883ed088b06ebe28d760042000000240000 *0083c50cff650089f6230000002400000083c7083b7b5c7615c7436c02000000c74320fe000000 *b8b03d1008ffe0c747fce0060c088b450489078d47fc8945008b750cc74504c0c20b0883ed04b8 *e8131008ebd890020000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b8b0 *3d1008ffe08d5608c747fc8cc20b088917c745f8000000008b45048945f48955008975048d77fc *c745fcd0c20b0883ed0cb88cc20b08ebcb020000002400000046c745001cc30b08e94b7f040090 *9090b88cc30b08ffe090833d70171208000f8582000000c7057017120801000000c7450010070c *0883c504c7450064050c0883c504c74500a01f0c0883c504c745000c1e0c0883c504c745000cde *0b0883c504c74500b0df0b0883c504c74500d8c80b0883c504c745002cbc0b0883c504c7450024 *be0b0883c504c74500e07a0c0883c504c7450010a70b0883c504c7450048c80b0883c50483ed04 *ff6500909090b82cc40b08ffe090833d74171208007550c7057417120801000000c7450064de0b *0883c504c7450054e00b0883c504c7450064050c0883c504c74500cce70b0883c504c74500d8c8 *0b0883c504c7450048c80b0883c504c745009cc70b0883c50483ed04ff650090b894c40b08ffe0 *90833d7817120800753cc7057817120801000000c7450078c60b0883c504c7450020c70b0883c5 *04c745002cc60b0883c504c74500a4c50b0883c504c74500e8c40b0883c50483ed04ff650090b8 *e8c40b08ffe090833d7c171208007578c7057c17120801000000c74500d8c80b0883c504c74500 *64050c0883c504c7450064de0b0883c504c74500b4060c0883c504c745000c1e0c0883c504c745 *00cce70b0883c504c745002cc40b0883c504c7450048c80b0883c504c745008cc30b0883c504c7 *45009cc70b0883c504c7450094b40b0883c50483ed04ff6500900b00030000000000110000008b *7500c7450090c50b08ff2601000000240000008b4604894500e999be000090b8a4c50b08ffe090 *833d8017120800756ec7058017120801000000c7450064de0b0883c504c74500d8c80b0883c504 *c74500b4ed0b0883c504c7450064050c0883c504c74500cce70b0883c504c7450020c70b0883c5 *04c74500e8c40b0883c504c7450048c80b0883c504c745009cc70b0883c504c7450004a10b0883 *c50483ed04ff6500909090b82cc60b08ffe090833d84171208007532c7058417120801000000c7 *450064050c0883c504c74500cce70b0883c504c74500d8c80b0883c504c745009cc70b0883c504 *83ed04ff6500909090b878c60b08ffe090833d88171208000f858c000000c70588171208010000 *00c745009cc70b0883c504c7450048c80b0883c504c745002cc60b0883c504c74500a4c50b0883 *c504c74500e8c40b0883c504c7450004aa0b0883c504c7450004a10b0883c504c7450064050c08 *83c504c74500b4ed0b0883c504c74500cce70b0883c504c7450078df0b0883c504c7450064de0b *0883c504c74500d8c80b0883c50483ed04ff650090b820c70b08ffe090833d8c171208007564c7 *058c17120801000000c7450064050c0883c504c74500d8c80b0883c504c745000c1e0c0883c504 *c74500cce70b0883c504c74500e8c40b0883c504c745008cc30b0883c504c7450048c80b0883c5 *04c745009cc70b0883c504c7450094b40b0883c50483ed04ff650090b89cc70b08ffe090833d90 *17120800755ac7059017120801000000c74500a01f0c0883c504c7450008310c0883c504c74500 *b4ed0b0883c504c7450064050c0883c504c74500d8c80b0883c504c7450064de0b0883c504c745 *00cce70b0883c504c74500b4060c0883c50483ed04ff6500909090b810c80b08ffe090833d9417 *120800751ec7059417120801000000c74500642d0c0883c504c7450064de0b0883c50483ed04ff *6500909090b848c80b08ffe090833d98171208007578c7059817120801000000c74500cce70b08 *83c504c74500d8c80b0883c504c7450064de0b0883c504c74500b0df0b0883c504c74500b4060c *0883c504c74500642d0c0883c504c7450014300c0883c504c74500f0e90b0883c504c745006405 *0c0883c504c74500bc2d0c0883c504c7450004a10b0883c50483ed04ff650090b8d8c80b08ffe0 *90833d9c171208007514c7059c17120801000000c7450064de0b0883c50483ed04ff6500901600 *030000000000110000008b7500c7450030c90b08ff2604000100010000000c0000008b7604e974 *3e0400020000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc20c90b088b *450889078d47fc8945088b7604b814161008ebe20400010000000000110000008d45f83b435473 *0abe40d111088b43fcffe08b7500c74500a4c90b08c745fc5873100883ed08b89c071008ebe38d *760000000000240000008b060fb770fe83c504ff65000b00020000000000110000008b7500e944 *48040016000300000000001100000083c70c3b7b5c7611c7436c03000000be48d111088b43fcff *e0c747f88c6b10088b45048947fc8b450889078d47f88945088b750083c504b808121008ebd990 *900b00020000000000110000008b750083c504e9753d0400900400010000000000110000008b75 *00e9603d04000400010000000000110000008b7500c7450088ca0b08ff26be04d2110883c5048b *4500ff60ec89f6befcd1110883c5048b4500ff60f089f664ca0b0854ca0b080000000000000000 *250000001600030000000000110000008d45f43b4354730abe58d111088b43fcffe08b7500c745 *00e8ca0b088b06ebf08b750483c508e9dd3c0400908b750883c508e9d13c040090c0ca0b08b4ca *0b0800000000020000002500000002000000240000008b45088945fc8b45048945f88b760cc745 *00e0ca0b0883ed0ce90e4b040090901600030000000000110000008d45f43b4354730abe5cd111 *088b43fcffe08b7500c7450068cb0b088b06ebf08b750883c508e95d3c0400908b750483c508e9 *513c04009040cb0b0834cb0b0800000000020000002500000002000000240000008b45088945fc *8b45048945f88b760cc7450060cb0b0883ed0ce98e4a040090901600030000000000110000008d *45fc3b4354730abe60d111088b43fcffe08b7500c74500f4cb0b088b06ebf0be04d2110883c504 *8b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6c4cb0b08c4cb0b08b4cb0b08000000 *00000000002500000002000000240000008b45048945008b45088945048b7608c74508eccb0b08 *83ed04e9024a040090901600030000000000110000008d45fc3b4354730abe64d111088b43fcff *e08b7500c7450080cc0b088b06ebf0befcd1110883c5048b4500ff60f089f6be04d2110883c504 *8b4500ff60ec89f650cc0b0850cc0b0840cc0b0800000000000000002500000002000000240000 *008b45048945008b45088945048b7608c7450878cc0b0883ed04e9764904009090160003000000 *0000110000008d45fc3b4354730abe68d111088b43fcffe08b7500c745000ccd0b088b06ebf0be *04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6cccc0b08dccc0b08 *dccc0b0800000000000000002500000002000000240000008b45048945008b45088945048b7608 *c7450804cd0b0883ed04e9ea48040090901600030000000000110000008d45fc3b4354730abe6c *d111088b43fcffe08b7500c7450098cd0b088b06ebf0befcd1110883c5048b4500ff60f089f6be *04d2110883c5048b4500ff60ec89f658cd0b0868cd0b0868cd0b08000000000000000025000000 *02000000240000008b45048945008b45088945048b7608c7450890cd0b0883ed04e95e48040090 *900b00020000000000110000008b7500c74500fccd0b08ff268b750483c508ff26be04d2110883 *c5088b4500ff60ec89f6d8cd0b08d0cd0b080000000001000000250000000b0002000000000011 *0000008b7500c7450040ce0b08ff26befcd1110883c5088b4500ff60f089f68b750483c508ff26 *24ce0b0814ce0b0800000000010000002500000009000200000000001100000083c70c3b7b5c76 *11c7436c03000000bec0d111088b43fcffe0c747f8d0ce0b088b45048947fc8b45008907c74504 *000000008d77f883c504b8d0ce0b08ebd89001000100160000008d45f43b435473058b43f8ffe0 *8d45f8c700d46d10088970048b4608408945f48b760483ed0cb8d0ce0b08ebde8d760003000100 *010001000f00000083c7203b7b5c760cc7436c080000008b43fcffe08b56088b45000fb6141085 *d2750d8b760483c50483ef208b06ebe3c747e494ce0b088977e88b45008947ecc747f03cdc0b08 *8957f4c747f87cdc0b088d47f08947fc8d47e489078d77f883c5048b45008b40eceba99090900b *00020000000000110000008d45f83b4354730abec4d111088b43fcffe08b7500c7450070d00b08 *8b06ebf0be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f678cf0b *0868cf0b080000000000000000250000008b7504c745049ccf0b0883c504ff2690befcd1110883 *c50c8b4500ff60f089f683000000240000008b450c3b460475108b450489450c83c508b848cf0b *08ffe0befcd1110883c5108b45008b40f0ebee03000000240000008b550c8b460489450c89d6c7 *4500c4cf0b08ff268b46088945008b55088b460489450889d6c745fcf4cf0b0883ed04ff268d76 *0008d00b08accf0b080000000002000000250000008b46088945008b55048b460489450489d6c7 *45fc3cd00b0883ed04ff268d76003cd00b089ccf0b080000000001000000250000001600030000 *000000110000008d45fc3b4354730abec8d111088b43fcffe08b7500c74500d8d00b088b06ebf0 *be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6acd00b089cd00b *0800000000000000002500000002000000240000008b45048945008b45088945048b7608c74508 *d0d00b0883ed04e91e450400909004000100000000001100000083c71c3b7b5c7611c7436c0700 *0000beccd111088b43fcffe0c747e878d20b088b45008947ecc747f080dd0b088d47fc8947f48d *47e88947f8c747fcb0d20b088d47f0890789c683c504b880dd0b08ebc68d7600be6cd8110883c5 *04e9bf0a00008d7600befcd1110883c5048b4500ff60f089f668d10b0858d10b08000000000000 *0000250000008b750cc7450c8cd10b0883c50cff2690befcd1110883c5148b4500ff60f089f689 *7500e954fcffffacd10b08acd10b0800000000010000002500000083c7103b7b5c760cc7436c04 *0000008b43f8ffe0c747f4c86b10088b45088947f88b45048947fc8b460889078b46048945088b *4510894504c74500141610088b450c8945fc8d47f4894510c7450cc8d10b0883ed04b8e0da0b08 *ebb6c8d10b089cd10b080000000004000000250000008b46088945008b550c8b460489450c89d6 *c745fc38d20b0883ed04ff268d760038d20b088cd10b080000000003000000250000000b000200 *010000000c0000008d45f03b435473058b43fcffe08975fc8b55008b460489450089d6c745f86c *d20b0883ed088b06ebe28d76000b000200010000000c0000008d45fc3b435473058b43fcffe08b *46048945fc83ed04b87cd00b08ebee90909004000100000000001100000083c7683b7b5c7611c7 *436c1a000000bed0d111088b43fcffe0c7479ca0d40b088b45008947a0c747a408d50b088b4500 *8947a8c747b068dd0b088d47a48947b48d479c8947b88d47d48947bc8d47dc8947c08d47e48947 *c48d47ec8947c88d47f48947cc8d47fc8947d0c747d45cd50b088d47b08947d8c747dc88d50b08 *8947e0c747e4b4d50b088947e8c747ece0d50b088947f0c747f40cd60b088947f8c747fc38d60b *08890789c683c504b868dd0b08e960ffffff90be18d2110883c5048b4500ff60ec89f6be14d211 *0883c5048b4500ff60f089f6a4d30b0894d30b080000000000000000250000008b750cc7450cc8 *d30b0883c50cff2690be1cd2110883c5148b4500ff60e889f68b450489450c8b750883c50ce9a7 *0000008d760083c514ff268d7600fcd30b08e8d30b08fcd30b080000000084000000250000008b *46048945fc8b45108945f8c745f4141610088b450c8945f08b4608894510c745001cd40b0883ed *10e97e07000089f61cd40b08d8d30b080000000004000000250000008b46088945008b550c8b46 *0489450c89d6c745fc60d40b0883ed04ff268d760060d40b08c8d30b0800000000030000002500 *00000b000200010000000c0000008d45e43b435473058b43fcffe08975fc8b55008b4604894500 *89d6c745f894d40b0883ed088b06ebe28d760001000100130000008d45f43b435473058b43f8ff *e08d45f8c700d46d10088970048b46048945f483ed0cb8f0db0b08ebe28d760001000100130000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d100889 *7004c747f8d4d40b088b46048947fc8d47f88945f483ed0cb804d10b08ebd58d76000b00020001 *0000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04b838cd0b08ebee8d7600 *0b000200010000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04b8accc0b08 *ebee8d76000b000200010000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04 *b820cc0b08ebee8d76000b000200010000000c0000008d45fc3b435473058b43fcffe08b460489 *45fc83ed04b894cb0b08ebee8d76000b000200010000000c0000008d45fc3b435473058b43fcff *e08b46048945fc83ed04b814cb0b08ebee8d76000b000200010000000c0000008d45fc3b435473 *058b43fcffe08b46048945fc83ed04b894ca0b08ebee90909003000100000000001100000083c7 *083b7b5c7611c7436c02000000bed4d111088b43fcffe0c747fce0d60b088b45008907c7450000 *0000008d77fcb8e0d60b08ebe189f601000100160000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b4608408945f48b760483ed0cb8e0d60b08ebde8d760003000100000001 *000d00000083c7203b7b5c760cc7436c080000008b43fcffe08b56048b45000fb6141085d27513 *be00d2110883c50483ef208b45008b40f0ebddc747e4a4d60b088977e88b45008947ecc747f03c *dc0b088957f4c747f87cdc0b088d47f08947fc8d47e489078d77f883c5048b45008b40eceba390 *12000300000000001100000083c7103b7b5c7611c7436c04000000bed8d111088b43fcffe0c747 *f4e8d70b088b45048947f88b45088947fc8b45008907c74508000000008d77f483c508b8e8d70b *08ebd28d760001000100160000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b4608408945f48b760483ed0cb8e8d70b08ebde8d760003000100020001000b0000008d45f83b *4354720883c7143b7b5c760cc7436c050000008b43fcffe08b560c8b45000fb6141085d2750d8b *760883ef14b89c071008ebe3c747f0acd70b088977f48b45008947f8c747fc3cdc0b0889178d47 *f08945008d47fc8945fc8b760483ed08b814161008ebb190909016000300000000001100000083 *c70c3b7b5c7611c7436c03000000bedcd111088b43fcffe0c747f808d90b088b45008947fc8b45 *0489078d77f883c508b808d90b08ebdf8b750483c50ce9f92e04009083c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f88c6b10088b450c8947fc8b460889078d47f889450c8b55088b4604 *89450889d683c504b814161008ebd18d7600a4d80b0898d80b0800000000030000002500000004 *000100020000000e0000008d45f43b435473058b43fcffe08b46088945f88b46048945fc8b4500 *89750089c6c745f4fcd80b0883ed0c8b06ebdc900b00020000000000110000008d45fc3b435473 *0abee0d111088b43fcffe08b7504c745fc20da0b0883ed048b06ebed90be00d2110883c50c8b45 *00ff60f089f602000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46088945f48b46048945f083ed10b844d90b08ebdc9083c7243b7b5c760cc7436c090000008b *43f8ffe0c747e080d90b088b45048947e48b46088947e8c747ec8c6b10088b45048947f08b4604 *8947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c50c8b45008b40ecebb889f6b0d9 *0b0868d90b080000000042000000250000000b00020000000000110000008b7500c74500d4da0b *08ff268b750483c508ff2602000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d *10088970048b46088945f48b46048945f083ed10b82cda0b08ebdc9083c7183b7b5c760cc7436c *060000008b43f8ffe0c747ec48da0b088b46088947f08b45048947f4c747f87cdc0b088b460489 *47fc8d47ec89078d77f883c5088b45008b40ecebcb9078da0b0838da0b08000000000100000025 *0000000400010000000000110000008b7500c74500f4da0b08ff2600000000240000008b7608e9 *a02c04000400010000000000110000008b7500c745001cdb0b08ff2600000000240000008b7604 *e9782c04000400010000000000110000008b7500c7450044db0b08ff2600000000240000008b76 *08e9502c04000400010000000000110000008b7500c745006cdb0b08ff2600000000240000008b *760ce9282c04000b000200000000001100000083c70c3b7b5c7611c7436c03000000bef8d11108 *8b43fcffe0c747f87cdc0b088b45008947fc8b450489078d77f883c5088b45008b40ecebde9090 *900400010000000000110000008b7500c74500dcdb0b08ff2600000000240000008b7608e9b82b *04000400010000000000110000008b7500c7450004dc0b08ff2600000000240000008b760483c5 *04ff26000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec89f6fcd11108 *04d211080000010003000000ff650090000001000a000000ff6500900000010003000000ff6500 *90000001000a000000ff650090000000000a0000008b4500ff60f0909002000000040001008b45 *00ff60ec89f602000000090001008b4500ff60ec9090000000000a0000008b4500ff60f0909000 *0000000a0001008b4500ff60ec9090000000000a0002008b4500ff60e889f614d2110818d21108 *1cd211080200000004000000ff6500900200000009000000ff65009001000000020000008b4500 *ff60f089f601000000090000008b4500ff60f0909001000000020001008b4500ff60ec89f60100 *0000090001008b4500ff60ec9090000000000a000000ff65009008d21108000000000a000000ff *6500900cd211080400000001000000ff6500900400000009000000ff6500900800000001000000 *ff6500900800000009000000ff6500900200000004000000ff6500900200000009000000ff6500 *90b898dd0b08ffe090833da017120800755ac705a017120801000000c74500f0050c0883c504c7 *4500b4060c0883c504c7450078df0b0883c504c74500d8c80b0883c504c745000c1e0c0883c504 *c7450064050c0883c504c74500cce70b0883c504c7450094b40b0883c50483ed04ff6500909090 *b80cde0b08ffe090833da4171208007528c705a417120801000000c74500d8c80b0883c504c745 *004c7c0c0883c504c7450064de0b0883c50483ed04ff6500900800000001000000ff6500900800 *000009000000ff650090b864de0b08ffe090833da8171208007528c705a817120801000000c745 *00b4ed0b0883c504c7450078df0b0883c504c74500d8c80b0883c50483ed04ff650090c8d81108 *b8d811089cde0b0803000100000000001100030083c7143b7b5c7611c7436c05000000be4cd211 *088b43fcffe0c747f000df0b088b45008947f4c747fcc0e90b088d47f089078d47fc894500b874 *e80b08ebd8909cde0b0800000200140003008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f4b8d811088b46048945f083ed10b8a8930c08ebdb040001000000000011000000 *83c7083b7b5c7611c7436c02000000be54d211088b43fcffe0c747fc84e90b088b450089078d47 *fc894500b874e80b08ebe59090b878df0b08ffe090833dac17120800751ec705ac171208010000 *00c74500d8c80b0883c504c74500cce70b0883c50483ed04ff6500909090b8b0df0b08ffe09083 *3db017120800755ac705b017120801000000c745000c1e0c0883c504c745005c890c0883c504c7 *450064050c0883c504c74500a01f0c0883c504c745000cde0b0883c504c74500b4ed0b0883c504 *c74500d8c80b0883c504c7450094b40b0883c50483ed04ff65009090900000020006000000ff65 *0090000002000a000000ff6500900000010003000000ff650090000001000a000000ff650090b8 *54e00b08ffe090833db417120800756ec705b417120801000000c7450064de0b0883c504c74500 *a01f0c0883c504c74500b4060c0883c504c74500cce70b0883c504c74500d8c80b0883c504c745 *00b4ed0b0883c504c745002cbc0b0883c504c7450048c80b0883c504c745009cc70b0883c504c7 *450004a10b0883c50483ed04ff650090909002000000040001008b4500ff60ec89f60200000009 *0001008b4500ff60ec9090b8fce00b08ffe090833db8171208000f85be000000c705b817120801 *000000c745000c1e0c0883c504c7450098dd0b0883c504c74500a01f0c0883c504c7450064050c *0883c504c745000cde0b0883c504c7450078df0b0883c504c74500cce70b0883c504c74500b4ed *0b0883c504c7450010070c0883c504c74500d8c80b0883c504c745005c890c0883c504c7450098 *4a0c0883c504c74500d8480c0883c504c74500ccbe0b0883c504c7450050be0b0883c504c74500 *94b40b0883c504c7450010a70b0883c504c7450004a10b0883c50483ed04ff650090909034d911 *08d0e10b0800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8491c04008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f434d9110883ed0cb88ce80b08ebc640d9110834e20b0800000200180001008d45f43b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e51b0400 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f440d9110883ed0cb88ce80b08 *ebc648d9110804d9110898e20b080400020000000000110003008d45e83b4354730abe78d21108 *8b43fcffe08b7500c74500d8e30b088b06ebf083c7083b7b5c760cc7436c020000008b43f8ffe0 *c747fcd8e90b088b46088907c7450048d911088d47fc8945fc8975f8c745f404d9110883ed0cb8 *649c0c08ebd18d760098e20b08020000002400030083c7083b7b5c7615c7436c02000000c74320 *fe000000b8b03d1008ffe0c747fcd8e90b088b450489078d47fc8945048b4508894500c7450848 *d91108c745fc04d9110883ed04b8649c0c08ebce8d760083c7083b7b5c760cc7436c020000008b *43f8ffe0c747fcd8e90b088b460c8907c745f448d911088d47fc8945f08975ecc745e804d91108 *8b46088945fc897500c745f820e30b0883ed18b8649c0c08ebc18d760070e30b08d0e20b0898e2 *0b08000000002500030050d9110814d9110824d91108d8e30b080400020000000000110007008d *45f83b4354730abe80d211088b43fcffe08b45008945fcc745002cd91108c745f814d9110883ed *08b8a4a30c08ebe060d91108f4d8110824e40b080b000300000000001100030083c7143b7b5c76 *11c7436c05000000be88d211088b43fcffe0c747f098e50b088b45008947f4c747f8cce50b088b *45008947fc8b450489078d47f08943048d77f883c508b870331008ebcc9028e40b080100000024 *00010083c7203b7b5c760cc7436c080000008b43f8ffe0c747e494b90b088b45048947e8c747ec *ece80b088b46048947f08b46088947f4c747f8f4d811088b46108947fc8d47e489078d77ec83c5 *08b8d46d1008ebbf9028e40b0802000000150001008d45f03b435473058b43f8ffe08d45f8c700 *d46d10088970048b46048945f48b7608c745f094e40b0883ed108b06ebdb28e40b080100000024 *0001008b06668378fe09754083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0f4e40b08 *8b45048947f48b46048947f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd28975 *0483c504b874e80b08ebc589f628e40b0804000200010000000c0001008d45fc3b435473058b43 *fcffe08b55008b460489450089d6c745fc30e50b0883ed048b06ebe589f624e40b080200000015 *0001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f404d211088b460889 *45f08b46048945ec83ed14b878a40c08ebd59090a0d9110804e60b081600030000000000110001 *008d45fc3b4354730abe90d211088b43fcffe08b7508c745fc48e60b0883ed048b06ebed9004e6 *0b0883000000240001008b460489450c83c504e916cd00009090a8d9110858e60b081600040000 *000000110001008d45f43b4354730abe98d211088b43fcffe08b7508c745fcb0e60b0883ed048b *06ebed900000000024000000be0cd2110883c504ff65009058e60b0883000000240001008b4604 *8945008b45088945fcc745081c0910088b45048945f8c7450404d21108c7450c98e60b0883ed08 *e9b9cd00009058d9110870d9110888d91108b8d91108c0d91108d0d91108e0e60b080b00030000 *00000011003f008d45f03b4354730abea0d211088b43fcffe0c745f880d911088b45008945f4c7 *45f088d91108c745fcb8e70b0883ed10b8a4a30c08ebd99083c508e924d100008b45088b550489 *550889450483c504e9b8d100008b45088b550489550889450483c504e928d500005ce70b0848e7 *0b0840e70b08ece60b080300000025000700ece60b0802000000240007008b46088945008b7604 *c745fc88e70b0883ed04ff268d7600ece60b080200000024000700c7450094e70b08ff26909090 *b8cce70b08ffe090833dbc171208007578c705bc17120801000000c74500b4ed0b0883c504c745 *0010070c0883c504c74500a01f0c0883c504c7450094b40b0883c504c7450064050c0883c504c7 *4500d8c80b0883c504c74500681f0c0883c504c745000cde0b0883c504c745005c890c0883c504 *c74500281f0c0883c504c74500a4a70b0883c50483ed04ff650090040002000000000011000000 *e9e3d600009090900400010000000000110000008b750083c504e9494b04009004000100000000 *00110000008d45fc3b4354730abec8d211088b43fcffe08b7500c74500bce80b0883ed04b81c09 *1008ebea89f60000000024000000e9db1e0400909090000000000a0000008b4500ff60f0909000 *0000000a0001008b4500ff60ec90900500000001000000ff6500900500000009000000ff650090 *000000000a0000008b4500ff60f0909001000000020001008b4500ff60ec89f601000000090001 *008b4500ff60ec9090000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec *90900100000002000300ff6500900100000009000300ff650090000000000a000400ff65009000 *0000000a000500ff6500900100000002000700ff6500900100000009000700ff65009001000000 *02000900ff6500900100000009000900ff650090000000000a000b00ff6500900100000002000c *00ff6500900100000009000c00ff6500900100000002000000ff6500900100000009000000ff65 *0090b8f0e90b08ffe090833dc017120800756ec705c017120801000000c7450014300c0883c504 *c74500a01f0c0883c504c745005c890c0883c504c7450010070c0883c504c745000c1e0c0883c5 *04c7450064050c0883c504c745000cde0b0883c504c74500d8c80b0883c504c7450010a70b0883 *c504c7450064de0b0883c50483ed04ff65009090900400010000000000110000008b7500c74500 *14eb0b08ff2683c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b460489078d *77fc83c5048b4500ebe790000000002400000083c7083b7b5c760ec7436c02000000b8f0371008 *ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea89f68b46048943048b7608c74500bcea0b *08e9e76504008d7600e8ea0b0888ea0b0800000000000000002500000004000100000000001100 *00008b7500c7450034eb0b08ff26000000002400000083c7083b7b5c760cc7436c020000008b43 *f8ffe08b460485c0740485c0780a83c50483ef088b06ebe9f7d8c747fc84ed0b0889078d77fc83 *c5048b4500ebd3900400010000000000110000008b7500c7450094eb0b08ff2600000000240000 *008b460485c0750dbe3cda110883c504e9dc010000be44da110885c079efbe30da1108ebe80400 *010000000000110000008b7500c74500d8eb0b08ff26000000002400000083c7083b7b5c760cc7 *436c020000008b43f8ffe08b4604f7d8c747fc84ed0b0889078d77fc83c5048b4500ebe5909090 *0b00020000000000110000008b7500c7450060ec0b08ff26210000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe08b4504034604c747fc84ed0b0889078d77fc83c5088b4500ebe4 *89f601000000240000008b55048b460489450489d6c7450028ec0b08ff260b0002000000000011 *0000008b7500c74500ccec0b08ff26210000002400000083c7083b7b5c760cc7436c020000008b *43f8ffe08b45040faf4604c747fc84ed0b0889078d77fc83c5088b4500ebe39001000000240000 *008b55048b460489450489d6c7450094ec0b08ff260b00020000000000110000008b7500c74500 *38ed0b08ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45042b46 *04c747fc84ed0b0889078d77fc83c5088b4500ebe489f601000000240000008b55048b46048945 *0489d6c7450000ed0b08ff260000010003000000ff650090000001000a000000ff650090000001 *0003000000ff650090000001000a000000ff6500900000010003000000ff650090000001000a00 *0000ff6500900000020006000000ff650090000002000a000000ff650090b8b4ed0b08ffe09083 *3dc4171208007532c705c417120801000000c7450094b40b0883c504c74500d8c80b0883c504c7 *45004c7c0c0883c504c7450064de0b0883c50483ed04ff65009090900a00020000000000110000 *008b7500c7450040ee0b08ff268b750483c508ff65008d7600ff45048b4608894500e9daffffff *89f61cee0b0810ee0b080000000021000000250000000b00020000000000110000008b7500c745 *00b0ee0b08ff268b750483c508ff2683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87c *dc0b088b46048947fc8b450489078d47f88945048b4608894500b84cee0b08ebd98d760060ee0b *0858ee0b080000000001000000250000000400010000000000110000008d45fc3b4354720883c7 *0c3b7b5c7611c7436c03000000be38d311088b43fcffe0c747f8b8ef0b088d77f883ed04b80812 *1008ebea8d7600010000002400000083c7583b7b5c760cc7436c160000008b43f8ffe0c747ac24 *6010088b45048947b0c747b87cdc0b088b460c8947bc8d47ac8947c0c747c4985f10088b450489 *47c8c747d07cdc0b088b46088947d48d47c48947d8c747dc0c5f10088b45048947e0c747e87cdc *0b088b46048947ec8d47dc8947f0c747f4fcbb0b088d47e88947f88d47d08947fc8d47b889078d *77f483c5088b4500e978ffffff89f60b000200000001000b0000008b7500c74500fcee0b08ff26 *00000200120000008d45ec3b4354720883c7183b7b5c760cc7436c060000008b43f8ffe08d45f8 *c700d46d1008897004c747ecfcbb0b08c747f000d21108c747f400d21108c747f800d21108c747 *fca4ef0b088d47ec8945f48d47fc8945f0bedcd1110883ed14b814161008ebb490901700040000 *000000110000008d45f83b4354730abe3cd311088b43fcffe08b7504c745fcb0f10b0883ed048b *06ebed90be00d2110883c5148b4500ff60f089f6be00d2110883c5148b4500ff60f089f6be00d2 *110883c5188b4500ff60f089f604000000120000008d45e83b435473058b43f8ffe08d45f8c700 *d46d10088970048b46108945f48b460c8945f08b46088945ec8b46048945e883ed18b82cf00b08 *ebd09083c7343b7b5c760cc7436c0d0000008b43f8ffe0c747d088f00b088b45088947d48b450c *8947d88b45048947dc8b46088947e0c747e40c6c10088b45088947e88b45108947ec8b45148947 *f08b46048947f4c747f87cdc0b088d47e48947fc8d47d089078d77f883c5188b45008b40eceba0 *89f6c4f00b0870f00b080000000005000000250000008b46088945008b55108b460489451089d6 *c745fc4cf10b0883ed04ff268d76004cf10b0860f00b080000000004000000250000008b460889 *45088b550c8b460489450c89d6c7450080f10b08ff2689f680f10b0850f00b0800000000440000 *00250000000b000200000000001100000083c7083b7b5c7611c7436c02000000be40d311088b43 *fcffe0c747fc84f20b088b450089078d77fc83c504b884f20b08ebe589f6be00d2110883c50c8b *4500ff60f089f6897500e924e8ffff00f20b0800f20b0800000000010000002500000083c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f88c6b10088b45048947fc8b460889078b46048945 *008b75088d47f8894508c745041cf20b0883ed04b808121008ebcc89f61cf20b08f0f10b080000 *0000020000002500000004000100010000000c0000008d45f43b435473058b43fcffe08975fc8b *55008b460489450089d6c745f878f20b0883ed088b06ebe2909090f0da1108b0f20b080b000200 *00000000110001008d45f83b4354730abe44d311088b43fcffe08b7504c745fcf4f30b0883ed04 *8b06ebed90bef0da110883c508e9a71404008d76008b750883c508e99914040090020000002400 *00008b45088b55048955088945048b7620e9f422040003000000120000008d45ec3b435473058b *43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604c745ec0cf30b0883 *ed148b06ebd589f683c7103b7b5c760cc7436c040000008b43f8ffe0c747f428f30b088b450489 *47f88b45088947fc8b460489078b46088945fc8d77f483ed04b8bcf30b08ebd39060f30b08f8f2 *0b08000000000200000025000000420000002400000089750c8b7500c74504b4f30b0883c504ff *2689f68b46088945fc8b760483ed04ebde89f6d0f30b08e8f20b08b0f20b084200000025000100 *1600030000000000110000008d45e83b4354730abe4cd311088b43fcffe08b45088945f88b7504 *83ed08b80cf50b08ebeb8d7600bee0d0110883c5108b4500ff60f089f68b45108945048b751483 *c504e9c30000008d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc94b90b088b45 *0489078d77fc83c5188b45008b40ecebe489f64cf40b0838f40b08000000004500000025000000 *05000000240000008b45088945fc8b45148945f88b7608c7450090f40b0883ed0ce95e21040089 *f603000000240000008b46088945fc8b46048945008b7504c745f898f40b0883ed08ff26908b46 *088945088b7604c74500c0f40b08ff2689f6dcf40b0828f40b08000000004300000025000000c3 *000000240000008975108b7500c7450404f50b0883c504ff269090160003000000000011000000 *8d45ec3b4354730abe50d311088b43fcffe08b45088945f88b750483ed08b8f8f50b08ebeb8d76 *00befcd1110883c5108b4500ff60f089f68b45048945008b7510e98600000089f6be04d2110883 *c5148b4500ff60ec89f674f50b0864f50b0800000000840000002500000004000000240000008b *450c8945fc8b45108945f88b7608c7450098f50b0883ed0ce95620040089f68b46088945008b46 *048945088b7504c745fca0f50b0883ed04ff2690c0f50b0854f50b080000000043000000250000 *00c3000000240000008975108b7500c74504f0f50b0883c504ff2690900b000200000000001100 *00008d45f43b4354730abe54d311088b43fcffe08b7504c745fcacf60b0883ed048b06ebed90be *04d2110883c50c8b4500ff60ec89f6befcd1110883c50c8b4500ff60f089f683c504e9b4ffffff *5cf60b084cf60b080000000002000000250000008b46048945fc8b46088945088b7504c7450078 *f60b0883ed08e9721b040089f678f60b083cf60b080000000042000000250000000b0002000000 *0000110000008d45f43b4354730abe58d311088b43fcffe08b7504c745fc4cf70b0883ed048b06 *ebed90befcd1110883c50c8b4500ff60f089f683c504e9c4ffffffbe04d2110883c50c8b4500ff *60ec89f6f4f60b08ecf60b080000000002000000250000008b46048945fc8b46088945088b7504 *c7450018f70b0883ed08e9d21a040089f618f70b08dcf60b080000000042000000250000000400 *010000000000110000008d45fc3b4354730abe5cd311088b43fcffe08b45008945fcc7450000d2 *110883ed04b84cee0b08ebe79090900b00020000000000110000008d45fc3b4354730abe60d311 *088b43fcffe08b45008945fc8b4504894500c74504c8f70b0883ed04b80cf80b08ebe190000000 *002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8e4bb *0b088977fc8b450089078d77f883c5088b4500ebe4900b00020000000000110000008d45ec3b43 *54730abe64d311088b43fcffe08b7504c745fc44f90b0883ed048b06ebed90c7450800d21108be *00d2110883c508ff650489f602000000150000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46088945f48b46048945f083ed10b890f70b08ebdc9083c7303b7b5c760cc743 *6c0c0000008b43f8ffe0c747d44cf80b088b450c8947d88b45048947dcc747e0985f10088d47d4 *8947e4c747ec0c5f10088947f0c747f87cdc0b088b45108947fc8d47ec89078d47e08945108d77 *f883c5108b4504ebb18d76008b4508894510be00d2110883c510ff65048d7600e0f80b087cf80b *080000000004000000250000008b46048945f48b46088945fc8975008b46048945088b7504c745 *f808f90b0883ed10e9d91804009008f90b0830f80b080000000042000000250000000b00020000 *000000110000008d45fc3b4354730abe68d311088b43fcffe08b45008945fc8b4504894500c745 *0488f90b0883ed04b8ccf90b08ebe190000000002400000083c70c3b7b5c7615c7436c03000000 *c74320fe000001b8b03d1008ffe0c747f8e4bb0b088977fc8b450089078d77f883c5088b4500eb *e4900b00020000000000110000008d45ec3b4354730abe6cd311088b43fcffe08b7504c745fc04 *fb0b0883ed048b06ebed90c7450800d21108be00d2110883c508ff650489f68b4504894510be00 *d2110883c510ff65048d760002000000150000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46088945f48b46048945f083ed10b850f90b08ebdc9083c7303b7b5c760cc743 *6c0c0000008b43f8ffe0c747d420fa0b088b450c8947d88b45088947dcc747e0985f10088d47d4 *8947e4c747ec0c5f10088947f0c747f87cdc0b088b45108947fc8d47ec89078d47e08945108d77 *f883c5108b4504ebb18d760050fa0b0804fa0b080000000004000000250000008b46048945f489 *75fc8b46088945008b46048945088b7504c745f8c8fa0b0883ed10e91917040090c8fa0b08f0f9 *0b080000000042000000250000000b00020000000000110000008b7500c7450024fb0b08ff2601 *00000024000000837e0400780d8b4604894500b838ce0c08ffe0be00d2110883c5088b45008b40 *f0ebee900b00020000000000110000008b7500c7450068fb0b08ff260100000024000000837e04 *007910be00d2110883c5088b45008b40f0ffe08b4604894500b85cd00c08ebf1900b0002000000 *0000110000008d45f03b4354730abe78d311088b43fcffe08b7504c745fc28fc0b0883ed048b06 *ebed90be00d2110883c50c8b4500ff60f089f68b750483c510ff2683c508e9bcffffffd4fb0b08 *ccfb0b080000000003000000250000008b46048945f88975008b46088945088b7504c745fcf0fb *0b0883ed0ce9f71504008d7600f0fb0b08bcfb0b080000000042000000250000000b0002000000 *00001100000083c7103b7b5c7611c7436c04000000be7cd311088b43fcffe0c747f4c86b10088b *45008947f88b45048947fc8d47f4890789c683c504b89c071008ebda8d76000400010000000000 *1100000083c70c3b7b5c7611c7436c03000000be80d311088b43fcffe0c747f87cdc0b088b4500 *8947fc8d47f8890789c683c504b87cdc0b08ebe0900b00020000000000110000008b7500c74500 *0cfd0b08ff2601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f483ed0cb880fc0b08ebe28d7600010000002400000083c70c3b7b5c760cc7436c03 *0000008b43f8ffe0837e04007913be00d2110883c50883ef0c8b45008b40f0ebe5c747f8d8fc0b *088b45048947fc8d47f88945048b4604894500b85cd00c08ebc590909004000100000000001100 *00008d45f83b4354730abe88d311088b43fcffe0c745fc000000008b45008945f8c74500a0fd0b *0883ed08b804ee0b08ebe0000000002400000083c7083b7b5c760ec7436c02000000b8f0371008 *ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea90900400010000000000110000008b7500 *c7450018fe0b08ff26be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f0 *89f6f4fd0b08e4fd0b08000000000000000025000000e0da110818fe0b08040001000000000011 *0001008d45fc3b4354730abe90d311088b43fcffe08b7500c7450080fe0b088b06ebf0bee0da11 *0883c504ff2689f68b46088945008b46048945fc83ed04e994ce000058fe0b084cfe0b0818fe0b *080000000025000100d0da110880fe0b080400010000000000110001008d45fc3b4354730abe98 *d311088b43fcffe08b7500c74500e8fe0b088b06ebf0bed0da1108e9de08040089f68b46088945 *008b46048945fc83ed04e900cf0000c0fe0b08b4fe0b0880fe0b080000000025000100c0da1108 *e8fe0b080400010000000000110001008b7500c7450030ff0b08ff26bec0da110883c504ff2689 *f68b760883c504ff2614ff0b0808ff0b08e8fe0b08000000002500010017000400000000001100 *0000e99bcc00008d76001600030000000000110000008d45fc3b4354730abeacd311088b43fcff *e08b7504c745fcfc000c0883ed048b06ebed90be00d2110883c5108b4500ff60f089f6be00d211 *0883c5108b4500ff60f089f616000300010000000c00000083c71c3b7b5c760cc7436c07000000 *8b43fcffe0c747e8c86b10088b46048947ec8b45008947f08b45048947f4c747f87cdc0b088d47 *e88947fc8b450889078d77f883c50c8b45008b40ecebc58d760003000000120000008d45e83b43 *54720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fca0 *ff0b088b460489078b460c8945f48b46088945f0c745ec00d211088d47fc8945e883ed18b8dccb *0c08ebc39083c72c3b7b5c760cc7436c0b0000008b43f8ffe0c747d8f8ff0b088b45048947dc8b *45088947e08b46088947e4c747e8c86b10088b45048947ec8b450c8947f08b46048947f4c747f8 *7cdc0b088d47e88947fc8d47d889078d77f883c5108b45008b40ecebac89f650000c0884ff0b08 *0000000003000000250000008b46088945088b550c8b460489450c89d6c74500cc000c08ff2689 *f6cc000c0874ff0b080000000043000000250000000b00020000000000110000008d45fc3b4354 *730abeb0d311088b43fcffe08b7500c7450034020c088b06ebf0be00d2110883c5088b4500ff60 *f089f6be00d2110883c50c8b4500ff60f089f602000000150000008d45e83b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945f48b46048945f0c745ec00d21108c745e804db1108 *83ed18b8dccb0c08ebce8d760083c7243b7b5c760cc7436c090000008b43f8ffe0c747e050010c *088b45048947e48b46088947e8c747ece4bb0b088b45088947f08b46048947f4c747f87cdc0b08 *8d47ec8947fc8d47e089078d77f883c50c8b45008b40ecebb889f690010c0838010c0800000000 *02000000250000008b46088945008b55048b460489450489d6c745fc00020c0883ed04ff268d76 *0000020c0828010c080000000001000000250000000b00020000000000110000008d45f03b4354 *730abeb4d311088b43fcffe08b7504c745fc50030c0883ed048b06ebed90be00d2110883c50c8b *4500ff60f089f68b450489450c83c508e9beffffff89f602000000150000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b840020c08ebdc *9083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec8c020c088b45088947f08b45048947 *f4c747f87cdc0b088b450c8947fc8d47ec89078d77f883c5108b45008b40ecebcb90bc020c0874 *020c080000000003000000250000008b46048945f88b46088945008b46048945088b7504c745fc *18030c0883ed0ce9cc0e040018030c0864020c0800000000420000002500000004000100000000 *00110000008d45fc3b4354730abeb8d311088b43fcffe08b7500c745005c050c088b06ebf0be00 *d2110883c5048b4500ff60f089f6be00d2110883c5088b4500ff60f089f68b750883c50cff2683 *c7183b7b5c760cc7436c060000008b43f8ffe0c747ec8c6b10088b45048947f08b46088947f4c7 *47f87cdc0b088b46048947fc8d47ec89078d77f883c50c8b45008b40ecebcb90a4030c089c030c *0800000000020000002500000004000100010000000c0000008d45f83b435473058b43fcffe089 *75fc8b55008b460489450089d6c745f800040c0883ed088b06ebe28d760083c7143b7b5c760cc7 *436c050000008b43f8ffe0c747f08c6b10088b45048947f48b46088947f8c747fc0c040c088d47 *f089078b46048945048d77fc83c504b80c040c08ebcc89f638040c088c030c0800000000010000 *002500000004000100000001000b0000008d45fc3b435473058b43fcffe08b450089750089c6c7 *45fc94040c0883ed048b06ebe89001000100130000008d45f43b4354720883c7083b7b5c760cc7 *436c020000008b43f8ffe08d45f8c700d46d1008897004c747fca0040c088b46048945f48d77fc *83ed0cb8a0040c08ebd889f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8cc040c08 *8b46088947fc8d47f88945008b46048945fc83ed04b82cda0b08ebdb9010050c087c030c080000 *00000000000025000000b864050c08ffe090833dc817120800753cc705c817120801000000c745 *000cde0b0883c504c74500a01f0c0883c504c74500b4ed0b0883c504c74500d8c80b0883c504c7 *450064de0b0883c50483ed04ff65009000000100030000008b4500ff60f089f6000001000a0000 *008b4500ff60f090900900000001000000ff6500900900000009000000ff650090b8f0050c08ff *e090833dcc171208007546c705cc17120801000000c7450064050c0883c504c74500b4060c0883 *c504c74500281f0c0883c504c74500b4ed0b0883c504c74500d8c80b0883c504c7450064de0b08 *83c50483ed04ff65009090900400010000000000110000008d45fc3b4354730abe14d411088b43 *fcffe08b7500c745007c060c088b06ebf00000000024000000837e04007417c7450000d211088b *46048945fc83ed04b84cce0b08ffe0be00d2110883c5048b45008b40f0ebee909090b8b4060c08 *ffe090833dd0171208007514c705d017120801000000c74500d8c80b0883c50483ed04ff650090 *0000010003000000ff650090000001000a000000ff6500900000010003000000ff650090000001 *000a000000ff650090b810070c08ffe090833dd4171208000f8596000000c705d4171208010000 *00c7450064de0b0883c504c74500642e0c0883c504c74500d8c80b0883c504c745005c890c0883 *c504c74500a01f0c0883c504c74500b4ed0b0883c504c74500b0df0b0883c504c745000c1e0c08 *83c504c7450064050c0883c504c74500247a0c0883c504c7450094b40b0883c504c74500305f0c *0883c504c74500a86b0c0883c504c74500e84e0c0883c50483ed04ff650090909018d4110840d7 *110870d6110868d61108bc070c08040001000000000011000f008b7500c74500900b0c08ff26be *7cd6110883c504ff650090bc070c0801000100130001008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b46048945f483ed0cb8dc070c08ebe28d7600be78d6110883c5088b4500 *ff60e889f68b750483c508ff263c080c082c080c080000000001000000250000008b4604894500 *8b45048945fcc7450458080c0883ed04e9d5c6ffff90be78d6110883c50c8b4500ff60e889f674 *080c0874080c0874080c0874080c0858080c0874080c0874080c0874080c080000000002000000 *2500000004000100020000000e0000008d45f43b435473058b43fcffe08b46088945fc8b55008b *460489450089d6c745f8b0080c0883ed088b06ebdfc0070c0804000000120001008d45f43b4354 *720883c71c3b7b5c760cc7436c070000008b43f8ffe08d45f8c700d46d1008897004c747e8c86b *10088b460c8947ec8b46048947f08b46088947f4c747f8bc080c088d47e88947fc8b461089078d *47f88945f483ed0cb85c6c0c08ebb790c0070c0804000000120005008d45f03b4354720883c714 *3b7b5c760cc7436c050000008b43f8ffe08d45f8c700d46d1008897004c747f0f4080c088b4604 *8947f48b46088947f88b460c8947fc8b461089078d47f08945f4c745f098db110883ed10b83851 *0c08ebbd8d760004000100010000000c0000008b760483c504ff26c4070c080400010001000000 *0c0001008d45f83b435473058b43fcffe0c745fc081210088b45008945f88b460489450083ed08 *b8385d0c08ebe189f6c0070c08030000002400070083c7383b7b5c760cc7436c0e0000008b43f8 *ffe0c747cc8c6b10088b45048947d08b450c8947d4c747d864090c088b45088947dc8b450c8947 *e08b46088947e48b46048947e8c747ecd0090c088d47d88947f0c747f4e8090c088d47ec8947f8 *c747fcc05e0c088d47f489078d47cc89450c8d47fc89450883c508b838510c08eb9089f6c0070c *0804000100030000000b0007008d45f43b435473058b43fcffe08b46088945f88b46048945fc8b *760cc745f4200a0c0883ed0c8b06ebe189f6c0070c0804000100020000000e00070083c71c3b7b *5c760cc7436c070000008b43fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f4b40a *0c088b45008947f88d47e88947fc8b460889078d77f483c5048b4500ebc889f683c7183b7b5c76 *0cc7436c060000008b43f8ffe0c747ec00080c088b46088947f0c747f8f00a0c088d47ec8947fc *8b460489078d77f883c5048b4500ebd489f63c0b0c08e8070c08bc070c080000000025000f0048 *d7110868d61108900b0c0804000100000000001100030083c7183b7b5c7611c7436c06000000be *20d411088b43fcffe0c747ecf80b0c088d47f88947f0c747f8bc0c0c088b45008947fc8d47ec89 *078d77f883c5048b4500ebd490900b0c0801000100130001008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb808e00c08ebe28d7600897500e90c45000024 *0c0c08240c0c08240c0c08240c0c08240c0c08940b0c080100000025000100940b0c0804000100 *020000000e0001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8 *8c6b10088b46088947fc8b450089078b45008945f88d47f88945008b7604c745fc4c0c0c0883ed *0cb808121008ebcc89f6940b0c0804000100020000000e00010083c7243b7b5c760cc7436c0900 *00008b43fcffe0c747e08c6b10088b46048947e48b45008947e8c747ec8c6b10088b46088947f0 *8b45008947f4c747f85c0c0c088d47e08947fc8d47ec89078d77f883c5048b4500ebbb9048d711 *08140d0c080b000200000000001100010083c504e9e067000054d211086cdb11087cdb110870d6 *1108300d0c080b0002000000000011000f008b7500c74500540e0c08ff26897500e9c84100005c *0d0c085c0d0c085c0d0c085c0d0c085c0d0c080000000001000000250000003c0d0c0802000000 *150001008d45e43b435473058b43f8ffe08d45f8c700d46d1008897004c745ec90db1108c745e8 *90d611088b46088945f48b7604c745f0840d0c0883ed1cb814161008ebca8d7600c745006cdb11 *08be54d2110883ed04e9200404008b750483c504e9a9f9030090c745047cdb1108be54d21108e9 *030404008d7600f40d0c08e80d0c08300d0c0801000000250005008b46048945008b7608c745fc *1c0e0c0883ed04ff268d76001c0e0c08d40d0c08300d0c080000000025000700300d0c08010000 *0024000f0083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8900d0c088b460c8947fc8b *450489078d47f8894500c74504480e0c08b8f0dd0c08ebd890900400010000000000110000008d *45fc3b4354730abe38d411088b43fcffe08b7500c74500c40e0c088b06ebf00000000024000000 *c7450090d611088b760483ed04e9320304009090acdb1108d80e0c080400010000000000110001 *0083c70c3b7b5c7611c7436c03000000be3cd411088b43fcffe0c747f8246010088b45008947fc *8d47f8894500b8d0e30c08ebe4900400010000000000110000008d45fc3b4354720883c70c3b7b *5c7611c7436c03000000be44d411088b43fcffe0c747f89c0f0c088b45008947fc8d47f8894500 *be60d6110883ed04b808121008ebdc900000000024000000c7450064d61108c745fc64db11088b *761083ed08e9830604008d760001000100130000008d45ec3b435473058b43f8ffe08d45f8c700 *d46d10088970048b7604c745f4780f0c0883ed0c8b06ebe190900b000200000000001100000083 *c70c3b7b5c7611c7436c03000000be48d411088b43fcffe0c747f83c100c088b45008947fc8b45 *0489078d47f8894504be60d61108b808121008ebda8d760001000000240000008b4504894500c7 *450464d611088b760c83ed04e9e005040002000000150000008d45ec3b435473058b43f8ffe08d *45f8c700d46d10088970048b46088945f48b7604c745f01c100c0883ed108b06ebdb5061747465 *726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174204748 *432f526561642e6c68733a333231004a757374004e6f7468696e67005061747465726e206d6174 *6368206661696c75726520696e20646f2065787072657373696f6e206174204748432f52656164 *2e6c68733a3332350090acdb110848d7110820d4110880d61108f0100c08040001000000000011 *000f0083c7403b7b5c7611c7436c10000000be7cd411088b43fcffe0c747c418160c088b450089 *47c8c747d0f41d0c088d47e48947d48d47ec8947d88d47c48947dc8d47f88947e0c747e490160c *088d47d08947e8c747ecb8160c088947f0c747f8f0160c088947fc89c683c504b8f41d0c08eba5 *89f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460489 *45f483ed0cb8a81d0c08ebe28d760000000200120000008d45f43b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f4b4100c0883ed0cb864d60b08ebe189f68b4504894508be9cd61108 *83c504e9090004009016000300000001000b00000083c7083b7b5c760cc7436c020000008b43fc *ffe0c747fc94b90b088b450089078d47fc894500b8d0620c08ebe58d760001000100130000008d *45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4be8cd6110883ed10b8 *08121008ebdd89f683c7143b7b5c760cc7436c050000008b43f8ffe0c747f00c120c08c747f844 *120c088b45088947fc8d47f08945088d47f8894504bea4d61108b814161008ebd274120c08ec11 *0c080000000002000000250000008b45048945008975fcc74504c8120c0883ed04e968bcffffc8 *120c08c8120c08000000000300000025000000c745f8a7100c088b4604894500c745fcf4120c08 *83ed08e954c3ffff8b4504894508be9cd6110883c504e9e5fe03009010130c0810130c0810130c *0810130c08f4120c0810130c0810130c0810130c08000000000200000025000000040001000100 *00000c0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8c011 *0c088d47f88945fc8b55008b460489450089d6c745f850130c0883ed088b06ebd889f6f4100c08 *01000100130001008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4 *c745f028d41108bea4d6110883ed14b814161008ebd68d7600f4100c0801000100130001008d45 *f03b4354720883c7203b7b5c760cc7436c080000008b43f8ffe08d45f8c700d46d1008897004c7 *47e48c110c088b46048947e8c747f05c130c088d47e48947f4c747f8ac130c088d47f08947fc8d *47f88945f4c745f0c4d4110883ed10b894600c08ebb489f600000200120000008d45f43b435473 *058b43f8ffe08d45f8c700d46d1008897004c745f46c100c0883ed0cb864d60b08ebe189f6be9c *d61108e972fd030089f6c74504e0d01108bea0d61108e95ffd03008d760098140c088c140c0800 *00000001000000250000008b45048945008975fcc74504c0140c0883ed04e970baffffc0140c08 *c0140c08000000000200000025000000c745f8ac100c088b4604894500c745fcec140c0883ed08 *e95cc1ffffbe9cd61108e9f6fc030089f608150c0808150c0808150c0808150c08ec140c080815 *0c0808150c0808150c0800000000010000002500000004000100000001000b0000008d45f43b43 *54720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f860140c088b75008d47f8894500 *c745fc40150c0883ed048b06ebe089f6f4100c0801000100130001008d45ec3b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f4c745f028d41108bea4d6110883ed14b8141610 *08ebd68d7600fc100c0802000000150001008d45ec3b435473058b43f8ffe08d45f8c700d46d10 *088970048b46088945f48b46048945f0be80d6110883ed14b814161008ebd7f4100c0801000100 *130007008d45f43b4354720883c72c3b7b5c760cc7436c0b0000008b43f8ffe08d45f8c700d46d *1008897004c747d8f0130c088b46048947dcc747e44c150c08c747ec94150c088d47e48947f0c7 *47f8d8150c088d47ec8947fc8d47d889078d47f88945f483ed0cb8a80b0c08ebaf900400010001 *0000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04b8d40f0c08ebee8d7600 *01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4 *83ed0cb82c0f0c08ebe28d7600f0100c0801000100130001008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb8ec0e0c08ebe2909090acdb11081c170c0804 *000100000000001100010083c7403b7b5c7611c7436c10000000be84d411088b43fcffe0c747c4 *ac170c088b45008947c8c747d0f41d0c088d47e48947d48d47ec8947d88d47c48947dc8d47f889 *47e0c747e4e4170c088d47d08947e8c747ec0c180c088947f0c747f844180c088947fc89c683c5 *04b8f41d0c08eba589f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b46048945f483ed0cb8d01d0c08ebe28d760004000100010000000c0000008d45fc3b *435473058b43fcffe08b46048945fc83ed04b8d40f0c08ebee8d760001000100130000008d45f4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb82c0f0c08ebe28d *76001c170c0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f483ed0cb8ec0e0c08ebe29090905061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174204748432f526561642e6c68733a34363100 *90acdb110848d7110848d7110820d41108ac180c080b0002000000000011000f0083c7403b7b5c *7611c7436c10000000bea4d411088b43fcffe0c747c4b81c0c088b45008947c88b45048947ccc7 *47d0f41d0c088d47e48947d48d47ec8947d88d47c48947dc8d47f88947e0c747e4101d0c088d47 *d08947e8c747ec381d0c088947f0c747f8701d0c088947fc89c683c508b8f41d0c08eb9f010001 *00130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0c *b8a81d0c08ebe28d760000000200120000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f470180c0883ed0cb864d60b08ebe189f68b450889450cbe9cd6110883c508e949 *f803009016000300010000000c00000083c70c3b7b5c760cc7436c030000008b43fcffe0c747f8 *e4bb0b088b46048947fc8b450089078d47f8894500b8d0620c08ebdf9083c7083b7b5c760cc743 *6c020000008b43f8ffe0c747fccc190c088b450489078b450c8945088d47fc89450cbea4d61108 *83c504b814161008ebd7908b450889450cbe9cd6110883c508e9b9f70300903c1a0c08001a0c08 *0000000003000000250000000400000024000000837e042c75118b7504c74504641a0c0883c504 *8b06ffe08b450c894510be9cd6110883c50cb808121008ebe98b46088945008b7604c745fc6c1a *0c0883ed04ff268d7600981a0c08ac190c080000000003000000250000008b7604c74500c41a0c *08ff268b450889450cbe9cd6110883c508e925f7030090d01a0c08d01a0c08d01a0c08d01a0c08 *d01a0c08c41a0c08d01a0c08d01a0c0800000000030000002500000004000100020000000e0000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f880190c088b4608 *8945f88d47f88945fc8b55008b460489450089d6c745f4101b0c0883ed0c8b06ebd2b0180c080b *000200010000000c0001008d45fc3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0 *c747f81c1b0c088b46048947fc8b450089078d47f8894500c745fc28d4110883ed04b8f0620c08 *ebd58d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *46048945f483ed0cb8a81d0c08ebe28d760002000000150000008d45ec3b435473058b43f8ffe0 *8d45f8c700d46d10088970048b46088945f48b46048945f0bea4d6110883ed14b814161008ebd7 *b0180c0802000000150003008d45f43b4354720883c72c3b7b5c760cc7436c0b0000008b43f8ff *e08d45f8c700d46d1008897004c747d84c190c088b46088947dcc747e4741b0c088d47d88947e8 *c747ecc41b0c088b46048947f0c747f8f81b0c088d47ec8947fc8d47e489078d47f88945f483ed *0cb808e00c08eba98d7600b0180c0802000000150007008d45f43b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8381c0c088b46048947fc8b46 *0889078d47f88945f483ed0cb8a80b0c08ebd089f604000100010000000c0000008d45fc3b4354 *73058b43fcffe08b46048945fc83ed04b8d40f0c08ebee8d760001000100130000008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb82c0f0c08ebe28d7600 *ac180c0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46 *048945f483ed0cb8ec0e0c08ebe29090900400010000000000110000008b7500c74500bc1d0c08 *ff2600000000240000008b760ce9d8e903000400010000000000110000008b7500c74500e41d0c *08ff2600000000240000008b7610e9b0e903000400000001000000ff6500900400000009000000 *ff650090b80c1e0c08ffe090833dd8171208007546c705d817120801000000c745000cde0b0883 *c504c74500a01f0c0883c504c74500b4ed0b0883c504c7450064050c0883c504c74500d8c80b08 *83c504c7450064de0b0883c50483ed04ff65009090901600030000000000110000008d45fc3b43 *54730abeb4d411088b43fcffe08b7504c745fce41e0c0883ed048b06ebed900100000024000000 *8b7624e964f3030002000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *70048b46088945f48b7604c745f09c1e0c0883ed108b06ebdb430000002400000083c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8ac1e0c088b45048947fc8b450c89078d47f889450c8b *762483c508b808121008ebd9909090b8281f0c08ffe090833ddc171208007528c705dc17120801 *000000c74500a01f0c0883c504c7450064050c0883c504c74500d8c80b0883c50483ed04ff6500 *90b8681f0c08ffe090833de017120800751ec705e017120801000000c74500281f0c0883c504c7 *4500d8c80b0883c50483ed04ff6500909090b8a01f0c08ffe090833de4171208007546c705e417 *120801000000c74500247a0c0883c504c74500b4ed0b0883c504c7450094b40b0883c504c74500 *0cde0b0883c504c74500d8c80b0883c504c7450064de0b0883c50483ed04ff6500909090040001 *00000000001100000083c70c3b7b5c7611c7436c03000000beb8d411088b43fcffe0c747f87cdc *0b08c747fc54dc11088b450089078d77f883c5048b45008b40ecebdd90900b0002000000000011 *0000008b7500c7450050210c08ff268b750483c504e939e703009002000000150000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8 *7cdc0b08c747fc44dc11088b460489078d47f88945f48b760883ed10b808121008ebcc89f60400 *0100010000000c00000083c7183b7b5c760cc7436c060000008b43fcffe0c747ec6c200c088b45 *008947f08b46048947f4c747f87cdc0b08c747fc4cdc11088d47ec89078d77f883c5048b45008b *40ecebca83c7083b7b5c760cc7436c020000008b43f8ffe0c747fcc8200c088b450489078d77fc *83c5088b4500ebe79010210c0858200c080000000001000000250000000b000200000000001100 *0000e9cbb8ffff9090905cdc110864210c081600030000000000110001008d45fc3b4354730abe *ccd411088b43fcffe08b7504c745fc08240c0883ed048b06ebed90c745085cdc110883c508e981 *b8ffff9083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc74dc11088b *450489078d77f883c5108b45008b40ecebdd8d760004000000120000008d45ec3b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f88c6b10088b46 *0c8947fc8b460889078d47f88945f48b46048945f08b761083ed14b814161008ebc79083c7203b *7b5c760cc7436c080000008b43f8ffe0c747e4ec210c088b46048947e88b46088947ec8b450c89 *47f08b45088947f4c747f87cdc0b08c747fc7cdc11088d47e489078d77f883c5108b45008b40ec *ebbe40220c08ac210c0800000000030000002500000004000100020000000e0000008d45f43b43 *5473058b43fcffe08b46088945f88b46048945fc8b450089750089c6c745f4a8220c0883ed0c8b *06ebdc9003000000120000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e08d45f8c700d46d1008897004c747f8b4220c088b46048947fc8b460889078b460c8945f48d77 *f883ed0cb8b4220c08ebcd8d760004000000120000008d45ec3b4354720883c7103b7b5c760cc7 *436c040000008b43f8ffe08d45f8c700d46d1008897004c747f4ec220c088b46088947f88b460c *8947fc8b461089078d47f48945f48b46048945f08b760883ed14b814161008ebc18d760083c720 *3b7b5c760cc7436c080000008b43f8ffe0c747e444230c088b46048947e88b45048947ec8b450c *8947f08b46088947f4c747f87cdc0b08c747fc6cdc11088d47e489078d77f883c5108b45008b40 *ecebbea0230c089c210c0864210c08430000002500010004000100000000001100000083c7143b *7b5c7611c7436c05000000bed4d411088b43fcffe0c747f05c240c088b45008947f4c747fc9424 *0c088d47f089078d77fc83c5048b4500ebda8d760001000100130000008d45f43b435473058b43 *f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8d4fb0c08ebe28d76000400010001 *0000000c0000008d45f83b435473058b43fcffe08b45008945fcc7450000d211088b760483ed08 *b814161008ebe4905cdc1108bc240c0804000100000000001100010083c73c3b7b5c7611c7436c *0f000000bed8d411088b43fcffe0c747c848250c088b45008947ccc747d480250c088d47c88947 *d8c747dc4c2d0c088d47d48947e08d47ec8947e48d47f88947e8c747ec90250c088d47dc8947f0 *c747f8c8250c088947fc89c683c504b84c2d0c08eba89001000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8282d0c08ebe28d7600040001 *00010000000c0000008b7604e914e2030001000100130000008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb814240c08ebe28d7600bc240c080100010013 *0001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb824 *fc0c08ebe29090904a75737420004e6f7468696e670089f65cdc110804260c0804000100000000 *001100010083c7303b7b5c7611c7436c0c000000be1cd511088b43fcffe0c747d4b4280c088b45 *008947d8c747dc4c2d0c088d47d48947e08d47ec8947e48d47f88947e8c747ece4280c088d47dc *8947f0c747f81c290c088947fc89c683c504b84c2d0c08ebb589f6897500e9d8faffff7c260c08 *7c260c08000000000100000025000000c74504fa250c08c7450898260c0883c504e9b6afffff89 *f602000000150000008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f4c745f0acdc1108c745ec141610088b46048945e883ed18b8002d0c08ebce8d76000000020012 *0000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4f4250c0883ed0cb8 *64d60b08ebe189f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *70048b46048945f4bec0d4110883ed10b808121008ebdd89f602000000150000008d45ec3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f0be48d1110883ed14 *b814161008ebd701000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *04c745f4c4d411088b46048945f083ed10b8d88b0c08ebdb01000100130000008d45f03b435473 *058b43f8ffe08d45f8c700d46d10088970048b46048945f4bebcd4110883ed10b808121008ebdd *89f683c7483b7b5c760cc7436c120000008b43f8ffe0c747bcb8260c088b45088947c08b460489 *47c4c747c800270c08c747d434270c088d47c88947d8c747e06c270c088d47d48947e48d47bc89 *47e8c747eca8270c088b45048947f0c747f8e0270c088d47ec8947fcc74508081210088d47e089 *45048d47f8894500b8bcc90b08eb9089f610280c0898260c080000000003000000250000001600 *0300010000000c0000008d45fc3b435473058b43fcffe08b55048b460489450489d6c745fca828 *0c0883ed048b06ebe589f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b46048945f483ed0cb814240c08ebe28d760004260c0801000100130001008d45f4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb824fc0c08ebe290 *90905cdc110848290c080b000200000000001100010083c74c3b7b5c7611c7436c13000000be24 *d511088b43fcffe0c747b8e8290c088b45048947bcc747c41c2a0c088b45008947c8c747d05c2c *0c088d47b88947d48d47c48947d8c747dc4c2d0c088d47d08947e08d47ec8947e48d47f88947e8 *c747ec902c0c088d47dc8947f0c747f8c82c0c088947fc89c683c508b84c2d0c08eb9589f60100 *0100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed *0cb8d4fb0c08ebe28d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b46048945f483ed0cb8d4fb0c08ebe28d760000000200120000008d45f03b435473 *058b43f8ffe08d45f8c700d46d1008897004c745f444dc1108bea8dc110883ed10b808121008eb *dc9002000000150000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460889 *45f48b46048945f0be48d1110883ed14b814161008ebd700000200120000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f47cdc1108bea8dc110883ed10b808121008ebdc *9002000000150000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f48b46048945f0be48d1110883ed14b814161008ebd702000000150000008d45ec3b435473058b *43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f0be48d1110883ed14b81416 *1008ebd700000200120000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745 *f44cdc1108bea8dc110883ed10b808121008ebdc90030000002400000083c7603b7b5c760cc743 *6c180000008b43f8ffe0c747a4502a0c08c747b08c6b10088b45088947b48b46088947b8c747bc *882a0c088d47b08947c08d47a48947c4c747c8c42a0c08c747d4fc2a0c088d47c88947d88d47bc *8947dcc747e08c6b10088b45048947e48b46048947e8c747ec382b0c088d47e08947f08d47d489 *47f4c747f8742b0c088d47ec8945088d47f889450483c504b8d0c90b08e971ffffff8d76001600 *0300020000000e0000008d45fc3b435473058b43fcffe08b46088945008b55048b460489450489 *d6c745fcac2b0c0883ed048b06ebdf01000100130000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b46048945f483ed0cb814240c08ebe28d760048290c0801000100130001 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb824fc0c *08ebe29090900400010000000000110000008b7500c74500142d0c08ff2600000000240000008b *7604e980da03000400010000000000110000008b7500c745003c2d0c08ff260000000024000000 *8b760ce958da03000300000001000000ff6500900300000009000000ff650090b8642d0c08ffe0 *90833de8171208007528c705e817120801000000c74500d8c80b0883c504c74500cce70b0883c5 *04c74500b4060c0883c50483ed04ff6500900000010003000000ff650090000001000a000000ff *650090b8bc2d0c08ffe090833dec171208007550c705ec17120801000000c74500cce70b0883c5 *04c74500d8c80b0883c504c74500b0df0b0883c504c74500b4060c0883c504c74500642d0c0883 *c504c7450014300c0883c504c74500f0e90b0883c50483ed04ff650090f0dc11081c2e0c080400 *020000000000110001008d45fc3b4354730abe34d511088b43fcffe08b45008945fcc74500f0dc *110883ed04b870960c08ebe7909090b8642e0c08ffe090833df017120800753cc705f017120801 *000000c7450014300c0883c504c7450064050c0883c504c74500f0e90b0883c504c745000c1e0c *0883c504c74500d8c80b0883c50483ed04ff65009080d81108b02e0c0804000100000000001100 *01008b7500c74500dc2e0c08ff26b02e0c0800000000240001008b4604894500e92dd600009004 *00010000000000110000008b7500c74500082f0c08ff2600000000240000008b4604894500e979 *d60000900400010000000000110000008b7500c74500342f0c08ff2600000000240000008b4604 *894500e99dd60000900400010000000000110000008b7500c74500602f0c08ff26000000002400 *00008b4604894500e9c1d60000900400010000000000110000008b7500c745008c2f0c08ff2600 *000000240000008b460483f80c742a83f80c770f83f80a742083f80a771b83f809eb1483f82074 *1183f820770583f80deb053da00000007510be04d2110883c5048b45008b40ecffe0befcd11108 *83c5048b45008b40f0ebee90900b00030000000000110000008b7500c7450000300c08ff260100 *0000240000008b4604894500e971d6000090b814300c08ffe090833df4171208007564c705f417 *120801000000c745005c890c0883c504c74500a01f0c0883c504c7450010070c0883c504c74500 *0c1e0c0883c504c7450064050c0883c504c745000cde0b0883c504c74500d8c80b0883c504c745 *0010a70b0883c504c7450064de0b0883c50483ed04ff6500900000010003000000ff6500900000 *01000a000000ff6500900000010003000000ff650090000001000a000000ff6500900000010003 *000000ff650090000001000a000000ff6500900000010003000000ff650090000001000a000000 *ff6500900000020006000000ff650090000002000a000000ff650090b808310c08ffe090833df8 *17120800756ec705f817120801000000c74500e84e0c0883c504c74500a86b0c0883c504c74500 *94b40b0883c504c74500a01f0c0883c504c7450064050c0883c504c74500b0df0b0883c504c745 *000c1e0c0883c504c7450010070c0883c504c74500d8c80b0883c504c7450050a70b0883c50483 *ed04ff6500909090b890310c08ffe090833dfc171208000f85c8000000c705fc17120801000000 *c74500a01f0c0883c504c7450064de0b0883c504c74500b0df0b0883c504c745000c1e0c0883c5 *04c7450064050c0883c504c745000cde0b0883c504c7450010070c0883c504c7450078df0b0883 *c504c74500cce70b0883c504c74500d8c80b0883c504c745004c7c0c0883c504c74500f8790c08 *83c504c7450094b40b0883c504c74500247a0c0883c504c7450004aa0b0883c504c7450084770c *0883c504c74500686b0c0883c504c745005c460c0883c504c7450004a10b0883c50483ed04ff65 *0090b874320c08ffe090833d0018120800753cc7050018120801000000c74500f0440c0883c504 *c74500cce70b0883c504c74500ccbe0b0883c504c7450050be0b0883c504c7450090310c0883c5 *0483ed04ff650090ecd711082cdd11083cdd1108c0320c080b000300000000001100070083c70c *3b7b5c7611c7436c03000000be58d511088b43fcffe0c747f8cc350c088b45008947fc8b450489 *078d47f8894504b8e4c10b08ebdfeb5689f6000000002400000083c7083b7b5c7615c7436c0200 *0000c74320ff000000b8b03d1008ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea8d7600 *14330c0800000000000000000000010000000200100000008d45fc3b435473058b43fcffe08b46 *04894424188b460889442414c745fc20330c0883ed048b43608968308b53688d4704894204c744 *240400000000891c24e85e9a03008944240c8b442414894424048b442418890424e86481030089 *442410c7442404000000008b44240c890424e8bd9a03008b43608b683005880000008943548b43 *688b780483ef0489c28b4018c1e00c030283e80489435c8b7424108b4500e964ffffff90210000 *002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f86c330c088b45048947fc8b *460489078d77f883c508b8d46d1008ebdf9001000000240000008b55048b460489450489d6c745 *001c340c08ff2602000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *048b46088945f48b7604c745f058340c0883ed108b06ebdb000000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe0837e0400750dbefcd2110883c50483ef08eb0fc747fc14e90b08 *89378d77fc83c5048b4500ebd7900000000024000000c74500ac340c08ff268d7600c4320c0804 *000200010000000c0003008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0 *c747f874340c088b46048947fc8b450089078d47f88945fcc745f82cdd1108be3cdd1108c74500 *f0340c0883ed0cb84c181008ebc98d7600c0320c0804000200010000000c0007008d45f43b4354 *720883c7083b7b5c760cc7436c020000008b43fcffe0c747fc0c350c088b460489078b45008945 *fc8d47fc894500c745f85cdb1108c745f4f8d7110883ed0cb8b8860c08ebcec0320c0804000100 *020000000e0007008d45f83b4354720883c7143b7b5c760cc7436c050000008b43fcffe0c747f0 *70350c088b45008947f4c747f87cdc0b088b46048947fc8b460889078d47f08945008d47f88945 *fcc745f808d1110883ed08b800880c08ebc24cdd110854dd110824360c08040002000000000011 *0003008d45fc3b4354730abe60d511088b43fcffe08b7500c7450094360c088b06ebf0be54dd11 *0883c504e957ff03008d7600c745004cdd11088975fc83ed04e9668bffff89f66c360c085c360c *0824360c080000000025000300b89c360c08ffe090833d0418120800756ec70504181208010000 *00c74500ccbe0b0883c504c74500cce70b0883c504c7450050be0b0883c504c74500d8480c0883 *c504c745005c460c0883c504c74500884e0c0883c504c74500984a0c0883c504c74500004e0c08 *83c504c74500689d0b0883c504c7450090310c0883c50483ed04ff650090909084dd110884dd11 *089cdd1108b8dd11081c370c08040002000000000011000f0083c7103b7b5c7611c7436c040000 *00be68d511088b43fcffe0c747f428380c088b45008947f8c747fc983b0c088b450089078d47f4 *8943048d77fc83c504b870331008ebd28d760002000000150000008d45f03b435473058b43f8ff *e08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b83c490c08ebdc90010000 *00240000008b06668378fe09754083c7143b7b5c760cc7436c050000008b43f8ffe0c747f08c37 *0c088b45048947f48b46048947f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd2 *89750483c504b874e80b08ebc589f604000200010000000c0000008d45fc3b435473058b43fcff *e08b55008b460489450089d6c745fcc4370c0883ed048b06ebe589f6e9430300008d7600e98f02 *00008d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *46048945f483ed0cb8e04b0c08ebe28d76001c370c0801000100130009008d45ec3b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f868380c088b *46048947fc8d47f88945f4c745f084dd1108beb8dd110883ed14b814161008ebc98d7600010000 *002400000083c504e970afffff04000200010000000c0000008d45f83b435473058b43fcffe08b *7604c745fcfc380c0883ed08b81c091008ebea8d7600eb3a89f624370c0821000000240001008b *45048945008b4604894504e977d500008d760034390c080000000024370c080000010001000100 *0f0001008d45f83b435473058b43fcffe08b46088945fc8b7604c745f844390c0883ed088b06eb *e7eb1a89f694390c08000000000000000000000100010000000c0000008b7604e9c0f703000100 *0100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed *0cb8e04b0c08ebe28d760001000000240000008b750483c508ff65008d76001c370c0801000000 *2400090083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f8c0390c *088b45048947fc8d47f88945fcc745f884dd1108897504beb8dd1108c74500f4390c0883ed0cb8 *4c181008ebcb1c370c082100000024000d0083c7283b7b5c7615c7436c0a000000c74320fe0000 *00b8b03d1008ffe0c747dca0380c088977e0c747e810390c088d47dc8947ecc747f070390c0889 *77f48b45048947f8c747fcb0390c088d47f089078975048d47e88943048d77fcc745000c3a0c08 *b870331008ebb189f658380c08000000001c370c0800000100010001000f000f008d45ec3b4354 *73058b43fcffe0c745f494dd11088b46048945f08b46088945fcc745f8683a0c0883ed10b8e4c1 *0b08ebda8d7600010000002400000083c508ff650089f61c370c080100000024000f0083c70c3b *7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe08d4e08c747f8ec3a0c088b550489 *57fc890f8975048d77f8c74500283b0c08b8fc301008ebd89050380c08000000001c370c080000 *0100010000000c000f008d45f83b435473058b43fcffe08b46048945fcbe04000000c745f83c3b *0c0883ed08b8cc421008ebe2909090c8dd1108c43b0c080400020000000000110001008d45fc3b *4354730abe70d511088b43fcffe08b45008945fcc74500d8dd110883ed04b8e4c10b08ebe79090 *90e0dd1108043c0c0804000200000000001100010083c7143b7b5c7611c7436c05000000be78d5 *11088b43fcffe0c747f0043d0c088b45008947f4c747f8383d0c088b45008947fc8d47f0894304 *8d77f883c504b870331008ebd189f602000000150000008d45f03b435473058b43f8ffe08d45f8 *c700d46d10088970048b46048945f48b46088945f083ed10b83c490c08ebdc9001000000240000 *008b06668378fe09754083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0683c0c088b45 *048947f48b46048947f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd289750483 *c504b874e80b08ebc589f604000200010000000c0000008d45fc3b435473058b43fcffe08b5500 *8b460489450089d6c745fca03c0c0883ed048b06ebe589f6043c0c0801000100130001008d45ec *3b435473058b43f8ffe08d45f8c700d46d1008897004c745f4e0dd11088b46048945f0be08d111 *0883ed14b814161008ebd6909090e8dd1108703d0c0804000200000000001100010083c7143b7b *5c7611c7436c05000000be80d511088b43fcffe0c747f0703e0c088b45008947f4c747f8a43e0c *088b45008947fc8d47f08943048d77f883c504b870331008ebd189f602000000150000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b83c *490c08ebdc9001000000240000008b06668378fe09754083c7143b7b5c760cc7436c050000008b *43f8ffe0c747f0d43d0c088b45048947f48b46048947f8c747fc9ce90b088d47f089078d77fc83 *c508b8c0351008ebd289750483c504b874e80b08ebc589f604000200010000000c0000008d45fc *3b435473058b43fcffe08b55008b460489450089d6c745fc0c3e0c0883ed048b06ebe589f6703d *0c0801000100130001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f4e8 *dd11088b46048945f0be08d1110883ed14b814161008ebd6909090a8dd1108dcd71108f0dd1108 *283f0c0800000000dc3e0c080000010000000000110007008d45f43b4354730abe88d511088b43 *fcffe0bea8dd1108c745fc9c3f0c0883ed048b06ebeb8d7600e9d3ffffff8d7600e43e0c082100 *0000240001008b4604894500e971d6000090e43e0c082100000024000100c745003c3f0c08ff26 *8d7600e03e0c08210000002400030085f6740a897500b8b8150d08ffe0bedcd71108c74500543f *0c08b8c0351008ebeb8d7600e03e0c0800000000240003008b46048945f88b4604894500c745fc *6c3f0c0883ed08e90d45000090f8dd110860dd1108b83f0c0804000200000000001100030083c7 *0c3b7b5c7611c7436c03000000be90d511088b43fcffe0c747f818400c088b45008947fcc74304 *00de11088d77f883c504b870331008ebdd89f6b83f0c0801000100130003008d45e83b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f4a4dd11088b46048945f0c745ec60dd1108bef8 *dd110883ed18b8e41a1008ebcff8dd110874dd110854400c0804000200000000001100030083c7 *0c3b7b5c7611c7436c03000000be98d511088b43fcffe0c747f8b4400c088b45008947fcc74304 *04de11088d77f883c504b870331008ebdd89f654400c0801000100130003008d45e83b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f470dd11088b46048945f0c745ec74dd1108bef8 *dd110883ed18b8e41a1008ebcfb8f8400c08ffe090833d08181208007546c70508181208010000 *00c7450004a10b0883c504c74500cce70b0883c504c74500689d0b0883c504c74500ccbe0b0883 *c504c7450050be0b0883c504c7450090310c0883c50483ed04ff650090909008de110818de1108 *50410c080400010000000000110003008d45f83b4354720883c7283b7b5c7611c7436c0a000000 *bea0d511088b43fcffe0c747dc94b90b088b45008947e0c747e4ece80b08c747e8e0d01108c747 *ec28da1108c747f018de1108c747f408de11088d47dc8947f8c747fc68420c088d47e489078b45 *008945fc8d47fc894500be08d1110883ed08b814161008eba189f6010000002400000083c7083b *7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe085f67519c747fc9ce90b088b4504 *89078d77fc83c508b8c0351008ebe189750483c50483ef08b8b8820c08ebd189f6010000002400 *00008b4604c74500f0410c08890424e88652f8ff89c6ff65009004000200010000000c0000008d *45fc3b435473058b43fcffe08b55008b460489450089d6c745fc44420c0883ed048b06ebe59090 *d0420c0800000000000000000000010000000000110000008d45f03b4354730abea8d511088b43 *fcffe0be04000000c745fca4430c0883ed04b8cc421008ebe8e9d3ffffff8d7600010001001300 *00008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46048945f0 *83ed10b8d81c0d08ebdc90020000002400000083c70c3b7b5c7615c7436c03000000c74320fe00 *0000b8b03d1008ffe0c747f8e0420c088977fc8d77f883c50c8b4500ebe989f623000000240000 *008b45048b008b00894500c7450418430c08e94e3f000089f601000000240000008d56088b4d04 *83c1088975008955fcc745f854430c0883ed0889542404890c24e8bc7c0300ff65000000000024 *000000897500be04000000c745fc74430c0883ed04e911ff030090fc430c080000000000000000 *0000010000000000110000008d45e03b4354730abeacd511088b43fcffe0be04000000c745fcd0 *440c0883ed04b8cc421008ebe8e9d3ffffff8d7600430000002400000083c510ff650089f64300 *0000240000008975fcc745000c440c0883ed04e926d9000089f6a40000002400000083c7083b7b *5c7615c7436c02000000c74320ff000000b8b03d1008ffe08b450c8b108b45048b0083c004c747 *fce0060c0889074ac745001c0910088d47fc8945fc8955f8c745f4f8d71108c745041c440c0883 *ed0cb8e4840c08ebbf01000000240000008b550483c2088d4e088955008975fc894df8c745f438 *440c0883ed0c894c2404891424e8917b0300ff6500900000000024000000897500be04000000c7 *45fc9c440c0883ed04e9e5fd030090b8f0440c08ffe090833d0c18120800751ec7050c18120801 *000000c7450090310c0883c504c74500cce70b0883c50483ed04ff650090909030de110820450c *0804000200000000001100010083c70c3b7b5c7611c7436c03000000beb0d511088b43fcffe0c7 *47f828460c088b45008947fc8d77f8b81c091008ebe7be44de110883c504e9632804008d7600eb *1a89f674450c08000000000000000000000100010000000c0000008b7604e928f0030020450c08 *010000002400010083c7103b7b5c760cc7436c040000008b43f8ffe0837e0400750dbe3cde1108 *83c50883ef10eb1fc747f4a4c40c088b45048947f8c747fc90450c088d47f489078d77fc83c508 *b8d46d1008ebc58d76008975008b7604c745fca4450c0883ed04ff2689f6f4450c0864450c0820 *450c08000000002500010020450c0801000100130001008d45f03b435473058b43f8ffe08d45f8 *c700d46d10088970048b7604c745f41c460c0883ed0c8b06ebe19090b85c460c08ffe090833d10 *18120800756ec7051018120801000000c74500a01f0c0883c504c74500d8480c0883c504c74500 *10070c0883c504c7450064050c0883c504c7450078df0b0883c504c74500281f0c0883c504c745 *00b0ac0c0883c504c74500fce00b0883c504c74500cce70b0883c504c74500d8c80b0883c50483 *ed04ff6500909090a0d2110898d91108dc460c080b00030000000000110003008d45f43b435473 *0abeb8d511088b43fcffe08b45048945f88b45008945f4c745fc30470c0883ed0cb808e70b08eb *e190e0460c084200000024000100c745080a00000083c504e9dd68000090a0d2110868d9110878 *d2110840470c080b00030000000000110007008d45f83b4354730abec0d511088b43fcffe0c745 *fc10d311088b45008945f8c74500ac470c0883ed08b8e0aa0c08ebe048470c0801000000240001 *0083c504e9109bffff40470c0801000000240005008b45048945fc8975f8897504c7450098470c *0883ed08e9419fffff90b0d9110868d91108c8470c080400020000000000110003008d45f83b43 *54730abec8d511088b43fcffe0c745fc0cd311088b45008945f8c745001c480c0883ed08b8e0aa *0c08ebe0c8470c080000000024000100897500e9a86d000068d21108a0d2110898d9110824480c *080400020000000000110007008d45f83b4354730abed0d511088b43fcffe08b45008945fcc745 *f868d21108c745007c480c0883ed08b808e70b08ebe024480c080000000024000500c745000a00 *0000c745fc68d2110883ed04e98a670000909068d21108a0d2110894480c080400020000000000 *110003008d45fc3b4354730abed8d511088b43fcffe0c745fc68d2110883ed04b808e70b08ebed *90b8d8480c08ffe090833d14181208007546c7051418120801000000c7450078df0b0883c504c7 *450084770c0883c504c74500cce70b0883c504c74500d8c80b0883c504c7450094b40b0883c504 *c74500247a0c0883c50483ed04ff65009090900b00020000000000110000008b7500c745005049 *0c08ff26010000002400000083c7203b7b5c760cc7436c080000008b43f8ffe0c747e494b90b08 *8b45048947e8c747ecece80b088b46048947f08b46088947f48b460c8947f88b46108947fc8d47 *e489078d77ec83c5088b4500ebc204000200000000001100000083c7083b7b5c7611c7436c0200 *0000bee4d511088b43fcffe0c747fc404a0c088b45008907c7430448de11088d77fc83c504b870 *331008ebde8d7600eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320fe *000000b8b03d1008ffe0c747fce4a90b0889378d77fc83c5048b4500ebea8d7600e8490c080000 *00000000000000000100010000000c0000008d45f83b435473058b43fcffe08b7604c745fcf449 *0c0883ed08b81c091008ebea909090b86c4a0c08ffe090833d18181208007514c7051818120801 *000000c74500cce70b0883c50483ed04ff650090b8984a0c08ffe090833d1c18120800756ec705 *1c18120801000000c745000c1e0c0883c504c74500cce70b0883c504c7450064050c0883c504c7 *4500d8c80b0883c504c7450094b40b0883c504c7450010a70b0883c504c74500ccbe0b0883c504 *c7450050be0b0883c504c74500004e0c0883c504c7450004a10b0883c50483ed04ff6500909090 *0800030000000000110000008b55008b450483c50889442404891424e8534df8ff89c6ff650090 *9090de1108404b0c0800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8d9b203008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f490de110883ed0cb888c40c08ebc60800030000000000110000008b55008b *450483c5088944240889542404c7042403000000e86f4bf8ff89c6ff6500909004000100000000 *00110000008b7500c74500704c0c08ff26eb5689f6000000002400000083c7083b7b5c7615c743 *6c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea *8d7600ec4b0c08000000000000000000000100000001000d0000008d45f83b435473058b43fcff *e08b46048945f8c745fcf84b0c0883ed08b8ec240d08ebe7000000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe0c747fc444c0c088b460489078d47fc894500b888c40c08ebe590 *90900b00020000000000110000008b7500c74500844d0c08ff26eb5689f6000000002400000083 *c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77 *fc83c5048b4500ebea8d7600b84c0c0800000000000000000000010000000200100000008d45f4 *3b435473058b43fcffe08b46088945f88b46048945f4c745fcc44c0c0883ed0cb82c250d08ebe1 *89f6210000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8104d0c088b45 *048947fc8b460489078d47f889450483c504b888c40c08ebdc89f601000000240000008b55048b *460489450489d6c74500444d0c08ff26b8a04d0c08ffe090833d20181208007546c70520181208 *01000000c74500004e0c0883c504c74500984a0c0883c504c745006c4a0c0883c504c74500ccbe *0b0883c504c7450050be0b0883c504c7450090310c0883c50483ed04ff6500909090b8004e0c08 *ffe090833d2418120800756ec7052418120801000000c7450010070c0883c504c74500a01f0c08 *83c504c745000c1e0c0883c504c7450064050c0883c504c745000cde0b0883c504c74500d8c80b *0883c504c7450010a70b0883c504c745002cbc0b0883c504c74500ccbe0b0883c504c7450050be *0b0883c50483ed04ff6500909090b8884e0c08ffe090833d28181208007546c705281812080100 *0000c7450050be0b0883c504c74500ccbe0b0883c504c745006c4a0c0883c504c74500f01e0d08 *83c504c74500187b0c0883c504c7450090310c0883c50483ed04ff6500909090b8e84e0c08ffe0 *90833d2c181208007528c7052c18120801000000c7450004a10b0883c504c74500d8c80b0883c5 *04c74500642e0c0883c50483ed04ff6500900b00020000000000110000008d45f83b4354730abe *60d611088b43fcffe08b7500c74500d8500c088b06ebf0be00d2110883c5088b4500ff60f089f6 *897500e9c8ffffff5c4f0c085c4f0c085c4f0c085c4f0c085c4f0c080000000001000000250000 *008b46048945fc8b55048b460889450489d6c74500844f0c0883ed08e964c20300844f0c084c4f *0c080000000001000000250000008b55048b460489450489d6c74500b84f0c08ff26897500e958 *ffffffcc4f0c08cc4f0c08cc4f0c08cc4f0c08cc4f0c080000000001000000250000008b450489 *45fc8b7604c74500f44f0c0883ed08e9fcc10300be00d2110883c5088b4500ff60f089f6020000 *00150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b4608 *8945f083ed10b82c4f0c08ebdc9083c7243b7b5c760cc7436c090000008b43f8ffe0c747e02450 *0c088b45048947e48b46088947e8c747ece4bb0b088b46048947f08b45048947f4c747f87cdc0b *088d47ec8947fc8d47e089078d77f883c5088b45008b40ecebb889f68b760483c508ff26b0500c *0854500c080c500c08f44f0c08b84f0c0800000000010000002500000004000100000000001100 *000083c70c3b7b5c7611c7436c03000000be64d611088b43fcffe0c747f8f05e0c088b45008947 *fcc70778d611088d77f883c5048b45008b40e4ebdd909020df110868d6110820510c080b000200 *00000000110003008d45f83b4354730abe68d611088b43fcffe08b7500c745fc205d0c0883ed04 *8b06ebed9024510c0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46088945f48b46048945f083ed10b838510c08ebdc9083c7183b7b5c760cc7436c0600 *00008b43f8ffe0c747ec68510c088b45048947f08b46088947f4c747f8f05e0c088b46048947fc *8d47ec89078d77f883c50c8b45008b40e4ebcb908b750483c508ff268b750483c508ff26897500 *e93488fffff0510c08f0510c0800000000010000002500000003000000120000008d45e83b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46088945ec8b46048945e88b460c8945f4c745 *f00c520c0883ed18b82c4f0c08ebcf04000100020000000e00000083c7183b7b5c760cc7436c06 *0000008b43fcffe0c747ec14520c088b46048947f08b45008947f48b46088947f8c747fc105f0c *088d47ec89078d77fc83c5048b45008b40e0ebcb9083c7143b7b5c760cc7436c050000008b43f8 *ffe0c747f05c520c088b45048947f48b46048947f8c747fcc05e0c088d47f089078d77fc83c508 *8b45008b40ecebd18d7600897500e948feffffe8520c08e8520c08e8520c08e8520c08e8520c08 *24510c08010000002500010024510c0804000100020000000e0001008d45f43b435473058b43fc *ffe08b45008945f88b46088945008b7604c745fc10530c0883ed0cb808121008ebde8d760083c7 *143b7b5c760cc7436c050000008b43f8ffe0c747f020530c088b45048947f48977f8c747fcc05e *0c088d47f089078d77fc83c5088b45008b40ecebd489f6897500e9a0fdffff90530c0890530c08 *90530c0890530c0890530c0824510c08010000002500010024510c0804000100020000000e0001 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f88c6b10088b4608 *8947fc8b450089078b45008945f88d47f88945008b7604c745fcb8530c0883ed0cb808121008eb *cc89f683c7143b7b5c760cc7436c050000008b43f8ffe0c747f0c8530c088b45048947f48b4604 *8947f8c747fcc05e0c088d47f089078d77fc83c5088b45008b40ecebd18d760000000000000000 *000000000018540c0850530c0824510c0801000000250001008b55048b460489450489d6c74500 *7c540c08ff26be20df110883c508ff2689f624510c0804000100020000000e0001008d45fc3b43 *54720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f88c6b10088b46088947fc8b4500 *89078d47f88945008b46048945fc83ed04b838510c08ebd683c7143b7b5c760cc7436c05000000 *8b43f8ffe0c747f0ac540c088b45048947f48b46048947f8c747fcc05e0c088d47f089078d77fc *83c5088b45008b40ecebd18d7600000000000000000000000000f0540c0890540c0820510c0801 *000000250003008b450489750489c6c7450054550c08ff268d760054550c0854550c0854550c08 *7c540c0854550c0820510c0801000000250003008b450489750489c6c7450088550c08ff268d76 *00a4520c0888550c0888550c0888550c0888550c0820510c08010000002500030020510c080200 *0000240003008b7504c74504bc550c0883c504ff26908b450489450889750483c504e94384ffff *8d7600d8550c08d8550c080000000042000000250000008b45088945fc8975f8c7450000560c08 *83ed08e914f9ffff00560c0800560c0800560c0800560c0800560c080000000002000000250000 *0003000000120000008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945 *e88b460c8945f08b46048945f48b7608c745ec38560c0883ed1cb808121008ebcc900400010002 *0000000e00000083c7183b7b5c760cc7436c060000008b43fcffe0c747ec40560c088b45008947 *f08b46048947f48b46088947f8c747fc105f0c088d47ec89078d77fc83c5048b45008b40e0ebcb *9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f08c560c088b45048947f48b46048947 *f8c747fcc05e0c088d47f089078d77fc83c5108b45008b40ecebd18d760083c504e9a8feffffd4 *560c0818570c0818570c0818570c0818570c0820510c0803000000250003008b46048945008b75 *04c745fc40570c0883ed04ff268d760002000000150000008d45f03b435473058b43f8ffe08d45 *f8c700d46d10088970048b46088945f48b46048945f083ed10b82c4f0c08ebdc90030000001200 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008 *897004c747f860570c088b46088947fc8b460c89078d47f88945f48b46048945f083ed10b82cda *0b08ebca04000100020000000e00000083c7183b7b5c760cc7436c060000008b43fcffe0c747ec *98570c088b46048947f08b46088947f48b45008947f8c747fc105f0c088d47ec89078d77fc83c5 *048b45008b40e0ebcb9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0f4570c088b45 *048947f48977f8c747fcc05e0c088d47f089078d77fc83c5088b45008b40ecebd489f6897500e9 *a8f6ffff7c580c087c580c087c580c087c580c087c580c08000000000100000025000000020000 *00150000008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46048945ec8b4604 *8945f48b7608c745f0a4580c0883ed18b808121008ebd28d760003000000120000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8ac *580c088b46088947fc8b460c89078d47f88945f48b46048945f083ed10b82cda0b08ebca040001 *00020000000e00000083c7183b7b5c760cc7436c060000008b43fcffe0c747ecf0580c088b4604 *8947f08b45008947f48b46088947f8c747fc105f0c088d47ec89078d77fc83c5048b45008b40e0 *ebcb9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f04c590c088b45048947f48b4604 *8947f8c747fcc05e0c088d47f089078d77fc83c5088b45008b40ecebd18d760002000000150000 *008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083 *ed10b82cda0b08ebdc9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0e0590c088b45 *048947f48b46048947f8c747fc105f0c088d47f089078d77fc83c5088b45008b40e0ebd18d7600 *105a0c08000000000000000094590c083c580c080000000001000000250000008b46048945088b *7504c74504745a0c0883c504ff268d7600e937fbffff8d7600745a0c088c5a0c088c5a0c084057 *0c088c5a0c0820510c0802000000250003008975008b7504c745fcb45a0c0883ed04ff2689f6b4 *5a0c08b45a0c08e8510c08b45a0c08b45a0c0820510c0801000000250003008b450489750489c6 *c74500e85a0c08ff268d7600e85a0c08e85a0c08e0510c08e85a0c08e85a0c0820510c08010000 *00250003008975088b7504c745041c5b0c0883c504ff2689f61c5b0c0898510c081c5b0c081c5b *0c081c5b0c0820510c08420000002500030020510c0802000000240003008b7508c74500505b0c *08ff26897500e9c8f5ffff685b0c08685b0c08685b0c08685b0c08685b0c0824510c0801000000 *2500010024510c0804000100020000000e0001008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43fcffe0c747f88c6b10088b46088947fc8b450089078b45008945f88d47f8894500 *8b7604c745fc905b0c0883ed0cb808121008ebcc89f683c7143b7b5c760cc7436c050000008b43 *f8ffe0c747f0a05b0c088b45048947f48b46048947f8c747fca05e0c088d47f089078d77fc83c5 *108b45008b40f0ebd18d760083c504e920ffffff345c0c08345c0c08345c0c08345c0c08f05b0c *0820510c0803000000250003008b46048945008b7508c745fc5c5c0c0883ed04ff268d76002451 *0c0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460489 *45f48b46088945f083ed10b838510c08ebdc9083c7183b7b5c760cc7436c060000008b43f8ffe0 *c747ec805c0c088b45088947f08b46088947f4c747f8f05e0c088b46048947fc8d47ec89078d77 *f883c50c8b45008b40e4ebcb90e95ffeffff8d7600f85c0c08b05c0c08f85c0c08f85c0c085c5c *0c0820510c08020000002500030050d5110870d61108205d0c080400010000000000110003008d *45f43b4354730abe70d611088b43fcffe08b7500c74500985e0c088b06ebf0be1cdf110883c504 *ff650090be18df110883c508ff650090245d0c0801000100130001008d45f43b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f483ed0cb8385d0c08ebe28d7600040001000100 *00000c0000008b760483c504ff2604000100010000000c00000083c71c3b7b5c760cc7436c0700 *00008b43fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f4b45d0c088d47e88947f8 *c747fca05e0c088d47f489078d77fc83c5048b45008b40f0ebc489f683c7143b7b5c760cc7436c *050000008b43f8ffe0c747f07c5d0c088b45048947f4c747fcc85d0c088d47f089078d77fc83c5 *088b4500ebda185e0c08645d0c08245d0c0801000000250001008b46048945f88b4608894500be *50d51108c745fc645e0c0883ed0ce984b30300645e0c08585d0c08205d0c080000000025000300 *01000000020000008b4500ff60f089f601000000090000008b4500ff60f0909001000000020001 *008b4500ff60ec89f601000000090001008b4500ff60ec9090000000000a0002008b4500ff60e8 *909002000000040003008b4500ff60e489f602000000090003008b4500ff60e490900100000002 *0004008b4500ff60e089f601000000090004008b4500ff60e09090b8305f0c08ffe090833d3018 *1208007532c7053018120801000000c7450064050c0883c504c74500d8c80b0883c504c7450004 *a10b0883c504c74500e84e0c0883c50483ed04ff65009090900b0002000000000011000000be78 *d6110883c5088b4500ff60e8909068d61108905f0c0816000300000000001100010083c7243b7b *5c7611c7436c09000000be80d611088b43fcffe0c747e08c6b10088b45048947e48b45088947e8 *c747ec8c6b10088b45008947f08b45088947f4c747f838600c088d47e08947fc8d47ec89078d77 *f883c50c8b4500ebbb897500e930f1ffff00600c0800600c0800600c0800600c0800600c08905f *0c080100000025000100905f0c0804000100020000000e0001008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43fcffe0c747f88c6b10088b46048947fc8b450089078b45008945f8 *8d47f88945008b7608c745fc28600c0883ed0cb808121008ebcc90900b00020000000000110000 *0083c7183b7b5c7611c7436c06000000be88d611088b43fcffe0c747ec8c6b10088b45048947f0 *8b45008947f4c747f834610c088b45008947fc8d47ec89078d77f883c5088b4500ebce8d760042 *000000240000008b45083b46047e0dbe34df110883c50c8b4500ffe08b750483c508b89c071008 *ebf189f602000000240000008b55088b460489450889d6c74500e8600c08ff2604000100020000 *000e0000008d45f83b435473058b43fcffe08b46088945fc8b55008b460489450089d6c745f814 *610c0883ed088b06ebdf0b000200000000001100000083c70c3b7b5c7611c7436c03000000be8c *d611088b43fcffe0c747f8e4610c088b45048947fc8d47f88945048b7500b808121008ebe189f6 *000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b460440c747fc54dc0b08 *89078d77fc83c504b8d46d1008ebe489f601000100130000008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b7604c745f4ac610c0883ed0c8b06ebe19090040001000000000011 *00000083c7143b7b5c7611c7436c05000000be98d611088b43fcffe0c747f064620c088b450089 *47f4c747fca0620c088d47f089078d77fc83c5048b4500ebda8d760001000100130000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d1008897004c745f490d611088b760483ed10b8081210 *08ebde8d760004000100010000000c0000008b7604e9f4a40300160003000000000011000000be *78d6110883c50c8b4500ff60e890901600030000000000110000008b75088b450089450883c504 *e927af030090909016000300000000001100000083c71c3b7b5c7611c7436c07000000bea4d611 *088b43fcffe0c747e88c6b10088b45008947ec8b45088947f0c747f484630c088b45088947f88d *47e88947fc8b450489078d77f483c50c8b4500ebc89004000100030000000b0000008d45f43b43 *5473058b43fcffe08b46048945fc8b45008945f88b46088945008b760c83ed0cb8e41a1008ebdf *04000100030000000b0000008d45fc3b4354720883c7103b7b5c760cc7436c040000008b43fcff *e0c747f44c630c088b46048947f88b45008947fc8b460c89078d47f48945008b760883ed04b808 *121008ebd390b8d4630c08ffe090833d34181208007514c7053418120801000000c7450090310c *0883c50483ed04ff6500900b000200000000001100000083c7103b7b5c7611c7436c04000000be *c0d611088b43fcffe0c747f4186b0c088b45008947f8c747fc04d211088b450489078d77f483c5 *088b45008b40d8ebd70b000200000000001100000083c7103b7b5c7611c7436c04000000bec4d6 *11088b43fcffe0c747f4186b0c088b45008947f8c747fcfcd111088b450489078d77f483c5088b *45008b40d8ebd70b000200000000001100000083c7103b7b5c7611c7436c04000000bec8d61108 *8b43fcffe0c747f4386b0c088b45008947f8c747fcfcd111088b450489078d77f483c5088b4500 *8b40d4ebd70400010000000000110000008d45f43b4354730abeccd611088b43fcffe0c745f800 *0000008b45008945f4c745fc20650c0883ed0cb804ee0b08ebe0010000002400000083c7183b7b *5c760ec7436c06000000b8f0371008ffe0c747ecc86a0c088b45048947f0c747f4f86a0c088d47 *ec8947f8c747fc3cd7110889378d77f483c5088b45008b40e8ebcd900b00020000000000110000 *008d45fc3b4354730abed4d611088b43fcffe08b7504c745fc14670c0883ed048b06ebed90be00 *d2110883c50c8b4500ff60f089f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc *0b088b45088947fcc70700d211088d77f883c5108b45008b40ecebdd8d76000200000015000000 *8d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed *10b850640c08ebdc9083c7283b7b5c760cc7436c0a0000008b43f8ffe0c747dcc86b10088b4504 *8947e08b46048947e48b46088947e8c747ece8650c088b45088947f08b450c8947f4c747f87cdc *0b088d47ec8947fc8d47dc89078d77f883c5108b45008b40ecebb218660c08a8650c0800000000 *03000000250000000b000200010000000c0000008d45f83b435473058b43fcffe08975fc8b5504 *8b460489450489d6c745f88c660c0883ed088b06ebe28d760083c7083b7b5c760cc7436c020000 *008b43f8ffe0c747fc98660c088b450489078b46088945088b46048945048d77fc83c504b89866 *0c08ebd98d7600c4660c0898650c08000000004200000025000000040001000000000011000000 *8b7500c74500cc670c08ff26be3cd7110883c5048b4500ff60f089f601000100130000008d45f4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb820670c08ebe28d *760083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e844670c088b46088947ecc747f438 *6b0c088b46048947f8c747fcfcd111088d47e889078d77f483c5048b45008b40d4ebca70670c08 *2c670c080000000000000000250000000400010000000000110000008b7500c7450084680c08ff *26be3cd7110883c5048b4500ff60f089f601000100130000008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb8d8670c08ebe28d760083c71c3b7b5c760cc7 *436c070000008b43f8ffe0c747e8fc670c088b46088947ecc747f4186b0c088b46048947f8c747 *fc04d211088d47e889078d77f483c5048b45008b40d8ebca28680c08e4670c0800000000000000 *002500000004000100000000001100000083c7203b7b5c7611c7436c08000000bee0d611088b43 *fcffe0c747e4186b0c08c747e860df1108c747ecfcd111088b45008947f0c747f4186b0c088d47 *e48947f8c747fcfcd11108c70760df11088d77f483c5048b45008b40d8ebbb98df1108b0df1108 *ec680c080400010000000000110003008d45f43b4354730abe20d711088b43fcffe08b7500c745 *00ac690c088b06ebf0be3cd7110883c5048b4500ff60f089f6c74500000000008975fcc745f804 *d2110883ed08e92bcb00008d760034690c0834690c0834690c0834690c0834690c0834690c0834 *690c0834690c08f0680c0801000000250001008b46048945f88b4608894500c745fc7c690c0883 *ed08e94dc10000907c690c0824690c08ec680c08000000002500030098df1108b8df1108ac690c *080400010000000000110003008d45f43b4354730abe28d711088b43fcffe08b7500c745006c6a *0c088b06ebf0be3cd7110883c5048b4500ff60f089f6c74500000000008975fcc745f804d21108 *83ed08e93bd300008d7600f4690c08f4690c08f4690c08f4690c08f4690c08f4690c08f4690c08 *f4690c08b0690c0801000000250001008b46048945f88b4608894500c745fc3c6a0c0883ed08e9 *8dc00000903c6a0c08e4690c08ac690c080000000025000300c8df11086c6a0c08040001000000 *0000110001008d45ec3b4354730abe30d711088b43fcffe0c745fc00d21108c745f884df1108c7 *45f474df1108c745f07cdf1108c745ec38d7110883ed14b80c460d08ebd1900100000002000100 *8b4500ff60ec89f601000000090001008b4500ff60ec9090000000000a0000008b4500ff60f090 *9002000100010002008b4500ff60e889f602000100090002008b4500ff60e89090030000000100 *06008b4500ff60d889f603000000090006008b4500ff60d8909003000000010007008b4500ff60 *d489f603000000090007008b4500ff60d49090000000000a0000008b4500ff60f09090b8686b0c *08ffe090833d38181208007528c7053818120801000000c74500305f0c0883c504c74500a86b0c *0883c504c7450010070c0883c50483ed04ff650090b8a86b0c08ffe090833d3c18120800756ec7 *053c18120801000000c7450094b40b0883c504c7450004a10b0883c504c745000cde0b0883c504 *c74500b4ed0b0883c504c745000c1e0c0883c504c74500a01f0c0883c504c7450064050c0883c5 *04c74500d8c80b0883c504c74500e84e0c0883c504c74500642e0c0883c50483ed04ff65009090 *900ce01108f4df110868d61108d4df1108e4df1108d4df11081ce011082ce0110834e01108286c *0c0804000100000000001100ff018d45fc3b4354720883c7443b7b5c7611c7436c11000000be40 *d711088b43fcffe0c747c084710c088b45008947c4c747cc68730c088b45008947d0c747d4e873 *0c088d47cc8947d8c747e068740c088947e48d47d48947e8c747eca05e0c088d47e08947f0c747 *f4cc740c088d47ec8947f8c747fca05e0c088d47f489078d47c08945008d47fc8945fc83ed04b8 *38510c08eb8b2c6c0c0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d10 *088970048b46048945f4bef4df110883ed10b808121008ebdd89f6897500e904e4ffff2c6d0c08 *2c6d0c082c6d0c082c6d0c082c6d0c08306c0c080100000025000100286c0c0801000100130007 *008d45e83b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d100889 *7004c747f8fc6c0c088b46048947fc8b46048945ec8d47f88945f4be0ce01108c745f0546d0c08 *83ed18b808121008ebc390be78d6110883c50c8b4500ff60e889f683c7083b7b5c760cc7436c02 *0000008b43f8ffe0c747fc54770c088b450489078b75088d47fc89450883c504b808121008ebdf *9083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc34770c088b450489078b75088d47fc *89450883c504b808121008ebdf90fc6d0c08c86d0c08000000000200000025000000406c0c0804 *000100020000000e0001008d45ec3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0 *c747f87cdc0b088b46088947fc8b45008907c745f41ce011088d47f88945f0c745ec70d8110889 *45fc8b4604894500c745f8446e0c0883ed14b82cf50b08ebbe83c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8546e0c088b45048947fc8b450889078d47f8894508c7450404e0110883c5 *04b85c260d08ebd58d7600b06e0c08b86d0c083c6c0c080200000025000300346c0c0804000100 *010000000c000d008d45ec3b435473058b43fcffe0c745f4d4df11088b45008945f0c745ec80d1 *11088b46048945fcc745f8046f0c0883ed14b82cf50b08ebd3286c0c080100010013006f008d45 *f03b4354720883c71c3b7b5c760cc7436c070000008b43f8ffe08d45f8c700d46d1008897004c7 *47e8606d0c088b46048947ecc747f4146f0c088b46048947f8c747fca05e0c088d47f489078d47 *e88945f48d47fc8945f083ed10b838510c08ebb6be78d6110883c50c8b4500ff60e889f683c714 *3b7b5c760cc7436c050000008b43f8ffe0c747f07cdc0b088b45088947f4c747f800d21108c747 *fc34770c088d47f089078d47fc8945088b750483c504b808121008ebcb90cc6f0c08bc6f0c0800 *0000000200000025000000386c0c0804000100010000000c0001008d45ec3b435473058b43fcff *e0c745f4e4df11088b45008945f0c745ec80d111088b46048945fcc745f828700c0883ed14b82c *f50b08ebd3286c0c080100010013007f008d45f03b4354720883c71c3b7b5c760cc7436c070000 *008b43f8ffe08d45f8c700d46d1008897004c747e8586f0c088b46048947ecc747f438700c088b *46048947f8c747fca05e0c088d47f489078d47e88945f48d47fc8945f083ed10b838510c08ebb6 *486c0c0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46 *048945f4be34e0110883ed10b808121008ebdd89f60100000024000000837e0422750a8b750483 *c5088b06ffe0be78d6110883c5088b45008b40e8ebee04000100010000000c0000008d45fc3b43 *5473058b43fcffe08b55008b460489450089d6c745fc24710c0883ed048b06ebe589f6286c0c08 *0100010013007f018d45f03b4354720883c7283b7b5c760cc7436c0a0000008b43f8ffe08d45f8 *c700d46d1008897004c747dc7c700c088b46048947e0c747e8ec700c088b46048947ecc747f450 *710c088d47e88947f8c747fca05e0c088d47f489078d47dc8945f48d47fc8945f083ed10b83851 *0c08eba98d760002000000150000008d45f03b4354720883c7083b7b5c760cc7436c020000008b *43f8ffe08d45f8c700d46d1008897004c747fc14770c088b460489078d47fc8945f48b760883ed *10b808121008ebd3900100000024000000837e0427750a8b750483c5088b06ffe0be78d6110883 *c5088b45008b40e8ebee04000100010000000c0000008d45fc3b435473058b43fcffe08b55008b *460489450089d6c745fc50720c0883ed048b06ebe589f6830000002400000083c71c3b7b5c761c *c7436c07000000c74500ac720c08c74320ff000000b8b03d1008ffe0c747e800720c088b450889 *47ec8b45048947f0c747f47c720c088d47e88947f8c747fca05e0c088d47f489078d77fc83c510 *8b45008b40f0ebc489f68300000024000000837e04277510be78d6110883c5108b45008b40e8ff *e0b8ac720c08ebf78d76008b7508c7450014730c08ff26e967ffffff8d760040730c0834730c08 *0000000083000000250000000b000200010000000c0000008d45f83b435473058b43fcffe08b46 *048945fc8b7504c745f85c730c0883ed088b06ebe701000000240000008b46048945008b55048b *460889450489d6ebc19004000100010000000c0000008d45fc3b435473058b43fcffe08b55008b *460489450089d6c745fc94730c0883ed048b06ebe589f6446c0c0801000100130001008d45f43b *4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc *b4730c088b460489078d47fc8945f483ed0cb800620d08ebd60200000024000000837e045c750a *8b750483c50c8b06ffe08975048b7508c74508fcd1110883c504b868730c08ebe7900400010002 *0000000e0000008d45f83b435473058b43fcffe08b46088945fc8b55008b460489450089d6c745 *f834740c0883ed088b06ebdf0100000024000000837e0427750d8b750483c508b8a05e0c08ffe0 *be78d6110883c5088b45008b40e8ebee9004000100010000000c0000008d45fc3b435473058b43 *fcffe08b55008b460489450089d6c745fc9c740c0883ed048b06ebe5909070d6110868d6110840 *d71108f4740c0804000100000000001100070083c7243b7b5c7611c7436c09000000be48d71108 *8b43fcffe0c747e048760c088b45008947e4c747ecc8760c088d47e08947f0c747f4e0760c088d *47ec8947f8c747fcc05e0c088d47f489078d77fc83c5048b45008b40ecebbd89f6fc740c080100 *0100130001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed *0cb85c6c0c08ebe28d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d *1008897004c745f450d711088b760483ed10b808121008ebde8d76008b750483c508ff26be78d6 *110883c5088b4500ff60e889f6e4750c08dc750c08000000000100000025000000040001000100 *00000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc08760c0883ed *048b06ebe589f6f8740c0801000100130003008d45f03b4354720883c7283b7b5c760cc7436c0a *0000008b43f8ffe08d45f8c700d46d1008897004c747dc78750c088b46048947e0c747e8ac750c *088b46048947ecc747f414760c088d47e88947f8c747fcc05e0c088d47f489078d47dc8945f48d *47fc8945f083ed10b838510c08eba98d760004000100010000000c0000008b760483c504ff26f4 *740c0804000100010000000c0001008d45f83b435473058b43fcffe0c745fc081210088b450089 *45f88b460489450083ed08b8385d0c08ebe1909001000000020000008b4500ff60f089f6010000 *00090000008b4500ff60f0909001000000020002008b4500ff60e889f601000000090002008b45 *00ff60e8909001000000020004008b4500ff60e089f601000000090004008b4500ff60e0909000 *0000000a0007008b4500ff60d49090b884770c08ffe090833d40181208007514c7054018120801 *000000c74500a01f0c0883c50483ed04ff65009018000500000000001100000083c70c3b7b5c76 *11c7436c03000000be54d711088b43fcffe0c747f8b8780c088b45008947fc8b450489078d77f8 *83c508b8b8780c08ebdf8b45108945148b750483c510e90b9a03008d760004000100030000000b *0000008d45f83b435473058b43fcffe08b45008945fc8b46088945008b46048945f88b760c83ed *08b8b8780c08ebdf83c7203b7b5c760cc7436c080000008b43f8ffe0c747e40c780c088b450c89 *47e88b46088947ec8b45148947f0c747f4c86b10088b450c8947f88b45108947fc8b460489078d *47e48945148d47f48945108b750883c50cb814161008ebb489f638780c08ec770c080000000005 *0000002500000016000300020000000e0000008d45f43b435473058b43fcffe08b46088945f88b *46048945fc8b450889750889c6c745f4ac780c0883ed0c8b06ebdc901800050000000000110000 *0083c7143b7b5c7611c7436c05000000be58d711088b43fcffe0c747f0a0790c088b45108947f4 *8b45088947f88b45048947fc8b450089078d47f08945108b750083c508b814161008ebcd89f604 *000100030000000b0000008d45fc3b4354720883c7103b7b5c760cc7436c040000008b43fcffe0 *c747f4c86b10088b46088947f88b46048947fc8b450089078d47f48945008b760c83ed04b80812 *1008ebd39004000100040000000b0000008d45f83b4354720883c7103b7b5c760cc7436c040000 *008b43fcffe0c747f44c790c088b45008947f88b46088947fc8b460c89078d47f48945008b4604 *8945fc8b761083ed08b814161008ebcd909090b8f8790c08ffe090833d44181208007514c70544 *18120801000000c74500d8c80b0883c50483ed04ff650090b8247a0c08ffe090833d4818120800 *7514c7054818120801000000c74500d8c80b0883c50483ed04ff650090b8507a0c08ffe090833d *4c181208007578c7054c18120801000000c7450064de0b0883c504c7450004a10b0883c504c745 *00cce70b0883c504c745000c1e0c0883c504c7450064050c0883c504c74500e07a0c0883c504c7 *450004aa0b0883c504c7450094b40b0883c504c7450010a70b0883c504c745004c7c0c0883c504 *c74500d8c80b0883c50483ed04ff650090b8e07a0c08ffe090833d5018120800751ec705501812 *0801000000c74500d8c80b0883c504c74500f0e90b0883c50483ed04ff6500909090b8187b0c08 *ffe090833d5418120800751ec7055418120801000000c7450090310c0883c504c745005c890c08 *83c50483ed04ff65009090900400010000000000110000008b7500c74500687b0c08ff26000000 *0024000000837e040a7510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b *40f0ebee909054d2110850e01108907b0c0800000200180003008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8858203008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f450e01108be54d2110883ed10b808121008ebc19090 *900400010000000000110000008b7500c74500447c0c08ff26be0000000083c504ff650090be01 *00000083c504ff650090247c0c08187c0c08000000000000000025000000b84c7c0c08ffe09083 *3d58181208007514c7055818120801000000c74500d8c80b0883c50483ed04ff65009044e01108 *60e01108707c0c080400010000000000110003008d45f83b4354720883c7083b7b5c7611c7436c *02000000be84d711088b43fcffe0c747fcd87d0c088b450089078d47fc8945f8c745fc087e0c08 *83ed08b88ce80b08ebdbe9070100008d760001000000240000008b750483c508ff65008d760070 *7c0c08020000002400010083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ff *e0c747fc54dc0b0889378d47fc8945008b45088945fc8b45048945f88d47fc894508c74504dc7c *0c0883ed08b814760d08ebcc90c74500f47c0c08e8ed47030089c6ff65008d76008b760483c50c *ff65008d7600587d0c08447d0c08707c0c080200000025000100707c0c080200000024000100c7 *4500787d0c08ff268d7600707c0c0801000000240001008b45048945f88b46048945f48b460489 *4500c745fc847d0c0883ed0ce9d70001008d7600cc7c0c0800000000707c0c0800000100010000 *000c0003008d45ec3b435473058b43fcffe08b46048945fcbe60e01108c745f89c7d0c0883ed08 *8b06ebe589f601000000240000008b760483c504ff650490909044e0110870e011088cd7110814 *7e0c080b00020000000000110007008d45fc3b4354730abe8cd711088b43fcffe08b7504c745fc *7c800c0883ed048b06ebed908b750483c50cff2602000000150000008d45f03b435473058b43f8 *ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b850810c08ebdc90e907 *0100008d760001000000240000008b750483c508ff65008d7600147e0c08020000002400010083 *c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc54dc0b0889378d47 *fc8945008b45088945fc8b45048945f88d47fc894508c74504a47e0c0883ed08b814760d08ebcc *90c74500bc7e0c08e82546030089c6ff65008d76008b760483c50cff65008d7600207f0c080c7f *0c08147e0c080200000025000100147e0c080200000024000100c74500407f0c08ff268d760014 *7e0c0801000000240001008b45048945f88b46048945f48b4604894500c745fc4c7f0c0883ed0c *e90fff00008d7600947e0c0800000000147e0c0800000100010000000c0003008d45ec3b435473 *058b43fcffe08b46048945fcbe70e01108c745f8647f0c0883ed088b06ebe589f6147e0c080200 *0000150003008d45f43b4354720883c7143b7b5c760cc7436c050000008b43f8ffe08d45f8c700 *d46d1008897004c747f0647e0c088b46048947f48b46088947f8c747fca07f0c088d47f089078d *47fc8945f483ed0cb88ce80b08ebc39083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *d47f0c088b45048947fc8b460489078b46088945088d47f889450483c504b8307e0c08ebd62c80 *0c08547e0c08147e0c0842000000250007008cd711087c800c080b00020000000000110001008d *45f03b4354730abe94d711088b43fcffe08b7500c7450024810c088b06ebf04300000024000000 *8b45048945088b760483c508ff65089083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *54dc0b088b450889078975fc8d47fc8945f8c74500b8800c0883ed08b8307e0c08ebd889f6c880 *0c08c8800c087c800c0843000000250001007c800c0801000000240001008b45048945f48975fc *8b4608894500c745f818810c0883ed0ce9b201010090900b00020000000000110000008b7500c7 *4500a0810c08ff26210000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *bc810c088b45048947fc8b460489078d77f883c5088b4500ebe18d760001000000240000008b55 *048b460489450489d6c7450064810c08ff260000020006000000ff650090000002000a000000ff *6500900400020000000000110000008d45fc3b4354730abea8d711088b43fcffe0c745fc64820c *0883ed04b82c860d08ebed9001000100160000008d45e83b4354720883c7083b7b5c760cc7436c *020000008b43f8ffe08d45f8c700d46d1008897004c747fc84ed0b088b46088907c745f4e0d011 *08c745f0e0d011088d47fc8945ec8b46048945e883ed18b8e8830d08ebc2010000002400000083 *c7143b7b5c7615c7436c05000000c74320ff000000b8b03d1008ffe0c747f004820c088b450489 *47f48977f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd5909003000200000000 *00110000008d45f83b4354720883c7083b7b5c7611c7436c02000000beacd711088b43fcffe0c7 *47fc0c830c088b45008907c745f8000000008d77fcc745fc1c840c0883ed08b80c830c08ebd703 *000200000001000d00000083c7083b7b5c760cc7436c020000008b43fcffe08b56048b4500803c *10007517c747fc54dc0b088b450089078d77fc83c5048b4500ebdbff450083ef08b80c830c08eb *ce210000002400000083c7143b7b5c761cc7436c05000000c7450458830c08c74320fe000100b8 *b03d1008ffe08b55088b45000fbe0410837d00007e2d8b55004a0fb6c0c747f03cdc0b088947f4 *c747f87cdc0b088d47f08947fc89378955008d77f8b858830c08ebc10fb6c0c747f03cdc0b0889 *47f4c747f87cdc0b088d47f08947fc89378d77f883c50c8b4500eb9a2100000024000000837e04 *007e168b4604488945fcbe00d2110883ed04b858830c08ffe0be00d2110883c5088b4500ebf18d *76002100000024000000c74500e8830c08ff269090900900030000000000110000008d45f83b43 *54730abed4d711088b43fcffe08b7500c7450070840c08b8cc421008ebed900100000024000000 *83c508ff650089f6010000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b8 *b03d1008ffe089f28d4608c747fce0060c0889078d47fc8945fc8b7504895504c7450060840c08 *83ed08b8e8131008ebd30300020000000000110000008b450083c504890424e8ea10f8ff89c6ff *6500901400030000000000110000008d45fc3b4354720883c70c3b7b5c7611c7436c03000000be *e8d711088b43fcffe0837d04007e348b450448c747f85c860c088b55008957fc8b55088917c745 *0800d21108c74504081210088945008d77f883ed04b828101008ebc4bed0e0110883c50c83ef0c *8b4500ebb490c40000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d *1008ffe0c747f87cdc0b088977fc8b451089078b55084a8d47f889451089550c8b750483c50cb8 *5c860c08ebd589f6440000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *54dc0b088b450889078d47fc8945fc8b450c8945f88b760cc7450058850c0883ed0cb84c181008 *ebd2010000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0 *c747f87cdc0b088977fc8b450489078d77f883c5088b4500ebe4900200000024000000c74500d4 *e011088b45048945fc8b760cc74504f0850c0883ed08e9fd9103009009000300020000000e0000 *008d45e83b435473058b43fcffe08b450085c075158b46088945008b7604c745fc30860c0883ed *04eb198975f88945fc8b46088945008b7604c745f4a8850c0883ed0c8b06ebc59090e0d81108a4 *860c081700050000000000110001008d45ec3b4354730abeecd711088b43fcffe08b7500c74500 *cc870c088b06ebf0420000002400000083c50cff650089f603000000240000008b45048945008b *750cc74504e0860c0883ed04e9e08c0300450000002400000083c7083b7b5c7615c7436c020000 *00c74320fe000000b8b03d1008ffe08d4608c747fce0060c0889078b45108945008d47fc8945fc *8b450c8945f88b45048945f4c745041c0910088d47fc89450c897510c74508f0860c0883ed0cb8 *448a0d08ebb989f645000000240000008b4508400faf460489c6c7450010870c08e93abb030089 *f6a4860c080500000024000100c745fce0d811088b450889750889c6c745007c870c0883ed08e9 *4a8a030089f6a4860c080300000024000100c745f4000000008b45088945f08975fc8b46048945 *00c745f8a0870c0883ed10e91366ffff9090901600030000000000110000008d45fc3b4354730a *bef4d711088b43fcffe08b7504c745fc3c890c0883ed048b06ebed908b750cc7450c00d2110883 *c508e9d289030089f604000100020000000e0000008d45fc3b4354720883c70c3b7b5c760cc743 *6c030000008b43fcffe0c747f87cdc0b088b46048947fc8b450089078d47f88945008b760883ed *04b808121008ebd98d760004000100030000000b0000008d45f83b4354720883c70c3b7b5c760c *c7436c030000008b43fcffe0c747f844880c088b45008947fc8b460c89078d47f88945008b4608 *8945fc8b46048945f883ed08b800880c08ebd089f683c7103b7b5c760cc7436c040000008b43f8 *ffe0c747f494880c088b45048947f88b46088947fc8b450c89078d47f489450c8b46048945088b *750483c504b814161008ebcd8d7600e0880c0824880c0800000000430000002500000008000000 *01000000ff6500900800000009000000ff650090b85c890c08ffe090833d5c181208007550c705 *5c18120801000000c74500b4ed0b0883c504c74500a01f0c0883c504c74500d8c80b0883c504c7 *4500281f0c0883c504c7450064050c0883c504c745000cde0b0883c504c7450064de0b0883c504 *83ed04ff6500900b00020000000000110000008d45fc3b4354730abe20d811088b43fcffe08b75 *00c745000c8a0c088b06ebf042000000240000008b45083b46047e0783c50c8b06ffe08b7504eb *f401000000240000008975008b55048b460489450489d6c745fcf0890c0883ed04ff2690900b00 *020000000000110000008d45fc3b4354730abe24d811088b43fcffe08b7500c74500788a0c088b *06ebf042000000240000008b45083b46047e038b750483c50c8b06ffe089f60100000024000000 *8975008b55048b460489450489d6c745fc5c8a0c0883ed04ff2690900b00020000000000110000 *008b7500c74500e88a0c08ff2621000000240000008b45043b46040f9ec00fb6c08944240883c5 *088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760001000000240000008b55048b46 *0489450489d6c74500b48a0c08ff260b00020000000000110000008b7500c74500508b0c08ff26 *21000000240000008b45043b46040f9cc00fb6c08944240883c5088b34852cdc0b088b542408c1 *e2028b450029d0ff60f08d760001000000240000008b55048b460489450489d6c745001c8b0c08 *ff260b00020000000000110000008b7500c74500b88b0c08ff2621000000240000008b45043b46 *040f9dc00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d7600 *01000000240000008b55048b460489450489d6c74500848b0c08ff260b00020000000000110000 *008b7500c74500208c0c08ff2621000000240000008b45043b46040f9fc00fb6c08944240883c5 *088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760001000000240000008b55048b46 *0489450489d6c74500ec8b0c08ff260400010000000000110000008b7500c74500548c0c08ff26 *000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4604f7d8c747fc54dc0b *0889078d77fc83c5048b4500ebe59090900b00020000000000110000008b7500c74500dc8c0c08 *ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040faf4604c747 *fc54dc0b0889078d77fc83c5088b4500ebe39001000000240000008b55048b460489450489d6c7 *4500a48c0c08ff260b00020000000000110000008b7500c74500488d0c08ff2621000000240000 *0083c7083b7b5c760cc7436c020000008b43f8ffe08b45042b4604c747fc54dc0b0889078d77fc *83c5088b4500ebe489f601000000240000008b55048b460489450489d6c74500108d0c08ff260b *00020000000000110000008b7500c74500b48d0c08ff26210000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe08b4504034604c747fc54dc0b0889078d77fc83c5088b4500ebe489 *f601000000240000008b55048b460489450489d6c745007c8d0c08ff260b000200000000001100 *00008b7500c74500048e0c08ff2621000000240000008b45048945008b4604894504e95b040100 *8d760001000000240000008b55048b460489450489d6c74500e88d0c08ff260b00020000000000 *110000008b7500c745006c8e0c08ff2621000000240000008b45043b46040f94c00fb6c0894424 *0883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760001000000240000008b55 *048b460489450489d6c74500388e0c08ff260b00020000000000110000008b7500c74500d48e0c *08ff2621000000240000008b45043b46040f95c00fb6c08944240883c5088b34852cdc0b088b54 *2408c1e2028b450029d0ff60f08d760001000000240000008b55048b460489450489d6c74500a0 *8e0c08ff260b00020000000000110000008b7500c74500608f0c08ff26be04d2110883c5048b45 *00ff60ec89f6befcd1110883c5048b4500ff60f089f6108f0c08008f0c08000000000000000025 *0000008b7504c74504348f0c0883c504ff26908b750483c508ff26448f0c08348f0c0800000000 *01000000250000000b00020000000000110000008b7500c74500d88f0c08ff268b750483c508ff *26be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6908f0c08808f *0c080000000000000000250000008b7504c74504b48f0c0883c504ff2690b48f0c08788f0c0800 *000000010000002500000054d2110830e11108d88f0c0800000200180003008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e83d6e03008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f430e11108be54d2110883ed10b8081210 *08ebc19090901600030000000000110000008b7500c74500a4900c08ff2662000000240000008b *45048945008b45088945048b4604894508e9750701009022000000240000008b55088b46048945 *0889d6c7450068900c08ff2602000000240000008b55048b460489450489d6c7450088900c08ff *260b00020000000000110000008b7500c74500f4900c08ff2621000000240000008b4504894500 *8b4604894504e9ef0801008d760001000000240000008b55048b460489450489d6c74500d8900c *08ff260b00020000000000110000008b7500c7450044910c08ff2621000000240000008b450489 *45008b4604894504e9c70501008d760001000000240000008b55048b460489450489d6c7450028 *910c08ff260400010000000000110000008d45fc3b4354730abe9cd811088b43fcffe08b7500c7 *45008c910c088b06ebf00000000024000000c74500ffffff7f8b46048945fc83ed04e937080100 *9090900400010000000000110000008b750083c504ff260400010000000000110000008b750083 *c504ff2650e11108cc910c080400010000000000110001008b7500c74500f8910c08ff26cc910c *08000000002400010083c7083b7b5c760cc7436c020000008b43f8ffe08b46043dffffff7f750f *be50e1110883c50483ef088b06ebe540c747fc54dc0b0889078d77fc83c5048b4500ebd0909040 *e111083c920c080400010000000000110001008b7500c7450068920c08ff263c920c0800000000 *2400010083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d00000080750fbe40e11108 *83c50483ef088b06ebe548c747fc54dc0b0889078d77fc83c5048b4500ebd090904e6f6e2d6578 *6861757374697665207061747465726e7320696e009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8596b03008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0ac920c0883ed10b84cce *0b08ebbf903a20009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8f16a03008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f02c930c0883ed10b84cce0b08ebbf90c8d8110894930c08 *0900020000000000110001008d45f43b4354730abed8d811088b43fcffe08b45008945fcc74500 *00960c0883ed04b8a0920d08ebe78d760001000100130000008d45f03b435473058b43f8ffe08d *45f8c700d46d1008897004c745f478e111088b46048945f083ed10b82cda0b08ebdb0200000015 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d10 *08897004c747f8dc930c088b46088947fc8d47f88945f48b46048945f083ed10b82cda0b08ebcf *9094930c0802000000150001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe08d45f8c700d46d1008897004c747f814940c088b46048947fc8b460889078d47f88945f4c7 *45f0c8d8110883ed10b82cda0b08ebc98d760094930c08630000002400010083c70c3b7b5c761c *c7436c03000000c74504cc940c08c74320fe000001b8b03d1008ffe0c747f86c940c088b451089 *47fc8b450089078d47f889451089750c83c50cb82cda0b08ebd98d7600c745f800d211088b7504 *83ed08eba59094930c08030000002400010083c70c3b7b5c760cc7436c030000008b43f8ffe083 *7e047c7521c747f87cdc0b08c747fc88e111088b450489078d47f88945fc8b750883ed04eb10c7 *45fc00d211088b750883ed0483ef0cb8cc940c08ebc089f68b46088945008b7604c745fc34950c *0883ed04ff268d760088950c0818950c0894930c08020000002500010094930c08010000002400 *01008975048b7500c74500b4950c08ff26908975fcc745f890e11108c74500c0950c0883ed08e9 *e363ffff8d7600d0950c08d0950c0894930c080100000025000100a4e1110800960c0800000200 *180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8196803008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4a4e11108 *83ed0cb874e80b08ebc60b000300000000001100000083c7083b7b5c7611c7436c02000000bef0 *d811088b43fcffe0c747fcb4960c088b450489078d47fc8943048b750083c508b870331008ebdf *04000100010000000c0000008d45fc3b435473058b43fcffe08b760483ed04b808121008ebf190 *906f70656e42696e61727946696c65009000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8416703008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f0d0960c0883ed10b84cce0b08ebbf90 *68436c6f7365009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e8d56603008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f400d21108c745f044970c0883ed10b84cce0b08ebbf9068466c757368009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8696603008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0b0970c0883ed10b84cce0b08ebbf90f0e1110824d91108f8980c08070700001c98 *0c080000080000000000110003008d45dc3b4354720883c7183b7b5c7611c7436c06000000be24 *d911088b43fcffe08b451089c22b550c7531c747ec14c50c088b45088947f08b45188947f4c747 *f800000000c747fc000000008b451489078d77ec83c51c8b4500ebc3c747ec84ed0b088957f0c7 *47f454dc0b088b450c8947f8c745f41c0910088d47ec8945f08d47f48945ec8b45088945e88b45 *048945e48b45008945e0c745dcf0e111088955fcc745f87c990c0883ed2483ef08b804a30d08e9 *66ffffff8d7600e93fffffff8d760020980c08280e00002400010083c7183b7b5c760cc7436c06 *0000008b43f8ffe08b46043b45047c31c747ec14c50c088b45108947f08b45208947f4c747f800 *000000c747fc000000008b451c89078d77ec83c5248b4500ebc58b451403460489451483c50883 *ef18b83c980c08ebaf9020980c08280e000024000100c745000c990c08ff2690909024d9110888 *990c080400020000000000110001008d45dc3b4354730abe2cd911088b43fcffe08b45008945f8 *c745fc309b0c0883ed08b804c40c08ebe78d7600be0cd2110883c51cff65009001000100130000 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8b4c30c *08ebe28d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f483ed0cb808c30c08ebe28d760042000000240000008b4504897004be0cd2110883 *c50cff65008d760083c7183b7b5c760cc7436c060000008b43f8ffe08b45103b450c7510be0cd2 *110883c51c83ef188b4500ebe6c747ecdc990c088b45188947f0c747f8109a0c088b45188947fc *8b45108945008b45088945fc8b45048945088b450c894504c7450c18da11088d47ec8945f88d47 *f88945f4c74510449a0c0883ed0cb83c980c08eb9089f6589a0c08c8990c0888990c08a6010000 *2500010088990c0802000000240001008b46148945f48b46048945f88b46108945fc8b460c8945 *008b7608c745f0f09a0c0883ed10ff269088990c0801000000240001008b46048b500489450089 *d6c745fcfc9a0c0883ed04ff26905ce21108d0e11108909b0c0800000000489b0c080000010000 *000000110003008d45ec3b4354730abe34d911088b43fcffe0be01000000c745fc049c0c0883ed *04b880421008ebe8e9d3ffffff8d7600489b0c08000000002400030083c7083b7b5c7615c7436c *02000000c74320fe000000b8b03d1008ffe0c747fcd4f10c088937c7450024da11088d47fc8945 *fcc745f820da1108c745f4d0e11108c745f040e2110883ed10b81ca70d08ebc989f6489b0c0800 *0000002400030083c7183b7b5c7615c7436c06000000c74320fe000000b8b03d1008ffe0c747ec *14c50c088977f0c747f414da1108c747f800000000c747fc00000000c707010000008d77ecc745 *00a49b0c08b89c431008ebc89017000500000000001100000083c7143b7b5c7611c7436c050000 *00be3cd911088b43fcffe0c747f07c9e0c088b45088947f48b450c8947f88b45008947fc8b4504 *89078d77f083c510b8fc301008ebd3e9cf0100008d760003000000120000008d45ec3b43547305 *8b43f8ffe08d45f8c700d46d10088970048b460c8945f48b46088945f08b46048945ec83ed14b8 *b0aa0d08ebd68d760083000000240000008b06668378fe09754683c7183b7b5c760cc7436c0600 *00008b43f8ffe0c747ecb89c0c088b46048947f08b45088947f48b45048947f8c747fc9ce90b08 *8d47ec89078d77fc83c510b8c0351008ebcc89750c83c50cb874e80b08ebbf0300000024000000 *8b750cc74500f89c0c08ff2604000200040000000b0000008d45f43b435473058b43fcffe08b46 *0c8945fc8b46108945f88b46088943048b7604c745f45c9d0c0883ed0cb87c541008ebd8900000 *000024000000be0cd2110883c504ff650090c4010000240000008973048b7504c74510b09d0c08 *83c510e9a3b603008d7600040000002400000083c7203b7b5c7615c7436c08000000c74320fe00 *0000b8b03d1008ffe0c747e4749d0c088b45048947e88977ec8b450c8947f08b45088947f4c747 *f88c6b10088b45108947fc89378d47e48943048d77f8c74500c49d0c08b870331008ebbc900300 *0000240000008b46048945008b7604c745fce49d0c0883ed04e9c8b40300a89c0c080000000000 *00000000000100040000000b0000008d45ec3b435473058b43fcffe08b46108945f48b460c8945 *f88b46088945fc8b7604c745f04c9e0c0883ed108b06ebdba8e211085ce21108e0e11108049f0c *0800000000ac9e0c080000010000000000110007008d45ec3b4354730abe40d911088b43fcffe0 *c745f818da1108c745f448e21108c745fc509f0c0883ed0cb894b10d08ebdf8d7600e9c7ffffff *8d7600b09e0c0800000000240003008b46088945008b46048945fcc745f820da1108c745f4e0e1 *1108c745f048e2110883ed10e9db0701008d7600b09e0c080000000024000300c74500189f0c08 *ff2690909024d91108c0e211085c9f0c080400020000000000110003008d45f83b4354730abe48 *d911088b43fcffe08b45008945f8c745fcfc9f0c0883ed08b88cc30c08ebe78d76008b750483c5 *08ff65008d7600609f0c08010000002400010083c504e96c1301008b45048945fcc74500b89f0c *0883ed04e9970501008d7600c09f0c08c09f0c08c09f0c08c09f0c08c09f0c08a09f0c085c9f0c *08010000002500030080e2110864e21108c8e21108fc9f0c0817000500000000001100070083c7 *083b7b5c7611c7436c02000000be50d911088b43fcffe0c747fc64a30c088b450c89078d47fc89 *450cb868ab0d08ebe589f6be8ce2110883c50cff650090be8ce2110883c50cff650090be70e211 *0883c50cff65009001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d100889 *70048b46048945f483ed0cb804c40c08ebe28d7600e9f70100008d760001000100130000008d45 *f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb808c30c08ebe2 *8d7600000000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec14c50c088b *46048947f0c747f418da11088b460c8947f88b46108947fc8b461489078d77ec83c504b8d46d10 *08ebcc89f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *7604c745f4e8a00c0883ed0c8b06ebe189f6830000002400000083c70c3b7b5c7615c7436c0300 *0000c74320fe000000b8b03d1008ffe0c747f838a10c088977fc8b55048d47f88942048b750883 *c50cb81c091008ebde8d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8b4a00c08 *8b45208947fc8b550c8b450889450c8955088b4510894504c7451014da11088b45148945008d47 *f88945fcc745146ca10c0883ed04b804b70d08ebbb908b45188b55048950048b751c83c520e904 *67030004a20c08aca10c0804a00c08c80100002500010004a00c0803000000240001008975f08b *46148945f48b46108945f88b460c8945fc8b46048945008b7608c745ec2ca20c0883ed14ff2689 *f604a00c0802000000240001008b46048b500489450089d6c745fc38a20c0883ed04ff2690a4a0 *0c080000000004a00c0800000100030000000b0001008d45d83b435473058b43fcffe08b460889 *45f88b46048945fc8b760cc745f470a20c0883ed0c8b06ebe189f683c7283b7b5c760cc7436c0a *0000008b43f8ffe0c747dc8c6b10088b45048947e08b45088947e4c747e878a00c088b45088947 *ecc747f4a0a20c088b45088947f88d47dc8947fc8d47e889078d77f483c50c8b4500ebbb908b75 *0483c504e9d96e030090cca20c0824a30c0824a30c0864a00c0858a00c084ca00c08fc9f0c0802 *00000025000700fc9f0c0804000100010000000c0007008d45f43b435473058b43fcffe08b4500 *8945f48b46048945fcc745f854a30c0883ed0cb88cc30c08ebe1909050d9110890a30c08160004 *0000000000110001008d45fc3b4354730abe58d911088b43fcffe08b7504c745fc4ca40c0883ed *048b06ebed9083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b460889078d *47fc8945088b4504894500897504b818a00c08ebdc89f683c7083b7b5c760cc7436c020000008b *43f8ffe0c747fcd8e90b088b460c89078d47fc8945088b4504894500897504b818a00c08ebdc89 *f600a40c08c8a30c0890a30c08430000002500010030e2110800e2110820e2110810e21108d0e2 *110864de1108b8e111084ca40c08160003000000000011007f0083c7303b7b5c7611c7436c0c00 *0000be60d911088b43fcffe0c747d434a50c088b45048947d8c747e08ca70c088b45048947e48b *45088947e8c747ec88aa0c088b45008947f08b45048947f48d47d48947f88b45088947fc8d47e0 *89078d47ec8945088b4500894504be08d11108b814161008eba28d7600be04d2110883c504ff25 *c06d100889f6befcd1110883c504ff25c46d100889f600a50c0800a50c08f0a40c0800a50c0800 *000000000000002500000001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b7604c745f42ca50c0883ed0c8b06ebe189f68b750483c508ff65008d7600210000 *00240000008b45040b460489c683c508ff650089f6be64de1108c7450074a50c08ff2689f684a5 *0c0860a50c0860a40c08210000002500010060a40c0803000100010000000c0001008d45fc3b43 *5473058b43fcffe08b7604c745fca8a50c0883ed048b06ebed89f6000000002400000083c7083b *7b5c760ec7436c02000000b8f0371008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008eb *e801000000240000008b46048945008b7504c74504e0a50c08eb9289f6be30e21108c7450014a6 *0c08ff2689f6000000002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc *84ed0b0889378d77fc83c504b8d46d1008ebe801000000240000008b46048945008b7504c74504 *40a60c08e92fffffff8d7600be00e21108c7450074a60c08ff2689f6000000002400000083c708 *3b7b5c760ec7436c02000000b8f0371008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008 *ebe801000000240000008b46048945008b7504c74504a4a60c08e9cbfeffff8d7600be10e21108 *c74500d8a60c08ff2689f6000000002400000083c7083b7b5c760ec7436c02000000b8f0371008 *ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe801000000240000008b46048945008b *7504c7450408a70c08e967feffff8d7600be20e21108c745003ca70c08ff2689f654a70c08f0a6 *0c088ca60c0828a60c084ca40c080100000025000f004ca40c080200000015002f008d45f03b43 *54720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fcb8 *a50c088b460889078d47fc8945f48b7604c745f080a70c0883ed108b06ebcf90eb5689f6000000 *002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed *0b0889378d77fc83c5048b4500ebea8d7600d8a70c080000000000000000000001000000020010 *0000008d45f03b435473058b43fcffe0c745f8b60100008b46088945f48b46048945f0c745fce4 *a70c0883ed10b894240d08ebda8d7600000000002400000083c7083b7b5c760cc7436c02000000 *8b43f8ffe0c747fc54dc0b088b460489078d77fc83c504b8d46d1008ebe58d7600010001001300 *00008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f46ca80c0883ed *0c8b06ebe189f6010000002400000083c504e9943fffff01000000240000008b46048945fcc745 *00d8a80c0883ed04e90f7c00008d760004000200010000000c0000008d45f83b435473058b43fc *ffe08b7604c745fce8a80c0883ed048b06ebed89f65ca40c0805000000120001008d45dc3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b460c8945f48b46108945f08b46088945ec8b46 *048945e8c745e4e0d011088b46148945e0bed0e2110883ed24b8fc231008ebbe8d76005ca40c08 *040000002400010083c72c3b7b5c7615c7436c0b000000c74320fe000000b8b03d1008ffe0c747 *d8a4a80c088977dcc747e40ca90c088d47d88947e8c747ec38a90c088b45108947f08b450c8947 *f48b45088947f88b45048947fc8d47d889078d47e48943048d77ec83c514b870331008ebb0905c *a40c08250000002400050083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f830a80c088b *45048947fc8b460489078d47f8894500c745fcb8e11108c745f8cce11108c7450494a90c0883ed *08b808880d08ebc7905ca40c0805000000240005008b55048b460489450489d6c745000caa0c08 *ff265ca40c0804000200050000000b0005008d45e43b435473058b43fcffe08b46148945f08b46 *108945f48b460c8945f88b46088945fc8b55008b460489450089d6c745ec64aa0c0883ed148b06 *ebcd909060d91108b8e11108c8aa0c080b000300000000001100030083c7143b7b5c7611c7436c *05000000be68d911088b43fcffe0c747f03cac0c088b45008947f4c747f870ac0c088b45008947 *fc8b450489078d47f08943048d77f883c508b870331008ebcc90ccaa0c08010000002400010083 *c7203b7b5c760cc7436c080000008b43f8ffe0c747e494b90b088b45048947e8c747ecece80b08 *8b46048947f08b46088947f4c747f8b8e111088b46108947fc8d47e489078d77ec83c508b8d46d *1008ebbf90ccaa0c0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46048945f48b7608c745f038ab0c0883ed108b06ebdbccaa0c0801000000240001008b *06668378fe09754083c7143b7b5c760cc7436c050000008b43f8ffe0c747f098ab0c088b450489 *47f48b46048947f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd289750483c504 *b874e80b08ebc589f6ccaa0c0804000200010000000c0001008d45fc3b435473058b43fcffe08b *55008b460489450089d6c745fcd4ab0c0883ed048b06ebe589f6c8aa0c0802000000150001008d *45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f4fcd111088b46088945f08b46 *048945ec83ed14b878a40c08ebd59090b8b0ac0c08ffe090833d60181208000f85a0000000c705 *6018120801000000c74500b4ed0b0883c504c7450078df0b0883c504c74500a01f0c0883c504c7 *450064050c0883c504c745000c1e0c0883c504c74500fce00b0883c504c74500cce70b0883c504 *c74500d8c80b0883c504c745000cde0b0883c504c74500984a0c0883c504c7450004a10b0883c5 *04c7450094b40b0883c504c74500d8480c0883c504c74500ccbe0b0883c504c7450050be0b0883 *c50483ed04ff65009070d9110864ad0c080400020000000000110001008d45f43b4354730abe80 *d911088b43fcffe08b7500c7450078af0c088b06ebf0be70d9110883c50cff6500904200000024 *00000083c7243b7b5c7615c7436c09000000c74320fe000000b8b03d1008ffe0c747e014c50c08 *8977e4c747e818da1108c747ec00000000c747f0000000008b45088947f4c747f8e4bb0b088b45 *048947fc8d47e089078d77f883c50c8b4500ebbc9042000000240000008b46048945088b7604c7 *4500acad0c08e9579403008d76008b4504894500c7450414ae0c08e94614000089f60100000024 *00000083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec14c50c088b45048947f0c747f4 *18da1108c747f800000000c747fc000000008b460489078d77ec83c508b8d46d1008ebca020000 *00150000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945ec8b4608 *8945f4c745f048ae0c0883ed14b884c20c08ebd589f683c7183b7b5c760cc7436c060000008b43 *f8ffe08b550c8b4608894204c747ec98ae0c088b45048947f08b46048947f4c747f8e4bb0b088b *45088947fc8d47ec89078d77f883c5108b4500ebc58d7600d0ae0c082cae0c0800000000030000 *00250000008b45088b50048b45048b400489450089750489d6c745fc34af0c0883ed04ff2634af *0c0834af0c0898ad0c0864ad0c08020000002500010064ad0c0800000000240001008b46148945 *fc8b46188945008b7610c745f86caf0c0883ed08ff269068507574537472000000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *854e03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f094 *af0c0883ed10b84cce0b08ebbf9024d9110858d9110810e3110800b00c080a0003000000000011 *0007008d45fc3b4354720883c70c3b7b5c7611c7436c03000000be98d911088b43fcffe00fbe45 *04c747f81cb30c088b55048957fc89078d47f8894504c745fc10e3110883ed04b8a4a30c08ebd4 *90000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c7 *47fc84ed0b0889378d77fc83c5048b4500ebea8d76000300020000000200100000008b56088b46 *04c7450070b00c08c74424080100000089442404891424e88be3f7ff89c6ff650089f6eb2e89f6 *0000000024000000be0cd2110883c504ff650090d8b00c08000000000000000000000100000001 *000d0000008d45fc3b435473058b43fcffe08b7604c745fce4b00c0883ed04b870571008ebea8d *76004200000024000000be0cd2110883c50cff65009008b00c0883000000240001008b45048945 *008975fcc745f810e31108c745f4c8e11108c7450434b10c0883ed0ce98ad7000089f6c745f800 *0000008b750cc745004cb10c08c745fc5873100883ed0ce9945e0300c745f8010000008b750cc7 *45004cb10c08c745fc5873100883ed0ce9745e030094b10c0874b10c0808b00c08030000002500 *010008b00c08230000002400010083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0b0b0 *0c088b45048947f48b46048947f8c747fc08b10c088b460489078d47fc8945048b450c8945fc8d *47f089450cc74500c8b10c0883ed04b8b4c30c08ebbc89f608b00c0863000000240001008d4e08 *0fb645048846088b450c8945fc894d04897508c74500d4b10c0883ed04e9ab1000008d7600be01 *000000c7450038b20c08e95b9003008d760083c7083b7b5c760cc7436c020000008b43f8ffe0c7 *47fc3cdc0b088b45088907c7450804d211088b450c8945048d47fc89450c83c504b8e8d50d08eb *d58d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc3cdc0b088b45088907c74508 *fcd111088b450c8945048d47fc89450c83c504b8e8d50d08ebd58d7600b4b20c0874b20c0860b2 *0c0800b00c08630000002500050000b00c080400020000000200100005008d45e83b435473058b *43fcffe08b45008945f08b46088945f88b46048945fcc745f40cb30c0883ed10b8dcc30c08ebdb *40e311089ce2110830e3110868e311084cb30c08150003000000000011000f008d45fc3b435472 *0883c70c3b7b5c7611c7436c03000000bea0d911088b43fcffe08b550885d27510be70e3110883 *c50c83ef0c8b4500ebe785d2782cc747f844b40c088b45048947fc89178d47f88945088b450089 *4504c7450030e31108be9ce2110883ed04eb22c747f854dc0b088957fc8d47f8894508c7450430 *e31108be58e3110883ed0483ef04b8e41a1008eb8e8d760058b30c0842000000240001008b4504 *894500c74504000000008b460c8945fc8b46148945f88b46208945f483ed0ce9c92401009058b3 *0c0804000200010001000f0001008d45ec3b435473058b43fcffe08b46048945fc8b55008b4608 *89450089d6c745f80cb40c0883ed088b06ebdf40e3110858d91108e0e2110850e3110828b50c08 *8400000070b40c08000004000000000011000f0083c7103b7b5c7611c7436c04000000bea8d911 *088b43fcffe08b550885d27510be74e3110883c51083ef108b4500ebe785d2782fc747f478b50c *088b45048947f88b450c8947fc89178d47f489450c8b4500894508c74504e0e21108be58d91108 *eb25c747f454dc0b088957f88d47f489450cc74508e0e211088b4500894504be58e3110883ef08 *b8e41a1008eb8890e96bffffff8d76007cb40c0883000000240001008b55088b450c8945088b45 *0489450c8955048b460c8945008b46148945fc8b46208945f883ed08e9981701007cb40c080400 *0200020001000b0001008d45ec3b435473058b43fcffe08b46088945f88b46048945fc8b55008b *460c89450089d6c745f43cb50c0883ed0c8b06ebd990908ce2110878e2110820e3110888e31108 *acb50c08040002000000000011000f008d45f43b4354720883c7143b7b5c7611c7436c05000000 *beb0d911088b43fcffe0c747f02cb60c088b45008947f4c747fc9cb70c088d47f089078b75008d *47fc894500c745fc54b80c0883ed048b06ebce8d7600b8b50c0801000100130001008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb814e10d08ebe28d7600 *83c50ce930f4000083c50ce928f4000083c50ce9f0f3000083c50ce9e8f3000000000000240000 *0083c7243b7b5c760cc7436c090000008b43f8ffe0c747e02cc50c08c747e41cda11088b460889 *47e88b460c8947ec8b46108947f08b46148947f48b46188947f88b461c8947fc8b462089078d77 *e083c504b8d46d1008ebba01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b7604c745f480b60c0883ed0c8b06ebe189f6010000002400000083c7183b7b5c76 *15c7436c06000000c74320fe000000b8b03d1008ffe0c747ece0b60c088b45048947f0c747f8e4 *bb0b088d47ec8947fc89378d77f883c5088b4500ebd78b7504c7450414b70c08e9b55103009058 *b70c0870b60c0868b60c0858b70c0860b60c0858b60c08acb50c080200000025000300acb50c08 *04000200010000000c0003008d45f43b435473058b43fcffe08b45008945f48b46048945fcc745 *f88cb70c0883ed0cb88cc30c08ebe189f683c7083b7b5c760cc7436c020000008b43f8ffe0c747 *fcd8e90b088b460889078d47fc8945008975fcc745f820e3110883ed08b880ae0d08ebd889f683 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b460889078d47fc8945008975 *fcc745f820e3110883ed08b880ae0d08ebd889f604b80c08c8b70c08b4b50c0801000000250001 *0098d91108b8d9110854b80c080b00030000000000110003008d45f43b4354730abeb8d911088b *43fcffe08b7504c745fc00b90c0883ed048b06ebed90be0cd2110883c50cff65009058b80c0802 *0000002400010083c504e9bcffffff54b80c0802000000240003008b46048945fc8b45048945f8 *c74500a8b80c0883ed08e945f7ffff908b46088945088b7604c74500bcb80c08ff2689f6d8b80c *0890b80c0854b80c084200000025000300c8d9110800b90c081600040000000000110001008d45 *f43b4354730abec0d911088b43fcffe08b7504c745fc94b90c0883ed048b06ebed9058d9110824 *d9110800e31108c0d91108bcb90c088603000038b90c08000007000000000011000f008d45e83b *4354730abec8d911088b43fcffe08b45148945f8be0000000083ed08b808bc0c08ebe99000b90c *0843000000240001008b46148945088b460c8945008b46048945fc8b45048945f88b4610894504 *83ed08e9a6ffffff89f6e99fffffff8d76003cb90c0804000200010002000b0001008d45ec3b43 *5473058b43fcffe0c745fcfcd11108c745f804d211088b46088945f48b460c8945f08b46048945 *ec83ed14b8dcc20d08ebd49044b90c08481f0000240001008b450489452089751c8b450c894518 *83c518e9e5feffff903cb90c0804000200010002000b0001008d45ec3b435473058b43fcffe0c7 *45fc04d21108c745f8fcd111088b46088945f48b460c8945f08b46048945ec83ed14b8dcc20d08 *ebd4900000000024000000be0cd2110883c504ff65009083c7103b7b5c760cc7436c040000008b *43f8ffe0c747f440ba0c088b45088947f88b45188947fc8b451489078d47f48945148b45048945 *10c7450c00e31108c7451880ba0c0883c50cb8a4a30c08ebc23cb90c0804000200010002000b00 *01008d45ec3b435473058b43fcffe0c745fcfcd11108c745f804d211088b460c8945f48b460889 *45f08b46048945ec83ed14b8dcc20d08ebd49044b90c08c6060000240001008b45108945188975 *148b450489451083c510e9cdfdffff9038b90c088606000024000f0083c7103b7b5c760cc7436c *040000008b43f8ffe00fb64e048b55088b4518884c1008837e040a753d8b551842c747f4ecba0c *088b45088947f88b45148947fc89178d47f48945fc8b45048945f8c745f400e31108c7450030bb *0c0883ed0cb8a4a30c08ebad8b5518428b45108945fc89d683ed0483ef10b808bc0c08eb9489f6 *8b46088945108b7604c7450054bb0c08ff2689f6d4bb0c088cba0c0838b90c088607000025000f *0038b90c088607000024000f0083c7103b7b5c761cc7436c04000000c7450408bc0c08c74320ff *000001b8b03d1008ffe03b7518741789751c8b7500c74504fcbb0c0883c50483ef108b06ebe2c7 *47f4d4b90c088b450c8947f88977fc8b451889078d47f48945f88b45088945f4c745f000e31108 *c745fc18ba0c0883ed10b8a4a30c08eba9909090d8d9110884bc0c081600040000000000110001 *008d45f43b4354730abed0d911088b43fcffe08b7504c745fc18bd0c0883ed048b06ebed9058d9 *110824d9110800e31108d0d9110840bd0c0886030000bcbc0c08000007000000000011000f008d *45e83b4354730abed8d911088b43fcffe08b45148945f8be0000000083ed08b8c0be0c08ebe990 *84bc0c0843000000240001008b46148945088b460c8945008b46048945fc8b45048945f88b4610 *89450483ed08e9a6ffffff89f6e99fffffff8d7600c0bc0c0804000200010002000b0001008d45 *ec3b435473058b43fcffe0c745fcfcd11108c745f804d211088b46088945f48b460c8945f08b46 *048945ec83ed14b8dcc20d08ebd490c8bc0c08481f0000240001008b450489452089751c8b450c *89451883c518e9e5feffff90c0bc0c0804000200010002000b0001008d45ec3b435473058b43fc *ffe0c745fc04d21108c745f8fcd111088b46088945f48b460c8945f08b46048945ec83ed14b8dc *c20d08ebd4900000000024000000be0cd2110883c504ff65009083c7103b7b5c760cc7436c0400 *00008b43f8ffe0c747f4c4bd0c088b45088947f88b45188947fc8b451489078d47f48945148b45 *04894510c7450c00e31108c7451804be0c0883c50cb8a4a30c08ebc2bcbc0c088606000024000f *000fb64e048b55088b4518884c10088b5518428b45108945fc89d683ed04eb35908b4608894510 *8b7604c745006cbe0c08ff2689f68cbe0c0810be0c08bcbc0c088607000025000f00bcbc0c0886 *07000024000f0083c7103b7b5c761cc7436c04000000c74504c0be0c08c74320ff000001b8b03d *1008ffe03b7518741789751c8b7500c74504b4be0c0883c50483ef108b06ebe2c747f458bd0c08 *8b450c8947f88977fc8b451889078d47f48945f88b45088945f4c745f000e31108c745fc9cbd0c *0883ed10b8a4a30c08eba990909004000200000000001100000083c7083b7b5c7611c7436c0200 *0000bee0d911088b43fcffe0c747fc9ce90b088b450089078d77fc83c504b8c0351008ebe59090 *0b00020000000000110000008b7500c7450038c00c08ff26be04d2110883c5048b4500ff60ec89 *f6befcd1110883c5048b4500ff60f089f6a4bf0c0894bf0c080000000000000000250000008b75 *04c74504c8bf0c0883c504ff2690befcd1110883c5088b4500ff60f089f68b45048945008b4604 *894504e92bd100008d7600e8bf0c08d8bf0c080000000001000000250000008b55048b46048945 *0489d6c7450010c00c08ff2610c00c08c8bf0c080000000001000000250000000b000200000000 *00110000008b7500c7450040c10c08ff26befcd1110883c5048b4500ff60f089f6be04d2110883 *c5048b4500ff60ec89f660c00c0850c00c080000000000000000250000008b7504c7450484c00c *0883c504ff2690be04d2110883c5088b4500ff60ec89f621000000240000008b45043b46047510 *befcd1110883c5088b45008b40f0ffe0be04d2110883c5088b45008b40ecebee01000000240000 *008b55048b460489450489d6c74500acc00c08ff268b55048b460489450489d6c74500dcc00c08 *ff26f0c00c0894c00c080000000001000000250000008b55048b460489450489d6c7450018c10c *08ff2618c10c0884c00c0800000000010000002500000004000200000000001100000083c7143b *7b5c7611c7436c05000000beecd911088b43fcffe0c747f094c10c088b45008947f4c747fc9ce9 *0b088d47f089078d77fc83c504b8c0351008ebd89001000100130000008d45f43b435473058b43 *f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e8ee0d08ebe29090900400020000 *000000110000008b750083c504ff65009090900b00030000000000110000008d45fc3b4354730a *bef4d911088b43fcffe08b7500c7450014c20c0883ed04b81c091008ebea89f601000000240000 *008b450489750489c6e9c75103009090900b000300000000001100000083c7083b7b5c7611c743 *6c02000000bef8d911088b43fcffe0c747fc70c20c088b450489078d47fc894504b8e4c10c08eb *e589f604000100010000000c0000008b7604e9244503000400010000000000110000008d45fc3b *4354730abefcd911088b43fcffe08b7500c74500f0c20c088b06ebf0210000002400000083c708 *3b7b5c761cc7436c02000000c74500acc20c08c74320ff000000b8b03d1008ffe0c747fc54dc0b *088b450489078d77fc83c5088b4500ebe79000000000240000008b461489450083ed04ebb19004 *00010000000000110000008d45fc3b4354730abe00da11088b43fcffe08b7500c7450074c30c08 *8b06ebf0210000002400000083c7083b7b5c761cc7436c02000000c7450030c30c08c74320ff00 *0000b8b03d1008ffe0c747fc54dc0b088b450489078d77fc83c5088b4500ebe790000000002400 *00008b462089450083ed04ebb1900400010000000000110000008b7500c74500a0c30c08ff2600 *000000240000008b760483c504ff260400010000000000110000008b7500c74500c8c30c08ff26 *00000000240000008b760c83c504ff260400010000000000110000008b7500c74500f0c30c08ff *2600000000240000008b761083c504ff260400010000000000110000008d45fc3b4354730abe10 *da11088b43fcffe08b7500c7450070c40c088b06ebf0010000002400000083c7083b7b5c761cc7 *436c02000000c745002cc40c08c74320ff000000b8b03d1008ffe0c747fcd4f10c088b45048907 *8d77fc83c5088b4500ebe79000000000240000008b461489450083ed04ebb19004000100000000 *00110000008b7500e90c430300000000000a000100ff6500900100000002000800ff6500900100 *000009000800ff650090000000000a0000008b4500ff60f09090000000000a0001008b4500ff60 *ec9090000000000a0003008b4500ff60e49090000000000a0000008b4500ff60f0909000000000 *0a0001008b4500ff60ec89f614da110818da11080200030001000000ff65009002000300090000 *00ff6500900700010001000000ff6500900700010009000000ff65009004000100000000001100 *00008d45f83b4354730abe38da11088b43fcffe08b7500c7450070c50c088b06ebf00000000024 *000000c7450000d211088b46048945fcc745f80000000083ed08e9443000001600030000000000 *110000008b7500c74500c8c50c08ff2622000000240000008b45048945008b4604894504e91330 *00008d760002000000240000008b55048b460489450489d6c74500acc50c08ff26040001000000 *0000110000008b7500c74500fcc50c08ff26000000002400000083c7083b7b5c760cc7436c0200 *00008b43f8ffe0c747fcb8050c088b460489078d77fc83c5048b45008b40f0ebe4909094e11108 *2cc60c080b00020000000000110001008b7500c7450070c70c08ff2600000200170000008d45f8 *3b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d10088970048b46 *0499f77e08c747fc84ed0b0889178d77fc83ed08b8d46d1008ebd58d760000000200170000008d *45f83b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004 *8b460499f77e08c747fc84ed0b0889078d77fc83ed08b8d46d1008ebd58d76002cc60c08210000 *002400010083c7243b7b5c760cc7436c090000008b43f8ffe08b560485d27512be94e1110883c5 *0483ef24b89c071008ebe5c747e054c60c088b45048947e48957e8c747eca4c60c088b45048947 *f08957f4c747f8e4bb0b088d47ec8947fc8d47e089078d77f883c5088b4500eba889f62cc60c08 *01000000240001008b55048b460489450489d6c74500f8c60c08ff2694e1110884c70c080b0002 *0000000000110001008b7500c74500d0c70c08ff2684c70c0821000000240001008b4504894500 *8b4604894504e9bb3001008d760084c70c0801000000240001008b55048b460489450489d6c745 *00b0c70c08ff2694e11108e4c70c080b00020000000000110001008b7500c7450068c80c08ff26 *e4c70c08210000002400010083c7083b7b5c760cc7436c020000008b43f8ffe08b560485d27512 *be94e1110883c50483ef08b89c071008ebe58b450489d199f7f9c747fc84ed0b0889078d77fc83 *c5088b4500ebc98d7600e4c70c0801000000240001008b55048b460489450489d6c7450010c80c *08ff2694e111087cc80c080b00020000000000110001008d45fc3b4354730abe6cda11088b43fc *ffe08b7500c745002cc90c088b06ebf0000000002400000083c7083b7b5c760ec7436c02000000 *b8f0371008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea89f67cc80c08210000002400 *01008b460485c0750fbe94e1110883c504b89c071008ffe08945008b45048945fcc74504b8c80c *0883ed04b88c910d08ebe47cc80c0801000000240001008b55048b460489450489d6c74500f0c8 *0c08ff2694e1110840c90c080b00020000000000110001008d45fc3b4354730abe74da11088b43 *fcffe08b7500c74500f0c90c088b06ebf0000000002400000083c7083b7b5c760ec7436c020000 *00b8f0371008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea89f640c90c082100000024 *0001008b460485c0750fbe94e1110883c504b89c071008ffe08945008b45048945fcc745047cc9 *0c0883ed04b8d8910d08ebe440c90c0801000000240001008b55048b460489450489d6c74500b4 *c90c08ff2694e1110804ca0c080b00020000000000110001008b7500c7450088ca0c08ff2604ca *0c08210000002400010083c7083b7b5c760cc7436c020000008b43f8ffe08b560485d27512be94 *e1110883c50483ef08b89c071008ebe58b450489d199f7f9c747fc84ed0b0889178d77fc83c508 *8b4500ebc98d760004ca0c0801000000240001008b55048b460489450489d6c7450030ca0c08ff *260b00020000000000110000008b7500c74500f0ca0c08ff2621000000240000008b45043b4604 *0f94c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760001 *000000240000008b55048b460489450489d6c74500bcca0c08ff260b0002000000000011000000 *8b7500c7450054cb0c08ff2621000000240000008b45043b46047510befcd1110883c5088b4500 *8b40f0ffe0be04d2110883c5088b45008b40ecebee01000000240000008b55048b460489450489 *d6c7450024cb0c08ff26d8dc11089cda110868cb0c0800000200180003008d45f43b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8ad3203008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f49cda110883ed0cb824fc0c08ebc6170004 *0000000000110000008d45fc3b4354730abeb0da11088b43fcffe08b7508c745fcf4cc0c0883ed *048b06ebed908b750883c510e9913b0300908b750883c510e9853b03009004000000120000008d *45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46108945f48b460c8945f08b4608 *8945ec8b46048945e883ed18b8dccb0c08ebd09083c7143b7b5c760cc7436c050000008b43f8ff *e0c747f020cc0c088b45048947f48b45088947f88b450c8947fc8b460889078b460489450c8b45 *108945088d47f08945108b750483c504b8e41a1008ebc18d76005ccc0c080ccc0c080000000004 *000000250000008b460889450c8b55108b460489451089d6c74500c4cc0c08ff2689f6c4cc0c08 *00cc0c080000000084000000250000000b00020000000000110000008d45fc3b4354730abeb4da *11088b43fcffe08b7504c745fcc8cd0c0883ed048b06ebed90be00d2110883c50c8b4500ff60f0 *89f602000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460889 *45f48b46048945f083ed10b800cd0c08ebdc9083c7183b7b5c760cc7436c060000008b43f8ffe0 *c747ec3ccd0c088b46048947f08b46088947f4c747f87cdc0b088b45048947fc8d47ec89078d77 *f883c50c8b45008b40ecebcb906ccd0c0824cd0c080000000042000000250000000b0002000000 *0000110000008d45fc3b4354730abeb8da11088b43fcffe08b7504c745fc2cce0c0883ed048b06 *ebed908b750483c508e999390300908b46088945088b460489450483c504e9bcffffff04ce0c08 *f8cd0c080000000042000000250000000900020000000000110000008b450085c0750a8b750483 *c5088b06ffe08b7504894504c7450090ce0c08ebedbe00d2110883c5088b4500ff60f089f68b45 *04488b5608895504894500e9beffffff89f668ce0c0858ce0c0800000000210000002500000054 *d211084ce4110890ce0c0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8852f03008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f44ce41108be54d2110883ed10b808121008ebc190909054d211085ce4 *110800cf0c0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8152f03008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f45ce41108be54d2110883ed10b808121008ebc190909054d211086ce4110870cf0c *0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8a52e03008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f46ce41108be54d2110883ed10b808121008ebc190909054d211087ce41108e0cf0c0800000200 *180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8352e03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f47ce41108 *be54d2110883ed10b808121008ebc19090900900020000000000110000008b450085c07510be00 *d2110883c5088b45008b40f0ffe08b7504894504c7450028d10c088b06ebedbe00d2110883c508 *8b4500ff60f089f601000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *70048b56084a8b46048945f48955f083ed10b85cd00c08ebdb83c7183b7b5c760cc7436c060000 *008b43f8ffe0c747ec9cd00c088b46088947f08b45048947f4c747f87cdc0b088b46048947fc8d *47ec89078d77f883c5088b45008b40ecebcb90ccd00c0884d00c08000000002100000025000000 *16000300000000001100000083c7183b7b5c7611c7436c06000000be04db11088b43fcffe0c747 *ece4bb0b088b45008947f08b45048947f4c747f87cdc0b088d47ec8947fc8b450889078d77f883 *c50c8b45008b40ecebcb0b00020000000000110000008d45f03b4354730abe08db11088b43fcff *e08b7500c7450024d40c088b06ebf0c40100002400000083c7183b7b5c7615c7436c06000000c7 *4320ff000001b8b03d1008ffe0c747ecccdc0c088b45008947f08977f4c747f8ccdc0c088b4508 *8947fc8b451489078d47ec8945148d47f889451083c510b88cd10c08ebc68d7600620000002400 *000089750c8b7508c745fcb4d10c0883ed04e95b7303008d760083c7083b7b5c760cc7436c0200 *00008b43f8ffe08b450489c12b4e0433460489ca33550485c27817c747fcb8050c08890f8d77fc *83c5088b45008b40f0ebd38b46048945008b7504c745fc14d20c0883ed0483ef08b884451008eb *b6420000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c7 *47f8ccdc0c088b45008947fc89378b450889450c8d47f889450883c508b88cd10c08ebd989f689 *75008b7504c745fc90d20c0883ed04e99b7203008d7600d4d20c082cd20c080000000021000000 *250000008b55048b460489450489d6c7450000d30c08ff26010000002400000083c70c3b7b5c76 *15c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378b45 *088945048d47f889450883c504b88cd10c08ebd989f68b7604c745081cd30c0883c508e9127203 *0089f6000000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ff *e0c747f8ccdc0c088b45008947fc89378d77f883c5088b45008b40ecebe189f68b460489430c8b *46088943088b45048943048b7508c7450c7cd30c0883c50ce9d0740300b8d30c0860d30c080000 *000043000000250000008b46048945fc8b46088945008b450489750489c6c745f8f0d30c0883ed *08ff26f0d30c0800d30c080000000001000000250000000400010000000000110000008d45fc3b *4354730abe0cdb11088b43fcffe08b45008945fcc7450064d40c0883ed04b86cff0d08ebe78d76 *00000000002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc54dc0b0889 *378d77fc83c5048b4500ebea90900400010000000000110000008b7500c74500b0d40c08ff2600 *0000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0837e040079198b4604f7d8c7 *47fc54dc0b0889078d77fc83c5048b4500ebdf83c50483ef088b06ebd590909004000100000000 *00110000008b7500c7450010d50c08ff260000000024000000837e0400781a837e0400750dbeb0 *e4110883c504e92b07ffffbea8e41108ebf1beb8e41108ebea900400010000000000110000008b *750083c504ff260400010000000000110000008b7500c74500e8d50c08ff26837e0400781a837e *0400750dbe90e4110883c504e93b30ffffbea0e41108ebf1be98e41108ebea9000000000240000 *0085f67f1885f6750dbe90e4110883c504e90f30ffffbe98e41108ebf1bea0e41108ebea90c743 *08000000008b46048943048b7608c7450094d50c08e9647a0300b8d50c0864d50c080000000000 *000000250000000b00020000000000110000008d45f03b4354730abe30db11088b43fcffe08b75 *00c74500a0d80c088b06ebf0c40100002400000083c7183b7b5c7615c7436c06000000c74320ff *000001b8b03d1008ffe0c747ecccdc0c088b45008947f08977f4c747f8ccdc0c088b45088947fc *8b451489078d47ec8945148d47f889451083c510b8f4d50c08ebc68d7600620000002400000089 *750c8b7508c745fc1cd60c0883ed04e9f36e03008d760083c7083b7b5c760cc7436c020000008b *43f8ffe08b4604f76d0489c18d420183f801770d8b450489c233560431cac1ea1f85d2751e8b45 *040faf4604c747fcb8050c0889078d77fc83c5088b45008b40f0ebbf8b46048945008b7504c745 *fc7cd60c0883ed0483ef08b884451008eba2420000002400000083c70c3b7b5c7615c7436c0300 *0000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378b450889450c8d47 *f889450883c508b8f4d50c08ebd989f68975008b7504c745fc0cd70c0883ed04e91f6e03008d76 *0050d70c0894d60c080000000021000000250000008b55048b460489450489d6c745007cd70c08 *ff26010000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0 *c747f8ccdc0c088b45008947fc89378b45088945048d47f889450883c504b8f4d50c08ebd989f6 *8b7604c7450898d70c0883c508e9966d030089f6000000002400000083c70c3b7b5c7615c7436c *03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d77f883c508 *8b45008b40ecebe189f68b460489430c8b46088943088b45048943048b7508c7450cf8d70c0883 *c50ce9ec70030034d80c08dcd70c080000000043000000250000008b46048945fc8b4608894500 *8b450489750489c6c745f86cd80c0883ed08ff266cd80c087cd70c080000000001000000250000 *000b00020000000000110000008d45f03b4354730abe34db11088b43fcffe08b7500c7450048db *0c088b06ebf0c40100002400000083c7183b7b5c7615c7436c06000000c74320ff000001b8b03d *1008ffe0c747ecccdc0c088b45008947f08977f4c747f8ccdc0c088b45088947fc8b451489078d *47ec8945148d47f889451083c510b8acd80c08ebc68d7600620000002400000089750c8b7508c7 *45fcd4d80c0883ed04e93b6c03008d760083c7083b7b5c760cc7436c020000008b43f8ffe08b45 *0489c1034e04334604f7d089ca33550485c27817c747fcb8050c08890f8d77fc83c5088b45008b *40f0ebd18b46048945008b7504c745fc34d90c0883ed0483ef08b884451008ebb489f642000000 *2400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c *088b45008947fc89378b450889450c8d47f889450883c508b8acd80c08ebd989f68975008b7504 *c745fcb4d90c0883ed04e9776b03008d7600f8d90c084cd90c080000000021000000250000008b *55048b460489450489d6c7450024da0c08ff26010000002400000083c70c3b7b5c7615c7436c03 *000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378b45088945048d *47f889450883c504b8acd80c08ebd989f68b7604c7450840da0c0883c508e9ee6a030089f60000 *00002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8cc *dc0c088b45008947fc89378d77f883c5088b45008b40ecebe189f68b460489430c8b4608894308 *8b45048943048b7508c7450ca0da0c0883c50ce9146d0300dcda0c0884da0c0800000000430000 *00250000008b46048945fc8b46088945008b450489750489c6c745f814db0c0883ed08ff2614db *0c0824da0c08000000000100000025000000c8e4110848db0c080400010000000000110001008b *7500c74500fcdb0c08ff2683c7083b7b5c760cc7436c020000008b43f8ffe08b46043d00000080 *750fbec8e4110883c50483ef088b06ebe5f7d8c747fcb8050c0889078d77fc83c5048b45008b40 *f0ebcc89f683c70c3b7b5c760cc7436c030000008b43f8ffe08b4608f7d8c747f8ccdc0c088b56 *048957fc89078d77f883c5048b45008b40ecebdc89f6b0db0c0868db0c0848db0c080000000025 *000100c8e41108fcdb0c080400010000000000110001008b7500c74500c4dc0c08ff2683c7083b *7b5c760cc7436c020000008b43f8ffe08b46043d000000807507bec8e41108eb1d85c07919f7d8 *c747fcb8050c0889078d77fc83c5048b45008b40f0ebd083c50483ef088b06ebc683c70c3b7b5c *760cc7436c030000008b43f8ffe0837e080079228b4608f7d8c747f8ccdc0c088b56048957fc89 *078d77f883c5048b45008b40ecebd683c50483ef0c8b06ebcc89f668dc0c081cdc0c08fcdb0c08 *000000002500010001000100050001008b4500ff60ec89f601000100090001008b4500ff60ec90 *905072656c7564652e726561643a206e6f207061727365009000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8252103008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0e4dc0c0883ed10 *b84cce0b08ebbf905072656c7564652e726561643a20616d626967756f75732070617273650089 *f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8a12003008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f400d21108c745f060dd0c0883ed10b84cce0b08ebbf900400010000000000110000008d45f83b *4354730abe8cdb11088b43fcffe08b7500c7450000df0c088b06ebf0be00d2110883c5048b4500 *ff60f089f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *46048945f483ed0cb8f0dd0c08ebe28d760083c7183b7b5c760cc7436c060000008b43f8ffe0c7 *47ec28de0c088b45088947f0c747f87cdc0b088b45048947fc8d47ec89078d77f883c50c8b4500 *8b40ecebd18d760083c508e950ffffff98de0c0854de0c08000000000200000025000000010000 *00240000008b46048945008b7608c745fcb4de0c0883ed04ff268d76008b46088945008b7604c7 *45fcbcde0c0883ed04ff268d7600d4de0c0810de0c0800000000000000002500000070d6110800 *df0c0804000100000000001100010083c7243b7b5c7611c7436c09000000be90db11088b43fcff *e0c747e078df0c088b45008947e4c747ecb0df0c088d47e08947f0c747f4c8df0c088d47ec8947 *f8c747fcc05e0c088d47f489078d77fc83c5048b45008b40ecebbd89f601000100130000008d45 *f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e4500c08ebe2 *8d760004000100010000000c0000008b760483c504ff2600df0c0804000100010000000c000100 *8d45f83b435473058b43fcffe0c745fc081210088b45008945f88b460489450083ed08b8385d0c *08ebe1909048d71108f4df0c0804000100000000001100010083c7143b7b5c7611c7436c050000 *00bea4db11088b43fcffe0c747f050e00c088b45008947f4c747fc60e30c088d47f089078d77fc *83c5048b4500ebda8d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b46048945f483ed0cb81c620c08ebe28d7600be78d6110883c5088b4500ff60e889 *f68b750483c508ff26be78d6110883c5088b4500ff60e889f694e00c088ce00c08000000000100 *0000250000000200000024000000837e042975118b7504c74504b8e00c0883c5048b06ffe0be78 *d6110883c50c8b45008b40e8ebee908b46088945008b7604c745fcc0e00c0883ed04ff268d7600 *e8e00c087ce00c080000000001000000250000008b7604c7450014e10c08ff26be78d6110883c5 *088b4500ff60e889f620e10c0820e10c0820e10c0820e10c0820e10c0814e10c0820e10c0820e1 *0c0800000000010000002500000004000100010000000c0000008d45f83b435473058b43fcffe0 *8b55008b460489450089d6c745fc5ce10c0883ed048b06ebe589f6f4df0c080400010001000000 *0c00010083c7143b7b5c760cc7436c050000008b43fcffe0c747f08c6b10088b46048947f48b45 *008947f8c747fc68e10c088d47f089078d47fc894500b810750c08ebd2f4df0c08030000001200 *01008d45ec3b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008 *897004c747fca0e10c088b460c89078d47fc8945f48b46088945f08b760483ed14b814161008eb *cd8d7600be78d6110883c5088b4500ff60e889f68b750483c508ff26be78d6110883c5088b4500 *ff60e889f654e20c084ce20c080000000001000000250000000200000024000000837e04287511 *8b7504c7450478e20c0883c5048b06ffe0be78d6110883c50c8b45008b40e8ebee908b46088945 *008b7604c745fc80e20c0883ed04ff268d7600a8e20c083ce20c08000000000100000025000000 *8b7604c74500d4e20c08ff26be78d6110883c5088b4500ff60e889f6e0e20c08e0e20c08e0e20c *08e0e20c08e0e20c08d4e20c08e0e20c08e0e20c08000000000100000025000000040001000100 *00000c0000008d45f83b435473058b43fcffe08b55008b460489450089d6c745fc1ce30c0883ed *048b06ebe589f6f4df0c080b000200010000000c00010083c7183b7b5c760cc7436c060000008b *43fcffe0c747ecece10c088b46048947f08b45008947f48b45048947f8c747fc28e30c088d47ec *89078d47fc89450483c504b810750c08ebc990909020d4110848d7110840d7110870d6110868d6 *1108ace30c08040001000000000011001f0083c7203b7b5c7611c7436c08000000beacdb11088b *43fcffe0c747e428e40c088b45008947e8c747f014e70c088d47e48947f4c747f87cec0c088947 *fc8d47f089078d47f8894500b8a80b0c08ebc89001000100130000008d45f43b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f483ed0cb81c620c08ebe28d7600040001000200 *00000e0000008d45fc3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f87cdc *0b088b46048947fc8b450089078d47f88945008b760883ed04b808121008ebd98d760004000100 *030000000b0000008d45f83b435473058b43fcffe08b46048945fc8b45008945f88b4608894500 *8b760c83ed08b814e70c08ebdf05000000120000008d45ec3b4354720883c71c3b7b5c760cc743 *6c070000008b43f8ffe08d45f8c700d46d1008897004c747e860e40c088b460c8947ec8b461089 *47f0c747f4b0e40c088b46088947f88d47e88947fc8b461489078d47f48945f48b46088945f08b *760483ed14b814161008ebae02000000150000008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe08d45f8c700d46d1008897004c747f87cdc0b088b46048947fcc70700d211 *088d47f88945f48b760883ed10b808121008ebcc89f6be78d6110883c50c8b4500ff60e889f68b *750483c50cff26be78d6110883c50c8b4500ff60e889f6c0e50c08b8e50c080000000042000000 *250000008b750483c508ff26be78d6110883c5088b4500ff60e889f6ece50c08e4e50c08000000 *00010000002500000003000000240000008b460483f82c741683f85d75208b7504c74504e4e50c *0883c5048b06ffe08b7504c7450810e60c0883c508ebedbe78d6110883c5108b45008b40e8ebdf *8d76008b46088945008b7604c745fc18e60c0883ed04ff268d760058e60c08a8e50c0800000000 *02000000250000008b7604c7450084e60c08ff26be78d6110883c50c8b4500ff60e889f690e60c *0890e60c0890e60c0890e60c0890e60c0884e60c0890e60c0890e60c0800000000020000002500 *000004000100020000000e0000008d45f43b435473058b43fcffe08b46088945fc8b55008b4604 *89450089d6c745f8cce60c0883ed088b06ebdfb0e30c0816000300010000000c00010083c7303b *7b5c760cc7436c0c0000008b43fcffe0c747d4e4e40c088b46048947d88b45048947dc8b450089 *47e08b45088947e48977e8c747ec58e50c088b45008947f08b45088947f4c747f8d8e60c088d47 *d48947fc8d47ec89078d47f889450883c508b810750c08eba79004000100030000000b0000008d *45f83b435473058b43fcffe08b460c8945fc8b45008945f88b46088945008b760483ed08b814e7 *0c08ebdf04000000120000008d45ec3b4354720883c7103b7b5c760cc7436c040000008b43f8ff *e08d45f8c700d46d1008897004c747f48ce70c088b46088947f88b460c8947fc8b461089078d47 *f48945f48b46108945f08b760483ed14b814161008ebc18d760001000100130000008d45f03b43 *5473058b43f8ffe08d45f8c700d46d1008897004c745f400d211088b760483ed10b808121008eb *de8d7600be78d6110883c5088b4500ff60e889f68b750483c508ff26be78d6110883c5088b4500 *ff60e889f66ce80c0864e80c08000000000100000025000000be78d6110883c5048b4500ff60e8 *89f6be78d6110883c5048b4500ff60e889f6a0e80c0890e80c0800000000000000002500000002 *000000240000008b460483f82c741683f85d75208b7504c7450490e80c0883c5048b06ffe08b75 *04c74508c4e80c0883c508ebedbe78d6110883c50c8b45008b40e8ebdf8d76008b46088945008b *7604c745fccce80c0883ed04ff268d76000ce90c0854e80c080000000001000000250000008b76 *04c7450038e90c08ff26be78d6110883c5088b4500ff60e889f644e90c0844e90c0844e90c0844 *e90c0844e90c0838e90c0844e90c0844e90c080000000001000000250000000400010001000000 *0c0000008d45f83b435473058b43fcffe08b55008b460489450089d6c745fc80e90c0883ed048b *06ebe589f6b4e30c0801000100130001008d45f43b4354720883c7143b7b5c760cc7436c050000 *008b43f8ffe08d45f8c700d46d1008897004c747f024e80c088b46048947f4c747fc8ce90c088d *47f089078d47fc8945f483ed0cb85c6c0c08ebc98d7600b4e30c0801000100130005008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8 *c0e90c088b46048947fc8d47f88945f4c745f0fce4110883ed10b838510c08ebce040001000100 *00000c0000008b760483c504ff26b8e30c0804000100010000000c0001008d45f83b435473058b *43fcffe0c745fc081210088b45008945f88b460489450083ed08b8385d0c08ebe189f6b4e30c08 *04000000120007008d45f03b4354720883c7383b7b5c760cc7436c0e0000008b43f8ffe08d45f8 *c700d46d1008897004c747ccc0e70c088b46048947d08b46088947d48b460c8947d88b46108947 *dcc747e020ea0c088b460c8947e4c747ec78ea0c088d47e08947f0c747f490ea0c088d47ec8947 *f8c747fcc05e0c088d47f489078d47cc8945f48d47fc8945f083ed10b838510c08eb8abe78d611 *0883c5088b4500ff60e889f68b750483c508ff26be78d6110883c5088b4500ff60e889f670eb0c *0868eb0c080000000001000000250000000200000024000000837e045b75118b7504c7450494eb *0c0883c5048b06ffe0be78d6110883c50c8b45008b40e8ebee908b46088945008b7604c745fc9c *eb0c0883ed04ff268d7600c4eb0c0858eb0c080000000001000000250000008b7604c74500f0eb *0c08ff26be78d6110883c5088b4500ff60e889f6fceb0c08fceb0c08fceb0c08fceb0c08fceb0c *08f0eb0c08fceb0c08fceb0c0800000000010000002500000004000100010000000c0000008d45 *f83b435473058b43fcffe08b55008b460489450089d6c745fc38ec0c0883ed048b06ebe589f6b0 *e30c080b000200020000000e000f0083c71c3b7b5c760cc7436c070000008b43fcffe0c747e8c8 *ea0c088b46048947ec8b46088947f08b45048947f48b45008947f8c747fc44ec0c088d47e88907 *8d47fc89450483c504b810750c08ebc39020d4110848d71108ccec0c0800000200180003008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e84911 *03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f410e5110883ed0cb8a80b *0c08ebc620d4110818e5110834ed0c0800000200180003008d45f43b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8e11003008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f418e5110883ed0cb8a80b0c08ebc620e511089ced0c0804 *00010000000000110001008d45fc3b4354730abed4db11088b43fcffe0c745fc20e5110883ed04 *b82c4f0c08ebed90b4db1108d4ed0c080400010000000000110001008d45fc3b4354720883c70c *3b7b5c7611c7436c03000000bedcdb11088b43fcffe0c747f838ee0c088b45008947fc8d47f889 *4500be60d6110883ed04b808121008ebdc90d4ed0c0801000100130001008d45ec3b435473058b *43f8ffe08d45f8c700d46d1008897004c745f464d611088b46048945f0beb4db110883ed14b814 *161008ebd690909020d4110830e5110870ee0c0800000200180003008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a50f03008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f430e5110883ed0cb8a80b0c08ebc6acdb1108e4 *db1108d8ee0c0800000200180003008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e83d0f03008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f4e4db110883ed0cb8d0e30c08ebc638e5110840ef0c0804000100000000001100 *01008d45fc3b4354730abe04dc11088b43fcffe0c745fc38e5110883ed04b82c4f0c08ebed90e4 *db110878ef0c080400010000000000110001008d45fc3b4354720883c70c3b7b5c7611c7436c03 *000000be0cdc11088b43fcffe0c747f8dcef0c088b45008947fc8d47f8894500be60d6110883ed *04b808121008ebdc9078ef0c0801000100130001008d45ec3b435473058b43f8ffe08d45f8c700 *d46d1008897004c745f464d611088b46048945f0bee4db110883ed14b814161008ebd690909008 *e5110814f00c0800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8050e03008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f448e5110883ed0cb894070e08ebc6acdb110814dc110878f00c08000002001800 *03008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e89d0d03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f414dc110883ed *0cb8d0e30c08ebc64ce51108e0f00c080400010000000000110001008d45fc3b4354730abe34dc *11088b43fcffe0c745fc4ce5110883ed04b82c4f0c08ebed9014dc110818f10c08040001000000 *0000110001008d45fc3b4354720883c70c3b7b5c7611c7436c03000000be3cdc11088b43fcffe0 *c747f87cf10c088b45008947fc8d47f8894500be60d6110883ed04b808121008ebdc9018f10c08 *01000100130001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f464d611 *088b46048945f0be14dc110883ed14b814161008ebd69090900900000001000000ff6500900900 *000009000000ff6500900100000002000000ff6500900100000009000000ff6500905b5d009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8390c03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0e4f10c0883ed10b84cce0b08ebbf90b8e51108c8e511084cf20c08040001000000 *0000110003008b7500c745009cf20c08ff26beb8e5110883c504ff2689f6bec8e5110883c504ff *2689f67cf20c0870f20c084cf20c08000000002500030098e51108a8e511085cdc11089cf20c08 *0b00020000000000110007008b7500c74500c4f50c08ff26c745005cdc1108e95ce7feff83c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc74dc11088b450489078d77f8 *83c50c8b45008b40ecebdd8d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f88c6b *10088b45048947fc8b450889078d47f8894508c74504a8e5110883c504b82cda0b08ebd58d7600 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f88c6b10088b45048947fc8b450889078d *47f8894508c7450498e5110883c504b82cda0b08ebd58d760048f30c0808f30c089cf20c080200 *0000250003009cf20c0803000000120003008d45ec3b435473058b43f8ffe08d45f8c700d46d10 *088970048b460c8945f08b46088945f48b7604c745ec9cf30c0883ed148b06ebd589f683c71c3b *7b5c760cc7436c070000008b43f8ffe0c747e8a8f30c088b46048947ec8b46088947f08b450889 *47f4c747f87cdc0b08c747fc7cdc11088d47e889078d77f883c50c8b45008b40ecebc489f6e0f3 *0c08d0f20c089cf20c0802000000250003009cf20c0804000100010000000c0003008d45f83b43 *5473058b43fcffe08b46048945fc8b450089750089c6c745f844f40c0883ed088b06ebe28d7600 *9cf20c0802000000150003008d45f43b4354720883c7083b7b5c760cc7436c020000008b43f8ff *e08d45f8c700d46d1008897004c747fc54f40c088b460489078b46088945f48d77fc83ed0cb854 *f40c08ebd390c74500a8e51108e94ce5feffc7450098e51108e940e5feffe0f40c08d4f40c089c *f20c0801000000250003009cf20c0803000000120003008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f88cf40c088b46048947fc8b46 *0889078d47f88945f48b760cc745f000f50c0883ed108b06ebc98d760083c71c3b7b5c760cc743 *6c070000008b43f8ffe0c747e80cf50c088b45048947ec8b46088947f08b46048947f4c747f87c *dc0b08c747fc6cdc11088d47e889078d77f883c5088b45008b40ecebc489f660f50c08c4f20c08 *9cf20c08010000002500070010000300000000001100000083c7183b7b5c7611c7436c06000000 *be94dc11088b43fcffe0837d0400793a837d00067e34c747ec40f60c088b45088947f08b450489 *47f4c747f87cdc0b08c747fc4cdc11088d47ec89078d77f883c50c8b45008b40ecebbe83c50483 *ef18b8b0150e08ebb189f601000100160000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe08d45f8c700d46d1008897004c747f87cdc0b08c747fc44dc11088b46048907 *8d47f88945f48b46088945f083ed10b8b0150e08ebc99090901600030000000000110000008b75 *00c74500d0f60c08ff2622000000240000008b45048945008b4604894504e90bffffff8d760002 *000000240000008b55048b460489450489d6c74500b4f60c08ff265cdc1108e4f60c080b000200 *00000000110001008b7500c74500a8f90c08ff26c745005cdc1108e91ce3feff83c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc74dc11088b450489078d77f883c50c8b *45008b40ecebdd8d7600020000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f88c6b10088b45048947fc8b450889078d47f88945088b4604894504c7450000000000b8d0f5 *0c08ebd203000000120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46 *0c8945f08b46088945f48b7604c745ec50f70c0883ed148b06ebd589f683c71c3b7b5c760cc743 *6c070000008b43f8ffe0c747e898f70c088b46048947ec8b46088947f08b45088947f4c747f87c *dc0b08c747fc7cdc11088d47e889078d77f883c50c8b45008b40ecebc489f6d0f70c0810f70c08 *00000000020000002500000004000100010000000c0000008d45f83b435473058b43fcffe08b46 *048945fc8b450089750089c6c745f834f80c0883ed088b06ebe28d760002000000150000008d45 *f43b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c7 *47fc40f80c088b460489078b46088945f48d77fc83ed0cb840f80c08ebd3900200000024000000 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f874f80c088b45088947fc8b450489078d *47f88945088b4604894504c7450000000000b8d0f50c08ebd203000000120000008d45ec3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604c745ecc4f8 *0c0883ed148b06ebd589f683c71c3b7b5c760cc7436c070000008b43f8ffe0c747e80cf90c088b *46048947ec8b45048947f08b46088947f4c747f87cdc0b08c747fc6cdc11088d47e889078d77f8 *83c5088b45008b40ecebc489f644f90c0804f70c08e4f60c080100000025000100040001000000 *0000110000008d45f83b4354730abea4dc11088b43fcffe08b7500c74500dcf90c088b06ebf000 *00000024000000c7450000d211088b46048945fcc745f80000000083ed08e9d8fbffff0b000200 *000000001100000083c70c3b7b5c7611c7436c03000000bea8dc11088b43fcffe0c747f87cdc0b *088b45008947fc8b450489078d77f883c5088b45008b40ecebde90909098e51108a8e5110840fa *0c081600030000000000110003008b7504c7450494fa0c0883c504ff2690c74500a8e51108e9b8 *dffeffc7450098e51108e9acdffeff74fa0c0868fa0c0840fa0c080100000025000300dce51108 *94fa0c080b000200000000001100010083c7183b7b5c7611c7436c06000000bebcdc11088b43fc *ffe0c747ec04fb0c088b45008947f08b45048947f4c747f87cdc0b08c747fc90e511088d47ec89 *078d77f883c5088b45008b40ecebca8d760094fa0c0802000000150001008d45f03b435473058b *43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b834170e08ebdc90 *e4e5110834fb0c081600030000000000110001008b7504c7450464fb0c0883c504ff269034fb0c *0801000000240001008b4604894500e9511d010090e4e5110870fb0c0804000100000000001100 *01008d45fc3b4354730abeccdc11088b43fcffe08b7500c74500b0fb0c088b06ebf070fb0c0800 *00000024000100c7450000d211088b46048945fc83ed04e9fb1c01009090900400010000000000 *110000008d45fc3b4354730abed4dc11088b43fcffe08b7500c74500fcfb0c088b06ebf0000000 *0024000000c7450020e111088b760483ed04e9fa15030090905cdc110810fc0c08040001000000 *00001100010083c7143b7b5c7611c7436c05000000bed8dc11088b43fcffe0c747f06cfc0c088b *45008947f4c747fc14ff0c088d47f089078d77fc83c5048b4500ebda8d76000100010013000000 *8d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8d4fb0c08 *ebe28d7600c745045cdc110883c504e985ddfeff9083c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f87cdc0b08c747fc74dc11088b450489078d77f883c5108b45008b40ecebdd8d760004 *000000120000008d45ec3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c7 *00d46d1008897004c747f88c6b10088b46108947fc8b460c89078d47f88945f48b46088945f08b *760483ed14b814161008ebc79083c7203b7b5c760cc7436c080000008b43f8ffe0c747e4e8fc0c *088b450c8947e88b46048947ec8b46088947f08b45088947f4c747f87cdc0b08c747fc7cdc1108 *8d47e489078d77f883c5108b45008b40ecebbe3cfd0c08a8fc0c08000000000300000025000000 *04000100020000000e0000008d45f43b435473058b43fcffe08b46088945f88975fc8b55008b46 *0489450089d6c745f4a4fd0c0883ed0c8b06ebdc9003000000120000008d45f43b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8b0fd0c088b46 *048947fc8b460889078b460c8945f48d77f883ed0cb8b0fd0c08ebcd8d76000400000012000000 *8d45ec3b4354720883c7103b7b5c760cc7436c040000008b43f8ffe08d45f8c700d46d10088970 *04c747f4e8fd0c088b46048947f88b460c8947fc8b461089078d47f48945f48b46088945f08b76 *0483ed14b814161008ebc18d760083c7203b7b5c760cc7436c080000008b43f8ffe0c747e440fe *0c088b45048947e88b46048947ec8b45088947f08b46088947f4c747f87cdc0b08c747fc6cdc11 *088d47e489078d77f883c50c8b45008b40ecebbe9cfe0c0898fc0c0810fc0c0802000000250001 *0010fc0c080b000200010000000c0001008d45fc3b435473058b43fcffe08b55008b4604894500 *89d6c745fc04ff0c0883ed048b06ebe590901600040000000000110000008b7500c7450098ff0c *08ff2662000000240000008b4d088b55048b460489048abe0cd2110883c50cff65009022000000 *240000008b55088b460489450889d6c745005cff0c08ff2602000000240000008b55048b460489 *450489d6c745007cff0c08ff260b00030000000000110000008b7500c7450008000d08ff262100 *00002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b46048b55048b0482c747fce0 *060c0889078d77fc83c5088b4500ebe18d760001000000240000008b55048b460489450489d6c7 *4500ccff0c08ff26f0dc11081c000d080400010000000000110001008d45fc3b4354730abee8dc *11088b43fcffe0bef0dc110883ed04b808121008ebef8d760000e61108a0e3110890e3110808e6 *110810e6110820e6110830e6110840e6110850e6110860e6110870e6110880e6110890e61108a0 *e61108b0e61108e8dc1108e0000d0804000200000000001100ffff83c70c3b7b5c7611c7436c03 *000000bef0dc11088b43fcffe0c747f8d4040d088b45008947fcc74304e8dc11088d77f883c504 *b870331008ebdd89f654000d0810000000ffff000058000d080000000024000100c74500f0e511 *088b46148945fc8b46108945f88b460c8945f48b46088945f08b46048945ec83ed14e9b7ee0000 *8d7600be40e6110883c504ff2689f6be50e6110883c504ff2689f6be60e6110883c504ff2689f6 *be70e6110883c504ff2689f6be80e6110883c504ff2689f658010d084c010d0840010d0834010d *0828010d0870000d080000000025001f0058000d08000000002400c33f8b060fb740fe83f80e77 *07ff24854c481108c74500f0e511088b46048945fc83ed04b82cda0b08ffe0beb0e61108eb118b *7604c74500f8000d08eb32bea0e6110883c504eb28be90e61108ebf4c74500f0e511088b460489 *45fc83ed04b8b4ec0d08ebc38b7604c7450084010d088b06ebb589f658000d08010001001300c3 *3f8d45e03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f490010d0883ed0c *8b06ebe189f6be18e6110883c504e98b6b03008d7600be20e6110883c504ff2689f6be30e61108 *83c504ff2689f658020d084c020d080000000068000d08000000002500030068000d0801000100 *130003008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f47c020d08 *83ed0c8b06ebe189f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f888020d088977fc *8d47f8894500c745fc04d21108be00e6110883ed08b814161008ebd889f6b4020d08b4020d083c *020d0854000d080000000025007100beece5110883c504e9bf6a03008d7600eb2e89f600000000 *24000000be0cd2110883c504ff65009018030d08000000000000000000000100000001000d0000 *008d45fc3b435473058b43fcffe08b460489442418c745fc24030d0883ed048b43608968308b53 *688d4704894204c744240400000000891c24e889ca0200894424148b442418890424e89bbe0200 *c7442404000000008b442414890424e8f4ca02008b43608b683005880000008943548b43688b78 *0483ef0489c28b4018c1e00c030283e80489435c8b4500e97bffffff000000002400000083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fc48030d088b460489078d77fc83c504b8d46d10 *08ebe58d76008b7604c74500e0030d08ff2610040d0808030d0800000000000000002500000054 *000d08000000002400ff7f8b060fb740fe83f805743283f8057f0783f803740eeb3a83f8077430 *83f8087410eb2e8b7604c7450008030d088b06ffe08b7604c7450030040d08ebf0be08e6110883 *c504b8d46d1008ebe38b4604eb2183c70c3b7b5c760cc7436c030000008b43f8ebcac747f81002 *0d088977fc8d47f8894500c745fc04d21108be00e6110883ed08b814161008eba49054000d0801 *0001001300ff7f8d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f43c *040d0883ed0c8b06ebe1909080d8110800050d080300010000000000110001008b4500c7450038 *050d08890424e8d68ef7ff89c6ff65009000050d08000000002400010083c7083b7b5c7615c743 *6c02000000c74320ff000000b8b03d1008ffe081feffff1000760fbe80d8110883c50483ef088b *06ebe7c747fc3cdc0b0889378d77fc83c5048b4500ebd30300010000000000110000008b4500c7 *4500ac050d08890424e8fe90f7ff89c6ff650090000000002400000085f67510befcd1110883c5 *048b45008b40f0ffe0be04d2110883c5048b45008b40ecebee0300010000000000110000008b45 *00c74500fc050d08890424e88e8ff7ff89c6ff650090000000002400000085f67510befcd11108 *83c5048b45008b40f0ffe0be04d2110883c5048b45008b40ecebee030001000000000011000000 *8b4500c745004c060d08890424e8ce8ff7ff89c6ff650090000000002400000085f67510befcd1 *110883c5048b45008b40f0ffe0be04d2110883c5048b45008b40ecebee09000300000000001100 *00008d45f83b4354730abe0cdd11088b43fcffe08b750083ed04b8b4060d08ebf1902200000024 *0000008b7504eb0b8d7600220000002400000089f085f6750dbe0cd2110883c50c8b4500ffe048 *8b55088b54820c89450489d6c74500a4060d0883ed04b81c091008ebe090909004000100000000 *00110000008d45fc3b4354730abe10dd11088b43fcffe08b45008945fcc7450028070d0883ed04 *b894210e08ebe78d7600000000002400000083c7083b7b5c760ec7436c02000000b8f0371008ff *e0c747fcd8300c0889378d77fc83c5048b4500ebea90900400010000000000110000008b750083 *c504ff260400010000000000110000008b7500c7450088070d08ff260000000024000000837e04 *00740dbecce6110883c504e93d29ffffbed4e61108ebf190900400010000000000110000008b75 *00c74500c4070d08ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b *4604f7d8c747fcd8300c0889078d77fc83c5048b4500ebe59090900b0002000000000011000000 *8b7500c745004c080d08ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ff *e08b4504034604c747fcd8300c0889078d77fc83c5088b4500ebe489f601000000240000008b55 *048b460489450489d6c7450014080d08ff260b00020000000000110000008b7500c74500b8080d *08ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040faf4604c7 *47fcd8300c0889078d77fc83c5088b4500ebe39001000000240000008b55048b460489450489d6 *c7450080080d08ff260b00020000000000110000008b7500c7450024090d08ff26210000002400 *000083c7083b7b5c760cc7436c020000008b43f8ffe08b45042b4604c747fcd8300c0889078d77 *fc83c5088b4500ebe489f601000000240000008b55048b460489450489d6c74500ec080d08ff26 *72617753797374656d0089f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e8ddf402008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f400d21108c745f038090d0883ed10b84cce0b08ebbf90bcd31108a8 *090d0800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e871f402008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f4bcd3110883ed0cb84c860d08ebc610e711083cdd11080c0a0d0804000200000000001100 *03008d45f43b4354720883c70c3b7b5c7611c7436c03000000be4cdd11088b43fcffe0c747f83c *0b0d088b45008947fc8d47f88945fcc745f810e71108be3cdd1108c74500b40b0d0883ed0cb84c *181008ebce8d7600eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff *000000b8b03d1008ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea8d7600780a0d080000 *00000000000000000100000001000d0000008d45fc3b435473058b43fcffe08b4604c745fc840a *0d0883ed04890424e84aab020089c68b4500ebe28d7600000000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe0c747fcd00a0d088b460489078d77fc83c504b8d46d1008ebe58d76 *0001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745 *f4040b0d0883ed0c8b06ebe189f6000000002400000083c7083b7b5c760cc7436c020000008b43 *f8ffe0837e0400750dbefcd2110883c50483ef08eb0fc747fc14e90b0889378d77fc83c5048b45 *00ebd7900000000024000000c74500700b0d08ff26909090646f65734469726563746f72794578 *697374009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e84df202008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0c00b0d0883ed10b84cce0b08ebbf90040002000000000011000000 *8d45fc3b4354730abe70dd11088b43fcffe08b7500c745000c0d0d088b06ebf000000000240000 *0085f6750fbe04d2110883c504a1c06d1008ffe0befcd1110883c504a1c46d1008ebef89f60000 *0200140000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f0c745 *f46c0c0d0883ed10b8d01f0d08ebdb000000002400000083c70c3b7b5c7615c7436c03000000c7 *4320ff000000b8b03d1008ffe0c747f8980c0d088977fc8d77f883c5048b4500ebe989f6000000 *00240000008b46048945fcc74500d00c0d0883ed04e9ff110000909090646f657346696c654578 *6973740089f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8edf002008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0240d0d0883ed10b84cce0b08ebbf906765744469726563746f72 *79436f6e74656e7473008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e871f002008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f0980d0d0883ed10b84cce0b08ebbf9084dd1108 *140e0d080400010000000000110001008d45f43b4354720883c70c3b7b5c7611c7436c03000000 *be94dd11088b43fcffe0c747f8840e0d088b45008947fc8d47f8894500c745fc84dd1108c745f8 *98e01108be94e0110883ed0cb8e41a1008ebce8d760001000100130000008d45f43b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8c8230d08ebe290909078de1108 *84dd11089cdd1108b00e0d080800030000000000110007008d45f03b4354730abe9cdd11088b43 *fcffe0c745f800000000c745fcac100d0883ed08b8fc850d08ebe689f6b40e0d08210000002400 *01008b45043b46047411c7450484dd110883c504b8d8810c08ffe0be00d2110883c5088b4500eb *f189f6b40e0d080000000024000100837e04ff750dbe00d2110883c5048b4500ffe0c7450084dd *1108b8d8810c08ebf08d7600b00e0d08620000002400070083feff740783fe047415eb1dbe78de *1108c74508380f0d0883c5088b06ffe083c504b8cc0e0d08ebf4897508be78de1108c74504040f *0d0883c504ebde8d7600c30000002400000083c70c3b7b5c7615c7436c03000000c74320fe0000 *00b8b03d1008ffe0c747f87cdc0b088b45048947fc89378d77f883c5108b4500ebe490b80e0d08 *c3000000240001008b450c8945fc8b45088945f8c74500b00f0d0883ed08e9bdfeffff90b80e0d *08e3000000240001008b45048945fc897504c74500f40f0d0883ed04e90c110000b80e0d08e300 *0000240001008975fcc745001c100d0883ed04e96672ffff89f6b00e0d08620000002400070085 *f6752d8b45048b0085c074178945f8894500c745fc40100d0883ed08b890200d08ffe0be00d211 *0883c50c8b4500ebf1c74500680f0d08b82c860d08ebe390b00e0d0862000000240007008b4504 *8945fc8b45088945f8c7450060100d0883ed08e999100000900400020000000000110000008d45 *fc3b4354730abea4dd11088b43fcffe08b7500c745009c110d088b06ebf0000000002400000085 *f6750fbefcd1110883c504a1c46d1008ffe0be04d2110883c504a1c06d1008ebef89f600000200 *140000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f0c745f4fc *100d0883ed10b8d01f0d08ebdb000000002400000083c70c3b7b5c7615c7436c03000000c74320 *ff000000b8b03d1008ffe0c747f828110d088977fc8d77f883c5048b4500ebe989f60000000024 *0000008b46048945fcc7450060110d0883ed04e96f0d000090909000000200180000008d45f43b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e86dec0200 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f41c120d0883ed0cbe00100000 *8b4500ebc390000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d *1008ffe0c747fc54dc0b0889378d77fc83c504b8d46d1008ebe8900cd1110850120d0800000200 *180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8c9eb02008d47f8894604c706245b10088d55f8c702d46d1008894204c745f40cd11108 *83ed0cb88cbf0b08ebc66ce711087ce71108b4120d0800000200180003008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e861eb02008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f47ce71108be6ce7110883ed10b808121008 *ebc1909090c8dd110824130d080400010000000000110001008d45fc3b4354720883c70c3b7b5c *7611c7436c03000000bed8dd11088b43fcffe0c747f840140d088b45008947fc8d47f8894500be *c8dd110883ed04b808121008ebdc90eb5689f6000000002400000083c7083b7b5c7615c7436c02 *000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d76 *007c130d08000000000000000000000100000001000d0000008d45f43b435473058b43fcffe0c7 *45f8ff0100008b46048945f4c745fc88130d0883ed0cb8a0230d08ebe090000000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd4130d088b460489078d77fc83c504b8d4 *6d1008ebe58d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d100889 *70048b7604c745f408140d0883ed0c8b06ebe190905ce711086ce711086c140d08040001000000 *0000110003008d45f83b4354720883c70c3b7b5c7611c7436c03000000bee0dd11088b43fcffe0 *c747f8d8140d088b45008947fc8d47f8894500c745fc5ce71108be6ce7110883ed08b814161008 *ebd589f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46 *048945f483ed0cb8d4220d08ebe29090904ce711086ce7110804150d0804000100000000001100 *03008d45f83b4354720883c70c3b7b5c7611c7436c03000000bee8dd11088b43fcffe0c747f870 *150d088b45008947fc8d47f8894500c745fc4ce71108be6ce7110883ed08b814161008ebd589f6 *01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4 *83ed0cb808220d08ebe2909090a8e011083ce71108f0dd11089c150d0808000300000000001100 *07008d45f43b4354730abef0dd11088b43fcffe08b45048945f88b45008945f4c745fc08170d08 *83ed0cb8c4240d08ebe19001000000240000008b750483c508ff65008d76002100000024000000 *8b45048945fc897504c74500f0150d0883ed04e9b8730000a4150d0821000000240001008b4604 *894500e985ffffff90a4150d082100000024000100c7450028160d08ff268d76009c150d082100 *00002400050085f6740a897500b8b8150d08ffe0bea8e01108c7450040160d08b8c0351008ebeb *8d7600a4150d080000000024000100c7450000000000c745fc0000000083ed04e91affffff89f6 *9c150d08620000002400070083fe2275378b450889c201d27511c7450888160d0883c504b8d489 *0d08ffe08955008b45048945fc895508c7450458160d0883ed04b8f4890d08ebe1c745083ce711 *0883c508b8d8810c08ebd08d76009c150d08620000002400070085f6750ec74500ac160d08b82c *860d08ffe0897500897508c7450404160d08b8b8820c08ebea909050de11086ce711088ce71108 *30170d0816000400000000001100070083c7243b7b5c7611c7436c09000000bef8dd11088b43fc *ffe0c747e050180d088b45048947e4c747e884180d088b45048947ecc747f4301b0d088d47e889 *47f88b45088947fc8b450089078d47e08943048d77f483c50cb870331008ebb989f60200000015 *0000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945 *f083ed10b83c490c08ebdc9001000000240000008b06668378fe09754083c7143b7b5c760cc743 *6c050000008b43f8ffe0c747f0b4170d088b45048947f48b46048947f8c747fc9ce90b088d47f0 *89078d77fc83c508b8c0351008ebd289750483c504b874e80b08ebc589f604000200010000000c *0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fcec170d0883ed048b06 *ebe589f638170d0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d100889 *70048b46048945f483ed0cb8d4260e08ebe28d7600e97b0200008d760001000100160000008d45 *f03b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c7 *47fce0060c088b460889078d47fc8945f48b760483ed10b808121008ebd390eb5689f600000000 *2400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b *0889378d77fc83c5048b4500ebea8d760008190d08000000000000000000000100000002001000 *00008d45f43b435473058b43fcffe08b46048945f88b46088945f4c745fc14190d0883ed0cb8b0 *4b0c08ebe189f6210000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f860 *190d088b45048947fc8b460489078d77f883c508b8d46d1008ebdf9001000100160000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f094190d0883 *ed108b06ebdb01000000240000008b750483c504e909ef02009034170d0804000200020001000b *0001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8d0190d088b *45008947fc8b460c89078d47f88945f88b46088945f48b4604894500be6ce71108c745fc081a0d *0883ed10b84c181008ebc489f6010000002400000083c508ff650089f634170d08030000002400 *010083c71c3b7b5c7615c7436c07000000c74320fe000000b8b03d1008ffe08d5608c747e8c018 *0d088b45088947ec8957f0c747f4241a0d088d47e88947f88b45048947fc89178d47f48945048b *450c89450089750cc74508841a0d08b8e4c10b08ebb989f634170d0803000000240001008b7604 *c74500981a0d08e9b527030090b0180d080000000030170d0800000100030000000b0003008d45 *f03b435473058b43fcffe08b460c8945f48b46088945f88b46048945fcbe50de1108c745f0081b *0d0883ed108b06ebd990900400020000000000110000008b7500c74500841b0d08ff2600000000 *240000008b06668378fe09750dbefcd1110883c5048b4500ffe0897500b874e80b08ebf4040002 *0000000000110000008b7500c74500c41b0d08ff2600000000240000008b06668378fe09750dbe *fcd1110883c5048b4500ffe0897500b874e80b08ebf46e6f20656e7669726f6e6d656e74207661 *726961626c650000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e825e202008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f400d21108c745f0e41b0d0883ed10b84cce0b08ebbf90676574456e7600900000 *0200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c *1008893424e8b9e102008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d2 *1108c745f0601c0d0883ed10b84cce0b08ebbf900b00020000000000110000008d45fc3b435473 *0abe28de11088b43fcffe08b7504c745fc481d0d0883ed048b06ebed908b750483c50cff260200 *000024000000837e042f75068b450889450483c504e9b8ffffff8b46088945088b7604c745000c *1d0d08ff2689f6201d0d08fc1c0d08000000004200000025000000040002000000000011000000 *8d45f83b4354730abe2cde11088b43fcffe08b7500c745002c1e0d088b06ebf0be00d2110883c5 *04ff650090010000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d10 *08ffe0c747f87cdc0b088b45048947fc89378d77f883c5088b4500ebe49001000000240000008b *45048945fc897504c74500881d0d0883ed04e974ffffff01000000240000008b46048945fcc745 *00c81d0d0883ed04e9bb64ffff8d76008b46088945008b7604c745fce81d0d0883ed04ff268d76 *00001e0d08741d0d0800000000000000002500000030de1108541e0d08000000002c1e0d080000 *01000000000011000100be30de1108e96e17030089f6e9efffffff909090801e0d080000000000 *000000000001000000000011000000beb0e71108e94217030089f6e9efffffff90909004000200 *00000000110000008b7500c74500a81e0d08ff2600000000240000008b06668378fe09752b83c7 *083b7b5c760cc7436c020000008b43f8ffe0c747fcc4a90b088b460489078d77fc83c5048b4500 *ebe7897500b874e80b08ebdd9090b8f01e0d08ffe090833d64181208007514c705641812080100 *0000c7450090310c0883c50483ed04ff6500900300020000000000110000008b450083c5048b70 *10ff650000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8f5de02008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f4901f0d0883ed0cb830280e08ebc6000000002400000083c7083b7b5c7615c7436c0200 *0000c74320ff000000b8b03d1008ffe0c747fc54dc0b0889378d77fc83c504b8d46d1008ebe890 *0300020000000000110000008b450083c5042500f000003d004000000f94c00fb6f0ff65009090 *9000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e835de02008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f450200d0883ed0cb858280e08ebc6000000002400000083c7083b7b5c7615c7436c02000000c7 *4320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe890030002 *0000000000110000008b450083c5048d7013ff650000000200180000008d45f43b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e885dd02008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400210d0883ed0cb8e02a0e08ebc600000000 *2400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b *0889378d77fc83c504b8d46d1008ebe8900300020000000000110000008b450083c504890424e8 *2e77f7ffff65009090900800030000000000110000008b55008b450483c50889442404891424e8 *8389020089c6ff65009090b8210d0800000000000000000000010000000000110000008d45fc3b *4354730abe90de11088b43fcffe0c745fcc8210d0883ed04b8082b0e08ebed90e9d7ffffff8d76 *00000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c7 *47fc84ed0b0889378d77fc83c5048b4500ebea9090900400010000000000110000008b7500c745 *0098220d08ff26eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff00 *0000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760014220d08000000 *000000000000000100000001000d0000008d45f83b435473058b43fcffe08b46048945f8c745fc *20220d0883ed08b81c2f0e08ebe7000000002400000083c7083b7b5c760cc7436c020000008b43 *f8ffe0c747fc6c220d088b460489078d47fc894500b888c40c08ebe59090900400010000000000 *110000008b7500c7450064230d08ff26eb5689f6000000002400000083c7083b7b5c7615c7436c *02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d *7600e0220d08000000000000000000000100000001000d0000008d45f83b435473058b43fcffe0 *8b46048945f8c745fcec220d0883ed08b86c2f0e08ebe7000000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe0c747fc38230d088b460489078d47fc894500b888c40c08ebe59090 *900800030000000000110000008b55008b450483c50889442404891424e82770f7ff89c6ff6500 *90900400010000000000110000008b7500c7450058240d08ff26eb5689f6000000002400000083 *c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fce0060c0889378d77 *fc83c5048b4500ebea8d7600d4230d08000000000000000000000100000001000d0000008d45f8 *3b435473058b43fcffe08b46048945f8c745fce0230d0883ed08b88c2f0e08ebe7000000002400 *000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc2c240d088b460489078d47fc8945 *00b888c40c08ebe59090900f00040000000000110000008b4d008b55048b450883c50c89442408 *89542404890c24e8fc72f7ff89c6ff65009090900800030000000000110000008b55008b450483 *c50889442404891424e8c373f7ff89c6ff650090900300020000000000110000008b450083c504 *890424e82273f7ff89c6ff6500900300020000000000110000008b450083c504890424e8626ff7 *ff89c6ff6500900800030000000000110000008b55008b450483c50889442404891424e84b70f7 *ff89c6ff650090900400010000000000110000008d45fc3b4354730abe18df11088b43fcffe08b *7500c745000cd2110883ed04b808121008ebea90900400010000000000110000008d45fc3b4354 *730abe1cdf11088b43fcffe08b7500c745000cd2110883ed04b808121008ebea9090546578742f *506172736572436f6d62696e61746f72732f52656164502e68733a3130317c66756e6374696f6e *206d706c757300904cd21108e4250d0800000200180001008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e835d802008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f4b0250d08be4cd2110883ed10b828101008ebc19090900b *000200000000001100000083c71c3b7b5c7611c7436c07000000be30df11088b43fcffe0c747e8 *84280d088b45008947ecc747f0bc280d088d47e88947f48b45048947f8c747fcc05e0c088d47f0 *89078d77fc83c5088b45008b40ecebc490bea0e8110883c50cff650090be9ce8110883c510ff65 *009004000100020000000e0000008d45fc3b4354720883c70c3b7b5c760cc7436c030000008b43 *fcffe0c747f87cdc0b088b46048947fc8b450089078d47f88945008b760883ed04b808121008eb *d98d760003000000120000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e08d45f8c700d46d1008897004c747f8d4260d088b46048947fc8b460c89078d47f88945f48b76 *0883ed10b808121008ebcd8d760004000100010000000c0000008b760483c504ff260400010002 *0000000e00000083c7203b7b5c760cc7436c080000008b43fcffe0c747e420270d088b46048947 *e88b46088947ec8b45008947f0c747f47c270d088d47e48947f8c747fca05e0c088d47f489078d *77fc83c5048b45008b40f0ebbe83c7183b7b5c760cc7436c060000008b43f8ffe0c747ec8c6b10 *088b45088947f08b45048947f4c747f890270d088b450c8947fc8d47ec89078d77f883c5108b45 *00ebcee4270d08bc260d080000000003000000250000008b46048945f88b46088945008b55088b *460489450889d6c745fc3c280d0883ed0ce9a6e9020089f63c280d08b0260d0800000000020000 *002500000004000100010000000c0000008d45ec3b435473058b43fcffe08975fc8b55008b4604 *89450089d6c745f878280d0883ed088b06ebe28d760004000100020000000e0000008d45f83b43 *5473058b43fcffe0c745fc081210088b45008945f88b46088945008b760483ed08b884280d08eb *de909090040001000000000011000000be78d6110883c5048b4500ff60e8909016000300000000 *001100000083c71c3b7b5c7611c7436c07000000be38df11088b43fcffe0c747e88c6b10088b45 *008947ec8b45088947f0c747f484290d088b45088947f88d47e88947fc8b450489078d77f483c5 *0c8b4500ebc89004000100010000000c0000008b760483c504ff2604000100030000000b000000 *8d45fc3b4354720883c7183b7b5c760cc7436c060000008b43fcffe0c747ecc86b10088b460c89 *47f08b46048947f48b45008947f8c747fc70290d088d47ec89078d47fc8945008b760883ed04b8 *08121008ebc60b00020000000000110000008b7500c74500542a0d08ff2683c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f87cdc0b088b46048947fc8b450489078d77f883c5088b45008b *40ecebde8b4604894500e9fdaffeff908b4604894500e9f1affeff90302a0d08242a0d08f0290d *0800000000010000002500000088df110898df1108542a0d081600030000000000110003008d45 *f43b4354730abe88df11088b43fcffe08b7500c74500b0300d088b06ebf068e9110890df110898 *df11088c2a0d081600030000000000110007008d45fc3b4354730abe90df11088b43fcffe08b75 *00c745009c320d088b06ebf088df110890df110898df1108c82a0d080400010000000000110007 *008d45f83b4354730abe98df11088b43fcffe08b7500c74500c0330d088b06ebf08b750883c50c *ff26542a0d0803000000120001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46088945f48b46048945f08b460c8945ec83ed14b86c2a0d08ebd68d760083c7183b7b5c760c *c7436c060000008b43f8ffe0c747ec182b0d088b45048947f08b45088947f48b46048947f8c747 *fc5c5f0d088d47ec89078d77fc83c50c8b45008b40ecebcb908b45088b550489550889450483c5 *04e9b81101008b45088b5504895508894504897500e9acfeffffac2b0d08ac2b0d08ac2b0d08ac *2b0d08ac2b0d08ac2b0d08ac2b0d08982b0d08542a0d080200000025000100542a0d0803000000 *120001008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f08b460489 *45f48b760cc745ecec2b0d0883ed148b06ebd589f683c7203b7b5c760cc7436c080000008b43f8 *ffe0c747e4f82b0d088b45048947e88b45088947ec8b46088947f0c747f4f86a0c088b46048947 *f88d47e48947fc8b460c89078d77f483c50c8b45008b40e8ebbf90542a0d080300000012000100 *8d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f08b46 *0c8945ec83ed14b86c2a0d08ebd68d760083c71c3b7b5c760cc7436c070000008b43f8ffe0c747 *e8902c0d088b45048947ec8b45088947f08b46048947f4c747f87c5f0d088d47e88947fc8b4608 *89078d77f883c50c8b45008b40e4ebc58d7600542a0d0803000000120001008d45ec3b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f08b460c8945ec83ed14b8 *6c2a0d08ebd68d7600542a0d0803000000120001008d45ec3b435473058b43f8ffe08d45f8c700 *d46d10088970048b46088945f48b46048945f08b460c8945ec83ed14b86c2a0d08ebd68d760083 *c72c3b7b5c760cc7436c0b0000008b43f8ffe0c747d8242d0d088b45048947dc8b45088947e08b *46088947e4c747e8682d0d088b45048947ec8b45088947f08b46048947f4c747f89c5f0d088d47 *e88947fc8d47d889078d77f883c50c8b45008b40e0ebac89f6bed0df110883c50c8b4500ff60dc *89f6542a0d0802000000150001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f4c745f0fcd111088b46088945ec83ed14b86c2a0d08ebd589f683c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8242e0d088b45148947fc8b450489078d47f8894514c74510 *fcd111088b450889450c83c50cb86c2a0d08ebcf90c7450004d211088975fc83ed04e9bafbffff *89f6a02e0d08a02e0d08a02e0d08a02e0d08a02e0d08a02e0d08a02e0d08a02e0d08542a0d0801 *00000025000100c74510e02e0d0883c50ce9f5fbffff90e02e0d085c2e0d08542a0d0805010000 *250003008b7510c74500042f0d08ff26c74500fcd111088975fc83ed04e94afbffff89f6102f0d *08102f0d08102f0d08102f0d08102f0d08102f0d08102f0d08102f0d08542a0d08010000002500 *0100c74510502f0d0883c50ce985fbffff90542a0d0802000000150001008d45ec3b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f4c745f004d211088b46088945ec83ed14b8 *6c2a0d08ebd589f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f86c2f0d088b451489 *47fc8b450489078d47f8894514c7451004d211088b450889450c83c50cb86c2a0d08ebcf90a42f *0d08502f0d08542a0d0805010000250003008b7510c74500fc2f0d08ff26fc2f0d08042f0d0854 *2a0d0805000000250003008b460c8945f88b46048945fc8975008b7608c745f41c300d0883ed0c *ff2689f6897500e928faffff3c300d083c300d083c300d083c300d083c300d083c300d083c300d *083c300d08542a0d0802000000250001008975fcc7450070300d0883ed04e962faffff89f67030 *0d081c300d08082e0d08a02d0d08c82c0d08302c0d08502b0d08042b0d08542a0d080200000025 *000300942a0d0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970 *048b46048945f483ed0cb8e42a0d08ebe28d76008b4504894500c74504000000008975fc83ed04 *e9e8110100e8300d08e8300d08e8300d08e8300d08e8300d08e8300d08e8300d08e8300d088c2a *0d08020000002500010083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8bc300d088b45 *088947fc8975fc8d47f8894508c745002c310d0883ed04b8e42a0d08ebd790902a0d0803000000 *120001008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b460489 *45f08b460c8945ec83ed14b8a82a0d08ebd68d760083c7103b7b5c760cc7436c040000008b43f8 *ffe0c747f474310d088b45048947f88b45088947fc8b460c89078d47f48945088b46088945048b *4604894500b8a82a0d08ebcd8d7600942a0d0801000100130001008d45f43b435473058b43f8ff *e08d45f8c700d46d10088970048b46048945f483ed0cb8e42a0d08ebe28d760083c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f800320d088b45088947fc8d47f88945088b4504894500c7 *4504000000008975fc83ed04b8e8420e08ebd18d7600ac310d082c310d082c320d082c320d082c *320d082c320d082c320d082c320d088c2a0d080200000025000700d02a0d080100010013000100 *8d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e42a0d08 *ebe28d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8a8320d088b460c8947fc8d *47f88945008b46088945fc8b46048945f883ed08b86c2a0d08ebd58d7600d02a0d080100010013 *0001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e4 *2a0d08ebe28d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f820330d088b460c89 *47fc8d47f88945008b46088945fc8b46048945f883ed08b8a82a0d08ebd58d760083c504ff268d *76004c330d08d4320d088c330d088c330d088c330d088c330d088c330d088c330d08c82a0d0800 *0000002500070058e9110898df1108a0df1108b0df11089c340d0884000000c0330d0800000400 *0000000011000f008d45ec3b4354730abea0df11088b43fcffe08b7504c745fcbc370d0883ed04 *8b06ebed9098df1108b0df11080c340d080b00020000000000110003008d45f83b4354730abea8 *df11088b43fcffe08b7504c745fc40380d0883ed048b06ebed90e0e8110868e9110898df1108a0 *df1108a8df1108b0df110840380d088400000048340d08000004000000000011003f008d45f43b *4354730abeb0df11088b43fcffe08b7504c745fc1c3d0d0883ed048b06ebed90e947ffffff8d76 *00be3cd7110883c5148b4500ff60f089f6be3cd7110883c5148b4500ff60f089f6897508c74500 *fcd11108e9e10b010090c4340d08c4340d08c4340d08c4340d08c4340d08c4340d08c4340d08c4 *340d080000000062000000250000008b4504894500c745fc000000008975f88b450c8945f4c745 *0400350d0883ed0ce953ffffff8d760000350d0800350d0800350d0800350d0800350d0800350d *0800350d0800350d08cc330d084300000025000100c4330d0803000100120005008d45dc3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46088945e48b460c8945ec8b46108945f08b46 *048945f4c745e854350d0883ed1cb8e42a0d08ebc989f683c7203b7b5c760cc7436c080000008b *43f8ffe0c747e460350d088b45048947e88b45108947ec8b45088947f08b450c8947f4c747f89c *5f0d088977fc8d47e489078d77f883c5148b45008b40e0ebc2a4350d08a4350d08a4350d08a435 *0d08a4350d08a4350d08a4350d08b4340d08c4330d0884000000250005008975fc8b45048945f8 *c7450020360d0883ed08e92c07010020360d0820360d0820360d0820360d0820360d0820360d08 *20360d0820360d08c4330d0884000000250005008b450c8945008b45048945fc8975f88b450889 *45f4c7450464360d0883ed0ce9f0fdffff64360d0864360d0864360d0864360d0864360d086436 *0d0864360d0864360d08c4330d0825010000250005008975fcc74500b4360d0883ed04e9920701 *0089f6b4360d08b4360d08b4360d08b4360d08b4360d08b4360d08b4360d08b4360d08c0330d08 *2501000025000b00c0330d088400000024000b008b45108945f8897500c745fcf4360d0883ed08 *e9ccf3ffff8b750cebe38d76008b750c4eebda89f620370d0818370d08c0330d08840000002500 *0b008b46048945108b46088945088b7504c745003c370d08ff263c370d08a4340d08c0330d08c4 *01000025000b008b7510c7450068370d08ff268b460489450883c504e966fcffff89f689750883 *c504e9e9fcffff9084370d0884370d0884370d0884370d0874370d0884370d0884370d0868370d *08c0330d08c400000025000f00be3cd7110883c50c8b4500ff60f089f68975008b45048945fcc7 *45040000000083ed04e994fcffffcc370d08cc370d08cc370d08cc370d08cc370d08cc370d08cc *370d08cc370d0810340d0802000000250001008b46048945fc8b4608894508c7450010380d0883 *ed04e9b9f2ffff9010380d08bc370d080c340d084200000025000300e933fcffff8d7600897508 *83c504e98d0701009048380d0848380d0848380d0848380d0848380d0848380d0848380d084838 *0d08000000006200000025000000be3cd71108c7450880380d0883c508ebb78d7600c745000000 *00008975fc8b45048945f88b4510894504c7450880380d0883ed08e9bffbffff8d760094380d08 *94380d0894380d0894380d0894380d0894380d0894380d0894380d085c340d08c4000000250001 *008b46048945fc8b4608894510c74500e8380d0883ed04e9e1f1ffff90e8380d0880380d085034 *0d08c4010000250009008b7510c7450018390d08ff2658340d0802000000150001008d45f03b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b824340d *08ebdc904c340d0803000100120009008d45e83b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe08d45f8c700d46d1008897004c747f830390d088b46048947fc8b460889078d47f889 *45f48b46108945f0c745ecfcd111088b460c8945e883ed18b8e8420e08ebbd8d760083c71c3b7b *5c760cc7436c070000008b43f8ffe0c747e86c390d088b45048947ec8b45108947f08b46048947 *f48b450c8947f8c747fc5c5f0d088d47e889078d77fc83c5148b45008b40ecebc58d760054340d *0803000200120001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46102b46 *148b56088955f48945f08b460c8945ec8b46048945e883ed18b8e8330d08ebcd89f683c7283b7b *5c760cc7436c0a0000008b43f8ffe0c747dc283a0d088b45048947e08b45108947e48b46088947 *e88b450c8947ec8b460c8947f0c747f4f86a0c088b46048947f88d47dc8947fc8b460c89078d77 *f483c5148b45008b40e8ebb3905c340d0803000200120001008d45e83b435473058b43f8ffe08d *45f8c700d46d10088970048b46102b46148b56088955f48945f08b460c8945ec8b46048945e883 *ed18b878340d08ebcd89f683c7243b7b5c760cc7436c090000008b43f8ffe0c747e0d43a0d088b *45048947e48b45108947e88b46048947ec8b450c8947f08b46088947f4c747f87c5f0d088d47e0 *8947fc8b460889078d77f883c5148b45008b40e4ebb98d760058340d0802000000150001008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b8 *24340d08ebdc904c340d0803000100120009008d45e83b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe08d45f8c700d46d1008897004c747f87c3b0d088b46048947fc8b460889078d *47f88945f48b46108945f0c745ecfcd111088b460c8945e883ed18b8e8420e08ebbd8d76005c34 *0d0803000100120001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b460c89 *45f48b46108945f08b46088945ec8b46048945e883ed18b878340d08ebd09083c7343b7b5c760c *c7436c0d0000008b43f8ffe0c747d0b83b0d088b45048947d48b45108947d88b46088947dc8b45 *0c8947e0c747e4243c0d088b45048947e88b46048947ec8b45108947f08b450c8947f4c747f89c *5f0d088d47e48947fc8d47d089078d77f883c5148b45008b40e0eba089f6bed0df110883c5148b *4500ff60dc89f6bee0e8110883c514ff2689f6e43c0d08e43c0d08d43c0d08603c0d08143b0d08 *683a0d08cc390d0818390d0848340d08c400000025003f00d0e8110868e9110898df1108b8df11 *08c0df1108b03d0d08840000001c3d0d08000004000000000011001f008d45f43b4354730abeb8 *df11088b43fcffe08b7504c745fcf0420d0883ed048b06ebed9058e9110898df1108b8df1108c0 *df11086c3d0d08170004000000000011000f008d45f83b4354730abec0df11088b43fcffe08b75 *04c745fcdc450d0883ed048b06ebed90e993ffffff8d760089750883c504e91d02010090b83d0d *08b83d0d08b83d0d08b83d0d08b83d0d08b83d0d08b83d0d08b83d0d0800000000620000002500 *0000be3cd71108c74508f03d0d0883c508ebb78d7600c74500000000008975fc8b45048945f88b *4510894504c74508f03d0d0883ed08e91fffffff8d7600043e0d08043e0d08043e0d08043e0d08 *043e0d08043e0d08043e0d08043e0d08283d0d08c4000000250001008b46048945fc8b46088945 *10c74500583e0d0883ed04e971ecffff90583e0d08f03d0d08243d0d08c4010000250003008b75 *10c74500883e0d08ff26897500e948ecffff943e0d08943e0d08943e0d08943e0d08943e0d0894 *3e0d08943e0d08943e0d08243d0d080000000025000100243d0d0801000100130001008d45f03b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f0c745f4c83e0d0883ed10b8e0 *480e08ebdb203d0d0802000100120003008d45e83b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe08d45f8c700d46d1008897004c747f8d43e0d088b46048947fc8d47f88945f48b46 *0c8945f0c745ecfcd111088b46088945e883ed18b8e8420e08ebc283c7183b7b5c760cc7436c06 *0000008b43f8ffe0c747ec103f0d088b45108947f08b46048947f48b450c8947f8c747fc5c5f0d *088d47ec89078d77fc83c5148b45008b40ecebcb902c3d0d0803000200120001008d45e83b4354 *720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d10088970048b46102b46 *14c747fc54dc0b0889078b46088945f48d47fc8945f08b460c8945ec8b46048945e883ed18b88c *3d0d08ebc18d760083c7283b7b5c760cc7436c0a0000008b43f8ffe0c747dcbc3f0d088b450489 *47e08b45108947e48b46088947e88b450c8947ec8b460c8947f0c747f4f86a0c088b46048947f8 *8d47dc8947fc8b460c89078d77f483c5148b45008b40e8ebb390283d0d0803000200120001008d *45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46102b46148b56088955f48945f0 *8b460c8945ec8b46048945e883ed18b8483d0d08ebcd89f683c7243b7b5c760cc7436c09000000 *8b43f8ffe0c747e084400d088b45048947e48b45108947e88b46048947ec8b450c8947f08b4608 *8947f4c747f87c5f0d088d47e08947fc8b460889078d77f883c5148b45008b40e4ebb98d760089 *7500e9bce9ffff20410d0820410d0820410d0820410d0820410d0820410d0820410d0820410d08 *243d0d080000000025000100243d0d0801000100130001008d45f03b435473058b43f8ffe08d45 *f8c700d46d10088970048b46048945f0c745f454410d0883ed10b898490e08ebdb203d0d080200 *0100120003008d45e83b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700 *d46d1008897004c747f860410d088b46048947fc8d47f88945f48b460c8945f0c745ecfcd11108 *8b46088945e883ed18b8e8420e08ebc2283d0d0803000100120001008d45e83b435473058b43f8 *ffe08d45f8c700d46d10088970048b460c8945f48b46108945f08b46088945ec8b46048945e883 *ed18b8483d0d08ebd09083c7303b7b5c760cc7436c0c0000008b43f8ffe0c747d49c410d088b45 *108947d88b46088947dc8b450c8947e0c747e400420d088b45048947e88b46048947ec8b451089 *47f08b450c8947f4c747f89c5f0d088d47e48947fc8d47d489078d77f883c5148b45008b40e0eb *a6bed0df110883c5148b4500ff60dc89f6bed0e8110883c514ff2689f6b8420d08b8420d08a842 *0d083c420d08c4400d0818400d08683f0d08883e0d081c3d0d08c400000025001f00be3cd71108 *83c50c8b4500ff60f089f68b4504894500897504c745fcfcd1110883ed04e99cfd000000430d08 *00430d0800430d0800430d0800430d0800430d0800430d0800430d080000000021000000250000 *008975fcc7450044430d0883ed04e98ee7ffff89f644430d0844430d0844430d0844430d084443 *0d0844430d0844430d0844430d08703d0d082100000025000100703d0d0801000000240001008b *45048945fc8b4604894504c7450084430d0883ed04e90d03010090703d0d080200000015000100 *8d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f09043 *0d0883ed108b06ebdb83c7183b7b5c760cc7436c060000008b43f8ffe0c747ecb8430d088b4504 *8947f08b45088947f4c747f89c5f0d088977fc8d47ec89078d77f883c50c8b45008b40e0ebcee8 *430d08e8430d08e8430d08e8430d08e8430d08e8430d08e8430d08f0420d08703d0d0802000000 *250001008975fcc7450058440d0883ed04e9eef9000089f658440d0858440d0858440d0858440d *0858440d0858440d0858440d0858440d086c3d0d0802000000250003008b4504894500897504c7 *450898440d08e9b7f800008d760098440d0898440d0898440d0898440d0898440d0898440d0898 *440d0898440d086c3d0d0844000000250003008975fcc74500dc440d0883ed04e9f6e5ffff89f6 *dc440d08dc440d08dc440d08dc440d08dc440d08dc440d08dc440d08dc440d086c3d0d08440000 *00250003008b45108945fcc745001c450d0883ed04e93f0201008d76008b45108945fcc745001c *450d0883ed04e9df0201008d760034450d081c450d086c3d0d0844000000250003008b7504c745 *0060450d08ff268b460489450883c504e912f8ffff89f6743d0d0844000000240001008b450c89 *45088b460489450c83c504e9acf7ffff8b450c89750c89c6c7450088450d08ff268d76009c450d *089c450d089c450d089c450d086c450d089c450d089c450d0860450d086c3d0d08440000002500 *0f0040e91108b0e1110800e9110810e9110820e9110830e9110898df110884e91108dc450d0819 *000600000000001100ff008b7500c74500345f0d08ff2689750cc7450048e91108e959f5000090 *18460d0818460d0818460d0818460d0818460d0818460d0818460d0818460d08dc450d08830000 *00250001008b4514894504c7450854460d0883c504e97be4ffff8d760089750cc7450054df1108 *e905f50000906c460d086c460d086c460d086c460d086c460d086c460d086c460d086c460d08dc *450d0883000000250001008b4514894504c74508a8460d0883c504e927e4ffff8d7600e0450d08 *2100000024000100db4504d95c24088b4604890424d9442408d83424d95c24048b442404890424 *8b042489450483c504e99b5400008d7600e0450d0801000000240001008b55048b460489450489 *d6c74500cc460d08ff26e0450d0802000000150001008d45f03b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46088945f48b7604c745f008470d0883ed108b06ebdbbe3cd7110883c514 *8b4500ff60f089f602000100120000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *70048b46088945f48b460c8945f08b760483ed10b8c84a0d08ebd989f683c7183b7b5c760cc743 *6c060000008b43f8ffe0c747ec70470d088b45088947f08b46048947f48b450c8947f8c747fc5c *5f0d088d47ec89078d77fc83c5148b45008b40ecebcb9002000200120000008d45ec3b43547208 *83c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc54dc0b08 *8b461089078b46048945f48d47fc8945f08b460c8945ec8b760883ed14b8ec4e0d08ebc79083c7 *243b7b5c760cc7436c090000008b43f8ffe0c747e0f4470d088b46088947e48b45048947e88b45 *0c8947ec8b460c8947f0c747f4f86a0c088b46048947f88d47e08947fc8b460c89078d77f483c5 *148b45008b40e8ebb98d760002000200120000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b460c2b46108b56088955f48945f08b760483ed10b8c84a0d08ebd68d760083c7 *203b7b5c760cc7436c080000008b43f8ffe0c747e4ac480d088b45088947e88b46048947ec8b45 *0c8947f08b46088947f4c747f87c5f0d088d47e48947fc8b460889078d77f883c5148b45008b40 *e4ebbf9002000100120000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46 *048945f48b460c8945f08b760883ed10b8c84a0d08ebd989f68b45048945108b750883c50ce943 *0100008d76008b751083c514ff2688490d0874490d080000000084000000250000008b45048945 *108b750883c50ce9130100008d76008b751083c514ff26b8490d08a4490d080000000084000000 *25000000f8450d08840000002400010083c7103b7b5c760cc7436c040000008b43f8ffe0c747f4 *40490d088b45108947f88b45088947fc8b450c89078b450c3b46047c1b8d47f48945fc8b460489 *45f88d47f4894510c74500d4490d08eb198d47f48945fc8b450c8945f88d47f4894510c74500a4 *490d0883ed08b85c4a0e08eba089f68b46088945048b55108b460489451089d6c74500e0490d08 *ff2689f6bed0df110883c5148b4500ff60dc89f6be10e9110883c514ff2689f6804a0d08804a0d *08704a0d08544a0d08e4480d0848480d08a4470d0858470d08e8450d088400000025001100e845 *0d0809000200020000000e0011008d45ec3b435473058b43fcffe08b46088945f88975fc8b5504 *8b460489450489d6c745f4b84a0d0883ed0c8b06ebdc90be3cd7110883c5188b4500ff60f089f6 *43000000240000008b45082b46048945088b750c8b450489450c83c508eba19003000100120000 *008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945ec8b46108945f08b *46048945f48b7608c745e8104b0d0883ed188b06ebcf83c71c3b7b5c760cc7436c070000008b43 *f8ffe0c747e8304b0d088b45088947ec8b45108947f08b46048947f48b450c8947f8c747fc5c5f *0d088d47e889078d77fc83c5188b45008b40ecebc58d7600210000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe08b4604034504c747fc54dc0b0889078d77fc83c508b8d46d1008 *ebe201000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460889 *45f48b7604c745f0c44b0d0883ed108b06ebdb03000200120000008d45ec3b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8fc4b0d088b460889 *47fc8b461489078b460c8945f48d47f88945f08b46108945ec8b760483ed14b8ec4e0d08ebc18d *760083c7283b7b5c760cc7436c0a0000008b43f8ffe0c747dc344c0d088b45048947e08b451089 *47e48b46088947e88b450c8947ec8b460c8947f0c747f4f86a0c088b46048947f88d47dc8947fc *8b460c89078d77f483c5188b45008b40e8ebb3908b46048945148b750483c50ce9eb0100008d76 *0003000100120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945 *f48b46088945f08b46108945ec8b760483ed14b8ec4e0d08ebd38b45088945148b750483c50ce9 *970100008d76008b751483c518ff26584d0d08444d0d08000000008500000025000000f8450d08 *85010000240001008b450c2b46048b55148955fc8945f8897510c74500744d0d0883ed08e9bbfc *00008d76008b45088945148b750483c50ce9370100008d76008b751483c518ff26b84d0d08a44d *0d08000000008500000025000000f8450d0885010000240001008b45102b46048b55148955fc89 *45f8897510c74500d44d0d0883ed08e95bfc00008d7600f8450d08850000002400010083c7143b *7b5c760cc7436c050000008b43f8ffe0c747f00c4d0d088b45048947f48b45108947f88b451489 *47fc8b450c89078b450c3b46047c1a8d47f08945148b55108b460489451089d6c74500e04d0d08 *eb108d47f08945148b7510c74500804d0d088b06ebaa8b46088945088b55148b460489451489d6 *c74500104e0d08ff2689f6bed0df110883c5188b4500ff60dc89f6be20e9110883c518ff2689f6 *a44e0d08a44e0d08944e0d08784e0d08f04c0d08904c0d086c4b0d08f84a0d08ec450d08850000 *0025000900ec450d0812000300020000000e0009008d45ec3b435473058b43fcffe08975f88b46 *088945fc8b55088b460489450889d6c745f4dc4e0d0883ed0c8b06ebdc90210000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe08b45042b4604c747fc54dc0b0889078d77fc83c5 *08b8d46d1008ebe201000000240000008b55048b460489450489d6c74500244f0d08ff26020000 *00150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604 *c745f05c4f0d0883ed108b06ebdb000000002400000083c7083b7b5c760cc7436c020000008b43 *f8ffe08b460489c2c1ea1f01d0d1f8c747fc54dc0b0889078d77fc83c504b8d46d1008ebdc89f6 *01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f4 *b04f0d0883ed0c8b06ebe189f60000000024000000c74500f8e811088b46048945fc83ed04e983 *fb00008d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b7604c745f424500d0883ed0c8b06ebe189f60000000024000000c74500f0e811088b46048945 *fc83ed04e92ffb00008d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b7604c745f478500d0883ed0c8b06ebe189f68b750483c528e9cdb60200900200 *0100120000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46 *0c8945f08b760483ed10b8685a0d08ebd989f683c7103b7b5c760cc7436c040000008b43f8ffe0 *c747f4d8500d088b45148947f88b46048947fc8b452489078d47f4894528c7452448e911088b75 *0883c520b814161008ebcc89f602000200120000008d45f03b435473058b43f8ffe08d45f8c700 *d46d10088970048b460c0346108b56048955f48945f08b760883ed10b8345c0d08ebd68d760004 *000200120000008d45ec3b4354720883c7143b7b5c760cc7436c050000008b43f8ffe08d45f8c7 *00d46d1008897004c747f05c510d088b46088947f48b460c8947f88b46148947fc8b461889078d *47f08945f48b46048945f08b761083ed14b814161008ebbb9000000200140000008d45f43b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8244b0e08ebe28d760083 *c7303b7b5c760cc7436c0c0000008b43f8ffe0c747d49c510d088b45148947d88b45048947dc8b *450c8947e08b45088947e48b45248947e88b45108947ecc747f004520d088b45248947f4c747fc *c86a0c088d47f089078d47d48945288d47fc8945248b750883c520b814161008eba18d76000200 *0200120000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b461003460c8b56 *048955f48945f08b760883ed10b8345c0d08ebd68d760004000200120000008d45ec3b43547208 *83c7143b7b5c760cc7436c050000008b43f8ffe08d45f8c700d46d1008897004c747f0ac520d08 *8b46088947f48b460c8947f88b46148947fc8b461889078d47f08945f48b46048945f08b761083 *ed14b814161008ebbb9000000200140000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b46048945f483ed0cb8244b0e08ebe28d7600060500002400000083c7303b7b5c760c *c7436c0c0000008b43f8ffe08b55182b5604c747d4ec520d088b45148947d88b450c8947dc8b45 *088947e08b45048947e48b45108947e88957ecc747f054530d088957f4c747fcc86a0c088d47f0 *89078d47d48945188d47fc8945148b750483c510b814161008eba18d760005000200120000008d *45dc3b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e08b46108945e48b460c *8945e88b461c8945ec8b46088945f08b46188945f48b7604c745dc88530d0883ed248b06ebbd89 *f605000200120000008d45ec3b4354720883c7203b7b5c760cc7436c080000008b43f8ffe08d45 *f8c700d46d1008897004c747e404540d088b46048947e88b46088947ec8b460c8947f08b461089 *47f48b46148947f88b46188947fc8b461c89078d47e48945f4c745f048e911088b761483ed14b8 *14161008eba889f606000200120000008d45ec3b4354720883c7203b7b5c760cc7436c08000000 *8b43f8ffe08d45f8c700d46d1008897004c747e45c540d088b46048947e88b460c8947ec8b4610 *8947f08b46148947f48b46188947f88b461c8947fc8b462089078d47e48945f48b46088945f08b *761883ed14b814161008eba98d760002000200120000008d45f03b435473058b43f8ffe08d45f8 *c700d46d10088970048b461003460c8b56048955f48945f08b760883ed10b8345c0d08ebd68d76 *0004000200120000008d45ec3b4354720883c7143b7b5c760cc7436c050000008b43f8ffe08d45 *f8c700d46d1008897004c747f054550d088b46088947f48b460c8947f88b46148947fc8b461889 *078d47f08945f48b46048945f08b761083ed14b814161008ebbb9000000200140000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8244b0e08ebe28d76 *00060500002400000083c7303b7b5c760cc7436c0c0000008b43f8ffe08b5518035604c747d494 *550d088b45148947d88b450c8947dc8b45088947e08b45048947e48b45108947e88957ecc747f0 *fc550d088957f4c747fcc86a0c088d47f089078d47d48945188d47fc8945148b750483c510b814 *161008eba18d760005000200120000008d45dc3b435473058b43f8ffe08d45f8c700d46d100889 *70048b46148945e08b46108945e48b460c8945e88b461c8945ec8b46088945f08b46188945f48b *7604c745dc30560d0883ed248b06ebbd89f605000200120000008d45ec3b4354720883c7203b7b *5c760cc7436c080000008b43f8ffe08d45f8c700d46d1008897004c747e4ac560d088b46048947 *e88b46088947ec8b460c8947f08b46108947f48b46148947f88b46188947fc8b461c89078d47e4 *8945f4c745f048e911088b761483ed14b814161008eba889f606000200120000008d45ec3b4354 *720883c7203b7b5c760cc7436c080000008b43f8ffe08d45f8c700d46d1008897004c747e40457 *0d088b46048947e88b460c8947ec8b46108947f08b46148947f48b46188947f88b461c8947fc8b *462089078d47e48945f48b46088945f08b761883ed14b814161008eba98d760002000200120000 *008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460c0346108b56048955f489 *45f08b760883ed10b8345c0d08ebd68d760004000200120000008d45ec3b4354720883c7143b7b *5c760cc7436c050000008b43f8ffe08d45f8c700d46d1008897004c747f0fc570d088b46088947 *f48b460c8947f88b46148947fc8b461889078d47f08945f48b46048945f08b761083ed14b81416 *1008ebbb9000000200140000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *46048945f483ed0cb8244b0e08ebe28d76000a6100002400000083c7303b7b5c760cc7436c0c00 *00008b43f8ffe08b45243b46047d6e85c07858c747d43c580d088b45148947d88b45048947dc8b *450c8947e08b45088947e48b45248947e88b45108947ecc747f0a4580d088b45248947f4c747fc *c86a0c088d47f089078d47d48945288d47fc8945248b750883c520eb5fc747d480570d088b4520 *8947d88b4518eb10c747d4d8540d088b45208947d88b451c8947dc8b45148947e08b45048947e4 *8b450c8947e88b45088947ec8b45248947f08b45108947f48d47d4894528c7452448e911088b75 *0883c52083ef0cb814161008e931ffffff8d76008b7528c74500d8580d08ff2600000000000000 *00bc590d0830520d08000000000a210000250000008b46088945048b46048945148b55108b460c *89451089d6c74500e4590d08ff268b45240346088b56048955288945248b751483c524eb4d90be *00e9110883c528e973ad02008d76001c5a0d081c5a0d081c5a0d081c5a0d08045a0d08e4590d08 *0c510d08c4500d08e4450d080a20000025000100e4450d0809000200080000000b0001008d45dc *3b435473058b43fcffe08b46208945e08b461c8945e48b46188945e88b46148945ec8975f08b46 *108945f48b460c8945f88b46088945fc8b55048b460489450489d6c745dc585a0d0883ed248b06 *ebb8908b750483c514e9d5ac02009002000100120000008d45f03b435473058b43f8ffe08d45f8 *c700d46d10088970048b46088945f48b460c8945f08b760483ed10b8685a0d08ebd989f683c710 *3b7b5c760cc7436c040000008b43f8ffe0c747f4d05a0d088b45148947f88b46048947fc8b4510 *89078d47f4894514c7451048e911088b750883c50cb814161008ebcc89f602000200120000008d *45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460c0346108b56088955f48945f0 *8b760483ed10b8345c0d08ebd68d760083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0 *545b0d088b450c8947f48b46088947f88b45108947fc8b460c89078d47f08945148b4604894510 *8b750883c50cb814161008ebc7908b46048945148b750c83c510eb4e89f6be30e9110883c514e9 *a7ab02008d7600e85b0d08e85b0d08e85b0d08e85b0d08d85b0d088c5b0d08045b0d08bc5a0d08 *f0450d080501000025000100f0450d0809000200030000000b0001008d45f03b435473058b43fc *ffe08b460c8945f48b46088945f88975fc8b55048b460489450489d6c745f0245c0d0883ed108b *06ebd68d760089750cc74508000000008b750483c508e9e7fdffff8d76006c5c0d086c5c0d086c *5c0d086c5c0d086c5c0d086c5c0d086c5c0d086c5c0d0800000000c3000000250000008975fc8b *450c8945f88b7508c74500b05c0d0883ed08e9fdedffff90b05c0d08b05c0d08b05c0d08b05c0d *08b05c0d08b05c0d08b05c0d08b05c0d08000000008300000025000000f4450d08030000002400 *01008b450c8945fc8b460489450cc74500f85c0d0883ed04e9c5cdffff908b7504c74508045d0d *0883c508ff269089750cc74508000000008b750483c508e923fdffff8d7600305d0d08305d0d08 *305d0d08305d0d08305d0d08305d0d08305d0d08305d0d0800000000c3000000250000008975fc *c745f8ffffff7f8b7508c74500745d0d0883ed08e938edffff745d0d08745d0d08745d0d08745d *0d08745d0d08745d0d08745d0d08745d0d080000000083000000250000008b4514894504c74508 *bc5d0d0883c504e913cdffff8d76000000000000000000bc5d0d08205d0d08f4450d0845000000 *2500010081c7980000003b7b5c760cc7436c260000008b43f8ffe0c7876cffffff28470d088b45 *04898770ffffff8b4508898774ffffffc78778ffffffc84a0d088d876cffffff89877cffffff8d *4784894780c74784ec4e0d088d876cffffff8947888d8778ffffff89478cc74790784f0d088b45 *048947948d876cffffff894798c7479cf04f0d088d47908947a0c747a844500d088d479c8947ac *c747b4c86a0c088d47a88947b8c747bc98500d088d479c8947c0c747c8c86a0c088d47bc8947cc *c747d0685a0d088d47908947d48d479c8947d88d47b48947dc8d47c88947e08977e48d47f48947 *e88b450c8947ec8b45108947f0c747f4345c0d088d47d08947f88b450c8947fc8b451089078d47 *d089450c8d8778ffffff894510c74500f05d0d088b06e9edfeffffa8460d0854460d08f05d0d08 *f05d0d08dc450d08050000002500ff0001000000020000008b4500ff60f089f601000000090000 *008b4500ff60f0909001000000020001008b4500ff60ec89f601000000090001008b4500ff60ec *909001000100050003008b4500ff60e489f601000100090003008b4500ff60e490900200000004 *0004008b4500ff60e089f602000000090004008b4500ff60e09090000000000a0005008b4500ff *60dc90902140232425262a2b2e2f3c3d3e3f5c5e7c3a2d7e008d760000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8459e02 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c45f0d08 *83ed10b84cce0b08ebbf902c3b28295b5d7b7d600089f600000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d59d02008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f040600d0883ed10b84c *ce0b08ebbf90a4e8110894e91108e4e91108b0600d0800000200180007008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8619d02008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f4e4e91108c745f0dce9110883ed10b8dc33 *0e08ebbf90d4df110824610d080400010000000000110001008d45f83b4354730abe04e011088b *43fcffe08b45008945fcc74500d4df1108c745f880d1110883ed08b82cf50b08ebe0a4e81108fc *e9110804ea110868610d0800000200180007008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8a99c02008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f404ea1108c745f0fce9110883ed10b8dc330e08ebbf9094e9110880d8 *110868d61108ece911080cea1108dc610d08040001000000000011001f008d45fc3b4354720b81 *c7d00000003b7b5c7611c7436c34000000be2ce011088b43fcffe0c78734ffffffa0630d088b45 *00898738ffffffc78740ffffffd8630d088b4500898744ffffffc7874cffffff10640d088b4500 *898750ffffffc78758ffffff48640d088b450089875cffffffc78764ffffff80640d088b450089 *8768ffffffc78770ffffffb8640d088b4500898774ffffffc7877cfffffff0640d088b45008947 *80c7478898730d088b450089478c8d8734ffffff8947908d8740ffffff8947948d874cffffff89 *47988d8758ffffff89479c8d8764ffffff8947a08d8770ffffff8947a48d877cffffff8947a8c7 *47ac30740d088b45008947b0c747b868740d088b45008947bcc747c4a0740d088b45008947c8c7 *47d040750d088d8734ffffff8947d48d8740ffffff8947d88d874cffffff8947dc8d8758ffffff *8947e08d8764ffffff8947e48d8770ffffff8947e88d877cffffff8947ec8d47ac8947f08d47b8 *8947f48d47c48947f8c747fca05e0c088d47d089078d47888945008d47fc8945fc83ed04b83851 *0c08e98cfeffff89f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *897004c745f47cea11088b760483ed10b808121008ebde8d760001000100130000008d45f03b43 *5473058b43f8ffe08d45f8c700d46d1008897004c745f46cea11088b760483ed10b808121008eb *de8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745 *f45cea11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43 *f8ffe08d45f8c700d46d1008897004c745f44cea11088b760483ed10b808121008ebde8d760001 *000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f43cea1108 *8b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45 *f8c700d46d1008897004c745f42cea11088b760483ed10b808121008ebde8d7600010001001300 *00008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f41cea11088b760483ed *10b808121008ebde8d760004000100010000000c0000008d45fc3b4354720883c70c3b7b5c760c *c7436c030000008b43fcffe0c747f8e4bb0b088b45008947fcc70704d211088d47f88945008b76 *0483ed04b808121008ebd889f6e8610d0801000100130001008d45f03b4354720883c7083b7b5c *760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc2c650d088b460489078d *47fc8945f4beece9110883ed10b808121008ebd18d760001000100130000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f43cec11088b760483ed10b808121008ebde8d76 *0001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f42cec *11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d1008897004c745f41cec11088b760483ed10b808121008ebde8d760001000100 *130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f40cec11088b7604 *83ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700 *d46d1008897004c745f4fceb11088b760483ed10b808121008ebde8d760001000100130000008d *45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4eceb11088b760483ed10b808 *121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *7004c745f4dceb11088b760483ed10b808121008ebde8d760001000100130000008d45f03b4354 *73058b43f8ffe08d45f8c700d46d1008897004c745f4cceb11088b760483ed10b808121008ebde *8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4 *bceb11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8 *ffe08d45f8c700d46d1008897004c745f4aceb11088b760483ed10b808121008ebde8d76000100 *0100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f49ceb11088b *760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f48ceb11088b760483ed10b808121008ebde8d760001000100130000 *008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f47ceb11088b760483ed10 *b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f46ceb11088b760483ed10b808121008ebde8d760001000100130000008d45f03b *435473058b43f8ffe08d45f8c700d46d1008897004c745f45ceb11088b760483ed10b808121008 *ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c7 *45f44ceb11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b *43f8ffe08d45f8c700d46d1008897004c745f43ceb11088b760483ed10b808121008ebde8d7600 *01000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f42ceb11 *088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d *45f8c700d46d1008897004c745f41ceb11088b760483ed10b808121008ebde8d76000100010013 *0000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f40ceb11088b760483 *ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d1008897004c745f4fcea11088b760483ed10b808121008ebde8d760001000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4ecea11088b760483ed10b80812 *1008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *04c745f4dcea11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473 *058b43f8ffe08d45f8c700d46d1008897004c745f4ccea11088b760483ed10b808121008ebde8d *760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4bc *ea11088b760483ed10b808121008ebde8d760003000100200000000b0000008b450083e84083f8 *1f0f87c4000000ff2485884811088bb68000000083c5048b06ffe08b767cebf48b7678ebef8b76 *74ebea8b7670ebe58b766cebe08b7668ebdb8b761cebd68b7618ebd18b7608ebcc8b7610ebc78b *7604ebc28b7614ebbd8b760cebb88b7664ebb38b7660ebae8b765ceba98b7658eba48b7654eb9f *8b7650eb9a8b764ceb958b7648eb908b7644eb8b8b7640eb868b763ceb818b7638e979ffffff8b *7634e971ffffff8b7630e969ffffff8b762ce961ffffff8b7628e959ffffff8b7624e951ffffff *8b7620e949ffffffbe78d6110883c5048b45008b40e8e93bffffff89f601000000240000008b45 *048b560489550489c683c504e9fdfeffff9004000100010000000c0000008d45fc3b435473058b *43fcffe08b55008b460489450089d6c745fc3c6c0d0883ed048b06ebe589f60100000024000000 *837e045e750d8b750483c508b8a05e0c08ffe0be78d6110883c5088b45008b40e8ebee90040001 *00010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc8c6c0d *0883ed048b06ebe589f6e4610d0808000000120003008d45f03b4354720b81c7dc0100003b7b5c *760cc7436c770000008b43f8ffe08d45f8c700d46d1008897004c78728feffff7c650d088b4604 *89872cfeffffc78734feffffd0650d088b4604898738feffffc78740feffff08660d088b460489 *8744feffffc7874cfeffff40660d088b4604898750feffffc78758feffff78660d088b46048987 *5cfeffffc78764feffffb0660d088b4604898768feffffc78770feffffe8660d088b4604898774 *feffffc7877cfeffff20670d088b4604898780feffffc78788feffff58670d088b460489878cfe *ffffc78794feffff90670d088b4604898798feffffc787a0feffffc8670d088b46048987a4feff *ffc787acfeffff00680d088b46048987b0feffffc787b8feffff38680d088b46048987bcfeffff *c787c4feffff70680d088b46048987c8feffffc787d0feffffa8680d088b46048987d4feffffc7 *87dcfeffffe0680d088b46048987e0feffffc787e8feffff18690d088b46048987ecfeffffc787 *f4feffff50690d088b46048987f8feffffc78700ffffff88690d088b4604898704ffffffc7870c *ffffffc0690d088b4604898710ffffffc78718fffffff8690d088b460489871cffffffc78724ff *ffff306a0d088b4604898728ffffffc78730ffffff686a0d088b4604898734ffffffc7873cffff *ffa06a0d088b4604898740ffffffc78748ffffffd86a0d088b460489874cffffffc78754ffffff *106b0d088b4604898758ffffffc78760ffffff4c6b0d088b4608898764ffffff8b460c898768ff *ffff8b461089876cffffff8b4614898770ffffff8b4618898774ffffff8b461c898778ffffff8b *462089877cffffff8d8734feffff8947808d8740feffff8947848d874cfeffff8947888d8758fe *ffff89478c8d8764feffff8947908d8770feffff8947948d877cfeffff8947988d8788feffff89 *479c8d8794feffff8947a08d87a0feffff8947a48d87acfeffff8947a88d87b8feffff8947ac8d *87c4feffff8947b08d87d0feffff8947b48d87dcfeffff8947b88d87e8feffff8947bc8d87f4fe *ffff8947c08d8700ffffff8947c48d870cffffff8947c88d8718ffffff8947cc8d8724ffffff89 *47d08d8730ffffff8947d48d873cffffff8947d88d8748ffffff8947dc8d8754ffffff8947e0c7 *47e45c6c0d088d8760ffffff8947e8c747eca05e0c088d47e48947f0c747f4bc6c0d088d47ec89 *47f8c747fca05e0c088d47f489078d8728feffff8945f48d47fc8945f083ed10b838510c08e988 *fcffff8d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f483ed0cb804580e08ebe28d760083c7083b7b5c760cc7436c020000008b43f8ffe0 *817e04ffff1000760fbe80d8110883c50483ef088b06ebe68b4604c747fc3cdc0b0889078d77fc *83c504b8d46d1008ebcd8d7600e0610d08000000002400010083c7083b7b5c760ec7436c020000 *00b8f0371008ffe081feffff1000760fbe80d8110883c50483ef088b06ebe7c747fc3cdc0b0889 *378d77fc83c504b8d46d1008ebd1908b46048943048b7608c7450010710d08e97bdf02008d7600 *54710d08bc700d08e0610d080000000025000100e0610d0801000100130001008d45f43b435473 *058b43f8ffe08d45f8c700d46d10088970048b7604c745f480710d0883ed0c8b06ebe189f6e061 *0d08020000002400010083c7183b7b5c761cc7436c06000000c74500c4710d08c74320ff000000 *b8b03d1008ffe0c747ec8c710d088b45048947f0c747f8e4bb0b088d47ec8947fcc70704d21108 *8b75088d47f889450883c504b808121008ebcb90817e04ffff10007f07b8c4710d08ffe0be78d6 *110883c50c8b45008b40e8ebeee0610d08020000002400010085f67f07b8c4710d08ffe0be78d6 *110883c50c8b45008b40e8ebee90c74308ffff10008b46048943048b7608c7450048720d08e9b8 *dd020064720d081c720d08e0610d080200000025000100897500c745fc94720d0883ed04ff2690 *94720d0894720d08e0610d080100000025000100e0610d0804000100020000000e0001008d45f0 *3b435473058b43fcffe08b45008945f8c745f4a4e911088b46088945f08b4604894500c745fcb8 *720d0883ed10b8f84c0e08ebd490dc610d0804000100010000000c0003008d45fc3b4354720883 *c7183b7b5c760cc7436c060000008b43fcffe0c747ec90700d088b45008947f0c747f8c8720d08 *8b46048947fc8d47ec89078b45008945fc8d47f889450083ed04b8604e0e08ebc98d7600897500 *e9ccddfeff64730d0864730d0864730d0864730d0864730d08e4610d080100000025000100dc61 *0d080800000012001f008d45e83b4354720883c72c3b7b5c760cc7436c0b0000008b43f8ffe08d *45f8c700d46d1008897004c747d8f06c0d088b46048947dc8b46088947e08b460c8947e48b4610 *8947e88b46148947ec8b46188947f08b461c8947f48b46208947f8c747fc10730d088b46048907 *8d47fc8945ec8d47d88945f4be0cea1108c745f08c730d0883ed18b808121008eb8d8d76000100 *0100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4acea11088b *760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f49cea11088b760483ed10b808121008ebde8d760001000100130000 *008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f48cea11088b760483ed10 *b808121008ebde8d76000a000000240000008b460483e82283f854773eff2485084911088b7510 *83c52c8b06ffe08b7514ebf48b7518ebef8b751cebea8b7520ebe58b7524ebe08b7528ebdb8b75 *04ebd68b7508ebd18b750cebccbe78d6110883c52c8b45008b40e8ebc18d7600040001000a0000 *000b0000008d45d83b435473058b43fcffe08b46288945dc8b46248945e08b46208945e48b461c *8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b46088945fc8b55008b4604 *89450089d6c745d8d8740d0883ed288b06ebaf4cec11089c750d0800000200180001008d45f43b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e87d880200 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f450d1110883ed0cb8006a0e08 *ebc6f8e0110800760d081600040000000000110001008d45bc3b4354730abe44e011088b43fcff *e08b45008b7004c745fc987d0d0883ed048b06ebea89f6230000002400000083c7183b7b5c760c *c7436c060000008b43f8ffe08b4d0481e1ff0300008b460c8b54880cc747ece4bb0b088b450889 *47f08b450c8947f4c747f87cdc0b088d47ec8947fc89178b560c8d47f889448a0cbe0cd2110883 *c5108b4500ebb58d760044000000240000008b45048b74b00cc7450444760d0883c504ff269066 *01000024000000c74504f6ffffff897500897510c74508ac760d08e9ff8200008d760066010000 *240000008b46042345103b450874053b45087c0489c6ebc88b460489c6237504ebf489f6440000 *00240000008b450c8945f48b46248945fc8b46188945008b46208945088b7610c745f8ec760d08 *83ed10e9ca9a020089f604000000240000008b4508897004c7450014770d08ff2690092e000024 *00000083c7303b7b5c760ec7436c0c000000b8f0371008ffe08b4524408944240889f183c9018b *551801d2c747d41c810d088b45108947d88b450c8947dc8b45208947e08b45088947e48b450489 *47e8c747ec000000008957f08b45148947f4894ff88b451c8947fc8b44240889078d77d483c528 *b8d46d1008eb9b8d7600092e000024000000c745fc010000008b45148945f8c7450060770d0883 *ed08e9e081000005000600120000008d45c83b4354720883c7303b7b5c760cc7436c0c0000008b *43f8ffe08d45f8c700d46d10088970048b4e20418b46188945f48b46048945f08b461c8945ec8b *46248945e88b462c8945e48b46088945e08b460c8945dc8b46108945d88b46148945d43b4e2474 *5b3b4de87d568b55f442c747d41c810d088b45e08947d88b45dc8947dc8b45f08947e08b45d889 *47e48b45d48947e8894fec8b45e88947f08b46288947f48b45e48947f88b45ec8947fc89178d77 *d483ed08b8d46d1008e958ffffff83ed3083ef30b8e4770d08e948ffffff89f6e6050000240000 *008b4d048b560c8b451489448a0cbe0cd2110883c51cff6500e8030000240000008b4d048b560c *8b451889448a0c8b55108b45208b74900cc74508e4780d0883c508ff26908b55108b45288b7490 *0cc7450804790d0883c508ff2689f6ca0d00002400000083c70c3b7b5c761cc7436c03000000c7 *450048790d08c74320ff000000b8b03d1008ffe03b751c741ac747f87cdc0b088b45148947fc8b *452089078d47f8894520eb18c747f87cdc0b088b45148947fc8b452489078d47f88945248b7504 *83c520b8647a0d08ebbaca0d0000240000008b46042345183b451074053b45107c0789c6e979ff *ffff8b460489c623750cebf18d7600ca090000240000008b45188945fc8b462489450c8b461889 *45108b46208945188b7610c74500b8790d0883ed08e9fa97020089f68a0f000024000000897514 *8b46048945188b7508c74500e4790d08ff268d76008b46088945288b7604c74500187a0d08ff26 *89f6307a0d0828790d08000000008a0f00002500000016000400020005000b0000008d45d83b43 *5473058b43fcffe08975e48b46088945e88b461c8945ec8b46188945f08b46148945f48b461089 *45f88b460c8945fc8b55088b460489450889d6c745e0587a0d0883ed208b06ebbe8d7600050000 *00240000008b750483c504e981fcffff90f2e107002400000083c7503b7b5c760cc7436c140000 *008b43f8ffe08b553081e2ff0300008b460c8b4c900cc747b408780d088b453c8947b88b452089 *47bc8b451c8947c08b45188947c48b45148947c88b45388947cc8b45348947d08b45308947d48b *452c8947d88b45288947dc8b45248947e0c747e4647a0d088b453c8947e88d47b48947ec8b450c *8947f08b45108947f48b45088947f88b45048947fc8917894d30c7452c00d21108c7452800d211 *088d47b48945388d77e4c74534bc7a0d0883c528b8647a0d08e94afffffff1f00300240000008b *45388b44b00c89750089c6c745fcd07a0d0883ed04ff26f1f0030024000000c745fcf6ffffff8b *452c8945f8c74500a07b0d0883ed08e9047e000000760d08b3c30f002400010083c7103b7b5c76 *0cc7436c040000008b43f8ffe08b45143b460474143b46047c0fbef8e0110883c55083ef108b06 *ebe2c747f46c8f0d08c747f854ec1108c747fc5cec11088b450889078b45142b45048b4d408d57 *f48954810c83c508b8c07b0d08ebae00760d08b3c30f002400010083c7103b7b5c760cc7436c04 *0000008b43f8ffe08b45143b460474143b46047c0fbef8e0110883c55083ef108b06ebe2c747f4 *6c8f0d08c747f854ec1108c747fc5cec11088b450889078b45142b45048b4d408d57f48954810c *83c508b8c07b0d08ebae00760d08d2e10700240001008b46043b451074233b45107d148945008b *751cc745fc587c0d0883ed048b06ffe0bef8e0110883c54cebf28b46048945008b751cc745fce8 *7b0d08ebdd8d760000760d08f1f00300240001008975008b751cc745fcc87c0d0883ed04ff2689 *f600760d0830f801002400010081fe00040000750d8b750883c530b848770d08ffe081feff0300 *007feb8b450425ff03000089750889450085c0751dc7430400d21108be00040000c745fc147d0d *0883ed04b818431008ebc783ed04b8c07b0d08ebbd89f600760d08030000002400010083c7303b *7b5c760cc7436c0c0000008b43f8ffe08b462c8d1485000000008b460c8945008b4e2841c747d4 *1c810d088b46048947d88b46088947dc8b45008947e08b46108947e48b46148947e88b46188947 *ec8b461c8947f08b46208947f48b46248947f8894ffc8b462c8907395628746b3956287c668b46 *1c034618c745c8f6ffffff8945c48945d08d47d48945d48b46148945d88b46108945dc8b460889 *45e08b46048945e48b46248945e88b46208945ec8b461c8945f08b46188945f4894df88b462c89 *45fcc745cc347d0d0883ed3cb8e0f90d08e935ffffff8d77d483ed04b848770d08e925ffffff90 *90900b00030000000000110000008d45e43b4354730abe4ce011088b43fcffe08b45008b7004c7 *4500dc800d088b06ebed90be00d2110883c5108b4500ff60f089f68b45048945108b750883c510 *e9c30000008d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec8c6b10088b450889 *47f08b45048947f4c747f87cdc0b088b45108947fc8d47ec89078d77f883c5148b45008b40eceb *cb90dc7e0d08c87e0d0800000000840000002500000004000000240000008b46048945fc8b4510 *8945f88b46088945108b750cc74500387f0d0883ed0ce9b09602008b46088945008b7604c745fc *407f0d0883ed04ff268d7600647f0d08b87e0d0800000000030000002500000004000100020000 *000e0000008d45e43b435473058b43fcffe08975f88b46088945fc8b55008b460489450089d6c7 *45f4907f0d0883ed0c8b06ebdc90bee0d0110883c504ff65009083c7083b7b5c760cc7436c0200 *00008b43f8ffe0c747fc94b90b088b460489078d77fc83c5048b4500ebe790d87f0d08cc7f0d08 *000000000000000025000000c40000002400000083c70c3b7b5c760cc7436c030000008b43f8ff *e08b550c81e2ff0300008b460c8b54900cc747f89c7f0d088b45108947fc8b4504890789550c8d *77f8c7451018800d0883c50cb89c7f0d08ebc58d760084000000240000008b45088b74b00cc745 *0020800d08ff266602000024000000c74504f6ffffff897500897514c7450878800d08e9377900 *008d760066020000240000008b46042345143b450874053b45087c0489c6ebc88b460489c62375 *04ebf489f601000000240000008b45048945e88b46248945f08b46188945f48b46148945f88b46 *0c8945fc8b46208945008b7610c745ecb4800d0883ed1ce9f690020090900500060001000000ff *6500900500060009000000ff6500904d617962652e66726f6d4a7573743a204e6f7468696e6700 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8dd7c02008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f02c810d0883ed10b84cce0b08ebbf9064ec1108a8810d0800000200180001008d *45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e871 *7c02008d47f8894604c706245b10088d55f8c702d46d1008894204be64ec1108c745f418820d08 *83ed0c8b06ebc489f6000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747 *fcd4f10c088b460889078d77fc83c504b8d46d1008ebe590909064ec110848820d080000020018 *0001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e8d17b02008d47f8894604c706245b10088d55f8c702d46d1008894204be64ec1108c745f4 *b8820d0883ed0c8b06ebc489f6000000002400000083c7083b7b5c760cc7436c020000008b43f8 *ffe0c747fcd4f10c088b460c89078d77fc83c504b8d46d1008ebe5909090040001000000000011 *0000008d45fc3b4354730abe80e011088b43fcffe08b7500c74500dc830d088b06ebf0be00d211 *0883c5048b4500ff60f089f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46048945f483ed0cb8f4820d08ebe28d7600010000002400000083c7203b7b5c *760cc7436c080000008b43f8ffe0c747e42c830d088b45048947e8c747f054dc0b088b460c8947 *f4c747f87cdc0b088d47f08947fc8d47e489078d77f883c5088b45008b40ecebc489f68b460889 *45008b7604c745fc60830d0883ed04ff268d7600b0830d0814830d080000000000000000250000 *0017000400000000001100000083c7243b7b5c7611c7436c09000000be84e011088b43fcffe0c7 *47e0dc840d088b45048947e4c747ecb8850d088b45048947f08d47e08947f48b45088947f88b45 *008947fc8b450c89078d47ec89450c83c50cb88ce80b08ebbd89f600000000240000008b460483 *f87a7776ff24855c4a1108bed4e3110883c504e96ce90200be08e41108ebf1bef8e31108ebeabe *cce31108ebe3bef4e31108ebdcbef0e31108ebd5bee8e31108ebcebedce31108ebc7bed8e31108 *ebc0be28da1108ebb9bee4e31108ebb2be04e41108ebabbe00e41108eba4bed0e31108eb9dbefc *e31108eb96beece31108eb8f8d760001000100130000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b7604c745f44c840d0883ed0c8b06ebe189f6e9ab0000008d7600040000 *002400000083c7183b7b5c7615c7436c06000000c74320fe000000b8b03d1008ffe0c747ecece8 *0b088b450c8947f08b45108947f48b45088947f88977fc8b450489078d77ec83c5148b4500ebd2 *8d760004000000240000008975fcc7450018850d0883ed04e93afdfeff89f60400000024000000 *8b46048945fcc745006c850d0883ed04e907e800008d760008850d080000000000000000000001 *00050000000b0000008d45e83b435473058b43fcffe08b46148945f08b46108945f48b460c8945 *f88b46088945fc8b7604c745ec88850d0883ed148b06ebd590900300020000000000110000008b *45008944240883c504e8610ff7ff8b5424088910ff650038860d08000000000000000000000100 *0000000011000000e83b0ff7ff8b30ff650089f6e9efffffff9090900400010000000000110000 *0083c7183b7b5c7611c7436c06000000be90e011088b43fcffe0c747ec0c870d088b45008947f0 *c747f8cc870d088b45008947fc8d47ec89078d77f883c5048b4500ebd49001000100130000008d *45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4a0d711088b760483ed10b808 *121008ebde8d7600000000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *98860d088b46248947fc8d47f88945008b761883ed04b808121008ebde01000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f4d0860d0883ed0c8b06eb *e189f68b750883c50cff65008d76008b450489450883c508e986fafeff89f644870d0838870d08 *00000000020000002500000003000000240000008b45048945008b450c8945fc8b7608c7450468 *870d0883ed08e9868e020089f603000000240000008b7604c7450070870d08ff26030000002400 *00008b450c89750c89c6c7450098870d08ff268d76000b000300020000000e0000008d45f03b43 *5473058b43fcffe08b46088945fc8b55048b460489450489d6c745f8ac870d0883ed0cb81c0910 *08ebdc901600040000000000110000008d45f03b4354730abe94e011088b43fcffe08b7508c745 *fc90880d0883ed08b81c091008ebea89f68b750483c514ff65008d7600030000002400000083fe *04750a83c504b808880d08ffe08b450889450c83c50cb8d8810c08ebee90c7450444880d0883c5 *04e9b9fdffff9064880d0830880d0800000000040000002500000003000000240000008975f889 *75008b7504c745fc88880d0883ed0ce9608902000400010000000000110000008b7500c74500c8 *880d08ff260000000024000000837e04000f94c00fb6c08944240883c5048b34852cdc0b088b54 *2408c1e2028b450029d0ff60f0901700050000000000110000008d45f03b4354730abe9ce01108 *8b43fcffe08b7508c745fcb0890d0883ed08b81c091008ebea89f68b750483c518ff65008d7600 *040000002400000083c504e9bcffffff040000002400000083fe04740783fe0b740ceb1e83c504 *b8fc880d08ffe08b7510c7450038890d0883ed04b81c091008ebea8b450889451083c510b8d881 *0c08ebda89f6c7450448890d0883c504e999fcffff9084890d0824890d08000000000500000025 *00000004000000240000008975f88975008b7504c745fca8890d0883ed0ce94088020003000200 *00000000110000008b450083c504890424e89a0ef7ffff65009090900800030000000000110000 *008b55008b450483c50889442404891424e8730df7ff89c6ff65009090308a0d08000000000000 *0000000001000000000011000000be00d21108ff6500e9f3ffffff909090170004000000000011 *00000083c7103b7b5c7611c7436c04000000bedce011088b43fcffe0c747f48c8c0d088b450089 *47f88b45088947fc8b450489078b450c894508c7450c000000008d77f483c508b88c8c0d08ebcc *90850300002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc54dc0b088b4514 *89078b45048945148d47fc8945108b450889450c8b761083c508b8e41a1008ebd3908b750cc745 *00988a0d08ff2602000100120000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *048b460c408945f48b46048945f08b760883ed10b88c8c0d08ebd890830000002400000083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fc54dc0b088b450c89078b450489450c8b450889 *45048d47fc8945088b7610b8e41a1008ebd603000100120000008d45e83b435473058b43f8ffe0 *8d45f8c700d46d10088970048b460c8945ec8b46088945f08b46108945f48b7604c745e8288b0d *0883ed188b06ebcfeb2e89f601000000240000008b750483c504e95d7d020090a88b0d08000000 *000000000000000100020000000e0000008d45f43b435473058b43fcffe08b46048945fc8b7608 *c745f8b48b0d0883ed0cb81c091008ebe49083c7303b7b5c760cc7436c0c0000008b43f8ffe0c7 *47d4ec8a0d088b46088947d88b45108947dc8b45148947e0c747e46c8b0d088b450c8947e88b45 *088947ec8b46048947f08b45148947f4c747f8d88b0d088d47d48947fc8d47e489078d77f883c5 *188b4500eba98d7600008c0d08d88a0d080000000005020000250000000a000200030000000b00 *00008d45f03b435473058b43fcffe08b460c8945f48b46088945f88b46048945fc8b4500897500 *89c6c745f0808c0d0883ed108b06ebd69090900b00030000000000110000008b7500c745001c8d *0d08ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040346048b *00c747fce0060c0889078d77fc83c5088b4500ebe201000000240000008b55048b460489450489 *d6c74500e48c0d08ff260b000200000000001100000083c7143b7b5c7611c7436c05000000bee4 *e011088b43fcffe0c747f0888d0d088b45008947f48b45048947f8c747fcfc8d0d088d47f08907 *8d77fc83c5088b4500ebd49002000000150000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46088945f48b46048945f083ed10b880060e08ebdc9021000000240000008b55 *048b46048902be0cd2110883c508ff65009001000000240000008b55048b460489450489d6c745 *00c08d0d08ff2604000200010000000c0000008d45fc3b435473058b43fcffe08b7604c745fcdc *8d0d0883ed048b06ebed90900400020000000000110000008b7500c745003c8e0d08ff26000000 *002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b46048b00c747fce0060c088907 *8d77fc83c5048b4500ebe59090900b00030000000000110000008b7500c74500a88e0d08ff2621 *000000240000008b55048b46048902be0cd2110883c508ff65009001000000240000008b55048b *460489450489d6c745008c8e0d08ff26040001000000000011000000bebcec110883c504e97f4d *feff909090040001000000000011000000bebcec110883c504e9634dfeff90909054d21108c4ec *1108f48e0d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8216f02008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f4c4ec1108be54d2110883ed10b808121008ebc19090900300000001000000ff6500 *900300000009000000ff6500900b00020000000000110000008d45f83b4354730abe08e111088b *43fcffe08b7500c74500b0900d088b06ebf0be04d2110883c5048b4500ff60ec89f6befcd11108 *83c5048b4500ff60f089f6b88f0d08a88f0d080000000000000000250000008b7504c74504dc8f *0d0883c504ff2690befcd1110883c50c8b4500ff60f089f683000000240000008b450c3b460475 *108b450489450c83c508b8888f0d08ffe0befcd1110883c5108b45008b40f0ebee030000002400 *00008b550c8b460489450c89d6c7450004900d08ff268b46088945008b55088b460489450889d6 *c745fc34900d0883ed04ff268d760048900d08ec8f0d080000000002000000250000008b460889 *45008b55048b460489450489d6c745fc7c900d0883ed04ff268d76007c900d08dc8f0d08000000 *0001000000250000000b00020000000000110000008b7500c7450004910d08ff26210000002400 *00008b45043b46040f95c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029 *d0ff60f08d760001000000240000008b55048b460489450489d6c74500d0900d08ff260b000200 *00000000110000008b7500c745006c910d08ff2621000000240000008b45043b46040f94c00fb6 *c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d7600010000002400 *00008b55048b460489450489d6c7450038910d08ff260800020000000000110000008b450099f7 *7d04837d00007e17837d0400791185d2751bbe0000000083c5088b4500ffe0837d0000790f837d *04007e09ebe189d6037504ebe389d6ebdf9090900800020000000000110000008d45fc3b435473 *0abe18e111088b43fcffe0837d00007e19837d040079138b45004899f77d048d70ff83c5088b45 *00ebdf83ed04b81c920d08ebd5906200000024000000837d04007906837d08007f138b550489d0 *99f77d0889c683c50c8b4500ffe08b45044099f77d088d70ffebeb080002000000000011000000 *8b45003b45047c253b45047410be1cd2110883c5088b45008b40e8ffe0be18d2110883c5088b45 *008b40ecebeebe14d2110883c5088b45008b40f0ebde90909003000100000000001100000083c7 *083b7b5c7611c7436c02000000be28e111088b43fcffe0c747fcc4930d088b45008907c7450000 *0000008d77fcb8c4930d08ebe189f601000100160000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b4608408945f48b760483ed0cb8c4930d08ebde8d760001000100160000 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460883c0028945f48b760483 *ed0cb8c4930d08ebdc9001000100160000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b460883c0038945f48b760483ed0cb8c4930d08ebdc9001000100160000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b460883c0048945f48b760483ed0cb8c493 *0d08ebdc9003000100000001000d00000083c7203b7b5c760cc7436c080000008b43fcffe08b56 *048b45000fb60c1085c97513be00d2110883c50483ef208b45008b40f0ebdd83f97f0f86ea0000 *0081f9df0000000f86b500000081f9ef000000765ec747e488930d088977e88b45008947ec8b55 *0083c2038b46040fb61402895424048b550083c2028b46040fb60402c1e0068904248b5500428b *46040fb61402c1e20c89c8c1e0128d8402000038fc8b14248d841000e0ffff8b542404eb3fc747 *e450930d088977e88b45008947ec8b550083c2028b46040fb61402895424088b5500428b46040f *b61402c1e20689c8c1e00c8d840200e0f1ff8b5424088d441080c747f03cdc0b088947f4eb43c7 *47e418930d088977e88b45008947ec8b5500428b46040fb6140289c8c1e0068d840280cfffffeb *cbc747e4e0920d088977e88b45008947ecc747f03cdc0b08894ff4c747f87cdc0b088d47f08947 *fc8d47e489078d77f883c5048b45008b40ece9adfeffff9090900b00020000000000110000008d *45fc3b4354730abe2ce111088b43fcffe08b45008945fc8b4504894500c745049c950d0883ed04 *b848cf0b08ebe190be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089 *f678950d0868950d080000000000000000250000005072656c7564652e6368723a206261642061 *7267756d656e740089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8696802008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f49c950d0883ed0cb864d60b08ebc654d21108d8ec110814960d08000002 *00180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e8016802008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4d8ec11 *08be54d2110883ed10b808121008ebc190909054d21108e8ec110884960d080000020018000300 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *916702008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4e8ec1108be54d211 *0883ed10b808121008ebc19090900800020000000000110000008d45fc3b4354730abe60e11108 *8b43fcffe08b450489c22b5500791db80000008029d08945048b45008945fc89550083ed04b818 *740e08ebd7b8ffffff7f29d08945048b45008945fc89550083ed04b834750e08ebba89f6e0970d *0884010000000000000000040000000000110000008d45fc3b4354730abe64e111088b43fcffe0 *8b450c89c22b55087929b80000008029d089450c8b45008945fc8b45048945008b450889450489 *550883ed04b85c760e08ebcbb8ffffff7f29d089450c8b45008945fc8b45048945008b45088945 *0489550883ed04b890770e08eba289f6e98bffffff9090900f00030000000000110000008b4504 *89c22b550079158b45003b45087c22295508895504b818740e08ffe08b45003b45087f0d295508 *895504b834750e08ebe9be00d2110883c50c8b45008b40f0ebd994980d08850300000000000000 *00050000000000110000008b450c89c22b550879158b45083b45107c2229551089550cb85c760e *08ffe08b45083b45107f0d29551089550cb890770e08ebe98b750483c510b89c071008ebdc8d76 *00e9b7ffffff90909010990d08840100000000000000000400000000001100000083c7103b7b5c *7611c7436c04000000be70e111088b43fcffe08b45083b450c7f2bc747f46c990d088b45048947 *f88b45008947fc8b450c89078b450889450c8d77f483c50cb86c990d08ebcb8b750483c50c83ef *10b89c071008ebbbe99fffffff8d760002000200120000008d45f43b435473058b43f8ffe08d45 *f8c700d46d10088970048b46103b460c7411408945f48b760883ed0cb86c990d08ebd98b760483 *ed0cb89c071008ebcc9003000100020001000b0000008d45f83b4354720883c71c3b7b5c760cc7 *436c070000008b43fcffe0c747e820990d088b46048947ec8977f08b460c8947f48b45008947f8 *c747fc54dc0b088b450089078d47e88945008d47fc8945fc8b760883ed08b814161008ebbd8d76 *0008000200000000001100000083c7083b7b5c7611c7436c02000000be74e111088b43fcffe08b *45003b45047f1fc747fc849a0d088b450489078b45008945048d77fc83c504b8849a0d08ebd7be *00d2110883c50883ef088b45008b40f0ebc49001000200120000008d45f43b435473058b43f8ff *e08d45f8c700d46d10088970048b460c3b46087411408945f48b760483ed0cb8849a0d08ebd9be *00d2110883ed08a1c46d1008ebca8d760003000100000001000d00000083c7243b7b5c760cc743 *6c090000008b43fcffe0c747e0349a0d088977e48b46048947e88b45008947ecc747f054dc0b08 *8b45008947f4c747f87cdc0b088d47f08947fc8d47e089078d77f883c5048b45008b40ecebbb90 *0400010000000000110000008b7500c74500fc9a0d08ff260000000024000000837e047c7510be *fcd1110883c5048b45008b40f0ffe0be04d2110883c5048b45008b40ecebee9090000002001800 *00008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8fd6202008d47f8894604c706245b10088d55f8c702d46d1008894204c745f410ed110883ed *0cb874e80b08ebc62ced1108809b0d080500010000000000110001008d45f43b4354730abeb0e1 *11088b43fcffe08b4500894424048b442404894424088b4424088945fcc74500709d0d0883ed04 *b840790e08ebd78d7600000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b *460448c747fc54dc0b0889078d77fc83c5048b4500ebe6000000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe08b460440c747fc54dc0b0889078d77fc83c5048b4500ebe6220000 *00240000008b450489442408d9eed9442408d9c9dae9dfe0f6c44574118b7508c745080c9c0d08 *83c5088b06ffe08b7508c74508d89b0d08ebed8d760022000000240000008b560489d0c1e81f8d *041083e0fe39c2750783c50c8b06ffe0b8409c0d08ebf722000000240000008b450089442404d9 *05584c1108d86c2404d95c2408d9442408d9eedde1dfe0f6c4457428dae9dfe09e0f94c20f9bc0 *84d0750a83c504b8409c0d08ffe08b750cc74504809c0d0883c504eb0addd8ddd88b750c83c510 *8b06ebe189f601000000240000008b46048904248b0424894424048b4424048945008b46048904 *24d90424d9eed9c9dae9dfe09e73278b45008904248b04243500000080894424088b4424088904 *248b04248945f883ed08e94dffffff8b4500894424048b442404ebe20000000024000000897504 *8b7500c745000c9d0d08ff26906f70656e46696c65008d760000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8956002008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0809d0d0883ed10 *b84cce0b08ebbf900400010000000000110000008b7500c74500109e0d08ff2600000000240000 *00837e04ff7510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0ebee *90900400010000000000110000008b7500c74500589e0d08ff260000000024000000837e04ff75 *10be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0ebee90903c737464 *6572723e008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e8955f02008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f400d21108c745f0809e0d0883ed10b84cce0b08ebbf903c7374646f75743e00 *8d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8255f02008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f0f09e0d0883ed10b84cce0b08ebbf90666c757368577269746542756666 *6572008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8ad5e02008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0609f0d0883ed10b84cce0b08ebbf90b4ed1108e4e71108d89f0d *0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e83d5e02008d47f8894604c706245b10088d55f8c702d46d1008894204beb4 *ed1108c745f488a00d0883ed0c8b06ebc489f6210000002400000083c7083b7b5c760cc7436c02 *0000008b43f8ffe08b45040b4604c747fc84ed0b0889078d77fc83c508b8d46d1008ebe2dc9f0d *0800000000240001008b4604894500bee4e71108c745fc4ca00d0883ed04ff269000e21108c4e7 *1108a0a00d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8755d02008d47f8894604c706245b10088d55f8c702d46d1008 *894204be00e21108c745f450a10d0883ed0c8b06ebc489f6210000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe08b45040b4604c747fc84ed0b0889078d77fc83c508b8d46d1008 *ebe2a4a00d0800000000240001008b4604894500bec4e71108c745fc14a10d0883ed04ff2690b4 *ed1108d4e7110868a10d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8ad5c02008d47f8894604c706245b10088d55f8c7 *02d46d1008894204beb4ed1108c745f418a20d0883ed0c8b06ebc489f6210000002400000083c7 *083b7b5c760cc7436c020000008b43f8ffe08b45040b4604c747fc84ed0b0889078d77fc83c508 *b8d46d1008ebe26ca10d0800000000240001008b4604894500bed4e71108c745fcdca10d0883ed *04ff2690a4ed1108f4e7110830a20d0800000200180003008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8e55b02008d47f8894604c706245b10 *088d55f8c702d46d1008894204bea4ed1108c745f4e0a20d0883ed0c8b06ebc489f62100000024 *00000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040b4604c747fc84ed0b0889078d *77fc83c508b8d46d1008ebe234a20d0800000000240001008b4604894500bef4e71108c745fca4 *a20d0883ed04ff269019000600000000001100000083c7243b7b5c7611c7436c09000000be50e2 *11088b43fcffe0c747e080a30d088b45048947e4c747ec14a50d088b45048947f08b45108947f4 *8b45148947f88b450c8947fc8b450889078d47e08945148d47ec8945108b450089450cc74508c8 *e11108be9ce0110883c504b87c1d1008eba589f601000100130000008d45f03b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f4bed4ec110883ed10b808121008ebdd89f60000 *00002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84 *ed0b0889378d77fc83c5048b4500ebea8d7600c4010000240000008b4508894424188b450483c0 *088b4d0c8b5604c74510b8a30d0883c5108954240801c8894424048b442418890424e835f0f6ff *89c6ff650044010000240000008b550c8b460489450c89d6c74500f4a30d08ff26030002000300 *01000b0000008d45f03b435473058b43fcffe08b460c8945f48b46108945f88b46088945fc8b76 *04c745f034a40d0883ed108b06ebdb8b7504c7450400000000e9956b0200908b7504c745040100 *0000e9856b02009094a40d0884a40d08000000000100000025000000040000002400000083c714 *3b7b5c760cc7436c050000008b43f8ffe0c747f054a40d088b45108947f48b450c8947f88b4508 *8947fc8b460489078d47f08945108b7504c7450cb8a40d0883c50c8b06ebc98d76000500000012 *0000008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e88b46108945 *ec8b460c8945f08b46088945f48b7604c745e4c0a40d0883ed1c8b06ebc9909024d9110858a50d *080400020000000000110001008d45dc3b4354730abe54e211088b43fcffe08b45008945f8c745 *fceca60d0883ed08b804c40c08ebe78d76008b55188b4514894204be0cd2110883c520ff650001 *000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483 *ed0cb8b4c30c08ebe28d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46048945f483ed0cb808c30c08ebe28d760042000000240000008b4504897004 *be0cd2110883c50cff65008d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ecb4a5 *0d088b451c8947f0c747f8e8a50d088b451c8947fc8b550c8b450489450c8955048b4510894500 *c7451018da11088d47ec8945fc8d47f88945f8c745141ca60d0883ed08b83c980c08ebae30a60d *0898a50d0858a50d08e70000002500010058a50d0802000000240001008b46148945f08b461089 *45f48b460c8945f88b46048945fc8975008b7608c745eca8a60d0883ed14ff2689f658a50d0801 *000000240001008b46048b500489450089d6c745fcb4a60d0883ed04ff269094ed110824d91108 *04a70d081800060000000000110003008d45f83b4354730abe5ce211088b43fcffe0bebce31108 *c745fc00aa0d0883ed04b89c431008ebe8040100002400000083c7243b7b5c760cc7436c090000 *008b43f8ffe0c747e02cc50c088b450c8947e4c747e8fcd11108c747ecfcd111088b45088947f0 *8b46048947f48b45048947f8c747fce0d011088b451089078d77e083c514b8d46d1008ebb889f6 *04000000240000008b55108b460489451089d6c745004ca70d08ff2605000000120000008d45e4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e88b46108945ec8b460c8945 *f08b46088945f48b7604c745e4b0a70d0883ed1c8b06ebc989f604a70d0801000100130001008d *45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb86c860e08eb *e28d7600eb6e89f60000000024000000be0cd2110883c504ff65009002000000240000008b4504 *8943048b7508c7450854a80d0883c508e9fcab020008a70d0802000000240001008975fcc74500 *68a80d0883ed04e9cefcffff89f648a80d080000000008a70d0800000100020000000e0001008d *45f03b435473058b43fcffe08b46048945fc8b46088945f88b7604c745f48ca80d0883ed0cb82c *531008ebde8d7600c40000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8 *b03d1008ffe0c747f830f80d088b45048947fc8b451089078d77f883c5148b4500ebe189f604a7 *0d08c40000002400030083c7183b7b5c760ec7436c06000000b894361008ffe0c747ec1ca80d08 *8b45048947f0c747f8b8a80d088b45108947fc8d47ec89078d47f8894308c743040cd211088b75 *10c74500f0a80d08b8c0441008ebc19004a70d08060000002400030083c7183b7b5c7615c7436c *06000000c74320fe000000b8b03d1008ffe0c747eccca70d088b45088947f08b45148947f48b45 *108947f88b45188947fc8b450489078975188d47ec894304c7450838a90d0883c508b87c541008 *ebc09004a70d080500000024000300897500c745fc98a90d0883ed04e9cea80200909064e21108 *3caa0d080000000014aa0d08000001000000000011000100be64e21108e9868b020089f6e9efff *ffff909090eced11086caa0d080000000044aa0d08000001000000000011000100beeced1108e9 *568b020089f6e9efffffff90909080e211089caa0d080000000074aa0d08000001000000000011 *000100be80e21108e9268b020089f6e9efffffff9090901600030000000000110000008d45f43b *4354730abe94e211088b43fcffe08b7500c745002cab0d088b06ebf0000000002400000083c718 *3b7b5c7615c7436c06000000c74320fe000004b8b03d1008ffe0c747ecece80b088977f08b4500 *8947f48b45048947f88b45088947fc8b450c89078d77ec83c5148b4500ebd28d76000200000024 *0000008b45048945008b45088945048b46148945fc8b46108945f88b46088945f4c74508d8aa0d *0883ed0ce9d3d4000090909017000500000000001100000083c7143b7b5c7611c7436c05000000 *be98e211088b43fcffe0c747f088ad0d088b45088947f48b450c8947f88b45008947fc8b450489 *078d77f083c510b8fc301008ebd3e9d70100008d760003000000120000008d45ec3b435473058b *43f8ffe08d45f8c700d46d10088970048b460c8945f48b46088945f08b46048945ec83ed14b8b0 *aa0d08ebd68d760083000000240000008b06668378fe09754683c7183b7b5c760cc7436c060000 *008b43f8ffe0c747ecbcab0d088b46048947f08b45088947f48b45048947f8c747fc9ce90b088d *47ec89078d77fc83c510b8c0351008ebcc89750c83c50cb874e80b08ebbf03000000240000008b *750cc74500fcab0d08ff2604000200040000000b0000008d45f43b435473058b43fcffe08b460c *8945fc8b46108945f88b46088943048b7604c745f460ac0d0883ed0cb87c541008ebd890420000 *00240000008b750483c50cff65008d7600c40000002400000089750c8b45108943048b7504c745 *08b4ac0d0883c508e999a7020090040000002400000083c7203b7b5c7615c7436c08000000c743 *20fe000000b8b03d1008ffe0c747e478ac0d088b45048947e88977ec8b450c8947f08b45088947 *f4c747f88c6b10088b45108947fc89378975108d47e48943048d77f8c74500c8ac0d08b8703310 *08ebb989f603000000240000008b46048945008b7604c745fcecac0d0883ed04e9bca50200acab *0d08000000000000000000000100040000000b0000008d45ec3b435473058b43fcffe08b461089 *45f48b460c8945f88b46088945fc8b7604c745f058ad0d0883ed108b06ebdb14ee1108b8ad0d08 *1600040000000000110001008d45fc3b4354730abe9ce211088b43fcffe08b7504c745fc74ae0d *0883ed048b06ebed9083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b4608 *89078d47fc8945088b4504894500897504b8f0860e08ebdc89f683c7083b7b5c760cc7436c0200 *00008b43f8ffe0c747fcd8e90b088b460889078d47fc8945088b4504894500897504b8f0860e08 *ebdc89f628ae0d08f0ad0d08b8ad0d08430000002500010017000500000000001100000083c714 *3b7b5c7611c7436c05000000bea4e211088b43fcffe0c747f0b4b00d088b45088947f48b450c89 *47f88b45008947fc8b450489078d77f083c510b8fc301008ebd3e9eb0100008d76000300000012 *0000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f48b46088945 *f08b46048945ec83ed14b8b0aa0d08ebd68d760083000000240000008b06668378fe09754683c7 *183b7b5c760cc7436c060000008b43f8ffe0c747ecd4ae0d088b46048947f08b45088947f48b45 *048947f8c747fc9ce90b088d47ec89078d77fc83c510b8c0351008ebcc89750c83c50cb874e80b *08ebbf03000000240000008b750cc7450014af0d08ff2604000200040000000b0000008d45f43b *435473058b43fcffe08b460c8945fc8b46108945f88b46088943048b7604c745f478af0d0883ed *0cb87c541008ebd89001000000240000008b750483c508ff65008d7600c4010000240000008b46 *088945108b46048943048b7504c7450cccaf0d0883c50ce97ea4020089f6c401000024000000c7 *4500e0af0d08ff268d7600040000002400000083c7203b7b5c7615c7436c08000000c74320fe00 *0000b8b03d1008ffe0c747e490af0d088b45048947e88977ec8b450c8947f08b45088947f4c747 *f88c6b10088b45108947fc89378d47e48943048d77f8c7450008b00d08b870331008ebbc900300 *0000240000008b46048945008b7604c745fc1cb00d0883ed04e990a20200c4ae0d080000000000 *00000000000100040000000b0000008d45ec3b435473058b43fcffe08b46108945f48b460c8945 *f88b46088945fc8b7604c745f084b00d0883ed108b06ebdb00000200180000008d45f43b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e83d4d02008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f44cb10d0883ed0cbe002000008b4500 *ebc390000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ff *e0c747fc54dc0b0889378d77fc83c504b8d46d1008ebe890a8e2110880b10d080b000300000000 *00110001008d45f83b4354730abeb8e211088b43fcffe0bea8e21108c745fcfcb20d0883ed048b *06ebeb8d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700d46d1008897004 *837e0400750ebe88ed110889c5b8c0f70d08ebdebec8e3110883ed08a1c06d1008ebcf01000000 *2400000083c7203b7b5c7615c7436c08000000c74320ff000000b8b03d1008ffe0c747e4c4b10d *088977e8c747f0d4f10c088b45048947f4c747f8e4bb0b088d47f08947fc8d47e489078d77f883 *c5088b4500ebca8d760001000000240000008b46048945fcc7450008b20d0883ed04e9a77d0000 *8d760042000000240000008975088b7504c7450464b20d0883c504ff2689f62300000024000000 *83c7183b7b5c7615c7436c06000000c74320fe000000b8b03d1008ffe0c747ec14c50c088977f0 *8b450c8947f4c747f800000000c747fc000000008b450489078d77ecc7450484b20d0883c504b8 *9c431008ebc702000000240000008b46048945008b7604c745fca0b20d0883ed04e96c8f020004 *d911082cee110814b30d080400020000000000110003008d45ec3b4354730abec0e211088b43fc *ffe08b45008945f8c745fca0b60d0883ed08b808c30c08ebe78d7600000000002400000083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b460489078d77fc83c504b8d46d10 *08ebe58d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b7604c745f460b30d0883ed0c8b06ebe189f6000000002400000083c7243b7b5c760cc7436c09 *0000008b43f8ffe0c747e02cc50c08c747e4c0e311088b46088947e88b460c8947ec8b46108947 *f08b46148947f48b46188947f88b461c8947fcc707ffffffff8d77e083c504b8d46d1008ebb98d *760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c7 *45f4ccb30d0883ed0c8b06ebe189f6010000002400000083c70c3b7b5c7615c7436c03000000c7 *4320ff000000b8b03d1008ffe0c747f830b40d088b45048947fc8d77f883c5088b4500ebe68d76 *0001000000240000008b4604c7450064b40d08890424e8f7f9010089c6ff650090020000002400 *00008b4604c74004bce311088b7504c74504a4b40d0883c504ff268d760002000000240000008b *45088945fcc74500c4b40d0883ed04e94b4100008d7600eb5689f6000000002400000083c7083b *7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5 *048b4500ebea8d760000b50d08000000000000000000000100000001000d0000008d45f83b4354 *73058b43fcffe08b46048945f8c745fc0cb50d0883ed08b80c250d08ebe7000000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fc58b50d088b460489078d77fc83c504b8d4 *6d1008ebe58d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d100889 *70048b7604c745f484b50d0883ed0c8b06ebe189f60200000024000000e9f3feffff8d760014b3 *0d08020000002400030083c70c3b7b5c760cc7436c030000008b43f8ffe08b460483f801740e83 *f8017f0485c0eb0383f802750a83ef0cb8e8b40d08ebdec747f8bcb50d088b45048947fc8d47f8 *8945fcc745f804d91108be2cee1108c74500f0b50d0883ed0cb84c181008ebae8b7504c7450404 *b60d0883c504ff269083c504e968feffff78b60d0868b60d0814b30d08030000002500030014b3 *0d08010000002400030083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f898b30d088977 *fc8d47f88945008b45048945f48975fcc745f894b60d0883ed0cb8ccf60d08ebd490901cee1108 *78ed110854ee110870b70d0886030000e0b60d080000070000000000110007008d45f43b435472 *0883c7183b7b5c7611c7436c06000000bec8e211088b43fcffe08b45083b450c74118b7500c745 *004cb90d0883ef188b06ebe5c747ec14c50c088b45048947f08b45148947f48b45088947f88b45 *0c8947fc8b451089078d77ec83c5188b4500ebb68d7600e98fffffff8d7600eb7a89f600000000 *24000000c744240400000000c704240000000083c70c3b7b5c7615c7436c03000000c74320ff00 *0200b8b03d1008ffe0c747f89ced0b088d57fc8b4d00890c248b450489442404890a8b4c240489 *4a048d77f883c50c8b4500ebd39078b70d08000000000000000000000100000004000b000000c7 *44240400000000c70424000000008d45ec3b435473058b43fcffe08b46108945f88d55f08d4608 *8b08890c248b400489442404890a8b4c2404894a048b46048945ecc745fc84b70d0883ed14b8b8 *2f0e08ebc6c50100002400000083c7183b7b5c7615c7436c06000000c74320fe000000b8b03d10 *08ffe0c747ec14c50c088b45048947f08b45148947f4c747f800000000c747fc000000008b4510 *89078d77ec83c5188b4500ebcd89f6e4b60d08e80e000024000300c744240400000000c7042400 *00000083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0f4b70d088b45188947f48d57f8 *8d45048b08890c248b400489442404890a8b4c2404894a048b460489078d47f0894508c7450478 *ed1108c7450064ee1108c7450c50b80d08b808880d08ebaf89f6e0b60d08c501000024000700be *1cee1108c745fcacb80d0883ed04ff268d7600e0b60d08c5010000240007008b55082b550c8b46 *0489450cc745002cb90d08891424e8a2fa01008d4df8890189510489cdff6508a8e2110844ee11 *080ce811082ce8110864e5110834e811083cee11086cee110878ee110874b90d08190007000000 *00001100ff018d45f43b4354730abed0e211088b43fcffe08b45008945f8c745f464e51108c745 *fc64c20d0883ed0cb8402b0e08ebe0be38ed110883c504e9ff01feff8d7600be48ed110883c504 *e9ef01feff8d7600be68ed110883c504e9df01feff8d7600be58ed110883c504e9cf01feff8d76 *0008ba0d08f8b90d08e8b90d08d8b90d0800000000000000002500000001000100130000008d45 *f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f434ba0d0883ed0c8b06eb *e189f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f80c5f10088b45108947fc8b4514 *8945188d47f88945148b450c894510c7450cfcd111088b450489450883c508b8108e0e08ebc889 *f678b90d08460400002400010083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d10 *08ffe0c747f80c5f10088b45108947fc8b45148945188d47f88945148b450c894510c7450cfcd1 *11088b450489450883c508b8108e0e08ebc890c745fc34e811088b450c8945f8c74500c0ba0d08 *83ed08e9b406feff14bb0d0868ba0d0878b90d08460400002500110078b90d0846000000240011 *008b7518c7450044bb0d08ff26000000002400000083c7083b7b5c7615c7436c02000000c74320 *ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d76000300020000 *0001000d0000008b56048b4500c7450064bb0d08c74424080100000089442404891424e8d7ef01 *0089c6ff650089f68b7504c7450400000000e94d540200908b7504c7450401000000e93d540200 *90dcbb0d08ccbb0d08000000000100000025000000210000002400000083c7083b7b5c760cc743 *6c020000008b43f8ffe0c747fca4bb0d088b450489078d47fc8945048b7608c7450000bc0d088b *06ebde01000000240000008b55048b460489450489d6c7450008bc0d08ff260200000015000000 *8d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f044bc *0d0883ed108b06ebdbbe78ee110883c520e9237902008d7600840000002400000083c7243b7b5c *760cc7436c090000008b43f8ffe0c747e02cc50c08c747e420da11088b45108947e8c747ec04d2 *11088b45088947f08b46048947f48b45048947f8c747fce0d011088b450c89078d77e083c514b8 *d46d1008ebb889f604000000240000008b550c8b460489450c89d6c74500a8bc0d08ff26050000 *00120000008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e88b4610 *8945ec8b460c8945f08b46088945f48b7604c745e40cbd0d0883ed1c8b06ebc989f68500000024 *00000083c7343b7b5c760cc7436c0d0000008b43f8ffe0c747d0d8e90b088b45108947d4c747d8 *94b90b088d47d08947dcc747e02cc50c08c747e4c4e311088b45148947e8c747ec04d211088b45 *088947f08b46048947f48b45048947f88d47d88947fc8b450c89078d77e083c518b8d46d1008eb *9f9005000000240000008b550c8b460489450c89d6c7450074bd0d08ff2606000000120000008d *45e03b435473058b43f8ffe08d45f8c700d46d10088970048b46188945e48b46148945e88b4610 *8945ec8b460c8945f08b46088945f48b7604c745e0f0bd0d0883ed208b06ebc3eb1a89f654be0d *08000000008cb90d0800000100020000000e0001008d45f83b435473058b43fcffe08b46088945 *fc8b46048945f883ed08b8cc8b0e08ebe890440000002400000083c7103b7b5c7615c7436c0400 *0000c74320fe000000b8b03d1008ffe0c747f450f80d088b45048947f88b450c8947fc8b451089 *078d77f483c5148b4500ebdb8cb90d08440000002400010083c70c3b7b5c760ec7436c03000000 *b894361008ffe0c747f870be0d088b45048947fc8b451089078d47f8894308c743040cd211088b *7510c745009cbe0d08b8c0441008ebce89f68cb90d08070000002400010083c71c3b7b5c7615c7 *436c07000000c74320fe000000b8b03d1008ffe0c747e80cbe0d088b45088947ec8b45188947f0 *8b451c8947f48b45148947f88b450c8947fc8b450489078975188d47e8894304c7450ce8be0d08 *83c50cb87c541008ebba8d76008cb90d080600000024000100897500c745fc3cbf0d0883ed04e9 *2293020089f68cb90d0846010000240001008b46048945108b4608894508bebce31108c74500ac *bf0d08e9b38302008d76008cb90d084601000024000100c74500ccbf0d08ff268d760074b90d08 *4601000024004100c745fc14da11088b45048945f8c74500f8bf0d0883ed08e968f1ffff74b90d *08060000002400410083c7183b7b5c7615c7436c06000000c74320fe000000b8b03d1008ffe0c7 *47ec28bd0d088b45048947f08b45148947f48b45188947f88b45108947fc8b450889078975188d *47ec894304c7450010c00d08b87c541008ebc374b90d084600000024004100897508c7450038c0 *0d08e9359202009074b90d0846050000240041008b46048945188b4608894510bebce31108c745 *009cc00d08e9c78202008d760074b90d084605000024004100c74500b8c00d08ff268d7600c745 *fc18da11088b45048945f8c74500e4c00d0883ed08e988f0ffff8b45148945188975148b450c89 *4510c7450c04d211088b450489450883c508e9e0cc0000f0c00d080cc10d080cc10d080cc10d08 *0cc10d080cc10d0874b90d08460500002500430074b90d0846050000240043008b7604c7450054 *c10d08ff268b7514c7450460c10d0883c504ff269078b90d084600000024001100e9c3f9ffff8d *760078b90d084600000024005100837e04ff7513be6cee1108c7450088c10d08b8c0351008ffe0 *b850bb0d08ebf778b90d084600000024005100c745009cc10d08ff268d76008b7504c74504c8c1 *0d08e93947020090d4c10d086cc10d0890bc0d0874b90d08870000002500e30174b90d08870000 *002400e301c74500fcc10d08ff268d760074b90d08870000002400e301ebe689f68b45088945fc *c7450020c20d0883ed04e9176e00008d76008b7604ebc78d76003cc20d0824c20d0874b90d0887 *0000002500eb0174b90d08060000002400eb0183c7183b7b5c7615c7436c06000000c74320fe00 *0000b8b03d1008ffe0c747ec3cba0d088b45108947f08d47ec894510c747f860bc0d088b450489 *47fc8d47ec89078d47f88945008b7508c745fc58c20d0883ed048b06ebc290909024d9110800c3 *0d08c6000000c0c20d080000070000000000110001008d45d83b4354730abed8e211088b43fcff *e08b7514c745fc8cc90d0883ed048b06ebed90e9d7ffffff8d760083c7183b7b5c760cc7436c06 *0000008b43f8ffe0c747ec14c50c088b453c8947f08b45108947f48b45048947f88b45088947fc *8b450c89078d77ec83c5408b4500ebcf9083c7243b7b5c760cc7436c090000008b43f8ffe08b45 *0c3b45187430c747e014c50c088b453c8947e48b45108947e88b45048947ec8b45088947f08b45 *0c8947f48d77e083c54083ef0ceb498b45248b5004c747e010f80d088b453c8947e48957e88b55 *248d47e0894204c747ec14c50c088b453c8947f08b45108947f48b45048947f88b45088947fc8b *450c89078d77ec83c5408b4500e975ffffff8d76004cc30d0808c30d0800000000efde07002500 *0000ea5e0000240000008975388b7534c745fc00c40d0883ed04ff2689f601000100130000008d *45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb848ca0b08eb *e28d7600e9d70100008d760000000200170000008d45f83b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46083b46040f94c00fb6c08944240883ed088b34852cdc0b088b442408c1e002 *f7d88b80c46d1008ebc7620000002400000083c7183b7b5c7615c7436c06000000c74320fe0000 *00b8b03d1008ffe0c747ec14c50c088977f0c747f418da1108c747f800000000c747fc00000000 *8b450489078d77ec83c50c8b4500ebcf8b751cc74518acc40d0883c518e9767d020089f68b7504 *83c524ff65008d76000cc50d08f8c40d0800000000c81f0000250000004cfd0000240000008b55 *308b45048942048b750cc745102cc50d0883c510ff26c0c20d080cb9000024000100c745fc18da *11088b45208945f88b45248945f4c745f0000000008b45288945ec8b45088945e88b45188945e4 *c7450034c50d0883ed1ce9a9d2feff90ebc289f6ebbe89f68b45243b45207507b858c50d08ffe0 *8b55308b451c8942048b750483c5348b4500ebea909cc50d0898c50d08c0c20d080cb100002500 *01008b750cc74500d4c50d08ff26d4c50d0894c50d08c0c20d080cb1000025000100c0c20d080b *580000240001008975008b750cc745fcf4c50d0883ed04ff2689f650c40d0800000000c0c20d08 *00000200090005000b0001008d45b03b4354720883c70c3b7b5c760cc7436c030000008b43fcff *e0c747f860c40d088b46288947fc8b463089078b46248945cc8b46288945c88b46388945c48b46 *348945c08b46208945bc8b461c8945b88b46108945b48b461c8945d48d47f88945d88b46188945 *dc8b46148945e08b46108945e48b460c8945e88b46308945ec8b462c8945f08b46088945f48b46 *288945f88b46048945fcc745d000c60d0883ed4cb83c980c08e96cffffff89f6cb190000240000 *0083c7183b7b5c7615c7436c06000000c74320ff000000b8b03d1008ffe08b550c035520c747ec *14c50c088b45248947f08b45048947f48b45108947f88957fc8b450889078b552c8d47ec894204 *8b451c8945fcc745f800000000c745f400000000c7450018da11088b751883ed0cb808c40d08eb *a68d7600ea5e0000240000008b46148945f88b46108945f48b460c8945f08b46088945fc8b7604 *83ed10e981fcffff90ea5e000024000000c7450064c70d08ff268d76008b450c2b45103b45247f *148b7504c7450890c70d0883c508b82cc60d08ffe08b4d248b452883c0088b5510895424188b55 *1c83c208c74504e4c60d0883c504894c24088954240403442418890424e8adcff6ff89c68b4500 *ebc389f6ea5e0000240000008b46148945f88b46108945f48b460c8945f08b46088945fc8b7604 *83ed10e9e5fbffff90ea5e000024000000c7450000c80d08ff268d76008b7504c745082cc80d08 *83c508e9e2fdffff89f638c80d089cc70d08000000008c33000025000000c0c20d084906000024 *00010083ef803b7b5c760cc7436c200000008b43f8ffe08b4614894500c7478414c50c088b4510 *894788c7478c18da1108c74790000000008b45188947948b4514894798c7479c54dc0b088b4508 *8947a0c747a414c50c088b45108947a8c747ac18da1108c747b000000000c747b4000000008b45 *148947b8c747bc24c40d088b451c8947c0c747c82cc60d088b45248947cc8b45108947d08d4784 *8947d48d479c8947d88d47a48947dc8d47bc8947e08b45048947e48b46048947e88b46088947ec *8b46148947f08b45188947f48b45148947f88b460c8947fc8b461089078d47c88945f88b460889 *45fc8b46108945048b460c8945088b551c8b460489451c89d6c745f460c80d0883ed0c8b06e901 *ffffff8d7600c0c20d08c6040000240001008b46148b50048b460c8945f88b46208945fc8b4618 *8945008b461489451889d6c745f46cc80d0883ed0cff2668507574427566000000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *613402008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0b8 *c90d0883ed10b84cce0b08ebbf9054d21108b0ee110824ca0d0800000200180003008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8f13302008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f4b0ee1108be54d2110883ed10b8 *08121008ebc1909090636f6d6d6974416e6452656c656173654275666665720090000002001800 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8753302008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745 *f094ca0d0883ed10b84cce0b08ebbf906850757443686172008d760000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8053302 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f010cb0d08 *83ed10b84cce0b08ebbf9068476574436f6e74656e7473008d760000000200180000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e891320200 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f080cb0d0883 *ed10b84cce0b08ebbf90684765744275660000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8253202008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0f4cb0d0883ed10b84cce0b08ebbf *90696c6c6567616c206275666665722073697a6520008d760000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a93102008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f060cc0d0883ed10 *b84cce0b08ebbf9024d9110884ee110850e3110828cd0d0826020000dccc0d0800000700000000 *00110007008d45d83b4354730abe50e311088b43fcffe08b45048b7004c745fcf4d30d0883ed04 *8b06ebea89f6e9d3ffffff8d7600470e00002400000083c7203b7b5c7615c7436c08000000c743 *20ff000000b8b03d1008ffe08b5514035518c747e414c50c088b45108947e88b45048947ec8b45 *088947f08957f48b451c8947f88b550c8d47e4894204c747fc54dc0b088b451889078d77fc83c5 *208b4500ebb68d7600470e0000240000008b4d188b451083c0088b5604c7450038cd0d08894c24 *0889542404034514890424e8cec9f6ff89c6ff650090e9eb0100008d7600e0cc0d08c300000024 *00010083fe0b750b8b750483c5108b4500ffe0c7450c84ee110883c50cb8d8810c08ebed8d7600 *e0cc0d08c30000002400010083fe0b750b8b750483c5108b4500ffe0c7450c84ee110883c50cb8 *d8810c08ebed8d7600e0cc0d08840100002400010083feff7511c7450418ce0d0883c504b82c86 *0d08ffe083c7083b7b5c760ec7436c02000000b8f0371008ebe88b450c29f089f2035510c747fc *54dc0b088917c745101c09100889450c8d47fc8945088b750483c508b80cd00d08ebb8e0cc0d08 *84010000240001008b4500894304c7450448ce0d0883c504e91f8202008d7600e0cc0d08840100 *002400010083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe085f67911c7 *4500b0ce0d0883ef08b8e4451008ebe989f283feff7514c74504e8cd0d0883c50483ef08b82c86 *0d08ebce8b450c29f0035510c747fc54dc0b088917c745101c09100889450c8d47fc8945088b75 *0483c508b80cd00d08eba090e0cc0d08c4010000240001008b550c8b45080346048955fc8945f8 *8b45108945f48975088b4604894510c74500d4ce0d0883ed0ce9b35f00008d7600e0cc0d088401 *0000240001008b55088b460489450889d6c745005ccf0d08ff26d4cd0d0800000000e0cc0d0800 *000100030002000b0001008d45e03b435473058b43fcffe08b460c8945f08b46088945f48b4614 *8945f88b46108945fc8b7604c745ec98cf0d0883ed148b06ebd589f6e0cc0d080a000200010001 *000f00010083c7183b7b5c760cc7436c060000008b43fcffe0837d04007e2cc747ecc4cf0d088b *46048947f08b45008947f48977f88b46088947fc8b450489078d77ec83c5088b4500ebcc8b4500 *894504bef0d9110883ef18b808121008ebb79083c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f80cd00d088b45188947fc8b450c8907c745201c091008c7451894ee11088d77f883c518b8 *0cd00d08ebd18d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46048945f483ed0cb8ec060e08ebe28d7600e0cc0d0804000100120001008d45e03b43 *54720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc84 *ed0b088b461489078d47fc8945f48b46108945f08b460c8945ec8b46088945e88b46048945e4c7 *45e084ee110883ed20b8e8830e08ebb790e9f30000008d7600210000002400000083c7083b7b5c *760cc7436c020000008b43f8ffe08b4604034504c747fc54dc0b0889078d77fc83c508b8d46d10 *08ebe201000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b4608 *8945f48b7604c745f060d10d0883ed108b06ebdb830000002400000083c70c3b7b5c760cc7436c *030000008b43f8ffe08b550c2b5604c747f898d10d088b45088947fc8b46048907c7450c1c0910 *088955088b75048d47f889450483c504b88cd20d08ebc98d76008300000024000000c74500d0d1 *0d08ff268d760050d10d08000000000000000000000100030001000b0000008d45ec3b43547305 *8b43fcffe08b460c8945f48b46048945f88b46108945fc8b7608c745f024d20d0883ed14b81c09 *1008ebd890e0cc0d080a000200030000000b00010083c72c3b7b5c760cc7436c0b0000008b43fc *ffe0837d04007e48c747d8ecd00d088b46048947dc8b46088947e08b460c8947e48b45008947e8 *8b45048947ecc747f048d20d088b45008947f48d47d88947f88977fc8b450489078d77f083c508 *eb0bbeacee110883c50883ef2c8b4500eba089f6620000002400000083c7083b7b5c7615c7436c *02000000c74320fe000000b8b03d1008ffe0c747fc54dc0b088b450489078d77fc83c50c8b4500 *ebe783c71c3b7b5c760cc7436c070000008b43f8ffe0c747e8b4d00d088b45188947ecc747f48c *d20d088b45048947f88b45148947fc8d47e88907c745141c0910088b451c894510c7450c94ee11 *088d77f4c7451808d30d0883c50cb88cd20d08ebb18d76003cd30d0868d00d08e0cc0d08c81900 *0025000100e0cc0d08c8080000240003008b45108970048b451c3b45087c0e8b7520c74500b4d3 *0d088b06ffe083c50cb800cd0d08ebf489f6dccc0d08260200002400070083c7083b7b5c760cc7 *436c020000008b43f8ffe08b46142b46103b45147f50c747fc54dc0b088b450489078b46088945 *f48b46148945f08b46108945ec8b460c8945e88b46048945e48b450c8945e08d47fc8945dc8945 *fc8b4614894500c745f8c0d30d0883ed24b83c980c08eba38b46088945008b460c8945048b4604 *89450c8b46148945188b55108b461089451089d6c745fca8cd0d0883ed0483ef088b06e96cffff *ff909040e311089cd40d0816000400000000001100010083c7343b7b5c7611c7436c0d000000be *58e311088b43fcffe0c747d088d50d088b45088947d4c747dc94b90b088b45008947e0c747e4ec *e80b088d47dc8947e8c747ecf0e311088b45048947f08d47d08947f4c747f8e0d01108c747fc9c *e90b088d47e489078d77fc83c50cb8c0351008eba4900000000024000000c7450000d211088b46 *048945fcc745f80900000083ed08e98820ffff01000100130000008d45ec3b435473058b43f8ff *e08d45f8c700d46d10088970048b7604c745f42cd50d0883ed0c8b06ebe189f69cd40d08010001 *00130001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d4 *6d1008897004c747f850d50d088b46048947fc8d47f88945f4c745f040e3110883ed10b82cda0b *08ebce24d91108d4d50d081600040000000000110001008d45dc3b4354730abe60e311088b43fc *ffe08b45008945f8c745fcb4d80d0883ed08b804c40c08ebe78d760001000100130000008d45f4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8b4c30c08ebe28d *760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460489 *45f483ed0cb808c30c08ebe28d7600c4010000240000008b4504897004be0cd2110883c514ff65 *008d7600d4d50d08c93200002400010083c7183b7b5c761cc7436c06000000c74500a4d60d08c7 *4320ff000000b8b03d1008ffe0c747ec1cd60d088b451c8947f0c747f850d60d088b451c8947fc *8b45108945008b45048945108b450c8945048b450889450c8b45248945088d47ec8945fc8d47f8 *8945f8c7451484d60d0883ed08b83c980c08eba98d760083c7183b7b5c760cc7436c060000008b *43f8ffe0c747ec14c50c088b45108947f08b45048947f48b450c8947f88b45248947fc8b450889 *078b55188d47ec894204be0cd2110883c5288b4500ebc489f683c7183b7b5c760cc7436c060000 *008b43f8ffe0837d140a750a83ef18b8a4d60d08ebeec747ec14c50c088b45108947f08b450489 *47f48b450c8947f88b45248947fc8b450889078b55188d47ec894204be0cd2110883c5288b4500 *ebb489f670d70d0820d70d08d4d50d08c932000025000100d4d50d0825020000240001008b5514 *428955148b46048945008b460c8945fc8b46148945f88b46088945f43b56147c0a83ed10b8a4d6 *0d08ffe08b7510c745f0e4d70d0883ed108b06ebed90d4d50d0806040000240001000fb64e048b *55048b4518884c10088b55088b460489450889d6c74504f0d70d0883c504ff268d7600d4d50d08 *06000000240001008b55188b460489451889d6c745003cd80d08ff26d4d50d0805000000240001 *008b45048945f8897500c745fc70d80d0883ed08e91c1d0000d4d50d0803000000240001008b46 *048b40048945f48945fc8b4604894500c745f890d80d0883ed0ce93f1c00009090904cee11089c *ee110868e3110824d90d0826060000d8d80d080000070000000000110007008d45d83b4354730a *be68e311088b43fcffe08b45048b7004c745fc74de0d0883ed048b06ebea89f6e9d3ffffff8d76 *00210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4504034604c747fc54 *dc0b0889078d77fc83c508b8d46d1008ebe201000100160000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d10088970048b46088945f48b7604c745f034d90d0883ed108b06ebdb62000000 *2400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f86cd90d *088977fc8b450489078d77f883c50c8b4500ebe490eb5689f6000000002400000083c7083b7b5c *7615c7436c02000000c74320fe000000b8b03d1008ffe0c747fc94b90b0889378d77fc83c5048b *4500ebea8d7600dcd90d0800000000d8d80d0800000100040003000b0001008d45e03b43547208 *83c7183b7b5c760cc7436c060000008b43fcffe0c747ec14c50c088b460c8947f08b46108947f4 *8b46148947f88b46188947fc8b461c89078b461c8945f88b46188945f48b460c8945f08d47ec89 *45ec8b46048945e8c745e404d211088b46088945e0c745fce8d90d0883ed20b878910e08eb9e83 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fc54dc0b088b451489078d77fc83c51c8b45 *00ebe7908b45088b560489500483c504e90ffeffff8d7600dcda0d08b0da0d08e0d80d08260600 *0025000100e0d80d082606000024000100c7450004db0d08ff268d7600070f00002400000083c7 *203b7b5c7615c7436c08000000c74320ff000000b8b03d1008ffe0c747e414c50c088b45088947 *e88b45048947ecc747f000000000c747f4000000008b45108947f88b550c8d47e48942048b4518 *03451cc747fc54dc0b0889078d77fc83c5208b4500ebb490070f0000240000008b4e048b450883 *c008894424188b5514c7450024db0d088b451c894424088b44241801d089442404890c24e8d8bb *f6ff89c6ff65008d7600881e00002400000083c7203b7b5c7615c7436c08000000c74320ff0000 *00b8b03d1008ffe08b5518035520c747e414c50c088b45088947e88b45048947ec8957f08b4514 *8947f48b450c8947f88b55108d47e48942048b451c034520c747fc54dc0b0889078d77fc83c524 *8b4500ebb3881e0000240000008b4e048b450883c008894424188b5518c74500d4db0d088b4520 *894424088b44241801d089442404890c24e828bbf6ff89c6ff65008d7600620000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe08b4508034504034604c747fc54dc0b0889078d77 *fc83c50cb8d46d1008ebdf9001000200120000008d45ec3b435473058b43f8ffe08d45f8c700d4 *6d10088970048b460c8945f08b46088945f48b7604c745ec84dc0d0883ed148b06ebd589f6ea7f *00002400000083c7103b7b5c7615c7436c04000000c74320fe000000b8b03d1008ffe0c747f4c0 *dc0d088977f88b45248947fc8b450489078d77f483c52c8b4500ebde8d7600dcd80d086be60000 *2400030083c7283b7b5c7615c7436c0a000000c74320ff000000b8b03d1008ffe0c747dc14c50c *088b45108947e08b450c8947e4c747e800000000c747ec000000008b45148947f08b551c8d47dc *8942048b452c89c12b4d083b4d147c4c8b4504034508c747f4e0060c088947f8c747fc54dc0b08 *8b45188907c745001c091008894dfc8d47f48945f88b45208945f48d47fc8945f0c7450400dd0d *0883ed10b8c09b0e08e975ffffff8b45280345088b5504035508c747f4e0060c088957f8894d2c *8945288d47f489452483c51883ef08b8fcd80d08e943ffffffdcd80d082a730000240003008b4d *048b46048945008b46048904248b450c83c0088b5520c745fc4cdd0d0883ed04894c240801d089 *442404e83bb9f6ff89c6ff650089f6d8d80d08260600002400070083c7283b7b5c760cc7436c0a *0000008b43f8ffe08b460c3b46100f849c0000008b46102b460c39451874603945187c2c8945f4 *8b46088945f88b46048945fc8b46148945008b55108b460c89451089d6c745f030de0d0883ed10 *eb568b46088945fc8b46048945008b46148945048b461089450c8b55108b460c89451089d6c745 *f844dc0d0883ed08eb278b46088945008b46048945048b461489450c8b55108b460c89451089d6 *c745fc94db0d0883ed0483ef288b06e956ffffff8b45183b46147f58c747dc54dc0b088b450489 *47e0c747e434da0d088b450c8947e88d47dc8947ec8b46048947f08b46088947f48b460c8947f8 *8b46108947fc8b46148907c74304ecee11088d77e4c7450010db0d08b870331008e9f6feffffc7 *47dc54dc0b088b45048947e08b45188945088b45108945048b450c894500c7450c1c0910088d47 *dc8945fcc74510a4d90d0883ed0483ef20b8c09b0e08e9b3feffff90f4df0d0800000000000000 *00000001000000000011000000be94ee1108ff6500e9f3ffffff9090901ce00d08000000000000 *0000000001000000000011000000be94ee1108ff6500e9f3ffffff90909088e3110824e00d0817 *00050000000000110001008d45f83b4354730abe78e311088b43fcffe0c745fc1c0910088b4500 *8945f8c7450014e40d0883ed08b814e10d08ebe04cee1108c0e2110854e2110878e3110868e00d *08180006000000000011000f0083c7203b7b5c7611c7436c08000000be80e311088b43fcffe0c7 *47e4e8e40d088b45048947e8c747ecf8e50d088b45108947f08b45088947f48b45048947f88b45 *008947fc8b450c89078d47e48943048d77ec83c514b870331008ebba8d7600c0e2110854e21108 *c0ee1108d0ee110878e3110880e3110888e31108e8e00d08040001000000000011007f008d45fc *3b4354720883c7483b7b5c7611c7436c12000000be88e311088b43fcffe0c747bc94b90b088b45 *008947c0c747c4ece80b088d47bc8947c8c747ccd8e31108c747d0c0ee1108c747d4d0ee1108c7 *47d8e0d01108c747dc3ce60d088b45008947e0c747e890eb0d088b45008947ec8d47c48947f08d *47dc8947f4c747f874ec0d088b45008947fc8d47e889078d47f8894500be9ce3110883ed04b808 *121008e978ffffff90000000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0c747 *ec14c50c088b46048947f08b46088947f4c747f800000000c747fc000000008b461489078d77ec *83c504b8d46d1008ebcb9001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b7604c745f4c4e10d0883ed0c8b06ebe189f60a000300010001000f00000083c714 *3b7b5c760cc7436c050000008b43fcffe08b45043b46087c388b56040fb64410088b55044ac747 *f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450089078955048d47f8894500b84ce20d *08ebbe8b750083c50883ef148b4500ebb089f6c30000002400000083c70c3b7b5c7615c7436c03 *000000c74320fe000000b8b03d1008ffe0c747f8e4bb0b088b45048947fc89378d77f883c5108b *4500ebe490040100002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f84ce20d *088b45048947fc8b460489078b4510488945008b450c8945fc8d77f8c74504b8e20d0883ed04b8 *4ce20d08ebcb90040000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe08b560485 *d2751dc747f8e4bb0b088b45088947fc8b450c89078d77f883c5148b4500ebda8b45108945fc89 *5510c74500f8e20d0883ed0483ef0cb840f50d08ebbd8d760003000000240000008b450c8945f8 *897500c745fc48e30d0883ed08e904120000030000002400000083c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f814e20d088b450c8947fc8b56048d47f88942048b450c8945fcc74500a8 *e30d0883ed04b814f50d08ebd18d760003000000240000008b450889750889c6c74500c8e30d08 *ff268d760083c504e93cb700000000000024000000897500e92cb700006ce00d08010000002400 *01008b4504894500c7450438e40d08e9ceceffff89f68b45048945fcc745004ce40d0883ed04e9 *f7c0ffff8d760060e40d0860e40d0860e40d0860e40d0860e40d0828e40d086ce00d0801000000 *250003006ce00d0801000000240003008b06668378fe0975178b45048945fcc745009ce40d0883 *ed04b88cc30c08ffe089750483c504b874e80b08ebf18d76006ce00d0804000200010000000c00 *03008d45f83b435473058b43fcffe08b55008b460489450089d6c745fca8e40d0883ed048b06eb *e589f6e9e30000008d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b46048945f483ed0cb8b4c30c08ebe28d760074e00d080401000024000100897510 *8b55088b450c8945088b450489450c89550483c504e9c3faffff8d760068e00d08040000002400 *090083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f820e50d088b450c8947fc8b461489 *45fc8b46108945f88b46048945f48975f08d47f88945ecc745e804d211088b45108945e4c74500 *58e50d0883ed1cb878910e08ebb889f610e50d080000000068e00d0800000100050000000b0009 *008d45d03b435473058b43fcffe08b46148945f08b46108945f48b460c8945f88b46088945fc8b *7604c745ec84e50d0883ed148b06ebd589f600e10d0801000100130001008d45f43b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb814e10d08ebe28d760083c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8e4bb0b088b45108947fcc70700d211088d77f883 *c5148b4500ebe089f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000 *b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760003000200010001000f *0000008b56088b460483c008c74500a4e60d08c74424080100000089442404891424e864b2f6ff *89c6ff65008d7600eb2e89f60000000024000000be0cd2110883c504ff65009010e70d08000000 *000000000000000100000001000d0000008d45fc3b435473058b43fcffe08b7604c745fc1ce70d *0883ed04b830571008ebea8d7600220000002400000083c7203b7b5c7615c7436c08000000c743 *20fe000000b8b03d1008ffe0c747e43cdc0b088b45048947e8c747ec7cdc0b088d47e48947f089 *77f4c747f8e4bb0b088b45088947fc8d47ec89078d77f883c50c8b4500ebc49000000000240000 *0083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f8e4bb0b088977 *fcc70700d211088d77f883c5048b4500ebe3e8e00d0801000000240001008b4504894500c74504 *cce70d08e90acbffff89f6e8e00d084603000024000300837e040075178b4518894510c7451410 *e80d0883c510b86ca50d08ffe08b45040fb640088945148b750cc745106ce70d0883c50cb81c09 *1008ebe090e8e00d084603000024000300c7450030e80d08ff268d7600e8e00d08460100002400 *07008b45148945fc8975f8c745f4c0ee1108c745f0c8e11108c7450078e80d0883ed10e946a0ff *ff89f6c745f8000000008b7510c7450090e80d08c745fc5873100883ed0ce950270200c745f801 *0000008b7510c7450090e80d08c745fc5873100883ed0ce930270200d8e80d08b8e80d08e8e00d *084600000025000700e8e00d08460300002400070083c7143b7b5c760cc7436c050000008b43f8 *ffe0c747f0e4e60d088b45048947f48b46048947f8c747fc40e70d088b460489078d47fc894514 *8b45188945fc8d47f0894510c745000ce90d0883ed04b8b4c30c08ebbc89f68b45188945fcc745 *0018e90d0883ed04e983d9feff8d760001000100130000008d45f43b435473058b43f8ffe08d45 *f8c700d46d10088970048b46048945f483ed0cb808c30c08ebe28d760083c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f890e90d088b45188947fc8b451889450c8b45088945188b451489 *45088b45108945148d47f889451083c508b888e00d08ebc98d760001000100130000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb808c30c08ebe28d76 *0083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f810ea0d088b45188947fc8b45188945 *0c8b45088945188b45148945088b45108945148d47f889451083c508b888e00d08ebc98d76003c *ea0d08bce90d0870e90d08e8e00d080600000025002700e8e00d0804000000240037008b460c3b *461075208b45108945f48b46048945fc897500c745f8a0ea0d0883ed0cb8dcc30c08ffe08b450c *8945048b450889450c8b451089450889751083c504b838e00d08ebdf90e8e00d08440000002400 *37008b46048b400489750889c6c74500acea0d08ff268b45108945fcc7450000eb0d0883ed04e9 *dbd8feff8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc9ce90b088b45088907 *8d77fc83c514b8c0351008ebe58d76002ceb0d082ceb0d082ceb0d082ceb0d0814eb0d0868e60d *08e8e00d080400000025003700e8e00d0804000200030000000b0037008d45d83b435473058b43 *fcffe08b45008945ec8b460c8945f48b46088945f88b46048945fcc745f080eb0d0883ed14b88c *c30c08ebd589f6e9a70000008d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8 *e90b088b460889078d47fc8945008975fcc745f8c0ee110883ed08b880ae0d08ebd889f683c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b460889078d47fc8945008975fcc7 *45f8c0ee110883ed08b880ae0d08ebd889f60cec0d08d0eb0d08f0e00d080100000025000100c8 *eb0d0800000000f0e00d0800000100020000000e0001008d45f03b435473058b43fcffe08b4608 *8945fc8b7604c745f85cec0d0883ed088b06ebe7f0ee1108b8ef1108c8ef110898ec0d080b0002 *0000000000110007008b7500c74500dcee0d08ff268b750483c508ff2602000000150000008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b8 *2cda0b08ebdc9083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8d0ec0d088b45048947 *fc89378d47f8894504c74500f0ee1108b82cda0b08ebdb9000ed0d08c0ec0d0898ec0d08010000 *002500010098ec0d0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46048945f48b7608c745f04ced0d0883ed108b06ebdb83c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f858ed0d088b45048947fc8b460489078d47f8894504c74500b8ef1108b8 *2cda0b08ebd889f68b750483c508ff2602000000150000008d45f03b435473058b43f8ffe08d45 *f8c700d46d10088970048b46088945f48b46048945f083ed10b82cda0b08ebdc9083c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8d4ed0d088977fc8b450489078d47f8894504c74500f0 *ee1108b82cda0b08ebdb9004ee0d08c4ed0d0898ec0d08010000002500010098ec0d0802000000 *150001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c7 *45f050ee0d0883ed108b06ebdb83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f85cee0d *088b46048947fc8b450489078d47f8894504c74500c8ef1108b82cda0b08ebd889f68cee0d0888 *ed0d0898ec0d08010000002500070004000100000000001100000083c7183b7b5c7611c7436c06 *000000be98e311088b43fcffe0c747ecece80b08c747f0e0d01108c747f4e0e31108c747f800d2 *11088b45008947fcc707e0d011088d77ec83c5048b4500ebcb04000200000000001100000083c7 *0c3b7b5c7611c7436c03000000be9ce311088b43fcffe0c747f88cef0d088b45008947fc8d77f8 *83c5048b4500ebe68d76000000000024000000e91b1802008d760001000100130000008d45f03b *435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f47cef0d0883ed10b81c091008 *ebde909090f0ee110800ef1108e0ef1108f0ef1108bcef0d08190006000000000011000f008d45 *fc3b4354720883c7143b7b5c7611c7436c05000000bea0e311088b43fcffe0c747f014f20d088b *45048947f48b450c8947f88b45148947fc8b450889078d47f08945148b7510c745fc08f50d0883 *ed048b06ebc989f68b750483c508ff2602000000150000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f87cdc0b08c747fc10ef1108 *8b460889078d47f88945f48b46048945f083ed10b82cda0b08ebc98d760083c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f844f00d088977fc8b450489078d47f8894504c7450000ef1108 *b82cda0b08ebdb9098f00d0834f00d08c0ef0d080100000025000100c0ef0d0802000000150001 *008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f0e4 *f00d0883ed108b06ebdbc0ef0d0803000000120005008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8f0f00d088b46088947fc8b460c *89078d47f88945f48b46048945f083ed10b804a80e08ebca8b750483c508ff26bcef0d08010001 *00130001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4c745f0 *f0ee110883ed10b82cda0b08ebdb83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f890f1 *0d088b45048947fc8d47f8894504897500b82cda0b08ebe18d7600c0f10d087cf10d08bcef0d08 *0100000025000100bcef0d080400000012000b008d45f03b4354720883c7103b7b5c760cc7436c *040000008b43f8ffe08d45f8c700d46d1008897004c747f42cf10d088b46048947f88b46088947 *fc8b460c89078d47f48945f48b7610c745f008f20d0883ed108b06ebc3908b750483c508ff26bc *ef0d0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b4604 *8945f4c745f0f0ee110883ed10b82cda0b08ebdbbcef0d0802000000150001008d45f03b435472 *0883c7183b7b5c760cc7436c060000008b43f8ffe08d45f8c700d46d1008897004c747ec80f20d *088b46048947f0c747f87cdc0b08c747fcd8ef11088d47ec89078d47f88945f48b46088945f083 *ed10b82cda0b08ebbc89f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8bcf20d088b *45048947fc8b460489078d47f8894504c74500e0ef1108b82cda0b08ebd889f6bcef0d08010001 *00130001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4c745f0 *f0ee110883ed10b82cda0b08ebdbbcef0d0802000000150001008d45f03b4354720883c7183b7b *5c760cc7436c060000008b43f8ffe08d45f8c700d46d1008897004c747ec64f30d088b46048947 *f0c747f87cdc0b08c747fcd8ef11088d47ec89078d47f88945f48b46088945f083ed10b82cda0b *08ebbc89f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8a0f30d088b45048947fc8b *460489078d47f8894504c74500e0ef1108b82cda0b08ebd889f600f40d081cf30d08bcef0d0801 *000000250005008b7604c7450050f40d08ff2650f40d086cf20d08bcef0d080100000025000500 *8b7504c7451470f40d0883c514ff2690bcef0d0801000100130001008d45f03b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f4c745f0f0ee110883ed10b82cda0b08ebdb83c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f88cf40d088b45188947fc8d47f88945188b46 *0489451483c514b82cda0b08ebdb90bcf40d0870f40d08bcef0d08c60300002500050004000100 *00000000110000008b7500c7450028f50d08ff2600000000240000008b760483c504ff65009090 *900400010000000000110000008d45fc3b4354730abeace311088b43fcffe08b7500c74500acf5 *0d088b06ebf0210000002400000083c7083b7b5c761cc7436c02000000c7450068f50d08c74320 *ff000000b8b03d1008ffe0c747fc54dc0b088b450489078d77fc83c5088b4500ebe79000000000 *240000008b460c89450083ed04ebb1900400010000000000110000008d45fc3b4354730abeb0e3 *11088b43fcffe08b7500c7450030f60d088b06ebf0210000002400000083c7083b7b5c761cc743 *6c02000000c74500ecf50d08c74320ff000000b8b03d1008ffe0c747fc54dc0b088b450489078d *77fc83c5088b4500ebe79000000000240000008b461089450083ed04ebb1900400010000000000 *110000008d45fc3b4354730abeb4e311088b43fcffe08b7500c74500b4f60d088b06ebf0010000 *002400000083c7083b7b5c761cc7436c02000000c7450070f60d08c74320ff000000b8b03d1008 *ffe0c747fcd4f10c088b450489078d77fc83c5088b4500ebe79000000000240000008b46188945 *0083ed04ebb1900400010000000000110000008b7500c74500e0f60d08ff260000000024000000 *8b761c83c504ff26000000000a000000ff650090000000000a000200ff650090000000000a0003 *00ff650090000000000a000500ff650090000000000a000600ff650090000000000a000700ff65 *0090000000000a000800ff650090000000000a000a00ff650090000000000a000b00ff65009000 *0000000a000c00ff650090000000000a000d00ff650090000000000a000e00ff65009000000000 *0a000f00ff650090000000000a001000ff650090000000000a001100ff650090000000000a0012 *00ff650090000000000a0001008b4500ff60ec909001000000020002008b4500ff60e889f60100 *0000090002008b4500ff60e89090000000000a0000008b4500ff60f09090000000000a0002008b *4500ff60e89090000000000a0000008b4500ff60f0909002000000040001008b4500ff60ec89f6 *02000000090001008b4500ff60ec909002000000040000008b4500ff60f089f602000000090000 *008b4500ff60f0909003000000010001008b4500ff60ec89f603000000090001008b4500ff60ec *909094e1110868f80d0808000200000000001100010083c7243b7b5c7611c7436c09000000be0c *e411088b43fcffe08b550485d27512be94e1110883c50483ef24b89c071008ebe5c747e028f90d *088b45008947e48957e8c747ec9cf90d088b45008947f08957f4c747f8e4bb0b088d47ec8947fc *8d47e089078d77f883c5088b4500eba890000000002400000083c7083b7b5c760ec7436c020000 *00b8f0371008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe800000200170000008d *45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f08b46048945ecc745f4 *f4f80d0883ed14b88c910d08ebd589f6000000002400000083c7083b7b5c760ec7436c02000000 *b8f0371008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe800000200170000008d45 *ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f08b46048945ecc745f468 *f90d0883ed14b8d8910d08ebd59090080002000000000011000000837d040079288b450489c1f7 *d983f91f7f0f8b450089c6d3fe83c5088b4500ffe0837d0000791abeffffffffebeb837d041f7f *0d8b45000fb64d0489c6d3e6ebd8be00000000ebd10400010000000000110000008b7500c74500 *48fa0d08ff2600000000240000008b4604894500e92db00000900b00020000000000110000008b *7500c7450090fa0d08ff2621000000240000008b45048945008b4604894504e9ebae00008d7600 *01000000240000008b55048b460489450489d6c7450074fa0d08ff260400010000000000110000 *008b7500c74500c4fa0d08ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8 *ffe0c747fc54dc0b088b460489078d77fc83c5048b4500ebe7900400010000000000110000008b *7500c7450010fb0d08ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0 *c747fc84ed0b088b460489078d77fc83c5048b4500ebe7901600030000000000110000008b7500 *c7450098fb0d08ff2662000000240000008b45048945008b45088945048b4604894508e965b300 *009022000000240000008b55088b460489450889d6c745005cfb0d08ff2602000000240000008b *55048b460489450489d6c745007cfb0d08ff2610f01108acfb0d08040001000000000011000100 *8b7500c74500d8fb0d08ff26acfb0d08000000002400010083c7083b7b5c760cc7436c02000000 *8b43f8ffe08b46043dffffff7f750fbe10f0110883c50483ef088b06ebe540c747fc84ed0b0889 *078d77fc83c5048b4500ebd090905ce511081cfc0d080400010000000000110001008d45fc3b43 *54730abe34e411088b43fcffe08b7500c745005cfc0d088b06ebf01cfc0d080000000024000100 *83c7083b7b5c760cc7436c020000008b43f8ffe0c747fcb8050c088b46048907c7450048f01108 *8d47fc8945fc83ed04b8d4120e08ebdb9020f0110854f0110894fc0d0804000100000000001100 *03008d45fc3b4354730abe3ce411088b43fcffe08b7500c7450028fd0d088b06ebf094fc0d0821 *0000002400010083c7083b7b5c760cc7436c020000008b43f8ffe08b45043b4604750fbe20f011 *0883c50883ef088b06ebe78b450448c747fc84ed0b0889078d77fc83c5088b4500ebcf9094fc0d *0800000000240003008b4604894500be54f01108c745fcd8fc0d0883ed04ff269054f0110840fd *0d080b00020000000000110001008b7500c745008cfd0d08ff2640fd0d0821000000240001008b *45048945008b4604894504e99bb200008d760040fd0d0801000000240001008b55048b46048945 *0489d6c745006cfd0d08ff2688f0110898f01108a0fd0d0800000200180003008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8750002008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f498f01108c745f088f0110883ed10b8 *2cda0b08ebbf9088f01108a8f0110810fe0d0800000200180003008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8050002008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f4a8f01108c745f088f0110883ed10b82cda0b08eb *bf9088f01108b8f0110880fe0d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e895ff01008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f4b8f01108c745f088f0110883ed10b82cda0b08ebbf9088f011 *08c8f01108f0fe0d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e825ff01008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f4c8f01108c745f088f0110883ed10b82cda0b08ebbf900400010000000000 *110000008b7500c74500acff0d08ff268b760483c504ff65008d76008b46048943048b760883c5 *04e94f5102008d760084ff0d0878ff0d080000000000000000250000000b000200000000001100 *00008d45fc3b4354730abec0e411088b43fcffe08b7500c745005c010e088b06ebf08b45043b46 *040f94c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d7600 *000000002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b4500 *8b40f0ebee8b45048943088b46048943048b7608c745040c000e0883c504e9ea4f020089f63000 *0e08d8ff0d080000000021000000250000008b55048b460489450489d6c7450064000e08ff2600 *0000002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b *40f0ebee8b46048943088b45048943048b7508c7450880000e0883c508e9764f020089f6000000 *002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0 *ebee8b460489430c8b46088943088b45048943048b7508c74508cc000e0883c508e9744f0200f0 *000e08a4000e080000000042000000250000008b46048945008b55048b460889450489d6c745fc *28010e0883ed04ff268d760028010e0864000e080000000001000000250000000b000200000000 *00110000008d45fc3b4354730abec4e411088b43fcffe08b7500c745000c030e088b06ebf08b45 *043b46040f95c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f0 *8d7600000000002400000085f67510befcd1110883c5048b45008b40f0ffe0be04d2110883c504 *8b45008b40ecebee8b45048943088b46048943048b7608c74504bc010e0883c504e93a4e020089 *f6e0010e0888010e080000000021000000250000008b55048b460489450489d6c7450014020e08 *ff26000000002400000085f67510befcd1110883c5048b45008b40f0ffe0be04d2110883c5048b *45008b40ecebee8b46048943088b45048943048b7508c7450830020e0883c508e9c64d020089f6 *000000002400000085f67510befcd1110883c5048b45008b40f0ffe0be04d2110883c5048b4500 *8b40ecebee8b460489430c8b46088943088b45048943048b7508c745087c020e0883c508e9c44d *0200a0020e0854020e080000000042000000250000008b46048945008b55048b460889450489d6 *c745fcd8020e0883ed04ff268d7600d8020e0814020e0800000000010000002500000000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e815fb01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4e4f01108 *c745f0a0e4110883ed10b8acd80c08ebbf90c8e4110870030e081600030000000000110001008b *7500c745009c030e08ff2670030e0802000000240001008b4604894500e929b50000905cdc1108 *c8e41108a8030e080b00020000000000110003008b7500c7450030060e08ff26c745005cdc1108 *e954d6fdff83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc74dc1108 *8b450489078d77f883c50c8b45008b40ecebdd8d7600ac030e0803000000120001008d45ec3b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f88c *6b10088b460c8947fc8b460889078d47f88945f48b46048945f0c745ec0000000083ed14b8d0b8 *0e08ebc39083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e81c040e088b46048947ec8b *46088947f08b45088947f4c747f87cdc0b08c747fc7cdc11088d47e889078d77f883c50c8b4500 *8b40ecebc489f674040e08d8030e08ac030e080200000025000100ac030e080400010001000000 *0c0001008d45f83b435473058b43fcffe08b46048945fc8b450089750089c6c745f8d8040e0883 *ed088b06ebe28d7600ac030e0802000000150001008d45f43b4354720883c7083b7b5c760cc743 *6c020000008b43f8ffe08d45f8c700d46d1008897004c747fce8040e088b460489078b46088945 *f48d77fc83ed0cb8e8040e08ebd390ac030e0803000000120001008d45ec3b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f820050e088b460889 *47fc8b460c89078d47f88945f48b46048945f0c745ec0000000083ed14b8d0b80e08ebc39083c7 *1c3b7b5c760cc7436c070000008b43f8ffe0c747e874050e088b46048947ec8b45048947f08b46 *088947f4c747f87cdc0b08c747fc6cdc11088d47e889078d77f883c5088b45008b40ecebc489f6 *cc050e08cc030e08a8030e080100000025000300c8e4110830060e080400010000000000110001 *008d45f83b4354730abee8e411088b43fcffe08b45008945fcc7450000d21108c745f800000000 *83ed08b8d0b80e08ebe00b00020000000000110000008b7500c74500cc060e08ff262100000024 *00000083c7083b7b5c760cc7436c020000008b43f8ffe08b4504034604c747fce0060c0889078d *77fc83c5088b4500ebe489f601000000240000008b55048b460489450489d6c7450094060e08ff *260400010000000000110000008b7500c7450000070e08ff26000000002400000083c7083b7b5c *760cc7436c020000008b43f8ffe0c747fce0060c088b460489078d77fc83c5048b4500ebe79004 *00010000000000110000008b7500c7450078070e08ff26be78d6110883c5048b4500ff60e889f6 *be78d6110883c5048b4500ff60e889f654070e0844070e0800000000000000002500000020d411 *0848d7110808e5110878070e0804000100000000001100070083c7183b7b5c7611c7436c060000 *00be08e511088b43fcffe0c747ece8070e088b45008947f0c747f80c0b0e088b45008947fc8d47 *ec89078d47f8894500b8a80b0c08ebd28d760080070e0801000100130001008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb894070e08ebe28d7600010001 *00130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0c *b8408c0c08ebe28d760004000100010000000c0000008d45fc3b4354720883c70c3b7b5c760cc7 *436c030000008b43fcffe0c747f81c080e088b45008947fc8d47f88945008b760483ed04b80812 *1008ebde03000000120000008d45ec3b4354720883c7083b7b5c760cc7436c020000008b43f8ff *e08d45f8c700d46d1008897004c747fc54080e088b460c89078d47fc8945f48b46088945f08b76 *0483ed14b814161008ebcd8d7600be78d6110883c50c8b4500ff60e889f68b46048945088b7504 *83c504e9ff0802008d7600f8080e08e8080e080000000042000000250000008b7510c745082009 *0e08e9d908020090be78d6110883c50c8b4500ff60e889f68b46048945088b750483c504e9b708 *02008d760040090e0830090e080000000042000000250000008b750883c514ff26be78d6110883 *c50c8b4500ff60e889f68b46048945088b750483c504e9770802008d760080090e0870090e0800 *00000042000000250000008b7510c74508a8090e08e95108020090a8090e0868090e0800000000 *04000000250000000500000024000000837e042d75118b7504c74504cc090e0883c5048b06ffe0 *8b7514c7450c68090e0883c504b808121008ebea908b46088945008b7604c745fcd4090e0883ed *04ff268d7600000a0e0820090e080000000004000000250000008975008b7604c745fc2c0a0e08 *83ed04ff2689f6be78d6110883c50c8b4500ff60e889f68b46048945088b750483c504e9a70702 *008d7600500a0e08400a0e080000000042000000250000008975008b750cc74504780a0e0883ed *04e97b0702008d7600780a0e08780a0e08780a0e082c0a0e08780a0e08780a0e08780a0e08780a *0e0800000000030000002500000004000100030000000b0000008d45ec3b435473058b43fcffe0 *8b460c8945f88b46088945fc8b55008b460489450089d6c745f4bc0a0e0883ed0c8b06ebd989f6 *7c070e080b000200020000000e00010083c7203b7b5c760cc7436c080000008b43fcffe0c747e4 *98080e088b46088947e88b45008947ec8b45048947f0c747f4c80a0e088b46048947f88b450489 *47fc8d47e489078d47f489450483c504b810750c08ebbd90909048d71108640b0e080b00020000 *0000001100010083c7083b7b5c7611c7436c02000000be10e511088b43fcffe0c747fc080c0e08 *8b450489078d47fc89450483c504b810750c08ebe28d76008b45048b560489550489c6e9480602 *00be78d6110883c5088b4500ff60e889f6c00b0e08c00b0e08c00b0e08c00b0e08c00b0e08c00b *0e08c00b0e08b00b0e0800000000010000002500000004000100010000000c0000008d45fc3b43 *5473058b43fcffe08b55008b460489450089d6c745fcfc0b0e0883ed048b06ebe5909040d71108 *70d6110868d6110818f11108300c0e08040001000000000011000f0083c7143b7b5c7611c7436c *05000000be18e511088b43fcffe0c747f09c0c0e088b45008947f4c747fc540e0e088d47f08907 *8d77fc83c5048b4500ebda8d76003c0c0e0801000100130001008d45f03b435473058b43f8ffe0 *8d45f8c700d46d10088970048b46048945f4be18f1110883ed10b808121008ebdd89f68b45048b *560489550489c6e92c050200be78d6110883c5088b4500ff60e889f6dc0c0e08dc0c0e08dc0c0e *08dc0c0e08dc0c0e08dc0c0e08cc0c0e08dc0c0e08000000000100000025000000040001000100 *00000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc180d0e0883ed *048b06ebe589f6300c0e0801000100130001008d45f43b4354720883c7083b7b5c760cc7436c02 *0000008b43f8ffe08d45f8c700d46d1008897004c747fc240d0e088b460489078d47fc8945f483 *ed0cb85c6c0c08ebd6300c0e0801000100130005008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe08d45f8c700d46d1008897004c747f8580d0e088b46048947fc8d47f889 *45f4c745f028f1110883ed10b838510c08ebce04000100010000000c0000008b760483c504ff26 *340c0e0804000100010000000c0001008d45f83b435473058b43fcffe0c745fc081210088b4500 *8945f88b460489450083ed08b8385d0c08ebe189f6300c0e0804000100010000000c0007008d45 *fc3b4354720883c7303b7b5c760cc7436c0c0000008b43fcffe0c747d48c6b10088b46048947d8 *8b45008947dcc747e0a80d0e088b45008947e4c747ec000e0e088d47e08947f0c747f4180e0e08 *8d47ec8947f8c747fcc05e0c088d47f489078d47d48945008d47fc8945fc83ed04b838510c08eb *a2c4db1108cc0e0e0800000200180001008d45ec3b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e84def01008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f464d61108c745f064db1108bec4db110883ed14b814161008ebba48d71108 *f4f0110804f111083c0f0e080b000200000000001100070083c7243b7b5c7611c7436c09000000 *be30e511088b43fcffe0c747e0b80f0e088b45048947e4c747ecf00f0e088b45048947f0c747f8 *ec100e088d47e08947fc8d47ec89078d47f889450483c504b810750c08ebc28d76000100010013 *0000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4fcd111088b760483 *ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d1008897004c745f404d211088b760483ed10b808121008ebde8d7600be78d6110883c5088b45 *00ff60e889f68b750483c508ff2630100e0820100e08000000000100000025000000c74500f4f0 *1108c745084c100e08e9e9befdff908b750883c510ff2660100e084c100e08400f0e0803000000 *250001008b46048945f8c745f404f111088b4604894500c745fc7c100e0883ed0ce9aabefdff89 *f6be78d6110883c50c8b4500ff60e889f6a0100e08a0100e08a0100e08a0100e087c100e08a010 *0e08a0100e08a0100e08400f0e080200000025000300400f0e0804000100020000000e0003008d *45ec3b435473058b43fcffe08b46088945fc8b55008b460489450089d6c745f8dc100e0883ed08 *8b06ebdff4db110818110e0800000200180001008d45ec3b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e801ed01008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f464d61108c745f064db1108bef4db110883ed14b814161008ebba04 *00010000000000110000008b7500c745004c120e08ff2601000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb830d40c08ebe28d760083c714 *3b7b5c760cc7436c050000008b43f8ffe0c747f0a8110e088b46048947f4c747fc94b90b088d47 *f089078d77fc83c5048b45008b40ecebd790bee0d0110883c5048b4500ff60f089f610120e0810 *120e08d4110e0810120e0810120e0810120e0810120e0810120e08000000000000000025000000 *24dc11084c120e0800000200180001008d45ec3b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e8cdeb01008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f464d61108c745f064db1108be24dc110883ed14b814161008ebba54db11085c *f11108bc120e080b00020000000000110003008d45f83b4354730abe5ce511088b43fcffe08b45 *048945f8c745fcc4130e0883ed08b810dc0c08ebe78d7600000000002400000083c70c3b7b5c76 *15c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e088977fc8b450089078d77 *f883c5088b4500ebe4908b45048945008975fcc7450408130e0883ed04e908a9000040130e0840 *130e08c0120e0801000000250001008975008b45048945fcc745046c130e0883ed04e970c2feff *6c130e086c130e08c0120e0802000000250001008b45088945fc897508c7450098130e0883ed04 *e9a8c1feff98130e0898130e08c0120e0802000000250001000200000004000000ff6500900200 *000009000000ff6500900300000001000000ff6500900300000009000000ff6500905472756500 *8d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e825ea01008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f0f4130e0883ed10b84cce0b08ebbf9046616c73650089f6000002001800 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8b9e901008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745 *f060140e0883ed10b84cce0b08ebbf90a8e51108cc140e0800000200180001008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e84de901008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0a8e5110883ed10b8 *2cda0b08ebbf9098e5110838150e0800000200180001008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8e1e801008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f098e5110883ed10b82cda0b08ebbf900900 *0200000000001100000083c7183b7b5c7611c7436c06000000bed8e511088b43fcffe0837d0000 *780a83ef18b890c60e08ebee8b450089c2f7da85d27809c747ece8160e08eb07c747ec7c160e08 *8b45048947f08957f4c747f87cdc0b08c747fce0f111088d47ec89078d77f883c5088b45008b40 *eceba989f601000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b *4e08ba6766666689c8f7eac1fa0289c8c1f81f29c28d149201d229ca8b46048945f48955f083ed *10b890c60e08ebc28d760001000100160000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe08d45f8c700d46d1008897004c747f828160e088b46048947fc8b460889078b *4e08ba6766666689c8f7eac1fa02c1f91f29d18d47f88945f4894df083ed10b890c60e08ebb98d *760001000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460489 *45f48b46088945f083ed10b890c60e08ebdc90d0f11108ecf11108dce5110818170e080b000200 *00000000110007008d45fc3b4354730abedce511088b43fcffe08b7500c74500a8180e088b06eb *f083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc90e511088b450489 *078d77f883c5088b45008b40ecebdd8d760020170e0802000000150001008d45f03b435473058b *43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b834170e08ebdc90 *20170e0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46 *088945f48b46048945f083ed10b834170e08ebdc9018170e08020000002400070083c70c3b7b5c *760cc7436c030000008b43f8ffe08b560483fa227529c747f8d4170e088b45048947fc8b450889 *078d47f8894508c74504d0f1110883c504b82cda0b08ebcdc747f898170e088b45048947fc8b45 *0889078d47f889450889550483c504b894c70e08eba889f68b46088945008b7604c745fc10180e *0883ed04ff268d76007c180e0854170e0818170e080100000025000700c0f11108ecf11108a818 *0e0809000200000000001100030083c7183b7b5c7611c7436c06000000bee4e511088b43fcffe0 *8b550083fa277511c74500c0f1110883ef18b82cda0b08ebe5c747ec30190e088b45048947f089 *57f4c747f87cdc0b08c747fcb8f111088d47ec89078d77f883c5088b45008b40ecebb490ac180e *0801000100160001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45 *f8c700d46d1008897004c747f87cdc0b08c747fcb8f111088b460489078d47f88945f48b460889 *45f083ed10b894c70e08ebc9909090281a0e080000000000000000000001000000000011000000 *8d45fc3b4354730abeece511088b43fcffe0c745fc381a0e0883ed048b43608968308b53688d47 *04894204c744240400000000891c24e837b4010089442408c7042400000000e849a80100c74424 *04000000008b442408890424e8a2b401008b43608b683005880000008943548b43688b780483ef *0489c28b4018c1e00c030283e80489435c8b4500eb8590e96fffffff8d76000000000024000000 *be0cd2110883c504ff650090e0d81108fcf11108441a0e080b00030000000000110003008d45fc *3b4354730abe00e611088b43fcffe0c7430404f21108befcf11108c745fcac1b0e0883ed04b870 *331008ebe190bee0d8110883c504ff6500900000000024000000be0cd2110883c504ff650090c7 *4500a01a0e08c7042401000000e897a7010090ac1a0e088c1a0e08441a0e080000000025000100 *441a0e0801000000240001008b7504c74504d41a0e0883c504ff2690441a0e0822000000240001 *008b55048b4604c74504e01a0e0883c5048944240889542404c70424b0061008e8449c0100ff65 *0090441a0e0802000000240001008b55048b460489450489d6c74500fc1a0e08ff26441a0e0801 *000000240001008b46088945008b7604c745fc301b0e0883ed04ff268d7600441a0e0804000200 *010000000c0001008d45f83b435473058b43fcffe08b55008b460489450089d6c745fc501b0e08 *83ed048b06ebe589f6441a0e08020000002400010083c7083b7b5c7615c7436c02000000c74320 *fe000000b8b03d1008ffe0c747fc781b0e088b450489078b45088945048d47fc89450883c504b8 *786f0e08ebdc9000e6110808f21108381c0e0800000000ec1b0e08000001000000000011000300 *8d45f83b4354730abe08e611088b43fcffe0c745fc08f21108c745f804d2110883ed08b85c1a0e *08ebe689f6e9cfffffff909090e0d8110818f21108401c0e080400020000000000110003008d45 *fc3b4354730abe10e611088b43fcffe0c7430420f21108be18f21108c745fcf81c0e0883ed04b8 *70331008ebe190bee0d8110883c504ff6500900000000024000000be0cd2110883c504ff650090 *c745009c1c0e08c7042402000000e89ba5010090a81c0e08881c0e08401c0e0800000000250001 *00401c0e0801000000240001008b7504c74504d01c0e0883c504ff2690401c0e08010000002400 *0100c74500dc1c0e08e8e7a70100ff65009010e61108481d0e0800000000081d0e080000010000 *000000110001008d45fc3b4354730abe18e611088b43fcffe0c745fc04d2110883ed04b8581c0e *08ebed90e9d7ffffff90909098ef1108501d0e0800000200180001008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c9e001008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f4f0e51108c745f098ef110883ed10b82cda0b08 *ebbf90a8ef1108bc1d0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e85de001008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4f0e51108c745f0a8ef110883ed10b82cda0b08ebbf9048ef1108281e *0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e8f1df01008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f4f0e51108c745f048ef110883ed10b82cda0b08ebbf9058ef1108941e0e0800000200180001 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e885df01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4f0e51108c745f0 *58ef110883ed10b82cda0b08ebbf9068ef1108001f0e0800000200180001008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e819df01008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f4f0e51108c745f068ef110883ed10b82c *da0b08ebbf9078ef11086c1f0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8adde01008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f4f0e51108c745f078ef110883ed10b82cda0b08ebbf9088ef11 *08d81f0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e841de01008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f4f0e51108c745f088ef110883ed10b82cda0b08ebbf9038ef110844200e0800000200 *180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8d5dd01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4f0e51108 *c745f038ef110883ed10b82cda0b08ebbf9028ef1108b0200e0800000200180001008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e869dd01008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f4f0e51108c745f028ef110883ed *10b82cda0b08ebbf9018ef11081c210e0800000200180001008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8fddc01008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f4f0e51108c745f018ef110883ed10b82cda0b08ebbf90 *0400010000000000110000008b7500c74500d4210e08ff268b760483c504ff65008d76008b4604 *8943048b760883c504e9432f02008d7600ac210e08a0210e08000000000000000025000000ecf0 *1108d4210e080400010000000000110001008b7500c7450000220e08ff26d4210e080000000024 *0001008b4604894500e9adab000090ecf011080c220e080b000200000000001100010083c7183b *7b5c7611c7436c06000000bedce611088b43fcffe0c747ec6c220e088b45048947f0c747f8c022 *0e088d47ec8947fc8b450089078d77f883c5088b4500ebd49001000100130000008d45f43b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb828d00e08ebe28d76000c *220e0802000000240001008b4604894500e921960000900c220e0804000100020000000e000100 *8d45f83b435473058b43fcffe08b46048945fc8b7608c745f8a4220e0883ed088b06ebe70b0002 *0000000000110000008b7500c7450038230e08ff2621000000240000008b45043b46040f94c00f *b6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d76000100000024 *0000008b55048b460489450489d6c7450004230e08ff260b00020000000000110000008b7500c7 *45009c230e08ff2621000000240000008b45043b46047510befcd1110883c5088b45008b40f0ff *e0be04d2110883c5088b45008b40ecebee01000000240000008b55048b460489450489d6c74500 *6c230e08ff26d8dc1108fce61108b0230e0800000200180003008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e865da01008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f4fce6110883ed0cb824fc0c08ebc673797374656d00 *9000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e801da01008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f400d21108c745f018240e0883ed10b84cce0b08ebbf9067657443757272656e74446972656374 *6f72790000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e889d901008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f084240e0883ed10b84cce0b08ebbf9072656d6f766546696c65009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e819d901008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0fc240e0883ed10b84cce0b08ebbf9072656d6f76654469726563746f7279000000 *0200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c *1008893424e8a5d801008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d2 *1108c745f06c250e0883ed10b84cce0b08ebbf900cd11108e0250e0800000200180001008d45f4 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e839d801 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f40cd1110883ed0cb8c46d0e *08ebc66372656174654469726563746f72790000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cdd701008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f044260e0883ed10b84cce0b08eb *bf9080f0110870f011088ce71108b8260e080400010000000000110007008d45f03b4354730abe *8ce711088b43fcffe0c745f8000000008b45008945f4c745fcd4270e0883ed0cb804ee0b08ebe0 *897500e9c8ffffff04270e0804270e08c0260e080000000025000100897500e9acffffff20270e *0820270e08c0260e080000000025000100c0260e0822000000240001008b460483f82f743683f8 *5c7567837d04007916be00d21108c7450820270e0883c508b804270e08ffe08b45048945008b45 *08894504c7450820270e08eb2f837d04007916be00d21108c745083c270e0883c508b820270e08 *ebcd8b45048945008b4508894504c745083c270e08b85cd00c08ebb38b750883c50c8b06eba989 *f6b8260e0801000000240007008d56ff85d27e3085d2781d8955f88b45048945f4895500c745fc *48270e0883ed0cb8a4b10e08ffe0be70f0110883c504b89c071008ebef8b750483c5088b06ebe5 *90909038280e080000000000000000000001000000000011000000be60000000ff6500e9f3ffff *ff90909060280e080000000000000000000001000000000011000000be00000000ff6500e9f3ff *ffff90909000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8b9d501008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f4cc280e0883ed0cb81cd70e08ebc6000000002400000083c7083b7b5c7615c7436c02 *000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe8 *9000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e821d501008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f464290e0883ed0cb844d70e08ebc6000000002400000083c7083b7b5c7615c7436c02000000c7 *4320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe890000002 *00180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e889d401008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4fc290e *0883ed0cb86cd70e08ebc6000000002400000083c7083b7b5c7615c7436c02000000c74320ff00 *0000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe89000000200180000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e8f1d301008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4942a0e0883ed0c *b894d70e08ebc6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b0 *3d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe890e82a0e0800000000000000 *00000001000000000011000000be00000000ff6500e9f3ffffff909090142b0e08000000000000 *0000000001000000000011000000e82f69f6ff89c6ff650089f6e9efffffff9090909cf21108ac *f21108d4f2110888f21108e4f211081c2b0e080b0003000000000011001f008d45f03b4354730a *be0ce811088b43fcffe08b7500c74500f02e0e088b06ebf00000000024000000be0cd2110883c5 *04ff650090e3000000240000008b45040b46048b55088955048945088b450c894500c7450c682b *0e08e913ac00008d7600242b0e08e3000000240001008b4604894508bed4f21108c745007c2b0e *08ff261c2b0e08e30000002400050089750cbe9cf21108c74500ac2b0e08ff268d76008b7604eb *e78d76001c2b0e08e300000024000500ebd689f68b46048943048b7608c74500f42b0e08e9d724 *02008d7600f82b0e08e02b0e081c2b0e08e3000000250005001c2b0e0823000000240005008575 *04751a8b450c8945fc8b7508c74500242c0e0883ed08b808121008ffe0be0cd2110883c5108b45 *00ebf11c2b0e0823000000240005008b46048945fcc745f801000000c74500302c0e0883ed08e9 *5ccdffff1c2b0e0802000000240015008b4604894500bee4f21108c745fc682c0e0883ed04ff26 *901c2b0e080200000024001500c74500902c0e08ff268d76001c2b0e080200000024001d008975 *fcc745f888f21108c745f484f21108c74500b42c0e0883ed0ce91c5bffffeb7a89f60000000024 *00000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b08 *89378d77fc83c5048b4500ebea8d760021000000240000008b46048945008b45048945fcc74504 *f82c0e0883ed04e991aa000090ec2c0e0800000000202b0e0800000100000001000d0001008d45 *f43b435473058b43fcffe08b46048945fcbeacf21108c745f8342d0e0883ed088b06ebe589f683 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fc682d0e088b460489078d77fcc74500cc2c *0e08c745fc5873100883ed04b858731008ebd790eb7a89f6000000002400000083c7083b7b5c76 *15c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b45 *00ebea8d760021000000240000008b46048945008b45048945fcc74504d82d0e0883ed04e9b1a9 *000090cc2d0e0800000000202b0e0800000100000001000d0001008d45f43b435473058b43fcff *e08b46048945fcbeacf21108c745f8142e0e0883ed088b06ebe589f61c2b0e080200000024001f *0083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc482e0e0889378d77fcc74500cc *2c0e08c745fc5873100883ed04b858731008ebda89f68b46048943048b7608c745007c2e0e08e9 *172202008d7600b82e0e08902d0e081c2b0e080200000025001f001c2b0e080100000024001f00 *8b46248945008b45048945f88b7624c745fce42e0e0883ed0ce9fae20100909003000200000000 *00110000008b450083c504890424e8d265f6ff89c6ff6500900f00040000000000110000008b4d *008b55048b450883c50c8944240889542404890c24e80465f6ff89c6ff65009090900300020000 *000000110000008b450083c504890424e88268f6ff89c6ff650090030002000000000011000000 *8b450083c504890424e8a268f6ff89c6ff6500900c300e08e40100000000000000000400000000 *0011000000c744241400000000c7442410000000008b45008904248d45048b10895424108b4004 *894424148b450c83c5108944240c8b4424108b5424148944240489542408e8bf66f6ff8d4df889 *0189510489cdff650889f6e9a7ffffff9090900300020000000000110000008b450083c5048904 *24e87e68f6ff89c6ff65009050de110874f21108c8f2110834300e080400020000000000110007 *008d45ec3b4354730abe2ce811088b43fcffe0be50de1108c745fcdc320e0883ed048b06ebeb8d *7600eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d *1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760078300e080000000000000000 *0000010000000200100000008d45f43b435473058b43fcffe08b46048945f88b46088945f4c745 *fc84300e0883ed0cb808d80e08ebe189f6010000002400000083c508ff650089f63c300e080100 *00002400010085f67513bec8f21108c7450004310e08b8c0351008ffe0be44e8110883c5088b45 *00ebf13c300e08220000002400010085f675148b4504894500c7450418310e08b880d40e08ffe0 *be40e8110883c50c8b4500ebf18d76003c300e08220000002400010085f675178b45048945fcc7 *450048310e0883ed04b858d40e08ffe0be40e8110883c50c8b4500ebf13c300e08220000002400 *010085f675178b45048945fcc745007c310e0883ed04b8d8d20e08ffe0be40e8110883c50c8b45 *00ebf13c300e08220000002400010085f675178b45048945fcc74500b0310e0883ed04b830d40e *08ffe0be3ce8110883c50c8b4500ebf13c300e0801000000240001008975f8897500c745fce431 *0e0883ed08e9a3edfeff8d76003c300e0822000000240001008b4504894500c7450418320e08e9 *d2ecfeff89f638300e08010000002400030083c70c3b7b5c760cc7436c030000008b43f8ffe08b *450483c008c747f8d0300e088947fc8b560489178d57f88955f8c745f474f21108c745f084f211 *08894500c745fc3c320e0883ed10b808880d08ebc18d760038300e08010000002400030089f08b *7504894504c745005c320e08ff268d760038300e0801000000240003008b7604c74500bc320e08 *e9e10f02009030f31108ec320e080400020000000000110001008b7500c7450018330e08ff26ec *320e0800000000240001008b4604894500e921a5000090000000000a0000008b4500ff60f09090 *000000000a0001008b4500ff60ec9090000000000a0002008b4500ff60e889f63ce8110840e811 *0844e811080400010000000000110000008d45fc3b4354730abe9ce811088b43fcffe08b7500c7 *450000d2110883ed04b808121008ebea90900400010000000000110000008d45fc3b4354730abe *a0e811088b43fcffe08b7500c7450000d2110883ed04b808121008ebea909060f31108c8330e08 *0b000200000000001100010083c7203b7b5c7611c7436c08000000bea4e811088b43fcffe0c747 *e4c0360e088b45048947e8c747ecf4360e088b45008947f0c747f878370e088d47e48947fc8d47 *ec89078d77f883c5088b4500ebc78b750883c510e965d30100908b45108b550c89551089450c89 *75088b750483c508e96e02000089f638340e0838340e0838340e0838340e0838340e0800000000 *c4000000250000008b5510428b46048945fc8b46088945108b750c89550cc7450074340e0883ed *08e96fdd01008d760074340e082c340e080000000004010000250000008b550c8b460489450c89 *d6c74500b0340e08ff268975088b750483c508e9ee01000089f6c4340e08c4340e08c4340e08c4 *340e08c4340e080000000044010000250000008b450c8945fc8b7604c74500f4340e0883ed08e9 *fcdc01008b750883c510e985d201009000000200140000008d45f43b435473058b43f8ffe08d45 *f8c700d46d10088970048b46048945f483ed0cb8ccd90e08ebe28d7600c8330e08020000001500 *01008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f0 *83ed10b8d8da0e08ebdc9004000100010000000c0000008b760483c504ff26c8330e0804000100 *020000000e0001008d45fc3b4354720883c7143b7b5c760cc7436c050000008b43fcffe0c747f0 *58350e088b46048947f48b45008947f8c747fc94350e088d47f089078d47fc8945008b760883ed *04b808121008ebcc89f683c7183b7b5c760cc7436c060000008b43f8ffe0c747ec20350e088b45 *108947f0c747f8ac350e088977fc8d47ec89078d77f883c5148b4500ebd790c8330e0804000100 *010000000c0001008d45fc3b435473058b43fcffe08b46048945fc83ed04b8d8da0e08ebee8d76 *0083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc48360e0889378d77fc83c5148b4500 *ebea68360e08fc350e080c350e08f4340e08b0340e08c8330e080401000025000100c8330e0815 *000300010000000c0001008d45f03b435473058b43fcffe08975fc8b55008b460489450089d6c7 *45f8b0360e0883ed088b06ebe28d760001000100130000008d45f03b435473058b43f8ffe08d45 *f8c700d46d1008897004c745f464d611088b760483ed10b808121008ebde8d7600040001000300 *00000b0000008d45f03b435473058b43fcffe0c745fc08121008c745f8000000008b45008945f4 *8b460c8945008b46088945f08b760483ed10b8c0360e08ebd189f604000100020000000e000000 *83c7183b7b5c760cc7436c060000008b43fcffe0c747ec30370e088b46048947f08b46088947f4 *8b45008947f8c747fcc05e0c088d47ec89078d77fc83c5048b45008b40ecebcb90546578742f50 *72657474795072696e742f487567686573504a2e68733a3634317c66756e6374696f6e20736570 *3100904cd21108f0370e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e829c601008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4c0370e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3638377c66756e6374696f6e2066696c *6c31004cd211088c380e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e88dc501008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f45c380e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3833347c66756e6374696f6e206c6179 *0089f64cd2110828390e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8f1c401008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4f8380e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3733367c66756e6374696f6e20676574 *0089f64cd21108c4390e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e855c401008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f494390e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3734397c66756e6374696f6e20676574 *3100904cd21108603a0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8b9c301008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4303a0e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3835397c66756e6374696f6e206c6179 *3200904cd21108fc3a0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e81dc301008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4cc3a0e08be4cd2110883ed10b828101008ebc1909090d0f31108b4f3 *1108683b0e0817000400000000001100030083c7103b7b5c7611c7436c04000000be40e911088b *43fcffe0c747f4203d0e088b45048947f88b45008947fc8b450889078b450c894508c7450cd0f3 *11088d77f483c508b8203d0e08ebcc908b750483c514e9c5cb010090683b0e0802000000150001 *008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4d0f311088b46088945f0 *8b760483ed10b8203d0e08ebd89083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8e43b *0e088b45108947fc8b460489078d47f88945148b45088945108b750c83c50cb814161008ebd390 *83c7103b7b5c760cc7436c040000008b43f8ffe0c747f4c86b10088b45108947f88b46088947fc *8b451489078d47f48945148b46048945108b750c83c50cb814161008ebcd8d76008b45108b5604 *89551089c683c510eb70c74514d0f311088b45108b560889551089c683c510eb59908b751483c5 *14e9c9ca010090beb4f3110883c514e9bbca01008d7600d43c0e08d43c0e08c83c0e08b03c0e08 *a03c0e08583c0e08183c0e08cc3b0e08683b0e080500000025000300683b0e080b000200030000 *000b0003008d45f03b435473058b43fcffe08b460c8945f48b46088945f88b46048945fc8b4500 *89750089c6c745f0103d0e0883ed108b06ebd69090900b00020000000000110000008d45fc3b43 *54730abe54e911088b43fcffe08b7504c745fc403e0e0883ed048b06ebed90be3cd7110883c50c *8b4500ff60f089f68b460489450883c504e9beffffff89f68b750483c508ff2683c7103b7b5c76 *0cc7436c040000008b43f8ffe0c747f4f86a0c08c747f854df11088b45048947fcc70701000000 *8d77f483c5088b45008b40e8ebd6b03d0e08a83d0e080000000001000000250000008975088b75 *04c74504003e0e0883c504ff2689f6003e0e08003e0e08003e0e08003e0e08983d0e08003e0e08 *003e0e08883d0e080000000042000000250000007cf3110858e91108403e0e0804000100000000 *00110003008b7500c74500d43f0e08ff26be3cd7110883c5048b4500ff60f089f6bed0df110883 *c5048b4500ff60dc89f6443e0e0801000100130001008d45f43b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46048945f483ed0cb8583e0e08ebe28d760083c71c3b7b5c760cc7436c07 *0000008b43f8ffe0c747e8903e0e088b46088947ecc747f4f86a0c088b46048947f88d47e88947 *fc8b460c89078d77f483c5048b45008b40e8ebcb90443e0e0801000100130001008d45f43b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8583e0e08ebe28d760083 *c7183b7b5c760cc7436c060000008b43f8ffe0c747ec103f0e088b46048947f0c747f87c5f0d08 *8d47ec8947fc8b460889078d77f883c5048b45008b40e4ebd18d76008b4604894500e9cdfeffff *90bed0df110883c5048b4500ff60dc89f6be7cf3110883c504ff2689f69c3f0e089c3f0e088c3f *0e08803f0e083c3f0e08bc3e0e08743e0e08643e0e08403e0e0800000000250003000900020000 *000000110000008d45fc3b4354730abe60e911088b43fcffe08b7504c745fca8400e0883ed048b *06ebed90be3cd7110883c50c8b4500ff60f089f68b45040346088b560489550889450483c504e9 *b5ffffff90bed0df110883c50c8b4500ff60dc89f683c70c3b7b5c760cc7436c030000008b43f8 *ffe08b450485c0750a83c50c83ef0c8b06ebedc747f87c5f0d088977fc89078d77f883c50c8b45 *008b40e4ebd3903c400e083c400e082c400e083c400e0814400e083c400e083c400e0804400e08 *0000000062000000250000001400030000000000110000008d45fc3b4354730abe64e911088b43 *fcffe08b7508c745fcc8420e0883ed048b06ebed90be3cd7110883c5108b4500ff60f089f68b45 *080346088b560489550c89450883c504e9b5ffffff9000000200140000008d45f43b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb874e50e08ebe28d760001000100 *160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b460889 *45f083ed10b8e03f0e08ebdc9083c7243b7b5c760cc7436c090000008b43f8ffe0837d04007f31 *c747e03c410e088b45088947e48b45048947e8c747ec5c5f0d088d47e08947f08d77ec83c50c83 *ef108b45008b40ecebc7c747e008410e088b45048947e4c747ecc86a0c088d47e08947f0c747f4 *f86a0c088d47ec8947f88b45088947fc8b450489078d77f483c50c8b45008b40e8eb8790010001 *00160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b4608 *8945f083ed10b8e03f0e08ebdc9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f00042 *0e088b45088947f48b45048947f8c747fc5c5f0d088d47f089078d77fc83c50c8b45008b40eceb *d18d760030420e086c410e0800000000220000002500000089750c8b7504c7450488420e0883c5 *04ff2689f688420e0888420e0888420e0888420e08e8400e0888420e0888420e08d8400e080000 *0000c3000000250000009cf3110868e91108f4420e0884000000c8420e08000004000000000011 *0003008b7500c74500ac460e08ff26e9efffffff8d760083c508e9dcfcffffcc420e0803000100 *120001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b461089 *45f08b46048945ec8b460c8945e883ed18b8e8420e08ebd09083c71c3b7b5c760cc7436c070000 *008b43f8ffe0c747e810430e088b45048947ec8b450c8947f08b46048947f48b45088947f8c747 *fc5c5f0d088d47e889078d77fc83c5108b45008b40ecebc58d76008b450c2b450489450c8b5510 *8b450889451089550883c508e9fbfcffff8d76008b450c2b450489450c8b55108b450889451089 *550889750483c504e90cffffffbc430e08bc430e08bc430e08bc430e08bc430e08bc430e08bc43 *0e089c430e08cc420e08a400000025000100cc420e0803000200120001008d45e43b435473058b *43f8ffe08d45f8c700d46d10088970048b46148945e88b46088945ec8b46108945f08b46048945 *f48b760cc745e408440e0883ed1c8b06ebc989f683c7283b7b5c760cc7436c0a0000008b43f8ff *e0c747dc14440e088b45048947e08b450c8947e48b46088947e88b45088947ec8b460c8947f0c7 *47f4f86a0c088b46048947f88d47dc8947fc8b460c89078d77f483c5108b45008b40e8ebb390cc *420e0803000200120001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b4610 *2b46148b56088955f48945f08b46048945ec8b460c8945e883ed18b8e8420e08ebcd89f683c724 *3b7b5c760cc7436c090000008b43f8ffe0c747e0c4440e088b45048947e48b450c8947e88b4604 *8947ec8b45088947f08b46088947f4c747f87c5f0d088d47e08947fc8b460889078d77f883c510 *8b45008b40e4ebb98d7600cc420e0803000100120001008d45e83b435473058b43f8ffe08d45f8 *c700d46d10088970048b46088945f48b46108945f08b46048945ec8b460c8945e883ed18b8e842 *0e08ebd090cc420e0803000100120001008d45e83b435473058b43f8ffe08d45f8c700d46d1008 *8970048b460c8945f48b46108945f08b46088945ec8b46048945e883ed18b8e8420e08ebd09083 *c7343b7b5c760cc7436c0d0000008b43f8ffe0c747d06c450e088b45048947d48b450c8947d88b *46088947dc8b45088947e0c747e4b4450e088b46048947e88b45048947ec8b450c8947f08b4508 *8947f4c747f89c5f0d088d47e48947fc8d47d089078d77f883c5108b45008b40e0eba089f6bed0 *df110883c5108b4500ff60dc89f6be9cf3110883c510ff2689f674460e0874460e0864460e08f0 *450e0804450e0858440e084c430e08fc420e08c8420e0843000000250003000400010000000000 *110000008b7500c7450064470e08ff26be3cd7110883c5048b4500ff60f089f601000100130000 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8b8460e *08ebe28d760083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e8dc460e088b46088947ec *c747f4386b0c088b46048947f8c747fcfcd111088d47e889078d77f483c5048b45008b40d4ebca *08470e08c4460e080000000000000000250000000400010000000000110000008b7500c745001c *480e08ff26be3cd7110883c5048b4500ff60f089f601000100130000008d45f43b435473058b43 *f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb870470e08ebe28d760083c71c3b7b *5c760cc7436c070000008b43f8ffe0c747e894470e088b46088947ecc747f4186b0c088b460489 *47f8c747fcfcd111088d47e889078d77f483c5048b45008b40d8ebcac0470e087c470e08000000 *0000000000250000000400010000000000110000008b7500c74500d4480e08ff26be3cd7110883 *c5048b4500ff60f089f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b46048945f483ed0cb828480e08ebe28d760083c71c3b7b5c760cc7436c070000008b *43f8ffe0c747e84c480e088b46088947ecc747f4186b0c088b46048947f8c747fc04d211088d47 *e889078d77f483c5048b45008b40d8ebca78480e0834480e080000000000000000250000000400 *010000000000110000008b7500c745008c490e08ff26be3cd7110883c5048b4500ff60f089f601 *000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483 *ed0cb8e0480e08ebe28d760083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e804490e08 *8b46088947ecc747f4386b0c088b46048947f8c747fcfcd111088d47e889078d77f483c5048b45 *008b40d4ebca30490e08ec480e080000000000000000250000000400010000000000110000008b *7500c74500444a0e08ff26be3cd7110883c5048b4500ff60f089f601000100130000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb898490e08ebe28d76 *0083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e8bc490e088b46088947ecc747f4386b *0c088b46048947f8c747fcfcd111088d47e889078d77f483c5048b45008b40d4ebcae8490e08a4 *490e080000000000000000250000008cf3110884e91108444a0e08090002000000000011000300 *8d45fc3b4354730abe84e911088b43fcffe0837d000078118b7504c745fc184b0e0883ed048b06 *ebe7befcd1110883c5088b45008b40f0ebd78d7600be04d2110883c50c8b4500ff60ec89f6be04 *d2110883c50c8b4500ff60ec89f68b45042b460c8b560889550889450483c504e98dffffff90be *fcd1110883c50c8b4500ff60f089f6be8cf3110883c50cff2689f6e04a0e08e04a0e08d04a0e08 *e04a0e08e04a0e08b84a0e08a84a0e08984a0e08444a0e08620000002500030003000100000000 *001100000083c7183b7b5c7611c7436c06000000be8ce911088b43fcffe0837d00077f0a83ef18 *b874e50e08ebeec747ec844b0e088b45008947f0c747f87cdc0b08c747fcacf311088d47ec8907 *8d77f883c5048b45008b40ecebc09000000200140000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b460483e8088945f483ed0cb8244b0e08ebdf0900020000000000110000 *0083c7183b7b5c7611c7436c06000000be90e911088b43fcffe08b550085d27513be00d2110883 *c50883ef188b45008b40f0ebe4c747ec284c0e088b45048947f08957f4c747f87cdc0b088b4504 *8947fc8d47ec89078d77f883c5088b45008b40ecebb49001000100160000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d10088970048b56084a8b46048945f48955f083ed10b8bc4b0e08eb *db546578742f526561642f4c65782e68733a3430397c66756e6374696f6e2076616c446967008d *76004cd21108804c0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e899b101008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f4584c0e08be4cd2110883ed10b828101008ebc190909016000300000000 *00110000008d45f43b4354730abeace911088b43fcffe08b7508c745fce44d0e0883ed048b06eb *ed908b750883c510ff2689750883c504e9c9ffffff90244d0e08244d0e08000000004300000025 *0000008b45088945fc8975f8c74500444d0e0883ed08e9508bfeff444d0e08444d0e0800000000 *0300000025000000030000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *b8050c088b460489078b45048945fc8b45088945f88d47fc894508c74500704d0e0883ed08b8f4 *d50c08ebcf908b460889450c8b7604c74500784d0e08ff2689f6bc4d0e081c4d0e080000000083 *000000250000002e2e009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e839b001008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f400d21108c745f0e44d0e0883ed10b84cce0b08ebbf9094e911084c4e *0e080b000200000000001100010083c71c3b7b5c7611c7436c07000000bed0e911088b43fcffe0 *c747e808570e088b45008947ecc747f0a8570e088d47e88947f48b45048947f8c747fcc05e0c08 *8d47f089078d77fc83c5088b45008b40ecebc49001000100130000008d45f03b435473058b43f8 *ffe08d45f8c700d46d1008897004c745f400d211088b760483ed10b808121008ebde8d76000400 *0100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d683ed04b808 *121008ebe989f683c7143b7b5c760cc7436c050000008b43f8ffe0c747f0bc4e0e088b450c8947 *f4c747fcf84e0e088d47f089078d77fc83c5108b4500ebda04000100020000000e0000008d45fc *3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f87cdc0b088b46048947fc8b *450089078d47f88945008b760883ed04b808121008ebd98d760004000000120000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f860 *4f0e088b46088947fc8b460c89078d47f88945f48b46048945f08b761083ed10b808570e08ebc7 *9004000100010000000c0000008b760483c504ff2604000100010000000c00000083c71c3b7b5c *760cc7436c070000008b43fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f40c500e *088d47e88947f8c747fca05e0c088d47f489078d77fc83c5048b45008b40f0ebc489f624000000 *2400000083c71c3b7b5c761cc7436c07000000c7450078500e08c74320fe000000b8b03d1008ff *e0c747e8ac4f0e088b450c8947ec8977f08b45108947f48b45088947f8c747fc20500e088d47e8 *89078d77fc83c5148b4500ebcb9001000100130000008d45f03b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f400d211088b760483ed10b808121008ebde8d76000400010001000000 *0c0000008d45fc3b435473058b43fcffe08b55008b460489450089d683ed04b808121008ebe989 *f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f400d2 *11088b760483ed10b808121008ebde8d760004000100010000000c0000008d45fc3b435473058b *43fcffe08b55008b460489450089d683ed04b808121008ebe989f6030000002400000083c7143b *7b5c760cc7436c050000008b43f8ffe0837e042f763c837e04377616c747f040510e088b450c89 *47f4c747fc7c510e08eb348b460483e830c747f054dc0b088947f48d77f083ed0483ef0cb87850 *0e08ebbcc747f0d8500e088b450c8947f4c747fc14510e088d47f089078d77fc83c5108b4500eb *9889f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4 *00d211088b760483ed10b808121008ebde8d760004000100010000000c0000008d45fc3b435473 *058b43fcffe08b55008b460489450089d683ed04b808121008ebe989f601000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f400d211088b760483ed10b80812 *1008ebde8d760004000100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489 *450089d683ed04b808121008ebe989f6030000002400000083c7143b7b5c760cc7436c05000000 *8b43f8ffe0837e042f763c837e04397616c747f094520e088b450c8947f4c747fcd0520e08eb34 *8b460483e830c747f054dc0b088947f48d77f083ed0483ef0cb878500e08ebbcc747f02c520e08 *8b450c8947f4c747fc68520e088d47f089078d77fc83c5108b4500eb9889f6e9930000008d7600 *210000002400000083c7103b7b5c761cc7436c04000000c7450088530e08c74320ff000000b8b0 *3d1008ffe0837d04407630837d0446772a8b450483e837c747f454dc0b088947f8c747fc94b90b *088d47f489078d77fc83c5088b45008b40ecebc8bee0d0110883c50883ef108b45008b40f0ebb5 *8d760078530e08000000000000000000000100000001000d0000008d45f83b4354720883c7103b *7b5c760cc7436c040000008b43fcffe08b46048945fc837e0460762c83f86677278b45fc83e857 *c747f454dc0b088947f8c747fc94b90b088d47f489078d77fc8b45008b40ecebc683ed0883ef10 *b888530e08ebb98d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f400d211088b760483ed10b808121008ebde8d760004000100010000000c000000 *8d45fc3b435473058b43fcffe08b55008b460489450089d683ed04b808121008ebe989f683c714 *3b7b5c760cc7436c050000008b43f8ffe0c747f07c540e088b450c8947f4c747fcb8540e088d47 *f089078d77fc83c5108b4500ebda8b760483ed04e959fbffff9014550e08dc540e080000000003 *0000002500000001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *04c745f400d211088b760483ed10b808121008ebde8d760004000100010000000c0000008d45fc *3b435473058b43fcffe08b55008b460489450089d683ed04b808121008ebe989f683c7143b7b5c *760cc7436c050000008b43f8ffe0c747f03c550e088b450c8947f4c747fc78550e088d47f08907 *8d77fc83c5108b4500ebda8b760483ed04e999faffff90d4550e089c550e080000000003000000 *25000000030000002400000083c7103b7b5c760cc7436c040000008b43f8ffe0c747f410540e08 *8b46048947f8837e042f762e837e0439760c8d77f4c74500f4550e08eb268b460483e830c747fc *54dc0b0889078d77fc83ed04b878500e08ebbd8d77f4c7450034550e0883ef08b810540e08eba9 *8d76004c4e0e0804000000240001008b460483f80a742483f80a7f0783f8087409eb3083f81074 *1feb298b7504c74504a8510e0883c5048b06ffe08b7504c74504fc520e08ebed8b7504c74504fc *550e08ebe1be94e9110883c514ebda89f68b46048945008b55088b460889450889d6c745fc7456 *0e0883ed04ff268d7600c4560e081c4f0e084c4e0e0803000000250001004c4e0e080b00020001 *0000000c0001008d45f43b435473058b43fcffe08975fc8b55008b460489450089d6c745f8f856 *0e0883ed088b06ebe28d7600be78d6110883c5088b4500ff60e889f68b450489750489c6e9b7ba *01008d760044570e0834570e0800000000010000002500000004000100010000000c0000008d45 *fc3b435473058b43fcffe08b55008b460489450089d6c745fc68570e0883ed048b06ebe589f604 *000100020000000e0000008d45f43b4354720883c7083b7b5c760cc7436c020000008b43fcffe0 *c747fc74570e088b46088907c745fc08121008c745f850d111088b45008945f48d47fc8945008b *760483ed0cb808570e08ebcb900400010000000000110000008b7500c7450018580e08ff260000 *00002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcb8050c088b460489078d *77fc83c5048b45008b40f0ebe4909094e9110848580e0804000100000000001100010083c74c3b *7b5c7611c7436c13000000bedce911088b43fcffe0c747b8d0590e088b45008947bcc747c02c5a *0e088d47b88947c4c747cc645a0e088947d0c747d8a05a0e088d47c08947dc8d47cc8947e0c747 *e4045b0e088d47d88947e8c747eca05e0c088d47e48947f0c747f4645b0e088d47ec8947f8c747 *fca05e0c088d47f489078d77fc83c5048b45008b40f0eb868d760001000100130000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb804580e08ebe28d76 *0002000000150000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f4c745f0a4e911088b46048945ec83ed14b8f84c0e08ebd589f604000100020000000e0000008d *45fc3b4354720883c7143b7b5c760cc7436c050000008b43fcffe0c747f02c590e088b46048947 *f48b45008947f8c747fcfc6c0e088d47f089078d47fc8945008b760883ed04b808121008ebcc89 *f648580e0804000100010000000c0001008d45fc3b4354720883c7183b7b5c760cc7436c060000 *008b43fcffe0c747ecf8580e088b45008947f0c747f870590e088d47ec8947fc8b460489078b45 *008945fc8d47f889450083ed04b8604e0e08ebc98d760001000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f458f411088b760483ed0cb8d0590e08ebde8d76 *0001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f450f4 *11088b760483ed0cb8d0590e08ebde8d760003000100020000000e0000008b450083f858742283 *f858770783f84f740eeb1b83f86f740783f878740ceb0f8b760483c5048b06ffe08b7608ebf4be *78d6110883c5048b45008b40e8ebe99001000000240000008b45048b560489550489c683c504eb *a804000100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745 *fce85a0e0883ed048b06ebe589f60100000024000000837e0430750d8b750483c508b8a05e0c08 *ffe0be78d6110883c5088b45008b40e8ebee9004000100010000000c0000008d45fc3b43547305 *8b43fcffe08b55008b460489450089d6c745fc345b0e0883ed048b06ebe5909094e911086cf111 *085cf1110818f4110830f4110840f4110860f411088c5b0e08040001000000000011007f008d45 *fc3b4354720883c7083b7b5c7611c7436c02000000bee4e911088b43fcffe0c747fcd8640e088b *450089078d47fc894500c745fc10f4110883ed04b8604e0e08ebdb01000100130000008d45ec3b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4c745f0a4e91108c745ece0f3 *110883ed14b8f84c0e08ebd49083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8cc130e *088977fcc70734f111088d77f883c504b8d46d1008ebe18d76003c5c0e083c5c0e080000000000 *0000002500000001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970 *048b7604c745f4845c0e0883ed0c8b06ebe189f683c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8cc130e088977fcc70734f111088d77f883c504b8d46d1008ebe18d7600b85c0e08b85c *0e0800000000000000002500000001000100130000008d45f43b435473058b43f8ffe08d45f8c7 *00d46d10088970048b7604c745f4005d0e0883ed0c8b06ebe189f68b750483c514e9bd0f000090 *000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747 *f8cc130e088977fc8b450089078d77f883c508b8d46d1008ebe28d76008b45048945008975fcc7 *4504485d0e0883ed04e9c45e0000845d0e08845d0e08945b0e0801000000250001008b45048945 *008b45088945fc897508c74504b05d0e0883ed04e92678feff89f6b05d0e08b05d0e08945b0e08 *0200000025000100945b0e0802000000240001008b46088945fc8b45048945f88b4604894504c7 *4500e45d0e0883ed08e9e377feff8d7600945b0e0801000000240005008b45048945f8c745f468 *f411088b46088945008b4604894504be30f41108c745fcf05d0e0883ed10e9c7b701008d760094 *5b0e0802000000150005008d45e03b435473058b43f8ffe08d45f8c700d46d10088970048b4608 *8945f48b7604c745f0205e0e0883ed108b06ebdb83c7143b7b5c760cc7436c050000008b43f8ff *e0c747f05c5e0e088b45048947f48b45088947f8c747fc1c6d0e088d47f089078d77fc83c510a1 *ac6d1008ebd28b4504894500897504e91a77feff89f6cc5e0e08cc5e0e08000000000100000025 *000000905b0e0802000000150001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970 *048b46088945ecc745e8e0f311088b46048945f4c745f0f05e0e0883ed18b838c00e08ebce8d76 *0083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0fc5e0e088b450c8947f48b45088947 *f8c747fcfc6c0e088d47f089078d77fc83c510a1b06d1008ebd23c5f0e088c5e0e08905b0e0803 *00000025000b00c74500a4e911088b46048945fc8b460489450cc74504905f0e0883ed04e96257 *000089f6905f0e08345d0e08905b0e088400000025000b008b7504c74504c85f0e0883c504ff26 *90000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c7 *47f8cc130e088977fc8b450089078d77f883c508b8d46d1008ebe28d7600897500c74508e05f0e *08e9355c0000901c600e081c600e08945b0e0842000000250001008b45088945fc8975f8c74500 *40600e0883ed08e95478feff40600e0840600e08945b0e0802000000250001008b451089450089 *7510c745086c600e08e97375feff8d76006c600e086c600e08945b0e0844000000250001008b45 *0c8945fc8b45088945f889750cc7450098600e0883ed08e93e75feff89f698600e0898600e0894 *5b0e080400000025000100945b0e0802000000240001008b45008945f88b45088945f4897504c7 *45fccc600e0883ed0ce9fe74feff89f6945b0e0801000000240011008b45048945f8c745f428f4 *1108c745f0a4e91108c745ece0f311088b46088945008b4604894504c745fcd8600e0883ed14e9 *1687000089f6945b0e0802000000150011008d45dc3b435473058b43f8ffe08d45f8c700d46d10 *088970048b46088945f48b7604c745f004610e0883ed108b06ebdb83c7083b7b5c760cc7436c02 *0000008b43f8ffe0c747fc1c6d0e088b450489078d77fc83c508a1ac6d1008ebe58d7600000000 *002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc13 *0e088977fc8b450089078d77f883c508b8d46d1008ebe28d76008b45048945008975fcc74504b0 *610e0883ed04e95c5a0000ec610e08ec610e08945b0e0801000000250001008b45048945008b45 *088945fc897508c7450418620e0883ed04e9be73feff89f618620e0818620e08945b0e08020000 *0025000100945b0e0802000000240001008b46088945fc8b45048945f88b4604894504c745004c *620e0883ed08e97b73feff8d7600945b0e0801000000240005008b45048945f8c745f468f41108 *8b46088945008b4604894504be30f41108c745fc58620e0883ed10e95fb301008d7600945b0e08 *02000000150005008d45e03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f4 *8b7604c745f088620e0883ed108b06ebdb83c7143b7b5c760cc7436c050000008b43f8ffe0c747 *f0c4620e088b45048947f48b46048947f8c747fc1c6d0e088d47f089078d77fc83c508a1ac6d10 *08ebd2f4620e0878610e08945b0e08010000002500050083c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f848610e088b45108947fc8b460489078d47f88945148b7504c7451048630e0883 *c5108b06ebd58d760048630e08c85f0e08905b0e080500000025002b00905b0e08060000001200 *2b008d45e03b435473058b43f8ffe08d45f8c700d46d10088970048b46188945e48b46108945e8 *8b460c8945ec8b46088945f08b46048945f48b7614c745e09c630e0883ed208b06ebc3905b0e08 *04000100060000000b002b008d45fc3b4354720883c71c3b7b5c760cc7436c070000008b43fcff *e0c747e8a8630e088b46048947ec8b46088947f08b460c8947f48b46108947f88b46148947fc8b *450089078d47e88945008b761883ed04b808121008ebc18d7600905b0e0804000100050000000b *003b008d45fc3b4354720883c71c3b7b5c760cc7436c070000008b43fcffe0c747e800640e088b *46048947ec8b46088947f08b460c8947f48b46108947f88b45008947fc8b461489078d47e88945 *00be40f4110883ed04b808121008ebbf90905b0e0804000100010000000c003f008d45fc3b4354 *720883c7443b7b5c760cc7436c110000008b43fcffe0c747c0045c0e088b45008947c4c747cc8c *5c0e088d47c08947d0c747d8085d0e088947dcc747e4fc6c0e088947e8c747ec6c640e088947f0 *8d47cc8947f48d47d88947f88d47e48947fc8b460489078d47ec894500be18f4110883ed04b808 *121008eb9a68f3110878f5110858650e0800000200180003008d45f43b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8bd9801008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f478f5110883ed0cb8f8de0e08ebc668d6110890f51108 *acf51108c0650e080400010000000000110007008d45f43b4354720883c7203b7b5c7611c7436c *08000000befce911088b43fcffe0c747e4a0660e088b45008947e8c747f000670e088b45008947 *f4c747fc3c670e088d47f089078d47fc8945f8c745f490f511088d47e4894500c745fc6c670e08 *83ed0cb878e00e08ebb49001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d *1008897004c745f4bcf511088b760483ed10b808121008ebde8d760004000100010000000c0000 *008b760483c504ff26c8650e0801000100130001008d45f03b4354720883c7143b7b5c760cc743 *6c050000008b43f8ffe08d45f8c700d46d1008897004c747f050660e088b46048947f4c747fc8c *660e088d47f089078d47fc8945f4c745f0acf5110883ed10b878e00e08ebc20100010013000000 *8d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4a0f511088b760483ed10b8 *08121008ebde8d760004000100010000000c0000008b760483c504ff26897500e9ece9fdff4467 *0e0844670e0844670e0844670e0844670e08c0650e08010000002500010024f2110888f511086c *670e0804000100000000001100030083c7103b7b5c7611c7436c04000000be04ea11088b43fcff *e0c747f44c690e088b45008947f8c747fca05e0c088d47f489078d77fc83c5048b45008b40f0eb *d704000100020000000e0000008d45fc3b4354720883c7143b7b5c760cc7436c050000008b43fc *ffe0c747f07cdc0b088b46048947f48b45008947f8c747fcdc6c0e088d47f089078d47fc894500 *8b760883ed04b808121008ebcc89f670670e08420000002400010083c70c3b7b5c760cc7436c03 *0000008b43f8ffe0837e045f7526c747f8d0670e088977fc8b450489078d47f8894508c7450488 *f5110883c504b85c260d08ebd2be78d6110883c50c83ef0c8b45008b40e8ebbf908b7508c74500 *2c680e08ff2604000100020000000e0000008d45fc3b4354720883c7143b7b5c760cc7436c0500 *00008b43fcffe0c747f07cdc0b088b46048947f48b45008947f8c747fcdc6c0e088d47f089078d *47fc8945008b760883ed04b808121008ebcc89f683c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f898680e088b45088947fc8b450489078d47f8894508c7450488f5110883c504b85c260d *08ebd58d7600e8680e0880680e0870670e0802000000250001006c670e0804000100010000000c *0003008d45f03b435473058b43fcffe08b45008945f48b46048945fcbe24f21108c745f83c690e *0883ed10b808121008ebdc90a4e811087c690e0800000200180001008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e89d9401008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f4dcf51108c745f0d8f5110883ed10b8dc330e08 *ebbf90e0f511084cec1108e8690e0804000100000000001100030083c7203b7b5c7611c7436c08 *000000be4cec11088b43fcffe0c747e4586a0e088b45008947e8c747f0bc6c0e088d47e48947f4 *c747f8686c0e088b45008947fc8d47f089078d77f883c5048b4500ebc701000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f400d211088b760483ed10b80812 *1008ebde8d760004000100020000000e0000008d45fc3b4354720883c70c3b7b5c760cc7436c03 *0000008b43fcffe0c747f87cdc0b088b46088947fc8b450089078d47f88945008b760483ed04b8 *08121008ebd98d76008b750883c514ff2604000100020000000e0000008d45fc3b4354720883c7 *0c3b7b5c760cc7436c030000008b43fcffe0c747f87cdc0b088b46088947fc8b450089078d47f8 *8945008b760483ed04b808121008ebd98d760083c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8ec6a0e088b45108947fc8b450489078b450c894510c7450c081210088d47f889450883c5 *08b8006a0e08ebcf90306b0e08d86a0e08ec690e080400000025000100ec690e08040000002400 *010083c70c3b7b5c760cc7436c030000008b43f8ffe0837e042275168b450489750489c6c74500 *886b0e0883ef0c8b06ebe2c747f8946a0e088b45108947fc89378b450c894510c7450c08121008 *8d47f889450883c508b8006a0e08ebb6ec690e0803000000240001008b46088945008b7604c745 *fc946b0e0883ed04ff268d7600ec690e0804000100030000000b0001008d45f03b435473058b43 *fcffe08b460c8945f88b46088945fc8b55008b460489450089d6c745f4fc6b0e0883ed0c8b06eb *d989f6e8690e0804000100020000000e00030083c71c3b7b5c760cc7436c070000008b43fcffe0 *c747e88c6b10088b45008947ec8b46088947f0c747f4246c0e088b46048947f88b45008947fc8d *47e889078d47f4894500b810ed0e08ebc601000000020001008b4500ff60ec89f6010000000900 *01008b4500ff60ec909001000000020003008b4500ff60e489f601000000090003008b4500ff60 *e4909001000000020005008b4500ff60dc89f601000000090005008b4500ff60dc909001000000 *020006008b4500ff60d889f601000000090006008b4500ff60d89090e8f51108346d0e08000002 *00180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e8e59001008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4f0f511 *0883ed0cb88ce80b08ebc60300020000000000110000008b450083c504890424e88a27f6ff89c6 *ff65009004000100000000001100000083c7203b7b5c7611c7436c08000000be78ec11088b43fc *ffe0c747e4906e0e088b45008947e8c747f0f86e0e088b45008947f48d47e48947f8c747fc3c6f *0e088d47f089078d77fc83c5048b4500ebc701000100130000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d1008897004c745f4a0d711088b760483ed10b808121008ebde8d760000000000 *2400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f81c6e0e088b46248947fc8d47 *f88945008b761883ed04b808121008ebde01000100130000008d45f03b435473058b43f8ffe08d *45f8c700d46d10088970048b7604c745f4546e0e0883ed0c8b06ebe189f602000000240000008b *45088b55048955088945048b7608e93ca7010002000000240000008b7604c74500c46e0e08ff26 *04000100020000000e0000008d45f83b435473058b43fcffe08b46088945fc8b7604c745f8e06e *0e0883ed088b06ebe70000000024000000be0cd2110883c504ff6500900b000300010000000c00 *00008d45f83b435473058b43fcffe08b45008945fc8b45048945008b46048945f8c74504246f0e *0883ed08b808880d08ebdb0b00030000000000110000008d45ec3b4354730abe7cec11088b43fc *ffe0c745f8000000008b45008945f4c745fc18710e0883ed0cb804ee0b08ebe0be0cd2110883c5 *10ff65009084010000240000000fbe4e048b550c8b4510880c10ff45108b450489450c8b750883 *c50ceb3a89f68b46088945008b7604c745fcbc6f0e0883ed04ff268d7600dc6f0e08a86f0e0800 *000000c3000000250000000a000300000001000d0000008d45f43b435473058b43fcffe08975fc *8b55008b460489450089d6c745f808700e0883ed088b06ebe28d7600420000002400000083c50c *ff650089f6640000002400000083c71c3b7b5c7615c7436c07000000c74320fe000000b8b03d10 *08ffe0c747e854dc0b088b45088947ecc747f0e0060c088b45048947f4c747f8e4bb0b088d47f0 *8947fc8d47e889078d47f88945048b7510c7450848700e08b8e8131008ebbb2300000024000000 *83c7083b7b5c7615c7436c02000000c74320fe000000b8b03d1008ffe08d5608c747fc14700e08 *8917c745f8000000008b45088945f48955008975088d77fcc745fc58700e0883ed0cb814700e08 *ebcb0200000024000000897500c745fcc0700e0883ed04e9a2d1010090906d616c6c6f63009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8ed8c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f02c710e0883ed10b84cce0b08ebbf906f7574206f66206d656d6f72790089f60000 *0200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c *1008893424e8798c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d2 *1108c745f098710e0883ed10b84cce0b08ebbf904572726f7220696e20617272617920696e6465 *78008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8fd8b01008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f00c720e0883ed10b84cce0b08ebbf90040002000000000011000000 *8b7500c74500bc720e08ff260000000024000000be0cd2110883c504ff65009000000000240000 *008b7604c74500a8720e08e9a5e40100905072656c7564652e456e756d2e707265647b496e747d *3a20747269656420746f2074616b6520607072656427206f66206d696e426f756e64008d760000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8198b01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0cc720e0883ed10b84cce0b08ebbf905072656c7564652e456e756d2e737563637b *496e747d3a20747269656420746f2074616b6520607375636327206f66206d6178426f756e6400 *8d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8798a01008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f06c730e0883ed10b84cce0b08ebbf900f000300000000001100000083c7 *0c3b7b5c7611c7436c03000000bef8ec11088b43fcffe0c747f89c740e088b45088947fc8b4504 *89078b45008945088d77f883c508b89c740e08ebd989f601000200120000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b460803460c8945f48b760483ed0cb89c740e08ebdc *9003000100000002001000000083c7243b7b5c760cc7436c090000008b43fcffe08b45003b4604 *7c3dc747e060740e088977e48b45008947e88b46088947ecc747f054dc0b088b45008947f4c747 *f87cdc0b088d47f08947fc8d47e089078d77f883c504eb2ac747e054dc0b088b45008947e4c747 *e87cdc0b088d47e08947ecc747f000d211088d77e883c50483ef108b45008b40eceb87900f0003 *00000000001100000083c70c3b7b5c7611c7436c03000000befcec11088b43fcffe0c747f8b875 *0e088b45088947fc8b450489078b45008945088d77f883c508b8b8750e08ebd989f60100020012 *0000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460803460c8945f48b76 *0483ed0cb8b8750e08ebdc9003000100000002001000000083c7243b7b5c760cc7436c09000000 *8b43fcffe08b45003b46047f3dc747e07c750e088977e48b45008947e88b46088947ecc747f054 *dc0b088b45008947f4c747f87cdc0b088d47f08947fc8d47e089078d77f883c504eb2ac747e054 *dc0b088b45008947e4c747e87cdc0b088d47e08947ecc747f000d211088d77e883c50483ef108b *45008b40eceb8790a8760e08850300000000000000000500000000001100000083c7143b7b5c76 *11c7436c05000000be00ed11088b43fcffe0c747f0f4760e088b45048947f48b45008947f88b45 *108947fc8b450c89078b45088945108d77f083c510b8f4760e08ebcd89f6e9afffffff8d760001 *000200120000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460803460c89 *45f48b760483ed0cb8f4760e08ebdc9003000100020002000b0000008d45f83b4354720883c718 *3b7b5c760cc7436c060000008b43fcffe08b45003b460c7c36c747ecb8760e088977f08b450089 *47f48b46108947f8c747fc54dc0b088b450089078d47ec8945008d47fc8945fc8b760883ed08eb *22c747ec54dc0b088b45008947f08b46048945008d47ec8945fc8b760883ed0883ef10b8141610 *08eb9790dc770e08850300000000000000000500000000001100000083c7143b7b5c7611c7436c *05000000be04ed11088b43fcffe0c747f028780e088b45048947f48b45008947f88b45108947fc *8b450c89078b45088945108d77f083c510b828780e08ebcd89f6e9afffffff8d76000100020012 *0000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460803460c8945f48b76 *0483ed0cb828780e08ebdc9003000100020002000b0000008d45f83b4354720883c7183b7b5c76 *0cc7436c060000008b43fcffe08b45003b460c7f36c747ecec770e088977f08b45008947f48b46 *108947f8c747fc54dc0b088b450089078d47ec8945008d47fc8945fc8b760883ed08eb22c747ec *54dc0b088b45008947f08b46048945008d47ec8945fc8b760883ed0883ef10b814161008eb9790 *5072656c7564652e756e646566696e65640089f600000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8618501008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0ac780e0883ed10b84cce0b08 *ebbf9094e111084cf111083cf1110824790e080500010000000000110007008d45f03b4354730a *be2ced11088b43fcffe08b4500894424088b442408894328c74500b07f0e08b81c511008ebe289 *f6210000002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe089f00faf4504c747 *fc54dc0b0889078d77fc83c508b8d46d1008ebe289f628790e08210000002400010083c7083b7b *5c760ec7436c02000000b8f0371008ffe08b450485c07516c747fc54dc0b0889378d77fc83c508 *b8d46d1008ebe185c07f0fbe4cf1110883c50883ef088b06ebce48c745fc020000008945f8c745 *f41cf61108897504c7450078790e0883ed0c83ef08b84cbf0e08eba59028790e08010002001200 *01008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b4604894304 *8b760cc745f0b8790e0883ed10b8e4501008ebd28d76002c790e0800000200140001008d45ec3b *435473058b43f8ffe08d45f8c700d46d10088970048b4604f7d87507be34f11108eb0985c07f0c *be3cf1110883ed088b06ebd448c745f40cf611088945f0c745ec0cf6110883ed14b870be0e08eb *b890000000002400000083c7083b7b5c7615c7436c02000000c74320ff000100b8b03d1008ffe0 *c747fc3ce00b088b4500894424048b442404894424088b44240889078d77fc83c508b8d46d1008 *ebd589f68b56048b4504c74504d87a0e0883c50489442404891424e8807c0100d95c24148b4424 *14894424188b442418894424148b4424148945fc83ed04ff65048d7600000000002400000083c7 *083b7b5c7615c7436c02000000c74320ff000100b8b03d1008ffe0c747fc3ce00b088b45008944 *24048b442404894424088b44240889078d77fc83c508b8d46d1008ebd589f68b4e088b560483c2 *088b4504c74504687b0e0883c5048944240889542404890c24e85f7b0100d95c24148b44241489 *4424188b442418894424148b4424148945fc83ed04ff650490b07b0e08207b0e08000000002100 *00002500000001000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46088945f48b7604c745f00c7c0e0883ed108b06ebdb01000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb830d40c08ebe28d7600210000 *002400000083c7183b7b5c7615c7436c06000000c74320fe000001b8b03d1008ffe0c747ec147c *0e088b45008947f08b45088947f4c747f84c7c0e088977fc8d47ec8945088d77f883c5088b4504 *ebd090440100002400000083c70c3b7b5c761cc7436c03000000c74500d47c0e08c74320ff0000 *00b8b03d1008ffe0c747f8ccdc0c088b450c8947fc8b450889078b45048945088d47f8894504c7 *450c807c0e0883c504b838b40e08ebcf90000000002400000083c7083b7b5c7615c7436c020000 *00c74320ff000100b8b03d1008ffe0c747fc3ce00b088b4500894424048b442404894424088b44 *240889078d77fc83c508b8d46d1008ebd589f68b56048b4504c74504307d0e0883c50489442404 *891424e8287a0100d95c24148b442414894424188b442418894424148b4424148945fc83ed04ff *65048d7600000000002400000083c7083b7b5c7615c7436c02000000c74320ff000100b8b03d10 *08ffe0c747fc3ce00b088b4500894424048b442404894424088b44240889078d77fc83c508b8d4 *6d1008ebd589f68b4e088b560483c2088b4504c74504c07d0e0883c5048944240889542404890c *24e807790100d95c24148b442414894424188b442418894424148b4424148945fc83ed04ff6504 *90087e0e08787d0e0800000000210000002500000001000100160000008d45f03b435473058b43 *f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f0647e0e0883ed108b06ebdb01 *000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483 *ed0cb830d40c08ebe28d7600210000002400000083c7183b7b5c760cc7436c060000008b43f8ff *e0c747ec6c7e0e088b46088947f08b45048947f4c747f8a47e0e088b46048947fc8d47ec894504 *8d77f883c5048b4504ebcd8d760024790e08e401000024000100be94e11108c7450cd87e0e0883 *c508e95c880100837e04007507b82c7f0e08ffe0b8d47c0e08ebf724790e084401000024000100 *85f67507b82c7f0e08ffe0b8d47c0e08ebf789f6c74308000000008b46048943048b7608c74500 *607f0e08e9a8d00100747f0e08407f0e0824790e08440100002500010024790e08000000002400 *070083c7103b7b5c7615c7436c04000000c74320ff000101b8b03d1008ffe085f67926c747f47c *7a0e088977f88975088d47f48945fc89c6c745f8a47f0e0883ed0883ef048b06ebd4c747f4347a *0e088b45048947f88977fc8b45008907c7450814f611088d77f483c5088b4504ebad9090180005 *00000000001100000083c7143b7b5c7611c7436c05000000be34ed11088b43fcffe0c747f03081 *0e088b45108947f48b45088947f8c747fc94b90b088b451089078d47f08945108b450c8945088b *450489450c8b45008945048d77fc83c5048b4510ebbc9083c7083b7b5c760cc7436c020000008b *43f8ffe0c747fc94b90b088b460489078d77fc83c504a1c06d1008ebe58d760083c7083b7b5c76 *0cc7436c020000008b43f8ffe0c747fc94b90b088b460489078d77fc83c504a1c06d1008ebe58d *7600b8800e0888800e080000000000000000250000008b7504c74504fc800e0883c504ff269083 *c508ff268d76000c810e08fc800e0800000000010000002500000002000000150000008d45f03b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b7608c745f028810e0883ed *108b06ebdb666c757368526561644275666665720000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8b17c01008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f060810e0883ed10b84cce0b *08ebbf9068616e646c652069732066696e616c697a65640000000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8397c01008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0d4810e0883ed10b8 *4cce0b08ebbf90d4f21108f4f211084c820e0800000200180003008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c97b01008d47f8894604c706 *245b10088d55f8c702d46d1008894204bed4f21108c745f4fc820e0883ed0c8b06ebc489f62100 *00002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040b4604c747fc84ed0b08 *89078d77fc83c508b8d46d1008ebe250820e0800000000240001008b4604894500bef4f21108c7 *45fcc0820e0883ed04ff2690a4ed110804f3110814830e0800000200180003008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8017b01008d47f8 *894604c706245b10088d55f8c702d46d1008894204bea4ed1108c745f4c4830e0883ed0c8b06eb *c489f6210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040b4604c747 *fc84ed0b0889078d77fc83c508b8d46d1008ebe218830e0800000000240001008b4604894500be *04f31108c745fc88830e0883ed04ff269019000600000000001100000083c7243b7b5c7611c743 *6c09000000bec4ed11088b43fcffe0c747e064840e088b45048947e4c747ec14860e088b450489 *47f08b450c8947f48b45108947f88b45148947fc8b450889078d47e08945148d47ec8945108b45 *0089450cc74508c8e11108be9ce0110883c504b87c1d1008eba589f601000100130000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4bed4ec110883ed10b80812 *1008ebdd89f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d *1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d7600e4010000240000008b450489 *4424188b450c8b4d088b5604c745109c840e0883c5108954240801c8894424048b442418890424 *e8540ff6ff89c6ff65008d7600a4010000240000008b55088b460489450889d6c74500d8840e08 *ff2624010000240000008b550c8b460489450c89d6c7450018850e08ff2603000200030001000b *0000008d45f03b435473058b43fcffe08b46108945f48b460c8945f88b46088945fc8b7604c745 *f034850e0883ed108b06ebdb8b7504c7450400000000e9958a0100908b7504c7450401000000e9 *858a01009094850e0884850e08000000000100000025000000040000002400000083c7143b7b5c *760cc7436c050000008b43f8ffe0c747f054850e088b45108947f48b450c8947f88b45088947fc *8b460489078d47f08945108b7504c7450cb8850e0883c50c8b06ebc98d76000500000012000000 *8d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e88b46108945ec8b46 *0c8945f08b46088945f48b7604c745e4c0850e0883ed1c8b06ebc9909094ed110858860e080400 *0100000000001100010083c7283b7b5c7611c7436c0a000000bec8ed11088b43fcffe0c747dc94 *b90b088b45008947e0c747e4ece80b08c747e8e0d01108c747ecd8e31108c747f000d21108c747 *f494ed11088d47dc8947f8c747fc9ce90b088d47e489078d47fc894500b874e80b08ebaf80e211 *08eced110824d91108d4860e0817000500000000001100070083c7083b7b5c7611c7436c020000 *00be14ee11088b43fcffe0c747fc848a0e088b450c89078d47fc89450cb868ab0d08ebe589f6be *8ce2110883c50cff650090be8ce2110883c50cff6500908b750483c504e9c18a010090be78e211 *0883c50cff650090be78e2110883c50cff65009001000100130000008d45f43b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f483ed0cb804c40c08ebe28d7600e9330200008d *76008b751883c51ce9758101009001000100130000008d45f43b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46048945f483ed0cb8b4c30c08ebe28d760001000100130000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb808c30c08ebe28d76 *00000000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec14c50c088b4604 *8947f0c747f414da11088b460c8947f88b46108947fc8b461489078d77ec83c504b8d46d1008eb *cc89f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604 *c745f418880e0883ed0c8b06ebe189f6830000002400000083c70c3b7b5c7615c7436c03000000 *c74320fe000000b8b03d1008ffe0c747f868880e088977fc8b55048d47f88942048b750883c50c *b81c091008ebde8d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ecb0870e088b45 *1c8947f0c747f8e4870e088b451c8947fc8b55088b45048945088955048b450c894500c7450c18 *da11088b45108945fc8d47ec8945f88d47f88945f4c745109c880e0883ed0cb83c980c08eba889 *f6dc880e089c870e08dc860e08e700000025000100dc860e0803000000240001008b46148945f4 *8b46108945f88b460c8945fc8b46048945008b7608c745f05c890e0883ed10ff2690dc860e0802 *000000240001008b46048b500489450089d6c745fc68890e0883ed04ff269094870e0800000000 *dc860e0800000100030000000b0001008d45d43b435473058b43fcffe08b46088945f88b460489 *45fc8b760cc745f49c890e0883ed0c8b06ebe189f683c7283b7b5c760cc7436c0a0000008b43f8 *ffe0c747dc8c6b10088b45048947e08b45088947e4c747e868870e088b45088947ecc747f4cc89 *0e088b45088947f88d47dc8947fc8d47e889078d77f483c50c8b4500ebbb90f8890e0854870e08 *48870e083c870e0830870e0824870e08d4860e080200000025000700d4860e0804000100010000 *000c0007008d45f43b435473058b43fcffe08b45008945f48b46048945fcc745f8748a0e0883ed *0cb88cc30c08ebe1909000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8717301008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f4188b0e0883ed0cbe010000008b4500ebc390000000002400000083c708 *3b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83 *c504b8d46d1008ebe8900cd111084c8b0e0800000200180001008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cd7201008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f40cd1110883ed0cb8c46d0e08ebc694ed110824d911 *08c0e21108b08b0e080b00030000000000110007008d45f43b4354730abe3cee11088b43fcffe0 *8b7504c745fce08d0e0883ed04b82c531008ebea89f6b08b0e0801000100130001008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb86c860e08ebe28d7600 *0000000024000000be0cd2110883c504ff65009083c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8008c0e088b45088947fc8d47f88943048b750cc7450c348c0e0883c50cb87c541008eb *d790b48b0e0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f4be54e2110883ed10b808121008ebdd89f6b08b0e0801000100130001008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb86c860e08ebe28d76 *000000000024000000be0cd2110883c504ff650090b08b0e08020000002400010083c70c3b7b5c *7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f8c48c0e088b45048947fc8d47f8 *8943048b7508c74508f88c0e0883c508b87c541008ebd7b08b0e0803000000240005008b450489 *4500c74504108d0e08e9ba25ffff89f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *888c0e088b45048947fcc7430434f611088d77f8c74500608d0e08b870331008ebd98d7600748d *0e08748d0e08748d0e08748d0e08748d0e08408c0e08b08b0e080300000025000700b08b0e0802 *000000240007008975f8897500c745fcd48d0e0883ed08e99735feff909090a8e211083cee1108 *f88d0e081800060000000000110003008d45f03b4354720883c70c3b7b5c7611c7436c03000000 *be44ee11088b43fcffe0c747f8a88e0e088b450c8947fc8d47f88945f88b45008945f4c745fc4c *910e0883ed0cb894b10d08ebd490be14da110883c504ff25c46d100889f6be18da110883c504ff *25c06d100889f66c8e0e086c8e0e086c8e0e085c8e0e086c8e0e086c8e0e080000000000000000 *2500000001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b76 *04c745f4a08e0e0883ed0c8b06ebe189f6060200002400000083c7243b7b5c760cc7436c090000 *008b43f8ffe0c747e02cc50c088b45188947e48b45108947e88b450c8947ec8b45088947f08b46 *048947f48b45048947f8c747fce0d011088b451489078d77e083c51cb8d46d1008ebba06000000 *240000008b55148b460489451489d6c74500dc8e0e08ff2607000000120000008d45dc3b435473 *058b43f8ffe08d45f8c700d46d10088970048b461c8945e08b46188945e48b46148945e88b4610 *8945ec8b460c8945f08b46088945f48b7604c745dc3c8f0e0883ed248b06ebbd89f6eb1a89f6a8 *8f0e0800000000fc8d0e0800000100020000000e0001008d45f83b435473058b43fcffe08b4604 *8945fc8b46088945f883ed08b8cc8b0e08ebe890430000002400000083c70c3b7b5c7615c7436c *03000000c74320fe000000b8b03d1008ffe0c747f830f80d088b45048947fc8b450c89078d77f8 *83c5108b4500ebe189f6fc8d0e08430000002400010083c70c3b7b5c760ec7436c03000000b894 *361008ffe0c747f8c48f0e088b450c8947fc8b450489078d47f8894308c743040cd211088b750c *c74500f08f0e08b8c0441008ebce89f6fc8d0e08080000002400010083c7203b7b5c7615c7436c *08000000c74320fe000000b8b03d1008ffe0c747e4588f0e088b45108947e88b451c8947ec8b45 *0c8947f08b45208947f48b45148947f88b45088947fc8b450489078975208d47e4894304c74514 *38900e0883c514b87c541008ebb490fc8d0e080700000024000100897500c745fc8c900e0883ed *04e9cec1010089f6fc8d0e0805000000240001008b46048945008b46088945fcbebce31108c745 *f800910e0883ed08e95cb20100fc8d0e080500000024000100c7450020910e08ff2690909024f6 *11084cee1108d8910e08070c000058910e080000080000000000110003008d45e43b4354720883 *c70c3b7b5c7611c7436c03000000be4cee11088b43fcffe08b45182b4514751dc747f8c4960e08 *8b450c8947fc8b451489078d77f883c51c8b4500ebd98b7500894500c745fc0c960e0883ed0483 *ef0c8b06ebc28d7600e99bffffff8d7600000000002400000083c7083b7b5c7615c7436c020000 *00c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760003 *000200010003000b0000008b460c894424188b460483c0088b4e088b5610c74500e8910e088954 *240801c8894424048b442418890424e81407f6ff89c6ff65008d7600eb2e89f600000000240000 *00be0cd2110883c504ff65009060920e08000000000000000000000100000001000d0000008d45 *fc3b435473058b43fcffe08b7604c745fc6c920e0883ed04b830571008ebea8d76006200000024 *00000083c7183b7b5c760cc7436c060000008b43f8ffe08b5508035504c747ec14c50c088b4604 *8947f08b46088947f4c747f8000000008957fc8b461489078d77ec83c50cb8d46d1008ebc98d76 *0001000200120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945 *f08b46088945f48b7604c745ecbc920e0883ed148b06ebd589f68b4520034510894520c74510fc *d111088b450489450c83c50ce912feffff89f6620000002400000083c7183b7b5c760cc7436c06 *0000008b43f8ffe08b5508035504c747ec14c50c088b46048947f08b46088947f4c747f8000000 *008957fc8b461489078d77ec83c50cb8d46d1008ebc98d760001000200120000008d45ec3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604c745ec7093 *0e0883ed148b06ebd589f683c7103b7b5c760cc7436c040000008b43f8ffe0c747f4c4930e088b *45188947f88b45208947fc8b451089078d77f483c5288b4500ebdb90fc930e0848930e085c910e *08c931000025000100210000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0c747 *ec14c50c088b46048947f08b46088947f4c747f8000000008b45048947fc8b461489078d77ec83 *c508b8d46d1008ebcc89f601000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d *10088970048b46088945f48b7604c745f050940e0883ed108b06ebdb5c910e08c9300000240001 *0083c7103b7b5c760cc7436c040000008b43f8ffe08b560485d2752f8b552085d2750d83c52883 *ef10b8d4f50e08ebe3c747f4a0940e088b45188947f88957fc8d77f483c52883ef04eb343b550c *7d148b7510895510c7450048940e0883ef108b06ebafc747f410930e088b45188947f88b452089 *47fc89178d77f483c5288b4500eb8f905c910e08c930000024000100c74500dc940e08ff268d76 *0058910e0889300000240003008b45088945fc8975f8c745f424f61108c745f0c8e11108c74500 *6c950e0883ed10e952f3feff89f6c745fc000000008b7504c7450484950e08c745005873100883 *ed08e95c7a0100c745fc010000008b7504c7450484950e08c745005873100883ed08e93c7a0100 *cc950e08ac950e0858910e080a6100002500030058910e08270c00002400030083c71c3b7b5c76 *0cc7436c070000008b43f8ffe0c747e828920e088b45148947ec8b45188947f08b46048947f48b *45048947f8c747fc90920e088b460489078d47fc8945008975fc8d47e88945f88b750cc745f400 *960e0883ed0c8b06ebb390210000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0 *c747ec14c50c088b46048947f08b46088947f4c747f8000000008b45048947fc8b461489078d77 *ec83c508b8d46d1008ebcc89f601000100160000008d45f03b435473058b43f8ffe08d45f8c700 *d46d10088970048b46088945f48b7604c745f074960e0883ed108b06ebdb00000200180000008d *45ec3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e82d *6701008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4d0970e0883ed0cc704 *2401000000e8b41c01008d4df8890189510489cd8b4508ebb20000000024000000c74424040000 *0000c704240000000083c70c3b7b5c7615c7436c03000000c74320ff000200b8b03d1008ffe0c7 *47f89ced0b088d57fc8b4d00890c248b450489442404890a8b4c2404894a048d77f883c50cb8d4 *6d1008ebd18d76000000000024000000c744241400000000c7442410000000008b550089542410 *8b450489442414c745086c970e0883c5088b4424108b54241489042489542404e8981a01008d4d *f8890189510489cdff650890909054ee11081c980e080400010000000000110001008d45f43b43 *54730abe64ee11088b43fcffe08b7500c74500c4980e088b06ebf06200000024000000c744240c *00000000c744240800000000c744241400000000c7442410000000008d55fc8d45048b08894c24 *108b400489442414890a8b4c2414894a048d55048d46048b08894c24088b40048944240c890a8b *4c240c894a0483ed04e9e81100001c980e080000000024000100c744240400000000c704240000 *00008d55fc8d46048b08890c248b400489442404890a8b4c2404894a04be54ee1108c745f85898 *0e0883ed08ff269077726974654368756e6b009000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8156501008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f000990e0883ed10b84cce0b08 *ebbf90726561644368756e6b0089f600000200180000008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8a56401008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f070990e0883ed10b84cce0b08ebbf90009a *0e080000000000000000000001000000000011000000be0cd21108ff6500e9f3ffffff9090906e *6f2062756666657221009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e80d6401008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f400d21108c745f0089a0e0883ed10b84cce0b08ebbf906c617a795265 *6164008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e89d6301008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0789a0e0883ed10b84cce0b08ebbf90696c6c6567616c2068616e *646c6520747970650000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8256301008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f0e89a0e0883ed10b84cce0b08ebbf900400020000000000 *1100000083c70c3b7b5c7611c7436c03000000bee0ee11088b43fcffe0c747f8e4bb0b088b4500 *8947fcc70700d211088d77f883c5048b4500ebe0909cee1108289c0e0804010000a49b0e080000 *0400000000001100010083c7283b7b5c7611c7436c0a000000bee4ee11088b43fcffe0c747dc4c *9c0e088b45008947e0c747e4749c0e088b45088947e8c747f0ac9f0e088b45008947f48d47dc89 *47f88d47e48947fc8b45048907c7450894ee11088d77f083c508b8ac9f0e08ebb28d7600e993ff *ffff8d7600eb1a89f6309c0e08000000000000000000000100010000000c0000008d45fc3b4354 *73058b43fcffe08b46048945fc83ed04b874f40e08ebee8d760001000100130000008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8ec060e08ebe28d7600 *000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747 *fc84ed0b0889378d77fc83c5048b4500ebea8d7600e4010000240000008b4504894424188b4508 *8b4e048b550cc74510a89c0e0883c5108954240801c8894424048b442418890424e858fcf5ff89 *c6ff65008d7600a4010000240000008b55088b460489450889d6c74500e49c0e08ff2603000200 *020002000b0000008d45f03b435473058b43fcffe08b46108945f48b46088945f88b460c8945fc *8b7604c745f0249d0e0883ed108b06ebdb8b7504c7450400000000e9a5720100908b7504c74504 *01000000e99572010090849d0e08749d0e08000000000100000025000000840000002400000083 *c7143b7b5c760cc7436c050000008b43f8ffe0c747f0449d0e088b45108947f48b45088947f88b *450c8947fc8b460489078d47f08945108b7504c7450ca89d0e0883c50c8b06ebc98d7600040001 *00120000008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46108945e88b460c *8945ec8b46148945f08b46088945f48b7604c745e4b09d0e0883ed1c8b06ebc989f6e903010000 *8d7600210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4604034504c747 *fc54dc0b0889078d77fc83c508b8d46d1008ebe201000100160000008d45f03b435473058b43f8 *ffe08d45f8c700d46d10088970048b46088945f48b7604c745f0589e0e0883ed108b06ebdb8300 *00002400000083c70c3b7b5c760cc7436c030000008b43f8ffe08b4e0485c9750e8b750883c510 *83ef0c8b4500ebe98b450c29c8c747f8909e0e088b55088957fc890fc7450c1c0910088945088b *75048d47f889450483c504b8ac9f0e08ebb889f68300000024000000c74500c89e0e08ff268d76 *00489e0e0800000000a49b0e0800000100040001000b0001008d45e03b435473058b43fcffe08b *46048945ec8b460c8945e8c745e49cee1108c745e0c8e111088b46108945f48b46088945f88b46 *148945fcc745f02c9f0e0883ed20b8fc880d08ebc189f6a49b0e080a000200040000000b000100 *83c7303b7b5c760cc7436c0c0000008b43fcffe0837d04007e51c747d4049e0e088b46048947d8 *8b460c8947dc8b45008947e08b46108947e48b45048947e8c747ec509f0e088b46088947f08b45 *008947f48d47d48947f88977fc8b450489078d77ec83c5088b4500eba78b4500894504bef0d911 *0883ef30b808121008eb920400020000000000110000008d45fc3b4354730abeecee11088b43fc *ffe08b7500c74500a0a00e088b06ebf001000000240000008b06668378fe04750dbee0d0110883 *c5088b4500ffe08b750483c508b8c0351008ebf19001000000240000008b7608c7450060a00e08 *ff2600000000240000008b06668378fe0975148975008b7604c745fc8ca00e0883ed048b06ffe0 *897500b874e80b08ebf4903a20009000000200180000008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8555d01008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f0c8a00e0883ed10b84cce0b08ebbf902028 *009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e8ed5c01008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f400d21108c745f030a10e0883ed10b84cce0b08ebbf903c3c6c6f6f703e3e008d7600000002 *00180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e87d5c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d211 *08c745f098a10e0883ed10b84cce0b08ebbf90756e6b6e6f776e20657863657074696f6e0089f6 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8055c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f008a20e0883ed10b84cce0b08ebbf9074687265616420626c6f636b656420696e *646566696e6974656c790000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8855b01008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f400d21108c745f080a20e0883ed10b84cce0b08ebbf9061726974686d *65746963206f766572666c6f770000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e80d5b01008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f000a30e0883ed10b84cce0b08ebbf90617269 *74686d6574696320756e646572666c6f77008d760000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8915a01008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f078a30e0883ed10b84cce0b *08ebbf906c6f7373206f6620707265636973696f6e0089f600000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8195a01008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0f4a30e0883ed10b8 *4cce0b08ebbf90646976696465206279207a65726f009000000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a55901008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f06ca40e0883ed10b84c *ce0b08ebbf9064656e6f726d616c008d760000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8355901008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0e0a40e0883ed10b84cce0b08ebbf *9068656170206f766572666c6f770089f600000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c15801008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f050a50e0883ed10b84cce0b08ebbf90 *746872656164206b696c6c65640089f600000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e84d5801008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0c4a50e0883ed10b84cce0b08ebbf9061 *7272617920696e646578206f7574206f662072616e6765008d760000000200180000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cd570100 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f038a60e0883 *ed10b84cce0b08ebbf90756e646566696e656420617272617920656c656d656e74000000020018 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e8515701008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c7 *45f0b8a60e0883ed10b84cce0b08ebbf907b68616e646c653a200089f600000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e156 *01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f034a70e *0883ed10b84cce0b08ebbf90b0f61108c0f61108d0f61108e0f61108f0f6110800f7110810f711 *0820f7110830f7110840f7110850f7110860f7110870f7110880f7110890f71108a0f71108b0f7 *1108c0f71108d0f71108e0f7110810a80e080b000200000000001100ffff8b7500c7450050a80e *08ff26a4a70e0814000000ffff0f00897500e90832fdff1ca80e081ca80e080000000001000000 *25000000a4a70e0814000000ffff0f0038a80e08010000002400ffff8b060fb740fe83f8120f87 *9b000000ff2485984c1108bed0f71108c7450038a80e088b06ffe0bec0f71108ebeebeb0f71108 *ebe7bea0f71108ebe0be90f71108ebd9be80f71108ebd2be70f71108ebcbbe60f71108ebc4be50 *f71108ebbdbe40f71108ebb6be30f71108ebafbe20f71108eba8be10f71108eba1be00f71108eb *9abef0f61108eb93bee0f61108eb8cbed0f61108eb85bec0f61108e97bffffffbeb0f61108e971 *ffffffbee0f71108e967ffffff000000000a0003008b4500ff60e490900100000002000000ff65 *00900100000009000000ff650090000000000a0004008b4500ff60e09090000000000a0005008b *4500ff60dc89f6c0e311081cda1108c4e3110820da1108f8ef1108fcef11080800020000000000 *1100000083c7083b7b5c7611c7436c02000000be04f011088b43fcffe08b45003b45047f1fc747 *fc1caa0e088b450489078b45008945048d77fc83c504b81caa0e08ebd7be00d2110883c50883ef *088b45008b40f0ebc49001000200120000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b460c3b46087411408945f48b760483ed0cb81caa0e08ebd9be00d2110883ed08a1c4 *6d1008ebca8d760003000100000001000d00000083c7243b7b5c760cc7436c090000008b43fcff *e0c747e0cca90e088977e48b46048947e88b45008947ecc747f084ed0b088b45008947f4c747f8 *7cdc0b088d47f08947fc8d47e089078d77f883c5048b45008b40ecebbb90030001000000000011 *000000e90b55000090909014ab0e08e401000000000000000002000000000011000000c744241c *00000000c744241800000000c744242400000000c7442420000000008b5500895424208b450489 *4424248d45088b10895424188b40048944241cc7450c24ab0e0883c50c8b4424188b54241c8944 *24088954240c8b4424208b54242489042489542404e84206010089c6ff65008d7600e987ffffff *8d7600000000002400000085f67510befcd1110883c5048b45008b40f0ffe0be04d2110883c504 *8b45008b40ecebee38f21108f4f7110848ab0e0800000200180003008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cd5201008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f4f4f7110883ed0cb870cf0e08ebc630f21108f4 *f71108b0ab0e0800000200180003008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8655201008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f4f4f7110883ed0cb8a8ce0e08ebc60b00020000000000110000008b7500c74500 *80ac0e08ff2621000000240000008b45043b460474283b46040f9cc00fb6c08944240883c5088b *34852cdc0b088b542408c1e2028b450029d08b40f0ffe0be04d2110883c5088b45008b40ecebee *01000000240000008b55048b460489450489d6c7450038ac0e08ff260b00020000000000110000 *008b7500c74500ecac0e08ff2621000000240000008b45043b460474153b46047c10be04d21108 *83c5088b45008b40ecffe0befcd1110883c5088b45008b40f0ebee8d760001000000240000008b *55048b460489450489d6c74500b4ac0e08ff260b00020000000000110000008b7500c7450058ad *0e08ff2621000000240000008b45043b460474053b46047c10be04d2110883c5088b45008b40ec *ffe0befcd1110883c5088b45008b40f0ebee8d760001000000240000008b55048b460489450489 *d6c7450020ad0e08ff260b00020000000000110000008b7500c74500d4ad0e08ff262100000024 *0000008b45043b460474283b46040f9cc00fb6c08944240883c5088b34852cdc0b088b542408c1 *e2028b450029d08b40f0ffe0befcd1110883c5088b4500ebee8d760001000000240000008b5504 *8b460489450489d6c745008cad0e08ff260b00020000000000110000008d45fc3b4354730abe40 *f011088b43fcffe08b7500c7450040ae0e088b06ebf042000000240000008b45083b4604740c3b *46047c0783c50c8b06ffe08b7504ebf48d760001000000240000008975008b55048b4604894504 *89d6c745fc1cae0e0883ed04ff2690900b00020000000000110000008d45fc3b4354730abe44f0 *11088b43fcffe08b7500c74500b0ae0e088b06ebf042000000240000008b45083b460474083b46 *047c038b750483c50c8b06ffe09001000000240000008975008b55048b460489450489d6c745fc *90ae0e0883ed04ff2690900f00030000000000110000008d45f83b4354730abe50f011088b43fc *ffe0c745fc00d21108c745f804f8110883ed08b850980d08ebe6909000000200180000008d45ec *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e81d4f01 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f008f81108c745ec48f01108 *c745f404b00e0883ed14b8acd80c08ebb889f683c7083b7b5c760cc7436c020000008b43f8ffe0 *8b4604f7d8c747fc84ed0b0889078d77fc83c504b8d46d1008ebe390000000002400000083c708 *3b7b5c760ec7436c02000000b8f0371008ffe089f0f7d8c747fc84ed0b0889078d77fc83c504b8 *d46d1008ebe48b46048943048b7608c74500a8af0e08e9f7a001008d7600d8af0e0870af0e0800 *000000000000002500000054f0110804b00e080800020000000000110001008d45f43b4354730a *be64f011088b43fcffe08b45043b45007d13be54f01108c745fc78b00e0883ed048b06ebe38b45 *008945fc8b4504894500c74504ffffff7fc745f800d21108c745f410f8110883ed0cb850980d08 *ebb862000000240000008b45048945008b45088945048b4604894508c745fc00d21108c745f814 *f8110883ed08e9b0e7feff0b00020000000000110000008b7500c7450008b10e08ff2621000000 *240000008b45043b460474253b46047c10be1cd2110883c5088b45008b40e8ffe0be14d2110883 *c5088b45008b40f0ebeebe18d2110883c5088b45008b40ecebde8d760001000000240000008b55 *048b460489450489d6c74500c0b00e08ff2654d2110828f811081cb10e0800000200180003008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8f9 *4c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f428f81108be54d21108 *83ed10b808121008ebc190909038f8110880f011088cb10e080a00020000000000110003008b75 *00c74500fcb10e08ff26be38f8110883c504e9df5501008d76008b450485c0750d8b760483c504 *b89c071008ffe0488945048b4608894500b8a4b10e08ebed8d7600c0b10e08b0b10e088cb10e08 *21000000250003005072656c7564652e008d760000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8194c01008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0fcb10e0883ed10b84cce0b08 *ebbf9018f8110848f811086cb20e0800000200180003008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8a94b01008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f418f81108c745f048f8110883ed10b82cda0b08ebbf9018f8 *110858f81108dcb20e0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8394b01008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f418f81108c745f058f8110883ed10b82cda0b08ebbf9018f8110868f811 *084cb30e0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8c94a01008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f418f81108c745f068f8110883ed10b82cda0b08ebbf9018f8110878f81108bcb30e08 *00000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8594a01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *18f81108c745f078f8110883ed10b82cda0b08ebbf900b00020000000000110000008d45f83b43 *54730abed8f011088b43fcffe08b7500c74500b8b60e088b06ebf083c7103b7b5c760cc7436c04 *0000008b43f8ffe08b4d0489c899f77e048944240889c899f77e04c747f4b8050c088957f8c747 *fcb8050c088b44240889078d47f48945048d77fc83c5048b4504ebc390420000002400000083c7 *0c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947 *fc89378b450889450c8d47f889450883c508b838b40e08ebd989f68975008b7504c745fcb0b40e *0883ed04e97b9001008d7600f4b40e0858b40e0800000000210000002500000001000000240000 *0083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45 *008947fc89378d47f889450483c504b838b40e08ebdf8b46043d000000807513be00000080c745 *0028b50e08b884451008ffe08b7504894504c7450020b50e088b06ebed89f60100000024000000 *83c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b4500 *8947fc89378b45088945048d47f889450883c504b838b40e08ebd989f68b7604c745089cb50e08 *83c508e9928f010089f6000000002400000083c7183b7b5c7615c7436c06000000c74320ff0001 *02b8b03d1008ffe0c747ecccdc0c088b45088947f08b45008947f4c747f8ccdc0c088b45048947 *fc89378d47ec89450c8d77f883c50c8b4504ebcb8b460489430c8b46088943088b45048943048b *7508c7450cfcb50e0883c50ce9049801004cb60e08e0b50e080000000043000000250000008b46 *048945fc8b46088945008b450489750489c6c745f884b60e0883ed08ff2684b60e0864b50e0800 *00000001000000250000000400010000000000110000008b7500c74500d8b60e08ff2600000000 *2400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcb8050c088b460489078d77fc *83c5048b45008b40f0ebe490900b00020000000000110000008d45fc3b4354730abee0f011088b *43fcffe08b7500c74500bcb80e088b06ebf08b45043b46040f9dc00fb6c08944240883c5088b34 *852cdc0b088b542408c1e2028b450029d0ff60f08d7600000000002400000085f60f9ec00fb6c0 *8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f08d76008b45048943088b *46048943048b7608c7450468b70e0883c504e98a98010089f690b70e0834b70e08000000002100 *0000250000008b55048b460489450489d6c74500c4b70e08ff26000000002400000089f0f7d0c1 *e81f8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f08b46048943088b45 *048943048b7508c74508e0b70e0883c508e91698010089f6000000002400000089f0f7d0c1e81f *8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f08b460489430c8b460889 *43088b45048943048b7508c745082cb80e0883c508e91498010050b80e0804b80e080000000042 *000000250000008b46048945008b55048b460889450489d6c745fc88b80e0883ed04ff268d7600 *88b80e08c4b70e08000000000100000025000000c8e41108bcb80e081200030000000000110001 *008d45f83b4354730abeecf011088b43fcffe0837d00067e1ec745fc90e411088b45048945f8c7 *4500d4b90e0883ed08b824080f08ebda83c504b8980b0f08ebd083c504e980520000bcb80e0802 *000000150001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c7 *00d46d1008897004c747f87cdc0b08c747fc88f811088b460889078d47f88945f48b46048945f0 *83ed10b8980b0f08ebc98d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec24b90e *088b45048947f08b45088947f4c747f87cdc0b08c747fc90f811088d47ec89078d77f883c50c8b *45008b40ecebca78b90e0810b90e08bcb80e08020000002500010046616c73650089f600000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8454401008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0d4b90e0883ed10b84cce0b08ebbf9054727565008d760000000200180000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d94301008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f040ba0e0883ed *10b84cce0b08ebbf900400010000000000110000008b7500c74500f8ba0e08ff26be78d6110883 *c5048b4500ff60e889f6be78d6110883c5048b4500ff60e889f6d4ba0e08c4ba0e080000000000 *00000025000000acdb1108b4db1108f8ba0e0800000200180003008d45f43b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e81d4301008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f4b4db110883ed0cb8d0e30c08ebc654d21108ccf8 *110860bb0e0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8b54201008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f4ccf81108be54d2110883ed10b808121008ebc190909054d21108ccf81108d0bb0e *0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8454201008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f4ccf81108be54d2110883ed10b808121008ebc190909094e11108b0f8110898f81108dcf81108 *40bc0e080b0002000000000011000f008d45f03b4354730abe5cf111088b43fcffe08b45048945 *f8c745f4bcf81108c745fc64be0e0883ed0cb8b8ff0d08ebe08b450489750489c683c504ff6504 *89f690bc0e0890bc0e080000000001000000250000008b45048945008b45088945fc897508c745 *04b4bc0e0883ed04e98e48000089f6b4bc0e08b4bc0e0848bc0e080200000025000100897500ff *650489f6e8bc0e08e8bc0e08000000000000000025000000837e04007516be94e11108c7450804 *bd0e0883c504b89c071008ffe08975fc8b45048945f8897504c74500e8bc0e0883ed08b860050f *08ebe18d76008b450489750489c683c504ff650489f640bd0e0840bd0e08000000000100000025 *0000008b450c89450089750cc7450864bd0e08e9e74700008d760064bd0e0864bd0e0848bc0e08 *4300000025000100897500ff650489f690bd0e0890bd0e0800000000000000002500000040bc0e *08030000002400050085f67516be94e11108c7450cacbd0e0883c508b89c071008ffe08b450489 *45fc8b45088945f8c7450090bd0e0883ed08b860050f08ebe190897500c74308000000008b4604 *8943048b7608c745fcb8bd0e0883ed04e92692010089f6f0bd0e0804bd0e0840bc0e0802000000 *250005008b45088945fc8b45048945f8c7450028be0e0883ed08e9014f000090bedcf8110883c5 *0cff2689f644be0e0828be0e0840bc0e080200000025000f001400030000000000110000008d45 *ec3b4354730abe64f111088b43fcffe08b450485c0750a8b750883c50c8b06ebed8945f88b7500 *83ed08b8f8be0e08ebdd908b4504488945108b451489450c89751483c50ce9b4ffffffa4be0e08 *a4be0e0800000000e5010000250000008b45048945f883ed08eb1d90d0be0e08d0be0e08000000 *00220000002500000063000000240000008b550089d0c1e81f8d041083e0fe39c2751e89d0c1ea *1f01d0d1f889750489750089450cc74508f0be0e08e9cc16feff8b45108945f88975f4897510c7 *45fcd0be0e0883ed0cebe31300030000000000110000008d45fc3b4354730abe68f111088b43fc *ffe08b450485c0750b8b750883c50c8b4500ebec8945048b7500c745000cc00e088b06ebdb8d76 *00620000002400000083c7083b7b5c761cc7436c02000000c745048cbf0e08c74320ff000100b8 *b03d1008ffe08b550089d0c1e81f8d041083e0fe39c2751989d0c1ea1f01d0d1f88945000faff6 *83ef08b88cbf0e08ebd389f00faf450c8b55004ac747fc54dc0b08893789450c8955088d47fc89 *450483c504b84cbf0e08ebaa62000000240000008b45048945fc8b760483ed04e96fffffff9090 *903cf11108ecf8110820c00e080b00020000000000110003008d45f43b4354730abe6cf111088b *43fcffe08b45048945f8c745f4bcf81108c745fc0cc10e0883ed0cb8b8ff0d08ebe0be3cf11108 *83c50cff2689f68b4504894508894500897504e9335400008d760074c00e0874c00e0824c00e08 *4200000025000100c745fc34f111088b45088945f8c745009cc00e0883ed08e9d410feff9cc00e *0868c00e0820c00e080200000025000300c745fcbcf811088b45088945f8c74500ccc00e0883ed *08e9f0480000be34f1110883c50ce9c344fdff8d7600e8c00e08ccc00e0820c00e080200000025 *00030094e111080cc10e080b00020000000000110001008d45fc3b4354730abe74f111088b43fc *ffe08b7504c745fc50c20e0883ed048b06ebed9000000200170000008d45f83b4354720883c708 *3b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d10088970048b460499f77e08c747fc *54dc0b0889178d77fc83ed08b8d46d1008ebd58d760000000200170000008d45f83b4354720883 *c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d10088970048b460499f77e08c7 *47fc54dc0b0889078d77fc83ed08b8d46d1008ebd58d7600210000002400000083c7243b7b5c76 *0cc7436c090000008b43f8ffe0c747e04cc10e088b46048947e48b45048947e8c747ec9cc10e08 *8b46048947f08b45048947f4c747f8e4bb0b088d47ec8947fc8d47e089078d77f883c5088b4500 *ebbb900cc10e0842000000240001008b460485c0750fbe94e1110883c508b89c071008ffe08945 *088b7504c74504ecc10e0883c5048b06ebea909094e111087cc20e080b00020000000000110001 *008d45fc3b4354730abe7cf111088b43fcffe08b7504c745fcc0c20e0883ed048b06ebed907cc2 *0e0842000000240001008b460489450883c504e96a4f0000909094e11108d0c20e080b00020000 *000000110001008d45fc3b4354730abe84f111088b43fcffe08b7504c745fc4cc30e0883ed048b *06ebed90210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b460499f77d04 *c747fc54dc0b0889078d77fc83c5088b4500ebe390d0c20e0842000000240001008b460485c075 *0fbe94e1110883c508b89c071008ffe08945088b7504c7450410c30e0883c5048b06ebea909094 *e1110878c30e080b00020000000000110001008d45fc3b4354730abe8cf111088b43fcffe08b75 *04c745fc14c40e0883ed048b06ebed90000000002400000083c7083b7b5c760ec7436c02000000 *b8f0371008ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea89f621000000240000008b45 *048945008b46048945fcc74504b8c30e0883ed04e985cdfeff9078c30e0842000000240001008b *460485c0750fbe94e1110883c508b89c071008ffe08945088b7504c74504ecc30e0883c5048b06 *ebea909094e1110840c40e080b00020000000000110001008d45fc3b4354730abe94f111088b43 *fcffe08b7504c745fcdcc40e0883ed048b06ebed90000000002400000083c7083b7b5c760ec743 *6c02000000b8f0371008ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea89f62100000024 *0000008b45048945008b46048945fcc7450480c40e0883ed04e909cdfeff9040c40e0842000000 *240001008b460485c0750fbe94e1110883c508b89c071008ffe08945088b7504c74504b4c40e08 *83c5048b06ebea909094e1110808c50e080b00020000000000110001008d45fc3b4354730abe9c *f111088b43fcffe08b7504c745fc84c50e0883ed048b06ebed90210000002400000083c7083b7b *5c760cc7436c020000008b43f8ffe08b460499f77d04c747fc54dc0b0889178d77fc83c5088b45 *00ebe39008c50e0842000000240001008b460485c0750fbe94e1110883c508b89c071008ffe089 *45088b7504c7450448c50e0883c5048b06ebea9090275c2727008d760000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e86938 *01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0b0c50e *0883ed10b84cce0b08ebbf905c22009000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8013801008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f01cc60e0883ed10b84cce0b08ebbf9009 *000200000000001100000083c7143b7b5c7611c7436c05000000bee8f111088b43fcffe0837d00 *097e6a8b4d00b867666666f7e9890424895424048b542404c1fa0289c8c1f81f29c28d049201c0 *29c189c883c030c747f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b45048907b8676666 *66f76d00c1fa028b4500c1f81f29c28d47f8894504895500b890c60e08eb8e8b450083c030c747 *f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450489078d77f883c5088b45008b40ece9 *5bffffff20fa110880f0110870f0110868f9110878f9110888f9110898f91108a8f91108b8f911 *08c8f91108d8f91108e8f91108f8f9110810fa11084cc70e0809000200000000001100ff3f83c7 *183b7b5c7611c7436c06000000beecf111088b43fcffe0837d007f0f87f20000008b450083f85c *740e83f87f7518c7450088f91108eb07c7450078f9110883ef18e99b00000083f81f0f879c0000 *0089c283e80783f8077765ff2485e44c1108c74500f8f91108ebd5c74500e8f91108ebccc74500 *d8f91108ebc3c74500c8f91108ebbac74500b8f91108ebb1c74500a8f91108eba8c7450098f911 *08eb9fc747eca0ca0e088b45048947f08d47ec894504c7450068f9110883ef0ceb23c747ececc9 *0e088957f0c747f87cdc0b08c747fc08fa11088d47ec89078d47f8894500b82cda0b08e92affff *ffc747ec3cdc0b088947f0c747f47cdc0b088d47ec8947f88b45048947fc8d77f483c50883ef04 *eb2cc747ec8cc90e088b45048947f08b45008947f4c747f87cdc0b08c747fc08fa11088d47ec89 *078d77f883c5088b45008b40ece9cbfeffffbe00d2110883c504ff25c46d100889f680c70e0801 *00000024000100837e042f7606837e0439760a8b750483c5088b06ffe0c7450010fa1108b82cda *0b08ebf08975008b7604c745fcfcc80e0883ed04ff2689f620c90e08e0c80e0880c70e08000000 *002500010080c70e0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b7604c745f448c90e0883ed0c8b06ebe189f680c70e0801000100160001008d45ec3b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f854 *c90e088b46048947fc8b56088d47f88945f48955f0c745ec0000000083ed14b8d0f50c08ebc889 *f64cc70e0800000200140007008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b *460485c078148945f4c745f020fa110883ed10b8a4b10e08ebd7be70f0110883ed0cb89c071008 *ebc890be00d2110883c504ff25c46d100889f680c70e080100000024000100837e0448750ec745 *0010fa1108b82cda0b08ffe08b750483c5088b06ebf489f68975008b7604c745fc4cca0e0883ed *04ff2689f66cca0e0830ca0e0880c70e08000000002500010080c70e0801000100130001008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f494ca0e0883ed0c8b06eb *e1909068d211082cd9110814d9110850d911081ccb0e0800000000ccca0e080000010000000000 *11000f008d45f03b4354730abefcf111088b43fcffe0be68d21108c745fcc0cb0e0883ed048b06 *ebeb8d7600e9d3ffffff8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b *088b46088907c745002cd911088d47fc8945fc8975f8c745f414d9110883ed0cb818a00c08ebd1 *8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b460c8907c745002c *d911088d47fc8945fc8975f8c745f414d9110883ed0cb818a00c08ebd18d760068cb0e0824cb0e *08d0ca0e080000000025000700040002000000000011000000be0cd2110883c504ff6500906e6f *207468726561647320746f2072756e3a2020696e66696e697465206c6f6f70206f722064656164 *6c6f636b3f009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8193201008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f400d21108c745f0d8cb0e0883ed10b84cce0b08ebbf9068d211082cd9110814d9 *110850d91108bccc0e08000000006ccc0e08000001000000000011000f008d45f03b4354730abe *18f211088b43fcffe0be68d21108c745fc60cd0e0883ed048b06ebeb8d7600e9d3ffffff8d7600 *83c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b46088907c745002cd91108 *8d47fc8945fc8975f8c745f414d9110883ed0cb818a00c08ebd18d760083c7083b7b5c760cc743 *6c020000008b43f8ffe0c747fcd8e90b088b460c8907c745002cd911088d47fc8945fc8975f8c7 *45f414d9110883ed0cb818a00c08ebd18d760008cd0e08c4cc0e0870cc0e080000000025000700 *040002000000000011000000be0cd2110883c504ff6500900400010000000000110000008b7500 *c7450098cd0e08ff2600000000240000008b4604894500e99950000090ecf01108a4cd0e080300 *010000000000110001008d45f83b4354720883c7083b7b5c7611c7436c02000000be28f211088b *43fcffe08b450085c0791389c6c745004cce0e0883ef08b8e4451008ebe4c747fcb8050c088907 *8d77fcc7450040ce0e08b810ce0e08ebca8d7600c7450000d211088975fcc745f80000000083ed *08e9a7eaffff8d760010ce0e0810ce0e08a4cd0e080000000025000100a4cd0e08000000002400 *010083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b *45008947fc89378d77f8c7450440ce0e0883c504b810ce0e08ebdb54d2110838fa110848fa1108 *8cce0e080400010000000000110007008d45f83b4354720883c70c3b7b5c7611c7436c03000000 *be30f211088b43fcffe0c747f800cf0e088b45008947fc8d47f88945fcc745f848fa1108c74500 *54cf0e0883ed08b82cda0b08ebd390ce0e0801000100130001008d45f03b435473058b43f8ffe0 *8d45f8c700d46d1008897004c745f438fa11088b46048945f083ed10b82cda0b08ebdb897500be *54d2110883ed04e9c842010030cf0e0830cf0e088cce0e08000000002500010054d2110858fa11 *0868fa110854cf0e080400010000000000110007008d45f83b4354720883c70c3b7b5c7611c743 *6c03000000be38f211088b43fcffe0c747f8c8cf0e088b45008947fc8d47f88945fcc745f868fa *1108c745001cd00e0883ed08b82cda0b08ebd358cf0e0801000100130001008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f458fa11088b46048945f083ed10b82cda0b08eb *db897500be54d2110883ed04e900420100f8cf0e08f8cf0e0854cf0e0800000000250001000400 *010000000000110000008b7500c745003cd00e08ff2600000000240000008b4604894500e9454e *0000906e756c6c20636f6d6d616e64008d760000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c92d01008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f048d00e0883ed10b84cce0b08eb *bf90457869744661696c75726520300089f600000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8552d01008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0bcd00e0883ed10b84cce0b08ebbf *906578697457697468008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8e52c01008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f030d10e0883ed10b84cce0b08ebbf9066645479 *7065009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8792c01008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f0a0d10e0883ed10b84cce0b08ebbf900400010000000000110000008b *7500c745002cd20e08ff260000000024000000837e04ff7510be04d2110883c5048b45008b40ec *ffe0befcd1110883c5048b45008b40f0ebee90907365744e6f6e426c6f636b696e674644008d76 *0000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8b92b01008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f400d21108c745f054d20e0883ed10b84cce0b08ebbf900300020000000000110000008b450083 *c5042500f000003d00c000000f94c00fb6f0ff650090909000000200180000008d45f43b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e82d2b01008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f458d30e0883ed0cb8a0210f08ebc600 *0000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc *84ed0b0889378d77fc83c504b8d46d1008ebe89000000200180000008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8952a01008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f4f0d30e0883ed0cb8c8210f08ebc60000000024 *00000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b08 *89378d77fc83c504b8d46d1008ebe8900300020000000000110000008b450083c5042500f00000 *3d001000000f94c00fb6f0ff65009090900300020000000000110000008b450083c5042500f000 *003d002000000f94c00fb6f0ff65009090900300020000000000110000008b450083c5042500f0 *00003d008000000f94c00fb6f0ff650090909000000200180000008d45f43b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8852901008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d50e0883ed0cb8f0210f08ebc6000000002400 *000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889 *378d77fc83c504b8d46d1008ebe890d4f2110834d50e0800000200180001008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e52801008d47f889 *4604c706245b10088d55f8c702d46d1008894204bed4f21108c745f4a4d50e0883ed0c8b06ebc4 *89f6000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc54dc0b088b46 *0489078d77fc83c504b8d46d1008ebe590909000000200180000008d45f43b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e84d2801008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f438d60e0883ed0cb818220f08ebc6000000002400 *000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889 *378d77fc83c504b8d46d1008ebe89000000200180000008d45f43b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8b52701008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f4d0d60e0883ed0cb840220f08ebc6000000002400000083c7 *083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc *83c504b8d46d1008ebe89024d70e080000000000000000000001000000000011000000be000400 *00ff6500e9f3ffffff9090904cd70e080000000000000000000001000000000011000000be0200 *0000ff6500e9f3ffffff90909074d70e080000000000000000000001000000000011000000be01 *000000ff6500e9f3ffffff9090909cd70e080000000000000000000001000000000011000000be *00000000ff6500e9f3ffffff9090900f00040000000000110000008b4d008b55048b450883c50c *8944240889542404890c24e8c0bff5ff89c6ff65009090900800030000000000110000008b5500 *8b450483c50889442404891424e897bff5ff89c6ff650090900800030000000000110000008b55 *008b450483c5088944240889542404c7042403000000e857c1f5ff89c6ff6500909078fa1108b8 *fa11082cd80e080300020000000000110003008d45f43b4354730abe30f311088b43fcffe0beb8 *fa1108c745fc74d90e0883ed048b06ebeb8d7600eb5689f6000000002400000083c7083b7b5c76 *15c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b45 *00ebea8d76006cd80e0800000000000000000000010000000200100000008d45f03b435473058b *43fcffe0c745f8b60100008b46088945f48b46048945f0c745fc78d80e0883ed10b894240d08eb *da8d7600000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008 *ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760000000000240000008b46048945fc *c7450000d90e0883ed04e9bb4bfeff8d76000000000024000000c745003cd90e08ff268d76002c *d80e08210000002400010083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8c4d80e088b *45048947fc8b460489078d47f8894500c745fc78fa1108c745f884f21108c745045cd90e0883ed *08b808880d08ebc79003000100000000001100000083c7143b7b5c7611c7436c05000000be5cf3 *11088b43fcffe08b450085c0750dbec8fa110883c50483ef14eb1cc747f024da0e088947f4c747 *fc70da0e088d47f089078d77fc83c5048b4500ebc989f600000200140000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b4604488945f483ed0cb8ccd90e08ebe189f6040001 *00010000000c0000008b760483c504ff2604000100010000000c00000083c71c3b7b5c760cc743 *6c070000008b43fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f45cda0e088d47e8 *8947f8c747fca05e0c088d47f489078d77fc83c5048b45008b40f0ebc4909068d6110860f31108 *c0da0e080b00020000000000110003008d45f83b4354730abe60f311088b43fcffe08b7500c745 *00e0de0e088b06ebf0897500e9d8fffffff8da0e08f8da0e08f8da0e08f8da0e08f8da0e08c4da *0e080100000025000100c4da0e0804000100020000000e0001008d45f43b435473058b43fcffe0 *8b45008945f88b46048945008b7608c745fc20db0e0883ed0cb808121008ebde8d760083c7143b *7b5c760cc7436c050000008b43f8ffe0c747f030db0e088b45048947f48b46048947f8c747fca0 *5e0c088d47f089078d77fc83c5088b45008b40f0ebd18d7600897500e92cffffffa4db0e08a4db *0e08a4db0e08a4db0e08a4db0e08c4da0e080100000025000100c4da0e0804000100020000000e *0001008d45f43b435473058b43fcffe08b45008945f88b46048945008b7608c745fcccdb0e0883 *ed0cb808121008ebde8d760083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0dcdb0e08 *8b45048947f48b46048947f8c747fcc05e0c088d47f089078d77fc83c5088b45008b40ecebd18d *7600be78d6110883c5088b4500ff60e889f6c4da0e0802000000150001008d45f03b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b8d8da0e08ebdc90 *897500e99474fdff9cdc0e089cdc0e089cdc0e089cdc0e089cdc0e08c0da0e0801000000250001 *0083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f86cdc0e088b45048947fc8b46088907 *8b46048945fc8b75048d47f8894504c74500c4dc0e0883ed08b808121008ebcc89f6be00d21108 *83c50c8b4500ff60f089f68b450489450889750483c504e9fffcfcff8d76001cdd0e081cdd0e08 *0000000042000000250000008b45088945fc8975f8c7450044dd0e0883ed08e9d071fdff44dd0e *0844dd0e0844dd0e0844dd0e0844dd0e08000000000200000025000000030000002400000083c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f88c6b10088b45088947fc8b450489078b4604 *8945008d47f88945088b550c8b460889450c89d6c745047cdd0e0883ed04b808121008ebc489f6 *8b46088945008b7604c745fc84dd0e0883ed04ff268d7600d4dd0e080cdd0e0800000000020000 *002500000004000100010000000c0000008d45f03b435473058b43fcffe08975fc8b55008b4604 *89450089d6c745f800de0e0883ed088b06ebe28d7600be78d6110883c5048b4500ff60e889f683 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fc105f0c0889378d77fc83c5048b45008b40 *e0ebe79048de0e0838de0e0800000000000000002500000083c7083b7b5c760cc7436c02000000 *8b43f8ffe0c747fc0cde0e088b450489078b46048945008d77fcc7450488de0e08b80cde0e08eb *db9088de0e08c4dc0e0850dc0e080cdc0e0860db0e08c0da0e08010000002500030068f3110868 *d61108e0de0e080400010000000000110003008d45fc3b4354730abe68f311088b43fcffe08b75 *00c745006ce00e088b06ebf0be34df110883c504ff6500908b750483c504e96d28010090e0de0e *0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945 *f483ed0cb8f8de0e08ebe28d7600897500e9c871fdff68df0e0868df0e0868df0e0868df0e0868 *df0e08e4de0e080100000025000100e4de0e0804000100020000000e0001008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43fcffe0c747f88c6b10088b46048947fc8b450089078b *45008945f88d47f88945008b7608c745fc90df0e0883ed0cb808121008ebcc89f683c7183b7b5c *760cc7436c060000008b43f8ffe0c747ec3cdf0e088977f0c747f8a0df0e088d47ec8947fc8b45 *0489078d77f883c5088b4500ebd790f0df0e0824df0e08e0de0e0801000000250003008b460489 *45008b7608c745fc40e00e0883ed04ff268d760040e00e0818df0e08e0de0e0800000000250003 *000b000200000000001100000083c7283b7b5c7611c7436c0a000000be70f311088b43fcffe0c7 *47dcece00e088b45008947e0c747e484e20e088d47dc8947e8c747ecbce20e088b45008947f08d *47e48947f48b45048947f8c747fcc05e0c088d47ec89078d77fc83c5088b45008b40ecebb189f6 *04000100010000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04b858230f08 *ebee8d76008b750883c510ff65008d7600be34df110883c510ff65009004000100010000000c00 *00008b760483c504ff2604000100010000000c00000083c71c3b7b5c760cc7436c070000008b43 *fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f430e10e088d47e88947f8c747fca0 *5e0c088d47f489078d77fc83c5048b45008b40f0ebc489f6040100002400000083c7183b7b5c76 *0cc7436c060000008b43f8ffe08b45103b4604740dbe34df110883c51483ef18eb2bc747ecc86b *10088b45088947f08b450c8947f48b45048947f8c747fc44e10e088d47ec89078d77fc83c5148b *4500ebb98d760004000000240000008b55108b460489451089d6c745009ce10e08ff268b460889 *45008b550c8b460489450c89d6c745fc00e20e0883ed04ff268d760014e20e0818e10e08000000 *0003000000250000008b46088945088b550c8b460489450c89d6c7450048e20e08ff2689f648e2 *0e080ce10e080000000003000000250000000b000200010000000c0000008d45f43b435473058b *43fcffe08975fc8b55008b460489450089d6c745f878e20e0883ed088b06ebe28d760004000100 *030000000b0000008d45f43b435473058b43fcffe0c745fc081210088b45008945f88b460c8945 *008b46048945f48b760883ed0cb884e20e08ebd890546578742f5072657474795072696e742f48 *7567686573504a2e68733a3739317c66756e6374696f6e206f6e654c696e657200904cd2110824 *e30e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8f51a01008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f4f0e20e08be4cd2110883ed10b828101008ebc1909090546578742f507265747479507269 *6e742f487567686573504a2e68733a3736367c66756e6374696f6e206669747300904cd21108c0 *e30e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8591a01008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f490e30e08be4cd2110883ed10b828101008ebc1909090546578742f507265747479507269 *6e742f487567686573504a2e68733a3535357c66756e6374696f6e2061626f76654e657374004c *d2110860e40e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8b91901008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f42ce40e08be4cd2110883ed10b828101008ebc1909090546578742f5072657474 *795072696e742f487567686573504a2e68733a3837327c66756e6374696f6e206c61790089f64c *d21108fce40e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e81d1901008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f4cce40e08be4cd2110883ed10b828101008ebc190909003000100000000001100 *000083c7183b7b5c7611c7436c06000000bec4f311088b43fcffe0837d00007e2ec747ecdce50e *088b45008947f0c747f87cdc0b08c747fcc8e811088d47ec89078d77f883c5048b45008b40eceb *cabe00d2110883c50483ef188b45008b40f0ebb700000200140000008d45f43b435473058b43f8 *ffe08d45f8c700d46d10088970048b4604488945f483ed0cb874e50e08ebe1909054d21108d0fa *110808e60e0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e80d1801008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f4d0fa1108be54d2110883ed10b808121008ebc19090903a3a009000000200180000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e8a51701008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0 *78e60e0883ed10b84cce0b08ebbf90a4e8110894e91108e0e60e0800000200180003008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e835170100 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f418fb1108c745f010fb110883 *ed10b8dc330e08ebbf9050f9110814f91108f4f8110850e70e0800000200180007008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c11601008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f414f91108c745f0f4f8110883ed *10b8d0160f08ebbf90a4e811081cfb1108c4e70e0800000200180003008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8511601008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f424fb1108c745f01cfb110883ed10b8dc330e *08ebbf905cf1110854db110860f4110834e80e081700040000000000110007008d45f43b435473 *0abe60f411088b43fcffe08b750cc745fcfce90e0883ed048b06ebed90897500e9e4d3ffff74e8 *0e0874e80e0834e80e0801000000250001008b4504894500897504c7450890e80e08e94fedfdff *8d760090e80e0890e80e0834e80e0843000000250001008b45088945fc89750cc74500bce80e08 *83ed04e984ecfdffbce80e08bce80e0834e80e0883000000250001008b450c894500c74504e8e8 *0e08e916f3fdff89f68b450c89450889750c83c504e943ffffff8d7600fce80e08fce80e083ce8 *0e0844000000250001008b45048945fc8b450c8945f889750cc7450024e90e0883ed08e9b2ecfd *ff89f624e90e0824e90e083ce80e0844000000250001008b45088945fc8975f8c7450058e90e08 *83ed08e93ceffdff58e90e0858e90e083ce80e0804000000250001003ce80e0804000000240001 *0083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcb8050c088b460489078b45048945fc *8b45088945f88d47fc894508c7450084e90e0883ed08b8f4d50c08ebcf908b46088945108b7604 *c7450090e90e08ff2689f6d4e90e08e8e80e0834e80e08040100002500070048d51108e0fa1108 *fce90e080400010000000000110003008d45f43b4354730abe88f511088b43fcffe08b45008945 *f8be48d51108c745fc84ea0e0883ed0cb808121008ebe289f68b4504894500c74504e0fa1108c7 *45fc80d1110883ed04e9cc0afdffbe04d2110883c5088b4500ff60ec89f660ea0e0844ea0e0800 *ea0e0801000000250001004e614e0000000200180000008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8991301008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f084ea0e0883ed10b84cce0b08ebbf90496e *66696e697479008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8291301008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f400d21108c745f0ecea0e0883ed10b84cce0b08ebbf9004000100000000 *001100000083c72c3b7b5c7611c7436c0b000000bed8f511088b43fcffe0c747d8d0eb0e088b45 *008947dcc747e408ec0e088b45008947e8c747f08cec0e088d47d88947f48d47e48947f8c747fc *a05e0c088d47f089078d77fc83c5048b45008b40f0ebb701000100130000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f458f411088b760483ed10b808121008ebde8d76 *0001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f450f4 *11088b760483ed10b808121008ebde8d760002000000240000008b460483f858742283f8587707 *83f84f740eeb1b83f86f740783f878740ceb0f8b750883c50c8b06ffe08b7504ebf4be78d61108 *83c50c8b45008b40e8ebe99004000100020000000e0000008d45f83b435473058b43fcffe08b46 *088945fc8b55008b460489450089d6c745f840ec0e0883ed088b06ebdf04000100000000001100 *00008d45fc3b4354730abedcf511088b43fcffe08b7500c7450010f4110883ed04b808121008eb *ea909050d5110870d6110868d611082ce01108e0f51108ecec0e08040001000000000011001f00 *8d45fc3b4354720883ef803b7b5c7611c7436c20000000bee0f511088b43fcffe0c7478418ee0e *088b4500894788c74790a4ee0e088b45008947948d4784894798c7479ca05e0c088d47908947a0 *c747a4dcee0e088b45008947a8c747b03cef0e088d47a48947b4c747b8a05e0c088d47b08947bc *c747c070ef0e088d47b88947c4c747c88cef0e088d47c08947ccc747d0c05e0c088d47c88947d4 *c747d8f8ef0e088d47a48947dc8d47d08947e0c747e478f00e088d47d88947e8c747eca05e0c08 *8d47e48947f0c747f4d8f00e088d47ec8947f8c747fca05e0c088d47f489078d479c8945008d47 *fc8945fc83ed04b838510c08e924ffffff90f8ec0e0801000100130001008d45f43b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb800620d08ebe28d760002000000 *2400000083c70c3b7b5c760cc7436c030000008b43f8ffe0837e045c750d8b750483c50c83ef0c *8b06ebebc747f8e4bb0b088977fcc707fcd111088b75088d47f889450883c504b808121008ebc8 *89f604000100020000000e0000008d45f83b435473058b43fcffe08b46088945fc8b55008b4604 *89450089d6c745f84cee0e0883ed088b06ebdffcec0e0801000100130001008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb810ed0e08ebe28d7600010000 *0024000000837e045c750a8b750483c5088b06ffe0be78d6110883c5088b45008b40e8ebee0400 *0100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc10ef *0e0883ed048b06ebe589f604000100010000000c0000008b760483c504e9256ffdff90f0ec0e08 *04000100010000000c0001008d45f83b435473058b43fcffe0c745fc081210088b45008945f88b *460489450083ed08b8385d0c08ebe189f6be78d6110883c5088b4500ff60e889f68b750483c508 *e9ed6efdff90c8ef0e08b8ef0e08000000000100000025000000ecec0e0803000100020000000e *0001008d45f43b4354720883c7083b7b5c760cc7436c020000008b43fcffe08b450083f826750d *8b760483c50483ef088b06ebe9c747fc3cdc0b0889078d47fc8945f88b4608894500be50d51108 *c745fce8ef0e0883ed0cb808121008ebbe01000000240000008b45048b560489550489c683c504 *eb8c04000100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c7 *45fc5cf00e0883ed048b06ebe589f60100000024000000837e045c750d8b750483c508b8a05e0c *08ffe0be78d6110883c5088b45008b40e8ebee9004000100010000000c0000008d45fc3b435473 *058b43fcffe08b55008b460489450089d6c745fca8f00e0883ed048b06ebe59090e0d8110800f1 *0e080b00030000000000110001008d45f83b4354730abee8f511088b43fcffe0c74304e0d81108 *be00040000c745fc38f20e0883ed04b818431008ebe190000000002400000083c7083b7b5c7615 *c7436c02000000c74320fe000000b8b03d1008ffe0c747fcd4f10c0889378d77fc83c5048b4500 *ebea8d7600030000002400000083c7403b7b5c7615c7436c10000000c74320fe000000b8b03d10 *08ffe0c747c46c8f0d08c747c854ec1108c747cc5cec11088977d08b55048d47c489420cc747d4 *1c810d08c747d854ec1108c747dc5cec11088b45048947e08b450c8947e48b45088947e8c747ec *00000000c747f000040000c747f4ff030000c747f8ff070000c747fc00000000c707000400008d *77d4c7450c4cf10e0883c50cb89c431008e976ffffff8d76000200000024000000897500c74304 *00d21108be00040000c745fc88f10e0883ed04e9c25001009090e8f51108a8f20e080000000058 *f20e080000010000000000110001008d45f03b4354730abef0f511088b43fcffe0c745f848fb11 *08c745f4c4d11108c745fcc4f30e0883ed0cb814f10e08ebdf8d7600e9c7ffffff8d7600020000 *002400000083c7103b7b5c760cc7436c040000008b43f8ffe0c747f4ecf30e088b45048947f88b *45088947fc8b460489078d77f483c50cb8d46d1008ebd98d760002000000240000008b55088b46 *0489450889d6c74500b8f20e08ff2603000000120000008d45ec3b435473058b43f8ffe08d45f8 *c700d46d10088970048b460c8945f08b46088945f48b7604c745ecfcf20e0883ed148b06ebd589 *f6020000002400000083c7103b7b5c7615c7436c04000000c74320fe000000b8b03d1008ffe0c7 *47f418f30e088b45088947f88b45048947fc89378d77f483c50c8b4500ebde8d76000100000024 *000000897500be54fb1108c745fc58f30e0883ed04e9e54f01009058f20e080000000024000100 *c745f84cfb1108c745f450fb1108897500c745fca0f30e0883ed0ce930fdffff03000000010000 *00ff6500900300000009000000ff6500907265616c6c6f630000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e81d0a01008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0fcf30e0883ed10 *b84cce0b08ebbf900400020000000000110000008b7500c745009cf40e08ff2600000000240000 *00be0cd2110883c504ff65009000000000240000008b7604c7450088f40e08e985620100906669 *6c6c52656164427566666572009000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8650901008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f0acf40e0883ed10b84cce0b08ebbf90040002 *000000000011000000be0cd2110883c504ff65009068616e646c65206973206e6f74206f70656e *20666f722077726974696e67009000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8c90801008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f038f50e0883ed10b84cce0b08ebbf90e0f50e *080000000000000000000001000000000011000000be94fb1108e9e23f010089f6e9efffffff90 *909068616e646c6520697320636c6f736564008d760000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8250801008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0e8f50e0883ed10b84cce *0b08ebbf90616c726561647920657869737473009000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8b10701008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f060f60e0883ed10b84cce0b *08ebbf90646f6573206e6f74206578697374009000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e83d0701008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0d4f60e0883ed10b84cce0b08 *ebbf907265736f7572636520627573790089f600000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c90601008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f048f70e0883ed10b84cce0b08eb *bf907265736f7572636520657868617573746564009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8510601008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0bcf70e0883ed10b84cce *0b08ebbf90656e64206f662066696c650000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e10501008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f034f80e0883ed10b84cce0b08ebbf90 *696c6c6567616c206f7065726174696f6e0089f600000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8690501008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0a4f80e0883ed10b84cce0b08 *ebbf907065726d697373696f6e2064656e6965640089f600000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8f10401008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f01cf90e0883ed10b84c *ce0b08ebbf9075736572206572726f72009000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8810401008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f094f90e0883ed10b84cce0b08ebbf *90756e7361746973696669656420636f6e73747261696e7473008d760000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e80104 *01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f004fa0e *0883ed10b84cce0b08ebbf9073797374656d206572726f72008d760000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e88d0301 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f084fa0e08 *83ed10b84cce0b08ebbf9070726f746f636f6c206572726f72009000000200180000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e819030100 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0f8fa0e0883 *ed10b84cce0b08ebbf906661696c6564009000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8ad0201008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f06cfb0e0883ed10b84cce0b08ebbf *90696e76616c696420617267756d656e74008d760000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8350201008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0d8fb0e0883ed10b84cce0b *08ebbf90696e617070726f7072696174652074797065009000000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8bd0101008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f050fc0e0883ed10b8 *4cce0b08ebbf906861726477617265206661756c74009000000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8490101008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c8fc0e0883ed10b84c *ce0b08ebbf90756e737570706f72746564206f7065726174696f6e0089f600000200180000008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cd *0001008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f03cfd *0e0883ed10b84cce0b08ebbf9074696d656f75740000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8610001008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0b8fd0e0883ed10b84cce0b *08ebbf907265736f757263652076616e69736865640089f600000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e9ff00008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f024fe0e0883ed10b8 *4cce0b08ebbf90696e7465727275707465640000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e879ff00008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f09cfe0e0883ed10b84cce0b08eb *bf90756e6b6e6f776e20494f206572726f72008d760000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e801ff00008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f00cff0e0883ed10b84cce *0b08ebbf9003000100000000001100000083c7203b7b5c7611c7436c08000000bef0f711088b43 *fcffe0c747e4ecff0e088b45008947e8c747f084ed0b088b45008947f4c747f87cdc0b088d47f0 *8947fc8d47e489078d77f883c5048b45008b40ecebc49000000200140000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46043dffffff7f750fbe00d2110883ed08a1c46d10 *08ebd9408945f483ed0cb890ff0e08ebcb496e7433320089f600000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8edfd00008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f02c000f0883ed10 *b84cce0b08ebbf900b000200000000001100000083c7183b7b5c7611c7436c06000000be04f811 *088b43fcffe0c747ecf4000f088b45008947f0c747f87cdc0b088d47ec8947fc8b450489078d77 *f883c5088b45008b40ecebd189f601000100130000008d45f43b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46048945f483ed0cb8fcfa0d08ebe29090900b0002000000000011000000 *83c7183b7b5c7611c7436c06000000be10f811088b43fcffe0c747ec7c010f088b45008947f0c7 *47f87cdc0b088d47ec8947fc8b450489078d77f883c5088b45008b40ecebd189f6010001001300 *00008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8fcfa *0d08ebe29090900b000200000000001100000083c7183b7b5c7611c7436c06000000be14f81108 *8b43fcffe0c747ec04020f088b45008947f0c747f87cdc0b088d47ec8947fc8b450489078d77f8 *83c5088b45008b40ecebd189f601000100130000008d45f43b435473058b43f8ffe08d45f8c700 *d46d10088970048b46048945f483ed0cb8fcfa0d08ebe29090903a20656d707479206c69737400 *8d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8e1fb00008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f030020f0883ed10b84cce0b08ebbf905072656c7564652e282121293a20 *6e6567617469766520696e6465780a0089f600000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e85dfb00008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0a4020f0883ed10b84cce0b08ebbf *9054d21108a0fb110828030f0800000200180003008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8edfa00008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f4a0fb1108be54d2110883ed10b808121008ebc19090907461696c *008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e881fa00008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f098030f0883ed10b84cce0b08ebbf906c617374008d76000000020018 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e815fa00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c7 *45f004040f0883ed10b84cce0b08ebbf90696e6974008d760000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a9f900008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f070040f0883ed10 *b84cce0b08ebbf906d6178696d756d0000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e83df900008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0dc040f0883ed10b84cce0b08ebbf9098 *f81108c0fb110848050f080b00020000000000110003008d45f43b4354730abe98f811088b43fc *ffe08b45048945f8c745f490e41108c745fc18080f0883ed0cb8b8ff0d08ebe083c7083b7b5c76 *0cc7436c020000008b43f8ffe08b450499f77e04c747fcb8050c0889078d77fc83c5088b45008b *40f0ebe089f648050f08420000002400010083c70c3b7b5c7615c7436c03000000c74320ff0000 *01b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378b450889450c8d47f889450883c508b8 *60050f08ebd989f68975008b7504c745fcd0050f0883ed04e95b3f01008d760014060f0890050f *0848050f08210000002500010048050f08010000002400010083c70c3b7b5c7615c7436c030000 *00c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d47f889450483c504 *b860050f08ebdf8b46043d000000807513be00000080c745004c060f08b884451008ffe08b7504 *894504c7450040060f088b06ebed89f6000000002400000083c70c3b7b5c7615c7436c03000000 *c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d77f883c5088b45008b *40ecebe189f642000000240000008b450089430c8973088b45088943048b750cc7450cc0060f08 *83c50ce94f4301008d76008b7604c7450004070f08e94d3e010090000000002400000083c70c3b *7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89 *378d77f883c5088b45008b40ecebe189f68b460489430c8b46088943088b45048943048b7508c7 *450840070f0883c508e9d44201007c070f0828070f080000000042000000250000008b46048945 *008b55048b460889450489d6c745fcb4070f0883ed04ff268d7600b4070f0888060f0848050f08 *01000000250001008b7504c74504e8070f0883c504ff2690bec0fb110883c50cff2689f6f8070f *08e8070f0848050f0802000000250003000b00020000000000110000008d45fc3b4354730abea0 *f811088b43fcffe08b7500c74500cc090f088b06ebf08b45043b46040f9cc00fb6c08944240883 *c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d7600000000002400000085f60f9f *c00fb6c08944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f08d76008b4504 *8943088b46048943048b7608c7450478080f0883c504e97a47010089f6a0080f0844080f080000 *000021000000250000008b55048b460489450489d6c74500d4080f08ff26000000002400000089 *f0c1e81f8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f089f68b460489 *43088b45048943048b7508c74508f0080f0883c508e90647010089f6000000002400000089f0c1 *e81f8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f089f68b460489430c *8b46088943088b45048943048b7508c745083c090f0883c508e90447010060090f0814090f0800 *00000042000000250000008b46048945008b55048b460889450489d6c745fc98090f0883ed04ff *268d760098090f08d4080f080000000001000000250000000b00020000000000110000008d45fc *3b4354730abea4f811088b43fcffe08b7500c74500840b0f088b06ebf08b45043b46040f9fc00f *b6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d76000000000024 *00000089f0c1e81f8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f089f6 *8b45048943088b46048943048b7608c745042c0a0f0883c504e9ca45010089f6500a0f08f8090f *080000000021000000250000008b55048b460489450489d6c74500840a0f08ff26000000002400 *000085f60f9fc00fb6c08944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f0 *8d76008b46048943088b45048943048b7508c74508a00a0f0883c508e95245010089f600000000 *2400000085f60f9fc00fb6c08944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff *60f08d76008b460489430c8b46088943088b45048943048b7508c74508f00a0f0883c508e94c45 *0100180b0f08c80a0f080000000042000000250000008b46048945008b55048b460889450489d6 *c745fc500b0f0883ed04ff268d7600500b0f08840a0f08000000000100000025000000c8e41108 *840b0f080b00020000000000110001008d45f43b4354730abea8f811088b43fcffe0c745f890e4 *11088b45008945f4c745fc240d0f0883ed0cb824080f08ebe083c504e904290000897500e9fc28 *0000d00b0f08d00b0f0800000000010000002500000083c7083b7b5c760cc7436c020000008b43 *f8ffe08b46043d000000807513bec8e41108c74500ec0b0f0883ef088b06ebe1f7d8c747fcb805 *0c0889078d77fcc74500ec0b0f08b8d00b0f08ebc58d760083c70c3b7b5c760cc7436c03000000 *8b43f8ffe08b5608f7dac747f8ccdc0c088b46048947fc89178d77f8c74500ec0b0f08b8d00b0f *08ebd98d76003c0c0f08ec0b0f08840b0f080100000025000100840b0f0802000000150001008d *45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f08c0c0f *0883ed108b06ebdb83c7183b7b5c760cc7436c060000008b43f8ffe0c747ec980c0f088b450489 *47f08b45088947f4c747f87cdc0b08c747fcd0fb11088d47ec89078d77f883c50c8b45008b40ec *ebcac80c0f08c80b0f08840b0f080200000025000100b0f811085cfb1108b0fb1108c8e4110824 *0d0f080b0002000000000011000f008d45ec3b4354730abeb0f811088b43fcffe08b7500c745fc *d8110f0883ed048b06ebed90000000002400000083c7083b7b5c760ec7436c02000000b8f03710 *08ffe0c747fcb8050c0889378d77fc83c5048b45008b40f0ebe78d76008b46048945048b450889 *4500c74508700d0f08e9c4200000000000002400000083c7083b7b5c760ec7436c02000000b8f0 *371008ffe0c747fcb8050c0889378d77fc83c5048b45008b40f0ebe78d7600300d0f0826050000 *2400010083c70c3b7b5c761cc7436c03000000c74500fc0d0f08c74320ff000000b8b03d1008ff *e08b451885c0752d837d100079228b4510f7d8c747f8ccdc0c088b550c8957fc89078d77f883c5 *1c8b45008b40ecebcf8b7508eb36837d1000753abec8e411083d00000080742485c0791df7d8c7 *47f8b8050c088947fc8d77f883c51c83ef048b45008b40f0eb978b751483c51c83ef0c8b06eb8a *8973088b450c8943048b7504c74518c00d0f0883c51883ef0cb818501008e967ffffff90300d0f *088502000024000100897500837d1400780b8b751483ed04e924ffffff8b451489c6f7deebef8d *76008b46088945008b46048945fc8975f8837d0800751b8b460885c0750cbeb0fb110883c50c8b *06ffe089c685c07914eb0e837e080078058b7500eb078b450089c6f7de83ed0cb8c40e0f08ebda *e40e0f08a00d0f08280d0f0842000000250007008975008b55048b460489450489d6c745fc440f *0f0883ed04ff2689f689750883c508e9d9fdffff90000000002400000083c70c3b7b5c7615c743 *6c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d77f883c5 *088b45008b40ecebe189f6000000002400000083c70c3b7b5c7615c7436c03000000c74320ff00 *0001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d77f883c5088b45008b40ecebe189 *f68b550885d275308b560885d2750cbeb0fb110883c5108b06ffe08b460489430c8953088b4504 *894304be00000000c7450cb80f0f08eb1b8b460489430c8b46088943088b450489430489d6c745 *0c740f0f0883c50cb8dc491008ebbcf40f0f08600f0f08240d0f0843000000250005008b460489 *45fc8b46088945008b450489750489c6c745f864100f0883ed08ff2664100f08440f0f08240d0f *080100000025000f00240d0f080200000024000f008b7504c7450498100f0883c504ff2690240d *0f08420000002400010083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0 *c747f8ccdc0c088b45008947fc89378d47f889450c83c508b8440d0f08ebdf817e040000008075 *13be00000080c74500c0100f08b884451008ffe0b8a4100f08ebf790eb8289f620110f08fc100f *08240d0f080200000025000f00240d0f080200000024000f008b7508c7450038110f08ff26240d *0f08010000002400010083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0 *c747f8ccdc0c088b45008947fc89378d47f889450483c504b8440d0f08ebdf817e040000008075 *16be00000080c745045c110f0883c504b884451008ffe0b844110f08ebf789f6eb8289f6c0110f *0898110f08240d0f080200000025000f000400010000000000110000008b7500c7450024120f08 *ff26be78d6110883c5048b4500ff60e889f6be78d6110883c5048b4500ff60e889f600120f08f0 *110f0800000000000000002500000094e1110824120f080a00020000000000110001008b450485 *c0750fbe94e1110883c504b89c071008ffe08945048b7500c7450050130f088b06ebed90000000 *002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc54dc0b0889378d77fc *83c504b8d46d1008ebe800000200170000008d45ec3b435473058b43f8ffe08d45f8c700d46d10 *088970048b46088945f08b46048945ecc745f468120f0883ed14b88c910d08ebd589f600000000 *2400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc54dc0b0889378d77fc83 *c504b8d46d1008ebe800000200170000008d45ec3b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46088945f08b46048945ecc745f4dc120f0883ed14b8d8910d08ebd589f62100000024 *00000083c7243b7b5c760cc7436c090000008b43f8ffe0c747e09c120f088b46048947e48b4504 *8947e8c747ec10130f088b46048947f08b45048947f4c747f8e4bb0b088d47ec8947fc8d47e089 *078d77f883c5088b4500ebbb905072656c7564652e5e3a206e65676174697665206578706f6e65 *6e74008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e859ea00008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0a8130f0883ed10b84cce0b08ebbf9054d2110828fc11082c140f *0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8e9e900008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f428fc1108be54d2110883ed10b808121008ebc190909098f81108d8fb1108ecf811089c140f08 *1600030000000000110007008d45ec3b4354730abeecf811088b43fcffe08b45048945f8c745f4 *bcf81108c745fc24160f0883ed0cb8b8ff0d08ebe08b4504894500897504e9c2ffffff89f6e814 *0f08e8140f08a4140f080200000025000100c7450834f11108897514c7450c0c150f0883c504e9 *67bcfdff8d76000c150f080c150f08a4140f08c5020000250001008b45148945fc8b45108945f8 *c745003c150f0883ed08e99dc0fdff908b45048945f883ed08eb7d9058150f0858150f089c140f *0802000000250007008b45048945fc8945f8897504c7450078150f0883ed08e961c0fdff907815 *0f0878150f089c140f080200000025000700c745080cfc1108c7450ca8150f0883c504e9a2efff *ff89f6a8150f083c150f089c140f08c5000000250007009c140f0863000000240007008b450089 *45f889750cc745fcd4150f0883ed08e9142300008b45088945fc8b750483ed04ebda89f68b750c *83c510ff2608160f08f8150f089c140f0803000000250007005cf1110824160f08040001000000 *0000110001008d45fc3b4354730abe0cf911088b43fcffe08b7500c74500a4160f088b06ebf000 *0000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8 *cc130e088977fc8b450089078d77f883c5088b4500ebe49024160f0800000000240001008b4604 *8945fcc7450060160f0883ed04e91b23000090909018fc1108bc160f080b000200000000001100 *010083c7483b7b5c7611c7436c12000000be50f911088b43fcffe0c747bc60170f088b45008947 *c08b45048947c4c747c80c5f10088b45048947ccc747d40c5f10088d47c88947d8c747e0d0170f *088d47d48947e4c747ec64190f088b45008947f08d47bc8947f48d47c88947f88d47d48947fc8d *47e089078d77ec83c5088b4500eb9589f6bc160f0802000000150001008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f80c5f10088b46 *048947fc8b46088945f48d47f88945f083ed10b83c3d0f08ebcf900000000024000000c74500bc *f811088b762483ed04e942fa000089f601000100130000008d45f03b435473058b43f8ffe08d45 *f8c700d46d10088970048b7604c745f4b4170f0883ed0c8b06ebe189f601000000240000008b76 *18e9fcf9000002000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46088945f48b7604c745f004180f0883ed108b06ebdb04000000120000008d45ec3b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f814180f08 *8b46088947fc8b460c89078d47f88945f48b46108945f08b760483ed14b814161008ebc7908500 *00002400000083c7143b7b5c760cc7436c050000008b43f8ffe0c747f04c180f088b45088947f4 *8b45048947f88b45148947fc8b451089078d47f08945148b760c83c510b808121008ebcd8d7600 *8b750cc74500a8180f08ff268b750883c50ce90dfd000090fc180f08f0180f0800000000050000 *002500000006000000240000008b45048945008b45188945fc8b7614c745041c190f0883ed08e9 *d2fc000089f606000000240000008b7608c7450024190f08ff260b000200050000000b0000008d *45e43b435473058b43fcffe08b46148945f08b46108945f48b46088945f88b46048945fc8b760c *c745ec4c190f0883ed148b06ebd590900400000001000000ff6500900400000009000000ff6500 *905c534f0000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e869e400008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0b4190f0883ed10b84cce0b08ebbf905c5c00900000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *01e400008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f01c *1a0f0883ed10b84cce0b08ebbf905c44454c008d760000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e895e300008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0841a0f0883ed10b84cce *0b08ebbf905c76009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e82de300008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f0f01a0f0883ed10b84cce0b08ebbf905c74009000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8c5e200008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0581b0f0883ed10b84cce0b08ebbf905c72009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e85de200008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c01b0f0883ed10b84cce *0b08ebbf905c6e009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8f5e100008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f0281c0f0883ed10b84cce0b08ebbf905c66009000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e88de100008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0901c0f0883ed10b84cce0b08ebbf905c62009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e825e100008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0f81c0f0883ed10b84cce *0b08ebbf905c61009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8bde000008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f0601d0f0883ed10b84cce0b08ebbf905c26009000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e855e000008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0c81d0f0883ed10b84cce0b08ebbf900300010000000000110000008b4500c745005c1e0f *08890424e81e7af5ff89c6ff650090000000002400000085f67510befcd1110883c5048b45008b *40f0ffe0be04d2110883c5048b45008b40ecebee0300010000000000110000008d45fc3b435472 *0883c7083b7b5c7611c7436c02000000be34fa11088b43fcffe08b450085c0791389c6c74500e8 *1e0f0883ef08b8e4451008ebe4c747fcb8050c0889078d77fc83c5048b45008b40f0ebcd89f600 *0000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8 *ccdc0c088b45008947fc89378d77f883c5088b45008b40ecebe190907d3a20747269656420746f *2074616b6520607072656427206f66206d696e426f756e640000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d9de00008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0241f0f0883ed10 *b84cce0b08ebbf90456e756d2e707265647b009000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e869de00008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0ac1f0f0883ed10b84cce0b08 *ebbf907d3a20747269656420746f2074616b6520607375636327206f66206d6178426f756e6400 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8e1dd00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f01c200f0883ed10b84cce0b08ebbf90456e756d2e737563637b00900000020018 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e871dd00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c7 *45f0a4200f0883ed10b84cce0b08ebbf9066696c655472756e63617465008d7600000002001800 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8fddc00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745 *f014210f0883ed10b84cce0b08ebbf90a8210f0800000000000000000000010000000000110000 *00be04000000ff6500e9f3ffffff909090d0210f08000000000000000000000100000000001100 *0000be03000000ff6500e9f3ffffff909090f8210f080000000000000000000001000000000011 *000000be00080000ff6500e9f3ffffff90909020220f0800000000000000000000010000000000 *11000000be00010000ff6500e9f3ffffff90909048220f08000000000000000000000100000000 *0011000000be40000000ff6500e9f3ffffff90909004fd1108e4e7110850220f08000002001800 *03008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8c5db00008d47f8894604c706245b10088d55f8c702d46d1008894204bee4e71108c745f400 *230f0883ed0c8b06ebc489f6210000002400000083c7083b7b5c760cc7436c020000008b43f8ff *e08b45040b4604c747fc84ed0b0889078d77fc83c508b8d46d1008ebe250220f08000000002400 *01008b4604894500be04fd1108c745fcc4220f0883ed04ff26900400010000000000110000008d *45fc3b4354730abec8fa11088b43fcffe08b7500c745000cd2110883ed04b808121008ebea9090 *0b00020000000000110000008b75048b4500894504e9a2ee00009090656173795f646973706c61 *793a204e6f446f630000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8a5da00008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f068230f0883ed10b84cce0b08ebbf905f27009000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e83dda00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0e0230f0883ed10b84cce0b08ebbf9094e9110848240f0804000100000000001100010083 *c71c3b7b5c7611c7436c07000000be10fb11088b43fcffe0c747e800250f088b45008947ecc747 *f480250f088d47e88947f8c747fca05e0c088d47f489078d77fc83c5048b45008b40f0ebca8d76 *0004000100010000000c0000008d45fc3b4354720883c7083b7b5c760cc7436c020000008b43fc *ffe0c747fc94b90b088b450089078d47fc8945008b760483ed04b808121008ebdf9048240f0801 *000100130001008d45f03b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c7 *00d46d1008897004c747fcb8240f088b460489078d47fc8945f4c745f010f4110883ed10b8604e *0e08ebcf900100000024000000837e042e750a8b750483c5088b06ffe0be78d6110883c5088b45 *008b40e8ebee04000100010000000c0000008d45fc3b435473058b43fcffe08b55008b46048945 *0089d6c745fc54250f0883ed048b06ebe590900400010000000000110000008d45fc3b4354730a *be18fb11088b43fcffe08b7500c74500e0d0110883ed04b808121008ebea909094e91108c8e411 *0868d61108dc250f080400010000000000110007008d45fc3b4354720883c72c3b7b5c7611c743 *6c0b000000be1cfb11088b43fcffe0c747d89c2a0f088b45008947dcc747e4682b0f088d47d889 *47e8c747eca05e0c088d47e48947f0c747f4c42b0f088d47d88947f8c747fca05e0c088d47f489 *078d47ec8945008d47fc8945fc83ed04b838510c08eba8900000000024000000837e042d750fbe *04d2110883c504a1c06d1008ffe0befcd1110883c504a1c46d1008ebef01000100130000008d45 *f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f478260f0883ed0c8b06eb *e189f6c74500a4e91108c745fc3cfd110883ed04e91226ffff89f683c7083b7b5c760cc7436c02 *0000008b43f8ffe08b46043d00000080750fbec8e4110883c50483ef088b06ebe5f7d8c747fcb8 *050c0889078d77fc83c504a1c46d1008ebcd8d760083c70c3b7b5c760cc7436c030000008b43f8 *ffe08b5608f7dac747f8ccdc0c088b46048947fc89178d77f883c504a1c06d1008ebdd8d760030 *270f08e8260f08e0250f0800000000250001008b4504894500c745fca4e91108c745f83cfd1108 *c745047c270f0883ed08e95925ffff907c270f08d0260f08e0250f080100000025000100e0250f *0802000000150001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f48b7604c745f0b4270f0883ed108b06ebdbe0250f0804000100020000000e0001008d45fc3b43 *54720883c7143b7b5c760cc7436c050000008b43fcffe0c747f0c0270f088b46048947f48b4500 *8947f8c747fc94b90b088d47f089078d47fc8945008b760883ed04b808121008ebcc89f6dc250f *0804000100010000000c0003008d45fc3b4354720883c7183b7b5c760cc7436c060000008b43fc *ffe0c747eca4260f088b45008947f0c747f800280f088d47ec8947fc8b460489078d47f8894500 *c745fc10f4110883ed04b8604e0e08ebc889f601000100130000008d45ec3b435473058b43f8ff *e08d45f8c700d46d10088970048b46048945f4c745f0a4e91108c745ec3cfd110883ed14b8f84c *0e08ebd49004000100010000000c0000008d45fc3b4354720883c7143b7b5c760cc7436c050000 *008b43fcffe0c747f0bc280f088b45008947f4c747fc94b90b088d47f089078d47fc8945008b76 *0483ed04b808121008ebd2dc250f0801000100130001008d45f03b4354720883c7083b7b5c760c *c7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc00290f088b460489078d47fc *8945f4c745f010f4110883ed10b8604e0e08ebcf900100000024000000837e042b75128b450489 *750489c683c504b860280f08ffe0be78d6110883c5088b45008b40e8ebee04000100010000000c *0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fca8290f0883ed048b06 *ebe589f60100000024000000837e042d75128b450489750489c683c504b860280f08ffe0be78d6 *110883c5088b45008b40e8ebee04000100010000000c0000008d45fc3b435473058b43fcffe08b *55008b460489450089d6c745fc0c2a0f0883ed048b06ebe589f6897500e9c826fdff682a0f0868 *2a0f08682a0f08682a0f08682a0f08e4250f080100000025000100dc250f080100010013000700 *8d45e83b4354720883c7343b7b5c760cc7436c0d0000008b43f8ffe08d45f8c700d46d10088970 *04c747d060280f088b46048947d4c747d854290f088b46048947dcc747e4dc290f088d47d08947 *e8c747eca05e0c088d47e48947f0c747f4402a0f088d47d08947f8c747fca05e0c088d47f48907 *8d47ec8945ec8d47fc8945e88d47d88945f4c745f0902a0f0883ed18b838510c08eb8201000000 *24000000837e0445750a8b750483c5088b06ffe0be78d6110883c5088b45008b40e8ebee040001 *00010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc3c2b0f *0883ed048b06ebe589f60100000024000000837e0465750a8b750483c5088b06ffe0be78d61108 *83c5088b45008b40e8ebee04000100010000000c0000008d45fc3b435473058b43fcffe08b5500 *8b460489450089d6c745fc982b0f0883ed048b06ebe590900400010000000000110000008d45fc *3b4354730abe24fb11088b43fcffe08b7500c74500e0d0110883ed04b808121008ebea9090a4e8 *110844fd11085cfd1108202c0f0800000200180007008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8f1d100008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f46cfd1108c745f054fd110883ed10b8dc330e08ebbf90040001 *0000000000110000008d45fc3b4354730abe48fb11088b43fcffe08b45008945fcc74500d42c0f *0883ed04b8c4490f08ebe78d7600000000002400000083c7083b7b5c760ec7436c02000000b8f0 *371008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea9090040001000000000011000000 *8b7500c74500202d0f08ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8ff *e08b4e08b84dc5f4b2f7e98954240c8d040ac1f8148944240889c8998b44240829d069c067e316 *0029c1894c24148b4e04b84dc5f4b2f7e98d040ac1f8148944240889c8998b44240829d069c067 *e3160029c18b5424148d0c0ab84dc5f4b2f7e98954240c8d040ac1f8148944240889c8998b4424 *0829d069c067e3160029c1c747fc84ed0b08890f8d77fc83c5048b4500e968ffffff90900b0002 *0000000000110000008d45fc3b4354730abe50fb11088b43fcffe08b7500c74500482e0f088b06 *ebf062000000240000008b45083b4604752b8b45043b46080f94c00fb6c08944240883c50c8b34 *852cdc0b088b542408c1e2028b450029d08b40f0ffe0befcd1110883c50c8b4500ebee01000000 *240000008b46088945008b55048b460489450489d6c745fc002e0f0883ed04ff2690909090fd11 *08682e0f080800020000000000110001008d45fc3b4354730abe5cfb11088b43fcffe0837d0000 *78058b7500eb078b450089c6f7de83ed04b8b82e0f08ebe289f6682e0f08620000002400010083 *7d08007824837d040075158b450889c685c0752fbe90fd110883c50c8b06ffe08b450885c0741c *eb24837d0400750d8b450885c074de89c6f7deeb078b450885c0750883c50c8b4500ebd3f7d889 *430483c50cb8f44f1008ebc49069732061206469726563746f7279009000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8fdce *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0142f0f *0883ed10b84cce0b08ebbf9066696c65206973206c6f636b6564009000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e889ce00 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0882f0f08 *83ed10b84cce0b08ebbf9068616e646c65206973206e6f74206f70656e20666f72207265616469 *6e67009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e805ce00008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f0fc2f0f0883ed10b84cce0b08ebbf905072656c7564652e282121293a *20696e64657820746f6f206c617267650a009000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e881cd00008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f080300f0883ed10b84cce0b08eb *bf9054d21108c0fd110804310f0800000200180003008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e811cd00008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f4c0fd1108be54d2110883ed10b808121008ebc190909054d211 *08d0fd110874310f0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8a1cc00008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f4d0fd1108be54d2110883ed10b808121008ebc1909090d8fb1108e0fd1108 *e4310f080b00020000000000110003008d45f43b4354730abed8fb11088b43fcffe08b45048945 *f8c745f490e41108c745fcc8340f0883ed0cb8b8ff0d08ebe083c7083b7b5c760cc7436c020000 *008b43f8ffe08b450499f77e04c747fcb8050c0889178d77fc83c5088b45008b40f0ebe089f6e4 *310f08420000002400010083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ff *e0c747f8ccdc0c088b45008947fc89378b450889450c8d47f889450883c508b8fc310f08ebd989 *f68975008b7504c745fc6c320f0883ed04e9bf1201008d7600b0320f082c320f08e4310f082100 *000025000100e4310f08010000002400010083c70c3b7b5c7615c7436c03000000c74320ff0000 *01b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d47f889450483c504b8fc310f08ebdf *8b46043d000000807513be00000080c74500e8320f08b884451008ffe08b7504894504c74500dc *320f088b06ebed89f6000000002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0 *c747fcb8050c0889378d77fc83c5048b45008b40f0ebe78d760000000000240000008b45008943 *04c745045c330f0883c504e93b1d01008d760042000000240000008b450089430c8973088b4508 *8943048b750cc7450c94330f0883c50ce9371701008d76008b7604c74500b4330f08e99d110100 *90000000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c7 *47f8ccdc0c088b45008947fc89378d77f883c5088b45008b40ecebe189f68b460489430c8b4608 *8943088b45048943048b7508c74508f0330f0883c508e9bc1601002c340f08d8330f0800000000 *42000000250000008b46048945008b55048b460889450489d6c745fc64340f0883ed04ff268d76 *0064340f0824330f08e4310f0801000000250001008b7504c7450498340f0883c504ff2690bee0 *fd110883c50cff2689f6a8340f0898340f08e4310f0802000000250003000b0002000000000011 *0000008d45f43b4354730abee0fb11088b43fcffe0c745f8f0fd11088b45008945f4c745fcdc36 *0f0883ed0cb824080f08ebe083c7143b7b5c760cc7436c050000008b43f8ffe08b460483c030c7 *47f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450889078d47f889450883c504b8d434 *0f08ebcc89f6020000002400000083c7143b7b5c760ec7436c05000000b8f0371008ffe08d4630 *c747f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450889078d47f889450883c504b8d4 *340f08ebcf8d76008b46048943048b7608c7450054350f08e9331b01008d76009c350f0804350f *0800000000020000002500000001000000240000008975048b7500c74500c8350f08ff2690c745 *00f0fd11088b45048945fcc74504d0350f0883ed04e93c7effff83c7143b7b5c760cc7436c0500 *00008b43f8ffe08b460483c030c747f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b4504 *89078d77f883c5088b45008b40ecebce010000002400000083c7143b7b5c760ec7436c05000000 *b8f0371008ffe08d4630c747f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450489078d *77f883c5088b45008b40ecebd1908b46048943048b7608c7450048360f08e9431a01008d76008c *360f08fc350f080000000001000000250000008b7504c74504b8360f0883c504ff2690b8360f08 *e0350f080000000002000000250000000400010000000000110000008b750083c504ff2654d211 *08ccf81108f0360f0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e825c700008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f4ccf81108be54d2110883ed10b808121008ebc1909090526174696f2e253a *207a65726f2064656e6f6d696e61746f720089f600000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a5c600008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f060370f0883ed10b84cce0b08 *ebbf905cfe1108e0370f080b00020000000000110001008d45f43b4354730abe38fc11088b43fc *ffe08b45048945f8c745f4bcf81108c745fc6c380f0883ed0cb8b8ff0d08ebe000000000240000 *0083c508ff268d76008b45048945008b4508894504c745082c380f08e9b4130000be5cfe110883 *c50cff2689f64c380f0834380f08e0370f0802000000250001006cfe11086c380f080b00020000 *000000110001008d45f43b4354730abe40fc11088b43fcffe08b45048945f8c745f4bcf81108c7 *45fcf8380f0883ed0cb8b8ff0d08ebe000000000240000008b750083c508ff268b45048945008b *4508894504c74508b8380f08e928130000be6cfe110883c50cff2689f6d8380f08c0380f086c38 *0f080200000025000100d8fb1108f8380f080400010000000000110001008d45f83b4354730abe *48fc11088b43fcffe0c745fc0cfc11088b45008945f8c74500c0390f0883ed08b8fc310f08ebe0 *837e04007510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0ebee89 *f6000000002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45 *008b40f0ebeec74308000000008b46048943048b7608c745006c390f08e98c16010090390f083c *390f080000000000000000250000005cf11108c0390f080300010000000000110001008d45f83b *4354720883c7083b7b5c7611c7436c02000000be50fc11088b43fcffe0c747fcb8050c088b4500 *8907c745fca0e411088d47fc8945f8c74500483a0f0883ed08b8f4d50c08ebd490c7450034f111 *088975fc83ed04e92e82ffff89f6203a0f08203a0f08c0390f08000000002500010094fe110848 *3a0f080400010000000000110001008d45fc3b4354730abe58fc11088b43fcffe08b45008945fc *c74500903a0f0883ed04b890560f08ebe78d7600000000002400000083c70c3b7b5c7615c7436c *03000000c74320fe000001b8b03d1008ffe0c747f8cc130e088977fc8b450089078d77f883c508 *8b4500ebe4909cfe1108c83a0f080b00020000000000110001008d45fc3b4354730abe60fc1108 *8b43fcffe08b45008945fc8b4504894500c74504143b0f0883ed04b8b4580f08ebe19000000000 *2400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e *088977fc8b450089078d77f883c5088b4500ebe4900400010000000000110000008b750083c504 *ff2694e11108603b0f080b00020000000000110001008d45f43b4354730abe98fc11088b43fcff *e08b45048945f8c745f4bcf81108c745fcd03b0f0883ed0cb8b8ff0d08ebe083c504e9a0130000 *be94e1110883c508e9e3cb00008d7600ac3b0f08a43b0f08603b0f08020000002500010094e111 *08d03b0f080b00020000000000110001008d45f43b4354730abea0fc11088b43fcffe08b450489 *45f8c745f4bcf81108c745fc403c0f0883ed0cb8b8ff0d08ebe083c504e9b4120000be94e11108 *83c508e973cb00008d76001c3c0f08143c0f08d03b0f08020000002500010094e1110898f81108 *403c0f080b00020000000000110003008d45f43b4354730abea8fc11088b43fcffe08b45048945 *f8c745f4bcf81108c745fcb43c0f0883ed0cb8b8ff0d08ebe083c504e9d0c8ffffbe94e1110883 *c508e9ffca00008d7600903c0f08883c0f08403c0f08020000002500030094e11108d8fb1108b4 *3c0f080b00020000000000110003008d45f43b4354730abeb0fc11088b43fcffe08b45048945f8 *c745f4bcf81108c745fc283d0f0883ed0cb8b8ff0d08ebe083c504e9f8f4ffffbe94e1110883c5 *08e98bca00008d7600043d0f08fc3c0f08b43c0f08020000002500030018fc1108283d0f080b00 *0200000000001100010081c7d00000003b7b5c7611c7436c34000000beccfc11088b43fcffe0c7 *8734ffffff0c5f10088b4504898738ffffffc78740ffffff985f10088d8734ffffff898744ffff *ffc7874cffffffc03e0f088b4500898750ffffffc78758ffffff0c5f10088d8734ffffff89875c *ffffffc78764ffffff103f0f088d8758ffffff898768ffffffc78770ffffff603f0f08898774ff *ffffc7877cffffff943f0f088b4504894780c747880c5f10088b450489478cc747940c5f10088d *4788894798c747a0e43f0f088d47948947a4c747ac34400f088947b0c747b884400f088947bcc7 *47c470430f088b45048947c88b45008947cc8d877cffffff8947d08d47888947d48d47948947d8 *8d47a08947dc8d47ac8947e08d47b88947e4c747e818450f088d8740ffffff8947ec8d874cffff *ff8947f08d8758ffffff8947f48d8764ffffff8947f88d8770ffffff8947fc8d47c489078d77e8 *83c5088b4500e9bafeffff0000000024000000c7450034f111088b762483ed04e952d3000089f6 *01000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f4 *a43e0f0883ed0c8b06ebe189f60000000024000000c74500bcf811088b762483ed04e902d30000 *89f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c7 *45f4f43e0f0883ed0c8b06ebe189f60000000024000000c7450034f111088b762483ed04e9b2d2 *000089f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b76 *04c745f4443f0f0883ed0c8b06ebe189f601000100130000008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb8c05b0f08ebe28d76000000000024000000c7 *4500bcf811088b762483ed04e92ed2000089f601000100130000008d45f03b435473058b43f8ff *e08d45f8c700d46d10088970048b7604c745f4c83f0f0883ed0c8b06ebe189f600000000240000 *00c7450034f111088b762483ed04e9ded1000089f601000100130000008d45f03b435473058b43 *f8ffe08d45f8c700d46d10088970048b7604c745f418400f0883ed0c8b06ebe189f60000000024 *000000c745000cfc11088b762483ed04e98ed1000089f601000100130000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d10088970048b7604c745f468400f0883ed0c8b06ebe189f6020000 *00240000008b7610e954d5000003000000120000008d45ec3b435473058b43f8ffe08d45f8c700 *d46d10088970048b460c8945f08b46088945f48b7604c745ecb8400f0883ed148b06ebd589f602 *000000240000008b760ce904d5000003000000120000008d45ec3b435473058b43f8ffe08d45f8 *c700d46d10088970048b460c8945f08b46088945f48b7604c745ec08410f0883ed148b06ebd589 *f683c7203b7b5c760cc7436c080000008b43f8ffe0c747e4c8400f088b45248947e88b45348947 *ec8b45308947f0c747f418410f088b451c8947f88b45148947fc8b450489078d47e48945348b45 *3089452c8d47f48945308b750c83c52cb870430f08ebae02000000240000008b7618e950d40000 *03000000120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f0 *8b46088945f48b7604c745ecbc410f0883ed148b06ebd589f601000000240000008b4504894500 *8b761083ed04e9f7d300008d760002000000150000008d45ec3b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46088945f48b7604c745f00c420f0883ed108b06ebdb83c71c3b7b5c760c *c7436c070000008b43f8ffe0c747e8cc410f088b45288947ec8b45108947f08b45048947f4c747 *f828420f088b45248947fc8b453089078d47e88945048d77f883c504b8c8420f08ebc089f65842 *0f0850410f08000000004d840000250000000b610000240000008b45008945f889752c8b751cc7 *45fcc0420f0883ed0ce925cf0000908b45288945fc8b752483ed04ebd689f68b752c83c52ce99d *c4000090f4420f08e4420f08000000000b010000250000000b000000240000008b45288945fc8b *45108945f88b7608c7450014430f0883ed0ce9dad2000089f60b000000240000008b7604c74500 *1c430f08ff260b000000240000008b7608c7450044430f08ff2616000300080000000b0000008d *45cc3b435473058b43fcffe08975e08b46208945e48b461c8945e88b46188945ec8b46148945f0 *8b460c8945f48b46088945f88b46048945fc8b7610c745dc58430f0883ed248b06ebc090be18fc *110883c51ce9d3c300008d760002000000240000008b760ce938d2000003000000120000008d45 *ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604c7 *45ecd4430f0883ed148b06ebd589f683c7103b7b5c760cc7436c040000008b43f8ffe0c747f4e4 *430f088b45108947f88b45088947fc8b451c89078b451889451c8945148d47f48945188b750483 *c514b870430f08ebca1c440f08bc430f08283d0f0887020000250001008b45108945008b452089 *45fc8b7504c7450478440f0883ed08e97ed1000089f68b751883c520e9f9c200009098440f0878 *440f08283d0f080800000025000100283d0f0808000000240001008b45208945fc8b45108945f8 *8b7608c74500b8440f0883ed0ce932d1000089f6283d0f0807000000240001008b46108945008b *7604c745fcc4440f0883ed04ff268d7600283d0f080b000200060000000b0001008d45d83b4354 *73058b43fcffe08b46188945ec8b46148945f08b46108945f48b460c8945f88b46088945fc8b76 *04c745e8f0440f0883ed188b06ebcf4e554c0000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c9b800008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f054450f0883ed10b84cce0b08eb *bf90756e6b6e6f776e2066696c6520747970650089f600000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e851b800008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0bc450f0883ed10b84cce *0b08ebbf9000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8edb700008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f498460f0883ed0cb8285f0f08ebc6000000002400000083c7083b7b5c7615c7436c02 *000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe8 *90534f480000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e851b700008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0cc460f0883ed10b84cce0b08ebbf9044fd110834470f0804000100 *00000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be54fd11088b43fc *ffe0c747f0a4470f088b45008947f4c747fce0470f088d47f089078d47fc894500c745fc44fd11 *0883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f480f411088b760483ed10b808121008ebde8d76000400010001000000 *0c0000008b760483c504ff26534f009000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e835b600008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0e8470f0883ed10b84cce0b08ebbf905c *fd110850480f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05 *000000be6cfd11088b43fcffe0c747f0c0480f088b45008947f4c747fcfc480f088d47f089078d *47fc894500c745fc5cfd110883ed04b878e00e08ebce8d760001000100130000008d45f03b4354 *73058b43f8ffe08d45f8c700d46d1008897004c745f488f411088b760483ed10b808121008ebde *8d760004000100010000000c0000008b760483c504ff2628ff110804490f080400010000000000 *110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be74fd11088b43fcffe0c747 *f074490f088b45008947f4c747fcb0490f088d47f089078d47fc894500c745fc28ff110883ed04 *b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f478f411088b760483ed10b808121008ebde8d760004000100010000000c000000 *8b760483c504ff260400010000000000110000008d45fc3b4354730abe8cfd11088b43fcffe0c7 *45fc0000000083ed04b860600f08ebed9054d2110854ff1108e8490f0800000200180003008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e82db4 *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f454ff1108be54d2110883 *ed10b808121008ebc1909090000000000a000400ff6500904748432e4e756d2e676364496e7465 *6765723a206763642030203020697320756e646566696e6564008d760000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e891b3 *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0644a0f *0883ed10b84cce0b08ebbf905072656c7564652e496e74656772616c2e71756f747b496e746567 *65727d3a2064697669646520627920300000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e801b300008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f0f44a0f0883ed10b84cce0b08ebbf90 *54d2110864ff1108844b0f0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e891b200008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f464ff1108be54d2110883ed10b808121008ebc19090900b00020000 *000000110000008d45f43b4354730abef8fd11088b43fcffe08b7500c74500c44e0f088b06ebf0 *210000002400000083c7103b7b5c760ec7436c04000000b8f0371008ffe0c747f4b8050c088977 *f8c747fcb8050c088b450489078d47f48945048d77fc83c5048b4504ebd78d7600620000002400 *00008b45048945008b45088945fc897508c74504284c0f0883ed04e9fe44feff89f68b46048945 *f88b45048945f48b4604894500c745fc704c0f0883ed0ce92745feff8d76004200000024000000 *83c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b4500 *8947fc89378b450889450c8d47f889450883c508b8004c0f08ebd989f68975008b7504c745fcbc *4c0f0883ed04e96ff800008d7600004d0f08904c0f080000000021000000250000000100000024 *00000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c08 *8b45008947fc89378d47f889450483c504b8004c0f08ebdf8b46043d000000807513be00000080 *c74500344d0f08b884451008ffe08b7504894504c745002c4d0f088b06ebed89f6010000002400 *000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b *45008947fc89378b45088945048d47f889450883c504b8004c0f08ebd989f68b7604c74508a84d *0f0883c508e986f7000089f6000000002400000083c7183b7b5c7615c7436c06000000c74320ff *000102b8b03d1008ffe0c747ecccdc0c088b45088947f08b45008947f4c747f8ccdc0c088b4504 *8947fc89378d47ec89450c8d77f883c50c8b4504ebcb8b460489430c8b46088943088b45048943 *048b7508c7450c084e0f0883c50ce9b8000100584e0f08ec4d0f08000000004300000025000000 *8b46048945fc8b46088945008b450489750489c6c745f8904e0f0883ed08ff26904e0f08704d0f *080000000001000000250000000b00020000000000110000008d45fc3b4354730abefcfd11088b *43fcffe08b45008945fc8b4504894500c74504084f0f0883ed04b8004c0f08ebe1900000000024 *00000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8e4bb0b08 *8977fc8b450089078d77f883c5088b4500ebe4900b00020000000000110000008d45fc3b435473 *0abe00fe11088b43fcffe08b45008945fc8b4504894500c74504844f0f0883ed04b838b40e08eb *e190000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0 *c747f8e4bb0b088977fc8b450089078d77f883c5088b4500ebe490040001000000000011000000 *8d45fc3b4354730abe04fe11088b43fcffe08b45008945fcc74500a0e4110883ed04b88cd10c08 *ebe79090900400010000000000110000008d45fc3b4354730abe30fe11088b43fcffe08b450089 *45fcc74500a0e4110883ed04b8acd80c08ebe79090900400010000000000110000008d45fc3b43 *54730abe34fe11088b43fcffe08b45008945fcc74500a0e4110883ed04b890660f08ebe7909090 *0b000200000000001100000083c70c3b7b5c7611c7436c03000000be38fe11088b43fcffe0c747 *f8b0500f088b45008947fc8b450489078d47f8894504b890660f08ebdf02000000150000008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b8 *8cd10c08ebdc900b00020000000000110000008d45fc3b4354730abe3cfe11088b43fcffe08b45 *008945fcc74500a0e4110883ed04b860680f08ebe79090901600030000000000110000008d45f4 *3b4354730abe40fe11088b43fcffe08b45008945f88b45048945f4c745fc74510f0883ed0cb88c *d10c08ebe19089750883c504e9011700009054510f0854510f0800000000430000002500000004 *00010000000000110000008b7500c74500d0510f08ff2683c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8cc130e088977fcc70734f111088d77f883c5048b4500ebe3908c510f088c510f *08000000000000000025000000c8e41108d0510f080400010000000000110001008d45fc3b4354 *730abe48fe11088b43fcffe08b45008945fcc7450018520f0883ed04b8046b0f08ebe78d760000 *0000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8 *cc130e088977fc8b450089078d77f883c5088b4500ebe4900400010000000000110000008d45fc *3b4354730abe50fe11088b43fcffe08b45008945fcc7450090520f0883ed04b8246a0f08ebe78d *7600000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0 *c747f8cc130e088977fc8b450089078d77f883c5088b4500ebe490c8e41108c8520f0804000100 *00000000110001008d45fc3b4354730abe54fe11088b43fcffe08b45008945fcc7450010530f08 *83ed04b828690f08ebe78d7600000000002400000083c70c3b7b5c7615c7436c03000000c74320 *fe000001b8b03d1008ffe0c747f8cc130e088977fc8b450089078d77f883c5088b4500ebe49094 *e1110848530f0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8d1aa00008d47f8894604c706245b10088d55f8c702d46d10 *08894204be94e11108c745f4bc530f0883ed10b89c071008ebc18d760000000000240000008b76 *0483c504ff2694e11108c4530f0800000200180001008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e855aa00008d47f8894604c706245b10088d *55f8c702d46d1008894204be94e11108c745f438540f0883ed10b89c071008ebc18d7600000000 *00240000008b760883c504ff265cf1110840540f080b00020000000000110001008d45f43b4354 *730abe7cfe11088b43fcffe08b7500c7450050550f088b06ebf0000000002400000083c70c3b7b *5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e088977fc8b45008907 *8d77f883c5088b4500ebe4908b45048945008975fcc745047c540f0883ed04e99467ffffb4540f *08b4540f0840540f0801000000250001008b45048945008b45088945fc897508c74504e0540f08 *83ed04e9f680fdff89f6e0540f08e0540f0840540f08020000002500010040540f080200000024 *0001008b46088945fc8b45048945f88b4604894504c7450014550f0883ed08e9b380fdff8d7600 *40540f0801000000240001008b46088945008b55048b460489450489d6c745fc20550f0883ed04 *ff269090905cf1110870550f080b00020000000000110001008d45fc3b4354730abe84fe11088b *43fcffe08b45008945fc8b4504894500c74504bc550f0883ed04b804700f08ebe1900000000024 *00000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e08 *8977fc8b450089078d77f883c5088b4500ebe4905cf11108f4550f080b00020000000000110001 *008d45fc3b4354730abe8cfe11088b43fcffe08b45008945fc8b4504894500c7450440560f0883 *ed04b854710f08ebe190000000002400000083c70c3b7b5c7615c7436c03000000c74320fe0000 *01b8b03d1008ffe0c747f8cc130e088977fc8b450089078d77f883c5088b4500ebe490c8e41108 *5cf1110878560f080400010000000000110003008d45ec3b4354730abe94fe11088b43fcffe08b *7500c7450080580f088b06ebf08b450489450c89750883c508e99f65ffff8d7600b0560f08b056 *0f087c560f08c3000000250001008975fc8b450c8945f8c74500d8560f0883ed08e9047ffdffd8 *560f08d8560f087c560f084300000025000100837e0400781d837e04007510be90e41108c74500 *04570f088b06ffe0bea0e41108ebeebe98e41108ebe789f67c560f08430000002400010085f67f *1b85f67510be90e41108c7450004570f088b06ffe0be98e41108ebeebea0e41108ebe789f6c743 *08000000008b46048943048b7608c745003c570f08e9b8f8000064570f0804570f087c560f0843 *000000250001008975008b7504c745fc94570f0883ed04ff2689f694570f0894570f087c560f08 *020000002500010083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d000000807507be *c8e41108eb2085c0791cf7d8c747fcb8050c0889078d77fcc74500bc570f08b894570f08ebcdc7 *4500bc570f0883ef088b06ebbf9083c70c3b7b5c760cc7436c030000008b43f8ffe0837e080079 *258b5608f7dac747f8ccdc0c088b46048947fc89178d77f8c74500bc570f08b894570f08ebd3c7 *4500bc570f0883ef0c8b06ebc58d760010580f08bc570f0878560f08020000002500030078560f *0800000000240003008b46088945008b46048945fc8b7604c745f874580f0883ed08ff2690c8e4 *11085cf111089c580f080b00020000000000110003008d45ec3b4354730abe9cfe11088b43fcff *e08b7500c745002c5b0f088b06ebf08b450489451089750c83c50ce97b63ffff8d7600d4580f08 *d4580f08a0580f08c4010000250001008b45108945fc8975f8c74500fc580f0883ed08e9e07cfd *fffc580f08fc580f08a0580f08c4000000250001008b45108945fc8b450c8945f8897510c74500 *28590f0883ed08e9ae7cfdff89f628590f0828590f08a0580f084400000025000100837e040078 *1d837e04007510be90e41108c745005c590f088b06ffe0bea0e41108ebeebe98e41108ebe789f6 *a0580f08440000002400010085f67f1b85f67510be90e41108c745005c590f088b06ffe0be98e4 *1108ebeebea0e41108ebe789f6c74308000000008b46048943048b7608c7450094590f08e960f6 *0000bc590f085c590f08a0580f0844000000250001008975008b7504c745fcec590f0883ed04ff *2689f6ec590f08ec590f08a0580f08030000002500010083c7083b7b5c760cc7436c020000008b *43f8ffe08b46043d000000807507bec8e41108eb2085c0791cf7d8c747fcb8050c0889078d77fc *c74500145a0f08b8ec590f08ebcdc74500145a0f0883ef088b06ebbf9083c70c3b7b5c760cc743 *6c030000008b43f8ffe0837e080079258b5608f7dac747f8ccdc0c088b46048947fc89178d77f8 *c74500145a0f08b8ec590f08ebd3c74500145a0f0883ef0c8b06ebc58d7600685a0f08145a0f08 *9c580f080300000025000300897500c745fccc5a0f0883ed04ff2690cc5a0f08cc5a0f089c580f *0802000000250003009c580f0802000000240003008b46048945fc8b45088945f88b4608894508 *c74500f05a0f0883ed08e9d77afdff8d76009c580f0801000000240003008b46048945008b5504 *8b460889450489d6c745fcfc5a0f0883ed04ff26909090d8dc1108c4fe11084c5b0f0800000200 *180003008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8c9a200008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4c4fe1108 *83ed0cb824fc0c08ebc604000100000000001100000083c7383b7b5c7611c7436c0e000000bed8 *fe11088b43fcffe0c747cc0c5f10088b45008947d0c747d8605c0f088d47cc8947dcc747e4c45c *0f088947e8c747f0c45d0f088b45008947f48d47cc8947f88d47d88947fc8d47e489078d77f083 *c5048b4500ebb189f60000000024000000c745000cfc11088b762483ed04e9c6b5000089f60000 *0000240000008b7604c74500305c0f08ff2601000100130000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d10088970048b7604c745f44c5c0f0883ed0c8b06ebe189f60000000024000000 *c74500bcf811088b762483ed04e962b5000089f600000000240000008b7604c74500945c0f08ff *2601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745 *f4b05c0f0883ed0c8b06ebe189f602000000240000008b760ce914b9000003000000120000008d *45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604 *c745ecf85c0f0883ed148b06ebd589f6040000002400000083c7103b7b5c760cc7436c04000000 *8b43f8ffe0c747f4085d0f088b450c8947f88b45088947fc8b451089078b45048945108d47f489 *450c8b760883c508b814161008ebcd8d760004000000240000008b7604c74500485d0f08ff2604 *000000240000008b7608c74500985d0f08ff2604000100040000000b0000008d45f03b43547305 *8b43fcffe08b46108945f48b460c8945f88b46048945fc8b7608c745f0ac5d0f0883ed108b06eb *db5cf11108f45d0f080400010000000000110001008d45f83b4354730abedcfe11088b43fcffe0 *c745fca0e411088b45008945f8c74500a85e0f0883ed08b8f4d50c08ebe0000000002400000083 *c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e088977fc8b *450089078d77f883c5088b4500ebe490c745fc34f111088975f8c74500405e0f0883ed08e9cf5d *ffff8d7600785e0f08785e0f08f45d0f080000000025000100534f480000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8759f *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0a85e0f *0883ed10b84cce0b08ebbf90305f0f080000000000000000000001000000000011000000be0002 *0000ff6500e9f3ffffff9090904e554c0000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e59e00008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f0385f0f0883ed10b84cce0b08ebbf90 *18001208a05f0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c *05000000be38ff11088b43fcffe0c747f010600f088b45008947f4c747fc4c600f088d47f08907 *8d47fc894500c745fc1800120883ed04b878e00e08ebce8d760001000100130000008d45f03b43 *5473058b43f8ffe08d45f8c700d46d1008897004c745f490f411088b760483ed10b808121008eb *de8d760004000100010000000c0000008b760483c504ff260900020000000000110000008d45fc *3b4354730abe50ff11088b43fcffe08b7504c745fcf8600f0883ed048b06ebed908b750483c50c *ff65008d760022000000240000008b4d04c1e107b84dc5f4b2f7e98d040ac1f8148944240889c8 *998b44240829d069c067e3160029c189c803460489450483c504e990ffffff8b46088945088b76 *04c7450098600f08ff2689f6d0600f0884600f080000000062000000250000004748432e426173 *652e676364496e743a206763642030203020697320756e646566696e65640089f6000002001800 *00008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8019d00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4f8600f0883ed *0cb864d60b08ebc65072656c7564652e496e74656772616c2e72656d7b496e74656765727d3a20 *6469766964652062792030009000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8799c00008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f07c610f0883ed10b84cce0b08ebbf900b000200 *00000000110000008d45fc3b4354730abe74ff11088b43fcffe08b7500c74500c4630f088b06eb *f08b45043b46040f9ec00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0 *ff60f08d7600000000002400000089f0f7d0c1e81f8944240883c5048b34852cdc0b088b542408 *c1e2028b450029d0ff60f08b45048943088b46048943048b7608c745046c620f0883c504e98aed *000089f690620f0838620f080000000021000000250000008b55048b460489450489d6c74500c4 *620f08ff26000000002400000085f60f9ec00fb6c08944240883c5048b34852cdc0b088b542408 *c1e2028b450029d0ff60f08d76008b46048943088b45048943048b7508c74508e0620f0883c508 *e912ed000089f6000000002400000085f60f9ec00fb6c08944240883c5048b34852cdc0b088b54 *2408c1e2028b450029d0ff60f08d76008b460489430c8b46088943088b45048943048b7508c745 *0830630f0883c508e90ced000058630f0808630f080000000042000000250000008b4604894500 *8b55048b460889450489d6c745fc90630f0883ed04ff268d760090630f08c4620f080000000001 *000000250000000b00020000000000110000008d45f43b4354730abe78ff11088b43fcffe08b45 *048945f88b45008945f4c745fc24640f0883ed0cb818620f08ebe1908b750483c50cff268b7508 *83c50cff2608640f0800640f080000000002000000250000000b00020000000000110000008d45 *f43b4354730abe7cff11088b43fcffe08b45048945f88b45008945f4c745fc84640f0883ed0cb8 *18620f08ebe1908b750883c50cff268b750483c50cff2668640f0860640f080000000002000000 *250000000b00020000000000110000008d45fc3b4354730abe80ff11088b43fcffe08b7500c745 *0084660f088b06ebf08b45043b460474253b46047e10be1cd2110883c5088b45008b40e8ffe0be *14d2110883c5088b45008b40f0ebeebe18d2110883c5088b45008b40ecebde8d76000000000024 *00000085f67f2485f67810be18d2110883c5048b45008b40ecffe0be1cd2110883c5048b45008b *40e8ebeebe14d2110883c5048b45008b40f0ebde8b45048943088b46048943048b7608c74504f8 *640f0883c504e9eaea000089f630650f08b0640f080000000021000000250000008b55048b4604 *89450489d6c7450064650f08ff26000000002400000085f6782485f67f10be18d2110883c5048b *45008b40ecffe0be1cd2110883c5048b45008b40e8ebeebe14d2110883c5048b45008b40f0ebde *8b46048943088b45048943048b7508c7450880650f0883c508e962ea000089f600000000240000 *0085f6782485f67f10be18d2110883c5048b45008b40ecffe0be1cd2110883c5048b45008b40e8 *ebeebe14d2110883c5048b45008b40f0ebde8b460489430c8b46088943088b45048943048b7508 *c74508e0650f0883c508e94cea000018660f08b8650f080000000042000000250000008b460489 *45008b55048b460889450489d6c745fc50660f0883ed04ff268d760050660f0864650f08000000 *0001000000250000000b000200000000001100000083c7183b7b5c7611c7436c06000000be84ff *11088b43fcffe0c747ec1c670f088b45008947f08b45048947f4c747f87cdc0b088b45008947fc *8d47ec89078d77f883c5088b45008b40ecebcb02000000150000008d45f03b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b8acd80c08ebdc90020000 *00150000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d4 *6d1008897004c747f8e4660f088b46048947fc8b460889078b46088945f48d47f88945f083ed10 *b890660f08ebca16000300000000001100000083c7103b7b5c7611c7436c04000000be88ff1108 *8b43fcffe0c747f4fc670f088b45048947f88b45008947fc8b450889078d47f48945088b7500b8 *14161008ebd68d760002000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46088945f48b46048945f083ed10b8acd80c08ebdc9003000000120000008d45ec3b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8c4 *670f088b46048947fc8b460c89078b460c8945f48d47f88945f08b46088945ec83ed14b878670f *08ebc490901600030000000000110000008d45f43b4354730abe8cff11088b43fcffe0c745f890 *e411088b45048945f4c745fcb4680f0883ed0cb814b70e08ebe083c504e9c410000083c504e954 *0f000098680f0890680f080000000003000000250000001800050000000000110000008d45f43b *4354730abe90ff11088b43fcffe0c745f890e411088b450c8945f4c745fc14690f0883ed0cb814 *b70e08ebe083c504e9880d000083c504e90c0c0000f8680f08f0680f0800000000050000002500 *0000c8e4110814690f080400010000000000110001008d45fc3b4354730abe94ff11088b43fcff *e08b7500c74500006a0f088b06ebf083c504ff650489f648690f0848690f080000000001000000 *2500000083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d000000807513bec8e41108 *c7450064690f0883ef088b06ebe1f7d8c747fcb8050c0889078d77fc83c5048b4504ebcb9083c7 *0c3b7b5c760cc7436c030000008b43f8ffe08b5608f7dac747f8ccdc0c088b46048947fc89178d *77f883c5048b4504ebdf90ac690f0864690f0814690f08010000002500010014690f0800000000 *240001008b46088945008b7604c745fcf4690f0883ed04ff269090900400010000000000110000 *008b7500c74500e46a0f08ff26837e04007825837e04007511c7450034f11108bebcf811088b45 *04ffe0c7450034f11108be34f11108ebedc7450034f11108be50001208ebdf8d76000000000024 *00000085f67f2385f67511c7450034f11108bebcf811088b4504ffe0c7450034f11108be500012 *08ebedc7450034f11108be34f11108ebdf8d7600c74308000000008b46048943048b7608c74500 *746a0f08e970e50000ac6a0f08306a0f0800000000000000002500000000000000240000008b76 *04c74500dc6a0f08ff26c8e41108f06a0f080400010000000000110001008d45fc3b4354730abe *a0ff11088b43fcffe08b7500c74500f86b0f088b06ebf083c504ff650489f6246b0f08246b0f08 *00000000010000002500000083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d000000 *807513bec8e41108c74500406b0f0883ef088b06ebe185c07913f7d8c747fcb8050c0889078d77 *fc83c504eb0683c50483ef088b4504ebbf9083c70c3b7b5c760cc7436c030000008b43f8ffe083 *7e0800791c8b5608f7dac747f8ccdc0c088b46048947fc89178d77f883c504eb0683c50483ef0c *8b4504ebd18d7600946b0f08406b0f08f06a0f080100000025000100f06a0f0800000000240001 *008b46088945008b7604c745fcec6b0f0883ed04ff269090900b00020000000000110000008d45 *f43b4354730abea8ff11088b43fcffe08b7500c74500606f0f088b06ebf08b45043b46040f94c0 *0fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760000000000 *2400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0eb *ee8b45048943088b46048943048b7608c74504706c0f0883c504e986e3000089f6946c0f083c6c *0f080000000021000000250000008b460489450c8b7504c74508c86c0f0883c508ff268d760000 *0000002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b *40f0ebee8b46048943088b45048943048b7508c74508e86c0f0883c508e90ee3000089f6000000 *002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0 *ebee8b460489430c8b46088943088b45048943048b7508c74508346d0f0883c508e90ce3000058 *6d0f080c6d0f080000000042000000250000008b46048945088b460889450c8b7504c74504906d *0f0883c504ff2690906d0f08c86c0f0800000000c30000002500000043000000240000008b750c *c74500c06d0f08ff268b45083b46047507b8c86d0f08ffe0befcd1110883c5108b45008b40f0eb *ee90430000002400000085f67507b8c86d0f08ffe0befcd1110883c5108b45008b40f0ebee908b *45088943088b46048943048b7608c74500fc6d0f08e905e2000090186e0f08d46d0f0800000000 *43000000250000008b55088b460489450889d6c74500486e0f08ff26430000002400000085f675 *07b8c86d0f08ffe0befcd1110883c5108b45008b40f0ebee908b46048943088b45048943048b75 *0cc74504646e0f0883c504e99ae1000089f6430000002400000085f67507b8c86d0f08ffe0befc *d1110883c5108b45008b40f0ebee908b460489430c8b46088943088b45048943048b750cc74504 *a86e0f0883c504e9a0e10000c46e0f08806e0f080000000084000000250000008b46048945008b *55088b460889450889d6c745fcfc6e0f0883ed04ff268d7600fc6e0f08486e0f08000000000300 *00002500000002000000240000008b46088945008b55048b460489450489d6c745fc306f0f0883 *ed04ff268d760001000000240000008b46048945008b55048b460889450489d6c745fc386f0f08 *83ed04ff269090900b00020000000000110000008d45fc3b4354730abeacff11088b43fcffe08b *45008945fc8b4504894500c74504f06f0f0883ed04b81c6c0f08ebe190be04d2110883c5048b45 *00ff60ec89f6befcd1110883c5048b4500ff60f089f6cc6f0f08bc6f0f08000000000000000025 *0000005cf11108f06f0f080b00020000000000110001008d45ec3b4354730abeb0ff11088b43fc *ffe08b7500c7450020710f088b06ebf08b450489450889750483c504e92b4cffff8d760024700f *0824700f08f06f0f0842000000250001008b45088945fc8975f8c745004c700f0883ed08e94868 *fdff4c700f084c700f08f06f0f0802000000250001008b45048945008b450c8945fc89750cc745 *0478700f0883ed04e95e65fdff89f678700f0878700f08f06f0f0803000000250001008b450c89 *45008b45048945fc89750cc74504ac700f0883ed04e92a65fdff89f6ac700f08ac700f08f06f0f *080400000025000100f06f0f0802000000240001008b46088945f48b45048945f08b46048945fc *8b4608894500c745f8e0700f0883ed10e9e164fdff90f06f0f0801000000240001008b46088945 *008b55048b460489450489d6c745fcec700f0883ed04ff269090905cf1110840710f080b000200 *00000000110001008d45ec3b4354730abeb8ff11088b43fcffe08b7500c7450070720f088b06eb *f08b450489450889750483c504e9db4affff8d760074710f0874710f0840710f08420000002500 *01008b45088945fc8975f8c745009c710f0883ed08e9d85ffdff9c710f089c710f0840710f0802 *000000250001008b45048945008b450c8945fc89750cc74504c8710f0883ed04e90e64fdff89f6 *c8710f08c8710f0840710f0803000000250001008b450c8945008b45048945fc89750cc74504fc *710f0883ed04e9da63fdff89f6fc710f08fc710f0840710f08040000002500010040710f080200 *0000240001008b46088945f48b45048945f08b46048945fc8b4608894500c745f830720f0883ed *10e99163fdff9040710f0801000000240001008b46088945008b55048b460489450489d6c745fc *3c720f0883ed04ff269090905800120890720f080b00020000000000110001008b7500c74500bc *720f08ff2690720f0801000000240001008b4604894500e9090800009058001208c8720f080400 *010000000000110001008d45f43b4354730abec8ff11088b43fcffe0c745fc081210088b450089 *45f8c7450000d21108c745f40000000083ed0cb8d07a0f08ebd990535458000000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *098b00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f014 *730f0883ed10b84cce0b08ebbf903c2d009000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a18a00008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f07c730f0883ed10b84cce0b08ebbf *905354580000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8398a00008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0e4730f0883ed10b84cce0b08ebbf90a00012084c740f0804000100 *00000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be280012088b43fc *ffe0c747f0bc740f088b45008947f4c747fcf8740f088d47f089078d47fc894500c745fca00012 *0883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f498f411088b760483ed10b808121008ebde8d76000400010001000000 *0c0000008b760483c504ff2618000500000000001100000083c7143b7b5c7611c7436c05000000 *be400012088b43fcffe0c747f034760f088b45108947f48b45048947f88b450c8947fc8b450089 *078b45088945108d77f083c510b834760f08ebcd89f68b450489750489c683c504e9cc00000058 *750f0858750f0800000000010000002500000003000000120000008d45e83b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945ec8b46048945e88b460c8945f4c745f07c750f0883 *ed18b8acd80c08ebcf83c7103b7b5c760cc7436c040000008b43f8ffe0c747f484750f088b4514 *8947f88b450c8947fc8b450889078b45148945108d47f48945148b750483c50cb814161008ebcd *8d76008b751083c514e9899100009008760f08c0750f0800000000050000002500000004000100 *040000000b0000008d45e43b435473058b43fcffe08b46048945e88b45008945e48b46108945f0 *8975f48b460c8945f88b46088945fcc745ec28760f0883ed1cb8d8090f08ebcc90180005000000 *00001100000083c7143b7b5c7611c7436c05000000be440012088b43fcffe0c747f0a8770f088b *45108947f48b45048947f88b450c8947fc8b450089078b45088945108d77f083c510b8a8770f08 *ebcd89f68b450489750489c683c504e9cc000000cc760f08cc760f080000000001000000250000 *0003000000120000008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *ec8b46048945e88b460c8945f4c745f0f0760f0883ed18b8acd80c08ebcf83c7103b7b5c760cc7 *436c040000008b43f8ffe0c747f4f8760f088b45148947f88b450c8947fc8b450889078b451489 *45108d47f48945148b750483c50cb814161008ebcd8d76008b751083c514e915900000907c770f *0834770f0800000000050000002500000004000100040000000b0000008d45e43b435473058b43 *fcffe08b46048945e88b45008945e48b46108945f08975f48b460c8945f88b46088945fcc745ec *9c770f0883ed1cb824080f08ebcc9016000300000000001100000083c70c3b7b5c7611c7436c03 *000000be480012088b43fcffe0c747f81c790f088b45088947fc8b450489078b45008945088d77 *f883c508b81c790f08ebd989f68b450489750489c683c504e9d800000034780f0834780f080000 *0000010000002500000003000000120000008d45e83b435473058b43f8ffe08d45f8c700d46d10 *088970048b46088945ec8b46048945e88b460c8945f4c745f058780f0883ed18b8acd80c08ebcf *83c71c3b7b5c760cc7436c070000008b43f8ffe0c747e860780f088b450c8947ec8b45088947f0 *8b45048947f4c747f87cdc0b088b450c8947fc8d47e889078d77f883c5108b45008b40ecebc58d *7600be00d2110883c5108b4500ff60f089f6ec780f089c780f0800000000030000002500000004 *000100020000000e0000008d45ec3b435473058b43fcffe08b46048945f08b45008945ec8975f8 *8b46088945fcc745f410790f0883ed14b8d8090f08ebd89016000300000000001100000083c70c *3b7b5c7611c7436c03000000be4c0012088b43fcffe0c747f8847a0f088b45088947fc8b450489 *078b45008945088d77f883c508b8847a0f08ebd989f68b450489750489c683c504e9d80000009c *790f089c790f0800000000010000002500000003000000120000008d45e83b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945ec8b46048945e88b460c8945f4c745f0c0790f0883 *ed18b8acd80c08ebcf83c71c3b7b5c760cc7436c070000008b43f8ffe0c747e8c8790f088b450c *8947ec8b45088947f08b45048947f4c747f87cdc0b088b450c8947fc8d47e889078d77f883c510 *8b45008b40ecebc58d7600be00d2110883c5108b4500ff60f089f6547a0f08047a0f0800000000 *030000002500000004000100020000000e0000008d45ec3b435473058b43fcffe08b46048945f0 *8b45008945ec8975f88b46088945fcc745f4787a0f0883ed14b824080f08ebd890ecf01108c800 *1208b87a0f080900020000000000110003008d45fc3b4354730abe580012088b43fcffe08b7504 *c745fcac7c0f0883ed048b06ebed90b87a0f0802000000150001008d45ec3b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945f48b46048945f0c745ec0800000083ed14b8d0b80e *08ebd589f6b87a0f0802000000150003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe08d45f8c700d46d1008897004c747f8007b0f088b46048947fc8b460889078d47f8 *8945f4c745f0c800120883ed10b82cda0b08ebc98d7600b87a0f0804000100020000000e000300 *8d45f83b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8447b0f088b460889 *47fc8b450089078d47f88945008b46048945fcc745f80800000083ed08b8d0b80e08ebcf900200 *0000150000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700 *d46d1008897004c747f87cdc0b08c747fc44dc11088b460889078d47f88945f48b760483ed0cb8 *a87b0f08ebcc89f604000100010000000c00000083c7183b7b5c760cc7436c060000008b43fcff *e0c747ecfc7b0f088b46048947f08b45008947f4c747f87cdc0b08c747fc4cdc11088d47ec8907 *8d77f883c5048b45008b40ecebcab87a0f08620000002400030083c7143b7b5c760cc7436c0500 *00008b43f8ffe0c747f0a87b0f088b46048947f48b46088947f8837d04077f0b8d77f083c50c83 *ef08eb12c747fc587c0f088d47f089078d77fc83c50c8b4500ebc3904554580000000200180000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e8218100008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0 *fc7c0f0883ed10b84cce0b08ebbf902d3e009000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8b98000008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f0647d0f0883ed10b84cce0b08eb *bf904554580000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8518000008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0cc7d0f0883ed10b84cce0b08ebbf9018011208347e0f08040001 *0000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000beb00012088b43 *fcffe0c747f0a47e0f088b45008947f4c747fce07e0f088d47f089078d47fc894500c745fc1801 *120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f4a0f411088b760483ed10b808121008ebde8d760004000100010000 *000c0000008b760483c504ff262025200000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8357f00008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f0e87e0f0883ed10b84cce0b08ebbf90 *454f540000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8cd7e00008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f0507f0f0883ed10b84cce0b08ebbf90454f540000000200180000008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e865 *7e00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0b87f *0f0883ed10b84cce0b08ebbf908801120820800f080400010000000000110001008d45fc3b4354 *720883c7143b7b5c7611c7436c05000000be280112088b43fcffe0c747f090800f088b45008947 *f4c747fccc800f088d47f089078d47fc894500c745fc8801120883ed04b878e00e08ebce8d7600 *01000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4a8f411 *088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff26454e *510000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e8497d00008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f400d21108c745f0d4800f0883ed10b84cce0b08ebbf90454e510000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e17c00 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f03c810f08 *83ed10b84cce0b08ebbf90e8011208a4810f080400010000000000110001008d45fc3b43547208 *83c7143b7b5c7611c7436c05000000be980112088b43fcffe0c747f014820f088b45008947f4c7 *47fc50820f088d47f089078d47fc894500c745fce801120883ed04b878e00e08ebce8d76000100 *0100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4b0f411088b *760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff2641434b00 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8c57b00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f058820f0883ed10b84cce0b08ebbf903d3e009000000200180000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e85d7b00008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c0820f0883ed *10b84cce0b08ebbf9041434b0000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8f57a00008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f028830f0883ed10b84cce0b08ebbf9030021208 *90830f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000 *bef80112088b43fcffe0c747f000840f088b45008947f4c747fc3c840f088d47f089078d47fc89 *4500c745fc3002120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b *43f8ffe08d45f8c700d46d1008897004c745f4b8f411088b760483ed10b808121008ebde8d7600 *04000100010000000c0000008b760483c504ff2642454c0000000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d97900008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f044840f0883ed10b8 *4cce0b08ebbf9042454c0000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8717900008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f400d21108c745f0ac840f0883ed10b84cce0b08ebbf90780212081485 *0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be40 *0212088b43fcffe0c747f084850f088b45008947f4c747fcc0850f088d47f089078d47fc894500 *c745fc7802120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8 *ffe08d45f8c700d46d1008897004c745f4c0f411088b760483ed10b808121008ebde8d76000400 *0100010000000c0000008b760483c504ff264253009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8557800008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c8850f0883ed10b84cce *0b08ebbf904253009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8ed7700008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f030860f0883ed10b84cce0b08ebbf90c002120898860f08 *0400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be880212 *088b43fcffe0c747f008870f088b45008947f4c747fc44870f088d47f089078d47fc894500c745 *fcc002120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d1008897004c745f4c8f411088b760483ed10b808121008ebde8d760004000100 *010000000c0000008b760483c504ff264854009000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d17600008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f04c870f0883ed10b84cce0b08 *ebbf904854009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8697600008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f400d21108c745f0b4870f0883ed10b84cce0b08ebbf90080312081c880f080400 *010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000bed00212088b *43fcffe0c747f08c880f088b45008947f4c747fcc8880f088d47f089078d47fc894500c745fc08 *03120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45 *f8c700d46d1008897004c745f4d0f411088b760483ed10b808121008ebde8d7600040001000100 *00000c0000008b760483c504ff264c46009000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e84d7500008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0d0880f0883ed10b84cce0b08ebbf *904c46009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8e57400008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f038890f0883ed10b84cce0b08ebbf9050031208a0890f0804000100 *00000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be180312088b43fc *ffe0c747f0108a0f088b45008947f4c747fc4c8a0f088d47f089078d47fc894500c745fc500312 *0883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f4d8f411088b760483ed10b808121008ebde8d76000400010001000000 *0c0000008b760483c504ff265654009000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8c97300008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0548a0f0883ed10b84cce0b08ebbf9056 *54009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8617300008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f0bc8a0f0883ed10b84cce0b08ebbf9098031208248b0f08040001000000 *0000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be600312088b43fcffe0 *c747f0948b0f088b45008947f4c747fcd08b0f088d47f089078d47fc894500c745fc9803120883 *ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d1008897004c745f4e0f411088b760483ed10b808121008ebde8d760004000100010000000c00 *00008b760483c504ff264646009000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8457200008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f0d88b0f0883ed10b84cce0b08ebbf90464600 *9000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8dd7100008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f400d21108c745f0408c0f0883ed10b84cce0b08ebbf90e0031208a88c0f080400010000000000 *110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000bea80312088b43fcffe0c747 *f0188d0f088b45008947f4c747fc548d0f088d47f089078d47fc894500c745fce003120883ed04 *b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f4e8f411088b760483ed10b808121008ebde8d760004000100010000000c000000 *8b760483c504ff264352009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e8c17000008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f400d21108c745f05c8d0f0883ed10b84cce0b08ebbf904352009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8597000008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0c48d0f0883ed10b84cce0b08ebbf90280412082c8e0f0804000100000000001100 *01008d45fc3b4354720883c7143b7b5c7611c7436c05000000bef00312088b43fcffe0c747f09c *8e0f088b45008947f4c747fcd88e0f088d47f089078d47fc894500c745fc2804120883ed04b878 *e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *7004c745f4f0f411088b760483ed10b808121008ebde8d760004000100010000000c0000008b76 *0483c504ff26534f009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e83d6f00008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f400d21108c745f0e08e0f0883ed10b84cce0b08ebbf9053490090000002 *00180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e8d56e00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d211 *08c745f0488f0f0883ed10b84cce0b08ebbf9070041208b08f0f08040001000000000011000100 *8d45fc3b4354720883c7143b7b5c7611c7436c05000000be380412088b43fcffe0c747f020900f *088b45008947f4c747fc5c900f088d47f089078d47fc894500c745fc7004120883ed04b878e00e *08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *c745f4f8f411088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483 *c504ff265349009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e8b96d00008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f400d21108c745f064900f0883ed10b84cce0b08ebbf90444c45000000020018 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e8516d00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c7 *45f0cc900f0883ed10b84cce0b08ebbf90b804120834910f080400010000000000110001008d45 *fc3b4354720883c7143b7b5c7611c7436c05000000be800412088b43fcffe0c747f0a4910f088b *45008947f4c747fce0910f088d47f089078d47fc894500c745fcb804120883ed04b878e00e08eb *ce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745 *f400f511088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504 *ff26444c450000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8356c00008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0e8910f0883ed10b84cce0b08ebbf904443310000000200180000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e8cd6b00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0 *50920f0883ed10b84cce0b08ebbf9000051208b8920f080400010000000000110001008d45fc3b *4354720883c7143b7b5c7611c7436c05000000bec80412088b43fcffe0c747f028930f088b4500 *8947f4c747fc64930f088d47f089078d47fc894500c745fc0005120883ed04b878e00e08ebce8d *760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f408 *f511088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff26 *4443310000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8b16a00008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f06c930f0883ed10b84cce0b08ebbf904443320000000200180000008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e849 *6a00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0d493 *0f0883ed10b84cce0b08ebbf90480512083c940f080400010000000000110001008d45fc3b4354 *720883c7143b7b5c7611c7436c05000000be100512088b43fcffe0c747f0ac940f088b45008947 *f4c747fce8940f088d47f089078d47fc894500c745fc4805120883ed04b878e00e08ebce8d7600 *01000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f410f511 *088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff264443 *320000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e82d6900008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f400d21108c745f0f0940f0883ed10b84cce0b08ebbf904443330000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c56800 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f058950f08 *83ed10b84cce0b08ebbf9090051208c0950f080400010000000000110001008d45fc3b43547208 *83c7143b7b5c7611c7436c05000000be580512088b43fcffe0c747f030960f088b45008947f4c7 *47fc6c960f088d47f089078d47fc894500c745fc9005120883ed04b878e00e08ebce8d76000100 *0100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f418f511088b *760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff2644433300 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8a96700008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f074960f0883ed10b84cce0b08ebbf904443340000000200180000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8416700008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0dc960f0883ed *10b84cce0b08ebbf90d805120844970f080400010000000000110001008d45fc3b4354720883c7 *143b7b5c7611c7436c05000000bea00512088b43fcffe0c747f0b4970f088b45008947f4c747fc *f0970f088d47f089078d47fc894500c745fcd805120883ed04b878e00e08ebce8d760001000100 *130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f420f511088b7604 *83ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff26444334000000 *0200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c *1008893424e8256600008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d2 *1108c745f0f8970f0883ed10b84cce0b08ebbf904e414b0000000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8bd6500008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f060980f0883ed10b8 *4cce0b08ebbf9020061208c8980f080400010000000000110001008d45fc3b4354720883c7143b *7b5c7611c7436c05000000bee80512088b43fcffe0c747f038990f088b45008947f4c747fc7499 *0f088d47f089078d47fc894500c745fc2006120883ed04b878e00e08ebce8d7600010001001300 *00008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f428f511088b760483ed *10b808121008ebde8d760004000100010000000c0000008b760483c504ff264e414b0000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8a16400008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f07c990f0883ed10b84cce0b08ebbf9053594e0000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8396400008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0e4990f0883ed10b84cce *0b08ebbf90680612084c9a0f080400010000000000110001008d45fc3b4354720883c7143b7b5c *7611c7436c05000000be300612088b43fcffe0c747f0bc9a0f088b45008947f4c747fcf89a0f08 *8d47f089078d47fc894500c745fc6806120883ed04b878e00e08ebce8d76000100010013000000 *8d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f430f511088b760483ed10b8 *08121008ebde8d760004000100010000000c0000008b760483c504ff2653594e00000002001800 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e81d6300008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745 *f0009b0f0883ed10b84cce0b08ebbf904554420000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8b56200008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0689b0f0883ed10b84cce0b08 *ebbf90b0061208d09b0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611 *c7436c05000000be780612088b43fcffe0c747f0409c0f088b45008947f4c747fc7c9c0f088d47 *f089078d47fc894500c745fcb006120883ed04b878e00e08ebce8d760001000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f438f511088b760483ed10b80812 *1008ebde8d760004000100010000000c0000008b760483c504ff26455442000000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *996100008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f084 *9c0f0883ed10b84cce0b08ebbf9043414e0000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8316100008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0ec9c0f0883ed10b84cce0b08ebbf *90f8061208549d0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c743 *6c05000000bec00612088b43fcffe0c747f0c49d0f088b45008947f4c747fc009e0f088d47f089 *078d47fc894500c745fcf806120883ed04b878e00e08ebce8d760001000100130000008d45f03b *435473058b43f8ffe08d45f8c700d46d1008897004c745f440f511088b760483ed10b808121008 *ebde8d760004000100010000000c0000008b760483c504ff2643414e0000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e81560 *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0089e0f *0883ed10b84cce0b08ebbf90454d009000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8ad5f00008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0709e0f0883ed10b84cce0b08ebbf9040 *071208d89e0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05 *000000be080712088b43fcffe0c747f0489f0f088b45008947f4c747fc849f0f088d47f089078d *47fc894500c745fc4007120883ed04b878e00e08ebce8d760001000100130000008d45f03b4354 *73058b43f8ffe08d45f8c700d46d1008897004c745f448f511088b760483ed10b808121008ebde *8d760004000100010000000c0000008b760483c504ff26454d009000000200180000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8915e0000 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f08c9f0f0883 *ed10b84cce0b08ebbf905355420000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8295e00008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f0f49f0f0883ed10b84cce0b08ebbf90880712 *085ca00f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c050000 *00be500712088b43fcffe0c747f0cca00f088b45008947f4c747fc08a10f088d47f089078d47fc *894500c745fc8807120883ed04b878e00e08ebce8d760001000100130000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f450f511088b760483ed10b808121008ebde8d76 *0004000100010000000c0000008b760483c504ff265355420000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e80d5d00008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f010a10f0883ed10 *b84cce0b08ebbf904553430000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e8a55c00008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f400d21108c745f078a10f0883ed10b84cce0b08ebbf90d0071208e0 *a10f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be *980712088b43fcffe0c747f050a20f088b45008947f4c747fc8ca20f088d47f089078d47fc8945 *00c745fcd007120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43 *f8ffe08d45f8c700d46d1008897004c745f458f511088b760483ed10b808121008ebde8d760004 *000100010000000c0000008b760483c504ff264553430000000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8895b00008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f094a20f0883ed10b84c *ce0b08ebbf904653009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8215b00008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f400d21108c745f0fca20f0883ed10b84cce0b08ebbf901808120864a30f *080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000bee007 *12088b43fcffe0c747f0d4a30f088b45008947f4c747fc10a40f088d47f089078d47fc894500c7 *45fc1808120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ff *e08d45f8c700d46d1008897004c745f460f511088b760483ed10b808121008ebde8d7600040001 *00010000000c0000008b760483c504ff264653009000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8055a00008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f018a40f0883ed10b84cce0b *08ebbf904753009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e89d5900008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f400d21108c745f080a40f0883ed10b84cce0b08ebbf9060081208e8a40f0804 *00010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be28081208 *8b43fcffe0c747f058a50f088b45008947f4c747fc94a50f088d47f089078d47fc894500c745fc *6008120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d *45f8c700d46d1008897004c745f468f511088b760483ed10b808121008ebde8d76000400010001 *0000000c0000008b760483c504ff264753009000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8815800008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f09ca50f0883ed10b84cce0b08eb *bf905253009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8195800008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f004a60f0883ed10b84cce0b08ebbf90a80812086ca60f08040001 *0000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be700812088b43 *fcffe0c747f0dca60f088b45008947f4c747fc18a70f088d47f089078d47fc894500c745fca808 *120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f470f511088b760483ed10b808121008ebde8d760004000100010000 *000c0000008b760483c504ff265253009000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8fd5600008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f020a70f0883ed10b84cce0b08ebbf90 *5553009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8955600008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f088a70f0883ed10b84cce0b08ebbf90f0081208f0a70f080400010000 *000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000beb80812088b43fcff *e0c747f060a80f088b45008947f4c747fc9ca80f088d47f089078d47fc894500c745fcf0081208 *83ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700 *d46d1008897004c745f4000912088b760483ed10b808121008ebde8d760004000100010000000c *0000008b760483c504ff265553009000000200180000008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8795500008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f0a4a80f0883ed10b84cce0b08ebbf905350 *009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e8115500008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f400d21108c745f00ca90f0883ed10b84cce0b08ebbf902009120874a90f0804000100000000 *00110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be080912088b43fcffe0c7 *47f0e4a90f088b45008947f4c747fc20aa0f088d47f089078d47fc894500c745fc2009120883ed *04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d *1008897004c745f4300912088b760483ed10b808121008ebde8d760004000100010000000c0000 *008b760483c504ff265350009000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8f55300008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f028aa0f0883ed10b84cce0b08ebbf9044454c00 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e88d5300008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f090aa0f0883ed10b84cce0b08ebbf905589e583ec18895df48975f8897dfc8b75 *0cb8ffffffff85f67460833d38091208ff750ac7053809120800010000a1380912080514010000 *890424e884eaf4ff89c3b8ffffffff85db743089742408895c24048b4508890424e8b6edf4ff89 *c785c07408c70600000000eb05833e007508891c24e80bedf4ff89f88b5df48b75f88b7dfc89ec *5dc35589e583ec088b450c894424048b4508890424e874e8f4ff89ec5dc35589e557565381ecbc *0000008b7d088d5d8881ff000400007e1ac704247c4d1108e8a6160000e8a5e9f4ff8338040f85 *75010000895c2408897c2404c7042403000000e898edf4ff85c078da837d0c000f845d010000bb *000000003b1d801812087d708b45e48945848b45e08945808b458c89857cffffff8b4588898578 *ffffff8d049b8d3485000000008b86a81812088b96ac1812088b4d8431d133458009c175278b86 *a01812088b96a41812088b8d7cffffff31d1338578ffffffbaffffffff09c10f843a020000433b *1d801812087cae837d10000f8489000000bb000000003b1d841812087d7c8b45e4898574ffffff *8b45e0898570ffffff8b458c89856cffffff8b4588898568ffffff8d049b8d3485000000008b86 *a86812088b96ac6812088b8d74ffffff31d1338570ffffff09c175278b86a06812088b96a46812 *088b8d6cffffff31d1338568ffffffbaffffffff09c10f84a7010000433b1d841812087ca88b0d *841812088d4101a3841812088d0c89c1e1028b45888b558c8981a06812088991a46812088b45e0 *8b55e48981a86812088991ac68120889b9b0681208e956010000baffffffffe951010000bb0000 *00003b1d841812087d7c8b45e4898564ffffff8b45e0898560ffffff8b458c89855cffffff8b45 *88898558ffffff8d049b8d3485000000008b86a86812088b96ac6812088b8d64ffffff31d13385 *60ffffff09c175278b86a06812088b96a46812088b8d5cffffff31d1338558ffffffbaffffffff *09c10f84d1000000433b1d841812087ca8bb000000003b1d801812087d788b45e4898554ffffff *8b45e0898550ffffff8b458c89854cffffff8b4588898548ffffff8d049b8d3485000000008b86 *a81812088b96ac1812088b8d54ffffff31d1338550ffffff09c175238b86a01812088b96a41812 *088b8d4cffffff31d1338548ffffffba0000000009c1744c433b1d801812087cac8b0d80181208 *8d4101a3801812088d0c89c1e1028b45888b558c8981a01812088991a41812088b45e08b55e489 *81a81812088991ac18120889b9b0181208ba0000000089d081c4bc0000005b5e5f5dc35589e556 *538b5508b9000000003b0d801812087d708d0489391485b0181208755b413b0d801812087d4abb *8c1812088b35801812088d0489c1e0028b90a018120889908c1812088b90a4181208895403048b *90a8181208895403088b90ac1812088954030c8b90b0181208895403104139f17cc1ff0d801812 *08eb7b413b0d801812087c90b9000000003b0d841812087d758d0489391485b06812087560413b *0d841812087d4abb8c6812088b35841812088d0489c1e0028b90a068120889908c6812088b90a4 *681208895403048b90a8681208895403088b90ac6812088954030c8b90b0681208895403104139 *f17cc1ff0d84181208b800000000eb0e413b0d841812087c8bb8010000005b5e5dc39090905589 *e583ec08891c24897424048b5d088b750c8b55108b4d14b80100000039ce770b720439d37705b8 *000000008b1c248b74240489ec5dc35589e583ec08891c24897424048b5d088b750c8b55108b4d *14b80100000039ce770b720439d37305b8000000008b1c248b74240489ec5dc35589e5538b4508 *8b550c8b4d108b5d1431c831da09d00f94c00fb6c05b5dc35589e5538b45088b550c8b4d108b5d *1431c831da09d00f95c00fb6c05b5dc35589e583ec08891c24897424048b5d088b750c8b55108b *4d14b80100000039ce720b770439d37205b8000000008b1c248b74240489ec5dc35589e583ec08 *891c24897424048b5d088b750c8b55108b4d14b80100000039ce720b770439d37605b800000000 *8b1c248b74240489ec5dc35589e583ec08891c24897424048b5d088b750c8b55108b4d14b80100 *000039ce7f0b7c0439d37705b8000000008b1c248b74240489ec5dc35589e583ec08891c248974 *24048b5d088b750c8b55108b4d14b80100000039ce7f0b7c0439d37305b8000000008b1c248b74 *240489ec5dc35589e5538b45088b550c8b4d108b5d1431c831da09d00f94c00fb6c05b5dc35589 *e5538b45088b550c8b4d108b5d1431c831da09d00f95c00fb6c05b5dc35589e583ec08891c2489 *7424048b5d088b750c8b55108b4d14b80100000039ce7c0b7f0439d37205b8000000008b1c248b *74240489ec5dc35589e583ec08891c24897424048b5d088b750c8b55108b4d14b80100000039ce *7c0b7f0439d37605b8000000008b1c248b74240489ec5dc35589e583ec188b45108b5514894424 *088954240c8b45088b550c89042489542404e89e37010089ec5dc35589e583ec188b45108b5514 *894424088954240c8b45088b550c89042489542404e84436010089ec5dc35589e583ec188b4510 *8b5514894424088954240c8b45088b550c89042489542404e80a34010089ec5dc35589e583ec18 *8b45108b5514894424088954240c8b45088b550c89042489542404e85032010089ec5dc35589e5 *8b45088b550cf7d883d200f7da5dc35589e58b45108b551403450813550c5dc35589e58b45088b *550c2b45101b55145dc35589e583ec18895df48975f8897dfc8b5d108b75148b4508f7e38945e8 *8b7d080faffe89d101f90faf5d0c8d1c0b895dec8b45e88b55ec8b5df48b75f88b7dfc89ec5dc3 *5589e5538b45088b550c8b4d108b5d1421c821da5b5dc35589e5538b45088b550c8b4d108b5d14 *09c809da5b5dc35589e5538b45088b550c8b4d108b5d1431c831da5b5dc35589e58b45088b550c *f7d0f7d25dc35589e58b4d108b45088b550c0fa5c2d3e0f6c120740789c2b8000000005dc35589 *e58b4d108b45088b550c0fadd0d3eaf6c120740789d0ba000000005dc35589e58b4d108b45088b *550c0fa5c2d3e0f6c120740789c2b8000000005dc35589e58b4d108b45088b550c0fadd0d3faf6 *c120740589d0c1fa1f5dc35589e58b4d108b45088b550c0fadd0d3eaf6c120740789d0ba000000 *005dc35589e58b4508995dc35589e58b45085dc35589e58b45088b550c5dc35589e58b4508ba00 *0000005dc35589e58b45085dc35589e58b45088b550c5dc35589e583ec08891c24897424048b45 *0c8b7508b900000000bb0000000085f6744285f67f0783feff7410eb1783fe0175128b08bb0000 *0000eb298b08bb00000000eb198b08bb000000008b400489c2b80000000001c111d385f67907f7 *d983d300f7db89c889da8b1c248b74240489ec5dc35589e583ec08891c24897424048b450c8b75 *08b900000000bb0000000085f6744285f67f0783feff7410eb1783fe0175128b08bb00000000eb *298b08bb00000000eb198b08bb000000008b400489c2b80000000001c111d385f67907f7d983d3 *00f7db89c889da8b1c248b74240489ec5dc39090905589e557565383ec3ce852dff4ff89c3baff *ffffff83f8ff0f84e50000008d75d485c00f858f000000c745d800000000c745dc00000000c745 *e000000000c745e400000000c7442408000000008d5dd8895c2404c7042400000000e860e0f4ff *c744240800000000895c2404c7042401000000e848e0f4ffc744240800000000895c2404c70424 *02000000e830e0f4ff8b450c894424048b4508890424e8fee0f4ffc704247f000000e8f2e2f4ff *e88ddff4ff8338047546c74424080000000089742404891c24e884e0f4ff85c078de8b45d40fb6 *d4a87f74298b45d4ba000000003c7f7409a87f7405ba0100000085d2740be848dff4ffc7000400 *0000baffffffff89d083c43c5b5e5f5dc39090905589e557565383ec4ce842def4ff89c3baffff *ffff83f8ff0f84fe0000008d75d485c00f85a8000000c745d800000000c745dc00000000c745e0 *00000000c745e400000000c7442408000000008d5dd8895c2404c7042400000000e850dff4ffc7 *44240800000000895c2404c7042401000000e838dff4ffc744240800000000895c2404c7042402 *000000e820dff4ffc7442410000000008b45088944240cc7442408964d1108c74424049e4d1108 *c70424994d1108e835ddf4ffc704247f000000e8c9e1f4ffe864def4ff8338047546c744240800 *00000089742404891c24e85bdff4ff85c078de8b45d40fb6d4a87f74298b45d4ba000000003c7f *7409a87f7405ba0100000085d2740be81fdef4ffc70004000000baffffffff89d083c44c5b5e5f *5dc390905589e557565383ec1c8b5d088b75108b7d0cc645f30ac7042402000000e8d60d000085 *db7419c7042402000000ffd3eb0ee8d2ddf4ff833804753929de01df89742408897c2404c70424 *02000000e8a5dcf4ff89c339f07cd8c7442408010000008d45f389442404c7042402000000e884 *dcf4ff83c41c5b5e5f5dc35589e583ec18895dfc83e4f0c7442408a89a04088b450c894424048b *4508890424e828080000e85f070000c744240400000000c70424c0a11108e8e605000089c3e845 *07000083fb02741383fb02770783fb01742feb3483fb037415eb2dc70424c04d1108e8e90a0000 *b8fa000000eb26c70424454e1108e8d60a0000b8fc000000eb13b800000000eb0cc70424004e11 *08e8f1090000890424e8b1090000b8000000008b5dfc89ec5dc39083ec0cc7042402000000e855 *470000c7003cdc0b088b54241089500483c40cc383ec0cc7042402000000e835470000c70054dc *0b088b54241089500483c40cc383ec0c895c24080fb65c2410c7042402000000e80c470000c700 *54ed0b080fb6d38950048b5c240883c40cc383ec0c895c24080fbf5c2410c7042402000000e8e0 *460000c7006ced0b0881e3ffff00008958048b5c240883c40cc383ec0cc7042402000000e8ba46 *0000c70084ed0b088b54241089500483c40cc383ec0c895c2404897424088b5c24108b742414c7 *042403000000e88a460000c7009ced0b088958048970088b5c24048b74240883c40cc383ec0cc7 *042402000000e863460000c70090300c088b54241089500483c40cc383ec0c895c24080fb65c24 *10c7042402000000e83a460000c700a8300c080fb6d38950048b5c240883c40cc383ec0c895c24 *080fb75c2410c7042402000000e80e460000c700c0300c088958048b5c240883c40cc383ec0cc7 *042402000000e8ee450000c700d8300c088b54241089500483c40cc383ec0c895c240489742408 *8b5c24108b742414c7042403000000e8be450000c700f0300c088958048970088b5c24048b7424 *0883c40cc383ec0cc7042402000000e897450000c7003ce00b088b542410895424088b54240889 *500483c40cc383ec1cdd442420dd5c2410c7042403000000e867450000c70024e00b08dd442410 *dd5c2408dd442408dd580483c41cc383ec0cc7042402000000e83f450000c700a42d0c088b5424 *1089500483c40cc383ec0cc7042402000000e81f450000c700e0060c088b54241089500483c40c *c383ec0cc7042402000000e8ff440000c700f8060c088b54241089500483c40cc3837c24040074 *06b804d21108c3b8fcd11108c383ec0c8b442410890424e89effffff89442404c7042414d41108 *e80400000083c40cc383ec0cc7042403000000e8a9440000c7008c6b10088b5424108950048b54 *241489500883c40cc38b4424048b4004c38b4424048b4004c38b4424040fbe4004c38b4424040f *bf4004c38b4424048b4004c38b4424048b50088b4004c38b4424048b4004c38b4424040fb64004 *c38b4424040fb74004c38b4424048b4004c38b4424048b50088b4004c383ec048b4424088b4004 *890424d9042483c404c383ec0c8b442410dd4004dd1c24dd042483c40cc38b4424048b4004c38b *4424048b4004c38b4424048b4004c38b4424048b0083e80866837806007506b800000000c3b801 *000000c383ec1c895c24188b1da0b81208c705a0b8120800000000a14cbb1208890424e8241300 *008b48308d51fc8950308b5424208951fc8b48308d51fc895030c741fcd4351008895c24088b54 *242489542404890424e8091400008b5c241883c41cc383ec1c895c24188b1da0b81208c705a0b8 *1208000000008b442424890424e8c51200008b48308d51fc8950308b5424208951fc8b48308d51 *fc895030c741fcd4351008895c24088b54242889542404890424e8aa1300008b5c241883c41cc3 *83ec1c895c24188b1da0b81208c705a0b8120800000000a14cbb1208890424e8651200008b4830 *8d51fc895030c741fc805e10088b48308d51fc895030c741fc1c0910088b48308d51fc8950308b *5424208951fc8b48308d51fc895030c741fcd4351008895c24088b54242489542404890424e82a *1300008b5c241883c41cc357565383ec108b7c24248b35a0b81208c705a0b81208000000008b44 *2420c1e0048b1520ba12088b1c02a14cbb1208890424e8d21100008b48308d51fc895030c741fc *805e10088b48308d51fc895030c741fc1c0910088b48308d51fc8950308959fc8b48308d51fc89 *5030c741fcd4351008897424088d54240c89542404890424e89b12000089c383f801751285ff74 *0e8b44240c890424e8c4290000890789d883c4105b5e5fc383ec1c895c24188b1da0b81208c705 *a0b8120800000000a14cbb1208890424e83c1100008b48308d51fc895030c741fcb45e10088b48 *308d51fc895030c741fc1c0910088b48308d51fc8950308b5424208951fc8b48308d51fc895030 *c741fcd4351008895c24088b54242489542404890424e8011200008b5c241883c41cc383ec1c89 *5c24188b1da0b81208c705a0b81208000000008b442424890424e8bd1000008b48308d51fc8950 *30c741fcb45e10088b48308d51fc895030c741fc1c0910088b48308d51fc8950308b5424208951 *fc8b48308d51fc895030c741fcd4351008895c24088b54242889542404890424e8821100008b5c *241883c41cc383ec0c8b5424108b44241483f802741383f802770783f8017448eb2683f803740f *eb1f89542404c704242a4e1108eb0b89542404c70424414e1108e8ef030000eb14894424088954 *2404c70424514e1108e8d9030000c7042401000000e8f002000083c40cc3c3c383ec1c895c2414 *897424188b5c24208b742424ff05b0b81208833db0b81208010f8f90000000e8cb2c0000e8b01a *0100e84747000085db743085f6742cc744240ce0cc1208c744240834bb12088b0689442404891c *24e8f31b01008b03a328bb12088b06a32cbb1208e881b40000e833110000e8c03a0000e8e82600 *00e85e440000c7042414000000e83b450000e8cc2b0000e827220000e8e9250000c7442404fc5a *1108c7042400000000e83fd5f4ffe89d2c00008b5c24148b74241883c41cc383ec0c8d44241489 *4424048d442410890424e827ffffff8b442418890424e83600000083c40cc38b5424048b4c2408 *85d27407a128bb1208890285c97407a12cbb12088901c38b442404a328bb12088b442408a32cbb *1208c383ec1c895c2414897424188b742420833db0b81208007f0cc70424a04e1108e8bd010000 *c7042404000000e8deb3000089c38b00a3b4b81208c700ba5e1008ba0100000085f6740da1b4b8 *1208897004ba02000000a1b4b812088d0490a398bc1208c744240448bc1208c70424c05e1008e8 *03350000891c24e8ceb500008b5c24148b74241883c41cc381ec1c010000899c241401000089b4 *2418010000833db0b81208007f0cc704246d4e1108e82e010000ff0db0b81208833db0b8120800 *0f8fc2000000e8b62b0000e805440000e845100000e8ef430000c7042400000000e8ef030000c7 *042401000000e8e3030000c7042402000000e8d70300008d9c2490000000891c24e8b8d6f4ffc7 *44240416000000891c24e8e8d4f4ff8d44241089442408895c2404c7042400000000e820d5f4ff *bb00000000bea4b81208833c9e0074178b049e89442408c744240400000000891c24e869d3f4ff *4383fb027eddc7442408000000008d44241089442404c7042402000000e8d7d4f4ffe8572b0000 *e8313c00008b9c24140100008bb4241801000081c41c010000c383ec0ce8e5feffff83c40cc383 *ec0c833db0b81208017516e8d7440000e8cbfeffff8b442410890424e80400000083c40cc383ec *0c8b442410890424e8f7d5f4ff9090905383ec188d5c2424833d2cbb1208007429833d30bb1208 *007420a130bb120889442408c7442404cd4e1108a104171208890424e81cd2f4ffeb25a1041712 *088944240cc744240810000000c744240401000000c70424d14e1108e875d6f4ff895c24088b44 *242089442404a104171208890424e87cd3f4ffa10417120889442404c704240a000000e827d4f4 *ffa1041712088944240cc744240875000000c744240401000000c70424604f1108e822d6f4ffa1 *04171208890424e8c5d1f4ffc70424fe000000e823ffffff83ec1c895c24188d5c2424833d2cbb *1208007427833d30bb120800741ea130bb120889442408c7442404e24e1108a104171208890424 *e84ed1f4ff895c24088b44242089442404a104171208890424e8d5d2f4ffa10417120889442404 *c704240a000000e880d3f4ff8b5c241883c41cc383ec0c8d442414894424088b44241089442404 *a104171208890424e898d2f4ffa10417120889442404c704240a000000e843d3f4ff83c40cc383 *ec0c895c24088b5c2410891c24e8ccd1f4ff85c0751c8b44241489442404891c24e8e8420000c7 *0424fe000000e846feffff8b5c240883c40cc383ec0c895c24088b5c2414895c24048b44241089 *0424e849d3f4ff85c0751c8b44241889442404891c24e8a5420000c70424fe000000e803feffff *8b5c240883c40cc35383ec088b4424148b5c24100fafd88b44241889442404891c24e863ffffff *ba0000000039da7d09c60402004239da7cf783c4085bc383ec0c8b442410890424e8dcd3f4ff83 *c40cc383ec1ca100171208890424e838d0f4ff8b4424248944240c8b44242089442408c7442404 *e04f1108a104171208890424e8e3cff4ffa104171208890424e806d0f4ffe831d1f4ff83ec0ca1 *48bb1208c1e002890424e84e42000083c40cc383ec0ca150bb1208c1e00c89442404c704240000 *0000e8ff410000c70424fb000000e82dfdffff8b54240489d0803a0074064080380075fa29d0c3 *a1b8b812088d50018915b8b81208c3c705b8b8120800000000b800000000c383ec1c895c24188b *5c2420c744240403000000891c24e815d2f4fff6c408741925fff7ffff89442408c74424040400 *0000891c24e8f7d1f4ff8b5c241883c41cc383ec1c895c24188b5c2420c744240403000000891c *24e8d4d1f4fff6c40875190d0008000089442408c744240404000000891c24e8b6d1f4ff8b5c24 *1883c41cc35557565383ec1c8b7c24308b6c243483fd000f876301000081ffe7030000771d897c *2408c7442404e74e11088b442438890424e816d3f4ffe91f02000083fd000f873501000081ff3f *420f00776ec7442408e8030000c744240c00000000893c24896c2404e8782301008944240c8b74 *240cc7442408e8030000c744240c00000000893c24896c2404e8242201008974240c89442408b8 *eb4e1108837c243c007505b8f64e1108894424048b442438890424e897d2f4ffe9a001000083fd *000f87b600000081ffffc99a3b0f87aa000000c7442408e8030000c744240c00000000893c2489 *6c2404e8f522010089442410c7442408e8030000c744240c00000000893c24896c2404e8a52101 *00c7442408e8030000c744240c0000000089042489542404e8b92201008944240c8b74240cc744 *240840420f00c744240c00000000893c24896c2404e8652101008974240c89442408b8004f1108 *837c243c007505b8124f1108894424048b442438890424e8d8d1f4ffe9e1000000c7442408e803 *0000c744240c00000000893c24896c2404e84b22010089442414c7442408e8030000c744240c00 *000000893c24896c2404e8fb200100c7442408e8030000c744240c0000000089042489542404e8 *0f22010089442410c744240840420f00c744240c00000000893c24896c2404e8bf200100c74424 *08e8030000c744240c0000000089042489542404e8d32101008944240c8b74240cc744240800ca *9a3bc744240c00000000893c24896c2404e87f2001008974240c89442408b8224f1108837c243c *007505b83b4f1108894424048b442438890424e8f2d0f4ff8b44243883c41c5b5e5f5dc383ec0c *8b442410890424e807cff4ff83c40cc39090905557565383ec1c8b6c2430c7442414000000008b *442434894424188d442418890424e836b00000833ddcb81208007417c705dcb8120800000000c7 *44241401000000e841050000813d40091208e0bb12087405e8631c0000813dc8b8120848091208 *750c813dd0b81208480912087418813dc0b81208480912080f94c00fb6c0890424e8ad14000083 *3ddcb8120800759f813dc0b81208480912080f85b1000000813dc8b81208480912080f85a10000 *00813dd0b81208480912080f8591000000c744240401000000c70424e4d10f08e814b00000813d *c0b81208480912087571e884100000813dc0b81208480912087560e83119000085c07425e83619 *0000833ddcb81208000f8523ffffff813d40091208e0bb12087439e89d1b0000eb328b15bcb812 *088b020fb740124883f8027714c744240408d311088b02890424e87b0d0000eb0cc70424205011 *08e9cc0000008b15c0b8120881fa4809120874258b4204a3c0b81208c7420448091208813dc0b8 *120848091208750ac705c4b812084809120889d38b442418895068833d94bb120800752e813dc0 *b81208480912087518813dc8b8120848091208750c813dd0b8120848091208740ac705d8b81208 *010000000fb77310e842cbf4ff8b5320891083fe01742f83fe01721183fe02740583fe047530bf *04000000eb358b44241883c00889442404c70424485e1008e89f2b0000eb0c8b442418890424e8 *61fe000089c7eb0cc7042460501108e8e9f7ffff8b4424188b5868e8e1caf4ff8b0089432083ff *040f8742020000ff24bd845311088b442418817874000400000f86b30000008b40748d3485ff0f *0000c1ee0c89f0030520bc12083b0528bc12080f8392000000a320bc1208893424e8b6a9000089 *c78b4424188b40708947088b4424188b40708b400c89470c8b4424188b407083780c0074088b40 *0c897808eb0f8b542418a1b8ba1208897804897a6c8b4424188b407089780c89fa89f0c1e0058d *043839c7731f89c1a1b8ba1208894214c7421000000000c7421c0000000083c22039ca72e3a1b8 *ba12080170088b442418897870eb1c891c24e82de10000c705e8b8120801000000c705d8b81208 *01000000a1c0b81208894304891dc0b81208813dc4b81208480912080f854d010000e930010000 *891c24e8eee00000891c24e83007000089c6837b240074058b43248930893424e8d1e00000a1c0 *b812088946048935c0b81208813dc4b81208480912080f85050100008935c4b81208e9fa000000 *c705d8b81208000000000fb7431039f00f851afeffff891c24e88ae00000e9a3000000a1041712 *08890424e8cbc8f4ff891c24e870e00000e9bd000000395d00757e66837b1004751a837d080074 *0b8b45088b53308b52048910c7450401000000eb20837d080074098b4508c70000000000837c24 *14000f95c00fb6c083c002894504837d0c00750a8b4510a3bcb81208eb098b550c8b4510894210 *837d1000740a8b4510c7400c000000008b442418890424e826ac000083c41c5b5e5f5dc3837b24 *007434813dc0b81208480912087508891dc0b81208eb08a1c4b81208895804891dc4b81208eb10 *897c2404c70424a0501108e87df5ffff833de8b81208000f848bfbffffc744240400000000c704 *24e4d10f08e839ac0000c705e8b8120800000000e968fbffffb800000000c3b800000000c383ec *0c895c2408e837f2ffffe894c7f4ff89c385c00f8593000000c705c4b8120848091208c705c0b8 *120848091208a1d4b812083d4809120874158b5804890424e85709000089d881fb4809120875eb *8b15bcb8120885d2741a8b4210a3bcb81208891424e800f7ffff8b15bcb8120885d275e6c74424 *04000000008b442410890424e8adefffff89442404c7042410541108e845f1ffffe8a7f1ffffe8 *48f3ffffc7042400000000e881f4ffffe891f1ffff89d88b5c240883c40cc35383ec08a1d4b812 *083d4809120874158b580c890424e8aa08000089d881fb4809120875eb83c4085bc383ec1c895c *241089742414897c2418e84ac7f4ff8b388b74242083ee088b466866c7401000008b4668890424 *e85ade00008b5668a1e4b812088942048b4668a3e4b812088b466883781800751266c740120700 *8b4668c7401848091208eb098b466866c7401208008b46688b581c893424e84baa0000e8e3c6f4 *ff893889d88b5c24108b7424148b7c241883c41cc357565383ec108b742420e8c0c6f4ff8b388d *44240c890424e8ffa90000bae4b812088b1de4b8120881fb48091208742239731c74108d53048b *5b0481fb4809120875edeb0d8b4304890281fb48091208750cc70424e0501108e86df3ffffc743 *044809120866837b120775128b4318890424e85b050000c743180000000066c7431200008b4424 *0c895868e83fc6f4ff89388b44240c83c00883c4105b5e5fc38b4424048b481c8b4424088b501c *b8ffffffff39d1720839d10f97c00fb6c0c38b4424048b401cc3565383ec048b44241083f82577 *05b8260000008d70f3890424e86d30000089c1c700805c100866c7401000008b153c0912088d42 *01a33c09120889511c66c741120000c7411800000000c7412000000000c7412400000000897128 *8b1d48bb120881fb00f80300764389dac1ea0bb820080402f7e289d0c1e00729d089c2c1e20b89 *d829d03dfffb0100770489d3eb1c89dac1ea0bb820080402f7e289d0c1e00729d0c1e00b8d9800 *f803008d43f389412c8d14b18d4230894130c74230185e1008c7410448091208a1d4b812088941 *0c890dd4b8120889c883c4045b5ec38b542404813dc0b812084809120875088915c0b81208eb08 *a1c4b812088950048915c4b81208c383ec0c8b442410890424e8caffffff83c40cc383ec0c895c *24088b5c2410c74424041c541108c7042414000000e840f3ffff89c289188943248b4424148942 *08c7420400000000a1bcb81208894210c7420c00000000833dbcb81208007408a1bcb812088950 *0c8915bcb81208813dc0b81208480912087508891dc0b81208eb08a1c4b81208895804891dc4b8 *12088b44241889442404891424e8a20000008b5c240883c40cc383ec0cc705c0b8120848091208 *c705c4b8120848091208c705c8b8120848091208c705ccb8120848091208c705d0b81208480912 *08c705e4b8120848091208c705bcb8120800000000c705d4b8120848091208c705d8b812080000 *0000c705dcb81208000000008b0d90bb1208ba6766666689c8f7eac1fa0389c8c1f81f29c28915 *94bb1208e809a7000083c40cc3c705e0b8120801000000c383ec1c895c2414897424188b5c2420 *8b44242489442404891c24e891f6ffff8b7304891c24e8bbf2ffff89f08b5c24148b74241883c4 *1cc383ec0c895c24088b5c2410813dc0b81208480912087412c70424c0b81208ffd3c70424c4b8 *1208ffd3813dc8b81208480912087412c70424c8b81208ffd3c70424ccb81208ffd3813dd0b812 *08480912087409c70424d0b81208ffd3813de4b81208480912087409c70424e4b81208ffd3891c *24e8471300008b5c240883c40cc383ec0cc744240400000000c70424e4d10f08e8c9a6000083c4 *0cc383ec0cc744240401000000c70424e4d10f08e8aea6000083c40cc383ec0c895c24088b5c24 *10891c24e836ffffff891c24ff15ecb812088b5c240883c40cc383ec0c8b442410a3ecb81208c7 *44240400000000c704249bd20f08e866a6000083c40cc35557565383ec1c8b6c24308b45283b45 *2c7217c7442404bcd21108892c24e81504000089e8e9210100008b45288b552c01c039d0760289 *d08d1c853310000081e300f0ffffc1eb0289d981fb00f80300764189dac1ea0bb820080402f7e2 *89d0c1e00729d089c2c1e20b89d829d089d13dfffb0100761c89dac1ea0bb820080402f7e289d0 *c1e00729d0c1e00b8d8800f8030089cb8d41f389442418890c24e8692c000089442414fcb90d00 *000089c789eef3a58b45288d4485008b553029d083c0348b4c24148d1c9983e0fc29c389df89d6 *89c283f8077612f6c304740d8b0689038d7b0483c60483ea04fc89d1c1e902f3a589d083e00285 *c0740c0fb70666890783c70283c60289d083e00185c074050fb60688078b4424148958308b5424 *1889502866c7451003008945048b45288d44853489453066c7451200008b4c2414c74108000000 *0089c883c41c5b5e5f5dc38b54240466c7421200008b4a04c7420448091208813dc0b812084809 *120875088915c0b81208eb08a1c4b812088950048915c4b8120889c8c383ec0c8b4424103d4809 *1208740f890424e8b1ffffff3d4809120875f183c40cc383ec0c8b4424103d48091208740f8904 *24e890ffffff3d4809120875f183c40cc3c705dcb8120801000000c705d8b8120801000000c357 *565383ec108b5c242066837b12000f84c70100000fb7431283f8060f8769010000ff2485985311 *08be480912088b7b148d4f048b570439f2742a39da75168b43048901395f0c0f85590100008977 *0ce9510100008d4a0489d68b520481fa4809120875d6c7042400511108e9210100008b43148d48 *048b500481fa48091208741639da0f84170100008d4a048b520481fa4809120875eac704244051 *1108e9ee0000008b43146683781003750a8b4004668378100374f68d48188b501881fa48091208 *741639da0f84d30000008d4a048b520481fa4809120875eac7042480511108e9aa000000b90000 *00008b15c8b8120881fa48091208744e39da753d85c975238b4304a3c8b81208391dccb812080f *858f000000c705ccb8120848091208e9800000008b42048941043915ccb812087572890dccb812 *08eb6a89d18b520481fa4809120875b2c70424c0511108eb40b9000000008b15d0b8120881fa48 *091208741d39da750c85c9742a8b4204894104eb3189d18b520481fa4809120875e3c704240052 *1108eb07c7042427541108e80becffff8b4304a3d0b81208eb058b43048901c743044809120866 *c743120000c7431400000000813dc0b81208480912087508891dc0b81208eb08a1c4b812088958 *04891dc4b8120883c4105b5e5fc383ec0cc7442404000000008b442410890424e85b00000083c4 *0cc383ec0c895c24088b5c241066837b1004742266837b1002741b0fb7431283e8076683f80176 *08891c24e8d4fdffff66c7431002008b5c240883c40cc383ec0c8b442414894424048b44241089 *0424e80400000083c40cc35557565383ec0c8b44242066837810040f841d02000066837810020f *8412020000890424e882fdffff8b5424208b7a30813fd4351008750583c704eb0983ef04c70754 *0912088d5f048b4704eb548b1383ea0c0fb7420883e82383f8067737ff2485b45311088b430489 *c2c1ea18c1e81025ff0000008d441015eb218b430483c003eb198b42048b00eb118b43048b4018 *83c002eb078b420483e01f408d1c838b0383e80c668378082a7415668378082b7507837c242400 *7507668378082c758d0fb7400883f82b741d83f82b7f0a83f82a745ee94e01000083f82c0f8433 *010000e940010000c7042402000000e8e2270000c700c03310088b5424248950048d7bfc8b5424 *20837a18007507c74218480912088907c747fcd43510088d47fc8b54242089423066c742100000 *e90101000089de29fe89f0c1f8028d70ff83c002890424e88c27000089c58970048b0789450883 *c704ba0000000039f2730e8b0783c7048944950c4239f272f2c74500900810088b4b048b110fb7 *42fcf6840061121208010f858000000081fadc5b1008750b8b4104890424e8d7fbffff8b4b0489 *c82500f00f00c1e80789ca81e20000f0ff89c609d6837e1000750e8969048b4304c700645a1008 *eb408b43048968048b4b048139dc5b100874268b46108d04c08b15acba12088b4482148941088b *46108d04c08b4b048b15acba1208894c82148b4304c700445b100883c704892fe931feffff83c7 *048b44242066c740100200897830eb0cc7042435541108e81ae9ffff83c40c5b5e5f5dc35383ec *088b54241081fa48091208745b8b5a0ca1d4b8120889420c8915d4b812080fb7421283f801740f *83f801723283f802740f83f803751cc744240400d31108eb08c744240408d31108891424e872fd *ffffeb0cc7042440521108e8b1e8ffff89da81fb4809120875a583c4085bc357565383ec108b35 *d4b8120881fe480912080f84b900000066837e1003750a8b760466837e100374f666837e12020f *858e0000008b7e148b4e308b0183e80c0fb7400883f82a740783f82c7475eb1c3979047512c744 *240408d31108893424e8f1fcffffeb5c83c108ebcf8b1183ea0c0fb7420883e82383f8067737ff *2485d05311088b410489c2c1ea18c1e81025ff0000008d541015eb218b510483c203eb198b4204 *8b10eb118b41048b501883c202eb078b520483e21f428d0c91e978ffffff8b760c81fe48091208 *0f8547ffffff83c4105b5e5fc383ec1c8b5424200fb7421283f8080f8710010000ff2485ec5311 *088b421489442408c744240440541108eb598b421489442408c74424045e541108eb488b421489 *442408c74424047b541108eb37a1041712088944240cc744240815000000c744240401000000c7 *04248f541108e9aa0000008b42148b401c89442408c744240480521108a104171208890424e88c *b9f4ffe9ac000000a1041712088944240cc74424081a000000c744240401000000c70424a55411 *08eb64a1041712088944240cc74424080e000000c744240401000000c70424c0541108eb42a104 *1712088944240cc74424081e000000c744240401000000c70424c0521108eb20a1041712088944 *240cc744240840000000c744240401000000c70424e0521108e87cbdf4ffeb1f8954240c8b421c *894424080fb7421289442404c7042440531108e887e6ffff83c41cc383ec1c8b5424200fb74210 *83f802740783f8047424eb49a1041712088944240cc74424080f000000c744240401000000c704 *24cf541108eb20a1041712088944240cc74424080d000000c744240401000000c70424df541108 *e8f9bcf4ffeb08891424e851feffff83c41cc35383ec18a1041712088944240cc74424080d0000 *00c744240401000000c70424ed541108e8c2bcf4ff8b1dd4b8120881fb480912087470895c240c *8b431c89442408c7442404fb541108a104171208890424e814b8f4ff8b431c890424e8e7270000 *85c0741989442408c74424040c551108a104171208890424e8ecb7f4ff891c24e80dffffffa104 *17120889442404c704240a000000e82fbaf4ff8b5b0c81fb48091208759083c4185bc383ec0c8b *442410890424e82af7ffff83c40cc356538b5c240cb900000000813dd0b81208480912087465a1 *d0b8120889c289de2b701485f67e558b4204a3d0b8120866c742120000c7420448091208a1c0b8 *12088942048915c0b81208813dc4b812084809120875068915c4b81208b901000000813dd0b812 *0848091208740f8b15d0b8120889d82b421485c07fab89c85b5ec35557565381ec3c010000beff *ffffffc744242400000000c744242800000000c744242c00000000e87afa0000a3f0b8120889c7 *890424e844ffffff85c00f85ef020000bb0000000083bc2450010000007432813dd0b812084809 *12087421a1d0b812088b401429f889c369db204e0000eb12c744242401000000e97f010000bbff *ffff07b800000000bd200000008dbc24b000000089e9fcf3ab8d7c243089e9fcf3ab8b0dc8b812 *0881f948091208745c8b79040fb7411283f804740783f805741deb338b411439c67d0289c689c2 *c1ea0583e01f0fab8494b0000000eb248b411439c67d0289c689c2c1ea0583e01f0fab449430eb *0cc7042414551108e98e01000089f981ff4809120875a4ba83de1b4389d8f7e2c1ea1289542428 *69d240420f0089d829d08944242ce998000000e8a6b6f4ff833804744e8338090f842fffffffe8 *93b6f4ff8b0089442408c74424041f551108a104171208890424e8c8b5f4ffa104171208890424 *e8ebb5f4ffc7042423551108e88fb5f4ffc704242a551108e909010000813d40091208e0bb1208 *740ae8ed050000e994010000833ddcb81208000f8587010000e8f6f80000890424e8c7fdffff81 *3dc0b81208480912080f856a0100008d44242889442410c744240c000000008d44243089442408 *8d8424b0000000894424048d4601890424e8a5b5f4ff85c00f8832ffffffbd00000000b9010000 *0085c9750b837c2424000f84f80000008b0dc8b8120881f9480912080f84bf0000008b79040fb7 *411283f804740783f8057426eb4ebb00000000837c242400753b8b411489c283e21fc1e8050fa3 *9484b00000000f92c0eb1fbb00000000837c24240075178b411489c283e21fc1e8050fa3548430 *0f92c084c07413bb01000000eb0cc7042438551108e841e2ffff85db742f66c741120000c74104 *48091208a1c0b81208894104890dc0b81208813dc4b81208480912087519890dc4b81208eb1185 *ed7508890dc8b81208eb03894d0489cd89f981ff480912080f8541ffffff85ed7516c705ccb812 *0848091208c705c8b8120848091208eb0dc7450448091208892dccb8120883bc24500100000074 *19833ddcb81208007510813dc0b81208480912080f84f5fcffff81c43c0100005b5e5f5dc39090 *c383ec1c895c24188b5c24203b1d08b912087c6a833d04b91208007519c7442404435511088d04 *9d04000000890424e8d9e2ffffeb20c7442408435511088d049d0400000089442404a104b91208 *890424e8f2e2ffffa304b912088b1508b9120839da7f11a104b91208c70490ffffffff4239da7e *ef8d4301a308b912088b5c241883c41cc383ec0cc7042400000000e838e4ffff83c40cc381ec9c *000000899c249400000089b424980000008bb424a00000008b0d40091208a104b912088b14b08d *4104a340091208c1e204a120ba12088b04108901813d4009120820bc12087518c7042451551108 *e874e1ffffc7042401000000e88be0ffff8d5c2410891c24e875b6f4ff89742404891c24e8a9b4 *f4ffc744240800000000895c2404c7042401000000e8e1b4f4ff83fe12750cc7042412000000e8 *4affffffc705d8b81208010000008b9c24940000008bb4249800000081c49c000000c383ec0cc7 *042420b91208e812b6f4ff83c40cc383ec0cc7442408a0b91208c744240420b91208c704240000 *0000e87fb4f4ff83c40cc383ec0cc744240800000000c7442404a0b91208c7042402000000e85c *b4f4ff83c40cc3833d0cb91208000f95c00fb6c0c383ec0c813d40091208e0bb12087523833ddc *b8120800751ae85db4f4ff813d40091208e0bb12087509833ddcb812080074e683c40cc381eccc *010000899c24bc01000089b424c001000089bc24c401000089ac24c80100008b9c24d00100008b *bc24d40100008bac24d801000085db0f88c80100008db42430010000893424e836b5f4ff85c00f *85b1010000895c2404893424e862b3f4ff85c00f859d0100008d8424b000000089442408897424 *04c7042400000000e88fb3f4ff85c00f857a010000891c24e874fdffffa104b912088b04988944 *241cc78424a40000000000000083fffe741d83fffe7f0e8d470583f8010f8793000000eb5683ff *ff742be987000000a104b91208c70498feffffff895c2404c7042420b91208e8aab5f4ffc74424 *2001000000eb6da104b91208c70498ffffffff895c2404c7042420b91208e884b5f4ffc7442420 *00000000eb478b5500a104b91208891498895c2404c7042420b91208e88fb2f4ffc744242069e1 *0f0883fffb750bc78424a400000000000080ff050cb91208eb0cc704246a551108e83fdeffff83 *bc24dc0100000074158d7c2424fcb9200000008bb424dc010000f3a5eb0c8d442424890424e8f8 *b3f4ffb80000000083fb11750e833d00b91208007405b801000000098424a4000000c744240800 *0000008d44242089442404891c24e891aff4ff85c07523c7442408000000008d8424b000000089 *442404c7042402000000e82eb2f4ff85c07424837c241c007816a104b912088b0498890424e817 *030000ff0d0cb91208bafdffffffeb1c8b44241c83c0038b54241c83f802760c8b44241c894500 *bafcffffff89d08b9c24bc0100008bb424c00100008bbc24c40100008bac24c801000081c4cc01 *0000c35383ec08e81efdffff813d40091208e0bb1208746e8b15400912088d42fca3400912088b *5afca14cbb1208890424e81beaffff8b48308d51fc895030c741fcb45e10088b48308d51fc8950 *30c741fc1c0910088b48308d51fc8950308959fc8b48308d51fc895030c741fcd4351008890424 *e8ddeaffff813d40091208e0bb12087592e8c2fcffff83c4085bc3565383ec048b7424108b1d40 *09120881fbe0bb1208741083eb04891c24ffd681fbe0bb120875f083c4045b5ec383ec0c833ddc *b8120800740cc70424fc000000e86ddcffffe8c3eeffff83c40cc35381ec38010000c78424a000 *0000d1e50f088d9c24a00000008d8424a4000000890424e832b2f4ffc784242401000000000000 *8d44241089442408895c2404c7042402000000e8dfadf4ff85c0740cc70424a0551108e8e6dcff *ffc744240401000000c7042402000000e84baef4ffc78424a000000056e10f088d9c24a0000000 *8d8424a4000000890424e8cab1f4ffc7842424010000000000008d44241089442408895c2404c7 *042412000000e877adf4ff85c0740cc70424e0551108e87edcffff81c4380100005bc39090908b *442404c1e0048b1520ba12088b0402c3c38b4424048b1066837afc1e741c66837afc2274156683 *7afc1f740e66837afc20740766837afc2175288b40048b1066837afc1e74f466837afc2274ed66 *837afc1f74e666837afc2074df66837afc2174d8c383ec1c895c2414897424188b742420833d24 *ba1208007505e8f9000000893424e889ffffff89c689442404a12cba1208890424e8c8dd000085 *c075528b0d20ba1208a124ba120889c329cbc1fb048b00a324ba120889dac1e204c74411080000 *0000a120ba1208893410a120ba1208c744100c00000000895c240889742404a12cba1208890424 *e862de000089d88b5c24148b74241883c41cc383ec0c8b442410890424e857ffffff8b0d20ba12 *0889c2c1e204ff44110883c40cc383ec1c895c24188b442420c1e004030520ba1208ff48088378 *0c00753583780800752f89c3833800741bc7442408000000008b0089442404a12cba1208890424 *e86cde0000a124ba12088903891d24ba12088b5c241883c41cc35383ec188b1d28ba120885db75 *66c70528ba120840000000c74424040b561108c7042400040000e877dbffffa320ba12088d5010 *b90000000005f003000039d072208908c7400400000000c7400800000000c7400c0000000089c1 *83e81039d073e0891524ba1208e8f2df0000a32cba1208eb6aa128ba12088d1400891528ba1208 *c74424080b561108c1e00589442404a120ba1208890424e840dbffffa320ba120889dac1e2048d *0c10bb000000008d440af039c872208918c7400400000000c7400800000000c7400c0000000089 *c383e81039c873e0890d24ba120883c4185bc357565383ec108b7c2420a128ba1208c1e0048b15 *20ba12088d34028d5a1039f373298b0385c0741c3b0520ba1208720439f072108b03894304837b *08007405891c24ffd783c31039f372d783c4105b5e5fc357565383ec108b7c2420a128ba1208c1 *e0048b1520ba12088d34028d5a1039f3732c837b0c0074088d430c890424ffd78b0385c074113b *0520ba1208720439f07205891c24ffd783c31039f372d483c4105b5e5fc357565383ec10a128ba *1208c1e0048b1520ba12088d34028d5a1039f37376837b0c00740e8b430c890424e8339f000089 *430c8b0385c074553b0520ba1208720439f07249837b08007543837b0c00753189df833b00741b *c7442408000000008b0389442404a12cba1208890424e85bdc0000a124ba12088907893d24ba12 *08eb0c8b03890424e8d79e0000890383c31039f3728a83c4105b5e5fc357565383ec108b7c2420 *85ff7428833d2cba120800741fc744240400000000a12cba1208890424e8c5dc0000e809de0000 *a32cba1208a128ba1208c1e0048b1520ba12088d34028d5a1039f30f8392000000833b00752b83 *7b0400747cc7442408000000008b430489442404a12cba1208890424e8b9db0000c74304000000 *00eb578b033b0520ba1208720439f0724985ff75238b033b4304743ec7442408000000008b4304 *89442404a12cba1208890424e87bdb000089d82b0520ba1208c1f804894424088b0389442404a1 *2cba1208890424e8dada000083c31039f30f826effffff83c4105b5e5fc3909083ec2c8d442410 *890424e881acf4ffa338ba12088b442410a33cba120883c42cc3a170ba12082b0574ba120850db *04248d642404db0530ba1208def9c383ec0ce8bbffffffa13cba12082b0574ba120850db0424db *0530ba1208def983c410c383ec6c8d44241089442404c7042400000000e849a9f4ff8b44243483 *c46cc35383ec188b1d40bb1208833d44bb1208037640895c240cc744240844000000c744240401 *000000c7042440561108e83eadf4ff895c240cc74424083a000000c744240401000000c70424a0 *561108e81eadf4ffc7442404d65a1108a170bb1208c1e002890424e8a7d7ffffa398ba1208ba00 *0000003b1570bb12087315a198ba1208c7049000000000423b1570bb120872eb83c4185bc383ec *1cc7042402000000e8dba9f4ff83f8ff7531a1041712088944240cc744240822000000c7442404 *01000000c70424e0561108e8a1acf4ffc7042401000000e8afd5ffffa330ba1208e89bfeffffa1 *38ba1208a334ba120883c41cc383ec0ce885feffffa13cba1208a340ba1208a138ba1208a348ba *1208a134ba12083b0538ba12087e0cc70544ba120800000000eb10a138ba12082b0534ba1208a3 *44ba120883c40cc383ec0ce83cfeffffa138ba1208a354ba12082b057cba12082b0548ba1208a3 *50ba120885c0790ac70550ba120800000000a13cba12082b0574ba12082b0540ba1208a34cba12 *0885c0790ac7054cba12080000000083c40cc383ec0ce8e3fdffffa13cba12082b054cba12082b *0574ba12082b0540ba1208a358ba1208a138ba12082b0554ba1208a35cba1208833d58ba120800 *790ac70558ba120800000000833d5cba120800790ac7055cba12080000000083c40cc383ec1ca1 *88bb120885c0744b83f8017631a1041712088944240cc744240804000000c744240401000000c7 *0424e05a1108e847abf4ffc70594ba120801000000eb15a10417120889442404c7042407000000 *e806a9f4ff833d44bb120800742ce828fdffffa13cba1208a370ba1208a138ba1208a378ba1208 *833d44bb120800740ae866fdffffa38cba120883c41cc383ec5c895c244c89742450897c245489 *6c24588b6c24708b3540bb1208833d44bb1208000f8465010000e8cefcffffa13cba1208894424 *488b1d38ba120889c72b3d70ba120889d82b0578ba120889442444833d44bb1208040f85c30000 *0085f60f84bb000000e8f1fcffff894424408b442468c1e002894424108b442464c1e002894424 *0c8b442460c1e00289442408c7442404e55a1108893424e8cca5f4ff896c24308b158cba120889 *d02b0590ba12088944242c8b44244029d08944242889d82b0534ba120850db04248d642404db05 *30ba1208dcf9d9c9dd5c2420db442448d8f1dd5c2418db442444d8f1dd5c241057db04248d6424 *04def1dd5c2408c744240420571108893424e85ca5f4ff8b442440a390ba1208893424e87ba5f4 *ffa198ba1208013ca88b44246cba00000000010568ba120811156cba12088b442460ba00000000 *010560ba1208111564ba1208013d74ba12088b44244401057cba1208a170bb12084839c575218b *4424683b0580ba12087605a380ba1208ff0588ba12088b442468010584ba1208833d94ba120800 *742fa1041712088944240cc744240808000000c744240401000000c70424f45a1108e830a9f4ff *c70594ba1208000000008b5c244c8b7424508b7c24548b6c245883c45cc35557565381ec8c0200 *008bbc24a00200008b3540bb1208833d44bb1208000f8491050000c744247000000000e8f1faff *ffa13cba12088944245ca138ba12082b0534ba12088944247489f899013d60ba1208111564ba12 *08db44245cd9eed9c9dae9dfe09e750a7a08c744245c01000000db442474d9eed9c9dae9dfe09e *750a7a08c744247401000000bb000000003b1d70bb1208731c8b0dacba12088b1570bb12088d04 *db8b6c811c016c24704339d372f0833d44bb120803764985f67445c7442410fc5a1108c744240c *fc5a11088d04bd0000000089442408c7442404fd5a1108893424e8a7a3f4ffd9eedd542410dd5c *2408c74424040e5b1108893424e88da3f4ff833d44bb1208020f869a03000085f60f8492030000 *c744240c010000008d9c2480000000895c2408a160ba12088b1564ba12080fa4c202c1e0028904 *2489542404e869d4ffff895c2408c744240460571108893424e833a3f4ffc744240c0100000089 *5c2408a168ba12088b156cba12080fa4c202c1e00289042489542404e82bd4ffff895c2408c744 *24041d5b1108893424e8f5a2f4ff833d88ba1208007441c744240c01000000895c2408a180ba12 *08c1e002890424c744240400000000e8ead3ffffa188ba12088944240c895c2408c7442404a057 *1108893424e8aba2f4ff89742404c704240a000000e8fba4f4ffbb000000003b1d70bb12087341 *a198ba1208db0498db0530ba1208def9dd5c2410895c240c8d14dba1acba12088b44901c894424 *08c7442404e0571108893424e856a2f4ff433b1d70bb120872bfa120bb120825ff0f0000894424 *08c744240420581108893424e82fa2f4ffdb0544ba1208db0530ba1208dcf9d9c9dd5c2410db05 *40ba1208def1dd5c2408c744240440581108893424e8ffa1f4ffdb0550ba1208db0530ba1208dc *f9d9c9dd5c2410db054cba1208def1dd5c2408c744240480581108893424e8cfa1f4ffdb057cba *1208db0530ba1208dcf9d9c9dd5c2410db0574ba1208def1dd5c2408c7442404c0581108893424 *e89fa1f4ffdb055cba1208db0530ba1208dcf9d9c9dd5c2410db0558ba1208def1dd5c2408c744 *240400591108893424e86fa1f4ffdb442474dd5c2468db0530ba1208dd442468d8f1dd5c2410db *44245cdd542460def1dd5c2408c744240440591108893424e839a1f4ffdb057cba1208db0530ba *1208dcf9d905505b1108dccadd442468d8f2defbd9cadd5c2410db0574ba1208d8f1decadc7c24 *60def9dd5c2408c744240480591108893424e8f1a0f4ff8b44245c3b0574ba12087524c744240c *010000008d84248000000089442408c7042400000000c744240400000000eb6bc744240c010000 *008d84248000000089442408a160ba12088b1564ba12080fa4c202c1e0025250df2c248d642408 *85d27906d805545b1108dd5c2478dd4424788b44245c2b0574ba120850db04248d642404db0530 *ba1208def9def9dd1c24e8d1ef000089042489542404e873d1ffff8d84248000000089442408c7 *442404c0591108893424e836a0f4ff8b44245c2b0574ba12082b0540ba120850db04248d642404 *db0530ba1208dcf9d9c9d80d505b1108db442474d8f2d8f9dd5c2410db44245cdef2def1dd5c24 *08c7442404005a1108893424e8e69ff4ff833d44bb1208020f85e400000085f60f84dc000000a1 *60ba12088b1564ba12080fa4c202c1e002894424088954240cc74424043a5b1108893424e8a79f *f4ffdb057cba1208db0530ba1208dcf9d9c9dd5c2444db0574ba1208d8f1dd5c243cdb0550ba12 *08d8f1dd5c2434db054cba1208d8f1dd5c242cdb0544ba1208d8f1dd5c2424db0540ba1208def1 *dd5c241ca120bb120825ff0f000089442418a188ba120889442414a180ba1208c1e00289442410 *833d88ba1208007415a184ba1208c1e002ba00000000f73588ba1208eb05b8000000008944240c *8b6c2470896c2408c7442404405a1108893424e8f59ef4ff893424e81d9ff4ff3b350417120874 *08893424e8dda1f4ff81c48c0200005b5e5f5dc3a1c0ba12088b15c4ba12080fa4c202c1e002c3 *90909081ec1c20000089e0050020000089580089700489780889680c8b9c24242000008b842420 *200000ffe089f089e281c2002000008b5a008b72048b7a088b6a0c81c41c200000c39090565383 *ec248b7424308b5c2434c744241800000000c744241c0000000089f185f67902f7d9497828d905 *585b1108dd442418d8c98b048bba000000005250df2c248d642408dec1dd5c24184979e0ddd8dd *442418d9eed9c9dde1dfe0ddd99e7a0274168b44243889442408dd1c24e8e1a2f4ffdd5c2418eb *02ddd885f679058074241f80dd44241883c4245b5ec383ec1c895c24188b5c242089d885db7902 *f7d850db04248d642404dd5c2410dd442410d9eed9c9dde1dfe0ddd99e7a0274168b4424248944 *2408dd1c24e884a2f4ffdd5c2410eb02ddd885db79058074241780dd4424108b5c241883c41cc3 *565383ec148b7424208b5c2424b8000000008944241089f185f67902f7d9497828d905585b1108 *d9c0d84c24108b048bba000000005250df2c248d642408dec1d95c24104979e0ddd8d9442410d9 *eed9c9dde1dfe0ddd99e7a0274168b44242889442408dd1c24e8fba1f4ffd95c2410eb02ddd885 *f679058074241380d944241083c4145b5ec383ec1c895c24188b5c242089d885db7902f7d850db *04248d642404d95c2414d9442414d9eed9c9dde1dfe0ddd99e7a0274168b44242489442408dd1c *24e89ea1f4ffd95c2414eb02ddd885db79058074241780d94424148b5c241883c41cc357565383 *ec088b5c24188b7c241cdd442420dd1c248b04248b54240489c1c7030200000085c07517f7c2ff *ffff7f750fc7430400000000c70700000000eb5cc743040200000089d0c1e81425ff0700002d33 *04000089d681e2ffff0f003dcdfbffff740881ca00001000eb1b40f7c200001000751201d285c9 *79014201c948f7c20000100074ee89078b430889088b430889500485f67903f75b0483c4085b5e *5fc383ec08891c24897424048b4c240c8b5c24108b542414c70101000000f7c2ffffff7f750fc7 *410400000000c70300000000eb55c741040100000089d0c1f81725ff0000002d96000000890389 *d681e2ffff7f003d6affffff740881ca00008000eb1a8b03408903f7c200008000750d01d248f7 *c20000800074f589038b4108891085f67903f759048b1c248b74240483c408c383ec0c895c2408 *dd442410dd1c248b14248b4c2404bb0000000089c8c1e81425ff0700003dff0700007511f7c1ff *ff0f00750485d27405bb0100000089d88b5c240883c40cc383ec0c895c2408dd442410dd1c248b *14248b4c2404bb0000000089c825ffffff7f3d0000f07f750985d27505bb0100000089d88b5c24 *0883c40cc383ec0cdd442410dd1c248b14248b4c2404b800000000f7c10000f07f7511f7c1ffff *0f00750485d27405b80100000083c40cc383ec0c895c2408dd442410dd1c248b14248b4c2404bb *0000000081f900000080750985d27505bb0100000089d88b5c240883c40cc38b542404b9000000 *0089d0c1e8173cff750df7c2ffff7f007405b90100000089c8c38b44240425ffffff7f3d000080 *7f0f94c00fb6c0c38b542404b90000000089d0c1e81784c0750df7c2ffff7f007405b901000000 *89c8c3817c2404000000800f94c00fb6c0c39090905557565383ec0c833dacba1208000f858003 *0000833d50bb1208007440a15cbb12083b0550bb12087605a350bb1208833d50bb1208007425a1 *54bb12083b0550bb12087618c70424605b1108e83ec8ffffc7042401000000e85b9df4ffe88e79 *0000c7442404f75b1108a170bb12088d04c0c1e002890424e8bcc8ffffa3acba1208bd00000000 *3b2d70bb1208733b8d44ed008b15acba12088d04828928c740104c091208c740144c091208c740 *1c00000000c7402000000000c7400c00000000453b2d70bb120872c58b15acba12088915b0ba12 *08a170bb12088d04c08d4482dca3b4ba1208833d70bb120801767ac74008010000008b1db4ba12 *08c7442404095c1108c7042450000000e828c8ffff894304bd00000000833d70bb12080174718d *5ced00c1e3028b1574bb1208a1acba1208895418088b35acba1208c7442404205c1108a174bb12 *088d0480c1e004890424e8e0c7ffff89441e0445a170bb12084839c572baeb29a1b0ba1208c740 *08010000008b1db0ba1208c7442404205c1108c7042450000000e8a9c7ffff894304bd00000000 *3b2d70bb12080f83ca000000bf000000008b15acba120889d68d04ed0000000089c301e83b7c82 *080f839b0000008d4c1d00c1e1028d04bfc1e00403440e048938c7400400000000c74034000000 *00c740080000000089ca0315acba1208895010896814c7402400000000c7402800000000c7402c *00000000c7403c00000000c7403800000000c7401800000000c7401c00000000c7404000000000 *c7404400000000c7404800000000c7402000000000c7404c00000000478b35acba12083b7c0e08 *0f8265ffffff453b2d70bb12080f8236ffffffbd00000000833d70bb12080174728b15acba1208 *89d38d04ed0000000089c601e8bf00000000837c82080174298d4c3500c1e1028b5c0b048d04bf *c1e0048d5403508954030c478b1dacba12088b440b084839c772d78b0dacba12088d54ed00c1e2 *028b5c11048d04bfc1e0048b5411288954030c45a170bb12084839c5728e833d7cbb1208007426 *833d70bb120801750ec70424c05b1108e8f4c5ffffeb0fa1b4ba12088b4004c7402001000000a1 *b4ba12088b400489400ca1acba1208c7400c00000000a1acba12088b4004a3b8ba1208e8a10000 *00c70530bc120800000000c705a0ba120800000000c7052cbc120800000000c70520bc12080000 *0000a154bb1208a328bc1208c74424087e021008c744240442021008c7042412021008e8c49af4 *ff83c40c5b5e5f5dc383ec0ce837040000890424e8daf1ffff83c40cc38b542404c7420c000000 *00a1b4ba12088b4014894208a1b4ba1208895014c38b4424048b1089500c8b15a0ba1208895008 *a3a0ba1208c383ec0c895c24088b1db8ba1208a154bb120889442404c7042400000000e8760000 *008943048b1554bb1208a1b8ba1208895008a1b8ba1208c7403000000000a1b8ba1208c7403400 *0000008b15b8ba12088b4204a3acbc12088b4204a3b0bc12088b5c240883c40cc3a1b8ba12088b *500485d2740c8b028942048b520885d275f4a1b8ba12088b50048915acbc12088b4004a3b0bc12 *08c35756538b5c24108b7c2414be0000000039fe7333e8ab76000089c289580885db740389430c *a1b8ba1208894214c7421000000000c7421c000000008b0289420489d34639fe72cdc7430c0000 *000089d85b5e5fc357565383ec108b7c24208b1db8ba12088b730839fe745b39fe7239a1b8ba12 *088b500439fe761b8b5a08c7430c000000002b7218891424e82077000089da39fe77e5a1b8ba12 *0889500439fe731c8b1db8ba120889f829f0894424048b4304890424e845ffffff894304a1b8ba *120889780883c4105b5e5fc383ec1c895c240c89742410897c2414896c24188b74242081fe3203 *0000766a8d1cb5ff0f0000c1eb0c891c24e87474000089c289c58b0db8ba12088d79188b411889 *4208c7420c000000008379180074068b411889500c892fa1b8ba120801581cc7421000000000a1 *b8ba1208894214c7421c020000008b028d04b0894204011d20bc12088b02eb7f833d2cbc120800 *74228b15a4ba12088d04b23b05a8ba12087655833d2cbc1208007408a12cbc1208895004e83e75 *000089c2a12cbc120889420889152cbc1208c7421000000000a1b8ba1208894214c7421c000000 *008b02a3a4ba12088b020500100000a3a8ba1208ff0520bc12088b15a4ba12088d04b2a3a4ba12 *0889d08b5c240c8b7424108b7c24148b6c241883c41cc38b1520bc1208c1e20aa1a8ba12082b05 *a4ba1208c1f80289d129c1833d24bc12080074158b1524bc12088b022b42040500100000c1f802 *29c189c8c3833d2cbc120800740e8b15a4ba1208a12cbc1208895004c383ec1c895c2410897424 *14897c24188b5c24208b0d24bc120881fb32030000760a891c24e867feffffeb774383e3fe85c9 *74118b41048d14988b01050010000039c27653e83e74000089c1a324bc120889c78b15b8ba1208 *8d72188b4218894108c7410c00000000837a180074068b421889480c893ec7411000000000a1b8 *ba1208894114c7411c060000008b01894104ff0520bc12088b51048d049a89410489d08b5c2410 *8b7424148b7c241883c41cc383ec0c895c24088b5c241083c305c1eb028d4302890424e8c2fdff *ffc700985d100889580483c0088b5c240883c40cc357565383ec108b7424248b442428890424e8 *baffffff89c7bb000000008b4c242089c239f3730c0fb601880243414239f372f489f883c4105b *5e5fc3c3565383ec048b35b0bc1208a1b8ba12088b5808c1e30ae872feffff8d0c188b460885c0 *740d81e9000400008b400885c075f38b168d8200100000394604730f89d02b46040500100000c1 *f80229c1ba00000000010dc0ba12081115c4ba120889c883c4045b5ec35557565383ec08bd0000 *0000833d70bb1208017522a1b8ba12088b4834c1e10a8b502c8b42042b02c1e8028d840800fcff *ffe980000000bb000000003b1d70bb12087371a1acba1208894424048b1570bb1208891424b900 *0000008d04db8b5424043b4c8208734789d78d34850000000085db750485c9742f8d0489c1e004 *89c2035437048b421c034208c1e00a8dac2800fcffff837a2c00740d8b522c8b42042b02c1e802 *01c5413b4c370872c2433b1c2472a189e883c4085b5e5f5dc35557565383ec0cc7442408000000 *00bd00000000b8000000003b0570bb120873798b15acba120889542404a170bb1208890424bb00 *0000008d44ed008b5424043b5c8208734e89d78d34850000000085ed750485db74368d049bc1e0 *048b5437048d0c028b420803421c3b44370c76168379200075108b41088b5424088d1442895424 *08eb078b410801442408433b5c370872bb453b2c2472998b44240883c40c5b5e5f5dc39083ec0c *833dc8ba120800750ae83cc40000a3c8ba120883c40cc383ec1c895c24188b5c2420891c24e83d *0000008b44242489442408895c2404a1c8ba1208890424e880c100008b5c241883c41cc383ec0c *8b44241089442404a1c8ba1208890424e872c0000083c40cc383ec1c895c2414897424188b7424 *2089742404a1c8ba1208890424e84ec0000089c385c0741d8944240889742404a1c8ba12088904 *24e8a0c10000891c24e898bfffff8b5c24148b74241883c41cc3909090833d94bb1208007e23ff *0dccba1208833dccba1208007f14a194bb1208a3ccba1208c705d8b8120801000000c383ec0cc7 *442404080510088b442410890424e831d2000083c40cc383ec0ce89cd2000083c40cc383ec0ce8 *06baffff8b1530bc120885d274468b4210a330bc1208813abc5c1008742cc702bc5c1008817a0c *44091208741dc7442404000000008b420c890424e865b8ffffe8c6b9ffffe8c0b9ffff8b1530bc *120885d275bae8b2b9ffff83c40cc357565383ec108b5c2420be0000000089da85db7417817a0c *44091208740146c702bc5c10088b521085d275e985f60f84b80000008d4603890424e8f4f9ffff *89c7c700c05d1008c7400800000000897004be0000000089da85db7418817a0c4409120874088b *420c8944b70c468b521085d275e88b1d4cbb1208893424e86db2ffff89442404c7042454d51108 *e8e9b4ffff897c2404890424e8ddb4ffff89c6891c24e800c9ffff8b48308d51fc895030c741fc *b45e10088b48308d51fc895030c741fc1c0910088b48308d51fc8950308971fc8b48308d51fc89 *5030c741fcd4351008890424e8c2c9ffff83c4105b5e5fc383ec1ca1335c11088b15375c110889 *44241089542414c7442408070000008d442410894424048b442420890424e87a8df4ff83c41cc3 *9090c390909083ec1c8b4424248944240c8b44242089442408c7442404405c1108a10417120889 *0424e8a88df4ff83c41cc3c390909083ec1c8b44242489c2c1ea148954240c89442408c7442404 *805c1108a104171208890424e8778df4ff83c41cc390909083ec0c8b44241089442408c7442404 *005d1108a104171208890424e8508df4ff83c40cc39c0710089c0710089c0710089c0710089c07 *10089c0710089c0710089c07100800000000000000002400000083c5048b060fb740fc83e80b83 *f8177711ff2485545d11088b7604ebe68b4500ffe08b06ebfa89f6000000001c00000089f20fb7 *460689442408c1e00289e929c13b4b54731083ed048b4304894500b844371008ffe08b442408c1 *e00229c58b760883c20cb9000000003b4c240873108b0283c20489448d00413b4c240872f08b06 *ebd0000000001b00000089f20fb7460689442408c1e00289e929c189c883e8083b435473058b43 *f8ffe08d45f8c700d46d10088970048b442408c1e00289e929c18d69f88b760883c20cb9000000 *003b4c240873108b0283c20489448d00413b4c240872f08b06ebbf90000000001d00000089f28b *460489442408c1e00289e929c189c883e8083b435473058b43f8ffe08d45f8c700d46d10088970 *048b442408c1e00289e929c18d69f88b760883c20cb9000000003b4c240873108b0283c2048944 *8d00413b4c240872f08b060fb740fc83e80b83f8177711ff2485b45d11088b7604ebe68b4500eb *a48b06eba09090900000000000000000240000008b1683ea080fb7420483e80b83f8260f871f01 *0000ff2485e45e11080fb7561483fa01751b83c504b8485a1008ffe00fb752fe83fa01750883c5 *04e9e500000083c70c3b7b5c7609c7436c03000000eb5cb803000000c1e00289f929c189c883c0 *04c700cc0710084a6689500489700866c74006000089c6e9960000000fb7560483fa01751183c5 *04c743041c091008b8cc071008eb96897424180fb7460683c0038d3c873b7b5c761289436cc745 *001c0910088b43f8e971ffffffc1e00289f929c183c104c701cc0710088d42ff668941048b5424 *180fb74206668941068b4208894108ba000000008b4424180fb74006894424108944241439c273 *138b4424188b44900c8944910c423b54241472ed89ce83c5048b4500e90fffffffc745001c0910 *088b06e901ffffff8b7604e9ccfeffffc70424145e1108e80cb8ffff0000000021000000240000 *008b1683ea080fb7420483e80b83f8260f87b3010000ff2485805f11080fb7561483fa01750a83 *c504b8485a1008ffe083c7103b7b5c7750b804000000c1e00289f929c183c104c701cc0710088d *42ff6689410489710866c741060100ba000000008b4495048944910c4274f5eb570fb752fe83fa *01750883c504e93a01000083c7103b7b5c7609c7436c04000000eb6fb804000000c1e00289f929 *c183c104c701cc0710088d42ff6689410489710866c741060100ba000000008b4495048944910c *4274f589cee9db0000000fb7560483fa01751483c504c74304680a1008b8cc071008e944ffffff *897424180fb7460683c0048d3c873b7b5c761289436cc74500680a10088b43f8e91fffffffc1e0 *0289f929c183c104894c2414c701cc0710088d42ff668941048b5424180fb7420640668941068b *4208894108c7442408000000000fb742068944240c3944240873218b4c24088b5424188b448a0c *8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b5424180fb752068954 *24108b4c2410034c24088b4424088b4485048b54241489448a0cff44240874e289d683c5088b45 *00e97bfeffffc74500680a10088b06e96dfeffff8b7604e938feffffc70424215e1108e82cb6ff *ff0000000062000000240000008b1683ea080fb7420483e80b83f8260f87c0010000ff24851c60 *11080fb7561483fa01750a83c504b8485a1008ffe083c7143b7b5c7753b805000000c1e00289f9 *29c183c104c701cc0710088d42ff6689410489710866c741060200ba000000008b449504894491 *0c4283fa0176f2eb5a0fb752fe83fa01750883c504e94401000083c7143b7b5c7609c7436c0500 *0000eb72b805000000c1e00289f929c183c104c701cc0710088d42ff6689410489710866c74106 *0200ba000000008b4495048944910c4283fa0176f289cee9e20000000fb7560483fa01751483c5 *04c74304480c1008b8cc071008e93effffff897424180fb7460683c0058d3c873b7b5c76128943 *6cc74500480c10088b43f8e919ffffffc1e00289f929c183c104894c2414c701cc0710088d42ff *668941048b5424180fb7420683c002668941068b4208894108c7442408000000000fb742068944 *240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c1 *72dfc7442408000000008b5424180fb75206895424108b4c2410034c24088b4424088b4485048b *54241489448a0cff442408837c24080176dd89d683c50c8b4500e96efeffffc74500480c10088b *06e960feffff8b7604e92bfeffffc704242e5e1108e83fb4ffff8d760000000000620000002400 *00008b1683ea080fb7420483e80b83f8260f87c0010000ff2485b86011080fb7561483fa01750a *83c504b8485a1008ffe083c7143b7b5c7753b805000000c1e00289f929c183c104c701cc071008 *8d42ff6689410489710866c741060200ba000000008b4495048944910c4283fa0176f2eb5a0fb7 *52fe83fa01750883c504e94401000083c7143b7b5c7609c7436c05000000eb72b805000000c1e0 *0289f929c183c104c701cc0710088d42ff6689410489710866c741060200ba000000008b449504 *8944910c4283fa0176f289cee9e20000000fb7560483fa01751483c504c74304380e1008b8cc07 *1008e93effffff897424180fb7460683c0058d3c873b7b5c761289436cc74500380e10088b43f8 *e919ffffffc1e00289f929c183c104894c2414c701cc0710088d42ff668941048b5424180fb742 *0683c002668941068b4208894108c7442408000000000fb742068944240c3944240873218b4c24 *088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b *5424180fb75206895424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408 *837c24080176dd89d683c50c8b4500e96efeffffc74500380e10088b06e960feffff8b7604e92b *feffffc704243b5e1108e84fb2ffff8d76000000000021000000240000008b1683ea080fb74204 *83e80b83f8260f87b3010000ff2485546111080fb7561483fa01750a83c504b8485a1008ffe083 *c7103b7b5c7750b804000000c1e00289f929c183c104c701cc0710088d42ff6689410489710866 *c741060100ba000000008b4495048944910c4274f5eb570fb752fe83fa01750883c504e93a0100 *0083c7103b7b5c7609c7436c04000000eb6fb804000000c1e00289f929c183c104c701cc071008 *8d42ff6689410489710866c741060100ba000000008b4495048944910c4274f589cee9db000000 *0fb7560483fa01751483c504c7430428101008b8cc071008e944ffffff897424180fb7460683c0 *048d3c873b7b5c761289436cc74500281010088b43f8e91fffffffc1e00289f929c183c104894c *2414c701cc0710088d42ff668941048b5424180fb7420640668941068b4208894108c744240800 *0000000fb742068944240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c4189 *4c24088b44240c39c172dfc7442408000000008b5424180fb75206895424108b4c2410034c2408 *8b4424088b4485048b54241489448a0cff44240874e289d683c5088b4500e97bfeffffc7450028 *1010088b06e96dfeffff8b7604e938feffffc70424485e1108e86cb0ffff000000000100000024 *0000008b1683ea080fb7420483e80b83f8260f87b3010000ff2485f06111080fb7561483fa0175 *0a83c504b8485a1008ffe083c7103b7b5c7750b804000000c1e00289f929c183c104c701cc0710 *088d42ff6689410489710866c741060100ba000000008b4495048944910c4274f5eb570fb752fe *83fa01750883c504e93a01000083c7103b7b5c7609c7436c04000000eb6fb804000000c1e00289 *f929c183c104c701cc0710088d42ff6689410489710866c741060100ba000000008b4495048944 *910c4274f589cee9db0000000fb7560483fa01751483c504c7430408121008b8cc071008e944ff *ffff897424180fb7460683c0048d3c873b7b5c761289436cc74500081210088b43f8e91fffffff *c1e00289f929c183c104894c2414c701cc0710088d42ff668941048b5424180fb7420640668941 *068b4208894108c7442408000000000fb742068944240c3944240873218b4c24088b5424188b44 *8a0c8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b5424180fb75206 *895424108b4c2410034c24088b4424088b4485048b54241489448a0cff44240874e289d683c508 *8b4500e97bfeffffc74500081210088b06e96dfeffff8b7604e938feffffc70424555e1108e88c *aeffff0000000001000000240000008b1683ea080fb7420483e80b83f8260f87fc010000ff2485 *8c6211080fb7561483fa0175148b4504894500c745041c091008b8485a1008ffe083fa02750583 *c504ebef83c7103b7b5c7767b804000000c1e00289f929c183c104c701cc0710088d42fe668941 *0489710866c741060100ba000000008b4495048944910c4274f5eb710fb752fe83fa0175128b45 *04894500c745041c091008e96501000083fa02750883c504e95801000083c7103b7b5c760cc743 *6c04000000e98a000000b804000000c1e00289f929c183c104c701cc0710088d42fe6689410489 *710866c741060100ba000000008b4495048944910c4274f589cee9f60000000fb7560483fa0175 *168b4504894500c745041c091008c7430408121008eb0f83fa02751483c504c74304e8131008b8 *cc071008e905ffffff897424180fb7460683c0048d3c873b7b5c761289436cc74500e81310088b *43f8e9e0feffffc1e00289f929c183c104894c2414c701cc0710088d42fe668941048b5424180f *b7420640668941068b4208894108c7442408000000000fb742068944240c3944240873218b4c24 *088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b *5424180fb75206895424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408 *74e289d683c5088b4500e93cfeffffc74500e81310088b06e92efeffff8b7604e9effdffffc704 *24625e1108e863acffff8d76000000000002000000240000008b1683ea080fb7420483e80b83f8 *260f8709020000ff2485286311080fb7561483fa0175148b4504894500c7450408121008b8485a *1008ffe083fa02750583c504ebef83c7143b7b5c776ab805000000c1e00289f929c183c104c701 *cc0710088d42fe6689410489710866c741060200ba000000008b4495048944910c4283fa0176f2 *eb740fb752fe83fa0175128b4504894500c7450408121008e96f01000083fa02750883c504e962 *01000083c7143b7b5c760cc7436c05000000e98d000000b805000000c1e00289f929c183c104c7 *01cc0710088d42fe6689410489710866c741060200ba000000008b4495048944910c4283fa0176 *f289cee9fd0000000fb7560483fa0175168b4504894500c7450408121008c7430408121008eb0f *83fa02751483c504c7430414161008b8cc071008e9fffeffff897424180fb7460683c0058d3c87 *3b7b5c761289436cc74500141610088b43f8e9dafeffffc1e00289f929c183c104894c2414c701 *cc0710088d42fe668941048b5424180fb7420683c002668941068b4208894108c7442408000000 *000fb742068944240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24 *088b44240c39c172dfc7442408000000008b5424180fb75206895424108b4c2410034c24088b44 *24088b4485048b54241489448a0cff442408837c24080176dd89d683c50c8b4500e92ffeffffc7 *4500141610088b06e921feffff8b7604e9e2fdffffc70424705e1108e82aaaffff89f600000000 *02000000240000008b1683ea080fb7420483e80b83f8260f8768020000ff2485c46311080fb756 *1483fa0175148b4504894500c74504e8131008b8485a1008ffe083fa0275158b45048945008b45 *08894504c745081c091008ebdf83fa03750583c504ebd583c7143b7b5c0f878a000000b8050000 *00c1e00289f929c183c104c701cc0710088d42fd6689410489710866c741060200ba000000008b *4495048944910c4283fa0176f2e9910000000fb752fe83fa0175128b4504894500c74504e81310 *08e9ad01000083fa0275188b45048945008b4508894504c745081c091008e99001000083fa0375 *0883c504e98301000083c7143b7b5c760cc7436c05000000e9ae000000b805000000c1e00289f9 *29c183c104c701cc0710088d42fd6689410489710866c741060200ba000000008b449504894491 *0c4283fa0176f289cee91e0100000fb7560483fa0175168b4504894500c74504e8131008c74304 *08121008eb3083fa02751c8b45048945008b4508894504c745081c091008c7430414161008eb0f *83fa03751483c504c743044c181008b8cc071008e9a0feffff897424180fb7460683c0058d3c87 *3b7b5c761289436cc745004c1810088b43f8e97bfeffffc1e00289f929c183c104894c2414c701 *cc0710088d42fd668941048b5424180fb7420683c002668941068b4208894108c7442408000000 *000fb742068944240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24 *088b44240c39c172dfc7442408000000008b5424180fb75206895424108b4c2410034c24088b44 *24088b4485048b54241489448a0cff442408837c24080176dd89d683c50c8b4500e9d0fdffffc7 *45004c1810088b06e9c2fdffff8b7604e983fdffffc704247e5e1108e893a7ffff8d7600000000 *0003000000240000008b1683ea080fb7420483e80b83f8260f8768020000ff2485606411080fb7 *561483fa0175148b4504894500c7450414161008b8485a1008ffe083fa0275158b45048945008b *4508894504c7450808121008ebdf83fa03750583c504ebd583c7183b7b5c0f878a000000b80600 *0000c1e00289f929c183c104c701cc0710088d42fd6689410489710866c741060300ba00000000 *8b4495048944910c4283fa0276f2e9910000000fb752fe83fa0175128b4504894500c745041416 *1008e9ad01000083fa0275188b45048945008b4508894504c7450808121008e99001000083fa03 *750883c504e98301000083c7183b7b5c760cc7436c06000000e9ae000000b806000000c1e00289 *f929c183c104c701cc0710088d42fd6689410489710866c741060300ba000000008b4495048944 *910c4283fa0276f289cee91e0100000fb7560483fa0175168b4504894500c7450414161008c743 *0408121008eb3083fa02751c8b45048945008b4508894504c7450808121008c7430414161008eb *0f83fa03751483c504c74304e41a1008b8cc071008e9a0feffff897424180fb7460683c0068d3c *873b7b5c761289436cc74500e41a10088b43f8e97bfeffffc1e00289f929c183c104894c2414c7 *01cc0710088d42fd668941048b5424180fb7420683c003668941068b4208894108c74424080000 *00000fb742068944240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c *24088b44240c39c172dfc7442408000000008b5424180fb75206895424108b4c2410034c24088b *4424088b4485048b54241489448a0cff442408837c24080276dd89d683c5108b4500e9d0fdffff *c74500e41a10088b06e9c2fdffff8b7604e983fdffffc704248d5e1108e8fba4ffff8d76000000 *000004000000240000008b1683ea080fb7420483e80b83f8260f87d2020000ff2485fc6411080f *b7561483fa0175148b4504894500c74504e41a1008b8485a1008ffe083fa0275158b4504894500 *8b4508894504c7450814161008ebdf83fa03751b8b45048945008b45088945048b450c894508c7 *450c08121008ebbf83fa04750583c504ebb583c71c3b7b5c0f87ad000000b807000000c1e00289 *f929c183c104c701cc0710088d42fc6689410489710866c741060400ba000000008b4495048944 *910c4283fa0376f2e9b40000000fb752fe83fa0175128b4504894500c74504e41a1008e9f70100 *0083fa0275188b45048945008b4508894504c7450814161008e9da01000083fa03751e8b450489 *45008b45088945048b450c894508c7450c08121008e9b701000083fa04750883c504e9aa010000 *83c71c3b7b5c760cc7436c07000000e9d5000000b807000000c1e00289f929c183c104c701cc07 *10088d42fc6689410489710866c741060400ba000000008b4495048944910c4283fa0376f289ce *e9450100000fb7560483fa0175168b4504894500c74504e41a1008c7430408121008eb5783fa02 *751c8b45048945008b4508894504c7450814161008c7430414161008eb3683fa0375228b450489 *45008b45088945048b450c894508c7450c08121008c74304e41a1008eb0f83fa04751483c504c7 *43047c1d1008b8cc071008e936feffff897424180fb7460683c0078d3c873b7b5c761289436cc7 *45007c1d10088b43f8e911feffffc1e00289f929c183c104894c2414c701cc0710088d42fc6689 *41048b5424180fb7420683c004668941068b4208894108c7442408000000000fb742068944240c *3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c172df *c7442408000000008b5424180fb75206895424108b4c2410034c24088b4424088b4485048b5424 *1489448a0cff442408837c24080376dd89d683c5148b4500e966fdffffc745007c1d10088b06e9 *58fdffff8b7604e919fdffffc704249c5e1108e8f9a1ffff900000000005000000240000008b16 *83ea080fb7420483e80b83f8260f8751030000ff2485986511080fb7561483fa0175148b450489 *4500c745047c1d1008b8485a1008ffe083fa0275158b45048945008b4508894504c74508e41a10 *08ebdf83fa03751b8b45048945008b45088945048b450c894508c7450c14161008ebbf83fa0475 *218b45048945008b45088945048b450c8945088b451089450cc7451008121008eb9983fa057505 *83c504eb8f83c7203b7b5c0f87d6000000b808000000c1e00289f929c183c104c701cc0710088d *42fb6689410489710866c741060500ba000000008b4495048944910c4283fa0476f2e9dd000000 *0fb752fe83fa0175128b4504894500c745047c1d1008e95002000083fa0275188b45048945008b *4508894504c74508e41a1008e93302000083fa03751e8b45048945008b45088945048b450c8945 *08c7450c14161008e91002000083fa0475248b45048945008b45088945048b450c8945088b4510 *89450cc7451008121008e9e701000083fa05750883c504e9da01000083c7203b7b5c760cc7436c *08000000e905010000b808000000c1e00289f929c183c104c701cc0710088d42fb668941048971 *0866c741060500ba000000008b4495048944910c4283fa0476f289cee9750100000fb7560483fa *0175198b4504894500c745047c1d1008c7430408121008e98400000083fa02751c8b4504894500 *8b4508894504c74508e41a1008c7430414161008eb6383fa0375228b45048945008b4508894504 *8b450c894508c7450c14161008c74304e41a1008eb3c83fa0475288b45048945008b4508894504 *8b450c8945088b451089450cc7451008121008c743047c1d1008eb0f83fa05751483c504c74304 *7c201008b8cc071008e9b7fdffff897424180fb7460683c0088d3c873b7b5c761289436cc74500 *7c2010088b43f8e992fdffffc1e00289f929c183c104894c2414c701cc0710088d42fb66894104 *8b5424180fb7420683c005668941068b4208894108c7442408000000000fb742068944240c3944 *240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c172dfc744 *2408000000008b5424180fb75206895424108b4c2410034c24088b4424088b4485048b54241489 *448a0cff442408837c24080476dd89d683c5188b4500e9e7fcffffc745007c2010088b06e9d9fc *ffff8b7604e99afcffffc70424ac5e1108e87a9effff89f60000000006000000240000008b1683 *ea080fb7420483e80b83f8260f87fc030000ff2485346611080fb74e1483f90175148b45048945 *00c745047c201008b8485a1008ffe083f90275158b45048945008b4508894504c745087c1d1008 *ebdf83f903751b8b45048945008b45088945048b450c894508c7450ce41a1008ebbf83f9047521 *8b45048945008b45088945048b450c8945088b451089450cc7451014161008eb9983f905752a8b *45048945008b45088945048b450c8945088b451089450c8b4514894510c7451408121008e96aff *ffff83f906750883c504e95dffffff83c7243b7b5c0f870d010000b809000000c1e00289fa29c2 *83c20489542428c702cc0710088d41fa6689420489720866c742060600ba000000008b4495048b *4c24288944910c4283fa0576eee9140100000fb74afe83f90175128b4504894500c745047c2010 *08e9c102000083f90275188b45048945008b4508894504c745087c1d1008e9a402000083f90375 *1e8b45048945008b45088945048b450c894508c7450ce41a1008e98102000083f90475248b4504 *8945008b45088945048b450c8945088b451089450cc7451014161008e95802000083f905752a8b *45048945008b45088945048b450c8945088b451089450c8b4514894510c7451408121008e92902 *000083f906750883c504e91c02000083c7243b7b5c760cc7436c09000000e943010000b8090000 *00c1e00289fa29c283c20489542424c702cc0710088d41fa6689420489720866c742060600ba00 *0000008b4495048b4c24248944910c4283fa0576ee89cee9af0100000fb74e0483f90175198b45 *04894500c745047c201008c7430408121008e9ba00000083f902751f8b45048945008b45088945 *04c745087c1d1008c7430414161008e99600000083f90375228b45048945008b45088945048b45 *0c894508c7450ce41a1008c74304e41a1008eb6f83f90475288b45048945008b45088945048b45 *0c8945088b451089450cc7451014161008c743047c1d1008eb4283f905752e8b45048945008b45 *088945048b450c8945088b451089450c8b4514894510c7451408121008c743047c201008eb0f83 *f906751483c504c74304fc231008b8cc071008e910fdffff897424100fb7460683c0098d3c873b *7b5c761289436cc74500fc2310088b43f8e9ebfcffffc1e00289fa29c283c20489542420c702cc *0710088d41fa668942048b4c24100fb7410683c006668942068b4108894208c744240800000000 *0fb741068944241c3944240873258b4424088b5424108b44820c8b5424088b4c24208944910c42 *895424088b44241c39c272dbc7442408000000008b5424100fb75206895424188b4c2418034c24 *088b4424088b4485048b54242089448a0cff442408837c24080576dd89d683c51c8b4500e93cfc *ffffc74500fc2310088b06e92efcffff8b7604e9effbffffc70424bd5e1108e84f9affff8d7600 *0000000007000000240000008b1683ea080fb7420483e80b83f8260f87a2040000ff2485d06611 *080fb74e1483f90175148b4504894500c74504fc231008b8485a1008ffe083f90275158b450489 *45008b4508894504c745087c201008ebdf83f903751b8b45048945008b45088945048b450c8945 *08c7450c7c1d1008ebbf83f90475218b45048945008b45088945048b450c8945088b451089450c *c74510e41a1008eb9983f905752a8b45048945008b45088945048b450c8945088b451089450c8b *4514894510c7451414161008e96affffff83f90675308b45048945008b45088945048b450c8945 *088b451089450c8b45148945108b4518894514c7451808121008e935ffffff83f907750883c504 *e928ffffff83c7283b7b5c0f8742010000b80a000000c1e00289fa29c283c20489542428c702cc *0710088d41f96689420489720866c742060700ba000000008b4495048b4c24288944910c4283fa *0676eee9490100000fb74afe83f90175128b4504894500c74504fc231008e93203000083f90275 *188b45048945008b4508894504c745087c201008e91503000083f903751e8b45048945008b4508 *8945048b450c894508c7450c7c1d1008e9f202000083f90475248b45048945008b45088945048b *450c8945088b451089450cc74510e41a1008e9c902000083f905752a8b45048945008b45088945 *048b450c8945088b451089450c8b4514894510c7451414161008e99a02000083f90675308b4504 *8945008b45088945048b450c8945088b451089450c8b45148945108b4518894514c74518081210 *08e96502000083f907750883c504e95802000083c7283b7b5c760cc7436c0a000000e97f010000 *b80a000000c1e00289fa29c283c20489542424c702cc0710088d41f96689420489720866c74206 *0700ba000000008b4495048b4c24248944910c4283fa0676ee89cee9eb0100000fb74e0483f901 *75198b4504894500c74504fc231008c7430408121008e9f600000083f902751f8b45048945008b *4508894504c745087c201008c7430414161008e9d200000083f90375258b45048945008b450889 *45048b450c894508c7450c7c1d1008c74304e41a1008e9a800000083f90475288b45048945008b *45088945048b450c8945088b451089450cc74510e41a1008c743047c1d1008eb7b83f905752e8b *45048945008b45088945048b450c8945088b451089450c8b4514894510c7451414161008c74304 *7c201008eb4883f90675348b45048945008b45088945048b450c8945088b451089450c8b451489 *45108b4518894514c7451808121008c74304fc231008eb0f83f907751483c504c7430428281008 *b8cc071008e96afcffff897424100fb7460683c00a8d3c873b7b5c761289436cc7450028281008 *8b43f8e945fcffffc1e00289fa29c283c20489542420c702cc0710088d41f9668942048b4c2410 *0fb7410683c007668942068b4108894208c7442408000000000fb741068944241c394424087325 *8b4424088b5424108b44820c8b5424088b4c24208944910c42895424088b44241c39c272dbc744 *2408000000008b5424100fb75206895424188b4c2418034c24088b4424088b4485048b54242089 *448a0cff442408837c24080676dd89d683c5208b4500e996fbffffc74500282810088b06e988fb *ffff8b7604e949fbffffc70424cf5e1108e87d95ffff90ff2689f683ed0c897508c74504000000 *00c74500bc3b1008e98b0900008d7600ff2689f683ed0c897508c7450400000000c74500bc3b10 *08e96b0900008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e94b0900008d *7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e92b0900008d7600ff2689f683 *ed0c897508c7450400000000c74500bc3b1008e90b0900008d7600ff2689f683ed0c897508c745 *0400000000c74500bc3b1008e9eb0800008d7600ff2689f683ed0c897508c7450400000000c745 *00bc3b1008e9cb0800008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e9ab *0800008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e98b0800008d7600ff *2689f683ed0c897508c7450400000000c74500bc3b1008e96b0800008d7600ff2689f683ed0c89 *7508c7450400000000c74500bc3b1008e94b0800008d7600ff2689f683ed0c897508c745040000 *0000c74500bc3b1008e92b0800008d7600ff2689f683ed0c897508c7450400000000c74500bc3b *1008e90b0800008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e9eb070000 *8d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e9cb0700008d7600ff2689f6 *83ed0c897508c7450400000000c74500bc3b1008e9ab0700008d7600ff2689f683ed0c897508c7 *450400000000c74500bc3b1008e98b0700008d7600ff2689f683ed0c897508c7450400000000c7 *4500bc3b1008e96b0700008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e9 *4b0700008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e92b0700008d7600 *ff2689f683ed0c897508c7450400000000c74500bc3b1008e90b0700008d7600ff2689f683ed0c *897508c7450400000000c74500bc3b1008e9eb0600008d7600000000000000000000000000ec2c *10080c2d10082c2d10084c2d10086c2d10088c2d1008ac2d1008cc2d1008ec2d10080000000000 *000000000000000c2e10082c2e10084c2e10086c2e10088c2e1008ac2e1008cc2e1008ec2e1008 *0c2f10082c2f10084c2f10086c2f10088c2f1008000000000000000000000000f02c1008102d10 *08302d1008502d1008702d1008902d1008b02d1008d02d1008f02d100800000000000000000000 *0000102e1008302e1008502e1008702e1008902e1008b02e1008d02e1008f02e1008102f100830 *2f1008502f1008702f1008902f1008000000000000000000000000210000000100000021000000 *620000006200000062000000220000004200000002000000000000000000000000000000e30000 *0063000000a300000023000000c300000043000000830000000300000004000000050000000600 *000007000000080000008d45f83b43547315c74320fe000000c74324fc301008b8843c1008ffe0 *8b436083781800751fc7401848091208817d00e4311008750583c504eb0a83ed04c74500583110 *0883ed04b81c091008ebcc900000000000000000240000008b43608b4018890424e82aa3ffff8b *4360c740180000000083c504ff650089f68d45f83b43547315c74320fe000000c7432478311008 *b8843c1008ffe08b436083781800742d8b4018890424e8e7a2ffff8b4360c7401800000000817d *0058311008750583c504eb0a83ed04c74500e431100883ed04b81c091008ebbe8d760000000000 *00000000240000008b4360c740184809120883c504ff650066837e1003750a8b760466837e1003 *74f6837e180074590fb7461283f801740d83f801720f83e80383f8037707b801000000eb05b800 *00000085c075338b53608b46188942048b43608946188b436066c7401203008b4360897014c743 *20fc000000c74324f4311008b8c4401008ffe03b7360755d8b43608968308b53688d4704894204 *8b430489442404893424e879a4ffff8b43606683781002750cbe04000000b829f60f08ebc58b43 *608b683005880000008943548b43688b780483ef0489c28b4018c1e00c030283e80489435ceb0f *8b430489442404893424e82ba4ffff8b4500eb8889f64d331008443310083b3310083233100829 *33100820331008173310080e33100800000000220000002b00000083c50cff650083c50c8b4500 *ff60f083c50c8b4500ff60ec83c50c8b4500ff60e883c50c8b4500ff60e483c50c8b4500ff60e0 *83c50c8b4500ff60dc83c50c8b4500ff60d883c50c8b4500ff60d489f6020000000b0000008b46 *088943048b7604e90200000089f68d45f03b43547315c74320fc000000c7432470331008b8843c *1008ffe083ed0cc74500083310088b43048945088b4360837818000f95c00fb6c089450483ed04 *b81c091008ebd49001000000120000008b7604e900000000c7042403000000e81cccffff894424 *14c700c03310088b442414897004896c24188b5424188b0a83e90c894c240c0fb7410883e82383 *f806773bff24856c6711088b420489c2c1ea18c1e81025ff0000008d441015eb298b420483c003 *eb218b54240c8b42048b00eb158b42048b401883c002eb0b8b54240c8b420483e01f408b542418 *8d0482894424100fb7410883f82b0f841901000083f82b7f0a83f82a7413e9fd00000083f82c0f *84c3000000e9ef0000008b5424188b42048138dc5b1008750b8b4004890424e8f99fffff8b4424 *188b480489c82500f00f00c1e80789ca81e20000f0ff09d0894424088378100075168b54241489 *51048b5424188b4204c700645a1008eb5c8b5424188b42048b5424148950048b4424188b480481 *39dc5b100874328b5424088b42108d04c08b15acba12088b4482148941088b5424088b42108d04 *c08b5424188b4a048b15acba1208894c82148b5424188b4204c700445b10088b44241089442418 *e9aefeffff8b43608b50288d6c90308975008b436066c7401002008b43608968308b53688d4704 *894204be04000000b829f60f08ffe08b54241089542418e970feffff8b4424188b500889c583c5 *0c83780400750a83ed04c74500583110088b4360837818007507c740184809120883ed08c74504 *1c09100889750089d683ed04b808121008ebac89f6e903feffff90909000000000010000002400 *00008b750483c5088b060fb740fc83e80b83f8177711ff2485886711088b7604ebe68b4500ffe0 *8b06ebfa8d760083ed08897504c74500d43510083b7b5c765b8b436cc1e00229c7817b6c000400 *0077438b43688d57048950048b43688378080074318b40088943688b780483ef0489c28b4018c1 *e00c030283e80489435c833dd8b81208007407be02000000eb118b4500ffe0be00000000eb05be *010000008b43608968308b53688d47048942048b436066c740100000b829f60f08ebd38d76003b *7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b4368837808007431 *8b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8b81208007407be02 *000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b43 *6066c740100000b829f60f08ebd300000000000000002400000083c504ff650089f60000000001 *000000240000008b750483c508ff65008d760083ed08897504c74500383710083b7b5c765b8b43 *6cc1e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b4008894368 *8b780483ef0489c28b4018c1e00c030283e80489435c833dd8b81208007407be02000000eb118b *4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066c7401000 *00b829f60f08ebd38d76000000000021000000240000008b750483c508ff65008d760083ed0889 *7504c74500e43710083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950 *048b43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c83 *3dd8b81208007407be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b *53688d47048942048b436066c740100000b829f60f08ebd38d7600000000002100000024000000 *8b4504894424088b44240889432883c508ff650083ed088b4328894424088b442408894504c745 *00903810083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b4368 *8378080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8b812 *08007407be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47 *048942048b436066c740100000b829f60f08ebd3000000006200000024000000dd4504dd1c24dd *0424dd5b3883c50cff650089f683ed0cdd4338dd1c24dd0424dd5d04c745004c3910083b7b5c76 *5b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b4008 *8943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8b81208007407be02000000 *eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066c7 *40100000b829f60f08ebd389f6000000006200000024000000c744240400000000c70424000000 *008d45048b108914248b4004894424048b04248b54240489434889534c83c50cff65008d760083 *ed0c8d4d048b43488b534c8901895104c74500083a10083b7b5c765b8b436cc1e00229c7817b6c *0004000077438b43688d57048950048b43688378080074318b40088943688b780483ef0489c28b *4018c1e00c030283e80489435c833dd8b81208007407be02000000eb118b4500ffe0be00000000 *eb05be010000008b43608968308b53688d47048942048b436066c740100000b829f60f08ebd300 *000000010000002400000083c504ff650489f68b0683e8186683780c0075058b4004eb19668378 *0c0175078b40048b00eb0e0fb7400c8b04858c30100883e01f83ed0c897508894504c74500bc3b *10083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b4368837808 *0074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8b812080074 *07be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942 *048b436066c740100000b829f60f08ebd38d76000000000000000000290000008b750883c50cff *26000000000000000028000000c744240400000000c70424000000008d454c8b108914248b4004 *894424048b04248b54240489434889534cdd4544dd5c2410dd442410dd5b40dd453cdd5c2410dd *442410dd5b388b45388944240c8b44240c8943348b45348944240c8b44240c8943308b45308944 *240c8b44240c89432c8b452c8944240c8b44240c8943288b452889431c8b45248943188b452089 *43148b451c8943108b451889430c8b45148943088b45108943048b750c83c554ff65b489f683ed *548d4d4c8b43488b534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c2410dd4424 *10dd5d3c8b43348944240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c *8b44240c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b4314894520 *8b431089451c8b430c8945188b43088945148b430489451089750c8b43248945088b4320894504 *c74500d03b10083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b *43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8 *b81208007407be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b5368 *8d47048942048b436066c740100000b829f60f08ebd38d76000fb643220fb6532301d08b448500 *89432483ed548d4d4c8b43488b534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c *2410dd442410dd5d3c8b43348944240c8b44240c8945388b43308944240c8b44240c8945348b43 *2c8944240c8b44240c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b *43148945208b431089451c8b430c8945188b43088945148b430489451089750c8b43248945088b *4320894504c74500d03b10083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57 *048950048b43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489 *435c833dd8b81208007407be02000000eb118b4500ffe0be00000000eb05be010000008b436089 *68308b53688d47048942048b436066c740100000b829f60f08ebd389f683ed548d4d4c8b43488b *534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c2410dd442410dd5d3c8b433489 *44240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c8945308b *43288944240c8b44240c89452c8b431c8945288b43188945248b43148945208b431089451c8b43 *0c8945188b43088945148b430489451089750c8b43248945088b4320894504c74500d03b10088b *43608968308b53688d47048942048b436066c740100000be00000000e976b6ffff9083ed548d4d *4c8b43488b534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c2410dd442410dd5d *3c8b43348944240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b4424 *0c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b43148945208b4310 *89451c8b430c8945188b43088945148b430489451089750c8b43248945088b4320894504c74500 *d03b10088b43608968308b53688d47048942048b436066c740100000be02000000e9aeb5ffff90 *8b43608968308b53688d47048942048b436066c740100000be02000000e98bb5ffff89f68b4360 *8968308b53688d47048942048b436066c740100100be02000000e967b5ffff89f683ed548d4d4c *8b43488b534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c2410dd442410dd5d3c *8b43348944240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c *8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b43148945208b431089 *451c8b430c8945188b43088945148b430489451089750c8b43248945088b4320894504c74500d0 *3b10088b43608968308b53688d47048942048b436066c740100000be03000000e99eb4ffff908b *43608968308b53688d47048942048b436066c740100000be03000000e97bb4ffff89f683ed0889 *7504c74500d43510088b43608968308b53688d47048942048b436066c740100000be03000000e9 *4ab4ffff900000000001000000240000008b750483c508e9351100009083ed08897504c74500ec *4110088b43608968308b53688d47048942048b436066c740100000be03000000e902b4ffff9000 *00000002000000240000008b45088943048b750483c50ce9371200008d760083ed0c8b43048945 *08897504c74500344210088b43608968308b53688d47048942048b436066c740100000be030000 *00e9acb3ffff909090a120bc12083b0528bc12087215c74320ff000000c7432480421008b8ec3e *1008ffe08d4603c1e8028944240883c002890424e839bdffffc700985d10088b54240889500489 *c68b4500ebd590a120bc12083b0528bc12087215c74320ff000000c74324cc421008b8ec3e1008 *ffe08d4603c1e8028944240883c002890424e85dbeffffc700985d10088b54240889500489c68b *4500ebd59089742414a120bc12083b0528bc12087215c74320fd000000c7432418431008b8ec3e *1008ffe08b44241483c00389442418890424e89fbcffff89c1c700ac5d10088b5424148950048b *4304894424108d410c8b542418c1e2028954240c8d140a39d073198b54240c01ca895424088b54 *2410891083c0043b44240872f189ce8b4500eba083c70c3b7b5c761cc7436c03000000c74320fe *000000c743249c431008b8843c1008ffe08d47f8c700d45d100889700489c68b4500ebeb9083c7 *243b7b5c761cc7436c09000000c74320fc000000c74324d4431008b8843c1008ffe08b4e048d47 *f8c7008c6b10088b53048950048948088d50f4c740f40c5f10088942048956048d50e8c740e898 *5f100889420489d68b4500ebc58d760083c7083b7b5c761cc7436c02000000c74320ff000000c7 *432434441008b8843c1008ffe08d47fcc700e45c100889700489c68b4500ebeb90c706ac5d1008 *837e080075458974240889f181e100f00f00c1e90789f0250000f0ff09c18379100074278b4110 *8d04c08b15acba12088b4482108946088b41108d04c08b15acba12088b4c2408894c8210ff6500 *837b08007507c743084409120883c7143b7b5c761cc7436c05000000c74320f8000000c74324c0 *441008b8843c1008ffe08d47f0c700a85c10088970048b53048950088b530889500c8b1530bc12 *08895010a330bc120889c68b4500ebd189f6813ebc5c10087514be00000000c745fc4409120883 *ed048b4504ffe0c706bc5c10088b4e0c8b461089460481f94409120874d5be01000000894dfceb *d78d760089f0813ea85c1008750aba010000008b4608eb05ba0000000089d68945fc83ed04ff65 *0489f083c70c3b7b5c761cc7436c03000000c74320ff000000c7432484451008b8843c1008ffe0 *8d57f8c702985d1008c742040100000085f67909b9fffffffff7d8eb0eb90000000085f67e07b9 *01000000890789ce8955fc83ed048b4504ebc483c70c3b7b5c761cc7436c03000000c74320ff00 *0000c74324e4451008b8843c1008ffe08d47f8c700985d1008c7400401000000b90000000085f6 *7407b901000000893789ce8945fc83ed048b4504ebd18d76008b43488b534c8944243089542434 *c744242c0000000083e80183daff83fa017211770583f8fe760ac744242802000000eb08c74424 *28010000008b5424288d7c97083b7b5c761d89d083c00289436cc74320ff000000c74324384610 *08b8843c1008ffe08b442428c1e00289fa29c283ea0489542424c702985d10088b442428894204 *837c2434007915c744242c01000000f75c24308354243400f75c2434c744240800000000c74424 *0c010000008b4424308b54243489042489542404e895a10000894424188954241c837c24280275 *12b9020000008b5424308957fc8b442418eb18b9000000008b5424340b542430740bb901000000 *8b4424308907837c242c007402f7d989ce8b5424248955fc83ed048b4504e947ffffff908b4348 *8b534c894424208954242483fa0119d283c2028d7c97083b7b5c761b8d420289436cc74320ff00 *0000c7432454471008b8843c1008ffe08d04950000000089f929c183e904894c241cc701985d10 *08895104c744240800000000c744240c010000008b4424208b54242489042489542404e8c3a000 *00837c2424007610ba020000008b4c2420894ffc8907eb1aba000000008b4424240b442420740b *ba010000008b4c2420890f89d68b44241c8945fc83ed048b4504e97affffff89f6a120bc12083b *0528bc12087215c74320f5000000c7432414481008b8ec3e1008ffe08b53048b4b0c8b43088944 *241c8b4204894424408974244483c208895424488b4104894424308b44241c8944243483c10889 *4c24388d442420890424e8b54df4ff8d442430894424088d442440894424048d442420890424e8 *594ef4ff8b7424248b44242883e8088945fc83ed048b4504eb8b8d7600a120bc12083b0528bc12 *087215c74320f5000000c74324ac481008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b42 *04894424408974244483c208895424488b4104894424308b44241c8944243483c108894c24388d *442420890424e81d4df4ff8d442430894424088d442440894424048d442420890424e86150f4ff *8b7424248b44242883e8088945fc83ed048b4504eb8b8d7600a120bc12083b0528bc12087215c7 *4320f5000000c7432444491008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b4204894424 *408974244483c208895424488b4104894424308b44241c8944243483c108894c24388d44242089 *0424e8854cf4ff8d442430894424088d442440894424048d442420890424e8e94bf4ff8b742424 *8b44242883e8088945fc83ed048b4504eb8b8d7600a120bc12083b0528bc12087215c74320f500 *0000c74324dc491008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b420489442440897424 *4483c208895424488b4104894424308b44241c8944243483c108894c24388d442420890424e8ed *4bf4ff8d442430894424088d442440894424048d442420890424e8414bf4ff8b7424248b442428 *83e8088945fc83ed048b4504eb8b8d7600a120bc12083b0528bc12087215c74320f5000000c743 *24744a1008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b4204894424408974244483c208 *895424488b4104894424308b44241c8944243483c108894c24388d442420890424e8554bf4ff8d *442430894424088d442440894424048d442420890424e8f94df4ff8b7424248b44242883e80889 *45fc83ed048b4504eb8b8d7600a120bc12083b0528bc12087215c74320f5000000c743240c4b10 *08b8ec3e1008ffe08b53048b4b0c8b43088944241c8b4204894424408974244483c20889542448 *8b4104894424308b44241c8944243483c108894c24388d442420890424e8bd4af4ff8d44243089 *4424088d442440894424048d442420890424e8e14bf4ff8b7424248b44242883e8088945fc83ed *048b4504eb8b8d7600a120bc12083b0528bc12087215c74320f5000000c74324a44b1008b8ec3e *1008ffe08b53048b4b0c8b43088944241c8b4204894424408974244483c208895424488b410489 *4424308b44241c8944243483c108894c24388d442420890424e8254af4ff8d442430894424088d *442440894424048d442420890424e82948f4ff8b7424248b44242883e8088945fc83ed048b4504 *eb8b8d7600a120bc12083b0528bc12087215c74320f5000000c743243c4c1008b8ec3e1008ffe0 *8b53048b4b0c8b43088944241c8b4204894424408974244483c208895424488b4104894424308b *44241c8944243483c108894c24388d442420890424e88d49f4ff8d442430894424088d44244089 *4424048d442420890424e8b149f4ff8b7424248b44242883e8088945fc83ed048b4504eb8b8d76 *00a120bc12083b0528bc12087215c74320f5000000c74324d44c1008b8ec3e1008ffe08b53048b *4b0c8b43088944241c8b4204894424408974244483c208895424488b4104894424308b44241c89 *44243483c108894c24388d442420890424e8f548f4ff8d442430894424088d442440894424048d *442420890424e85949f4ff8b7424248b44242883e8088945fc83ed048b4504eb8b8d7600a120bc *12083b0528bc12087215c74320f5000000c743246c4d1008b8ec3e1008ffe08b53048b4b0c8b43 *088944241c8b4204894424408974244483c208895424488b4104894424308b44241c8944243483 *c108894c24388d442420890424e85d48f4ff8d442430894424088d442440894424048d44242089 *0424e85148f4ff8b7424248b44242883e8088945fc83ed048b4504eb8b8d7600a120bc12083b05 *28bc12087215c74320fd000000c74324044e1008b8ec3e1008ffe08b43048b5004895424208974 *242483c008894424288d442410890424e8e547f4ff8d442420894424048d442410890424e8a147 *f4ff8b7424148b44241883e8088945fc83ed048b4504ebb38d7600a120bc12083b0528bc120872 *15c74320f5000000c74324744e1008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b420489 *4424508974245483c208895424588b4104894424408b44241c8944244483c108894c24488d4424 *30890424e85547f4ff8d442420890424e84947f4ff8d4424408944240c8d442450894424088d44 *2420894424048d442430890424e82548f4ff8b7424348b4424248945f48b44243883e8088945f8 *8b44242883e8088945fc83ed0c8b450ce963ffffff8d7600a120bc12083b0528bc12087215c743 *20f5000000c74324344f1008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b420489442450 *8974245483c208895424588b4104894424408b44241c8944244483c108894c24488d4424308904 *24e89546f4ff8d442420890424e88946f4ff8d4424408944240c8d442450894424088d44242089 *4424048d442430890424e83547f4ff8b7424348b4424248945f48b44243883e8088945f88b4424 *2883e8088945fc83ed0c8b450ce963ffffff8d7600897424188b430489442408c7442404010000 *008d442418890424e8d947f4ff89c6ff65008b430889442408897424048b430483c008890424e8 *bb47f4ff89c6ff650089f689f1b8000000008b530885d27e07b801000000eb0b85d27907b8ffff *fffff7da39c1740989ce29c68b4500ffe085c9740a8b43048b400839d07507be00000000ebe689 *ce39d077e089cef7deebda89f6897424188b430839c6740729c68b4500ffe0837c241800742c8b *442418890424e86f48f4ff8b4b0483c1088b530c83c2088944240889542404890c24e80343f4ff *85c07507be00000000ebc1334424180f99c00fb6c08d7400ffebb1b80000000085f6740c8b4304 *8b400885f67902f7d889c6ff650089f6b80000000085f6740c8b43048b400885f67902f7d889c6 *ff650089f68b43288944241c83c70c3b7b5c761cc7436c03000000c74320ff000000c743241c51 *1008b8843c1008ffe08d47f889442414c700985d1008c74004010000008b44241483c008894424 *288b44241c894424088d442418894424048d442420890424e83ba7ffff8b7424188b4424248945 *f88b4424148945fc83ed088b4508eba9dd4338dd5c241883c7103b7b5c761cc7436c04000000c7 *4320ff000000c743249c511008b8843c1008ffe08d47f489442410c700985d1008c74004020000 *008b44241083c00889442428dd442418dd5c24088d442414894424048d442420890424e819a6ff *ff8b7424148b4424248945f88b4424108945fc83ed088b4508eba9a120bc12083b0528bc120872 *15c74320fe000000c743241c521008b8ec3e1008ffe089742408a14cbb1208890424e8167dffff *89c28b48308d41fc894230c741fcb45e10088b4a308d41fc894230c741fc1c0910088b4a308d41 *fc8942308b4424088941fc8b4a308d41fc894230c741fcd435100889d6891424e8d07dffffc705 *d8b81208010000008b4500eb9289f6e9cbedffff8d76008b7360ff650089f6ff6500908b436089 *0424e8567affff89c6ff6500813e205d10080f94c00fb6f0ff65009083c7143b7b5c761cc7436c *05000000c74320ff000000c74324e0521008b8843c1008ffe08d47f0c700205d1008c7400c4809 *1208c7400448091208c740104809120889c68b4500ebd98d760089742408813e205d1008754881 *7e044809120875088b4360894604eb0d8b4424088b500c8b43608942048b4360c7400448091208 *8b436066c7401201008b43608b5424088950148b436089420cb8f8411008ffe08b4424088b4010 *894424048b542408817a044809120874388b52048b42308b480883c00c8942308b542408894a10 *8b4204890424e84489ffff8b5424088942043d48091208751ac7420c48091208eb118b442408c7 *00205d1008c74010480912088b7424048b4500eb9489f689742408813e205d10087514be000000 *00c745fc4409120883ed048b4504ffe08b4424088b4010894424048b542408817a044809120874 *388b52048b42308b480883c00c8942308b542408894a108b4204890424e8b888ffff8b54240889 *42043d48091208751ac7420c48091208eb118b442408c7401048091208c700205d1008be010000 *008b5424048955fceb899089742408813e0c5d10087548817e044809120875088b4360894604eb *0d8b4424088b500c8b43608942048b4360c74004480912088b436066c7401201008b43608b5424 *088950148b436089420cb848421008ffe08b44240881780448091208743e8b40048b50308b4304 *8942048b5424088b42048b4030c700383710088b4204890424e8f987ffff8b5424088942043d48 *0912087519c7420c48091208eb108b43048b542408894210c7020c5d10088b4500eb9e89742408 *813e0c5d1008750abe000000008b4500ffe08b44240881780448091208743e8b40048b50308b43 *048942048b5424088b42048b4030c700383710088b4204890424e88387ffff8b5424088942043d *4809120875b9c7420c48091208ebb08b43048b542408894210c7020c5d1008eb9e9083c7083b7b *5c761cc7436c02000000c74320fe000000c74324a4551008b8843c1008ffe0893424e85491ffff *89c1c1e00489442408a120ba12088b542408837c100c00751b8d57fcc702f85c1008894a04a120 *ba12088b4c24088954080ceb0e89cac1e204a120ba12088b54100c89d68b4500ebad8d7600a120 *bc12083b0528bc12087215c74320fe000000c743241c561008b8ec3e1008ffe0893424e87891ff *ff89c68b4500ebef8d760089f2c1e204a120ba12088b3410ff65008b4314894424088b500483c2 *068d3c973b7b5c761889536cc74320d0000000c7432460561008b8843c1008ffe08d0495000000 *0089f929c183c104c701485a10088971048b43048941088b430889410c8b430c8941100fb74310 *6689411466895116ba000000008b4424083b500473168b4424088b44900889449118428b442408 *3b500472ea89ce8b4500eb9e8d760083c70c3b7b5c761cc7436c03000000c74320fe000000c743 *24f0561008b8843c1008ffe08d47f8c7002808100866c74006000089700889c68b4500ebe58d76 *008b436066c7401204008b4360897014813dc8b8120848091208750a8b4360a3c8b81208eb0b8b *5360a1ccb812088950048b4360a3ccb81208e91feaffff8d76008b436066c7401205008b436089 *7014813dc8b8120848091208750a8b4360a3c8b81208eb0b8b5360a1ccb812088950048b4360a3 *ccb81208e9dfe9ffff8d76008b436066c7401206008d8e1f4e0000b8ad8bdb68f7e9c1fa0d89c8 *c1f81f29c289542404e85e8000008b4c240401c18b4360894814c7442408000000008b15d0b812 *0881fa480912087419394a147314895424088b520481fa480912087405394a1472ec8b43608950 *04837c240800750a8b4360a3d0b81208eb0a8b43608b542408894204e952e9ffff9090ff65008b *4500ff60f08b4500ff60ec8b4500ff60e88b4500ff60e48b4500ff60e08b4500ff60dc8b4500ff *60d88b4500ff60d4902c5910081a59100808591008f6581008e4581008d2581008c0581008ae58 *100800000000000000002300000083ed08897504c74500d4351008e9f2e7ffff83ed08897504c7 *4500d4351008e9e0e7ffff83ed08897504c74500d4351008e9cee7ffff83ed08897504c74500d4 *351008e9bce7ffff83ed08897504c74500d4351008e9aae7ffff83ed08897504c74500d4351008 *e998e7ffff83ed08897504c74500d4351008e986e7ffff83ed08897504c74500d4351008e974e7 *ffff83ed08897504c74500d4351008e962e7ffff89f600000000000000002300000083ed088975 *04c7450038371008e942e7ffff89f600000000000000002300000083ed08897504c74500e43710 *08e922e7ffff89f600000000000000002300000083ed088b4328894424088b442408894504c745 *0090381008e9f7e6ffff8d760000000000000000002300000083ed0cdd4338dd1c24dd0424dd5d *04c745004c391008e9cde6ffff9000000000000000002300000083ed0c8d45048b53488b4b4c89 *10894804c74500083a1008e9a3e6ffff8d760000000000000000002300000083ed04c745002437 *1008e985e6ffff90000000000000000023000000e973e6ffff8d76000000000000000000000000 *0002000000040000001a00000083ed08897504c74500285a1008e946e6ffff89f6010000001e00 *00008b7604ff268d7600010000001e0000008b7604ff650089f6010000001e0000008b76048b45 *00ff60f08d7600010000001e0000008b76048b4500ff60ec8d7600010000001e0000008b76048b *4500ff60e88d7600010000001e0000008b76048b4500ff60e48d7600010000001e0000008b7604 *8b4500ff60e08d7600010000001e0000008b76048b4500ff60dc8d7600010000001e0000008b76 *048b4500ff60d88d7600010000001e0000008b76048b4500ff60d48d760001000000220000008b *7604ff268d760001000100200000008b7604ff268d7600010001001f0000008b7604ff268d7600 *01000100210000008b7604ff268d7600000002002e0000008b4360c74004480912088b43608946 *048b436066c7401202008b4360897014c706dc5b10088974240889f181e100f00f00c1e90789f0 *250000f0ff09c18379100074278b41108d04c08b15acba12088b4482108946088b41108d04c08b *15acba12088b4c2408894c8210e9dde5ffff90010001002f0000008b53608b46048942048b4360 *8946048b436066c7401202008b4360897014e9b1e5ffff90000002002d0000008b4360c7400448 *0912088b43608946048b436066c7401202008b4360897014c706dc5b10088974240889f181e100 *f00f00c1e90789f0250000f0ff09c18379100074278b41108d04c08b15acba12088b4482108946 *088b41108d04c08b15acba12088b4c2408894c8210e939e5ffff90000000003b000000c70424e8 *671108e8dc65ffff0100000040000000c70424fc671108e8c865ffff0000040038000000c70424 *16681108e8b465ffff0000040001000000c704242b681108e8a065ffff000000000a000000c704 *2445681108e88c65ffff0000010039000000c7042462681108e87865ffff000001003a000000c7 *04247a681108e86465ffff0400000032000000c7042496681108e85065ffff0400000032000000 *c70424b0681108e83c65ffff000000000a000000c70424cb681108e82865ffff000000000a0000 *00c70424e9681108e81465ffff0100010037000000c7042406691108e80065ffff000000000a00 *0000c704241f691108e8ec64ffff0100010001000000c7042442691108e8d864ffff0000000033 *000000c7042461691108e8c464ffff0000000034000000c704247b691108e8b064ffff00000000 *35000000c7042498691108e89c64ffff0100010036000000c70424bc691108e88864ffff000000 *000a000000ff650090185e1008185e1008185e1008185e1008185e1008185e1008185e1008185e *100800000000000000002c00000083ed04897504c74500d43510088b436066c7401004008b4360 *8968308b53688d4704894204be04000000e9e297ffff908b43608b683005880000008943548b43 *688b780483ef0489c28b4018c1e00c030283e80489435cff650089f60000000000000000240000 *0083c5048b060fb740fc83e80b83f8177711ff2485d46911088b7604ebe68b4500ffe08b06ebfa *89f600000000000000002400000083c504ff6500e96a97ffff908b6b5083ed04ff650090909000 *00000000000000240000008b760483c5048b060fb740fc83e80b83f8177711ff2485346a11088b *7604ebe68b4500ffe08b06ebfa8d760000000000190000008d45f43b435473058b43f8ffe08d45 *f8c700d46d1008897004c745f4d85e10088b760483ed0c8b060fb740fc83e80b83f8177711ff24 *85946a11088b7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b760883c5 *048b060fb740fc83e80b83f8177711ff2485f46a11088b7604ebe68b4500ffe08b06ebfa8d7600 *01000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4645f10 *088b760483ed0c8b060fb740fc83e80b83f8177711ff2485546b11088b7604ebe68b4500ebc68b *06ebc28d76000000000000000000240000008b760c83c5048b060fb740fc83e80b83f8177711ff *2485b46b11088b7604ebe68b4500ffe08b06ebfa8d760002000000190000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f4f05f10088b760483ed0c8b060fb740fc83e80b *83f8177711ff2485146c11088b7604ebe68b4500ebc68b06ebc28d760000000000000000002400 *00008b761083c5048b060fb740fc83e80b83f8177711ff2485746c11088b7604ebe68b4500ffe0 *8b06ebfa8d760003000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970 *04c745f47c6010088b760483ed0c8b060fb740fc83e80b83f8177711ff2485d46c11088b7604eb *e68b4500ebc68b06ebc28d76000000000000000000240000008b761483c5048b060fb740fc83e8 *0b83f8177711ff2485346d11088b7604ebe68b4500ffe08b06ebfa8d760004000000190000008d *45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4086110088b760483ed0c8b06 *0fb740fc83e80b83f8177711ff2485946d11088b7604ebe68b4500ebc68b06ebc28d7600000000 *0000000000240000008b761883c5048b060fb740fc83e80b83f8177711ff2485f46d11088b7604 *ebe68b4500ffe08b06ebfa8d760005000000190000008d45f43b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f4946110088b760483ed0c8b060fb740fc83e80b83f8177711ff248554 *6e11088b7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b761c83c5048b *060fb740fc83e80b83f8177711ff2485b46e11088b7604ebe68b4500ffe08b06ebfa8d76000600 *0000190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4206210088b *760483ed0c8b060fb740fc83e80b83f8177711ff2485146f11088b7604ebe68b4500ebc68b06eb *c28d76000000000000000000240000008b762083c5048b060fb740fc83e80b83f8177711ff2485 *746f11088b7604ebe68b4500ffe08b06ebfa8d760007000000190000008d45f43b435473058b43 *f8ffe08d45f8c700d46d1008897004c745f4ac6210088b760483ed0c8b060fb740fc83e80b83f8 *177711ff2485d46f11088b7604ebe68b4500ebc68b06ebc28d7600000000000000000024000000 *8b762483c5048b060fb740fc83e80b83f8177711ff2485347011088b7604ebe68b4500ffe08b06 *ebfa8d760008000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c7 *45f4386310088b760483ed0c8b060fb740fc83e80b83f8177711ff2485947011088b7604ebe68b *4500ebc68b06ebc28d76000000000000000000240000008b762883c5048b060fb740fc83e80b83 *f8177711ff2485f47011088b7604ebe68b4500ffe08b06ebfa8d760009000000190000008d45f4 *3b435473058b43f8ffe08d45f8c700d46d1008897004c745f4c46310088b760483ed0c8b060fb7 *40fc83e80b83f8177711ff2485547111088b7604ebe68b4500ebc68b06ebc28d76000000000000 *000000240000008b762c83c5048b060fb740fc83e80b83f8177711ff2485b47111088b7604ebe6 *8b4500ffe08b06ebfa8d76000a000000190000008d45f43b435473058b43f8ffe08d45f8c700d4 *6d1008897004c745f4506410088b760483ed0c8b060fb740fc83e80b83f8177711ff2485147211 *088b7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b763083c5048b060f *b740fc83e80b83f8177711ff2485747211088b7604ebe68b4500ffe08b06ebfa8d76000b000000 *190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4dc6410088b7604 *83ed0c8b060fb740fc83e80b83f8177711ff2485d47211088b7604ebe68b4500ebc68b06ebc28d *76000000000000000000240000008b763483c5048b060fb740fc83e80b83f8177711ff24853473 *11088b7604ebe68b4500ffe08b06ebfa8d76000c000000190000008d45f43b435473058b43f8ff *e08d45f8c700d46d1008897004c745f4686510088b760483ed0c8b060fb740fc83e80b83f81777 *11ff2485947311088b7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b76 *3883c5048b060fb740fc83e80b83f8177711ff2485f47311088b7604ebe68b4500ffe08b06ebfa *8d76000d000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4 *f46510088b760483ed0c8b060fb740fc83e80b83f8177711ff2485547411088b7604ebe68b4500 *ebc68b06ebc28d76000000000000000000240000008b763c83c5048b060fb740fc83e80b83f817 *7711ff2485b47411088b7604ebe68b4500ffe08b06ebfa8d76000e000000190000008d45f43b43 *5473058b43f8ffe08d45f8c700d46d1008897004c745f4806610088b760483ed0c8b060fb740fc *83e80b83f8177711ff2485147511088b7604ebe68b4500ebc68b06ebc28d760000000000000000 *00240000008b764083c5048b060fb740fc83e80b83f8177711ff2485747511088b7604ebe68b45 *00ffe08b06ebfa8d76000f000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f40c6710088b760483ed0c8b060fb740fc83e80b83f8177711ff2485d47511088b *7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b760483c504ff26000000 *00190000008d45fc3b435473058b43f8ffe0c745fc986710088b760483ed048b06ebed89f60000 *000000000000240000008b760883c504ff2601000000190000008d45fc3b435473058b43f8ffe0 *c745fcd46710088b760483ed048b06ebed89f60000000000000000240000008b760c83c504ff26 *02000000190000008d45fc3b435473058b43f8ffe0c745fc106810088b760483ed048b06ebed89 *f60000000000000000240000008b761083c504ff2603000000190000008d45fc3b435473058b43 *f8ffe0c745fc4c6810088b760483ed048b06ebed89f60000000000000000240000008b761483c5 *04ff2604000000190000008d45fc3b435473058b43f8ffe0c745fc886810088b760483ed048b06 *ebed89f60000000000000000240000008b761883c504ff2605000000190000008d45fc3b435473 *058b43f8ffe0c745fcc46810088b760483ed048b06ebed89f60000000000000000240000008b76 *1c83c504ff2606000000190000008d45fc3b435473058b43f8ffe0c745fc006910088b760483ed *048b06ebed89f60000000000000000240000008b762083c504ff2607000000190000008d45fc3b *435473058b43f8ffe0c745fc3c6910088b760483ed048b06ebed89f60000000000000000240000 *008b762483c504ff2608000000190000008d45fc3b435473058b43f8ffe0c745fc786910088b76 *0483ed048b06ebed89f60000000000000000240000008b762883c504ff2609000000190000008d *45fc3b435473058b43f8ffe0c745fcb46910088b760483ed048b06ebed89f60000000000000000 *240000008b762c83c504ff260a000000190000008d45fc3b435473058b43f8ffe0c745fcf06910 *088b760483ed048b06ebed89f60000000000000000240000008b763083c504ff260b0000001900 *00008d45fc3b435473058b43f8ffe0c745fc2c6a10088b760483ed048b06ebed89f60000000000 *000000240000008b763483c504ff260c000000190000008d45fc3b435473058b43f8ffe0c745fc *686a10088b760483ed048b06ebed89f60000000000000000240000008b763883c504ff260d0000 *00190000008d45fc3b435473058b43f8ffe0c745fca46a10088b760483ed048b06ebed89f60000 *000000000000240000008b763c83c504ff260e000000190000008d45fc3b435473058b43f8ffe0 *c745fce06a10088b760483ed048b06ebed89f60000000000000000240000008b764083c504ff26 *0f000000190000008d45fc3b435473058b43f8ffe0c745fc1c6b10088b760483ed048b06ebed89 *f60000000001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *760489c583ed04b89c071008ebe30000000002000000150000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d10088970048b46088945f48b760483ed0c83ed04b808121008ebdc9000000000 *03000000120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f4 *8b46088945f08b760483ed1083ed04b814161008ebd68d76000000000004000000120000008d45 *e83b435473058b43f8ffe08d45f8c700d46d10088970048b46108945f48b460c8945f08b460889 *45ec8b760483ed1483ed04b8e41a1008ebd0900000000005000000120000008d45e43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46148945f48b46108945f08b460c8945ec8b460889 *45e88b760483ed1883ed04b87c1d1008ebca8d76000000000006000000120000008d45e03b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46188945f48b46148945f08b46108945ec8b46 *0c8945e88b46088945e48b760483ed1c83ed04b87c201008ebc490000000000700000012000000 *8d45dc3b435473058b43f8ffe08d45f8c700d46d10088970048b461c8945f48b46188945f08b46 *148945ec8b46108945e88b460c8945e48b46088945e08b760483ed2083ed04b8fc231008ebbe8d *76000000000008000000120000008d45d83b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46208945f48b461c8945f08b46188945ec8b46148945e88b46108945e48b460c8945e08b4608 *8945dc8b760483ed2483ed04b828281008ebb89091721008f971100861711008c9701008317010 *08996f1008016f1008696e100800000000010000002a0000008b45048944240883c5088138dc5b *1008750b8b4004890424e89f66ffff8b4424082500f00f00c1e8078b54240881e20000f0ff89c1 *09d18379100075128b4c2408897104c701745a10088b4500ffe08b4424088970048138dc5b1008 *742b8b41108d04c08b15acba12088b4482148b5424088942088b41108d04c08b15acba12088b4c *2408894c82148b442408c700445b1008ebb58b45048944240883c5088138dc5b1008750b8b4004 *890424e80a66ffff8b4424082500f00f00c1e8078b54240881e20000f0ff89c109d18379100075 *158b4c2408897104c701845a10088b45008b40f0ffe08b4424088970048138dc5b1008742b8b41 *108d04c08b15acba12088b4482148b5424088942088b41108d04c08b15acba12088b4c2408894c *82148b442408c700445b1008ebb28b45048944240883c5088138dc5b1008750b8b4004890424e8 *7265ffff8b4424082500f00f00c1e8078b54240881e20000f0ff89c109d18379100075158b4c24 *08897104c701985a10088b45008b40ecffe08b4424088970048138dc5b1008742b8b41108d04c0 *8b15acba12088b4482148b5424088942088b41108d04c08b15acba12088b4c2408894c82148b44 *2408c700445b1008ebb28b45048944240883c5088138dc5b1008750b8b4004890424e8da64ffff *8b4424082500f00f00c1e8078b54240881e20000f0ff89c109d18379100075158b4c2408897104 *c701ac5a10088b45008b40e8ffe08b4424088970048138dc5b1008742b8b41108d04c08b15acba *12088b4482148b5424088942088b41108d04c08b15acba12088b4c2408894c82148b442408c700 *445b1008ebb28b45048944240883c5088138dc5b1008750b8b4004890424e84264ffff8b442408 *2500f00f00c1e8078b54240881e20000f0ff89c109d18379100075158b4c2408897104c701c05a *10088b45008b40e4ffe08b4424088970048138dc5b1008742b8b41108d04c08b15acba12088b44 *82148b5424088942088b41108d04c08b15acba12088b4c2408894c82148b442408c700445b1008 *ebb28b45048944240883c5088138dc5b1008750b8b4004890424e8aa63ffff8b4424082500f00f *00c1e8078b54240881e20000f0ff89c109d18379100075158b4c2408897104c701d45a10088b45 *008b40e0ffe08b4424088970048138dc5b1008742b8b41108d04c08b15acba12088b4482148b54 *24088942088b41108d04c08b15acba12088b4c2408894c82148b442408c700445b1008ebb28b45 *048944240883c5088138dc5b1008750b8b4004890424e81263ffff8b4424082500f00f00c1e807 *8b54240881e20000f0ff89c109d18379100075158b4c2408897104c701e85a10088b45008b40dc *ffe08b4424088970048138dc5b1008742b8b41108d04c08b15acba12088b4482148b5424088942 *088b41108d04c08b15acba12088b4c2408894c82148b442408c700445b1008ebb28b4504894424 *0883c5088138dc5b1008750b8b4004890424e87a62ffff8b4424082500f00f00c1e8078b542408 *81e20000f0ff89c109d18379100075158b4c2408897104c701fc5a10088b45008b40d8ffe08b44 *24088970048138dc5b1008742b8b41108d04c08b15acba12088b4482148b5424088942088b4110 *8d04c08b15acba12088b4c2408894c82148b442408c700445b1008ebb28b45048944240883c508 *8138dc5b1008750b8b4004890424e8e261ffff8b4424082500f00f00c1e8078b54240881e20000 *f0ff89c109d18379100075158b4c2408897104c701105b10088b45008b40d4ffe08b4424088970 *048138dc5b1008742b8b41108d04c08b15acba12088b4482148b5424088942088b41108d04c08b *15acba12088b4c2408894c82148b442408c700445b1008ebb28d76005873100858731008587310 *08587310085873100858731008587310085873100800000000000000002400000083c504ff6500 *909083ec0cc7442404347611088b442410890424e86650ffff83c40cc383ec0c895c2404897424 *088b4424108b5c24148b742418ba0000000085c0740783f801742feb5cc704240e000000e8b2ff *ffff89c2c60058c6400168895802c6400650c64007b8897008c6400cffc6400de0eb2fc7042411 *000000e885ffffff89c2c60068895801c64005b8897006c6400a68a1d0ba120889420bc6420fff *c64210e089d08b5c24048b74240883c40cc383ec0c895c24088b5c2410803b68741c803b587412 *895c2404c7042460761108e8024fffffeb20803b6875058b4301eb038b4302890424e89873ffff *c60300891c24e83e50ffff8b5c240883c40cc383ec0cc7042404000000e8f6feffffa3d0ba1208 *c60083a1d0ba1208c64001c4a1d0ba1208c6400204a1d0ba1208c64003c383c40cc3909090c355 *57565383ec0c8b74242081fefe000000762589f0c1e00c05ff1f0000c1e81440890424e83c0100 *00e91c0100008b43088902e910010000bad4ba12088b1dd4ba120885db746339731874e2397318 *764f8b431829f0894318c1e00501c389f789d985f60f84de0000008973188b03894304ba010000 *008d432039f20f83c6000000c7400400000000c74018000000008948084283c02039fa72e7e9a8 *0000008d53088b5b0885db759de83863000089c7890424e81b0300008d5f4089f589d985f6742e *8973188b4740894304ba010000008d476039f27319c7400400000000c740180000000089480842 *83c02039ea72e781fefd000000774ebafe00000089f0c1e0058d3c1829f2742d8957188b078947 *04b9010000008d472039d17319c7400400000000c74018000000008978084183c02039d172e789 *f0c1e0058d0418890424e8f600000089d883c40c5b5e5f5dc383ec0cc7042401000000e89ffeff *ff83c40cc35557565383ec0c8b6c2420be00000000bb00000000bf00000000b9000000008b15d4 *ba120885d27438817a18fe000000752185db740b8b0105000010003902740b89d389cfbe010000 *00eb014639ee7414eb05bb0000000089d18b520885d275c839ee751685ff750a8b4208a3d4ba12 *08eb1d8b4208894708eb15892c24e83f63000089c3890424e8e201000083c340befe00000089d9 *c74318fe0000008b03894304ba010000008d4320c7400400000000c74018000000008948084283 *c02039f272e789e8c1e00883e80289431889d883c40c5b5e5f5dc3565383ec048b4c2410817918 *fe000000760d890c24e8e7000000e9dc000000bb000000008b15d4ba120885d274158b023b0173 *0f89d38b520885d274068b023b0172f185db7510a1d4ba1208894108890dd4ba1208eb5a8b4308 *894108894b0889ce85c974478b531889d0c1e00c03033b01753989d00341188943188b41088943 *088b7118ba0000000089c839f27319c7400400000000c740180000000089580883c0204239f272 *e789d8eb0289f089c18b510885d274438b591889d8c1e00c03013b02753589d80342188941188b *42088941088b7218bb0000000089d039f37319c7400400000000c740180000000089480883c020 *4339f372e783c4045b5ec357565383ec108b5c24208b4318c1e00c89c6c1ee14467454bffe0000 *0089d8250000f0ff890424e86900000089d9c74318fe0000008b03894304ba010000008d4320c7 *400400000000c74018000000008948084283c02039fa72e7891c24e89cfeffff81c3000010004e *75b183c4105b5e5fc35383ec088b44241085c074118b5808890424e875feffff89d885db75ef83 *c4085bc3538b4424088d90002000008d48400500f00f0089c339c2770f891183c12081c2001000 *0039da76f15bc3908b442404c70000361008c74004ec3a1008c383ec0cc7042440bc1208e8dfff *ffff83c40cc383ec0c8b442410c70040bc1208e80568ffff83c40cc3c383ec0c895c24088b5c24 *10e807fdffff89c18b4314894110895914c74108000000008b43143b05e0ba12087709c7411c01 *000000eb07c7411c00000000837b2c00740f8b432c8b53248950048b432c894808894b2c8b0189 *43240500100000894328ff4334ff05fcba120889c88b5c240883c40cc35557565383ec5cc74424 *3000000000c744242800000000e8dd68ffffe85974ffffe81489ffff89442434837c2474007417 *a170bb120848a3e0ba1208c705e4ba120801000000eb70c705e0ba120800000000c74424240000 *0000b8000000003b0570bb1208733a8b1dacba12088b3570bb12088b5424248d04d2c1e0028b4c *03048b510803511c3b54030c720a8b4c2424890de0ba1208ff4424243974242472d2a170bb1208 *483905e0ba12080f94c00fb6c0a3e4ba1208c705dcba120801000000c705c0bc12080100000083 *3de4ba120800741ca170bb12088d04c0c1e0020305acba12088b40f0890424e8382f0000833d70 *bb1208017521a1b8ba12088b50308915f8ba1208c7403000000000a1b8ba1208c7403400000000 *c705fcba120800000000c7442424000000008b4424248d14c0c1e202a1acba1208c74410144c09 *1208a1acba1208c74410104c091208bd00000000a1acba12083b6c10080f83f70000008b542424 *8d04d2c1e00289442420837c242400751185ed750d833d70bb1208010f87bd0000008d44ad00c1 *e0048b15acba120889c68b4c242003740a04c7462400000000c7462c00000000c7463000000000 *893424e8ccfdffff89c28946308b0089463c895638c7464000000000c7464400000000c7464800 *0000008b561885d2740b83621cfe8b520885d275f5837e2000744f8b4608c1e00c89c7c1ef0574 *428d87ff0f0000c1e80c890424e839f9ffff89464c8b18897c2408c744240400000000891c24e8 *471df4ff8b560485d27411895a0c83eb80834a1c088b520885d275ef45a1acba12088b5424203b *6c10080f8217ffffffff4424248b4c24243b0de0ba12080f86bdfeffffa1e0ba12084089442424 *3b0570bb12080f83aa000000bd000000008b15acba120889d38b442424c1e00389c1034424243b *6c820873768b4424248d14088d44ad00c1e00489c603749304837e2c007512893424e8c3fcffff *894604c74608010000008b462489463c8b462c894638c7463000000000c7463400000000c74640 *00000000c7464400000000c7464800000000458b1dacba12088b4c2424c1e1038b5424248d040a *3b6c8308728aff4424248b4c24243b0d70bb12080f8256ffffff833de4ba1208007436c7042404 *000000e80bf8ffffa300bb12088b00a304bb1208a308bb12080500400000a30cbb1208eb178934 *24e82b2c0000e972020000c70500bb120800000000a170bb120848894424243b05e0ba12087636 *8b0dacba12088b5424248d04d2c1e0028b540110895401188b15acba1208c74402104c091208ff *4c24248b4c24243b0de0ba120877caa170bb120848894424243b05e0ba120876678b5424248d1c *d2c1e30289d80305acba1208890424e8db2500008b4c2424890de8ba1208a1acba12088b541808 *4a89d378258d04c98d3485000000008d049bc1e0048b15acba120803443204890424e86a170000 *4b79e5ff4c24248b4c24243b0de0ba12087799a170bb120848894424243b05e0ba120876678b54 *24248d1cd2c1e30289d80305acba1208890424e8212600008b4c2424890de8ba1208a1acba1208 *8b5418084a89d378258d04c98d3485000000008d049bc1e0048b15acba120803443204890424e8 *f11600004b79e5ff4c24248b4c24243b0de0ba12087799c705e8ba120800000000c70424d58910 *08e8a82b0000c705e8ba120800000000c70424d5891008ff542470c7042430bc1208e8d30a0000 *a130bc1208a3b8bc1208c70530bc120800000000c705ecba120800000000a1d4b81208a3f0ba12 *08c705d4b8120848091208c705bcbc120848091208c70424d5891008e8a66affffbd0000000083 *3de4ba120800740e833ddcba1208017405e8d7260000833d10bb120800751f833d14bb12080075 *16833d00bb1208007417a108bb12083b0504bb1208740ae80c1d0000bd010000008b1d70bb1208 *4b78728b15acba12088d04db8b4c820849785f8d3c850000000085db750d85c97509833d70bb12 *080177448d0489c1e0048b15acba120889c603743a04891de8ba12088b462c3b463875088b463c *3b46247312893424e8b0150000bd01000000e963ffffff837e40000f856dfdffff4979a84b798e *85ed0f852fffffffe8f407000085c00f8522ffffff8b1dbcb8120885db74238b03890424e8bd09 *000085c0750cc704248d761108e8ef42ffff89038b5b1085db75dde83d6affffc7442424000000 *00b8000000003b0570bb1208737cbd000000008b15acba120889d38b442424c1e00389c1034424 *243b6c8208734c8b4424248d14088d44ad00c1e00489c603749304837c242400750d85ed750983 *3d70bb12080177098b562c8b4624894204458b1dacba12088b4c2424c1e1038b5424248d040a3b *6c830872b4ff4424248b4c24243b0d70bb12087284833de4ba1208007421a1b4ba12088b400483 *78200074138b4008894424288b442470890424e8c4370000a1fcba1208c1e00a8944242cc74424 *2400000000ba000000003b1570bb12080f83f90100008b4c24243b0de0ba1208770d8b15acba12 *088d04c9ff44821cbd000000008b15acba120889d38b442424c1e00389c1034424243b6c82080f *83a80100008b4424248d14088d44ad00c1e00489c603749304837c242400750d85ed7509833d70 *bb12080177248b5424243b15e0ba12080f87040100008b562c8b022b42040500100000c1f80229 *44242c8b4c24243b0de0ba12080f87e0000000837e200074098b4424282b4608eb038b4608c1e0 *0a01442430837c242400750885ed0f8483000000837e200074498b563085d2740b83621cfe8b52 *0885d275f5837e040075088b4630894604eb1e8b560485d274178b5a0885db75068b4630894208 *83621cf789da85db75e98b4608034634894608eb268b4604890424e8c5f6ffff8b56308956048b *463489460885d2740b83621cfe8b520885d275f5c7463000000000c74634000000008b561885d2 *74118b5a08891424e816f5ffff89da85db75ef8b564485d2740b83621cfe8b520885d275f58b46 *448946188b4648eb4a8b564485d2742d8d7e188b5a0883621cfe89d18b4618894208c7420c0000 *0000837e180074068b461889500c890f89da85db75d68b4608034634894608c74634000000008b *461c03464889461c458b1dacba12088b4c2424c1e1038b5424248d040a3b6c83080f8258feffff *ff4424248b4c24243b0d70bb12080f8207feffff833de4ba1208000f84f8010000833d70bb1208 *010f86eb0100008b3550bb12088b2d70bb1208a1b4ba12088b50048b420803421c8944241c8b44 *241cba000000005250df2c248d642408dc0d60bb1208dd5c2450a158bb1208ba000000005250df *2c248d642408dd5c2448dd442448dd442450d9c9dde1dfe0ddd99e7306ddd8dd442450d97c2446 *0fb7442446660d000c6689442444d96c2444df7c2438d96c24468b44243889c3ba000000005256 *df2c248d642408dc0d68bb1208d835dc761108dd5c2448a154bb1208ba000000005250df2c248d *642408dd5c2450dd442450dd442448d9c9dde1dfe0ddd99e7306ddd8dd442448d96c2444df7c24 *38d96c24468b44243889c7833d70bb120801765a833d7cbb120800754085f6744da1b4ba12088b *40048b4008ba000000005250df2c248d642408ba000000005256df2c248d642408dc0d80bb1208 *d835505b1108d9c9dae9dfe09e7611a1b4ba12088b4004c7402001000000eb0fa1b4ba12088b40 *04c740200000000085f6745f39fe7305e81b41ffffa1b4ba12088b400483782000741d8d441bfe *8d55fe0fafc28d041801f839f0762a89f329fb8d542dfdeb138d542dfe89d80fafc201f839f076 *1189f329fb89d889d1ba00000000f7f189c33b5c241c7305e8c540ffffc744242400000000396c *2424731a8b4424248d14c0a1acba1208895c900cff442424396c242472e6e87c7effff89c7833d *2cbc120800740da12cbc1208890424e8c5f3ffffc7052cbc120800000000c70520bc1208000000 *00c705a4ba120800000000c705a8ba120800000000a154bb1208a328bc1208c70524bc12080000 *0000833d00bb120800740da100bb1208890424e8fff1ffffc744242400000000bd000000008b15 *acba120889d38b442424c1e00389c1034424243b6c820873468b4424248d14088d44ad00c1e004 *89c603749304837e20007411837e4c00740b8b464c890424e8acf1ffff458b1dacba12088b4c24 *24c1e1038b5424248d040a3b6c830872baff4424248b4c24243b0de0ba1208768a833d70bb1208 *010f85fd000000833df8ba120800740da1f8ba1208890424e8d2f2ffffa1b8ba12088b503085d2 *740ec7421c000000008b520885d275f2a1b8ba12088b4834be50bb1208833d50bb120800746cba *000000005251df2c248d642408dc0d60bb1208d8c0a150bb1208ba000000005250df2c24d9c98d *642408dae9dfe09e763a8d1409a150bb120889c329d38d049b8d0480c1e002ba00000000f73650 *db04248d642404dd0568bb1208dae9dfe09e7605e8f53effff89d9eb46ba000000005251df2c24 *8d642408dc0d60bb1208d97c24460fb7442446660d000c6689442444d96c2444df7c2438d96c24 *468b44243889c13b0554bb120873068b0d54bb1208890c24eb68833d5cbb1208007457e83b7dff *ff89c1833de0ba1208007521a1fcba12088d04808d0480c1e0028b1db8ba1208ba00000000f773 *08a3e8121208a15cbb120829c88d04808d0480c1e0028b15e812120883c26489d199f7f93b0554 *bb12087d05a154bb1208890424e8ae78ffff833de4ba120800740da1c0bc1208890424e8662200 *00e81078ffffa1b8bc1208890424e8cc7effffa1bcbc1208890424e85852ffffa1e4ba12088904 *24e85463ffffa1e0ba1208894424108b44242c8944240c897c24088b542430895424048b4c2434 *890c24e81b67ffffe8285bffff83c45c5b5e5f5dc357565383ec10bf000000008b15ecba120883 *fa010f84e200000083fa017213b80000000083fa020f848d010000e97c010000c705e8ba120800 *000000beb8bc12088b1db8bc120885db747e813bbc5c100874108b030fb740fc83f838740c83f8 *4075548b53048916eb598b4304890424e87001000085c074368943048b4308e829030000894308 *8b430ce81e03000089430c8b431089068b5310a130bc1208894310891d30bc1208bf01000000eb *148d73108b5310eb0cc70424e0761108e9f200000089d385d2758285ff0f85d60000008b1db8bc *120885db74128b430ce8ca02000089430c8b5b1085db75eec705ecba120801000000e9ab000000 *bef0ba12088b1df0ba120881fb480912087462891c24e8ce00000085c0740289c30fb7531083fa *03741183fa03770583fa02eb0383fa047407eb118b5304eb298b530cc7430c48091208eb1d85c0 *75088d730c8b530ceb138b530ca1d4b8120889430c891dd4b81208891689d381fa48091208759e *a1f0ba12083d4809120874208b580ce8280200008b15bcbc120889500ca3bcbc120889d881fb48 *09120875e0c705ecba120802000000b801000000eb0cc70424a7761108e86d39ffff83c4105b5e *5fc35383ec088b5c24108b0385c07411e8d901000089038d58108b401085c075ef83c4085bc355 *5756538b7424148b2de0ba12088b3e83ef0889f0c1e81480b8e0bc120800741f89f02500f00f00 *c1e80789f281e20000f0ff09d03968107706f6401c01740489f2eb64f6401c027559f6401c0874 *2289f12b08c1f90289cbc1eb058b500c83e11fb801000000d3e023049a89f285c075360fb74704 *83f83b741983f83b7f0a83e81e83f804771beb1183f84075148b5604eb1466837e100375088b76 *04e96bffffffba0000000089d05b5e5f5dc383ec0c895c24088b5c24108b03e80701000089038b *5c240883c40cc35557565383ec0c8b7c24208b6c24248b5c24288b74242c8b46143b05e8ba1208 *7312a1e8ba12088d04c08b15acba12088b7482048b46248d04a83b46287208893424e898eeffff *8b4e2489fa85db740d8b0283c204890183c1044b75f38b46248d14a8895624c707945c10088947 *0483c40c5b5e5f5dc383ec0c895c2404897424088b4424148b58048b432483c00c3b4328720889 *1c24e843eeffff8b73248d460c894324c7065c5d10088b44241089460489f181e100f00f00c1e9 *0789f0250000f0ff09c18379100074238b41108d04c08b15acba12088b4482148946088b41108d *04c08b15acba12088974821489f08b5c24048b74240883c40cc35557565383ec1c89c389d8c1e8 *1480b8e0bc1208000f84e200000089d82500f00f00c1e80789da81e20000f0ff09c28b42103b05 *e0ba1208761b3b05e8ba12080f830f050000c705f4ba120801000000e900050000f6421c027424 *8b0b83e908668379043b750b66837b10030f84b1060000891c24e857210000e9d6040000f6421c *0874728b3289d929f1c1f90289c8c1e8058b520c83e11fbf0100000089fdd3e589e9230c8285c9 *0f85a604000089d929f1c1f90289c8c1e80583e11fd3e7093c82a108bb12083b050cbb12087214 *c70510bb120801000000a104bb1208a308bb1208a108bb12088918830508bb120804e95e040000 *8b42148b780c8b0b83e9080fb7410483f8400f8772060000ff24853c79110889dd0fb7010fb751 *028d5c020189fe8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b4624 *8d04983b46287208893424e88decffff8b4e2489ea85db0f84a80500008b0283c204890183c104 *4b75f3e9960500008b5304813b3cdc0b0875138d04d55809120881faff0000000f860306000081 *3b54dc0b08751583faf07c108d04d5d811120883fa100f8ee605000089ddbe0200000089fb8b47 *143b05e8ba12087312a1e8ba12088d04c08b15acba12088b5c82048b43248d04b03b4328720889 *1c24e8faebffff8b4b2489ea85f60f84ab0200008b0283c204890183c1044e75f3e99902000089 *ddbe0300000089fb8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b5c82048b43 *248d04b03b43287208891c24e8a2ebffff8b4b2489ea85f60f84530200008b0283c204890183c1 *044e75f3e94102000089ddbe0300000089fb8b47143b05e8ba12087312a1e8ba12088d04c08b15 *acba12088b5c82048b43248d04b03b43287208891c24e84aebffff8b4b2489ea85f60f84fb0100 *008b0283c204890183c1044e75f3e9e901000089dd0fb7010fb751028d5c020189fe8b47143b05 *e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b46248d04983b46287208893424e8 *eceaffff8b4e2489ea85db0f84070400008b0283c204890183c1044b75f3e9f503000089dd0fb7 *5b1689fe8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b46248d0498 *3b46287208893424e895eaffff8b4e2489ea85db0f84b00300008b0283c204890183c1044b75f3 *e99e030000897c240cc744240801000000c744240403000000891c24e87bfbffffe90804000089 *ddbe0300000089fb8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b5c82048b43 *248d04b03b43287208891c24e81ceaffff8b4b2489ea85f60f84cd0000008b0283c204890183c1 *044e75f3e9bb000000833dd8ba120808765189ddbe0300000089fb8b47143b05e8ba12087312a1 *e8ba12088d04c08b15acba12088b5c82048b43248d04b03b43287208891c24e8bbe9ffff8b4b24 *89ea85f674708b0283c204890183c1044e75f3eb61895c24048b01890424e85003000085c0755a *89ddbe0300000089fb8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b5c82048b *43248d04b03b43287208891c24e858e9ffff8b4b2489ea85f6740d8b0283c204890183c1044e75 *f38b4324894b24e965020000ff05d8ba1208e84afbffffff0dd8ba1208c703945c1008894304e9 *cb02000066837906000f8480000000833de4ba1208007477837b0c007571a1dcba120889430ceb *6166837906007460833de4ba1208007457837b04007551a1dcba1208894304eb41833de4ba1208 *00743e837b0c007538837b08007532a1dcba1208894308eb22833de4ba120800741f0fb7110fb7 *410201c2837c930400750fa1dcba120889449304891ddcba120889d8e939020000895c2404c704 *24be761108e92402000089dd0fb743068d580389fe8b47143b05e8ba12087312a1e8ba12088d04 *c08b15acba12088b7482048b46248d04983b46287208893424e83be8ffff8b4e2489ea85db0f84 *560100008b0283c204890183c1044b75f3e94401000089dd8b5b0483c30389fe8b47143b05e8ba *12087312a1e8ba12088d04c08b15acba12088b7482048b46248d04983b46287208893424e8e2e7 *ffff8b4e2489ea85db0f84fd0000008b0283c204890183c1044b75f3e9eb000000833de8ba1208 *0074388b530489d0c1e81480b8e0bc120800742789d02500f00f00c1e80781e20000f0ff09d08b *40103b05e8ba1208730ac705f4ba1208010000008b4304e92d01000089dd8b5b0483c30289fe8b *47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b46248d04983b46287208 *893424e840e7ffff8b4e2489ea85db745f8b0283c204890183c1044b75f3eb5089dd8b5b0483c3 *0389fe8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b46248d04983b *46287208893424e8eee6ffff8b4e2489ea85db740d8b0283c204890183c1044b75f38b4624894e *24c74500945c1008894504eb7966837b100375088b5b04e9def8ffff8b432883c00d897c240cc7 *4424080d00000089442404891c24e8baf7ffff89c689442404891c24e8c40100008b53308b4e30 *8b43288d44833439c273158b0283c204890183c1048b43288d44833439c272eb89f0eb140fb741 *0489442404c7042420771108e8e52fffff83c41c5b5e5f5dc35557565383ec0c8b7c24248b7704 *8b2f89f82500f00f00c1e80789fa81e20000f0ff09d08b40103b05e0ba12080f873e010000c707 *645b100889f281e200f00f00c1ea0789f0250000f0ff09c289f0c1e81480b8e0bc12080074328b *421ca8017524a808742789f12b0ac1f90289cbc1eb058b520c83e11fb801000000d3e023049a85 *c07407b801000000eb05b80000000085c00f85d50000008b0683e8080fb7500483fa400f87af00 *0000ff2495407a11088b4424208b74860489f281e200f00f00c1ea0789f0250000f0ff09c289f0 *c1e81480b8e0bc12080074328b421ca8017524a808742789f12b0ac1f90289cbc1eb058b520c83 *e11fb801000000d3e023049a85c07407ba01000000eb05ba0000000089f085d2745ceb538b7604 *e915ffffffff05d8ba1208833dd8ba120808773c897424048b00890424e8bffeffffff0dd8ba12 *0885c07424894604c706645a100889c6e9defeffff0fb7400489442404c7042460771108e86e2e *ffff892fb80000000083c40c5b5e5f5dc38b54240889d02b44240483e0fc014230c35557565383 *ec0cbd000000008b4424208b78088b4004894424088b4424208b18be000000003b742408732ef7 *c70100000074078b03e89af6ffff4683c304f7c61f000000750b458b4424208b7ca808eb02d1ef *3b74240872d283c40c5b5e5f5dc383ec0c895c24088b5c24108b4304e860f6ffff8943040fb743 *12486683f802770b8b4314e84af6ffff894314837b1800740b8b4318e839f6ffff8943188b4328 *8d448334894424048b4330890424e8691200008b5c240883c40cc35557565383ec1ca1e8ba1208 *894424108b5424308b5a3c8b4a38894c2414c705f4ba1208000000003b4a2c75163b5a240f83aa *0600008b5424148b4424303b502c74178b4c24143b5904750e8b4108894424148b18e96d060000 *8b3383ee08895c24180fb7460483f83b0f870b060000ff2485447b1108c705e8ba120800000000 *8b4304e88ff5ffff8943048b430ce884f5ffff89430c8b4310e879f5ffff8943108b5424108915 *e8ba120889d981e100f00f00c1e90789d8250000f0ff09c18379100074238b41108d04c08b15ac *ba12088b4482108943088b41108d04c08b15acba1208895c8210c705f4ba12080000000083c314 *e9980500008d46f00fb770168b780881feffff00007505893c24eb2e85f6744bf7c60100000074 *078b07e8f3f4ffff83c704d1ee75eaeb330fb77e068b76fc81ffffff0000750a893424e8fffdff *ffeb1a85ff7416f7c70100000074078b06e8bef4ffff83c604d1ef75ea8b4308e8aff4ffff8943 *08e9850300000fb77e068b76fc81ffffff00000f845e01000085ff0f846a030000f7c701000000 *74078b06e87df4ffff83c604d1ef75eae94f0300008d46f00fb770168b780881feffff0000750a *893c24e883fdffffeb1a85f67416f7c60100000074078b07e842f4ffff83c704d1ee75ea8b4304 *e833f4ffff894304eb680fb77e068b76fc81ffffff0000747085ff0f8400030000f7c701000000 *74078b06e808f4ffff83c604d1ef75eae9e50200008d46f00fb770168b780881feffff0000750a *893c24e80efdffffeb1a85f67416f7c60100000074078b07e8cdf3ffff83c704d1ee75ea83c308 *e9390400000fb77e068b76fc81ffffff00007505893424eb3885ff0f848b020000f7c701000000 *74078b06e893f3ffff83c604d1ef75eae9700200008d46f00fb770168b780881feffff0000750d *893c24e899fcffffe95102000085f60f8449020000f7c60100000074078b07e851f3ffff83c704 *d1ee75eae92e0200000fb77e068b76fc81ffffff00007505893424eb3885ff0f8407020000f7c7 *0100000074078b06e81af3ffff83c604d1ef75eae9ec0100008d46f00fb770168b780881feffff *0000750d893c24e820fcffffe9cd01000085f60f84c5010000f7c60100000074078b07e8d8f2ff *ff83c704d1ee75eae9aa0100008d46f00fb778168b680881ffffff0000742c85ff744df7c70100 *000074088b4500e8a6f2ffff83c504d1ef75e9eb340fb77e068b6efc81ffffff0000750a892c24 *e8b2fbffffeb1b85ff7417f7c70100000074088b4500e870f2ffff83c504d1ef75e90fb7068d7c *830483c30439fb73108b03e854f2ffff890383c30439fb72f00fb74602e9a00200008b4304e83a *f2ffff8943048b4308e82ff2ffff8943088b430ce824f2ffff89430c8b4310e819f2ffff894310 *0fb74316e96b0200008b4c24308b41108338007406c703545b10088b4304e8f3f1ffff89430483 *3df4ba1208000f84cc000000c705f4ba12080000000089d981e100f00f00c1e90789d8250000f0 *ff09c1837910000f84a40000008b41108d04c08b15acba12088b4482148943088b41108d04c08b *15acba1208895c8214eb7fc705e8ba1208000000008b4304e884f1ffff8943048b442410a3e8ba *1208eb0b8b4304e86ef1ffff89430489d981e100f00f00c1e90789d8250000f0ff09c183791000 *74238b41108d04c08b15acba12088b4482108943088b41108d04c08b15acba1208895c8210c705 *f4ba120800000000eb0b8b4304e81af1ffff89430483c30ce98a0100008b4308e807f1ffff8943 *088b43048d44830c894424048d430c890424e8370d00008b43048d5c830ce95d010000891c24e8 *d513000089c3e94e0100008b430483c002e926010000c705e8ba1208000000008b430483c0038d *348383c30c39f373108b03e8a7f0ffff890383c30439f372f08b5424108915e8ba12088b4c2418 *81e100f00f00c1e9078b442418250000f0ff09c183791000742b8b41108d04c08b15acba12088b *4482108b5424188942088b41108d04c08b15acba12088b4c2418894c8210c705f4ba1208000000 *00e9b7000000c74308000000008b430483c0038d348383c30c39f30f839c0000008b03e81af0ff *ff890383c30439f372f0e98700000089dec705e8ba120800000000891c24e885f9ffff8b442410 *a3e8ba120889d981e100f00f00c1e90789d8250000f0ff09c18379100074238b41108d04c08b15 *acba12088b4482108943088b41108d04c08b15acba1208895c8210c705f4ba1208000000008b46 *2883c00d8d1c83eb18895c24080fb7460489442404c70424a0771108e8ff26ffff833df4ba1208 *00742bc705f4ba120800000000a1e8ba12088d04c08b15acba12088d0482894424048b54241889 *1424e8cbeeffff8b4424148b4c24303b412c0f856bf9ffff3b5924e950f9ffff8b4c24148b5424 *30894a38895a3c83c41c5b5e5f5dc35557565383ec1ca1b4ba12088b00a3e8ba120889442414a1 *08bb120889c23b0504bb12080f84580400008d42fca308bb12088b5afc8b3383ee08895c24180f *b7460483f83b0f87a0030000ff2485347c1108c705e8ba1208000000008b4304e8beeeffff8943 *048b430ce8b3eeffff89430c8b4310e8a8eeffff894310e90d0300008d46f00fb770168b780881 *feffff00007505893c24eb2e85f6744bf7c60100000074078b07e876eeffff83c704d1ee75eaeb *330fb77e068b76fc81ffffff0000750a893424e882f7ffffeb1a85ff7416f7c70100000074078b *06e841eeffff83c604d1ef75ea8b4308e832eeffff894308e92a0200008d46f00fb770168b7808 *81feffff00007505893c24eb3585f60f840b020000f7c60100000074078b07e8fcedffff83c704 *d1ee75eae9f00100000fb77e068b76fc81ffffff0000750d893424e805f7ffffe9d401000085ff *0f84cc010000f7c70100000074078b06e8bdedffff83c604d1ef75eae9b10100008d46f00fb758 *168b700881fbffff0000742f85db0f8478020000f6c30174078b06e88bedffff83c604d1eb75ed *e9600200000fb75e068b76fc81fbffff0000750d893424e894f6ffffe94402000085db0f843c02 *0000f6c30174078b06e84fedffff83c604d1eb75ede9240200008d46f00fb778168b680881ffff *ff0000742c85ff744df7c70100000074088b4500e81dedffff83c504d1ef75e9eb340fb77e068b *6efc81ffffff0000750a892c24e829f6ffffeb1b85ff7417f7c70100000074088b4500e8e7ecff *ff83c504d1ef75e90fb7068d74830483c30439f30f83af0100008b03e8c7ecffff890383c30439 *f372f0e99a0100008b4304e8b1ecffff8943048b4308e8a6ecffff8943088b430ce89becffff89 *430c8b4310e890ecffff894310e9690100008b4304e880ecffff894304833df4ba1208000f842d *01000089d981e100f00f00c1e90789d8250000f0ff09c1837910000f840f0100008b41108d04c0 *8b15acba12088b4482148943088b41108d04c08b15acba1208895c8214e9e7000000c705e8ba12 *08000000008b4304e818ecffff894304e9c30000008b4304e808ecffff894304e9bd0000008b43 *04e8f8ebffff894304e9d10000008b4308e8e8ebffff8943088b43048d44830c894424048d430c *890424e818080000e9ab000000891c24e8bd0e0000e99e000000c705e8ba1208000000008b4304 *83c0038d348383c30c39f373108b03e89cebffff890383c30439f372f08b442414a3e8ba1208eb *45c74308000000008b430483c0038d348383c30c39f373528b03e86aebffff890383c30439f372 *f0eb40c705e8ba120800000000891c24e8daf4ffff8b7c2414893de8ba1208c705f4ba12080000 *0000eb18895c24080fb7460489442404c70424e0771108e89922ffff833df4ba120800742bc705 *f4ba120800000000a1e8ba12088d04c08b15acba12088d0482894424048b442418890424e865ea *ffff8b4c241883c1048b4424182500f00f00c1e8078b54241881e20000f0ff09d02b08c1f90289 *cbc1eb058b500c83e11fb801000000d3e009049a8b1508bb12083b1504bb12080f85a8fbffff83 *3d10bb120800742a833d14bb120800752ec70510bb120800000000a1b4ba12088b40048b4004a3 *14bb12088b00a318bb1208833d14bb1208000f84b00000008b1d14bb1208be01000000eb078305 *18bb120804a118bb12083b4304731f89c12b0bc1f90289cac1ea058b430c83e11f89f7d3e789f9 *230c9085c974d0a114bb12088b3518bb12083b700473468d4e042b08c1f90289cbc1eb058b500c *83e11fb801000000d3e023049a85c074058d4608eb338b1518bb1208a108bb12088910830508bb *120804830518bb120808e9c2faffffa114bb12088b4008a314bb120885c0740c8b00a318bb1208 *e950ffffff83c41c5b5e5f5dc383ec1c895c241089742414897c24188b5c24208b3de8ba12088b *1383ea080fb7420483f83b0f8769010000ff2485247d11080fb7028d74830483c30439f30f8364 *0100008b03e85de9ffff890383c30439f372f0e94f0100008b4304e847e9ffff894304e93f0100 *00c705e8ba12080000000089d981e100f00f00c1e90789d8250000f0ff09c18379100074238b41 *108d04c08b15acba12088b4482108943088b41108d04c08b15acba1208895c82108b430483c003 *8d348383c30c39f30f83910000008b03e8dde8ffff890383c30439f372f0eb7fc7430800000000 *8b430483c0038d348383c30c39f30f83b70000008b03e8b0e8ffff890383c30439f372f0e9a200 *0000c705e8ba120800000000891c24e81df2ffff89d981e100f00f00c1e90789d8250000f0ff09 *c18379100074238b41108d04c08b15acba12088b4482108943088b41108d04c08b15acba120889 *5c8210893de8ba1208c705f4ba120800000000eb418b4308e839e8ffff8943088b43048d44830c *894424048d430c890424e869040000eb1e891c24e8110b0000eb140fb7420489442404c7042420 *781108e87a1fffffa1f4ba1208c705f4ba1208000000008b5c24108b7424148b7c241883c41cc3 *5557565383ec0c8b7c24208b5f14bd4c0912088b73088b07a3e8ba1208c705f4ba120800000000 *39eb0f84850000008b1383ea080fb7420483f8227f0c83f8217d0e83f81f7409eb4683f837742b *eb3f8b4304e889e7ffff894304833df4ba120800740cc705f4ba120800000000eb18c743080000 *0000eb2a8b4304890424e8b5fdffff85c0741b896b0889ddeb140fb7420489442404c704244078 *1108e8b81effff89f38b760881fb4c0912080f857bffffff896f1483c40c5b5e5f5dc355575653 *83ec0c8b6c24208b75188b460889442408c705e8ba120800000000c705f4ba12080000000081fe *4c0912080f84610100008b1683ea080fb7420483e81f83f81c0f8721010000ff2485147e11088b *45108946088975108b460483c0038d3c868d5e0c39fb0f83110100008b03e8ade6ffff890383c3 *0439fb72f0e9fc0000008b4500a3e8ba12088b460483c0038d3c868d5e0c39fb73108b03e880e6 *ffff890383c30439fb72f0c705e8ba120800000000c7460800000000833df4ba1208000f84b600 *0000c705f4ba120800000000896c2404893424e8bde5ffffe99b0000008b4604e836e6ffff8946 *048b460ce82be6ffff89460c8b4610e820e6ffff894610eb15893424e8a0efffffeb0b8b4604e8 *09e6ffff8946048b4510894608897510eb588b4500a3e8ba12088b4604e8ebe5ffff894604c705 *e8ba120800000000833df4ba1208007415c705f4ba1208000000008b4514894608897514eb1dc7 *460800000000eb140fb7420489442404c7042480781108e81d1dffff8b7424088b460889442408 *81fe4c0912080f859ffeffff83c40c5b5e5f5dc357565383ec108b35dcba1208a1b4ba12088b00 *a3e8ba120883fe010f844e0100008b0e8d59f80fb741f80fb7530201d08b448604a3dcba12080f *b741f80fb7530201d08b15c0bc1208895486048935c0bc12080fb7430483f8110f849700000083 *f8117f0e83f8090f84be000000e9d900000083f818744b83f8220f85cb0000008b4604e8fbe4ff *ff894604833df4ba1208000f84c7000000c705f4ba1208000000008b4608a3c0bc1208a1b4ba12 *088b4014894608a1b4ba1208897014e99d0000000fb773068b5bfc81feffff00007505891c24eb *3585f60f8481000000f7c60100000074078b03e896e4ffff83c304d1ee75eaeb698d43f00fb758 *168b700881fbffff0000750a893424e89fedffffeb4d85db7449f6c30174078b06e861e4ffff83 *c604d1eb75edeb340fb7038d7c86048d5e0439fb73268b03e843e4ffff890383c30439fb72f0eb *140fb7430489442404c70424c0781108e89e1bffff8b35dcba120883fe010f85b2feffff83c410 *5b5e5fc35557565383ec0c8b742420bd000000008b4424248b5804bf000000003b7c2428732df6 *c30175098b06e8e0e3ffff89064783c604f7c71f000000750b458b4424248b5ca804eb02d1eb3b *7c242872d383c40c5b5e5f5dc35557565383ec1c8b7c24303b7c24340f83860100008b0783e80c *894424180fb7400883e82383f8090f874b010000ff2485887e11088b4704e87ae3ffff89470483 *c708e9490100008b5424188b420489c583e51f83c70489ee89c3c1eb0585ed7416f6c30175098b *07e849e3ffff890783c704d1eb4e75ea8b4424180fb7580a8b3081fbffff0000750d893424e851 *ecffffe9fa00000085db0f84f2000000f6c30174078b06e80ce3ffff83c604d1eb75ede9da0000 *0083c7048b07e8f6e2ffff890783c7048b5818895c240883c01889442404893c24e8cdfeffff8d *3c9fe9ad0000008b5424188b42048b1883c704895c24088b420489442404893c24e8a6feffff8d *3c9fe96dffffff8b6f048d770cbf080000000fb7ddf6c30175098b06e892e2ffff890683c604d1 *eb4f75ea89e8c1e80e25fc0300008d7c3028c1ed18744f8b07e86ee2ffff890783c7044d75f1eb *3e8b4708e85ce2ffff8947088b1083ea188d470c89442404891424e8ad04000089c7e9fffeffff *8b5424180fb7420889442404c7042400791108e8a019ffff3b7c24340f827afeffff83c41c5b5e *5f5dc357565383ec108b5c24208b534085d274538d7b448b420889434089d18b4344894208c742 *0c00000000837b440074068b434489500c890f8b43480342188943488b32893424e822f8ffff85 *c0740f8b431089442404893424e831e1ffff8b534085d275b083c4105b5e5fc38b4c240483f901 *741f8b110fb742f80fb752fa01d08b548104c74481040000000089d183fa0175e1c38b54240481 *fa4c09120874138b4208c742080000000089c23d4c09120875edc38b15a0ba120885d274138b42 *0c8902c7420c000000008b520885d275edc705a0ba120800000000c3565383ec048b7424108b1d *a0ba120885db740f8d4304890424ffd68b5b0885db75f183c4045b5ec3538b4424088b48308b01 *83e80c0fb7400883f82a740783f82c747feb268b41048138645b100874728138dc5b1008740e81 *38085c10087406c700645b100883c108ebc58b1183ea0c0fb7420883e82383f8067737ff2485b0 *7e11088b410489c2c1ea18c1e81025ff0000008d541015eb218b510483c203eb198b42048b10eb *118b41048b501883c202eb078b520483e21f428d0c91e96effffff5bc35557565383ec1cc74424 *14000000008b5424308b42288d448234894424108b5a30c744241800000000bd000000008d7bf8 *39c30f839d0100008b0383e80c668378082a0f851d01000089de8b43048138645b1008751085ed *0f84780100008d7bf8e970010000837c2418000f84c00000008b4424143943040f84a90000008b *4b048b110fb742fcf6840061121208010f859200000081fadc5b1008750b8b4104890424e86e29 *ffff8b4e0489c82500f00f00c1e80789ca81e20000f0ff09d08944240c8378100075128b542414 *8951048b4604c700645a1008eb4c8b46048b5424148950048b4e048139dc5b1008742e8b54240c *8b42108d04c08b15acba12088b4482148941088b54240c8b42108d04c08b4e048b15acba120889 *4c82148b4604c700445b100883c502892b897b04eb308b43048138645b100874168138dc5b1008 *740e8138085c10087406c700645b1008c7442418010000008b76048974241483c308eb66c74424 *180000000085ed74038d7bf8bd000000008b1383ea0c0fb7420883e82383f8067737ff2485cc7e *11088b430489c2c1ea18c1e81025ff0000008d541015eb218b530483c203eb198b42048b10eb11 *8b43048b501883c202eb078b520483e21f428d1c933b5c24100f8263feffff8d5f0889de8b4424 *303b7830762c8b07c1e00229c389d88b7f048d5f0829d829c689442408895c2404893424e85be9 *f3ff8b5424303b7a3077d48b44243089703083c41c5b5e5f5dc383ec0c8b442410833d78bb1208 *01750a890424e8c9fdffffeb08890424e823fdffff83c40cc38b54240489d02500f00f00c1e807 *81e20000f0ff89c109d1f6411c0174168b41103b05e8ba1208736dc705f4ba120801000000c38b *511483790c00740b8b510c8b4108894208eb068b41088942188379080074098b51088b410c8942 *0c8b41148b500c8b42143b05e8ba12087312a1e8ba12088d04c08b15acba12088b548204895114 *8b42148941108b4240894108894a4083491c01c383ec1c895c241089742414897c24188b542420 *8b7c24240fb7420c85c0740783f8017411eb298b420489c6c1ee0589c383e31feb488b42048b18 *895c240889442404893c24e840f9ffff8d3c9feb320fb7420c8b04858c30100889c6c1ee0589c3 *83e31f741bf7c60100000075098b07e823ddffff890783c704d1ee4b85dbebe389f88b5c24108b *7424148b7c241883c41cc35557565383ec0c8b6c24208b4508e8f2dcffff8945088b1083ea188d *7d0c0fb775060fb7420c83f801741783f8017f0685c07409eb3a83f8027417eb338b4204eb3989 *7424088b420489442404893c24eb14897424088b450883c018894424048d450c890424e88cf8ff *ff8d3cb7eb2e0fb7420c8b04858c30100889c3c1eb050fb7750685f67416f6c30175098b07e871 *dcffff890783c704d1eb4e75ea89f883c40c5b5e5f5dc390909083ec0c895c24088b4c241083f9 *010f84940000008b1183ea080fb7420483f811745583f8117f0783f8097450eb5d83f818743f83 *f82275538b590489d8c1e81480b8e0bc120800742489d82500f00f00c1e80789da81e20000f0ff *09d0f6401c01750a8b038941048d410589038b4908eb2d8b490ceb288b4904eb230fb7020fb752 *0201d08b4c8104eb140fb7420489442404c70424007f1108e83513ffff83f9010f856cffffff8b *5c240883c40cc35557565383ec2c8b7424403b7424440f83010300008b1683ea0c0fb7420883e8 *2383f8090f87ce020000ff2485e87f11088b6e0489e981e1ffff000083c60cbf08000000f6c101 *75338b1e89d8c1e81480b8e0bc120800742389d82500f00f00c1e80789da81e20000f0ff09d0f6 *401c0175098b0389068d4601890383c604d1e94f75c089e8c1e80e25fc0300008d74302889efc1 *ef180f846f0200008b0e89c8c1e81480b8e0bc120800742389c82500f00f00c1e80789ca81e200 *00f0ff09d0f6401c0175098b0189068d4601890183c6044f75c7e9310200008b420489c1c1e905 *83c60489c783e71f0f841b020000f6c10175338b1e89d8c1e81480b8e0bc120800742389d82500 *f00f00c1e80789da81e20000f0ff09d0f6401c0175098b0389068d4601890383c604d1e94f75c0 *e9d601000083c6048b0e89c8c1e81480b8e0bc120800742389c82500f00f00c1e80789ca81e200 *00f0ff09d0f6401c0175098b0189068d4601890183c6048b41188944242889f38d511889542424 *89442420c744241c000000008b791cbd0000000039c57361f7c70100000075338b0b89c8c1e814 *80b8e0bc120800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b018903 *8d430189014583c304f7c51f0000007512ff44241c8b44241c8b5424248b7c8204eb02d1ef3b6c *2420729f8b4424288d3486e90801000083c6048b42048b3889f389442418897c2414c744240c00 *0000008b6804c744241000000000397c24107367f7c50100000075338b0b89c8c1e81480b8e0bc *120800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d430189 *01ff44241083c304f64424101f7512ff44240c8b54240c8b4424188b6c9004eb02d1ed8b542414 *3954241072998d34beeb7189f38b46088b00a80174078b40ffa80175f98d70e88b4b0889c8c1e8 *1480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *43088d430989018d430c89442404893424e8e608000089c6eb140fb7420889442404c70424407f *1108e81810ffff3b7424440f82fffcffff83c42c5b5e5f5dc35383ec088b5c24108b4b0489c8c1 *e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b01 *8943048d430589018b4b0c89c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e2 *0000f0ff09d0f6401c01750a8b0189430c8d430d89010fb74312486683f80277358b4b1489c8c1 *e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b01 *8943148d43158901837b180074358b4b1889c8c1e81480b8e0bc120800742489c82500f00f00c1 *e80789ca81e20000f0ff09d0f6401c01750a8b018943188d431989018b43288d44833489442404 *8b4330890424e8dffbffff8b432883c00d8d048383c4085bc357565383ec108b74242085f60f84 *f00000008b0e8b1183ea080fb7420483e81c83f81f0f87ba000000ff2485108011088b410483c0 *038d3c8183c10c39f90f83b30000008b1989d8c1e81480b8e0bc120800742389d82500f00f00c1 *e80789da81e20000f0ff09d0f6401c0175098b0389018d4101890383c10439f972c6eb77890c24 *e867feffffeb6d89cf8b590889d8c1e81480b8e0bc120800742489d82500f00f00c1e80789da81 *e20000f0ff09d0f6401c01750a8b038941088d410989038b47048d44870c894424048d470c8904 *24e8fafaffffeb1e890c24e800080000eb140fb7420489442404c70424807f1108e8fe0dffff8b *760885f60f8510ffffff83c4105b5e5fc35383ec088b5c241085db74268b133b530473188b0283 *e80889542404890424e8e809000089c23b430472e88b5b0885db75da83c4085bc35557565383ec *1c8b742430897424148b068944241885f60f84ea0000008b1e3b5e040f83d4000000eb0383c304 *3b5e040f83c600000089d92b0ec1f90289cac1ea058b460c83e11fbf01000000d3e789f9230c90 *85c974d23b5e040f839b0000008b03a80174078b40ffa80175f983e80889df895c2404890424e8 *5609000089c389c529fdc1fd028b4424188d14a88b4c24148b01050010000039c276328d4f042b *0ec1f90289cac1ea0583e11fb801000000d3e089c1f7d18b460c210c908b4c24148b4908894c24 *148b01894424188b4c24188b17f6c201740b4a8b02890a89c2a80175f589178b4c24188d0ca989 *4c24183b5e040f823affffff8b760885f60f8516ffffff83c41c5b5e5f5dc35557565383ec1c8b *4424308b400489442414894424188b28c744240c0100000085c00f845c0100008b5424188b323b *72040f833a010000eb0383c6048b5c24183b73040f832801000089f18b4424182b08c1f90289ca *c1ea058b400c83e11fbb01000000d3e389d9230c9085c974ca8b4424183b70040f83f50000008d *4e042b08c1f90289cac1ea058b400c83e11fbb01000000d3e389d9230c9085c975148b44241489 *68048b5008895424148b2aff44240c89f389e98b16f6c201740b4a8b02890a89c2a80175f58913 *8b3e83ef08897c2404893424e8300400008944241039f5741789eb89f189c285c0740d8b0183c1 *04890383c3044a75f30fb74704f684006012120820743d89e981e100f00f00c1e90789e8250000 *f0ff09c18379100074238b41108d04c08b15acba12088b4482108945088b41108d04c08b15acba *1208896c821066837f043b750c896c2404893424e8eedcffff8b442410c1e00201c501c68b5c24 *183b73040f82d8feffff8b4424188b40088944241885c00f85a4feffff8b542414896a04837a08 *0074168b4208890424e8e9c0ffff8b5c2414c74308000000008b54240c8b44243089500889d083 *c41c5b5e5f5dc356538b74240c8b5e1481fb4c091208743f8b4b0889c8c1e81480b8e0bc120800 *742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943088d4309890189 *cb81f94c09120875c18b4e1489c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81 *e20000f0ff09d0f6401c01750a8b018946148d461589015b5ec357565383ec10c7042494ba1008 *ff542420833d30bc120800743b8b0d30bc120889c8c1e81480b8e0bc120800742789c82500f00f *00c1e80789ca81e20000f0ff09d0f6401c01750d8b01a330bc1208c70131bc1208833db8bc1208 *00743b8b0db8bc120889c8c1e81480b8e0bc120800742789c82500f00f00c1e80789ca81e20000 *f0ff09d0f6401c01750d8b01a3b8bc1208c701b9bc1208be010000003b3570bb1208735e8d04f6 *8b15acba12088d1c828b4b1089c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81 *e20000f0ff09d0f6401c01750a8b018943108d431189018d04f68b15acba12088d0482890424e8 *7dfeffff463b3570bb120872a28b0dd4b8120889c8c1e81480b8e0bc120800742789c82500f00f *00c1e80789ca81e20000f0ff09d0f6401c01750d8b01a3d4b81208c701d5b812088b0dbcbc1208 *89c8c1e81480b8e0bc120800742789c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175 *0d8b01a3bcbc1208c701bdbc12088b0dbcb8120885c9743a8b1989d8c1e81480b8e0bc12080074 *2389d82500f00f00c1e80789da81e20000f0ff09d0f6401c0175098b0389018d410189038b4910 *85c975c6a1c0bc1208890424e8c3f4ffffc7042494ba1008e8922fffffc7042494ba1008e8cdef *ffffbe000000003b3570bb1208737ebf000000008b15acba120889d38d04f50000000089c101f0 *3b7c820873578d140e8d04bfc1e0040344930489c38b4030890424e84efaffff8b4344890424e8 *3af9ffffa170bb12084839c67511837b0400740b8b4304890424e85ffaffff478b1dacba12088d *0cf5000000008d040e3b7c830872a9463b3570bb12087282a1b4ba12088b5804837b0400740b89 *1c24e838fbffff89430883c4105b5e5fc3538b5c24088b0b89c8c1e81480b8e0bc120800742389 *c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d430189015bc38b4424 *048b4c24080fb7510483fa3b7733ff249590801108b802000000c3b803000000c30fb7400683c0 *03c38b400483c002c38b4004ebf08b402883c00dc30fb74016c30fb7010fb751028d440201c355 *57565383ec108b5424248b4424288944240c0fb7420c85c0740a83f8017417e9a20000008b4204 *89c1c1e90589c583e51fe9ef0000008b42048b288b5c240c89442408896c2404c7042400000000 *8b7004bf0000000039ef735ff7c60100000075338b0b89c8c1e81480b8e0bc120800742389c825 *00f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d430189014783c304f7c71f *0000007510ff04248b14248b4424088b749004eb02d1ee3b7c240472a18b54240c8d14aa895424 *0ceb630fb7420c8b04858c30100889c1c1e90589c583e51f744cf6c101753b8b44240c8b1889d8 *c1e81480b8e0bc120800742789d82500f00f00c1e80789da81e20000f0ff09d0f6401c01750d8b *038b54240c890289d04089038344240c04d1e94d85edebb28b44240c83c4105b5e5f5dc3555756 *5383ec1c8b5424308b42088b00a80174078b40ffa80175f983e8188b54243083c20c895424188b *5424300fb772060fb7500c83fa01742483fa017f0985d27413e93b01000083fa020f849a000000 *e92d0100008b4004e9300100008b5c24188b40048944241489742410c744240c000000008b7804 *bd0000000039f50f83f1000000f7c70100000075338b0b89c8c1e81480b8e0bc120800742389c8 *2500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d430189014583c304f7c5 *1f0000007512ff44240c8b44240c8b5424148b7c8204eb02d1ef3b6c2410729fe98b0000008b5c *243083c30c8b5424308b42088d50188954240889742404c70424000000008b781cbd0000000039 *f5735ff7c70100000075338b0b89c8c1e81480b8e0bc120800742389c82500f00f00c1e80789ca *81e20000f0ff09d0f6401c0175098b0189038d430189014583c304f7c51f0000007510ff04248b *04248b5424088b7c8204eb02d1ef3b6c240472a18b4424188d04b089442418eb660fb7400c8b04 *858c30100889c3c1eb058b5424300fb7720685f6744af6c301753b8b4424188b0889c8c1e81480 *b8e0bc120800742789c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750d8b018b5424 *18890289d04089018344241804d1eb4e75b68b4424308b480889c8c1e81480b8e0bc120800742a *89c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175108b018b54243089420889d083c0 *0989018b44241883c41c5b5e5f5dc383ec1c895c241089742414897c24188b7424208b5c24240f *b7460483f83b0f8742040000ff2485808111088b4b0489c8c1e81480b8e0bc120800742489c825 *00f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943048d430589018d4308e91204 *00008b4b0489c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0 *f6401c01750a8b018943048d430589018b4b0889c8c1e81480b8e0bc1208000f84e602000089c8 *2500f00f00c1e80789ca81e20000f0ff09d0f6401c010f85c80200008b018943088d4309e9b902 *000089de8b4b0489c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff *09d0f6401c01750a8b018943048d430589018b4e0889c8c1e81480b8e0bc120800742489c82500 *f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018946088d460989018b4e0c89c8c1e8 *1480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *460c8d460d89018b4e1089c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e200 *00f0ff09d0f6401c01750a8b018946108d461189010fb74616e94d0200000fb7068d7c830483c3 *0439fb733a8b0b89c8c1e81480b8e0bc120800742389c82500f00f00c1e80789ca81e20000f0ff *09d0f6401c0175098b0189038d4301890183c30439fb72c60fb74602e9fc01000089de8b4b0489 *c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a *8b018943048d430589018b4e0889c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca *81e20000f0ff09d0f6401c01750a8b018946088d460989018b4e0c89c8c1e81480b8e0bc120800 *742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d890183 *7e10000f84a3000000eb6c89de8b4b0489c8c1e81480b8e0bc120800742489c82500f00f00c1e8 *0789ca81e20000f0ff09d0f6401c01750a8b018943048d430589018b4e0c89c8c1e81480b8e0bc *120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d *89018b4e1089c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0 *f6401c01750a8b018946108d461189018d4314e9170100008b4b0489c8c1e81480b8e0bc120800 *742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943048d430589018d *430ce9da00000089de8b4b0889c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81 *e20000f0ff09d0f6401c01750a8b018943088d430989018b46048d44860c894424048d460c8904 *24e8cfecffff8b46048d44860ce981000000891c24e8cbf9ffffeb778b430483c0028d0483eb6c *8b430483c0038d348383c30c39f3733a8b0b89c8c1e81480b8e0bc120800742389c82500f00f00 *c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d4301890183c30439f372c689d8eb1e *891c24e876efffffeb140fb7460489442404c70424c07f1108e866fffeff8b5c24108b7424148b *7c241883c41cc390908b5424048b44240889c1c1e90289c82342083b027d0589c823420cc35557 *565383ec0c8b7c24208b5c2424b900000000803b007434be01c8ff7fc1e1070fbe0301c189c8f7 *ee890424895424048b6c2404c1fd1389c89989e829d069c00700100029c143803b0075d189c823 *47083b077d0589c823470c83c40c5b5e5f5dc38b442408394424040f94c00fb6c0c383ec0c8b44 *2414894424048b442410890424e8b3d0f3ff85c00f94c00fb6c083c40cc383ec0cc74424047082 *1108c7042400100000e80100ffff8b4c24148b54241089448a1883c40cc35557565383ec2c8b7c *24408b1789d00347043dffff0f000f8f1301000089d085d2790505ff030000c1f80a894424288b *1789d085d279068d82ff0300002500fcffff29c2895424248b470489c5032f89e885ed79068d85 *ff030000c1f80a8944242089e885ed79068d85ff0300002500fcffff89ea29c28954241c75108b *4c2420894c2404893c24e84cffffff8b074089073b47047519c7070000000001c08947048b470c *89470801c083c80189470cff4714c744241400000000c7442418000000008b5424288b4497188b *4c24248b1c8885db74348b73088b0389442404893c24ff971810000039e8750d8b442414894308 *895c2414eb0b8b542418895308895c241889f385f675cc8b4c24288b448f188b4c24188b542424 *890c908b5424208b4497188b5424148b4c241c89148883c42c5b5e5f5dc357565383ec108b7424 *208b7c2424897c2404893424ff961810000089c185c079068d80ff03000089c3c1fb0a89c885c9 *79068d81ff0300002500fcffff89ca29c28b449e188b1c9085db741f897c24048b03890424ff96 *1c10000085c074058b4304eb0c8b5b0885db75e1b80000000083c4105b5e5fc383ec0c895c2408 *8b0d1cbb120885c9740a8b4108a31cbb1208eb3fc74424047d821108c70424fc0f0000e813fefe *ff89c18d400ca31cbb120889c28d81f00f000089c339c2730c8d420c89420889c239d872f4c742 *080000000089c88b5c240883c40cc38b542404a11cbb120889420889151cbb1208c35557565383 *ec0c8b7424208b6c2424ff46108b46148d04803946107c08893424e8b5fdffff896c2404893424 *ff961810000089c285c079068d80ff03000089c7c1ff0a89d085d279068d82ff0300002500fcff *ff89d329c3e82cffffff89288b5424288950048b54be188b149a8950088b54be1889049a83c40c *5b5e5f5dc35557565383ec0c8b742420bf000000008b44242489442404893424ff961810000089 *c285c079068d80ff030000c1f80a8944240889d085d279068d82ff0300002500fcffff89d529c5 *8b5424088b4496188b1ca885db745a8b442424894424048b03890424ff961c10000085c0743a83 *7c24280074098b542428395304752a85ff75108b4424088b5486188b43088904aaeb068b430889 *4708891c24e8cdfeffffff4e108b4304eb0e89df8b5b0885db75a6b80000000083c40c5b5e5f5d *c35557565383ec0c8b6c24248b5424208b42040302488944240885c0790505ff030000c1f80a89 *4424088b4c24208b410489c703394f89f885ff79068d87ff0300002500fcffff29c7837c240800 *785685ff78338b5424088b4c24208b4491188b1cb885db741d8b730885ed74088b4304890424ff *d5891c24e832feffff89f385f675e34f79cd8b5424088b4c24208b449118890424e8a7fcfeffbf *ff030000ff4c240879aa8b442420890424e890fcfeff83c40c5b5e5f5dc35383ec08c74424048b *821108c7042420100000e8bcfbfeff89c3c744240400000000890424e892fbffff8b53188d8200 *10000039c27315c7020000000083c2048b4318050010000039c272ebc70300000000c743040004 *0000c74308ff030000c7430cff070000c7431000000000c74314000400008b4424108983181000 *008b44241489831c10000089d883c4085bc383ec0cc744240493c31008c7042414c31008e859ff *ffff83c40cc383ec0cc7442404a2c31008c7042430c31008e83effffff83c40cc3905557565383 *ec5c8b5424708b42688b6830058800000089442430817d00d4351008750583c504eb1c817d0028 *5a10080f85a90200008b4d04894c242c83c508e95c0500008b5d00895c242c83c5048b74242c8b *060fb740fc83f8220f8789000000ff2485f08211088b44242c8b40048944242cebd98b5c242c0f *b74b068d048d0000000089ea29c289d083e8083b442430731f83ed08895d04c74500d43510088b *4c24708b41688968308b4168e9ed05000083ed08c74500d46d1008895d048d048d0000000029c5 *ba0000000039ca730d8b44930c894495004239ca72f38b5b08895c242ce9b604000083ed088b5c *242c895d04c74500d4351008e93d0200008b45000fb740fc83f824742183f8247f0e83f8230f84 *27040000e99601000083f82a0f84fa000000e9880100008b45003d1c0910087512c74424280100 *0000bf00000000e9030200003d680a100874263d480c100874073d380e1008750ac74424280100 *0000eb2f3d2810100874073d081210087512c744242801000000bf01000000e9c40100003d1416 *10087512c744242802000000bf02000000e9ab0100003de41a10087512c744242803000000bf03 *000000e9920100003d7c1d10087512c744242804000000bf04000000e9790100003d7c20100875 *12c744242805000000bf05000000e9600100003dfc2310087512c744242806000000bf06000000 *e9470100003d282810080f85a5000000c744242807000000bf07000000e92a0100008b45048138 *dc5b1008750b8b4004890424e88809ffff8b4d0489c82500f00f00c1e80789ca81e20000f0ff89 *c309d3837b100075128b44242c8941048b4504c700645a1008eb448b45048b54242c8950048b4d *048139dc5b100874268b43108d04c08b15acba12088b4482148941088b43108d04c08b4d048b15 *acba1208894c82148b4504c700445b100883c508e94bfeffff83ed088b4c242c894d04c74500d4 *3510088b5c24708b43688968308b436866c740100000e9ff0900008b550083ea0c0fb7420883e8 *2383f8067737ff24857c8311088b450489c2c1ea18c1e81025ff0000008d541015eb218b550483 *c203eb198b42048b10eb118b45048b501883c202eb078b520483e21f428b449500668378fc230f *843f0200008b7424708b46688968308b4668eb878b54242c8b020fb740fc83f81a0f842a010000 *83f81c0f85b601000089d68b42088b00668378fc1a0f85a401000083c5040fb752043b54242873 *53b90000000039d1730d8b448d0089448dfc4139d172f38b44242829d08b0485e8121208894495 *fc83ed040fb756068d04950000000029c5b90000000039d173408b448e0c89448d00410fb74606 *39c172efeb2d3b54242875330fb756068d04950000000029c5b90000000039d173118b448e0c89 *448d00410fb7460639c172ef8b76088974242ce98d0100000fb746068d440703890424e8fd32ff *ff89c3c700cc0710080fb746042b442428668943040fb7460601f8668943068b4608894308b900 *0000000fb7460689c239c1730d8b448e0c89448b0c4139d172f3b90000000039f973140fb77606 *8d14318b448d008944930c4139f972f0895c242ce98c00000083c5048b4c242c0fb759143b5c24 *28732fba0000000039da730d8b449500894495fc4239da72f38b44242829d88b0485e812120889 *449dfc83ed04e9d70000003b5c24280f84cd0000008d4703890424e84232ffff89c1c700cc0710 *0889d82b442428668941048b5c242c89590866897906ba0000000039fa730d8b4495008944910c *4239fa72f3894c242c8d6cbd00e9e2fbffff83ed088b74242c897504c74500d43510088b542470 *8b42688968308b4268e992fdffff83ed048b4c242c894d008b5d08895c242ca120bc12083b0528 *bc12080f82a700000083ed04c74500d43510088b7424708b46688968308b4668eb4f8b54950489 *54242ca120bc12083b0528bc120872798b5424708b42688968308b4268eb2ba120bc12083b0528 *bc1208722e83ed088b4c242c894d04c74500285a10088b5c24708b43688968308b436866c74010 *0100b800000000e9700800008d8538ffffff3b442430732383ed088b74242c897504c74500285a *10088b5424708b42688968308b4268e995000000c7442424010000008b4c242c8b590483c30889 *5c24208b710883c6088974241c8b410c83c00c894424188b511083c208895424148b4c24248b5c *24200fb7044b41894c242483f8330f87e7070000ff2485988311088b7424248b5424200fb70472 *46897424248d04850400000089e929c13b4c243073bd83ed088b5c242c895d04c74500285a1008 *8b7424708b46688968308b466866c740100100b801000000e99c0700008b5424248b4c24200fb7 *045142895424248b448500e9840000008b5c24248b7424200fb7045e430fb7145e43895c24248b *4485008945fc8b4495008945f8e9360100008b5424248b4c24200fb7045142895424240fb71451 *ff4424248b5c24240fb70c5943895c24248b4485008945fc8b4495008945f88b448d008945f483 *ed0ce909ffffff8b7424248b5424200fb7047246897424248b4c24188b04818945fce974020000 *8b5c24248b7424200fb7045e43895c2424c745f89c581008eb6d8b4c24248b5c24200fb7044b41 *894c2424c745f84c591008eb748b5424248b4c24200fb704514289542424c745f86c591008eb7b *8b7424248b5424200fb704724689742424c745f88c5910088b4c24188b0481eb618b5c24248b74 *24200fb7045e43895c2424c745f8b85910088b5424188b0482eb408b4c24248b5c24200fb7044b *41894c2424c745f8e05910088b7424188b0486eb1f8b5424248b4c24200fb704514289542424c7 *45f80c5a10088b5c24188b04838945fc83ed08e90efeffff83ed04c7450028101008e9fffdffff *83ed04c745001c091008e9f0fdffff83ed04c74500680a1008e9e1fdffff83ed04c74500480c10 *08e9d2fdffff83ed04c74500380e1008e9c3fdffff83ed04c7450008121008e9b4fdffff83ed04 *c7450014161008e9a5fdffff83ed04c74500e41a1008e996fdffff83ed04c745007c1d1008e987 *fdffff83ed04c745007c201008e978fdffff83ed04c74500fc231008e969fdffff83ed04c74500 *28281008e95afdffff8b7424248b4424200fb71c70460fb70c7046897424248d048d0000000029 *c5ba0000000039ca0f8d2efdffff8d041a8b74241c8b0486894495004239ca7cede916fdffff8b *4424248b5424200fb70c42400fb71c42408944242449780e8d140b8b448d00894495004979f28d *6c9d00e9e6fcffff8b4c24248b7424200fb71c4e41894c24248d430383f8037305b80300000089 *0424e8a22dffff8945fc66895806c70028081008eb3c8b4424248b5424200fb73442400fb71c42 *40894424248d430383f8027305b802000000890424e8682dffff8945fc6689580666897004c700 *cc07100883ed04e96dfcffff8b4c24248b5c24200fb7044b41894c24240fb70c4bff4424248b5c *85008b4500894308ba0000000039ca7d0d8b4495048944930c4239ca7cf38d6c8d04e92bfcffff *8b7424248b4424200fb70c7046897424248b5d008d048d0000000029c5ba0000000039ca0f8d01 *fcffff8b449304894495004239ca7cf3e9effbffff8b5424248b4c24200fb73451420fb71c5142 *895424248b5424148b04b20fb750f80fb740fa8d44100183f8027305b802000000890424e8962c *ffff89c18b5424148b04b28901ba0000000039da7d0d8b449500894491044239da7cf38d6c9dfc *894d00e987fbffff8b4c24248b5c24200fb7144b41894c24240fb70c4bff4424248b45008b000f *b740fe39d0eb468b7424248b4424200fb71470460fb70c7046897424248b45008b000fb740fe39 *d0eb4e8b4c24248b5c24200fb7144b41894c24240fb70c4bff4424248b45048b74241c3b04960f *8c15fbffffe9ff0200008b4424248b4c24200fb71441400fb70c4140894424248b45048b5c241c *3b04930f84eafaffffe9d40200008b7424248b5424200fb70472460fb714724689742424dd4504 *dd5c2440dd442440dd5c24508b4c241cdd0481dd5c2440dd442440dd5c2448dd442450dd442448 *d9c9dae9dfe09e0f8298faffffeb528b5424248b4c24200fb7045142895424240fb71451ff4424 *24dd4504dd5c2450dd442450dd5c24408b5c241cdd0483dd5c2450dd442450dd5c2448dd442440 *dd442448d9c9dae9dfe09e7a060f8444faffff89542424e93bfaffff8b4c24248b5c24200fb714 *4b41894c24240fb70c4bff4424248b4504894424348b4424348944243c8b74241c8b0496894424 *348b44243489442438d944243cd9442438d9c9dae9dfe09e0f82ebf9ffffe9d50100008b4c2424 *8b5c24200fb7144b41894c24240fb70c4bff4424248b45048944243c8b44243c894424348b7424 *1c8b04968944243c8b44243c89442438d9442434d9442438d9c9dae9dfe09e0f8a850100000f84 *90f9ffffe97a010000833dd8b81208000f8484f3ffff83ed04c74500d43510088b5424708b4268 *8968308b426866c740100100b802000000e9640100008b4d00894c242c83c504e90af4ffff83ed *04c7450038371008e9d9f5ffff83ed04c74500e4371008e9caf5ffff83ed04c7450090381008e9 *bbf5ffff83ed04c745004c391008e9acf5ffff83ed04c74500083a1008e99df5ffff83ed04c745 *0024371008e98ef5ffff8b5c24248b7424200fb7145e430fbf045e43895c242401449500e9cff8 *ffff8b4424248b5424200fb71c4240894424240fb70442ff4424248b4c241c8b3c81e808bff3ff *89c68b5424708b42688b4020890683ed54c1e31081cbff000000895d04c74500d03b10088b4268 *896830c74424040000000089d083c008890424e86bf7feff89c38b4c24708b41688b403083c054 *890424ffd7c744240400000000891c24e8d6f7feff89442470836c2470088b5c24708b43688d90 *88000000895424308b683083c5548b16895020e91df8ffff8b4c24248b5c24200fb70c4b894c24 *24e908f8ffffc704249a821108eb07c70424c0821108e84debfeff83c45c5b5e5f5dc39081ecac *000000899c24a80000008b8424b0000000894424108d5c24108d442414890424e800c1f3ffc784 *249400000000000000c744240800000000895c2404c704241a000000e8adbcf3ff8b9c24a80000 *0081c4ac000000c383ec2c895c24288b5c24308b442434890424e890ffffffe89e000000a3f0b8 *1208bad34d621089d8f7e2c1ea068954241869d2e803000029d369dbe8030000895c241c8b4424 *188b54241c8944241089542414c7442408000000008d44241089442404c7042401000000e800be *f3ff8b5c242883c42cc383ec2cc744241800000000c744241c000000008b4424188b54241c8944 *241089542414c7442408000000008d44241089442404c7042401000000e8b9bdf3ff83c42cc383 *ec1c895c2418c7442404000000008d442410890424e8dabff3ff8b4424108d1c808d1c9b8b4c24 *14baad8bdb6889c8f7eac1fa0dc1f91f29ca8d045a8b5c241883c41cc383ec0cc7042401000000 *e83101000083c40cc383ec2c895c24288b5c2434c744241400000000c744241800000000c74424 *10ffffffffc744240c22000000c744240807000000895c24048b442430890424e84abcf3ff83f8 *ff7552e890bcf3ff83380c740d833816752481fbffffffbf761c895c2404c7042480841108e835 *eafeffc7042401000000e84ce9feffe85dbcf3ff8b00890424e823bcf3ff89442404c70424df84 *1108e83fe9feff8b5c242883c42cc383ec1c895c241089742414897c24188b7c242081c7000010 *00897c2404c7042400000000e835ffffff89c389c681e6ffff0f00b80000100029f08944240489 *1c24e855bcf3ff83f8ff741a85f67e22897424048d041f29f0890424e83bbcf3ff83f8ff750cc7 *0424c0841108e8c6e8feff29f381c30000100089d88b5c24108b7424148b7c241883c41cc35653 *83ec148b74242089f3c1e314833d24bb1208007437895c2404a124bb1208890424e8abfeffff89 *c1a9ffff0f007427895c2404890424e8d3bbf3ff83f8ff750cc70424f3841108e85ee8feff891c *24e81fffffff89c18d040ba324bb1208ba0000000039f2731789d0c1e0148d0408c1e814c680e0 *bc1208014239f272e9013520bb120889c883c4145b5ec39090c70540bb120800000000c70544bb *120800000000c70548bb120800000400c7054cbb120800010000c70554bb120840000000c70558 *bb120800010000c70550bb120800000000c7055cbb120800000000c70568bb120800000000c705 *6cbb120800000840c70560bb120800000000c70564bb120800000040c70570bb120802000000c7 *0574bb120802000000c70578bb120801000000c7057cbb120800000000c70580bb120800000000 *c70584bb120800003e40c70590bb120814000000c35557565383ec0c8b6c2420e831bef3ff8b10 *eb01450fbe4500f64442012075f489efe81abef3ff8b10eb01470fbe07f6444201207505803f00 *75f039fd74688b44242483381e7e14c74424041f000000c70424a08f1108e801e7feffc7442404 *0c85110889fe29ee8d4601890424e85fe8feff89c389742408896c2404890424e84cbdf3ffc604 *1e008b5424248b028b542428891c828b442424ff0089fd803f000f8564ffffff83c40c5b5e5f5d *c35557565383ec3c8b7c245cc744241c00000000c74424042f0000008b5424548b02890424e8e9 *bbf3ff85c0740940eb0c43e9520100008b4c24548b01a330bb12088b4424508b30bb01000000c7 *00010000008b542458c70200000000833d38bb1208007415897c240889542404a138bb12088904 *24e8d7feffffc7042427851108e89cb8f3ff85c07414897c24088b4c2458894c2404890424e8b3 *feffffbd0000000039f30f8dfc0000008b5424548b049a89442404c704242e851108e889070000 *85c00f8566ffffff8b4c24548b049989442404c7042434851108e86a07000085c00f859f000000 *8b5424548b049a89442404c7042437851108e84b07000085c07407bd01000000eb728b4c24548b *049989442404c704242f851108e82907000085c07407bd00000000eb5083fd01751b8b44245883 *381e7f128b108b4c24548b04998904978b442458eb1885ed75188b4c24508b118b4c24548b0499 *8904918b442450ff00eb14c74424041f000000c70424a08f1108e831e5feff4339f30f8c25ffff *ffeb1f39f37d1b8b4c24508b118b4c24548b04998904918b442450ff004339f37ce58b5424508b *028b4c2454c70481000000008b5424588b02c7048700000000bb000000003b1a0f8dd60300008b *049f80382d7420a100171208890424e84bb7f3ff8b049f89442404c704243c851108e994030000 *8b049f0fbe400183e83f83f8390f8773030000ff2485789011088b049f83c002890424e8290500 *0085c0790505ff0f0000c1f80ca354bb1208e999010000c70588bb120801000000e9540300008b *049f80780200743683c002c744240800000000c744240400000000890424e8c7b5f3ffdd5c2428 *dd442428dd5c2430dd442430dd1d80bb1208e915030000c7057cbb120801000000e9060300008b *049f83c002c744240800000000c744240400000000890424e87fb5f3ffdd5c2430dd442430dd5c *2428dd442428dd1d60bb1208d9eedd0560bb1208e9a30000008b049f83c002890424e867040000 *c1e802a348bb1208e9e00000008b049f83c002890424e84c040000c1e802a34cbb1208e9c50000 *008b049f83c002890424e83104000085c0790505ff0f0000c1f80ca350bb1208e9a10000008b04 *9f83c002c744240800000000c744240400000000890424e8e4b4f3ffdd5c2430dd442430dd5c24 *28dd442428dd1d68bb1208dd0568bb1208d9eedde9dfe09e7768d905505b1108d9c9dae9dfe09e *0f8615020000eb558b049f83c002890424e8b5030000a370bb1208eb348b049f83c002890424e8 *a0030000a374bb1208eb1f8b049f83c002890424e88b03000085c0790505ff0f0000c1f80ca35c *bb120885c00f85c2010000eb02ddd88b049f890424e840040000e9ae010000c70544bb12080400 *0000eb16c70544bb120803000000eb0ac70544bb120802000000c744241458851108897c24108b *5424588b028944240c8b4c2454894c24088b5424508b0289442404891c24e8b9010000a340bb12 *0885c00f854f010000e942010000c70578bb120800000000e93b010000c70424c08f1108eb07c7 *042465851108e804e3feffe9190100008b049f80780200750fc70590bb120800000000e9090100 *008b049f83c002c744240800000000c744240400000000890424e882b3f3ffdd5c2430dd442430 *dd5c2428d90568901108dc4c2428d97c24260fb7442426660d000c6689442424d96c2424db5c24 *20d96c24268b4c2420ba6766666689c8f7eac1fa0389c8c1f81f29c28d149289d1c1e102740a83 *f9137f05b914000000890d90bb1208e981000000c7042400901108e94affffffc704247e851108 *e93effffffc704249b851108e932ffffffc7042440901108e926ffffff8b049f0fbe400283f863 *0f840fffffff83f8637f0685c0740deb1b83f8740f84fbfeffffeb108b049f89442404c70424b7 *851108eb0e8b049f89442404c70424d1851108e8e6e1feffc744241c01000000438b5424583b1a *0f8c2afcffff837c241c007441a100171208890424e876b3f3ffbb20131208833d201312080074 *1a8b0389442404c7042425861108e80ee2feff83c304833b0075e6c7042401000000e8ace0feff *83c43c5b5e5f5dc35557565381ec9c0000008bac24b00000008bbc24c0000000c7442404e88511 *088b04af83c002890424e82502000085c074088b3504171208eb4f8b04af807802007410c74424 *04ef85110883c002890424eb2f8b9424b80000008b02894424088b8424c4000000894424048d5c *2410891c24e803b7f3ffc7442404ef851108891c24e8d3b5f3ff89c685f675248b04af83c00289 *442408c7442404f1851108a104171208890424e85eb2f3ffe995000000bb000000003b9c24b400 *00007d288b9424b80000008b049a89442408c74424040b861108893424e82db2f3ff433b9c24b4 *0000007cd88974240cc744240805000000c744240401000000c704240f861108e883b6f3ffbb00 *0000003b9c24bc0000007d218b049f89442408c74424040b861108893424e8deb1f3ff433b9c24 *bc0000007cdf89742404c704240a000000e824b4f3ff89f081c49c0000005b5e5f5dc383ec3c89 *5c2434897c24388b5c2440803b00750ab800000000e9b3000000c744240800000000c744240400 *000000891c24e8b1b0f3ffdd5c2418dd442418dd5c2420dd442420dd5c242889dffcb9ffffffff *b000f2aef7d10fbe440bfe83f867740583f8477508d9056c901108eb3483f86d740583f84d7508 *d90570901108eb2283f86b740583f84b7508d90568901108eb1083f877740583f857750ed90574 *901108dc4c2428dd5c2428d97c24160fb7442416660d000c6689442414dd442428d96c2414db5c *2410d96c24168b4424108b5c24348b7c243883c43cc383ec0c8b44241089442404c70424158611 *08e83adffeffc7042401000000e851defeff83ec0c8b442414894424048b442410890424e850b0 *f3ff85c00f94c00fb6c083c40cc390909090909090905589e583ec20e8b100000081c125310100 *dd4508d981007cffff8975f8897dfcdde1dfe09e7619ddd8ddd831c031d28b75f88b7dfc89ec5d *c38db42600000000d97deed9c131f60fb745eed889047cffff660d000c668945ecd96decdf7de0 *d96dee8b45e089c75056df2c2483c40885c07841dd5df0dd45f0deeadde9dfe09e761ed9e031d2 *d96decdf7de0d96dee8b45e029c619d789f089faeb938d742600d96decdf7de0d96dee31d28b45 *e001c611d7ebe2d881f445ffffebb78b0c24c35589e5575683ec288b7d0cc745e8000000008b75 *088b4510c745ec0000000085ff8b5514c745f4000000000f883f01000085d20f88270100008975 *e085d289fe8945d48955e4757839f8764489fa8b45e0f775d489c78d76008dbc2700000000c745 *d000000000897de88b55d08b4df48b45e88955ec85c98b55ec7407f7d883d200f7da83c4285e5f *5dc3908d7426008b7dd485ff750eb80100000031c931d2f7f18945d489f031d2f775d48945d08b *45e0f775d489c7ebae8db42600000000397de4760b31ffeb978db426000000000fbd45e489c783 *f71f751d3b75e4770e8b55d431ff3955e00f8272ffffffbf01000000e968ffffff8b55e4b82000 *000089f929f88945dcd3e28b45d40fb64ddcd3e889f9d365d409c28b45e00fb64ddc8955e489f2 *d3ea89f9d3e60fb64ddcd3e809c689f989f0f775e4d365e089d689c78b45d4f7e739f2770f0f85 *10ffffff3b45e00f8607ffffff4fe901ffffff90f755f4f7d883d200f7dae9cafeffff90c745f4 *fffffffff7de83d700f7dfe9aefeffff909090909090909090909090905589e5575683ec308b7d *0cc745e0000000008b75088b4510c745e40000000085ff8b5514c745ec000000000f88bf010000 *85d20f88a80100008945cc8d4df085d2894de88955dc8975d8897dd4757939f8764d89f089faf7 *75cc8955d88b7de885ff741bc745e4000000008b45d88945e08b45e88b55e08b4de48910894804 *8b45ec85c0740af75df08355f400f75df48b45f08b55f483c4305e5f5dc38d76008b45cc85c075 *0db80100000031d2f775cc8945cc8b45d48b55dcf775cc8955d48b45d8f775cceb928b55d43955 *dc76148975e08b45e08955e48b55e48945f08955f4eb9b0fbd45dc89c683f61f75518b55dc3955 *d477088b4dcc394dd872128b55d48b45d82b45cc1b55dc8945d88955d48b75e885f60f8463ffff *ff8b45d88b55d48b4de88945e08b45e08955e48b55e48901895104e944ffffff908d7426008b55 *dcb82000000089f129f08b7dd48945d0d3e28b45cc0fb64dd0d3e889f1d365cc09c28b45d80fb6 *4dd08955dc8b55d4d3ea89f1d3e70fb64dd0d3e809c7897dd489f889f1f775dc8955d4d365d8f7 *65cc3b55d489c7774074398b4de885c90f84d9feffff8b4dd48b45d829f819d1894dd489ca0fb6 *4dd08945d8d3e289f1d3e809c28b45d48955e0d3e88945e4e99dfeffff3b45d876c22b7dcc1b55 *dcebbaf7d883d200f7dae94cfeffff8d7600c745ecfffffffff7de83d700f7dfe92efeffff9090 *90909090909090909090905589e5575683ec208b5514c745f0000000008b75088b7d0cc745f400 *0000008b451085d28975e889fe8945dc8955ec755f39f8762b89fa8b45e8f775dc89c790c745d8 *00000000897df08b55d88b45f08955f48b55f483c4205e5f5dc38d76008b45dc85c0750eb80100 *000031c931d2f7f18945dc89f031d2f775dc8945d88b45e8f775dc89c7ebbe8db4260000000039 *7dec760b31ffeba78db426000000000fbd45ec89c783f71f75193b75ec770a8b55dc31ff3955e8 *7286bf01000000e97cffffff8b55ecb82000000089f929f88945e4d3e28b45dc0fb64de4d3e889 *f9d365dc09c28b45e80fb64de48955ec89f2d3ea89f9d3e60fb64de4d3e809c689f989f0f775ec *d365e889d689c78b45dcf7e739f2770f0f8524ffffff3b45e80f861bffffff4fe915ffffff9090 *9090905589e58d4df0575683ec308b5514c745e0000000008b75088b7d0cc745e4000000008b45 *1085d2894dec8955dc8945cc8975d8897dd4756839f8763989f089faf775cc8955d88b4dec85c9 *741bc745e4000000008b45d88945e08b45ec8b55e08b4de489108948048b45f08b55f483c4305e *5f5dc38b75cc85f6750db80100000031d2f775cc8945cc8b45d48b55dcf775cc8955d48b45d8f7 *75cceba68d76008b55d43955dc76188975e08b45e08955e48b55e48945f08955f4ebac8d742600 *0fbd45dc89c683f61f754c8b55dc3955d477088b4dcc394dd872128b55d48b45d82b45cc1b55dc *8945d88955d48b55ec85d20f8470ffffff8b45d88b55d48b4dec8945e08b45e08955e48b55e489 *01895104e951ffffff8b55dcb82000000089f129f08b7dd48945d0d3e28b45cc0fb64dd0d3e889 *f1d365cc09c28b45d80fb64dd08955dc8b55d4d3ea89f1d3e70fb64dd0d3e809c7897dd489f889 *f1f775dc8955d4d365d8f765cc3b55d489c7774074398b45ec85c00f84ebfeffff8b4dd48b45d8 *29f819d1894dd489ca0fb64dd08945d8d3e289f1d3e809c28b45d48955e0d3e88945e4e9affeff *ff3b45d876c22b7dcc1b55dcebba90909090909090905589e5575631f65383ec0ce8a000000081 *c3d0290100e809a8f3ff8d93348cffff8d83348cffff29c2c1fa0239d6731c89d78db426000000 *008dbc2700000000ff94b3348cffff4639fe72f483c40c5b5e5f5dc38db6000000008dbf000000 *005589e583ec08891c24e84200000081c372290100897424048d83348cffff8d93348cffff29d0 *c1f80285c08d70ff7510e85b0000008b1c248b74240489ec5dc3ff94b3348cffff89f04e85c075 *f2ebe08b1c24c39090909090909090909090905589e55383ec04bb4c151208a14c15120883f8ff *74168d76008dbc270000000083eb04ffd08b0383f8ff75f4585b5dc35589e553e8000000005b81 *c3e728010052e87aadf3ff8b5dfcc9c30000000000000000000000000000000000000000000300 *0000010002003d2d3d2d000000002d3d2d3d20436162616c20657865637574696e673a20000055 *6e7265636f676e6973656420666c6167733a200000000053696d706c6520436162616c204d616b *6566696c6520696e7465726661636520646f65736e277420737570706f727420636f6d6d616e64 *3a20000000436f6e666967757265206661696c65642e000000436f6e6669677572652053756363 *65656465642e000000002d2d7072656669783d0000002d2d776974682d68632d706b673d000067 *6863006e6863393800000068756773000000002e2e2f2e2e2f446973747269627574696f6e2f4d *616b652e68733a3130307c66756e6374696f6e2073686f77484300002d2d776974682d68633d00 *002d2d776974682d68633d00002e2f636f6e66696775726520000000004275696c64206661696c *65642e0000004275696c64205375636365656465642e000000006d616b6500000000436c65616e *206661696c65642e000000436c65616e205375636365656465642e000000006d616b6520636c65 *616e0000207072656669783d000000006d616b6520696e7374616c6c00000000496e7374616c6c *206661696c65642e00496e7374616c6c205375636365656465642e00006d616b65207265676973 *7465720000006d616b6520696e7374616c6c000000005364697374206661696c65642e00000053 *64697374205375636365656465642e000000006d616b6520646973740000005061747465726e20 *6d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e *2f446973747269627574696f6e2f4d616b652e68733a3136390000000052656769737465722066 *61696c65642e000000005265676973746572205375636365656465642e006d616b652072656769 *73746572000000556e7265676973746572206661696c65642e0000556e72656769737465722053 *75636365656465642e0000006d616b6520756e7265676973746572002720726571756972657320 *616e20617267756d656e7420006f7074696f6e2060000000002d2d00002d2d00005b3d00002d2d *00002020000020200000202000002720697320616d626967756f75733b20636f756c6420626520 *6f6e65206f663a000000006f7074696f6e2060000000002d2d00002d2d00002720646f65736e27 *7420616c6c6f7720616e20617267756d656e740a000000002d2d00006f7074696f6e2060000000 *002d2d00002d2d00002d2d00002d2d0000270a0000756e7265636f676e697a6564206f7074696f *6e2060000000446973747269627574696f6e2e56657273696f6e2e56657273696f6e0000000076 *657273696f6e54616773203d2000002c20000076657273696f6e4272616e6368203d2000000000 *56657273696f6e207b0000005061747465726e206d61746368206661696c75726520696e20646f *2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5665727369 *6f6e2e68733a3132380056657273696f6e005061747465726e206d61746368206661696c757265 *20696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e *2f56657273696f6e2e68733a313238005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f56 *657273696f6e2e68733a3132380076657273696f6e4272616e63680000005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f56657273696f6e2e68733a313238005061747465726e206d6174 *6368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469 *73747269627574696f6e2f56657273696f6e2e68733a313238005061747465726e206d61746368 *206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374 *7269627574696f6e2f56657273696f6e2e68733a3132380076657273696f6e5461677300506174 *7465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20617420 *2e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68733a313238005061747465 *726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e *2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68733a313238003d3d00003e3d00 *003c3d00002d616e7900000000262600007c7c0000416e7956657273696f6e0000546869735665 *7273696f6e20000000004c6174657256657273696f6e200000004561726c69657256657273696f *6e2000556e696f6e56657273696f6e52616e6765732000496e7465727365637456657273696f6e *52616e67657320005061747465726e206d61746368206661696c75726520696e20646f20657870 *72657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68 *733a32303100496e7465727365637456657273696f6e52616e67657300005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f56657273696f6e2e68733a32303100556e696f6e56657273696f *6e52616e67657300005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e *68733a323031004561726c69657256657273696f6e00005061747465726e206d61746368206661 *696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962 *7574696f6e2f56657273696f6e2e68733a323031004c6174657256657273696f6e000000005061 *747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174 *202e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68733a3230310054686973 *56657273696f6e005061747465726e206d61746368206661696c75726520696e20646f20657870 *72657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68 *733a32303100416e7956657273696f6e00005061747465726e206d61746368206661696c757265 *20696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e *2f56657273696f6e2e68733a32363100446570656e64656e63790000446570656e64656e637920 *002d616e79000000007c7c00002626000047504c004c47504c0000000042534433000000004253 *4434000000005075626c6963446f6d61696e00000000416c6c5269676874735265736572766564 *0000004f746865724c6963656e7365000000004f746865724c6963656e736500000000416c6c52 *696768747352657365727665640000005075626c6963446f6d61696e0000000042534434000000 *0042534433000000004c47504c0000000047504c0043616e6e6f742066696e643a200000005761 *726e696e673a2000000020746f2000000000636f707920000000207769746820616e7920737566 *6669783a2000004572726f723a20436f756c64206e6f742066696e64206d6f64756c653a200000 *2e6100006c69624853000000746d70004f5054494f4e53004f5054494f4e535f474843004f5054 *494f4e535f4e484339380000004f5054494f4e535f48554753000000004c414e47554147450000 *0000494e434c554445007b2d2300232d7d002e6c68730000000053657475702e64657363726970 *74696f6e0000004d756c7469706c65206465736372697074696f6e2066696c657320666f756e64 *2e2020506c6561736520757365206f6e6c79206f6e65206f66203a2000000000636162616c0000 *004e6f206465736372697074696f6e2066696c6520666f756e642c20706c656173652063726561 *7465206120636162616c2d666f726d6174746564206465736372697074696f6e2066696c652077 *69746820746865206e616d65203c706b676e616d653e2e000000005468652066696c656e616d65 *202253657475702e6465736372697074696f6e2220697320646570726563617465642c20706c65 *617365206d6f766520746f203c706b676e616d653e2e0000005468652066696c656e616d652022 *53657475702e6465736372697074696f6e2220697320646570726563617465642e2020506c6561 *7365206d6f7665206f7574206f6620746865207761792e205573696e6720220000000054686520 *66696c656e616d65202253657475702e6465736372697074696f6e222069732064657072656361 *7465642e2020506c65617365206d6f7665206f7574206f6620746865207761792e205573696e67 *2022000000006275696c64696e666f0000004d756c7469706c652066696c657320776974682065 *7874656e73696f6e20000053686f7720746869732068656c7020746578740068656c7000000000 *683f000052656d6f766573202e68692c202e6f2c2070726570726f63657373656420736f757263 *65732c206574632e0a00000000436c65616e2075702061667465722061206275696c642e00636c *65616e000000436f6e74726f6c20766572626f7369747920286e20697320302d2d352c206e6f72 *6d616c20766572626f73697479206c6576656c20697320312c202d7620616c6f6e652069732065 *71756976616c656e7420746f202d763329000000766572626f7365005468697320697320746865 *206c6f6e67206465736372697074696f6e20666f72206275696c642e0a000000004d616b652074 *686973207061636b61676520726561647920666f7220696e7374616c6c6174696f6e2e00000062 *75696c64000000526571756972657320637070687320616e6420686164646f636b2e0047656e65 *7261746520486164646f636b2048544d4c20636f64652066726f6d204578706f7365642d4d6f64 *756c65732e00000000686164646f636b0047656e65726174652050726f6772616d617469636120 *50726f6a6563742e0000706665002864656661756c74292075706f6e2072656769737472617469 *6f6e2c2072656769737465722074686973207061636b61676520696e207468652073797374656d *2d77696465207061636b6167652064617461626173650000676c6f62616c000075706f6e207265 *67697374726174696f6e2c2072656769737465722074686973207061636b61676520696e207468 *6520757365722773206c6f63616c207061636b6167652064617461626173650000007573657200 *0000005b444550524543415445442c2075736520636f70795d000044495200696e7374616c6c2d *7072656669780000556e6c696b652074686520636f707920636f6d6d616e642c20696e7374616c *6c2063616c6c732074686520726567697374657220636f6d6d616e642e0a496620796f75207761 *6e7420746f20696e7374616c6c20696e746f2061206c6f636174696f6e2074686174206973206e *6f742077686174207761730a73706563696669656420696e2074686520636f6e66696775726520 *737465702c207573652074686520636f707920636f6d6d616e642e0a00000000436f7079207468 *652066696c657320696e746f2074686520696e7374616c6c206c6f636174696f6e732e2052756e *2072656769737465722e00000000696e7374616c6c007370656369667920746865206469726563 *746f727920696e20776869636820746f20706c61636520696e7374616c6c65642066696c657300 *44495200636f70792d70726566697800446f6573206e6f742063616c6c2072656769737465722c *20616e6420616c6c6f777320612070726566697820617420696e7374616c6c2074696d650a5769 *74686f75742074686520636f70792d70726566697820666c61672c20636f6e6669677572652064 *657465726d696e6573206c6f636174696f6e2e0a000000436f7079207468652066696c65732069 *6e746f2074686520696e7374616c6c206c6f636174696f6e732e0000636f707900000000546869 *7320697320746865206c6f6e67206465736372697074696f6e20666f722073646973742e0a0000 *000047656e6572617465206120736f7572636520646973747269627574696f6e2066696c652028 *2e7461722e677a206f72202e7a6970292e000073646973740000002864656661756c7429207570 *6f6e20726567697374726174696f6e2c2072656769737465722074686973207061636b61676520 *696e207468652073797374656d2d77696465207061636b6167652064617461626173650000676c *6f62616c000075706f6e20726567697374726174696f6e2c207265676973746572207468697320 *7061636b61676520696e2074686520757365722773206c6f63616c207061636b61676520646174 *616261736500000075736572000000005468697320697320746865206c6f6e6720646573637269 *7074696f6e20666f722072656769737465722e0a0052656769737465722074686973207061636b *61676520776974682074686520636f6d70696c65722e0000000072656769737465720000000054 *68697320697320746865206c6f6e67206465736372697074696f6e20666f7220756e7265676973 *7465722e0a000000556e72656769737465722074686973207061636b6167652077697468207468 *6520636f6d70696c65722e0000756e72656769737465720000205b464c4147535d0a0a466c6167 *7320666f722000000000205b474c4f42414c20464c4147535d200000000055736167653a200055 *6e657870656374656420666c616721000000004572726f72733a2000000000556e657870656374 *656420666c616721000000002d2d696e7374616c6c2d7072656669782069732064657072656361 *7465642e2055736520636f707920636f6d6d616e6420696e73746561642e0000002d2d696e7374 *616c6c2d70726566697820697320646570726563617465642e2055736520636f707920636f6d6d *616e6420696e73746561642e0000004572726f72733a2000000000556e65787065637465642066 *6c616721000000004572726f72733a2000000000556e657870656374656420666c616721000000 *004572726f72733a20000000005061747465726e206d61746368206661696c75726520696e2064 *6f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475 *702e68733a3734000000004f74686572436f6d70696c657200000048656c69756d000048424300 *48756773000000004e48430047484300474843004e48430048756773000000004842430048656c *69756d00004f74686572436f6d70696c65722000006769766520746865207061746820746f2063 *7070687300005041544800000000776974682d6370706873000067697665207468652070617468 *20746f20687363326873005041544800000000776974682d687363326873006769766520746865 *207061746820746f20616c65780000005041544800000000776974682d616c6578000000676976 *6520746865207061746820746f20686170707900005041544800000000776974682d6861707079 *00006769766520746865207061746820746f20686164646f636b00000000504154480000000077 *6974682d686164646f636b0000000062616b6520746869732070726566697820696e2070726570 *61726174696f6e206f6620696e7374616c6c6174696f6e00444952007072656669780000676976 *6520746865207061746820746f20746865207061636b61676520746f6f6c000000504154480000 *0000776974682d68632d706b67006769766520746865207061746820746f206120706172746963 *756c617220636f6d70696c657200005041544800000000776974682d636f6d70696c6572000000 *636f6d70696c65207769746820687567730000006875677300000000636f6d70696c6520776974 *68204e4843000000006e686300636f6d70696c6520776974682047484300000000676863005468 *697320697320746865206c6f6e67206465736372697074696f6e20666f7220636f6e6669677572 *652e0a000000005072657061726520746f206275696c6420746865207061636b6167652e000000 *636f6e66696775726500000020434f4d4d414e44202d2d68656c70272e0000000a466f72206d6f *726520696e666f726d6174696f6e2061626f7574206120636f6d6d616e642c2074727920270000 *0000202020200000000020200000436f6d6d616e64733a000000205b474c4f42414c20464c4147 *535d20434f4d4d414e44205b464c4147535d0a0a476c6f62616c20666c6167733a000055736167 *653a20004572726f72733a004e6f20636f6d6d616e6420676976656e2028747279202d2d68656c *70290000002028747279202d2d68656c7029000000556e7265636f676e6973656420636f6d6d61 *6e643a200000556e657870656374656420666c616721000000004572726f72733a200000000050 *61747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e2061 *74202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a373700000000436f6d *70696c6572000000005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e6873 *3a3737000000005061747465726e206d61746368206661696c75726520696e20646f2065787072 *657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a37 *3700000000636f6d70696c6572466c61766f7200005061747465726e206d61746368206661696c *75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574 *696f6e2f53657475702e68733a3737000000005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f53657475702e68733a3737000000005061747465726e206d61746368206661696c75726520 *696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f *53657475702e68733a373700000000636f6d70696c657256657273696f6e005061747465726e20 *6d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e *2f446973747269627574696f6e2f53657475702e68733a3737000000005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f53657475702e68733a3737000000005061747465726e206d617463 *68206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973 *747269627574696f6e2f53657475702e68733a373700000000636f6d70696c6572506174680000 *00005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f *6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a373700000000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a3737000000005061 *747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174 *202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a373700000000636f6d70 *696c6572506b67546f6f6c005061747465726e206d61746368206661696c75726520696e20646f *2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5365747570 *2e68733a3737000000005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68 *733a373700000000636f6d70696c6572506b67546f6f6c203d2000002c200000636f6d70696c65 *7250617468203d20002c200000636f6d70696c657256657273696f6e203d2000002c200000636f *6d70696c6572466c61766f72203d20000000436f6d70696c6572207b0000636f6e666967507265 *666978203d20002c200000636f6e6669674370706873203d2000002c200000636f6e6669674873 *63326873203d20002c200000636f6e666967416c6578203d200000002c200000636f6e66696748 *61707079203d2000002c200000636f6e666967486164646f636b203d20000000002c200000636f *6e6669674863506b67203d2000002c200000636f6e666967486350617468203d20002c20000063 *6f6e6669674863466c61766f72203d20000000436f6e666967466c616773207b00000048656c70 *436d6400556e7265676973746572436d640000005265676973746572436d642000000000534469 *7374436d6400000000496e7374616c6c436d64200050726f6772616d6174696361436d64004861 *64646f636b436d640000436f7079436d642000000000436c65616e436d64000000004275696c64 *436d6400000000436f6e666967436d642000004c69667420000000566572626f73652000000000 *496e7374507265666978200048656c70466c616700000000476c6f62616c466c61670000557365 *72466c61670000000057697468437070687320000057697468487363326873200057697468416c *65782000000057697468486170707920000057697468486164646f636b20000000005072656669 *782000576974684863506b6720000057697468436f6d70696c65722000000048756773466c6167 *000000004e6863466c616700476863466c6167002220646f65736e27742065786973742e204361 *6e6e6f7420636f6e74696e75652e0000004572726f722050617273696e673a2066696c65202200 *0000556e6b6e6f776e206669656c642027005061747465726e206d61746368206661696c757265 *20696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e *2f5061636b6167654465736372697074696f6e2e68733a31373700004275696c64496e666f0000 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e20646f20 *65787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167 *654465736372697074696f6e2e68733a31373700006275696c6461626c65000000506174746572 *6e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f *2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31 *373700005061747465726e206d61746368206661696c75726520696e20646f2065787072657373 *696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269 *7074696f6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e20 *646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f506163 *6b6167654465736372697074696f6e2e68733a313737000063634f7074696f6e73000000506174 *7465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20617420 *2e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68 *733a31373700005061747465726e206d61746368206661696c75726520696e20646f2065787072 *657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573 *6372697074696f6e2e68733a31373700005061747465726e206d61746368206661696c75726520 *696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f *5061636b6167654465736372697074696f6e2e68733a31373700006c644f7074696f6e73000000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765 *4465736372697074696f6e2e68733a31373700005061747465726e206d61746368206661696c75 *726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962757469 *6f6e2f5061636b6167654465736372697074696f6e2e68733a31373700006672616d65776f726b *7300005061747465726e206d61746368206661696c75726520696e20646f206578707265737369 *6f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363726970 *74696f6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e2064 *6f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b *6167654465736372697074696f6e2e68733a31373700005061747465726e206d61746368206661 *696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962 *7574696f6e2f5061636b6167654465736372697074696f6e2e68733a313737000063536f757263 *6573000000005061747465726e206d61746368206661696c75726520696e20646f206578707265 *7373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363 *72697074696f6e2e68733a31373700005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f50 *61636b6167654465736372697074696f6e2e68733a31373700005061747465726e206d61746368 *206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374 *7269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000687353 *6f75726365446972005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544 *65736372697074696f6e2e68733a31373700005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a31373700005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000 *6f746865724d6f64756c6573000000005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f50 *61636b6167654465736372697074696f6e2e68733a31373700005061747465726e206d61746368 *206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374 *7269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000506174 *7465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20617420 *2e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68 *733a3137370000657874656e73696f6e7300005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a31373700005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a313737000065787472614c6962730000005061747465726e206d6174636820666169 *6c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472696275 *74696f6e2f5061636b6167654465736372697074696f6e2e68733a31373700005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137 *3700005061747465726e206d61746368206661696c75726520696e20646f206578707265737369 *6f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363726970 *74696f6e2e68733a313737000065787472614c696244697273000000005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765 *4465736372697074696f6e2e68733a3137370000696e636c75646544697273005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137 *3700005061747465726e206d61746368206661696c75726520696e20646f206578707265737369 *6f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363726970 *74696f6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e2064 *6f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b *6167654465736372697074696f6e2e68733a3137370000696e636c756465730000000050617474 *65726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e *2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e6873 *3a31373700005061747465726e206d61746368206661696c75726520696e20646f206578707265 *7373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363 *72697074696f6e2e68733a31373700005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f50 *61636b6167654465736372697074696f6e2e68733a31373700006f7074696f6e73005061747465 *726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e *2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a *31373700005061747465726e206d61746368206661696c75726520696e20646f20657870726573 *73696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372 *697074696f6e2e68733a31373700006f7074696f6e73203d2000002c200000696e636c75646573 *203d20002c200000696e636c75646544697273203d2000002c20000065787472614c6962446972 *73203d20002c20000065787472614c696273203d20000000002c200000657874656e73696f6e73 *203d200000002c2000006f746865724d6f64756c6573203d20002c2000006873536f7572636544 *6972203d2000002c20000063536f7572636573203d20002c2000006672616d65776f726b73203d *200000002c2000006c644f7074696f6e73203d20000000002c20000063634f7074696f6e73203d *20000000002c2000006275696c6461626c65203d20000000004275696c64496e666f207b006873 *2d736f757263652d646972000000756e696f6e3a2054776f206e6f6e2d656d707479206669656c *647320666f756e6420696e20756e696f6e20617474656d70743a20000000006578706f7365642d *6d6f64756c6573007465737465642d7769746800617574686f72000063617465676f7279000000 *006465736372697074696f6e0073796e6f70736973000000007061636b6167652d75726c00686f *6d65706167650000000073746162696c6974790000006275696c642d646570656e64730000006d *61696e7461696e65720000636f707972696768740000006c6963656e73652d66696c6500000000 *6c6963656e73650076657273696f6e006e616d65000000002e2e2e006d61696e2d697300657865 *63757461626c6500006f7074696f6e732d6e6863006f7074696f6e732d68756773000000006f70 *74696f6e732d676863006f746865722d6d6f64756c657300000068732d736f757263652d646972 *000000696e636c7564652d6469727300000000696e636c756465730000000065787472612d6c69 *622d64697273000065787472612d6c6962730000657874656e73696f6e730000632d736f757263 *65730000006672616d65776f726b7300006c642d6f7074696f6e73000063632d6f7074696f6e73 *00006275696c6461626c6500000065786563757461626c653a006572726f7220696e2070617273 *696e67206275696c64696e666f2066696c652e2045787065637465642065786563757461626c65 *207374616e7a610065786563757461626c650000657870656374696e6720276578656375746162 *6c652720617420746f70206f66207374616e7a61005061747465726e206d61746368206661696c *75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574 *696f6e2f5061636b6167654465736372697074696f6e2e68733a34383500006578656375746162 *6c650000546869732073686f756c646e27742068617070656e21000065786563757461626c6500 *002745786563757461626c6527207374616e7a61207374617274696e672077697468206669656c *6420270000006d61696e2d697300207374616e7a61004e6f20274d61696e2d497327206669656c *6420666f756e6420666f72200000005061747465726e206d61746368206661696c75726520696e *20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061 *636b6167654465736372697074696f6e2e68733a343437000053616e69747920436865636b2057 *61726e696e673a2000004e6f206578706f736564206d6f64756c6573206f722065786563757461 *626c657320696e2074686973207061636b6167652e00004e6f2065786563757461626c65732061 *6e64206e6f206c69627261727920666f756e642e204e6f7468696e6720746f20646f2e00706163 *6b616765206964656e746966696572206d616c666f726d65642c2065697468657220656d707479 *206e616d65206f7220656d7074792076657273696f6e000000004e6f6e2d656d707479206c6962 *726172792c2062757420656d707479206578706f736564206d6f64756c6573206c6973742e2043 *6162616c206d6179206e6f74206275696c642074686973206c69627261727920636f7272656374 *6c790000005061747465726e206d61746368206661696c75726520696e20646f20657870726573 *73696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372 *697074696f6e2e68733a31333400004c696272617279005061747465726e206d61746368206661 *696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962 *7574696f6e2f5061636b6167654465736372697074696f6e2e68733a3133340000506174746572 *6e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f *2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31 *333400006578706f7365644d6f64756c657300005061747465726e206d61746368206661696c75 *726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962757469 *6f6e2f5061636b6167654465736372697074696f6e2e68733a31333400005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31333400 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a31333400006c69624275696c64496e666f000000005061747465726e206d617463 *68206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973 *747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31333400005061 *747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174 *202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e *68733a31333400005061747465726e206d61746368206661696c75726520696e20646f20657870 *72657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465 *736372697074696f6e2e68733a323131000045786563757461626c6500005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a32313100 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a32313100006578654e616d65005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a32313100005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3231310000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a32313100006d6f64756c655061746800005061747465726e206d6174636820666169 *6c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472696275 *74696f6e2f5061636b6167654465736372697074696f6e2e68733a32313100005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3231 *3100005061747465726e206d61746368206661696c75726520696e20646f206578707265737369 *6f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363726970 *74696f6e2e68733a32313100006275696c64496e666f0000005061747465726e206d6174636820 *6661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472 *69627574696f6e2f5061636b6167654465736372697074696f6e2e68733a323131000050617474 *65726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e *2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e6873 *3a32313100006c69624275696c64496e666f203d20002c2000006578706f7365644d6f64756c65 *73203d200000004c696272617279207b0000006275696c64496e666f203d20000000002c200000 *6d6f64756c6550617468203d200000002c2000006578654e616d65203d20000045786563757461 *626c65207b000000005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544 *65736372697074696f6e2e68733a31313100005061636b6167654465736372697074696f6e0000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765 *4465736372697074696f6e2e68733a31313100007061636b616765005061747465726e206d6174 *6368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469 *73747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a313131000050 *61747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e2061 *74202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e *2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544 *65736372697074696f6e2e68733a31313100006c6963656e7365005061747465726e206d617463 *68206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973 *747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061 *747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174 *202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e *68733a31313100005061747465726e206d61746368206661696c75726520696e20646f20657870 *72657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465 *736372697074696f6e2e68733a31313100006c6963656e736546696c65005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f20 *65787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167 *654465736372697074696f6e2e68733a3131310000636f70797269676874000000506174746572 *6e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f *2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31 *313100005061747465726e206d61746368206661696c75726520696e20646f2065787072657373 *696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269 *7074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20 *646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f506163 *6b6167654465736372697074696f6e2e68733a31313100006d61696e7461696e65720000506174 *7465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20617420 *2e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68 *733a31313100005061747465726e206d61746368206661696c75726520696e20646f2065787072 *657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573 *6372697074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520 *696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f *5061636b6167654465736372697074696f6e2e68733a3131310000617574686f72000050617474 *65726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e *2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e6873 *3a31313100005061747465726e206d61746368206661696c75726520696e20646f206578707265 *7373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363 *72697074696f6e2e68733a31313100005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f50 *61636b6167654465736372697074696f6e2e68733a313131000073746162696c69747900000050 *61747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e2061 *74202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e *2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544 *65736372697074696f6e2e68733a31313100005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a313131000074657374656457697468 *00005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f *6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074 *696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f *2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61 *67654465736372697074696f6e2e68733a31313100005061747465726e206d6174636820666169 *6c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472696275 *74696f6e2f5061636b6167654465736372697074696f6e2e68733a3131310000686f6d65706167 *65000000005061747465726e206d61746368206661696c75726520696e20646f20657870726573 *73696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372 *697074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e *20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061 *636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d6174636820 *6661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472 *69627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3131310000706b6755 *726c00005061747465726e206d61746368206661696c75726520696e20646f2065787072657373 *696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269 *7074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20 *646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f506163 *6b6167654465736372697074696f6e2e68733a31313100005061747465726e206d617463682066 *61696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269 *627574696f6e2f5061636b6167654465736372697074696f6e2e68733a313131000073796e6f70 *736973000000005061747465726e206d61746368206661696c75726520696e20646f2065787072 *657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573 *6372697074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520 *696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f *5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d617463 *68206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973 *747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100006465 *736372697074696f6e005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765 *4465736372697074696f6e2e68733a31313100005061747465726e206d61746368206661696c75 *726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962757469 *6f6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100 *0063617465676f7279000000005061747465726e206d61746368206661696c75726520696e2064 *6f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b *6167654465736372697074696f6e2e68733a31313100005061747465726e206d61746368206661 *696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962 *7574696f6e2f5061636b6167654465736372697074696f6e2e68733a3131310000506174746572 *6e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f *2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31 *313100006275696c64446570656e6473000000005061747465726e206d61746368206661696c75 *726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962757469 *6f6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a31313100006c696272617279005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3131310000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a313131000065786563757461626c6573005061747465726e206d6174636820666169 *6c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472696275 *74696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3131 *31000065786563757461626c6573203d2000002c2000006c696272617279203d2000002c200000 *6275696c64446570656e6473203d20002c20000063617465676f7279203d20002c200000646573 *6372697074696f6e203d2000002c20000073796e6f70736973203d20002c200000706b6755726c *203d200000002c200000686f6d6570616765203d20002c20000074657374656457697468203d20 *0000002c20000073746162696c697479203d20000000002c200000617574686f72203d20000000 *2c2000006d61696e7461696e6572203d200000002c200000636f70797269676874203d20000000 *002c2000006c6963656e736546696c65203d2000002c2000006c6963656e7365203d2000002c20 *00007061636b616765203d2000005061636b6167654465736372697074696f6e207b0000000070 *6b6756657273696f6e203d200000002c200000706b674e616d65203d2000005061636b61676549 *64656e746966696572207b005061747465726e206d61746368206661696c75726520696e20646f *2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61 *67652e68733a353200005061636b6167654964656e7469666965720000005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167652e68733a353200005061747465726e206d6174 *6368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469 *73747269627574696f6e2f5061636b6167652e68733a35320000706b674e616d65005061747465 *726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e *2f2e2e2f446973747269627574696f6e2f5061636b6167652e68733a353200005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167652e68733a353200005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167652e68733a35320000706b6756657273696f6e00 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167652e68733a3532000050 *61747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e2061 *74202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167652e68733a353200002e2e2f *2e2e2f446973747269627574696f6e2f436f6d7061742f52656164502e68733a3131387c66756e *6374696f6e206d706c7573000000646f206e6f74207573652072656164535f746f5f5020696e20 *67617468657221000000005041544800000000636f707946696c653a20736f7572636520616e64 *2064657374696e6174696f6e20617265207468652073616d652066696c650000484f4d45000000 *002e2e00002e2e0000736f000022220000206c696e652e0a00206c696e65206265666f72652000 *00003a2000004c696e6520000000206c696e652e0a00206c696e65206265666f7265200000003a *200000206174206c696e6520000000496e2066696c652000000000206c696e652e0a00206c696e *65206265666f7265200000003a2000004c696e65200000002e2e2f2e2e2f446973747269627574 *696f6e2f50726550726f636573732f556e6c69742e68733a33357c66756e6374696f6e20636c61 *737369667900656e647b636f64657d000000626567696e7b636f64657d00636f6d6d656e740070 *726f6772616d0070726f6772616d00636f6d6d656e7400556e736166654f7665726c617070696e *67496e7374616e636573000048657265446f63756d656e74730000005265737472696374656454 *79706553796e6f6e796d730000457874656e7369626c655265636f7264730000004e616d656446 *69656c6450756e7300004e6f496d706c696369745072656c75646500000047656e657269637300 *0000004172726f77730000436f6e74657874537461636b00000000496e6c696e65506861736500 *416c6c6f77496e636f686572656e74496e7374616e63657300000000416c6c6f77556e64656369 *6461626c65496e7374616e636573000000416c6c6f774f7665726c617070696e67496e7374616e *636573000000466f726569676e46756e6374696f6e496e746572666163650000000054656d706c *6174654861736b656c6c005479706553796e6f6e796d496e7374616e6365730000000043505000 *456d707479446174614465636c730000466c657869626c65496e7374616e636573000000466c65 *7869626c65436f6e746578747300000000496d706c69636974506172616d73000053636f706564 *547970655661726961626c6573004578697374656e7469616c5175616e74696669636174696f6e *000000506f6c796d6f7270686963436f6d706f6e656e747300000052616e6b4e54797065730000 *46756e6374696f6e616c446570656e64656e6369657300004e6f4d6f6e6f6d6f72706869736d52 *65737472696374696f6e0000004d756c7469506172616d54797065436c61737365730000005061 *72616c6c656c4c697374436f6d7000000000526563757273697665446f004f7665726c61707069 *6e67496e7374616e63657300000000556e736166654f7665726c617070696e67496e7374616e63 *6573000048657265446f63756d656e7473000000526573747269637465645479706553796e6f6e *796d730000457874656e7369626c655265636f7264730000004e616d65644669656c6450756e73 *00004e6f496d706c696369745072656c75646500000047656e6572696373000000004172726f77 *730000436f6e74657874537461636b00000000496e6c696e65506861736500416c6c6f77496e63 *6f686572656e74496e7374616e63657300000000416c6c6f77556e646563696461626c65496e73 *74616e636573000000416c6c6f774f7665726c617070696e67496e7374616e636573000000466f *726569676e46756e6374696f6e496e746572666163650000000054656d706c6174654861736b65 *6c6c005479706553796e6f6e796d496e7374616e6365730000000043505000456d707479446174 *614465636c730000466c657869626c65496e7374616e636573000000466c657869626c65436f6e *746578747300000000496d706c69636974506172616d73000053636f7065645479706556617269 *61626c6573004578697374656e7469616c5175616e74696669636174696f6e000000506f6c796d *6f7270686963436f6d706f6e656e747300000052616e6b4e5479706573000046756e6374696f6e *616c446570656e64656e6369657300004e6f4d6f6e6f6d6f72706869736d526573747269637469 *6f6e0000004d756c7469506172616d54797065436c6173736573000000506172616c6c656c4c69 *7374436f6d7000000000526563757273697665446f004f7665726c617070696e67496e7374616e *636573000000002d666e6f2d696d706c696369742d7072656c7564650000002d6667656e657269 *637300002d666172726f7773000000002d66636f6e746578742d737461636b002d66696e6c696e *652d706861736500002d66616c6c6f772d696e636f686572656e742d696e7374616e6365730000 *00002d66616c6c6f772d756e646563696461626c652d696e7374616e6365730000002d66616c6c *6f772d6f7665726c617070696e672d696e7374616e6365730000002d666669000000002d667468 *000000002d66676c6173676f772d6578747300002d637070000000002d66676c6173676f772d65 *78747300002d66676c6173676f772d6578747300002d66676c6173676f772d6578747300002d66 *696d706c696369742d706172616d730000002d66676c6173676f772d6578747300002d66676c61 *73676f772d6578747300002d66676c6173676f772d6578747300002d66676c6173676f772d6578 *747300002d66676c6173676f772d6578747300002d666e6f2d6d6f6e6f6d6f72706869736d2d72 *65737472696374696f6e0000002d66676c6173676f772d6578747300002d66676c6173676f772d *6578747300002d66676c6173676f772d6578747300002d66616c6c6f772d6f7665726c61707069 *6e672d696e7374616e6365730000002b4f00002b4800002d3938002d3938002d3938002d393800 *2d3938002d3938002d3938002d3938002d3938002d3938002d3938002d3938002d3938002b6f00 *002d70756e730000002d637070000000002d2b2f5f2e0000005f272e00416d6269676f75735061 *7273652000004e6f5061727365200000000046726f6d537472696e6720003a20416d6269676f75 *7320706172736520696e206669656c642027004c696e652000000027206661696c656400000000 *3a205061727365206f66206669656c64202700004c696e65200000003a2000004c696e65200000 *002d2b2f5f2e00000050617273654661696c6564200000000050617273654f6b20000000002061 *6e642000000020697320646566696e6564206f6e20626f7468206c696e65200000005468652066 *69656c642000003a20496e76616c69642073796e74617820286e6f20636f6c6f6e206166746572 *206669656c64206e616d6529000000004c696e652000db0f49400000003f0000003f0000003f00 *00003f0000003fdb0f4940182d4454fb2109400000003fdb0f49400000003f0000003f0000003f *0000003f0000003fdb0f4940182d4454fb2109400000003fdb0f49400000003f0000003f000000 *3f0000003f0000003fdb0f4940182d4454fb2109400000003f0000f4010d08dd010d08a2010d08 *a2010d08d6010d08a2010d08cc010d08a2010d08a2010d08c0010d08a2010d08b9010d08a2010d *08a2010d08a2010d08626b0d086f6b0d08746b0d08796b0d087e6b0d08836b0d08886b0d088d6b *0d08926b0d08976b0d089c6b0d08a16b0d08a66b0d08ab6b0d08b06b0d08b56b0d08ba6b0d08bf *6b0d08c46b0d08c96b0d08ce6b0d08d36b0d08d86b0d08dd6b0d08e26b0d08e76b0d08ef6b0d08 *f76b0d08ff6b0d08076c0d080f6c0d08176c0d0817750d0821750d0821750d0821750d0821750d *081c750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d082175 *0d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821 *750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d08 *21750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d *0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d082175 *0d0821750d0821750d0821750d0821750d0812750d0821750d0821750d0821750d0821750d08ea *740d08f4740d0821750d0821750d0821750d08f9740d0821750d0821750d0821750d0821750d08 *21750d0821750d0821750d08fe740d0821750d0821750d0821750d0803750d0821750d0808750d *0821750d080d750d08ca840d0892840d08a0840d08a0840d0868840d086f840d08a0840d085b84 *0d0884840d08ca840d08a0840d085b840d085b840d0892840d08ca840d0884840d08bc840d0876 *840d08c3840d08c3840d087d840d087d840d0884840d085b840d085b840d0899840d08bc840d08 *92840d085b840d08c3840d0892840d085b840d08ae840d0884840d08c3840d08bc840d0884840d *085b840d08c3840d08a7840d0884840d08ca840d08a0840d08ae840d08ca840d08ca840d08ca84 *0d08ca840d08ca840d08ca840d08ca840d08ca840d08ca840d08ca840d08ca840d08ca840d08ca *840d08ca840d08ca840d08ca840d0884840d08a0840d08b5840d085b840d08a0840d08ca840d08 *99840d08ae840d08ca840d08a7840d08ae840d088b840d08c3840d08ca840d087d840d08ca840d *08ca840d08ca840d08ae840d08ca840d08ca840d08ca840d08ca840d08ca840d0884840d08ca84 *0d08ca840d085b840d0884840d0884840d085b840d088b840d08c3840d088b840d08c3840d08c3 *840d08c3840d08c3840d08bc840d08c3840d08ae840d08a0840d08ae840d08ca840d08ae840d08 *5b840d0876840d0884840d0899840d085b840d08b5840d08a0840d08a0840d08a0840d0876840d *0876840d08ae840d08ca840d08ca840d08ca840d08ca840d08ca840d0892840d08db0f49400000 *003f0000003f0000003f0000003f0000003fdb0f4940182d4454fb2109400000003fdb0f494000 *00003f0000003f0000003f0000003f0000003fdb0f4940182d4454fb2109400000003ff0a80e08 *e6a80e08dfa80e08d8a80e08d1a80e08caa80e08c3a80e08bca80e08b5a80e08aea80e08a7a80e *08a0a80e0899a80e0892a80e088ba80e0884a80e087da80e0876a80e0866a80e08f6c70e08ffc7 *0e0823c80e0811c80e082cc80e0808c80e081ac80e0835c80e08db0f49400000003f0000003f00 *00003f0000003f0000003fdb0f4940182d4454fb2109400000003fdb0f49400000003f0000003f *0000003f0000003f0000003fdb0f4940182d4454fb2109400000003fdb0f49400000003f000000 *3f0000003f0000003f0000003fdb0f4940182d4454fb2109400000003f6c6f636b46696c653a20 *6664206f7574206f662072616e6765002d63002f62696e2f736800000000000000000000000000 *000000000000000000000000000000000000006d61696e20746872656164206578697465642028 *756e63617567687420657863657074696f6e290000000000000000000000000000000000000000 *00000000006d61696e2074687265616420636f6d706c65746564207769746820696e76616c6964 *207374617475730025733a20756e63617567687420657863657074696f6e0025733a20696e7465 *727275707465640025733a2052657475726e20636f64652028256429206e6f74206f6b00746f6f *206d616e792068735f657869742829730000000000000000000000000000000000000000000000 *00000000000000000068735f6164645f726f6f742829206d7573742062652063616c6c65642061 *667465722068735f696e697428290025733a20696e7465726e616c206572726f723a200025733a *2000256c7500256c752c25332e336c7500256c7525332e336c7500256c752c25332e336c752c25 *332e336c7500256c7525332e336c7525332e336c7500256c752c25332e336c752c25332e336c75 *2c25332e336c7500256c7525332e336c7525332e336c7525332e336c7500000000000000000000 *00000000000020202020506c65617365207265706f727420746869732061732061206275672074 *6f20676c6173676f772d6861736b656c6c2d62756773406861736b656c6c2e6f72672c0a202020 *206f7220687474703a2f2f7777772e736f75726365666f7267652e6e65742f70726f6a65637473 *2f6768632f0a0000000000000000000000415353455254494f4e204641494c45443a2066696c65 *2025732c206c696e652025750a0000000000000000000000000000000000000000000000000000 *000000646561646c6f636b3a206d61696e2074687265616420626c6f636b656420696e20612073 *7472616e6765207761790000000000000000000000000000000000007363686564756c653a2069 *6e76616c696420776861745f6e657874206669656c640000000000000000000000000000000000 *00000000000000000000000000007363686564756c653a20696e76616c69642074687265616420 *72657475726e20636f646520256400000000000000000000000000000000000000000000000000 *726573756d655468726561643a20746872656164206e6f7420666f756e640000756e626c6f636b *54687265616420284d564152293a2054534f206e6f7420666f756e640000000000000000000000 *000000000000000000000000000000000000756e626c6f636b5468726561642028424c41434b48 *4f4c45293a2054534f206e6f7420666f756e640000000000000000000000000000000000000000 *00000000756e626c6f636b5468726561642028457863657074696f6e293a2054534f206e6f7420 *666f756e64000000000000000000000000000000000000000000000000756e626c6f636b546872 *6561642028492f4f293a2054534f206e6f7420666f756e64000000000000000000000000000000 *000000000000000000000000000000756e626c6f636b546872656164202864656c6179293a2054 *534f206e6f7420666f756e64000000000000000000000000000000000000000000000000000000 *00726573757272656374546872656164733a2074687265616420626c6f636b656420696e206120 *737472616e676520776179000000000000000000000000000000697320626c6f636b6564206f6e *2064656c69766572696e6720616e20657863657074696f6e20746f207468726561642025640000 *000000000000000000000000697320626c6f636b6564206f6e20616e2065787465726e616c2063 *616c6c0000697320626c6f636b6564206f6e20616e2065787465726e616c2063616c6c20286578 *63657074696f6e73207765726520616c726561647920626c6f636b656429000000000000000000 *00000000000000000000000000000000000000000000007072696e74546872656164426c6f636b *6167653a20737472616e67652074736f2d3e7768795f626c6f636b65643a20256420666f722054 *534f2025642028256429000000a0ca0f08a3cb0f08f1cb0f0814cc0f082ecc0f0851d60f08efd4 *0f0837d50f086ad50f08aed50f08aed50f0818d60f08a6d70f08b1d70f08b1d70f089fd70f089f *d70f0881d70f0897d70f086eda0f0879da0f0879da0f0867da0f0867da0f0849da0f085fda0f08 *57db0f08ecda0f0835db0f0811db0f08b9da0f08cada0f08dbda0f0879db0f089bdb0f08666f72 *6b50726f63657373007761697454687265616400756e626c6f636b546872656164007261697365 *4173796e6300697320626c6f636b6564206f6e20726561642066726f6d20666420256400697320 *626c6f636b6564206f6e20777269746520746f20666420256400697320626c6f636b656420756e *74696c20256400697320626c6f636b6564206f6e20616e204d56617200697320626c6f636b6564 *206f6e206120626c61636b20686f6c65006973206e6f7420626c6f636b65640068617320626565 *6e206b696c6c65640068617320636f6d706c6574656400616c6c20746872656164733a0a000974 *6872656164202564204020257020005b222573225d200041776169744576656e740025640a0073 *656c6563740073656c656374206661696c65640061776169744576656e74006d6f72655f68616e *646c65727300746f6f206d616e792070656e64696e67207369676e616c73007374675f7369675f *696e7374616c6c3a20626164207370690000000000000000000000000000000000000000000000 *000000000000007761726e696e673a206661696c656420746f20696e7374616c6c20534947494e *542068616e646c657200000000000000000000000000000000000000000000007761726e696e67 *3a206661696c656420746f20696e7374616c6c20534947434f4e542068616e646c657200656e6c *61726765537461626c655074725461626c65000000000000000000000000000000000000000000 *000000000000000000000020202020416c6c6f6320202020436f6c6c656374202020204c697665 *2020202047432020202047432020202020544f542020202020544f5420205061676520466c7473 *0a0000000000000000000000000000000000000000000000000000000020202020627974657320 *202020206279746573202020202062797465732020757365722020656c61702020202075736572 *20202020656c61700a000000000000737461745f696e69743a206261642063616c6c20746f2027 *737973636f6e6627210a0000000000000000000000000000000000000000000000000000000000 *002025352e32662025352e32662025372e32662025372e32662025346c642025346c6420202847 *656e3a2025326c64290a000000000000000000000000000000002531317320627974657320616c *6c6f636174656420696e2074686520686561700a00000000000000000000000000000000000000 *00000000000000000000000025313173206279746573206d6178696d756d207265736964656e63 *792028256c642073616d706c65287329290a000000000000000000000000000000000000002531 *316420636f6c6c656374696f6e7320696e2067656e65726174696f6e202564202825362e326673 *290a0000000000000000000000000000000000000000000a2531316c64204d6220746f74616c20 *6d656d6f727920696e207573650a0a002020494e4954202074696d65202025362e326673202028 *25362e32667320656c6170736564290a0000000000000000000000000000000000000000000000 *000020204d555420202074696d65202025362e32667320202825362e32667320656c6170736564 *290a00000000000000000000000000000000000000000000000000202047432020202074696d65 *202025362e32667320202825362e32667320656c6170736564290a000000000000000000000000 *00000000000000000000000000202045584954202074696d65202025362e32667320202825362e *32667320656c6170736564290a0000000000000000000000000000000000000000000000000020 *20546f74616c2074696d65202025362e32667320202825362e32667320656c6170736564290a0a *0000000000000000000000000000000000000000000000002020252547432074696d6520202020 *2025352e31662525202028252e3166252520656c6170736564290a0a0000000000000000000000 *000000000000000000002020416c6c6f6320726174652020202025732062797465732070657220 *4d5554207365636f6e640a0a000000000000000000000000000000000000000000000020205072 *6f6475637469766974792025352e31662525206f6620746f74616c20757365722c20252e316625 *25206f6620746f74616c20656c61707365640a0a002564204743732c20256c642f256c64206176 *672f6d6178206279746573207265736964656e63792028256c642073616d706c6573292c20256c *754d20696e207573652c20252e326620494e49542028252e326620656c6170736564292c20252e *3266204d55542028252e326620656c6170736564292c20252e32662047432028252e326620656c *617073656429203a6768633e3e0a00696e6974537461747300204743200025396c642025396c64 *2025396c640008080820200808080025396c642025392e39732025392e3973002025352e326620 *25352e32660a0a002531317320627974657320636f7069656420647572696e672047430a003c3c *6768633a20256c6c752062797465732c200000000000c8420000805f0000804f000000006d6178 *696d756d20686561702073697a6520282d4d2920697320736d616c6c6572207468616e206d696e *696d756d20616c6c6f6320617265612073697a6520282d41290000000000000000000000000000 *0000000000000000000000000000005741524e494e473a20636f6d70616374696f6e2069732069 *6e636f6d70617469626c652077697468202d47313b2064697361626c656400696e697453746f72 *6167653a2067656e7300696e697453746f726167653a206c617374207374657000696e69745374 *6f726167653a207374657073000a4661696c3a200000000000006d616c6c6f633a206661696c65 *64206f6e207265717565737420666f7220256c752062797465733b206d6573736167653a202573 *0a000000000000000000000048656170206578686175737465643b0a43757272656e74206d6178 *696d756d20686561702073697a6520697320256c752062797465732028256c75204d62293b0a75 *736520602b525453202d4d3c73697a653e2720746f20696e6372656173652069742e0a00000000 *0000000000000000000000000000000000000000000000537461636b207370616365206f766572 *666c6f773a2063757272656e742073697a6520256c642062797465732e0a55736520602b525453 *202d4b73697a652720746f20696e6372656173652069742e0a00000000b9071008b9071008b907 *1008b9071008b9071008b9071008b9071008be071008be071008be071008be071008be071008be *071008be071008be071008b9071008be071008b9071008be071008b4071008b4071008b4071008 *b4071008b407100804091008040910080409100804091008040910080409100804091008090910 *080909100809091008090910080909100809091008090910080909100804091008090910080409 *100809091008ff081008ff081008ff081008ff081008ff0810087374675f61705f765f72657400 *7374675f61705f665f726574007374675f61705f645f726574007374675f61705f6c5f72657400 *7374675f61705f6e5f726574007374675f61705f705f726574007374675f61705f70765f726574 *007374675f61705f70705f726574007374675f61705f7070765f726574007374675f61705f7070 *705f726574007374675f61705f707070705f726574007374675f61705f70707070705f72657400 *7374675f61705f7070707070705f726574007374675f61705f707070707070705f726574000000 *4b0910084b0910084b0910084b0910084b0910084b0910084b0910083a0a10083a0a10083a0a10 *083a0a10083a0a10083a0a10083a0a10083a0a1008380910083a0a1008990910083a0a1008480a *1008480a1008480a1008480a1008480a1008500a1008500a1008500a1008500a1008500a100850 *0a1008500a1008500a1008500a1008500a10083a0a10083a0a10083a0a10083a0a10083a0a1008 *d60a1008d60a1008d60a1008d60a1008d60a1008d60a1008d60a10081a0c10081a0c10081a0c10 *081a0c10081a0c10081a0c10081a0c10081a0c1008840a10081a0c1008340b10081a0c1008280c *1008280c1008280c1008280c1008280c1008300c1008300c1008300c1008300c1008300c100830 *0c1008300c1008300c1008300c1008300c10081a0c10081a0c10081a0c10081a0c10081a0c1008 *b90c1008b90c1008b90c1008b90c1008b90c1008b90c1008b90c1008070e1008070e1008070e10 *08070e1008070e1008070e1008070e1008070e1008640c1008070e10081a0d1008070e1008150e *1008150e1008150e1008150e1008150e10081d0e10081d0e10081d0e10081d0e10081d0e10081d *0e10081d0e10081d0e10081d0e10081d0e1008070e1008070e1008070e1008070e1008070e1008 *a90e1008a90e1008a90e1008a90e1008a90e1008a90e1008a90e1008f70f1008f70f1008f70f10 *08f70f1008f70f1008f70f1008f70f1008f70f1008540e1008f70f10080a0f1008f70f10080510 *1008051010080510100805101008051010080d1010080d1010080d1010080d1010080d1010080d *1010080d1010080d1010080d1010080d101008f70f1008f70f1008f70f1008f70f1008f70f1008 *96101008961010089610100896101008961010089610100896101008da111008da111008da1110 *08da111008da111008da111008da111008da11100844101008da111008f4101008da111008e811 *1008e8111008e8111008e8111008e8111008f0111008f0111008f0111008f0111008f0111008f0 *111008f0111008f0111008f0111008f0111008da111008da111008da111008da111008da111008 *76121008761210087612100876121008761210087612100876121008ba131008ba131008ba1310 *08ba131008ba131008ba131008ba131008ba13100824121008ba131008d4121008ba131008c813 *1008c8131008c8131008c8131008c8131008d0131008d0131008d0131008d0131008d0131008d0 *131008d0131008d0131008d0131008d0131008ba131008ba131008ba131008ba131008ba131008 *6a1410086a1410086a1410086a1410086a1410086a1410086a141008e3151008e3151008e31510 *08e3151008e3151008e3151008e3151008e315100804141008e3151008e2141008e3151008f115 *1008f1151008f1151008f1151008f1151008f9151008f9151008f9151008f9151008f9151008f9 *151008f9151008f9151008f9151008f9151008e3151008e3151008e3151008e3151008e3151008 *991610089916100899161008991610089916100899161008991610081c1810081c1810081c1810 *081c1810081c1810081c1810081c1810081c181008301610081c181008141710081c1810082a18 *10082a1810082a1810082a1810082a181008321810083218100832181008321810083218100832 *181008321810083218100832181008321810081c1810081c1810081c1810081c1810081c181008 *f2181008f2181008f2181008f2181008f2181008f2181008f2181008b31a1008b31a1008b31a10 *08b31a1008b31a1008b31a1008b31a1008b31a100868181008b31a10088a191008b31a1008c11a *1008c11a1008c11a1008c11a1008c11a1008c91a1008c91a1008c91a1008c91a1008c91a1008c9 *1a1008c91a1008c91a1008c91a1008c91a1008b31a1008b31a1008b31a1008b31a1008b31a1008 *8a1b10088a1b10088a1b10088a1b10088a1b10088a1b10088a1b10084b1d10084b1d10084b1d10 *084b1d10084b1d10084b1d10084b1d10084b1d1008001b10084b1d1008221c10084b1d1008591d *1008591d1008591d1008591d1008591d1008611d1008611d1008611d1008611d1008611d100861 *1d1008611d1008611d1008611d1008611d10084b1d10084b1d10084b1d10084b1d10084b1d1008 *421e1008421e1008421e1008421e1008421e1008421e1008421e10084d2010084d2010084d2010 *084d2010084d2010084d2010084d2010084d201008981d10084d201008fd1e10084d2010085b20 *10085b2010085b2010085b2010085b201008632010086320100863201008632010086320100863 *201008632010086320100863201008632010084d2010084d2010084d2010084d2010084d201008 *68211008682110086821100868211008682110086821100868211008cc231008cc231008cc2310 *08cc231008cc231008cc231008cc231008cc23100898201008cc2310084c221008cc231008da23 *1008da231008da231008da231008da231008e2231008e2231008e2231008e2231008e2231008e2 *231008e2231008e2231008e2231008e2231008cc231008cc231008cc231008cc231008cc231008 *22251008222510082225100822251008222510082225100822251008f7271008f7271008f72710 *08f7271008f7271008f7271008f7271008f727100818241008f72710083d261008f72710080528 *1008052810080528100805281008052810080d2810080d2810080d2810080d2810080d2810080d *2810080d2810080d2810080d2810080d281008f7271008f7271008f7271008f7271008f7271008 *83291008832910088329100883291008832910088329100883291008c92c1008c92c1008c92c10 *08c92c1008c92c1008c92c1008c92c1008c92c100844281008c92c1008d32a1008c92c1008d72c *1008d72c1008d72c1008d72c1008d72c1008df2c1008df2c1008df2c1008df2c1008df2c1008df *2c1008df2c1008df2c1008df2c1008df2c1008c92c1008c92c1008c92c1008c92c1008c92c1008 *323410083d3410083d3410082734100827341008093410081f341008f4351008f4351008f43510 *08f4351008f4351008f4351008f4351008f9351008f9351008f9351008f9351008f9351008f935 *1008f9351008f9351008f4351008f9351008f4351008f9351008ef351008ef351008ef351008ef *351008ef35100854534f206f626a65637420656e74657265642100455641435541544544206f62 *6a65637420656e746572656421005745414b206f626a65637420656e7465726564210044454144 *5f5745414b206f626a65637420656e746572656421004e4f5f46494e414c495a4552206f626a65 *637420656e74657265642100464f524549474e206f626a65637420656e74657265642100535441 *424c455f4e414d45206f626a65637420656e7465726564210046554c4c5f4d564152206f626a65 *637420656e74657265642100454d5054595f4d564152206f626a65637420656e74657265642100 *454e445f54534f5f5155455545206f626a65637420656e74657265642100454e445f4d55545f4c *495354206f626a65637420656e746572656421004d55545f434f4e53206f626a65637420656e74 *657265642100454e445f455843455054494f4e5f4c495354206f626a65637420656e7465726564 *2100455843455054494f4e5f434f4e53206f626a65637420656e746572656421004152525f574f *524453206f626a65637420656e746572656421004d55545f4152525f50545253206f626a656374 *20656e746572656421004d55545f4152525f505452535f46524f5a454e206f626a65637420656e *746572656421004d55545f564152206f626a65637420656e746572656421009d5e10089d5e1008 *9d5e10089d5e10089d5e10089d5e10089d5e1008a25e1008a25e1008a25e1008a25e1008a25e10 *08a25e1008a25e1008a25e10089d5e1008a25e10089d5e1008a25e1008985e1008985e1008985e *1008985e1008985e1008f85e1008f85e1008f85e1008f85e1008f85e1008f85e1008f85e1008fd *5e1008fd5e1008fd5e1008fd5e1008fd5e1008fd5e1008fd5e1008fd5e1008f85e1008fd5e1008 *f85e1008fd5e1008f35e1008f35e1008f35e1008f35e1008f35e10084c5f10084c5f10084c5f10 *084c5f10084c5f10084c5f10084c5f1008515f1008515f1008515f1008515f1008515f1008515f *1008515f1008515f10084c5f1008515f10084c5f1008515f1008475f1008475f1008475f100847 *5f1008475f1008845f1008845f1008845f1008845f1008845f1008845f1008845f1008895f1008 *895f1008895f1008895f1008895f1008895f1008895f1008895f1008845f1008895f1008845f10 *08895f10087f5f10087f5f10087f5f10087f5f10087f5f1008d85f1008d85f1008d85f1008d85f *1008d85f1008d85f1008d85f1008dd5f1008dd5f1008dd5f1008dd5f1008dd5f1008dd5f1008dd *5f1008dd5f1008d85f1008dd5f1008d85f1008dd5f1008d35f1008d35f1008d35f1008d35f1008 *d35f10081060100810601008106010081060100810601008106010081060100815601008156010 *081560100815601008156010081560100815601008156010081060100815601008106010081560 *10080b6010080b6010080b6010080b6010080b6010086460100864601008646010086460100864 *601008646010086460100869601008696010086960100869601008696010086960100869601008 *69601008646010086960100864601008696010085f6010085f6010085f6010085f6010085f6010 *089c6010089c6010089c6010089c6010089c6010089c6010089c601008a1601008a1601008a160 *1008a1601008a1601008a1601008a1601008a16010089c601008a16010089c601008a160100897 *60100897601008976010089760100897601008f0601008f0601008f0601008f0601008f0601008 *f0601008f0601008f5601008f5601008f5601008f5601008f5601008f5601008f5601008f56010 *08f0601008f5601008f0601008f5601008eb601008eb601008eb601008eb601008eb6010082861 *10082861100828611008286110082861100828611008286110082d6110082d6110082d6110082d *6110082d6110082d6110082d6110082d611008286110082d611008286110082d61100823611008 *236110082361100823611008236110087c6110087c6110087c6110087c6110087c6110087c6110 *087c61100881611008816110088161100881611008816110088161100881611008816110087c61 *1008816110087c611008816110087761100877611008776110087761100877611008b4611008b4 *611008b4611008b4611008b4611008b4611008b4611008b9611008b9611008b9611008b9611008 *b9611008b9611008b9611008b9611008b4611008b9611008b4611008b9611008af611008af6110 *08af611008af611008af6110080862100808621008086210080862100808621008086210080862 *10080d6210080d6210080d6210080d6210080d6210080d6210080d6210080d621008086210080d *621008086210080d62100803621008036210080362100803621008036210084062100840621008 *406210084062100840621008406210084062100845621008456210084562100845621008456210 *08456210084562100845621008406210084562100840621008456210083b6210083b6210083b62 *10083b6210083b6210089462100894621008946210089462100894621008946210089462100899 *621008996210089962100899621008996210089962100899621008996210089462100899621008 *94621008996210088f6210088f6210088f6210088f6210088f621008cc621008cc621008cc6210 *08cc621008cc621008cc621008cc621008d1621008d1621008d1621008d1621008d1621008d162 *1008d1621008d1621008cc621008d1621008cc621008d1621008c7621008c7621008c7621008c7 *621008c76210082063100820631008206310082063100820631008206310082063100825631008 *256310082563100825631008256310082563100825631008256310082063100825631008206310 *08256310081b6310081b6310081b6310081b6310081b6310085863100858631008586310085863 *10085863100858631008586310085d6310085d6310085d6310085d6310085d6310085d6310085d *6310085d631008586310085d631008586310085d63100853631008536310085363100853631008 *53631008ac631008ac631008ac631008ac631008ac631008ac631008ac631008b1631008b16310 *08b1631008b1631008b1631008b1631008b1631008b1631008ac631008b1631008ac631008b163 *1008a7631008a7631008a7631008a7631008a7631008e4631008e4631008e4631008e4631008e4 *631008e4631008e4631008e9631008e9631008e9631008e9631008e9631008e9631008e9631008 *e9631008e4631008e9631008e4631008e9631008df631008df631008df631008df631008df6310 *08386410083864100838641008386410083864100838641008386410083d6410083d6410083d64 *10083d6410083d6410083d6410083d6410083d641008386410083d641008386410083d64100833 *641008336410083364100833641008336410087064100870641008706410087064100870641008 *706410087064100875641008756410087564100875641008756410087564100875641008756410 *08706410087564100870641008756410086b6410086b6410086b6410086b6410086b641008c464 *1008c4641008c4641008c4641008c4641008c4641008c4641008c9641008c9641008c9641008c9 *641008c9641008c9641008c9641008c9641008c4641008c9641008c4641008c9641008bf641008 *bf641008bf641008bf641008bf641008fc641008fc641008fc641008fc641008fc641008fc6410 *08fc6410080165100801651008016510080165100801651008016510080165100801651008fc64 *100801651008fc64100801651008f7641008f7641008f7641008f7641008f76410085065100850 *651008506510085065100850651008506510085065100855651008556510085565100855651008 *55651008556510085565100855651008506510085565100850651008556510084b6510084b6510 *084b6510084b6510084b6510088865100888651008886510088865100888651008886510088865 *10088d6510088d6510088d6510088d6510088d6510088d6510088d6510088d651008886510088d *651008886510088d6510088365100883651008836510088365100883651008dc651008dc651008 *dc651008dc651008dc651008dc651008dc651008e1651008e1651008e1651008e1651008e16510 *08e1651008e1651008e1651008dc651008e1651008dc651008e1651008d7651008d7651008d765 *1008d7651008d76510081466100814661008146610081466100814661008146610081466100819 *661008196610081966100819661008196610081966100819661008196610081466100819661008 *14661008196610080f6610080f6610080f6610080f6610080f6610086866100868661008686610 *08686610086866100868661008686610086d6610086d6610086d6610086d6610086d6610086d66 *10086d6610086d661008686610086d661008686610086d66100863661008636610086366100863 *66100863661008a0661008a0661008a0661008a0661008a0661008a0661008a0661008a5661008 *a5661008a5661008a5661008a5661008a5661008a5661008a5661008a0661008a5661008a06610 *08a56610089b6610089b6610089b6610089b6610089b661008f4661008f4661008f4661008f466 *1008f4661008f4661008f4661008f9661008f9661008f9661008f9661008f9661008f9661008f9 *661008f9661008f4661008f9661008f4661008f9661008ef661008ef661008ef661008ef661008 *ef6610082c6710082c6710082c6710082c6710082c6710082c6710082c67100831671008316710 *083167100831671008316710083167100831671008316710082c671008316710082c6710083167 *100827671008276710082767100827671008276710088067100880671008806710088067100880 *671008806710088067100885671008856710088567100885671008856710088567100885671008 *85671008806710088567100880671008856710087b6710087b6710087b6710087b6710087b6710 *086d616c6c6f634279746573525758000000000000000000000000000000000000000000000000 *000000000000667265654861736b656c6c46756e6374696f6e5074723a206e6f7420666f72206d *652c20677576212025700a006d61696e2074687265616420686173206265656e20474327640074 *726176657273655f7765616b5f7074725f6c6973740065766163756174653a20737461636b2066 *72616d652061742025700a00000000484374726176657273655f7765616b5f7074725f6c697374 *3a206e6f74205745414b0000000000000000000000000000000000000000000000000000000000 *00000065766163756174653a20737472616e676520636c6f737572652074797065202564000000 *000000000000000000000000000000000000000000000000000000006576616c5f7468756e6b5f *73656c6563746f723a20737472616e67652073656c656374656520256400000000000000000000 *000000000000000000000000000073636176656e67653a20756e696d706c656d656e7465642f73 *7472616e676520636c6f7375726520747970652025642040202570000000000000000000000000 *73636176656e67655f6d61726b5f737461636b3a20756e696d706c656d656e7465642f73747261 *6e676520636c6f73757265207479706520256420402025700073636176656e67655f6f6e653a20 *737472616e6765206f626a6563742025640073636176656e67655f6d75745f6f6e63655f6c6973 *743a20737472616e6765206f626a6563743f202564000000000000000000000000000000000000 *0000000073636176656e67655f6d757461626c655f6c6973743a20737472616e6765206f626a65 *63743f202564000000000000000000000000000000000000000000000073636176656e67655f73 *74617469633a20737472616e676520636c6f737572652025640000000000000000000000000000 *00000000000000000000000000000073636176656e67655f737461636b3a207765697264206163 *7469766174696f6e207265636f726420666f756e64206f6e20737461636b3a20256400006f9210 *08a58d10089d8c1008628c10084d8d10084d8d10084d8d100843901008439010081b9010084390 *1008a58d10089d8c10089d8c10084d8d10084d8d10084d8d1008dc8f1008a58d1008f58c1008f5 *8c1008f58c1008f58c1008f58c1008b88f1008d38e1008038e10085a9010085a901008b4901008 *1192100811921008a58d1008a58d1008fc8f10084a9010084a9010084a9010084a9010084a9010 *084a9010086f9210084a9010084a9010084a9010085a8e10085a8e10087b8e10085a8e10085a8e *1008048c100856911008a8911008a8911008048c10086f921008a58d1008a58d1008a58d10080a *9210086f9210086f9210086f9210086f9210080d911008e69310083e9310083e9310083e931008 *3e9310083e9310083e931008e6931008e69310083e9310083e931008e6931008e6931008e69310 *08e6931008e6931008e6931008e6931008fa931008fa931008fa931008fa931008fa931008fa93 *1008fa931008af931008e6931008fa931008e6931008fa931008a7931008a7931008a7931008a7 *931008a7931008e6931008e6931008e6931008e6931008e6931008e6931008e6931008e6931008 *e6931008e6931008fa931008fa931008fa931008fa931008fa931008e6931008e6931008e69310 *08e6931008e6931008e6931008e6931008e6931008e6931008e6931008e6931008e6931008e693 *1008e6931008fa931008519b100885981008b39610082897100837961008cc991008d799100851 *9b1008519b1008519b1008519b1008229810087d961008f2961008d1951008e097100867971008 *519b10085198100847961008c096100804961008a997100830971008519b1008cc991008ac9810 *080c9a10080c9a1008df991008519b1008519b1008e1981008f3981008519b1008519b1008519b *1008519b1008519b1008519b1008519b1008519b1008519b1008519b1008519b1008d7991008d7 *99100878991008d7991008d79910084d9510081b9a1008269a1008b29a100858991008c0991008 *859810088598100885981008e29a1008b79f10080e9e1008ee9e1008cf9f1008b49c1008ee9e10 *08cf9f1008b79f1008b79f1008b79f1008b79f1008ab9d1008c49c10083d9d10084e9c1008c49c *10083d9d1008b79f1008da9d1008fe9c10086f9d1008819c1008fe9c10086f9d1008b79f1008ee *9e1008359e1008249f1008249f1008fe9e1008b79f1008669e1008cf9f1008669e1008b79f1008 *b79f1008b79f1008b79f1008b79f1008b79f1008b79f1008b79f1008b79f1008b79f1008b79f10 *08cf9f1008cf9f1008de9e1008cf9f1008cf9f10081e9c1008cf9f1008319f1008669f1008c49e *1008ab9f10080e9e10080e9e10080e9e10088f9f1008daa2100878a1100878a1100878a1100878 *a1100878a1100878a11008daa21008daa21008daa21008daa2100878a1100878a1100878a11008 *78a1100878a1100878a11008daa2100878a1100878a1100878a1100878a1100878a1100878a110 *08daa210089fa11008daa21008d0a21008d0a21008ada21008daa21008eea2100878a1100878a1 *1008daa21008daa21008daa21008daa21008daa21008daa21008daa21008daa21008daa21008da *a21008daa21008eea21008eea21008daa21008eea21008eea21008daa21008eea21008afa11008 *1ca21008daa21008daa2100878a1100878a11008daa210084ca21008f3a4100837a51008f3a410 *0837a5100837a5100837a5100837a5100837a5100837a5100837a5100837a5100837a5100837a5 *100837a5100837a5100837a51008dda4100837a5100837a51008b0a4100837a510081da410084f *a41008dda4100837a5100837a5100837a5100837a51008d3a41008eea710087fa710087fa71008 *1ba810081ba8100842a810088aa810086ca710087fa710087fa710085eaa100869aa100869aa10 *0857aa100857aa100839aa10084faa100831ac10083cac10083cac10082aac10082aac10080cac *100822ac10080000000000000000000000000000000000000000000000007468726561645f7374 *617469633a20737472616e676520636c6f73757265202564000000000000000000000000000000 *000000000000000000000000000000007468726561645f737461636b3a20776569726420616374 *69766174696f6e207265636f726420666f756e64206f6e20737461636b3a202564000000000000 *00007570646174655f6677645f6c617267653a20756e6b6e6f776e2f737472616e6765206f626a *6563742020256400000000000000000000000000000000000000007570646174655f6677643a20 *756e6b6e6f776e2f737472616e6765206f626a6563742020256400007ab010081fb010081fb010 *0848b1100848b1100875af1008dfb110081fb010081fb010081fb010084cb41008fdb3100856b4 *100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856 *b4100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856b41008 *56b410086ab41008a3b31008a3b3100856b4100856b4100856b4100856b4100856b41008f3b310 *0812bb100812bb1008e6ba1008e6ba1008ecba1008ecba1008ecba100812bb100812bb100812bb *100812bb100812bb1008e6ba1008e6ba1008ecba1008ecba1008ecba100812bb100812bb1008ec *ba1008ecba1008ecba1008ecba1008ecba100812bb1008ecba10080dbb1008f2ba1008f2ba1008 *01bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb10 *0812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb *100812bb100812bb1008faba100801bb100801bb100812bb100812bb100812bb100812bb100812 *bb100806bb1008eec2100844c01008b3be1008e8be1008f0be1008ebc1100820c21008eec21008 *eec21008eec21008eec2100844c01008b3be1008e8be1008f0be1008ebc1100820c21008eec210 *0844c01008ebc1100820c21008f0be1008ebc1100820c21008eec21008ebc1100865bf100881c2 *100881c2100828c21008eec21008ebc1100844c01008ebc11008eec21008eec21008eec21008ee *c21008eec21008eec21008eec21008eec21008eec21008eec21008eec2100844c0100844c01008 *44c0100844c0100844c0100842c110088bc2100896c2100896c2100844c0100844c0100895c010 *0844c0100844c01008e4c21008616c6c6f635365676d656e7400616c6c6f63486173684c697374 *00616c6c6f63486173685461626c6500696e7465727072657442434f3a20686974206120434153 *454641494c00000000000000000000696e7465727072657442434f3a20756e6b6e6f776e206f72 *20756e696d706c656d656e746564206f70636f6465000000bac91008d0c91008d0c91008d0c910 *08d0c91008d0c91008d0c91008d0c91008d0c91008d0c91008d0c91008d0c91008d0c91008d0c9 *1008d0c91008d0c91008d0c91008d0c91008bac91008bac91008bac91008bac91008bac91008ba *c91008bac91008bac91008d0c9100845c91008d0c91008bac9100838c9100838c9100838c91008 *38c9100838c91008eccb1008f7cb1008f7cb1008e5cb1008e5cb1008c7cb1008ddcb10080fd710 *082fcf10087fcf100899cf1008c2cf100805d0100825d010083fd0100859d0100873d0100894d0 *1008b5d01008d6d01008b4d1100800d110081ed110082dd110083cd110080fd110084bd110085a *d1100869d1100878d1100887d1100896d11008a5d11008f8d1100828d210085dd21008a1d21008 *e3d210081fd31008d0d31008fed31008d3d4100828d5100829d4100878d4100887d31008add310 *0806d71008f1d610083fd6100820d6100883d51008b7d51008c6d51008d5d51008e4d51008f3d5 *100802d6100811d610080000000000000000000000000000000000000000000000006f7574206f *66206d656d6f727920287265717565737465642025642062797465732900000000000000000000 *000000000000000000000000000000000000000067656e5f6d61705f6d626c6f636b733a206d75 *6e6d6170206661696c6564006765744d426c6f636b3a206d6d61703a202573006765744d426c6f *636b3a206d756e6d6170206661696c656400527473466c6167732e633a73706c6974527473466c *616773282900474843525453002d2d525453002d2d002b52545300756e65787065637465642052 *545320617267756d656e743a2025730025302e313232732e7374617400474843206e6f74206275 *696c7420666f723a202d70726f6600474843206e6f74206275696c7420666f723a202d70617261 *6c6c656c00474843206e6f74206275696c7420666f723a202d6772616e73696d00696e636f6d70 *6c65746520525453206f7074696f6e3a20257300756e6b6e6f776e20525453206f7074696f6e3a *2025730073746465727200770043616e2774206f70656e2073746174732066696c652025730a00 *257320002b525453200062616420525453206f7074696f6e3a2025730000000000000000000000 *000000000000000000000000000055736167653a203c70726f673e203c617267733e205b2b5254 *53203c7274736f7074733e207c202d525453203c617267733e5d202e2e2e202d2d525453203c61 *7267733e000000000000000000000000000000000000000000000000000000002020202b525453 *20202020496e646963617465732072756e2074696d652073797374656d206f7074696f6e732066 *6f6c6c6f77000000000000000000000000002020202d52545320202020496e6469636174657320 *70726f6772616d20617267756d656e747320666f6c6c6f77000000000000000000000000000000 *0000000020202d2d52545320202020496e64696361746573207468617420414c4c207375627365 *7175656e7420617267756d656e74732077696c6c20626520676976656e20746f20746865000000 *00000000000000000000000000000000000000000000202020202020202020202070726f677261 *6d2028696e636c7564696e6720616e79206f662074686573652052545320666c61677329000000 *000000000000000054686520666f6c6c6f77696e672072756e2074696d652073797374656d206f *7074696f6e732061726520617661696c61626c653a00000000000000000000000020202d3f2020 *20202020205072696e74732074686973206d65737361676520616e642065786974733b20746865 *2070726f6772616d206973206e6f74206578656375746564000000000000000000000000000000 *00000000000000000000000020202d4b3c73697a653e205365747320746865206d6178696d756d *20737461636b2073697a65202864656661756c7420314d2920204567733a202d4b33326b202020 *2d4b3531326b00000000000000000000000000000000000000000000000020202d6b3c73697a65 *3e20536574732074686520696e697469616c2074687265616420737461636b2073697a65202864 *656661756c7420316b2920204567733a202d6b346b2020202d6b326d0000000000000000000000 *00000000000000000020202d413c73697a653e205365747320746865206d696e696d756d20616c *6c6f636174696f6e20617265612073697a65202864656661756c74203235366b29204567733a20 *2d41316d202d4131306b000000000000000000000000000000000020202d4d3c73697a653e2053 *65747320746865206d6178696d756d20686561702073697a65202864656661756c7420756e6c69 *6d697465642920204567733a202d4d3235366b202d4d3147000000000000000000000000000000 *00000000000020202d483c73697a653e205365747320746865206d696e696d756d206865617020 *73697a65202864656661756c7420304d292020204567733a202d4832346d20202d483147000000 *00000000000000000000000000000000000000000000000020202d6d3c6e3e202020204d696e69 *6d756d2025206f662068656170207768696368206d75737420626520617661696c61626c652028 *64656661756c742033252900000000000000000000000000000000000000000000000000000000 *00000020202d473c6e3e202020204e756d626572206f662067656e65726174696f6e7320286465 *6661756c743a2032290000000000000000000000000000000000000020202d543c6e3e20202020 *4e756d626572206f6620737465707320696e20796f756e6765722067656e65726174696f6e7320 *2864656661756c743a203229000020202d633c6e3e202020204175746f2d656e61626c6520636f *6d70616374696f6e206f6620746865206f6c646573742067656e65726174696f6e207768656e20 *6c6976652064617461206973000000000000000000000000000000000000000020202020202020 *202020206174206c65617374203c6e3e25206f6620746865206d6178696d756d20686561702073 *697a65207365742077697468202d4d202864656661756c743a2033302529000000000000000000 *000000000000000000000020202d6320202020202020456e61626c6520636f6d70616374696f6e *20666f7220616c6c206d616a6f7220636f6c6c656374696f6e730000000000000000000020202d *743c66696c653e204f6e652d6c696e65204743207374617469737469637320202864656661756c *742066696c653a203c70726f6772616d3e2e737461742900000000000000000000000000000000 *00000000000000000000000000000020202d733c66696c653e2053756d6d617279202047432073 *74617469737469637320202877697468202d5373746465727220676f696e6720746f2073746465 *72722900000000000000000000000000000000000000000000000000000000000020202d533c66 *696c653e2044657461696c65642047432073746174697374696373000000000000000000000000 *0000000000000000000000000000000000000020202d5a20202020202020446f6e277420737175 *65657a65206f757420757064617465206672616d6573206f6e20737461636b206f766572666c6f *770000000020202d4220202020202020536f756e64207468652062656c6c206174207468652073 *74617274206f662065616368206761726261676520636f6c6c656374696f6e0000000000000000 *000000000000000000000000000000000000000000000020202d433c736563733e2020436f6e74 *6578742d73776974636820696e74657276616c20696e207365636f6e6473000000000000000000 *000000000000000000202020202020202020202020202020202830206f72206e6f20617267756d *656e74206d65616e7320737769746368206173206f6674656e20617320706f737369626c652900 *000000000000000000000000000000000000000000000000000000202020202020202020202020 *202020207468652064656661756c74206973202e3032207365633b207265736f6c7574696f6e20 *6973202e303220736563000000525453206f7074696f6e73206d617920616c736f206265207370 *65636966696564207573696e67207468652047484352545320656e7669726f6e6d656e74207661 *726961626c652e0000000000000000000000000000000000000000000000004f74686572205254 *53206f7074696f6e73206d617920626520617661696c61626c6520666f722070726f6772616d73 *20636f6d70696c6564206120646966666572656e74207761792e00000000000000000000000000 *000000000000000000005468652047484320557365722773204775696465206861732066756c6c *2064657461696c732e0000000000000000000000000000000000000000000000000000746f6f20 *6d616e792052545320617267756d656e747320286d61782025642900474843206e6f7420627569 *6c7420666f723a202d70726f66206f72202d706172616c6c656c00000000000000000000000000 *0000000000000000000000000000474843206e6f74206275696c7420666f723a202d706172616c *6c656c206f72202d736d7000000000000000000000000000000000000000000000000000000000 *474843206e6f74206275696c7420666f723a207469636b792d7469636b79207374617473000000 *0000007a44286b6e4e00247449000080404de110083ae11008cedd1008f2dd100834e010083ae1 *10083ae110084fde100842df10086cdf10083ae110083ae1100890de10083ae11008c6de10083a *e110083ae110081ae010083ae1100823e01008a7df100857df10083ae110083ae110083ae11008 *3ae110083ae110080be010083ae110083ae110083ae110083ae110083ae110083ae110083ae110 *08ece0100801de10083ae11008d4e010083ae110083ae1100823e010083ae110083ae11008abde *10083ae11008eade10083ae110083ae110081ae01008e0e01008f8e01008b3df1008bfdf10083a *e110083ae110083ae1100804e11008000000000000802f011b033b64820000040000008853ffff *808200001855ffffa08200002857ffffc08200005858ffffe08200000000000000000000000000 *0000000000000000005815120800000000c09a0408000000000000000000000000249b04080000 *0000000000000000000000000000589e04080000000084a104080000000020d10408000000002c *cd04087acd0408c3cd04080cce040888cf040888cf040854ce0408a2ce0408ebce04083fcf0408 *dcd104080000000000000000000000000000000070d404080000000058e004080000000088e004 *08000000000000000000000000b4e7040800000000ace904080000000004ea0408000000000000 *0000000000007cea0408000000000000000000000000e4ea040800000000000000000000000098 *0b050800000000980c050800000000fc0d050800000000f818050808190508800e05083c0f0508 *08100508201005085c1005089810050850180508d410050844120508b0130508c8130508041405 *084814050874150508681605088016050858170508dc17050800000000a0190508000000000000 *000000000000181a0508000000000000000000000000801a0508000000000000000000000000f8 *1a0508000000000000000000000000601b05080000000000000000000000000420050800000000 *00000000000000007c200508000000000000000000000000f42005080000000000000000000000 *005c210508000000000000000000000000c8210508000000000000000000000000402205080000 *00000000000000000000a822050800000000000000000000000014230508000000000000000000 *00000080230508000000000000000000000000ec23050800000000000000000000000064240508 *0000000000000000000000000426050800000000c02605080000000088270508000000000c2e05 *080000000060dc0b0800000000402e0508000000000000000000000000ac2e0508000000000000 *000000000000683f0508000000000000000000000000e03f050800000000000000000000000040 *4205080000000068420508c44205087843050818500508000000000000000000000000582d0c08 *0ca4110894a411082ca41108000000009c500508000000000000000000000000545c0508000000 *0060dc0b0800000000885c0508000000000000000000000000f45c050800000000000000000000 *0000001e0c08eca41108fca411084ca411080ca5110800000000705d0508000000000000000000 *000000d45d0508000000000000000000000000385e050800000000000000000000000030730508 *000000000000000000000000a8730508000000000000000000000000001e0c0854a5110864a511 *082ca5110874a51108000000002474050800000000000000000000000088740508000000000000 *000000000000ec740508000000000000000000000000e078050800000000000000000000000058 *790508000000000000000000000000582d0c08a4a41108b8a51108c4a4110800000000c4790508 *0000000000000000000000002c7d05080000000060dc0b0800000000607d050800000000000000 *0000000000cc7d0508000000000000000000000000582d0c08c8a511080ca61108e8a511080000 *0000387e0508000000000000000000000000001e0c0834a6110844a6110894a5110854a6110800 *000000b47e0508000000000000000000000000187f05080000000000000000000000007c7f0508 *0000000000000000000000008cdd0b0874a61108f4a3110800000000e87f050800000000000000 *000000000074dd0b0864a61108fca31108aca61108bca61108cca61108dca61108eca61108fca6 *1108000000007c800508000000000000000000000000e080050800000000000000000000000044 *810508000000000000000000000000a88105080000000000000000000000000c82050800000000 *0000000000000000708205080000000000000000000000006885050800000000048e0508000000 *0030950508000000009c950508000000008cdd0b0824a711081ca7110800000000109705080000 *000078970508000000008cdd0b0844a711083ca7110800000000d0970508f89705081098050888 *980508d8980508cc9e0508f09805082c99050868990508a4990508e8990508dc9b0508c09d0508 *d89d0508509e0508a09e050800000000cca205080000000060dc0b0800000000f0a20508000000 *0000000000000000005ca30508000000000000000000000000a0a7050800000000000000000000 *000018aa05080000000000000000000000005cad0508acad0508000000008cdd0b08f4a71108f0 *a7110800000000001e0c0824a8110834a81108e0a7110844a81108000000000cae050800000000 *000000000000000070ae0508000000000000000000000000d4ae05080000000000000000000000 *00582d0c08a0a7110868a81108c0a711080000000040af050800000000000000000000000004b3 *050814b3050824b3050834b3050844b3050854b3050864b30508c8b00508f0b20508000000002c *b5050860dc0b080000000060dc0b08010000005cb50508000000000000000000000000ccb50508 *00000000000000000000000040b60508000000000000000000000000acb6050800000000000000 *000000000018b7050800000000000000000000000084b70508000000000000000000000000f0b7 *050800000000000000000000000068b80508000000000000000000000000d4ba0508000000000c *bb050800000000000000000000000078bb0508000000000000000000000000e4bb050800000000 *000000000000000050bc0508000000000000000000000000bcbc05080000000000000000000000 *00e4c10508000000000cc405080000000054c705080000000070c805080000000018cc05080000 *000094cc05080000000014cd05080000000034cd050800000000000000000000000018d3050800 *000000f8d60508000000000ce905080000000048dc0b082e0000008cdc0b08eca9110800d21108 *0100000074ea05080000000050eb050800000000000000000000000030f1050800000000b8fb05 *0800000000d010060800000000441106080000000000000000000000008013060800000000d813 *0608000000000000000000000000c415060800000000c8160608000000000000000000000000ac *1e060800000000101f0608000000000000000000000000741f0608000000000000000000000000 *28240608000000008c24060800000000000000000000000000000000b426060800000000dc2706 *08742a0608000000005c2b0608000000000000000000000000c82c060800000000000000000000 *000060dc0b08030000007c2d0608000000000000000000000000ec2e0608000000000000000000 *000000d42f06080000000000000000000000001831060800000000000000000000000098320608 *000000000000000000000000dc330608000000000000000000000000f836060800000000000000 *0000000000203b0608000000000000000000000000503d0608000000000000000000000000c03f *06080000000000000000000000007c420608000000000000000000000000c448060800000000fc *48060800000000000000000000000068490608000000000000000000000000d449060800000000 *0000000000000000b05006080000000024510608000000005c5106080000000094510608000000 *00cc5106080000000004520608000000003c520608000000000c5c060800000000345306086453 *06080b54060894530608ad530608dc5306082064060800000000546c060800000000c86c060800 *00000000000000000000003c6d0608000000000000000000000000b06d06080000000000000000 *00000000246e0608000000000000000000000000986e0608000000000000000000000000006f06 *080000000000000000000000006c6f0608000000000000000000000000e46f0608000000000000 *0000000000004c700608000000000000000000000000c47006080000000000000000000000002c *710608000000000000000000000000a47106080000000000000000000000000c72060800000000 *000000000000000078720608000000000000000000000000f07206080000000000000000000000 *00ec7a06080000000000000000000000006c7b0608000000000000000000000000f07f06080000 *000060dc0b08000000002480060800000000000000000000000090800608000000000000000000 *0000004c610708e0d01108e0d01108e0d01108e0d01108e0d01108e0d01108e0d01108e0d01108 *e0d0110801000000b88806080000000000000000000000007c9106080000000000000000000000 *00849f060800000000000000000000000058a806080000000018b506080000000068af060877af *060886af060895af0608a9af0608bdaf0608d1af0608e5af0608f9af06080db0060821b006083d *b006083db006083db006083db006083db0060835b0060880b506080000000008ba060800000000 *74ba0608000000008cdd0b0844ae11083cae110800000000c4ba06080000000000000000000000 *0084c3060800000000ecc30608000000008cdd0b0874ae11086cae1108000000002cc706080000 *000094c70608000000008cdd0b0894ae11088cae110800000000001e0c08c4ae1108d4ae110844 *ad1108e4ae110800000000f4c7060800000000000000000000000058c806080000000000000000 *00000000bcc8060800000000000000000000000064e60608000000000000000000000000dce606 *08000000000000000000000000582d0c0854ad110828af110874ad11080000000048e706080000 *0000000000000000000034f306080000000060dc0b080000000068f30608000000000000000000 *000000d4f3060800000000000000000000000040f40608000000000000000000000000080f0708 *0000000060dc0b08000000003c0f0708000000000000000000000000a80f070800000000000000 *0000000000001e0c08c0af1108d0af110804af1108e0af11080000000024100708000000000000 *00000000000088100708000000000000000000000000ec10070800000000000000000000000058 *2d0c0838af110804b0110858af1108000000005811070800000000000000000000000084150708 *00000000ec150708000000008cdd0b081cb0110814b0110800000000582d0c0878af110848b011 *0898af1108000000003c1607080000000000000000000000000821070800000000bc1e0708fe1e *07082a1f0708561f0708981f0708c41f0708f01f0708322007085e200708a020070860dc0b0800 *0000003c210708000000000000000000000000a8210708000000000000000000000000582d0c08 *58b01108c4b01108a0b011080000000014220708000000000000000000000000b02a0708000000 *0010290708272907083e290708552907086c290708832907089a290708b1290708102a0708102a *0708102a0708c8290708df290708f62907089440070800000000e03b07080c3c0708383c070864 *3c0708a63c0708e83c07082a3d07086c3d0708ae3d0708f03d0708323e0708743e0708a03e0708 *cc3e0708f83e07083a3f0708144107083c410708644107088c410708b4410708dc410708044207 *082c420708544207087c420708a4420708cc420708f44207081c430708444307086c4307089443 *0708bc4307082462070834620708446207085462070864620708d443070820450708e846070800 *470708d84707085c480708884807084c4a0708304b0708484b0708706107087c610708804b0708 *a0610708ac610708b84b0708d0610708f04b0708f461070800620708504e0708d8510708884e07 *08cd4e0708124f0708634f0708b54f0708fa4f07084b5007089d500708e150070833510708f05f *0708fc5f070808600708f0510708285207086052070898520708d0520708085307084053070878 *530708d4600708e0600708ec600708b0530708e8530708205407084c580708145e070884580708 *d65807082859070879590708ca5907081b5a07086c5a0708bd5a07080e5b07085f5b0708b05b07 *08025c0708545c0708a65c0708f75c0708555d07082c5e07082c5f0708c45f0708000000003c65 *0708000000000000000000000000b46507080000000000000000000000002c6607080000000000 *000000000000001c6b070800000000606b0708000000000000000000000000c86b070800000000 *0000000000000000346c0708000000000000000000000000a06c07080000000000000000000000 *000c6d0708000000000000000000000000786d0708000000000000000000000000e46d07080000 *000000000000000000005c6e0708000000000000000000000000c46e0708000000000000000000 *0000003c6f0708000000000000000000000000a46f07080000000000000000000000001c700708 *00000000000000000000000084700708000000000000000000000000fc70070800000000000000 *000000000064710708000000000000000000000000d07107080000000000000000000000004072 *0708000000000000000000000000b4720708000000000000000000000000207307080000000000 *000000000000008c730708000000000000000000000000fc730708000000000000000000000000 *70740708000000000000000000000000e874070800000000000000000000000050750708000000 *000000000000000000c87507080000000000000000000000003476070800000000000000000000 *0000a8760708000000000000000000000000207707080000000000000000000000008877070800 *0000000000000000000000f4770708000000000000000000000000647807080000000000000000 *00000000d878070800000000000000000000000050790708000000000000000000000000c47907 *08000000000000000000000000387a0708000000000000000000000000ac7a0708000000000000 *000000000000207b0708000000000000000000000000887b0708000000000000000000000000f8 *7b07080000000000000000000000006c7c0708000000000000000000000000d87c070800000000 *0000000000000000447d0708000000000000000000000000b47d07080000000000000000000000 *00287e07080000000000000000000000005c81070800000000fc8e070800000000648f07080000 *00008cdd0b08dcb51108d4b511080000000034ef0708000000000000000000000000acef070800 *0000000000000000000000901708080000000060dc0b0800000000c41708080000000000000000 *0000000030180808000000000000000000000000889f050800d2110800d211080100000044ec09 *0800d2110844b611080100000064c4090854b611088ca8110800d2110800d2110800d2110800d2 *110800d2110800d2110800d2110800d2110800d2110800d2110800d2110800d21108e0d0110800 *d2110801000000d019080800000000801a080800000000f01a080800000000641c080800000000 *34c4090804d2110800d2110800d2110800d2110800d21108f4a9110800d2110800d2110800d211 *0800d2110800d2110800d2110800d21108000000001cc4090800d2110800d21108ccb611080000 *0000d8240808000000004cc4090800d21108ccb61108000000001c2a080800000000802b080800 *000000b42b080800000000142c0808000000000000000000000000942c08080000000000000000 *000000008cdc0b085cb7110800d2110800000000a02d0808d02d08080000000000000000000000 *004c2e08080000000000000000000000008cdc0b0890b711086cb7110800000000582f0808c42f *080800000000000000000000000034300808000000000000000000000000b03008080000000000 *000000000000008cdc0b08d4b71108a0b7110800000000bc310808283208080000000000000000 *0000000098320808000000000000000000000000143308080000000000000000000000008cdc0b *0818b81108e4b7110800000000203408088c340808000000000000000000000000fc3408080000 *00000000000000000000783508080000000000000000000000008cdc0b085cb8110828b8110800 *00000084360808f036080800000000000000000000000060370808000000000000000000000000 *dc3708080000000000000000000000008cdc0b08a0b811086cb8110800000000e8380808543908 *08000000000000000000000000c4390808000000000000000000000000403a0808000000000000 *0000000000008cdc0b08e4b81108b0b81108000000004c3b0808b83b0808000000000000000000 *000000283c0808000000000000000000000000a43c08080000000000000000000000008cdc0b08 *28b91108f4b8110800000000b03d08081c3e08080000000000000000000000008c3e0808000000 *000000000000000000083f08080000000000000000000000008cdc0b086cb9110838b911080000 *00001440080844400808000000000000000000000000c04008080000000000000000000000008c *dc0b08a0b911087cb9110800000000cc41080838420808000000000000000000000000a8420808 *000000000000000000000000244308080000000000000000000000008cdc0b08e4b91108b0b911 *0800000000304408089c4408080000000000000000000000000c45080800000000000000000000 *0000884508080000000000000000000000008cdc0b0828ba1108f4b911080000000094460808c4 *460808000000000000000000000000404708080000000000000000000000008cdc0b085cba1108 *38ba1108000000004c48080884480808000000000000000000000000f448080800000000000000 *0000000000704908080000000000000000000000008cdc0b08a0ba11086cba110800000000f84a *0808284b0808000000000000000000000000a04b0808000000000000000000000000104c080800 *0000000000000000000000904c08080000000000000000000000008cdc0b08f4ba1108b0ba1108 *00000000184e0808484e0808000000000000000000000000b84e08080000000000000000000000 *00384f08080000000000000000000000008cdc0b0838bb110804bb110800000000f0bb0b08e0d0 *110800d211080100000024510808000000003453080800000000a8530808d85308080000000000 *00000000000000545408080000000000000000000000008cdc0b088cbb110800d2110800000000 *105508087c550808000000000000000000000000ec550808000000000000000000000000685608 *080000000000000000000000008cdc0b08d0bb11089cbb11080000000060570808905708080000 *00000000000000000000045808080000000000000000000000008cdc0b0804bc110800d2110800 *000000f45808082459080800000000000000000000000098590808000000000000000000000000 *8cdc0b0838bc110814bc110800000000885a0808b85a08080000000000000000000000002c5b08 *080000000000000000000000008cdc0b086cbc110848bc1108000000001c5c08084c5c08080000 *00000000000000000000c85c08080000000000000000000000008cdc0b08a0bc11087cbc110800 *000000c05d0808f05d08080000000000000000000000006c5e0808000000000000000000000000 *8cdc0b08d4bc1108b0bc110800000000645f0808945f0808000000000000000000000000106008 *080000000000000000000000008cdc0b0808bd1108e4bc11080000000008610808386108080000 *00000000000000000000b46108080000000000000000000000008cdc0b083cbd110818bd110800 *000000ac620808dc62080800000000000000000000000058630808000000000000000000000000 *8cdc0b0870bd11084cbd1108000000005064080880640808000000000000000000000000fc6408 *080000000000000000000000008cdc0b08a4bd110880bd110800000000f46508082c6608080000 *000000000000000000009c66080800000000000000000000000018670808000000000000000000 *0000008cdc0b08e8bd1108b4bd1108000000001068080840680808000000000000000000000000 *bc6808080000000000000000000000008cdc0b081cbe1108f8bd110800000000b4690808746a08 *080000000000000000000000002c6b0808000000000000000000000000a06b0808000000000000 *0000000000001c6c08080000000000000000000000008cdc0b0870be11082cbe11080000000014 *6d0808d46d08080000000000000000000000008c6e0808000000000000000000000000006f0808 *0000000000000000000000007c6f08080000000000000000000000008cdc0b08c4be110880be11 *08000000007470080834710808000000000000000000000000ec71080800000000000000000000 *000060720808000000000000000000000000dc7208080000000000000000000000008cdc0b0818 *bf1108d4be110800000000d47308080c7408080000000000000000000000007c74080800000000 *0000000000000000f87408080000000000000000000000008cdc0b085cbf110828bf1108000000 *00dc7a080800000000407b0808000000005085080800000000a885080800000000e88a08080000 *0000848b0808000000009c9e080800000000189f080800000000c0a008080000000038ac080800 *00000094ad080800000000fcad0808000000008cdd0b08d4bf1108ccbf1108000000004cae0808 *000000000000000000000000b8b008080000000020b10808000000008cdd0b0804c01108fcbf11 *0800000000001e0c0834c0110844c0110804b6110854c011080000000080b10808000000000000 *000000000000e4b1080800000000000000000000000048b2080800000000000000000000000004 *c308080000000000000000000000007cc30808000000000000000000000000001e0c089cc01108 *acc0110874c01108bcc0110800000000f8c308080000000000000000000000005cc40808000000 *000000000000000000c0c408080000000000000000000000002cc5080800000000000000000000 *0000a4c50808000000000000000000000000c4dc08080000000000000000000000003cdd080800 *0000000000000000000000582d0c0814b6110820c1110834b6110800000000a8dd080800000000 *000000000000000028e408080000000060dc0b08000000005ce408080000000000000000000000 *00c8e40808000000000000000000000000582d0c0830c1110874c1110850c111080000000034e5 *0808000000000000000000000000a0e50808000000000000000000000000d0ee08080000000060 *dc0b080000000004ef080800000000000000000000000070ef0808000000000000000000000000 *dcef08080000000000000000000000001c0209080000000084020908000000008cdd0b08dcc111 *08d4c1110800000000001e0c080cc211081cc21108fcc011082cc2110800000000e40209080000 *0000000000000000000048030908000000000000000000000000ac030908000000000000000000 *00000018040908000000000000000000000000900409080000000000000000000000007c7d0908 *000000000000000000000000f47d0908000000000000000000000000001e0c0894c21108a4c211 *086cc21108b4c2110800000000707e0908000000000000000000000000d47e0908000000000000 *000000000000387f0908000000000000000000000000582d0c0894c11108d8c21108b4c1110800 *000000a47f09080000000000000000000000001080090800000000000000000000000080b20908 *0000000060dc0b0800000000b4b2090800000000000000000000000020b3090800000000000000 *0000000000582d0c08f8c211083cc3110818c31108000000008cb3090800000000000000000000 *000000b4090828b4090850b4090878b40908a0b40908c8b40908f0b4090818b5090840b5090868 *b5090890b50908b8b50908e0b5090808b6090830b6090858b6090880b60908a8b60908d0b60908 *f8b6090820b7090848b7090870b7090898b70908c0b70908e8b7090810b8090838b8090860b809 *0888b80908b0b80908d8b8090800b9090828b9090854b90908d0bb090810bd090828bd0908a0bd *0908f0bd090808be0908a8be090818bf090844bf090860c20908fcc30908000000000cc7090800 *000000000000000000000080c70908000000000000000000000000e8c709080000000000000000 *0000000060c80908000000000000000000000000c8c8090800000000000000000000000034c909 *0800000000000000000000000050cc0908000000000000000000000000b8cc0908000000000000 *0000000000006cce090800000000d4ce0908000000008cdd0b0890c4110888c411080000000054 *d509080000000060dc0b080000000088d50908000000000000000000000000f4d5090800000000 *0000000000000000b0e6090800000000000000000000000028e709080000000000000000000000 *0074e8090800000000582d0c08a8c4110814c51108c8c4110800000000a4e80908000000000000 *0000000000000ce90908000000000000000000000000001e0c084cc511085cc51108e8c411086c *c511080000000080e90908000000000000000000000000e4e90908000000000000000000000000 *48ea0908000000000000000000000000b0ea09080000000000000000000000001ceb090844eb09 *085ceb0908d4eb090824ec09080000000094ed09086cee090800000000b4ee0908d0ee09080cef *0908b0f0090800000000000000000000000094f309080000000020f40908000000000000000000 *0000007cf909080000000000000000000000006c050a0800000000000000000000000084060a08 *00000000000000000000000054070a0800000000e0080a08000000000000000000000000740e0a *0800000000000f0a08000000002c100a0800000000000000000000000098130a08000000000000 *0000000000003c140a08000000000000000000000000b0140a0800000000000000000000000008 *1c0a08000000000000000000000000381d0a0800000000541e0a080000000078200a0800000000 *d4230a0800000000d0250a0800000000dc270a0800000000000000000000000030290a08000000 *002c2b0a0800000000702c0a0800000000202d0a0800000000bc2e0a0800000000000000000000 *000058300a080000000038320a0800000000f0330a080000000078370a0800000000d8380a0800 *000000f83b0a08000000006c3d0a0800000000c43f0a080000000000000000000000003c400a08 *000000000000000000000000b4400a08f0400a0804450a082c410a0870410a08f8420a0874440a *088c440a08a0440a08b4440a080000000060dc0b080000000060dc0b0800040000d8450a080000 *0000000000000000000044460a08000000000000000000000000b0460a08000000000000000000 *0000001c470a0800000000000000000000000088470a08000000000000000000000000dc4b0a08 *000000007c580a0800000000cc580a080000000000000000000000003c590a0800000000000000 *0000000000145c0a0800000000a4640a08000000000000000060650a0800000000b4650a080000 *00007c660a080000000008670a080000000094670a0800000000a46a0a0800000000ec6b0a0800 *00000048dc0b082f0000007c740a080000000050760a080000000020770a0800000000a4800a08 *00000000fc830a0800000000c8860a080000000048dc0b083a000000ac870a080000000064890a *08000000006cdc0b0848dc0b086f0000008cdc0b08a8c8110800d2110801000000ac890a080000 *000000000000000000000000000060dc0b0801000000508a0a08000000000000000000000000c8 *8a0a08000000000000000000000000d4960a080000000030970a08000000000000000000000000 *94970a0820a40a0800000000e0a50a080000000000b00a0800000000e8b60a080000000050b70a *08ecba0a08fcba0a088cb70a08d0b70a083cb90a08b8ba0a0800000000b0bd0a0810be0a080000 *0000000000000000000074cf0a080000000000000000000000002cda0a08000000000000000000 *00000064e70a080000000000e20a082ce20a0858e20a0884e20a08b0e20a08dce20a0808e30a08 *34e30a0860e30a088ce30a08b8e30a08e4e30a0810e40a083ce40a0868e40a0894e40a08c0e40a *08ece40a0818e50a0844e50a0870e50a089ce50a08c8e50a08f4e50a0820e60a084ce60a0878e6 *0a08a4e60a08d0e60a08fce60a0860dc0b080000000088e70a08000000000000000000000000f4 *e70a08000000000000000000000000b4e80a08000000002ce90a08000000008cdd0b083cca1108 *34ca11080000000080e90a08000000000000000000000000f4e90a080000000000000000000000 *004cf70a0800000000a4f00a08d5f00a0806f10a0837f10a0868f10a0899f10a08caf10a08fbf1 *0a082cf20a085df20a088ef20a08bff20a08f0f20a0821f30a0852f30a0883f30a08b4f30a08e5 *f30a0816f40a0847f40a0878f40a08a9f40a08daf40a080bf50a083cf50a086df50a089ef50a08 *c9f50a08f4f50a081ff60a0820000b080000000094fb0a08c5fb0a08f6fb0a0827fc0a0825ff0a *0858fc0a0889fc0a08bafc0a08ebfc0a081cfd0a084dfd0a087efd0a08affd0a08e0fd0a080bfe *0a0825ff0a0825ff0a0836fe0a0825ff0a0825ff0a0825ff0a0825ff0a0825ff0a0825ff0a0825 *ff0a0825ff0a0825ff0a0861fe0a0892fe0a08c3fe0a08f4fe0a0850030b0800000000582d0c08 *8cc9110894cb110824ca110800000000ac030b08000000000000000000000000001e0c08bccb11 *08cccb11087cc91108dccb11080000000028040b080000000000000000000000008c040b080000 *00000000000000000000f0040b0800000000000000000000000048160b0854160b0860160b086c *160b0878160b0884160b0890160b089c160b08a8160b08b4160b08c0160b08cc160b08d8160b08 *e4160b08f0160b08fc160b0808170b0814170b0820170b082c170b0838170b0844170b0850170b *085c170b0868170b0874170b0880170b088c170b0898170b08a4170b08b0170b087c0a0b083416 *0b08b40a0b08130b0b08720b0b08d10b0b08300c0b088f0c0b08ee0c0b084d0d0b08ac0d0b080b *0e0b086a0e0b08c90e0b08280f0b08870f0b08e60f0b0845100b08a4100b0803110b0862110b08 *c1110b0820120b087f120b08de120b083d130b089c130b08fb130b085a140b08b9140b0818150b *0877150b08000000000000000000000000fc190b08000000000000000000000000c81b0b080000 *0000201d0b08000000000000000000000000e01d0b08000000000000000000000000941e0b0800 *000000000000000000000034220b08000000000000000000000000e4220b0800000000bc260b08 *0000000000000000000000006c270b08000000009c270b08000000000c2c0b080000000060dc0b *0801000000782c0b08000000000000000000000000542d0b08000000000000000000000000d42d *0b08000000000000000000000000b02e0b08000000000000000000000000302f0b080000000000 *000000000000009c2f0b0800000000000000000000000008300b08000000000000000000000000 *74300b08000000000000000000000000e0300b08000000000000000000000000cc320b08000000 *000000000000000000a0360b08000000000000000000000000c0380b0800000000000000000000 *0000843f0b08000000000000000000000000f03f0b080000000000000000000000005c400b0800 *0000000000000000000000c8400b0800000000000000000000000040410b080000000000000000 *00000000a0410b08f0410b087c420b08a44b0b080000000060dc0b0800000000d84b0b08000000 *000000000000000000444c0b0800000000000000000000000044530b0800000000dc560b080000 *0000e0580b0800000000245a0b0800000000745c0b0800000000582d0c08a0ce11080ccf1108c0 *ce110800000000c85c0b0800000000000000000000000074610b0800000000f0610b0800000000 *00000000000000006c620b08000000000000000000000000b4680b0800000000b06b0b08000000 *00f0700b0800000000347b0b0800000000307e0b08000000000000000000000000ac7e0b080000 *0000000000000000000080800b080000000000840b0800000000000000000000000084840b0800 *0000000000000000000000fc840b0800000000000000000000000078850b08a0850b08c8850b08 *f0850b0808860b084c860b0890860b08d4870b08dc880b08f4880b0830890b08d8890b085c8a0b *08748a0b084c8b0b08d08b0b08988e0b08c88f0b08f8900b0834920b080000000080940b080000 *000060950b0800000000589b0b08000000000000000000000000cc9b0b08000000000000000000 *0000003c9c0b08000000000000000000000000a89c0b080000000000000000000000000c9d0b08 *000000000000000000000000e09d0b08589f0b0848a10b0890a10b083ca20b08b8a20b0834a30b *087ca30b0850a40b08b4a40b0898a60b0808a80b0868aa0b0864ab0b08e8ac0b08b8ad0b0848af *0b088cb00b0834b20b0854b30b0808b40b08d0b40b08e0b50b0844b60b080000000084b60b08d0 *b60b0834b70b0884b90b0848b90b08b8b90b0898bb0b08c0bb0b08f4bc0b080000000074bd0b08 *000000008cbf0b08e4c10b08e4050c08b0d71108c0d711082cd3110828d3110824d3110820d311 *081cd3110818d3110814d31108000000007cc50b0808c90b086cc90b08bcc90b08d0c90b081cca *0b0834ca0b0848ca0b0894ca0b0814cb0b0894cb0b0820cc0b08accc0b0838cd0b088cdd0b0858 *d8110854d81108010000008cdd0b0850d811084cd811080100000074dd0b085cd8110848d81108 *28d8110834d8110830d811082cd8110820d8110824d8110801000000c4cd0b0808ce0b084cce0b *0848cf0b087cd00b0804d10b08dcd20b0864d60b085cd70b0860d80b0844d90b082cda0b08e0da *0b0808db0b0830db0b0858db0b0880db0b0814dc0b086cdc0b0824dc0b0830dd0b0840dd0b08c8 *db0b089cdc0b08acdc0b08bcdc0b08f0db0b0858de0b08b0d81108a8d81108a4d81108a0d81108 *9cd8110898d8110894d8110890d8110800000000b4de0b08000000003cdf0b08e0e10b08000000 *00000000000000000044e20b08000000000000000000000000b0e20b0800000000f4e30b080000 *00003ce40b080000000018e60b08000000006ce60b080000000008e70b080000000060e80b0874 *e80b0860e90b08f8d211080100000060e90b08f4d21108010000008ce80b088cdd0b08e8d91108 *e4d91108010000005cdd0b08f4d91108f8d91108f0d91108ecd911080100000034e90b0844e90b *0804e90b086ce90b0878e90b08b4e90b08cce80b08dce80b087cea0b0820eb0b0880eb0b08c4eb *0b0814ec0b0880ec0b08ecec0b0804ee0b084cee0b08bcee0b082cf00b08bcf10b08c4f20b0800 *00000000f40b082cf50b0818f60b08b8f60b0858f70b0890f70b080cf80b0850f90b08ccf90b08 *10fb0b0854fb0b0898fb0b0834fc0b0880fc0b08c4fc0b0868fd0b08d8fd0b082cfe0b08000000 *0094fe0b0800000000fcfe0b08000000003cff0b0850ff0b0808010c0840020c085c030c08e405 *0c085cd8110808d5110840d811083cd8110844d8110838d8110814db110810db11080cdb110800 *000000e4050c0820db110840db110808db110830db110834db110838db11081cdb110854db1108 *18db11080000000054060c08dc070c0800000000a80b0c0800000000280d0c0800000000500d0c *08000000009c0e0c08ec0e0c08000000002c0f0c08d40f0c08001e0c08dcdb1108d4db1108b4db *1108c4db110800000000001e0c080cdc110804dc1108e4db1108f4db11080000000010110c0800 *00000030170c0800000000001e0c083cdc110834dc110814dc110824dc110800000000cc180c08 *00000000a81d0c08d01d0c08701e0c0804200c084c200c085c210c0860dc0b080a00000078210c *080000000014240c08d0240c0800000000582d0c08b4dc110884dc11088cdc110800000000582d *0c08c4dc1108ccdc1108bcdc110800000000582d0c0898dc1108a4dc11089cdc11080000000018 *260c08000000005c290c0800000000002d0c08282d0c08302e0c0800000000c42e0c0800000000 *f42e0c08202f0c084c2f0c08782f0c08ec2f0c08dc320c08000000003c360c08000000003c370c *0800000000d83b0c0800000000183c0c0800000000843d0c0800000000003f0c0800000000d03f *0c08000000006c400c080000000068410c0800000000a8420c08d4430c0834450c0800000000f4 *460c08000000005c470c0800000000e0470c080000000040480c0800000000ac480c0800000000 *3c490c08ac490c08244b0c08504b0c08000000000000000000000000b04b0c08e04b0c08ac4c0c *08e4050c08b8de1108f0de110828dd110824dd110820dd11081cdd110818dd110814dd110810dd *110800000000c8f10c0804df1108c8de11087cda110874da11086cda110864da11085cda110854 *da110850da1108000000002c4f0c08e4500c0838510c0800000000385d0c0800000000e05e0c08 *805f0c08a45f0c080000000094600c086c610c0860dc0b08000000001c620c08b4620c08d0620c *08f0620c085cdd0b08a4d6110838df1108a0d611089cd611080100000004640c0850640c089c64 *0c08e8640c08e86a0c0874650c0820670c08d8670c0890680c08086b0c0854df11083cd7110801 *00000001000000086b0c0848df11083cd711080100000001000000086b0c083cdf11083cd71108 *010000000100000004690c0800000000c4690c0800000000806a0c0800000000586b0c08e86a0c *085c6c0c080000000010750c080000000074770c08b4770c08f4780c0848dc0b082000000048dc *0b080a000000547b0c08a47b0c080000000000000000000000000c7c0c08887c0c080000000030 *7e0c080000000090800c080000000050810c08c8050c0801000000d8810c08b8820c088cdd0b08 *88da110884da110801000000582d0c084cda110838da11088cda11080000000034840c08c4840c *08a8e90b08b4e0110800000000e4840c08b8860c080000000000880c0850890c08f4e01108f0e0 *1108e4dc1108e0dc1108e0e01108e4e01108e8e01108ece0110801000000c8890c08348a0c08a0 *8a0c08088b0c08708b0c08d88b0c08408c0c08908c0c08fc8c0c08688d0c08d48d0c08248e0c08 *8c8e0c08f48e0c086c8f0c088cdd0b080ce1110810e111080100000024dc0b088cdd0b082ce111 *0808e1110801000000ec8f0c0800000000000000000000000054900c08c4900c0814910c086491 *0c08b0910c08c4910c08e0910c080000000050920c0800000000d0920c08000000000000000000 *00000038930c08000000000000000000000000a8930c080000000010960c080000000000000000 *0000000070960c08e8960c0800000000000000000000000054970c080000000000000000000000 *00c0970c080000000000000000000000003c980c08000000009c990c0800000000689b0c080000 *0000649c0c08d09e0c0800000000749f0c080000000018a00c0800000000a4a30c080000000078 *a40c0800000000e0aa0c0800000000f0bb0b0824da1108f0e211080000000078ad0c0800000000 *a4af0c080000000000000000000000001cb00c08000000006cb30c080000000098b40c08000000 *00ccb50c08000000006cb80c080000000014b90c080000000060b90c080000000098bc0c080000 *0000e4bc0c080000000048bf0c0888bf0c0844c00c084cc10c08ccc10c08e4c10c0830c20c0884 *c20c0808c30c088cc30c08b4c30c08dcc30c0804c40c08ecc40c08fcc40c08ccc40c08dcc40c08 *bcc40c0898c40c0888c40c0890ed0b08ffffffff48c50c0890ed0b080000000090ed0b08010000 *0098c50c08e8c50c0840c60c080000000098c70c0800000000f8c70c080000000090c80c080000 *000054c90c080000000018ca0c0800000000a8ca0c0810cb0c087ccb0c08000000000000000000 *000000582d0c084cda110838da11088cda110800000000dccb0c0800cd0c08d4cd0c0838ce0c08 *a4ce0c0800000000000000000000000014cf0c0800000000000000000000000084cf0c08000000 *000000000000000000f4cf0c080000000000000000000000005cd00c0834d10c088cd10c0830d4 *0c089cd40c08fcd40c0844d50c0858d50c088cdd0b08c4e41108c0e4110801000000f4d50c08ac *d80c085cdb0c0800000000582d0c08d8e41108e8e41108e0e411080000000010dc0c0800000000 *ec060c080000000060dc0b080000000004dd0c0800000000000000000000000088dd0c08000000 *000000000000000000f0dd0c0814df0c0800000000d05e0c08f8e411080100000008e00c080000 *0000d0e30c0800000000e0ec0c0800000000000000000000000048ed0c08000000000000000000 *000000b0ed0c0800000000e8ed0c080000000084ee0c08000000000000000000000000ecee0c08 *00000000000000000000000054ef0c08000000008cef0c080000000024f00c0800000000000000 *00000000008cf00c08000000000000000000000000f4f00c08000000002cf10c080000000048dc *0b082900000048dc0b082800000048dc0b0820000000f0f10c0800000000000000000000000048 *dc0b085b00000048dc0b085d00000048dc0b082c00000064f20c0800000000b8f20c0800000000 *d0f50c08a0f60c08f8f60c0800000000b4f90c0804fa0c0860dc0b080b00000058fa0c08000000 *00a8fa0c080000000048fb0c080000000084fb0c0800000000d4fb0c0824fc0c080000000048ff *0c08b8ff0c0830000d0800000000a4000d080000000014050d08000000008c050d08dc050d082c *060d087c060d08f4060d0860070d0874070d08b0070d0800080d086c080d08d8080d084c090d08 *000000000000000000000000b8090d08000000000000000000000000240a0d0800000000a8e90b *0820e7110800000000dc0b0d08000000000000000000000000440c0d083c0d0d08000000000000 *000000000000b80d0d08000000000000000000000000280e0d0800000000cc0e0d0800000000d4 *100d08bc110d0800000000000000000000000060120d08000000000000000000000000c8120d08 *00000000000000000000000038130d080000000084140d08000000001c150d0800000000b8150d *08000000004c170d0800000000701b0d08b01b0d08041c0d08000000000000000000000000701c *0d08000000000000000000000000d81c0d08541d0d08a8e90b0894e7110800000000481e0d0800 *000000741e0d08941e0d08201f0d08341f0d08000000000000000000000000d01f0d08f41f0d08 *00000000000000000000000090200d08a4200d0800000000000000000000000040210d0860210d *0894210d0808220d08d4220d08a0230d08c8230d0894240d08c4240d08ec240d080c250d082c25 *0d088cdd0b08e8e61108e4e611080100000058de0b083ce411082ce4110824e4110820e4110818 *e4110844e411081ce4110828e4110800000000582d0c08dce61108c4e61108ece6110800000000 *f0130e0870e8110848e8110834e411080000000054250d0888250d08f4250d0800000000000000 *00000000005c260d08f8280d0814290d084c5f0d08b8e81108010000004c5f0d08c0e811080100 *00004c5f0d08c8e8110801000000086b0c08ace811083cd71108010000000100000048e00b0800 *00c03f60dc0b0864000000e4290d086c2a0d0800000000a82a0d0800000000e42a0d0800000000 *e8330d080000000024340d080000000078340d0800000000483d0d08000000008c3d0d08000000 *000c460d0800000000bc5f0d08e45f0d0800000000000000000000000054600d08000000000000 *000000000000c8600d0800000000000000000000000038610d080000000080610d080000000000 *000000000000008cdc0b08c0e91108b0e911080000000000620d0800000000ac750d0800000000 *000000000000000014760d0800000000947e0d084c810d08000000000000000000000000b8810d *0800000000000000000000000058820d08000000000000000000000000f4820d08e8830d08fc85 *0d082c860d084c860d0808880d08b4880d08fc880d08d4890d08f4890d08a8e90b08a0ec110800 *000000f8e80b08e0d01108d4e3110880ec110890ec1108e0d0110800000000288a0d0860dc0b08 *00000000448a0d08d08c0d083c8d0d08288e0d08788e0d08c88e0d08e48e0d08088f0d08000000 *000000000000000000888f0d08bc900d0824910d088c910d08d8910d0854920d0860dc0b080000 *0000a0920d0838950d08c0950d0800000000000000000000000028960d08000000000000000000 *00000098960d0800000000000000000000000000970d0870970d08f4970d0850980d08b4980d08 *d8990d088cdc0b0808ed110800d211080100000048dc0b0820000000e89a0d082c9b0d08000000 *00000000000000000090e90b081ced110800000000949b0d0800000000949d0d08000000000000 *000000000000fc9d0d08449e0d08949e0d08000000000000000000000000049f0d080000000000 *000000000000007c9f0d08000000000000000000000000ec9f0d08000000000000000000000000 *b4a00d080000000000000000000000007ca10d0800000000000000000000000044a20d08000000 *00000000000000000060dc0b080200000060dc0b080100000004a30d086ca50d08000000001ca7 *0d0800000000a8e90b08d0ed11080000000030aa0d080000000060aa0d0800000000a8e90b08f8 *ed11080000000090aa0d0800000000b0aa0d0868ab0d08ccad0d080000000080ae0d08ecb00d08 *00000000000000000000000094b10d08000000002cb30d080000000004b70d0800000000a8b90d *0800000000dcc20d0800000000c8c90d0800000000000000000000000038ca0d08000000000000 *000000000000b4ca0d0800000000000000000000000024cb0d0800000000000000000000000098 *cb0d0800000000000000000000000004cc0d0800000000000000000000000080cc0d0800000000 *000000000000000000cd0d0800000000b0d40d0800000000e8d50d0800000000fcd80d08000000 *00ecdf0d0814e00d0838e00d080000000088e00d080000000014e10d0800000000b4ec0d080000 *0000e8ee0d0840ef0d08dcef0d080000000014f50d0840f50d08c4f50d0848f60d08ccf60d0800 *f80d08e0f70d08f0f70d08b0f70d08f0f60d08fcf60d0808f70d0814f70d0820f70d082cf70d08 *38f70d0844f70d0850f70d085cf70d0868f70d0874f70d0880f70d088cf70d0898f70d08a4f70d *087cf80d0800000000e0f90d0834fa0d0860fa0d08b0fa0d08fcfa0d0848fb0d08c0fb0d080000 *000030fc0d0800000000acfc0d080000000054fd0d0800000000b4fd0d08000000000000000000 *00000024fe0d0800000000000000000000000094fe0d0800000000000000000000000004ff0d08 *0000000000000000000000006cff0d08c8050c0800000000c8050c08ffffffffc8050c08010000 *0060dc0b080100000060dc0b080000000060dc0b08ffffffffb8ff0d0868010e0814030e080000 *0000000000000000000084030e0800000000c0030e080000000044060e080000000080060e08ec *060e0838070e08d05e0c0814f111080100000094070e0800000000780b0e0800000000500c0e08 *00000000dc0e0e08000000000000000000000000580f0e080000000028110e0800000000000000 *000000000094110e085c120e08000000000000000000000000d4120e0800000000c8f10c08a4f1 *110824d211089cf1110894f111088cf1110884f111087cf1110874f11108dcf011080000000048 *dc0b082200000004140e0800000000000000000000000070140e08000000000000000000000000 *dc140e0800000000000000000000000048150e08000000000000000000000000b0150e0834170e *0800000000c0180e08000000009c190e088cdc0b08f4f1110800d21108010000005c1a0e080000 *00000c1c0e0800000000581c0e0800000000241d0e0800000000601d0e08000000000000000000 *000000cc1d0e08000000000000000000000000381e0e08000000000000000000000000a41e0e08 *000000000000000000000000101f0e080000000000000000000000007c1f0e0800000000000000 *0000000000e81f0e0800000000000000000000000054200e08000000000000000000000000c020 *0e080000000000000000000000002c210e0800000000000000000000000094210e08e8210e0800 *000000e4300c0801000000e4300c080000000020220e0800000000f0220e0858230e08c4230e08 *000000000000000000000000582d0c08dce61108c4e61108ece611080000000028240e08000000 *000000000000000000f8e80b08e0d01108f0e3110810e7110844f21108e0d0110800000000a024 *0e0800000000000000000000000010250e0800000000000000000000000084250e080000000000 *00000000000000f0250e080000000000000000000000005c260e08000000000000000000000000 *d4260e0800000000f8e80b08e0d01108f0e3110864f2110854f21108e0d0110800000000b0c40c *08fcd211080100000030280e0858280e0870280e0800000000000000000000000008290e080000 *00000000000000000000a0290e08000000000000000000000000382a0e08000000000000000000 *000000e02a0e08082b0e08402b0e08000000001c2f0e083c2f0e086c2f0e088c2f0e08b82f0e08 *20300e0850300e080000000000330e08000000002c330e083c330e084c330e0874dd0b0838f311 *086cf0110830f0110834f0110838f011083cf0110840f0110844f0110801000000e4050c0838f3 *110848f311082cd3110828d3110824d3110820d311081cd3110818d3110814d31108000000006c *330e08a0330e08dc330e08000000004c5f0d0874f311080100000048dc0b083a00000048dc0b08 *2c00000048dc0b082000000000380e080000000000000000000000009c380e0800000000000000 *000000000048dc0b085c00000048dc0b082f00000038390e08000000000000000000000000d439 *0e08000000000000000000000000703a0e080000000000000000000000000c3b0e080000000000 *00000000000000803b0e08000000004c5f0d08c8f3110801000000643d0e08583e0e0800000000 *e03f0e08b4400e08e8420e0800000000b8460e0870470e0828480e08e0480e0898490e085c4a0e *0800000000244b0e08bc4b0e08904c0e08000000000000000000000000c8050c0800000000f84c *0e088cdc0b0800f41108f0f3110800000000f04d0e08000000000000000000000000604e0e0800 *00000004580e085c580e0800000000b85b0e08000000006c650e08000000000000000000000000 *dc650e080000000084670e08000000008c690e08000000000000000000000000f0bb0b08b8f411 *0804d2110801000000f0bb0b08c0f4110804d2110801000000f0bb0b08e0f4110804d211080100 *0000f0bb0b08d0f4110804d2110801000000f0bb0b08e8f4110804d2110801000000f0bb0b08c8 *f4110804d2110801000000f0bb0b08d8f4110804d2110801000000f0bb0b08e8f3110804d21108 *01000000f0bb0b08d0f5110804d2110801000000f0bb0b08c8f5110804d2110801000000f0bb0b *0878f4110804d2110801000000f0bb0b0880f4110804d2110801000000f0bb0b0890f4110804d2 *110801000000f0bb0b0898f4110804d2110801000000f0bb0b08a0f4110804d2110801000000f0 *bb0b08a8f4110804d2110801000000f0bb0b08b0f4110804d2110801000000f0bb0b0888f41108 *04d2110801000000f0bb0b08f0f4110804d2110801000000f0bb0b08f8f4110804d21108010000 *00f0bb0b0800f5110804d2110801000000f0bb0b0808f5110804d2110801000000f0bb0b0810f5 *110804d2110801000000f0bb0b0818f5110804d2110801000000f0bb0b0820f5110804d2110801 *000000f0bb0b0828f5110804d2110801000000f0bb0b0830f5110804d2110801000000f0bb0b08 *38f5110804d2110801000000f0bb0b0840f5110804d2110801000000f0bb0b0848f5110804d211 *0801000000f0bb0b0850f5110804d2110801000000f0bb0b0858f5110804d2110801000000f0bb *0b0860f5110804d2110801000000f0bb0b0868f5110804d2110801000000f0bb0b0870f5110804 *d2110801000000006a0e080000000090ed0b080000000090ed0b08ff030000446d0e0800000000 *0000000000000000a46d0e08c46d0e08786f0e083c710e08000000000000000000000000b0710e *08000000000000000000000000f8e80b08e0d01108d4e31108f8f5110890ec1108e0d011080000 *000060dc0b08040000002c720e0800000000000000000000000094720e0810730e080000000000 *00000000000000b0730e0800000000000000000000000018740e0834750e085c760e0890770e08 *48dc0b080a00000028a90e0800f0110801000000c8780e0800000000000000000000000040790e *08000000002c800e08f0bb0b08c4e31108fcd1110801000000f0bb0b0820da110804d211080100 *0000f0bb0b08fcef110804d2110801000000f0bb0b08f8ef110804d211080100000078810e0800 *0000000000000000000000d0f70d08e0d0110801000000f0810e08000000000000000000000000 *60820e0800000000000000000000000028830e08000000000000000000000000e8830e086c860e *0800000000f8e80b08e0d01108d8e3110800d2110838f61108e0d0110800000000a8e90b0848f6 *110800000000f8e80b08e0d01108d8e3110800d2110868f61108e0d0110800000000f0860e0800 *000000b88a0e080000000000000000000000005c8b0e08000000000000000000000000cc8b0e08 *00000000108e0e080000000078910e0800000000fc960e0800000000000000000000000030980e *0800000000a8e90b0894f6110800000000a8e90b0878f611080000000014990e08000000000000 *00000000000060dc0b080000000084990e08000000000000000000000000f8990e081c9a0e0800 *00000000000000000000008c9a0e08000000000000000000000000049b0e080000000000000000 *000000006c9b0e08c09b0e080000000038a00e08d4a00e080000000000000000000000003ca10e *0800000000000000000000000048dc0b0829000000aca10e0800000000000000000000000024a2 *0e08000000000000000000000000a4a20e080000000000000000000000001ca30e080000000000 *0000000000000098a30e0800000000000000000000000010a40e08000000000000000000000000 *84a40e08000000000000000000000000f4a40e0800000000000000000000000068a50e08000000 *000000000000000000dca50e080000000000000000000000005ca60e0800000000000000000000 *0000d8a60e0800000000000000000000000048dc0b087d00000048a70e08000000000000000000 *00000004a80e080000000034a90e0844a90e080ca90e0870a90e0880aa0e08a0aa0e085cab0e08 *000000000000000000000000c4ab0e0800000000000000000000000024ac0e08a0ac0e080cad0e *0878ad0e08f4ad0e0868ae0e08c8050c0801000000d8ae0e080caf0e0800000000000000000000 *000018b00e0800000000acb00e0830b10e08000000000000000000000000a4b10e080000000010 *b20e0800000000000000000000000080b20e08000000000000000000000000f0b20e0800000000 *000000000000000060b30e08000000000000000000000000d0b30e080000000000000000000000 *0038b40e08c4b60e0814b70e08c8050c08ffffff7fd0b80e0800000000e4b90e08000000000000 *00000000000050ba0e08000000000000000000000000b8ba0e080cbb0e08000000000000000000 *000000d05e0c08b8f8110801000000c8050c080100000074bb0e08000000000000000000000000 *e4bb0e0800000000000000000000000060bc0e080000000070be0e084cbf0e0838c00e08000000 *0020c10e080000000090c20e0800000000e4c20e08000000008cc30e080000000054c40e080000 *00001cc50e0800000000f0130e08bcd3110890d111080cf911080000000048dc0b0827000000c0 *c50e0800000000000000000000000028c60e0800000000000000000000000048dc0b082d000000 *90c60e0894c70e080000000048dc0b080a000000f4ca0e0800000000cccb0e0810cc0e08000000 *00000000000000000094cc0e08000000006ccd0e0884cd0e08b8cd0e0800000000a8ce0e080000 *000070cf0e080000000028d00e0860d00e08000000000000000000000000d4d00e080000000000 *0000000000000044d10e08000000000000000000000000b0d10e08000000000000000000000000 *18d20e0870d20e08000000000000000000000000d8d20e08fcd20e080000000000000000000000 *0094d30e0800000000000000000000000030d40e0858d40e0880d40e08a8e90b0888fa11080000 *0000a4d40e0800000000000000000000000044d50e08000000000000000000000000dcd50e0800 *000000000000000000000074d60e080000000000000000000000001cd70e0844d70e086cd70e08 *94d70e08b0d70e08e0d70e0808d80e0844d80e08000000008cdd0b0888da110884da1108010000 *00582d0c084cda110838da11088cda110800000000ccd90e08d8da0e0800000000f8de0e080000 *000078e00e0848dc0b082200000034e30e08000000000000000000000000d0e30e080000000000 *0000000000000070e40e0800000000000000000000000048dc0b08090000000ce50e0800000000 *000000000000000074e50e0848dc0b080a0000001ce60e08000000000000000000000000c8050c *080a00000048dc0b085c0000008cdc0b0800fb1108f0fa11080000000084e60e08000000000000 *00000000000060dc0b080a000000f4e60e08000000000000000000000000c8050c080100000068 *e70e08000000000000000000000000d8e70e0800000000000000000000000060dc0b0810000000 *60dc0b080800000050e80e0800000000d8130e08e0f3110834f111080100000048dc0b08000000 *0048dc0b080100000048dc0b080e00000048dc0b080200000048dc0b080300000048dc0b080400 *000048dc0b080500000048dc0b080600000048dc0b080700000048dc0b080800000048dc0b0809 *00000048dc0b080a00000048dc0b080b00000048dc0b080c00000048dc0b080d00000048dc0b08 *0f00000048dc0b081000000048dc0b081100000048dc0b081200000048dc0b081300000048dc0b *081400000048dc0b081500000048dc0b081600000048dc0b081700000048dc0b081800000048dc *0b081900000048dc0b081a00000048dc0b081b00000048dc0b081c00000048dc0b081d00000048 *dc0b081e00000048dc0b081f0000008cdc0b0828fb110838fb11080000000014ea0e0800000000 *90ea0e080000000000000000000000002c6d0e0840f911080100000000eb0e0800000000000000 *00000000002c6d0e0858f911080100000048dc0b082700000048dc0b082200000068eb0e08c4ec *0e0810ed0e080000000014f10e080000000074f20e08000000000cf40e08000000000000000000 *00000074f40e08c8050c080200000048e00b080000000060dc0b0802000000c4f40e0800000000 *00000000000000002cf50e0860f50e08000000000000000000000000f8e80b08e0d01108d8e311 *0800d2110884fb1108e0d0110800000000d4f50e0804f60e08000000000000000000000000f8e8 *0b08e0d01108f4e31108b8e1110864fb1108e0d0110800000000f8e80b08e0d01108d0e31108b8 *e1110874fb1108e0d011080000000078f60e08000000000000000000000000ecf60e0800000000 *000000000000000060f70e08000000000000000000000000d8f70e080000000000000000000000 *0048f80e08000000000000000000000000c0f80e0800000000000000000000000038f90e080000 *00000000000000000000a8f90e0800000000000000000000000028fa0e08000000000000000000 *0000009cfa0e0800000000000000000000000010fb0e080000000000000000000000007cfb0e08 *000000000000000000000000f4fb0e080000000000000000000000006cfc0e0800000000000000 *0000000000e0fc0e080000000000000000000000005cfd0e08000000000000000000000000c8fd *0e0800000000000000000000000040fe0e08000000000000000000000000b0fe0e080000000000 *0000000000000028ff0e0800000000000000000000000090ff0e083c000f080000000000000000 *00000000a4000f08c8050c08ffffff7f2c010f08b4010f0848020f080000000000000000000000 *00cc020f080000000000000000000000003c030f08000000000000000000000000a8030f080000 *0000000000000000000014040f0800000000000000000000000080040f08000000000000000000 *000000ec040f0800000000000000000000000048dc0b082900000048dc0b082800000060050f08 *0000000024080f08d8090f08980b0f0800000000440d0f0800000000e4110f08c8050c08000000 *0038120f0800000000d0130f0800000000000000000000000040140f0800000000000000000000 *0000b8140f0800000000b0190f0868fc110860fc110858fc110814fc11080000000038160f0800 *000000c8f10c08b8fc1108e4fb1108b0fc110838fc110840fc1108a8fc1108a0fc110898fc1108 *94fc110800000000d8130e08bcf81108bcf8110801000000d0160f0800000000d8130e0834f111 *08bcf8110801000000c0190f08000000000000000000000000281a0f0800000000000000000000 *0000941a0f08000000000000000000000000fc1a0f08000000000000000000000000641b0f0800 *0000000000000000000000cc1b0f08000000000000000000000000341c0f080000000000000000 *000000009c1c0f08000000000000000000000000041d0f080000000000000000000000006c1d0f *0800000000000000000000000048dc0b085c000000d41d0f080000000000000000000000008cdc *0b08e4fc1108d4fc1108000000003c1e0f088c1e0f08501f0f08000000000000000000000000c0 *1f0f0800000000000000000000000048200f08000000000000000000000000b8200f0800000000 *00000000000000002c210f08000000000000000000000000f8e80b08e0d01108fce3110874f211 *08f4fc1108e0d0110800000000a0210f08c8210f08f0210f0818220f0840220f0864220f080000 *0000000000000000000024230f0858230f0884230f08000000000000000000000000ec230f0800 *00000000000000000000008cdc0b0824fd110814fd1108000000008cdc0b0834fd110800d21108 *010000005c240f0800000000b4250f08f8250f0800000000f82b0f08382c0f0800000000000000 *00000000008cdc0b0874fd11087cfd110800000000a02c0f080c2d0f08d82d0f0860dc0b080100 *00007c2e0f08000000002c2f0f08000000000000000000000000a02f0f08000000000000000000 *00000024300f08000000000000000000000000a8e90b08a0fd110801000000a8300f0800000000 *000000000000000018310f0800000000000000000000000088310f080000000000000000000000 *0048dc0b082d000000fc310f0800000000d4340f0858de0b0804fe110830fe1108dcf011080cdb *110834fe110838fe11083cfe110840fe110801000000c8050c0802000000e8360f0804370f0800 *000000000000000000000084370f08000000000000000000000000f4370f080000000080380f08 *000000000c390f0800000000d4390f08000000005c3a0f0800000000dc3a0f0800000000e4050c *08a4fe1108c4fe11088cfe11087cfe110884fe110854fe110850fe110848fe110844fe11080000 *0000583b0f08743b0f0800000000e43b0f0800000000583c0f0800000000cc3c0f0800000000f0 *130e08e8d3110808fe1108dcfe1108000000003c3d0f08000000008cdc0b08f4fe1108e4fe1108 *0000000060450f08000000000000000000000000d8450f080000000000000000000000003c460f *080000000000000000000000008cdc0b0818ff110808ff1108000000008cdc0b08e8f3110800d2 *11080100000048dc0b083d000000c8050c080a000000d8460f0800000000000000000000000048 *470f0800000000f4470f0800000000000000000000000064480f080000000018490f0800000000 *8cdc0b0838ff110840ff110800000000c4490f08fc490f08000000000000000000000000f8e80b *08e0d01108bcfd110800d2110800d21108e0d0110801000000604a0f08984a0f08000000000000 *000000000000284b0f08000000000000000000000000984b0f08000000000000000000000000c8 *050c080a000000004c0f08d04e0f084c4f0f08c84f0f0874dd0b0820db110880ff110874ff1108 *a4f81108e0f01108a0f811087cff110878ff11080100000000500f0838500f0870500f08ec500f *0824510f0880510f08e4510f08000000005c520f08dc520f080000000058530f08000000000000 *000000000000d4530f0800000000000000000000000054540f080000000084550f080000000008 *560f080000000090560f0800000000b4580f08000000008cdd0b08acff1108a8ff110801000000 *605b0f08000000000000000000000000582d0c08c0ff1108c8ff1108b4fe110800000000c05b0f *08085e0f08000000008cdc0b08e0ff1108d0ff110800000000b45e0f0800000000000000000000 *0000285f0f088cdc0b0800001208f0ff1108000000008cdc0b081000120800d211080100000044 *5f0f08000000000000000000000000b45f0f08000000008cdc0b08280012083000120800000000 *60600f0828610f08000000000000000000000000b0610f0800000000000000000000000018620f *08d0630f0830640f0890640f0890660f0878670f0860680f08c0680f0828690f0800000000246a *0f08046b0f08000000001c6c0f088c6f0f0804700f080000000054710f0800000000a4720f0800 *000000dc720f08000000008cdc0b0870001208600012080000000020730f080000000000000000 *000000008cdc0b0890001208800012080000000088730f0800000000000000000000000048dc0b *087c000000f0730f0800000000000000000000000060740f08000000008cdc0b08b0001208b800 *1208000000000c750f0880760f08f4770f085c790f08c8050c08ffffffffd07a0f08000000008c *dc0b08e8001208d800120800000000087d0f080000000000000000000000008cdc0b0808011208 *f800120800000000707d0f08000000000000000000000000d87d0f080000000000000000000000 *00487e0f08000000008cdc0b08280112083001120800000000f47e0f0800000000000000000000 *00008cdc0b085001120840011208000000005c7f0f080000000000000000000000008cdc0b0870 *01120860011208000000008cdc0b088001120800d2110801000000c47f0f080000000000000000 *0000000034800f08000000008cdc0b0898011208a0011208000000008cdc0b08c0011208b00112 *0800000000e0800f080000000000000000000000008cdc0b08d001120800d21108000000008cdc *0b08e001120800d211080100000048dc0b084000000048810f08000000000000000000000000b8 *810f08000000008cdc0b08f801120800021208000000008cdc0b08200212081002120800000000 *64820f08000000000000000000000000cc820f0800000000000000000000000048dc0b087e0000 *0034830f08000000000000000000000000a4830f08000000008cdc0b0840021208480212080000 *00008cdc0b0868021208580212080000000050840f08000000000000000000000000b8840f0800 *000000000000000000000028850f08000000008cdc0b088802120890021208000000008cdc0b08 *b0021208a002120800000000d4850f080000000000000000000000003c860f0800000000000000 *0000000000ac860f08000000008cdc0b08d0021208d8021208000000008cdc0b08f8021208e802 *12080000000058870f08000000000000000000000000c0870f0800000000000000000000000030 *880f08000000008cdc0b081803120820031208000000008cdc0b08400312083003120800000000 *dc880f0800000000000000000000000044890f08000000000000000000000000b4890f08000000 *008cdc0b086003120868031208000000008cdc0b08880312087803120800000000608a0f080000 *00000000000000000000c88a0f08000000000000000000000000388b0f08000000008cdc0b08a8 *031208b0031208000000008cdc0b08d0031208c003120800000000e48b0f080000000000000000 *000000004c8c0f08000000000000000000000000bc8c0f08000000008cdc0b08f0031208f80312 *08000000008cdc0b08180412080804120800000000688d0f08000000000000000000000000d08d *0f08000000000000000000000000408e0f08000000008cdc0b083804120840041208000000008c *dc0b08600412085004120800000000ec8e0f08000000000000000000000000548f0f0800000000 *0000000000000000c48f0f08000000008cdc0b088004120888041208000000008cdc0b08a80412 *08980412080000000070900f08000000000000000000000000d8900f0800000000000000000000 *000048910f08000000008cdc0b08c8041208d0041208000000008cdc0b08f0041208e004120800 *000000f4910f080000000000000000000000005c920f08000000000000000000000000cc920f08 *000000008cdc0b081005120818051208000000008cdc0b0838051208280512080000000078930f *08000000000000000000000000e0930f0800000000000000000000000050940f08000000008cdc *0b085805120860051208000000008cdc0b08800512087005120800000000fc940f080000000000 *0000000000000064950f08000000000000000000000000d4950f08000000008cdc0b08a0051208 *a8051208000000008cdc0b08c8051208b80512080000000080960f080000000000000000000000 *00e8960f0800000000000000000000000058970f08000000008cdc0b08e8051208f00512080000 *00008cdc0b0810061208000612080000000004980f080000000000000000000000006c980f0800 *0000000000000000000000dc980f08000000008cdc0b083006120838061208000000008cdc0b08 *58061208480612080000000088990f08000000000000000000000000f0990f0800000000000000 *0000000000609a0f08000000008cdc0b087806120880061208000000008cdc0b08a00612089006 *1208000000000c9b0f08000000000000000000000000749b0f08000000000000000000000000e4 *9b0f08000000008cdc0b08c0061208c8061208000000008cdc0b08e8061208d806120800000000 *909c0f08000000000000000000000000f89c0f08000000000000000000000000689d0f08000000 *008cdc0b080807120810071208000000008cdc0b08300712082007120800000000149e0f080000 *000000000000000000007c9e0f08000000000000000000000000ec9e0f08000000008cdc0b0850 *07120858071208000000008cdc0b08780712086807120800000000989f0f080000000000000000 *0000000000a00f0800000000000000000000000070a00f08000000008cdc0b0898071208a00712 *08000000008cdc0b08c0071208b0071208000000001ca10f0800000000000000000000000084a1 *0f08000000000000000000000000f4a10f08000000008cdc0b08e0071208e8071208000000008c *dc0b0808081208f807120800000000a0a20f0800000000000000000000000008a30f0800000000 *000000000000000078a30f08000000008cdc0b082808120830081208000000008cdc0b08500812 *08400812080000000024a40f080000000000000000000000008ca40f0800000000000000000000 *0000fca40f08000000008cdc0b087008120878081208000000008cdc0b08980812088808120800 *000000a8a50f0800000000000000000000000010a60f0800000000000000000000000080a60f08 *000000008cdc0b08b8081208c0081208000000008cdc0b08e0081208d0081208000000002ca70f *0800000000000000000000000094a70f0800000000000000000000000004a80f08000000008cdc *0b080809120800d21108000000008cdc0b081009120800d2110800000000b0a80f080000000000 *0000000000000018a90f0800000000000000000000000048dc0b082000000088a90f0800000000 *34aa0f080000000000000000000000009caa0f0800000000000000000000000048dc0b087f0000 *00ffffffff01000000e0bb1208d05c1008345d1008485d1008705d1008e85d100848dc0b080000 *000048dc0b080100000048dc0b080200000048dc0b080300000048dc0b080400000048dc0b0805 *00000048dc0b080600000048dc0b080700000048dc0b080800000048dc0b080900000048dc0b08 *0a00000048dc0b080b00000048dc0b080c00000048dc0b080d00000048dc0b080e00000048dc0b *080f00000048dc0b081000000048dc0b081100000048dc0b081200000048dc0b081300000048dc *0b081400000048dc0b081500000048dc0b081600000048dc0b081700000048dc0b081800000048 *dc0b081900000048dc0b081a00000048dc0b081b00000048dc0b081c00000048dc0b081d000000 *48dc0b081e00000048dc0b081f00000048dc0b082000000048dc0b082100000048dc0b08220000 *0048dc0b082300000048dc0b082400000048dc0b082500000048dc0b082600000048dc0b082700 *000048dc0b082800000048dc0b082900000048dc0b082a00000048dc0b082b00000048dc0b082c *00000048dc0b082d00000048dc0b082e00000048dc0b082f00000048dc0b083000000048dc0b08 *3100000048dc0b083200000048dc0b083300000048dc0b083400000048dc0b083500000048dc0b *083600000048dc0b083700000048dc0b083800000048dc0b083900000048dc0b083a00000048dc *0b083b00000048dc0b083c00000048dc0b083d00000048dc0b083e00000048dc0b083f00000048 *dc0b084000000048dc0b084100000048dc0b084200000048dc0b084300000048dc0b0844000000 *48dc0b084500000048dc0b084600000048dc0b084700000048dc0b084800000048dc0b08490000 *0048dc0b084a00000048dc0b084b00000048dc0b084c00000048dc0b084d00000048dc0b084e00 *000048dc0b084f00000048dc0b085000000048dc0b085100000048dc0b085200000048dc0b0853 *00000048dc0b085400000048dc0b085500000048dc0b085600000048dc0b085700000048dc0b08 *5800000048dc0b085900000048dc0b085a00000048dc0b085b00000048dc0b085c00000048dc0b *085d00000048dc0b085e00000048dc0b085f00000048dc0b086000000048dc0b086100000048dc *0b086200000048dc0b086300000048dc0b086400000048dc0b086500000048dc0b086600000048 *dc0b086700000048dc0b086800000048dc0b086900000048dc0b086a00000048dc0b086b000000 *48dc0b086c00000048dc0b086d00000048dc0b086e00000048dc0b086f00000048dc0b08700000 *0048dc0b087100000048dc0b087200000048dc0b087300000048dc0b087400000048dc0b087500 *000048dc0b087600000048dc0b087700000048dc0b087800000048dc0b087900000048dc0b087a *00000048dc0b087b00000048dc0b087c00000048dc0b087d00000048dc0b087e00000048dc0b08 *7f00000048dc0b088000000048dc0b088100000048dc0b088200000048dc0b088300000048dc0b *088400000048dc0b088500000048dc0b088600000048dc0b088700000048dc0b088800000048dc *0b088900000048dc0b088a00000048dc0b088b00000048dc0b088c00000048dc0b088d00000048 *dc0b088e00000048dc0b088f00000048dc0b089000000048dc0b089100000048dc0b0892000000 *48dc0b089300000048dc0b089400000048dc0b089500000048dc0b089600000048dc0b08970000 *0048dc0b089800000048dc0b089900000048dc0b089a00000048dc0b089b00000048dc0b089c00 *000048dc0b089d00000048dc0b089e00000048dc0b089f00000048dc0b08a000000048dc0b08a1 *00000048dc0b08a200000048dc0b08a300000048dc0b08a400000048dc0b08a500000048dc0b08 *a600000048dc0b08a700000048dc0b08a800000048dc0b08a900000048dc0b08aa00000048dc0b *08ab00000048dc0b08ac00000048dc0b08ad00000048dc0b08ae00000048dc0b08af00000048dc *0b08b000000048dc0b08b100000048dc0b08b200000048dc0b08b300000048dc0b08b400000048 *dc0b08b500000048dc0b08b600000048dc0b08b700000048dc0b08b800000048dc0b08b9000000 *48dc0b08ba00000048dc0b08bb00000048dc0b08bc00000048dc0b08bd00000048dc0b08be0000 *0048dc0b08bf00000048dc0b08c000000048dc0b08c100000048dc0b08c200000048dc0b08c300 *000048dc0b08c400000048dc0b08c500000048dc0b08c600000048dc0b08c700000048dc0b08c8 *00000048dc0b08c900000048dc0b08ca00000048dc0b08cb00000048dc0b08cc00000048dc0b08 *cd00000048dc0b08ce00000048dc0b08cf00000048dc0b08d000000048dc0b08d100000048dc0b *08d200000048dc0b08d300000048dc0b08d400000048dc0b08d500000048dc0b08d600000048dc *0b08d700000048dc0b08d800000048dc0b08d900000048dc0b08da00000048dc0b08db00000048 *dc0b08dc00000048dc0b08dd00000048dc0b08de00000048dc0b08df00000048dc0b08e0000000 *48dc0b08e100000048dc0b08e200000048dc0b08e300000048dc0b08e400000048dc0b08e50000 *0048dc0b08e600000048dc0b08e700000048dc0b08e800000048dc0b08e900000048dc0b08ea00 *000048dc0b08eb00000048dc0b08ec00000048dc0b08ed00000048dc0b08ee00000048dc0b08ef *00000048dc0b08f000000048dc0b08f100000048dc0b08f200000048dc0b08f300000048dc0b08 *f400000048dc0b08f500000048dc0b08f600000048dc0b08f700000048dc0b08f800000048dc0b *08f900000048dc0b08fa00000048dc0b08fb00000048dc0b08fc00000048dc0b08fd00000048dc *0b08fe00000048dc0b08ff00000060dc0b08f0ffffff60dc0b08f1ffffff60dc0b08f2ffffff60 *dc0b08f3ffffff60dc0b08f4ffffff60dc0b08f5ffffff60dc0b08f6ffffff60dc0b08f7ffffff *60dc0b08f8ffffff60dc0b08f9ffffff60dc0b08faffffff60dc0b08fbffffff60dc0b08fcffff *ff60dc0b08fdffffff60dc0b08feffffff60dc0b08ffffffff60dc0b080000000060dc0b080100 *000060dc0b080200000060dc0b080300000060dc0b080400000060dc0b080500000060dc0b0806 *00000060dc0b080700000060dc0b080800000060dc0b080900000060dc0b080a00000060dc0b08 *0b00000060dc0b080c00000060dc0b080d00000060dc0b080e00000060dc0b080f00000060dc0b *081000000000000500050005000500050005000d000d000d000d00850085008500850085008500 *8d009200920092009200920092009a009200050010000500100004010401040104010c01020082 *008200800080008000000002000200020046004400640044004400650045006500450065004500 *4500450045006500650065006400640000004500250000001e0000000812100814161008e41a10 *087c1d10087c201008fc2310082828100800000000000000000000000000000000000000000000 *0000fc5a110840861108fc5a1108a0861108e08611082087110880871108fc5a1108c0871108fc *5a110800881108fc5a110860881108c0881108fc5a11082089110880891108e0891108408a1108 *a08a1108e08a1108208b1108808b1108e08b1108fc5a1108208c1108808c1108e08c1108fc5a11 *08fc5a1108208d1108608d1108fc5a1108c08d1108008e1108608e1108fc5a1108fc5a1108a08e *1108fc5a1108008f1108608f1108fc5a1108000000001400000000000000017a5200017c08011b *0c0404880100001c0000001c00000000d1feff8301000000410e088502420d0545860487030000 *1c0000003c00000070d2feff0302000000410e088502420d05458604870300001c0000005c0000 *0060d4feff2b01000000410e088502420d05458604870300001c0000007c00000070d5feffb801 *000000410e088502420d0548860487030000000000000100000001000000010000002f00000001 *0000003f00000001000000510100000c000000a49304080d00000070ec10080400000068810408 *05000000508b040806000000a08404080a000000060400000b0000001000000015000000000000 *00030000006015120802000000f0020000140000001100000017000000b4900408110000009c90 *040812000000180000001300000008000000feffff6f2c900408ffffff6f02000000f0ffff6f56 *8f0408000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000ffffffff00000000ffffffff00000000000000006c141208000000 *0000000000d2930408e2930408f293040802940408129404082294040832940408429404085294 *040862940408729404088294040892940408a2940408b2940408c2940408d2940408e2940408f2 *940408029504081295040822950408329504084295040852950408629504087295040882950408 *92950408a2950408b2950408c2950408d2950408e2950408f29504080296040812960408229604 *0832960408429604085296040862960408729604088296040892960408a2960408b2960408c296 *0408d2960408e2960408f296040802970408129704082297040832970408429704085297040862 *970408729704088297040892970408a2970408b2970408c2970408d2970408e2970408f2970408 *029804081298040822980408329804084298040852980408629804087298040882980408929804 *08a2980408b2980408c2980408d2980408e2980408f29804080299040812990408229904083299 *0408429904085299040862990408729904088299040892990408a2990408000000000000000000 *00000000000000000000000000000000000000004743433a2028474e552920332e332e35202844 *656269616e20313a332e332e352d312900004743433a2028474e552920332e332e352028446562 *69616e20313a332e332e352d312900004743433a2028474e552920332e332e3520284465626961 *6e20313a332e332e352d342900004743433a2028474e552920332e332e35202844656269616e20 *313a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a *332e332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e *332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e *352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d *312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d3129 *00004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d31290000 *4743433a2028474e552920332e332e35202844656269616e20313a332e332e352d312900004743 *433a2028474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a *2028474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a2028 *474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e *552920332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e5529 *20332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e55292033 *2e332e35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e33 *2e35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e35 *202844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e352028 *44656269616e20313a332e332e352d312900004743433a2028474e552920332e332e3520284465 *6269616e20313a332e332e352d312900004743433a2028474e552920332e332e35202844656269 *616e20313a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e *20313a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e2031 *3a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a33 *2e332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e33 *2e352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e35 *2d312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d31 *2900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d312900 *004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d3129000047 *43433a2028474e552920332e332e35202844656269616e20313a332e332e352d31290000474343 *3a2028474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a20 *28474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a202847 *4e552920332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e55 *2920332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e552920 *332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e *332e35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e *35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e3520 *2844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e35202844 *656269616e20313a332e332e352d312900004743433a2028474e552920332e332e352028446562 *69616e20313a332e332e352d312900004743433a2028474e552920332e332e3520284465626961 *6e20313a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e20 *313a332e332e352d342900004743433a2028474e552920332e332e35202844656269616e20313a *332e332e352d342900004743433a2028474e552920332e332e35202844656269616e20313a332e *332e352d342900004743433a2028474e552920332e332e35202844656269616e20313a332e332e *352d342900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d *342900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d3129 *00004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d34290000 *4743433a2028474e552920332e332e35202844656269616e20313a332e332e352d312900000000 *0000001c000000020000000000040000000000b09904082200000000000000000000002c000000 *02004b09000004000000000070ec100811000000a49304080b000000d499040822000000000000 *0000000000240000000200480a000004000000000086ec100805000000b9930408020000000000 *000000000000210000000200af0000009c080000840800005f494f5f737464696e5f7573656400 *00000000ab000000020000000000040100000000b0990408d29904082e2e2f737973646570732f *693338362f656c662f73746172742e53002f686f6d652f676f746f6d2f64656269616e2f676c69 *62632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e6473312d31392e74 *657374342f676c6962632d322e332e322e6473312f6275696c642d747265652f676c6962632d32 *2e332e322f63737500474e5520415320322e313500018098080000020014000000040171000000 *d4990408d49904082e010000d6040000140300000102c301000002d53000000003460300000407 *02ac02000003224200000003a200000001080233020000032354000000038f000000020702a001 *0000032430000000024e02000003257100000003410300000407029f05000003288300000003a4 *0000000106026906000003294200000002d5060000032aa000000003e102000002050262030000 *032b540000000216060000032cbd00000004696e740004050299020000032d3000000002670500 *000332da00000003f3020000080502d40100000333ec000000033c03000008070245020000033b *da0000000274030000033cec00000002eb0200000388ec00000002530300000389300000000202 *060000038a3000000002ff010000038b710000000228040000038cec0000000266040000038d30 *00000002cb050000038e300000000213010000038f6101000003f80200000405027f0500000390 *da000000022b0200000391bd000000059501000008039206cd0000000392950100000223000007 *a5010000bd00000008a5010000010003460300000407025702000003927e01000002ba04000003 *93610100000200040000039471000000025c0000000395ec00000002df01000003963000000002 *0b00000003976101000002b0000000039830000000021a04000003996101000002a8050000039b *bd00000002d5050000039c6101000002a4020000039dbd000000020a06000003a0bd0000000284 *02000003a3bd00000002be01000003a661010000025901000003ab61010000024a04000003acda *00000002b205000003af71000000025704000003b0ec000000023501000003b371000000024a01 *000003b4ec000000021b01000003b6bd00000002cc06000003ba68010000026f04000003bba902 *00000904f300000002b606000003bcba0200000904c002000003ab0000000106020f04000003bf *bd000000025b05000003c2300000000a32040000024501610100000a6d03000002620130000000 *0b140300000404530c090400000451e90200000c5b030000045214030000000724030000c00200 *0008a501000003000549030000080454063d020000044ebd00000002230006d30000000453f502 *00000223040002f605000004542403000005790300000c051e0679040000051c56010000022300 *0638000000051d49030000022304000295050000051e5403000005a90300001005230679040000 *052168010000022300063800000005224903000002230800027a0100000523840300000df90300 *000406260e2d000000000e07020000010ead040000020e71050000030ee6010000040e60020000 *050ea8010000060e14000000070e67000000080edf05000009000d0e0400000406380e3a040000 *010e410600000200027306000006481904000009041f0400000f5204000001bd00000010520400 *00103705000010ba05000010c005000010cb05000010d705000010bd00000010bd000000000904 *580400001137050000b50200003c063f06c20200000675a607000002230006d60300000676e706 *000002230406bd0000000678bd000000022308067f060000067aba02000002230c06ca01000006 *7bba02000002231006c7000000067d0e0400000223140689050000067edd05000002231806cb03 *0000067f0306000002231c0657060000068024060000022320068b0600000684bd000000022324 *06ef0000000685bd00000002232806d10200000686bd00000002232c06740200000687bd000000 *022330068e020000068abd00000002233406af060000068c850600000223380009043d05000011 *ba050000c404000024064006330300000693d1050000022300069d0300000694d1050000022304 *06950300000698bd0000000223080616020000069cbd00000002230c069e04000006a0bd000000 *022310062501000006a2ac070000022314063800000006a349030000022318066106000006a79a *070000022320000904c00500000904c605000012420000000904d1050000090442000000090425 *0000000201010000064be80500000904ee0500000f0306000001e9020000105204000010420000 *00000240000000064e0e0600000904140600000f2406000001bd000000105204000000027f0400 *00064f2f060000090435060000134106000001105204000000029d06000006584c060000090452 *0600000f8506000001bd00000010520400001037050000108506000010c005000010ba05000010 *c005000010cb05000010d70500000014040220060000065d920600000904980600000fbc060000 *01bd000000108506000010c005000010c005000010d105000010d10500000002430500000661c7 *0600000904cd0600000fe706000001bd00000010e706000010f206000010d7050000000904ed06 *000012c00200000904f80600000904e706000002b403000006640907000009040f0700000f2407 *000001bd000000102407000010e706000000090485060000027f03000006653507000009043b07 *0000134707000001108506000000119a0700000103000014064206f4030000066a410600000223 *0006e0030000066b870600000223040690010000066c2a07000002230806af060000066d850600 *0002230c063a060000066e9a070000022310000904470700001564010000010904a00700000904 *4903000011e9070000820000000806ad06db00000006ae25000000022300064201000006af5204 *000002230406af06000006b0e90700000223080007f80700003d05000016a50100000002860100 *0006b1030800000904b2070000052e0800002c053406fa0100000532b207000002230006af0600 *0005333d050000022308000b4d0800002c05350cfa010000052fb20700000ca903000005340908 *000000025100000005352e08000002e40000000537a000000002000000000538bd00000002c006 *000005395400000002bf050000053a30000000178f040000011996080000010503a4ec100812bd *00000000f90000000200180100000401350100002f686f6d652f676f746f6d2f64656269616e2f *676c6962632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e6473312d31 *392e74657374342f676c6962632d322e332e322e6473312f6275696c642d747265652f69333836 *2d6c6962632f6373752f637274692e53002f686f6d652f676f746f6d2f64656269616e2f676c69 *62632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e6473312d31392e74 *657374342f676c6962632d322e332e322e6473312f6275696c642d747265652f676c6962632d32 *2e332e322f63737500474e5520415320322e3135000180f9000000020028010000040107020000 *2f686f6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f6361 *6c2f676c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e *6473312f6275696c642d747265652f693338362d6c6962632f6373752f6372746e2e53002f686f *6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f67 *6c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e647331 *2f6275696c642d747265652f676c6962632d322e332e322f63737500474e5520415320322e3135 *00018001110010061101120103081b0825081305000000011101100612011101030e1b0e250e13 *0b0000021600030e3a0b3b0b49130000032400030e0b0b3e0b000004240003080b0b3e0b000005 *130101130b0b3a0b3b0b0000060d00030e3a0b3b0b4913380a0000070101011349130000082100 *49132f0b0000090f000b0b491300000a1600030e3a0b3b05491300000b170101130b0b3a0b3b0b *00000c0d00030e3a0b3b0b491300000d040101130b0b3a0b3b0b00000e2800030e1c0d00000f15 *010113270c49130000100500491300001113010113030e0b0b3a0b3b0b00001226004913000013 *15010113270c0000140f000b0b0000151300030e3c0c000016210049130000173400030e3a0b3b *0b49133f0c020a000000011100100603081b0825081305000000011100100603081b0825081305 *0000005300000002002f0000000101fb0e0a0001010101000000012e2e2f737973646570732f69 *3338362f656c66000073746172742e530001000000000502b0990408032e01301e313a221f0319 *1d56571e1f59580201000101160000000200100000000101fb0e0a0001010101000000010000c0 *0000000200ba0000000101fb0e0a0001010101000000012f7573722f6c69622f6763632d6c6962 *2f693438362d6c696e75782f332e332e352f696e636c756465002e2e2f737973646570732f6765 *6e657269632f62697473002e2e2f7763736d6273002e2e2f737973646570732f676e75002e2e2f *69636f6e760000696e69742e63000000007374646465662e680001000074797065732e68000200 *0077636861722e68000300005f475f636f6e6669672e680004000067636f6e762e680005000000 *ce0000000200850000000101fb0e0a0001010101000000012f686f6d652f676f746f6d2f646562 *69616e2f676c6962632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e64 *73312d31392e74657374342f676c6962632d322e332e322e6473312f6275696c642d747265652f *693338362d6c6962632f6373750000637274692e53000100000000050270ec10080332011e2c1e *571e640201000101000502a49304080322011e2c3a0205000101000502d4990408030b011e2c1e *571e641e642c2c2d3a1e0201000101ac0000000200850000000101fb0e0a000101010100000001 *2f686f6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f6361 *6c2f676c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e *6473312f6275696c642d747265652f693338362d6c6962632f63737500006372746e2e53000100 *000000050286ec10080312013a1e0201000101000502b99304080309011e02010001015f475f69 *6e7433325f74005f5f74696d655f74005f5f47434f4e565f494e434f4d504c4554455f494e5055 *54005f5f47434f4e565f4f4b005f5f7374617465005f5f67636f6e765f696e69745f666374005f *475f69636f6e765f74005f5f726c696d36345f74005f5f47434f4e565f494c4c4547414c5f4445 *5343524950544f52005f5f67636f6e765f696e666f0073686f727420756e7369676e656420696e *7400756e7369676e65642063686172005f5f757365636f6e64735f74005f5f636f756e74657200 *5f5f666374005f5f76616c005f5f76616c7565005f5f6e7374657073005f475f696e7431365f74 *005f5f6d61785f6e65656465645f66726f6d005f5f67636f6e765f62746f77635f666374005f5f *6f66665f74005f5f7373697a655f74005f5f73746174657000696e69742e63005f5f667366696c *636e745f74005f5f7374657073005f5f667366696c636e7436345f74005f5f626c6b636e745f74 *005f5f67636f6e765f6c6f616465645f6f626a656374005f475f66706f7336345f74005f5f6763 *6f6e765f74005f5f7472616e735f656e645f666374005f5f755f696e74005f5f47434f4e565f49 *4c4c4547414c5f494e505554005f5f626c6b73697a655f74005f5f746f5f6e616d65005f5f7569 *6e7436345f74005f5f69645f74005f5f47434f4e565f454d5054595f494e505554005f5f636400 *5f5f696e6f5f74005f5f47434f4e565f4e4f434f4e56005f5f696e766f636174696f6e5f636f75 *6e746572005f5f7069645f74005f5f755f73686f7274005f5f636f756e74005f5f717561645f74 *005f5f755f6c6f6e67005f5f667369645f74005f5f47434f4e565f46554c4c5f4f555450555400 *5f5f6d61785f6e65656465645f746f005f5f74696d65725f74005f5f737461746566756c005f5f *75696e7433325f74005f5f6b65795f74005f5f755f63686172005f5f67636f6e765f7374657000 *5f5f73686c69625f68616e646c65005f5f6d696e5f6e65656465645f746f0073686f727420696e *74005f5f6465765f74006c6f6e67206c6f6e6720696e74005f5f67636f6e765f7472616e735f64 *61746100474e55204320332e332e35202844656269616e20313a332e332e352d3129005f5f6f75 *74627566006c6f6e67206c6f6e6720756e7369676e656420696e74005f5f7569645f74005f5f77 *636862005f5f75696e7431365f740077696e745f74005f5f755f717561645f74005f5f67636f6e *765f7472616e735f656e645f666374005f5f666c616773005f5f6f7574627566656e64005f5f63 *6f6d62696e6564005f5f67636f6e765f7472616e735f696e69745f666374005f5f696e69745f66 *6374005f5f6d6f646e616d65005f5f7472616e735f636f6e746578745f666374005f5f7472616e *735f666374005f5f726c696d5f74005f5f776368005f5f696e747074725f74005f5f7375736563 *6f6e64735f74005f5f696e6f36345f740077636861725f74005f5f47434f4e565f49535f4c4153 *54005f5f626c6b636e7436345f74005f5f6673626c6b636e7436345f74005f5f6d6f64655f7400 *5f5f71616464725f74005f5f706f73005f5f67636f6e765f656e645f666374005f494f5f737464 *696e5f75736564005f5f696e7465726e616c5f757365005f5f47434f4e565f4e4f4442005f5f63 *6c6f636b5f74005f5f67636f6e765f737465705f64617461002f686f6d652f676f746f6d2f6465 *6269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e *6473312d31392e74657374342f676c6962632d322e332e322e6473312f6275696c642d74726565 *2f676c6962632d322e332e322f637375005f5f67636f6e765f7472616e735f71756572795f6663 *74005f5f736f636b6c656e5f74005f5f696e7436345f74005f5f47434f4e565f4e4f4d454d005f *5f6f666636345f74005f5f62746f77635f666374005f475f66706f735f74005f5f696e74385f74 *005f5f64616464725f74005f5f6673626c6b636e745f74005f475f75696e7433325f74005f5f6e *6c696e6b5f74005f5f7377626c6b5f74005f5f47434f4e565f494e5445524e414c5f4552524f52 *005f5f6d6273746174655f74005f5f6769645f74005f5f636c6f636b69645f74005f5f696e7433 *325f74005f5f67636f6e765f7472616e735f636f6e746578745f666374005f5f6e657874005f5f *47434f4e565f49474e4f52455f4552524f5253005f5f656e645f666374005f5f7472616e73005f *5f75696e74385f74005f5f67636f6e765f666374005f5f66726f6d5f6e616d65005f5f6d696e5f *6e65656465645f66726f6d005f5f67636f6e765f7472616e735f666374005f5f64617461005f5f *63616464725f74005f475f75696e7431365f74005f5f6c6f66665f74005f5f696e7431365f7400 *002e73796d746162002e737472746162002e7368737472746162002e696e74657270002e6e6f74 *652e4142492d746167002e68617368002e64796e73796d002e64796e737472002e676e752e7665 *7273696f6e002e676e752e76657273696f6e5f72002e72656c2e64796e002e72656c2e706c7400 *2e696e6974002e74657874002e66696e69002e726f64617461002e65685f6672616d655f686472 *002e64617461002e65685f6672616d65002e64796e616d6963002e63746f7273002e64746f7273 *002e6a6372002e676f74002e627373002e636f6d6d656e74002e64656275675f6172616e676573 *002e64656275675f7075626e616d6573002e64656275675f696e666f002e64656275675f616262 *726576002e64656275675f6c696e65002e64656275675f73747200000000000000000000000000 *000000000000000000000000000000000000000000000000000000001b00000001000000020000 *003481040834010000130000000000000000000000010000000000000023000000070000000200 *000048810408480100002000000000000000000000000400000000000000310000000500000002 *00000068810408680100003803000004000000000000000400000004000000370000000b000000 *02000000a0840408a0040000b0060000050000000100000004000000100000003f000000030000 *0002000000508b0408500b0000060400000000000000000000010000000000000047000000ffff *ff6f02000000568f0408560f0000d60000000400000000000000020000000200000054000000fe *ffff6f020000002c9004082c100000700000000500000002000000040000000000000063000000 *09000000020000009c9004089c10000018000000040000000000000004000000080000006c0000 *000900000002000000b4900408b4100000f0020000040000000b00000004000000080000007500 *00000100000006000000a4930408a4130000170000000000000000000000040000000000000070 *0000000100000006000000bc930408bc130000f005000000000000000000000400000004000000 *7b0000000100000006000000b0990408b0190000c0520c00000000000000000010000000000000 *0081000000010000000600000070ec1008706c0c001b0000000000000000000000040000000000 *0000870000000100000002000000a0ec1008a06c0c00c8a4000000000000000000002000000000 *0000008f00000001000000020000006891110868110d002c000000000000000000000004000000 *000000009d0000000100000003000000a0a11108a0110d00307200000000000000000000200000 *0000000000a30000000100000002000000d0131208d0830d009c00000000000000000000000400 *000000000000ad00000006000000030000006c1412086c840d00e0000000050000000000000004 *00000008000000b600000001000000030000004c1512084c850d00080000000000000000000000 *0400000000000000bd00000001000000030000005415120854850d000800000000000000000000 *000400000000000000c400000001000000030000005c1512085c850d0004000000000000000000 *00000400000000000000c900000001000000030000006015120860850d00880100000000000000 *0000000400000004000000ce00000008000000030000000017120800870d0060b6000000000000 *000000002000000000000000d300000001000000000000000000000000870d003a070000000000 *00000000000100000000000000dc000000010000000000000000000000408e0d00780000000000 *0000000000000800000000000000eb000000010000000000000000000000b88e0d002500000000 *000000000000000100000000000000fb000000010000000000000000000000dd8e0d00450b0000 *0000000000000000010000000000000007010000010000000000000000000000229a0d00380100 *0000000000000000000100000000000000150100000100000000000000000000005a9b0d00b702 *00000000000000000000010000000000000021010000010000003000000000000000119e0d00df *0600000000000000000000010000000100000011000000030000000000000000000000f0a40d00 *2c01000000000000000000000100000000000000010000000200000000000000000000006cab0d *00f071060021000000f24c00000400000010000000090000000300000000000000000000005c1d *140024800600000000000000000001000000000000000000000000000000000000000000000000 *000000348104080000000003000100000000004881040800000000030002000000000068810408 *000000000300030000000000a0840408000000000300040000000000508b040800000000030005 *0000000000568f04080000000003000600000000002c9004080000000003000700000000009c90 *0408000000000300080000000000b4900408000000000300090000000000a49304080000000003 *000a0000000000bc9304080000000003000b0000000000b09904080000000003000c0000000000 *70ec10080000000003000d0000000000a0ec10080000000003000e000000000068911108000000 *0003000f0000000000a0a11108000000000300100000000000d013120800000000030011000000 *00006c1412080000000003001200000000004c1512080000000003001300000000005415120800 *00000003001400000000005c151208000000000300150000000000601512080000000003001600 *000000000017120800000000030017000000000000000000000000000300180000000000000000 *00000000000300190000000000000000000000000003001a000000000000000000000000000300 *1b0000000000000000000000000003001c0000000000000000000000000003001d000000000000 *0000000000000003001e0000000000000000000000000003001f00000000000000000000000000 *03002000000000000000000000000000030021000100000000000000000000000400f1ff100000 *0000000000000000000400f1ff0100000000000000000000000400f1ff80000000000000000000 *00000400f1ff8b00000000000000000000000400f1ff9600000000000000000000000400f1ff8b *00000000000000000000000400f1ff1000000000000000000000000400f1ff8b00000000000000 *000000000400f1ff0100000000000000000000000400f1ff1000000000000000000000000400f1 *ff0100000000000000000000000400f1ff8000000000000000000000000400f1ff8b0000000000 *0000000000000400f1ff0b01000000000000000000000400f1ff12010000000000000000000004 *00f1ff8401000000000000000000000400f1fff601000000000000000000000400f1ff12010000 *00000000000000000400f1ff0100000000000000000000000400f1ff1000000000000000000000 *000400f1ff0100000000000000000000000400f1ff8000000000000000000000000400f1ff1201 *000000000000000000000400f1ff01020000d49904080000000002000c00110200000000000000 *0000000400f1ff1c0200004c15120800000000010013002a020000541512080000000001001400 *380200005c151208000000000100150045020000a8a11108000000000100100049020000081712 *08010000000100170055020000009a04080000000002000c006b020000409a0408000000000200 *0c001102000000000000000000000400f1ff770200005015120800000000010013008402000058 *1512080000000001001400910200006814120800000000010011009f0200005c15120800000000 *01001500ab02000040ec10080000000002000c00c102000000000000000000000400f1ff840100 *0000000000000000000400f1fff601000000000000000000000400f1ffc1020000000000000000 *00000400f1ff0100000000000000000000000400f1ff1000000000000000000000000400f1ff01 *00000000000000000000000400f1ff8000000000000000000000000400f1ffc102000000000000 *000000000400f1ff330300002c9c04080000000000000c003c030000d4a1110800000000000010 *0049030000589e04080000000000000c0053030000509c04080000000000000c005d030000509c *04080000000000000c0068030000849c04080000000000000c0072030000849c04080000000000 *000c007d030000c09c04080000000000000c0087030000c09c04080000000000000c0092030000 *109d04080000000000000c009c030000109d04080000000000000c00a70300004c9d0408000000 *0000000c00b10300004c9d04080000000000000c00bc030000ac9d04080000000000000c00c603 *0000ac9d04080000000000000c00d1030000049e04080000000000000c00db030000049e040800 *00000000000c00e4030000589e04080000000000000c00ef0300007c9e04080000000000000c00 *f8030000dca1110800000000000010000504000084a104080000000000000c000f040000a89e04 *080000000000000c0019040000a89e04080000000000000c0022040000bc9e0408000000000000 *0c002d040000d89e04080000000000000c0037040000d89e04080000000000000c004204000028 *9f04080000000000000c004c040000289f04080000000000000c0057040000889f040800000000 *00000c0061040000889f04080000000000000c006c040000d89f04080000000000000c00760400 *00d89f04080000000000000c008104000014a004080000000000000c008b04000014a004080000 *000000000c009604000074a004080000000000000c00a004000074a004080000000000000c00ab *040000aca004080000000000000c00b5040000aca004080000000000000c00c00400000ca10408 *0000000000000c00ca0400000ca104080000000000000c00d30400004ca104080000000000000c *00de04000074a104080000000000000c00e804000084a104080000000000000c00f304000014a2 *04080000000000000c00fd04000020a204080000000000000c00070500002ca204080000000000 *000c001105000038a204080000000000000c001b05000044a204080000000000000c0025050000 *58a204080000000000000c002f05000058a204080000000000000c00380500006ca20408000000 *0000000c00420500006ca204080000000000000c004d050000a4a204080000000000000c005705 *0000a4a204080000000000000c0062050000e0a204080000000000000c006c050000e0a2040800 *00000000000c007705000034a304080000000000000c008105000040a304080000000000000c00 *8b0500004ca304080000000000000c009505000058a304080000000000000c009f05000070a304 *080000000000000c00a905000070a304080000000000000c00b405000098a30408000000000000 *0c00be050000a4a304080000000000000c00c8050000b0a304080000000000000c00d2050000c8 *a304080000000000000c00dc050000c8a304080000000000000c00e7050000f8a3040800000000 *00000c00f205000030a404080000000000000c00fc05000030a404080000000000000c00070600 *0060a404080000000000000c0012060000a0a404080000000000000c001c060000aca404080000 *000000000c0026060000aca404080000000000000c002f060000d8a404080000000000000c0039 *060000d8a404080000000000000c004406000014a504080000000000000c004e06000014a50408 *0000000000000c005906000060a504080000000000000c00630600006ca504080000000000000c *006d06000078a504080000000000000c007706000084a504080000000000000c0082060000a0a5 *04080000000000000c008c060000a0a504080000000000000c0097060000dca504080000000000 *000c00a1060000dca504080000000000000c00ac06000020a604080000000000000c00b7060000 *74a604080000000000000c00c106000080a604080000000000000c00cb06000080a60408000000 *0000000c00d406000098a604080000000000000c00de06000098a604080000000000000c00e906 *0000bca604080000000000000c00f4060000d8a604080000000000000c00fe060000d8a6040800 *00000000000c000907000014a704080000000000000c001307000014a704080000000000000c00 *1e07000058a704080000000000000c0029070000aca704080000000000000c0033070000b8a704 *080000000000000c003d070000b8a704080000000000000c0046070000d0a70408000000000000 *0c0050070000d0a704080000000000000c005b07000000a804080000000000000c006507000000 *a804080000000000000c007007000058a804080000000000000c007b07000068a8040800000000 *00000c008607000080a804080000000000000c009107000098a804080000000000000c009c0700 *00b0a804080000000000000c00a6070000eca804080000000000000c00b0070000f8a804080000 *000000000c00ba070000f8a804080000000000000c00c507000028a904080000000000000c00cf *07000028a904080000000000000c00da07000064a904080000000000000c00e407000064a90408 *0000000000000c00ef070000b8a904080000000000000c00fa0700000caa04080000000000000c *00040800000caa04080000000000000c000f08000028aa04080000000000000c001908000028aa *04080000000000000c002408000064aa04080000000000000c002e08000064aa04080000000000 *000c0039080000a8aa04080000000000000c0044080000fcaa04080000000000000c004e080000 *08ab04080000000000000c005808000008ab04080000000000000c00610800002cab0408000000 *0000000c006b0800002cab04080000000000000c00760800005cab04080000000000000c008008 *00005cab04080000000000000c008b080000c0ab04080000000000000c0095080000c0ab040800 *00000000000c00a008000010ac04080000000000000c00aa08000010ac04080000000000000c00 *b50800004cac04080000000000000c00bf0800004cac04080000000000000c00ca080000acac04 *080000000000000c00d4080000acac04080000000000000c00df08000004ad0408000000000000 *0c00e908000004ad04080000000000000c00f408000068ad04080000000000000c00fe08000068 *ad04080000000000000c000909000098ad04080000000000000c001309000098ad040800000000 *00000c001c090000f4ad04080000000000000c0026090000f4ad04080000000000000c00310900 *0028ae04080000000000000c003b09000028ae04080000000000000c004609000060ae04080000 *000000000c00500900006cae04080000000000000c005a09000078ae04080000000000000c0064 *09000084ae04080000000000000c006e0900009cae04080000000000000c00780900009cae0408 *0000000000000c0083090000c4ae04080000000000000c008d090000d0ae04080000000000000c *0097090000dcae04080000000000000c00a1090000f4ae04080000000000000c00ab090000f4ae *04080000000000000c00b609000024af04080000000000000c00c10900005caf04080000000000 *000c00cb0900005caf04080000000000000c00d60900008caf04080000000000000c00e1090000 *ccaf04080000000000000c00eb090000d8af04080000000000000c00f5090000d8af0408000000 *0000000c00fe09000004b004080000000000000c00080a000004b004080000000000000c00130a *000040b004080000000000000c001d0a000040b004080000000000000c00280a00008cb0040800 *00000000000c00320a0000a4b004080000000000000c003c0a0000a4b004080000000000000c00 *470a0000e0b004080000000000000c00510a0000e0b004080000000000000c005c0a000028b104 *080000000000000c00660a000028b104080000000000000c00710a000084b10408000000000000 *0c007b0a000084b104080000000000000c00860a0000b4b104080000000000000c00900a0000b4 *b104080000000000000c00990a00000cb204080000000000000c00a30a00000cb2040800000000 *00000c00ae0a000040b204080000000000000c00b80a000040b204080000000000000c00c30a00 *0070b204080000000000000c00cd0a00007cb204080000000000000c00d70a000088b204080000 *000000000c00e10a000094b204080000000000000c00eb0a0000acb204080000000000000c00f5 *0a0000acb204080000000000000c00000b0000d4b204080000000000000c000a0b0000e0b20408 *0000000000000c00140b0000ecb204080000000000000c001e0b000004b304080000000000000c *00280b000004b304080000000000000c00330b000034b304080000000000000c003e0b00006cb3 *04080000000000000c00480b00006cb304080000000000000c00530b00009cb304080000000000 *000c005e0b0000dcb304080000000000000c00680b0000e8b304080000000000000c00720b0000 *e8b304080000000000000c007b0b000014b404080000000000000c00850b000014b40408000000 *0000000c00900b000050b404080000000000000c009a0b000050b404080000000000000c00a50b *00009cb404080000000000000c00af0b0000b4b404080000000000000c00b90b0000b4b4040800 *00000000000c00c40b0000f0b404080000000000000c00ce0b0000f0b404080000000000000c00 *d90b000038b504080000000000000c00e30b000038b504080000000000000c00ee0b000094b504 *080000000000000c00f80b000094b504080000000000000c00030c0000c4b50408000000000000 *0c000d0c0000c4b504080000000000000c00160c00001cb604080000000000000c00200c00001c *b604080000000000000c002b0c000050b604080000000000000c00350c000050b6040800000000 *00000c00400c000080b604080000000000000c004a0c00008cb604080000000000000c00540c00 *0098b604080000000000000c005e0c0000a4b604080000000000000c00680c0000b0b604080000 *000000000c00720c0000c8b604080000000000000c007c0c0000c8b604080000000000000c0087 *0c000008b704080000000000000c00910c000008b704080000000000000c009c0c000034b70408 *0000000000000c00a60c000034b704080000000000000c00b10c000098b704080000000000000c *00bb0c000098b704080000000000000c00c60c0000d4b704080000000000000c00d00c0000d4b7 *04080000000000000c00db0c000034b804080000000000000c00e50c000034b804080000000000 *000c00f00c00008cb804080000000000000c00fa0c00008cb804080000000000000c00050d0000 *e4b804080000000000000c000f0d0000e4b804080000000000000c001a0d000014b90408000000 *0000000c00240d000014b904080000000000000c002d0d000060b904080000000000000c00370d *000060b904080000000000000c00400d000088b904080000000000000c004a0d000088b9040800 *00000000000c00550d0000b8b904080000000000000c005f0d0000b8b904080000000000000c00 *6a0d000010ba04080000000000000c00740d00001cba04080000000000000c007e0d000028ba04 *080000000000000c00880d000034ba04080000000000000c00920d000040ba0408000000000000 *0c009c0d00004cba04080000000000000c00a60d000064ba04080000000000000c00b00d000064 *ba04080000000000000c00bb0d00008cba04080000000000000c00c50d000098ba040800000000 *00000c00cf0d0000a4ba04080000000000000c00d90d0000bcba04080000000000000c00e30d00 *00bcba04080000000000000c00ee0d0000ecba04080000000000000c00f90d000024bb04080000 *000000000c00030e000024bb04080000000000000c000e0e000054bb04080000000000000c0019 *0e000094bb04080000000000000c00230e0000a0bb04080000000000000c002d0e0000a0bb0408 *0000000000000c00360e0000ccbb04080000000000000c00400e0000ccbb04080000000000000c *004b0e000008bc04080000000000000c00550e000008bc04080000000000000c00600e000054bc *04080000000000000c006a0e00006cbc04080000000000000c00740e00006cbc04080000000000 *000c007f0e0000a8bc04080000000000000c00890e0000a8bc04080000000000000c00940e0000 *f0bc04080000000000000c009e0e0000f0bc04080000000000000c00a90e000040bd0408000000 *0000000c00b30e00004cbd04080000000000000c00bd0e000064bd04080000000000000c00c70e *000064bd04080000000000000c00d20e0000a0bd04080000000000000c00dc0e0000a0bd040800 *00000000000c00e70e0000f4bd04080000000000000c00f10e0000f4bd04080000000000000c00 *fc0e000048be04080000000000000c00060f000048be04080000000000000c00110f0000acbe04 *080000000000000c001b0f0000acbe04080000000000000c00260f0000dcbe0408000000000000 *0c00300f0000dcbe04080000000000000c00390f000034bf04080000000000000c00430f000034 *bf04080000000000000c004c0f00005cbf04080000000000000c00560f00005cbf040800000000 *00000c00610f000090bf04080000000000000c006b0f000090bf04080000000000000c00760f00 *00e8bf04080000000000000c00800f0000f4bf04080000000000000c008a0f000000c004080000 *000000000c00940f00000cc004080000000000000c009e0f000024c004080000000000000c00a8 *0f000024c004080000000000000c00b30f00004cc004080000000000000c00bd0f000058c00408 *0000000000000c00c70f000064c004080000000000000c00d10f00007cc004080000000000000c *00db0f00007cc004080000000000000c00e60f0000acc004080000000000000c00f10f0000e4c0 *04080000000000000c00fb0f0000e4c004080000000000000c000610000014c104080000000000 *000c001110000054c104080000000000000c001b10000060c104080000000000000c0025100000 *60c104080000000000000c002e1000008cc104080000000000000c00381000008cc10408000000 *0000000c0043100000c8c104080000000000000c004d100000c8c104080000000000000c005810 *000014c204080000000000000c00621000002cc204080000000000000c006c1000002cc2040800 *00000000000c007710000068c204080000000000000c008110000068c204080000000000000c00 *8c100000b0c204080000000000000c0096100000b0c204080000000000000c00a11000000cc304 *080000000000000c00ab1000000cc304080000000000000c00b61000003cc30408000000000000 *0c00c01000003cc304080000000000000c00c910000094c304080000000000000c00d310000094 *c304080000000000000c00de100000c8c304080000000000000c00e8100000c8c3040800000000 *00000c00f3100000f8c304080000000000000c00fd10000004c404080000000000000c00071100 *0010c404080000000000000c00111100001cc404080000000000000c001b11000034c404080000 *000000000c002511000034c404080000000000000c003011000064c404080000000000000c003a *11000070c404080000000000000c004411000088c404080000000000000c004e11000088c40408 *0000000000000c0059110000b0c404080000000000000c0063110000bcc404080000000000000c *006d110000c8c404080000000000000c0077110000e0c404080000000000000c0081110000e0c4 *04080000000000000c008c11000010c504080000000000000c009711000048c504080000000000 *000c00a111000048c504080000000000000c00ac11000078c504080000000000000c00b7110000 *b8c504080000000000000c00c1110000c4c504080000000000000c00cb110000c4c50408000000 *0000000c00d4110000f0c504080000000000000c00de110000f0c504080000000000000c00e911 *00002cc604080000000000000c00f31100002cc604080000000000000c00fe11000078c6040800 *00000000000c000812000090c604080000000000000c001212000090c604080000000000000c00 *1d120000ccc604080000000000000c0027120000ccc604080000000000000c003212000014c704 *080000000000000c003c12000014c704080000000000000c004712000070c70408000000000000 *0c005112000070c704080000000000000c005c120000a0c704080000000000000c0066120000a0 *c704080000000000000c006f12000018c804080000000000000c007912000018c8040800000000 *00000c008212000030c804080000000000000c008c12000030c804080000000000000c00951200 *0058c804080000000000000c009f12000058c804080000000000000c00aa12000094c804080000 *000000000c00b412000094c804080000000000000c00bf120000ecc804080000000000000c00c9 *120000f8c804080000000000000c00d312000004c904080000000000000c00dd12000010c90408 *0000000000000c00e712000028c904080000000000000c00f112000028c904080000000000000c *00fc12000050c904080000000000000c00061300005cc904080000000000000c001013000068c9 *04080000000000000c001a13000080c904080000000000000c002413000080c904080000000000 *000c002f130000b0c904080000000000000c003a130000e8c904080000000000000c0044130000 *e8c904080000000000000c004f13000018ca04080000000000000c005a13000058ca0408000000 *0000000c006413000064ca04080000000000000c006e13000064ca04080000000000000c007713 *000090ca04080000000000000c008113000090ca04080000000000000c008c130000ccca040800 *00000000000c0096130000ccca04080000000000000c00a113000018cb04080000000000000c00 *ab13000030cb04080000000000000c00b513000030cb04080000000000000c00c01300006ccb04 *080000000000000c00ca1300006ccb04080000000000000c00d5130000b4cb0408000000000000 *0c00df130000b4cb04080000000000000c00ea13000010cc04080000000000000c00f413000010 *cc04080000000000000c00ff13000040cc04080000000000000c000914000040cc040800000000 *00000c001214000098cc04080000000000000c001c14000098cc04080000000000000c00271400 *00cccc04080000000000000c0031140000cccc04080000000000000c003c14000008cd04080000 *000000000c004614000008cd04080000000000000c004f140000cccf04080000000000000c0059 *140000cccf04080000000000000c0062140000f4cf04080000000000000c006c140000f4cf0408 *0000000000000c007714000030d004080000000000000c008114000030d004080000000000000c *008c14000068d004080000000000000c009614000068d004080000000000000c00a1140000ccd0 *04080000000000000c00ab140000ccd004080000000000000c00b41400005cd104080000000000 *000c00be1400005cd104080000000000000c00c914000098d104080000000000000c00d3140000 *98d104080000000000000c00dc14000064d204080000000000000c00e514000028a21108000000 *0000001000f214000070d404080000000000000c00fc14000078d204080000000000000c000615 *000078d204080000000000000c0011150000d8d204080000000000000c001b150000d8d2040800 *00000000000c002615000014d304080000000000000c003015000014d304080000000000000c00 *3b15000074d304080000000000000c004515000074d304080000000000000c0050150000ccd304 *080000000000000c005a150000ccd304080000000000000c006515000008d40408000000000000 *0c006f15000008d404080000000000000c007a15000070d404080000000000000c0085150000b4 *d404080000000000000c008e15000030a2110800000000000010009b15000058e0040800000000 *00000c00a5150000c4d404080000000000000c00b0150000d4d404080000000000000c00bb1500 *00dcd404080000000000000c00c615000058d504080000000000000c00d015000058d504080000 *000000000c00db15000084d504080000000000000c00e515000094d504080000000000000c00ef *15000094d504080000000000000c00fa150000b4d504080000000000000c000516000014d60408 *0000000000000c000f16000014d604080000000000000c001a16000074d604080000000000000c *002416000074d604080000000000000c002f160000d4d604080000000000000c003a16000034d7 *04080000000000000c004416000034d704080000000000000c004f16000094d704080000000000 *000c005916000094d704080000000000000c006416000000d804080000000000000c006e160000 *00d804080000000000000c007916000060d804080000000000000c0084160000ccd80408000000 *0000000c008e160000dcd804080000000000000c0098160000dcd804080000000000000c00a316 *000004d904080000000000000c00ad16000004d904080000000000000c00b81600005cd9040800 *00000000000c00c21600005cd904080000000000000c00cd160000b8d904080000000000000c00 *d7160000b8d904080000000000000c00e2160000e8d904080000000000000c00ed16000020da04 *080000000000000c00f716000020da04080000000000000c000217000080da0408000000000000 *0c000c17000080da04080000000000000c0017170000d8da04080000000000000c0021170000d8 *da04080000000000000c002c17000008db04080000000000000c00371700005cdb040800000000 *00000c00411700005cdb04080000000000000c004c170000bcdb04080000000000000c00561700 *00bcdb04080000000000000c0061170000f8db04080000000000000c006b170000f8db04080000 *000000000c007617000058dc04080000000000000c008017000058dc04080000000000000c008b *170000b0dc04080000000000000c0095170000b0dc04080000000000000c00a0170000e0dc0408 *0000000000000c00ab17000040dd04080000000000000c00b517000050dd04080000000000000c *00bf17000050dd04080000000000000c00ca17000078dd04080000000000000c00d417000078dd *04080000000000000c00df170000d0dd04080000000000000c00e9170000d0dd04080000000000 *000c00f417000020de04080000000000000c00ff1700006cde04080000000000000c000a180000 *7cde04080000000000000c0015180000f0de04080000000000000c001f180000fcde0408000000 *0000000c0029180000fcde04080000000000000c003418000024df04080000000000000c003e18 *000024df04080000000000000c004918000060df04080000000000000c0054180000ccdf040800 *00000000000c005e180000d8df04080000000000000c0068180000d8df04080000000000000c00 *7118000058e004080000000000000c007c18000074e004080000000000000c008518000038a211 *0800000000000010009218000088e004080000000000000c009c18000088e00408000000000000 *0c00a718000020e104080000000000000c00b118000020e104080000000000000c00bc18000058 *e104080000000000000c00c618000058e104080000000000000c00d1180000a4e1040800000000 *00000c00dc180000c0e104080000000000000c00e6180000c0e104080000000000000c00f11800 *00f8e104080000000000000c00fb180000f8e104080000000000000c000619000048e204080000 *000000000c001019000048e204080000000000000c001b19000094e204080000000000000c0026 *19000000e304080000000000000c003019000010e304080000000000000c003a19000010e30408 *0000000000000c004519000048e304080000000000000c004f19000048e304080000000000000c *005a19000084e304080000000000000c006419000084e304080000000000000c006f190000bce3 *04080000000000000c0079190000bce304080000000000000c008419000010e404080000000000 *000c008e19000010e404080000000000000c00991900005ce404080000000000000c00a3190000 *5ce404080000000000000c00ae190000ace404080000000000000c00b8190000ace40408000000 *0000000c00c3190000e8e404080000000000000c00cd190000e8e404080000000000000c00d819 *000038e504080000000000000c00e219000038e504080000000000000c00ed19000090e5040800 *00000000000c00f719000090e504080000000000000c00021a0000cce504080000000000000c00 *0c1a0000cce504080000000000000c00171a000030e604080000000000000c00211a000030e604 *080000000000000c002c1a00008ce604080000000000000c00361a00008ce60408000000000000 *0c00411a0000cce604080000000000000c004b1a0000cce604080000000000000c00561a000020 *e704080000000000000c00601a000020e704080000000000000c006b1a000014e8040800000000 *00000c00741a000050a211080000000000001000811a0000ace904080000000000000c008b1a00 *002ce804080000000000000c00951a00002ce804080000000000000c00a01a000068e804080000 *000000000c00aa1a000068e804080000000000000c00b51a0000b8e804080000000000000c00bf *1a0000b8e804080000000000000c00ca1a0000f4e804080000000000000c00d41a0000f4e80408 *0000000000000c00df1a000054e904080000000000000c00e91a000054e904080000000000000c *00f41a0000ace904080000000000000c00ff1a0000f0e904080000000000000c00081b000058a2 *11080000000000001000151b000004ea04080000000000000c001f1b000004ea04080000000000 *000c002a1b00005cea04080000000000000c00331b000068a211080000000000001000401b0000 *7cea04080000000000000c009711000068ea04080000000000000c004a1b000068ea0408000000 *0000000c00531b00007cea04080000000000000c005e1b0000d0ea04080000000000000c00671b *000078a211080000000000001000741b0000e4ea04080000000000000c007e1b0000e4ea040800 *00000000000c00891b000068eb04080000000000000c00941b0000a8eb04080000000000000c00 *9f1b0000e8eb04080000000000000c00aa1b000024ec04080000000000000c00b51b000034ec04 *080000000000000c00c01b0000d0ed04080000000000000c00cb1b000040ec0408000000000000 *0c00d61b000014ed04080000000000000c00e11b000054ec04080000000000000c00ec1b0000ac *ec04080000000000000c00f61b0000b4ec04080000000000000c00001c0000b4ec040800000000 *00000c00091c0000d4ec04080000000000000c00141c000004ed04080000000000000c001e1c00 *0014ed04080000000000000c00281c000058ed04080000000000000c00321c000058ed04080000 *000000000c003b1c000094ed04080000000000000c00461c0000c0ed04080000000000000c0050 *1c0000d0ed04080000000000000c005a1c000004ee04080000000000000c00641c000004ee0408 *0000000000000c006f1c000044ee04080000000000000c007a1c00005cee04080000000000000c *00841c00005cee04080000000000000c008d1c0000a0ee04080000000000000c00981c0000ccee *04080000000000000c00a21c0000d8ee04080000000000000c00ac1c0000d8ee04080000000000 *000c00b71c0000f8ee04080000000000000c00c21c00005cef04080000000000000c00cd1c0000 *f8ef04080000000000000c00d71c0000f8ef04080000000000000c00e21c000008f00408000000 *0000000c00ed1c000044f004080000000000000c00f81c0000b8f004080000000000000c00021d *0000b8f004080000000000000c000d1d0000dcf004080000000000000c00171d0000dcf0040800 *00000000000c00221d00003cf104080000000000000c002d1d000080f104080000000000000c00 *381d0000e4f104080000000000000c00421d0000e4f104080000000000000c004d1d0000f0f104 *080000000000000c00581d000050f204080000000000000c00621d000050f20408000000000000 *0c006d1d000078f204080000000000000c00771d000078f204080000000000000c00821d0000a0 *f204080000000000000c008d1d0000f4f204080000000000000c00971d0000f4f2040800000000 *00000c00a21d000038f304080000000000000c00ad1d000098f304080000000000000c00b71d00 *0098f304080000000000000c00c21d0000c8f304080000000000000c00cc1d0000c8f304080000 *000000000c00d71d0000e4f304080000000000000c00e11d0000e4f304080000000000000c00ec *1d000044f404080000000000000c00f71d00009cf404080000000000000c00011e00009cf40408 *0000000000000c000c1e0000c8f404080000000000000c00161e0000c8f404080000000000000c *00211e000000f504080000000000000c002b1e000000f504080000000000000c00341e000024f5 *04080000000000000c003e1e000024f504080000000000000c00491e000054f504080000000000 *000c00531e000054f504080000000000000c005e1e0000a0f504080000000000000c00691e0000 *b0f504080000000000000c00741e000030f704080000000000000c007f1e0000c4f50408000000 *0000000c008a1e00006cf604080000000000000c00951e0000d0f504080000000000000c00a01e *000028f604080000000000000c00aa1e000028f604080000000000000c00b51e000060f6040800 *00000000000c00bf1e00006cf604080000000000000c00c91e0000b4f604080000000000000c00 *d31e0000b4f604080000000000000c00dc1e0000f8f604080000000000000c00e71e000024f704 *080000000000000c00f11e000030f704080000000000000c00fb1e000068f70408000000000000 *0c00051f000068f704080000000000000c00101f0000a4f704080000000000000c001a1f0000a4 *f704080000000000000c00251f0000c8f704080000000000000c00301f0000d0f7040800000000 *00000c003b1f0000f4f704080000000000000c00451f000000f804080000000000000c004f1f00 *0000f804080000000000000c005a1f00003cf804080000000000000c00651f000054f804080000 *000000000c006f1f000054f804080000000000000c00781f000098f804080000000000000c0083 *1f0000c4f804080000000000000c008d1f0000d0f804080000000000000c00971f0000d0f80408 *0000000000000c00a21f0000fcf804080000000000000c00ac1f0000fcf804080000000000000c *00b71f000038f904080000000000000c00c11f000038f904080000000000000c00cc1f00007cf9 *04080000000000000c00d71f0000c8f904080000000000000c00e21f000010fa04080000000000 *000c00ec1f000010fa04080000000000000c00f71f00004cfa04080000000000000c0001200000 *4cfa04080000000000000c000c2000009cfa04080000000000000c00162000009cfa0408000000 *0000000c0021200000d8fa04080000000000000c002b200000d8fa04080000000000000c003620 *000014fb04080000000000000c004020000014fb04080000000000000c004b20000064fb040800 *00000000000c005520000064fb04080000000000000c0060200000c4fb04080000000000000c00 *6a200000c4fb04080000000000000c007520000000fc04080000000000000c007f20000000fc04 *080000000000000c008a20000060fc04080000000000000c009420000060fc0408000000000000 *0c009d200000e8fc04080000000000000c00a820000008fd04080000000000000c00b220000014 *fd04080000000000000c00bc20000014fd04080000000000000c00c520000020fd040800000000 *00000c00d020000040fd04080000000000000c00da20000040fd04080000000000000c00e52000 *007cfd04080000000000000c00ef2000007cfd04080000000000000c00fa200000ccfd04080000 *000000000c0004210000ccfd04080000000000000c000f21000014fe04080000000000000c001a *21000058fe04080000000000000c0025210000bcfe04080000000000000c002f210000bcfe0408 *0000000000000c003a210000d4fe04080000000000000c0044210000d4fe04080000000000000c *004f21000010ff04080000000000000c005921000010ff04080000000000000c006421000060ff *04080000000000000c006e21000060ff04080000000000000c0077210000f0ff04080000000000 *000c0082210000180005080000000000000c00870c0000240005080000000000000c008c210000 *240005080000000000000c0095210000300005080000000000000c00a021000058000508000000 *0000000c00aa210000580005080000000000000c00b5210000800005080000000000000c00c021 *0000d80005080000000000000c00ca210000d80005080000000000000c00d52100001401050800 *00000000000c00df210000140105080000000000000c00ea210000600105080000000000000c00 *f4210000600105080000000000000c00ff210000b00105080000000000000c0009220000b00105 *080000000000000c0012220000400205080000000000000c001d2200006c020508000000000000 *0c00db0c0000780205080000000000000c0027220000780205080000000000000c003022000084 *0205080000000000000c003b220000b00205080000000000000c0045220000b002050800000000 *00000c0050220000cc0205080000000000000c005a220000cc0205080000000000000c00652200 *00080305080000000000000c006f220000080305080000000000000c007a220000580305080000 *000000000c0084220000580305080000000000000c008f220000a00305080000000000000c009a *220000f80305080000000000000c00a4220000f80305080000000000000c00af22000024040508 *0000000000000c00b9220000240405080000000000000c00c4220000c80405080000000000000c *00ce220000d40405080000000000000c00d8220000d40405080000000000000c00e12200003805 *05080000000000000c00ec220000600505080000000000000c00f62200006c0505080000000000 *000c00002300006c0505080000000000000c0009230000c40505080000000000000c0014230000 *f00505080000000000000c001e230000fc0505080000000000000c0028230000fc050508000000 *0000000c0033230000380605080000000000000c003d230000380605080000000000000c004823 *0000680605080000000000000c0053230000e80605080000000000000c005e2300006807050800 *00000000000c0069230000c40705080000000000000c0074230000440805080000000000000c00 *7f230000f00805080000000000000c0089230000f00805080000000000000c0094230000040905 *080000000000000c009f2300004c0905080000000000000c00aa230000a0090508000000000000 *0c00b4230000a00905080000000000000c00bf230000d00905080000000000000c00ca23000044 *0a05080000000000000c00d4230000440a05080000000000000c00df230000540a050800000000 *00000c00ea230000f40a05080000000000000c007f0e0000000b05080000000000000c00f42300 *00000b05080000000000000c00fd2300000c0b05080000000000000c0008240000880b05080000 *000000000c0012240000b80b05080000000000000c001b24000090a21108000000000000100028 *240000980c05080000000000000c0032240000cc0b05080000000000000c003c240000cc0b0508 *0000000000000c0047240000080c05080000000000000c0051240000080c05080000000000000c *005c240000580c05080000000000000c0066240000580c05080000000000000c0071240000980c *05080000000000000c007c240000000d05080000000000000c0086240000000d05080000000000 *000c00a70300003c0d05080000000000000c00b10300003c0d05080000000000000c00bc030000 *940d05080000000000000c00c6030000940d05080000000000000c0091240000b00e0508000000 *0000000c009c240000c00e05080000000000000c00a7240000d00e05080000000000000c00b224 *0000100f05080000000000000c00bc240000100f05080000000000000c00c7240000300f050800 *00000000000c00d1240000480f05080000000000000c00dc240000740f05080000000000000c00 *e7240000ac0f05080000000000000c00f2240000fc0f05080000000000000c00fc240000041105 *080000000000000c0007250000301105080000000000000c001225000070110508000000000000 *0c001c250000701105080000000000000c00272500007c1105080000000000000c0032250000a8 *1105080000000000000c003d250000b81105080000000000000c0048250000f811050800000000 *00000c0052250000f81105080000000000000c005d250000181205080000000000000c00672500 *00181205080000000000000c0072250000381205080000000000000c007c250000501205080000 *000000000c0087250000881205080000000000000c0092250000c01205080000000000000c009d *250000f81205080000000000000c00a8250000401305080000000000000c00b3250000a4130508 *0000000000000c00bd250000801405080000000000000c00c8250000b41405080000000000000c *00d2250000b41405080000000000000c00db250000e41405080000000000000c00470a0000f814 *05080000000000000c00e6250000f81405080000000000000c00ef250000281505080000000000 *000c00fa250000481505080000000000000c0004260000481505080000000000000c000f260000 *681505080000000000000c0019260000801505080000000000000c0024260000ac150508000000 *0000000c002f260000f81505080000000000000c003a2600005c1605080000000000000c00710a *0000c81605080000000000000c0044260000c81605080000000000000c004d2600000c17050800 *00000000000c00572600000c1705080000000000000c0060260000341705080000000000000c00 *6a260000341705080000000000000c00732600007c1705080000000000000c007d2600007c1705 *080000000000000c00862600008c1905080000000000000c008f260000f4a21108000000000000 *10009c260000a01905080000000000000c00a6260000a01905080000000000000c00b1260000f8 *1905080000000000000c00ba26000004a311080000000000001000c7260000181a050800000000 *00000c00d1260000041a05080000000000000c00db260000041a05080000000000000c00e42600 *00181a05080000000000000c00ef2600006c1a05080000000000000c00f826000014a311080000 *00000000100005270000801a05080000000000000c000f270000801a05080000000000000c001a *270000d81a05080000000000000c002327000024a31108000000000000100030270000f81a0508 *0000000000000c003a270000e41a05080000000000000c0044270000e41a05080000000000000c *004d270000f81a05080000000000000c00582700004c1b05080000000000000c006127000034a3 *110800000000000010006e270000601b05080000000000000c0078270000601b05080000000000 *000c0083270000f01b05080000000000000c008d270000f01b05080000000000000c0098270000 *241c05080000000000000c00a2270000241c05080000000000000c00ab2700006c1c0508000000 *0000000c00b52700006c1c05080000000000000c00c02700009c1c05080000000000000c00ca27 *00009c1c05080000000000000c00d5270000d01c05080000000000000c00df270000d01c050800 *00000000000c00ea270000041d05080000000000000c00f4270000041d05080000000000000c00 *fd270000501d05080000000000000c0007280000501d05080000000000000c0012280000881d05 *080000000000000c001c280000881d05080000000000000c0027280000d81d0508000000000000 *0c0031280000d81d05080000000000000c003a280000281e05080000000000000c004428000028 *1e05080000000000000c004f280000541e05080000000000000c0059280000541e050800000000 *00000c0064280000881e05080000000000000c006e280000881e05080000000000000c00792800 *00c01e05080000000000000c0083280000c01e05080000000000000c008e280000fc1e05080000 *000000000c0098280000fc1e05080000000000000c00a3280000541f05080000000000000c00ad *280000541f05080000000000000c00b8280000b41f05080000000000000c00c2280000b41f0508 *0000000000000c00cb280000682005080000000000000c00d428000054a3110800000000000010 *00e12800007c2005080000000000000c00eb2800007c2005080000000000000c00f6280000d420 *05080000000000000c00ff28000064a3110800000000000010000c290000f42005080000000000 *000c0016290000e02005080000000000000c0020290000e02005080000000000000c0029290000 *f42005080000000000000c0034290000482105080000000000000c003d29000074a31108000000 *00000010004a2900005c2105080000000000000c00542900005c2105080000000000000c005f29 *0000b42105080000000000000c006829000084a31108000000000000100075290000c821050800 *00000000000c007f290000c82105080000000000000c008a290000202205080000000000000c00 *9329000094a311080000000000001000a0290000402205080000000000000c00aa2900002c2205 *080000000000000c00b42900002c2205080000000000000c00bd29000040220508000000000000 *0c00c8290000942205080000000000000c00d1290000a4a311080000000000001000de290000a8 *2205080000000000000c00e8290000a82205080000000000000c00f32900000023050800000000 *00000c00fc290000b4a311080000000000001000092a0000142305080000000000000c00132a00 *00142305080000000000000c001e2a00006c2305080000000000000c00272a0000c4a311080000 *000000001000342a0000802305080000000000000c003e2a0000802305080000000000000c0049 *2a0000d82305080000000000000c00522a0000d4a3110800000000000010005f2a0000ec230508 *0000000000000c00692a0000ec2305080000000000000c00742a0000442405080000000000000c *007d2a0000e4a3110800000000000010008a2a0000642405080000000000000c00942a00005024 *05080000000000000c009e2a0000502405080000000000000c00a72a0000642405080000000000 *000c00b22a0000b82405080000000000000c00bb2a0000f4a311080000000000001000c82a0000 *042605080000000000000c00d22a0000d82405080000000000000c00dc2a0000d8240508000000 *0000000c00e72a0000082505080000000000000c00f12a0000082505080000000000000c00fc2a *0000742505080000000000000c00062b0000742505080000000000000c000f2b0000c025050800 *00000000000c00192b0000c02505080000000000000c00242b0000042605080000000000000c00 *2f2b0000642605080000000000000c00382b0000fca311080000000000001000452b0000c02605 *080000000000000c004f2b0000702605080000000000000c00592b000070260508000000000000 *0c00622b0000c02605080000000000000c006d2b0000fc2605080000000000000c00772b0000fc *2605080000000000000c00822b0000382705080000000000000c008c2b00003827050800000000 *00000c00972b0000c82705080000000000000c00a02b00000ca411080000000000001000ad2b00 *000c2e05080000000000000c00b72b0000f02705080000000000000c00c12b0000f02705080000 *000000000c00cc2b0000442805080000000000000c00d62b0000442805080000000000000c00df *2b0000642805080000000000000c00e92b0000642805080000000000000c00f42b00009c280508 *0000000000000c00fe2b00009c2805080000000000000c00092c0000fc2805080000000000000c *00132c0000fc2805080000000000000c001e2c0000382905080000000000000c00282c00003829 *05080000000000000c00332c0000842905080000000000000c003d2c0000842905080000000000 *000c00482c0000e42905080000000000000c00522c0000e42905080000000000000c005d2c0000 *202a05080000000000000c00672c0000202a05080000000000000c00722c00006c2a0508000000 *0000000c007c2c00006c2a05080000000000000c00872c0000c82a05080000000000000c00912c *0000c82a05080000000000000c009a2c0000e82a05080000000000000c00a42c0000e82a050800 *00000000000c00af2c0000202b05080000000000000c00b92c0000202b05080000000000000c00 *c42c0000842b05080000000000000c00ce2c0000842b05080000000000000c00d92c0000c02b05 *080000000000000c00e32c0000c02b05080000000000000c00ee2c00000c2c0508000000000000 *0c00f82c00000c2c05080000000000000c00032d0000702c05080000000000000c000d2d000070 *2c05080000000000000c00182d0000ac2c05080000000000000c00222d0000ac2c050800000000 *00000c002d2d0000f82c05080000000000000c00372d0000f82c05080000000000000c00422d00 *00582d05080000000000000c004c2d0000582d05080000000000000c00552d00007c2d05080000 *000000000c005f2d00007c2d05080000000000000c006a2d0000b42d05080000000000000c0074 *2d0000b42d05080000000000000c007d2d00000c2e05080000000000000c00882d000014a41108 *0000000000001000952d00002c2e05080000000000000c009e2d00001ca4110800000000000010 *00ab2d0000402e05080000000000000c00b52d0000402e05080000000000000c00c02d0000982e *05080000000000000c00c92d00002ca411080000000000001000d62d0000ac2e05080000000000 *000c00e02d0000ac2e05080000000000000c00eb2d0000042f05080000000000000c00f42d0000 *3ca411080000000000001000012e0000683f05080000000000000c000b2e0000302f0508000000 *0000000c00152e0000302f05080000000000000c00202e00006c2f05080000000000000c002a2e *00006c2f05080000000000000c00332e0000b82f05080000000000000c003d2e0000b82f050800 *00000000000c00482e0000e82f05080000000000000c00532e0000fc2f05080000000000000c00 *5d2e0000fc2f05080000000000000c00682e0000383005080000000000000c00722e0000383005 *080000000000000c007b2e0000783005080000000000000c00862e00008c300508000000000000 *0c00902e00008c3005080000000000000c009b2e0000c83005080000000000000c00a52e0000c8 *3005080000000000000c00ae2e0000143105080000000000000c00b82e00001431050800000000 *00000c00c32e0000443105080000000000000c00ce2e0000583105080000000000000c00d82e00 *00583105080000000000000c00e32e0000943105080000000000000c00ed2e0000943105080000 *000000000c00f62e0000d43105080000000000000c00012f0000e83105080000000000000c000b *2f0000e83105080000000000000c00162f0000243205080000000000000c00202f000024320508 *0000000000000c00292f0000643205080000000000000c00342f0000783205080000000000000c *003e2f0000783205080000000000000c00492f0000b43205080000000000000c00532f0000b432 *05080000000000000c005c2f0000003305080000000000000c00662f0000003305080000000000 *000c00712f0000303305080000000000000c007c2f0000443305080000000000000c00862f0000 *443305080000000000000c00912f0000803305080000000000000c009b2f000080330508000000 *0000000c00a42f0000c03305080000000000000c00af2f0000d43305080000000000000c00b92f *0000d43305080000000000000c00c42f0000103405080000000000000c00ce2f00001034050800 *00000000000c00d72f0000503405080000000000000c00e22f0000583405080000000000000c00 *ed2f0000903405080000000000000c00f82f0000ac3405080000000000000c0002300000b83405 *080000000000000c000c300000b83405080000000000000c0015300000d8340508000000000000 *0c0020300000043505080000000000000c002a300000043505080000000000000c003530000010 *3505080000000000000c003f300000443505080000000000000c00493000005435050800000000 *00000c0053300000543505080000000000000c005e300000983505080000000000000c00683000 *00983505080000000000000c0073300000f43505080000000000000c007d300000f43505080000 *000000000c0088300000203605080000000000000c0093300000703605080000000000000c009e *3000008c3605080000000000000c00a8300000983605080000000000000c00b230000098360508 *0000000000000c00bb300000b83605080000000000000c00c6300000e43605080000000000000c *00d0300000e43605080000000000000c00db300000f03605080000000000000c00e53000002437 *05080000000000000c00ef300000343705080000000000000c00f9300000343705080000000000 *000c0004310000683705080000000000000c000f310000c43705080000000000000c0019310000 *c43705080000000000000c0024310000003805080000000000000c002e31000034380508000000 *0000000c0038310000443805080000000000000c0042310000443805080000000000000c004d31 *0000783805080000000000000c0058310000c03805080000000000000c0063310000dc38050800 *00000000000c006d310000e83805080000000000000c0077310000e83805080000000000000c00 *80310000083905080000000000000c008b310000343905080000000000000c0095310000343905 *080000000000000c00a0310000403905080000000000000c00aa31000074390508000000000000 *0c00b4310000843905080000000000000c00be310000843905080000000000000c00c9310000c8 *3905080000000000000c00d3310000c83905080000000000000c00de310000243a050800000000 *00000c00e8310000243a05080000000000000c00f3310000503a05080000000000000c00fe3100 *009c3a05080000000000000c0009320000b83a05080000000000000c0013320000c43a05080000 *000000000c001d320000c43a05080000000000000c0026320000e43a05080000000000000c0031 *320000103b05080000000000000c003b320000103b05080000000000000c00463200001c3b0508 *0000000000000c0050320000503b05080000000000000c005a320000603b05080000000000000c *0064320000603b05080000000000000c006f320000903b05080000000000000c007a320000e83b *05080000000000000c0084320000e83b05080000000000000c008f320000243c05080000000000 *000c0099320000583c05080000000000000c00a3320000683c05080000000000000c00ad320000 *683c05080000000000000c00b8320000983c05080000000000000c00c3320000dc3c0508000000 *0000000c00ce320000f83c05080000000000000c00d8320000043d05080000000000000c00e232 *0000043d05080000000000000c00eb320000243d05080000000000000c00f6320000503d050800 *00000000000c0000330000503d05080000000000000c000b3300005c3d05080000000000000c00 *15330000903d05080000000000000c001f330000a03d05080000000000000c0029330000a03d05 *080000000000000c0034330000d03d05080000000000000c003f330000283e0508000000000000 *0c0049330000283e05080000000000000c0054330000643e05080000000000000c005e33000098 *3e05080000000000000c0068330000a83e05080000000000000c0072330000a83e050800000000 *00000c007d330000e43e05080000000000000c0087330000e43e05080000000000000c00903300 *00343f05080000000000000c009a330000343f05080000000000000c00a5330000683f05080000 *000000000c00b0330000cc3f05080000000000000c00b93300004ca411080000000000001000c6 *330000e03f05080000000000000c00d0330000e03f05080000000000000c00db3300005c400508 *0000000000000c00e53300005c4005080000000000000c00f0330000984005080000000000000c *00fa330000984005080000000000000c0005340000f04005080000000000000c000f340000f040 *05080000000000000c001a3400002c4105080000000000000c00243400002c4105080000000000 *000c002f340000984105080000000000000c0039340000984105080000000000000c0044340000 *e84105080000000000000c004e340000e84105080000000000000c00573400001c430508000000 *0000000c00613400001c4305080000000000000c006c340000484305080000000000000c007634 *0000484305080000000000000c0081340000f44305080000000000000c008b340000f443050800 *00000000000c00963400002c4405080000000000000c00a03400002c4405080000000000000c00 *ab340000644405080000000000000c00b5340000644405080000000000000c00c0340000904405 *080000000000000c00cb340000ac4405080000000000000c00d5340000ac440508000000000000 *0c00e0340000e84405080000000000000c00ea340000e84405080000000000000c00f334000044 *4505080000000000000c00fd340000444505080000000000000c00083500009045050800000000 *00000c0012350000904505080000000000000c001b350000f44505080000000000000c00263500 *00204605080000000000000c0030350000304605080000000000000c003a350000304605080000 *000000000c0045350000684605080000000000000c004f350000684605080000000000000c005a *350000a44605080000000000000c0064350000a44605080000000000000c006f350000e0460508 *0000000000000c0079350000e04605080000000000000c00843500001c4705080000000000000c *008e3500001c4705080000000000000c0099350000a44805080000000000000c00a3350000a448 *05080000000000000c00ac350000c44805080000000000000c00b6350000c44805080000000000 *000c00c1350000f84805080000000000000c00cb350000f84805080000000000000c00d6350000 *344905080000000000000c00e0350000344905080000000000000c00eb3500007c490508000000 *0000000c00f53500007c4905080000000000000c00fe350000c84905080000000000000c000836 *0000c84905080000000000000c0013360000004a05080000000000000c001d360000004a050800 *00000000000c0028360000804a05080000000000000c0032360000804a05080000000000000c00 *3b360000944a05080000000000000c0045360000944a05080000000000000c0050360000c84a05 *080000000000000c005a360000c84a05080000000000000c0063360000104b0508000000000000 *0c006d360000104b05080000000000000c0078360000404b05080000000000000c008236000040 *4b05080000000000000c008b360000804b05080000000000000c0095360000804b050800000000 *00000c00a0360000c04b05080000000000000c00aa360000c04b05080000000000000c00b53600 *00fc4b05080000000000000c00bf360000fc4b05080000000000000c00ca360000444c05080000 *000000000c00d4360000444c05080000000000000c00dd3600009c4c05080000000000000c00e7 *3600009c4c05080000000000000c00f2360000e04c05080000000000000c00fc360000e04c0508 *0000000000000c00073700004c4d05080000000000000c00113700004c4d05080000000000000c *001a370000944d05080000000000000c0024370000944d05080000000000000c002f370000c44d *05080000000000000c0039370000c44d05080000000000000c0042370000044e05080000000000 *000c004c370000044e05080000000000000c0057370000444e05080000000000000c0061370000 *444e05080000000000000c006c370000804e05080000000000000c0076370000804e0508000000 *0000000c0081370000c84e05080000000000000c008b370000c84e05080000000000000c009437 *0000204f05080000000000000c009e370000204f05080000000000000c00a9370000684f050800 *00000000000c00b3370000684f05080000000000000c00be370000d84f05080000000000000c00 *c8370000d84f05080000000000000c00d1370000885005080000000000000c00da37000094a411 *080000000000001000e73700009c5005080000000000000c00f13700009c500508000000000000 *0c00fc370000f45005080000000000000c0005380000a4a4110800000000000010001238000054 *5c05080000000000000c001c380000205105080000000000000c00263800002051050800000000 *00000c0031380000505105080000000000000c003c380000885105080000000000000c00463800 *00885105080000000000000c0051380000c05105080000000000000c005b380000c05105080000 *000000000c0066380000fc5105080000000000000c0070380000fc5105080000000000000c007b *380000485205080000000000000c0085380000485205080000000000000c0090380000a4520508 *0000000000000c009a380000a45205080000000000000c00a3380000c85205080000000000000c *00ad380000c85205080000000000000c00b8380000f45205080000000000000c00c33800004453 *05080000000000000c00cd380000445305080000000000000c00d83800007c5305080000000000 *000c00e23800007c5305080000000000000c00ed380000b85305080000000000000c00f7380000 *b85305080000000000000c0002390000045405080000000000000c000c39000004540508000000 *0000000c0017390000605405080000000000000c0021390000605405080000000000000c002a39 *0000845405080000000000000c0034390000845405080000000000000c003f390000b054050800 *00000000000c004a390000005505080000000000000c0054390000005505080000000000000c00 *5f390000385505080000000000000c0069390000385505080000000000000c0074390000745505 *080000000000000c007e390000745505080000000000000c0089390000c0550508000000000000 *0c0093390000c05505080000000000000c009e3900001c5605080000000000000c00a83900001c *5605080000000000000c00b1390000405605080000000000000c00bb3900004056050800000000 *00000c00c63900006c5605080000000000000c00d1390000bc5605080000000000000c00db3900 *00bc5605080000000000000c00e6390000545c05080000000000000c00f1390000f45605080000 *000000000c00fb390000f45605080000000000000c00063a00004c5705080000000000000c0010 *3a00004c5705080000000000000c001b3a0000845705080000000000000c00253a000084570508 *0000000000000c00303a0000e85705080000000000000c003a3a0000e85705080000000000000c *00453a0000245805080000000000000c004f3a0000245805080000000000000c005a3a00007058 *05080000000000000c00643a0000705805080000000000000c006f3a0000d05805080000000000 *000c00793a0000d05805080000000000000c00823a0000f45805080000000000000c008c3a0000 *f45805080000000000000c00973a0000205905080000000000000c00a23a000074590508000000 *0000000c00ac3a0000745905080000000000000c00b73a0000ac5905080000000000000c00c13a *0000ac5905080000000000000c00cc3a0000045a05080000000000000c00d63a0000045a050800 *00000000000c00e13a00003c5a05080000000000000c00eb3a00003c5a05080000000000000c00 *f63a0000a05a05080000000000000c00003b0000a05a05080000000000000c000b3b0000dc5a05 *080000000000000c00153b0000dc5a05080000000000000c00203b0000285b0508000000000000 *0c002a3b0000285b05080000000000000c00353b0000885b05080000000000000c003f3b000088 *5b05080000000000000c00483b0000ac5b05080000000000000c00523b0000ac5b050800000000 *00000c005d3b0000d85b05080000000000000c00683b0000445c05080000000000000c00723b00 *00aca4110800000000000010007f3b0000745c05080000000000000c00883b0000b4a411080000 *000000001000953b0000885c05080000000000000c009f3b0000885c05080000000000000c00aa *3b0000e05c05080000000000000c00b33b0000c4a411080000000000001000c03b0000f45c0508 *0000000000000c00ca3b0000f45c05080000000000000c00d53b00004c5d05080000000000000c *00de3b0000545d05080000000000000c00e73b00005c5d05080000000000000c00f03b0000eca4 *11080000000000001000fd3b0000fca4110800000000000010000a3c00000ca511080000000000 *001000173c0000705d05080000000000000c00213c0000705d05080000000000000c002c3c0000 *d45d05080000000000000c00363c0000d45d05080000000000000c00413c0000385e0508000000 *0000000c004b3c0000385e05080000000000000c00563c0000905e05080000000000000c005f3c *00002ca5110800000000000010006c3c0000b45e05080000000000000c00753c00001ca5110800 *00000000001000823c0000307305080000000000000c008c3c0000c85e05080000000000000c00 *963c0000c85e05080000000000000c00a13c0000045f05080000000000000c00ab3c0000045f05 *080000000000000c00b43c0000505f05080000000000000c00be3c0000505f0508000000000000 *0c00c93c0000805f05080000000000000c00d43c0000945f05080000000000000c00de3c000094 *5f05080000000000000c00e93c0000e05f05080000000000000c00f33c0000e05f050800000000 *00000c00fe3c00001c6005080000000000000c00083d00001c6005080000000000000c00133d00 *00746005080000000000000c001d3d0000746005080000000000000c00283d0000a06005080000 *000000000c00333d0000f86005080000000000000c003d3d0000f86005080000000000000c0048 *3d0000346105080000000000000c00523d0000686105080000000000000c005c3d000078610508 *0000000000000c00663d0000786105080000000000000c00713d0000b46105080000000000000c *007b3d0000b46105080000000000000c00843d0000046205080000000000000c008e3d00000462 *05080000000000000c00993d0000386205080000000000000c00a33d0000386205080000000000 *000c00ae3d00008c6205080000000000000c00b83d00008c6205080000000000000c00c33d0000 *c86205080000000000000c00cd3d0000c86205080000000000000c00d63d000014630508000000 *0000000c00e03d0000146305080000000000000c00eb3d0000446305080000000000000c00f63d *0000586305080000000000000c00003e0000586305080000000000000c000b3e0000a463050800 *00000000000c00153e0000a46305080000000000000c00203e0000e06305080000000000000c00 *2a3e0000e06305080000000000000c00353e0000386405080000000000000c003f3e0000386405 *080000000000000c004a3e0000646405080000000000000c00553e0000bc640508000000000000 *0c005f3e0000bc6405080000000000000c006a3e0000f86405080000000000000c00743e00002c *6505080000000000000c007e3e00003c6505080000000000000c00883e00003c65050800000000 *00000c00933e0000786505080000000000000c009d3e0000786505080000000000000c00a63e00 *00c86505080000000000000c00b03e0000c86505080000000000000c00bb3e0000fc6505080000 *000000000c00c53e0000fc6505080000000000000c00d03e0000506605080000000000000c00da *3e0000506605080000000000000c00e53e0000a86605080000000000000c00ef3e0000a8660508 *0000000000000c00fa3e0000e46605080000000000000c00043f0000e46605080000000000000c *000d3f0000306705080000000000000c00173f0000306705080000000000000c00223f00006067 *05080000000000000c002d3f0000746705080000000000000c00373f0000746705080000000000 *000c00423f0000b86705080000000000000c004c3f0000b86705080000000000000c00573f0000 *e46705080000000000000c00623f0000386805080000000000000c006c3f000038680508000000 *0000000c00773f0000746805080000000000000c00813f0000a86805080000000000000c008b3f *0000b86805080000000000000c00953f0000b86805080000000000000c00a03f0000f468050800 *00000000000c00aa3f0000f46805080000000000000c00b33f0000446905080000000000000c00 *bd3f0000446905080000000000000c00c83f0000786905080000000000000c00d23f0000786905 *080000000000000c00dd3f0000cc6905080000000000000c00e73f0000cc690508000000000000 *0c00f23f0000246a05080000000000000c00fc3f0000246a05080000000000000c000740000060 *6a05080000000000000c0011400000606a05080000000000000c001a400000ac6a050800000000 *00000c0024400000ac6a05080000000000000c002f400000dc6a05080000000000000c003a4000 *00f06a05080000000000000c0044400000f06a05080000000000000c004f400000346b05080000 *000000000c0059400000346b05080000000000000c0064400000606b05080000000000000c006f *400000b46b05080000000000000c0079400000b46b05080000000000000c0084400000f06b0508 *0000000000000c008e400000246c05080000000000000c0098400000346c05080000000000000c *00a2400000346c05080000000000000c00ad400000706c05080000000000000c00b7400000706c *05080000000000000c00c0400000c06c05080000000000000c00ca400000c06c05080000000000 *000c00d5400000f46c05080000000000000c00df400000f46c05080000000000000c00ea400000 *486d05080000000000000c00f4400000486d05080000000000000c00ff400000a06d0508000000 *0000000c0009410000a06d05080000000000000c0014410000dc6d05080000000000000c001e41 *0000dc6d05080000000000000c0027410000286e05080000000000000c0031410000286e050800 *00000000000c003c410000586e05080000000000000c00474100006c6e05080000000000000c00 *514100006c6e05080000000000000c005c410000b06e05080000000000000c0066410000b06e05 *080000000000000c0071410000dc6e05080000000000000c007c410000306f0508000000000000 *0c0086410000306f05080000000000000c00914100006c6f05080000000000000c009b410000a0 *6f05080000000000000c00a5410000b06f05080000000000000c00af410000b06f050800000000 *00000c00ba410000ec6f05080000000000000c00c4410000ec6f05080000000000000c00cd4100 *003c7005080000000000000c00d74100003c7005080000000000000c00e2410000707005080000 *000000000c00ec410000707005080000000000000c00f7410000c47005080000000000000c0001 *420000c47005080000000000000c000c4200001c7105080000000000000c00164200001c710508 *0000000000000c0021420000587105080000000000000c002b420000587105080000000000000c *0034420000a47105080000000000000c003e420000a47105080000000000000c0049420000d471 *05080000000000000c0054420000d87105080000000000000c005f420000007205080000000000 *000c0069420000007205080000000000000c00744200003c7205080000000000000c007e420000 *707205080000000000000c0088420000807205080000000000000c009242000080720508000000 *0000000c009d420000b47205080000000000000c00a7420000b47205080000000000000c00b042 *0000fc7205080000000000000c00ba420000fc7205080000000000000c00c54200003073050800 *00000000000c00d0420000a87305080000000000000c00da420000a87305080000000000000c00 *e5420000007405080000000000000c00ee420000087405080000000000000c00f7420000107405 *080000000000000c000043000054a5110800000000000010000d43000064a51108000000000000 *10001a43000074a51108000000000000100027430000247405080000000000000c003143000024 *7405080000000000000c003c430000887405080000000000000c00464300008874050800000000 *00000c0051430000ec7405080000000000000c005b430000ec7405080000000000000c00664300 *00447505080000000000000c006f43000084a5110800000000000010007c430000e07805080000 *000000000c0086430000707505080000000000000c0090430000707505080000000000000c009b *430000ac7505080000000000000c00a5430000ac7505080000000000000c00ae430000f8750508 *0000000000000c00b8430000f87505080000000000000c00c3430000287605080000000000000c *00ce4300003c7605080000000000000c00d84300003c7605080000000000000c00e34300008876 *05080000000000000c00ed430000887605080000000000000c00f8430000c47605080000000000 *000c0002440000c47605080000000000000c000d4400001c7705080000000000000c0017440000 *1c7705080000000000000c0022440000487705080000000000000c002d440000a0770508000000 *0000000c0037440000a07705080000000000000c0042440000dc7705080000000000000c004c44 *0000107805080000000000000c0056440000207805080000000000000c00604400002078050800 *00000000000c006b4400005c7805080000000000000c00754400005c7805080000000000000c00 *7e440000ac7805080000000000000c0088440000ac7805080000000000000c0093440000e07805 *080000000000000c009e440000447905080000000000000c00a744000094a51108000000000000 *1000b4440000587905080000000000000c00be440000587905080000000000000c00c9440000b0 *7905080000000000000c00d2440000b8a511080000000000001000df440000c479050800000000 *00000c00e9440000c47905080000000000000c00f44400001c7a05080000000000000c00fd4400 *00c8a5110800000000000010000a4500002c7d05080000000000000c0014450000487a05080000 *000000000c001e450000487a05080000000000000c0029450000807a05080000000000000c0033 *450000807a05080000000000000c003e450000d47a05080000000000000c0048450000d47a0508 *0000000000000c0051450000f47a05080000000000000c005b450000f47a05080000000000000c *00664500002c7b05080000000000000c00704500002c7b05080000000000000c007b450000907b *05080000000000000c0085450000907b05080000000000000c0090450000cc7b05080000000000 *000c009a450000cc7b05080000000000000c00a5450000187c05080000000000000c00af450000 *187c05080000000000000c00ba450000787c05080000000000000c00c4450000787c0508000000 *0000000c00cd4500009c7c05080000000000000c00d74500009c7c05080000000000000c00e245 *0000d47c05080000000000000c00ec450000d47c05080000000000000c00f54500002c7d050800 *00000000000c0000460000d0a5110800000000000010000d4600004c7d05080000000000000c00 *16460000d8a51108000000000000100023460000607d05080000000000000c002d460000607d05 *080000000000000c0038460000b87d05080000000000000c0041460000e8a51108000000000000 *10004e460000cc7d05080000000000000c0058460000cc7d05080000000000000c006346000024 *7e05080000000000000c006c4600000ca61108000000000000100079460000387e050800000000 *00000c0083460000387e05080000000000000c008e460000907e05080000000000000c00974600 *00987e05080000000000000c00a0460000a07e05080000000000000c00a946000034a611080000 *000000001000b646000044a611080000000000001000c346000054a611080000000000001000d0 *460000b47e05080000000000000c00da460000b47e05080000000000000c00e5460000187f0508 *0000000000000c00ef460000187f05080000000000000c00fa4600007c7f05080000000000000c *00044700007c7f05080000000000000c000f470000d47f05080000000000000c001847000074a6 *1108000000000000100025470000e87f05080000000000000c002f470000e87f05080000000000 *000c003a470000408005080000000000000c0043470000488005080000000000000c004c470000 *508005080000000000000c0055470000588005080000000000000c005e47000060800508000000 *0000000c0067470000688005080000000000000c0070470000aca6110800000000000010007d47 *0000bca6110800000000000010008a470000cca61108000000000000100097470000dca6110800 *00000000001000a4470000eca611080000000000001000b1470000fca611080000000000001000 *be4700007c8005080000000000000c00c84700007c8005080000000000000c00d3470000e08005 *080000000000000c00dd470000e08005080000000000000c00e847000044810508000000000000 *0c00f2470000448105080000000000000c00fd470000a88105080000000000000c0007480000a8 *8105080000000000000c00124800000c8205080000000000000c001c4800000c82050800000000 *00000c0027480000708205080000000000000c0031480000708205080000000000000c003c4800 *00dc8205080000000000000c0047480000ec8205080000000000000c0052480000048305080000 *000000000c005c480000048305080000000000000c0065480000448305080000000000000c0070 *480000608305080000000000000c007a480000608305080000000000000c0083480000a0830508 *0000000000000c008e480000c08305080000000000000c0098480000c08305080000000000000c *00a3480000f88305080000000000000c00ad480000f88305080000000000000c00b84800002484 *05080000000000000c00c3480000808405080000000000000c00cd480000808405080000000000 *000c00d8480000b88405080000000000000c00e2480000b88405080000000000000c00ed480000 *e48405080000000000000c00f8480000588505080000000000000c00024900009c850508000000 *0000000c000d490000c08505080000000000000c0017490000c08505080000000000000c002249 *0000e48505080000000000000c002d490000448605080000000000000c00374900004486050800 *00000000000c0042490000688605080000000000000c004d490000b48605080000000000000c00 *57490000b48605080000000000000c0062490000d88605080000000000000c006d490000248705 *080000000000000c0077490000248705080000000000000c008249000054870508000000000000 *0c008c490000548705080000000000000c0097490000908705080000000000000c00a149000090 *8705080000000000000c00ac490000f08705080000000000000c00b6490000f087050800000000 *00000c00c1490000208805080000000000000c00cb490000208805080000000000000c00d44900 *00788805080000000000000c00df4900008c8805080000000000000c00e94900008c8805080000 *000000000c00f4490000b08805080000000000000c00ff490000188905080000000000000c0009 *4a0000188905080000000000000c00144a0000348905080000000000000c001f4a000048890508 *0000000000000c00294a0000488905080000000000000c00344a00006c8905080000000000000c *003f4a0000d48905080000000000000c00494a0000d48905080000000000000c00544a0000f089 *05080000000000000c005e4a00001c8a05080000000000000c00684a00001c8a05080000000000 *000c00734a0000348a05080000000000000c007e4a0000488a05080000000000000c00884a0000 *488a05080000000000000c00934a00006c8a05080000000000000c009e4a0000d48a0508000000 *0000000c00a84a0000d48a05080000000000000c00b34a0000f88a05080000000000000c00bd4a *0000248b05080000000000000c00c74a0000248b05080000000000000c00d24a00003c8b050800 *00000000000c00dd4a0000508b05080000000000000c00e74a0000508b05080000000000000c00 *f24a0000748b05080000000000000c00fd4a0000dc8b05080000000000000c00074b0000dc8b05 *080000000000000c00124b0000008c05080000000000000c001c4b00002c8c0508000000000000 *0c00264b00002c8c05080000000000000c00314b0000448c05080000000000000c003b4b000070 *8c05080000000000000c00454b0000708c05080000000000000c00504b0000988c050800000000 *00000c005a4b0000988c05080000000000000c00654b0000c88c05080000000000000c006f4b00 *00c88c05080000000000000c007a4b0000048d05080000000000000c00844b0000048d05080000 *000000000c008f4b0000648d05080000000000000c00994b0000648d05080000000000000c00a4 *4b0000888d05080000000000000c00af4b0000f48d05080000000000000c00b94b0000208e0508 *0000000000000c00c24b00001ca711080000000000001000cf4b0000309505080000000000000c *00d94b00002c8e05080000000000000c00e44b00003c8e05080000000000000c00ef4b00004c8e *05080000000000000c00fa4b00005c8e05080000000000000c00054c00006c8e05080000000000 *000c00104c00007c8e05080000000000000c001b4c0000b08e05080000000000000c00254c0000 *b08e05080000000000000c00304c0000c08e05080000000000000c003b4c0000d08e0508000000 *0000000c00464c0000e08e05080000000000000c00514c0000f08e05080000000000000c005c4c *0000008f05080000000000000c00674c0000108f05080000000000000c00724c0000448f050800 *00000000000c007c4c0000448f05080000000000000c00874c0000548f05080000000000000c00 *924c0000648f05080000000000000c009d4c0000748f05080000000000000c00a84c0000848f05 *080000000000000c00b34c0000948f05080000000000000c00be4c0000a48f0508000000000000 *0c00c94c0000d88f05080000000000000c00d34c0000d88f05080000000000000c00de4c0000e8 *8f05080000000000000c00e94c0000f88f05080000000000000c00f44c00000890050800000000 *00000c00ff4c0000189005080000000000000c000a4d0000289005080000000000000c00154d00 *00389005080000000000000c00204d00006c9005080000000000000c002a4d00006c9005080000 *000000000c00354d00007c9005080000000000000c00404d00008c9005080000000000000c004b *4d00009c9005080000000000000c00564d0000ac9005080000000000000c00614d0000bc900508 *0000000000000c006c4d0000cc9005080000000000000c00774d0000009105080000000000000c *00814d0000009105080000000000000c008c4d0000109105080000000000000c00974d00002091 *05080000000000000c00a24d0000309105080000000000000c00ad4d0000409105080000000000 *000c00b84d0000509105080000000000000c00c34d0000609105080000000000000c00ce4d0000 *949105080000000000000c00d84d0000949105080000000000000c00e34d0000c8910508000000 *0000000c00ed4d0000d09105080000000000000c00f74d0000d09105080000000000000c00004e *0000e09105080000000000000c000b4e0000e49105080000000000000c00164e0000f891050800 *00000000000c00204e0000249205080000000000000c002a4e0000249205080000000000000c00 *354e00003c9205080000000000000c00404e0000509205080000000000000c004a4e00007c9205 *080000000000000c00544e00007c9205080000000000000c005f4e000094920508000000000000 *0c006a4e0000a89205080000000000000c00744e0000d49205080000000000000c007e4e0000d4 *9205080000000000000c00894e0000f89205080000000000000c00934e0000f892050800000000 *00000c009e4e0000309505080000000000000c00a94e0000309305080000000000000c00b34e00 *00309305080000000000000c00be4e00005c9305080000000000000c00c94e0000ac9305080000 *000000000c00d34e0000d89305080000000000000c00dd4e0000d89305080000000000000c00e8 *4e0000009405080000000000000c00f24e0000009405080000000000000c00fd4e000038940508 *0000000000000c00074f0000389405080000000000000c00124f0000649405080000000000000c *001d4f0000b49405080000000000000c00274f0000e09405080000000000000c00314f0000e094 *05080000000000000c003c4f0000209505080000000000000c00464f0000509505080000000000 *000c004f4f000024a7110800000000000010005c4f00009c9505080000000000000c00664f0000 *649505080000000000000c00704f0000649505080000000000000c007b4f00009c950508000000 *0000000c00864f0000d89505080000000000000c008f4f00003ca7110800000000000010009c4f *0000109705080000000000000c00a64f0000f09505080000000000000c00b04f0000f095050800 *00000000000c00bb4f0000249605080000000000000c00c54f0000249605080000000000000c00 *ce4f0000449605080000000000000c00d84f0000449605080000000000000c00e34f0000849605 *080000000000000c00ed4f0000849605080000000000000c00f64f0000e0960508000000000000 *0c0000500000e09605080000000000000c0009500000109705080000000000000c00145000002c *9705080000000000000c001d50000044a7110800000000000010002a5000007897050800000000 *00000c0034500000409705080000000000000c003e500000409705080000000000000c00495000 *00789705080000000000000c0054500000bc9705080000000000000c005e500000bc9705080000 *000000000c0067500000e49705080000000000000c0071500000e49705080000000000000c007a *5000004c9805080000000000000c00845000004c9805080000000000000c008d5000009c980508 *0000000000000c00975000009c9805080000000000000c00a0500000209a05080000000000000c *00ab500000309a05080000000000000c00b65000005c9a05080000000000000c00c15000009c9a *05080000000000000c00cb5000009c9a05080000000000000c00d6500000bc9a05080000000000 *000c00e0500000bc9a05080000000000000c00eb500000c89a05080000000000000c00f6500000 *fc9a05080000000000000c0000510000fc9a05080000000000000c00095100002c9b0508000000 *0000000c0014510000409b05080000000000000c001e510000409b05080000000000000c002751 *0000709b05080000000000000c0032510000909b05080000000000000c003c510000909b050800 *00000000000c0047510000b09b05080000000000000c0051510000b09b05080000000000000c00 *5c510000d09b05080000000000000c0066510000e89b05080000000000000c0071510000209c05 *080000000000000c007c510000649c05080000000000000c0087510000a89c0508000000000000 *0c0092510000e09c05080000000000000c009d510000389d05080000000000000c00a8510000b4 *9d05080000000000000c00b2510000149e05080000000000000c00bc510000149e050800000000 *00000c00c5510000649e05080000000000000c00cf510000649e05080000000000000c00d85100 *00b49f05080000000000000c00e0510000a0a711080000000000001000ec510000cca205080000 *000000000c00f5510000c89f05080000000000000c00fe510000c89f05080000000000000c0008 *520000f89f05080000000000000c001252000030a005080000000000000c001b52000030a00508 *0000000000000c002552000060a005080000000000000c002f52000098a005080000000000000c *003852000098a005080000000000000c0042520000c8a005080000000000000c004c52000000a1 *05080000000000000c005552000000a105080000000000000c005f52000030a105080000000000 *000c006952000068a105080000000000000c007252000068a105080000000000000c007c520000 *98a105080000000000000c0086520000d0a105080000000000000c008f520000d0a10508000000 *0000000c009952000000a205080000000000000c00a352000038a205080000000000000c00ac52 *000038a205080000000000000c00b652000068a205080000000000000c00c0520000bca2050800 *00000000000c00c9520000cca205080000000000000c00d3520000a8a711080000000000001000 *df520000dca205080000000000000c00e7520000b0a711080000000000001000f3520000f0a205 *080000000000000c00fc520000f0a205080000000000000c000653000048a30508000000000000 *0c000e530000c0a7110800000000000010001a5300005ca305080000000000000c00235300005c *a305080000000000000c002d530000b4a305080000000000000c0035530000d0a7110800000000 *0000100041530000a0a705080000000000000c004a530000c8a305080000000000000c00535300 *00c8a305080000000000000c005b530000e8a305080000000000000c0064530000e8a305080000 *000000000c006e5300001ca405080000000000000c00775300001ca405080000000000000c0081 *53000054a405080000000000000c008a53000054a405080000000000000c009253000074a40508 *0000000000000c009b53000074a405080000000000000c00a5530000a8a405080000000000000c *00ae530000a8a405080000000000000c00b8530000e0a405080000000000000c00c1530000e0a4 *05080000000000000c00c953000000a505080000000000000c00d253000000a505080000000000 *000c00dc53000034a505080000000000000c00e553000034a505080000000000000c00ef530000 *6ca505080000000000000c00f85300006ca505080000000000000c00005400008ca50508000000 *0000000c00095400008ca505080000000000000c0013540000c0a505080000000000000c001c54 *0000c0a505080000000000000c0026540000f8a505080000000000000c002f540000f8a5050800 *00000000000c003754000018a605080000000000000c004054000018a605080000000000000c00 *4a5400004ca605080000000000000c00535400004ca605080000000000000c005d54000084a605 *080000000000000c006654000084a605080000000000000c006e540000a4a60508000000000000 *0c0077540000a4a605080000000000000c0081540000d8a605080000000000000c008a540000d8 *a605080000000000000c009454000010a705080000000000000c009d54000010a7050800000000 *00000c00a554000030a705080000000000000c00ae54000030a705080000000000000c00b85400 *0064a705080000000000000c00c154000064a705080000000000000c00cb540000a0a705080000 *000000000c00d554000004aa05080000000000000c00dd540000e0a711080000000000001000e9 *54000018aa05080000000000000c00f254000018aa05080000000000000c00fc540000f0a71108 *0000000000001000085500005cad05080000000000000c001155000070aa05080000000000000c *001b55000080aa05080000000000000c0024550000b8aa05080000000000000c002d550000b8aa *05080000000000000c0037550000c8aa05080000000000000c0041550000d8aa05080000000000 *000c004a55000010ab05080000000000000c005355000010ab05080000000000000c005d550000 *20ab05080000000000000c006755000030ab05080000000000000c007055000068ab0508000000 *0000000c007955000068ab05080000000000000c008355000078ab05080000000000000c008d55 *000088ab05080000000000000c0096550000c0ab05080000000000000c009f550000c0ab050800 *00000000000c00a9550000d0ab05080000000000000c00b3550000e0ab05080000000000000c00 *bc55000018ac05080000000000000c00c555000018ac05080000000000000c00cf55000028ac05 *080000000000000c00d955000038ac05080000000000000c00e255000070ac0508000000000000 *0c00eb55000070ac05080000000000000c00f555000080ac05080000000000000c00ff55000090 *ac05080000000000000c0009560000a0ac05080000000000000c0013560000b0ac050800000000 *00000c001d560000c0ac05080000000000000c0027560000d0ac05080000000000000c00315600 *00e0ac05080000000000000c003b56000018ad05080000000000000c004456000018ad05080000 *000000000c004e56000050ad05080000000000000c00575600005cad05080000000000000c0061 *56000068ad05080000000000000c0069560000f4a71108000000000000100075560000acad0508 *0000000000000c007e56000074ad05080000000000000c008756000074ad05080000000000000c *0091560000acad05080000000000000c009b560000e8ad05080000000000000c00a3560000f0ad *05080000000000000c00ab560000f8ad05080000000000000c00b356000024a811080000000000 *001000bf56000034a811080000000000001000cb56000044a811080000000000001000d7560000 *0cae05080000000000000c00e05600000cae05080000000000000c00ea56000070ae0508000000 *0000000c00f356000070ae05080000000000000c00fd560000d4ae05080000000000000c000657 *0000d4ae05080000000000000c00105700002caf05080000000000000c001857000068a8110800 *000000000010002457000040af05080000000000000c002d57000040af05080000000000000c00 *3757000098af05080000000000000c0041570000a8af05080000000000000c004b570000b8af05 *080000000000000c0055570000dcaf05080000000000000c005e570000dcaf0508000000000000 *0c0068570000fcaf05080000000000000c0071570000fcaf05080000000000000c007b57000008 *b005080000000000000c008557000018b005080000000000000c008f5700003cb0050800000000 *00000c00985700003cb005080000000000000c00a257000048b005080000000000000c00ac5700 *0058b005080000000000000c00b65700007cb005080000000000000c00bf5700007cb005080000 *000000000c00c95700009cb005080000000000000c00d25700009cb005080000000000000c00dc *570000bcb005080000000000000c00e5570000d4b005080000000000000c00ef5700000cb10508 *0000000000000c00f957000054b105080000000000000c00035800009cb105080000000000000c *000d580000e4b105080000000000000c00175800002cb205080000000000000c002158000074b2 *05080000000000000c002b580000e4b205080000000000000c0034580000a0a811080000000000 *001000415800002cb505080000000000000c004b58000054b405080000000000000c0056580000 *64b405080000000000000c00615800007cb405080000000000000c006b5800007cb40508000000 *0000000c00765800002cb505080000000000000c0081580000a0b405080000000000000c008c58 *0000f4b405080000000000000c0096580000f4b405080000000000000c00a158000020b5050800 *00000000000c00ab580000a4a811080000000000001000b8580000aca811080000000000001000 *c558000048b505080000000000000c00ce580000b4a811080000000000001000db5800005cb505 *080000000000000c00e55800005cb505080000000000000c00f0580000b4b50508000000000000 *0c00f9580000c4a81108000000000000100006590000ccb505080000000000000c0010590000cc *b505080000000000000c001b5900002cb605080000000000000c0024590000d4a8110800000000 *000010003159000040b605080000000000000c003b59000040b605080000000000000c00465900 *0098b605080000000000000c004f590000e4a8110800000000000010005c590000acb605080000 *000000000c0066590000acb605080000000000000c007159000004b705080000000000000c007a *590000f4a8110800000000000010008759000018b705080000000000000c009159000018b70508 *0000000000000c009c59000070b705080000000000000c00a559000004a9110800000000000010 *00b259000084b705080000000000000c00bc59000084b705080000000000000c00c7590000dcb7 *05080000000000000c00d059000014a911080000000000001000dd590000f0b705080000000000 *000c00e7590000f0b705080000000000000c00f259000048b805080000000000000c00fb590000 *24a911080000000000001000085a000068b805080000000000000c00125a000054b80508000000 *0000000c001c5a000054b805080000000000000c00255a000068b805080000000000000c00305a *0000e4b805080000000000000c003a5a0000e4b805080000000000000c00455a000034b9050800 *00000000000c004f5a000034b905080000000000000c005a5a000094b905080000000000000c00 *645a000094b905080000000000000c006f5a0000ecb905080000000000000c00795a0000ecb905 *080000000000000c00845a000048ba05080000000000000c008e5a000048ba0508000000000000 *0c00995a000080ba05080000000000000c00a35a000080ba05080000000000000c00ac5a0000f8 *ba05080000000000000c00b55a00003ca911080000000000001000c25a00000cbb050800000000 *00000c00cc5a00000cbb05080000000000000c00d75a000064bb05080000000000000c00e05a00 *004ca911080000000000001000ed5a000078bb05080000000000000c00f75a000078bb05080000 *000000000c00025b0000d0bb05080000000000000c000b5b00005ca91108000000000000100018 *5b0000e4bb05080000000000000c00225b0000e4bb05080000000000000c002d5b00003cbc0508 *0000000000000c00365b00006ca911080000000000001000435b000050bc05080000000000000c *004d5b000050bc05080000000000000c00585b0000a8bc05080000000000000c00615b00007ca9 *110800000000000010006e5b0000bcbc05080000000000000c00785b0000bcbc05080000000000 *000c00835b00004cbd05080000000000000c008d5b00004cbd05080000000000000c00985b0000 *88bd05080000000000000c00a25b000088bd05080000000000000c00ad5b0000ccbd0508000000 *0000000c00b85b000008be05080000000000000c00c25b000008be05080000000000000c00cd5b *000044be05080000000000000c00d75b000044be05080000000000000c00e25b000080be050800 *00000000000c00ec5b000080be05080000000000000c00f75b0000d8be05080000000000000c00 *015c0000d8be05080000000000000c000c5c000030bf05080000000000000c00165c000030bf05 *080000000000000c00215c000084bf05080000000000000c002b5c000084bf0508000000000000 *0c00345c0000a8bf05080000000000000c003e5c0000a8bf05080000000000000c00495c0000e0 *bf05080000000000000c00535c0000e0bf05080000000000000c005e5c000030c0050800000000 *00000c00685c000030c005080000000000000c00735c000090c005080000000000000c007e5c00 *00f8c005080000000000000c00885c000008c105080000000000000c00925c000008c105080000 *000000000c009d5c000048c105080000000000000c00a75c000048c105080000000000000c00b2 *5c00007cc105080000000000000c00bc5c00007cc105080000000000000c00c55c000008c20508 *0000000000000c00ce5c000094a911080000000000001000db5c00000cc405080000000000000c *00e55c000030c205080000000000000c00ef5c000030c205080000000000000c00fa5c000090c2 *05080000000000000c00045d000090c205080000000000000c000f5d0000ccc205080000000000 *000c00195d0000ccc205080000000000000c00245d00002cc305080000000000000c002e5d0000 *2cc305080000000000000c00395d000084c305080000000000000c00435d000084c30508000000 *0000000c004e5d0000bcc305080000000000000c00585d0000bcc305080000000000000c00615d *00000cc405080000000000000c006c5d00005cc405080000000000000c00765d00005cc4050800 *00000000000c00815d000098c405080000000000000c008b5d000098c405080000000000000c00 *965d0000d4c405080000000000000c00a05d0000d4c405080000000000000c00ab5d00002cc505 *080000000000000c00b55d00002cc505080000000000000c00c05d000084c50508000000000000 *0c00ca5d000084c505080000000000000c00d55d0000d8c505080000000000000c00df5d0000d8 *c505080000000000000c00e85d0000fcc505080000000000000c00f25d0000fcc5050800000000 *00000c00fd5d000034c605080000000000000c00075e000034c605080000000000000c00125e00 *0084c605080000000000000c001c5e000084c605080000000000000c00275e0000f0c605080000 *000000000c00315e0000f0c605080000000000000c003a5e000084c705080000000000000c0045 *5e000098c705080000000000000c00505e0000bcc705080000000000000c005a5e0000c8c70508 *0000000000000c00645e0000c8c705080000000000000c006d5e0000f8c705080000000000000c *00775e0000f8c705080000000000000c00825e000028c805080000000000000c008c5e000028c8 *05080000000000000c00955e0000c4c805080000000000000c009f5e0000c4c805080000000000 *000c00aa5e000000c905080000000000000c00b45e000000c905080000000000000c00bf5e0000 *5cc905080000000000000c00c95e00005cc905080000000000000c00d45e000098c90508000000 *0000000c00de5e000098c905080000000000000c00e95e0000f0c905080000000000000c00f35e *0000f0c905080000000000000c00fe5e000048ca05080000000000000c00085f000048ca050800 *00000000000c00135f00009cca05080000000000000c001d5f00009cca05080000000000000c00 *265f0000c0ca05080000000000000c00305f0000c0ca05080000000000000c003b5f0000f8ca05 *080000000000000c00455f0000f8ca05080000000000000c00505f000048cb0508000000000000 *0c005a5f000048cb05080000000000000c00655f0000b4cb05080000000000000c006f5f0000b4 *cb05080000000000000c00785f000054cc05080000000000000c00825f000054cc050800000000 *00000c008d5f0000dccc05080000000000000c00965f0000bca911080000000000001000a35f00 *0014cd05080000000000000c00ad5f0000eccc05080000000000000c00b75f0000eccc05080000 *000000000c00c05f000014cd05080000000000000c00cb5f0000a8cd05080000000000000c00d6 *5f0000b8cd05080000000000000c00e15f00007cce05080000000000000c00ec5f0000cccd0508 *0000000000000c00f75f000024ce05080000000000000c00016000002cce05080000000000000c *000b6000002cce05080000000000000c001460000044ce05080000000000000c001f60000070ce *05080000000000000c00296000007cce05080000000000000c0033600000a4ce05080000000000 *000c003d600000a4ce05080000000000000c0048600000ecce05080000000000000c0052600000 *ecce05080000000000000c005d60000030cf05080000000000000c006760000030cf0508000000 *0000000c007260000064cf05080000000000000c007c60000064cf05080000000000000c008760 *0000b0cf05080000000000000c0092600000cccf05080000000000000c009c600000cccf050800 *00000000000c00a7600000fccf05080000000000000c00b260000068d005080000000000000c00 *bc60000078d005080000000000000c00c660000078d005080000000000000c00d1600000b0d005 *080000000000000c00db600000b0d005080000000000000c00e6600000f8d00508000000000000 *0c00f0600000f8d005080000000000000c00fb60000054d105080000000000000c000561000054 *d105080000000000000c0010610000a0d105080000000000000c001a610000a0d1050800000000 *00000c0025610000d8d105080000000000000c002f610000d8d105080000000000000c003a6100 *0038d205080000000000000c004461000038d205080000000000000c004f610000acd205080000 *000000000c0059610000acd205080000000000000c006261000068d305080000000000000c006c *61000068d305080000000000000c0077610000a4d305080000000000000c0081610000a4d30508 *0000000000000c008c610000e0d305080000000000000c0096610000e0d305080000000000000c *00a161000030d405080000000000000c00ab61000030d405080000000000000c00b661000088d4 *05080000000000000c00c061000088d405080000000000000c00cb610000c4d405080000000000 *000c00d5610000c4d405080000000000000c00e061000028d505080000000000000c00ea610000 *28d505080000000000000c00f56100007cd505080000000000000c00ff6100007cd50508000000 *0000000c0008620000a0d505080000000000000c0012620000a0d505080000000000000c001d62 *0000d8d505080000000000000c0027620000d8d505080000000000000c003262000028d6050800 *00000000000c003c62000028d605080000000000000c004762000094d605080000000000000c00 *5162000094d605080000000000000c005a62000090d705080000000000000c00646200009cd705 *080000000000000c006e620000a8d705080000000000000c0078620000c0d70508000000000000 *0c0082620000c0d705080000000000000c008d620000f4d705080000000000000c0097620000f4 *d705080000000000000c00a262000028d805080000000000000c00ac62000028d8050800000000 *00000c00b56200006cd805080000000000000c00bf6200006cd805080000000000000c00ca6200 *00a4d805080000000000000c00d4620000a4d805080000000000000c00df620000e8d805080000 *000000000c00ea62000020d905080000000000000c00f56200003cd905080000000000000c00ff *62000048d905080000000000000c000963000048d905080000000000000c001463000084d90508 *0000000000000c001e63000098d905080000000000000c002863000098d905080000000000000c *0033630000c0d905080000000000000c003d630000ccd905080000000000000c0048630000e8d9 *05080000000000000c0052630000e8d905080000000000000c005d63000024da05080000000000 *000c006763000024da05080000000000000c007263000080da05080000000000000c007c630000 *80da05080000000000000c0085630000e4da05080000000000000c009063000010db0508000000 *0000000c009a63000020db05080000000000000c00a463000020db05080000000000000c00af63 *000058db05080000000000000c00b963000058db05080000000000000c00c463000094db050800 *00000000000c00ce63000094db05080000000000000c00d9630000fcdb05080000000000000c00 *e3630000fcdb05080000000000000c00ee63000060dc05080000000000000c00f863000060dc05 *080000000000000c0003640000c8dc05080000000000000c000d640000d4dc0508000000000000 *0c0017640000e0dc05080000000000000c0021640000ecdc05080000000000000c002b640000f8 *dc05080000000000000c003564000004dd05080000000000000c004064000020dd050800000000 *00000c004a64000020dd05080000000000000c005564000054dd05080000000000000c005f6400 *0054dd05080000000000000c006a64000098dd05080000000000000c0075640000a8df05080000 *000000000c0080640000b8dd05080000000000000c008a640000b8dd05080000000000000c0095 *640000f4dd05080000000000000c009f640000f4dd05080000000000000c00aa6400004cde0508 *0000000000000c00b46400004cde05080000000000000c00bf64000098de05080000000000000c *00ca64000004df05080000000000000c00d464000010df05080000000000000c00de64000010df *05080000000000000c00e764000064df05080000000000000c00f264000098df05080000000000 *000c00fc640000a8df05080000000000000c0006650000dcdf05080000000000000c0010650000 *dcdf05080000000000000c001b65000028e005080000000000000c002565000028e00508000000 *0000000c003065000080e005080000000000000c003a65000080e005080000000000000c004565 *0000b8e005080000000000000c004f650000b8e005080000000000000c005a65000004e1050800 *00000000000c006465000004e105080000000000000c006f6500006ce105080000000000000c00 *796500006ce105080000000000000c0084650000fce105080000000000000c008e65000008e205 *080000000000000c009865000014e205080000000000000c00a265000020e20508000000000000 *0c00ac6500002ce205080000000000000c00b665000044e205080000000000000c00c065000044 *e205080000000000000c00cb65000088e205080000000000000c00d565000094e2050800000000 *00000c00df650000a0e205080000000000000c00e9650000ace205080000000000000c00f36500 *00c0e205080000000000000c00fd650000c0e205080000000000000c0006660000d4e205080000 *000000000c0010660000d4e205080000000000000c001b6600000ce305080000000000000c0025 *6600000ce305080000000000000c003066000048e305080000000000000c003a66000048e30508 *0000000000000c0045660000a8e305080000000000000c004f660000a8e305080000000000000c *005a66000000e405080000000000000c006466000000e405080000000000000c006f6600003ce4 *05080000000000000c00796600003ce405080000000000000c0084660000a0e405080000000000 *000c008e660000a0e405080000000000000c0099660000f8e405080000000000000c00a3660000 *f8e405080000000000000c00ae66000058e505080000000000000c00b866000058e50508000000 *0000000c00c36600008ce505080000000000000c00cd6600008ce505080000000000000c00d866 *000000e605080000000000000c00e266000000e605080000000000000c00ed66000070e6050800 *00000000000c00f766000070e605080000000000000c0002670000d4e605080000000000000c00 *0c670000d4e605080000000000000c001767000048e705080000000000000c002167000048e705 *080000000000000c002c670000b8e705080000000000000c0036670000b8e70508000000000000 *0c004167000050e805080000000000000c004b67000050e805080000000000000c00566700008c *e805080000000000000c00606700008ce805080000000000000c0069670000eca9110800000000 *000010007667000048e905080000000000000c008067000048e905080000000000000c008b6700 *0084e905080000000000000c009567000084e905080000000000000c00a0670000d4e905080000 *000000000c00aa670000d4e905080000000000000c00b567000010ea05080000000000000c00bf *67000010ea05080000000000000c00ca670000b4ea05080000000000000c00d36700000caa1108 *0000000000001000e067000050eb05080000000000000c00ea670000d4ea05080000000000000c *00f4670000d4ea05080000000000000c00ff67000010eb05080000000000000c000968000010eb *05080000000000000c001268000050eb05080000000000000c001d680000d8eb05080000000000 *000c0027680000d8eb05080000000000000c003068000014ec05080000000000000c003a680000 *14ec05080000000000000c004568000044ec05080000000000000c004f68000044ec0508000000 *0000000c005868000054ec05080000000000000c006268000054ec05080000000000000c006b68 *00006cec05080000000000000c00756800006cec05080000000000000c0080680000a4ec050800 *00000000000c008a680000a4ec05080000000000000c0095680000e0ec05080000000000000c00 *9f680000e0ec05080000000000000c00aa68000040ed05080000000000000c00b468000040ed05 *080000000000000c00bf68000098ed05080000000000000c00c968000098ed0508000000000000 *0c00d4680000f4ed05080000000000000c00de680000f4ed05080000000000000c00e968000028 *ee05080000000000000c00f368000028ee05080000000000000c00fe6800006cee050800000000 *00000c0009690000c0ee05080000000000000c0013690000c0ee05080000000000000c001c6900 *00d4ee05080000000000000c0026690000d4ee05080000000000000c003169000008ef05080000 *000000000c003c69000058f005080000000000000c004769000054ef05080000000000000c0051 *69000064ef05080000000000000c005b69000064ef05080000000000000c0066690000b0ef0508 *0000000000000c0070690000b0ef05080000000000000c007b690000e4ef05080000000000000c *0085690000e4ef05080000000000000c008e69000058f005080000000000000c0098690000bcf0 *05080000000000000c00a2690000bcf005080000000000000c00ad690000e4f005080000000000 *000c00b7690000e4f005080000000000000c00c069000094f105080000000000000c00cb690000 *acf105080000000000000c00d5690000acf105080000000000000c00e0690000a0f40508000000 *0000000c00eb690000d4f105080000000000000c00f669000014f205080000000000000c00016a *000060f205080000000000000c000b6a000060f205080000000000000c00166a00007cfb050800 *00000000000c00216a000098f205080000000000000c002b6a000098f205080000000000000c00 *346a000044f305080000000000000c003f6a000070f305080000000000000c00496a000078f305 *080000000000000c00536a000078f305080000000000000c005c6a0000d8f30508000000000000 *0c00676a000004f405080000000000000c00716a00000cf405080000000000000c007b6a00000c *f405080000000000000c00846a000068f405080000000000000c008f6a000094f4050800000000 *00000c00996a0000a0f405080000000000000c00a36a0000c8f405080000000000000c00ae6a00 *00d8f405080000000000000c00b96a0000f4f405080000000000000c00c36a0000f4f405080000 *000000000c00cc6a000018f505080000000000000c00d66a000018f505080000000000000c00e1 *6a000050f505080000000000000c00eb6a000050f505080000000000000c00f46a00009cf50508 *0000000000000c00ff6a0000c8f505080000000000000c00096b0000d4f505080000000000000c *00136b0000d4f505080000000000000c001c6b0000f4f505080000000000000c00276b00001cf6 *05080000000000000c00316b000028f605080000000000000c003b6b000028f605080000000000 *000c00446b000034f605080000000000000c004f6b000040f605080000000000000c00596b0000 *40f605080000000000000c00646b000070f605080000000000000c006f6b0000c8f60508000000 *0000000c00796b0000d4f605080000000000000c00836b0000d4f605080000000000000c008c6b *0000f8f605080000000000000c00966b0000f8f605080000000000000c009f6b000004f7050800 *00000000000c00aa6b000008f705080000000000000c00b56b000014f705080000000000000c00 *bf6b000014f705080000000000000c00c86b000038f705080000000000000c00d26b000038f705 *080000000000000c00dd6b000070f705080000000000000c00e76b000070f70508000000000000 *0c00f06b0000bcf705080000000000000c00fb6b0000e8f705080000000000000c00056c0000f4 *f705080000000000000c000f6c0000f4f705080000000000000c00186c000014f8050800000000 *00000c00236c000040f805080000000000000c002d6c00004cf805080000000000000c00376c00 *004cf805080000000000000c00406c000058f805080000000000000c004b6c000060f805080000 *000000000c00566c00006cf805080000000000000c00606c00006cf805080000000000000c0069 *6c000090f805080000000000000c00736c000090f805080000000000000c007e6c0000c0f80508 *0000000000000c00886c0000c0f805080000000000000c00936c000018f905080000000000000c *009d6c000018f905080000000000000c00a66c000064f905080000000000000c00b16c000090f9 *05080000000000000c00bb6c000090f905080000000000000c00c66c000098f905080000000000 *000c00d16c0000a0f905080000000000000c00dc6c0000a8f905080000000000000c00e76c0000 *28fa05080000000000000c00f16c000034fa05080000000000000c00fb6c000034fa0508000000 *0000000c00046d000050fa05080000000000000c000f6d00007cfa05080000000000000c00196d *000088fa05080000000000000c00236d000088fa05080000000000000c002c6d0000a8fa050800 *00000000000c00376d0000d4fa05080000000000000c00416d0000e0fa05080000000000000c00 *4b6d0000e0fa05080000000000000c00546d000018fb05080000000000000c005f6d000044fb05 *080000000000000c00696d000050fb05080000000000000c00736d000050fb0508000000000000 *0c007c6d00007cfb05080000000000000c00866d00006cfc05080000000000000c00906d00006c *fc05080000000000000c009b6d0000a8fc05080000000000000c00a56d0000a8fc050800000000 *00000c00b06d0000e4fc05080000000000000c00ba6d0000e4fc05080000000000000c00c56d00 *0020fd05080000000000000c00cf6d000020fd05080000000000000c00d86d000098fd05080000 *000000000c00e26d000098fd05080000000000000c00eb6d0000ccfd05080000000000000c00f5 *6d0000ccfd05080000000000000c00006e0000e4fd05080000000000000c000a6e0000f0fd0508 *0000000000000c00146e0000fcfd05080000000000000c001f6e000040fe05080000000000000c *00296e000040fe05080000000000000c00346e000070fe05080000000000000c003e6e000088fe *05080000000000000c00486e000088fe05080000000000000c00536e0000b8fe05080000000000 *000c005d6e0000d0fe05080000000000000c00676e0000d0fe05080000000000000c00726e0000 *00ff05080000000000000c007c6e000018ff05080000000000000c00866e000018ff0508000000 *0000000c00916e000048ff05080000000000000c009b6e000060ff05080000000000000c00a56e *000060ff05080000000000000c00b06e000090ff05080000000000000c00ba6e0000a8ff050800 *00000000000c00c46e0000a8ff05080000000000000c00cf6e0000d8ff05080000000000000c00 *da6e0000100006080000000000000c00e56e00005c0006080000000000000c00ef6e00005c0006 *080000000000000c00fa6e0000980006080000000000000c00056f0000a8000608000000000000 *0c00106f0000d40006080000000000000c001b6f0000f80006080000000000000c00256f0000f8 *0006080000000000000c00306f0000040106080000000000000c003b6f00003001060800000000 *00000c00466f0000540106080000000000000c00506f0000540106080000000000000c005b6f00 *00600106080000000000000c00666f0000840106080000000000000c00706f00008c0106080000 *000000000c007a6f00008c0106080000000000000c00836f0000b40106080000000000000c008e *6f0000e00106080000000000000c00986f0000e80106080000000000000c00a26f0000e8010608 *0000000000000c00ab6f0000000206080000000000000c00b66f00002c0206080000000000000c *00c06f00003c0206080000000000000c00ca6f00003c0206080000000000000c00d56f00007002 *06080000000000000c00df6f0000700206080000000000000c00ea6f0000b40206080000000000 *000c00f56f00000c0306080000000000000c00ff6f00000c0306080000000000000c000a700000 *480306080000000000000c0015700000bc0306080000000000000c001f700000bc030608000000 *0000000c002a700000f80306080000000000000c00357000006c0406080000000000000c003f70 *00006c0406080000000000000c004a700000a80406080000000000000c00557000001c05060800 *00000000000c005f7000001c0506080000000000000c006a700000580506080000000000000c00 *75700000cc0506080000000000000c007f700000cc0506080000000000000c008a700000280606 *080000000000000c0094700000380606080000000000000c009e70000038060608000000000000 *0c00a9700000500606080000000000000c00b37000005c0606080000000000000c00bd70000068 *0606080000000000000c00c8700000840606080000000000000c00d27000008406060800000000 *00000c00dd700000b40606080000000000000c00e7700000c00606080000000000000c00f27000 *00dc0606080000000000000c00fc700000dc0606080000000000000c0007710000180706080000 *000000000c0011710000180706080000000000000c001c710000400706080000000000000c0027 *7100005c0706080000000000000c00317100005c0706080000000000000c003c71000084070608 *0000000000000c0047710000d00706080000000000000c0051710000dc0706080000000000000c *005b710000dc0706080000000000000c0064710000200806080000000000000c006f7100004408 *06080000000000000c0079710000440806080000000000000c0084710000980806080000000000 *000c008e710000a80806080000000000000c0098710000a80806080000000000000c00a3710000 *d00806080000000000000c00ae710000e80806080000000000000c00b8710000e8080608000000 *0000000c00c17100000c0906080000000000000c00cc7100002c0906080000000000000c00d671 *0000380906080000000000000c00e0710000380906080000000000000c00eb7100004409060800 *00000000000c00f5710000500906080000000000000c00ff7100005c0906080000000000000c00 *09720000680906080000000000000c0013720000740906080000000000000c001d720000800906 *080000000000000c00277200008c0906080000000000000c003172000098090608000000000000 *0c003b720000a40906080000000000000c0045720000b00906080000000000000c004f720000bc *0906080000000000000c0059720000d40906080000000000000c0063720000d409060800000000 *00000c006e720000040a06080000000000000c00797200000c0a06080000000000000c00847200 *00380a06080000000000000c008e720000440a06080000000000000c0098720000440a06080000 *000000000c00a3720000a80a06080000000000000c00ad720000a80a06080000000000000c00b8 *720000e00a06080000000000000c00c2720000e00a06080000000000000c00cd720000440b0608 *0000000000000c00d7720000440b06080000000000000c00e2720000a00b06080000000000000c *00ec720000a00b06080000000000000c00f7720000d80b06080000000000000c0001730000d80b *06080000000000000c000c730000240c06080000000000000c0016730000240c06080000000000 *000c0021730000880c06080000000000000c002b730000880c06080000000000000c0036730000 *bc0c06080000000000000c0040730000bc0c06080000000000000c004b730000280d0608000000 *0000000c0055730000280d06080000000000000c00607300005c0d06080000000000000c006a73 *00005c0d06080000000000000c0075730000cc0d06080000000000000c007f730000cc0d060800 *00000000000c008a730000340e06080000000000000c0094730000340e06080000000000000c00 *9f730000680e06080000000000000c00a9730000680e06080000000000000c00b4730000e00e06 *080000000000000c00be730000e00e06080000000000000c00c9730000440f0608000000000000 *0c00d3730000440f06080000000000000c00de730000c40f06080000000000000c00e8730000c4 *0f06080000000000000c00f3730000301006080000000000000c00fd7300003010060800000000 *00000c0008740000641006080000000000000c0012740000641006080000000000000c001b7400 *00341106080000000000000c002474000034aa1108000000000000100031740000441106080000 *000000000c003b740000441106080000000000000c0046740000a01106080000000000000c004f *74000044aa110800000000000010005c740000801306080000000000000c0066740000cc110608 *0000000000000c0070740000cc1106080000000000000c0079740000f41106080000000000000c *0083740000f41106080000000000000c008e7400001c1206080000000000000c00987400001c12 *06080000000000000c00a37400006c1206080000000000000c00ad7400006c1206080000000000 *000c00b6740000a81206080000000000000c00c0740000a81206080000000000000c00cb740000 *e01206080000000000000c00d5740000e01206080000000000000c00e07400001c130608000000 *0000000c00ea7400001c1306080000000000000c00f5740000801306080000000000000c000075 *0000c81306080000000000000c00097500004caa1108000000000000100016750000d813060800 *00000000000c0020750000d81306080000000000000c002b750000341406080000000000000c00 *347500005caa1108000000000000100041750000c41506080000000000000c004b7500005c1406 *080000000000000c00557500005c1406080000000000000c005e75000080140608000000000000 *0c0068750000801406080000000000000c0073750000b81406080000000000000c007d750000b8 *1406080000000000000c0088750000ec1406080000000000000c0092750000ec14060800000000 *00000c009d750000441506080000000000000c00a7750000441506080000000000000c00b07500 *00881506080000000000000c00ba750000881506080000000000000c00c5750000c41506080000 *000000000c00d0750000181606080000000000000c00d975000064aa11080000000000001000e6 *750000c81606080000000000000c00f0750000381606080000000000000c00fa75000038160608 *0000000000000c0005760000741606080000000000000c000f760000741606080000000000000c *001a760000c81606080000000000000c0025760000601706080000000000000c00307600007017 *06080000000000000c003b760000801706080000000000000c0046760000a81706080000000000 *000c0050760000a81706080000000000000c005b760000cc1706080000000000000c0065760000 *cc1706080000000000000c0070760000081806080000000000000c007a76000008180608000000 *0000000c00857600005c1806080000000000000c008f7600005c1806080000000000000c009a76 *0000a41806080000000000000c00a5760000fc1806080000000000000c00af7600000819060800 *00000000000c00b9760000081906080000000000000c00c2760000281906080000000000000c00 *cd760000381906080000000000000c00d87600008c1906080000000000000c00e27600008c1906 *080000000000000c00ed760000ec1906080000000000000c00f7760000ec190608000000000000 *0c0002770000281a06080000000000000c000c770000281a06080000000000000c001777000088 *1a06080000000000000c0021770000881a06080000000000000c002c770000d41a060800000000 *00000c0037770000341b06080000000000000c0041770000341b06080000000000000c004c7700 *00601b06080000000000000c0056770000601b06080000000000000c0061770000c01b06080000 *000000000c006b770000c01b06080000000000000c0076770000fc1b06080000000000000c0080 *770000fc1b06080000000000000c008b7700005c1c06080000000000000c00957700005c1c0608 *0000000000000c00a0770000a81c06080000000000000c00ab770000081d06080000000000000c *00b5770000141d06080000000000000c00bf770000141d06080000000000000c00c87700003c1d *06080000000000000c00d37700004c1d06080000000000000c00de770000701d06080000000000 *000c00e8770000701d06080000000000000c00f37700009c1d06080000000000000c00fd770000 *9c1d06080000000000000c0008780000c81d06080000000000000c0012780000d81d0608000000 *0000000c001c780000d81d06080000000000000c00277800001c1e06080000000000000c003178 *00001c1e06080000000000000c003c780000501e06080000000000000c0046780000501e060800 *00000000000c004f780000e81e06080000000000000c0059780000e81e06080000000000000c00 *62780000641f06080000000000000c006b7800008caa1108000000000000100078780000741f06 *080000000000000c0082780000741f06080000000000000c008d780000f81f0608000000000000 *0c0098780000142006080000000000000c00a2780000142006080000000000000c00ad78000048 *2006080000000000000c00b7780000482006080000000000000c00c27800008c20060800000000 *00000c00cd780000d82106080000000000000c00d8780000ac2006080000000000000c00e27800 *00ac2006080000000000000c00ed780000dc2006080000000000000c00f8780000482106080000 *000000000c0002790000542106080000000000000c000c790000542106080000000000000c0015 *790000942106080000000000000c0020790000c82106080000000000000c002a790000d8210608 *0000000000000c0034790000002206080000000000000c003f790000102206080000000000000c *004a7900004c2206080000000000000c00547900004c2206080000000000000c005f7900008822 *06080000000000000c0069790000882206080000000000000c0074790000d02206080000000000 *000c007f7900000c2306080000000000000c00897900000c2306080000000000000c0094790000 *382306080000000000000c009e790000482306080000000000000c00a879000048230608000000 *0000000c00b3790000982306080000000000000c00bd790000982306080000000000000c00c879 *0000cc2306080000000000000c00d2790000cc2306080000000000000c00db7900006424060800 *00000000000c00e5790000642406080000000000000c00ee790000442506080000000000000c00 *f7790000b8aa11080000000000001000047a0000b42606080000000000000c000e7a0000542506 *080000000000000c00197a00006c2506080000000000000c00237a00006c250608000000000000 *0c002c7a0000042606080000000000000c00377a0000cc2506080000000000000c00427a0000f8 *2506080000000000000c004c7a0000042606080000000000000c00567a00002c26060800000000 *00000c00607a00002c2606080000000000000c006b7a0000742606080000000000000c00757a00 *00742606080000000000000c00807a0000b42606080000000000000c008b7a0000c0aa11080000 *000000001000987a0000dc2706080000000000000c00a27a0000002706080000000000000c00ad *7a0000182706080000000000000c00b77a0000182706080000000000000c00c07a0000b0270608 *0000000000000c00cb7a0000782706080000000000000c00d67a0000a42706080000000000000c *00e07a0000b02706080000000000000c00ea7a0000dc2706080000000000000c00f57a00000028 *06080000000000000c00fe7a0000c4aa110800000000000010000b7b0000742a06080000000000 *000c00157b0000042806080000000000000c00207b0000142806080000000000000c002b7b0000 *582806080000000000000c00357b0000582806080000000000000c00407b000088280608000000 *0000000c004b7b0000d42806080000000000000c00557b0000d42806080000000000000c00607b *0000042906080000000000000c006b7b00005c2906080000000000000c00757b00006829060800 *00000000000c007f7b0000682906080000000000000c008a7b0000982906080000000000000c00 *947b0000982906080000000000000c009d7b0000082a06080000000000000c00a87b0000342a06 *080000000000000c00b27b0000442a06080000000000000c00bc7b0000442a0608000000000000 *0c00c77b0000742a06080000000000000c00d27b0000982a06080000000000000c00db7b0000cc *aa11080000000000001000e87b00005c2b06080000000000000c00f27b0000a82a060800000000 *00000c00fc7b0000a82a06080000000000000c00077c0000e42a06080000000000000c00117c00 *00e42a06080000000000000c001c7c0000202b06080000000000000c00267c0000202b06080000 *000000000c00317c00005c2b06080000000000000c003c7c0000002c06080000000000000c0045 *7c0000dcaa11080000000000001000527c0000c82c06080000000000000c005c7c0000142c0608 *0000000000000c00667c0000142c06080000000000000c00717c0000502c06080000000000000c *007b7c0000502c06080000000000000c00867c00008c2c06080000000000000c00907c00008c2c *06080000000000000c009b7c0000c82c06080000000000000c00a67c0000ecaa11080000000000 *001000b37c0000682d06080000000000000c00bc7c0000f4aa11080000000000001000c97c0000 *7c2d06080000000000000c00d37c00007c2d06080000000000000c00de7c0000d42d0608000000 *0000000c00e77c000004ab11080000000000001000f47c0000ec2e06080000000000000c00fe7c *0000ec2d06080000000000000c00087d0000ec2d06080000000000000c00137d0000342e060800 *00000000000c001d7d0000342e06080000000000000c00287d0000742e06080000000000000c00 *327d0000742e06080000000000000c003d7d0000b02e06080000000000000c00477d0000b02e06 *080000000000000c00527d0000ec2e06080000000000000c005d7d0000c02f0608000000000000 *0c00667d000014ab11080000000000001000737d0000d42f06080000000000000c007d7d0000d4 *2f06080000000000000c00887d00004c3006080000000000000c00917d000024ab110800000000 *000010009e7d0000183106080000000000000c00a87d0000643006080000000000000c00b27d00 *00643006080000000000000c00bd7d0000a03006080000000000000c00c77d0000a03006080000 *000000000c00d27d0000dc3006080000000000000c00dc7d0000dc3006080000000000000c00e7 *7d0000183106080000000000000c00f27d0000cc3106080000000000000c00fb7d000034ab1108 *0000000000001000087e0000983206080000000000000c00127e0000e43106080000000000000c *001c7e0000e43106080000000000000c00277e0000203206080000000000000c00317e00002032 *06080000000000000c003c7e00005c3206080000000000000c00467e00005c3206080000000000 *000c00517e0000983206080000000000000c005c7e00004c3306080000000000000c00657e0000 *44ab11080000000000001000727e0000dc3306080000000000000c007c7e000064330608000000 *0000000c00867e0000643306080000000000000c00917e0000a03306080000000000000c009b7e *0000a03306080000000000000c00a67e0000dc3306080000000000000c00b17e00008834060800 *00000000000c00ba7e000054ab11080000000000001000c77e0000f83606080000000000000c00 *d17e0000a03406080000000000000c00db7e0000a03406080000000000000c00e67e0000dc3406 *080000000000000c00f07e0000dc3406080000000000000c00fb7e000018350608000000000000 *0c00057f0000183506080000000000000c00107f0000543506080000000000000c001a7f000054 *3506080000000000000c00257f0000903506080000000000000c002f7f00009035060800000000 *00000c003a7f0000cc3506080000000000000c00447f0000cc3506080000000000000c004f7f00 *00083606080000000000000c00597f0000083606080000000000000c00647f0000443606080000 *000000000c006e7f0000443606080000000000000c00797f0000803606080000000000000c0083 *7f0000803606080000000000000c008e7f0000bc3606080000000000000c00987f0000bc360608 *0000000000000c00a37f0000f83606080000000000000c00ae7f0000a03906080000000000000c *00b77f000064ab11080000000000001000c47f0000203b06080000000000000c00ce7f0000b839 *06080000000000000c00d87f0000b83906080000000000000c00e37f0000f43906080000000000 *000c00ed7f0000f43906080000000000000c00f87f0000303a06080000000000000c0002800000 *303a06080000000000000c000d8000006c3a06080000000000000c00178000006c3a0608000000 *0000000c0022800000a83a06080000000000000c002c800000a83a06080000000000000c003780 *0000e43a06080000000000000c0041800000e43a06080000000000000c004c800000203b060800 *00000000000c0057800000843c06080000000000000c006080000074ab11080000000000001000 *6d800000503d06080000000000000c00778000009c3c06080000000000000c00818000009c3c06 *080000000000000c008c800000d83c06080000000000000c0096800000d83c0608000000000000 *0c00a1800000143d06080000000000000c00ab800000143d06080000000000000c00b680000050 *3d06080000000000000c00c1800000043e06080000000000000c00ca80000084ab110800000000 *00001000d7800000c03f06080000000000000c00e18000001c3e06080000000000000c00eb8000 *001c3e06080000000000000c00f6800000583e06080000000000000c0000810000583e06080000 *000000000c000b810000943e06080000000000000c0015810000943e06080000000000000c0020 *810000d03e06080000000000000c002a810000d03e06080000000000000c00358100000c3f0608 *0000000000000c003f8100000c3f06080000000000000c004a810000483f06080000000000000c *0054810000483f06080000000000000c005f810000843f06080000000000000c0069810000843f *06080000000000000c0074810000c03f06080000000000000c007f810000b04106080000000000 *000c008881000094ab11080000000000001000958100007c4206080000000000000c009f810000 *c84106080000000000000c00a9810000c84106080000000000000c00b481000004420608000000 *0000000c00be810000044206080000000000000c00c9810000404206080000000000000c00d381 *0000404206080000000000000c00de8100007c4206080000000000000c00e98100003043060800 *00000000000c00f2810000a4ab11080000000000001000ff810000c44806080000000000000c00 *098200005c4306080000000000000c00138200005c4306080000000000000c001e820000ac4306 *080000000000000c0028820000ac4306080000000000000c0033820000dc430608000000000000 *0c003d820000dc4306080000000000000c0048820000404406080000000000000c005282000040 *4406080000000000000c005d820000ac4406080000000000000c0067820000ac44060800000000 *00000c0072820000e84406080000000000000c007c820000e84406080000000000000c00878200 *00484506080000000000000c0091820000484506080000000000000c009c820000ac4506080000 *000000000c00a6820000ac4506080000000000000c00b1820000e84506080000000000000c00bb *820000e84506080000000000000c00c6820000484606080000000000000c00d082000048460608 *0000000000000c00db820000a04606080000000000000c00e5820000a04606080000000000000c *00f0820000dc4606080000000000000c00fa820000dc4606080000000000000c00058300004047 *06080000000000000c000f830000404706080000000000000c001a830000b04706080000000000 *000c0024830000b04706080000000000000c002f830000104806080000000000000c0039830000 *104806080000000000000c0044830000744806080000000000000c004e83000074480608000000 *0000000c0057830000c44806080000000000000c0062830000e84806080000000000000c006b83 *0000acab1108000000000000100078830000fc4806080000000000000c0082830000fc48060800 *00000000000c008d830000544906080000000000000c0096830000bcab11080000000000001000 *a3830000684906080000000000000c00ad830000684906080000000000000c00b8830000c04906 *080000000000000c00c1830000ccab11080000000000001000ce830000d4490608000000000000 *0c00d8830000d44906080000000000000c00e38300002c4a06080000000000000c00ec830000dc *ab11080000000000001000f9830000b05006080000000000000c0003840000684a060800000000 *00000c000d840000684a06080000000000000c0018840000984a06080000000000000c00228400 *00984a06080000000000000c002d840000fc4a06080000000000000c0037840000fc4a06080000 *000000000c00428400005c4b06080000000000000c004c8400005c4b06080000000000000c0057 *840000804b06080000000000000c0062840000944b06080000000000000c006c840000944b0608 *0000000000000c0077840000d04b06080000000000000c0081840000d04b06080000000000000c *008a840000244c06080000000000000c0094840000244c06080000000000000c009f840000484c *06080000000000000c00aa840000a44c06080000000000000c00b4840000b44c06080000000000 *000c00be840000b44c06080000000000000c00c9840000e04c06080000000000000c00d3840000 *e04c06080000000000000c00de8400002c4d06080000000000000c00e88400002c4d0608000000 *0000000c00f1840000844d06080000000000000c00fc840000a04d06080000000000000c000685 *0000a04d06080000000000000c0011850000d84d06080000000000000c001b850000d84d060800 *00000000000c0026850000104e06080000000000000c0030850000104e06080000000000000c00 *39850000544e06080000000000000c00448500007c4e06080000000000000c004e8500007c4e06 *080000000000000c0059850000a04e06080000000000000c0063850000a04e0608000000000000 *0c006e850000f04e06080000000000000c0078850000f04e06080000000000000c00838500002c *4f06080000000000000c008d8500002c4f06080000000000000c0098850000884f060800000000 *00000c00a2850000884f06080000000000000c00ad850000c44f06080000000000000c00b78500 *00c44f06080000000000000c00c2850000105006080000000000000c00cc850000105006080000 *000000000c00d5850000545006080000000000000c00e08500007c5006080000000000000c00ea *850000885006080000000000000c00f4850000885006080000000000000c00fd850000b0500608 *0000000000000c0008860000985206080000000000000c0013860000ac5206080000000000000c *001d860000ac5206080000000000000c0028860000dc5206080000000000000c00328600000053 *06080000000000000c003c8600000c5306080000000000000c00468600000c5306080000000000 *000c004f860000485406080000000000000c0059860000485406080000000000000c0064860000 *845406080000000000000c006e860000845406080000000000000c0077860000dc540608000000 *0000000c0082860000105506080000000000000c008c860000205506080000000000000c009686 *0000205506080000000000000c00a18600004c5506080000000000000c00ab8600004c55060800 *00000000000c00b6860000785506080000000000000c00c0860000785506080000000000000c00 *c98600008c5506080000000000000c00d38600008c5506080000000000000c00de860000c05506 *080000000000000c00e8860000c05506080000000000000c00f386000020560608000000000000 *0c00fd860000205606080000000000000c00088700007c5606080000000000000c00128700007c *5606080000000000000c001d870000a85606080000000000000c0027870000a856060800000000 *00000c00328700001c5706080000000000000c003c870000405706080000000000000c00468700 *004c5706080000000000000c00508700004c5706080000000000000c005b870000885706080000 *000000000c0065870000885706080000000000000c006e870000c05706080000000000000c0078 *870000c05706080000000000000c0083870000d85706080000000000000c008d870000d8570608 *0000000000000c0098870000285806080000000000000c00a2870000285806080000000000000c *00ad870000885806080000000000000c00b7870000885806080000000000000c00c0870000e458 *06080000000000000c00cb870000005906080000000000000c00d5870000005906080000000000 *000c00e0870000385906080000000000000c00ea870000385906080000000000000c00f5870000 *705906080000000000000c00ff870000705906080000000000000c0008880000b0590608000000 *0000000c0013880000d85906080000000000000c001d880000d85906080000000000000c002888 *0000fc5906080000000000000c0032880000fc5906080000000000000c003d8800004c5a060800 *00000000000c00478800004c5a06080000000000000c0052880000885a06080000000000000c00 *5c880000885a06080000000000000c0067880000e45a06080000000000000c0071880000e45a06 *080000000000000c007c880000205b06080000000000000c0086880000205b0608000000000000 *0c00918800006c5b06080000000000000c009b8800006c5b06080000000000000c00a4880000b0 *5b06080000000000000c00af880000d85b06080000000000000c00b9880000e45b060800000000 *00000c00c3880000e45b06080000000000000c00cc880000b05c06080000000000000c00d68800 *00b05c06080000000000000c00e1880000dc5c06080000000000000c00eb880000dc5c06080000 *000000000c00f4880000f05c06080000000000000c00fe880000f05c06080000000000000c0009 *890000245d06080000000000000c0013890000245d06080000000000000c001e890000845d0608 *0000000000000c0028890000845d06080000000000000c0033890000e05d06080000000000000c *003d890000e05d06080000000000000c0048890000045e06080000000000000c0053890000185e *06080000000000000c005d890000185e06080000000000000c0068890000545e06080000000000 *000c0072890000545e06080000000000000c007b8900004c5f06080000000000000c0085890000 *4c5f06080000000000000c0090890000885f06080000000000000c009a890000885f0608000000 *0000000c00a3890000e05f06080000000000000c00ae890000146006080000000000000c00b889 *0000246006080000000000000c00c2890000246006080000000000000c00cd8900005060060800 *00000000000c00d7890000506006080000000000000c00e28900009c6006080000000000000c00 *ec8900009c6006080000000000000c00f5890000f86006080000000000000c00008a0000146106 *080000000000000c000a8a0000146106080000000000000c00158a00004c610608000000000000 *0c001f8a00004c6106080000000000000c002a8a0000846106080000000000000c00348a000084 *6106080000000000000c003d8a0000c46106080000000000000c00488a0000ec61060800000000 *00000c00528a0000ec6106080000000000000c005d8a0000106206080000000000000c00678a00 *00106206080000000000000c00728a0000606206080000000000000c007c8a0000606206080000 *000000000c00878a00009c6206080000000000000c00918a00009c6206080000000000000c009c *8a0000f86206080000000000000c00a68a0000f86206080000000000000c00b18a000034630608 *0000000000000c00bb8a0000346306080000000000000c00c68a0000806306080000000000000c *00d08a0000806306080000000000000c00d98a0000c46306080000000000000c00e48a0000ec63 *06080000000000000c00ee8a0000f86306080000000000000c00f88a0000f86306080000000000 *000c00018b0000b46406080000000000000c000b8b0000b46406080000000000000c00168b0000 *e06406080000000000000c00208b0000e06406080000000000000c00298b0000f4640608000000 *0000000c00338b0000f46406080000000000000c003e8b0000286506080000000000000c00488b *0000286506080000000000000c00538b0000886506080000000000000c005d8b00008865060800 *00000000000c00688b0000e46506080000000000000c00728b0000e46506080000000000000c00 *7d8b0000086606080000000000000c00888b00001c6606080000000000000c00928b00001c6606 *080000000000000c009d8b0000586606080000000000000c00a78b000058660608000000000000 *0c00b08b0000806706080000000000000c00ba8b0000806706080000000000000c00c58b0000bc *6706080000000000000c00cf8b0000bc6706080000000000000c00d88b00001468060800000000 *00000c00e38b0000486806080000000000000c00ed8b0000586806080000000000000c00f78b00 *00586806080000000000000c00028c0000846806080000000000000c000c8c0000846806080000 *000000000c00178c0000d06806080000000000000c00218c0000d06806080000000000000c002a *8c00002c6906080000000000000c00358c0000486906080000000000000c003f8c000048690608 *0000000000000c004a8c0000806906080000000000000c00548c0000806906080000000000000c *005f8c0000b86906080000000000000c00698c0000b86906080000000000000c00728c0000f869 *06080000000000000c007d8c0000206a06080000000000000c00878c0000206a06080000000000 *000c00928c0000446a06080000000000000c009c8c0000446a06080000000000000c00a78c0000 *946a06080000000000000c00b18c0000946a06080000000000000c00bc8c0000d06a0608000000 *0000000c00c68c0000d06a06080000000000000c00d18c00002c6b06080000000000000c00db8c *00002c6b06080000000000000c00e68c0000686b06080000000000000c00f08c0000686b060800 *00000000000c00fb8c0000b46b06080000000000000c00058d0000b46b06080000000000000c00 *0e8d0000f86b06080000000000000c00198d0000206c06080000000000000c00238d00002c6c06 *080000000000000c002d8d00002c6c06080000000000000c00368d0000a86c0608000000000000 *0c003f8d000044ac110800000000000010004c8d0000c86c06080000000000000c00568d0000b4 *6c06080000000000000c00608d0000b46c06080000000000000c00698d0000c86c060800000000 *00000c00748d00001c6d06080000000000000c007d8d000054ac110800000000000010008a8d00 *003c6d06080000000000000c00948d0000286d06080000000000000c009e8d0000286d06080000 *000000000c00a78d00003c6d06080000000000000c00b28d0000906d06080000000000000c00bb *8d000064ac11080000000000001000c88d0000b06d06080000000000000c00d28d00009c6d0608 *0000000000000c00dc8d00009c6d06080000000000000c00e58d0000b06d06080000000000000c *00f08d0000046e06080000000000000c00f98d000074ac11080000000000001000068e0000246e *06080000000000000c00108e0000106e06080000000000000c001a8e0000106e06080000000000 *000c00238e0000246e06080000000000000c002e8e0000786e06080000000000000c00378e0000 *84ac11080000000000001000448e0000986e06080000000000000c004e8e0000846e0608000000 *0000000c00588e0000846e06080000000000000c00618e0000986e06080000000000000c006c8e *0000ec6e06080000000000000c00758e000094ac11080000000000001000828e0000006f060800 *00000000000c008c8e0000006f06080000000000000c00978e0000586f06080000000000000c00 *a08e0000a4ac11080000000000001000ad8e00006c6f06080000000000000c00b78e00006c6f06 *080000000000000c00c28e0000c46f06080000000000000c00cb8e0000b4ac1108000000000000 *1000d88e0000e46f06080000000000000c00e28e0000d06f06080000000000000c00ec8e0000d0 *6f06080000000000000c00f58e0000e46f06080000000000000c00008f00003870060800000000 *00000c00098f0000c4ac11080000000000001000168f00004c7006080000000000000c00208f00 *004c7006080000000000000c002b8f0000a47006080000000000000c00348f0000d4ac11080000 *000000001000418f0000c47006080000000000000c004b8f0000b07006080000000000000c0055 *8f0000b07006080000000000000c005e8f0000c47006080000000000000c00698f000018710608 *0000000000000c00728f0000e4ac110800000000000010007f8f00002c7106080000000000000c *00898f00002c7106080000000000000c00948f0000847106080000000000000c009d8f0000f4ac *11080000000000001000aa8f0000a47106080000000000000c00b48f0000907106080000000000 *000c00be8f0000907106080000000000000c00c78f0000a47106080000000000000c00d28f0000 *f87106080000000000000c00db8f000004ad11080000000000001000e88f00000c720608000000 *0000000c00f28f00000c7206080000000000000c00fd8f0000647206080000000000000c000690 *000014ad1108000000000000100013900000787206080000000000000c001d9000007872060800 *00000000000c0028900000d07206080000000000000c003190000024ad11080000000000001000 *3e900000f07206080000000000000c0048900000dc7206080000000000000c0052900000dc7206 *080000000000000c005b900000f07206080000000000000c006690000044730608000000000000 *0c006f90000034ad110800000000000010007c900000ec7a06080000000000000c008690000074 *7306080000000000000c0090900000747306080000000000000c009b900000b073060800000000 *00000c00a5900000b07306080000000000000c00ae900000fc7306080000000000000c00b89000 *00fc7306080000000000000c00c39000002c7406080000000000000c00ce900000407406080000 *000000000c00d8900000407406080000000000000c00e3900000847406080000000000000c00ed *900000847406080000000000000c00f8900000b07406080000000000000c000391000004750608 *0000000000000c000d910000047506080000000000000c0018910000407506080000000000000c *0022910000747506080000000000000c002c910000847506080000000000000c00369100008475 *06080000000000000c0041910000c07506080000000000000c004b910000c07506080000000000 *000c0054910000107606080000000000000c005e910000107606080000000000000c0069910000 *447606080000000000000c0073910000447606080000000000000c007e91000094760608000000 *0000000c0088910000947606080000000000000c0091910000b47606080000000000000c009b91 *0000b47606080000000000000c00a6910000e87606080000000000000c00b0910000e876060800 *00000000000c00bb910000207706080000000000000c00c5910000207706080000000000000c00 *ce910000407706080000000000000c00d8910000407706080000000000000c00e3910000747706 *080000000000000c00ed910000747706080000000000000c00f8910000ac770608000000000000 *0c0002920000ac7706080000000000000c000b920000cc7706080000000000000c0015920000cc *7706080000000000000c0020920000007806080000000000000c002a9200000078060800000000 *00000c0035920000387806080000000000000c003f920000387806080000000000000c00489200 *00587806080000000000000c0052920000587806080000000000000c005d9200008c7806080000 *000000000c00679200008c7806080000000000000c0072920000c47806080000000000000c007c *920000c47806080000000000000c0085920000e47806080000000000000c008f920000e4780608 *0000000000000c009a920000187906080000000000000c00a4920000187906080000000000000c *00af920000547906080000000000000c00b9920000547906080000000000000c00c4920000ec7a *06080000000000000c00cf920000587b06080000000000000c00d892000044ad11080000000000 *001000e59200006c7b06080000000000000c00ef9200006c7b06080000000000000c00fa920000 *c47b06080000000000000c000393000054ad1108000000000000100010930000f07f0608000000 *0000000c001a930000e87b06080000000000000c0024930000e87b06080000000000000c002f93 *0000187c06080000000000000c003a930000507c06080000000000000c0044930000507c060800 *00000000000c004f930000807c06080000000000000c005a930000b87c06080000000000000c00 *64930000b87c06080000000000000c006f930000e87c06080000000000000c007a930000207d06 *080000000000000c0084930000207d06080000000000000c008f930000507d0608000000000000 *0c009a930000887d06080000000000000c00a4930000887d06080000000000000c00af930000b8 *7d06080000000000000c00ba930000ec7d06080000000000000c00c4930000ec7d060800000000 *00000c00cd9300000c7e06080000000000000c00d79300000c7e06080000000000000c00e29300 *00447e06080000000000000c00ec930000447e06080000000000000c00f7930000807e06080000 *000000000c0001940000807e06080000000000000c000c940000cc7e06080000000000000c0016 *940000cc7e06080000000000000c0021940000287f06080000000000000c002b940000287f0608 *0000000000000c00349400004c7f06080000000000000c003e9400004c7f06080000000000000c *0049940000787f06080000000000000c0054940000e07f06080000000000000c005e940000f07f *06080000000000000c00699400005cad1108000000000000100076940000108006080000000000 *000c007f94000064ad110800000000000010008c940000248006080000000000000c0096940000 *248006080000000000000c00a19400007c8006080000000000000c00aa94000074ad1108000000 *0000001000b7940000908006080000000000000c00c1940000908006080000000000000c00cc94 *000084ad11080000000000001000d9940000e88006080000000000000c00e2940000b0ad110800 *00000000001000ef940000b88806080000000000000c00f9940000fc8006080000000000000c00 *03950000fc8006080000000000000c000e950000388106080000000000000c0018950000388106 *080000000000000c0023950000748106080000000000000c002d95000074810608000000000000 *0c0038950000b08106080000000000000c0042950000b08106080000000000000c004d950000ec *8106080000000000000c0057950000ec8106080000000000000c00629500002882060800000000 *00000c006c950000288206080000000000000c0077950000648206080000000000000c00819500 *00648206080000000000000c008c950000a08206080000000000000c0096950000a08206080000 *000000000c00a1950000dc8206080000000000000c00ab950000dc8206080000000000000c00b6 *950000188306080000000000000c00c0950000188306080000000000000c00cb95000054830608 *0000000000000c00d5950000548306080000000000000c00e0950000908306080000000000000c *00ea950000908306080000000000000c00f5950000cc8306080000000000000c00ff950000cc83 *06080000000000000c000a960000088406080000000000000c0014960000088406080000000000 *000c001f960000448406080000000000000c0029960000448406080000000000000c0034960000 *808406080000000000000c003e960000808406080000000000000c0049960000bc840608000000 *0000000c0053960000bc8406080000000000000c005e960000f88406080000000000000c006896 *0000f88406080000000000000c0073960000348506080000000000000c007d9600003485060800 *00000000000c0088960000708506080000000000000c0092960000708506080000000000000c00 *9d960000ac8506080000000000000c00a7960000ac8506080000000000000c00b2960000e88506 *080000000000000c00bc960000e88506080000000000000c00c796000024860608000000000000 *0c00d1960000248606080000000000000c00dc960000608606080000000000000c00e696000060 *8606080000000000000c00f19600009c8606080000000000000c00fb9600009c86060800000000 *00000c0006970000d88606080000000000000c0010970000d88606080000000000000c001b9700 *00148706080000000000000c0025970000148706080000000000000c0030970000508706080000 *000000000c003a970000508706080000000000000c00459700008c8706080000000000000c004f *9700008c8706080000000000000c005a970000c88706080000000000000c0064970000c8870608 *0000000000000c006f970000048806080000000000000c0079970000048806080000000000000c *0084970000408806080000000000000c008e970000408806080000000000000c00999700007c88 *06080000000000000c00a39700007c8806080000000000000c00ae970000b88806080000000000 *000c00b9970000489106080000000000000c00c2970000c0ad11080000000000001000cf970000 *7c9106080000000000000c00d99700007c9106080000000000000c00e497000098920608000000 *0000000c00ed970000d0ad11080000000000001000fa970000849f06080000000000000c000498 *0000d49206080000000000000c000f980000f09206080000000000000c0019980000f092060800 *00000000000c0024980000349306080000000000000c002f980000989306080000000000000c00 *39980000a89306080000000000000c0043980000a89306080000000000000c004e980000d49306 *080000000000000c0058980000d49306080000000000000c00639800001c940608000000000000 *0c006d9800001c9406080000000000000c0078980000689406080000000000000c008298000068 *9406080000000000000c008d980000a49406080000000000000c0097980000a494060800000000 *00000c00a2980000f49406080000000000000c00ac980000f49406080000000000000c00b79800 *00309506080000000000000c00c1980000309506080000000000000c00cc980000909506080000 *000000000c00d6980000909506080000000000000c00e1980000dc9506080000000000000c00ec *980000f89506080000000000000c00f6980000f89506080000000000000c000199000048960608 *0000000000000c000b990000489606080000000000000c0016990000849606080000000000000c *0020990000849606080000000000000c002b990000d09606080000000000000c0035990000d096 *06080000000000000c00409900002c9706080000000000000c004a9900002c9706080000000000 *000c0055990000609706080000000000000c005f990000609706080000000000000c0068990000 *a09706080000000000000c0072990000a09706080000000000000c007d990000e0970608000000 *0000000c0087990000e09706080000000000000c00929900003c9806080000000000000c009c99 *00003c9806080000000000000c00a7990000a49806080000000000000c00b1990000a498060800 *00000000000c00bc990000fc9806080000000000000c00c6990000fc9806080000000000000c00 *d1990000689906080000000000000c00db990000689906080000000000000c00e6990000a49906 *080000000000000c00f0990000a49906080000000000000c00fb990000f0990608000000000000 *0c00059a0000f09906080000000000000c00109a00004c9a06080000000000000c001b9a0000bc *9a06080000000000000c00259a0000cc9a06080000000000000c002f9a0000cc9a060800000000 *00000c003a9a0000049b06080000000000000c00449a0000049b06080000000000000c004f9a00 *00589b06080000000000000c00599a0000589b06080000000000000c00649a0000b09b06080000 *000000000c006e9a0000b09b06080000000000000c00799a0000209c06080000000000000c0083 *9a0000209c06080000000000000c008e9a00005c9c06080000000000000c00989a00005c9c0608 *0000000000000c00a39a0000a89c06080000000000000c00ad9a0000a89c06080000000000000c *00b89a00000c9d06080000000000000c00c29a00000c9d06080000000000000c00cd9a0000489d *06080000000000000c00d79a0000489d06080000000000000c00e29a0000989d06080000000000 *000c00ec9a0000989d06080000000000000c00f79a0000d49d06080000000000000c00019b0000 *d49d06080000000000000c000c9b0000349e06080000000000000c00169b0000349e0608000000 *0000000c00219b00008c9e06080000000000000c002b9b00008c9e06080000000000000c00369b *0000e09e06080000000000000c00409b0000e09e06080000000000000c004b9b0000409f060800 *00000000000c00559b0000409f06080000000000000c005e9b0000849f06080000000000000c00 *699b000020a006080000000000000c00739b000020a006080000000000000c007e9b000070a006 *080000000000000c00889b000070a006080000000000000c00939b0000aca00608000000000000 *0c009d9b0000aca006080000000000000c00a89b000008a106080000000000000c00b29b000008 *a106080000000000000c00bd9b000044a106080000000000000c00c79b000044a1060800000000 *00000c00d29b000090a106080000000000000c00dc9b000090a106080000000000000c00e59b00 *00e0a106080000000000000c00ef9b0000e0a106080000000000000c00f89b000000a206080000 *000000000c00029c000000a206080000000000000c000d9c000050a206080000000000000c0017 *9c000050a206080000000000000c00229c00008ca206080000000000000c002c9c00008ca20608 *0000000000000c00379c0000e0a206080000000000000c00419c0000e0a206080000000000000c *004a9c000018a306080000000000000c00559c00002ca306080000000000000c00609c000048a3 *06080000000000000c006a9c000048a306080000000000000c00759c00005ca306080000000000 *000c007f9c00005ca306080000000000000c00889c000080a306080000000000000c00929c0000 *80a306080000000000000c009d9c0000b0a306080000000000000c00a79c0000b0a30608000000 *0000000c00b29c000008a406080000000000000c00bc9c000008a406080000000000000c00c79c *000058a406080000000000000c00d19c000058a406080000000000000c00dc9c000094a4060800 *00000000000c00e69c000094a406080000000000000c00f19c0000e4a406080000000000000c00 *fb9c0000e4a406080000000000000c00069d000020a506080000000000000c00109d000020a506 *080000000000000c001b9d000080a506080000000000000c00259d000080a50608000000000000 *0c00309d0000d8a506080000000000000c003a9d0000d8a506080000000000000c00439d000014 *a606080000000000000c004e9d000030a606080000000000000c00589d000030a6060800000000 *00000c00619d000074a606080000000000000c006c9d00009ca606080000000000000c00769d00 *009ca606080000000000000c00819d0000dca606080000000000000c008c9d0000f8a606080000 *000000000c00969d0000f8a606080000000000000c00a19d000028a706080000000000000c00ab *9d000034a706080000000000000c00b59d000034a706080000000000000c00be9d000044a70608 *0000000000000c00c99d000054a706080000000000000c00d39d000054a706080000000000000c *00de9d00008ca706080000000000000c00e89d00008ca706080000000000000c00f19d0000c0a7 *06080000000000000c00fc9d0000e8a706080000000000000c00069e0000e8a706080000000000 *000c00119e0000fca706080000000000000c001c9e000018a806080000000000000c00269e0000 *24a806080000000000000c00309e000024a806080000000000000c00399e0000d0a80608000000 *0000000c00439e0000d0a806080000000000000c004e9e0000fca806080000000000000c00589e *0000fca806080000000000000c00619e000010a906080000000000000c006b9e000010a9060800 *00000000000c00769e000044a906080000000000000c00809e000044a906080000000000000c00 *8b9e0000a4a906080000000000000c00959e0000a4a906080000000000000c00a09e000000aa06 *080000000000000c00aa9e000000aa06080000000000000c00b59e000024aa0608000000000000 *0c00c09e000038aa06080000000000000c00ca9e000038aa06080000000000000c00d59e000070 *aa06080000000000000c00df9e000070aa06080000000000000c00e89e0000e0aa060800000000 *00000c00f29e0000e0aa06080000000000000c00fb9e000050ab06080000000000000c00059f00 *0050ab06080000000000000c000e9f0000c0ab06080000000000000c00189f0000c0ab06080000 *000000000c00219f000030ac06080000000000000c002b9f000030ac06080000000000000c0034 *9f0000a0ac06080000000000000c003e9f0000a0ac06080000000000000c00479f000010ad0608 *0000000000000c00519f000010ad06080000000000000c005a9f000080ad06080000000000000c *00649f000080ad06080000000000000c006d9f0000f0ad06080000000000000c00779f0000f0ad *06080000000000000c00809f000060ae06080000000000000c008a9f000060ae06080000000000 *000c00939f0000d0ae06080000000000000c009d9f0000d0ae06080000000000000c00a69f0000 *44af06080000000000000c00b09f000044af06080000000000000c00b99f00007cb00608000000 *0000000c00c39f00007cb006080000000000000c00ce9f0000a8b006080000000000000c00d99f *00000cb106080000000000000c00e39f00001cb106080000000000000c00ed9f00001cb1060800 *00000000000c00f89f000048b106080000000000000c0002a0000048b106080000000000000c00 *0da0000094b106080000000000000c0017a0000094b106080000000000000c0020a00000f0b106 *080000000000000c002ba000000cb206080000000000000c0035a000000cb20608000000000000 *0c0040a0000044b206080000000000000c004aa0000044b206080000000000000c0055a000007c *b206080000000000000c005fa000007cb206080000000000000c0068a00000bcb2060800000000 *00000c0073a00000e4b206080000000000000c007da00000e4b206080000000000000c0088a000 *0008b306080000000000000c0092a0000008b306080000000000000c009da0000058b306080000 *000000000c00a7a0000058b306080000000000000c00b2a0000094b306080000000000000c00bc *a0000094b306080000000000000c00c7a00000f0b306080000000000000c00d1a00000f0b30608 *0000000000000c00dca000002cb406080000000000000c00e6a000002cb406080000000000000c *00f1a0000078b406080000000000000c00fba0000078b406080000000000000c0004a10000bcb4 *06080000000000000c000fa10000e4b406080000000000000c0019a10000f0b406080000000000 *000c0023a10000f0b406080000000000000c002ca100006cb506080000000000000c0035a10000 *34ae1108000000000000100042a1000080b506080000000000000c004ca1000080b50608000000 *0000000c0057a10000a0b506080000000000000c0060a100003cae110800000000000010006da1 *000008ba06080000000000000c0077a10000a4b506080000000000000c0082a10000b4b5060800 *00000000000c008da10000c4b506080000000000000c0098a10000d4b506080000000000000c00 *a3a10000e4b506080000000000000c00aea10000f4b506080000000000000c00b9a1000028b606 *080000000000000c00c3a1000028b606080000000000000c00cea1000038b60608000000000000 *0c00d9a1000048b606080000000000000c00e4a1000058b606080000000000000c00efa1000068 *b606080000000000000c00faa1000078b606080000000000000c0005a2000088b6060800000000 *00000c0010a20000bcb606080000000000000c001aa20000bcb606080000000000000c0025a200 *00ccb606080000000000000c0030a20000dcb606080000000000000c003ba20000ecb606080000 *000000000c0046a20000fcb606080000000000000c0051a200000cb706080000000000000c005c *a200001cb706080000000000000c0067a2000050b706080000000000000c0071a2000050b70608 *0000000000000c007ca2000060b706080000000000000c0087a2000070b706080000000000000c *0092a2000080b706080000000000000c009da2000090b706080000000000000c00a8a20000a0b7 *06080000000000000c00b3a20000b0b706080000000000000c00bea20000e4b706080000000000 *000c00c8a20000e4b706080000000000000c00d3a20000f4b706080000000000000c00dea20000 *04b806080000000000000c00e9a2000014b806080000000000000c00f4a2000024b80608000000 *0000000c00ffa2000034b806080000000000000c000aa3000044b806080000000000000c0015a3 *000078b806080000000000000c001fa3000078b806080000000000000c002aa3000088b8060800 *00000000000c0035a3000098b806080000000000000c0040a30000a8b806080000000000000c00 *4ba30000b8b806080000000000000c0056a30000c8b806080000000000000c0061a30000d8b806 *080000000000000c006ca300000cb906080000000000000c0076a300000cb90608000000000000 *0c0081a3000040b906080000000000000c008ba3000048b906080000000000000c0095a3000048 *b906080000000000000c009ea3000060b906080000000000000c00a8a3000060b9060800000000 *00000c00b1a3000074b906080000000000000c00bca3000088b906080000000000000c00c6a300 *00b4b906080000000000000c00d0a30000b4b906080000000000000c00dba30000ccb906080000 *000000000c00e5a30000f8b906080000000000000c00efa3000008ba06080000000000000c00fa *a3000028ba06080000000000000c0003a4000044ae1108000000000000100010a4000074ba0608 *0000000000000c001aa400003cba06080000000000000c0024a400003cba06080000000000000c *002fa4000074ba06080000000000000c003aa40000b0ba06080000000000000c0043a400005cae *1108000000000000100050a40000c4ba06080000000000000c005aa40000c4ba06080000000000 *000c0065a400001cbb06080000000000000c006ea400006cae110800000000000010007ba40000 *84c306080000000000000c0085a4000030bb06080000000000000c008fa4000030bb0608000000 *0000000c0098a4000050bb06080000000000000c00a2a4000050bb06080000000000000c00ada4 *00008cbb06080000000000000c00b7a400008cbb06080000000000000c00c0a40000acbb060800 *00000000000c00caa40000acbb06080000000000000c00d5a40000e8bb06080000000000000c00 *dfa40000e8bb06080000000000000c00e8a4000008bc06080000000000000c00f2a4000008bc06 *080000000000000c00fda4000044bc06080000000000000c0007a5000044bc0608000000000000 *0c0010a5000064bc06080000000000000c001aa5000064bc06080000000000000c0025a50000a0 *bc06080000000000000c002fa50000a0bc06080000000000000c0038a50000c0bc060800000000 *00000c0042a50000c0bc06080000000000000c004da50000fcbc06080000000000000c0057a500 *00fcbc06080000000000000c0060a500001cbd06080000000000000c006aa500001cbd06080000 *000000000c0075a5000058bd06080000000000000c007fa5000058bd06080000000000000c0088 *a5000078bd06080000000000000c0092a5000078bd06080000000000000c009da50000b4bd0608 *0000000000000c00a7a50000b4bd06080000000000000c00b0a50000d4bd06080000000000000c *00baa50000d4bd06080000000000000c00c5a5000010be06080000000000000c00cfa5000010be *06080000000000000c00d8a5000030be06080000000000000c00e2a5000030be06080000000000 *000c00eda5000070be06080000000000000c00f7a5000070be06080000000000000c0002a60000 *e0be06080000000000000c000ca60000e0be06080000000000000c0017a600005cbf0608000000 *0000000c0021a600005cbf06080000000000000c002ca60000e4bf06080000000000000c0036a6 *0000e4bf06080000000000000c0041a6000078c006080000000000000c004ba6000078c0060800 *00000000000c0056a6000018c106080000000000000c0060a6000018c106080000000000000c00 *6ba60000c4c106080000000000000c0075a60000c4c106080000000000000c0080a600007cc206 *080000000000000c008aa600007cc206080000000000000c0093a600002cc30608000000000000 *0c009da600002cc306080000000000000c00a6a6000084c306080000000000000c00b1a60000a0 *c306080000000000000c00baa6000074ae11080000000000001000c7a60000ecc3060800000000 *00000c00d1a60000b4c306080000000000000c00dba60000b4c306080000000000000c00e6a600 *00ecc306080000000000000c00f1a6000028c406080000000000000c00faa600008cae11080000 *00000000100007a700002cc706080000000000000c0011a7000040c406080000000000000c001b *a7000040c406080000000000000c0024a7000060c406080000000000000c002ea7000060c40608 *0000000000000c0039a700009cc406080000000000000c0043a700009cc406080000000000000c *004ca70000bcc406080000000000000c0056a70000bcc406080000000000000c0061a70000f8c4 *06080000000000000c006ba70000f8c406080000000000000c0074a7000018c506080000000000 *000c007ea7000018c506080000000000000c0089a7000058c506080000000000000c0093a70000 *58c506080000000000000c009ea7000090c506080000000000000c00a8a7000090c50608000000 *0000000c00b3a7000000c606080000000000000c00bda7000000c606080000000000000c00c8a7 *00007cc606080000000000000c00d2a700007cc606080000000000000c00dba70000f0c6060800 *00000000000c00e5a70000f0c606080000000000000c00eea700002cc706080000000000000c00 *f9a7000048c706080000000000000c0002a8000094ae110800000000000010000fa8000094c706 *080000000000000c0019a800005cc706080000000000000c0023a800005cc70608000000000000 *0c002ea8000094c706080000000000000c0039a80000d0c706080000000000000c0042a80000d8 *c706080000000000000c004ba80000e0c706080000000000000c0054a80000c4ae110800000000 *0000100061a80000d4ae110800000000000010006ea80000e4ae110800000000000010007ba800 *00f4c706080000000000000c0085a80000f4c706080000000000000c0090a8000058c806080000 *000000000c009aa8000058c806080000000000000c00a5a80000bcc806080000000000000c00af *a80000bcc806080000000000000c00baa8000014c906080000000000000c00c3a80000f4ae1108 *0000000000001000d0a8000064e606080000000000000c00daa8000044c906080000000000000c *00e4a8000044c906080000000000000c00efa8000080c906080000000000000c00f9a8000080c9 *06080000000000000c0002a90000ccc906080000000000000c000ca90000ccc906080000000000 *000c0017a90000fcc906080000000000000c0022a9000010ca06080000000000000c002ca90000 *10ca06080000000000000c0037a900004cca06080000000000000c0041a900004cca0608000000 *0000000c004aa900008cca06080000000000000c0055a90000a0ca06080000000000000c005fa9 *0000a0ca06080000000000000c006aa90000dcca06080000000000000c0074a90000dcca060800 *00000000000c007da9000028cb06080000000000000c0087a9000028cb06080000000000000c00 *92a9000058cb06080000000000000c009da900006ccb06080000000000000c00a7a900006ccb06 *080000000000000c00b2a90000a8cb06080000000000000c00bca90000a8cb0608000000000000 *0c00c5a90000e8cb06080000000000000c00d0a90000fccb06080000000000000c00daa90000fc *cb06080000000000000c00e5a9000038cc06080000000000000c00efa9000038cc060800000000 *00000c00f8a9000078cc06080000000000000c0003aa00008ccc06080000000000000c000daa00 *008ccc06080000000000000c0018aa0000c8cc06080000000000000c0022aa0000c8cc06080000 *000000000c002baa000014cd06080000000000000c0035aa000014cd06080000000000000c0040 *aa000044cd06080000000000000c004baa000058cd06080000000000000c0055aa000058cd0608 *0000000000000c0060aa000094cd06080000000000000c006aaa000094cd06080000000000000c *0073aa0000d4cd06080000000000000c007eaa0000e8cd06080000000000000c0088aa0000e8cd *06080000000000000c0093aa000024ce06080000000000000c009daa000024ce06080000000000 *000c00a6aa000064ce06080000000000000c00b1aa000078ce06080000000000000c00bbaa0000 *78ce06080000000000000c00c6aa0000b4ce06080000000000000c00d0aa0000b4ce0608000000 *0000000c00d9aa000000cf06080000000000000c00e3aa000000cf06080000000000000c00eeaa *000030cf06080000000000000c00f9aa000044cf06080000000000000c0003ab000044cf060800 *00000000000c000eab000080cf06080000000000000c0018ab000080cf06080000000000000c00 *21ab0000c0cf06080000000000000c002cab0000d4cf06080000000000000c0036ab0000d4cf06 *080000000000000c0041ab000010d006080000000000000c004bab000010d00608000000000000 *0c0054ab000050d006080000000000000c005fab000064d006080000000000000c0069ab000064 *d006080000000000000c0074ab0000a0d006080000000000000c007eab0000a0d0060800000000 *00000c0087ab0000ecd006080000000000000c0091ab0000ecd006080000000000000c009cab00 *001cd106080000000000000c00a7ab000030d106080000000000000c00b1ab000030d106080000 *000000000c00bcab00006cd106080000000000000c00c6ab00006cd106080000000000000c00cf *ab0000acd106080000000000000c00daab0000c0d106080000000000000c00e4ab0000c0d10608 *0000000000000c00efab0000fcd106080000000000000c00f9ab0000fcd106080000000000000c *0002ac00003cd206080000000000000c000dac000044d206080000000000000c0018ac000088d2 *06080000000000000c0023ac0000a4d206080000000000000c002dac0000b0d206080000000000 *000c0037ac0000b0d206080000000000000c0040ac0000d0d206080000000000000c004bac0000 *fcd206080000000000000c0055ac0000fcd206080000000000000c0060ac000008d30608000000 *0000000c006aac00003cd306080000000000000c0074ac00004cd306080000000000000c007eac *00004cd306080000000000000c0089ac00009cd306080000000000000c0093ac00009cd3060800 *00000000000c009eac000004d406080000000000000c00a8ac000004d406080000000000000c00 *b3ac000030d406080000000000000c00beac00008cd406080000000000000c00c9ac0000a8d406 *080000000000000c00d3ac0000b4d406080000000000000c00ddac0000b4d40608000000000000 *0c00e6ac0000d4d406080000000000000c00f1ac000000d506080000000000000c00fbac000000 *d506080000000000000c0006ad00000cd506080000000000000c0010ad000040d5060800000000 *00000c001aad000050d506080000000000000c0024ad000050d506080000000000000c002fad00 *0090d506080000000000000c003aad0000f8d506080000000000000c0044ad0000f8d506080000 *000000000c004fad000034d606080000000000000c0059ad000068d606080000000000000c0063 *ad000078d606080000000000000c006dad000078d606080000000000000c0078ad0000b8d60608 *0000000000000c0083ad00000cd706080000000000000c008ead000028d706080000000000000c *0098ad000034d706080000000000000c00a2ad000034d706080000000000000c00abad000054d7 *06080000000000000c00b6ad000080d706080000000000000c00c0ad000080d706080000000000 *000c00cbad00008cd706080000000000000c00d5ad0000c0d706080000000000000c00dfad0000 *d0d706080000000000000c00e9ad0000d0d706080000000000000c00f4ad000020d80608000000 *0000000c00fead000020d806080000000000000c0009ae000088d806080000000000000c0013ae *000088d806080000000000000c001eae0000b4d806080000000000000c0029ae00000cd9060800 *00000000000c0034ae000028d906080000000000000c003eae000034d906080000000000000c00 *48ae000034d906080000000000000c0051ae000054d906080000000000000c005cae000080d906 *080000000000000c0066ae000080d906080000000000000c0071ae00008cd90608000000000000 *0c007bae0000c0d906080000000000000c0085ae0000d0d906080000000000000c008fae0000d0 *d906080000000000000c009aae00000cda06080000000000000c00a5ae000070da060800000000 *00000c00afae000070da06080000000000000c00baae0000acda06080000000000000c00c4ae00 *00e0da06080000000000000c00ceae0000f0da06080000000000000c00d8ae0000f0da06080000 *000000000c00e3ae00002cdb06080000000000000c00eeae00007cdb06080000000000000c00f9 *ae000098db06080000000000000c0003af0000a4db06080000000000000c000daf0000a4db0608 *0000000000000c0016af0000c4db06080000000000000c0021af0000f0db06080000000000000c *002baf0000f0db06080000000000000c0036af0000fcdb06080000000000000c0040af000030dc *06080000000000000c004aaf000040dc06080000000000000c0054af000040dc06080000000000 *000c005faf00008cdc06080000000000000c0069af00008cdc06080000000000000c0074af0000 *f0dc06080000000000000c007eaf0000f0dc06080000000000000c0089af00001cdd0608000000 *0000000c0094af00006cdd06080000000000000c009faf000088dd06080000000000000c00a9af *000094dd06080000000000000c00b3af000094dd06080000000000000c00bcaf0000b4dd060800 *00000000000c00c7af0000e0dd06080000000000000c00d1af0000e0dd06080000000000000c00 *dcaf0000ecdd06080000000000000c00e6af000020de06080000000000000c00f0af000030de06 *080000000000000c00faaf000030de06080000000000000c0005b0000064de0608000000000000 *0c0010b00000c0de06080000000000000c001ab00000c0de06080000000000000c0025b00000fc *de06080000000000000c002fb0000030df06080000000000000c0039b0000040df060800000000 *00000c0043b0000040df06080000000000000c004eb0000074df06080000000000000c0059b000 *00bcdf06080000000000000c0064b00000d8df06080000000000000c006eb00000e4df06080000 *000000000c0078b00000e4df06080000000000000c0081b0000004e006080000000000000c008c *b0000030e006080000000000000c0096b0000030e006080000000000000c00a1b000003ce00608 *0000000000000c00abb0000070e006080000000000000c00b5b0000080e006080000000000000c *00bfb0000080e006080000000000000c00cab00000c4e006080000000000000c00d4b00000c4e0 *06080000000000000c00dfb0000020e106080000000000000c00e9b0000020e106080000000000 *000c00f4b000004ce106080000000000000c00ffb0000098e106080000000000000c000ab10000 *b4e106080000000000000c0014b10000c0e106080000000000000c001eb10000c0e10608000000 *0000000c0027b10000e0e106080000000000000c0032b100000ce206080000000000000c003cb1 *00000ce206080000000000000c0047b1000018e206080000000000000c0051b100004ce2060800 *00000000000c005bb100005ce206080000000000000c0065b100005ce206080000000000000c00 *70b100008ce206080000000000000c007bb10000e4e206080000000000000c0085b10000e4e206 *080000000000000c0090b1000020e306080000000000000c009ab1000054e30608000000000000 *0c00a4b1000064e306080000000000000c00aeb1000064e306080000000000000c00b9b1000094 *e306080000000000000c00c4b10000d8e306080000000000000c00cfb10000f4e3060800000000 *00000c00d9b1000000e406080000000000000c00e3b1000000e406080000000000000c00ecb100 *0020e406080000000000000c00f7b100004ce406080000000000000c0001b200004ce406080000 *000000000c000cb2000058e406080000000000000c0016b200008ce406080000000000000c0020 *b200009ce406080000000000000c002ab200009ce406080000000000000c0035b20000cce40608 *0000000000000c0040b2000024e506080000000000000c004ab2000024e506080000000000000c *0055b2000060e506080000000000000c005fb2000094e506080000000000000c0069b20000a4e5 *06080000000000000c0073b20000a4e506080000000000000c007eb20000e0e506080000000000 *000c0088b20000e0e506080000000000000c0091b2000030e606080000000000000c009bb20000 *30e606080000000000000c00a6b2000064e606080000000000000c00b1b20000c8e60608000000 *0000000c00bab2000004af11080000000000001000c7b20000dce606080000000000000c00d1b2 *0000dce606080000000000000c00dcb2000034e706080000000000000c00e5b2000028af110800 *00000000001000f2b2000048e706080000000000000c00fcb2000048e706080000000000000c00 *07b30000a0e706080000000000000c0010b3000038af110800000000000010001db3000034f306 *080000000000000c0027b30000cce706080000000000000c0031b30000cce70608000000000000 *0c003cb3000020e806080000000000000c0046b3000020e806080000000000000c004fb3000040 *e806080000000000000c0059b3000040e806080000000000000c0064b3000078e8060800000000 *00000c006eb3000078e806080000000000000c0079b30000d8e806080000000000000c0083b300 *00d8e806080000000000000c008eb3000014e906080000000000000c0098b3000014e906080000 *000000000c00a3b3000060e906080000000000000c00adb3000060e906080000000000000c00b8 *b30000c0e906080000000000000c00c2b30000c0e906080000000000000c00cdb30000fce90608 *0000000000000c00d7b30000fce906080000000000000c00e2b3000048ea06080000000000000c *00ecb3000048ea06080000000000000c00f7b30000a4ea06080000000000000c0001b40000a4ea *06080000000000000c000ab40000c4ea06080000000000000c0014b40000c4ea06080000000000 *000c001fb40000fcea06080000000000000c0029b40000fcea06080000000000000c0034b40000 *60eb06080000000000000c003eb4000060eb06080000000000000c0049b400009ceb0608000000 *0000000c0053b400009ceb06080000000000000c005eb40000e8eb06080000000000000c0068b4 *0000e8eb06080000000000000c0073b400004cec06080000000000000c007db400004cec060800 *00000000000c0088b4000088ec06080000000000000c0092b4000088ec06080000000000000c00 *9db40000d4ec06080000000000000c00a7b40000d4ec06080000000000000c00b2b4000034ed06 *080000000000000c00bcb4000034ed06080000000000000c00c5b4000054ed0608000000000000 *0c00cfb4000054ed06080000000000000c00dab400008ced06080000000000000c00e4b400008c *ed06080000000000000c00efb40000f8ed06080000000000000c00f9b40000f8ed060800000000 *00000c0004b5000034ee06080000000000000c000eb5000034ee06080000000000000c0019b500 *0080ee06080000000000000c0023b5000080ee06080000000000000c002eb50000ecee06080000 *000000000c0038b50000ecee06080000000000000c0043b5000028ef06080000000000000c004d *b5000028ef06080000000000000c0058b5000074ef06080000000000000c0062b5000074ef0608 *0000000000000c006db50000e0ef06080000000000000c0077b50000e0ef06080000000000000c *0082b5000018f006080000000000000c008cb5000018f006080000000000000c0097b5000088f0 *06080000000000000c00a1b5000088f006080000000000000c00acb50000c4f006080000000000 *000c00b6b50000c4f006080000000000000c00c1b5000010f106080000000000000c00cbb50000 *10f106080000000000000c00d6b5000080f106080000000000000c00e0b5000080f10608000000 *0000000c00ebb50000bcf106080000000000000c00f5b50000bcf106080000000000000c0000b6 *000008f206080000000000000c000ab6000008f206080000000000000c0015b6000074f2060800 *00000000000c001fb6000074f206080000000000000c0028b6000098f206080000000000000c00 *32b6000098f206080000000000000c003db60000d0f206080000000000000c0047b60000d0f206 *080000000000000c0050b6000034f306080000000000000c005bb6000040af1108000000000000 *100068b6000054f306080000000000000c0071b6000048af110800000000000010007eb6000068 *f306080000000000000c0088b6000068f306080000000000000c0093b60000c0f3060800000000 *00000c009cb6000058af11080000000000001000a9b60000d4f306080000000000000c00b3b600 *00d4f306080000000000000c00beb600002cf406080000000000000c00c7b6000068af11080000 *000000001000d4b6000040f406080000000000000c00deb6000040f406080000000000000c00e9 *b6000098f406080000000000000c00f2b6000078af11080000000000001000ffb60000080f0708 *0000000000000c0009b70000c0f406080000000000000c0013b70000c0f406080000000000000c *001eb7000014f506080000000000000c0028b7000014f506080000000000000c0031b7000034f5 *06080000000000000c003bb7000034f506080000000000000c0046b700006cf506080000000000 *000c0050b700006cf506080000000000000c005bb70000ccf506080000000000000c0065b70000 *ccf506080000000000000c0070b7000008f606080000000000000c007ab7000008f60608000000 *0000000c0085b7000054f606080000000000000c008fb7000054f606080000000000000c009ab7 *0000b4f606080000000000000c00a4b70000b4f606080000000000000c00afb70000f0f6060800 *00000000000c00b9b70000f0f606080000000000000c00c4b700003cf706080000000000000c00 *ceb700003cf706080000000000000c00d9b7000098f706080000000000000c00e3b7000098f706 *080000000000000c00ecb70000b8f706080000000000000c00f6b70000b8f70608000000000000 *0c0001b80000f0f706080000000000000c000bb80000f0f706080000000000000c0016b8000054 *f806080000000000000c0020b8000054f806080000000000000c002bb8000090f8060800000000 *00000c0035b8000090f806080000000000000c0040b80000dcf806080000000000000c004ab800 *00dcf806080000000000000c0055b8000040f906080000000000000c005fb8000040f906080000 *000000000c006ab800007cf906080000000000000c0074b800007cf906080000000000000c007f *b80000c8f906080000000000000c0089b80000c8f906080000000000000c0094b8000028fa0608 *0000000000000c009eb8000028fa06080000000000000c00a7b8000048fa06080000000000000c *00b1b8000048fa06080000000000000c00bcb8000080fa06080000000000000c00c6b8000080fa *06080000000000000c00d1b80000ecfa06080000000000000c00dbb80000ecfa06080000000000 *000c00e6b8000028fb06080000000000000c00f0b8000028fb06080000000000000c00fbb80000 *74fb06080000000000000c0005b9000074fb06080000000000000c0010b90000e0fb0608000000 *0000000c001ab90000e0fb06080000000000000c0025b900001cfc06080000000000000c002fb9 *00001cfc06080000000000000c003ab9000068fc06080000000000000c0044b9000068fc060800 *00000000000c004fb90000d0fc06080000000000000c0059b90000d0fc06080000000000000c00 *62b90000f0fc06080000000000000c006cb90000f0fc06080000000000000c0077b9000028fd06 *080000000000000c0081b9000028fd06080000000000000c008cb9000098fd0608000000000000 *0c0096b9000098fd06080000000000000c00a1b90000d4fd06080000000000000c00abb90000d4 *fd06080000000000000c00b6b9000020fe06080000000000000c00c0b9000020fe060800000000 *00000c00cbb9000090fe06080000000000000c00d5b9000090fe06080000000000000c00e0b900 *00ccfe06080000000000000c00eab90000ccfe06080000000000000c00f5b9000018ff06080000 *000000000c00ffb9000018ff06080000000000000c000aba000084ff06080000000000000c0014 *ba000084ff06080000000000000c001dba0000a4ff06080000000000000c0027ba0000a4ff0608 *0000000000000c0032ba0000dcff06080000000000000c003cba0000dcff06080000000000000c *0047ba0000540007080000000000000c0051ba0000540007080000000000000c005cba00009000 *07080000000000000c0066ba0000900007080000000000000c0071ba0000dc0007080000000000 *000c007bba0000dc0007080000000000000c0086ba0000540107080000000000000c0090ba0000 *540107080000000000000c009bba0000900107080000000000000c00a5ba000090010708000000 *0000000c00b0ba0000dc0107080000000000000c00baba0000dc0107080000000000000c00c5ba *0000500207080000000000000c00cfba0000500207080000000000000c00d8ba00007002070800 *00000000000c00e2ba0000700207080000000000000c00edba0000a80207080000000000000c00 *f7ba0000a80207080000000000000c0002bb0000240307080000000000000c000cbb0000240307 *080000000000000c0017bb0000600307080000000000000c0021bb000060030708000000000000 *0c002cbb0000ac0307080000000000000c0036bb0000ac0307080000000000000c0041bb000028 *0407080000000000000c004bbb0000280407080000000000000c0056bb00006404070800000000 *00000c0060bb0000640407080000000000000c006bbb0000b00407080000000000000c0075bb00 *00b00407080000000000000c0080bb0000280507080000000000000c008abb0000280507080000 *000000000c0093bb0000480507080000000000000c009dbb0000480507080000000000000c00a8 *bb0000800507080000000000000c00b2bb0000800507080000000000000c00bdbb000004060708 *0000000000000c00c7bb0000040607080000000000000c00d2bb0000400607080000000000000c *00dcbb0000400607080000000000000c00e7bb00008c0607080000000000000c00f1bb00008c06 *07080000000000000c00fcbb0000100707080000000000000c0006bc0000100707080000000000 *000c0011bc00004c0707080000000000000c001bbc00004c0707080000000000000c0026bc0000 *980707080000000000000c0030bc0000980707080000000000000c003bbc000018080708000000 *0000000c0045bc0000180807080000000000000c004ebc0000380807080000000000000c0058bc *0000380807080000000000000c0063bc0000700807080000000000000c006dbc00007008070800 *00000000000c0078bc0000f80807080000000000000c0082bc0000f80807080000000000000c00 *8dbc0000340907080000000000000c0097bc0000340907080000000000000c00a2bc0000800907 *080000000000000c00acbc0000800907080000000000000c00b7bc0000080a0708000000000000 *0c00c1bc0000080a07080000000000000c00ccbc0000440a07080000000000000c00d6bc000044 *0a07080000000000000c00e1bc0000900a07080000000000000c00ebbc0000900a070800000000 *00000c00f6bc0000140b07080000000000000c0000bd0000140b07080000000000000c0009bd00 *00340b07080000000000000c0013bd0000340b07080000000000000c001ebd00006c0b07080000 *000000000c0028bd00006c0b07080000000000000c0033bd0000fc0b07080000000000000c003d *bd0000fc0b07080000000000000c0048bd0000380c07080000000000000c0052bd0000380c0708 *0000000000000c005dbd0000840c07080000000000000c0067bd0000840c07080000000000000c *0072bd0000140d07080000000000000c007cbd0000140d07080000000000000c0087bd0000500d *07080000000000000c0091bd0000500d07080000000000000c009cbd00009c0d07080000000000 *000c00a6bd00009c0d07080000000000000c00b1bd0000280e07080000000000000c00bbbd0000 *280e07080000000000000c00c4bd00004c0e07080000000000000c00cebd00004c0e0708000000 *0000000c00d9bd0000840e07080000000000000c00e3bd0000840e07080000000000000c00ecbd *0000080f07080000000000000c00f7bd000080af1108000000000000100004be0000280f070800 *00000000000c000dbe000088af110800000000000010001abe00003c0f07080000000000000c00 *24be00003c0f07080000000000000c002fbe0000940f07080000000000000c0038be000098af11 *08000000000000100045be0000a80f07080000000000000c004fbe0000a80f0708000000000000 *0c005abe0000001007080000000000000c0063be0000081007080000000000000c006cbe000010 *1007080000000000000c0075be0000c0af1108000000000000100082be0000d0af110800000000 *000010008fbe0000e0af110800000000000010009cbe0000241007080000000000000c00a6be00 *00241007080000000000000c00b1be0000881007080000000000000c00bbbe0000881007080000 *000000000c00c6be0000ec1007080000000000000c00d0be0000ec1007080000000000000c00db *be0000441107080000000000000c00e4be000004b011080000000000001000f1be000058110708 *0000000000000c00fbbe0000581107080000000000000c0006bf0000b01107080000000000000c *000fbf000014b0110800000000000010001cbf0000841507080000000000000c0026bf0000c811 *07080000000000000c0030bf0000c81107080000000000000c0039bf0000f41107080000000000 *000c0043bf0000f41107080000000000000c004cbf00001c1207080000000000000c0056bf0000 *1c1207080000000000000c005fbf0000481207080000000000000c0069bf000048120708000000 *0000000c0072bf0000701207080000000000000c007cbf0000701207080000000000000c0085bf *0000841207080000000000000c008fbf0000841207080000000000000c0098bf0000cc12070800 *00000000000c00a2bf0000cc1207080000000000000c00abbf0000f81207080000000000000c00 *b5bf0000f81207080000000000000c00bebf0000201307080000000000000c00c8bf0000201307 *080000000000000c00d1bf0000341307080000000000000c00dbbf000034130708000000000000 *0c00e4bf00007c1307080000000000000c00eebf00007c1307080000000000000c00f7bf0000a8 *1307080000000000000c0001c00000a81307080000000000000c000ac00000d013070800000000 *00000c0014c00000d01307080000000000000c001dc00000e41307080000000000000c0027c000 *00e41307080000000000000c0030c000002c1407080000000000000c003ac000002c1407080000 *000000000c0043c00000581407080000000000000c004dc00000581407080000000000000c0056 *c00000841407080000000000000c0060c00000841407080000000000000c0069c00000c8140708 *0000000000000c0073c00000c81407080000000000000c007cc00000841507080000000000000c *0087c00000a01507080000000000000c0090c000001cb0110800000000000010009dc00000ec15 *07080000000000000c00a7c00000b41507080000000000000c00b1c00000b41507080000000000 *000c00bcc00000ec1507080000000000000c00c7c00000281607080000000000000c00d0c00000 *48b011080000000000001000ddc000003c1607080000000000000c00e7c000003c160708000000 *0000000c00f2c00000941607080000000000000c00fbc0000058b01108000000000000100008c1 *0000082107080000000000000c0012c10000c01607080000000000000c001cc10000c016070800 *00000000000c0027c10000fc1607080000000000000c0031c10000fc1607080000000000000c00 *3cc10000341707080000000000000c0046c10000341707080000000000000c004fc10000541707 *080000000000000c0059c10000541707080000000000000c0064c100008c170708000000000000 *0c006ec100008c1707080000000000000c0079c10000c81707080000000000000c0083c10000c8 *1707080000000000000c008ec10000141807080000000000000c0098c100001418070800000000 *00000c00a3c10000701807080000000000000c00adc10000701807080000000000000c00b6c100 *00941807080000000000000c00c0c10000941807080000000000000c00cbc10000cc1807080000 *000000000c00d5c10000cc1807080000000000000c00e0c10000041907080000000000000c00ea *c10000041907080000000000000c00f3c10000241907080000000000000c00fdc1000024190708 *0000000000000c0008c200005c1907080000000000000c0012c200005c1907080000000000000c *001dc20000981907080000000000000c0027c20000981907080000000000000c0032c20000e419 *07080000000000000c003cc20000e41907080000000000000c0047c20000401a07080000000000 *000c0051c20000401a07080000000000000c005ac20000641a07080000000000000c0064c20000 *641a07080000000000000c006fc200009c1a07080000000000000c0079c200009c1a0708000000 *0000000c0084c20000d81a07080000000000000c008ec20000d81a07080000000000000c0099c2 *0000101b07080000000000000c00a3c20000101b07080000000000000c00acc20000301b070800 *00000000000c00b6c20000301b07080000000000000c00c1c20000681b07080000000000000c00 *cbc20000681b07080000000000000c00d6c20000a41b07080000000000000c00e0c20000a41b07 *080000000000000c00ebc20000f01b07080000000000000c00f5c20000f01b0708000000000000 *0c0000c300004c1c07080000000000000c000ac300004c1c07080000000000000c0013c3000070 *1c07080000000000000c001dc30000701c07080000000000000c0028c30000a81c070800000000 *00000c0032c30000a81c07080000000000000c003dc30000e41c07080000000000000c0047c300 *00e41c07080000000000000c0052c30000201d07080000000000000c005cc30000201d07080000 *000000000c0067c30000581d07080000000000000c0071c30000581d07080000000000000c007c *c30000941d07080000000000000c0086c30000941d07080000000000000c0091c30000e01d0708 *0000000000000c009bc30000e01d07080000000000000c00a6c300003c1e07080000000000000c *00b0c300003c1e07080000000000000c00b9c30000601e07080000000000000c00c3c30000601e *07080000000000000c00cec30000981e07080000000000000c00d8c30000981e07080000000000 *000c00e1c30000082107080000000000000c00ecc3000088b011080000000000001000f9c30000 *282107080000000000000c0002c4000090b0110800000000000010000fc400003c210708000000 *0000000c0019c400003c2107080000000000000c0024c40000942107080000000000000c002dc4 *0000a0b0110800000000000010003ac40000a82107080000000000000c0044c40000a821070800 *00000000000c004fc40000002207080000000000000c0058c40000c4b011080000000000001000 *65c40000142207080000000000000c006fc40000142207080000000000000c007ac40000842207 *080000000000000c0084c40000842207080000000000000c008dc40000b0220708000000000000 *0c0097c40000b02207080000000000000c00a0c40000d02207080000000000000c00aac40000d0 *2207080000000000000c00b3c40000fc2207080000000000000c00bdc40000fc22070800000000 *00000c00c6c40000202307080000000000000c00d0c40000202307080000000000000c00d9c400 *006c2307080000000000000c00e3c400006c2307080000000000000c00ecc40000982307080000 *000000000c00f6c40000982307080000000000000c00ffc40000bc2307080000000000000c0009 *c50000bc2307080000000000000c0012c50000f82307080000000000000c001cc50000f8230708 *0000000000000c0025c50000242407080000000000000c002fc50000242407080000000000000c *0038c50000482407080000000000000c0042c50000482407080000000000000c004bc500008424 *07080000000000000c0055c50000842407080000000000000c005ec50000b02407080000000000 *000c0068c50000b02407080000000000000c0071c50000d42407080000000000000c007bc50000 *d42407080000000000000c0084c50000102507080000000000000c008ec5000010250708000000 *0000000c0097c500003c2507080000000000000c00a1c500003c2507080000000000000c00aac5 *0000602507080000000000000c00b4c50000602507080000000000000c00bdc500009c25070800 *00000000000c00c7c500009c2507080000000000000c00d0c50000c82507080000000000000c00 *dac50000c82507080000000000000c00e3c50000ec2507080000000000000c00edc50000ec2507 *080000000000000c00f6c50000282607080000000000000c0000c6000028260708000000000000 *0c0009c60000542607080000000000000c0013c60000542607080000000000000c001cc6000078 *2607080000000000000c0026c60000782607080000000000000c002fc60000b426070800000000 *00000c0039c60000b42607080000000000000c0042c60000e02607080000000000000c004cc600 *00e02607080000000000000c0055c60000042707080000000000000c005fc60000042707080000 *000000000c0068c60000402707080000000000000c0072c60000402707080000000000000c007b *c600006c2707080000000000000c0085c600006c2707080000000000000c008ec6000090270708 *0000000000000c0098c60000902707080000000000000c00a1c60000cc2707080000000000000c *00abc60000cc2707080000000000000c00b4c60000f82707080000000000000c00bec60000f827 *07080000000000000c00c7c600001c2807080000000000000c00d1c600001c2807080000000000 *000c00dac60000582807080000000000000c00e4c60000582807080000000000000c00edc60000 *842807080000000000000c00f7c60000842807080000000000000c0000c70000a8280708000000 *0000000c000ac70000a82807080000000000000c0013c70000e82807080000000000000c001dc7 *0000e82807080000000000000c0026c70000302a07080000000000000c0030c70000302a070800 *00000000000c003bc70000642a07080000000000000c0045c70000642a07080000000000000c00 *50c70000282b07080000000000000c005ac70000282b07080000000000000c0065c700006c2b07 *080000000000000c006fc700006c2b07080000000000000c007ac70000a82b0708000000000000 *0c0084c70000a82b07080000000000000c008fc70000f42b07080000000000000c0099c70000f4 *2b07080000000000000c00a4c70000582c07080000000000000c00aec70000582c070800000000 *00000c00b9c70000942c07080000000000000c00c3c70000942c07080000000000000c00cec700 *00d02c07080000000000000c00d8c70000d02c07080000000000000c00e3c700000c2d07080000 *000000000c00edc700000c2d07080000000000000c00f8c70000582d07080000000000000c0002 *c80000582d07080000000000000c000dc80000b82d07080000000000000c0017c80000b82d0708 *0000000000000c0022c80000f42d07080000000000000c002cc80000f42d07080000000000000c *0037c80000302e07080000000000000c0041c80000302e07080000000000000c004cc800006c2e *07080000000000000c0056c800006c2e07080000000000000c0061c80000b82e07080000000000 *000c006bc80000b82e07080000000000000c0076c80000182f07080000000000000c0080c80000 *182f07080000000000000c008bc80000542f07080000000000000c0095c80000542f0708000000 *0000000c00a0c80000902f07080000000000000c00aac80000902f07080000000000000c00b5c8 *0000cc2f07080000000000000c00bfc80000cc2f07080000000000000c00cac800000830070800 *00000000000c00d4c80000083007080000000000000c00dfc80000443007080000000000000c00 *e9c80000443007080000000000000c00f4c80000803007080000000000000c00fec80000803007 *080000000000000c0009c90000cc3007080000000000000c0013c90000cc300708000000000000 *0c001ec900002c3107080000000000000c0028c900002c3107080000000000000c0033c9000068 *3107080000000000000c003dc90000683107080000000000000c0048c90000a431070800000000 *00000c0052c90000a43107080000000000000c005dc90000e03107080000000000000c0067c900 *00e03107080000000000000c0072c900002c3207080000000000000c007cc900002c3207080000 *000000000c0087c900008c3207080000000000000c0091c900008c3207080000000000000c009c *c90000c83207080000000000000c00a6c90000c83207080000000000000c00b1c9000004330708 *0000000000000c00bbc90000043307080000000000000c00c6c90000403307080000000000000c *00d0c90000403307080000000000000c00dbc900008c3307080000000000000c00e5c900008c33 *07080000000000000c00f0c90000ec3307080000000000000c00fac90000ec3307080000000000 *000c0005ca0000283407080000000000000c000fca0000283407080000000000000c001aca0000 *643407080000000000000c0024ca0000643407080000000000000c002fca0000a0340708000000 *0000000c0039ca0000a03407080000000000000c0044ca0000ec3407080000000000000c004eca *0000ec3407080000000000000c0059ca00004c3507080000000000000c0063ca00004c35070800 *00000000000c006eca0000883507080000000000000c0078ca0000883507080000000000000c00 *83ca0000c43507080000000000000c008dca0000c43507080000000000000c0098ca0000003607 *080000000000000c00a2ca0000003607080000000000000c00adca00004c360708000000000000 *0c00b7ca00004c3607080000000000000c00c2ca0000ac3607080000000000000c00ccca0000ac *3607080000000000000c00d7ca0000e83607080000000000000c00e1ca0000e836070800000000 *00000c00ecca0000243707080000000000000c00f6ca0000243707080000000000000c0001cb00 *00603707080000000000000c000bcb0000603707080000000000000c0016cb0000ac3707080000 *000000000c0020cb0000ac3707080000000000000c002bcb00000c3807080000000000000c0035 *cb00000c3807080000000000000c0040cb0000483807080000000000000c004acb000048380708 *0000000000000c0055cb0000843807080000000000000c005fcb0000843807080000000000000c *006acb0000c03807080000000000000c0074cb0000c03807080000000000000c007fcb00000c39 *07080000000000000c0089cb00000c3907080000000000000c0094cb00006c3907080000000000 *000c009ecb00006c3907080000000000000c00a9cb0000a83907080000000000000c00b3cb0000 *a83907080000000000000c00becb0000e43907080000000000000c00c8cb0000e4390708000000 *0000000c00d3cb0000203a07080000000000000c00ddcb0000203a07080000000000000c00e8cb *00006c3a07080000000000000c00f2cb00006c3a07080000000000000c00fdcb0000cc3a070800 *00000000000c0007cc0000cc3a07080000000000000c0012cc0000083b07080000000000000c00 *1ccc0000083b07080000000000000c0027cc0000443b07080000000000000c0031cc0000443b07 *080000000000000c003ccc0000803b07080000000000000c0046cc0000803b0708000000000000 *0c0051cc0000bc3b07080000000000000c005bcc0000bc3b07080000000000000c0064cc0000d4 *3f07080000000000000c006ecc0000d43f07080000000000000c0079cc00000440070800000000 *00000c0083cc0000044007080000000000000c008ecc00005c4007080000000000000c0098cc00 *005c4007080000000000000c00a3cc0000004107080000000000000c00adcc0000004107080000 *000000000c00b6cc0000284107080000000000000c00c0cc0000284107080000000000000c00c9 *cc0000504107080000000000000c00d3cc0000504107080000000000000c00dccc000078410708 *0000000000000c00e6cc0000784107080000000000000c00efcc0000a04107080000000000000c *00f9cc0000a04107080000000000000c0002cd0000c84107080000000000000c000ccd0000c841 *07080000000000000c0015cd0000f04107080000000000000c001fcd0000f04107080000000000 *000c0028cd0000184207080000000000000c0032cd0000184207080000000000000c003bcd0000 *404207080000000000000c0045cd0000404207080000000000000c004ecd000068420708000000 *0000000c0058cd0000684207080000000000000c0061cd0000904207080000000000000c006bcd *0000904207080000000000000c0074cd0000b84207080000000000000c007ecd0000b842070800 *00000000000c0087cd0000e04207080000000000000c0091cd0000e04207080000000000000c00 *9acd0000084307080000000000000c00a4cd0000084307080000000000000c00adcd0000304307 *080000000000000c00b7cd0000304307080000000000000c00c0cd000058430708000000000000 *0c00cacd0000584307080000000000000c00d3cd0000804307080000000000000c00ddcd000080 *4307080000000000000c00e6cd0000a84307080000000000000c00f0cd0000a843070800000000 *00000c00f9cd0000044407080000000000000c0004ce0000144407080000000000000c000fce00 *00244407080000000000000c001ace0000484407080000000000000c0024ce0000484407080000 *000000000c002fce0000684407080000000000000c0039ce0000684407080000000000000c0044 *ce0000744407080000000000000c004fce0000844407080000000000000c005ace000094440708 *0000000000000c0065ce0000d44407080000000000000c006fce0000d44407080000000000000c *007ace0000f44407080000000000000c0084ce0000f44407080000000000000c008fce00001445 *07080000000000000c0099ce00002c4507080000000000000c00a4ce0000644507080000000000 *000c00afce0000ac4507080000000000000c00bace0000f44507080000000000000c00c5ce0000 *2c4607080000000000000c00d0ce0000744607080000000000000c00dbce0000dc460708000000 *0000000c00e5ce0000484707080000000000000c00efce0000484707080000000000000c00f8ce *00008c4707080000000000000c0002cf00008c4707080000000000000c000bcf0000b447070800 *00000000000c0015cf0000b44707080000000000000c001ecf0000fc4707080000000000000c00 *28cf0000fc4707080000000000000c0031cf0000f04807080000000000000c003bcf0000f04807 *080000000000000c0044cf0000504907080000000000000c004ecf000050490708000000000000 *0c0057cf0000704907080000000000000c0061cf0000704907080000000000000c006acf000098 *4907080000000000000c0074cf0000984907080000000000000c007dcf0000b849070800000000 *00000c0087cf0000b84907080000000000000c0090cf0000e04907080000000000000c009acf00 *00e04907080000000000000c00a3cf0000084a07080000000000000c00adcf0000084a07080000 *000000000c00b6cf0000284a07080000000000000c00c0cf0000284a07080000000000000c00c9 *cf0000704a07080000000000000c00d3cf0000704a07080000000000000c00dccf00001c4c0708 *0000000000000c00e7cf0000444c07080000000000000c00f2cf0000644c07080000000000000c *00fccf0000644c07080000000000000c0007d00000704c07080000000000000c0012d000007c4c *07080000000000000c001dd00000a44c07080000000000000c0028d00000c44c07080000000000 *000c0032d00000c44c07080000000000000c003dd00000e44c07080000000000000c0047d00000 *e44c07080000000000000c0052d00000044d07080000000000000c005cd00000044d0708000000 *0000000c0067d00000104d07080000000000000c0072d000001c4d07080000000000000c007dd0 *0000444d07080000000000000c0088d00000644d07080000000000000c0092d00000644d070800 *00000000000c009dd00000844d07080000000000000c00a7d00000844d07080000000000000c00 *b2d00000904d07080000000000000c00bdd00000b84d07080000000000000c00c8d00000c44d07 *080000000000000c00d3d00000e44d07080000000000000c00ddd00000e44d0708000000000000 *0c00e8d00000044e07080000000000000c00f2d00000044e07080000000000000c00fdd0000024 *4e07080000000000000c0007d10000244e07080000000000000c0012d10000444e070800000000 *00000c001cd10000644e07080000000000000c0026d10000644e07080000000000000c002fd100 *004c5407080000000000000c003ad10000585407080000000000000c0045d10000785407080000 *000000000c004fd10000785407080000000000000c005ad10000845407080000000000000c0065 *d10000905407080000000000000c0070d10000cc5407080000000000000c007ad10000cc540708 *0000000000000c0085d10000ec5407080000000000000c008fd10000ec5407080000000000000c *009ad10000f85407080000000000000c00a5d10000205507080000000000000c00b0d100005c55 *07080000000000000c00bad100005c5507080000000000000c00c5d10000685507080000000000 *000c00d0d10000905507080000000000000c00dbd10000cc5507080000000000000c00e5d10000 *cc5507080000000000000c00f0d10000ec5507080000000000000c00fad10000ec550708000000 *0000000c0005d200000c5607080000000000000c000fd200000c5607080000000000000c001ad2 *0000185607080000000000000c0025d20000405607080000000000000c0030d200007c56070800 *00000000000c003ad200007c5607080000000000000c0045d20000885607080000000000000c00 *50d20000b05607080000000000000c005bd20000d05607080000000000000c0065d20000d05607 *080000000000000c0070d20000f05607080000000000000c007ad20000f0560708000000000000 *0c0085d20000fc5607080000000000000c0090d20000085707080000000000000c009bd2000028 *5707080000000000000c00a5d20000285707080000000000000c00b0d200003457070800000000 *00000c00bbd200005c5707080000000000000c00c6d20000845707080000000000000c00d1d200 *00c05707080000000000000c00dbd20000c05707080000000000000c00e6d20000e05707080000 *000000000c00f0d20000e05707080000000000000c00fbd20000005807080000000000000c0005 *d30000005807080000000000000c0010d30000205807080000000000000c001ad3000020580708 *0000000000000c0025d30000405807080000000000000c002fd30000605807080000000000000c *0039d30000605807080000000000000c0042d30000785e07080000000000000c004cd30000785e *07080000000000000c0055d30000c05e07080000000000000c005fd30000c05e07080000000000 *000c0068d30000e05e07080000000000000c0072d30000e05e07080000000000000c007bd30000 *085f07080000000000000c0085d30000085f07080000000000000c008ed30000505f0708000000 *0000000c0098d30000505f07080000000000000c00a1d30000506307080000000000000c00abd3 *0000506307080000000000000c00b6d300007c6307080000000000000c00c1d300008c63070800 *00000000000c00ccd30000746407080000000000000c00d7d30000a06307080000000000000c00 *e2d300000c6407080000000000000c00ecd30000146407080000000000000c00f6d30000146407 *080000000000000c00ffd30000286407080000000000000c0009d4000028640708000000000000 *0c0012d400003c6407080000000000000c001dd40000686407080000000000000c0027d4000074 *6407080000000000000c0031d40000a46407080000000000000c003bd40000a464070800000000 *00000c0046d40000fc6407080000000000000c0050d40000fc6407080000000000000c005bd400 *00a06507080000000000000c0064d40000e4b21108000000000000100071d40000b46507080000 *000000000c007bd40000b46507080000000000000c0086d400000c6607080000000000000c008f *d40000f4b2110800000000000010009cd400002c6607080000000000000c00a6d4000018660708 *0000000000000c00b0d40000186607080000000000000c00b9d400002c6607080000000000000c *00c4d40000806607080000000000000c00cdd4000004b311080000000000001000dad400001c6b *07080000000000000c00e4d40000ac6607080000000000000c00eed40000d06607080000000000 *000c00f8d40000d06607080000000000000c0003d50000ec6607080000000000000c000ed50000 *106707080000000000000c009d5c0000206707080000000000000c00a75c000020670708000000 *0000000c0018d50000586707080000000000000c0022d50000586707080000000000000c002dd5 *00008c6707080000000000000c0037d500008c6707080000000000000c0042d50000f467070800 *00000000000c004cd50000f46707080000000000000c0057d50000306807080000000000000c00 *61d50000306807080000000000000c006cd50000806807080000000000000c0076d50000806807 *080000000000000c0081d50000bc6807080000000000000c008bd50000bc680708000000000000 *0c006f5a00001c6907080000000000000c00795a00001c6907080000000000000c0096d5000074 *6907080000000000000c00a0d50000746907080000000000000c00abd50000a869070800000000 *00000c00b5d50000a86907080000000000000c00c0d50000106a07080000000000000c00cad500 *00106a07080000000000000c00d5d50000806a07080000000000000c00dfd50000806a07080000 *000000000c00ead50000b46a07080000000000000c00f4d50000b46a07080000000000000c00fd *d500001c6b07080000000000000c0008d60000406b07080000000000000c0011d600000cb31108 *00000000000010001ed60000606b07080000000000000c0028d600004c6b07080000000000000c *0032d600004c6b07080000000000000c003bd60000606b07080000000000000c0046d60000b46b *07080000000000000c004fd600001cb3110800000000000010005cd60000c86b07080000000000 *000c0066d60000c86b07080000000000000c0071d60000206c07080000000000000c007ad60000 *2cb31108000000000000100087d60000346c07080000000000000c0091d60000346c0708000000 *0000000c009cd600008c6c07080000000000000c00a5d600003cb311080000000000001000b2d6 *0000a06c07080000000000000c00bcd60000a06c07080000000000000c00c7d60000f86c070800 *00000000000c00d0d600004cb311080000000000001000ddd600000c6d07080000000000000c00 *e7d600000c6d07080000000000000c00f2d60000646d07080000000000000c00fbd600005cb311 *08000000000000100008d70000786d07080000000000000c0012d70000786d0708000000000000 *0c001dd70000d06d07080000000000000c0026d700006cb31108000000000000100033d70000e4 *6d07080000000000000c003dd70000e46d07080000000000000c0048d700003c6e070800000000 *00000c0051d700007cb3110800000000000010005ed700005c6e07080000000000000c0068d700 *00486e07080000000000000c0072d70000486e07080000000000000c007bd700005c6e07080000 *000000000c0086d70000b06e07080000000000000c008fd700008cb3110800000000000010009c *d70000c46e07080000000000000c00a6d70000c46e07080000000000000c00b1d700001c6f0708 *0000000000000c00bad700009cb311080000000000001000c7d700003c6f07080000000000000c *00d1d70000286f07080000000000000c00dbd70000286f07080000000000000c00e4d700003c6f *07080000000000000c00efd70000906f07080000000000000c00f8d70000acb311080000000000 *00100005d80000a46f07080000000000000c000fd80000a46f07080000000000000c001ad80000 *fc6f07080000000000000c0023d80000bcb31108000000000000100030d800001c700708000000 *0000000c003ad80000087007080000000000000c0044d80000087007080000000000000c004dd8 *00001c7007080000000000000c0058d80000707007080000000000000c0061d80000ccb3110800 *000000000010006ed80000847007080000000000000c0078d80000847007080000000000000c00 *83d80000dc7007080000000000000c008cd80000dcb31108000000000000100099d80000fc7007 *080000000000000c00a3d80000e87007080000000000000c00add80000e8700708000000000000 *0c00b6d80000fc7007080000000000000c00c1d80000507107080000000000000c00cad80000ec *b311080000000000001000d7d80000647107080000000000000c00e1d800006471070800000000 *00000c00ecd80000bc7107080000000000000c00f5d80000fcb31108000000000000100002d900 *00d07107080000000000000c000cd90000d07107080000000000000c0017d90000287207080000 *000000000c0020d900000cb4110800000000000010002dd90000407207080000000000000c0037 *d90000407207080000000000000c0042d90000a07207080000000000000c004bd900001cb41108 *000000000000100058d90000b47207080000000000000c0062d90000b47207080000000000000c *006dd900000c7307080000000000000c0076d900002cb41108000000000000100083d900002073 *07080000000000000c008dd90000207307080000000000000c0098d90000787307080000000000 *000c00a1d900003cb411080000000000001000aed900008c7307080000000000000c00b8d90000 *8c7307080000000000000c00c3d90000e47307080000000000000c00ccd900004cb41108000000 *0000001000d9d90000fc7307080000000000000c00e3d90000fc7307080000000000000c00eed9 *00005c7407080000000000000c00f7d900005cb41108000000000000100004da00007074070800 *00000000000c000eda0000707407080000000000000c0019da0000c87407080000000000000c00 *22da00006cb4110800000000000010002fda0000e87407080000000000000c0039da0000d47407 *080000000000000c0043da0000d47407080000000000000c004cda0000e8740708000000000000 *0c0057da00003c7507080000000000000c0060da00007cb4110800000000000010006dda000050 *7507080000000000000c0077da0000507507080000000000000c0082da0000a875070800000000 *00000c008bda00008cb41108000000000000100098da0000c87507080000000000000c00a2da00 *00b47507080000000000000c00acda0000b47507080000000000000c00b5da0000c87507080000 *000000000c00c0da00001c7607080000000000000c00c9da00009cb411080000000000001000d6 *da0000347607080000000000000c00e0da0000347607080000000000000c00ebda000094760708 *0000000000000c00f4da0000acb41108000000000000100001db0000a87607080000000000000c *000bdb0000a87607080000000000000c0016db0000007707080000000000000c001fdb0000bcb4 *110800000000000010002cdb0000207707080000000000000c0036db00000c7707080000000000 *000c0040db00000c7707080000000000000c0049db0000207707080000000000000c0054db0000 *747707080000000000000c005ddb0000ccb4110800000000000010006adb000088770708000000 *0000000c0074db0000887707080000000000000c007fdb0000e07707080000000000000c0088db *0000dcb41108000000000000100095db0000f47707080000000000000c009fdb0000f477070800 *00000000000c00aadb00004c7807080000000000000c00b3db0000ecb411080000000000001000 *c0db0000647807080000000000000c00cadb0000647807080000000000000c00d5db0000c47807 *080000000000000c00dedb0000fcb411080000000000001000ebdb0000d8780708000000000000 *0c00f5db0000d87807080000000000000c0000dc0000307907080000000000000c0009dc00000c *b51108000000000000100016dc0000507907080000000000000c0020dc00003c79070800000000 *00000c002adc00003c7907080000000000000c0033dc0000507907080000000000000c003edc00 *00a47907080000000000000c0047dc00001cb51108000000000000100054dc0000c47907080000 *000000000c005edc0000b07907080000000000000c0068dc0000b07907080000000000000c0071 *dc0000c47907080000000000000c007cdc0000187a07080000000000000c0085dc00002cb51108 *000000000000100092dc0000387a07080000000000000c009cdc0000247a07080000000000000c *00a6dc0000247a07080000000000000c00afdc0000387a07080000000000000c00badc00008c7a *07080000000000000c00c3dc00003cb511080000000000001000d0dc0000ac7a07080000000000 *000c00dadc0000987a07080000000000000c00e4dc0000987a07080000000000000c00eddc0000 *ac7a07080000000000000c00f8dc0000007b07080000000000000c0001dd00004cb51108000000 *00000010000edd0000207b07080000000000000c0018dd00000c7b07080000000000000c0022dd *00000c7b07080000000000000c002bdd0000207b07080000000000000c0036dd0000747b070800 *00000000000c003fdd00005cb5110800000000000010004cdd0000887b07080000000000000c00 *56dd0000887b07080000000000000c0061dd0000e07b07080000000000000c006add00006cb511 *08000000000000100077dd0000f87b07080000000000000c0081dd0000f87b0708000000000000 *0c008cdd0000587c07080000000000000c0095dd00007cb511080000000000001000a2dd00006c *7c07080000000000000c00acdd00006c7c07080000000000000c00b7dd0000c47c070800000000 *00000c00c0dd00008cb511080000000000001000cddd0000d87c07080000000000000c00d7dd00 *00d87c07080000000000000c00e2dd0000307d07080000000000000c00ebdd00009cb511080000 *000000001000f8dd0000447d07080000000000000c0002de0000447d07080000000000000c000d *de00009c7d07080000000000000c0016de0000acb51108000000000000100023de0000b47d0708 *0000000000000c002dde0000b47d07080000000000000c0038de0000147e07080000000000000c *0041de0000bcb5110800000000000010004ede0000287e07080000000000000c0058de0000287e *07080000000000000c0063de0000807e07080000000000000c006cde0000ccb511080000000000 *00100079de00005c8107080000000000000c0083de0000a47e07080000000000000c008dde0000 *a47e07080000000000000c00d45e0000047f07080000000000000c00de5e0000047f0708000000 *0000000c0098de0000407f07080000000000000c00a2de0000407f07080000000000000c00adde *0000a07f07080000000000000c00b7de0000a07f07080000000000000c00c2de0000d47f070800 *00000000000c00ccde0000d47f07080000000000000c00d5de00001c8007080000000000000c00 *e0de00002c8007080000000000000c00ebde00005c8107080000000000000c00f6de0000648007 *080000000000000c0001df0000988007080000000000000c000bdf0000a4800708000000000000 *0c0015df0000a48007080000000000000c001edf0000d08007080000000000000c0028df0000d0 *8007080000000000000c0031df0000008107080000000000000c003bdf00000081070800000000 *00000c0044df0000208107080000000000000c004fdf00004c8107080000000000000c0059df00 *00788107080000000000000c0062df0000d4b5110800000000000010006fdf0000fc8e07080000 *000000000c0079df0000988107080000000000000c0083df0000988107080000000000000c008c *df0000b88107080000000000000c0096df0000b88107080000000000000c00a1df0000f4810708 *0000000000000c00abdf0000f48107080000000000000c00b4df0000148207080000000000000c *00bedf0000148207080000000000000c00c9df0000508207080000000000000c00d3df00005082 *07080000000000000c00dcdf0000708207080000000000000c00e6df0000708207080000000000 *000c00f1df0000ac8207080000000000000c00fbdf0000ac8207080000000000000c0004e00000 *cc8207080000000000000c000ee00000cc8207080000000000000c0019e0000008830708000000 *0000000c0023e00000088307080000000000000c002ce00000288307080000000000000c0036e0 *0000288307080000000000000c0041e00000648307080000000000000c004be000006483070800 *00000000000c0054e00000848307080000000000000c005ee00000848307080000000000000c00 *69e00000c08307080000000000000c0073e00000c08307080000000000000c007ce00000e08307 *080000000000000c0086e00000e08307080000000000000c0091e000001c840708000000000000 *0c009be000001c8407080000000000000c00a4e000003c8407080000000000000c00aee000003c *8407080000000000000c00b9e00000788407080000000000000c00c3e000007884070800000000 *00000c00cce00000988407080000000000000c00d6e00000988407080000000000000c00e1e000 *00d48407080000000000000c00ebe00000d48407080000000000000c00d1600000f48407080000 *000000000c00db600000f48407080000000000000c00f4e00000308507080000000000000c00fe *e00000308507080000000000000c0007e10000508507080000000000000c0011e1000050850708 *0000000000000c001ce100008c8507080000000000000c0026e100008c8507080000000000000c *002fe10000ac8507080000000000000c0039e10000ac8507080000000000000c0044e10000e885 *07080000000000000c004ee10000e88507080000000000000c00fb600000088607080000000000 *000c0005610000088607080000000000000c0057e10000488607080000000000000c0061e10000 *488607080000000000000c006ce10000b88607080000000000000c0076e10000b8860708000000 *0000000c0081e10000348707080000000000000c008be10000348707080000000000000c0096e1 *0000bc8707080000000000000c00a0e10000bc8707080000000000000c00abe100005088070800 *00000000000c00b5e10000508807080000000000000c00c0e10000f08807080000000000000c00 *cae10000f08807080000000000000c00d5e100009c8907080000000000000c00dfe100009c8907 *080000000000000c00eae10000548a07080000000000000c00f4e10000548a0708000000000000 *0c00ffe10000188b07080000000000000c0009e20000188b07080000000000000c0014e20000e8 *8b07080000000000000c001ee20000e88b07080000000000000c0029e20000c48c070800000000 *00000c0033e20000c48c07080000000000000c003ee20000ac8d07080000000000000c0048e200 *00ac8d07080000000000000c0051e200008c8e07080000000000000c005be200008c8e07080000 *000000000c0064e20000fc8e07080000000000000c006fe20000188f07080000000000000c0078 *e20000dcb51108000000000000100085e20000648f07080000000000000c008fe200002c8f0708 *0000000000000c0099e200002c8f07080000000000000c00a4e20000648f07080000000000000c *00afe20000a08f07080000000000000c00b8e20000f4b511080000000000001000c5e2000034ef *07080000000000000c00cfe20000d88f07080000000000000c00d9e20000d88f07080000000000 *000c0045660000149007080000000000000c00e4e20000149007080000000000000c00ede20000 *609007080000000000000c00f7e20000609007080000000000000c0002e3000090900708000000 *0000000c000de30000a49007080000000000000c0017e30000a49007080000000000000c009966 *0000e09007080000000000000c0022e30000e09007080000000000000c002be300002091070800 *00000000000c0036e30000349107080000000000000c0040e30000349107080000000000000c00 *4be30000709107080000000000000c0055e30000709107080000000000000c005ee30000bc9107 *080000000000000c0068e30000bc9107080000000000000c0073e30000ec910708000000000000 *0c007ee30000009207080000000000000c0088e30000009207080000000000000c00b56200003c *9207080000000000000c0093e300003c9207080000000000000c009ce300007c92070800000000 *00000c0055640000909207080000000000000c005f640000909207080000000000000c00a7e300 *00cc9207080000000000000c00b1e30000cc9207080000000000000c00bae300000c9307080000 *000000000c005a650000209307080000000000000c0064650000209307080000000000000c00c5 *e300005c9307080000000000000c00cfe300005c9307080000000000000c00d8e30000a8930708 *0000000000000c00e2e30000a89307080000000000000c00ede30000d89307080000000000000c *00f8e30000ec9307080000000000000c0002e40000ec9307080000000000000c000de400002894 *07080000000000000c0017e40000289407080000000000000c0020e40000689407080000000000 *000c002be400007c9407080000000000000c0035e400007c9407080000000000000c0040e40000 *b89407080000000000000c004ae40000b89407080000000000000c0053e40000f8940708000000 *0000000c005ee400000c9507080000000000000c0068e400000c9507080000000000000c0073e4 *0000489507080000000000000c007de40000489507080000000000000c0086e400009495070800 *00000000000c0090e40000949507080000000000000c009be40000c49507080000000000000c00 *a6e40000d89507080000000000000c00b0e40000d89507080000000000000c00bbe40000149607 *080000000000000c00c5e40000149607080000000000000c00cee4000054960708000000000000 *0c00d9e40000689607080000000000000c00e3e40000689607080000000000000c00eee40000a4 *9607080000000000000c00f8e40000a49607080000000000000c0001e50000e496070800000000 *00000c000ce50000f89607080000000000000c0016e50000f89607080000000000000c0021e500 *00349707080000000000000c002be50000349707080000000000000c0034e50000809707080000 *000000000c003ee50000809707080000000000000c0049e50000b09707080000000000000c0054 *e50000c49707080000000000000c005ee50000c49707080000000000000c0069e5000000980708 *0000000000000c0073e50000009807080000000000000c007ce50000409807080000000000000c *0098690000549807080000000000000c00a2690000549807080000000000000c0087e500009098 *07080000000000000c0091e50000909807080000000000000c009ae50000d09807080000000000 *000c00a5e50000e49807080000000000000c00afe50000e49807080000000000000c00bae50000 *209907080000000000000c00c4e50000209907080000000000000c00cde500006c990708000000 *0000000c00d7e500006c9907080000000000000c00e2e500009c9907080000000000000c00ede5 *0000b09907080000000000000c00f7e50000b09907080000000000000c0002e60000ec99070800 *00000000000c000ce60000ec9907080000000000000c0015e600002c9a07080000000000000c00 *016a0000409a07080000000000000c000b6a0000409a07080000000000000c0020e600007c9a07 *080000000000000c002ae600007c9a07080000000000000c0033e60000bc9a0708000000000000 *0c003ee60000d09a07080000000000000c0048e60000d09a07080000000000000c0053e600000c *9b07080000000000000c005de600000c9b07080000000000000c0066e60000589b070800000000 *00000c0070e60000589b07080000000000000c007be60000889b07080000000000000c0086e600 *009c9b07080000000000000c0090e600009c9b07080000000000000c009be60000d89b07080000 *000000000c00a5e60000d89b07080000000000000c00aee60000189c07080000000000000c00b9 *e600002c9c07080000000000000c00c3e600002c9c07080000000000000c00cee60000689c0708 *0000000000000c00d8e60000689c07080000000000000c00e1e60000a89c07080000000000000c *00ece60000bc9c07080000000000000c00f6e60000bc9c07080000000000000c0001e70000f89c *07080000000000000c000be70000f89c07080000000000000c0014e70000449d07080000000000 *000c001ee70000449d07080000000000000c0029e70000749d07080000000000000c0034e70000 *889d07080000000000000c003ee70000889d07080000000000000c0049e70000c49d0708000000 *0000000c0053e70000c49d07080000000000000c005ce70000049e07080000000000000c0067e7 *0000189e07080000000000000c0071e70000189e07080000000000000c007ce70000549e070800 *00000000000c0086e70000549e07080000000000000c008fe70000949e07080000000000000c00 *9ae70000a89e07080000000000000c00a4e70000a89e07080000000000000c00afe70000e49e07 *080000000000000c00b9e70000e49e07080000000000000c00c2e70000309f0708000000000000 *0c00cce70000309f07080000000000000c00d7e70000609f07080000000000000c00e2e7000074 *9f07080000000000000c00ece70000749f07080000000000000c00f7e70000b09f070800000000 *00000c0001e80000b09f07080000000000000c000ae80000f09f07080000000000000c0015e800 *0004a007080000000000000c001fe8000004a007080000000000000c002ae8000040a007080000 *000000000c0034e8000040a007080000000000000c003de8000080a007080000000000000c0048 *e8000094a007080000000000000c0052e8000094a007080000000000000c005de80000d0a00708 *0000000000000c0067e80000d0a007080000000000000c0070e800001ca107080000000000000c *007ae800001ca107080000000000000c0085e800004ca107080000000000000c0090e8000060a1 *07080000000000000c009ae8000060a107080000000000000c00a5e800009ca107080000000000 *000c00afe800009ca107080000000000000c00b8e80000dca107080000000000000c00c3e80000 *f0a107080000000000000c00cde80000f0a107080000000000000c00d8e800002ca20708000000 *0000000c00e2e800002ca207080000000000000c00ebe800006ca207080000000000000c00f6e8 *000080a207080000000000000c0000e9000080a207080000000000000c000be90000bca2070800 *00000000000c0015e90000bca207080000000000000c001ee9000008a307080000000000000c00 *28e9000008a307080000000000000c0033e9000038a307080000000000000c003ee900004ca307 *080000000000000c0048e900004ca307080000000000000c0053e9000088a30708000000000000 *0c005de9000088a307080000000000000c0066e90000c8a307080000000000000c0071e90000dc *a307080000000000000c007be90000dca307080000000000000c0086e9000018a4070800000000 *00000c0090e9000018a407080000000000000c0099e9000058a407080000000000000c00a4e900 *006ca407080000000000000c00aee900006ca407080000000000000c00b9e90000a8a407080000 *000000000c00c3e90000a8a407080000000000000c0021730000f4a407080000000000000c002b *730000f4a407080000000000000c00cce9000024a507080000000000000c00a372000038a50708 *0000000000000c00ad72000038a507080000000000000c005972000074a507080000000000000c *00d7e9000074a507080000000000000c00e0e90000b4a507080000000000000c00ebe90000c8a5 *07080000000000000c00f5e90000c8a507080000000000000c0000ea000004a607080000000000 *000c000aea000004a607080000000000000c0013ea000044a607080000000000000c001eea0000 *58a607080000000000000c0028ea000058a607080000000000000c0033ea000094a60708000000 *0000000c003dea000094a607080000000000000c0046ea0000e0a607080000000000000c0050ea *0000e0a607080000000000000c005bea000010a707080000000000000c0066ea000024a7070800 *00000000000c0070ea000024a707080000000000000c007bea000060a707080000000000000c00 *85ea000060a707080000000000000c008eea0000a0a707080000000000000c0027780000b4a707 *080000000000000c0031780000b4a707080000000000000c0099ea0000f0a70708000000000000 *0c00a3ea0000f0a707080000000000000c00acea000030a807080000000000000c006177000044 *a807080000000000000c006b77000044a807080000000000000c00b7ea000080a8070800000000 *00000c00c1ea000080a807080000000000000c004c770000cca807080000000000000c00567700 *00cca807080000000000000c00caea0000fca807080000000000000c00d5ea000010a907080000 *000000000c00dfea000010a907080000000000000c00eaea00004ca907080000000000000c00f4 *ea00004ca907080000000000000c00fdea00008ca907080000000000000c0008eb0000a0a90708 *0000000000000c0012eb0000a0a907080000000000000c001deb0000dca907080000000000000c *0027eb0000dca907080000000000000c0030eb00001caa07080000000000000c003beb000024aa *07080000000000000c0046eb00009caa07080000000000000c0051eb0000b8aa07080000000000 *000c005beb0000c4aa07080000000000000c0065eb0000c4aa07080000000000000c006eeb0000 *e4aa07080000000000000c0079eb000010ab07080000000000000c0083eb000010ab0708000000 *0000000c008eeb00001cab07080000000000000c0098eb000050ab07080000000000000c00a2eb *000060ab07080000000000000c00aceb000060ab07080000000000000c00b7eb0000e8ab070800 *00000000000c00c1eb0000e8ab07080000000000000c00cceb000088ac07080000000000000c00 *d6eb000088ac07080000000000000c00e1eb0000b4ac07080000000000000c00eceb000048ad07 *080000000000000c00f7eb000064ad07080000000000000c0001ec000070ad0708000000000000 *0c000bec000070ad07080000000000000c0014ec000090ad07080000000000000c001fec0000bc *ad07080000000000000c0029ec0000bcad07080000000000000c0034ec0000c8ad070800000000 *00000c003eec0000fcad07080000000000000c0048ec00000cae07080000000000000c0052ec00 *000cae07080000000000000c005dec000084ae07080000000000000c0068ec000024af07080000 *000000000c0072ec000024af07080000000000000c007dec000060af07080000000000000c0087 *ec000094af07080000000000000c0091ec0000a4af07080000000000000c009bec0000a4af0708 *0000000000000c00a6ec00001cb007080000000000000c00b1ec0000a8b007080000000000000c *00bcec0000c4b007080000000000000c00c6ec0000d0b007080000000000000c00d0ec0000d0b0 *07080000000000000c00d9ec0000f0b007080000000000000c00e4ec00001cb107080000000000 *000c00eeec00001cb107080000000000000c00f9ec000028b107080000000000000c0003ed0000 *5cb107080000000000000c00987800006cb107080000000000000c00a27800006cb10708000000 *0000000c00ad780000f4b107080000000000000c00b7780000f4b107080000000000000c000ded *000094b207080000000000000c0017ed000094b207080000000000000c0022ed0000c0b2070800 *00000000000c002ded00004cb307080000000000000c0038ed000068b307080000000000000c00 *42ed000074b307080000000000000c004ced000074b307080000000000000c0055ed000094b307 *080000000000000c0060ed0000c0b307080000000000000c006aed0000c0b30708000000000000 *0c0075ed0000ccb307080000000000000c007fed000000b407080000000000000c0089ed000010 *b407080000000000000c0093ed000010b407080000000000000c009eed000080b4070800000000 *00000c00a9ed000018b507080000000000000c00b3ed000018b507080000000000000c00beed00 *0054b507080000000000000c00c8ed000088b507080000000000000c00d878000098b507080000 *000000000c00e278000098b507080000000000000c00d2ed000008b607080000000000000c00dd *ed00008cb607080000000000000c00e8ed0000a8b607080000000000000c00f2ed0000b4b60708 *0000000000000c00fced0000b4b607080000000000000c0005ee0000d4b607080000000000000c *0010ee000000b707080000000000000c001aee000000b707080000000000000c0025ee00000cb7 *07080000000000000c002fee000040b707080000000000000c002a79000050b707080000000000 *000c00cd78000050b707080000000000000c0039ee0000d0b707080000000000000c0043ee0000 *d0b707080000000000000c009f73000068b807080000000000000c00a973000068b80708000000 *0000000c004eee000094b807080000000000000c0059ee00001cb907080000000000000c0064ee *000038b907080000000000000c006eee000044b907080000000000000c0078ee000044b9070800 *00000000000c0081ee000064b907080000000000000c008cee000090b907080000000000000c00 *96ee000090b907080000000000000c00a1ee00009cb907080000000000000c00abee0000d0b907 *080000000000000c00b5ee0000e0b907080000000000000c00bfee0000e0b90708000000000000 *0c00caee00004cba07080000000000000c00d5ee0000e0ba07080000000000000c00dfee0000e0 *ba07080000000000000c00eaee00001cbb07080000000000000c00f4ee000050bb070800000000 *00000c00feee000060bb07080000000000000c0008ef000060bb07080000000000000c0013ef00 *00ccbb07080000000000000c001eef00004cbc07080000000000000c0029ef000068bc07080000 *000000000c0033ef000074bc07080000000000000c003def000074bc07080000000000000c0046 *ef000094bc07080000000000000c0051ef0000c0bc07080000000000000c005bef0000c0bc0708 *0000000000000c0066ef0000ccbc07080000000000000c0070ef000000bd07080000000000000c *007aef000010bd07080000000000000c0084ef000010bd07080000000000000c008fef00008cbd *07080000000000000c0099ef00008cbd07080000000000000c002771000020be07080000000000 *000c003171000020be07080000000000000c00a4ef00004cbe07080000000000000c00afef0000 *ccbe07080000000000000c00baef0000e8be07080000000000000c00c4ef0000f4be0708000000 *0000000c00ceef0000f4be07080000000000000c00d7ef000014bf07080000000000000c00e2ef *000040bf07080000000000000c00ecef000040bf07080000000000000c00f7ef00004cbf070800 *00000000000c0001f0000080bf07080000000000000c004a79000090bf07080000000000000c00 *5479000090bf07080000000000000c000bf00000f4bf07080000000000000c0016f0000080c007 *080000000000000c0020f0000080c007080000000000000c002bf00000bcc00708000000000000 *0c0035f00000f0c007080000000000000c005f79000000c107080000000000000c006979000000 *c107080000000000000c003ff0000064c107080000000000000c004af00000dcc1070800000000 *00000c0055f00000f8c107080000000000000c005ff0000004c207080000000000000c0069f000 *0004c207080000000000000c0072f0000024c207080000000000000c007df0000050c207080000 *000000000c0087f0000050c207080000000000000c0092f000005cc207080000000000000c009c *f0000090c207080000000000000c00a6f00000a0c207080000000000000c00b0f00000a0c20708 *0000000000000c00bbf0000014c307080000000000000c00c5f0000014c307080000000000000c *00d0f00000a0c307080000000000000c00daf00000a0c307080000000000000c00e5f00000ccc3 *07080000000000000c00f0f0000048c407080000000000000c00fbf0000064c407080000000000 *000c0005f1000070c407080000000000000c000ff1000070c407080000000000000c0018f10000 *90c407080000000000000c0023f10000bcc407080000000000000c002df10000bcc40708000000 *0000000c0038f10000c8c407080000000000000c0042f10000fcc407080000000000000c009e79 *00000cc507080000000000000c00a87900000cc507080000000000000c004cf100006cc5070800 *00000000000c0057f10000f4c507080000000000000c0061f10000f4c507080000000000000c00 *6cf1000030c607080000000000000c0076f1000064c607080000000000000c0080f1000074c607 *080000000000000c008af1000074c607080000000000000c0095f10000d4c60708000000000000 *0c00a0f1000048c707080000000000000c00abf1000064c707080000000000000c00b5f1000070 *c707080000000000000c00bff1000070c707080000000000000c00c8f1000090c7070800000000 *00000c00d3f10000bcc707080000000000000c00ddf10000bcc707080000000000000c00e8f100 *00c8c707080000000000000c00f2f10000fcc707080000000000000c00fcf100000cc807080000 *000000000c0006f200000cc807080000000000000c0011f200007cc807080000000000000c001b *f200007cc807080000000000000c0026f2000004c907080000000000000c0030f2000004c90708 *0000000000000c003bf2000030c907080000000000000c0046f20000a4c907080000000000000c *0051f20000c0c907080000000000000c005bf20000ccc907080000000000000c0065f20000ccc9 *07080000000000000c006ef20000ecc907080000000000000c0079f2000018ca07080000000000 *000c0083f2000018ca07080000000000000c008ef2000024ca07080000000000000c0098f20000 *58ca07080000000000000c00a2f2000068ca07080000000000000c00acf2000068ca0708000000 *0000000c00b7f20000c0ca07080000000000000c00c2f2000040cb07080000000000000c00ccf2 *000040cb07080000000000000c00d7f200007ccb07080000000000000c00e1f20000b0cb070800 *00000000000c00ebf20000c0cb07080000000000000c00f5f20000c0cb07080000000000000c00 *00f3000018cc07080000000000000c000bf3000084cc07080000000000000c0016f30000a0cc07 *080000000000000c0020f30000accc07080000000000000c002af30000accc0708000000000000 *0c0033f30000cccc07080000000000000c003ef30000f8cc07080000000000000c0048f30000f8 *cc07080000000000000c0053f3000004cd07080000000000000c005df3000038cd070800000000 *00000c0067f3000048cd07080000000000000c0071f3000048cd07080000000000000c007cf300 *00b0cd07080000000000000c0086f30000b0cd07080000000000000c0091f3000030ce07080000 *000000000c009bf3000030ce07080000000000000c00a6f300005cce07080000000000000c00b1 *f30000ccce07080000000000000c00bcf30000e8ce07080000000000000c00c6f30000f4ce0708 *0000000000000c00d0f30000f4ce07080000000000000c00d9f3000014cf07080000000000000c *00e4f3000040cf07080000000000000c00eef3000040cf07080000000000000c00f9f300004ccf *07080000000000000c0003f4000080cf07080000000000000c000df4000090cf07080000000000 *000c0017f4000090cf07080000000000000c0022f40000e4cf07080000000000000c002df40000 *60d007080000000000000c0037f4000060d007080000000000000c0042f400009cd00708000000 *0000000c004cf40000d0d007080000000000000c0056f40000e0d007080000000000000c0060f4 *0000e0d007080000000000000c006bf4000034d107080000000000000c0076f400009cd1070800 *00000000000c0081f40000b8d107080000000000000c008bf40000c4d107080000000000000c00 *95f40000c4d107080000000000000c009ef40000e4d107080000000000000c00a9f4000010d207 *080000000000000c00b3f4000010d207080000000000000c00bef400001cd20708000000000000 *0c00c8f4000050d207080000000000000c00d2f4000060d207080000000000000c00dcf4000060 *d207080000000000000c00e7f40000c4d207080000000000000c00f1f40000c4d2070800000000 *00000c00fcf4000040d307080000000000000c0006f5000040d307080000000000000c0011f500 *006cd307080000000000000c001cf50000d4d307080000000000000c0027f50000f0d307080000 *000000000c0031f50000fcd307080000000000000c003bf50000fcd307080000000000000c0044 *f500001cd407080000000000000c004ff5000048d407080000000000000c0059f5000048d40708 *0000000000000c0064f5000054d407080000000000000c006ef5000088d407080000000000000c *003c78000098d407080000000000000c0078f5000098d407080000000000000c0083f50000e4d4 *07080000000000000c008ef5000058d507080000000000000c0098f5000058d507080000000000 *000c00a3f5000094d507080000000000000c00adf50000c8d507080000000000000c00b7f50000 *d8d507080000000000000c00c1f50000d8d507080000000000000c00ccf5000024d60708000000 *0000000c00d7f5000084d607080000000000000c00e2f50000a0d607080000000000000c00ecf5 *0000acd607080000000000000c00f6f50000acd607080000000000000c00fff50000ccd6070800 *00000000000c000af60000f8d607080000000000000c0014f60000f8d607080000000000000c00 *1ff6000004d707080000000000000c0029f6000038d707080000000000000c0033f6000048d707 *080000000000000c003df6000048d707080000000000000c0048f60000a4d70708000000000000 *0c0052f60000a4d707080000000000000c005df6000018d807080000000000000c0067f6000018 *d807080000000000000c0072f6000044d807080000000000000c007df60000a8d8070800000000 *00000c0088f60000c4d807080000000000000c0092f60000d0d807080000000000000c009cf600 *00d0d807080000000000000c00a5f60000f0d807080000000000000c00b0f600001cd907080000 *000000000c00baf600001cd907080000000000000c00c5f6000028d907080000000000000c00cf *f600005cd907080000000000000c00b57700006cd907080000000000000c00d9f600006cd90708 *0000000000000c00e4f60000b4d907080000000000000c00eff6000024da07080000000000000c *00f9f6000024da07080000000000000c0004f7000060da07080000000000000c000ef7000094da *07080000000000000c0018f70000a4da07080000000000000c0022f70000a4da07080000000000 *000c002df70000ecda07080000000000000c0038f7000048db07080000000000000c0043f70000 *64db07080000000000000c004df7000070db07080000000000000c0057f7000070db0708000000 *0000000c0060f7000090db07080000000000000c006bf70000bcdb07080000000000000c0075f7 *0000bcdb07080000000000000c0080f70000c8db07080000000000000c008af70000fcdb070800 *00000000000c0094f700000cdc07080000000000000c009ef700000cdc07080000000000000c00 *4b75000064dc07080000000000000c00a9f7000064dc07080000000000000c00b4f70000d4dc07 *080000000000000c00bef70000d4dc07080000000000000c00c9f7000000dd0708000000000000 *0c00d4f700005cdd07080000000000000c00dff7000078dd07080000000000000c00e9f7000084 *dd07080000000000000c00f3f7000084dd07080000000000000c00fcf70000a4dd070800000000 *00000c0007f80000d0dd07080000000000000c0011f80000d0dd07080000000000000c001cf800 *00dcdd07080000000000000c0026f8000010de07080000000000000c009d75000020de07080000 *000000000c0030f8000020de07080000000000000c003bf8000060de07080000000000000c0046 *f80000c8de07080000000000000c0050f80000c8de07080000000000000c005bf8000004df0708 *0000000000000c0065f8000038df07080000000000000c00a374000048df07080000000000000c *006ff8000048df07080000000000000c007af8000088df07080000000000000c0085f80000dcdf *07080000000000000c0090f80000f8df07080000000000000c009af8000004e007080000000000 *000c00a4f8000004e007080000000000000c00adf8000024e007080000000000000c00b8f80000 *50e007080000000000000c00c2f8000050e007080000000000000c00cdf800005ce00708000000 *0000000c00d7f8000090e007080000000000000c00e1f80000a0e007080000000000000c00ebf8 *0000a0e007080000000000000c00f6f80000f0e007080000000000000c0000f90000f0e0070800 *00000000000c000bf9000058e107080000000000000c0015f9000058e107080000000000000c00 *20f9000084e107080000000000000c002bf90000dce107080000000000000c0036f90000f8e107 *080000000000000c0040f9000004e207080000000000000c004af9000004e20708000000000000 *0c0053f9000024e207080000000000000c005ef9000050e207080000000000000c0068f9000050 *e207080000000000000c0073f900005ce207080000000000000c007df9000090e2070800000000 *00000c00c56d0000a0e207080000000000000c0087f90000a0e207080000000000000c0092f900 *00dce207080000000000000c009df9000040e307080000000000000c00a7f9000040e307080000 *000000000c00b2f900007ce307080000000000000c00bcf90000b0e307080000000000000c00c6 *f90000c0e307080000000000000c00d0f90000c0e307080000000000000c00dbf90000fce30708 *0000000000000c00e6f900004ce407080000000000000c00f1f9000068e407080000000000000c *00fbf9000074e407080000000000000c0005fa000074e407080000000000000c000efa000094e4 *07080000000000000c0019fa0000c0e407080000000000000c0023fa0000c0e407080000000000 *000c002efa0000cce407080000000000000c0038fa000000e507080000000000000c0042fa0000 *10e507080000000000000c004cfa000010e507080000000000000c0057fa00005ce50708000000 *0000000c0061fa00005ce507080000000000000c006cfa0000c0e507080000000000000c0076fa *0000c0e507080000000000000c0081fa0000ece507080000000000000c008cfa00003ce6070800 *00000000000c0097fa000058e607080000000000000c00a1fa000064e607080000000000000c00 *abfa000064e607080000000000000c00b4fa000084e607080000000000000c00bffa0000b0e607 *080000000000000c00c9fa0000b0e607080000000000000c00d4fa0000bce60708000000000000 *0c00defa0000f0e607080000000000000c00e8fa000000e707080000000000000c00f2fa000000 *e707080000000000000c00fdfa000034e707080000000000000c0008fb000090e7070800000000 *00000c0012fb000090e707080000000000000c001dfb0000cce707080000000000000c0027fb00 *0000e807080000000000000c0031fb000010e807080000000000000c003bfb000010e807080000 *000000000c0046fb000044e807080000000000000c0051fb00008ce807080000000000000c005c *fb0000a8e807080000000000000c0066fb0000b4e807080000000000000c0070fb0000b4e80708 *0000000000000c0079fb0000d4e807080000000000000c0084fb000000e907080000000000000c *008efb000000e907080000000000000c0099fb00000ce907080000000000000c00a3fb000040e9 *07080000000000000c00adfb000050e907080000000000000c00b7fb000050e907080000000000 *000c00706f000094e907080000000000000c00c2fb000094e907080000000000000c00cdfb0000 *f0e907080000000000000c00d7fb0000f0e907080000000000000c00e2fb00001cea0708000000 *0000000c00edfb000068ea07080000000000000c00f8fb000084ea07080000000000000c0002fc *000090ea07080000000000000c000cfc000090ea07080000000000000c0015fc0000b0ea070800 *00000000000c0020fc0000dcea07080000000000000c002afc0000dcea07080000000000000c00 *35fc0000e8ea07080000000000000c003ffc00001ceb07080000000000000c0049fc00002ceb07 *080000000000000c0053fc00002ceb07080000000000000c005efc00005ceb0708000000000000 *0c0069fc0000b4eb07080000000000000c0073fc0000b4eb07080000000000000c007efc0000f0 *eb07080000000000000c0088fc000024ec07080000000000000c0092fc000034ec070800000000 *00000c009cfc000034ec07080000000000000c00a7fc000064ec07080000000000000c00b2fc00 *00a8ec07080000000000000c00bdfc0000c4ec07080000000000000c00c7fc0000d0ec07080000 *000000000c00d1fc0000d0ec07080000000000000c00dafc0000f0ec07080000000000000c00e5 *fc00001ced07080000000000000c00effc00001ced07080000000000000c00fafc000028ed0708 *0000000000000c0004fd00005ced07080000000000000c000efd00006ced07080000000000000c *0018fd00006ced07080000000000000c0023fd00009ced07080000000000000c002efd0000f4ed *07080000000000000c0038fd0000f4ed07080000000000000c0043fd000030ee07080000000000 *000c004dfd000064ee07080000000000000c0057fd000074ee07080000000000000c0061fd0000 *74ee07080000000000000c006cfd0000b0ee07080000000000000c0076fd0000b0ee0708000000 *0000000c005171000000ef07080000000000000c007ffd000000ef07080000000000000c008afd *000034ef07080000000000000c0095fd000098ef07080000000000000c009efd000004b6110800 *00000000001000abfd0000acef07080000000000000c00b5fd0000acef07080000000000000c00 *c0fd000004f007080000000000000c00c9fd000014b611080000000000001000d6fd0000901708 *080000000000000c00e0fd000038f007080000000000000c00eafd000038f00708000000000000 *0c00f5fd00008cf007080000000000000c00fffd00008cf007080000000000000c0008fe0000ac *f007080000000000000c0012fe0000acf007080000000000000c001dfe0000e4f0070800000000 *00000c0027fe0000e4f007080000000000000c0032fe000044f107080000000000000c003cfe00 *0044f107080000000000000c0047fe000080f107080000000000000c0051fe000080f107080000 *000000000c005cfe0000ccf107080000000000000c0066fe0000ccf107080000000000000c0071 *fe00002cf207080000000000000c007bfe00002cf207080000000000000c0086fe000068f20708 *0000000000000c0090fe000068f207080000000000000c009bfe0000b4f207080000000000000c *00a5fe0000b4f207080000000000000c00b0fe000010f307080000000000000c00bafe000010f3 *07080000000000000c00c3fe000030f307080000000000000c00cdfe000030f307080000000000 *000c00d8fe000068f307080000000000000c00e2fe000068f307080000000000000c00edfe0000 *ccf307080000000000000c00f7fe0000ccf307080000000000000c0002ff000008f40708000000 *0000000c000cff000008f407080000000000000c0017ff000054f407080000000000000c0021ff *000054f407080000000000000c002cff0000b8f407080000000000000c0036ff0000b8f4070800 *00000000000c0041ff0000f4f407080000000000000c004bff0000f4f407080000000000000c00 *56ff000040f507080000000000000c0060ff000040f507080000000000000c006bff0000a0f507 *080000000000000c0075ff0000a0f507080000000000000c007eff0000c0f50708000000000000 *0c0088ff0000c0f507080000000000000c0093ff0000f8f507080000000000000c009dff0000f8 *f507080000000000000c00a8ff000064f607080000000000000c00b2ff000064f6070800000000 *00000c00bdff0000a0f607080000000000000c00c7ff0000a0f607080000000000000c00d2ff00 *00ecf607080000000000000c00dcff0000ecf607080000000000000c00e7ff000058f707080000 *000000000c00f1ff000058f707080000000000000c00fcff000094f707080000000000000c0006 *00010094f707080000000000000c0011000100e0f707080000000000000c001b000100e0f70708 *0000000000000c002600010048f807080000000000000c003000010048f807080000000000000c *003900010068f807080000000000000c004300010068f807080000000000000c004e000100a0f8 *07080000000000000c0058000100a0f807080000000000000c006300010010f907080000000000 *000c006d00010010f907080000000000000c00780001004cf907080000000000000c0082000100 *4cf907080000000000000c008d00010098f907080000000000000c009700010098f90708000000 *0000000c00a200010008fa07080000000000000c00ac00010008fa07080000000000000c00b700 *010044fa07080000000000000c00c100010044fa07080000000000000c00cc00010090fa070800 *00000000000c00d600010090fa07080000000000000c00e1000100fcfa07080000000000000c00 *eb000100fcfa07080000000000000c00f40001001cfb07080000000000000c00fe0001001cfb07 *080000000000000c000901010054fb07080000000000000c001301010054fb0708000000000000 *0c001e010100ccfb07080000000000000c0028010100ccfb07080000000000000c003301010008 *fc07080000000000000c003d01010008fc07080000000000000c004801010054fc070800000000 *00000c005201010054fc07080000000000000c005d010100ccfc07080000000000000c00670101 *00ccfc07080000000000000c007201010008fd07080000000000000c007c01010008fd07080000 *000000000c008701010054fd07080000000000000c009101010054fd07080000000000000c009c *010100c8fd07080000000000000c00a6010100c8fd07080000000000000c00af010100e8fd0708 *0000000000000c00b9010100e8fd07080000000000000c00c401010020fe07080000000000000c *00ce01010020fe07080000000000000c00d90101009cfe07080000000000000c00e30101009cfe *07080000000000000c00ee010100d8fe07080000000000000c00f8010100d8fe07080000000000 *000c000302010024ff07080000000000000c000d02010024ff07080000000000000c005a5e0000 *a0ff07080000000000000c0018020100a0ff07080000000000000c0023020100dcff0708000000 *0000000c002d020100dcff07080000000000000c0038020100280008080000000000000c004202 *0100280008080000000000000c004d020100a00008080000000000000c0057020100a000080800 *00000000000c0060020100c00008080000000000000c006a020100c00008080000000000000c00 *75020100f80008080000000000000c007f020100f80008080000000000000c008a0201007c0108 *080000000000000c00940201007c0108080000000000000c009f020100b8010808000000000000 *0c00a9020100b80108080000000000000c00b4020100040208080000000000000c00be02010004 *0208080000000000000c00c9020100880208080000000000000c00d30201008802080800000000 *00000c00de020100c40208080000000000000c00e8020100c40208080000000000000c00f30201 *00100308080000000000000c00fd020100100308080000000000000c0008030100900308080000 *000000000c0012030100900308080000000000000c001b030100b00308080000000000000c0025 *030100b00308080000000000000c0030030100e80308080000000000000c003a030100e8030808 *0000000000000c0045030100700408080000000000000c004f030100700408080000000000000c *005a030100ac0408080000000000000c0064030100ac0408080000000000000c006f030100f804 *08080000000000000c0079030100f80408080000000000000c0084030100800508080000000000 *000c008e030100800508080000000000000c0099030100bc0508080000000000000c00a3030100 *bc0508080000000000000c00ae030100080608080000000000000c00b803010008060808000000 *0000000c00c30301008c0608080000000000000c00cd0301008c0608080000000000000c00f365 *0000ac0608080000000000000c00d6030100ac0608080000000000000c00e1030100e406080800 *00000000000c00eb030100e40608080000000000000c00f6030100740708080000000000000c00 *00040100740708080000000000000c000b040100b00708080000000000000c0015040100b00708 *080000000000000c0020040100fc0708080000000000000c002a040100fc070808000000000000 *0c00350401008c0808080000000000000c003f0401008c0808080000000000000c004a040100c8 *0808080000000000000c0054040100c80808080000000000000c005f0401001409080800000000 *00000c0069040100140908080000000000000c0074040100a00908080000000000000c007e0401 *00a00908080000000000000c0056670000c00908080000000000000c0087040100c00908080000 *000000000c0092040100f80908080000000000000c009c040100f80908080000000000000c00a7 *0401008c0a08080000000000000c00b10401008c0a08080000000000000c00bc040100c80a0808 *0000000000000c00c6040100c80a08080000000000000c00d1040100140b08080000000000000c *00db040100140b08080000000000000c00e6040100a80b08080000000000000c00f0040100a80b *08080000000000000c00fb040100e40b08080000000000000c0005050100e40b08080000000000 *000c0010050100300c08080000000000000c001a050100300c08080000000000000c0025050100 *c00c08080000000000000c002f050100c00c08080000000000000c007b690000e00c0808000000 *0000000c0038050100e00c08080000000000000c0043050100180d08080000000000000c004d05 *0100180d08080000000000000c0058680000b40d08080000000000000c0058050100b40d080800 *00000000000c0063050100f00d08080000000000000c006d050100f00d08080000000000000c00 *780501003c0e08080000000000000c00820501003c0e08080000000000000c008d050100d80e08 *080000000000000c0097050100d80e08080000000000000c00a2050100140f0808000000000000 *0c00ac050100140f08080000000000000c00b7050100600f08080000000000000c00c105010060 *0f08080000000000000c00cc050100f80f08080000000000000c00d6050100f80f080800000000 *00000c00df050100181008080000000000000c00e9050100181008080000000000000c00f40501 *00501008080000000000000c00fe050100501008080000000000000c00566c0000f01008080000 *000000000c0009060100f01008080000000000000c00140601002c1108080000000000000c001e *0601002c1108080000000000000c0029060100781108080000000000000c003306010078110808 *0000000000000c003e060100181208080000000000000c0048060100181208080000000000000c *00936c0000541208080000000000000c0053060100541208080000000000000c005e060100a012 *08080000000000000c0068060100a01208080000000000000c00730601003c1308080000000000 *000c007d0601003c1308080000000000000c00f16c00005c1308080000000000000c0086060100 *5c1308080000000000000c0091060100941308080000000000000c009b06010094130808000000 *0000000c00a60601003c1408080000000000000c00b00601003c1408080000000000000c00bb06 *0100781408080000000000000c00c5060100781408080000000000000c00d0060100c414080800 *00000000000c00da060100c41408080000000000000c00e50601006c1508080000000000000c00 *ef0601006c1508080000000000000c00fa060100a81508080000000000000c0004070100a81508 *080000000000000c000f070100f41508080000000000000c0019070100f4150808000000000000 *0c0024070100981608080000000000000c002e070100981608080000000000000c00b56b0000bc *1608080000000000000c0037070100bc1608080000000000000c0042070100f416080800000000 *00000c004c070100f41608080000000000000c0055070100901708080000000000000c00600701 *001cb6110800000000000010006d070100b01708080000000000000c007607010024b611080000 *00000000100083070100c41708080000000000000c008d070100c41708080000000000000c0098 *0701001c1808080000000000000c00a107010034b611080000000000001000ae07010030180808 *0000000000000c00b8070100301808080000000000000c00c307010044b6110800000000000010 *00d007010054b611080000000000001000dd070100a01808080000000000000c00e7070100a018 *08080000000000000c00f2070100dc1808080000000000000c00fc070100dc1808080000000000 *000c0007080100341908080000000000000c0011080100341908080000000000000c001c080100 *781908080000000000000c0026080100781908080000000000000c002f080100001a0808000000 *0000000c0039080100001a08080000000000000c00440801003c1a08080000000000000c004e08 *01003c1a08080000000000000c0057080100b01a08080000000000000c0061080100b01a080800 *00000000000c006c080100601b08080000000000000c0076080100601b08080000000000000c00 *81080100981b08080000000000000c008b080100981b08080000000000000c0094080100ac1b08 *080000000000000c009f080100cc1b08080000000000000c00a9080100cc1b0808000000000000 *0c00b4080100101c08080000000000000c00bf080100541c08080000000000000c00c908010008 *b711080000000000001000d6080100c01c08080000000000000c00df0801001cb7110800000000 *00001000ec080100d82408080000000000000c00f6080100e81c08080000000000000c00000901 *00e81c08080000000000000c000b090100401d08080000000000000c0015090100401d08080000 *000000000c0020090100981d08080000000000000c002a090100981d08080000000000000c0035 *090100f01d08080000000000000c003f090100f01d08080000000000000c004a090100481e0808 *0000000000000c0054090100481e08080000000000000c005f090100a01e08080000000000000c *0069090100a01e08080000000000000c0074090100f81e08080000000000000c007e090100f81e *08080000000000000c0089090100501f08080000000000000c0093090100501f08080000000000 *000c009e0901008c1f08080000000000000c00a80901008c1f08080000000000000c00b3090100 *c81f08080000000000000c00bd090100c81f08080000000000000c00c809010014200808000000 *0000000c00d3090100442008080000000000000c00de090100602008080000000000000c00e809 *0100602008080000000000000c00f3090100a82008080000000000000c00fd090100a820080800 *00000000000c00060a0100b02008080000000000000c00110a0100d42008080000000000000c00 *1b0a0100e02008080000000000000c00250a0100e02008080000000000000c002e0a0100142108 *080000000000000c00380a0100142108080000000000000c00430a010054210808000000000000 *0c004d0a0100542108080000000000000c00580a0100ac2108080000000000000c00620a0100ac *2108080000000000000c006d0a0100042208080000000000000c00770a01000422080800000000 *00000c00820a01005c2208080000000000000c008c0a01005c2208080000000000000c00970a01 *00b42208080000000000000c00a10a0100b42208080000000000000c00ac0a01000c2308080000 *000000000c00b60a01000c2308080000000000000c00bf0a0100d82408080000000000000c00ca *0a010024b711080000000000001000d70a0100f02408080000000000000c00e20a010000250808 *0000000000000c00ed0a0100ec2608080000000000000c00f80a0100242508080000000000000c *00020b0100242508080000000000000c000d0b0100582508080000000000000c00170b01005825 *08080000000000000c00200b0100ac2508080000000000000c002a0b0100ac2508080000000000 *000c00350b0100d82508080000000000000c00400b0100302608080000000000000c004a0b0100 *3c2608080000000000000c00540b01003c2608080000000000000c005d0b010088260808000000 *0000000c00670b0100882608080000000000000c00700b0100a82608080000000000000c007b0b *0100dc2608080000000000000c00850b0100ec2608080000000000000c008f0b01001827080800 *00000000000c00990b0100182708080000000000000c00a40b01004c2708080000000000000c00 *af0b0100542708080000000000000c00ba0b0100a02708080000000000000c00c40b0100a02708 *080000000000000c00cf0b0100d82708080000000000000c00d90b0100d8270808000000000000 *0c00e20b0100282808080000000000000c00ec0b0100282808080000000000000c00f70b010054 *2808080000000000000c00020c0100a82808080000000000000c000c0c0100a828080800000000 *00000c00170c0100d02808080000000000000c00210c0100dc2808080000000000000c002b0c01 *00dc2808080000000000000c00360c0100142908080000000000000c00400c0100142908080000 *000000000c00490c0100d02908080000000000000c00530c0100d02908080000000000000c005c *0c0100382a08080000000000000c00650c01003cb711080000000000001000720c0100802b0808 *0000000000000c007c0c0100482a08080000000000000c00860c0100482a08080000000000000c *008f0c0100842a08080000000000000c00990c0100842a08080000000000000c00a40c0100cc2a *08080000000000000c00ae0c0100cc2a08080000000000000c00b70c0100802b08080000000000 *000c00c20c0100a02b08080000000000000c00cb0c010044b711080000000000001000d80c0100 *b42b08080000000000000c00e20c0100b42b08080000000000000c00ed0c0100042c0808000000 *0000000c00f60c01004cb711080000000000001000030d0100142c08080000000000000c000d0d *0100142c08080000000000000c00180d0100702c08080000000000000c00210d01005cb7110800 *000000000010002e0d0100942c08080000000000000c00380d0100942c08080000000000000c00 *430d01006cb711080000000000001000500d01007cb7110800000000000010005d0d0100a02d08 *080000000000000c00670d0100102d08080000000000000c00710d0100102d0808000000000000 *0c007a0d0100a02d08080000000000000c00850d0100c02d08080000000000000c008e0d010080 *b7110800000000000010009b0d0100d02d08080000000000000c00a50d0100d02d080800000000 *00000c00b00d01002c2e08080000000000000c00b90d010090b711080000000000001000c60d01 *004c2e08080000000000000c00d00d01004c2e08080000000000000c00db0d0100a0b711080000 *000000001000e80d0100b0b711080000000000001000f50d0100582f08080000000000000c00ff *0d0100c82e08080000000000000c00090e0100c82e08080000000000000c00120e0100582f0808 *0000000000000c001d0e0100782f08080000000000000c00260e0100b4b7110800000000000010 *00330e0100c42f08080000000000000c003d0e01008c2f08080000000000000c00470e01008c2f *08080000000000000c00520e0100c42f08080000000000000c005d0e0100243008080000000000 *000c00660e0100c4b711080000000000001000730e0100343008080000000000000c007d0e0100 *343008080000000000000c00880e0100903008080000000000000c00910e0100d4b71108000000 *00000010009e0e0100b03008080000000000000c00a80e0100b03008080000000000000c00b30e *0100e4b711080000000000001000c00e0100f4b711080000000000001000cd0e0100bc31080800 *00000000000c00d70e01002c3108080000000000000c00e10e01002c3108080000000000000c00 *ea0e0100bc3108080000000000000c00f50e0100dc3108080000000000000c00fe0e0100f8b711 *0800000000000010000b0f0100283208080000000000000c00150f0100f0310808000000000000 *0c001f0f0100f03108080000000000000c002a0f0100283208080000000000000c00350f010088 *3208080000000000000c003e0f010008b8110800000000000010004b0f01009832080800000000 *00000c00550f0100983208080000000000000c00600f0100f43208080000000000000c00690f01 *0018b811080000000000001000760f0100143308080000000000000c00800f0100143308080000 *000000000c008b0f010028b811080000000000001000980f010038b811080000000000001000a5 *0f0100203408080000000000000c00af0f0100903308080000000000000c00b90f010090330808 *0000000000000c00c20f0100203408080000000000000c00cd0f0100403408080000000000000c *00d60f01003cb811080000000000001000e30f01008c3408080000000000000c00ed0f01005434 *08080000000000000c00f70f0100543408080000000000000c00021001008c3408080000000000 *000c000d100100ec3408080000000000000c00161001004cb81108000000000000100023100100 *fc3408080000000000000c002d100100fc3408080000000000000c003810010058350808000000 *0000000c00411001005cb8110800000000000010004e100100783508080000000000000c005810 *0100783508080000000000000c00631001006cb811080000000000001000701001007cb8110800 *000000000010007d100100843608080000000000000c0087100100f43508080000000000000c00 *91100100f43508080000000000000c009a100100843608080000000000000c00a5100100a43608 *080000000000000c00ae10010080b811080000000000001000bb100100f0360808000000000000 *0c00c5100100b83608080000000000000c00cf100100b83608080000000000000c00da100100f0 *3608080000000000000c00e5100100503708080000000000000c00ee10010090b8110800000000 *00001000fb100100603708080000000000000c0005110100603708080000000000000c00101101 *00bc3708080000000000000c0019110100a0b81108000000000000100026110100dc3708080000 *000000000c0030110100dc3708080000000000000c003b110100b0b81108000000000000100048 *110100c0b81108000000000000100055110100e83808080000000000000c005f11010058380808 *0000000000000c0069110100583808080000000000000c0072110100e83808080000000000000c *007d110100083908080000000000000c0086110100c4b811080000000000001000931101005439 *08080000000000000c009d1101001c3908080000000000000c00a71101001c3908080000000000 *000c00b2110100543908080000000000000c00bd110100b43908080000000000000c00c6110100 *d4b811080000000000001000d3110100c43908080000000000000c00dd110100c4390808000000 *0000000c00e8110100203a08080000000000000c00f1110100e4b811080000000000001000fe11 *0100403a08080000000000000c0008120100403a08080000000000000c0013120100f4b8110800 *000000000010002012010004b9110800000000000010002d1201004c3b08080000000000000c00 *37120100bc3a08080000000000000c0041120100bc3a08080000000000000c004a1201004c3b08 *080000000000000c00551201006c3b08080000000000000c005e12010008b91108000000000000 *10006b120100b83b08080000000000000c0075120100803b08080000000000000c007f12010080 *3b08080000000000000c008a120100b83b08080000000000000c0095120100183c080800000000 *00000c009e12010018b911080000000000001000ab120100283c08080000000000000c00b51201 *00283c08080000000000000c00c0120100843c08080000000000000c00c912010028b911080000 *000000001000d6120100a43c08080000000000000c00e0120100a43c08080000000000000c00eb *12010038b911080000000000001000f812010048b91108000000000000100005130100b03d0808 *0000000000000c000f130100203d08080000000000000c0019130100203d08080000000000000c *0022130100b03d08080000000000000c002d130100d03d08080000000000000c00361301004cb9 *11080000000000001000431301001c3e08080000000000000c004d130100e43d08080000000000 *000c0057130100e43d08080000000000000c00621301001c3e08080000000000000c006d130100 *7c3e08080000000000000c00761301005cb911080000000000001000831301008c3e0808000000 *0000000c008d1301008c3e08080000000000000c0098130100e83e08080000000000000c00a113 *01006cb911080000000000001000ae130100083f08080000000000000c00b8130100083f080800 *00000000000c00c31301007cb911080000000000001000d01301008cb911080000000000001000 *dd130100144008080000000000000c00e7130100843f08080000000000000c00f1130100843f08 *080000000000000c00fa130100144008080000000000000c000514010034400808000000000000 *0c000e14010090b9110800000000000010001b140100444008080000000000000c002514010044 *4008080000000000000c0030140100a04008080000000000000c0039140100a0b9110800000000 *0000100046140100c04008080000000000000c0050140100c04008080000000000000c005b1401 *00b0b91108000000000000100068140100c0b91108000000000000100075140100cc4108080000 *000000000c007f1401003c4108080000000000000c00891401003c4108080000000000000c0092 *140100cc4108080000000000000c009d140100ec4108080000000000000c00a6140100c4b91108 *0000000000001000b3140100384208080000000000000c00bd140100004208080000000000000c *00c7140100004208080000000000000c00d2140100384208080000000000000c00dd1401009842 *08080000000000000c00e6140100d4b911080000000000001000f3140100a84208080000000000 *000c00fd140100a84208080000000000000c0008150100044308080000000000000c0011150100 *e4b9110800000000000010001e150100244308080000000000000c002815010024430808000000 *0000000c0033150100f4b9110800000000000010004015010004ba110800000000000010004d15 *0100304408080000000000000c0057150100a04308080000000000000c0061150100a043080800 *00000000000c006a150100304408080000000000000c0075150100504408080000000000000c00 *7e15010008ba110800000000000010008b1501009c4408080000000000000c0095150100644408 *080000000000000c009f150100644408080000000000000c00aa1501009c440808000000000000 *0c00b5150100fc4408080000000000000c00be15010018ba11080000000000001000cb1501000c *4508080000000000000c00d51501000c4508080000000000000c00e01501006845080800000000 *00000c00e915010028ba11080000000000001000f6150100884508080000000000000c00001601 *00884508080000000000000c000b16010038ba110800000000000010001816010048ba11080000 *00000000100025160100944608080000000000000c002f160100044608080000000000000c0039 *160100044608080000000000000c0042160100944608080000000000000c004d160100b4460808 *0000000000000c00561601004cba1108000000000000100063160100c44608080000000000000c *006d160100c44608080000000000000c0078160100204708080000000000000c00811601005cba *110800000000000010008e160100404708080000000000000c0098160100404708080000000000 *000c00a31601006cba11080000000000001000b01601007cba11080000000000001000bd160100 *4c4808080000000000000c00c7160100bc4708080000000000000c00d1160100bc470808000000 *0000000c00da1601004c4808080000000000000c00e51601006c4808080000000000000c00ee16 *010080ba11080000000000001000fb160100844808080000000000000c00051701008448080800 *00000000000c0010170100e44808080000000000000c001917010090ba11080000000000001000 *26170100f44808080000000000000c0030170100f44808080000000000000c003b170100504908 *080000000000000c0044170100a0ba110800000000000010005117010070490808000000000000 *0c005b170100704908080000000000000c0066170100b0ba1108000000000000100073170100c0 *ba1108000000000000100080170100f84a08080000000000000c008a170100ec49080800000000 *00000c0094170100ec4908080000000000000c009d170100244a08080000000000000c00a71701 *00244a08080000000000000c00b2170100584a08080000000000000c00bc170100584a08080000 *000000000c00c5170100f84a08080000000000000c00d0170100184b08080000000000000c00d9 *170100c4ba11080000000000001000e6170100284b08080000000000000c00f0170100284b0808 *0000000000000c00fb170100884b08080000000000000c0004180100d4ba110800000000000010 *0011180100a04b08080000000000000c001b180100a04b08080000000000000c0026180100004c *08080000000000000c002f180100e4ba110800000000000010003c180100104c08080000000000 *000c0046180100104c08080000000000000c00511801006c4c08080000000000000c005a180100 *f4ba1108000000000000100067180100904c08080000000000000c0071180100904c0808000000 *0000000c007c18010004bb110800000000000010008918010014bb110800000000000010009618 *0100184e08080000000000000c00a01801000c4d08080000000000000c00aa1801000c4d080800 *00000000000c00b3180100444d08080000000000000c00bd180100444d08080000000000000c00 *c8180100784d08080000000000000c00d2180100784d08080000000000000c00db180100184e08 *080000000000000c00e6180100384e08080000000000000c00ef18010018bb1108000000000000 *1000fc180100484e08080000000000000c0006190100484e08080000000000000c0011190100a8 *4e08080000000000000c001a19010028bb1108000000000000100027190100b84e080800000000 *00000c0031190100b84e08080000000000000c003c190100144f08080000000000000c00451901 *0038bb1108000000000000100052190100384f08080000000000000c005c190100384f08080000 *000000000c0067190100c84f08080000000000000c0071190100c84f08080000000000000c007c *190100045008080000000000000c0086190100045008080000000000000c009119010054500808 *0000000000000c009b190100545008080000000000000c00a6190100b45008080000000000000c *00b0190100b45008080000000000000c00bb190100645108080000000000000c00c61901007451 *08080000000000000c00d1190100fc5208080000000000000c00dc190100885108080000000000 *000c00e7190100945108080000000000000c00f2190100ec5108080000000000000c00fc190100 *f85108080000000000000c00061a0100f85108080000000000000c00111a010024520808000000 *0000000c001c1a01006c5208080000000000000c00261a0100745208080000000000000c00301a *0100745208080000000000000c00391a0100a05208080000000000000c00431a0100a052080800 *00000000000c004c1a0100c05208080000000000000c00571a0100ec5208080000000000000c00 *611a0100fc5208080000000000000c006b1a010078bb11080000000000001000781a0100a85308 *080000000000000c00821a0100685308080000000000000c008c1a010068530808000000000000 *0c00951a0100a85308080000000000000c00a01a0100c85308080000000000000c00a91a01007c *bb11080000000000001000b61a0100d85308080000000000000c00c01a0100d853080800000000 *00000c00cb1a0100345408080000000000000c00d41a01008cbb11080000000000001000e11a01 *00545408080000000000000c00eb1a0100545408080000000000000c00f61a01009cbb11080000 *000000001000031b0100acbb11080000000000001000101b0100105508080000000000000c001a *1b0100d05408080000000000000c00241b0100d05408080000000000000c002d1b010010550808 *0000000000000c00381b0100305508080000000000000c00411b0100b0bb110800000000000010 *004e1b01007c5508080000000000000c00581b0100445508080000000000000c00621b01004455 *08080000000000000c006d1b01007c5508080000000000000c00781b0100dc5508080000000000 *000c00811b0100c0bb110800000000000010008e1b0100ec5508080000000000000c00981b0100 *ec5508080000000000000c00a31b0100485608080000000000000c00ac1b0100d0bb1108000000 *0000001000b91b0100685608080000000000000c00c31b0100685608080000000000000c00ce1b *0100e0bb11080000000000001000db1b0100f0bb11080000000000001000e81b01006057080800 *00000000000c00f21b0100e45608080000000000000c00fc1b0100e45608080000000000000c00 *051c0100605708080000000000000c00101c0100805708080000000000000c00191c0100f4bb11 *080000000000001000261c0100905708080000000000000c00301c010090570808000000000000 *0c003b1c0100ec5708080000000000000c00441c010004bc11080000000000001000511c010004 *5808080000000000000c005b1c0100045808080000000000000c00661c010014bc110800000000 *00001000731c010024bc11080000000000001000801c0100f45808080000000000000c008a1c01 *00785808080000000000000c00941c0100785808080000000000000c009d1c0100f45808080000 *000000000c00a81c0100145908080000000000000c00b11c010028bc11080000000000001000be *1c0100245908080000000000000c00c81c0100245908080000000000000c00d31c010080590808 *0000000000000c00dc1c010038bc11080000000000001000e91c0100985908080000000000000c *00f31c0100985908080000000000000c00fe1c010048bc110800000000000010000b1d010058bc *11080000000000001000181d0100885a08080000000000000c00221d01000c5a08080000000000 *000c002c1d01000c5a08080000000000000c00351d0100885a08080000000000000c00401d0100 *a85a08080000000000000c00491d01005cbc11080000000000001000561d0100b85a0808000000 *0000000c00601d0100b85a08080000000000000c006b1d0100145b08080000000000000c00741d *01006cbc11080000000000001000811d01002c5b08080000000000000c008b1d01002c5b080800 *00000000000c00961d01007cbc11080000000000001000a31d01008cbc11080000000000001000 *b01d01001c5c08080000000000000c00ba1d0100a05b08080000000000000c00c41d0100a05b08 *080000000000000c00cd1d01001c5c08080000000000000c00d81d01003c5c0808000000000000 *0c00e11d010090bc11080000000000001000ee1d01004c5c08080000000000000c00f81d01004c *5c08080000000000000c00031e0100a85c08080000000000000c000c1e0100a0bc110800000000 *00001000191e0100c85c08080000000000000c00231e0100c85c08080000000000000c002e1e01 *00b0bc110800000000000010003b1e0100c0bc11080000000000001000481e0100c05d08080000 *000000000c00521e0100445d08080000000000000c005c1e0100445d08080000000000000c0065 *1e0100c05d08080000000000000c00701e0100e05d08080000000000000c00791e0100c4bc1108 *0000000000001000861e0100f05d08080000000000000c00901e0100f05d08080000000000000c *009b1e01004c5e08080000000000000c00a41e0100d4bc11080000000000001000b11e01006c5e *08080000000000000c00bb1e01006c5e08080000000000000c00c61e0100e4bc11080000000000 *001000d31e0100f4bc11080000000000001000e01e0100645f08080000000000000c00ea1e0100 *e85e08080000000000000c00f41e0100e85e08080000000000000c00fd1e0100645f0808000000 *0000000c00081f0100845f08080000000000000c00111f0100f8bc110800000000000010001e1f *0100945f08080000000000000c00281f0100945f08080000000000000c00331f0100f05f080800 *00000000000c003c1f010008bd11080000000000001000491f0100106008080000000000000c00 *531f0100106008080000000000000c005e1f010018bd110800000000000010006b1f010028bd11 *080000000000001000781f0100086108080000000000000c00821f01008c600808000000000000 *0c008c1f01008c6008080000000000000c00951f0100086108080000000000000c00a01f010028 *6108080000000000000c00a91f01002cbd11080000000000001000b61f01003861080800000000 *00000c00c01f0100386108080000000000000c00cb1f0100946108080000000000000c00d41f01 *003cbd11080000000000001000e11f0100b46108080000000000000c00eb1f0100b46108080000 *000000000c00f61f01004cbd11080000000000001000032001005cbd1108000000000000100010 *200100ac6208080000000000000c001a200100306208080000000000000c002420010030620808 *0000000000000c002d200100ac6208080000000000000c0038200100cc6208080000000000000c *004120010060bd110800000000000010004e200100dc6208080000000000000c0058200100dc62 *08080000000000000c0063200100386308080000000000000c006c20010070bd11080000000000 *00100079200100586308080000000000000c0083200100586308080000000000000c008e200100 *80bd110800000000000010009b20010090bd11080000000000001000a820010050640808000000 *0000000c00b2200100d46308080000000000000c00bc200100d46308080000000000000c00c520 *0100506408080000000000000c00d0200100706408080000000000000c00d920010094bd110800 *00000000001000e6200100806408080000000000000c00f0200100806408080000000000000c00 *fb200100dc6408080000000000000c0004210100a4bd1108000000000000100011210100fc6408 *080000000000000c001b210100fc6408080000000000000c0026210100b4bd1108000000000000 *100033210100c4bd1108000000000000100040210100f46508080000000000000c004a21010078 *6508080000000000000c0054210100786508080000000000000c005d210100f465080800000000 *00000c0068210100146608080000000000000c0071210100c8bd110800000000000010007e2101 *002c6608080000000000000c00882101002c6608080000000000000c00932101008c6608080000 *000000000c009c210100d8bd11080000000000001000a92101009c6608080000000000000c00b3 *2101009c6608080000000000000c00be210100f86608080000000000000c00c7210100e8bd1108 *0000000000001000d4210100186708080000000000000c00de210100186708080000000000000c *00e9210100f8bd11080000000000001000f621010008be11080000000000001000032201001068 *08080000000000000c000d220100946708080000000000000c0017220100946708080000000000 *000c0020220100106808080000000000000c002b220100306808080000000000000c0034220100 *0cbe1108000000000000100041220100406808080000000000000c004b22010040680808000000 *0000000c00562201009c6808080000000000000c005f2201001cbe110800000000000010006c22 *0100bc6808080000000000000c0076220100bc6808080000000000000c00812201002cbe110800 *000000000010008e2201003cbe110800000000000010009b220100b46908080000000000000c00 *a5220100386908080000000000000c00af220100386908080000000000000c00b8220100b46908 *080000000000000c00c3220100d46908080000000000000c00cc22010040be1108000000000000 *1000d9220100746a08080000000000000c00e3220100f06908080000000000000c00ed220100f0 *6908080000000000000c00f8220100286a08080000000000000c0002230100286a080800000000 *00000c000d230100746a08080000000000000c0018230100d86a08080000000000000c00212301 *0050be110800000000000010002e2301002c6b08080000000000000c0038230100f46a08080000 *000000000c0042230100f46a08080000000000000c004d2301002c6b08080000000000000c0058 *230100906b08080000000000000c006123010060be110800000000000010006e230100a06b0808 *0000000000000c0078230100a06b08080000000000000c0083230100fc6b08080000000000000c *008c23010070be11080000000000001000992301001c6c08080000000000000c00a32301001c6c *08080000000000000c00ae23010080be11080000000000001000bb23010090be11080000000000 *001000c8230100146d08080000000000000c00d2230100986c08080000000000000c00dc230100 *986c08080000000000000c00e5230100146d08080000000000000c00f0230100346d0808000000 *0000000c00f923010094be1108000000000000100006240100d46d08080000000000000c001024 *0100506d08080000000000000c001a240100506d08080000000000000c0025240100886d080800 *00000000000c002f240100886d08080000000000000c003a240100d46d08080000000000000c00 *45240100386e08080000000000000c004e240100a4be110800000000000010005b2401008c6e08 *080000000000000c0065240100546e08080000000000000c006f240100546e0808000000000000 *0c007a2401008c6e08080000000000000c0085240100f06e08080000000000000c008e240100b4 *be110800000000000010009b240100006f08080000000000000c00a5240100006f080800000000 *00000c00b02401005c6f08080000000000000c00b9240100c4be11080000000000001000c62401 *007c6f08080000000000000c00d02401007c6f08080000000000000c00db240100d4be11080000 *000000001000e8240100e4be11080000000000001000f5240100747008080000000000000c00ff *240100f86f08080000000000000c0009250100f86f08080000000000000c001225010074700808 *0000000000000c001d250100947008080000000000000c0026250100e8be110800000000000010 *0033250100347108080000000000000c003d250100b07008080000000000000c0047250100b070 *08080000000000000c0052250100e87008080000000000000c005c250100e87008080000000000 *000c0067250100347108080000000000000c0072250100987108080000000000000c007b250100 *f8be1108000000000000100088250100ec7108080000000000000c0092250100b4710808000000 *0000000c009c250100b47108080000000000000c00a7250100ec7108080000000000000c00b225 *0100507208080000000000000c00bb25010008bf11080000000000001000c82501006072080800 *00000000000c00d2250100607208080000000000000c00dd250100bc7208080000000000000c00 *e625010018bf11080000000000001000f3250100dc7208080000000000000c00fd250100dc7208 *080000000000000c000826010028bf110800000000000010001526010038bf1108000000000000 *100022260100d47308080000000000000c002c260100587308080000000000000c003626010058 *7308080000000000000c003f260100d47308080000000000000c004a260100f473080800000000 *00000c00532601003cbf11080000000000001000602601000c7408080000000000000c006a2601 *000c7408080000000000000c00752601006c7408080000000000000c007e2601004cbf11080000 *0000000010008b2601007c7408080000000000000c00952601007c7408080000000000000c00a0 *260100d87408080000000000000c00a92601005cbf11080000000000001000b6260100f8740808 *0000000000000c00c0260100f87408080000000000000c00cb2601006cbf110800000000000010 *00d8260100987508080000000000000c00e3260100b07508080000000000000c00ed260100b075 *08080000000000000c00f6260100087608080000000000000c0001270100347608080000000000 *000c000b270100447608080000000000000c0015270100447608080000000000000c0020270100 *707608080000000000000c002a270100707608080000000000000c0035270100b4760808000000 *0000000c003f270100b47608080000000000000c004a270100f07608080000000000000c005427 *0100f07608080000000000000c005f270100247708080000000000000c00692701002477080800 *00000000000c0074270100607708080000000000000c007e270100607708080000000000000c00 *89270100ac7708080000000000000c0093270100ac7708080000000000000c009e2701000c7808 *080000000000000c00a82701000c7808080000000000000c00b327010064780808000000000000 *0c00bd270100647808080000000000000c00c6270100c07808080000000000000c00d0270100c0 *7808080000000000000c00db270100f07808080000000000000c00e5270100f078080800000000 *00000c00f0270100487908080000000000000c00fa270100487908080000000000000c00052801 *00947908080000000000000c0010280100a07908080000000000000c001b280100cc7908080000 *000000000c0025280100d87908080000000000000c002f280100d87908080000000000000c003a *280100107a08080000000000000c0044280100107a08080000000000000c004f280100807a0808 *0000000000000c0059280100807a08080000000000000c00622801000c7b08080000000000000c *006c2801000c7b08080000000000000c0077280100c07b08080000000000000c0081280100c07b *08080000000000000c008c280100f07b08080000000000000c0097280100307c08080000000000 *000c00a1280100307c08080000000000000c00ac2801006c7c08080000000000000c00b6280100 *6c7c08080000000000000c00c1280100a87c08080000000000000c00cb280100a87c0808000000 *0000000c00d6280100d87c08080000000000000c00e1280100187d08080000000000000c00eb28 *0100187d08080000000000000c00f6280100647d08080000000000000c0000290100647d080800 *00000000000c000b2901009c7d08080000000000000c00152901009c7d08080000000000000c00 *20290100f47d08080000000000000c002a290100f47d08080000000000000c0033290100407e08 *080000000000000c003e290100687e08080000000000000c0048290100747e0808000000000000 *0c0052290100747e08080000000000000c005b290100c47e08080000000000000c0065290100c4 *7e08080000000000000c006e290100e87e08080000000000000c0079290100147f080800000000 *00000c0083290100247f08080000000000000c008d290100247f08080000000000000c00982901 *00487f08080000000000000c00a2290100487f08080000000000000c00ad290100787f08080000 *000000000c00b8290100b07f08080000000000000c00c2290100b07f08080000000000000c00cd *290100fc7f08080000000000000c00d7290100fc7f08080000000000000c00e22901002c800808 *0000000000000c00ed290100808008080000000000000c00f7290100808008080000000000000c *00022a0100cc8008080000000000000c000c2a0100cc8008080000000000000c00172a0100fc80 *08080000000000000c00222a01005c8108080000000000000c002c2a01006c8108080000000000 *000c00362a01006c8108080000000000000c00412a0100a88108080000000000000c004c2a0100 *c48108080000000000000c00562a0100c48108080000000000000c00612a010000820808000000 *0000000c006b2a0100008208080000000000000c00762a0100308208080000000000000c00812a *0100508208080000000000000c008b2a0100508208080000000000000c00962a01008882080800 *00000000000c00a02a0100888208080000000000000c00ab2a0100d48208080000000000000c00 *b62a0100208308080000000000000c00c02a01002c8308080000000000000c00ca2a01002c8308 *080000000000000c00d32a01007c8308080000000000000c00dd2a01007c830808000000000000 *0c00e62a0100948308080000000000000c00f12a0100bc8308080000000000000c00fb2a0100c8 *8308080000000000000c00052b0100c88308080000000000000c00102b0100f483080800000000 *00000c001b2b0100688408080000000000000c00252b0100788408080000000000000c002f2b01 *00788408080000000000000c003a2b0100b88408080000000000000c00442b0100b88408080000 *000000000c004f2b0100ec8408080000000000000c00592b0100ec8408080000000000000c0062 *2b0100f08508080000000000000c006d2b0100088608080000000000000c00772b010008860808 *0000000000000c00802b0100608608080000000000000c008b2b01008c8608080000000000000c *00952b01009c8608080000000000000c009f2b01009c8608080000000000000c00aa2b0100c886 *08080000000000000c00b42b0100c88608080000000000000c00bf2b01000c8708080000000000 *000c00c92b01000c8708080000000000000c00d42b0100648708080000000000000c00de2b0100 *648708080000000000000c00e92b0100a08708080000000000000c00f32b0100a0870808000000 *0000000c00fe2b0100008808080000000000000c00082c0100008808080000000000000c00132c *0100648808080000000000000c001d2c0100648808080000000000000c00282c0100c888080800 *00000000000c00322c0100c88808080000000000000c003d2c0100148908080000000000000c00 *482c0100208908080000000000000c00532c01006c8908080000000000000c005d2c0100788908 *080000000000000c00672c0100788908080000000000000c00702c010090890808000000000000 *0c007a2c0100908908080000000000000c00852c0100c88908080000000000000c008f2c0100c8 *8908080000000000000c009a2c0100048a08080000000000000c00a42c0100048a080800000000 *00000c00af2c0100748a08080000000000000c00b92c0100748a08080000000000000c00c42c01 *00508b08080000000000000c00ce2c0100508b08080000000000000c00d92c0100208c08080000 *000000000c00e42c0100308c08080000000000000c00ef2c01002c8d08080000000000000c00fa *2c0100448c08080000000000000c00052d0100988c08080000000000000c000f2d0100a08c0808 *0000000000000c00192d0100a08c08080000000000000c00222d0100cc8c08080000000000000c *002c2d0100cc8c08080000000000000c00352d0100f08c08080000000000000c00402d01001c8d *08080000000000000c004a2d01002c8d08080000000000000c00542d0100548d08080000000000 *000c005e2d0100548d08080000000000000c00672d0100948d08080000000000000c00712d0100 *948d08080000000000000c007c2d0100cc8d08080000000000000c00862d0100cc8d0808000000 *0000000c00912d0100188e08080000000000000c009b2d0100188e08080000000000000c00a62d *01008c8e08080000000000000c00b02d01008c8e08080000000000000c00b92d0100f48e080800 *00000000000c00c32d0100f48e08080000000000000c00cc2d0100188f08080000000000000c00 *d72d0100288f08080000000000000c00e22d0100609008080000000000000c00ed2d01006c8f08 *080000000000000c00f82d0100a08f08080000000000000c00022e0100a88f0808000000000000 *0c000c2e0100a88f08080000000000000c00152e0100d48f08080000000000000c001f2e0100d4 *8f08080000000000000c00282e0100049008080000000000000c00322e01000490080800000000 *00000c003b2e0100249008080000000000000c00462e0100509008080000000000000c00502e01 *00609008080000000000000c005a2e0100809008080000000000000c00642e01008c9008080000 *000000000c006e2e0100989008080000000000000c00782e0100bc9008080000000000000c0082 *2e0100bc9008080000000000000c008d2e0100d89008080000000000000c00972e0100f0900808 *0000000000000c00a12e0100f09008080000000000000c00ac2e0100209108080000000000000c *00b62e0100389108080000000000000c00c02e0100389108080000000000000c00cb2e01009891 *08080000000000000c00d52e0100989108080000000000000c00e02e0100d49108080000000000 *000c00ea2e0100d49108080000000000000c00f52e0100349208080000000000000c00ff2e0100 *349208080000000000000c000a2f01005c9208080000000000000c00152f0100b0920808000000 *0000000c001f2f0100b09208080000000000000c002a2f0100e09208080000000000000c00342f *0100f89208080000000000000c003e2f0100f89208080000000000000c00492f01003493080800 *00000000000c00532f0100349308080000000000000c005e2f0100849308080000000000000c00 *682f0100849308080000000000000c00732f0100c09308080000000000000c007d2f0100c09308 *080000000000000c00882f0100149408080000000000000c00932f01005c940808000000000000 *0c009d2f01005c9408080000000000000c00a82f0100909408080000000000000c00b22f010090 *9408080000000000000c00bb2f0100cc9408080000000000000c00c62f0100f094080800000000 *00000c00d02f0100f09408080000000000000c00db2f01003c9508080000000000000c00e52f01 *00489508080000000000000c00ef2f0100489508080000000000000c00f82f0100949508080000 *000000000c0003300100bc9508080000000000000c000d300100cc9508080000000000000c0017 *300100cc9508080000000000000c0022300100009608080000000000000c002c30010000960808 *0000000000000c0037300100549608080000000000000c0041300100549608080000000000000c *004a3001008c9608080000000000000c00543001008c9608080000000000000c005f300100c096 *08080000000000000c0069300100c09608080000000000000c00723001006c9708080000000000 *000c007c3001006c9708080000000000000c0087300100a89708080000000000000c0091300100 *a89708080000000000000c009c300100f89708080000000000000c00a6300100f8970808000000 *0000000c00b13001006c9808080000000000000c00bb3001006c9808080000000000000c00c430 *0100d89808080000000000000c00ce300100d89808080000000000000c00d73001002099080800 *00000000000c00e2300100309908080000000000000c00ed300100689a08080000000000000c00 *f8300100749908080000000000000c0003310100a89908080000000000000c000d310100b09908 *080000000000000c0017310100b09908080000000000000c0020310100dc990808000000000000 *0c002a310100dc9908080000000000000c00333101000c9a08080000000000000c003d3101000c *9a08080000000000000c00463101002c9a08080000000000000c0051310100589a080800000000 *00000c005b310100689a08080000000000000c0065310100949a08080000000000000c006f3101 *00949a08080000000000000c007a310100c49a08080000000000000c0085310100f89a08080000 *000000000c008f310100f89a08080000000000000c0098310100849b08080000000000000c00a2 *310100849b08080000000000000c00ad310100bc9b08080000000000000c00b7310100bc9b0808 *0000000000000c00c2310100089c08080000000000000c00cc310100089c08080000000000000c *00d7310100489c08080000000000000c00e1310100489c08080000000000000c00ec310100ac9c *08080000000000000c00f6310100ac9c08080000000000000c0001320100e09c08080000000000 *000c000b320100e09c08080000000000000c0016320100349d08080000000000000c0021320100 *a49d08080000000000000c002b320100b49d08080000000000000c0035320100b49d0808000000 *0000000c0040320100fc9d08080000000000000c004a320100fc9d08080000000000000c005532 *0100309e08080000000000000c005f320100309e08080000000000000c0068320100389f080800 *00000000000c0071320100bcbf110800000000000010007e320100c0a008080000000000000c00 *88320100549f08080000000000000c0092320100549f08080000000000000c009d320100889f08 *080000000000000c00a7320100889f08080000000000000c00b2320100c49f0808000000000000 *0c00bc320100c49f08080000000000000c00c732010014a008080000000000000c00d132010014 *a008080000000000000c00dc3201006ca008080000000000000c00e63201006ca0080800000000 *00000c00ef320100c0a008080000000000000c00fa3201001ca108080000000000000c00043301 *001ca108080000000000000c000d33010044a108080000000000000c001733010044a108080000 *000000000c00223301006ca108080000000000000c002c3301006ca108080000000000000c0037 *33010010a208080000000000000c004133010010a208080000000000000c004c33010070a20808 *0000000000000c005633010070a208080000000000000c0061330100aca208080000000000000c *006b330100aca208080000000000000c0074330100eca208080000000000000c007e330100eca2 *08080000000000000c008733010000a308080000000000000c009133010000a308080000000000 *000c009c33010058a308080000000000000c00a633010058a308080000000000000c00b1330100 *a8a308080000000000000c00bb330100a8a308080000000000000c00c6330100eca30808000000 *0000000c00d133010000a408080000000000000c00dc3301001ca408080000000000000c00e633 *01001ca408080000000000000c00f133010068a408080000000000000c00fc3301007ca4080800 *00000000000c000734010098a408080000000000000c001134010098a408080000000000000c00 *1c340100eca408080000000000000c0026340100f8a408080000000000000c0030340100f8a408 *080000000000000c003b34010060a508080000000000000c004534010060a50808000000000000 *0c0050340100c8a508080000000000000c005a340100c8a508080000000000000c006534010018 *a608080000000000000c006f34010018a608080000000000000c007a3401005ca6080800000000 *00000c008534010078a608080000000000000c008f34010078a608080000000000000c009a3401 *00a8a608080000000000000c00a5340100e4a608080000000000000c00af340100f0a608080000 *000000000c00b9340100f0a608080000000000000c00c434010064a708080000000000000c00ce *34010064a708080000000000000c00d9340100d4a708080000000000000c00e3340100d4a70808 *0000000000000c00ec340100e4a708080000000000000c00f6340100e4a708080000000000000c *00ff340100f8a708080000000000000c0009350100f8a708080000000000000c00123501000ca8 *08080000000000000c001c3501000ca808080000000000000c00273501003ca808080000000000 *000c00313501003ca808080000000000000c003c35010088a808080000000000000c0046350100 *88a808080000000000000c004f35010098a808080000000000000c005935010098a80808000000 *0000000c0062350100aca808080000000000000c006c350100aca808080000000000000c007735 *0100dca808080000000000000c0081350100dca808080000000000000c008c35010020a9080800 *00000000000c00973501003ca908080000000000000c00a13501003ca908080000000000000c00 *ac3501006ca908080000000000000c00b7350100a8a908080000000000000c00c1350100b4a908 *080000000000000c00cb350100b4a908080000000000000c00d635010028aa0808000000000000 *0c00e035010028aa08080000000000000c00eb3501008caa08080000000000000c00f63501009c *aa08080000000000000c0001360100b8aa08080000000000000c000b360100b8aa080800000000 *00000c0016360100e8aa08080000000000000c002136010024ab08080000000000000c002b3601 *0024ab08080000000000000c003636010078ab08080000000000000c004036010084ab08080000 *000000000c004a36010084ab08080000000000000c00533601009cab08080000000000000c005d *3601009cab08080000000000000c0068360100d4ab08080000000000000c0072360100d4ab0808 *0000000000000c007b3601005cac08080000000000000c0084360100ccbf110800000000000010 *009136010094ad08080000000000000c009b36010074ac08080000000000000c00a536010074ac *08080000000000000c00b0360100a8ac08080000000000000c00ba360100a8ac08080000000000 *000c00c3360100c8ac08080000000000000c00cd360100c8ac08080000000000000c00d8360100 *08ad08080000000000000c00e236010008ad08080000000000000c00eb36010064ad0808000000 *0000000c00f536010064ad08080000000000000c00fe36010094ad08080000000000000c000937 *0100b0ad08080000000000000c0012370100d4bf110800000000000010001f370100fcad080800 *00000000000c0029370100c4ad08080000000000000c0033370100c4ad08080000000000000c00 *3e370100fcad08080000000000000c004937010038ae08080000000000000c0052370100ecbf11 *0800000000000010005f3701004cae08080000000000000c00693701004cae0808000000000000 *0c0074370100a4ae08080000000000000c007d370100fcbf110800000000000010008a370100b8 *b008080000000000000c0094370100bcae08080000000000000c009e370100bcae080800000000 *00000c00a9370100f0ae08080000000000000c00b3370100f0ae08080000000000000c00bc3701 *0010af08080000000000000c00c637010010af08080000000000000c00d13701004caf08080000 *000000000c00db3701004caf08080000000000000c00e43701006caf08080000000000000c00ee *3701006caf08080000000000000c00f9370100acaf08080000000000000c0003380100acaf0808 *0000000000000c000e3801001cb008080000000000000c00183801001cb008080000000000000c *002138010084b008080000000000000c002b38010084b008080000000000000c0034380100b8b0 *08080000000000000c003f380100d4b008080000000000000c004838010004c011080000000000 *0010005538010020b108080000000000000c005f380100e8b008080000000000000c0069380100 *e8b008080000000000000c007438010020b108080000000000000c007f3801005cb10808000000 *0000000c008838010064b108080000000000000c00913801006cb108080000000000000c009a38 *010034c011080000000000001000a738010044c011080000000000001000b438010054c0110800 *00000000001000c138010080b108080000000000000c00cb38010080b108080000000000000c00 *d6380100e4b108080000000000000c00e0380100e4b108080000000000000c00eb38010048b208 *080000000000000c00f538010048b208080000000000000c0000390100a0b20808000000000000 *0c000939010064c0110800000000000010001639010004c308080000000000000c0020390100cc *b208080000000000000c002a390100ccb208080000000000000c003539010008b3080800000000 *00000c003f39010008b308080000000000000c004839010054b308080000000000000c00523901 *0054b308080000000000000c005d39010084b308080000000000000c006839010098b308080000 *000000000c007239010098b308080000000000000c007d390100d4b308080000000000000c0087 *390100d4b308080000000000000c009039010014b408080000000000000c009b39010028b40808 *0000000000000c00a539010028b408080000000000000c00b039010064b408080000000000000c *00ba39010064b408080000000000000c00c3390100b0b408080000000000000c00cd390100b0b4 *08080000000000000c00d8390100e0b408080000000000000c00e3390100f4b408080000000000 *000c00ed390100f4b408080000000000000c00f839010030b508080000000000000c00023a0100 *30b508080000000000000c000b3a010070b508080000000000000c00163a010084b50808000000 *0000000c00203a010084b508080000000000000c002b3a0100c0b508080000000000000c00353a *0100c0b508080000000000000c003e3a010000b608080000000000000c00493a010014b6080800 *00000000000c00533a010014b608080000000000000c005e3a010050b608080000000000000c00 *683a010050b608080000000000000c00713a01009cb608080000000000000c007b3a01009cb608 *080000000000000c00863a0100ccb608080000000000000c00913a0100e0b60808000000000000 *0c009b3a0100e0b608080000000000000c00a63a01001cb708080000000000000c00b03a01001c *b708080000000000000c00b93a01005cb708080000000000000c00c43a010070b7080800000000 *00000c00ce3a010070b708080000000000000c00d93a0100acb708080000000000000c00e33a01 *00acb708080000000000000c00ec3a0100ecb708080000000000000c00f73a0100f4b708080000 *000000000c00023b01002cb808080000000000000c000d3b010048b808080000000000000c0017 *3b010054b808080000000000000c00213b010054b808080000000000000c002a3b010074b80808 *0000000000000c00353b0100a0b808080000000000000c003f3b0100a0b808080000000000000c *004a3b0100acb808080000000000000c00543b0100e0b808080000000000000c005e3b0100f0b8 *08080000000000000c00683b0100f0b808080000000000000c00733b010034b908080000000000 *000c007d3b010034b908080000000000000c00883b010090b908080000000000000c00923b0100 *90b908080000000000000c009d3b0100bcb908080000000000000c00a83b01000cba0808000000 *0000000c00b33b010028ba08080000000000000c00bd3b010034ba08080000000000000c00c73b *010034ba08080000000000000c00d03b010054ba08080000000000000c00db3b010080ba080800 *00000000000c00e53b010080ba08080000000000000c00f03b01008cba08080000000000000c00 *fa3b0100c0ba08080000000000000c00043c0100d0ba08080000000000000c000e3c0100d0ba08 *080000000000000c00193c010004bb08080000000000000c00243c010060bb0808000000000000 *0c002e3c010060bb08080000000000000c00393c01009cbb08080000000000000c00433c0100d0 *bb08080000000000000c004d3c0100e0bb08080000000000000c00573c0100e0bb080800000000 *00000c00623c010014bc08080000000000000c006d3c01005cbc08080000000000000c00783c01 *0078bc08080000000000000c00823c010084bc08080000000000000c008c3c010084bc08080000 *000000000c00953c0100a4bc08080000000000000c00a03c0100d0bc08080000000000000c00aa *3c0100d0bc08080000000000000c00b53c0100dcbc08080000000000000c00bf3c010010bd0808 *0000000000000c00c93c010020bd08080000000000000c00d33c010020bd08080000000000000c *00de3c010064bd08080000000000000c00e83c010064bd08080000000000000c00f33c0100c0bd *08080000000000000c00fd3c0100c0bd08080000000000000c00083d0100ecbd08080000000000 *000c00133d010038be08080000000000000c001e3d010054be08080000000000000c00283d0100 *60be08080000000000000c00323d010060be08080000000000000c003b3d010080be0808000000 *0000000c00463d0100acbe08080000000000000c00503d0100acbe08080000000000000c005b3d *0100b8be08080000000000000c00653d0100ecbe08080000000000000c006f3d0100fcbe080800 *00000000000c00793d0100fcbe08080000000000000c00843d01002cbf08080000000000000c00 *8f3d010084bf08080000000000000c00993d010084bf08080000000000000c00a43d0100c0bf08 *080000000000000c00ae3d0100f4bf08080000000000000c00b83d010004c00808000000000000 *0c00c23d010004c008080000000000000c00cd3d010034c008080000000000000c00d83d010078 *c008080000000000000c00e33d010094c008080000000000000c00ed3d0100a0c0080800000000 *00000c00f73d0100a0c008080000000000000c00003e0100c0c008080000000000000c000b3e01 *00ecc008080000000000000c00153e0100ecc008080000000000000c00203e0100f8c008080000 *000000000c002a3e01002cc108080000000000000c00343e01003cc108080000000000000c003e *3e01003cc108080000000000000c00493e01006cc108080000000000000c00543e0100c4c10808 *0000000000000c005e3e0100c4c108080000000000000c00693e010000c208080000000000000c *00733e010034c208080000000000000c007d3e010044c208080000000000000c00873e010044c2 *08080000000000000c00923e010080c208080000000000000c009c3e010080c208080000000000 *000c00a53e0100d0c208080000000000000c00af3e0100d0c208080000000000000c00ba3e0100 *04c308080000000000000c00c53e010068c308080000000000000c00ce3e010074c01108000000 *0000001000db3e01007cc308080000000000000c00e53e01007cc308080000000000000c00f03e *0100d4c308080000000000000c00f93e0100dcc308080000000000000c00023f0100e4c3080800 *00000000000c000b3f01009cc011080000000000001000183f0100acc011080000000000001000 *253f0100bcc011080000000000001000323f0100f8c308080000000000000c003c3f0100f8c308 *080000000000000c00473f01005cc408080000000000000c00513f01005cc40808000000000000 *0c005c3f0100c0c408080000000000000c00663f0100c0c408080000000000000c00713f010018 *c508080000000000000c007a3f0100ccc011080000000000001000873f01002cc5080800000000 *00000c00913f01002cc508080000000000000c009c3f010084c508080000000000000c00a53f01 *00dcc011080000000000001000b23f0100a4c508080000000000000c00bc3f010090c508080000 *000000000c00c63f010090c508080000000000000c00cf3f0100a4c508080000000000000c00da *3f0100f8c508080000000000000c00e33f0100ecc011080000000000001000f03f0100c4dc0808 *0000000000000c00fa3f010024c608080000000000000c000440010024c608080000000000000c *000f40010060c608080000000000000c001940010060c608080000000000000c0022400100acc6 *08080000000000000c002c400100acc608080000000000000c0037400100dcc608080000000000 *000c0042400100f0c608080000000000000c004c400100f0c608080000000000000c0057400100 *2cc708080000000000000c00614001002cc708080000000000000c006a4001006cc70808000000 *0000000c007540010080c708080000000000000c007f40010080c708080000000000000c008a40 *0100bcc708080000000000000c0094400100bcc708080000000000000c009d40010008c8080800 *00000000000c00a740010008c808080000000000000c00b240010038c808080000000000000c00 *bd4001004cc808080000000000000c00c74001004cc808080000000000000c00d240010088c808 *080000000000000c00dc40010088c808080000000000000c00e5400100c8c80808000000000000 *0c00f0400100dcc808080000000000000c00fa400100dcc808080000000000000c000541010018 *c908080000000000000c000f41010018c908080000000000000c001841010058c9080800000000 *00000c00234101006cc908080000000000000c002d4101006cc908080000000000000c00384101 *00a8c908080000000000000c0042410100a8c908080000000000000c004b410100f4c908080000 *000000000c0055410100f4c908080000000000000c006041010024ca08080000000000000c006b *41010038ca08080000000000000c007541010038ca08080000000000000c008041010074ca0808 *0000000000000c008a41010074ca08080000000000000c0093410100b4ca08080000000000000c *009e410100c8ca08080000000000000c00a8410100c8ca08080000000000000c00b341010004cb *08080000000000000c00bd41010004cb08080000000000000c00c641010044cb08080000000000 *000c00d141010058cb08080000000000000c00db41010058cb08080000000000000c00e6410100 *94cb08080000000000000c00f041010094cb08080000000000000c00f9410100e0cb0808000000 *0000000c0003420100e0cb08080000000000000c000e42010010cc08080000000000000c001942 *010024cc08080000000000000c002342010024cc08080000000000000c002e42010060cc080800 *00000000000c003842010060cc08080000000000000c0041420100a0cc08080000000000000c00 *4c420100b4cc08080000000000000c0056420100b4cc08080000000000000c0061420100f0cc08 *080000000000000c006b420100f0cc08080000000000000c007442010030cd0808000000000000 *0c007f42010038cd08080000000000000c008a42010074cd08080000000000000c009542010090 *cd08080000000000000c009f4201009ccd08080000000000000c00a94201009ccd080800000000 *00000c00b2420100bccd08080000000000000c00bd420100e8cd08080000000000000c00c74201 *00e8cd08080000000000000c00d2420100f4cd08080000000000000c00dc42010028ce08080000 *000000000c00e642010038ce08080000000000000c00f042010038ce08080000000000000c00fb *42010084ce08080000000000000c000543010084ce08080000000000000c0010430100e8ce0808 *0000000000000c001a430100e8ce08080000000000000c002543010014cf08080000000000000c *00304301006ccf08080000000000000c003b43010088cf08080000000000000c004543010094cf *08080000000000000c004f43010094cf08080000000000000c0058430100b4cf08080000000000 *000c0063430100e0cf08080000000000000c006d430100e0cf08080000000000000c0078430100 *eccf08080000000000000c008243010020d008080000000000000c008c43010030d00808000000 *0000000c009643010030d008080000000000000c00a14301006cd008080000000000000c00ac43 *0100d0d008080000000000000c00b6430100d0d008080000000000000c00c14301000cd1080800 *00000000000c00cb43010040d108080000000000000c00d543010050d108080000000000000c00 *df43010050d108080000000000000c00ea4301008cd108080000000000000c00f5430100dcd108 *080000000000000c0000440100f8d108080000000000000c000a44010004d20808000000000000 *0c001444010004d208080000000000000c001d44010024d208080000000000000c002844010050 *d208080000000000000c003244010050d208080000000000000c003d4401005cd2080800000000 *00000c004744010090d208080000000000000c0051440100a0d208080000000000000c005b4401 *00a0d208080000000000000c0066440100ecd208080000000000000c0070440100ecd208080000 *000000000c007b44010050d308080000000000000c008544010050d308080000000000000c0090 *4401007cd308080000000000000c009b440100ccd308080000000000000c00a6440100e8d30808 *0000000000000c00b0440100f4d308080000000000000c00ba440100f4d308080000000000000c *00c344010014d408080000000000000c00ce44010040d408080000000000000c00d844010040d4 *08080000000000000c00e34401004cd408080000000000000c00ed44010080d408080000000000 *000c00f744010090d408080000000000000c000145010090d408080000000000000c000c450100 *c4d408080000000000000c001745010020d508080000000000000c002145010020d50808000000 *0000000c002c4501005cd508080000000000000c003645010090d508080000000000000c004045 *0100a0d508080000000000000c004a450100a0d508080000000000000c0055450100d4d5080800 *00000000000c00604501001cd608080000000000000c006b45010038d608080000000000000c00 *7545010044d608080000000000000c007f45010044d608080000000000000c008845010064d608 *080000000000000c009345010090d608080000000000000c009d45010090d60808000000000000 *0c00a84501009cd608080000000000000c00b2450100d0d608080000000000000c00bc450100e0 *d608080000000000000c00c6450100e0d608080000000000000c00d145010024d7080800000000 *00000c00db45010024d708080000000000000c00e645010080d708080000000000000c00f04501 *0080d708080000000000000c00fb450100acd708080000000000000c0006460100f8d708080000 *000000000c001146010014d808080000000000000c001b46010020d808080000000000000c0025 *46010020d808080000000000000c002e46010040d808080000000000000c00394601006cd80808 *0000000000000c00434601006cd808080000000000000c004e46010078d808080000000000000c *0058460100acd808080000000000000c0062460100bcd808080000000000000c006c460100bcd8 *08080000000000000c0077460100ecd808080000000000000c008246010044d908080000000000 *000c008c46010044d908080000000000000c009746010080d908080000000000000c00a1460100 *b4d908080000000000000c00ab460100c4d908080000000000000c00b5460100c4d90808000000 *0000000c00c0460100f4d908080000000000000c00cb46010038da08080000000000000c00d646 *010054da08080000000000000c00e046010060da08080000000000000c00ea46010060da080800 *00000000000c00f346010080da08080000000000000c00fe460100acda08080000000000000c00 *08470100acda08080000000000000c0013470100b8da08080000000000000c001d470100ecda08 *080000000000000c0027470100fcda08080000000000000c0031470100fcda0808000000000000 *0c003c4701002cdb08080000000000000c004747010084db08080000000000000c005147010084 *db08080000000000000c005c470100c0db08080000000000000c0066470100f4db080800000000 *00000c007047010004dc08080000000000000c007a47010004dc08080000000000000c00854701 *0040dc08080000000000000c008f47010040dc08080000000000000c009847010090dc08080000 *000000000c00a247010090dc08080000000000000c00ad470100c4dc08080000000000000c00b8 *47010028dd08080000000000000c00c1470100fcc011080000000000001000ce4701003cdd0808 *0000000000000c00d84701003cdd08080000000000000c00e347010094dd08080000000000000c *00ec47010020c111080000000000001000f9470100a8dd08080000000000000c0003480100a8dd *08080000000000000c000e48010000de08080000000000000c001748010030c111080000000000 *0010002448010028e408080000000000000c002e48010028de08080000000000000c0038480100 *28de08080000000000000c004348010080de08080000000000000c004d48010080de0808000000 *0000000c0058480100b8de08080000000000000c0062480100b8de08080000000000000c006d48 *010018df08080000000000000c007748010018df08080000000000000c008248010054df080800 *00000000000c008c48010054df08080000000000000c0097480100a0df08080000000000000c00 *a1480100a0df08080000000000000c00ac48010000e008080000000000000c00b648010000e008 *080000000000000c00c14801003ce008080000000000000c00cb4801003ce00808000000000000 *0c00d648010088e008080000000000000c00e048010088e008080000000000000c00eb480100e4 *e008080000000000000c00f5480100e4e008080000000000000c00fe48010004e1080800000000 *00000c000849010004e108080000000000000c00134901003ce108080000000000000c001d4901 *003ce108080000000000000c0028490100a0e108080000000000000c0032490100a0e108080000 *000000000c003d490100dce108080000000000000c0047490100dce108080000000000000c0052 *49010028e208080000000000000c005c49010028e208080000000000000c00674901008ce20808 *0000000000000c00714901008ce208080000000000000c007c490100c8e208080000000000000c *0086490100c8e208080000000000000c009149010014e308080000000000000c009b49010014e3 *08080000000000000c00a649010074e308080000000000000c00b049010074e308080000000000 *000c00b949010098e308080000000000000c00c349010098e308080000000000000c00ce490100 *d0e308080000000000000c00d8490100d0e308080000000000000c00e149010028e40808000000 *0000000c00ec49010038c111080000000000001000f949010048e408080000000000000c00024a *010040c1110800000000000010000f4a01005ce408080000000000000c00194a01005ce4080800 *00000000000c00244a0100b4e408080000000000000c002d4a010050c111080000000000001000 *3a4a0100c8e408080000000000000c00444a0100c8e408080000000000000c004f4a010020e508 *080000000000000c00584a010074c111080000000000001000654a010034e50808000000000000 *0c006f4a010034e508080000000000000c007a4a01008ce508080000000000000c00834a010084 *c111080000000000001000904a0100a0e508080000000000000c009a4a0100a0e5080800000000 *00000c00a54a0100f8e508080000000000000c00ae4a010094c111080000000000001000bb4a01 *00d0ee08080000000000000c00c54a010020e608080000000000000c00cf4a010020e608080000 *000000000c00da4a010078e608080000000000000c00e44a010078e608080000000000000c00ef *4a0100b0e608080000000000000c00f94a0100b0e608080000000000000c00044b010010e70808 *0000000000000c000e4b010010e708080000000000000c00194b01004ce708080000000000000c *00234b01004ce708080000000000000c002e4b010098e708080000000000000c00384b010098e7 *08080000000000000c00434b0100f8e708080000000000000c004d4b0100f8e708080000000000 *000c00584b010034e808080000000000000c00624b010034e808080000000000000c006d4b0100 *80e808080000000000000c00774b010080e808080000000000000c00824b0100dce80808000000 *0000000c008c4b0100dce808080000000000000c00954b0100fce808080000000000000c009f4b *0100fce808080000000000000c00aa4b010034e908080000000000000c00b44b010034e9080800 *00000000000c00bf4b010098e908080000000000000c00c94b010098e908080000000000000c00 *d44b0100d4e908080000000000000c00de4b0100d4e908080000000000000c00e94b010020ea08 *080000000000000c00f34b010020ea08080000000000000c00fe4b010084ea0808000000000000 *0c00084c010084ea08080000000000000c00134c0100c0ea08080000000000000c001d4c0100c0 *ea08080000000000000c00284c01000ceb08080000000000000c00324c01000ceb080800000000 *00000c003d4c01006ceb08080000000000000c00474c01006ceb08080000000000000c00504c01 *008ceb08080000000000000c005a4c01008ceb08080000000000000c00654c0100c4eb08080000 *000000000c006f4c0100c4eb08080000000000000c007a4c010030ec08080000000000000c0084 *4c010030ec08080000000000000c008f4c01006cec08080000000000000c00994c01006cec0808 *0000000000000c00a44c0100b8ec08080000000000000c00ae4c0100b8ec08080000000000000c *00b94c010024ed08080000000000000c00c34c010024ed08080000000000000c00ce4c010060ed *08080000000000000c00d84c010060ed08080000000000000c00e34c0100aced08080000000000 *000c00ed4c0100aced08080000000000000c00f84c010014ee08080000000000000c00024d0100 *14ee08080000000000000c000b4d010038ee08080000000000000c00154d010038ee0808000000 *0000000c00204d010070ee08080000000000000c002a4d010070ee08080000000000000c00334d *0100d0ee08080000000000000c003e4d01009cc1110800000000000010004b4d0100f0ee080800 *00000000000c00544d0100a4c111080000000000001000614d010004ef08080000000000000c00 *6b4d010004ef08080000000000000c00764d01005cef08080000000000000c007f4d0100b4c111 *0800000000000010008c4d010070ef08080000000000000c00964d010070ef0808000000000000 *0c00a14d0100c8ef08080000000000000c00aa4d0100c4c111080000000000001000b74d0100dc *ef08080000000000000c00c14d0100dcef08080000000000000c00cc4d010034f0080800000000 *00000c00d54d0100d4c111080000000000001000e24d01001c0209080000000000000c00ec4d01 *005cf008080000000000000c00f64d01005cf008080000000000000c00ff4d01007cf008080000 *000000000c00094e01007cf008080000000000000c00144e0100b8f008080000000000000c001e *4e0100b8f008080000000000000c00274e0100d8f008080000000000000c00314e0100d8f00808 *0000000000000c003c4e010014f108080000000000000c00464e010014f108080000000000000c *004f4e010034f108080000000000000c00594e010034f108080000000000000c00644e010070f1 *08080000000000000c006e4e010070f108080000000000000c00774e010090f108080000000000 *000c00814e010090f108080000000000000c008c4e0100ccf108080000000000000c00964e0100 *ccf108080000000000000c009f4e0100ecf108080000000000000c00a94e0100ecf10808000000 *0000000c00b44e010028f208080000000000000c00be4e010028f208080000000000000c00c74e *010048f208080000000000000c00d14e010048f208080000000000000c00dc4e010084f2080800 *00000000000c00e64e010084f208080000000000000c00ef4e0100a4f208080000000000000c00 *f94e0100a4f208080000000000000c00044f0100e0f208080000000000000c000e4f0100e0f208 *080000000000000c00174f010000f308080000000000000c00214f010000f30808000000000000 *0c002c4f01003cf308080000000000000c00364f01003cf308080000000000000c003f4f01005c *f308080000000000000c00494f01005cf308080000000000000c00544f010098f3080800000000 *00000c005e4f010098f308080000000000000c00674f0100b8f308080000000000000c00714f01 *00b8f308080000000000000c007c4f0100f4f308080000000000000c00864f0100f4f308080000 *000000000c008f4f010014f408080000000000000c00994f010014f408080000000000000c00a4 *4f010050f408080000000000000c00ae4f010050f408080000000000000c00b74f010070f40808 *0000000000000c00c14f010070f408080000000000000c00cc4f0100acf408080000000000000c *00d64f0100acf408080000000000000c00df4f0100ccf408080000000000000c00e94f0100ccf4 *08080000000000000c00f44f010008f508080000000000000c00fe4f010008f508080000000000 *000c000750010028f508080000000000000c001150010028f508080000000000000c001c500100 *64f508080000000000000c002650010064f508080000000000000c002f50010084f50808000000 *0000000c003950010084f508080000000000000c0044500100c0f508080000000000000c004e50 *0100c0f508080000000000000c0057500100e0f508080000000000000c0061500100e0f5080800 *00000000000c006c50010020f608080000000000000c007650010020f608080000000000000c00 *8150010090f608080000000000000c008b50010090f608080000000000000c00965001000cf708 *080000000000000c00a05001000cf708080000000000000c00ab50010094f70808000000000000 *0c00b550010094f708080000000000000c00c050010028f808080000000000000c00ca50010028 *f808080000000000000c00d5500100c8f808080000000000000c00df500100c8f8080800000000 *00000c00ea50010074f908080000000000000c00f450010074f908080000000000000c00ff5001 *002cfa08080000000000000c00095101002cfa08080000000000000c0014510100f0fa08080000 *000000000c001e510100f0fa08080000000000000c0029510100c0fb08080000000000000c0033 *510100c0fb08080000000000000c003e5101009cfc08080000000000000c00485101009cfc0808 *0000000000000c005351010084fd08080000000000000c005d51010084fd08080000000000000c *006851010078fe08080000000000000c007251010078fe08080000000000000c007d51010078ff *08080000000000000c008751010078ff08080000000000000c0092510100880009080000000000 *000c009c510100880009080000000000000c00a5510100980109080000000000000c00af510100 *980109080000000000000c00b85101001c0209080000000000000c00c351010038020908000000 *0000000c00cc510100dcc111080000000000001000d9510100840209080000000000000c00e351 *01004c0209080000000000000c00ed5101004c0209080000000000000c00f85101008402090800 *00000000000c0003520100c00209080000000000000c000c520100c80209080000000000000c00 *15520100d00209080000000000000c001e5201000cc2110800000000000010002b5201001cc211 *080000000000001000385201002cc21108000000000000100045520100e4020908000000000000 *0c004f520100e40209080000000000000c005a520100480309080000000000000c006452010048 *0309080000000000000c006f520100ac0309080000000000000c0079520100ac03090800000000 *00000c0084520100040409080000000000000c008d5201003cc2110800000000000010009a5201 *00180409080000000000000c00a4520100180409080000000000000c00af520100700409080000 *000000000c00b85201004cc211080000000000001000c5520100900409080000000000000c00cf *5201007c0409080000000000000c00d95201007c0409080000000000000c00e252010090040908 *0000000000000c00ed520100e40409080000000000000c00f65201005cc2110800000000000010 *00035301007c7d09080000000000000c000d530100240509080000000000000c00175301002405 *09080000000000000c0022530100600509080000000000000c002c530100600509080000000000 *000c0035530100ac0509080000000000000c003f530100ac0509080000000000000c004a530100 *dc0509080000000000000c0055530100f00509080000000000000c005f530100f0050908000000 *0000000c006a5301002c0609080000000000000c00745301002c0609080000000000000c007d53 *01006c0609080000000000000c0088530100800609080000000000000c00925301008006090800 *00000000000c009d530100bc0609080000000000000c00a7530100bc0609080000000000000c00 *b0530100080709080000000000000c00ba530100080709080000000000000c00c5530100380709 *080000000000000c00d05301004c0709080000000000000c00da5301004c070908000000000000 *0c00e5530100880709080000000000000c00ef530100880709080000000000000c00f8530100c8 *0709080000000000000c0003540100dc0709080000000000000c000d540100dc07090800000000 *00000c0018540100180809080000000000000c0022540100180809080000000000000c002b5401 *00580809080000000000000c00365401006c0809080000000000000c00405401006c0809080000 *000000000c004b540100a80809080000000000000c0055540100a80809080000000000000c005e *540100f40809080000000000000c0068540100f40809080000000000000c007354010024090908 *0000000000000c007e540100380909080000000000000c0088540100380909080000000000000c *0093540100740909080000000000000c009d540100740909080000000000000c00a6540100b409 *09080000000000000c00b1540100c80909080000000000000c00bb540100c80909080000000000 *000c00c6540100040a09080000000000000c00d0540100040a09080000000000000c00d9540100 *440a09080000000000000c00e4540100580a09080000000000000c00ee540100580a0908000000 *0000000c00f9540100940a09080000000000000c0003550100940a09080000000000000c000c55 *0100e00a09080000000000000c0016550100e00a09080000000000000c0021550100100b090800 *00000000000c002c550100240b09080000000000000c0036550100240b09080000000000000c00 *41550100600b09080000000000000c004b550100600b09080000000000000c0054550100a00b09 *080000000000000c005f550100b40b09080000000000000c0069550100b40b0908000000000000 *0c0074550100f00b09080000000000000c007e550100f00b09080000000000000c008755010030 *0c09080000000000000c0092550100440c09080000000000000c009c550100440c090800000000 *00000c00a7550100800c09080000000000000c00b1550100800c09080000000000000c00ba5501 *00cc0c09080000000000000c00c4550100cc0c09080000000000000c00cf550100fc0c09080000 *000000000c00da550100100d09080000000000000c00e4550100100d09080000000000000c00ef *5501004c0d09080000000000000c00f95501004c0d09080000000000000c00025601008c0d0908 *0000000000000c000d560100a00d09080000000000000c0017560100a00d09080000000000000c *0022560100dc0d09080000000000000c002c560100dc0d09080000000000000c00355601001c0e *09080000000000000c0040560100300e09080000000000000c004a560100300e09080000000000 *000c00555601006c0e09080000000000000c005f5601006c0e09080000000000000c0068560100 *b80e09080000000000000c0072560100b80e09080000000000000c007d560100e80e0908000000 *0000000c0088560100fc0e09080000000000000c0092560100fc0e09080000000000000c009d56 *0100380f09080000000000000c00a7560100380f09080000000000000c00b0560100780f090800 *00000000000c00bb5601008c0f09080000000000000c00c55601008c0f09080000000000000c00 *d0560100c80f09080000000000000c00da560100c80f09080000000000000c00e3560100081009 *080000000000000c00ee5601001c1009080000000000000c00f85601001c100908000000000000 *0c0003570100581009080000000000000c000d570100581009080000000000000c0016570100a4 *1009080000000000000c0020570100a41009080000000000000c002b570100d410090800000000 *00000c0036570100e81009080000000000000c0040570100e81009080000000000000c004b5701 *00241109080000000000000c0055570100241109080000000000000c005e570100641109080000 *000000000c0069570100781109080000000000000c0073570100781109080000000000000c007e *570100b41109080000000000000c0088570100b41109080000000000000c0091570100f4110908 *0000000000000c009c570100081209080000000000000c00a6570100081209080000000000000c *00b1570100441209080000000000000c00bb570100441209080000000000000c00c45701009012 *09080000000000000c00ce570100901209080000000000000c00d9570100c01209080000000000 *000c00e4570100d41209080000000000000c00ee570100d41209080000000000000c00f9570100 *101309080000000000000c0003580100101309080000000000000c000c58010050130908000000 *0000000c0017580100641309080000000000000c0021580100641309080000000000000c002c58 *0100a01309080000000000000c0036580100a01309080000000000000c003f580100e013090800 *00000000000c004a580100f41309080000000000000c0054580100f41309080000000000000c00 *5f580100301409080000000000000c0069580100301409080000000000000c00725801007c1409 *080000000000000c007c5801007c1409080000000000000c0087580100ac140908000000000000 *0c0092580100c01409080000000000000c009c580100c01409080000000000000c00a7580100fc *1409080000000000000c00b1580100fc1409080000000000000c00ba5801003c15090800000000 *00000c00c5580100501509080000000000000c00cf580100501509080000000000000c00da5801 *008c1509080000000000000c00e45801008c1509080000000000000c00ed580100cc1509080000 *000000000c00f8580100e01509080000000000000c0002590100e01509080000000000000c000d *5901001c1609080000000000000c00175901001c1609080000000000000c002059010068160908 *0000000000000c002a590100681609080000000000000c0035590100981609080000000000000c *0040590100ac1609080000000000000c004a590100ac1609080000000000000c0055590100e816 *09080000000000000c005f590100e81609080000000000000c0068590100281709080000000000 *000c00735901003c1709080000000000000c007d5901003c1709080000000000000c0088590100 *781709080000000000000c0092590100781709080000000000000c009b590100b8170908000000 *0000000c00a6590100cc1709080000000000000c00b0590100cc1709080000000000000c00bb59 *0100081809080000000000000c00c5590100081809080000000000000c00ce5901005418090800 *00000000000c00d8590100541809080000000000000c00e3590100841809080000000000000c00 *ee590100981809080000000000000c00f8590100981809080000000000000c00035a0100d41809 *080000000000000c000d5a0100d41809080000000000000c00165a010014190908000000000000 *0c00215a0100281909080000000000000c002b5a0100281909080000000000000c00365a010064 *1909080000000000000c00405a0100641909080000000000000c00495a0100a419090800000000 *00000c00545a0100b81909080000000000000c005e5a0100b81909080000000000000c00695a01 *00f41909080000000000000c00735a0100f41909080000000000000c007c5a0100401a09080000 *000000000c00865a0100401a09080000000000000c00915a0100701a09080000000000000c009c *5a0100841a09080000000000000c00a65a0100841a09080000000000000c00b15a0100c01a0908 *0000000000000c00bb5a0100c01a09080000000000000c00c45a0100001b09080000000000000c *00cf5a0100141b09080000000000000c00d95a0100141b09080000000000000c00e45a0100501b *09080000000000000c00ee5a0100501b09080000000000000c00f75a0100901b09080000000000 *000c00025b0100a41b09080000000000000c000c5b0100a41b09080000000000000c00175b0100 *e01b09080000000000000c00215b0100e01b09080000000000000c002a5b01002c1c0908000000 *0000000c00345b01002c1c09080000000000000c003f5b01005c1c09080000000000000c004a5b *0100701c09080000000000000c00545b0100701c09080000000000000c005f5b0100ac1c090800 *00000000000c00695b0100ac1c09080000000000000c00725b0100ec1c09080000000000000c00 *7d5b0100001d09080000000000000c00875b0100001d09080000000000000c00925b01003c1d09 *080000000000000c009c5b01003c1d09080000000000000c00a55b01007c1d0908000000000000 *0c00b05b0100901d09080000000000000c00ba5b0100901d09080000000000000c00c55b0100cc *1d09080000000000000c00cf5b0100cc1d09080000000000000c00d85b0100181e090800000000 *00000c00e25b0100181e09080000000000000c00ed5b0100481e09080000000000000c00f85b01 *005c1e09080000000000000c00025c01005c1e09080000000000000c000d5c0100981e09080000 *000000000c00175c0100981e09080000000000000c00205c0100d81e09080000000000000c002b *5c0100ec1e09080000000000000c00355c0100ec1e09080000000000000c00405c0100281f0908 *0000000000000c004a5c0100281f09080000000000000c00535c0100681f09080000000000000c *005e5c01007c1f09080000000000000c00685c01007c1f09080000000000000c00735c0100b81f *09080000000000000c007d5c0100b81f09080000000000000c00865c0100042009080000000000 *000c00905c0100042009080000000000000c009b5c0100342009080000000000000c00a65c0100 *482009080000000000000c00b05c0100482009080000000000000c00bb5c010084200908000000 *0000000c00c55c0100842009080000000000000c00ce5c0100c42009080000000000000c00d95c *0100d82009080000000000000c00e35c0100d82009080000000000000c00ee5c01001421090800 *00000000000c00f85c0100142109080000000000000c00015d0100542109080000000000000c00 *0c5d0100682109080000000000000c00165d0100682109080000000000000c00215d0100a42109 *080000000000000c002b5d0100a42109080000000000000c00345d0100f0210908000000000000 *0c003e5d0100f02109080000000000000c00495d0100202209080000000000000c00545d010034 *2209080000000000000c005e5d0100342209080000000000000c00695d01007022090800000000 *00000c00735d0100702209080000000000000c007c5d0100b02209080000000000000c00875d01 *00c42209080000000000000c00915d0100c42209080000000000000c009c5d0100002309080000 *000000000c00a65d0100002309080000000000000c00af5d0100402309080000000000000c00ba *5d0100542309080000000000000c00c45d0100542309080000000000000c00cf5d010090230908 *0000000000000c00d95d0100902309080000000000000c00e25d0100dc2309080000000000000c *00ec5d0100dc2309080000000000000c00f75d01000c2409080000000000000c00025e01002024 *09080000000000000c000c5e0100202409080000000000000c00175e01005c2409080000000000 *000c00215e01005c2409080000000000000c002a5e01009c2409080000000000000c00355e0100 *b02409080000000000000c003f5e0100b02409080000000000000c004a5e0100ec240908000000 *0000000c00545e0100ec2409080000000000000c005d5e01002c2509080000000000000c00685e *0100342509080000000000000c00735e0100c02509080000000000000c007e5e0100dc25090800 *00000000000c00885e0100e82509080000000000000c00925e0100e82509080000000000000c00 *9b5e0100082609080000000000000c00a65e0100342609080000000000000c00b05e0100342609 *080000000000000c00bb5e0100402609080000000000000c00c55e010074260908000000000000 *0c00cf5e0100842609080000000000000c00d95e0100842609080000000000000c00e45e01001c *2709080000000000000c00ee5e01001c2709080000000000000c00f95e0100cc27090800000000 *00000c00035f0100cc2709080000000000000c000e5f0100f82709080000000000000c00195f01 *009c2809080000000000000c00245f0100b82809080000000000000c002e5f0100c42809080000 *000000000c00385f0100c42809080000000000000c00415f0100e42809080000000000000c004c *5f0100102909080000000000000c00565f0100102909080000000000000c00615f01001c290908 *0000000000000c006b5f0100502909080000000000000c00755f0100602909080000000000000c *007f5f0100602909080000000000000c008a5f0100e82909080000000000000c00955f0100982a *09080000000000000c009f5f0100982a09080000000000000c00aa5f0100d42a09080000000000 *000c00b45f0100082b09080000000000000c00be5f0100182b09080000000000000c00c85f0100 *182b09080000000000000c00d35f0100a02b09080000000000000c00de5f01003c2c0908000000 *0000000c00e95f0100582c09080000000000000c00f35f0100642c09080000000000000c00fd5f *0100642c09080000000000000c0006600100842c09080000000000000c0011600100b02c090800 *00000000000c001b600100b02c09080000000000000c0026600100bc2c09080000000000000c00 *30600100f02c09080000000000000c003a600100002d09080000000000000c0044600100002d09 *080000000000000c004f600100982d09080000000000000c0059600100982d0908000000000000 *0c0064600100482e09080000000000000c006e600100482e09080000000000000c007960010074 *2e09080000000000000c0084600100142f09080000000000000c008f600100302f090800000000 *00000c00996001003c2f09080000000000000c00a36001003c2f09080000000000000c00ac6001 *005c2f09080000000000000c00b7600100882f09080000000000000c00c1600100882f09080000 *000000000c00cc600100942f09080000000000000c00d6600100c82f09080000000000000c00e0 *600100d82f09080000000000000c00ea600100d82f09080000000000000c00f56001005c300908 *0000000000000c0000610100083109080000000000000c000a610100083109080000000000000c *0015610100443109080000000000000c001f610100783109080000000000000c00296101008831 *09080000000000000c0033610100883109080000000000000c003e6101000c3209080000000000 *000c0049610100a43209080000000000000c0054610100c03209080000000000000c005e610100 *cc3209080000000000000c0068610100cc3209080000000000000c0071610100ec320908000000 *0000000c007c610100183309080000000000000c0086610100183309080000000000000c009161 *0100243309080000000000000c009b610100583309080000000000000c00a56101006833090800 *00000000000c00af610100683309080000000000000c00ba610100fc3309080000000000000c00 *c4610100fc3309080000000000000c00cf610100a83409080000000000000c00d9610100a83409 *080000000000000c00e4610100d43409080000000000000c00ef6101006c350908000000000000 *0c00fa610100883509080000000000000c0004620100943509080000000000000c000e62010094 *3509080000000000000c0017620100b43509080000000000000c0022620100e035090800000000 *00000c002c620100e03509080000000000000c0037620100ec3509080000000000000c00416201 *00203609080000000000000c004b620100303609080000000000000c0055620100303609080000 *000000000c0060620100ac3609080000000000000c006b620100503709080000000000000c0075 *620100503709080000000000000c00806201008c3709080000000000000c008a620100c0370908 *0000000000000c0094620100d03709080000000000000c009e620100d03709080000000000000c *00a96201004c3809080000000000000c00b4620100dc3809080000000000000c00bf620100f838 *09080000000000000c00c9620100043909080000000000000c00d3620100043909080000000000 *000c00dc620100243909080000000000000c00e7620100503909080000000000000c00f1620100 *503909080000000000000c00fc6201005c3909080000000000000c000663010090390908000000 *0000000c0010630100a03909080000000000000c001a630100a03909080000000000000c002563 *01002c3a09080000000000000c002f6301002c3a09080000000000000c003a630100d03a090800 *00000000000c0044630100d03a09080000000000000c004f630100fc3a09080000000000000c00 *5a630100903b09080000000000000c0065630100ac3b09080000000000000c006f630100b83b09 *080000000000000c0079630100b83b09080000000000000c0082630100d83b0908000000000000 *0c008d630100043c09080000000000000c0097630100043c09080000000000000c00a263010010 *3c09080000000000000c00ac630100443c09080000000000000c00b6630100543c090800000000 *00000c00c0630100543c09080000000000000c00cb630100cc3c09080000000000000c00d66301 *006c3d09080000000000000c00e06301006c3d09080000000000000c00eb630100a83d09080000 *000000000c00f5630100dc3d09080000000000000c00ff630100ec3d09080000000000000c0009 *640100ec3d09080000000000000c0014640100643e09080000000000000c001f640100f03e0908 *0000000000000c002a6401000c3f09080000000000000c0034640100183f09080000000000000c *003e640100183f09080000000000000c0047640100383f09080000000000000c0052640100643f *09080000000000000c005c640100643f09080000000000000c0067640100703f09080000000000 *000c0071640100a43f09080000000000000c007b640100b43f09080000000000000c0085640100 *b43f09080000000000000c00906401003c4009080000000000000c009a6401003c400908000000 *0000000c00a5640100dc4009080000000000000c00af640100dc4009080000000000000c00ba64 *0100084109080000000000000c00c5640100944109080000000000000c00d0640100b041090800 *00000000000c00da640100bc4109080000000000000c00e4640100bc4109080000000000000c00 *ed640100dc4109080000000000000c00f8640100084209080000000000000c0002650100084209 *080000000000000c000d650100144209080000000000000c001765010048420908000000000000 *0c0021650100584209080000000000000c002b650100584209080000000000000c0036650100c8 *4209080000000000000c0041650100604309080000000000000c004b6501006043090800000000 *00000c00566501009c4309080000000000000c0060650100d04309080000000000000c006a6501 *00e04309080000000000000c0074650100e04309080000000000000c007f650100504409080000 *000000000c008a650100d44409080000000000000c0095650100f04409080000000000000c009f *650100fc4409080000000000000c00a9650100fc4409080000000000000c00b26501001c450908 *0000000000000c00bd650100484509080000000000000c00c7650100484509080000000000000c *00d2650100544509080000000000000c00dc650100884509080000000000000c00e66501009845 *09080000000000000c00f0650100984509080000000000000c00fb650100184609080000000000 *000c0005660100184609080000000000000c0010660100b04609080000000000000c001a660100 *b04609080000000000000c0025660100dc4609080000000000000c003066010064470908000000 *0000000c003b660100804709080000000000000c00456601008c4709080000000000000c004f66 *01008c4709080000000000000c0058660100ac4709080000000000000c0063660100d847090800 *00000000000c006d660100d84709080000000000000c0078660100e44709080000000000000c00 *82660100184809080000000000000c008c660100284809080000000000000c0096660100284809 *080000000000000c00a1660100944809080000000000000c00ac66010028490908000000000000 *0c00b6660100284909080000000000000c00c1660100644909080000000000000c00cb66010098 *4909080000000000000c00d5660100a84909080000000000000c00df660100a849090800000000 *00000c00ea660100144a09080000000000000c00f5660100944a09080000000000000c00006701 *00b04a09080000000000000c000a670100bc4a09080000000000000c0014670100bc4a09080000 *000000000c001d670100dc4a09080000000000000c0028670100084b09080000000000000c0032 *670100084b09080000000000000c003d670100144b09080000000000000c0047670100484b0908 *0000000000000c0051670100584b09080000000000000c005b670100584b09080000000000000c *0066670100d44b09080000000000000c0070670100d44b09080000000000000c007b670100684c *09080000000000000c0085670100684c09080000000000000c0090670100944c09080000000000 *000c009b670100144d09080000000000000c00a6670100304d09080000000000000c00b0670100 *3c4d09080000000000000c00ba6701003c4d09080000000000000c00c36701005c4d0908000000 *0000000c00ce670100884d09080000000000000c00d8670100884d09080000000000000c00e367 *0100944d09080000000000000c00ed670100c84d09080000000000000c00f7670100d84d090800 *00000000000c0001680100d84d09080000000000000c000c6801003c4e09080000000000000c00 *17680100c84e09080000000000000c0021680100c84e09080000000000000c002c680100044f09 *080000000000000c0036680100384f09080000000000000c0040680100484f0908000000000000 *0c004a680100484f09080000000000000c0055680100ac4f09080000000000000c006068010024 *5009080000000000000c006b680100405009080000000000000c00756801004c50090800000000 *00000c007f6801004c5009080000000000000c00886801006c5009080000000000000c00936801 *00985009080000000000000c009d680100985009080000000000000c00a8680100a45009080000 *000000000c00b2680100d85009080000000000000c00bc680100e85009080000000000000c00c6 *680100e85009080000000000000c00d16801005c5109080000000000000c00db6801005c510908 *0000000000000c00e6680100e85109080000000000000c00f0680100e85109080000000000000c *00fb680100145209080000000000000c0006690100905209080000000000000c0011690100ac52 *09080000000000000c001b690100b85209080000000000000c0025690100b85209080000000000 *000c002e690100d85209080000000000000c0039690100045309080000000000000c0043690100 *045309080000000000000c004e690100105309080000000000000c005869010044530908000000 *0000000c0062690100545309080000000000000c006c690100545309080000000000000c007769 *0100b45309080000000000000c00826901003c5409080000000000000c008c6901003c54090800 *00000000000c0097690100785409080000000000000c00a1690100ac5409080000000000000c00 *ab690100bc5409080000000000000c00b5690100bc5409080000000000000c00c06901001c5509 *080000000000000c00cb690100905509080000000000000c00d6690100ac550908000000000000 *0c00e0690100b85509080000000000000c00ea690100b85509080000000000000c00f3690100d8 *5509080000000000000c00fe690100045609080000000000000c00086a01000456090800000000 *00000c00136a0100105609080000000000000c001d6a0100445609080000000000000c00276a01 *00545609080000000000000c00316a0100545609080000000000000c003c6a0100c45609080000 *000000000c00466a0100c45609080000000000000c00516a01004c5709080000000000000c005b *6a01004c5709080000000000000c00666a0100785709080000000000000c00716a0100ec570908 *0000000000000c007c6a0100085809080000000000000c00866a0100145809080000000000000c *00906a0100145809080000000000000c00996a0100345809080000000000000c00a46a01006058 *09080000000000000c00ae6a0100605809080000000000000c00b96a01006c5809080000000000 *000c00c36a0100a05809080000000000000c00cd6a0100b05809080000000000000c00d76a0100 *b05809080000000000000c00e26a0100085909080000000000000c00ed6a010088590908000000 *0000000c00f76a0100885909080000000000000c00026b0100c45909080000000000000c000c6b *0100f85909080000000000000c00166b0100085a09080000000000000c00206b0100085a090800 *00000000000c002b6b0100605a09080000000000000c00366b0100cc5a09080000000000000c00 *416b0100e85a09080000000000000c004b6b0100f45a09080000000000000c00556b0100f45a09 *080000000000000c005e6b0100145b09080000000000000c00696b0100405b0908000000000000 *0c00736b0100405b09080000000000000c007e6b01004c5b09080000000000000c00886b010080 *5b09080000000000000c00926b0100905b09080000000000000c009c6b0100905b090800000000 *00000c00a76b0100f85b09080000000000000c00b16b0100f85b09080000000000000c00bc6b01 *00785c09080000000000000c00c66b0100785c09080000000000000c00d16b0100a45c09080000 *000000000c00dc6b0100145d09080000000000000c00e76b0100305d09080000000000000c00f1 *6b01003c5d09080000000000000c00fb6b01003c5d09080000000000000c00046c01005c5d0908 *0000000000000c000f6c0100885d09080000000000000c00196c0100885d09080000000000000c *00246c0100945d09080000000000000c002e6c0100c85d09080000000000000c00386c0100d85d *09080000000000000c00426c0100d85d09080000000000000c004d6c01002c5e09080000000000 *000c00586c0100a85e09080000000000000c00626c0100a85e09080000000000000c006d6c0100 *e45e09080000000000000c00776c0100185f09080000000000000c00816c0100285f0908000000 *0000000c008b6c0100285f09080000000000000c00966c01007c5f09080000000000000c00a16c *0100e45f09080000000000000c00ac6c0100006009080000000000000c00b66c01000c60090800 *00000000000c00c06c01000c6009080000000000000c00c96c01002c6009080000000000000c00 *d46c0100586009080000000000000c00de6c0100586009080000000000000c00e96c0100646009 *080000000000000c00f36c0100986009080000000000000c00fd6c0100a8600908000000000000 *0c00076d0100a86009080000000000000c00126d01000c6109080000000000000c001c6d01000c *6109080000000000000c00276d0100886109080000000000000c00316d01008861090800000000 *00000c003c6d0100b46109080000000000000c00476d01001c6209080000000000000c00526d01 *00386209080000000000000c005c6d0100446209080000000000000c00666d0100446209080000 *000000000c006f6d0100646209080000000000000c007a6d0100906209080000000000000c0084 *6d0100906209080000000000000c008f6d01009c6209080000000000000c00996d0100d0620908 *0000000000000c00a36d0100e06209080000000000000c00ad6d0100e06209080000000000000c *00b86d01002c6309080000000000000c00c36d0100a06309080000000000000c00cd6d0100a063 *09080000000000000c00d86d0100dc6309080000000000000c00e26d0100106409080000000000 *000c00ec6d0100206409080000000000000c00f66d0100206409080000000000000c00016e0100 *6c6409080000000000000c000c6e0100cc6409080000000000000c00176e0100e8640908000000 *0000000c00216e0100f46409080000000000000c002b6e0100f46409080000000000000c00346e *0100146509080000000000000c003f6e0100406509080000000000000c00496e01004065090800 *00000000000c00546e01004c6509080000000000000c005e6e0100806509080000000000000c00 *686e0100906509080000000000000c00726e0100906509080000000000000c007d6e0100ec6509 *080000000000000c00876e0100ec6509080000000000000c00926e010060660908000000000000 *0c009c6e0100606609080000000000000c00a76e01008c6609080000000000000c00b26e0100f0 *6609080000000000000c00bd6e01000c6709080000000000000c00c76e01001867090800000000 *00000c00d16e0100186709080000000000000c00da6e0100386709080000000000000c00e56e01 *00646709080000000000000c00ef6e0100646709080000000000000c00fa6e0100706709080000 *000000000c00046f0100a46709080000000000000c000e6f0100b46709080000000000000c0018 *6f0100b46709080000000000000c00236f0100fc6709080000000000000c002e6f01006c680908 *0000000000000c00386f01006c6809080000000000000c00436f0100a86809080000000000000c *004d6f0100dc6809080000000000000c00576f0100ec6809080000000000000c00616f0100ec68 *09080000000000000c006c6f0100346909080000000000000c00776f0100906909080000000000 *000c00826f0100ac6909080000000000000c008c6f0100b86909080000000000000c00966f0100 *b86909080000000000000c009f6f0100d86909080000000000000c00aa6f0100046a0908000000 *0000000c00b46f0100046a09080000000000000c00bf6f0100106a09080000000000000c00c96f *0100446a09080000000000000c00d36f0100546a09080000000000000c00dd6f0100546a090800 *00000000000c00e86f0100ac6a09080000000000000c00f26f0100ac6a09080000000000000c00 *fd6f01001c6b09080000000000000c00077001001c6b09080000000000000c0012700100486b09 *080000000000000c001d700100a46b09080000000000000c0028700100c06b0908000000000000 *0c0032700100cc6b09080000000000000c003c700100cc6b09080000000000000c0045700100ec *6b09080000000000000c0050700100186c09080000000000000c005a700100186c090800000000 *00000c0065700100246c09080000000000000c006f700100586c09080000000000000c00797001 *00686c09080000000000000c0083700100686c09080000000000000c008e700100a86c09080000 *000000000c0099700100106d09080000000000000c00a3700100106d09080000000000000c00ae *7001004c6d09080000000000000c00b8700100806d09080000000000000c00c2700100906d0908 *0000000000000c00cc700100906d09080000000000000c00d7700100d06d09080000000000000c *00e2700100246e09080000000000000c00ed700100406e09080000000000000c00f77001004c6e *09080000000000000c00017101004c6e09080000000000000c000a7101006c6e09080000000000 *000c0015710100986e09080000000000000c001f710100986e09080000000000000c002a710100 *a46e09080000000000000c0034710100d86e09080000000000000c003e710100e86e0908000000 *0000000c0048710100e86e09080000000000000c0053710100386f09080000000000000c005d71 *0100386f09080000000000000c0068710100a06f09080000000000000c0072710100a06f090800 *00000000000c007d710100cc6f09080000000000000c0088710100247009080000000000000c00 *93710100407009080000000000000c009d7101004c7009080000000000000c00a77101004c7009 *080000000000000c00b07101006c7009080000000000000c00bb71010098700908000000000000 *0c00c5710100987009080000000000000c00d0710100a47009080000000000000c00da710100d8 *7009080000000000000c00e4710100e87009080000000000000c00ee710100e870090800000000 *00000c00f9710100247109080000000000000c0004720100887109080000000000000c000e7201 *00887109080000000000000c0019720100c47109080000000000000c0023720100f87109080000 *000000000c002d720100087209080000000000000c0037720100087209080000000000000c0042 *720100447209080000000000000c004d720100947209080000000000000c0058720100b0720908 *0000000000000c0062720100bc7209080000000000000c006c720100bc7209080000000000000c *0075720100dc7209080000000000000c0080720100087309080000000000000c008a7201000873 *09080000000000000c0095720100147309080000000000000c009f720100487309080000000000 *000c00a9720100587309080000000000000c00b3720100587309080000000000000c00be720100 *a47309080000000000000c00c8720100a47309080000000000000c00d372010008740908000000 *0000000c00dd720100087409080000000000000c00e8720100347409080000000000000c00f372 *0100847409080000000000000c00fe720100a07409080000000000000c0008730100ac74090800 *00000000000c0012730100ac7409080000000000000c001b730100cc7409080000000000000c00 *26730100f87409080000000000000c0030730100f87409080000000000000c003b730100047509 *080000000000000c0045730100387509080000000000000c004f73010048750908000000000000 *0c0059730100487509080000000000000c00647301007c7509080000000000000c006f730100d8 *7509080000000000000c0079730100d87509080000000000000c00847301001476090800000000 *00000c008e730100487609080000000000000c0098730100587609080000000000000c00a27301 *00587609080000000000000c00ad7301008c7609080000000000000c00b8730100d47609080000 *000000000c00c3730100f07609080000000000000c00cd730100fc7609080000000000000c00d7 *730100fc7609080000000000000c00e07301001c7709080000000000000c00eb73010048770908 *0000000000000c00f5730100487709080000000000000c0000740100547709080000000000000c *000a740100887709080000000000000c0014740100987709080000000000000c001e7401009877 *09080000000000000c0029740100dc7709080000000000000c0033740100dc7709080000000000 *000c003e740100387809080000000000000c0048740100387809080000000000000c0053740100 *647809080000000000000c005e740100b07809080000000000000c0069740100cc780908000000 *0000000c0073740100d87809080000000000000c007d740100d87809080000000000000c008674 *0100f87809080000000000000c0091740100247909080000000000000c009b7401002479090800 *00000000000c00a6740100307909080000000000000c00b0740100647909080000000000000c00 *ba740100747909080000000000000c00c4740100747909080000000000000c00cf740100a47909 *080000000000000c00da740100fc7909080000000000000c00e4740100fc790908000000000000 *0c00ef740100387a09080000000000000c00f97401006c7a09080000000000000c00037501007c *7a09080000000000000c000d7501007c7a09080000000000000c0018750100ac7a090800000000 *00000c0023750100f07a09080000000000000c002e7501000c7b09080000000000000c00387501 *00187b09080000000000000c0042750100187b09080000000000000c004b750100387b09080000 *000000000c0056750100647b09080000000000000c0060750100647b09080000000000000c006b *750100707b09080000000000000c0075750100a47b09080000000000000c007f750100b47b0908 *0000000000000c0089750100b47b09080000000000000c0094750100e47b09080000000000000c *009f7501003c7c09080000000000000c00a97501003c7c09080000000000000c00b4750100787c *09080000000000000c00be750100ac7c09080000000000000c00c8750100bc7c09080000000000 *000c00d2750100bc7c09080000000000000c00dd750100f87c09080000000000000c00e7750100 *f87c09080000000000000c00f0750100487d09080000000000000c00fa750100487d0908000000 *0000000c00057601007c7d09080000000000000c0010760100e07d09080000000000000c001976 *01006cc21108000000000000100026760100f47d09080000000000000c0030760100f47d090800 *00000000000c003b7601004c7e09080000000000000c0044760100547e09080000000000000c00 *4d7601005c7e09080000000000000c005676010094c21108000000000000100063760100a4c211 *08000000000000100070760100b4c2110800000000000010007d760100707e0908000000000000 *0c0087760100707e09080000000000000c0092760100d47e09080000000000000c009c760100d4 *7e09080000000000000c00a7760100387f09080000000000000c00b1760100387f090800000000 *00000c00bc760100907f09080000000000000c00c5760100d8c211080000000000001000d27601 *00a47f09080000000000000c00dc760100a47f09080000000000000c00e7760100fc7f09080000 *000000000c00f0760100e8c211080000000000001000fd760100108009080000000000000c0007 *770100108009080000000000000c0012770100688009080000000000000c001b770100f8c21108 *00000000000010002877010080b209080000000000000c0032770100a48009080000000000000c *003c770100a48009080000000000000c0047770100f88009080000000000000c0051770100f880 *09080000000000000c005a770100188109080000000000000c0064770100188109080000000000 *000c006f770100508109080000000000000c0079770100508109080000000000000c0084770100 *b08109080000000000000c008e770100b08109080000000000000c0099770100ec810908000000 *0000000c00a3770100ec8109080000000000000c00ae770100388209080000000000000c00b877 *0100388209080000000000000c00c3770100988209080000000000000c00cd7701009882090800 *00000000000c00d8770100d48209080000000000000c00e2770100d48209080000000000000c00 *ed770100208309080000000000000c00f7770100208309080000000000000c00027801007c8309 *080000000000000c000c7801007c8309080000000000000c00157801009c830908000000000000 *0c001f7801009c8309080000000000000c002a780100d48309080000000000000c0034780100d4 *8309080000000000000c003f780100388409080000000000000c00497801003884090800000000 *00000c0054780100748409080000000000000c005e780100748409080000000000000c00697801 *00c08409080000000000000c0073780100c08409080000000000000c007e780100248509080000 *000000000c0088780100248509080000000000000c0093780100608509080000000000000c009d *780100608509080000000000000c00a8780100ac8509080000000000000c00b2780100ac850908 *0000000000000c00bd7801000c8609080000000000000c00c77801000c8609080000000000000c *00d07801002c8609080000000000000c00da7801002c8609080000000000000c00e57801006486 *09080000000000000c00ef780100648609080000000000000c00fa780100d08609080000000000 *000c0004790100d08609080000000000000c000f7901000c8709080000000000000c0019790100 *0c8709080000000000000c0024790100588709080000000000000c002e79010058870908000000 *0000000c0039790100c48709080000000000000c0043790100c48709080000000000000c004e79 *0100008809080000000000000c0058790100008809080000000000000c00637901004c88090800 *00000000000c006d7901004c8809080000000000000c0078790100b48809080000000000000c00 *82790100b48809080000000000000c008b790100d48809080000000000000c0095790100d48809 *080000000000000c00a07901000c8909080000000000000c00aa7901000c890908000000000000 *0c00b57901007c8909080000000000000c00bf7901007c8909080000000000000c00ca790100b8 *8909080000000000000c00d4790100b88909080000000000000c00df790100048a090800000000 *00000c00e9790100048a09080000000000000c00f4790100748a09080000000000000c00fe7901 *00748a09080000000000000c00097a0100b08a09080000000000000c00137a0100b08a09080000 *000000000c001e7a0100fc8a09080000000000000c00287a0100fc8a09080000000000000c0033 *7a0100688b09080000000000000c003d7a0100688b09080000000000000c00467a0100888b0908 *0000000000000c00507a0100888b09080000000000000c005b7a0100c08b09080000000000000c *00657a0100c08b09080000000000000c00707a0100388c09080000000000000c007a7a0100388c *09080000000000000c00857a0100748c09080000000000000c008f7a0100748c09080000000000 *000c009a7a0100c08c09080000000000000c00a47a0100c08c09080000000000000c00af7a0100 *388d09080000000000000c00b97a0100388d09080000000000000c00c47a0100748d0908000000 *0000000c00ce7a0100748d09080000000000000c00d97a0100c08d09080000000000000c00e37a *0100c08d09080000000000000c00ee7a0100348e09080000000000000c00f87a0100348e090800 *00000000000c00017b0100548e09080000000000000c000b7b0100548e09080000000000000c00 *167b01008c8e09080000000000000c00207b01008c8e09080000000000000c002b7b0100088f09 *080000000000000c00357b0100088f09080000000000000c00407b0100448f0908000000000000 *0c004a7b0100448f09080000000000000c00557b0100908f09080000000000000c005f7b010090 *8f09080000000000000c006a7b01000c9009080000000000000c00747b01000c90090800000000 *00000c007f7b0100489009080000000000000c00897b0100489009080000000000000c00947b01 *00949009080000000000000c009e7b0100949009080000000000000c00a97b01000c9109080000 *000000000c00b37b01000c9109080000000000000c00bc7b01002c9109080000000000000c00c6 *7b01002c9109080000000000000c00d17b0100649109080000000000000c00db7b010064910908 *0000000000000c00e67b0100e89109080000000000000c00f07b0100e89109080000000000000c *00fb7b0100249209080000000000000c00057c0100249209080000000000000c00107c01007092 *09080000000000000c001a7c0100709209080000000000000c00257c0100f49209080000000000 *000c002f7c0100f49209080000000000000c003a7c0100309309080000000000000c00447c0100 *309309080000000000000c004f7c01007c9309080000000000000c00597c01007c930908000000 *0000000c00647c0100fc9309080000000000000c006e7c0100fc9309080000000000000c00777c *01001c9409080000000000000c00817c01001c9409080000000000000c008c7c01005494090800 *00000000000c00967c0100549409080000000000000c00a17c0100dc9409080000000000000c00 *ab7c0100dc9409080000000000000c00b67c0100189509080000000000000c00c07c0100189509 *080000000000000c00cb7c0100649509080000000000000c00d57c010064950908000000000000 *0c00e07c0100ec9509080000000000000c00ea7c0100ec9509080000000000000c00f57c010028 *9609080000000000000c00ff7c0100289609080000000000000c000a7d01007496090800000000 *00000c00147d0100749609080000000000000c001f7d0100f89609080000000000000c00297d01 *00f89609080000000000000c00327d0100189709080000000000000c003c7d0100189709080000 *000000000c00477d0100509709080000000000000c00517d0100509709080000000000000c005c *7d0100e09709080000000000000c00667d0100e09709080000000000000c00717d01001c980908 *0000000000000c007b7d01001c9809080000000000000c00867d0100689809080000000000000c *00907d0100689809080000000000000c009b7d0100f89809080000000000000c00a57d0100f898 *09080000000000000c00b07d0100349909080000000000000c00ba7d0100349909080000000000 *000c00c57d0100809909080000000000000c00cf7d0100809909080000000000000c00da7d0100 *0c9a09080000000000000c00e47d01000c9a09080000000000000c00ed7d01002c9a0908000000 *0000000c00f77d01002c9a09080000000000000c00027e0100649a09080000000000000c000c7e *0100649a09080000000000000c00177e0100f89a09080000000000000c00217e0100f89a090800 *00000000000c002c7e0100349b09080000000000000c00367e0100349b09080000000000000c00 *417e0100809b09080000000000000c004b7e0100809b09080000000000000c00567e0100149c09 *080000000000000c00607e0100149c09080000000000000c006b7e0100509c0908000000000000 *0c00757e0100509c09080000000000000c00807e01009c9c09080000000000000c008a7e01009c *9c09080000000000000c00957e01002c9d09080000000000000c009f7e01002c9d090800000000 *00000c00a87e01004c9d09080000000000000c00b27e01004c9d09080000000000000c00bd7e01 *00849d09080000000000000c00c77e0100849d09080000000000000c00d27e0100209e09080000 *000000000c00dc7e0100209e09080000000000000c00e77e01005c9e09080000000000000c00f1 *7e01005c9e09080000000000000c00fc7e0100a89e09080000000000000c00067f0100a89e0908 *0000000000000c00117f0100449f09080000000000000c001b7f0100449f09080000000000000c *00267f0100809f09080000000000000c00307f0100809f09080000000000000c003b7f0100cc9f *09080000000000000c00457f0100cc9f09080000000000000c00507f010064a009080000000000 *000c005a7f010064a009080000000000000c00637f010084a009080000000000000c006d7f0100 *84a009080000000000000c00787f0100bca009080000000000000c00827f0100bca00908000000 *0000000c008d7f01005ca109080000000000000c00977f01005ca109080000000000000c00a27f *010098a109080000000000000c00ac7f010098a109080000000000000c00b77f0100e4a1090800 *00000000000c00c17f0100e4a109080000000000000c00cc7f010084a209080000000000000c00 *d67f010084a209080000000000000c00e17f0100c0a209080000000000000c00eb7f0100c0a209 *080000000000000c00f67f01000ca309080000000000000c00008001000ca30908000000000000 *0c000b800100a8a309080000000000000c0015800100a8a309080000000000000c001e800100c8 *a309080000000000000c0028800100c8a309080000000000000c003380010000a4090800000000 *00000c003d80010000a409080000000000000c0048800100a8a409080000000000000c00528001 *00a8a409080000000000000c005d800100e4a409080000000000000c0067800100e4a409080000 *000000000c007280010030a509080000000000000c007c80010030a509080000000000000c0087 *800100d8a509080000000000000c0091800100d8a509080000000000000c009c80010014a60908 *0000000000000c00a680010014a609080000000000000c00b180010060a609080000000000000c *00bb80010060a609080000000000000c00c680010004a709080000000000000c00d080010004a7 *09080000000000000c00d980010024a709080000000000000c00e380010024a709080000000000 *000c00ee8001005ca709080000000000000c00f88001005ca709080000000000000c0003810100 *08a809080000000000000c000d81010008a809080000000000000c001881010044a80908000000 *0000000c002281010044a809080000000000000c002d81010090a809080000000000000c003781 *010090a809080000000000000c00428101003ca909080000000000000c004c8101003ca9090800 *00000000000c005781010078a909080000000000000c006181010078a909080000000000000c00 *6c810100c4a909080000000000000c0076810100c4a909080000000000000c00818101006caa09 *080000000000000c008b8101006caa09080000000000000c00948101008caa0908000000000000 *0c009e8101008caa09080000000000000c00a9810100c4aa09080000000000000c00b3810100c4 *aa09080000000000000c00be81010078ab09080000000000000c00c881010078ab090800000000 *00000c00d3810100b4ab09080000000000000c00dd810100b4ab09080000000000000c00e88101 *0000ac09080000000000000c00f281010000ac09080000000000000c00fd810100b4ac09080000 *000000000c0007820100b4ac09080000000000000c0012820100f0ac09080000000000000c001c *820100f0ac09080000000000000c00278201003cad09080000000000000c00318201003cad0908 *0000000000000c003c820100ecad09080000000000000c0046820100ecad09080000000000000c *004f8201000cae09080000000000000c00598201000cae09080000000000000c006482010044ae *09080000000000000c006e82010044ae09080000000000000c0079820100fcae09080000000000 *000c0083820100fcae09080000000000000c008e82010038af09080000000000000c0098820100 *38af09080000000000000c00a382010084af09080000000000000c00ad82010084af0908000000 *0000000c00b88201003cb009080000000000000c00c28201003cb009080000000000000c00cd82 *010078b009080000000000000c00d782010078b009080000000000000c00e2820100c4b0090800 *00000000000c00ec820100c4b009080000000000000c00f782010078b109080000000000000c00 *0183010078b109080000000000000c000a8301009cb109080000000000000c00148301009cb109 *080000000000000c001f830100d4b109080000000000000c0029830100d4b10908000000000000 *0c003283010080b209080000000000000c003d83010000c3110800000000000010004a830100a0 *b209080000000000000c005383010008c31108000000000000100060830100b4b2090800000000 *00000c006a830100b4b209080000000000000c00758301000cb309080000000000000c007e8301 *0018c3110800000000000010008b83010020b309080000000000000c009583010020b309080000 *000000000c00a083010078b309080000000000000c00a98301003cc311080000000000001000b6 *8301008cb309080000000000000c00c08301008cb309080000000000000c00cb830100ecb30908 *0000000000000c00d5830100ecb309080000000000000c00de83010014b409080000000000000c *00e883010014b409080000000000000c00f18301003cb409080000000000000c00fb8301003cb4 *09080000000000000c000484010064b409080000000000000c000e84010064b409080000000000 *000c00178401008cb409080000000000000c00218401008cb409080000000000000c002a840100 *b4b409080000000000000c0034840100b4b409080000000000000c003d840100dcb40908000000 *0000000c0047840100dcb409080000000000000c005084010004b509080000000000000c005a84 *010004b509080000000000000c00638401002cb509080000000000000c006d8401002cb5090800 *00000000000c007684010054b509080000000000000c008084010054b509080000000000000c00 *898401007cb509080000000000000c00938401007cb509080000000000000c009c840100a4b509 *080000000000000c00a6840100a4b509080000000000000c00af840100ccb50908000000000000 *0c00b9840100ccb509080000000000000c00c2840100f4b509080000000000000c00cc840100f4 *b509080000000000000c00d58401001cb609080000000000000c00df8401001cb6090800000000 *00000c00e884010044b609080000000000000c00f284010044b609080000000000000c00fb8401 *006cb609080000000000000c00058501006cb609080000000000000c000e85010094b609080000 *000000000c001885010094b609080000000000000c0021850100bcb609080000000000000c002b *850100bcb609080000000000000c0034850100e4b609080000000000000c003e850100e4b60908 *0000000000000c00478501000cb709080000000000000c00518501000cb709080000000000000c *005a85010034b709080000000000000c006485010034b709080000000000000c006d8501005cb7 *09080000000000000c00778501005cb709080000000000000c008085010084b709080000000000 *000c008a85010084b709080000000000000c0093850100acb709080000000000000c009d850100 *acb709080000000000000c00a6850100d4b709080000000000000c00b0850100d4b70908000000 *0000000c00b9850100fcb709080000000000000c00c3850100fcb709080000000000000c00cc85 *010024b809080000000000000c00d685010024b809080000000000000c00df8501004cb8090800 *00000000000c00e98501004cb809080000000000000c00f285010074b809080000000000000c00 *fc85010074b809080000000000000c00058601009cb809080000000000000c000f8601009cb809 *080000000000000c0018860100c4b809080000000000000c0022860100c4b80908000000000000 *0c002b860100ecb809080000000000000c0035860100ecb809080000000000000c003e86010014 *b909080000000000000c004886010014b909080000000000000c0051860100d4b9090800000000 *00000c005b860100d4b909080000000000000c00648601004cba09080000000000000c006e8601 *004cba09080000000000000c007786010074ba09080000000000000c008186010074ba09080000 *000000000c008a86010094ba09080000000000000c009486010094ba09080000000000000c009d *860100bcba09080000000000000c00a7860100bcba09080000000000000c00b0860100dcba0908 *0000000000000c00ba860100dcba09080000000000000c00c3860100fcba09080000000000000c *00cd860100fcba09080000000000000c00d686010024bb09080000000000000c00e086010024bb *09080000000000000c00e986010044bb09080000000000000c00f386010044bb09080000000000 *000c00fc8601006cbb09080000000000000c00068701006cbb09080000000000000c000f870100 *8cbb09080000000000000c00198701008cbb09080000000000000c0022870100acbb0908000000 *0000000c002c870100acbb09080000000000000c0035870100f4bb09080000000000000c003f87 *0100f4bb09080000000000000c004887010064bd09080000000000000c005287010064bd090800 *00000000000c005b870100b4bd09080000000000000c0065870100b4bd09080000000000000c00 *6e87010048be09080000000000000c007887010048be09080000000000000c008187010084be09 *080000000000000c008b87010084be09080000000000000c0094870100ccbe0908000000000000 *0c009e870100ccbe09080000000000000c00a7870100d8bf09080000000000000c00b1870100d8 *bf09080000000000000c00ba87010064c009080000000000000c00c487010064c0090800000000 *00000c00cd8701008cc009080000000000000c00d78701008cc009080000000000000c00e08701 *00acc009080000000000000c00ea870100acc009080000000000000c00f3870100d4c009080000 *000000000c00fd870100d4c009080000000000000c0006880100fcc009080000000000000c0010 *880100fcc009080000000000000c00198801001cc109080000000000000c00238801001cc10908 *0000000000000c002c8801003cc109080000000000000c00368801003cc109080000000000000c *003f88010064c109080000000000000c004988010064c109080000000000000c00528801008cc1 *09080000000000000c005c8801008cc109080000000000000c0065880100acc109080000000000 *000c006f880100acc109080000000000000c0078880100d4c109080000000000000c0082880100 *d4c109080000000000000c008b880100fcc109080000000000000c0095880100fcc10908000000 *0000000c009e8801001cc209080000000000000c00a88801001cc209080000000000000c00b188 *01003cc209080000000000000c00bb8801003cc209080000000000000c00c488010084c2090800 *00000000000c00ce88010084c209080000000000000c00d7880100e4c409080000000000000c00 *e1880100e4c409080000000000000c00ec88010044c509080000000000000c00f688010044c509 *080000000000000c000189010094c509080000000000000c000b89010094c50908000000000000 *0c0014890100d4c509080000000000000c001e890100d4c509080000000000000c0029890100fc *c509080000000000000c0033890100fcc509080000000000000c003e89010038c6090800000000 *00000c004889010038c609080000000000000c005389010070c609080000000000000c005d8901 *0070c609080000000000000c0068890100c8c609080000000000000c0072890100c8c609080000 *000000000c007b89010060c709080000000000000c008489010018c41108000000000000100091 *89010080c709080000000000000c009b8901006cc709080000000000000c00a58901006cc70908 *0000000000000c00ae89010080c709080000000000000c00b9890100d4c709080000000000000c *00c289010028c411080000000000001000cf890100e8c709080000000000000c00d9890100e8c7 *09080000000000000c00e489010040c809080000000000000c00ed89010038c411080000000000 *001000fa89010060c809080000000000000c00048a01004cc809080000000000000c000e8a0100 *4cc809080000000000000c00178a010060c809080000000000000c00228a0100b4c80908000000 *0000000c002b8a010048c411080000000000001000388a0100c8c809080000000000000c00428a *0100c8c809080000000000000c004d8a010020c909080000000000000c00568a010058c4110800 *00000000001000638a010034c909080000000000000c006d8a010034c909080000000000000c00 *788a0100a8c909080000000000000c00828a0100a8c909080000000000000c008b8a0100f0c909 *080000000000000c00958a0100f0c909080000000000000c00a08a01001cca0908000000000000 *0c00aa8a01001cca09080000000000000c00b38a010060ca09080000000000000c00bd8a010060 *ca09080000000000000c00c88a010094ca09080000000000000c00d28a010094ca090800000000 *00000c00dd8a0100ccca09080000000000000c00e78a0100ccca09080000000000000c00f08a01 *000ccb09080000000000000c00fa8a01000ccb09080000000000000c00058b010040cb09080000 *000000000c000f8b010040cb09080000000000000c001a8b010098cb09080000000000000c0024 *8b010098cb09080000000000000c002d8b0100e8cb09080000000000000c00378b0100e8cb0908 *0000000000000c00428b010010cc09080000000000000c004c8b010010cc09080000000000000c *00558b0100a4cc09080000000000000c005e8b010078c4110800000000000010006b8b0100b8cc *09080000000000000c00758b0100b8cc09080000000000000c00808b010010cd09080000000000 *000c00898b010088c411080000000000001000968b01006cce09080000000000000c00a08b0100 *24cd09080000000000000c00aa8b010024cd09080000000000000c00b38b010044cd0908000000 *0000000c00bd8b010044cd09080000000000000c00c88b010080cd09080000000000000c00d28b *010080cd09080000000000000c00db8b0100a0cd09080000000000000c00e58b0100a0cd090800 *00000000000c00f08b0100e0cd09080000000000000c00fa8b0100e0cd09080000000000000c00 *038c01003cce09080000000000000c000d8c01003cce09080000000000000c00168c01006cce09 *080000000000000c00218c010088ce09080000000000000c002a8c010090c41108000000000000 *1000378c0100d4ce09080000000000000c00418c01009cce09080000000000000c004b8c01009c *ce09080000000000000c00568c0100d4ce09080000000000000c00618c010010cf090800000000 *00000c006a8c0100a8c411080000000000001000778c010054d509080000000000000c00818c01 *0038cf09080000000000000c008b8c010038cf09080000000000000c00968c01008ccf09080000 *000000000c00a08c01008ccf09080000000000000c00a98c0100accf09080000000000000c00b3 *8c0100accf09080000000000000c00be8c0100e4cf09080000000000000c00c88c0100e4cf0908 *0000000000000c00d38c010044d009080000000000000c00dd8c010044d009080000000000000c *00e88c010080d009080000000000000c00f28c010080d009080000000000000c00fd8c0100ccd0 *09080000000000000c00078d0100ccd009080000000000000c00128d01002cd109080000000000 *000c001c8d01002cd109080000000000000c00278d010068d109080000000000000c00318d0100 *68d109080000000000000c003c8d0100b4d109080000000000000c00468d0100b4d10908000000 *0000000c00518d010010d209080000000000000c005b8d010010d209080000000000000c00648d *010030d209080000000000000c006e8d010030d209080000000000000c00798d010068d2090800 *00000000000c00838d010068d209080000000000000c008e8d0100ccd209080000000000000c00 *988d0100ccd209080000000000000c00a38d010008d309080000000000000c00ad8d010008d309 *080000000000000c00b88d010054d309080000000000000c00c28d010054d30908000000000000 *0c00cd8d0100b8d309080000000000000c00d78d0100b8d309080000000000000c00e28d0100f4 *d309080000000000000c00ec8d0100f4d309080000000000000c00f78d010040d4090800000000 *00000c00018e010040d409080000000000000c000c8e0100a0d409080000000000000c00168e01 *00a0d409080000000000000c001f8e0100c4d409080000000000000c00298e0100c4d409080000 *000000000c00348e0100fcd409080000000000000c003e8e0100fcd409080000000000000c0047 *8e010054d509080000000000000c00528e0100b0c4110800000000000010005f8e010074d50908 *0000000000000c00688e0100b8c411080000000000001000758e010088d509080000000000000c *007f8e010088d509080000000000000c008a8e0100e0d509080000000000000c00938e0100c8c4 *11080000000000001000a08e0100f4d509080000000000000c00aa8e0100f4d509080000000000 *000c00b58e01004cd609080000000000000c00be8e0100d8c411080000000000001000cb8e0100 *b0e609080000000000000c00d58e010078d609080000000000000c00df8e010078d60908000000 *0000000c00ea8e0100b4d609080000000000000c00f48e0100b4d609080000000000000c00fd8e *010000d709080000000000000c00078f010000d709080000000000000c00128f010030d7090800 *00000000000c001d8f010044d709080000000000000c00278f010044d709080000000000000c00 *328f010080d709080000000000000c003c8f010080d709080000000000000c00458f0100c0d709 *080000000000000c00508f0100d4d709080000000000000c005a8f0100d4d70908000000000000 *0c00658f010010d809080000000000000c006f8f010010d809080000000000000c00788f01005c *d809080000000000000c00828f01005cd809080000000000000c008d8f01008cd8090800000000 *00000c00988f0100a0d809080000000000000c00a28f0100a0d809080000000000000c00ad8f01 *00dcd809080000000000000c00b78f0100dcd809080000000000000c00c08f01001cd909080000 *000000000c00cb8f010030d909080000000000000c00d58f010030d909080000000000000c00e0 *8f01006cd909080000000000000c00ea8f01006cd909080000000000000c00f38f0100acd90908 *0000000000000c00fe8f0100c0d909080000000000000c0008900100c0d909080000000000000c *0013900100fcd909080000000000000c001d900100fcd909080000000000000c002690010048da *09080000000000000c003090010048da09080000000000000c003b90010078da09080000000000 *000c00469001008cda09080000000000000c00509001008cda09080000000000000c005b900100 *c8da09080000000000000c0065900100c8da09080000000000000c006e90010008db0908000000 *0000000c00799001001cdb09080000000000000c00839001001cdb09080000000000000c008e90 *010058db09080000000000000c009890010058db09080000000000000c00a190010098db090800 *00000000000c00ac900100a0db09080000000000000c00b7900100d8db09080000000000000c00 *c2900100f4db09080000000000000c00cc90010000dc09080000000000000c00d690010000dc09 *080000000000000c00df90010020dc09080000000000000c00ea9001004cdc0908000000000000 *0c00f49001004cdc09080000000000000c00ff90010058dc09080000000000000c00099101008c *dc09080000000000000c00139101009cdc09080000000000000c001d9101009cdc090800000000 *00000c0028910100e0dc09080000000000000c0032910100e0dc09080000000000000c003d9101 *003cdd09080000000000000c00479101003cdd09080000000000000c005291010068dd09080000 *000000000c005d910100b8dd09080000000000000c0068910100d4dd09080000000000000c0072 *910100e0dd09080000000000000c007c910100e0dd09080000000000000c008591010000de0908 *0000000000000c00909101002cde09080000000000000c009a9101002cde09080000000000000c *00a591010038de09080000000000000c00af9101006cde09080000000000000c00b99101007cde *09080000000000000c00c39101007cde09080000000000000c00ce910100b0de09080000000000 *000c00d99101000cdf09080000000000000c00e39101000cdf09080000000000000c00ee910100 *48df09080000000000000c00f89101007cdf09080000000000000c00029201008cdf0908000000 *0000000c000c9201008cdf09080000000000000c0017920100c0df09080000000000000c002292 *010008e009080000000000000c002d92010024e009080000000000000c003792010030e0090800 *00000000000c004192010030e009080000000000000c004a92010050e009080000000000000c00 *559201007ce009080000000000000c005f9201007ce009080000000000000c006a92010088e009 *080000000000000c0074920100bce009080000000000000c007e920100cce00908000000000000 *0c0088920100cce009080000000000000c009392010010e109080000000000000c009d92010010 *e109080000000000000c00a89201006ce109080000000000000c00b29201006ce1090800000000 *00000c00bd92010098e109080000000000000c00c8920100e4e109080000000000000c00d39201 *0000e209080000000000000c00dd9201000ce209080000000000000c00e79201000ce209080000 *000000000c00f09201002ce209080000000000000c00fb92010058e209080000000000000c0005 *93010058e209080000000000000c001093010064e209080000000000000c001a93010098e20908 *0000000000000c0024930100a8e209080000000000000c002e930100a8e209080000000000000c *0039930100d8e209080000000000000c004493010030e309080000000000000c004e93010030e3 *09080000000000000c00599301006ce309080000000000000c0063930100a0e309080000000000 *000c006d930100b0e309080000000000000c0077930100b0e309080000000000000c0082930100 *e0e309080000000000000c008d93010024e409080000000000000c009893010040e40908000000 *0000000c00a29301004ce409080000000000000c00ac9301004ce409080000000000000c00b593 *01006ce409080000000000000c00c093010098e409080000000000000c00ca93010098e4090800 *00000000000c00d5930100a4e409080000000000000c00df930100d8e409080000000000000c00 *e9930100e8e409080000000000000c00f3930100e8e409080000000000000c00fe93010018e509 *080000000000000c000994010070e509080000000000000c001394010070e50908000000000000 *0c001e940100ace509080000000000000c0028940100e0e509080000000000000c0032940100f0 *e509080000000000000c003c940100f0e509080000000000000c00479401002ce6090800000000 *00000c00519401002ce609080000000000000c005a9401007ce609080000000000000c00649401 *007ce609080000000000000c006f940100b0e609080000000000000c007a94010014e709080000 *000000000c0083940100e8c4110800000000000010009094010028e709080000000000000c009a *94010028e709080000000000000c00a594010088e709080000000000000c00b09401009ce70908 *0000000000000c00ba9401009ce709080000000000000c00c5940100c4e709080000000000000c *00d094010020e809080000000000000c00da9401002ce809080000000000000c00e49401002ce8 *09080000000000000c00ed9401004ce809080000000000000c00f79401004ce809080000000000 *000c000095010090e809080000000000000c000995010000c51108000000000000100016950100 *14c51108000000000000100023950100a4e809080000000000000c002d950100a4e80908000000 *0000000c00389501005ce909080000000000000c004195010034c5110800000000000010004e95 *010064e909080000000000000c00579501006ce909080000000000000c00609501004cc5110800 *000000000010006d9501005cc5110800000000000010007a9501006cc511080000000000001000 *8795010080e909080000000000000c009195010080e909080000000000000c009c950100e4e909 *080000000000000c00a6950100e4e909080000000000000c00b195010048ea0908000000000000 *0c00bb95010048ea09080000000000000c00c695010008eb09080000000000000c00d095010008 *eb09080000000000000c00d995010030eb09080000000000000c00e395010030eb090800000000 *00000c00ec95010098eb09080000000000000c00f695010098eb09080000000000000c00ff9501 *00e8eb09080000000000000c0009960100e8eb09080000000000000c00cd89000090ec09080000 *000000000c00d789000090ec09080000000000000c0012960100dcec09080000000000000c001c *960100dcec09080000000000000c002796010038ed09080000000000000c003196010038ed0908 *0000000000000c003a960100b4ed09080000000000000c0044960100b4ed09080000000000000c *004f960100e8ed09080000000000000c0059960100e8ed09080000000000000c0017bb000028ee *09080000000000000c0021bb000028ee09080000000000000c0064960100bcc511080000000000 *00100071960100b0f009080000000000000c007b9601003cef09080000000000000c0086960100 *4cef09080000000000000c009196010088f009080000000000000c009c9601009cef0908000000 *0000000c00a69601009cef09080000000000000c00b1960100b0ef09080000000000000c00bc96 *0100e8ef09080000000000000c00c7960100f8ef09080000000000000c00d296010054f0090800 *00000000000c00dd9601007cf009080000000000000c00e796010088f009080000000000000c00 *f1960100b0f009080000000000000c00fc9601000cf109080000000000000c00079701001cf109 *080000000000000c0012970100acf209080000000000000c001d97010028f10908000000000000 *0c002897010080f109080000000000000c00329701008cf109080000000000000c003c9701008c *f109080000000000000c0047970100c4f109080000000000000c0051970100c4f1090800000000 *00000c0041bb000020f209080000000000000c005c97010020f209080000000000000c00659701 *0070f209080000000000000c00709701009cf209080000000000000c007a970100acf209080000 *000000000c0084970100d4f209080000000000000c008f970100e4f209080000000000000c009a *97010020f309080000000000000c00a497010030f309080000000000000c00ae97010030f30908 *0000000000000c00b9970100d8f309080000000000000c00c2970100d4c5110800000000000010 *00cf97010020f409080000000000000c00d9970100e4f309080000000000000c00e3970100e4f3 *09080000000000000c00ec97010020f409080000000000000c00f79701009cf409080000000000 *000c00019801009cf409080000000000000c000c980100b8f409080000000000000c0016980100 *b8f409080000000000000c0021980100f8f409080000000000000c002b980100f8f40908000000 *0000000c00369801001cf909080000000000000c00419801003cf509080000000000000c004c98 *01008cf509080000000000000c00569801008cf509080000000000000c0061980100d0f5090800 *00000000000c006c98010014f609080000000000000c00779801002cf609080000000000000c00 *819801002cf609080000000000000c008a98010080f609080000000000000c0095980100a0f609 *080000000000000c00a0980100b0f609080000000000000c00ab98010040f80908000000000000 *0c00b6980100bcf609080000000000000c00c198010014f709080000000000000c00cb98010020 *f709080000000000000c00d598010020f709080000000000000c00e098010058f7090800000000 *00000c00ea98010058f709080000000000000c0086ba0000b4f709080000000000000c00f59801 *00b4f709080000000000000c00fe98010004f809080000000000000c000999010030f809080000 *000000000c001399010040f809080000000000000c001d99010068f809080000000000000c0028 *99010078f809080000000000000c0033990100b4f809080000000000000c003d990100b4f80908 *0000000000000c00489901000cf909080000000000000c00529901001cf909080000000000000c *008592000048f909080000000000000c008f92000048f909080000000000000c005c9901000cfa *09080000000000000c006799010058fa09080000000000000c007299010060fa09080000000000 *000c007d99010074fa09080000000000000c008799010074fa09080000000000000c0092990100 *b0fa09080000000000000c009c990100b0fa09080000000000000c00a799010010fb0908000000 *0000000c00b199010010fb09080000000000000c00bc99010054fb09080000000000000c00c799 *0100a0fb09080000000000000c00d1990100a0fb09080000000000000c00dc99010040050a0800 *00000000000c00e7990100e4fb09080000000000000c00f299010030fc09080000000000000c00 *fc99010030fc09080000000000000c00079a010088fc09080000000000000c00129a0100ecfc09 *080000000000000c001c9a0100ecfc09080000000000000c00279a010000fd0908000000000000 *0c00329a010024fd09080000000000000c003c9a010024fd09080000000000000c00479a010068 *fd09080000000000000c00529a0100ccfd09080000000000000c005c9a0100ccfd090800000000 *00000c00669a010000fe09080000000000000c00709a010000fe09080000000000000c007a9a01 *0034fe09080000000000000c00849a010040fe09080000000000000c008e9a010040fe09080000 *000000000c00979a010058fe09080000000000000c00a19a010058fe09080000000000000c00ac *9a0100b4fe09080000000000000c00b69a0100b4fe09080000000000000c00c19a010014ff0908 *0000000000000c00cb9a010014ff09080000000000000c00d69a010058ff09080000000000000c *00e19a010098ff09080000000000000c00eb9a0100c0ff09080000000000000c00f59a0100c0ff *09080000000000000c00009b0100e4ff09080000000000000c000a9b0100e4ff09080000000000 *000c00159b010020000a080000000000000c001f9b010020000a080000000000000c002a9b0100 *80000a080000000000000c00349b010080000a080000000000000c003f9b0100c4000a08000000 *0000000c004a9b01000c010a080000000000000c00549b01000c010a080000000000000c005f9b *010068010a080000000000000c00699b010068010a080000000000000c002c910000c8010a0800 *00000000000c0036910000c8010a080000000000000c00749b01000c020a080000000000000c00 *7f9b010058020a080000000000000c00899b010058020a080000000000000c00949b010088020a *080000000000000c009f9b0100e8020a080000000000000c00a99b0100e8020a08000000000000 *0c00b49b010000030a080000000000000c00be9b010028030a080000000000000c00c89b010028 *030a080000000000000c00d29b010058030a080000000000000c00dc9b010058030a0800000000 *00000c00e69b01008c030a080000000000000c00f09b01008c030a080000000000000c00fa9b01 *00bc030a080000000000000c00049c0100c8030a080000000000000c000e9c0100c8030a080000 *000000000c000c940000e0030a080000000000000c0016940000e0030a080000000000000c0017 *9c010038040a080000000000000c00229c01007c040a080000000000000c002c9c0100a4040a08 *0000000000000c00369c0100a4040a080000000000000c00419c0100bc040a080000000000000c *004c9c010008050a080000000000000c00569c010030050a080000000000000c00609c01004005 *0a080000000000000c006a9c0100ec050a080000000000000c00749c0100ec050a080000000000 *000c001a93000000060a080000000000000c002493000000060a080000000000000c0093bb0000 *38060a080000000000000c009dbb000038060a080000000000000c007d9c0100f4060a08000000 *0000000c00879c0100f4060a080000000000000c00909c01007c070a080000000000000c009b9c *010088070a080000000000000c00d2bb00009c070a080000000000000c00a69c01009c070a0800 *00000000000c00af9c0100fc070a080000000000000c00b99c0100fc070a080000000000000c00 *c49c010024080a080000000000000c00cf9c010078080a080000000000000c00d99c010078080a *080000000000000c00e49c0100a4080a080000000000000c00ee9c0100b4080a08000000000000 *0c00f89c0100b4080a080000000000000c00039d01005c090a080000000000000c000d9d01005c *090a080000000000000c000a96000098090a080000000000000c001496000098090a0800000000 *00000c00189d0100f4090a080000000000000c00229d0100f4090a080000000000000c007d9600 *009c0c0a080000000000000c002d9d01004c0a0a080000000000000c00389d01009c0a0a080000 *000000000c00429d01009c0a0a080000000000000c004d9d0100e00a0a080000000000000c0058 *9d0100240b0a080000000000000c00639d01003c0b0a080000000000000c006d9d01003c0b0a08 *0000000000000c00789d01006c0b0a080000000000000c00829d01006c0b0a080000000000000c *008d9d0100b80b0a080000000000000c00979d0100b80b0a080000000000000c00a09d01000c0c *0a080000000000000c00ab9d01002c0c0a080000000000000c00b59d0100500c0a080000000000 *000c00bf9d0100500c0a080000000000000c00ca9d01008c0c0a080000000000000c0073960000 *9c0c0a080000000000000c00d49d0100c80c0a080000000000000c00de9d0100c80c0a08000000 *0000000c00e99d01000c0d0a080000000000000c00f39d01000c0d0a080000000000000c00fe9d *0100540d0a080000000000000c00089e0100540d0a080000000000000c00119e01009c0d0a0800 *00000000000c001b9e01009c0d0a080000000000000c0077950000cc0d0a080000000000000c00 *81950000cc0d0a080000000000000c00fcbb0000200e0a080000000000000c0006bc0000200e0a *080000000000000c00269e0100c00e0a080000000000000c00309e0100c00e0a08000000000000 *0c000e9500004c0f0a080000000000000c00189500004c0f0a080000000000000c003b9e010068 *0f0a080000000000000c00459e0100680f0a080000000000000c00509e0100840f0a0800000000 *00000c005a9e0100840f0a080000000000000c00659e0100b40f0a080000000000000c006f9e01 *00b40f0a080000000000000c007a9e0100f80f0a080000000000000c00849e0100f80f0a080000 *000000000c008f9e0100bc100a080000000000000c00989e01004cc611080000000000001000a5 *9e010098130a080000000000000c00af9e0100d4100a080000000000000c00b99e0100d4100a08 *0000000000000c00c49e010008110a080000000000000c00ce9e010008110a080000000000000c *00d79e010028110a080000000000000c00e19e010028110a080000000000000c00ec9e01005811 *0a080000000000000c00f69e010058110a080000000000000c00ff9e0100b8110a080000000000 *000c00099f0100b8110a080000000000000c00149f0100f0110a080000000000000c001e9f0100 *f0110a080000000000000c0078bc00005c120a080000000000000c00299f01005c120a08000000 *0000000c00329f01007c120a080000000000000c003c9f01007c120a080000000000000c00479f *0100ac120a080000000000000c00519f0100ac120a080000000000000c005a9f01000c130a0800 *00000000000c00649f01000c130a080000000000000c006f9f010044130a080000000000000c00 *799f010044130a080000000000000c00849f010098130a080000000000000c008f9f010028140a *080000000000000c00999f010028140a080000000000000c00a29f01009c140a08000000000000 *0c00ac9f01009c140a080000000000000c00dab400001c150a080000000000000c00b59f01001c *150a080000000000000c00be9f010030150a080000000000000c00c89f010030150a0800000000 *00000c00d39f010060150a080000000000000c00dd9f010060150a080000000000000c00e69f01 *009c150a080000000000000c00f09f01009c150a080000000000000c00fb9f0100cc150a080000 *000000000c0005a00100cc150a080000000000000c007d99000008160a080000000000000c0087 *99000008160a080000000000000c000ea0010038160a080000000000000c0018a0010038160a08 *0000000000000c0023a001008c170a080000000000000c002ea0010090160a080000000000000c *0038a0010090160a080000000000000c0041a00100d8160a080000000000000c004ca00100f016 *0a080000000000000c0056a00100f0160a080000000000000c005fa0010004170a080000000000 *000c006aa001002c170a080000000000000c0082b5000038170a080000000000000c0074a00100 *38170a080000000000000c007da0010064170a080000000000000c0087a0010064170a08000000 *0000000c0090a001008c170a080000000000000c009aa00100c0170a080000000000000c00a4a0 *0100c0170a080000000000000c00ada00100fc170a080000000000000c00b7a00100fc170a0800 *00000000000c00c2a0010024180a080000000000000c00cda0010038180a080000000000000c00 *d7a0010038180a080000000000000c00e0a001004c180a080000000000000c00eaa001004c180a *080000000000000c00f5a0010080180a080000000000000c0000a10100941a0a08000000000000 *0c000ba10100e8180a080000000000000c0015a10100e8180a080000000000000c0020a10100fc *180a080000000000000c002ba1010034190a080000000000000c0072bd000048190a0800000000 *00000c0036a1010048190a080000000000000c003fa1010060190a080000000000000c0049a101 *0060190a080000000000000c0054a1010090190a080000000000000c005ea1010090190a080000 *000000000c0067a10100d8190a080000000000000c0072a10100f4190a080000000000000c007c *a10100f4190a080000000000000c0048bd00000c1a0a080000000000000c0052bd00000c1a0a08 *0000000000000c0085a10100301a0a080000000000000c0090a10100841a0a080000000000000c *009aa10100941a0a080000000000000c001b9d0000d81a0a080000000000000c00259d0000d81a *0a080000000000000c00a4a10100301b0a080000000000000c00aea10100301b0a080000000000 *000c0058b50000841b0a080000000000000c0062b50000841b0a080000000000000c00b7a10100 *701c0a080000000000000c005eb40000841c0a080000000000000c00c2a10100841c0a08000000 *0000000c00cba101008c1c0a080000000000000c00d6a10100b01c0a080000000000000c00e0a1 *0100c01c0a080000000000000c00eaa10100c01c0a080000000000000c00f5a10100f01c0a0800 *00000000000c00ffa10100f01c0a080000000000000c0008a20100601d0a080000000000000c00 *13a20100741d0a080000000000000c001da20100741d0a080000000000000c0026a201007c1d0a *080000000000000c0031a20100a01d0a080000000000000c003ba20100ac1d0a08000000000000 *0c0045a20100ac1d0a080000000000000c004ea20100dc1d0a080000000000000c0058a20100dc *1d0a080000000000000c004fb30000081e0a080000000000000c0063a20100081e0a0800000000 *00000c00b8b30000841e0a080000000000000c006ca20100841e0a080000000000000c0075a201 *00981e0a080000000000000c0080a20100a81e0a080000000000000c008ba20100b41e0a080000 *000000000c0096a20100c81e0a080000000000000c00a0a20100c81e0a080000000000000c00a9 *a201000c1f0a080000000000000c00b4a20100301f0a080000000000000c00bea201003c1f0a08 *0000000000000c00c8a201003c1f0a080000000000000c00d1a201005c1f0a080000000000000c *00dca20100901f0a080000000000000c00e6a20100901f0a080000000000000c00f1a20100c01f *0a080000000000000c00fba20100d01f0a080000000000000c0005a30100d01f0a080000000000 *000c0010a3010008200a080000000000000c001aa3010008200a080000000000000c0025a30100 *2c200a080000000000000c002fa301002c200a080000000000000c0038a30100cc200a08000000 *0000000c0042a30100cc200a080000000000000c004ba30100e0200a080000000000000c0056a3 *0100fc200a080000000000000c0060a30100fc200a080000000000000c0069a3010010210a0800 *00000000000c0074a301002c210a080000000000000c007ea301002c210a080000000000000c00 *87a3010074210a080000000000000c0091a3010074210a080000000000000c009ca30100a4210a *080000000000000c00a6a30100a4210a080000000000000c00afa30100f8210a08000000000000 *0c00b9a30100f8210a080000000000000c00c4a301003c220a080000000000000c00cea301003c *220a080000000000000c00d7a3010080220a080000000000000c00e2a30100a4220a0800000000 *00000c00eca30100a4220a080000000000000c00f7a30100e0220a080000000000000c0001a401 *00f0220a080000000000000c000ba40100f0220a080000000000000c0016a4010024230a080000 *000000000c0020a4010024230a080000000000000c002ba401006c230a080000000000000c0035 *a401006c230a080000000000000c0040a401008c230a080000000000000c004aa401008c230a08 *0000000000000c0053a4010020240a080000000000000c005ea4010034240a080000000000000c *0068a4010034240a080000000000000c0071a401007c240a080000000000000c007ba401007c24 *0a080000000000000c0086a40100ac240a080000000000000c0090a40100ac240a080000000000 *000c009ba40100dc240a080000000000000c00a5a40100dc240a080000000000000c00aea40100 *1c250a080000000000000c00b9a4010040250a080000000000000c00c3a4010050250a08000000 *0000000c00cda4010050250a080000000000000c00d8a4010088250a080000000000000c00e2a4 *010088250a080000000000000c00eba4010004260a080000000000000c00f5a4010004260a0800 *00000000000c00fea4010018260a080000000000000c0009a5010034260a080000000000000c00 *13a5010034260a080000000000000c001ca5010048260a080000000000000c0027a5010064260a *080000000000000c0031a5010064260a080000000000000c003aa50100a0260a08000000000000 *0c0045a50100c4260a080000000000000c004fa50100c4260a080000000000000c005aa50100f8 *260a080000000000000c0064a5010008270a080000000000000c006ea5010008270a0800000000 *00000c0079a5010034270a080000000000000c0083a5010034270a080000000000000c008ea501 *0078270a080000000000000c0098a5010078270a080000000000000c00a3a5010098270a080000 *000000000c00ada5010098270a080000000000000c00b6a5010050280a080000000000000c00c0 *a5010050280a080000000000000c00c9a5010064280a080000000000000c00d3a5010064280a08 *0000000000000c00dea5010098280a080000000000000c00e8a5010098280a080000000000000c *00f1a50100f8280a080000000000000c00fba50100f8280a080000000000000c0006a601008029 *0a080000000000000c0010a6010080290a080000000000000c0019a60100a0290a080000000000 *000c0023a60100a0290a080000000000000c002ea60100d4290a080000000000000c0038a60100 *d4290a080000000000000c0041a60100102a0a080000000000000c004ba60100102a0a08000000 *0000000c0056a60100442a0a080000000000000c0060a60100442a0a080000000000000c0069a6 *0100642a0a080000000000000c0073a60100642a0a080000000000000c007ea60100942a0a0800 *00000000000c0088a60100942a0a080000000000000c0091a60100f42a0a080000000000000c00 *9ba60100f42a0a080000000000000c00a6a60100842b0a080000000000000c00b0a60100842b0a *080000000000000c00b9a60100a42b0a080000000000000c00c3a60100a42b0a08000000000000 *0c00cea60100d42b0a080000000000000c00d8a60100d42b0a080000000000000c00e1a60100e8 *2b0a080000000000000c00eba60100e82b0a080000000000000c00f6a60100202c0a0800000000 *00000c0000a70100202c0a080000000000000c0009a70100a82c0a080000000000000c0013a701 *00a82c0a080000000000000c001ea70100d82c0a080000000000000c0028a70100d82c0a080000 *000000000c0031a701005c2d0a080000000000000c003ba701005c2d0a080000000000000c0046 *a70100902d0a080000000000000c0050a70100902d0a080000000000000c0059a70100a42d0a08 *0000000000000c0063a70100a42d0a080000000000000c006ea70100e42d0a080000000000000c *0078a70100e42d0a080000000000000c0081a70100282e0a080000000000000c008ba70100282e *0a080000000000000c005faf00006c2e0a080000000000000c0069af00006c2e0a080000000000 *000c0096a70100382f0a080000000000000c00a0a70100382f0a080000000000000c00f4ad0000 *702f0a080000000000000c00aba70100702f0a080000000000000c00b4a70100902f0a08000000 *0000000c00bea70100902f0a080000000000000c00ceae0000c02f0a080000000000000c00c9a7 *0100c02f0a080000000000000c00d2a7010020300a080000000000000c00dca7010020300a0800 *00000000000c0063ad0000b4300a080000000000000c00e7a70100b4300a080000000000000c00 *f0a70100c8300a080000000000000c00faa70100c8300a080000000000000c0089ac000000310a *080000000000000c0005a8010000310a080000000000000c000ea8010040310a08000000000000 *0c0018a8010040310a080000000000000c0023a8010070310a080000000000000c002da8010070 *310a080000000000000c0036a80100b0310a080000000000000c0040a80100b0310a0800000000 *00000c004ba80100f0310a080000000000000c0055a80100f0310a080000000000000c005ea801 *006c320a080000000000000c0068a801006c320a080000000000000c0071a8010080320a080000 *000000000c007ba8010080320a080000000000000c0086a80100b8320a080000000000000c0090 *a80100b8320a080000000000000c0060a50000f8320a080000000000000c006aa50000f8320a08 *0000000000000c0099a8010028330a080000000000000c00a3a8010028330a080000000000000c *00aca8010068330a080000000000000c00b6a8010068330a080000000000000c00c1a80100a833 *0a080000000000000c00cba80100a8330a080000000000000c00d4a8010024340a080000000000 *000c00dea8010024340a080000000000000c00e7a8010070340a080000000000000c00f1a80100 *70340a080000000000000c009eac0000a4340a080000000000000c00fca80100a4340a08000000 *0000000c0005a90100ec340a080000000000000c000fa90100ec340a080000000000000c001aa9 *010020350a080000000000000c0024a9010020350a080000000000000c0098a4000068350a0800 *00000000000c00a2a4000068350a080000000000000c002da90100a8350a080000000000000c00 *37a90100a8350a080000000000000c0040a90100bc350a080000000000000c004aa90100bc350a *080000000000000c0055a90100f0350a080000000000000c005fa90100f0350a08000000000000 *0c0068a9010050360a080000000000000c0072a9010050360a080000000000000c007da9010088 *360a080000000000000c0087a9010088360a080000000000000c0092a90100e8360a0800000000 *00000c009ca90100e8360a080000000000000c00e8a4000030370a080000000000000c00f2a400 *0030370a080000000000000c00a5a90100c4370a080000000000000c00afa90100c4370a080000 *000000000c00baa90100f8370a080000000000000c00c4a90100f8370a080000000000000c00cd *a901000c380a080000000000000c00d7a901000c380a080000000000000c00e2a9010040380a08 *0000000000000c00eca9010040380a080000000000000c00f5a90100a0380a080000000000000c *00ffa90100a0380a080000000000000c000aaa010040390a080000000000000c0014aa01004039 *0a080000000000000c001faa0100803b0a080000000000000c002aaa010080390a080000000000 *000c0034aa010080390a080000000000000c003daa0100cc390a080000000000000c0047aa0100 *cc390a080000000000000c0052aa0100083a0a080000000000000c005caa0100083a0a08000000 *0000000c0065aa0100583a0a080000000000000c006faa0100583a0a080000000000000c007aaa *0100a03a0a080000000000000c0084aa0100a03a0a080000000000000c008daa0100b43a0a0800 *00000000000c0097aa0100b43a0a080000000000000c00a2aa0100e83a0a080000000000000c00 *acaa0100e83a0a080000000000000c00b5aa0100483b0a080000000000000c00bfaa0100483b0a *080000000000000c00caaa0100803b0a080000000000000c00a7ab0000e03b0a08000000000000 *0c00d4aa0100e03b0a080000000000000c00ddaa0100583c0a080000000000000c00e7aa010058 *3c0a080000000000000c00f2aa01008c3c0a080000000000000c00fcaa01008c3c0a0800000000 *00000c0005ab0100a03c0a080000000000000c000fab0100a03c0a080000000000000c001aab01 *00d43c0a080000000000000c0024ab0100d43c0a080000000000000c002dab0100343d0a080000 *000000000c0037ab0100343d0a080000000000000c00d0a90000d83d0a080000000000000c00da *a90000d83d0a080000000000000c0042ab01000c3e0a080000000000000c004cab01000c3e0a08 *0000000000000c0057ab0100483e0a080000000000000c0061ab0100483e0a080000000000000c *006aab0100683e0a080000000000000c0074ab0100683e0a080000000000000c007fab01009c3e *0a080000000000000c0089ab01009c3e0a080000000000000c0092ab0100d83e0a080000000000 *000c009cab0100d83e0a080000000000000c00a7ab0100103f0a080000000000000c00b1ab0100 *103f0a080000000000000c0041ab0000803f0a080000000000000c00bcab0100803f0a08000000 *0000000c00c7ab0100a0410a080000000000000c00d2ab0100cc410a080000000000000c00ddab *01000c420a080000000000000c00e7ab01000c420a080000000000000c00f2ab010018420a0800 *00000000000c00fdab010030420a080000000000000c0007ac010030420a080000000000000c00 *10ac010060420a080000000000000c001bac01006c420a080000000000000c0026ac0100ac420a *080000000000000c0030ac0100ac420a080000000000000c003bac0100cc420a08000000000000 *0c0045ac0100cc420a080000000000000c0050ac0100ec420a080000000000000c005aac010004 *430a080000000000000c0065ac01003c430a080000000000000c0070ac010074430a0800000000 *00000c007bac0100ac430a080000000000000c0086ac010004440a080000000000000c0091ac01 *0068440a080000000000000c009bac010078c711080000000000001000a8ac010080c711080000 *000000001000b5ac0100c4450a080000000000000c00beac010088c711080000000000001000cb *ac0100d8450a080000000000000c00d5ac0100d8450a080000000000000c00e0ac010030460a08 *0000000000000c00e9ac010098c711080000000000001000f6ac010044460a080000000000000c *0000ad010044460a080000000000000c000bad01009c460a080000000000000c0014ad0100a8c7 *1108000000000000100021ad0100b0460a080000000000000c002bad0100b0460a080000000000 *000c0036ad010008470a080000000000000c003fad0100b8c7110800000000000010004cad0100 *1c470a080000000000000c0056ad01001c470a080000000000000c0061ad010074470a08000000 *0000000c006aad0100c8c71108000000000000100077ad010088470a080000000000000c0081ad *010088470a080000000000000c008cad010004480a080000000000000c0096ad010004480a0800 *00000000000c009fad010018480a080000000000000c00aaad010038480a080000000000000c00 *b4ad010038480a080000000000000c00bfad010074480a080000000000000c00c9ad010074480a *080000000000000c00d4ad0100c4480a080000000000000c00dfad01005c4a0a08000000000000 *0c00eaad0100d8480a080000000000000c00f5ad01001c490a080000000000000c00ffad010028 *490a080000000000000c0009ae010028490a080000000000000c0014ae010068490a0800000000 *00000c001eae010068490a080000000000000c0029ae01009c490a080000000000000c0033ae01 *009c490a080000000000000c003cae0100f4490a080000000000000c0047ae01004c4a0a080000 *000000000c0051ae01005c4a0a080000000000000c005bae0100904a0a080000000000000c0065 *ae0100904a0a080000000000000c0070ae0100c84a0a080000000000000c007aae0100c84a0a08 *0000000000000c0085ae0100044b0a080000000000000c008fae0100044b0a080000000000000c *009aae0100404b0a080000000000000c00a4ae0100404b0a080000000000000c00afae01008c4b *0a080000000000000c00b9ae01008c4b0a080000000000000c00c2ae0100784c0a080000000000 *000c00ccae0100844c0a080000000000000c00d6ae0100904c0a080000000000000c00e0ae0100 *9c4c0a080000000000000c00eaae0100b44c0a080000000000000c00f4ae0100b44c0a08000000 *0000000c00ffae0100f44c0a080000000000000c0009af0100f44c0a080000000000000c0014af *0100684d0a080000000000000c001eaf01007c4d0a080000000000000c0028af01007c4d0a0800 *00000000000c0031af0100a04d0a080000000000000c003baf0100a04d0a080000000000000c00 *46af0100d84d0a080000000000000c0050af0100d84d0a080000000000000c005baf01002c4e0a *080000000000000c0065af01002c4e0a080000000000000c0070af0100a44e0a08000000000000 *0c007aaf0100a44e0a080000000000000c0085af0100e84e0a080000000000000c008faf0100e8 *4e0a080000000000000c0098af0100584f0a080000000000000c00a2af0100584f0a0800000000 *00000c00adaf0100844f0a080000000000000c00b7af0100844f0a080000000000000c00c2af01 *00bc4f0a080000000000000c00ccaf0100c84f0a080000000000000c00d6af0100dc4f0a080000 *000000000c00e0af0100dc4f0a080000000000000c00ebaf010010500a080000000000000c00f5 *af010010500a080000000000000c0000b0010044500a080000000000000c000ab0010044500a08 *0000000000000c0015b001007c500a080000000000000c001fb001007c500a080000000000000c *002ab00100dc500a080000000000000c0034b00100dc500a080000000000000c003fb001001051 *0a080000000000000c0049b0010010510a080000000000000c0054b0010074510a080000000000 *000c005eb0010074510a080000000000000c0069b00100d0510a080000000000000c0073b00100 *d0510a080000000000000c007eb001003c520a080000000000000c0088b001003c520a08000000 *0000000c0093b0010074520a080000000000000c009db0010074520a080000000000000c00a8b0 *0100c0520a080000000000000c00b2b00100c0520a080000000000000c00bdb00100f4520a0800 *00000000000c00c7b00100f4520a080000000000000c00d2b0010058530a080000000000000c00 *dcb0010058530a080000000000000c00e7b00100b4530a080000000000000c00f1b00100b4530a *080000000000000c00fcb0010038540a080000000000000c0006b1010038540a08000000000000 *0c0011b1010068540a080000000000000c001bb1010068540a080000000000000c0026b10100a0 *540a080000000000000c0030b10100a0540a080000000000000c003bb101000c550a0800000000 *00000c0045b101000c550a080000000000000c004eb1010084550a080000000000000c0058b101 *0084550a080000000000000c0063b10100c4550a080000000000000c006db10100c4550a080000 *000000000c0078b1010000560a080000000000000c0082b1010000560a080000000000000c008d *b101005c560a080000000000000c0097b101005c560a080000000000000c00a2b10100c8560a08 *0000000000000c00acb10100c8560a080000000000000c00b7b1010004570a080000000000000c *00c1b1010004570a080000000000000c00ccb1010050570a080000000000000c00d7b10100b057 *0a080000000000000c00e1b10100b0570a080000000000000c00ecb10100ec570a080000000000 *000c00f6b10100ec570a080000000000000c00ffb1010018580a080000000000000c000ab20100 *40580a080000000000000c0014b201004c580a080000000000000c001eb201004c580a08000000 *0000000c0027b20100bc580a080000000000000c0030b20100e8c7110800000000000010003db2 *0100cc580a080000000000000c0047b20100cc580a080000000000000c0052b20100b0590a0800 *00000000000c005db20100c4590a080000000000000c0068b20100dc590a080000000000000c00 *72b20100dc590a080000000000000c007db20100105a0a080000000000000c0087b20100105a0a *080000000000000c0092b20100605a0a080000000000000c009cb20100605a0a08000000000000 *0c00a7b201008c5a0a080000000000000c00b2b20100e05a0a080000000000000c00bcb20100e0 *5a0a080000000000000c00c7b20100f05a0a080000000000000c00d2b20100185b0a0800000000 *00000c00dcb20100185b0a080000000000000c00e7b20100405b0a080000000000000c00f1b201 *00505b0a080000000000000c00fbb20100505b0a080000000000000c0006b30100845b0a080000 *000000000c0010b30100845b0a080000000000000c001bb30100b85b0a080000000000000c0025 *b30100b85b0a080000000000000c002eb30100805c0a080000000000000c0038b30100805c0a08 *0000000000000c0043b30100a85c0a080000000000000c004eb30100c45c0a080000000000000c *0058b30100c45c0a080000000000000c0063b30100005d0a080000000000000c006db30100005d *0a080000000000000c0076b301003c5d0a080000000000000c0080b301003c5d0a080000000000 *000c008bb30100705d0a080000000000000c0095b30100705d0a080000000000000c009eb30100 *bc5d0a080000000000000c00a8b30100bc5d0a080000000000000c00b3b30100e85d0a08000000 *0000000c00beb3010088620a080000000000000c00c9b30100085e0a080000000000000c00d3b3 *0100085e0a080000000000000c00deb30100445e0a080000000000000c00e8b30100445e0a0800 *00000000000c00f3b30100745e0a080000000000000c00fdb30100745e0a080000000000000c00 *08b40100a85e0a080000000000000c0012b40100a85e0a080000000000000c001db40100dc5e0a *080000000000000c0027b40100dc5e0a080000000000000c0032b40100445f0a08000000000000 *0c003cb40100445f0a080000000000000c0047b40100a05f0a080000000000000c0051b40100a0 *5f0a080000000000000c005cb40100c85f0a080000000000000c0067b4010018600a0800000000 *00000c0072b4010040600a080000000000000c007cb4010050600a080000000000000c0086b401 *0050600a080000000000000c0091b4010090600a080000000000000c009bb4010090600a080000 *000000000c00a6b40100c4600a080000000000000c00b0b40100c4600a080000000000000c00bb *b4010014610a080000000000000c00c5b4010014610a080000000000000c00d0b4010090610a08 *0000000000000c00dbb401000c620a080000000000000c00e5b401000c620a080000000000000c *00f0b4010078620a080000000000000c00fab4010088620a080000000000000c0004b50100cc62 *0a080000000000000c000eb50100cc620a080000000000000c0019b501002c630a080000000000 *000c0023b501002c630a080000000000000c002eb5010098630a080000000000000c0038b50100 *98630a080000000000000c0043b5010008640a080000000000000c004db5010008640a08000000 *0000000c0058b501003c640a080000000000000c0062b501003c640a080000000000000c006bb5 *010000650a080000000000000c0076b5010008650a080000000000000c0081b5010050650a0800 *00000000000c008bb501008c650a080000000000000c0095b501008c650a080000000000000c00 *9eb50100dc650a080000000000000c00a9b50100ec650a080000000000000c00b4b50100f4650a *080000000000000c00bfb5010010660a080000000000000c00c9b5010018660a08000000000000 *0c00d3b5010018660a080000000000000c00dcb5010038660a080000000000000c00e7b501006c *660a080000000000000c00f1b501009c660a080000000000000c00fcb50100b4660a0800000000 *00000c0006b60100b4660a080000000000000c000fb60100cc660a080000000000000c001ab601 *00f8660a080000000000000c0024b6010028670a080000000000000c002fb6010040670a080000 *000000000c0039b6010040670a080000000000000c0042b6010058670a080000000000000c004d *b6010084670a080000000000000c0057b60100d0670a080000000000000c0061b60100d0670a08 *0000000000000c006cb6010004680a080000000000000c0076b6010004680a080000000000000c *0081b6010058680a080000000000000c008bb6010058680a080000000000000c0094b601007c68 *0a080000000000000c009eb601007c680a080000000000000c00a9b60100a0680a080000000000 *000c00b4b60100d0680a080000000000000c00bfb601000c690a080000000000000c00c9b60100 *0c690a080000000000000c00d4b6010040690a080000000000000c00deb6010040690a08000000 *0000000c00e9b6010098690a080000000000000c00f3b6010098690a080000000000000c00feb6 *0100e4690a080000000000000c0009b70100486a0a080000000000000c0013b70100486a0a0800 *00000000000c001eb70100706a0a080000000000000c0028b701007c6a0a080000000000000c00 *32b701007c6a0a080000000000000c003bb70100206b0a080000000000000c0045b70100206b0a *080000000000000c004eb70100286b0a080000000000000c0059b70100406b0a08000000000000 *0c0063b70100406b0a080000000000000c006cb70100546b0a080000000000000c0076b7010054 *6b0a080000000000000c0081b70100806b0a080000000000000c008cb70100dc6b0a0800000000 *00000c0096b70100246c0a080000000000000c00a1b70100406c0a080000000000000c00abb701 *00406c0a080000000000000c00b6b70100686c0a080000000000000c00c1b70100ac6c0a080000 *000000000c00cbb70100ac6c0a080000000000000c00d6b70100d46c0a080000000000000c00e1 *b701000c6d0a080000000000000c00ecb70100146d0a080000000000000c00f7b70100cc6d0a08 *0000000000000c0002b801003c6d0a080000000000000c000cb80100446d0a080000000000000c *0016b80100446d0a080000000000000c001fb80100646d0a080000000000000c002ab80100906d *0a080000000000000c0034b80100906d0a080000000000000c003fb80100bc6d0a080000000000 *000c0049b80100cc6d0a080000000000000c0053b80100f86d0a080000000000000c005db80100 *f86d0a080000000000000c0068b80100306e0a080000000000000c0073b80100486e0a08000000 *0000000c007eb8010080700a080000000000000c0089b80100746e0a080000000000000c0094b8 *0100bc720a080000000000000c009fb80100ac6e0a080000000000000c00a9b80100b46e0a0800 *00000000000c00b3b80100b46e0a080000000000000c00bcb80100d46e0a080000000000000c00 *c7b80100086f0a080000000000000c00d1b80100186f0a080000000000000c00dbb80100186f0a *080000000000000c00e6b80100486f0a080000000000000c00f1b801008c6f0a08000000000000 *0c00fcb80100946f0a080000000000000c0007b901009c6f0a080000000000000c0012b90100ec *6f0a080000000000000c001cb90100f46f0a080000000000000c0026b90100f46f0a0800000000 *00000c002fb9010014700a080000000000000c003ab9010048700a080000000000000c0044b901 *0048700a080000000000000c004fb9010070700a080000000000000c0059b9010080700a080000 *000000000c0063b90100b4700a080000000000000c006db90100b4700a080000000000000c0078 *b9010000710a080000000000000c0083b9010070710a080000000000000c008db9010070710a08 *0000000000000c0098b9010098710a080000000000000c00a3b90100d0710a080000000000000c *00aeb90100d8710a080000000000000c00b9b9010028720a080000000000000c00c3b901003072 *0a080000000000000c00cdb9010030720a080000000000000c00d6b9010050720a080000000000 *000c00e1b9010084720a080000000000000c00ebb9010084720a080000000000000c00f6b90100 *ac720a080000000000000c0000ba0100bc720a080000000000000c000aba0100f0720a08000000 *0000000c0014ba0100f0720a080000000000000c001fba010020730a080000000000000c002aba *010030730a080000000000000c0035ba010084730a080000000000000c003fba010084730a0800 *00000000000c004aba0100c0730a080000000000000c0055ba0100dc730a080000000000000c00 *5fba0100dc730a080000000000000c006aba01006c740a080000000000000c0074ba0100a4740a *080000000000000c007fba0100b8740a080000000000000c0089ba0100b8740a08000000000000 *0c0094ba0100e0740a080000000000000c009fba010018750a080000000000000c00aaba010038 *750a080000000000000c00b4ba010044750a080000000000000c00beba010044750a0800000000 *00000c00c7ba010084750a080000000000000c00d2ba0100ac750a080000000000000c00dcba01 *00b8750a080000000000000c00e6ba0100b8750a080000000000000c00efba0100c4750a080000 *000000000c00faba0100cc750a080000000000000c0005bb0100d4750a080000000000000c0010 *bb0100ec750a080000000000000c001abb0100f8750a080000000000000c0024bb0100f8750a08 *0000000000000c002dbb010014760a080000000000000c0038bb010040760a080000000000000c *0042bb010078760a080000000000000c004dbb010088760a080000000000000c0058bb01009876 *0a080000000000000c0063bb0100b4760a080000000000000c006dbb0100c0760a080000000000 *000c0077bb0100c0760a080000000000000c0080bb0100e0760a080000000000000c008bbb0100 *10770a080000000000000c0095bb010064770a080000000000000c00a0bb010074770a08000000 *0000000c00abbb01007c770a080000000000000c00b6bb010098770a080000000000000c00c0bb *010098770a080000000000000c00cbbb0100c4770a080000000000000c00d5bb0100d0770a0800 *00000000000c00dfbb0100d0770a080000000000000c00eabb0100e8770a080000000000000c00 *f5bb01001c780a080000000000000c0000bc01004c780a080000000000000c000bbc010090780a *080000000000000c0015bc010098780a080000000000000c001fbc010098780a08000000000000 *0c0028bc0100bc780a080000000000000c0032bc0100bc780a080000000000000c003dbc010000 *790a080000000000000c0047bc010000790a080000000000000c0052bc01003c790a0800000000 *00000c005cbc01003c790a080000000000000c0067bc010070790a080000000000000c0071bc01 *0070790a080000000000000c007cbc0100d0790a080000000000000c0087bc0100287a0a080000 *000000000c0091bc0100287a0a080000000000000c009cbc0100847a0a080000000000000c00a6 *bc0100847a0a080000000000000c00b1bc0100ac7a0a080000000000000c00bcbc0100147b0a08 *0000000000000c00c6bc0100207b0a080000000000000c00d0bc0100207b0a080000000000000c *00d9bc0100707b0a080000000000000c00e4bc0100747b0a080000000000000c00efbc0100707c *0a080000000000000c00fabc0100887b0a080000000000000c0005bd0100a07b0a080000000000 *000c000fbd0100ac7b0a080000000000000c0019bd0100ac7b0a080000000000000c0022bd0100 *cc7b0a080000000000000c002dbd0100f87b0a080000000000000c0037bd0100f87b0a08000000 *0000000c0042bd0100607c0a080000000000000c004cbd0100707c0a080000000000000c0056bd *0100a47c0a080000000000000c0060bd0100a47c0a080000000000000c006bbd0100f87c0a0800 *00000000000c0076bd0100307d0a080000000000000c0081bd0100747d0a080000000000000c00 *8bbd0100747d0a080000000000000c0096bd0100d47d0a080000000000000c00a0bd0100d47d0a *080000000000000c00abbd0100287e0a080000000000000c00b6bd0100807e0a08000000000000 *0c00c0bd01008c7e0a080000000000000c00cabd01008c7e0a080000000000000c00d3bd0100ac *7e0a080000000000000c00debd0100e07e0a080000000000000c00e8bd0100ec7e0a0800000000 *00000c00f2bd0100ec7e0a080000000000000c00fdbd0100347f0a080000000000000c0007be01 *00347f0a080000000000000c0012be0100847f0a080000000000000c001cbe0100847f0a080000 *000000000c0027be0100e07f0a080000000000000c0031be0100e07f0a080000000000000c003c *be010030800a080000000000000c0046be010030800a080000000000000c0051be01003c810a08 *0000000000000c005bbe01003c810a080000000000000c0066be010070810a080000000000000c *0070be010070810a080000000000000c007bbe0100bc810a080000000000000c0086be0100f081 *0a080000000000000c0091be01000c820a080000000000000c009bbe010014820a080000000000 *000c00a5be010014820a080000000000000c00aebe010028820a080000000000000c00b8be0100 *28820a080000000000000c00c3be010058820a080000000000000c00cdbe010058820a08000000 *0000000c00d8be01009c820a080000000000000c00e3be0100d0820a080000000000000c00eebe *010004830a080000000000000c00f9be010020830a080000000000000c0003bf010020830a0800 *00000000000c000ebf010054830a080000000000000c0018bf010060830a080000000000000c00 *22bf010060830a080000000000000c002bbf010078830a080000000000000c0035bf010078830a *080000000000000c0040bf0100a8830a080000000000000c004abf0100a8830a08000000000000 *0c0055bf010074840a080000000000000c005fbf010074840a080000000000000c006abf0100a4 *840a080000000000000c0074bf0100a4840a080000000000000c007fbf0100f0840a0800000000 *00000c0089bf0100f0840a080000000000000c0092bf010014850a080000000000000c009cbf01 *0014850a080000000000000c00a7bf010044850a080000000000000c00b1bf010044850a080000 *000000000c00bcbf01006c850a080000000000000c00c7bf0100c8850a080000000000000c00d1 *bf0100c8850a080000000000000c00dcbf0100fc850a080000000000000c00e6bf0100fc850a08 *0000000000000c00f1bf010024860a080000000000000c00fcbf010094860a080000000000000c *0006c00100a0860a080000000000000c0010c00100a0860a080000000000000c0019c001004887 *0a080000000000000c0023c0010048870a080000000000000c002ec00100fc870a080000000000 *000c0038c00100fc870a080000000000000c0041c0010020880a080000000000000c004bc00100 *20880a080000000000000c0056c0010044880a080000000000000c0061c0010078880a08000000 *0000000c006cc00100d8880a080000000000000c0076c00100e0880a080000000000000c0080c0 *0100e0880a080000000000000c0089c0010008890a080000000000000c0093c0010008890a0800 *00000000000c009ec00100a8c811080000000000001000abc00100d4c811080000000000001000 *b8c001003c8a0a080000000000000c00c1c00100dcc811080000000000001000cec00100508a0a *080000000000000c00d8c00100508a0a080000000000000c00e3c00100a88a0a08000000000000 *0c00ecc00100ecc811080000000000001000f9c00100c88a0a080000000000000c0003c10100b4 *8a0a080000000000000c000dc10100b48a0a080000000000000c0016c10100c88a0a0800000000 *00000c0021c101001c8b0a080000000000000c002ac10100fcc81108000000000000100037c101 *00d4960a080000000000000c0041c10100388b0a080000000000000c004bc10100388b0a080000 *000000000c0056c10100748b0a080000000000000c0060c10100748b0a080000000000000c006b *c10100b08b0a080000000000000c0075c10100b08b0a080000000000000c0080c10100008c0a08 *0000000000000c008ac10100008c0a080000000000000c0095c101003c8c0a080000000000000c *009fc101003c8c0a080000000000000c00aac101009c8c0a080000000000000c00b4c101009c8c *0a080000000000000c00bfc10100f48c0a080000000000000c00c9c10100f48c0a080000000000 *000c00d4c10100308d0a080000000000000c00dec10100308d0a080000000000000c00e9c10100 *908d0a080000000000000c00f3c10100908d0a080000000000000c00fcc10100a48d0a08000000 *0000000c0006c20100a48d0a080000000000000c0011c20100dc8d0a080000000000000c001bc2 *0100dc8d0a080000000000000c0026c20100488e0a080000000000000c0030c20100488e0a0800 *00000000000c003bc20100788e0a080000000000000c0046c20100d08e0a080000000000000c00 *50c20100d08e0a080000000000000c005bc201000c8f0a080000000000000c0065c201000c8f0a *080000000000000c0070c201005c8f0a080000000000000c007ac201005c8f0a08000000000000 *0c0085c20100988f0a080000000000000c008fc20100988f0a080000000000000c009ac20100f8 *8f0a080000000000000c00a4c20100f88f0a080000000000000c00afc2010050900a0800000000 *00000c00b9c2010050900a080000000000000c00c4c201008c900a080000000000000c00cec201 *008c900a080000000000000c00d9c20100ec900a080000000000000c00e3c20100ec900a080000 *000000000c00ecc2010000910a080000000000000c00f6c2010000910a080000000000000c0001 *c3010038910a080000000000000c000bc3010038910a080000000000000c0016c30100a4910a08 *0000000000000c0020c30100a4910a080000000000000c002bc30100e0910a080000000000000c *0035c30100e0910a080000000000000c0040c301004c920a080000000000000c004ac301004c92 *0a080000000000000c0055c30100b0920a080000000000000c005fc30100b0920a080000000000 *000c006ac30100e0920a080000000000000c0075c3010044930a080000000000000c007fc30100 *44930a080000000000000c008ac3010060930a080000000000000c0094c3010060930a08000000 *0000000c009fc301009c930a080000000000000c00a9c301009c930a080000000000000c00b4c3 *0100ec930a080000000000000c00bec30100ec930a080000000000000c00c9c3010028940a0800 *00000000000c00d3c3010028940a080000000000000c00dec3010088940a080000000000000c00 *e8c3010088940a080000000000000c00f3c30100e0940a080000000000000c00fdc30100e0940a *080000000000000c0008c401001c950a080000000000000c0012c401001c950a08000000000000 *0c001dc401007c950a080000000000000c0027c401007c950a080000000000000c0030c4010090 *950a080000000000000c003ac4010090950a080000000000000c0045c40100c8950a0800000000 *00000c004fc40100c8950a080000000000000c005ac4010034960a080000000000000c0064c401 *0034960a080000000000000c006fc4010064960a080000000000000c007ac40100c4960a080000 *000000000c0084c40100d4960a080000000000000c008fc401001c970a080000000000000c0098 *c4010004c911080000000000001000a5c4010030970a080000000000000c00afc4010030970a08 *0000000000000c00bac401009c970a080000000000000c00c3c4010018c9110800000000000010 *00d0c4010020a40a080000000000000c00dac40100d0970a080000000000000c00e5c40100f497 *0a080000000000000c00efc40100f4970a080000000000000c00fac4010020a40a080000000000 *000c0005c5010020980a080000000000000c0010c501006c980a080000000000000c001ac50100 *6c980a080000000000000c0025c5010098980a080000000000000c0030c50100ec980a08000000 *0000000c003ac50100f8980a080000000000000c0044c50100f8980a080000000000000c004dc5 *01001c990a080000000000000c0058c501002c990a080000000000000c0062c501002c990a0800 *00000000000c006dc5010060990a080000000000000c0077c5010060990a080000000000000c00 *80c5010084990a080000000000000c008ac5010084990a080000000000000c0095c50100bc990a *080000000000000c009fc50100bc990a080000000000000c00aac50100149a0a08000000000000 *0c00b4c50100149a0a080000000000000c00bfc50100409a0a080000000000000c00cac501006c *9a0a080000000000000c00d5c50100989a0a080000000000000c00e0c50100d09a0a0800000000 *00000c00eac50100d09a0a080000000000000c00f5c50100f89a0a080000000000000c0000c601 *004c9b0a080000000000000c000ac601004c9b0a080000000000000c0015c60100889b0a080000 *000000000c001fc60100889b0a080000000000000c002ac60100b49b0a080000000000000c0034 *c60100c09b0a080000000000000c003ec60100c09b0a080000000000000c0049c60100049c0a08 *0000000000000c0053c60100049c0a080000000000000c005cc60100c49c0a080000000000000c *0067c60100f09c0a080000000000000c0071c60100f09c0a080000000000000c007cc60100209d *0a080000000000000c0086c601002c9d0a080000000000000c0090c601002c9d0a080000000000 *000c0099c60100389d0a080000000000000c00a4c601003c9d0a080000000000000c00afc60100 *509d0a080000000000000c00b9c60100509d0a080000000000000c00c4c601008c9d0a08000000 *0000000c00cec601008c9d0a080000000000000c00d9c60100c09d0a080000000000000c00e3c6 *0100c09d0a080000000000000c00ecc60100049e0a080000000000000c00f6c60100049e0a0800 *00000000000c0001c701003c9e0a080000000000000c000bc701003c9e0a080000000000000c00 *16c70100909e0a080000000000000c0020c70100909e0a080000000000000c0029c701001c9f0a *080000000000000c0034c70100489f0a080000000000000c003ec70100489f0a08000000000000 *0c0049c70100749f0a080000000000000c0053c70100809f0a080000000000000c005dc7010080 *9f0a080000000000000c0066c70100a49f0a080000000000000c0070c70100a49f0a0800000000 *00000c0079c70100b09f0a080000000000000c0084c70100c09f0a080000000000000c008fc701 *00c89f0a080000000000000c009ac70100d89f0a080000000000000c00a5c7010038a00a080000 *000000000c00afc7010038a00a080000000000000c00bac7010068a00a080000000000000c00c5 *c70100c4a00a080000000000000c00cfc70100c4a00a080000000000000c00dac70100f0a00a08 *0000000000000c00e5c7010044a10a080000000000000c00efc7010050a10a080000000000000c *00f9c7010050a10a080000000000000c0002c8010094a10a080000000000000c000cc8010094a1 *0a080000000000000c0015c8010000a20a080000000000000c0020c801002ca20a080000000000 *000c002ac801002ca20a080000000000000c0035c8010058a20a080000000000000c003fc80100 *68a20a080000000000000c0049c8010068a20a080000000000000c0054c8010094a20a08000000 *0000000c005ec8010094a20a080000000000000c0069c80100c4a20a080000000000000c0074c8 *0100cca20a080000000000000c007fc8010024a30a080000000000000c0089c8010030a30a0800 *00000000000c0093c8010030a30a080000000000000c009cc8010074a30a080000000000000c00 *a6c8010074a30a080000000000000c00afc80100b8a30a080000000000000c00bac80100e4a30a *080000000000000c00c4c80100e4a30a080000000000000c00cfc8010010a40a08000000000000 *0c00d9c8010040a40a080000000000000c00e2c8010020c911080000000000001000efc80100e0 *a50a080000000000000c00f9c8010048a40a080000000000000c0004c9010050a40a0800000000 *00000c000fc9010060a40a080000000000000c001ac9010078a40a080000000000000c0024c901 *0078a40a080000000000000c002dc901008ca40a080000000000000c0037c901008ca40a080000 *000000000c0042c90100c4a40a080000000000000c004cc90100c4a40a080000000000000c0057 *c9010024a50a080000000000000c0062c901007ca50a080000000000000c006dc90100d0a50a08 *0000000000000c0077c90100e0a50a080000000000000c0082c90100eca50a080000000000000c *008bc9010028c91108000000000000100098c9010000b00a080000000000000c00a2c9010000a6 *0a080000000000000c00adc9010018a60a080000000000000c00b7c9010018a60a080000000000 *000c00c0c901003ca60a080000000000000c00cac901003ca60a080000000000000c00d5c90100 *74a60a080000000000000c00dfc9010074a60a080000000000000c00eac9010000b00a08000000 *0000000c00f5c90100c8a60a080000000000000c0000ca01002ca70a080000000000000c000aca *010038a70a080000000000000c0014ca010038a70a080000000000000c001dca010044a70a0800 *00000000000c0028ca010054a70a080000000000000c0032ca010054a70a080000000000000c00 *3dca010090a70a080000000000000c0047ca010090a70a080000000000000c0052ca0100c0a70a *080000000000000c005cca0100e4a70a080000000000000c0066ca0100e4a70a08000000000000 *0c0071ca010038a80a080000000000000c007bca010038a80a080000000000000c0086ca010070 *a80a080000000000000c0091ca0100c4a80a080000000000000c009bca0100c4a80a0800000000 *00000c00a4ca0100e8a80a080000000000000c00aeca0100e8a80a080000000000000c00b9ca01 *0020a90a080000000000000c00c3ca010020a90a080000000000000c00ceca010074a90a080000 *000000000c00d9ca0100c0a90a080000000000000c00e3ca0100e8a90a080000000000000c00ed *ca0100e8a90a080000000000000c00f8ca010014aa0a080000000000000c0002cb010014aa0a08 *0000000000000c000dcb010024aa0a080000000000000c0018cb010038aa0a080000000000000c *0022cb010038aa0a080000000000000c002dcb010070aa0a080000000000000c0038cb0100c0aa *0a080000000000000c0042cb0100c0aa0a080000000000000c004bcb0100e4aa0a080000000000 *000c0055cb0100e4aa0a080000000000000c0060cb01001cab0a080000000000000c006acb0100 *1cab0a080000000000000c0075cb010070ab0a080000000000000c0080cb0100b8ab0a08000000 *0000000c008acb0100e0ab0a080000000000000c0094cb0100e0ab0a080000000000000c009fcb *010008ac0a080000000000000c00a9cb010008ac0a080000000000000c00b4cb010014ac0a0800 *00000000000c00bfcb010028ac0a080000000000000c00c9cb010028ac0a080000000000000c00 *d4cb010064ac0a080000000000000c00decb010064ac0a080000000000000c00e9cb010094ac0a *080000000000000c00f3cb0100b8ac0a080000000000000c00fdcb0100b8ac0a08000000000000 *0c0008cc010008ad0a080000000000000c0012cc010008ad0a080000000000000c001dcc010040 *ad0a080000000000000c0028cc010090ad0a080000000000000c0032cc010090ad0a0800000000 *00000c003bcc0100b4ad0a080000000000000c0045cc0100b4ad0a080000000000000c0050cc01 *00ecad0a080000000000000c005acc0100ecad0a080000000000000c0065cc010040ae0a080000 *000000000c0070cc010088ae0a080000000000000c007acc0100b0ae0a080000000000000c0084 *cc0100b0ae0a080000000000000c008fcc0100d8ae0a080000000000000c0099cc0100d8ae0a08 *0000000000000c00a4cc0100e4ae0a080000000000000c00aecc01000caf0a080000000000000c *00b8cc010018af0a080000000000000c00c2cc010018af0a080000000000000c00cbcc010024af *0a080000000000000c00d6cc010034af0a080000000000000c00e0cc010034af0a080000000000 *000c00ebcc01006caf0a080000000000000c00f6cc0100ccaf0a080000000000000c0000cd0100 *d8af0a080000000000000c000acd0100d8af0a080000000000000c0013cd010044b00a08000000 *0000000c001dcd010044b00a080000000000000c0028cd01006cb00a080000000000000c0033cd *0100b8b00a080000000000000c003dcd0100b8b00a080000000000000c0048cd0100f4b00a0800 *00000000000c0052cd0100f4b00a080000000000000c005dcd01004cb10a080000000000000c00 *67cd01004cb10a080000000000000c0072cd0100f0b40a080000000000000c007dcd010084b10a *080000000000000c0087cd010084b10a080000000000000c0092cd0100acb10a08000000000000 *0c009dcd010004b20a080000000000000c00a7cd010004b20a080000000000000c00b2cd01003c *b20a080000000000000c00bccd01003cb20a080000000000000c00c7cd010070b20a0800000000 *00000c00d1cd010070b20a080000000000000c00dccd0100a8b20a080000000000000c00e6cd01 *00a8b20a080000000000000c00f1cd0100dcb20a080000000000000c00fbcd0100dcb20a080000 *000000000c0004ce010074b30a080000000000000c000fce0100a0b30a080000000000000c0019 *ce0100acb30a080000000000000c0023ce0100acb30a080000000000000c002ece0100e4b30a08 *0000000000000c0038ce0100e4b30a080000000000000c0043ce010018b40a080000000000000c *004dce010018b40a080000000000000c0056ce0100b4b40a080000000000000c0061ce0100e0b4 *0a080000000000000c006bce0100f0b40a080000000000000c0075ce01001cb50a080000000000 *000c007fce01001cb50a080000000000000c008ace010068b50a080000000000000c0094ce0100 *68b50a080000000000000c009fce01009cb50a080000000000000c00a9ce01009cb50a08000000 *0000000c00b4ce0100e0b50a080000000000000c00bece0100e0b50a080000000000000c00c9ce *01004cb60a080000000000000c00d3ce01004cb60a080000000000000c00dece010084b60a0800 *00000000000c00e8ce010084b60a080000000000000c00f3ce010000b80a080000000000000c00 *fece01002cb80a080000000000000c0009cf010050b80a080000000000000c0013cf010050b80a *080000000000000c001ecf01005cb80a080000000000000c0029cf010074b80a08000000000000 *0c0033cf010074b80a080000000000000c003ccf0100a4b80a080000000000000c0047cf0100b0 *b80a080000000000000c0052cf0100f0b80a080000000000000c005ccf0100f0b80a0800000000 *00000c0067cf010010b90a080000000000000c0071cf010010b90a080000000000000c007ccf01 *0030b90a080000000000000c0086cf010048b90a080000000000000c0091cf010080b90a080000 *000000000c009ccf0100b8b90a080000000000000c00a7cf0100f0b90a080000000000000c00b2 *cf010048ba0a080000000000000c00bdcf0100acba0a080000000000000c00c7cf010058c91108 *0000000000001000d4cf0100b0bd0a080000000000000c00decf010078bb0a080000000000000c *00e9cf010088bb0a080000000000000c00f4cf01002cbc0a080000000000000c00ffcf01009cbb *0a080000000000000c000ad00100f4bb0a080000000000000c0014d00100f4bb0a080000000000 *000c001fd0010020bc0a080000000000000c0029d001002cbc0a080000000000000c0033d00100 *54bc0a080000000000000c003dd0010054bc0a080000000000000c0048d0010090bc0a08000000 *0000000c0053d00100a0bc0a080000000000000c005ed00100e4bc0a080000000000000c0069d0 *010040bd0a080000000000000c0074d0010008bd0a080000000000000c007ed0010008bd0a0800 *00000000000c0089d0010034bd0a080000000000000c0093d0010040bd0a080000000000000c00 *9dd0010068bd0a080000000000000c00a7d0010068bd0a080000000000000c00b2d00100b0bd0a *080000000000000c00bdd00100fcbd0a080000000000000c00c6d001005cc91108000000000000 *1000d3d0010010be0a080000000000000c00ddd0010010be0a080000000000000c00e8d0010068 *be0a080000000000000c00f1d001006cc911080000000000001000fed0010074cf0a0800000000 *00000c0008d101007cbe0a080000000000000c0012d101007cbe0a080000000000000c001bd101 *009cbe0a080000000000000c0025d101009cbe0a080000000000000c0030d10100d0be0a080000 *000000000c003ad10100d0be0a080000000000000c0045d1010008bf0a080000000000000c004f *d1010008bf0a080000000000000c0058d1010028bf0a080000000000000c0062d1010028bf0a08 *0000000000000c006dd101005cbf0a080000000000000c0077d101005cbf0a080000000000000c *0082d1010094bf0a080000000000000c008cd1010094bf0a080000000000000c0095d10100b4bf *0a080000000000000c009fd10100b4bf0a080000000000000c00aad10100e8bf0a080000000000 *000c00b4d10100e8bf0a080000000000000c00bfd1010020c00a080000000000000c00c9d10100 *20c00a080000000000000c00d2d1010040c00a080000000000000c00dcd1010040c00a08000000 *0000000c00e7d1010074c00a080000000000000c00f1d1010074c00a080000000000000c00fcd1 *0100acc00a080000000000000c0006d20100acc00a080000000000000c000fd20100ccc00a0800 *00000000000c0019d20100ccc00a080000000000000c0024d2010000c10a080000000000000c00 *2ed2010000c10a080000000000000c0039d2010038c10a080000000000000c0043d2010038c10a *080000000000000c004cd2010058c10a080000000000000c0056d2010058c10a08000000000000 *0c0061d201008cc10a080000000000000c006bd201008cc10a080000000000000c0076d20100c4 *c10a080000000000000c0080d20100c4c10a080000000000000c0089d20100e4c10a0800000000 *00000c0093d20100e4c10a080000000000000c009ed2010018c20a080000000000000c00a8d201 *0018c20a080000000000000c00b3d2010050c20a080000000000000c00bdd2010050c20a080000 *000000000c00c6d2010070c20a080000000000000c00d0d2010070c20a080000000000000c00db *d20100a4c20a080000000000000c00e5d20100a4c20a080000000000000c00f0d20100dcc20a08 *0000000000000c00fad20100dcc20a080000000000000c0003d30100fcc20a080000000000000c *000dd30100fcc20a080000000000000c0018d3010030c30a080000000000000c0022d3010030c3 *0a080000000000000c002dd3010068c30a080000000000000c0037d3010068c30a080000000000 *000c0040d3010088c30a080000000000000c004ad3010088c30a080000000000000c0055d30100 *bcc30a080000000000000c005fd30100bcc30a080000000000000c006ad30100f4c30a08000000 *0000000c0074d30100f4c30a080000000000000c007dd3010014c40a080000000000000c0087d3 *010014c40a080000000000000c0092d3010048c40a080000000000000c009cd3010048c40a0800 *00000000000c00a7d3010080c40a080000000000000c00b1d3010080c40a080000000000000c00 *bad30100a0c40a080000000000000c00c4d30100a0c40a080000000000000c00cfd30100d4c40a *080000000000000c00d9d30100d4c40a080000000000000c00e4d301000cc50a08000000000000 *0c00eed301000cc50a080000000000000c00f7d301002cc50a080000000000000c0001d401002c *c50a080000000000000c000cd4010060c50a080000000000000c0016d4010060c50a0800000000 *00000c0021d4010098c50a080000000000000c002bd4010098c50a080000000000000c0034d401 *00b8c50a080000000000000c003ed40100b8c50a080000000000000c0049d40100ecc50a080000 *000000000c0053d40100ecc50a080000000000000c005ed4010024c60a080000000000000c0068 *d4010024c60a080000000000000c0071d4010044c60a080000000000000c007bd4010044c60a08 *0000000000000c0086d4010078c60a080000000000000c0090d4010078c60a080000000000000c *009bd40100b0c60a080000000000000c00a5d40100b0c60a080000000000000c00aed40100d0c6 *0a080000000000000c00b8d40100d0c60a080000000000000c00c3d4010004c70a080000000000 *000c00cdd4010004c70a080000000000000c00d8d401003cc70a080000000000000c00e2d40100 *3cc70a080000000000000c00ebd401005cc70a080000000000000c00f5d401005cc70a08000000 *0000000c0000d5010090c70a080000000000000c000ad5010090c70a080000000000000c0015d5 *0100c8c70a080000000000000c001fd50100c8c70a080000000000000c0028d50100e8c70a0800 *00000000000c0032d50100e8c70a080000000000000c003dd501001cc80a080000000000000c00 *47d501001cc80a080000000000000c0052d5010054c80a080000000000000c005cd5010054c80a *080000000000000c0065d5010074c80a080000000000000c006fd5010074c80a08000000000000 *0c007ad50100a8c80a080000000000000c0084d50100a8c80a080000000000000c008fd50100e0 *c80a080000000000000c0099d50100e0c80a080000000000000c00a2d5010000c90a0800000000 *00000c00acd5010000c90a080000000000000c00b7d5010034c90a080000000000000c00c1d501 *0034c90a080000000000000c00ccd501006cc90a080000000000000c00d6d501006cc90a080000 *000000000c00dfd501008cc90a080000000000000c00e9d501008cc90a080000000000000c00f4 *d50100c0c90a080000000000000c00fed50100c0c90a080000000000000c0009d60100f8c90a08 *0000000000000c0013d60100f8c90a080000000000000c001cd6010018ca0a080000000000000c *0026d6010018ca0a080000000000000c0031d601004cca0a080000000000000c003bd601004cca *0a080000000000000c0046d6010084ca0a080000000000000c0050d6010084ca0a080000000000 *000c0059d60100a4ca0a080000000000000c0063d60100a4ca0a080000000000000c006ed60100 *d8ca0a080000000000000c0078d60100d8ca0a080000000000000c0083d6010010cb0a08000000 *0000000c008dd6010010cb0a080000000000000c0096d6010030cb0a080000000000000c00a0d6 *010030cb0a080000000000000c00abd6010064cb0a080000000000000c00b5d6010064cb0a0800 *00000000000c00c0d601009ccb0a080000000000000c00cad601009ccb0a080000000000000c00 *d3d60100bccb0a080000000000000c00ddd60100bccb0a080000000000000c00e8d60100f0cb0a *080000000000000c00f2d60100f0cb0a080000000000000c00fdd6010028cc0a08000000000000 *0c0007d7010028cc0a080000000000000c0010d7010048cc0a080000000000000c001ad7010048 *cc0a080000000000000c0025d701007ccc0a080000000000000c002fd701007ccc0a0800000000 *00000c003ad70100b4cc0a080000000000000c0044d70100b4cc0a080000000000000c004dd701 *00d4cc0a080000000000000c0057d70100d4cc0a080000000000000c0062d7010008cd0a080000 *000000000c006cd7010008cd0a080000000000000c0077d7010040cd0a080000000000000c0081 *d7010040cd0a080000000000000c008ad7010060cd0a080000000000000c0094d7010060cd0a08 *0000000000000c009fd7010094cd0a080000000000000c00a9d7010094cd0a080000000000000c *00b4d70100cccd0a080000000000000c00bed70100cccd0a080000000000000c00c7d70100eccd *0a080000000000000c00d1d70100eccd0a080000000000000c00dcd7010020ce0a080000000000 *000c00e6d7010020ce0a080000000000000c00f1d7010058ce0a080000000000000c00fbd70100 *58ce0a080000000000000c0004d8010078ce0a080000000000000c000ed8010078ce0a08000000 *0000000c0019d80100acce0a080000000000000c0023d80100acce0a080000000000000c002ed8 *0100e4ce0a080000000000000c0038d80100e4ce0a080000000000000c0041d8010004cf0a0800 *00000000000c004bd8010004cf0a080000000000000c0056d8010038cf0a080000000000000c00 *60d8010038cf0a080000000000000c006bd8010074cf0a080000000000000c0076d8010018da0a *080000000000000c007fd801007cc9110800000000000010008cd801002cda0a08000000000000 *0c0096d801002cda0a080000000000000c00a1d8010084da0a080000000000000c00aad801008c *c911080000000000001000b7d8010064e70a080000000000000c00c1d8010098da0a0800000000 *00000c00cbd8010098da0a080000000000000c00d6d80100d4da0a080000000000000c00e0d801 *00d4da0a080000000000000c00ebd8010010db0a080000000000000c00f5d8010010db0a080000 *000000000c0000d901004cdb0a080000000000000c000ad901004cdb0a080000000000000c0015 *d9010088db0a080000000000000c001fd9010088db0a080000000000000c002ad90100c4db0a08 *0000000000000c0034d90100c4db0a080000000000000c003fd9010000dc0a080000000000000c *0049d9010000dc0a080000000000000c0054d901003cdc0a080000000000000c005ed901003cdc *0a080000000000000c0069d9010078dc0a080000000000000c0073d9010078dc0a080000000000 *000c007ed90100b4dc0a080000000000000c0088d90100b4dc0a080000000000000c0093d90100 *f0dc0a080000000000000c009dd90100f0dc0a080000000000000c00a8d901002cdd0a08000000 *0000000c00b2d901002cdd0a080000000000000c00bdd9010068dd0a080000000000000c00c7d9 *010068dd0a080000000000000c00d2d90100a4dd0a080000000000000c00dcd90100a4dd0a0800 *00000000000c00e7d90100e0dd0a080000000000000c00f1d90100e0dd0a080000000000000c00 *fcd901001cde0a080000000000000c0006da01001cde0a080000000000000c0011da010058de0a *080000000000000c001bda010058de0a080000000000000c0026da010094de0a08000000000000 *0c0030da010094de0a080000000000000c003bda0100d0de0a080000000000000c0045da0100d0 *de0a080000000000000c0050da01000cdf0a080000000000000c005ada01000cdf0a0800000000 *00000c0065da010048df0a080000000000000c006fda010048df0a080000000000000c007ada01 *0084df0a080000000000000c0084da010084df0a080000000000000c008fda0100c0df0a080000 *000000000c0099da0100c0df0a080000000000000c00a4da0100fcdf0a080000000000000c00ae *da0100fcdf0a080000000000000c00b9da010038e00a080000000000000c00c3da010038e00a08 *0000000000000c00ceda010074e00a080000000000000c00d8da010074e00a080000000000000c *00e3da0100b0e00a080000000000000c00edda0100b0e00a080000000000000c00f8da0100ece0 *0a080000000000000c0002db0100ece00a080000000000000c000ddb010028e10a080000000000 *000c0017db010028e10a080000000000000c0022db010064e10a080000000000000c002cdb0100 *64e10a080000000000000c0037db0100a0e10a080000000000000c0041db0100a0e10a08000000 *0000000c004cdb0100dce10a080000000000000c0056db0100dce10a080000000000000c005fdb *010064e70a080000000000000c006adb01000cca1108000000000000100077db010074e70a0800 *00000000000c0080db010014ca110800000000000010008ddb010088e70a080000000000000c00 *97db010088e70a080000000000000c00a2db0100e0e70a080000000000000c00abdb010024ca11 *080000000000001000b8db0100f4e70a080000000000000c00c2db0100f4e70a08000000000000 *0c00cddb01004ce80a080000000000000c00d6db010034ca11080000000000001000e3db0100b4 *e80a080000000000000c00eddb010058e80a080000000000000c00f7db010058e80a0800000000 *00000c0000dc010084e80a080000000000000c000adc010084e80a080000000000000c0013dc01 *00b4e80a080000000000000c001edc0100e0e80a080000000000000c0027dc01003cca11080000 *00000000100034dc01002ce90a080000000000000c003edc0100f4e80a080000000000000c0048 *dc0100f4e80a080000000000000c0053dc01002ce90a080000000000000c005edc010068e90a08 *0000000000000c0067dc010054ca1108000000000000100074dc010080e90a080000000000000c *007edc010080e90a080000000000000c0089dc0100e0e90a080000000000000c0092dc010064ca *110800000000000010009fdc0100f4e90a080000000000000c00a9dc0100f4e90a080000000000 *000c00b4dc010068ea0a080000000000000c00bedc010068ea0a080000000000000c00c9dc0100 *a4ea0a080000000000000c00d3dc0100a4ea0a080000000000000c00dedc0100e0ea0a08000000 *0000000c00e8dc0100e0ea0a080000000000000c00f3dc01001ceb0a080000000000000c00fddc *01001ceb0a080000000000000c0008dd010058eb0a080000000000000c0012dd010058eb0a0800 *00000000000c001ddd010094eb0a080000000000000c0027dd010094eb0a080000000000000c00 *32dd0100d0eb0a080000000000000c003cdd0100d0eb0a080000000000000c0047dd01000cec0a *080000000000000c0051dd01000cec0a080000000000000c005cdd010048ec0a08000000000000 *0c0066dd010048ec0a080000000000000c0071dd010084ec0a080000000000000c007bdd010084 *ec0a080000000000000c0086dd0100c0ec0a080000000000000c0090dd0100c0ec0a0800000000 *00000c009bdd0100fcec0a080000000000000c00a5dd0100fcec0a080000000000000c00b0dd01 *0038ed0a080000000000000c00badd010038ed0a080000000000000c00c5dd010074ed0a080000 *000000000c00cfdd010074ed0a080000000000000c00dadd0100b0ed0a080000000000000c00e4 *dd0100b0ed0a080000000000000c00efdd0100eced0a080000000000000c00f9dd0100eced0a08 *0000000000000c0004de010028ee0a080000000000000c000ede010028ee0a080000000000000c *0019de010064ee0a080000000000000c0023de010064ee0a080000000000000c002ede0100a0ee *0a080000000000000c0038de0100a0ee0a080000000000000c0043de0100dcee0a080000000000 *000c004dde0100dcee0a080000000000000c0058de010018ef0a080000000000000c0062de0100 *18ef0a080000000000000c006dde010054ef0a080000000000000c0077de010054ef0a08000000 *0000000c0082de010090ef0a080000000000000c008cde010090ef0a080000000000000c0097de *0100ccef0a080000000000000c00a1de0100ccef0a080000000000000c00acde010008f00a0800 *00000000000c00b6de010008f00a080000000000000c00c1de010044f00a080000000000000c00 *cbde010044f00a080000000000000c00d6de010080f00a080000000000000c00e0de010080f00a *080000000000000c00e9de010088f60a080000000000000c00f3de010088f60a08000000000000 *0c00fede0100a0f60a080000000000000c0008df0100a0f60a080000000000000c0013df0100f0 *f60a080000000000000c001ddf0100f0f60a080000000000000c0028df0100b0f70a0800000000 *00000c0032df0100b0f70a080000000000000c003ddf0100ecf70a080000000000000c0047df01 *00ecf70a080000000000000c0052df010028f80a080000000000000c005cdf010028f80a080000 *000000000c0067df010064f80a080000000000000c0071df010064f80a080000000000000c007c *df0100a0f80a080000000000000c0086df0100a0f80a080000000000000c0091df0100dcf80a08 *0000000000000c009bdf0100dcf80a080000000000000c00a6df010018f90a080000000000000c *00b0df010018f90a080000000000000c00bbdf010054f90a080000000000000c00c5df010054f9 *0a080000000000000c00d0df010090f90a080000000000000c00dadf010090f90a080000000000 *000c00e5df0100ccf90a080000000000000c00efdf0100ccf90a080000000000000c00fadf0100 *08fa0a080000000000000c0004e0010008fa0a080000000000000c000fe0010044fa0a08000000 *0000000c0019e0010044fa0a080000000000000c0024e0010080fa0a080000000000000c002ee0 *010080fa0a080000000000000c0039e00100bcfa0a080000000000000c0043e00100bcfa0a0800 *00000000000c004ee00100f8fa0a080000000000000c0058e00100f8fa0a080000000000000c00 *63e0010034fb0a080000000000000c006de0010034fb0a080000000000000c0078e0010070fb0a *080000000000000c0082e0010070fb0a080000000000000c008be001005cff0a08000000000000 *0c0095e001005cff0a080000000000000c00a0e0010074ff0a080000000000000c00aae0010074 *ff0a080000000000000c00b5e00100c4ff0a080000000000000c00bfe00100c4ff0a0800000000 *00000c00cae0010084000b080000000000000c00d4e0010084000b080000000000000c00dfe001 *00c0000b080000000000000c00e9e00100c0000b080000000000000c00f4e00100fc000b080000 *000000000c00fee00100fc000b080000000000000c0007e101008c020b080000000000000c0011 *e101008c020b080000000000000c001ce10100a4020b080000000000000c0026e10100a4020b08 *0000000000000c0031e10100f4020b080000000000000c003be10100f4020b080000000000000c *0046e1010098030b080000000000000c004fe1010094cb110800000000000010005ce10100ac03 *0b080000000000000c0066e10100ac030b080000000000000c0071e1010004040b080000000000 *000c007ae101000c040b080000000000000c0083e1010014040b080000000000000c008ce10100 *bccb1108000000000000100099e10100cccb11080000000000001000a6e10100dccb1108000000 *0000001000b3e1010028040b080000000000000c00bde1010028040b080000000000000c00c8e1 *01008c040b080000000000000c00d2e101008c040b080000000000000c00dde10100f0040b0800 *00000000000c00e7e10100f0040b080000000000000c00f2e1010048050b080000000000000c00 *fde1010054050b080000000000000c0008e2010060050b080000000000000c0013e2010080050b *080000000000000c001de2010080050b080000000000000c0028e20100a0050b08000000000000 *0c0032e20100a0050b080000000000000c003de20100ac050b080000000000000c0048e20100b8 *050b080000000000000c0053e20100d8050b080000000000000c005de20100d8050b0800000000 *00000c0068e20100e4050b080000000000000c0073e20100f0050b080000000000000c007ee201 *0010060b080000000000000c0088e2010010060b080000000000000c0093e2010030060b080000 *000000000c009de2010030060b080000000000000c00a8e2010050060b080000000000000c00b2 *e2010050060b080000000000000c00bde201005c060b080000000000000c00c8e2010068060b08 *0000000000000c00d3e2010088060b080000000000000c00dde2010088060b080000000000000c *00e8e2010094060b080000000000000c00f3e20100a0060b080000000000000c00fee20100c006 *0b080000000000000c0008e30100c0060b080000000000000c0013e30100e0060b080000000000 *000c001de30100e0060b080000000000000c0028e30100ec060b080000000000000c0033e30100 *f8060b080000000000000c003ee3010018070b080000000000000c0048e3010018070b08000000 *0000000c0053e3010024070b080000000000000c005ee3010030070b080000000000000c0069e3 *010050070b080000000000000c0073e3010050070b080000000000000c007ee3010070070b0800 *00000000000c0088e3010070070b080000000000000c0093e3010090070b080000000000000c00 *9de3010090070b080000000000000c00a8e30100b0070b080000000000000c00b2e30100b0070b *080000000000000c00bde30100bc070b080000000000000c00c8e30100c8070b08000000000000 *0c00d3e30100e8070b080000000000000c00dde30100e8070b080000000000000c00e8e30100f4 *070b080000000000000c00f3e3010000080b080000000000000c00fee3010020080b0800000000 *00000c0008e4010020080b080000000000000c0013e4010040080b080000000000000c001de401 *0040080b080000000000000c0028e401004c080b080000000000000c0033e4010058080b080000 *000000000c003ee4010078080b080000000000000c0048e4010078080b080000000000000c0053 *e4010084080b080000000000000c005ee4010090080b080000000000000c0069e40100b0080b08 *0000000000000c0073e40100b0080b080000000000000c007ee40100d0080b080000000000000c *0088e40100d0080b080000000000000c0093e40100f0080b080000000000000c009de40100f008 *0b080000000000000c00a8e40100fc080b080000000000000c00b3e4010008090b080000000000 *000c00bee4010028090b080000000000000c00c8e4010028090b080000000000000c00d3e40100 *34090b080000000000000c00dee4010040090b080000000000000c00e9e4010060090b08000000 *0000000c00f3e4010060090b080000000000000c00fee4010080090b080000000000000c0008e5 *010080090b080000000000000c0013e501008c090b080000000000000c001ee5010098090b0800 *00000000000c0029e50100b8090b080000000000000c0033e50100b8090b080000000000000c00 *3ee50100c4090b080000000000000c0049e50100d0090b080000000000000c0054e50100f0090b *080000000000000c005ee50100f0090b080000000000000c0069e50100100a0b08000000000000 *0c0073e50100100a0b080000000000000c007ee50100300a0b080000000000000c0088e5010030 *0a0b080000000000000c0093e50100500a0b080000000000000c009de50100500a0b0800000000 *00000c00a8e50100700a0b080000000000000c00b2e50100900a0b080000000000000c00bce501 *00900a0b080000000000000c00c5e501002c190b080000000000000c00cfe501002c190b080000 *000000000c00dae5010064190b080000000000000c00e4e5010064190b080000000000000c00ef *e5010098190b080000000000000c00f9e5010098190b080000000000000c0004e60100c8190b08 *0000000000000c000ee60100c8190b080000000000000c0019e60100a01a0b080000000000000c *0023e60100a01a0b080000000000000c002ee60100dc1a0b080000000000000c0038e60100dc1a *0b080000000000000c0041e601001c1b0b080000000000000c004be601001c1b0b080000000000 *000c0056e60100501b0b080000000000000c0060e60100501b0b080000000000000c0069e60100 *901b0b080000000000000c0073e60100901b0b080000000000000c007ee60100201c0b08000000 *0000000c0088e60100201c0b080000000000000c0091e60100641c0b080000000000000c009be6 *0100641c0b080000000000000c00a6e60100981c0b080000000000000c00b0e60100981c0b0800 *00000000000c00bbe60100ec1c0b080000000000000c00c5e60100ec1c0b080000000000000c00 *d0e60100a81d0b080000000000000c00dae60100a81d0b080000000000000c00e5e601005c1e0b *080000000000000c00efe601005c1e0b080000000000000c00fae60100181f0b08000000000000 *0c0004e70100181f0b080000000000000c000de701002c1f0b080000000000000c0017e701002c *1f0b080000000000000c0022e70100601f0b080000000000000c002ce70100601f0b0800000000 *00000c0037e70100bc1f0b080000000000000c0041e70100bc1f0b080000000000000c004ae701 *0010200b080000000000000c0054e7010010200b080000000000000c005fe7010040200b080000 *000000000c0069e7010040200b080000000000000c0072e7010060200b080000000000000c007c *e7010060200b080000000000000c0087e7010094200b080000000000000c0091e7010094200b08 *0000000000000c009ce70100e8200b080000000000000c00a6e70100e8200b080000000000000c *00afe7010034210b080000000000000c00b9e7010034210b080000000000000c00c4e701007421 *0b080000000000000c00cee7010074210b080000000000000c00d7e70100c0210b080000000000 *000c00e1e70100c0210b080000000000000c00ece70100f0210b080000000000000c00f6e70100 *f0210b080000000000000c00ffe70100ac220b080000000000000c0009e80100ac220b08000000 *0000000c0014e8010048230b080000000000000c001ee8010048230b080000000000000c0027e8 *01008c230b080000000000000c0031e801008c230b080000000000000c003ce80100cc230b0800 *00000000000c0046e80100cc230b080000000000000c004fe8010018240b080000000000000c00 *59e8010018240b080000000000000c0064e8010044240b080000000000000c006ee8010044240b *080000000000000c0077e8010064240b080000000000000c0081e8010064240b08000000000000 *0c008ce8010098240b080000000000000c0096e8010098240b080000000000000c00a1e80100ec *240b080000000000000c00abe80100ec240b080000000000000c00b4e8010038250b0800000000 *00000c00bee8010038250b080000000000000c00c9e8010070250b080000000000000c00d3e801 *0070250b080000000000000c00dce80100b8250b080000000000000c00e6e80100b8250b080000 *000000000c00f1e80100e0250b080000000000000c00fbe80100e0250b080000000000000c0006 *e9010010260b080000000000000c0010e9010010260b080000000000000c0019e9010054260b08 *0000000000000c0023e9010054260b080000000000000c002ee9010088260b080000000000000c *0038e9010088260b080000000000000c0043e901002c270b080000000000000c004ce9010064cd *1108000000000000100059e901006c270b080000000000000c0063e9010040270b080000000000 *000c006de9010040270b080000000000000c0076e901006c270b080000000000000c0081e90100 *0c280b080000000000000c008be901000c280b080000000000000c0096e901003c280b08000000 *0000000c00a1e901004c280b080000000000000c00ace9010090280b080000000000000c00b7e9 *01000c290b080000000000000c00c2e90100b4280b080000000000000c00cce90100bc280b0800 *00000000000c00d6e90100bc280b080000000000000c00dfe90100d4280b080000000000000c00 *eae9010000290b080000000000000c00f4e901000c290b080000000000000c00fee901002c290b *080000000000000c0009ea01003c290b080000000000000c0014ea0100182a0b08000000000000 *0c001fea010050290b080000000000000c002aea0100a8290b080000000000000c0034ea0100b4 *290b080000000000000c003eea0100b4290b080000000000000c0047ea0100dc290b0800000000 *00000c0052ea0100082a0b080000000000000c005cea0100182a0b080000000000000c0066ea01 *00382a0b080000000000000c0071ea0100782a0b080000000000000c007cea0100a42a0b080000 *000000000c0087ea0100f82a0b080000000000000c0091ea0100f82a0b080000000000000c009c *ea0100202b0b080000000000000c00a6ea0100202b0b080000000000000c00b1ea0100542b0b08 *0000000000000c00bcea0100802b0b080000000000000c00c7ea0100d42b0b080000000000000c *00d1ea0100d42b0b080000000000000c00dcea0100fc2b0b080000000000000c00e6ea01007ccd *11080000000000001000f3ea0100642c0b080000000000000c00fcea010084cd11080000000000 *00100009eb0100782c0b080000000000000c0013eb0100782c0b080000000000000c001eeb0100 *ec2c0b080000000000000c0028eb0100ec2c0b080000000000000c0033eb01001c2d0b08000000 *0000000c003deb01001c2d0b080000000000000c0048eb0100c02d0b080000000000000c0051eb *0100a4cd110800000000000010005eeb0100d42d0b080000000000000c0068eb0100d42d0b0800 *00000000000c0073eb0100482e0b080000000000000c007deb0100482e0b080000000000000c00 *88eb0100782e0b080000000000000c0092eb0100782e0b080000000000000c009deb01001c2f0b *080000000000000c00a6eb0100c4cd11080000000000001000b3eb0100302f0b08000000000000 *0c00bdeb0100302f0b080000000000000c00c8eb0100882f0b080000000000000c00d1eb0100d4 *cd11080000000000001000deeb01009c2f0b080000000000000c00e8eb01009c2f0b0800000000 *00000c00f3eb0100f42f0b080000000000000c00fceb0100e4cd1108000000000000100009ec01 *0008300b080000000000000c0013ec010008300b080000000000000c001eec010060300b080000 *000000000c0027ec0100f4cd1108000000000000100034ec010074300b080000000000000c003e *ec010074300b080000000000000c0049ec0100cc300b080000000000000c0052ec010004ce1108 *00000000000010005fec0100e0300b080000000000000c0069ec0100e0300b080000000000000c *0074ec010060310b080000000000000c007eec010060310b080000000000000c0089ec01009c31 *0b080000000000000c0093ec01009c310b080000000000000c009eec0100ec310b080000000000 *000c00a8ec0100ec310b080000000000000c00b3ec010024320b080000000000000c00bdec0100 *24320b080000000000000c00c8ec010080320b080000000000000c00d2ec010080320b08000000 *0000000c00ddec010060330b080000000000000c00e7ec010060330b080000000000000c00f0ec *0100a8330b080000000000000c00faec0100a8330b080000000000000c0005ed0100d8330b0800 *00000000000c000fed0100d8330b080000000000000c001aed010014340b080000000000000c00 *24ed010014340b080000000000000c002fed010064340b080000000000000c0039ed010064340b *080000000000000c0044ed01009c340b080000000000000c004eed01009c340b08000000000000 *0c0059ed0100f8340b080000000000000c0063ed0100f8340b080000000000000c006eed010044 *350b080000000000000c0078ed010044350b080000000000000c0081ed010094350b0800000000 *00000c008bed010094350b080000000000000c0096ed0100bc350b080000000000000c00a0ed01 *00bc350b080000000000000c00abed0100f4350b080000000000000c00b5ed0100f4350b080000 *000000000c00beed010038360b080000000000000c00c8ed010038360b080000000000000c00d3 *ed01006c360b080000000000000c00dded01006c360b080000000000000c00e8ed010034370b08 *0000000000000c00f2ed010034370b080000000000000c00fbed010058370b080000000000000c *0005ee010058370b080000000000000c0010ee010090370b080000000000000c001aee01009037 *0b080000000000000c0025ee0100c4370b080000000000000c002fee0100c4370b080000000000 *000c003aee010018380b080000000000000c0044ee010018380b080000000000000c004fee0100 *74380b080000000000000c0059ee010074380b080000000000000c0064ee010024390b08000000 *0000000c006dee010044ce110800000000000010007aee0100843f0b080000000000000c0084ee *010038390b080000000000000c008fee010050390b080000000000000c0099ee010050390b0800 *00000000000c00a4ee0100583f0b080000000000000c00afee010078390b080000000000000c00 *baee0100c8390b080000000000000c00c5ee0100283a0b080000000000000c00cfee0100283a0b *080000000000000c00d8ee01004c3a0b080000000000000c00e2ee01004c3a0b08000000000000 *0c00edee0100803a0b080000000000000c00f7ee0100803a0b080000000000000c0000ef0100a4 *3a0b080000000000000c000aef0100a43a0b080000000000000c0015ef0100d03a0b0800000000 *00000c0020ef0100343b0b080000000000000c002aef0100343b0b080000000000000c0035ef01 *00703b0b080000000000000c003fef0100703b0b080000000000000c004aef0100d03b0b080000 *000000000c0054ef0100d03b0b080000000000000c005fef0100283c0b080000000000000c0069 *ef0100283c0b080000000000000c0072ef0100983c0b080000000000000c007def0100a83c0b08 *0000000000000c0087ef0100a83c0b080000000000000c0092ef0100083d0b080000000000000c *009cef0100083d0b080000000000000c00a7ef0100603d0b080000000000000c00b1ef0100603d *0b080000000000000c00baef0100d03d0b080000000000000c00c5ef0100fc3d0b080000000000 *000c00cfef0100fc3d0b080000000000000c00daef0100443e0b080000000000000c00e4ef0100 *443e0b080000000000000c00efef0100ac3e0b080000000000000c00f9ef0100b83e0b08000000 *0000000c0003f00100b83e0b080000000000000c000cf00100c43e0b080000000000000c0017f0 *0100f03e0b080000000000000c0021f00100fc3e0b080000000000000c002bf00100fc3e0b0800 *00000000000c0034f001001c3f0b080000000000000c003ff00100483f0b080000000000000c00 *49f00100583f0b080000000000000c0053f00100843f0b080000000000000c005ef00100dc3f0b *080000000000000c0067f0010054ce1108000000000000100074f00100f03f0b08000000000000 *0c007ef00100f03f0b080000000000000c0089f0010048400b080000000000000c0092f0010064 *ce110800000000000010009ff001005c400b080000000000000c00a9f001005c400b0800000000 *00000c00b4f00100b4400b080000000000000c00bdf0010074ce11080000000000001000caf001 *00c8400b080000000000000c00d4f00100c8400b080000000000000c00dff0010020410b080000 *000000000c00e8f0010084ce11080000000000001000f5f0010040410b080000000000000c00ff *f001002c410b080000000000000c0009f101002c410b080000000000000c0012f1010040410b08 *0000000000000c001df1010094ce110800000000000010002af10100a0410b080000000000000c *0034f10100a0410b080000000000000c003ff1010098ce110800000000000010004cf10100f041 *0b080000000000000c0056f10100f0410b080000000000000c0061f101009cce11080000000000 *0010006ef101007c420b080000000000000c0078f1010020420b080000000000000c0083f10100 *4c420b080000000000000c008ef1010070420b080000000000000c0098f101007c420b08000000 *0000000c00a3f1010088420b080000000000000c00acf10100a0ce11080000000000001000b9f1 *0100a44b0b080000000000000c00c3f10100b4420b080000000000000c00cdf10100b4420b0800 *00000000000c00d6f10100d4420b080000000000000c00e0f10100d4420b080000000000000c00 *ebf101000c430b080000000000000c00f5f101000c430b080000000000000c0000f2010060430b *080000000000000c000af2010060430b080000000000000c0013f2010080430b08000000000000 *0c001df2010080430b080000000000000c0028f20100b8430b080000000000000c0032f20100b8 *430b080000000000000c003df201001c440b080000000000000c0047f201001c440b0800000000 *00000c0052f2010058440b080000000000000c005cf2010058440b080000000000000c0067f201 *00a4440b080000000000000c0071f20100a4440b080000000000000c007cf2010004450b080000 *000000000c0086f2010004450b080000000000000c008ff2010028450b080000000000000c0099 *f2010028450b080000000000000c00a4f2010054450b080000000000000c00aff20100a4450b08 *0000000000000c00b9f20100a4450b080000000000000c00c2f20100c4450b080000000000000c *00ccf20100c4450b080000000000000c00d7f20100fc450b080000000000000c00e1f20100fc45 *0b080000000000000c00ecf2010050460b080000000000000c00f6f2010050460b080000000000 *000c00fff2010070460b080000000000000c0009f3010070460b080000000000000c0014f30100 *a8460b080000000000000c001ef30100a8460b080000000000000c0029f301000c470b08000000 *0000000c0033f301000c470b080000000000000c003ef3010048470b080000000000000c0048f3 *010048470b080000000000000c0053f3010094470b080000000000000c005df3010094470b0800 *00000000000c0068f30100f4470b080000000000000c0072f30100f4470b080000000000000c00 *7bf3010018480b080000000000000c0085f3010018480b080000000000000c0090f3010044480b *080000000000000c009bf3010094480b080000000000000c00a5f3010094480b08000000000000 *0c00aef30100b4480b080000000000000c00b8f30100b4480b080000000000000c00c3f30100ec *480b080000000000000c00cdf30100ec480b080000000000000c00d8f3010040490b0800000000 *00000c00e2f3010040490b080000000000000c00ebf3010060490b080000000000000c00f5f301 *0060490b080000000000000c0000f4010098490b080000000000000c000af4010098490b080000 *000000000c0015f40100fc490b080000000000000c001ff40100fc490b080000000000000c002a *f40100384a0b080000000000000c0034f40100384a0b080000000000000c003ff40100844a0b08 *0000000000000c0049f40100844a0b080000000000000c0054f40100e44a0b080000000000000c *005ef40100e44a0b080000000000000c0067f40100084b0b080000000000000c0071f40100084b *0b080000000000000c007cf40100344b0b080000000000000c0087f40100944b0b080000000000 *000c0091f40100a44b0b080000000000000c009cf40100a8ce11080000000000001000a9f40100 *c44b0b080000000000000c00b2f40100b0ce11080000000000001000bff40100d84b0b08000000 *0000000c00c9f40100d84b0b080000000000000c00d4f40100304c0b080000000000000c00ddf4 *0100c0ce11080000000000001000eaf40100444c0b080000000000000c00f4f40100444c0b0800 *00000000000c00fff40100b44c0b080000000000000c0009f50100b44c0b080000000000000c00 *14f50100144d0b080000000000000c001ef50100144d0b080000000000000c0029f50100504d0b *080000000000000c0033f50100504d0b080000000000000c003ef50100ac4d0b08000000000000 *0c0048f50100ac4d0b080000000000000c0051f50100c04d0b080000000000000c005bf50100c0 *4d0b080000000000000c0066f50100f84d0b080000000000000c0070f50100f84d0b0800000000 *00000c007bf501005c4e0b080000000000000c0085f501005c4e0b080000000000000c0090f501 *008c4e0b080000000000000c009bf50100e04e0b080000000000000c00a5f50100e04e0b080000 *000000000c00b0f501001c4f0b080000000000000c00baf501001c4f0b080000000000000c00c5 *f501006c4f0b080000000000000c00cff501006c4f0b080000000000000c00daf50100a84f0b08 *0000000000000c00e4f50100a84f0b080000000000000c00eff5010004500b080000000000000c *00f9f5010004500b080000000000000c0002f6010018500b080000000000000c000cf601001850 *0b080000000000000c0017f6010050500b080000000000000c0021f6010050500b080000000000 *000c002cf60100b4500b080000000000000c0036f60100b4500b080000000000000c0041f60100 *e4500b080000000000000c004cf601002c510b080000000000000c0057f6010040510b08000000 *0000000c0061f6010040510b080000000000000c006cf601007c510b080000000000000c0076f6 *01007c510b080000000000000c0081f60100c8510b080000000000000c008bf60100c8510b0800 *00000000000c0094f60100dc510b080000000000000c009ef60100dc510b080000000000000c00 *a9f6010014520b080000000000000c00b3f6010014520b080000000000000c00bef6010078520b *080000000000000c00c8f6010078520b080000000000000c00d3f60100a8520b08000000000000 *0c00def6010004530b080000000000000c00e8f6010004530b080000000000000c00f3f6010034 *530b080000000000000c00fdf6010090530b080000000000000c0007f7010090530b0800000000 *00000c0010f70100b4530b080000000000000c001af70100b4530b080000000000000c0025f701 *00d8530b080000000000000c0030f70100e0530b080000000000000c003bf7010050540b080000 *000000000c0045f701005c540b080000000000000c004ff701005c540b080000000000000c0058 *f7010084540b080000000000000c0062f7010084540b080000000000000c006df70100dc540b08 *0000000000000c0077f70100dc540b080000000000000c0082f7010018550b080000000000000c *008cf7010018550b080000000000000c0097f7010068550b080000000000000c00a1f701006855 *0b080000000000000c00acf70100a0550b080000000000000c00b6f70100a0550b080000000000 *000c00c1f70100fc550b080000000000000c00cbf70100fc550b080000000000000c00d6f70100 *48560b080000000000000c00e1f7010080560b080000000000000c00ecf70100cc560b08000000 *0000000c00f6f701004c570b080000000000000c0000f801004c570b080000000000000c000bf8 *010080570b080000000000000c0015f8010080570b080000000000000c0020f80100e8570b0800 *00000000000c002af80100e8570b080000000000000c0033f80100fc570b080000000000000c00 *3df80100fc570b080000000000000c0048f8010034580b080000000000000c0052f8010034580b *080000000000000c005df8010098580b080000000000000c0067f8010098580b08000000000000 *0c0070f8010014590b080000000000000c007af8010014590b080000000000000c0085f8010048 *590b080000000000000c008ff8010048590b080000000000000c009af8010098590b0800000000 *00000c00a4f8010098590b080000000000000c00aff80100cc590b080000000000000c00b9f801 *00cc590b080000000000000c00c2f80100505a0b080000000000000c00cdf80100605a0b080000 *000000000c00d8f80100685a0b080000000000000c00e3f80100b05a0b080000000000000c00ed *f80100bc5a0b080000000000000c00f7f80100bc5a0b080000000000000c0002f90100005b0b08 *0000000000000c000cf90100005b0b080000000000000c0017f90100445b0b080000000000000c *0022f90100a85b0b080000000000000c002cf90100b85b0b080000000000000c0036f90100b85b *0b080000000000000c0041f90100e45b0b080000000000000c004bf90100e45b0b080000000000 *000c0056f90100185c0b080000000000000c0060f90100185c0b080000000000000c006bf90100 *b45c0b080000000000000c0074f901000ccf1108000000000000100081f90100c85c0b08000000 *0000000c008bf90100c85c0b080000000000000c0096f901004c5d0b080000000000000c00a0f9 *01004c5d0b080000000000000c00abf90100845d0b080000000000000c00b5f90100845d0b0800 *00000000000c00c0f90100c05d0b080000000000000c00caf90100c05d0b080000000000000c00 *d5f901000c5e0b080000000000000c00dff901000c5e0b080000000000000c00eaf901006c5e0b *080000000000000c00f4f901006c5e0b080000000000000c00fff901009c5e0b08000000000000 *0c000afa0100e85e0b080000000000000c0014fa0100e85e0b080000000000000c001ffa01002c *5f0b080000000000000c0029fa01002c5f0b080000000000000c0034fa0100685f0b0800000000 *00000c003efa0100685f0b080000000000000c0049fa0100b45f0b080000000000000c0053fa01 *00b45f0b080000000000000c005efa010018600b080000000000000c0068fa010018600b080000 *000000000c0073fa010048600b080000000000000c007efa0100a4600b080000000000000c0088 *fa0100b4600b080000000000000c0092fa0100b4600b080000000000000c009dfa0100e4600b08 *0000000000000c00a7fa0100e4600b080000000000000c00b2fa01003c610b080000000000000c *00bcfa01003c610b080000000000000c00c7fa010034cf11080000000000001000d4fa0100dc61 *0b080000000000000c00ddfa01006c620b080000000000000c00e7fa01006c620b080000000000 *000c00f2fa010000630b080000000000000c00fcfa010000630b080000000000000c0005fb0100 *14630b080000000000000c000ffb010014630b080000000000000c0018fb01003c630b08000000 *0000000c0022fb01003c630b080000000000000c002dfb01006c630b080000000000000c0037fb *01006c630b080000000000000c0042fb0100b8630b080000000000000c004dfb0100c8630b0800 *00000000000c0058fb0100e4630b080000000000000c0062fb0100f0630b080000000000000c00 *6cfb0100f0630b080000000000000c0077fb010034640b080000000000000c0081fb010034640b *080000000000000c008cfb010068640b080000000000000c0096fb010068640b08000000000000 *0c00a1fb0100d4640b080000000000000c00abfb0100d4640b080000000000000c00b6fb010070 *650b080000000000000c00c0fb010070650b080000000000000c00cbfb0100d4650b0800000000 *00000c00d6fb0100ec650b080000000000000c00e0fb0100ec650b080000000000000c00ebfb01 *001c660b080000000000000c00f6fb010064660b080000000000000c0000fc010074660b080000 *000000000c000afc010074660b080000000000000c0015fc0100c0660b080000000000000c0020 *fc0100d8660b080000000000000c002afc0100d8660b080000000000000c0035fc010014670b08 *0000000000000c003ffc010014670b080000000000000c004afc010064670b080000000000000c *0054fc010064670b080000000000000c005ffc010098670b080000000000000c0069fc01009867 *0b080000000000000c0074fc0100e4670b080000000000000c007ffc010040680b080000000000 *000c0089fc010050680b080000000000000c0093fc010050680b080000000000000c009efc0100 *50690b080000000000000c00a9fc01007c690b080000000000000c00b4fc0100d4690b08000000 *0000000c00befc0100e4690b080000000000000c00c8fc0100e4690b080000000000000c00d3fc *0100286a0b080000000000000c00ddfc0100286a0b080000000000000c00e8fc0100606a0b0800 *00000000000c00f2fc0100606a0b080000000000000c00fdfc0100b46a0b080000000000000c00 *07fd0100b46a0b080000000000000c0012fd0100e86a0b080000000000000c001cfd0100e86a0b *080000000000000c0027fd0100446b0b080000000000000c0031fd0100446b0b08000000000000 *0c003cfd0100706c0b080000000000000c0046fd0100706c0b080000000000000c0051fd010094 *6c0b080000000000000c005cfd0100c06c0b080000000000000c0067fd0100186d0b0800000000 *00000c0071fd0100286d0b080000000000000c007bfd0100286d0b080000000000000c0086fd01 *007c6d0b080000000000000c0091fd0100986d0b080000000000000c009bfd0100986d0b080000 *000000000c00a6fd0100ec6d0b080000000000000c00b0fd0100ec6d0b080000000000000c00bb *fd0100386e0b080000000000000c00c6fd0100806e0b080000000000000c00d0fd0100906e0b08 *0000000000000c00dafd0100906e0b080000000000000c00e5fd0100bc6e0b080000000000000c *00f0fd0100d46e0b080000000000000c00fafd0100d46e0b080000000000000c0005fe0100106f *0b080000000000000c000ffe0100106f0b080000000000000c001afe01006c6f0b080000000000 *000c0024fe01006c6f0b080000000000000c002ffe0100c46f0b080000000000000c0039fe0100 *c46f0b080000000000000c0044fe0100f86f0b080000000000000c004efe0100f86f0b08000000 *0000000c0059fe010044700b080000000000000c0064fe0100a0700b080000000000000c006efe *0100b0700b080000000000000c0078fe0100b0700b080000000000000c0083fe010074710b0800 *00000000000c008cfe01005ccf1108000000000000100099fe0100347b0b080000000000000c00 *a3fe0100a8710b080000000000000c00aefe0100d4710b080000000000000c00b9fe010000720b *080000000000000c00c4fe010048760b080000000000000c00cffe01001c720b08000000000000 *0c00d9fe01001c720b080000000000000c00e2fe010030720b080000000000000c00ecfe010030 *720b080000000000000c00f7fe010068720b080000000000000c0001ff010068720b0800000000 *00000c000cff0100a4720b080000000000000c0016ff0100a4720b080000000000000c0021ff01 *0000730b080000000000000c002bff010000730b080000000000000c0034ff010014730b080000 *000000000c003eff010014730b080000000000000c0049ff01004c730b080000000000000c0053 *ff01004c730b080000000000000c005eff0100b0730b080000000000000c0068ff0100b0730b08 *0000000000000c0073ff0100ec730b080000000000000c007dff0100ec730b080000000000000c *0088ff010050740b080000000000000c0092ff010050740b080000000000000c009dff0100ac74 *0b080000000000000c00a7ff0100ac740b080000000000000c00b2ff0100e8740b080000000000 *000c00bcff0100e8740b080000000000000c00c7ff010048750b080000000000000c00d2ff0100 *b4750b080000000000000c00dcff0100c0750b080000000000000c00e6ff0100c0750b08000000 *0000000c00efff0100ec750b080000000000000c00f9ff0100ec750b080000000000000c000200 *02000c760b080000000000000c000d00020038760b080000000000000c001700020048760b0800 *00000000000c002100020078760b080000000000000c002b00020078760b080000000000000c00 *340002009c760b080000000000000c003e0002009c760b080000000000000c0049000200cc760b *080000000000000c0053000200cc760b080000000000000c005e00020004770b08000000000000 *0c006800020004770b080000000000000c007100020018770b080000000000000c007b00020018 *770b080000000000000c008600020050770b080000000000000c009000020050770b0800000000 *00000c009b000200b0770b080000000000000c00a5000200b0770b080000000000000c00b00002 *00ec770b080000000000000c00ba000200ec770b080000000000000c00c50002004c780b080000 *000000000c00cf0002004c780b080000000000000c00d80002009c780b080000000000000c00e3 *000200b0780b080000000000000c00ed000200b0780b080000000000000c00f8000200e0780b08 *0000000000000c000301020018790b080000000000000c000d01020018790b080000000000000c *001801020048790b080000000000000c0023010200e8790b080000000000000c002d010200f479 *0b080000000000000c0037010200f4790b080000000000000c0040010200347b0b080000000000 *000c004b010200447a0b080000000000000c0056010200707a0b080000000000000c0060010200 *7c7a0b080000000000000c006a0102007c7a0b080000000000000c0073010200a07a0b08000000 *0000000c007d010200a07a0b080000000000000c0086010200f87a0b080000000000000c009101 *0200247b0b080000000000000c009b010200507b0b080000000000000c00a401020064cf110800 *00000000001000b1010200307e0b080000000000000c00bb010200787b0b080000000000000c00 *c5010200787b0b080000000000000c00ce010200987b0b080000000000000c00d8010200987b0b *080000000000000c00e3010200cc7b0b080000000000000c00ed010200cc7b0b08000000000000 *0c00f8010200187c0b080000000000000c0002020200187c0b080000000000000c000d02020060 *7c0b080000000000000c0018020200707c0b080000000000000c0023020200887c0b0800000000 *00000c002d020200887c0b080000000000000c0036020200ac7c0b080000000000000c00410202 *00cc7c0b080000000000000c004b020200d47c0b080000000000000c0055020200d47c0b080000 *000000000c005e020200fc7c0b080000000000000c0069020200287d0b080000000000000c0073 *020200347d0b080000000000000c007d020200347d0b080000000000000c0086020200687d0b08 *0000000000000c0090020200687d0b080000000000000c009b0202008c7d0b080000000000000c *00a50202008c7d0b080000000000000c00b0020200d87d0b080000000000000c00ba020200d87d *0b080000000000000c00c5020200307e0b080000000000000c00d00202000c7f0b080000000000 *000c00d902020084cf11080000000000001000e602020080800b080000000000000c00f0020200 *1c7f0b080000000000000c00fb020200387f0b080000000000000c0005030200387f0b08000000 *0000000c0010030200747f0b080000000000000c001a030200747f0b080000000000000c002503 *0200cc7f0b080000000000000c002f030200cc7f0b080000000000000c003a03020080800b0800 *00000000000c004503020008800b080000000000000c005003020070800b080000000000000c00 *5a0302008c800b080000000000000c00630302008ccf110800000000000010007003020000840b *080000000000000c007a030200bc800b080000000000000c0084030200bc800b08000000000000 *0c008d030200dc800b080000000000000c0097030200dc800b080000000000000c00a203020010 *810b080000000000000c00ac03020010810b080000000000000c00b70302005c810b0800000000 *00000c00c10302005c810b080000000000000c00cc030200a4810b080000000000000c00d70302 *00b4810b080000000000000c00e2030200cc810b080000000000000c00ec030200cc810b080000 *000000000c00f5030200f0810b080000000000000c000004020010820b080000000000000c000a *04020018820b080000000000000c001404020018820b080000000000000c001d04020040820b08 *0000000000000c00280402006c820b080000000000000c003204020078820b080000000000000c *003c04020078820b080000000000000c0045040200ac820b080000000000000c004f040200ac82 *0b080000000000000c005a040200d0820b080000000000000c0064040200d0820b080000000000 *000c006f0402001c830b080000000000000c00790402001c830b080000000000000c0084040200 *74830b080000000000000c008e04020074830b080000000000000c0099040200c8830b08000000 *0000000c00a3040200c8830b080000000000000c00ae04020000840b080000000000000c00b904 *02006c840b080000000000000c00c20402009ccf11080000000000001000cf04020084840b0800 *00000000000c00d904020084840b080000000000000c00e404020064850b080000000000000c00 *ee04020064850b080000000000000c00f70402008c850b080000000000000c00010502008c850b *080000000000000c000a050200b4850b080000000000000c0014050200b4850b08000000000000 *0c001d050200dc850b080000000000000c0027050200dc850b080000000000000c0030050200d0 *860b080000000000000c003a050200d0860b080000000000000c004305020000870b0800000000 *00000c004e05020014870b080000000000000c005805020014870b080000000000000c00610502 *0044870b080000000000000c006c05020058870b080000000000000c007605020058870b080000 *000000000c007f05020088870b080000000000000c008a050200a8870b080000000000000c0094 *050200a8870b080000000000000c009f050200c8870b080000000000000c00a9050200e0870b08 *0000000000000c00b405020020880b080000000000000c00bf0502006c880b080000000000000c *00ca050200d0880b080000000000000c00d405020060890b080000000000000c00df0502008c89 *0b080000000000000c00ea050200cc890b080000000000000c00f4050200e4890b080000000000 *000c00ff050200108a0b080000000000000c000a060200508a0b080000000000000c0014060200 *bc8a0b080000000000000c001e060200bc8a0b080000000000000c0027060200008b0b08000000 *0000000c0031060200008b0b080000000000000c003a060200288b0b080000000000000c004406 *0200288b0b080000000000000c004d060200708b0b080000000000000c0057060200708b0b0800 *00000000000c00600602000c171208040000000100170060060200101712080400000001001700 *600602001417120804000000010017006006020018171208040000000100170073060200988f0b *081800000001000c007d060200cc8e0b080500000002000c0087060200988f0b08240000000200 *0c0092060200d48e0b082b00000002000c009d060200008f0b082b00000002000c00a806020040 *8f0b081400000001000c0022560100488f0b080800000001000c002c560100488f0b0812000000 *02000c00b20602005c8f0b080800000002000c00bd060200648f0b080800000002000c00c80602 *00808f0b081400000001000c00d2060200c8900b081800000001000c00dc060200fc8f0b080500 *000002000c00e6060200c8900b082400000002000c00f106020004900b082b00000002000c00fc *06020030900b082b00000002000c000707020070900b081400000001000c00926e010078900b08 *0800000001000c001107020078900b081200000002000c001a0702008c900b080800000002000c *002507020094900b080800000002000c0030070200b0900b081400000001000c003a070200f891 *0b081800000001000c00440702002c910b080500000002000c004e070200f8910b082400000002 *000c005907020034910b082b00000002000c006407020060910b082b00000002000c006f070200 *a0910b081400000001000c0079070200a8910b080800000001000c0083070200a8910b08120000 *0002000c008c070200bc910b080800000002000c0097070200c4910b080800000002000c00a207 *0200e0910b081400000001000c00ac0702001c920b080800000001000c00d207020038940b0810 *00000001000c00dc07020078920b080200000002000c00e6070200d0920b082a00000002000c00 *f107020084920b080800000001000c00fb07020084920b083100000002000c0004080200d0920b *081800000001000c000e08020004930b080800000001000c001808020004930b08330000000200 *0c002108020040930b080800000001000c002b08020040930b083000000002000c003608020078 *930b080800000001000c004008020078930b080600000002000c00490802008c930b080c000000 *01000c00530802008c930b085200000002000c005c080200ec930b080c00000001000c00660802 *00ec930b081a00000002000c006f08020014940b080c00000001000c007908020014940b081100 *000002000c008208020038940b082f00000002000c008d08020068940b080800000001000c00b2 *080200fc940b081000000001000c00bc080200bc940b080800000001000c00c6080200bc940b08 *2f00000002000c00d1080200fc940b084a00000002000c00dc08020048950b080800000001000c *000309020084970b080c00000001000c000d09020088950b080200000002000c00876e0100e095 *0b082a00000002000c001709020094950b080800000001000c002109020094950b083100000002 *000c007d6e0100e0950b081800000001000c002a09020014960b080800000001000c0034090200 *14960b083300000002000c000e6f010050960b080800000001000c00186f010050960b08300000 *0002000c00576f010090960b081000000001000c00616f010090960b084a00000002000c003d09 *0200e4960b080800000001000c0047090200e4960b083a00000002000c00500902002c970b080c *00000001000c005a0902002c970b084900000002000c006309020084970b081700000002000c00 *600602001c17120804000000010017006006020020171208040000000100170060060200241712 *08040000000100170060060200281712080400000001001700600602002c171208040000000100 *170060060200301712080400000001001700600602003417120804000000010017006006020038 *17120804000000010017006c090200989c0b080400000001000c009a090200fc9c0b0804000000 *01000c00600602003c1712080400000001001700c9090200609e0b080c00000001000c00d30902 *00a09e0b081800000001000c00dd090200f89e0b081800000001000c00e7090200449f0b081800 *000001000c00f10902004c9e0b080800000001000c00fb0902004c9e0b080800000002000c0004 *0a0200609e0b082100000002000c000f0a0200849e0b080200000002000c00190a0200a09e0b08 *0800000002000c00240a0200a89e0b080200000002000c002e0a0200f89e0b082d00000002000c *00390a0200b49e0b080800000001000c00430a0200b49e0b080900000002000c004c0a0200c89e *0b080800000001000c00560a0200c89e0b081700000002000c005f0a0200289f0b080200000002 *000c00690a0200449f0b080800000002000c00740a0200cca00b081800000001000c007e0a0200 *989f0b080500000002000c00880a0200cca00b082d00000002000c00930a0200a89f0b08080000 *0001000c009d0a0200a89f0b080800000002000c00a60a0200bc9f0b080c00000001000c00b00a *0200bc9f0b082100000002000c00bb0a0200e09f0b080200000002000c00c50a0200fc9f0b0808 *00000002000c00d00a0200fc9f0b081800000001000c00da0a02000ca00b080800000001000c00 *e40a02000ca00b080900000002000c00ed0a020020a00b080800000001000c00f70a020020a00b *081b00000002000c00000b020044a00b080800000001000c000a0b020044a00b08700000000200 *0c0060060200401712080400000001001700130b020070a10b080800000001000c001d0b020070 *a10b081400000002000c00260b0200f4a10b080800000001000c00300b0200a8a10b080c000000 *01000c003a0b0200a8a10b084100000002000c00450b0200f4a10b083c00000002000c004e0b02 *00aca20b081400000001000c00580b020060a20b080b00000002000c00630b020074a20b080800 *000001000c006d0b020074a20b081200000002000c00760b020088a20b080f00000002000c0081 *0b020028a30b081400000001000c008b0b0200e4a20b080800000001000c00950b0200e4a20b08 *1200000002000c009e0b0200f8a20b080f00000002000c00a90b020008a30b080b00000002000c *00b40b02005ca30b080800000001000c00be0b02005ca30b081400000002000c00c70b0200d8a3 *0b080800000001000c00d10b020018a40b080800000001000c00db0b0200d8a30b083700000002 *000c00e60b020018a40b082900000002000c00f10b0200a8a40b081400000001000c00fb0b0200 *80a40b081100000002000c00050c020020a50b080800000001000c000f0c020060a50b08080000 *0001000c00190c020044a60b080c00000001000c00230c020020a50b083700000002000c002e0c *020060a50b082900000002000c00390c020098a50b080c00000001000c00430c020098a50b084b *00000002000c004e0c0200f0a50b080c00000001000c00580c0200f0a50b084700000002000c00 *630c020044a60b084700000002000c006e0c0200f0a60b081400000001000c00780c0200c8a60b *081100000002000c00600602004417120804000000010017006006020048171208040000000100 *1700600602004c1712080400000001001700820c020038a90b080c00000001000c008b0c02008c *a90b080c00000001000c00940c020060a80b082100000002000c009e0c020084a80b080e000000 *02000c00a80c0200a8a80b081400000001000c00b10c0200a8a80b081700000002000c00bb0c02 *00c0a80b080e00000002000c00c50c0200d0a80b081e00000002000c00cf0c020004a90b081400 *000001000c00d80c020004a90b081400000002000c00e20c02002ca90b081400000001000c00eb *0c020038a90b082c00000002000c00f50c020064a90b080800000002000c00fe0c020080a90b08 *1400000001000c00070d02008ca90b082d00000002000c00600602005017120804000000010017 *00110d020058ab0b081400000001000c001b0d020088aa0b080e00000002000c00260d020098aa *0b080800000002000c00310d0200a8aa0b080800000001000c003b0d0200a8aa0b082900000002 *000c00460d0200d4aa0b084400000002000c00510d02002cab0b081400000001000c005b0d0200 *2cab0b081500000002000c00660d0200dcac0b081400000001000c00700d020094ab0b080e0000 *0002000c007b0d0200acab0b080800000001000c00850d0200acab0b083900000002000c008e0d *0200f0ab0b080800000001000c00980d0200f0ab0b083700000002000c00a30d020030ac0b0808 *00000001000c00ad0d020030ac0b080b00000002000c00b60d020044ac0b080800000001000c00 *c00d020044ac0b082a00000002000c00cb0d020070ac0b085500000002000c00d60d0200acad0b *081400000001000c00e00d020008ad0b080e00000002000c00eb0d020020ad0b08080000000100 *0c00f50d020020ad0b082900000002000c00000e02004cad0b084a00000002000c000b0e02003c *af0b081400000001000c00150e0200c4ad0b080e00000002000c00200e0200dcad0b0808000000 *01000c002a0e0200dcad0b083900000002000c00330e020020ae0b080800000001000c003d0e02 *0020ae0b083700000002000c00480e020058ae0b080e00000002000c00530e020068ae0b080b00 *000002000c005e0e020088ae0b081400000001000c00680e020090ae0b080800000001000c0072 *0e020090ae0b080c00000002000c007b0e0200a4ae0b080800000001000c00850e0200a4ae0b08 *2a00000002000c00900e0200d0ae0b085500000002000c009b0e020080b00b081400000001000c *00a50e02006caf0b080e00000002000c00b00e02007caf0b083500000002000c00bb0e0200bcaf *0b080800000001000c00c50e0200bcaf0b082f00000002000c00d00e0200ecaf0b085700000002 *000c00db0e020058b00b081400000001000c00e50e020058b00b081200000002000c00f00e0200 *fcb10b080c00000001000c00fa0e0200fcb10b082900000002000c00050f0200c8b00b080e0000 *0002000c00100f0200e0b00b080800000001000c001a0f0200e0b00b085300000002000c00250f *020034b10b085300000002000c00300f020088b10b080e00000002000c003b0f0200acb10b0814 *00000001000c00450f0200acb10b082d00000002000c00500f0200f0b10b081400000001000c00 *5a0f02003cb30b080c00000002000c00630f02005cb20b080e00000002000c006e0f02006cb20b *080e00000002000c00790f02007cb20b080e00000002000c00840f02008cb20b080b0000000200 *0c008f0f0200acb20b081400000001000c00990f0200b4b20b080800000001000c00a30f0200b4 *b20b081e00000002000c00ac0f0200d4b20b081b00000002000c00b70f020004b30b0814000000 *01000c00c10f020004b30b081b00000002000c00cc0f020034b30b081400000001000c00d60f02 *003cb30b080800000001000c00e00f0200b0b30b080800000001000c00ea0f0200fcb30b081400 *000001000c00f40f0200b0b30b082900000002000c00ff0f0200dcb30b080b00000002000c0009 *1002008cb40b081400000001000c001310020038b40b080e00000002000c001e10020048b40b08 *2e00000002000c006006020054171208040000000100170029100200d4b50b081400000001000c *0032100200f4b40b080e00000002000c003c10020004b50b080800000002000c004610020014b5 *0b080800000001000c004f10020014b50b082f00000002000c005910020044b50b084700000002 *000c0063100200a0b50b081400000001000c006c100200a0b50b081e00000002000c0076100200 *30b60b081400000001000c007f10020004b60b080b00000002000c008910020010b60b080b0000 *0002000c009310020030b60b080400000001000c00ac10020078b60b081400000001000c00b510 *020050b60b080a00000002000c00bf1002005cb60b080800000002000c00c9100200c4b60b0814 *00000001000c00d210020090b60b080e00000002000c00dc100200a0b60b080e00000002000c00 *e610020028b70b081400000001000c00ef100200f4b60b080b00000002000c00f910020000b70b *081100000002000c0003110200bcb80b080c00000001000c000c1102000cb90b080c0000000100 *0c00151102008cb70b080800000001000c001e1102008cb70b082600000002000c0026110200bc *b70b080800000001000c002f110200bcb70b081800000002000c0037110200d4b70b080f000000 *02000c0041110200ecb70b080800000001000c004a110200ecb70b082600000002000c00521102 *001cb80b080800000001000c005b1102001cb80b081800000002000c006311020034b80b081800 *000002000c006d1102004cb80b081e00000002000c007711020080b80b081400000001000c0080 *11020080b80b081a00000002000c008a110200b0b80b081400000001000c0093110200bcb80b08 *2600000002000c009d110200e4b80b080800000002000c00a611020000b90b081400000001000c *00af1102000cb90b082d00000002000c00b911020008bb0b080c00000001000c00c31102005cbb *0b080c00000001000c00cd11020018ba0b080800000001000c00d711020018ba0b083c00000002 *000c00e211020054ba0b080800000002000c00d46c010070ba0b081400000001000c00ec110200 *78ba0b080800000001000c00f611020078ba0b085c00000002000c00ff110200dcba0b08080000 *0001000c0009120200dcba0b081d00000002000c001212020008bb0b082c00000002000c001d12 *020034bb0b080800000002000c002712020050bb0b081400000001000c00311202005cbb0b082d *00000002000c003c120200acbb0b080800000001000c0046120200acbb0b080800000002000c00 *4f120200d4bb0b080800000001000c0059120200d4bb0b080800000002000c0060060200581712 *08040000000100170062120200e0bc0b080400000001000c007d12020028bd0b08080000000100 *0c008712020028bd0b083700000002000c009012020060bd0b080400000001000c00ab120200ac *bd0b080800000001000c00b5120200acbd0b083d00000002000c00600602005c17120804000000 *010017006006020060171208040000000100170060060200641712080400000001001700600602 *00681712080400000001001700be1202004cc00b080800000001000c00c812020020c10b080c00 *000001000c00d2120200d8bf0b080800000001000c00dc120200d8bf0b082d00000002000c00e7 *12020010c00b080800000001000c00f112020010c00b083400000002000c00fa1202004cc00b08 *2a00000002000c000513020078c00b080b00000002000c00101302008cc00b080800000001000c *001a1302008cc00b080b00000002000c002313020098c00b080f00000002000c002e130200bcc0 *0b081400000001000c0038130200c4c00b080800000001000c0042130200c4c00b081e00000002 *000c004b130200ecc00b080800000001000c0055130200ecc00b080c00000002000c005e130200 *00c10b080800000001000c006813020000c10b081100000002000c007113020020c10b082f0000 *0002000c00600602006c17120804000000010017006a9c010074c30b080800000001000c007c13 *020014c20b081500000002000c008713020034c20b080800000001000c009113020034c20b081e *00000002000c00abb900008cc20b082900000002000c009a13020054c20b081500000002000c00 *a513020080c20b081400000001000c00a1b900008cc20b080c00000001000c0012c10000c0c20b *080800000001000c00af130200c0c20b080600000002000c00b8130200d0c20b08080000000100 *0c00c2130200d0c20b084300000002000c00cb1302001cc30b080800000001000c00d51302001c *c30b085000000002000c00749c010074c30b080d00000002000c00600602007017120804000000 *010017006006020074171208040000000100170060060200781712080400000001001700600602 *007c1712080400000001001700de13020090c50b080800000001000c00e813020090c50b080b00 *000002000c00600602008017120804000000010017006006020084171208040000000100170060 *060200881712080400000001001700600602008c17120804000000010017006006020090171208 *040000000100170060060200941712080400000001001700600602009817120804000000010017 *00600602009c1712080400000001001700f113020030c90b080800000001000c00fb13020020c9 *0b080c00000001000c000514020020c90b080800000002000c001014020030c90b083000000002 *000c0019140200a4c90b080800000001000c0023140200a4c90b080c00000002000c002c140200 *88ca0b081400000001000c003614020054ca0b080e00000002000c004114020064ca0b080e0000 *0002000c004c140200e8ca0b080800000001000c0056140200b4ca0b080b00000002000c006114 *0200c0ca0b080b00000002000c006c140200e0ca0b081400000001000c0076140200e8ca0b081e *00000002000c007f14020068cb0b080800000001000c008914020034cb0b080b00000002000c00 *9414020040cb0b080b00000002000c009f14020060cb0b081400000001000c00a914020068cb0b *081e00000002000c00b2140200f4cb0b080800000001000c00bc140200b4cb0b080e0000000200 *0c00c7140200c4cb0b080e00000002000c00d1140200eccb0b081800000001000c00db140200f4 *cb0b081e00000002000c00e414020080cc0b080800000001000c00ee14020040cc0b080e000000 *02000c00f914020050cc0b080e00000002000c000315020078cc0b081800000001000c000d1502 *0080cc0b081e00000002000c00161502000ccd0b080800000001000c0020150200cccc0b080e00 *000002000c002b150200dccc0b080e00000002000c003515020004cd0b081800000001000c003f *1502000ccd0b081e00000002000c002945000098cd0b080800000001000c004815020058cd0b08 *0e00000002000c005315020068cd0b080e00000002000c005d15020090cd0b081800000001000c *006715020098cd0b081e00000002000c0070150200fccd0b081400000001000c007a150200d0cd *0b080800000002000c0085150200d8cd0b080e00000002000c009015020040ce0b081400000001 *000c009a15020014ce0b080e00000002000c00a515020024ce0b080800000002000c00b0150200 *d0ce0b080c00000001000c00ba150200d0ce0b086900000002000c00c515020094ce0b08080000 *0001000c00cf15020094ce0b082d00000002000c00da15020070d00b081400000001000c00e415 *020068cf0b080e00000002000c00ef15020078cf0b080e00000002000c00fa1502009ccf0b0814 *00000001000c00041602009ccf0b080f00000002000c000f160200accf0b080e00000002000c00 *1a160200c4cf0b080800000001000c0024160200c4cf0b082800000002000c002d160200f4cf0b *080800000001000c0037160200f4cf0b081400000002000c004016020008d00b081d0000000200 *0c004b1602003cd00b081400000001000c00551602003cd00b081d00000002000c0060160200d8 *d00b080800000001000c006a1602009cd00b080e00000002000c0075160200acd00b080e000000 *02000c0080160200d0d00b081400000001000c008a160200d8d00b081e00000002000c00931602 *0078d20b080c00000001000c0073300000b0d20b080c00000001000c009d16020058d10b080d00 *000002000c00a816020068d10b080e00000002000c00b31602008cd10b081400000001000c00bd *1602008cd10b080f00000002000c00c81602009cd10b080e00000002000c00d3160200acd10b08 *0800000002000c00dd160200c8d10b081400000001000c00e7160200c8d10b085c00000002000c *00f216020038d20b081400000001000c00fc16020038d20b081d00000002000c00071702006cd2 *0b081400000001000c001117020078d20b082900000002000c007d300000b0d20b081d00000002 *000c001c170200a0d40b080c00000001000c00b431000008d50b080800000001000c0026170200 *5cd50b080c00000001000c006833000088d50b080c00000001000c0030170200b4d50b080c0000 *0001000c0090330000e0d50b080c00000001000c003a1702000cd60b080c00000001000c00012e *000038d60b080c00000001000c004417020094d30b080e00000002000c004f170200a4d30b080e *00000002000c005a170200c8d30b081400000001000c0064170200c8d30b080f00000002000c00 *6f170200d8d30b080e00000002000c007a170200e8d30b081100000002000c0085170200a0d40b *082900000002000c0090170200fcd30b080500000002000c009a1702001cd40b08180000000100 *0c00a41702001cd40b082e00000002000c00af17020060d40b081400000001000c00b917020060 *d40b081d00000002000c00c417020094d40b081400000001000c0038310000d4d40b0808000000 *01000c0042310000d4d40b082900000002000c00be31000008d50b084500000002000c00ce1702 *005cd50b081d00000002000c007233000088d50b081d00000002000c00d9170200b4d50b081d00 *000002000c009a330000e0d50b081d00000002000c00e41702000cd60b081d00000002000c00a5 *33000038d60b081d00000002000c00ef170200e0d60b080c00000001000c00f9170200e0d60b08 *6f00000002000c0004180200a4d60b080800000001000c000e180200a4d60b082d00000002000c *0019180200e8d70b080c00000001000c0023180200e8d70b086900000002000c002e180200acd7 *0b080800000001000c0038180200acd70b082d00000002000c004318020008d90b080c00000001 *000c004d18020008d90b082f00000002000c005818020098d80b080b00000002000c0063180200 *a4d80b084100000002000c006e180200fcd80b081400000001000c007818020020da0b08140000 *0001000c008218020068d90b080e00000002000c008d18020080d90b080800000001000c009718 *020080d90b082f00000002000c00a2180200b0d90b085a00000002000c00ad180200d4da0b0814 *00000001000c00b718020038da0b080800000002000c00c218020048da0b080800000001000c00 *cc18020048da0b082f00000002000c00d718020078da0b084700000002000c00e2180200f4da0b *080800000001000c00ec180200f4da0b080800000002000c00f51802001cdb0b08080000000100 *0c00ff1802001cdb0b080800000002000c000819020044db0b080800000001000c001219020044 *db0b080800000002000c001b1902006cdb0b080800000001000c00251902006cdb0b0808000000 *02000c002e190200dcdb0b080800000001000c0038190200dcdb0b080800000002000c00a63e00 *0004dc0b080800000001000c004119020004dc0b080800000002000c0060060200a01712080400 *00000100170060060200a4171208040000000100170060060200a817120804000000010017004a *1902009cde0b080800000001000c006019020000df0b080c00000001000c006a19020000df0b08 *3000000002000c0060060200ac171208040000000100170060060200b017120804000000010017 *0060060200b4171208040000000100170060060200b8171208040000000100170075190200d0e1 *0b080400000001000c008c19020034e20b080400000001000c00a319020098e20b080800000001 *000c00ba190200d8e30b081400000001000c00c4190200d0e20b084100000002000c00cf190200 *20e30b080c00000001000c00d919020020e30b084d00000002000c00e219020070e30b08510000 *0002000c00ed190200d8e30b080c00000001000c00041a020024e40b080800000001000c00231a *020098e50b081000000001000c002d1a0200cce50b080c00000001000c00371a020094e40b080c *00000001000c00411a020094e40b085300000002000c004a1a0200f4e40b080c00000001000c00 *541a0200f4e40b083000000002000c005f1a020030e50b080c00000001000c00691a020030e50b *085600000002000c00721a020098e50b082600000002000c007d1a0200cce50b08360000000200 *0c00881a020004e60b080400000001000c009c1a020048e60b080c00000001000c00a61a020048 *e60b080e00000002000c00af1a020058e60b080400000001000c00c31a0200b0e60b080c000000 *01000c00cd1a020098e60b080800000001000c00d71a020098e60b080b00000002000c00e01a02 *00b0e60b082f00000002000c00e91a0200e0e60b081800000001000c00fd1a0200b8e70b080c00 *000001000c00071b020040e70b080800000002000c00121b020048e70b081400000002000c001d *1b02005ce70b081400000002000c00281b020088e70b081800000001000c00321b020094e70b08 *0c00000001000c003c1b020094e70b081500000002000c00451b0200b8e70b080900000002000c *0060060200bc17120804000000010017004e1b0200bce80b080800000001000c00581b0200bce8 *0b080500000002000c0060060200c01712080400000001001700611b020014eb0b081400000001 *000c006b1b020088ea0b082b00000002000c00761b0200bcea0b080800000001000c00801b0200 *bcea0b082a00000002000c00891b0200e8ea0b081500000002000c00941b020034eb0b08080000 *0001000c009e1b020034eb0b083f00000002000c00a71b020094eb0b080800000001000c00b11b *020094eb0b082400000002000c00ba1b0200d8eb0b080800000001000c00c41b0200d8eb0b082d *00000002000c00cd1b020060ec0b080800000001000c00d71b020028ec0b080800000001000c00 *e11b020028ec0b082e00000002000c00ea1b020060ec0b081400000002000c00f31b0200ccec0b *080800000001000c00fd1b020094ec0b080800000001000c00071c020094ec0b082f0000000200 *0c00101c0200ccec0b081400000002000c00191c020038ed0b080800000001000c00231c020000 *ed0b080800000001000c002d1c020000ed0b082e00000002000c00361c020038ed0b0814000000 *02000c0060060200c417120804000000010017003f1c020040ee0b081400000001000c00491c02 *0010ee0b080900000002000c00541c02001cee0b080e00000002000c005f1c0200b0ee0b081400 *000001000c00691c020058ee0b080800000002000c00741c020060ee0b083900000002000c0055 *2d0000b8ef0b080800000001000c007f1c0200fcee0b080800000001000c00891c0200fcee0b08 *9a00000002000c00921c0200a4ef0b080c00000001000c009c1c0200a4ef0b080c00000002000c *005f2d0000b8ef0b086600000002000c00a71c0200b0f10b081400000001000c00b11c020050f0 *0b080e00000002000c00bc1c020060f00b080e00000002000c00c71c020070f00b080e00000002 *000c00d21c020088f00b080800000001000c00dc1c020088f00b083b00000002000c00e71c0200 *c4f00b087200000002000c00f21c02004cf10b081400000001000c00fc1c02004cf10b081d0000 *0002000c00071d020080f10b081400000001000c00111d020080f10b081a00000002000c001c1d *020084f20b080c00000001000c00261d020084f20b082900000002000c00311d0200f0f10b080e *00000002000c003c1d020000f20b080800000002000c00461d02001cf20b081400000001000c00 *501d02001cf20b084600000002000c005b1d020078f20b081400000001000c00651d0200b0f20b *080400000001000c007b1d0200f4f30b081400000001000c00851d0200e8f20b080d0000000200 *0c00901d0200f8f20b080b00000002000c009b1d02000cf30b080800000001000c00a51d02000c *f30b081400000002000c005a32000028f30b080800000001000c006432000028f30b0836000000 *02000c00ae1d020060f30b083f00000002000c00b91d0200bcf30b081200000002000c00c21d02 *00b4f30b081400000001000c00a3320000bcf30b080800000001000c00cc1d0200d0f30b080e00 *000002000c00d71d02000cf50b081200000002000c009a15020028f40b080e00000002000c00e0 *1d020038f40b081100000002000c00eb1d02004cf40b082e00000002000c00f61d020090f40b08 *1400000001000c00001e020098f40b080800000001000c000a1e020098f40b081e00000002000c *00131e0200c0f40b080800000001000c001d1e0200c0f40b081b00000002000c00a5150200dcf4 *0b081200000002000c009015020004f50b081400000001000c00261e02000cf50b080800000001 *000c00301e0200f8f50b081200000002000c00391e020054f50b080e00000002000c00441e0200 *64f50b080e00000002000c004f1e020074f50b080e00000002000c005a1e020098f50b08140000 *0001000c0090450000a0f50b080800000001000c00641e0200a0f50b081e00000002000c006d1e *0200c0f50b081b00000002000c00781e0200f0f50b081400000001000c00821e0200f8f50b0808 *00000001000c008c1e0200acf60b081400000001000c00961e02003cf60b080e00000002000c00 *a11e02004cf60b080e00000002000c00ac1e02005cf60b080800000002000c00b71e020078f60b *081400000001000c00c11e020078f60b081e00000002000c00cc1e02004cf70b08140000000100 *0c00d61e0200dcf60b080e00000002000c00e11e0200ecf60b080800000002000c00ec1e0200f4 *f60b080e00000002000c00f71e020018f70b081400000001000c00011f020018f70b081e000000 *02000c000c1f0200c8f70b080800000001000c00161f0200c8f70b083700000002000c001f1f02 *0044f90b081400000001000c00291f020030f80b081200000002000c00341f02004cf80b080800 *000001000c003e1f02004cf80b082f00000002000c00491f02007cf80b086100000002000c0054 *1f0200e0f80b081100000002000c005f1f020008f90b081400000001000c00691f020008f90b08 *2700000002000c00741f020088f90b080800000001000c007e1f020088f90b083700000002000c *00871f020004fb0b081400000001000c00911f0200f0f90b081200000002000c009c1f020004fa *0b081100000002000c00a71f020020fa0b080800000001000c00b11f020020fa0b082f00000002 *000c00bc1f020050fa0b086100000002000c00c71f0200c8fa0b081400000001000c00d11f0200 *c8fa0b082700000002000c00dc1f020024fb0b080800000001000c00e61f020024fb0b08230000 *0002000c00ef1f020068fb0b080800000001000c00f91f020068fb0b082300000002000c000220 *020028fc0b081400000001000c000c200200bcfb0b080e00000002000c0017200200ccfb0b0808 *00000002000c0022200200d4fb0b080800000002000c002d200200f0fb0b081400000001000c00 *37200200f0fb0b082100000002000c00422002000cfd0b080800000001000c004c200200d8fc0b *080800000001000c0056200200d8fc0b082900000002000c00612002000cfd0b084d0000000200 *0c006a200200a0fd0b080800000001000c0074200200a0fd0b082a00000002000c00ad18020018 *fe0b081400000001000c00b7180200e4fd0b080e00000002000c00d7180200f4fd0b080e000000 *02000c007d20020018fe0b080400000001000c007818020080fe0b081400000001000c00821802 *004cfe0b080a00000002000c00a218020058fe0b081400000002000c009020020080fe0b080400 *000001000c006e180200e8fe0b081400000001000c0058180200b4fe0b080a00000002000c0063 *180200c0fe0b081400000002000c00a3200200e8fe0b080400000001000c00b620020030ff0b08 *1400000001000c00c020020008ff0b080a00000002000c00cb20020014ff0b080800000002000c *00d6200200fc000c081400000001000c00e020020074ff0b080e00000002000c00eb20020084ff *0b080e00000002000c00f6200200a0ff0b080c00000001000c0000210200a0ff0b084d00000002 *000c00e93c0000f8ff0b080800000001000c00f33c0000f8ff0b085700000002000c000b210200 *50000c086600000002000c0016210200cc000c081400000001000c0020210200cc000c081a0000 *0002000c002b21020034020c081400000001000c003521020028010c080e00000002000c004021 *020038010c080e00000002000c00d03e000050010c080800000001000c00da3e000050010c083d *00000002000c004b21020090010c085a00000002000c005621020000020c081400000001000c00 *6021020000020c081d00000002000c006b21020050030c081400000001000c007521020064020c *080e00000002000c008021020074020c080e00000002000c008b2102008c020c08080000000100 *0c00952102008c020c082f00000002000c00a0210200bc020c084700000002000c00ab21020018 *030c081400000001000c00b521020018030c082400000002000c00c02102005c050c0814000000 *01000c00ca2102007c030c080e00000002000c00d52102008c030c080e00000002000c00e02102 *009c030c080800000002000c00eb210200a4030c084700000002000c00f621020000040c081400 *000001000c00002202000c040c080c00000001000c000a2202000c040c082900000002000c0015 *22020038040c084600000002000c002022020094040c081400000001000c002a220200a0040c08 *0c00000001000c0034220200a0040c082300000002000c003f220200cc040c080800000001000c *0049220200cc040c084200000002000c005422020010050c083700000002000c0060060200c817 *1208040000000100170060060200cc17120804000000010017005f2202007c060c080800000001 *000c00682202007c060c082d00000002000c0060060200d0171208040000000100170060060200 *d4171208040000000100170070220200bc070c081000000001000c00b66f0000900b0c08140000 *0001000c00fa6e0000e8070c080b00000002000c008522020000080c080c00000001000c008f22 *020000080c082900000002000c00056f00002c080c080e00000002000c00106f00003c080c0808 *00000002000c001b6f000058080c081400000001000c009a22020058080c081b00000002000c00 *a522020074080c080e00000002000c008e6f0000b0080c082c00000001000c00de9d0000bc080c *080c00000001000c00af220200bc080c082c00000002000c00ba220200f4080c080c0000000100 *0c00c4220200f4080c086300000002000c00cf22020064090c080c00000001000c00d922020064 *090c085d00000002000c00e4220200d0090c080c00000001000c00ee220200d0090c0808000000 *02000c00f9220200e8090c081000000001000c0003230200e8090c082a00000002000c00986f00 *00200a0c080c00000001000c00a26f0000200a0c088200000002000c000e230200b40a0c081000 *000001000c0018230200b40a0c082a00000002000c00adfb0000f00a0c081000000001000c00b7 *fb0000f00a0c084a00000002000c00ab6f00003c0b0c083e00000002000c0023230200900b0c08 *0800000001000c0038230200f80b0c080c00000001000c0068890000bc0c0c081000000001000c *0042230200f80b0c082900000002000c004d230200240c0c080800000002000c00572302004c0c *0c082000000001000c00ad7800005c0c0c081000000001000c00b77800005c0c0c084e00000002 *000c0061230200bc0c0c085700000002000c006c230200140d0c080400000001000c007f230200 *300d0c081000000001000c0008eb0000540e0c080c00000001000c00922302005c0d0c08080000 *0002000c009c230200840d0c082000000001000c00a6230200900d0c080c00000001000c00b023 *0200900d0c084100000002000c00bb230200d40d0c081400000002000c00c6230200e80d0c080b *00000002000c00d1230200f40d0c081100000002000c00dc2302001c0e0c081400000001000c00 *e62302001c0e0c081500000002000c00f1230200480e0c081400000001000c00fb230200540e0c *083a00000002000c0004240200c40e0c080800000001000c000e240200c40e0c08120000000200 *0c0017240200d80e0c080400000001000c00392402009c0f0c080800000001000c004324020078 *0f0c080800000001000c004d240200780f0c081900000002000c00562402009c0f0c082a000000 *02000c00612402003c100c080800000001000c006b2402001c100c080800000001000c00752402 *001c100c081800000002000c007e2402003c100c083000000002000c0089240200f0100c081000 *000001000c00955e000018160c080c00000001000c00a424020090160c080c00000001000c00ae *240200b8160c080800000001000c00b8240200f0160c080c00000001000c00c22402008c110c08 *0800000001000c00cc2402008c110c082900000002000c00d7240200c0110c080800000001000c *00e1240200c0110c082a00000002000c00ec240200ec110c081300000002000c00adde00000c12 *0c080c00000001000c00b7de00000c120c082d00000002000c00f724020044120c080800000001 *000c000125020044120c082e00000002000c000c25020074120c084000000002000c0017250200 *c8120c081400000001000c0021250200c8120c081800000002000c002b250200f4120c08140000 *0001000c0035250200f4120c081c00000002000c004025020010130c081300000002000c004a25 *020050130c082c00000001000c00d45e00005c130c080c00000001000c00de5e00005c130c0842 *00000002000c00e95e0000ac130c080c00000001000c00f35e0000ac130c083500000002000c00 *fe5e0000f0130c080c00000001000c00085f0000f0130c086600000002000c005425020060140c *080800000001000c005e25020060140c082a00000002000c00692502008c140c080a0000000200 *0c007425020098140c081100000002000c007f250200c0140c081400000001000c0089250200c0 *140c081800000002000c0093250200ec140c081400000001000c009d250200ec140c081c000000 *02000c00a825020008150c080a00000002000c00b225020040150c082c00000001000c00bc2502 *004c150c080c00000001000c00c62502004c150c083a00000002000c00d125020094150c080c00 *000001000c00db25020094150c083500000002000c00505f0000d8150c080c00000001000c005a *5f0000d8150c083400000002000c009f5e000018160c086b00000002000c00e625020090160c08 *1d00000002000c00f1250200b8160c082900000002000c00fc250200f0160c082900000002000c *00072602001c170c080400000001000c0021260200ac170c080800000001000c002b260200e417 *0c080c00000001000c00352602000c180c080800000001000c003f26020044180c080c00000001 *000c0049260200ac170c082900000002000c0054260200e4170c081d00000002000c005f260200 *0c180c082900000002000c006a26020044180c082900000002000c0075260200ac180c08100000 *0001000c0040640000b81c0c080c00000001000c008e260200101d0c080c00000001000c009826 *0200381d0c080800000001000c00a2260200701d0c080c00000001000c00ac2602004c190c0808 *00000001000c00b62602004c190c082900000002000c007862000080190c080800000001000c00 *8262000080190c082a00000002000c00c1260200ac190c081300000002000c00cc260200cc190c *080c00000001000c00d6260200cc190c083300000002000c00e1260200001a0c083b0000000200 *0c00ec2602003c1a0c081300000002000c00f7260200641a0c081400000001000c00057600006c *1a0c080800000001000c00012702006c1a0c082c00000002000c000a270200981a0c0815000000 *02000c0015270200c41a0c081400000001000c001f270200c41a0c080c00000002000c002a2702 *00d01a0c081300000002000c0034270200101b0c082c00000001000c003e2702001c1b0c080c00 *000001000c00482702001c1b0c084800000002000c0053270200741b0c081000000001000c005d *270200741b0c084500000002000c0068270200c41b0c080800000001000c0072270200c41b0c08 *2900000002000c007d270200f81b0c080800000001000c0087270200f81b0c083400000002000c *0092270200381c0c080c00000001000c009c270200381c0c087100000002000c004a640000b81c *0c084a00000002000c00a7270200101d0c081d00000002000c00b2270200381d0c082900000002 *000c00bd270200701d0c082900000002000c00c8270200bc1d0c080800000001000c00d2270200 *bc1d0c080800000002000c00b9e90000e41d0c080800000001000c00c3e90000e41d0c08080000 *0002000c0060060200d81712080400000001001700db270200e41e0c080800000001000c00e527 *02009c1e0c080800000001000c00ef2702009c1e0c080800000002000c0056c00000ac1e0c0808 *00000001000c00f8270200ac1e0c083000000002000c0003280200e41e0c083900000002000c00 *60060200dc171208040000000100170060060200e0171208040000000100170060060200e41712 *0804000000010017000c28020050210c081400000001000c001628020058200c080b0000000200 *0c00212802006c200c080800000001000c002b2802006c200c084e00000002000c0036280200c8 *200c080c00000001000c0040280200c8200c084800000002000c004b28020010210c082b000000 *02000c005628020064210c080400000001000c007128020008240c081400000001000c007b2802 *009c210c080f00000002000c0086280200ac210c083500000002000c0091280200ec210c080800 *000001000c009b280200ec210c085300000002000c00a628020040220c085400000002000c00b1 *280200a8220c081400000001000c00bb280200b4220c080c00000001000c00c5280200b4220c08 *2f00000002000c00d0280200ec220c080800000001000c00da280200ec220c084d00000002000c *00e528020044230c080800000001000c00ef28020044230c085900000002000c00fa280200a023 *0c085400000002000c00052902005c240c080800000001000c008c13000094240c080c00000001 *000c000f2902005c240c082900000002000c009613000094240c082700000002000c001a290200 *bc240c080400000001000c003429020048250c080800000001000c003e29020080250c080c0000 *0001000c004829020090250c080800000001000c0052290200c8250c080c00000001000c005c29 *020048250c082900000002000c006729020080250c080800000002000c007229020090250c0829 *00000002000c007d290200c8250c082900000002000c008829020004260c080400000001000c00 *a3290200b4280c080c00000001000c00ad290200e4280c080800000001000c00b72902001c290c *080c00000001000c00c12902007c260c080800000002000c00cb29020098260c08140000000100 *0c00d529020098260c081600000002000c00e0290200b8260c080800000001000c00ea290200b8 *260c083d00000002000c00f529020000270c080800000001000c00ff29020000270c082a000000 *02000c000a2a020034270c080800000001000c00142a020034270c082e00000002000c001f2a02 *006c270c080800000001000c00292a02006c270c083400000002000c0038050000a8270c080800 *000001000c0042050000a8270c083000000002000c0062050000e0270c080800000001000c006c *050000e0270c082e00000002000c00342a020010280c088200000002000c003f2a0200a8280c08 *1400000001000c00492a0200b4280c082600000002000c00542a0200e4280c082900000002000c *005f2a02001c290c082900000002000c006a2a020048290c080400000001000c00832a0200e829 *0c080800000001000c008d2a02001c2a0c080800000001000c00972a02005c2c0c080c00000001 *000c0044060000902c0c080800000001000c00a12a0200c82c0c080c00000001000c00ab2a0200 *e8290c082900000002000c00b62a02001c2a0c082900000002000c00c12a0200502a0c08080000 *0001000c00cb2a0200502a0c082f00000002000c00d62a0200882a0c080800000001000c00e02a *0200882a0c083400000002000c00b5080000c42a0c080800000001000c00bf080000c42a0c082f *00000002000c00eb2a0200fc2a0c080800000001000c00f52a0200fc2a0c083400000002000c00 *f2050000382b0c080800000001000c00fc050000382b0c083400000002000c00002b0200742b0c *080800000001000c000a2b0200742b0c082f00000002000c00152b0200ac2b0c08080000000100 *0c001f2b0200ac2b0c08a100000002000c00282b02005c2c0c082c00000002000c004e06000090 *2c0c082900000002000c00332b0200c82c0c082900000002000c003e2b0200142d0c0808000000 *01000c00482b0200142d0c080800000002000c00512b02003c2d0c080800000001000c005b2b02 *003c2d0c080800000002000c0060060200e8171208040000000100170060060200ec1712080400 *000001001700642b02001c2e0c080400000001000c0060060200f017120804000000010017007e *2b0200b02e0c080400000001000c00972b0200dc2e0c080c00000001000c00a12b0200dc2e0c08 *0b00000002000c00aa2b0200082f0c080800000001000c00b42b0200082f0c080b00000002000c *007e4a0000342f0c080800000001000c00bd2b0200342f0c080b00000002000c00c62b0200602f *0c080800000001000c00d02b0200602f0c080b00000002000c00d92b02008c2f0c080800000001 *000c00e32b02008c2f0c085200000002000c00ec2b020000300c080800000001000c00f52b0200 *00300c080b00000002000c0060060200f4171208040000000100170060060200f8171208040000 *000100170060060200fc171208040000000100170060060200001812080400000001001700fd2b *0200c0320c080c00000001000c00172c0200cc350c081000000001000c00212c020014330c0802 *00000002000c002b2c02006c330c08a700000002000c00362c020020330c080800000001000c00 *402c020020330c083100000002000c00492c02006c330c081800000001000c00532c02001c340c *080800000001000c005d2c02001c340c083300000002000c00662c020058340c08080000000100 *0c00702c020058340c081400000002000c00792c020074340c080800000001000c00832c020074 *340c083000000002000c008e2c0200ac340c080800000001000c00982c0200ac340c083b000000 *02000c00a12c0200f0340c080800000001000c00ab2c0200f0340c080900000002000c00b42c02 *000c350c081000000001000c00be2c02000c350c085100000002000c00c92c020070350c081000 *000001000c00d32c020070350c084c00000002000c00de2c0200cc350c085800000002000c00e9 *2c020024360c080800000001000c00002d020094360c081400000001000c000a2d02005c360c08 *0d00000002000c00152d02006c360c081200000002000c00600602000418120804000000010017 *00202d02001c370c081000000001000c004b2d020028380c080c00000001000c00552d0200983b *0c081800000001000c005f2d02008c370c080800000001000c00692d02008c370c082f00000002 *000c00742d0200c4370c080800000001000c007e2d0200c4370c085600000002000c00872d0200 *28380c082600000002000c00922d020050380c080500000002000c009c2d0200983b0c08290000 *0002000c00a72d020058380c080500000002000c00b12d0200ec3a0c083100000002000c00bc2d *020068380c080800000001000c00c62d020068380c082900000002000c00d12d0200a0380c080c *00000001000c00db2d0200a0380c085100000002000c00e62d0200fc380c080800000001000c00 *f02d0200fc380c080800000002000c00f92d020010390c080c00000001000c00032e020010390c *082100000002000c000e2e020034390c080200000002000c00182e020070390c08240000000200 *0c00232e020044390c080c00000001000c002d2e020044390c081100000002000c00362e020070 *390c081800000001000c00402e020094390c080200000002000c004a2e0200b0390c0808000000 *02000c00552e0200b0390c081800000001000c005f2e0200c0390c080800000001000c00692e02 *00c0390c082900000002000c00742e0200f4390c080800000001000c007e2e0200f4390c080900 *000002000c00872e02000c3a0c080c00000001000c00912e02000c3a0c085000000002000c009a *2e0200683a0c080c00000001000c00a42e0200683a0c086a00000002000c00ad2e0200ec3a0c08 *1800000001000c00b72e0200283b0c080800000001000c00c12e0200283b0c080600000002000c *00ca2e02003c3b0c080c00000001000c00d42e02003c3b0c084300000002000c00dd2e0200c43b *0c080400000001000c00032f0200043c0c080400000001000c00292f0200043d0c080c00000001 *000c00332f0200383d0c080c00000001000c003d2f0200683c0c080800000001000c00472f0200 *683c0c082f00000002000c00522f0200a03c0c080800000001000c005c2f0200a03c0c08560000 *0002000c00652f0200043d0c082600000002000c00702f0200383d0c083500000002000c007b2f *0200703d0c080400000001000c009c2f0200703e0c080c00000001000c00a62f0200a43e0c080c *00000001000c00b02f0200d43d0c080800000001000c00ba2f0200d43d0c082f00000002000c00 *c52f02000c3e0c080800000001000c00cf2f02000c3e0c085600000002000c00d82f0200703e0c *082600000002000c00e32f0200a43e0c083500000002000c00ee2f0200dc3e0c080c0000000100 *0c00183002009c3f0c080c00000001000c00223002003c3f0c080c00000001000c002c3002003c *3f0c080b00000002000c0035300200543f0c080c00000001000c003f300200543f0c0809000000 *02000c00483002006c3f0c080c00000001000c00523002006c3f0c082100000002000c005b3002 *009c3f0c081b00000002000c0064300200b83f0c080800000001000c008d30020018400c080c00 *000001000c009730020018400c083c00000002000c00a230020054400c080800000001000c00c6 *300200b4400c080c00000001000c00d0300200b4400c083c00000002000c006006020008181208 *0400000001001700db30020050410c080800000001000c00fa30020068420c080c00000001000c *0004310200f0410c080800000001000c000e310200f0410c084a00000002000c00f7b300004442 *0c080800000001000c0001b4000044420c081700000002000c001731020068420c082600000002 *000c0022310200a4430c080800000001000c002c310200e0420c080800000001000c0036310200 *e0420c082f00000002000c004131020018430c080800000001000c004b31020018430c08320000 *0002000c003db6000054430c080800000001000c0047b6000054430c081600000002000c005431 *020074430c080800000001000c005e31020074430c082800000002000c0067310200a4430c0817 *00000002000c0070310200d0440c080800000001000c007a3102000c440c080800000001000c00 *843102000c440c080600000002000c008d3102001c440c080800000001000c00973102001c440c *081200000002000c00a031020038440c080800000001000c00aa31020038440c085c0000000200 *0c00f6bc00009c440c080800000001000c0000bd00009c440c082b00000002000c00b3310200d0 *440c081700000002000c00600602000c1812080400000001001700bc31020020450c0804000000 *01000c00d631020028460c080c00000001000c00e031020064450c080d00000002000c00eb3102 *0074450c080200000002000c00f531020090450c080800000002000c000032020090450c081800 *000001000c000a320200a4450c080c00000001000c0014320200a4450c084d00000002000c001d *320200f4450c081200000002000c00283202001c460c081400000001000c003232020028460c08 *2a00000002000c00600602001018120804000000010017003d320200dc460c080800000001000c *005632020030470c080c00000001000c006032020030470c080f00000002000c00693202004047 *0c080c00000001000c0082320200ac470c080c00000001000c008c32020098470c080c00000001 *000c009632020098470c080800000002000c009f320200ac470c081b00000002000c00a8320200 *c8470c080800000001000c00137d00001c480c080c00000001000c00c03202001c480c08080000 *0002000c00c932020024480c080c00000001000c00e13202007c480c080c00000001000c00eb32 *02007c480c081600000002000c00f432020094480c080800000001000c00600602001418120804 *000000010017000a33020050490c080800000001000c001433020050490c085000000002000c00 *1d330200404a0c081800000001000c0027330200e8490c080200000002000c0031330200404a0c *082100000002000c003c330200f4490c080800000001000c0046330200f4490c08310000000200 *0c0060060200181812080400000001001700600602001c18120804000000010017004f33020040 *4b0c080400000001000c0076330200704c0c080800000001000c0080330200ec4b0c0802000000 *02000c008a330200444c0c082400000002000c00923e0100f84b0c080800000001000c009c3e01 *00f84b0c083100000002000c0093850100444c0c081800000001000c0095330200704c0c082d00 *000002000c009e330200844d0c080800000001000c00a8330200b84c0c080200000002000c00b2 *330200104d0c082a00000002000c00bd330200c44c0c080800000001000c00c7330200c44c0c08 *3100000002000c00d0330200104d0c081800000001000c00da330200444d0c080800000001000c *00e4330200444d0c083600000002000c00ed330200844d0c081400000002000c00600602002018 *120804000000010017006006020024181208040000000100170060060200281812080400000001 *001700600602002c1812080400000001001700f6330200d8500c082000000001000c0000340200 *4c4f0c080e00000002000c000b3402005c4f0c080800000002000c0015340200844f0c08200000 *0001000c001f340200844f0c082000000002000c002a340200b84f0c081400000001000c003434 *0200b84f0c081400000002000c003f340200cc4f0c080800000002000c0049340200f44f0c0820 *00000001000c0053340200f44f0c081800000002000c005e3402000c500c080e00000002000c00 *6934020024500c080800000001000c007334020024500c082f00000002000c007e34020054500c *085a00000002000c0089340200b0500c080800000002000c009434020020510c08080000000100 *0c00bd340200205d0c082000000001000c00c734020068510c080c00000001000c00d134020068 *510c082f00000002000c00dc34020098510c084700000002000c00e7340200e0510c0808000000 *02000c00f2340200e8510c080800000002000c00fd340200f0510c080800000002000c00073502 *000c520c081400000001000c001135020014520c080800000001000c001b35020014520c083c00 *000002000c00263502005c520c080c00000001000c00303502005c520c084700000002000c003b *350200a4520c084100000002000c0046350200e8520c080800000002000c005035020010530c08 *2000000001000c005a35020020530c081000000001000c006435020020530c082d00000002000c *006f35020050530c083e00000002000c007a35020090530c080800000002000c0084350200b853 *0c082000000001000c008e350200c8530c081000000001000c0098350200c8530c084e00000002 *000c00a335020018540c084100000002000c00ae3502007c540c082000000001000c00b8350200 *7c540c081400000002000c00c335020090540c080a00000002000c00ce350200ac540c08100000 *0001000c00d8350200ac540c084400000002000c00e3350200f0540c084100000002000c00ee35 *020054550c082000000001000c00f835020054550c081100000002000c000236020088550c0820 *00000001000c000c36020088550c081100000002000c0016360200bc550c082000000001000c00 *20360200c8550c080c00000001000c002a360200c8550c080f00000002000c0033360200d8550c *081100000002000c003d36020000560c081400000001000c004736020000560c08180000000200 *0c005136020038560c082000000001000c005b36020040560c080800000001000c006536020040 *560c083f00000002000c00703602008c560c080c00000001000c007a3602008c560c0847000000 *02000c0085360200d4560c084100000002000c009036020018570c080800000002000c009a3602 *0040570c082000000001000c00a436020040570c081500000002000c00af36020060570c080800 *000001000c00b936020060570c082f00000002000c00c436020098570c080800000001000c00ce *36020098570c085000000002000c00d9360200f4570c080c00000001000c00e3360200f4570c08 *4700000002000c00ee3602003c580c083e00000002000c00f93602007c580c080800000002000c *0003370200a4580c082000000001000c000d370200ac580c080800000001000c0017370200ac58 *0c083900000002000c0022370200f0580c080800000001000c002c370200f0580c085000000002 *000c00373702004c590c080c00000001000c00413702004c590c084700000002000c004c370200 *94590c084100000002000c0057370200e0590c080800000001000c0061370200e0590c082f0000 *0002000c006c370200105a0c084100000002000c0077370200745a0c082000000001000c008137 *0200745a0c081500000002000c008c3702008c5a0c080500000002000c0096370200b45a0c0820 *00000001000c00a0370200b45a0c081200000002000c00aa370200e85a0c082000000001000c00 *b4370200e85a0c081100000002000c00be3702001c5b0c082000000001000c00c83702001c5b0c *081200000002000c00d2370200505b0c082000000001000c00dc3702005c5b0c080c0000000100 *0c00e63702005c5b0c080c00000002000c00ef370200685b0c080800000002000c00f937020090 *5b0c082000000001000c0003380200a05b0c081000000001000c000d380200a05b0c084e000000 *02000c0018380200f05b0c084100000002000c0023380200345c0c080800000002000c002d3802 *005c5c0c082000000001000c00373802005c5c0c081500000002000c0042380200805c0c080c00 *000001000c004c380200805c0c082f00000002000c0057380200b05c0c084700000002000c0062 *380200f85c0c080500000002000c006c380200205d0c080800000001000c0094380200985e0c08 *1400000001000c009e380200585d0c080b00000002000c00a9380200645d0c080b00000002000c *00b43802007c5d0c080c00000001000c00be3802007c5d0c082900000002000c00c9380200b45d *0c080c00000001000c00d3380200b45d0c080800000002000c00de380200c85d0c080c00000001 *000c00e8380200c85d0c084e00000002000c00f3380200185e0c083800000002000c00fe380200 *645e0c081400000001000c0008390200645e0c082000000002000c006006020030181208040000 *000100170013390200905f0c080400000001000c004039020038600c081000000001000c004a39 *020000600c080800000002000c005439020028600c082000000001000c005e39020038600c084e *00000002000c006939020034610c080c00000001000c0073390200e8600c080800000001000c00 *7d390200e8600c082200000002000c008639020014610c080800000001000c009039020014610c *081400000002000c009939020034610c082c00000002000c00a4390200e4610c08080000000100 *0c00ae390200ac610c080800000001000c00b8390200ac610c082e00000002000c00c1390200e4 *610c082a00000002000c00cc39020064620c080800000001000c00d6390200a0620c080c000000 *01000c00e039020064620c082d00000002000c00eb390200a0620c080800000002000c00f63902 *0084630c080c00000001000c00003a02004c630c080c00000001000c000a3a02004c630c082c00 *000002000c00153a020084630c084700000002000c006006020034181208040000000100170020 *3a020020650c080800000001000c002a3a020020650c084700000002000c00333a020014670c08 *1400000001000c003d3a020098650c080e00000002000c00483a0200a8650c083500000002000c *00533a0200e8650c080800000001000c005d3a0200e8650c082f00000002000c00683a02001866 *0c086000000002000c00733a02008c660c081400000001000c007d3a020098660c080c00000001 *000c00873a020098660c082900000002000c00923a0200c4660c083900000002000c009d3a0200 *cc670c081400000001000c00a73a02002c670c080e00000002000c00b23a020044670c08080000 *0001000c00bc3a020044670c082900000002000c00c73a020070670c084800000002000c00d23a *020084680c081400000001000c00dc3a0200e4670c080e00000002000c00e73a0200fc670c0808 *00000001000c00f13a0200fc670c082900000002000c00fc3a020028680c084800000002000c00 *073b0200ec680c080800000001000c002c3b0200ac690c081400000001000c00363b020024690c *080e00000002000c00413b020034690c081900000002000c004b3b02007c690c082c0000000100 *0c00553b02007c690c081b00000002000c00603b0200ac690c080800000001000c00843b02006c *6a0c081400000001000c008e3b0200e4690c080e00000002000c00993b0200f4690c0819000000 *02000c00a33b02003c6a0c082c00000001000c00ad3b02003c6a0c081b00000002000c00b83b02 *006c6a0c080400000001000c0060060200381812080400000001001700600602003c1812080400 *000001001700df3b0200286c0c082400000001000c00f73b020084710c080c00000001000c0001 *3c020068730c080c00000001000c0051cc0000e8730c080c00000001000c0099c2000068740c08 *0c00000001000c00e0c10000cc740c080c00000001000c000b3c0200fc6c0c080c00000001000c *00153c0200fc6c0c082e00000002000c00203c02002c6d0c080800000002000c002a3c0200546d *0c082000000001000c0070310200606d0c080c00000001000c00343c0200606d0c085700000002 *000c003f3c0200b86d0c080e00000002000c004a3c0200c86d0c083300000002000c00553c0200 *fc6d0c083300000002000c00603c0200446e0c081400000001000c000aba0000546e0c08100000 *0001000c006a3c0200546e0c085c00000002000c00753c0200b06e0c083d00000002000c00803c *0200046f0c081400000001000c008a3c0200146f0c081000000001000c00943c0200146f0c0838 *00000002000c00f6bc0000586f0c080c00000001000c009f3c0200586f0c086400000002000c00 *aa3c0200bc6f0c080e00000002000c00b53c0200cc6f0c084700000002000c00c03c020028700c *081400000001000c00bebf000038700c081000000001000c00ca3c020038700c08380000000200 *0c00a03102007c700c080c00000001000c00d53c02007c700c086400000002000c00e03c0200ec *700c080c00000001000c00ea3c0200ec700c082e00000002000c00f53c020024710c0808000000 *01000c00ff3c020024710c082000000002000c00083d020050710c080c00000001000c00123d02 *0050710c082600000002000c001d3d020084710c087100000002000c00283d020000720c080800 *000001000c00323d020000720c084700000002000c00379c000050720c080800000001000c0041 *9c000050720c082000000002000c003d3d02007c720c080c00000001000c00473d02007c720c08 *2600000002000c00523d0200ac720c080800000001000c005c3d0200ac720c085e00000002000c *00653d020014730c080800000001000c006f3d020014730c081d00000002000c00783d02003473 *0c080c00000002000c00833d020040730c080500000002000c008e3d02005c730c081400000001 *000c00983d020068730c082400000002000c00a33d020094730c080800000001000c00ad3d0200 *94730c081300000002000c00b63d0200b4730c080c00000001000c00c03d0200b4730c08260000 *0002000c00cb3d0200e8730c084400000002000c00d63d020034740c080800000001000c00e03d *020034740c082700000002000c00e93d020068740c082c00000002000c00759c00009c740c0808 *00000001000c007f9c00009c740c082300000002000c00f43d0200cc740c082600000002000c00 *ff3d0200f4740c080c00000001000c00173e020048760c080c00000001000c00213e0200c8760c *080c00000001000c002b3e0200e0760c081000000001000c00353e020078750c080c0000000100 *0c003f3e020078750c082900000002000c003db60000ac750c080800000001000c004a3e0200ac *750c082d00000002000c00553e0200dc750c080800000002000c00603e0200e4750c080e000000 *02000c006b3e020008760c081400000001000c00b2b4000014760c080c00000001000c00753e02 *0014760c082600000002000c00803e020048760c087100000002000c008b3e0200c8760c080800 *000002000c00963e0200e0760c082a00000002000c0060060200401812080400000001001700a1 *3e0200b8780c080c00000001000c00ab3e0200b8780c082f00000002000c00b63e0200ec770c08 *1100000002000c00c13e02000c780c080c00000001000c00cb3e02000c780c082c00000002000c *00d63e020038780c085e00000002000c00e13e0200ac780c081400000001000c00eb3e0200a079 *0c080c00000001000c00f53e02004c790c080c00000001000c00ff3e02004c790c084700000002 *000c000a3f0200a0790c084d00000002000c006006020044181208040000000100170060060200 *481812080400000001001700600602004c18120804000000010017006006020050181208040000 *000100170060060200541812080400000001001700153f0200687b0c080800000001000c001f3f *0200687b0c082600000002000c00283f0200907b0c080800000001000c003d3f0200447c0c0814 *00000001000c00463f0200187c0c080b00000002000c00503f0200247c0c080b00000002000c00 *600602005818120804000000010017005a3f0200707c0c080800000001000c00783f0200d87d0c *081800000001000c00823f0200087e0c080800000001000c008c3f0200cc7c0c08050000000200 *0c00963f0200d87d0c082600000002000c00a13f0200dc7c0c080800000001000c00ab3f0200dc *7c0c080900000002000c00b43f0200f47c0c080c00000001000c00be3f0200f47c0c084f000000 *02000c00c73f0200447d0c081100000002000c00d23f0200587d0c080900000002000c00dd3f02 *00787d0c081400000001000c00e73f0200847d0c080c00000001000c00f13f0200847d0c080900 *000002000c00fa3f02009c7d0c080c00000001000c00044002009c7d0c082100000002000c000d *400200087e0c080900000002000c0016400200147e0c080c00000001000c002d4002007c800c08 *1400000001000c0037400200547e0c080800000002000c0042400200647e0c080800000001000c *004c400200647e0c082f00000002000c0057400200947e0c080500000002000c0061400200a07f *0c082600000002000c006c400200a47e0c080800000001000c0076400200a47e0c080900000002 *000c007f400200bc7e0c080c00000001000c0089400200bc7e0c084f00000002000c0092400200 *0c7f0c081100000002000c009d400200207f0c080900000002000c00a8400200407f0c08140000 *0001000c00b24002004c7f0c080c00000001000c00bc4002004c7f0c080900000002000c00c540 *0200647f0c080c00000001000c00cf400200647f0c082100000002000c00d8400200a07f0c0818 *00000001000c00e2400200d47f0c080c00000001000c00ec400200d47f0c085700000002000c00 *f74002002c800c083c00000002000c00024102007c800c080400000001000c002041020024810c *080c00000001000c002a410200b8800c080800000001000c0034410200b8800c080f0000000200 *0c003d410200c8800c083a00000002000c004741020018810c081400000001000c005141020024 *810c081e00000002000c005a410200a0810c080800000001000c006441020064810c0808000000 *01000c006e41020064810c083100000002000c0077410200a0810c081400000002000c00804102 *0064820c080800000001000c008a41020004820c080800000001000c009441020004820c085800 *000002000c009f41020064820c084600000002000c00a84102000c830c080c00000001000c00b2 *4102001c840c080800000001000c00bc4102000c830c084400000002000c0009a5010058830c08 *0800000001000c0013a5010058830c088800000002000c00c7410200e8830c080800000001000c *00d1410200e8830c082900000002000c00da4102001c840c080900000002000c00e34102007084 *0c080800000001000c00ed41020060840c080800000001000c00f741020060840c080600000002 *000c000042020070840c084800000002000c00094202005c860c080c00000001000c0013420200 *58850c080800000001000c001d42020058850c084600000002000c00264202005c860c08460000 *0002000c0031420200a8850c080800000001000c003b420200a8850c084000000002000c004442 *0200f0850c080800000001000c004e420200f0850c083700000002000c005742020030860c0808 *00000001000c006142020030860c081f00000002000c006a420200a4860c080400000001000c00 *91420200cc870c080c00000001000c009b420200e0860c080800000001000c00a5420200e0860c *080600000002000c00ae420200f0860c080800000001000c00b8420200f0860c08180000000200 *0c00c142020010870c080800000001000c00cb42020010870c086200000002000c00d44202007c *870c080800000001000c00de4202007c870c081600000002000c00e7420200a0870c080c000000 *01000c00f1420200a0870c081e00000002000c00fa420200cc870c082500000002000c00034302 *003c890c081400000001000c000d43020024880c081200000002000c001843020044880c080c00 *000001000c002243020044880c084100000002000c002d43020094880c080c00000001000c0037 *43020094880c084a00000002000c0042430200e0880c084500000002000c00600602005c181208 *04000000010017004d4302000c8a0c080800000001000c0057430200f0890c080800000001000c *0061430200f0890c081400000002000c006a4302000c8a0c081a00000002000c0073430200788a *0c080800000001000c008d2a02005c8a0c080800000001000c007d4302005c8a0c081200000002 *000c0086430200788a0c081a00000002000c008f430200e88a0c080800000001000c0099430200 *b48a0c080800000001000c00a3430200b48a0c082900000002000c00ac430200e88a0c08140000 *0002000c00b5430200508b0c080800000001000c00d92b02001c8b0c080800000001000c00e32b *02001c8b0c082900000002000c00bf430200508b0c081400000002000c00c8430200b88b0c0808 *00000001000c00d2430200848b0c080800000001000c00dc430200848b0c082900000002000c00 *e5430200b88b0c081400000002000c00ee430200208c0c080800000001000c00f8430200ec8b0c *080800000001000c0002440200ec8b0c082900000002000c000b440200208c0c08140000000200 *0c0014440200548c0c080800000001000c001e440200548c0c082d00000002000c0027440200dc *8c0c080800000001000c00c1490000a48c0c080800000001000c00cb490000a48c0c082f000000 *02000c0031440200dc8c0c081400000002000c003a440200488d0c080800000001000c00974900 *00108d0c080800000001000c0044440200108d0c082e00000002000c004d440200488d0c081400 *000002000c0056440200b48d0c080800000001000c006d4900007c8d0c080800000001000c0060 *4402007c8d0c082e00000002000c0069440200b48d0c081400000002000c0072440200048e0c08 *0800000001000c007c440200e88d0c080800000001000c0086440200e88d0c081100000002000c *008f440200048e0c081400000002000c00984402006c8e0c080800000001000c00a2440200388e *0c080800000001000c00ac440200388e0c082900000002000c00b54402006c8e0c081400000002 *000c00be440200d48e0c080800000001000c00c8440200a08e0c080800000001000c00d2440200 *a08e0c082900000002000c00db440200d48e0c081400000002000c00e4440200608f0c08140000 *0001000c00ee440200008f0c080e00000002000c00f9440200108f0c080e00000002000c000445 *0200348f0c081400000001000c000e450200348f0c080f00000002000c0019450200448f0c0808 *00000002000c0024450200d88f0c081400000001000c002e450200788f0c080800000002000c00 *39450200808f0c080e00000002000c0044450200908f0c080e00000002000c004f450200b48f0c *081400000001000c0059450200b48f0c080f00000002000c0064450200d88f0c08080000000100 *0c0077450200a4900c080800000001000c008145020068900c080800000001000c008b45020068 *900c081700000002000c006336000088900c080800000001000c009445020088900c0814000000 *02000c009d450200a4900c081400000002000c00a6450200f4900c080800000001000c00b04502 *00d8900c080800000001000c00ba450200d8900c081100000002000c00c3450200f4900c081400 *000002000c00cc45020044910c080800000001000c00d645020028910c080800000001000c00e0 *45020028910c081100000002000c00e945020044910c081400000002000c00f24502008c910c08 *0800000001000c00fc4502008c910c081500000002000c0005460200cc910c080400000001000c *0019460200f8910c080c00000001000c0023460200f8910c084200000002000c002c4602003c92 *0c080400000001000c004046020068920c080c00000001000c004a46020068920c084200000002 *000c005346020094930c080400000001000c006946020000960c081400000001000c0073460200 *dc930c080800000001000c007d460200dc930c083000000002000c008846020014940c08080000 *0001000c009246020014940c084b00000002000c009d4602006c940c080c00000001000c00a746 *02006c940c085100000002000c00b2460200cc940c080c00000001000c00bc460200cc940c0849 *00000002000c00c546020018950c080f00000002000c00d046020034950c080c00000001000c00 *da46020034950c085200000002000c00e346020088950c081500000002000c00ee460200b4950c *081400000001000c00f8460200c0950c080c00000001000c0002470200c0950c080f0000000200 *0c000b470200d0950c081900000002000c001547020000960c080400000001000c002c470200b4 *960c080c00000001000c0035470200b4960c081a00000002000c003f4702001c980c0808000000 *01000c00634702007c990c080c00000001000c006d4702000c990c080c00000001000c00774702 *000c990c086300000002000c00804702007c990c080900000002000c008947020088990c080400 *000001000c009f470200309b0c080c00000001000c00a9470200c8990c080b00000002000c00b4 *470200dc990c080800000001000c00be470200dc990c082900000002000c00c9470200109a0c08 *0800000001000c00d3470200109a0c082900000002000c00de470200449a0c080800000001000c *00e8470200449a0c081100000002000c00f1470200589a0c088200000002000c00fc470200f09a *0c081400000001000c0006480200fc9a0c080c00000001000c0010480200fc9a0c082700000002 *000c0019480200309b0c081700000002000c0022480200489b0c080800000001000c0038480200 *049c0c080c00000001000c0042480200a49b0c080c00000001000c004c480200a49b0c08520000 *0002000c0055480200049c0c085300000002000c005e4802007c9e0c081800000001000c006848 *0200a89c0c080500000002000c00724802007c9e0c083000000002000c007d480200b89c0c0808 *00000001000c0087480200b89c0c083500000002000c0092480200f89c0c080800000001000c00 *9c480200f89c0c085c00000002000c00a54802005c9d0c080800000001000c00af4802005c9d0c *080c00000002000c00b8480200749d0c080c00000001000c00c2480200749d0c08330000000200 *0c00cd480200b09d0c080800000001000c00d7480200b09d0c080b00000002000c00e0480200c4 *9d0c080800000001000c00ea480200c49d0c081500000002000c00f3480200e49d0c0808000000 *01000c00fd480200e49d0c085f00000002000c00064902004c9e0c080800000001000c00104902 *004c9e0c081800000002000c0019490200ac9e0c080c00000001000c002f490200509f0c080c00 *000001000c0039490200189f0c080c00000001000c0043490200189f0c082900000002000c004c *490200509f0c080900000002000c00554902005c9f0c080800000001000c0072490200fc9f0c08 *2400000001000c007c490200a09f0c080900000002000c0087490200b89f0c080c00000001000c *0091490200b89f0c080800000002000c009a490200c09f0c081500000002000c00a4490200fc9f *0c080c00000001000c00c949020064a30c081000000001000c00d34902004ca00c080b00000002 *000c00de49020058a00c080b00000002000c00e949020064a00c080b00000002000c00f4490200 *78a00c080800000001000c00fe49020078a00c082900000002000c00094a0200a4a00c08050000 *0002000c00134a0200a0a20c082a00000002000c001e4a0200b4a00c080800000001000c00284a *0200b4a00c082900000002000c00334a0200e8a00c080800000001000c003d4a0200e8a00c0846 *00000002000c00464a020038a10c080800000001000c00504a020038a10c082a00000002000c00 *5b4a02006ca10c080800000001000c00654a02006ca10c083d00000002000c006e4a0200aca10c *085700000002000c00794a020004a20c081400000002000c00844a02002ca20c08140000000100 *0c008e4a020038a20c080c00000001000c00984a020038a20c082a00000002000c00a14a020070 *a20c080c00000001000c00ab4a020070a20c081700000002000c00b44a0200a0a20c0818000000 *01000c00be4a0200cca20c085700000002000c00c94a020024a30c080b00000002000c00d34a02 *0054a30c082400000001000c00dd4a020064a30c082a00000002000c00e84a020090a30c080400 *000001000c000b4b02004ca40c081400000001000c00154b0200c8a30c083600000002000c0020 *4b020000a40c083600000002000c002b4b02004ca40c081c00000001000c00464b020034a50c08 *0800000001000c00504b02008ca70c080c00000001000c005a4b020088aa0c081000000001000c *00644b0200f0a40c080e00000002000c006f4b020000a50c080e00000002000c00794b02002ca5 *0c081c00000001000c00834b020034a50c082a00000002000c008e4b020060a50c080900000002 *000c00994b020074a50c080800000001000c00a34b020074a50c080e00000002000c00ac4b0200 *84a50c080e00000002000c00b74b0200a8a50c081400000001000c00c14b0200b8a50c08100000 *0001000c00cb4b0200b8a50c081e00000002000c00d64b0200e0a50c080800000001000c00e04b *0200e0a50c082c00000002000c00e94b020014a60c080800000001000c00f34b020014a60c0812 *00000002000c00fc4b020028a60c080e00000002000c00074c020040a60c080800000001000c00 *114c020040a60c082c00000002000c001a4c020074a60c080800000001000c00244c020074a60c *081500000002000c002d4c02008ca60c080e00000002000c00384c0200a4a60c08080000000100 *0c00424c0200a4a60c082c00000002000c004b4c0200d8a60c080800000001000c00554c0200d8 *a60c081500000002000c005e4c0200f0a60c080e00000002000c00694c020008a70c0808000000 *01000c00734c020008a70c082c00000002000c007c4c02003ca70c080800000001000c00864c02 *003ca70c081500000002000c008f4c020054a70c080e00000002000c009a4c020080a70c081c00 *000001000c00a44c02008ca70c084b00000002000c00af4c0200d8a70c080200000002000c00b9 *4c020030a80c083100000002000c00c44c0200e4a70c080800000001000c00ce4c0200e4a70c08 *3100000002000c00d74c020030a80c081800000001000c00e14c02006ca80c080800000001000c *00eb4c02006ca80c082d00000002000c00f44c0200a4a80c080800000001000c00fe4c0200a4a8 *0c082a00000002000c00094d0200d8a80c080800000001000c00134d0200d8a80c080800000002 *000c001c4d0200e8a80c080800000001000c00264d0200e8a80c081500000002000c002f4d0200 *0ca90c080c00000001000c00394d02000ca90c081e00000002000c00444d020038a90c080c0000 *0001000c004e4d020038a90c084d00000002000c00594d020094a90c080c00000001000c00634d *020094a90c086b00000002000c006c4d02000caa0c080c00000001000c00764d02000caa0c084b *00000002000c007f4d020064aa0c080c00000001000c00894d020064aa0c081400000002000c00 *924d020088aa0c083e00000002000c009d4d0200c8aa0c080800000001000c00b64d02003cac0c *081000000001000c00c04d020070ac0c080c00000001000c00ca4d020038ab0c080c0000000100 *0c00d44d020038ab0c085300000002000c00dd4d020098ab0c080c00000001000c00e74d020098 *ab0c083000000002000c00f24d0200d4ab0c080c00000001000c00fc4d0200d4ab0c0856000000 *02000c00054e02003cac0c082600000002000c00104e020070ac0c083600000002000c00600602 *006018120804000000010017001b4e020064ad0c080400000001000c002c4e020078af0c080c00 *000001000c00364e020098ad0c080b00000002000c00414e0200acad0c080800000001000c004b *4e0200acad0c085f00000002000c00544e020014ae0c080800000001000c005e4e020014ae0c08 *1500000002000c00674e02002cae0c081200000002000c00724e020048ae0c080800000001000c *007c4e020048ae0c084800000002000c00854e020098ae0c080800000001000c008f4e020098ae *0c083600000002000c009a4e0200d0ae0c084d00000002000c00a54e020034af0c081400000001 *000c00af4e020034af0c082000000002000c00b94e02006caf0c081800000001000c00c34e0200 *78af0c081b00000002000c00cc4e020000b00c080c00000001000c00e44e02001cb30c08100000 *0001000c00ee4e020070b00c080800000001000c00f84e020070b00c083100000002000c00014f *0200b0b00c080c00000001000c000b4f0200b0b00c082600000002000c00164f0200d8b00c0802 *00000002000c00204f020008b10c082100000002000c002b4f0200e4b00c080800000001000c00 *354f0200e4b00c080b00000002000c003e4f020008b10c081800000001000c00484f020034b10c *080800000001000c00524f020034b10c080b00000002000c005b4f02004cb10c080c0000000100 *0c00654f02004cb10c082600000002000c006e4f020074b10c082000000002000c00794f020094 *b10c082000000002000c00844f0200c8b10c081400000001000c008e4f0200d4b10c080c000000 *01000c00984f0200d4b10c085600000002000c00a14f020038b20c080c00000001000c00ab4f02 *0038b20c082500000002000c00b44f020060b20c081100000002000c00bf4f020074b20c083d00 *000002000c00ca4f0200b4b20c083d00000002000c00d54f02000cb30c081800000001000c00df *4f02001cb30c083000000002000c00ea4f02004cb30c081000000001000c000150020044b40c08 *1000000001000c000b5002000cb40c080c00000001000c00155002000cb40c082700000002000c *001e50020044b40c082c00000002000c002950020070b40c081000000001000c004250020078b5 *0c081000000001000c004c5002003cb50c080c00000001000c00565002003cb50c082c00000002 *000c005f50020078b50c083200000002000c006a500200acb50c081000000001000c0083500200 *2cb60c080c00000001000c008d5002009cb70c081000000001000c009750020054b80c08140000 *0001000c00a15002002cb60c082900000002000c00ac50020058b60c080800000002000c00b750 *020060b60c080800000002000c00c250020068b60c080800000002000c00cd50020070b60c0808 *00000002000c00d850020080b60c080800000001000c00e250020080b60c085800000002000c00 *eb500200e0b60c080800000001000c00f5500200e0b60c082a00000002000c000051020014b70c *080800000001000c000a51020014b70c084400000002000c001351020058b70c080f0000000200 *0c001d5102008cb70c082400000001000c00275102009cb70c082a00000002000c0032510200c8 *b70c083a00000002000c003d51020004b80c083a00000002000c004851020054b80c0808000000 *01000c005f51020000b90c081400000001000c006951020090b80c080b00000002000c00745102 *00a8b80c080c00000001000c007e510200a8b80c080800000002000c0087510200bcb80c080c00 *000001000c0091510200bcb80c081b00000002000c009a510200d8b80c081200000002000c00a5 *51020000b90c080400000001000c00bd51020094b90c080c00000001000c00c751020038b90c08 *1000000001000c00e151020008bc0c087900000002000c00ea51020094b90c082600000002000c *00f3510200d4b90c081000000001000c00fd510200d4b90c083700000002000c006cb6010018ba *0c080c00000001000c000852020018ba0c081700000002000c001152020040ba0c081000000001 *000c001b52020040ba0c083700000002000c002652020080ba0c080800000001000c0030520200 *80ba0c080b00000002000c00395202008cba0c085000000002000c0044520200ecba0c08100000 *0001000c004e520200ecba0c083700000002000c005952020030bb0c080c00000001000c006352 *020030bb0c081700000002000c006c52020054bb0c080c00000001000c007652020054bb0c087e *00000002000c007f520200d4bb0c081200000002000c008a520200fcbb0c081400000001000c00 *9452020008bc0c080c00000001000c009e52020084bc0c080400000001000c00b752020018bd0c *080c00000001000c00c1520200bcbc0c081000000001000c00dc520200c0be0c08790000000200 *0c00e552020018bd0c082600000002000c00ee52020058bd0c081000000001000c00f852020058 *bd0c083700000002000c00035302009cbd0c080c00000001000c000d5302009cbd0c0817000000 *02000c0016530200c4bd0c081000000001000c0020530200c4bd0c083700000002000c002b5302 *0004be0c080800000001000c003553020004be0c080b00000002000c003e53020010be0c085000 *000002000c00495302006cbe0c080c00000001000c00535302006cbe0c081f00000002000c005c *5302008cbe0c081200000002000c0067530200b4be0c081400000001000c0071530200c0be0c08 *0c00000001000c007b53020038c00c081400000001000c008553020094bf0c080e00000002000c *0090530200a4bf0c080e00000002000c009b530200c8bf0c081400000001000c00a5530200c8bf *0c080f00000002000c00b0530200d8bf0c080e00000002000c00bb530200e8bf0c081100000002 *000c00c653020010c00c081400000001000c00d053020010c00c081400000002000c00db530200 *40c10c081400000001000c00e553020050c00c080e00000002000c00f053020060c00c080e0000 *0002000c00fb53020084c00c081400000001000c000554020084c00c080f00000002000c001054 *020094c00c080e00000002000c001b540200acc00c080800000001000c0025540200acc00c0828 *00000002000c002e540200dcc00c080800000001000c0038540200dcc00c081400000002000c00 *41540200f0c00c081400000002000c004c54020018c10c081400000001000c005654020018c10c *081400000002000c006154020094c10c080800000001000c006b54020094c10c08290000000200 *0c007654020014c20c080800000001000c008054020014c20c080d00000002000c008954020070 *c20c080c00000001000c009354020070c20c080800000002000c009e540200f0c20c0808000000 *01000c00a8540200acc20c080800000001000c00b2540200acc20c083b00000002000c00bb5402 *00f0c20c080b00000002000c00c454020074c30c080800000001000c00ce54020030c30c080800 *000001000c00d854020030c30c083b00000002000c00e154020074c30c080b00000002000c00ea *540200a0c30c080800000001000c00f4540200a0c30c080800000002000c00fd540200c8c30c08 *0800000001000c0007550200c8c30c080800000002000c0010550200f0c30c080800000001000c *001a550200f0c30c080800000002000c002355020070c40c080800000001000c002d5502002cc4 *0c080800000001000c00375502002cc40c083b00000002000c004055020070c40c080b00000002 *000c004955020070c50c080800000001000c005355020070c50c081c00000002000c005c550200 *c8c50c080800000001000c0066550200acc50c080800000001000c0070550200acc50c08110000 *0002000c0079550200c8c50c081400000002000c0082550200fcc50c080800000001000c008c55 *0200fcc50c082e00000002000c00955502002cc60c080400000001000c00ab55020070c70c080c *00000001000c00b555020054c60c080800000001000c00bf55020054c60c084500000002000c00 *ca550200a4c60c080800000001000c00d4550200a4c60c084500000002000c00df550200f8c60c *080c00000001000c00e9550200f8c60c086a00000002000c00f255020070c70c08140000000200 *0c00fb55020084c70c080400000001000c0010560200d0c70c080c00000001000c001a560200b0 *c70c080c00000001000c0024560200b0c70c081100000002000c002d560200d0c70c0814000000 *02000c0036560200e4c70c080400000001000c004956020068c80c080c00000001000c00535602 *0010c80c080c00000001000c005d56020010c80c084900000002000c006656020068c80c081400 *000002000c006f5602007cc80c080400000001000c00815602002cc90c080c00000001000c008b *560200b8c80c080800000001000c0095560200b8c80c082a00000002000c009e560200f0c80c08 *0c00000001000c00a8560200f0c80c083000000002000c00b15602002cc90c081400000002000c *00ba56020040c90c080400000001000c00cc560200f0c90c080c00000001000c00d65602007cc9 *0c080800000001000c00e05602007cc90c082a00000002000c00e9560200b4c90c080c00000001 *000c00f3560200b4c90c083000000002000c00fc560200f0c90c081400000002000c0005570200 *04ca0c080400000001000c001757020088ca0c080c00000001000c002157020030ca0c080c0000 *0001000c002b57020030ca0c084900000002000c003457020088ca0c081400000002000c003d57 *0200f0ca0c080800000001000c0047570200bcca0c080800000001000c0051570200bcca0c0829 *00000002000c005a570200f0ca0c081400000002000c006357020054cb0c080800000001000c00 *6d57020024cb0c080800000001000c007757020024cb0c082800000002000c008057020054cb0c *081400000002000c008957020068cb0c080800000001000c00a4570200f4cc0c08140000000100 *0c00ae57020000cc0c080b00000002000c00b95702000ccc0c080b00000002000c00c457020020 *cc0c080800000001000c00ce57020020cc0c083b00000002000c00d95702005ccc0c0851000000 *02000c00e4570200c4cc0c081400000001000c00ee570200c4cc0c081a00000002000c00f95702 *00c8cd0c081400000001000c000358020024cd0c080e00000002000c000e5802003ccd0c080800 *000001000c00185802003ccd0c082f00000002000c00235802006ccd0c084700000002000c002e *5802002cce0c081400000001000c0038580200f8cd0c080b00000002000c004358020004ce0c08 *1400000002000c004e58020090ce0c081400000001000c005858020058ce0c080e00000002000c *006358020068ce0c081200000002000c006e58020090ce0c080800000001000c008258020000cf *0c080800000001000c009658020070cf0c080800000001000c00aa580200e0cf0c080800000001 *000c00be58020028d10c081400000001000c00c858020084d00c080e00000002000c00d3580200 *9cd00c080800000001000c00dd5802009cd00c083000000002000c00e8580200ccd00c08470000 *0002000c00f358020024d40c081400000001000c00fd580200b4d10c080800000001000c000759 *0200b4d10c085500000002000c001059020014d20c080800000001000c001a59020014d20c0815 *00000002000c00235902002cd20c085c00000002000c002e59020090d20c080800000001000c00 *3859020090d20c084200000002000c0041590200d4d20c081500000002000c004c59020000d30c *081400000001000c005659020000d30c081400000002000c00615902001cd30c08080000000100 *0c006b5902001cd30c084200000002000c007459020060d30c081200000002000c007f5902007c *d30c080800000001000c00895902007cd30c083a00000002000c0092590200b8d30c0824000000 *02000c009d590200f0d30c081400000001000c00a7590200f0d30c082000000002000c00b25902 *0064d40c080800000001000c00bc59020064d40c082a00000002000c00c5590200b0d40c080800 *000001000c00cf590200b0d40c083d00000002000c00d859020010d50c080800000001000c00e2 *59020010d50c082700000002000c00eb590200e8d50c081400000001000c00f559020064d50c08 *2700000002000c00005a020094d50c080800000001000c000a5a020094d50c082300000002000c *00135a0200b8d50c081c00000002000c001e5a0200a0d80c081400000001000c00285a02001cd6 *0c080800000001000c00325a02001cd60c085500000002000c003b5a02007cd60c080800000001 *000c00455a02007cd60c081500000002000c004e5a020094d60c087000000002000c00595a0200 *0cd70c080800000001000c00635a02000cd70c084200000002000c006c5a020050d70c08150000 *0002000c00775a02007cd70c081400000001000c00815a02007cd70c081400000002000c008c5a *020098d70c080800000001000c00965a020098d70c084200000002000c009f5a0200dcd70c0812 *00000002000c00aa5a0200f8d70c080800000001000c00b45a0200f8d70c083a00000002000c00 *bd5a020034d80c082400000002000c00c85a02006cd80c081400000001000c00d25a02006cd80c *082000000002000c00dd5a020048db0c081400000001000c00e75a0200d4d80c08080000000100 *0c00f15a0200d4d80c085500000002000c00fa5a020034d90c080800000001000c00045b020034 *d90c081500000002000c000d5b02004cd90c085e00000002000c00185b0200b4d90c0808000000 *01000c00225b0200b4d90c084200000002000c002b5b0200f8d90c081500000002000c00365b02 *0024da0c081400000001000c00405b020024da0c081400000002000c004b5b020040da0c080800 *000001000c00555b020040da0c084200000002000c005e5b020084da0c081200000002000c0069 *5b0200a0da0c080800000001000c00735b0200a0da0c083a00000002000c007c5b0200dcda0c08 *2400000002000c00875b020014db0c081400000001000c00915b020014db0c082000000002000c *009c5b020048db0c080400000001000c00b75b0200fcdb0c081400000001000c00c15b020068db *0c084600000002000c00cc5b0200b0db0c083600000002000c00d75b0200fcdb0c080400000001 *000c00e95b0200c4dc0c081400000001000c00f35b02001cdc0c084c00000002000c00fe5b0200 *68dc0c084600000002000c00095c020000df0c081400000001000c00135c020010de0c080e0000 *0002000c0075a5000028de0c080800000001000c001e5c020028de0c082900000002000c00295c *020054de0c084100000002000c00345c020098de0c080800000002000c003f5c0200b4de0c0814 *00000001000c00706f0000bcde0c080800000001000c007a6f0000bcde0c081500000002000c00 *495c0200d4de0c081500000002000c00545c020000df0c080400000001000c00675c020078df0c *080800000001000c00715c0200b0df0c080c00000001000c007b5c0200c8df0c08100000000100 *0c00855c020078df0c082900000002000c00905c0200b0df0c080800000002000c009b5c0200c8 *df0c082a00000002000c00a65c0200f4df0c080400000001000c00bb91000050e00c0808000000 *01000c0039ee000060e30c081000000001000c00ba5c020050e00c082900000002000c00c55c02 *007ce00c080e00000002000c00d05c02008ce00c080800000002000c00db5c020094e00c080e00 *000002000c00e65c0200b8e00c081400000001000c00f05c0200c0e00c080800000001000c00fa *5c0200c0e00c082700000002000c00035d0200e8e00c081500000002000c000e5d020014e10c08 *1400000001000c00185d020014e10c080c00000002000c00235d020020e10c080e00000002000c *002d5d02005ce10c082c00000001000c00178c000068e10c080c00000001000c00375d020068e1 *0c082600000002000c00425d0200a0e10c081000000001000c004c5d0200a0e10c084000000002 *000c00575d0200ece10c080c00000001000c00615d0200ece10c084d00000002000c006c5d0200 *3ce20c080e00000002000c00775d02004ce20c080800000002000c00825d020054e20c080e0000 *0002000c008d5d020078e20c081400000001000c00975d020080e20c080800000001000c00a15d *020080e20c082700000002000c00aa5d0200a8e20c081500000002000c00b55d0200d4e20c0814 *00000001000c00bf5d0200d4e20c080c00000002000c00ca5d0200e0e20c080e00000002000c00 *d45d02001ce30c082c00000001000c00de5d020028e30c080c00000001000c00e85d020028e30c *082600000002000c0043ee000060e30c084900000002000c00f35d0200ace30c08140000000100 *0c00065e020028e40c080800000001000c00105e020014e70c081000000001000c00d28d00007c *ec0c081000000001000c001a5e020028e40c082900000002000c00255e020060e40c080c000000 *01000c002f5e020060e40c084100000002000c003a5e0200b0e40c080c00000001000c00445e02 *00b0e40c082c00000002000c004f5e020014e70c086b00000002000c00ea850000e4e40c080800 *000001000c005a5e0200e4e40c086c00000002000c00655e020058e50c080800000001000c006f *5e020058e50c084e00000002000c007a5e0200a8e50c080e00000002000c00855e0200b8e50c08 *0800000002000c00905e0200c0e50c080e00000002000c009b5e0200e4e50c081400000001000c *00a55e0200e4e50c080800000002000c00b05e0200ece50c080e00000002000c00bb5e020010e6 *0c081400000001000c00c55e020018e60c080800000001000c00cf5e020018e60c083d00000002 *000c00d85e020058e60c081500000002000c00e35e020084e60c081400000001000c00ed5e0200 *84e60c080c00000002000c00f85e020090e60c080e00000002000c00025f0200cce60c082c0000 *0001000c000c5f0200d8e60c080c00000001000c00165f0200d8e60c082c00000002000c00215f *02008ce70c080c00000001000c002b5f02008ce70c082c00000002000c0048900000c0e70c0808 *00000001000c00365f0200c0e70c085900000002000c00415f020024e80c080800000001000c00 *4b5f020024e80c082d00000002000c00565f020054e80c080e00000002000c00615f020064e80c *080800000002000c006c5f02006ce80c080e00000002000c00775f020090e80c08140000000100 *0c00815f020090e80c080e00000002000c008c5f0200a0e80c080e00000002000c00975f0200c4 *e80c081400000001000c00a15f0200cce80c080800000001000c00ab5f0200cce80c083d000000 *02000c00b45f02000ce90c081500000002000c00bf5f020038e90c081400000001000c00c95f02 *0038e90c080c00000002000c00d45f020044e90c080e00000002000c00de5f020080e90c082c00 *000001000c00e85f02008ce90c080c00000001000c00f25f02008ce90c082600000002000c00fd *5f0200c0e90c080c00000001000c0007600200c0e90c085100000002000c001260020020ea0c08 *0c00000001000c001c60020020ea0c084c00000002000c002760020078ea0c080c00000001000c *003160020078ea0c080800000002000c005599000090ea0c081000000001000c003c60020090ea *0c082a00000002000c00b48f0000c8ea0c080c00000001000c0047600200c8ea0c089000000002 *000c005260020058eb0c080e00000002000c005d60020068eb0c080800000002000c0068600200 *70eb0c080e00000002000c007360020094eb0c081400000001000c00b7eb00009ceb0c08080000 *0001000c007d6002009ceb0c082700000002000c0086600200c4eb0c081500000002000c009160 *0200f0eb0c081400000001000c009b600200f0eb0c080c00000002000c00a6600200fceb0c080e *00000002000c00b060020038ec0c082c00000001000c00108e000044ec0c080c00000001000c00 *ba60020044ec0c082600000002000c00c56002007cec0c084f00000002000c00d0600200ccec0c *080800000001000c00e860020034ed0c080800000001000c00046102009ced0c08040000000100 *0c0026610200d4ed0c080400000001000c004661020038ee0c080c00000001000c005061020038 *ee0c083500000002000c005b61020070ee0c080800000001000c0073610200d8ee0c0808000000 *01000c009961020040ef0c080400000001000c00bb61020078ef0c080400000001000c00db6102 *00dcef0c080c00000001000c00e5610200dcef0c083500000002000c00f061020014f00c080400 *000001000c000862020078f00c080800000001000c002e620200e0f00c080400000001000c0050 *62020018f10c080400000001000c00706202007cf10c080c00000001000c007a6202007cf10c08 *3500000002000c00856202004cf20c080800000001000c00a06202009cf20c081400000001000c *00aa62020070f20c080a00000002000c00b56202007cf20c080a00000002000c00c06202009cf2 *0c080c00000001000c00df620200c4f50c081400000001000c00e9620200c4f20c080c00000002 *000c00f4620200d0f20c083500000002000c00ff62020008f30c083d00000002000c000a630200 *48f30c083d00000002000c00156302009cf30c081400000001000c001f630200a8f30c080c0000 *0001000c0029630200a8f30c083600000002000c0034630200e0f30c084e00000002000c003f63 *020044f40c081400000001000c004963020054f40c081000000001000c005363020054f40c0829 *00000002000c005e6302008cf40c080c00000001000c00686302008cf40c084700000002000c00 *73630200d4f40c080c00000002000c007e630200e0f40c080c00000002000c008963020000f50c *081400000001000c00936302000cf50c080c00000001000c009d6302000cf50c08510000000200 *0c00a863020060f50c084e00000002000c00fa20000040f60c080800000001000c000421000040 *f60c085100000002000c00b3630200d0f60c080800000001000c00bd630200b4f60c0808000000 *01000c00c7630200b4f60c081100000002000c00d0630200d0f60c081400000002000c00d96302 *00e4f60c080400000001000c00f8630200a8f90c081400000001000c000264020004f70c080c00 *000002000c000d64020010f70c083500000002000c001b10000050f70c080800000001000c0025 *10000050f70c084000000002000c001864020098f70c080800000001000c002264020098f70c08 *3600000002000c002d640200d0f70c084e00000002000c003864020034f80c081400000001000c *004264020040f80c080c00000001000c004c64020040f80c082900000002000c005764020074f8 *0c080800000001000c006164020074f80c084700000002000c006c640200c4f80c080800000001 *000c0076640200c4f80c084000000002000c007f6402000cf90c080800000001000c0089640200 *0cf90c083600000002000c009464020044f90c084e00000002000c009f640200dcf90c08080000 *0001000c00a9640200dcf90c081c00000002000c00b264020040fa0c080800000001000c00cb64 *020094fa0c081400000001000c00d564020068fa0c080c00000002000c00e064020074fa0c080c *00000002000c00eb64020094fa0c080400000001000c000365020004fb0c080c00000001000c00 *0d65020004fb0c082f00000002000c001865020034fb0c080400000001000c003165020064fb0c *080c00000001000c003b65020064fb0c080b00000002000c004465020070fb0c08040000000100 *0c008c140000b0fb0c080c00000001000c005f650200b0fb0c081500000002000c0012140000fc *fb0c080800000001000c0068650200fcfb0c081200000002000c007165020010fc0c0804000000 *01000c00a70300006cfc0c080800000001000c008c65020014ff0c081000000001000c00b10300 *006cfc0c082900000002000c009665020098fc0c080f00000002000c00a1650200a8fc0c083500 *000002000c00ac650200e8fc0c080800000001000c00b6650200e8fc0c085300000002000c00c1 *6502003cfd0c085400000002000c00cc650200a4fd0c081400000001000c00d6650200b0fd0c08 *0c00000001000c00e0650200b0fd0c082f00000002000c00eb650200e8fd0c080800000001000c *00f5650200e8fd0c084d00000002000c004204000040fe0c080800000001000c004c04000040fe *0c085900000002000c00006602009cfe0c085400000002000c000b66020004ff0c081400000001 *000c001566020014ff0c082600000002000c002066020098ff0c080800000001000c002a660200 *5cff0c080800000001000c00346602005cff0c081700000002000c003d6602007cff0c08080000 *0001000c00476602007cff0c081400000002000c005066020098ff0c081400000002000c005966 *020008000d080800000001000c0063660200ccff0c080800000001000c006d660200ccff0c0831 *00000002000c007666020008000d081400000002000c007f6602001c000d080400000001000c00 *a066020054000d084000000001000c00bf660200d4040d080c00000001000c00c9660200f8000d *080c00000001000c00d3660200f8000d082d00000002000c00dc66020028010d080a0000000200 *0c00e766020034010d080a00000002000c00f266020040010d080a00000002000c00fd6602004c *010d080a00000002000c000867020058010d080a00000002000c001367020084010d0820000000 *01000c001d67020090010d080c00000001000c002767020090010d087200000002000c00306702 *0010020d080c00000001000c003a67020010020d082a00000002000c00456702003c020d080d00 *000002000c00506702004c020d080a00000002000c005b67020058020d080a00000002000c0066 *6702007c020d081800000001000c007067020088020d080c00000001000c007a67020088020d08 *2a00000002000c0085670200b4020d083a00000002000c008f67020008030d081800000001000c *009967020008030d080d00000002000c00a467020018030d080200000002000c00ae6702004803 *0d089000000002000c00b967020024030d080800000001000c00c367020024030d080b00000002 *000c00cc67020048030d081800000001000c00d6670200e0030d080800000001000c00e0670200 *e0030d082d00000002000c00e967020010040d080c00000002000c00f467020030040d08140000 *0001000c00fe6702003c040d080c00000001000c00086802003c040d088b00000002000c001168 *0200d4040d082a00000002000c001c68020000050d080400000001000c003868020038050d080c *00000001000c004268020038050d084800000002000c004b680200ac050d080800000001000c00 *55680200ac050d082400000002000c00f1130200fc050d080800000001000c0010140200fc050d *082400000002000c005e6802004c060d080800000001000c00686802004c060d08240000000200 *0c0071680200b4060d083100000002000c0079680200a4060d080800000001000c0082680200a4 *060d080500000002000c008a680200b4060d080800000001000c009368020028070d0808000000 *01000c009d68020028070d082a00000002000c00a668020088070d080800000001000c00b06802 *0088070d081a00000002000c00b9680200c4070d080800000001000c00c3680200c4070d082d00 *000002000c00cc6802004c080d080800000001000c00d668020014080d080800000001000c00e0 *68020014080d082e00000002000c00e96802004c080d081400000002000c00f2680200b8080d08 *0800000001000c00fc68020080080d080800000001000c000669020080080d082f00000002000c *000f690200b8080d081400000002000c001869020024090d080800000001000c0022690200ec08 *0d080800000001000c002c690200ec080d082e00000002000c003569020024090d081400000002 *000c003e690200a8090d080400000001000c00616902000c0a0d080800000001000c0076690200 *3c0b0d080800000001000c0080690200b40b0d080800000001000c008a690200780a0d08020000 *0002000c0094410200d00a0d082900000002000c0094690200840a0d080800000001000c009e69 *0200840a0d083100000002000c008a410200d00a0d081800000001000c00a7690200040b0d0808 *00000001000c00b1690200040b0d082d00000002000c00ba6902003c0b0d082a00000002000c00 *c5690200700b0d080800000001000c00cf690200700b0d083b00000002000c00d8690200b40b0d *080900000002000c00e16902000c0d0d080800000001000c00eb6902006c0c0d08080000000100 *0c00f56902006c0c0d082200000002000c00fe690200980c0d080800000001000c00086a020098 *0c0d083000000002000c00136a0200d00c0d080800000001000c001d6a0200d00c0d0832000000 *02000c00266a02000c0d0d081500000002000c002f6a0200140e0d080400000001000c00526a02 *00840e0d080800000001000c005c6a0200840e0d082900000002000c00676a0200b00e0d080c00 *000001000c008c6a0200ac100d080c00000001000c00966a0200040f0d080c00000001000c00a0 *6a0200040f0d082600000002000c00a96a0200380f0d080c00000001000c00b36a0200380f0d08 *2100000002000c00bc6a0200680f0d080c00000001000c00c66a0200680f0d083d00000002000c *00cf6a0200b00f0d080800000001000c00d96a0200b00f0d083700000002000c00e26a0200f40f *0d080c00000001000c00ec6a0200f40f0d081b00000002000c00f56a02001c100d080c00000001 *000c00ff6a02001c100d081800000002000c00086b020040100d080c00000001000c00126b0200 *40100d081200000002000c001b6b020060100d080c00000001000c00256b020060100d083f0000 *0002000c002e6b0200ac100d081b00000002000c00376b02009c110d080800000001000c00416b *0200fc100d080800000001000c004b6b0200fc100d082200000002000c00546b020028110d0808 *00000001000c005e6b020028110d083000000002000c00696b020060110d080800000001000c00 *736b020060110d083200000002000c007c6b02009c110d081500000002000c00856b02001c120d *080800000001000c008f6b02001c120d083300000002000c00986b020050120d08040000000100 *0c00ca6b0200b4120d080800000001000c00e66b020024130d080400000001000c00026c020040 *140d080800000001000c000c6c02007c130d080200000002000c00166c0200d4130d082b000000 *02000c00216c020088130d080800000001000c002b6c020088130d083100000002000c00346c02 *00d4130d081800000001000c003e6c020008140d080800000001000c00486c020008140d082d00 *000002000c00516c020040140d082a00000002000c005c6c02006c140d080800000001000c0078 *6c0200d8140d080800000001000c00826c0200d8140d082900000002000c008d6c020004150d08 *0800000001000c00a96c020070150d080800000001000c00b36c020070150d082900000002000c *00be6c02009c150d080c00000001000c00da6c020008170d080c00000001000c00e46c0200f015 *0d080800000001000c00ee6c0200f0150d080900000002000c00f76c020004160d080800000001 *000c00016d020004160d081800000002000c000a6d020028160d080c00000001000c00146d0200 *28160d080b00000002000c001d6d020040160d080c00000001000c00276d020040160d08090000 *0002000c00306d020058160d080c00000001000c003a6d020058160d082100000002000c00436d *020088160d080c00000001000c004d6d020088160d081600000002000c00566d0200ac160d080c *00000001000c00606d0200ac160d084d00000002000c00696d020008170d082600000002000c00 *726d020030170d080c00000001000c00976d020050180d080c00000001000c00a16d020084180d *080c00000001000c00ab6d0200301b0d081800000001000c00b56d0200b4170d08080000000100 *0c00bf6d0200b4170d082f00000002000c00ca6d0200ec170d080800000001000c00d46d0200ec *170d085600000002000c00dd6d020050180d082600000002000c00e86d020084180d0829000000 *02000c00f36d0200b0180d080500000002000c00fd6d0200301b0d083200000002000c00086e02 *00c0180d080800000001000c00126e0200c0180d084700000002000c001d6e020008190d080200 *000002000c00276e020060190d082a00000002000c00326e020014190d080800000001000c003c *6e020014190d083100000002000c00456e020060190d081800000001000c004f6e020094190d08 *0800000001000c00596e020094190d083300000002000c00626e0200d0190d080800000001000c *006c6e0200d0190d083000000002000c00776e0200081a0d080800000001000c00816e0200081a *0d080b00000002000c008a6e0200241a0d081000000001000c00946e0200241a0d085600000002 *000c009f6e0200841a0d080800000001000c00a96e0200841a0d080600000002000c00b26e0200 *981a0d080c00000001000c00bc6e0200981a0d086200000002000c00c56e0200081b0d080c0000 *0001000c00cf6e0200081b0d080f00000002000c00d86e0200841b0d080800000001000c00e26e *0200841b0d082000000002000c00eb6e0200c41b0d080800000001000c00f56e0200c41b0d0820 *00000002000c00fe6e0200481d0d081400000001000c00086f0200fc1c0d080800000002000c00 *7eb200000c1d0d080800000001000c0088b200000c1d0d081400000002000c00136f0200201d0d *081200000002000c001e6f02002c1e0d081400000001000c00286f0200741d0d080b0000000200 *0c00173e0200881d0d080800000001000c00336f0200881d0d083700000002000c003c6f0200c8 *1d0d080800000001000c00466f0200c81d0d081800000002000c00353e0200e81d0d0808000000 *01000c004f6f0200e81d0d081500000002000c00586f0200001e0d081500000002000c00636f02 *002c1e0d080400000001000c00796f0200a81e0d080800000001000c00836f0200a81e0d083e00 *000002000c00600602006418120804000000010017008c6f0200901f0d080800000001000c0096 *6f0200901f0d083300000002000c009f6f020050200d080800000001000c00a96f020050200d08 *3300000002000c00b26f020000210d080800000001000c00bc6f020000210d083300000002000c *00c56f0200c8210d080800000001000c00cf6f0200c8210d083100000002000c00d86f02009822 *0d080800000001000c00e26f020014220d080200000002000c00ec6f02006c220d082400000002 *000c007433010020220d080800000001000c007e33010020220d083100000002000c00f76f0200 *6c220d081800000001000c000170020098220d082d00000002000c000a70020064230d08080000 *0001000c0014700200e0220d080200000002000c001e70020038230d082400000002000c002970 *0200ec220d080800000001000c0033700200ec220d083100000002000c003c70020038230d0818 *00000001000c004670020064230d082d00000002000c004f70020058240d080800000001000c00 *59700200d4230d080200000002000c00637002002c240d082400000002000c00fa320100e0230d *080800000001000c0004330100e0230d083100000002000c006e7002002c240d08180000000100 *0c007870020058240d082d00000002000c0081700200e4250d080400000001000c00b070020084 *280d080c00000001000c00ba700200bc280d080c00000001000c00c4700200b0260d080b000000 *02000c00cf700200bc260d080b00000002000c00da700200d4260d080c00000001000c00e47002 *00d4260d084100000002000c00ef70020020270d080800000001000c00f970020020270d084d00 *000002000c00047102007c270d080c00000001000c000e7102007c270d080800000002000c0019 *71020090270d080c00000001000c002371020090270d085400000002000c002e710200e4270d08 *4400000002000c00397102003c280d081400000001000c00437102003c280d082600000002000c *004e71020078280d081400000001000c005871020084280d082900000002000c0063710200bc28 *0d082d00000002000c006e71020084290d080c00000001000c007871020070290d080c00000001 *000c008271020070290d080800000002000c008d71020084290d085400000002000c0098710200 *542a0d081800000001000c00a2710200f0290d083400000002000c00ad710200242a0d080b0000 *0002000c00b8710200302a0d080b00000002000c00c3710200542a0d080800000001000c00f271 *0200b0300d082c00000001000c00fc7102008c2a0d080c00000001000c002a7202009c320d082c *00000001000c0034720200c82a0d080c00000001000c005f720200c0330d082c00000001000c00 *69720200042b0d080800000002000c0074720200182b0d080c00000001000c007e720200182b0d *083500000002000c0089720200502b0d084700000002000c0094720200982b0d08140000000200 *0c009f720200ac2b0d081400000002000c00a9720200ec2b0d082c00000001000c00b3720200f8 *2b0d080c00000001000c00bd720200f82b0d083600000002000c00c8720200302c0d0853000000 *02000c00d3720200902c0d080c00000001000c00dd720200902c0d083500000002000c00e87202 *00c82c0d084d00000002000c00f3720200242d0d080c00000001000c00fd720200242d0d083500 *000002000c0008730200682d0d080c00000001000c0012730200682d0d083500000002000c001d *730200a02d0d086600000002000c0028730200082e0d080e00000002000c0033730200242e0d08 *0c00000001000c003d730200242e0d083600000002000c00487302005c2e0d084300000002000c *0053730200a02e0d081200000002000c005d730200e02e0d082c00000001000c0067730200e02e *0d080f00000002000c0072730200042f0d081400000001000c007c730200042f0d080c00000002 *000c0087730200102f0d081200000002000c0091730200502f0d082c00000001000c009b730200 *502f0d080f00000002000c00a67302006c2f0d080c00000001000c00b07302006c2f0d08360000 *0002000c00bb730200a42f0d084300000002000c00c6730200fc2f0d081400000001000c00d073 *0200fc2f0d080c00000002000c00db7302001c300d081400000001000c00e57302001c300d081e *00000002000c00f07302003c300d080800000002000c00fa73020070300d082c00000001000c00 *0474020070300d081200000002000c000f740200bc300d080c00000001000c0019740200bc300d *082900000002000c0024740200e8300d081800000002000c002e7402002c310d082c0000000100 *0c00387402002c310d083b00000002000c004374020074310d080c00000001000c004d74020074 *310d083500000002000c0058740200ac310d084500000002000c006374020000320d080c000000 *01000c006d74020000320d082900000002000c00787402002c320d084100000002000c00827402 *00a8320d080c00000001000c008c740200a8320d082900000002000c0097740200d4320d083d00 *000002000c00a274020020330d080c00000001000c00ac74020020330d082900000002000c00b7 *7402004c330d083d00000002000c00c27402008c330d080500000002000c00cc740200c0330d08 *1000000001000c00fd740200bc370d082c00000001000c00077502000c340d080800000001000c *003575020040380d081400000001000c003f75020048340d081800000001000c00687502001c3d *0d082c00000001000c0072750200a4340d080e00000002000c007d750200b4340d080e00000002 *000c0088750200c4340d080f00000002000c009275020000350d082c00000001000c009c750200 *00350d082500000002000c00a675020054350d082c00000001000c00eb0d020060350d080c0000 *0001000c00f50d020060350d084200000002000c00b0750200a4350d085000000002000c00ba75 *020020360d082c00000001000c00c475020020360d081800000002000c00ce75020064360d082c *00000001000c00d875020064360d082400000002000c00e2750200b4360d082c00000001000c00 *ec750200b4360d081200000002000c00f6750200f4360d082c00000001000c000076020000370d *080c00000001000c000a76020000370d081800000002000c001376020018370d08050000000200 *0c001e76020020370d080600000002000c00297602003c370d081400000001000c00337602003c *370d081800000002000c003e76020068370d081400000001000c004876020068370d080c000000 *02000c005376020074370d080e00000002000c005e76020084370d080b00000002000c00687602 *00bc370d080e00000002000c0073760200cc370d081800000002000c007d76020010380d082c00 *000001000c008776020010380d081b00000002000c009276020048380d080b00000002000c009c *76020080380d082c00000001000c00a676020080380d081100000002000c00b176020094380d08 *2500000002000c00bb760200e8380d082c00000001000c00c5760200e8380d081b00000002000c *00d076020018390d081400000001000c00da76020018390d080c00000002000c00e57602003039 *0d080c00000001000c00ef76020030390d082f00000002000c00fa7602006c390d080c00000001 *000c00047702006c390d085d00000002000c000f770200cc390d084d00000002000c001a770200 *283a0d080c00000001000c0024770200283a0d083e00000002000c002f770200683a0d085f0000 *0002000c003a770200d43a0d080c00000001000c0044770200d43a0d083e00000002000c004f77 *0200143b0d085900000002000c005a7702007c3b0d080c00000001000c00647702007c3b0d082f *00000002000c006f770200b83b0d080c00000001000c0079770200b83b0d085d00000002000c00 *7b0e0200243c0d080c00000001000c00850e0200243c0d083b00000002000c0084770200603c0d *087200000002000c008f770200d43c0d080e00000002000c009a770200e43c0d080a0000000200 *0c00a47702001c3d0d081400000001000c00cc770200f0420d082c00000001000c00d67702006c *3d0d081000000001000c0004780200dc450d082c00000001000c000e780200b83d0d080b000000 *02000c0018780200f03d0d082c00000001000c0022780200f03d0d081100000002000c002d7802 *00043e0d082500000002000c0037780200583e0d082c00000001000c0041780200583e0d081b00 *000002000c004c780200883e0d081400000001000c0056780200883e0d080c00000002000c0061 *780200943e0d080800000002000c006b780200c83e0d082c00000001000c0075780200d43e0d08 *0c00000001000c007f780200d43e0d083000000002000c008a780200103f0d080c00000001000c *0094780200103f0d085800000002000c009f780200683f0d084700000002000c00aa780200bc3f *0d080c00000001000c00b4780200bc3f0d085900000002000c00bf78020018400d085f00000002 *000c00ca78020084400d080c00000001000c00d478020084400d083e00000002000c00df780200 *c4400d085900000002000c00ea78020020410d080800000002000c00f478020054410d082c0000 *0001000c00fe78020060410d080c00000001000c000879020060410d083000000002000c001379 *02009c410d080c00000001000c001d7902009c410d085800000002000c002879020000420d080c *00000001000c003279020000420d083b00000002000c003d7902003c420d086c00000002000c00 *48790200a8420d080e00000002000c0053790200b8420d080a00000002000c005d790200f0420d *080e00000002000c006879020000430d081800000002000c007279020044430d082c0000000100 *0c007c79020044430d081200000002000c008679020084430d082c00000001000c009079020090 *430d080c00000001000c009a79020090430d081b00000002000c00a3790200b8430d080c000000 *01000c00ad790200b8430d083000000002000c00b8790200e8430d084400000002000c00c27902 *0058440d082c00000001000c00cc79020058440d081200000002000c00d679020098440d082c00 *000001000c00e079020098440d081500000002000c00ea790200dc440d082c00000001000c00f4 *790200dc440d081200000002000c00fe7902001c450d082c00000001000c00087a02001c450d08 *1500000002000c00137a020034450d081500000002000c001e7a020060450d081400000001000c *00287a020060450d080c00000002000c00337a02006c450d080e00000002000c003e7a02008845 *0d080c00000001000c00487a020088450d081400000002000c00517a02009c450d081100000002 *000c005b7a0200dc450d082000000001000c00867a0200345f0d081c00000001000c00907a0200 *18460d080f00000002000c009a7a020054460d082c00000001000c00a47a020054460d08150000 *0002000c00af7a02006c460d080f00000002000c00b97a0200a8460d082c00000001000c00c37a *0200a8460d081500000002000c00ce7a0200cc460d080c00000001000c00d87a0200cc460d082d *00000002000c00e17a020008470d080c00000001000c00eb7a020008470d081400000002000c00 *f47a020028470d080c00000001000c00fe7a020028470d083000000002000c00097b020058470d *080e00000002000c00147b020070470d080800000001000c001e7b020070470d08320000000200 *0c00297b0200c84a0d082f00000002000c00347b0200a4470d084700000002000c003f7b0200f4 *470d080800000001000c00497b0200f4470d085300000002000c00547b0200ec4e0d082f000000 *02000c005f7b020048480d085900000002000c006a7b0200ac480d080800000001000c00747b02 *00ac480d083500000002000c007f7b0200e4480d085300000002000c008a7b020040490d080800 *000001000c00947b020040490d083200000002000c009f7b020074490d081100000002000c00aa *7b020088490d080800000002000c00b57b0200a4490d081400000001000c00bf7b0200a4490d08 *1100000002000c00ca7b0200b8490d080800000002000c00d57b0200d4490d081400000001000c *00df7b0200e0490d080c00000001000c00e97b0200e0490d087200000002000c00f27b0200544a *0d081a00000002000c00fd7b0200704a0d080e00000002000c00087c0200804a0d080a00000002 *000c00127c0200b84a0d082c00000001000c001c7c0200c84a0d081000000001000c00267c0200 *f84a0d080e00000002000c00317c0200104b0d080800000001000c003b7c0200104b0d08170000 *0002000c00447c0200304b0d080800000001000c004e7c0200304b0d083c00000002000c00597c *02006c4b0d084d00000002000c00647c0200c44b0d080800000001000c006e7c0200c44b0d0830 *00000002000c00777c0200fc4b0d080800000001000c00817c0200fc4b0d083000000002000c00 *8c7c0200344c0d080800000001000c00967c0200344c0d085900000002000c00a17c0200904c0d *085f00000002000c00ac7c0200f04c0d081100000002000c00b77c02000c4d0d08080000000100 *0c00c17c02000c4d0d083800000002000c00cc7c0200444d0d081100000002000c00d77c020058 *4d0d080800000002000c00e27c0200744d0d081400000001000c00ec7c0200804d0d080c000000 *01000c00f67c0200804d0d082100000002000c00ff7c0200a44d0d081100000002000c000a7d02 *00b84d0d080800000002000c00157d0200d44d0d081400000001000c001f7d0200e04d0d080c00 *000001000c00297d0200e04d0d082100000002000c00327d0200104e0d080c00000001000c003c *7d0200104e0d086800000002000c00457d0200784e0d081a00000002000c00507d0200944e0d08 *0e00000002000c005b7d0200a44e0d080a00000002000c00657d0200dc4e0d082c00000001000c *006f7d0200ec4e0d081000000001000c00797d0200244f0d080800000001000c00837d0200244f *0d083000000002000c008c7d02005c4f0d080800000001000c00967d02005c4f0d081400000002 *000c009f7d0200784f0d080800000001000c00a97d0200784f0d083000000002000c00b47d0200 *b04f0d080800000001000c00be7d0200b04f0d083600000002000c00c77d0200f04f0d08080000 *0001000c00d17d0200f04f0d082a00000002000c00dc7d020024500d080800000001000c00e67d *020024500d081500000002000c00ef7d020044500d080800000001000c00f97d020044500d082a *00000002000c00047e020078500d080800000001000c000e7e020078500d081500000002000c00 *177e020098500d080800000001000c00217e020098500d082a00000002000c002c7e0200c4500d *080b00000002000c00377e0200d8500d080800000001000c00417e0200d8500d08320000000200 *0c004c7e0200685a0d085300000002000c00577e02000c510d084600000002000c00627e02005c *510d080800000001000c006c7e02005c510d083500000002000c00777e0200345c0d0835000000 *02000c00827e02009c510d080800000001000c008c7e02009c510d085f00000002000c00977e02 *0004520d080800000001000c00a17e020004520d082900000002000c00ac7e020030520d087100 *000002000c00b77e0200ac520d080800000001000c00c17e0200ac520d083500000002000c00cc *7e0200ec520d080800000001000c00d67e0200ec520d085f00000002000c00e17e020054530d08 *0800000001000c00eb7e020054530d082900000002000c00f67e020088530d080800000001000c *00007f020088530d087100000002000c00097f020004540d080800000001000c00137f02000454 *0d084e00000002000c001e7f02005c540d080800000001000c00287f02005c540d087200000002 *000c00337f0200d8540d080800000001000c003d7f0200d8540d087100000002000c00487f0200 *54550d080800000001000c00527f020054550d083500000002000c005d7f020094550d08080000 *0001000c00677f020094550d085f00000002000c00727f0200fc550d080800000001000c007c7f *0200fc550d082900000002000c00877f020030560d080800000001000c00917f020030560d0871 *00000002000c009a7f0200ac560d080800000001000c00a47f0200ac560d084e00000002000c00 *af7f020004570d080800000001000c00b97f020004570d087200000002000c00c47f020080570d *080800000001000c00ce7f020080570d087100000002000c00d97f0200fc570d08080000000100 *0c00e37f0200fc570d083500000002000c00ee7f02003c580d080800000001000c00f87f02003c *580d085f00000002000c0003800200a4580d080800000001000c000d800200a4580d0829000000 *02000c0018800200d8580d080800000001000c0022800200d8580d08e100000002000c002b8002 *00bc590d080c00000002000c0036800200e4590d081c00000001000c0040800200e4590d082000 *000002000c004b800200045a0d081700000002000c00568002001c5a0d080d00000002000c0060 *800200585a0d082c00000001000c006a800200685a0d081000000001000c0074800200bc5a0d08 *0b00000002000c007f800200d05a0d080800000001000c0089800200d05a0d083200000002000c *0094800200045b0d084600000002000c009f800200545b0d080800000001000c00a9800200545b *0d083500000002000c00b48002008c5b0d084b00000002000c00bf800200d85b0d080e00000002 *000c00ca800200e85b0d080d00000002000c00d4800200245c0d082c00000001000c00de800200 *345c0d081000000001000c00e88002006c5c0d081500000002000c00f2800200b05c0d082c0000 *0001000c00fc800200b05c0d081b00000002000c0006810200f85c0d082c00000001000c001081 *0200045d0d080c00000001000c001a810200045d0d081b00000002000c0023810200205d0d080f *00000002000c002e810200305d0d081500000002000c0038810200745d0d082c00000001000c00 *42810200745d0d081c00000002000c004c810200bc5d0d082c00000001000c0056810200bc5d0d *081500000002000c0061810200f05d0d081c00000001000c006b810200f05d0d08280100000200 *0c0075810200b0600d080c00000001000c009981020024610d080400000001000c00b681020068 *610d080c00000001000c00d6810200dc610d081400000001000c00f1810200a0630d0808000000 *01000c00fb810200d8630d080800000001000c000582020010640d080800000001000c000f8202 *0048640d080800000001000c001982020080640d080800000001000c0023820200b8640d080800 *000001000c002d820200f0640d080800000001000c0055d3000098730d080c00000001000c0037 *82020030740d080800000001000c004182020068740d080800000001000c004b820200a0740d08 *0800000001000c005582020040750d080c00000001000c005f820200a0630d082d00000002000c *006a820200d8630d082d00000002000c007582020010640d082d00000002000c00808202004864 *0d082d00000002000c008b82020080640d082d00000002000c0096820200b8640d082d00000002 *000c00a1820200f0640d082d00000002000c00ac8202002c650d080c00000001000c00b6820200 *2c650d084200000002000c00c18202007c650d080c00000001000c00cb8202007c650d08490000 *0002000c00d6820200d0650d080800000001000c00e0820200d0650d082d00000002000c00eb82 *020008660d080800000001000c00f582020008660d082d00000002000c000083020040660d0808 *00000001000c000a83020040660d082d00000002000c001583020078660d080800000001000c00 *1f83020078660d082d00000002000c002a830200b0660d080800000001000c0034830200b0660d *082d00000002000c003f830200e8660d080800000001000c0049830200e8660d082d0000000200 *0c005483020020670d080800000001000c005e83020020670d082d00000002000c006983020058 *670d080800000001000c007383020058670d082d00000002000c007e83020090670d0808000000 *01000c008883020090670d082d00000002000c0093830200c8670d080800000001000c009d8302 *00c8670d082d00000002000c00a883020000680d080800000001000c00b283020000680d082d00 *000002000c00bd83020038680d080800000001000c00c783020038680d082d00000002000c00d2 *83020070680d080800000001000c00dc83020070680d082d00000002000c00e7830200a8680d08 *0800000001000c00f1830200a8680d082d00000002000c00fc830200e0680d080800000001000c *0006840200e0680d082d00000002000c001184020018690d080800000001000c001b8402001869 *0d082d00000002000c002684020050690d080800000001000c003084020050690d082d00000002 *000c003b84020088690d080800000001000c004584020088690d082d00000002000c0050840200 *c0690d080800000001000c005a840200c0690d082d00000002000c0065840200f8690d08080000 *0001000c006f840200f8690d082d00000002000c007a840200306a0d080800000001000c008484 *0200306a0d082d00000002000c008f840200686a0d080800000001000c0099840200686a0d082d *00000002000c00a4840200a06a0d080800000001000c00ae840200a06a0d082d00000002000c00 *b9840200d86a0d080800000001000c00c3840200d86a0d082d00000002000c00ce840200106b0d *080800000001000c00d8840200106b0d082d00000002000c00e38402004c6b0d080c0000000100 *0c00ed8402004c6b0d08e600000002000c00f88402003c6c0d080800000001000c00028502003c *6c0d081300000002000c000b8502005c6c0d080c00000001000c00158502005c6c0d0826000000 *02000c004e9d00008c6c0d080800000001000c00589d00008c6c0d082300000002000c00208502 *00bc6c0d080c00000001000c002a850200bc6c0d082600000002000c007bd30000f06c0d080c00 *000001000c0035850200f06c0d089503000002000c004085020090700d080800000001000c004a *85020090700d082900000002000c0055850200bc700d084500000002000c006085020010710d08 *0c00000001000c006a85020010710d084300000002000c007385020054710d081500000002000c *007e85020080710d081400000001000c00888502008c710d080c00000001000c00928502008c71 *0d082a00000002000c009d850200c4710d080c00000001000c00a7850200c4710d085700000002 *000c00b08502001c720d082000000002000c00bb85020048720d080c00000001000c00c5850200 *48720d081b00000002000c00ce85020064720d081c00000002000c00d985020094720d08140000 *0001000c00e385020094720d080f00000002000c00ed850200b8720d081400000001000c00f785 *0200c8720d081000000001000c0001860200c8720d083700000002000c000c86020010730d0810 *00000001000c001686020010730d085100000002000c002186020064730d080800000002000c00 *2b8602008c730d082000000001000c003586020098730d088d00000002000c004086020030740d *082d00000002000c004b86020068740d082d00000002000c0056860200a0740d082d0000000200 *0c0061860200d8740d080800000001000c006b860200d8740d085900000002000c007486020040 *750d085c00000002000c007f8602009c750d080400000001000c009f86020000760d0804000000 *01000c00bd860200987d0d080c00000001000c00c786020044760d080800000001000c00d18602 *0044760d085d00000002000c00889c0000ac760d080800000001000c00da860200ac760d081300 *000002000c00e3860200c8760d080800000001000c00ed860200c8760d081900000002000c0084 *c50000ec760d080800000001000c008ec50000ec760d081e00000002000c00f686020014770d08 *0800000001000c000087020014770d082a00000002000c000987020048770d080800000001000c *001387020048770d080f00000002000c001c87020060770d080800000001000c00268702006077 *0d087900000002000c002f870200e4770d080800000001000c0039870200e4770d081c00000002 *000c004287020008780d080800000001000c004c87020008780d08d200000002000c0057870200 *e4780d080800000001000c0061870200e4780d081800000002000c006a87020004790d08080000 *0001000c007487020004790d082300000002000c007d87020028790d081600000002000c008887 *020048790d080800000001000c009287020048790d086800000002000c009b870200647a0d084d *00000002000c00a6870200b8790d080800000001000c00b0870200b8790d082100000002000c00 *b9870200e4790d080800000001000c00c3870200e4790d082a00000002000c00cc870200187a0d *080800000001000c00d6870200187a0d081500000002000c00df870200307a0d08120000000200 *0c00ea870200587a0d081400000001000c00f4870200647a0d080c00000001000c00fe870200bc *7a0d080800000001000c0008880200bc7a0d080b00000002000c0011880200d07a0d0808000000 *01000c001b880200d07a0d08c800000002000c004ea20100a07b0d080800000001000c00248802 *00a07b0d081800000002000c002d880200c07b0d080800000001000c0037880200c07b0d081c00 *000002000c0040880200e87b0d080c00000001000c004a880200e87b0d086400000002000c0053 *880200587c0d080c00000001000c005d880200587c0d086400000002000c0068c60000c87c0d08 *0c00000001000c0072c60000c87c0d083d00000002000c007bc60000147d0d080c00000001000c *0085c60000147d0d081200000002000c0066880200347d0d080c00000001000c0070880200347d *0d085600000002000c0079880200987d0d08ed00000002000c0082880200dc800d080800000001 *000c008c880200b87e0d080e00000002000c0097880200c87e0d081100000002000c0037430200 *9c7f0d082f00000002000c00a2880200dc7e0d084700000002000c00ad880200387f0d08140000 *0001000c00b7880200407f0d080800000001000c00c1880200407f0d082400000002000c00ca88 *0200647f0d081500000002000c00d5880200907f0d081400000001000c002d4302009c7f0d080c *00000001000c00df880200cc7f0d080b00000002000c00ea880200d87f0d082b00000002000c00 *f588020018800d081400000001000c00ff88020020800d080800000001000c000989020020800d *084d00000002000c001289020078800d080800000001000c001c89020078800d08100000000200 *0c002589020090800d080800000001000c002f89020090800d081900000002000c0025c50000b4 *800d080800000001000c002fc50000b4800d081e00000002000c0038890200dc800d0836000000 *02000c0041890200a8810d080400000001000c002e23010018820d080800000001000c00588902 *0018820d082d00000002000c006189020048820d080400000001000c0080890200b8820d080800 *000001000c008a890200b8820d082d00000002000c0093890200dc830d081400000001000c009d *89020014830d080e00000002000c00a88902002c830d080800000001000c00b28902002c830d08 *2900000002000c00bd89020060830d080800000001000c00c789020060830d084e00000002000c *00d0890200b0830d081500000002000c00db890200dc840d080800000001000c00e5890200b885 *0d081800000001000c00ef8902004c840d080800000001000c00f98902004c840d088500000002 *000c00028a0200dc840d082a00000002000c000d8a020008850d080500000002000c00178a0200 *b8850d083600000002000c00228a020018850d080800000001000c002c8a020018850d08490000 *0002000c00358a02006c850d080800000001000c003f8a02006c850d081200000002000c00488a *020088850d080800000001000c00528a020088850d081500000002000c005b8a02000c870d0808 *00000001000c00658a0200cc870d080c00000001000c006f8a020098860d080800000001000c00 *798a020098860d082d00000002000c00848a0200d0860d080800000001000c008e8a0200d0860d *083400000002000c00978a02000c870d082a00000002000c00a28a020038870d08090000000200 *0c00ad8a020044870d080e00000002000c00b88a020068870d081400000001000c00c28a020070 *870d080800000001000c00cc8a020070870d081e00000002000c00d58a020098870d0808000000 *01000c00df8a020098870d080c00000002000c00e88a0200ac870d080800000001000c00f28a02 *00ac870d081100000002000c00fb8a0200cc870d082f00000002000c00068b020090880d080800 *000001000c00108b020030880d080900000002000c001b8b020044880d080800000001000c0025 *8b020044880d081f00000002000c002e8b020064880d080f00000002000c00398b020088880d08 *1400000001000c00438b020090880d081800000002000c004c8b0200c8880d080800000001000c *00568b0200c8880d082700000002000c005f8b0200b0890d080800000001000c00698b02002489 *0d080900000002000c00748b020038890d080800000001000c007e8b020038890d080800000002 *000c00878b020048890d080800000001000c00918b020048890d083a00000002000c009a8b0200 *84890d080f00000002000c00a58b0200a8890d081400000001000c00af8b0200b0890d08180000 *0002000c00b88b02008c8c0d080c00000001000c00c28b02008c8c0d083500000002000c00cd8b *0200988a0d080800000001000c00d78b0200988a0d083f00000002000c00e08b0200d88a0d080c *00000002000c00eb8b0200ec8a0d080800000001000c00f58b0200ec8a0d083300000002000c00 *008c0200288b0d080800000001000c000a8c0200288b0d083c00000002000c00138c02006c8b0d *080800000001000c001d8c02006c8b0d083c00000002000c00288c0200a88b0d08020000000200 *0c00328c0200d88b0d082700000002000c003d8c0200b48b0d080800000001000c00478c0200b4 *8b0d080b00000002000c00508c0200d88b0d081800000001000c005a8c0200008c0d0869000000 *02000c00658c0200808c0d081400000001000c006f8c02001c8d0d080800000001000c00798c02 *00e48c0d080800000001000c00838c0200e48c0d083000000002000c008c8c02001c8d0d081400 *000002000c00958c0200888d0d080800000001000c009f8c0200fc8d0d080c00000001000c00a9 *8c0200888d0d082f00000002000c00b48c0200c08d0d080800000001000c00be8c0200c08d0d08 *1300000002000c00c78c0200dc8d0d080800000001000c00d18c0200dc8d0d081400000002000c *00da8c0200fc8d0d081e00000002000c00e58c02003c8e0d080800000001000c00ef8c02003c8e *0d082d00000002000c00f88c0200a88e0d080800000001000c00028d02008c8e0d080800000001 *000c000c8d02008c8e0d081300000002000c00158d0200a88e0d081400000002000c001e8d0200 *f48e0d080800000001000c00308d0200b0900d081400000001000c003a8d0200a88f0d080e0000 *0002000c00458d0200b88f0d080e00000002000c00508d0200dc8f0d081400000001000c005a8d *0200dc8f0d080f00000002000c00658d0200ec8f0d080e00000002000c00708d020004900d0808 *00000001000c007a8d020004900d082800000002000c00838d020034900d080800000001000c00 *8d8d020034900d081400000002000c00968d020048900d081d00000002000c00a18d02007c900d *081400000001000c00ab8d02007c900d081d00000002000c00b68d020004910d08080000000100 *0c00dd4a0000d0900d080800000001000c00c08d0200d0900d082900000002000c00c98d020004 *910d081400000002000c00d28d02006c910d080800000001000c00dc8d020038910d0808000000 *01000c00e68d020038910d082900000002000c00ef8d02006c910d081400000002000c00f88d02 *001c920d082c00000002000c00018e02001c920d080800000001000c000b8e0200c4930d080c00 *000001000c00158e0200c4930d086501000002000c00208e0200e0920d080800000001000c002a *8e0200e0920d082d00000002000c00552d000018930d080800000001000c005f2d000018930d08 *2f00000002000c002d2d000050930d080800000001000c00372d000050930d082f00000002000c *00358e020088930d080800000001000c003f8e020088930d082f00000002000c005a1e02009c95 *0d081400000001000c00441e020068950d080e00000002000c004f1e020078950d080e00000002 *000c004a8e020014960d080800000001000c005e8e020084960d080800000001000c00728e0200 *6c990d080c00000001000c007c8e02006c990d085d00000002000c00878e020020990d08080000 *0001000c00918e020020990d083f00000002000c009c8e0200849a0d080c00000001000c00a68e *0200849a0d085700000002000c00b18e0200349a0d080800000001000c00bb8e0200349a0d0841 *00000002000c00c68e0200fc9a0d080800000001000c00d08e0200fc9a0d082600000002000c00 *d98e0200809b0d080400000001000c00f58e0200709d0d080800000001000c00ff8e0200d89b0d *080800000001000c00098f0200d89b0d082c00000002000c00128f02000c9c0d08080000000100 *0c001c8f02000c9c0d082c00000002000c00258f0200409c0d080800000001000c002f8f020040 *9c0d083500000002000c00388f0200809c0d080800000001000c00428f0200809c0d0820000000 *02000c004b8f0200a89c0d080800000001000c00558f0200a89c0d085a00000002000c005e8f02 *000c9d0d080800000001000c00688f02000c9d0d085c00000002000c00718f0200709d0d080f00 *000002000c007a8f0200109e0d080800000001000c00848f0200109e0d082600000002000c008d *8f0200589e0d080800000001000c00978f0200589e0d082600000002000c00a08f0200d89f0d08 *0800000001000c00c38f020088a00d080c00000001000c00cd8f02004ca00d080800000001000c *00d78f02004ca00d083000000002000c00e08f020088a00d081700000002000c00e98f0200a0a0 *0d080800000001000c000d90020050a10d080c00000001000c001790020014a10d080800000001 *000c002190020014a10d083000000002000c002a90020050a10d081700000002000c0033900200 *68a10d080800000001000c005390020018a20d080c00000001000c005d900200dca10d08080000 *0001000c0067900200dca10d083000000002000c007090020018a20d081700000002000c007990 *020030a20d080800000001000c009b900200e0a20d080c00000001000c00a5900200a4a20d0808 *00000001000c00af900200a4a20d083000000002000c00b8900200e0a20d081700000002000c00 *c190020080a30d080800000001000c00cb90020014a50d080800000001000c00d590020080a30d *082e00000002000c00e0900200b8a30d080800000001000c00ea900200b8a30d08310000000200 *0c00f3900200f4a30d080800000001000c00fd900200f4a30d083800000002000c000691020034 *a40d080800000001000c001091020034a40d081400000002000c001991020054a40d080c000000 *01000c002391020054a40d083000000002000c002e91020084a40d080f00000002000c00399102 *0094a40d080f00000002000c0044910200b8a40d081400000001000c004e910200c0a40d080800 *000001000c0058910200c0a40d084900000002000c006191020014a50d084200000002000c006c *91020058a50d080400000001000c0091910200eca60d080c00000001000c009b91020098a50d08 *1400000002000c00a6910200b4a50d080800000001000c00b0910200b4a50d082900000002000c *00bb910200e8a50d080800000001000c00c5910200e8a50d082900000002000c00d09102001ca6 *0d080800000001000c00da9102001ca60d081100000002000c00e391020030a60d086400000002 *000c00ee910200a8a60d081400000001000c00f8910200b4a60d080c00000001000c0002920200 *b4a60d082a00000002000c000b920200eca60d081700000002000c001492020004a70d08080000 *0001000c003092020000aa0d080c00000001000c003a9202004ca70d080800000001000c004492 *02004ca70d085a00000002000c004d920200b0a70d080800000001000c0057920200b0a70d0814 *00000002000c0060920200cca70d080800000001000c006a920200cca70d084200000002000c00 *759202001ca80d080c00000001000c007f9202001ca80d082900000002000c008a92020048a80d *080200000002000c0094920200b8a80d082d00000002000c009f92020054a80d08080000000100 *0c00a992020054a80d080b00000002000c00b292020068a80d080800000001000c00bc92020068 *a80d081800000002000c00c59202008ca80d080c00000001000c00cf9202008ca80d0812000000 *02000c00d8920200b8a80d081800000001000c00e2920200f0a80d080800000001000c00ec9202 *00f0a80d083a00000002000c00f592020038a90d080c00000001000c00ff92020038a90d085300 *000002000c000893020098a90d080c00000001000c001293020098a90d085b00000002000c001b *93020000aa0d081200000002000c002493020014aa0d080400000001000c004593020044aa0d08 *0400000001000c006693020074aa0d080400000001000c00889302002cab0d080800000001000c *0092930200d8aa0d080800000001000c009c930200d8aa0d084900000002000c00a59302002cab *0d082d00000002000c00ae93020088ad0d081800000001000c00b8930200acab0d080500000002 *000c00c293020088ad0d083000000002000c00cd930200bcab0d080800000001000c00d7930200 *bcab0d083500000002000c00e2930200fcab0d080800000001000c00ec930200fcab0d085c0000 *0002000c00f593020060ac0d080800000001000c00ff93020060ac0d080c00000002000c000894 *020078ac0d080c00000001000c001294020078ac0d083300000002000c001d940200b4ac0d0808 *00000001000c0027940200b4ac0d080900000002000c0030940200c8ac0d080800000001000c00 *3a940200c8ac0d081b00000002000c0043940200ecac0d080800000001000c004d940200ecac0d *086200000002000c005694020058ad0d080800000001000c006094020058ad0d08180000000200 *0c0069940200b8ad0d080400000001000c008c94020074ae0d081400000001000c0096940200f0 *ad0d083600000002000c00a194020028ae0d083600000002000c00ac940200b4b00d0818000000 *01000c00b6940200c4ae0d080500000002000c00c0940200b4b00d083000000002000c00cb9402 *00d4ae0d080800000001000c00d5940200d4ae0d083500000002000c00e094020014af0d080800 *000001000c00ea94020014af0d085c00000002000c00f394020078af0d080800000001000c00fd *94020078af0d080c00000002000c000695020090af0d080c00000001000c001095020090af0d08 *3300000002000c001b950200ccaf0d080800000001000c0025950200ccaf0d080900000002000c *002e950200e0af0d080800000001000c0038950200e0af0d081e00000002000c004195020008b0 *0d080800000001000c004b95020008b00d080900000002000c00549502001cb00d080800000001 *000c005e9502001cb00d085f00000002000c006795020084b00d080800000001000c0071950200 *84b00d081800000002000c007a9502004cb10d080800000001000c00849502004cb10d08330000 *0002000c008d95020080b10d080400000001000c00a7950200fcb20d080800000001000c00b195 *0200c4b10d080800000001000c00bb950200c4b10d083c00000002000c00c695020008b20d0808 *00000001000c00d095020008b20d085100000002000c00d995020064b20d080800000001000c00 *e395020064b20d081500000002000c00ec95020084b20d080800000001000c00f695020084b20d *081200000002000c00ff950200a0b20d080800000001000c0009960200a0b20d08540000000200 *0c0012960200fcb20d081800000002000c001b96020014b30d080800000001000c003c960200a0 *b60d080c00000001000c004696020060b30d080800000001000c005096020060b30d082d000000 *02000c005996020098b30d080800000001000c006396020098b30d082a00000002000c006e9602 *00ccb30d080800000001000c0078960200ccb30d085900000002000c008196020030b40d080800 *000001000c008b96020030b40d082a00000002000c009696020064b40d080800000001000c00a0 *96020064b40d083500000002000c00a9960200a4b40d080800000001000c00b3960200a4b40d08 *1700000002000c00bc960200c4b40d080800000001000c00c6960200c4b40d081900000002000c *00cf960200e8b40d080800000001000c00d9960200e8b40d081500000002000c00e296020000b5 *0d080200000002000c00ec96020058b50d082400000002000c00f79602000cb50d080800000001 *000c00019702000cb50d083100000002000c000a97020058b50d081800000001000c0014970200 *84b50d080800000001000c001e97020084b50d082d00000002000c0027970200bcb50d08080000 *0001000c0031970200bcb50d082a00000002000c003c970200f0b50d080800000001000c004697 *0200f0b50d080500000002000c004f97020004b60d080c00000001000c005997020004b60d0864 *00000002000c006297020068b60d080f00000002000c006d97020078b60d080800000002000c00 *7897020094b60d081400000001000c0082970200a0b60d083e00000002000c008b970200e0b60d *080c00000001000c00ae9702004cb90d080c00000001000c00b897020078b70d08020000000200 *0c00c2970200f4b70d085400000002000c00cd97020084b70d080800000001000c00d797020084 *b70d085700000002000c00e0970200f4b70d081800000001000c00ea97020050b80d0808000000 *01000c00f497020050b80d084e00000002000c00fd970200acb80d080c00000001000c00079802 *00acb80d087200000002000c00109802002cb90d080c00000001000c001a9802002cb90d081100 *000002000c00239802004cb90d082800000002000c002c98020074b90d082400000001000c0043 *98020064c20d080c00000001000c004d980200d8b90d080d00000002000c0058980200e8b90d08 *0d00000002000c0063980200f8b90d080d00000002000c006e98020008ba0d080d00000002000c *007998020034ba0d081c00000001000c00839802003cba0d080800000001000c008d9802003cba *0d082a00000002000c009898020068ba0d084a00000002000c00a3980200c0ba0d080c00000001 *000c00ad980200c0ba0d085300000002000c00b698020014bb0d081c00000002000c00c1980200 *44bb0d081400000001000c00cb98020050bb0d080c00000001000c00d598020050bb0d080c0000 *0002000c00de98020064bb0d080800000001000c00e898020064bb0d083100000002000c00f198 *0200a4bb0d080c00000001000c00fb980200a4bb0d082600000002000c0006990200ccbb0d080f *00000002000c0011990200dcbb0d080f00000002000c001c99020000bc0d081400000001000c00 *2699020008bc0d080800000001000c003099020008bc0d083400000002000c003999020044bc0d *080800000001000c004399020044bc0d081400000002000c004c99020060bc0d08080000000100 *0c005699020060bc0d083000000002000c006199020090bc0d080d00000002000c006c990200a8 *bc0d080800000001000c0076990200a8bc0d085a00000002000c007f9902000cbd0d0808000000 *01000c00899902000cbd0d081400000002000c009299020028bd0d080800000001000c009c9902 *0028bd0d084200000002000c00a799020074bd0d080800000001000c00b199020074bd0d087300 *000002000c00ba990200f0bd0d080800000001000c00c4990200f0bd0d081400000002000c00cd *9902000cbe0d080800000001000c00d79902000cbe0d084800000002000c00e299020054be0d08 *0200000002000c00ec99020070be0d082300000002000c00f799020070be0d081800000001000c *00019a02009cbe0d080800000001000c000b9a02009cbe0d084000000002000c00149a0200e8be *0d080c00000001000c001e9a0200e8be0d084600000002000c00279a02003cbf0d080c00000001 *000c00319a02003cbf0d086100000002000c003a9a0200acbf0d080c00000001000c00449a0200 *acbf0d081200000002000c004d9a0200ccbf0d080c00000001000c00579a0200ccbf0d081d0000 *0002000c00609a0200f8bf0d080c00000001000c006a9a0200f8bf0d080900000002000c00739a *020010c00d080c00000001000c007d9a020010c00d081c00000002000c00869a020038c00d080c *00000001000c00909a020038c00d085800000002000c00999a02009cc00d080c00000001000c00 *a39a02009cc00d080f00000002000c00ac9a0200b8c00d080c00000001000c00b69a0200b8c00d *081d00000002000c00bf9a0200e4c00d080c00000001000c00c99a0200e4c00d08090000000200 *0c00d29a0200f0c00d081c00000002000c00dd9a02000cc10d082400000002000c00e79a020054 *c10d082400000001000c00f19a020060c10d080c00000001000c00fb9a020060c10d080c000000 *02000c00049b02006cc10d080f00000002000c000f9b020088c10d080c00000001000c00199b02 *0088c10d080500000002000c00229b02009cc10d080c00000001000c002c9b02009cc10d082000 *000002000c00359b0200c8c10d080c00000001000c003f9b0200c8c10d080900000002000c0048 *9b0200d4c10d080f00000002000c00539b0200fcc10d081800000001000c005d9b020008c20d08 *0c00000001000c00679b020008c20d080900000002000c00709b020020c20d080c00000001000c *007a9b020020c20d080200000002000c00839b020024c20d081500000002000c008e9b02003cc2 *0d080500000002000c00999b020058c20d081400000001000c00a39b020064c20d085900000002 *000c00ac9b0200c0c20d080400000001000c00ca9b02008cc90d080c00000001000c00d49b0200 *08c30d084300000002000c00df9b02004cc30d089d00000002000c00ea9b020000c40d08140000 *0001000c00f49b020008c40d080800000001000c00fe9b020008c40d081200000002000c00079c *020024c40d080800000001000c00119c020024c40d082900000002000c001c9c020050c40d0805 *00000002000c00269c02002cc60d08ae00000002000c00319c020060c40d080800000001000c00 *3b9c020060c40d084400000002000c00469c0200acc40d080800000001000c00509c0200acc40d *084c00000002000c00599c0200f8c40d081200000002000c00649c02000cc50d08090000000200 *0c006f9c02002cc50d081400000001000c00799c020034c50d080800000001000c00839c020034 *c50d081800000002000c008c9c020058c50d080c00000001000c00969c020058c50d083b000000 *02000c009f9c020094c50d080200000002000c009eb5010098c50d080200000002000c00dcb501 *009cc50d082300000002000c00e7b50100d4c50d081400000001000c00aa9c0200d4c50d080c00 *000002000c00b59c0200f4c50d081400000001000c00bf9c020000c60d080c00000001000c00c9 *9c020000c60d081200000002000c00d29c02002cc60d081800000001000c00dc9c0200e4c60d08 *0800000001000c00e69c0200e4c60d087500000002000c00ef9c020064c70d080800000001000c *00f99c020064c70d082300000002000c00029d020090c70d080800000001000c000c9d020090c7 *0d080900000002000c00159d02009cc70d085a00000002000c00209d020000c80d080800000001 *000c002a9d020000c80d082300000002000c00339d02002cc80d080800000001000c003d9d0200 *2cc80d080900000002000c00469d020038c80d081200000002000c00519d020060c80d08140000 *0001000c005b9d02006cc80d080c00000001000c00659d02006cc80d081101000002000c006e9d *02008cc90d082c00000002000c00779d020024ca0d080800000001000c00889d0200dccc0d080c *00000001000c00a69d0200f4d30d080c00000001000c00d1b8010038cd0d080800000001000c00 *b09d020038cd0d086500000002000c00b99d0200a8cd0d080800000001000c00c39d0200a8cd0d *082b00000002000c00cc9d0200d4cd0d080500000002000c00d69d0200c4cf0d08360000000200 *0c00e19d0200e8cd0d080c00000001000c00eb9d0200e8cd0d082100000002000c00f49d020018 *ce0d080c00000001000c00fe9d020018ce0d082100000002000c00079e020048ce0d080c000000 *01000c00119e020048ce0d085c00000002000c001a9e02000cd00d085b00000002000c00259e02 *00b0ce0d080c00000001000c002f9e0200b0ce0d081500000002000c00389e0200d4ce0d080c00 *000001000c00429e0200d4ce0d087b00000002000c004b9e02005ccf0d080c00000001000c0055 *9e02005ccf0d082d00000002000c005e9e020098cf0d080c00000001000c00689e020098cf0d08 *1400000002000c00719e0200c4cf0d081800000001000c007b9e02000cd00d081000000001000c *00859e020068d00d084100000002000c00909e0200b4d00d080800000001000c009a9e0200b4d0 *0d082900000002000c00786c0200ecd00d080c00000001000c00826c0200ecd00d086300000002 *000c00a59e020050d10d080500000002000c00af9e020048d20d083300000002000c00ba9e0200 *60d10d080800000001000c00c49e020060d10d083000000002000c00cd9e020098d10d08080000 *0001000c00d79e020098d10d083000000002000c00e29e0200d0d10d080800000001000c00ec9e *0200d0d10d084900000002000c00f59e02008cd20d087200000002000c00009f020024d20d0808 *00000001000c000a9f020024d20d080900000002000c00139f020048d20d081800000001000c00 *1d9f02008cd20d081000000001000c00279f020008d30d080800000001000c00319f020008d30d *083400000002000c003a9f02003cd30d086100000002000c00459f0200b4d30d08140000000100 *0c004f9f0200c0d30d080c00000001000c00599f0200c0d30d082600000002000c00629f0200f4 *d30d08a600000002000c006b9f02009cd40d080400000001000c008a9f020088d50d080c000000 *01000c00949f02002cd50d080800000001000c009e9f02002cd50d081c00000002000c00a79f02 *0050d50d080800000001000c00b19f020050d50d082a00000002000c00bc9f020088d50d084c00 *000002000c00c79f0200d4d50d080400000001000c00e79f0200b4d80d080c00000001000c00f1 *9f02001cd60d080800000001000c00fb9f02001cd60d082900000002000c0006a0020050d60d08 *0800000001000c0010a0020050d60d082900000002000c001ba0020084d60d080800000001000c *0025a0020084d60d081100000002000c002ea00200a4d60d080c00000001000c0038a00200a4d6 *0d087900000002000c0041a0020020d70d084e00000002000c004ca0020070d70d085e00000002 *000c0057a00200e4d70d081400000001000c0061a00200f0d70d080c00000001000c006ba00200 *f0d70d083f00000002000c0074a002003cd80d080c00000001000c007ea002003cd80d08250000 *0002000c0087a0020070d80d080c00000001000c0091a0020070d80d081400000002000c009aa0 *020090d80d080c00000001000c00a4a0020090d80d081800000002000c00ada00200b4d80d0821 *00000002000c00b6a00200d8d80d080c00000001000c00d3a0020074de0d080c00000001000c00 *dda0020034d90d080800000001000c00e7a0020034d90d083000000002000c00f0a002006cd90d *080800000001000c00faa002006cd90d083000000002000c0005a10200a4d90d08080000000100 *0c000fa10200a4d90d083700000002000c0018a10200dcd90d080200000002000c0022a1020034 *da0d087c00000002000c002da10200e8d90d080800000001000c0037a10200e8d90d0831000000 *02000c0040a1020034da0d081800000001000c004aa10200b0da0d082b00000002000c0055a102 *00dcda0d081100000002000c0060a1020004db0d081400000001000c006aa1020010db0d080c00 *000001000c0074a1020010db0d080900000002000c007da1020024db0d080800000001000c0087 *a1020024db0d086700000002000c0090a1020094db0d080800000001000c009aa1020094db0d08 *3500000002000c00a3a10200d4db0d080800000001000c00ada10200d4db0d086800000002000c *00b6a1020044dc0d080800000001000c00c0a1020044dc0d083500000002000c00c9a1020084dc *0d080800000001000c00d3a1020084dc0d083300000002000c00dca10200c0dc0d080800000001 *000c00e6a10200c0dc0d083600000002000c00f1a1020000dd0d080800000001000c00fba10200 *00dd0d083d00000002000c0004a202004cdd0d080c00000001000c000ea202004cdd0d08d80000 *0002000c0017a2020030de0d080c00000001000c0021a2020030de0d083600000002000c002aa2 *020074de0d085f01000002000c0033a2020024e00d080400000001000c005da2020014e40d0808 *00000001000c0067a2020068e00d081000000001000c008da20200e8e40d081000000001000c00 *97a20200f8e50d081800000001000c00a1a20200e8e00d081c00000001000c00bfa202003ce60d *080c00000001000c00c9a2020090eb0d081000000001000c00d3a2020074ec0d08180000000100 *0c00dda20200c4e10d080800000001000c00e7a20200c4e10d084700000002000c00f0a2020014 *e20d080800000001000c00faa2020014e20d082a00000002000c0005a302004ce20d080c000000 *01000c000fa302004ce20d086200000002000c001aa30200b8e20d080800000001000c0024a302 *00b8e20d083700000002000c0094b60100f8e20d080800000001000c002da30200f8e20d084700 *000002000c0036a3020048e30d080800000001000c0040a3020048e30d085500000002000c0049 *a30200a8e30d080800000001000c0053a30200a8e30d081800000002000c005ca30200c8e30d08 *0800000001000c0066a30200c8e30d084100000002000c006fa3020014e40d081100000002000c *0078a3020028e40d080800000002000c0083a3020038e40d080800000001000c008da3020038e4 *0d080800000002000c0096a302004ce40d080c00000001000c00a0a302004ce40d081200000002 *000c00a9a3020060e40d081500000002000c00b3a302009ce40d082400000001000c00bda30200 *a8e40d080c00000001000c00c7a30200a8e40d082d00000002000c00d0a30200e8e40d08260000 *0002000c00dba3020010e50d080500000002000c00e5a30200f8e50d083600000002000c00f0a3 *020020e50d080800000001000c00faa3020020e50d082900000002000c0005a4020058e50d080c *00000001000c000fa4020058e50d081d00000002000c0018a4020084e50d080c00000001000c00 *22a4020084e50d085a00000002000c002ba402003ce60d082900000002000c0036a4020068e60d *083200000002000c0041a40200a4e60d080800000001000c004ba40200a4e60d08310000000200 *0c0054a40200e4e60d080c00000001000c005ea40200e4e60d082900000002000c0069a4020010 *e70d080200000002000c0073a4020040e70d082100000002000c007ea402001ce70d0808000000 *01000c0088a402001ce70d080b00000002000c0091a4020040e70d081800000001000c009ba402 *006ce70d080800000001000c00a5a402006ce70d085700000002000c00aea40200cce70d080800 *000001000c00b8a40200cce70d083800000002000c00c1a4020010e80d080c00000001000c00cb *a4020010e80d081200000002000c00d4a4020030e80d080c00000001000c00dea4020030e80d08 *3b00000002000c00e7a4020078e80d080c00000001000c00f1a4020078e80d080900000002000c *00faa4020090e80d080c00000001000c0004a5020090e80d082600000002000c000da50200b8e8 *0d082000000002000c0018a50200d8e80d082000000002000c0023a502000ce90d081400000001 *000c002da5020018e90d080c00000001000c0037a5020018e90d085600000002000c0040a50200 *70e90d081500000002000c004ba5020090e90d080800000001000c0055a5020090e90d08290000 *0002000c0060a50200bce90d084900000002000c006ba5020010ea0d080800000001000c0075a5 *020010ea0d082900000002000c0080a502003cea0d084900000002000c008ba50200a0ea0d0818 *00000001000c0095a50200acea0d080c00000001000c009fa50200acea0d084700000002000c00 *a8a5020000eb0d080c00000001000c00b2a5020000eb0d081400000002000c00bba5020014eb0d *081500000002000c00c6a502002ceb0d082d00000002000c00d0a5020080eb0d08240000000100 *0c00daa5020090eb0d083600000002000c00e5a50200c8eb0d080500000002000c00efa5020074 *ec0d082400000002000c00faa50200d0eb0d083a00000002000c0005a602000cec0d083a000000 *02000c0010a602005cec0d081400000001000c001aa6020098ec0d080c00000001000c0038a602 *00dcee0d081400000001000c0042a60200c0ec0d080800000002000c004da60200d0ec0d080800 *000001000c0057a60200d0ec0d082f00000002000c0062a6020000ed0d083700000002000c006d *a602004ced0d081400000001000c0077a6020058ed0d080c00000001000c0081a6020058ed0d08 *3000000002000c008ca6020088ed0d083a00000002000c0097a60200c4ed0d080800000002000c *00a2a60200d4ed0d080800000001000c00aca60200d4ed0d082f00000002000c00b7a6020004ee *0d083700000002000c00c2a6020050ee0d081400000001000c00cca602005cee0d080c00000001 *000c00d6a602005cee0d083000000002000c00e1a602008cee0d083a00000002000c00eca60200 *8cef0d080800000001000c00f6a602007cef0d080800000001000c0000a702007cef0d08050000 *0002000c0009a702008cef0d082d00000002000c0014a70200bcef0d081000000001000c0054e5 *000014f20d080c00000001000c0032a7020008f50d081400000001000c003ca7020034f00d0808 *00000002000c000ce5000044f00d080800000001000c0016e5000044f00d085100000002000c00 *47a7020098f00d083700000002000c0052a70200e4f00d081400000001000c0021e50000f0f00d *080c00000001000c005ca70200f0f00d083000000002000c0067a702002cf10d080c0000000100 *0c0071a702002cf10d085000000002000c007ca702007cf10d080800000002000c0087a7020090 *f10d080c00000001000c0091a7020090f10d083000000002000c009ca70200c0f10d0831000000 *02000c00a7a7020008f20d081400000001000c005ee5000014f20d085700000002000c00b1a702 *006cf20d080800000002000c00bca7020080f20d080c00000001000c00c6a7020080f20d083000 *000002000c00d1a70200bcf20d080c00000001000c00dba70200bcf20d085e00000002000c00e6 *a702001cf30d083a00000002000c00f1a7020064f30d080c00000001000c00fba7020064f30d08 *3000000002000c0006a80200a0f30d080c00000001000c0010a80200a0f30d085e00000002000c *001ba8020000f40d083a00000002000c0026a8020050f40d081400000001000c0030a8020050f4 *0d080c00000002000c003ba8020070f40d081400000001000c0045a8020070f40d080f00000002 *000c0050a802008cf40d080c00000001000c005aa802008cf40d083000000002000c0065a80200 *bcf40d083700000002000c0070a8020028f50d080800000001000c007aa8020028f50d08090000 *0002000c0083a80200acf50d080800000001000c008da8020068f50d080800000001000c0097a8 *020068f50d083b00000002000c00a0a80200acf50d080b00000002000c00a9a8020030f60d0808 *00000001000c00b3a80200ecf50d080800000001000c00bda80200ecf50d083b00000002000c00 *c6a8020030f60d080b00000002000c00cfa80200b4f60d080800000001000c00d9a8020070f60d *080800000001000c00e3a8020070f60d083b00000002000c00eca80200b4f60d080b0000000200 *0c00f5a80200e0f60d080800000001000c00ffa80200e0f60d080800000002000c0008a9020068 *f80d080400000001000c0020a9020028f90d080800000001000c002aa902009cf90d0808000000 *01000c0034a90200f4f80d080800000001000c003ea90200f4f80d082c00000002000c0047a902 *0028f90d083600000002000c0052a9020068f90d080800000001000c005ca9020068f90d082c00 *000002000c0065a902009cf90d083600000002000c0070a9020048fa0d080800000001000c007a *a9020048fa0d080b00000002000c0083a9020090fa0d080800000001000c008da9020074fa0d08 *0800000001000c0097a9020074fa0d081100000002000c00a0a9020090fa0d081400000002000c *00a9a90200c4fa0d080800000001000c00b3a90200c4fa0d082b00000002000c00bca9020010fb *0d080800000001000c00c6a9020010fb0d082b00000002000c00cfa9020098fb0d080800000001 *000c00d9a902005cfb0d080800000001000c00e3a902005cfb0d081700000002000c00eca90200 *7cfb0d080800000001000c00f6a902007cfb0d081400000002000c00ffa9020098fb0d08140000 *0002000c0008aa0200acfb0d080400000001000c001baa0200d8fb0d080c00000001000c0025aa *0200d8fb0d084200000002000c002eaa02001cfc0d080400000001000c0047aa02005cfc0d080c *00000001000c0051aa02005cfc0d083700000002000c005aaa020094fc0d080800000001000c00 *6daa020028fd0d080c00000001000c0077aa0200d8fc0d080c00000001000c0081aa0200d8fc0d *084300000002000c008aaa020028fd0d081700000002000c0093aa020040fd0d08040000000100 *0c00b4aa02008cfd0d080c00000001000c00beaa02006cfd0d080c00000001000c00c8aa02006c *fd0d081100000002000c00d1aa02008cfd0d081400000002000c00daaa0200a0fd0d0808000000 *01000c00f5aa020010fe0d080800000001000c0010ab020080fe0d080800000001000c002bab02 *00f0fe0d080800000001000c0046ab0200acff0d081400000001000c0050ab020078ff0d080900 *000002000c005bab020084ff0d081100000002000c0066ab02005c010e081400000001000c0070 *ab0200d8ff0d082900000002000c007bab02000c000e080800000001000c0085ab02000c000e08 *2400000002000c008eab020030000e081e00000002000c0099ab020064000e081400000001000c *00a3ab020064000e081400000002000c00aeab020080000e080800000001000c00b8ab02008000 *0e082400000002000c00c1ab0200a4000e081e00000002000c00ccab0200cc000e080800000001 *000c00d6ab0200cc000e082400000002000c00dfab0200f0000e082400000002000c00eaab0200 *28010e081400000001000c00f4ab020028010e081d00000002000c00ffab02000c030e08140000 *0001000c0009ac020088010e082900000002000c0014ac0200bc010e080800000001000c001eac *0200bc010e082400000002000c0027ac0200e0010e081e00000002000c0032ac020014020e0814 *00000001000c003cac020014020e081400000002000c0047ac020030020e080800000001000c00 *51ac020030020e082400000002000c005aac020054020e081e00000002000c0065ac02007c020e *080800000001000c006fac02007c020e082400000002000c0078ac0200a0020e08240000000200 *0c0083ac0200d8020e081400000001000c008dac0200d8020e081d00000002000c0098ac020070 *030e080400000001000c00afac02009c030e080c00000001000c00b9ac02009c030e080b000000 *02000c00c2ac0200a8030e080800000001000c00d8ac020030060e081400000001000c00e2ac02 *00cc030e080c00000002000c00edac0200d8030e083500000002000c00f8ac02001c040e080c00 *000001000c0002ad02001c040e085700000002000c000dad020074040e084e00000002000c0018 *ad0200d8040e081400000001000c0022ad0200e8040e081000000001000c002cad0200e8040e08 *2900000002000c0037ad020020050e080c00000001000c0041ad020020050e084700000002000c *004cad020074050e080c00000001000c0056ad020074050e085700000002000c0061ad0200cc05 *0e084e00000002000c006cad020030060e080400000001000c0082ad0200cc060e080800000001 *000c008bad020094060e080800000001000c0094ad020094060e082e00000002000c009cad0200 *cc060e081400000002000c00a4ad020000070e080800000001000c00adad020000070e082b0000 *0002000c00b5ad020078070e081400000001000c00bfad020044070e080e00000002000c00caad *020054070e080e00000002000c00d5ad020078070e080c00000001000c00efad0200e8070e080c *00000001000c00f9ad02000c0b0e081000000001000c0003ae0200e8070e082900000002000c00 *0eae02001c080e080800000001000c0018ae02001c080e082900000002000c0023ae020054080e *080c00000001000c002dae020054080e083c00000002000c0038ae020098080e08080000000100 *0c0042ae020098080e084d00000002000c0041770000e8080e080e00000002000c00a0770000f8 *080e081100000002000c00ab77000020090e081400000001000c00c276000020090e080f000000 *02000c004dae020030090e080e00000002000c0058ae020040090e081100000002000c0063ae02 *0068090e081400000001000c005076000068090e080800000002000c006dae020070090e080e00 *000002000c0078ae020080090e081100000002000c0083ae0200a8090e081400000001000c009a *760000a8090e080f00000002000c00a5760000cc090e081400000001000c00af760000d4090e08 *0800000001000c00b9760000d4090e082b00000002000c00e8770000000a0e081500000002000c *00f37700002c0a0e081400000001000c008dae02002c0a0e081200000002000c00cd760000400a *0e080e00000002000c002c770000500a0e081100000002000c0037770000780a0e081400000001 *000c0098ae0200780a0e081500000002000c00a2ae0200bc0a0e082c00000001000c00acae0200 *c80a0e080c00000001000c00b6ae0200c80a0e083200000002000c00c1ae02000c0b0e08550000 *0002000c00ccae0200640b0e080400000001000c00e0ae0200080c0e080c00000001000c00eaae *0200b00b0e081000000002000c00f5ae0200c00b0e080e00000002000c00ffae0200fc0b0e082c *00000001000c0009af0200080c0e082600000002000c0014af0200300c0e081000000001000c00 *28af02009c0c0e080c00000001000c00eaea0000540e0e081000000001000c0032af02009c0c0e *082e00000002000c003daf0200cc0c0e081000000002000c0048af0200dc0c0e080e0000000200 *0c0052af0200180d0e082c00000001000c005caf0200240d0e080c00000001000c0066af020024 *0d0e082600000002000c00ffd30000580d0e080c00000001000c0071af0200580d0e0844000000 *02000c007caf0200a80d0e080c00000001000c0086af0200a80d0e084c00000002000c0091af02 *00000e0e080c00000001000c009baf0200000e0e080800000002000c00a6af0200180e0e081000 *000001000c00b0af0200180e0e082a00000002000c00bbaf0200540e0e087800000002000c00c6 *af0200cc0e0e080400000001000c00d7af02003c0f0e080c00000001000c00ebaf0200b80f0e08 *0800000001000c00f5af0200f00f0e080800000001000c00ffaf0200ec100e081000000001000c *0009b00200b80f0e082d00000002000c0014b00200f00f0e082d00000002000c001fb002002010 *0e080e00000002000c002ab0020030100e080800000002000c0035b002004c100e081400000001 *000c003fb002004c100e081300000002000c004ab0020060100e080800000002000c0055b00200 *7c100e081400000001000c005fb002007c100e082200000002000c006ab00200a0100e080e0000 *0002000c0074b00200dc100e082c00000001000c007eb00200ec100e082c00000002000c0089b0 *020018110e080400000001000c009ab002004c120e082c00000001000c0018d50000a8110e0808 *00000001000c0022d50000a8110e082900000002000c00a4b00200d4110e083b00000002000c00 *afb0020010120e080e00000002000c00b9b002004c120e080400000001000c00cab00200bc120e *080800000001000c00deb00200c4130e081400000001000c00e8b0020008130e08080000000100 *0c00f2b0020008130e083700000002000c00fbb0020040130e081800000002000c0005b102006c *130e081400000001000c000fb102006c130e081800000002000c0019b1020098130e0814000000 *01000c0023b1020098130e081800000002000c002db10200cc140e080400000001000c0041b102 *0038150e080400000001000c0055b10200e8160e080800000001000c005fb102007c160e080800 *000001000c0069b1020028160e080800000001000c0073b1020028160e084900000002000c007e *b102007c160e086100000002000c0089b10200e8160e082f00000002000c0094b1020018170e08 *0c00000001000c00a8b10200a8180e081400000001000c00b2b1020054170e083500000002000c *00bdb1020098170e080c00000001000c00c7b1020098170e082f00000002000c00d2b10200d417 *0e080c00000001000c00dcb10200d4170e082f00000002000c00e7b1020010180e080c00000001 *000c00f1b1020010180e086a00000002000c00fab102007c180e081500000002000c0005b20200 *a8180e080800000001000c0020b2020030190e080c00000001000c002ab2020030190e08510000 *0002000c0035b20200381a0e080800000001000c003fb20200381a0e080b00000002000c0048b2 *0200441a0e080800000001000c0068b20200ac1b0e080c00000001000c0072b202008c1a0e080b *00000002000c007db20200a01a0e080800000001000c0087b20200a01a0e080b00000002000c00 *90b20200ac1a0e081300000002000c009bb20200d41a0e081400000001000c00a5b20200e01a0e *080c00000001000c00afb20200e01a0e080f00000002000c00b8b20200fc1a0e080c0000000100 *0c00c2b20200fc1a0e082700000002000c00cbb20200301b0e080c00000001000c00d5b2020030 *1b0e081400000002000c00deb20200501b0e080c00000001000c00e8b20200501b0e0815000000 *02000c00f1b20200781b0e081000000001000c00fbb20200781b0e082600000002000c0006b302 *00ac1b0e083f00000002000c000fb30200ec1b0e080800000001000c002fb30200401c0e080800 *000001000c0057b30200f81c0e080c00000001000c0061b30200881c0e080b00000002000c006c *b302009c1c0e080800000001000c0076b302009c1c0e080b00000002000c007fb30200a81c0e08 *1300000002000c008ab30200d01c0e081400000001000c0094b30200dc1c0e080c00000001000c *009eb30200dc1c0e080f00000002000c00a7b30200f81c0e080f00000002000c00b0b30200081d *0e080400000001000c00d0b30200501d0e080400000001000c00f0b30200bc1d0e080400000001 *000c0010b40200281e0e080400000001000c0030b40200941e0e080400000001000c0050b40200 *001f0e080400000001000c0071b402006c1f0e080400000001000c0092b40200d81f0e08040000 *0001000c00b3b4020044200e080400000001000c00d4b40200b0200e080400000001000c00f5b4 *02001c210e080400000001000c0016b50200d4210e081400000001000c0020b50200a0210e0809 *00000002000c002bb50200ac210e081100000002000c0036b50200d4210e080400000001000c00 *4db5020000220e080c00000001000c0057b5020000220e080b00000002000c0060b502000c220e *080400000001000c0079b502006c220e080800000001000c0083b50200c0220e08100000000100 *0c008db502006c220e082900000002000c0098b50200a4220e080c00000001000c00a2b50200a4 *220e080b00000002000c00abb50200c0220e082400000002000c00b6b5020038230e0808000000 *01000c00c0b5020004230e080800000001000c00cab5020004230e082900000002000c00d3b502 *0038230e081400000002000c00dcb502009c230e080800000001000c00e6b502006c230e080800 *000001000c00f0b502006c230e082800000002000c00f9b502009c230e081400000002000c0002 *b60200b0230e080800000001000c001eb60200e0250e080400000001000c004eb60200b8260e08 *0c00000001000c007db60200d4270e080c00000001000c0087b6020004270e080800000002000c *0091b6020020270e081400000001000c009bb6020020270e080800000002000c00a5b602003c27 *0e081400000001000c00afb6020048270e080c00000001000c00b9b6020048270e087e00000002 *000c00c2b60200d4270e084100000002000c00a82f0100cc280e080800000001000c00b22f0100 *cc280e083300000002000c00cbb6020064290e080800000001000c00d5b6020064290e08330000 *0002000c00deb60200fc290e080800000001000c00e8b60200fc290e083300000002000c00152e *0100942a0e080800000001000c001f2e0100942a0e083300000002000c00f1b602001c2b0e0814 *00000001000c001fb70200f02e0e080c00000001000c0029b70200682b0e080800000001000c00 *33b70200682b0e080b00000002000c003cb702007c2b0e080800000001000c0046b702007c2b0e *082100000002000c004fb70200ac2b0e080c00000001000c0059b70200ac2b0e08140000000200 *0c0062b70200cc2b0e080c00000001000c006cb70200cc2b0e081100000002000c00f1330100e0 *2b0e080500000002000c0075b70200f42b0e080c00000001000c007fb70200f42b0e0802000000 *02000c00fc330100f82b0e081500000002000c0007340100242c0e081400000001000c0088b702 *00302c0e080c00000001000c0092b70200302c0e082c00000002000c009bb70200682c0e080c00 *000001000c00a5b70200682c0e081c00000002000c00aeb70200902c0e080c00000001000c00b8 *b70200902c0e081700000002000c00c1b70200b42c0e080c00000001000c00cbb70200b42c0e08 *0900000002000c00d4b70200cc2c0e080c00000001000c00deb70200cc2c0e082000000002000c *00e7b70200ec2c0e080200000002000c00f1b70200682d0e082600000002000c00fcb70200f82c *0e080800000001000c0006b80200f82c0e083100000002000c000fb80200342d0e080800000001 *000c0019b80200342d0e081b00000002000c0022b80200682d0e081800000001000c002cb80200 *902d0e083b00000002000c0037b80200cc2d0e080200000002000c0041b80200482e0e08260000 *0002000c004cb80200d82d0e080800000001000c0056b80200d82d0e083100000002000c005fb8 *0200142e0e080800000001000c0069b80200142e0e081b00000002000c0072b80200482e0e0818 *00000001000c007cb802007c2e0e080c00000001000c0086b802007c2e0e083a00000002000c00 *8fb80200b82e0e081500000002000c009ab80200e42e0e081400000001000c00a4b80200f02e0e *081e00000002000c00adb8020034300e080c00000001000c00d1b80200dc320e080c0000000100 *0c00dbb8020078300e080200000002000c00e5b80200d0300e082a00000002000c00283d010084 *300e080800000001000c00323d010084300e083100000002000c00f0b80200d0300e0818000000 *01000c00fab8020004310e080800000001000c0004b9020004310e080600000002000c000db902 *0018310e080c00000001000c0017b9020018310e082400000002000c0020b9020048310e080c00 *000001000c002ab9020048310e082500000002000c0033b902007c310e080c00000001000c003d *b902007c310e082800000002000c0046b90200b0310e080c00000001000c0050b90200b0310e08 *2800000002000c0059b90200e4310e080c00000001000c0063b90200e4310e082800000002000c *006cb9020018320e080c00000001000c0076b9020018320e081500000002000c007fb902003c32 *0e080c00000001000c0089b902003c320e081200000002000c0092b902005c320e080c00000001 *000c009cb902005c320e085100000002000c00a5b90200bc320e080c00000001000c00afb90200 *bc320e081100000002000c00b8b90200dc320e080f00000002000c00c1b90200ec320e08040000 *0001000c00e4b9020018330e080c00000001000c00eeb9020018330e080b00000002000c00f7b9 *0200c8330e080400000001000c0021ba0200c0360e081000000001000c002bba0200f4360e0808 *00000001000c0035ba020078370e080c00000001000c003fba02002c340e080b00000002000c00 *4aba020038340e081a00000002000c0054ba0200c0360e082900000002000c005fba020074340e *082000000001000c0069ba020074340e082500000002000c0074ba0200b0340e08140000000100 *0c007eba0200b0340e081400000002000c0089ba0200c4340e080e00000002000c0093ba0200f4 *340e082000000001000c009dba0200f4340e081800000002000c00a8ba02000c350e080b000000 *02000c00b3ba020020350e080800000001000c00bdba020020350e082900000002000c00c8ba02 *0058350e080c00000001000c00d2ba020058350e082f00000002000c00ddba020094350e080c00 *000001000c00e7ba020094350e080800000002000c00f2ba0200ac350e081000000001000c00fc *ba0200ac350e084e00000002000c0007bb0200fc350e083b00000002000c0012bb020048360e08 *1000000001000c001cbb020048360e081d00000002000c0027bb020068360e082800000002000c *0032bb0200b0360e082000000001000c003cbb0200f4360e082d00000002000c0047bb02003037 *0e080c00000001000c0051bb020030370e083a00000002000c005cbb020078370e084700000002 *000c0067bb0200f0370e080400000001000c0092bb02008c380e080400000001000c00bfbb0200 *28390e080400000001000c00ecbb0200c4390e080400000001000c0019bc0200603a0e08040000 *0001000c0046bc0200fc3a0e080400000001000c0073bc0200683b0e080800000001000c00a7bc *0200203d0e081000000001000c00b1bc0200203d0e083500000002000c00bcbc0200cc3b0e080b *00000002000c00c7bc0200e43b0e080c00000001000c00d1bc0200e43b0e083300000002000c00 *dcbc0200183c0e083f00000002000c00e7bc0200583c0e084500000002000c00f2bc0200a03c0e *081000000002000c00fdbc0200b03c0e081700000002000c0008bd0200c83c0e080b0000000200 *0c0013bd0200d43c0e080d00000002000c001dbd0200103d0e082c00000001000c0027bd020040 *3e0e082c00000001000c0031bd0200883d0e080e00000002000c003cbd0200983d0e080e000000 *02000c0047bd0200a83d0e080800000002000c0052bd0200b03d0e083c00000002000c005dbd02 *00003e0e081400000001000c0067bd0200003e0e081200000002000c0071bd0200403e0e080800 *000001000c00a2bd0200d43f0e082c00000001000c00acbd0200643e0e080e00000002000c00b7 *bd0200743e0e080e00000002000c00c2bd0200903e0e080c00000001000c00ccbd0200903e0e08 *2900000002000c00d7bd0200bc3e0e084700000002000c00e2bd0200103f0e080c00000001000c *00ecbd0200103f0e082900000002000c00f7bd02003c3f0e084100000002000c0002be0200803f *0e080b00000002000c000dbe02008c3f0e080e00000002000c0018be02009c3f0e080a00000002 *000c0022be0200a8400e082c00000001000c002cbe020004400e080e00000002000c0037be0200 *14400e081700000002000c0042be02002c400e080e00000002000c004dbe02003c400e083f0000 *0002000c0057be0200c8420e082c00000001000c0061be0200d8400e080e00000002000c006cbe *0200e8400e081700000002000c0077be020008410e080800000001000c0081be020008410e0829 *00000002000c008cbe02003c410e080800000001000c0096be02003c410e082f00000002000c00 *a1be02006c410e088b00000002000c00acbe020000420e080800000001000c00b6be020000420e *082f00000002000c00c1be020030420e084100000002000c00ccbe020088420e08140000000100 *0c00d6be020088420e081200000002000c00e0be0200c8420e080800000001000c0014bf0200ac *460e082c00000001000c001ebf0200fc420e080800000002000c0029bf020010430e080c000000 *01000c0033bf020010430e083b00000002000c003ebf02004c430e084d00000002000c0049bf02 *009c430e081d00000002000c0054bf0200bc430e082000000002000c005ebf020008440e082c00 *000001000c0068bf020014440e080c00000001000c0072bf020014440e084200000002000c007d *bf020058440e085f00000002000c0088bf0200c4440e080c00000001000c0092bf0200c4440e08 *3e00000002000c009dbf020004450e085900000002000c00a8bf02006c450e080c00000001000c *00b2bf02006c450e083b00000002000c00bdbf0200b4450e080c00000001000c00c7bf0200b445 *0e083b00000002000c00d2bf0200f0450e087200000002000c00ddbf020064460e080e00000002 *000c00e8bf020074460e080a00000002000c00f2bf020064470e081400000001000c00fcbf0200 *c4460e080e00000002000c0007c00200dc460e080800000001000c0011c00200dc460e08290000 *0002000c001cc0020008470e084800000002000c0027c002001c480e081400000001000c0031c0 *02007c470e080e00000002000c003cc0020094470e080800000001000c0046c0020094470e0829 *00000002000c0051c00200c0470e084800000002000c005cc00200d4480e081400000001000c00 *66c0020034480e080e00000002000c0071c002004c480e080800000001000c007bc002004c480e *082900000002000c0086c0020078480e084800000002000c0091c002008c490e08140000000100 *0c009bc00200ec480e080e00000002000c00a6c0020004490e080800000001000c00b0c0020004 *490e082900000002000c00bbc0020030490e084800000002000c00c6c00200444a0e0814000000 *01000c00d0c00200a4490e080e00000002000c00dbc00200bc490e080800000001000c00e5c002 *00bc490e082900000002000c00f0c00200e8490e084800000002000c00fbc00200444a0e080800 *000001000c002ac10200184b0e082c00000001000c0034c10200984a0e080e00000002000c003f *c10200a84a0e080e00000002000c004ac10200b84a0e081700000002000c0055c10200d04a0e08 *0e00000002000c0060c10200e04a0e080a00000002000c006ac10200844b0e080800000001000c *0074c10200844b0e082c00000002000c007fc10200284c0e080800000001000c0089c10200284c *0e083000000002000c0094c10200804c0e080400000001000c00b4c10200e44d0e081400000001 *000c00bec102001c4d0e080800000002000c00c9c10200244d0e080b00000002000c00d3c10200 *444d0e081400000001000c00ddc10200444d0e081800000002000c00e7c10200704d0e08140000 *0001000c00f1c10200784d0e080800000001000c00fbc10200784d0e084300000002000c0004c2 *0200bc4d0e081200000002000c000fc202004c4e0e080400000001000c0033c2020008570e0810 *00000001000c0056bb0000a8570e080c00000001000c00bdbb0000bc4e0e080800000001000c00 *c7bb0000bc4e0e082d00000002000c00fd5f0200f84e0e080c00000001000c0007600200f84e0e *082200000002000c003dc202001c4f0e083800000002000c0056a30100604f0e080c0000000100 *0c0048c20200604f0e084100000002000c0053c20200ac4f0e080800000001000c005dc20200ac *4f0e085300000002000c0068c2020008570e082900000002000c0074a301000c500e080c000000 *01000c0073c202000c500e080800000002000c001260020020500e080c00000001000c001c6002 *0020500e084e00000002000c007ec2020078500e080800000001000c0088c2020078500e085700 *000002000c0091c20200d8500e080800000001000c009bc20200d8500e082d00000002000c00a6 *c2020014510e080c00000001000c00b0c2020014510e082200000002000c00bbc2020040510e08 *0800000001000c00c5c2020040510e082d00000002000c00d0c202007c510e080c00000001000c *00dac202007c510e082200000002000c0048900000a8510e080800000001000c0052900000a851 *0e087a00000002000c00e2b300002c520e080800000001000c00ecb300002c520e082d00000002 *000c00e5c2020068520e080c00000001000c00efc2020068520e082200000002000c00c1b50000 *94520e080800000001000c00cbb5000094520e082d00000002000c00215f0200d0520e080c0000 *0001000c002b5f0200d0520e082200000002000c00fac20200fc520e080800000001000c0004c3 *0200fc520e087a00000002000c000dc3020078530e080500000002000c0052bd000010540e0861 *00000002000c0017c3020088530e080800000001000c0021c3020088530e086d00000002000c00 *48bd000010540e081800000001000c00c49e01007c540e080800000001000c002ac302007c540e *082d00000002000c0035c30200b8540e080c00000001000c003fc30200b8540e08220000000200 *0c004ac30200dc540e083800000002000c0055c3020014550e080b00000002000c0060c3020034 *550e081400000001000c004ebc00003c550e080800000001000c0058bc00003c550e082d000000 *02000c006ac3020078550e080c00000001000c0074c3020078550e082200000002000c007fc302 *009c550e083800000002000c008ac30200d4550e080b00000002000c0095c30200f4550e081400 *000001000c009fc30200fc550e080800000001000c00a9c30200fc550e086900000002000c00b2 *c3020074560e080c00000001000c00bcc3020074560e084e00000002000c00c5c30200c4560e08 *1d00000002000c00d0c30200f8560e081400000001000c00dac3020034570e080e00000002000c *00e5c3020044570e080d00000002000c00f0c3020068570e081400000001000c0041bb00007457 *0e080c00000001000c004bbb000074570e082600000002000c0060bb0000a8570e084f00000002 *000c00fac3020018580e080800000001000c0004c4020018580e082e00000002000c000dc40200 *48580e080400000001000c002ec40200d0590e081000000001000c0038c402002c5a0e08080000 *0001000c006acb0000645a0e080800000001000c0042c40200a05a0e080c00000001000c00becb *0000045b0e080c00000001000c0012cc0000645b0e080c00000001000c004cc40200f8580e0808 *00000001000c0056c40200f8580e082900000002000c0061c402002c590e080800000001000c00 *6bc402002c590e083600000002000c0076c4020070590e080c00000001000c0080c4020070590e *084e00000002000c008bc40200d0590e085100000002000c0096c402002c5a0e082d0000000200 *0c0074cb0000645a0e082d00000002000c00a1c40200a05a0e083f00000002000c00acc40200e8 *5a0e080800000001000c00b6c40200e85a0e081000000002000c00c8cb0000045b0e0826000000 *02000c00bfc40200345b0e080800000001000c00c9c40200345b0e082300000002000c001ccc00 *00645b0e082600000002000c00d2c402008c5b0e081c00000001000c00f4c40200d8640e081000 *000001000c00fec40200045c0e080800000001000c0008c50200045c0e083700000002000c0013 *c502003c5c0e083100000002000c001dc50200845c0e081400000001000c0027c502008c5c0e08 *0800000001000c0031c502008c5c0e082a00000002000c003cc50200b85c0e083100000002000c *0046c50200005d0e081400000001000c008ecc0000085d0e080800000001000c0098cc0000085d *0e082a00000002000c0050c50200345d0e080b00000002000c00ba930000485d0e080800000001 *000c00c4930000485d0e083900000002000c005bc50200845d0e081800000002000c0065c50200 *b05d0e081400000001000c006fc50200b05d0e081e00000002000c0079c50200e45d0e08140000 *0001000c0083c50200f05d0e080c00000001000c008dc50200f05d0e082100000002000c0096c5 *0200205e0e080c00000001000c00a0c50200205e0e082d00000002000c00a9c502005c5e0e080c *00000001000c00b3c502005c5e0e083000000002000c00bec502008c5e0e084000000002000c00 *c9c50200cc5e0e080e00000002000c00d3c50200f05e0e081400000001000c00ddc50200fc5e0e *080c00000001000c00e7c50200fc5e0e083d00000002000c00f2c502003c5f0e08400000000200 *0c00fdc50200905f0e081400000001000c0007c60200905f0e082200000002000c0012c60200c8 *5f0e081400000001000c001cc60200c85f0e080f00000002000c0021940000e05f0e0808000000 *01000c002b940000e05f0e083900000002000c0027c602001c600e080f00000002000c0031c602 *0040600e081400000001000c003bc6020040600e081800000002000c0045c602006c600e081400 *000001000c004fc602006c600e081500000002000c0059c6020098600e081400000001000c0063 *c6020098600e081e00000002000c006dc60200cc600e081400000001000c0077c60200d8600e08 *0c00000001000c0081c60200d8600e081e00000002000c00e422020004610e080c00000001000c *008ac6020004610e083600000002000c0093c6020048610e080c00000001000c009dc602004861 *0e083000000002000c00a8c6020078610e082d00000002000c00b3c60200b0610e080800000001 *000c00bdc60200b0610e083900000002000c00c6c60200ec610e081800000002000c00d0c60200 *18620e081400000001000c00dac6020018620e081e00000002000c00e4c602004c620e08140000 *0001000c00f922020058620e080c00000001000c00eec6020058620e082100000002000c00f7c6 *020088620e080c00000001000c0001c7020088620e082d00000002000c000ac70200c4620e080c *00000001000c0014c70200c4620e083000000002000c001fc70200f4620e084000000002000c00 *2ac7020048630e081400000001000c0034c7020048630e083d00000002000c003fc702009c630e *081400000001000c0049c70200a8630e080c00000001000c0053c70200a8630e08480000000200 *0c005ec7020000640e081000000001000c0068c7020000640e085900000002000c0073c702006c *640e081000000001000c007dc702006c640e085b00000002000c0088c70200d8640e0880000000 *02000c0093c7020058650e080800000001000c00b8c70200c0650e080c00000001000c00dac702 *00a0660e080c00000001000c00e4c7020000670e080800000001000c00eec702003c670e080c00 *000001000c00f8c702006c670e082000000001000c0002c8020050660e080800000001000c000c *c8020050660e082d00000002000c0017c802008c660e080c00000001000c0021c802008c660e08 *0800000002000c002cc80200a0660e085800000002000c0037c8020000670e082d00000002000c *0042c802003c670e080800000002000c004dc8020044670e080800000002000c0057c802006c67 *0e080800000001000c0079c802004c690e081000000001000c0083c80200d0670e080c00000001 *000c008dc80200d0670e084e00000002000c0098c802002c680e080c00000001000c00a2c80200 *2c680e085300000002000c00be9d000080680e080c00000002000c00abc8020098680e080c0000 *0001000c00b5c8020098680e084e00000002000c00f19d0000e8680e083d00000002000c00fc9d *00003c690e081400000001000c00c0c802004c690e082f00000002000c00cbc802007c690e0804 *00000001000c00eac80200e8690e080800000001000c000ac90200586a0e080800000001000c00 *14c90200686c0e081000000001000c001ec90200586a0e082d00000002000c0029c90200946a0e *080c00000001000c0033c90200946a0e084100000002000c003ec90200d86a0e08080000000200 *0c0049c90200ec6a0e080c00000001000c0053c90200ec6a0e084100000002000c005ec9020030 *6b0e084300000002000c0069c90200886b0e081400000001000c0073c90200946b0e080c000000 *01000c007dc90200946b0e085c00000002000c0086c90200fc6b0e080c00000001000c0090c902 *00fc6b0e081500000002000c004ecd0000246c0e081000000001000c0099c90200246c0e083200 *000002000c00a4c90200686c0e084c00000002000c00afc90200346d0e080400000001000c00c8 *c90200906e0e080800000001000c00eb8b0200f86e0e080c00000001000c00d2c902003c6f0e08 *0c00000001000c00dcc902001c6e0e080800000001000c00e6c902001c6e0e082d00000002000c *00f1c90200546e0e080800000001000c00fbc90200546e0e083400000002000c0004ca0200906e *0e082a00000002000c000fca0200c46e0e080800000001000c0019ca0200c46e0e081400000002 *000c0022ca0200e06e0e080800000001000c002cca0200e06e0e080c00000002000c00f58b0200 *f86e0e082400000002000c0035ca0200246f0e080800000001000c003fca0200246f0e080b0000 *0002000c0048ca02003c6f0e083000000002000c00ed41020018710e080800000001000c0053ca *0200a86f0e080b00000002000c005eca0200bc6f0e080800000001000c0068ca0200bc6f0e081e *00000002000c0071ca020014700e082900000002000c007cca0200dc6f0e081500000002000c00 *87ca020008700e081400000001000c00ec9e010014700e080c00000001000c0091ca020048700e *080800000001000c009bca020048700e080600000002000c00a4ca020058700e08080000000100 *0c00aeca020058700e086000000002000c00b7ca0200c0700e080800000001000c00c1ca0200c0 *700e085000000002000c00f741020018710e081200000002000c00caca0200bc720e0808000000 *01000c00d4ca0200a8720e080800000001000c00deca0200a8720e080b00000002000c00e7ca02 *00bc720e080f00000002000c00f0ca02009c740e080c00000001000c00faca02009c740e088b00 *000002000c0005cb020060740e080800000001000c000fcb020060740e082f00000002000c00de *100000b8750e080c00000001000c00e8100000b8750e088b00000002000c001acb02007c750e08 *0800000001000c0024cb02007c750e082f00000002000c002fcb0200f4760e080c00000001000c *0039cb0200f4760e088300000002000c0044cb0200b8760e080800000001000c004ecb0200b876 *0e082f00000002000c0059cb020028780e080c00000001000c0063cb020028780e088300000002 *000c006ecb0200ec770e080800000001000c0078cb0200ec770e082f00000002000c0083cb0200 *24790e080c00000001000c00a7cb0200b07f0e080c00000001000c00b1cb020078790e08080000 *0001000c00bbcb020078790e083200000002000c00c4cb0200b8790e080c00000001000c00cecb *0200b8790e086f00000002000c00d7cb0200347a0e080c00000001000c00e1cb0200347a0e0839 *00000002000c00eccb02007c7a0e080c00000001000c00f6cb02007c7a0e085300000002000c00 *01cc0200d87a0e080800000001000c000bcc0200d87a0e084600000002000c0014cc0200207b0e *083d00000002000c001fcc0200687b0e080800000001000c0029cc0200687b0e08460000000200 *0c0032cc0200b07b0e084700000002000c003dcc02000c7c0e081400000001000c0047cc020014 *7c0e080800000001000c0051cc0200147c0e083000000002000c005ccc02004c7c0e0808000000 *01000c0066cc02004c7c0e082900000002000c0071cc0200807c0e080800000001000c007bcc02 *00807c0e084b00000002000c0084cc0200d47c0e080800000001000c008ecc0200d47c0e085300 *000002000c0097cc0200307d0e080800000001000c00a1cc0200307d0e084600000002000c00aa *cc0200787d0e083d00000002000c00b5cc0200c07d0e080800000001000c00bfcc0200c07d0e08 *4600000002000c00c8cc0200087e0e084700000002000c00d3cc0200647e0e081400000001000c *00ddcc02006c7e0e080800000001000c00e7cc02006c7e0e083000000002000c00f2cc0200a47e *0e080800000001000c00fccc0200a47e0e082900000002000c0007cd0200d87e0e080800000001 *000c0011cd0200d87e0e084500000002000c001acd02002c7f0e080c00000001000c0024cd0200 *2c7f0e081400000002000c002dcd0200407f0e081400000002000c0038cd0200607f0e080c0000 *0001000c0042cd0200607f0e081200000002000c004bcd0200747f0e081c00000002000c0056cd *0200a47f0e081400000001000c0060cd0200b07f0e086e00000002000c0069cd020030810e0808 *00000001000c0073cd020088800e082d00000002000c007ecd0200b8800e082d00000002000c00 *89cd0200fc800e081400000001000c0093cd0200fc800e080f00000002000c009ecd02000c810e *080500000002000c00a9cd020028810e081400000001000c00b3cd020030810e08300000000200 *0c00becd02004c820e080800000001000c00dfcd0200fc820e080c00000001000c00e9cd0200c0 *820e080800000001000c00f3cd0200c0820e083000000002000c00fccd0200fc820e0817000000 *02000c0005ce020014830e080800000001000c0029ce0200c4830e080c00000001000c0033ce02 *0088830e080800000001000c003dce020088830e083000000002000c0046ce0200c4830e081700 *000002000c004fce020064840e080800000001000c0059ce020014860e080800000001000c0063 *ce020064840e082e00000002000c006ece02009c840e080800000001000c0078ce02009c840e08 *3100000002000c0081ce0200d8840e080800000001000c008bce0200d8840e083500000002000c *0094ce020018850e080800000001000c009ece020018850e081400000002000c00a7ce02003485 *0e080800000001000c00b1ce020034850e081400000002000c00bace020054850e080c00000001 *000c00c4ce020054850e083000000002000c00cfce020084850e080f00000002000c00dace0200 *94850e080f00000002000c00e5ce0200b8850e081400000001000c00efce0200c0850e08080000 *0001000c00f9ce0200c0850e084900000002000c0002cf020014860e084200000002000c000dcf *020058860e080400000001000c0033cf0200d4860e080c00000001000c0058cf0200848a0e0810 *00000001000c0062cf020024870e080b00000002000c006dcf020030870e080b00000002000c00 *78cf02003c870e080b00000002000c0083cf020048870e080b00000002000c008ecf020054870e *080b00000002000c0099cf020068870e080800000001000c00a3cf020068870e08290000000200 *0c00aecf020094870e080500000002000c00b8cf0200cc890e082a00000002000c00c3cf02009c *870e080b00000002000c00cecf0200b0870e080800000001000c00d8cf0200b0870e0829000000 *02000c00e3cf0200e4870e080800000001000c00edcf0200e4870e082900000002000c00f8cf02 *0018880e080800000001000c0002d0020018880e084600000002000c000bd0020068880e080800 *000001000c0015d0020068880e082a00000002000c0020d002009c880e080800000001000c002a *d002009c880e083d00000002000c0033d00200dc880e086a00000002000c003ed002005c890e08 *1400000001000c0048d0020068890e080c00000001000c0052d0020068890e082700000002000c *005bd002009c890e080c00000001000c0065d002009c890e081700000002000c006ed00200cc89 *0e081800000001000c0078d00200f8890e085700000002000c0083d00200748a0e082400000001 *000c008dd00200848a0e082a00000002000c0098d00200188b0e080800000001000c00a2d00200 *188b0e083300000002000c00abd002004c8b0e080400000001000c00ddd00200b08b0e080c0000 *0001000c0008d10200e08d0e080c00000001000c0012d10200008c0e080c00000001000c001cd1 *0200008c0e082900000002000c0027d10200348c0e080800000001000c0031d10200348c0e080b *00000002000c003ad10200408c0e083b00000002000c0045d10200888c0e080c00000001000c00 *4fd10200888c0e082e00000002000c005ad10200c48c0e080c00000001000c0064d10200c48c0e *082900000002000c006fd10200f88c0e080800000001000c0079d10200f88c0e080b0000000200 *0c0082d10200108d0e080c00000001000c008cd10200108d0e084400000002000c0095d1020060 *8d0e080c00000001000c009fd10200608d0e081200000002000c00a8d10200748d0e0839000000 *02000c00b2d10200d48d0e082400000001000c00bcd10200e08d0e081500000002000c00c5d102 *00f88d0e080800000001000c00e8d10200a88e0e080800000001000c00f2d102004c910e080c00 *000001000c00fcd102005c8e0e080e00000002000c0007d202006c8e0e080e00000002000c0011 *d20200a08e0e082400000001000c001bd20200a88e0e082a00000002000c0026d20200dc8e0e08 *0800000001000c0030d20200dc8e0e085800000002000c0039d202003c8f0e080800000001000c *0043d202003c8f0e081400000002000c004cd20200588f0e080800000001000c0056d20200588f *0e084e00000002000c0061d20200a88f0e080200000002000c006bd20200c48f0e082300000002 *000c0076d20200c48f0e081800000001000c0080d20200f08f0e080800000001000c008ad20200 *f08f0e083a00000002000c0093d2020038900e080c00000001000c009dd2020038900e08460000 *0002000c00a6d202008c900e080c00000001000c00b0d202008c900e086700000002000c00b9d2 *020000910e080c00000001000c00c3d2020000910e081200000002000c00ccd2020020910e080c *00000001000c00d6d2020020910e082000000002000c00dfd202004c910e080900000002000c00 *e8d2020058910e080800000001000c000ed30200c4960e080800000001000c0018d302000c960e *080c00000001000c0022d30200e8910e080800000001000c002cd30200e8910e08310000000200 *0c0035d3020028920e080c00000001000c003fd3020028920e083500000002000c004ad3020060 *920e080200000002000c0054d3020090920e082100000002000c005fd302006c920e0808000000 *01000c0069d302006c920e080b00000002000c0072d3020090920e081800000001000c007cd302 *00bc920e080800000001000c0086d30200bc920e084900000002000c008fd3020010930e080800 *000001000c0099d3020010930e083600000002000c00a4d3020048930e081e00000002000c00af *d3020070930e080800000001000c00b9d3020070930e084900000002000c00c2d30200c4930e08 *0800000001000c00ccd30200c4930e083600000002000c00d7d30200fc930e083700000002000c *00e2d3020048940e081400000001000c00ecd3020050940e080800000001000c00f6d302005094 *0e084600000002000c00ffd30200a0940e080800000001000c0009d40200a0940e083000000002 *000c0014d40200dc940e080c00000001000c001ed40200dc940e088300000002000c0027d40200 *6c950e080c00000001000c0031d402006c950e080900000002000c003ad4020084950e080c0000 *0001000c0044d4020084950e082600000002000c004dd40200ac950e082000000002000c0058d4 *0200cc950e082000000002000c0063d4020000960e081400000001000c006dd402000c960e085f *00000002000c0076d4020074960e080800000001000c0080d4020074960e084600000002000c00 *89d40200c4960e083000000002000c0094d40200d0970e080800000001000c009ed402006c970e *080800000001000c00a8d402006c970e085900000002000c00b1d40200d0970e08490000000200 *0c00bad402001c980e080400000001000c00ced40200c4980e080c00000001000c00d8d4020058 *980e080800000001000c00e2d4020058980e086000000002000c00ebd40200c4980e083b000000 *02000c00f4d40200a49b0e080400000001000c0014d502004c9c0e081800000001000c001ed502 *00749c0e080800000001000c0028d50200ac9f0e081000000001000c0032d50200ac9f0e088000 *000002000c003dd50200309c0e080200000002000c0047d502004c9c0e081d00000002000c0052 *d50200749c0e082900000002000c005dd50200a89c0e080800000001000c0067d50200a89c0e08 *3100000002000c0070d50200e49c0e080800000001000c007ad50200e49c0e083500000002000c *0083d50200249d0e080800000001000c008dd50200249d0e081400000002000c0096d50200449d *0e080c00000001000c00a0d50200449d0e083000000002000c00abd50200749d0e080f00000002 *000c00b6d50200849d0e080f00000002000c00c1d50200a89d0e081400000001000c00cbd50200 *b09d0e080800000001000c00d5d50200b09d0e084900000002000c00ded50200049e0e08080000 *0001000c00e8d50200049e0e084200000002000c00f3d50200489e0e080500000002000c00fdd5 *0200509f0e084a00000002000c0008d60200589e0e080800000001000c0012d60200589e0e0830 *00000002000c001bd60200909e0e080800000001000c0025d60200909e0e083000000002000c00 *30d60200c89e0e080800000001000c003ad60200c89e0e085a00000002000c0043d602002c9f0e *080800000001000c004dd602002c9f0e080900000002000c0056d60200509f0e08180000000100 *0c0060d60200a0a00e080800000001000c006ad6020060a00e080800000001000c0074d6020060 *a00e082300000002000c007dd602008ca00e080800000001000c0087d602008ca00e080c000000 *02000c0090d60200a0a00e082700000002000c0099d60200a4a70e085000000001000c00b7d602 *0050a80e080c00000001000c00c1d602001ca80e080800000002000c00cbd6020038a80e081400 *000001000c00d5d6020038a80e080c00000001000c00dfd6020050a80e08b400000002000c00e8 *d602001caa0e080c00000001000c00f2d602001caa0e085700000002000c00fdd60200cca90e08 *0800000001000c0007d70200cca90e084100000002000c0012d7020024ab0e080800000001000c *001cd7020024ab0e082400000002000c0025d7020048ab0e080800000001000c0038d70200b0ab *0e080800000001000c004bd7020080ac0e080800000001000c0055d7020038ac0e080800000001 *000c005fd7020038ac0e084000000002000c0068d7020080ac0e081400000002000c0071d70200 *ecac0e080800000001000c007bd70200b4ac0e080800000001000c0085d70200b4ac0e082d0000 *0002000c008ed70200ecac0e081400000002000c0097d7020058ad0e080800000001000c00a1d7 *020020ad0e080800000001000c00abd7020020ad0e082d00000002000c00b4d7020058ad0e0814 *00000002000c00bdd70200d4ad0e080800000001000c00c7d702008cad0e080800000001000c00 *d1d702008cad0e083d00000002000c00dad70200d4ad0e081400000002000c00e3d7020040ae0e *080800000001000c00edd702001cae0e080800000001000c00f7d702001cae0e08190000000200 *0c0000d8020040ae0e081a00000002000c0009d80200b0ae0e080800000001000c0013d8020090 *ae0e080800000001000c001dd8020090ae0e081700000002000c0026d80200b0ae0e081a000000 *02000c002fd8020004b00e081400000001000c0039d8020070af0e082f00000002000c0044d802 *00a8af0e080800000001000c004ed80200a8af0e083000000002000c0057d80200d8af0e081500 *000002000c0062d8020004b00e080400000001000c0086d8020078b00e080800000001000c0090 *d8020078b00e082800000002000c0099d8020008b10e080800000001000c00a3d80200c0b00e08 *0800000001000c00add80200c0b00e083d00000002000c00b6d8020008b10e081400000002000c *00bfd802001cb10e080800000001000c00d2d802008cb10e080800000001000c00e4d80200fcb1 *0e081400000001000c00eed80200b0b10e080d00000002000c00f9d80200c0b10e082500000002 *000c0004d902006cb20e080800000001000c001fd90200dcb20e080800000001000c003ad90200 *4cb30e080800000001000c0055d90200bcb30e080800000001000c0070d90200b8b60e08140000 *0001000c007ad9020058b40e084f00000002000c0085d90200b0b40e080800000001000c008fd9 *0200b0b40e084200000002000c0098d90200f4b40e081500000002000c00a3d9020020b50e0814 *00000001000c00add9020028b50e080800000001000c00b7d9020028b50e083c00000002000c00 *c0d9020064b50e082e00000002000c00cbd902009cb50e080800000001000c00d5d902009cb50e *084200000002000c00ded90200e0b50e081200000002000c00e9d90200fcb50e08080000000100 *0c00f3d90200fcb50e085000000002000c00fcd902004cb60e082400000002000c0007da020084 *b60e081400000001000c0011da020084b60e082000000002000c001cda0200d8b60e0808000000 *01000c0026da0200d8b60e082e00000002000c002fda0200bcb80e081400000001000c0039da02 *0034b70e082900000002000c0044da020068b70e080800000001000c004eda020068b70e082500 *000002000c0057da020090b70e081e00000002000c0062da0200c4b70e081400000001000c006c *da0200c4b70e081400000002000c0077da0200e0b70e080800000001000c0081da0200e0b70e08 *2400000002000c008ada020004b80e081e00000002000c000d4400002cb80e080800000001000c *0095da02002cb80e082400000002000c009eda020050b80e082400000002000c00a9da020088b8 *0e081400000001000c00b3da020088b80e081d00000002000c00beda0200bcb80e080400000001 *000c00d8da0200d4b90e081400000001000c00e2da020010b90e080800000002000c00edda0200 *24b90e080c00000001000c00f7da020024b90e085100000002000c0002db020078b90e08480000 *0002000c000ddb0200f8ba0e081400000001000c0017db0200c4ba0e080e00000002000c0022db *0200d4ba0e080e00000002000c002ddb0200f8ba0e080800000001000c0053db020060bb0e0808 *00000001000c0066db0200d0bb0e080800000001000c0079db020040bc0e081000000001000c00 *94db020064be0e081400000001000c009edb020090bc0e080e00000002000c00a8db0200b4bc0e *081400000001000c00b2db0200b4bc0e081e00000002000c00bcdb0200e8bc0e08140000000100 *0c00c6db0200e8bc0e080600000002000c00d0db020004bd0e081400000001000c00dadb020004 *bd0e083900000002000c00e5db020040bd0e080e00000002000c00efdb020064bd0e0814000000 *01000c00f9db020064bd0e081500000002000c0003dc020090bd0e081400000001000c000ddc02 *0090bd0e080600000002000c0017dc0200acbd0e081400000001000c0021dc0200b8bd0e080c00 *000001000c002bdc0200b8bd0e083700000002000c0034dc0200f0bd0e082200000002000c003f *dc020028be0e081400000001000c0049dc020028be0e081b00000002000c0054dc020044be0e08 *0a00000002000c005fdc0200f8be0e084800000002000c0068dc0200a4be0e081800000002000c *0072dc0200d0be0e081400000001000c007cdc0200d0be0e080b00000002000c0086dc0200f0be *0e081400000001000c0090dc0200f8be0e080800000001000c00750201000cc00e080800000001 *000c009adc02008cbf0e080800000001000c00a4dc02008cbf0e087800000002000c00addc0200 *0cc00e081100000002000c00b6dc020020c00e080800000001000c00cbdc02000cc10e08140000 *0001000c00d5dc020068c00e080a00000002000c00e0dc020074c00e081100000002000c00eadc *02009cc00e081400000001000c00f4dc02009cc00e081c00000002000c00ffdc0200ccc00e0814 *00000001000c0009dd0200ccc00e081c00000002000c0014dd0200e8c00e080d00000002000c00 *1fdd02000cc10e080400000001000c0036dd020050c20e080c00000001000c0040dd02004cc10e *080800000001000c004add02004cc10e084500000002000c0055dd02009cc10e08080000000100 *0c005fdd02009cc10e084500000002000c006add0200ecc10e080800000001000c0074dd0200ec *c10e085700000002000c007ddd020050c20e082a00000002000c0086dd02007cc20e0804000000 *01000c009cdd0200c0c20e080c00000001000c00a6dd0200c0c20e080e00000002000c00afdd02 *00d0c20e080400000001000c00c3dd02004cc30e080c00000001000c0049e7000010c30e080800 *000001000c0053e7000010c30e082f00000002000c00cddd02004cc30e082a00000002000c00d6 *dd020078c30e080400000001000c002d6c000014c40e080c00000001000c00e9dd0200b8c30e08 *0800000001000c00f3dd0200b8c30e082a00000002000c0034e70000ecc30e080800000001000c *00fcdd0200ecc30e081b00000002000c00376c000014c40e082a00000002000c0005de020040c4 *0e080400000001000c0018de0200dcc40e080c00000001000c00c786020080c40e080800000001 *000c00d186020080c40e082a00000002000c0022de0200b4c40e080800000001000c002cde0200 *b4c40e081b00000002000c0035de0200dcc40e082a00000002000c003ede020008c50e08040000 *0001000c0051de020084c50e080c00000001000c00c86b000048c50e080800000001000c005bde *020048c50e082f00000002000c0064de020084c50e082a00000002000c006dde02004cc70e0838 *00000001000c008ade0200a0ca0e080c00000001000c0094de0200ecc90e080c00000001000c00 *930a02008cc90e080c00000001000c009ede0200e0c80e080e00000002000c00a9de0200fcc80e *080c00000001000c00b3de0200fcc80e082400000002000c00bcde020020c90e08120000000200 *0c00c7de020048c90e081400000001000c00d1de020054c90e080c00000001000c00dbde020054 *c90e082a00000002000c00e6de02008cc90e085200000002000c00f1de0200ecc90e0843000000 *02000c00fcde020030ca0e080e00000002000c0007df02004cca0e080c00000001000c0011df02 *004cca0e081e00000002000c001adf02006cca0e081200000002000c0025df020094ca0e081400 *000001000c002fdf0200a0ca0e082a00000002000c003adf0200ccca0e081000000001000c0051 *df0200c0cb0e081400000001000c005bdf020024cb0e084100000002000c0066df020068cb0e08 *4100000002000c0071df02006ccc0e081000000001000c0089df020060cd0e081400000001000c *0093df0200c4cc0e084100000002000c009edf020008cd0e084100000002000c00a9df020098cd *0e080800000001000c00b3df020098cd0e080b00000002000c00bcdf0200a4cd0e080400000001 *000c00d6df02004cce0e080c00000001000c00e0df020040ce0e081400000001000c00eadf0200 *10ce0e081900000002000c00f4df02004cce0e084000000002000c00fddf02008cce0e080c0000 *0001000c0015e0020000cf0e080c00000001000c001fe0020054cf0e081400000001000c0029e0 *020000cf0e083000000002000c0034e0020030cf0e081000000002000c003ee0020054cf0e080c *00000001000c0056e00200c8cf0e080c00000001000c0060e002001cd00e081400000001000c00 *6ae00200c8cf0e083000000002000c0075e00200f8cf0e081000000002000c007fe002003cd00e *080800000001000c0089e002003cd00e080b00000002000c0092e002002cd20e08080000000100 *0c009ce002002cd20e082600000002000c00a5e0020058d30e080800000001000c00afe0020058 *d30e083300000002000c00b8e00200f0d30e080800000001000c00c2e00200f0d30e0833000000 *02000c00cbe0020000d50e080800000001000c00d5e0020000d50e083300000002000c00dee002 *0034d50e080400000001000c0008e10200a4d50e080800000001000c0012e10200a4d50e082d00 *000002000c001be1020038d60e080800000001000c0025e1020038d60e083300000002000c002e *e10200d0d60e080800000001000c0038e10200d0d60e083300000002000c0041e102002cd80e08 *0800000001000c0065e1020074d90e080c00000001000c006fe102006cd80e080200000002000c *0079e10200c4d80e083100000002000c0084e1020078d80e080800000001000c008ee1020078d8 *0e083100000002000c0097e10200c4d80e081800000001000c00a1e1020000d90e080800000001 *000c00abe1020000d90e083100000002000c00b4e102003cd90e080800000001000c00bee10200 *3cd90e081500000002000c00c7e102005cd90e080800000001000c00d1e102005cd90e08090000 *0002000c00dae1020074d90e084b00000002000c00e3e1020024da0e080800000001000c00ede1 *020070da0e080c00000001000c00f7e1020024da0e082a00000002000c0002e202005cda0e080c *00000001000c000ce202005cda0e080800000002000c0017e2020070da0e084e00000002000c00 *22e20200c0da0e080800000001000c004ce20200e0de0e082000000001000c0056e20200f8da0e *080800000002000c0060e2020020db0e082000000001000c006ae2020030db0e08100000000100 *0c0074e2020030db0e082d00000002000c007fe2020060db0e084100000002000c008ae20200a4 *db0e080800000002000c0094e20200ccdb0e082000000001000c009ee20200dcdb0e0810000000 *01000c00a8e20200dcdb0e082d00000002000c00b3e202000cdc0e084100000002000c00bee202 *0050dc0e080e00000002000c00c9e202006cdc0e080c00000001000c00d3e202006cdc0e082f00 *000002000c00dee202009cdc0e080800000002000c00e8e20200c4dc0e082000000001000c00f2 *e20200c4dc0e084600000002000c00fde202000cdd0e080e00000002000c0008e302001cdd0e08 *1100000002000c0012e3020044dd0e081400000001000c001ce3020044dd0e081800000002000c *0026e302007cdd0e082000000001000c0030e3020084dd0e080800000001000c003ae3020084dd *0e084e00000002000c0043e30200d4dd0e081500000002000c004ee3020000de0e081400000001 *000c0058e302000cde0e080c00000001000c0062e302000cde0e082900000002000c006de30200 *38de0e080e00000002000c0078e3020048de0e082b00000002000c0083e3020088de0e08140000 *0001000c008de3020088de0e083700000002000c0098e30200e0de0e080800000001000c00c2e3 *02006ce00e081400000001000c00cce3020018df0e080b00000002000c00d7e3020024df0e080b *00000002000c00e2e302003cdf0e080c00000001000c00ece302003cdf0e082900000002000c00 *f7e3020068df0e080800000002000c0001e4020090df0e082000000001000c000be40200a0df0e *081000000001000c0015e40200a0df0e084e00000002000c0020e40200f0df0e083b0000000200 *0c002be4020040e00e081400000001000c0035e4020040e00e081500000002000c0040e40200ec *e00e080c00000001000c004ae4020084e20e080c00000001000c0054e40200bce20e080c000000 *01000c005ee40200ece00e081d00000002000c0069e402000ce10e080900000002000c0074e402 *0018e10e080b00000002000c00b40b020030e10e080c00000001000c007fe4020030e10e080800 *000002000c008ae4020044e10e080c00000001000c0094e4020044e10e084e00000002000c009f *e402009ce10e080800000001000c00a9e402009ce10e085900000002000c00b2e4020000e20e08 *0800000001000c00bce4020000e20e081400000002000c00c5e4020014e20e081d00000002000c *00d0e4020048e20e081400000001000c00dae4020048e20e081a00000002000c00e5e4020078e2 *0e081400000001000c00efe4020084e20e082900000002000c00fae40200bce20e083300000002 *000c0005e5020024e30e080400000001000c0032e50200c0e30e080400000001000c005fe50200 *60e40e080400000001000c008ce50200fce40e080400000001000c00b9e50200dce50e08080000 *0001000c00c3e50200dce50e082a00000002000c00cee5020008e60e080800000001000c00ffe5 *0200e0e60e080800000001000c0020e6020050e70e080c00000001000c0041e60200c4e70e0808 *00000001000c0062e6020034e80e080c00000001000c0085e60200fce90e081400000001000c00 *8fe6020074e80e080800000002000c0099e6020090e80e081400000001000c00a3e6020090e80e *081500000002000c00ade60200bce80e081400000001000c00b7e60200bce80e08180000000200 *0c00c1e60200e8e80e081400000001000c00cbe60200e8e80e081200000002000c00d6e60200fc *e80e081100000002000c00e0e6020024e90e081400000001000c00eae6020024e90e081e000000 *02000c00f4e6020058e90e081400000001000c00fee6020058e90e081800000002000c0008e702 *0084e90e081400000001000c0012e7020090e90e080c00000001000c001ce7020090e90e084300 *000002000c0025e70200d4e90e081200000002000c0030e70200fce90e080800000001000c0056 *e7020084ea0e081400000001000c0060e7020044ea0e081c00000002000c006be7020060ea0e08 *0e00000002000c0076e70200d0eb0e080800000001000c0080e7020008ec0e080800000001000c *008ae702008cec0e080c00000001000c0094e70200d0eb0e082d00000002000c009fe7020008ec *0e082d00000002000c00aae7020040ec0e080800000001000c00b4e7020040ec0e083f00000002 *000c00bde702008cec0e082c00000002000c00c8e70200ecec0e081400000001000c00eee70200 *18ee0e080c00000001000c00f8e70200a4ee0e080c00000001000c0002e80200dcee0e080c0000 *0001000c000ce802003cef0e080c00000001000c0016e8020070ef0e080c00000001000c0020e8 *02008cef0e081000000001000c002ae80200f8ef0e081000000001000c0057cf000078f00e080c *00000001000c0034e80200d8f00e080c00000001000c003ee8020018ee0e082900000002000c00 *49e802004cee0e080800000001000c0053e802004cee0e084a00000002000c005ce80200a4ee0e *082c00000002000c0067e80200dcee0e082900000002000c0072e8020010ef0e08080000000100 *0c007ce8020010ef0e082000000002000c0085e802003cef0e082600000002000c0090e8020070 *ef0e080b00000002000c009be802008cef0e082a00000002000c00a6e80200b8ef0e080e000000 *02000c00b1e80200c8ef0e080b00000002000c00bce80200e8ef0e081400000001000c00c6e802 *00f8ef0e085c00000002000c00d1e802005cf00e080800000001000c00dbe802005cf00e081000 *000002000c00e4e8020078f00e082600000002000c00568d0000a8f00e080800000001000c0060 *8d0000a8f00e082300000002000c00efe80200d8f00e082600000002000c00fae8020000f10e08 *0400000001000c0012e9020038f20e080800000001000c001ce902004cf10e080800000001000c *0026e902004cf10e083100000002000c00acc2000088f10e080800000001000c002fe9020088f1 *0e08a500000002000c0038e9020038f20e081e00000002000c0041e9020058f20e080400000001 *000c0060e90200c4f30e080c00000001000c006ae90200b8f20e080800000001000c0074e90200 *b8f20e083900000002000c007de90200fcf20e080800000001000c0087e90200fcf20e08140000 *0002000c0090e9020018f30e080800000001000c009ae9020018f30e083600000002000c00a5e9 *020058f30e080800000001000c00afe9020058f30e083d00000002000c00b8e90200a0f30e0808 *00000001000c00c2e90200a0f30e081700000002000c00cbe90200c4f30e082000000002000c00 *d4e902009cf40e080800000001000c00dee9020088f40e080800000001000c00e8e9020088f40e *080b00000002000c00f1e902009cf40e080f00000002000c00fae90200ecff0e08080000000100 *0c0004ea0200ecff0e084000000002000c000fea0200f4000f080800000001000c0019ea0200f4 *000f082900000002000c0024ea02007c010f080800000001000c002eea02007c010f0829000000 *02000c0039ea020004020f080800000001000c0043ea020004020f082900000002000c004eea02 *0028030f080800000001000c0068ea020048050f080800000001000c0081ea020018080f081400 *000001000c008bea020090050f083200000002000c0096ea0200d0050f080c00000001000c00a0 *ea0200d0050f084200000002000c00a9ea020014060f081500000002000c00b4ea020040060f08 *1400000001000c00beea02004c060f080c00000001000c00c8ea02004c060f083c00000002000c *00d1ea020088060f082e00000002000c00dcea0200c0060f080800000001000c00e6ea0200c006 *0f083a00000002000c00efea020004070f080800000001000c00f9ea020004070f082100000002 *000c0002eb020028070f080f00000002000c000deb020040070f080800000001000c0017eb0200 *40070f083a00000002000c0020eb02007c070f082400000002000c002beb0200b4070f08140000 *0001000c0035eb0200b4070f081d00000002000c0040eb0200e8070f081400000001000c004aeb *0200e8070f080f00000002000c0055eb0200f8070f080a00000002000c0060eb0200cc090f0814 *00000001000c006aeb020044080f082900000002000c0075eb020078080f080800000001000c00 *7feb020078080f082500000002000c0088eb0200a0080f081e00000002000c0093eb0200d4080f *081400000001000c009deb0200d4080f081400000002000c00a8eb0200f0080f08080000000100 *0c00b2eb0200f0080f082200000002000c00bbeb020014090f081e00000002000c00c6eb02003c *090f080800000001000c00d0eb02003c090f082200000002000c00d9eb020060090f0824000000 *02000c00e4eb020098090f081400000001000c00eeeb020098090f081d00000002000c00f9eb02 *00840b0f081400000001000c0003ec0200f8090f082900000002000c007c4300002c0a0f080800 *000001000c000eec02002c0a0f082200000002000c0017ec0200500a0f081e00000002000c0022 *ec0200840a0f081400000001000c002cec0200840a0f081400000002000c0037ec0200a00a0f08 *0800000001000c0041ec0200a00a0f082500000002000c004aec0200c80a0f081e00000002000c *00ef1f0200f00a0f080800000001000c00f91f0200f00a0f082500000002000c0055ec0200180b *0f082400000002000c0060ec0200500b0f081400000001000c006aec0200500b0f081d00000002 *000c0075ec0200840b0f080400000001000c0087ec0200240d0f081400000001000c0091ec0200 *c80b0f080800000002000c009cec0200d00b0f080800000002000c00a6ec0200ec0b0f08140000 *0001000c00b0ec0200ec0b0f084d00000002000c00bbec02003c0c0f083900000002000c00c6ec *02008c0c0f081400000001000c00d0ec0200980c0f080c00000001000c00daec0200980c0f0830 *00000002000c00e5ec0200c80c0f084800000002000c00f0ec0200240d0f081000000001000c00 *08ed0200d8110f081400000001000c0012ed0200700d0f080800000001000c001ced0200700d0f *082d00000002000c00c0340000a00d0f081800000002000c00ba450000c00d0f08080000000100 *0c00c4450000c00d0f082d00000002000c0025ed0200fc0d0f080c00000001000c002fed0200fc *0d0f08bb00000002000c0038ed0200c40e0f080c00000001000c0042ed0200c40e0f081d000000 *02000c001b350000e40e0f084c00000002000c0026350000440f0f081400000001000c004bed02 *00440f0f081a00000002000c0056ed0200600f0f080b00000002000c0061ed0200740f0f080800 *000001000c006bed0200740f0f083a00000002000c0074ed0200b80f0f080800000001000c007e *ed0200b80f0f083a00000002000c0087ed0200f40f0f085c00000002000c009932000064100f08 *1400000001000c0092ed020064100f082000000002000c009ded020098100f081400000001000c *00a7ed0200a4100f080c00000001000c00b1ed0200a4100f080f00000002000c00baed0200c010 *0f080c00000001000c00c4ed0200c0100f083c00000002000c00cded0200fc100f082300000002 *000c00d8ed020020110f080200000002000c00e3ed020038110f081400000001000c00eded0200 *44110f080c00000001000c00f7ed020044110f080c00000002000c0000ee02005c110f080c0000 *0001000c000aee02005c110f083c00000002000c0013ee020098110f082600000002000c001eee *0200c0110f080200000002000c0029ee020024120f081400000001000c0033ee0200f0110f080e *00000002000c003eee020000120f080e00000002000c0049ee020024120f080400000001000c00 *61ee020050130f080800000001000c006bee020068120f080800000001000c0075ee020068120f *082c00000002000c007eee02009c120f080800000001000c0088ee02009c120f08360000000200 *0c0093ee0200dc120f080800000001000c009dee0200dc120f082c00000002000c00a6ee020010 *130f080800000001000c00b0ee020010130f083600000002000c00bbee020050130f0857000000 *02000c00c4ee02002c140f080800000001000c00d7ee02009c140f080c00000001000c00e7ee02 *0024160f081400000001000c00f1ee0200e8140f080e00000002000c00fbee02000c150f081400 *000001000c0005ef02000c150f081900000002000c000fef02003c150f081400000001000c0019 *ef02003c150f081b00000002000c0024ef020058150f080b00000002000c002eef0200e0150f08 *1800000002000c0037ef020078150f081400000001000c0041ef020078150f081b00000002000c *004bef0200a8150f081400000001000c0055ef0200a8150f081600000002000c0060ef0200d415 *0f081400000001000c006aef0200e0150f080c00000001000c0074ef0200f8150f080e00000002 *000c007fef020008160f080800000002000c008aef020024160f080400000001000c00a4ef0200 *a4160f080c00000001000c00aeef020060160f080800000001000c00b8ef020060160f08370000 *0002000c00c1ef0200a4160f081500000002000c00caef0200bc160f080400000001000c00ddef *020060170f080c00000001000c00e7ef0200d0170f080800000001000c00f1ef020064190f080c *00000001000c00fbef020060170f084b00000002000c0006660000b4170f080800000001000c00 *06f00200b4170f081200000002000c000ff00200d0170f082a00000002000c006827020004180f *080800000001000c001af0020004180f080800000002000c0023f0020014180f08080000000100 *0c002df0020014180f083000000002000c0038f002004c180f080800000001000c0042f002004c *180f085300000002000c004df00200a8180f080800000001000c0057f00200a8180f0845000000 *02000c0060f00200f0180f080c00000002000c006bf00200fc180f080b00000002000c0076f002 *001c190f081400000001000c0080f0020024190f080800000001000c008af0020024190f081e00 *000002000c00ede200004c190f080800000001000c0093f002004c190f080c00000002000c009c *f0020064190f083600000002000c00a7f002005c1e0f080800000001000c00b1f002005c1e0f08 *2400000002000c00baf00200e81e0f080800000001000c00c4f00200e81e0f083a00000002000c *00cdf0020050220f080800000001000c00f0f0020000230f080c00000001000c00faf00200c422 *0f080800000001000c0004f10200c4220f083000000002000c000df1020000230f081700000002 *000c0016f1020048240f080400000001000c0036f1020000250f080c00000001000c0040f10200 *80250f080c00000001000c004af10200b8240f080c00000001000c0054f10200b8240f083b0000 *0002000c005ff1020000250f084b00000002000c006af1020054250f080800000001000c0074f1 *020054250f082000000002000c007df1020080250f082600000002000c0088f10200dc250f080c *00000001000c00a9f102009c2a0f080c00000001000c0013c30000682b0f080c00000001000c00 *b3f10200c42b0f080c00000001000c00b686000078260f080800000001000c00c086000078260f *082400000002000c00a4ca0200a4260f080800000001000c00bdf10200a4260f082a0000000200 *0c00c8f10200d0260f081600000002000c00d3f10200e8260f084500000002000c00def1020030 *270f083500000002000c00e9f102007c270f081400000001000c00f3f102007c270f0823000000 *02000c00fef10200b4270f081400000001000c0008f20200c0270f080c00000001000c0012f202 *00c0270f083000000002000c001df2020000280f081000000001000c0027f2020000280f084e00 *000002000c004fc1000060280f081000000001000c0059c1000060280f085200000002000c0032 *f20200bc280f080800000001000c003cf20200bc280f083700000002000c0047f2020000290f08 *0c00000001000c0051f2020000290f084800000002000c005cf2020054290f080c00000001000c *0066f2020054290f084b00000002000c0071f20200a8290f080800000001000c007bf20200a829 *0f082800000002000c0084f20200dc290f080c00000001000c008ef20200dc290f082600000002 *000c0099f202000c2a0f080800000001000c00a3f202000c2a0f082800000002000c00acf20200 *402a0f080c00000001000c00b6f20200402a0f082600000002000c00c1f20200682a0f08080000 *0002000c00cbf20200902a0f082000000001000c00d5f202009c2a0f089800000002000c00e0f2 *02003c2b0f080800000001000c00eaf202003c2b0f082000000002000c001dc30000682b0f0826 *00000002000c00f3f20200982b0f080800000001000c00fdf20200982b0f082000000002000c00 *06f30200c42b0f082600000002000c0011f30200202c0f080c00000001000c0025a30100d42c0f *080800000001000c002fa30100d42c0f082a00000002000c00e6200100202d0f08080000000100 *0c0032f30200202d0f08aa00000002000c003bf30200482e0f080800000001000c0045f3020000 *2e0f080800000001000c004ff30200002e0f084000000002000c0058f30200482e0f081d000000 *02000c0061f30200682e0f080400000001000c0079f30200b82e0f085b00000002000c0082f302 *00b82e0f080c00000001000c008cf3020004310f080800000001000c00a5f3020074310f080800 *000001000c00bef30200e4310f080800000001000c00d6f30200c8340f081400000001000c00e0 *f302002c320f083200000002000c00ebf302006c320f080c00000001000c00f5f302006c320f08 *4200000002000c00fef30200b0320f081500000002000c0009f40200dc320f081400000001000c *0013f40200e8320f080c00000001000c001df40200e8320f083c00000002000c0026f402002433 *0f082e00000002000c0031f402005c330f080800000001000c003bf402005c330f082d00000002 *000c0044f4020094330f080800000001000c004ef4020094330f081500000002000c0057f40200 *b4330f080800000001000c0061f40200b4330f082100000002000c006af40200d8330f080f0000 *0002000c0075f40200f0330f080800000001000c007ff40200f0330f083a00000002000c0088f4 *02002c340f082400000002000c0093f4020064340f081400000001000c009df4020064340f081d *00000002000c00a8f4020098340f081400000001000c00b2f4020098340f080f00000002000c00 *bdf40200a8340f080a00000002000c00c8f40200dc360f081400000001000c00d2f4020004350f *084600000002000c00ddf4020054350f080800000001000c00e7f4020054350f08450000000200 *0c00f0f402009c350f081500000002000c00fbf40200c8350f081400000001000c0005f50200d0 *350f080800000001000c000ff50200d0350f080f00000002000c0018f50200e0350f081c000000 *02000c0023f50200fc350f084400000002000c00bb3e000048360f080800000001000c002ef502 *0048360f084300000002000c0037f502008c360f081500000002000c0042f50200b8360f081400 *000001000c004cf50200b8360f080f00000002000c0057f50200f0360f080800000001000c0072 *f50200e0370f080400000001000c008bf502006c380f081400000001000c00566700002c380f08 *0800000001000c00606700002c380f080500000002000c0095f5020034380f081800000002000c *00a0f502004c380f080a00000002000c00abf502006c380f080400000001000c00c4f50200f838 *0f081400000001000c00cef50200b8380f080800000001000c00d8f50200b8380f080800000002 *000c00e1f50200c0380f081800000002000c00ecf50200d8380f080a00000002000c00f7f50200 *f8380f080400000001000c000df60200c0390f081400000001000c0017f602003c390f08260000 *0002000c0022f602006c390f080800000001000c002cf602006c390f082400000002000c0035f6 *020090390f081c00000002000c0040f60200c0390f080400000001000c005cf60200483a0f0814 *00000001000c0066f60200203a0f081200000002000c0070f60200483a0f080400000001000c00 *82f60200903a0f080800000001000c008cf60200903a0f083700000002000c0095f60200c83a0f *080400000001000c00216a0000143b0f080800000001000c002b6a0000143b0f08370000000200 *0c00a7f60200603b0f080400000001000c00bef60200d03b0f081400000001000c00c8f60200a4 *3b0f080800000002000c00d3f60200ac3b0f080d00000002000c00def60200d03b0f0804000000 *01000c00f4f60200403c0f081400000001000c00fef60200143c0f080800000002000c0009f702 *001c3c0f080d00000002000c0014f70200403c0f080800000001000c0028f70200b43c0f081400 *000001000c0032f70200883c0f080800000002000c003df70200903c0f080d00000002000c0048 *f70200b43c0f080800000001000c005bf70200283d0f081400000001000c0065f70200fc3c0f08 *0800000002000c0070f70200043d0f080d00000002000c007bf70200283d0f080400000001000c *008cf70200c03e0f080800000001000c0096f70200103f0f080800000001000c00a0f70200603f *0f080800000001000c00aaf70200943f0f080800000001000c00eb820200e43f0f080800000001 *000c00b4f7020034400f080800000001000c00bef7020084400f080800000001000c00c8f70200 *70430f080c00000001000c00d2f7020018450f081000000001000c00b5620000a43e0f08080000 *0001000c0093e30000a43e0f081200000002000c00dcf70200c03e0f082a00000002000c003e27 *0200f43e0f080800000001000c00e7f70200f43e0f081200000002000c00f0f70200103f0f082a *00000002000c0040640000443f0f080800000001000c00fbf70200443f0f081200000002000c00 *04f80200603f0f082a00000002000c000ff80200943f0f082900000002000c001af80200c83f0f *080800000001000c0024f80200c83f0f081200000002000c00f5820200e43f0f082a0000000200 *0c002df8020018400f080800000001000c0037f8020018400f081200000002000c0040f8020034 *400f082a00000002000c000de4000068400f080800000001000c0017e4000068400f0812000000 *02000c004bf8020084400f082a00000002000c0056f80200b8400f080800000001000c0060f802 *00b8400f080800000002000c0069f80200c8400f080800000001000c0073f80200c8400f083600 *000002000c007ef8020008410f080800000001000c0088f8020008410f080800000002000c00ac *82020018410f080800000001000c00b682020018410f083600000002000c0091f8020050410f08 *6400000002000c009cf8020070430f084b00000002000c00a7f80200bc410f080800000001000c *00b1f80200bc410f080800000002000c00baf80200cc410f080800000001000c00c4f80200cc41 *0f083600000002000c00cff802000c420f080800000001000c00d9f802000c420f081100000002 *000c00e384020028420f080800000001000c00ed84020028420f083000000002000c00e2f80200 *58420f085200000002000c00edf80200c8420f081b00000002000c00f6f80200c0420f08140000 *0001000c0000f90200c8420f080800000001000c000af90200e4420f080e00000002000c0015f9 *0200f4420f080b00000002000c0020f9020014430f081400000001000c002af902001c430f0808 *00000001000c0034f902001c430f081e00000002000c003df9020044430f080800000001000c00 *47f9020044430f080c00000002000c00af63000058430f080800000001000c0050f9020058430f *080c00000002000c0059f90200bc430f080d00000002000c0064f90200d4430f08080000000100 *0c006ef90200d4430f080800000002000c00c9cf0000e4430f080800000001000c0077f90200e4 *430f083600000002000c0082f902001c440f084800000002000c008df9020078440f0814000000 *01000c0097f9020078440f081e00000002000c00a2f9020098440f080b00000002000c00adf902 *00b8440f081400000001000c00b7f90200c4440f080c00000001000c00c1f90200c4440f081e00 *000002000c00bbe40000f0440f080c00000001000c00c5e40000f0440f081500000002000c00ca *f9020018450f083c00000002000c00d5f9020098460f080800000001000c00dff9020098460f08 *3300000002000c00e8f9020034470f080400000001000c0009fa0200a4470f080800000001000c *0013fa0200e0470f080c00000001000c001dfa0200a4470f082d00000002000c0028fa0200e047 *0f080800000002000c0033fa020050480f080400000001000c0054fa0200c0480f080800000001 *000c005efa0200fc480f080c00000001000c0068fa0200c0480f082d00000002000c0073fa0200 *fc480f080800000002000c007efa020004490f080400000001000c009ffa020074490f08080000 *0001000c00a9fa0200b0490f080c00000001000c00b3fa020074490f082d00000002000c00befa *0200b0490f080800000002000c00c9fa0200e8490f080800000001000c00dcfa0200844b0f0808 *00000001000c00f5fa0200c44e0f081400000001000c00fffa0200284c0f080800000001000c00 *09fb0200284c0f083d00000002000c00821e0200704c0f080800000001000c00301e0200704c0f *081e00000002000c0012fb0200904c0f082100000002000c001dfb0200bc4c0f08080000000100 *0c0027fb0200bc4c0f084200000002000c0030fb0200004d0f081500000002000c003bfb02002c *4d0f081400000001000c0045fb0200344d0f080800000001000c004ffb0200344d0f083c000000 *02000c0058fb0200704d0f082e00000002000c0063fb0200a84d0f080800000001000c006dfb02 *00a84d0f084200000002000c0076fb0200ec4d0f081200000002000c0081fb0200084e0f080800 *000001000c008bfb0200084e0f085000000002000c0094fb0200584e0f082400000002000c009f *fb0200904e0f081400000001000c00a9fb0200904e0f082000000002000c00b4fb0200084f0f08 *0800000001000c00befb0200084f0f083700000002000c00c7fb0200844f0f080800000001000c *00d1fb0200844f0f083700000002000c00dafb0200b0500f080800000001000c00e4fb0200b050 *0f082f00000002000c00effb020074510f081400000001000c00f9fb020054510f080b00000002 *000c0003fc0200d0510f081400000001000c000dfc02008c510f082f00000002000c0017fc0200 *d0510f080400000001000c0028fc020018520f080800000001000c0032fc020018520f08370000 *0002000c0086fe000090520f080800000001000c003bfc020090520f083700000002000c0044fc *0200c8520f080400000001000c0055fc020010530f080800000001000c005ffc020010530f0837 *00000002000c0068fc020048530f080400000001000c0038020100bc530f080800000001000c00 *7cfc0200bc530f080800000002000c0085fc0200c4530f080400000001000c000302010038540f *080800000001000c0099fc020038540f080800000002000c00a2fc020040540f08040000000100 *0c00b4fc020050550f080c00000001000c00096900007c540f080800000001000c00136900007c *540f083700000002000c00befc0200b4540f081800000002000c00c8fc0200e0540f0814000000 *01000c00d2fc0200e0540f081e00000002000c00dcfc020014550f081400000001000c00fb0401 *0020550f080c00000001000c00e6fc020020550f082100000002000c00effc020050550f081d00 *000002000c00f8fc020070550f080400000001000c007b690000bc550f080800000001000c0085 *690000bc550f083700000002000c000afd0200f4550f080400000001000c004568000040560f08 *0800000001000c004f68000040560f083700000002000c001cfd020078560f080800000001000c *005868000080580f080c00000001000c0030fd0200b0560f081100000002000c003afd0200d856 *0f081400000001000c0044fd0200d8560f081800000002000c004efd020004570f081400000001 *000c0058fd020004570f082a00000002000c0063fd02003c570f080c00000001000c006dfd0200 *3c570f082600000002000c0076fd020064570f081c00000002000c0081fd020094570f08140000 *0001000c008bfd020094570f081200000002000c0095fd0200bc570f081400000001000c009ffd *0200bc570f085300000002000c00aafd020010580f084d00000002000c00b5fd020074580f0814 *00000001000c006268000080580f081b00000002000c00bffd02009c580f080800000001000c00 *d3fd02002c5b0f080c00000001000c00ddfd0200d4580f081100000002000c00e7fd0200fc580f *081400000001000c00f1fd0200fc580f081800000002000c00fbfd020028590f08140000000100 *0c0005fe020028590f081e00000002000c000ffe02005c590f081400000001000c0019fe02005c *590f082a00000002000c0024fe020094590f080c00000001000c002efe020094590f0826000000 *02000c0037fe0200bc590f081c00000002000c0042fe0200ec590f081400000001000c004cfe02 *00ec590f081200000002000c0056fe0200145a0f081400000001000c0060fe0200145a0f085300 *000002000c006bfe0200685a0f084d00000002000c0076fe0200cc5a0f081400000001000c0080 *fe0200cc5a0f080f00000002000c008afe0200f05a0f081400000001000c001d680000fc5a0f08 *0c00000001000c0027680000fc5a0f082100000002000c0094fe02002c5b0f081d00000002000c *009dfe02004c5b0f080800000001000c00b8fe0200605c0f080800000001000c00c2fe0200c45c *0f080800000001000c0053e90000c45d0f080c00000001000c00ccfe0200305c0f080800000001 *000c00d6fe0200305c0f081200000002000c00dffe02004c5c0f080800000001000c00e9fe0200 *4c5c0f080c00000002000c00f2fe0200605c0f082a00000002000c00fdfe0200945c0f08080000 *0001000c0007ff0200945c0f081200000002000c0010ff0200b05c0f080800000001000c001aff *0200b05c0f080c00000002000c0023ff0200c45c0f082a00000002000c00d56f0000f85c0f0808 *00000001000c002eff0200f85c0f080800000002000c0037ff0200085d0f080800000001000c00 *41ff0200085d0f083600000002000c00c06f0000485d0f080800000001000c004cff0200485d0f *084500000002000c0055ff0200985d0f080800000001000c005fff0200985d0f080c0000000200 *0c0068ff0200ac5d0f080800000001000c0072ff0200ac5d0f080c00000002000c007bff0200c4 *5d0f083000000002000c0086ff0200f45d0f080400000001000c00a0ff0200a85e0f0814000000 *01000c0014e70000405e0f080800000001000c00aaff0200405e0f083700000002000c00b3ff02 *00785e0f081900000002000c00bdff0200a05f0f080400000001000c00deff020010600f080800 *000001000c00e8ff02004c600f080c00000001000c00f2ff020010600f082d00000002000c00fd *ff02004c600f080800000002000c0008000300f8600f081400000001000c001200030084600f08 *0900000002000c001d00030098600f080800000001000c002700030098600f083800000002000c *0030000300d0600f081200000002000c003b000300c4630f081400000001000c00450003003862 *0f082900000002000c00500003006c620f080800000001000c005a0003006c620f082400000002 *000c006300030090620f081e00000002000c006e000300c4620f081400000001000c0078000300 *c4620f081400000002000c0083000300e0620f080800000001000c008d000300e0620f08250000 *0002000c009600030008630f081e00000002000c00a100030030630f080800000001000c00ab00 *030030630f082500000002000c00b400030058630f082400000002000c00bf00030090630f0814 *00000001000c00c900030090630f081d00000002000c00d400030024640f081400000001000c00 *de00030000640f080800000002000c00e900030008640f080800000002000c00f400030084640f *081400000001000c00fe00030060640f080800000002000c000901030068640f08080000000200 *0c001401030084660f081400000001000c001e010300b0640f083d00000002000c0029010300f8 *640f080800000001000c0033010300f8640f083800000002000c003c01030030650f081e000000 *02000c004701030064650f081400000001000c005101030064650f081400000002000c00741f02 *0080650f080800000001000c007e1f020080650f083800000002000c005c010300b8650f081e00 *000002000c0067010300e0650f080800000001000c0071010300e0650f083800000002000c007a *01030018660f082400000002000c008501030050660f081400000001000c008f01030050660f08 *1d00000002000c009a0103001c670f080800000001000c00a4010300e4660f080800000001000c *00ae010300e4660f082f00000002000c00b90103001c670f085000000002000c00c4010300fc67 *0f080800000001000c00ce010300c4670f080800000001000c00d8010300c4670f082f00000002 *000c00e3010300fc670f085600000002000c00ee010300b4680f081400000001000c00f8010300 *90680f080800000002000c000302030098680f080800000002000c000e02030014690f08140000 *0001000c0018020300f0680f080800000002000c0023020300f8680f080800000002000c002e02 *030014690f080400000001000c00cc000100006a0f080c00000001000c004102030048690f0806 *00000002000c004b02030064690f081400000001000c005502030064690f084700000002000c00 *60020300ac690f083300000002000c006b020300f4690f081400000001000c0075020300006a0f *081500000002000c007e020300e46a0f080800000001000c0088020300306a0f08390000000200 *0c0093020300746a0f080800000001000c009d020300746a0f083500000002000c00a6020300ac *6a0f081c00000002000c00b1020300dc6a0f081400000001000c00bb020300e46a0f080c000000 *02000c00c4020300f06a0f080400000001000c0093ff0000f86b0f080c00000001000c00d80203 *00246b0f080600000002000c00e2020300406b0f081400000001000c00ec020300406b0f085300 *000002000c00f7020300946b0f084100000002000c0002030300ec6b0f081400000001000c000c *030300f86b0f081500000002000c00a2620000606f0f080800000001000c00150303003c6c0f08 *2900000002000c0020030300706c0f080800000001000c002a030300706c0f082400000002000c *0033030300946c0f081e00000002000c003e030300c86c0f081400000001000c0048030300c86c *0f081500000002000c000b040100e86c0f080800000001000c0053030300e86c0f082400000002 *000c005c0303000c6d0f081e00000002000c0067030300346d0f080800000001000c0071030300 *346d0f082400000002000c007a030300586d0f082400000002000c0085030300906d0f08140000 *0001000c008f030300906d0f081b00000002000c009a030300c06d0f081400000001000c00a403 *0300c86d0f080800000001000c00ae030300c86d0f080c00000002000c00b7030300d46d0f081f *00000002000c00c2030300fc6d0f080800000001000c00cc030300fc6d0f081b00000002000c00 *d5030300186e0f081b00000002000c00e0030300486e0f081400000001000c00ea030300486e0f *081400000002000c00f5030300646e0f080800000001000c00ff030300646e0f081b0000000200 *0c003d630000806e0f081e00000002000c0072630000a86e0f080800000001000c007c630000a8 *6e0f081b00000002000c0085630000c46e0f082400000002000c0090630000fc6e0f0814000000 *01000c0008040300fc6e0f081d00000002000c0013040300306f0f081400000001000c004a0401 *00386f0f080800000001000c001d040300386f0f081d00000002000c00ac620000606f0f081d00 *000002000c00f5620000f06f0f081400000001000c00df620000bc6f0f080e00000002000c00ea *620000cc6f0f080e00000002000c0026040300f06f0f080400000001000c003a04030020710f08 *0c00000001000c004404030024700f081100000002000c004e0403004c700f081400000001000c *00580403004c700f081800000002000c006204030078700f081400000001000c006c0403007870 *0f081e00000002000c0076040300ac700f081400000001000c0080040300ac700f081e00000002 *000c008a040300e0700f081400000001000c00e6040100ec700f080c00000001000c0094040300 *ec700f082700000002000c009d04030020710f081d00000002000c00a604030040710f08040000 *0001000c00ba04030070720f080c00000001000c00c404030074710f081100000002000c00ce04 *03009c710f081400000001000c00d80403009c710f081800000002000c00e2040300c8710f0814 *00000001000c00ec040300c8710f081e00000002000c00f6040300fc710f081400000001000c00 *00050300fc710f081e00000002000c000a05030030720f081400000001000c00140503003c720f *080c00000001000c001e0503003c720f082700000002000c002705030070720f081d0000000200 *0c003005030090720f080400000001000c0048050300bc720f080c00000001000c0052050300bc *720f080b00000002000c005b050300c8720f080400000001000c00720503004c740f0804000000 *01000c0093050300bc740f080800000001000c009d050300f8740f080c00000001000c00a70503 *00bc740f082d00000002000c00b2050300f8740f080800000002000c00bd05030034760f080c00 *000001000c00c705030034760f083f00000002000c00d205030058750f081000000002000c00dc *0503007c750f081400000001000c00e605030084750f080800000001000c00f005030084750f08 *3c00000002000c00fb050300c0750f084500000002000c000606030008760f080b00000002000c *001106030028760f081400000001000c001b060300a8770f080c00000001000c0025060300a877 *0f083f00000002000c0030060300cc760f081000000002000c003a060300f0760f081400000001 *000c0044060300f8760f080800000001000c004e060300f8760f083c00000002000c0059060300 *34770f084500000002000c00640603007c770f080b00000002000c006f0603009c770f08140000 *0001000c00790603001c790f080c00000001000c00830603001c790f083300000002000c008e06 *030034780f081000000002000c009806030058780f081400000001000c00a206030060780f0808 *00000001000c00ac06030060780f083c00000002000c00b70603009c780f084d00000002000c00 *c2060300ec780f080e00000002000c00cd06030010790f081400000001000c00d7060300847a0f *080c00000001000c00e1060300847a0f083300000002000c00ec0603009c790f08100000000200 *0c00f6060300c0790f081400000001000c0000070300c8790f080800000001000c000a070300c8 *790f083c00000002000c0015070300047a0f084d00000002000c0020070300547a0f080e000000 *02000c002b070300787a0f081400000001000c0035070300b87a0f080800000001000c00c3fe00 *00ac7c0f080c00000001000c0050070300007b0f080c00000001000c005a070300007b0f083600 *000002000c0065070300447b0f080c00000001000c006f070300447b0f085100000002000c007a *070300a87b0f081000000001000c0084070300a87b0f084b00000002000c008f070300fc7b0f08 *0800000001000c0099070300fc7b0f084e00000002000c0071fe0000587c0f080c00000001000c *007bfe0000587c0f084800000002000c00a4070300ac7c0f084f00000002000c00ad070300347e *0f080400000001000c00ce070300a47e0f080800000001000c00d8070300e07e0f080c00000001 *000c00e2070300a47e0f082d00000002000c00ed070300e07e0f080800000002000c00f8070300 *20800f080400000001000c001908030090800f080800000001000c0023080300cc800f080c0000 *0001000c002d08030090800f082d00000002000c0038080300cc800f080800000002000c004308 *0300a4810f080400000001000c006408030014820f080800000001000c006e08030050820f080c *00000001000c007808030014820f082d00000002000c008308030050820f080800000002000c00 *8e08030090830f080400000001000c00af08030000840f080800000001000c00b90803003c840f *080c00000001000c00c308030000840f082d00000002000c00ce0803003c840f08080000000200 *0c00d908030014850f080400000001000c00fa08030084850f080800000001000c0004090300c0 *850f080c00000001000c000e09030084850f082d00000002000c0019090300c0850f0808000000 *02000c002409030098860f080400000001000c004509030008870f080800000001000c004f0903 *0044870f080c00000001000c005909030008870f082d00000002000c006409030044870f080800 *000002000c006f0903001c880f080400000001000c00900903008c880f080800000001000c009a *090300c8880f080c00000001000c00a40903008c880f082d00000002000c00af090300c8880f08 *0800000002000c00ba090300a0890f080400000001000c00db090300108a0f080800000001000c *00e50903004c8a0f080c00000001000c00ef090300108a0f082d00000002000c00fa0903004c8a *0f080800000002000c00050a0300248b0f080400000001000c00270a0300948b0f080800000001 *000c00310a0300d08b0f080c00000001000c003b0a0300948b0f082d00000002000c00460a0300 *d08b0f080800000002000c00510a0300a88c0f080400000001000c00720a0300188d0f08080000 *0001000c007c0a0300548d0f080c00000001000c00860a0300188d0f082d00000002000c00910a *0300548d0f080800000002000c009c0a03002c8e0f080400000001000c00bd0a03009c8e0f0808 *00000001000c00c70a0300d88e0f080c00000001000c00d10a03009c8e0f082d00000002000c00 *dc0a0300d88e0f080800000002000c00e70a0300b08f0f080400000001000c00080b030020900f *080800000001000c00120b03005c900f080c00000001000c001c0b030020900f082d0000000200 *0c00270b03005c900f080800000002000c00320b030034910f080400000001000c00530b0300a4 *910f080800000001000c005d0b0300e0910f080c00000001000c00670b0300a4910f082d000000 *02000c00720b0300e0910f080800000002000c007d0b0300b8920f080400000001000c009e0b03 *0028930f080800000001000c00a80b030064930f080c00000001000c00b20b030028930f082d00 *000002000c00bd0b030064930f080800000002000c00c80b03003c940f080400000001000c00ea *0b0300ac940f080800000001000c00f40b0300e8940f080c00000001000c00fe0b0300ac940f08 *2d00000002000c00090c0300e8940f080800000002000c00140c0300c0950f080400000001000c *00350c030030960f080800000001000c003f0c03006c960f080c00000001000c00490c03003096 *0f082d00000002000c00540c03006c960f080800000002000c005f0c030044970f080400000001 *000c00800c0300b4970f080800000001000c008a0c0300f0970f080c00000001000c00940c0300 *b4970f082d00000002000c009f0c0300f0970f080800000002000c00aa0c0300c8980f08040000 *0001000c00cb0c030038990f080800000001000c00d50c030074990f080c00000001000c00df0c *030038990f082d00000002000c00ea0c030074990f080800000002000c00f50c03004c9a0f0804 *00000001000c00160d0300bc9a0f080800000001000c00200d0300f89a0f080c00000001000c00 *2a0d0300bc9a0f082d00000002000c00350d0300f89a0f080800000002000c00400d0300d09b0f *080400000001000c00610d0300409c0f080800000001000c006b0d03007c9c0f080c0000000100 *0c00750d0300409c0f082d00000002000c00800d03007c9c0f080800000002000c008b0d030054 *9d0f080400000001000c00ac0d0300c49d0f080800000001000c00b60d0300009e0f080c000000 *01000c00c00d0300c49d0f082d00000002000c00cb0d0300009e0f080800000002000c00d60d03 *00d89e0f080400000001000c00f70d0300489f0f080800000001000c00010e0300849f0f080c00 *000001000c000b0e0300489f0f082d00000002000c00160e0300849f0f080800000002000c0021 *0e03005ca00f080400000001000c00420e0300cca00f080800000001000c004c0e030008a10f08 *0c00000001000c00560e0300cca00f082d00000002000c00610e030008a10f080800000002000c *006c0e0300e0a10f080400000001000c008d0e030050a20f080800000001000c00970e03008ca2 *0f080c00000001000c00a10e030050a20f082d00000002000c00ac0e03008ca20f080800000002 *000c00b70e030064a30f080400000001000c00d80e0300d4a30f080800000001000c00e20e0300 *10a40f080c00000001000c00ec0e0300d4a30f082d00000002000c00f70e030010a40f08080000 *0002000c00020f0300e8a40f080400000001000c00230f030058a50f080800000001000c002d0f *030094a50f080c00000001000c00370f030058a50f082d00000002000c00420f030094a50f0808 *00000002000c004d0f03006ca60f080400000001000c006e0f0300dca60f080800000001000c00 *780f030018a70f080c00000001000c00820f0300dca60f082d00000002000c008d0f030018a70f *080800000002000c00980f0300f0a70f080400000001000c00b90f030060a80f08080000000100 *0c00c30f03009ca80f080c00000001000c00cd0f030060a80f082d00000002000c00d80f03009c *a80f080800000002000c00e30f030074a90f080400000001000c0004100300e4a90f0808000000 *01000c000e10030020aa0f080c00000001000c0018100300e4a90f082d00000002000c00231003 *0020aa0f080800000002000c002e10030038091208040000000100100037100300801812080400 *000001001700411003008418120804000000010017004c100300a0181208005000000100170055 *100300a068120800500000010017005f100300a0b81208040000000100170070100300b0b81208 *04000000010017007e100300b4b81208040000000100170089100300b8b8120804000000010017 *00991003003c0912080400000001001000a8100300e0b812080400000001001700c01003005cc8 *0f08bf04000002000c00c9100300c6d90f08d800000002000c00da100300e8b812080400000001 *001700e6100300e3d20f085301000002000c00fa100300c4d60f083c00000002000c0012110300 *e4b8120804000000010017002d11030044d00f082700000002000c003d110300acd10f08380000 *0002000c00491103009bd20f082400000002000c0052110300ecb8120804000000010017005e11 *030036d40f083900000002000c006f110300c6d40f08e301000002000c007d1103009eda0f0847 *01000002000c0091110300e5db0f086c00000002000c00a311030004b912080400000001001700 *ac11030008b912080400000001001700b61103000cb912080400000001001700c9110300d1e00f *088500000002000c00d711030056e10f081300000002000c00e411030069e10f08c20000000200 *0c00f411030020b91208800000000100170000120300a0b9120880000000010017000d120300d1 *e50f082100000002000c001e12030024ba120804000000010017002e12030028ba120804000000 *01001700371203002cba1208040000000100170048120300d2e60f085200000002000c005b1203 *0030ba120804000000010017006a12030034ba120804000000010017007b12030038ba12080400 *0000010017008e1203003cba120804000000010017009e12030040ba12080400000001001700ab *12030044ba12080400000001001700bb12030048ba12080400000001001700cc1203004cba1208 *0400000001001700d812030050ba12080400000001001700e712030054ba120804000000010017 *00f712030058ba12080400000001001700041303005cba120804000000010017001413030060ba *120808000000010017002113030068ba120808000000010017002f13030070ba12080400000001 *0017003d13030074ba120804000000010017004913030078ba1208040000000100170058130300 *7cba120804000000010017006513030080ba120804000000010017007213030084ba1208040000 *00010017007f13030088ba12080400000001001700901303008cba12080400000001001700a013 *030090ba12080400000001001700ae1303004ceb0f082100000002000c00b7130300aceb0f081f *00000002000c00c213030098ba12080400000001001700d013030094ba12080400000001001700 *d91303007e0210080100000002000c00ea130300420210083c00000002000c00fb130300120210 *083000000002000c000a140300c8ba1208040000000100170017140300ccba1208040000000100 *17002c140300080510082d00000002000c0038140300ec2c10080200000002000c0045140300f0 *2c10081900000002000c00541403000c2d10080200000002000c0061140300102d100819000000 *02000c00701403002c2d10080200000002000c007d140300302d10081900000002000c008c1403 *004c2d10080200000002000c0099140300502d10081900000002000c00a81403006c2d10080200 *000002000c00b5140300702d10081900000002000c00c41403008c2d10080200000002000c00d2 *140300902d10081900000002000c00e2140300ac2d10080200000002000c00f0140300b02d1008 *1900000002000c0000150300cc2d10080200000002000c000e150300d02d10081900000002000c *001e150300ec2d10080200000002000c002c150300f02d10081900000002000c003c1503000c2e *10080200000002000c004b150300102e10081900000002000c005c1503002c2e10080200000002 *000c006b150300302e10081900000002000c007c1503004c2e10080200000002000c008b150300 *502e10081900000002000c009c1503006c2e10080200000002000c00ab150300702e1008190000 *0002000c00bc1503008c2e10080200000002000c00cb150300902e10081900000002000c00dc15 *0300ac2e10080200000002000c00eb150300b02e10081900000002000c00fc150300cc2e100802 *00000002000c000b160300d02e10081900000002000c001c160300ec2e10080200000002000c00 *2b160300f02e10081900000002000c003c1603000c2f10080200000002000c004c160300102f10 *081900000002000c005e1603002c2f10080200000002000c006f160300302f1008190000000200 *0c00821603004c2f10080200000002000c0094160300502f10081900000002000c00a81603006c *2f10080200000002000c00bb160300702f10081900000002000c00d01603008c2f100802000000 *02000c00e4160300902f10081900000002000c00fa160300ec4110080b00000002000c00111703 *00344210081100000002000c00271703002c5910081200000002000c003e1703001a5910081200 *000002000c0055170300085910081200000002000c006c170300f65810081200000002000c0083 *170300e45810081200000002000c009a170300d25810081200000002000c00b1170300c0581008 *1200000002000c00c8170300ae5810081200000002000c00df1703009c5810081200000002000c *00f41703004c5910081200000002000c000e1803006c5910081200000002000c00251803008c59 *10081d00000002000c003b180300b85910081b00000002000c0051180300e05910081d00000002 *000c00671803000c5a10080f00000002000c007c180300285a10080500000002000c0093180300 *645a10080500000002000c00a1180300745a10080600000002000c00b6180300845a1008090000 *0002000c00c6180300985a10080900000002000c00d6180300ac5a10080900000002000c00e618 *0300c05a10080900000002000c00f6180300d45a10080900000002000c0006190300e85a100809 *00000002000c0016190300fc5a10080900000002000c0026190300105b10080900000002000c00 *36190300245b10080500000002000c004b190300345b10080500000002000c005e190300445b10 *080500000002000c0073190300545b10080500000002000c008d190300645b10086f0000000200 *0c00a1190300dc5b10082300000002000c00b8190300085c10086f00000002000c00d019030080 *5c10080c00000002000c00de190300945c10080c00000002000c00f2190300a85c10080c000000 *02000c00011a0300bc5c10080c00000002000c00151a0300d05c10080c00000002000c002c1a03 *00e45c10080c00000002000c003e1a0300f85c10080c00000002000c00541a03000c5d10080c00 *000002000c00681a0300205d10080c00000002000c007d1a0300345d10080c00000002000c0095 *1a0300485d10080c00000002000c00ac1a03005c5d10080c00000002000c00bf1a0300705d1008 *0c00000002000c00dc1a0300845d10080c00000002000c00f51a0300985d10080c00000002000c *00091b0300ac5d10080c00000002000c00201b0300c05d10080c00000002000c003e1b0300d45d *10080c00000002000c00501b0300d85e10080c00000001000c00671b0300d85e10082900000002 *000c007d1b0300645f10080c00000001000c00941b0300645f10082900000002000c00aa1b0300 *f05f10080c00000001000c00c11b0300f05f10082900000002000c00d71b03007c6010080c0000 *0001000c00ee1b03007c6010082900000002000c00041c0300086110080c00000001000c001b1c *0300086110082900000002000c00311c0300946110080c00000001000c00481c03009461100829 *00000002000c005e1c0300206210080c00000001000c00751c0300206210082900000002000c00 *8b1c0300ac6210080c00000001000c00a21c0300ac6210082900000002000c00b81c0300386310 *080c00000001000c00cf1c0300386310082900000002000c00e51c0300c46310080c0000000100 *0c00fc1c0300c46310082900000002000c00121d0300506410080c00000001000c002a1d030050 *6410082900000002000c00411d0300dc6410080c00000001000c00591d0300dc64100829000000 *02000c00701d0300686510080c00000001000c00881d0300686510082900000002000c009f1d03 *00f46510080c00000001000c00b71d0300f46510082900000002000c00ce1d0300806610080c00 *000001000c00e61d0300806610082900000002000c00fd1d03000c6710080c00000001000c0015 *1e03000c6710082900000002000c002c1e0300986710080c00000001000c00451e030098671008 *0800000002000c005d1e0300d46710080c00000001000c00761e0300d46710080800000002000c *008e1e0300106810080c00000001000c00a71e0300106810080800000002000c00bf1e03004c68 *10080c00000001000c00d81e03004c6810080800000002000c00f01e0300886810080c00000001 *000c00091f0300886810080800000002000c00211f0300c46810080c00000001000c003a1f0300 *c46810080800000002000c00521f0300006910080c00000001000c006b1f030000691008080000 *0002000c00831f03003c6910080c00000001000c009c1f03003c6910080800000002000c00b41f *0300786910080c00000001000c00cd1f0300786910080800000002000c00e51f0300b46910080c *00000001000c00fe1f0300b46910080800000002000c0016200300f06910080c00000001000c00 *30200300f06910080800000002000c00492003002c6a10080c00000001000c00632003002c6a10 *080800000002000c007c200300686a10080c00000001000c0096200300686a1008080000000200 *0c00af200300a46a10080c00000001000c00c9200300a46a10080800000002000c00e2200300e0 *6a10080c00000001000c00fc200300e06a10080800000002000c00152103001c6b10080c000000 *01000c002f2103001c6b10080800000002000c0048210300587310080600000002000c005a2103 *00607310081b00000002000c0069210300d0ba1208040000000100170080210300d4ba12080400 *0000010017008a210300fa751008d900000002000c0099210300697810082a00000002000c00a4 *210300d47710087300000002000c00b2210300947810081200000002000c00c1210300e8121208 *0400000001001000d0210300d8ba12080400000001001700e5210300d07810087500000002000c *00f4210300e0ba12080400000001001700f6210300fcba1208040000000100170001220300e4ba *120804000000010017000a220300dcba12080400000001001700192203006ea910082000000002 *000c002b220300f8ba120804000000010017003922030000bb120804000000010017004b220300 *04bb120804000000010017005622030008bb120804000000010017005e2203000cbb1208040000 *000100170069220300daa810086b00000002000c00782203000da31008bf00000002000c008f22 *0300e8ba1208040000000100170098220300d6941008f606000002000c00a1220300cca310089e *01000002000c00b7220300d58910081c00000002000c00c1220300028910082400000002000c00 *d4220300ecba12080400000001001700df220300f0ba12080400000001001700ef2203006aa510 *087601000002000c00ff22030010bb120804000000010017001523030014bb1208040000000100 *170024230300cc9b10087a05000002000c003823030041871008c101000002000c004f23030045 *a910082900000002000c0067230300ee8a10089d07000002000c0070230300f189100877000000 *02000c0079230300688a10088600000002000c0083230300f4ba12080400000001001700922303 *00bfac10089700000002000c00a12303008b9210087e01000002000c00b52303001a9410086100 *000002000c00cf2303007b9410085b00000002000c00db23030037a71008a301000002000c00ea *230300e9ad1008a800000002000c00f723030018bb120804000000010017000324030046a11008 *c701000002000c0010240300e0a610085700000002000c002624030056ad10089300000002000c *0039240300dea910089c00000002000c004d2403007aaa10081f02000002000c006024030094ae *1008b000000002000c006e24030044af10081e03000002000c007b2403001ebb10083601000002 *000c008c24030062b210081101000002000c009724030073b310080901000002000c00a8240300 *54bc10083402000002000c00b32403007cb410083700000002000c00be24030088be10088a0400 *0002000c00c9240300b3b410080f01000002000c00dc240300c2b51008bc01000002000c00f024 *0300ceba10085000000002000c00fa2403007eb710088800000002000c000f25030094ba10083a *00000002000c001625030014c310081c00000002000c001f25030030c310086300000002000c00 *2725030093c310080f00000002000c0033250300a2c310082300000002000c003e250300c5c310 *082700000002000c004b250300ecc310083801000002000c00522503001cbb1208040000000100 *17005b2503009bc510086400000002000c0069250300ffc510081300000002000c007625030009 *c810089000000002000c0086250300ec1212081c000000010010009425030024d7100859000000 *02000c00ab2503008fd81008a200000002000c00b325030031d910088b00000002000c00c32503 *0024bb12080400000001001700d225030020131208b000000001001000dd2503000bdb1008af00 *000002000c00eb25030005e410082300000002000c00f425030005e31008dd00000002000c00fb *250300e2e310082300000002000c0006260300b2e110085301000002000c00162603005ce71108 *0400000011001000362603001cc50e082300000012000c004b260300d0e3110804000000110010 *006c2603003ca5110800000000100010009e260300001805080000000010000c00c32603002cf1 *0c084300000012000c00e5260300f8d21108040000001100100006270300dcd104080000000010 *000c002a270300181905080000000010000c00572703004c330e080600000012000c0089270300 *6dc409080000000010000c00aa27030002c50f082700000012000c00b727030098041208040000 *0011001000cd270300b4400e080c00000011000c0005280300b01805080000000010000c002d28 *0300dcd0110804000000110010004c280300b0c40c080800000011000c007228030000d0110804 *000000110010009a280300ac860f085100000012000c00bd2803009cf111080400000011001000 *d4280300244b0e085700000012000c0007290300a46c10084700000012000c001a290300c4f211 *08040000001100100046290300f0620c080c00000011000c007429030084d70508000000001000 *0c00a6290300046b0f082000000012000c00bc290300ecab11080000000010001000ee29030070 *280e085400000012000c00172a0300f4970d084400000012000c002f2a0300500d0c0810000000 *11000c00432a0300d0b40b082300000012000c005e2a0300e8330d082300000012000c00912a03 *008c910d083d00000012000c00aa2a0300c4900c080c00000011000c00c52a03008c6007080000 *000010000c00ec2a0300000000003d00000012000000f72a0300b4f31108040000001100100028 *2b03003c140a080000000010000c004e2b0300041405080000000010000c00702b03006c8f0c08 *0c00000012000c00862b0300b4620c080e00000012000c00b32b030060d3110804000000110010 *00cb2b030040c409080000000010000c00fd2b03000cbb0e080c00000011000c00242c0300b8bc *12080400000011001700362c0300cc820f085b00000012000c00562c030060530b080000000010 *000c00802c03001c150d081000000011000c009d2c030024080f082000000012000c00af2c0300 *d01908080000000010000c00e02c0300f09805080000000010000c00082d0300ec4110080c0000 *0011000c00202d0300a8d0110804000000110010003b2d0300a45510087500000012000c00512d *0300b00212080400000011001000672d0300e0e311080400000011001000852d0300280e0d0851 *00000012000c00aa2d0300dec50f086802000012000c00bf2d0300f8ce11080000000010001000 *ee2d030018d305080000000010000c00202e0300244b0c080c00000011000c00492e0300cce90b *080300000012000c00732e03000c9d0b085400000012000c00a42e030054420708000000001000 *0c00cc2e03000c5f10080800000011000c00df2e030060d00e080800000011000c00f32e0300e0 *ef110804000000110010000b2f03000ce50e085900000012000c003a2f03000ce8110804000000 *110010006c2f030084ee0c085400000012000c00862f030035180b080000000010000c00b12f03 *002ca70f085b00000012000c00c52f0300d08b0b080000000010000c00f82f0300fc5f07080000 *000010000c0021300300d0210f080500000012000c004930030060050f083000000012000c0064 *3003004b5810080600000012000c007d300300b8090d085400000012000c00a2300300f04d0e08 *5b00000012000c00c3300300b4fd0d085b00000012000c00e0300300945c10080800000011000c *00f330030060050f081000000011000c000d31030034770c080600000012000c002c31030088b1 *1108000000001000100055310300301805080000000010000c007b310300804210084b00000012 *000c008f310300dc6107080000000010000c00b9310300a4a211080000000010001000de310300 *cceb110804000000110010000432030014770c080600000012000c002332030080001208040000 *001100100046320300d8da0e081000000011000c007132030060d00e085b00000012000c008632 *030088c311080000000010001000b732030078930f080800000011000c00ca320300a08a0c080c *00000011000c00df320300d09705080000000010000c000833030014da11080400000011001000 *27330300d004120804000000110010004c33030068410c087e00000012000c006d330300dc3a0f *081000000011000c0080330300b0190f080800000011000c00a433030000c30d08050000001200 *0c00c333030088da11080400000011001000da33030056c20f080f00000012000c00e333030018 *260c086200000012000c000034030048f3110804000000110010002934030060740f0810000000 *11000c004b340300f4980b084100000012000c006e340300d85107080000000010000c00953403 *00e0da0b080c00000012000c00aa340300546c10080c00000011000c00bc340300541e0a080000 *000010000c00e2340300f86007080000000010000c000b35030010a80e080c00000011000c002a *35030060950b081000000011000c0052350300801805080000000010000c0076350300b46a1008 *0800000011000c008c350300f04d0e080800000011000c00ac350300bc900d080c00000012000c *00c2350300ac750d085400000012000c00e43503007ce41108040000001100100003360300bcf1 *0b080c00000011000c001c3603000c0110083c00000012000c002c3603008cbf0b084300000012 *000c0059360300b0b01108000000001000100083360300702c0a080000000010000c00ad360300 *10250e085b00000012000c00cb36030040210d080c00000011000c00f436030094f11108040000 *00110010000b3703009ce90b080300000012000c002d37030038d1110804000000110010005937 *030073fe0f081800000012000c0063370300a0a20f080800000011000c0076370300e801120804 *00000011001000993703006c400c081000000011000c00be3703001caa11080000000010001000 *ef37030088a8110800000000100010001a380300bcc40c080800000011000c003e380300300812 *080400000011001000633803007ce711080400000011001000833803008cb80f08200000001200 *0c008e380300a80b0c081000000011000c00a4380300a4fa0f089c03000012000c00b03803003c *ff0b080500000012000c00c738030050d111080400000011001000dc380300e8360f0808000000 *12000c00ef38030084030e080c00000012000c00083903002c4f0c080c00000011000c00303903 *00081c0b080000000010000c005d39030038130d081000000011000c007a39030034450c081000 *000011000c0095390300e0f90d080c00000011000c00ad3903003c360c081000000011000c00c5 *3903006cf011080400000011001000df390300bcea11080400000011001000063a0300f04b0708 *0000000010000c002b3a0300dcd20b08b700000012000c00463a030084160b080000000010000c *00813a0300383710080900000012000c00943a030040f011080400000011001000ad3a030044a2 *0d085600000012000c00d13a030050d011080400000011001000033b030014e00d080800000012 *000c00173b030014dc11080400000011001000333b03004c8c0b080000000010000c00673b0300 *80f411080400000011001000893b03009c1a08080000000010000c00b63b030068d51108040000 *0011001000e53b0300149e0f085b00000012000c00f93b03005c790f080c00000011000c00103c *0300e46710080800000011000c00253c0300805c10080800000011000c00323c0300b04b0c0822 *00000012000c005c3c03005cfd0e080800000011000c00733c0300000000003a00000012000000 *843c03007cda110804000000110010009a3c0300a8dc11080400000011001000b53c030014ac11 *080000000010001000e23c0300f8de0e082000000012000c000e3d030060d61108040000001100 *1000393d0300fcf111080400000011001000543d0300b05e0c080800000011000c00833d03006c *e90b080300000012000c00ae3d030048cf0b082000000012000c00c73d030008c4110800000000 *10001000f63d0300a8df0b080700000012000c000b3e030078930f085b00000012000c001f3e03 *0054920d080c00000011000c003b3e030008670a080000000010000c006f3e03004cda1008bf00 *000012000c00843e030098fb0b080c00000011000c009d3e0300b8c409080000000010000c00c8 *3e0300f0b409080000000010000c00fa3e030098c3110800000000100010002b3f0300ece41008 *0000000012020c00423f030054ed0b080300000012000c005a3f030058de0b080300000012000c *00793f030070b709080000000010000c00aa3f03008c8e0c080c00000011000c00bf3f0300f4e3 *0b081000000011000c00d73f03006cee09080000000010000c00fe3f0300c0d411080400000011 *0010001b40030044fd110804000000110010003e40030014910c080c00000012000c005c400300 *7001120804000000110010007f400300d86a0c080600000012000c00ac400300985d1008080000 *0011000c00bf40030038f611080400000011001000d740030020e311080400000011001000f340 *0300589f0b080c00000011000c001341030078b409080000000010000c00434103002c6b100808 *00000011000c0059410300806a0c081000000011000c008141030084c811080000000010001000 *b6410300c86b10083500000012000c00c9410300c4490f082300000012000c00ed41030058300a *080000000010000c00154203002caa110800000000100010004e42030008a30f085b0000001200 *0c006f4203001cd70e080800000012000c009942030068c411080000000010001000c6420300fc *0d05080000000010000c00e8420300145c0a080000000010000c002743030054e2110804000000 *110010005043030034f11108040000001100100067430300f0e410088301000012020c00704303 *0040fe0e085b00000012000c008843030014ec0b080c00000011000c009a430300dcbf11080000 *000010001000d0430300f0bb0b080800000011000c00ec430300d01805080000000010000c0015 *440300d85f07080000000010000c003644030040770a080000000010000c006544030098a81108 *00000000100010009244030084550f081000000011000c00a544030084cf0c085900000012000c *00bb440300246a0f080c00000011000c00d0440300c8ff11080400000011001000eb440300a4c4 *0c080300000012000c000f450300d01006080000000010000c0045450300d8080d080c00000012 *000c0059450300106510084900000012000c006e450300b0ff1108040000001100100086450300 *d0b609080000000010000c00b4450300846207080000000010000c00e245030028610708000000 *0010000c000546030084d3110804000000110010002146030008e00c081000000011000c003646 *030030d51108040000001100100051460300ac890a080000000010000c00834603000461070800 *00000010000c00af4603000c5f10084900000012000c00c3460300d80612080400000011001000 *d946030074f20e083100000012000c00fa46030070be0e083300000012000c000f4703003c3a10 *089c00000012000c00194703009c190e081800000011000c00394703001cdf1108040000001100 *10006c470300f89c0f085b00000012000c008e470300e43a10080c00000011000c00a447030048 *470f081000000011000c00c647030038990b080700000012000c00e447030020d1040800000000 *10000c000e480300801805080000000010000c0033480300949e0d080800000011000c004a4803 *005ca7110800000000100010007648030008560f081000000011000c0089480300aced0b080700 *000012000c009d480300a8930c082900000012000c00b548030014f10e082f00000012000c00cf *48030048e211080400000011001000ee48030068410c081000000011000c000e490300e4d61108 *0400000011001000384903007c9e0f080800000011000c0058490300f44f10082400000012000c *0066490300d8d20e080c00000011000c008d49030070cf0e081000000011000c00a6490300b8ba *0e080c00000011000c00c2490300acd011080400000011001000db4903008cdc11080400000011 *001000fe4903002ccd11080000000010001000314a03006ccc11080000000010001000624a0300 *30640f080c00000011000c00784a03003ce7110804000000110010009b4a0300fcd20e08540000 *0012000c00ca4a0300eccf11080000000010001000fe4a0300085307080000000010000c00204b *0300485d10080800000011000c00364b0300dcf5110804000000110010005c4b03003c490c080c *00000012000c00834b030058280e081800000011000c00ac4b030050d811080400000011001000 *c44b03002ccc11080000000010001000f44b03002c5f07080000000010000c00164c030078ec11 *0804000000110010004a4c03009cee11080400000011001000644c0300183c0c08460000001200 *0c008c4c030010a60f080800000011000c00ad4c030040c80b080700000012000c00c94c030090 *660f080c00000011000c00e84c030020f211080400000011001000054d030078ef110804000000 *110010001d4d0300ec8f0c080c00000011000c00314d0300ccdc11080400000011001000504d03 *0014040f080800000011000c006c4d030008010c082000000012000c00814d030010370b080000 *000010000c00ac4d0300ccad0d081000000011000c00d04d0300186207080000000010000c00fa *4d030035d204080000000010000c001a4e0300d8f511080400000011001000404e030010bd0908 *0000000010000c00784e0300ac2f10087000000011000c008d4e030080a60f081000000011000c *00af4e030038f90e080800000011000c00c64e0300fc880d082600000012000c00f84e030014db *11080400000011001000114f030064b211080000000010001000364f030090b509080000000010 *000c00674f03001c9f05080000000010000c00954f0300803b0e084b00000012000c00cb4f0300 *48a211080000000010001000f24f030054920d083d00000012000c000f5003000cd21108040000 *001100100025500300681605080000000010000c004f500300a4720f081000000011000c006850 *030008010c080c00000011000c007c500300dc070c081000000011000c0092500300e4d5110804 *00000011001000b05003000c2c0b080000000010000c00d350030000000000082c000012000000 *f0500300fddc0f081300000012000c00fb50030008880d082600000012000c0025510300e4a008 *080000000010000c005d510300885010085c00000012000c006f51030044120508000000001000 *0c00975103005c120e086000000012000c00aa51030000dd11080400000011001000ca51030068 *e311080400000011001000eb51030000000000be00000012000000ff510300a0f60c080c000000 *11000c001c5203008ce80b082600000012000c003e520300fc160b080000000010000c00775203 *00f0b205080000000010000c00a15203005c8b0e080c00000011000c00d4520300000000003a00 *000012000000e6520300605b0f080c00000011000c000253030070e40e085900000012000c0031 *53030094070e084500000012000c004d53030024c811080000000010001000845303003ccd1108 *0000000010001000b5530300604a0f080300000012000c00d2530300fcd40c080c00000012000c *00e953030078cb110800000000100010001d540300f4df0d080500000012000c00305403002ce4 *1108040000001100100047540300202f0c080c00000011000c0064540300d83b0c081000000011 *000c008b5403007cd00b082000000012000c00a4540300c01f0f080800000011000c00c0540300 *0cda11080400000011001000e1540300201005080000000010000c0000550300f0510708000000 *0010000c002655030030890b080000000010000c004d55030080060e080c00000011000c006355 *0300e0c7110800000000100010009455030094ed09080000000010000c00be5503007005120804 *00000011001000d4550300d8f011080400000011001000f7550300d8f70e085b00000012000c00 *0f560300280e0d081000000011000c0033560300e8b60a080000000010000c005e56030080b609 *080000000010000c00935603009cfa0e080800000011000c00aa56030000380e08590000001200 *0c00d7560300bc2d0c085f00000012000c00f056030090c3110800000000100010002657030070 *08120804000000110010004b570300a06107080000000010000c0076570300350510081b000000 *12000c008157030024cb0d080800000011000c009a570300589b0b080800000011000c00b95703 *006ce90b080800000011000c00e357030070e40e080c00000011000c0011580300c81b0b080000 *000010000c003f5803006ceb1108040000001100100065580300c4e4110804000000110010007b *580300c8d9110804000000110010009958030014c911080000000010001000c75803008cbf1108 *00000000100010000559030004b305080000000010000c002b590300cc6c0e080600000012000c *004f59030000330e081000000011000c007359030098c70c080c00000012000c008a5903006cdc *0b080600000012000c00a65903008c050d081700000012000c00c4590300bce711080400000011 *001000f059030040e311080400000011001000065a030044d811080400000011001000205a0300 *c03310080800000012000c00305a03008c9a0e085b00000012000c004b5a030010c80b082d0000 *0012000c00695a0300e0cc12088000000011001700725a0300c8fd0e080800000011000c00895a *030084cf0c080c00000011000c009e5a030048f60f088e00000012000c00ad5a0300f84110082f *00000012000c00c05a0300acff11080400000011001000d65a0300789a0b080700000012000c00 *f65a030030280e081800000011000c001f5b030094fb11080400000011001000395b030070c60b *080700000012000c005a5b0300ac1e06080000000010000c008c5b0300fccb1108000000001000 *1000c65b0300245108080000000010000c00fa5b0300ccf90b080c00000011000c00115c0300dc *cb0c080c00000011000c002d5c03001cbb0a080000000010000c00625c0300f4fe110804000000 *11001000785c03001cf611080400000011001000985c030014e411080400000011001000b35c03 *0068000b080000000010000c00e35c030098740a080000000010000c00135d030000b909080000 *000010000c00425d0300c09a04080000000010000c00515d030000000000530000001200000066 *5d0300ccbe0b083700000012000c007c5d03001dbc0f086000000012000c00855d030098e21108 *0400000011001000a85d030000e311080400000011001000c45d0300b8c5110800000000100010 *00ec5d030094ed09080000000010000c00155e0300f4fb0e085b00000012000c002d5e0300a0f5 *11080400000011001000515e0300080412080400000011001000675e0300583b0f080c00000011 *000c00815e03002cc50c080300000012000c00a25e030050c911080000000010001000dc5e0300 *f4370f083000000012000c00f75e03001c4307080000000010000c001e5f0300280810085f0000 *0012000c002b5f0300b4b6110800000000100010005f5f0300703310084700000012000c006c5f *0300b80512080400000011001000825f03005cab0e080c00000011000c00965f03007808120804 *00000011001000bc5f0300f4a90b080600000012000c00dc5f0300e0f10c080300000012000c00 *fa5f0300ccd011080400000011001000176003005c9f05080000000010000c004e6003004c6910 *081e00000012000c0064600300c8f2110804000000110010008b60030048fe1108040000001100 *1000a0600300d89d05080000000010000c00c7600300b4890f081000000011000c00e96003002c *2f0f085b00000012000c0005610300b0150e080c00000011000c0019610300c88f0b080c000000 *11000c003e610300e89905080000000010000c0071610300300312080400000011001000876103 *00ccfc110804000000110010009c61030054e90b080800000011000c00c061030094cc05080000 *000010000c00f46103006c2f0e080c00000011000c001d620300916207080000000010000c0049 *6203002af00f08c005000012000c005362030014990e080800000011000c006a620300fcef1108 *04000000110010008e620300d4120e082900000012000c00a4620300e8960f080800000011000c *00c4620300f0f311080400000011001000e7620300a8e511080400000011001000fd6203001cd3 *110804000000110010001663030000000000ec0000001200000027630300e49b0f081000000011 *000c004963030030d8110804000000110010006163030004bf0b080700000012000c007d630300 *5ceb11080400000011001000a3630300f4820d082000000012000c00bc63030038f01108040000 *0011001000d66303005c5206080000000010000c00ff63030054fd0d080c00000012000c002264 *03008c5f0d080800000011000c004f64030014c50c080800000011000c006b640300e4d0110804 *0000001100100084640300c86110080800000011000c009764030028850f081000000011000c00 *b964030090ea0e085b00000012000c00db64030040f711080400000011001000f5640300582d0c *080800000011000c0013650300f0730f085b00000012000c00346503006c650e08540000001200 *0c005b650300e8420e081800000011000c009065030048dc0b080300000012000c00ab6503003c *c611080000000010001000de65030058530f080c00000011000c00f3650300a4c5110800000000 *100010001f6603007c2010080c00000011000c003166030048a70e080800000011000c00466603 *00aebb0f080800000012000c005466030050f9110804000000110010006b66030098f70d080800 *000011000c0094660300604e0e085300000012000c00ba66030090860b080000000010000c00e3 *660300ccc10c080c00000011000c00fd660300a0ed09080000000010000c002367030074fb1108 *0400000011001000416703003c6110080800000011000c005467030090800c081000000011000c *0073670300a8160b080000000010000c00b1670300c05d10080800000011000c00ce670300d4a9 *0b080800000011000c00ec67030064c409080000000010000c002c680300985f10080800000011 *000c003f68030014b70e080c00000011000c00526803006c610c083600000012000c007f680300 *cc4210084b00000012000c0099680300145c0a080000000010000c00d7680300d0250a08000000 *0010000c0000690300d8910d083b00000012000c001969030010c409080000000010000c004e69 *0300f8060c080800000011000c006769030034b20b080c00000011000c00826903002cf50e080c *00000011000c00a0690300f4a10f085100000012000c00c36903005c6c0c089400000012000c00 *dd6903003c9f05080000000010000c00106a030014d411080400000011001000306a0300546d10 *080c00000011000c00426a0300380e10080c00000011000c00506a030040e81108040000001100 *1000786a0300945106080000000010000c00a26a030010070c08a900000012000c00b76a030014 *b305080000000010000c00df6a030008e8110804000000110010000b6b0300bcd3110804000000 *11001000266b030050c10b080700000012000c00436b030024e70f089a00000012000c00546b03 *00e2ba0f082000000012000c00616b03005c8b0e085400000012000c00956b0300e0d511080400 *000011001000be6b030048b90b080c00000011000c00d46b030078e00e086600000012000c0000 *6c0300cce1110804000000110010001f6c03000c9b0f080800000011000c00326c030054e90b08 *0300000012000c00576c030064c409080000000010000c00986c03008807120804000000110010 *00bb6c0300d8dc11080400000011001000da6c0300d4c3110800000000100010000d6d0300c8e3 *110804000000110010002f6d03005cc811080000000010001000636d0300d0e811080400000011 *001000926d0300f06a10080800000011000c00a86d0300d8130e080300000012000c00c46d0300 *40e911080400000011001000fc6d0300a8dd11080400000011001000286e0300c0e81108040000 *0011001000506e030010e111080400000011001000686e03004cc409080000000010000c009e6e *03008c4107080000000010000c00c26e0300f4780c080c00000011000c00e06e030038ff110804 *00000011001000056f0300b8fa110804000000110010002c6f030018f211080400000011001000 *486f030038b809080000000010000c00766f0300a46007080000000010000c009f6f0300304b07 *080000000010000c00cb6f0300081005080000000010000c00f56f0300b45e10080c0000001100 *0c000870030030f105080000000010000c0036700300b45e0f080800000011000c00497003002c *720e085b00000012000c0064700300f4cf110800000000100010009770030018cc050800000000 *10000c00c770030034a30b082000000012000c00e2700300a4000f084600000012000c00f77003 *0074bb0e080c00000011000c000b710300485a10081200000012000c001971030050640c080c00 *000011000c003f71030040790e081000000011000c006471030048c50c080c00000011000c007b *71030090e911080400000011001000b371030080380f081000000011000c00cd7103001cec1108 *0400000011001000f371030050ff0b080c00000011000c000b72030014300c087300000012000c *0020720300c4e90f089b00000012000c0031720300ec8e0f080800000011000c0044720300b881 *0f085100000012000c0067720300f0e01108040000001100100092720300dc880b080000000010 *000c00be720300080912080400000011001000e372030058cc1108000000001000100015730300 *74ea05080000000010000c0041730300f0860e081000000011000c0067730300609a0f08510000 *0012000c008a73030048200f085b00000012000c00a773030078ed11080400000011001000c173 *030028610f085400000012000c00dc730300e05e0c080800000011000c000c74030020770a0800 *00000010000c003b740300a4640a080000000010000c0079740300106b0a080000000010000c00 *aa740300480c1008e101000012000c00b774030090ec11080400000011001000dc74030038610d *081000000011000c00fa7403005c5f0d080800000011000c0028750300fce41108040000001100 *10004775030078b409080000000010000c007875030048d1110804000000110010008d750300a4 *190f080300000012000c00af750300ecf011080400000011001000cd750300f8c70c0810000000 *11000c00e1750300b8c3110800000000100010001176030054e911080400000011001000477603 *00086007080000000010000c00707603007ca81108000000001000100093760300c05b0f080c00 *000011000c00a7760300749f0c082900000012000c00c676030091c61008bf00000012000c00d6 *760300608a0f080800000011000c00e9760300f8e3110804000000110010000b77030054330e08 *0c00000011000c0037770300042005080000000010000c00607703000c390f083000000012000c *007877030000080d080c00000011000c008b77030008c80b080700000012000c00a87703002c17 *0b080000000010000c00e67703002c410a080000000010000c000f78030088250d080c00000011 *000c003f780300d89f06080000000010000c00677803001005120804000000110010008d780300 *b4ec0d081000000011000c00ac780300d8ec11080400000011001000cb7803002c410a08000000 *0010000c00f378030034c811080000000010001000297903004cae110800000000100010005979 *0300e4160b080000000010000c008d79030084ee0c080c00000011000c00a67903001cca0b080c *00000011000c00bb79030044e20b080c00000011000c00d37903007caa11080000000010001000 *0a7a030084230f085b00000012000c00397a03003ce411080400000011001000507a0300a8ed0b *080800000011000c006b7a0300c1bb0f081400000012000c00787a030014e00d08180000001100 *0c008b7a0300581c0e081000000011000c00b47a0300f0da11080400000011001000cc7a030054 *d511080400000011001000f17a0300d08d0f080800000011000c00117b030058e9110804000000 *11001000467b0300641c08080000000010000c00757b030068d3110804000000110010008c7b03 *00d46810081e00000012000c00a27b0300e8ed0c084300000012000c00c47b0300c4690c081000 *000011000c00e97b0300b0fa0d080c00000012000c00027c030020810a080000000010000c0033 *7c0300a0ac0e080c00000011000c00487c03005c760e081800000011000c006d7c03005c580e08 *9100000012000c00907c030008290e085400000012000c00b77c0300b8ff0c080c00000011000c *00d87c0300b4f90c082000000012000c00f57c030098d611080400000011001000257d030014f3 *11080400000011001000517d03008cef0c084300000012000c00737d0300d4890d080c00000011 *000c00997d030098c50c080c00000012000c00b37d0300d0620c080c00000011000c00e17d0300 *48af0b082300000012000c00fe7d030012c610087f00000012000c000e7e030074e50e080c0000 *0011000c00407e030010e511080400000011001000587e030030f105080000000010000c00877e *0300740e0a080000000010000c00af7e030058f911080400000011001000ca7e030048ef110804 *00000011001000e27e0300280d0c080800000012000c00f77e0300d0ff11080400000011001000 *0d7f030014d911080400000011001000277f0300a4e211080400000011001000487f03008cd711 *080400000011001000637f03005c5106080000000010000c00937f03009caa0f08080000001100 *0c00b37f0300b4ee09080000000010000c00db7f03006c8f0d080300000012000c00f67f03008c *c30b089500000012000c00138003000e3310080900000012000c002980030060f50e085b000000 *12000c003f800300d8e90b080300000012000c005a80030034ca0b080800000012000c006d8003 *00e04b0c080c00000011000c0097800300acb80f082000000012000c00a1800300f80312080400 *000011001000c68003009ce90b080800000011000c00e78003001c5210088e00000012000c00f3 *800300e4cd0f082a00000012000c0004810300605b0f085400000012000c002181030084cd0e08 *0c00000011000c003b810300d48d0c080c00000012000c00568103001cd2110804000000110010 *006b81030024510f080c00000011000c008881030098b40c088f00000012000c00a38103003c52 *06080000000010000c00d081030090200d080c00000012000c00fa81030040480c081000000011 *000c0013820300e88a08080000000010000c005082030004cc0d085b00000012000c0064820300 *3c360c082000000012000c007d820300c4e61108040000001100100098820300b0da1108040000 *0011001000b78203007b7310089100000012000c00c682030087c00f088a00000012000c00d282 *0300680712080400000011001000e8820300d0fd11080400000011001000058303002c210f0808 *00000011000c00288303005cab0e085400000012000c003d8303000ca90e080800000011000c00 *63830300c0950d085400000012000c007f830300806a0c083f00000012000c00a883030094c70e *081000000011000c00c683030090a10b080c00000012000c00e183030035190508000000001000 *0c0002840300e8ad1108000000001000100031840300b4e3110804000000110010004f840300fc *490f085900000012000c00648403007c1f0e085b00000012000c008784030064770c0808000000 *11000c00aa840300a0440a080000000010000c00d884030098e411080400000011001000ef8403 *0080eb0b080c00000012000c000685030020bc0b080300000012000c0023850300b46610080800 *000011000c0037850300c007120804000000110010004d850300e4fc1108040000001100100063 *850300541e0a080000000010000c008a8503001cc611080000000010001000b585030081bb0f08 *0800000012000c00c2850300aceb11080400000011001000e8850300e0da0b080c00000011000c *00fc85030030e51108040000001100100014860300b8de110804000000110010003c86030064b3 *05080000000010000c006c860300eaf50f081300000012000c007b860300b0610f080800000011 *000c009686030020220f080500000012000c00bf860300281f0c083700000012000c00d2860300 *a8be09080000000010000c0008870300ccdc0c080800000011000c001e87030050180508000000 *0010000c004a87030054b909080000000010000c007a870300848b08080000000010000c00b887 *03006c4410085400000012000c00cf870300ac5d10080800000011000c00e58703006899050800 *00000010000c000f88030060120d080c00000011000c004288030040dd0b080300000012000c00 *5d880300dc9b05080000000010000c008a8803000000000008000000120000009c88030098f011 *080400000011001000bb88030038500f082900000012000c00d388030000de1108040000001100 *1000f38803006c141208000000001100f1fffc880300009f08080000000010000c003889030064 *d4110804000000110010005689030034b305080000000010000c007e890300e86a0c0808000000 *11000c00ac890300680612080400000011001000cf890300145e07080000000010000c00f58903 *00b06010084900000012000c00098a030074070d080c00000011000c00208a030020b709080000 *000010000c00528a0300e43110081000000012000c00778a03000c2d0f080c00000012000c0099 *8a0300d4a90b080600000012000c00b88a0300146007080000000010000c00e28a0300d8670c08 *0c00000011000c00088b030008a30f080800000011000c00288b0300f84d0c080700000012000c *00478b0300809a0b086900000012000c00688b0300f0b20e085b00000012000c00858b03006171 *10089800000012000c00998b0300a02c0f080c00000011000c00b98b0300b4400a080000000010 *000c00de8b03002cd911080400000011001000f88b03001cc409080000000010000c00308c0300 *d4220d080c00000011000c00578c0300a0850b080000000010000c00808c0300ccb50c08100000 *0011000c009a8c030078f411080400000011001000bb8c030074320c084b00000012000c00d28c *03006c9b0e083700000012000c00ee8c0300f0220e080c00000011000c00038d03008cc9090800 *00000010000c002c8d030050b409080000000010000c005d8d0300605207080000000010000c00 *7e8d03002c1706080000000010000c00ae8d0300f0330a080000000010000c00d68d0300d07a0f *081000000011000c00f28d0300b0730e080800000011000c000e8e030038930c085b0000001200 *0c00228e030004d6110804000000110010004c8e0300b4c3110800000000100010007e8e030049 *bb0a080000000010000c00a18e030008b40b082f00000012000c00b78e0300d4440a0800000000 *10000c00e48e0300f0330a080000000010000c000d8f030050940f081000000011000c00308f03 *00d4df11080400000011001000548f0300f0400a080000000010000c007a8f030000f011080400 *0000110010009c8f0300acdb11080400000011001000b38f03004c8b0b080000000010000c00e4 *8f03004c4a07080000000010000c000f90030088f2110804000000110010003c900300c4840c08 *1300000012000c00649003004c2d0c080300000012000c00809003002cf70d080800000011000c *00a2900300000000008e02000012000000b2900300546d10085300000012000c00c59003007076 *0a080000000010000c00f2900300508508080000000010000c002d910300e4b511080000000010 *00100065910300fc0d05080000000010000c008691030018f111080400000011001000b0910300 *d4260e083000000012000c00e191030064da11080400000011001000f891030064e51108040000 *00110010001992030054900c080c00000011000c0038920300e48b0b080000000010000c006792 *030039fa0f082200000012000c0072920300c43f0a080000000010000c009c92030044c00c080c *00000012000c00b4920300dc7a08080000000010000c00ef92030054fc05080000000010000c00 *25930300d0a21108000000001000100048930300e4ee110804000000110010006c930300d0f511 *080400000011001000909303007c9e0f085b00000012000c00b193030091721008980000001200 *0c00c59303000cde0b083700000012000c00da930300546c06080000000010000c000694030054 *200e080c00000011000c0028940300b0e9110804000000110010004b940300ac490c0839000000 *12000c0067940300d46810080800000011000c007c9403004c810d085b00000012000c00989403 *00b8090d080c00000011000c00bc94030094360c080700000012000c00d894030048810f085b00 *000012000c00f994030010cc0e085b00000012000c001b95030020f80d080800000011000c0042 *950300a47b0c085900000012000c005995030060820e085600000012000c007c9503009cab0f08 *1103000012000c0085950300741e0d080a00000012000c009d950300acd7110804000000110010 *00c7950300b4ed0b084100000012000c00dc950300481405080000000010000c00fe95030018d4 *110804000000110010001796030018d20e080c00000011000c003896030054ff11080400000011 *00100055960300e0aa0c084b00000012000c00709603008cc40b080700000012000c008b960300 *141610080c00000011000c009a9603002c531008be00000012000c00aa9603007cae1108000000 *0010001000d796030080f70d080300000012000c00059703007c9f0d085b00000012000c002497 *0300f4e0110804000000110010004d970300c81305080000000010000c006d97030014bc0b0803 *00000012000c0087970300d4870b080000000010000c00b197030090200d080c00000011000c00 *da9703003c980c081800000011000c00ff970300a0d0110804000000110010001a980300f05f07 *080000000010000c0042980300645b10080800000011000c00559803009cdc0b08080000001100 *0c006e98030008d80e080c00000011000c0097980300282d0c080c00000011000c00af980300ac *d511080400000011001000d3980300e43b0f083000000012000c00eb980300cc3c0f0810000000 *11000c00ff98030094720e080c00000011000c001e9903000cf80b082300000012000c00379903 *0054ee110804000000110010004e9903003cd3110804000000110010006a990300488d0b080700 *000012000c008d99030060450f085b00000012000c00a1990300086b0c080600000012000c00d5 *990300e0470c081000000011000c00ee990300180112080400000011001000119a0300e8f41108 *0400000011001000349a0300a4830f081000000011000c00569a03004eb10f081f00000012000c *00629a0300c7b20f081100000012000c00719a030014240c080c00000011000c00899a0300a89c *0b080c00000011000c00b89a0300644107080000000010000c00e19a030058fa11080400000011 *001000009b03006cee09080000000010000c00289b0300f8210f080500000012000c00519b0300 *a4e9110804000000110010006e9b0300f01705080000000010000c00909b030084a10f08080000 *0011000c00b09b030054c40e082300000012000c00c59b030004a30d080c00000011000c00e59b *0300d8c80b082300000012000c00fa9b03009cc611080000000010001000259c03003cac110800 *00000010001000539c03008ca40f085b00000012000c00749c030094210d082300000012000c00 *9e9c030048dc0b080800000011000c00b89c03000c750f080c00000011000c00cd9c030020d311 *080400000011001000e69c030088df11080400000011001000199d030008e00c083d0000001200 *0c002f9d030094c40b084b00000012000c004b9d0300c8b005080000000010000c00749d0300d0 *9e0c083100000012000c008c9d03004cde0b080800000011000c00a79d0300dcb8120804000000 *11001700b39d0300cdb30f081d00000012000c00cb9d030070500f083800000012000c00e79d03 *00f4a90b080800000011000c00069e0300e8210e080c00000012000c001f9e0300e4e911080400 *000011001000459e0300583c0f083000000012000c005b9e03000c1c0e081800000011000c007c *9e0300c45f07080000000010000c00a09e030040d111080400000011001000b99e030068021208 *0400000011001000cf9e03001bf80f08a200000012000c00de9e03009c380e080c00000011000c *000c9f0300a4aa11080000000010001000499f0300bcdc11080400000011001000659f0300f0ee *110804000000110010007b9f03006c2f0e081300000012000c00a59f030030d411080400000011 *001000bc9f03007c9b04080000000010000c00d99f0300fc880d080c00000011000c000aa00300 *50f71108040000001100100024a003002cdc0b080800000011000c003fa0030030fc0d08100000 *0011000c0059a00300d4440a080000000010000c0085a00300501805080000000010000c00b0a0 *0300e43710080900000012000c00c3a00300e8c50c080c00000011000c00dca00300d460070800 *00000010000c0006a103004aba0f082800000012000c0012a10300b4400e082300000012000c00 *4ba10300e8d01108040000001100100068a1030070900f080800000011000c007ba10300b8ba0a *080000000010000c00b2a1030008e611080400000011001000d6a1030031701008980000001200 *0c00eaa103002c860d081800000011000c000ba20300b03d0d080500000012000c0034a20300f8 *c70c080c00000012000c0049a2030010f80d080600000012000c006ea20300d0ee110804000000 *110010008ba2030070960c080c00000011000c00aea20300b4650a080000000010000c00e2a203 *0074f20e081800000011000c0002a3030008290e080800000011000c0028a3030038f70d080800 *000011000c0057a30300204c0a080000000010000c0084a30300b05e0c080600000012000c00b4 *a3030014b305080000000010000c00dba30300d41005080000000010000c00fda30300205f0c08 *0800000011000c002ea4030058f70b080c00000011000c0045a403004c7c0c082300000012000c *005ca40300e42605080000000010000c0089a4030048e811080400000011001000b1a40300507a *0c088700000012000c00cca40300c8e111080400000011001000e4a403000d8a0a080000000010 *000c000fa5030060e61108040000001100100034a50300c8d6110804000000110010005da50300 *84e20f080e00000012000c006da50300d8fe1108040000001100100084a5030090ff0e080c0000 *0011000c0095a503002cb50f080d01000012000c009fa503001c6d0e080800000011000c00bca5 *0300c4c311080000000010001000eea50300204507080000000010000c001ca6030000cd0d0826 *00000012000c003ca60300ec040f085b00000012000c0059a6030094b10d082500000012000c00 *75a6030000b909080000000010000c00a3a6030078850b080000000010000c00cca6030098f411 *080400000011001000eea6030000970d080c00000011000c0004a70300586b0c08060000001200 *0c0036a70300c4840c080c00000011000c005da70300b4e90b080800000011000c0084a70300f4 *880b080000000010000c00aea7030014ab0e080500000012000c00c4a70300e4a1110800000000 *10001000f1a70300b0fb110804000000110010000ea80300205407080000000010000c002da803 *00846410080800000011000c0041a80300603310080800000011000c0050a8030020d711080400 *00001100100079a803007c1d1008f302000012000c0089a80300583e0e081000000011000c00bb *a803002c390a080000000010000c00e3a80300a4b812080c00000011001700f1a8030060f41108 *040000001100100018a90300dc070c080c00000012000c002fa903008ce80b080c00000011000c *0050a903005c8c0b080000000010000c007ba90300b6b20f081100000012000c0089a90300d0e0 *11080400000011001000ada90300a0e411080400000011001000c4a9030034ca0b080c00000011 *000c00d6a90300f0b812080400000011001700e0a90300d4dc11080400000011001000f8a90300 *70df0b080700000012000c0011aa0300185e10082f00000012000c0025aa03002c060d08170000 *0012000c0043aa030050cc1108000000001000100075aa030068a711080000000010001000a0aa *030030dd0b080800000011000c00bbaa0300f81e0b080000000010000c00e8aa030001bc0f081c *00000012000c00f4aa030030e3110804000000110010000aab0300a89a04080000000010000c00 *1bab030014f61108040000001100100033ab030078210c081000000011000c004fab030058db0b *080c00000011000c0065ab0300d5bb0f081400000012000c0073ab03002c210e085b0000001200 *0c0096ab0300e8830e080c00000011000c00b9ab0300016f10089800000012000c00cdab03009c *e01108040000001100100001ac0300d0620c081100000012000c0030ac0300000000007c000000 *1200000041ac03000c5a10080c00000011000c0055ac0300ece61108040000001100100075ac03 *0000880c082300000012000c009cac030024c711080000000010001000c7ac030058b609080000 *000010000c00f6ac0300bcf10c080300000012000c0016ad030050f0110804000000110010003d *ad0300e4c10b080c00000011000c0061ad0300f4d7110804000000110010008aad03005c890c08 *5f00000012000c009ead0300b06010080800000011000c00b1ad0300f8d1110804000000110010 *00c6ad0300d1e60f080100000012000c00d9ad03003ab40f080b00000012000c00ebad0300e059 *10080c00000011000c0000ae0300d0e00f080100000012000c001aae0300e85307080000000010 *000c003bae030028fc1108040000001100100059ae03007cb2110800000000100010007fae0300 *88ff11080400000011001000a3ae0300646207080000000010000c00cbae030060f51108040000 *0011001000eeae03007c660a080000000010000c0026af0300d8b11108000000001000100055af *0300e0930f085b00000012000c0076af030038c50c080300000012000c009aaf030038d7110804 *00000011001000c7af03007cf311080400000011001000f8af0300246010084900000012000c00 *0cb0030054540f082000000012000c0020b0030028c409080000000010000c0055b00300f8cf11 *0800000000100010008ab00300903810081400000012000c0098b0030060180508000000001000 *0c00bdb00300fce611080400000011001000ddb00300bc110d080800000011000c0006b10300d0 *cf110800000000100010002fb10300542d0b080000000010000c005bb103007c0a0b0800000000 *10000c0087b10300b8fb05080000000010000c00b7b10300941a0f085b00000012000c00d4b103 *0054060c080c00000011000c00f1b10300f47e0f080800000011000c0003b203005c5f0d080600 *000012000c0032b2030004700f081000000011000c0047b20300bcb61108000000001000100078 *b2030088310c080700000012000c008ab203005c170b080000000010000c00b6b203001c610708 *0000000010000c00dfb20300f86c10084d00000012000c00f2b20300ccb8120804000000110017 *0003b3030010250e080800000011000c0020b30300085307080000000010000c0043b3030034e3 *0e085900000012000c0072b3030028c60e085b00000012000c008fb30300308a0d080500000012 *000c00b0b30300a4170b080000000010000c00e2b30300f0620c084f00000012000c0011b40300 *2c0f0c080c00000011000c0030b40300f8aa0f088800000012000c0041b40300c4fc0b080c0000 *0012000c005bb4030094990b089500000012000c007eb4030020d21108040000001100100098b4 *0300f4fe0f082f00000012000c00a7b40300a4190f080800000011000c00c8b40300c0e7110804 *00000011001000f4b403002c9b0d080800000011000c0010b503006ced0b080800000011000c00 *28b50300041405080000000010000c0049b503008c3010087000000011000c0059b50300b8810f *081000000011000c007bb50300cce3110804000000110010009db50300504b0c08540000001200 *0c00c6b5030068c311080000000010001000f8b50300bcb81208040000001100170005b6030000 *0000003f0000001200000017b60300e806120804000000110010002db6030054dd110804000000 *1100100046b6030054cf1108000000001000100071b6030004c50c080800000011000c0095b603 *0060680f083000000012000c00b7b60300e06007080000000010000c00e2b6030090e511080400 *000011001000f7b60300e81f0e085b00000012000c001ab703003dc50f080f00000012000c0023 *b70300f42e0c080c00000011000c003db7030094fe0d085b00000012000c005ab7030074dd0b08 *0300000012000c0078b70300a4e11108040000001100100096b70300604510082400000012000c *00a7b7030010f011080400000011001000beb703007cfb0e080800000011000c00d5b7030054fd *0d081000000011000c00f7b70300f4a10f081000000011000c0019b8030030e211080400000011 *0010003fb803000ce4110804000000110010005bb80300ac750d080c00000011000c007cb80300 *08db110804000000110010009ab80300346207080000000010000c00bfb80300e8d50d08290000 *0012000c00e1b8030008860b080000000010000c000eb9030028ff0e085b00000012000c0026b9 *030064db110804000000110010003db90300988e0b083200000012000c0069b9030024ec090800 *00000010000c009eb90300d4d411080400000011001000b9b9030044d50e080c00000011000c00 *e4b9030044d10e085b00000012000c00fab90300ec6c0e080800000011000c001cba0300d0ed11 *08040000001100100035ba030004f8110804000000110010004cba030060b90c08180000001100 *0c0067ba030008a204080000000010000c0091ba0300749b0f085b00000012000c00b2ba030000 *0012080400000011001000d5ba03008c3d0d082300000012000c0005bb030050d3110804000000 *110010001cbb0300846410084900000012000c0031bb03004800120804000000110010004bbb03 *003cb90a080000000010000c0080bb0300c86b10080c00000011000c0092bb0300bcf70f085f00 *000012000c00a4bb0300e4840c080c00000011000c00cebb0300c4440a080000000010000c00f8 *bb03004002120804000000110010001dbc030060f70e085b00000012000c0035bc03002cda0b08 *0c00000012000c004abc0300c8a21108000000001000100074bc03000000000071000000120000 *0085bc0300ec240d081300000012000c00afbc030018f511080400000011001000d2bc0300ccc4 *0c080600000012000c00fcbc0300e0da1108040000001100100014bd0300345308080000000010 *000c0044bd03000ca81108000000001000100071bd0300281a0f085b00000012000c008ebd0300 *40140f080c00000011000c00a2bd0300000f0a080000000010000c00d4bd0300ecf30e08080000 *0011000c00f2bd030014f10e081000000011000c000bbe030004e0110804000000110010002cbe *030024e90b080600000012000c0051be0300d8e90b080800000011000c006bbe030068fc110804 *000000110010008cbe030030de11080400000011001000a5be030094c805080000000010000c00 *d3be030084f211080400000011001000f7be03008db305080000000010000c001ebf0300fcb10f *082a00000012000c002cbf0300b8f4110804000000110010004ebf030084250e08080000001100 *0c006bbf0300b42d0c080700000012000c0083bf030064770c080600000012000c00a7bf030090 *d811080400000011001000c9bf0300d0c311080000000010001000febf030050810c080c000000 *11000c001bc0030080dd0b080300000012000c0035c00300a0ec10080400000011000e003cc003 *004fee0f08db01000012000c0047c0030074f70d080300000012000c006ec0030020d811080400 *0000110010008bc0030078d211080400000011001000a6c00300a4bf11080000000010001000e7 *c00300ecb00d085700000012000c0010c103009c8c0b08a900000012000c0029c1030030180508 *0000000010000c004ec10300805e10080c00000011000c005fc1030058d7110804000000110010 *0080c103009c640c084000000012000c00a7c103005c6007080000000010000c00d1c10300109b *04080000000010000c00e1c103003cb60f082601000012000c00ebc103007cb111080000000010 *00100015c20300000000005c0000001200000026c20300c4b60e080c00000012000c0041c20300 *4ca7110800000000100010006fc203005cf3110804000000110010009ec203008cb00b080c0000 *0011000c00b2c2030058c409080000000010000c00f0c20300d40f0c080c00000011000c000dc3 *0300106107080000000010000c0033c30300ec9e0f085100000012000c0056c30300fc190b0800 *00000010000c0081c30300a5bb0f080900000012000c008fc30300a8a50f080800000011000c00 *a2c30300ccc311080000000010001000d3c3030061ed0f085e00000012000c00e0c30300e8e411 *080400000011001000fac303005c2d0c080700000012000c0010c40300ec230f085b0000001200 *0c0032c4030080e3110804000000110010005cc403005c320a080000000010000c0083c4030040 *f50d082000000012000c009dc403005cfe11080400000011001000b5c40300fc8c0c080c000000 *12000c00cec40300381e0e080c00000011000c00efc40300a8930c081000000011000c0006c503 *0014b1110800000000100010002ec50300a8d71108040000001100100053c50300b44107080000 *000010000c0077c5030074aa11080000000010001000abc5030004a80f081000000011000c00cd *c50300f48e0c080c00000011000c00e2c5030034840c080c00000011000c000ec603002cf50b08 *2500000012000c0023c60300dc6107080000000010000c004cc60300b4010f080c00000011000c *0060c60300e8ee0d080c00000011000c007bc6030090640f080c00000011000c0091c60300e4e3 *11080400000011001000bcc6030000000000d400000012000000cec603002cec11080400000011 *001000f4c60300c8230d080c00000011000c001dc70300e8071208040000001100100042c70300 *48910f085100000012000c0065c703004c330e080800000011000c0096c7030028f31108040000 *0011001000c2c70300fcc309080000000010000c0002c8030078ff110804000000110010001bc8 *0300695810080600000012000c0034c80300f0440c082d00000012000c004cc80300d8da0e0820 *00000012000c0078c8030080760f084a00000012000c008ec8030090640f082000000012000c00 *a5c80300ec1908080000000010000c00d5c80300b8df1108040000001100100001c903004cd111 *08040000001100100019c9030038e00d083000000012000c0045c90300a0c31108000000001000 *100078c903004c4f0f082f00000012000c0096c90300743b0f081000000011000c00aec903009c *1c0f085b00000012000c00cbc9030000000000bc00000012000000e3c90300acb00e080c000000 *12000c00fbc9030070e81108040000001100100023ca0300dcbc0f088000000012000c002eca03 *0058820d080c00000011000c004eca030032b40f080800000012000c005fca0300c0fb0d080c00 *000012000c0074ca0300c8600d085b00000012000c009aca0300fcd40c080c00000011000c00b0 *ca0300bcc90b080800000012000c00c3ca0300e0b509080000000010000c00f7ca0300e49b0f08 *5100000012000c001acb03005cfb1108040000001100100036cb030034450a080000000010000c *0061cb0300fce809080000000010000c0094cb03004cd411080400000011001000b2cb03000c6d *0e080800000011000c00d2cb030034dd0b080400000011000c00edcb030018cc11080000000010 *0010001ecc030014fd1108040000001100100041cc030038c50c080800000011000c0064cc0300 *60dd1108040000001100100083cc030000000000230000001200000096cc030006b810088e0200 *0012000c009ecc03004cc10c080c00000011000c00b6cc0300000000005a00000012000000c6cc *030005be0f088000000012000c00d5cc030080b20e080c00000011000c00f1cc03000047070800 *00000010000c0013cd0300dc1705080000000010000c003ecd0300908c0c080c00000011000c00 *56cd0300e45c10080800000011000c0067cd03002007120804000000110010007dcd03001c140a *080000000010000c00a2cd03009cbb0f080900000012000c00afcd03004fb00f081f0000001200 *0c00bccd030020db11080400000011001000dacd030050dd0b080800000011000c00f6cd0300d0 *03120804000000110010000cce030024be0b082300000012000c0022ce0300b013050800000000 *10000c004bce030000000000f6000000120000005dce0300e4a90b080600000012000c007ace03 *00c46d0e085000000012000c00acce0300fcfa0d080c00000011000c00c1ce0300f8e811080400 *000011001000f2ce0300bca21108000000001000100016cf0300d8910d080c00000011000c002e *cf0300248e0b080700000012000c004dcf030038950d082f00000012000c0069cf0300285f0c08 *0700000012000c0095cf030068e111080400000011001000afcf0300f0e8110804000000110010 *00e0cf03006ccd1108000000001000100009d0030004b70d081800000011000c002dd00300a8ff *1108040000001100100044d00300b86107080000000010000c006cd00300c84f0f082900000012 *000c0080d0030028480e080c00000011000c00acd0030028110e086000000012000c00bfd00300 *d0b40b080c00000011000c00d9d003005ceb09080000000010000c0007d1030074d60e08540000 *0012000c002fd103005cf70d080300000012000c0058d10300002d0c080c00000012000c0072d1 *0300487e0f081000000011000c0094d1030098170b080000000010000c00d0d10300a5031008a6 *00000012000c00dbd10300d6f60f085f00000012000c00eed10300f0f60d080300000012000c00 *15d20300b0d91108040000001100100032d203002c5f07080000000010000c0055d20300d8b20f *084400000012000c0064d2030018c70b080700000012000c0086d20300b4580f08200000001200 *0c009cd2030000000000df00000012000000aed20300888f0d080c00000011000c00c3d20300b4 *440a080000000010000c00f2d2030010f41108040000001100100015d303002cf50b080c000000 *11000c0029d3030030170c087200000012000c0045d303007cd31108040000001100100060d303 *0080940b083200000012000c0087d303006c4a0c082300000012000c00a5d30300ba5e10080500 *000012000c00b2d3030068f411080400000011001000d6d303009c5110088000000012000c00ea *d3030068c409080000000010000c000ad40300708b0c080c00000012000c0020d40300a42d0c08 *0300000012000c0040d40300e8b60a080000000010000c006cd4030078d5110804000000110010 *0096d40300accc0b080c00000011000c00acd40300746007080000000010000c00d3d403008004 *0f085b00000012000c00f0d4030084990e085b00000012000c0008d503007ca10d080c00000011 *000c0029d50300d0e30c081000000011000c003dd50300f0160b080000000010000c0066d50300 *d8300c080300000012000c0080d50300bc3b10080800000012000c008fd503000cdc1108040000 *0011001000b3d5030084d011080400000011001000cfd503001ce811080400000011001000fbd5 *030034fa0d080c00000012000c001ad6030014760d081000000011000c0039d6030094bf110800 *0000001000100076d603005cdb0c081000000011000c0092d6030004d10b080c00000011000c00 *abd60300500912080400000011001000cad60300fcba0a080000000010000c00fed603005c260e *080800000011000c001bd703002ceb1108040000001100100041d70300e0470c08300000001200 *0c005bd7030068d91108040000001100100078d703000c8c0b080000000010000c00aad703002c *4207080000000010000c00d0d703003c8d0d080c00000011000c00fad70300f0dc0b0806000000 *12000c0012d8030094f70a080000000010000c0043d8030050e21108040000001100100066d803 *0004a70b080300000012000c008fd8030094cb0b080c00000011000c00a5d80300101f06080000 *000010000c00d9d8030080ec0b080c00000012000c00ecd80300a0b11108000000001000100018 *d9030084a40e085b00000012000c002ed9030048fb0c080f00000012000c0049d90300e48b0b08 *0000000010000c0079d903003c330e080800000011000c00a5d9030070b2110800000000100010 *00ccd903009cff11080400000011001000e4d903002ca71108000000001000100014da0300f49a *0b084b00000012000c0033da0300f8a60b080800000011000c0058da0300e43110080c00000011 *000c007cda030048020f085b00000012000c0097da030054160b080000000010000c00c8da0300 *1cb00c081000000011000c00e1da030014cc1108000000001000100010db03006cff0d080c0000 *0012000c002edb0300048e05080000000010000c005bdb0300c4f50d080c00000011000c0074db *0300d0630f082f00000012000c008bdb030010f511080400000011001000aedb030088310f080c *00000011000c00c8db03001c9f05080000000010000c00f7db030098d911080400000011001000 *13dc03008cff1108040000001100100037dc03006cd31108040000001100100051dc030050760a *080000000010000c0082dc0300e0b111080000000010001000a7dc030000000000360000001200 *0000b9dc03006cdc11080400000011001000d1dc030090d111080400000011001000eddc0300c0 *b812080400000011001700fadc0300dc4107080000000010000c0023dd030018220f0808000000 *12000c004ddd030008be09080000000010000c007fdd0300d06107080000000010000c00a9dd03 *002c2f0f080800000011000c00c4dd0300b8fc11080400000011001000e5dd0300dc050d080c00 *000011000c0005de030060b809080000000010000c0034de03004c1810080c00000011000c0044 *de030038041208040000001100100069de0300d4530f085900000012000c007fde03001ca70d08 *1000000011000c009cde030044c911080000000010001000ccde0300e0a2110800000000100010 *00f9de0300c09a04080000000010000c0009df0300e8f91108040000001100100029df0300acd8 *0c080c00000011000c0043df0300b82f0e085200000012000c006ddf030014df0c081000000011 *000c0081df0300a8d81108040000001100100099df030094a11108000000001000f1ffaadf0300 *f0f70d080600000012000c00cedf0300dce00b080600000012000c00f2df0300546c0608000000 *0010000c001de00300d8900f080800000011000c003de003003cf01108040000001100100055e0 *030010960c080c00000011000c006de0030024f61108040000001100100086e0030044ec090800 *00000010000c00bbe00300285f0f081800000011000c00e4e00300000000003a00000012000000 *f9e00300c0680f083000000012000c001de1030010e9110804000000110010004ee10300bc900d *080c00000011000c0063e10300d0df110804000000110010008de10300201d0b08000000001000 *0c00bce103007dd710087700000012000c00c8e10300f0ff11080400000011001000ebe10300e4 *f01108040000001100100002e2030060f31108040000001100100030e203005861070800000000 *10000c0058e20300e85307080000000010000c007ae203004805120804000000110010009de203 *0068ab0d084400000012000c00bee20300b80412080400000011001000e1e20300bcc90b080c00 *000011000c00f3e20300d01f06080000000010000c0029e3030080d5110804000000110010004e *e3030024510f082f00000012000c006ce303001ccd11080000000010001000a0e3030044331008 *0900000012000c00b6e3030090560f082000000012000c00cce303006ce1110804000000110010 *00e8e3030050b21108000000001000100010e40300cc1d0e085b00000012000c0032e40300b01b *0d080c00000011000c004fe4030004c61108000000001000100080e403000c6207080000000010 *000c00a7e4030028f111080400000011001000bfe403000c3b0e080c00000011000c00ede40300 *887c0c081000000011000c000ce50300083a10080c00000011000c001be50300e4f21108040000 *001100100049e5030008b40b080c00000011000c005ee50300746207080000000010000c008ae5 *030014cb0b080c00000011000c00a1e5030099c810081b00000012000c00b0e503006c4d100895 *00000012000c00c2e50300f4970d080c00000011000c00d9e50300f01e0d082300000012000c00 *f3e50300a8de110804000000110010001fe6030044890c080800000011000c0046e603005cdd0b *080800000011000c0065e60300d4c61108000000001000100092e6030034610708000000001000 *0c00b7e60300a0a104080000000010000c00e0e60300e06210084900000012000c00f4e60300e0 *e10b080c00000011000c000ce7030030330b080000000010000c003ae703004cd8110804000000 *1100100052e70300185005080000000010000c0080e70300f83b0a080000000010000c00aae703 *00088f0d080c00000011000c00bde70300bc8c0f085100000012000c00e0e7030090c60e08bc00 *000012000c00f7e70300186207080000000010000c0020e80300e4ab110800000000100010004b *e8030058d50c080c00000011000c0061e80300c8890c080c00000011000c007be8030058d11108 *040000001100100095e80300000000009c00000012000000a7e80300c4db110804000000110010 *00c7e803007f0210086700000012000c00d5e8030098ef11080400000011001000ede80300b861 *07080000000010000c0016e90300575810080600000012000c002fe90300e8d311080400000011 *0010004ee90300a01f0c085500000012000c0063e9030068bb1108000000001000100099e90300 *acb111080000000010001000bae903009ca911080000000010001000efe903007c060d080c0000 *0011000c0014ea030010dd0b080800000011000c002bea0300b7b40f087200000012000c003eea *0300b0e20b081000000011000c0056ea0300045206080000000010000c007eea030050f4110804 *00000011001000a2ea030008e411080400000011001000c2ea0300f8e411080400000011001000 *e1ea03009c270b080000000010000c0007eb0300382c0f080c00000011000c0029eb0300d0d611 *08040000001100100053eb0300cce6110804000000110010006aeb030050a40b082f0000001200 *0c0086eb0300381d0a080000000010000c00b0eb0300ec9f0d080c00000011000c00d4eb0300c8 *8a0f080800000011000c00f4eb0300046b0f081000000011000c0009ec030045b40f0872000000 *12000c001dec030068170b080000000010000c004aec030048061208040000001100100060ec03 *00641b0f080800000011000c007cec0300d0130f085b00000012000c0098ec0300a80812080400 *000011001000bbec0300a4a911080000000010001000e9ec03003c6507080000000010000c0017 *ed0300405307080000000010000c003bed03003c860f080800000011000c005bed0300a0f60c08 *0c00000012000c0079ed0300b0e41108040000001100100090ed03000c9f05080000000010000c *00c0ed0300c8e511080400000011001000d8ed030080510f080c00000012000c00ebed030014cf *0c080c00000011000c0000ee0300b8ef1108040000001100100018ee0300844510086000000012 *000c002bee0300945106080000000010000c0056ee0300e81310080c00000011000c0065ee0300 *8cc30e081000000011000c0079ee030038f311080400000011001000a0ee030058230e080c0000 *0012000c00b6ee0300583b0f080800000012000c00d1ee0300c8d211080400000011001000f5ee *030000000000940000001200000007ef0300b4250f080c00000011000c0029ef03008005120804 *000000110010003fef0300e02a0e081800000011000c0068ef030014f111080400000011001000 *87ef0300f4e311080400000011001000adef030008d011080400000011001000d7ef0300e8210e *081000000011000c00efef0300c0c50e080800000011000c0001f003003ceb1108040000001100 *100027f00300004e0c087d00000012000c0047f0030004de0b080700000012000c005bf0030020 *f5110804000000110010007ef00300d4390f084b00000012000c009cf003000cf6110804000000 *11001000b1f0030010cb0c080c00000011000c00c5f00300d4430c081800000011000c00e6f003 *000cdd110804000000110010000ef1030020170b080000000010000c004cf10300d8900f085b00 *000012000c006df10300f8c41108000000001000100099f103006c5910080c00000011000c00af *f1030060de11080400000011001000dbf10300e77510081300000012000c00e6f103007c510608 *0000000010000c000ff203005c7f0f080800000011000c0022f20300382c0f085b00000012000c *0045f203005cd00c082800000012000c0068f2030044fe110804000000110010007df203005ce4 *110804000000110010009cf2030038cd0b082000000012000c00b5f20300b4160b080000000010 *000c00eef2030040790e082e00000012000c0014f30300248e0c080c00000011000c0029f30300 *40d81108040000001100100044f30300a05e0c080800000011000c0070f30300c4f20b08100000 *0011000c0087f303001ca90e080300000012000c00acf3030004ff0d080c00000011000c00c8f3 *03003ae80f08e300000012000c00def3030004140e080800000011000c00f0f303001ab40f080b *00000012000c0002f40300546210080800000011000c0015f4030060b111080000000010001000 *39f4030090e41108040000001100100057f4030000f4110804000000110010007af4030034a90e *080800000011000c009ff40300ac5f0d080600000012000c00cef4030004dd0c085b0000001200 *0c00e3f40300b01b0d080c00000012000c0001f50300dc320c083800000012000c001df503004c *8c0b080000000010000c0050f503005d5810080600000012000c0069f50300c8b4090800000000 *10000c0099f503008cf70d080300000012000c00bef50300f4820d080c00000011000c00d6f503 *0080d811080400000011001000edf50300f4e60e080c00000011000c000ff60300dc330e081000 *000011000c003af6030040b509080000000010000c006df603004cf11108040000001100100084 *f60300b0150e086e00000012000c0099f6030060d511080400000011001000b4f6030040cc1108 *0000000010001000e0f6030048e91108040000001100100013f703008cef0c081000000011000c *0034f70300d8b809080000000010000c0068f703005c4807080000000010000c0092f70300f863 *10084900000012000c00a6f7030050c71008b900000012000c00b4f703003c5f0d080800000011 *000c00ddf7030014d211080400000011001000f2f7030088021208040000001100100017f80300 *c0030e081000000011000c002ef803004ce01108040000001100100050f8030000620708000000 *0010000c0079f8030060740f085100000012000c009cf80300804b07080000000010000c00bdf8 *0300784305080000000010000c00f1f80300d8130e080800000011000c000cf9030080f4090800 *00000010000c003af90300ec6b0a080000000010000c006df90300e43710080c00000011000c00 *81f90300e8001208040000001100100097f903003c1e0f080c00000011000c00b4f90300645a10 *080800000011000c00c1f9030004ff11080400000011001000edf90300a8f91108040000001100 *10000cfa030040bd0c080500000012000c0028fa0300dca50e080800000011000c003dfa0300e0 *000d080c00000011000c005dfa030054970c080800000011000c0074fa030090300c0803000000 *12000c008cfa030054070a080000000010000c00b4fa0300dc140e080c00000011000c00c9fa03 *007c9f0d080800000011000c00e7fa0300e4050c080300000012000c0004fb0300d4a00e085b00 *000012000c0018fb0300780b0e081000000011000c002dfb0300408e0f085100000012000c0050 *fb030024ac0e080c00000012000c0068fb030020670c080c00000011000c008efb030004d21108 *0400000011001000a5fb030098b709080000000010000c00d3fb0300282810080c00000011000c *00e7fb030044b305080000000010000c0017fc0300a8a21108000000001000100042fc03007c77 *0c080700000012000c0057fc030008de1108040000001100100077fc0300b45106080000000010 *000c009efc0300dc050d081700000012000c00bffc0300f0cb11080000000010001000ebfc0300 *a8b609080000000010000c001efd0300d8ce110800000000100010004cfd0300bc8c0f08100000 *0011000c006efd030068f3110804000000110010009cfd0300f0e311080400000011001000c0fd *030078340d081800000011000c00eafd030000000000ad00000012000000fefd03006860070800 *00000010000c002afe030068f5110804000000110010004dfe03005c210c080c00000011000c00 *67fe030060b30e080c00000011000c0083fe0300fcea11080400000011001000aafe03003cb90a *080000000010000c00e0fe0300785307080000000010000c0004ff030038bb0f08270000001200 *0c000eff03007ceb1108040000001100100034ff030048df110804000000110010005cff030024 *c60b080700000012000c007eff0300689d0b086900000012000c009cff030028f4110804000000 *11001000bfff03006cd711080400000011001000deff030034c409080000000010000c00160004 *00a4a11108000000001102100023000400707d0f085b00000012000c0044000400bccf11080000 *0000100010006f000400e40c05080000000010000c008f0004006cfe11080400000011001000a7 *000400dcd50e085400000012000c00d0000400fcec11080400000011001000f400040088730f08 *0800000011000c0014010400f0f10c080800000011000c002901040024910d080c00000012000c *003f0104007cd6110804000000110010006f01040018b509080000000010000c009f01040090c5 *11080000000010001000c8010400745a10080800000011000c00dc010400305510087300000012 *000c00ee010400f89c0f080800000011000c000f02040070e31108040000001100100025020400 *d8990d085300000012000c003c0204005cc6110800000000100010006502040004fd1108040000 *00110010008f02040024dc0b080800000011000c00aa02040061b30f080f00000012000c00b402 *040070d911080400000011001000c902040064ec11080400000011001000e60204008c3d0d0810 *00000011000c0015030400609d0b080700000012000c0032030400ec3e1008c700000012000c00 *4003040048bf0c083200000012000c005e0304007cea1108040000001100100084030400f4ad0e *080c00000011000c009a030400942c0a080000000010000c00c403040058d21108040000001100 *1000df03040098fc11080400000011001000fa0304006caa0d080500000012000c001c04040048 *f8110804000000110010003a04040008dd110804000000110010005a040400688d0c080c000000 *11000c007104040054770c080600000012000c009204040024770c080600000012000c00b40404 *0044d311080400000011001000ce04040064480f085100000012000c00f1040400acd211080400 *0000110010000b050400f0dd0c080c00000011000c0023050400b8a20b080c00000011000c003c *05040000080d080c00000012000c0050050400d8d8110804000000110010006a05040098fb0b08 *2300000012000c0084050400346c0b080000000010000c00ab05040050b70a080000000010000c *00d9050400819b04080000000010000c00f7050400d08c0d080c00000012000c0022060400f8e8 *0b080300000012000c0043060400cc9e05080000000010000c007006040090ed0b080300000012 *000c008c060400206810081e00000012000c00a206040004d10b085100000012000c00bc060400 *7cdf11080400000011001000e6060400fc6c0e080800000011000c000307040024910d080c0000 *0011000c0018070400dcdb110804000000110010003c07040011c10f081301000012000c004407 *04008c2f0e081300000012000c006e070400541d0d080c00000011000c008b07040074bd0b0810 *00000011000c00a70704002c9f05080000000010000c00d807040008f211080400000011001000 *fc0704003c980c08b900000012000c0022080400f0790c080700000012000c0037080400ec0e0c *081000000011000c005a080400a4c40f084700000012000c0065080400408e0f08100000001100 *0c008708040078810e080800000011000c009e080400048e05080000000010000c00ca080400dc *6c0e080600000012000c00ea08040044770c080600000012000c000c090400e445100851000000 *12000c00200904001ceb09080000000010000c00430904007cc811080000000010001000780904 *0018a90f080800000011000c009809040048d711080400000011001000b4090400d0d511080400 *000011001000d00904001c620c080c00000011000c00fd09040014c61108000000001000100028 *0a0400d4eb09080000000010000c005a0a040030b609080000000010000c008a0a0400e8e31108 *0400000011001000ac0a0400b4c511080000000010001000d50a040090d5110804000000110010 *00020b040014450a080000000010000c002f0b0400689905080000000010000c005a0b0400fcab *11080000000010001000850b0400e0eb10085000000012000c00950b0400a0210f080800000012 *000c00be0b040068dd0b080300000012000c00d90b04003c4c10089500000012000c00eb0b0400 *b4fa11080400000011001000170c040044d50c080800000012000c00330c0400ac610708000000 *0010000c00640c0400a8fa0c084d00000012000c007e0c040008a80b080c00000011000c009c0c *040078ad0e080c00000011000c00b10c04004c170d081000000011000c00d70c0400d0ee090800 *00000010000c00fd0c0400e04b0c080c00000012000c00280d0400a0b409080000000010000c00 *580d0400cc020f080800000011000c00730d0400888505080000000010000c009e0d0400b8ad0b *080c00000012000c00b50d040010ef11080400000011001000cc0d0400cc8b0e08260000001200 *0c00f90d0400e89a0d080c00000011000c000c0e040048bf0c080c00000011000c00290e040054 *d3110804000000110010003f0e040018310f080c00000011000c00590e040040ef0d080c000000 *11000c007d0e0400a8e311080400000011001000980e04005cec11080400000011001000b50e04 *005c4807080000000010000c00de0e0400581705080000000010000c00060f0400d8d20e081900 *000012000c002e0f0400a4dd11080400000011001000540f040000000000190200001200000069 *0f04006c7508080000000010000c00a20f0400941e0b080000000010000c00d30f0400d4cd0c08 *2300000012000c00f00f040034b7110800000000100010003210040064480f081000000011000c *005410040060b30e085b00000012000c0071100400a8760e080500000012000c009610040030d7 *11080400000011001000c1100400386007080000000010000c00ec1004003c860f085b00000012 *000c000d110400d0420c080500000012000c003211040060d91108040000001100100051110400 *44450a080000000010000c007f11040078160b080000000010000c00bd11040014910c080c0000 *0011000c00da110400985207080000000010000c00ff1104007c4207080000000010000c002412 *040030000d081000000011000c00461204004cdc110804000000110010005b120400bfec0f0849 *00000012000c0068120400a8b90d081000000011000c008012040090ff11080400000011001000 *a61204003ca10e080800000011000c00c1120400d8380a080000000010000c00e9120400477810 *082200000012000c00f3120400f4f11108040000001100100014130400dcc40c08060000001200 *0c003913040000e9110804000000110010006a13040020670c080c00000012000c0091130400e0 *9d0b080c00000011000c00b113040070a00f081000000011000c00d3130400e8e6110804000000 *11001000eb13040004070c080800000011000c0007140400b0d10e085b00000012000c00291404 *00002d0c080c00000011000c0042140400d0b70a080000000010000c006b14040070c805080000 *000010000c0096140400201005080000000010000c00b414040091c40f081300000012000c00bc *140400087d0f080800000011000c00cf14040050ba0e080800000011000c00e4140400f0e90b08 *7d00000012000c00f81404009ce8110804000000110010002415040084df110804000000110010 *00541504002c0f0c084300000012000c007415040018f60b082300000012000c0088150400b4a4 *0b086300000012000c00a6150400986810080800000011000c00bb1504006c860e086800000012 *000c00e3150400c0d51108040000001100100000160400d4d00e080800000011000c0014160400 *ece5110804000000110010003716040028c3110800000000100010007a1604007ab20f082a0000 *0012000c008816040018f311080400000011001000b41604000cac11080000000010001000e416 *0400a8210f080500000012000c000c1704002c5e07080000000010000c002a170400fcfa0d080c *00000012000c0040170400d0e1110804000000110010005a170400249b04080000000010000c00 *6b1704000000000001060000120000008017040020c10e082300000012000c0099170400cc6c0e *080800000011000c00bc170400a0240e085b00000012000c00dd17040040380d08050000001200 *0c0007180400c48b08080000000010000c003d18040028ef110804000000110010005418040058 *db0b080c00000012000c006b18040024230b080000000010000c009918040034aa0f0808000000 *11000c00ac18040024340d082300000012000c00dc180400acdc0b080800000011000c00f51804 *0014bd05080000000010000c002319040098f911080400000011001000421904007cdc11080400 *0000110010005a190400ecec0b080c00000011000c006c190400d4b2110800000000100010009d *190400ecf111080400000011001000be19040088e311080400000011001000e01904009c0e0c08 *0c00000011000c00f519040048cc110800000000100010001c1a0400dc7a08080000000010000c *00561a0400088b0c080c00000012000c006c1a0400e0d70e080c00000011000c00951a0400d0f7 *11080400000011001000af1a0400d8ae0e082a00000012000c00d41a0400e8c50c080c00000012 *000c00ee1a04007cea0b080c00000011000c00091b04006cee110804000000110010002a1b0400 *6cff0d080c00000011000c00471b0400f4e30b083000000012000c00601b040010dd0f08810000 *0012000c00761b0400f0f70d080800000011000c00991b040078a40c081000000011000c00b51b *0400ecf60e080800000011000c00cc1b0400b4a00d085600000012000c00f21b040030890b0800 *00000010000c00181c0400ac370a080000000010000c003f1c0400bcd011080400000011001000 *5d1c0400185e10082c00000011000c00721c0400c4b8120804000000110017007f1c040094fc11 *0804000000110010009c1c0400b8810d080c00000011000c00b41c040074da1108040000001100 *1000ca1c0400909c0f080800000011000c00dd1c040078ed0b080300000012000c00f91c0400f8 *a511080000000010001000291d04004ccc11080000000010001000521d04005c3a0f0810000000 *11000c00651d0400c8850b080000000010000c008d1d0400e4840b080000000010000c00b81d04 *00adae0f081001000012000c00c31d0400305f0f080500000012000c00ec1d0400a1d10f080b00 *000012000c00fa1d040090770e081800000011000c001f1e0400e4fb110804000000110010003f *1e0400bccc0e080500000012000c00581e0400b0f611080400000011001000721e04004c5f0d08 *0800000011000c009e1e0400f8e011080400000011001000b41e040020e9110804000000110010 *00e51e040092fa0f080f00000012000c00f91e0400989f0f085b00000012000c000d1f0400b073 *0e085b00000012000c002a1f0400dcd7110804000000110010004f1f0400f0dc0b080800000011 *000c00661f04000c5d10080800000011000c00791f040010ed11080400000011001000971f0400 *20ba12080400000011001700a81f040024980b080700000012000c00c91f0400d4600708000000 *0010000c00f21f040046c80f081300000012000c00ff1f040074610b080000000010000c003120 *04001c9a0e080800000011000c004a2004003c9c0b080800000011000c006a20040048f5110804 *000000110010008d200400f0b409080000000010000c00be20040020e211080400000011001000 *e220040008c30c082000000012000c00f9200400e4e90b080800000011000c001621040090a711 *0800000000100010003f210400e86107080000000010000c006b21040008f01108040000001100 *10008f21040090560f081000000011000c00a421040068fd0b083000000012000c00bb21040090 *f70b082f00000012000c00d1210400701805080000000010000c00fa210400f4d50c0820000000 *12000c0016220400c09d05080000000010000c00452204005c7f0f085b00000012000c00592204 *008c1e0f085200000012000c007722040050cc09080000000010000c00a22204004c4a07080000 *000010000c00cc220400f0210f080800000012000c00f62204002cc50c080800000011000c0016 *230400a0230d081a00000012000c004023040020c50c080800000011000c005f23040038da1108 *040000001100100079230400a8ef110804000000110010009123040054c90c082000000012000c *00a523040054d711080400000011001000c5230400accc0b082000000012000c00dc23040044eb *09080000000010000c0003240400548f0f085b00000012000c0024240400a4b20f081200000012 *000c0034240400500c0e081000000011000c00492404008c050d080c00000011000c0066240400 *e02406080000000010000c0084240400344410083700000012000c0098240400a0330e08260000 *0012000c00c224040030cc11080000000010001000fb2404008ca8110800000000100010002b25 *0400b8f60b080c00000011000c003e250400a85c10080800000011000c004c250400d45d100808 *00000011000c005d25040004fa0c083900000012000c0076250400f0c311080000000010001000 *af25040034bc12080400000011001700cb2504006cb30c081000000011000c00e325040094ca0b *080c00000011000c00fa25040024b01108000000001000100022260400d0f31108040000001100 *100057260400d4ba05080000000010000c007c260400b02d0c080300000012000c009f26040094 *7e0b080000000010000c00ca260400ecec0b080c00000012000c00dd26040084c0110800000000 *1000100015270400649c0c080c00000011000c0037270400703a0e080c00000011000c00652704 *0080aa0e080c00000011000c0086270400b4770c083800000012000c00a4270400d80012080400 *000011001000ba270400000000003900000012000000d6270400243710080c00000011000c00e7 *270400b4cd1108000000001000100018280400a01805080000000010000c003d28040008011208 *04000000110010006028040054fe1108040000001100100075280400101805080000000010000c *009d28040000330e080c00000012000c00c22804004ce411080400000011001000e1280400b401 *0f084600000012000c00f628040044d80e082500000012000c001c290400dccb0c082300000012 *000c0039290400f4770f080c00000011000c0050290400e0dd1108040000001100100070290400 *54d2110804000000110010008729040034800f085100000012000c00aa290400b4fd0d080c0000 *0011000c00c6290400f4890d080c00000011000c00ed2904004cf70a080000000010000c001f2a *040080a711080000000010001000502a0400100712080400000011001000752a0400b0d40d0873 *00000012000c00962a0400049b0e080800000011000c00b02a0400e0e411080400000011001000 *ca2a0400c0bb0b080c00000012000c00e02a0400dc270a080000000010000c000c2b040010c409 *080000000010000c00422b0400401805080000000010000c006a2b04005c240f08100000001100 *0c008b2b040080650a080000000010000c00be2b0400486b0c080600000012000c00ed2b04005c *fd11080400000011001000102c040014f50d080c00000012000c00292c0400b8d9110804000000 *11001000442c04008c4107080000000010000c00692c0400e52406080000000010000c00882c04 *0064a711080000000010001000ae2c0400e88a08080000000010000c00ec2c040054c90c081000 *000011000c00ff2c040044170b080000000010000c002f2d04002ca70f080800000011000c0042 *2d04001c150d084a00000012000c00602d040030da11080400000011001000772d0400e0c40b08 *0700000012000c00992d0400180312080400000011001000be2d0400a0440a080000000010000c *00eb2d040018e511080400000011001000032e0400205407080000000010000c00212e04000cad *0e080c00000012000c00392e0400d84707080000000010000c00602e0400b4890f085100000012 *000c00832e0400b8d1110804000000110010009a2e0400180710080100000012000c00a52e0400 *4c4f0f080c00000011000c00c22e0400f4bc0b082900000012000c00df2e040020b70908000000 *0010000c00122f040008220d080c00000012000c003b2f040080170b080000000010000c006f2f *040014050d081000000011000c008c2f0400cab90f082900000012000c00992f040038ac080800 *00000010000c00d22f0400081005080000000010000c00fd2f0400240a0d085100000012000c00 *14300400f01a08080000000010000c00423004001ced1108040000001100100060300400f4a911 *0800000000100010008f300400882705080000000010000c00bd3004001cd70508000000001000 *0c00ee300400b4ba12080400000011001700f93004005c260d080c00000011000c0023310400e0 *07120804000000110010004831040030fe110804000000110010005e310400c0e3110804000000 *110010007f31040078e11108040000001100100095310400f8dd11080400000011001000be3104 *001cea11080400000011001000e431040030c20f082600000012000c00fb31040084030e081000 *000011000c001332040048160b080000000010000c004d320400a01805080000000010000c0073 *32040065cf0f08df00000012000c0080320400c0e91008b801000012020c008a32040078f51108 *0400000011001000b032040004200c080c00000011000c00c932040068010e080c00000011000c *00dc320400f4df1108040000001100100004330400d8e70e085b00000012000c00273304001c6d *0e080600000012000c0045330400b8200f085b00000012000c0062330400f4910f080800000011 *000c007533040080ff110804000000110010008e330400b8ff0c080c00000012000c00b0330400 *2ce011080400000011001000cf33040014d311080400000011001000ed33040068850508000000 *0010000c001434040038c00e083000000012000c002b34040064e1110804000000110010004634 *040060bc0e083000000012000c006334040030db0b080c00000011000c007734040008f8110804 *000000110010008e340400484b07080000000010000c00b2340400c4f40e085b00000012000c00 *c9340400d05207080000000010000c00ec34040040e11108040000001100100004350400acf511 *08040000001100100028350400b8e5110804000000110010004035040088b30508000000001000 *0c00663504008ce9110804000000110010009b350400fc850d080c00000011000c00bc350400b4 *980d085c00000012000c00d535040094070e081000000011000c00f035040058ed110804000000 *1100100010360400c8120d085900000012000c002e36040018e60b081000000011000c00433604 *00b8b509080000000010000c00733604009cdc1108040000001100100096360400486b0c080800 *000011000c00c436040040c409080000000010000c00f73604005409120804000000110010000d *370400e0ec0c080c00000011000c00263704003cda110804000000110010003c37040064c31108 *000000001000100070370400a4d40e085400000012000c009b370400289c0e080500000012000c *00bc370400e81f0e080c00000011000c00de370400b4880d080c00000011000c00fa3704004489 *0f080800000011000c001a380400aca10e085b00000012000c002f38040004070c080300000012 *000c004c380400c0180e081000000011000c006838040000000000d3000000120000007c380400 *d4120e081000000011000c009138040040d104080000000010000c00b43804006ccd0e080c0000 *0011000c00ce380400f0fd11080400000011001000eb380400f8ec110804000000110010000f39 *040034220b080000000010000c003d39040078a30f085100000012000c006039040048810f0808 *00000011000c0080390400fcd9110804000000110010009d3904000c6c0a080000000010000c00 *cd390400b4e704080000000010000c00f2390400bcf811080400000011001000093a04005c4a0e *081000000011000c00393a04004cdd11080400000011001000523a0400288a0d08080000001200 *0c00743a04008cc30c080c00000011000c008c3a040008f511080400000011001000af3a040096 *f90f083b00000012000c00c03a04006cd70e081800000011000c00e93a040024dc110804000000 *11001000133b04008c6b10082f00000012000c00263b0400b45e10080600000012000c00383b04 *004008120804000000110010004e3b0400d4f10c080800000011000c00683b0400b0170b080000 *000010000c00a83b040078160b080000000010000c00e73b040050b409080000000010000c0017 *3c040004a80e081000000011000c00363c04001c2f0e081300000012000c00603c040004ea1108 *0400000011001000863c0400f08b0b080000000010000c00b93c0400c4d1110804000000110010 *00d43c040028110e080c00000011000c00e63c0400ace8110804000000110010000d3d0400e006 *0c080800000011000c00233d0400e0910c080c00000012000c00393d0400bc4307080000000010 *000c00633d040000e411080400000011001000833d0400d01006080000000010000c00ba3d0400 *8ca911080000000010001000ec3d040024ac0e080c00000011000c00033e040068d61108040000 *0011001000303e04009c4310083700000012000c00413e0400dc770e080500000012000c00663e *04001c2a08080000000010000c00a63e0400203310080900000012000c00bc3e04005cbd0f08a9 *00000012000c00cd3e040064ff11080400000011001000eb3e040000ed11080400000011001000 *133f0400acd4110804000000110010002e3f0400f8d911080400000011001000473f0400a02c0f *082900000012000c00683f040088f8110804000000110010007e3f040004ed1108040000001100 *1000a63f0400d46d10082c00000011000c00b93f040054ef0c081000000011000c00dc3f0400dc *a2110800000000100010000740040078b1110800000000100010002f40040034920b0810000000 *11000c00564004003cd11108040000001100100071400400b60410084f00000012000c00834004 *0034fe110804000000110010009d400400bc6c0e080800000011000c00bd4004004ceb11080400 *000011001000e340040064d311080400000011001000fe40040084c20c080c00000011000c0018 *410400e84607080000000010000c0048410400b4dc1108040000001100100065410400a8e01108 *04000000110010008a41040080c311080000000010001000bf410400a8b1110800000000100010 *00df410400603910089a00000012000c00e941040090e810082b01000012020c00f341040040f4 *110804000000110010001842040034920b084100000012000c0040420400485e10082a00000012 *000c005542040004fe110804000000110010006b420400e4220b080000000010000c0094420400 *3b3310080900000012000c00aa4204003cfd11080400000011001000cf420400e8d71108040000 *0011001000fc420400000000003a000000120000000d43040098c70c081000000011000c002343 *040050170b080000000010000c0054430400480c10080c00000011000c0062430400244b0e080c *00000011000c00944304009dc50f084100000012000c00a543040050e111080400000011001000 *bd430400fc3010084f00000012000c00d94304007cf909080000000010000c0004440400144107 *080000000010000c0025440400f4780c084a00000012000c0044440400980b0508000000001000 *0c0067440400d4950f085100000012000c008a440400dca50e085b00000012000c00a044040078 *e311080400000011001000ce4404001c810d080800000011000c00ea44040024dd110804000000 *1100100000450400ec6b0a080000000010000c003245040000da110804000000110010004b4504 *00a46a0a080000000010000c007c450400786f0e080c00000011000c00a345040018ff11080400 *000011001000c6450400c8ed11080400000011001000f0450400dcdc0c080600000012000c000a *460400b0a80f085b00000012000c001e46040010fb110804000000110010004246040084da1108 *040000001100100059460400e07a0c082d00000012000c006e460400446207080000000010000c *009446040050f90f084600000012000c00a0460400d4340f080c00000011000c00b5460400e0d4 *11080400000011001000d3460400280412080400000011001000f646040090770e084a00000012 *000c001c470400fc580b080000000010000c00484704003c6507080000000010000c0077470400 *6003120804000000110010009d47040010e711080400000011001000b34704001c6c0f08200000 *0012000c00c8470400ec870a080000000010000c00fb47040078370a080000000010000c002548 *040000500f080c00000011000c0038480400e81310081d02000012000c0046480400688d0f085b *00000012000c005a480400386b0c080800000011000c008548040064b111080000000010001000 *b0480400d8fb11080400000011001000cc480400580f0e085500000012000c00e2480400e8830d *085a00000012000c00094904000c8c0b080000000010000c003a490400205d0b08000000001000 *0c006a49040090de1108040000001100100096490400b4d411080400000011001000b549040078 *670f084100000012000c00d7490400c00612080400000011001000fc490400bcd1110804000000 *11001000134a040008bc0b080800000011000c002f4a04002c100a080000000010000c00604a04 *0038fc110804000000110010007d4a040098c50c080c00000011000c00964a0400e8d511080400 *000011001000c24a0400843d0c081000000011000c00e44a0400e0fa1108040000001100100008 *4b0400b0140a080000000010000c002f4b040044a3110800000000100010005a4b040058230f08 *0e00000012000c00874b0400cc180c087800000012000c00a24b0400e8e90b080700000012000c *00b54b040098220b080000000010000c00dd4b0400a8be09080000000010000c00144c0400fca7 *110800000000100010003f4c04001c620c083d00000012000c006d4c040054710f081000000011 *000c00824c0400d8f911080400000011001000a14c0400c86a0c080800000011000c00ca4c0400 *40d911080400000011001000e44c04009c360c087d00000012000c00014d040070be0e080c0000 *0011000c00154d040014ec0b080c00000012000c00284d040023ff0f085400000012000c00354d *0400fc1a0f085b00000012000c00524d0400605108080000000010000c00814d0400440c0d0820 *00000012000c009e4d0400b4a911080000000010001000d44d0400000000000104000012000000 *df4d0400804e0c080700000012000c00f64d0400f4cc11080000000010001000234e040074440a *080000000010000c004e4e0400ac4f08080000000010000c00804e04004c170d085e0000001200 *0c00a74e0400547b0c080c00000012000c00c44e0400e8a211080000000010001000ef4e0400fc *300c080800000011000c000b4f0400f0990f085b00000012000c002c4f040048e00b0803000000 *12000c00484f040068d111080400000011001000614f0400c05b0f086600000012000c00764f04 *00583c0f081000000011000c008b4f04003c2f0e082100000012000c00b54f0400f4770f083e00 *000012000c00cd4f04008cde11080400000011001000f94f0400e4bb0b080300000012000c0013 *500400d4e7110804000000110010003c500400d01f0d081900000012000c0066500400d8e41108 *040000001100100081500400a0d511080400000011001000a45004008cd10c080c00000011000c *00bf500400500d0c080c00000012000c00d450040094a70f085b00000012000c00f550040004db *1108040000001100100014510400c84305080000000010000c004051040040220f080800000012 *000c006a510400c05e0c080800000011000c0097510400bfed0f089000000012000c00a4510400 *64fb11080400000011001000c25104008cdc0b080800000011000c00db510400041d0f08080000 *0011000c00f8510400246010080800000011000c000b52040060680f080c00000011000c002c52 *04005fbb0f080800000012000c003852040060c7110800000000100010006352040058d3110804 *000000110010007952040098f211080400000011001000a3520400c80412080400000011001000 *c8520400acdc11080400000011001000e3520400d8dc0b080800000011000c00fd520400f00812 *08040000001100100020530400386007080000000010000c004a53040028661008490000001200 *0c005f530400000000004e020000120000006a530400684205080000000010000c0094530400a4 *9304080000000012000a009a5304008c990b080700000012000c00bc530400f017050800000000 *10000c00df53040010b20e080800000011000c0004540400644107080000000010000c002c5404 *00a06b0c080700000012000c004654040028bb1208040000001100170050540400101f0e080c00 *000011000c0072540400041c0d080800000011000c008f54040094b10d081000000011000c00aa *540400d4ec11080400000011001000cc540400dc9e05080000000010000c00f75404008fb30f08 *1f00000012000c000e550400b8ff0d082000000012000c0022550400ecdf0d081800000011000c *003555040000f40b080c00000011000c004b550400d4230a080000000010000c00725504002018 *05080000000010000c009d55040064b70f087c00000012000c00ae5504004cde0b080300000012 *000c00ca550400806007080000000010000c00f45504007ca71108000000001000100021560400 *e0bb12084000000011001700355604008cb10f083800000012000c004156040050fb1108040000 *00110010005e56040038ac08080000000010000c009856040034b305080000000010000c00bf56 *040010730e080800000011000c00db560400b00712080400000011001000f1560400a0920d0836 *00000012000c001557040044da110804000000110010002b5704000cc111080000000010001000 *6557040054540f081000000011000c007857040074f2110804000000110010009c57040030aa0d *080a00000012000c00bf57040030f80d080800000011000c00df5704006c1c0a08000000001000 *0c0007580400c4a2110800000000100010002b580400d8f70e080800000011000c0042580400a0 *a20f085b00000012000c00565804009dce0f08a000000012000c0063580400b4060c0823000000 *12000c007758040088c40c080c00000011000c008e580400bce311080400000011001000b05804 *0080d111080400000011001000cc580400dce611080400000011001000e958040074c811080000 *0000100010001c590400ac6107080000000010000c004c590400e0dc1108040000001100100071 *590400d4a911080000000010001000a6590400a4720f080c00000012000c00c059040030d40c08 *0c00000011000c00da59040028da11080400000011001000fa590400d37610080101000012000c *00045a0400b4f90c080c00000011000c00205a04005bfa0f081500000012000c00305a040024d9 *0d080500000012000c004e5a0400202d0a080000000010000c00795a0400b4c611080000000010 *001000a85a0400c4a90b080600000012000c00c45a0400e8b111080000000010001000e85a0400 *4c2406080000000010000c00215b040030f511080400000011001000445b040008d61108040000 *00110010006d5b0400a0360b080000000010000c009c5b0400c4620b080000000010000c00c35b *04003c590a080000000010000c00f95b04005c3a0f082900000012000c000d5c0400e8f1110804 *00000011001000265c0400fca90b080700000012000c003b5c0400441e0b080000000010000c00 *6a5c040091dd0f083d03000012000c00755c040038f90e085b00000012000c008d5c0400980b0f *083000000012000c00a15c0400c8f911080400000011001000c05c0400fcc40c08060000001200 *0c00e55c0400d01805080000000010000c000d5d040048de110804000000110010002b5d0400c0 *d711080400000011001000515d0400ccad0d082300000012000c00765d0400bc4b0e0863000000 *12000c00ac5d04006cb80c081000000011000c00c45d0400601f0c080700000012000c00d95d04 *005cc50f084100000012000c00ec5d0400880312080400000011001000025e0400b46a10081e00 *000012000c00195e040014770c080800000011000c00375e040018e60b082300000012000c004d *5e040070d711080400000011001000665e040018d305080000000010000c00995e040000e21108 *0400000011001000c05e0400c86a0c080600000012000c00ea5e040018b509080000000010000c *00195f0400a4ba12080400000011001700225f0400e4c111080000000010001000635f0400ecd7 *110804000000110010008e5f0400485a10081800000011000c009b5f04004c8c0f080800000011 *000c00bb5f04003c460f080800000011000c00e25f040080ae0d080c00000011000c0000600400 *a81d0c080c00000011000c001860040008c30c080c00000011000c002e60040000b40908000000 *0010000c005d60040090c60e080c00000011000c0073600400d08c0d080c00000011000c009d60 *0400e8dd11080400000011001000bd60040024a40f080800000011000c00d060040050030b0800 *00000010000c000161040024080f080c00000011000c001261040050640c084000000012000c00 *3961040094b40b082d00000012000c005061040048200f080800000011000c006c610400bc5f0d *080600000012000c009b610400a04d0c085500000012000c00bd610400d4850f085b0000001200 *0c00d16104008ce411080400000011001000f161040078e21108040000001100100016620400c0 *d9110804000000110010003262040094670a080000000010000c00636204003805120804000000 *1100100079620400003f0c082500000012000c00a562040054b30b080c00000011000c00c06204 *0000000000b501000012000000d262040054d811080400000011001000ea62040050760a080000 *000010000c001c630400085c10080800000011000c00336304009cc8110800000000100010006a *630400b46610084900000012000c007f6304004ab30f081700000012000c008963040004580e08 *0c00000011000c00b2630400044e10086d00000012000c00cb630400e8f3110804000000110010 *00ee63040040db110804000000110010000e640400e4290d080c00000011000c003b640400cc3c *0f083000000012000c005064040058230f080c00000011000c007c640400e8640c083000000012 *000c00a3640400641b0f085b00000012000c00c06404006c080d080c00000011000c00d3640400 *30170c081000000011000c00ee6404001cb30f081700000012000c00f86404008cf00c08540000 *0012000c0020650400ece80b080300000012000c003e650400245106080000000010000c006765 *0400e0f4110804000000110010008a65040008170b080000000010000c00be650400dcc40c0808 *00000011000c00e2650400e0060c080300000012000c00f9650400f81805080000000010000c00 *2766040024d70e080500000012000c0050660400fcbb0b080800000011000c0069660400ccdc0c *080600000012000c008066040094c511080000000010001000b0660400a4420708000000001000 *0c00d56604000cbe0b080300000012000c00f6660400349a0b084100000012000c0015670400a8 *8508080000000010000c004f670400c43f0a080000000010000c007a670400d4eb090800000000 *10000c00ad67040060c209080000000010000c00ec67040094e1110804000000110010000b6804 *0040d31108040000001100100027680400f0b20e080c00000011000c0043680400ebc40f081700 *000012000c00516804007cf80d086f00000012000c006b680400b8b90b080c00000011000c0085 *68040014030e085b00000012000c009868040084e60e080800000011000c00b8680400fcd51108 *0400000011001000e4680400c4fc0b080c00000011000c00fd68040008ed110804000000110010 *0010690400dcc30c080c00000011000c002e690400b0d4110804000000110010004d690400bcee *0b083500000012000c006569040077ff0f087900000012000c00736904008c4110082200000012 *000c008469040030f211080400000011001000a0690400ec2f0c080c00000011000c00c2690400 *c0e411080400000011001000d869040024b305080000000010000c00006a040060650a08000000 *0010000c00316a0400904a0c080700000012000c00546a04002cc60b084100000012000c00776a *0400f4440a080000000010000c00a46a040029f60f080000000010000c00ae6a040020dd0b0808 *00000011000c00c86a0400b49e05080000000010000c00f26a0400909c0f085b00000012000c00 *066b040098cb0d080800000011000c001f6b040024f3110804000000110010004b6b040054c711 *080000000010001000746b04000ca7110800000000100010009e6b040018490f08100000001100 *0c00c06b040084990e080800000011000c00d76b040060d80b080c00000011000c00ec6b0400c4 *a911080000000010001000196c04004c3910081200000012000c00276c04008cd10c0820000000 *12000c00436c040050f90b082f00000012000c00586c040008a70b080700000012000c006d6c04 *0094f6110804000000110010008d6c04004ce511080400000011001000a26c0400dce80b080600 *000012000c00c56c04003cd305080000000010000c00f56c040038c00e081000000011000c000b *6d0400fc960e080800000011000c001f6d0400481e0d080a00000012000c00376d0400c8331008 *f601000012000c00446d0400ac860f081000000011000c00666d040060b2110800000000100010 *008c6d0400807b08080000000010000c00c66d040018b506080000000010000c00f26d0400acba *12080400000011001700fe6d040094e711080400000011001000176e0400d4db11080400000011 *0010003d6e040098f8110804000000110010005a6e0400ecc40c080800000011000c007d6e0400 *0c2c0b080000000010000c00a16e040094c311080000000010001000d26e040018d20e080c0000 *0012000c00f46e0400dc650e086b00000012000c00186f0400000000003a000000120000002a6f *040068eb0e086000000012000c004e6f040058f511080400000011001000716f040074fd110804 *00000011001000966f040098c511080000000010001000cb6f0400a8300c080300000012000c00 *e46f040070410a080000000010000c000b70040078a71108000000001000100036700400f4370f *081000000011000c0050700400947e0d080c00000011000c006f7004002cda1108040000001100 *10008970040054da11080400000011001000a3700400f4cf0c085900000012000c00b970040090 *aa0d080a00000012000c00dd7004005cd811080400000011001000f8700400996f100898000000 *12000c000c71040064f01108040000001100100034710400fcbb0b080300000012000c004e7104 *0050920c081000000011000c0063710400dc050a080000000010000c0090710400e0f70d080800 *000011000c00b5710400ec500f082900000012000c00cf710400fc830a080000000010000c0001 *720400545b10080800000011000c001a72040084250e085b00000012000c003872040060051208 *04000000110010005d72040018260c081000000011000c007972040080b609080000000010000c *00af720400ecf811080400000011001000c372040034870a080000000010000c00f3720400c4c2 *110800000000100010002e7304005c6007080000000010000c0057730400580512080400000011 *0010007c7304008ceb11080400000011001000a2730400f8b609080000000010000c00d0730400 *b80812080400000011001000f5730400e4160b080000000010000c0028740400cc071008540000 *0012000c00367404007cc50b080c00000011000c005f74040050980d081800000011000c007874 *0400d01d0c080c00000011000c0094740400a0fc11080400000011001000ae740400d0da110804 *00000011001000c674040084a10f085b00000012000c00e774040054600d080800000011000c00 *0875040014df0c085a00000012000c001d750400d48d0c080c00000011000c003775040074dd11 *08040000001100100056750400a0bd09080000000010000c008a7504003c8b0808000000001000 *0c00c7750400bcc40c080600000012000c00ec750400e42a0d082000000012000c0019760400e4 *c20e082300000012000c002f76040074770c080800000011000c004f7604009c890a0800000000 *10000c007f7604003c0f05080000000010000c00a876040000f40b082500000012000c00bf7604 *00e06007080000000010000c00eb76040000d31108040000001100100011770400b6bb0f080b00 *000012000c001f77040030aa0d081800000011000c0041770400b8d5110804000000110010005e *770400fc300c080300000012000c007b7704000c7c0c080c00000012000c009e770400f4c61108 *0000000010001000c877040048bb11080000000010001000047804000cf0110804000000110010 *001d78040060160b080000000010000c005278040094210e080c00000012000c00727804004453 *0b080000000010000c009b780400000000008b00000012000000ae7804005cdc11080400000011 *001000c6780400a4b111080000000010001000e6780400a0d91108040000001100100001790400 *9cc51108000000001000100038790400c8d1110804000000110010005379040048e51108040000 *00110010006b790400748a0b080000000010000c009679040068a411080000000010001000c579 *0400f8f30e080300000012000c00e779040034d311080400000011001000037a04008cc6110800 *000000100010002f7a0400345d10080800000011000c00467a040068e70e085b00000012000c00 *697a0400c4240d081a00000012000c00937a0400b00312080400000011001000b87a0400acae11 *080000000010001000ea7a040060f70e080800000011000c00017b040040e61108040000001100 *1000257b0400c88f0b083200000012000c004b7b0400d8dc0b080300000012000c00667b0400e4 *bb0b080800000011000c007f7b040078070a080000000010000c00a67b0400088f0d0859000000 *12000c00ba7b040044890c080300000012000c00e27b04002cf00b082300000012000c00fc7b04 *00980b05080000000010000c00207c0400b8f811080400000011001000387c040034f611080400 *000011001000597c040004df11080400000011001000827c0400b00e0a080000000010000c00b3 *7c040000880c080c00000011000c00d97c040020d104080000000010000c00047d0400f8061208 *0400000011001000277d0400eccb110800000000100010005c7d04000c5106080000000010000c *00837d040054a811080000000010001000b07d0400a46d0e080c00000011000c00d77d0400e8c3 *110800000000100010000f7e0400bcbc12080400000011001700237e040014e111080400000011 *0010003e7e040014b90c081000000011000c00577e04009c640c080c00000011000c007d7e0400 *2cd511080400000011001000997e04003c6a10081e00000012000c00b07e0400919f0508000000 *0010000c00d17e04000c460d080c00000012000c00fe7e0400c8210f081800000011000c00267f *0400000000003c000000120000003b7f040090fd11080400000011001000527f040094cc050800 *00000010000c00857f04007c5f0d080800000011000c00af7f040010ed0e081000000011000c00 *d67f040068eb0e080c00000011000c00f97f0400247a0c082300000012000c001180040074f409 *080000000010000c003b80040070f711080400000011001000558004006fe90f08550000001200 *0c006a80040084fe110804000000110010008080040068b211080000000010001000a7800400e4 *130e080300000012000c00c380040050e311080400000011001000e580040044530b0800000000 *10000c000d810400c0c50e085b00000012000c0020810400c8b211080000000010001000458104 *00b8a2110800000000100010006b81040038390e085900000012000c009a810400b8ff11080400 *000011001000b28104007c541008b400000012000c00c18104009cd70e080500000012000c00ea *81040000000000d101000012000000f5810400d0f4110804000000110010001882040024d21108 *040000001100100035820400c4b1110800000000100010005a82040024aa110800000000100010 *008c820400348a0c082000000012000c00a7820400a4c611080000000010001000d18204006cb3 *05080000000010000c00fb82040070bb110800000000100010002e830400285f0f080800000012 *000c0058830400c0300c080300000012000c007283040000000000d30000001200000086830400 *5cda110804000000110010009f83040074e809080000000010000c00c983040040180508000000 *0010000c00f2830400d01d0c080c00000012000c000f8404000c5c06080000000010000c003a84 *04001c5110088000000012000c004d84040088f51108040000001100100077840400c806120804 *000000110010009c84040030e611080400000011001000c084040074170b080000000010000c00 *f6840400d8a60e085b00000012000c000c850400b0b809080000000010000c003c8504000cc709 *080000000010000c0068850400bcf10b083200000012000c008285040048ca0b080c0000001100 *0c0095850400d87a0c080700000012000c00a9850400f0300c080300000012000c00c385040098 *bb0b080c00000011000c00d885040004bf0f086600000012000c00ed850400c0cf110800000000 *1000100018860400deb00f083800000012000c0024860400fc840b080000000010000c00508604 *0020f80d080600000012000c0078860400805f0c080c00000011000c00a5860400e8050c080700 *000012000c00b9860400c8db0b080c00000011000c00d086040030e00b080800000011000c00eb *860400446207080000000010000c0010870400e8640c080c00000011000c0036870400aeb30f08 *1f00000012000c004d870400d4b81208040000001100170059870400bcf2110804000000110010 *008587040060f80d080600000012000c00ab8704005c050c080700000012000c00be870400a8d6 *11080400000011001000f987040047b90f083700000012000c000588040040fc11080400000011 *001000228804008c910d080c00000011000c003a8804009c0710082600000012000c0047880400 *f86a0c080600000012000c0078880400b8820c084800000012000c00a088040020c70b08730000 *0012000c00c388040020730f085b00000012000c00d7880400ccba0a080000000010000c000889 *0400dc0b0d080800000011000c00248904009cd61108040000001100100053890400d8050c0803 *00000012000c006d890400e4fe110804000000110010008389040084c311080000000010001000 *b58904001ca10f085b00000012000c00c9890400f8dc11080400000011001000e989040004b70d *086900000012000c000e8a04002c2b0a080000000010000c00398a04006c1d0f08080000001100 *0c00568a04007c4010082200000012000c00678a04002cea110804000000110010008d8a040098 *db11080400000011001000ac8a040068a50e085b00000012000c00c28a040009b40f0809000000 *12000c00d18a0400c8b409080000000010000c00028b0400500812080400000011001000188b04 *000005120804000000110010003b8b0400449e0d080c00000012000c00588b0400f4890d081a00 *000012000c00808b040020cd05080000000010000c00a98b040088f411080400000011001000cb *8b0400a82a0d081000000011000c00fa8b0400f0850b080000000010000c00218c0400b8d31108 *04000000110010003a8c0400cc0710080800000011000c00478c040004e8110804000000110010 *00738c0400801605080000000010000c00948c040000620d081000000011000c00b08c040020e4 *11080400000011001000cb8c0400d8b812080400000011001700da8c040048910f081000000011 *000c00fc8c040060070d080c00000011000c00108d04001cd70e081800000011000c00398d0400 *515810080600000012000c00528d0400d0b60b082300000012000c006a8d0400dc410708000000 *0010000c00928d040038f811080400000011001000b08d040094fe0d080c00000011000c00cc8d *040000620d089601000012000c00e98d0400146007080000000010000c00148e0400fcd80d0818 *00000011000c00328e0400e02a0e080800000012000c005c8e0400f4ca11080000000010001000 *918e04000c9b0f085b00000012000c00a58e040010b809080000000010000c00d58e04005c460c *087d00000012000c00eb8e0400985a10080800000011000c00fa8e040008ce0b080c0000001100 *0c000e8f0400f08b0b080000000010000c00408f04002be20f081300000012000c00508f04003c *590a080000000010000c00878f0400e41a10088902000012000c00968f0400b80d0d0808000000 *11000c00b98f0400a8d911080400000011001000d68f040014290d084f00000012000c00039004 *0008da110804000000110010002290040068170b080000000010000c00509004005cd311080400 *0000110010006a90040068e70e080c00000011000c008c90040090680c085c00000012000c00bb *90040054b909080000000010000c00ec9004008001120804000000110010000f910400f8fd1108 *040000001100100031910400d8450f080800000011000c005291040018e4110804000000110010 *0073910400801a0b080000000010000c009f91040028b409080000000010000c00d191040030e1 *11080400000011001000ef91040054d1110804000000110010000592040030b10e080c00000011 *000c001992040034d81108040000001100100031920400f86310080800000011000c0044920400 *60f80d080800000011000c00699204005c8a0b080000000010000c009b920400d8470708000000 *0010000c00c392040080960f080800000011000c00d6920400d4f50e080a00000012000c00f192 *0400901d0b080000000010000c002193040000ef110804000000110010003f93040038170b0800 *00000010000c007d930400882705080000000010000c00ac930400e0e004080000000010000c00 *cf930400344210080c00000011000c00e6930400f4470f085b00000012000c000794040074ec11 *08040000001100100031940400f0d0110804000000110010004994040080cc0d085b0000001200 *0c005d940400a8f0110804000000110010007c94040030880f081000000011000c009e9404002c *da0b080c00000011000c00b294040078f811080400000011001000d1940400f8f60c080c000000 *12000c00f2940400bfd20f082400000012000c000595040028d00e080c00000012000c00209504 *00e8830e087200000012000c004495040000171208040000001100170056950400dcfe11080400 *00001100100074950400d0b80e081000000011000c008f950400487a0c080700000012000c00a9 *950400908508080000000010000c00e29504003cec1108040000001100100009960400b8840f08 *0800000011000c002996040084b60b080c00000012000c0045960400d8d1110804000000110010 *006c960400c0b1110800000000100010009e960400041712080400000011001700b096040074c0 *0f081300000012000c00bc960400941e0d080c00000011000c00d7960400c8c311080000000010 *0010000d970400e0d70e081a00000012000c00379704002c4207080000000010000c005c970400 *3cde11080400000011001000769704008cb1110800000000100010009e9704001cf31108040000 *0011001000ca97040054db11080400000011001000e097040084e90b080300000012000c000098 *040034e90b080800000011000c00269804002c9f05080000000010000c005898040004aa0b0855 *00000012000c006e98040060070d080800000012000c008398040018ef11080400000011001000 *9a98040038db11080400000011001000b9980400a8030f080800000011000c00d4980400c0f80e *080800000011000c00eb980400e45f0d085b00000012000c000d99040074ea0508000000001000 *0c00389904006cfd110804000000110010005d990400d8810c080c00000011000c007f9904003c *490c080c00000011000c00a599040064cc11080000000010001000e099040018db110804000000 *11001000fe9904009caa0f085b00000012000c001f9a0400f4470f080800000011000c003f9a04 *000c300e080500000012000c00689a04009ceb110804000000110010008e9a0400b4b111080000 *000010001000b19a040000000000fa01000012000000c29a0400a86710081e00000012000c00d8 *9a04009c9e08080000000010000c00109b0400d0e911080400000011001000389b0400f4f21108 *0400000011001000639b040080ec11080400000011001000879b0400205d10080800000011000c *009b9b040060e90b080300000012000c00c39b040018bf09080000000010000c00fb9b040064de *0b083700000012000c000f9c04009cc311080000000010001000449c0400c46107080000000010 *000c006f9c0400bc6c0e080600000012000c00909c0400dc520f082900000012000c00a39c0400 *145e07080000000010000c00c89c0400bee70f082200000012000c00d59c040044450a08000000 *0010000c00049d040080f70d080800000011000c00319d040024da11080400000011001000519d *040004dc11080400000011001000779d040021cd0f080600000012000c00859d0400586b0c0808 *00000011000c00b69d0400947410080100000012000c00c99d040000be0b080300000012000c00 *eb9d0400181905080000000010000c00179e040018fc11080400000011001000369e0400746007 *080000000010000c005e9e0400446007080000000010000c00829e040094fe1108040000001100 *10009a9e0400dc560b080000000010000c00c69e040034160b080000000010000c00f49e040000 *0000004300000012000000009f04007c1d10080c00000011000c00119f040051450a0800000000 *10000c003c9f04000c9f05080000000010000c006b9f0400f8420a080000000010000c00949f04 *00ece00b080800000011000c00ba9f04006ca411080000000010001000f19f0400483d0d082300 *000012000c001ba0040044b21108000000001000100044a00400e0ad1108000000001000100070 *a004003ceb04080000000010000c0092a00400acee11080400000011001000aea00400b43f1008 *c700000012000c00bca0040060cc11080000000010001000eaa00400805e10082600000012000c *00faa0040060210d081a00000012000c0024a1040044ec09080000000010000c0058a10400b814 *0f083000000012000c006aa10400f4a40e080800000011000c007fa1040044cc11080000000010 *001000aca10400e42408080000000010000c00eaa104002cb30d082900000012000c000da20400 *90dd0b080700000012000c0021a20400406710084900000012000c0036a2040088041208040000 *00110010005ba20400d8380a080000000010000c0084a204004cc711080000000010001000aca2 *040080f711080400000011001000c6a204006c050a080000000010000c00f5a2040014af110800 *0000001000100027a30400dcc20d082300000012000c0047a30400d88b0c080c00000012000c00 *5da30400b0c31108000000001000100091a30400801a08080000000010000c00c3a30400000000 *00d605000012000000cea3040004c40c080c00000011000c00e8a3040038090a08000000001000 *0c000fa40400484b07080000000010000c0032a40400684205080000000010000c005da40400cc *e90b080800000011000c0086a4040048b211080000000010001000aca404004c860d080c000000 *11000c00d6a40400d8050c080800000011000c00efa40400fcfb05080000000010000c0024a504 *00f8b11108000000001000100049a50400741505080000000010000c0071a50400a67810081300 *000012000c0082a50400ec9a0b080700000012000c00a0a5040060ed0b080800000011000c00ba *a50400b4da11080400000011001000d9a504005c6810081e00000012000c00efa504000c390f08 *1000000011000c0006a604002cf10c081000000011000c0027a6040004690c081000000011000c *004da60400f0850b080000000010000c0075a60400e4220b080000000010000c009fa604007041 *0a080000000010000c00c7a60400ac7e0b080000000010000c00f3a60400d0bb09080000000010 *000c0029a70400d44307080000000010000c0051a70400b4300c080800000011000c006ca70400 *9a0410081c00000012000c007ea70400e80610080100000012000c008ba70400c0081208040000 *0011001000b0a70400a05e0c080600000012000c00dda704003c5206080000000010000c000ba8 *040094d30e085400000012000c003aa80400ec060e080c00000012000c0051a80400a4200d0808 *00000011000c007ca8040024bf09080000000010000c00b5a804001ca611080000000010001000 *e5a804003cdf110804000000110010000da9040098bc0c082300000012000c0028a90400fccf11 *08040000001100100056a90400f41f0d085400000012000c007fa904002c170b08000000001000 *0c00bea9040028810d080800000011000c00dda90400407b08080000000010000c0019aa0400f4 *cf0c080c00000011000c002eaa040060a71108000000001000100058aa04008898050800000000 *10000c0081aa0400889805080000000010000c00a9aa0400e4df11080400000011001000cdaa04 *00546207080000000010000c00f2aa040014e10d08a700000012000c0012ab040018d211080400 *00001100100027ab040090800c082000000012000c0047ab040051dc0f08ac00000012000c0057 *ab0400684807080000000010000c007cab040068f91108040000001100100099ab0400288e0d08 *0c00000011000c00c0ab04008cea11080400000011001000e6ab0400f0f5110804000000110010 *0009ac0400701c0d080800000011000c0027ac0400f8d61108040000001100100051ac04003c37 *0c084500000012000c007eac040094670a080000000010000c00b0ac040020f711080400000011 *001000caac0400fcc40c080800000011000c00eeac0400455810080600000012000c0007ad0400 *9ced0b080800000011000c001fad0400e0c31108000000001000100050ad040080960f085b0000 *0012000c0064ad040078021208040000001100100087ad040040220f081800000011000c00b0ad *0400a0fb11080400000011001000cead0400a9d60f081b00000012000c00dbad040070f5110804 *00000011001000fead040068b509080000000010000c0032ae0400f89705080000000010000c00 *59ae04006c2a0d082000000012000c008aae040030db11080400000011001000a8ae04006cb80c *082300000012000c00c1ae040000f711080400000011001000dbae040030980e08200000001200 *0c00f1ae040000000000400000001200000004af040004e41108040000001100100029af04005c *c71108000000001000100053af040098bc0c081000000011000c006daf04007807120804000000 *1100100083af04000ce50e080c00000011000c00b1af04005cdd0b080300000012000c00d1af04 *0088d311080400000011001000eaaf0400b4db1108040000001100100006b0040074f40e080c00 *000012000c0025b00400106107080000000010000c004ab00400f4ca0e082500000012000c0063 *b0040010dc0c080c00000012000c0077b0040094d81108040000001100100095b00400a4800a08 *0000000010000c00c6b0040080380f083000000012000c00e1b0040094970a080000000010000c *000db1040010110c087200000012000c002ab10400e4db1108040000001100100046b104002cbc *0b08b300000012000c0060b10400b8200f080800000011000c007cb1040048fb0d080c00000011 *000c009db1040004dd0c080800000011000c00b1b10400a42d0c080800000011000c00d0b10400 *98a30e080800000011000c00e5b10400c8b005080000000010000c000db2040028fa0e085b0000 *0012000c0025b20400741e0d081800000011000c003cb2040024300f085b00000012000c0052b2 *04003c8d0d084300000012000c007db2040024d911080400000011001000a5b204008cf3110804 *00000011001000d6b20400a8ce0e084c00000012000c00f0b2040038a00e080c00000011000c00 *0ab30400f4440a080000000010000c0038b30400f4fc110804000000110010005cb30400d4a211 *08000000001000100080b3040078e00e080c00000011000c00abb3040020f01108040000001100 *1000c2b30400981005080000000010000c00e4b30400f82b0f080c00000011000c0006b4040038 *130d084300000012000c0024b4040080d20f081b00000012000c0033b4040020bc0b0808000000 *11000c004fb4040048ed0c085400000012000c006db4040034cd05080000000010000c0098b404 *0030280e080800000012000c00c2b40400a0850b080000000010000c00eab4040004f311080400 *00001100100014b50400a45f0c081000000011000c0042b50400fc8b0b080000000010000c0070 *b50400000000003b3b00001200000084b50400581c0e082f00000012000c00aeb50400644a0c08 *0700000012000c00cbb50400f4bd0b080300000012000c00eab5040058c409080000000010000c *0027b60400d4cf1108000000001000100053b60400f87a08080000000010000c008db6040054fb *11080400000011001000adb6040038ce0c082000000012000c00c4b604001de90f085200000012 *000c00d7b60400ecdf0d080800000012000c00ebb604004cec110804000000110010000fb70400 *f0db0b080c00000011000c0026b70400c0380b080000000010000c0052b7040028610f08080000 *0011000c006cb704000cf9110804000000110010008ab70400c8f011080400000011001000a9b7 *04002cf70d080300000012000c00ccb70400304b07080000000010000c00f9b7040048ed0c080c *00000011000c0016b804003c4107080000000010000c0038b80400408c0c080c00000011000c00 *51b80400b4e90b080300000012000c0079b80400c46910081e00000012000c008fb80400b8820c *080c00000011000c00b6b80400385d0c081000000011000c00dfb8040068aa0b08200000001200 *0c00f8b80400a0360b080000000010000c0028b90400204507080000000010000c0055b904009c *ae110800000000100010007fb90400f4f811080400000011001000a7b9040018de110804000000 *11001000c8b90400ec980b080700000012000c00eab9040078200a080000000010000c0013ba04 *005ceb09080000000010000c0040ba0400ccd61108040000001100100069ba0400c4f311080400 *0000110010009eba0400dc560b080000000010000c00c9ba040070470e080c00000012000c00f6 *ba040014ea0e081000000011000c001dbb0400f8f9110804000000110010003dbb040024cf1108 *000000001000100072bb040064820f080800000011000c0085bb04004cde110804000000110010 *00b1bb0400d8a60e080800000011000c00c6bb040028d00e080c00000011000c00e0bb0400f040 *0a080000000010000c0007bc0400a8d31108040000001100100020bc04007c580a080000000010 *000c004ebc040044d50e085600000012000c007abc0400d0b80e084000000012000c0096bc0400 *94c811080000000010001000cabc04005c1005080000000010000c00eebc040000000000320500 *0012000000f9bc0400a43810089c00000012000c0003bd040020eb0b080c00000011000c0016bd *040064d11108040000001100100031bd0400301905080000000010000c0051bd040058c3110800 *0000001000100084bd040024d811080400000011001000a1bd0400d0b30e080c00000011000c00 *bdbd040028bd09080000000010000c00ebbd0400001805080000000010000c0011be0400d0fa11 *08040000001100100042be040070a90e080c00000011000c0062be040020f31108040000001100 *10008ebe0400c03510080500000012000c009dbe0400cc320b080000000010000c00cbbe040034 *c61108000000001000100000bf0400dc720f083700000012000c0019bf0400082b0e0818000000 *11000c0042bf0400c4690c082000000012000c0068bf040034b70b085000000012000c0085bf04 *00dcd104080000000010000c00aabf0400fcf60d080300000012000c00d0bf0400000000007c00 *000012000000e3bf04006eb00f083800000012000c00f0bf040000fb1108040000001100100013 *c00400a82a0d082000000012000c0043c0040020d01108040000001100100065c0040000b40908 *0000000010000c0093c00400600012080400000011001000a9c004000caf0e080800000011000c *00c1c004006c330e080c00000011000c00eac004002cd311080400000011001000ffc0040020bc *120804000000110017000cc104004c200c080c00000012000c0026c10400f0050c085500000012 *000c003bc1040004f60e080800000011000c0050c10400c4910c080c00000011000c0067c10400 *f0300c080800000011000c0080c1040064f6110804000000110010009dc10400e4e51108040000 *0011001000bcc1040064de11080400000011001000e7c10400c0970c080800000011000c00fec1 *0400245a0b080000000010000c002bc2040054070a080000000010000c0054c20400c0b7090800 *00000010000c0084c204008cb40b080700000012000c009ac20400ece011080400000011001000 *c4c20400989f0f080800000011000c00d7c20400acf31108040000001100100008c30400a4000d *083a00000012000c0029c30400bc260b080000000010000c0059c3040018081208040000001100 *10007cc3040000061208040000001100100092c3040008860b080000000010000c00bec3040024 *bc12080400000011001700d2c304003c9f05080000000010000c0004c4040000c4110800000000 *1000100047c4040010730e085b00000012000c0064c40400e45010081a00000012000c0077c404 *00e0f0110804000000110010008dc4040088ed11080400000011001000a7c40400e4290d080c00 *000012000c00d5c4040090140a080000000010000c00fbc4040044001208040000001100100013 *c5040044d10e080800000011000c0028c50400c4f50d082000000012000c0042c5040074e11108 *04000000110010005bc5040064d7110804000000110010007ac50400f9bb0f080800000012000c *0088c5040004dd11080400000011001000abc5040099ac10082600000012000c00b8c5040064f1 *11080400000011001000cfc5040044f70d080300000012000c00f6c50400b8f20c080c00000012 *000c0017c6040078200a080000000010000c003fc60400186b0c080800000011000c006bc60400 *784305080000000010000c00a0c60400fc2310080c00000011000c00b3c6040010d21108040000 *0011001000cdc60400a4d811080400000011001000e7c6040084230f080800000011000c0015c7 *04003c0d0d085b00000012000c0032c70400949b0d081000000011000c004fc70400f8420a0800 *00000010000c0077c7040018240a080000000010000c009ec704005c260d085300000012000c00 *c9c704006c5f0d080800000011000c00fac70400286b0c080600000012000c002ac804004c0410 *081a00000012000c003fc80400aca2110800000000100010006ac80400085e0f08100000001100 *0c0085c8040048f0110804000000110010009bc80400c80512080400000011001000b1c8040048 *7e0f085100000012000c00d4c80400c4ed11080400000011001000fac8040078370a0800000000 *10000c0023c9040098dd0b086900000012000c0038c904004cc91108000000001000100070c904 *0094cc0e082500000012000c008ac9040004140e085b00000012000c009dc90400580612080400 *000011001000b3c904001cbe0b080700000012000c00c8c904008c440a080000000010000c00ee *c90400a4e50f082d00000012000c0001ca0400ec060c080300000012000c001bca040090e90b08 *0300000012000c003eca040080d21108040000001100100059ca0400c4fe110804000000110010 *0073ca040084d71108040000001100100095ca040070dd11080400000011001000b4ca040008e7 *0b083700000012000c00caca040045791008fc0d000012000c00d9ca04003c0f0a080000000010 *000c0008cb04003cd51108040000001100100025cb040050dd0b080300000012000c0042cb0400 *6c050a080000000010000c0072cb040094dc1108040000001100100095cb040034df1108040000 *0011001000c2cb0400c8050c080800000011000c00dbcb04007cbf1108000000001000100018cc *0400901805080000000010000c003fcc0400e4300c080800000011000c005bcc0400dcef0d0810 *00000011000c007acc0400701b0d080c00000011000c0097cc0400dcba0a080000000010000c00 *cccc0400d0e30e085900000012000c00fbcc040094720e080c00000012000c001bcd040024fc0c *083d00000012000c0038cd040064950f085b00000012000c0059cd04003ce81108040000001100 *100084cd0400cc1d0e080c00000011000c00a5cd040084a40e080800000011000c00bacd040068 *e911080400000011001000f2cd0400d0011208040000001100100014ce040034160b0800000000 *10000c0043ce040014240c083d00000012000c005cce040028d41108040000001100100073ce04 *0000b9120804000000110017007dce0400d0fb1108040000001100100093ce040080040f080800 *000011000c00afce0400440d0f081000000011000c00c8ce0400b0fa0d080c00000011000c00e0 *ce0400d8c71108000000001000100017cf0400441205080000000010000c003ecf04004cd70e08 *0500000012000c0067cf04008cc3110800000000100010009fcf0400204510083d00000012000c *00b4cf040030bb12080400000011001700becf040017e50f088d00000012000c00d2cf04001ca1 *0f080800000011000c00e5cf040084370f080800000011000c0000d00400b8f111080400000011 *00100015d00400dce01108040000001100100040d00400c46910080800000011000c0055d00400 *56d90f087000000012000c0066d00400b0f41108040000001100100088d0040028e81108040000 *0011001000b4d004004cce0b080c00000011000c00d9d00400603310080e00000012000c00e9d0 *040004cd1108000000001000100019d1040048ec09080000000010000c003fd10400b099040800 *00000012000c0046d10400083310080600000012000c005ad10400acea11080400000011001000 *80d10400b8f9110804000000110010009fd104008c690e080c00000011000c00bfd1040028cd0d *080500000012000c00ded10400c05e0c080600000012000c000cd2040078f60e085b0000001200 *0c0024d20400fc830a080000000010000c0057d20400bcf5110804000000110010007bd20400f4 *d2110804000000110010009dd20400bc6007080000000010000c00c4d20400e0910c0810000000 *11000c00d9d2040038d811080400000011001000f5d20400c4d4110804000000110010000fd304 *00fcfe0b080c00000012000c0024d3040098e31108040000001100100042d30400e4c511080000 *00001000100070d30400b02a07080000000010000c0093d30400aca911080000000010001000c5 *d30400b88a0e080800000011000c00e0d3040028480e080c00000012000c000dd40400d4890d08 *1100000012000c0034d40400d44307080000000010000c005bd4040000b2110800000000100010 *0085d404004cd2110804000000110010009fd4040030e911080400000011001000d0d404007c8c *0b080000000010000c00fed40400cf7810080100000012000c0010d5040008f611080400000011 *00100031d50400c0f7110804000000110010004bd5040038070e080c00000012000c0068d50400 *240a0d081000000011000c007ed50400b88a0e085700000012000c009ad50400b82f0e08180000 *0011000c00c3d504002c210e080c00000011000c00e5d50400381e0e085b00000012000c0007d6 *040054e00b087d00000012000c0022d60400c4d6110804000000110010004bd6040060c2090800 *00000010000c0089d6040044d90b080c00000011000c009cd60400986007080000000010000c00 *c5d60400e9bb0f080800000012000c00d6d6040050d911080400000011001000ffd60400e00312 *08040000001100100022d70400b8cd0e085500000012000c003ed7040088270b08000000001000 *0c0063d7040084060a080000000010000c0092d704009c0710082c00000011000c00a0d7040084 *550f082f00000012000c00b4d7040048150e085b00000012000c00cad70400a8df110804000000 *11001000fcd7040014290d080c00000011000c0028d80400a8ca0c080c00000012000c003dd804 *00dc4b0a080000000010000c0072d8040014340a080000000010000c009ad804000cef09080000 *000010000c00bfd80400a0fd11080400000011001000d8d8040050890c080300000012000c0003 *d90400307e0c082300000012000c001cd90400d0c80b080700000012000c0030d90400b4410708 *0000000010000c0053d90400f4910f085b00000012000c0067d90400e0d6110804000000110010 *0098d9040040f511080400000011001000bbd9040014760d082600000012000c00dbd90400a0e3 *11080400000011001000fdd90400dcd11108040000001100100015da0400988e0b080c00000011 *000c0040da0400d87d0f085b00000012000c0061da040018a00c083200000012000c0088da0400 *444307080000000010000c00b0da040024fb11080400000011001000d5da04001cb00c084b0000 *0012000c00efda0400b0f70d080600000012000c0016db0400f42e0c080c00000012000c0031db *04001c0910080c00000011000c003fdb0400b8d0110804000000110010005ddb040028e1110804 *0000001100100083db04005cb211080000000010001000aadb0400dc330e085000000012000c00 *d6db040050da11080400000011001000f2db040074dc110804000000110010000adc040010110c *081000000011000c0026dc04000ce909080000000010000c005adc0400a8f81108040000001100 *100070dc04002c330e080800000011000c009fdc0400504e07080000000010000c00c4dc040030 *2e0c082900000012000c00e0dc040004a70b080800000011000c0008dd040044d5110804000000 *1100100025dd04001c0910084001000012000c0032dd040018d0110804000000110010005ddd04 *0098c41108000000001000100092dd040038d411080400000011001000aadd040080a411080000 *000010001000d7dd0400101f0e085b00000012000c00fadd040088250d082600000012000c002b *de040050170b080000000010000c005dde040080aa0e080500000012000c007fde04002cb30d08 *1000000011000c00a1de040088dd0c080800000011000c00b5de0400d8610b080000000010000c *00e6de040028f21108040000001100100004df0400403c0a080000000010000c002bdf0400f82b *0f082600000012000c004edf0400288e0d080c00000012000c0076df040074610b080000000010 *000c00a7df0400d4390e080c00000011000c00d5df04000c6c10080c00000011000c00e7df0400 *78c3110800000000100010001ae004007cf909080000000010000c0046e004004c8c0f085b0000 *0012000c0067e00400d89805080000000010000c0091e0040098e011080400000011001000b0e0 *040018620f082000000012000c00c4e004006deb0f081c00000012000c00dce004000c1c0e082a *00000012000c00fee00400e8960c085b00000012000c0015e10400b02e0b080000000010000c00 *43e10400280810080800000011000c004fe104006fd40f082100000012000c0068e1040008bc0b *080300000012000c0085e1040048a70e085b00000012000c009be1040080610d080c0000001100 *0c00bce104004c0710082400000012000c00cee1040064e91108040000001100100009e2040050 *f70d080800000011000c002ce204003cdd1108040000001100100053e2040090310c08db000000 *12000c0066e20400b97810081600000012000c0075e20400e8420e080c00000012000c00abe204 *00ccd111080400000011001000c7e2040014e10d081000000011000c00e6e2040018fb11080400 *0000110010000be30400b8cd0e081000000011000c0026e3040070fa0f082200000012000c003a *e304002ec00f082700000012000c0049e30400e8060a080000000010000c0070e3040030c40508 *0000000010000c00a1e3040028690f081000000011000c00b5e30400a0f7110804000000110010 *00cfe3040054b30b085200000012000c00ebe30400a8051208040000001100100010e404006ca5 *0d081000000011000c0036e4040078210c082300000012000c0053e4040014170b080000000010 *000c0091e40400c44205080000000010000c00bde4040058d40e080c00000011000c00e6e40400 *30b10e085900000012000c00fbe40400b4ca0d085b00000012000c0015e5040024fc0c08100000 *0011000c0031e50400144810089500000012000c0044e50400404205080000000010000c006be5 *0400a8f20e080500000012000c008be50400e05e0c080600000012000c00bce5040014050d0817 *00000012000c00dae50400385d0c082000000012000c0004e604004cea11080400000011001000 *2be6040058091208000800001100100040e6040000cd0c082300000012000c005de60400c48f0f *085100000012000c0080e6040000eb0e080800000011000c00a1e6040054f21108040000001100 *1000b8e60400b8050c080800000011000c00cee6040028f811080400000011001000ece604007c *fe1108040000001100100002e70400a4ce0c080c00000011000c0017e70400e0e10b0854000000 *12000c0030e7040089bb0f080b00000012000c003de70400dcea1108040000001100100064e704 *00206810080800000011000c0079e70400bc5c10080800000011000c008ce7040010da11080400 *000011001000a9e70400c88a0f085b00000012000c00cae70400c8fd0e085b00000012000c00e2 *e704007cfd1108040000001100100007e80400b0070d080c00000012000c001fe804005cd71108 *04000000110010003de8040018310f085900000012000c0058e80400cc920f085100000012000c *007be804002cf311080400000011001000a7e80400407b08080000000010000c00e2e80400c8d5 *11080400000011001000fee804001bcd0f080600000012000c0016e9040016b10f083800000012 *000c0022e9040014dc0b080800000011000c003ee90400cce70b088700000012000c0055e90400 *2003120804000000110010007ae90400888f0d082000000012000c0090e9040058170508000000 *0010000c00b9e90400e4110f080c00000011000c00cee90400f0cf11080000000010001000fce9 *0400f4d4110804000000110010001aea040034830f085b00000012000c003bea040090680c080c *00000011000c0069ea040014450a080000000010000c0095ea0400b01805080000000010000c00 *beea0400c8e811080400000011001000e6ea0400601d0e085b00000012000c0008eb0400ecee0c *085400000012000c0030eb0400bc6007080000000010000c0058eb0400b4a21108000000001000 *100079eb040064f20c080c00000012000c0096eb040058d911080400000011001000bdeb040014 *a211080000000010001000e4eb040088310f085900000012000c00ffeb0400705d100808000000 *11000c001bec0400b8001208040000001100100040ec040088e01108040000001100100064ec04 *0074e80b080c00000011000c007bec0400c8850b080000000010000c00a2ec0400a80312080400 *000011001000c7ec040074e50e086000000012000c00faec04007ca10d085600000012000c001c *ed040000dd0b080800000011000c0036ed040008170b080000000010000c006bed04006c3d0a08 *0000000010000c0094ed0400505610081000000012000c00aaed040048c9110800000000100010 *00d6ed040030f711080400000011001000f0ed04007ca30b080c00000011000c000fee0400fcc3 *1108000000001000100050ee04008cc30e082300000012000c0065ee040080f011080400000011 *0010007bee0400f4c511080000000010001000adee040098b709080000000010000c00daee0400 *c88508080000000010000c0016ef0400a8c31108000000001000100046ef040094a70f08080000 *0011000c0066ef0400bcd41108040000001100100082ef0400799a04080000000010000c0092ef *0400e0f10c080800000011000c00afef040094d011080400000011001000cfef040058b6090800 *00000010000c00fdef0400c0f11108040000001100100012f0040088e00d085d00000012000c00 *3af00400a4970b087d00000012000c0057f00400e0580b080000000010000c0084f004006c6310 *080800000011000c0097f00400ecd011080400000011001000aff00400ec500f080c0000001100 *0c00c8f00400f0f411080400000011001000ebf00400f05e0c080800000011000c001af1040084 *3d0c084600000012000c003df1040080b20e085b00000012000c005af10400381c0e0805000000 *12000c007bf1040038070e080c00000011000c0097f1040034170e082000000012000c00adf104 *0020220e084300000012000c00c8f1040088b809080000000010000c00fbf10400a04010082200 *000012000c0014f2040004a10b083700000012000c002ef2040020dd1108040000001100100044 *f20400b08d0b087300000012000c0062f20400c0160b080000000010000c0095f20400ec3a1008 *c100000012000c00a2f2040030e00b080300000012000c00bef20400a46007080000000010000c *00e6f20400b0f81108040000001100100002f304002c8c0b080000000010000c002ff3040090a8 *110800000000100010005af30400106910081e00000012000c0070f30400d8e70e080c00000011 *000c0092f3040028960d085900000012000c00a8f304006cc311080000000010001000ddf30400 *70f011080400000011001000f4f30400b4770c080c00000011000c0011f4040040b21108000000 *001000100036f40400dc880f085b00000012000c004af40400d8160b080000000010000c0081f4 *04003c1e0f081700000012000c009ff4040078910e081800000011000c00c6f4040084c30b0807 *00000012000c00e2f40400a0bb12083400000011001700ecf4040094dd11080400000011001000 *13f504003cff0b080c00000011000c0029f504008cb70a080000000010000c0057f50400e4b111 *0800000000100010007cf504008c6f0f082f00000012000c0090f5040080510f080c0000001100 *0c00a2f50400385c0a080000000010000c00dff50400bcda11080400000011001000f8f504000c *d1110804000000110010001df6040068cc110800000000100010004cf60400e4bc0c0827000000 *12000c0069f60400d06107080000000010000c0092f6040038cd0b080c00000011000c00aaf604 *00d09705080000000010000c00d4f60400b0d311080400000011001000ebf6040068d211080400 *00001100100006f70400cce80b080800000011000c0027f70400b0070d080c00000011000c003e *f70400786a10080800000011000c0054f7040084670e084000000012000c0078f70400b4e01108 *04000000110010009df70400688d0f080800000011000c00b0f70400c0f6110804000000110010 *00caf70400dce311080400000011001000eff7040024450a080000000010000c001ef80400c0ba *120808000000110017002ef8040078f60e080800000011000c0045f804001cc811080000000010 *00100078f804005004120804000000110010008ef80400d4850f080800000011000c00a1f80400 *f01a08080000000010000c00d0f80400ece311080400000011001000eff8040070d61108040000 *00110010001bf9040000000000470000001200000030f904004c00120804000000110010004af9 *040040bc1208780000001100170059f9040030f4110804000000110010007ef9040040210d0811 *00000012000c00a8f90400202d0a080000000010000c00d4f9040058bb11080000000010001000 *12fa040028101008d401000012000c001ffa040030d01108040000001100100042fa0400b0a80f *080800000011000c0055fa0400e0e81108040000001100100086fa04005c920f085b0000001200 *0c00a7fa040014f50d080c00000011000c00bffa0400c4cd0b080c00000011000c00d3fa04008c *1e0f080c00000011000c00f0fa0400b85b0e084400000012000c0014fb0400f4c3110800000000 *100010004ffb040014b70e082000000012000c0063fb040010f7110804000000110010007dfb04 *00f0400c080700000012000c009bfb040070a711080000000010001000c4fb0400fc310f081000 *000011000c00ddfb0400ecea1108040000001100100004fc040084b90b080600000012000c0025 *fc0400b8860c081000000011000c004dfc040028a90e080800000011000c0074fc0400ccf60d08 *0c00000011000c0091fc040094240d080c00000011000c00bafc0400e4dc0b080300000012000c *00d8fc04003ee20f082300000012000c00e9fc040098a60b082f00000012000c0003fd0400bcc3 *1108000000001000100035fd04000c5c06080000000010000c005ffd0400e8ec11080400000011 *0010007efd040040001208040000001100100096fd0400d05210080f00000012000c00a9fd0400 *004c0f082000000012000c00c9fd040098960d080c00000011000c00defd0400a8e90b08030000 *0012000c0003fe04008cd41108040000001100100020fe0400a44b10089500000012000c0037fe *040064d60b083600000012000c0057fe040004980f080800000011000c006afe040054710f0820 *00000012000c0080fe0400d4340f083000000012000c0096fe040000310c080700000012000c00 *a8fe040020170b080000000010000c00e7fe040070d0110804000000110010000aff040008ed0f *085900000012000c0019ff040088dd0c085b00000012000c002eff0400202f0c080c0000001200 *0c004cff0400bdf80f089300000012000c005aff0400d4fb0c080c00000011000c006fff040000 *000000d30000001200000083ff040030bc1208040000001100170091ff04004ce7110804000000 *11001000b1ff04005c290c081000000011000c00cbff04000cbe0b080800000011000c00ebff04 *006c320c080700000012000c0001000500004707080000000010000c0024000500fcd211080400 *0000110010004400050054250d080c00000011000c0073000500c09e05080000000010000c00a0 *000500600812080400000011001000c4000500d00712080400000011001000e700050074640608 *0000000010000c00110105000c9d0b080c00000011000c00410105000cb2110800000000100010 *006b010500544207080000000010000c0092010500a0ec11080400000011001000b701050028f5 *11080400000011001000da0105006ca50d082900000012000c0001020500f0d911080400000011 *0010001e020500346207080000000010000c00420205006cbf0f08c200000012000c004a020500 *dceb1108040000001100100070020500c4ab0e080c00000011000c00840205001ce01108040000 *0011001000b2020500707d0f080800000011000c00d2020500c8780e085b00000012000c00ee02 *0500f05f07080000000010000c0017030500701c0d085b00000012000c0036030500680a1008d4 *01000012000c004303050050fc1108040000001100100063030500cc4207080000000010000c00 *8a030500cc5106080000000010000c00b3030500a4cb11080000000010001000e403050038ef11 *080400000011001000fb0305009ced0b080300000012000c001404050088730f085b0000001200 *0c0035040500005f0c080600000012000c0068040500b0190f080300000012000c008d040500c4 *ec0e080c00000011000c00b004050070970d086e00000012000c00c9040500e861070800000000 *10000c00f6040500d85f07080000000010000c0018050500445f0f085b00000012000c00390505 *00f05e0c080600000012000c006905050080db0b083900000012000c007c050500f80012080400 *0000110010009f050500a4d611080400000011001000d00505002c9a0b080700000012000c00ee *0505004dec09080000000010000c0015060500a0210f081800000011000c003d060500e0f50e08 *0500000012000c00570605003ccc11080000000010001000900605008c6b10080c00000011000c *00a2060500fca40f085100000012000c00c5060500ec240d080c00000011000c00ee060500c4eb *0b080c00000012000c0005070500404205080000000010000c002d07050018740e083e00000012 *000c004f07050098e51108040000001100100064070500f4f00c081000000011000c0087070500 *e4110f080c00000012000c009d070500949d0d080800000011000c00b1070500288a0d08180000 *0011000c00d20705005c030c082000000012000c00e907050074170b080000000010000c002008 *0500c0d6110804000000110010004b08050000a00f080800000011000c006b08050018ca0c080c *00000012000c007f08050000380e080c00000011000c00ab0805003caa0d080500000012000c00 *cd08050015bb0f082300000012000c00da0805004cfb11080400000011001000fe08050078d611 *0804000000110010002a09050028b909080000000010000c005d09050004d31108040000001100 *10007a09050094cc0e081800000011000c009309050040e211080400000011001000b20905009c *970b080700000012000c00ce090500446d0e085400000012000c00e9090500649c0c0844000000 *12000c000c0a0500f0990f080800000011000c002c0a0500689b0c081800000011000c00430a05 *00ac1e06080000000010000c00740a050024fe0d085b00000012000c00910a05004c860d084300 *000012000c00bc0a05005cde0b080700000012000c00cf0a050024bc0b080700000012000c00e8 *0a05008c170b080000000010000c001e0b050038320a080000000010000c00450b05009c651008 *0800000011000c00590b0500900810087d00000012000c006c0b0500583110080c00000011000c *00920b0500781e0a080000000010000c00b90b0500e48b0f080800000011000c00cc0b050010fb *0b080c00000011000c00e00b050040f80d080800000011000c00030c05001ce411080400000011 *001000230c0500c0fd110804000000110010003f0c05005cb111080000000010001000630c0500 *a8d5110804000000110010008b0c0500f86007080000000010000c00b30c0500006a10081e0000 *0012000c00ca0c0500180412080400000011001000e00c0500f09805080000000010000c00070d *050074dd0b080800000011000c00240d0500c86110084900000012000c00380d0500a02f0f085b *00000012000c00540d0500185010081e00000012000c00690d050008f109080000000010000c00 *960d050078f611080400000011001000b60d0500b8460e080c00000011000c00e10d05002c800e *085b00000012000c00050e0500001e0c080800000011000c00230e050098011208040000001100 *1000480e0500c47f0f085b00000012000c00690e05008c9f05080000000010000c00890e0500a4 *9905080000000010000c00b80e0500fc310f083000000012000c00d20e050024e90b0808000000 *11000c00f60e050008b609080000000010000c00280f0500c003120804000000110010003e0f05 *000cbf0b087300000012000c005b0f0500f3b90f082000000012000c00680f0500e4e711080400 *000011001000930f0500b0d711080400000011001000b70f050034b20b082500000012000c00d3 *0f050068ef11080400000011001000eb0f0500ecc40c080600000012000c000f1005002c4f0c08 *2000000012000c0038100500fcfe0b081000000011000c004c1005005c1d0a080000000010000c *0071100500141610082a02000012000c007f100500c8860a080000000010000c00b2100500ecf6 *0e085b00000012000c00ca100500c0200e080c00000011000c00ec100500f44207080000000010 *000c001211050040031208040000001100100028110500a0ac0e080c00000012000c003e110500 *ccea1108040000001100100065110500fc8c0c080c00000011000c007d1105007c8c0b08000000 *0010000c00aa11050078d311080400000011001000c611050048f60d080c00000011000c00e111 *0500fce3110804000000110010000a12050000d70f081b00000012000c001d120500c0bb0b080c *00000011000c0032120500a8ba120804000000110017003e120500d43510080c00000011000c00 *4d1205000c250d081300000012000c007712050088d9110804000000110010008c12050014ee11 *080400000011001000b5120500c8810c080300000012000c00d7120500d4630c08230000001200 *0c00fe12050060d11108040000001100100017130500c0e90b080800000011000c003d130500ac *4c0c080c00000011000c0064130500d4b0110800000000100010008a13050074d70e0805000000 *12000c00b313050010a40e080800000011000c00c8130500aca10e080800000011000c00dc1305 *00bc4b0e080c00000011000c00111405002c330e080600000012000c0041140500000000006305 *0000120000004c14050058970f085100000012000c006f14050048f80e085b00000012000c0087 *140500d80212080400000011001000ac140500a8ce0e081000000011000c00c514050068f70d08 *0300000012000c00f0140500e81e0d080700000012000c000915050038b2110800000000100010 *002d15050084a71108000000001000100062150500c0af0f083800000012000c006f150500cc18 *0c081000000011000c008915050048160b080000000010000c00c2150500005110081a00000012 *000c00d6150500f0db0b080c00000012000c00ee1505005ca60e085b00000012000c0004160500 *d0b812080400000011001700131605006cc90b082d00000012000c002a1605005ccc1108000000 *00100010006116050030f0110804000000110010007b16050028d8110804000000110010009316 *05003c460f085400000012000c00bb160500541e0d080500000012000c00d2160500f051070800 *00000010000c00f916050088d61108040000001100100028170500e0ee11080400000011001000 *461705007cd00b080c00000011000c005e17050030db0b080c00000012000c007317050048ff0c *080c00000011000c0095170500e0d811080400000011001000b01705007c201008720300001200 *0c00c11705000cad0e080c00000011000c00d817050030d40e081900000012000c0002180500e0 *ce1108000000001000100032180500d0bb09080000000010000c006718050078810e085b000000 *12000c007f180500e4a911080000000010001000b418050044d90b082300000012000c00c81805 *00f0810e085b00000012000c00e8180500c8050c080600000012000c00021905006c9f05080000 *000010000c003c190500c46107080000000010000c00681905009c6510084900000012000c007d *190500b0fc110804000000110010009419050004a30d087200000012000c00b5190500441b0808 *0000000010000c00e2190500b8840f085b00000012000c00031a0500788e0d080c00000012000c *002b1a0500201805080000000010000c00551a0500f0220e080c00000012000c006b1a0500c4e7 *11080400000011001000961a050074650c080c00000011000c00c11a050038c911080000000010 *001000f11a0500986007080000000010000c001b1b0500605610088d00000012000c00291b0500 *58530f085900000012000c003f1b050018a00c081000000011000c00651b050008670a08000000 *0010000c00981b050094240d082100000012000c00c21b0500001e0c080300000012000c00e11b *050020cc11080000000010001000101c0500388b0f081000000011000c00331c050004370f080c *00000011000c004f1c05000ce011080400000011001000731c0500b0df0b086900000012000c00 *891c05002cc40b085f00000012000c00a81c0500f8b80f082f00000012000c00b41c0500bcb111 *080000000010001000e41c050094110e080c00000012000c00fa1c050000021208040000001100 *10001f1d050034ed11080400000011001000451d0500f0e4110804000000110010005e1d050020 *0612080400000011001000811d0500f0dd11080400000011001000a11d05008c440a0800000000 *10000c00c81d0500b0710e085b00000012000c00eb1d0500000000007f00000012000000fe1d05 *00b0b809080000000010000c002d1e0500101805080000000010000c00541e0500b0d70e080c00 *000011000c007d1e0500006207080000000010000c00a51e0500884807080000000010000c00ca *1e050024450a080000000010000c00fa1e0500a4e011080400000011001000241f0500c8de1108 *04000000110010004d1f0500dcb111080000000010001000731f050038f2110804000000110010 *008f1f0500a4b90b080600000012000c00ad1f0500cccf11080000000010001000dc1f05005060 *07080000000010000c0004200500c0030e080c00000012000c001c200500e4e011080400000011 *00100049200500000000000d020000120000005b2005006c9b0e080c00000011000c0076200500 *d05207080000000010000c009a2005000c7410084f00000012000c00b1200500ccf81108040000 *0011001000cf200500c8e20f084f02000012000c00df200500dc6c0e080800000011000c00fe20 *050028690f082000000012000c001321050014ce1108000000001000100043210500d8910e0805 *00000012000c006a21050088f01108040000001100100092210500e84e0c083700000012000c00 *bc210500dcba0a080000000010000c00f0210500440c0d080c00000011000c000c220500646107 *080000000010000c0036220500d4a411080000000010001000632205006c1d0f085b0000001200 *0c0081220500c4b611080000000010001000b2220500f4db11080400000011001000dc220500dc *d20b080c00000011000c00f62205000c1e0c085500000012000c000b23050038170b0800000000 *10000c0048230500c4d011080400000011001000652305006c4307080000000010000c008f2305 *000ce111080400000011001000a72305005cf111080400000011001000c623050030c20c080c00 *000011000c00dc230500c86007080000000010000c0007240500d4b11108000000001000100034 *24050054cd1108000000001000100066240500a4d0110804000000110010007f240500ec060c08 *0800000011000c0098240500402b0e082000000012000c00c8240500c002120804000000110010 *00eb24050044eb09080000000010000c00112505005dcf0f080800000012000c002125050034e3 *0e080c00000011000c004f25050028b409080000000010000c0080250500446d0e080c00000011 *000c009a250500e41a10080c00000011000c00aa2505006c2a0d081000000011000c00da250500 *7ccb0c080c00000011000c00f6250500b04b0c080c00000011000c001f260500a09e0508000000 *0010000c004c2605009c0e0c082000000012000c00622605008cdd0b080800000011000c007e26 *0500c0680f080c00000011000c00a12605009cc50b080700000012000c00c326050060820e080c *00000011000c00e5260500e4130e080800000011000c0000270500fc9d0d080c00000012000c00 *1627050030c91108000000001000100044270500e43a10080600000012000c005927050070d20e *085b00000012000c008427050054471008be00000012000c009b270500248e0c080c0000001200 *0c00b1270500a4c40c080800000011000c00d4270500946107080000000010000c00fd270500ac *4c0c080c00000012000c002528050054c705080000000010000c00582805006cc7110800000000 *1000100088280500f8de0e081000000011000c00b3280500c09e05080000000010000c00e12805 *00a4dc1108040000001100100000290500a0290e080800000011000c00282905001ceb11080400 *0000110010005029050084fb0c082000000012000c006d2905004cea0a080000000010000c009d *2905005c9f05080000000010000c00d3290500d44c10089500000012000c00e429050050840f08 *5b00000012000c00f829050044a90e080600000012000c00212a050098dc110804000000110010 *00412a0500e43b0f081000000011000c00582a050030df11080400000011001000852a050080ec *0b080c00000011000c00972a0500c47f0f080800000011000c00b72a0500e0fc0e085b00000012 *000c00cf2a0500c0fb0d081000000011000c00e32a050060df110804000000110010000c2b0500 *10750c085a00000012000c00262b050038120f082700000012000c00402b0500b8b90b08560000 *0012000c005b2b0500b06007080000000010000c00872b0500e8960f085b00000012000c00a82b *050068ed11080400000011001000c82b0500f86c10080c00000011000c00da2b0500d435100829 *00000012000c00e82b050004fa0c080c00000011000c00002c050050d511080400000011001000 *1d2c0500b80d0d085b00000012000c00412c050050e611080400000011001000652c050058ef11 *0804000000110010007d2c0500b0de11080400000011001000a92c0500eca21108000000001000 *1000d62c0500a0df110804000000110010000b2d050040fe0f081400000012000c00172d0500e4 *e90b080300000012000c00352d050035f70f088700000012000c00432d05006885050800000000 *10000c006b2d0500e0bc12080010000011001700762d050038fe11080400000011001000942d05 *0058b211080000000010001000b92d0500c8f311080400000011001000e82d050074f111080400 *000011001000032e05004cce0b083f00000012000c00292e0500c0a1110800000000100010003d *2e0500000000004c00000012000000542e0500d8450f085b00000012000c00762e050010e31108 *0400000011001000922e0500000000007f020000120000009d2e050090f4110804000000110010 *00c02e0500e8e011080400000011001000ea2e050024340d081000000011000c00192f050034d9 *11080400000011001000332f050060dc0b080300000012000c004e2f0500d0f111080400000011 *0010006d2f0500900612080400000011001000832f050000fe11080400000011001000a32f0500 *c8e211080400000011001000ca2f0500a02f0f080800000011000c00e52f0500788f0d08080000 *0011000c0002300500880112080400000011001000253005003c710e080800000011000c004630 *050040140f085900000012000c005b3005001ca30e080800000011000c00703005003cd8110804 *000000110010008b300500245b10080800000011000c009f30050034800f081000000011000c00 *c1300500fc1a0f080800000011000c00dd30050070b70d080500000012000c0001310500b45f0f *081000000011000c0023310500e0fb110804000000110010003b310500c0e91108040000001100 *10005e3105001c5610083100000012000c007331050000000000de000000120000008231050004 *cc0d080800000011000c0095310500d8e311080400000011001000ba31050044dc110804000000 *11001000ce310500a4640a080000000010000c000d32050094a811080000000010001000383205 *0088a90f081000000011000c005a320500284b0f085b00000012000c00753205002c9905080000 *000010000c009e320500000000006100000012000000af320500ec040f080800000011000c00cb *320500e48e0d080c00000011000c00f132050034770c080800000011000c000f33050018cc0508 *0000000010000c003e33050008d2110804000000110010005533050038860d080500000012000c *0076330500d0b60b080c00000011000c008d330500bd051008f300000012000c00a03305001000 *12080400000011001000c3330500b8ba0e080c00000012000c00e03305005c1a0e082f00000012 *000c0002340500b8e11108040000001100100019340500ec8f0c085900000012000c002e340500 *90f70b080c00000011000c004334050090001208040000001100100066340500b4400a08000000 *0010000c008c34050018ca0c081000000011000c009f34050044f211080400000011001000b634 *05002cf00b080c00000011000c00cf3405009cfe11080400000011001000e734050008fa110804 *0000001100100007350500749f0c081000000011000c0025350500f0d111080400000011001000 *3c3505000cf40e085b00000012000c005f35050058a806080000000010000c0089350500e00112 *080400000011001000ac3505007c9f05080000000010000c00d335050094a11108000000001000 *f1ffe6350500184310088400000012000c00f6350500d81c0d082300000012000c001336050048 *a70b080700000012000c002836050074cd110800000000100010004e36050064ab0b080c000000 *11000c00643605004c2d0c080800000011000c007f36050088a711080000000010001000af3605 *00480212080400000011001000d4360500c8780e080800000011000c00ef36050020c10e081000 *000011000c000737050038f5110804000000110010002a3705000ece0f088f00000012000c0038 *370500e8ac0b082000000012000c00513705001bd70f083b02000012000c005c370500a8030f08 *5b00000012000c0078370500b02d0c080800000011000c009a370500f97110089800000012000c *00ae370500f47e0f085b00000012000c00c1370500cc5106080000000010000c00e9370500501f *0f080800000011000c000538050050f90b080c00000011000c00193805003ce00b080300000012 *000c0032380500887c0c084400000012000c005238050030570b080000000010000c007e380500 *7c580a080000000010000c00ad38050000000000d800000012000000be380500000000001b0200 *0012000000cd380500b0fe0e085b00000012000c00e538050004de110804000000110010000539 *050080eb10085400000012000c001539050028a90e080300000012000c003d39050098d0110804 *0000001100100059390500dc0e0e080c00000011000c006b39050060600f082300000012000c00 *883905008cfd11080400000011001000ae3905000c250d080c00000011000c00d739050048fb0c *081000000011000c00f139050010cc11080000000010001000253a0500e0e11108040000001100 *10003f3a0500b0d811080400000011001000573a05000cd711080400000011001000813a050028 *1905080000000010000c00b13a050094d30e080800000011000c00df3a050090df110804000000 *11001000113b0500b4de0b083f00000012000c00293b0500c4cd0b080c00000012000c003e3b05 *00c4900c080c00000012000c005a3b0500ace311080400000011001000763b050098a711080000 *000010001000a63b050058d40e081900000012000c00d03b0500e0480e080c00000012000c00fd *3b0500142b0e080500000012000c00263c0500a86b0c087d00000012000c00413c0500743b0f08 *3000000012000c005a3c050038320a080000000010000c00823c0500b06007080000000010000c *00ad3c0500d4ba05080000000010000c00d33c050084a811080000000010001000f63c0500c84f *0f080c00000011000c00093d0500d05e0c080800000011000c00393d0500587310082c00000011 *000c004c3d0500a4b90b080800000011000c00693d05000000000010010000120000007e3d0500 *d0630f080c00000011000c00943d0500f8900b080c00000011000c00b73d050058300a08000000 *0010000c00de3d050010750c081000000011000c00f73d05006ce60b081000000011000c000c3e *050078df0b082d00000012000c00263e05007cc5110800000000100010005d3e0500c46d0e080c *00000011000c008e3e050090e111080400000011001000a43e0500b00112080400000011001000 *ba3e050074e80b080b00000012000c00d23e05009c4c0b080000000010000c00f93e0500f4060d *080c00000011000c00153f050098d5110804000000110010003d3f0500ccd41108040000001100 *10005c3f0500b8d811080400000011001000793f050098180b080000000010000c009c3f050078 *e911080400000011001000cb3f050054ed0b080800000011000c00e23f05000cbb0a0800000000 *10000c001340050024c20f080c00000012000c0023400500b8ba0a080000000010000c005b4005 *00e48b0f085b00000012000c006f40050050300e082500000012000c00954005004c2f0c080c00 *000012000c00b0400500dc270a080000000010000c00dd400500dc1705080000000010000c0007 *410500e8440c080700000012000c001e41050018b00e085800000012000c00444105005cc31108 *000000001000100077410500049f0c080500000012000c008e410500f0730f080800000011000c *00ae410500e4050c080800000011000c00ca4105003c6a10080800000011000c00e041050089eb *0f082300000012000c00ee41050080d9110804000000110010000342050020bb12080400000011 *00170015420500f1bb0f080800000012000c002042050084fb1108040000001100100038420500 *98de1108040000001100100062420500bcee0b080c00000011000c0079420500d04e0f082f0000 *0012000c009642050074f311080400000011001000bd420500e8ee0d084c00000012000c00d942 *0500f8a60b080300000012000c00ff420500bc110d085700000012000c0029430500e816120800 *0000001000f1ff3543050044d50c080c00000011000c0050430500a46a0a080000000010000c00 *8243050048fa11080400000011001000a1430500500312080400000011001000c443050014f911 *080400000011001000e9430500082b0e080a00000012000c001344050004ee0b080c0000001200 *0c002a440500246207080000000010000c004e44050010fa1108040000001100100066440500f4 *250d085900000012000c0097440500201d0b080000000010000c00c544050010d3110804000000 *11001000e3440500e0970d080500000012000c00fb44050054b305080000000010000c00304505 *00ac490c080c00000011000c004b45050054160b080000000010000c007b450500f8400c085500 *000012000c009a450500344f1008bd00000012000c00af4505008ccd05080000000010000c00e0 *45050085be0f087f00000012000c00f04505006c080d080c00000012000c0004460500e4840c08 *6b00000012000c002f460500049f0d080800000011000c0046460500f4a40e085b00000012000c *005c4605009cd0110804000000110010007d460500281905080000000010000c00ac460500a4de *11080400000011001000d846050064e211080400000011001000f2460500440912080400000011 *0010000b470500d8160b080000000010000c004147050084ff1108040000001100100063470500 *9c990c082900000012000c007b470500e09d0b086300000012000c009c47050078ed0b08080000 *0011000c00b74705002c6d0e080800000011000c00d7470500a00512080400000011001000fc47 *05002c9b0d085400000012000c001948050094c70e084c01000012000c00384805008ce7110804 *000000110010006b48050054ef0c082300000012000c008f48050034d10c084c00000012000c00 *ac4805003c8c0b080000000010000c00dd480500185005080000000010000c000a490500e0b70f *08ab00000012000c000f490500f8980c080500000012000c003449050060120d08540000001200 *0c0068490500c4a90b080800000011000c0083490500f4d50c080c00000011000c009e4905001c *ca0b080b00000012000c00b44905004c8b0b080000000010000c00e4490500a4eb050800000000 *10000c00114a0500f0f6110804000000110010002b4a0500e4d10f088100000012000c00344a05 *00fc2310081d04000012000c00464a050034cd05080000000010000c00704a050074d60e080800 *000011000c00974a05009c300c080800000011000c00b14a0500d0ce11080000000010001000dc *4a05005c920f080800000011000c00fc4a0500f4f00c082300000012000c00204b050050030b08 *0000000010000c00524b0500e8b709080000000010000c00844b050004b2110800000000100010 *00a84b0500484210083500000012000c00ba4b05004c9f05080000000010000c00f04b0500dc98 *0f085100000012000c00134c0500ac870a080000000010000c00444c0500ccc511080000000010 *001000754c050074e3110804000000110010008b4c050058f811080400000011001000aa4c0500 *b01305080000000010000c00d44c050048d911080400000011001000f54c05003c030f08590000 *0012000c00114d050018b506080000000010000c003e4d0500400412080400000011001000634d *050094ff110804000000110010007a4d050088f911080400000011001000994d050024ce110800 *00000010001000cb4d05003cd911080400000011001000f04d05007cfb0e085b00000012000c00 *084e050098a30e085b00000012000c001e4e0500286610080800000011000c00324e0500100912 *080400000011001000484e0500f2e50f08cb00000012000c005c4e0500643d0e08230000001200 *0c00904e0500e4c611080000000010001000bb4e0500d4d111080400000011001000dd4e0500c8 *c90d085b00000012000c00ef4e0500282406080000000010000c00264f050024300f0808000000 *11000c003b4f0500006a0e081000000011000c005c4f0500a8b90d083000000012000c00754f05 *0054890c080700000012000c00884f0500a06107080000000010000c00b44f0500148c08080000 *000010000c00eb4f0500d89805080000000010000c00165005009cd40c080c00000011000c0029 *500500108e0e081000000011000c004d5005006cc6110800000000100010007750050024371008 *0600000012000c008750050054fd11080400000011001000ac5005005ca60e080800000011000c *00c150050044dd0b080400000011000c00db50050050b70a080000000010000c0008510500189f *08080000000010000c004551050074d3110804000000110010005c51050050f80d080600000012 *000c007f510500a0920d080c00000011000c00a251050078340d082300000012000c00cd510500 *98490e080c00000012000c00fa510500b8f60b082300000012000c000e520500b0170b08000000 *0010000c004d52050028850f085100000012000c00705205007cec110804000000110010009a52 *050054770c080800000011000c00ba520500500012080400000011001000d0520500e0f5110804 *00000011001000fa52050033b30f081700000012000c000353050040ff11080400000011001000 *28530500badb1008f805000012000c00365305003000120804000000110010005b530500041e0c *080700000012000c006f530500c42e0c081000000011000c008953050030d20408000000001000 *0c00a85305008cbf0b080c00000011000c00d4530500fca00b080700000012000c00ed53050058 *6b10082800000012000c0000540500783110085d00000012000c001e5405006c9f050800000000 *10000c005754050084370f085b00000012000c00735405004c5f0d080600000012000c00a05405 *00dcdc0c080800000011000c00b9540500d8460f080800000011000c00d954050000f80d080800 *000011000c00ff540500cc1b0f080800000011000c001b550500b4d31108040000001100100034 *550500108e0e084b00000012000c005955050030f3110804000000110010008155050004aa1108 *0000000010001000af550500f0f10c085b00000012000c00c5550500c01805080000000010000c *00eb550500e0080a080000000010000c00145605000c6207080000000010000c003a5605005b74 *10083600000012000c0047560500689d0f081000000011000c0069560500600112080400000011 *0010008b560500cc8b0e081000000011000c00b756050030d40c082900000012000c00d2560500 *14c50c080300000012000c00ef5605003c5f0d080600000012000c0019570500d83b0c08290000 *0012000c0041570500fcba0a080000000010000c00765705001c0710082d00000012000c008457 *0500a86710080800000011000c009957050010c811080000000010001000da570500a8fc110804 *00000011001000f25705007000120804000000110010000858050064f211080400000011001000 *20580500ec6007080000000010000c004a580500cccb0e080c00000011000c006158050010b20e *085b00000012000c0087580500088b0c080c00000011000c009c58050054dc0b08030000001200 *0c00b4580500a4c311080000000010001000e8580500785307080000000010000c000b59050020 *1f0d080c00000011000c003459050040c60c080c00000012000c004c590500cc9e050800000000 *10000c007a590500981f0c080700000012000c008e59050010cb0c080c00000012000c00a35905 *0070d20e080800000011000c00cd59050000000000fa00000012000000ea590500bc2e0a080000 *000010000c00135a0500000000004600000012000000245a05004809120804000000110010003e *5a0500f0af110800000000100010006a5a050088f105080000000010000c00985a0500acc61108 *0000000010001000c35a05001cc50e081000000011000c00d75a05005c760e084a00000012000c *00fd5a0500801a08080000000010000c002e5b0500b0c40c080300000012000c00555b0500acdc *0b080600000012000c006f5b0500f0160b080000000010000c00975b050044d111080400000011 *001000ac5b050028fa0e080800000011000c00c35b0500f84c0e080c00000011000c00e55b0500 *006a0e085000000012000c00075c05005cdb0c080c00000012000c00245c0500ec9e0f08100000 *0011000c00465c050064950f080800000011000c00665c05002c9905080000000010000c008e5c *050000500f082900000012000c00a25c050090e011080400000011001000cf5c0500ccd90e084e *00000012000c00fc5c0500b8ad0b080c00000011000c00125d050027cd0f08bd00000012000c00 *1e5d050028fb11080400000011001000435d0500dc320c081000000011000c005e5d0500a4170b *080000000010000c00915d05007c4207080000000010000c00b75d050044bb0a08000000001000 *0c00d95d0500280812080400000011001000fe5d050000000000b2010000120000000c5e050094 *a11108000000001000f1ff1d5e0500d8b809080000000010000c00505e050020dd0b0806000000 *12000c006b5e0500e45f07080000000010000c008f5e050070470e080c00000011000c00bb5e05 *00f04b07080000000010000c00e15e0500cc020f085b00000012000c00fd5e050094d70e081800 *000011000c00265f0500dcc20d081800000011000c00455f050038bc1208040000001100170063 *5f05005ce5110804000000110010007b5f05003c140a080000000010000c00a25f0500a0f81108 *0400000011001000b65f05009c5f0d080600000012000c00e25f050084160b080000000010000c *001e60050094f309080000000010000c004c60050044c81108000000001000100080600500201f *0d080c00000012000c00aa60050028590a080000000010000c00df600500e01805080000000010 *000c0005610500f0810e080800000011000c00246105001ce11108040000001100100043610500 *f4d8110804000000110010005c61050080fc0b080c00000011000c00726105003c8c0b08000000 *0010000c00a2610500886910081e00000012000c00b8610500e0480e080c00000011000c00e461 *050010fb0b080c00000012000c00f9610500bcdc0b080800000011000c0012620500088a0a0800 *00000010000c003c620500481d0e080500000012000c005d620500806007080000000010000c00 *88620500ac5210080500000012000c0095620500ac480c082300000012000c00ad620500b4ec0d *080c00000012000c00cd620500b0910c080c00000011000c00e6620500d0f50c080c0000001100 *0c00066305006ce411080400000011001000256305004c09120804000000110010003e630500a4 *f81108040000001100100052630500d8d911080400000011001000716305008c5910080c000000 *11000c0086630500c0870f080800000011000c00a663050004da11080400000011001000c16305 *0040d711080400000011001000dd63050068010e082000000012000c00f1630500b0e311080400 *0000110010000d640500cc0e0d082a00000012000c003464050084e60e085b00000012000c0055 *64050078ad0c082000000012000c00686405008c8c0b080000000010000c009964050074ca1108 *0000000010001000cd64050084cd0e080c00000012000c00e8640500b0d2110804000000110010 *000965050008fe110804000000110010002865050080ae0d084400000012000c00476505008cc3 *0c080c00000012000c0060650500c88e0d080d00000012000c0089650500d0920c085b00000012 *000c00a4650500f41d0c080300000012000c00c06505000ce909080000000010000c00f5650500 *4c6107080000000010000c00216605001cc409080000000010000c005a660500984b0f080c0000 *0011000c0074660500f0f7110804000000110010008866050020b00a080000000010000c00b266 *0500701805080000000010000c00da660500984a0f080800000011000c00f3660500a0b4090800 *00000010000c002467050030fa1108040000001100100044670500fc190b080000000010000c00 *6e670500f0b205080000000010000c009967050024230f082600000012000c00ca670500d8ae0e *080c00000011000c00ee670500fc6c0e080600000012000c000c680500e4c31108000000001000 *100042680500c4230e085400000012000c006068050028b50c080500000012000c007a6805006c *8c0b080000000010000c00a7680500a4a70b085500000012000c00c0680500c8dd110804000000 *11001000e06805003ca20b082300000012000c00fc6805000cf40e080800000011000c001e6905 *00788f0d080300000012000c003c690500b4680b080000000010000c0064690500e85a10080800 *000011000c00736905004cbf0e083500000012000c008969050080cc0d080800000011000c009c *690500a0e811080400000011001000c869050024fd11080400000011001000eb69050044e41108 *0400000011001000106a05007cc211080000000010001000536a05007806120804000000110010 *00786a0500a09e05080000000010000c00a66a0500d45a10080800000011000c00b56a05009086 *0b080000000010000c00df6a05001ceb09080000000010000c00036b05005c1a0e081000000011 *000c00246b0500d46d10089500000012000c00366b0500903810080c00000011000c00456b0500 *94fe0b082000000012000c005a6b050078c705080000000010000c00846b050080760f080c0000 *0011000c00996b0500305f0c084100000012000c00c66b0500086007080000000010000c00f06b *050088a90f085100000012000c00136c050090ff0e085300000012000c00256c0500b0e1110804 *00000011001000456c0500c8d8110804000000110010005b6c0500846207080000000010000c00 *8a6c05006cd70e080800000012000c00b46c050080940b081000000011000c00da6c0500d0f70d *080600000012000c00026d0500341c0f085b00000012000c001f6d05001ce00d08050000001200 *0c00326d05009c1c0f080800000011000c004e6d0500bcfd11080400000011001000666d05008c *5f0d080600000012000c00946d0500d8fd0b080c00000011000c00a86d0500a0ea090800000000 *10000c00db6d0500f0bd09080000000010000c00116e050054c40e081000000011000c00256e05 *00b8460e080c00000012000c00516e0500f8c3110800000000100010008d6e0500706107080000 *000010000c00b76e05006cfc0e085b00000012000c00cf6e0500d0b111080000000010001000f7 *6e05008ce2110804000000110010001d6f0500504b0c080c00000011000c00456f05007cdc0b08 *0600000012000c005c6f050027b90f082000000012000c00686f05006ccd0e080b00000012000c *00836f05003cb211080000000010001000a76f050008880d080c00000011000c00d06f0500f897 *05080000000010000c00f86f050062ec0f085d00000012000c0007700500e8d50d081000000011 *000c0028700500386b0c080600000012000c005470050064d60b080c00000011000c0073700500 *80061208040000001100100098700500689b0c082800000012000c00b0700500ec9e0508000000 *0010000c00de7005006c980f080800000011000c00fe7005006cc8110800000000100010002f71 *0500e0d9110804000000110010004f710500e05210084900000012000c005e710500e82a0e0805 *00000012000c008771050010dc0c081000000011000c009a71050014170b080000000010000c00 *d7710500241d0e082300000012000c00f9710500b4250f082600000012000c001c72050068f611 *08040000001100100034720500e0f1110804000000110010004c72050058870f085b0000001200 *0c0060720500c00112080400000011001000767205007ccb0c085400000012000c009372050038 *ec09080000000010000c00c5720500ac5a10080800000011000c00d4720500dc650e0810000000 *11000c00f772050020cc0b080c00000011000c000f7305005c8a0b080000000010000c00407305 *00886107080000000010000c00657305005fea0f08eb00000012000c007a73050030290a080000 *000010000c00a27305005c260e085b00000012000c00c073050000000000ba01000012000000d3 *7305004cc50f081000000012000c00e17305000c4b10089500000012000c00f373050090e31108 *04000000110010001574050020730f080800000011000c0028740500a47b0c080c00000011000c *003e740500f4fb0e080800000011000c005574050070cf0e084c00000012000c006f74050010e6 *110804000000110010009b740500b0aa0d082000000012000c00bc74050050b20f082a00000012 *000c00c974050020e111080400000011001000e47405008cdc0b080600000012000c00fe740500 *58c10b087d00000012000c001c7505009cfa0e085b00000012000c00347505009caa0d08050000 *0012000c0057750500f8cb110800000000100010008d750500a4b10e081000000011000c00a075 *050074440a080000000010000c00ca75050094f309080000000010000c00f9750500786f0e0830 *00000012000c002176050014030e080800000011000c0033760500080712080400000011001000 *58760500406107080000000010000c008176050054b211080000000010001000a776050030d40e *080c00000011000c00d076050050920c080c00000012000c00e676050004c71108000000001000 *100011770500941e0d080c00000012000c002d77050010d01108040000001100100056770500dc *880f080800000011000c0069770500f0d8110804000000110010008f77050050a70b084b000000 *12000c00a577050050ff0b082300000012000c00be770500ec6c0e080600000012000c00e17705 *0070e111080400000011001000fc770500a4ce0c085900000012000c001278050090d40f082100 *000012000c002578050074bd0b082f00000012000c004278050050f80d080800000011000c0064 *780500c4240d080c00000011000c008d780500f8f511080400000011001000b2780500ac481008 *9500000012000c00c6780500cc630c080700000012000c00ec7805006cc90b080c00000011000c *0002790500c09d05080000000010000c00327905002ced110804000000110010005a790500280d *0c081000000011000c006e79050094d7110804000000110010009079050034fc0b083d00000012 *000c00a97905002cde11080400000011001000c97905005c210c080500000012000c00e4790500 *74bb0e085900000012000c00f979050060aa0d081800000011000c001b7a0500f4f71108040000 *0011001000397a050030c20c083200000012000c00507a0500e01d0b080000000010000c00827a *0500b4650a080000000010000c00b77a0500586107080000000010000c00de7a050094b90b0808 *00000011000c00f87a0500009a0e080500000012000c00117b050038510c081000000011000c00 *3b7b0500642d0c083700000012000c00527b0500b09a04080000000010000c00607b050094590a *080000000010000c009d7b050044060e081000000011000c00b47b0500c8c90d08080000001100 *0c00c57b05005c470c083000000012000c00e07b050010990d080500000012000c00f87b0500b4 *170b080000000010000c00267c050070b709080000000010000c00587c0500980b0f0810000000 *11000c006b7c0500a4000f080c00000011000c007f7c0500e4b90e080800000011000c00947c05 *002cfe0b082000000012000c00a97c050040990b084b00000012000c00c87c0500b84b07080000 *000010000c00ed7c050098f70d080300000012000c00177d0500a4f70d080800000011000c003b *7d0500788e0d080c00000011000c00627d050090160b080000000010000c00917d050018f60b08 *0c00000011000c00a47d0500c8fa11080400000011001000d77d050084b90b080800000011000c *00f77d050074cf11080000000010001000267e0500f4250d080c00000011000c00567e0500a029 *0e085400000012000c007f7e0500e4a90b080800000011000c009b7e050074e809080000000010 *000c00c47e050044de11080400000011001000de7e050098490e080c00000011000c000a7f0500 *48a10b082000000012000c00267f05003c400a080000000010000c005a7f050094de1108040000 *0011001000857f0500282406080000000010000c00bd7f0500fc850d081800000012000c00df7f *050008c90b080c00000011000c00f77f05008cb70a080000000010000c002480050048d5110804 *0000001100100044800500f0ce1108000000001000100072800500a0a111080000000020001000 *7d80050002bb0f081300000012000c008880050038e5110804000000110010009d80050040480c *083000000012000c00b7800500c4ab0e085400000012000c00cc8005001cc71108000000001000 *1000f8800500c05e10080900000012000c0001810500b4fe11080400000011001000208105001c *810d080300000012000c003d8105007cc31108000000001000100073810500003f0c0818000000 *11000c009e810500e01805080000000010000c00c3810500f0250e080c00000011000c00f48105 *00745c0b080000000010000c001f82050064a4110800000000100010004c820500cc130e080300 *000012000c00658205004cc10c083f00000012000c007e8205002c980b08bd00000012000c00a0 *820500c8f10c080300000012000c00c38205007cd411080400000011001000e282050044510608 *0000000010000c001083050090ed0b080800000011000c002b830500acc3110800000000100010 *005e830500b0b1110800000000100010007e830500b0d0110804000000110010009d830500d82d *0f082000000012000c00b88305005c1005080000000010000c00db830500705710083d00000012 *000c00ec83050034fa0d080c00000011000c000a840500d01908080000000010000c003c840500 *c8b1110800000000100010006684050028cc110800000000100010009b84050004980f085b0000 *0012000c00af840500ccd90e080c00000011000c00db840500dc880b080000000010000c000885 *0500ace9110804000000110010002d850500f4880b080000000010000c0058850500804b070800 *00000010000c007a85050014e90b080600000012000c009c850500e00412080400000011001000 *b2850500d0250a080000000010000c00da850500b8a20b082300000012000c00f4850500944007 *080000000010000c001986050014ea0e082e00000012000c004186050034e81108040000001100 *1000688605009c990c081000000011000c007f860500f8d711080400000011001000a886050044 *e90b080600000012000c00ce860500ecb111080000000010001000f586050004fa0f0835000000 *12000c000a8705003ca10e085b00000012000c002687050058230e080c00000011000c003b8705 *0058280e080800000012000c0065870500b06b0b080000000010000c008f87050064910c082000 *000012000c00a98705001ccc11080000000010001000db87050070960c083800000012000c00ff *870500941a0f080800000011000c001b880500c8860a080000000010000c004d88050070900f08 *5b00000012000c006188050058001208040000001100100080880500a001120804000000110010 *00a5880500a8fa11080400000011001000d0880500acb00e080c00000011000c00e788050008f7 *0d080300000012000c0012890500e4dc1108040000001100100036890500d8890b080000000010 *000c006689050004450a080000000010000c0094890500341f0d080800000011000c00c0890500 *345308080000000010000c00f18905003c6307080000000010000c001e8a050088990f08080000 *0011000c00318a0500a0240e080800000011000c00518a05005c4a0e083900000012000c00828a *050070c805080000000010000c00ae8a0500a4a30c082300000012000c00d38a050034450c0830 *00000012000c00ef8a05006c4c0a080000000010000c001d8b05005cfd0e085b00000012000c00 *358b0500706107080000000010000c005e8b0500044207080000000010000c00848b050030e410 *08bc00000012020c00918b0500a0f411080400000011001000b38b0500d0240c086f0000001200 *0c00cf8b050094600c084900000012000c00fc8b0500f4270b080000000010000c001e8c050098 *4a0c087d00000012000c00428c0500e46710081e00000012000c00588c0500d0b30e085b000000 *12000c00758c050038a00e082000000012000c00908c05006cdb11080400000011001000a78c05 *00c03310080800000011000c00b68c05000ceb11080400000011001000dd8c0500b05710088a00 *000012000c00ea8c050064820f085b00000012000c00fe8c0500d4390e085900000012000c002d *8d050034e90b080600000012000c00548d0500f0610b080000000010000c00868d0500c4420508 *0000000010000c00b38d050010ed0e08fb00000012000c00db8d0500e86a0c080600000012000c *000a8e050068aa0b080c00000011000c00228e0500701b0d080c00000012000c00408e0500f86a *0c080800000011000c00708e05004cd5110804000000110010008d8e050068ae0e082000000012 *000c00a48e050084fb0c081000000011000c00c08e0500405307080000000010000c00e58e0500 *c8df11080400000011001000148f05006c330e082600000012000c003e8f050024c40b08070000 *0012000c005c8f0500a46c10080c00000011000c006e8f0500500510080c00000012000c00788f *0500a45f0c085c00000012000c00a78f050070ec10080000000012000d00ad8f0500c4b10f0838 *00000012000c00b98f050060e011080400000011001000d48f0500f4e00b080700000012000c00 *ea8f05004ccd110800000000100010001690050008e5110804000000110010003490050024f00c *080c00000011000c004d900500000000007d000000120000005e90050014f70d08080000001100 *0c00879005007dbc0f085f00000012000c009190050000cd0d081800000011000c00b090050004 *1c0d085b00000012000c00ce900500c4bf110800000000100010000a91050018a90f085b000000 *12000c002b91050050e80e081000000011000c004f91050088ef11080400000011001000679105 *0060dc0b080800000011000c008191050050d7110804000000110010009d910500c0160b080000 *000010000c00d1910500000000004600000012000000e3910500f4bc0b081000000011000c00ff *910500e4b90e085b00000012000c0015920500fc430c080500000012000c00369205003cc71108 *00000000100010006d920500b8fb05080000000010000c009c9205001ca70d082800000012000c *00ba920500c09b0e081800000011000c00db920500f4460c082f00000012000c00f6920500302e *0c081000000011000c0011930500b4c30c080c00000012000c002e93050024c511080000000010 *00100065930500c8120d080c00000011000c0082930500a4c50b087d00000012000c00a5930500 *446007080000000010000c00ca93050074b211080000000010001000ee930500b0910c08080000 *0012000c000894050090f7110804000000110010002294050004a4110800000000100010005394 *05002c010f080c00000011000c0067940500b0ed0c081000000011000c008a9405007cd8100813 *00000012000c0094940500ec5310088f00000012000c00a794050014cb0b082000000012000c00 *bf940500646107080000000010000c00ea94050034db1108040000001100100007950500500112 *0804000000110010001d95050060c111080000000010001000559505008ca71108000000001000 *100087950500ecd511080400000011001000b2950500a4f111080400000011001000cf95050004 *f011080400000011001000f2950500d86a0c080800000011000c001e960500b8dd110804000000 *110010005496050010e2110804000000110010007c96050000000000be000000120000008e9605 *0058970f081000000011000c00b0960500dc3a0f082f00000012000c00c496050090ea0e080800 *000011000c00e59605004c860b080000000010000c000b970500448a0d084b00000012000c0034 *9705008c6007080000000010000c005a97050034c409080000000010000c009197050070e91108 *0400000011001000bf970500b0c811080000000010001000f3970500b4ee09080000000010000c *001a9805009cbf110800000000100010005a980500a8ac0c080700000012000c006c9805009421 *0e080c00000011000c008b980500b8e811080400000011001000b398050044e90b080800000011 *000c00d8980500b4440a080000000010000c00089905000000000080010000120000001a990500 *949b0d083900000012000c00389905004ce00b080700000012000c005299050098520708000000 *0010000c007899050054fb0b080c00000011000c008c99050000be0b080800000011000c00ad99 *050028b909080000000010000c00df990500b0a111080000000010001000f1990500b0ac0c08b3 *00000012000c00049a0500f81805080000000010000c00339a0500b4880d080c00000012000c00 *509a050034dc11080400000011001000769a0500c0180e086300000012000c00939a0500bcd910 *088e00000012000c009e9a050054060c082000000012000c00bc9a050070d81108040000001100 *1000d49a0500635810080600000012000c00ed9a0500909b0c080500000012000c00049b050090 *f8110804000000110010001a9b0500941e0b080000000010000c004a9b0500b8050c0806000000 *12000c00619b0500c97010089800000012000c00759b0500e0fd11080400000011001000929b05 *00e6021008bf00000012000c009b9b050030640f082f00000012000c00b29b050044d80e081000 *000011000c00d79b0500b4680b080000000010000c00009c0500b4d01108040000001100100017 *9c050000000000b9010000120000002a9c050048fb0d080c00000012000c004c9c050020fa1108 *0400000011001000679c050090b111080000000010001000909c050044d4110804000000110010 *00b29c0500187b0c082d00000012000c00c69c050044170b080000000010000c00f79c0500e008 *0a080000000010000c001f9d0500580212080400000011001000359d0500c0f70d080600000012 *000c005a9d050094e011080400000011001000869d0500d8ef110804000000110010009e9d0500 *c0e211080400000011001000c39d0500705c06080000000010000c00e99d050000000000360000 *0012000000fa9d0500f4e60e085b00000012000c001d9e0500dc4b0a080000000010000c00519e *0500d0ee09080000000010000c00789e0500886107080000000010000c009e9e050074b1110800 *00000010001000c79e0500fcd111080400000011001000df9e050020f70d080800000011000c00 *089f0500a44207080000000010000c002c9f0500a0ba12080400000011001700359f050055c00f *081f00000012000c00419f05007cdc0b080800000011000c00579f050080041208040000001100 *10007c9f050028ff0e080800000011000c00939f0500fc9e05080000000010000c00bf9f0500c4 *401008c700000012000c00cd9f050054600d085b00000012000c00ef9f05000cdb110804000000 *110010000ca00500c86007080000000010000c0036a005004001120804000000110010004ca005 *0094ee110804000000110010005fa0050004b305080000000010000c0086a00500c81305080000 *000010000c00a7a00500980812080400000011001000bda005000cc011080000000010001000f6 *a0050000000000c80000001200000003a1050094a71108000000001000100031a1050084ed0b08 *0300000012000c004aa1050050ff1108040000001100100069a10500acfc0d081000000011000c *007da105003c400a080000000010000c00b2a1050094b90b080600000012000c00cda105001cfb *11080400000011001000f2a10500504e07080000000010000c0018a2050084bf11080000000010 *00100056a2050068f81108040000001100100075a20500b8b1110800000000100010009fa20500 *b49e05080000000010000c00caa20500e45f0d080800000011000c00eba2050004640c08400000 *0012000c0014a3050000d2110804000000110010002ba3050020e6110804000000110010004fa3 *0500cce80b080600000012000c0071a30500800e05080000000010000c009aa305002c6d0e0806 *00000012000c00bba30500206007080000000010000c00e9a3050060e80b080500000012000c00 *03a40500323310080900000012000c0019a40500a8fa0c081000000011000c0032a4050064220f *080c00000011000c0056a4050080060e080c00000012000c006da4050000000000360000001200 *00007ea40500d1f90f083300000012000c0093a40500286b0c080800000011000c00c2a40500e4 *cf11080000000010001000eba405005c120e080c00000011000c00fda4050078ad0c0810000000 *11000c000fa5050000dd0b080600000012000c002aa505004ccf1108000000001000100057a505 *0030980e081000000011000c006ca50500107b0c080700000012000c007fa50500a81d0c080c00 *000012000c0098a505004c450a080000000010000c00c2a50500281a0f080800000011000c00de *a5050070140e080800000011000c00f1a5050010b809080000000010000c0020a6050048c50c08 *2000000012000c0038a60500d05c10080800000011000c004ea605006004120804000000110010 *0064a605009cea110804000000110010008aa6050018e111080400000011001000a5a6050034b0 *11080000000010001000d4a6050078a811080000000010001000f6a60500900212080400000011 *0010001ba7050078f9110804000000110010003aa705000caf0e086200000012000c0053a70500 *90f51108040000001100100077a70500b0140a080000000010000c009fa70500a4d41108040000 *0011001000bca7050080b211080000000010001000e4a70500086b0c080800000011000c0017a8 *050098170b080000000010000c0052a80500a0de110804000000110010007ea80500d4230a0800 *00000010000c00a6a80500f4ca0e081800000011000c00bea80500eced11080400000011001000 *d8a8050078c60b089f00000012000c00faa8050048af0b080c00000011000c0016a9050048ed11 *08040000001100100036a90500d87d0f080800000011000c0056a9050060fc1108040000001100 *10006ca9050068fa110804000000110010008ba90500f41d0c080800000011000c00a6a9050078 *d011080400000011001000c4a9050008d111080400000011001000eba905000cc7110800000000 *1000100017aa0500f85c10080800000011000c002caa0500f0031208040000001100100051aa05 *009ce31108040000001100100078aa05002cbb0a080000000010000c00a6aa050024e411080400 *000011001000beaa050080eb0b080c00000011000c00d4aa0500746207080000000010000c00ff *aa05005c520f082900000012000c0012ab05007cdb1108040000001100100029ab0500c4440a08 *0000000010000c0052ab0500bc4307080000000010000c007bab050070e6110804000000110010 *00a0ab0500d0d911080400000011001000bdab050028bd09080000000010000c00ecab0500d4fb *0c082000000012000c0002ac05009c5f0d080800000011000c002dac0500a4fe11080400000011 *0010004dac0500ecee0c080c00000011000c0074ac0500fc8b0b080000000010000c00a3ac0500 *a0a211080000000010001000cdac0500a4e811080400000011001000fbac050070500f080c0000 *0011000c0016ad0500a4af0c085b00000012000c0029ad050020770a080000000010000c0057ad *05000000000033000000120000006aad050010cc0e080800000011000c008bad0500d8d7110804 *00000011001000b5ad050030b609080000000010000c00e4ad0500605207080000000010000c00 *04ae050054ec1108040000001100100020ae050090300c080800000011000c0037ae0500383710 *080c00000011000c004bae0500ac890a080000000010000c007cae0500ac870a08000000001000 *0c00aeae0500000000008600000012000000c2ae05008cda11080400000011001000e1ae05008c *8c0b080000000010000c0011af0500e4440a080000000010000c003baf05006ce7110804000000 *110010006faf050008e11108040000001100100087af0500741505080000000010000c00b0af05 *005c6810080800000011000c00c5af0500e00812080400000011001000dbaf0500049f0d085b00 *000012000c00f3af0500c05a10080800000011000c0002b00500c0fb110804000000110010001f *b00500acb61108000000001000100053b005009caa110800000000100010008db0050018df1108 *0400000011001000bfb00500f4d111080400000011001000d8b00500f0700b080000000010000c *0000b10500000000003a0000001200000018b10500b006120804000000110010003cb1050058f7 *0b082900000012000c0054b105003c9c0b085b00000012000c0075b10500e89905080000000010 *000c00a7b10500d07a0f082300000012000c00c4b10500d4260e081000000011000c00f4b10500 *900810080800000011000c0006b20500d4fc110804000000110010001cb20500e4d91108040000 *001100100036b20500a0aa0e087100000012000c004db20500445f0f080800000011000c006db2 *0500e0e0110804000000110010009ab2050024a40f085b00000012000c00aeb20500a8300f085b *00000012000c00cab2050018e611080400000011001000eeb2050074e911080400000011001000 *1db30500d8d51108040000001100100037b3050090d3110804000000110010004eb305009c340d *080500000012000c0080b305008c170b080000000010000c00b7b3050038160f08200000001200 *0c00d3b3050004f60e085b00000012000c00e9b305006c3d0a080000000010000c0011b40500c0 *f70d080800000011000c0035b40500189f08080000000010000c0073b4050070c7110800000000 *10001000a5b405003c0f05080000000010000c00cdb4050004f111080400000011001000e5b405 *00282e0b080000000010000c0012b5050044d70e081800000011000c003bb5050008ce0b080c00 *000012000c0050b5050058071208040000001100100075b50500281a0e080500000012000c0095 *b5050088d211080400000011001000b8b50500f4250a080000000010000c00e3b50500ac7e0b08 *0000000010000c0010b6050034450a080000000010000c003cb60500205f0c080600000012000c *006eb6050008a80b085600000012000c008db6050038310b080000000010000c00b9b60500ac5f *0d080800000011000c00e7b6050048e00b080800000011000c0002b705008c6207080000000010 *000c002db70500202f0a080000000010000c0053b705004cb21108000000001000100076b70500 *a8300f080800000011000c0091b7050090e611080400000011001000b6b70500a0d81108040000 *0011001000d2b7050094cb0b082000000012000c00e9b70500696e10089800000012000c00fdb7 *05007c5f0d080600000012000c0028b8050084dd110804000000110010004eb8050000000000c0 *0100001200000061b80500b4a00d080c00000011000c0086b80500dc520f081000000011000c00 *98b80500bc260b080000000010000c00c7b80500801605080000000010000c00e9b80500f0130e *080300000012000c0008b9050054dc0b080800000011000c001fb9050040fe1108040000001100 *10003fb905001c7a0c080700000012000c0056b90500d8650a080000000010000c008cb9050094 *4007080000000010000c00b2b905003c5810080300000012000c00cab90500e802120804000000 *11001000e0b9050030180b080000000010000c000aba050080170b080000000010000c003dba05 *00d4100d080c00000011000c0060ba0500005f0c080800000011000c0092ba0500041d0f085b00 *000012000c00b0ba0500ec0e0c083300000012000c00d4ba0500546c10084100000012000c00e7 *ba0500f8ef1108040000001100100008bb0500d4cd0c080c00000011000c0024bb05008cdb1108 *04000000110010003fbb0500ec230f080800000011000c0060bb0500f8280d080c00000011000c *008abb050050840f080800000011000c009dbb050024f211080400000011001000babb050004ff *0d085b00000012000c00d7bb050078910e085d00000012000c00ffbb050044e011080400000011 *00100021bc050070140e085b00000012000c0035bc050038950d080c00000011000c0050bc0500 *84b60b080c00000011000c006bbc0500b04110082f00000012000c0077bc05009cde1108040000 *0011001000a3bc0500d08b0b080000000010000c00d5bc0500b0d511080400000011001000f3bc *05007c1f0e080c00000011000c0015bd0500a0d3110804000000110010002cbd0500a0e0110804 *0000001100100055bd050004d11108040000001100100084bd050050f511080400000011001000 *a7bd050060950b082800000012000c00d0bd050058c711080000000010001000fbbd0500e85d10 *080800000011000c000ebe0500480110081800000012000c0020be05005cea1108040000001100 *100046be050004450a080000000010000c0073be0500f8f30e080800000011000c0094be050058 *f411080400000011001000b8be050088e00d081000000011000c00dfbe05007c740a0800000000 *10000c0011bf05000ce905080000000010000c0044bf05004ca90e081800000011000c0067bf05 *0018da1108040000001100100087bf05005c030c080c00000011000c009dbf0500282d0c080c00 *000012000c00b6bf0500183c0c081000000011000c00ddbf050008070c080700000012000c00f1 *bf05007cf80d081000000011000c000ac0050094970a080000000010000c0035c0050068f11108 *04000000110010004dc0050061e20f082300000012000c0060c005003cdc110804000000110010 *0084c005003cbb0a080000000010000c00b5c0050068b111080000000010001000dcc005005cd1 *11080400000011001000f6c00500b85910080c00000011000c000bc10500d4100d082000000012 *000c002fc10500a0021208040000001100100045c10500984d0c080700000012000c0066c10500 *38690b080000000010000c008fc105001c4307080000000010000c00b5c1050020640608000000 *0010000c00ddc1050004a80e080c00000012000c00fdc10500ecb00d080800000011000c0025c2 *0500049b0e085b00000012000c0040c205006cea1108040000001100100066c20500c8d0110804 *0000001100100084c20500406107080000000010000c00aec205005ce211080400000011001000 *cec20500d8dd11080400000011001000eec2050054fb0b080c00000012000c0003c30500e06210 *080800000011000c0016c3050054c31108000000001000100049c305008cd61108040000001100 *100078c30500d0160f088200000012000c008dc3050038930c080800000011000c00a0c305005b *c40f083600000012000c00afc30500483d0d081800000011000c00d8c3050044b60b080c000000 *12000c00f3c30500509e05080000000010000c001fc4050070a4110800000000100010004fc405 *00f44207080000000010000c0074c40500a4f70d080300000012000c0099c4050038e00d081000 *000011000c00c4c40500b8810d085600000012000c00ddc4050038160f081000000011000c00f8 *c40500e4dc0b080800000011000c0015c5050064890a080000000010000c0049c50500e0e21108 *04000000110010005dc5050024ec09080000000010000c0091c50500d8990d080c00000011000c *00a7c50500e4e611080400000011001000bfc5050048d811080400000011001000dcc505004cee *0b080c00000012000c00f6c50500d4d01108040000001100100014c605005c580e081000000011 *000c0036c60500087d0f085b00000012000c004ac605001c9a0e085b00000012000c0064c60500 *d8f41108040000001100100087c6050020f70d080300000012000c00b1c60500b1d40f08150000 *0012000c00c1c60500f8af0f083800000012000c00cec6050050e011080400000011001000ecc6 *05009cd81108040000001100100008c70500e8d1110804000000110010001fc705006c8c0b0800 *00000010000c004dc7050068ab0d080c00000011000c006dc70500509e05080000000010000c00 *98c7050030b00f081f00000012000c00a5c70500d04e0f080c00000011000c00c1c7050034bb12 *080400000011001700cac70500e0d011080400000011001000e6c70500000000004d0000001200 *0000fdc70500b0610f085b00000012000c0019c80500341c0f080800000011000c0035c8050020 *300e080c00000011000c005ec80500749b0f080800000011000c007ec80500e4c1050800000000 *10000c00adc8050024e00b080300000012000c00c6c80500803b0e081000000011000c00fbc805 *0084f11108040000001100100013c90500fce91108040000001100100039c9050048ff0c080c00 *000012000c005cc9050054cc110800000000100010008bc90500f8990e080800000012000c00a5 *c9050038fb11080400000011001000cac9050088fa1108040000001100100000ca0500a0e61108 *040000001100100025ca05004c5807080000000010000c0048ca0500601d0e080c00000011000c *0069ca05005c290c088200000012000c0084ca05002805120804000000110010009aca0500c864 *0a080000000010000c00c3ca050058870f080800000011000c00d6ca050014bc0b080800000011 *000c00efca0500d8fd0b080c00000012000c0004cb050034fd1108040000001100100027cb0500 *d0130f080800000011000c0042cb050018740e080c00000011000c0063cb05007c0a0b08000000 *0010000c0090cb0500b0670a080000000010000c00c0cb0500d8480c085500000012000c00ddcb *0500609a0f081000000011000c00ffcb050024fe0d080c00000011000c001bcc0500c0e90b0803 *00000012000c0042cc0500006a10080800000011000c0058cc0500d4950f081000000011000c00 *7acc050025b40f080d00000012000c008bcc050060bc0e081000000011000c00a7cc0500a8e90b *080800000011000c00cbcc050074d011080400000011001000eecc050098071208040000001100 *100013cd050030000d082100000012000c0036cd0500e45f07080000000010000c005bcd0500e4 *bb0e085900000012000c0070cd0500b03d10083a01000012000c007acd0500a4db110804000000 *1100100092cd05006c400c083a00000012000c00b8cd05003f5810080600000012000c00d1cd05 *00284b0f080800000011000c00ebcd050048020f080800000011000c0005ce0500a8f90e080800 *000011000c001cce0500246a0f080c00000012000c0032ce05001ce60e080c00000011000c0064 *ce050060e1110804000000110010007dce0500d82d0f080c00000011000c0097ce0500c8f51108 *0400000011001000bbce0500e0580b080000000010000c00e9ce0500bc810c080800000011000c *0007cf050090c20e081000000011000c001ecf0500c0da1108040000001100100036cf0500c01f *0f085b00000012000c0053cf05004c9f05080000000010000c0088cf050060600f080c00000011 *000c00a4cf0500b0ba12080400000011001700a7cf050044cf11080000000010001000d2cf0500 *78670f080c00000011000c00f3cf0500444910089500000012000c0007d0050010dd1108040000 *001100100026d0050060e90b080800000011000c004dd00500ecba0a080000000010000c007fd0 *050030e905080000000010000c00a9d00500b4c810081b00000012000c00bbd005008cfe110804 *00000011001000d1d00500cc160b080000000010000c0007d1050084a611080000000010001000 *33d10500fcf60d080800000011000c0058d105009cd40c080c00000012000c006cd10500dcc611 *0800000000100010009ad105008ca40f080800000011000c00bad105004c580708000000001000 *0c00ded1050034220b080000000010000c000dd205006cdc0b080800000011000c0028d20500bc *2e0a080000000010000c0050d2050024d5110804000000110010006dd2050018490f0851000000 *12000c0090d2050030d311080400000011001000a9d2050044c00c080c00000011000c00c0d205 *0094c70b080700000012000c00d7d20500dcef0d085600000012000c00f7d2050028c409080000 *000010000c002bd30500c0190f080800000011000c0045d3050078e90b080800000011000c0066 *d3050010f8110804000000110010007dd305006ca711080000000010001000aad30500bc5f0d08 *0800000011000c00d8d30500f4f011080400000011001000f0d3050024e00b080800000011000c *0008d405002c2b0a080000000010000c0032d40500081c0a080000000010000c005ad40500101f *06080000000010000c008fd4050008d311080400000011001000b2d4050008c90b080c00000012 *000c00cbd40500fcc309080000000010000c000cd50500e0d11108040000001100100022d50500 *fcd80d082600000012000c0041d50500cc2c0b080000000010000c006cd50500081210080c0000 *0011000c007ad50500245108080000000010000c00add50500dcc30c080c00000012000c00ccd5 *0500408c0c080c00000012000c00e6d50500904c0e085900000012000c0008d60500a4800a0800 *00000010000c0038d6050060011008b200000012000c0047d60500542d0b080000000010000c00 *74d6050000000000d10000001200000084d60500f0f60d080800000011000c00aad6050020c50c *080300000012000c00cad6050010960c085400000012000c00e3d60500d89d0508000000001000 *0c0009d7050040f21108040000001100100026d7050038f70d080300000012000c0056d70500d8 *c3110800000000100010008ed70500c0b709080000000010000c00bfd7050044f0110804000000 *11001000d8d7050064910c080c00000011000c00f1d70500b8ff0d080c00000011000c0004d805 *0038d3110804000000110010001ed805002c800e080c00000011000c0041d8050008e70b081000 *000011000c0056d8050094ca0b082000000012000c006ed805009cdd1108040000001100100097 *d805003ce00b080800000011000c00afd8050060b90c082700000012000c00cbd8050098a60b08 *0c00000011000c00e4d80500c03d0a080000000010000c000dd90500889f05080000000010000c *0038d905003002120804000000110010005bd9050090e90b080800000011000c007dd90500c42e *0c080c00000012000c0098d9050034a30b080c00000011000c00b2d90500f4420e080500000012 *000c00e7d90500f8f60c081000000011000c0007da0500c4eb0b080c00000011000c001dda0500 *c8001208040000001100100032da0500a4d40e080800000011000c005cda050024d31108040000 *001100100071da0500643d0e080c00000011000c00a4da05006c8f0d080800000011000c00beda *050038390e080c00000011000c00ecda0500c0ee1108040000001100100009db050070a90e0853 *00000012000c002adb0500d40f0c083d00000012000c0048db050090a806080000000010000c00 *73db0500e03f0e082300000012000c009fdb050044a90e080800000011000c00c7db050040020c *080c00000011000c00dddb0500b0d70e082100000012000c0007dc0500402b0e08100000001100 *0c0036dc0500d05e0c080600000012000c0067dc050064220f085600000012000c008cdc05008c *f111080400000011001000a3dc0500d4e611080400000011001000bbdc050000000000d3000000 *12000000cfdc0500f80212080400000011001000e5dc0500ccc61108000000001000100012dd05 *00dc0b0d085b00000012000c002fdd0500cc4207080000000010000c0055dd0500cc0e0d081000 *000011000c007bdd050058d81108040000001100100093dd0500b84b07080000000010000c00b7 *dd0500285a10080c00000011000c00cddd050028de11080400000011001000ecdd050069180b08 *0000000010000c0017de0500e4a2110800000000100010003bde05006cb1110800000000100010 *0061de0500e0b50b080c00000011000c007cde05003ce40b084b00000012000c009dde050088de *11080400000011001000c9de0500ec8e0f085b00000012000c00ddde05007cff11080400000011 *001000f6de05000c300c080700000012000c000adf0500641c08080000000010000c0038df0500 *08c81108000000001000100079df050024230f080c00000011000c00a9df0500d0f70d08080000 *0011000c00d0df050000f511080400000011001000f3df0500c09b0e086500000012000c0015e0 *0500c4ec1108040000001100100032e0050030091208040000001100100055e0050014dc0b0806 *00000012000c0072e00500442d0a080000000010000c0099e00500d8d611080400000011001000 *c2e00500d8090f082000000012000c00d4e00500305710083d00000012000c00e4e00500f46107 *080000000010000c0012e1050098b1110800000000100010003ee10500c8820508000000001000 *0c0064e10500f8e80b080800000011000c0084e10500b0ea09080000000010000c00b9e10500fc *5f07080000000010000c00e1e105004c6910080800000011000c00f6e105003cc9110800000000 *1000100024e20500cbeb0f089700000012000c002ee20500dcf0110804000000110010004be205 *00589b0b085b00000012000c006be20500109805080000000010000c008fe205003cfe11080400 *000011001000abe205000cec11080400000011001000d1e20500f0610b080000000010000c0004 *e30500744a10089500000012000c0017e3050084770c082300000012000c002de30500a4a30c08 *1000000011000c0051e30500dccf1108000000001000100080e30500a0d2110804000000110010 *0098e30500ccf90b082300000012000c00b0e305006c6310084900000012000c00c4e305003850 *10084e00000012000c00d9e305004cf70a080000000010000c000ae40500702c0a080000000010 *000c0035e40500b0fe0e080800000011000c004ce40500cc300c080300000012000c0069e40500 *6cb30c089100000012000c0082e4050020300e081300000012000c00ace40500c8230d080c0000 *0012000c00d6e40500508d0b085500000012000c00fae40500ecd91108040000001100100015e5 *050068dd0b080800000011000c002fe5050024e8110804000000110010005be5050030290a0800 *00000010000c0084e505009cf211080400000011001000b5e50500a8e211080400000011001000 *e0e50500546210084900000012000c00f4e5050094e21108040000001100100017e6050068c711 *08000000001000100040e605001c6107080000000010000c0068e605006c430708000000001000 *0c0091e605004c5910080c00000011000c00aae60500fca40f081000000011000c00cce605003c *000f085b00000012000c00e8e60500ccb50c085100000012000c0003e705002c60070800000000 *10000c002ae7050060f71108040000001100100044e70500f8f41108040000001100100067e705 *0080e91108040000001100100096e70500d8460f085b00000012000c00b7e70500c4dc11080400 *000011001000d4e705003c4107080000000010000c00f5e70500105b10080800000011000c0004 *e80500957410085201000012000c000fe80500ccb1110800000000100010003be80500405a0b08 *0000000010000c0065e8050040f80d080600000012000c0089e805006c860e081000000011000c *00b0e8050078e90b080300000012000c00d2e80500d0c90b080c00000011000c00e4e8050084ed *0b080800000011000c00fce8050028bc120804000000110017000de9050094980d080500000012 *000c0026e90500583e0e080c00000012000c0059e905003c370c081000000011000c0085e90500 *70d111080400000011001000a1e905006fbb0f080900000012000c00ade90500a8ca0c080c0000 *0011000c00c1e90500ccb611080000000010001000f9e905008ce0110804000000110010001dea *050034b70b080c00000011000c0039ea0500f0210f081800000011000c0062ea0500d0f50c0866 *00000012000c0083ea05007cc50b080c00000012000c00adea050040b509080000000010000c00 *dfea050074f40e080c00000011000c00fdea050024a20e085b00000012000c0012eb050080610d *085b00000012000c0034eb050004d9110804000000110010004eeb050060c31108000000001000 *100081eb0500884807080000000010000c00a7eb0500e0f711080400000011001000c1eb050090 *4c0e080c00000011000c00e2eb0500f4e7110804000000110010000dec050008be090800000000 *10000c003eec0500ddc30f083b00000012000c004dec050068c20f08cb00000012000c0052ec05 *00201f0c080700000012000c0064ec0500f0700b080000000010000c008dec050010fb0e085b00 *000012000c00a5ec05003cdf0b083200000012000c00baec0500881808080000000010000c00ea *ec05008cd31108040000001100100001ed0500f8250f087700000012000c0024ed050080d40e08 *0c00000011000c004ded050080fc0b083700000012000c0064ed0500e0ec0c085400000012000c *007eed0500346107080000000010000c00a4ed0500749a04080000000010000c00b3ed0500e816 *1208000000001000f1ffbaed0500b85b0e081000000011000c00dded0500382a0e080800000011 *000c0005ee050048d41108040000001100100025ee0500acfa1108040000001100100051ee0500 *388b0f085100000012000c0075ee050030ec10080000000012020c008cee0500b8e21108040000 *0011001000aaee0500ec2f0c080c00000012000c00cdee0500b4e704080000000010000c00f1ee *050020021208040000001100100007ef0500e0aa0c081000000011000c0021ef050088b8090800 *00000010000c0053ef050028281008c304000012000c0066ef0500ec0610082c00000012000c00 *75ef0500ac480c081000000011000c008cef05004cc409080000000010000c00c1ef05000cfc11 *080400000011001000d5ef0500a0d711080400000011001000f3ef050060151208000000001100 *f1ff09f0050000000000b10000001200000019f00500acbf1108000000001000100053f00500f0 *b1110800000000100010007ff00500d0081208040000001100100095f0050058e3110804000000 *11001000b8f00500c4910c080800000012000c00d0f0050018dd11080400000011001000eaf005 *00f8280d080e00000012000c0015f105001ca30e085b00000012000c002bf1050060cd12080000 *00001000f1ff30f10500e0f3110804000000110010004df10500d44310085d00000012000c0067 *f1050018c40f084300000012000c0077f1050088c40c080800000012000c008ff10500d8890b08 *0000000010000c00bef1050004150a080000000010000c00e5f105005811120808010000110010 *00f9f1050058d51108040000001100100017f20500c01805080000000010000c003cf2050004e9 *0b080600000012000c0061f205008cd01108040000001100100083f205009cb111080000000010 *001000acf20500d8d411080400000011001000caf20500173310080900000012000c00e0f20500 *646207080000000010000c0007f305008cc81108000000001000100042f30500a8d21108040000 *00110010005ef3050080e709080000000010000c0086f30500c0f211080400000011001000b2f3 *0500c0c311080000000010001000e7f30500f06a10081e00000012000c00fef305005c790f083e *00000012000c0016f4050044770c080800000011000c0037f405008bfe0f086900000012000c00 *46f40500f0bd09080000000010000c007bf4050050940f085100000012000c009ff405008ea910 *082800000012000c00aaf40500a00012080400000011001000cdf405005c470c08100000001100 *0c00e7f4050028d311080400000011001000fcf405009eb90f082c00000012000c0008f5050010 *6910080800000011000c001df5050078fa1108040000001100100043f5050014990e085b000000 *12000c005bf5050088bf0c080c00000012000c0073f5050028830e085600000012000c0099f505 *003cee11080400000011001000c8f5050048c80b088700000012000c00e5f5050090db11080400 *000011001000fcf5050033c30f087100000012000c0007f6050080e21108040000001100100021 *f6050044bf09080000000010000c005bf605000c3b0e085900000012000c008af6050004200c08 *3a00000012000c00a4f60500dca911080000000010001000d8f60500081905080000000010000c *0002f70500508508080000000010000c003ef70500dcd2110804000000110010005df705000856 *0f082f00000012000c0071f705008c690e085b00000012000c0092f70500a41e0e080c00000011 *000c00b3f70500681605080000000010000c00def70500ac060c080700000012000c00f1f70500 *74ff1108040000001100100007f8050014dd110804000000110010001ef80500c0d11108040000 *001100100046f805006c160b080000000010000c0080f80500b45f0f085100000012000c00a3f8 *0500d4220d080c00000012000c00cbf8050048ca0b080c00000012000c00dff805003cbb0a0800 *00000010000c000ff90500286107080000000010000c0031f90500000000003a00000012000000 *42f9050000000000280100001200000054f90500b8e31108040000001100100074f90500a8b609 *080000000010000c00a8f9050048f80e080800000011000c00bff9050024cc1108000000001000 *1000e3f90500c4b21108000000001000100003fa050028e41108040000001100100027fa0500b0 *ea09080000000010000c005bfa0500a0ff1108040000001100100073fa050064050c084b000000 *12000c0087fa05004009120804000000110010009cfa050029c50f081400000012000c00a7fa05 *0034fa11080400000011001000c7fa0500a0bd09080000000010000c00fafa050048470f085100 *000012000c001dfb0500580f0e081000000011000c0032fb0500a8041208040000001100100048 *fb0500c0ff1108040000001100100064fb0500c4e70b080700000012000c007afb0500d08d0f08 *5b00000012000c009bfb0500b45210080600000012000c00adfb050084dc110804000000110010 *00ccfb050034f011080400000011001000e4fb0500845a10080800000011000c00f3fb05002933 *10080900000012000c0009fc050068ae0e080c00000011000c001ffc0500b8d411080400000011 *0010003bfc0500f0041208040000001100100051fc050084e91108040000001100100084fc0500 *48fc110804000000110010009efc0500d0e30e080c00000011000c00ccfc0500fcb11108000000 *0010001000f4fc05004c3910080c00000011000c0003fd050008220d080c00000011000c002bfd *0500748a0b080000000010000c0057fd050018be0b080300000012000c007bfd05000000000035 *000000120000008dfd0500cc1b0f085b00000012000c00aafd0500f8b609080000000010000c00 *d9fd050034ce1108000000001000100008fe0500045206080000000010000c0031fe05004cd311 *0804000000110010004afe0500601805080000000010000c0070fe050084060a08000000001000 *0c009efe050084b111080000000010001000c5fe0500e8f511080400000011001000e1fe0500e8 *ce1108000000001000100011ff050040c60c081000000011000c0028ff0500c45f070800000000 *10000c004dff050050e80e082300000012000c0072ff0500b0e61108040000001100100097ff05 *004c200c080c00000011000c00b0ff050004ee0b080c00000011000c00c6ff050070a00f085100 *000012000c00e9ff050018620f080c00000011000c00fcff0500e89a0d080c00000012000c0010 *00060008121008d401000012000c001d00060048fb110804000000110010004000060090d21108 *0400000011001000580006000000000052000000120000006a00060010dd0b080600000012000c *00820006006cd8110804000000110010009e000600406710080800000011000c00b20006005c51 *06080000000010000c00e1000600b0aa0d080c00000011000c0001010600b4160b080000000010 *000c00390106002cbc120804000000110017004a0106009ce21108040000001100100071010600 *6c610c080c00000011000c009d010600c0970c085b00000012000c00b5010600e01d0b08000000 *0010000c00e6010600ec9e05080000000010000c00150206005c2e0c080700000012000c002c02 *06002c8e0b085f00000012000c004c02060048b709080000000010000c007d0206000000000013 *000000120000008e020600e8330d081800000011000c00c0020600348a0c080c00000011000c00 *da020600947e0d082300000012000c00fa02060038df1108040000001100100029030600109805 *080000000010000c004c03060000970d085600000012000c0063030600608a0f085b0000001200 *0c007703060004690c082000000012000c009e03060080a60f085100000012000c00c1030600fc *640a080000000010000c00f003060038b809080000000010000c001d04060004580e080c000000 *12000c0047040600a80b0c084300000012000c005e040600c4ec0e082600000012000c00820406 *0070e211080400000011001000a7040600285207080000000010000c00ca040600c4e311080400 *000011001000e9040600b000120804000000110010000e05060064a61108000000001000100039 *050600003610089100000012000c004a05060014fc110804000000110010005f050600d4430c08 *2800000012000c00810506008cdd0b080300000012000c009e05060078a30f081000000011000c *00c0050600c8db0b080c00000012000c00d8050600e4c10b083000000012000c00fd050600d8e9 *1108040000001100100029060600e04e0c080700000012000c00520606002cc811080000000010 *0010008c0606003c0d0d080800000011000c00a8060600a4a20e080800000011000c00bc060600 *34a911080000000010001000e4060600eab30f081f00000012000c00fc060600708b0c080c0000 *0011000c00110706009cd71108040000001100100031070600d0240c081000000011000c004c07 *06002cdd110804000000110010006b07060034cc11080000000010001000a5070600b02e0b0800 *00000010000c00d4070600944307080000000010000c00fa070600dcf811080400000011001000 *11080600547b0c080c00000011000c002d080600a8ed0b080300000012000c0049080600b0e20b *082000000012000c006208060014e8110804000000110010008e08060050fe1108040000001100 *1000a3080600d41d0f080800000011000c00b808060034d10c080c00000011000c00d4080600b8 *da11080400000011001000f308060080d61108040000001100100024090600d0d1110804000000 *110010004109060000f60f084600000012000c0048090600a88508080000000010000c00830906 *00c0f80e085b00000012000c009b0906000cbb0e085400000012000c00c3090600a89c0b085400 *000012000c00f30906004cc311080000000010001000240a06001ce60e085900000012000c0057 *0a0600848b08080000000010000c00960a0600c4490f080c00000011000c00b90a060020df1108 *0400000011001000ec0a0600d8300c080800000011000c00050b0600b81b05080000000010000c *002c0b060080db0b080c00000011000c003e0b060034750e080c00000011000c005f0b06001c30 *10087000000011000c00760b06002cbb0a080000000010000c00a30b0600443710089100000012 *000c00b20b0600b0d10e080800000011000c00d30b0600b4ed11080400000011001000fb0b0600 *f4d710084300000012000c00060c06004cda11080400000011001000220c0600d8d01108040000 *00110010003c0c0600fc490f080c00000011000c00500c060058fc11080400000011001000660c *0600c0200a080000000010000c008c0c06004c6107080000000010000c00b90c060088d5110804 *00000011001000e70c0600744e1008bd00000012000c00fd0c060038ca0d080c00000011000c00 *0f0d06006c980f085b00000012000c00300d06003c2f0e080c00000011000c00590d060067bb0f *080800000012000c00640d060000cd0c080c00000011000c00800d0600f83b0a08000000001000 *0c00a90d060004ac11080000000010001000d40d0600c0e611080400000011001000f60d0600a4 *ed110804000000110010001b0e060060f50e080800000011000c00300e0600d4e3110804000000 *11001000560e0600f84c0e082300000012000c00790e0600e4c10c082600000012000c00920e06 *00f0dd0c082000000012000c00ab0e060064180b080000000010000c00d50e0600ec1805080000 *000010000c00fd0e060094110e080c00000011000c00120f0600d4e01108040000001100100037 *0f0600bc5210080300000012000c004a0f06007c2e0f081000000011000c00630f060050300e08 *1000000011000c00880f06009c9e08080000000010000c00bf0f06006bbf0f080100000012000c *00ca0f0600d80512080400000011001000ed0f06002cf50e080b00000012000c000c100600a842 *0c081800000011000c0031100600b8150d082f00000012000c004f100600e0ff11080400000011 *00100065100600e0fc0e080800000011000c007c100600fcd20e080800000011000c00aa100600 *d0c81008530e000012000c00b7100600400712080400000011001000da1006002c010f08460000 *0012000c00ef100600a8e41108040000001100100006110600b0df110804000000110010003311 *060098df110804000000110010006211060078850b080000000010000c008a110600cc160b0800 *00000010000c00bf1106002c8c0b080000000010000c00ed11060080cb11080000000010001000 *1e120600f4d0110804000000110010003d120600b00610083600000012000c004a120600701e0c *082300000012000c006712060048b90b083300000012000c007e120600e8b70908000000001000 *0c00af1206002c720e080800000011000c00c91206006ce60b082300000012000c00df120600a0 *330e080c00000011000c0008130600943610088400000012000c0016130600f4bd0b0808000000 *11000c003413060024a20e080800000011000c0048130600bcec11080400000011001000661306 *0050de110804000000110010009513060078de11080400000011001000c313060050a40b080c00 *000011000c00de130600985f10084900000012000c00f213060010021208040000001100100008 *140600604e0e081000000011000c002d14060048150e080c00000011000c0042140600445b1008 *0800000011000c0056140600d88b0c080c00000011000c006b1406002c5e07080000000010000c *0088140600586b10080c00000011000c009a14060030fc0d082000000012000c00b5140600a4a5 *11080000000010001000e71406000c2d0f080c00000011000c0008150600ec5106080000000010 *000c002f15060028dd1108040000001100100045150600a6b00f083800000012000c0052150600 *2ce11108040000001100100070150600c4f40e080800000011000c0086150600b4580f08100000 *0011000c009b15060070280e080800000011000c00c3150600285207080000000010000c00e715 *0600606b0c080700000012000c00fc15060060d80b083800000012000c001216060098660a0800 *00000010000c0044160600300112080400000011001000691606003cf111080400000011001000 *80160600d0e30c084f00000012000c009516060058840a080000000010000c00c616060024670a *080000000010000c00f61606008cc5110800000000100010001c1706000c6c10083b0000001200 *0c002f170600ecf30e080300000012000c004e170600b4de110804000000110010007a17060068 *0a10080c00000011000c008817060012b40f080800000012000c009717060064c8110800000000 *10001000cb170600a46d0e081300000012000c00f31706002cc6110800000000100010001e1806 *00440d0f082300000012000c003818060000000000a6000000120000004b180600a00712080400 *0000110010007018060048220f080500000012000c00991806000ccd11080000000010001000ca *18060004700f082000000012000c00e0180600447c0c080700000012000c00f618060008db0b08 *0c00000012000c000d190600889f05080000000010000c00371906003c000f080800000011000c *0052190600acd80c082000000012000c006d1906008cf70d080800000011000c00911906005c8c *0b080000000010000c00bb190600d8670c080c00000012000c00e2190600782f0c080c00000012 *000c00fd1906006012120886000000110010000b1a0600c8e411080400000011001000201a0600 *681f0c082d00000012000c00361a0600e0cf11080000000010001000631a060004d01108040000 *0011001000891a0600044207080000000010000c00b01a060020d411080400000011001000c91a *0600ccb80f082c00000012000c00d41a060094fe0b081000000011000c00e81a060084e0110804 *00000011001000111b060084140d081000000011000c002e1b060000a00f085b00000012000c00 *4f1b0600fc840b080000000010000c007c1b0600acde11080400000011001000a81b060044890f *085b00000012000c00c91b0600c0df11080400000011001000fb1b0600b0e71108040000001100 *1000151c060054b305080000000010000c00491c06000808120804000000110010005f1c0600b8 *140f081000000011000c00701c06008cb00b083c00000012000c00851c0600345b100808000000 *11000c00971c0600d41d0f085b00000012000c00ad1c0600a4b10e080c00000012000c00c11c06 *0014040f085b00000012000c00de1c06006db10f081f00000012000c00ea1c060080d711080400 *0000110010000f1d06007c740a080000000010000c00401d06002cee1108040000001100100076 *1d0600e4bc0c081800000011000c00921d0600380612080400000011001000b71d0600a41e0e08 *5b00000012000c00d91d06002c210f085b00000012000c00fd1d060014e90b080800000011000c *001e1e060040f9110804000000110010003b1e0600c8600d080c00000011000c00601e06000009 *12080400000011001000831e0600300612080400000011001000a81e0600700412080400000011 *001000cb1e0600e80512080400000011001000f01e0600fcfd110804000000110010000f1f0600 *38500f080c00000011000c00261f060018d3110804000000110010003c1f0600000000008f0100 *00120000004a1f060074de11080400000011001000761f060054970c085b00000012000c008e1f *0600500c0e083d00000012000c00a41f0600b0f70d080800000011000c00ca1f0600c0380b0800 *00000010000c00f71f0600f48e0c080c00000012000c000d20060014a711080000000010001000 *3c200600bc3b10080c00000011000c004c20060038ec09080000000010000c007d200600bcb805 *080000000010000c00a1200600c8ef11080400000011001000b920060004a80f08510000001200 *0c00dc20060020cc0b082000000012000c00f5200600144107080000000010000c0017210600e0 *3f0e080c00000011000c00422106004c1810088902000012000c0051210600e0470a0800000000 *10000c0084210600d41005080000000010000c00a5210600b4bf11080000000010001000e52106 *0050f70d080300000012000c000922060068b509080000000010000c003c220600f41f0d080800 *000011000c0064220600589f0b083e00000012000c008522060004370f085900000012000c00a2 *22060040ef0d083100000012000c00c7220600884e0c085500000012000c00df220600f0ff0f08 *1c01000012000c00e8220600f4060d082900000012000c000523060058fa0c080f00000012000c *00202306001cda110804000000110010004523060054460c080700000012000c005a23060098c4 *0c080800000011000c007e23060090160b080000000010000c00ae23060070970d081800000011 *000c00c6230600d81c0d080c00000011000c00e223060000d6110804000000110010000f240600 *54900c080c00000012000c002f2406008c9a0e080800000011000c004924060038b40e080c0000 *0011000c006924060004cc1108000000001000100094240600e4bb0e080c00000011000c00a824 *0600f4311008e600000012000c00ba240600bcf10c080800000011000c00d9240600a4300a0800 *00000010000c00ff24060070b1110800000000100010002a25060094a11108000000001000f1ff *3d250600e0f90d084800000012000c005625060058d50c080c00000012000c006d25060040c911 *0800000000100010009d250600ccc10c080900000012000c00b8250600f8900b08320000001200 *0c00dc250600689d0f085100000012000c00ff250600a8f4110804000000110010002126060094 *e91108040000001100100045260600686b0c083700000012000c005b260600548f0f0808000000 *11000c007b260600206406080000000010000c00a22606000c7c0c080c00000011000c00c42606 *00546207080000000010000c00e8260600c4b60e080c00000011000c000227060080e011080400 *0000110010001d27060024dc0b080600000012000c0039270600281010080c00000011000c0047 *27060060160b080000000010000c007d27060088d0110804000000110010009a2706009cda1108 *0400000011001000b82706009c190e088b00000012000c00d927060054fe0f081f00000012000c *00e0270600a00612080400000011001000f627060038b40e082000000012000c00172806000cd3 *110804000000110010003428060014c7110800000000100010005f28060018bf09080000000010 *000c0098280600083310082c00000011000c00ad280600801e0d080500000012000c00c4280600 *30dd0b080300000012000c00e0280600e8360f080c00000011000c00f228060080e61008030200 *0012020c00fb2806006cda1108040000001100100011290600a4000d081000000011000c003129 *0600d0e2110804000000110010004c29060068fd0b080c00000011000c0062290600fce00b08d1 *00000012000c0079290600ece80b080800000011000c0096290600c0e60f081100000012000c00 *a529060028ff11080400000011001000c829060020000b080000000010000c00fb29060050c311 *0800000000100010002f2a0600acfc0d082000000012000c00442a060098960d08590000001200 *0c005a2a0600000000006800000012000000752a0600106510080800000011000c00892a060080 *e611080400000011001000ae2a060064ab0b083000000012000c00c52a06007cf1110804000000 *11001000df2a060058fa0c081000000011000c00f92a06006803120804000000110010001f2b06 *00a4c30f083900000012000c00252b0600149e0f080800000011000c00382b060010bd09080000 *000010000c006f2b0600d4390f081000000011000c008c2b06008c8e0c080c00000012000c00a2 *2b0600b05307080000000010000c00c62b0600980312080400000011001000e92b06000ce90508 *0000000010000c001b2c0600100612080400000011001000312c0600745c0b080000000010000c *005d2c0600b0710e080800000011000c007f2c0600d03f0c083a00000012000c00aa2c0600d808 *0d080c00000011000c00bd2c06004c860b080000000010000c00e42c060090aa0d081800000011 *000c00072d060084670e081000000011000c002a2d060078a40c087500000012000c00472d0600 *70290a080000000010000c00702d06007eb90f082000000012000c007b2d0600c88e0d080c0000 *0011000c00a32d06004c2f0c080c00000011000c00bd2d060058820d085600000012000c00de2d *060060450f080800000011000c00f12d0600f0fa11080400000011001000152e0600a4ec100804 *00000011000e00242e060094600c080c00000011000c00502e0600a4200d085400000012000c00 *7c2e06009cc70b086900000012000c00942e0600245106080000000010000c00bc2e0600984b0f *085900000012000c00d72e0600d4d00e085b00000012000c00ec2e0600b4de0b08100000001100 *0c00032f0600f4ab11080000000010001000302f0600583110081e00000012000c00572f0600f8 *c711080000000010001000902f0600dcc311080000000010001000ca2f060090d0110804000000 *11001000e82f06006bd00f081300000012000c00f72f060004f211080400000011001000113006 *0048be0b080700000012000c002330060084d41108040000001100100041300600e8c40b088700 *000012000c006430060040fe0e080800000011000c007b30060064f20c081000000011000c0097 *30060074650c082300000012000c00c3300600e84607080000000010000c00f230060090660f08 *4c00000012000c00123106003c3d0f086001000012000c0025310600c8210f080800000012000c *004e310600d8e51108040000001100100065310600fc940f080800000011000c0078310600c0bc *120804000000110017009131060040020c082300000012000c00a83106003c710e085b00000012 *000c00ca3106009ca70b080700000012000c00e23106000cef09080000000010000c0008320600 *e0930f080800000011000c00283206001c2a08080000000010000c0067320600e8dc1108040000 *00110010008c320600c0190f085b00000012000c00a7320600ec6007080000000010000c00d032 *0600d4d711080400000011001000ff320600805f0c080e00000012000c002d3306000420050800 *00000010000c005533060094d70e080800000012000c007f33060038ed11080400000011001000 *a0330600a0230d080c00000011000c00c9330600380e1008e101000012000c00d63306007c2e0f *082e00000012000c00f0330600b0d40d081000000011000c001034060040280a08000000001000 *0c003734060044b305080000000010000c00663406002cc71108000000001000100093340600ec *060e080c00000011000c00a9340600ec9f0d085600000012000c00ce3406004c810d0808000000 *11000c00e934060074770c080600000012000c000a3506005007120804000000110010002f3506 *003ce40b081000000011000c004f350600bcb90c080500000012000c006a350600a4fa11080400 *00001100100095350600c0f411080400000011001000b8350600449e0d080c00000011000c00d4 *35060084c20c082000000012000c00ef35060008b21108000000001000100017360600448a0d08 *0c00000011000c003f36060098b40c081800000011000c0059360600701e0c080c00000011000c *00753606008808120804000000110010008b360600d0160f081000000011000c009f3606001cd5 *11080400000011001000be360600b0f711080400000011001000d8360600f8250f081000000011 *000c00fa360600d0b70a080000000010000c002437060090b509080000000010000c0056370600 *ccba0a080000000010000c0088370600d4d611080400000011001000b637060064b61108000000 *0010001000f7370600986810081e00000012000c000d380600c8f4110804000000110010003038 *0600981005080000000010000c0051380600b45e0f085b00000012000c006538060034aa0f085b *00000012000c00793806007ed00f089400000012000c008c38060048cf0b080c00000011000c00 *a438060090a10b080c00000011000c00be3806005ca411080000000010001000e8380600384610 *081b01000012000c00fe380600f8990e081800000011000c0017390600105f0c08060000001200 *0c004639060050c7110800000000100010006f39060034b909080000000010000c009f3906004c *090d085b00000012000c00bc39060028830e080c00000011000c00e139060040f50d080c000000 *11000c00fa390600c81b0b080000000010000c00273a060024b305080000000010000c004e3a06 *007ca30b085100000012000c006e3a06001c2f0e080c00000011000c00973a060084ee11080400 *000011001000b13a060014f811080400000011001000c83a0600d4f211080400000011001000f5 *3a0600f0130e080800000011000c00133b0600381d0a080000000010000c003c3b06000cc70908 *0000000010000c00693b0600f8790c082300000012000c007f3b0600582d0c080300000012000c *009e3b0600b0c511080000000010001000c83b0600c0300c080800000011000c00e13b0600e450 *0c083a00000012000c000d3c0600ecba0a080000000010000c00403c0600000000008701000012 *000000573c060094210d081800000011000c00803c0600085e0f083000000012000c009c3c0600 *90c80c082000000012000c00b03c060013ba0f083700000012000c00bd3c060034d51108040000 *0011001000db3c060028240e080800000011000c00ee3c0600e85d10080300000012000c00023d *06003dcf0f082000000012000c000d3d0600e8d911080400000011001000273d06009018050800 *00000010000c004f3d0600dce911080400000011001000743d0600f8d605080000000010000c00 *a63d06004c090d080800000011000c00c23d0600bcdc0b080600000012000c00dc3d0600c04410 *085e00000012000c00ea3d0600c0950d080800000011000c00053e060018001208040000001100 *1000283e060000eb0e085b00000012000c004a3e06002801120804000000110010006f3e060028 *810d080300000012000c008f3e060024f00c085400000012000c00a93e0600f4c1110800000000 *10001000e43e0600fcd011080400000011001000033f0600b8210d080500000012000c002c3f06 *00dcd611080400000011001000553f06004cc8110800000000100010008a3f0600686007080000 *000010000c00b73f0600382a0e085400000012000c00e03f0600a8300c080800000011000c00f8 *3f060098bb0b080c00000012000c000e4006004d3310080900000012000c00244006002cd81108 *04000000110010003c4006001c8c0b080000000010000c006640060090c20e082300000012000c *007e400600d8cf11080000000010001000ab40060010fb0e080800000011000c00c2400600949d *0d085b00000012000c00d7400600b8860c082000000012000c000041060010190b080000000010 *000c0029410600a8af1108000000001000100055410600e4300c080300000012000c0072410600 *384005080000000010000c009841060078ad0e080c00000012000c00ae410600e0e70f085a0000 *0012000c00bc410600d00212080400000011001000e14106000c6d0e080600000012000c000242 *060070e01108040000001100100025420600444307080000000010000c004e420600d01e060800 *00000010000c00814206002cbb120804000000110017008b42060078bb0f080900000012000c00 *9842060038510c082300000012000c00c342060010f80d080800000011000c00e7420600d4f10c *080300000012000c0002430600a88d0b080700000012000c001f43060044bf0908000000001000 *0c00584306008c2406080000000010000c0093430600000000001400000012000000a24306005c *240f084d00000012000c00c44306007c060d081f00000012000c00ea43060038bb120804000000 *11001700f743060074f70d080800000011000c001d440600782f0c080c00000011000c00374406 *0054c705080000000010000c006944060074070d080c00000012000c00814406000cbb0a080000 *000010000c00b3440600fc940f085b00000012000c00c74406001c6c0f080c00000011000c00db *44060008cc110800000000100010001145060078b21108000000001000100032450600cc920f08 *1000000011000c0054450600481e0d081800000011000c006b450600946107080000000010000c *0093450600c0a211080000000010001000ba4506005c520f080c00000011000c00cc450600dcd5 *0e080800000011000c00f445060088bf0c080c00000011000c000b4606006c160b080000000010 *000c0046460600f0250e085400000012000c00784606001cee1108040000001100100096460600 *bc810c080300000012000c00b5460600b05307080000000010000c00da460600c0d01108040000 *0011001000f2460600cc130e080800000011000c000a470600a49905080000000010000c003847 *0600c4cf11080000000010001000624706008c2406080000000010000c009c47060098a2110800 *00000010001000c047060044e20b085400000012000c00d9470600b4620c080c00000011000c00 *05480600000000003400000012000000184806002c6007080000000010000c00404806001ca90e *080800000011000c0064480600f0bb0b080300000012000c0081480600b8e41108040000001100 *1000984806001cbb0a080000000010000c00cc4806008c2f0e080c00000011000c00f5480600ec *e9110804000000110010001e490600cca2110800000000100010004a4906000000000065010000 *120000005c49060048f60d082000000012000c007849060094c611080000000010001000a14906 *00d03b1008b200000012000c00b04906000ca90e080600000012000c00d7490600ecee11080400 *000011001000f449060098cb0d085b00000012000c000e4a060094bb0f080800000012000c001a *4a060054200e085b00000012000c003d4a060024770c080800000011000c005e4a06004cbf0e08 *0c00000011000c00734a060040dd0b080800000011000c008d4a06003cea110804000000110010 *00b34a060018b00e081000000011000c00d84a06005c0510086100000012000c00f04a0600a816 *0b080000000010000c002f4b0600b8ba12080400000011001700344b06005c170b080000000010 *000c005f4b06009c300c080300000012000c007a4b0600fc960e086800000012000c008f4b0600 *e4510f081000000011000c00a14b0600f0dc11080400000011001000c44b0600d0b60908000000 *0010000c00f34b0600d8e211080400000011001000154c06009cdc0b080600000012000c002f4c *0600cd640a080000000010000c00594c060060aa0d080a00000012000c007c4c060050890c0808 *00000011000c00a64c06004cee11080400000011001000d04c0600d01f0d080c00000011000c00 *f94c0600a0a111080000000010001000064d060024cb0d085b00000012000c00204d0600780312 *080400000011001000364d060060ed0b080300000012000c00514d060008310c087d0000001200 *0c00644d0600845d10080800000011000c007c4d060060e911080400000011001000aa4d06003c *d711080400000011001000d44d06003cd411080400000011001000fa4d06007c660a0800000000 *10000c00314e060060650a080000000010000c00614e06007c6107080000000010000c008a4e06 *00cc300c080800000011000c00a64e060074df11080400000011001000d04e0600541d0d082000 *000012000c00ee4e0600245a0b080000000010000c001c4f06000c750f084a00000012000c0032 *4f060064890a080000000010000c00674f0600481405080000000010000c00884f060020e81108 *0400000011001000b44f0600c4be0b080700000012000c00c94f060074a7110800000000100010 *00f34f0600949e0d085b00000012000c000b5006003cdf0b080c00000011000c001f50060020e5 *1108040000001100100034500600b0fa110804000000110010006050060018f411080400000011 *001000855006006c650e080c00000011000c00ab50060078ee11080400000011001000cd500600 *fc9d0d080c00000011000c00e25006005cd70b084500000012000c000751060044ca1108000000 *00100010003651060008d51108040000001100100053510600000f0a080000000010000c008651 *060088a211080000000010001000ac510600b06b0b080000000010000c00d751060094b1110800 *0000001000100002520600c4f20b082300000012000c001a520600d0f611080400000011001000 *34520600fc5a10080800000011000c0043520600f0860e083200000012000c006a5206006c5f0d *080600000012000c009c5206007cea0b080c00000012000c00b852060044ee1108040000001100 *1000df52060050810c080c00000012000c00fd520600244b0c081a00000012000c00275306002c *e8110804000000110010004f530600e0b50b082300000012000c006b530600dc720f0810000000 *11000c0083530600f8ed110804000000110010009c53060054df11080400000011001000c45306 *00d4870b080000000010000c00ef53060050be0b087300000012000c000254060000e611080400 *00001100100026540600cc320b080000000010000c005354060030071208040000001100100069 *54060048f6110804000000110010008254060026b20f082a00000012000c0091540600c48f0f08 *1000000011000c00b3540600206007080000000010000c00e0540600c4c6110800000000100010 *000b550600b4c30c080c00000011000c00275506009c160b080000000010000c0062550600a4c8 *1108000000001000100096550600245206080000000010000c00c255060038610d083000000012 *000c00e1550600f0e11108040000001100100002560600786a10081e00000012000c0019560600 *3c6110084900000012000c002d56060070f3110804000000110010005b560600a0aa0e08180000 *0011000c00715606002c250d081a00000012000c009b560600d0c90b083e00000012000c00ae56 *060068a50e080800000011000c00c356060014f70d080300000012000c00ed5606000000000000 *00000020000000015706000000000071000000120000001a5706003c330e080600000012000c00 *47570600bceb110804000000110010006d57060034fc0b080c00000011000c008557060040d011 *080400000011001000a8570600a4a20e085b00000012000c00bd57060044d70e08080000001200 *0c00e757060065d20f081b00000012000c00f15706006abf0f080100000012000c00fa57060034 *840c082300000012000c0027580600e8cf1108000000001000100059580600ec18050800000000 *10000c0082580600180512080400000011001000a7580600eceb11080400000011001000cd5806 *00843c10082901000012000c00d858060008b609080000000010000c000b590600200912080400 *0000110010002e59060044e8110804000000110010005b59060094cd110800000000100010008a *590600acf211080400000011001000bb590600c0200e085b00000012000c00de59060080d40e08 *1900000012000c00085a060030f80d080600000012000c00295a060054f0110804000000110010 *00445a0600ccb2110800000000100010006b5a0600b6a910082800000012000c00745a060014cf *0c085900000012000c008a5a0600b4a40b080c00000011000c00a75a0600283f0c080500000012 *000c00d25a060090d611080400000011001000045b0600c8cf110800000000100010002e5b0600 *081c0a080000000010000c00575b06003ca20b080c00000011000c00725b060090051208040000 *0011001000955b0600604a0f080800000011000c00b15b060098c40c080300000012000c00d65b *06005cd00c080c00000011000c00f85b0600f4b1110800000000100010001f5c0600b0ee110804 *000000110010003b5c060028960d080c00000011000c00505c0600246207080000000010000c00 *755c0600e0800f080800000011000c00885c0600083a10083100000012000c00965c0600e8ed0c *081000000011000c00b75c060038ca0d085900000012000c00ca5c06001cdd1108040000001100 *1000e45c060080d311080400000011001000fd5c0600241d0e081800000011000c001e5d060098 *d8110804000000110010003e5d060018e8110804000000110010006a5d060020eb0b080c000000 *12000c007e5d06005cf70d080800000011000c00a65d0600dc9b05080000000010000c00d45d06 *009cf311080400000011001000055e060020220e081000000011000c001f5e0600c8f10c080800 *000011000c00415e060008db0b080c00000011000c00575e0600c05210081000000012000c0073 *5e060080d011080400000011001000915e060068f70d080800000011000c00bb5e060064d61108 *0400000011001000e95e06009c5810082c00000011000c00ff5e0600e4500c080c00000011000c *002a5f0600948c0b080700000012000c00425f0600acd3110804000000110010005d5f0600e4d1 *11080400000011001000745f0600f4cb11080000000010001000a55f060034830f080800000011 *000c00c55f060004c40c082000000012000c00e05f0600081905080000000010000c0009600600 *08d80e082200000012000c0033600600b0ed0c082300000012000c0057600600dc9e0508000000 *0010000c00836006001cdb110804000000110010009c60060010db11080400000011001000b260 *060012d10f088f00000012000c00c0600600b4ca0d080800000011000c00d960060018220f0818 *00000011000c000261060034a90e080600000012000c002861060060210d080c00000011000c00 *5161060018be0b080800000011000c007461060040bb120858000000110017007d610600e0b509 *080000000010000c00b06106006ced0b080300000012000c00c9610600ccc40c08080000001100 *0c00f2610600cc9b0b085b00000012000c001362060070b30f081f00000012000c00296206006c *8f0c080c00000011000c003e620600a2ba0f082000000012000c004e62060000cc110800000000 *100010008562060058a806080000000010000c00ae620600a4830f085100000012000c00d16206 *00cc9b0b080800000011000c00f1620600fc160b080000000010000c002b63060080b111080000 *0000100010005363060028001208040000001100100078630600ecd11108040000001100100091 *63060064c711080000000010001000be630600a8c511080000000010001000e8630600780b0e08 *3500000012000c00fe63060026891008af00000012000c000664060038280e080500000012000c *002f64060008ff11080400000011001000526406009c380e085900000012000c00816406001cc0 *11080000000010001000bb64060054c811080000000010001000f0640600000000004700000012 *0000000565060030880f085100000012000c002865060038fa1108040000001100100047650600 *e4c20e081000000011000c005c650600dc140e085b00000012000c0072650600800e0508000000 *0010000c009a650600a08a0c080c00000012000c00b06506001c8c0b080000000010000c00db65 *0600dc0e0e086000000012000c00ee65060004640c080c00000011000c0016660600e8ac0b080c *00000011000c002e660600cc820f080800000011000c004d66060034e011080400000011001000 *71660600f03710089100000012000c0080660600d8a211080000000010001000a46606003cdc0b *080300000012000c00bc6606000c460d081000000011000c00e8660600f0e21108040000001100 *1000fd6606005cd70b080c00000011000c002167060080ab0f081c00000012000c0035670600d8 *5107080000000010000c005d670600688d0c080c00000012000c0075670600e8830d080c000000 *11000c009b67060060e80b080c00000011000c00b4670600f4e411080400000011001000cd6706 *002c060d080c00000011000c00ea6706008cf00c080c00000011000c001168060034d611080400 *0000110010003e68060028c60e080800000011000c005a68060028240e085b00000012000c006e *680600d0480c080700000012000c008a6806009c160b080000000010000c00c468060098d21108 *0400000011001000dc680600f05610083d00000012000c00ec680600ccd2110804000000110010 *000e69060084140d084a00000012000c002c69060010a60f085b00000012000c004e690600c4f8 *110804000000110010006a69060034ac1108000000001000100094690600cccb0e080b00000012 *000c00ac690600000000007c00000012000000bc690600d4530f080c00000011000c00d1690600 *984a0f085b00000012000c00eb6906006cf111080400000011001000046a060020e71108040000 *00110010001c6a0600f80112080400000011001000416a06006cfc0e080800000011000c00586a *060094ed110804000000110010007a6a060048a10b080c00000011000c00956a060064b3050800 *00000010000c00c46a0600f0e511080400000011001000e86a060080dd0b080800000011000c00 *016b060044060e083000000012000c00196b06003cc8110800000000100010004d6b060028400a *080000000010000c00806b0600dce511080400000011001000986b0600fcc61108000000001000 *1000c26b0600accf11080000000010001000f16b060038120f081000000011000c000a6c0600e4 *2a0d081000000011000c00366c0600341f0d085400000012000c00636c0600307e0c0810000000 *11000c007b6c0600fc2a07080000000010000c009f6c060034170e081000000011000c00b46c06 *003cdc0b080800000011000c00cb6c060072ba0f083000000012000c00d86c06003c3d0f081000 *000011000c00ea6c0600bcd2110804000000110010000c6d0600703a0e085900000012000c003b *6d06007cc611080000000010001000666d060037d810084500000012000c00766d060070d51108 *0400000011001000a06d0600000000001001000012000000b66d060024c510087700000012000c *00c66d060018f811080400000011001000e36d060050cc09080000000010000c000d6e0600c423 *0e080c00000011000c002a6e060044a20d080c00000011000c004d6e060038cc11080000000010 *001000876e06007c6107080000000010000c00b16e0600e4c105080000000010000c00e16e0600 *c8b812080400000011001700f26e060074c311080000000010001000266f0600f0ef1108040000 *0011001000486f0600f4ad0e082000000012000c005f6f0600e4c10c080c00000011000c00776f *0600d8090f080c00000011000c00886f060038ce0c080c00000011000c009e6f0600d4a00e0808 *00000011000c00b16f0600b4980d081800000011000c00c96f0600fc9e05080000000010000c00 *f66f0600105f0c080800000011000c002470060014b90c082300000012000c003e700600e8960c *080800000011000c0054700600d03b10080c00000011000c0064700600501f0f085b0000001200 *0c008170060058de0b080800000011000c009f7006007ce911080400000011001000ce70060034 *750e083e00000012000c00f0700600f46107080000000010000c001f710600f005120804000000 *1100100044710600e48e0d080d00000012000c006b710600d09e0c081800000011000c00827106 *00642e0c084b00000012000c009a71060060d011080400000011001000cd710600f8d605080000 *000010000c00fe71060048b709080000000010000c002e720600d0920c080800000011000c0048 *720600c0c8110800000000100010007c720600740e0a080000000010000c00a572060088e11108 *0400000011001000bb7206000cf80b080c00000011000c00d3720600ecc3110800000000100010 *000773060098d3110804000000110010001e730600e4510f082900000012000c003173060060fa *0d080c00000011000c004e730600186b0c080600000012000c007b7306007cd011080400000011 *001000987306006cb211080000000010001000bd73060060e311080400000011001000e1730600 *2cfe0b081000000011000c00f57306007c9f05080000000010000c001d7406000cea1108040000 *0011001000407406006c2207080000000010000c0062740600004c0f080c00000011000c008174 *06008c6f0f080c00000011000c0094740600046107080000000010000c00bf740600dc5b100808 *00000011000c00d5740600dc980f081000000011000c00f7740600a4af0c080800000011000c00 *09750600b8f20c081000000011000c0029750600a8420c082800000012000c004f750600944307 *080000000010000c0076750600f4460c081000000011000c0090750600a8a50f085b0000001200 *0c00a4750600e0f611080400000011001000be75060084e90b080800000011000c00dd75060066 *0410083400000012000c00ef75060080a81108000000001000100012760600e0f70d0806000000 *12000c0038760600b8b509080000000010000c006976060092e20f083600000012000c007a7606 *000803120804000000110010009d76060034e411080400000011001000ba7606005cdb11080400 *000011001000d376060064ee11080400000011001000eb7606006cd11108040000001100100006 *770600506007080000000010000c002d77060028d711080400000011001000557706001ccb0e08 *0500000012000c006d770600c8810c080800000011000c008e770600c0870f085b00000012000c *00af77060044b60b081000000011000c00c9770600b0a211080000000010001000f6770600ccfa *1108040000001100100025780600c2ba0f082000000012000c002f780600b8f011080400000011 *0010004e78060010a40e085b00000012000c0064780600c4dc0b080c00000011000c0083780600 *d8810c082300000012000c00a67806005c5d10080800000011000c00b87806000ccc1108000000 *0010001000f278060054250d082600000012000c0022790600d03f0c081000000011000c004c79 *060020da110804000000110010006c790600a0d6110804000000110010009d79060060b8090800 *00000010000c00cd79060088990f085b00000012000c00e179060008f70d080800000011000c00 *0b7a0600b02a07080000000010000c002f7a0600dc4910089500000012000c00417a060054dc11 *080400000011001000587a0600e0800f085b00000012000c006c7a060050ba0e085b0000001200 *0c00827a0600b8150d081000000011000c009f7a0600f4d911080400000011001000ba7a060000 *0000007f02000012000000c57a060000f80d080600000012000c00ec7a06002c6b10081e000000 *12000c00037b060090c80c081000000011000c00167b06005c6c0c081000000011000c002f7b06 *0060fa0d080c00000012000c004d7b0600742b0a080000000010000c00767b0600099410081100 *000012000c007f7b0600c8890c082000000012000c009a7b060020000b080000000010000c00cc *7b06002c100a080000000010000c00fc7b0600249b04080000000010000c000e7c060000000000 *00000000200000001d7c0600886910080800000011000c00327c0600dce80b080800000011000c *00547c06003c030f080c00000011000c006f7c0600ece00b080600000012000c00967c06009c27 *0b080000000010000c00bd7c0600000000007f00000012000000ce7c0600fceb11080400000011 *001000f47c0600b4300c080300000012000c00107d0600f8060c080300000012000c002a7d0600 *1ccf110800000000100010005e7d060050980d084100000012000c00787d060070c31108000000 *0010001000ae7d060044f70d080800000011000c00d47d060070d311080400000011001000eb7d *06003ccc05080000000010000c001d7e0600d4f50e081800000011000c00377e0600ccf60d080c *00000012000c00557e0600908c0c080c00000012000c006e7e0600f0de11080400000011001000 *987e060004e90b080800000011000c00bc7e060060280e080500000012000c00e57e06002c250d *080c00000011000c000e7f06002c860d080a00000012000c00307f06004cee0b080c0000001100 *0c00497f060010a70b083700000012000c005f7f0600f80712080400000011001000757f0600a8 *f90e085b00000012000c008d7f060000db11080400000011001000b27f0600dce00b0808000000 *11000c00d57f0600e4440a080000000010000c00008006009d180b080000000010000c00003c63 *6f6d6d616e64206c696e653e002f686f6d652f676f746f6d2f64656269616e2f676c6962632f63 *76732f6275696c642e6c6f63616c2f676c6962635f322e332e322e6473312d31392e7465737434 *2f676c6962632d322e332e322e6473312f6275696c642d747265652f693338362d6c6962632f63 *6f6e6669672e68003c6275696c742d696e3e006162692d6e6f74652e53002f686f6d652f676f74 *6f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f676c6962635f32 *2e332e322e6473312d31392e74657374342f676c6962632d322e332e322e6473312f6275696c64 *2d747265652f693338362d6c6962632f6373752f6162692d7461672e6800696e69742e63002f68 *6f6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f *676c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e6473 *312f6275696c642d747265652f693338362d6c6962632f6373752f637274692e53002f686f6d65 *2f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f676c69 *62635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e6473312f62 *75696c642d747265652f693338362d6c6962632f6373752f646566732e6800696e697466696e69 *2e630063616c6c5f676d6f6e5f73746172740063727473747566662e63005f5f43544f525f4c49 *53545f5f005f5f44544f525f4c4953545f5f005f5f4a43525f4c4953545f5f00702e3000636f6d *706c657465642e31005f5f646f5f676c6f62616c5f64746f72735f617578006672616d655f6475 *6d6d79005f5f43544f525f454e445f5f005f5f44544f525f454e445f5f005f5f4652414d455f45 *4e445f5f005f5f4a43525f454e445f5f005f5f646f5f676c6f62616c5f63746f72735f61757800 *2f686f6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f6361 *6c2f676c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e *6473312f6275696c642d747265652f693338362d6c6962632f6373752f6372746e2e5300723264 *575f73727400723264575f636c6f7375726500723264575f696e666f00733265695f696e666f00 *733265695f656e74727900733265615f696e666f00733265615f656e74727900733265635f696e *666f00733265635f656e74727900733265375f696e666f00733265375f656e7472790073326565 *5f696e666f00733265655f656e74727900733265675f696e666f00733265675f656e7472790073 *326f305f696e666f0073326f305f72657400723264575f656e74727900723264595f7372740072 *3264595f636c6f7375726500723264595f696e666f0073326e515f696e666f0073326e515f7265 *7400733265445f315f616c7400733265525f696e666f00733265525f656e74727900733265465f *696e666f00733265465f656e74727900733265485f696e666f00733265485f656e747279007332 *65795f696e666f00733265795f656e747279007332654a5f696e666f007332654a5f656e747279 *00733265775f696e666f00733265775f656e747279007332654c5f696e666f007332654c5f656e *7472790073326e575f696e666f0073326e575f72657400733265445f325f616c7400733265445f *7674626c00723264595f656e7472790073326d725f737274640073326d635f737274640073326d *615f737274640073326d745f73727464007332666e5f737274640073326e4e5f696e666f007332 *6e4e5f72657400733266715f696e666f00733266715f656e74727900733266695f696e666f0073 *3266695f656e74727900733266735f696e666f00733266735f656e74727900733268705f737274 *640073326e645f73727464007332686e5f73727464007332686b5f7372746400733268685f696e *666f00733268685f656e74727900733268665f737274640073326e665f737274640073326e685f *7372746400733268645f696e666f00733268645f656e7472790073326e685f315f616c74007332 *68625f696e666f00733268625f656e7472790073326e685f325f616c740073326e685f7674626c *0073326e665f696e666f0073326e665f72657400733268665f696e666f00733268665f656e7472 *79007332686b5f696e666f007332686b5f656e74727900733268325f7372746400733268305f73 *72746400733267595f737274640073326e725f315f616c74007332674e5f696e666f007332674e *5f656e74727900733267515f696e666f00733267515f656e7472790073326e725f325f616c7400 *73326e725f7674626c0073326e695f696e666f0073326e695f72657400733267535f696e666f00 *733267535f656e7472790073326e425f315f616c7400733267745f696e666f00733267745f656e *74727900733267775f696e666f00733267775f656e7472790073326e425f325f616c740073326e *425f7674626c0073326e735f696e666f0073326e735f72657400733267795f696e666f00733267 *795f656e74727900733267555f696e666f00733267555f656e7472790073326e4c5f315f616c74 *0073326e4d5f315f616c740073326e4d5f325f616c740073326e4d5f335f616c740073326e4d5f *64666c740073326e4d5f7674626c00733267345f696e666f00733267345f656e74727900733267 *305f696e666f00733267305f656e74727900733267365f696e666f00733267365f656e74727900 *73326e4c5f325f616c740073326e4c5f7674626c0073326e4b5f315f616c7400733267395f696e *666f00733267395f656e74727900733267635f696e666f00733267635f656e7472790073326e4b *5f325f616c740073326e4b5f7674626c0073326e435f696e666f0073326e435f72657400733267 *655f696e666f00733267655f656e74727900733267575f696e666f00733267575f656e74727900 *733267595f696e666f00733267595f656e74727900733266495f696e666f00733266495f656e74 *727900733268305f696e666f00733268305f656e74727900733268325f696e666f00733268325f *656e747279007332686e5f696e666f007332686e5f656e74727900733266475f696e666f007332 *66475f656e7472790073326e645f696e666f0073326e645f72657400733268705f696e666f0073 *3268705f656e74727900733266785f696e666f00733266785f656e747279007332685a5f737274 *640073326e375f7372746400733268585f7372746400733268565f7372746400733268545f696e *666f00733268545f656e74727900733268525f737274640073326e615f737274640073326e635f *7372746400733268505f696e666f00733268505f656e7472790073326e635f315f616c74007332 *684e5f696e666f007332684e5f656e7472790073326e635f325f616c740073326e635f7674626c *0073326e615f696e666f0073326e615f72657400733268525f696e666f00733268525f656e7472 *7900733268565f696e666f00733268565f656e74727900733268455f7372746400733268435f69 *6e666f00733268435f656e74727900733268455f696e666f00733268455f656e74727900733268 *585f696e666f00733268585f656e74727900733268415f696e666f00733268415f656e74727900 *73326e375f696e666f0073326e375f726574007332685a5f696e666f007332685a5f656e747279 *00733268725f696e666f00733268725f656e747279007332697a5f737274640073326e315f7372 *746400733269785f7372746400733269765f7372746400733269745f696e666f00733269745f65 *6e74727900733269725f737274640073326e345f737274640073326e365f737274640073326970 *5f696e666f00733269705f656e7472790073326e365f315f616c74007332696e5f696e666f0073 *32696e5f656e7472790073326e365f325f616c740073326e365f7674626c0073326e345f696e66 *6f0073326e345f72657400733269725f696e666f00733269725f656e74727900733269765f696e *666f00733269765f656e74727900733269655f7372746400733269635f696e666f00733269635f *656e74727900733269655f696e666f00733269655f656e74727900733269785f696e666f007332 *69785f656e74727900733269615f696e666f00733269615f656e7472790073326e315f696e666f *0073326e315f726574007332697a5f696e666f007332697a5f656e74727900733269315f696e66 *6f00733269315f656e7472790073326a655f737274640073326d585f737274640073326d5a5f73 *7274640073326a635f737274640073326a615f73727464007332695a5f696e666f007332695a5f *656e7472790073326a335f696e666f0073326a335f656e7472790073326a365f696e666f007332 *6a365f656e74727900733269575f696e666f00733269575f656e7472790073326a385f696e666f *0073326a385f656e7472790073326a615f696e666f0073326a615f656e7472790073326a635f69 *6e666f0073326a635f656e74727900733269555f696e666f00733269555f656e7472790073326d *5a5f696e666f0073326d5a5f7265740073326d585f696e666f0073326d585f7265740073326a65 *5f696e666f0073326a655f656e74727900733269485f696e666f00733269485f656e7472790073 *326b365f737274640073326d505f737274640073326d525f737274640073326b345f7372746400 *73326b325f737274640073326b305f737274640073326a595f696e666f0073326a595f656e7472 *790073326a575f737274640073326d555f737274640073326d575f737274640073326a555f696e *666f0073326a555f656e7472790073326d575f315f616c740073326a535f696e666f0073326a53 *5f656e7472790073326d575f325f616c740073326d575f7674626c0073326d555f696e666f0073 *326d555f7265740073326a575f696e666f0073326a575f656e7472790073326b305f696e666f00 *73326b305f656e7472790073326a4a5f737274640073326a485f696e666f0073326a485f656e74 *72790073326a4a5f696e666f0073326a4a5f656e7472790073326b325f696e666f0073326b325f *656e7472790073326a465f737274640073326a445f737274640073326a425f696e666f0073326a *425f656e7472790073326a445f696e666f0073326a445f656e7472790073326a465f696e666f00 *73326a465f656e7472790073326b345f696e666f0073326b345f656e7472790073326a7a5f696e *666f0073326a7a5f656e7472790073326d525f696e666f0073326d525f7265740073326d505f69 *6e666f0073326d505f7265740073326b365f696e666f0073326b365f656e7472790073326a6d5f *696e666f0073326a6d5f656e7472790073326b475f737274640073326d4a5f737274640073326b *455f737274640073326b435f737274640073326b415f696e666f0073326b415f656e7472790073 *326b795f737274640073326d4d5f737274640073326d4f5f737274640073326b775f696e666f00 *73326b775f656e7472790073326d4f5f315f616c740073326b755f696e666f0073326b755f656e *7472790073326d4f5f325f616c740073326d4f5f7674626c0073326d4d5f696e666f0073326d4d *5f7265740073326b795f696e666f0073326b795f656e7472790073326b435f696e666f0073326b *435f656e7472790073326b6c5f737274640073326b6a5f696e666f0073326b6a5f656e74727900 *73326b6c5f696e666f0073326b6c5f656e7472790073326b455f696e666f0073326b455f656e74 *72790073326b685f696e666f0073326b685f656e7472790073326d4a5f696e666f0073326d4a5f *7265740073326b475f696e666f0073326b475f656e7472790073326b385f696e666f0073326b38 *5f656e7472790073326c795f737274640073326d415f737274640073326d435f73727464007332 *6d455f737274640073326c355f696e666f0073326c355f656e7472790073326c775f7372746400 *73326c755f737274640073326c735f696e666f0073326c735f656e7472790073326c715f737274 *640073326d475f737274640073326d495f737274640073326c6f5f696e666f0073326c6f5f656e *7472790073326d495f315f616c740073326c6d5f696e666f0073326c6d5f656e7472790073326d *495f325f616c740073326d495f7674626c0073326d475f696e666f0073326d475f726574007332 *6c715f696e666f0073326c715f656e7472790073326c755f696e666f0073326c755f656e747279 *0073326c645f737274640073326c625f696e666f0073326c625f656e7472790073326c645f696e *666f0073326c645f656e7472790073326c775f696e666f0073326c775f656e7472790073326c39 *5f696e666f0073326c395f656e7472790073326d455f696e666f0073326d455f7265740073326d *435f696e666f0073326d435f7265740073326d415f696e666f0073326d415f7265740073326c79 *5f696e666f0073326c795f656e7472790073326b4f5f696e666f0073326b4f5f656e7472790073 *326d385f737274640073326d755f737274640073326d365f737274640073326d345f7372746400 *73326d325f696e666f0073326d325f656e7472790073326d305f737274640073326d785f737274 *640073326d7a5f737274640073326c595f696e666f0073326c595f656e7472790073326d7a5f31 *5f616c740073326c575f696e666f0073326c575f656e7472790073326d7a5f325f616c74007332 *6d7a5f7674626c0073326d785f696e666f0073326d785f7265740073326d305f696e666f007332 *6d305f656e7472790073326d345f696e666f0073326d345f656e7472790073326c4e5f73727464 *0073326c4c5f696e666f0073326c4c5f656e7472790073326c4e5f696e666f0073326c4e5f656e *7472790073326d365f696e666f0073326d365f656e7472790073326c4a5f696e666f0073326c4a *5f656e7472790073326d755f696e666f0073326d755f7265740073326d385f696e666f0073326d *385f656e7472790073326c415f696e666f0073326c415f656e747279007332666e5f696e666f00 *7332666e5f7265740073326d745f696e666f0073326d745f7265740073326d615f696e666f0073 *326d615f656e74727900733266395f696e666f00733266395f656e7472790073326d635f696e66 *6f0073326d635f656e7472790073326d725f696e666f0073326d725f7265740073326d6c5f696e *666f0073326d6c5f656e7472790073326d6d5f696e666f0073326d6d5f72657400723163355f73 *727400723163355f636c6f7375726500723163355f696e666f00733159655f696e666f00733159 *655f656e74727900733159375f696e666f00733159375f656e74727900733159675f696e666f00 *733159675f656e74727900733159695f696e666f00733159695f656e74727900733159345f696e *666f00733159345f656e747279007331596b5f696e666f007331596b5f656e7472790072316335 *5f656e747279007231624f5f737274007231624f5f636c6f73757265007231624f5f696e666f00 *733269695f315f616c74007331594a5f315f616c74007331594a5f325f616c74007331594a5f76 *74626c00733269695f325f616c7400733269695f7674626c007331594b5f696e666f007331594b *5f656e747279007332696c5f315f616c740073315a7a5f696e666f0073315a7a5f656e74727900 *73315a425f696e666f0073315a425f656e747279007332696c5f325f616c740073315a675f696e *666f0073315a675f656e7472790073315a695f696e666f0073315a695f656e7472790073315a6b *5f696e666f0073315a6b5f656e747279007332696c5f335f616c74007332696c5f7674626c0073 *315a4b5f696e666f0073315a4b5f656e7472790073315a4e5f696e666f0073315a4e5f656e7472 *790073315a505f696e666f0073315a505f656e74727900733230735f696e666f00733230735f65 *6e74727900733269705f315f616c74007332306e5f696e666f007332306e5f656e747279007332 *30705f696e666f00733230705f656e74727900733230675f696e666f00733230675f656e747279 *00733269705f325f616c7400733230385f696e666f00733230385f656e74727900733230315f69 *6e666f00733230315f656e74727900733230615f696e666f00733230615f656e74727900733230 *635f696e666f00733230635f656e7472790073315a595f696e666f0073315a595f656e74727900 *733269705f335f616c7400733269705f7674626c00733230755f696e666f00733230755f656e74 *727900733230785f696e666f00733230785f656e747279007332307a5f696e666f007332307a5f *656e74727900733269745f315f616c7400733269755f315f616c7400733269755f325f616c7400 *733269755f7674626c00733230535f696e666f00733230535f656e74727900733230585f696e66 *6f00733230585f656e74727900733269745f325f616c7400733269745f7674626c00733269685f *696e666f00733269685f726574007231624f5f656e74727900723158525f73727400723158525f *636c6f7375726500723158525f696e666f00723158525f656e74727900733231385f696e666f00 *733231385f656e74727900733231625f696e666f00733231625f656e74727900733269375f315f *616c74007332316e5f696e666f007332316e5f656e74727900733231705f696e666f0073323170 *5f656e74727900733231725f696e666f00733231725f656e74727900733269375f325f616c7400 *733269375f7674626c00733231745f696e666f00733231745f656e74727900733231785f696e66 *6f00733231785f656e74727900733231415f696e666f00733231415f656e74727900733231445f *696e666f00733231445f656e74727900733232695f696e666f00733232695f656e747279007332 *32395f696e666f00733232395f656e74727900733231505f696e666f00733231505f656e747279 *00733231535f696e666f00733231535f656e74727900733231555f696e666f00733231555f656e *747279007332314d5f696e666f007332314d5f656e74727900733231575f696e666f0073323157 *5f656e74727900733231595f696e666f00733231595f656e747279007332314a5f696e666f0073 *32314a5f656e74727900733232305f696e666f00733232305f656e74727900733232725f696e66 *6f00733232725f656e74727900723163335f73727400723163335f636c6f737572650072316333 *5f696e666f00733232425f696e666f00733232425f656e74727900733232445f696e666f007332 *32445f656e74727900733232795f696e666f00733232795f656e74727900733232465f696e666f *00733232465f656e74727900733232495f696e666f00733232495f656e74727900723163335f65 *6e74727900723158545f73727400723158545f636c6f7375726500723158545f696e666f007231 *58545f656e74727900723158565f73727400723158565f636c6f7375726500723158565f696e66 *6f0073326c6d5f72657400723158565f656e74727900723158585f73727400723158585f636c6f *7375726500723158585f696e666f00723158585f656e74727900733269765f315f616c74007332 *33625f315f616c7400733269795f315f616c740073326a665f315f616c740073326a6a5f315f61 *6c74007332334a5f656e7472790073326a6d5f315f616c7400733233565f656e7472790073326a *6d5f325f616c740073326a6d5f7674626c0073326a6b5f696e666f0073326a6b5f726574007332 *6a6a5f325f616c740073326a6a5f7674626c00733233565f696e666f00733233545f696e666f00 *733233545f7265740073326a665f325f616c740073326a665f7674626c007332334a5f696e666f *00733234315f696e666f00733234315f656e7472790073326a6e5f315f616c740073326a6f5f69 *6e666f0073326a6f5f7265740073326a6e5f325f616c740073326a6e5f7674626c00733234685f *696e666f00733234685f656e74727900733235505f315f616c7400733235505f325f616c740073 *3235505f7674626c0073326a735f315f616c74007332356c5f315f616c74007332356c5f325f61 *6c74007332356c5f7674626c0073326a795f315f616c7400733235625f696e666f00733235625f *656e7472790073326a425f315f616c740073326a425f325f616c740073326a425f7674626c0073 *32344f5f315f616c74007332344f5f325f616c74007332344f5f7674626c0073326a795f325f61 *6c7400733234475f696e666f00733234475f656e74727900733234785f315f616c740073323443 *5f696e666f00733234435f656e74727900733234785f325f616c7400733234785f7674626c0073 *326a795f335f616c740073326a795f7674626c0073326a765f315f616c7400733235425f696e66 *6f00733235425f656e7472790073326a765f325f616c740073326a765f7674626c0073326a735f *325f616c740073326a735f7674626c00733236685f315f616c7400733269435f696e666f007332 *69435f72657400733236675f696e666f00733236675f656e747279007332366a5f696e666f0073 *32366a5f656e74727900733269475f315f616c74007332694b5f315f616c74007332364d5f656e *747279007332694c5f315f616c7400733236555f656e747279007332694c5f325f616c74007332 *694c5f7674626c007332694b5f325f616c74007332694b5f7674626c00733236555f696e666f00 *733236535f696e666f00733236535f72657400733269475f325f616c7400733269475f7674626c *007332364d5f696e666f007332365a5f696e666f007332365a5f656e74727900733237325f696e *666f00733237325f656e747279007332694d5f315f616c74007332694d5f325f616c7400733269 *4d5f7674626c00733237365f696e666f00733237365f656e747279007332694e5f315f616c7400 *7332694f5f696e666f007332694f5f726574007332694e5f325f616c74007332694e5f7674626c *007332376d5f696e666f007332376d5f656e74727900733237725f696e666f00733237725f656e *74727900733237745f696e666f00733237745f656e74727900733269535f315f616c7400733269 *5a5f315f616c7400733239325f696e666f00733239325f656e74727900733239345f696e666f00 *733239345f656e74727900733239655f696e666f00733239655f656e74727900733239615f696e *666f00733239615f656e74727900733239635f696e666f00733239635f656e7472790073323967 *5f696e666f00733239675f656e74727900733239385f696e666f00733239385f656e7472790073 *3239695f696e666f00733239695f656e7472790073326a315f696e666f0073326a315f72657400 *7332695a5f325f616c74007332695a5f7674626c00733269585f696e666f00733269585f726574 *00733269575f315f616c74007332384a5f696e666f007332384a5f656e747279007332384c5f69 *6e666f007332384c5f656e747279007332384e5f696e666f007332384e5f656e7472790073326a *365f315f616c740073326a365f325f616c740073326a365f7674626c0073326a355f315f616c74 *007332386e5f696e666f007332386e5f656e74727900733238705f696e666f00733238705f656e *7472790073326a375f696e666f0073326a375f7265740073326a355f325f616c740073326a355f *7674626c0073326a335f72657400733269575f325f616c7400733238355f696e666f0073323835 *5f656e7472790073326a635f315f616c7400733237525f696e666f00733237525f656e74727900 *733237545f696e666f00733237545f656e74727900733238315f696e666f00733238315f656e74 *72790073326a645f696e666f0073326a645f7265740073326a635f325f616c740073326a635f76 *74626c0073326a615f72657400733269575f335f616c7400733269575f7674626c00733269545f *315f616c7400733239725f696e666f00733239725f656e74727900733239745f696e666f007332 *39745f656e74727900733239765f696e666f00733239765f656e74727900733269545f325f616c *7400733269545f7674626c00733269535f325f616c7400733269535f7674626c00733236685f32 *5f616c7400733236685f7674626c00733233505f696e666f00733233505f72657400733269795f *325f616c7400733269795f7674626c00733269775f696e666f00733269775f7265740073323362 *5f325f616c7400733233625f7674626c00733239785f696e666f00733239785f656e7472790073 *3239495f696e666f00733239495f656e7472790073326a4c5f315f616c740073326a4c5f325f61 *6c740073326b695f315f616c740073326b695f325f616c740073326b695f335f616c740073326b *695f7674626c0073326a4c5f335f616c740073326b545f315f616c740073326b545f325f616c74 *00733261735f696e666f00733261735f656e7472790073326b545f335f616c740073326b545f76 *74626c0073326a4c5f345f616c740073326a4c5f355f616c740073326a4c5f7674626c0073326a *4a5f72657400733269765f325f616c7400733269765f7674626c007231585a5f73727400723158 *5a5f636c6f73757265007231585a5f696e666f00733264755f696e666f00733264755f656e7472 *7900733264775f696e666f00733264775f656e74727900733264725f696e666f00733264725f65 *6e747279007231585a5f656e74727900733264475f696e666f00733264475f656e747279007332 *684e5f315f616c74007332684f5f315f616c74007332684f5f325f616c74007332684f5f767462 *6c007332684e5f325f616c74007332684e5f7674626c007332684d5f315f616c74007332684d5f *325f616c74007332684d5f335f616c74007332684d5f7674626c007332684c5f315f616c740073 *32684c5f325f616c74007332684c5f7674626c00733268485f315f616c7400733268495f315f61 *6c74007332684a5f315f616c74007332684a5f325f616c74007332684a5f7674626c0073326849 *5f325f616c7400733268495f7674626c00733268485f325f616c7400733268485f7674626c0073 *3268475f315f616c7400733268475f325f616c7400733268475f335f616c7400733268475f345f *616c7400733268475f355f616c7400733268475f7674626c00733268435f315f616c7400733268 *465f696e666f00733268465f72657400733268445f315f616c7400733268455f72657400733268 *445f325f616c7400733268445f7674626c00733268435f325f616c7400733268435f7674626c00 *733268425f315f616c7400733268425f325f616c7400733268425f335f616c7400733268425f76 *74626c00733268415f726574007332687a5f696e666f007332687a5f72657400733268795f696e *666f00733268795f72657400733268785f696e666f00733268785f72657400723273695f737274 *00723273695f636c6f7375726500723273695f696e666f00723273695f656e747279007232736b *5f737274007232736b5f636c6f73757265007232736b5f696e666f00733331695f696e666f0073 *3331695f726574007232736b5f656e747279007232736d5f737274007232736d5f636c6f737572 *65007232736d5f696e666f007232736d5f656e747279007232736f5f737274007232736f5f636c *6f73757265007232736f5f696e666f00733331655f696e666f00733331655f726574007232736f *5f656e74727900723273715f73727400723273715f636c6f7375726500723273715f696e666f00 *723273715f656e747279007332756d5f696e666f007332756d5f656e74727900733259645f696e *666f00733259645f72657400733276635f696e666f00733276635f656e74727900733275555f69 *6e666f00733275555f656e74727900733275535f696e666f00733275535f656e74727900733259 *6b5f696e666f007332596b5f72657400733275585f696e666f00733275585f656e747279007332 *755a5f696e666f007332755a5f656e74727900733259395f696e666f00733259395f7265740073 *3276665f696e666f00733276665f656e74727900733275425f696e666f00733275425f656e7472 *7900733275765f696e666f00733275765f656e74727900733275745f696e666f00733275745f65 *6e74727900733275785f696e666f00733275785f656e74727900733275445f696e666f00733275 *445f656e74727900733259385f696e666f00733259385f72657400723273735f73727400723273 *735f636c6f7375726500723273735f696e666f00723273735f656e74727900723273755f737274 *00723273755f636c6f7375726500723273755f696e666f00733331615f696e666f00733331615f *72657400723273755f656e74727900723273775f73727400723273775f636c6f73757265007232 *73775f696e666f00723273775f656e74727900723273795f73727400723273795f636c6f737572 *6500723273795f696e666f00723273795f656e74727900723273415f73727400723273415f636c *6f7375726500723273415f696e666f00733331375f696e666f00733331375f7265740072327341 *5f656e74727900723273435f73727400723273435f636c6f7375726500723273435f696e666f00 *723273435f656e74727900723273455f73727400723273455f636c6f7375726500723273455f69 *6e666f00723273455f656e74727900723273475f73727400723273475f636c6f73757265007232 *73475f696e666f00723273475f656e74727900723273495f73727400723273495f636c6f737572 *6500723273495f696e666f00723273495f656e747279007232734b5f737274007232734b5f636c *6f73757265007232734b5f696e666f007333305a5f696e666f007333305a5f726574007232734b *5f656e747279007232734d5f737274007232734d5f636c6f73757265007232734d5f696e666f00 *7332776a5f696e666f007332776a5f656e74727900733277725f696e666f00733277725f656e74 *727900733259325f696e666f00733259325f72657400733277385f696e666f00733277385f656e *747279007232734d5f656e747279007232734f5f737274007232734f5f636c6f73757265007232 *734f5f696e666f007332584d5f696e666f007332584d5f726574007232734f5f656e7472790073 *3277575f696e666f00733277575f656e74727900733277595f696e666f00733277595f656e7472 *7900723273525f73727400723273525f636c6f7375726500723273525f696e666f00733279305f *696e666f00733279305f656e74727900733258785f696e666f00733258785f7265740073327855 *5f696e666f00733278555f656e74727900733279325f696e666f00733279325f656e7472790073 *3278495f696e666f00733278495f656e747279007332784b5f696e666f007332784b5f656e7472 *7900733279345f696e666f00733279345f656e74727900733278455f696e666f00733278455f65 *6e74727900733278475f696e666f00733278475f656e74727900733279365f696e666f00733279 *365f656e74727900733258415f696e666f00733258415f72657400733278435f696e666f007332 *78435f656e74727900733279385f696e666f00733279385f656e74727900733278715f696e666f *00733278715f656e74727900733278735f696e666f00733278735f656e74727900733279615f69 *6e666f00733279615f656e747279007332786d5f696e666f007332786d5f656e74727900733278 *6f5f696e666f007332786f5f656e74727900733279635f696e666f00733279635f656e74727900 *733258445f696e666f00733258445f726574007332786b5f696e666f007332786b5f656e747279 *00733258775f696e666f00733258775f72657400723273525f656e74727900733279665f636c6f *7375726500733279685f73727400733279685f636c6f7375726500733279685f696e666f007332 *79685f656e74727900723273545f73727400723273545f636c6f7375726500723273545f696e66 *6f00723273545f656e74727900733242705f73727400733242705f636c6f737572650073324270 *5f696e666f00733279745f696e666f00733279745f656e74727900733279775f696e666f007332 *79775f72657400733279425f696e666f00733279425f656e74727900733257535f315f616c7400 *733279485f696e666f00733279485f656e747279007332794a5f696e666f007332794a5f726574 *00733257555f315f616c740073327a335f696e666f0073327a335f656e7472790073327a355f69 *6e666f0073327a355f7265740073327a615f696e666f0073327a615f656e747279007332575a5f *315f616c740073327a675f696e666f0073327a675f656e7472790073327a695f696e666f007332 *7a695f72657400733258315f315f616c740073327a465f696e666f0073327a465f656e74727900 *73327a485f696e666f0073327a485f72657400733258365f315f616c7400733241315f696e666f *00733241315f656e74727900733241335f696e666f00733241335f72657400733241385f696e66 *6f00733241385f656e74727900733258625f315f616c7400733241655f696e666f00733241655f *656e74727900733241675f696e666f00733241675f72657400733258645f315f616c7400733241 *445f696e666f00733241445f656e74727900733241465f696e666f00733241465f726574007332 *58695f315f616c74007332586c5f315f616c74007332586c5f325f616c74007332586c5f767462 *6c007332586a5f696e666f007332586a5f72657400733258695f325f616c7400733258695f7674 *626c00733258685f335f616c7400733258685f64666c7400733258685f7674626c00733242325f *696e666f00733242325f656e74727900733242355f696e666f00733242355f656e747279007332 *41795f696e666f00733241795f656e74727900733258675f315f616c7400733258675f325f616c *7400733258675f7674626c00733258655f696e666f00733258655f72657400733258645f325f61 *6c7400733258645f7674626c00733258635f335f616c7400733258635f64666c7400733258635f *7674626c00733242375f696e666f00733242375f656e74727900733258625f325f616c74007332 *58625f7674626c00733258615f345f616c7400733258615f64666c7400733258615f7674626c00 *733242395f696e666f00733242395f656e74727900733258395f315f616c7400733258395f325f *616c7400733258395f7674626c00733258375f696e666f00733258375f72657400733258365f32 *5f616c7400733258365f7674626c00733258355f335f616c7400733258355f64666c7400733258 *355f7674626c00733242625f696e666f00733242625f656e74727900733242645f696e666f0073 *3242645f656e7472790073327a415f696e666f0073327a415f656e74727900733258345f315f61 *6c7400733258345f325f616c7400733258345f7674626c00733258325f696e666f00733258325f *72657400733258315f325f616c7400733258315f7674626c00733258305f335f616c7400733258 *305f64666c7400733258305f7674626c00733242665f696e666f00733242665f656e7472790073 *32575a5f325f616c74007332575a5f7674626c00733257595f345f616c7400733257595f64666c *7400733257595f7674626c00733242685f696e666f00733242685f656e74727900733257585f31 *5f616c7400733257585f325f616c7400733257585f7674626c00733257565f696e666f00733257 *565f72657400733257555f325f616c7400733257555f7674626c00733257545f335f616c740073 *3257545f64666c7400733257545f7674626c007332426a5f696e666f007332426a5f656e747279 *00733257535f325f616c7400733257535f7674626c00733257525f345f616c7400733257525f64 *666c7400733257525f7674626c007332426c5f696e666f007332426c5f656e7472790073325750 *5f696e666f00733257505f726574007332426e5f696e666f007332426e5f656e74727900733242 *705f656e74727900723273565f73727400723273565f636c6f7375726500723273565f696e666f *00723273565f656e747279007332424e5f696e666f007332424e5f656e74727900733242515f69 *6e666f00733242515f656e74727900733242435f696e666f00733242435f656e74727900733242 *455f696e666f00733242455f656e74727900733242475f696e666f00733242475f656e74727900 *7332574f5f696e666f007332574f5f72657400733243645f696e666f00733243645f656e747279 *00733243615f696e666f00733243615f656e74727900733243685f696e666f00733243685f656e *747279007332436c5f696e666f007332436c5f656e747279007332436f5f696e666f007332436f *5f656e74727900733257345f315f616c7400733244345f696e666f00733244345f656e74727900 *733257365f696e666f00733257365f72657400733244375f696e666f00733244375f656e747279 *00733257355f696e666f00733257355f72657400733257345f325f616c7400733257345f767462 *6c00733244395f696e666f00733244395f656e74727900733244785f696e666f00733244785f65 *6e74727900733244745f696e666f00733244745f656e747279007332446a5f696e666f00733244 *6a5f656e747279007332444c5f696e666f007332444c5f656e74727900733257635f696e666f00 *733257635f72657400733243465f696e666f00733243465f656e74727900733243765f696e666f *00733243765f656e74727900733243785f696e666f00733243785f656e74727900733257615f69 *6e666f00733257615f72657400733243495f696e666f00733243495f656e74727900733244505f *696e666f00733244505f656e747279007332576a5f696e666f007332576a5f7265740073324636 *5f696e666f00733246365f656e74727900733257765f696e666f00733257765f72657400733245 *535f696e666f00733245535f656e74727900733257735f696e666f00733257735f726574007332 *45565f696e666f00733245565f656e747279007332457a5f696e666f007332457a5f656e747279 *00733245425f696e666f00733245425f656e74727900733257715f696e666f00733257715f7265 *7400733245595f696e666f00733245595f656e74727900733246385f696e666f00733246385f65 *6e74727900733257485f696e666f00733257485f726574007332456d5f696e666f007332456d5f *656e74727900733257455f696e666f00733257455f72657400733245705f696e666f0073324570 *5f656e74727900733245325f696e666f00733245325f656e74727900733245345f696e666f0073 *3245345f656e74727900733257435f696e666f00733257435f72657400733245735f696e666f00 *733245735f656e74727900733246615f696e666f00733246615f656e74727900733257695f696e *666f00733257695f72657400723273595f73727400723273595f636c6f7375726500723273595f *696e666f00723273595f656e74727900723274305f73727400723274305f636c6f737572650072 *3274305f696e666f007332484c5f696e666f007332484c5f656e747279007333306b5f315f616c *7400733248485f696e666f00733248485f656e74727900733248415f696e666f00733248415f65 *6e74727900733248435f696e666f00733248435f656e747279007332484a5f696e666f00733248 *4a5f656e747279007333306c5f696e666f007333306c5f72657400733248795f696e666f007332 *48795f656e747279007333306b5f325f616c7400733248685f696e666f00733248685f656e7472 *7900733248615f696e666f00733248615f656e74727900733248635f696e666f00733248635f65 *6e747279007332486a5f696e666f007332486a5f656e74727900733330745f696e666f00733330 *745f72657400733248385f696e666f00733248385f656e747279007333306b5f335f616c740073 *3247525f696e666f00733247525f656e747279007332474b5f696e666f007332474b5f656e7472 *79007332474d5f696e666f007332474d5f656e74727900733247545f696e666f00733247545f65 *6e74727900733330425f696e666f00733330425f72657400733247495f696e666f00733247495f *656e747279007333306b5f345f616c74007332476e5f696e666f007332476e5f656e7472790072 *3274305f656e74727900733247705f696e666f00733247705f656e74727900733247695f696e66 *6f00733247695f656e74727900733247725f696e666f00733247725f656e74727900733247625f *696e666f00733247625f656e74727900733247645f696e666f00733247645f656e747279007332 *47745f696e666f00733247745f656e747279007333304a5f696e666f007333304a5f7265740073 *3247395f696e666f00733247395f656e747279007333306b5f355f616c74007332464e5f696e66 *6f007332464e5f656e74727900733246505f696e666f00733246505f656e74727900733246495f *696e666f00733246495f656e74727900733246525f696e666f00733246525f656e747279007332 *46425f696e666f00733246425f656e74727900733246445f696e666f00733246445f656e747279 *00733246545f696e666f00733246545f656e74727900733330525f696e666f00733330525f7265 *74007332467a5f696e666f007332467a5f656e747279007333306b5f365f616c74007333306b5f *7674626c007332484f5f636c6f7375726500733248515f73727400733248515f636c6f73757265 *00733248515f696e666f00733248515f656e74727900723274325f73727400723274325f636c6f *7375726500723274325f696e666f00723274325f656e74727900723274355f7372740072327437 *5f73727400723274395f73727400723274355f636c6f7375726500723274375f636c6f73757265 *00723274395f636c6f7375726500723274355f696e666f00723274355f656e7472790072327437 *5f696e666f00723274375f656e74727900723274395f696e666f00723274395f656e7472790073 *324c465f73727400723274625f636c6f7375726500723274625f7372740073324c465f636c6f73 *7572650073324c465f696e666f0073324b5a5f696e666f0073324b5a5f656e7472790073324c32 *5f696e666f0073324c325f7265740073324c375f696e666f0073324c375f656e7472790073325a *5a5f315f616c740073324c6d5f696e666f0073324c6d5f656e7472790073324c655f696e666f00 *73324c655f656e7472790073324c705f696e666f0073324c705f656e7472790073324c625f696e *666f0073324c625f656e7472790073325a5a5f325f616c740073325a5a5f7674626c0073325a59 *5f345f616c740073325a595f64666c740073325a595f7674626c0073324c725f696e666f007332 *4c725f656e7472790073325a575f696e666f0073325a575f7265740073324c745f696e666f0073 *324c745f656e7472790073324c765f696e666f0073324c765f656e7472790073324b695f696e66 *6f0073324b695f656e7472790073324b6c5f696e666f0073324b6c5f7265740073324b715f696e *666f0073324b715f656e74727900733330335f315f616c740073324b465f696e666f0073324b46 *5f656e7472790073324b785f696e666f0073324b785f656e7472790073324b495f696e666f0073 *324b495f656e7472790073324b755f696e666f0073324b755f656e74727900733330335f325f61 *6c7400733330335f7674626c00733330325f345f616c7400733330325f64666c7400733330325f *7674626c0073324b4b5f696e666f0073324b4b5f656e74727900733330305f696e666f00733330 *305f7265740073324b4d5f696e666f0073324b4d5f656e7472790073324b4f5f696e666f007332 *4b4f5f656e7472790073324c785f696e666f0073324c785f656e7472790073324a485f696e666f *0073324a485f656e7472790073324a4b5f696e666f0073324a4b5f7265740073324a505f696e66 *6f0073324a505f656e74727900733330375f315f616c740073324b305f696e666f0073324b305f *656e7472790073324a545f696e666f0073324a545f656e74727900733330375f325f616c740073 *3330375f7674626c00733330365f345f616c7400733330365f64666c7400733330365f7674626c *0073324b335f696e666f0073324b335f656e74727900733330345f696e666f00733330345f7265 *740073324b355f696e666f0073324b355f656e7472790073324b375f696e666f0073324b375f65 *6e7472790073324c7a5f696e666f0073324c7a5f656e7472790073324a365f696e666f0073324a *365f656e7472790073324a395f696e666f0073324a395f7265740073324a655f696e666f007332 *4a655f656e74727900733330625f315f616c740073324a705f696e666f0073324a705f656e7472 *790073324a695f696e666f0073324a695f656e74727900733330625f325f616c7400733330625f *7674626c00733330615f345f616c7400733330615f64666c7400733330615f7674626c0073324a *735f696e666f0073324a735f656e74727900733330385f696e666f00733330385f726574007332 *4a755f696e666f0073324a755f656e7472790073324a775f696e666f0073324a775f656e747279 *0073324c425f696e666f0073324c425f656e74727900733249765f696e666f00733249765f656e *74727900733249795f696e666f00733249795f72657400733249445f696e666f00733249445f65 *6e74727900733330665f315f616c74007332494f5f696e666f007332494f5f656e747279007332 *49485f696e666f00733249485f656e74727900733330665f325f616c7400733330665f7674626c *00733330655f345f616c7400733330655f64666c7400733330655f7674626c00733249525f696e *666f00733249525f656e74727900733330635f696e666f00733330635f72657400733249545f69 *6e666f00733249545f656e74727900733249565f696e666f00733249565f656e7472790073324c *445f696e666f0073324c445f656e74727900733249345f696e666f00733249345f656e74727900 *733249375f696e666f00733249375f72657400733249635f696e666f00733249635f656e747279 *007333306a5f315f616c74007333306a5f325f616c74007333306a5f7674626c00733330695f34 *5f616c7400733330695f64666c7400733330695f7674626c00733249685f696e666f0073324968 *5f656e74727900733330675f696e666f00733330675f726574007332496b5f696e666f00733249 *6b5f656e7472790073324c465f656e74727900723274625f696e666f00723274625f656e747279 *00723274655f73727400723274675f73727400723274695f73727400723274655f636c6f737572 *6500723274675f636c6f7375726500723274695f636c6f7375726500723274655f696e666f0072 *3274655f656e74727900723274675f696e666f00723274675f656e74727900723274695f696e66 *6f00723274695f656e7472790073324d725f7372740073324d725f636c6f737572650073324d72 *5f696e666f0073324c565f696e666f0073324c565f656e7472790073324c595f696e666f007332 *4c595f7265740073324d335f696e666f0073324d335f656e74727900733257335f315f616c7400 *73324d695f696e666f0073324d695f656e7472790073324d615f696e666f0073324d615f656e74 *72790073324d6c5f696e666f0073324d6c5f656e7472790073324d375f696e666f0073324d375f *656e74727900733257335f325f616c7400733257335f7674626c00733257325f345f616c740073 *3257325f64666c7400733257325f7674626c0073324d6e5f696e666f0073324d6e5f656e747279 *00733257305f696e666f00733257305f7265740073324d705f696e666f0073324d705f656e7472 *790073324d725f656e747279007232746b5f737274007232746b5f636c6f73757265007232746b *5f696e666f007232746b5f656e747279007232746e5f737274007232746e5f636c6f7375726500 *7232746e5f696e666f007232746e5f656e74727900723274705f73727400723274705f636c6f73 *75726500723274705f696e666f0073324e385f696e666f0073324e385f656e7472790073324e61 *5f696e666f0073324e615f656e74727900733256505f696e666f00733256505f7265740073324e *335f696e666f0073324e335f656e7472790073324e635f696e666f0073324e635f656e74727900 *73324d525f696e666f0073324d525f656e7472790073324d545f696e666f0073324d545f656e74 *72790073324e655f696e666f0073324e655f656e74727900733256535f696e666f00733256535f *7265740073324d505f696e666f0073324d505f656e747279007332564f5f696e666f007332564f *5f72657400723274705f656e7472790073324e685f636c6f737572650073324e6a5f7372740073 *324e6a5f636c6f737572650073324e6a5f696e666f0073324e6a5f656e74727900723274725f73 *727400723274725f636c6f7375726500723274725f696e666f00723274725f656e747279007232 *74755f73727400723274755f636c6f7375726500723274755f696e666f00723274755f656e7472 *7900723274785f737274007232747a5f73727400723274425f73727400723274785f636c6f7375 *7265007232747a5f636c6f7375726500723274425f636c6f7375726500723274785f696e666f00 *723274785f656e747279007232747a5f696e666f007232747a5f656e74727900723274425f696e *666f00723274425f656e74727900723274455f73727400723274455f636c6f7375726500723274 *455f696e666f00723274455f656e74727900723274485f737274007232744a5f73727400723274 *4c5f737274007232744e5f73727400723274505f73727400723274525f73727400723274485f63 *6c6f73757265007232744a5f636c6f73757265007232744c5f636c6f73757265007232744e5f63 *6c6f7375726500723274505f636c6f7375726500723274525f636c6f7375726500723274485f69 *6e666f00723274485f656e747279007232744a5f696e666f007232744a5f656e74727900723274 *4c5f696e666f007232744c5f656e747279007232744e5f696e666f007232744e5f656e74727900 *723274505f696e666f00723274505f656e74727900723274525f696e666f00723274525f656e74 *72790073325a785f315f616c740073325a785f325f616c740073325a795f696e666f0073325a79 *5f7265740073325a785f335f616c740073325a4b5f696e666f0073325a4b5f7265740073325a78 *5f345f616c740073324e555f696e666f0073324e555f656e7472790073324e525f696e666f0073 *324e525f656e7472790073325a785f355f616c740073324e4d5f696e666f0073324e4d5f656e74 *72790073324e4a5f696e666f0073324e4a5f656e7472790073325a785f365f616c740073325a78 *5f7674626c0073325a6f5f315f616c7400733251705f696e666f00733251705f656e7472790073 *325a6f5f325f616c7400733251685f696e666f00733251685f656e7472790073325a6f5f335f61 *6c7400733251625f696e666f00733251625f656e7472790073325a6f5f345f616c740073325039 *5f696e666f00733250395f656e74727900733250365f696e666f00733250365f656e7472790073 *3250625f696e666f00733250625f656e74727900733250345f696e666f00733250345f656e7472 *7900733250645f696e666f00733250645f7265740073325a725f315f616c7400733251335f696e *666f00733251335f656e7472790073325a725f325f616c740073325a725f7674626c0073325a71 *5f335f616c740073325a735f315f616c7400733250535f696e666f00733250535f656e74727900 *73325a735f325f616c740073325a735f7674626c0073325a715f345f616c740073325a715f6466 *6c740073325a715f7674626c0073325a705f325f616c740073325a755f315f616c740073325045 *5f696e666f00733250455f656e7472790073325a755f325f616c740073325a755f7674626c0073 *325a745f325f616c740073325a745f64666c740073325a745f7674626c0073325a705f335f616c *740073325a775f315f616c7400733250715f696e666f00733250715f656e7472790073325a775f *325f616c740073325a775f7674626c0073325a765f325f616c740073325a765f64666c74007332 *5a765f7674626c0073325a705f345f616c740073325a705f64666c740073325a705f7674626c00 *73325a6f5f355f616c740073324f575f696e666f0073324f575f656e7472790073324f545f696e *666f0073324f545f656e7472790073324f595f696e666f0073324f595f656e7472790073324f52 *5f696e666f0073324f525f656e7472790073325a6f5f365f616c740073325a6f5f7674626c0072 *3274545f73727400723274545f636c6f7375726500723274545f696e666f00733259705f315f61 *6c7400733259705f325f616c7400733259705f335f616c7400733259705f345f616c7400733259 *705f355f616c7400733259705f365f616c7400733259705f7674626c007332596f5f315f616c74 *00733259795f315f616c7400733259795f325f616c7400733259795f335f616c7400733259795f *345f616c7400733259795f355f616c7400733259795f365f616c7400733259795f7674626c0073 *32596f5f325f616c7400733259485f315f616c7400733259485f325f616c7400733259485f335f *616c7400733259485f345f616c7400733259485f355f616c7400733259485f365f616c74007332 *59485f7674626c007332596f5f335f616c7400733259515f315f616c7400733259515f325f616c *7400733259515f335f616c7400733259515f345f616c7400733259515f355f616c740073325951 *5f365f616c7400733259515f7674626c007332596f5f345f616c740073325a305f315f616c7400 *73325a305f325f616c740073325a305f335f616c740073325a305f345f616c740073325a305f35 *5f616c740073325a305f365f616c740073325a305f7674626c007332596f5f355f616c74007332 *5a615f315f616c740073325a615f325f616c740073325a615f335f616c740073325a615f345f61 *6c740073325a615f355f616c740073325a615f365f616c740073325a615f7674626c007332596f *5f365f616c74007332596f5f7674626c00733252745f696e666f00733252745f7265740073325a *695f315f616c740073325a6a5f325f616c740073325a6a5f64666c740073325a6a5f7674626c00 *73325a695f325f616c740073325a6b5f335f616c740073325a6b5f64666c740073325a6b5f7674 *626c0073325a695f335f616c740073325a6c5f345f616c740073325a6c5f64666c740073325a6c *5f7674626c0073325a695f345f616c7400733252555f696e666f00733252555f656e7472790072 *3274545f656e74727900733252515f696e666f00733252515f656e7472790073325a6d5f355f61 *6c740073325a6d5f64666c740073325a6d5f7674626c0073325a695f355f616c7400733252485f *696e666f00733252485f656e74727900733252445f696e666f00733252445f656e747279007332 *5a6e5f365f616c740073325a6e5f64666c740073325a6e5f7674626c0073325a695f365f616c74 *0073325a695f7674626c00723274565f73727400723274565f636c6f7375726500723274565f69 *6e666f00733253675f696e666f00733253675f656e74727900723274565f656e74727900723274 *595f73727400723274595f636c6f7375726500723274595f696e666f00733253455f696e666f00 *733253455f656e747279007332564d5f696e666f007332564d5f72657400733253415f696e666f *00733253415f656e747279007332564c5f696e666f007332564c5f726574007332564b5f696e66 *6f007332564b5f72657400723274595f656e74727900723275305f73727400723275305f636c6f *7375726500723275305f696e666f007332534c5f696e666f007332534c5f656e74727900723275 *305f656e74727900733256495f696e666f00733256495f72657400733256475f696e666f007332 *56475f72657400733256465f696e666f00733256465f72657400733256455f696e666f00733256 *455f72657400733256425f315f616c7400733256435f315f616c7400733256435f325f616c7400 *733256435f7674626c00733256425f325f616c7400733256425f7674626c00733256775f315f61 *6c7400733256785f315f616c7400733256415f696e666f00733256415f72657400733256795f31 *5f616c74007332567a5f696e666f007332567a5f72657400733256795f325f616c740073325679 *5f7674626c00733256785f325f616c7400733256785f7674626c00733256775f325f616c740073 *3256775f7674626c00733256765f315f616c7400733256765f325f616c7400733256765f335f61 *6c7400733256765f345f616c7400733256765f355f616c7400733256765f365f616c7400733256 *765f7674626c00733256755f696e666f00733256755f72657400733256745f696e666f00733256 *745f72657400724c775f73727400724c775f636c6f7375726500724c775f696e666f00734d385f *696e666f00734d385f656e747279007351385f315f616c7400734d365f696e666f00734d365f65 *6e747279007351385f325f616c7400734d345f696e666f00734d345f656e747279007351385f33 *5f616c7400734d325f696e666f00734d325f656e747279007351385f345f616c7400734d305f69 *6e666f00734d305f656e747279007351385f355f616c7400734c595f696e666f00734c595f656e *747279007351385f365f616c7400734c575f696e666f00734c575f656e747279007351385f375f *616c74007351385f7674626c00724c775f656e74727900734d625f636c6f7375726500734d645f *73727400734d645f636c6f7375726500734d645f696e666f00734d645f656e74727900724c795f *73727400724c795f636c6f7375726500724c795f696e666f00724c795f656e74727900734e515f *73727400734e515f636c6f7375726500734e515f696e666f007350465f696e666f007350465f72 *657400734e795f696e666f00734e795f656e74727900734e715f696e666f00734e715f656e7472 *790073504a5f696e666f0073504a5f72657400734e6d5f696e666f00734e6d5f656e7472790073 *4e655f696e666f00734e655f656e7472790073504e5f696e666f0073504e5f72657400734e615f *696e666f00734e615f656e74727900734e325f696e666f00734e325f656e747279007350525f69 *6e666f007350525f72657400734d595f696e666f00734d595f656e74727900734d515f696e666f *00734d515f656e747279007350565f696e666f007350565f72657400734d4d5f696e666f00734d *4d5f656e74727900734d455f696e666f00734d455f656e7472790073505a5f696e666f0073505a *5f72657400734d415f696e666f00734d415f656e74727900734d735f696e666f00734d735f656e *747279007351335f696e666f007351335f72657400734d6f5f696e666f00734d6f5f656e747279 *00734d675f696e666f00734d675f656e74727900734e515f656e74727900724c415f7372740072 *4c415f636c6f7375726500724c415f696e666f00724c415f656e74727900724c435f636c6f7375 *726500724c435f696e666f007350795f315f616c74007350795f64666c74007350795f7674626c *007350785f315f616c740073507a5f325f616c740073507a5f64666c740073507a5f7674626c00 *7350785f325f616c74007350415f335f616c74007350415f64666c74007350415f7674626c0073 *50785f335f616c74007350425f345f616c74007350425f64666c74007350425f7674626c007350 *785f345f616c74007350435f355f616c74007350435f64666c74007350435f7674626c00735078 *5f355f616c74007350445f365f616c74007350445f64666c74007350445f7674626c007350785f *365f616c74007350455f315f616c74007350455f325f616c74007350455f335f616c7400735045 *5f345f616c74007350455f355f616c74007350455f365f616c74007350455f375f616c74007350 *455f7674626c007350785f375f616c74007350785f7674626c00724c435f656e74727900724c45 *5f73727400724c455f636c6f7375726500724c455f696e666f00734f615f696e666f00734f615f *656e74727900724c455f656e74727900724c495f73727400724c4b5f73727400724c4d5f737274 *00724c495f636c6f7375726500724c4b5f636c6f7375726500724c4d5f636c6f7375726500724c *495f696e666f00724c495f656e74727900724c4b5f696e666f00724c4b5f656e74727900724c4d *5f696e666f00724c4d5f656e74727900724c505f73727400724c505f636c6f7375726500724c50 *5f696e666f00724c505f656e747279007350735f315f616c74007350745f315f616c7400735074 *5f325f616c74007350745f7674626c007350735f325f616c74007350735f7674626c0073506b5f *315f616c74007350705f315f616c74007350705f325f616c74007350705f7674626c0073506c5f *315f616c740073506d5f315f616c740073506d5f325f616c740073506d5f7674626c0073506c5f *325f616c740073506c5f7674626c0073506b5f325f616c740073506b5f7674626c0073506a5f31 *5f616c740073506a5f325f616c740073506a5f335f616c740073506a5f345f616c740073506a5f *355f616c740073506a5f365f616c740073506a5f375f616c740073506a5f7674626c0072356c35 *5f636c6f737572650072356c355f696e666f00733650535f315f616c7400733650545f315f616c *7400733671455f696e666f00733671455f656e7472790072356c355f656e74727900733650545f *325f616c7400733650545f7674626c00733650535f325f616c7400733650535f7674626c007236 *704c5f636c6f73757265007236704e5f636c6f7375726500723670505f73727400723670505f63 *6c6f7375726500723670505f696e666f00723670505f656e74727900723670525f737274007236 *70525f636c6f7375726500723670525f696e666f00723670525f656e74727900723670545f7372 *7400723670545f636c6f7375726500723670545f696e666f00723670545f656e74727900723670 *565f73727400723670565f636c6f7375726500723670565f696e666f00723670565f656e747279 *00723670585f73727400723670585f636c6f7375726500723670585f696e666f00723670585f65 *6e747279007236705a5f737274007236705a5f636c6f73757265007236705a5f696e666f007236 *705a5f656e74727900723671315f73727400723671315f636c6f7375726500723671315f696e66 *6f00723671315f656e74727900723671335f73727400723671335f636c6f737572650072367133 *5f696e666f007336504f5f696e666f007336504f5f72657400723671335f656e74727900733672 *695f696e666f00733672695f656e74727900733672615f696e666f00733672615f656e74727900 *733672635f696e666f00733672635f656e747279007336726c5f696e666f007336726c5f656e74 *727900733672335f696e666f00733672335f656e74727900733650435f696e666f00733650435f *72657400723671355f73727400723671355f636c6f7375726500723671355f696e666f00723671 *355f656e74727900723671375f73727400723671375f636c6f7375726500723671375f696e666f *00723671375f656e74727900723671395f73727400723671395f636c6f7375726500723671395f *696e666f00723671395f656e74727900723671625f73727400723671625f636c6f737572650072 *3671625f696e666f00723671625f656e74727900723671645f73727400723671645f636c6f7375 *726500723671645f696e666f00723671645f656e74727900733673685f696e666f00733673685f *656e747279007336736a5f696e666f007336736a5f656e74727900733650745f315f616c740073 *3673655f696e666f00733673655f656e74727900733673335f696e666f00733673335f656e7472 *7900733673365f696e666f00733673365f656e74727900733673385f696e666f00733673385f65 *6e74727900733673615f696e666f00733673615f656e74727900733650755f696e666f00733650 *755f72657400733672545f696e666f00733672545f656e74727900733672565f696e666f007336 *72565f656e74727900733673635f696e666f00733673635f656e74727900733650745f325f616c *7400733650745f7674626c007336736c5f696e666f007336736c5f656e74727900733672435f69 *6e666f00733672435f656e74727900733650715f696e666f00733650715f72657400723671665f *73727400723671665f636c6f7375726500723671665f696e666f00733673455f696e666f007336 *73455f656e74727900733673785f696e666f00733673785f656e74727900733673475f696e666f *00733673475f656e74727900733673495f696e666f00733673495f656e74727900733673765f69 *6e666f00733673765f656e747279007336506d5f696e666f007336506d5f72657400723671665f *656e74727900733674715f696e666f00733674715f656e74727900733674665f696e666f007336 *74665f656e74727900733674695f696e666f00733674695f656e747279007336746b5f696e666f *007336746b5f656e747279007336746d5f696e666f007336746d5f656e74727900733650655f69 *6e666f00733650655f72657400733674355f696e666f00733674355f656e74727900733674375f *696e666f00733674375f656e747279007336746f5f696e666f007336746f5f656e747279007336 *50615f696e666f00733650615f72657400733650395f315f616c7400733650395f325f616c7400 *733650395f7674626c00733650375f696e666f00733650375f726574007336744a5f696e666f00 *7336744a5f656e74727900733650345f696e666f00733650345f72657400733675725f696e666f *00733675725f656e74727900733675745f696e666f00733675745f656e74727900733675675f69 *6e666f00733675675f656e747279007336756a5f696e666f007336756a5f656e74727900733675 *6c5f696e666f007336756c5f656e747279007336756e5f696e666f007336756e5f656e74727900 *73364f575f696e666f0073364f575f72657400733675365f696e666f00733675365f656e747279 *00733675385f696e666f00733675385f656e74727900733675705f696e666f00733675705f656e *7472790073364f535f696e666f0073364f535f72657400733675445f696e666f00733675445f65 *6e747279007336754e5f737274007336754e5f636c6f73757265007336754e5f696e666f007336 *754c5f696e666f007336754c5f726574007336754e5f656e7472790073364f4e5f315f616c7400 *73364f505f315f616c7400733676555f656e7472790073364f505f325f616c740073364f505f76 *74626c0073364f4f5f696e666f0073364f4f5f7265740073364f4e5f325f616c740073364f4e5f *7674626c00733676555f696e666f00733677305f696e666f00733677305f656e74727900733677 *325f696e666f00733677325f656e74727900733676675f696e666f00733676675f656e74727900 *733676695f696e666f00733676695f656e7472790073364f515f315f616c7400733676735f696e *666f00733676735f656e7472790073364f515f325f616c740073364f515f7674626c0073367675 *5f696e666f00733676755f656e747279007336767a5f696e666f007336767a5f656e7472790073 *3676435f696e666f00733676435f656e74727900733676375f696e666f00733676375f656e7472 *7900733676305f696e666f00733676305f656e74727900733676615f696e666f00733676615f65 *6e74727900733676455f696e666f00733676455f656e7472790073364f4b5f696e666f0073364f *4b5f72657400733677495f696e666f00733677495f656e74727900733677765f696e666f007336 *77765f656e74727900733677795f696e666f00733677795f656e74727900733677415f696e666f *00733677415f656e74727900733677735f696e666f00733677735f656e74727900733677435f69 *6e666f00733677435f656e74727900733677455f696e666f00733677455f656e7472790073364f *435f696e666f0073364f435f726574007336776f5f696e666f007336776f5f656e747279007336 *77715f696e666f00733677715f656e74727900733677475f696e666f00733677475f656e747279 *0073364f795f696e666f0073364f795f7265740073364f645f737274640073367a745f73727464 *0073367a725f7372746400733678545f696e666f00733678545f656e74727900733679375f696e *666f00733679375f656e7472790073364f675f696e666f0073364f675f72657400733679615f69 *6e666f00733679615f656e74727900733679635f696e666f00733679635f656e7472790073364f *665f315f616c740073364f665f325f616c740073364f665f7674626c00733679655f696e666f00 *733679655f656e7472790073367a705f737274640073367a6e5f696e666f0073367a6e5f656e74 *72790073367a6c5f737274640073364f705f315f616c740073367a395f696e666f0073367a395f *656e7472790073367a625f696e666f0073367a625f656e7472790073364f715f696e666f007336 *4f715f7265740073364f705f325f616c740073364f705f7674626c0073367a645f696e666f0073 *367a645f656e7472790073367a685f696e666f0073367a685f656e7472790073367a6a5f696e66 *6f0073367a6a5f656e7472790073367a6c5f696e666f0073367a6c5f656e7472790073367a705f *696e666f0073367a705f656e74727900733679545f7372746400733679525f7372746400733679 *505f73727464007336794c5f737274640073364f725f737274640073364f725f315f616c740073 *3679765f696e666f00733679765f656e74727900733679785f696e666f00733679785f656e7472 *790073364f755f315f616c74007336794c5f656e74727900733679465f696e666f00733679465f *656e74727900733679485f696e666f00733679485f656e747279007336794a5f696e666f007336 *794a5f656e7472790073364f755f325f616c740073364f755f7674626c0073364f735f696e666f *0073364f735f7265740073364f725f325f616c740073364f725f7674626c007336794c5f696e66 *6f00733679505f696e666f00733679505f656e74727900733679525f696e666f00733679525f65 *6e74727900733679675f696e666f00733679675f656e74727900733679695f696e666f00733679 *695f656e74727900733679545f696e666f00733679545f656e7472790073367a725f696e666f00 *73367a725f656e747279007336784f5f73727464007336784c5f7372746400733678495f737274 *6400733678445f7372746400733678425f7372746400733678795f696e666f00733678795f656e *74727900733678735f7372746400733678715f73727464007336786f5f73727464007336786d5f *737274640073364f765f696e666f0073364f765f726574007336786b5f696e666f007336786b5f *656e74727900733678645f696e666f00733678645f656e747279007336786d5f696e666f007336 *786d5f656e747279007336786f5f696e666f007336786f5f656e74727900733678625f696e666f *00733678625f656e74727900733678715f696e666f00733678715f656e74727900733678735f69 *6e666f00733678735f656e74727900733678425f696e666f00733678425f656e74727900733678 *395f696e666f00733678395f656e74727900733678445f696e666f00733678445f656e74727900 *733678495f696e666f00733678495f656e74727900733678355f696e666f00733678355f656e74 *7279007336784c5f696e666f007336784c5f656e747279007336784f5f696e666f007336784f5f *656e7472790073367a745f696e666f0073367a745f656e74727900733677585f696e666f007336 *77585f656e7472790073364f645f696e666f0073364f645f72657400723671685f636c6f737572 *650073367a455f696e666f0073367a455f656e7472790073367a475f696e666f0073367a475f65 *6e7472790073367a425f696e666f0073367a425f656e7472790073367a495f696e666f0073367a *495f656e747279007236716a5f737274007236716a5f636c6f73757265007236716a5f696e666f *0073367a515f696e666f0073367a515f656e747279007336504b5f696e666f007336504b5f7265 *74007236716a5f656e7472790073364e415f696e666f0073364e415f72657400733641625f696e *666f00733641625f656e7472790073364e535f696e666f0073364e535f7265740073364e4a5f69 *6e666f0073364e4a5f72657400733641435f696e666f00733641435f656e747279007336416a5f *696e666f007336416a5f656e74727900733641455f696e666f00733641455f656e747279007336 *41485f696e666f00733641485f656e747279007336414a5f696e666f007336414a5f656e747279 *00733642635f696e666f00733642635f656e74727900733642655f696e666f00733642655f656e *7472790073364e5a5f315f616c740073364f305f696e666f0073364f305f72657400733642365f *696e666f00733642365f656e7472790073364e5a5f325f616c7400733642375f656e7472790073 *364e5a5f7674626c00733642675f696e666f00733642675f656e74727900733641515f696e666f *00733641515f656e7472790073364e565f696e666f0073364e565f72657400733642375f696e66 *6f00733642725f696e666f00733642725f656e7472790073364f395f696e666f0073364f395f72 *65740073364e745f315f616c7400733642515f696e666f00733642515f656e747279007336424c *5f656e74727900733642595f315f616c740073364e785f315f616c7400733643705f696e666f00 *733643705f656e747279007336436e5f656e7472790073364e795f696e666f0073364e795f7265 *740073364e785f325f616c740073364e785f7674626c0073364e765f696e666f0073364e765f72 *657400733642595f325f616c7400733642595f7674626c007336424a5f696e666f007336424a5f *7265740073364e745f325f616c740073364e745f7674626c007336424c5f696e666f0073364d47 *5f315f616c7400733643545f315f616c740073364d4c5f696e666f0073364d4c5f726574007336 *44365f696e666f00733644365f656e7472790073364d4a5f696e666f0073364d4a5f7265740073 *3643545f325f616c7400733643545f7674626c0073364d485f696e666f0073364d485f72657400 *73364d475f325f616c740073364d475f7674626c00733644395f696e666f00733644395f726574 *0073364d575f315f616c74007336446d5f696e666f007336446d5f656e7472790073364d575f32 *5f616c740073364d575f7674626c0073364d555f696e666f0073364d555f726574007336446f5f *696e666f007336446f5f7265740073364d585f315f616c740073364e305f315f616c740073364e *335f696e666f0073364e335f72657400733644535f696e666f00733644535f656e747279007336 *4e315f696e666f0073364e315f7265740073364e305f325f616c740073364e305f7674626c0073 *364d595f696e666f0073364d595f7265740073364d585f325f616c740073364d585f7674626c00 *733644565f696e666f00733644565f7265740073364e655f315f616c740073364e6f5f315f616c *740073364e725f696e666f0073364e725f72657400733645745f696e666f00733645745f656e74 *727900733645775f696e666f00733645775f656e7472790073364e705f696e666f0073364e705f *7265740073364e6f5f325f616c740073364e6f5f7674626c0073364e685f315f616c740073364e *6b5f315f616c740073364e6e5f315f616c740073364e6e5f325f616c740073364e6e5f7674626c *0073364e6c5f696e666f0073364e6c5f7265740073364e6b5f325f616c740073364e6b5f767462 *6c0073364e695f696e666f0073364e695f7265740073364e685f325f616c740073364e685f7674 *626c0073364e665f696e666f0073364e665f7265740073364e655f325f616c740073364e655f76 *74626c0073364e635f696e666f0073364e635f726574007336436e5f696e666f00733646775f69 *6e666f00733646775f656e74727900733646735f696e666f00733646735f656e74727900733646 *6f5f696e666f007336466f5f656e7472790073364d365f696e666f0073364d365f726574007336 *4d355f696e666f0073364d355f72657400733646795f696e666f00733646795f656e7472790073 *36474f5f737274640073364d375f737274640073364d375f315f616c7400733646475f696e666f *00733646475f656e7472790073364d385f7372746400733646505f696e666f00733646505f656e *7472790073364d395f7372746400733646575f696e666f00733646575f656e7472790073364d61 *5f7372746400733647335f696e666f00733647335f656e7472790073364d625f73727464007336 *47615f696e666f00733647615f656e7472790073364d635f73727464007336474c5f696e666f00 *7336474c5f656e7472790073364d645f315f616c740073364d645f325f616c740073364d645f76 *74626c0073364d635f315f616c740073364d655f315f616c740073364d685f315f616c74007336 *4d685f325f616c740073364d685f7674626c0073364d675f315f616c740073364d6e5f315f616c *740073364d6e5f325f616c740073364d6e5f7674626c0073364d6d5f315f616c740073364d6d5f *325f616c740073364d6d5f7674626c0073364d6b5f696e666f0073364d6b5f7265740073364d67 *5f325f616c740073364d675f7674626c0073364d665f696e666f0073364d665f7265740073364d *655f325f616c740073364d655f7674626c00733647485f696e666f00733647485f656e74727900 *7336474a5f696e666f007336474a5f656e7472790073364d635f325f616c740073364d635f7674 *626c0073364d625f315f616c740073364d625f325f616c740073364d625f7674626c0073364d61 *5f315f616c740073364d615f325f616c740073364d615f7674626c0073364d395f315f616c7400 *73364d395f325f616c740073364d395f7674626c0073364d385f315f616c740073364d385f325f *616c740073364d385f7674626c0073364d375f325f616c740073364d375f7674626c007336474f *5f696e666f007336474f5f656e74727900733648635f737274640073364d735f73727464007336 *4d735f315f616c7400733647575f696e666f00733647575f656e7472790073364d745f73727464 *0073364d745f315f616c7400733648365f696e666f00733648365f656e74727900733648345f69 *6e666f00733648345f656e7472790073364d775f315f616c7400733648615f696e666f00733648 *615f656e7472790073364d775f325f616c740073364d775f7674626c0073364d755f696e666f00 *73364d755f7265740073364d745f325f616c740073364d745f7674626c0073364d735f325f616c *740073364d735f7674626c00733648635f696e666f00733648635f656e7472790073364d785f31 *5f616c740073364d7a5f696e666f0073364d7a5f7265740073364d785f325f616c740073364d78 *5f7674626c00733648705f696e666f00733648705f656e7472790073364d425f73727464007336 *49635f7372746400733649615f7372746400733649385f7372746400733649365f737274640073 *3649345f7372746400733649325f7372746400733649305f7372746400733648595f7372746400 *733648575f7372746400733648555f7372746400733648515f696e666f00733648515f656e7472 *790073364d465f315f616c740073364d465f325f616c740073364d465f7674626c00733648555f *696e666f00733648555f656e747279007336484f5f696e666f007336484f5f656e747279007336 *48575f696e666f00733648575f656e74727900733648595f696e666f00733648595f656e747279 *007336484b5f696e666f007336484b5f656e747279007336484d5f696e666f007336484d5f656e *74727900733649305f696e666f00733649305f656e74727900733648495f696e666f0073364849 *5f656e74727900733649325f696e666f00733649325f656e74727900733648475f696e666f0073 *3648475f656e74727900733649345f696e666f00733649345f656e74727900733649365f696e66 *6f00733649365f656e74727900733648455f696e666f00733648455f656e74727900733649385f *696e666f00733649385f656e74727900733648435f696e666f00733648435f656e747279007336 *49615f696e666f00733649615f656e74727900733649635f696e666f00733649635f656e747279 *00733648785f696e666f00733648785f656e7472790073364d425f696e666f0073364d425f7265 *74007236716c5f737274007236716c5f636c6f73757265007236716c5f696e666f007236716c5f *656e7472790072356c695f7372740072356c695f636c6f737572650072356c695f696e666f0073 *364d335f696e666f0073364d335f72657400733649755f696e666f00733649755f656e74727900 *733649785f696e666f00733649785f656e7472790073364d305f696e666f0073364d305f726574 *00733649415f696e666f00733649415f656e74727900733649695f696e666f00733649695f656e *74727900733649435f696e666f00733649435f656e7472790072356c695f656e74727900723671 *6e5f737274007236716e5f636c6f73757265007236716e5f696e666f007236716e5f656e747279 *00723671705f73727400723671705f636c6f7375726500723671705f696e666f0073364c575f69 *6e666f0073364c575f72657400733649575f696e666f00733649575f656e747279007336494c5f *696e666f007336494c5f656e747279007336494e5f696e666f007336494e5f656e747279007336 *4c595f696e666f0073364c595f72657400733649515f696e666f00733649515f656e7472790072 *3671705f656e7472790072356c675f7372740072356c675f636c6f737572650072356c675f696e *666f007336495a5f696e666f007336495a5f656e7472790073364a315f696e666f0073364a315f *656e7472790072356c675f656e7472790073364a705f315f616c740073364c4f5f315f616c7400 *73364c4f5f325f616c740073364c4f5f7674626c0073364c4e5f315f616c740073364b635f696e *666f0073364b635f656e7472790073364b655f696e666f0073364b655f656e7472790073364b67 *5f696e666f0073364b675f656e7472790073364c4e5f325f616c740073364c4e5f7674626c0073 *364c4c5f696e666f0073364c4c5f7265740073364c4b5f315f616c740073364c545f315f616c74 *0073364a565f696e666f0073364a565f656e7472790073364a505f696e666f0073364a505f656e *7472790073364a585f696e666f0073364a585f656e7472790073364a5a5f696e666f0073364a5a *5f656e7472790073364c545f325f616c740073364c545f7674626c0073364c535f315f616c7400 *73364a455f696e666f0073364a455f656e7472790073364a785f696e666f0073364a785f656e74 *72790073364a475f696e666f0073364a475f656e7472790073364a495f696e666f0073364a495f *656e7472790073364c535f325f616c740073364c535f7674626c0073364c515f696e666f007336 *4c515f7265740073364c505f315f616c740073364c505f325f616c740073364c505f7674626c00 *73364c4b5f325f616c740073364c4b5f7674626c0073364a705f325f616c740073364a705f7674 *626c0073364b6c5f696e666f0073364b6c5f656e7472790073364a625f696e666f0073364a625f *656e7472790073364c495f696e666f0073364c495f72657400733650475f696e666f0073365047 *5f72657400723671725f73727400723671725f636c6f7375726500723671725f696e666f007236 *71725f656e7472790073364c415f315f616c740073364b535f696e666f0073364b535f656e7472 *790073364b555f696e666f0073364b555f656e7472790073364c445f315f616c740073364c305f *656e7472790073364b595f696e666f0073364b595f656e7472790073364c445f325f616c740073 *364c445f7674626c0073364c425f696e666f0073364c425f7265740073364c415f325f616c7400 *73364c415f7674626c0073364c305f696e666f0073364c455f315f616c740073364c465f315f61 *6c740073364c635f696e666f0073364c635f656e7472790073364c655f696e666f0073364c655f *656e7472790073364c465f325f616c740073364c465f7674626c0073364c455f325f616c740073 *364c455f7674626c0073364c6b5f696e666f0073364c6b5f656e7472790073364b455f696e666f *0073364b455f656e7472790073364c785f696e666f0073364c785f7265740073364c745f696e66 *6f0073364c745f72657400723270435f73727400723270435f636c6f7375726500723270435f69 *6e666f007336684a5f315f616c74007336684b5f696e666f007336684b5f72657400733459765f *656e747279007336684a5f325f616c74007336684a5f7674626c00733459765f696e666f007334 *59415f696e666f00733459415f656e747279007334596b5f696e666f007334596b5f656e747279 *00723270435f656e74727900723270715f636c6f7375726500723270715f696e666f0073366848 *5f315f616c7400733668495f696e666f00733668495f726574007334594e5f656e747279007336 *68485f325f616c7400733668485f7674626c007334594e5f696e666f00723270715f656e747279 *007232706f5f737274007232706f5f636c6f73757265007232706f5f696e666f00733668455f31 *5f616c7400733668475f315f616c740073345a6b5f696e666f0073345a6b5f656e747279007336 *68475f325f616c740073345a715f696e666f0073345a715f656e74727900733668475f335f616c *7400733668475f7674626c0073345a745f696e666f0073345a745f656e74727900733668465f69 *6e666f00733668465f72657400733668455f325f616c7400733668455f7674626c0073345a795f *696e666f0073345a795f656e747279007232706f5f656e74727900723270695f73727400723270 *695f636c6f7375726500723270695f696e666f0073345a4d5f696e666f0073345a4d5f656e7472 *790073345a475f696e666f0073345a475f656e7472790073345a455f696e666f0073345a455f65 *6e74727900723270695f656e74727900723270525f73727400723270525f636c6f737572650072 *3270525f696e666f0073345a545f696e666f0073345a545f656e7472790073345a525f696e666f *0073345a525f656e7472790073345a505f696e666f0073345a505f656e74727900723270525f65 *6e747279007234576f5f636c6f7375726500723457715f73727400723457715f636c6f73757265 *00723457715f696e666f00723457715f656e747279007232706b5f737274007232706b5f636c6f *73757265007232706b5f696e666f00733530335f696e666f00733530335f656e74727900733530 *355f696e666f00733530355f656e747279007335306c5f696e666f007335306c5f656e74727900 *733530625f696e666f00733530625f656e747279007232706b5f656e747279007232706d5f7372 *74007232706d5f636c6f73757265007232706d5f696e666f007232706d5f656e74727900723270 *495f73727400723270495f636c6f7375726500723270495f696e666f00733530765f696e666f00 *733530765f656e74727900733530745f696e666f00733530745f656e74727900733530725f696e *666f00733530725f656e74727900723270495f656e747279007232704c5f737274007232704c5f *636c6f73757265007232704c5f696e666f00733530475f696e666f00733530475f656e74727900 *733530455f696e666f00733530455f656e74727900733530435f696e666f00733530435f656e74 *7279007232704c5f656e747279007232704e5f737274007232704e5f636c6f7375726500723270 *4e5f696e666f00733530505f696e666f00733530505f656e747279007335304e5f696e666f0073 *35304e5f656e747279007232704e5f656e74727900723270555f73727400723270555f636c6f73 *75726500723270555f696e666f00733531755f696e666f00733531755f656e747279007335316f *5f696e666f007335316f5f656e747279007335316b5f696e666f007335316b5f656e7472790073 *3531655f696e666f00733531655f656e74727900733531615f696e666f00733531615f656e7472 *7900733531365f696e666f00733531365f656e74727900733531325f696e666f00733531325f65 *6e74727900733531305f696e666f00733531305f656e74727900733530595f696e666f00733530 *595f656e74727900733530575f696e666f00733530575f656e74727900723270555f656e747279 *00723270575f73727400723270575f636c6f7375726500723270575f696e666f007335315a5f69 *6e666f007335315a5f656e74727900733531565f696e666f00733531565f656e74727900733531 *525f696e666f00733531525f656e74727900733531505f696e666f00733531505f656e74727900 *7335314e5f696e666f007335314e5f656e747279007335314c5f696e666f007335314c5f656e74 *727900723270575f656e74727900723271305f73727400723271305f636c6f7375726500723271 *305f696e666f00733532675f696e666f00733532675f656e74727900733532655f696e666f0073 *3532655f656e74727900733532635f696e666f00733532635f656e74727900723271305f656e74 *727900723271335f73727400723271335f636c6f7375726500723271335f696e666f007335324a *5f696e666f007335324a5f656e74727900733532445f696e666f00733532445f656e7472790073 *35327a5f696e666f007335327a5f656e74727900733532745f696e666f00733532745f656e7472 *7900733532725f696e666f00733532725f656e74727900733532705f696e666f00733532705f65 *6e747279007335326e5f696e666f007335326e5f656e74727900723271335f656e747279007232 *71365f73727400723271365f636c6f7375726500723271365f696e666f00733533325f696e666f *00733533325f656e74727900733533305f696e666f00733533305f656e74727900733532595f69 *6e666f00733532595f656e74727900723271365f656e74727900723270795f7372740072327079 *5f636c6f7375726500723270795f696e666f007335346f5f696e666f007335346f5f656e747279 *00733534375f696e666f00733534375f656e74727900733534395f696e666f00733534395f656e *747279007335334c5f696e666f007335334c5f656e74727900733533775f696e666f0073353377 *5f656e747279007335334e5f696e666f007335334e5f656e74727900733533505f696e666f0073 *3533505f656e747279007335336b5f696e666f007335336b5f656e74727900733533525f696e66 *6f00733533525f656e74727900733533545f696e666f00733533545f656e74727900733533685f *696e666f00733533685f656e74727900733533565f696e666f00733533565f656e747279007335 *34625f696e666f00733534625f656e74727900733534645f696e666f00733534645f656e747279 *00733534725f696e666f00733534725f656e74727900733668685f696e666f00733668685f7265 *7400723270795f656e74727900723457735f73727400723457735f636c6f737572650072345773 *5f696e666f00723457735f656e74727900723457755f73727400723457755f636c6f7375726500 *723457755f696e666f00723457755f656e74727900723457775f73727400723457775f636c6f73 *75726500723457775f696e666f00723457775f656e74727900723271395f73727400723271395f *636c6f7375726500723271395f696e666f007335344e5f696e666f007335344e5f656e74727900 *733534505f696e666f00733534505f656e74727900733534535f696e666f00733534535f656e74 *727900733536635f696e666f00733536635f656e74727900733668355f315f616c740073353631 *5f696e666f00733536315f656e74727900733668365f696e666f00733668365f72657400733536 *355f696e666f00733536355f656e74727900733668355f325f616c7400733668355f7674626c00 *733535565f696e666f00733535565f656e74727900733536615f696e666f00733536615f656e74 *727900733668315f696e666f00733668315f72657400733668305f315f616c7400733535465f69 *6e666f00733535465f656e74727900733535445f696e666f00733535445f656e74727900733668 *375f696e666f00733668375f72657400733668305f325f616c7400733668305f7674626c007335 *356b5f315f616c7400733535735f696e666f00733535735f656e747279007335356d5f696e666f *007335356d5f656e74727900733535765f696e666f00733535765f656e74727900733535685f69 *6e666f00733535685f656e747279007335356a5f696e666f007335356a5f656e74727900733668 *645f696e666f00733668645f726574007335356b5f325f616c74007335356b5f7674626c007336 *67585f696e666f00733667585f72657400723271395f656e74727900733667685f315f616c7400 *7335376b5f696e666f007335376b5f656e74727900733537735f64666c7400733537735f767462 *6c007336676a5f696e666f007336676a5f72657400733537755f696e666f00733537755f656e74 *727900733667695f696e666f00733667695f72657400733667685f325f616c7400733667685f76 *74626c00733537655f696e666f00733537655f656e74727900733537485f696e666f0073353748 *5f656e747279007336676d5f696e666f007336676d5f72657400733537455f696e666f00733537 *455f656e747279007335374a5f696e666f007335374a5f656e747279007335374d5f696e666f00 *7335374d5f656e74727900733538595f696e666f00733538595f656e74727900733539345f696e *666f00733539345f656e74727900733538505f64666c7400733538505f7674626c00733538525f *696e666f00733538525f656e74727900733667435f696e666f00733667435f726574007335384c *5f696e666f007335384c5f656e747279007335384e5f696e666f007335384e5f656e7472790073 *3538545f696e666f00733538545f656e747279007336677a5f696e666f007336677a5f72657400 *733667795f315f616c74007335387a5f696e666f007335387a5f656e74727900733538785f696e *666f00733538785f656e74727900733667455f696e666f00733667455f72657400733667795f32 *5f616c7400733667795f7674626c00733538655f315f616c74007335386d5f696e666f00733538 *6d5f656e74727900733538675f696e666f00733538675f656e74727900733538705f696e666f00 *733538705f656e74727900733538625f696e666f00733538625f656e74727900733538645f696e *666f00733538645f656e747279007336674b5f696e666f007336674b5f72657400733538655f32 *5f616c7400733538655f7674626c00733667765f696e666f00733667765f726574007335396d5f *696e666f007335396d5f656e747279007336664d5f696e666f007336664d5f726574007335396a *5f696e666f007335396a5f656e747279007335396f5f696e666f007335396f5f656e7472790073 *3539725f696e666f00733539725f656e74727900733561555f696e666f00733561555f656e7472 *7900733667335f315f616c7400733561455f696e666f00733561455f656e74727900733667355f *696e666f00733667355f72657400733561505f696e666f00733561505f656e7472790073366734 *5f696e666f00733667345f72657400733667335f325f616c7400733667335f7674626c00733561 *795f696e666f00733561795f656e74727900733561535f696e666f00733561535f656e74727900 *7336665a5f696e666f007336665a5f72657400733666595f315f616c7400733561655f696e666f *00733561655f656e74727900733561635f696e666f00733561635f656e74727900733667375f69 *6e666f00733667375f72657400733666595f325f616c7400733666595f7674626c00733539545f *315f616c7400733561315f696e666f00733561315f656e74727900733539565f696e666f007335 *39565f656e74727900733561345f696e666f00733561345f656e74727900733539515f696e666f *00733539515f656e74727900733539535f696e666f00733539535f656e74727900733667645f69 *6e666f00733667645f72657400733539545f325f616c7400733539545f7674626c00733666565f *696e666f00733666565f72657400733562665f696e666f00733562665f656e7472790073366668 *5f696e666f00733666685f72657400733562635f696e666f00733562635f656e74727900733562 *685f696e666f00733562685f656e747279007335626b5f696e666f007335626b5f656e74727900 *7335634a5f696e666f007335634a5f656e74727900733666795f315f616c7400733563785f696e *666f00733563785f656e74727900733666415f696e666f00733666415f72657400733563455f69 *6e666f00733563455f656e747279007336667a5f696e666f007336667a5f72657400733666795f *325f616c7400733666795f7674626c00733563725f696e666f00733563725f656e747279007335 *63485f696e666f00733563485f656e74727900733666755f696e666f00733666755f7265740073 *3666745f315f616c7400733563375f696e666f00733563375f656e74727900733563355f696e66 *6f00733563355f656e74727900733666435f696e666f00733666435f72657400733666745f325f *616c7400733666745f7674626c007335624d5f315f616c7400733562555f696e666f0073356255 *5f656e747279007335624f5f696e666f007335624f5f656e74727900733562585f696e666f0073 *3562585f656e747279007335624a5f696e666f007335624a5f656e747279007335624c5f696e66 *6f007335624c5f656e74727900733666495f696e666f00733666495f726574007335624d5f325f *616c74007335624d5f7674626c00733666715f696e666f00733666715f72657400723457795f73 *727400723457795f636c6f7375726500723457795f696e666f007336694e5f696e666f00733669 *4e5f72657400723457795f656e74727900723457415f73727400723457415f636c6f7375726500 *723457415f696e666f007336694b5f696e666f007336694b5f72657400723457415f656e747279 *00723457435f73727400723457435f636c6f7375726500723457435f696e666f00733669425f69 *6e666f00733669425f72657400723457435f656e74727900723457455f73727400723457455f63 *6c6f7375726500723457455f696e666f007336697a5f696e666f007336697a5f72657400723457 *455f656e74727900723457475f73727400723457475f636c6f7375726500723457475f696e666f *00733669765f696e666f00733669765f72657400723457475f656e74727900723457495f737274 *00723457495f636c6f7375726500723457495f696e666f00723457495f656e747279007234574b *5f737274007234574b5f636c6f73757265007234574b5f696e666f007234574b5f656e74727900 *7234574d5f737274007234574d5f636c6f73757265007234574d5f696e666f00733669735f696e *666f00733669735f726574007234574d5f656e747279007234574f5f737274007234574f5f636c *6f73757265007234574f5f696e666f007234574f5f656e74727900723457515f73727400723457 *515f636c6f7375726500723457515f696e666f007336696b5f696e666f007336696b5f72657400 *723457515f656e74727900723457535f73727400723457535f636c6f7375726500723457535f69 *6e666f00723457535f656e74727900723457555f73727400723457555f636c6f73757265007234 *57555f696e666f00733669675f696e666f00733669675f72657400723457555f656e7472790072 *3457575f73727400723457575f636c6f7375726500723457575f696e666f00723457575f656e74 *727900723457595f73727400723457595f636c6f7375726500723457595f696e666f0072345759 *5f656e74727900723458305f73727400723458305f636c6f7375726500723458305f696e666f00 *733669655f696e666f00733669655f72657400723458305f656e74727900733566515f73727400 *733566515f636c6f7375726500733566515f696e666f007335666f5f696e666f007335666f5f65 *6e74727900733566725f696e666f00733566725f72657400733566775f696e666f00733566775f *656e74727900733665575f315f616c7400733566485f696e666f00733566485f656e7472790073 *3566415f696e666f00733566415f656e74727900733665575f325f616c7400733665575f767462 *6c00733665565f345f616c7400733665565f64666c7400733665565f7674626c007335664b5f69 *6e666f007335664b5f656e74727900733665545f696e666f00733665545f726574007335664d5f *696e666f007335664d5f656e747279007335664f5f696e666f007335664f5f656e747279007336 *65585f696e666f00733665585f726574007335655a5f696e666f007335655a5f656e7472790073 *3565525f696e666f00733565525f656e74727900733666315f696e666f00733666315f72657400 *7335654e5f696e666f007335654e5f656e74727900733565465f696e666f00733565465f656e74 *727900733666355f696e666f00733666355f72657400733565425f696e666f00733565425f656e *74727900733565745f696e666f00733565745f656e74727900733666395f696e666f0073366639 *5f72657400733565705f696e666f00733565705f656e74727900733565685f696e666f00733565 *685f656e74727900733666645f696e666f00733666645f72657400733565645f696e666f007335 *65645f656e74727900733565355f696e666f00733565355f656e74727900733566645f696e666f *00733566645f656e74727900733566515f656e74727900723458325f73727400723458325f636c *6f7375726500723458325f696e666f00723458325f656e74727900723458345f73727400723458 *345f636c6f7375726500723458345f696e666f00733567425f696e666f00733567425f656e7472 *7900733665485f315f616c74007335677a5f696e666f007335677a5f656e74727900733665485f *325f616c7400733567785f696e666f00733567785f656e74727900733665485f335f616c740073 *3567765f696e666f00733567765f656e74727900733665485f345f616c7400733567745f696e66 *6f00733567745f656e74727900733665485f355f616c7400733665495f696e666f00733665495f *72657400733567705f696e666f00733567705f656e74727900733567645f696e666f0073356764 *5f656e74727900733567665f696e666f00733567665f656e74727900733567725f696e666f0073 *3567725f656e747279007336654c5f696e666f007336654c5f72657400733567625f696e666f00 *733567625f656e74727900733665485f365f616c7400733665485f7674626c00723458345f656e *74727900733567455f636c6f7375726500733567475f73727400733567475f636c6f7375726500 *733567475f696e666f00733567475f656e74727900723458365f73727400723458365f636c6f73 *75726500723458365f696e666f00723458365f656e74727900723458385f636c6f737572650072 *3270465f73727400723270465f636c6f7375726500723270465f696e666f0073356a305f696e66 *6f0073356a305f656e74727900733569575f696e666f00733569575f656e74727900733569535f *696e666f00733569535f656e747279007335694f5f696e666f007335694f5f656e747279007335 *694b5f696e666f007335694b5f656e74727900733569475f696e666f00733569475f656e747279 *00733569435f696e666f00733569435f656e74727900733569795f696e666f00733569795f656e *74727900733569755f696e666f00733569755f656e74727900733569715f696e666f0073356971 *5f656e747279007335696d5f696e666f007335696d5f656e74727900733569695f696e666f0073 *3569695f656e74727900733569655f696e666f00733569655f656e74727900733569615f696e66 *6f00733569615f656e74727900733569365f696e666f00733569365f656e74727900733569325f *696e666f00733569325f656e74727900733568595f696e666f00733568595f656e747279007335 *68555f696e666f00733568555f656e74727900733568515f696e666f00733568515f656e747279 *007335684d5f696e666f007335684d5f656e74727900733568495f696e666f00733568495f656e *74727900733568455f696e666f00733568455f656e74727900733568415f696e666f0073356841 *5f656e74727900733568775f696e666f00733568775f656e747279007335686f5f696e666f0073 *35686f5f656e74727900733568695f696e666f00733568695f656e74727900733568655f696e66 *6f00733568655f656e74727900733568385f696e666f00733568385f656e74727900733568305f *696e666f00733568305f656e74727900733567555f696e666f00733567555f656e747279007335 *674f5f696e666f007335674f5f656e747279007335674d5f696e666f007335674d5f656e747279 *007335674b5f696e666f007335674b5f656e74727900723270465f656e74727900723270735f73 *727400723270735f636c6f7375726500723270735f696e666f00723270735f656e747279007234 *58615f73727400723458615f636c6f7375726500723458615f696e666f007336684f5f315f616c *740073356b745f696e666f0073356b745f656e747279007336684f5f325f616c74007336684f5f *7674626c0073356b765f696e666f0073356b765f656e7472790073356b7a5f696e666f0073356b *7a5f656e7472790073356b425f696e666f0073356b425f656e7472790073356c535f696e666f00 *73356c535f656e7472790073356c555f696e666f0073356c555f656e7472790073356c515f696e *666f0073356c515f656e7472790073356c575f696e666f0073356c575f656e7472790073356c59 *5f696e666f0073356c595f656e74727900733668555f315f616c740073356c7a5f696e666f0073 *356c7a5f656e7472790073356c6d5f696e666f0073356c6d5f656e7472790073356c6f5f696e66 *6f0073356c6f5f656e7472790073356c435f696e666f0073356c435f656e7472790073356c395f *696e666f0073356c395f656e74727900733669355f696e666f00733669355f7265740073356c63 *5f696e666f0073356c635f656e7472790073356c675f696e666f0073356c675f656e7472790073 *356c695f696e666f0073356c695f656e7472790073356c6b5f696e666f0073356c6b5f656e7472 *790073356c455f696e666f0073356c455f656e7472790073356b4b5f696e666f0073356b4b5f65 *6e7472790073356b4d5f696e666f0073356b4d5f656e7472790073356c475f696e666f0073356c *475f656e74727900733668555f325f616c7400733668555f7674626c0073356c495f696e666f00 *73356c495f656e7472790073356c4d5f696e666f0073356c4d5f656e7472790073356c4f5f696e *666f0073356c4f5f656e7472790073356d305f696e666f0073356d305f656e7472790073356b37 *5f696e666f0073356b375f656e7472790073356b395f696e666f0073356b395f656e7472790073 *356d325f696e666f0073356d325f656e7472790073356a585f696e666f0073356a585f656e7472 *790073356a5a5f696e666f0073356a5a5f656e7472790073356a555f696e666f0073356a555f65 *6e7472790073356b315f696e666f0073356b315f656e7472790073356b335f696e666f0073356b *335f656e7472790073356b355f696e666f0073356b355f656e7472790073356d345f696e666f00 *73356d345f656e747279007336684c5f696e666f007336684c5f72657400723458615f656e7472 *790073356d785f696e666f0073356d785f656e7472790073356d725f696e666f0073356d725f65 *6e7472790073356d415f696e666f0073356d415f656e7472790073356d6d5f696e666f0073356d *6d5f656e7472790073356d6f5f696e666f0073356d6f5f656e74727900733665345f696e666f00 *733665345f7265740073356d435f696e666f0073356d435f7265740073356e545f696e666f0073 *356e545f656e7472790073356e4c5f696e666f0073356e4c5f656e7472790073356e4e5f696e66 *6f0073356e4e5f656e74727900733665615f696e666f00733665615f72657400733665395f315f *616c7400733665395f325f616c7400733665395f7674626c00733665385f315f616c7400733665 *685f696e666f00733665685f7265740073356d535f696e666f0073356d535f656e747279007335 *6d555f696e666f0073356d555f656e7472790073356e415f696e666f0073356e415f656e747279 *0073356e6f5f696e666f0073356e6f5f656e7472790073356e715f696e666f0073356e715f656e *7472790073356e6d5f696e666f0073356e6d5f656e7472790073356e735f696e666f0073356e73 *5f656e7472790073356e755f696e666f0073356e755f656e747279007336656b5f696e666f0073 *36656b5f726574007336656a5f315f616c74007336656f5f696e666f007336656f5f7265740073 *36656a5f325f616c74007336656a5f7674626c00733665675f315f616c7400733665675f325f61 *6c7400733665675f7674626c00733665385f325f616c7400733665385f7674626c0073356e575f *696e666f0073356e575f72657400733665415f315f616c740073356f385f696e666f0073356f38 *5f656e74727900733665425f696e666f00733665425f72657400733665415f325f616c74007336 *65415f7674626c007336657a5f315f616c74007336657a5f325f616c74007336657a5f7674626c *00733665325f696e666f00733665325f7265740073356f715f696e666f0073356f715f656e7472 *7900733664635f696e666f00733664635f7265740073356f6e5f696e666f0073356f6e5f656e74 *72790073356f735f696e666f0073356f735f656e7472790073356f765f696e666f0073356f765f *656e74727900733574425f696e666f00733574425f656e74727900733664745f315f616c740073 *3570455f696e666f00733570455f656e74727900733664505f696e666f00733664505f72657400 *7336644e5f696e666f007336644e5f726574007336644c5f696e666f007336644c5f7265740073 *36644a5f696e666f007336644a5f72657400733664485f696e666f00733664485f726574007336 *64465f696e666f00733664465f72657400733664445f696e666f00733664445f72657400733664 *425f696e666f00733664425f726574007336647a5f696e666f007336647a5f7265740073366478 *5f696e666f00733664785f72657400733664765f696e666f00733664765f72657400733664755f *696e666f00733664755f72657400733574775f696e666f00733574775f656e7472790073366474 *5f325f616c7400733664745f7674626c00733570795f696e666f00733570795f656e7472790073 *35747a5f696e666f007335747a5f656e74727900733664705f696e666f00733664705f72657400 *7336646f5f315f616c7400733570695f696e666f00733570695f656e74727900733570675f696e *666f00733570675f656e74727900733664535f696e666f00733664535f726574007336646f5f32 *5f616c74007336646f5f7674626c0073356f585f315f616c7400733570355f696e666f00733570 *355f656e7472790073356f5a5f696e666f0073356f5a5f656e74727900733570385f696e666f00 *733570385f656e7472790073356f555f696e666f0073356f555f656e7472790073356f575f696e *666f0073356f575f656e74727900733664595f696e666f00733664595f7265740073356f585f32 *5f616c740073356f585f7674626c007336646c5f696e666f007336646c5f72657400723458635f *73727400723458635f636c6f7375726500723458635f696e666f00723458635f656e7472790072 *3458655f73727400723458655f636c6f7375726500723458655f696e666f00733663565f315f61 *6c7400733663565f325f616c7400733663565f335f616c7400733663565f345f616c7400733663 *565f355f616c7400733663565f365f616c7400733663565f7674626c00733663555f315f616c74 *00733663585f315f616c7400733663585f325f616c7400733663585f335f616c7400733663585f *345f616c7400733663585f355f616c7400733663585f365f616c7400733663585f7674626c0073 *3663555f325f616c74007336635a5f315f616c74007336635a5f325f616c74007336635a5f335f *616c74007336635a5f345f616c74007336635a5f355f616c74007336635a5f365f616c74007336 *635a5f7674626c00733663555f335f616c7400733664315f315f616c7400733664315f325f616c *7400733664315f335f616c7400733664315f345f616c7400733664315f355f616c740073366431 *5f365f616c7400733664315f7674626c00733663555f345f616c7400733664335f315f616c7400 *733664335f325f616c7400733664335f335f616c7400733664335f345f616c7400733664335f35 *5f616c7400733664335f365f616c7400733664335f7674626c00733663555f355f616c74007336 *64365f315f616c7400733664365f325f616c7400733664365f335f616c7400733664365f345f61 *6c7400733664365f355f616c7400733664365f365f616c7400733664365f7674626c0073366355 *5f365f616c7400733663555f7674626c00733575345f696e666f00733575345f72657400733664 *615f696e666f00733664615f72657400733664395f365f616c7400733664395f64666c74007336 *64395f7674626c00733664385f365f616c7400733664385f64666c7400733664385f7674626c00 *723458655f656e74727900723458675f73727400723458675f636c6f7375726500723458675f69 *6e666f007335756c5f696e666f007335756c5f656e74727900723458675f656e74727900723458 *6a5f737274007234586a5f636c6f73757265007234586a5f696e666f007234586a5f656e747279 *007234586c5f737274007234586c5f636c6f73757265007234586c5f696e666f00733663435f69 *6e666f00733663435f72657400733577615f696e666f00733577615f656e74727900733663455f *696e666f00733663455f72657400733577305f696e666f00733577305f656e7472790073366347 *5f696e666f00733663475f72657400733576515f696e666f00733576515f656e74727900733663 *495f696e666f00733663495f72657400733576475f696e666f00733576475f656e747279007336 *634b5f696e666f007336634b5f72657400733576775f696e666f00733576775f656e7472790073 *36634d5f696e666f007336634d5f726574007335766d5f696e666f007335766d5f656e74727900 *7336634f5f696e666f007336634f5f72657400733576635f696e666f00733576635f656e747279 *00733663515f696e666f00733663515f72657400733576325f696e666f00733576325f656e7472 *7900733663535f696e666f00733663535f72657400733575555f696e666f00733575555f656e74 *727900733576345f696e666f00733576345f656e74727900733576655f696e666f00733576655f *656e747279007335766f5f696e666f007335766f5f656e74727900733576795f696e666f007335 *76795f656e74727900733576495f696e666f00733576495f656e74727900733576535f696e666f *00733576535f656e74727900733577325f696e666f00733577325f656e74727900733663425f69 *6e666f00733663425f72657400733663415f696e666f00733663415f726574007234586c5f656e *747279007234586e5f737274007234586e5f636c6f73757265007234586e5f696e666f00733577 *685f696e666f00733577685f656e747279007234586e5f656e74727900723458715f7372740072 *3458715f636c6f7375726500723458715f696e666f00733663755f696e666f00733663755f7265 *7400733578335f696e666f00733578335f656e74727900733663775f696e666f00733663775f72 *657400733577545f696e666f00733577545f656e74727900733663795f696e666f00733663795f *726574007335774a5f696e666f007335774a5f656e74727900733577425f696e666f0073357742 *5f656e747279007335774c5f696e666f007335774c5f656e74727900733577565f696e666f0073 *3577565f656e74727900733663745f696e666f00733663745f72657400733663735f696e666f00 *733663735f72657400723458715f656e74727900723458735f73727400723458735f636c6f7375 *726500723458735f696e666f00733578615f696e666f00733578615f656e74727900723458735f *656e74727900723458775f73727400723458795f73727400723458415f73727400723458775f63 *6c6f7375726500723458795f636c6f7375726500723458415f636c6f7375726500723458775f69 *6e666f00723458775f656e74727900723458795f696e666f00723458795f656e74727900723458 *415f696e666f00723458415f656e74727900733543425f73727400733543425f636c6f73757265 *00733543425f696e666f00733578725f696e666f00733578725f656e74727900733578755f696e *666f00733578755f726574007335787a5f696e666f007335787a5f656e74727900733662695f31 *5f616c7400733578465f696e666f00733578465f656e74727900733578485f696e666f00733578 *485f726574007336626b5f315f616c7400733579315f696e666f00733579315f656e7472790073 *3579335f696e666f00733579335f72657400733579385f696e666f00733579385f656e74727900 *733662705f315f616c7400733579655f696e666f00733579655f656e74727900733579675f696e *666f00733579675f72657400733662725f315f616c7400733579445f696e666f00733579445f65 *6e74727900733579465f696e666f00733579465f72657400733662775f315f616c74007335795a *5f696e666f007335795a5f656e7472790073357a315f696e666f0073357a315f7265740073357a *365f696e666f0073357a365f656e74727900733662425f315f616c740073357a635f696e666f00 *73357a635f656e7472790073357a655f696e666f0073357a655f72657400733662445f315f616c *740073357a425f696e666f0073357a425f656e7472790073357a445f696e666f0073357a445f72 *657400733662495f315f616c740073357a585f696e666f0073357a585f656e7472790073357a5a *5f696e666f0073357a5a5f72657400733541345f696e666f00733541345f656e74727900733662 *4e5f315f616c7400733541615f696e666f00733541615f656e74727900733541635f696e666f00 *733541635f72657400733662505f315f616c74007335417a5f696e666f007335417a5f656e7472 *7900733541425f696e666f00733541425f72657400733662555f315f616c7400733541565f696e *666f00733541565f656e74727900733541585f696e666f00733541585f72657400733542325f69 *6e666f00733542325f656e747279007336625a5f315f616c7400733542385f696e666f00733542 *385f656e74727900733542615f696e666f00733542615f72657400733663315f315f616c740073 *3542785f696e666f00733542785f656e747279007335427a5f696e666f007335427a5f72657400 *733663365f315f616c7400733663395f315f616c7400733663395f325f616c7400733663395f76 *74626c00733663375f696e666f00733663375f72657400733663365f325f616c7400733663365f *7674626c00733663355f335f616c7400733663355f64666c7400733663355f7674626c00733542 *595f696e666f00733542595f656e74727900733543315f696e666f00733543315f656e74727900 *733542735f696e666f00733542735f656e74727900733663345f315f616c7400733663345f325f *616c7400733663345f7674626c00733663325f696e666f00733663325f72657400733663315f32 *5f616c7400733663315f7674626c00733663305f335f616c7400733663305f64666c7400733663 *305f7674626c00733543335f696e666f00733543335f656e747279007336625a5f325f616c7400 *7336625a5f7674626c00733662595f345f616c7400733662595f64666c7400733662595f767462 *6c00733543355f696e666f00733543355f656e74727900733662585f315f616c7400733662585f *325f616c7400733662585f7674626c00733662565f696e666f00733662565f7265740073366255 *5f325f616c7400733662555f7674626c00733662545f335f616c7400733662545f64666c740073 *3662545f7674626c00733543375f696e666f00733543375f656e74727900733543395f696e666f *00733543395f656e74727900733541755f696e666f00733541755f656e74727900733662535f31 *5f616c7400733662535f325f616c7400733662535f7674626c00733662515f696e666f00733662 *515f72657400733662505f325f616c7400733662505f7674626c007336624f5f335f616c740073 *36624f5f64666c74007336624f5f7674626c00733543625f696e666f00733543625f656e747279 *007336624e5f325f616c74007336624e5f7674626c007336624d5f345f616c74007336624d5f64 *666c74007336624d5f7674626c00733543645f696e666f00733543645f656e747279007336624c *5f315f616c74007336624c5f325f616c74007336624c5f7674626c007336624a5f696e666f0073 *36624a5f72657400733662495f325f616c7400733662495f7674626c00733662485f335f616c74 *00733662485f64666c7400733662485f7674626c00733543665f696e666f00733543665f656e74 *727900733543685f696e666f00733543685f656e7472790073357a775f696e666f0073357a775f *656e74727900733662475f315f616c7400733662475f325f616c7400733662475f7674626c0073 *3662455f696e666f00733662455f72657400733662445f325f616c7400733662445f7674626c00 *733662435f335f616c7400733662435f64666c7400733662435f7674626c007335436a5f696e66 *6f007335436a5f656e74727900733662425f325f616c7400733662425f7674626c00733662415f *345f616c7400733662415f64666c7400733662415f7674626c007335436c5f696e666f00733543 *6c5f656e747279007336627a5f315f616c74007336627a5f325f616c74007336627a5f7674626c *00733662785f696e666f00733662785f72657400733662775f325f616c7400733662775f767462 *6c00733662765f335f616c7400733662765f64666c7400733662765f7674626c007335436e5f69 *6e666f007335436e5f656e74727900733543705f696e666f00733543705f656e74727900733579 *795f696e666f00733579795f656e74727900733662755f315f616c7400733662755f325f616c74 *00733662755f7674626c00733662735f696e666f00733662735f72657400733662725f325f616c *7400733662725f7674626c00733662715f335f616c7400733662715f64666c7400733662715f76 *74626c00733543725f696e666f00733543725f656e74727900733662705f325f616c7400733662 *705f7674626c007336626f5f345f616c74007336626f5f64666c74007336626f5f7674626c0073 *3543745f696e666f00733543745f656e747279007336626e5f315f616c74007336626e5f325f61 *6c74007336626e5f7674626c007336626c5f696e666f007336626c5f726574007336626b5f325f *616c74007336626b5f7674626c007336626a5f335f616c74007336626a5f64666c74007336626a *5f7674626c00733543765f696e666f00733543765f656e74727900733662695f325f616c740073 *3662695f7674626c00733662685f345f616c7400733662685f64666c7400733662685f7674626c *00733543785f696e666f00733543785f656e74727900733662665f696e666f00733662665f7265 *74007335437a5f696e666f007335437a5f656e74727900733543425f656e74727900723458435f *73727400723458435f636c6f7375726500723458435f696e666f00723458435f656e7472790072 *3458465f73727400723458465f636c6f7375726500723458465f696e666f00723458465f656e74 *727900723458485f73727400723458485f636c6f7375726500723458485f696e666f0073354563 *5f696e666f00733545635f656e74727900733661595f696e666f00733661595f72657400733545 *365f696e666f00733545365f656e74727900733545655f696e666f00733545655f656e74727900 *733544555f696e666f00733544555f656e74727900733544575f696e666f00733544575f656e74 *727900733545675f696e666f00733545675f656e74727900733544515f696e666f00733544515f *656e74727900733544535f696e666f00733544535f656e74727900733545695f696e666f007335 *45695f656e74727900733662315f696e666f00733662315f726574007335444f5f696e666f0073 *35444f5f656e747279007335456b5f696e666f007335456b5f656e74727900733544435f696e66 *6f00733544435f656e74727900733544455f696e666f00733544455f656e747279007335456d5f *696e666f007335456d5f656e74727900733544795f696e666f00733544795f656e747279007335 *44415f696e666f00733544415f656e747279007335456f5f696e666f007335456f5f656e747279 *00733662345f696e666f00733662345f72657400733544775f696e666f00733544775f656e7472 *7900733545715f696e666f00733545715f656e747279007335446b5f696e666f007335446b5f65 *6e747279007335446d5f696e666f007335446d5f656e74727900733545735f696e666f00733545 *735f656e74727900733544675f696e666f00733544675f656e74727900733544695f696e666f00 *733544695f656e74727900733545755f696e666f00733545755f656e74727900733544655f696e *666f00733544655f656e74727900733545775f696e666f00733545775f656e7472790073354437 *5f696e666f00733544375f656e74727900733544395f696e666f00733544395f656e7472790073 *3545795f696e666f00733545795f656e74727900733544335f696e666f00733544335f656e7472 *7900733544355f696e666f00733544355f656e74727900733545415f696e666f00733545415f65 *6e74727900733662375f696e666f00733662375f72657400733544315f696e666f00733544315f *656e74727900733661585f696e666f00733661585f72657400723458485f656e74727900733545 *445f636c6f7375726500733545465f73727400733545465f636c6f7375726500733545465f696e *666f00733545465f656e747279007234584a5f737274007234584a5f636c6f7375726500723458 *4a5f696e666f007234584a5f656e747279007234584c5f737274007234584c5f636c6f73757265 *007234584c5f696e666f007234584c5f656e747279007234584e5f737274007234584e5f636c6f *73757265007234584e5f696e666f00733548525f696e666f00733548525f656e74727900733661 *6f5f696e666f007336616f5f726574007335484c5f696e666f007335484c5f656e747279007335 *48545f696e666f00733548545f656e747279007335487a5f696e666f007335487a5f656e747279 *00733548425f696e666f00733548425f656e74727900733548565f696e666f00733548565f656e *74727900733548765f696e666f00733548765f656e74727900733548785f696e666f0073354878 *5f656e74727900733548585f696e666f00733548585f656e74727900733661725f696e666f0073 *3661725f72657400733548745f696e666f00733548745f656e747279007335485a5f696e666f00 *7335485a5f656e74727900733548685f696e666f00733548685f656e747279007335486a5f696e *666f007335486a5f656e74727900733549315f696e666f00733549315f656e7472790073354864 *5f696e666f00733548645f656e74727900733548665f696e666f00733548665f656e7472790073 *3549335f696e666f00733549335f656e74727900733661755f696e666f00733661755f72657400 *733548625f696e666f00733548625f656e74727900733549355f696e666f00733549355f656e74 *7279007335475a5f696e666f007335475a5f656e74727900733548315f696e666f00733548315f *656e74727900733549375f696e666f00733549375f656e74727900733547565f696e666f007335 *47565f656e74727900733547585f696e666f00733547585f656e74727900733549395f696e666f *00733549395f656e74727900733661785f696e666f00733661785f72657400733547545f696e66 *6f00733547545f656e74727900733549625f696e666f00733549625f656e74727900733547485f *696e666f00733547485f656e747279007335474a5f696e666f007335474a5f656e747279007335 *49645f696e666f00733549645f656e74727900733547445f696e666f00733547445f656e747279 *00733547465f696e666f00733547465f656e74727900733549665f696e666f00733549665f656e *74727900733661415f696e666f00733661415f72657400733547425f696e666f00733547425f65 *6e74727900733549685f696e666f00733549685f656e74727900733547705f696e666f00733547 *705f656e74727900733547725f696e666f00733547725f656e747279007335496a5f696e666f00 *7335496a5f656e747279007335476c5f696e666f007335476c5f656e747279007335476e5f696e *666f007335476e5f656e747279007335496c5f696e666f007335496c5f656e7472790073366144 *5f696e666f00733661445f726574007335476a5f696e666f007335476a5f656e74727900733549 *6e5f696e666f007335496e5f656e74727900733547375f696e666f00733547375f656e74727900 *733547395f696e666f00733547395f656e74727900733549705f696e666f00733549705f656e74 *727900733547335f696e666f00733547335f656e74727900733547355f696e666f00733547355f *656e74727900733549725f696e666f00733549725f656e74727900733661475f696e666f007336 *61475f72657400733547315f696e666f00733547315f656e74727900733549745f696e666f0073 *3549745f656e74727900733546505f696e666f00733546505f656e74727900733546525f696e66 *6f00733546525f656e74727900733549765f696e666f00733549765f656e747279007335464c5f *696e666f007335464c5f656e747279007335464e5f696e666f007335464e5f656e747279007335 *49785f696e666f00733549785f656e747279007336614a5f696e666f007336614a5f7265740073 *35464a5f696e666f007335464a5f656e747279007335497a5f696e666f007335497a5f656e7472 *7900733546785f696e666f00733546785f656e747279007335467a5f696e666f007335467a5f65 *6e74727900733549425f696e666f00733549425f656e74727900733546745f696e666f00733546 *745f656e74727900733546765f696e666f00733546765f656e74727900733549445f696e666f00 *733549445f656e747279007336614d5f696e666f007336614d5f72657400733546725f696e666f *00733546725f656e74727900733549465f696e666f00733549465f656e74727900733546665f69 *6e666f00733546665f656e74727900733546685f696e666f00733546685f656e74727900733549 *485f696e666f00733549485f656e74727900733546625f696e666f00733546625f656e74727900 *733546645f696e666f00733546645f656e747279007335494a5f696e666f007335494a5f656e74 *727900733661505f696e666f00733661505f72657400733546395f696e666f00733546395f656e *747279007336616e5f696e666f007336616e5f726574007234584e5f656e747279007335494d5f *636c6f73757265007335494f5f737274007335494f5f636c6f73757265007335494f5f696e666f *007335494f5f656e74727900723458505f73727400723458505f636c6f7375726500723458505f *696e666f00723458505f656e74727900723458535f73727400723458555f73727400723458575f *73727400723458535f636c6f7375726500723458555f636c6f7375726500723458575f636c6f73 *75726500723458535f696e666f00723458535f656e74727900723458555f696e666f0072345855 *5f656e74727900723458575f696e666f00723458575f656e747279007234585a5f737274007234 *585a5f636c6f73757265007234585a5f696e666f007234585a5f656e74727900723459315f7372 *7400723459315f636c6f7375726500723459315f696e666f0073354a355f696e666f0073354a35 *5f7265740073354a345f696e666f0073354a345f7265740073354a645f696e666f0073354a645f *7265740073354a635f696e666f0073354a635f726574007336616c5f696e666f007336616c5f72 *65740073354a615f696e666f0073354a615f7265740073354a735f696e666f0073354a735f7265 *740073354a725f696e666f0073354a725f726574007336616a5f696e666f007336616a5f726574 *0073354a705f696e666f0073354a705f7265740073354a485f696e666f0073354a485f72657400 *73354a475f696e666f0073354a475f72657400733661685f696e666f00733661685f7265740073 *354a455f696e666f0073354a455f7265740073354a575f696e666f0073354a575f726574007335 *4a565f696e666f0073354a565f7265740073354a545f696e666f0073354a545f7265740073354a *305f696e666f0073354a305f72657400723459315f656e74727900723459335f73727400723459 *335f636c6f7375726500723459335f696e666f0073354b375f696e666f0073354b375f656e7472 *7900723459335f656e74727900723459375f73727400723459375f636c6f737572650072345937 *5f696e666f00723459375f656e74727900723459395f73727400723459395f636c6f7375726500 *723459395f696e666f0073354b685f696e666f0073354b685f656e7472790073354b6a5f696e66 *6f0073354b6a5f656e74727900733661365f696e666f00733661365f7265740073354b4e5f696e *666f0073354b4e5f656e7472790073354b425f696e666f0073354b425f656e7472790073354b44 *5f696e666f0073354b445f656e7472790073354b505f696e666f0073354b505f656e7472790073 *3661395f696e666f00733661395f7265740073354b7a5f696e666f0073354b7a5f656e74727900 *73354b525f696e666f0073354b525f656e74727900733639565f696e666f00733639565f726574 *0073354c6b5f696e666f0073354c6b5f656e7472790073354c385f696e666f0073354c385f656e *7472790073354c615f696e666f0073354c615f656e7472790073354c6d5f696e666f0073354c6d *5f656e74727900733639595f696e666f00733639595f7265740073354c365f696e666f0073354c *365f656e7472790073354c6f5f696e666f0073354c6f5f656e7472790073354c715f696e666f00 *73354c715f656e747279007336394b5f696e666f007336394b5f7265740073354c545f696e666f *0073354c545f656e7472790073354c485f696e666f0073354c485f656e7472790073354c4a5f69 *6e666f0073354c4a5f656e7472790073354c565f696e666f0073354c565f656e74727900733639 *4e5f696e666f007336394e5f7265740073354c465f696e666f0073354c465f656e747279007335 *4c585f696e666f0073354c585f656e7472790073354c5a5f696e666f0073354c5a5f656e747279 *0073354d6e5f696e666f0073354d6e5f656e7472790073354d675f696e666f0073354d675f656e *7472790073354d695f696e666f0073354d695f656e7472790073354d705f696e666f0073354d70 *5f656e74727900733639435f696e666f00733639435f7265740073354d655f696e666f0073354d *655f656e74727900733639425f696e666f00733639425f72657400723459395f656e7472790073 *354d735f636c6f737572650073354d755f7372740073354d755f636c6f737572650073354d755f *696e666f0073354d755f656e74727900723459625f73727400723459625f636c6f737572650072 *3459625f696e666f00723459625f656e74727900723459655f73727400723459655f636c6f7375 *726500723459655f696e666f00723459655f656e7472790073354d4a5f696e666f0073354d4a5f *7265740073354d495f696e666f0073354d495f7265740073354d525f696e666f0073354d525f72 *65740073354d515f696e666f0073354d515f7265740073354d4f5f696e666f0073354d4f5f7265 *740073354e335f696e666f0073354e335f7265740073354e325f696e666f0073354e325f726574 *0073354e305f696e666f0073354e305f7265740073354e655f696e666f0073354e655f72657400 *73354e645f696e666f0073354e645f7265740073354e625f696e666f0073354e625f7265740073 *354e705f696e666f0073354e705f7265740073354e6f5f696e666f0073354e6f5f726574007335 *4e6d5f696e666f0073354e6d5f7265740073354e415f696e666f0073354e415f7265740073354e *7a5f696e666f0073354e7a5f7265740073354e785f696e666f0073354e785f7265740073354e4c *5f696e666f0073354e4c5f7265740073354e4b5f696e666f0073354e4b5f7265740073354e495f *696e666f0073354e495f7265740073354e575f696e666f0073354e575f7265740073354e565f69 *6e666f0073354e565f7265740073354e545f696e666f0073354e545f7265740073354f375f696e *666f0073354f375f7265740073354f365f696e666f0073354f365f7265740073354f345f696e66 *6f0073354f345f7265740073354f695f696e666f0073354f695f7265740073354f685f696e666f *0073354f685f7265740073354f665f696e666f0073354f665f7265740073354f745f696e666f00 *73354f745f7265740073354f735f696e666f0073354f735f7265740073354f715f696e666f0073 *354f715f7265740073354f455f696e666f0073354f455f7265740073354f445f696e666f007335 *4f445f7265740073354f425f696e666f0073354f425f7265740073354d455f696e666f0073354d *455f7265740073354f4b5f696e666f0073354f4b5f656e7472790073354f535f696e666f007335 *4f535f656e74727900733550665f696e666f00733550665f656e74727900733550375f696e666f *00733550375f656e74727900733550395f696e666f00733550395f656e74727900733550685f69 *6e666f00733550685f656e74727900733550355f696e666f00733550355f656e74727900733550 *765f696e666f00733550765f656e747279007335506f5f696e666f007335506f5f656e74727900 *733550715f696e666f00733550715f656e74727900733550785f696e666f00733550785f656e74 *7279007335506d5f696e666f007335506d5f656e747279007335504c5f696e666f007335504c5f *656e74727900733550455f696e666f00733550455f656e74727900733550475f696e666f007335 *50475f656e747279007335504e5f696e666f007335504e5f656e74727900733550435f696e666f *00733550435f656e74727900733550505f696e666f00733550505f656e74727900733550525f69 *6e666f00733550525f656e74727900733550545f696e666f00733550545f656e74727900733551 *375f696e666f00733551375f656e74727900733551305f696e666f00733551305f656e74727900 *733551325f696e666f00733551325f656e74727900733551395f696e666f00733551395f656e74 *727900733550595f696e666f00733550595f656e747279007335516e5f696e666f007335516e5f *656e74727900733551675f696e666f00733551675f656e74727900733551695f696e666f007335 *51695f656e74727900733551705f696e666f00733551705f656e74727900733551655f696e666f *00733551655f656e74727900733551445f696e666f00733551445f656e74727900733551775f69 *6e666f00733551775f656e74727900733551795f696e666f00733551795f656e74727900733551 *465f696e666f00733551465f656e74727900733551755f696e666f00733551755f656e74727900 *733551545f696e666f00733551545f656e747279007335514d5f696e666f007335514d5f656e74 *7279007335514f5f696e666f007335514f5f656e74727900733551565f696e666f00733551565f *656e747279007335514b5f696e666f007335514b5f656e74727900733552395f696e666f007335 *52395f656e74727900733552325f696e666f00733552325f656e74727900733552345f696e666f *00733552345f656e74727900733552625f696e666f00733552625f656e74727900733552305f69 *6e666f00733552305f656e74727900733552705f696e666f00733552705f656e74727900733552 *695f696e666f00733552695f656e747279007335526b5f696e666f007335526b5f656e74727900 *733552725f696e666f00733552725f656e74727900733552675f696e666f00733552675f656e74 *727900733552465f696e666f00733552465f656e74727900733552795f696e666f00733552795f *656e74727900733552415f696e666f00733552415f656e74727900733552485f696e666f007335 *52485f656e74727900733552775f696e666f00733552775f656e74727900733552565f696e666f *00733552565f656e747279007335524f5f696e666f007335524f5f656e74727900733552515f69 *6e666f00733552515f656e74727900733552585f696e666f00733552585f656e74727900733552 *4d5f696e666f007335524d5f656e747279007335525a5f696e666f007335525a5f656e74727900 *733553315f696e666f00733553315f656e74727900733553335f696e666f00733553335f656e74 *727900733639415f696e666f00733639415f72657400733553355f696e666f00733553355f656e *74727900733553635f696e666f00733553635f656e74727900733553675f696e666f0073355367 *5f656e74727900733639765f696e666f00733639765f72657400733639715f696e666f00733639 *715f726574007336396c5f696e666f007336396c5f72657400733639675f696e666f0073363967 *5f72657400733639625f696e666f00733639625f72657400733639325f696e666f00733639325f *72657400733638545f696e666f00733638545f726574007336384b5f696e666f007336384b5f72 *657400733638425f696e666f00733638425f72657400733638735f696e666f00733638735f7265 *74007336386a5f696e666f007336386a5f72657400733638615f696e666f00733638615f726574 *00733638315f696e666f00733638315f72657400733637535f696e666f00733637535f72657400 *7336374f5f696e666f007336374f5f726574007336374b5f696e666f007336374b5f7265740073 *3637475f696e666f00733637475f72657400733637435f696e666f00733637435f726574007336 *37785f315f616c7400733637795f315f616c7400733637795f325f616c7400733637795f767462 *6c00733637785f325f616c7400733637785f7674626c00733637735f315f616c7400733637745f *315f616c7400733637755f315f616c7400733637755f325f616c7400733637755f7674626c0073 *3637745f325f616c7400733637745f7674626c00733637735f325f616c7400733637735f767462 *6c00733637725f315f616c7400733637725f325f616c7400733637725f335f616c740073363772 *5f345f616c7400733637725f355f616c7400733637725f365f616c7400733637725f7674626c00 *733637715f696e666f00733637715f72657400733637705f696e666f00733637705f7265740073 *36376f5f696e666f007336376f5f726574007336376e5f696e666f007336376e5f726574007336 *376d5f696e666f007336376d5f726574007336376c5f696e666f007336376c5f72657400733637 *6b5f696e666f007336376b5f726574007336376a5f696e666f007336376a5f7265740073363769 *5f696e666f00733637695f72657400733637685f696e666f00733637685f72657400733637675f *696e666f00733637675f72657400733637665f696e666f00733637665f72657400733637655f69 *6e666f00733637655f72657400733637635f315f616c7400733637635f325f616c740073363763 *5f7674626c00733637375f315f616c7400733637385f315f616c7400733637395f315f616c7400 *733637395f325f616c7400733637395f7674626c00733637385f325f616c7400733637385f7674 *626c00733637375f325f616c7400733637375f7674626c00733636585f315f616c740073363733 *5f315f616c7400733637345f315f616c7400733637345f325f616c7400733637345f7674626c00 *733637335f325f616c7400733637335f7674626c00733636595f315f616c74007336365a5f315f *616c7400733637305f315f616c7400733637305f325f616c7400733637305f7674626c00733636 *5a5f325f616c74007336365a5f7674626c00733636595f325f616c7400733636595f7674626c00 *733636585f325f616c7400733636585f7674626c00733636575f696e666f00733636575f726574 *00733636545f315f616c7400733636545f325f616c7400733636545f7674626c00733636515f31 *5f616c7400733636525f315f616c7400733636525f325f616c7400733636525f7674626c007336 *36515f325f616c7400733636515f7674626c007336364d5f315f616c7400733636505f315f616c *7400733636505f325f616c7400733636505f7674626c007336364e5f315f616c74007336364f5f *315f616c74007336364f5f325f616c74007336364f5f7674626c007336364e5f325f616c740073 *36364e5f7674626c007336364d5f325f616c74007336364d5f7674626c00733636415f315f616c *74007336364c5f315f616c74007336364c5f325f616c74007336364c5f7674626c00733636495f *315f616c74007336364a5f315f616c74007336364a5f325f616c74007336364a5f7674626c0073 *3636495f325f616c7400733636495f7674626c00733636425f315f616c7400733636465f315f61 *6c7400733636465f325f616c7400733636465f7674626c00733636435f315f616c740073363644 *5f315f616c7400733636455f315f616c7400733636455f325f616c7400733636455f7674626c00 *733636445f325f616c7400733636445f7674626c00733636435f325f616c7400733636435f7674 *626c00733636425f325f616c7400733636425f7674626c00733636415f325f616c740073363641 *5f7674626c007336367a5f696e666f007336367a5f72657400733636795f696e666f0073363679 *5f72657400733636785f696e666f00733636785f72657400733636775f696e666f00733636775f *72657400733636765f696e666f00733636765f72657400733636755f696e666f00733636755f72 *657400733670675f696e666f00733670675f656e74727900733671785f315f616c74007336714e *5f315f616c7400733670525f656e747279007336714e5f325f616c74007336714e5f7674626c00 *733671415f696e666f00733671415f726574007336704d5f696e666f007336704d5f7265740073 *3671785f325f616c7400733671785f7674626c00733670525f696e666f00733671675f696e666f *00733671675f656e74727900733935645f696e666f00733935645f656e7472790072366a515f73 *72740072366a515f636c6f737572650072366a515f696e666f0072366a515f656e747279007236 *6a535f7372740072366a535f636c6f737572650072366a535f696e666f007339366a5f696e666f *007339366a5f7265740072366a535f656e7472790072317a4a5f7372740072317a4a5f636c6f73 *7572650072317a4a5f696e666f00733672785f64666c7400733672785f7674626c00733935635f *315f616c7400733935635f325f616c7400733935635f7674626c00733672705f696e666f007336 *72705f656e74727900733672465f696e666f00733672465f656e74727900733672665f696e666f *00733672665f656e74727900733672685f696e666f00733672685f656e74727900733672645f69 *6e666f00733672645f656e747279007336726a5f696e666f007336726a5f656e74727900733672 *625f696e666f00733672625f656e747279007336726e5f696e666f007336726e5f656e74727900 *733672495f696e666f00733672495f656e74727900733672375f696e666f00733672375f656e74 *727900733935615f696e666f00733935615f7265740072317a4a5f656e7472790072366a555f73 *72740072366a555f636c6f737572650072366a555f696e666f00733936665f696e666f00733936 *665f7265740072366a555f656e7472790072366a575f7372740072366a575f636c6f7375726500 *72366a575f696e666f0072366a575f656e7472790072366a595f7372740072366a595f636c6f73 *7572650072366a595f696e666f0072366a595f656e7472790072366b305f7372740072366b305f *636c6f737572650072366b305f696e666f0072366b305f656e7472790072366b325f7372740072 *366b325f636c6f737572650072366b325f696e666f0072366b325f656e7472790072366b345f73 *72740072366b345f636c6f737572650072366b345f696e666f0072366b345f656e747279007236 *6b365f7372740072366b365f636c6f737572650072366b365f696e666f0072366b365f656e7472 *790072366b385f7372740072366b385f636c6f737572650072366b385f696e666f00733936635f *696e666f00733936635f7265740072366b385f656e7472790072366b615f7372740072366b615f *636c6f737572650072366b615f696e666f0072366b615f656e7472790072366b635f7372740072 *366b635f636c6f737572650072366b635f696e666f00733936395f696e666f00733936395f7265 *740072366b635f656e7472790072366b655f7372740072366b655f636c6f737572650072366b65 *5f696e666f0072366b655f656e7472790072366b675f7372740072366b675f636c6f7375726500 *72366b675f696e666f00733936355f696e666f00733936355f7265740072366b675f656e747279 *0072366b695f7372740072366b695f636c6f737572650072366b695f696e666f0072366b695f65 *6e7472790072366b6b5f7372740072366b6b5f636c6f737572650072366b6b5f696e666f007339 *36315f696e666f00733936315f7265740072366b6b5f656e7472790072366b6d5f737274007236 *6b6d5f636c6f737572650072366b6d5f696e666f0072366b6d5f656e7472790072366b6f5f7372 *740072366b6f5f636c6f737572650072366b6f5f696e666f0072366b6f5f656e7472790072366b *715f7372740072366b715f636c6f737572650072366b715f696e666f0072366b715f656e747279 *0072366b735f7372740072366b735f636c6f737572650072366b735f696e666f0072366b735f65 *6e7472790072366b755f7372740072366b755f636c6f737572650072366b755f696e666f007236 *6b755f656e7472790072366b775f7372740072366b775f636c6f737572650072366b775f696e66 *6f0072366b775f656e7472790072366b795f7372740072366b795f636c6f737572650072366b79 *5f696e666f0072366b795f656e7472790072366b415f7372740072366b415f636c6f7375726500 *72366b415f696e666f0072366b415f656e7472790072366b435f7372740072366b435f636c6f73 *7572650072366b435f696e666f00733935595f696e666f00733935595f7265740072366b435f65 *6e7472790072366b455f7372740072366b455f636c6f737572650072366b455f696e666f007236 *6b455f656e7472790072366b475f7372740072366b475f636c6f737572650072366b475f696e66 *6f00733935555f696e666f00733935555f7265740072366b475f656e7472790072366b495f7372 *740072366b495f636c6f737572650072366b495f696e666f0072366b495f656e7472790072366b *4b5f7372740072366b4b5f636c6f737572650072366b4b5f696e666f0072366b4b5f656e747279 *0072366b4d5f7372740072366b4d5f636c6f737572650072366b4d5f696e666f00733935515f69 *6e666f00733935515f7265740072366b4d5f656e7472790072366b4f5f7372740072366b4f5f63 *6c6f737572650072366b4f5f696e666f0072366b4f5f656e7472790072366b515f737274007236 *6b515f636c6f737572650072366b515f696e666f0072366b515f656e7472790072366b535f7372 *740072366b535f636c6f737572650072366b535f696e666f0072366b535f656e7472790072366b *555f7372740072366b555f636c6f737572650072366b555f696e666f0072366b555f656e747279 *0072366b575f7372740072366b575f636c6f737572650072366b575f696e666f007339354d5f69 *6e666f007339354d5f7265740072366b575f656e7472790072366b595f7372740072366b595f63 *6c6f737572650072366b595f696e666f00733935495f696e666f00733935495f7265740072366b *595f656e7472790072366c305f7372740072366c305f636c6f737572650072366c305f696e666f *00733935455f696e666f00733935455f7265740072366c305f656e7472790072366c325f737274 *0072366c325f636c6f737572650072366c325f696e666f00733935415f696e666f00733935415f *7265740072366c325f656e7472790072366c345f7372740072366c345f636c6f73757265007236 *6c345f696e666f00733935775f696e666f00733935775f7265740072366c345f656e7472790072 *366c365f7372740072366c365f636c6f737572650072366c365f696e666f0072366c365f656e74 *72790072366c385f7372740072366c385f636c6f737572650072366c385f696e666f0072366c38 *5f656e7472790072366c615f7372740072366c615f636c6f737572650072366c615f696e666f00 *72366c615f656e7472790072366c635f7372740072366c635f636c6f737572650072366c635f69 *6e666f0072366c635f656e7472790072366c655f7372740072366c655f636c6f73757265007236 *6c655f696e666f0072366c655f656e7472790072366c675f7372740072366c675f636c6f737572 *650072366c675f696e666f0072366c675f656e7472790072366c695f7372740072366c695f636c *6f737572650072366c695f696e666f0072366c695f656e7472790072317a505f7372740072317a *505f636c6f737572650072317a505f696e666f00733675715f696e666f00733675715f656e7472 *7900733675735f696e666f00733675735f656e74727900733675685f696e666f00733675685f65 *6e747279007339356e5f696e666f007339356e5f726574007339356d5f315f616c740073393576 *5f315f616c740072317a505f656e74727900733935765f325f616c7400733935765f7674626c00 *733935745f696e666f00733935745f72657400733935735f696e666f00733935735f7265740073 *3935705f696e666f00733935705f726574007339356d5f325f616c74007339356d5f7674626c00 *72366c6b5f7372740072366c6b5f636c6f737572650072366c6b5f696e666f007339344b5f696e *666f007339344b5f72657400733678315f696e666f00733678315f656e747279007339344d5f69 *6e666f007339344d5f72657400733677525f696e666f00733677525f656e747279007339344f5f *696e666f007339344f5f72657400733677485f696e666f00733677485f656e7472790073393451 *5f696e666f00733934515f72657400733677785f696e666f00733677785f656e74727900733934 *535f696e666f00733934535f726574007336776e5f696e666f007336776e5f656e747279007339 *34555f696e666f00733934555f72657400733677645f696e666f00733677645f656e7472790073 *3934575f696e666f00733934575f72657400733677335f696e666f00733677335f656e74727900 *733934595f696e666f00733934595f72657400733676545f696e666f00733676545f656e747279 *00733935305f696e666f00733935305f726574007336764a5f696e666f007336764a5f656e7472 *7900733935325f696e666f00733935325f72657400733935345f696e666f00733935345f726574 *00733676705f696e666f00733676705f656e74727900733935365f696e666f00733935365f7265 *7400733676665f696e666f00733676665f656e74727900733935385f696e666f00733935385f72 *657400733676685f696e666f00733676685f656e74727900733676725f696e666f00733676725f *656e74727900733676425f696e666f00733676425f656e747279007336764c5f696e666f007336 *764c5f656e74727900733676565f696e666f00733676565f656e74727900733677355f696e666f *00733677355f656e74727900733677665f696e666f00733677665f656e74727900733677705f69 *6e666f00733677705f656e747279007336777a5f696e666f007336777a5f656e74727900733677 *4a5f696e666f007336774a5f656e74727900733677545f696e666f00733677545f656e74727900 *7339344a5f696e666f007339344a5f72657400733934495f696e666f00733934495f7265740072 *366c6b5f656e7472790072366c6d5f7372740072366c6d5f636c6f737572650072366c6d5f696e *666f00733678385f696e666f00733678385f656e7472790072366c6d5f656e7472790073364d77 *5f7372740073364d775f636c6f737572650073364d775f696e666f007336786c5f696e666f0073 *36786c5f656e747279007336786f5f72657400733678745f696e666f00733678745f656e747279 *00733931655f315f616c74007336787a5f696e666f007336787a5f656e74727900733678425f72 *657400733931675f315f616c7400733678565f696e666f00733678565f656e7472790073367858 *5f696e666f00733678585f72657400733679325f696e666f00733679325f656e74727900733931 *6c5f315f616c7400733679385f696e666f00733679385f656e74727900733679615f7265740073 *39316e5f315f616c74007336797a5f696e666f007336797a5f72657400733931735f315f616c74 *00733679565f696e666f00733679565f7265740073367a305f696e666f0073367a305f656e7472 *7900733931785f315f616c740073367a365f696e666f0073367a365f656e7472790073367a385f *696e666f0073367a385f726574007339317a5f315f616c740073367a765f696e666f0073367a76 *5f656e7472790073367a785f696e666f0073367a785f72657400733931455f315f616c74007336 *7a525f696e666f0073367a525f656e7472790073367a545f696e666f0073367a545f7265740073 *367a595f696e666f0073367a595f656e747279007339314a5f315f616c7400733641345f696e66 *6f00733641345f656e74727900733641365f696e666f00733641365f726574007339314c5f315f *616c7400733641745f696e666f00733641745f656e74727900733641765f696e666f0073364176 *5f72657400733931515f315f616c7400733641505f696e666f00733641505f656e747279007336 *41525f696e666f00733641525f72657400733641575f696e666f00733641575f656e7472790073 *3931565f315f616c7400733642325f696e666f00733642325f656e74727900733642345f696e66 *6f00733642345f72657400733931585f315f616c7400733642745f696e666f00733642745f7265 *7400733932325f315f616c74007336424e5f696e666f007336424e5f656e74727900733642505f *696e666f00733642505f72657400733642555f696e666f00733642555f656e7472790073393237 *5f315f616c7400733643305f696e666f00733643305f656e74727900733643325f696e666f0073 *3643325f72657400733932395f315f616c7400733643725f696e666f00733643725f7265740073 *3932655f315f616c74007336434c5f696e666f007336434c5f656e747279007336434e5f696e66 *6f007336434e5f72657400733643535f696e666f00733643535f656e747279007339326a5f315f *616c7400733643595f696e666f00733643595f656e74727900733644305f696e666f0073364430 *5f726574007339326c5f315f616c74007336446e5f696e666f007336446e5f656e747279007336 *44705f696e666f00733644705f72657400733932715f315f616c74007336444a5f696e666f0073 *36444a5f656e747279007336444c5f696e666f007336444c5f72657400733644515f696e666f00 *733644515f656e74727900733932765f315f616c7400733644575f696e666f00733644575f656e *74727900733644595f696e666f00733644595f72657400733932785f315f616c74007336456c5f *696e666f007336456c5f656e747279007336456e5f696e666f007336456e5f7265740073393243 *5f315f616c7400733645485f696e666f00733645485f656e747279007336454a5f696e666f0073 *36454a5f726574007336454f5f696e666f007336454f5f656e74727900733932485f315f616c74 *00733645555f696e666f00733645555f656e74727900733645575f696e666f00733645575f7265 *74007339324a5f315f616c74007336466a5f696e666f007336466a5f656e747279007336466c5f *696e666f007336466c5f726574007339324f5f315f616c7400733646465f696e666f0073364646 *5f656e74727900733646485f696e666f00733646485f726574007336464d5f696e666f00733646 *4d5f656e74727900733932545f315f616c7400733646535f696e666f00733646535f656e747279 *00733646555f696e666f00733646555f72657400733932565f315f616c7400733647685f696e66 *6f00733647685f656e747279007336476a5f696e666f007336476a5f72657400733933305f315f *616c7400733647445f696e666f00733647445f656e74727900733647465f696e666f0073364746 *5f726574007336474b5f696e666f007336474b5f656e74727900733933355f315f616c74007336 *47515f696e666f00733647515f656e74727900733647535f696e666f00733647535f7265740073 *3933375f315f616c7400733648665f696e666f00733648665f656e74727900733648685f696e66 *6f00733648685f72657400733933635f315f616c7400733648425f696e666f00733648425f656e *74727900733648445f696e666f00733648445f72657400733933685f315f616c7400733648515f *726574007339336a5f315f616c7400733649645f696e666f00733649645f656e74727900733649 *665f696e666f00733649665f726574007339336f5f315f616c74007336497a5f696e666f007336 *497a5f656e74727900733649425f696e666f00733649425f72657400733649475f696e666f0073 *3649475f656e74727900733933745f315f616c74007336494d5f696e666f007336494d5f656e74 *7279007336494f5f696e666f007336494f5f72657400733933765f315f616c740073364a645f69 *6e666f0073364a645f72657400733933415f315f616c740073364a7a5f696e666f0073364a7a5f *72657400733933465f315f616c740073364a4b5f696e666f0073364a4b5f656e7472790073364a *4d5f696e666f0073364a4d5f72657400733933485f315f616c740073364b395f696e666f007336 *4b395f656e7472790073364b625f696e666f0073364b625f726574007339334d5f315f616c7400 *733933505f315f616c7400733933505f325f616c7400733933505f7674626c007339334e5f696e *666f007339334e5f726574007339334d5f325f616c74007339334d5f7674626c007339334c5f33 *5f616c74007339334c5f64666c74007339334c5f7674626c0073364b4a5f696e666f0073364b4a *5f656e7472790073364b4d5f696e666f0073364b4d5f656e7472790073364b345f696e666f0073 *364b345f656e747279007339334b5f315f616c74007339334b5f325f616c74007339334b5f7674 *626c00733933495f696e666f00733933495f72657400733933485f325f616c7400733933485f76 *74626c00733933475f335f616c7400733933475f64666c7400733933475f7674626c0073364b4f *5f696e666f0073364b4f5f656e74727900733933465f325f616c7400733933465f7674626c0073 *3933455f345f616c7400733933455f64666c7400733933455f7674626c0073364b515f696e666f *0073364b515f656e74727900733933445f315f616c7400733933445f325f616c7400733933445f *7674626c00733933425f696e666f00733933425f72657400733933415f325f616c740073393341 *5f7674626c007339337a5f335f616c74007339337a5f64666c74007339337a5f7674626c007336 *4a365f696e666f0073364a365f656e74727900733933795f315f616c7400733933795f325f616c *7400733933795f7674626c00733933775f696e666f00733933775f72657400733933765f325f61 *6c7400733933765f7674626c00733933755f335f616c7400733933755f64666c7400733933755f *7674626c0073364b575f696e666f0073364b575f656e74727900733933745f325f616c74007339 *33745f7674626c00733933735f345f616c7400733933735f64666c7400733933735f7674626c00 *733933725f315f616c7400733933725f325f616c7400733933725f7674626c00733933705f696e *666f00733933705f726574007339336f5f325f616c74007339336f5f7674626c007339336e5f33 *5f616c74007339336e5f64666c74007339336e5f7674626c0073364c325f696e666f0073364c32 *5f656e747279007339336d5f315f616c74007339336d5f325f616c74007339336d5f7674626c00 *7339336b5f696e666f007339336b5f726574007339336a5f325f616c74007339336a5f7674626c *00733933695f335f616c7400733933695f64666c7400733933695f7674626c0073364c345f696e *666f0073364c345f656e74727900733933685f325f616c7400733933685f7674626c0073393367 *5f345f616c7400733933675f64666c7400733933675f7674626c0073364c365f696e666f007336 *4c365f656e74727900733933665f315f616c7400733933665f325f616c7400733933665f767462 *6c00733933645f696e666f00733933645f72657400733933635f325f616c7400733933635f7674 *626c00733933625f335f616c7400733933625f64666c7400733933625f7674626c0073364c385f *696e666f0073364c385f656e7472790073364c615f696e666f0073364c615f656e747279007339 *33615f315f616c7400733933615f325f616c7400733933615f7674626c00733933385f696e666f *00733933385f72657400733933375f325f616c7400733933375f7674626c00733933365f335f61 *6c7400733933365f64666c7400733933365f7674626c00733933355f325f616c7400733933355f *7674626c00733933345f345f616c7400733933345f64666c7400733933345f7674626c00733933 *335f315f616c7400733933335f325f616c7400733933335f7674626c00733933315f696e666f00 *733933315f72657400733933305f325f616c7400733933305f7674626c007339325a5f335f616c *74007339325a5f64666c74007339325a5f7674626c0073364c675f696e666f0073364c675f656e *7472790073364c695f696e666f0073364c695f656e74727900733647635f696e666f0073364763 *5f656e74727900733932595f315f616c7400733932595f325f616c7400733932595f7674626c00 *733932575f696e666f00733932575f72657400733932565f325f616c7400733932565f7674626c *00733932555f335f616c7400733932555f64666c7400733932555f7674626c00733932545f325f *616c7400733932545f7674626c00733932535f345f616c7400733932535f64666c740073393253 *5f7674626c0073364c6d5f696e666f0073364c6d5f656e74727900733932525f315f616c740073 *3932525f325f616c7400733932525f7674626c00733932505f696e666f00733932505f72657400 *7339324f5f325f616c74007339324f5f7674626c007339324e5f335f616c74007339324e5f6466 *6c74007339324e5f7674626c0073364c6f5f696e666f0073364c6f5f656e7472790073364c715f *696e666f0073364c715f656e74727900733646655f696e666f00733646655f656e747279007339 *324d5f315f616c74007339324d5f325f616c74007339324d5f7674626c007339324b5f696e666f *007339324b5f726574007339324a5f325f616c74007339324a5f7674626c00733932495f335f61 *6c7400733932495f64666c7400733932495f7674626c0073364c735f696e666f0073364c735f65 *6e74727900733932485f325f616c7400733932485f7674626c00733932475f345f616c74007339 *32475f64666c7400733932475f7674626c0073364c755f696e666f0073364c755f656e74727900 *733932465f315f616c7400733932465f325f616c7400733932465f7674626c00733932445f696e *666f00733932445f72657400733932435f325f616c7400733932435f7674626c00733932425f33 *5f616c7400733932425f64666c7400733932425f7674626c0073364c775f696e666f0073364c77 *5f656e7472790073364c795f696e666f0073364c795f656e74727900733645675f696e666f0073 *3645675f656e74727900733932415f315f616c7400733932415f325f616c7400733932415f7674 *626c00733932795f696e666f00733932795f72657400733932785f325f616c7400733932785f76 *74626c00733932775f335f616c7400733932775f64666c7400733932775f7674626c0073364c41 *5f696e666f0073364c415f656e74727900733932765f325f616c7400733932765f7674626c0073 *3932755f345f616c7400733932755f64666c7400733932755f7674626c0073364c435f696e666f *0073364c435f656e74727900733932745f315f616c7400733932745f325f616c7400733932745f *7674626c00733932725f696e666f00733932725f72657400733932715f325f616c740073393271 *5f7674626c00733932705f335f616c7400733932705f64666c7400733932705f7674626c007336 *4c455f696e666f0073364c455f656e7472790073364c475f696e666f0073364c475f656e747279 *00733644695f696e666f00733644695f656e747279007339326f5f315f616c74007339326f5f32 *5f616c74007339326f5f7674626c007339326d5f696e666f007339326d5f726574007339326c5f *325f616c74007339326c5f7674626c007339326b5f335f616c74007339326b5f64666c74007339 *326b5f7674626c0073364c495f656e747279007339326a5f325f616c74007339326a5f7674626c *00733932695f345f616c7400733932695f64666c7400733932695f7674626c0073364c4b5f696e *666f0073364c4b5f656e74727900733932685f315f616c7400733932685f325f616c7400733932 *685f7674626c00733932665f696e666f00733932665f72657400733932655f325f616c74007339 *32655f7674626c00733932645f335f616c7400733932645f64666c7400733932645f7674626c00 *73364c4d5f696e666f0073364c4d5f656e7472790073364c4f5f696e666f0073364c4f5f656e74 *7279007336436b5f696e666f007336436b5f656e74727900733932635f315f616c740073393263 *5f325f616c7400733932635f7674626c00733932615f696e666f00733932615f72657400733932 *395f325f616c7400733932395f7674626c00733932385f335f616c7400733932385f64666c7400 *733932385f7674626c0073364c515f656e74727900733932375f325f616c7400733932375f7674 *626c00733932365f345f616c7400733932365f64666c7400733932365f7674626c0073364c535f *696e666f0073364c535f656e74727900733932355f315f616c7400733932355f325f616c740073 *3932355f7674626c00733932335f696e666f00733932335f72657400733932325f325f616c7400 *733932325f7674626c00733932315f335f616c7400733932315f64666c7400733932315f767462 *6c0073364c555f696e666f0073364c555f656e7472790073364c575f656e747279007336426d5f *696e666f007336426d5f656e74727900733932305f315f616c7400733932305f325f616c740073 *3932305f7674626c00733931595f696e666f00733931595f72657400733931585f325f616c7400 *733931585f7674626c00733931575f335f616c7400733931575f64666c7400733931575f767462 *6c0073364c595f656e74727900733931565f325f616c7400733931565f7674626c00733931555f *345f616c7400733931555f64666c7400733931555f7674626c0073364d305f656e747279007339 *31545f315f616c7400733931545f325f616c7400733931545f7674626c00733931525f696e666f *00733931525f72657400733931515f325f616c7400733931515f7674626c00733931505f335f61 *6c7400733931505f64666c7400733931505f7674626c0073364d325f696e666f0073364d325f65 *6e7472790073364d345f696e666f0073364d345f656e747279007336416f5f696e666f00733641 *6f5f656e747279007339314f5f315f616c74007339314f5f325f616c74007339314f5f7674626c *007339314d5f696e666f007339314d5f726574007339314c5f325f616c74007339314c5f767462 *6c007339314b5f335f616c74007339314b5f64666c74007339314b5f7674626c0073364d365f65 *6e747279007339314a5f325f616c74007339314a5f7674626c00733931495f345f616c74007339 *31495f64666c7400733931495f7674626c0073364d385f696e666f0073364d385f656e74727900 *733931485f315f616c7400733931485f325f616c7400733931485f7674626c00733931465f696e *666f00733931465f72657400733931455f325f616c7400733931455f7674626c00733931445f33 *5f616c7400733931445f64666c7400733931445f7674626c0073364d615f696e666f0073364d61 *5f656e7472790073364d635f696e666f0073364d635f656e7472790073367a715f696e666f0073 *367a715f656e74727900733931435f315f616c7400733931435f325f616c7400733931435f7674 *626c00733931415f696e666f00733931415f726574007339317a5f325f616c74007339317a5f76 *74626c00733931795f335f616c7400733931795f64666c7400733931795f7674626c0073364d65 *5f696e666f0073364d655f656e74727900733931785f325f616c7400733931785f7674626c0073 *3931775f345f616c7400733931775f64666c7400733931775f7674626c0073364d675f696e666f *0073364d675f656e74727900733931765f315f616c7400733931765f325f616c7400733931765f *7674626c00733931745f696e666f00733931745f72657400733931735f325f616c740073393173 *5f7674626c00733931725f335f616c7400733931725f64666c7400733931725f7674626c007336 *4d695f696e666f0073364d695f656e7472790073364d6b5f656e74727900733679735f696e666f *00733679735f656e74727900733931715f315f616c7400733931715f325f616c7400733931715f *7674626c007339316f5f696e666f007339316f5f726574007339316e5f325f616c74007339316e *5f7674626c007339316d5f335f616c74007339316d5f64666c74007339316d5f7674626c007336 *4d6d5f696e666f0073364d6d5f656e747279007339316c5f325f616c74007339316c5f7674626c *007339316b5f345f616c74007339316b5f64666c74007339316b5f7674626c0073364d6f5f696e *666f0073364d6f5f656e747279007339316a5f315f616c74007339316a5f325f616c7400733931 *6a5f7674626c00733931685f696e666f00733931685f72657400733931675f325f616c74007339 *31675f7674626c00733931665f335f616c7400733931665f64666c7400733931665f7674626c00 *73364d715f696e666f0073364d715f656e74727900733931655f325f616c7400733931655f7674 *626c00733931645f345f616c7400733931645f64666c7400733931645f7674626c0073364d735f *696e666f0073364d735f656e74727900733931625f696e666f00733931625f7265740073364d75 *5f656e7472790073364d775f656e7472790072366c705f7372740072366c705f636c6f73757265 *0072366c705f696e666f0072366c705f656e7472790072366c725f7372740072366c725f636c6f *737572650072366c725f696e666f00733651565f696e666f00733651565f656e74727900733930 *715f696e666f00733930715f72657400733651505f696e666f00733651505f656e747279007336 *51585f696e666f00733651585f656e74727900733651445f696e666f00733651445f656e747279 *00733651465f696e666f00733651465f656e747279007336515a5f696e666f007336515a5f656e *747279007336517a5f696e666f007336517a5f656e74727900733651425f696e666f0073365142 *5f656e74727900733652315f696e666f00733652315f656e74727900733930745f696e666f0073 *3930745f72657400733651785f696e666f00733651785f656e74727900733652335f696e666f00 *733652335f656e747279007336516c5f696e666f007336516c5f656e747279007336516e5f696e *666f007336516e5f656e74727900733652355f696e666f00733652355f656e7472790073365168 *5f696e666f00733651685f656e747279007336516a5f696e666f007336516a5f656e7472790073 *3652375f696e666f00733652375f656e74727900733930775f696e666f00733930775f72657400 *733651665f696e666f00733651665f656e74727900733652395f696e666f00733652395f656e74 *727900733651335f696e666f00733651335f656e74727900733651355f696e666f00733651355f *656e74727900733652625f696e666f00733652625f656e747279007336505a5f696e666f007336 *505a5f656e74727900733651315f696e666f00733651315f656e74727900733652645f696e666f *00733652645f656e747279007339307a5f696e666f007339307a5f72657400733650585f696e66 *6f00733650585f656e74727900733652665f696e666f00733652665f656e747279007336504c5f *696e666f007336504c5f656e747279007336504e5f696e666f007336504e5f656e747279007336 *52685f696e666f00733652685f656e74727900733650485f696e666f00733650485f656e747279 *007336504a5f696e666f007336504a5f656e747279007336526a5f696e666f007336526a5f656e *74727900733930435f696e666f00733930435f72657400733650465f696e666f00733650465f65 *6e747279007336526c5f696e666f007336526c5f656e74727900733650745f696e666f00733650 *745f656e74727900733650765f696e666f00733650765f656e747279007336526e5f696e666f00 *7336526e5f656e74727900733650705f696e666f00733650705f656e74727900733650725f696e *666f00733650725f656e74727900733652705f696e666f00733652705f656e7472790073393046 *5f696e666f00733930465f726574007336506e5f696e666f007336506e5f656e74727900733652 *725f696e666f00733652725f656e74727900733650625f696e666f00733650625f656e74727900 *733650645f696e666f00733650645f656e74727900733652745f696e666f00733652745f656e74 *727900733650375f656e74727900733650395f696e666f00733650395f656e7472790073365276 *5f696e666f00733652765f656e74727900733930495f696e666f00733930495f72657400733650 *355f696e666f00733650355f656e74727900733652785f696e666f00733652785f656e74727900 *73364f545f696e666f0073364f545f656e7472790073364f565f696e666f0073364f565f656e74 *7279007336527a5f696e666f007336527a5f656e7472790073364f505f696e666f0073364f505f *656e7472790073364f525f696e666f0073364f525f656e74727900733652425f696e666f007336 *52425f656e747279007339304c5f696e666f007339304c5f7265740073364f4e5f696e666f0073 *364f4e5f656e74727900733652445f696e666f00733652445f656e7472790073364f425f696e66 *6f0073364f425f656e7472790073364f445f696e666f0073364f445f656e74727900733652465f *696e666f00733652465f656e7472790073364f785f696e666f0073364f785f656e747279007336 *4f7a5f696e666f0073364f7a5f656e74727900733652485f696e666f00733652485f656e747279 *007339304f5f696e666f007339304f5f7265740073364f765f656e747279007336524a5f696e66 *6f007336524a5f656e7472790073364f6a5f696e666f0073364f6a5f656e7472790073364f6c5f *696e666f0073364f6c5f656e747279007336524c5f696e666f007336524c5f656e747279007336 *4f665f696e666f0073364f665f656e7472790073364f685f696e666f0073364f685f656e747279 *007336524e5f696e666f007336524e5f656e74727900733930525f696e666f00733930525f7265 *740073364f645f656e74727900733652505f696e666f00733652505f656e7472790073364f315f *696e666f0073364f315f656e7472790073364f335f696e666f0073364f335f656e747279007336 *52525f696e666f00733652525f656e7472790073364e585f696e666f0073364e585f656e747279 *0073364e5a5f696e666f0073364e5a5f656e74727900733652545f696e666f00733652545f656e *74727900733930555f696e666f00733930555f7265740073364e565f656e74727900733652565f *696e666f00733652565f656e7472790073364e4a5f656e7472790073364e4c5f696e666f007336 *4e4c5f656e74727900733652585f696e666f00733652585f656e7472790073364e465f696e666f *0073364e465f656e7472790073364e485f696e666f0073364e485f656e747279007336525a5f69 *6e666f007336525a5f656e74727900733930585f696e666f00733930585f7265740073364e445f *696e666f0073364e445f656e74727900733653315f696e666f00733653315f656e747279007336 *4e725f656e7472790073364e745f696e666f0073364e745f656e74727900733653335f696e666f *00733653335f656e7472790073364e6e5f696e666f0073364e6e5f656e7472790073364e705f65 *6e74727900733653355f696e666f00733653355f656e74727900733931305f696e666f00733931 *305f7265740073364e6c5f656e74727900733653375f696e666f00733653375f656e7472790073 *364e395f696e666f0073364e395f656e7472790073364e625f696e666f0073364e625f656e7472 *7900733653395f696e666f00733653395f656e7472790073364e355f696e666f0073364e355f65 *6e7472790073364e375f696e666f0073364e375f656e74727900733653625f696e666f00733653 *625f656e74727900733931335f696e666f00733931335f7265740073364e335f656e7472790073 *3930705f696e666f00733930705f7265740072366c725f656e74727900733653655f636c6f7375 *726500733653675f73727400733653675f636c6f7375726500733653675f696e666f0073365367 *5f656e7472790072366c745f7372740072366c745f636c6f737572650072366c745f696e666f00 *72366c745f656e7472790072366c765f636c6f737572650072366c785f636c6f73757265007336 *53495f696e666f00733653495f656e747279007336534b5f696e666f007336534b5f656e747279 *00733653475f696e666f00733653475f656e74727900733930395f696e666f00733930395f7265 *7400733654365f696e666f00733654365f656e7472790073385a545f696e666f0073385a545f72 *657400733654625f696e666f00733654625f656e74727900733654435f696e666f00733654435f *656e7472790073385a6a5f696e666f0073385a6a5f7265740073385a695f315f616c7400733655 *6b5f696e666f007336556b5f656e7472790073385a695f325f616c740073385a695f7674626c00 *72366c7a5f636c6f737572650072366c425f7372740072366c425f636c6f737572650072366c42 *5f696e666f0073365a715f696e666f0073365a715f656e7472790073365a365f696e666f007336 *5a365f656e747279007336594d5f696e666f007336594d5f656e74727900733659735f696e666f *00733659735f656e74727900733659385f696e666f00733659385f656e747279007336584f5f69 *6e666f007336584f5f656e74727900733658755f696e666f00733658755f656e74727900733658 *365f696e666f00733658365f656e74727900733658345f696e666f00733658345f656e74727900 *733658385f696e666f00733658385f656e747279007338584c5f315f616c74007338584c5f325f *616c74007338584c5f7674626c00733858785f315f616c74007338584d5f696e666f007338584d *5f72657400733858785f325f616c7400733858785f7674626c00733858765f696e666f00733858 *765f72657400733658615f696e666f00733658615f656e74727900733657705f696e666f007336 *57705f656e74727900733657355f696e666f00733657355f656e747279007336564c5f696e666f *007336564c5f656e74727900733656725f696e666f00733656725f656e74727900733656375f69 *6e666f00733656375f656e74727900733857315f696e666f00733857315f7265740072366c425f *656e7472790072366c445f636c6f7375726500733856505f315f616c7400733856565f315f616c *7400733730645f656e74727900733730385f696e666f00733730385f656e74727900733856575f *696e666f00733856575f72657400733730615f696e666f00733730615f656e7472790073385656 *5f325f616c7400733856565f7674626c00733856515f696e666f00733856515f72657400733730 *635f696e666f00733730635f72657400733856505f325f616c7400733856505f7674626c007337 *30645f696e666f00733731385f696e666f00733731385f656e74727900733856595f315f616c74 *007338565a5f315f616c7400733730595f696e666f00733730595f656e74727900733857305f69 *6e666f00733857305f72657400733731305f696e666f00733731305f656e747279007338565a5f *325f616c74007338565a5f7674626c00733856595f325f616c7400733856595f7674626c007337 *31345f696e666f00733731345f656e74727900733856585f696e666f00733856585f7265740073 *38564f5f696e666f007338564f5f726574007337326b5f737274007337326b5f636c6f73757265 *007337326b5f696e666f007338564d5f696e666f007338564d5f72657400733732665f696e666f *00733732665f656e747279007338564c5f696e666f007338564c5f726574007337326b5f656e74 *7279007337317a5f737274007337317a5f636c6f73757265007337317a5f696e666f007337317a *5f656e74727900733731625f73727400733731625f636c6f7375726500733731625f696e666f00 *733731625f656e7472790072366c465f7372740072366c465f636c6f737572650072366c465f69 *6e666f0072366c465f656e7472790072366c485f636c6f7375726500733733305f636c6f737572 *6500733733305f696e666f00733856745f696e666f00733856745f72657400733733305f656e74 *7279007337326f5f737274007337326f5f636c6f73757265007337326f5f696e666f007337326f *5f656e7472790072366c4a5f7372740072366c4a5f636c6f737572650072366c4a5f696e666f00 *72366c4a5f656e7472790072366c4c5f636c6f73757265007337334b5f636c6f73757265007337 *334b5f696e666f00733856725f696e666f00733856725f726574007337334b5f656e7472790073 *3733385f73727400733733385f636c6f7375726500733733385f696e666f00733733365f696e66 *6f00733733365f656e74727900733733385f656e74727900733733345f73727400733733345f63 *6c6f7375726500733733345f696e666f00733733345f656e7472790072366c4e5f737274007236 *6c4e5f636c6f737572650072366c4e5f696e666f0072366c4e5f656e7472790072366c505f636c *6f7375726500733734755f636c6f7375726500733734755f696e666f00733856705f696e666f00 *733856705f72657400733734755f656e74727900733733535f73727400733733535f636c6f7375 *726500733733535f696e666f00733733515f696e666f00733733515f656e74727900733733535f *656e747279007337334f5f737274007337334f5f636c6f73757265007337334f5f696e666f0073 *37334f5f656e7472790072366c525f7372740072366c525f636c6f737572650072366c525f696e *666f0072366c525f656e7472790072366c545f636c6f7375726500733735655f636c6f73757265 *00733735655f696e666f007338566e5f696e666f007338566e5f72657400733735655f656e7472 *7900733734435f73727400733734435f636c6f7375726500733734435f696e666f00733734415f *696e666f00733734415f656e74727900733734435f656e74727900733734795f73727400733734 *795f636c6f7375726500733734795f696e666f00733734795f656e7472790072366c565f737274 *0072366c565f636c6f737572650072366c565f696e666f0072366c565f656e7472790072366c58 *5f636c6f7375726500733735595f636c6f7375726500733735595f696e666f007338566c5f696e *666f007338566c5f72657400733735595f656e747279007337356d5f737274007337356d5f636c *6f73757265007337356d5f696e666f007337356b5f696e666f007337356b5f656e747279007337 *356d5f656e74727900733735695f73727400733735695f636c6f7375726500733735695f696e66 *6f00733735695f656e7472790072366c5a5f7372740072366c5a5f636c6f737572650072366c5a *5f696e666f0072366c5a5f656e7472790072366d315f636c6f7375726500733736495f636c6f73 *75726500733736495f696e666f007338566a5f696e666f007338566a5f72657400733736495f65 *6e74727900733736365f73727400733736365f636c6f7375726500733736365f696e666f007337 *36345f696e666f00733736345f656e74727900733736365f656e74727900733736325f73727400 *733736325f636c6f7375726500733736325f696e666f00733736325f656e7472790072366d335f *7372740072366d335f636c6f737572650072366d335f696e666f0072366d335f656e7472790072 *366d355f636c6f7375726500733737735f636c6f7375726500733737735f696e666f0073385668 *5f696e666f00733856685f72657400733737735f656e74727900733736515f7372740073373651 *5f636c6f7375726500733736515f696e666f007337364f5f696e666f007337364f5f656e747279 *00733736515f656e747279007337364d5f737274007337364d5f636c6f73757265007337364d5f *696e666f007337364d5f656e7472790072366d375f7372740072366d375f636c6f737572650072 *366d375f696e666f0072366d375f656e7472790072366d395f636c6f7375726500733738635f63 *6c6f7375726500733738635f696e666f00733856665f696e666f00733856665f72657400733738 *635f656e74727900733737415f73727400733737415f636c6f7375726500733737415f696e666f *00733737795f696e666f00733737795f656e74727900733737415f656e74727900733737775f73 *727400733737775f636c6f7375726500733737775f696e666f00733737775f656e747279007236 *6d625f7372740072366d625f636c6f737572650072366d625f696e666f0072366d625f656e7472 *790072366d645f636c6f7375726500733738535f636c6f7375726500733738535f696e666f0073 *3856645f696e666f00733856645f72657400733738535f656e74727900733738675f7372740073 *3738675f636c6f7375726500733738675f696e666f00733738675f656e7472790072366d665f73 *72740072366d665f636c6f737572650072366d665f696e666f0072366d665f656e747279007236 *6d685f636c6f7375726500733739435f636c6f7375726500733739435f696e666f00733856625f *696e666f00733856625f72657400733739435f656e74727900733739305f73727400733739305f *636c6f7375726500733739305f696e666f00733738595f696e666f00733738595f656e74727900 *733739305f656e74727900733738575f73727400733738575f636c6f7375726500733738575f69 *6e666f00733738575f656e7472790072366d6a5f7372740072366d6a5f636c6f73757265007236 *6d6a5f696e666f0072366d6a5f656e7472790072366d6c5f636c6f73757265007337616d5f636c *6f73757265007337616d5f696e666f00733856395f696e666f00733856395f726574007337616d *5f656e747279007337394b5f737274007337394b5f636c6f73757265007337394b5f696e666f00 *733739495f696e666f00733739495f656e747279007337394b5f656e74727900733739475f7372 *7400733739475f636c6f7375726500733739475f696e666f00733739475f656e7472790072366d *6e5f7372740072366d6e5f636c6f737572650072366d6e5f696e666f0072366d6e5f656e747279 *0072366d705f636c6f7375726500733762325f636c6f7375726500733762325f696e666f007338 *56375f696e666f00733856375f72657400733762325f656e74727900733761715f737274007337 *61715f636c6f7375726500733761715f696e666f00733761715f656e7472790072366d725f7372 *740072366d725f636c6f737572650072366d725f696e666f0072366d725f656e7472790072366d *745f636c6f73757265007337624b5f636c6f73757265007337624b5f696e666f00733856355f69 *6e666f00733856355f726574007337624b5f656e74727900733762385f73727400733762385f63 *6c6f7375726500733762385f696e666f00733762385f656e74727900733762365f737274007337 *62365f636c6f7375726500733762365f696e666f00733762365f656e7472790072366d765f7372 *740072366d765f636c6f737572650072366d765f696e666f0072366d765f656e7472790072366d *785f636c6f7375726500733763425f636c6f7375726500733763425f696e666f00733856335f69 *6e666f00733856335f726574007337636b5f696e666f007337636b5f656e74727900733856325f *696e666f00733856325f72657400733763425f656e74727900733762535f73727400733762535f *636c6f7375726500733762535f696e666f00733762535f656e74727900733762515f7372740073 *3762515f636c6f7375726500733762515f696e666f00733762515f656e747279007337624f5f73 *7274007337624f5f636c6f73757265007337624f5f696e666f007337624f5f656e747279007236 *6d7a5f7372740072366d7a5f636c6f737572650072366d7a5f696e666f0072366d7a5f656e7472 *790072366d425f636c6f7375726500733764715f636c6f7375726500733764715f696e666f0073 *3856305f696e666f00733856305f72657400733764395f696e666f00733764395f656e74727900 *7338555a5f696e666f007338555a5f72657400733764715f656e74727900733763485f73727400 *733763485f636c6f7375726500733763485f696e666f00733763485f656e74727900733763465f *73727400733763465f636c6f7375726500733763465f696e666f00733763465f656e7472790072 *366d445f7372740072366d445f636c6f737572650072366d445f696e666f0072366d445f656e74 *727900733764585f696e666f00733764585f656e74727900733764565f696e666f00733764565f *656e747279007337645a5f696e666f007337645a5f656e74727900733765335f696e666f007337 *65335f656e74727900733855445f315f616c7400733855485f315f616c7400733765765f656e74 *727900733855495f315f616c7400733855495f325f616c7400733855495f7674626c0073376541 *5f696e666f00733765415f656e74727900733855485f325f616c7400733855485f7674626c0073 *3855465f696e666f00733855465f72657400733855455f696e666f00733855455f726574007338 *55445f325f616c7400733855445f7674626c00733765765f696e666f00733765545f636c6f7375 *726500733765545f696e666f00733855425f696e666f00733855425f72657400733765545f656e *74727900733765485f73727400733765485f636c6f7375726500733765485f696e666f00733765 *485f656e7472790072366d465f7372740072366d465f636c6f737572650072366d465f696e666f *0072366d465f656e7472790072366d485f636c6f7375726500733766645f636c6f737572650073 *3766645f696e666f007338557a5f696e666f007338557a5f72657400733766645f656e74727900 *733766315f73727400733766315f636c6f7375726500733766315f696e666f007337655a5f696e *666f007337655a5f656e74727900733766315f656e74727900733765585f73727400733765585f *636c6f7375726500733765585f696e666f00733765585f656e7472790072366d4a5f7372740072 *366d4a5f636c6f737572650072366d4a5f696e666f0072366d4a5f656e7472790072366d4c5f63 *6c6f73757265007337664e5f636c6f73757265007337664e5f696e666f00733855785f696e666f *00733855785f726574007337664e5f656e74727900733766685f73727400733766685f636c6f73 *75726500733766685f696e666f00733766685f656e7472790072366d4e5f7372740072366d4e5f *636c6f737572650072366d4e5f696e666f0072366d4e5f656e7472790072366d505f636c6f7375 *7265007337676e5f636c6f73757265007337676e5f696e666f00733855765f696e666f00733855 *765f726574007337676e5f656e74727900733766525f73727400733766525f636c6f7375726500 *733766525f696e666f00733766525f656e7472790072366d525f7372740072366d525f636c6f73 *7572650072366d525f696e666f0072366d525f656e7472790072366d545f636c6f737572650073 *3767585f636c6f7375726500733767585f696e666f00733855745f696e666f00733855745f7265 *7400733767585f656e74727900733767725f73727400733767725f636c6f737572650073376772 *5f696e666f00733767725f656e7472790072366d565f7372740072366d565f636c6f7375726500 *72366d565f696e666f0072366d565f656e7472790072366d585f636c6f7375726500733768785f *636c6f7375726500733768785f696e666f00733855725f696e666f00733855725f726574007337 *68785f656e74727900733768315f73727400733768315f636c6f7375726500733768315f696e66 *6f00733768315f656e7472790072366d5a5f7372740072366d5a5f636c6f737572650072366d5a *5f696e666f0072366d5a5f656e7472790072366e315f636c6f7375726500733769375f636c6f73 *75726500733769375f696e666f00733855705f696e666f00733855705f72657400733769375f65 *6e74727900733768425f73727400733768425f636c6f7375726500733768425f696e666f007337 *68425f656e7472790072366e335f7372740072366e335f636c6f737572650072366e335f696e66 *6f0072366e335f656e7472790072366e355f636c6f7375726500733769485f636c6f7375726500 *733769485f696e666f007338556e5f696e666f007338556e5f72657400733769485f656e747279 *00733769625f73727400733769625f636c6f7375726500733769625f696e666f00733769625f65 *6e7472790072366e375f7372740072366e375f636c6f737572650072366e375f696e666f007236 *6e375f656e7472790072366e395f636c6f737572650073376a685f636c6f737572650073376a68 *5f696e666f007338556c5f696e666f007338556c5f7265740073376a685f656e74727900733769 *4c5f737274007337694c5f636c6f73757265007337694c5f696e666f007337694c5f656e747279 *0072366e625f7372740072366e625f636c6f737572650072366e625f696e666f0072366e625f65 *6e7472790072366e645f636c6f737572650073376a525f636c6f737572650073376a525f696e66 *6f007338556a5f696e666f007338556a5f7265740073376a525f656e7472790073376a6c5f7372 *740073376a6c5f636c6f737572650073376a6c5f696e666f0073376a6c5f656e7472790072366e *665f7372740072366e665f636c6f737572650072366e665f696e666f0072366e665f656e747279 *0072366e685f636c6f737572650073376b725f636c6f737572650073376b725f696e666f007338 *55685f696e666f00733855685f7265740073376b725f656e7472790073376a565f737274007337 *6a565f636c6f737572650073376a565f696e666f0073376a565f656e7472790072366e6a5f7372 *740072366e6a5f636c6f737572650072366e6a5f696e666f0072366e6a5f656e7472790072366e *6c5f636c6f737572650073376c335f636c6f737572650073376c335f696e666f00733855665f69 *6e666f00733855665f7265740073376c335f656e7472790073376b785f7372740073376b785f63 *6c6f737572650073376b785f696e666f0073376b785f656e7472790073376b765f737274007337 *6b765f636c6f737572650073376b765f696e666f0073376b765f656e7472790072366e6e5f7372 *740072366e6e5f636c6f737572650072366e6e5f696e666f0072366e6e5f656e7472790072366e *705f636c6f737572650073376c445f636c6f737572650073376c445f696e666f00733855645f69 *6e666f00733855645f7265740073376c445f656e7472790073376c375f7372740073376c375f63 *6c6f737572650073376c375f696e666f0073376c375f656e7472790072366e725f737274007236 *6e725f636c6f737572650072366e725f696e666f0072366e725f656e7472790072366e745f636c *6f737572650073376d6e5f636c6f737572650073376d6e5f696e666f00733855625f696e666f00 *733855625f7265740073376d6e5f656e7472790073376c525f7372740073376c525f636c6f7375 *72650073376c525f696e666f0073376c4e5f696e666f0073376c4e5f656e7472790073376c505f *696e666f0073376c505f656e7472790073376c525f656e7472790073376c4c5f7372740073376c *4c5f636c6f737572650073376c4c5f696e666f0073376c4a5f696e666f0073376c4a5f656e7472 *790073376c4c5f656e7472790073376c485f7372740073376c485f636c6f737572650073376c48 *5f696e666f0073376c485f656e7472790072366e765f7372740072366e765f636c6f7375726500 *72366e765f696e666f0072366e765f656e7472790072366e785f636c6f737572650073376e375f *636c6f737572650073376e375f696e666f00733855395f696e666f00733855395f726574007337 *6e375f656e7472790073376d425f7372740073376d425f636c6f737572650073376d425f696e66 *6f0073376d785f696e666f0073376d785f656e7472790073376d7a5f696e666f0073376d7a5f65 *6e7472790073376d425f656e7472790073376d765f7372740073376d765f636c6f737572650073 *376d765f696e666f0073376d745f696e666f0073376d745f656e7472790073376d765f656e7472 *790073376d725f7372740073376d725f636c6f737572650073376d725f696e666f0073376d725f *656e7472790072366e7a5f7372740072366e7a5f636c6f737572650072366e7a5f696e666f0072 *366e7a5f656e7472790072366e425f636c6f737572650073376e525f636c6f737572650073376e *525f696e666f00733855375f696e666f00733855375f7265740073376e525f656e747279007337 *6e6c5f7372740073376e6c5f636c6f737572650073376e6c5f696e666f0073376e685f696e666f *0073376e685f656e7472790073376e6a5f696e666f0073376e6a5f656e7472790073376e6c5f65 *6e7472790073376e665f7372740073376e665f636c6f737572650073376e665f696e666f007337 *6e645f696e666f0073376e645f656e7472790073376e665f656e7472790073376e625f73727400 *73376e625f636c6f737572650073376e625f696e666f0073376e625f656e7472790072366e445f *7372740072366e445f636c6f737572650072366e445f696e666f0072366e445f656e7472790072 *366e465f636c6f737572650073376f745f636c6f737572650073376f745f696e666f0073385535 *5f696e666f00733855355f7265740073376f745f656e7472790073376e585f7372740073376e58 *5f636c6f737572650073376e585f696e666f0073376e585f656e7472790073376e565f73727400 *73376e565f636c6f737572650073376e565f696e666f0073376e565f656e7472790072366e485f *7372740072366e485f636c6f737572650072366e485f696e666f0072366e485f656e7472790072 *366e4a5f636c6f7375726500733854595f315f616c74007338545a5f696e666f007338545a5f72 *657400733854595f325f616c7400733854595f7674626c0073376f565f696e666f0073376f565f *656e7472790073376f5a5f696e666f0073376f5a5f656e747279007337706f5f696e666f007337 *706f5f656e74727900733770685f696e666f00733770685f656e74727900733770635f696e666f *00733770635f656e74727900733770655f696e666f00733770655f656e747279007337706a5f69 *6e666f007337706a5f656e747279007337706c5f696e666f007337706c5f656e74727900733855 *335f696e666f00733855335f72657400733770715f696e666f00733770715f656e747279007337 *70745f696e666f00733770745f656e74727900733770765f696e666f00733770765f656e747279 *00733855345f315f616c7400733855345f325f616c7400733855345f7674626c00733770355f69 *6e666f00733770355f656e74727900733770785f696e666f00733770785f656e74727900733854 *585f696e666f00733854585f72657400733770455f696e666f00733770455f656e747279007337 *71725f696e666f00733771725f656e74727900733854465f315f616c74007337705a5f696e666f *007337705a5f656e74727900733770585f696e666f00733770585f656e747279007337716e5f69 *6e666f007337716e5f656e747279007338544a5f315f616c74007337716a5f696e666f00733771 *6a5f656e74727900733771385f696e666f00733771385f656e74727900733771625f696e666f00 *733771625f656e747279007338544b5f696e666f007338544b5f726574007338544a5f325f616c *74007338544a5f7674626c00733854485f696e666f00733854485f72657400733854475f696e66 *6f00733854475f72657400733854465f325f616c7400733854465f7674626c00733771745f696e *666f00733771745f656e74727900733771475f696e666f00733771475f656e7472790073377271 *5f315f616c7400733772795f696e666f00733772795f656e74727900733772735f696e666f0073 *3772735f656e747279007337726a5f315f616c74007337726f5f696e666f007337726f5f656e74 *727900733772685f696e666f00733772685f656e747279007337726a5f325f616c74007337726a *5f7674626c00733772415f696e666f00733772415f656e74727900733772365f315f616c740073 *3772315f696e666f00733772315f656e747279007337715a5f696e666f007337715a5f656e7472 *7900733854575f315f616c7400733772355f696e666f00733772355f656e74727900733772385f *696e666f00733772385f656e74727900733854575f325f616c7400733854575f7674626c007338 *54555f696e666f00733854555f72657400733854525f696e666f00733854525f72657400733772 *365f325f616c7400733772365f7674626c00733772615f696e666f00733772615f656e74727900 *733772715f325f616c7400733772715f7674626c00733772435f696e666f00733772435f656e74 *727900733771425f696e666f00733771425f656e747279007338544e5f696e666f007338544e5f *72657400733853595f315f616c74007338535a5f696e666f007338535a5f72657400733853595f *325f616c7400733853595f7674626c00733773335f696e666f00733773335f656e747279007337 *73375f696e666f00733773375f656e74727900733773555f696e666f00733773555f656e747279 *007337734a5f696e666f007337734a5f656e747279007337734c5f696e666f007337734c5f656e *74727900733773575f696e666f00733773575f656e74727900733774695f696e666f0073377469 *5f656e747279007337746b5f696e666f007337746b5f656e74727900733854435f315f616c7400 *733854435f325f616c7400733854435f7674626c007338546d5f696e666f007338546d5f726574 *00733773445f696e666f00733773445f656e74727900733773615f696e666f00733773615f656e *74727900733773465f696e666f00733773465f656e747279007337746d5f696e666f007337746d *5f656e74727900733774745f696e666f00733774745f656e74727900733852535f315f616c7400 *733852575f315f616c7400733774565f656e74727900733852575f325f616c7400733852575f76 *74626c00733852555f696e666f00733852555f72657400733852545f696e666f00733852545f72 *657400733852535f325f616c7400733852535f7674626c00733774565f696e666f00733853325f *696e666f00733853325f72657400733776315f696e666f00733776315f656e7472790073377634 *5f696e666f00733776345f656e74727900733775525f696e666f00733775525f656e7472790073 *38525a5f696e666f007338525a5f72657400733852595f696e666f00733852595f726574007338 *52585f315f616c7400733853645f315f616c7400733775755f656e74727900733853645f325f61 *6c7400733853645f7674626c00733853625f696e666f00733853625f72657400733853615f696e *666f00733853615f72657400733853375f696e666f00733853375f72657400733852585f325f61 *6c7400733852585f7674626c00733775755f696e666f00733776565f7372746400733776705f73 *72746400733776625f64666c7400733776625f7674626c00733776705f315f616c740073385366 *5f73727464007337766b5f696e666f007337766b5f656e74727900733853675f73727464007337 *76525f696e666f00733776525f656e747279007337764c5f696e666f007337764c5f656e747279 *00733776545f696e666f00733776545f656e747279007337764a5f696e666f007337764a5f656e *74727900733853675f315f616c74007337766f5f696e666f007337766f5f656e74727900733853 *685f7372746400733776435f696e666f00733776435f656e74727900733776455f696e666f0073 *3776455f656e747279007337767a5f696e666f007337767a5f656e74727900733776475f696e66 *6f00733776475f656e74727900733853685f315f616c7400733776785f696e666f00733776785f *656e74727900733853695f696e666f00733853695f72657400733853685f325f616c7400733853 *685f7674626c00733853675f325f616c7400733853675f7674626c00733853665f696e666f0073 *3853665f72657400733776705f325f616c7400733776705f7674626c00733776565f696e666f00 *733776565f656e74727900733777565f696e666f00733777565f656e74727900733853495f696e *666f00733853495f72657400733778515f696e666f00733778515f656e74727900733853475f69 *6e666f00733853475f72657400733778565f696e666f00733778565f656e74727900733778595f *696e666f00733778595f656e74727900733778645f696e666f00733778645f656e747279007338 *53445f696e666f00733853445f726574007338536d5f696e666f007338536d5f72657400733853 *6c5f315f616c7400733853535f315f616c7400733777755f656e74727900733853535f325f616c *7400733853535f7674626c00733853515f696e666f00733853515f72657400733853505f696e66 *6f00733853505f726574007338534d5f696e666f007338534d5f726574007338536c5f325f616c *74007338536c5f7674626c00733777755f696e666f00733779635f696e666f00733779635f656e *74727900733853565f315f616c7400733853575f696e666f00733853575f726574007337795a5f *696e666f007337795a5f656e7472790073377a325f696e666f0073377a325f656e747279007337 *796f5f696e666f007337796f5f656e7472790073377a355f696e666f0073377a355f656e747279 *00733779685f696e666f00733779685f656e747279007337796b5f696e666f007337796b5f656e *74727900733853565f325f616c7400733853565f7674626c0073377a375f696e666f0073377a37 *5f656e74727900733779375f696e666f00733779375f656e74727900733853545f696e666f0073 *3853545f7265740072366e4c5f7372740072366e4c5f636c6f737572650072366e4c5f696e666f *0073377a735f696e666f0073377a735f656e7472790073377a6b5f696e666f0073377a6b5f656e *7472790073377a6e5f696e666f0073377a6e5f656e7472790073377a705f696e666f0073377a70 *5f656e74727900733852505f696e666f00733852505f7265740072366e4c5f656e747279007338 *50635f696e666f00733850635f726574007337444b5f696e666f007337444b5f656e7472790073 *3744595f696e666f00733744595f656e74727900733745305f696e666f00733745305f656e7472 *7900733743315f696e666f00733743315f656e74727900733743335f696e666f00733743335f72 *6574007338504c5f696e666f007338504c5f72657400733744775f696e666f00733744775f656e *74727900733744795f696e666f00733744795f656e74727900733744365f696e666f0073374436 *5f656e74727900733851335f315f616c7400733851335f325f616c7400733851335f7674626c00 *733850755f315f616c74007338516b5f315f616c74007338516b5f325f616c74007338516b5f76 *74626c00733850755f325f616c7400733850755f7674626c00733744425f696e666f0073374442 *5f656e74727900733745335f696e666f00733745335f656e74727900733742525f696e666f0073 *3742525f656e74727900733742765f696e666f00733742765f656e74727900733851525f315f61 *6c7400733742555f696e666f00733742555f656e74727900733851525f325f616c740073385152 *5f7674626c00733742575f696e666f00733742575f656e74727900733745355f696e666f007337 *45355f656e74727900733852615f696e666f00733852615f72657400733852385f696e666f0073 *3852385f72657400733851535f696e666f00733851535f72657400733742315f696e666f007337 *42315f656e74727900733742335f696e666f00733742335f656e74727900733852735f696e666f *00733852735f72657400733852635f696e666f00733852635f72657400733741785f696e666f00 *733741785f656e747279007337417a5f696e666f007337417a5f656e74727900733852755f315f *616c7400733742365f696e666f00733742365f656e74727900733852755f325f616c7400733852 *755f7674626c00733742385f696e666f00733742385f656e74727900733745375f696e666f0073 *3745375f656e747279007338524c5f315f616c74007338524f5f315f616c7400733741355f696e *666f00733741355f656e747279007338524f5f325f616c74007338524f5f7674626c007338524c *5f325f616c74007338524c5f7674626c00733852765f696e666f00733852765f72657400733741 *385f696e666f00733741385f656e74727900733850395f696e666f00733850395f726574007236 *6e4e5f7372740072366e4e5f636c6f737572650072366e4e5f696e666f00733745755f696e666f *00733745755f656e74727900733850375f696e666f00733850375f72657400733745715f696e66 *6f00733745715f656e74727900733850365f696e666f00733850365f72657400733850355f696e *666f00733850355f7265740072366e4e5f656e7472790072366e505f7372740072366e505f636c *6f737572650072366e505f696e666f00733745425f696e666f00733745425f656e747279007236 *6e505f656e7472790072366e535f7372740072366e535f636c6f737572650072366e535f696e66 *6f0072366e535f656e7472790072366e555f7372740072366e555f636c6f737572650072366e55 *5f696e666f00733746635f696e666f00733746635f656e74727900733850315f696e666f007338 *50315f72657400733746365f696e666f00733746365f656e74727900733850335f696e666f0073 *3850335f72657400733745595f696e666f00733745595f656e74727900733746385f696e666f00 *733746385f656e74727900733850305f696e666f00733850305f7265740073384f5a5f696e666f *0073384f5a5f7265740072366e555f656e7472790072366e575f7372740072366e575f636c6f73 *7572650072366e575f696e666f007337466a5f696e666f007337466a5f656e7472790072366e57 *5f656e7472790072366f305f7372740072366f325f7372740072366f345f7372740072366f305f *636c6f737572650072366f325f636c6f737572650072366f345f636c6f737572650072366f305f *696e666f0072366f305f656e7472790072366f325f696e666f0072366f325f656e747279007236 *6f345f696e666f0072366f345f656e74727900733749775f73727400733749775f636c6f737572 *6500733749775f696e666f00733746415f696e666f00733746415f656e74727900733746445f69 *6e666f00733746445f72657400733746495f696e666f00733746495f656e7472790073384f6c5f *315f616c74007337464f5f696e666f007337464f5f656e74727900733746515f696e666f007337 *46515f7265740073384f6e5f315f616c7400733747615f696e666f00733747615f656e74727900 *733747635f696e666f00733747635f72657400733747685f696e666f00733747685f656e747279 *0073384f735f315f616c74007337476e5f696e666f007337476e5f656e74727900733747705f69 *6e666f00733747705f7265740073384f755f315f616c74007337474d5f696e666f007337474d5f *656e747279007337474f5f696e666f007337474f5f7265740073384f7a5f315f616c7400733748 *385f696e666f00733748385f656e74727900733748615f696e666f00733748615f726574007337 *48665f696e666f00733748665f656e7472790073384f455f315f616c74007337486c5f696e666f *007337486c5f656e747279007337486e5f696e666f007337486e5f7265740073384f475f315f61 *6c74007337484b5f696e666f007337484b5f656e747279007337484d5f696e666f007337484d5f *7265740073384f4c5f315f616c740073384f4f5f315f616c740073384f4f5f325f616c74007338 *4f4f5f7674626c0073384f4d5f696e666f0073384f4d5f7265740073384f4c5f325f616c740073 *384f4c5f7674626c0073384f4b5f335f616c740073384f4b5f64666c740073384f4b5f7674626c *00733749395f696e666f00733749395f656e74727900733749635f696e666f00733749635f656e *74727900733748465f696e666f00733748465f656e7472790073384f4a5f315f616c740073384f *4a5f325f616c740073384f4a5f7674626c0073384f485f696e666f0073384f485f726574007338 *4f475f325f616c740073384f475f7674626c0073384f465f335f616c740073384f465f64666c74 *0073384f465f7674626c00733749655f696e666f00733749655f656e7472790073384f455f325f *616c740073384f455f7674626c0073384f445f345f616c740073384f445f64666c740073384f44 *5f7674626c00733749675f696e666f00733749675f656e7472790073384f435f315f616c740073 *384f435f325f616c740073384f435f7674626c0073384f415f696e666f0073384f415f72657400 *73384f7a5f325f616c740073384f7a5f7674626c0073384f795f335f616c740073384f795f6466 *6c740073384f795f7674626c00733749695f696e666f00733749695f656e747279007337496b5f *696e666f007337496b5f656e74727900733747485f696e666f00733747485f656e747279007338 *4f785f315f616c740073384f785f325f616c740073384f785f7674626c0073384f765f696e666f *0073384f765f7265740073384f755f325f616c740073384f755f7674626c0073384f745f335f61 *6c740073384f745f64666c740073384f745f7674626c007337496d5f696e666f007337496d5f65 *6e7472790073384f735f325f616c740073384f735f7674626c0073384f725f345f616c74007338 *4f725f64666c740073384f725f7674626c007337496f5f696e666f007337496f5f656e74727900 *73384f715f315f616c740073384f715f325f616c740073384f715f7674626c0073384f6f5f696e *666f0073384f6f5f7265740073384f6e5f325f616c740073384f6e5f7674626c0073384f6d5f33 *5f616c740073384f6d5f64666c740073384f6d5f7674626c00733749715f696e666f0073374971 *5f656e7472790073384f6c5f325f616c740073384f6c5f7674626c0073384f6b5f345f616c7400 *73384f6b5f64666c740073384f6b5f7674626c00733749735f696e666f00733749735f656e7472 *790073384f695f696e666f0073384f695f72657400733749755f696e666f00733749755f656e74 *727900733749775f656e7472790072366f365f7372740072366f365f636c6f737572650072366f *365f696e666f0072366f365f656e7472790072366f395f7372740072366f625f7372740072366f *645f7372740072366f395f636c6f737572650072366f625f636c6f737572650072366f645f636c *6f737572650072366f395f696e666f0072366f395f656e7472790072366f625f696e666f007236 *6f625f656e7472790072366f645f696e666f0072366f645f656e7472790072366f665f73727400 *72366f665f636c6f737572650072366f665f696e666f0072366f665f656e7472790072366f685f *7372740072366f685f636c6f737572650072366f685f696e666f00733935695f696e666f007339 *35695f7265740072366f685f656e7472790073374d585f7372740073374d585f636c6f73757265 *0073374d585f696e666f00733749555f696e666f00733749555f656e74727900733749585f696e *666f00733749585f7265740073374a325f696e666f0073374a325f656e7472790073384e6f5f31 *5f616c740073374a385f696e666f0073374a385f656e7472790073374a615f696e666f0073374a *615f7265740073384e715f315f616c740073374a755f696e666f0073374a755f656e7472790073 *374a775f696e666f0073374a775f7265740073374a425f696e666f0073374a425f656e74727900 *73384e765f315f616c740073374a485f696e666f0073374a485f656e7472790073374a4a5f696e *666f0073374a4a5f7265740073384e785f315f616c740073374b365f696e666f0073374b365f65 *6e7472790073374b385f696e666f0073374b385f7265740073384e435f315f616c740073374b73 *5f696e666f0073374b735f656e7472790073374b755f696e666f0073374b755f7265740073374b *7a5f696e666f0073374b7a5f656e7472790073384e485f315f616c740073374b465f696e666f00 *73374b465f656e7472790073374b485f696e666f0073374b485f7265740073384e4a5f315f616c *740073374c345f696e666f0073374c345f656e7472790073374c365f696e666f0073374c365f72 *65740073384e4f5f315f616c740073374c715f696e666f0073374c715f656e7472790073374c73 *5f696e666f0073374c735f7265740073374c785f696e666f0073374c785f656e7472790073384e *545f315f616c740073374c445f696e666f0073374c445f656e7472790073374c465f696e666f00 *73374c465f7265740073384e565f315f616c740073374d325f696e666f0073374d325f656e7472 *790073374d345f696e666f0073374d345f7265740073384f305f315f616c740073384f335f315f *616c740073384f335f325f616c740073384f335f7674626c0073384f315f696e666f0073384f31 *5f7265740073384f305f325f616c740073384f305f7674626c0073384e5a5f335f616c74007338 *4e5a5f64666c740073384e5a5f7674626c0073374d735f696e666f0073374d735f656e74727900 *73374d765f696e666f0073374d765f656e7472790073374c585f696e666f0073374c585f656e74 *72790073384e595f315f616c740073384e595f325f616c740073384e595f7674626c0073384e57 *5f696e666f0073384e575f7265740073384e565f325f616c740073384e565f7674626c0073384e *555f335f616c740073384e555f64666c740073384e555f7674626c0073374d785f696e666f0073 *374d785f656e7472790073384e545f325f616c740073384e545f7674626c0073384e535f345f61 *6c740073384e535f64666c740073384e535f7674626c0073374d7a5f696e666f0073374d7a5f65 *6e7472790073384e525f315f616c740073384e525f325f616c740073384e525f7674626c007338 *4e505f696e666f0073384e505f7265740073384e4f5f325f616c740073384e4f5f7674626c0073 *384e4e5f335f616c740073384e4e5f64666c740073384e4e5f7674626c0073374d425f696e666f *0073374d425f656e7472790073374d445f696e666f0073374d445f656e7472790073374b5a5f69 *6e666f0073374b5a5f656e7472790073384e4d5f315f616c740073384e4d5f325f616c74007338 *4e4d5f7674626c0073384e4b5f696e666f0073384e4b5f7265740073384e4a5f325f616c740073 *384e4a5f7674626c0073384e495f335f616c740073384e495f64666c740073384e495f7674626c *0073374d465f696e666f0073374d465f656e7472790073384e485f325f616c740073384e485f76 *74626c0073384e475f345f616c740073384e475f64666c740073384e475f7674626c0073374d48 *5f696e666f0073374d485f656e7472790073384e465f315f616c740073384e465f325f616c7400 *73384e465f7674626c0073384e445f696e666f0073384e445f7265740073384e435f325f616c74 *0073384e435f7674626c0073384e425f335f616c740073384e425f64666c740073384e425f7674 *626c0073374d4a5f696e666f0073374d4a5f656e7472790073374d4c5f696e666f0073374d4c5f *656e7472790073374b315f696e666f0073374b315f656e7472790073384e415f315f616c740073 *384e415f325f616c740073384e415f7674626c0073384e795f696e666f0073384e795f72657400 *73384e785f325f616c740073384e785f7674626c0073384e775f335f616c740073384e775f6466 *6c740073384e775f7674626c0073374d4e5f696e666f0073374d4e5f656e7472790073384e765f *325f616c740073384e765f7674626c0073384e755f345f616c740073384e755f64666c74007338 *4e755f7674626c0073374d505f696e666f0073374d505f656e7472790073384e745f315f616c74 *0073384e745f325f616c740073384e745f7674626c0073384e725f696e666f0073384e725f7265 *740073384e715f325f616c740073384e715f7674626c0073384e705f335f616c740073384e705f *64666c740073384e705f7674626c0073374d525f696e666f0073374d525f656e7472790073384e *6f5f325f616c740073384e6f5f7674626c0073384e6e5f345f616c740073384e6e5f64666c7400 *73384e6e5f7674626c0073374d545f696e666f0073374d545f656e7472790073384e6c5f696e66 *6f0073384e6c5f7265740073374d565f696e666f0073374d565f656e7472790073374d585f656e *7472790072366f6a5f7372740072366f6a5f636c6f737572650072366f6a5f696e666f0072366f *6a5f656e7472790072366f6d5f7372740072366f6d5f636c6f737572650072366f6d5f696e666f *0072366f6d5f656e7472790072366f6f5f7372740072366f6f5f636c6f737572650072366f6f5f *696e666f0073374e575f696e666f0073374e575f656e7472790073374e515f696e666f0073374e *515f656e7472790073374e595f696e666f0073374e595f656e7472790073374e4a5f696e666f00 *73374e4a5f656e7472790073374e4c5f696e666f0073374e4c5f656e7472790073374f305f696e *666f0073374f305f656e7472790073374e465f696e666f0073374e465f656e7472790073374e48 *5f696e666f0073374e485f656e7472790073374f325f696e666f0073374f325f656e7472790073 *384e615f696e666f0073384e615f7265740073374e445f696e666f0073374e445f656e74727900 *73374f345f696e666f0073374f345f656e7472790073374e725f696e666f0073374e725f656e74 *72790073374e745f696e666f0073374e745f656e7472790073374f365f696e666f0073374f365f *656e7472790073374e6e5f696e666f0073374e6e5f656e7472790073374e705f696e666f007337 *4e705f656e7472790073374f385f696e666f0073374f385f656e7472790073384e645f696e666f *0073384e645f7265740073374e6c5f696e666f0073374e6c5f656e7472790073384e395f696e66 *6f0073384e395f7265740072366f6f5f656e7472790073374f625f636c6f737572650073374f64 *5f7372740073374f645f636c6f737572650073374f645f696e666f0073374f645f656e74727900 *72366f715f7372740072366f715f636c6f737572650072366f715f696e666f0072366f715f656e *7472790072366f745f7372740072366f745f636c6f737572650072366f745f696e666f0072366f *745f656e7472790072366f765f7372740072366f765f636c6f737572650072366f765f696e666f *0072366f765f656e7472790072366f785f7372740072366f785f636c6f737572650072366f785f *696e666f00733750775f696e666f00733750775f656e74727900733750715f696e666f00733750 *715f656e74727900733750795f696e666f00733750795f656e747279007337506a5f696e666f00 *7337506a5f656e747279007337506c5f696e666f007337506c5f656e74727900733750415f696e *666f00733750415f656e74727900733750665f696e666f00733750665f656e7472790073375068 *5f696e666f00733750685f656e74727900733750435f696e666f00733750435f656e7472790073 *384d565f696e666f0073384d565f72657400733750645f696e666f00733750645f656e74727900 *733750455f696e666f00733750455f656e74727900733750315f696e666f00733750315f656e74 *727900733750335f696e666f00733750335f656e74727900733750475f696e666f00733750475f *656e7472790073374f585f696e666f0073374f585f656e7472790073374f5a5f696e666f007337 *4f5a5f656e74727900733750495f696e666f00733750495f656e7472790073384d595f696e666f *0073384d595f7265740073374f565f696e666f0073374f565f656e747279007337504b5f696e66 *6f007337504b5f656e7472790073374f4a5f696e666f0073374f4a5f656e7472790073374f4c5f *696e666f0073374f4c5f656e747279007337504d5f696e666f007337504d5f656e747279007337 *4f465f696e666f0073374f465f656e7472790073374f485f696e666f0073374f485f656e747279 *007337504f5f696e666f007337504f5f656e7472790073384e315f696e666f0073384e315f7265 *740073374f445f696e666f0073374f445f656e7472790073384d555f696e666f0073384d555f72 *65740072366f785f656e74727900733750525f636c6f7375726500733750545f73727400733750 *545f636c6f7375726500733750545f696e666f00733750545f656e7472790072366f7a5f737274 *0072366f7a5f636c6f737572650072366f7a5f696e666f0072366f7a5f656e7472790072366f42 *5f7372740072366f425f636c6f737572650072366f425f696e666f0072366f425f656e74727900 *72366f445f7372740072366f445f636c6f737572650072366f445f696e666f0073384d6f5f696e *666f0073384d6f5f72657400733754335f696e666f00733754335f656e7472790073384d715f69 *6e666f0073384d715f72657400733753545f696e666f00733753545f656e7472790073384d735f *696e666f0073384d735f726574007337534a5f696e666f007337534a5f656e7472790073384d75 *5f696e666f0073384d755f726574007337537a5f696e666f007337537a5f656e7472790073384d *775f696e666f0073384d775f72657400733753705f696e666f00733753705f656e747279007338 *4d795f696e666f0073384d795f72657400733753665f696e666f00733753665f656e7472790073 *384d415f696e666f0073384d415f72657400733753355f696e666f00733753355f656e74727900 *73384d435f696e666f0073384d435f72657400733752565f696e666f00733752565f656e747279 *0073384d455f696e666f0073384d455f726574007337524c5f696e666f007337524c5f656e7472 *790073384d475f696e666f0073384d475f72657400733752425f696e666f00733752425f656e74 *72790073384d495f696e666f0073384d495f72657400733752725f696e666f00733752725f656e *7472790073384d4b5f696e666f0073384d4b5f72657400733752685f696e666f00733752685f65 *6e7472790073384d4d5f696e666f0073384d4d5f72657400733752375f696e666f00733752375f *656e7472790073384d4f5f696e666f0073384d4f5f72657400733751585f696e666f0073375158 *5f656e7472790073384d515f696e666f0073384d515f726574007337514e5f696e666f00733751 *4e5f656e7472790073384d535f696e666f0073384d535f72657400733751465f696e666f007337 *51465f656e74727900733751505f696e666f00733751505f656e747279007337515a5f696e666f *007337515a5f656e74727900733752395f696e666f00733752395f656e747279007337526a5f69 *6e666f007337526a5f656e74727900733752745f696e666f00733752745f656e74727900733752 *445f696e666f00733752445f656e747279007337524e5f696e666f007337524e5f656e74727900 *733752585f696e666f00733752585f656e74727900733753375f696e666f00733753375f656e74 *727900733753685f696e666f00733753685f656e74727900733753725f696e666f00733753725f *656e74727900733753425f696e666f00733753425f656e747279007337534c5f696e666f007337 *534c5f656e74727900733753565f696e666f00733753565f656e7472790073384d6e5f696e666f *0073384d6e5f7265740073384d6d5f696e666f0073384d6d5f7265740072366f445f656e747279 *0072366f465f7372740072366f465f636c6f737572650072366f465f696e666f00733754615f69 *6e666f00733754615f656e7472790072366f465f656e7472790072366f4a5f7372740072366f4c *5f7372740072366f4e5f7372740072366f4a5f636c6f737572650072366f4c5f636c6f73757265 *0072366f4e5f636c6f737572650072366f4a5f696e666f0072366f4a5f656e7472790072366f4c *5f696e666f0072366f4c5f656e7472790072366f4e5f696e666f0072366f4e5f656e7472790072 *366f505f7372740072366f505f636c6f737572650072366f505f696e666f0072366f505f656e74 *72790072366f525f7372740072366f525f636c6f737572650072366f525f696e666f0073393565 *5f696e666f00733935655f7265740072366f525f656e74727900733863355f7372740073386335 *5f636c6f7375726500733863355f696e666f007337547a5f696e666f007337547a5f656e747279 *00733754435f696e666f00733754435f72657400733754485f696e666f00733754485f656e7472 *7900733849365f315f616c74007337544e5f696e666f007337544e5f656e74727900733754505f *696e666f00733754505f72657400733849385f315f616c7400733755395f696e666f0073375539 *5f656e74727900733755625f696e666f00733755625f72657400733755675f696e666f00733755 *675f656e74727900733849645f315f616c74007337556d5f696e666f007337556d5f656e747279 *007337556f5f696e666f007337556f5f72657400733849665f315f616c74007337554c5f696e66 *6f007337554c5f656e747279007337554e5f696e666f007337554e5f726574007338496b5f315f *616c7400733756375f696e666f00733756375f656e74727900733756395f696e666f0073375639 *5f72657400733756655f696e666f00733756655f656e74727900733849705f315f616c74007337 *566b5f696e666f007337566b5f656e747279007337566d5f696e666f007337566d5f7265740073 *3849725f315f616c74007337564a5f696e666f007337564a5f656e747279007337564c5f696e66 *6f007337564c5f72657400733849775f315f616c7400733757355f696e666f00733757355f656e *74727900733757375f696e666f00733757375f72657400733757635f696e666f00733757635f65 *6e74727900733849425f315f616c7400733757695f696e666f00733757695f656e747279007337 *576b5f696e666f007337576b5f72657400733849445f315f616c7400733757485f696e666f0073 *3757485f656e747279007337574a5f696e666f007337574a5f72657400733849495f315f616c74 *00733758335f696e666f00733758335f656e74727900733758355f696e666f00733758355f7265 *7400733758615f696e666f00733758615f656e747279007338494e5f315f616c7400733758675f *696e666f00733758675f656e74727900733758695f696e666f00733758695f7265740073384950 *5f315f616c7400733758465f696e666f00733758465f656e74727900733758485f696e666f0073 *3758485f72657400733849555f315f616c7400733759315f696e666f00733759315f656e747279 *00733759335f696e666f00733759335f72657400733759385f696e666f00733759385f656e7472 *79007338495a5f315f616c7400733759655f696e666f00733759655f656e74727900733759675f *696e666f00733759675f7265740073384a315f315f616c7400733759445f696e666f0073375944 *5f656e74727900733759465f696e666f00733759465f7265740073384a365f315f616c74007337 *595a5f696e666f007337595a5f656e7472790073375a315f696e666f0073375a315f7265740073 *375a365f696e666f0073375a365f656e7472790073384a625f315f616c740073375a635f696e66 *6f0073375a635f656e7472790073375a655f696e666f0073375a655f7265740073384a645f315f *616c740073375a425f696e666f0073375a425f656e7472790073375a445f696e666f0073375a44 *5f7265740073384a695f315f616c740073375a585f696e666f0073375a585f656e747279007337 *5a5a5f696e666f0073375a5a5f72657400733830345f696e666f00733830345f656e7472790073 *384a6e5f315f616c7400733830615f696e666f00733830615f656e74727900733830635f696e66 *6f00733830635f7265740073384a705f315f616c74007338307a5f696e666f007338307a5f656e *74727900733830425f696e666f00733830425f7265740073384a755f315f616c7400733830565f *696e666f00733830565f656e74727900733830585f696e666f00733830585f7265740073383132 *5f696e666f00733831325f656e7472790073384a7a5f315f616c7400733831385f696e666f0073 *3831385f656e74727900733831615f696e666f00733831615f7265740073384a425f315f616c74 *00733831785f696e666f00733831785f656e747279007338317a5f696e666f007338317a5f7265 *740073384a475f315f616c7400733831545f696e666f00733831545f656e74727900733831565f *696e666f00733831565f72657400733832305f696e666f00733832305f656e7472790073384a4c *5f315f616c7400733832365f696e666f00733832365f656e74727900733832385f696e666f0073 *3832385f7265740073384a4e5f315f616c7400733832765f696e666f00733832765f656e747279 *00733832785f696e666f00733832785f7265740073384a535f315f616c7400733832525f696e66 *6f00733832525f656e74727900733832545f696e666f00733832545f72657400733832595f696e *666f00733832595f656e7472790073384a585f315f616c7400733833345f696e666f0073383334 *5f656e74727900733833365f696e666f00733833365f7265740073384a5a5f315f616c74007338 *33745f696e666f00733833745f656e74727900733833765f696e666f00733833765f7265740073 *384b345f315f616c7400733833505f696e666f00733833505f656e74727900733833525f696e66 *6f00733833525f72657400733833575f696e666f00733833575f656e7472790073384b395f315f *616c7400733834325f696e666f00733834325f656e74727900733834345f696e666f0073383434 *5f7265740073384b625f315f616c7400733834725f696e666f00733834725f656e747279007338 *34745f696e666f00733834745f7265740073384b675f315f616c74007338344e5f696e666f0073 *38344e5f656e74727900733834505f696e666f00733834505f72657400733834555f696e666f00 *733834555f656e7472790073384b6c5f315f616c7400733835305f696e666f00733835305f656e *74727900733835325f696e666f00733835325f7265740073384b6e5f315f616c7400733835705f *696e666f00733835705f656e74727900733835725f696e666f00733835725f7265740073384b73 *5f315f616c74007338354c5f696e666f007338354c5f656e747279007338354e5f696e666f0073 *38354e5f72657400733835535f696e666f00733835535f656e7472790073384b785f315f616c74 *00733835595f696e666f00733835595f656e74727900733836305f696e666f00733836305f7265 *740073384b7a5f315f616c74007338366e5f696e666f007338366e5f656e74727900733836705f *696e666f00733836705f7265740073384b455f315f616c74007338364a5f696e666f007338364a *5f656e747279007338364c5f696e666f007338364c5f72657400733836515f696e666f00733836 *515f656e7472790073384b4a5f315f616c7400733836575f696e666f00733836575f656e747279 *00733836595f696e666f00733836595f7265740073384b4c5f315f616c74007338376c5f696e66 *6f007338376c5f656e747279007338376e5f696e666f007338376e5f7265740073384b515f315f *616c7400733837485f696e666f00733837485f656e747279007338374a5f696e666f007338374a *5f726574007338374f5f696e666f007338374f5f656e7472790073384b565f315f616c74007338 *37555f696e666f00733837555f656e74727900733837575f696e666f00733837575f7265740073 *384b585f315f616c74007338386a5f696e666f007338386a5f656e747279007338386c5f696e66 *6f007338386c5f7265740073384c325f315f616c7400733838465f696e666f00733838465f656e *74727900733838485f696e666f00733838485f726574007338384d5f696e666f007338384d5f65 *6e7472790073384c375f315f616c7400733838535f696e666f00733838535f656e747279007338 *38555f696e666f00733838555f7265740073384c395f315f616c7400733839685f696e666f0073 *3839685f656e747279007338396a5f696e666f007338396a5f7265740073384c655f315f616c74 *0073384c685f315f616c740073384c685f325f616c740073384c685f7674626c0073384c665f69 *6e666f0073384c665f7265740073384c655f325f616c740073384c655f7674626c0073384c645f *335f616c740073384c645f64666c740073384c645f7674626c00733839555f696e666f00733839 *555f656e74727900733839585f696e666f00733839585f656e74727900733839635f696e666f00 *733839635f656e7472790073384c635f315f616c740073384c635f325f616c740073384c635f76 *74626c0073384c615f696e666f0073384c615f7265740073384c395f325f616c740073384c395f *7674626c0073384c385f335f616c740073384c385f64666c740073384c385f7674626c00733839 *5a5f696e666f007338395a5f656e7472790073384c375f325f616c740073384c375f7674626c00 *73384c365f345f616c740073384c365f64666c740073384c365f7674626c00733861315f696e66 *6f00733861315f656e7472790073384c355f315f616c740073384c355f325f616c740073384c35 *5f7674626c0073384c335f696e666f0073384c335f7265740073384c325f325f616c740073384c *325f7674626c0073384c315f335f616c740073384c315f64666c740073384c315f7674626c0073 *3861335f696e666f00733861335f656e74727900733861355f696e666f00733861355f656e7472 *7900733838655f696e666f00733838655f656e7472790073384c305f315f616c740073384c305f *325f616c740073384c305f7674626c0073384b595f696e666f0073384b595f7265740073384b58 *5f325f616c740073384b585f7674626c0073384b575f335f616c740073384b575f64666c740073 *384b575f7674626c00733861375f696e666f00733861375f656e7472790073384b565f325f616c *740073384b565f7674626c0073384b555f345f616c740073384b555f64666c740073384b555f76 *74626c00733861395f696e666f00733861395f656e7472790073384b545f315f616c740073384b *545f325f616c740073384b545f7674626c0073384b525f696e666f0073384b525f726574007338 *4b515f325f616c740073384b515f7674626c0073384b505f335f616c740073384b505f64666c74 *0073384b505f7674626c00733861625f696e666f00733861625f656e74727900733861645f696e *666f00733861645f656e74727900733837675f696e666f00733837675f656e7472790073384b4f *5f315f616c740073384b4f5f325f616c740073384b4f5f7674626c0073384b4d5f696e666f0073 *384b4d5f7265740073384b4c5f325f616c740073384b4c5f7674626c0073384b4b5f335f616c74 *0073384b4b5f64666c740073384b4b5f7674626c00733861665f696e666f00733861665f656e74 *72790073384b4a5f325f616c740073384b4a5f7674626c0073384b495f345f616c740073384b49 *5f64666c740073384b495f7674626c00733861685f696e666f00733861685f656e747279007338 *4b485f315f616c740073384b485f325f616c740073384b485f7674626c0073384b465f696e666f *0073384b465f7265740073384b455f325f616c740073384b455f7674626c0073384b445f335f61 *6c740073384b445f64666c740073384b445f7674626c007338616a5f696e666f007338616a5f65 *6e747279007338616c5f696e666f007338616c5f656e74727900733836695f696e666f00733836 *695f656e7472790073384b435f315f616c740073384b435f325f616c740073384b435f7674626c *0073384b415f696e666f0073384b415f7265740073384b7a5f325f616c740073384b7a5f767462 *6c0073384b795f335f616c740073384b795f64666c740073384b795f7674626c007338616e5f69 *6e666f007338616e5f656e7472790073384b785f325f616c740073384b785f7674626c0073384b *775f345f616c740073384b775f64666c740073384b775f7674626c00733861705f696e666f0073 *3861705f656e7472790073384b765f315f616c740073384b765f325f616c740073384b765f7674 *626c0073384b745f696e666f0073384b745f7265740073384b735f325f616c740073384b735f76 *74626c0073384b725f335f616c740073384b725f64666c740073384b725f7674626c0073386172 *5f696e666f00733861725f656e74727900733861745f696e666f00733861745f656e7472790073 *38356b5f696e666f007338356b5f656e7472790073384b715f315f616c740073384b715f325f61 *6c740073384b715f7674626c0073384b6f5f696e666f0073384b6f5f7265740073384b6e5f325f *616c740073384b6e5f7674626c0073384b6d5f335f616c740073384b6d5f64666c740073384b6d *5f7674626c00733861765f696e666f00733861765f656e7472790073384b6c5f325f616c740073 *384b6c5f7674626c0073384b6b5f345f616c740073384b6b5f64666c740073384b6b5f7674626c *00733861785f696e666f00733861785f656e7472790073384b6a5f315f616c740073384b6a5f32 *5f616c740073384b6a5f7674626c0073384b685f696e666f0073384b685f7265740073384b675f *325f616c740073384b675f7674626c0073384b665f335f616c740073384b665f64666c74007338 *4b665f7674626c007338617a5f696e666f007338617a5f656e74727900733861425f696e666f00 *733861425f656e747279007338346d5f696e666f007338346d5f656e7472790073384b655f315f *616c740073384b655f325f616c740073384b655f7674626c0073384b635f696e666f0073384b63 *5f7265740073384b625f325f616c740073384b625f7674626c0073384b615f335f616c74007338 *4b615f64666c740073384b615f7674626c00733861445f696e666f00733861445f656e74727900 *73384b395f325f616c740073384b395f7674626c0073384b385f345f616c740073384b385f6466 *6c740073384b385f7674626c00733861465f696e666f00733861465f656e7472790073384b375f *315f616c740073384b375f325f616c740073384b375f7674626c0073384b355f696e666f007338 *4b355f7265740073384b345f325f616c740073384b345f7674626c0073384b335f335f616c7400 *73384b335f64666c740073384b335f7674626c00733861485f696e666f00733861485f656e7472 *79007338614a5f696e666f007338614a5f656e747279007338336f5f696e666f007338336f5f65 *6e7472790073384b325f315f616c740073384b325f325f616c740073384b325f7674626c007338 *4b305f696e666f0073384b305f7265740073384a5a5f325f616c740073384a5a5f7674626c0073 *384a595f335f616c740073384a595f64666c740073384a595f7674626c007338614c5f696e666f *007338614c5f656e7472790073384a585f325f616c740073384a585f7674626c0073384a575f34 *5f616c740073384a575f64666c740073384a575f7674626c007338614e5f696e666f007338614e *5f656e7472790073384a565f315f616c740073384a565f325f616c740073384a565f7674626c00 *73384a545f696e666f0073384a545f7265740073384a535f325f616c740073384a535f7674626c *0073384a525f335f616c740073384a525f64666c740073384a525f7674626c00733861505f696e *666f00733861505f656e74727900733861525f696e666f00733861525f656e7472790073383271 *5f696e666f00733832715f656e7472790073384a515f315f616c740073384a515f325f616c7400 *73384a515f7674626c0073384a4f5f696e666f0073384a4f5f7265740073384a4e5f325f616c74 *0073384a4e5f7674626c0073384a4d5f335f616c740073384a4d5f64666c740073384a4d5f7674 *626c00733861545f696e666f00733861545f656e7472790073384a4c5f325f616c740073384a4c *5f7674626c0073384a4b5f345f616c740073384a4b5f64666c740073384a4b5f7674626c007338 *61565f696e666f00733861565f656e7472790073384a4a5f315f616c740073384a4a5f325f616c *740073384a4a5f7674626c0073384a485f696e666f0073384a485f7265740073384a475f325f61 *6c740073384a475f7674626c0073384a465f335f616c740073384a465f64666c740073384a465f *7674626c00733861585f696e666f00733861585f656e747279007338615a5f696e666f00733861 *5a5f656e74727900733831735f696e666f00733831735f656e7472790073384a455f315f616c74 *0073384a455f325f616c740073384a455f7674626c0073384a435f696e666f0073384a435f7265 *740073384a425f325f616c740073384a425f7674626c0073384a415f335f616c740073384a415f *64666c740073384a415f7674626c00733862315f696e666f00733862315f656e7472790073384a *7a5f325f616c740073384a7a5f7674626c0073384a795f345f616c740073384a795f64666c7400 *73384a795f7674626c00733862335f696e666f00733862335f656e7472790073384a785f315f61 *6c740073384a785f325f616c740073384a785f7674626c0073384a765f696e666f0073384a765f *7265740073384a755f325f616c740073384a755f7674626c0073384a745f335f616c740073384a *745f64666c740073384a745f7674626c00733862355f696e666f00733862355f656e7472790073 *3862375f696e666f00733862375f656e74727900733830755f696e666f00733830755f656e7472 *790073384a735f315f616c740073384a735f325f616c740073384a735f7674626c0073384a715f *696e666f0073384a715f7265740073384a705f325f616c740073384a705f7674626c0073384a6f *5f335f616c740073384a6f5f64666c740073384a6f5f7674626c00733862395f696e666f007338 *62395f656e7472790073384a6e5f325f616c740073384a6e5f7674626c0073384a6d5f345f616c *740073384a6d5f64666c740073384a6d5f7674626c00733862625f696e666f00733862625f656e *7472790073384a6c5f315f616c740073384a6c5f325f616c740073384a6c5f7674626c0073384a *6a5f696e666f0073384a6a5f7265740073384a695f325f616c740073384a695f7674626c007338 *4a685f335f616c740073384a685f64666c740073384a685f7674626c00733862645f696e666f00 *733862645f656e74727900733862665f696e666f00733862665f656e7472790073375a775f696e *666f0073375a775f656e7472790073384a675f315f616c740073384a675f325f616c740073384a *675f7674626c0073384a655f696e666f0073384a655f7265740073384a645f325f616c74007338 *4a645f7674626c0073384a635f335f616c740073384a635f64666c740073384a635f7674626c00 *733862685f696e666f00733862685f656e7472790073384a625f325f616c740073384a625f7674 *626c0073384a615f345f616c740073384a615f64666c740073384a615f7674626c007338626a5f *696e666f007338626a5f656e7472790073384a395f315f616c740073384a395f325f616c740073 *384a395f7674626c0073384a375f696e666f0073384a375f7265740073384a365f325f616c7400 *73384a365f7674626c0073384a355f335f616c740073384a355f64666c740073384a355f767462 *6c007338626c5f696e666f007338626c5f656e747279007338626e5f696e666f007338626e5f65 *6e74727900733759795f696e666f00733759795f656e7472790073384a345f315f616c74007338 *4a345f325f616c740073384a345f7674626c0073384a325f696e666f0073384a325f7265740073 *384a315f325f616c740073384a315f7674626c0073384a305f335f616c740073384a305f64666c *740073384a305f7674626c00733862705f696e666f00733862705f656e747279007338495a5f32 *5f616c74007338495a5f7674626c00733849595f345f616c7400733849595f64666c7400733849 *595f7674626c00733862725f696e666f00733862725f656e74727900733849585f315f616c7400 *733849585f325f616c7400733849585f7674626c00733849565f696e666f00733849565f726574 *00733849555f325f616c7400733849555f7674626c00733849545f335f616c7400733849545f64 *666c7400733849545f7674626c00733862745f696e666f00733862745f656e7472790073386276 *5f696e666f00733862765f656e74727900733758415f696e666f00733758415f656e7472790073 *3849535f315f616c7400733849535f325f616c7400733849535f7674626c00733849515f696e66 *6f00733849515f72657400733849505f325f616c7400733849505f7674626c007338494f5f335f *616c74007338494f5f64666c74007338494f5f7674626c00733862785f696e666f00733862785f *656e747279007338494e5f325f616c74007338494e5f7674626c007338494d5f345f616c740073 *38494d5f64666c74007338494d5f7674626c007338627a5f696e666f007338627a5f656e747279 *007338494c5f315f616c74007338494c5f325f616c74007338494c5f7674626c007338494a5f69 *6e666f007338494a5f72657400733849495f325f616c7400733849495f7674626c00733849485f *335f616c7400733849485f64666c7400733849485f7674626c00733862425f696e666f00733862 *425f656e74727900733862445f696e666f00733862445f656e74727900733757435f696e666f00 *733757435f656e74727900733849475f315f616c7400733849475f325f616c7400733849475f76 *74626c00733849455f696e666f00733849455f72657400733849445f325f616c7400733849445f *7674626c00733849435f335f616c7400733849435f64666c7400733849435f7674626c00733862 *465f696e666f00733862465f656e74727900733849425f325f616c7400733849425f7674626c00 *733849415f345f616c7400733849415f64666c7400733849415f7674626c00733862485f696e66 *6f00733862485f656e747279007338497a5f315f616c74007338497a5f325f616c74007338497a *5f7674626c00733849785f696e666f00733849785f72657400733849775f325f616c7400733849 *775f7674626c00733849765f335f616c7400733849765f64666c7400733849765f7674626c0073 *38624a5f696e666f007338624a5f656e747279007338624c5f696e666f007338624c5f656e7472 *7900733756455f696e666f00733756455f656e74727900733849755f315f616c7400733849755f *325f616c7400733849755f7674626c00733849735f696e666f00733849735f7265740073384972 *5f325f616c7400733849725f7674626c00733849715f335f616c7400733849715f64666c740073 *3849715f7674626c007338624e5f696e666f007338624e5f656e74727900733849705f325f616c *7400733849705f7674626c007338496f5f345f616c74007338496f5f64666c74007338496f5f76 *74626c00733862505f696e666f00733862505f656e747279007338496e5f315f616c7400733849 *6e5f325f616c74007338496e5f7674626c007338496c5f696e666f007338496c5f726574007338 *496b5f325f616c74007338496b5f7674626c007338496a5f335f616c74007338496a5f64666c74 *007338496a5f7674626c00733862525f696e666f00733862525f656e74727900733862545f696e *666f00733862545f656e74727900733755475f696e666f00733755475f656e7472790073384969 *5f315f616c7400733849695f325f616c7400733849695f7674626c00733849675f696e666f0073 *3849675f72657400733849665f325f616c7400733849665f7674626c00733849655f335f616c74 *00733849655f64666c7400733849655f7674626c00733862565f696e666f00733862565f656e74 *727900733849645f325f616c7400733849645f7674626c00733849635f345f616c740073384963 *5f64666c7400733849635f7674626c00733862585f696e666f00733862585f656e747279007338 *49625f315f616c7400733849625f325f616c7400733849625f7674626c00733849395f696e666f *00733849395f72657400733849385f325f616c7400733849385f7674626c00733849375f335f61 *6c7400733849375f64666c7400733849375f7674626c007338625a5f696e666f007338625a5f65 *6e74727900733849365f325f616c7400733849365f7674626c00733849355f345f616c74007338 *49355f64666c7400733849355f7674626c00733863315f696e666f00733863315f656e74727900 *733849335f696e666f00733849335f72657400733863335f696e666f00733863335f656e747279 *00733863355f656e7472790072366f545f7372740072366f545f636c6f737572650072366f545f *696e666f0072366f545f656e7472790072366f575f7372740072366f595f73727400723670305f *7372740072366f575f636c6f737572650072366f595f636c6f7375726500723670305f636c6f73 *7572650072366f575f696e666f0072366f575f656e7472790072366f595f696e666f0072366f59 *5f656e74727900723670305f696e666f00723670305f656e74727900723670335f737274007236 *70335f636c6f7375726500723670335f696e666f00723670335f656e74727900723670355f7372 *7400723670355f636c6f7375726500723670355f696e666f00723670355f656e74727900723670 *375f73727400723670375f636c6f7375726500723670375f696e666f00733868775f696e666f00 *733868775f656e74727900733848395f696e666f00733848395f72657400733868715f696e666f *00733868715f656e74727900733868795f696e666f00733868795f656e74727900733868655f69 *6e666f00733868655f656e74727900733868675f696e666f00733868675f656e74727900733868 *415f696e666f00733868415f656e74727900733868615f696e666f00733868615f656e74727900 *733868635f696e666f00733868635f656e74727900733868435f696e666f00733868435f656e74 *727900733848635f696e666f00733848635f72657400733868385f696e666f00733868385f656e *74727900733868455f696e666f00733868455f656e74727900733867575f696e666f0073386757 *5f656e74727900733867595f696e666f00733867595f656e74727900733868475f696e666f0073 *3868475f656e74727900733867535f696e666f00733867535f656e74727900733867555f696e66 *6f00733867555f656e74727900733868495f696e666f00733868495f656e74727900733848665f *696e666f00733848665f72657400733867515f696e666f00733867515f656e747279007338684b *5f696e666f007338684b5f656e74727900733867455f696e666f00733867455f656e7472790073 *3867475f696e666f00733867475f656e747279007338684d5f696e666f007338684d5f656e7472 *7900733867415f696e666f00733867415f656e74727900733867435f696e666f00733867435f65 *6e747279007338684f5f696e666f007338684f5f656e74727900733848695f696e666f00733848 *695f72657400733867795f696e666f00733867795f656e74727900733868515f696e666f007338 *68515f656e747279007338676d5f696e666f007338676d5f656e747279007338676f5f696e666f *007338676f5f656e74727900733868535f696e666f00733868535f656e74727900733867695f69 *6e666f00733867695f656e747279007338676b5f696e666f007338676b5f656e74727900733868 *555f696e666f00733868555f656e747279007338486c5f696e666f007338486c5f726574007338 *67675f696e666f00733867675f656e74727900733868575f696e666f00733868575f656e747279 *00733867345f696e666f00733867345f656e74727900733867365f696e666f00733867365f656e *74727900733868595f696e666f00733868595f656e74727900733867305f696e666f0073386730 *5f656e74727900733867325f696e666f00733867325f656e74727900733869305f696e666f0073 *3869305f656e747279007338486f5f696e666f007338486f5f72657400733866595f696e666f00 *733866595f656e74727900733869325f696e666f00733869325f656e747279007338664d5f696e *666f007338664d5f656e747279007338664f5f696e666f007338664f5f656e7472790073386934 *5f696e666f00733869345f656e74727900733866495f696e666f00733866495f656e7472790073 *38664b5f696e666f007338664b5f656e74727900733869365f696e666f00733869365f656e7472 *7900733848725f696e666f00733848725f72657400733866475f696e666f00733866475f656e74 *727900733869385f696e666f00733869385f656e74727900733866755f696e666f00733866755f *656e74727900733866775f696e666f00733866775f656e74727900733869615f696e666f007338 *69615f656e74727900733866715f696e666f00733866715f656e74727900733866735f696e666f *00733866735f656e74727900733869635f696e666f00733869635f656e74727900733848755f69 *6e666f00733848755f726574007338666f5f696e666f007338666f5f656e74727900733869655f *696e666f00733869655f656e74727900733866635f696e666f00733866635f656e747279007338 *66655f696e666f00733866655f656e74727900733869675f696e666f00733869675f656e747279 *00733866385f696e666f00733866385f656e74727900733866615f696e666f00733866615f656e *74727900733869695f696e666f00733869695f656e74727900733848785f696e666f0073384878 *5f72657400733866365f696e666f00733866365f656e747279007338696b5f696e666f00733869 *6b5f656e74727900733865555f696e666f00733865555f656e74727900733865575f696e666f00 *733865575f656e747279007338696d5f696e666f007338696d5f656e74727900733865515f696e *666f00733865515f656e74727900733865535f696e666f00733865535f656e747279007338696f *5f696e666f007338696f5f656e74727900733848415f696e666f00733848415f72657400733865 *4f5f696e666f007338654f5f656e74727900733869715f696e666f00733869715f656e74727900 *733865435f696e666f00733865435f656e74727900733865455f696e666f00733865455f656e74 *727900733869735f696e666f00733869735f656e74727900733865795f696e666f00733865795f *656e74727900733865415f696e666f00733865415f656e74727900733869755f696e666f007338 *69755f656e74727900733848445f696e666f00733848445f72657400733865775f696e666f0073 *3865775f656e74727900733869775f696e666f00733869775f656e747279007338656b5f696e66 *6f007338656b5f656e747279007338656d5f696e666f007338656d5f656e74727900733869795f *696e666f00733869795f656e74727900733865675f696e666f00733865675f656e747279007338 *65695f696e666f00733865695f656e74727900733869415f696e666f00733869415f656e747279 *00733848475f696e666f00733848475f72657400733865655f696e666f00733865655f656e7472 *7900733869435f696e666f00733869435f656e74727900733865325f696e666f00733865325f65 *6e74727900733865345f696e666f00733865345f656e74727900733869455f696e666f00733869 *455f656e74727900733864595f696e666f00733864595f656e74727900733865305f696e666f00 *733865305f656e74727900733869475f696e666f00733869475f656e747279007338484a5f696e *666f007338484a5f72657400733864575f696e666f00733864575f656e74727900733869495f69 *6e666f00733869495f656e747279007338644b5f696e666f007338644b5f656e74727900733864 *4d5f696e666f007338644d5f656e747279007338694b5f696e666f007338694b5f656e74727900 *733864475f696e666f00733864475f656e74727900733864495f696e666f00733864495f656e74 *7279007338694d5f696e666f007338694d5f656e747279007338484d5f696e666f007338484d5f *72657400733864455f696e666f00733864455f656e747279007338694f5f696e666f007338694f *5f656e74727900733864735f696e666f00733864735f656e74727900733864755f696e666f0073 *3864755f656e74727900733869515f696e666f00733869515f656e747279007338646f5f696e66 *6f007338646f5f656e74727900733864715f696e666f00733864715f656e74727900733869535f *696e666f00733869535f656e74727900733848505f696e666f00733848505f726574007338646d *5f696e666f007338646d5f656e74727900733869555f696e666f00733869555f656e7472790073 *3864615f696e666f00733864615f656e74727900733864635f696e666f00733864635f656e7472 *7900733869575f696e666f00733869575f656e74727900733864365f696e666f00733864365f65 *6e74727900733864385f696e666f00733864385f656e74727900733869595f696e666f00733869 *595f656e74727900733848535f696e666f00733848535f72657400733864345f696e666f007338 *64345f656e7472790073386a305f696e666f0073386a305f656e74727900733863535f696e666f *00733863535f656e74727900733863555f696e666f00733863555f656e7472790073386a325f69 *6e666f0073386a325f656e747279007338634f5f696e666f007338634f5f656e74727900733863 *515f696e666f00733863515f656e7472790073386a345f696e666f0073386a345f656e74727900 *733848565f696e666f00733848565f726574007338634d5f696e666f007338634d5f656e747279 *00733848385f696e666f00733848385f72657400723670375f656e7472790073386a375f636c6f *737572650073386a395f7372740073386a395f636c6f737572650073386a395f696e666f007338 *6a395f656e74727900723670395f73727400723670395f636c6f7375726500723670395f696e66 *6f00723670395f656e74727900723670635f73727400723670635f636c6f737572650072367063 *5f696e666f00723670635f656e74727900733848355f696e666f00733848355f72657400733848 *325f696e666f00733848325f726574007338475a5f696e666f007338475a5f726574007338474d *5f696e666f007338474d5f726574007338477a5f696e666f007338477a5f726574007338476d5f *696e666f007338476d5f72657400733847395f696e666f00733847395f72657400733846575f69 *6e666f00733846575f726574007338464a5f696e666f007338464a5f72657400733846775f696e *666f00733846775f726574007338466a5f696e666f007338466a5f72657400733846365f696e66 *6f00733846365f72657400733845545f696e666f00733845545f72657400733845475f696e666f *00733845475f72657400733845745f696e666f00733845745f72657400733845675f696e666f00 *733845675f72657400733845655f696e666f00733845655f72657400733845635f696e666f0073 *3845635f72657400733844575f696e666f00733844575f72657400733844475f696e666f007338 *44475f72657400733844715f696e666f00733844715f72657400733844615f696e666f00733844 *615f72657400733843555f696e666f00733843555f72657400733843455f696e666f0073384345 *5f726574007338436f5f696e666f007338436f5f72657400733843385f696e666f00733843385f *72657400733842535f696e666f00733842535f72657400733842435f696e666f00733842435f72 *6574007338426d5f696e666f007338426d5f72657400733842365f696e666f00733842365f7265 *7400733841515f696e666f00733841515f72657400733841415f696e666f00733841415f726574 *007338416b5f696e666f007338416b5f72657400733841345f696e666f00733841345f72657400 *733841335f696e666f00733841335f72657400733841325f696e666f00733841325f7265740073 *3841315f696e666f00733841315f72657400733841305f696e666f00733841305f726574007338 *7a5a5f696e666f0073387a5a5f7265740073387a595f696e666f0073387a595f7265740073387a *585f696e666f0073387a585f7265740073387a575f696e666f0073387a575f7265740073387a56 *5f696e666f0073387a565f7265740073387a555f696e666f0073387a555f7265740073387a545f *696e666f0073387a545f7265740073387a535f696e666f0073387a535f7265740073387a525f69 *6e666f0073387a525f7265740073387a515f696e666f0073387a515f7265740073387a505f696e *666f0073387a505f7265740073387a4f5f696e666f0073387a4f5f7265740073387a4e5f696e66 *6f0073387a4e5f7265740073387a4d5f696e666f0073387a4d5f7265740073387a4c5f696e666f *0073387a4c5f7265740073387a4b5f696e666f0073387a4b5f7265740073387a4a5f696e666f00 *73387a4a5f7265740073387a495f696e666f0073387a495f7265740073387a485f696e666f0073 *387a485f7265740073387a475f696e666f0073387a475f7265740073387a465f696e666f007338 *7a465f7265740073387a455f696e666f0073387a455f7265740073387a445f696e666f0073387a *445f7265740073387a435f696e666f0073387a435f7265740073387a425f696e666f0073387a42 *5f7265740073387a415f696e666f0073387a415f7265740073387a7a5f696e666f0073387a7a5f *7265740073387a795f696e666f0073387a795f7265740073387a785f696e666f0073387a785f72 *65740073387a775f696e666f0073387a775f7265740073686a4b5f696e666f0073686a4b5f656e *7472790073686a4d5f696e666f0073686a4d5f656e747279007368734f5f696e666f007368734f *5f7265740073686a505f696e666f0073686a505f656e7472790073686a765f696e666f0073686a *765f656e7472790073686a725f696e666f0073686a725f656e7472790073686a785f696e666f00 *73686a785f656e747279007368734b5f696e666f007368734b5f72657400726869485f73727400 *726869485f636c6f7375726500726869485f696e666f00736873475f696e666f00736873475f72 *657400726869485f656e747279007268694a5f737274007268694a5f636c6f7375726500726869 *4a5f696e666f007268694a5f656e747279007268694c5f737274007268694c5f636c6f73757265 *007268694c5f696e666f00736873435f696e666f00736873435f726574007268694c5f656e7472 *79007268694e5f737274007268694e5f636c6f73757265007268694e5f696e666f007268694e5f *656e74727900726869505f73727400726869505f636c6f7375726500726869505f696e666f0072 *6869505f656e74727900736873715f696e666f00736873715f7265740073686b555f696e666f00 *73686b555f656e74727900736873755f696e666f00736873755f7265740073686b465f696e666f *0073686b465f656e7472790073686b735f696e666f0073686b735f656e74727900736873795f69 *6e666f00736873795f7265740073686b765f696e666f0073686b765f656e7472790073686b485f *696e666f0073686b485f656e747279007368736d5f696e666f007368736d5f7265740073686b58 *5f696e666f0073686b585f656e74727900736873695f696e666f00736873695f72657400726869 *525f73727400726869525f636c6f7375726500726869525f696e666f00726869525f656e747279 *00726869545f73727400726869545f636c6f7375726500726869545f696e666f00736873655f69 *6e666f00736873655f7265740073686c715f696e666f0073686c715f656e74727900736873675f *696e666f00736873675f7265740073686c695f696e666f0073686c695f656e7472790073687364 *5f696e666f00736873645f72657400736873635f696e666f00736873635f72657400726869545f *656e74727900726869565f73727400726869565f636c6f7375726500726869565f696e666f0073 *686c785f696e666f0073686c785f656e74727900726869565f656e747279007268695a5f737274 *007268695a5f636c6f73757265007268695a5f696e666f0073686d415f696e666f0073686d415f *656e74727900736872595f696e666f00736872595f7265740073686d755f696e666f0073686d75 *5f656e7472790073686d435f696e666f0073686d435f656e7472790073686d695f696e666f0073 *686d695f656e7472790073686d6b5f696e666f0073686d6b5f656e7472790073686d455f696e66 *6f0073686d455f656e7472790073686d655f696e666f0073686d655f656e7472790073686d675f *696e666f0073686d675f656e7472790073686d475f696e666f0073686d475f656e747279007368 *73315f696e666f00736873315f7265740073686d635f696e666f0073686d635f656e7472790073 *686d495f696e666f0073686d495f656e7472790073686d305f696e666f0073686d305f656e7472 *790073686d325f696e666f0073686d325f656e7472790073686d4b5f696e666f0073686d4b5f65 *6e7472790073686c575f696e666f0073686c575f656e7472790073686c595f696e666f0073686c *595f656e7472790073686d4d5f696e666f0073686d4d5f656e74727900736873345f696e666f00 *736873345f7265740073686c555f696e666f0073686c555f656e74727900736872585f696e666f *00736872585f726574007268695a5f656e7472790073686d505f636c6f737572650073686d525f *7372740073686d525f636c6f737572650073686d525f696e666f0073686d525f656e7472790072 *686a315f7372740072686a315f636c6f737572650072686a315f696e666f0072686a315f656e74 *7279007368705a5f737274007368705a5f636c6f73757265007368705a5f696e666f0073686e33 *5f696e666f0073686e335f656e7472790073686e365f696e666f0073686e365f7265740073686e *625f696e666f0073686e625f656e747279007368726a5f315f616c740073686e685f696e666f00 *73686e685f656e7472790073686e6a5f696e666f0073686e6a5f726574007368726c5f315f616c *740073686e445f696e666f0073686e445f656e7472790073686e465f696e666f0073686e465f72 *65740073686e4b5f696e666f0073686e4b5f656e74727900736872715f315f616c740073686e51 *5f696e666f0073686e515f656e7472790073686e535f696e666f0073686e535f72657400736872 *735f315f616c740073686f665f696e666f0073686f665f656e7472790073686f685f696e666f00 *73686f685f72657400736872785f315f616c740073686f425f696e666f0073686f425f656e7472 *790073686f445f696e666f0073686f445f7265740073686f495f696e666f0073686f495f656e74 *727900736872435f315f616c740073686f4f5f696e666f0073686f4f5f656e7472790073686f51 *5f696e666f0073686f515f72657400736872455f315f616c7400736870645f696e666f00736870 *645f656e74727900736870665f696e666f00736870665f726574007368724a5f315f616c740073 *68724d5f315f616c74007368724d5f325f616c74007368724d5f7674626c007368724b5f696e66 *6f007368724b5f726574007368724a5f325f616c74007368724a5f7674626c00736872495f335f *616c7400736872495f64666c7400736872495f7674626c00736870435f696e666f00736870435f *656e74727900736870465f696e666f00736870465f656e74727900736870385f696e666f007368 *70385f656e74727900736872485f315f616c7400736872485f325f616c7400736872485f767462 *6c00736872465f696e666f00736872465f72657400736872455f325f616c7400736872455f7674 *626c00736872445f335f616c7400736872445f64666c7400736872445f7674626c00736870485f *696e666f00736870485f656e74727900736872435f325f616c7400736872435f7674626c007368 *72425f345f616c7400736872425f64666c7400736872425f7674626c007368704a5f696e666f00 *7368704a5f656e74727900736872415f315f616c7400736872415f325f616c7400736872415f76 *74626c00736872795f696e666f00736872795f72657400736872785f325f616c7400736872785f *7674626c00736872775f335f616c7400736872775f64666c7400736872775f7674626c00736870 *4c5f696e666f007368704c5f656e747279007368704e5f696e666f007368704e5f656e74727900 *73686f615f696e666f0073686f615f656e74727900736872765f315f616c7400736872765f325f *616c7400736872765f7674626c00736872745f696e666f00736872745f72657400736872735f32 *5f616c7400736872735f7674626c00736872725f335f616c7400736872725f64666c7400736872 *725f7674626c00736870505f696e666f00736870505f656e74727900736872715f325f616c7400 *736872715f7674626c00736872705f345f616c7400736872705f64666c7400736872705f767462 *6c00736870525f696e666f00736870525f656e747279007368726f5f315f616c74007368726f5f *325f616c74007368726f5f7674626c007368726d5f696e666f007368726d5f726574007368726c *5f325f616c74007368726c5f7674626c007368726b5f335f616c74007368726b5f64666c740073 *68726b5f7674626c00736870545f696e666f00736870545f656e747279007368726a5f325f616c *74007368726a5f7674626c00736872695f345f616c7400736872695f64666c7400736872695f76 *74626c00736870565f696e666f00736870565f656e74727900736872675f696e666f0073687267 *5f72657400736870585f696e666f00736870585f656e747279007368705a5f656e747279007268 *6a335f7372740072686a335f636c6f737572650072686a335f696e666f0072686a335f656e7472 *7900736872645f315f616c74007368716a5f696e666f007368716a5f656e74727900736872645f *325f616c7400736872645f7674626c00736871685f696e666f00736871685f7265740073687262 *5f696e666f00736872625f7265740072686a375f7372740072686a355f636c6f73757265007268 *6a375f636c6f737572650072686a375f696e666f0072686a375f656e7472790072686a645f7372 *740072686a625f636c6f737572650072686a665f7372740072686a685f7372740072686a645f63 *6c6f737572650072686a665f636c6f737572650072686a685f636c6f737572650072686a645f69 *6e666f0072686a645f656e7472790072686a665f696e666f0072686a665f656e7472790072686a *685f696e666f0072686a685f656e74727900736872395f696e666f00736872395f726574007368 *72375f696e666f00736872375f72657400736872365f696e666f00736872365f72657400736872 *355f696e666f00736872355f72657400733561565f696e666f00733561565f656e747279007335 *47615f696e666f00733547615f72657400733562315f696e666f00733562315f656e7472790073 *3562375f696e666f00733562375f656e74727900723357415f636c6f7375726500723357415f69 *6e666f00733547385f315f616c7400733547385f325f616c74007335627a5f656e747279007335 *47385f7674626c00733547375f315f616c7400733547375f325f616c7400733547375f335f616c *7400733547375f345f616c7400733547375f355f616c7400733547375f7674626c007335627a5f *696e666f00723357415f656e74727900733547325f315f616c7400733547345f315f616c740073 *3563615f656e74727900733547345f325f616c7400733547345f7674626c00733563665f696e66 *6f00733563665f656e747279007335636f5f696e666f007335636f5f656e74727900733547335f *72657400733547325f325f616c7400733547325f7674626c00733563615f696e666f0073356377 *5f315f616c7400733563775f325f616c7400733563775f7674626c00733563795f696e666f0073 *3563795f656e74727900723561705f73727400723561705f636c6f7375726500723561705f696e *666f00733547785f696e666f00733547785f72657400723561705f656e74727900733563525f69 *6e666f00733563525f656e74727900733563585f696e666f00733563585f656e74727900733565 *395f696e666f00733565395f656e74727900733564515f656e74727900733547675f315f616c74 *00733565315f696e666f00733565315f656e74727900733547675f325f616c7400733547675f33 *5f616c7400733547685f696e666f00733547685f72657400733547675f345f616c74007335476b *5f315f616c74007335476d5f315f616c74007335646d5f656e747279007335476d5f325f616c74 *007335476d5f7674626c00733564725f696e666f00733564725f656e74727900733564415f696e *666f00733564415f656e747279007335476c5f726574007335476b5f325f616c74007335476b5f *7674626c007335646d5f696e666f00733564465f315f616c7400733564465f325f616c74007335 *64465f7674626c00733547675f355f616c7400733547675f7674626c00733564515f696e666f00 *733565715f345f616c7400733565765f335f616c7400733565745f335f616c7400733566395f69 *6e666f00733566395f656e74727900733566635f696e666f00733566635f656e74727900733566 *655f696e666f00733566655f656e74727900733565785f355f616c7400733565555f696e666f00 *733565555f656e74727900733565485f656e74727900733565535f315f616c7400733566345f69 *6e666f00733566345f656e74727900733565535f325f616c7400733565535f7674626c00733565 *435f325f616c7400733547715f315f616c74007335654a5f696e666f007335654a5f656e747279 *00733547715f325f616c7400733547715f7674626c00733565435f64666c7400733565435f7674 *626c00733565785f64666c7400733565785f7674626c00733566675f696e666f00733566675f72 *657400733566555f696e666f00733566555f656e74727900733566585f696e666f00733566585f *656e747279007335665a5f696e666f007335665a5f656e74727900733547745f355f616c740073 *3547745f64666c7400733547745f7674626c00733547735f325f616c7400733566715f696e666f *00733566715f656e74727900733566735f696e666f00733566735f656e74727900733566755f69 *6e666f00733566755f656e747279007335666e5f315f616c7400733566475f696e666f00733566 *475f656e74727900733566495f696e666f00733566495f656e747279007335666e5f325f616c74 *00733566795f696e666f00733566795f656e747279007335666e5f355f616c74007335666e5f76 *74626c00733547735f355f616c7400733547735f64666c7400733547735f7674626c0073356574 *5f64666c7400733565745f7674626c00733565765f64666c7400733565765f7674626c00733565 *715f64666c7400733565715f7674626c00733567375f696e666f00733567375f72657400733547 *775f315f616c7400733547775f64666c7400733547775f7674626c00733547765f315f616c7400 *733547765f345f616c7400733547765f64666c7400733547765f7674626c00733565485f696e66 *6f00733546585f696e666f00733546585f72657400733546555f696e666f00733546555f726574 *007335464d5f315f616c7400733568615f315f616c7400733546525f72657400733546515f696e *666f00733546515f656e74727900733568615f325f616c7400733568615f7674626c007335464d *5f325f616c74007335464d5f7674626c00733568625f696e666f00733568625f656e7472790073 *3569385f696e666f00733569385f656e74727900733569665f696e666f00733569665f656e7472 *7900733546475f315f616c7400733569315f696e666f00733569315f656e74727900733546475f *325f616c7400733546475f335f616c74007335684c5f696e666f007335684c5f656e7472790073 *35684f5f696e666f007335684f5f656e74727900733546485f696e666f00733546485f72657400 *733546475f345f616c7400733568435f64666c7400733568435f7674626c00733546475f355f61 *6c7400733546475f7674626c00733569685f696e666f00733569685f656e74727900733569775f *696e666f00733569775f656e74727900733569445f696e666f00733569445f726574007335697a *5f696e666f007335697a5f656e74727900733569505f696e666f00733569505f656e7472790073 *356a345f696e666f0073356a345f656e7472790073356a655f696e666f0073356a655f656e7472 *790073356a685f696e666f0073356a685f656e7472790073356a6c5f696e666f0073356a6c5f65 *6e74727900723561765f73727400723561765f636c6f7375726500723561765f696e666f007335 *6a725f696e666f0073356a725f656e74727900733546715f696e666f00733546715f7265740073 *356a455f696e666f0073356a455f656e74727900733546755f696e666f00733546755f72657400 *73356a565f696e666f0073356a565f656e7472790073356a475f696e666f0073356a475f656e74 *727900733546785f7265740073356b365f696e666f0073356b365f656e74727900733546435f69 *6e666f00733546435f72657400733546425f696e666f00733546425f656e7472790073356b6f5f *696e666f0073356b6f5f656e74727900723561765f656e74727900733547655f696e666f007335 *47655f72657400733547635f696e666f00733547635f72657400733545715f7265740073356b49 *5f696e666f0073356b495f656e7472790073356e775f696e666f0073356e775f7265740073356c *305f696e666f0073356c305f656e7472790073356e465f696e666f0073356e465f726574007335 *6c525f696e666f0073356c525f656e7472790073356c505f656e74727900733545475f696e666f *00733545475f72657400733545465f315f616c74007335454b5f696e666f007335454b5f726574 *00733545465f325f616c7400733545465f7674626c00733545775f72657400733545765f696e66 *6f00733545765f7265740073356c505f696e666f007335454f5f696e666f007335454f5f726574 *0073356d385f696e666f0073356d385f656e74727900733545585f315f616c7400733545595f69 *6e666f00733545595f7265740073356e695f696e666f0073356e695f656e74727900733545585f *325f616c740073356d575f656e74727900733545585f7674626c0073356d4c5f315f616c740073 *356d4c5f325f616c740073356d4c5f335f616c7400733546625f7265740073356d505f696e666f *0073356d505f656e74727900733546385f696e666f00733546385f7265740073356d4c5f345f61 *6c7400733546695f696e666f00733546695f7265740073356d4c5f355f616c740073356d4c5f76 *74626c0073356d575f696e666f007335466d5f696e666f007335466d5f726574007335456c5f31 *5f616c74007335456d5f726574007335456c5f325f616c74007335456c5f7674626c0073356f37 *5f696e666f0073356f375f656e74727900733545685f696e666f00733545685f72657400733545 *635f315f616c7400733545645f696e666f00733545645f72657400733545635f325f616c740073 *3545635f7674626c00733545615f696e666f00733545615f7265740073356f785f696e666f0073 *356f785f656e74727900733545365f72657400733544515f72657400733544505f315f616c7400 *733544555f315f616c7400733544585f315f616c7400733544595f696e666f00733544595f7265 *7400733544585f325f616c7400733544585f7674626c00733544565f696e666f00733544565f72 *657400733544555f325f616c7400733544555f7674626c00733544505f325f616c740073354450 *5f7674626c00733570335f696e666f00733570335f656e747279007335706d5f696e666f007335 *706d5f656e74727900733545325f696e666f00733545325f72657400733544485f696e666f0073 *3544485f72657400733544705f315f616c7400733544725f696e666f00733544725f7265740073 *3544715f315f616c7400733544445f696e666f00733544445f72657400733571365f696e666f00 *733571365f656e747279007335447a5f696e666f007335447a5f72657400733571395f696e666f *00733571395f656e74727900733544765f696e666f00733544765f72657400733544715f325f61 *6c7400733544715f7674626c00733544705f325f616c7400733544705f7674626c00733570535f *696e666f00733570535f656e74727900733571695f696e666f00733571695f656e747279007335 *71725f696e666f00733571725f656e747279007335444c5f696e666f007335444c5f7265740073 *3544675f315f616c74007335446c5f696e666f007335446c5f72657400733571575f696e666f00 *733571575f656e747279007335714b5f696e666f007335714b5f656e74727900733544685f696e *666f00733544685f72657400733544675f325f616c7400733544675f7674626c007335715a5f69 *6e666f007335715a5f656e74727900733544635f696e666f00733544635f72657400733544345f *696e666f00733544345f72657400733543555f315f616c7400733543575f696e666f0073354357 *5f72657400733543565f315f616c7400733544305f696e666f00733544305f7265740073354356 *5f325f616c7400733543565f7674626c00733543555f325f616c7400733543555f7674626c0073 *35726f5f696e666f007335726f5f656e747279007335727a5f696e666f007335727a5f656e7472 *7900733572495f696e666f00733572495f656e74727900733544385f696e666f00733544385f72 *6574007335434d5f696e666f007335434d5f72657400733572575f696e666f00733572575f656e *74727900733543515f696e666f00733543515f72657400733543545f696e666f00733543545f65 *6e74727900733543415f696e666f00733543415f72657400733573715f696e666f00733573715f *656e74727900733543775f696e666f00733543775f72657400733573745f696e666f0073357374 *5f656e74727900733543455f696e666f00733543455f72657400733573435f696e666f00733573 *435f656e74727900733543495f696e666f00733543495f726574007335434c5f696e666f007335 *434c5f656e74727900733543715f696e666f00733543715f72657400733574615f696e666f0073 *3574615f656e74727900733543755f696e666f00733543755f72657400733574325f696e666f00 *733574325f656e747279007335436d5f696e666f007335436d5f726574007335746c5f696e666f *007335746c5f656e74727900733543695f696e666f00733543695f72657400733574715f696e66 *6f00733574715f656e747279007335744c5f696e666f007335744c5f72657400733574465f696e *666f00733574465f656e747279007335744a5f696e666f007335744a5f72657400733574495f69 *6e666f00733574495f656e74727900733574585f696e666f00733574585f656e74727900733543 *395f72657400733575365f696e666f00733575365f656e74727900733543645f72657400733543 *675f696e666f00733543675f656e74727900733543355f726574007335754b5f696e666f007335 *754b5f656e74727900733543315f726574007335754e5f696e666f007335754e5f656e74727900 *733542585f696e666f00733542585f72657400733575515f696e666f00733575515f656e747279 *00733542565f696e666f00733542565f72657400733542525f696e666f00733542525f72657400 *7335766a5f696e666f007335766a5f656e747279007335424e5f696e666f007335424e5f726574 *007335424a5f696e666f007335424a5f72657400733576705f696e666f00733576705f656e7472 *7900733542485f696e666f00733542485f72657400733542775f696e666f00733542775f726574 *00733577345f696e666f00733577345f656e74727900733542735f72657400733577375f696e66 *6f00733577375f656e747279007335426f5f696e666f007335426f5f72657400733542415f696e *666f00733542415f726574007335776a5f696e666f007335776a5f656e74727900733542455f69 *6e666f00733542455f72657400733577775f696e666f00733577775f656e74727900733577795f *696e666f00733577795f656e747279007335426b5f696e666f007335426b5f7265740073357749 *5f696e666f00733577495f656e74727900733542635f696e666f00733542635f72657400733577 *535f696e666f00733577535f656e74727900733542675f696e666f00733542675f726574007335 *426a5f696e666f007335426a5f656e74727900733578785f696e666f00733578785f656e747279 *00733578765f656e74727900733541575f696e666f00733541575f72657400733578415f696e66 *6f00733578415f656e74727900733541535f696e666f00733541535f72657400733578445f696e *666f00733578445f656e74727900733542305f696e666f00733542305f726574007335784d5f69 *6e666f007335784d5f656e74727900733542345f696e666f00733542345f72657400733542375f *696e666f00733542375f656e74727900733578765f696e666f00733542385f7265740073357964 *5f696e666f00733579645f656e747279007335414b5f696e666f007335414b5f72657400733579 *6e5f696e666f007335796e5f656e747279007335414f5f696e666f007335414f5f726574007335 *41525f696e666f00733541525f656e7472790073357a325f696e666f0073357a325f656e747279 *00733541455f696e666f00733541455f72657400733579565f696e666f00733579565f656e7472 *7900733541435f696e666f00733541435f72657400733579595f696e666f00733579595f656e74 *72790073357a305f696e666f0073357a305f656e74727900733541425f656e7472790073354141 *5f315f616c7400733541415f325f616c7400733541415f7674626c00733541765f315f616c7400 *733541775f315f616c7400733541795f696e666f00733541795f72657400733541785f315f616c *7400733541785f325f616c7400733541785f7674626c00733541775f325f616c7400733541775f *7674626c00733541765f325f616c7400733541765f7674626c00733541755f315f616c74007335 *41755f325f616c7400733541755f335f616c7400733541755f345f616c7400733541755f355f61 *6c7400733541755f7674626c0072336a495f636c6f737572650072336a4b5f636c6f7375726500 *72336a4d5f7372740072336a4d5f636c6f737572650072336a4d5f696e666f0072336a4d5f656e *7472790072336a4f5f7372740072336a4f5f636c6f737572650072336a4f5f696e666f0072336a *4f5f656e7472790072336a515f7372740072336a515f636c6f737572650072336a515f696e666f *0072336a515f656e7472790072336a535f7372740072336a535f636c6f737572650072336a535f *696e666f0072336a535f656e7472790072336a555f7372740072336a555f636c6f737572650072 *336a555f696e666f0072336a555f656e747279007333706f5f696e666f007333706f5f72657400 *7333706e5f315f616c740073336b665f696e666f0073336b665f656e7472790073336b685f696e *666f0073336b685f656e74727900733370765f315f616c740073336b775f656e74727900733370 *765f325f616c7400733370765f7674626c0073336b795f696e666f0073336b795f656e74727900 *73336b6f5f696e666f0073336b6f5f656e74727900733370735f696e666f00733370735f726574 *007333706e5f325f616c74007333706e5f7674626c0073336b775f696e666f0073336b535f696e *666f0073336b535f656e7472790073336b555f696e666f0073336b555f656e7472790073336b4d *5f696e666f0073336b4d5f656e7472790073336b4f5f696e666f0073336b4f5f656e7472790073 *3370775f696e666f00733370775f7265740073336c485f737274640073336c785f737274640073 *3370335f737274640073336c455f737274640073336c775f696e666f0073336c775f656e747279 *0073336c435f696e666f0073336c435f656e7472790073336c745f7372746400733370365f696e *666f00733370365f7265740073336c725f696e666f0073336c725f656e7472790073336c745f69 *6e666f0073336c745f656e7472790073336c455f696e666f0073336c455f656e7472790073336c *645f696e666f0073336c645f656e74727900733370335f696e666f00733370335f726574007333 *6c785f696e666f0073336c785f656e7472790073336c485f696e666f0073336c485f656e747279 *00733370655f7372746400733370675f737274640073336d505f696e666f0073336d505f656e74 *72790073336d475f696e666f0073336d475f656e7472790073336d455f696e666f0073336d455f *656e7472790073336d495f696e666f0073336d495f656e7472790073336d415f696e666f007333 *6d415f656e7472790073336d4b5f696e666f0073336d4b5f656e7472790073336d4d5f696e666f *0073336d4d5f656e7472790073336d535f696e666f0073336d535f656e7472790073336d725f69 *6e666f0073336d725f656e7472790073336d745f696e666f0073336d745f656e7472790073336d *6e5f696e666f0073336d6e5f656e7472790073336d775f696e666f0073336d775f656e74727900 *73336d795f696e666f0073336d795f656e7472790073336d555f696e666f0073336d555f656e74 *72790073336d6a5f696e666f0073336d6a5f656e7472790073336d645f696e666f0073336d645f *656e7472790073336d6c5f696e666f0073336d6c5f656e74727900733370685f696e666f007333 *70685f7265740073336d575f696e666f0073336d575f656e7472790073336d335f696e666f0073 *336d335f656e7472790073336d355f696e666f0073336d355f656e7472790073336d595f696e66 *6f0073336d595f656e7472790073336c595f696e666f0073336c595f656e7472790073336d305f *696e666f0073336d305f656e74727900733370675f315f616c740073336c565f696e666f007333 *6c565f656e747279007333706a5f696e666f007333706a5f72657400733370675f325f616c7400 *733370675f7674626c00733370655f696e666f00733370655f7265740073336e315f7372740073 *336e315f636c6f737572650073336e315f696e666f0073336e315f656e7472790073336e6c5f31 *5f616c7400733370475f315f616c740073336e705f696e666f0073336e705f656e747279007333 *6e725f696e666f0073336e725f656e7472790073336e6e5f696e666f0073336e6e5f656e747279 *00733370475f325f616c7400733370475f7674626c00733370465f315f616c7400733370465f32 *5f616c7400733370465f7674626c0073336e6c5f325f616c740073336e6c5f7674626c0073336e *755f696e666f0073336e755f656e7472790073336e635f696e666f0073336e635f656e74727900 *733370415f696e666f00733370415f7265740073336f515f696e666f0073336f515f656e747279 *0073336f565f315f616c740073336f335f696e666f0073336f335f656e7472790073336f575f69 *6e666f0073336f575f7265740073336f365f696e666f0073336f365f656e7472790073336f595f *696e666f0073336f595f7265740073336e595f696e666f0073336e595f656e7472790073337030 *5f315f616c740073336f485f656e7472790073336f615f696e666f0073336f615f656e74727900 *73336f765f696e666f0073336f765f656e7472790073336f725f696e666f0073336f725f656e74 *72790073336f6f5f696e666f0073336f6f5f656e7472790073336f745f696e666f0073336f745f *656e7472790073336f795f696e666f0073336f795f656e7472790073336f6b5f696e666f007333 *6f6b5f656e74727900733370315f315f616c7400733370315f325f616c7400733370315f767462 *6c0073336f445f696e666f0073336f445f656e7472790073336f635f696e666f0073336f635f65 *6e7472790073336f655f696e666f0073336f655f656e7472790073336f465f696e666f0073336f *465f656e74727900733370305f325f616c7400733370305f7674626c0073336f565f325f616c74 *0073336f565f7674626c0073336f485f696e666f0073336f4d5f696e666f0073336f4d5f656e74 *72790073336f4f5f696e666f0073336f4f5f656e7472790073336f535f696e666f0073336f535f *656e7472790073336e465f696e666f0073336e465f656e7472790073336f545f696e666f007333 *6f545f72657400736135345f315f616c7400736135345f325f616c7400736135345f7674626c00 *7361674e5f696e666f007361674e5f72657400736135765f315f616c74007361674d5f315f616c *74007361674d5f325f616c74007361674d5f7674626c007361674b5f696e666f007361674b5f72 *657400736135765f325f616c7400736135765f7674626c00736167475f315f616c740073616749 *5f696e666f00736167495f72657400736167475f325f616c7400736167475f7674626c00736167 *435f315f616c7400736167455f696e666f00736167455f72657400736167435f325f616c740073 *6167435f7674626c00736136315f696e666f00736136315f656e74727900736136335f696e666f *00736136335f656e74727900736167745f696e666f00736167745f72657400736136655f696e66 *6f00736136655f656e74727900736136485f315f616c7400736167795f315f616c74007361364a *5f696e666f007361364a5f656e74727900736136455f696e666f00736136455f656e7472790073 *6136475f696e666f00736136475f656e74727900736167795f325f616c7400736167795f767462 *6c00736136485f325f616c7400736136485f7674626c00736167765f696e666f00736167765f72 *6574007361676c5f696e666f007361676c5f72657400736137305f315f616c7400736167705f69 *6e666f00736167705f72657400736136585f696e666f00736136585f656e74727900736137305f *325f616c7400736137305f7674626c00736139735f315f616c7400736137485f696e666f007361 *37485f656e747279007361665a5f315f616c7400736137465f696e666f00736137465f656e7472 *7900736167305f315f616c7400736167345f315f616c7400736167345f325f616c740073613744 *5f656e74727900736167345f7674626c00736167325f696e666f00736167325f72657400736167 *305f325f616c7400736167305f7674626c007361665a5f325f616c74007361665a5f7674626c00 *736137445f696e666f007361374a5f696e666f007361374a5f656e74727900736167665f315f61 *6c7400736167695f315f616c7400736138395f656e74727900736167695f325f616c7400736138 *385f656e74727900736167695f7674626c00736167675f696e666f00736167675f726574007361 *67665f325f616c7400736167665f7674626c00736138475f696e666f00736138475f656e747279 *00736167615f315f616c7400736167625f315f616c7400736167655f315f616c7400736167655f *325f616c7400736167655f7674626c00736167635f696e666f00736167635f7265740073616762 *5f325f616c7400736167625f7674626c00736167615f325f616c7400736167615f7674626c0073 *6138395f696e666f00736139675f696e666f00736139675f656e74727900736167355f315f616c *7400736139635f696e666f00736139635f656e74727900736167365f315f616c7400736167395f *315f616c7400736167395f325f616c7400736167395f7674626c00736167375f696e666f007361 *67375f72657400736167365f325f616c7400736167365f7674626c00736167355f325f616c7400 *736167355f7674626c00736138385f696e666f00736139725f696e666f00736139725f656e7472 *79007361676a5f315f616c74007361676a5f325f616c74007361676a5f7674626c00736139705f *315f616c7400736139705f325f616c7400736139705f7674626c00736139735f325f616c740073 *6139735f7674626c00736139515f315f616c74007361394c5f696e666f007361394c5f656e7472 *7900736166535f315f616c7400736166535f325f616c7400736166535f7674626c00736166515f *696e666f00736166515f72657400736139515f325f616c7400736139515f7674626c0073613955 *5f696e666f00736139555f72657400736166545f315f616c7400736166575f315f616c74007361 *66575f325f616c7400736166575f7674626c00736166555f696e666f00736166555f7265740073 *6166545f325f616c7400736166545f7674626c007361616e5f315f616c74007361664e5f315f61 *6c74007361664e5f325f616c74007361664e5f7674626c007361664c5f696e666f007361664c5f *726574007361616e5f325f616c74007361616e5f7674626c00736161415f315f616c7400736166 *665f315f616c7400736166665f325f616c7400736166665f7674626c00736161415f325f616c74 *00736161415f7674626c00736161445f696e666f00736161445f656e747279007361614d5f315f *616c74007361666c5f315f616c74007361666c5f325f616c74007361666c5f7674626c00736166 *6b5f696e666f007361666b5f72657400736161585f696e666f00736161585f656e747279007361 *62655f696e666f00736162655f656e747279007361626f5f696e666f007361626f5f656e747279 *00736162735f696e666f00736162735f656e74727900736166725f315f616c74007361626d5f69 *6e666f007361626d5f656e74727900736162685f696e666f00736162685f656e74727900736166 *725f325f616c7400736166725f7674626c00736162755f696e666f00736162755f726574007361 *66735f315f616c7400736166765f315f616c7400736162695f656e74727900736166765f325f61 *6c7400736166765f7674626c00736166745f696e666f00736166745f72657400736166735f325f *616c7400736166735f7674626c007361614d5f325f616c74007361614d5f7674626c0073616269 *5f696e666f007361624f5f696e666f007361624f5f656e74727900736163615f315f616c740073 *6166415f315f616c7400736163385f696e666f00736163385f656e74727900736163345f696e66 *6f00736163345f656e74727900736166415f325f616c7400736166415f7674626c00736166795f *696e666f00736166795f72657400736163615f325f616c7400736163615f7674626c0073616363 *5f696e666f00736163635f656e74727900736163425f696e666f00736163425f656e7472790073 *6163445f696e666f00736163445f656e74727900736163735f696e666f00736163735f656e7472 *7900736163465f696e666f00736163465f656e747279007361634c5f696e666f007361634c5f65 *6e747279007361634e5f696e666f007361634e5f656e74727900736164645f315f616c74007361 *64645f325f616c7400736164645f7674626c00736166355f696e666f00736166355f7265740073 *6164685f696e666f00736164685f656e747279007361646a5f696e666f007361646a5f656e7472 *7900736163565f315f616c74007361635a5f315f616c74007361635a5f325f616c74007361635a *5f7674626c00736163565f325f616c7400736163565f7674626c00736166395f696e666f007361 *66395f72657400736164335f696e666f00736164335f656e74727900736164355f696e666f0073 *6164355f656e74727900736164705f696e666f00736164705f656e74727900736164495f696e66 *6f00736164495f656e74727900736165575f696e666f00736165575f72657400736164415f696e *666f00736164415f656e74727900736165395f696e666f00736165395f656e747279007361655a *5f315f616c7400736165315f696e666f00736165315f656e74727900736164595f696e666f0073 *6164595f656e747279007361655a5f325f616c74007361655a5f7674626c00736165595f696e66 *6f00736165595f72657400736165685f696e666f00736165685f656e74727900736165505f696e *666f00736165505f72657400736165775f696e666f00736165775f656e74727900736165535f31 *5f616c7400736165535f325f616c7400736165535f7674626c00736165525f696e666f00736165 *525f72657400736165485f696e666f00736165485f656e74727900726134545f636c6f73757265 *00723131525f636c6f7375726500723131545f73727400723131545f636c6f7375726500723131 *545f696e666f00723131545f656e74727900723131565f73727400723131565f636c6f73757265 *00723131565f696e666f00733165715f696e666f00733165715f72657400723131565f656e7472 *7900723131585f73727400723131585f636c6f7375726500723131585f696e666f00733132715f *696e666f00733132715f656e74727900733133495f696e666f00733133495f656e747279007331 *334b5f696e666f007331334b5f656e74727900733133475f696e666f00733133475f656e747279 *007331334d5f696e666f007331334d5f656e747279007331334f5f696e666f007331334f5f656e *74727900733133455f696e666f00733133455f656e74727900733133515f696e666f0073313351 *5f656e74727900733163465f696e666f00733163465f72657400733133435f696e666f00733133 *435f656e74727900733133535f696e666f00733133535f656e74727900733133765f696e666f00 *733133765f656e74727900733133305f315f616c7400733133665f696e666f00733133665f656e *74727900733133685f696e666f00733133685f656e74727900733133645f696e666f0073313364 *5f656e747279007331336a5f696e666f007331336a5f656e747279007331336c5f696e666f0073 *31336c5f656e74727900733133625f696e666f00733133625f656e747279007331336e5f696e66 *6f007331336e5f656e747279007331634b5f696e666f007331634b5f72657400733133395f696e *666f00733133395f656e74727900733133705f696e666f00733133705f656e7472790073313332 *5f696e666f00733133325f656e74727900733133725f696e666f00733133725f656e7472790073 *3133745f696e666f00733133745f656e747279007331325a5f696e666f007331325a5f656e7472 *7900733133305f325f616c7400733133305f7674626c00733163455f315f616c74007331324b5f *696e666f007331324b5f656e747279007331324d5f696e666f007331324d5f656e747279007331 *32485f696e666f00733132485f656e747279007331324f5f696e666f007331324f5f656e747279 *00733132515f696e666f00733132515f656e74727900733132455f696e666f00733132455f656e *74727900733132535f696e666f00733132535f656e747279007331634e5f696e666f007331634e *5f72657400733132435f696e666f00733132435f656e74727900733132555f696e666f00733132 *555f656e74727900733132755f696e666f00733132755f656e74727900733163455f325f616c74 *00733163455f7674626c00723131585f656e747279007231315a5f737274007231315a5f636c6f *73757265007231315a5f696e666f007231315a5f656e74727900723132315f7372740072313231 *5f636c6f7375726500723132315f696e666f00733164435f315f616c7400733134695f696e666f *00733134695f656e74727900723132315f656e74727900733164445f315f616c7400733134655f *696e666f00733134655f656e74727900733164445f325f616c7400733164445f7674626c007331 *346b5f696e666f007331346b5f72657400733164455f315f616c74007331344e5f696e666f0073 *31344e5f656e747279007331644c5f696e666f007331644c5f72657400733134475f696e666f00 *733134475f656e747279007331344a5f696e666f007331344a5f656e74727900733135355f696e *666f00733135355f656e74727900733164485f315f616c7400733164495f315f616c7400733164 *4b5f315f616c7400733134595f696e666f00733134595f656e747279007331644b5f325f616c74 *007331644b5f7674626c00733164495f325f616c7400733164495f7674626c00733164485f325f *616c7400733164485f7674626c00733135315f696e666f00733135315f656e7472790073316446 *5f696e666f00733164465f72657400733164455f325f616c7400733164455f7674626c00733164 *435f325f616c7400733164435f7674626c00733135375f696e666f00733135375f726574007331 *64575f315f616c7400733164585f315f616c7400733135725f696e666f00733135725f656e7472 *7900733135545f696e666f00733135545f656e74727900733165345f696e666f00733165345f72 *657400733135575f696e666f00733135575f656e747279007331355a5f696e666f007331355a5f *656e74727900733164595f696e666f00733164595f72657400733164585f325f616c7400733164 *585f7674626c00733164575f325f616c7400733164575f7674626c00733164555f696e666f0073 *3164555f72657400733136315f696e666f00733136315f72657400733165645f315f616c740073 *3165655f315f616c7400733165685f315f616c7400733136415f315f616c74007331364b5f696e *666f007331364b5f656e747279007331656d5f315f616c7400733136515f696e666f0073313651 *5f656e747279007331656d5f325f616c74007331656d5f7674626c007331656b5f696e666f0073 *31656b5f72657400733165695f696e666f00733165695f72657400733136415f325f616c740073 *3136415f7674626c00733165685f325f616c7400733165685f7674626c00733136715f696e666f *00733136715f656e74727900733137305f696e666f00733137305f656e74727900733165705f31 *5f616c7400733165705f325f616c7400733165705f7674626c007331656e5f696e666f00733165 *6e5f72657400733165665f696e666f00733165665f72657400733165655f325f616c7400733165 *655f7674626c00733165645f325f616c7400733165645f7674626c00723132335f737274007231 *32335f636c6f7375726500723132335f696e666f007331637a5f315f616c74007331637a5f325f *616c74007331637a5f335f616c7400733163415f696e666f00733163415f72657400733137725f *696e666f00733137725f656e74727900733137795f696e666f00733137795f656e747279007331 *637a5f345f616c74007331637a5f355f616c74007331637a5f7674626c00723132335f656e7472 *7900723132355f73727400723132355f636c6f7375726500723132355f696e666f00733163515f *315f616c7400733163525f696e666f00733163525f72657400733138335f696e666f0073313833 *5f656e74727900733138365f696e666f00733138365f656e74727900723132355f656e74727900 *733163515f325f616c7400733163515f7674626c00733138385f696e666f00733138385f726574 *00733164315f315f616c74007331394d5f696e666f007331394d5f656e747279007331394b5f69 *6e666f007331394b5f656e747279007331394f5f64666c74007331394f5f7674626c007331396c *5f335f616c7400733139495f696e666f00733139495f656e747279007331396c5f345f616c7400 *733164335f696e666f00733164335f72657400733139795f696e666f00733139795f656e747279 *00733139435f696e666f00733139435f656e747279007331396c5f355f616c74007331396c5f64 *666c74007331396c5f7674626c00733164315f325f616c7400733164315f7674626c007331397a *5f315f616c7400733164635f315f616c7400733139645f696e666f00733139645f656e74727900 *733138525f345f616c7400733164655f696e666f00733164655f72657400733139345f696e666f *00733139345f656e74727900733139375f696e666f00733139375f656e74727900733138525f35 *5f616c7400733138525f64666c7400733138525f7674626c00733164635f325f616c7400733164 *635f7674626c007331397a5f325f616c74007331646e5f315f616c7400733138495f696e666f00 *733138495f656e74727900733138475f696e666f00733138475f656e747279007331384b5f6466 *6c74007331384b5f7674626c00733138685f315f616c7400733138445f696e666f00733138445f *656e74727900733138685f345f616c7400733164715f696e666f00733164715f72657400733138 *755f696e666f00733138755f656e74727900733138785f696e666f00733138785f656e74727900 *733138685f355f616c7400733138685f64666c7400733138685f7674626c007331646e5f325f61 *6c74007331646e5f7674626c007331397a5f335f616c74007331397a5f64666c74007331397a5f *7674626c00733139515f696e666f00733139515f72657400733164425f315f616c740073316133 *5f696e666f00733161335f656e74727900733164425f325f616c7400733164425f7674626c0073 *31647a5f696e666f007331647a5f72657400733162615f696e666f00733162615f656e74727900 *733163765f315f616c7400733161465f696e666f00733161465f656e74727900733161485f696e *666f00733161485f656e747279007331614e5f696e666f007331614e5f656e7472790073316149 *5f656e747279007331614c5f696e666f007331614c5f656e74727900733161585f315f616c7400 *7331615a5f696e666f007331615a5f656e74727900733161575f696e666f00733161575f656e74 *727900733162345f696e666f00733162345f656e74727900733162315f696e666f00733162315f *656e74727900733163785f696e666f00733163785f72657400733161585f325f616c7400733161 *585f7674626c00733162385f696e666f00733162385f656e74727900733162365f696e666f0073 *3162365f656e74727900733161435f696e666f00733161435f72657400733163765f325f616c74 *00733163765f7674626c00733161495f696e666f00733162645f696e666f00733162645f656e74 *727900733161685f696e666f00733161685f656e74727900733161645f696e666f00733161645f *656e747279007331616a5f696e666f007331616a5f656e74727900733161385f696e666f007331 *61385f656e747279007331616c5f696e666f007331616c5f656e74727900733163745f315f616c *7400733163745f325f616c7400733163745f7674626c007331636f5f315f616c7400733163705f *315f616c7400733163725f696e666f00733163725f72657400733163715f315f616c7400733163 *715f325f616c7400733163715f7674626c00733163705f325f616c7400733163705f7674626c00 *7331636f5f325f616c74007331636f5f7674626c007331636e5f315f616c74007331636e5f325f *616c74007331636e5f335f616c74007331636e5f345f616c74007331636e5f355f616c74007331 *636e5f7674626c00723257325f636c6f7375726500723257325f696e666f00733355615f315f61 *6c7400733355625f315f616c740073337a505f656e74727900733355625f325f616c7400733355 *625f7674626c00733355615f325f616c7400733355615f7674626c0073337a505f696e666f0073 *337a565f696e666f0073337a565f656e74727900733355645f315f616c7400733355655f315f61 *6c7400733355655f325f616c740073337a775f656e74727900733355655f7674626c0073335564 *5f325f616c7400733355645f7674626c0073337a775f696e666f0073337a445f696e666f007333 *7a445f656e74727900723257325f656e74727900723379515f73727400723379515f636c6f7375 *726500723379515f696e666f00723379515f656e747279007333475a5f737274007333475a5f63 *6c6f73757265007333475a5f696e666f00733353615f696e666f00733353615f72657400733346 *565f696e666f00733346565f656e747279007333464e5f696e666f007333464e5f656e74727900 *733353655f696e666f00733353655f726574007333464a5f696e666f007333464a5f656e747279 *00733346425f696e666f00733346425f656e74727900733353695f696e666f00733353695f7265 *7400733346785f696e666f00733346785f656e74727900733346705f696e666f00733346705f65 *6e747279007333536d5f696e666f007333536d5f726574007333466c5f696e666f007333466c5f *656e74727900733346645f696e666f00733346645f656e74727900733353715f696e666f007333 *53715f72657400733346395f696e666f00733346395f656e74727900733346315f696e666f0073 *3346315f656e74727900733353755f696e666f00733353755f72657400733345585f696e666f00 *733345585f656e74727900733345505f696e666f00733345505f656e74727900733353795f696e *666f00733353795f726574007333454c5f696e666f007333454c5f656e74727900733345445f69 *6e666f00733345445f656e74727900733353435f696e666f00733353435f726574007333457a5f *696e666f007333457a5f656e74727900733345725f696e666f00733345725f656e747279007333 *53475f696e666f00733353475f726574007333456e5f696e666f007333456e5f656e7472790073 *3345665f696e666f00733345665f656e747279007333534b5f696e666f007333534b5f72657400 *733345625f696e666f00733345625f656e74727900733345335f696e666f00733345335f656e74 *7279007333534f5f696e666f007333534f5f726574007333445a5f696e666f007333445a5f656e *74727900733344525f696e666f00733344525f656e74727900733353535f696e666f0073335353 *5f726574007333444e5f696e666f007333444e5f656e74727900733344465f696e666f00733344 *465f656e74727900733353575f696e666f00733353575f72657400733344425f696e666f007333 *44425f656e74727900733344745f696e666f00733344745f656e74727900733354305f696e666f *00733354305f72657400733344705f696e666f00733344705f656e74727900733344685f696e66 *6f00733344685f656e74727900733354345f696e666f00733354345f72657400733344645f696e *666f00733344645f656e74727900733344355f696e666f00733344355f656e7472790073335438 *5f696e666f00733354385f72657400733344315f696e666f00733344315f656e74727900733343 *545f696e666f00733343545f656e74727900733354635f696e666f00733354635f726574007333 *43505f696e666f00733343505f656e74727900733343485f696e666f00733343485f656e747279 *00733354675f696e666f00733354675f72657400733343445f696e666f00733343445f656e7472 *7900733343765f696e666f00733343765f656e747279007333546b5f696e666f007333546b5f72 *657400733343725f696e666f00733343725f656e747279007333436a5f696e666f007333436a5f *656e747279007333546f5f696e666f007333546f5f72657400733343665f696e666f0073334366 *5f656e74727900733343375f696e666f00733343375f656e74727900733354735f696e666f0073 *3354735f72657400733343335f696e666f00733343335f656e74727900733342565f696e666f00 *733342565f656e74727900733354775f696e666f00733354775f72657400733342525f696e666f *00733342525f656e747279007333424a5f696e666f007333424a5f656e74727900733354415f69 *6e666f00733354415f72657400733342465f696e666f00733342465f656e74727900733342785f *696e666f00733342785f656e74727900733354455f696e666f00733354455f7265740073334274 *5f696e666f00733342745f656e747279007333426c5f696e666f007333426c5f656e7472790073 *3354495f696e666f00733354495f72657400733342685f696e666f00733342685f656e74727900 *733342395f696e666f00733342395f656e747279007333544d5f696e666f007333544d5f726574 *00733342355f696e666f00733342355f656e74727900733341585f696e666f00733341585f656e *74727900733354515f696e666f00733354515f72657400733341545f696e666f00733341545f65 *6e747279007333414c5f696e666f007333414c5f656e74727900733354555f696e666f00733354 *555f72657400733341485f696e666f00733341485f656e747279007333417a5f696e666f007333 *417a5f656e74727900733354595f696e666f00733354595f72657400733341765f696e666f0073 *3341765f656e747279007333416e5f696e666f007333416e5f656e74727900733355325f696e66 *6f00733355325f726574007333416a5f696e666f007333416a5f656e74727900733341625f696e *666f00733341625f656e74727900733355365f696e666f00733355365f72657400733341375f69 *6e666f00733341375f656e7472790073337a5a5f696e666f0073337a5a5f656e74727900733347 *5a5f656e74727900723379535f73727400723379535f636c6f7375726500723379535f696e666f *00723379535f656e74727900723379555f73727400723379555f636c6f7375726500723379555f *696e666f00733348365f696e666f00733348365f656e74727900733348385f696e666f00733348 *385f656e74727900733348615f696e666f00733348615f656e74727900733348635f696e666f00 *733348635f656e74727900733348655f696e666f00733348655f656e74727900733348675f696e *666f00733348675f656e74727900733348695f696e666f00733348695f656e747279007333486b *5f696e666f007333486b5f656e747279007333486d5f696e666f007333486d5f656e7472790073 *33486f5f696e666f007333486f5f656e74727900733348715f696e666f00733348715f656e7472 *7900733348735f696e666f00733348735f656e74727900733348755f696e666f00733348755f65 *6e74727900733348775f696e666f00733348775f656e74727900733348795f696e666f00733348 *795f656e74727900733348415f696e666f00733348415f656e74727900733348435f696e666f00 *733348435f656e74727900733348455f696e666f00733348455f656e74727900733348475f696e *666f00733348475f656e74727900733348495f696e666f00733348495f656e747279007333484b *5f696e666f007333484b5f656e747279007333484d5f696e666f007333484d5f656e7472790073 *33484f5f696e666f007333484f5f656e74727900733348515f696e666f00733348515f656e7472 *7900733348535f696e666f00733348535f656e74727900733348555f696e666f00733348555f65 *6e74727900733348575f696e666f00733348575f656e74727900733348595f696e666f00733348 *595f656e74727900733349305f696e666f00733349305f656e74727900733349325f696e666f00 *733349325f656e74727900733349345f696e666f00733349345f656e74727900733353395f696e *666f00733353395f72657400723379555f656e74727900733349375f636c6f7375726500733349 *395f73727400733349395f636c6f7375726500733349395f696e666f00733349395f656e747279 *00723379575f73727400723379575f636c6f7375726500723379575f696e666f00723379575f65 *6e74727900723379595f73727400723379595f636c6f7375726500723379595f696e666f007333 *49695f696e666f00733349695f72657400733349685f696e666f00733349685f72657400723379 *595f656e7472790072337a305f7372740072337a305f636c6f737572650072337a305f696e666f *00733349715f696e666f00733349715f656e7472790072337a305f656e7472790072337a345f73 *72740072337a345f636c6f737572650072337a345f696e666f0072337a345f656e747279007233 *7a365f7372740072337a365f636c6f737572650072337a365f696e666f0072337a365f656e7472 *7900733349415f696e666f00733349415f656e74727900733349435f696e666f00733349435f65 *6e74727900733349455f696e666f00733349455f656e74727900733349475f696e666f00733349 *475f656e74727900733349495f696e666f00733349495f656e747279007333494b5f696e666f00 *7333494b5f656e747279007333494d5f696e666f007333494d5f656e747279007333494f5f696e *666f007333494f5f656e74727900733349515f696e666f00733349515f656e7472790073334953 *5f696e666f00733349535f656e74727900733349555f696e666f00733349555f656e7472790073 *3349575f696e666f00733349575f656e74727900733349595f696e666f00733349595f656e7472 *790073334a305f696e666f0073334a305f656e7472790073334a325f696e666f0073334a325f65 *6e7472790073334a345f696e666f0073334a345f656e7472790073334a365f696e666f0073334a *365f656e7472790073334a385f696e666f0073334a385f656e7472790073334a615f696e666f00 *73334a615f656e7472790073334a635f696e666f0073334a635f656e7472790073334a655f696e *666f0073334a655f656e7472790073334a675f696e666f0073334a675f656e7472790073334a69 *5f696e666f0073334a695f656e7472790073334a6b5f696e666f0073334a6b5f656e7472790073 *334a6d5f696e666f0073334a6d5f656e7472790073334a6f5f696e666f0073334a6f5f656e7472 *7900733353375f696e666f00733353375f7265740073334a715f696e666f0073334a715f656e74 *72790073334a745f696e666f0073334a745f656e7472790073334a765f696e666f0073334a765f *656e7472790073334a445f696e666f0073334a445f656e7472790073334a465f696e666f007333 *4a465f656e7472790073334a485f696e666f0073334a485f656e7472790073334a4a5f696e666f *0073334a4a5f656e7472790073334a4c5f696e666f0073334a4c5f656e7472790073334a4e5f69 *6e666f0073334a4e5f656e7472790073334a505f696e666f0073334a505f656e7472790073334a *525f696e666f0073334a525f656e7472790073334a545f696e666f0073334a545f656e74727900 *73334a565f696e666f0073334a565f656e7472790073334a585f696e666f0073334a585f656e74 *72790073334a5a5f696e666f0073334a5a5f656e7472790073334b315f696e666f0073334b315f *656e7472790073334b335f696e666f0073334b335f656e7472790073334b355f696e666f007333 *4b355f656e7472790073334b375f696e666f0073334b375f656e7472790073334a425f696e666f *0073334a425f7265740073334b395f696e666f0073334b395f656e7472790073334b635f696e66 *6f0073334b635f656e7472790073334b655f696e666f0073334b655f656e7472790073334b6d5f *696e666f0073334b6d5f656e7472790073334b6f5f696e666f0073334b6f5f656e747279007333 *4b6b5f696e666f0073334b6b5f7265740073334b715f696e666f0073334b715f656e7472790073 *334b745f696e666f0073334b745f656e7472790073334b765f696e666f0073334b765f656e7472 *790072337a615f7372740072337a615f636c6f737572650072337a615f696e666f0072337a615f *656e7472790072337a655f7372740072337a675f7372740072337a695f7372740072337a655f63 *6c6f737572650072337a675f636c6f737572650072337a695f636c6f737572650072337a655f69 *6e666f0072337a655f656e7472790072337a675f696e666f0072337a675f656e7472790072337a *695f696e666f0072337a695f656e74727900733353325f315f616c7400733353335f315f616c74 *00733353335f325f616c7400733353335f7674626c00733353325f325f616c7400733353325f76 *74626c00733352555f315f616c74007333525a5f315f616c74007333525a5f325f616c74007333 *525a5f7674626c00733352565f315f616c7400733352575f315f616c7400733352575f325f616c *7400733352575f7674626c00733352565f325f616c7400733352565f7674626c00733352555f32 *5f616c7400733352555f7674626c00733352455f315f616c7400733352525f315f616c74007333 *52525f325f616c7400733352525f7674626c007333524e5f315f616c74007333524f5f315f616c *74007333524f5f325f616c74007333524f5f7674626c007333524e5f325f616c74007333524e5f *7674626c00733352465f315f616c74007333524b5f315f616c74007333524b5f325f616c740073 *33524b5f7674626c00733352475f315f616c7400733352485f315f616c7400733352485f325f61 *6c7400733352485f7674626c00733352475f325f616c7400733352475f7674626c00733352465f *325f616c7400733352465f7674626c00733352455f325f616c7400733352455f7674626c007333 *52385f315f616c7400733352425f315f616c7400733352425f325f616c7400733352425f767462 *6c00733352785f315f616c7400733352795f315f616c7400733352795f325f616c740073335279 *5f7674626c00733352785f325f616c7400733352785f7674626c00733352705f315f616c740073 *3352755f315f616c7400733352755f325f616c7400733352755f7674626c00733352715f315f61 *6c7400733352725f315f616c7400733352725f325f616c7400733352725f7674626c0073335271 *5f325f616c7400733352715f7674626c00733352705f325f616c7400733352705f7674626c0073 *3352395f315f616c74007333526d5f315f616c74007333526d5f325f616c74007333526d5f7674 *626c00733352695f315f616c74007333526a5f315f616c74007333526a5f325f616c7400733352 *6a5f7674626c00733352695f325f616c7400733352695f7674626c00733352615f315f616c7400 *733352665f315f616c7400733352665f325f616c7400733352665f7674626c00733352625f315f *616c7400733352635f315f616c7400733352635f325f616c7400733352635f7674626c00733352 *625f325f616c7400733352625f7674626c00733352615f325f616c7400733352615f7674626c00 *733352395f325f616c7400733352395f7674626c00733352385f325f616c7400733352385f7674 *626c00733352375f696e666f00733352375f7265740073456c5a5f696e666f0073456c5a5f656e *7472790073456d325f696e666f0073456d325f656e7472790073456d625f696e666f0073456d62 *5f656e7472790073456d375f696e666f0073456d375f656e7472790073456d745f696e666f0073 *456d745f656e7472790073454f725f696e666f0073454f725f7265740073456d775f696e666f00 *73456d775f656e7472790073454f6e5f696e666f0073454f6e5f7265740073456d7a5f696e666f *0073456d7a5f656e7472790073454f6a5f696e666f0073454f6a5f7265740073456d4c5f696e66 *6f0073456d4c5f656e7472790073456d4e5f696e666f0073456d4e5f656e7472790073456d505f *696e666f0073456d505f656e7472790073456d535f696e666f0073456d535f656e747279007345 *6d565f696e666f0073456d565f656e7472790073454e565f696e666f0073454e565f7265740073 *456e355f696e666f0073456e355f656e7472790073456e485f696e666f0073456e485f656e7472 *790073454f385f696e666f0073454f385f7265740073456e4b5f696e666f0073456e4b5f656e74 *72790073454f665f696e666f0073454f665f7265740073456e745f696e666f0073456e745f656e *7472790073456e765f696e666f0073456e765f656e7472790073454f355f696e666f0073454f35 *5f7265740073456e4e5f696e666f0073456e4e5f656e7472790073454f305f696e666f0073454f *305f7265740073456e515f696e666f0073456e515f656e7472790073454e5a5f696e666f007345 *4e5a5f7265740073456e575f696e666f0073456e575f656e7472790073454e4c5f696e666f0073 *454e4c5f7265740073456f495f696e666f0073456f495f656e7472790073454e475f696e666f00 *73454e475f7265740073456f4c5f696e666f0073456f4c5f656e7472790073454e525f696e666f *0073454e525f7265740073456f6f5f696e666f0073456f6f5f656e7472790073456f715f696e66 *6f0073456f715f656e7472790073454e445f696e666f0073454e445f7265740073456f4f5f696e *666f0073456f4f5f656e7472790073454e795f696e666f0073454e795f7265740073456f525f69 *6e666f0073456f525f656e7472790073456f355f696e666f0073456f355f656e7472790073454e *785f696e666f0073454e785f7265740073456f555f696e666f0073456f555f656e747279007345 *6f575f696e666f0073456f575f656e74727900724467735f73727400724467735f636c6f737572 *6500724467735f696e666f0073454e765f696e666f0073454e765f72657400724467735f656e74 *7279007345706d5f696e666f007345706d5f656e7472790073454e665f315f616c740073454e68 *5f315f616c740073454e685f325f616c7400734570445f656e7472790073454e685f7674626c00 *73454e675f696e666f0073454e675f7265740073454e665f325f616c740073454e665f7674626c *00734570445f696e666f0073454e6c5f315f616c740073454e6e5f315f616c7400734571385f65 *6e7472790073454e6e5f325f616c740073454e6e5f7674626c0073454e6d5f696e666f0073454e *6d5f7265740073454e6c5f325f616c740073454e6c5f7674626c00734571385f696e666f007345 *4e6f5f315f616c740073454e705f315f616c740073454e705f325f616c740073454e705f767462 *6c0073454e6f5f325f616c740073454e6f5f7674626c0073454e6b5f315f616c740073454e735f *315f616c740073454e735f325f616c740073454e735f7674626c0073454e6b5f325f616c740073 *454e6b5f7674626c0072456c665f636c6f737572650072456c685f7372740072456c685f636c6f *737572650072456c685f696e666f0072456c685f656e74727900734571745f696e666f00734571 *745f656e74727900734571725f696e666f00734571725f656e7472790072456c6a5f7372740072 *456c6a5f636c6f737572650072456c6a5f696e666f0072456c6a5f656e747279007345717a5f69 *6e666f007345717a5f656e74727900734571785f696e666f00734571785f656e7472790072456c *6c5f7372740072456c6c5f636c6f737572650072456c6c5f696e666f0072456c6c5f656e747279 *00734571445f73727400734571445f636c6f7375726500734571445f696e666f00734571445f65 *6e7472790072456c6e5f7372740072456c6e5f636c6f737572650072456c6e5f696e666f007245 *6c6e5f656e7472790072456c705f7372740072456c705f636c6f737572650072456c705f696e66 *6f0072456c705f656e7472790072456c725f7372740072456c725f636c6f737572650072456c72 *5f696e666f0072456c725f656e747279007345714d5f696e666f007345714d5f656e7472790073 *45714f5f696e666f007345714f5f656e747279007345714b5f696e666f007345714b5f656e7472 *7900734571515f696e666f00734571515f656e74727900734571535f696e666f00734571535f65 *6e7472790073454e385f696e666f0073454e385f72657400734572775f696e666f00734572775f *656e74727900734572645f696e666f00734572645f656e74727900734572665f696e666f007345 *72665f656e74727900734572625f696e666f00734572625f656e74727900734572685f696e666f *00734572685f656e747279007345726a5f696e666f007345726a5f656e7472790073454e345f69 *6e666f0073454e345f726574007345727a5f696e666f007345727a5f656e74727900734572315f *696e666f00734572315f656e7472790073454e335f696e666f0073454e335f7265740073457243 *5f696e666f00734572435f656e74727900734572455f696e666f00734572455f656e7472790073 *454e315f696e666f0073454e315f72657400734572545f696e666f00734572545f656e74727900 *7345724a5f696e666f007345724a5f656e747279007345724c5f696e666f007345724c5f656e74 *727900734572565f696e666f00734572565f656e74727900734572585f696e666f00734572585f *656e74727900724467765f73727400724467765f636c6f7375726500724467765f696e666f0073 *454d4f5f315f616c7400734573695f696e666f00734573695f656e74727900734573675f656e74 *727900734573745f315f616c740073454d535f315f616c740073454d545f696e666f0073454d54 *5f726574007345734f5f696e666f007345734f5f656e7472790073454d565f696e666f0073454d *565f72657400734573475f696e666f00734573475f656e7472790073454d585f315f616c740073 *4573545f696e666f00734573545f656e74727900734574305f696e666f00734574305f656e7472 *7900734574325f696e666f00734574325f656e74727900734574395f696e666f00734574395f72 *65740073454d595f315f616c74007345746f5f696e666f007345746f5f656e7472790073457471 *5f696e666f00734574715f656e7472790073454d5a5f696e666f0073454d5a5f7265740073454d *595f325f616c740073454d595f7674626c0073454d585f325f616c740073454d585f7674626c00 *73454d535f325f616c740073454d535f7674626c0073454d515f696e666f0073454d515f726574 *00734573745f325f616c7400734573745f7674626c0073454d505f696e666f0073454d505f7265 *740073454d4f5f325f616c740073454d4f5f7674626c00734573675f696e666f00724467765f65 *6e7472790072456c745f7372740072456c745f636c6f737572650072456c745f696e666f007245 *6c745f656e7472790072456c765f7372740072456c765f636c6f737572650072456c765f696e66 *6f0072456c765f656e7472790072456c785f7372740072456c785f636c6f737572650072456c78 *5f696e666f0072456c785f656e7472790072456c7a5f7372740072456c7a5f636c6f7375726500 *72456c7a5f696e666f0073454f5a5f696e666f0073454f5a5f7265740072456c7a5f656e747279 *0072456c425f636c6f737572650072456c425f696e666f0072456c425f656e7472790072456c44 *5f636c6f737572650072456c445f696e666f0072456c445f656e7472790072456c465f636c6f73 *7572650072456c465f696e666f0073454d4e5f315f616c740073454d4e5f325f616c740073454d *4e5f7674626c0072456c465f656e7472790072456c485f7372740072456c485f636c6f73757265 *0072456c485f696e666f0073454d375f696e666f0073454d375f72657400734577695f696e666f *00734577695f656e747279007345776b5f696e666f007345776b5f656e7472790073454d615f69 *6e666f0073454d615f72657400734577385f696e666f00734577385f656e747279007345776d5f *696e666f007345776d5f656e74727900734576575f696e666f00734576575f656e747279007345 *76595f696e666f00734576595f656e747279007345776f5f696e666f007345776f5f656e747279 *0073454d645f696e666f0073454d645f72657400734576555f696e666f00734576555f656e7472 *790073454d365f315f616c740073454d6c5f696e666f0073454d6c5f72657400734576795f696e *666f00734576795f656e74727900734576415f696e666f00734576415f656e7472790073454d6f *5f696e666f0073454d6f5f726574007345766f5f696e666f007345766f5f656e74727900734576 *435f696e666f00734576435f656e74727900734576635f696e666f00734576635f656e74727900 *734576655f696e666f00734576655f656e74727900734576455f696e666f00734576455f656e74 *72790073454d725f696e666f0073454d725f72657400734576615f696e666f00734576615f656e *7472790073454d365f325f616c740073454d7a5f696e666f0073454d7a5f726574007345754f5f *696e666f007345754f5f656e74727900734575515f696e666f00734575515f656e747279007345 *4d435f696e666f0073454d435f72657400734575455f696e666f00734575455f656e7472790073 *4575535f696e666f00734575535f656e74727900734575735f696e666f00734575735f656e7472 *7900734575755f696e666f00734575755f656e74727900734575555f696e666f00734575555f65 *6e7472790073454d465f696e666f0073454d465f72657400734575715f696e666f00734575715f *656e7472790073454d365f335f616c740073454d365f7674626c0072456c485f656e7472790073 *4577725f636c6f7375726500734577745f73727400734577745f636c6f7375726500734577745f *696e666f00734577745f656e7472790072456c4a5f7372740072456c4a5f636c6f737572650072 *456c4a5f696e666f0072456c4a5f656e74727900734578425f696e666f00734578425f656e7472 *7900734578755f696e666f00734578755f656e74727900734578445f696e666f00734578445f65 *6e7472790073454c575f696e666f0073454c575f72657400734578735f696e666f00734578735f *656e74727900734578465f696e666f00734578465f656e747279007345786b5f696e666f007345 *786b5f656e7472790073454c565f315f616c7400734578615f696e666f00734578615f656e7472 *7900734578635f696e666f00734578635f656e74727900734578375f696e666f00734578375f65 *6e74727900734578655f696e666f00734578655f656e7472790073454c5a5f696e666f0073454c *5a5f72657400734578355f696e666f00734578355f656e74727900734578675f696e666f007345 *78675f656e74727900734577585f696e666f00734577585f656e7472790073454c565f325f616c *740073454d325f315f616c74007345774f5f696e666f007345774f5f656e74727900734577525f *696e666f00734577525f656e7472790073454d335f696e666f0073454d335f726574007345774d *5f696e666f007345774d5f656e74727900734577545f696e666f00734577545f656e7472790073 *4577455f696e666f00734577455f656e7472790073454d325f325f616c740073454d325f767462 *6c0073454c565f335f616c740073454c565f7674626c0073454c515f696e666f0073454c515f72 *657400734578565f696e666f00734578565f656e7472790073454c545f315f616c740073454c54 *5f325f616c740073454c545f7674626c0073454c535f696e666f0073454c535f72657400734579 *375f696e666f00734579375f656e747279007345796a5f696e666f007345796a5f656e74727900 *7345796c5f696e666f007345796c5f656e74727900734579685f696e666f00734579685f656e74 *7279007345796e5f696e666f007345796e5f656e74727900734579765f696e666f00734579765f *656e7472790073454c555f315f616c740073454c555f325f616c740073454c555f7674626c0073 *4579515f696e666f00734579515f656e74727900734579535f696e666f00734579535f656e7472 *790073454c4e5f696e666f0073454c4e5f726574007345794a5f696e666f007345794a5f656e74 *727900734579555f696e666f00734579555f656e7472790073454c4d5f696e666f0073454c4d5f *7265740073457a365f696e666f0073457a365f656e7472790073457a385f696e666f0073457a38 *5f656e7472790073457a335f696e666f0073457a335f656e7472790073454c4c5f696e666f0073 *454c4c5f7265740073454c4a5f315f616c740073454c4b5f315f616c740073454c4b5f325f616c *740073454c4b5f7674626c0073457a6e5f696e666f0073457a6e5f656e7472790073457a705f69 *6e666f0073457a705f656e7472790073454c4a5f325f616c740073454c4a5f7674626c0073457a *725f696e666f0073457a725f656e7472790073457a775f696e666f0073457a775f656e74727900 *73457a795f696e666f0073457a795f656e7472790072456c4d5f7372740072456c4d5f636c6f73 *7572650072456c4d5f696e666f0072456c4d5f656e74727900734541645f696e666f0073454164 *5f656e74727900734541365f696e666f00734541365f656e74727900734541385f696e666f0073 *4541385f656e74727900734541665f696e666f00734541665f656e74727900734541345f696e66 *6f00734541345f656e7472790073454c495f315f616c740073457a585f696e666f0073457a585f *656e7472790073457a505f696e666f0073457a505f656e7472790073457a525f696e666f007345 *7a525f656e7472790073457a5a5f696e666f0073457a5a5f656e7472790073457a4e5f696e666f *0073457a4e5f656e7472790073454c495f325f616c740073454c495f7674626c00734541685f69 *6e666f00734541685f656e747279007345416f5f696e666f007345416f5f656e74727900734541 *735f696e666f00734541735f656e7472790072456c515f636c6f737572650072456c515f737274 *0072456c515f696e666f0072456c515f656e7472790073454c445f696e666f0073454c445f7265 *740073454c425f696e666f0073454c425f72657400734542425f696e666f00734542425f656e74 *727900734542445f696e666f00734542445f656e7472790073454c465f315f616c740073454c46 *5f325f616c740073454c465f7674626c007345426c5f696e666f007345426c5f656e7472790073 *4542675f696e666f00734542675f656e747279007345426e5f696e666f007345426e5f656e7472 *7900734542495f696e666f00734542495f656e747279007345424c5f696e666f007345424c5f65 *6e7472790073454c475f315f616c7400734542345f696e666f00734542345f656e747279007345 *4c475f325f616c740073454c475f7674626c00734542365f696e666f00734542365f656e747279 *0073454c485f315f616c7400734541525f696e666f00734541525f656e74727900734541545f69 *6e666f00734541545f656e747279007345414d5f696e666f007345414d5f656e74727900734541 *4f5f696e666f007345414f5f656e7472790073454c485f325f616c740073454c485f7674626c00 *734541565f696e666f00734541565f656e7472790073454c415f315f616c740073454c415f325f *616c740073454c415f7674626c00734543705f696e666f00734543705f656e7472790073454338 *5f696e666f00734543385f656e74727900734543345f696e666f00734543345f656e7472790073 *4542565f696e666f00734542565f656e74727900734542585f696e666f00734542585f656e7472 *7900734543365f696e666f00734543365f656e74727900734544645f696e666f00734544645f65 *6e7472790073454c765f315f616c740073454c765f325f616c740073454c765f7674626c007345 *44705f696e666f00734544705f656e74727900734544325f315f616c7400734544315f696e666f *00734544315f656e74727900734544345f696e666f00734544345f656e74727900734544325f32 *5f616c7400734544325f7674626c00734544365f696e666f00734544365f656e74727900734543 *495f315f616c74007345434b5f696e666f007345434b5f656e747279007345434d5f696e666f00 *7345434d5f656e747279007345434f5f696e666f007345434f5f656e74727900734543455f696e *666f00734543455f656e74727900734543475f696e666f00734543475f656e7472790073454349 *5f325f616c7400734543495f7674626c00734543515f696e666f00734543515f656e7472790072 *456c535f7372740072456c535f636c6f737572650072456c535f696e666f0073454f425f315f61 *6c740073454f445f315f616c740073454f495f315f616c7400734545745f656e7472790073454f *4a5f696e666f0073454f4a5f72657400734545665f696e666f00734545665f656e747279007345 *45375f696e666f00734545375f656e74727900734545685f696e666f00734545685f656e747279 *0073454f4d5f696e666f0073454f4d5f72657400734545355f696e666f00734545355f656e7472 *79007345456a5f696e666f007345456a5f656e74727900734544585f696e666f00734544585f65 *6e747279007345456c5f696e666f007345456c5f656e747279007345456e5f696e666f00734545 *6e5f656e74727900734544565f696e666f00734544565f656e74727900734545705f696e666f00 *734545705f656e7472790073454f495f325f616c740073454f495f7674626c0073454f475f696e *666f0073454f475f7265740073454f455f696e666f0073454f455f7265740073454f445f325f61 *6c740073454f445f7674626c00734545745f696e666f0073454f505f696e666f0073454f505f72 *657400734545455f696e666f00734545455f656e74727900734545555f696e666f00734545555f *656e7472790073454f535f696e666f0073454f535f72657400734545535f696e666f0073454553 *5f656e74727900734545575f696e666f00734545575f656e747279007345454c5f696e666f0073 *45454c5f656e74727900734545595f696e666f00734545595f656e74727900734546305f696e66 *6f00734546305f7265740073454f565f315f616c7400734546645f696e666f00734546645f656e *7472790073454f595f315f616c74007345466d5f696e666f007345466d5f656e7472790073454f *595f325f616c740073454f595f7674626c0073454f575f696e666f0073454f575f726574007245 *6c535f656e7472790073454f565f325f616c740073454f565f7674626c0073454f525f696e666f *0073454f525f7265740073454f435f696e666f0073454f435f7265740073454f425f325f616c74 *0073454f425f7674626c00734547675f73727400734547675f636c6f7375726500734547675f69 *6e666f0073454c655f696e666f0073454c655f72657400734547385f696e666f00734547385f65 *6e74727900734547615f696e666f00734547615f656e74727900734547635f696e666f00734547 *635f656e7472790073454c6f5f315f616c740073454c725f315f616c740073454c735f696e666f *0073454c735f7265740073454c725f325f616c740073454c725f7674626c0073454c705f696e66 *6f0073454c705f7265740073454c6f5f325f616c740073454c6f5f7674626c0073454c6d5f696e *666f0073454c6d5f72657400734546555f696e666f00734546555f656e74727900734546575f69 *6e666f00734546575f656e74727900734547655f696e666f00734547655f656e74727900734547 *675f656e7472790072456c555f7372740072456c555f636c6f737572650072456c555f696e666f *007345476f5f315f616c7400734547715f696e666f00734547715f656e74727900734547455f69 *6e666f00734547455f656e74727900734547475f696e666f00734547475f656e7472790072456c *555f656e747279007345476f5f325f616c74007345476f5f7674626c00734548795f7372740073 *4548795f636c6f7375726500734548795f696e666f0073454b585f696e666f0073454b585f7265 *74007345486f5f696e666f007345486f5f656e74727900734548715f696e666f00734548715f65 *6e74727900734548735f696e666f00734548735f656e7472790073454c375f315f616c74007345 *4c615f315f616c740073454c625f696e666f0073454c625f7265740073454c615f325f616c7400 *73454c615f7674626c0073454c385f696e666f0073454c385f7265740073454c375f325f616c74 *0073454c375f7674626c0073454c355f696e666f0073454c355f72657400734548615f696e666f *00734548615f656e74727900734548635f696e666f00734548635f656e74727900734548755f69 *6e666f00734548755f656e74727900734548775f696e666f00734548775f656e74727900734547 *4c5f696e666f007345474c5f656e74727900734548795f656e747279007345474a5f7372740073 *45474a5f636c6f73757265007345474a5f696e666f007345474a5f656e7472790073454b545f69 *6e666f0073454b545f7265740073454b505f696e666f0073454b505f7265740073454b4c5f696e *666f0073454b4c5f7265740073454b485f696e666f0073454b485f7265740073454b475f696e66 *6f0073454b475f7265740073454b435f315f616c740073454b465f696e666f0073454b465f7265 *740073454b445f315f616c740073454b455f696e666f0073454b455f7265740073454b445f325f *616c740073454b445f7674626c0073454b435f325f616c740073454b435f7674626c0073454b42 *5f315f616c740073454b425f325f616c740073454b425f335f616c740073454b425f7674626c00 *73454b415f315f616c740073454b415f325f616c740073454b415f7674626c0073454b7a5f315f *616c740073454b7a5f325f616c740073454b7a5f7674626c0073454b795f696e666f0073454b79 *5f7265740073454b785f696e666f0073454b785f7265740073454b775f696e666f0073454b775f *7265740073454b765f696e666f0073454b765f726574005f6d6f64756c655f7265676973746572 *656400733758575f696e666f00733758575f736c6f7700733758575f656e74727900733871305f *315f616c7400733871305f325f616c7400733871305f7674626c00733871335f315f616c740073 *3871335f325f616c7400733871335f7674626c007337594e5f696e666f007337594e5f736c6f77 *007337594e5f656e74727900733870545f315f616c7400733870545f325f616c7400733870545f *7674626c00733759795f72657400733870575f315f616c7400733870575f325f616c7400733870 *575f7674626c00733833565f696e666f00733833565f736c6f7700733833565f656e7472790073 *3870645f315f616c7400733870645f325f616c7400733870645f7674626c00733833475f696e66 *6f00733833475f72657400733870675f315f616c7400733870675f325f616c7400733870675f76 *74626c0053797374656d7a69506f7369787a6946696c65735f73657446696c6554696d65735f73 *727400733839485f696e666f00733839745f736c6f7700733839745f656e7472790073386f465f *696e666f0073386f465f72657400733839745f696e666f0073386f455f696e666f0073386f455f *72657400733839765f696e666f00733839765f656e7472790073386f475f696e666f0073386f47 *5f7265740073386f445f696e666f0073386f445f7265740073386f435f696e666f0073386f435f *7265740073386f415f696e666f0073386f415f72657400733839485f656e747279005379737465 *6d7a69506f7369787a6946696c65735f73657446696c654d6f64655f737274007338616b5f696e *666f00733861695f696e666f00733861695f656e747279007338616b5f656e7472790053797374 *656d7a69506f7369787a6946696c65735f67657446696c655374617475735f7372740073386f70 *5f696e666f007338626e5f736c6f770073386f735f696e666f0073386f735f7265740073386f72 *5f696e666f0073386f725f7265740073386f745f696e666f0073386f745f7265740073386f715f *696e666f0073386f715f7265740073386f705f7265740053797374656d7a69506f7369787a6946 *696c65735f7468726f774572726e6f49664d696e7573317a755f7372740053797374656d7a6950 *6f7369787a6946696c65735f7468726f774572726e6f49664d696e7573317a75315f7372740073 *3234595f696e666f00733235365f696e666f007332356c5f696e666f00733262335f696e666f00 *733261585f696e666f00733261585f72657400733234595f656e74727900733235365f736c6f77 *00733235365f656e747279007332356c5f736c6f77007332356c5f656e74727900733262315f69 *6e666f00733262315f72657400733262305f696e666f00733262305f72657400733262335f736c *6f7700733262335f656e74727900733236385f696e666f00733236385f736c6f7700733236385f *656e74727900733261525f696e666f00733261525f72657400733235555f696e666f0073323555 *5f656e74727900733235485f736c6f7700733235485f656e74727900733235485f696e666f0073 *3261565f696e666f00733261565f72657400733261555f696e666f00733261555f726574007332 *61515f696e666f00733261515f72657400733145665f696e666f00733145665f72657400733145 *635f696e666f00733178665f696e666f00733178665f656e74727900733145635f726574007331 *45375f7674626c00733145375f315f616c7400733145385f696e666f00733145385f7265740073 *3145375f325f616c7400733145325f7674626c00733145335f696e666f00733145335f72657400 *733145325f315f616c7400733145325f325f616c7400733144525f696e666f00733144525f7265 *74007331426d5f696e666f007331426b5f696e666f007331426d5f656e747279007331426b5f65 *6e74727900733142775f7674626c00733142775f64666c7400733142565f696e666f0073314244 *5f696e666f00733142545f696e666f00733142565f656e74727900733142445f656e7472790073 *3142505f696e666f00733142505f656e74727900733142525f696e666f00733142525f656e7472 *7900733142545f656e74727900733143355f7674626c00733143355f64666c74007343665f696e *666f0073436e5f696e666f007345435f315f616c74007345435f325f616c74007345435f767462 *6c0073457a5f315f616c74007345415f315f616c74007345415f325f616c74007345415f767462 *6c0073457a5f325f616c740073457a5f7674626c007343665f656e7472790073436c5f64666c74 *0073436c5f7674626c0073436e5f656e74727900733539495f7674626c00733539495f315f616c *74007334716c5f315f616c74007334716e5f696e666f007334716e5f656e747279007334716c5f *325f616c74007334716c5f7674626c00733539495f325f616c7400733471785f7674626c007334 *71785f315f616c7400733539445f696e666f00733539445f72657400733471455f696e666f0073 *3471455f656e74727900733539455f696e666f00733539455f72657400733471515f696e666f00 *733471515f656e74727900733471785f325f616c7400733539415f7674626c00733539415f315f *616c7400733472305f696e666f00733472305f656e74727900733539415f325f616c7400733472 *615f7674626c00733472615f315f616c7400733539745f696e666f00733539745f726574007334 *72685f696e666f00733472685f656e74727900733539775f315f616c7400733539775f325f616c *7400733539775f7674626c00733539755f696e666f00733539755f72657400733472785f696e66 *6f00733472785f656e74727900733472615f325f616c74007335304f5f7674626c007335304f5f *315f616c7400733455435f315f616c7400733455455f696e666f00733455455f656e7472790073 *3455435f325f616c7400733455435f7674626c007335304f5f325f616c7400733459385f696e66 *6f00733459385f656e74727900733530725f315f616c7400733459635f696e666f00733459635f *656e74727900733530735f315f616c7400733530735f325f616c7400733530735f7674626c0073 *3530725f325f616c7400733530725f7674626c00733459455f726574007335306d5f315f616c74 *007335306e5f315f616c7400733530715f315f616c7400733530715f325f616c7400733530715f *7674626c007335306f5f696e666f007335306f5f726574007335306e5f325f616c74007335306e *5f7674626c007335306d5f325f616c74007335306d5f7674626c00733459455f696e666f007334 *59525f696e666f007334594f5f7674626c00733459525f656e747279007334594f5f64666c7400 *733530675f7674626c00733530675f315f616c7400733530675f325f616c740073576d5f767462 *6c0073576d5f315f616c740073576e5f315f616c74007353615f696e666f007353615f656e7472 *790073576e5f325f616c740073576e5f7674626c0073576d5f325f616c74007357675f7674626c *007357675f315f616c74007357675f325f616c7400446174617a694d617962655f66726f6d4a75 *73745f737274007357665f7674626c007357665f315f616c74007357665f325f616c7400735764 *5f7674626c007357645f315f616c74007357645f325f616c74007357615f7674626c007357615f *315f616c74007357615f325f616c74007354575f696e666f007355345f696e666f007354485f69 *6e666f007354485f726574007354475f696e666f007354475f726574007354435f315f616c7400 *7354505f696e666f007354505f7265740073544f5f696e666f0073544f5f7265740073544d5f31 *5f616c740073544d5f325f616c740073544d5f7674626c007354435f325f616c74007354435f76 *74626c007354575f656e747279007355325f64666c74007355325f7674626c007355345f656e74 *72790073384a705f696e666f0073384a785f696e666f0073384a6e5f696e666f0073384a6e5f65 *6e7472790073384a695f64666c74007367666f5f696e666f007367666f5f726574007367666e5f *696e666f007367666e5f7265740073384a705f656e7472790073384a765f64666c740073384a76 *5f7674626c0073384a785f656e747279007367634d5f696e666f007367634d5f72657400736763 *4b5f696e666f007367634b5f72657400446174617a695479706561626c655f6d6b5479436f6e5f *737274007337694f5f696e666f007337694f5f72657400446174617a695479706561626c655f6d *6b41707054795f73727400733769735f696e666f00733769735f72657400733359355f696e666f *00733436415f696e666f00733359325f696e666f00733359325f656e74727900733436645f696e *666f00733436645f72657400733359355f656e74727900733436785f315f616c7400733436795f *696e666f00733436795f72657400733436785f325f616c7400733436785f7674626c0073343676 *5f696e666f00733436765f726574007334366d5f696e666f007334366d5f726574007334366c5f *696e666f007334366c5f72657400733436415f656e7472790073354b645f315f616c740073354b *655f696e666f0073354b655f7265740073354b645f325f616c740073354b645f7674626c007335 *4b685f7265740073354b665f696e666f0073354b665f7265740073354b625f696e666f0073354b *625f72657400733545495f696e666f00733545495f72657400733250525f696e666f0073326951 *5f696e666f00733269515f656e74727900733250525f7265740073326f425f696e666f0073326f *425f7265740073324f4d5f7674626c0073324f4d5f315f616c740073324f4d5f325f616c740073 *324e595f696e666f0073324f365f315f616c740073324f365f325f616c740073324f365f767462 *6c0073324e595f7265740073324e4f5f696e666f0073324e575f315f616c740073324e575f325f *616c740073324e575f7674626c0073324e4f5f7265740073324e455f696e666f0073324e4d5f31 *5f616c740073324e4d5f64666c740073324e4d5f7674626c0073324e455f7265740073324e755f *696e666f0073324e435f315f616c740073324e435f64666c740073324e435f7674626c0073324e *755f7265740073324e6b5f696e666f0073324e735f335f616c740073324e735f64666c74007332 *4e735f7674626c0073324e6b5f7265740073324e695f335f616c740073324e695f64666c740073 *324e695f7674626c0073324e615f7265740073324e315f7674626c0073324e315f315f616c7400 *73324e315f325f616c740073324e305f7674626c0073324e305f315f616c740073324e305f325f *616c74007332776e5f696e666f007332776e5f656e74727900733277705f696e666f0073327770 *5f656e747279007332516e5f7674626c007332516f5f315f616c74007332516f5f325f616c7400 *7332516f5f7674626c007332516e5f315f616c7400733251725f315f616c7400733251745f696e *666f00733251745f72657400733251735f696e666f00733251735f72657400733251725f325f61 *6c7400733251725f7674626c007332516e5f325f616c740073324d535f696e666f0073324d555f *315f616c740073324d555f325f616c740073324d555f7674626c0073324d535f72657400733241 *705f696e666f0073324d4f5f315f616c740073324d4f5f325f616c740073324d4f5f7674626c00 *73324d4e5f315f616c740073324d525f315f616c74007332416d5f64666c74007332416d5f7674 *626c0073324d525f325f616c740073324d525f7674626c0073324d4e5f325f616c740073324d4e *5f7674626c00733241705f656e74727900733242335f696e666f007332426b5f696e666f007332 *426d5f696e666f007332426f5f696e666f0073324d4a5f315f616c740073324d4a5f325f616c74 *0073324d4a5f7674626c0073324d495f315f616c740073324d4d5f315f616c7400733242305f32 *5f616c7400733242335f656e74727900733242305f64666c7400733242305f7674626c0073324d *4d5f325f616c740073324d4d5f7674626c0073324d495f325f616c740073324d495f7674626c00 *7332426b5f656e747279007332426d5f656e747279007332426f5f656e74727900733243705f69 *6e666f00733243705f656e74727900733243725f696e666f00733243725f656e74727900733243 *4a5f696e666f007332434a5f656e747279007332434c5f696e666f007332434c5f656e74727900 *733245385f696e666f00733245385f656e7472790073324d785f315f616c740073324d785f325f *616c740073324d785f7674626c0073324d795f7674626c0073324d795f315f616c740073324572 *5f696e666f00733245725f656e7472790073324d795f325f616c740073324d7a5f7674626c0073 *324d7a5f315f616c7400733245445f696e666f00733245445f656e7472790073324d7a5f325f61 *6c740073324d735f696e666f0073324d735f7265740073324d635f696e666f0073324d635f7265 *740073324d385f696e666f0073324d385f7265740073324d345f696e666f0073324d345f726574 *0073324c475f696e666f0073324c475f7265740073324b4d5f726574004748437a694572725f70 *61744572726f725f73727400733131565f696e666f00733131565f656e747279004748437a6948 *616e646c655f7374646572725f737274004748437a6948616e646c655f7374646f75745f737274 *004748437a6948616e646c655f68436c6f73655f73727400736342735f7674626c00736342735f *315f616c740073646b345f696e666f0073646b345f72657400736342735f325f616c7400474843 *7a6948616e646c655f68466c7573685f737274004748437a6948616e646c655f6f70656e42696e *61727946696c655f73727400736464735f696e666f00736464325f696e666f007364654e5f696e *666f007364654e5f726574007364646d5f696e666f007364646d5f656e74727900736464375f69 *6e666f00736464375f72657400736464735f656e74727900736464325f656e747279004748437a *69494f5f684765744275665f737274007361336e5f696e666f007361336e5f726574004748437a *69494f5f685075744275665f73727400736133645f696e666f00736133655f696e666f00736133 *655f72657400736133645f726574004748437a69494f5f685075745374725f7372740073613254 *5f696e666f00736132565f315f616c7400736132565f325f616c7400736132565f335f616c7400 *736132565f7674626c00736132555f696e666f00736132555f72657400736132545f7265740073 *37756a5f696e666f007337756a5f72657400736268565f7674626c00736268565f315f616c7400 *736145325f696e666f00736145325f72657400736268565f325f616c7400736145675f696e666f *00736145675f72657400736268535f696e666f00736268535f72657400736268525f696e666f00 *736268525f72657400736268505f696e666f00736268515f696e666f00736268515f7265740073 *6268505f726574007362684e5f696e666f007362684f5f696e666f007362684f5f726574007362 *684e5f726574007362684c5f696e666f007362684d5f696e666f007362684d5f72657400736268 *4c5f7265740073324f515f7674626c0073324f515f315f616c740073324f515f325f616c740073 *324f485f7674626c0073324f485f315f616c740073324f485f325f616c740073324e7a5f696e66 *6f0073324e7a5f72657400733278675f696e666f00733278675f656e7472790073324f785f7674 *626c0073324f785f315f616c740073324f795f315f616c740073324f7a5f315f616c7400733279 *6d5f696e666f007332796d5f656e7472790073324f7a5f325f616c740073324f7a5f7674626c00 *73324f795f325f616c740073324f795f7674626c0073324f785f325f616c7400733241615f696e *666f00733241615f656e7472790073324e705f315f616c7400733241385f64666c740073324138 *5f7674626c0073324e705f325f616c740073324e705f7674626c004748437a694c6973745f6d61 *78696d756d5f7372740073324e355f7674626c0073324e355f315f616c740073324e365f315f61 *6c740073324e375f696e666f0073324e375f7265740073324e365f325f616c7400733242685f72 *65740073324e365f7674626c0073324e355f325f616c74007332424b5f7265740073324e345f31 *5f616c740073324e345f325f616c740073324e345f7674626c0073324e325f696e666f0073324e *325f7265740073324e315f696e666f0073324e315f726574007332424b5f696e666f0073324377 *5f7265740073324d535f315f616c740073324d565f315f616c740073324d565f325f616c740073 *324d565f7674626c0073324d545f7265740073324d535f325f616c740073324d535f7674626c00 *733243775f696e666f0073324f735f7674626c0073324f735f315f616c740073324f745f315f61 *6c740073324f745f325f616c740073324f745f7674626c0073324f735f325f616c740073324f71 *5f7674626c0073324f715f315f616c740073324f725f315f616c740073324f725f325f616c7400 *73324f725f7674626c0073324f715f325f616c740073324f675f696e666f0073324f675f726574 *00733244415f7674626c00733244415f315f616c7400733244465f696e666f00733244465f656e *7472790073324f685f315f616c740073324f685f325f616c740073324f685f7674626c00733244 *415f325f616c740073324f615f696e666f0073324f615f726574007332457a5f7674626c007332 *457a5f315f616c740073324f625f315f616c74007332456a5f696e666f007332456a5f656e7472 *790073324f625f325f616c740073324f625f7674626c007332457a5f325f616c740073324d4e5f *696e666f0073324d4e5f7265740073324d4b5f696e666f0073324d4b5f72657400733247355f76 *74626c00733247355f315f616c740073324f375f315f616c740073324f375f325f616c74007332 *4f375f7674626c00733247355f325f616c740073324d475f696e666f00733247535f696e666f00 *733247535f656e7472790073324d475f7265740073324a4a5f696e666f0073324a4a5f72657400 *4748437a694c6973745f696e69745f737274004748437a694c6973745f6c6173745f7372740047 *48437a694c6973745f7461696c5f7372740073324d765f7674626c0073324d765f315f616c7400 *73324d765f325f616c740073324d705f7674626c0073324d705f315f616c740073324d715f315f *616c740073324c615f696e666f0073324c615f656e7472790073324d715f325f616c740073324d *715f7674626c0073324d705f325f616c740073324d725f7674626c0073324d725f315f616c7400 *73324d735f315f616c740073324d735f325f616c740073324d735f7674626c0073324d725f325f *616c740073324d6e5f7674626c0073324d6e5f315f616c740073324d6f5f315f616c740073324c *4b5f696e666f0073324c4b5f656e7472790073324d6f5f325f616c740073324d6f5f7674626c00 *73324d6e5f325f616c740073324d6b5f7674626c0073324d6b5f315f616c740073324d6c5f315f *616c740073324d6d5f315f616c740073324d6d5f325f616c740073324d6d5f7674626c0073324d *645f696e666f0073324d645f656e7472790073324d6c5f325f616c740073324d6c5f7674626c00 *73324d315f696e666f0073324d315f656e7472790073324d6a5f696e666f0073324d6a5f656e74 *72790073324d6b5f325f616c74007358425f696e666f007358425f726574004748437a69526561 *645f63686f6f73655f73727400733665635f696e666f00733665635f656e7472790073364d675f *345f616c740073364d675f64666c7400733665425f656e74727900733665445f696e666f007336 *65445f656e74727900733665465f696e666f00733665465f656e747279007336654a5f696e666f *007336654a5f656e747279007336654f5f696e666f007336654f5f656e74727900733665555f69 *6e666f00733665555f656e747279004748437a69526561645f706172656e735f73727400733667 *655f696e666f00733667655f656e747279007336676b5f64666c74007336676b5f7674626c0073 *3667355f656e747279004748437a69526561645f6c6578505f737274004748437a69526561645f *726561645f7372740073366d585f64666c740073366d585f7674626c0073366e305f696e666f00 *73366e305f656e7472790073364b645f315f616c740073364b655f315f616c740073364b655f32 *5f616c740073364b655f7674626c0073364b645f325f616c740073364b645f7674626c0073364b *395f7265740073364b315f696e666f0073364b315f726574004748437a69526561645f72656164 *4c6973745072656344656661756c745f73727400733674645f696e666f0073364a705f696e666f *0073364a705f72657400733674645f656e74727900733674765f696e666f0073364a6c5f696e66 *6f0073364a6c5f72657400733674765f656e747279004748437a69526561645f7a646652656164 *4d617962655f73727400733675785f696e666f00733675795f696e666f007336757a5f696e666f *00733674555f696e666f00733674555f656e74727900733674595f696e666f00733674595f656e *7472790073364a695f315f616c7400733675375f696e666f00733675375f656e7472790073364a *695f325f616c740073364a695f7674626c00733675335f64666c7400733675335f7674626c0073 *364a685f345f616c740073364a685f64666c740073364a685f7674626c00733674465f696e666f *00733674465f656e7472790073364a6b5f315f616c740073364a6b5f325f616c740073364a6b5f *7674626c007336744b5f64666c74007336744b5f7674626c0073364a6a5f345f616c740073364a *6a5f64666c740073364a6a5f7674626c007336744f5f696e666f007336744f5f656e7472790073 *3674515f696e666f00733674515f656e74727900733675785f656e74727900733675795f656e74 *7279007336757a5f656e747279004748437a69526561645f7a6466526561645a4d5a4e5f737274 *00733677625f696e666f00733677685f696e666f00733677695f696e666f007336776a5f696e66 *6f00733677625f656e74727900733677685f656e74727900733677695f656e747279007336776a *5f656e747279004748437a69526561645f7a6466526561645a32545f73727400733679425f696e *666f00733679435f696e666f00733679445f696e666f007336784e5f696e666f007336784e5f65 *6e7472790073364a305f315f616c74007336796b5f696e666f007336796b5f656e747279007336 *4a335f315f616c740073364a335f325f616c740073364a335f7674626c0073364a315f72657400 *73364a305f325f616c740073364a305f7674626c007336495a5f335f616c74007336495a5f6466 *6c74007336495a5f7674626c007336796d5f696e666f007336796d5f656e74727900733679705f *696e666f00733679705f656e747279007336784a5f696e666f007336784a5f656e747279007336 *79725f696e666f00733679725f656e74727900733679745f696e666f00733679745f656e747279 *00733679425f656e74727900733679435f656e74727900733679445f656e74727900733648485f *696e666f00733648485f72657400733646315f696e666f00733646615f696e666f00733646615f *7265740073354a545f656e74727900733646315f7265740073326d6e5f7674626c0073326d6e5f *315f616c7400733263715f696e666f00733263715f656e7472790073326d6f5f696e666f007332 *6d6f5f656e7472790073326d6e5f325f616c74004748437a6953686f775f73686f774c6973747a *757a755f7372740073326d6c5f7674626c0073326d6c5f315f616c740073326d6d5f315f616c74 *00733264355f696e666f00733264355f656e7472790073326d6d5f325f616c740073326d6d5f76 *74626c00733264305f696e666f00733264305f656e74727900733264395f696e666f0073326439 *5f656e74727900733264625f696e666f00733264625f656e7472790073326d6c5f325f616c7400 *7332654d5f696e666f007332654d5f656e747279004748437a6953686f775f7a646653686f775a *4d5a4e5f73727400733265575f696e666f00733266305f696e666f00733266365f696e666f0073 *3266375f696e666f00733265575f656e74727900733266305f656e74727900733266365f656e74 *727900733266375f656e747279004748437a6953686f775f7a646653686f774d617962655f7372 *7400733266485f696e666f007332664d5f696e666f007332664e5f696e666f00733266465f6466 *6c7400733266465f7674626c0073326d335f315f616c7400733266415f696e666f00733266415f *656e74727900733266755f696e666f00733266755f656e74727900733266775f696e666f007332 *66775f656e74727900733266435f696e666f00733266435f656e7472790073326d335f325f616c *740073326d335f7674626c00733266485f656e747279007332664d5f656e747279007332664e5f *656e747279004748437a6953686f775f7a646653686f775a32545f73727400733267485f696e66 *6f007332674c5f696e666f00733268655f696e666f007332686c5f696e666f00733267485f656e *747279007332674c5f656e74727900733268355f696e666f00733268355f656e74727900733268 *375f696e666f00733268375f656e74727900733268395f696e666f00733268395f656e74727900 *733267565f696e666f00733267565f656e7472790073326d315f696e666f0073326d315f726574 *00733268655f656e747279007332686c5f656e7472790073326c565f696e666f0073326c565f72 *65740073326c505f696e666f0073326c505f726574004748437a69546f7048616e646c65725f72 *756e494f5f737274004748437a69556e69636f64655f746f4c6f7765725f737274007332504a5f *696e666f007332504a5f72657400733250485f696e666f00733250485f72657400733250455f72 *657400733250435f696e666f00733250435f72657400733250735f696e666f00733250735f7265 *74007346595f696e666f007346595f7265740053797374656d7a69436d645f7261775379737465 *6d5f73727400733356575f696e666f00733356795f736c6f7700733356795f656e747279007333 *57565f696e666f00733357565f72657400733356795f696e666f00733357555f696e666f007333 *57555f72657400733357545f696e666f00733357545f72657400733356415f696e666f00733356 *415f656e747279007333564c5f696e666f007333564c5f72657400733357575f696e666f007333 *57575f72657400733356525f696e666f00733356525f656e74727900733356555f696e666f0073 *3356555f656e74727900733356575f656e7472790053797374656d7a69436d645f73797374656d *5f737274007333574b5f7674626c007333574b5f315f616c74007333574b5f325f616c74005379 *7374656d7a694469726563746f72795f6765744469726563746f7279436f6e74656e74735f7372 *740073396a595f696e666f0073396a4a5f696e666f0073396a535f696e666f0073396a535f656e *7472790073396a4f5f696e666f0073396a4f5f7265740073396a595f656e7472790073396a4a5f *736c6f770073396a4a5f656e7472790073396a775f736c6f770073396a775f656e747279007339 *6a355f696e666f0073396a355f656e7472790073396a375f696e666f0073396a375f656e747279 *0073394b6f5f696e666f0073394b6f5f7265740073396a675f696e666f0073396a675f656e7472 *7900733969595f736c6f7700733969595f656e7472790073394b725f696e666f0073394b725f72 *657400733969595f696e666f0073396a325f736c6f770073396a325f656e7472790073396a325f *696e666f0073396a6e5f696e666f0073396a6e5f656e7472790073394b745f696e666f0073394b *745f7265740073394b735f696e666f0073394b735f7265740073394b6e5f696e666f0073394b6e *5f7265740073396a775f696e666f0073394b765f696e666f0073394b765f7265740073394b6c5f *696e666f0073394b6c5f7265740053797374656d7a694469726563746f72795f63726561746544 *69726563746f72795f7372740053797374656d7a694469726563746f72795f72656d6f76654469 *726563746f72795f737274007339706f5f696e666f00733970395f696e666f00733970695f696e *666f00733970695f656e74727900733970655f696e666f00733970655f726574007339706f5f65 *6e74727900733970395f656e7472790053797374656d7a694469726563746f72795f72656d6f76 *6546696c655f73727400733970515f696e666f00733970425f696e666f007339704b5f696e666f *007339704b5f656e74727900733970475f696e666f00733970475f72657400733970515f656e74 *727900733970425f656e7472790053797374656d7a694469726563746f72795f67657443757272 *656e744469726563746f72795f7372740073394a635f696e666f0073394a675f696e666f007339 *4a675f7265740073394a665f696e666f0073394a665f7265740073394a645f696e666f0073394a *645f7265740073394a635f7265740053797374656d7a694469726563746f72795f646f65734469 *726563746f727945786973745f737274007339417a5f696e666f007339417a5f656e7472790053 *797374656d7a694469726563746f72795f646f657346696c6545786973745f7372740073394151 *5f696e666f00733941515f656e7472790053797374656d7a69456e7669726f6e6d656e745f6765 *74456e765f73727400733634535f696e666f00733662325f696e666f00733662325f7265740073 *3634535f656e74727900733661545f696e666f00733635565f696e666f00733635565f656e7472 *7900733662305f696e666f00733662305f72657400733661565f696e666f00733661565f726574 *00733661545f726574007336614b5f696e666f00733661535f696e666f00733661535f72657400 *733661525f696e666f00733661525f726574007336614f5f696e666f007336614f5f7265740073 *36614b5f7265740053797374656d7a69457869745f65786974576974685f73727400733166335f *696e666f00733165575f315f616c7400733166665f736c6f7700733166665f656e747279007331 *66665f696e666f00733166645f696e666f00733166645f72657400733165575f325f616c740073 *3165575f7674626c00733166335f656e7472790053797374656d7a69494f5f685075745374724c *6e5f73727400733530715f696e666f00733530715f7265740053797374656d7a69494f5f777269 *746546696c655f73727400733530365f696e666f00733530375f696e666f00733530375f726574 *00733530365f7265740053797374656d7a69494f5f7265616446696c655f73727400733530355f *7265740053797374656d7a69494f5f7075745374724c6e5f7372740073345a5a5f696e666f0073 *345a5a5f7265740053797374656d7a69494f5f7075745374725f7372740073316a355f696e666f *0073316a355f726574007331684f5f696e666f007331684f5f736c6f77007331684f5f656e7472 *7900733169305f696e666f00733169305f7265740053797374656d7a69506f7369787a69496e74 *65726e616c735f637a756765747069645f7372740073384f685f696e666f007338436f5f736c6f *77007338436f5f656e7472790073384f685f7265740073384f325f696e666f007338454b5f736c *6f77007338454b5f656e7472790073384f345f696e666f0073384f345f726574007338454b5f69 *6e666f0073384f335f696e666f0073384f335f7265740073384f325f726574007331486e5f7674 *626c007331486f5f315f616c7400733177415f64666c7400733177415f7674626c007331486f5f *325f616c74007331486f5f7674626c007331486e5f315f616c7400733177735f64666c74007331 *77735f7674626c007331486e5f325f616c74007331486e5f335f616c74007331776f5f696e666f *007331776f5f656e747279007331486e5f345f616c74007331486e5f355f616c7400546578747a *69506172736572436f6d62696e61746f72737a6952656164505f6d706c75735f73727400733148 *6c5f7674626c0073317a385f696e666f0073317a385f656e74727900733178755f345f616c7400 *7331787a5f335f616c7400733178785f335f616c7400733179635f64666c7400733179635f7674 *626c00733179665f696e666f00733179665f656e74727900733179685f696e666f00733179685f *656e74727900733178425f355f616c7400733178555f64666c7400733178555f7674626c007331 *78585f696e666f00733178585f656e74727900733178565f315f616c7400733179325f64666c74 *00733179325f7674626c00733179375f696e666f00733179375f656e74727900733178565f325f *616c7400733178565f7674626c00733178475f325f616c7400733148675f315f616c7400733178 *4d5f696e666f007331784d5f656e74727900733148675f325f616c7400733148675f7674626c00 *733178475f64666c7400733178475f7674626c00733178425f64666c7400733178425f7674626c *007331796a5f696e666f007331796a5f72657400733179585f64666c7400733179585f7674626c *00733179565f64666c7400733179565f7674626c0073317a305f696e666f0073317a305f656e74 *72790073317a325f696e666f0073317a325f656e747279007331486a5f355f616c74007331486a *5f64666c74007331486a5f7674626c00733148695f325f616c7400733179745f696e666f007331 *79745f656e74727900733179765f696e666f00733179765f656e74727900733179785f696e666f *00733179785f656e74727900733179715f315f616c7400733179485f64666c7400733179485f76 *74626c007331794a5f696e666f007331794a5f656e747279007331794c5f696e666f007331794c *5f656e747279007331794e5f696e666f007331794e5f656e74727900733179715f325f616c7400 *733179425f696e666f00733179425f656e74727900733179715f355f616c7400733179715f7674 *626c00733148695f355f616c7400733148695f64666c7400733148695f7674626c00733178785f *64666c7400733178785f7674626c007331787a5f64666c74007331787a5f7674626c0073317875 *5f64666c7400733178755f7674626c0073317a615f696e666f0073317a615f7265740073317a70 *5f64666c740073317a705f7674626c0073317a755f696e666f0073317a755f656e747279007331 *486d5f315f616c74007331486d5f64666c74007331486d5f7674626c007331486c5f315f616c74 *0073317a685f696e666f0073317a685f656e747279007331486c5f345f616c74007331486c5f64 *666c7400546578747a69506172736572436f6d62696e61746f72737a6952656164505f736b6970 *5f73727400733148315f7674626c00733148315f315f616c7400733148325f315f616c74007331 *45795f696e666f00733145795f656e74727900733145485f696e666f00733145485f656e747279 *00733148335f696e666f00733148335f656e74727900733148325f325f616c7400733148325f76 *74626c00733148315f325f616c7400546578747a69506172736572436f6d62696e61746f72737a *6952656164507265635f7a707a707a705f737274007331737a5f696e666f00733171385f64666c *7400733171385f7674626c007331737a5f656e74727900733173775f696e666f00733173755f69 *6e666f00733173755f72657400733173745f696e666f00733173745f72657400733173775f656e *747279007331714f5f696e666f00733173735f696e666f00733173735f726574007331714f5f65 *6e74727900733172305f696e666f00733173715f696e666f00733172305f656e74727900733173 *715f656e747279007331736b5f696e666f007331724e5f696e666f007331724e5f656e74727900 *7331736b5f656e7472790073346b335f696e666f0073346b335f726574007334495a5f7674626c *007334495a5f315f616c740073344a305f315f616c740073346b785f696e666f0073346b785f65 *6e7472790073344a305f325f616c740073344a305f7674626c0073346b415f696e666f0073346b *415f656e747279007334495a5f325f616c740073344a4d5f7674626c0073344a4d5f315f616c74 *0073346b4f5f696e666f0073346b4f5f656e7472790073344a4d5f325f616c740073344a4c5f76 *74626c0073344a4c5f315f616c740073346b595f696e666f0073346b595f656e7472790073344a *4c5f325f616c7400546578747a695072657474795072696e747a69487567686573504a5f667365 *705f73727400733449555f7674626c00733449555f315f616c74007334736b5f64666c74007334 *736b5f7674626c00733449555f325f616c7400546578747a695072657474795072696e747a6948 *7567686573504a5f7365705f73727400733449535f7674626c00733449535f315f616c74007334 *76645f64666c7400733476645f7674626c00733449535f325f616c7400546578747a6950726574 *74795072696e747a69487567686573504a5f72656e6465725f73727400546578747a6952656164 *7a694c65785f6137305f73727400733661515f696e666f007336396f5f696e666f00733661495f *696e666f00733661495f656e74727900733661475f64666c7400733661475f7674626c00733661 *4b5f656e74727900733665355f315f616c7400733665365f315f616c7400733665365f325f616c *7400733665365f7674626c00733661415f656e74727900733665355f325f616c7400733665355f *7674626c00733661435f696e666f00733661435f656e747279007336614d5f656e747279007336 *65375f315f616c7400733665375f325f616c7400733665375f7674626c007336616a5f656e7472 *79007336614f5f656e74727900733661305f696e666f00733661305f656e74727900733665385f *696e666f00733665385f72657400733661385f696e666f00733661385f656e7472790073366151 *5f656e74727900733639355f696e666f00733639355f656e74727900733639645f696e666f0073 *3639645f656e74727900733639665f696e666f00733639665f72657400733665645f696e666f00 *733665645f72657400733665635f315f616c7400733665635f325f616c7400733665635f767462 *6c007336396f5f656e74727900733665665f696e666f00733665665f72657400733639795f696e *666f00733639795f656e74727900733639415f656e74727900733639495f696e666f0073363949 *5f726574007336394b5f656e74727900733639565f656e74727900546578747a69526561647a69 *4c65785f6c65785f73727400733662615f696e666f00733662655f696e666f007336626a5f696e *666f00733662385f696e666f00733662385f656e74727900733661585f656e7472790073366532 *5f315f616c7400733665325f325f616c7400733665325f7674626c00733662345f656e74727900 *733662615f656e74727900733662655f656e747279007336626a5f656e74727900733174335f69 *6e666f00733174335f656e74727900733145755f315f616c7400733174355f696e666f00733174 *355f656e74727900733145755f325f616c7400733145755f7674626c007331744f5f696e666f00 *7331744c5f696e666f007331744c5f656e747279007331744f5f656e74727900733536785f696e *666f00733536785f72657400446174617a694d617962655f6c766c315f737274007357345f7674 *626c007357345f315f616c74007357345f325f616c7400446174617a695479706561626c655f7a *64776d6b5479436f6e5f73727400733656545f696e666f00733769565f696e666f00733656545f *736c6f7700733656545f656e74727900733769545f696e666f00733769545f7265740073376953 *5f696e666f00733769535f72657400733769525f315f616c7400733769525f325f616c74007337 *69525f7674626c00733769515f696e666f00733769515f72657400733769505f696e666f007337 *69505f72657400733769565f72657400446174617a695479706561626c655f6c676f5f73727400 *73376b435f7674626c0073376b435f315f616c7400733732635f696e666f00733732635f656e74 *727900733732495f736c6f7700733732495f656e7472790073376b485f696e666f0073376b485f *7265740073376b475f696e666f0073376b475f7265740073376b465f315f616c740073376b465f *325f616c740073376b465f7674626c0073376b455f696e666f0073376b455f7265740073376b44 *5f696e666f0073376b445f72657400733732495f696e666f007337324b5f696e666f007337324b *5f656e7472790073376b435f325f616c7400446174617a695479706561626c655f7a64776d6b41 *707054795f737274007337336a5f696e666f00733769755f696e666f00733769755f7265740073 *3733665f64666c7400733733665f7674626c007337336a5f726574007337684b5f696e666f0073 *37684c5f696e666f007337684c5f726574007337684b5f72657400733437335f696e666f007333 *576a5f696e666f007333576a5f656e74727900733437335f72657400733542515f696e666f0073 *354b775f696e666f00733542515f656e7472790073354b785f696e666f0073354b785f72657400 *73354b775f726574007335454a5f696e666f007335454c5f696e666f007335454c5f7265740073 *35454a5f72657400733358485f696e666f00733464315f696e666f00733464315f726574007333 *58485f656e74727900733463545f696e666f00733463545f72657400733463535f696e666f0073 *3463535f726574007334634b5f696e666f007334634b5f72657400466f726569676e7a694d6172 *7368616c7a6941727261795f776974684172726179305f73727400733433625f696e666f007334 *62705f696e666f00733462705f726574007334626e5f696e666f007334626e5f72657400733462 *6c5f696e666f007334626c5f726574007334626b5f696e666f007334626b5f726574007334324b *5f696e666f007334324b5f72657400733433625f72657400733579775f7674626c00733579775f *315f616c7400733574525f696e666f00733574525f656e74727900733574545f696e666f007335 *74545f656e74727900733579775f325f616c7400733267615f696e666f00733267625f696e666f *00733267625f72657400733267615f726574007332674d5f696e666f007332674c5f7265740073 *32674d5f72657400733250745f696e666f00733250755f696e666f00733250755f726574007332 *50745f72657400733250725f696e666f00733250725f726574007332506c5f696e666f00733250 *6d5f696e666f007332506d5f726574007332506c5f726574007332506a5f696e666f007332506b *5f696e666f007332506b5f726574007332506a5f72657400733250695f696e666f00733250695f *72657400733250635f696e666f00733250635f72657400733250615f696e666f00733250625f72 *657400733250615f72657400733250385f696e666f00733250395f72657400733250385f726574 *0073324f505f696e666f0073324f515f696e666f0073324f515f7265740073324f505f72657400 *73324f745f696e666f0073324f755f696e666f0073324f755f7265740073324f745f7265740073 *324f725f696e666f0073324f735f696e666f0073324f735f7265740073324f725f726574007332 *4f655f7674626c0073324f665f315f616c740073324f665f325f616c740073324f665f7674626c *0073324f655f315f616c740073324f655f325f616c740073324f635f7674626c0073324f635f31 *5f616c740073324f645f315f616c740073324f645f325f616c740073324f645f7674626c007332 *4f635f325f616c74004748437a69426173655f6c766c335f73727400733245525f696e666f0073 *3245545f696e666f00733245545f72657400733245535f72657400733245525f72657400733245 *505f696e666f00733245515f696e666f00733245515f72657400733245505f726574007332454e *5f696e666f007332454f5f696e666f007332454f5f726574007332454e5f726574007332454d5f *696e666f007332454d5f726574004748437a69456e756d5f73756363355f737274007332454c5f *696e666f007332454c5f726574004748437a69456e756d5f70726564355f737274007332454b5f *696e666f007332454b5f726574004748437a694572725f756e74616e676c655f73727400733130 *515f7674626c00733131315f696e666f00733131315f656e74727900733131335f696e666f0073 *3131335f656e74727900733131355f696e666f00733131355f656e74727900733131375f696e66 *6f00733131375f72657400733132785f315f616c7400733132795f696e666f00733132795f7265 *7400733132785f325f616c7400733132785f7674626c00733132775f696e666f00733132775f72 *657400733130515f64666c74004748437a694572725f756e646566696e65645f73727400734362 *5f696e666f007343625f656e747279004748437a6948616e646c655f7a6477666c757368577269 *74654275666665725f7372740073646f4c5f696e666f0073646f4d5f696e666f0073646f4d5f72 *65740073646f4c5f726574004748437a6948616e646c655f6c766c35325f7372740073646e365f *696e666f0073646e395f315f616c74007363646a5f696e666f007363646a5f656e747279007363 *64685f696e666f00736364685f656e7472790073646e625f696e666f0073646e625f7265740073 *646e395f325f616c740073646e395f7674626c0073646e385f696e666f0073646e385f72657400 *73646e365f726574004748437a6948616e646c655f6c766c35335f7372740073646d4b5f696e66 *6f0073646d4c5f696e666f0073646d4c5f7265740073646d4b5f7265740073636a525f696e666f *0073636a525f736c6f770073636a525f656e7472790073636a795f696e666f0073636a795f656e *7472790073636a735f696e666f0073636a735f7265740073636a425f696e666f0073636a425f72 *65740073636a455f696e666f0073636a455f656e7472790073636a4f5f696e666f0073636a4f5f *7265740073646d785f696e666f0073646d785f7265740073646d775f696e666f0073646d775f72 *65740073646d765f696e666f0073646d765f726574004748437a6948616e646c655f6c766c3732 *5f7372740073646b715f696e666f0073646b725f696e666f0073646b725f7265740073646b715f *726574004748437a6948616e646c655f68436c6f73657a7568656c705f7372740073646b375f76 *74626c0073646b375f315f616c740073646b385f696e666f0073646b385f7265740073646b375f *64666c74004748437a6948616e646c655f77616e745772697461626c6548616e646c657a715f73 *7274007363566f5f696e666f00736468495f315f616c7400736468495f325f616c740073646849 *5f335f616c7400736355795f696e666f00736355795f656e74727900736468505f736c6f770073 *6468505f656e74727900736355535f696e666f00736355535f656e747279007364684e5f696e66 *6f007364684e5f72657400736356645f696e666f00736356645f656e747279007364684d5f696e *666f007364684d5f726574007364684c5f315f616c74007364684c5f325f616c74007364684c5f *7674626c00736356695f696e666f00736356695f726574007364684a5f696e666f007364684a5f *72657400736468505f696e666f00736468495f365f616c7400736468495f64666c740073646849 *5f7674626c007363566f5f656e747279004748437a6948616e646c655f77616e74577269746162 *6c6548616e646c655f73727400736356415f7674626c00736356415f315f616c7400736356415f *325f616c74004748437a6948616e646c655f6f70656e46696c657a715f73727400736461485f69 *6e666f00736462775f696e666f007364636b5f696e666f00736465545f325f616c740073646554 *5f64666c7400736465545f7674626c00736461485f656e74727900736465555f315f616c740073 *6465565f696e666f00736465565f72657400736465555f325f616c7400736465555f7674626c00 *736462395f696e666f00736462395f656e74727900736462755f696e666f00736462755f726574 *00736465585f696e666f00736465585f72657400736465575f315f616c7400736462705f696e66 *6f00736462705f72657400736465595f696e666f00736465595f72657400736465575f325f616c *7400736462665f696e666f00736462665f72657400736466305f696e666f00736466305f726574 *00736465575f335f616c74007364626b5f696e666f007364626b5f726574007364655a5f696e66 *6f007364655a5f72657400736465575f345f616c7400736465575f7674626c00736462775f656e *74727900736462525f736c6f7700736462525f656e74727900736466335f696e666f0073646633 *5f72657400736462525f696e666f00736466355f696e666f00736466355f72657400736463325f *696e666f00736463325f656e74727900736466375f696e666f00736466375f7265740073646636 *5f696e666f00736466365f72657400736463675f696e666f00736463675f656e74727900736463 *345f696e666f00736463345f656e74727900736466345f696e666f00736466345f726574007364 *66325f696e666f00736466325f72657400736466315f696e666f00736466315f72657400736463 *6b5f656e747279004748437a6948616e646c655f6f70656e46696c655f73727400736463535f69 *6e666f00736463735f696e666f00736465515f696e666f00736465515f726574007364634d5f69 *6e666f007364634d5f656e74727900736463785f696e666f00736463785f72657400736463535f *656e74727900736463735f656e747279004748437a69494f5f6c766c355f73727400736135315f *696e666f0073396c775f315f616c7400736135625f696e666f00736135625f7265740073613561 *5f696e666f00736135615f72657400736135395f315f616c7400736135635f696e666f00736135 *635f7265740073396c445f696e666f0073396c445f656e74727900736135395f325f616c740073 *6135395f7674626c0073396c775f64666c740073396c775f7674626c00736135315f7265740047 *48437a69494f5f7a647768507574436861725f7372740073397a435f696e666f007361347a5f69 *6e666f007361347a5f7265740073397a625f696e666f0073397a625f656e7472790073397a6d5f *736c6f770073397a6d5f656e7472790073397a6a5f696e666f0073397a6a5f7265740073397a6d *5f696e666f00736134425f696e666f00736134425f7265740073397a655f696e666f0073397a65 *5f72657400736134415f315f616c7400736134415f325f616c7400736134415f7674626c007361 *34795f696e666f00736134795f72657400736134775f696e666f00736134775f72657400736134 *755f315f616c7400736134755f325f616c7400736134755f335f616c7400736134755f7674626c *0073397a435f656e747279004748437a69494f5f7a6477684765744275665f7372740073394b57 *5f696e666f00736133705f696e666f00736133705f7265740073394b575f656e74727900474843 *7a69494f5f7a6477685075744275667a715f7372740073394c485f696e666f00736133685f696e *666f00736133685f7265740073394c485f656e747279004748437a69494f5f68476574436f6e74 *656e74735f73727400733956495f696e666f00733957675f696e666f007339576b5f7674626c00 *733956495f656e74727900736132585f315f616c7400736132585f325f616c7400736132585f34 *5f616c7400736132585f355f616c74007361325a5f696e666f007361325a5f7265740073395761 *5f696e666f00733957615f656e74727900736132595f696e666f00736132595f72657400736132 *585f64666c7400736132585f7674626c00733957675f656e747279007339576b5f315f616c7400 *7339576b5f325f616c74004748437a69494f5f685075744368617273315f73727400736136345f *7674626c00736136345f315f616c7400736136365f696e666f00736136365f7265740073613635 *5f696e666f00736136355f72657400736136345f325f616c74004748437a69494f5f7772697465 *4c696e6573315f73727400736135535f696e666f004748437a69494f5f7a647777726974654c69 *6e65735f73727400733958545f72657400736135535f72657400733958775f696e666f00733958 *775f656e74727900736136335f72657400733959655f696e666f00733959655f656e7472790073 *6135595f696e666f00736135595f72657400736135585f315f616c7400733959335f696e666f00 *733959335f656e74727900736136325f696e666f00736136325f72657400736136305f696e666f *00736136305f72657400736135585f325f616c7400736135585f7674626c00733958545f696e66 *6f004748437a69494f5f7772697465426c6f636b73315f73727400736135495f696e666f004748 *437a69494f5f7a64777772697465426c6f636b735f7372740073395a705f72657400736135495f *7265740073395a335f696e666f0073395a335f656e74727900736135525f696e666f0073613552 *5f7265740073395a765f696e666f0073395a765f656e747279007361354f5f696e666f00736135 *4f5f726574007361354e5f315f616c7400736135515f696e666f00736135515f72657400736135 *4e5f325f616c74007361354e5f7674626c0073395a705f696e666f00733771755f7674626c0073 *3771775f315f616c7400733771775f325f616c7400733771775f7674626c00733771755f315f61 *6c7400733771765f315f616c7400733771765f325f616c7400733771765f7674626c0073377175 *5f325f616c7400733771345f7674626c00733771395f315f616c7400733771395f325f616c7400 *733771395f7674626c00733771345f315f616c7400733771355f315f616c7400733771375f696e *666f00733771375f72657400733771365f696e666f00733771365f72657400733771355f325f61 *6c7400733771355f7674626c00733771345f325f616c740073365a695f696e666f0073365a695f *656e7472790073376f555f696e666f0073376f555f7265740073365a4f5f696e666f0073365a4f *5f656e7472790073376f625f696e666f00733731725f696e666f00733731725f7265740073376f *625f7265740073376e595f696e666f00733731525f696e666f00733731525f7265740073376e59 *5f7265740073376e515f696e666f0073376e515f7265740073376e415f696e666f0073376e415f *7265740073376e735f696e666f0073376e735f7265740073376e6b5f696e666f00733732585f69 *6e666f00733732585f7265740073376e6b5f7265740073626c615f696e666f0073626c615f7265 *7400736268575f696e666f00736268585f696e666f00736268585f72657400736268575f726574 *00736268455f696e666f00736268455f726574004748437a69496e745f71756f7452656d325f73 *727400736268435f696e666f007361477a5f696e666f007361477a5f656e74727900736147755f *696e666f00736147755f656e74727900736268445f696e666f00736268445f7265740073626843 *5f726574004748437a69496e745f6469764d6f64325f73727400736268415f696e666f00736268 *425f696e666f00736268425f72657400736268415f726574004748437a69496e745f71756f7432 *5f73727400736268795f696e666f007362687a5f696e666f007362687a5f72657400736268795f *726574004748437a69496e745f6d6f64325f73727400736268775f696e666f00736148665f696e *666f00736148665f72657400736268785f696e666f00736268785f72657400736268775f726574 *004748437a69496e745f646976325f73727400736268755f696e666f00736148755f696e666f00 *736148755f72657400736268765f696e666f00736268765f72657400736268755f726574004748 *437a69496e745f72656d325f73727400736268735f696e666f00736268745f696e666f00736268 *745f72657400736268735f72657400736264415f696e666f00736264425f696e666f0073626442 *5f72657400736264415f72657400736264785f696e666f00736264795f696e666f00736264795f *72657400736264785f726574004748437a69496e745f7a64646d73686f774c697374325f737274 *0073324f555f7674626c0073324f555f315f616c740073324f565f315f616c7400733274325f69 *6e666f00733274325f656e7472790073324f565f325f616c740073324f565f7674626c0073324f *555f325f616c740073324f545f7674626c0073324f545f315f616c7400733274655f696e666f00 *733274655f656e7472790073324f545f325f616c740073324f535f7674626c0073324f535f315f *616c740073324f535f325f616c740073324f4f5f7674626c0073324f4f5f315f616c740073324f *4f5f325f616c74004748437a694c6973745f6c766c31325f737274004748437a694c6973745f6c *766c31365f737274004748437a694c6973745f6c766c32305f737274004748437a694c6973745f *6c766c33325f7372740073324f385f7674626c0073324f385f315f616c74007332464a5f696e66 *6f007332464a5f656e7472790073324f385f325f616c74007332415a5f7674626c00733334495f *696e666f00733334495f72657400733334485f696e666f00733334485f72657400733241505f31 *5f616c7400733334455f696e666f00733334455f72657400733241505f325f616c740073324150 *5f7674626c007332415a5f315f616c7400733334425f696e666f00733334425f72657400733334 *7a5f315f616c7400733334415f696e666f00733334415f726574007333347a5f325f616c740073 *33347a5f7674626c007332415a5f325f616c74007332466f5f696e666f007332466f5f72657400 *7332476f5f696e666f007332476f5f72657400733332475f696e666f00733332475f7265740073 *3332305f7674626c00733332305f315f616c740073324f495f696e666f0073324f495f72657400 *733332305f325f616c7400733250495f7674626c00733333505f696e666f00733333505f726574 *007333334f5f696e666f007333334f5f72657400733250795f315f616c74007333334d5f696e66 *6f007333334d5f72657400733250795f325f616c7400733250795f7674626c00733250495f315f *616c74007333334a5f696e666f007333334a5f72657400733333485f315f616c7400733333495f *696e666f00733333495f72657400733333485f325f616c7400733333485f7674626c0073325049 *5f325f616c7400733251525f7674626c00733333475f696e666f00733333475f72657400733333 *465f696e666f00733333465f72657400733251485f315f616c7400733333435f696e666f007333 *33435f72657400733251485f325f616c7400733251485f7674626c00733251525f315f616c7400 *7333337a5f696e666f007333337a5f72657400733333785f315f616c7400733333795f696e666f *00733333795f72657400733333785f325f616c7400733333785f7674626c00733251525f325f61 *6c74004748437a694e756d5f6e6567617465496e74656765725f737274007333315a5f7674626c *007333315a5f315f616c74007333315a5f325f616c74004748437a694e756d5f616273325f7372 *7400733256665f7674626c00733256665f315f616c7400733256665f325f616c740073364d6a5f *7674626c0073364d6a5f315f616c74007336634f5f656e7472790073364d6c5f315f616c740073 *364d6c5f325f616c740073364d6c5f7674626c0073364d6a5f325f616c74004748437a69526561 *645f6c766c395f73727400733663555f696e666f00733663595f696e666f00733664335f696e66 *6f00733663555f656e74727900733663595f656e74727900733664335f656e747279004748437a *69526561645f706172656e5f73727400733666315f656e74727900733666545f315f616c740073 *3666575f315f616c7400733666575f325f616c7400733666575f7674626c00733666555f696e66 *6f00733666555f72657400733666545f325f616c7400733666545f7674626c00733666535f335f *616c7400733666535f64666c7400733666535f7674626c00733666755f656e7472790073366677 *5f696e666f00733666775f656e74727900733666795f696e666f00733666795f656e7472790073 *364b575f315f616c740073364b5a5f315f616c740073364b5a5f325f616c740073364b5a5f7674 *626c0073364b585f696e666f0073364b585f7265740073364b575f325f616c740073364b575f76 *74626c0073364b565f335f616c740073364b565f64666c740073364b565f7674626c0073366652 *5f696e666f00733666525f656e747279004748437a69526561645f6c6973745f73727400733667 *415f696e666f00733667545f696e666f00733667415f656e74727900733667515f696e666f0073 *3667515f656e74727900733667565f696e666f00733667565f656e74727900733667545f656e74 *727900733667585f656e74727900733668325f696e666f00733668325f656e7472790073364b72 *5f315f616c740073364b785f315f616c740073364b785f325f616c740073364b785f7674626c00 *73364b755f315f616c740073364b755f325f616c740073364b755f7674626c0073364b735f696e *666f0073364b735f7265740073364b725f325f616c740073364b725f7674626c0073364b715f33 *5f616c740073364b715f64666c740073364b715f7674626c007336686f5f696e666f007336686f *5f656e74727900733669635f696e666f00733669635f656e74727900733669655f656e74727900 *733668775f696e666f00733668775f656e7472790073364b425f315f616c740073364b485f315f *616c740073364b485f325f616c740073364b485f7674626c0073364b455f315f616c740073364b *455f325f616c740073364b455f7674626c0073364b435f696e666f0073364b435f726574007336 *4b425f325f616c740073364b425f7674626c0073364b415f335f616c740073364b415f64666c74 *0073364b415f7674626c00733668535f696e666f00733668535f656e74727900733668555f696e *666f00733668555f656e74727900733668575f696e666f00733668575f656e7472790073366930 *5f696e666f00733669305f656e74727900733669355f656e74727900733669675f656e74727900 *73364b4c5f315f616c740073364b4f5f315f616c740073364b4f5f325f616c740073364b4f5f76 *74626c0073364b4d5f7265740073364b4c5f325f616c740073364b4c5f7674626c0073364b4b5f *335f616c740073364b4b5f64666c740073364b4b5f7674626c007336697a5f656e747279007336 *69425f656e747279004748437a69526561645f7265616450726563315f737274004748437a6952 *6561645f726561644c69737450726563315f737274004748437a69526561645f7a647372656164 *4c69737444656661756c74315f737274004748437a69526561645f7a64737a64646d7265616473 *50726563315f73727400733671645f696e666f00733671645f656e747279004748437a69526561 *645f7265616450726563325f737274004748437a69526561645f7a6473726561644c6973745072 *656344656661756c74325f737274004748437a69526561645f7a6473726561644c697374446566 *61756c74325f737274004748437a69526561645f7a64737a64646d726561647350726563325f73 *727400733671495f696e666f00733671495f656e747279004748437a69526561645f7265616450 *726563345f737274004748437a69526561645f7a6473726561644c697374507265634465666175 *6c74345f737274004748437a69526561645f7a6473726561644c69737444656661756c74345f73 *7274004748437a69526561645f7a64737a64646d726561647350726563345f7372740073367242 *5f696e666f00733672425f656e747279004748437a6953686f775f7a64737a64646d73686f7732 *5f7372740073326e395f7674626c0073326e395f315f616c740073326e395f325f616c74004748 *437a6953686f775f7a64737a64646d73686f774c697374325f7372740073326d585f7674626c00 *73326d585f315f616c740073326d595f315f616c740073326d5a5f315f616c740073326d5a5f32 *5f616c740073326d5a5f7674626c00733236445f696e666f00733236445f656e7472790073326d *595f325f616c740073326d595f7674626c00733236785f696e666f00733236785f656e74727900 *733236485f696e666f00733236485f656e7472790073326e305f315f616c740073326e305f325f *616c740073326e305f7674626c007332364c5f696e666f007332364c5f656e7472790073326d58 *5f325f616c740073326d4e5f696e666f0073326d4f5f696e666f0073326d4f5f7265740073326d *4e5f726574004748437a6953686f775f7a64737a64646d73686f774c697374335f737274007332 *6d4a5f7674626c0073326d4a5f315f616c740073326d4c5f315f616c7400733239735f696e666f *00733239735f656e7472790073326d4c5f325f616c740073326d4c5f7674626c007332396f5f69 *6e666f007332396f5f656e74727900733239775f696e666f00733239775f656e7472790073326d *4b5f696e666f0073326d4b5f72657400733239795f696e666f00733239795f656e747279007332 *6d4a5f325f616c740073326d495f696e666f0073326d495f726574004748437a6953686f775f73 *686f777350726563325f7372740073326d695f7674626c0073326d695f315f616c740073326d69 *5f325f616c74004748437a6953686f775f73686f774c697374315f73727400733264445f696e66 *6f00733264445f656e747279004748437a6953686f775f73686f777350726563345f7372740073 *326d655f696e666f0073326d655f726574004748437a6953686f775f7a64737a64646d73686f77 *345f7372740073326d635f7265740073326d385f726574004748437a6953686f775f7a64646d73 *686f774c6973745f7372740073326d375f696e666f0073326d355f315f616c740073326d365f31 *5f616c74007332657a5f696e666f007332657a5f656e7472790073326d365f325f616c74007332 *6d365f7674626c00733265765f696e666f00733265765f656e74727900733265445f696e666f00 *733265445f656e7472790073326d355f325f616c740073326d355f7674626c0073326d375f656e *74727900733237555f696e666f00733237575f696e666f00733237575f72657400733237565f69 *6e666f00733237565f72657400733237555f72657400733237385f696e666f00733237395f696e *666f00733237395f72657400733237385f726574004748437a69546f7048616e646c65725f7a64 *4c723337776c766c31365f737274004748437a69546f7048616e646c65725f746f7048616e646c *65725f73727400733361595f696e666f00733362505f696e666f00733362505f72657400733362 *4e5f315f616c74007333624e5f325f616c74007333624e5f335f616c74007333624e5f345f616c *74007333624e5f355f616c74007333624e5f7674626c007333624d5f696e666f007333624d5f72 *657400733361765f696e666f00733361765f656e747279007333617a5f315f616c74007333624c *5f325f616c74007333624c5f335f616c74007333624c5f7674626c00733361435f696e666f0073 *3361435f656e747279007333617a5f64666c74007333617a5f7674626c00733362485f315f616c *74007333624b5f736c6f77007333624b5f656e747279007333624a5f696e666f007333624a5f72 *6574007333624b5f696e666f00733362495f696e666f00733362495f72657400733362485f325f *616c7400733362485f7674626c00733339585f696e666f00733339585f72657400733361595f65 *6e747279004748437a69556e69636f64655f7a6477746f4c6f7765725f73727400733251365f69 *6e666f00733251365f72657400733251305f696e666f00733251305f726574007332504c5f696e *666f007332504c5f726574007345715f726574007347305f696e666f007347305f726574007345 *715f696e666f00736234645f696e666f00736234645f72657400736249745f696e666f00736249 *745f72657400736249735f696e666f00736249735f72657400736249715f696e666f0073624972 *5f696e666f00736249725f72657400736249715f726574007362496f5f696e666f00736249705f *696e666f00736249705f726574007362496f5f726574007362496d5f696e666f007362496e5f69 *6e666f007362496e5f726574007362496d5f7265740053797374656d7a69436d645f7468726f77 *4572726e6f49664d696e7573315f7372740053797374656d7a69436d645f6c766c315f73727400 *7333576c5f696e666f00733357525f696e666f007333576a5f736c6f7700733357515f696e666f *00733357515f72657400733357505f696e666f00733357505f726574007333576c5f656e747279 *00733357775f696e666f00733357775f72657400733357525f7265740073394b445f696e666f00 *73394b465f696e666f0073394b465f72657400733966775f696e666f00733966775f656e747279 *0073394b455f696e666f0073394b455f7265740073394b445f7265740053797374656d7a694469 *726563746f72795f7a644c723962416c766c31395f73727400733967385f696e666f0073396738 *5f656e7472790053797374656d7a694469726563746f72795f7a644c723962437a64776c6f6f70 *5f7372740073394c4e5f696e666f0073394c5a5f696e666f0073394c5a5f7265740073394c585f *696e666f0073394c585f7265740073394c575f696e666f0073394c575f7265740073394c565f69 *6e666f0073394c565f7265740073394c555f696e666f0073394c555f7265740073394c545f696e *666f0073394c545f7265740073394c535f696e666f0073394c535f7265740073394c4f5f696e66 *6f0073394c4f5f7265740073394c4e5f7265740073394b775f696e666f0073394b795f696e666f *0073394b795f72657400733968755f696e666f00733968755f656e7472790073394b785f696e66 *6f0073394b785f7265740073394b775f7265740073394c4c5f696e666f0073394c4c5f72657400 *53797374656d7a694469726563746f72795f7a644c723962457468726f774572726e6f49664d69 *6e7573317a755f7372740053797374656d7a694469726563746f72795f6c766c32335f73727400 *53797374656d7a694469726563746f72795f6c766c32345f7372740073396f545f696e666f0073 *396f525f736c6f770073396f525f656e7472790073394a4b5f696e666f0073394a4b5f72657400 *73396f525f696e666f0073394a4a5f696e666f0073394a4a5f7265740073396f545f656e747279 *0053797374656d7a694469726563746f72795f6c766c32355f73727400733970335f696e666f00 *733970335f656e7472790053797374656d7a694469726563746f72795f6c766c32365f73727400 *733970765f696e666f00733970765f656e7472790053797374656d7a694469726563746f72795f *7a6477676f5f7372740073394c6f5f696e666f0073394c795f696e666f0073394c795f72657400 *73394c785f696e666f0073394c785f7265740073394c775f696e666f0073394c775f7265740073 *394c765f696e666f0073394c765f7265740073394c745f696e666f0073394c745f726574007339 *4c735f696e666f0073394c735f7265740073394c715f696e666f0073394c715f7265740073394c *6f5f7265740053797374656d7a694469726563746f72795f7769746846696c655374617475735f *73727400733979625f696e666f00733977535f696e666f00733978575f696e666f00733979355f *696e666f00733979355f656e74727900733979315f696e666f00733979315f7265740073397962 *5f656e74727900733977535f656e74727900733978575f736c6f7700733978575f656e74727900 *733978695f696e666f00733978695f656e74727900733978425f736c6f7700733978425f656e74 *72790073394a385f696e666f0073394a385f72657400733978425f696e666f0073394a375f696e *666f0073394a375f72657400733978445f696e666f00733978445f656e7472790073394a395f69 *6e666f0073394a395f726574007339784b5f696e666f007339784b5f656e7472790073394a625f *696e666f0073394a625f7265740073394a355f696e666f0073394a355f7265740073394a345f69 *6e666f0073394a345f72657400733941715f696e666f00733941715f72657400733941485f696e *666f00733941485f72657400733662655f7674626c00733662655f315f616c7400733662655f32 *5f616c7400733662375f7674626c00733662375f315f616c7400733662615f7265740073366239 *5f696e666f00733662395f72657400733662385f72657400733662375f325f616c740053797374 *656d7a69457869745f6c766c315f73727400733168735f696e666f00733168735f726574007338 *53785f696e666f00733853785f72657400733853765f696e666f00733853765f72657400733853 *385f696e666f00733853385f72657400733851785f696e666f00733851785f726574007338504b *5f696e666f0073386f755f736c6f770073386f755f656e7472790073386f755f696e666f007338 *504b5f72657400733850725f696e666f00733872435f736c6f7700733872435f656e7472790073 *3850735f696e666f00733850735f72657400733872435f696e666f00733850725f726574007338 *50625f696e666f007338754d5f736c6f77007338754d5f656e747279007338754d5f696e666f00 *733850625f72657400546578747a69506172736572436f6d62696e61746f72737a695265616450 *5f7a644c723174736c766c375f73727400733175545f696e666f00733176675f696e666f007331 *47595f315f616c74007331475a5f315f616c7400733176345f696e666f00733176345f656e7472 *7900733176365f696e666f00733176365f656e74727900733176615f696e666f00733176615f65 *6e74727900733148305f696e666f00733148305f656e747279007331475a5f325f616c74007331 *475a5f7674626c00733147595f325f616c7400733147595f7674626c00733175545f656e747279 *00733176675f656e747279007331736c5f696e666f00733172775f696e666f00733172775f656e *747279007331736c5f656e7472790073344a325f7674626c0073344a325f315f616c740073344a *325f325f616c740073344a325f335f616c7400546578747a695072657474795072696e747a6948 *7567686573504a5f7a644c72346755626573696465315f7372740073346f495f7674626c005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c7234675761626f766531 *5f73727400733470435f7674626c00546578747a695072657474795072696e747a694875676865 *73504a5f726564756365446f63315f73727400733471305f7674626c0073346f495f315f616c74 *00733470765f696e666f00733470765f656e7472790073346f495f325f616c7400733470705f31 *5f616c7400733470705f64666c7400733470705f7674626c00733470725f696e666f0073347072 *5f656e7472790073346f495f335f616c7400733470685f696e666f00733470685f656e74727900 *73346f495f345f616c7400733470625f696e666f00733470625f656e74727900733470385f696e *666f00733470385f656e7472790073346f495f355f616c740073346f495f365f616c740073346f *575f696e666f0073346f575f656e7472790073344a765f315f616c740073346f595f64666c7400 *73346f595f7674626c0073344a765f325f616c740073344a765f7674626c0073344a745f315f61 *6c7400733470335f64666c7400733470335f7674626c0073344a755f315f616c7400733470315f *696e666f00733470315f656e7472790073344a755f325f616c740073344a755f7674626c007334 *4a745f325f616c740073344a745f7674626c0073346f495f375f616c740073346f4b5f64666c74 *0073346f4b5f7674626c0073346f495f385f616c7400733470565f696e666f00733470565f656e *74727900733470545f64666c7400733470545f7674626c00733470435f375f616c74007334704f *5f696e666f007334704f5f656e74727900733470435f385f616c7400733470475f696e666f0073 *3470475f656e74727900733470435f64666c7400733471675f696e666f00733471675f656e7472 *7900733471305f375f616c7400733471385f696e666f00733471385f656e74727900733471305f *385f616c7400733471305f64666c7400546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c723468307a647766696c6c4e425f737274007334717a5f7674626c00546578 *747a695072657474795072696e747a69487567686573504a5f7a644c7234683266696c6c31315f *7372740073344a715f7674626c00546578747a695072657474795072696e747a69487567686573 *504a5f7a647766696c6c315f7372740073344a725f7674626c0073344a6e5f315f616c74007334 *71555f315f616c7400733471595f64666c7400733471595f7674626c00733471575f64666c7400 *733471575f7674626c00733471555f64666c7400733471555f7674626c00733471535f64666c74 *00733471535f7674626c007334714f5f64666c74007334714f5f7674626c007334714d5f64666c *74007334714d5f7674626c00733472325f696e666f00733472325f7265740073344a6f5f315f61 *6c740073344a6f5f325f616c740073344a6f5f7674626c0073344a6e5f325f616c740073344a6e *5f7674626c007334717a5f315f616c74007334717a5f345f616c74007334717a5f64666c740073 *344a715f315f616c7400733472685f64666c7400733472685f7674626c0073344a715f325f616c *7400733473625f64666c7400733473625f7674626c0073344a735f315f616c7400733473385f64 *666c7400733473385f7674626c0073344a735f325f616c740073344a735f7674626c0073344a72 *5f315f616c7400733473305f696e666f00733473305f656e74727900733473325f696e666f0073 *3473325f656e7472790073344a725f325f616c7400733472575f696e666f00733472575f656e74 *72790073344a725f335f616c74007334724c5f696e666f007334724c5f656e7472790073344a72 *5f345f616c7400733472415f696e666f00733472415f656e74727900733472435f696e666f0073 *3472435f656e7472790073344a725f355f616c740073344a725f365f616c740073344a725f6466 *6c7400546578747a695072657474795072696e747a69487567686573504a5f7a6477736570315f *7372740073344a635f7674626c00546578747a695072657474795072696e747a69487567686573 *504a5f7a644c723468697365704e42315f73727400733475755f7674626c00733475695f64666c *7400733475695f7674626c0073344a645f315f616c7400733475665f64666c7400733475665f76 *74626c0073344a645f325f616c740073344a645f7674626c0073344a635f315f616c7400733475 *355f64666c7400733475355f7674626c00733475375f696e666f00733475375f656e7472790073 *3475395f696e666f00733475395f656e7472790073344a635f325f616c7400733475315f696e66 *6f00733475315f656e7472790073344a635f335f616c74007334744f5f696e666f007334744f5f *656e7472790073344a635f345f616c7400733474425f64666c7400733474425f7674626c007334 *74445f696e666f00733474445f656e74727900733474465f696e666f00733474465f656e747279 *00733474795f696e666f00733474795f656e7472790073344a635f355f616c740073344a635f36 *5f616c740073344a635f64666c7400733475495f315f616c7400733475505f64666c7400733475 *505f7674626c007334754e5f64666c74007334754e5f7674626c0073344a665f696e666f007334 *4a665f72657400733475525f696e666f00733475525f656e74727900733475495f64666c740073 *3475495f7674626c00733475475f64666c7400733475475f7674626c00733475455f64666c7400 *733475455f7674626c00733475435f64666c7400733475435f7674626c0073344a655f315f616c *740073344a655f325f616c740073344a655f7674626c00733475755f315f616c7400733475755f *345f616c740073344a685f696e666f0073344a685f72657400733475755f64666c740054657874 *7a695072657474795072696e747a69487567686573504a5f66756c6c52656e6465725f73727400 *73347a635f7674626c00733442685f64666c7400733442685f7674626c0073347a635f335f616c *7400733442665f64666c7400733442665f7674626c0073347a635f345f616c74007334496e5f69 *6e666f007334496e5f726574007334496d5f696e666f007334496d5f72657400733477725f696e *666f00733477725f656e74727900733449775f315f616c7400733478635f696e666f0073347863 *5f656e74727900733477475f656e74727900733449775f325f616c7400733478385f696e666f00 *733478385f656e74727900733478365f656e74727900733449775f335f616c7400733477585f69 *6e666f00733477585f656e74727900733449775f345f616c7400733477495f696e666f00733477 *495f656e74727900733449415f315f616c7400733449415f325f616c7400733449415f7674626c *007334497a5f315f616c74007334497a5f325f616c74007334497a5f7674626c00733449785f69 *6e666f00733449785f72657400733449775f355f616c7400733449775f365f616c740073344977 *5f64666c7400733449775f7674626c00733477475f696e666f007334496f5f315f616c74007334 *49705f696e666f00733449705f72657400733479665f696e666f00733479665f656e7472790073 *34496f5f325f616c7400733449715f696e666f00733449715f72657400733479325f696e666f00 *733479325f656e74727900733479355f696e666f00733479355f656e747279007334496f5f335f *616c74007334496f5f345f616c7400733478735f696e666f00733478735f656e74727900733449 *765f315f616c7400733449765f325f616c7400733449765f7674626c00733478445f696e666f00 *733478445f72657400733449755f315f616c7400733449755f325f616c7400733449755f767462 *6c007334784d5f696e666f007334784d5f72657400733449735f696e666f00733449735f726574 *007334496f5f355f616c74007334496f5f365f616c74007334496f5f64666c74007334496f5f76 *74626c00733478365f696e666f00733449435f696e666f00733449435f72657400733449425f69 *6e666f00733449425f72657400733479725f696e666f00733479725f656e74727900733449445f *696e666f00733449445f72657400733479415f696e666f00733479415f656e7472790073344945 *5f696e666f00733449455f72657400733479475f696e666f00733479475f656e74727900733449 *465f696e666f00733449465f72657400733479505f696e666f00733479505f656e747279007334 *49495f315f616c7400733441425f696e666f00733441425f656e7472790073347a385f656e7472 *7900733449495f325f616c740073347a715f696e666f0073347a715f656e7472790073347a6f5f *656e7472790073347a745f696e666f0073347a745f656e7472790073347a665f696e666f007334 *7a665f656e747279007334494a5f315f616c740073347a4f5f696e666f0073347a4f5f656e7472 *790073347a515f696e666f0073347a515f656e7472790073347a485f696e666f0073347a485f65 *6e747279007334494f5f696e666f007334494f5f7265740073347a535f696e666f0073347a535f *656e7472790073347a555f696e666f0073347a555f656e7472790073347a575f696e666f007334 *7a575f656e74727900733441655f696e666f00733441655f656e74727900733441675f696e666f *00733441675f656e74727900733441375f696e666f00733441375f656e747279007334494e5f69 *6e666f007334494e5f72657400733441695f696e666f00733441695f656e747279007334416b5f *696e666f007334416b5f656e747279007334416d5f696e666f007334416d5f656e747279007334 *41765f696e666f00733441765f656e74727900733441785f696e666f00733441785f656e747279 *007334416f5f696e666f007334416f5f656e747279007334494b5f696e666f007334494b5f7265 *74007334494a5f325f616c74007334494a5f7674626c00733449495f335f616c7400733449495f *345f616c7400733449495f64666c7400733449495f7674626c0073347a385f696e666f00733449 *475f315f616c7400733442305f696e666f00733442305f656e74727900733449475f325f616c74 *00733441575f696e666f00733441575f656e74727900733449475f335f616c7400733449475f34 *5f616c7400733449475f64666c7400733449475f7674626c0073347a6f5f696e666f0073344239 *5f64666c7400733442395f7674626c00733442375f64666c7400733442375f7674626c00733449 *515f696e666f00733449515f72657400733449505f315f616c7400733442645f64666c74007334 *42645f7674626c00733442625f64666c7400733442625f7674626c00733449505f325f616c7400 *733449505f7674626c0073347a635f64666c7400546578747a69526561647a694c65785f7a644c *72684b6c65784e756d6265725f73727400546578747a69526561647a694c65785f7a644c723575 *44705f73727400546578747a69526561647a694c65785f7a644c7268416c657849645f73727400 *546578747a69526561647a694c65785f6c766c3132355f73727400733633335f696e666f007336 *33365f696e666f00733633395f696e666f00733633635f696e666f00733633665f696e666f0073 *3633695f696e666f007336336c5f696e666f007336336f5f696e666f00733633725f696e666f00 *733633755f696e666f00733633435f696e666f00733633335f656e74727900733633365f656e74 *727900733633395f656e74727900733633635f656e74727900733633665f656e74727900733633 *695f656e747279007336336c5f656e74727900733636725f696e666f00733636725f656e747279 *00733636745f696e666f00733636745f656e747279007336344b5f696e666f007336344b5f656e *747279007336344e5f696e666f007336344e5f656e74727900733634515f696e666f0073363451 *5f656e74727900733634545f696e666f00733634545f656e74727900733634575f696e666f0073 *3634575f656e747279007336345a5f696e666f007336345a5f656e74727900733635325f696e66 *6f00733635325f656e74727900733635355f696e666f00733635355f656e74727900733635385f *696e666f00733635385f656e74727900733635625f696e666f00733635625f656e747279007336 *35655f696e666f00733635655f656e74727900733635685f696e666f00733635685f656e747279 *007336356b5f696e666f007336356b5f656e747279007336356e5f696e666f007336356e5f656e *74727900733635715f696e666f00733635715f656e74727900733635745f696e666f0073363574 *5f656e74727900733635775f696e666f00733635775f656e747279007336357a5f696e666f0073 *36357a5f656e74727900733635435f696e666f00733635435f656e74727900733635465f696e66 *6f00733635465f656e74727900733635495f696e666f00733635495f656e747279007336354c5f *696e666f007336354c5f656e747279007336354f5f696e666f007336354f5f656e747279007336 *35525f696e666f00733635525f656e74727900733635555f696e666f00733635555f656e747279 *00733636305f696e666f00733636305f656e747279007336656e5f696e666f007336656e5f7265 *7400733636385f696e666f00733636385f656e747279007336366a5f696e666f007336366a5f65 *6e74727900733636765f656e747279007336334a5f696e666f007336334a5f656e747279007336 *65715f315f616c7400733634385f696e666f00733634385f72657400733665715f325f616c7400 *733665715f7674626c00733634695f696e666f00733634695f656e747279007336346d5f696e66 *6f007336346d5f72657400733665745f315f616c74007336347a5f696e666f007336347a5f7265 *7400733665745f325f616c7400733665745f7674626c007336334f5f64666c74007336334f5f76 *74626c00733634445f696e666f00733634445f656e74727900733634465f696e666f0073363446 *5f656e74727900733634485f64666c7400733634485f7674626c00733636785f656e7472790073 *36336f5f656e74727900733633725f656e74727900733633755f656e74727900733665775f696e *666f00733665775f72657400733633435f656e74727900546578747a69526561647a694c65785f *7a644c72354148657461315f73727400446174617a69486173685461626c655f7a6477696e7365 *72745f7372740073354e725f696e666f0073354e435f696e666f0073354e435f7265740073356d *535f7265740073356e765f696e666f0073356e765f7265740073354e735f696e666f0073354e73 *5f7265740073356e515f696e666f0073356e515f72657400733570395f696e666f00733570395f *726574007335706e5f696e666f007335706e5f72657400733570785f696e666f00733570785f65 *6e7472790073354e595f696e666f0073354e595f7265740073354e555f696e666f0073354e555f *7265740073354e535f315f616c7400733571795f696e666f00733571795f72657400733571755f *656e7472790073354f615f696e666f0073354f615f7265740073354f325f696e666f0073354f32 *5f726574007335716f5f696e666f007335716f5f7265740073354e535f325f616c740073354e53 *5f7674626c00733571755f696e666f0073354f655f696e666f0073354f655f7265740073354e4d *5f696e666f0073354e4d5f7265740073356f785f72657400733572735f696e666f00733572735f *7265740073354f6f5f696e666f0073354f6f5f7265740073354f6c5f696e666f0073354f6c5f72 *65740073356f685f696e666f0073356f685f7265740073354e725f7265740073354e375f696e66 *6f0073354e6a5f315f616c740073354e6c5f315f616c740073354e6c5f325f616c740073354e6c *5f7674626c0073354e6b5f696e666f0073354e6b5f7265740073354e6a5f325f616c740073354e *6a5f7674626c0073354e6d5f315f616c740073354e6d5f325f616c740073354e6d5f7674626c00 *73354e665f696e666f0073354e665f72657400733574645f696e666f00733574645f7265740073 *3575375f696e666f00733575375f7265740073354e375f72657400446174617a69547970656162 *6c655f74626c5f7372740073376c4c5f72657400446174617a695479706561626c655f7a644c72 *364f4f74626c315f7372740073376b4a5f696e666f0073376b4a5f7265740073376b795f767462 *6c0073376b795f315f616c7400733733325f696e666f00733733325f656e7472790073376b7a5f *696e666f0073376b7a5f7265740073376b795f325f616c7400733356615f696e666f0073335678 *5f696e666f00733437365f696e666f00733437365f72657400733356615f656e74727900733356 *785f736c6f7700733356785f656e74727900733437615f696e666f00733437615f726574007334 *37395f696e666f00733437395f72657400733437385f696e666f00733437385f72657400733358 *695f696e666f00733436575f696e666f00733358665f696e666f00733358665f656e7472790073 *3436425f696e666f00733436425f72657400733358695f656e74727900733436565f315f616c74 *00733436565f325f616c7400733436565f7674626c00733436545f696e666f00733436545f7265 *74007334364b5f696e666f007334364b5f726574007334364a5f696e666f007334364a5f726574 *00733436575f656e74727900733436375f696e666f00733436385f315f616c7400733436395f69 *6e666f00733436395f72657400733436385f325f616c7400733436385f7674626c00733436375f *72657400733435705f696e666f00733435705f726574007334356a5f696e666f007334356b5f31 *5f616c74007334356e5f696e666f007334356e5f726574007334356c5f696e666f007334356c5f *726574007334356b5f325f616c74007334356b5f7674626c007334356a5f726574007334304c5f *696e666f007334304c5f656e74727900733462475f696e666f00733462475f7265740073346246 *5f315f616c74007334304e5f696e666f007334304e5f656e747279007334624f5f696e666f0073 *34624f5f72657400733431355f696e666f00733431355f656e74727900733462595f736c6f7700 *733462595f656e74727900733462575f696e666f00733462575f72657400733462595f696e666f *00733462465f325f616c7400733462465f7674626c0073346c4a5f696e666f0073346c4b5f696e *666f0073346c4b5f7265740073346c4a5f726574007333526b5f696e666f0073346c495f696e66 *6f007333526b5f656e7472790073346c485f696e666f0073346c485f7265740073346c475f696e *666f0073346c475f7265740073346c495f656e7472790073346c455f696e666f0073346c455f72 *65740073346c435f696e666f0073346c445f696e666f0073346c445f7265740073346c435f7265 *74004748437a694172725f6c766c375f73727400733251465f7674626c00733251475f315f616c *7400733251475f325f616c7400733251475f7674626c00733251465f315f616c74007332514a5f *315f616c74007332514c5f696e666f007332514c5f726574007332514b5f696e666f007332514b *5f726574007332514a5f325f616c74007332514a5f7674626c00733251465f325f616c74007332 *50705f696e666f00733250715f72657400733250705f726574007332506e5f696e666f00733250 *6f5f696e666f007332506f5f726574007332506e5f7265740073326f375f7265740073326f375f *696e666f00733277495f696e666f00733277495f656e747279007332774b5f696e666f00733277 *4b5f656e7472790073327a6b5f696e666f0073327a6b5f656e747279004748437a69456e756d5f *6c766c31365f737274004748437a69456e756d5f6c766c31385f7372740073326f4e5f696e666f *0073326f4e5f656e7472790073326f505f696e666f0073326f505f656e74727900733270395f69 *6e666f00733270395f656e74727900733270625f696e666f00733270625f656e74727900733132 *415f696e666f00733132415f726574004748437a69466c6f61745f7a64777a6473726f756e6433 *5f737274007363644b5f696e666f00736364505f696e666f00736364505f726574007363644f5f *696e666f007363644f5f72657400733945445f696e666f00733945445f726574007339454c5f69 *6e666f007339454c5f726574007339454e5f696e666f007339454e5f726574007363644c5f696e *666f007363644c5f726574007363644b5f7265740073646e7a5f696e666f0073646e7a5f726574 *0073646e785f696e666f0073646e785f726574004748437a6948616e646c655f7a644c724a6677 *726974657a75666c6167735f7372740073646f555f696e666f0073646f565f696e666f0073646f *565f7265740073646f555f726574004748437a6948616e646c655f7a644c724a6a617070656e64 *7a75666c6167735f7372740073646f535f696e666f0073646f545f696e666f0073646f545f7265 *740073646f535f726574004748437a6948616e646c655f7a644c724a6872777a75666c6167735f *7372740073646f515f696e666f0073646f525f696e666f0073646f525f7265740073646f515f72 *6574004748437a6948616e646c655f7a644c724a64726561647a75666c6167735f737274007364 *6f4f5f696e666f0073646f505f696e666f0073646f505f7265740073646f4f5f72657400736362 *4e5f696e666f007363624c5f696e666f007363624e5f656e7472790073646e675f696e666f0073 *646e675f7265740073646e665f696e666f0073646e665f7265740073646e655f696e666f007364 *6e655f72657400736362485f696e666f00736362485f656e7472790073646e685f315f616c7400 *73646e685f325f616c740073646e685f7674626c0073646e645f696e666f0073646e645f726574 *007363624c5f656e747279004748437a6948616e646c655f666c75736857726974654275666665 *724f6e6c795f7372740073646e325f696e666f0073646e345f315f616c7400736365305f696e66 *6f00736365305f656e74727900736364595f696e666f00736364595f656e7472790073646e355f *696e666f0073646e355f7265740073646e345f325f616c740073646e345f7674626c0073636452 *5f696e666f00736364525f7265740073646e325f726574004748437a6948616e646c655f6d6b53 *746448616e646c655f7372740073646d4d5f696e666f0073646d505f696e666f0073646d505f72 *65740073646d4f5f696e666f0073646d4f5f72657400736367385f696e666f00736367385f656e *74727900736367665f696e666f00736367665f656e74727900736367785f736c6f770073636778 *5f656e74727900736367755f696e666f00736367755f7265740073646d525f696e666f0073646d *525f7265740073646d515f696e666f0073646d515f72657400736367785f696e666f0073646d54 *5f696e666f0073646d545f72657400736367795f696e666f00736367795f7265740073646d4e5f *696e666f0073646d4e5f7265740073646d4d5f726574004748437a6948616e646c655f696f657a *756e6f745772697461626c655f737274004748437a6948616e646c655f696f657a756e6f745265 *616461626c655f737274004748437a6948616e646c655f696f657a75636c6f73656448616e646c *655f7372740073646d795f696e666f0073646d425f696e666f0073646d425f7265740073646d79 *5f7265740073636c645f696e666f0073636c645f736c6f770073636c645f656e7472790073636b *555f696e666f0073636b555f656e7472790073636b4f5f696e666f0073636b4f5f726574007363 *6b585f696e666f0073636b585f7265740073636c305f696e666f0073636c305f656e7472790073 *636c395f696e666f0073636c395f7265740073646d715f696e666f0073646d715f726574007364 *6d705f696e666f0073646d705f7265740073646d6f5f696e666f0073646d6f5f72657400474843 *7a6948616e646c655f77616e745265616461626c6548616e646c655f7372740073636d795f7674 *626c0073636d795f315f616c740073636d795f325f616c7400736373535f696e666f0073637353 *5f736c6f7700736373535f656e74727900736373755f696e666f00736373755f656e7472790073 *63736f5f696e666f007363736f5f72657400736373785f696e666f00736373785f726574007363 *73415f696e666f00736373415f656e747279007363734f5f696e666f007363734f5f7265740073 *646c6b5f696e666f0073646c6b5f7265740073646c6a5f696e666f0073646c6a5f726574007364 *6c695f696e666f0073646c695f7265740073646c685f696e666f0073646c685f7265740073646f *475f696e666f0073646f475f726574004748437a6948616e646c655f6765744275666665725f73 *72740073646b775f696e666f00736379545f696e666f00736379545f656e7472790073646b415f *696e666f0073646b415f7265740073646b7a5f696e666f0073646b7a5f7265740073646b795f69 *6e666f0073646b795f7265740073646b785f696e666f0073646b785f7265740073646b775f7265 *74004748437a6948616e646c655f68436c6f73657a7568616e646c657a755f7372740073637a59 *5f696e666f0073646b615f696e666f0073646b615f72657400736341345f696e666f0073634134 *5f656e7472790073646b665f696e666f0073646b665f72657400736341455f696e666f00736341 *455f656e7472790073646b645f696e666f0073646b645f7265740073646b635f696e666f007364 *6b635f7265740073646b625f696e666f0073646b625f72657400736341485f696e666f00736341 *485f72657400736342335f736c6f7700736342335f656e7472790073646b6d5f696e666f007364 *6b6d5f72657400736342335f696e666f0073646b6c5f696e666f0073646b6c5f72657400736342 *355f696e666f00736342355f656e7472790073646b6e5f696e666f0073646b6e5f726574007364 *6b6a5f696e666f0073646b6a5f7265740073646b695f315f616c740073646b695f325f616c7400 *73646b695f7674626c0073637a595f726574004748437a6948616e646c655f7a6477666c757368 *526561644275666665725f73727400736468535f696e666f00736354515f736c6f770073635451 *5f656e74727900736468575f696e666f00736468575f72657400736354515f696e666f00736468 *585f696e666f00736468585f72657400736468565f696e666f00736468565f7265740073646854 *5f696e666f00736468545f72657400736468535f726574004748437a6948616e646c655f6f7065 *6e46645f73727400736466615f696e666f00736466635f315f616c7400736466635f325f616c74 *00736466635f335f616c7400736466635f345f616c7400736466635f7674626c00736437495f69 *6e666f00736437495f656e74727900736466645f315f616c7400736466675f696e666f00736466 *675f72657400736466645f325f616c7400736466645f7674626c00736438375f696e666f007364 *38375f726574007364666e5f696e666f007364666e5f72657400736438775f696e666f00736438 *775f656e747279007364666f5f315f616c74007364666f5f325f616c74007364666f5f7674626c *007364666c5f696e666f007364666c5f726574007364666b5f696e666f007364666b5f72657400 *736438415f696e666f00736438415f656e74727900736466705f315f616c7400736466435f696e *666f00736466435f72657400736466425f696e666f00736466425f72657400736439665f696e66 *6f00736439665f656e74727900736466495f696e666f00736466495f72657400736466485f696e *666f00736466485f72657400736439515f696e666f00736439515f656e74727900736439585f73 *6c6f7700736439585f656e74727900736439585f696e666f007364664a5f696e666f007364664a *5f72657400736439595f696e666f00736439595f72657400736466475f696e666f00736466475f *72657400736466465f696e666f00736466465f72657400736466455f696e666f00736466455f72 *657400736466445f696e666f00736466445f726574007364396a5f696e666f007364396a5f7265 *7400736466415f696e666f00736466415f726574007364667a5f696e666f007364667a5f726574 *00736466795f696e666f00736466795f72657400736466785f696e666f00736466785f72657400 *7364384c5f365f616c74007364384c5f64666c74007364384c5f7674626c00736466765f696e66 *6f00736466765f72657400736466705f325f616c7400736466745f696e666f00736466745f7265 *7400736466725f696e666f00736466725f72657400736466715f696e666f00736466715f726574 *00736466705f335f616c7400736466705f7674626c007364616e5f696e666f007364616e5f7265 *74007364664d5f696e666f007364664d5f726574007364664c5f315f616c74007364664c5f325f *616c74007364664c5f7674626c00736466615f726574004748437a69494f5f7a6477636f6d6d69 *744275666665727a715f73727400736135665f696e666f007361356d5f315f616c74007361356d *5f325f616c74007361356d5f7674626c007339697a5f696e666f007339697a5f72657400733969 *515f696e666f00733969515f656e7472790073396a465f736c6f770073396a465f656e74727900 *733969585f696e666f00733969585f656e74727900736135745f696e666f00736135745f726574 *00736135735f315f616c7400736135735f325f616c7400736135735f7674626c00736135715f69 *6e666f00736135715f7265740073396a755f696e666f0073396a755f72657400736135755f315f *616c7400736135755f325f616c7400736135755f7674626c00736135705f696e666f0073613570 *5f7265740073396a465f696e666f00736135445f696e666f00736135445f72657400736135435f *696e666f00736135435f72657400736135425f696e666f00736135425f72657400736135785f31 *5f616c74007361357a5f696e666f007361357a5f72657400736135795f696e666f00736135795f *72657400736135785f325f616c7400736135785f7674626c007361356c5f696e666f007361356c *5f72657400736135665f726574004748437a69494f5f6c766c335f737274004748437a69494f5f *7a6477706f6c797a7562756657726974655f737274007361386a5f696e666f00736138475f7265 *7400736138465f696e666f00736138465f72657400736138785f736c6f7700736138785f656e74 *727900736138765f696e666f00736138765f72657400736138745f696e666f00736138745f7265 *7400733971775f696e666f00733971775f72657400733971665f656e74727900736138735f696e *666f00736138735f72657400736138715f696e666f00736138715f726574007339716d5f696e66 *6f007339716d5f72657400736138705f696e666f00736138705f72657400736138785f696e666f *00733971665f696e666f007361386e5f315f616c740073396f515f696e666f0073396f515f656e *74727900736138435f736c6f7700736138435f656e74727900736138425f696e666f0073613842 *5f726574007339706b5f696e666f007339706b5f656e74727900736138415f696e666f00736138 *415f72657400733970705f656e747279007361387a5f696e666f007361387a5f72657400736138 *435f696e666f00733970705f696e666f00736138445f696e666f00736138445f72657400736138 *6e5f325f616c74007361386e5f7674626c007361386c5f696e666f007361386c5f726574007361 *386a5f726574004748437a69494f5f696c6c6567616c42756666657253697a7a655f7372740073 *3977785f696e666f00736134515f696e666f00736134515f72657400733977765f696e666f0073 *3977765f656e74727900733977785f656e747279004748437a69494f5f7a644c72444a68507574 *6342756666657265645f73727400736134445f696e666f00733978485f696e666f00733978485f *656e74727900733978465f696e666f00733978465f656e747279007361344a5f696e666f007361 *344a5f72657400733978585f696e666f00733978585f726574007361344c5f315f616c74007361 *344c5f325f616c74007361344c5f7674626c00736134485f696e666f00736134485f7265740073 *6134475f696e666f00736134475f72657400736134465f696e666f00736134465f726574007339 *786c5f696e666f007339786c5f72657400736134445f726574004748437a69494f5f7a6477706f *6c797a75627566526561645f73727400736137645f696e666f00736137795f696e666f00736137 *795f72657400733941545f696e666f00733941545f656e74727900736137785f696e666f007361 *37785f72657400733942645f736c6f7700733942645f656e74727900736137755f696e666f0073 *6137755f72657400733942645f696e666f00736137775f315f616c7400736137775f325f616c74 *00736137775f7674626c00736137765f696e666f00736137765f72657400736137725f696e666f *00736137725f72657400736137715f696e666f00736137715f726574007361376f5f696e666f00 *7361376f5f726574007361376e5f696e666f007361376e5f726574007361376d5f696e666f0073 *61376d5f72657400733944695f696e666f00733944695f656e747279007361376c5f696e666f00 *7361376c5f72657400736137695f696e666f00736137695f72657400736137685f696e666f0073 *6137685f72657400736137645f726574004748437a69494f5f7a644c723967707a64776c617a7a *7952656164486176654275666665725f73727400736136385f696e666f004748437a69494f5f7a *644c723967726c617a7a79526561644275666665726564315f73727400733954685f696e666f00 *733953595f696e666f004748437a69494f5f7a644c723967746c617a7a7952656164315f737274 *00733954765f696e666f007339566b5f696e666f00733956425f696e666f00736136615f696e66 *6f00736136615f72657400733952795f696e666f00733952795f656e74727900733953395f696e *666f00733953395f656e74727900736136685f696e666f00736136685f72657400736136655f72 *657400736136645f696e666f00736136645f72657400733952565f696e666f00733952565f7265 *7400736136395f696e666f00736136395f72657400736136385f726574007361366a5f315f616c *74007361366d5f696e666f007361366d5f726574007361366b5f696e666f007361366b5f726574 *007361366a5f64666c74007361366a5f7674626c00733954335f696e666f00733954335f726574 *00733954685f656e74727900733953595f736c6f7700733953595f656e747279007339534b5f69 *6e666f007339534b5f656e74727900736136705f696e666f00736136705f726574007339534c5f *696e666f007339534c5f72657400733954765f656e74727900736136715f315f616c7400736136 *795f696e666f00736136795f726574007339556d5f696e666f007339556d5f656e747279007339 *55785f736c6f7700733955785f656e74727900733955755f696e666f00733955755f7265740073 *3955785f696e666f00736136485f696e666f00736136485f72657400736136465f696e666f0073 *6136465f72657400736136445f696e666f00736136445f72657400736136425f696e666f007361 *36425f72657400736136415f696e666f00736136415f72657400733955705f696e666f00733955 *705f726574007361367a5f315f616c74007361367a5f325f616c74007361367a5f7674626c0073 *6136785f696e666f00736136785f72657400736136765f315f616c7400733956665f696e666f00 *733956665f656e74727900736136765f325f616c7400733956645f696e666f00733956645f656e *74727900736136765f335f616c7400736136765f7674626c00733954595f696e666f0073395459 *5f72657400733954585f696e666f00733954585f72657400736136715f325f616c740073613671 *5f64666c7400736136715f7674626c007339566b5f656e74727900733956425f736c6f77007339 *56425f656e74727900733956705f315f616c7400733956705f325f616c7400733956705f767462 *6c004748437a69494f426173655f7a647773686f777350726563325f737274007337755a5f7674 *626c00733671375f315f616c7400733671395f696e666f00733671395f656e7472790073367137 *5f325f616c7400733671375f7674626c00733671625f696e666f00733671625f656e7472790073 *37755a5f315f616c7400733670575f315f616c74007336705a5f696e666f007336705a5f656e74 *727900733670575f325f616c7400733670575f7674626c00733671315f696e666f00733671315f *656e747279007337755a5f325f616c7400733676635f696e666f007337756c5f696e666f007337 *756c5f72657400733676635f656e747279004748437a69494f426173655f7a647773686f777350 *726563355f73727400733774665f7674626c007336414b5f315f616c74007336414b5f325f616c *74007336414b5f7674626c00733641525f656e74727900733641545f696e666f00733641545f65 *6e74727900733641595f315f616c7400733642305f696e666f00733642305f656e747279007336 *41595f325f616c7400733641595f7674626c00733774675f315f616c74007336426f5f696e666f *007336426f5f656e74727900733642735f696e666f00733642735f656e74727900733774685f31 *5f616c7400733642665f696e666f00733642665f656e747279007336426a5f696e666f00733642 *6a5f656e74727900733774685f325f616c7400733774685f7674626c00733774675f325f616c74 *00733774675f7674626c00733774665f315f616c7400733642775f696e666f00733642775f656e *74727900733774665f325f616c740073376f715f696e666f0073376f715f7265740073376f6c5f *696e666f00733731315f696e666f00733731315f7265740073376f6c5f7265740073376f675f69 *6e666f00733731655f696e666f00733731655f7265740073376f675f7265740073376e635f696e *666f00733733645f696e666f00733733645f7265740073376e635f7265740073376e345f696e66 *6f0073376e345f726574004748437a69496e745f7a64776469764d6f64325f7372740073395938 *5f696e666f00733959345f696e666f00733959365f696e666f00733959365f7265740073395938 *5f656e74727900733959325f696e666f00733959325f72657400733959345f656e747279007362 *6c645f696e666f0073626c645f7265740073626c625f696e666f0073626c635f696e666f007362 *6c635f7265740073626c625f726574007362684b5f696e666f007362684b5f726574007362684a *5f696e666f007362684a5f72657400736268475f696e666f00736268495f696e666f0073626849 *5f72657400736268485f696e666f00736268485f72657400736268475f726574004748437a6949 *6e745f73756363325f73727400736268465f696e666f00736268465f726574004748437a69496e *745f746f526174696f6e616c325f737274007362675a5f696e666f007362675a5f726574004748 *437a69496e745f70726564325f73727400736267575f696e666f00736267585f696e666f007362 *67585f72657400736267575f726574004748437a69496e745f626f756e646564456e756d46726f *6d5468656e5f73727400736267535f696e666f00736267545f696e666f00736267545f72657400 *736267535f726574004748437a694c6973745f7a644c723272696c766c31315f73727400474843 *7a694c6973745f7a644c723272716c766c31355f737274004748437a694c6973745f7a644c7232 *72796c766c31395f737274004748437a694c6973745f7a644c723272576c766c33315f73727400 *733333615f7674626c00733333615f315f616c7400733333615f325f616c7400733332415f7674 *626c00733332455f315f616c7400733332465f696e666f00733332465f72657400733332455f32 *5f616c7400733332455f7674626c00733332415f315f616c7400733332445f696e666f00733332 *445f72657400733332425f315f616c7400733332435f696e666f00733332435f72657400733332 *425f325f616c7400733332425f7674626c00733332415f325f616c7400733332755f7674626c00 *733332795f315f616c74007333327a5f696e666f007333327a5f72657400733332795f325f616c *7400733332795f7674626c00733332755f315f616c7400733332785f696e666f00733332785f72 *657400733332765f315f616c7400733332775f696e666f00733332775f72657400733332765f32 *5f616c7400733332765f7674626c00733332755f325f616c74004748437a694e756d5f73686f77 *73507265635f73727400733331555f696e666f00733331555f726574004748437a694e756d5f73 *686f774c6973745f73727400733331535f7674626c00733331535f315f616c7400733331545f31 *5f616c7400733253445f696e666f00733253445f656e74727900733331545f325f616c74007333 *31545f7674626c007332537a5f696e666f007332537a5f656e74727900733253485f696e666f00 *733253485f656e747279007332534a5f696e666f007332534a5f656e74727900733331535f325f *616c74004748437a694e756d5f7a64646d73686f775f73727400734e565f696e666f00734e575f *696e666f00734e575f72657400734e565f72657400734e555f696e666f00734e555f7265740073 *364c335f7674626c0073364c335f315f616c740073364c335f325f616c74004748437a69526561 *645f726561644e756d626572335f7372740073366b435f696e666f0073366c6e5f696e666f0073 *366b435f656e7472790073366b4b5f696e666f0073366b4b5f656e7472790073366b4e5f696e66 *6f0073366b4e5f656e7472790073366b505f696e666f0073366b505f656e7472790073364c525f *315f616c740073364c525f325f616c740073364c525f7674626c0073364c515f315f616c740073 *364c515f325f616c740073364c515f7674626c0073366b545f355f616c740073366b545f64666c *740073366b545f7674626c0073366c6c5f696e666f0073366c6c5f656e7472790073366c6e5f65 *6e747279004748437a69526561645f6c766c32315f737274007336706c5f696e666f0073364a52 *5f315f616c740073364a525f64666c740073364a525f7674626c007336706c5f656e7472790047 *48437a69526561645f6c766c32345f73727400733670415f696e666f00733670415f656e747279 *0073364a4c5f325f616c740073364a4c5f64666c740073364a4c5f7674626c007336704b5f696e *666f007336704b5f656e747279007336704d5f656e747279007336704f5f696e666f007336704f *5f656e74727900733670535f696e666f00733670535f656e74727900733670585f696e666f0073 *3670585f656e7472790073364a4d5f656e747279004748437a69526561645f61345f7372740047 *48437a69526561645f6c766c32355f737274007336716b5f696e666f007336716e5f696e666f00 *733671775f696e666f007336716b5f656e747279007336716e5f656e7472790073364a4b5f315f *616c740073364a4b5f325f616c740073364a4b5f7674626c0073364a4a5f315f616c740073364a *4a5f325f616c740073364a4a5f7674626c0073364a495f345f616c740073364a495f64666c7400 *73364a495f7674626c00733671775f656e747279004748437a69526561645f61355f7372740073 *364a425f7674626c0073364a425f365f616c740073364a425f64666c74004748437a6952656164 *5f61375f737274004748437a695265616c5f7a64737a765f737274007335704c5f7674626c0073 *364e785f696e666f0073364e785f726574007335704a5f64666c74007335704a5f7674626c0073 *3570485f64666c7400733570485f7674626c007335704c5f64666c74004748437a6953686f775f *6c766c32335f737274004748437a6953686f775f6c766c32345f73727400733238795f696e666f *00733238775f696e666f00733238755f696e666f00733238755f656e74727900733238775f656e *74727900733238795f656e747279004748437a6953686f775f73686f776c5f7372740073326e66 *5f7674626c0073326e665f315f616c7400733262595f696e666f00733262595f656e7472790073 *3263305f696e666f00733263305f656e7472790073326e675f696e666f0073326e675f72657400 *73326e665f325f616c74004748437a6953686f775f7a647773686f7773507265635f7372740073 *3263625f696e666f00733263625f656e74727900733362475f696e666f00733362475f72657400 *4748437a69546f7048616e646c65725f7265706f72744572726f725f73727400733362755f696e *666f00733362415f315f616c7400733362425f696e666f00733362425f72657400733362415f32 *5f616c7400733362415f7674626c007333627a5f696e666f007333627a5f72657400733362795f *696e666f00733362795f72657400733362785f696e666f00733362785f72657400733362775f69 *6e666f00733362775f726574007333384b5f696e666f007333384b5f656e74727900733362755f *726574004748437a69546f7048616e646c65725f7a644c723337346c766c335f73727400474843 *7a69546f7048616e646c65725f7265706f7274537461636b4f766572666c6f775f737274007333 *626c5f696e666f007333626f5f315f616c7400733362705f696e666f00733362705f7265740073 *33626f5f325f616c74007333626f5f7674626c007333626e5f696e666f007333626e5f72657400 *7333626c5f726574004748437a69546f7048616e646c65725f7a644c723337616c766c355f7372 *74004748437a69546f7048616e646c65725f7a644c723337636c766c365f737274004748437a69 *546f7048616e646c65725f7a644c723337656c766c375f737274004748437a69546f7048616e64 *6c65725f7a644c723337676c766c385f737274004748437a69546f7048616e646c65725f7a644c *723337696c766c395f737274004748437a69546f7048616e646c65725f7a644c7233376b6c766c *31305f737274004748437a69546f7048616e646c65725f7a644c7233376d6c766c31315f737274 *004748437a69546f7048616e646c65725f7a644c7233376f6c766c31325f737274004748437a69 *546f7048616e646c65725f7a644c723337716c766c31335f737274004748437a69546f7048616e *646c65725f7a644c723337736c766c31345f737274004748437a69546f7048616e646c65725f7a *644c723337756c766c31355f73727400736251725f7674626c00736251725f315f616c74007362 *51725f325f616c74004748437a69576f72645f7a64646d73686f775f7372740073624f655f696e *666f0073624f655f726574004748437a69576f72645f73686f777350726563335f737274007362 *384e5f696e666f007362484d5f696e666f007362384e5f656e747279007362484c5f696e666f00 *7362484c5f726574007362484d5f656e74727900736244465f696e666f00736244475f696e666f *00736244475f72657400736244465f72657400736244435f696e666f00736244445f696e666f00 *736244445f72657400736244435f726574004748437a69576f72645f7a64646d73686f774c6973 *74335f7372740053797374656d7a694469726563746f72795f7468726f774572726e6f49664d69 *6e75733152657472797a755f7372740053797374656d7a694469726563746f72795f7a644c7239 *637166696c654e616d65456e64436c65616e315f73727400733977715f696e666f00733977465f *64666c7400733977465f7674626c007339774a5f64666c74007339774a5f7674626c0073394c6b *5f696e666f0073394c6b5f72657400733977715f72657400733853675f696e666f00733853675f *72657400733853655f696e666f00733853655f7265740053797374656d7a69506f7369787a6949 *6e7465726e616c735f7365744e6f6e426c6f636b696e6746445f73727400733850585f696e666f *00733851695f696e666f00733851695f72657400733851685f696e666f00733851685f72657400 *733851675f696e666f00733851675f7265740073386d7a5f696e666f0073386d7a5f7265740073 *386d4a5f696e666f0073386d4a5f7265740073386c585f696e666f0073386c585f726574007338 *51655f696e666f00733851655f72657400733851645f696e666f00733851645f72657400733851 *635f696e666f00733851635f7265740073386c485f696e666f0073386c485f7265740073386c46 *5f736c6f770073386c465f656e74727900733851625f696e666f00733851625f72657400733851 *615f696e666f00733851615f7265740073386c465f696e666f00733851365f315f616c74007338 *51395f736c6f7700733851395f656e74727900733851385f696e666f00733851385f7265740073 *3851375f696e666f00733851375f72657400733851395f696e666f0073386c745f696e666f0073 *386c745f72657400733851365f325f616c7400733851365f7674626c00733850585f7265740053 *797374656d7a69506f7369787a69496e7465726e616c735f6664547970655f7372740073384f72 *5f696e666f0073387a685f736c6f770073387a685f656e7472790073387a685f696e666f007338 *4f4f5f696e666f0073384f4f5f7265740073384f4c5f696e666f0073384f4c5f7265740073384f *495f696e666f0073384f495f7265740073384f465f696e666f0073384f465f7265740073384f43 *5f696e666f0073384f435f7265740073384f7a5f696e666f0073384f7a5f7265740073384f795f *696e666f0073384f795f7265740073384f775f696e666f0073384f775f7265740073384f755f69 *6e666f0073384f755f7265740073384f735f696e666f0073384f735f7265740073384f725f7265 *740053797374656d7a69506f7369787a69496e7465726e616c735f6c766c31355f737274007338 *4f395f696e666f0073384f395f72657400546578747a69506172736572436f6d62696e61746f72 *737a6952656164505f7a6c7a707a705f73727400733142615f696e666f00733142715f696e666f *007331474e5f696e666f00733147485f315f616c7400733142695f64666c7400733142615f656e *74727900733142695f7674626c00733147485f325f616c7400733147485f7674626c007331414d *5f315f616c7400733142395f64666c7400733142395f7674626c007331414d5f325f616c740073 *31414d5f335f616c7400733141555f696e666f00733141555f656e747279007331415a5f696e66 *6f007331415a5f656e74727900733142335f696e666f00733142335f656e747279007331474b5f *696e666f007331474b5f656e747279007331414d5f345f616c74007331474d5f696e666f007331 *474d5f656e747279007331414d5f355f616c74007331414d5f7674626c00733142715f656e7472 *7900733142775f696e666f00733142775f656e747279007331474e5f656e74727900546578747a *695072657474795072696e747a69487567686573504a5f7a644c723466536c766c5f7372740054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467636c766c3130 *5f73727400546578747a695072657474795072696e747a69487567686573504a5f7a644c723467 *6f6c766c31365f73727400546578747a695072657474795072696e747a69487567686573504a5f *7a644c723467716c766c31375f73727400546578747a695072657474795072696e747a69487567 *686573504a5f7a644c723467736c766c31385f73727400546578747a695072657474795072696e *747a69487567686573504a5f7a644c723467756c766c31395f73727400546578747a6950726574 *74795072696e747a69487567686573504a5f7a644c723661656173797a75646973706c61795f73 *72740073346a315f696e666f0073346a315f656e7472790073344a335f315f616c740073346a68 *5f696e666f0073346a685f656e7472790073344a335f325f616c740073344a335f335f616c7400 *73344a335f345f616c740073344a335f355f616c740073344a335f365f616c740073344a335f64 *666c740073344a335f7674626c0073346d485f7674626c0073346d485f315f616c740073346d48 *5f345f616c740073344a4a5f315f616c740073344a4a5f325f616c740073344a4a5f7674626c00 *73346d485f64666c7400546578747a695072657474795072696e747a69487567686573504a5f7a *644c7234674d6f6e654c696e6572315f7372740073344a465f7674626c0073344a465f315f616c *740073344a465f325f616c740073346e355f696e666f0073346e355f656e7472790073344a465f *335f616c740073346d585f696e666f0073346d585f656e7472790073344a465f345f616c740073 *344a465f355f616c740073344a465f365f616c740073344a465f64666c740073346e665f767462 *6c0073346e665f315f616c740073346e665f345f616c740073346e665f365f616c740073346e66 *5f64666c740073346e435f7674626c0073346e435f315f616c740073346e435f345f616c740073 *346e7a5f696e666f0073346e7a5f656e7472790073346e455f696e666f0073346e455f656e7472 *790073344a445f315f616c740073346e475f696e666f0073346e475f656e7472790073344a445f *325f616c740073344a445f7674626c0073346e435f64666c7400546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c723467537a647761626f76654e6573745f73727400 *73344a435f7674626c0073344a435f315f616c740073346f795f696e666f0073346f795f656e74 *72790073344a435f325f616c740073346f6d5f315f616c740073346f6d5f64666c740073346f6d *5f7674626c0073346f755f696e666f0073346f755f656e7472790073344a435f335f616c740073 *346f655f696e666f0073346f655f656e7472790073344a435f345f616c740073346f355f696e66 *6f0073346f355f656e7472790073346f325f696e666f0073346f325f656e7472790073344a435f *355f616c740073344a435f365f616c740073344a435f64666c740073344a6d5f7674626c007334 *4a6d5f315f616c7400733473465f696e666f00733473465f656e7472790073344a6d5f325f616c *740073344a6c5f7674626c0073344a6c5f315f616c7400733473505f696e666f00733473505f65 *6e7472790073344a6c5f325f616c740073344a6b5f7674626c0073344a6b5f315f616c74007334 *735a5f696e666f007334735a5f656e7472790073344a6b5f325f616c740073344a6a5f7674626c *0073344a6a5f315f616c7400733474395f696e666f00733474395f656e7472790073344a6a5f32 *5f616c740073344a695f7674626c0073344a695f315f616c74007334746a5f696e666f00733474 *6a5f656e7472790073344a695f325f616c7400546578747a695072657474795072696e747a6948 *7567686573504a5f7a644c7234686b7a6477666974735f7372740073344a395f7674626c007334 *4a395f315f616c740073344a395f325f616c740073344a395f335f616c740073344a395f365f61 *6c740073344a395f64666c7400733476505f696e666f00733476505f656e74727900733477315f *696e666f00733477315f656e74727900546578747a69526561647a694c65785f7a644c7235734e *6c766c335f73727400733669525f7674626c00733669525f315f616c74007335426e5f64666c74 *007335426e5f7674626c00733542695f64666c7400733542695f7674626c00733669535f696e66 *6f00733669535f72657400733669525f325f616c7400546578747a69526561647a694c65785f7a *644c7268576c65784469676974735f73727400733544735f696e666f00733668545f315f616c74 *00733544725f656e74727900733544755f696e666f00733544755f656e74727900733544735f65 *6e74727900733544445f656e74727900733544475f696e666f00733544475f7265740073354452 *5f696e666f00733544525f656e74727900733669695f696e666f00733669695f656e7472790073 *3545375f696e666f00733545375f656e74727900733669685f696e666f00733669685f656e7472 *7900733669645f696e666f00733669645f656e74727900733669395f696e666f00733669395f72 *657400733546685f736c6f77007335455a5f696e666f007335455a5f72657400733546715f656e *74727900733669385f696e666f00733669385f656e74727900733669375f315f616c7400733669 *375f325f616c7400733669375f7674626c00733669365f696e666f00733669365f656e74727900 *733669355f315f616c7400733669355f325f616c7400733669355f7674626c00733668595f696e *666f00733668595f72657400733668565f696e666f00733668565f72657400733668545f325f61 *6c7400733668545f7674626c00733547305f315f616c7400733547305f325f616c740073354730 *5f7674626c00733667775f696e666f00733667775f72657400546578747a69526561647a694c65 *785f7a644c723575786c766c31365f73727400733552755f696e666f00733552785f696e666f00 *733552475f696e666f007335526a5f696e666f007335526a5f656e747279007335526e5f696e66 *6f007335526e5f656e74727900733552735f696e666f00733552735f656e74727900733552755f *656e74727900733552785f656e74727900733552475f656e74727900733665525f696e666f0073 *3665525f72657400733665535f696e666f00733665535f72657400546578747a69526561647a69 *4c65785f7a644c7235757a7a6c766c31375f73727400733554515f696e666f00733553365f696e *666f00733553365f656e74727900733553395f64666c7400733553395f7674626c00733553625f *696e666f00733553625f656e74727900733553655f64666c7400733553655f7674626c00733665 *455f315f616c7400733554775f64666c7400733554775f7674626c00733554415f64666c740073 *3554415f7674626c00733665485f696e666f00733665485f72657400733665475f696e666f0073 *3665475f72657400733554485f696e666f00733554485f656e74727900733665465f315f616c74 *007335546b5f64666c74007335546b5f7674626c007335546d5f696e666f007335546d5f656e74 *727900733665465f325f616c7400733665465f7674626c00733665455f325f616c740073366545 *5f7674626c00733665445f315f616c7400733553475f64666c7400733553475f7674626c007335 *53415f64666c7400733553415f7674626c00733553455f64666c7400733553455f7674626c0073 *3553495f64666c7400733553495f7674626c007336654b5f696e666f007336654b5f7265740073 *36654a5f72657400733553505f696e666f00733553505f656e747279007336654d5f315f616c74 *00733665505f696e666f00733665505f72657400733554335f64666c7400733554335f7674626c *00733554375f64666c7400733554375f7674626c007336654f5f726574007336654e5f696e666f *007336654e5f72657400733554655f696e666f00733554655f656e747279007336654d5f325f61 *6c74007336654d5f7674626c00733665445f325f616c7400733665445f7674626c007335544a5f *696e666f007335544a5f656e747279007335544d5f696e666f007335544d5f656e747279007335 *544f5f696e666f007335544f5f656e74727900733554515f656e74727900546578747a69526561 *647a694c65785f7a644c72357a7a316c657841736369695f73727400546578747a69526561647a *694c65785f7a644c72357a7a646c766c38365f73727400733631775f696e666f00733631685f69 *6e666f007336316c5f696e666f007336316e5f7674626c00733631715f696e666f00733631715f *656e74727900733631755f696e666f00733631755f656e74727900733631775f656e7472790073 *3631685f656e747279007336316c5f656e747279007336316e5f64666c7400546578747a695265 *61647a694c65785f7a644c72357a7a666c766c38375f737274007336315a5f696e666f00733631 *505f696e666f00733631505f656e74727900733631485f696e666f00733631485f726574007336 *31585f696e666f00733631585f656e747279007336315a5f656e74727900546578747a69526561 *647a694c65785f7a644c72357a7a7264735f73727400546578747a69526561647a694c65785f7a *644c72354146626f64795f73727400733637545f696e666f00733669485f696e666f0073363754 *5f656e74727900733638695f696e666f00733638695f656e74727900733669475f315f616c7400 *733638715f696e666f00733638715f656e74727900733669475f325f616c7400733669475f7674 *626c00733638645f696e666f00733638645f72657400733669455f696e666f00733669455f7265 *7400733638735f656e74727900733669485f656e74727900446174617a695479706561626c655f *63616368655f73727400733430745f696e666f007334354c5f696e666f00733430715f696e666f *00733430715f656e74727900733435715f696e666f00733435715f72657400733430745f656e74 *727900733435485f696e666f00733435485f72657400733435795f696e666f00733435795f7265 *74007334354a5f696e666f007334354a5f726574007334354c5f656e7472790073354b6b5f315f *616c740073354b6c5f696e666f0073354b6c5f72657400733546755f656e7472790073354b6b5f *325f616c740073354b6b5f7674626c0073354b6f5f696e666f0073354b6f5f7265740073354b6d *5f696e666f0073354b6d5f7265740073354b695f696e666f0073354b695f72657400733169475f *696e666f00733165785f696e666f00733165785f72657400733169475f7265740073326a4c5f69 *6e666f0073326a4c5f656e7472790073326a4e5f696e666f0073326a4e5f656e7472790073326b *615f696e666f0073326b615f656e7472790073326b7a5f696e666f0073326b7a5f656e74727900 *73326b425f696e666f0073326b425f656e7472790073326c305f696e666f0073326c305f656e74 *72790073326c325f696e666f0073326c325f656e747279004748437a69466c6f61745f7a64777a *647370726f7065724672616374696f6e5f73727400736366685f696e666f00733973795f696e66 *6f00733973795f72657400733973785f696e666f00733973785f72657400733973445f696e666f *00733973445f656e74727900733973505f696e666f00733973505f656e747279007363666f5f69 *6e666f007363666f5f726574007363666c5f315f616c74007363666d5f696e666f007363666d5f *726574007363666c5f325f616c74007363666c5f7674626c007339746e5f696e666f007339746e *5f656e747279007339735a5f696e666f007339735a5f656e747279007363666b5f696e666f0073 *63666b5f72657400733974715f696e666f00733974715f72657400736366755f696e666f007363 *66755f72657400736366725f315f616c7400736366735f696e666f00736366735f726574007363 *66725f325f616c7400736366725f7674626c00733974585f696e666f00733974585f656e747279 *007339747a5f696e666f007339747a5f656e74727900736366715f696e666f00736366715f7265 *7400733975305f696e666f00733975305f72657400736366775f315f616c7400736366785f696e *666f00736366785f72657400736366775f325f616c7400736366775f7674626c00736366685f72 *657400736333585f696e666f0073646f345f315f616c740073646f345f325f616c740073646f34 *5f7674626c00736333565f315f616c7400736333565f325f616c7400736333565f7674626c0073 *6333585f656e747279004748437a6948616e646c655f7a644c724a397374647a75666c6167735f *7372740073646f595f696e666f0073646f5a5f696e666f0073646f5a5f7265740073646f595f72 *6574004748437a6948616e646c655f7a644c724a626f75747075747a75666c6167735f73727400 *73646f575f696e666f0073646f585f696e666f0073646f585f7265740073646f575f7265740073 *6362345f696e666f00736362325f696e666f00736362345f656e7472790073646e6d5f696e666f *0073646e6d5f7265740073646e6c5f696e666f0073646e6c5f7265740073646e6b5f696e666f00 *73646e6b5f7265740073646e6a5f696e666f0073646e6a5f72657400736361595f696e666f0073 *6361595f656e7472790073646e6e5f315f616c740073646e6e5f325f616c740073646e6e5f7674 *626c0073646e695f696e666f0073646e695f72657400736362325f656e747279004748437a6948 *616e646c655f696f657a7566696e616c697a7a656448616e646c655f737274004748437a694861 *6e646c655f77616e745265616461626c6548616e646c657a715f7372740073636d6d5f696e666f *0073646d665f315f616c740073646d665f325f616c740073646d665f335f616c740073646d665f *345f616c740073646d665f355f616c740073636c795f696e666f0073636c795f656e7472790073 *646d6e5f736c6f770073646d6e5f656e7472790073646d6a5f315f616c740073636c565f696e66 *6f0073636c565f656e7472790073636c545f696e666f0073636c545f656e7472790073646d6c5f *696e666f0073646d6c5f7265740073636d665f696e666f0073636d665f656e7472790073646d6b *5f696e666f0073646d6b5f7265740073646d6a5f325f616c740073646d6a5f7674626c0073646d *695f696e666f0073646d695f7265740073646d675f696e666f0073646d675f7265740073646d6e *5f696e666f0073646d665f365f616c740073646d665f7674626c0073636d6d5f656e7472790073 *646f455f696e666f0073646f455f726574004748437a6948616e646c655f7a644c7263307a7a74 *68726f774572726e6f49664d696e75733152657472797a755f737274004748437a6948616e646c *655f7a644c726330427a647768616e646c6546696e616c697a7a65725f7372740073646a585f69 *6e666f00736343675f696e666f00736343675f656e747279007363436a5f696e666f007363436a *5f7265740073646a595f315f616c7400736342585f696e666f00736342585f656e747279007363 *43395f696e666f00736343395f656e74727900736343645f696e666f00736343645f7265740073 *646b315f696e666f0073646b315f7265740073646a5a5f696e666f0073646a5a5f726574007364 *6a595f64666c740073646a595f7674626c0073646a585f726574004748437a6948616e646c655f *7a644c724a726d6b46696c6548616e646c655f73727400736343775f696e666f0073646a505f69 *6e666f0073646a4f5f335f616c740073646a4f5f64666c740073646a4f5f7674626c0073634377 *5f656e7472790073646a555f696e666f0073646a555f7265740073646a545f696e666f0073646a *545f72657400736344325f696e666f00736344325f656e74727900736344615f736c6f77007363 *44615f656e74727900736344615f696e666f0073646a565f696e666f0073646a565f7265740073 *6344625f696e666f00736344625f7265740073646a535f696e666f0073646a535f726574007364 *6a525f696e666f0073646a525f7265740073646a515f696e666f0073646a515f7265740073646a *505f726574004748437a6948616e646c655f7a647766696c6c526561644275666665724c6f6f70 *5f7372740073634d4f5f696e666f0073634d375f696e666f0073646f6a5f696e666f0073646f6a *5f7265740073634c705f696e666f0073634c705f656e7472790073634c425f736c6f770073634c *425f656e7472790073634c795f696e666f0073634c795f7265740073634c425f696e666f007364 *6f765f696e666f0073646f765f7265740073634d335f696e666f0073634d335f656e7472790073 *646f725f315f616c740073646f735f696e666f0073646f735f7265740073634d6f5f696e666f00 *73634d6f5f656e7472790073646f725f325f616c740073646f725f7674626c0073646f6e5f696e *666f0073646f6e5f7265740073634d435f696e666f0073634d435f656e7472790073646f6d5f69 *6e666f0073646f6d5f7265740073646f6c5f696e666f0073646f6c5f7265740073634c745f696e *666f0073634c745f7265740073646f6b5f315f616c740073646f6b5f325f616c740073646f6b5f *7674626c0073634d375f7265740073646f675f696e666f0073646f675f7265740073634d4f5f65 *6e7472790073646f385f696e666f0073646f615f696e666f0073646f615f7265740073646f385f *726574004748437a6948616e646c655f6132385f73727400736469645f696e666f00736469655f *696e666f00736469655f72657400736469645f726574004748437a69494f5f7a644c7239664a7a *6477726561644368756e6b5f7372740073396d705f696e666f0073396d745f696e666f0073396e *765f696e666f0073396e765f656e7472790073396d705f736c6f770073396d705f656e74727900 *73396d745f656e74727900736134565f696e666f00736134565f72657400736134555f696e666f *00736134555f72657400736134545f696e666f00736134545f7265740073396e335f696e666f00 *73396e335f656e74727900736134575f315f616c7400736134575f325f616c7400736134575f76 *74626c00736134535f696e666f00736134535f7265740073396e375f696e666f0073396e375f65 *6e74727900736135305f736c6f7700736135305f656e747279007361345a5f696e666f00736134 *5a5f7265740073396e715f696e666f0073396e715f656e74727900736134595f696e666f007361 *34595f72657400736134585f696e666f00736134585f72657400736135305f696e666f0073397a *545f696e666f00736134735f696e666f00736134735f726574007361346e5f696e666f00736134 *6e5f7265740073397a545f726574004748437a69494f426173655f7a647773686f777350726563 *345f737274007337754b5f696e666f00733673625f64666c7400733673625f7674626c00733775 *4b5f73727464007337754b5f72657400733959725f696e666f00733959725f656e747279007339 *59745f696e666f00733959745f656e7472790073626e715f696e666f0073626e715f7265740047 *48437a69496e745f6c766c31365f737274004748437a69496e745f6c766c31375f737274007362 *6d335f696e666f0073626d345f696e666f0073626d345f7265740073626d335f7265740073626c *5a5f696e666f0073626d305f696e666f0073626d305f7265740073626c5a5f7265740073626c56 *5f696e666f0073626c575f696e666f0073626c575f7265740073626c565f7265740073626c535f *696e666f0073626c545f696e666f0073626c545f7265740073626c535f726574007361397a5f69 *6e666f00736139435f696e666f00736139435f726574007361397a5f72657400736139545f696e *666f00736139515f696e666f00736139515f72657400736139545f726574007362706f5f767462 *6c007362706f5f315f616c740073614e6b5f696e666f0073614e6b5f726574007362706f5f325f *616c74004748437a69496e745f7a6477626f756e646564456e756d46726f6d5468656e5f737274 *00736267565f696e666f00736267565f72657400736264435f696e666f00736264445f696e666f *00736264445f72657400736264435f726574004748437a694c6973745f6c766c365f7372740047 *48437a694c6973745f7375625f7372740073324f475f7674626c0073324f475f315f616c740073 *324f475f325f616c74004748437a694c6973745f7a644c723272676c766c31305f737274004748 *437a694c6973745f7a644c7232726f6c766c31345f737274004748437a694c6973745f7a644c72 *3272776c766c31385f737274004748437a694c6973745f7a644c723272556c766c33305f737274 *00733245765f7674626c00733245645f315f616c74007333346b5f696e666f007333346b5f7265 *7400733245645f325f616c7400733245645f7674626c00733334685f696e666f00733334685f72 *657400733245765f315f616c7400733334675f696e666f00733334675f72657400733334655f31 *5f616c7400733334665f696e666f00733334665f72657400733334655f325f616c740073333465 *5f7674626c00733245765f325f616c74007333324f5f696e666f007333324f5f72657400733332 *6f5f7674626c00733332715f315f616c740073324c4f5f696e666f0073324c4f5f726574007333 *32715f325f616c7400733332715f7674626c007333326f5f315f616c740073324c5a5f696e666f *0073324c5a5f72657400733332705f315f616c740073324d375f72657400733332705f325f616c *7400733332705f7674626c007333326f5f325f616c74004748437a694e756d5f7a647773686f77 *73507265635f73727400733331575f7674626c00733331575f315f616c7400733253375f696e66 *6f00733253375f656e74727900733331575f325f616c740073364b525f7674626c0073364b525f *315f616c740073364b525f325f616c74004748437a69526561645f7a6473726561644c69737450 *72656344656661756c74315f737274004748437a695265616c5f6c766c355f737274004748437a *695265616c5f6c766c365f737274004748437a695265616c5f7a64777a64737265647563655f73 *727400733651755f7674626c007335616b5f64666c74007335616b5f7674626c007335616a5f64 *666c74007335616a5f7674626c007335616e5f64666c74007335616e5f7674626c00733561675f *315f616c7400733561795f64666c7400733561795f7674626c00733561785f64666c7400733561 *785f7674626c00733561425f64666c7400733561425f7674626c00733651765f696e666f007336 *51765f72657400733561675f325f616c7400733561675f7674626c00733651755f315f616c7400 *733651755f325f616c7400733565635f72657400733565365f64666c7400733565365f7674626c *00733565385f64666c7400733565385f7674626c00733565635f696e666f00733565585f696e66 *6f00733565585f72657400733652785f726574004748437a695265616c5f7a64737a63325f7372 *740073364f345f7674626c0073364f355f315f616c740073356b655f64666c740073356b655f76 *74626c0073364f355f325f616c740073364f355f7674626c0073364f345f315f616c740073364f *345f325f616c74004748437a695265616c5f71756f7452656d315f73727400733645305f696e66 *6f0073354d4b5f696e666f0073354d4b5f656e7472790073354d465f696e666f0073354d465f65 *6e74727900733645315f696e666f00733645315f72657400733645305f726574004748437a6952 *65616c5f6469764d6f64315f737274007336445a5f696e666f007336445a5f726574004748437a *695265616c5f71756f74315f73727400733644585f696e666f00733644585f726574004748437a *695265616c5f6d6f64315f7372740073354e6e5f696e666f0073354e6e5f72657400733644575f *726574004748437a695265616c5f646976315f73727400733644545f696e666f00733644555f69 *6e666f00733644555f72657400733644545f726574004748437a695265616c5f72656d315f7372 *7400733644525f696e666f00733644535f72657400733644525f726574004748437a6953686f77 *5f7a647773686f774c6974436861725f737274007332626b5f696e666f00733262375f696e666f *007332614c5f315f616c740073326d7a5f696e666f0073326d7a5f726574007332614c5f325f61 *6c74007332614c5f7674626c00733261505f696e666f00733261505f656e74727900733261525f *656e74727900733262375f656e74727900733262695f315f616c740073326d765f696e666f0073 *326d765f72657400733262695f325f616c7400733262695f7674626c007332626b5f656e747279 *004748437a69546f7048616e646c65725f64735f737274007333374f5f7674626c007333374f5f *315f616c74007333374f5f325f616c74004748437a69546f7048616e646c65725f6473315f7372 *7400733338575f7674626c00733338575f315f616c7400733338575f325f616c7400733250445f *696e666f00733250445f726574004748437a69576f72645f7a64777a64646d73686f775f737274 *00736254305f696e666f007339524c5f7674626c007339524c5f64666c7400736254305f726574 *004748437a69576f72645f707265644572726f725f73727400736167665f696e666f0073616768 *5f7674626c00736167665f656e74727900736167685f64666c74004748437a69576f72645f7375 *63634572726f725f73727400736167725f696e666f00736167745f7674626c00736167725f656e *74727900736167745f64666c740073624e475f696e666f0073624e475f72657400733853365f69 *6e666f00733853365f72657400733854305f696e666f00733854305f72657400733853595f696e *666f00733853595f72657400733853745f696e666f00733853745f7265740053797374656d7a69 *506f7369787a69496e7465726e616c735f7a644c723757436c766c31335f73727400733853735f *696e666f00733853735f72657400733853715f696e666f00733853715f726574007338536b5f69 *6e666f007338536b5f7265740053797374656d7a69506f7369787a69496e7465726e616c735f7a *64776c766c5f7372740073384f615f696e666f00733844395f736c6f7700733844395f656e7472 *790073384f625f696e666f0073384f625f72657400733844395f696e666f0073384f655f696e66 *6f0073384f655f7265740073384f645f696e666f0073384f645f7265740073384f635f696e666f *0073384f635f7265740073384f615f72657400733175745f696e666f00733148705f696e666f00 *733175745f656e74727900733175435f696e666f00733175435f656e74727900733148705f656e *74727900546578747a69506172736572436f6d62696e61746f72737a6952656164505f7a677a67 *7a655f73727400733148615f7674626c007331416e5f64666c74007331416e5f7674626c007331 *41705f696e666f00733141705f656e74727900733148615f315f616c7400733141665f64666c74 *00733141665f7674626c00733141685f696e666f00733141685f656e74727900733148615f325f *616c7400733148615f335f616c7400733141395f696e666f00733141395f656e74727900733141 *365f64666c7400733141365f7674626c00733148615f345f616c7400733148625f315f616c7400 *73317a535f64666c740073317a535f7674626c0073317a505f64666c740073317a505f7674626c *00733148635f696e666f00733148635f72657400733148625f325f616c7400733148625f767462 *6c0073317a555f696e666f0073317a555f656e74727900733141315f315f616c7400733141315f *325f616c7400733141315f7674626c00733148615f355f616c7400546578747a69506172736572 *436f6d62696e61746f72737a6952656164505f63686f6963655f73727400733148365f7674626c *00733148365f315f616c7400733142555f315f616c7400733142575f696e666f00733142575f65 *6e74727900733143315f64666c7400733143315f7674626c00733148395f696e666f0073314839 *5f656e74727900733142555f325f616c7400733142555f7674626c00733148365f325f616c7400 *733144675f696e666f00733144475f696e666f00733144585f696e666f00733144675f656e7472 *79007331477a5f315f616c7400733147415f315f616c7400733144525f656e7472790073314745 *5f696e666f00733147455f656e74727900733147435f696e666f00733147435f72657400733147 *425f696e666f00733147425f72657400733147415f325f616c7400733147415f7674626c007331 *477a5f325f616c74007331477a5f7674626c00733144475f656e74727900733144585f656e7472 *7900546578747a695072657474795072696e747a69487567686573504a5f7a644c723467656c76 *6c31315f73727400546578747a695072657474795072696e747a69487567686573504a5f7a644c *723467776c766c32305f73727400546578747a695072657474795072696e747a69487567686573 *504a5f7a644c723467796c766c32315f73727400546578747a695072657474795072696e747a69 *487567686573504a5f7a644c723467436c766c32335f73727400733469495f696e666f00733469 *495f656e74727900546578747a695072657474795072696e747a69487567686573504a5f7a644c *72363863616e747a756661696c5f73727400546578747a69526561647a694c65785f7a644c7235 *74566c766c31315f73727400546578747a69526561647a694c65785f7a644c7235745a5a7a637a *635f73727400546578747a69526561647a694c65785f7a644c723575396c766c31355f73727400 *546578747a69526561647a694c65785f7a644c723575707a6477667261635f7372740073366950 *5f7674626c00733552365f64666c7400733552365f7674626c00733552345f64666c7400733552 *345f7674626c00733552385f64666c7400733552385f7674626c00733669505f315f616c740073 *3552315f64666c7400733552315f7674626c00733552305f64666c7400733552305f7674626c00 *733551545f64666c7400733551545f7674626c00733669515f696e666f00733669515f72657400 *733669505f325f616c7400546578747a69526561647a694c65785f7a644c72357a7a3369734964 *66436861725f73727400733665435f7674626c00733665435f315f616c7400733665435f325f61 *6c7400733632395f696e666f00733632635f696e666f007336326b5f696e666f00733632395f65 *6e74727900733632635f656e74727900733665795f696e666f00733665795f726574007336326b *5f656e74727900546578747a69526561647a694c65785f7a644c723541446c6578537472497465 *6d5f73727400733637415f696e666f007336374c5f696e666f00733636445f696e666f00733636 *4d5f696e666f00733636545f696e666f007336365a5f696e666f00733637635f696e666f007336 *37765f696e666f00733637415f656e74727900733637485f696e666f00733637485f7265740073 *36374c5f656e74727900733636445f656e747279007336694a5f696e666f007336694a5f726574 *007336364d5f656e74727900733636545f656e747279007336365a5f656e747279007336694c5f *315f616c74007336694c5f325f616c74007336694c5f7674626c00733637635f656e7472790073 *36694d5f696e666f007336694d5f726574007336376b5f656e74727900733637765f656e747279 *00446174617a69486173685461626c655f6e65775f7372740073354c535f696e666f0073354c55 *5f696e666f0073354c555f7265740073354c545f7265740073354c535f72657400446174617a69 *5479706561626c655f7a644c72364f346c766c345f73727400733769575f696e666f0073376a30 *5f696e666f0073376a305f726574007337695a5f696e666f007337695a5f72657400733656635f *696e666f00733656635f656e74727900733769595f696e666f00733769595f7265740073376958 *5f696e666f00733769585f72657400733769575f72657400733169465f696e666f007331654a5f *696e666f007331654a5f72657400733169465f72657400733959465f696e666f00733959465f65 *6e74727900736146785f696e666f00736146785f656e7472790073614e485f696e666f0073614e *485f656e7472790073614e4f5f696e666f0073614e4f5f656e747279004748437a694c6973745f *7a644c723271556c766c385f737274004748437a694e756d5f71756f74496e74656765725f7372 *7400733333555f7674626c00733249465f315f616c7400733334335f696e666f00733334335f72 *657400733249465f325f616c7400733249465f7674626c00733334305f696e666f00733334305f *72657400733333565f315f616c74007333335a5f696e666f007333335a5f72657400733333595f *696e666f00733333595f72657400733333575f315f616c7400733333585f696e666f0073333358 *5f72657400733333575f325f616c7400733333575f7674626c00733333565f325f616c74007333 *33565f7674626c00733333555f315f616c7400733333555f325f616c7400733332725f7674626c *00733332745f315f616c740073324b365f696e666f0073324b365f72657400733332745f325f61 *6c7400733332745f7674626c00733332725f315f616c740073324b685f696e666f0073324b685f *72657400733332735f315f616c740073324b705f696e666f0073324b705f72657400733332735f *325f616c7400733332735f7674626c00733332725f325f616c74007333326c5f7674626c007333 *326e5f315f616c740073324d725f726574007333326e5f325f616c74007333326e5f7674626c00 *7333326c5f315f616c740073324d435f696e666f0073324d435f726574007333326d5f315f616c *74007333326d5f325f616c74007333326d5f7674626c007333326c5f325f616c74004748437a69 *4e756d5f6a746f735f73727400733331585f7674626c00733331585f315f616c7400733252515f *64666c7400733252515f7674626c00733331595f315f616c7400733331595f325f616c74007333 *31595f7674626c00733252545f696e666f00733252545f656e74727900733331585f325f616c74 *004748437a694e756d5f676364496e74656765725f73727400733333715f7674626c0073325778 *5f696e666f00733257785f72657400733257395f696e666f00733257395f72657400733257675f *696e666f00733257675f72657400733256595f315f616c7400733257595f315f616c7400733333 *645f696e666f00733333645f72657400733333635f696e666f00733333635f7265740073325759 *5f325f616c7400733256595f325f616c7400733256595f7674626c00733258305f696e666f0073 *3258305f726574007333336e5f696e666f007333336e5f726574007333336c5f315f616c740073 *33336c5f325f616c74007333336c5f7674626c00733258675f696e666f00733258675f72657400 *733333735f696e666f00733333735f72657400733333715f315f616c7400733333715f325f616c *740073364a4e5f7674626c0073364a4e5f315f616c740073364a4e5f325f616c74004748437a69 *5265616c5f7a64776469764d6f645f73727400733651455f696e666f007335384b5f696e666f00 *7335384b5f726574007335384d5f696e666f007335384d5f656e74727900733538475f696e666f *00733538475f72657400733538495f696e666f00733538495f656e74727900733651455f726574 *004748437a695265616c5f6c766c395f737274004748437a695265616c5f665f73727400733652 *725f7674626c0073356b325f64666c740073356b325f7674626c0073356b345f64666c74007335 *6b345f7674626c00733652735f315f616c740073356a585f64666c740073356b305f7265740073 *356a585f7674626c0073356a5a5f64666c740073356a5a5f7674626c00733652735f325f616c74 *00733652735f7674626c0073356b305f696e666f00733652725f315f616c7400733652725f325f *616c74004748437a695265616c5f746f526174696f6e616c315f73727400733645325f696e666f *00733645335f696e666f00733645335f72657400733645325f726574004748437a695265616c5f *7a637a635f73727400733638365f696e666f00733638475f696e666f00733678535f696e666f00 *733638365f656e747279007336786b5f72657400733638475f656e747279007336784a5f726574 *00733639695f696e666f00733639695f656e747279007336396b5f696e666f007336396b5f656e *74727900733678465f696e666f00733678465f72657400733678455f315f616c7400733678455f *325f616c7400733678455f7674626c00733678775f696e666f00733678775f7265740073367874 *5f72657400733678535f656e747279007332504f5f696e666f007332504f5f7265740073625171 *5f696e666f00736251715f7265740053797374656d7a69506f7369787a69496e7465726e616c73 *5f6c766c31345f73727400733853635f696e666f00733853645f696e666f00733853645f726574 *00733853635f72657400546578747a69526561647a694c65785f7a644c723574526c766c395f73 *727400733547695f696e666f00733547715f696e666f00733547675f696e666f00733547675f65 *6e74727900733547695f656e74727900733668525f696e666f00733668525f7265740073354771 *5f656e74727900546578747a69526561647a694c65785f7a644c723575356c766c31335f737274 *0073354c6e5f696e666f0073354c765f696e666f0073354b6d5f656e747279007336676f5f315f *616c7400733667705f315f616c7400733667705f325f616c7400733667705f7674626c00733667 *6f5f325f616c74007336676f5f7674626c0073354b475f696e666f0073354b475f656e74727900 *73354b4c5f696e666f0073354b4c5f656e7472790073354c665f696e666f0073354c665f656e74 *72790073354c6a5f696e666f0073354c6a5f656e7472790073354c6c5f696e666f0073354c6c5f *656e7472790073354c355f696e666f0073354c355f7265740073354c375f696e666f0073354c37 *5f656e7472790073354b555f696e666f0073354b555f7265740073354b575f696e666f0073354b *575f656e7472790073354c625f64666c740073354c625f7674626c0073354c6e5f656e74727900 *733667735f696e666f00733667735f72657400733667755f696e666f00733667755f7265740073 *354c765f656e74727900546578747a69526561647a694c65785f7a644c723575526c766c32305f *7372740073376a565f7265740073376a355f696e666f0073376a365f696e666f0073376a365f72 *65740073376a355f726574004748437a69426173655f7a6477676364496e745f73727400733244 *685f72657400733244685f696e666f004748437a694e756d5f7a644c723278746c766c315f7372 *74004748437a694e756d5f7a644c723278786c766c335f737274004748437a694e756d5f72656d *496e74656765725f73727400733334345f7674626c007332487a5f315f616c7400733334645f69 *6e666f00733334645f726574007332487a5f325f616c74007332487a5f7674626c00733334615f *696e666f00733334615f72657400733334355f315f616c7400733249335f696e666f0073324933 *5f72657400733334395f696e666f00733334395f72657400733334385f696e666f00733334385f *72657400733334365f315f616c7400733334375f696e666f00733334375f72657400733334365f *325f616c7400733334365f7674626c00733334355f325f616c7400733334355f7674626c007333 *34345f315f616c7400733334345f325f616c7400733333515f7674626c00733333535f315f616c *740073324c6c5f696e666f0073324c6c5f72657400733333535f325f616c7400733333535f7674 *626c00733333525f696e666f00733333525f72657400733333515f315f616c7400733333545f31 *5f616c740073324b4f5f72657400733333545f325f616c7400733333545f7674626c0073333351 *5f325f616c74004748437a695265616c5f7a644c7235315a5a6c766c375f737274004748437a69 *5265616c5f7a64737a64646d6469765f7372740073364f635f7674626c0073364f635f315f616c *740073364f635f325f616c74004748437a695265616c5f7a64737a64646d6d6f645f7372740073 *364f395f7674626c0073364f615f696e666f0073364f615f7265740073364f395f315f616c7400 *73364f395f325f616c74004748437a695265616c5f7a64736576656e5f7372740073364f365f76 *74626c0073364f365f315f616c740073364f375f696e666f0073364f375f7265740073364f365f *325f616c74004748437a695265616c5f7a6477746f526174696f6e616c5f7372740073356d315f *7674626c0073356d315f64666c74004748437a695265616c5f6131345f7372740073364e495f69 *6e666f0073364e495f726574004748437a695265616c5f6131355f737274004748437a69526561 *6c5f71756f7452656d325f73727400733644505f7674626c00733644505f315f616c7400733644 *505f325f616c74004748437a695265616c5f6469764d6f64325f737274007336444f5f7674626c *007336444f5f315f616c74007336444f5f325f616c74004748437a695265616c5f71756f74325f *737274007336444e5f7674626c007336444e5f315f616c74007336444e5f325f616c7400474843 *7a695265616c5f72656d325f737274007336444d5f7674626c007336444d5f315f616c74007336 *444d5f325f616c74004748437a695265616c5f7a635f73727400733633415f696e666f00733633 *575f696e666f00733634615f696e666f00733634645f696e666f00733635315f696e666f007336 *35665f696e666f00733636465f696e666f00733641715f696e666f00733633415f656e74727900 *7336796d5f72657400733633575f656e74727900733679765f72657400733634615f656e747279 *00733634645f656e74727900733679515f696e666f00733679515f726574007336795a5f696e66 *6f007336795a5f72657400733635315f656e74727900733635665f656e7472790073367a775f69 *6e666f0073367a775f72657400733636455f696e666f00733636455f656e7472790073367a465f *696e666f0073367a465f7265740073367a765f315f616c7400733636465f656e7472790073367a *4f5f696e666f0073367a4f5f72657400733636645f696e666f00733636645f656e747279007336 *7a585f696e666f0073367a585f7265740073367a765f325f616c7400733636655f726574007336 *7a765f7674626c00733636655f696e666f0073367a755f315f616c740073367a755f325f616c74 *0073367a755f7674626c0073367a735f696e666f0073367a735f7265740073367a6b5f696e666f *0073367a6b5f7265740073367a685f72657400733641675f315f616c7400733641685f696e666f *00733641685f72657400733637655f656e74727900733641675f325f616c7400733641675f7674 *626c00733641665f315f616c7400733641665f325f616c7400733641665f7674626c0073364164 *5f696e666f00733641645f72657400733641715f656e747279007338536f5f696e666f00733853 *6f5f72657400546578747a69526561647a694c65785f7a644c7235754a6c766c31385f73727400 *733555335f696e666f00733555375f696e666f00733555335f656e74727900733555375f656e74 *727900546578747a69526561647a694c65785f7a644c723575506c766c31395f73727400733555 *665f696e666f007335556a5f696e666f00733555665f656e747279007335556a5f656e74727900 *546578747a69526561647a694c65785f7a644c723575566c766c32315f73727400733555725f69 *6e666f00733555765f696e666f00733555725f656e74727900733555765f656e74727900474843 *7a69426173655f6c766c315f737274004748437a694e756d5f7a644c723278426c766c355f7372 *7400733244355f7674626c007332437a5f696e666f007332437a5f726574007332434e5f315f61 *6c7400733334725f696e666f00733334725f726574007332434e5f325f616c74007332434e5f76 *74626c007333346f5f696e666f007333346f5f72657400733244355f315f616c74007333346e5f *696e666f007333346e5f726574007333346c5f315f616c74007333346d5f696e666f007333346d *5f726574007333346c5f325f616c74007333346c5f7674626c00733244355f325f616c74007333 *32545f696e666f00733332545f72657400733332535f696e666f00733332535f72657400733254 *685f696e666f00733254685f656e74727900733256325f7674626c00733256325f64666c740073 *3539375f7674626c00733539375f64666c74004748437a695265616c5f61365f73727400733651 *435f696e666f00733651435f72657400733651425f726574004748437a695265616c5f61385f73 *727400733651415f696e666f00733651415f726574004748437a695265616c5f6c766c31365f73 *727400733652765f726574004748437a695265616c5f6c766c31375f73727400733652745f7265 *74004748437a695265616c5f6131315f7372740073364e595f696e666f0073356b4c5f64666c74 *0073356b4c5f7674626c0073356b505f64666c740073356b505f7674626c0073364e5a5f726574 *0073364e595f726574004748437a695265616c5f6131325f737274004748437a695265616c5f61 *31335f737274004748437a695265616c5f7a647761355f7372740073356e4f5f64666c74007335 *6e4f5f7674626c0073356e4d5f64666c740073356e4d5f7674626c0073364e4d5f315f616c7400 *73356e485f696e666f0073356e485f7265740073364e4d5f325f616c740073364e4d5f7674626c *0073356f615f64666c740073356f615f7674626c0073356e575f315f616c740073356e575f325f *616c740073356e575f7674626c004748437a695265616c5f7a647761365f7372740073364e7a5f *696e666f0073356f575f64666c740073356f575f7674626c0073356f435f64666c740073356f43 *5f7674626c0073356f555f64666c740073356f555f7674626c0073364e445f315f616c74007335 *6f505f696e666f0073356f505f7265740073364e445f325f616c740073364e445f7674626c0073 *3570695f64666c7400733570695f7674626c00733570345f315f616c7400733570345f325f616c *7400733570345f7674626c0073356f795f64666c740073356f795f7674626c0073364e7a5f7265 *74004748437a695265616c5f7a64646d73686f774c6973745f73727400733547525f696e666f00 *733548615f696e666f00733647625f696e666f00733647625f72657400733647385f696e666f00 *733647385f72657400733547525f656e747279007336476e5f696e666f007336476e5f72657400 *7336476b5f696e666f007336476b5f72657400733548615f656e747279007336474a5f72657400 *733548485f696e666f00733548485f656e74727900733647485f726574007336477a5f696e666f *007336477a5f72657400733647775f696e666f00733647775f72657400733647535f656e747279 *004748437a695265616c5f746f526174696f6e616c325f7372740073354e585f7674626c007336 *44515f7265740073354e585f64666c7400546578747a69526561647a694c65785f7a644c723576 *316c766c32325f73727400733555445f696e666f00733555485f696e666f00733555445f656e74 *727900733555485f656e7472790073354c465f7674626c0073354c465f315f616c740073354c47 *5f696e666f0073354c475f7265740073354c465f325f616c7400733332695f7674626c00733332 *6b5f315f616c740073324e345f696e666f0073324e345f726574007333326b5f325f616c740073 *33326b5f7674626c00733332695f315f616c740073324e665f696e666f0073324e665f72657400 *7333326a5f315f616c740073324e6e5f696e666f0073324e6e5f726574007333326a5f325f616c *74007333326a5f7674626c00733332695f325f616c7400733332685f7674626c00733332685f31 *5f616c7400733332685f325f616c7400733332675f7674626c00733332675f315f616c74007333 *32675f325f616c7400733332355f7674626c00733332625f315f616c740073324e575f696e666f *0073324e575f72657400733332625f325f616c7400733332625f7674626c00733332355f315f61 *6c7400733332365f315f616c740073324f6c5f696e666f0073324f6c5f72657400733332365f32 *5f616c7400733332365f7674626c00733332355f325f616c7400733253575f696e666f00733253 *555f696e666f00733253555f656e74727900733253575f656e74727900733254375f696e666f00 *733254355f696e666f00733254355f656e74727900733254375f656e74727900733333765f7674 *626c00733333765f315f616c7400733333765f325f616c7400733333775f7674626c0073333377 *5f315f616c7400733333775f325f616c74004748437a695265616c5f7a6477615f737274007335 *35555f64666c7400733535555f7674626c007336526b5f315f616c74007336526b5f325f616c74 *007336526b5f7674626c007336526a5f72657400733652635f696e666f00733652655f315f616c *7400733536765f696e666f00733536765f72657400733652655f325f616c7400733652655f7674 *626c00733652635f726574004748437a695265616c5f7a647761325f73727400733537305f6466 *6c7400733537305f7674626c00733536515f315f616c7400733536515f325f616c740073353651 *5f7674626c00733652395f7265740073364f6d5f315f616c740073364f6e5f696e666f0073364f *6e5f7265740073364f6d5f325f616c740073364f6d5f7674626c0073364f695f315f616c740073 *364f6c5f7265740073364f6a5f315f616c740073364f6b5f696e666f0073364f6b5f7265740073 *364f6a5f325f616c740073364f6a5f7674626c0073364f695f325f616c740073364f695f767462 *6c007335696f5f696e666f007335696f5f7265740073364f735f315f616c740073364f745f696e *666f0073364f745f7265740073364f735f325f616c740073364f735f7674626c0073364f6f5f31 *5f616c740073364f725f696e666f0073364f725f7265740073364f6f5f325f616c740073364f6f *5f7674626c0073364f685f726574004748437a695265616c5f7a647761335f7372740073364e57 *5f696e666f0073356d6d5f64666c740073356d6d5f7674626c0073356d675f64666c740073356d *675f7674626c0073356d6b5f64666c740073356d6b5f7674626c0073356d6f5f64666c74007335 *6d6f5f7674626c0073364e585f7265740073364e575f726574004748437a695265616c5f7a6477 *61345f7372740073364e545f696e666f0073356d545f64666c740073356d545f7674626c007335 *6d4e5f64666c740073356d4e5f7674626c0073356d525f64666c740073356d525f7674626c0073 *356d565f64666c740073356d565f7674626c0073364e555f696e666f0073364e555f7265740073 *364e545f726574004748437a695265616c5f73686f7773507265635f7372740073364e655f696e *666f0073364e655f726574004748437a695265616c5f7a64646d73686f775f7372740054657874 *7a69526561647a694c65785f7a644c723576376c766c32335f73727400733555505f696e666f00 *733555545f696e666f00733555505f656e74727900733555545f656e74727900733254795f696e *666f00733254795f656e74727900733254785f64666c7400733254785f7674626c00733254415f *696e666f00733254415f656e74727900733331525f315f616c7400733331525f325f616c740073 *3331525f7674626c00733254545f696e666f00733254545f656e74727900733254535f64666c74 *00733254535f7674626c00733254565f696e666f00733254565f656e74727900733331515f315f *616c7400733331515f325f616c7400733331515f7674626c00733255625f696e666f0073325562 *5f656e74727900733255615f64666c7400733255615f7674626c00733255645f696e666f007332 *55645f656e74727900733331505f315f616c7400733331505f325f616c7400733331505f767462 *6c00733255735f696e666f00733255735f656e74727900733255725f64666c7400733255725f76 *74626c00733255755f696e666f00733255755f656e747279007333314f5f315f616c7400733331 *4f5f325f616c74007333314f5f7674626c004748437a695265616c5f7a647773686f7773507265 *635f737274007335394b5f696e666f007335394b5f656e747279007335394d5f696e666f007335 *394d5f656e747279007335394f5f696e666f007335394f5f656e74727900733539585f696e666f *00733539585f656e74727900733651785f72657400546578747a69526561647a694c65785f7a64 *4c723576646c766c32345f73727400733556315f696e666f00733556355f696e666f0073355631 *5f656e74727900733556355f656e74727900546578747a69526561647a694c65785f7a644c7235 *766a6c766c32355f73727400733556645f696e666f00733556685f696e666f00733556645f656e *74727900733556685f656e74727900546578747a69526561647a694c65785f7a644c723576706c *766c32365f73727400733556705f696e666f00733556745f696e666f00733556705f656e747279 *00733556745f656e74727900546578747a69526561647a694c65785f7a644c723576766c766c32 *375f73727400733556425f696e666f00733556465f696e666f00733556425f656e747279007335 *56465f656e74727900546578747a69526561647a694c65785f7a644c723576426c766c32385f73 *7274007335564e5f696e666f00733556525f696e666f007335564e5f656e74727900733556525f *656e74727900546578747a69526561647a694c65785f7a644c723576486c766c32395f73727400 *7335565a5f696e666f00733557335f696e666f007335565a5f656e74727900733557335f656e74 *727900546578747a69526561647a694c65785f7a644c7235764e6c766c33305f73727400733557 *625f696e666f00733557665f696e666f00733557625f656e74727900733557665f656e74727900 *546578747a69526561647a694c65785f7a644c723576546c766c33315f737274007335576e5f69 *6e666f00733557725f696e666f007335576e5f656e74727900733557725f656e74727900546578 *747a69526561647a694c65785f7a644c7235765a5a6c766c33325f737274007335577a5f696e66 *6f00733557445f696e666f007335577a5f656e74727900733557445f656e74727900546578747a *69526561647a694c65785f7a644c723577356c766c33335f737274007335574c5f696e666f0073 *3557505f696e666f007335574c5f656e74727900733557505f656e74727900546578747a695265 *61647a694c65785f7a644c723577626c766c33345f73727400733557585f696e666f0073355831 *5f696e666f00733557585f656e74727900733558315f656e74727900546578747a69526561647a *694c65785f7a644c723577686c766c33355f73727400733558395f696e666f00733558645f696e *666f00733558395f656e74727900733558645f656e74727900546578747a69526561647a694c65 *785f7a644c7235776e6c766c33365f737274007335586c5f696e666f00733558705f696e666f00 *7335586c5f656e74727900733558705f656e74727900546578747a69526561647a694c65785f7a *644c723577746c766c33375f73727400733558785f696e666f00733558425f696e666f00733558 *785f656e74727900733558425f656e74727900546578747a69526561647a694c65785f7a644c72 *35777a7a6c766c33385f737274007335584a5f696e666f007335584e5f696e666f007335584a5f *656e747279007335584e5f656e74727900546578747a69526561647a694c65785f7a644c723577 *466c766c33395f73727400733558565f696e666f007335585a5f696e666f00733558565f656e74 *7279007335585a5f656e74727900546578747a69526561647a694c65785f7a644c7235774c6c76 *6c34305f73727400733559375f696e666f00733559625f696e666f00733559375f656e74727900 *733559625f656e74727900546578747a69526561647a694c65785f7a644c723577526c766c3431 *5f737274007335596a5f696e666f007335596e5f696e666f007335596a5f656e74727900733559 *6e5f656e74727900546578747a69526561647a694c65785f7a644c723577586c766c34325f7372 *7400733559765f696e666f007335597a5f696e666f00733559765f656e747279007335597a5f65 *6e74727900546578747a69526561647a694c65785f7a644c723578336c766c34335f7372740073 *3559485f696e666f007335594c5f696e666f00733559485f656e747279007335594c5f656e7472 *7900546578747a69526561647a694c65785f7a644c723578396c766c34345f7372740073355954 *5f696e666f00733559585f696e666f00733559545f656e74727900733559585f656e7472790054 *6578747a69526561647a694c65785f7a644c723578666c766c34355f7372740073355a355f696e *666f0073355a395f696e666f0073355a355f656e7472790073355a395f656e7472790054657874 *7a69526561647a694c65785f7a644c7235786c6c766c34365f7372740073355a685f696e666f00 *73355a6c5f696e666f0073355a685f656e7472790073355a6c5f656e74727900546578747a6952 *6561647a694c65785f7a644c723578726c766c34375f7372740073355a745f696e666f0073355a *785f696e666f0073355a745f656e7472790073355a785f656e74727900546578747a6952656164 *7a694c65785f7a644c723578786c766c34385f7372740073355a465f696e666f0073355a4a5f69 *6e666f0073355a465f656e7472790073355a4a5f656e74727900546578747a69526561647a694c *65785f7a644c723578446c766c34395f7372740073355a525f696e666f0073355a565f696e666f *0073355a525f656e7472790073355a565f656e74727900546578747a69526561647a694c65785f *7a644c7235784a6c766c35305f73727400733630335f696e666f00733630375f696e666f007336 *30335f656e74727900733630375f656e74727900546578747a69526561647a694c65785f7a644c *723578506c766c35315f73727400733630665f696e666f007336306a5f696e666f00733630665f *656e747279007336306a5f656e74727900546578747a69526561647a694c65785f7a644c723578 *566c766c35325f73727400733630725f696e666f00733630765f696e666f00733630725f656e74 *727900733630765f656e747279006e6d5f6d61782e3000726561644c6f636b730077726974654c *6f636b7300726561644c6f636b0077726974654c6f636b007274734170694361706162696c6974 *790068735f696e69745f636f756e7400696e69745f737461636b005f5f47656e53796d436f756e *746572006e6578745f7468726561645f6964007368757474696e675f646f776e5f736368656475 *6c6572007363686564756c6500646574656374426c61636b486f6c65730072656164795f746f5f *676300746872656164537461636b4f766572666c6f770064656c657465546872656164496d6d65 *64696174656c790073757370656e6465645f6363616c6c696e675f746872656164730073636865 *64756c655468726561645f00776169745468726561645f00416c6c526f6f74730065787472615f *726f6f747300756e626c6f636b4f6e654c6f636b656400756e626c6f636b546872656164007072 *696e74546872656164426c6f636b616765007072696e745468726561645374617475730068616e *646c657273006e48616e646c657273006e5f6861736b656c6c5f68616e646c657273006d6f7265 *5f68616e646c65727300636f6e745f68616e646c65720067656e657269635f68616e646c657200 *757365725369676e616c730073617665645369676e616c730073687574646f776e5f68616e646c *657200737461626c655f7074725f66726565005350545f73697a650061646472546f537461626c *65486173680072656d6f7665496e646972656374696f6e73005469636b735065725365636f6e64 *00456c617073656454696d6553746172740043757272656e74456c617073656454696d65004375 *7272656e745573657254696d6500496e69745573657254696d6500496e6974456c617073656454 *696d6500496e6974456c61707365645374616d70004d75745573657254696d65004d7574456c61 *7073656454696d65004d7574456c61707365645374616d7000457869745573657254696d650045 *786974456c617073656454696d650047435f746f745f616c6c6f630047435f746f745f636f7069 *65640047435f73746172745f74696d650047435f746f745f74696d65004743655f73746172745f *74696d65004743655f746f745f74696d65004d61785265736964656e6379004176675265736964 *656e6379005265736964656e637953616d706c65730047435f73746172745f6661756c74730047 *435f656e645f6661756c74730067657454696d657300706167654661756c74730047435f636f6c *6c5f74696d6573007275625f62656c6c007374674465616c6c6f63466f72474d50007374675265 *616c6c6f63466f72474d5000737467416c6c6f63466f72474d50007468726561644c6162656c73 *007469636b735f746f5f637478745f7377697463680068616e646c655f7469636b007374675f61 *705f73746b5f6e007374675f73746b5f736176655f6e007374675f61705f73746b5f7000737467 *5f73746b5f736176655f70007374675f61705f73746b5f66007374675f73746b5f736176655f66 *007374675f61705f73746b5f64007374675f73746b5f736176655f64007374675f61705f73746b *5f6c007374675f73746b5f736176655f6c007374675f61705f73746b5f6e6e007374675f73746b *5f736176655f6e6e007374675f61705f73746b5f6e70007374675f73746b5f736176655f6e7000 *7374675f61705f73746b5f706e007374675f73746b5f736176655f706e007374675f61705f7374 *6b5f7070007374675f73746b5f736176655f7070007374675f61705f73746b5f6e6e6e00737467 *5f73746b5f736176655f6e6e6e007374675f61705f73746b5f6e6e70007374675f73746b5f7361 *76655f6e6e70007374675f61705f73746b5f6e706e007374675f73746b5f736176655f6e706e00 *7374675f61705f73746b5f6e7070007374675f73746b5f736176655f6e7070007374675f61705f *73746b5f706e6e007374675f73746b5f736176655f706e6e007374675f61705f73746b5f706e70 *007374675f73746b5f736176655f706e70007374675f61705f73746b5f70706e007374675f7374 *6b5f736176655f70706e007374675f61705f73746b5f707070007374675f73746b5f736176655f *707070007374675f61705f73746b5f70707070007374675f73746b5f736176655f707070700073 *74675f61705f73746b5f7070707070007374675f73746b5f736176655f7070707070007374675f *61705f73746b5f707070707070007374675f73746b5f736176655f707070707070007374675f61 *705f73746b5f70707070707070007374675f73746b5f736176655f70707070707070007374675f *61705f73746b5f7070707070707070007374675f73746b5f736176655f70707070707070700073 *74675f626c6f636b5f74616b656d7661725f726574007374675f626c6f636b5f7075746d766172 *5f726574007374675f63746f695f7265745f5231705f375f726574007374675f63746f695f7265 *745f5231705f365f726574007374675f63746f695f7265745f5231705f355f726574007374675f *63746f695f7265745f5231705f345f726574007374675f63746f695f7265745f5231705f335f72 *6574007374675f63746f695f7265745f5231705f325f726574007374675f63746f695f7265745f *5231705f315f726574007374675f63746f695f7265745f5231705f305f726574007374675f6374 *6f695f7265745f5231705f726574007374675f63746f695f7265745f5231756e70745f656e7472 *79007374675f63746f695f7265745f52316e5f656e747279007374675f63746f695f7265745f46 *315f656e747279007374675f63746f695f7265745f44315f656e747279007374675f63746f695f *7265745f4c315f656e747279007374675f63746f695f7265745f565f656e747279007374675f61 *70706c795f696e746572705f656e747279007374675f494e445f656e747279007374675f494e44 *5f6469726563745f656e747279007374675f494e445f305f656e747279007374675f494e445f31 *5f656e747279007374675f494e445f325f656e747279007374675f494e445f335f656e74727900 *7374675f494e445f345f656e747279007374675f494e445f355f656e747279007374675f494e44 *5f365f656e747279007374675f494e445f375f656e747279007374675f494e445f535441544943 *5f656e747279007374675f494e445f5045524d5f656e747279007374675f494e445f4f4c444745 *4e5f656e747279007374675f494e445f4f4c4447454e5f5045524d5f656e747279007374675f42 *4c41434b484f4c455f656e747279007374675f424c41434b484f4c455f42515f656e7472790073 *74675f4341465f424c41434b484f4c455f656e747279007374675f54534f5f656e747279007374 *675f4556414355415445445f656e747279007374675f5745414b5f656e747279007374675f4445 *41445f5745414b5f656e747279007374675f4e4f5f46494e414c495a45525f656e747279007374 *675f464f524549474e5f656e747279007374675f535441424c455f4e414d455f656e7472790073 *74675f46554c4c5f4d5641525f656e747279007374675f454d5054595f4d5641525f656e747279 *007374675f454e445f54534f5f51554555455f656e747279007374675f454e445f4d55545f4c49 *53545f656e747279007374675f4d55545f434f4e535f656e747279007374675f454e445f455843 *455054494f4e5f4c4953545f656e747279007374675f455843455054494f4e5f434f4e535f656e *747279007374675f4152525f574f5244535f656e747279007374675f4d55545f4152525f505452 *535f656e747279007374675f4d55545f4152525f505452535f46524f5a454e5f656e7472790073 *74675f4d55545f5641525f656e747279007374675f73656c5f7265745f305f7570645f696e666f *007374675f73656c5f7265745f305f7570645f726574007374675f73656c5f7265745f315f7570 *645f696e666f007374675f73656c5f7265745f315f7570645f726574007374675f73656c5f7265 *745f325f7570645f696e666f007374675f73656c5f7265745f325f7570645f726574007374675f *73656c5f7265745f335f7570645f696e666f007374675f73656c5f7265745f335f7570645f7265 *74007374675f73656c5f7265745f345f7570645f696e666f007374675f73656c5f7265745f345f *7570645f726574007374675f73656c5f7265745f355f7570645f696e666f007374675f73656c5f *7265745f355f7570645f726574007374675f73656c5f7265745f365f7570645f696e666f007374 *675f73656c5f7265745f365f7570645f726574007374675f73656c5f7265745f375f7570645f69 *6e666f007374675f73656c5f7265745f375f7570645f726574007374675f73656c5f7265745f38 *5f7570645f696e666f007374675f73656c5f7265745f385f7570645f726574007374675f73656c *5f7265745f395f7570645f696e666f007374675f73656c5f7265745f395f7570645f7265740073 *74675f73656c5f7265745f31305f7570645f696e666f007374675f73656c5f7265745f31305f75 *70645f726574007374675f73656c5f7265745f31315f7570645f696e666f007374675f73656c5f *7265745f31315f7570645f726574007374675f73656c5f7265745f31325f7570645f696e666f00 *7374675f73656c5f7265745f31325f7570645f726574007374675f73656c5f7265745f31335f75 *70645f696e666f007374675f73656c5f7265745f31335f7570645f726574007374675f73656c5f *7265745f31345f7570645f696e666f007374675f73656c5f7265745f31345f7570645f72657400 *7374675f73656c5f7265745f31355f7570645f696e666f007374675f73656c5f7265745f31355f *7570645f726574007374675f73656c5f7265745f305f6e6f7570645f696e666f007374675f7365 *6c5f7265745f305f6e6f7570645f726574007374675f73656c5f7265745f315f6e6f7570645f69 *6e666f007374675f73656c5f7265745f315f6e6f7570645f726574007374675f73656c5f726574 *5f325f6e6f7570645f696e666f007374675f73656c5f7265745f325f6e6f7570645f7265740073 *74675f73656c5f7265745f335f6e6f7570645f696e666f007374675f73656c5f7265745f335f6e *6f7570645f726574007374675f73656c5f7265745f345f6e6f7570645f696e666f007374675f73 *656c5f7265745f345f6e6f7570645f726574007374675f73656c5f7265745f355f6e6f7570645f *696e666f007374675f73656c5f7265745f355f6e6f7570645f726574007374675f73656c5f7265 *745f365f6e6f7570645f696e666f007374675f73656c5f7265745f365f6e6f7570645f72657400 *7374675f73656c5f7265745f375f6e6f7570645f696e666f007374675f73656c5f7265745f375f *6e6f7570645f726574007374675f73656c5f7265745f385f6e6f7570645f696e666f007374675f *73656c5f7265745f385f6e6f7570645f726574007374675f73656c5f7265745f395f6e6f757064 *5f696e666f007374675f73656c5f7265745f395f6e6f7570645f726574007374675f73656c5f72 *65745f31305f6e6f7570645f696e666f007374675f73656c5f7265745f31305f6e6f7570645f72 *6574007374675f73656c5f7265745f31315f6e6f7570645f696e666f007374675f73656c5f7265 *745f31315f6e6f7570645f726574007374675f73656c5f7265745f31325f6e6f7570645f696e66 *6f007374675f73656c5f7265745f31325f6e6f7570645f726574007374675f73656c5f7265745f *31335f6e6f7570645f696e666f007374675f73656c5f7265745f31335f6e6f7570645f72657400 *7374675f73656c5f7265745f31345f6e6f7570645f696e666f007374675f73656c5f7265745f31 *345f6e6f7570645f726574007374675f73656c5f7265745f31355f6e6f7570645f696e666f0073 *74675f73656c5f7265745f31355f6e6f7570645f726574007374675f7365715f6672616d655f72 *6574006d616c6c6f634279746573525758006f6273637572655f6363616c6c5f7265745f636f64 *6500667265655f6c69737400616c6c6f634d65676147726f757000696e69744d426c6f636b0066 *7265654d65676147726f757000696e69744361706162696c69747900673073305f70636e745f6b *657074007468756e6b5f73656c6563746f725f64657074680067635f616c6c6f635f626c6f636b *004e006e65775f626c6f636b73006d616a6f725f6763007374617469635f6f626a65637473007a *65726f5f6d757461626c655f6c697374006f6c645f746f5f626c6f636b73006d61726b5f737461 *636b5f626465736372006d61726b5f737461636b006d61726b5f7370006d61726b5f73706c696d *0073636176656e67655f6c617267650073636176656e67655f6d75745f6f6e63655f6c69737400 *657661635f67656e0073636176656e67650073636176656e67655f6d757461626c655f6c697374 *006d61726b5f726f6f74006d61726b5f7765616b5f7074725f6c697374007765616b5f73746167 *65006f6c645f616c6c5f746872656164730073636176656e67655f737461746963006d61726b5f *737461636b5f6f766572666c6f776564006f6c6467656e5f7363616e5f62640073636176656e67 *655f6d61726b5f737461636b0074726176657273655f7765616b5f7074725f6c697374007a6572 *6f5f7374617469635f6f626a6563745f6c69737400657661637561746500636f70795061727400 *6d6b4d7574436f6e73006661696c65645f746f5f657661630065766163756174655f6c61726765 *006576616c5f7468756e6b5f73656c6563746f720073636176656e67655f6c617267655f737274 *5f6269746d61700073636176656e676554534f0073636176656e67655f737461636b0073636176 *656e67655f504150006f6c6467656e5f7363616e0073636176656e67655f6f6e65007363617665 *6e67655f6c617267655f6269746d61700073636176656e67655f6172675f626c6f636b00746872 *6561644c617a79426c61636b486f6c650074687265616453717565657a65537461636b00746872 *6561645f737461746963007468726561645f737461636b007468726561645f6172675f626c6f63 *6b007468726561645f54534f007570646174655f6677645f6c61726765007468726561645f5041 *50007570646174655f667764007468726561645f6f626a007570646174655f6677645f636f6d70 *616374007570646174655f626b77645f636f6d70616374006f626a5f73697a6557007468726561 *645f6d75745f6f6e63655f6c697374007468726561640068617368576f72640068617368537472 *00636f6d70617265576f726400636f6d7061726553747200616c6c6f635365676d656e74006578 *70616e6400667265654c69737400616c6c6f63486173684c6973740066726565486173684c6973 *7400616c6c6f63486173685461626c655f006170705f707472735f6974626c00696e7374616c6c *5f7674616c726d5f68616e646c6572006d795f6d6d61700067656e5f6d61705f6d626c6f636b73 *006e6578745f726571756573742e300075736167655f746578740073706c6974527473466c6167 *7300737472657175616c006465636f6465006261645f6f7074696f6e006f70656e5f7374617473 *5f66696c650053797374656d7a694469726563746f72795f6c766c31335f636c6f737572650047 *48437a695265616c5f72656d315f656e747279004748437a69494f426173655f5265736f757263 *65427573795f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a6466 *5265616456657273696f6e52616e67655f636c6f7375726500446973747269627574696f6e7a69 *4765744f70745f4f70745f7374617469635f696e666f004748437a69526561645f7a64737a6464 *6d726561647350726563345f656e747279004748437a69494f426173655f486561704f76657266 *6c6f775f636c6f7375726500446973747269627574696f6e7a694d616b655f64656661756c744d *61696e5f696e666f00446973747269627574696f6e7a694765744f70745f52657475726e496e4f *726465725f636f6e5f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f526567756c617246696c655f7374617469635f656e747279005f5f737467696e69745f446973 *747269627574696f6e7a695061636b6167655f00686561704f766572666c6f77004748437a6953 *686f775f6134335f636c6f7375726500546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c723467517a64776e696c41626f76654e6573745f696e666f00446973747269 *627574696f6e7a694765744f70745f5265714172675f7374617469635f696e666f00446174617a *694d617962655f7a646645714d617962655f636c6f73757265004748437a69494f426173655f45 *786974457863657074696f6e5f7374617469635f696e666f0053797374656d7a69506f7369787a *6946696c65735f61636365737354696d655f636c6f7375726500546578747a69526561647a694c *65785f7a644c723576486c766c32395f656e747279004748437a695265616c5f72656d315f636c *6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c7234 *686d7a6477696e64656e745f656e747279007374675f61705f365f7570645f656e747279005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32345f636c6f7375 *726500546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f7a67 *7a677a655f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f73 *6d617274436f7079536f75726365735f73727464004748437a695265616c5f7a647761325f656e *74727900446973747269627574696f6e7a6953657475705f706172736550726f6772616d617469 *6361417267735f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c73 *5f6f7a75415050454e445f656e747279004748437a69456e756d5f65666474496e745f656e7472 *79004748437a69526561645f726561645f696e666f00446174617a694d617962655f6d61704d61 *7962655f656e74727900546578747a695072657474795072696e747a69487567686573504a5f7a *644c723468307a647766696c6c4e425f656e747279004748437a69426173655f6d6f64496e747a *685f656e747279004748437a69456e756d5f656e756d46726f6d546f325f696e666f0044697374 *7269627574696f6e7a6953657475705f57697468416c65785f636f6e5f656e747279005f5f676d *706e5f636d7000546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467436c766c32335f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a69 *52656164505f6d616e795f696e666f00446973747269627574696f6e7a694765744f70745f5265 *714172675f656e747279004748437a69426173655f7a737a65335f656e74727900546578747a69 *506172736572436f6d62696e61746f72737a6952656164507265635f6661696c5f656e74727900 *4748437a694c6973745f627265616b5f636c6f7375726500446973747269627574696f6e7a6950 *61636b6167654465736372697074696f6e5f4c6962726172795f636f6e5f696e666f004748437a *69526561645f7a6473726561644c6973745072656344656661756c74315f696e666f006f6c645f *7765616b5f7074725f6c69737400546578747a69526561647a694c65785f7a644c723574316138 *5f656e74727900446973747269627574696f6e7a6950617273655574696c735f73686f7746696c *65506174685f7372740053797374656d7a694469726563746f72795f6c766c32365f696e666f00 *4748437a694e756d5f7a6c5f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f6c69624d6f64756c65735f696e666f00446973747269627574696f *6e7a6956657273696f6e5f5468697356657273696f6e5f656e747279007374675f626c6f636b5f *74616b656d7661725f696e666f00446174617a694c6973745f756e6c696e65735f636c6f737572 *65006d616b65537461626c654e616d657a685f66617374004748437a6953686f775f6135385f63 *6c6f73757265004748437a69494f426173655f557365724572726f725f636c6f73757265005379 *7374656d7a694469726563746f72795f7a644c723962416c766c31395f656e74727900756c6c6f *6e675f666f726d61745f737472696e6700446973747269627574696f6e7a695061727365557469 *6c735f7a646653686f77504572726f725f636c6f7375726500446973747269627574696f6e7a69 *53696d706c657a695574696c735f6d6f64756c65546f46696c65506174685f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c34305f696e666f0047 *48437a69494f426173655f5061747465726e4d617463684661696c5f7374617469635f656e7472 *790053797374656d7a69506f7369787a6946696c65735f7468726f774572726e6f49664d696e75 *73317a75315f656e74727900446973747269627574696f6e7a6953657475705f636f6e66696748 *6164646f636b5f656e747279007374675f73656c5f305f7570645f696e666f0053797374656d7a *69436d645f61315f696e666f004748437a69494f426173655f6133345f636c6f73757265005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c723467436c766c32335f *656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7365744e6f6e426c *6f636b696e6746445f636c6f73757265004748437a69526561645f7265616450726563325f656e *747279005f5f737467696e69745f446973747269627574696f6e7a69436f6d7061747a69457863 *657074696f6e5f004748437a6953686f775f6131365f656e74727900446973747269627574696f *6e7a6950617273655574696c735f7a646766726f6d5374616e7a7a614669656c645f656e747279 *00446973747269627574696f6e7a6953657475705f4e6863466c61675f7374617469635f656e74 *72790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c375f73 *6c6f77004748437a694e756d5f71756f74496e74656765725f656e747279007374675f696e7465 *72705f636f6e737472335f656e7472790053797374656d7a69436d645f7468726f774572726e6f *49664d696e7573315f656e74727900546578747a69526561647a694c65785f7a644c7235744c61 *33315f656e747279004748437a694c6973745f7a644c723272696c766c31315f656e7472790073 *74675f4556414355415445445f696e666f004748437a694e756d5f71756f74496e74656765725f *696e666f00546578747a69526561647a694c65785f50756e635f636f6e5f656e74727900446973 *747269627574696f6e7a6953657475705f636f6e6669674873633268735f636c6f737572650044 *6973747269627574696f6e7a694765744f70745f4e6f6e4f70745f636f6e5f656e747279006e65 *774279746541727261797a685f6661737400446973747269627574696f6e7a6953657475705f52 *65676973746572436d645f636f6e5f656e74727900446973747269627574696f6e7a694765744f *70745f5065726d7574655f636c6f7375726500546578747a69526561647a694c65785f7a644c72 *35416c6c766c3131375f636c6f7375726500546578747a69526561647a694c65785f436861725f *636f6e5f656e74727900546578747a69526561647a694c65785f7a644c723574666131355f636c *6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164505f7a67 *7a677a655f696e666f0053797374656d7a69436d645f61315f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f6f7074696f6e735f636c6f737572 *65004748437a6953686f775f6134325f696e666f004748437a69426173655f6c65496e745f696e *666f00446973747269627574696f6e7a6956657273696f6e5f76657273696f6e4272616e63685f *696e666f004748437a69494f426173655f526561644275666665725f636c6f7375726500546578 *747a69526561647a694c65785f7a644c723579706c766c36375f636c6f73757265005379737465 *6d7a69456e7669726f6e6d656e745f676574456e765f656e747279004748437a695265616c5f61 *31355f696e666f004748437a695265616c5f5a43444672616374696f6e616c5f7374617469635f *696e666f004748437a69494f5f7a6477636f6d6d69744275666665727a715f736c6f7700474843 *7a69496e745f7a737a65335f636c6f73757265007374675f65786974004748437a6953686f775f *7a646653686f774d617962655f656e7472790053797374656d7a69506f7369787a695479706573 *5f7a646653686f77435069645f636c6f7375726500546578747a69526561647a694c65785f7a64 *4c723576376c766c32335f696e666f005f5f737467696e69745f53797374656d7a69506f736978 *7a695265736f757263655f00446973747269627574696f6e7a6953657475705f7a646766726f6d *416374696f6e5f696e666f004748437a69426173655f7a657a655f656e747279007374675f6170 *5f355f7570645f696e666f00446973747269627574696f6e7a69436f6d7061747a695265616450 *5f636861725f696e666f00446973747269627574696f6e7a6953657475705f496e737450726566 *69785f636f6e5f656e747279004748437a69494f426173655f7a647773686f777350726563345f *737274640053797374656d7a69506f7369787a6946696c65735f67657446696c65537461747573 *5f696e666f00446973747269627574696f6e7a694765744f70745f4e6f4172675f636f6e5f696e *666f007374675f73656c5f31335f6e6f7570645f696e666f00546578747a69526561647a694c65 *785f7a644c7235744c6133315f696e666f004748437a69426173655f6e65496e745f656e747279 *00546578747a69526561647a694c65785f7a644c72354148657461315f656e747279004748437a *694c6973745f7a644c723272576c766c33315f636c6f73757265004748437a694c6973745f636f *6e6361744d61705f696e666f00616c6c6f63617465645f627974657300466f726569676e7a6943 *7a694572726f725f7468726f774572726e6f49664d696e7573317a755f656e7472790044697374 *7269627574696f6e7a6953657475705f7a646653686f77416374696f6e5f636c6f737572650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f736b69704d616e795f696e66 *6f0053797374656d7a694469726563746f72795f6c766c31325f656e7472790053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c33375f696e666f004748437a69 *5265616c5f646976315f636c6f73757265004748437a69494f426173655f494f45786365707469 *6f6e5f636f6e5f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f616c *6c6f636142797465735f636c6f73757265006e657744796e434146004748437a6953686f775f61 *32325f696e666f00546578747a69526561647a694c65785f7a644c7235766c6134315f636c6f73 *7572650053797374656d7a694469726563746f72795f646f657346696c6545786973745f696e66 *6f00446973747269627574696f6e7a6953696d706c657a695574696c735f7769746854656d7046 *696c655f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f5075626c69 *63446f6d61696e5f636c6f73757265004748437a69494f426173655f4e6f427566666572696e67 *5f7374617469635f696e666f00546578747a69526561647a694c65785f7a644c723579316c766c *35355f636c6f737572650053797374656d7a694469726563746f72795f6c766c32325f636c6f73 *757265007274735f6d6b43686172004748437a69526561645f706172656e735f696e666f00696e *697453746f72616765004748437a694c6973745f666f6c6472325f656e747279004748437a6942 *6173655f69645f636c6f73757265004748437a695265616c5f61345f656e747279004748437a69 *4e756d5f73686f7773507265635f656e74727900546578747a69506172736572436f6d62696e61 *746f72737a6952656164505f72756e5f696e666f00446973747269627574696f6e7a6950617273 *655574696c735f70617273654f707456657273696f6e5f7372740053797374656d7a6944697265 *63746f72795f6c766c32345f696e666f0053797374656d7a69457869745f65786974576974685f *696e666f004748437a69496e745f7a64777368696674335f696e666f0053797374656d7a69436d *645f73797374656d5f696e666f004748437a69496e745f636f6d70617265325f636c6f73757265 *00546578747a69526561647a694c65785f7a644c72357a7a4e6c766c3130305f636c6f73757265 *00446973747269627574696f6e7a6953657475705f5265676973746572436d645f696e666f0047 *48437a69426173655f7a64664f72645a4d5a4e5f656e74727900446973747269627574696f6e7a *69457874656e73696f6e5f46756e6374696f6e616c446570656e64656e636965735f7374617469 *635f696e666f007374675f67635f756e70745f72315f726574004748437a69496e745f7a64646d *6d696e5f636c6f73757265004748437a6948616e646c655f7a644c724a64726561647a75666c61 *67735f656e7472790053797374656d7a69506f7369787a6946696c65735f7468726f774572726e *6f49664d696e7573317a755f636c6f73757265004748437a69494f5f6c766c32335f656e747279 *004748437a69526561645f7265616450726563345f636c6f737572650044697374726962757469 *6f6e7a6950617273655574696c735f416d6269676f757350617273655f7374617469635f656e74 *727900546578747a69526561647a694c65785f7a644c7235754878315f636c6f73757265004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f6861734c6962735f *7372740053797374656d7a694469726563746f72795f6765744469726563746f7279436f6e7465 *6e74735f636c6f73757265004748437a6953686f775f6132385f656e747279004748437a694e75 *6d5f646e7a756c6973745f696e666f007374675f73656c5f315f6e6f7570645f696e666f007374 *675f54534f5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a6477 *6363616c6c35375f656e747279004748437a69494f426173655f6c766c33325f696e666f006d6b *6469724040474c4942435f322e30004748437a69496e745f72656d325f636c6f73757265004748 *437a6953686f775f73686f77436861725f636c6f7375726500446973747269627574696f6e7a69 *53657475705f7061727365496e7374616c6c417267735f636c6f7375726500546578747a695061 *72736572436f6d62696e61746f72737a6952656164505f63686f6963655f656e74727900546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f72756e5f636c6f73757265 *004748437a69546f7048616e646c65725f64735f636c6f7375726500546578747a695061727365 *72436f6d62696e61746f72737a6952656164505f4765745f7374617469635f696e666f00474843 *7a69494f426173655f426c6f636b65644f6e446561644d5661725f7374617469635f656e747279 *004748437a69426173655f6571537472696e675f656e74727900446973747269627574696f6e7a *695061636b6167655f70617273655061636b6167654e616d655f636c6f73757265005f5f737467 *696e69745f4748437a69466c6f6174004748437a6953686f775f6134325f656e74727900474843 *7a69426173655f636f6d70617265496e747a685f696e666f00446973747269627574696f6e7a69 *436f6d7061747a6946696c65506174685f69734162736f6c757465506174685f656e7472790069 *6e6974527473466c61677344656661756c7473004748437a694c6973745f64726f705768696c65 *5f696e666f00446973747269627574696f6e7a695061636b6167655f70617273655061636b6167 *654e616d655f73727400446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f6672616d65776f726b735f656e74727900446973747269627574696f6e7a695061636b *6167654465736372697074696f6e5f6c6963656e73655f636c6f73757265005f5f693638362e67 *65745f70635f7468756e6b2e6378004748437a69496e745f49387a685f636f6e5f656e74727900 *4748437a69456e756d5f5a4344456e756d5f7374617469635f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f6d61696e7461696e65725f696e66 *6f004748437a69426173655f7a737a65325f696e666f004748437a6948616e646c655f68466c75 *73685f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f636f75 *6e745f696e666f004748437a6953686f775f73686f77537472696e675f636c6f73757265005465 *78747a69526561647a694c65785f7a644c723575466133345f636c6f73757265004748437a6945 *6e756d5f656e756d46726f6d5468656e335f656e74727900546578747a69526561647a694c6578 *5f7a644c723574376131315f636c6f7375726500546578747a695072657474795072696e747a69 *487567686573504a5f5374725f7374617469635f656e747279007374675f4152525f574f524453 *5f696e666f004748437a6948616e646c655f6132345f636c6f73757265004748437a69494f5f7a *644c723966746c766c395f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f62 *7261636b65745f696e666f00446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f6275696c6461626c655f696e666f007374675f73656c5f31355f6e6f7570645f69 *6e666f00546578747a695072657474795072696e747a69487567686573504a5f72656e6465725f *696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f73706c *697446696c65506174685f636c6f73757265007374675f61705f335f7570645f656e7472790044 *6174617a69486173685461626c655f7a647768617368537472696e675f656e7472790044697374 *7269627574696f6e7a69436f6d7061747a6952656164505f73657042795f656e74727900446973 *747269627574696f6e7a6953696d706c657a695574696c735f6765744f7074696f6e7346726f6d *536f757263655f636c6f7375726500546578747a69526561647a694c65785f7a644c7235786e61 *36325f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c33315f656e74727900446973747269627574696f6e7a695061636b6167655f7061727365 *5061636b61676549645f636c6f7375726500446973747269627574696f6e7a694765744f70745f *6765744f70745f656e74727900446973747269627574696f6e7a69436f6d7061747a6944697265 *63746f72795f6372656174654469726563746f727949664d697373696e675f656e747279004748 *437a6948616e646c655f666c75736857726974654275666665724f6e6c795f636c6f7375726500 *4748437a695265616c5f6c766c315f636c6f73757265005f5f646976646933004748437a69494f *426173655f6c766c33345f656e747279004748437a69496e745f7a70325f696e666f0044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f7a646645714c69627261 *72795f636c6f7375726500446174617a695475706c655f5a32545f7374617469635f696e666f00 *446973747269627574696f6e7a694765744f70745f4f70744172675f7374617469635f656e7472 *7900446973747269627574696f6e7a6953657475705f436d645f636f6e5f696e666f0044697374 *7269627574696f6e7a69436f6d7061747a6946696c65506174685f70617468506172656e74735f *73727400446973747269627574696f6e7a694c6963656e73655f7a646766726f6d4c6963656e73 *655f636c6f73757265004748437a695265616c5f6131325f696e666f004748437a694c6973745f *6c766c32305f656e747279004748437a695265616c5f7a647761315f696e666f004748437a6952 *65616c5f7a64646d73686f775f636c6f73757265004748437a69494f426173655f457869744578 *63657074696f6e5f636f6e5f656e74727900446973747269627574696f6e7a6953696d706c657a *695574696c735f6765744f7074696f6e7346726f6d536f757263655f696e666f004748437a6957 *6f72645f7a6d335f656e747279007374675f73656c5f31315f7570645f656e747279004748437a *695265616c5f7a647761335f636c6f7375726500446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e5f7061636b6167655f696e666f00446973747269627574696f6e *7a6953657475705f4f74686572436f6d70696c65725f7374617469635f696e666f004469737472 *69627574696f6e7a6953657475705f4c6966745f636f6e5f656e747279004748437a694c697374 *5f7265706c69636174655f636c6f73757265004748437a69526561645f706172656e5f696e666f *004748437a6953686f775f73686f774c6973745f636c6f7375726500446973747269627574696f *6e7a69436f6d7061747a6946696c65506174685f646c6c457874656e73696f6e5f656e74727900 *446973747269627574696f6e7a6953657475705f496e73745072656669785f7374617469635f65 *6e747279007374675f73656c5f305f7570645f656e747279004748437a6953686f775f6132375f *636c6f7375726500446174617a695479706561626c655f7a644c72364f346c766c345f656e7472 *79004748437a695265616c5f7a6477665f656e747279007374675f67635f6c31004748437a6954 *6f7048616e646c65725f7a644c723336556c766c5f696e666f00546578747a6950617273657243 *6f6d62696e61746f72737a6952656164505f7a644c723174676c766c315f636c6f737572650054 *6578747a69526561647a694c65785f7a644c7235775a5a6135385f656e747279007374675f7574 *5f315f305f756e7265675f696e666f00546578747a69526561647a694c65785f7a644c7235754a *6c766c31385f696e666f005f5f737467696e69745f53797374656d7a69506f7369787a6954656d *7000446973747269627574696f6e7a694d616b655f64656661756c744d61696e4e6f526561645f *696e666f00446973747269627574696f6e7a694765744f70745f4e6f4172675f636f6e5f656e74 *7279004748437a6948616e646c655f6c766c31345f696e666f00446973747269627574696f6e7a *6956657273696f6e5f76657273696f6e4272616e63685f636c6f73757265004748437a69526561 *6c5f6131335f696e666f005f5f737467696e69745f4748437a694c697374004748437a69457272 *5f756e74616e676c655f656e74727900446174617a69486173685461626c655f6e65775f656e74 *7279004748437a6948616e646c655f66647a757374646f75745f636c6f73757265005379737465 *6d7a69456e7669726f6e6d656e745f676574456e765f696e666f00546578747a69507265747479 *5072696e747a69487567686573504a5f73706163655f636c6f7375726500546578747a69526561 *647a694c65785f7a644c723578356135395f696e666f00676364496e747a685f66617374005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c5f696e666f004748 *437a69576f72645f737563634572726f725f696e666f004748437a69526561645f7a644c723639 *666c766c31385f696e666f00446174617a694c6973745f6c696e65735f636c6f73757265004748 *437a6953686f775f7a64737a64646d73686f774c697374325f636c6f7375726500446973747269 *627574696f6e7a6950617273655574696c735f70617273655061636b6167654e616d65515f636c *6f7375726500446973747269627574696f6e7a69457874656e73696f6e5f7a646766726f6d4578 *74656e73696f6e5f636c6f73757265004748437a694e756d5f7a64646d6d696e5f696e666f0053 *797374656d7a694469726563746f72795f7a644c72396145615f636c6f73757265005379737465 *6d7a69506f7369787a69496e7465726e616c735f636f6e73747a75667a75736574666c5f656e74 *727900446973747269627574696f6e7a6950617273655574696c735f7a646766726f6d50617273 *65526573756c745f636c6f7375726500446973747269627574696f6e7a6953657475705f576974 *68416c65785f696e666f007374675f454e445f4d55545f4c4953545f696e666f00546578747a69 *526561647a694c65785f7a644c72357a7a706c766c38395f636c6f737572650053797374656d7a *69494f7a694572726f725f696f6553657446696c654e616d655f656e7472790053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c32355f696e666f004748437a69 *426173655f7a737a65325f636c6f7375726500446973747269627574696f6e7a69457874656e73 *696f6e5f54656d706c6174654861736b656c6c5f636c6f7375726500446973747269627574696f *6e7a6953657475705f7a6467746f436d645f696e666f00466f726569676e7a69437a694572726f *725f7468726f774572726e6f49664d696e75733152657472797a755f636c6f7375726500474843 *7a69494f5f7a644c7239663961355f636c6f737572650053797374656d7a694469726563746f72 *795f72656d6f76654469726563746f72795f656e74727900546578747a69526561647a694c6578 *5f7a644c7235787a7a6136345f696e666f005f5f737467696e69745f466f726569676e7a695374 *6f7261626c65004748437a694e756d5f656e756d44656c7461496e74656765725f696e666f0047 *48437a69546f7048616e646c65725f6c766c345f636c6f73757265004748437a69494f42617365 *5f6132325f636c6f73757265004748437a69426173655f6c766c335f696e666f004748437a6953 *686f775f7a64737a64646d73686f77345f636c6f73757265004748437a694c6973745f7a644c72 *32726d6c766c31335f696e666f004748437a694c6973745f7a7a69705f656e7472790044697374 *7269627574696f6e7a6950617273655574696c735f70617273654c69624e616d65515f73727400 *4748437a6948616e646c655f77616e745265616461626c6548616e646c655f696e666f00446973 *747269627574696f6e7a6953657475705f436f6d70696c65725f7374617469635f656e74727900 *5f5f737467696e69745f446973747269627574696f6e7a694765744f70745f00546578747a6952 *6561647a694c65785f7a644c72357a7a6e6c766c38385f636c6f73757265004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f7a646766726f6d4275696c64496e *666f5f656e747279007374675f61705f737461636b5f656e747269657300546578747a69526561 *647a694c65785f7a644c7235784a6c766c35305f696e666f004748437a69494f426173655f6c76 *6c32335f696e666f00466f726569676e7a69437a694572726f725f7468726f774572726e6f4966 *52657472794d6179426c6f636b5f656e747279004748437a694e756d5f7369676e756d315f636c *6f7375726500446973747269627574696f6e7a6953657475705f55736572466c61675f636c6f73 *75726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6578 *74656e73696f6e735f696e666f00446973747269627574696f6e7a6956657273696f6e5f456172 *6c69657256657273696f6e5f636f6e5f696e666f00546578747a695072657474795072696e747a *69487567686573504a5f7a644c723661656173797a75646973706c61795f656e74727900446973 *747269627574696f6e7a694765744f70745f7573616765496e666f5f636c6f7375726500474843 *7a69426173655f636f6d70617265496e747a685f656e747279004748437a69426173655f5a3054 *5f636c6f7375726500446973747269627574696f6e7a694765744f70745f7a646766726f6d4172 *6744657363725f696e666f004748437a695265616c5f73686f7773507265635f696e666f004748 *437a694c6973745f7a7a69705f696e666f004748437a69526561645f63686f6f73655f696e666f *0053797374656d7a69494f7a694572726f725f7472795f636c6f73757265004469737472696275 *74696f6e7a6950617273655574696c735f72756e505f696e666f005f5f737472746f645f696e74 *65726e616c4040474c4942435f322e3000756e626c6f636b4f6e6500466f726569676e7a69437a *694572726f725f7468726f774572726e6f496652657472795f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f73616e697479436865636b506163 *6b6167655f73727400636d70496e74656765727a685f6661737400446973747269627574696f6e *7a694765744f70745f7a6467746f4f70744b696e645f656e747279004748437a69526561645f61 *375f656e747279004748437a69556e69636f64655f7a6477697355707065725f636c6f73757265 *004748437a69494f5f7a6477706f6c797a75627566526561645f636c6f7375726500746f776c6f *7765724040474c4942435f322e30004748437a6953686f775f73686f775369676e6564496e745f *696e666f004748437a69494f426173655f756e73616665506572666f726d494f5f656e74727900 *446973747269627574696f6e7a69457874656e73696f6e5f5479706553796e6f6e796d496e7374 *616e6365735f7374617469635f696e666f00446973747269627574696f6e7a694c6963656e7365 *5f7a646766726f6d4c6963656e73655f696e666f004748437a6948616e646c655f7a644c726330 *7a7a7468726f774572726e6f49664d696e75733152657472797a755f696e666f0072656e616d65 *4040474c4942435f322e30004748437a695265616c5f7a64646d73686f774c6973745f696e666f *00546578747a695072657474795072696e747a69487567686573504a5f7a644c723467796c766c *32315f656e747279004748437a69526561645f726561644e756d626572335f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6946696c65506174685f69735061746853657061 *7261746f725f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f *7061727365446570656e64656e63795f636c6f73757265004748437a69494f426173655f454f46 *5f7374617469635f656e747279004748437a694e756d5f7369676e756d315f656e747279004469 *73747269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f4e4843466c *61675f636c6f73757265004748437a69494f5f6c766c32325f736c6f77004748437a69496e745f *73756363325f636c6f73757265004748437a69556e69636f64655f6973416c7068614e756d5f69 *6e666f0053797374656d7a694469726563746f72795f6372656174654469726563746f72795f69 *6e666f004748437a69426173655f7a64646d7a737a655f656e747279004748437a69576f72645f *7a644c723943386c766c31325f696e666f004748437a69494f426173655f68614275666665724d *6f64655f636c6f7375726500446973747269627574696f6e7a694765744f70745f4f70745f656e *74727900446973747269627574696f6e7a6953657475705f57697468436f6d70696c65725f696e *666f00446973747269627574696f6e7a6950617273655574696c735f50617273654f6b5f656e74 *7279004748437a695074725f706c75735074725f696e666f00446973747269627574696f6e7a69 *436f6d7061747a694469726563746f72795f636f707946696c655f636c6f737572650044697374 *7269627574696f6e7a69436f6d7061747a6952656164505f6265747765656e5f656e7472790047 *48437a6953686f775f6133375f636c6f73757265004748437a694e756d5f7a647771756f745265 *6d496e74656765725f636c6f73757265004748437a69494f426173655f6c766c32305f656e7472 *790053797374656d7a694469726563746f72795f7a644c723962416c766c31395f696e666f0044 *6973747269627574696f6e7a6950726550726f636573737a69556e6c69745f756e6c69745f696e *666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f657870 *6f7365644d6f64756c65735f696e666f004748437a69494f426173655f6c766c32365f696e666f *00546578747a695072657474795072696e747a69487567686573504a5f7a644c723466536c766c *5f656e747279005f5f737467696e69745f4748437a6953746f7261626c655f0044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f6c69624275696c64496e666f5f *636c6f7375726500546578747a69526561647a694c65785f7a644c7235784a6c766c35305f636c *6f7375726500446973747269627574696f6e7a6953657475705f486164646f636b436d645f7374 *617469635f696e666f00737461727454696d6572004748437a69494f5f7a644c723966726c766c *385f696e666f0053797374656d7a69506f7369787a6946696c65735f6c766c375f696e666f0047 *48437a69494f426173655f426c6f636b65644f6e446561644d5661725f7374617469635f696e66 *6f00546578747a695072657474795072696e747a69487567686573504a5f7a644c723467796c76 *6c32315f696e666f00446973747269627574696f6e7a6950617273655574696c735f7061727365 *436f6d6d614c6973745f656e74727900546578747a69526561647a694c65785f7a644c72354139 *6c766c3131315f636c6f73757265004748437a694e756d5f7a737a655f636c6f73757265004748 *437a69494f5f7a647777726974654c696e65735f636c6f7375726500446973747269627574696f *6e7a6950726550726f636573737a69556e6c69745f706c61696e5f636c6f737572650044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f7061727365486f6f6b65 *644275696c64496e666f5f636c6f7375726500446973747269627574696f6e7a694c6963656e73 *655f47504c5f7374617469635f696e666f00546578747a69526561647a694c65785f537472696e *675f7374617469635f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f6c766c31355f696e666f004748437a69496e745f6469764d6f64325f656e747279004748437a *69426173655f5a4d5a4e5f7374617469635f656e747279004748437a69556e69636f64655f7a64 *77697355707065725f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f7a64776363616c6c31395f636c6f73757265004748437a69494f5f6c766c31385f636c6f7375 *7265004748437a69426173655f706c7573496e745f636c6f73757265007374675f72616973655f *656e747279004748437a69494f5f7a644c723966766c766c31305f656e747279005f5f73746769 *6e69745f466f726569676e7a69537461626c655074725f007274735f61726776004748437a6949 *4f426173655f6c766c33335f696e666f004748437a694c6973745f6c766c32305f696e666f005f *5f656e636f6465446f75626c65007374675f626c6f636b5f74616b656d766172004748437a6952 *65616c5f6131305f636c6f73757265005f5f737467696e69745f53797374656d7a69506f736978 *7a69556e697374640053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c31395f696e666f004748437a6948616e646c655f6c766c35385f636c6f73757265005f5f *737467696e69745f466f726569676e7a694d61727368616c7a69506f6f6c004469737472696275 *74696f6e7a6953696d706c657a695574696c735f66696e645061636b616765446573635f656e74 *727900446973747269627574696f6e7a69457874656e73696f6e5f4e6f4d6f6e6f6d6f72706869 *736d5265737472696374696f6e5f636c6f7375726500446973747269627574696f6e7a69506163 *6b6167654465736372697074696f6e5f73657475704d6573736167655f656e747279004748437a *694c6973745f7a64777370616e5f696e666f004748437a694c6973745f706f6c797a75666f6c64 *72325f696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e6c6974 *5f496e636c7564655f7374617469635f656e747279004748437a6953686f775f6137345f636c6f *73757265004748437a69466c6f61745f7a644c723967636c766c33335f636c6f73757265004748 *437a69496e745f7a64777368696674335f636c6f7375726500446973747269627574696f6e7a69 *457874656e73696f6e5f657874656e73696f6e73546f4e4843466c61675f737274004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f6a6f696e46696c654e616d655f *73727400446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c69 *62726172795f656e747279004d61696e5f6d61696e5f696e666f00736967616374696f6e404047 *4c4942435f322e30005f5f737467696e69745f466f726569676e7a69435f007274735f6576616c *004748437a6948616e646c655f7769746848616e646c657a757a715f636c6f7375726500474843 *7a69494f5f7a644c723966706c766c375f636c6f7375726500446973747269627574696f6e7a69 *436f6d7061747a6952656164505f6765745f636c6f7375726500446973747269627574696f6e7a *69436f6d7061747a6952656164505f6265747765656e5f696e666f004748437a69494f42617365 *5f6c766c32395f656e74727900546578747a69526561647a694c65785f7a644c72357a7a377833 *345f636c6f73757265004748437a6953686f775f6134375f636c6f73757265004748437a695265 *616c5f746f496e7465676572315f696e666f004748437a69494f426173655f48616e646c657a75 *7a755f636f6e5f656e74727900446973747269627574696f6e7a6950726550726f636573737a69 *556e6c69745f7a646766726f6d436c61737369666965645f636c6f73757265004748437a695265 *616c5f7a64737a64646d6469765f656e74727900446973747269627574696f6e7a695365747570 *5f636f6e6669675072656669785f656e747279007374675f41505f656e74727900446973747269 *627574696f6e7a695061636b6167654465736372697074696f6e5f6578654d6f64756c65735f63 *6c6f737572650063617463687a685f66617374004748437a6953686f775f6133355f636c6f7375 *7265004748437a69496e745f6c766c31365f696e666f00546578747a69526561647a694c65785f *7a644c7235785a5a6c766c35345f636c6f7375726500446174617a694569746865725f52696768 *745f7374617469635f656e747279004748437a6953545265665f53545265665f7374617469635f *656e74727900446174617a694d617962655f66726f6d4a7573745f636c6f737572650044697374 *7269627574696f6e7a6956657273696f6e5f496e7465727365637456657273696f6e52616e6765 *735f636f6e5f656e747279007374675f73656c5f375f6e6f7570645f656e747279005379737465 *6d7a69506f7369787a69496e7465726e616c735f6c766c31325f636c6f73757265004748437a69 *5265616c5f61365f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f44 *6570656e64656e63795f656e74727900546578747a69526561647a694c65785f7a644c72357654 *6c766c33315f696e666f004748437a6948616e646c655f7a644c7262583761325f656e74727900 *4748437a6953686f775f69746f735f696e666f0053797374656d7a69506f7369787a6946696c65 *735f61636365737354696d655f696e666f00446973747269627574696f6e7a6956657273696f6e *5f496e7465727365637456657273696f6e52616e6765735f656e747279004748437a6953686f77 *5f6135335f636c6f73757265004748437a695265616c5f7a635f636c6f73757265004748437a69 *494f426173655f4173796e63457863657074696f6e5f636f6e5f696e666f004469737472696275 *74696f6e7a6953696d706c657a695574696c735f72617753797374656d50617468457869745f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35 *385f696e666f005f5f737467696e69745f446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f00737461745f65786974004748437a69494f5f7a644c7239655a5a61 *5f696e666f004748437a69494f426173655f52656164577269746548616e646c655f636c6f7375 *7265004748437a695265616c5f7a64737a765f656e74727900546578747a69526561647a694c65 *785f7a644c723577426135345f696e666f00546578747a69526561647a694c65785f7a644c7235 *74466132385f636c6f73757265004748437a6953686f775f6131305f636c6f7375726500474843 *7a69496e745f7369676e756d325f636c6f7375726500657865636c4040474c4942435f322e3000 *546578747a69526561647a694c65785f7a644c723578336c766c34335f696e666f004748437a69 *426173655f6765496e745f636c6f73757265005f5f737467696e69745f466f726569676e7a6943 *7a694572726f7200546578747a69526561647a694c65785f7a644c723541376c766c3131305f63 *6c6f7375726500446174617a695479706561626c655f676f315f656e747279004748437a69496e *745f7a64646d7a677a655f636c6f7375726500446973747269627574696f6e7a6953657475705f *7061727365496e7374616c6c417267735f737274004748437a69496e745f626f756e646564456e *756d46726f6d5468656e5f656e74727900546578747a695072657474795072696e747a69487567 *686573504a5f4e6573745f7374617469635f696e666f004748437a69494f426173655f42756666 *65725f636f6e5f696e666f00446174617a694d617962655f4a7573745f636c6f73757265007374 *675f73656c5f355f7570645f696e666f00546578747a69526561647a694c65785f7a644c723576 *426c766c32385f696e666f00546578747a69526561647a694c65785f7a644c72357a7a35613638 *5f656e747279004748437a69494f426173655f6c766c32365f636c6f73757265004748437a6953 *686f775f5a434453686f775f7374617469635f696e666f00546578747a69526561647a694c6578 *5f7a644c723575586133375f656e74727900546578747a69526561647a694c65785f7a644c7235 *7a7a316c657841736369695f656e74727900546578747a695072657474795072696e747a694875 *67686573504a5f7a644c723467537a647761626f76654e6573745f696e666f004748437a694261 *73655f437a685f7374617469635f656e74727900446973747269627574696f6e7a69436f6d7061 *747a6952656164505f7a64664d6f6e61645061727365725f636c6f73757265004748437a695265 *616c5f6c766c31365f696e666f00446973747269627574696f6e7a69436f6d7061747a69526561 *64505f6265747765656e5f636c6f73757265007374675f61705f70707070705f696e666f004748 *437a69494f426173655f6133345f696e666f007274735f676574576f72643332004748437a6952 *65616c5f7a637a635f636c6f73757265004748437a69494f426173655f5265736f757263655661 *6e69736865645f7374617469635f696e666f00546578747a69526561647a694c65785f7a644c72 *68576c65784469676974735f656e74727900446973747269627574696f6e7a6950617273655574 *696c735f46726f6d537472696e675f696e666f004748437a69494f426173655f72657475726e49 *4f5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f636f756e *745f737274004748437a6948616e646c655f7a644c7262583961335f636c6f7375726500737467 *5f73656c5f345f7570645f696e666f00446174617a695479706561626c655f7a64776d6b417070 *54795f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4578697374656e *7469616c5175616e74696669636174696f6e5f7374617469635f696e666f007374675f4d55545f *4152525f505452535f46524f5a454e5f696e666f00446174617a694569746865725f4c6566745f *7374617469635f696e666f00446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f5061636b6167654465736372697074696f6e5f7374617469635f696e666f007374 *675f73656c5f315f7570645f696e666f004748437a694e756d5f7a677a655f696e666f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164507265635f737465705f656e74 *7279006e657750696e6e65644279746541727261797a685f666173740044697374726962757469 *6f6e7a69436f6d7061747a694469726563746f72795f6372656174654469726563746f72794966 *4d697373696e675f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164 *505f6d756e6368315f656e747279004748437a69426173655f646976496e747a685f656e747279 *00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f4578656375 *7461626c655f636f6e5f696e666f004748437a695074725f46756e5074725f636f6e5f696e666f *00446174617a694c6973745f69735072656669784f665f696e666f004748437a6948616e646c65 *5f7a644c7262596a6c766c31355f696e666f00546578747a69526561647a694c65785f7a644c72 *3578726c766c34375f656e74727900546578747a69526561647a694c65785f6137305f656e7472 *7900446973747269627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e *6765735f636f6e5f656e747279004748437a695061636b5f756e7061636b43537472696e675f63 *6c6f73757265007374675f61705f385f7570645f696e666f007374675f61705f6c5f696e666f00 *53797374656d7a69506f7369787a69496e7465726e616c735f53747265616d5f636c6f73757265 *00446973747269627574696f6e7a6953657475705f7061727365486164646f636b417267735f69 *6e666f005f5f737467696e69745f4748437a69526561645f00446973747269627574696f6e7a69 *4c6963656e73655f4c47504c5f7374617469635f656e7472790053797374656d7a69506f736978 *7a69496e7465726e616c735f7a64776363616c6c34395f636c6f73757265004748437a694e756d *5f7a64664e756d496e745f636c6f73757265005f5f737467696e69745f466f726569676e7a6943 *7a69537472696e67006c6f6f6b7570537461626c654e616d65007274735f6d6b46756e50747200 *4748437a6948616e646c655f7a644c7263307a7a7468726f774572726e6f49664d696e75733152 *657472797a755f656e7472790053797374656d7a69494f7a694572726f725f696f655365744669 *6c654e616d655f636c6f7375726500446174617a694d617962655f4a7573745f696e666f005465 *78747a69506172736572436f6d62696e61746f72737a6952656164505f737472696e675f656e74 *7279004748437a6948616e646c655f7a644c726258446131385f636c6f73757265004748437a69 *53686f775f6133325f696e666f004748437a69494f426173655f4173796e63457863657074696f *6e5f636f6e5f656e74727900446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f5061636b6167654465736372697074696f6e5f7374617469635f656e7472790054 *6578747a69526561647a694c65785f7a644c723578686136315f636c6f73757265004748437a69 *53686f775f7a64646d73686f774c6973745f636c6f7375726500446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f4275696c64496e666f5f636c6f737572650047 *48437a69494f426173655f4c696e65427566666572696e675f636c6f7375726500446973747269 *627574696f6e7a69436f6d7061747a6946696c65506174685f636f6d6d6f6e506172656e745f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3466536c766c5f636c6f73757265007374675f73656c5f31345f6e6f7570645f696e666f004748 *437a695265616c5f5a437a765f7374617469635f656e74727900546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c723661656173797a75646973706c61795f636c6f73 *7572650053797374656d7a694469726563746f72795f6c6f6e677a75706174687a7573697a7a65 *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f6132 *325f636c6f73757265004748437a69426173655f6571496e745f636c6f73757265004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f4c6962726172795f737461 *7469635f656e74727900446973747269627574696f6e7a6953657475705f636d644f7074696f6e *735f696e666f00436f6e74726f6c7a694d6f6e61645f7a64776c6966744d325f696e666f005465 *78747a69526561647a694c65785f7a644c723576316c766c32325f636c6f737572650053797374 *656d7a69506f7369787a69496e7465726e616c735f6c766c31345f636c6f73757265004748437a *69546f7048616e646c65725f6473315f636c6f7375726500446973747269627574696f6e7a6950 *61636b6167654465736372697074696f6e5f706b6755726c5f656e747279004469737472696275 *74696f6e7a6953657475705f576974684873633268735f636f6e5f656e74727900446973747269 *627574696f6e7a6953657475705f7a646766726f6d436f6e666967466c6167735f696e666f0044 *6973747269627574696f6e7a694765744f70745f7a646766726f6d4172674f726465725f696e66 *6f007374675f6e6f666f726365494f5f696e666f00446973747269627574696f6e7a6953696d70 *6c657a695574696c735f7769746854656d7046696c655f696e666f004748437a6953686f775f61 *37345f696e666f004748437a694172725f7a644c723575446c766c365f656e7472790044697374 *7269627574696f6e7a6950617273655574696c735f7a6467746f5374616e7a7a614669656c645f *636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f726177 *53797374656d457869745f656e74727900436f6e74726f6c7a694d6f6e61645f666f6c644d5f65 *6e747279004748437a69496e745f6c766c32365f656e747279004748437a695265616c5f6c766c *355f696e666f007374675f42434f5f656e74727900546578747a695072657474795072696e747a *69487567686573504a5f7a6c7a675f696e666f004748437a69466c6f61745f7a64777a64737072 *6f7065724672616374696f6e5f696e666f004748437a69496e745f7a64646d73686f775f696e66 *6f00546578747a695072657474795072696e747a69487567686573504a5f7a644c7234686f7a64 *776d756c74697a7563685f636c6f73757265004748437a695265616c5f7a64737a64646d6d6f64 *5f696e666f00546578747a69526561647a694c65785f7a644c723541766c766c3132325f636c6f *73757265004748437a694c6973745f7a7a6970576974685f696e666f005f5f737467696e69745f *4748437a69576f72645f006763537461626c655074725461626c65004748437a6953686f775f61 *34385f696e666f00546578747a69526561647a694c65785f7a644c723576706c766c32365f656e *74727900466f726569676e7a6953746f7261626c655f706f6c797a75616c69676e6d656e74325f *636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f7a646766726f *6d504572726f725f696e666f00546578747a69526561647a694c65785f7a644c723578566c766c *35325f636c6f7375726500446973747269627574696f6e7a69457874656e73696f6e5f45787465 *6e7369626c655265636f7264735f636c6f7375726500446973747269627574696f6e7a6953696d *706c657a695574696c735f6d6b4c69624e616d655f656e747279004748437a6948616e646c655f *77616e745265616461626c6548616e646c657a715f696e666f00546578747a69526561647a694c *65785f7a644c723577586c766c34325f656e747279004748437a69576f72645f7a644c72394361 *6c766c31335f656e747279004748437a6948616e646c655f6c766c32335f636c6f737572650047 *48437a69426173655f7a644c723265586c766c5f656e74727900546578747a6950617273657243 *6f6d62696e61746f72737a6952656164505f4661696c5f7374617469635f696e666f0044697374 *7269627574696f6e7a69436f6d7061747a6946696c65506174685f6a6f696e50617468735f656e *74727900446973747269627574696f6e7a69436f6d7061747a694469726563746f72795f72656d *6f76654469726563746f72795265637572736976655f696e666f00446973747269627574696f6e *7a69436f6d7061747a6946696c65506174685f6368616e676546696c654578745f737274007374 *675f61705f645f72657400466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c32 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c72357544705f696e666f00 *546578747a695072657474795072696e747a69487567686573504a5f4e696c41626f76655f636f *6e5f696e666f004748437a69526561645f7a644c723639686c766c31395f636c6f737572650044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6275696c646162 *6c655f656e747279004748437a69426173655f7a695f636c6f73757265004748437a695265616c *5f5a43444672616374696f6e616c5f636f6e5f656e747279004748437a694e756d5f7a64777368 *6f7773507265635f636c6f73757265004748437a69496e745f71756f74325f696e666f00446973 *747269627574696f6e7a695061636b6167654465736372697074696f6e5f706b6755726c5f636c *6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c7234 *674b6e696c426573696465315f636c6f7375726500446973747269627574696f6e7a6953657475 *705f48756773466c61675f7374617469635f696e666f00446973747269627574696f6e7a694c69 *63656e73655f4c47504c5f636c6f73757265004748437a695265616c5f6576656e5f696e666f00 *4748437a6948616e646c655f68436c6f73657a7568656c705f656e7472790072656d6f76654861 *73685461626c65004748437a6953686f775f6135345f696e666f004748437a69494f426173655f *48617264776172654661756c745f636c6f737572650053797374656d7a69506f7369787a69496e *7465726e616c735f4644547970655f636c6f737572655f74626c00446973747269627574696f6e *7a6956657273696f6e5f706172736556657273696f6e5f656e747279004748437a695265616c5f *7a64736576656e5f656e747279004748437a69576f72645f7a70335f696e666f005f5f73746769 *6e69745f466f726569676e7a69537461626c6550747200446973747269627574696f6e7a694578 *74656e73696f6e5f416c6c6f77556e646563696461626c65496e7374616e6365735f7374617469 *635f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f52657375 *6c745f656e74727900546578747a69506172736572436f6d62696e61746f72737a695265616450 *5f7a644c723174676c766c315f696e666f00446973747269627574696f6e7a6953657475705f70 *61727365476c6f62616c417267735f73727400546578747a69526561647a694c65785f7a644c72 *35777a7a6c766c33385f636c6f73757265004748437a69494f426173655f7a647773686f777350 *726563325f696e666f004748437a69456e756d5f7a644c723261666c766c31355f636c6f737572 *6500446973747269627574696f6e7a69436f6d7061747a6952656164505f526573756c745f696e *666f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6973416273 *6f6c757465506174685f636c6f7375726500446973747269627574696f6e7a6953657475705f7a *64664571436f6d70696c6572466c61766f725f636c6f7375726500446973747269627574696f6e *7a69457874656e73696f6e5f456d707479446174614465636c735f7374617469635f656e747279 *004748437a69526561645f7265616450726563325f696e666f004748437a69426173655f636f6e *73745f696e666f004748437a6948616e646c655f7374646f75745f696e666f0044697374726962 *7574696f6e7a6953696d706c657a695574696c735f64656661756c745061636b61676544657363 *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a64 *4c723467496c766c32345f656e747279004748437a69496e745f70726564325f636c6f73757265 *004748437a69496e745f4936347a685f7374617469635f696e666f007274735f676574466c6f61 *74004748437a69494f5f6c766c32335f696e666f004748437a69546f7048616e646c65725f7265 *706f7274537461636b4f766572666c6f775f696e666f004748437a694c6973745f6c766c33325f *636c6f73757265004748437a695765616b5f72756e46696e616c697a7a657242617463685f636c *6f7375726500546578747a69526561647a694c65785f7a644c723577316134385f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c7234674d6f6e654c69 *6e6572315f636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f776974684c69625f656e747279004748437a694c6973745f7370616e5f636c6f *73757265007374675f73656c5f355f6e6f7570645f656e747279004748437a69526561645f7a64 *737a64646d726561647350726563315f656e74727900546578747a695072657474795072696e74 *7a69487567686573504a5f7365705f696e666f004748437a69496e745f66726f6d456e756d325f *656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f7370 *6c697446696c654e616d655f737274004748437a69496e745f7a64646d7a675f696e666f004748 *437a69456e756d5f7a644c723979676f7a75646e7a75696e747a7566625f696e666f0054657874 *7a69526561647a694c65785f7a644c723575786c766c31365f656e7472790053797374656d7a69 *506f7369787a69496e7465726e616c735f6f7a75524457525f656e747279004748437a6953746f *7261626c655f726561645074724f66665074725f696e666f004748437a6953686f775f7a64737a *64646d73686f77335f656e74727900546578747a69506172736572436f6d62696e61746f72737a *6952656164507265635f72657365745f636c6f737572650053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c33315f636c6f73757265004748437a69526561645f *7a64737a64646d726561647350726563325f656e74727900466f726569676e7a694d6172736861 *6c7a69416c6c6f635f7a64776363616c6c5f696e666f004748437a69496e745f73686f77735072 *6563325f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952656164 *507265635f72657475726e5f696e666f00446174617a694c6973745f696e746572737065727365 *5f656e74727900696e73657274486173685461626c6500546578747a695072657474795072696e *747a69487567686573504a5f7a644c723467457a64777370616365735f696e666f004748437a69 *526561645f6c766c32315f636c6f7375726500446973747269627574696f6e7a6953696d706c65 *7a695574696c735f7769746854656d7046696c655f656e74727900446973747269627574696f6e *7a69436f6d7061747a6952656164505f6761746865725f696e666f004748437a695265616c5f69 *6e66696e6974795f636c6f73757265004748437a69494f426173655f6131395f636c6f73757265 *004748437a69526561645f6c6578505f656e747279004748437a6953686f775f6137315f636c6f *73757265004748437a6948616e646c655f6c766c32305f636c6f73757265004748437a6948616e *646c655f7769746848616e646c657a715f636c6f7375726500446174617a695479706561626c65 *5f6c676f5f636c6f7375726500446973747269627574696f6e7a6953657475705f706172736550 *726f6772616d6174696361417267735f656e74727900546578747a69526561647a694c65785f7a *644c723578526136375f696e666f00446973747269627574696f6e7a69436f6d7061747a695265 *6164505f706661696c5f656e747279004748437a694172725f535441727261795f636f6e5f656e *747279005f5f737467696e69745f466f726569676e7a69437a6954797065735f007374675f6361 *7463685f6672616d655f305f726574004748437a6948616e646c655f6132345f656e7472790047 *48437a69494f426173655f4d5661725f636f6e5f656e747279004748437a69426173655f69645f *656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f637a75636c6f7365 *6469725f696e666f007274735f6d6b496e7400546578747a69526561647a694c65785f7a644c72 *3579766c766c37305f636c6f73757265004748437a69494f426173655f494f457863657074696f *6e5f636f6e5f696e666f00666f726b7a685f666173740064656c657465416c6c54687265616473 *004748437a695265616c5f7a64646d73686f774c6973745f656e747279004748437a69556e6963 *6f64655f6973416c7068615f696e666f004748437a69426173655f636f6d70617265496e745f65 *6e747279004748437a69426173655f47545f636c6f73757265004748437a694e756d5f656e756d *46726f6d5468656e546f5f696e666f004748437a69494f5f7a6477685075744275667a715f656e *74727900446973747269627574696f6e7a6953657475705f7061727365556e7265676973746572 *417267735f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c33355f656e7472790053797374656d7a69494f5f7075745374724c6e5f696e666f0044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73686f77506163 *6b6167654465736372697074696f6e5f696e666f004748437a69494f5f6c766c31355f656e7472 *790053797374656d7a69436d645f73797374656d5f656e747279004748437a69576f72645f7a64 *646d73686f775f636c6f73757265004748437a694c6973745f706f6c797a75666f6c6472325f63 *6c6f737572650063726561746541646a7573746f720068735f6164645f726f6f74004748437a69 *53686f775f6132335f636c6f73757265004748437a694e756d5f7a644c723278766c766c325f63 *6c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6c766c315f696e *666f004748437a69496e745f6c766c31365f656e747279004748437a69494f426173655f446976 *69646542795a5a65726f5f7374617469635f696e666f004748437a69426173655f7a644c723266 *336c766c325f656e74727900546578747a695072657474795072696e747a69487567686573504a *5f72656e6465725f656e747279004748437a6953686f775f7a647773686f774c6974436861725f *696e666f00436f6e74726f6c7a694d6f6e61645f6c6966744d5f656e747279005f5f737467696e *69745f446973747269627574696f6e7a6956657273696f6e5f00446973747269627574696f6e7a *6953657475705f7061727365436f6e666967757265417267735f636c6f73757265004748437a69 *494f426173655f6861427566666572735f636c6f73757265004748437a69426173655f6c766c31 *5f656e747279004748437a69546f7048616e646c65725f7a644c7233376d6c766c31315f656e74 *727900546578747a69526561647a694c65785f53796d626f6c5f7374617469635f696e666f0044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f7a6467746f5061727365725f *656e747279004748437a694e756d5f6c766c31305f636c6f73757265004748437a69496e745f73 *69676e756d325f656e74727900446174617a695475706c655f5a34545f7374617469635f656e74 *7279007374675f73656c5f31345f7570645f696e666f004748437a6953686f775f6132325f636c *6f73757265004748437a6953686f775f6137365f636c6f7375726500446973747269627574696f *6e7a69436f6d7061747a6952656164505f636861725f656e74727900446973747269627574696f *6e7a69436f6d7061747a6952656164505f63686f6963655f636c6f73757265007274735f676574 *496e74333200546578747a69526561647a694c65785f7a644c723541686c766c3131355f636c6f *73757265004748437a69426173655f7a657a655f696e666f004748437a69526561645f6c766c32 *355f636c6f737572650053797374656d7a69506f7369787a6954797065735f7a64664571434d6f *64655f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f4f746865724c *6963656e73655f7374617469635f656e74727900676574416c6c6f636174696f6e73004748437a *694e756d5f7a644c7232787a7a6c766c345f696e666f0053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c32375f736c6f77005f5f737467696e69745f4748437a *6953545f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a *6467746f45786563757461626c655f696e666f004748437a694e756d5f4a7a685f636f6e5f696e *666f00446973747269627574696f6e7a694765744f70745f456e644f664f7074735f7374617469 *635f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f4275696c64496e666f5f696e666f00446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f77726974655061636b6167654465736372697074696f6e5f696e666f *00756e736166655468617741727261797a685f66617374007374675f4d55545f4152525f505452 *535f696e666f00446973747269627574696f6e7a6956657273696f6e5f4561726c696572566572 *73696f6e5f696e666f0053797374656d7a694469726563746f72795f7a644c723962457468726f *774572726e6f49664d696e7573317a755f696e666f004748437a69426173655f5a30545f737461 *7469635f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a6467746f5665 *7273696f6e52616e67655f696e666f006765747069644040474c4942435f322e30004748437a69 *4c6973745f7a644c723272676c766c31305f636c6f73757265004748437a694e756d5f656e756d *46726f6d5f656e7472790053797374656d7a694469726563746f72795f6c766c32385f636c6f73 *757265005f44594e414d494300446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f726561645061636b6167654465736372697074696f6e5f737274004748437a69 *526561645f7a646652656164426f6f6c5f636c6f7375726500446973747269627574696f6e7a69 *4c6963656e73655f425344345f7374617469635f656e74727900546578747a6950726574747950 *72696e747a69487567686573504a5f456d7074795f7374617469635f696e666f00546578747a69 *526561647a694c65785f7a644c723577546135375f636c6f737572650044697374726962757469 *6f6e7a6953657475705f7a646766726f6d466c61675f656e747279007374675f73656c5f335f75 *70645f656e747279004748437a69576f72645f7369676e756d335f696e666f0044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f6c6963656e736546696c655f69 *6e666f007374675f626c6f636b4173796e63457863657074696f6e737a685f7265745f656e7472 *7900446174617a695479706561626c655f7a644c727864686173684b505f656e74727900446174 *617a694569746865725f4c6566745f7374617469635f656e74727900446973747269627574696f *6e7a6953657475705f57697468436f6d70696c65725f636f6e5f696e666f00546578747a695072 *657474795072696e747a69487567686573504a5f687365705f696e666f00546578747a69526561 *647a694c65785f7a644c7235786e6136325f696e666f005f5f737467696e69745f53797374656d *7a69506f7369787a695479706573005f5f737467696e69745f53797374656d7a69506f7369787a *69556e697374645f004748437a694c6973745f7a644c7232726f6c766c31345f656e7472790073 *74675f7570645f6672616d655f355f72657400446174617a69486173685461626c655f68617368 *537472696e675f696e666f00446973747269627574696f6e7a69436f6d7061747a695265616450 *5f4765745f696e666f004748437a6948616e646c655f6c766c35325f636c6f7375726500446973 *747269627574696f6e7a695061636b6167654465736372697074696f6e5f45786563757461626c *655f7374617469635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f *637a75726d6469725f696e666f00446973747269627574696f6e7a6950617273655574696c735f *6669656c6453686f775f656e747279004748437a69494f5f68476574436f6e74656e74735f696e *666f00546578747a69526561647a694c65785f7a644c72357542785f636c6f73757265005f5f73 *7467696e69745f53797374656d7a69436d645f004748437a69494f5f7a644c7239667a7a6c766c *31325f656e747279004748437a69576f72645f7a657a65345f696e666f00446973747269627574 *696f6e7a695061636b6167655f70617273655061636b61676549645f7372740044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f6275696c64496e666f5f656e74 *727900446973747269627574696f6e7a6953657475705f5072656669785f656e74727900446973 *747269627574696f6e7a6953696d706c657a695574696c735f66696e645061636b616765446573 *635f73727400446973747269627574696f6e7a69436f6d7061747a6952656164505f656e644279 *315f696e666f004748437a695265616c5f7a647773686f7773507265635f696e666f004748437a *69456e756d5f7a644c7232616a6c766c31375f696e666f004748437a694572725f6c766c375f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f637a7563686d6f645f *636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f686f6d65706167655f636c6f73757265005f5f737467696e69745f44697374726962757469 *6f6e7a69457874656e73696f6e5f00446174617a694c6973745f66696e645f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f4765745f7374617469635f656e *74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f656e644279315f *656e74727900546578747a69526561647a694c65785f7a644c7235777a7a6c766c33385f696e66 *6f00546578747a69526561647a694c65785f7a644c723573526c766c355f636c6f737572650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f4c6f6f6b5f696e666f004748 *437a69494f426173655f44697669646542795a5a65726f5f636c6f73757265004748437a695265 *61645f6c6973745f636c6f7375726500446973747269627574696f6e7a6950617273655574696c *735f7a6467746f5374616e7a7a614669656c645f656e74727900446973747269627574696f6e7a *6953657475705f7a6467746f436f6e666967466c6167735f656e7472790053797374656d7a6950 *6f7369787a69496e7465726e616c735f7a644c7237566d6c766c335f636c6f7375726500466f72 *6569676e7a694d61727368616c7a69416c6c6f635f7a64776363616c6c325f656e747279004748 *437a6953686f775f5a434453686f775f636f6e5f656e747279004748437a69494f426173655f55 *7365724572726f725f7374617469635f696e666f005f5f676d707a5f6469766578616374007374 *675f61705f385f7570645f656e74727900446973747269627574696f6e7a69436f6d7061747a69 *46696c65506174685f6a6f696e50617468735f73727400446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f7061727365486f6f6b65644275696c64496e666f5f69 *6e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *6645714275696c64496e666f5f636c6f7375726500446973747269627574696f6e7a694765744f *70745f6765744f70745f696e666f004748437a69526561645f7a6473726561644c697374507265 *6344656661756c74315f636c6f737572650053797374656d7a694469726563746f72795f7a644c *7239637166696c654e616d65456e64436c65616e315f656e747279004748437a69496e745f7175 *6f74325f636c6f73757265004748437a695265616c5f7a6466496e74656772616c496e745f636c *6f73757265004748437a69456e756d5f656e756d46726f6d5468656e546f335f696e666f004469 *73747269627574696f6e7a6950617273655574696c735f5374616e7a7a614669656c645f636f6e *5f696e666f006973466c6f61744e614e00446973747269627574696f6e7a69436f6d7061747a69 *52656164505f6d616e7954696c6c5f696e666f004748437a69494f426173655f7a737a65355f65 *6e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73 *686f77486f6f6b65644275696c64496e666f5f656e74727900446973747269627574696f6e7a69 *53696d706c657a695574696c735f6765744f7074696f6e7346726f6d536f757263655f73727464 *00446973747269627574696f6e7a694765744f70745f4e6f4172675f636c6f7375726500474843 *7a69494f5f7a644c7239664a7a6477726561644368756e6b5f636c6f7375726500546578747a69 *526561647a694c65785f7a644c72357a7a6c7833375f636c6f7375726500546578747a69526561 *647a694c65785f7a644c723578356135395f656e747279007374675f7570645f6672616d655f37 *5f726574005f5f737467696e69745f4748437a69456e756d5f00446973747269627574696f6e7a *6953657475705f70617273655265676973746572417267735f656e747279004748437a69546f70 *48616e646c65725f7a644c723337716c766c31335f696e666f00546578747a69526561647a694c *65785f7a644c7235744a6133305f636c6f737572650053797374656d7a69494f7a694572726f72 *5f7472795f656e747279007374675f73656c5f355f6e6f7570645f696e666f00446174617a694d *617962655f7a644c7252426c766c5f656e7472790053797374656d7a69436d645f7468726f7745 *72726e6f49664d696e7573315f696e666f005f5f737467696e69745f53797374656d7a69446972 *6563746f727900546578747a69526561647a694c65785f7a644c723576666134305f656e747279 *004748437a69546f7048616e646c65725f7a644c723337326c766c325f656e747279004748437a *69494f426173655f4275666665724c697374436f6e735f7374617469635f696e666f0044617461 *7a694d617962655f6c766c315f656e747279004748437a6948616e646c655f7a644c724a397374 *647a75666c6167735f656e747279006c6f636b46696c650053797374656d7a69457869745f6c76 *6c335f656e74727900466f726569676e7a69437a69537472696e675f7a64777065656b43537472 *696e675f636c6f73757265005f5f737467696e69745f4748437a694c6973745f00446973747269 *627574696f6e7a694765744f70745f4f70744172675f656e747279004748437a69526561645f63 *686f6f73655f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f *61335f696e666f004748437a69426173655f7a644c723265586c766c5f636c6f73757265004748 *437a6948616e646c655f6f70656e46696c655f656e747279005f5f737467696e69745f466f7265 *69676e7a694d61727368616c007374675f61705f70705f696e666f0074616b654d5661727a685f *6661737400446973747269627574696f6e7a6953657475705f7a64664571436f6e666967466c61 *67735f636c6f73757265004748437a69494f426173655f556e737570706f727465644f70657261 *74696f6e5f7374617469635f656e747279004748437a6948616e646c655f7a644c726259786c76 *6c32325f656e74727900466f726569676e7a6953746f7261626c655f706f6c797a7573697a7a65 *4f66325f636c6f7375726500446973747269627574696f6e7a694765744f70745f4e6f4172675f *696e666f00446174617a695475706c655f5a34545f636f6e5f656e747279004469737472696275 *74696f6e7a6950617273655574696c735f7a6467746f504572726f725f696e666f005379737465 *6d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33355f696e666f00474843 *7a6948616e646c655f7a6477666c75736857726974654275666665725f696e666f00446174617a *694c6973745f756e776f7264735f636c6f7375726500446973747269627574696f6e7a69536574 *75705f476863466c61675f7374617469635f696e666f007374675f424c41434b484f4c455f696e *666f004748437a69426173655f4c545f7374617469635f696e666f0053797374656d7a69506f73 *69787a69496e7465726e616c735f7a64776363616c6c37305f696e666f004748437a6953686f77 *5f73686f774c6973745f696e666f0053797374656d7a69456e7669726f6e6d656e745f67657441 *7267735f636c6f73757265004748437a695265616c5f6469764d6f64325f656e74727900474843 *7a695265616c5f72656d325f696e666f004748437a69436f6e635f746872656164576169745772 *6974655f696e666f004748437a694c6973745f7a6477627265616b5f656e747279004748437a69 *48616e646c655f64735f636c6f73757265004748437a694c6973745f7a7a697057697468335f63 *6c6f73757265005f5f737467696e69745f53797374656d7a69506f7369787a694469726563746f *7279004748437a6953686f775f6137365f656e74727900546578747a695072657474795072696e *747a69487567686573504a5f546578744265736964655f7374617469635f656e74727900537973 *74656d7a69494f5f7265616446696c655f696e666f00546578747a69526561647a694c65785f7a *644c723576396133395f636c6f7375726500546578747a69526561647a694c65785f7a644c7235 *77337831345f636c6f7375726500546578747a69526561647a694c65785f7a644c723576766c76 *6c32375f696e666f007374675f6571496e743634007374675f6d696e7573496e74363400474843 *7a6953686f775f7a64646d73686f775f696e666f0053797374656d7a69506f7369787a6946696c *65735f7468726f774572726e6f49664d696e7573317a755f696e666f0044697374726962757469 *6f6e7a6953657475705f636d644465736372697074696f6e5f656e747279004748437a69576f72 *645f7a644c723943616c766c31335f636c6f7375726500446973747269627574696f6e7a69436f *6d7061747a6952656164505f636f756e745f656e7472790053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c32365f736c6f7700546578747a69526561647a694c *65785f6c766c375f636c6f7375726500446973747269627574696f6e7a694765744f70745f4f70 *745f636f6e5f696e666f00546578747a69526561647a694c65785f7a644c723578686136315f69 *6e666f004748437a695265616c5f646976315f656e747279004748437a6948616e646c655f7772 *6974655261774275666665725f696e666f005f5f737467696e69745f4748437a69426173655f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f737472696e675f636c6f73 *75726500446973747269627574696f6e7a6953657475705f706172736552656769737465724172 *67735f636c6f7375726500546578747a69526561647a694c65785f7a644c723578746136335f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a644c733869727361 *745f656e747279004748437a69426173655f437a685f7374617469635f696e666f004748437a69 *4e756d5f75707a7566625f696e666f004748437a69496e745f6e6567617465325f636c6f737572 *6500546578747a695072657474795072696e747a69487567686573504a5f7a644c723467556265 *73696465315f636c6f73757265004748437a69526561645f706172656e5f656e747279005f5f73 *7467696e69745f466f726569676e7a694d61727368616c5f00446973747269627574696f6e7a69 *4c6963656e73655f7a6467746f4c6963656e73655f656e747279004748437a6948616e646c655f *6c766c37325f656e747279004748437a69456e756d5f5a4344456e756d5f636f6e5f696e666f00 *696e746572727570746564007374675f756e636865636b65644953686966745241363400474843 *7a694e756d5f656e756d46726f6d5468656e5f656e74727900446174617a694569746865725f52 *696768745f7374617469635f696e666f004748437a69576f72645f7a64646d73686f775f656e74 *727900546578747a69526561647a694c65785f7a644c7235757a7a6c766c31375f636c6f737572 *65004748437a695265616c5f71756f74325f656e747279004748437a69546f7048616e646c6572 *5f7a644c723337346c766c335f696e666f00446973747269627574696f6e7a6953657475705f7a *646766726f6d436d645f696e666f004748437a69426173655f6765745461675f636c6f73757265 *004748437a6953686f775f6136305f636c6f73757265005f5f6465636f6465446f75626c650054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467636c766c3130 *5f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f6465666175 *6c74486f6f6b65645061636b616765446573635f636c6f73757265004748437a6953686f775f73 *686f774c697374315f636c6f73757265004748437a69494f426173655f615f636c6f7375726500 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35385f656e74 *7279004748437a69526561645f726561645f636c6f73757265005f5f737467696e69745f446973 *747269627574696f6e7a694d616b6500466f726569676e7a69437a694572726f725f7468726f77 *4572726e6f496652657472794d6179426c6f636b5f696e666f004748437a69494f426173655f6c *766c32375f636c6f73757265004748437a69426173655f426f6f6c5f636c6f737572655f74626c *004748437a69496e745f746f526174696f6e616c325f696e666f00446973747269627574696f6e *7a69436f6d7061747a6952656164505f4765745f7374617469635f696e666f0044697374726962 *7574696f6e7a694765744f70745f456e644f664f7074735f7374617469635f696e666f00737467 *5f67635f756e62785f72315f726574004748437a69496e745f746f496e7465676572325f696e66 *6f00446973747269627574696f6e7a6953657475705f55736572466c61675f7374617469635f65 *6e747279007274735f6d6b466c6f617400546578747a695072657474795072696e747a69487567 *686573504a5f7a644c723467517a64776e696c41626f76654e6573745f656e7472790044617461 *7a695475706c655f7a646645715a32545f636c6f73757265004748437a6953686f775f6134365f *696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f7a64 *6766726f6d436c61737369666965645f696e666f004748437a69546f7048616e646c65725f7a64 *4c723337346c766c335f636c6f73757265007374675f7570645f6672616d655f335f7265740046 *6f726569676e7a69437a694572726f725f7a64776363616c6c325f696e666f00546578747a6950 *72657474795072696e747a69487567686573504a5f7a6477736570315f736c6f77004748437a69 *496e745f71756f74325f656e747279004748437a69494f426173655f4275666665724c69737443 *6f6e735f636f6e5f656e747279004748437a69494f5f7a644c723966786c766c31315f636c6f73 *757265004748437a69457863657074696f6e5f6361746368457863657074696f6e5f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6973506174685365 *70617261746f725f696e666f00446174617a695479706561626c655f7a644c72364f346c766c34 *5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a75524457525f *696e666f004748437a69494f426173655f556e736174697366696564436f6e73747261696e7473 *5f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061747a6944697265 *63746f72795f636f707946696c655f73727400546578747a69506172736572436f6d62696e6174 *6f72737a6952656164505f4765745f7374617469635f656e74727900446973747269627574696f *6e7a694c6963656e73655f4c47504c5f7374617469635f696e666f00446973747269627574696f *6e7a694765744f70745f4f70744572725f656e74727900546578747a69506172736572436f6d62 *696e61746f72737a6952656164505f46696e616c5f7374617469635f696e666f004748437a694c *6973745f726576657273655f696e666f005f5f737467696e69745f446174617a695475706c655f *00446973747269627574696f6e7a6956657273696f6e5f7a64665479706561626c655665727369 *6f6e5f7372740053797374656d7a69506f7369787a6954797065735f7a64664f7264435069645f *636c6f73757265005f5f737467696e69745f446174617a69486173685461626c655f004748437a *6948616e646c655f6131375f636c6f73757265005f5f737467696e69745f446973747269627574 *696f6e7a6950726550726f636573737a69556e6c69745f004748437a69546f7048616e646c6572 *5f7a644c7233376b6c766c31305f636c6f7375726500546578747a695072657474795072696e74 *7a69487567686573504a5f7a647a645f636c6f7375726500616e795573657248616e646c657273 *004748437a695265616c5f6576656e5f636c6f73757265004748437a69496e745f676f5f696e66 *6f0072617753797374656d00546578747a69526561647a694c65785f5261745f636f6e5f696e66 *6f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f63617465 *676f72795f636c6f7375726500446973747269627574696f6e7a6953657475705f7a6467746f43 *6f6d70696c6572466c61766f725f656e747279004748437a69494f5f7a6477706f6c797a756275 *6657726974655f656e747279004748437a694c6973745f7a644c723272536c766c32395f656e74 *7279004748437a6948616e646c655f6765744275666665725f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f6c6962726172795f696e666f0044 *6973747269627574696f6e7a6950617273655574696c735f6669656c644e616d655f656e747279 *00546578747a69526561647a694c65785f7a644c7235763578345f636c6f73757265004748437a *69456e756d5f656664496e745f696e666f00546578747a695072657474795072696e747a694875 *67686573504a5f506167654d6f64655f7374617469635f656e74727900466f726569676e7a694d *61727368616c7a69416c6c6f635f7a64776363616c6c325f696e666f004748437a69494f426173 *655f4e6f6e5465726d696e6174696f6e5f7374617469635f696e666f0044697374726962757469 *6f6e7a6950617273655574696c735f50617273654661696c65645f696e666f004748437a69496e *745f7a64777a657a655f736c6f7700446973747269627574696f6e7a694d616b655f6465666175 *6c744d61696e4e6f526561645f636c6f73757265004748437a694e756d5f7a644c723278746c76 *6c315f636c6f7375726500446973747269627574696f6e7a6953657475705f4c6966745f656e74 *7279007374675f73656c5f31305f7570645f696e666f007374675f63617463685f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f667365705f636c6f73757265 *007374675f61705f707070705f72657400546578747a695072657474795072696e747a69487567 *686573504a5f7a644c7234674d6f6e654c696e6572315f696e666f00446973747269627574696f *6e7a69436f6d7061747a6952656164505f636861696e6c315f7372740073617665645f7465726d *696f7300546578747a69526561647a694c65785f7a644c723575707a6477667261635f636c6f73 *757265004748437a69526561645f63686f6f73655f656e747279004748437a69494f426173655f *756e73616665506572666f726d494f5f696e666f00446973747269627574696f6e7a6950617273 *655574696c735f4e6f50617273655f636f6e5f656e747279007374675f706c7573496e74363400 *466f726569676e7a694d61727368616c7a6941727261795f6c766c5f636c6f7375726500474843 *7a694e756d5f6c766c31315f636c6f73757265004748437a69426173655f69645f696e666f0074 *696d657374616d70004748437a6953686f775f73686f77735f636c6f73757265005f5f73746769 *6e69745f4748437a69457863657074696f6e007374675f73746f705f7468726561645f72657400 *4748437a69556e69636f64655f7a6477697344696769745f656e74727900446973747269627574 *696f6e7a69457874656e73696f6e5f4e6f496d706c696369745072656c7564655f636c6f737572 *6500446973747269627574696f6e7a6956657273696f6e5f7a6467746f56657273696f6e5f636c *6f73757265004748437a69426173655f556e69745f7374617469635f696e666f00446973747269 *627574696f6e7a6950617273655574696c735f7061727365446570656e64656e63795f73727400 *7274735f676574426f6f6c004748437a69494f5f6c766c31355f636c6f73757265005f5f737467 *696e69745f5a434d61696e004748437a69466c6f61745f6c766c315f636c6f7375726500474843 *7a6953686f775f73686f774c6973747a757a755f696e666f004748437a69426173655f72657475 *726e5f696e666f007274735f676574446f75626c65004748437a69546f7048616e646c65725f7a *644c723337756c766c31355f656e747279004748437a6948616e646c655f777269746552617742 *75666665725074725f696e666f007374675f7570645f6672616d655f315f72657400466f726569 *676e7a69437a694572726f725f7468726f774572726e6f496652657472794d6179426c6f636b5f *636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a69526561645072 *65635f72657475726e5f656e7472790077726974654040474c4942435f322e30007374675f6374 *6f695f7265745f565f696e666f004748437a69576f72645f7a64646d73686f774c697374335f63 *6c6f7375726500466f726569676e7a694d61727368616c7a695574696c735f776974684d616e79 *5f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f63686169 *6e6c5f636c6f7375726500446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f6f7074696f6e735f656e747279004748437a695265616c5f5a4344496e7465677261 *6c5f636f6e5f656e747279004748437a69496e745f7a64777a64646d656e756d46726f6d546865 *6e546f5f636c6f7375726500466f726569676e7a69437a69537472696e675f7769746843537472 *696e675f696e666f00466f726569676e7a694d61727368616c7a695574696c735f776974684d61 *6e795f636c6f73757265005f5f737467696e69745f4748437a694172725f007374675f73656c5f *335f7570645f696e666f004748437a69426173655f5a435f636c6f7375726500696e6974537461 *626c655074725461626c65007374675f776f72643634546f496e743634007374675f63746f695f *7265745f4c315f696e666f0068616e646c655369676e616c73496e546869735468726561640044 *6973747269627574696f6e7a6953657475705f566572626f73655f696e666f004748437a695265 *616c5f7a644c723532316c766c385f636c6f7375726500446973747269627574696f6e7a695365 *7475705f7a6467746f466c61675f636c6f73757265004748437a694e756d5f656e756d44656c74 *61496e746567657246425f636c6f7375726500446973747269627574696f6e7a6953657475705f *48656c69756d5f7374617469635f656e74727900546578747a69526561647a694c65785f7a644c *723578767832395f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946 *696c65506174685f64726f704162736f6c7574655072656669785f656e74727900446973747269 *627574696f6e7a6953657475705f7a646766726f6d436f6e666967466c6167735f636c6f737572 *6500546578747a69526561647a694c65785f7a644c723577706135325f656e747279004748437a *69494f426173655f48616e646c657a757a755f7374617469635f656e74727900546578747a6950 *72657474795072696e747a69487567686573504a5f506167654d6f64655f636c6f737572650054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467656c766c3131 *5f636c6f73757265007374675f73656c5f325f7570645f656e747279004748437a695265616c5f *6131315f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f4275696c64496e666f5f636f6e5f656e74727900446973747269627574696f6e7a6950 *617273655574696c735f7a646766726f6d5374616e7a7a614669656c645f636c6f737572650073 *74675f67635f66315f72657400446973747269627574696f6e7a694765744f70745f4f70744572 *725f636f6e5f696e666f004748437a69576f72645f7a646653686f77576f726433325f636c6f73 *7572650053797374656d7a694469726563746f72795f6c6f6e677a75706174687a7573697a7a65 *5f696e666f00446973747269627574696f6e7a6950617273655574696c735f4e6f50617273655f *636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f70617273654c *6963656e7365515f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f7a64 *67746f457874656e73696f6e5f696e666f00446973747269627574696f6e7a6953696d706c657a *695574696c735f7374726970436f6d6d656e74735f656e747279004748437a6953686f775f7a64 *4c72315a5a466c766c345f656e747279004748437a695061636b5f756e7061636b43537472696e *675f696e666f004748437a695265616c5f61395f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f4e696c41626f76655f636f6e5f656e747279004748437a6952 *65616c5f7a647761335f696e666f00446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f6861734c6962735f636c6f73757265005f5f737467696e69745f5072656c *75646500446973747269627574696f6e7a69457874656e73696f6e5f4172726f77735f73746174 *69635f656e74727900446973747269627574696f6e7a6953657475705f566572626f73655f7374 *617469635f656e747279007374675f61705f375f7570645f656e74727900626c6f636b65645f71 *756575655f746c0053797374656d7a694469726563746f72795f6c766c31325f696e666f004469 *73747269627574696f6e7a6953657475705f57697468416c65785f656e74727900546578747a69 *5072657474795072696e747a69487567686573504a5f7a644c723467656c766c31315f656e7472 *79004748437a6953686f775f7a644c72315a5a426c766c325f656e74727900466f726569676e7a *694d61727368616c7a6941727261795f6c766c5f736c6f7700446973747269627574696f6e7a69 *457874656e73696f6e5f48657265446f63756d656e74735f7374617469635f696e666f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164507265635f7a677a677a655f65 *6e747279004748437a69526561645f726561644c69737444656661756c745f696e666f005f5f68 *73636f72655f72656164646972004748437a694c6973745f7265706c69636174655f656e747279 *005f5f737467696e69745f53797374656d7a69506f7369787a695465726d696e616c5f00474843 *7a69426173655f7a6470314f72645f636c6f737572650072657365744e75727365726965730047 *48437a695265616c5f5a43444672616374696f6e616c5f636f6e5f696e666f0053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c32355f636c6f73757265004748 *437a694572725f6469765a5a65726f4572726f725f696e666f004748437a69496e745f4931367a *685f636f6e5f696e666f00446973747269627574696f6e7a694765744f70745f5265714172675f *696e666f007374675f6172675f6269746d61707300546578747a69526561647a694c65785f7a64 *4c723576706c766c32365f696e666f004748437a69494f426173655f416c726561647945786973 *74735f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f637a75 *6765747069645f656e74727900446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f63536f75726365735f636c6f73757265006d61696e5f74687265616473007374 *72636d704040474c4942435f322e30004748437a6953686f775f6132385f636c6f737572650053 *797374656d7a69436d645f6c766c325f636c6f7375726500446973747269627574696f6e7a6950 *617273655574696c735f6c6973744669656c645f636c6f73757265004748437a69494f42617365 *5f42756666657253746174655f636c6f737572655f74626c004748437a694e756d5f656e756d44 *656c7461546f496e74656765725f656e74727900446973747269627574696f6e7a695365747570 *5f476c6f62616c466c61675f7374617469635f696e666f004748437a6953686f775f61335f636c *6f73757265004748437a69546f7048616e646c65725f7a644c7233376f6c766c31325f656e7472 *790067656e53796d5a68004748437a69556e69636f64655f697355707065725f696e666f004748 *437a694c6973745f7a644c723272796c766c31395f656e747279004748437a69426173655f5a43 *444f72645f7374617469635f656e747279004748437a694572725f7a644c723130726c766c3134 *5f636c6f737572650064655265665765616b7a685f66617374004748437a69496e745f6c766c31 *365f636c6f73757265004748437a69494f426173655f6c766c32385f696e666f004748437a6949 *6e745f626f756e646564456e756d46726f6d5468656e5f696e666f00546578747a69526561647a *694c65785f7a644c723578726c766c34375f696e666f004748437a6948616e646c655f7a644c72 *4a64726561647a75666c6167735f636c6f73757265004748437a69496e745f7a64776469764d6f *64325f636c6f7375726500546578747a69526561647a694c65785f7a644c72354148657461315f *696e666f004748437a694e756d5f6d696e7573496e74656765725f636c6f737572650044697374 *7269627574696f6e7a6953657475705f4e48435f7374617469635f656e747279004748437a6949 *4f5f7a644c72444a685075746342756666657265645f656e74727900446973747269627574696f *6e7a6950617273655574696c735f416d6269676f757350617273655f656e747279004748437a69 *494f426173655f6c766c33365f656e747279004748437a69526561645f6c766c345f636c6f7375 *72650053797374656d7a69506f7369787a6946696c65735f6d6f64696669636174696f6e54696d *655f656e74727900446973747269627574696f6e7a695061636b6167655f7a646766726f6d5061 *636b6167654964656e7469666965725f656e747279004748437a6953686f775f7a64646d73686f *775f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a644c72 *3757436c766c31335f696e666f0053797374656d7a69457869745f61315f656e74727900546578 *747a69526561647a694c65785f4964656e745f7374617469635f696e666f004748437a6948616e *646c655f657272325f636c6f73757265004748437a69496e745f6c766c32365f636c6f73757265 *004748437a69494f5f7a647777726974654c696e65735f696e666f00446973747269627574696f *6e7a694d616b655f64656661756c744d61696e4e6f526561645f7372746400546578747a695265 *61647a694c65785f7a644c723577546135375f656e74727900546578747a69526561647a694c65 *785f7a644c7235746c6131385f636c6f7375726500546578747a695072657474795072696e747a *69487567686573504a5f7a644c723468697365704e42315f656e747279004748437a694c697374 *5f656c656d5f636c6f73757265007374675f73656c5f31305f7570645f656e747279004748437a *694e756d5f75707a756c6973745f636c6f7375726500446973747269627574696f6e7a69507265 *50726f636573737a69556e6c69745f7a6467746f436c61737369666965645f696e666f00737467 *5f61705f335f7570645f696e666f005f5f696e745f656e636f6465466c6f617400466f72656967 *6e7a694d61727368616c7a6941727261795f7a64777065656b41727261795f696e666f00446973 *747269627574696f6e7a69436f6d7061747a6952656164505f4765745f636f6e5f656e74727900 *546578747a69526561647a694c65785f7a644c723576426c766c32385f636c6f73757265004748 *437a69494f426173655f6c766c31395f656e747279004748437a69426173655f7a707a705f656e *74727900446973747269627574696f6e7a694765744f70745f7a6467746f4f70744b696e645f63 *6c6f7375726500636c6f73654040474c4942435f322e300053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c37345f656e74727900546578747a69526561647a69 *4c65785f7a644c723577447832305f636c6f73757265004748437a69494f426173655f53656d69 *436c6f73656448616e646c655f7374617469635f656e747279004748437a694c6973745f6c766c *32305f636c6f7375726500446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f68634f7074696f6e735f696e666f00446973747269627574696f6e7a694c6963656e *73655f7a6466526561644c6963656e73655f636c6f73757265004748437a6953686f775f7a644c *72315a5a446c766c335f656e747279004748437a695265616c5f6c766c395f696e666f00446973 *747269627574696f6e7a69436f6d7061747a6952656164505f7a646646756e63746f7250617273 *65725f696e666f00446174617a695479706561626c655f43616368655f636f6e5f696e666f0044 *6174617a69486173685461626c655f6e65775f696e666f00546578747a69526561647a694c6578 *5f7a644c72357544705f636c6f73757265004748437a69494f426173655f457869744661696c75 *72655f7374617469635f656e747279004748437a69494f426173655f4d5661725f636f6e5f696e *666f004748437a695265616c5f7a64737a64664e756d526174696f5f636c6f7375726500537973 *74656d7a69457869745f6c766c5f636c6f7375726500446973747269627574696f6e7a6953696d *706c657a695574696c735f72617753797374656d457869745f7372740053797374656d7a69506f *7369787a69496e7465726e616c735f61335f636c6f73757265005f5f737467696e69745f446973 *747269627574696f6e7a6953696d706c657a695574696c735f007374675f72656d576f72643634 *00546578747a69526561647a694c65785f7a644c7235767478385f636c6f737572650053797374 *656d7a694469726563746f72795f6c766c31335f696e666f005f5f737467696e69745f4748437a *6953746f7261626c6500546578747a69526561647a694c65785f53796d626f6c5f737461746963 *5f656e747279004748437a69456e756d5f656e756d46726f6d5468656e546f335f636c6f737572 *6500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f65786563 *757461626c65735f636c6f7375726500446174617a695479706561626c655f7a64574b65795072 *5f696e666f004748437a69426173655f5a434445715f636f6e5f656e747279005f66705f687700 *737461745f656e644743004748437a69494f426173655f48617264776172654661756c745f7374 *617469635f656e747279004748437a69426173655f7a64737a64646d6d696e5f636c6f73757265 *004748437a6948616e646c655f68436c6f73655f636c6f7375726500446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f77726974655061636b6167654465736372 *697074696f6e5f636c6f73757265004748437a6948616e646c655f64454641554c547a75425546 *4645527a7553495a5a455f656e747279005f5f737467696e69745f53797374656d7a69506f7369 *785f00446973747269627574696f6e7a694765744f70745f4e6f6e4f70745f636f6e5f696e666f *007374675f666f726365494f5f696e666f00436f6e74726f6c7a694d6f6e61645f7a64776c6966 *744d325f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a *5f7a647a645f656e74727900446973747269627574696f6e7a6953657475705f57697468486164 *646f636b5f636f6e5f656e747279005a434d61696e5f6d61696e5f7372740073797374656d436d *6400446973747269627574696f6e7a6953657475705f636f6e666967486164646f636b5f636c6f *737572650076666f726b4040474c4942435f322e30004748437a694e756d5f696e7432496e7465 *6765725f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a646645714465 *70656e64656e63795f636c6f7375726500546578747a69506172736572436f6d62696e61746f72 *737a6952656164505f646973636172645f636c6f7375726500446174617a694c6973745f6e7562 *5f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *5061636b6167654465736372697074696f6e5f636f6e5f656e747279004748437a69526561645f *7a64646d7265616473507265635f696e666f00446973747269627574696f6e7a6953657475705f *566572626f73655f636f6e5f656e74727900546578747a69526561647a694c65785f7a644c7235 *78666c766c34355f656e74727900446973747269627574696f6e7a6950617273655574696c735f *706172736551756f7465645f656e747279007274735f676574576f72643136004748437a695368 *6f775f6131385f696e666f00446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f6c6962726172795f636c6f7375726500737461745f656e6445786974004748437a *694e756d5f7a64646d73686f775f636c6f73757265005f5f737467696e69745f4748437a695374 *61626c6500546578747a69526561647a694c65785f7a644c723573506c766c345f656e74727900 *4748437a69494f5f7a644c723967726c617a7a79526561644275666665726564315f636c6f7375 *726500446973747269627574696f6e7a69436f6d7061747a6952656164505f656e644279315f73 *7274004748437a69494f426173655f627566525074725f656e747279004748437a695265616c5f *6c766c31365f636c6f73757265004748437a69426173655f6d696e7573496e745f656e74727900 *4748437a69546f7048616e646c65725f7a644c723337676c766c385f696e666f004748437a6945 *72725f756e74616e676c655f696e666f00446973747269627574696f6e7a6953657475705f7a64 *6653686f77466c61675f636c6f7375726500466f726569676e7a69437a694572726f725f746872 *6f774572726e6f5f636c6f7375726500446973747269627574696f6e7a6953657475705f636d64 *416374696f6e5f656e74727900446973747269627574696f6e7a6953696d706c657a695574696c *735f66696e645061636b616765446573635f636c6f7375726500546578747a69526561647a694c *65785f7a644c723578506c766c35315f696e666f004748437a69426173655f7a657a65345f696e *666f00466f726569676e7a694d61727368616c7a69416c6c6f635f7a6477616c6c6f6361427974 *65735f696e666f004748437a694c6973745f656c656d5f656e7472790044697374726962757469 *6f6e7a6953657475705f5265676973746572436d645f636f6e5f696e666f004748437a69496e74 *5f6c766c32395f696e666f004748437a69494f426173655f757365724572726f725f696e666f00 *4748437a694e756d5f636f6d706172655f696e666f004748437a69494f426173655f556e736174 *697366696564436f6e73747261696e74735f636c6f7375726500706572726f724040474c494243 *5f322e3000546578747a69526561647a694c65785f7a644c723541786c766c3132335f636c6f73 *7572650053797374656d7a69506f7369787a69496e7465726e616c735f637a756f70656e646972 *5f696e666f00546578747a69526561647a694c65785f7a644c723579336c766c35365f636c6f73 *75726500546578747a69526561647a694c65785f7a644c7235776e6c766c33365f656e74727900 *53797374656d7a69506f7369787a69496e7465726e616c735f526567756c617246696c655f7374 *617469635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c35335f636c6f7375726500446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f7a646766726f6d5061636b6167654465736372697074696f6e5f696e666f *004748437a694e756d5f7a64646d6d61785f636c6f73757265007374675f696e746572705f636f *6e737472385f656e747279005f5f737467696e69745f53797374656d7a69457869745f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f7a677a677a655f656e7472 *79004748437a694e756d5f646e7a7566625f656e747279004748437a694e756d5f636f6d706172 *655f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f6578654d6f64756c65735f73727400546578747a695072657474795072696e747a69487567 *686573504a5f7a6477736570315f636c6f73757265004748437a69426173655f636f6e73745f63 *6c6f73757265004748437a69494f5f7a644c723967707a64776c617a7a79526561644861766542 *75666665725f656e74727900446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f636f707972696768745f636c6f73757265004748437a694e756d5f71756f745265 *6d496e74656765725f656e747279004748437a695265616c5f71756f7452656d325f696e666f00 *4748437a6953686f775f7a644c72315a5a506c766c395f656e74727900736967696e7465727275 *70744040474c4942435f322e30004748437a69496e745f636f6d70617265325f656e7472790053 *797374656d7a69506f7369787a6954797065735f7a64664e756d435069645f636c6f7375726500 *7274735f6576616c494f00446174617a695479706561626c655f7a644c72364f4f74626c315f69 *6e666f007374675f776f72643634546f576f7264004748437a69496e745f73756363325f656e74 *727900546578747a69526561647a694c65785f7a644c72684b6c65784e756d6265725f656e7472 *79004748437a694e756d5f7369676e756d315f696e666f004748437a69426173655f7a645f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6578 *7472614c6962446972735f656e74727900546578747a69526561647a694c65785f7a644c723578 *336c766c34335f656e747279004748437a69426173655f7a6477676364496e745f636c6f737572 *6500446973747269627574696f6e7a69436f6d7061747a6952656164505f46696e616c5f636f6e *5f696e666f00446973747269627574696f6e7a695061636b6167655f7a646653686f775061636b *6167654964656e7469666965725f737274004748437a69526561645f7a64665265616443686172 *5f636c6f7375726500546578747a69526561647a694c65785f496e745f7374617469635f696e66 *6f004748437a69426173655f556e69745f636c6f737572655f74626c0044697374726962757469 *6f6e7a69457874656e73696f6e5f466c657869626c65436f6e74657874735f636c6f7375726500 *546578747a69526561647a694c65785f7a644c723574746132325f636c6f73757265004748437a *69494f426173655f48616e646c657a757a755f7374617469635f696e666f0053797374656d7a69 *4469726563746f72795f6c766c335f636c6f7375726500667072696e74664040474c4942435f32 *2e3000636f6d70616374004748437a69494f426173655f6661696c494f5f696e666f00666f726b *4040474c4942435f322e30007274735f6576616c4c617a79494f004748437a694c6973745f7a64 *4c723272676c766c31305f696e666f00446973747269627574696f6e7a6953657475705f436f6d *70696c65725f696e666f00446973747269627574696f6e7a694765744f70745f7a646766726f6d *4f707444657363725f656e747279004748437a69426173655f74696d6573496e745f696e666f00 *7374675f464f524549474e5f696e666f004748437a6953686f775f6132355f636c6f7375726500 *446973747269627574696f6e7a69436f6d7061747a6952656164505f6d616e795f737274007274 *735f676574576f726438007374675f6e65576f72643634004748437a694e756d5f7a6466457149 *6e74656765725f636c6f73757265004748437a69426173655f5a43444d6f6e61645f636f6e5f69 *6e666f004748437a6953686f775f6135305f636c6f73757265005f5f737467696e69745f446174 *617a69576f72645f00446973747269627574696f6e7a694765744f70745f7a646766726f6d4f70 *744b696e645f696e666f00676574656e764040474c4942435f322e3000446174617a6945697468 *65725f52696768745f636f6e5f656e74727900466f726569676e7a69437a694572726f725f7468 *726f774572726e6f49664d696e75733152657472797a755f656e747279004748437a69496e745f *746f456e756d5f696e666f00546578747a695072657474795072696e747a69487567686573504a *5f7a644c7234676d6c766c31355f636c6f7375726500446973747269627574696f6e7a69476574 *4f70745f4e6f6e4f70745f636c6f73757265004748437a69426173655f646976496e747a685f69 *6e666f005f5f737467696e69745f53797374656d7a69506f7369787a6946696c6573004748437a *69426173655f7a64737a64646d7a737a655f656e747279005f5f737467696e69745f546578747a *69506172736572436f6d62696e61746f72737a695265616450726563004748437a69456e756d5f *65666474496e745f636c6f7375726500546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c7234676b6c766c31345f636c6f7375726500446973747269627574696f6e7a *6950617273655574696c735f6d794572726f725f636c6f73757265004748437a6948616e646c65 *5f7a6477666c757368526561644275666665725f696e666f004748437a695265616c5f7a657a65 *5f636c6f7375726500446973747269627574696f6e7a6953657475705f496e7374616c6c436d64 *5f636f6e5f696e666f004748437a694e756d5f707265645f656e74727900546578747a69507265 *7474795072696e747a69487567686573504a5f7a644c72346861676f325f696e666f004748437a *69526561645f61355f656e74727900446174617a694d617962655f6d61704d617962655f696e66 *6f00446973747269627574696f6e7a695061636b6167655f5061636b6167654964656e74696669 *65725f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6f7a754352 *4541545f656e747279004748437a69494f426173655f496e76616c6964417267756d656e745f73 *74617469635f656e747279004748437a6953686f775f73686f7773507265635f656e7472790054 *6578747a69526561647a694c65785f7a644c723576646c766c32345f696e666f00446973747269 *627574696f6e7a69457874656e73696f6e5f526573747269637465645479706553796e6f6e796d *735f7374617469635f656e7472790063616c634e6565646564005f5f696e745f656e636f646544 *6f75626c65004748437a69494f426173655f416c72656164794578697374735f7374617469635f *656e747279004748437a69494f5f68476574436f6e74656e74735f636c6f737572650044697374 *7269627574696f6e7a6953657475705f7a6467746f436d645f656e747279007374675f74696d65 *73496e743634005f5f737467696e69745f466f726569676e7a694d61727368616c7a695574696c *73004748437a695265616c5f7a647761365f656e7472790066666c7573684040474c4942435f32 *2e30004748437a69426173655f7a657a65315f696e666f00446973747269627574696f6e7a6943 *6f6d7061747a6952656164505f7a646766726f6d5061727365725f696e666f00546578747a6952 *6561647a694c65785f7a644c723574506133335f636c6f73757265004748437a694c6973745f65 *6c656d5f696e666f004748437a69526561645f7a6466526561645a4d5a4e5f656e747279004748 *437a694c6973745f72657065617446425f636c6f737572650053797374656d7a69506f7369787a *6946696c65735f73657446696c654d6f64655f656e747279005f5f737467696e69745f53797374 *656d7a69494f7a69556e736166655f007374675f696e69745f72657400546578747a6952656164 *7a694c65785f7a644c723575766c6974335f636c6f73757265006465636f6465446f75626c657a *685f66617374005f5f737467696e69745f446973747269627574696f6e7a695061636b61676500 *4748437a69426173655f6765496e745f656e747279004748437a69537461626c655f537461626c *655074725f636f6e5f656e74727900446973747269627574696f6e7a6950726550726f63657373 *7a69556e6c69745f756e6c69745f656e7472790053797374656d7a694469726563746f72795f72 *656d6f76654469726563746f72795f636c6f73757265004748437a69426173655f7a64646d7a67 *5f696e666f00446973747269627574696f6e7a6953657475705f5769746848617070795f636f6e *5f696e666f004748437a694c6973745f7a644c723272756c766c31375f656e747279004748437a *69494f5f7a644c7239663961355f656e747279004748437a6948616e646c655f7a644c724a6872 *777a75666c6167735f696e666f004748437a69526561645f6c6973745f696e666f004469737472 *69627574696f6e7a69457874656e73696f6e5f4350505f7374617469635f656e74727900474843 *7a69576f72645f5733327a685f636f6e5f656e747279007374675f67635f66756e5f7265740047 *48437a69526561645f7a64737a64646d726561647350726563325f636c6f7375726500436f6e74 *726f6c7a694d6f6e61645f7768656e5f636c6f737572650053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c35385f636c6f73757265004748437a69496e745f62 *6f756e646564456e756d46726f6d5f656e74727900446174617a69486173685461626c655f7a64 *77696e736572745f696e666f00446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f72656164486f6f6b65644275696c64496e666f5f636c6f73757265004748437a *694e756d5f6e6567617465496e74656765725f696e666f004748437a69426173655f7a64664571 *5a4d5a4e5f696e666f007374675f454e445f455843455054494f4e5f4c4953545f636c6f737572 *6500446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f436f6d6d65 *6e745f7374617469635f696e666f0053797374656d7a694469726563746f72795f6c766c32325f *696e666f00546578747a69526561647a694c65785f7a644c723541316c766c3130375f636c6f73 *7572650053797374656d7a69494f5f7265616446696c655f656e747279004748437a6948616e64 *6c655f6f70656e46696c655f636c6f7375726500446973747269627574696f6e7a695061727365 *5574696c735f50617273654661696c65645f7374617469635f656e747279004469737472696275 *74696f6e7a6953657475705f636f6e6669674863506b675f656e74727900466f726569676e7a69 *53746f7261626c655f706f6c797a75706f6b65427974654f6666325f696e666f004748437a6942 *6173655f496e6c5f636f6e5f656e74727900446973747269627574696f6e7a69457874656e7369 *6f6e5f657874656e73696f6e73546f48756773466c61675f737274004748437a6948616e646c65 *5f77726974655261774275666665725f636c6f7375726500436f6e74726f6c7a694d6f6e61645f *5a43444d6f6e6164506c75735f7374617469635f656e747279004748437a69426173655f7a6464 *6d7a6c5f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f6465 *6661756c745061636b616765446573635f696e666f004748437a69496e745f7a74325f656e7472 *7900446973747269627574696f6e7a6953657475705f636f6d70696c6572506b67546f6f6c5f63 *6c6f73757265004748437a69494f426173655f6132325f656e747279004748437a6953686f775f *73686f777350726563345f656e74727900446973747269627574696f6e7a695061727365557469 *6c735f5374616e7a7a614669656c645f636f6e5f656e7472790053797374656d7a69506f736978 *7a69496e7465726e616c735f53747265616d5f7374617469635f696e666f004469737472696275 *74696f6e7a6953657475705f496e73745072656669785f636c6f73757265004748437a69526561 *6c5f7a647761315f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a *6466457156657273696f6e52616e67655f636c6f73757265005f5f737467696e69745f53797374 *656d7a69506f7369787a69557365725f00436f6e74726f6c7a694d6f6e61645f5a43444d6f6e61 *64506c75735f636f6e5f696e666f007374675f626c6f636b4173796e63457863657074696f6e73 *7a685f7265745f696e666f004748437a694c6973745f7a644c723271456c766c5f656e74727900 *446973747269627574696f6e7a69457874656e73696f6e5f526563757273697665446f5f737461 *7469635f656e747279004748437a69494f5f7a647768507574436861725f696e666f0044697374 *7269627574696f6e7a69457874656e73696f6e5f496d706c69636974506172616d735f636c6f73 *757265004748437a694e756d5f7a6477696e746567657232496e745f656e747279004469737472 *69627574696f6e7a6956657273696f6e5f73686f7756657273696f6e52616e67655f656e747279 *004748437a69494f426173655f627566575074725f696e666f004748437a694e756d5f7a64646d *6d61785f656e74727900546578747a69526561647a694c65785f7a644c723577787831395f636c *6f73757265004748437a694e756d5f7a644c723278786c766c335f696e666f0044697374726962 *7574696f6e7a6956657273696f6e5f4561726c69657256657273696f6e5f636f6e5f656e747279 *004748437a69494f5f7a647768507574436861725f636c6f73757265004748437a694e756d5f65 *6e756d44656c7461546f496e74656765725f636c6f73757265004748437a694c6973745f7a6477 *7370616e5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946696c65 *506174685f6a6f696e46696c654e616d655f696e666f00446973747269627574696f6e7a695365 *7475705f4275696c64436d645f636c6f7375726500756e6c696e6b4040474c4942435f322e3000 *4748437a6953686f775f6c766c31345f636c6f73757265004748437a69426173655f7a64664f72 *64496e745f636c6f737572650072756e5f71756575655f686400446973747269627574696f6e7a *6953657475705f636f6e6669674863466c61766f725f656e7472790053797374656d7a69506f73 *69787a69496e7465726e616c735f7a64776363616c6c32375f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f45786563757461626c655f656e74 *727900446973747269627574696f6e7a6953657475705f5344697374436d645f7374617469635f *656e747279004748437a6948616e646c655f7a644c7262583761325f696e666f004748437a6952 *65616c5f7a64665265616c496e74656765725f636c6f73757265004748437a69556e69636f6465 *5f7a64776973416c7068614e756d5f696e666f00446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e5f73796e6f707369735f696e666f007374675f61705f7070765f *696e666f00546578747a69526561647a694c65785f7a644c723577686c766c33355f636c6f7375 *7265004748437a695265616c5f6c766c31375f656e747279004748437a6948616e646c655f6d6b *53746448616e646c655f696e666f00446973747269627574696f6e7a6950726550726f63657373 *7a69556e6c69745f496e636c7564655f636c6f7375726500446973747269627574696f6e7a6947 *65744f70745f7a646766726f6d41726744657363725f636c6f73757265004d61696e5f6d61696e *5f656e747279004748437a6953686f775f7a644c72315a5a526c766c31305f636c6f7375726500 *4748437a694e756d5f706c7573496e74656765725f696e666f0053797374656d7a69506f736978 *7a69496e7465726e616c735f7a64776363616c6c36375f656e747279004748437a69526561645f *6c766c395f696e666f004748437a69456e756d5f73756363355f636c6f73757265005f5f66696e *695f61727261795f656e64004748437a69494f426173655f5265616448616e646c655f73746174 *69635f656e747279004748437a69466f726569676e5074725f4d616c6c6f635074725f636f6e5f *656e74727900446973747269627574696f6e7a6953657475705f70617273655265676973746572 *417267735f696e666f00546578747a69526561647a694c65785f7a644c723577646135305f696e *666f004748437a69496e745f7a64646d7a6c5f636c6f73757265004748437a694572725f756e64 *6566696e65645f696e666f004748437a6948616e646c655f6c766c315f636c6f73757265004469 *73747269627574696f6e7a695061636b6167655f5061636b6167654964656e7469666965725f73 *74617469635f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64 *776363616c6c32385f696e666f006765747275736167654040474c4942435f322e30004748437a *694e756d5f656e756d44656c7461546f496e746567657246425f656e74727900546578747a6950 *72657474795072696e747a69487567686573504a5f7a644c723467716c766c31375f636c6f7375 *7265004748437a69426173655f6e65496e745f696e666f00546578747a69507265747479507269 *6e747a69487567686573504a5f4e6f446f635f636c6f7375726500446973747269627574696f6e *7a6950617273655574696c735f70617273654f707456657273696f6e5f656e7472790073746172 *745469636b657200546578747a69526561647a694c65785f7a644c7235746a6131375f636c6f73 *757265004748437a694e756d5f6c766c31355f636c6f7375726500546578747a69506172736572 *436f6d62696e61746f72737a6952656164505f7a677a677a655f636c6f73757265004469737472 *69627574696f6e7a6953657475705f436f6e666967436d645f636f6e5f656e7472790044697374 *7269627574696f6e7a6953657475705f566572626f73655f656e74727900546578747a69526561 *647a694c65785f7a644c723577766135335f636c6f73757265004748437a6948616e646c655f77 *69746848616e646c657a757a715f656e74727900546578747a69526561647a694c65785f7a644c *7235776a6135315f636c6f73757265004748437a69426173655f7a645f696e666f004469737472 *69627574696f6e7a6953696d706c657a695574696c735f66696e64486f6f6b65645061636b6167 *65446573635f7372740053797374656d7a694469726563746f72795f72656d6f766546696c655f *636c6f73757265004748437a694e756d5f656e756d46726f6d5468656e546f5f656e7472790044 *6973747269627574696f6e7a6950617273655574696c735f706172736556657273696f6e52616e *6765515f636c6f73757265007374675f63617463685f6672616d655f365f726574004748437a69 *5265616c5f7a647761355f656e747279004748437a69456e756d5f65666474496e7446425f636c *6f7375726500446973747269627574696f6e7a6953657475705f57697468486164646f636b5f63 *6c6f73757265004748437a69546f7048616e646c65725f7a644c723337656c766c375f656e7472 *790053797374656d7a694469726563746f72795f6c766c32395f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f72656164507a75746f7a75535f636c6f737572 *6500446973747269627574696f6e7a6953657475705f436f6d70696c65725f636f6e5f656e7472 *79004748437a69526561645f6c766c32335f636c6f7375726500546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c723467756c766c31395f696e666f00446174617a69 *5479706561626c655f7a64776d6b5479436f6e5f696e666f007374675f67635f6c315f696e666f *0053797374656d7a69506f7369787a69496e7465726e616c735f7a644c723757436c766c31335f *636c6f7375726500446174617a694c6973745f66696e645f696e666f0044697374726962757469 *6f6e7a6953657475705f4f74686572436f6d70696c65725f636f6e5f656e747279004748437a69 *426173655f7a64646d6d696e5f696e666f00616c6c6f63486173685461626c6500786f72496e74 *656765727a685f66617374004748437a69456e756d5f65666474496e745f696e666f005f5f7374 *67696e69745f53797374656d7a694c6f63616c655f0053797374656d7a69506f7369787a69496e *7465726e616c735f7a64776363616c6c36395f636c6f7375726500466f726569676e7a6953746f *7261626c655f5a434453746f7261626c655f636f6e5f696e666f004748437a69426173655f5a43 *444d6f6e61645f7374617469635f696e666f00446973747269627574696f6e7a69436f6d706174 *7a6952656164505f736b69704d616e795f636c6f7375726500446973747269627574696f6e7a69 *53657475705f4c6966745f7374617469635f696e666f00446973747269627574696f6e7a694d61 *6b655f64656661756c744d61696e4e6f526561645f737274007374675f73656c5f375f7570645f *656e747279004748437a6948616e646c655f7374646572725f696e666f00446973747269627574 *696f6e7a6950617273655574696c735f70617273654d6f64756c654e616d65515f737274004748 *437a69426173655f7a657a65335f636c6f7375726500446973747269627574696f6e7a69566572 *73696f6e5f706172736556657273696f6e52616e67655f656e7472790044697374726962757469 *6f6e7a69436f6d7061747a6952656164505f636861696e6c315f656e747279004748437a694172 *725f6c766c375f696e666f00546578747a69526561647a694c65785f7a644c723577356c766c33 *335f656e747279004748437a6953686f775f69746f737a715f656e747279004469737472696275 *74696f6e7a6953657475705f436f6d70696c65725f7374617469635f696e666f00446973747269 *627574696f6e7a6953657475705f70617273654275696c64417267735f636c6f73757265004748 *437a694e756d5f7369676e756d325f696e666f004748437a69426173655f7a64737a64646d6d69 *6e5f696e666f004748437a69426173655f7a64646d6d61785f636c6f73757265006d6d61703634 *4040474c4942435f322e31004748437a69526561645f726561644c69737450726563315f636c6f *737572650063616c63416c6c6f6361746564004748437a69494f426173655f6132355f636c6f73 *75726500446973747269627574696f6e7a6953657475705f496e7374616c6c436d645f636f6e5f *656e747279007374675f696e746572705f636f6e737472355f656e747279004748437a694e756d *5f7a64664e756d496e74656765725f636c6f73757265005f5f737467696e69745f4748437a6953 *686f775f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73 *657475704d6573736167655f636c6f7375726500446973747269627574696f6e7a695365747570 *5f487567735f636c6f7375726500446973747269627574696f6e7a6953696d706c657a69557469 *6c735f72617753797374656d566572626f73655f636c6f73757265004748437a695765616b5f7a *647772756e46696e616c697a7a657242617463685f696e666f004748437a69426173655f496e72 *5f636f6e5f696e666f007374675f696e7465676572546f496e743634004748437a6948616e646c *655f68436c6f73655f696e666f00446973747269627574696f6e7a6953657475705f7061727365 *5344697374417267735f696e666f00546578747a69526561647a694c65785f7a644c723575626c *6974315f636c6f73757265004748437a69494f426173655f496e7465727275707465645f636c6f *73757265004748437a69526561645f7a644c723639626c766c31365f636c6f7375726500446973 *747269627574696f6e7a6950617273655574696c735f6d794572726f725f696e666f0054657874 *7a69526561647a694c65785f7a644c723575526c766c32305f696e666f00546578747a69507265 *7474795072696e747a69487567686573504a5f656d7074795f636c6f73757265004748437a6957 *6f72645f6c6974345f636c6f7375726500436f6e74726f6c7a694d6f6e61645f6d61704d7a755f *656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f7361746973 *66795f656e747279004748437a6948616e646c655f7a644c724a6677726974657a75666c616773 *5f696e666f00546578747a69526561647a694c65785f7a644c723576506134365f696e666f0047 *48437a695265616c5f7a647761325f696e666f007374675f696e7465676572546f576f72643634 *00446973747269627574696f6e7a69457874656e73696f6e5f47656e65726963735f7374617469 *635f696e666f004748437a6953686f775f6133315f636c6f73757265004748437a6953686f775f *7a644c72315a5a4a6c766c365f696e666f004748437a695265616c5f7a644c723531526c766c33 *5f656e74727900546578747a69526561647a694c65785f7a644c723578466136355f636c6f7375 *726500446973747269627574696f6e7a6953696d706c657a695574696c735f6d61796265457869 *745f636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f776974684578655f696e666f00446973747269627574696f6e7a6953657475705f5769 *74684873633268735f696e666f00546578747a69526561647a694c65785f7a644c723576786134 *335f696e666f004748437a6953686f775f73686f775369676e6564496e745f656e747279004748 *437a694e756d5f6c766c31335f636c6f7375726500446973747269627574696f6e7a6956657273 *696f6e5f4c6174657256657273696f6e5f7374617469635f656e747279004748437a6953686f77 *5f6c766c32345f636c6f73757265004748437a695265616c5f61355f656e747279004748437a69 *4c6973745f6c766c31365f696e666f004748437a69494f426173655f6132375f636c6f73757265 *00696e7432496e74656765727a685f6661737400446973747269627574696f6e7a695365747570 *5f7061727365486164646f636b417267735f656e747279007374675f61705f70765f696e666f00 *4748437a695265616c5f6d6f64315f696e666f0053797374656d7a69506f7369787a6954797065 *735f7a64664571435069645f636c6f73757265004748437a69576f72645f7a737a65345f656e74 *7279004748437a695265616c5f746f496e7465676572315f656e747279004748437a69494f4261 *73655f756e73616665506572666f726d494f5f636c6f737572650073656c6563744040474c4942 *435f322e3000546578747a69526561647a694c65785f7a644c723574546c766c31305f696e666f *004748437a6953686f775f6133385f636c6f737572650053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c33365f696e666f004748437a69526561645f7a644c72 *3639666c766c31385f636c6f73757265004748437a69494f426173655f496e617070726f707269 *617465547970655f636c6f737572650053797374656d7a69506f7369787a6946696c65735f7365 *7446696c6554696d65735f636c6f73757265004748437a69576f72645f7a64646d73686f775f69 *6e666f004748437a6953686f775f61355f696e666f00546578747a69526561647a694c65785f7a *644c723541336c766c3130385f636c6f73757265005f5f737467696e69745f53797374656d7a69 *506f7369787a6954797065735f005f5f737467696e69745f4748437a69456e756d00546578747a *69526561647a694c65785f7a644c7235774a7832315f636c6f73757265004748437a695265616c *5f7a6477746f526174696f6e616c5f656e747279004748437a69466c6f61745f615f636c6f7375 *7265004748437a69496e745f7a737a65335f696e666f0053797374656d7a69456e7669726f6e6d *656e745f676574417267735f696e666f004748437a695765616b5f7a647772756e46696e616c69 *7a7a657242617463685f636c6f7375726500446973747269627574696f6e7a69457874656e7369 *6f6e5f416c6c6f774f7665726c617070696e67496e7374616e6365735f7374617469635f696e66 *6f00546578747a69526561647a694c65785f7a644c723577646135305f656e7472790044697374 *7269627574696f6e7a695061636b6167655f73686f775061636b61676549645f636c6f73757265 *007374675f63746f695f7265745f52316e5f696e666f0053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c32315f636c6f7375726500616c6c6f63426c6f636b00 *446973747269627574696f6e7a6953657475705f7061727365486164646f636b417267735f7372 *74004748437a6953686f775f6136385f696e666f00546578747a69526561647a694c65785f7a64 *4c723575526c766c32305f656e747279004748437a694c6973745f74616b657a75756e73616665 *7a7555496e745f656e747279004748437a695265616c5f61355f636c6f73757265004748437a69 *4c6973745f7a644c723272716c766c31355f636c6f73757265004748437a69426173655f7a6464 *6d7a6c7a655f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f53636f *706564547970655661726961626c65735f7374617469635f656e747279004748437a69466c6f61 *745f7a64777a647370726f7065724672616374696f6e5f656e747279004748437a69426173655f *7a657a65335f696e666f004748437a69426173655f6d696e7573496e745f636c6f737572650054 *6578747a69506172736572436f6d62696e61746f72737a6952656164505f4765745f636f6e5f69 *6e666f004748437a694c6973745f6d6178696d756d5f696e666f004748437a69494f426173655f *4172697468457863657074696f6e5f636f6e5f656e747279004748437a694c6973745f7a644c72 *3272576c766c33315f696e666f00656e6c61726765537461626c655074725461626c6500474843 *7a6953686f775f61395f696e666f007374675f696e743634546f576f72643634007374675f7365 *6c5f365f7570645f696e666f00446973747269627574696f6e7a6953657475705f636d6448656c *705f636c6f73757265004748437a694e756d5f7a7a65726f496e74656765725f636c6f73757265 *00546578747a69526561647a694c65785f7a644c723574486132395f636c6f7375726500474843 *7a69494f426173655f417070656e6448616e646c655f7374617469635f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f556e696f6e5f7374617469635f656e74 *7279004748437a69526561645f6c766c355f656e7472790053797374656d7a694469726563746f *72795f6c766c32395f656e7472790053797374656d7a69436d645f72617753797374656d5f656e *74727900446973747269627574696f6e7a6950617273655574696c735f416d6269676f75735061 *7273655f7374617469635f696e666f007374675f696e746572705f636f6e737472365f656e7472 *7900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c644f70 *74696f6e735f696e666f004748437a69494f426173655f54696d65457870697265645f73746174 *69635f656e74727900446174617a695479706561626c655f676f315f696e666f004748437a6942 *6173655f6c766c335f636c6f7375726500546578747a69526561647a694c65785f7a644c723574 *566c766c31315f696e666f00546578747a69506172736572436f6d62696e61746f72737a695265 *6164505f7a6c7a707a705f696e666f00446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f6873536f757263654469725f656e747279004748437a695265616c5f6c *766c365f636c6f73757265004748437a6953686f775f69746f735f656e7472790053797374656d *7a69436d645f73797374656d5f636c6f7375726500446973747269627574696f6e7a6945787465 *6e73696f6e5f496e6c696e6550686173655f636c6f7375726500546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c7234456e6c7a75746578745f636c6f737572650047 *48437a69526561645f7a64737a64646d726561647350726563325f696e666f0044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f6275696c64446570656e64735f *656e74727900446973747269627574696f6e7a6953657475705f7a646766726f6d436f6d70696c *65725f656e747279007374675f73656c5f395f7570645f656e7472790066726565486173685461 *626c6500546578747a695072657474795072696e747a69487567686573504a5f4368725f636f6e *5f696e666f004748437a69426173655f4c545f636c6f7375726500546578747a69526561647a69 *4c65785f7a644c723576486c766c32395f636c6f73757265004748437a694e756d5f73686f774c *6973745f696e666f00446174617a69486173685461626c655f7a64776c6f6f6b75705f636c6f73 *75726500446973747269627574696f6e7a6953657475705f48656c70436d645f7374617469635f *656e74727900546578747a69526561647a694c65785f7a644c723576376c766c32335f656e7472 *7900446973747269627574696f6e7a6953657475705f436f7079436d645f696e666f0044697374 *7269627574696f6e7a6956657273696f6e5f6265747765656e56657273696f6e73496e636c7573 *6976655f696e666f004748437a695265616c5f5a437a765f7374617469635f696e666f00446973 *747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c7573505f *73727400446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6368616e *676546696c654578745f656e747279007374675f67635f756e62785f72315f696e666f00474843 *7a6953686f775f6136385f636c6f73757265004748437a69556e69636f64655f7a64776973416c *7068615f696e666f007374675f494e445f696e666f0053797374656d7a69506f7369787a69496e *7465726e616c735f7a64776363616c6c32385f636c6f73757265004748437a6953686f775f7a64 *4c72315a5a4a6c766c365f636c6f73757265004748437a69494f5f7a64777772697465426c6f63 *6b735f736c6f77004748437a69494f426173655f6132365f696e666f004748437a69546f704861 *6e646c65725f746f7048616e646c65725f73727464004748437a6948616e646c655f6c766c3136 *5f696e666f004748437a69576f72645f577a685f636f6e5f656e74727900446973747269627574 *696f6e7a69436f6d7061747a6952656164505f7a707a707a705f696e666f004748437a6953686f *775f6c766c32335f696e666f004748437a6948616e646c655f7a644c726259786c766c32325f69 *6e666f004748437a694e756d5f5a43444e756d5f7374617469635f656e747279004748437a6949 *4f426173655f615f656e747279004748437a69526561645f6c766c32315f696e666f0054657874 *7a69526561647a694c65785f7a644c723577626c766c33345f656e747279004748437a69496e74 *5f7a64646d7a6c7a655f656e74727900546578747a695072657474795072696e747a6948756768 *6573504a5f766361745f696e666f004748437a69426173655f547275655f636c6f737572650044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f617574686f725f *656e747279007374675f61705f707070707070705f696e666f00446973747269627574696f6e7a *694c6963656e73655f5075626c6963446f6d61696e5f7374617469635f656e7472790044697374 *7269627574696f6e7a694765744f70745f52657475726e496e4f726465725f636c6f7375726500 *5f5f737467696e69745f546578747a6953686f770053797374656d7a69456e7669726f6e6d656e *745f6c766c5f636c6f7375726500446973747269627574696f6e7a6953657475705f7061727365 *436c65616e417267735f737274004748437a69556e69636f64655f7a64776973416c7068614e75 *6d5f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f52656375727369 *7665446f5f636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f6c69624275696c64496e666f5f696e666f00446973747269627574696f6e7a69 *50617273655574696c735f73686f7746696c65506174685f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c723577356c766c33335f696e666f00546578747a69506172736572 *436f6d62696e61746f72737a6952656164505f63686f6963655f636c6f73757265004748437a69 *494f426173655f496e76616c6964417267756d656e745f636c6f7375726500546578747a695072 *657474795072696e747a69487567686573504a5f7a647766696c6c315f696e666f007374726572 *726f724040474c4942435f322e3000446973747269627574696f6e7a6953657475705f57697468 *486164646f636b5f7374617469635f696e666f00546578747a69526561647a694c65785f7a644c *723578427833305f636c6f73757265004748437a6953686f775f73686f77537472696e675f696e *666f004748437a694c6973745f7a644c723272776c766c31385f696e666f00546578747a695265 *61647a694c65785f7a644c72357a7a566c766c3130345f636c6f73757265004469737472696275 *74696f6e7a6950726550726f636573737a69556e6c69745f7a6467746f436c6173736966696564 *5f656e74727900446973747269627574696f6e7a6953657475705f5769746843707068735f656e *747279007274735f6170706c7900546578747a69526561647a694c65785f7a644c723541626c76 *6c3131325f636c6f7375726500546578747a695072657474795072696e747a6948756768657350 *4a5f6132335f636c6f73757265005f5f737467696e69745f466f726569676e7a694d6172736861 *6c7a694572726f72005f5f737467696e69745f436f6e74726f6c7a69457863657074696f6e5f00 *546578747a69526561647a694c65785f7a644c723574586c69745f636c6f737572650044617461 *7a694c6973745f7a644c72346e396c766c325f636c6f7375726500446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f4275696c64496e666f5f7374617469635f65 *6e747279005f5f64736f5f68616e646c6500546578747a69526561647a694c65785f7a644c7235 *74686131365f656e74727900446973747269627574696f6e7a6950617273655574696c735f6669 *656c644e616d655f636c6f7375726500446973747269627574696f6e7a694765744f70745f6765 *744f70745f737274004748437a695265616c5f6c766c31375f636c6f737572650053797374656d *7a69506f7369787a69496e7465726e616c735f6f7a754e4f435454595f656e747279004748437a *69456e756d5f676f7a7575707a75696e747a756c6973745f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c7235746c6131385f696e666f004748437a6953686f775f6c766c31 *335f696e666f004748437a69426173655f6571496e745f656e74727900546578747a6950617273 *6572436f6d62696e61746f72737a6952656164507265635f706661696c5f636c6f737572650044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f63536f75726365 *735f656e74727900446973747269627574696f6e7a695061636b6167655f706b6756657273696f *6e5f636c6f73757265007374675f494e445f6469726563745f696e666f007472795075744d5661 *727a685f6661737400546578747a69526561647a694c65785f7a644c7235775a5a6135385f696e *666f004748437a69494f5f6c766c32325f636c6f73757265004748437a69456e756d5f65667449 *6e745f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f6d61 *6e795f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a75 *5452554e435f636c6f73757265004748437a69426173655f547275655f7374617469635f696e66 *6f007374675f6e6f743634004748437a69494f5f6c766c345f636c6f7375726500446174617a69 *5479706561626c655f63616368655f636c6f7375726500546578747a695072657474795072696e *747a69487567686573504a5f7a644c723468697365704e42315f696e666f005f5f737467696e69 *745f436f6e74726f6c7a69457863657074696f6e007374675f67635f67656e5f6870004748437a *69494f426173655f696f457863657074696f6e5f656e74727900546578747a69526561647a694c *65785f7a644c72357a7a466c766c39365f636c6f73757265004748437a69496e745f7a64646d6d *696e5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f736b69 *704d616e79315f737274004748437a6948616e646c655f7374646572725f636c6f737572650047 *48437a695265616c5f71756f7452656d325f636c6f73757265004748437a6948616e646c655f69 *6f657a756e6f745265616461626c655f736c6f77004748437a694c6973745f7a644c723272656c *766c395f636c6f73757265004748437a69556e69636f64655f7a6477697344696769745f636c6f *73757265004748437a69426173655f706c7573496e745f696e666f00546578747a69526561647a *694c65785f53796d626f6c5f636f6e5f656e74727900546578747a69526561647a694c65785f43 *6861725f7374617469635f656e747279004748437a694c6973745f6d6178696d756d5f636c6f73 *75726500546578747a69526561647a694c65785f7a644c723575506c766c31395f656e74727900 *4748437a69494f426173655f7468726f775f636c6f73757265004748437a69526561645f706f6c *797a75676f5f696e666f00436f6e74726f6c7a694d6f6e61645f7768656e5f696e666f00474843 *7a69576f72645f7a70335f656e747279004748437a694572725f756e74616e676c655f636c6f73 *757265004748437a694c6973745f64726f705768696c655f656e74727900446973747269627574 *696f6e7a6950617273655574696c735f6c6973744669656c645f73727400446973747269627574 *696f6e7a6950726550726f636573737a69556e6c69745f50726f6772616d5f656e747279005f5f *737467696e69745f446973747269627574696f6e7a694d616b655f00466f726569676e7a695374 *6f7261626c655f706f6c797a757065656b427974654f6666325f656e747279004748437a69494f *426173655f494f4572726f725f7374617469635f656e74727900446973747269627574696f6e7a *6956657273696f6e5f416e7956657273696f6e5f7374617469635f696e666f004748437a69496e *745f4933327a685f7374617469635f656e747279007374675f73656c5f325f6e6f7570645f656e *747279004748437a69426173655f7a646645715a4d5a4e5f656e74727900546578747a69507265 *7474795072696e747a69487567686573504a5f6c766c31335f636c6f7375726500546578747a69 *526561647a694c65785f496e745f636f6e5f696e666f004748437a69426173655f6571496e745f *696e666f004748437a69526561645f7a64737a64646d726561647350726563315f636c6f737572 *650068735f657869740053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c36345f656e7472790053797374656d7a69456e7669726f6e6d656e745f676f325f696e *666f00446174617a695479706561626c655f6d6b41707054795f696e666f004469737472696275 *74696f6e7a6956657273696f6e5f4561726c69657256657273696f6e5f7374617469635f696e66 *6f004748437a69546f7048616e646c65725f7a644c723337326c766c325f636c6f737572650047 *48437a6948616e646c655f7a6477666c75736857726974654275666665725f656e747279005f5f *737467696e69745f446174617a69426f6f6c004748437a69526561645f726561644c6973745072 *656344656661756c745f696e666f005f73746741737365727400546578747a69526561647a694c *65785f7a644c723577626c766c33345f696e666f004748437a6948616e646c655f6c766c32335f *696e666f00446973747269627574696f6e7a6956657273696f6e5f73686f7756657273696f6e52 *616e67655f696e666f00546578747a69526561647a694c65785f4964656e745f636f6e5f656e74 *727900546578747a69526561647a694c65785f50756e635f7374617469635f656e74727900776f *726432496e74656765727a685f6661737400446973747269627574696f6e7a695061636b616765 *5f706b674e616d655f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c *65506174685f73706c697446696c654e616d655f636c6f7375726500546578747a69526561647a *694c65785f7a644c7235784c6136365f696e666f00546578747a69526561647a694c65785f6c65 *785f636c6f737572650053797374656d7a69494f5f7075745374724c6e5f636c6f737572650054 *6578747a69506172736572436f6d62696e61746f72737a6952656164507265635f72657365745f *696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a707a707a70 *5f636c6f7375726500446973747269627574696f6e7a695061636b6167655f7a6467746f506163 *6b6167654964656e7469666965725f696e666f00446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e5f696e636c756465735f656e747279004748437a69494f426173 *655f50726f746f636f6c4572726f725f636c6f7375726500446973747269627574696f6e7a6943 *6f6d7061747a6952656164505f6c6f6f6b5f636c6f737572650053797374656d7a694469726563 *746f72795f646f65734469726563746f727945786973745f636c6f737572650044697374726962 *7574696f6e7a69436f6d7061747a6952656164505f526573756c745f636f6e5f656e7472790044 *6973747269627574696f6e7a6956657273696f6e5f4561726c69657256657273696f6e5f656e74 *727900446973747269627574696f6e7a6953657475705f7061727365436c65616e417267735f63 *6c6f73757265005f5f6c6962635f6373755f66696e690053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c365f656e747279004748437a69426173655f5a43444f *72645f636f6e5f656e74727900616e64496e74656765727a685f666173740053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c33305f636c6f7375726500474843 *7a694e756d5f66726f6d496e7465676572315f656e74727900446973747269627574696f6e7a69 *53657475705f50726f6772616d6174696361436d645f7374617469635f656e747279004748437a *6953686f775f73686f774c697374315f656e74727900446174617a694569746865725f7a646645 *714569746865725f696e666f004748437a69496e745f7a64646d7a6c5f696e666f005379737465 *6d7a694469726563746f72795f7769746846696c655374617475735f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f6c6f6f6b5f696e666f0053797374656d7a *69506f7369787a69496e7465726e616c735f637a75636c6f73656469725f656e74727900446973 *747269627574696f6e7a695061636b6167654465736372697074696f6e5f63634f7074696f6e73 *5f696e666f004748437a694c6973745f7a644c7232714f6c766c355f696e666f00446973747269 *627574696f6e7a6956657273696f6e5f73686f7756657273696f6e52616e67655f737274004461 *74617a694c6973745f6c696e65735f656e747279004748437a69494f426173655f61325f636c6f *73757265004748437a6948616e646c655f7a644c726330427a647768616e646c6546696e616c69 *7a7a65725f656e747279004748437a694572725f6c766c395f696e666f004748437a69494f4261 *73655f696f457863657074696f6e5f696e666f004748437a694c6973745f616c6c5f636c6f7375 *7265004748437a694e756d5f7a644c723278746c766c315f696e666f004748437a69494f426173 *655f756e73616665496e7465726c65617665494f5f696e666f004748437a69494f426173655f62 *75664275665f636c6f7375726500446174617a69486173685461626c655f6c766c315f636c6f73 *75726500446973747269627574696f6e7a6953657475705f7a646766726f6d436f6d70696c6572 *5f696e666f00446973747269627574696f6e7a694765744f70745f7a6467746f4f707444657363 *725f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c *6c5f656e7472790053797374656d7a694469726563746f72795f69734469726563746f72795f63 *6c6f73757265007463736574617474724040474c4942435f322e3000446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f73686f77486f6f6b65644275696c64496e *666f5f73727400446973747269627574696f6e7a6950617273655574696c735f70617273655061 *636b6167654e616d65515f656e747279004748437a694c6973745f706f6c797a756c6173747a71 *5f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e *5f7570646174655061636b6167654465736372697074696f6e5f636c6f7375726500546578747a *69526561647a694c65785f7a644c723575506c766c31395f696e666f004748437a694c6973745f *7a644c723272776c766c31385f656e747279004748437a69456e756d5f7a644c723979676f7a75 *646e7a75696e747a7566625f736c6f7700546578747a695072657474795072696e747a69487567 *686573504a5f72656e6465725f636c6f7375726500446973747269627574696f6e7a6953657475 *705f576974684863506b675f7374617469635f656e74727900546578747a69526561647a694c65 *785f7a644c723576786134335f656e7472790053797374656d7a69456e7669726f6e6d656e745f *67657450726f674e616d655f736c6f77004748437a6948616e646c655f6f70656e46696c657a71 *5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f4669 *6e616c5f7374617469635f696e666f00446973747269627574696f6e7a69457874656e73696f6e *5f4e6f4d6f6e6f6d6f72706869736d5265737472696374696f6e5f7374617469635f696e666f00 *4748437a69456e756d5f656e756d46726f6d5468656e335f696e666f0044697374726962757469 *6f6e7a6953657475705f57697468486164646f636b5f696e666f00446973747269627574696f6e *7a6953657475705f636f6e66696748617070795f696e666f004748437a69546f7048616e646c65 *725f7a644c723337776c766c31365f696e666f004748437a6953686f775f61315f636c6f737572 *6500737461745f656e64496e6974004748437a6948616e646c655f6f70656e46645f696e666f00 *4748437a694e756d5f656e756d44656c7461546f496e746567657246425f636c6f737572650047 *48437a69494f426173655f7a644c7236624861315f696e666f00446973747269627574696f6e7a *69436f6d7061747a6952656164505f636861696e725f696e666f0066726565436861696e004748 *437a69546f7048616e646c65725f7a644c72333653615f636c6f73757265004748437a69494f42 *6173655f577269746548616e646c655f7374617469635f656e74727900546578747a6950726574 *74795072696e747a69487567686573504a5f7a644c7234676f6c766c31365f636c6f7375726500 *546578747a695072657474795072696e747a69487567686573504a5f766361745f656e74727900 *436f6e74726f6c7a69457863657074696f6e5f66696e616c6c795f696e666f00546578747a6952 *6561647a694c65785f7a644c7235786c6c766c34365f696e666f004748437a69576f72645f7a73 *7a65345f636c6f73757265004748437a695074725f46756e5074725f7374617469635f696e666f *0053797374656d7a69506f7369787a69496e7465726e616c735f61315f656e747279004748437a *6953686f775f73686f7773507265635f696e666f00446973747269627574696f6e7a6950726550 *726f636573737a69556e6c69745f5072655f696e666f00446973747269627574696f6e7a695369 *6d706c657a695574696c735f6d61796265457869745f696e666f00446973747269627574696f6e *7a694765744f70745f4f70745f696e666f0073746746726565004748437a6953686f775f613730 *5f696e666f004748437a69526561645f6c766c31345f696e666f005f5f737467696e69745f4748 *437a69496e745f00546578747a69506172736572436f6d62696e61746f72737a6952656164505f *6c766c325f636c6f7375726500546578747a695072657474795072696e747a6948756768657350 *4a5f737472696e677a757478745f636c6f73757265004748437a69526561645f726561644c6973 *7444656661756c745f656e747279004748437a694c6973745f616c6c5f656e74727900436f6e74 *726f6c7a694d6f6e61645f73657175656e63655f656e747279007374675f73656c5f345f6e6f75 *70645f696e666f004748437a6948616e646c655f696f657a7566696e616c697a7a656448616e64 *6c655f656e7472790053797374656d7a69494f5f777269746546696c655f636c6f737572650053 *797374656d7a69457869745f615f696e666f004748437a69546f7048616e646c65725f7a644c72 *3336556c766c5f636c6f7375726500446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f7a646653686f775061636b6167654465736372697074696f6e5f636c6f73 *757265007374675f71756f74496e7436340053797374656d7a69506f7369787a69496e7465726e *616c735f7a64776363616c6c33325f636c6f7375726500446973747269627574696f6e7a695365 *7475705f7061727365556e7265676973746572417267735f636c6f737572650053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c365f736c6f7700446973747269 *627574696f6e7a6953657475705f436d645f656e747279004748437a69496e745f746f456e756d *5f656e747279004748437a6948616e646c655f6c766c31345f636c6f73757265005a434d61696e *5f6d61696e5f696e666f007365746c6f63616c654040474c4942435f322e30004748437a695265 *616c5f71756f7452656d315f656e74727900546578747a69526561647a694c65785f537472696e *675f7374617469635f696e666f0053797374656d7a694469726563746f72795f7a644c72396145 *615f656e74727900546578747a695072657474795072696e747a69487567686573504a5f7a6477 *66696c6c315f736c6f7700446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f70617273654465736372697074696f6e5f737274004748437a69494f426173655f61 *355f636c6f73757265004748437a69426173655f72657475726e5f656e74727900446973747269 *627574696f6e7a6950617273655574696c735f706172736554657374656457697468515f737274 *004748437a6953686f775f6131325f696e666f00546578747a695072657474795072696e747a69 *487567686573504a5f7a644c7234683266696c6c31315f656e747279004748437a69426173655f *45515f7374617469635f696e666f00446973747269627574696f6e7a6953696d706c657a695574 *696c735f72617753797374656d506174685f737274004748437a6953686f775f7a644c72315a5a *486c766c355f636c6f73757265004748437a6953686f775f6c766c31365f636c6f737572650047 *48437a69496e745f7a6d325f696e666f00446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f776974684578655f636c6f73757265004748437a6953686f775f7a64 *7773686f774c6974436861725f636c6f73757265004748437a69494f5f7a644c723967746c617a *7a7952656164315f636c6f73757265004748437a69526561645f72656164735f696e666f004469 *73747269627574696f6e7a69457874656e73696f6e5f4172726f77735f636c6f73757265004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f73686f77486f6f6b *65644275696c64496e666f5f696e666f004748437a69426173655f6c74496e745f656e74727900 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35335f696e66 *6f004748437a69494f426173655f6c766c33355f636c6f73757265004748437a69496e745f7a64 *777a64646d656e756d46726f6d5468656e546f5f656e747279004748437a69496e745f746f496e *7465676572325f656e747279004748437a69496e745f66726f6d496e7465676572325f696e666f *004748437a6948616e646c655f7a644c726333746c766c39395f636c6f73757265004748437a69 *4e756d5f7a6477696e746567657232496e745f696e666f004748437a6948616e646c655f68466c *7573685f656e7472790077616b655570536c656570696e6754687265616473004748437a69494f *426173655f5265616448616e646c655f7374617469635f696e666f004748437a6948616e646c65 *5f6f70656e46696c657a715f696e666f004748437a69494f426173655f6c766c31385f696e666f *004748437a6948616e646c655f7a644c724a6a617070656e647a75666c6167735f656e74727900 *446973747269627574696f6e7a6950617273655574696c735f50617273654f6b5f696e666f0044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f636861696e725f7372740044 *6174617a694c6973745f69735375666669784f665f636c6f73757265007374675f73746f705f74 *68726561645f696e666f0072756e5f71756575655f746c004748437a695265616c5f746f496e74 *65676572315f636c6f7375726500446174617a695479706561626c655f74626c5f696e666f0047 *48437a69496e745f646976325f636c6f73757265004748437a6953686f775f6133305f696e666f *004748437a69496e745f4931367a685f7374617469635f656e7472790044697374726962757469 *6f6e7a6956657273696f6e5f7a646653686f77446570656e64656e63795f636c6f737572650044 *6973747269627574696f6e7a69457874656e73696f6e5f47656e65726963735f636c6f73757265 *004748437a695265616c5f6131345f696e666f00446973747269627574696f6e7a695061727365 *5574696c735f6669656c644765745f656e74727900446973747269627574696f6e7a6950617273 *655574696c735f73706c69745374616e7a7a61735f73727400756e6c6f636b46696c6500537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32385f736c6f770065 *7869745363686564756c6572004748437a69456e756d5f7a644c723977676f7a7575707a75696e *747a7566625f696e666f004748437a694e756d5f7a6466456e756d496e74656765725f636c6f73 *757265004748437a69546f7048616e646c65725f6473315f736c6f77004748437a69494f426173 *655f6c766c31375f636c6f7375726500546578747a695072657474795072696e747a6948756768 *6573504a5f4368725f7374617469635f696e666f004748437a694172725f6c766c375f636c6f73 *75726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72346773 *6c766c31385f636c6f73757265006973466c6f61744e656761746976655a65726f004748437a69 *53686f775f6132365f656e747279004748437a69456e756d5f7a644c7232616a6c766c31375f65 *6e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c365f636c6f7375 *7265004748437a69426173655f496e6c5f636f6e5f696e666f007374675f46554c4c5f4d564152 *5f696e666f004748437a694572725f7a644c7231306a6c766c31305f636c6f7375726500737461 *626c655f7074725f7461626c65005f5f737467696e69745f53797374656d7a69506f7369787a69 *50726f6365737300446973747269627574696f6e7a6953657475705f55736572466c61675f7374 *617469635f696e666f0067656e65726963526169736500446973747269627574696f6e7a695061 *7273655574696c735f7a646653686f775061727365526573756c745f656e747279004748437a69 *494f5f7a644c723966666c766c325f696e666f0053797374656d7a69506f7369787a6946696c65 *735f6c766c32325f696e666f00546578747a69526561647a694c65785f7a644c72357864783236 *5f636c6f7375726500446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6672616d65776f726b735f696e666f004748437a6948616e646c655f7a644c724a687277 *7a75666c6167735f636c6f73757265004748437a69494f426173655f686146445f656e74727900 *4748437a69494f426173655f4d5661725f7374617469635f696e666f0044697374726962757469 *6f6e7a6956657273696f6e5f446570656e64656e63795f636c6f73757265004469737472696275 *74696f6e7a6953657475705f5265676973746572436d645f7374617469635f696e666f00474843 *7a69496e745f7a6477626f756e646564456e756d46726f6d5f636c6f73757265004748437a6952 *65616c5f7a647761355f696e666f004748437a694c6973745f6c656e6774685f656e7472790047 *48437a694c6973745f627265616b5f656e74727900446973747269627574696f6e7a694765744f *70745f4f70744572725f7374617469635f656e747279004748437a694e756d5f74696d6573496e *74656765725f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a64676672 *6f6d56657273696f6e52616e67655f696e666f004748437a6953686f775f6136385f656e747279 *004748437a69576f72645f7a6477746f496e7465676572315f656e747279004469737472696275 *74696f6e7a695061636b6167655f70617273655061636b61676549645f656e7472790044697374 *7269627574696f6e7a6953657475705f7a6467746f436f6e666967466c6167735f696e666f0053 *797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32365f656e7472 *79004748437a69494f426173655f48616e646c657a757a755f636f6e5f696e666f005379737465 *6d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36335f656e747279004748 *437a69494f426173655f4275666665725f7374617469635f696e666f004748437a69496e745f7a *64646d73686f775f636c6f73757265004748437a69494f426173655f6132365f636c6f73757265 *004748437a69496e745f646976325f656e74727900436f6e74726f6c7a694d6f6e61645f7a6477 *666f6c644d5f636c6f73757265004748437a69426173655f7a64646d7a675f656e747279004469 *73747269627574696f6e7a695061636b6167655f706b6756657273696f6e5f656e747279005465 *78747a69526561647a694c65785f7a644c723577376134395f656e747279007374675f6e656761 *7465496e743634004748437a69526561645f6c766c32345f696e666f004748437a69556e69636f *64655f7a6477697355707065725f696e666f005f5f737467696e69745f44697374726962757469 *6f6e7a695365747570006d6b466f726569676e4f626a7a685f6661737400546578747a69506172 *736572436f6d62696e61746f72737a6952656164505f6c766c335f656e74727900446973747269 *627574696f6e7a69457874656e73696f6e5f466f726569676e46756e6374696f6e496e74657266 *6163655f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f416c6c5269 *6768747352657365727665645f636c6f73757265004748437a694c6973745f616e795f696e666f *007374675f5745414b5f696e666f007374675f4d55545f5641525f696e666f004748437a695368 *6f775f73686f77436861725f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f7a6467746f45786563757461626c655f636c6f7375726500474843 *5f5a434343616c6c61626c655f7374617469635f696e666f004748437a69494f5f7a6477684765 *744275665f696e666f004748437a69426173655f7a64646d6d61785f696e666f00446973747269 *627574696f6e7a6953657475705f7a64664571416374696f6e5f636c6f7375726500546578747a *695072657474795072696e747a69487567686573504a5f7a644c72363863616e747a756661696c *5f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f6469 *655f696e666f004748437a69537461626c655f537461626c655074725f7374617469635f656e74 *727900446973747269627574696f6e7a6950617273655574696c735f73696e676c655374616e7a *7a615f737274004748437a69496e745f7a6d325f656e74727900446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f7a6466526561644c6962726172795f636c6f73 *757265004748437a6948616e646c655f7769746848616e646c657a757a757a715f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467736c766c3138 *5f696e666f004748437a69496e745f7a6477626f756e646564456e756d46726f6d5f696e666f00 *436f6e74726f6c7a694d6f6e61645f7a6477666f6c644d5f656e747279004748437a6953686f77 *5f6136375f636c6f73757265005f5f6572726e6f5f6c6f636174696f6e4040474c4942435f322e *30007374675f67635f766f69645f696e666f00446973747269627574696f6e7a69506172736555 *74696c735f7061727365457874656e73696f6e515f636c6f737572650044697374726962757469 *6f6e7a694765744f70745f5265714172675f636f6e5f696e666f00546578747a69526561647a69 *4c65785f7a644c723574646131345f636c6f73757265004748437a695265616c5f61385f636c6f *7375726500446973747269627574696f6e7a694765744f70745f556e7265714f70745f636f6e5f *656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6c766c31355f656e *747279004748437a694c6973745f7a644c723272696c766c31315f636c6f73757265004748437a *69496e745f6c766c32395f656e7472790053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776c766c5f656e747279004748437a694c6973745f706f6c797a75666f6c6472325f *656e747279004748437a694e756d5f75707a756c6973745f696e666f0053797374656d7a694469 *726563746f72795f6c766c32355f636c6f73757265004748437a694572725f6572726f725f636c *6f7375726500546578747a69526561647a694c65785f7a644c7235766a6c766c32355f656e7472 *79004748437a694c6973745f7a644c723272696c766c31315f696e666f00466f726569676e7a69 *4d61727368616c7a69416c6c6f635f7a64776363616c6c315f696e666f00446973747269627574 *696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f474843466c61675f656e7472 *7900446973747269627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e *6765735f636c6f7375726500546578747a69526561647a694c65785f7a644c723579396c766c35 *395f636c6f73757265004748437a69494f5f696c6c6567616c42756666657253697a7a655f656e *747279004748437a69494f5f7a644c723966786c766c31315f696e666f004748437a694e756d5f *73686f774c6973745f636c6f7375726500446174617a695475706c655f6673745f656e74727900 *446973747269627574696f6e7a69436f6d7061747a6952656164505f736b69705370616365735f *696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f45 *786563757461626c655f636f6e5f656e74727900446973747269627574696f6e7a694765744f70 *745f4e6f6e4f70745f7374617469635f696e666f00546578747a69526561647a694c65785f7a64 *4c723574526c766c395f696e666f00446973747269627574696f6e7a69436f6d7061747a694669 *6c65506174685f697350617468536570617261746f725f73727400546578747a69507265747479 *5072696e747a69487567686573504a5f41626f76655f7374617469635f656e7472790054657874 *7a69526561647a694c65785f7a644c7235754c6133355f636c6f73757265004748437a69494f42 *6173655f6275664275665f656e747279004748437a69494f5f685075744368617273315f636c6f *7375726500446973747269627574696f6e7a6953657475705f636d644f7074696f6e735f656e74 *7279005f5f737467696e69745f446973747269627574696f6e7a6953657475705f004469737472 *69627574696f6e7a6956657273696f6e5f56657273696f6e5f636c6f7375726500446973747269 *627574696f6e7a695061636b6167654465736372697074696f6e5f73686f775061636b61676544 *65736372697074696f6e5f656e747279004748437a69496e745f646976325f696e666f00446973 *747269627574696f6e7a69457874656e73696f6e5f496e6c696e6550686173655f737461746963 *5f696e666f004748437a6953686f775f6131365f696e666f0053797374656d7a69446972656374 *6f72795f6c766c32365f656e747279004748437a69496e745f6c766c31385f636c6f7375726500 *5f5f737467696e69745f466f726569676e7a694d61727368616c7a69416c6c6f6300546578747a *69526561647a694c65785f7a644c723576546c766c33315f636c6f737572650044697374726962 *7574696f6e7a69436f6d7061747a6952656164505f7a6467746f5061727365725f696e666f0047 *48437a69526561645f6c766c32345f636c6f7375726500446973747269627574696f6e7a695365 *7475705f4c6966745f696e666f004748437a69496e745f7a64646d7a677a655f656e7472790044 *6973747269627574696f6e7a6953657475705f7a6467746f436f6d70696c65725f696e666f0054 *6578747a69526561647a694c65785f7a644c723576546c766c33315f656e747279004748437a69 *426173655f7a627a625f636c6f73757265004f6e45786974486f6f6b004748437a694e756d5f71 *756f7452656d496e74656765725f696e666f00446174617a695479706561626c655f6d6b547943 *6f6e5f656e74727900446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6c6963656e736546696c655f656e7472790053797374656d7a69506f7369787a69496e74 *65726e616c735f637a75756e6c696e6b5f656e74727900446973747269627574696f6e7a694578 *74656e73696f6e5f4e616d65644669656c6450756e735f7374617469635f656e74727900474843 *7a69556e69636f64655f7a6477746f4c6f7765725f696e666f007274735f6d6b576f7264313600 *446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73616e697479 *436865636b5061636b6167655f696e666f00446973747269627574696f6e7a694765744f70745f *7a646766726f6d4172674f726465725f656e7472790053797374656d7a69436d645f6c766c315f *656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *6861734c6962735f696e666f004748437a694572725f7a644c723130706c766c31335f636c6f73 *75726500446973747269627574696f6e7a6953696d706c657a695574696c735f63757272656e74 *4469725f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a64665479 *706561626c6556657273696f6e5f696e666f00446973747269627574696f6e7a6953696d706c65 *7a695574696c735f736d617274436f7079536f75726365735f737274006f6c646573745f67656e *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f6d756e63685f69 *6e666f00546578747a69526561647a694c65785f7a644c723578786c766c34385f636c6f737572 *65004748437a694e756d5f737563635f636c6f73757265004748437a69494f426173655f436c6f *73656448616e646c655f636c6f73757265004748437a694572725f6c766c365f636c6f73757265 *0053797374656d7a694469726563746f72795f7769746846696c655374617475735f636c6f7375 *726500546578747a69526561647a694c65785f7a644c72357a7a746c766c39305f636c6f737572 *650073687574646f776e4861736b656c6c416e6445786974004748437a694e756d5f73686f7773 *507265635f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4f7665726c *617070696e67496e7374616e6365735f7374617469635f656e7472790044697374726962757469 *6f6e7a694765744f70745f5265714172675f636f6e5f656e747279006372656174655468726561 *64005f5f756d6f6464693300546578747a69526561647a694c65785f7a644c7235795a5a6c766c *38355f636c6f73757265004748437a6953686f775f73686f7753706163655f696e666f00474843 *7a694e756d5f7a737a655f696e666f00546578747a69526561647a694c65785f7a644c72684b6c *65784e756d6265725f636c6f7375726500546578747a69526561647a694c65785f7a644c723575 *396c766c31355f656e74727900546578747a69526561647a694c65785f5261745f636f6e5f656e *747279004748437a69576f72645f7a644c723943636c766c31345f656e747279004748437a6953 *686f775f6134345f696e666f004748437a694e756d5f636f6d706172655f636c6f737572650047 *48437a6953746f7261626c655f726561645074724f66665074725f656e74727900546578747a69 *526561647a694c65785f6c766c3132355f636c6f73757265004748437a69496e745f66726f6d49 *6e7465676572325f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f77 *697468696e52616e67655f696e666f004748437a695265616c5f7a64737a63325f656e74727900 *4748437a69456e756d5f656664496e7446425f636c6f73757265004748437a695265616c5f7a64 *777a64737265647563655f656e747279004748437a69426173655f7a677a675f696e666f004748 *437a69496e745f6c766c32375f636c6f7375726500446973747269627574696f6e7a6953657475 *705f436f6e666967436d645f656e747279004748437a6948616e646c655f6c766c315f656e7472 *7900446973747269627574696f6e7a6953657475705f5769746848617070795f696e666f004748 *437a69456e756d5f6c766c31365f636c6f7375726500546578747a69526561647a694c65785f7a *644c72357a7a396136395f636c6f73757265004748437a6953686f775f6c766c32335f636c6f73 *757265005f5f737467696e69745f446973747269627574696f6e7a6953696d706c657a69557469 *6c7300546578747a695072657474795072696e747a69487567686573504a5f7a644c7234686d7a *6477696e64656e745f636c6f7375726500466f726569676e7a69437a694572726f725f7a647763 *63616c6c315f696e666f004748437a69456e756d5f656674496e7446425f656e74727900474843 *7a69526561645f726561644e756d626572335f696e666f004748437a6948616e646c655f7a644c *726259336c766c375f636c6f737572650053797374656d7a694469726563746f72795f6c766c32 *335f656e747279004748437a69494f5f684765744275665f696e666f0044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f65787472614c6962735f696e666f0047 *48437a6953686f775f7a64737a64646d73686f774c697374335f636c6f7375726500546578747a *695072657474795072696e747a69487567686573504a5f41626f76655f7374617469635f696e66 *6f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f4c696272 *6172795f636f6e5f656e747279007374675f64756d6d795f7265745f636c6f7375726500474843 *7a69526561645f7265616450726563315f696e666f004748437a69496e745f6c6974325f636c6f *7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f66 *72616d65776f726b735f636c6f737572650053797374656d7a69506f7369787a69496e7465726e *616c735f6f7a754e4f4e424c4f434b5f656e747279004748437a69494f5f7a644c7239664a7a64 *77726561644368756e6b5f736c6f77004748437a69546f7048616e646c65725f7a644c7233376f *6c766c31325f696e666f00466f726569676e7a69437a694572726f725f6c766c315f696e666f00 *546578747a69526561647a694c65785f7a644c7235764a6134355f696e666f004748437a69494f *426173655f61335f656e747279004748437a695074725f46756e5074725f7374617469635f656e *747279004748437a6953686f775f7a647773686f7773507265635f696e666f00697377616c6e75 *6d4040474c4942435f322e30004748437a695265616c5f7a64737a765f696e666f004469737472 *69627574696f6e7a694d616b655f64656661756c744d61696e5f737274004748437a69546f7048 *616e646c65725f6c766c345f696e666f004748437a694e756d5f7a644c7232784a6c766c395f63 *6c6f73757265004748437a69456e756d5f676f7a75646e7a75696e747a756c6973745f636c6f73 *75726500446973747269627574696f6e7a6950617273655574696c735f7061727365446570656e *64656e63795f696e666f00546578747a69526561647a694c65785f7a644c723578786c766c3438 *5f656e74727900546578747a69526561647a694c65785f7a644c723576666134305f696e666f00 *4748437a69494f426173655f62756653697a7a655f636c6f737572650044697374726962757469 *6f6e7a69436f6d7061747a6946696c65506174685f636f6d6d6f6e506172656e745f7372740044 *6973747269627574696f6e7a694765744f70745f7573616765496e666f5f656e74727900474843 *7a695265616c5f6c766c325f636c6f7375726500546578747a695072657474795072696e747a69 *487567686573504a5f7a644c7234686b7a6477666974735f696e666f0053797374656d7a69436d *645f6c766c315f636c6f7375726500466f726569676e7a694d61727368616c7a6941727261795f *6c766c5f656e747279004748437a69494f426173655f6861547970655f696e666f00546578747a *69526561647a694c65785f7a644c723577727831385f636c6f73757265006973446f75626c6549 *6e66696e6974650053797374656d7a69506f7369787a69496e7465726e616c735f7a6477636361 *6c6c33335f696e666f004748437a69526561645f7a6473726561644c6973745072656344656661 *756c74345f636c6f73757265007374675f61705f325f7570645f656e747279007374675f6e6f66 *6f726365494f5f726574004748437a6953686f775f6131375f636c6f73757265004748437a6953 *545265665f53545265665f636f6e5f696e666f00446973747269627574696f6e7a69457874656e *73696f6e5f556e736166654f7665726c617070696e67496e7374616e6365735f7374617469635f *656e74727900446973747269627574696f6e7a69457874656e73696f6e5f4e6f4d6f6e6f6d6f72 *706869736d5265737472696374696f6e5f7374617469635f656e74727900446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f6275696c64496e666f5f696e666f00 *4748437a69494f426173655f7a647773686f777350726563345f696e666f0053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c35345f656e74727900546578747a *69526561647a694c65785f7a644c72357a7a666c766c38375f636c6f7375726500446973747269 *627574696f6e7a6950617273655574696c735f5374616e7a7a614669656c645f7374617469635f *656e747279004748437a69426173655f6571537472696e675f636c6f73757265004748437a6952 *6561645f61355f696e666f00546578747a695072657474795072696e747a69487567686573504a *5f61355f636c6f73757265004748437a695074725f5074725f636f6e5f696e666f004748437a69 *456e756d5f73756363355f656e74727900446973747269627574696f6e7a6953657475705f636f *6d70696c6572506b67546f6f6c5f656e747279004748437a69494f426173655f54696d65457870 *697265645f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c *735f6765744f7074696f6e7346726f6d536f757263655f656e7472790044697374726962757469 *6f6e7a6953696d706c657a695574696c735f72617753797374656d506174685f636c6f73757265 *004748437a69496e745f7a64646d7a6c7a655f696e666f00546578747a69506172736572436f6d *62696e61746f72737a6952656164505f6d706c75735f636c6f73757265006e65774d7574566172 *7a685f66617374004748437a69456e756d5f7a644c723977676f7a7575707a75696e747a756662 *5f736c6f7700446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *7570646174655061636b6167654465736372697074696f6e5f656e747279007374675f63617463 *685f6672616d655f325f726574007274735f6576616c537461626c65494f004748437a694e756d *5f7a644c7232787a7a6c766c345f636c6f73757265004748437a69456e756d5f7a644c72397967 *6f7a75646e7a75696e747a7566625f636c6f73757265004748437a69526561645f726561645072 *65635f636c6f73757265004748437a69494f426173655f7a677a675f636c6f7375726500446174 *617a69486173685461626c655f68617368537472696e675f656e747279004748437a694e756d5f *6c766c365f636c6f73757265004748437a69456e756d5f7a644c723977676f7a7575707a75696e *747a7566625f636c6f73757265007374675f7570645f6672616d655f696e666f004748437a6952 *6561645f7a6473726561644c69737444656661756c74325f696e666f0044697374726962757469 *6f6e7a694765744f70745f7a6467746f41726744657363725f636c6f7375726500446973747269 *627574696f6e7a6953657475705f636f6e6669674863506b675f636c6f73757265005379737465 *6d7a69506f7369787a6946696c65735f73657446696c6554696d65735f696e666f004748437a69 *426173655f7a64646d7a677a675f636c6f737572650072656d6f76655468726561644c6162656c *004748437a694e756d5f656e756d46726f6d5f636c6f7375726500546578747a69526561647a69 *4c65785f537472696e675f636f6e5f696e666f00546578747a69526561647a694c65785f7a644c *723541356c766c3130395f636c6f73757265004748437a694c6973745f7a6477627265616b5f63 *6c6f73757265004748437a69494f426173655f62756653697a7a655f696e666f00446973747269 *627574696f6e7a6953657475705f7a646766726f6d436f6d70696c6572466c61766f725f656e74 *7279004748437a6953686f775f73686f777350726563325f636c6f7375726500466f726569676e *7a694d61727368616c7a69416c6c6f635f6c766c345f636c6f7375726500446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f696e636c756465446972735f636c6f *7375726500446973747269627574696f6e7a6953657475705f4e48435f636c6f73757265007374 *675f67635f6431005f5f7564697664693300546578747a69526561647a694c65785f7a644c7235 *75396c766c31355f636c6f737572650053797374656d7a69506f7369787a6946696c65735f7365 *7446696c6554696d65735f656e747279007374675f72657475726e546f537461636b546f700047 *48437a694e756d5f707265645f636c6f7375726500446973747269627574696f6e7a6950617273 *655574696c735f706172736552656164535f696e666f007374675f63617463685f6672616d655f *355f72657400546578747a69526561647a694c65785f7a644c723575336c766c31325f636c6f73 *75726500466f726569676e7a694d61727368616c7a6941727261795f7a64777065656b41727261 *795f636c6f737572650063686d6f644040474c4942435f322e30004748437a69496e745f646976 *4d6f64325f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f436f6e7465 *7874537461636b5f7374617469635f696e666f007374675f61705f645f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f7a644c7234686d7a6477696e64656e74 *5f696e666f007365744e6f6e426c6f636b696e674664004748437a69456e756d5f6c766c31385f *636c6f7375726500626c6f636b4173796e63457863657074696f6e737a685f6661737400446973 *747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164505f696e666f *00446973747269627574696f6e7a6953657475705f636d644e616d655f696e666f00436f6e7472 *6f6c7a694d6f6e61645f7a64776c6966744d325f656e74727900446973747269627574696f6e7a *694765744f70745f6765744f70747a715f696e666f00546578747a69526561647a694c65785f7a *644c723577466c766c33395f656e747279004748437a69494f426173655f6132365f656e747279 *004748437a69494f5f7a644c723967707a64776c617a7a7952656164486176654275666665725f *636c6f7375726500446174617a69486173685461626c655f48545f636f6e5f696e666f00474843 *7a69576f72645f7a74335f636c6f7375726500446973747269627574696f6e7a69436f6d706174 *7a6946696c65506174685f6368616e676546696c654578745f696e666f004748437a69494f4261 *73655f686146445f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946 *696c65506174685f73706c697446696c654578745f696e666f00466f726569676e7a69437a6953 *7472696e675f7769746843537472696e674c656e5f696e666f00546578747a69526561647a694c *65785f7a644c723574726132315f636c6f73757265004748437a6948616e646c655f696f657a75 *66696e616c697a7a656448616e646c655f636c6f73757265004748437a694e756d5f4a7a685f73 *74617469635f656e747279004748437a6953686f775f6131345f656e74727900546578747a6952 *6561647a694c65785f7a644c723574526c766c395f636c6f73757265004748437a69496e745f7a *657a65335f636c6f73757265005f5f737467696e69745f446174617a69496e745f004469737472 *69627574696f6e7a6953657475705f487567735f7374617469635f656e747279006973446f7562 *6c654e614e004748437a694e756d5f6a746f737a715f696e666f004748437a6953686f775f7a64 *6653686f77426f6f6c5f636c6f7375726500546578747a69526561647a694c65785f7a644c7235 *77376134395f636c6f73757265004748437a69456e756d5f7a644c723977676f7a7575707a7569 *6e747a7566625f656e74727900446973747269627574696f6e7a6950617273655574696c735f73 *686f77446570656e64656e63795f73727400446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f776974684578655f656e74727900546578747a69526561647a694c *65785f7a644c7235765a5a6c766c33325f636c6f737572650053797374656d7a69436d645f615f *636c6f73757265004748437a695265616c5f7a657a655f656e7472790044697374726962757469 *6f6e7a69436f6d7061747a6946696c65506174685f7061727365536561726368506174685f7372 *7400446973747269627574696f6e7a69436f6d7061747a6952656164505f636861696e72315f65 *6e747279004748437a694e756d5f737563635f696e666f007374675f61705f70765f7265740047 *48437a6953686f775f6135305f656e74727900546578747a695072657474795072696e747a6948 *7567686573504a5f41626f76655f636f6e5f696e666f00446973747269627574696f6e7a695365 *7475705f636d644465736372697074696f6e5f636c6f73757265004748437a694e756d5f72656d *496e74656765725f636c6f73757265004748437a69526561645f6c766c32355f656e7472790046 *6f726569676e7a69437a694572726f725f6572726e6f546f494f4572726f725f656e7472790044 *6973747269627574696f6e7a6950617273655574696c735f50617273654661696c65645f737461 *7469635f696e666f00446973747269627574696f6e7a6950617273655574696c735f7a64665368 *6f775061727365526573756c745f7372740053797374656d7a69506f7369787a69496e7465726e *616c735f7a644c733869727361745f636c6f73757265004748437a695265616c5f66726f6d496e *74656772616c5f636c6f73757265004748437a694e756d5f656e756d44656c7461496e74656765 *7246425f656e74727900546578747a69526561647a694c65785f7a644c723578396c766c34345f *636c6f73757265004748437a69426173655f7a617a615f636c6f7375726500446174617a695475 *706c655f5a33545f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061 *747a6952656164505f7a64664d6f6e61645061727365725f656e747279004748437a695265616c *5f7a64737a64646d6469765f636c6f73757265004748437a69496e745f73686f77735072656332 *5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c *34305f636c6f737572650053797374656d7a694469726563746f72795f72656d6f766546696c65 *5f696e666f00546578747a69526561647a694c65785f7a644c723573506c766c345f636c6f7375 *726500446973747269627574696f6e7a69436f6d7061747a6952656164505f6d616e79315f696e *666f00446973747269627574696f6e7a6956657273696f6e5f706172736556657273696f6e5f63 *6c6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164505f72 *657475726e315f656e747279004748437a69526561645f7a6466526561645a32545f656e747279 *005f5f737467696e69745f4748437a69496e7400446973747269627574696f6e7a695061727365 *5574696c735f706172736552656164535f73727400446973747269627574696f6e7a695061636b *6167654465736372697074696f6e5f7a6467746f45786563757461626c655f656e747279004469 *73747269627574696f6e7a694c6963656e73655f7a646645714c6963656e73655f636c6f737572 *6500546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f726573 *65745f656e747279004748437a695265616c5f7a647761345f696e666f004748437a6953686f77 *5f7a644c72315a5a506c766c395f636c6f7375726500546578747a695072657474795072696e74 *7a69487567686573504a5f5374725f636f6e5f696e666f004748437a6948616e646c655f6c766c *37325f636c6f73757265005f5f737467696e69745f53797374656d7a694469726563746f72795f *004748437a695265616c5f7a6477665f696e666f004748437a69496e745f7a70325f656e747279 *00616c6c6f634e757273657279004748437a6953686f775f7a644c72315a5a486c766c355f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6863 *4f7074696f6e735f7372740053797374656d7a694469726563746f72795f6c766c345f656e7472 *7900446973747269627574696f6e7a6953696d706c657a695574696c735f72617753797374656d *50617468457869745f636c6f73757265005f5f676d707a5f676364005f5f737467696e69745f53 *797374656d7a6954696d6500446973747269627574696f6e7a6950617273655574696c735f7061 *72736551756f7465645f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a *6952656164505f7a646766726f6d505f656e74727900446973747269627574696f6e7a69506163 *6b6167654465736372697074696f6e5f73657475704d6573736167655f7372740053797374656d *7a694469726563746f72795f7769746846696c655374617475735f656e74727900446174617a69 *4c6973745f7a644c72346e396c766c325f656e74727900446973747269627574696f6e7a694765 *744f70745f7a6467746f4f707444657363725f636c6f73757265004748437a69576f72645f5736 *347a685f7374617469635f696e666f00546578747a69526561647a694c65785f7a644c7235774e *6135365f656e747279004748437a69466c6f61745f467a685f7374617469635f656e7472790047 *48437a69426173655f7a64646d7a675f636c6f73757265004748437a695265616c5f6576656e5f *656e747279004748437a695265616c5f71756f74325f696e666f0053797374656d7a69506f7369 *787a69496e7465726e616c735f7a64776363616c6c35355f656e747279004748437a694e756d5f *75707a756c6973745f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f7a64776363616c6c33385f636c6f7375726500446174617a695475706c655f5a32545f636f6e *5f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7552445752 *5f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c32315f656e747279004748437a694e756d5f73686f7773507265635f636c6f7375726500 *53797374656d7a69456e7669726f6e6d656e745f676574456e765f636c6f73757265004748437a *694e756d5f6d696e7573496e74656765725f696e666f004748437a69526561645f726561645f65 *6e74727900546578747a69526561647a694c65785f7a644c723578466136355f656e7472790047 *48437a694c6973745f7a644c723273796c766c34325f636c6f7375726500446973747269627574 *696f6e7a6956657273696f6e5f706172736556657273696f6e52616e67655f7372740053797374 *656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33305f656e7472790054 *6578747a69506172736572436f6d62696e61746f72737a6952656164505f4c6f6f6b5f636f6e5f *696e666f00737461745f73746172744743004748437a6948616e646c655f7a644c726258376132 *5f636c6f73757265004748437a69426173655f5a435f7374617469635f696e666f004748437a69 *53686f775f7a644c72315a5a526c766c31305f696e666f007374675f73656c5f325f7570645f69 *6e666f004748437a694e756d5f656e756d44656c7461546f496e74656765725f696e666f007274 *735f6765744368617200446973747269627574696f6e7a69436f6d7061747a6952656164505f7a *6467746f505f636c6f73757265004748437a694c6973745f616e795f636c6f7375726500537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c5f636c6f7375726500 *546578747a69526561647a694c65785f7a644c723577746c766c33375f636c6f73757265004748 *437a6953686f775f61707050726563315f636c6f73757265004748437a69426173655f5a437a74 *5a435f636f6e5f696e666f00546578747a69526561647a694c65785f7a644c7235784c6136365f *636c6f7375726500446973747269627574696f6e7a6953657475705f576974684863506b675f73 *74617469635f696e666f007374675f73656c5f31335f7570645f656e747279005f5f676d707a5f *6d756c00446973747269627574696f6e7a6956657273696f6e5f6f724c6174657256657273696f *6e5f696e666f005f696e6974005f5f737467696e69745f53797374656d7a69506f7369787a6954 *65726d696e616c00446973747269627574696f6e7a694765744f70745f4f70745f636f6e5f656e *747279004748437a694c6973745f7a644c7262317072656c7a756c6973747a757374725f696e66 *6f00446973747269627574696f6e7a6953657475705f636d644465736372697074696f6e5f696e *666f005f5f737467696e69745f546578747a69526561647a694c65780070726f675f6172676300 *4748437a69546f7048616e646c65725f7a644c7233376b6c766c31305f696e666f005379737465 *6d7a69456e7669726f6e6d656e745f6c766c5f696e666f004748437a6948616e646c655f676574 *4275666665725f696e666f004748437a69436f6e635f7468726561645761697457726974655f63 *6c6f7375726500446973747269627574696f6e7a6956657273696f6e5f5468697356657273696f *6e5f636f6e5f696e666f007374675f756e636865636b65645368696674524c3634004748437a69 *4e756d5f7a657a655f656e747279004748437a69494f5f6c766c32325f696e666f004748437a69 *4c6973745f6c6f6f6b75705f696e666f00446973747269627574696f6e7a69436f6d7061747a69 *52656164505f6d756e63685f696e666f00446973747269627574696f6e7a694765744f70745f55 *6e7265714f70745f7374617469635f656e747279007772697465457272537472696e675f5f0047 *48437a69456e756d5f5a4344456e756d5f636f6e5f656e74727900446973747269627574696f6e *7a6953657475705f5769746848617070795f7374617469635f696e666f00446973747269627574 *696f6e7a6956657273696f6e5f4561726c69657256657273696f6e5f636c6f737572650070656e *64696e675f68616e646c65725f627566007374675f6c74496e74363400446174617a6954797065 *61626c655f7a657a65325f636c6f7375726500446973747269627574696f6e7a695061636b6167 *654465736372697074696f6e5f73616e697479436865636b5061636b6167655f656e7472790044 *6973747269627574696f6e7a694c6963656e73655f425344345f7374617469635f696e666f0047 *48437a69456e756d5f7a644c723261666c766c31355f696e666f004748437a6953686f775f6132 *315f636c6f73757265004748437a69426173655f756e7061636b43537472696e67557466387a68 *5f656e747279004748437a69496e745f6c6974375f636c6f737572650044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f7a646653686f774275696c64496e666f *5f636c6f73757265004748437a695265616c5f6131315f696e666f0053797374656d7a69506f73 *69787a69496e7465726e616c735f61315f636c6f73757265004748437a6948616e646c655f696f *657a756e6f745772697461626c655f656e747279004748437a69494f426173655f46696c654861 *6e646c655f636f6e5f696e666f00446973747269627574696f6e7a69436f6d7061747a69526561 *64505f736174697366795f73727400446973747269627574696f6e7a694765744f70745f4f7074 *4572725f636c6f73757265004748437a69494f426173655f6c766c32305f696e666f004748437a *6953686f775f6132325f656e74727900726573756d65546872656164005f5f737467696e69745f *4748437a695074725f004748437a69494f426173655f7a6457494f5f696e666f004748437a6949 *4f426173655f4275666665724c6973744e696c5f636c6f73757265004748437a69426173655f7a *64664571436861725f636c6f73757265004748437a69576f72645f73686f777350726563335f63 *6c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f70 *617468506172656e74735f636c6f7375726500446973747269627574696f6e7a6953657475705f *50726f6772616d6174696361436d645f7374617469635f696e666f004748437a6953746f726162 *6c655f77726974655074724f66665074725f636c6f7375726500446973747269627574696f6e7a *6953696d706c657a695574696c735f6d6f64756c65546f46696c65506174685f636c6f73757265 *004748437a695265616c5f73686f7773507265635f656e747279004748437a694e756d5f696e74 *6567657232496e745f696e666f004748437a69494f426173655f4e6f537563685468696e675f63 *6c6f73757265006672656547726f7570004748437a6953686f775f7a64737a64646d73686f7733 *5f696e666f006973466c6f6174496e66696e697465004748437a69494f5f7a6477706f6c797a75 *627566526561645f736c6f7700446973747269627574696f6e7a69436f6d7061747a6952656164 *505f736b69704d616e79315f696e666f00446973747269627574696f6e7a69436f6d7061747a69 *52656164505f736b69705370616365735f636c6f7375726500446174617a694569746865725f4c *6566745f636f6e5f656e74727900446973747269627574696f6e7a6953657475705f436f707943 *6d645f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f *64656661756c74486f6f6b65645061636b616765446573635f73727400546578747a6952656164 *7a694c65785f7a644c723577567832335f636c6f737572650053797374656d7a69506f7369787a *6954797065735f7a64664e756d434d6f64655f636c6f7375726500446973747269627574696f6e *7a6950617273655574696c735f70617273654d6f64756c654e616d65515f696e666f0044697374 *7269627574696f6e7a6950617273655574696c735f6f7074734669656c645f7372740044697374 *7269627574696f6e7a69436f6d7061747a694469726563746f72795f676574486f6d6544697265 *63746f72795f696e666f004748437a695265616c5f6131345f656e747279004748437a6953686f *775f69746f737a715f636c6f73757265005f5f737467696e69745f446174617a694c6973740044 *6973747269627574696f6e7a6950617273655574696c735f70617273655061636b6167654e616d *65515f7372740061776169744576656e74004748437a69494f426173655f6c766c32335f656e74 *7279004748437a694e756d5f6a746f735f656e747279004748437a6953686f775f7a644c72315a *5a4e6c766c385f636c6f73757265004748437a69494f426173655f57726974654275666665725f *7374617469635f656e74727900446973747269627574696f6e7a694765744f70745f4f70744172 *675f7374617469635f696e666f0053797374656d7a69494f7a694572726f725f6c766c5f636c6f *7375726500466f726569676e7a69437a6954797065735f7a646653686f7743496e745f636c6f73 *757265004748437a6948616e646c655f77616e745265616461626c6548616e646c655f656e7472 *7900546578747a695072657474795072696e747a69487567686573504a5f7a644c7234686f7a64 *776d756c74697a7563685f656e747279004748437a69494f5f685075744368617273315f696e66 *6f005f5f737467696e69745f4748437a6953545265660072657365744e6f6e426c6f636b696e67 *4664004748437a6953686f775f6135325f636c6f73757265007374675f73656c5f31335f6e6f75 *70645f656e74727900546578747a69526561647a694c65785f436861725f636f6e5f696e666f00 *4748437a69494f5f684765744275665f656e74727900446174617a694d617962655f6c766c315f *636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f6d6f64 *756c65546f46696c65506174685f656e747279004748437a6948616e646c655f7a644c724a6677 *726974657a75666c6167735f636c6f7375726500546578747a695072657474795072696e747a69 *487567686573504a5f5374725f636f6e5f656e74727900446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f63536f75726365735f696e666f00616c6c6f635f4870 *00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64664571 *5061636b6167654465736372697074696f6e5f636c6f7375726500466f726569676e7a694d6172 *7368616c7a6941727261795f776974684172726179305f636c6f73757265007374675f42434f5f *696e666f00546578747a69526561647a694c65785f7a644c723576566134375f696e666f005379 *7374656d7a69506f7369787a69496e7465726e616c735f6f7a755452554e435f696e666f004748 *437a6948616e646c655f7769746848616e646c657a715f696e666f004748437a69526561645f72 *656164507265635f696e666f004748437a69494f426173655f686146445f696e666f0044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f6578654e616d655f656e *747279004748437a6953686f775f69746f737a715f696e666f00466f726569676e7a6953746f72 *61626c655f706f6c797a757065656b427974654f6666325f696e666f0053797374656d7a694469 *726563746f72795f6c766c32365f636c6f73757265004748437a6953686f775f6132305f696e66 *6f00446973747269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f4e *4843466c61675f696e666f004748437a694e756d5f7a6c5f696e666f00546578747a6950726574 *74795072696e747a69487567686573504a5f7a6c7a675f656e747279005f5f737467696e69745f *446174617a694d617962655f004748437a69576f72645f7a644c723943616c766c31335f696e66 *6f00546578747a695072657474795072696e747a69487567686573504a5f4e6f446f635f737461 *7469635f656e747279005f5f737467696e69745f53797374656d7a69506f7369787a695369676e *616c735f004748437a6953686f775f6136305f656e747279004748437a694e756d5f7a6477696e *746567657232496e745f636c6f73757265004748437a6948616e646c655f696f657a756e6f7452 *65616461626c655f636c6f73757265004748437a69494f5f77726974654c696e6573315f636c6f *7375726500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f697352 *6f6f746564506174685f696e666f004748437a6953686f775f6134305f636c6f73757265005379 *7374656d7a694469726563746f72795f67657443757272656e744469726563746f72795f656e74 *727900446174617a694c6973745f69735375666669784f665f696e666f006d616c6c6f63404047 *4c4942435f322e30004748437a69426173655f7a657a65345f636c6f7375726500446973747269 *627574696f6e7a69436f6d7061747a6946696c65506174685f6a6f696e46696c654e616d655f65 *6e747279007374675f4341465f424c41434b484f4c455f696e666f00446973747269627574696f *6e7a69436f6d7061747a6946696c65506174685f7061727365536561726368506174685f636c6f *73757265007374675f73656c5f31345f7570645f656e747279007374675f786f72363400546578 *747a69526561647a694c65785f7a644c7235753166726f6d496e74656772616c5f696e666f0063 *6f6d706c656d656e74496e74656765727a685f6661737400546578747a69526561647a694c6578 *5f7a644c723574766132335f636c6f73757265004748437a694e756d5f7a646653686f77496e74 *656765725f636c6f7375726500546578747a695072657474795072696e747a6948756768657350 *4a5f737472696e677a757478745f696e666f004748437a695265616c5f72656d325f656e747279 *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f72657475726e31 *5f696e666f00546578747a695072657474795072696e747a69487567686573504a5f746578745f *656e747279004748437a6953686f775f7a644c72315a5a4a6c766c365f656e747279004748437a *69576f72645f7a74335f696e666f004748437a69526561645f7a6466526561645a4d5a4e5f696e *666f007374675f616e643634004748437a69526561645f7a6473726561644c6973745072656344 *656661756c74345f656e747279004748437a69494f426173655f494f4572726f725f636f6e5f65 *6e74727900446973747269627574696f6e7a6953657475705f70617273654275696c6441726773 *5f656e74727900546578747a69526561647a694c65785f7a644c723576587831335f636c6f7375 *726500446973747269627574696f6e7a69457874656e73696f6e5f54656d706c6174654861736b *656c6c5f7374617469635f696e666f004748437a69494f426173655f577269746548616e646c65 *5f7374617469635f696e666f004748437a695074725f5074725f636f6e5f656e74727900446973 *747269627574696f6e7a694765744f70745f526571756972654f726465725f7374617469635f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c3331 *5f736c6f7700446174617a695475706c655f5a33545f636f6e5f696e666f004748437a694e756d *5f4a7a685f636f6e5f656e74727900446973747269627574696f6e7a695061636b6167655f5061 *636b6167654964656e7469666965725f636c6f7375726500446973747269627574696f6e7a6953 *657475705f636f6e666967416c65785f656e74727900446174617a695479706561626c655f5479 *70655265705f636f6e5f656e747279005f5f737467696e69745f53797374656d7a69506f736978 *7a6954696d655f00446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f72656164486f6f6b65644275696c64496e666f5f696e666f00446973747269627574696f6e *7a69436f6d7061747a6952656164505f6d616e7954696c6c5f656e747279004469737472696275 *74696f6e7a695061636b6167655f7a6467746f5061636b6167654964656e7469666965725f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *67746f5061636b6167654465736372697074696f6e5f656e747279004748437a694572725f6469 *765a5a65726f4572726f725f636c6f73757265004748437a694c6973745f636f6e6361744d6170 *5f636c6f73757265004748437a694c6973745f7a644c7232726f6c766c31345f696e666f007374 *61636b4f766572666c6f77004748437a69496e745f7a64776469764d6f64325f656e7472790044 *6174617a695475706c655f7a646645715a32545f696e666f004748437a694e756d5f6c69745f65 *6e74727900546578747a69526561647a694c65785f7a644c723574486132395f696e666f005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35375f636c6f7375 *7265004748437a694c6973745f7265706c69636174655f696e666f004748437a694572725f615f *636c6f73757265004748437a69494f426173655f68614275666665724d6f64655f696e666f0047 *48437a69526561645f726561644c697374507265635f636c6f73757265004748437a694c697374 *5f756e7a7a6970335f656e74727900726573697a654e757273657279007374675f626c6f636b5f *6e6f72656773004748437a69576f72645f707265644572726f725f636c6f73757265004748437a *695765616b5f72756e46696e616c697a7a657242617463685f696e666f004748437a694e756d5f *7a657a655f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f42534433 *5f7374617469635f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c *65506174685f6a6f696e46696c654578745f656e747279005f5f737467696e69745f5379737465 *6d7a69506f7369787a69496e7465726e616c73005f5f737467696e69745f466f726569676e7a69 *4d61727368616c7a694572726f725f00446973747269627574696f6e7a69436f6d7061747a6952 *656164505f4c6f6f6b5f7374617469635f696e666f0053746752657475726e004748437a694261 *73655f496e725f7374617469635f696e666f00446973747269627574696f6e7a6956657273696f *6e5f446570656e64656e63795f636f6e5f696e666f004748437a6953686f775f6133305f656e74 *7279004748437a69494f5f7a644c723966746c766c395f696e666f0053797374656d7a69506f73 *69787a69496e7465726e616c735f7a64776363616c6c35325f636c6f7375726500446973747269 *627574696f6e7a69436f6d7061747a6952656164505f4661696c5f636c6f737572650044697374 *7269627574696f6e7a6956657273696f6e5f77697468696e52616e67655f636c6f737572650054 *6578747a69526561647a694c65785f7a644c723575566c766c32315f696e666f004748437a6949 *4f5f7a644c7239663961355f696e666f004748437a69426173655f666f6c64725f696e666f0044 *6973747269627574696f6e7a6953696d706c657a695574696c735f646f74546f5365705f636c6f *73757265007374675f67635f64315f726574004748437a694e756d5f6d696e7573496e74656765 *725f656e747279004748437a694c6973745f7370616e5f656e747279005f5f737467696e69745f *446174617a6942697473004748437a6948616e646c655f7a644c72633372657272385f636c6f73 *757265004748437a69526561645f61375f636c6f73757265004748437a69494f426173655f5772 *6974654d6f64655f7374617469635f656e74727900446973747269627574696f6e7a6953696d70 *6c657a695574696c735f636f707946696c65566572626f73655f737274004748437a695265616c *5f7a64737a63325f696e666f004748437a6948616e646c655f64735f696e666f0053797374656d *7a69457869745f6c766c315f656e7472790072616973657a685f6661737400546578747a695265 *61647a694c65785f7a644c723576486c766c32395f696e666f00446973747269627574696f6e7a *6953657475705f5769746843707068735f636c6f7375726500446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f7061727365486f6f6b65644275696c64496e666f *5f73727400446973747269627574696f6e7a6953657475705f7061727365436f6e666967757265 *417267735f696e666f0067656e65726174696f6e730053797374656d7a69457869745f6572725f *636c6f73757265004748437a69526561645f7a6473726561644c69737444656661756c74315f63 *6c6f73757265004748437a694e756d5f71756f74496e74656765725f636c6f7375726500474843 *7a69494f426173655f526561644275666665725f7374617469635f696e666f0044697374726962 *7574696f6e7a6950617273655574696c735f72756e505f656e7472790044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f7061636b6167655f636c6f7375726500 *53797374656d7a69506f7369787a69496e7465726e616c735f61335f656e74727900546578747a *69526561647a694c65785f7a644c72357a7a646c766c38365f656e747279006d756e6d61704040 *474c4942435f322e3000546578747a69526561647a694c65785f7a644c72357a7a6e6c766c3838 *5f656e74727900546578747a69526561647a694c65785f7a644c723578707832385f636c6f7375 *726500546578747a69526561647a694c65785f7a644c723575566c766c32315f636c6f73757265 *00446973747269627574696f6e7a695061636b6167655f7a6467746f5061636b6167654964656e *7469666965725f636c6f73757265004748437a69576f72645f57387a685f636f6e5f656e747279 *00446973747269627574696f6e7a69436f6d7061747a6952656164505f46696e616c5f696e666f *00446973747269627574696f6e7a6956657273696f6e5f4c6174657256657273696f6e5f636c6f *73757265004748437a695265616c5f7a64737a64646d6469765f696e666f00446174617a694861 *73685461626c655f7a64776c6f6f6b75705f696e666f004748437a69494f426173655f7a645749 *4f5f636c6f73757265004748437a69496e745f71756f7452656d325f636c6f7375726500474843 *7a694c6973745f6c766c33325f656e747279004748437a6948616e646c655f696f657a75636c6f *73656448616e646c655f656e747279004748437a69426173655f7a64664571496e745f636c6f73 *757265007374675f7570645f6672616d655f325f726574004748437a69496e745f7a6477626f75 *6e646564456e756d46726f6d5468656e5f636c6f7375726500446174617a695475706c655f5a33 *545f636f6e5f656e747279004748437a69456e756d5f70726564355f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f72656164507a75746f7a75535f73727400 *4748437a69494f426173655f436c6f73656448616e646c655f7374617469635f696e666f004748 *437a694e756d5f656e756d46726f6d546f5f656e74727900446973747269627574696f6e7a6943 *6f6d7061747a6946696c65506174685f73706c697446696c654e616d655f696e666f007374675f *494e445f4f4c4447454e5f5045524d5f696e666f0053797374656d7a694469726563746f72795f *6c766c31335f656e74727900546578747a69526561647a694c65785f7a644c7235796c6c766c36 *355f636c6f73757265004748437a6953686f775f7a646653686f774d617962655f696e666f0044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6578706f736564 *4d6f64756c65735f656e747279004748437a695265616c5f665f636c6f73757265004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f6d6b536561726368506174685f *73727400446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *6653686f7745786563757461626c655f636c6f7375726500446973747269627574696f6e7a6953 *657475705f57697468486164646f636b5f636f6e5f696e666f00546578747a69526561647a694c *65785f7a644c723577466c766c33395f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723541646c766c3131335f636c6f7375726500446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f6c6963656e73655f696e666f00546578747a69526561 *647a694c65785f7a644c723578506c766c35315f636c6f7375726500446973747269627574696f *6e7a69457874656e73696f6e5f456d707479446174614465636c735f7374617469635f696e666f *007374675f5041505f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f *616c6c6f636142797465735f696e666f004748437a69456e756d5f65666474496e7446425f696e *666f004748437a69526561645f726561644c697374507265635f696e666f004748437a69526561 *6c5f6469764d6f64325f636c6f73757265004748437a694c6973745f6c766c31365f636c6f7375 *726500546578747a69526561647a694c65785f7a644c723578686136315f656e74727900546578 *747a69526561647a694c65785f7a644c723573546c766c365f696e666f004748437a6952656164 *5f6c766c395f656e747279004748437a69426173655f636f6d70617265496e745f696e666f0053 *797374656d7a694469726563746f72795f6c766c355f636c6f7375726500446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f7a6467746f4c6962726172795f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7772 *6974655061636b6167654465736372697074696f6e5f737274004748437a69494f426173655f4e *6f427566666572696e675f7374617469635f656e74727900546578747a69507265747479507269 *6e747a69487567686573504a5f726564756365446f63315f656e747279004748437a695265616c *5f71756f74315f656e74727900546578747a69526561647a694c65785f454f465f737461746963 *5f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f646c *6c457874656e73696f6e5f73727400446973747269627574696f6e7a694765744f70745f7a6467 *746f4172674f726465725f656e747279004748437a694c6973745f6c6f6f6b75705f656e747279 *00446973747269627574696f6e7a6953657475705f476c6f62616c466c61675f7374617469635f *656e747279004748437a69494f426173655f426c6f636b65644f6e446561644d5661725f636c6f *73757265007274735f676574576f72643634004748437a6948616e646c655f696f657a756e6f74 *5772697461626c655f696e666f0053797374656d7a69494f5f685075745374724c6e5f636c6f73 *757265004748437a69576f72645f5736347a685f7374617469635f656e74727900446174617a69 *4d617962655f636f6e327461677a754d617962657a685f656e7472790044697374726962757469 *6f6e7a69436f6d7061747a6952656164505f73657042795f636c6f737572650044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f62617369635374616e7a7a6146 *69656c64735f636c6f73757265004748437a69496e745f7a64777a657a655f636c6f7375726500 *446973747269627574696f6e7a69457874656e73696f6e5f506172616c6c656c4c697374436f6d *705f7374617469635f696e666f004748437a69576f72645f7a647766726f6d496e746567657233 *5f656e74727900446973747269627574696f6e7a6950617273655574696c735f73686f77457272 *6f725f656e747279006d656d6d6f76654040474c4942435f322e30004748437a6953686f775f6c *766c31335f636c6f7375726500446973747269627574696f6e7a6953657475705f4748435f636c *6f73757265004748437a69494f5f7a6477684765744275665f636c6f7375726500446973747269 *627574696f6e7a695061636b6167655f7a646766726f6d5061636b6167654964656e7469666965 *725f636c6f73757265004748437a69426173655f7a64646d7a737a655f636c6f73757265004748 *437a69526561645f6c766c32375f636c6f7375726500446973747269627574696f6e7a69506172 *73655574696c735f5374616e7a7a614669656c645f696e666f00446973747269627574696f6e7a *6956657273696f6e5f6f724561726c69657256657273696f6e5f636c6f7375726500446174617a *695479706561626c655f43616368655f7374617469635f656e747279004748437a694c6973745f *706f6c797a757265765f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a *6952656164505f736174697366795f636c6f73757265007374675f454e445f54534f5f51554555 *455f696e666f00546578747a69526561647a694c65785f7a644c7235745a5a7a637a635f656e74 *72790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36395f *656e74727900546578747a69526561647a694c65785f7a644c723579786c766c37315f636c6f73 *75726500446973747269627574696f6e7a6953657475705f7a646652656164436f6d70696c6572 *466c61766f725f636c6f73757265004748437a69494f426173655f6c766c31395f696e666f0047 *48437a69546f7048616e646c65725f7a644c723337676c766c385f636c6f737572650053797374 *656d7a69506f7369787a6946696c65735f61636365737354696d655f656e747279004748437a69 *426173655f5a437a745a435f636f6e5f656e74727900446174617a695475706c655f5a32545f63 *6f6e5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f63686f *6963655f737274004748437a694172725f6c766c375f656e74727900466f726569676e7a695374 *6f7261626c655f5a434453746f7261626c655f636f6e5f656e747279004748437a694c6973745f *7a7a697057697468335f656e74727900446973747269627574696f6e7a694765744f70745f6765 *744f70747a715f656e747279004748437a69526561645f6c766c32325f636c6f73757265004748 *437a6948616e646c655f7a644c7262596a6c766c31355f636c6f737572650053797374656d7a69 *506f7369787a6954797065735f7a64665265616c435069645f636c6f7375726500446973747269 *627574696f6e7a69436f6d7061747a6952656164505f7a646646756e63746f725061727365725f *73727400466f726569676e7a694d61727368616c7a695574696c735f776974684d616e795f696e *666f00446973747269627574696f6e7a694d616b655f64656661756c744d61696e4e6f52656164 *5f656e74727900546578747a69526561647a694c65785f7a644c723578356135395f636c6f7375 *726500446973747269627574696f6e7a69457874656e73696f6e5f4f7665726c617070696e6749 *6e7374616e6365735f636c6f7375726500446973747269627574696f6e7a6953657475705f7061 *7273654275696c64417267735f73727400446973747269627574696f6e7a694c6963656e73655f *7a646653686f774c6963656e73655f636c6f7375726500466f726569676e7a69437a694572726f *725f7a644c723353517a64776363616c6c5f696e666f00446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f7a646766726f6d4c6962726172795f636c6f73757265 *0072657375727265637465645f74687265616473004748437a69426173655f6d6f64496e747a68 *5f636c6f73757265004748437a69494f5f77726974654c696e6573315f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f7a647a645f696e666f004748437a6953 *686f775f73686f7773507265635f636c6f73757265007374675f73656c5f31315f6e6f7570645f *656e747279005f5f737467696e69745f446973747269627574696f6e7a694c6963656e73655f00 *546578747a695072657474795072696e747a69487567686573504a5f66756c6c52656e6465725f *656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c *375f696e666f007365746974696d65724040474c4942435f322e30004748437a69426173655f6c *766c315f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c73 *5f72617753797374656d50617468457869745f696e666f00546578747a69507265747479507269 *6e747a69487567686573504a5f4e6573745f636f6e5f696e666f00546578747a69526561647a69 *4c65785f7a644c723541446c65785374724974656d5f696e666f00546578747a69526561647a69 *4c65785f7a644c72357a7a6e6c766c38385f696e666f005f5f737467696e69745f446174617a69 *4569746865725f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a6466 *4d6f6e6164505f737274004748437a69494f426173655f6c766c32395f636c6f73757265007468 *72656164537461626c655074725461626c65004748437a695265616c5f6131325f636c6f737572 *6500446973747269627574696f6e7a6953657475705f476c6f62616c466c61675f636c6f737572 *65004748437a695265616c5f5a43445265616c5f636f6e5f656e747279004748437a69494f5f7a *6477706f6c797a7562756657726974655f636c6f7375726500446973747269627574696f6e7a69 *50617273655574696c735f73686f774572726f725f696e666f004748437a6953686f775f61355f *656e74727900446973747269627574696f6e7a6953657475705f7a6467746f436d645f636c6f73 *75726500446973747269627574696f6e7a694765744f70745f556e7265714f70745f636c6f7375 *726500546578747a695072657474795072696e747a69487567686573504a5f7a644c7234676f6c *766c31365f656e747279004748437a695265616c5f7a647761345f636c6f73757265007075744d *5661727a685f666173740053797374656d7a69506f7369787a69496e7465726e616c735f7a6477 *6363616c6c33345f736c6f77005f5f676d707a5f636f6d00546578747a69526561647a694c6578 *5f7a644c7235764c7831315f636c6f73757265004748437a69456e756d5f7a6466456e756d496e *745f636c6f7375726500446973747269627574696f6e7a6953657475705f436f6d70696c65725f *636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f737472 *6970436f6d6d656e74735f636c6f73757265004748437a69426173655f7a64737a64646d6d6178 *5f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f6d756e63 *685f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f4c6963656e7365 *5f636c6f737572655f74626c00446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f68634f7074696f6e735f636c6f737572650053797374656d7a69506f7369787a *69496e7465726e616c735f7a64776363616c6c32385f656e747279004748437a69576f72645f57 *31367a685f636f6e5f656e7472790069737764696769744040474c4942435f322e30004748437a *69496e745f6469764d6f64325f636c6f7375726500446973747269627574696f6e7a695061636b *6167655f73686f775061636b61676549645f656e74727900446973747269627574696f6e7a6947 *65744f70745f4e6f6e4f70745f7374617469635f656e747279004748437a69526561645f726561 *644c697374507265635f656e74727900446973747269627574696f6e7a6953657475705f706172 *7365496e7374616c6c417267735f656e747279006465636f6465466c6f61747a685f6661737400 *546578747a69526561647a694c65785f7a644c72357a7a336973496466436861725f636c6f7375 *726500546578747a69526561647a694c65785f7a644c723579626c766c36305f636c6f73757265 *004748437a69546f7048616e646c65725f7a644c723337656c766c375f636c6f73757265004469 *73747269627574696f6e7a69457874656e73696f6e5f4e6f496d706c696369745072656c756465 *5f7374617469635f696e666f004748437a69494f426173655f6132385f656e7472790044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f63617465676f72795f65 *6e74727900446973747269627574696f6e7a695061636b6167655f70617273655061636b616765 *4e616d655f696e666f004748437a694c6973745f636f6e6361744d61705f656e74727900474843 *7a69426173655f6e6f745f696e666f005f5f737467696e69745f446174617a69496e7400474843 *7a69576f72645f5736347a685f636f6e5f656e74727900446174617a695475706c655f736e645f *696e666f007274735f636865636b536368656453746174757300446973747269627574696f6e7a *6950617273655574696c735f6669656c6453686f775f636c6f73757265007374675f6774496e74 *363400446973747269627574696f6e7a6950617273655574696c735f73706c69745374616e7a7a *61735f696e666f004748437a69494f426173655f4275666665724c697374436f6e735f73746174 *69635f656e74727900546578747a69506172736572436f6d62696e61746f72737a695265616450 *7265635f706661696c5f696e666f005f5f737467696e69745f4748437a695061636b004748437a *69426173655f636f6d706172655f696e666f004748437a69466c6f61745f447a685f7374617469 *635f696e666f00446973747269627574696f6e7a6953657475705f487567735f7374617469635f *696e666f00546578747a695072657474795072696e747a69487567686573504a5f746578745f69 *6e666f007374675f756e636865636b65644953686966744c363400616c6c5f7468726561647300 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32305f636c6f *73757265004748437a69494f426173655f4475706c657848616e646c655f7374617469635f656e *747279005f5f737467696e69745f4748437a694e756d00546578747a69506172736572436f6d62 *696e61746f72737a6952656164507265635f7a64664d6f6e616452656164507265635f636c6f73 *757265007274735f6d6b496e743634004748437a695265616c5f7a64737a64646d6d6f645f636c *6f73757265004748437a69426173655f6d6f64496e747a685f696e666f007374675f61705f305f *72657400546578747a695072657474795072696e747a69487567686573504a5f54657874426573 *6964655f636f6e5f656e74727900466f726569676e7a69437a69537472696e675f7a6477706565 *6b43537472696e675f656e747279005f5f737467696e69745f466f726569676e7a694d61727368 *616c7a695574696c735f004748437a6953686f775f6137325f656e747279004469737472696275 *74696f6e7a6950726550726f636573737a69556e6c69745f50726f6772616d5f636f6e5f696e66 *6f0053797374656d7a694469726563746f72795f6c766c335f696e666f00546578747a69506172 *736572436f6d62696e61746f72737a6952656164507265635f6661696c5f636c6f737572650047 *48437a694e756d5f5a43444e756d5f636f6e5f656e747279004748437a6953686f775f6137335f *636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f696e636c756465735f636c6f73757265004748437a6953686f775f6132345f656e74727900 *4748437a69556e69636f64655f7a6477746f4c6f7765725f636c6f73757265004748437a694861 *6e646c655f7a6477666c757368526561644275666665725f656e74727900446973747269627574 *696f6e7a69436f6d7061747a6952656164505f6f7074696f6e616c5f656e747279004748437a69 *53686f775f7a644c72315a5a546c766c31315f696e666f007374675f7969656c645f6e6f726567 *7300546578747a69526561647a694c65785f7a644c72357a7a766c766c39315f636c6f73757265 *004748437a69526561645f7a644c723639646c766c31375f636c6f73757265004748437a69494f *426173655f6132355f656e747279007374675f696e74546f496e74363400446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f6c644f7074696f6e735f656e747279 *004748437a6953686f775f6131385f636c6f7375726500546578747a69526561647a694c65785f *7a644c723577706135325f636c6f73757265004748437a6948616e646c655f7a644c7262584461 *31385f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f7a6477636361 *6c6c315f656e74727900446973747269627574696f6e7a6953696d706c657a695574696c735f64 *6f74546f5365705f73727400546578747a69526561647a694c65785f7a644c7235754e78325f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *34675761626f7665315f696e666f00446973747269627574696f6e7a6950617273655574696c73 *5f6669656c645365745f696e666f004748437a694c6973745f636f6e6361745f636c6f73757265 *007374675f5041505f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f *7a64776363616c6c33365f636c6f7375726500446973747269627574696f6e7a694765744f7074 *5f4f7074696f6e5f696e666f00546578747a69526561647a694c65785f6c766c3132355f696e66 *6f004748437a69496e745f66726f6d456e756d325f636c6f7375726500636f6e746578745f7377 *6974636800546578747a69526561647a694c65785f7a644c7235776e6c766c33365f696e666f00 *4748437a69576f72645f616273335f696e666f0053797374656d7a69506f7369787a69496e7465 *726e616c735f7a64776363616c6c33315f696e666f007374675f696e746572705f636f6e737472 *345f656e74727900446174617a694d617962655f6d617962655f656e7472790044697374726962 *7574696f6e7a6953657475705f636f6e6669674863466c61766f725f696e666f004748437a694c *6973745f7a644c723271556c766c385f636c6f73757265004748437a694c6973745f7a644c7232 *72796c766c31395f696e666f00546578747a69526561647a694c65785f6c766c3132355f656e74 *727900446973747269627574696f6e7a6953657475705f57697468436f6d70696c65725f636f6e *5f656e747279004748437a69494f5f7a6477706f6c797a75627566526561645f696e666f005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33365f656e747279 *00446973747269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f4875 *6773466c61675f636c6f73757265004748437a6953686f775f6133325f656e7472790044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f686f6d65706167655f65 *6e747279005f5f737467696e69745f53797374656d7a69494f5f007374675f494e445f315f696e *666f004748437a69426173655f7a617a615f696e666f00446973747269627574696f6e7a695061 *7273655574696c735f5374616e7a7a614669656c645f7374617469635f696e666f00696e697455 *7365725369676e616c7300446973747269627574696f6e7a69436f6d7061747a69446972656374 *6f72795f676574486f6d654469726563746f72795f656e747279007374675f61705f7070705f72 *65740053797374656d7a694469726563746f72795f7a644c72396279646573635f696e666f0047 *48437a69494f5f7a6477685075744275667a715f636c6f7375726500546578747a695061727365 *72436f6d62696e61746f72737a6952656164507265635f7a677a675f656e747279004748437a69 *494f426173655f6861497353747265616d5f636c6f7375726500446973747269627574696f6e7a *69457874656e73696f6e5f47656e65726963735f7374617469635f656e747279004748437a694c *6973745f726576657273655f636c6f7375726500546578747a69526561647a694c65785f7a644c *7235745a5a7a637a635f696e666f00546578747a695072657474795072696e747a694875676865 *73504a5f646f75626c6551756f7465735f656e74727900446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f4275696c64496e666f5f656e74727900546578747a69 *526561647a694c65785f7a644c723574626131335f636c6f73757265004748437a694e756d5f7a *64776469764d6f64496e74656765725f636c6f737572650053797374656d7a69506f7369787a69 *496e7465726e616c735f61345f696e666f004748437a69496e745f626f756e646564456e756d46 *726f6d5f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f7061 *727365436f6d6d614c6973745f73727400446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f6d6f64756c65506174685f656e747279004748437a69426173655f7a *644c723266336c766c325f636c6f73757265004748437a69426173655f6e6f745f636c6f737572 *65004748437a694c6973745f6c766c365f696e666f004748437a69426173655f6774496e745f63 *6c6f73757265007374675f73656c5f395f7570645f696e666f004748437a69494f426173655f44 *75706c657848616e646c655f7374617469635f696e666f00446973747269627574696f6e7a6950 *617273655574696c735f7a646766726f6d5061727365526573756c745f656e7472790044697374 *7269627574696f6e7a6953657475705f7a6467746f436f6d70696c65725f656e74727900474843 *7a6953686f775f6133385f696e666f004748437a6948616e646c655f696f657a75454f465f656e *74727900446973747269627574696f6e7a6950617273655574696c735f70617273655665727369 *6f6e52616e6765515f737274004748437a69494f426173655f7a644c7236624861315f636c6f73 *75726500446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f77496e636f6865 *72656e74496e7374616e6365735f7374617469635f656e74727900446973747269627574696f6e *7a6956657273696f6e5f7a64665479706561626c6556657273696f6e5f656e7472790044697374 *7269627574696f6e7a694765744f70745f7573616765496e666f5f737274007374675f626c6f63 *6b5f7075746d7661725f696e666f00546578747a69526561647a694c65785f7a644c7235754c61 *33355f656e74727900466f726569676e7a69437a694572726f725f7a644c723353517a64776363 *616c6c5f636c6f7375726500446174617a695475706c655f6673745f636c6f7375726500474843 *7a69494f5f6c766c31385f656e747279004748437a694c6973745f7a644c7232726f6c766c3134 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c7235764e6c766c33305f69 *6e666f004748437a69426173655f7a707a705f696e666f004748437a694c6973745f7a644c7232 *72536c766c32395f636c6f73757265004748437a6953686f775f7a64737a64646d73686f774c69 *7374335f656e74727900706572666f726d474357697468526f6f7473004748437a69576f72645f *746f496e7465676572325f656e747279004748437a6948616e646c655f77726974655261774275 *666665725074725f656e747279007374646f75744040474c4942435f322e30004748437a695265 *616c5f746f526174696f6e616c325f636c6f73757265004748437a694e756d5f7a647773686f77 *73507265635f696e666f005f5f737467696e69745f446174617a69486173685461626c65004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f72656164486f6f6b *65644275696c64496e666f5f73727400546578747a69526561647a694c65785f7a644c7235417a *7a6c766c3132345f636c6f7375726500546578747a69526561647a694c65785f7a644c72357672 *6134325f696e666f00446174617a694d617962655f69734e6f7468696e675f656e747279004748 *437a69426173655f756e7061636b466f6c647243537472696e677a685f636c6f73757265004469 *73747269627574696f6e7a6953657475705f7a646766726f6d436f6d70696c6572466c61766f72 *5f636c6f73757265007374646572724040474c4942435f322e300073657450726f674172677600 *53797374656d7a69494f7a694572726f725f6c766c5f696e666f00446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f6275696c64446570656e64735f636c6f7375 *72650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35335f *656e74727900446973747269627574696f6e7a6953657475705f636f6e6669674863506b675f69 *6e666f0053797374656d7a69457869745f6c766c315f636c6f7375726500446973747269627574 *696f6e7a6953657475705f636f6e66696743707068735f636c6f737572650053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c33335f636c6f7375726500474843 *7a694e756d5f616273325f636c6f73757265004748437a69494f426173655f4572726f7243616c *6c5f636f6e5f656e747279004748437a69494f426173655f537461636b4f766572666c6f775f73 *74617469635f696e666f00446973747269627574696f6e7a6956657273696f6e5f4561726c6965 *7256657273696f6e5f7374617469635f656e747279005f5f737467696e69745f446174617a694c *6973745f004748437a69576f72645f616273335f656e747279004748437a69494f426173655f61 *335f636c6f73757265004748437a694e756d5f6e6567617465496e74656765725f636c6f737572 *65004748437a694c6973745f7a644c723272656c766c395f696e666f004748437a69494f426173 *655f6c766c32325f696e666f00546578747a69526561647a694c65785f7a644c723573526c766c *355f656e74727900446973747269627574696f6e7a6953696d706c657a695574696c735f6d6b4c *69624e616d655f696e666f00546578747a69526561647a694c65785f7a644c723575506c766c31 *395f636c6f7375726500466f726569676e7a69437a694572726f725f7468726f774572726e6f5f *696e666f0053797374656d7a69494f7a694572726f725f696f6553657446696c654e616d655f69 *6e666f00446973747269627574696f6e7a69457874656e73696f6e5f556e736166654f7665726c *617070696e67496e7374616e6365735f636c6f73757265004748437a694e756d5f66726f6d496e *7465676572315f636c6f7375726500546578747a69526561647a694c65785f7a644c7235785261 *36375f656e74727900546578747a69526561647a694c65785f7a644c7235754c6133355f696e66 *6f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36375f73 *6c6f7700546578747a69526561647a694c65785f7a644c723541666c766c3131345f636c6f7375 *726500446973747269627574696f6e7a6953657475705f48656c69756d5f636c6f737572650061 *626f72744040474c4942435f322e30007374675f73656c5f305f6e6f7570645f656e7472790044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f70617273654465 *736372697074696f6e5f656e74727900546578747a69526561647a694c65785f7a644c7268576c *65784469676974735f636c6f737572650053797374656d7a69506f7369787a69496e7465726e61 *6c735f6f7a754e4f435454595f636c6f7375726500466f726569676e7a694d61727368616c7a69 *416c6c6f635f6c766c5f636c6f73757265007374675f454d5054595f4d5641525f696e666f0047 *48437a69494f426173655f4173796e63457863657074696f6e5f7374617469635f656e74727900 *446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a646766726f *6d45786563757461626c655f696e666f005f5f737467696e69745f4748437a694572725f004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c6963656e736546 *696c655f636c6f7375726500446973747269627574696f6e7a6953657475705f496e7374616c6c *436d645f7374617469635f696e666f00546578747a69526561647a694c65785f537472696e675f *636f6e5f656e747279004748437a695265616c5f61385f656e7472790044697374726962757469 *6f6e7a6953657475705f7a646766726f6d466c61675f696e666f00676574537461626c65507472 *00446973747269627574696f6e7a69436f6d7061747a6952656164505f46696e616c5f73746174 *69635f656e747279004748437a69494f426173655f556e737570706f727465644f706572617469 *6f6e5f7374617469635f696e666f004748437a69494f426173655f4e6f427566666572696e675f *636c6f73757265004748437a69526561645f7a6473726561644c69737444656661756c74325f63 *6c6f73757265006973546872656164426f756e6400546578747a695072657474795072696e747a *69487567686573504a5f506167654d6f64655f7374617469635f696e666f00696e6974426c6f63 *6b416c6c6f6361746f7200446174617a695479706561626c655f5479436f6e5f7374617469635f *656e74727900446973747269627574696f6e7a694765744f70745f52657475726e496e4f726465 *725f636f6e5f696e666f004748437a695265616c5f7a644c7235315a5a6c766c375f636c6f7375 *726500446973747269627574696f6e7a6953657475705f5769746848617070795f636f6e5f656e *74727900446973747269627574696f6e7a6953657475705f5072656669785f636f6e5f696e666f *004748437a695265616c5f7a647761355f636c6f7375726500446973747269627574696f6e7a69 *50617273655574696c735f73686f7746696c65506174685f656e74727900446973747269627574 *696f6e7a69457874656e73696f6e5f7a646766726f6d457874656e73696f6e5f696e666f005f5f *676d707a5f696e6974007374675f61705f707070705f696e666f005f5f737467696e69745f4469 *73747269627574696f6e7a69436f6d7061747a694469726563746f72795f004469737472696275 *74696f6e7a6956657273696f6e5f4c6174657256657273696f6e5f7374617469635f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f7a6467746f505f656e7472 *79004748437a69466f726569676e5074725f4d616c6c6f635074725f7374617469635f696e666f *00446973747269627574696f6e7a6956657273696f6e5f6265747765656e56657273696f6e7349 *6e636c75736976655f636c6f7375726500546578747a695072657474795072696e747a69487567 *686573504a5f7a6477736570315f656e74727900446973747269627574696f6e7a695365747570 *5f57697468436f6d70696c65725f636c6f7375726500446973747269627574696f6e7a69536574 *75705f7061727365476c6f62616c417267735f636c6f7375726500446973747269627574696f6e *7a694765744f70745f6765744f70747a715f737274004748437a69494f5f7a644c723966646c76 *6c315f636c6f73757265007374675f67656e5f7969656c6400446973747269627574696f6e7a69 *457874656e73696f6e5f48657265446f63756d656e74735f636c6f73757265007374675f666f72 *6365494f5f7265740053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c33385f656e74727900446973747269627574696f6e7a695061636b6167655f5061636b61 *67654964656e7469666965725f7374617469635f696e666f004748437a695265616c5f665f656e *747279004748437a69494f426173655f6132335f696e666f00446973747269627574696f6e7a69 *457874656e73696f6e5f436f6e74657874537461636b5f636c6f73757265004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f7570646174655061636b61676544 *65736372697074696f6e5f737274004748437a6948616e646c655f68436c6f73657a7568616e64 *6c657a755f656e747279005f5f737467696e69745f4748437a69436f6e63007374675f73656c5f *31355f7570645f656e74727900546578747a69526561647a694c65785f7a644c723579726c766c *36385f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f *636861696e725f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164 *505f4765745f636c6f73757265004748437a69494f426173655f6c766c33305f636c6f73757265 *00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c *7573505f696e666f00446973747269627574696f6e7a6953657475705f7a646653686f77436f6d *70696c6572466c61766f725f636c6f73757265004748437a69494f5f7a6477636f6d6d69744275 *666665727a715f656e747279004748437a69426173655f6774496e745f656e7472790044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f74657374656457697468 *5f636c6f7375726500446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6578654d6f64756c65735f656e747279005f5f676d707a5f786f72004748437a69494f42 *6173655f68614275666665725f696e666f00446973747269627574696f6e7a69436f6d7061747a *6952656164505f6761746865725f73727400446973747269627574696f6e7a6953657475705f43 *6f6e666967436d645f696e666f00446973747269627574696f6e7a6956657273696f6e5f6f724c *6174657256657273696f6e5f656e747279004748437a69494f426173655f5061747465726e4d61 *7463684661696c5f7374617469635f696e666f00446973747269627574696f6e7a695365747570 *5f576974684863506b675f636c6f7375726500466f726569676e7a69437a694572726f725f7468 *726f774572726e6f49664d696e7573315f696e666f004748437a694e756d5f5a43444e756d5f63 *6f6e5f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f676574 *4f7074696f6e7346726f6d536f757263655f73727400446973747269627574696f6e7a69536574 *75705f5344697374436d645f636c6f7375726500446973747269627574696f6e7a694765744f70 *745f7a6467746f41726744657363725f696e666f00696e69744361706162696c6974696573005f *5f737467696e69745f53797374656d7a69506f7369787a6955736572004748437a69496e745f49 *387a685f7374617469635f696e666f004748437a694c6973745f706f6c797a75696e69747a715f *636c6f73757265007374675f73656c5f335f6e6f7570645f656e747279004748437a695265616c *5f7a64736576656e5f696e666f004748437a69526561645f7a64737a64646d7265616473507265 *63345f696e666f00546578747a695072657474795072696e747a69487567686573504a5f667365 *705f696e666f00446973747269627574696f6e7a6950617273655574696c735f6669656c645365 *745f656e74727900446973747269627574696f6e7a6950617273655574696c735f706172736552 *656164535f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f *46696e616c5f656e74727900446973747269627574696f6e7a6950617273655574696c735f7369 *6e676c655374616e7a7a615f696e666f00446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f7a6467746f4275696c64496e666f5f656e7472790044697374726962 *7574696f6e7a6953657475705f4f74686572436f6d70696c65725f656e747279004748437a6957 *6f72645f57387a685f7374617469635f696e666f006c6f6f6b75705468726561644c6162656c00 *64656661756c7473486f6f6b00546578747a69526561647a694c65785f7a644c723578586c766c *35335f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a69526561 *64505f4765745f636f6e5f656e74727900446973747269627574696f6e7a6953657475705f7061 *727365556e7265676973746572417267735f656e7472790053797374656d7a69506f7369787a69 *496e7465726e616c735f636f6e73747a75667a75676574666c5f656e747279004748437a695074 *725f636173745074725f656e7472790053797374656d7a69506f7369787a69496e7465726e616c *735f656e647a756f667a756469725f696e666f00446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e5f5061636b6167654465736372697074696f6e5f736c6f770044 *6973747269627574696f6e7a6956657273696f6e5f7a646652656164446570656e64656e63795f *636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f613231 *5f636c6f73757265004748437a69494f5f7772697465426c6f636b73315f656e74727900537973 *74656d7a69506f7369787a6946696c65735f6d6f64696669636174696f6e54696d655f636c6f73 *7572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7542494e4152595f *656e74727900446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f77556e6465 *63696461626c65496e7374616e6365735f7374617469635f656e74727900446174617a69486173 *685461626c655f48545f7374617469635f696e666f00446973747269627574696f6e7a69506163 *6b6167654465736372697074696f6e5f7772697465486f6f6b65644275696c64496e666f5f656e *747279004748437a694c6973745f6c766c33325f696e666f00446973747269627574696f6e7a69 *56657273696f6e5f76657273696f6e546167735f636c6f7375726500446973747269627574696f *6e7a6956657273696f6e5f7a6467746f56657273696f6e5f656e74727900446973747269627574 *696f6e7a6956657273696f6e5f7a6467746f56657273696f6e5f696e666f00546578747a695265 *61647a694c65785f7a644c723573546c766c365f636c6f7375726500446973747269627574696f *6e7a6953657475705f4842435f7374617469635f656e747279004748437a69494f5f7a644c7239 *67746c617a7a7952656164315f656e747279004748437a69426173655f45515f636c6f73757265 *00446174617a695479706561626c655f7a64776d6b41707054795f656e747279007072696e7441 *6c6c5468726561647300446973747269627574696f6e7a6953657475705f436f6e666967466c61 *67735f736c6f77004748437a6953686f775f7a644c72315a5a6461325f636c6f7375726500466f *726569676e7a6953746f7261626c655f706f6c797a757a64646d7065656b325f696e666f005465 *78747a69526561647a694c65785f7a644c72357a7a486c766c39375f636c6f7375726500446174 *617a695479706561626c655f7a644c72364f346c766c345f636c6f737572650053797374656d7a *69456e7669726f6e6d656e745f6c766c315f696e666f00546578747a695072657474795072696e *747a69487567686573504a5f636f6d6d615f636c6f737572650053797374656d7a694469726563 *746f72795f6765744469726563746f7279436f6e74656e74735f656e7472790044697374726962 *7574696f6e7a69436f6d7061747a6946696c65506174685f6973526f6f746564506174685f656e *747279004748437a69494f426173655f6c766c32345f636c6f73757265004748437a69494f4261 *73655f57726974654275666665725f7374617469635f696e666f007374675f696e746572705f63 *6f6e737472325f656e747279004748437a69496e745f4936347a685f636f6e5f696e666f004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f4c6962726172795f *636c6f73757265004748437a6953686f775f6133385f656e74727900546578747a69526561647a *694c65785f7a644c723576786134335f636c6f737572650053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c33305f696e666f004748437a694c6973745f7a644c *723271536c766c375f636c6f737572650064656c65746554687265616400546578747a69526561 *647a694c65785f7a644c723578487833315f636c6f7375726500446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f6f746865724d6f64756c65735f656e74727900 *446973747269627574696f6e7a6956657273696f6e5f76657273696f6e546167735f696e666f00 *546578747a695072657474795072696e747a69487567686573504a5f7a644c7234675562657369 *6465315f656e747279004748437a694e756d5f74696d6573496e74656765725f636c6f73757265 *004748437a69494f5f685075744368617273315f656e747279004748437a69494f426173655f6c *766c32325f636c6f73757265004748437a6948616e646c655f6132385f656e7472790073797363 *6f6e664040474c4942435f322e30004748437a69494f426173655f5265736f7572636556616e69 *736865645f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164 *505f46696e616c5f636c6f73757265004748437a69494f5f7772697465426c6f636b73315f696e *666f004748437a6953686f775f6132345f636c6f7375726500546578747a695072657474795072 *696e747a69487567686573504a5f7a644c723467436c766c32335f696e666f004748437a694261 *73655f5a43444d6f6e61645f7374617469635f656e747279004748437a694c6973745f6c656e67 *74685f636c6f73757265004748437a69526561645f7265616450726563315f636c6f7375726500 *4748437a69436f6e635f74687265616457616974526561645f656e747279004469737472696275 *74696f6e7a6953657475705f566572626f73655f636f6e5f696e666f004748437a69546f704861 *6e646c65725f64735f656e747279004748437a694e756d5f616273325f656e747279004748437a *69456e756d5f656e756d46726f6d546f325f636c6f7375726500446973747269627574696f6e7a *69436f6d7061747a6946696c65506174685f70617468506172656e74735f656e74727900474843 *7a695265616c5f7a64737a64646d6d6f645f656e74727900446973747269627574696f6e7a6950 *726550726f636573737a69556e6c69745f706c61696e5f656e747279004748437a69526561645f *7a6466526561644d617962655f656e747279004748437a69526561645f7265616450726563325f *636c6f73757265005f5f737467696e69745f446174617a695479706561626c655f004748437a69 *576f72645f7a644c723943636c766c31345f696e666f004748437a69496e745f7a64646d656e75 *6d46726f6d5468656e546f5f696e666f004748437a69526561645f6c766c355f696e666f004748 *437a69537461626c655f537461626c655074725f636f6e5f696e666f004748437a69494f426173 *655f6132305f696e666f00446973747269627574696f6e7a694c6963656e73655f7a6467746f4c *6963656e73655f696e666f004748437a69494f426173655f6c766c32355f656e74727900537973 *74656d7a69457869745f6c766c335f696e666f004748437a6948616e646c655f6132355f656e74 *727900466f726569676e7a6953746f7261626c655f706f6c797a75706f6b65427974654f666632 *5f656e747279004748437a6948616e646c655f7a6477666c75736857726974654275666665725f *636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c *723467776c766c32305f636c6f73757265004748437a69576f72645f707265644572726f725f65 *6e747279004748437a69494f5f7a644c723966566c766c31395f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f4c6f6f6b5f7374617469635f656e7472790053 *797374656d7a69506f7369787a69496e7465726e616c735f61345f636c6f737572650044697374 *7269627574696f6e7a694765744f70745f5265714172675f636c6f7375726500546578747a6950 *6172736572436f6d62696e61746f72737a6952656164505f737472696e675f696e666f00474843 *7a69496e745f6c766c31375f636c6f7375726500446973747269627574696f6e7a694765744f70 *745f4e6f6e4f70745f656e74727900546578747a69526561647a694c65785f7a644c723575376c *766c31345f696e666f0053797374656d7a694469726563746f72795f6c766c32345f656e747279 *00706572666f726d4d616a6f72474300446174617a695475706c655f5a34545f7374617469635f *696e666f004748437a69526561645f726561644c69737450726563315f656e7472790044697374 *7269627574696f6e7a6953696d706c657a695574696c735f646f74546f5365705f656e74727900 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c31395f656e74 *727900446973747269627574696f6e7a6950617273655574696c735f6669656c6453686f775f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7543524541545f63 *6c6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164507265 *635f7a707a707a705f696e666f00446973747269627574696f6e7a6950617273655574696c735f *50617273654661696c65645f636f6e5f696e666f0076667072696e74664040474c4942435f322e *30004748437a69546f7048616e646c65725f7265706f7274537461636b4f766572666c6f775f65 *6e747279005f5f737467696e69745f53797374656d7a69494f7a69556e7361666500446174617a *695479706561626c655f5479436f6e5f636f6e5f656e74727900446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f5061636b6167654465736372697074696f6e5f *636f6e5f696e666f00446973747269627574696f6e7a6950617273655574696c735f46726f6d53 *7472696e675f636c6f7375726500446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f7772697465486f6f6b65644275696c64496e666f5f73727400446174617a69 *5479706561626c655f7a644c72364f32765f636c6f73757265004748437a694c6973745f64726f *707a685f656e747279006d61726b537461626c655074725461626c65004748437a69494f5f6c76 *6c32325f656e74727900546578747a69526561647a694c65785f7a644c72354146626f64795f63 *6c6f73757265004748437a69426173655f7a6470314f72645f696e666f00446973747269627574 *696f6e7a6950617273655574696c735f70617273654c69624e616d65515f696e666f004748437a *69426173655f7a644c723265586c766c5f696e666f004748437a695265616c5f746f526174696f *6e616c315f636c6f73757265004748437a694c6973745f7a644c723272556c766c33305f636c6f *73757265004748437a69494f426173655f557365724572726f725f7374617469635f656e747279 *00446973747269627574696f6e7a6953657475705f7a646766726f6d436f6e666967466c616773 *5f656e747279004748437a69526561645f726561644c69737450726563315f696e666f00446973 *747269627574696f6e7a6953657475705f636d6448656c705f656e747279004748437a69426173 *655f6e6567617465496e745f696e666f004748437a69494f426173655f4e6f6e5465726d696e61 *74696f6e5f7374617469635f656e747279007374675f73656c5f395f6e6f7570645f656e747279 *00466f726569676e7a69437a69537472696e675f7a64777065656b43537472696e675f696e666f *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f736b69705f696e *666f00446174617a694c6973745f756e776f7264735f656e74727900446973747269627574696f *6e7a6950617273655574696c735f70617273654d6f64756c654e616d65515f656e747279004469 *73747269627574696f6e7a6953657475705f7a6467746f436f6d70696c6572466c61766f725f69 *6e666f00446973747269627574696f6e7a6953657475705f7a64664571436f6d70696c65725f63 *6c6f73757265004748437a695265616c5f7a64737a64664672616374696f6e616c526174696f5f *636c6f737572650053797374656d7a69456e7669726f6e6d656e745f6c766c315f636c6f737572 *65005f5f737467696e69745f53797374656d7a69506f7369787a695265736f7572636500446973 *747269627574696f6e7a69436f6d7061747a6952656164505f737472696e675f656e7472790044 *6973747269627574696f6e7a695061636b6167655f5061636b6167654964656e7469666965725f *696e666f00546578747a695072657474795072696e747a69487567686573504a5f746578745f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467457a64777370616365735f636c6f7375726500446973747269627574696f6e7a6950617273 *655574696c735f73686f7746696c65506174685f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f7a644c72346838676f315f656e74727900546578747a695265 *61647a694c65785f7a644c72357a7a336973496466436861725f696e666f004748437a6953686f *775f7a644c72315a5a546c766c31315f636c6f7375726500446973747269627574696f6e7a6950 *617273655574696c735f7a64664d6f6e61645061727365526573756c745f636c6f737572650047 *48437a6953686f775f6136345f696e666f0053797374656d7a69506f7369787a69496e7465726e *616c735f7a64776363616c6c31365f636c6f73757265004748437a69494f426173655f6132385f *696e666f004748437a69576f72645f746f496e7465676572325f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f4c6f6f6b5f656e747279004748437a694c6973 *745f666f6c6472325f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a69 *4469726563746f72795f636f707946696c655f696e666f0053797374656d7a69506f7369787a69 *496e7465726e616c735f7a644c723757436c766c31335f656e747279004748437a694e756d5f7a *647773686f7773507265635f656e74727900446973747269627574696f6e7a69436f6d7061747a *6946696c65506174685f6d6b536561726368506174685f636c6f73757265004469737472696275 *74696f6e7a694765744f70745f556e7265714f70745f656e747279005f5f676d707a5f616e6400 *7374675f67635f6631004748437a69496e745f616273325f696e666f004748437a69426173655f *7a64646d7a677a655f636c6f73757265005f5f737467696e69745f446973747269627574696f6e *7a6956657273696f6e00446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f6275696c6461626c655f636c6f73757265004748437a69426173655f7a64737a64646d *6d61785f636c6f73757265004748437a694c6973745f7a644c723272556c766c33305f696e666f *00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f4c69627261 *72795f696e666f00446973747269627574696f6e7a694765744f70745f4f70745f737461746963 *5f656e74727900546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467496c766c32345f636c6f73757265004748437a69496e745f7a64777a64646d656e756d4672 *6f6d546f5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c33345f636c6f73757265007261697365494f7a685f6661737400446973747269627574 *696f6e7a6950617273655574696c735f706172736546696c6550617468515f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f7a646646756e63746f72506172 *7365725f636c6f73757265004748437a695265616c5f7a64646d73686f775f656e747279005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c34395f696e666f00 *546578747a695072657474795072696e747a69487567686573504a5f7365705f656e7472790044 *6174617a694d617962655f7a646645714d617962655f656e74727900446973747269627574696f *6e7a694d616b655f64656661756c744d61696e5f656e747279004748437a69494f426173655f52 *65736f75726365427573795f7374617469635f656e74727900776169747069644040474c494243 *5f322e30007374675f6c74576f7264363400546578747a69526561647a694c65785f7a644c7235 *74446132375f636c6f7375726500546578747a695072657474795072696e747a69487567686573 *504a5f7a644c7234675761626f7665315f656e7472790053797374656d7a69506f7369787a6946 *696c65735f6c766c375f636c6f7375726500446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f6578654e616d655f696e666f004748437a6953686f775f6136395f *636c6f73757265004748437a69496e745f6d696e426f756e64325f696e666f00546578747a6950 *6172736572436f6d62696e61746f72737a6952656164505f6c766c325f696e666f004748437a69 *496e745f7a6d325f636c6f7375726500616c6c6f635f626c6f636b73004748437a6953686f775f *73686f77506172656e5f656e747279005f5f737467696e69745f4748437a695061636b5f004748 *437a6948616e646c655f6132365f696e666f004748437a69456e756d5f746f456e756d345f696e *666f004748437a69576f72645f5736347a685f636f6e5f696e666f004748437a6948616e646c65 *5f696f657a75454f465f636c6f73757265004748437a6953686f775f7a647773686f7773507265 *635f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7542 *494e4152595f636c6f73757265004748437a6948616e646c655f6c766c32305f696e666f004469 *73747269627574696f6e7a6950617273655574696c735f73686f77446570656e64656e63795f69 *6e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a707a707a705f *656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *73746162696c6974795f696e666f005f5f737467696e69745f446174617a694d6179626500466f *726569676e7a6953746f7261626c655f706f6c797a757a64646d706f6b65325f636c6f73757265 *004748437a6953686f775f6132365f696e666f00546578747a695072657474795072696e747a69 *487567686573504a5f7a644c723467416c766c32325f636c6f73757265004748437a69546f7048 *616e646c65725f746f7048616e646c65725f656e74727900446973747269627574696f6e7a6950 *617273655574696c735f706172736554657374656457697468515f656e74727900546578747a69 *526561647a694c65785f7a644c723578746136335f636c6f73757265004748437a6953686f775f *6133335f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f416d *6269676f757350617273655f696e666f0070696e6e65645f6f626a6563745f626c6f636b004469 *73747269627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e6765735f *636f6e5f696e666f00446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f7a646766726f6d5061636b6167654465736372697074696f6e5f636c6f73757265004748 *437a69456e756d5f7a644c723261666c766c31355f656e74727900696e746567657232496e747a *685f66617374004748437a694e756d5f7a677a655f636c6f73757265004748437a6948616e646c *655f6c766c32345f636c6f7375726500546578747a695072657474795072696e747a6948756768 *6573504a5f737472696e677a757478745f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f6d616e79315f737274004748437a694e756d5f646e7a7566625f63 *6c6f737572650053797374656d7a69457869745f61315f696e666f004748437a69494f42617365 *5f627566575074725f656e747279004748437a69456e756d5f656674496e745f636c6f73757265 *00446174617a694c6973745f7a644c72346e376c766c315f636c6f73757265007274735f676574 *46756e507472004748437a69556e69636f64655f7a64776973416c7068614e756d5f636c6f7375 *726500746872656164506175736564004748437a695265616c5f7a6477665f636c6f7375726500 *4748437a69494f426173655f50726f746f636f6c4572726f725f7374617469635f656e74727900 *4748437a6953686f775f7a64737a64646d73686f774c697374325f656e74727900446973747269 *627574696f6e7a69436f6d7061747a6952656164505f737472696e675f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f4265736964655f636f6e5f696e666f00 *446973747269627574696f6e7a6956657273696f6e5f6265747765656e56657273696f6e73496e *636c75736976655f656e747279007374675f61705f7070707070705f696e666f004748437a6942 *6173655f636f6d706172655f636c6f73757265004748437a69456e756d5f746f456e756d345f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467496c766c32345f696e666f0053797374656d7a694469726563746f72795f6c766c355f656e *747279004748437a69466c6f61745f7a64777a6473726f756e64335f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f7a6467746f505f696e666f004469737472 *69627574696f6e7a69436f6d7061747a6952656164505f6d756e6368315f73727400546578747a *69506172736572436f6d62696e61746f72737a6952656164505f6d756e63685f656e7472790054 *6578747a695072657474795072696e747a69487567686573504a5f4e696c41626f76655f737461 *7469635f696e666f00546578747a695072657474795072696e747a69487567686573504a5f4265 *736964655f7374617469635f656e74727900696e69745468726561644c6162656c5461626c6500 *446973747269627574696f6e7a694765744f70745f7a6467746f4172674f726465725f636c6f73 *757265004748437a695265616c5f746f526174696f6e616c325f696e666f004748437a69496e74 *5f6c6974345f636c6f73757265004748437a6953686f775f6133365f636c6f7375726500546578 *747a69526561647a694c65785f7a644c723576646c766c32345f656e747279004748437a694861 *6e646c655f77726974655261774275666665725074725f636c6f73757265004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f636861696e72315f696e666f005f5f73746769 *6e69745f4748437a69436f6e635f00446973747269627574696f6e7a6950726550726f63657373 *7a69556e6c69745f7a6467746f436c61737369666965645f636c6f73757265004748437a69546f *7048616e646c65725f6473315f656e747279004748437a6953686f775f61395f656e7472790047 *48437a6953686f775f6133325f636c6f73757265005f5f737467696e69745f446174617a69576f *726400446973747269627574696f6e7a69436f6d7061747a6952656164505f7a6457525f696e66 *6f006d61726b5369676e616c48616e646c657273004748437a695074725f5074725f7374617469 *635f656e747279004748437a69494f426173655f4572726f7243616c6c5f7374617469635f656e *747279004748437a6948616e646c655f68466c7573685f636c6f73757265004748437a69526561 *6c5f7a646453686f775f636c6f7375726500446174617a695479706561626c655f7a64776d6b54 *79436f6e5f636c6f737572650053797374656d7a694469726563746f72795f6c766c345f636c6f *73757265004748437a69494f5f685075745374725f656e7472790047617262616765436f6c6c65 *637400446973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164 *5061727365725f737274004748437a69556e69636f64655f746f4c6f7765725f636c6f73757265 *004748437a69426173655f5a43444d6f6e61645f636f6e5f656e74727900446973747269627574 *696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c7573505f656e74727900 *4748437a6953686f775f7a647773686f775369676e6564496e745f636c6f737572650054657874 *7a69506172736572436f6d62696e61746f72737a6952656164505f706661696c5f636c6f737572 *65004748437a694e756d5f537a685f7374617469635f696e666f00446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f73686f77486f6f6b65644275696c64496e66 *6f5f636c6f7375726500446973747269627574696f6e7a694765744f70745f4e6f4172675f7374 *617469635f696e666f004748437a69576f72645f5733327a685f7374617469635f696e666f0047 *48437a69494f426173655f7a647773686f777350726563355f696e666f0053797374656d7a6944 *69726563746f72795f6c766c32385f696e666f00446973747269627574696f6e7a695072655072 *6f636573737a69556e6c69745f50726f6772616d5f7374617469635f656e74727900546578747a *695072657474795072696e747a69487567686573504a5f7a644c723467776c766c32305f656e74 *7279004748437a69436f6e635f7468726561645761697457726974655f656e747279004748437a *6953686f775f7a64646d73686f774c6973745f656e74727900546578747a69526561647a694c65 *785f7a644c723577766135335f656e7472790053797374656d7a69506f7369787a69496e746572 *6e616c735f4469726563746f72795f636c6f73757265004748437a69546f7048616e646c65725f *7a644c723337656c766c375f696e666f004748437a69494f426173655f6132325f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467537a64776162 *6f76654e6573745f636c6f7375726500546578747a69526561647a694c65785f7a644c72357431 *61385f636c6f7375726500446973747269627574696f6e7a69457874656e73696f6e5f7a646766 *726f6d457874656e73696f6e5f656e747279004748437a6953686f775f7a64646d73686f775f65 *6e747279004748437a69526561645f6c6578505f636c6f73757265006e6f636c6473746f700047 *48437a694e756d5f6c766c385f636c6f73757265004748437a694c6973745f7a644c723272756c *766c31375f696e666f004748437a694e756d5f676364496e74656765725f696e666f004748437a *69496e745f66726f6d456e756d325f696e666f00446973747269627574696f6e7a69436f6d7061 *747a694469726563746f72795f66696e6445786563757461626c655f636c6f7375726500446973 *747269627574696f6e7a694765744f70745f7a6467746f4f70744b696e645f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33325f736c6f770044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6578706f736564 *4d6f64756c65735f636c6f737572650066696e616c697a7a655765616b7a685f66617374007072 *6f675f6e616d650073746172745369676e616c48616e646c657273004748437a6953686f775f61 *32345f696e666f004748437a695265616c5f7a644c723532316c766c385f696e666f004748437a *6953686f775f61345f636c6f7375726500466f726569676e7a694d61727368616c7a6941727261 *795f706f6b654172726179305f636c6f73757265007374675f73656c5f395f6e6f7570645f696e *666f007265737572726563745468726561647300546578747a69526561647a694c65785f7a644c *7235766e78375f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c73 *5f7a64776363616c6c36385f636c6f73757265004748437a69426173655f756e7061636b417070 *656e6443537472696e677a685f696e666f007374675f63617463685f656e747279004469737472 *69627574696f6e7a6950617273655574696c735f7061727365436f6d6d614c6973745f636c6f73 *757265005f5f737467696e69745f446973747269627574696f6e7a69436f6d7061747a69526561 *6450005f7374617274007374675f63617463685f6672616d655f72657400546578747a69526561 *647a694c65785f7a644c72357a7a4c6c766c39395f636c6f73757265004748437a6953686f775f *7a644c72315a5a4c6c766c375f636c6f7375726500546578747a69526561647a694c65785f7a64 *4c72357a7a7264735f696e666f004748437a69494f5f7a6477706f6c797a756275665772697465 *5f736c6f7700546578747a69506172736572436f6d62696e61746f72737a6952656164505f4c6f *6f6b5f636f6e5f656e747279004748437a69494f426173655f6c766c31375f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6946696c65506174685f73706c697446696c654e *616d655f656e74727900546578747a69526561647a694c65785f7a644c72357a7a627833355f63 *6c6f73757265004748437a69494f426173655f537461636b4f766572666c6f775f636c6f737572 *6500446973747269627574696f6e7a6953657475705f5769746843707068735f636f6e5f696e66 *6f004748437a69456e756d5f73756363355f696e666f004748437a69426173655f6e6567617465 *496e745f636c6f73757265004748437a6953686f775f617070507265635f636c6f737572650047 *48437a694c6973745f7461696c5f656e747279004748437a69494f426173655f75736572457272 *6f725f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f *7a64664d6f6e6164505f636c6f7375726500446973747269627574696f6e7a6953657475705f7a *64664571466c61675f696e666f00446973747269627574696f6e7a6953696d706c657a69557469 *6c735f72617753797374656d457869745f636c6f73757265004748437a6948616e646c655f7345 *454b7a754355525f696e666f00546578747a695072657474795072696e747a6948756768657350 *4a5f7a644c72346861676f325f656e74727900466f726569676e7a694d61727368616c7a69416c *6c6f635f7a64776363616c6c5f656e74727900446973747269627574696f6e7a6953657475705f *4f74686572436f6d70696c65725f696e666f00446973747269627574696f6e7a6953657475705f *556e7265676973746572436d645f636c6f73757265004748437a694572725f7061744572726f72 *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a64 *4c723467756c766c31395f636c6f7375726500446973747269627574696f6e7a69506172736555 *74696c735f46726f6d537472696e675f636f6e5f656e7472790072656c65617365436170616269 *6c697479004748437a69436f6e635f74687265616457616974526561645f636c6f737572650047 *48437a69494f426173655f6c766c33345f636c6f73757265004748437a69526561645f7a644c72 *3639626c766c31365f656e7472790053797374656d7a69436d645f6c766c315f696e666f004748 *437a6948616e646c655f7345454b7a754355525f656e7472790053797374656d7a69506f736978 *7a69496e7465726e616c735f7a64776363616c6c36375f696e666f004748437a69546f7048616e *646c65725f7a644c723337756c766c31355f696e666f004748437a69546f7048616e646c65725f *7a644c723337676c766c385f656e747279005f5f737467696e69745f4748437a69466f72656967 *6e5074725f00546578747a695072657474795072696e747a69487567686573504a5f7a6c7a675f *636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f7a6467746f5061636b6167654465736372697074696f6e5f696e666f004748437a69426173 *655f6d61705f696e666f00446973747269627574696f6e7a6953657475705f57697468416c6578 *5f7374617469635f696e666f007274735f676574537461626c65507472004748437a6948616e64 *6c655f77616e745772697461626c6548616e646c657a715f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c723577316134385f636c6f73757265004748437a69576f72645f7a *64777a64646d73686f775f656e74727900446973747269627574696f6e7a695061727365557469 *6c735f6d794572726f725f73727400446973747269627574696f6e7a69436f6d7061747a695265 *6164505f72656164507a75746f7a75535f656e747279007374675f61705f305f696e666f004748 *437a695265616c5f6131325f656e747279004748437a6953686f775f6c766c32345f656e747279 *00546578747a695072657474795072696e747a69487567686573504a5f7a644c7234683266696c *6c31315f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a695265 *6164507265635f7a677a675f696e666f004748437a69496e745f7a657a65335f656e7472790044 *6973747269627574696f6e7a69436f6d7061747a694469726563746f72795f66696e6445786563 *757461626c655f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164 *505f636861696e72315f73727400446973747269627574696f6e7a69436f6d7061747a69526561 *64505f6765745f696e666f004748437a6948616e646c655f657272345f636c6f7375726500466f *726569676e7a6953746f7261626c655f5a434453746f7261626c655f7374617469635f656e7472 *7900446174617a695479706561626c655f6c676f5f656e747279005f5f737467696e69745f4748 *437a694261736500446973747269627574696f6e7a6953657475705f636d64416374696f6e5f69 *6e666f004748437a6953686f775f6134345f656e74727900546578747a69507265747479507269 *6e747a69487567686573504a5f646f75626c6551756f7465735f636c6f7375726500546578747a *69526561647a694c65785f7a644c723578377832355f636c6f7375726500446174617a69486173 *685461626c655f7a6477696e736572745f656e747279004748437a69494f426173655f7a647773 *686f777350726563355f636c6f73757265004748437a69426173655f666f6c64725f636c6f7375 *72650053797374656d7a69506f7369787a6946696c65735f6d6f64696669636174696f6e54696d *655f696e666f00546578747a69526561647a694c65785f7a644c723576336133385f656e747279 *004748437a6948616e646c655f77616e745772697461626c6548616e646c657a715f656e747279 *00446973747269627574696f6e7a6953657475705f636f6d70696c6572466c61766f725f696e66 *6f00546578747a69526561647a694c65785f7a644c723575376c766c31345f636c6f7375726500 *4748437a69494f5f7a647768507574436861725f656e747279004748437a69494f426173655f4c *696e65427566666572696e675f7374617469635f656e747279004748437a69556e69636f64655f *697355707065725f656e747279007374675f61705f765f696e666f00446174617a694c6973745f *69735072656669784f665f636c6f73757265004748437a69426173655f756e7061636b43537472 *696e67557466387a685f636c6f7375726500446973747269627574696f6e7a6953657475705f57 *6974684873633268735f636c6f7375726500546578747a69506172736572436f6d62696e61746f *72737a6952656164505f7a6c7a707a705f656e747279004748437a69496e745f746f496e746567 *6572325f636c6f73757265004748437a6953686f775f6c766c31355f636c6f7375726500474843 *7a69526561645f7a6466526561644d617962655f696e666f00446973747269627574696f6e7a69 *5061636b6167655f7a646653686f775061636b6167654964656e7469666965725f696e666f0047 *48437a694e756d5f6a746f735f636c6f737572650053797374656d7a69506f7369787a69496e74 *65726e616c735f4469726563746f72795f7374617469635f696e666f0044697374726962757469 *6f6e7a6953657475705f7a6467746f416374696f6e5f696e666f004748437a69546f7048616e64 *6c65725f72756e494f5f656e74727900436f6e74726f6c7a694d6f6e61645f5a43444d6f6e6164 *506c75735f7374617469635f696e666f004748437a69556e69636f64655f697355707065725f63 *6c6f73757265007374675f61705f765f7265740053797374656d7a69506f7369787a6946696c65 *735f67657446696c655374617475735f636c6f7375726500446973747269627574696f6e7a6950 *61636b6167655f7a646645715061636b6167654964656e7469666965725f636c6f737572650047 *48437a69526561645f72656164735f636c6f7375726500446973747269627574696f6e7a695665 *7273696f6e5f7a646653686f7756657273696f6e5f636c6f73757265004748437a69546f704861 *6e646c65725f7a644c7233376b6c766c31305f656e74727900546578747a69506172736572436f *6d62696e61746f72737a6952656164505f7a644c723174676c766c315f656e7472790044697374 *7269627574696f6e7a69457874656e73696f6e5f436f6e74657874537461636b5f737461746963 *5f656e747279004748437a69496e745f7a6477626f756e646564456e756d46726f6d5f656e7472 *79004748437a6948616e646c655f68436c6f73657a7568616e646c657a755f696e666f00474843 *7a69526561645f6c766c375f696e666f00446973747269627574696f6e7a695061727365557469 *6c735f7a64664d6f6e61645061727365526573756c745f737274004748437a69576f72645f7a64 *777a64646d73686f775f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a *6952656164505f636861696e6c5f73727400546578747a69526561647a694c65785f7a644c7235 *75376c766c31345f656e74727900466f726569676e7a6953746f7261626c655f706f6c797a757a *64646d7065656b325f656e74727900446973747269627574696f6e7a6950617273655574696c73 *5f7a646653686f775061727365526573756c745f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f7a644c723467716c766c31375f696e666f007374675f61705f *345f7570645f696e666f00446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f65787472614c6962735f636c6f7375726500446973747269627574696f6e7a69436f *6d7061747a6952656164505f7a64664d6f6e6164505f656e74727900546578747a69526561647a *694c65785f7a644c723576566134375f656e74727900446973747269627574696f6e7a69566572 *73696f6e5f7a646766726f6d56657273696f6e5f696e666f00466f726569676e7a69437a694572 *726f725f6c766c315f636c6f73757265004748437a694e756d5f7a6c7a655f656e747279006d75 *745f757365725f74696d655f647572696e675f4743004748437a69546f7048616e646c65725f7a *644c723337346c766c335f656e747279004748437a6948616e646c655f6c766c345f656e747279 *00446973747269627574696f6e7a6950617273655574696c735f7061727365457874656e73696f *6e515f696e666f007374675f41505f696e666f006177616b656e426c6f636b656451756575654e *6f4c6f636b00446174617a695475706c655f5a33545f7374617469635f656e747279004748437a *69494f426173655f6133345f656e74727900546578747a69526561647a694c65785f7a644c7268 *416c657849645f696e666f00537461636b4f766572666c6f77486f6f6b00546578747a69507265 *7474795072696e747a69487567686573504a5f7a644c723467517a64776e696c41626f76654e65 *73745f636c6f73757265004748437a69494f426173655f4f746865724572726f725f7374617469 *635f696e666f0053797374656d7a69436d645f7468726f774572726e6f49664d696e7573315f63 *6c6f73757265005f5f737467696e69745f5072656c7564655f00677261624361706162696c6974 *7900546578747a695072657474795072696e747a69487567686573504a5f7a644c723467537a64 *7761626f76654e6573745f656e747279004748437a69426173655f7a646645715a4d5a4e5f636c *6f73757265004748437a69494f5f7a644c723967746c617a7a7952656164315f696e666f005465 *78747a69526561647a694c65785f7a644c723574546c766c31305f636c6f73757265004748437a *69576f72645f7a64777a64646d73686f775f696e666f006973466c6f617444656e6f726d616c69 *7a656400737461727475704861736b656c6c00446973747269627574696f6e7a69436f6d706174 *7a6952656164505f7a707a707a705f73727400446973747269627574696f6e7a6953696d706c65 *7a695574696c735f72617753797374656d566572626f73655f737274004748437a695265616c5f *7a6477615f696e666f004748437a69494f426173655f6c766c33325f636c6f7375726500446174 *617a694c6973745f69735375666669784f665f656e74727900546578747a69526561647a694c65 *785f7a644c7235796a6c766c36345f636c6f73757265004748437a6948616e646c655f666c7573 *6857726974654275666665724f6e6c795f696e666f004748437a6953686f775f73686f774c6973 *747a757a755f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f466f72 *6569676e46756e6374696f6e496e746572666163655f7374617469635f656e7472790044697374 *7269627574696f6e7a6956657273696f6e5f6f724561726c69657256657273696f6e5f696e666f *0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32335f696e *666f004748437a694c6973745f6c766c365f656e747279004748437a69494f5f7a644c72396670 *6c766c375f656e747279004748437a6953686f775f7a64646d73686f774c6973745f696e666f00 *706c7573496e74656765727a685f6661737400446973747269627574696f6e7a6956657273696f *6e5f73686f7756657273696f6e5f696e666f00446174617a695479706561626c655f7a644c7236 *4f346c766c345f736c6f7700546578747a69506172736572436f6d62696e61746f72737a695265 *6164505f4661696c5f7374617469635f656e747279004748437a69556e69636f64655f7a647774 *6f4c6f7765725f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952 *656164505f736b69705f656e74727900546578747a69526561647a694c65785f7a644c72357a7a *7a7a6c766c39335f636c6f73757265007374675f434841524c494b455f636c6f73757265004748 *437a694c6973745f706f6c797a75696e69747a715f656e74727900546578747a69526561647a69 *4c65785f7a644c723577686c766c33355f656e74727900546578747a69526561647a694c65785f *7a644c72357a7a396136395f696e666f0053797374656d7a69457869745f615f636c6f73757265 *004748437a694e756d5f537a685f636f6e5f696e666f004748437a694c6973745f7a644c723271 *4f6c766c355f636c6f73757265004748437a695265616c5f6131315f636c6f7375726500474843 *7a694c6973745f6c766c31325f696e666f004748437a6948616e646c655f7374646572725f656e *747279007274735f676574496e74363400546578747a69526561647a694c65785f7a644c72357a *7a526c766c3130325f636c6f73757265007374675f73656c5f325f6e6f7570645f696e666f0073 *74675f444541445f5745414b5f696e666f004748437a69494f426173655f68614275666665725f *636c6f7375726500546578747a69526561647a694c65785f7a644c723576506134365f656e7472 *79004748437a69494f426173655f6c766c33335f656e74727900546578747a69526561647a694c *65785f7a644c723579566c766c38335f636c6f73757265004748437a69576f72645f6e65676174 *65335f656e74727900446174617a694c6973745f7a644c72346e356c766c5f636c6f7375726500 *4748437a694e756d5f7a644c723278746c766c315f656e74727900546578747a69526561647a69 *4c65785f7a644c723577746c766c33375f656e7472790053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c37305f636c6f7375726500446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f7772697465486f6f6b65644275696c6449 *6e666f5f696e666f0053797374656d7a69494f5f7265616446696c655f636c6f73757265007274 *73537570706f727473426f756e6454687265616473007374675f6765496e743634004748437a69 *426173655f46616c73655f7374617469635f696e666f005f5f737467696e69745f4748437a6949 *4f426173655f00546578747a69526561647a694c65785f7a644c723579426c766c37335f636c6f *73757265004748437a69426173655f7a657a65315f656e74727900446973747269627574696f6e *7a694765744f70745f7a6467746f4f707444657363725f656e747279004748437a69526561645f *6c766c32325f696e666f00446973747269627574696f6e7a6950617273655574696c735f537461 *6e7a7a614669656c645f636c6f73757265004748437a6953686f775f7a646653686f7743686172 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c7235766c6134315f656e74 *727900546578747a695072657474795072696e747a69487567686573504a5f646f75626c655175 *6f7465735f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f52 *6573756c745f636f6e5f696e666f00446973747269627574696f6e7a694765744f70745f526571 *4172675f7374617469635f656e74727900546578747a695072657474795072696e747a69487567 *686573504a5f6132345f636c6f73757265004748437a69546f7048616e646c65725f7a644c7233 *37636c766c365f656e747279004748437a69526561645f7a6473726561644c6973745072656344 *656661756c74325f656e74727900446973747269627574696f6e7a6953657475705f5769746843 *707068735f636f6e5f656e74727900446973747269627574696f6e7a694765744f70745f4f7074 *5f636c6f73757265004748437a6953686f775f7a64737a64646d73686f77325f656e7472790047 *48437a6948616e646c655f77616e745772697461626c6548616e646c655f636c6f737572650044 *6973747269627574696f6e7a694d616b655f64656661756c744d61696e5f636c6f737572650047 *48437a694e756d5f7a644c723278786c766c335f656e747279007374675f454e445f4558434550 *54494f4e5f4c4953545f696e666f00546578747a69526561647a694c65785f7a644c723579506c *766c38305f636c6f7375726500466f726569676e7a69437a694572726f725f7a64776363616c6c *315f636c6f73757265004748437a69494f426173655f7468726f775f696e666f00446973747269 *627574696f6e7a6950617273655574696c735f6669656c644765745f696e666f00546578747a69 *526561647a694c65785f7a644c723577356c766c33335f636c6f7375726500546578747a695072 *657474795072696e747a69487567686573504a5f7a644c723467457a64777370616365735f656e *747279004748437a6948616e646c655f7a644c724a6872777a75666c6167735f656e7472790047 *48437a69426173655f496e6c5f7374617469635f696e666f00446973747269627574696f6e7a69 *457874656e73696f6e5f54656d706c6174654861736b656c6c5f7374617469635f656e74727900 *446973747269627574696f6e7a69436f6d7061747a6952656164505f636861696e6c5f656e7472 *79006465526566537461626c655074727a685f6661737400446973747269627574696f6e7a6950 *726550726f636573737a69556e6c69745f5072655f636c6f73757265004748437a69494f426173 *655f6c766c32355f636c6f7375726500436f6e74726f6c7a694d6f6e61645f73657175656e6365 *7a755f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f7a6467746f5061636b6167654465736372697074696f6e5f636c6f73757265004748437a69 *5265616c5f6d6f64315f656e747279004748437a694c6973745f7375625f636c6f737572650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c7573 *505f636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f617574686f725f696e666f00446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f73686f775061636b6167654465736372697074696f6e5f737274004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f617574686f725f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c723578466136355f696e666f00 *4748437a6953686f775f73686f77506172656e5f636c6f73757265005f5f737467696e69745f4d *61696e5f004748437a6953545265665f53545265665f7374617469635f696e666f00436f6e7472 *6f6c7a694d6f6e61645f73657175656e63655f636c6f7375726500446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f6f7074696f6e735f696e666f004748437a69 *53686f775f61355f636c6f73757265004748437a69494f5f7a644c723967726c617a7a79526561 *644275666665726564315f656e747279005f5f737467696e69745f53797374656d7a69506f7369 *787a69494f5f00446973747269627574696f6e7a6950617273655574696c735f73686f77546573 *746564576974685f696e666f007374675f73656c5f385f7570645f696e666f00446174617a6954 *75706c655f736e645f636c6f73757265004748437a694e756d5f656e756d46726f6d546f5f696e *666f00546578747a69526561647a694c65785f7a644c723577397831355f636c6f737572650054 *6578747a69506172736572436f6d62696e61746f72737a6952656164505f526573756c745f636f *6e5f696e666f0053797374656d7a694469726563746f72795f72656d6f766546696c655f656e74 *7279004748437a694c6973745f7a644c723272676c766c31305f656e747279004748437a69546f *7048616e646c65725f7a644c723337346c766c335f736c6f77004748437a69526561645f7a644c *723639626c766c31365f696e666f004748437a6953686f775f73686f776c5f656e747279004748 *437a69576f72645f73686f777350726563335f656e74727900446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f6465736372697074696f6e5f656e747279007374 *675f7969656c645f746f5f696e746572707265746572005f5f737467696e69745f436f6e74726f *6c7a694d6f6e61645f004748437a69576f72645f7a70335f636c6f73757265005f5f737467696e *69745f53797374656d7a69506f7369787a69456e765f00446973747269627574696f6e7a694578 *74656e73696f6e5f496d706c69636974506172616d735f7374617469635f696e666f005f5f7374 *675f67635f66756e004748437a69466c6f61745f447a685f7374617469635f656e747279004469 *73747269627574696f6e7a6953657475705f576974684873633268735f636f6e5f696e666f0047 *48437a694e756d5f676364496e74656765725f636c6f7375726500446973747269627574696f6e *7a6950617273655574696c735f50617273654f6b5f7374617469635f696e666f00446973747269 *627574696f6e7a694c6963656e73655f4f746865724c6963656e73655f636c6f73757265007374 *675f73656c5f365f6e6f7570645f656e74727900546578747a69526561647a694c65785f7a644c *723575396c766c31355f696e666f004748437a69456e756d5f6c766c31365f656e747279004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f6873536f75726365 *4469725f636c6f73757265004748437a694c6973745f6c766c365f636c6f7375726500436f6e74 *726f6c7a694d6f6e61645f7a6477666f6c644d5f696e666f00446973747269627574696f6e7a69 *53657475705f48756773466c61675f636c6f73757265004748437a6953686f775f6135365f656e *74727900446973747269627574696f6e7a69457874656e73696f6e5f466c657869626c65496e73 *74616e6365735f7374617469635f656e747279004748437a69556e69636f64655f7a6477697341 *6c7068615f656e747279004748437a6948616e646c655f7a647766696c6c526561644275666665 *724c6f6f705f696e666f005f5f737467696e69745f466f726569676e7a69437a69547970657300 *64756d6d795f74736f0053797374656d7a694469726563746f72795f7a644c723962416c766c31 *395f636c6f73757265004748437a694c6973745f666f6c6472325f696e666f0044697374726962 *7574696f6e7a6950726550726f636573737a69556e6c69745f496e636c7564655f656e74727900 *446973747269627574696f6e7a6953657475705f436c65616e436d645f636c6f73757265004748 *437a695265616c5f6131305f656e747279004748437a695265616c5f61355f696e666f00446973 *747269627574696f6e7a69436f6d7061747a694469726563746f72795f72656d6f766544697265 *63746f72795265637572736976655f737274004748437a694c6973745f64726f707a685f636c6f *7375726500466f726569676e7a69437a6954797065735f7a64664e756d43496e745f636c6f7375 *726500446973747269627574696f6e7a69457874656e73696f6e5f7a6467746f457874656e7369 *6f6e5f636c6f73757265004748437a69494f5f7a64777772697465426c6f636b735f656e747279 *00446973747269627574696f6e7a6953657475705f5344697374436d645f7374617469635f696e *666f004748437a69426173655f7a64646d7a6c7a655f696e666f00446973747269627574696f6e *7a6956657273696f6e5f76657273696f6e4272616e63685f656e747279004748437a694c697374 *5f7a7a69705f636c6f73757265004748437a6948616e646c655f7374646f75745f636c6f737572 *65004748437a69494f426173655f526561644d6f64655f7374617469635f696e666f004748437a *69576f72645f6e6567617465335f696e666f007374675f73656c5f31325f6e6f7570645f696e66 *6f00546578747a69526561647a694c65785f7a644c72357a7a666c766c38375f656e7472790046 *6f726569676e7a694d61727368616c7a69416c6c6f635f6c766c355f636c6f7375726500474843 *7a6953686f775f6135305f696e666f004748437a69494f426173655f6c766c31385f636c6f7375 *7265004748437a69494f426173655f5065726d697373696f6e44656e6965645f636c6f73757265 *00446973747269627574696f6e7a69436f6d7061747a6952656164505f526573756c745f737461 *7469635f696e666f00746f74616c5f616c6c6f6361746564004748437a69494f426173655f6c76 *6c31375f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f6a6f696e46696c654578745f636c6f73757265004748437a6953686f775f6134355f636c6f73 *757265004748437a6953686f775f6136305f696e666f00446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f6861734c6962735f656e747279004748437a69494f42 *6173655f4f746865724572726f725f636c6f7375726500546578747a69506172736572436f6d62 *696e61746f72737a6952656164505f736b69705f636c6f73757265007369676164647365744040 *474c4942435f322e30004748437a694e756d5f646e7a756c6973745f636c6f73757265004d6169 *6e4361706162696c69747900546578747a69526561647a694c65785f7a644c7235745a5a7a637a *635f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c33375f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164 *505f736b69704d616e79315f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f656d707479486f6f6b65644275696c64496e666f5f636c6f737572 *65007374675f61705f6e5f7265740053797374656d7a69506f7369787a6946696c65735f6c766c *31395f636c6f73757265004748437a6953686f775f6131345f696e666f00546578747a69507265 *7474795072696e747a69487567686573504a5f7a644c723467636c766c31305f636c6f73757265 *00546578747a69526561647a694c65785f7a644c7235776a6135315f656e747279004748437a69 *494f426173655f6275664275665f696e666f004748437a69426173655f7a627a625f696e666f00 *4748437a69576f72645f7a6477746f496e7465676572315f696e666f00546578747a6952656164 *7a694c65785f7a644c7235757a7a6c766c31375f656e74727900446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f7a646766726f6d45786563757461626c655f63 *6c6f73757265004748437a694e756d5f7a677a655f656e747279004748437a69494f426173655f *6c766c32335f636c6f73757265005f5f737467696e69745f53797374656d7a69456e7669726f6e *6d656e7400446973747269627574696f6e7a6956657273696f6e5f416e7956657273696f6e5f63 *6c6f73757265004748437a694e756d5f72656d496e74656765725f696e666f00546578747a6952 *6561647a694c65785f7a644c72357a7a546c766c3130335f636c6f7375726500446174617a694d *617962655f4e6f7468696e675f7374617469635f656e74727900466f726569676e7a694d617273 *68616c7a6941727261795f776974684172726179305f696e666f004748437a69494f426173655f *4172697468457863657074696f6e5f7374617469635f696e666f004748437a69494f426173655f *68614f74686572536964655f696e666f0053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c36355f696e666f004748437a69426173655f5a437a745a435f737461 *7469635f656e74727900626c6f636b557365725369676e616c7300436f6e74726f6c7a694d6f6e *61645f6d61704d5f656e74727900446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f73796e6f707369735f636c6f7375726500446973747269627574696f6e7a69 *53657475705f7061727365496e7374616c6c417267735f696e666f004748437a69456e756d5f7a *644c7232616a6c766c31375f636c6f73757265004748437a694e756d5f75707a7566625f636c6f *73757265006973456d7074794d5661727a685f66617374004748437a694e756d5f7a6477646976 *4d6f64496e74656765725f656e747279004748437a69456e756d5f6c766c31385f696e666f0047 *48437a69494f426173655f494f457863657074696f6e5f7374617469635f656e74727900474843 *7a69526561645f7a646652656164496e745f636c6f73757265006469764578616374496e746567 *65727a685f66617374004748437a69426173655f756e7061636b43537472696e677a685f656e74 *7279004748437a6953686f775f6133365f696e666f004748437a695265616c5f7a647761345f65 *6e747279004748437a694e756d5f6a746f737a715f656e747279005f5f737467696e69745f4e75 *6d6572696300446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f774f766572 *6c617070696e67496e7374616e6365735f7374617469635f656e74727900436f6e74726f6c7a69 *457863657074696f6e5f66696e616c6c795f636c6f7375726500737461745f7374617274457869 *74004748437a69526561645f6c766c375f656e747279004748437a69556e69636f64655f697341 *6c7068614e756d5f656e747279005f5f6465636f6465466c6f6174004748437a6953686f775f73 *686f77735f696e666f0069737775707065724040474c4942435f322e30007765616b5f7074725f *6c6973740053797374656d7a694469726563746f72795f6c766c31325f636c6f73757265004748 *437a6953686f775f7a646653686f775a32545f696e666f00446174617a695479706561626c655f *547970655265705f636f6e5f696e666f005f5f737467696e69745f53797374656d7a69436d6400 *446973747269627574696f6e7a6953657475705f436f6d70696c65725f656e747279004748437a *69494f426173655f45786974537563636573735f636c6f7375726500546578747a695061727365 *72436f6d62696e61746f72737a6952656164505f7a644c723174656c766c5f696e666f00446973 *747269627574696f6e7a6956657273696f6e5f446570656e64656e63795f7374617469635f696e *666f00546578747a69526561647a694c65785f7a644c7235787a7a6136345f636c6f7375726500 *546578747a69526561647a694c65785f7a644c7235786e6136325f636c6f737572650044697374 *7269627574696f6e7a6953657475705f70617273655265676973746572417267735f7372740053 *797374656d7a69506f7369787a6946696c65735f7468726f774572726e6f49664d696e7573317a *75315f696e666f00446973747269627574696f6e7a6953657475705f7a646766726f6d41637469 *6f6e5f636c6f7375726500446973747269627574696f6e7a6953657475705f636f6e6669674861 *64646f636b5f696e666f00466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c33 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c723577507832325f636c6f *73757265004748437a6948616e646c655f666c75736857726974654275666665724f6e6c795f65 *6e747279004748437a69494f426173655f72657475726e494f5f636c6f73757265004469737472 *69627574696f6e7a6953657475705f4e48435f7374617469635f696e666f0068735f696e697400 *546578747a69526561647a694c65785f7a644c7235416e6c766c3131385f636c6f737572650047 *48437a69496e745f6c766c31375f696e666f00546578747a69526561647a694c65785f7a644c72 *357a7a6872657365727665647a756f70735f636c6f7375726500546578747a69526561647a694c *65785f7a644c723574686131365f696e666f004748437a694572725f7a644c723130706c766c31 *335f656e74727900446973747269627574696f6e7a6953657475705f476863466c61675f737461 *7469635f656e7472790053797374656d7a69456e7669726f6e6d656e745f6c766c315f656e7472 *79007374675f61705f665f726574004748437a695265616c5f7a6477746f526174696f6e616c5f *636c6f7375726500446973747269627574696f6e7a6953657475705f636f6e6669674873633268 *735f656e74727900446973747269627574696f6e7a6953657475705f7061727365436c65616e41 *7267735f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f7a64665265 *6164457874656e73696f6e5f636c6f73757265004748437a69494f426173655f61375f636c6f73 *757265004748437a69496e745f4936347a685f636f6e5f656e74727900546578747a6952656164 *7a694c65785f7a644c7235746c6131385f656e74727900546578747a69506172736572436f6d62 *696e61746f72737a6952656164505f526573756c745f7374617469635f656e747279004748437a *695265616c5f5a43444672616374696f6e616c5f7374617469635f656e74727900546578747a69 *526561647a694c65785f7a644c72357a7a706c766c38395f696e666f004748437a69456e756d5f *656664496e7446425f656e74727900446973747269627574696f6e7a6953657475705f52656769 *73746572436d645f7374617469635f656e74727900446973747269627574696f6e7a6953657475 *705f436d645f636f6e5f656e74727900546578747a69526561647a694c65785f7a644c72357554 *6133365f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952656164 *505f526573756c745f636f6e5f656e747279004748437a69426173655f5a435f656e7472790054 *6578747a69526561647a694c65785f7a644c723574396131325f636c6f7375726500546578747a *69506172736572436f6d62696e61746f72737a6952656164507265635f7a677a677a655f636c6f *73757265005f5f737467696e69745f53797374656d7a69506f7369787a6954696d65005f5f7374 *67696e69745f446973747269627574696f6e7a69436f6d7061747a6952656164505f0053797374 *656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c365f696e666f00474843 *7a6948616e646c655f696f657a75454f465f736c6f7700446973747269627574696f6e7a694578 *74656e73696f6e5f416c6c6f77496e636f686572656e74496e7374616e6365735f636c6f737572 *65007374675f61705f325f7570645f696e666f00546578747a69526561647a694c65785f7a644c *723578446c766c34395f656e7472790053797374656d7a69506f7369787a69496e7465726e616c *735f7a64776363616c6c37345f696e666f004748437a69496e745f6e6567617465325f656e7472 *7900446973747269627574696f6e7a6956657273696f6e5f73686f7756657273696f6e5f656e74 *7279004748437a69456e756d5f676f7a75646e7a75696e747a756c6973745f656e747279004748 *437a6953686f775f61395f636c6f73757265004748437a69526561645f7a6473726561644c6973 *7444656661756c74345f696e666f004748437a69526561645f6c766c32325f656e747279004748 *437a6948616e646c655f61315f696e666f00466f726569676e7a694d61727368616c7a69417272 *61795f6c766c5f696e666f004748437a694c6973745f636f6e6361745f656e7472790044697374 *7269627574696f6e7a69457874656e73696f6e5f4e6f496d706c696369745072656c7564655f73 *74617469635f656e74727900546578747a695072657474795072696e747a69487567686573504a *5f7a6c7a707a675f636c6f7375726500546578747a69526561647a694c65785f7a644c72357862 *6136305f696e666f004748437a69496e745f72656d325f656e74727900546578747a6950726574 *74795072696e747a69487567686573504a5f7a644c723466536c766c5f696e666f004748437a69 *48616e646c655f696f657a756e6f745772697461626c655f736c6f77007274735f6d6b53747269 *6e6700446174617a695479706561626c655f7a644c727864686173684b505f636c6f7375726500 *546578747a69506172736572436f6d62696e61746f72737a6952656164505f4661696c5f636c6f *7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f65 *786563757461626c65735f656e747279004748437a69494f426173655f446561646c6f636b5f63 *6c6f73757265004748437a69546f7048616e646c65725f6473315f696e666f004748437a694861 *6e646c655f66647a757374646572725f636c6f73757265005f5f737467696e69745f5379737465 *6d7a69506f7369787a69494f00446174617a695479706561626c655f63616368655f656e747279 *004748437a6948616e646c655f7769746848616e646c657a757a757a715f656e74727900546578 *747a69526561647a694c65785f7a644c7235774e6135365f696e666f004748437a6948616e646c *655f6c766c35335f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c *735f66696e645061636b616765446573635f696e666f004748437a694c6973745f7a644c723272 *716c766c31355f656e74727900466f726569676e7a69437a694572726f725f7468726f77457272 *6e6f49664d696e7573315f656e747279005f5f737467696e69745f4748437a69457272005f5f73 *7467696e69745f446174617a695479706561626c6500446973747269627574696f6e7a69457874 *656e73696f6e5f457874656e7369626c655265636f7264735f7374617469635f696e666f004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f656e6442795f696e666f007374 *675f73656c5f31325f7570645f696e666f007374675f41505f535441434b5f656e747279007374 *675f756e626c6f636b4173796e63457863657074696f6e737a685f7265745f696e666f00446973 *747269627574696f6e7a69436f6d7061747a6952656164505f737472696e675f73727400474843 *7a6953686f775f6135325f696e666f004748437a694c6973745f64726f705f696e666f00474843 *7a69494f426173655f46696c6548616e646c655f7374617469635f696e666f004748437a69496e *745f7a64646d656e756d46726f6d546f5f636c6f73757265004748437a694e756d5f7a644c7232 *78726c766c5f636c6f7375726500446973747269627574696f6e7a6953657475705f636d644e61 *6d655f636c6f737572650053797374656d7a69456e7669726f6e6d656e745f67657450726f674e *616d655f636c6f7375726500446973747269627574696f6e7a6953657475705f496e7374507265 *6669785f636f6e5f696e666f007374675f73656c5f31305f6e6f7570645f656e74727900474843 *7a6953686f775f6134385f636c6f7375726500446973747269627574696f6e7a6956657273696f *6e5f5468697356657273696f6e5f696e666f004748437a69426173655f5a43444f72645f737461 *7469635f696e666f007374675f73656c5f355f7570645f656e747279004748437a6948616e646c *655f7a644c7262583961335f656e74727900676364496e7465676572496e747a685f6661737400 *446973747269627574696f6e7a69436f6d7061747a6952656164505f72656164537a75746f7a75 *505f737274004748437a6948616e646c655f7a644c72633370657272375f636c6f737572650054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c72346836676f5f696e *666f004748437a6948616e646c655f7a64776175676d656e74494f4572726f725f656e74727900 *4748437a69526561645f5a4344526561645f7374617469635f696e666f00546578747a69526561 *647a694c65785f7a644c723576706c766c32365f636c6f7375726500546578747a69526561647a *694c65785f7a644c723576396133395f656e747279005f5f737467696e69745f44697374726962 *7574696f6e7a694c6963656e736500446973747269627574696f6e7a6956657273696f6e5f556e *696f6e56657273696f6e52616e6765735f656e747279004748437a694e756d5f72656d496e7465 *6765725f656e747279004748437a69494f426173655f457869744661696c7572655f7374617469 *635f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e *5f696e636c756465446972735f696e666f004748437a6953686f775f6134395f636c6f73757265 *005f5f737467696e69745f466f726569676e7a69437a694572726f725f007274735f6d6b576f72 *6433320053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7557524f4e4c595f *636c6f7375726500466f726569676e7a69437a6954797065735f7a6466457143496e745f636c6f *7375726500446174617a694c6973745f69735072656669784f665f656e747279004748437a6949 *4f426173655f6132315f636c6f73757265004748437a69494f426173655f526561644275666665 *725f7374617469635f656e74727900546578747a69506172736572436f6d62696e61746f72737a *6952656164505f72756e5f656e747279004748437a694c6973745f7461696c5f696e666f004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f636861725f737274007374675f *61705f70705f72657400446973747269627574696f6e7a69436f6d7061747a6946696c65506174 *685f73706c697446696c65506174685f656e747279004748437a69494f426173655f6c766c3138 *5f656e747279004748437a69546f7048616e646c65725f7a644c723337736c766c31345f696e66 *6f00446973747269627574696f6e7a6953657475705f636f6e66696743707068735f656e747279 *004748437a6953686f775f6135345f636c6f73757265004748437a69496e745f7a64646d7a675f *656e74727900546578747a69526561647a694c65785f7a644c72357a7a506c766c3130315f636c *6f73757265004748437a69426173655f6d696e7573496e745f696e666f00446973747269627574 *696f6e7a6950617273655574696c735f46726f6d537472696e675f636f6e5f696e666f00474843 *7a694c6973745f64726f705768696c655f636c6f73757265004748437a69494f426173655f6861 *427566666572735f696e666f004748437a69494f426173655f556e737570706f727465644f7065 *726174696f6e5f636c6f737572650072616973654173796e63576974684c6f636b00446174617a *695475706c655f6673745f696e666f00616c6c6f635f48704c696d007374675f656e7465725f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c3735 *5f656e747279004748437a69494f5f6c766c365f636c6f73757265004748437a6948616e646c65 *5f77616e745265616461626c6548616e646c657a715f636c6f7375726500446174617a69547970 *6561626c655f4b657950725f7374617469635f656e747279005f5f737467696e69745f54657874 *7a695072657474795072696e747a69487567686573504a5f004748437a69426173655f7a64646d *7a6c5f636c6f73757265004748437a69494f426173655f5061747465726e4d617463684661696c *5f636f6e5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f637a7563 *686d6f645f696e666f00446973747269627574696f6e7a6953657475705f7a64664571466c6167 *5f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c33335f736c6f77004748437a69494f426173655f6132315f696e666f004748437a69494f *426173655f61335f696e666f00546578747a695072657474795072696e747a6948756768657350 *4a5f7a644c7234686f7a64776d756c74697a7563685f696e666f0053797374656d7a69506f7369 *787a69496e7465726e616c735f4469726563746f72795f7374617469635f656e747279005f5f67 *6d707a5f696f7200546578747a69526561647a694c65785f7a644c7235774c6c766c34305f656e *747279004748437a69494f426173655f6c766c32315f656e74727900546578747a69526561647a *694c65785f7a644c723579446c766c37345f636c6f73757265004748437a69576f72645f707265 *644572726f725f696e666f004748437a69494f426173655f496e617070726f7072696174655479 *70655f7374617469635f656e747279005f5f737467696e69745f53797374656d7a694c6f63616c *6500446973747269627574696f6e7a6953657475705f476863466c61675f636c6f737572650044 *6973747269627574696f6e7a6956657273696f6e5f496e7465727365637456657273696f6e5261 *6e6765735f636c6f73757265007374675f6774576f72643634004748437a69526561645f7a6466 *526561645a32545f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4f76 *65726c617070696e67496e7374616e6365735f7374617469635f696e666f00696e746567657232 *576f72647a685f66617374004748437a69426173655f7a6470314f72645f656e74727900474843 *7a69494f426173655f6132375f656e74727900736c656570696e675f7175657565004748437a69 *426173655f6765745461675f656e74727900446973747269627574696f6e7a69457874656e7369 *6f6e5f526573747269637465645479706553796e6f6e796d735f636c6f73757265004748437a69 *496e745f7a64646d7a6c7a655f636c6f73757265004748437a69426173655f6c65496e745f636c *6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a755452554e43 *5f656e7472790053797374656d7a69457869745f6c766c315f736c6f7700446973747269627574 *696f6e7a6953657475705f57697468436f6d70696c65725f656e74727900546578747a69506172 *736572436f6d62696e61746f72737a6952656164507265635f707265635f636c6f737572650047 *48437a69494f5f7a644c7239667a7a6c766c31325f636c6f73757265004748437a69426173655f *7a64646d7a737a655f696e666f004748437a69426173655f7a677a675f656e747279004748437a *6953746f7261626c655f77726974655074724f66665074725f696e666f004748437a694572725f *756e646566696e65645f636c6f73757265007374675f61705f70707070705f726574004748437a *69496e745f7a64646d7a677a655f696e666f0053797374656d7a69506f7369787a69496e746572 *6e616c735f7a64776363616c6c32305f656e74727900446973747269627574696f6e7a69506172 *73655574696c735f73686f77546573746564576974685f636c6f73757265004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f7a6467746f4275696c64496e666f *5f696e666f004748437a6948616e646c655f6c766c32335f656e74727900446973747269627574 *696f6e7a6953696d706c657a695574696c735f736d617274436f7079536f75726365735f636c6f *73757265004748437a69426173655f6d61705f656e747279004748437a6948616e646c655f7a64 *4c72625a5a376c766c34305f656e747279004748437a694e756d5f537a685f7374617469635f65 *6e74727900446973747269627574696f6e7a6956657273696f6e5f496e74657273656374566572 *73696f6e52616e6765735f7374617469635f656e74727900446973747269627574696f6e7a6953 *657475705f496e7374616c6c436d645f7374617469635f656e747279007374675f73656c5f3132 *5f7570645f656e747279004748437a695265616c5f72656d325f636c6f73757265004748437a69 *48616e646c655f77726974655261774275666665725f656e74727900446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f776974684c69625f73727400546578747a *69526561647a694c65785f7a644c723576726134325f656e74727900466f726569676e7a695374 *6f7261626c655f706f6c797a757a64646d706f6b65325f656e7472790044697374726962757469 *6f6e7a694765744f70745f556e7265714f70745f7374617469635f696e666f004748437a69576f *72645f7a657a65345f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f6f7a75415050454e445f636c6f7375726500546578747a695072657474795072696e747a6948 *7567686573504a5f70756e6374756174655f696e666f00446973747269627574696f6e7a695072 *6550726f636573737a69556e6c69745f50726f6772616d5f636c6f737572650044697374726962 *7574696f6e7a6953657475705f57697468416c65785f7374617469635f656e747279006e657742 *434f7a685f66617374004748437a695265616c5f6c766c31365f656e747279004748437a694861 *6e646c655f77616e745772697461626c6548616e646c657a715f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6946696c65506174685f69734162736f6c757465506174685f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c3635 *5f656e747279004748437a69526561645f5a4344526561645f7374617469635f656e7472790044 *6973747269627574696f6e7a69457874656e73696f6e5f456d707479446174614465636c735f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c7235765a5a6c766c33325f696e *666f004748437a695265616c5f7a644c7235315a5a6c766c375f696e666f00546578747a695265 *61647a694c65785f7a644c7268416c657849645f636c6f73757265005f5f737467696e69745f47 *48437a69466c6f61745f005f5f737467696e69745f466f726569676e7a69466f726569676e5074 *725f007274735f6d6b496e74313600446973747269627574696f6e7a6953657475705f7a646774 *6f436f6d70696c6572466c61766f725f636c6f73757265004748437a69526561645f6c766c3237 *5f656e74727900546578747a69526561647a694c65785f7a644c7235794a6c766c37375f636c6f *73757265004748437a6948616e646c655f7a64776175676d656e74494f4572726f725f636c6f73 *757265004748437a695074725f706c75735074725f636c6f7375726500546578747a6952656164 *7a694c65785f7a644c7235774e6135365f636c6f737572650053797374656d7a69446972656374 *6f72795f7a6477676f5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a *6952656164505f7a6457525f656e74727900466f726569676e7a694d61727368616c7a69416c6c *6f635f6c766c325f656e747279006c7365656b36344040474c4942435f322e3100446973747269 *627574696f6e7a695061636b6167654465736372697074696f6e5f63617465676f72795f696e66 *6f00446973747269627574696f6e7a694765744f70745f556e7265714f70745f636f6e5f696e66 *6f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35325f69 *6e666f00446973747269627574696f6e7a6953657475705f48656c70436d645f7374617469635f *696e666f00446973747269627574696f6e7a6953657475705f436f6e666967466c6167735f696e *666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f526573756c745f73 *74617469635f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f7a6477 *6363616c6c315f636c6f737572650053797374656d7a69506f7369787a6954797065735f7a6466 *456e756d435069645f636c6f7375726500446973747269627574696f6e7a6953657475705f436f *6e666967436d645f636c6f73757265004748437a69576f72645f737563634572726f725f636c6f *7375726500446174617a694d617962655f4a7573745f7374617469635f656e7472790044697374 *7269627574696f6e7a6950617273655574696c735f416d6269676f757350617273655f636c6f73 *75726500446973747269627574696f6e7a6953657475705f5072656669785f7374617469635f65 *6e747279004748437a694e756d5f73686f774c6973745f656e74727900466f726569676e7a6953 *746f7261626c655f706f6c797a75706f6b65427974654f6666325f636c6f737572650065786563 *76704040474c4942435f322e30004748437a69494f5f7a644c7239667a7a6c766c31325f696e66 *6f00446973747269627574696f6e7a6953657475705f5769746848617070795f656e7472790066 *7265654861736b656c6c46756e6374696f6e507472004748437a695265616c5f7a644c72353152 *6c766c335f636c6f73757265007374675f7369675f696e7374616c6c00546578747a6952656164 *7a694c65785f4964656e745f636f6e5f696e666f004748437a695265616c5f7a6477615f656e74 *727900446973747269627574696f6e7a6950617273655574696c735f706172736546696c655061 *7468515f636c6f73757265004748437a6948616e646c655f7a647766696c6c5265616442756666 *65724c6f6f705f736c6f77004748437a694c6973745f7a644c7262317072656c7a756c6973747a *757374725f636c6f73757265005f5f737467696e69745f546578747a69506172736572436f6d62 *696e61746f72737a6952656164505f00446973747269627574696f6e7a6950726550726f636573 *737a69556e6c69745f50726f6772616d5f7374617469635f696e666f0053797374656d7a694469 *726563746f72795f6c766c345f696e666f00446973747269627574696f6e7a6953657475705f43 *6f6e666967436d645f7374617469635f696e666f00446973747269627574696f6e7a6956657273 *696f6e5f7a64665265616456657273696f6e5f636c6f73757265004748437a6953686f775f7a64 *4c72315a5a546c766c31315f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f776974684c69625f636c6f73757265004748437a69526561645f7a *6473726561644c6973745072656344656661756c74325f636c6f73757265004748437a69426173 *655f7a64664f72645a4d5a4e5f696e666f005f5f737467696e69745f4748437a695265616c5f00 *446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f77496e636f686572656e74 *496e7374616e6365735f7374617469635f696e666f00446174617a694d617962655f6d61704d61 *7962655f636c6f7375726500446973747269627574696f6e7a6953657475705f636f6d70696c65 *7256657273696f6e5f656e747279004748437a69426173655f6e65496e745f636c6f7375726500 *4748437a695265616c5f7a64777a64737265647563655f636c6f73757265004748437a69494f42 *6173655f7a677a675f696e666f00446973747269627574696f6e7a6953657475705f5769746843 *707068735f7374617469635f656e74727900446973747269627574696f6e7a6953657475705f7a *6467746f436f6e666967466c6167735f636c6f7375726500446973747269627574696f6e7a6950 *617273655574696c735f706172736554657374656457697468515f636c6f737572650044617461 *7a694c6973745f776f7264735f636c6f73757265004748437a695074725f5074725f7374617469 *635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7365744e6f6e42 *6c6f636b696e6746445f656e74727900546578747a69526561647a694c65785f7a644c72357644 *6134345f636c6f7375726500446973747269627574696f6e7a695061636b6167655f706b675665 *7273696f6e5f696e666f007274735f676574546872656164496400546578747a69507265747479 *5072696e747a69487567686573504a5f7a644c723467656c766c31315f696e666f004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f6d6f64756c65506174685f *696e666f00446174617a695479706561626c655f63616368655f696e666f007374675f61705f70 *70705f696e666f00546578747a695072657474795072696e747a69487567686573504a5f7a644c *72346755626573696465315f696e666f004748437a69496e745f7a64646d73686f774c69737432 *5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c *35375f696e666f00446973747269627574696f6e7a6956657273696f6e5f7a646766726f6d4465 *70656e64656e63795f696e666f004748437a69526561645f72656164735f656e74727900474843 *7a69426173655f5a434445715f7374617469635f696e666f004748437a694e756d5f656e756d44 *656c7461546f496e746567657246425f696e666f005f5f737467696e69745f466f726569676e7a *694d61727368616c7a694172726179004748437a6948616e646c655f7a644c724a397374647a75 *666c6167735f696e666f004748437a695265616c5f5a43445265616c5f636f6e5f696e666f0047 *48437a6948616e646c655f6131375f656e74727900446973747269627574696f6e7a6950726550 *726f636573737a69556e6c69745f756e6c69745f636c6f73757265007374675f75745f315f305f *756e7265675f7265740053797374656d7a69506f7369787a69496e7465726e616c735f7a644c72 *37566d6c766c335f656e74727900776f72643634546f496e74656765727a685f66617374004748 *437a69426173655f7a657a65335f656e747279004748437a69494f426173655f45786974457863 *657074696f6e5f636f6e5f696e666f00446973747269627574696f6e7a6953657475705f436f70 *79436d645f7374617469635f656e7472790053797374656d7a69506f7369787a69496e7465726e *616c735f637a7563686d6f645f656e74727900446973747269627574696f6e7a6953696d706c65 *7a695574696c735f72617753797374656d566572626f73655f656e747279004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f7a6467746f5061727365725f636c6f73757265 *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f63686f6963655f *696e666f00446973747269627574696f6e7a6956657273696f6e5f446570656e64656e63795f73 *74617469635f656e747279004748437a6953686f775f7a64737a64646d73686f77335f636c6f73 *7572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7557524f4e4c595f *696e666f00546578747a69526561647a694c65785f7a644c72357a7a5a5a6c766c3130365f636c *6f73757265004748437a6953686f775f7a64737a64646d73686f77345f656e7472790044697374 *7269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f474843466c6167 *5f73727400446973747269627574696f6e7a6956657273696f6e5f496e74657273656374566572 *73696f6e52616e6765735f636f6e5f696e666f006f72496e74656765727a685f66617374004748 *437a6953686f775f6136325f656e747279004748437a69494f426173655f526561645772697465 *48616e646c655f7374617469635f656e747279004748437a6953686f775f73686f775369676e65 *64496e745f636c6f73757265004748437a695265616c5f6469764d6f64325f696e666f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f6d756e63685f636c6f7375 *7265004748437a69496e745f7a74325f696e666f00546578747a69526561647a694c65785f7a64 *4c723576396133395f696e666f004748437a69494f426173655f6c766c33315f656e7472790047 *48437a69496e745f73756363325f696e666f00546578747a695072657474795072696e747a6948 *7567686573504a5f6c766c335f636c6f7375726500546578747a69526561647a694c65785f6c65 *785f656e747279004748437a695265616c5f7a64776469764d6f645f656e74727900446174617a *695475706c655f7a646645715a32545f656e74727900446973747269627574696f6e7a69536574 *75705f576974684873633268735f7374617469635f656e74727900546578747a69526561647a69 *4c65785f7a644c723577426135345f656e747279004748437a6948616e646c655f7a644c726259 *356c766c385f636c6f73757265007374675f61705f375f7570645f696e666f007374675f656e74 *65725f726574004748437a6953686f775f73686f77436861725f696e666f004748437a69556e69 *636f64655f697353706163655f636c6f737572650053797374656d7a694469726563746f72795f *7a644c72396279646573635f656e747279004748437a69546f7048616e646c65725f7a644c7233 *37696c766c395f636c6f73757265004748437a69494f426173655f6132305f636c6f7375726500 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c37355f636c6f *7375726500446973747269627574696f6e7a694765744f70745f7a646766726f6d4f7074446573 *63725f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f *7a644c723468307a647766696c6c4e425f636c6f73757265006578697453746f72616765004748 *437a69494f426173655f4d5661725f7374617469635f656e747279005f5f656e636f6465466c6f *617400446973747269627574696f6e7a6956657273696f6e5f77697468696e52616e67655f656e *747279006d626c6f636b5f6d6170004748437a694e756d5f656e756d46726f6d5468656e5f636c *6f7375726500446973747269627574696f6e7a6953657475705f57697468416c65785f636c6f73 *75726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72346747 *6132385f636c6f73757265004748437a695265616c5f71756f7452656d315f636c6f7375726500 *4748437a69426173655f756e7061636b417070656e6443537472696e677a685f656e747279005a *434d61696e5f6d61696e5f636c6f737572650073696770726f636d61736b4040474c4942435f32 *2e300053797374656d7a69506f7369787a69496e7465726e616c735f61345f656e747279004748 *437a69494f5f7a644c723966726c766c385f636c6f73757265005f5f676d707a5f616464005465 *78747a69526561647a694c65785f7a644c7235755a5a78335f636c6f7375726500466f72656967 *6e7a6953746f7261626c655f706f6c797a757a64646d7065656b325f636c6f7375726500546578 *747a695072657474795072696e747a69487567686573504a5f7a644c7234683266696c6c31315f *696e666f004748437a6948616e646c655f6c766c35335f636c6f73757265004748437a69426173 *655f497a685f7374617469635f656e747279004748437a6953686f775f7a644c72315a5a426c76 *6c325f636c6f73757265004748437a6953686f775f6132395f636c6f73757265004748437a694e *756d5f71756f7452656d496e74656765725f636c6f73757265004748437a6948616e646c655f7a *6477666c757368526561644275666665725f636c6f73757265004748437a6948616e646c655f7a *644c7262583961335f696e666f004748437a694172725f535441727261795f7374617469635f69 *6e666f00546578747a69526561647a694c65785f7a644c723576666134305f636c6f7375726500 *466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c5f696e666f004748437a6952 *65616c5f6c766c395f656e747279004748437a69494f426173655f6131395f696e666f00474843 *7a69426173655f74696d6573496e745f636c6f73757265007374675f494e445f5354415449435f *696e666f00546578747a69526561647a694c65785f7a644c7235766a6c766c32355f696e666f00 *4748437a6953686f775f7a644c72315a5a486c766c355f696e666f004748437a6948616e646c65 *5f7a6477666c757368526561644275666665725f736c6f7700546578747a69526561647a694c65 *785f7a644c723576316c766c32325f696e666f004748437a694e756d5f6a746f737a715f636c6f *7375726500546578747a69526561647a694c65785f7a644c7235744c6133315f636c6f73757265 *006d616b65537461626c655074727a685f66617374005f5f676d707a5f666469765f7172004748 *437a69494f5f6c766c31355f696e666f004748437a69494f426173655f496c6c6567616c4f7065 *726174696f6e5f636c6f73757265004748437a6953686f775f615f636c6f737572650044697374 *7269627574696f6e7a69436f6d7061747a694469726563746f72795f72656d6f76654469726563 *746f72795265637572736976655f656e74727900446973747269627574696f6e7a694c6963656e *73655f7a6467746f4c6963656e73655f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723578566c766c35325f696e666f004748437a694e756d5f7a644c723278766c766c32 *5f656e74727900446973747269627574696f6e7a6956657273696f6e5f4c617465725665727369 *6f6e5f656e7472790070617573654040474c4942435f322e30004748437a694c6973745f7a644c *723272536c766c32395f696e666f00466f726569676e7a6953746f7261626c655f706f6c797a75 *73697a7a654f66325f696e666f00546578747a69526561647a694c65785f50756e635f636f6e5f *696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f726177537973 *74656d457869745f696e666f004748437a69426173655f556e69745f636c6f7375726500466f72 *6569676e7a69437a694572726f725f7a64776363616c6c325f736c6f7700446174617a694d6179 *62655f6d617962655f696e666f007363686564756c6546696e616c697a65727300546578747a69 *526561647a694c65785f7a644c723574706132305f636c6f73757265004748437a69526561645f *7a644c723639666c766c31385f656e747279004748437a69546f7048616e646c65725f7265706f *72744572726f725f656e747279004748437a6948616e646c655f61315f636c6f73757265004748 *437a69426173655f6c766c335f656e747279004748437a694c6973745f627265616b5f696e666f *00546578747a69526561647a694c65785f7a644c723574686131365f636c6f7375726500446973 *747269627574696f6e7a69436f6d7061747a6952656164505f4765745f656e747279004748437a *69496e745f72656d325f696e666f0053797374656d7a69436d645f61315f636c6f737572650047 *48437a694c6973745f7a7a697057697468335f696e666f004748437a695265616c5f7a64776136 *5f636c6f73757265004748437a6953686f775f7a644c72315a5a566c766c31325f636c6f737572 *65004748437a6948616e646c655f68436c6f73657a7568656c705f696e666f004748437a694261 *73655f7a677a675f636c6f7375726500466f726569676e7a694d61727368616c7a69416c6c6f63 *5f6c766c315f656e74727900446973747269627574696f6e7a6953657475705f7061727365476c *6f62616c417267735f656e74727900546578747a69526561647a694c65785f7a644c7235743561 *31305f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f56657273696f *6e5f636f6e5f696e666f005f5f66696e695f61727261795f7374617274006e657741727261797a *685f666173740053797374656d7a69456e7669726f6e6d656e745f676f5f656e747279005f5f73 *7467696e69745f446174617a694368617200446973747269627574696f6e7a6950617273655574 *696c735f72756e505f636c6f7375726500446174617a694c6973745f776f7264735f696e666f00 *4748437a6953686f775f5a434453686f775f636f6e5f696e666f00446973747269627574696f6e *7a6956657273696f6e5f7a6467746f56657273696f6e52616e67655f636c6f7375726500546578 *747a69526561647a694c65785f7a644c723579486c766c37365f636c6f73757265004748437a69 *4572725f7a644c723130706c766c31335f696e666f004748437a695265616c5f71756f7452656d *315f696e666f00546578747a69526561647a694c65785f7a644c723578317832345f636c6f7375 *72650073757370656e6454687265616400446174617a694c6973745f756e6c696e65735f656e74 *72790072616973654173796e63004748437a694c6973745f7a644c723272656c766c395f656e74 *7279004748437a69537461626c655f537461626c655074725f7374617469635f696e666f007374 *675f7570645f6672616d655f365f726574004748437a695265616c5f61395f656e747279004469 *73747269627574696f6e7a6953657475705f7061727365436c65616e417267735f696e666f0047 *48437a69576f72645f7a644c723943366c766c31315f696e666f004748437a694c6973745f7370 *616e5f696e666f004748437a69466c6f61745f467a685f636f6e5f656e74727900446174617a69 *5479706561626c655f7a64776d6b5479436f6e5f656e74727900446973747269627574696f6e7a *6950617273655574696c735f73686f77546573746564576974685f737274004469737472696275 *74696f6e7a69436f6d7061747a694469726563746f72795f636f707946696c655f656e74727900 *66707574634040474c4942435f322e30005f5f676d707a5f746469765f7172004748437a69494f *426173655f6c766c33355f656e7472790053797374656d7a694469726563746f72795f6c766c32 *395f636c6f73757265005f5f6c6962635f6373755f696e6974004748437a69494f426173655f41 *72697468457863657074696f6e5f7374617469635f656e74727900436f6e74726f6c7a694d6f6e *61645f6d61704d5f636c6f73757265004748437a69526561645f61345f696e666f00446174617a *69486173685461626c655f7a64776c676f5f656e74727900446174617a69486173685461626c65 *5f7a647768617368537472696e675f636c6f737572650053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c37355f696e666f004748437a6953686f775f73686f77 *7350726563345f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f53636f *706564547970655661726961626c65735f636c6f73757265004748437a6948616e646c655f6c76 *6c31375f636c6f73757265004748437a69456e756d5f70726564355f636c6f7375726500546578 *747a695072657474795072696e747a69487567686573504a5f636f6c6f6e5f636c6f7375726500 *446973747269627574696f6e7a694765744f70745f52657475726e496e4f726465725f73746174 *69635f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f636f6e7374 *7a75667a75676574666c5f696e666f00546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c7234675761626f7665315f636c6f73757265004748437a694572725f706174 *4572726f725f656e747279004748437a69426173655f7a627a625f656e747279004748437a6945 *6e756d5f656e756d46726f6d546f325f656e747279004748437a69494f426173655f6275665250 *74725f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a646766726f *6d446570656e64656e63795f636c6f737572650053797374656d7a69506f7369787a69496e7465 *726e616c735f7a64776363616c6c32335f656e74727900546578747a695072657474795072696e *747a69487567686573504a5f7a644c72346863676f335f656e7472790053797374656d7a69506f *7369787a69496e7465726e616c735f7a64776363616c6c34395f736c6f77005f5f737467696e69 *745f546578747a69526561647a694c65785f004748437a695265616c5f71756f7452656d325f65 *6e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f656e6442795f *656e74727900446973747269627574696f6e7a6953657475705f576974684873633268735f7374 *617469635f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f64 *69655f656e74727900446973747269627574696f6e7a694c6963656e73655f425344345f636c6f *73757265004748437a694e756d5f707265645f696e666f00546578747a69506172736572436f6d *62696e61746f72737a6952656164505f4c6f6f6b5f7374617469635f696e666f007374675f7365 *715f6672616d655f696e666f00446174617a694d617962655f4a7573745f7374617469635f696e *666f005f5f787374617436344040474c4942435f322e32004748437a694e756d5f7a64646d6d61 *785f696e666f0053797374656d7a69506f7369787a6946696c65735f66696c654d6f64655f696e *666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f73657042795f696e *666f00546578747a69526561647a694c65785f6c65785f696e666f004748437a69494f5f685075 *744275665f696e666f005f5f737467696e69745f4748437a69457863657074696f6e5f00446973 *747269627574696f6e7a695061636b6167655f7a6466526561645061636b6167654964656e7469 *666965725f636c6f7375726500466f726569676e7a69437a694572726f725f7468726f77457272 *6e6f49664d696e75733152657472797a755f696e666f004748437a694572725f6c766c395f636c *6f73757265004748437a6953686f775f6136335f636c6f73757265004748437a69494f42617365 *5f7468726f775f656e74727900446973747269627574696f6e7a6950617273655574696c735f73 *686f774572726f725f737274004748437a69576f72645f66726f6d496e7465676572335f696e66 *6f0053797374656d7a694469726563746f72795f646f657346696c6545786973745f636c6f7375 *7265004748437a6953686f775f73686f774c6973747a757a755f636c6f73757265004748437a69 *4572725f7a644c723130356c766c335f636c6f73757265005f5f737467696e69745f4469737472 *69627574696f6e7a6950617273655574696c7300546578747a695072657474795072696e747a69 *487567686573504a5f7a644c72346861676f325f636c6f73757265004748437a69496e745f4938 *7a685f636f6e5f696e666f00446973747269627574696f6e7a6950726550726f636573737a6955 *6e6c69745f496e636c7564655f636f6e5f696e666f0073687574646f776e4861736b656c6c0044 *6973747269627574696f6e7a6950726550726f636573737a69556e6c69745f7a646766726f6d43 *6c61737369666965645f656e747279004748437a6953686f775f6135325f656e74727900537973 *74656d7a69506f7369787a69496e7465726e616c735f6664547970655f656e747279004748437a *69556e69636f64655f697344696769745f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f736b69705370616365735f656e7472790044697374726962757469 *6f6e7a694765744f70745f7a646766726f6d4f707444657363725f696e666f005f5f737467696e *69745f53797374656d7a6945786974004748437a69496e745f7a6477626f756e646564456e756d *46726f6d5468656e5f656e74727900446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f63634f7074696f6e735f636c6f73757265004748437a6948616e646c655f *6c766c37325f736c6f7700546578747a69526561647a694c65785f7a644c723575586133375f69 *6e666f004748437a694e756d5f5a43444e756d5f7374617469635f696e666f007374675f73656c *5f31315f6e6f7570645f696e666f006d75745f757365725f74696d65004748437a69494f5f6c76 *6c355f636c6f73757265006d626c6f636b735f616c6c6f6361746564007274735f676574507472 *004748437a6948616e646c655f6132355f636c6f737572650053797374656d7a69506f7369787a *69496e7465726e616c735f637a75726d6469725f636c6f73757265004748437a694c6973745f75 *6e7a7a6970335f696e666f004748437a694e756d5f6469764d6f64496e74656765725f656e7472 *7900546578747a695072657474795072696e747a69487567686573504a5f61345f636c6f737572 *65004748437a69494f426173655f757365724572726f725f656e74727900436f6e74726f6c7a69 *4d6f6e61645f5a43444d6f6e6164506c75735f636f6e5f656e7472790053797374656d7a694469 *726563746f72795f6c6f6e677a75706174687a7573697a7a655f656e747279005f5f6273735f73 *74617274004748437a694e756d5f66726f6d496e7465676572315f696e666f0044697374726962 *7574696f6e7a69436f6d7061747a6946696c65506174685f73706c697446696c654578745f656e *747279004748437a69576f72645f7a644c723943386c766c31325f636c6f737572650054657874 *7a69526561647a694c65785f7a644c723576506134365f636c6f73757265004748437a69526561 *6c5f7a6466496e74656772616c496e74656765725f636c6f737572650053797374656d7a69506f *7369787a69496e7465726e616c735f7a64776363616c6c34395f656e747279004748437a694c69 *73745f7a64776c656e5f656e74727900446973747269627574696f6e7a6953657475705f474843 *5f7374617469635f696e666f004748437a6953686f775f6c766c31375f636c6f73757265005465 *78747a69506172736572436f6d62696e61746f72737a6952656164505f7a644c723174736c766c *375f656e74727900446973747269627574696f6e7a6950617273655574696c735f70617273654f *707456657273696f6e5f696e666f004748437a69494f426173655f57726974654d6f64655f636c *6f73757265004748437a69456e756d5f656664496e7446425f736c6f7700446973747269627574 *696f6e7a694c6963656e73655f416c6c52696768747352657365727665645f7374617469635f65 *6e7472790053797374656d7a69494f7a694572726f725f7472795f696e666f0044697374726962 *7574696f6e7a69457874656e73696f6e5f526563757273697665446f5f7374617469635f696e66 *6f005f5f737467696e69745f53797374656d7a69456e7669726f6e6d656e745f006469764d6f64 *496e74656765727a685f6661737400446973747269627574696f6e7a6953696d706c657a695574 *696c735f6d6f64756c65546f46696c65506174685f737274007274735f6576616c4c617a79494f *5f004748437a69576f72645f7a74335f656e74727900466f726569676e7a694d61727368616c7a *6941727261795f7a64777065656b41727261795f656e747279004748437a6948616e646c655f6c *766c31375f696e666f004748437a69494f426173655f6132335f656e74727900446174617a6945 *69746865725f7a646645714569746865725f636c6f7375726500446973747269627574696f6e7a *694765744f70745f52657475726e496e4f726465725f7374617469635f696e666f005379737465 *6d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36355f636c6f7375726500 *4748437a6948616e646c655f6c766c35365f636c6f73757265007374675f4e4f5f46494e414c49 *5a45525f636c6f7375726500446973747269627574696f6e7a69457874656e73696f6e5f466c65 *7869626c65496e7374616e6365735f7374617469635f696e666f004748437a694e756d5f656e75 *6d44656c7461496e74656765725f636c6f73757265004748437a6948616e646c655f6c766c3532 *5f656e74727900436f6e74726f6c7a69457863657074696f6e5f66696e616c6c795f656e747279 *004748437a69496e745f4931367a685f7374617469635f696e666f00546578747a69526561647a *694c65785f5261745f7374617469635f696e666f00546578747a69526561647a694c65785f7a64 *4c7235774c6c766c34305f636c6f73757265004748437a694572725f6469765a5a65726f457272 *6f725f656e747279004748437a6953686f775f7a647773686f774c6974436861725f656e747279 *0053797374656d7a694469726563746f72795f7a644c7239637166696c654e616d65456e64436c *65616e315f636c6f73757265004748437a69526561645f7a6473726561644c6973744465666175 *6c74325f656e747279004748437a694c6973745f7a644c723273796c766c34325f656e74727900 *446973747269627574696f6e7a6950617273655574696c735f416d6269676f757350617273655f *636f6e5f656e74727900446973747269627574696f6e7a6956657273696f6e5f70617273655665 *7273696f6e52616e67655f696e666f006d61696e004748437a6948616e646c655f7a6477666c75 *736857726974654275666665725f736c6f770053797374656d7a694469726563746f72795f7a64 *4c723962457468726f774572726e6f49664d696e7573317a755f656e74727900446174617a6945 *69746865725f4c6566745f636f6e5f696e666f004748437a694e756d5f74696d6573496e746567 *65725f696e666f004748437a69426173655f636f6e73745f656e74727900446973747269627574 *696f6e7a6950617273655574696c735f7a6467746f5374616e7a7a614669656c645f696e666f00 *446973747269627574696f6e7a6953696d706c657a695574696c735f7769746854656d7046696c *655f737274004748437a69494f426173655f6c766c32315f636c6f7375726500476574526f6f74 *73007374675f61705f7070707070705f72657400446973747269627574696f6e7a6953696d706c *657a695574696c735f646f74546f5365705f696e666f0053797374656d7a69506f7369787a6949 *6e7465726e616c735f6f7a7543524541545f696e666f004748437a69576f72645f577a685f7374 *617469635f696e666f00446973747269627574696f6e7a6950617273655574696c735f73686f77 *4572726f725f636c6f7375726500546578747a69526561647a694c65785f7a644c7235776a6135 *315f696e666f004748437a69526561645f7a6473726561644c69737444656661756c74345f656e *74727900446973747269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e7354 *6f4e4843466c61675f656e74727900446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f746573746564576974685f656e74727900446973747269627574696f6e7a *6953657475705f48656c70436d645f636c6f73757265007374675f626c6f636b5f7075746d7661 *7200446973747269627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e *6765735f7374617469635f656e74727900546578747a69526561647a694c65785f7a644c723577 *526c766c34315f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65 *506174685f6d6b536561726368506174685f696e666f00446973747269627574696f6e7a69436f *6d7061747a6952656164505f72656164537a75746f7a75505f636c6f73757265004748437a6949 *4f5f6c766c32335f636c6f73757265004748437a694c6973745f7a644c7232726d6c766c31335f *636c6f7375726500446973747269627574696f6e7a694765744f70745f7a646766726f6d4f7074 *4b696e645f656e747279004748437a6948616e646c655f68436c6f73657a7568656c705f636c6f *73757265004748437a694c6973745f7a644c723271556c766c385f656e74727900446973747269 *627574696f6e7a6953657475705f7061727365436f6e666967757265417267735f656e74727900 *546578747a69526561647a694c65785f7a644c723579746c766c36395f636c6f73757265004748 *437a695265616c5f7a6477615f636c6f73757265004748437a6953686f775f7a644c72315a5a46 *6c766c345f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f70 *617273654d6f64756c654e616d65515f636c6f73757265004748437a6948616e646c655f776974 *6848616e646c657a757a757a715f636c6f73757265004748437a69494f426173655f6c766c3238 *5f656e747279004748437a69494f426173655f6132305f656e747279007374675f73656c5f3133 *5f7570645f696e666f004748437a6953686f775f6131325f636c6f7375726500696e6974446566 *61756c7448616e646c65727300546578747a695072657474795072696e747a6948756768657350 *4a5f7a644c7234674b6e696c426573696465315f656e74727900446973747269627574696f6e7a *69436f6d7061747a6952656164505f7365704279315f636c6f73757265004748437a6942617365 *5f756e7061636b43537472696e677a685f636c6f73757265004748437a69494f5f6c766c5f656e *74727900446973747269627574696f6e7a6953696d706c657a695574696c735f66696e64486f6f *6b65645061636b616765446573635f696e666f004748437a6948616e646c655f6132355f696e66 *6f00546578747a69526561647a694c65785f7a644c72354146626f64795f696e666f004748437a *6948616e646c655f6f70656e46645f656e747279005f5f737467696e69745f4748437a69417272 *00446973747269627574696f6e7a6953657475705f486164646f636b436d645f7374617469635f *656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *70617273654465736372697074696f6e5f7372746400446973747269627574696f6e7a69566572 *73696f6e5f7a646766726f6d56657273696f6e5f656e747279004748437a694e756d5f61627331 *5f696e666f004748437a6948616e646c655f7a644c724a726d6b46696c6548616e646c655f696e *666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f6d616e79315f636c *6f73757265007374675f67635f766f69645f72657400546578747a69526561647a694c65785f7a *644c7235754a6c766c31385f636c6f73757265004748437a69494f426173655f6132375f696e66 *6f004748437a69426173655f5a30545f636c6f737572655f74626c00446973747269627574696f *6e7a6950726550726f636573737a69556e6c69745f50726f6772616d5f696e666f004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f726561645061636b616765 *4465736372697074696f6e5f696e666f004748437a694c6973745f74616b655f636c6f73757265 *004748437a69494f426173655f4475706c657848616e646c655f636f6e5f656e74727900474843 *7a69426173655f756e7061636b43537472696e67557466387a685f696e666f00546578747a6950 *72657474795072696e747a69487567686573504a5f7a647766696c6c315f656e74727900546578 *747a695072657474795072696e747a69487567686573504a5f7a644c72346865676f345f656e74 *7279004748437a694c6973745f616e795f656e74727900446973747269627574696f6e7a694578 *74656e73696f6e5f556e736166654f7665726c617070696e67496e7374616e6365735f73746174 *69635f696e666f00546578747a69526561647a694c65785f7a644c723576426c766c32385f656e *74727900466f726569676e7a69437a69537472696e675f7769746843537472696e674c656e5f63 *6c6f7375726500546578747a69526561647a694c65785f53796d626f6c5f636f6e5f696e666f00 *4748437a695265616c5f6c766c5f636c6f7375726500546578747a69526561647a694c65785f7a *644c723541446c65785374724974656d5f636c6f73757265007374675f6f72363400546578747a *69526561647a694c65785f7a644c723579546c766c38325f636c6f737572650073657475705274 *73466c61677300546578747a69526561647a694c65785f7a644c723579526c766c38315f636c6f *73757265005f5f737467696e69745f4748437a695265616c004748437a69556e69636f64655f74 *6f4c6f7765725f696e666f005f5f737467696e69745f446973747269627574696f6e7a69476574 *4f707400466f726569676e7a69437a694572726f725f7468726f774572726e6f49664d696e7573 *317a755f696e666f005f5f737467696e69745f436f6e74726f6c7a694d6f6e6164007374675f61 *705f315f7570645f656e74727900756e626c6f636b4173796e63457863657074696f6e737a685f *6661737400446973747269627574696f6e7a6956657273696f6e5f496e74657273656374566572 *73696f6e52616e6765735f7374617469635f696e666f004748437a695265616c5f7a644c723532 *316c766c385f656e74727900546578747a695072657474795072696e747a69487567686573504a *5f4368725f7374617469635f656e747279004748437a694e756d5f4a7a685f7374617469635f69 *6e666f00546578747a69526561647a694c65785f7a644c723575466133345f696e666f00474843 *7a69494f426173655f4275666665724c6973744e696c5f7374617469635f696e666f004748437a *6953686f775f7a644c72315a5a4c6c766c375f696e666f004748437a694c6973745f66696c7465 *725f636c6f73757265004748437a6948616e646c655f7a644c724a726d6b46696c6548616e646c *655f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776c766c *5f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f6d6b *4c69624e616d655f636c6f73757265004748437a6953686f775f6c766c31335f656e7472790044 *6973747269627574696f6e7a694765744f70745f4f70744172675f636f6e5f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f63686f6963655f656e74727900 *446973747269627574696f6e7a6953657475705f436f6d70696c65725f636f6e5f696e666f0069 *6e697441646a7573746f7200546578747a69526561647a694c65785f7a644c723578396c766c34 *345f696e666f00546578747a69526561647a694c65785f7a644c7235743361395f636c6f737572 *65004748437a6948616e646c655f7a644c726330427a647768616e646c6546696e616c697a7a65 *725f696e666f004748437a694e756d5f696e746567657232496e745f656e747279004748437a69 *494f426173655f4275666665725f636f6e5f656e74727900546578747a69507265747479507269 *6e747a69487567686573504a5f4368725f636f6e5f656e7472790053797374656d7a6944697265 *63746f72795f6372656174654469726563746f72795f656e74727900446973747269627574696f *6e7a6950726550726f636573737a69556e6c69745f436f6d6d656e745f7374617469635f656e74 *7279004f75744f6648656170486f6f6b007374675f73656c5f305f6e6f7570645f696e666f0044 *6973747269627574696f6e7a69436f6d7061747a694469726563746f72795f72656d6f76654469 *726563746f72795265637572736976655f636c6f73757265004748437a695265616c5f71756f74 *325f636c6f73757265004748437a6953686f775f6137305f636c6f737572650053797374656d7a *69457869745f61315f636c6f7375726500446973747269627574696f6e7a6953657475705f4865 *6c70466c61675f7374617469635f656e747279004748437a69546f7048616e646c65725f6b5f69 *6e666f004748437a694c6973745f7a644c7262317072656c7a756c6973747a757374725f656e74 *7279004748437a69426173655f6c74496e745f696e666f004748437a69426173655f497a685f63 *6f6e5f656e74727900446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6d61696e7461696e65725f636c6f7375726500446973747269627574696f6e7a69536574 *75705f5769746843707068735f696e666f0053797374656d7a69506f7369787a69496e7465726e *616c735f7a64776363616c6c31365f696e666f004748437a69496e745f71756f7452656d325f65 *6e74727900446973747269627574696f6e7a6956657273696f6e5f416e7956657273696f6e5f73 *74617469635f656e747279005f5f737467696e69745f4748437a6953686f77004748437a69496e *745f7a737a65335f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f *7a644c7237566d6c766c335f696e666f005f5f6c6962635f73746172745f6d61696e4040474c49 *42435f322e3000446973747269627574696f6e7a69436f6d7061747a6952656164505f73657042 *79315f656e7472790072616973654040474c4942435f322e30007374675f454e445f54534f5f51 *554555455f636c6f7375726500446973747269627574696f6e7a6953657475705f7a646653686f *77436f6d70696c65725f636c6f7375726500446973747269627574696f6e7a6953696d706c657a *695574696c735f7374726970436f6d6d656e74735f73727400446973747269627574696f6e7a69 *436f6d7061747a6952656164505f6d756e6368315f636c6f73757265004748437a695265616c5f *72656d315f696e666f004748437a69456e756d5f7a644c723979676f7a75646e7a75696e747a75 *66625f656e74727900446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6578654d6f64756c65735f696e666f004748437a69494f426173655f4578697445786365 *7074696f6e5f7374617469635f656e747279004748437a69426173655f45515f7374617469635f *656e74727900446973747269627574696f6e7a69457874656e73696f6e5f4350505f7374617469 *635f696e666f004748437a69426173655f7a645f636c6f73757265004748437a69494f42617365 *5f6c766c32355f696e666f00546578747a69526561647a694c65785f7a644c7235735a5a76616c *315f696e666f00546578747a69526561647a694c65785f7a644c72354146626f64795f656e7472 *79004748437a694e756d5f6e6567617465496e74656765725f656e74727900546578747a695265 *61647a694c65785f7a644c723578666c766c34355f696e666f00546578747a69526561647a694c *65785f7a644c723577766135335f696e666f00446973747269627574696f6e7a6956657273696f *6e5f4c6174657256657273696f6e5f696e666f004748437a694e756d5f737563635f656e747279 *00466f726569676e7a69437a694572726f725f7468726f774572726e6f49664d696e7573315f63 *6c6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164505f64 *6973636172645f656e74727900446174617a694c6973745f6c696e65735f696e666f00666f726b *50726f6365737300546578747a69526561647a694c65785f7a644c723575526c766c32305f636c *6f737572650053797374656d7a69436d645f72617753797374656d5f696e666f00446973747269 *627574696f6e7a69457874656e73696f6e5f48657265446f63756d656e74735f7374617469635f *656e74727900446973747269627574696f6e7a6953657475705f636f6e66696748617070795f65 *6e747279005f5f737467696e69745f446973747269627574696f6e7a69457874656e73696f6e00 *546578747a69526561647a694c65785f7a644c723578446c766c34395f636c6f73757265005f5f *676d707a5f746469765f72005f5f696e69745f61727261795f656e640044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f6275696c64446570656e64735f696e66 *6f004748437a69426173655f496e725f7374617469635f656e7472790044697374726962757469 *6f6e7a6953657475705f436d645f7374617469635f696e666f00546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c72346838676f315f696e666f004469737472696275 *74696f6e7a6953657475705f5265676973746572436d645f656e747279004748437a694c697374 *5f7a644c7232714f6c766c355f656e7472790053797374656d7a69506f7369787a69496e746572 *6e616c735f7a64776363616c6c33345f696e666f004748437a69494f5f7a6477636f6d6d697442 *75666665727a715f696e666f004748435f5a434352657475726e61626c655f7374617469635f69 *6e666f004748437a695265616c5f7a64737a765f636c6f7375726500446973747269627574696f *6e7a69436f6d7061747a6952656164505f6d616e795f656e747279004748437a694e756d5f7a6c *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f556e *696f6e5f636f6e5f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f46 *756e6374696f6e616c446570656e64656e636965735f7374617469635f656e7472790044697374 *7269627574696f6e7a69436f6d7061747a6952656164505f72656164537a75746f7a75505f696e *666f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f73706c6974 *46696c654578745f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c *735f7a64776363616c6c31365f656e74727900446973747269627574696f6e7a69436f6d706174 *7a694469726563746f72795f676574486f6d654469726563746f72795f73727400446973747269 *627574696f6e7a694765744f70745f4f7074696f6e5f636f6e5f656e747279004748437a694861 *6e646c655f7a644c72625a5a376c766c34305f696e666f004748437a69426173655f636f6d7061 *7265496e747a685f636c6f73757265004748437a6948616e646c655f6c766c345f636c6f737572 *65004748437a694c6973745f7265706561745f696e666f00446973747269627574696f6e7a6950 *617273655574696c735f416d6269676f757350617273655f636f6e5f696e666f007374675f7365 *6c5f385f6e6f7570645f656e74727900546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c72346863676f335f696e666f004748437a694c6973745f64726f705f656e74 *7279004748437a69426173655f47545f7374617469635f696e666f005f5f737467696e69745f44 *6973747269627574696f6e7a6950726550726f636573737a69556e6c6974004748437a69546f70 *48616e646c65725f7a644c723337616c766c355f736c6f7700446973747269627574696f6e7a69 *53657475705f5769746848617070795f7374617469635f656e747279007969656c647a685f6661 *73740053797374656d7a69494f5f7075745374725f656e747279004748437a69494f426173655f *7a647773686f777350726563325f656e747279004748437a69456e756d5f66726f6d456e756d34 *5f696e666f004748437a6953686f775f7a647773686f775369676e6564496e745f696e666f0047 *48437a694c6973745f7a644c723272796c766c31395f636c6f73757265007374675f454e445f4d *55545f4c4953545f636c6f73757265004748437a694e756d5f7a675f636c6f7375726500474843 *7a69494f5f7a64777772697465426c6f636b735f636c6f73757265007374675f63746f695f7265 *745f46315f696e666f00546578747a69526561647a694c65785f7a644c723576446134345f696e *666f004748437a69494f426173655f6861547970655f636c6f7375726500546578747a69526561 *647a694c65785f6137305f636c6f73757265004748437a694e756d5f7a737a655f656e74727900 *4748437a69494f426173655f627566575074725f636c6f737572650053797374656d7a69446972 *6563746f72795f7a644c723962437a64776c6f6f705f656e74727900546578747a69526561647a *694c65785f7a644c723574486132395f656e747279004748437a69494f5f6c766c355f656e7472 *7900446973747269627574696f6e7a6950617273655574696c735f46726f6d537472696e675f73 *74617469635f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f657874 *656e73696f6e73546f474843466c61675f636c6f73757265004748437a69556e69636f64655f69 *73416c7068615f656e747279004748437a69494f426173655f686561704f766572666c6f775f63 *6c6f73757265004748437a694e756d5f7a64664f7264496e74656765725f636c6f737572650047 *48437a6948616e646c655f7769746848616e646c657a715f656e747279004748437a69494f4261 *73655f6861547970655f656e74727900466f726569676e7a6953746f7261626c655f706f6c797a *75616c69676e6d656e74325f656e747279004748437a694572725f7a644c723130356c766c335f *656e747279004748437a69526561645f5a4344526561645f636f6e5f656e747279004469737472 *69627574696f6e7a695061636b6167655f7a646653686f775061636b6167654964656e74696669 *65725f656e74727900446973747269627574696f6e7a6953657475705f436f6e666967466c6167 *735f7374617469635f696e666f00446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f45786563757461626c655f7374617469635f656e747279004748437a694e75 *6d5f7a644c723278426c766c355f696e666f004748437a69496e745f676f5f636c6f7375726500 *446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f756e6c69745f73 *727400446973747269627574696f6e7a694765744f70745f4f70744572725f7374617469635f69 *6e666f004748437a694e756d5f7a644c723278726c766c5f696e666f0044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f63634f7074696f6e735f656e74727900 *4748437a69556e69636f64655f7a64776973416c7068615f636c6f737572650044697374726962 *7574696f6e7a6950617273655574696c735f706172736551756f7465645f696e666f0044697374 *7269627574696f6e7a694c6963656e73655f7a646766726f6d4c6963656e73655f656e74727900 *546578747a69506172736572436f6d62696e61746f72737a6952656164505f7a644c7231746d6c *766c345f656e747279004748437a69496e745f7a64777a64646d656e756d46726f6d5468656e54 *6f5f696e666f00546578747a69526561647a694c65785f496e745f636f6e5f656e747279004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a6467746f4c6962 *726172795f636c6f73757265004748437a69576f72645f7a64646d73686f774c697374335f656e *747279004748437a69494f5f7a6477685075744275667a715f736c6f7700446973747269627574 *696f6e7a6950617273655574696c735f4e6f50617273655f7374617469635f696e666f005f5f73 *7467696e69745f446174617a6944796e616d69635f0053797374656d7a694469726563746f7279 *5f6c766c32335f636c6f7375726500436f6e74726f6c7a694d6f6e61645f756e6c6573735f656e *74727900466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c315f696e666f0047 *48437a694172725f535441727261795f7374617469635f656e7472790044697374726962757469 *6f6e7a6950617273655574696c735f6f7074734669656c645f696e666f007374675f494e445f35 *5f696e666f004748437a695265616c5f7a647766315f656e747279004748437a69494f5f6c766c *31385f696e666f00546578747a69506172736572436f6d62696e61746f72737a6952656164505f *6c766c335f636c6f7375726500546578747a69526561647a694c65785f7a644c72357478613234 *5f636c6f73757265004748437a69496e745f626f756e646564456e756d46726f6d5468656e5f63 *6c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e *5f7a6466526561645061636b6167654465736372697074696f6e5f636c6f737572650054657874 *7a69526561647a694c65785f7a644c723578336c766c34335f636c6f7375726500446973747269 *627574696f6e7a6956657273696f6e5f7a646766726f6d446570656e64656e63795f656e747279 *007374675f494e445f345f696e666f00446973747269627574696f6e7a6950617273655574696c *735f46726f6d537472696e675f656e74727900446973747269627574696f6e7a695061636b6167 *655f706b674e616d655f656e747279004748437a69546f7048616e646c65725f7265706f727445 *72726f725f696e666f007374675f7570645f6672616d655f726574007374675f67635f66315f69 *6e666f004748437a694c6973745f6c6173745f656e74727900446973747269627574696f6e7a69 *53696d706c657a695574696c735f6d61796265457869745f737274004748437a694e756d5f646e *7a7566625f696e666f005f5f737467696e69745f546578747a69506172736572436f6d62696e61 *746f72737a6952656164507265635f00446973747269627574696f6e7a6953657475705f487567 *73466c61675f7374617469635f656e74727900546578747a69526561647a694c65785f7a644c72 *3578566c766c35325f656e747279004748437a69496e745f676f5f656e747279004748437a6946 *6c6f61745f7a64777a6473726f756e64335f636c6f73757265004748437a694572725f6c766c37 *5f636c6f7375726500446973747269627574696f6e7a6953657475705f4f74686572436f6d7069 *6c65725f7374617469635f656e7472790053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c33335f656e7472790053797374656d7a69506f7369787a6946696c65 *735f73657446696c654d6f64655f696e666f004748437a69494f426173655f426c6f636b427566 *666572696e675f7374617469635f656e747279004748437a6953686f775f7a644c72315a5a4e6c *766c385f656e747279004748437a69494f5f6c766c32335f736c6f77004748437a6953686f775f *7a644c72315a5a506c766c395f696e666f004748437a69494f426173655f454f465f636c6f7375 *726500546578747a695072657474795072696e747a69487567686573504a5f4e6573745f737461 *7469635f656e747279004748437a694c6973745f6e756c6c5f696e666f00446973747269627574 *696f6e7a695061636b6167655f7a6466526561645061636b6167654964656e7469666965725f73 *727400446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a6467 *66726f6d4c6962726172795f656e747279004748437a695265616c5f646976315f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c72346836676f5f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f5061 *636b6167654465736372697074696f6e5f636c6f7375726500446973747269627574696f6e7a69 *53657475705f4275696c64436d645f7374617469635f656e747279004748437a69494f42617365 *5f6c766c33305f656e74727900446973747269627574696f6e7a6953657475705f436f6e666967 *466c6167735f636c6f73757265004748437a6948616e646c655f696f657a75636c6f7365644861 *6e646c655f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f63 *7a756765747069645f696e666f004748437a69426173655f5a435f636f6e5f656e747279007274 *735f6d6b496e743332004748437a69546f7048616e646c65725f6c766c345f656e747279004469 *73747269627574696f6e7a6953657475705f4e6863466c61675f636c6f7375726500466f726569 *676e7a69437a694572726f725f7468726f774572726e6f496652657472795f696e666f00446973 *747269627574696f6e7a6956657273696f6e5f76657273696f6e546167735f656e747279007374 *61745f7374617274496e6974004748437a69494f5f7a644c72444a685075746342756666657265 *645f696e666f00546578747a695072657474795072696e747a69487567686573504a5f41626f76 *655f636f6e5f656e747279004748437a69426173655f756e7061636b43537472696e677a685f69 *6e666f00546578747a69526561647a694c65785f7a644c723579646c766c36315f636c6f737572 *65004748437a6948616e646c655f6c766c35335f656e74727900446973747269627574696f6e7a *6956657273696f6e5f5468697356657273696f6e5f7374617469635f696e666f00546578747a69 *526561647a694c65785f7a644c723577486135355f696e666f00446973747269627574696f6e7a *69436f6d7061747a6946696c65506174685f6a6f696e50617468735f636c6f7375726500474843 *7a69494f426173655f696f457863657074696f6e5f636c6f73757265006e65774d5661727a685f *666173740053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33 *365f736c6f77004748437a694e756d5f616273325f696e666f00446973747269627574696f6e7a *69457874656e73696f6e5f466f726569676e46756e6374696f6e496e746572666163655f737461 *7469635f696e666f004748437a69546f7048616e646c65725f7a644c723337616c766c355f656e *74727900546578747a69526561647a694c65785f7a644c723574546c766c31305f656e74727900 *4748437a6948616e646c655f6132365f636c6f73757265004748437a6953686f775f6c766c3138 *5f636c6f73757265004748437a6953686f775f6135385f656e747279004748437a6953686f775f *6136345f636c6f73757265004748437a69496e745f7a64646d73686f774c697374325f656e7472 *7900446973747269627574696f6e7a695061636b6167655f5061636b6167654964656e74696669 *65725f636f6e5f656e747279007374675f494e445f325f696e666f00546578747a69526561647a *694c65785f7a644c72357a7a646c766c38365f696e666f004748437a69426173655f7a64646d7a *677a655f696e666f00446973747269627574696f6e7a6950617273655574696c735f7a64676672 *6f6d5061727365526573756c745f696e666f00446973747269627574696f6e7a6953657475705f *436f7079436d645f636f6e5f696e666f00757064617465537461626c655074725461626c650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f6f7074696f6e5f696e666f00 *53797374656d7a694469726563746f72795f6c766c32325f656e747279007265616c6c6f634040 *474c4942435f322e3000726573657447656e53796d5a680072656d496e74656765727a685f6661 *7374004748437a69494f426173655f7a647773686f777350726563325f636c6f73757265004748 *437a6953686f775f6137325f696e666f00446174617a694d617962655f6c766c315f696e666f00 *4748437a69494f426173655f6c766c32395f696e666f004748437a69576f72645f737563634572 *726f725f656e747279004748437a69546f7048616e646c65725f7265706f7274537461636b4f76 *6572666c6f775f636c6f73757265004748437a6948616e646c655f6175676d656e74494f457272 *6f725f656e747279007374675f72656d496e743634004748437a69426173655f7a7a65726f496e *745f636c6f73757265004748437a69426173655f5a435f7374617469635f656e747279005f5f73 *7467696e69745f466f726569676e7a69437a69537472696e675f004748437a69494f426173655f *6c766c32365f656e747279004748437a6948616e646c655f696f657a75636c6f73656448616e64 *6c655f736c6f7700446973747269627574696f6e7a69457874656e73696f6e5f4d756c74695061 *72616d54797065436c61737365735f636c6f73757265004748437a694c6973745f7375625f696e *666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a646766726f6d50 *5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7265616453 *7a75746f7a75505f656e74727900466f726569676e7a69437a69537472696e675f776974684353 *7472696e674c656e5f656e747279004748437a694e756d5f6c69745f696e666f00546578747a69 *526561647a694c65785f7a644c723578666c766c34355f636c6f73757265004469737472696275 *74696f6e7a6953657475705f436f6e666967466c6167735f636f6e5f696e666f00446973747269 *627574696f6e7a6953657475705f5769746848617070795f636c6f737572650053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c32305f696e666f004748437a69 *456e756d5f70726564355f656e74727900446973747269627574696f6e7a69436f6d7061747a69 *52656164505f656e644279315f636c6f737572650053797374656d7a69494f7a694572726f725f *6c766c5f656e7472790053797374656d7a69506f7369787a6946696c65735f73657446696c654d *6f64655f636c6f73757265004748437a6953686f775f6135365f696e666f004748437a69457863 *657074696f6e5f6361746368457863657074696f6e5f636c6f73757265005f5f737467696e6974 *5f446174617a69436861725f004748437a694c6973745f7a7a6970576974685f656e7472790054 *6578747a69526561647a694c65785f4964656e745f7374617469635f656e747279004748437a69 *456e756d5f656674496e7446425f636c6f73757265004748437a694c6973745f6c766c31325f65 *6e747279006177616b656e426c6f636b6564517565756500446174617a695479706561626c655f *6d6b41707054795f656e747279004748437a69494f426173655f4475706c657848616e646c655f *636f6e5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c36395f696e666f00466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c31 *5f636c6f73757265006d696e7573496e74656765727a685f66617374005f5f737467696e69745f *546578747a695072657474795072696e747a69487567686573504a004748437a69426173655f67 *65745461675f696e666f00446973747269627574696f6e7a6956657273696f6e5f7a646766726f *6d56657273696f6e52616e67655f656e747279004748437a69466c6f61745f7a64777a64737072 *6f7065724672616374696f6e5f636c6f73757265004748437a69526561645f6c6578505f696e66 *6f00446174617a695479706561626c655f7a64776d6b41707054795f636c6f7375726500474843 *7a694c6973745f72657065617446425f656e7472790053797374656d7a69456e7669726f6e6d65 *6e745f676f325f636c6f73757265004748437a6953686f775f73686f77537472696e675f656e74 *7279004748437a695265616c5f6c766c355f656e747279004748437a6948616e646c655f696f65 *7a756e6f745265616461626c655f696e666f004748437a69496e745f7a644c723945436c766c31 *355f636c6f73757265004748437a69494f426173655f7a677a675f656e74727900446973747269 *627574696f6e7a6950617273655574696c735f706172736556657273696f6e52616e6765515f65 *6e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f697350 *617468536570617261746f725f656e74727900446973747269627574696f6e7a6953657475705f *436f6e666967436d645f636f6e5f696e666f00446174617a694d617962655f4a7573745f636f6e *5f696e666f004748437a69494f5f7a644c723966646c766c315f736c6f7700546578747a695061 *72736572436f6d62696e61746f72737a6952656164505f6d706c75735f696e666f005f5f737467 *696e69745f4748437a69537461626c655f004d61696e5f6d61696e5f7372740044697374726962 *7574696f6e7a69436f6d7061747a694469726563746f72795f6372656174654469726563746f72 *7949664d697373696e675f737274004748437a694e756d5f7a64646d73686f775f696e666f0047 *48437a69494f5f6c766c5f696e666f0053797374656d7a69494f5f777269746546696c655f656e *747279004748437a69456e756d5f656674496e7446425f736c6f7700446973747269627574696f *6e7a69457874656e73696f6e5f457874656e73696f6e5f636c6f737572655f74626c0044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f6d61696e7461696e6572 *5f656e747279004748437a694e756d5f6a746f735f696e666f004748437a69496e745f6c766c32 *365f696e666f004748437a69526561645f6c766c31335f696e666f004748437a694c6973745f69 *6e69745f656e747279005f5f737467696e69745f53797374656d7a69506f7369787a6954656d70 *5f00446973747269627574696f6e7a6953657475705f496e7374616c6c436d645f656e74727900 *4748437a69494f426173655f5265736f7572636556616e69736865645f7374617469635f656e74 *7279004748437a69494f426173655f496e7465727275707465645f7374617469635f696e666f00 *466f726569676e7a6953746f7261626c655f706f6c797a757a64646d706f6b65325f696e666f00 *446973747269627574696f6e7a69457874656e73696f6e5f52616e6b4e54797065735f73746174 *69635f696e666f004748437a694c6973745f616c6c5f696e666f00546578747a69506172736572 *436f6d62696e61746f72737a6952656164505f7a644c7231746d6c766c345f636c6f7375726500 *446174617a694d617962655f4e6f7468696e675f7374617469635f696e666f0044697374726962 *7574696f6e7a6950617273655574696c735f73696e676c655374616e7a7a615f636c6f73757265 *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f7a644c72317473 *6c766c375f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7557 *524f4e4c595f656e74727900446174617a694569746865725f52696768745f636f6e5f696e666f *00446973747269627574696f6e7a695061636b6167655f73686f775061636b61676549645f696e *666f0053797374656d7a69457869745f6c766c335f636c6f7375726500546578747a6950726574 *74795072696e747a69487567686573504a5f7a644c72346865676f345f696e666f00436f6e7472 *6f6c7a694d6f6e61645f6c6966744d325f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f7a64664d6f6e6164506c75735061727365725f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f637a75756e6c696e6b5f636c6f73757265 *00446973747269627574696f6e7a6953696d706c657a695574696c735f66696e64486f6f6b6564 *5061636b616765446573635f656e74727900466f726569676e7a69437a694572726f725f7a6477 *6363616c6c315f656e747279004748437a69426173655f7a64646d7a677a675f696e666f004469 *73747269627574696f6e7a6950726550726f636573737a69556e6c69745f496e636c7564655f69 *6e666f004748437a69556e69636f64655f6973416c7068614e756d5f636c6f7375726500446973 *747269627574696f6e7a6950617273655574696c735f73686f7746726565546578745f636c6f73 *75726500646174615f7374617274007274735f6d6b426f6f6c004748437a69526561645f61355f *636c6f737572650053797374656d7a69494f5f7075745374724c6e5f656e747279004748437a69 *496e745f6c766c31375f656e74727900446973747269627574696f6e7a69436f6d7061747a6952 *656164505f636861696e6c315f636c6f73757265007374675f696e6974004748437a695265616c *5f7a64646d73686f774c6973745f636c6f7375726500446174617a69486173685461626c655f48 *545f636f6e5f656e74727900446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f65787472614c6962446972735f636c6f737572650053797374656d7a6944697265 *63746f72795f67657443757272656e744469726563746f72795f696e666f004469737472696275 *74696f6e7a694765744f70745f4f7074696f6e5f636f6e5f696e666f0053797374656d7a694469 *726563746f72795f7468726f774572726e6f49664d696e75733152657472797a755f696e666f00 *446973747269627574696f6e7a6950617273655574696c735f73686f7746726565546578745f69 *6e666f00446973747269627574696f6e7a6956657273696f6e5f6f724c6174657256657273696f *6e5f636c6f73757265004748437a695265616c5f5a437a765f636f6e5f656e747279004748437a *69494f426173655f6661696c494f5f656e747279005f5f737467696e69745f53797374656d7a69 *506f7369787a6950726f636573735f004748437a695265616c5f5a4344496e74656772616c5f73 *74617469635f656e747279004748437a69526561645f7a6466526561644d617962655f636c6f73 *75726500446973747269627574696f6e7a6953657475705f706172736550726f6772616d617469 *6361417267735f737274004748437a69496e745f4933327a685f7374617469635f696e666f0044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73746162696c69 *74795f636c6f7375726500446973747269627574696f6e7a6953657475705f4842435f636c6f73 *75726500446174617a694c6973745f696e7465727370657273655f636c6f737572650044617461 *7a695479706561626c655f7a657a65325f656e74727900446973747269627574696f6e7a694765 *744f70745f556e7265714f70745f696e666f007761697457726974657a685f6661737400474843 *7a69496e745f626f756e646564456e756d46726f6d5f696e666f00446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f6c69624d6f64756c65735f656e7472790044 *6973747269627574696f6e7a6953657475705f7a6467746f436f6d70696c65725f636c6f737572 *6500446973747269627574696f6e7a69457874656e73696f6e5f5479706553796e6f6e796d496e *7374616e6365735f636c6f73757265004748437a6953686f775f6133365f656e74727900546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f646973636172645f696e66 *6f00446973747269627574696f6e7a6950617273655574696c735f7a646766726f6d504572726f *725f656e74727900546578747a69526561647a694c65785f7a644c7235735a5a76616c315f636c *6f7375726500446973747269627574696f6e7a6950617273655574696c735f5061727365466169 *6c65645f656e74727900446973747269627574696f6e7a6953657475705f436f7079436d645f65 *6e747279004748437a69494f426173655f457869744661696c7572655f636f6e5f656e74727900 *4748437a6953686f775f6134315f636c6f7375726500446973747269627574696f6e7a69436f6d *7061747a6952656164505f6d756e6368315f696e666f00436f6e74726f6c7a694d6f6e61645f77 *68656e5f656e74727900446973747269627574696f6e7a6953657475705f7a646653686f77466c *61675f696e666f00546578747a69526561647a694c65785f7a644c72357a7a3369734964664368 *61725f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6c766c3135 *5f636c6f73757265004748437a6948616e646c655f6c766c35325f696e666f00466f726569676e *7a6953746f7261626c655f7a646653746f7261626c655074725f636c6f73757265004748437a69 *494f426173655f486561704f766572666c6f775f7374617469635f656e74727900446973747269 *627574696f6e7a6953657475705f486164646f636b436d645f636c6f73757265006973446f7562 *6c654e656761746976655a65726f004748437a69494f426173655f7a644c7236624861315f656e *747279004748437a69576f72645f7a737a65345f696e666f0053797374656d7a69506f7369787a *69496e7465726e616c735f7a64776363616c6c32355f656e74727900446973747269627574696f *6e7a6950617273655574696c735f73696d706c654669656c645f696e666f004748437a69456e75 *6d5f656e756d46726f6d325f656e74727900446973747269627574696f6e7a69457874656e7369 *6f6e5f466c657869626c65496e7374616e6365735f636c6f73757265004748437a694578636570 *74696f6e5f6361746368457863657074696f6e5f656e747279004748437a6953686f775f7a644c *72315a5a466c766c345f696e666f00446973747269627574696f6e7a69436f6d7061747a694669 *6c65506174685f73706c697446696c65506174685f696e666f004748437a6953686f775f613436 *5f656e747279004748437a695265616c5f7a647773686f7773507265635f636c6f737572650054 *6578747a69526561647a694c65785f7a644c7235794c6c766c37385f636c6f7375726500537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c375f636c6f73757265 *004748437a69496e745f636f6d70617265325f696e666f004748437a69494f426173655f526573 *6f757263654578686175737465645f7374617469635f656e747279004748437a6953746f726162 *6c655f726561645074724f66665074725f636c6f7375726500446973747269627574696f6e7a69 *50617273655574696c735f7a6467746f5061727365526573756c745f656e747279004469737472 *69627574696f6e7a69436f6d7061747a6952656164505f4661696c5f7374617469635f656e7472 *790053797374656d7a69506f7369787a69496e7465726e616c735f73697a7a656f667a75737461 *745f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e *5f68634f7074696f6e735f656e74727900446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f776974684578655f737274004748437a6953686f775f6133345f696e *666f0053797374656d7a694469726563746f72795f7a644c72396145615f696e666f0054657874 *7a695072657474795072696e747a69487567686573504a5f7a644c7234686b7a6477666974735f *656e74727900446973747269627574696f6e7a6953696d706c657a695574696c735f6d61796265 *457869745f656e747279004748437a6948616e646c655f77616e745772697461626c6548616e64 *6c655f656e7472790053797374656d7a69457869745f65786974576974685f656e747279004469 *73747269627574696f6e7a69436f6d7061747a694469726563746f72795f636f707946696c655f *73727464004748437a69494f426173655f6c766c33325f656e7472790044697374726962757469 *6f6e7a6953657475705f4275696c64436d645f7374617469635f696e666f004469737472696275 *74696f6e7a6953657475705f636f6e6669674863506174685f696e666f005f5f666978756e7364 *66646900546578747a69526561647a694c65785f7a644c7235766278355f636c6f737572650047 *48437a6953686f775f7a646653686f775a4d5a4e5f656e74727900546578747a69506172736572 *436f6d62696e61746f72737a6952656164507265635f707265635f656e74727900446973747269 *627574696f6e7a6950617273655574696c735f72756e505f737274005f5f737467696e69745f53 *797374656d7a69506f7369787a69496e7465726e616c735f007374675f73656c5f315f6e6f7570 *645f656e747279004748437a694c6973745f7a644c723272556c766c33305f656e747279004748 *437a69494f5f7a644c723966566c766c31395f656e747279004748437a69526561645f6c766c35 *5f636c6f73757265007374675f72616973655f696e666f00546578747a69526561647a694c6578 *5f7a644c72357a7a586c766c3130355f636c6f737572650064656c61797a685f66617374004748 *437a6953686f775f6136345f656e74727900546578747a695072657474795072696e747a694875 *67686573504a5f7a644c723467716c766c31375f656e747279004748437a69494f426173655f53 *7461636b4f766572666c6f775f7374617469635f656e74727900446973747269627574696f6e7a *6950617273655574696c735f7a64664d6f6e61645061727365526573756c745f696e666f004469 *73747269627574696f6e7a6956657273696f6e5f6f724561726c69657256657273696f6e5f656e *74727900546578747a69526561647a694c65785f7a644c723541446c65785374724974656d5f65 *6e74727900546578747a695072657474795072696e747a69487567686573504a5f456d7074795f *7374617469635f656e74727900446174617a694c6973745f756e776f7264735f696e666f005379 *7374656d7a694469726563746f72795f6c766c32385f656e74727900546578747a695072657474 *795072696e747a69487567686573504a5f546578744265736964655f636f6e5f696e666f004748 *437a69556e69636f64655f697344696769745f636c6f73757265004748437a69496e745f7a6464 *6d6d61785f656e747279004748437a6953686f775f7a64737a64646d73686f77345f696e666f00 *446973747269627574696f6e7a6953657475705f576974684873633268735f656e747279005465 *78747a695072657474795072696e747a69487567686573504a5f66756c6c52656e6465725f636c *6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164505f6c76 *6c325f656e747279005f5f737467696e69745f466f726569676e7a69466f726569676e50747200 *7374675f61705f365f7570645f696e666f0073746f7054696d657200546578747a695061727365 *72436f6d62696e61746f72737a6952656164507265635f7a707a707a705f656e747279005f6669 *6e69007374675f6c65496e74363400446174617a695479706561626c655f74626c5f636c6f7375 *7265005f5f737467696e69745f4748437a6948616e646c6500446973747269627574696f6e7a69 *50617273655574696c735f706172736552656164535f636c6f73757265004748437a6952656164 *5f726561644e756d626572335f636c6f73757265004748437a69526561645f7265616450726563 *345f696e666f0066636e746c4040474c4942435f322e30004748437a69494f426173655f496c6c *6567616c4f7065726174696f6e5f7374617469635f696e666f007274735f6576616c5f00474843 *7a69494f5f7a6477706f6c797a7562756657726974655f696e666f0053797374656d7a69456e76 *69726f6e6d656e745f6c766c5f656e74727900446973747269627574696f6e7a695061636b6167 *654465736372697074696f6e5f73616e697479436865636b5061636b6167655f636c6f73757265 *00546578747a69526561647a694c65785f7a644c7235784c6136365f656e74727900546578747a *69526561647a694c65785f7a644c723575707a6477667261635f696e666f004748437a69494f42 *6173655f6132335f636c6f73757265004748437a69426173655f497a685f7374617469635f696e *666f00546578747a69526561647a694c65785f454f465f636c6f73757265004469737472696275 *74696f6e7a69457874656e73696f6e5f496d706c69636974506172616d735f7374617469635f65 *6e747279006d656d6370794040474c4942435f322e3000446174617a695479706561626c655f6d *6b5479436f6e5f696e666f004748437a69526561645f6c766c31335f656e747279005379737465 *6d7a69456e7669726f6e6d656e745f676574417267735f736c6f7700446973747269627574696f *6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c75735061727365725f636c6f *7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f737472697043 *6f6d6d656e74735f696e666f004748437a6948616e646c655f6d6b53746448616e646c655f656e *747279004748437a69494f5f7a644c7239664a7a6477726561644368756e6b5f696e666f005379 *7374656d7a69494f5f685075745374724c6e5f656e747279004748437a69546f7048616e646c65 *725f72756e494f5f696e666f004748437a69494f426173655f6861497353747265616d5f656e74 *727900446973747269627574696f6e7a695061636b6167655f7a646653686f775061636b616765 *4964656e7469666965725f636c6f737572650053797374656d7a694469726563746f72795f6c76 *6c32335f696e666f005f5f737467696e69745f466f726569676e7a694d61727368616c7a694172 *7261795f00446973747269627574696f6e7a6953657475705f5072656669785f636f6e5f656e74 *727900446973747269627574696f6e7a6953657475705f566572626f73655f636c6f7375726500 *4748437a69456e756d5f66726f6d456e756d345f656e747279004748437a69494f426173655f6c *766c33315f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a646654 *79706561626c6556657273696f6e5f636c6f73757265004748437a69496e745f6c766c32385f69 *6e666f004748437a69526561645f7a6473726561644c69737444656661756c74315f696e666f00 *6765744d426c6f636b0074727954616b654d5661727a685f66617374004748437a69426173655f *7a64646d6d696e5f656e74727900446973747269627574696f6e7a6953657475705f436f6e6669 *67436d645f7374617469635f656e747279004748437a694e756d5f706c7573496e74656765725f *636c6f73757265004748437a6953686f775f6136365f636c6f7375726500446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f7a646653686f774c6962726172795f *636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a646766726f6d5665 *7273696f6e52616e67655f636c6f737572650053797374656d7a69506f7369787a69496e746572 *6e616c735f637a756765747069645f636c6f73757265004748437a695265616c5f7a6466526561 *6c496e745f636c6f73757265004748437a69496e745f7a64777a64646d656e756d46726f6d546f *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f5374 *725f7374617469635f696e666f0053797374656d7a694469726563746f72795f7a644c72396245 *7468726f774572726e6f49664d696e7573317a755f636c6f73757265004748437a6948616e646c *655f7a644c724a6a617070656e647a75666c6167735f636c6f73757265006f70656e3634404047 *4c4942435f322e3100546578747a69526561647a694c65785f7a644c7235774c6c766c34305f69 *6e666f004748437a695265616c5f6131355f656e74727900546578747a69526561647a694c6578 *5f7a644c72357a7a356136385f696e666f00446973747269627574696f6e7a6950617273655574 *696c735f4e6f50617273655f696e666f00466f726569676e7a694d61727368616c7a6941727261 *795f706f6b654172726179305f656e74727900446973747269627574696f6e7a6953657475705f *57697468416c65785f636f6e5f696e666f00446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f4275696c64496e666f5f7374617469635f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f7a644c72346836676f5f636c6f737572 *6500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6f626a457874 *656e73696f6e5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a695265 *6164505f706661696c5f696e666f00446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f73686f775061636b6167654465736372697074696f6e5f636c6f73757265 *005f5f737467696e69745f4748437a69494f004748437a69576f72645f7a647766726f6d496e74 *65676572335f696e666f00546578747a695072657474795072696e747a69487567686573504a5f *6132305f636c6f73757265004748437a69494f426173655f486561704f766572666c6f775f7374 *617469635f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a *646766726f6d5061727365725f656e7472790066636c6f73654040474c4942435f322e31004748 *437a69466c6f61745f7a64777a6473726f756e64335f656e747279005f5f737467696e69745f47 *48437a69466f726569676e50747200446973747269627574696f6e7a6953657475705f57697468 *486164646f636b5f656e747279004748437a694c6973745f74616b655f696e666f00446174617a *695479706561626c655f5479436f6e5f7374617469635f696e666f00446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f65786563757461626c65735f696e666f00 *4d61696e5f6d61696e5f636c6f73757265005f5f737467696e69745f4748437a69494f5f004469 *73747269627574696f6e7a694765744f70745f526571756972654f726465725f7374617469635f *656e74727900466f726569676e7a69437a694572726f725f6c766c315f656e747279004748437a *69526561645f7a6473726561644c69737444656661756c74345f636c6f73757265004748437a69 *53686f775f7a647773686f7773507265635f656e747279006765744d426c6f636b73004748437a *695061636b5f756e7061636b43537472696e675f656e747279004748437a69426173655f7a6464 *45715f636c6f73757265007374675f696e746572705f636f6e737472375f656e74727900474843 *7a6948616e646c655f6c766c35335f736c6f77004748437a694e756d5f6c766c375f636c6f7375 *726500446973747269627574696f6e7a6950617273655574696c735f70617273655061636b6167 *654e616d65515f696e666f004748437a694e756d5f537a685f636f6e5f656e747279007374675f *7570645f6672616d655f345f726574004748437a694e756d5f7a644c723278426c766c355f636c *6f737572650063616c634c697665004748437a694e756d5f7a64646d6d696e5f656e7472790053 *797374656d7a69506f7369787a69496e7465726e616c735f7a64776c766c5f696e666f00446973 *747269627574696f6e7a6950617273655574696c735f6f7074734669656c645f656e7472790044 *6174617a694c6973745f6e75625f636c6f7375726500737472726368724040474c4942435f322e *30004748437a69496e745f7a64646d656e756d46726f6d5468656e546f5f656e74727900474843 *7a6953686f775f61736369695461625f636c6f7375726500446973747269627574696f6e7a6953 *657475705f636f6e6669675072656669785f636c6f73757265004748437a69526561645f726561 *644c69737444656661756c745f636c6f73757265005f5f737467696e69745f446174617a694978 *5f00446973747269627574696f6e7a69457874656e73696f6e5f496e6c696e6550686173655f73 *74617469635f656e74727900446973747269627574696f6e7a69436f6d7061747a695265616450 *5f63686f6963655f696e666f004748437a6953686f775f6135395f636c6f73757265004748437a *69494f426173655f426c6f636b427566666572696e675f636f6e5f656e74727900466f72656967 *6e7a69437a694572726f725f7468726f774572726e6f496652657472795f636c6f737572650047 *48437a69494f426173655f6133335f636c6f73757265004748437a6948616e646c655f68436c6f *73657a7568616e646c657a755f636c6f7375726500446973747269627574696f6e7a6953657475 *705f7061727365436f7079417267735f7372740074696d65734040474c4942435f322e30005465 *78747a69526561647a694c65785f7a644c723574566c766c31315f656e74727900446973747269 *627574696f6e7a69436f6d7061747a694469726563746f72795f66696e6445786563757461626c *655f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f6c6f6f6b *5f656e74727900446973747269627574696f6e7a6953657475705f436f7079436d645f636f6e5f *656e74727900446973747269627574696f6e7a6953657475705f636f6e6669674863506174685f *636c6f73757265004748437a69426173655f46616c73655f636c6f73757265004748437a69494f *426173655f5065726d697373696f6e44656e6965645f7374617469635f696e666f004469737472 *69627574696f6e7a6953657475705f636f6e666967416c65785f696e666f006361665f6c697374 *0067657450726f6741726776004748437a69426173655f5a435f636f6e5f696e666f0054657874 *7a69526561647a694c65785f7a644c7235776e6c766c33365f636c6f73757265004748437a6949 *4f426173655f6c766c33365f696e666f00446973747269627574696f6e7a6956657273696f6e5f *4c6174657256657273696f6e5f636f6e5f696e666f007374675f67656e5f626c6f636b00546578 *747a69526561647a694c65785f7a644c723573546c766c365f656e747279004748437a694e756d *5f696e746567657232496e745f636c6f7375726500446973747269627574696f6e7a6953657475 *705f5769746843707068735f7374617469635f696e666f004748437a6953686f775f6136355f63 *6c6f73757265004748437a69494f5f61315f636c6f7375726500446973747269627574696f6e7a *694c6963656e73655f47504c5f7374617469635f656e74727900446973747269627574696f6e7a *694765744f70745f4e6f4172675f656e747279004748437a6953686f775f6131365f636c6f7375 *726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a6466 *457145786563757461626c655f636c6f73757265005f5f676d706e5f6763645f31004469737472 *69627574696f6e7a6956657273696f6e5f7a6467746f446570656e64656e63795f636c6f737572 *65004748437a69496e745f4933327a685f636f6e5f656e74727900446174617a69486173685461 *626c655f7a64776c676f5f636c6f73757265004748437a69496e745f70726564325f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c75 *735061727365725f656e74727900446174617a694d617962655f4a7573745f636f6e5f656e7472 *7900546578747a69526561647a694c65785f7a644c723575356c766c31335f636c6f7375726500 *446973747269627574696f6e7a6953657475705f7a6467746f416374696f6e5f656e7472790044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7772697465486f *6f6b65644275696c64496e666f5f636c6f73757265004748437a694c6973745f7a644c72327275 *6c766c31375f636c6f7375726500446973747269627574696f6e7a6953657475705f4f74686572 *436f6d70696c65725f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f *446570656e64656e63795f636f6e5f656e74727900546578747a69526561647a694c65785f7a64 *4c723573526c766c355f696e666f00546578747a695072657474795072696e747a694875676865 *73504a5f7a6c7a707a675f656e747279004748437a69426173655f5a4d5a4e5f636c6f73757265 *004748437a69546f7048616e646c65725f7a644c723337636c766c365f636c6f73757265004748 *437a69494f426173655f526561644d6f64655f7374617469635f656e7472790044697374726962 *7574696f6e7a694765744f70745f52657475726e496e4f726465725f656e74727900546578747a *69526561647a694c65785f5261745f7374617469635f656e74727900446973747269627574696f *6e7a6953657475705f57697468436f6d70696c65725f7374617469635f656e747279004748437a *69494f426173655f696f4572726f725f656e747279007374675f63617463685f6672616d655f34 *5f726574004748437a6953686f775f73686f774c697374315f696e666f0053797374656d7a6950 *6f7369787a69496e7465726e616c735f6c766c31345f696e666f004748437a695074725f706c75 *735074725f656e74727900726d6469724040474c4942435f322e30006973446f75626c6544656e *6f726d616c697a656400546578747a695072657474795072696e747a69487567686573504a5f42 *65736964655f7374617469635f696e666f00446973747269627574696f6e7a6950617273655574 *696c735f50617273654f6b5f636c6f73757265004748437a69526561645f61375f696e666f0047 *48437a69494f5f6c766c355f696e666f004748437a69426173655f496e6c5f7374617469635f65 *6e74727900446973747269627574696f6e7a6950617273655574696c735f73696d706c65466965 *6c645f636c6f73757265004748437a6948616e646c655f6132385f696e666f005f5f737467696e *69745f446174617a694978004748437a69526561645f72656164507265635f656e747279005f5f *737467696e69745f446973747269627574696f6e7a69436f6d7061747a694469726563746f7279 *004748437a6953686f775f7a644c72315a5a446c766c335f696e666f004748437a6953686f775f *6131305f696e666f00446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f686f6d65706167655f696e666f004748437a69496e745f7a64646d73686f775f656e7472 *79007374675f4e4f5f46494e414c495a45525f696e666f004748437a6953686f775f6134365f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c72357a7a4a6c766c39385f636c *6f73757265004748437a69426173655f646976496e747a685f636c6f7375726500446973747269 *627574696f6e7a6953657475705f7a646653686f77436f6e666967466c6167735f636c6f737572 *6500446973747269627574696f6e7a694c6963656e73655f47504c5f636c6f7375726500546578 *747a69526561647a694c65785f7a644c723579466c766c37355f636c6f73757265004748437a69 *53686f775f7a644c72315a5a446c766c335f636c6f73757265004748437a69496e745f6d696e42 *6f756e64325f656e74727900546578747a69526561647a694c65785f7a644c72357a7a35613638 *5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f6d61 *6e79315f656e747279004748437a69526561645f7a6466526561645a32545f636c6f7375726500 *446973747269627574696f6e7a6953657475705f7a646766726f6d466c61675f636c6f73757265 *00546578747a695072657474795072696e747a69487567686573504a5f54657874426573696465 *5f7374617469635f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f5265 *73747269637465645479706553796e6f6e796d735f7374617469635f696e666f0053797374656d *7a69506f7369787a69496e7465726e616c735f637a756f70656e6469725f636c6f737572650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f6d756e63685f656e74727900 *4748437a69546f7048616e646c65725f64735f696e666f004748437a6948616e646c655f6c766c *35375f636c6f73757265005f5f737467696e69745f466f726569676e7a694d61727368616c7a69 *506f6f6c5f00446174617a694c6973745f696e7465727370657273655f696e666f004748437a69 *48616e646c655f7a644c726259316c766c365f636c6f7375726500546578747a69526561647a69 *4c65785f7a644c723576336133385f696e666f004748437a695265616c5f6131355f636c6f7375 *7265004748437a69576f72645f7a644c723943636c766c31345f636c6f73757265004748437a69 *526561645f5a4344526561645f636f6e5f696e666f00436f6e74726f6c7a694d6f6e61645f6c69 *66744d325f636c6f7375726500466f726569676e7a69437a69537472696e675f77697468435374 *72696e675f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164 *505f636861696e72315f636c6f73757265007374675f535441424c455f4e414d455f696e666f00 *546578747a69526561647a694c65785f7a644c723577626c766c33345f636c6f73757265004748 *437a69494f426173655f756e73616665496e7465726c65617665494f5f636c6f73757265004469 *73747269627574696f6e7a6950726550726f636573737a69556e6c69745f5072655f636f6e5f65 *6e747279004748437a69496e745f746f456e756d5f636c6f73757265004748437a69496e745f73 *69676e756d325f696e666f00446973747269627574696f6e7a6953657475705f4f74686572436f *6d70696c65725f636f6e5f696e666f004748437a695265616c5f61375f656e747279004748437a *69526561645f6c766c375f636c6f7375726500446973747269627574696f6e7a69436f6d706174 *7a6952656164505f4765745f636f6e5f696e666f00446973747269627574696f6e7a6953657475 *705f636f6d70696c6572506b67546f6f6c5f696e666f004748437a69546f7048616e646c65725f *7a644c7233376d6c766c31315f636c6f73757265004748437a69494f5f7772697465426c6f636b *73315f636c6f7375726500446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f4c6962726172795f656e747279004748437a6953686f775f73686f77735f656e7472 *7900546578747a695072657474795072696e747a69487567686573504a5f556e696f6e5f636f6e *5f696e666f004748437a695265616c5f7a64737a64664571526174696f5f636c6f737572650047 *48437a69526561645f7a6473726561644c6973745072656344656661756c74325f696e666f0044 *6973747269627574696f6e7a6950617273655574696c735f50617273654661696c65645f636f6e *5f656e74727900446973747269627574696f6e7a694765744f70745f526571756972654f726465 *725f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164 *505f7a6c7a707a705f636c6f73757265004748437a694e756d5f656e756d46726f6d5468656e5f *696e666f004748437a69494f5f6c766c365f656e74727900446973747269627574696f6e7a6943 *6f6d7061747a6946696c65506174685f6a6f696e50617468735f696e666f00666f70656e363440 *40474c4942435f322e31004748437a69546f7048616e646c65725f7a644c723337326c766c325f *696e666f00466f726569676e7a694d61727368616c7a69416c6c6f635f7a64776363616c6c325f *636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f696e636c756465735f696e666f00446973747269627574696f6e7a6953657475705f507265 *6669785f696e666f00446174617a69486173685461626c655f6c766c5f636c6f73757265004748 *437a69576f72645f577a685f636f6e5f696e666f007374675f67635f756e70745f72315f696e66 *6f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f646c6c457874 *656e73696f6e5f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c6550 *6174685f6d6b536561726368506174685f656e74727900636c6f73656469724040474c4942435f *322e30004748437a69496e745f7a64646d73686f774c697374325f636c6f737572650044697374 *7269627574696f6e7a6950617273655574696c735f46726f6d537472696e675f7374617469635f *696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f4c6f6f6b5f63 *6f6e5f696e666f0053797374656d7a694469726563746f72795f7468726f774572726e6f49664d *696e75733152657472797a755f636c6f73757265004748437a69426173655f7a657a65315f636c *6f7375726500446973747269627574696f6e7a694765744f70745f7a6467746f41726744657363 *725f656e747279007374675f73656c5f335f6e6f7570645f696e666f004748437a6953686f775f *6131345f636c6f73757265004748437a6948616e646c655f6c766c31375f656e74727900737467 *5f494e445f335f696e666f004748437a694e756d5f7a644c723278786c766c335f636c6f737572 *6500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c69624d *6f64756c65735f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574 *696c735f66696e64486f6f6b65645061636b616765446573635f636c6f7375726500546578747a *69506172736572436f6d62696e61746f72737a6952656164505f7a644c723174656c766c5f636c *6f73757265004748437a69426173655f72657475726e5f636c6f73757265004469737472696275 *74696f6e7a6950617273655574696c735f6c6973744669656c645f696e666f0067657474696d65 *6f666461794040474c4942435f322e3000546578747a69526561647a694c65785f7a644c723577 *5a5a6135385f636c6f73757265004748437a694c6973745f726576657273655f656e7472790053 *797374656d7a69506f7369787a6946696c65735f6c766c32325f656e7472790044697374726962 *7574696f6e7a6956657273696f6e5f496e7465727365637456657273696f6e52616e6765735f69 *6e666f004748437a695265616c5f7a647773686f7773507265635f656e7472790053797374656d *7a694469726563746f72795f7a644c7239637166696c654e616d65456e64436c65616e315f696e *666f007374675f41505f535441434b5f696e666f004748437a6953686f775f6137355f636c6f73 *757265004748437a69494f426173655f7a657a65385f636c6f73757265004748437a69496e745f *7a64777a657a655f656e74727900546578747a69526561647a694c65785f7a644c723575546133 *365f696e666f00466f726569676e7a6953746f7261626c655f706f6c797a757065656b42797465 *4f6666325f636c6f73757265004748437a6953686f775f6132305f656e747279004748437a694c *6973745f7a644c723271536c766c375f656e747279004748437a69546f7048616e646c65725f7a *644c723337616c766c355f636c6f7375726500546578747a695072657474795072696e747a6948 *7567686573504a5f7a644c72346838676f315f636c6f737572650053797374656d7a69494f5f70 *75745374725f636c6f73757265004748437a694c6973745f696e69745f636c6f73757265005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c723468307a647766696c *6c4e425f736c6f7700446973747269627574696f6e7a69457874656e73696f6e5f457874656e73 *69626c655265636f7264735f7374617469635f656e747279004748437a695265616c5f746f5261 *74696f6e616c315f656e747279004748437a6948616e646c655f6132365f656e74727900446973 *747269627574696f6e7a69436f6d7061747a6952656164505f636861696e6c5f696e666f004748 *437a69494f426173655f426c6f636b427566666572696e675f636f6e5f696e666f004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f726561645061636b616765 *4465736372697074696f6e5f656e74727900446973747269627574696f6e7a69436f6d7061747a *6952656164505f7a646766726f6d5061727365725f636c6f737572650044697374726962757469 *6f6e7a694765744f70745f7a6467746f4172674f726465725f696e666f004748437a6952656164 *5f6c766c31345f636c6f7375726500446973747269627574696f6e7a6950617273655574696c73 *5f7061727365457874656e73696f6e515f7372740053797374656d7a69506f7369787a69496e74 *65726e616c735f7a64776363616c6c33325f696e666f004748437a69426173655f7a617a615f65 *6e74727900546578747a69526561647a694c65785f7a644c723579376c766c35385f636c6f7375 *7265004748437a69546f7048616e646c65725f7a644c723336556c766c5f736c6f77004748437a *6948616e646c655f6f70656e42696e61727946696c655f636c6f73757265004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f736b69705370616365735f7372740044697374 *7269627574696f6e7a6950617273655574696c735f73696e676c655374616e7a7a615f656e7472 *7900446973747269627574696f6e7a69436f6d7061747a6952656164505f46696e616c5f636f6e *5f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952656164505f46 *696e616c5f7374617469635f656e74727900446174617a694569746865725f7a64664571456974 *6865725f656e74727900446973747269627574696f6e7a6950617273655574696c735f70617273 *6546696c6550617468515f73727400546578747a695072657474795072696e747a694875676865 *73504a5f556e696f6e5f7374617469635f696e666f004748437a69466c6f61745f467a685f7374 *617469635f696e666f005f5f737467696e69745f446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e00446973747269627574696f6e7a69436f6d7061747a69526561 *64505f73657042795f73727400446973747269627574696f6e7a6953657475705f507265666978 *5f636c6f73757265004748437a694c6973745f7a644c723271536c766c375f696e666f00474843 *7a69546f7048616e646c65725f7a644c723337716c766c31335f636c6f73757265004748437a69 *456e756d5f66726f6d456e756d345f636c6f73757265004748437a69426173655f7a64646d7a6c *5f656e747279007374675f7570645f6672616d655f305f72657400546578747a69507265747479 *5072696e747a69487567686573504a5f4e6573745f636f6e5f656e7472790053797374656d7a69 *4469726563746f72795f7a644c72396279646573635f636c6f73757265006f70656e6469724040 *474c4942435f322e30004748437a6948616e646c655f7a644c724a6a617070656e647a75666c61 *67735f696e666f004748437a695265616c5f61385f696e666f00446973747269627574696f6e7a *6950617273655574696c735f706172736554657374656457697468515f696e666f004469737472 *69627574696f6e7a694765744f70745f4f7074696f6e5f656e747279004748437a695265616c5f *5a43445265616c5f7374617469635f656e747279004748437a69426173655f497a685f636f6e5f *696e666f004748437a694e756d5f656e756d46726f6d5468656e546f5f636c6f73757265005f5f *737467696e69745f446174617a6945697468657200446973747269627574696f6e7a69436f6d70 *61747a6946696c65506174685f64726f704162736f6c7574655072656669785f73727400446973 *747269627574696f6e7a6953657475705f7a646653686f77466c61675f656e747279007374675f *696e746572705f636f6e7374725f656e747279004748437a6953686f775f6135355f636c6f7375 *7265005f5f737467696e69745f446973747269627574696f6e7a69436f6d7061747a6945786365 *7074696f6e00446973747269627574696f6e7a69457874656e73696f6e5f4e616d65644669656c *6450756e735f7374617469635f696e666f0053797374656d7a694469726563746f72795f697344 *69726563746f72795f696e666f00546578747a69506172736572436f6d62696e61746f72737a69 *52656164505f526573756c745f7374617469635f696e666f004748437a6953686f775f7a644c72 *315a5a526c766c31305f656e747279004748437a69526561645f726561644c6973745072656344 *656661756c745f656e747279007374675f61705f355f7570645f656e747279004748437a69494f *426173655f417070656e6448616e646c655f636c6f73757265004748437a694c6973745f706f6c *797a756c6173747a715f696e666f004748437a69526561645f706f6c797a75676f5f636c6f7375 *726500546578747a69526561647a694c65785f7a644c723573506c766c345f696e666f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f706661696c5f696e666f00 *4748437a6953686f775f6136325f696e666f004748437a69556e69636f64655f6973416c706861 *5f636c6f73757265004748437a694c6973745f7a644c723272576c766c33315f656e7472790047 *48437a6948616e646c655f7a647766696c6c526561644275666665724c6f6f705f656e74727900 *446174617a69486173685461626c655f7a6477696e736572745f636c6f73757265004748437a69 *53686f775f6131305f656e747279004748437a69426173655f7a64737a64646d7a737a655f696e *666f00446174617a694d617962655f69734e6f7468696e675f696e666f007374675f626c6f636b *5f310053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36335f *636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f7a646766726f *6d5374616e7a7a614669656c645f696e666f0053797374656d7a69457869745f65786974576974 *685f636c6f73757265004748437a69546f7048616e646c65725f7a644c7233376d6c766c31315f *696e666f004748437a694c6973745f7461696c5f636c6f7375726500466f726569676e7a694d61 *727368616c7a69416c6c6f635f7a64776363616c6c5f636c6f7375726500466f726569676e7a69 *437a694572726f725f7468726f774572726e6f49664d696e7573317a755f636c6f737572650054 *6578747a69526561647a694c65785f7a644c7235786a7832375f636c6f73757265005379737465 *6d7a69506f7369787a6946696c65735f67657446696c655374617475735f656e74727900446973 *747269627574696f6e7a69436f6d7061747a6952656164505f526573756c745f636c6f73757265 *007374675f64756d6d795f7265745f696e666f0074696479416c6c6f636174654c697374730054 *6578747a69526561647a694c65785f7a644c72357a7a426c766c39345f636c6f73757265004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f4661696c5f7374617469635f69 *6e666f00446174617a695479706561626c655f43616368655f7374617469635f696e666f005465 *78747a69526561647a694c65785f7a644c723575646c6974325f636c6f73757265004748437a69 *494f5f7a644c723967726c617a7a79526561644275666665726564315f696e666f004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f636f6d6d6f6e506172656e745f *656e74727900446973747269627574696f6e7a6953696d706c657a695574696c735f736d617274 *436f7079536f75726365735f656e747279004748437a69494f426173655f48616e646c65547970 *655f636c6f737572655f74626c004748437a69494f426173655f57726974654275666665725f63 *6c6f73757265004748437a694c6973745f636f6e6361745f696e666f004748437a6953686f775f *73686f774c6973745f656e7472790053797374656d7a694469726563746f72795f72656d6f7665 *4469726563746f72795f696e666f005f5f737467696e69745f4748437a6952656164004748437a *69496e745f7a64776469764d6f64325f696e666f00446973747269627574696f6e7a6950726550 *726f636573737a69556e6c69745f706c61696e5f696e666f004748437a695265616c5f7a647766 *315f636c6f7375726500756e626c6f636b557365725369676e616c73004748437a69526561645f *7a64737a64646d726561647350726563345f636c6f7375726500446973747269627574696f6e7a *6950726550726f636573737a69556e6c69745f5072655f7374617469635f656e74727900446973 *747269627574696f6e7a6953657475705f636d644f7074696f6e735f636c6f7375726500474843 *7a69426173655f7a64646d6d696e5f636c6f73757265007374675f63746f695f7265745f44315f *696e666f0053797374656d7a694469726563746f72795f69734469726563746f72795f656e7472 *79004748437a6953686f775f6135375f636c6f73757265005f5f737467696e69745f5379737465 *6d7a69506f7369787a695369676e616c7300446973747269627574696f6e7a6950617273655574 *696c735f73696d706c654669656c645f73727400446973747269627574696f6e7a695365747570 *5f636f6e6669675072656669785f696e666f00446973747269627574696f6e7a6953657475705f *7061727365436f7079417267735f656e747279004748437a69494f426173655f7a647773686f77 *7350726563345f656e747279004748437a6948616e646c655f64454641554c547a754255464645 *527a7553495a5a455f696e666f004748437a69494f5f7a644c723966786c766c31315f656e7472 *7900546578747a69526561647a694c65785f7a644c72357a7a446c766c39355f636c6f73757265 *00446174617a694d617962655f66726f6d4d617962655f636c6f73757265004469737472696275 *74696f6e7a6953657475705f436f6e666967466c6167735f636f6e5f656e747279004748437a69 *48616e646c655f6d6b53746448616e646c655f636c6f737572650053797374656d7a6944697265 *63746f72795f6c766c32345f636c6f73757265004748437a694c6973745f74616b655f656e7472 *79007374675f73656c5f375f7570645f696e666f00446973747269627574696f6e7a695061636b *6167654465736372697074696f6e5f6275696c64496e666f5f636c6f7375726500546578747a69 *506172736572436f6d62696e61746f72737a6952656164507265635f737465705f636c6f737572 *65004748437a695265616c5f7a637a635f656e747279004748437a694572725f6c766c375f696e *666f0073746743616c6c6f63427974657300546578747a695072657474795072696e747a694875 *67686573504a5f7a6477736570315f696e666f00446174617a694d617962655f66726f6d4a7573 *745f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a6467746f44657065 *6e64656e63795f656e74727900446973747269627574696f6e7a6956657273696f6e5f70617273 *6556657273696f6e52616e67655f636c6f7375726500446973747269627574696f6e7a69536574 *75705f636f6e66696743707068735f696e666f004748437a69494f426173655f496e7465727275 *707465645f7374617469635f656e747279004748437a69494f5f7a644c723967707a64776c617a *7a7952656164486176654275666665725f696e666f00446174617a695479706561626c655f7462 *6c5f656e747279004748437a695265616c5f746f526174696f6e616c315f696e666f004748437a *69426173655f5a437a745a435f7374617469635f696e666f00446973747269627574696f6e7a69 *436f6d7061747a6946696c65506174685f7061727365536561726368506174685f696e666f0047 *48437a69494f5f6c766c5f636c6f7375726500446973747269627574696f6e7a695061636b6167 *655f7a646766726f6d5061636b6167654964656e7469666965725f696e666f004748437a69456e *756d5f656674496e745f696e666f004748437a69576f72645f7a657a65345f636c6f7375726500 *4748437a69426173655f636f6d70617265496e745f636c6f73757265004748437a694c6973745f *706f6c797a757265765f656e74727900446174617a694d617962655f69734e6f7468696e675f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c723575786c766c31365f696e66 *6f004748437a6953686f775f6137305f656e747279004748437a69494f5f7a644c723966666c76 *6c325f656e74727900546578747a69526561647a694c65785f7a644c723576527831325f636c6f *73757265004748437a69494f426173655f5065726d697373696f6e44656e6965645f7374617469 *635f656e74727900696e74657272757074537467527473007374675f6765576f72643634004461 *74617a694d617962655f7a644c7252426c766c5f636c6f73757265004748437a69456e756d5f65 *6e756d46726f6d325f636c6f73757265004748437a69426173655f7a657a655f636c6f73757265 *00446973747269627574696f6e7a6950617273655574696c735f4e6f50617273655f7374617469 *635f656e747279004748437a6948616e646c655f7769746848616e646c657a757a715f696e666f *00446973747269627574696f6e7a6956657273696f6e5f7a6467746f446570656e64656e63795f *696e666f007374675f6571576f72643634004748437a694e756d5f6469764d6f64496e74656765 *725f696e666f007274735f6172676300446174617a694d617962655f4e6f7468696e675f636c6f *7375726500736967656d7074797365744040474c4942435f322e30004748437a694e756d5f7a64 *4c7232787a7a6c766c345f656e747279004748437a6953686f775f7a644c72315a5a4e6c766c38 *5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c *36385f696e666f00546578747a69526561647a694c65785f7a644c723577546135375f696e666f *00446973747269627574696f6e7a6953696d706c657a695574696c735f72617753797374656d50 *6174685f696e666f004748437a69466c6f61745f447a685f636f6e5f656e74727900546578747a *695072657474795072696e747a69487567686573504a5f7a644c723661656173797a7564697370 *6c61795f696e666f004748437a695265616c5f71756f74315f636c6f7375726500546578747a69 *526561647a694c65785f7a644c72357a7a646c766c38365f636c6f73757265004748437a695374 *6f7261626c655f77726974655074724f66665074725f656e74727900446973747269627574696f *6e7a69457874656e73696f6e5f4e616d65644669656c6450756e735f636c6f7375726500474843 *7a69494f5f7a644c723966646c766c315f656e74727900546578747a69526561647a694c65785f *7a644c723579586c766c38345f636c6f737572650053797374656d7a69506f7369787a69496e74 *65726e616c735f696f657a75756e6b6e6f776e66696c65747970655f636c6f7375726500474843 *7a69546f7048616e646c65725f7a644c723337736c766c31345f636c6f73757265004469737472 *69627574696f6e7a6953657475705f7a6467746f466c61675f696e666f004748437a69546f7048 *616e646c65725f7a644c723337636c766c365f696e666f004748437a6953686f775f7a64665368 *6f775a32545f656e747279004748437a6953686f775f6133395f636c6f73757265005f5f737467 *696e69745f446973747269627574696f6e7a69436f6d7061747a6946696c655061746800474843 *7a6953686f775f6135385f696e666f00446174617a695475706c655f5a34545f636f6e5f696e66 *6f004748437a694c6973745f6e756c6c5f656e74727900546578747a69526561647a694c65785f *7a644c723574426132365f636c6f73757265004748437a695265616c5f7a644c723531526c766c *335f696e666f004748437a69456e756d5f676f7a75646e7a75696e747a756c6973745f696e666f *00446973747269627574696f6e7a69457874656e73696f6e5f7a6467746f457874656e73696f6e *5f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f73 *706c697446696c654578745f737274005f5f737467696e69745f53797374656d7a69494f7a6945 *72726f725f00546578747a69526561647a694c65785f7a644c723577586c766c34325f696e666f *004748437a694c6973745f7a644c723272716c766c31355f696e666f004748437a69494f426173 *655f5061747465726e4d617463684661696c5f636f6e5f656e747279007374675f73656c5f3130 *5f6e6f7570645f696e666f00546578747a69526561647a694c65785f7a644c723577466c766c33 *395f696e666f007374675f776f7264546f576f72643634004748437a695265616c5f7a64777a64 *737265647563655f696e666f004748437a69494f426173655f494f457863657074696f6e5f7374 *617469635f696e666f00436f6e74726f6c7a69457863657074696f6e5f627261636b65745f636c *6f7375726500546578747a69526561647a694c65785f7a644c723578726c766c34375f636c6f73 *757265004748437a69546f7048616e646c65725f7a644c723337776c766c31365f656e74727900 *446973747269627574696f6e7a6953657475705f436d645f7374617469635f656e747279004748 *437a695265616c5f6c766c365f656e747279007374675f67635f7574004748437a69526561645f *706172656e5f636c6f737572650053797374656d7a694469726563746f72795f646f657346696c *6545786973745f656e747279007374675f696e746572705f636f6e737472315f656e7472790047 *48437a694e756d5f7a644c723278766c766c325f696e666f004748437a694c6973745f7a644c72 *3271456c766c5f696e666f004748437a69494f426173655f6c766c32345f696e666f004748437a *695265616c5f7a647761315f656e74727900546578747a695072657474795072696e747a694875 *67686573504a5f7a644c72363863616e747a756661696c5f696e666f004748437a69456e756d5f *656664496e745f636c6f7375726500446174617a695479706561626c655f7a657a65325f696e66 *6f00546578747a69526561647a694c65785f7a644c72357a7a6a7833365f636c6f737572650044 *6973747269627574696f6e7a6950617273655574696c735f73686f77546573746564576974685f *656e74727900446174617a695479706561626c655f4b657950725f636f6e5f696e666f00474843 *7a695265616c5f6469764d6f64315f696e666f004748437a694c6973745f6c766c31325f636c6f *73757265004748437a69576f72645f7a644c723943386c766c31325f656e747279004469737472 *69627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e6765735f737461 *7469635f696e666f00446174617a69486173685461626c655f7a64776c676f5f696e666f006730 *00446973747269627574696f6e7a6950617273655574696c735f6f7074734669656c645f636c6f *73757265004748437a694e756d5f656e756d44656c7461496e746567657246425f696e666f0074 *696d6573496e74656765727a685f66617374004748437a69576f72645f66726f6d496e74656765 *72335f636c6f73757265004748437a69494f426173655f4173796e63457863657074696f6e5f73 *74617469635f696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e *6c69745f426c616e6b5f7374617469635f696e666f00446973747269627574696f6e7a6953696d *706c657a695574696c735f6d6b4c69624e616d655f73727400616c6c6f63537472486173685461 *626c65004748437a695265616c5f6131335f636c6f7375726500446973747269627574696f6e7a *69457874656e73696f6e5f466c657869626c65436f6e74657874735f7374617469635f656e7472 *7900446973747269627574696f6e7a6956657273696f6e5f7a64664f726456657273696f6e5f63 *6c6f73757265004748437a69494f426173655f5265736f75726365427573795f7374617469635f *696e666f004748437a694e756d5f616273315f656e74727900446973747269627574696f6e7a69 *436f6d7061747a6952656164505f736b69704d616e79315f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c723578746136335f696e666f00446973747269627574696f6e7a69 *53657475705f7a6467746f466c61675f656e74727900446973747269627574696f6e7a69506172 *73655574696c735f7061727365446570656e64656e63795f656e747279004748437a6942617365 *5f5a4d5a4e5f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061747a *6952656164505f7365704279315f696e666f004748437a6953686f775f7a646653686f775a3254 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c723575566c766c32315f65 *6e747279004748437a694c6973745f7a64776c656e5f636c6f73757265004748437a69494f4261 *73655f7a737a65355f696e666f005f5f737467696e69745f466f726569676e7a69507472004748 *437a69494f426173655f7a647773686f777350726563355f656e74727900446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f4275696c64496e666f5f636f6e5f69 *6e666f004748437a6953686f775f7a644c72315a5a6461325f696e666f004748437a69494f4261 *73655f446561646c6f636b5f7374617469635f696e666f004748437a69496e745f6c766c32385f *636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a646766726f6d5665 *7273696f6e5f636c6f7375726500546578747a695072657474795072696e747a69487567686573 *504a5f4e6f446f635f7374617469635f696e666f004748437a69526561645f6c766c31335f636c *6f73757265004748437a69466c6f61745f447a685f636f6e5f696e666f00446973747269627574 *696f6e7a69436f6d7061747a6952656164505f6f7074696f6e616c5f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f7a6c7a707a705f696e666f004469737472 *69627574696f6e7a6953696d706c657a695574696c735f64656661756c745061636b6167654465 *73635f656e747279004748437a69494f426173655f4e6f6e5465726d696e6174696f6e5f636c6f *73757265004748437a69426173655f7a64646d7a677a675f656e74727900446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f7a646766726f6d5061636b61676544 *65736372697074696f6e5f656e747279004748437a69426173655f6d61705f636c6f7375726500 *4748437a69494f5f7a6477706f6c797a75627566526561645f656e747279004469737472696275 *74696f6e7a6950617273655574696c735f70617273654c6963656e7365515f737274007374675f *61705f705f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f73657475704d6573736167655f696e666f004748437a69494f426173655f6861427566 *6665724d6f64655f656e747279004748437a69426173655f6e6567617465496e745f656e747279 *00546578747a69526561647a694c65785f7a644c7235734e6c766c335f656e7472790044697374 *7269627574696f6e7a69436f6d7061747a6946696c65506174685f70617468506172656e74735f *696e666f00616c6c6f6361746550696e6e656400446973747269627574696f6e7a695061727365 *5574696c735f70617273654c6963656e7365515f656e74727900657869744040474c4942435f32 *2e30004748437a69494f426173655f416c72656164794578697374735f7374617469635f696e66 *6f004748437a69494f426173655f4275666665725f7374617469635f656e747279004748437a69 *4572725f756e646566696e65645f656e74727900446973747269627574696f6e7a695665727369 *6f6e5f446570656e64656e63795f696e666f004748437a69576f72645f746f496e746567657232 *5f636c6f73757265004748437a69494f426173655f556e736174697366696564436f6e73747261 *696e74735f7374617469635f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f7a6467746f4275696c64496e666f5f636c6f737572650044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f73746162696c6974795f *656e747279004748437a69496e745f7a64646d6d61785f636c6f73757265004748437a69456e75 *6d5f656e756d46726f6d325f696e666f004748437a694e756d5f7a657a655f696e666f00474843 *7a694c6973745f756e7a7a6970335f636c6f73757265004748437a6948616e646c655f7a647761 *75676d656e74494f4572726f725f696e666f004748437a69494f5f685075745374725f696e666f *004748437a69426173655f7a64646d6d61785f656e7472790053797374656d7a69446972656374 *6f72795f7a644c723962437a64776c6f6f705f636c6f73757265004748437a69466c6f61745f46 *7a685f636f6e5f696e666f004748437a69494f5f7a647777726974654c696e65735f656e747279 *00436f6e74726f6c7a694d6f6e61645f6d61704d5f696e666f00446973747269627574696f6e7a *69436f6d7061747a6952656164505f6d616e7954696c6c5f73727400446973747269627574696f *6e7a6956657273696f6e5f56657273696f6e5f7374617469635f656e74727900546578747a6952 *6561647a694c65785f7a644c723576726134325f636c6f73757265004748437a69494f42617365 *5f4572726f7243616c6c5f7374617469635f696e666f004748437a69556e69636f64655f746f4c *6f7765725f656e74727900436f6e74726f6c7a694d6f6e61645f666f6c644d5f696e666f005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c723467537a647761626f *76654e6573745f736c6f77004748437a6953686f775f7a64737a64646d73686f774c697374335f *696e666f004748437a69496e745f6e6567617465325f696e666f004748437a695265616c5f6139 *5f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a754e4f *4e424c4f434b5f696e666f004748437a69496e745f7a70325f636c6f7375726500546578747a69 *5072657474795072696e747a69487567686573504a5f7a644c7234674b6e696c42657369646531 *5f696e666f004748437a694172725f535441727261795f636f6e5f696e666f00546578747a6950 *72657474795072696e747a69487567686573504a5f7a644c7234676f6c766c31365f696e666f00 *4748437a69494f5f7a644c723966766c766c31305f636c6f73757265004748437a69496e745f7a *64777a64646d656e756d46726f6d546f5f656e747279004748437a69526561645f7a64646d7265 *616473507265635f656e74727900446973747269627574696f6e7a6953657475705f7061727365 *436f6e666967757265417267735f73727400546578747a695072657474795072696e747a694875 *67686573504a5f7a64776d6b4e6573745f656e747279004748437a69494f426173655f52656164 *577269746548616e646c655f7374617469635f696e666f004748437a694c6973745f66696c7465 *725f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c *6c35325f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7365744e *6f6e426c6f636b696e6746445f696e666f00546578747a69506172736572436f6d62696e61746f *72737a6952656164505f4c6f6f6b5f7374617469635f656e7472790053797374656d7a69506f73 *69787a69496e7465726e616c735f6c766c31345f656e747279004748437a695265616c5f6d6f64 *315f636c6f73757265004748437a69576f72645f6c697431305f636c6f7375726500697377616c *7068614040474c4942435f322e30004748437a6953686f775f6135365f636c6f73757265004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f6f7074696f6e616c5f636c6f73 *7572650053797374656d7a694469726563746f72795f6c766c335f656e74727900446973747269 *627574696f6e7a6953657475705f636f6e6669674873633268735f696e666f0053797374656d7a *694469726563746f72795f7a644c723962437a64776c6f6f705f696e666f004748437a69426173 *655f7a737a65335f636c6f7375726500446973747269627574696f6e7a6953657475705f496e73 *74616c6c436d645f696e666f007374675f6170706c795f696e746572705f696e666f0053797374 *656d7a69456e7669726f6e6d656e745f676f5f636c6f73757265005f5f737467696e69745f4469 *73747269627574696f6e7a69436f6d7061747a6952617753797374656d5f004469737472696275 *74696f6e7a694765744f70745f4f7074696f6e5f636c6f7375726500446973747269627574696f *6e7a6953657475705f636d64416374696f6e5f636c6f7375726500446174617a694d617962655f *66726f6d4d617962655f696e666f004748437a6948616e646c655f6f70656e42696e6172794669 *6c655f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c33375f636c6f73757265004748437a6953686f775f6134385f656e747279004748437a69 *4e756d5f7a64646d6d696e5f636c6f73757265005f5f737467696e69745f4748437a69576f7264 *00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f776974684c *69625f696e666f00446973747269627574696f6e7a69436f6d7061747a694469726563746f7279 *5f6372656174654469726563746f727949664d697373696e675f636c6f7375726500546578747a *69506172736572436f6d62696e61746f72737a6952656164505f7a644c7231746d6c766c345f69 *6e666f004748437a69494f426173655f426c6f636b427566666572696e675f7374617469635f69 *6e666f00546578747a69526561647a694c65785f7a644c7235776c7831375f636c6f7375726500 *4748437a69494f5f7a644c7239664a7a6477726561644368756e6b5f656e747279004748437a69 *4172725f7a644c723575446c766c365f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723578547833335f636c6f73757265004748437a69426173655f46616c73655f737461 *7469635f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f73 *65704279315f73727400546578747a695072657474795072696e747a69487567686573504a5f76 *6361745f636c6f73757265004748437a694e756d5f7a675f656e7472790077616974526561647a *685f6661737400446973747269627574696f6e7a6953657475705f556e7265676973746572436d *645f7374617469635f696e666f00446973747269627574696f6e7a6953657475705f636f6d7069 *6c657256657273696f6e5f636c6f7375726500446973747269627574696f6e7a6956657273696f *6e5f77697468696e52616e67655f737274004748437a69494f426173655f494f4572726f725f73 *74617469635f696e666f00446973747269627574696f6e7a695061636b6167655f7a6466526561 *645061636b6167654964656e7469666965725f656e74727900446973747269627574696f6e7a69 *53657475705f4e6863466c61675f7374617469635f696e666f007374675f73656c5f375f6e6f75 *70645f696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e6c6974 *5f426c616e6b5f636c6f7375726500696e69745374617473004748437a694e756d5f696e743249 *6e74656765725f636c6f737572650053797374656d7a69506f7369787a6946696c65735f6c766c *375f656e74727900446973747269627574696f6e7a6956657273696f6e5f56657273696f6e5f65 *6e747279004748437a694e756d5f656e756d46726f6d546f5f636c6f7375726500546578747a69 *526561647a694c65785f7a644c723541746c766c3132315f636c6f737572650044697374726962 *7574696f6e7a6950617273655574696c735f7a64664d6f6e61645061727365526573756c745f65 *6e7472790071756f74496e74656765727a685f66617374005f5f737467696e69745f546578747a *6953686f775f004748437a6948616e646c655f77616e745772697461626c6548616e646c655f69 *6e666f00446973747269627574696f6e7a6950617273655574696c735f7a646766726f6d504572 *726f725f636c6f73757265004748437a69494f5f685075745374725f636c6f7375726500474843 *7a694c6973745f7a64777370616e5f656e747279007374675f73656c5f385f7570645f656e7472 *7900636d70496e7465676572496e747a685f6661737400446973747269627574696f6e7a694578 *74656e73696f6e5f657874656e73696f6e73546f474843466c61675f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f736b69704d616e795f656e747279004748 *437a69494f426173655f6c766c33355f696e666f004748437a69576f72645f5731367a685f7374 *617469635f656e747279004748437a69494f5f7a6477684765744275665f656e74727900537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36385f656e74727900 *53797374656d7a69506f7369787a69496e7465726e616c735f637a756f70656e6469725f656e74 *7279005f5f737467696e69745f53797374656d7a69506f7369787a694469726563746f72795f00 *4748437a69494f426173655f6661696c494f5f636c6f73757265004748437a69426173655f5a43 *444f72645f636f6e5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f *7a64776363616c6c36375f636c6f7375726500446973747269627574696f6e7a69436f6d706174 *7a6952656164505f6f7074696f6e5f656e7472790053797374656d7a69506f7369787a69496e74 *65726e616c735f636f6e73747a75667a75736574666c5f636c6f73757265004748437a6948616e *646c655f64454641554c547a754255464645527a7553495a5a455f636c6f73757265007374675f *73656c5f365f7570645f656e747279004748437a6948616e646c655f6175676d656e74494f4572 *726f725f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a695265616450 *5f7a6457525f636c6f7375726500446973747269627574696f6e7a6953657475705f566572626f *73655f7374617469635f696e666f00446973747269627574696f6e7a6953657475705f636f6d70 *696c657256657273696f6e5f696e666f007374675f63746f695f7265745f5231756e70745f696e *666f00546578747a69526561647a694c65785f7a644c723578446c766c34395f696e666f004748 *437a69496e745f7a644c723945436c766c31355f656e747279004748437a69494f5f6847657443 *6f6e74656e74735f656e74727900446973747269627574696f6e7a6953657475705f5769746848 *63506b675f636f6e5f696e666f004748437a69494f426173655f6c766c32385f636c6f73757265 *00546578747a69526561647a694c65785f7a644c723577667831365f636c6f7375726500546578 *747a695072657474795072696e747a69487567686573504a5f7a644c72346865676f345f636c6f *7375726500546578747a69526561647a694c65785f7a644c723575466133345f656e7472790047 *48437a6953686f775f73686f777350726563345f636c6f7375726500446973747269627574696f *6e7a6953657475705f636d6448656c705f696e666f007374675f494e445f375f696e666f00616c *6c6f6347726f757000446973747269627574696f6e7a6953657475705f7a646766726f6d436f6d *70696c65725f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f *73686f7746726565546578745f737274004748437a69494f426173655f46696c6548616e646c65 *5f7374617469635f656e747279004748437a6948616e646c655f696f657a7566696e616c697a7a *656448616e646c655f696e666f004748437a69494f426173655f446561646c6f636b5f73746174 *69635f656e747279004748437a69426173655f7a695f696e666f004748437a69496e745f493332 *7a685f636f6e5f696e666f00616c6c6f635f626c6f636b735f6c696d004748437a69456e756d5f *65666474496e7446425f736c6f7700546578747a695072657474795072696e747a694875676865 *73504a5f7a644c7234674d6f6e654c696e6572315f656e7472790053797374656d7a6944697265 *63746f72795f6765744469726563746f7279436f6e74656e74735f696e666f004748437a694261 *73655f7a64664571426f6f6c5f636c6f73757265007274735f676574496e7438004748437a6949 *6e745f7a657a65335f696e666f00446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f656d7074794275696c64496e666f5f636c6f7375726500466f726569676e7a *69437a694572726f725f7a64776363616c6c325f636c6f7375726500446174617a694d61796265 *5f7a646645714d617962655f696e666f0053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c32365f696e666f004748437a6953686f775f7a647773686f77536967 *6e6564496e745f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f616c *6c6f636142797465735f656e74727900446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f6873536f757263654469725f696e666f004748437a69436f6e635f7468 *7265616457616974526561645f696e666f004748437a69494f426173655f61355f656e74727900 *546578747a69526561647a694c65785f7a644c7268416c657849645f656e747279004748437a69 *48616e646c655f6c766c31365f636c6f7375726500446973747269627574696f6e7a695061636b *6167654465736372697074696f6e5f6c644f7074696f6e735f636c6f7375726500446973747269 *627574696f6e7a6953657475705f436f6e666967466c6167735f656e747279004748437a69494f *426173655f6c766c33365f636c6f7375726500546578747a69526561647a694c65785f7a644c72 *35734e6c766c335f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f *7a7552444f4e4c595f636c6f7375726500446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f45786563757461626c655f696e666f007374674d616c6c6f63427974 *65730062617266005f5f737467696e69745f4748437a69535400446973747269627574696f6e7a *6950617273655574696c735f6c6973744669656c645f656e747279004748437a69494f42617365 *5f6c766c32375f656e747279004748437a694572725f6572726f725f656e747279004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f6c69624d6f64756c65735f *737274004748437a694c6973745f6e756c6c5f636c6f7375726500546578747a69526561647a69 *4c65785f7a644c723575356c766c31335f656e7472790053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c32345f696e666f004748437a694c6973745f72657065 *61745f656e747279004748437a69526561645f7265616450726563315f656e7472790044697374 *7269627574696f6e7a6953657475705f4c6966745f7374617469635f656e747279005f5f737467 *696e69745f4d61696e005f656461746100546578747a69526561647a694c65785f7a644c723575 *7a7a6c766c31375f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f *7a7552444f4e4c595f696e666f004748437a69526561645f7a64646d7265616473507265635f63 *6c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c *6c32365f636c6f7375726500546578747a69526561647a694c65785f7a644c7235765a5a6c766c *33325f656e747279005f5f693638362e6765745f70635f7468756e6b2e6278004748437a694861 *6e646c655f6765744275666665725f636c6f73757265004748437a695765616b5f72756e46696e *616c697a7a657242617463685f656e74727900446973747269627574696f6e7a694765744f7074 *5f7573616765496e666f5f696e666f004748437a6953686f775f6136325f636c6f737572650047 *48437a6948616e646c655f6f70656e46696c655f696e666f00446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f6465736372697074696f6e5f696e666f00737467 *5f61705f707070707070705f726574004d616c6c6f634661696c486f6f6b0053797374656d7a69 *494f5f7075745374725f696e666f00446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f4c6962726172795f7374617469635f696e666f004748437a695265616c5f *615f636c6f7375726500466f726569676e7a69437a694572726f725f6c766c5f636c6f73757265 *005f474c4f42414c5f4f46465345545f5441424c455f00667265654040474c4942435f322e3000 *446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f706172736544 *65736372697074696f6e5f636c6f7375726500446973747269627574696f6e7a6953657475705f *50726f6772616d6174696361436d645f636c6f73757265004748437a6953686f775f6131335f63 *6c6f73757265004748437a69494f5f696c6c6567616c42756666657253697a7a655f636c6f7375 *7265004748437a69456e756d5f746f456e756d345f656e747279004748437a69576f72645f7369 *676e756d335f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a69 *52656164505f706661696c5f656e747279004748437a69494f426173655f6131395f656e747279 *005f656e6400546578747a69526561647a694c65785f6c766c315f636c6f737572650061746f6d *69634d6f646966794d75745661727a685f66617374007374675265616c6c6f6342797465730047 *48437a69494f426173655f7a6457494f5f656e74727900446973747269627574696f6e7a695061 *7273655574696c735f7a6467746f5061727365526573756c745f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f7a6c7a707a705f737274007374675f494e544c *494b455f636c6f737572650053797374656d7a69436d645f72617753797374656d5f636c6f7375 *726500446973747269627574696f6e7a694765744f70745f4f70744172675f636f6e5f696e666f *004748437a69494f426173655f45786974537563636573735f7374617469635f656e7472790043 *6f6e74726f6c7a694d6f6e61645f73657175656e63657a755f636c6f7375726500446973747269 *627574696f6e7a6953657475705f636f6d70696c6572506174685f636c6f73757265004748437a *6953686f775f7a646653686f775a4d5a4e5f636c6f73757265007374675f63617463685f667261 *6d655f315f72657400446973747269627574696f6e7a6953657475705f48656c69756d5f737461 *7469635f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f73656172636850617468536570617261746f725f636c6f73757265004748437a69494f426173 *655f696f4572726f725f636c6f7375726500446973747269627574696f6e7a695061636b616765 *5f73686f775061636b61676549645f7372740053797374656d7a69506f7369787a69496e746572 *6e616c735f7a64776363616c6c32335f636c6f7375726500446973747269627574696f6e7a6950 *61636b6167654465736372697074696f6e5f6465736372697074696f6e5f636c6f737572650073 *74675f73656c5f31345f6e6f7570645f656e747279004748437a694e756d5f646e7a756c697374 *5f656e74727900546578747a69526561647a694c65785f50756e635f7374617469635f696e666f *00616c6c6f634e757273657269657300446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f7a646766726f6d4c6962726172795f696e666f00546578747a69526561 *647a694c65785f7a644c7235777a7a6c766c33385f656e74727900726576657274434146730054 *6578747a69526561647a694c65785f7a644c723576336133385f636c6f73757265005379737465 *6d7a69494f5f777269746546696c655f696e666f004748437a69496e745f7a74325f636c6f7375 *7265007274735f6d6b576f726438007374675f73656c5f365f6e6f7570645f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f6c766c315f636c6f73757265004748437a *69494f5f7a644c7239655a5a615f656e747279004748437a69494f426173655f7a657a65385f65 *6e747279004748437a6948616e646c655f7a644c724a626f75747075747a75666c6167735f656e *747279004748437a6948616e646c655f7a644c726330427a647768616e646c6546696e616c697a *7a65725f636c6f73757265005f5f737467696e69745f466f726569676e7a6953746f7261626c65 *5f004748437a69526561645f6c766c395f636c6f737572650070726f675f62656c636800474843 *7a6948616e646c655f6c766c35395f636c6f7375726500446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f5061636b6167654465736372697074696f6e5f656e74 *727900546578747a695072657474795072696e747a69487567686573504a5f7a644c723467756c *766c31395f656e747279004748437a6953686f775f73686f7753706163655f656e747279004469 *73747269627574696f6e7a6953696d706c657a695574696c735f636f707946696c65566572626f *73655f636c6f7375726500446973747269627574696f6e7a694765744f70745f5065726d757465 *5f7374617469635f656e74727900446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f7061727365486f6f6b65644275696c64496e666f5f656e747279004748437a *69494f426173655f7a64664d6f6e6164494f5f636c6f73757265004748437a695265616c5f6131 *335f656e74727900546578747a69526561647a694c65785f7a644c72357a7a7264735f656e7472 *79004748437a69546f7048616e646c65725f7a644c723337696c766c395f696e666f0044697374 *7269627574696f6e7a694765744f70745f7a646766726f6d41726744657363725f656e74727900 *5f5f737467696e69745f4748437a69507472004748437a694e756d5f7a6c7a655f636c6f737572 *65004748437a69576f72645f616273335f636c6f73757265004748437a69426173655f756e7061 *636b417070656e6443537472696e677a685f636c6f7375726500446973747269627574696f6e7a *69457874656e73696f6e5f4d756c7469506172616d54797065436c61737365735f737461746963 *5f696e666f00546578747a69526561647a694c65785f7a644c723576316c766c32325f656e7472 *790053797374656d7a69506f7369787a69496e7465726e616c735f637a75726d6469725f656e74 *7279004748437a69426173655f6e6f745f656e74727900446973747269627574696f6e7a695072 *6550726f636573737a69556e6c69745f5072655f7374617469635f696e666f0044697374726962 *7574696f6e7a6953657475705f4c6966745f636f6e5f696e666f007574696d654040474c494243 *5f322e30006765746377644040474c4942435f322e30004748437a69494f426173655f68614f74 *686572536964655f636c6f7375726500446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f6c69624275696c64496e666f5f656e747279004748437a69494f426173 *655f6c766c32315f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4350 *505f636c6f7375726500446973747269627574696f6e7a6953657475705f436d645f636c6f7375 *7265004748437a69496e745f7a64646d656e756d46726f6d5468656e546f5f636c6f7375726500 *446973747269627574696f6e7a695061636b6167655f7a6466526561645061636b616765496465 *6e7469666965725f696e666f004748437a695265616c5f7a647761325f636c6f73757265005f5f *737467696e69745f4748437a694e756d5f006e6578745f70656e64696e675f68616e646c657200 *7374675f7374726c656e004748437a69576f72645f7a6477746f496e7465676572315f636c6f73 *75726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *67746f4c6962726172795f696e666f00546578747a69526561647a694c65785f7a644c7235754a *6c766c31385f656e747279004748437a69526561645f6c766c32355f696e666f004748437a6953 *686f775f6134345f636c6f73757265004748437a695265616c5f73686f7773507265635f636c6f *73757265005f5f737467696e69745f4748437a69494f4261736500546578747a69526561647a69 *4c65785f7a644c723577316134385f656e747279006d7954687265616449647a685f6661737400 *4748437a6953686f775f7a64737a64646d73686f77325f636c6f73757265004748437a69496e74 *5f7a64646d7a675f636c6f73757265007374675f494e445f305f696e666f007374675f63617463 *685f6672616d655f335f726574004748437a69496e745f7a64646d6d61785f696e666f00474843 *7a6953686f775f73686f7753706163655f636c6f73757265004748437a6953686f775f6134325f *636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c *7234686b7a6477666974735f636c6f73757265004748437a695265616c5f7a64736576656e5f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467776c766c32305f696e666f00446973747269627574696f6e7a6953657475705f5265676973 *746572436d645f636c6f73757265007374675f67635f64315f696e666f0053797374656d7a6950 *6f7369787a69496e7465726e616c735f637a75756e6c696e6b5f696e666f004469737472696275 *74696f6e7a6950617273655574696c735f5374616e7a7a614669656c645f656e74727900446174 *617a695479706561626c655f547970655265705f7374617469635f656e74727900697361747479 *4040474c4942435f322e30004748437a6953686f775f7a644c72315a5a4c6c766c375f656e7472 *7900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c696365 *6e73655f656e74727900446973747269627574696f6e7a6950617273655574696c735f70617273 *654c69624e616d65515f636c6f7375726500446973747269627574696f6e7a6953657475705f70 *617273655344697374417267735f656e747279004748437a694c6973745f6c6f6f6b75705f636c *6f7375726500446973747269627574696f6e7a694765744f70745f4f70744572725f636f6e5f65 *6e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f72656164507a *75746f7a75535f696e666f00446973747269627574696f6e7a6953657475705f636f6e66696741 *6c65785f636c6f7375726500446174617a69486173685461626c655f6e65775f636c6f73757265 *00446973747269627574696f6e7a6950617273655574696c735f73686f77446570656e64656e63 *795f636c6f73757265004748437a69496e745f71756f7452656d325f696e666f00446973747269 *627574696f6e7a6953657475705f7a646766726f6d436d645f656e74727900546578747a695265 *61647a694c65785f7a644c723575707a6477667261635f656e747279004748437a69546f704861 *6e646c65725f7a644c723337756c766c31355f636c6f73757265004748437a6953686f775f7368 *6f77506172656e5f696e666f004748437a694c6973745f7a64776c656e5f696e666f0054657874 *7a69526561647a694c65785f7a644c7235786c6c766c34365f656e747279004748437a694e756d *5f7a6c7a655f696e666f004748437a694572725f6c766c395f656e747279007374675f61705f70 *5f72657400446174617a69486173685461626c655f68617368537472696e675f636c6f73757265 *004748437a69494f5f684765744275665f636c6f73757265006d656d7365744040474c4942435f *322e30004748437a69426173655f496e725f636f6e5f656e747279004748437a69426173655f6f *74686572776973655f636c6f73757265007374675f73656c5f31355f7570645f696e666f004469 *73747269627574696f6e7a6953657475705f706172736550726f6772616d617469636141726773 *5f696e666f004748437a6948616e646c655f6175676d656e74494f4572726f725f696e666f0044 *6973747269627574696f6e7a69457874656e73696f6e5f53636f70656454797065566172696162 *6c65735f7374617469635f696e666f00736d616c6c5f616c6c6f635f6c697374004748437a6948 *616e646c655f77616e745265616461626c6548616e646c655f636c6f7375726500546578747a69 *506172736572436f6d62696e61746f72737a6952656164507265635f737465705f696e666f0047 *48437a6948616e646c655f6c766c32305f656e74727900446973747269627574696f6e7a695061 *7273655574696c735f706172736556657273696f6e52616e6765515f696e666f00446973747269 *627574696f6e7a6956657273696f6e5f5468697356657273696f6e5f7374617469635f656e7472 *79005f5f737467696e69745f4748437a69556e69636f6465005f5f737467696e69745f53797374 *656d7a69506f7369787a6946696c65735f00446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f636f707972696768745f656e747279005f657869744040474c4942 *435f322e3000546578747a695072657474795072696e747a69487567686573504a5f7a644c7234 *68307a647766696c6c4e425f696e666f004748437a69426173655f7a64737a64646d6d61785f69 *6e666f00446174617a69486173685461626c655f7a64776c6f6f6b75705f656e74727900546578 *747a69506172736572436f6d62696e61746f72737a6952656164507265635f7a677a675f636c6f *7375726500446973747269627574696f6e7a6956657273696f6e5f56657273696f6e5f696e666f *004748437a69456e756d5f656664496e745f656e747279004748437a6953686f775f6135345f65 *6e74727900546578747a695072657474795072696e747a69487567686573504a5f667365705f65 *6e74727900546578747a69526561647a694c65785f7a644c7235784a6c766c35305f656e747279 *00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6a6f696e46696c *654578745f73727400446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f706b6755726c5f696e666f00546578747a69526561647a694c65785f7a644c7235753166 *726f6d496e74656772616c5f656e747279004748437a69526561645f706172656e735f656e7472 *7900546578747a69526561647a694c65785f7a644c72357a7a706c766c38395f656e7472790047 *48437a6948616e646c655f696f657a756e6f745772697461626c655f636c6f7375726500446973 *747269627574696f6e7a6953657475705f576974684863506b675f696e666f004748437a69494f *426173655f5265616448616e646c655f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723576646c766c32345f636c6f7375726500446973747269627574696f6e7a69566572 *73696f6e5f7a6466457156657273696f6e5f636c6f73757265005f5f7374675f67635f656e7465 *725f31004748437a695265616c5f61345f636c6f737572650053797374656d7a69456e7669726f *6e6d656e745f676574417267735f656e747279004748437a69426173655f5a434445715f737461 *7469635f656e74727900546578747a69526561647a694c65785f7a644c723578786c766c34385f *696e666f004748437a69426173655f636f6d706172655f656e74727900466f726569676e7a6943 *7a69537472696e675f7769746843537472696e675f656e74727900546578747a69526561647a69 *4c65785f7a644c7235753166726f6d496e74656772616c5f636c6f73757265005f5f737467696e *69745f546578747a69506172736572436f6d62696e61746f72737a695265616450004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f64726f704162736f6c75746550 *72656669785f636c6f737572650053797374656d7a694469726563746f72795f6c766c355f696e *666f004748437a69494f426173655f61375f696e666f00446973747269627574696f6e7a695369 *6d706c657a695574696c735f6469655f636c6f73757265007374675f756e636865636b65644953 *68696674524c3634004748437a69426173655f6765496e745f696e666f00446174617a69547970 *6561626c655f7a64574b657950725f636c6f73757265004748437a6953686f775f7a646653686f *775a4d5a4e5f696e666f0053797374656d7a69436d645f7a644c7233554c6c766c5f636c6f7375 *726500446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f774f7665726c6170 *70696e67496e7374616e6365735f636c6f7375726500446973747269627574696f6e7a69506172 *73655574696c735f7061727365457874656e73696f6e515f656e74727900446973747269627574 *696f6e7a6953657475705f636f6d70696c6572506174685f696e666f004748437a695265616c5f *6c766c395f636c6f7375726500446174617a694c6973745f7a644c72346e396c766c325f696e66 *6f004748437a69496e745f4936347a685f7374617469635f656e747279004748437a6948616e64 *6c655f68436c6f73655f656e7472790053797374656d7a69506f7369787a69496e7465726e616c *735f7a64776363616c6c35345f636c6f73757265004748437a695265616c5f61375f636c6f7375 *7265004748437a6953686f775f6c766c31375f696e666f004748437a694c6973745f7a644c7232 *73796c766c34325f696e666f004748437a694c6973745f706f6c797a756c6173747a715f636c6f *7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f *7a707a707a705f636c6f73757265004748437a69426173655f7a64664f72645a4d5a4e5f636c6f *737572650053746752756e00446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f72656164486f6f6b65644275696c64496e666f5f656e747279004748437a69494f *426173655f6c766c32325f656e747279004748437a69526561645f7a6473726561644c69737450 *72656344656661756c74315f656e7472790053797374656d7a69506f7369787a6946696c65735f *7468726f774572726e6f49664d696e7573317a755f656e74727900446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f6578654e616d655f636c6f73757265005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c72363863616e747a7566 *61696c5f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f77726974655061636b6167654465736372697074696f6e5f656e74727900446174617a *69486173685461626c655f7a647768617368537472696e675f696e666f00546578747a69506172 *736572436f6d62696e61746f72737a6952656164505f7a644c723174736c766c375f636c6f7375 *7265004748437a69576f72645f5733327a685f636f6e5f696e666f00446973747269627574696f *6e7a6956657273696f6e5f706172736556657273696f6e5f737274004748437a69426173655f5a *435f696e666f004748437a69456e756d5f676f7a7575707a75696e747a756c6973745f696e666f *007374675f737461636b5f736176655f656e747269657300446973747269627574696f6e7a6950 *726550726f636573737a69556e6c69745f5072655f636f6e5f696e666f007374675f67635f756e *70745f72310053797374656d7a69506f7369787a69496e7465726e616c735f61315f696e666f00 *4748437a6948616e646c655f7a644c724a626f75747075747a75666c6167735f636c6f73757265 *0073746f705469636b6572004748437a69496e745f73686f777350726563325f636c6f73757265 *00446174617a694d617962655f6d617962655f636c6f73757265004748437a69426173655f6c76 *6c315f696e666f004748437a695265616c5f6131345f636c6f7375726500446973747269627574 *696f6e7a69436f6d7061747a6952656164505f6d756e63685f7372740044697374726962757469 *6f6e7a6953657475705f436f6e666967466c6167735f7374617469635f656e7472790053797374 *656d7a694469726563746f72795f67657443757272656e744469726563746f72795f636c6f7375 *72650071756f7452656d496e74656765727a685f66617374004748437a69494f5f6c766c335f69 *6e666f00546578747a69526561647a694c65785f7a644c723577486135355f656e747279005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35355f696e666f00 *7274735f676574496e74004748437a694c6973745f706f6c797a75696e69747a715f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f636861696e6c315f696e66 *6f00446973747269627574696f6e7a6953657475705f70617273655344697374417267735f636c *6f73757265004748437a69576f72645f7a647766726f6d496e7465676572335f636c6f73757265 *004748437a6948616e646c655f7a644c724a397374647a75666c6167735f636c6f737572650047 *48437a6948616e646c655f6132345f696e666f004748437a69494f426173655f5265736f757263 *654578686175737465645f636c6f7375726500546578747a69526561647a694c65785f7a644c72 *35735a5a76616c315f656e747279004748437a69494f426173655f62696e64494f5f656e747279 *004748437a69526561645f706f6c797a75676f5f656e747279005f5f737467696e69745f446973 *747269627574696f6e7a69436f6d7061747a6952617753797374656d0044697374726962757469 *6f6e7a694765744f70745f4f7074696f6e5f7374617469635f696e666f004748437a6952656164 *5f6c766c32375f696e666f00466f726569676e7a694d61727368616c7a6941727261795f6c766c *315f636c6f73757265006c6162656c5468726561647a685f66617374004748437a69426173655f *7a6477676364496e745f696e666f0053797374656d7a69506f7369787a69496e7465726e616c73 *5f6664547970655f696e666f00446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f70617273654465736372697074696f6e5f696e666f007274735f756e6c6f636b *00546578747a69526561647a694c65785f7a644c723577486135355f636c6f7375726500474843 *7a6948616e646c655f7a644c7262596a6c766c31355f656e7472790053797374656d7a69456e76 *69726f6e6d656e745f67657450726f674e616d655f696e666f0053797374656d7a694469726563 *746f72795f7a6477676f5f656e747279004748437a6953686f775f6137325f636c6f7375726500 *4748437a69494f426173655f6c766c33315f696e666f0053797374656d7a69506f7369787a6949 *6e7465726e616c735f636f6e73747a75667a75736574666c5f696e666f00696e74657270726574 *42434f00546578747a69526561647a694c65785f7a644c723578626136305f636c6f7375726500 *4748437a69496e745f6c766c32385f656e747279004748437a694e756d5f6c766c31325f636c6f *7375726500546578747a695072657474795072696e747a69487567686573504a5f7a647766696c *6c315f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f *726564756365446f63315f636c6f7375726500446973747269627574696f6e7a69506172736555 *74696c735f6669656c644e616d655f696e666f00446973747269627574696f6e7a69457874656e *73696f6e5f466c657869626c65436f6e74657874735f7374617469635f696e666f004469737472 *69627574696f6e7a6950617273655574696c735f50617273654f6b5f7374617469635f656e7472 *7900446973747269627574696f6e7a69457874656e73696f6e5f7a646653686f77457874656e73 *696f6e5f636c6f7375726500446174617a695479706561626c655f6d6b5479436f6e5f636c6f73 *757265004572726f72486472486f6f6b004748437a695265616c5f66726f6d496e74656772616c *5f656e74727900446174617a694d617962655f4a7573745f656e74727900446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f746573746564576974685f696e666f *004748437a694172725f7a644c723575446c766c365f696e666f004748437a69494f5f68507574 *4275665f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952656164 *505f6c766c335f696e666f007374675f67635f6e6f7265677300446174617a695479706561626c *655f5479436f6e5f636f6e5f696e666f004748437a69494f426173655f61355f696e666f00466f *726569676e7a6953746f7261626c655f6c766c5f636c6f737572650053797374656d7a69506f73 *69787a69496e7465726e616c735f73697a7a656f667a75737461745f636c6f7375726500537973 *74656d7a69506f7369787a69496e7465726e616c735f656e647a756f667a756469725f636c6f73 *75726500436f6e74726f6c7a694d6f6e61645f6d61704d7a755f696e666f007374675f73656c5f *315f7570645f656e747279004748437a6953686f775f6136315f636c6f7375726500546578747a *69526561647a694c65785f7a644c7268576c65784469676974735f696e666f004748437a695368 *6f775f6c766c32345f696e666f007374675f494e445f4f4c4447454e5f696e666f004748437a69 *426173655f6774496e745f696e666f00446973747269627574696f6e7a6953657475705f436d64 *5f696e666f007374675f61705f315f7570645f696e666f004748437a69496e745f746f52617469 *6f6e616c325f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a64665368 *6f7756657273696f6e52616e67655f636c6f7375726500446174617a695479706561626c655f7a *644c727864686173684b505f696e666f00446973747269627574696f6e7a6953657475705f7061 *7273655344697374417267735f737274004748437a69576f72645f7a6d335f636c6f7375726500 *7374675f6c65576f72643634004748437a69426173655f7a64737a64646d7a737a655f636c6f73 *757265004748437a6948616e646c655f6c766c315f696e666f004748437a695265616c5f7a6477 *61365f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a75415050 *454e445f696e666f00446973747269627574696f6e7a6953657475705f576974684863506b675f *656e747279005f5f737467696e69745f546578747a6952656164004748437a69426173655f666f *6c64725f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65506174 *685f69734162736f6c757465506174685f73727400546578747a69526561647a694c65785f7a64 *4c7235794e6c766c37395f636c6f73757265004748437a695265616c5f6c766c355f636c6f7375 *7265004748437a69526561645f6c6973745f656e74727900446973747269627574696f6e7a6943 *6f6d7061747a6946696c65506174685f73706c697446696c65506174685f737274004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f6973526f6f746564506174685f *73727400446973747269627574696f6e7a695061636b6167655f706b674e616d655f636c6f7375 *7265007374675f61705f345f7570645f656e74727900446174617a695479706561626c655f4361 *6368655f636f6e5f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f *7a64776363616c6c37375f636c6f73757265007374675f61705f665f696e666f007374675f696e *743634546f496e7400446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f6a6f696e46696c654e616d655f636c6f7375726500466f726569676e7a69437a694572726f72 *5f7a644c723353517a64776363616c6c5f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f6761746865725f636c6f73757265004748437a694e756d5f676364 *496e74656765725f656e747279007374726e6370794040474c4942435f322e3000546578747a69 *526561647a694c65785f7a644c723579356c766c35375f636c6f737572650053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c33305f736c6f7700446973747269 *627574696f6e7a6950617273655574696c735f70617273654f707456657273696f6e5f636c6f73 *757265004748437a695265616c5f7a647761335f656e747279005f5f737467696e69745f446174 *617a695475706c65004748437a69426173655f7a677a677a655f656e7472790044697374726962 *7574696f6e7a6956657273696f6e5f56657273696f6e5f7374617469635f696e666f004748437a *69496e745f7a644c723945436c766c31355f696e666f004748437a694e756d5f706c7573496e74 *656765725f656e747279004748437a69494f426173655f54696d65457870697265645f73746174 *69635f696e666f00446973747269627574696f6e7a6950617273655574696c735f4e6f50617273 *655f636f6e5f696e666f00546578747a695072657474795072696e747a69487567686573504a5f *687365705f656e747279004748437a69556e69636f64655f697353706163655f656e7472790063 *6c6f737572655f666c616773004748437a694e756d5f6c69745f636c6f73757265005f5f737467 *696e69745f4748437a6953545265665f00446973747269627574696f6e7a695061727365557469 *6c735f50617273654661696c65645f636c6f737572650053797374656d7a69506f7369787a6946 *696c65735f66696c654d6f64655f636c6f7375726500446973747269627574696f6e7a69536574 *75705f636f6e6669674863506174685f656e747279004748437a69526561645f706172656e735f *636c6f73757265007274735f6d6b496e7438004748437a694c6973745f6c6173745f696e666f00 *466f726569676e7a69437a694572726f725f6572726e6f546f494f4572726f725f636c6f737572 *650053797374656d7a694469726563746f72795f6c766c32355f696e666f00546578747a695265 *61647a694c65785f7a644c723578626136305f656e74727900446973747269627574696f6e7a69 *50617273655574696c735f73706c69745374616e7a7a61735f656e7472790053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c37345f636c6f7375726500546578 *747a69526561647a694c65785f7a644c7235764a6134355f656e74727900546578747a69507265 *7474795072696e747a69487567686573504a5f7a644c723468697365704e42315f636c6f737572 *650053797374656d7a69457869745f6c766c325f636c6f7375726500446973747269627574696f *6e7a694c6963656e73655f416c6c52696768747352657365727665645f7374617469635f696e66 *6f004748437a6953686f775f6132305f636c6f73757265004748437a695265616c5f665f696e66 *6f00446174617a694c6973745f6e75625f656e747279007374675f494e445f5045524d5f696e66 *6f004748437a6953686f775f6c766c31375f656e747279004748437a694c6973745f7375625f65 *6e747279004748437a694c6973745f7a644c7232726d6c766c31335f656e747279007374675f6e *65496e74363400446174617a694d617962655f636f6e327461677a754d617962657a685f636c6f *7375726500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f636f6d *6d6f6e506172656e745f696e666f004748437a6948616e646c655f7a644c7263307a7a7468726f *774572726e6f49664d696e75733152657472797a755f636c6f73757265004748437a69494f5f7a *64777772697465426c6f636b735f696e666f00546578747a69526561647a694c65785f7a644c72 *3579666c766c36325f636c6f73757265004748437a69546f7048616e646c65725f7a644c723337 *696c766c395f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6c76 *6c315f656e747279004748437a69494f426173655f457869744661696c7572655f636f6e5f696e *666f004748437a695265616c5f6e6f74414e756d6265725f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c72684b6c65784e756d6265725f696e666f00546578747a69526561 *647a694c65785f7a644c7235784e7833325f636c6f7375726500546578747a69526561647a694c *65785f7a644c723577586c766c34325f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723577646135305f636c6f7375726500546578747a69526561647a694c65785f7a644c *723577526c766c34315f636c6f73757265004748437a694e756d5f6469764d6f64496e74656765 *725f636c6f73757265004748437a694e756d5f656e756d46726f6d5f696e666f004748437a6949 *6e745f616273325f636c6f73757265005f5f676d707a5f746469765f710053797374656d7a6950 *6f7369787a69496e7465726e616c735f7a64776363616c6c33355f636c6f73757265004748437a *6948616e646c655f6c766c31365f656e747279004748437a69526561645f6c766c32345f656e74 *7279004748437a69494f426173655f4c696e65427566666572696e675f7374617469635f696e66 *6f00446973747269627574696f6e7a6950617273655574696c735f70617273654c69624e616d65 *515f656e747279004748437a69426173655f7a657a65345f656e74727900446973747269627574 *696f6e7a6956657273696f6e5f73686f7756657273696f6e52616e67655f636c6f737572650073 *74675f67635f66756e5f696e666f00446973747269627574696f6e7a695061636b6167655f5061 *636b6167654964656e7469666965725f636f6e5f696e666f00446973747269627574696f6e7a69 *53696d706c657a695574696c735f6469655f737274004748437a69494f426173655f6132385f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c723578506c766c35315f656e74 *7279004748437a69426173655f7a64646d7a677a655f656e74727900446973747269627574696f *6e7a6953657475705f636d644e616d655f656e74727900546578747a695072657474795072696e *747a69487567686573504a5f7a64776d6b4e6573745f696e666f007374675f61705f7070765f72 *657400446973747269627574696f6e7a69436f6d7061747a694469726563746f72795f66696e64 *45786563757461626c655f73727400446973747269627574696f6e7a694765744f70745f4f7074 *4572725f696e666f00446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f726561645061636b6167654465736372697074696f6e5f636c6f73757265004748437a69 *494f426173655f4f746865724572726f725f7374617469635f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f6f746865724d6f64756c65735f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7542494e4152595f *696e666f00436f6e74726f6c7a69457863657074696f6e5f627261636b65745f656e7472790047 *48437a695265616c5f7a644c7235315a5a6c766c375f656e747279004748437a69494f42617365 *5f756e73616665496e7465726c65617665494f5f656e747279005f5f737467696e69745f537973 *74656d7a6954696d655f00616c6c6f63617465004748437a69576f72645f66726f6d496e746567 *6572335f656e747279004748437a6953686f775f73686f777350726563325f656e747279004748 *437a69494f426173655f53656d69436c6f73656448616e646c655f636c6f73757265005f5f7374 *67696e69745f53797374656d7a69494f004748437a69494f426173655f4e6f537563685468696e *675f7374617469635f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f52 *616e6b4e54797065735f7374617469635f656e747279004748437a69456e756d5f656664496e74 *46425f696e666f0053797374656d7a69456e7669726f6e6d656e745f676f5f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f637a75636c6f73656469725f636c6f7375 *7265004748437a69456e756d5f656e756d46726f6d5468656e546f335f656e747279004748437a *69494f5f7a644c723966766c766c31305f696e666f004748437a694e756d5f7a647771756f7452 *656d496e74656765725f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f *52616e6b4e54797065735f636c6f73757265004748437a695265616c5f6c766c365f696e666f00 *6b696c6c5468726561647a685f66617374004748437a695265616c5f5a4344496e74656772616c *5f636f6e5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f65 *6e6442795f73727400446973747269627574696f6e7a6953657475705f636f6e6669674863466c *61766f725f636c6f73757265005f5f696e69745f61727261795f7374617274004748437a69496e *745f7a64777368696674335f656e747279004748437a694e756d5f7369676e756d325f656e7472 *7900446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f436f6d6d65 *6e745f636c6f73757265004748437a69494f426173655f72657475726e494f5f656e7472790053 *797374656d7a69506f7369787a6946696c65735f66696c654d6f64655f656e7472790054657874 *7a69526561647a694c65785f7a644c723578396c766c34345f656e74727900546578747a695265 *61647a694c65785f7a644c7235766878365f636c6f7375726500546578747a69526561647a694c *65785f7a644c7235734e6c766c335f636c6f73757265005f5f737467696e69745f546578747a69 *526561645f00546578747a69526561647a694c65785f7a644c723577376134395f696e666f0044 *6973747269627574696f6e7a6953657475705f7061727365436f7079417267735f696e666f0044 *6174617a694d617962655f636f6e327461677a754d617962657a685f696e666f00446973747269 *627574696f6e7a6953657475705f4842435f7374617469635f696e666f004748437a694e756d5f *696e7432496e74656765725f696e666f00446174617a695479706561626c655f676f315f636c6f *73757265004748437a69426173655f547275655f7374617469635f656e747279007374675f6170 *5f6e5f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f506172616c6c65 *6c4c697374436f6d705f7374617469635f656e74727900436f6e74726f6c7a694d6f6e61645f66 *6f6c644d5f636c6f73757265004748437a69496e745f7a646653686f77496e7433325f636c6f73 *757265004748437a69546f7048616e646c65725f7a644c723336556c766c5f656e747279006e65 *77434146004748437a6953686f775f6133305f636c6f73757265004748437a694e756d5f7a6477 *71756f7452656d496e74656765725f656e747279004748437a69494f426173655f526561644d6f *64655f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f *636861696e725f636c6f7375726500446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f7a646766726f6d45786563757461626c655f656e747279007374675f6361 *7463685f6672616d655f696e666f0053797374656d7a69457869745f6c766c335f736c6f770047 *48437a69426173655f556e69745f7374617469635f656e747279004748437a695265616c5f6134 *5f696e666f005f5f6d6f64646933004748437a69496e745f6d6f64325f636c6f73757265004748 *437a69546f7048616e646c65725f746f7048616e646c65725f696e666f004748437a6948616e64 *6c655f6f70656e46645f636c6f73757265004748437a694c6973745f6c656e6774685f696e666f *005f5f737467696e69745f4748437a6948616e646c655f004748437a69494f426173655f494f45 *72726f725f636f6e5f696e666f006465526566537461626c6550747200546578747a6952656164 *7a694c65785f7a644c723575546133365f636c6f7375726500446973747269627574696f6e7a69 *457874656e73696f6e5f657874656e73696f6e73546f48756773466c61675f656e747279004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f6d6f64756c655061 *74685f636c6f73757265004748437a69496e745f70726564325f656e747279004748437a69456e *756d5f6c766c31385f656e747279005f5f676d705f7365745f6d656d6f72795f66756e6374696f *6e73007374675f73656c5f31315f7570645f696e666f004748437a69546f7048616e646c65725f *7a644c7233376f6c766c31325f636c6f7375726500446174617a694c6973745f776f7264735f65 *6e747279004748437a695265616c5f6469764d6f64315f636c6f73757265004748437a6953686f *775f73686f777350726563325f696e666f00546578747a69526561647a694c65785f7a644c7235 *797a7a6c766c37325f636c6f737572650062656c6368004748437a6953686f775f6132385f696e *666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a6467 *66726f6d4275696c64496e666f5f696e666f004748437a695265616c5f7a6477746f526174696f *6e616c5f696e666f004748437a69426173655f7a737a65325f656e747279004469737472696275 *74696f6e7a6953657475705f496e73745072656669785f696e666f00546578747a69526561647a *694c65785f7a644c723576566134375f636c6f7375726500446973747269627574696f6e7a6953 *696d706c657a695574696c735f736d617274436f7079536f75726365735f696e666f004748437a *6953686f775f6133345f636c6f7375726500446973747269627574696f6e7a6950617273655574 *696c735f73686f7746726565546578745f656e74727900466f726569676e7a694d61727368616c *7a69416c6c6f635f6c766c325f696e666f0053797374656d7a694469726563746f72795f646f65 *734469726563746f727945786973745f656e747279004748437a69576f72645f7a6d335f696e66 *6f00446973747269627574696f6e7a6950617273655574696c735f4e6f50617273655f656e7472 *79004748437a6948616e646c655f696f657a75636c6f73656448616e646c655f696e666f005465 *78747a69526561647a694c65785f7a644c72357a7a666c766c38375f696e666f004748437a6948 *616e646c655f6f70656e46696c657a715f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f6f7074696f6e616c5f737274007274735f6d6b576f726400466f72 *6569676e7a6953746f7261626c655f706f6c797a75616c69676e6d656e74325f696e666f004748 *437a69556e69636f64655f697344696769745f696e666f00446174617a695479706561626c655f *7a644c72364f4f74626c315f656e747279004748437a6953686f775f6137365f696e666f005465 *78747a69526561647a694c65785f7a644c7235747a7a6132355f636c6f73757265005f494f5f73 *7464696e5f7573656400546578747a69506172736572436f6d62696e61746f72737a6952656164 *507265635f707265635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c73 *5f656e647a756f667a756469725f656e747279005f5f737467696e69745f466f726569676e7a69 *5074725f00446973747269627574696f6e7a6953657475705f70617273654275696c6441726773 *5f696e666f004748437a694e756d5f7a644c723278426c766c355f656e7472790053797374656d *7a69457869745f615f656e747279004748437a694572725f7061744572726f725f696e666f0044 *6973747269627574696f6e7a6953657475705f7061727365486164646f636b417267735f636c6f *73757265007374675f756e626c6f636b4173796e63457863657074696f6e737a685f7265745f65 *6e74727900446973747269627574696f6e7a69436f6d7061747a694469726563746f72795f6765 *74486f6d654469726563746f72795f636c6f7375726500446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f7a646766726f6d4275696c64496e666f5f636c6f7375 *726500436f6e74726f6c7a694d6f6e61645f6d61704d7a755f636c6f7375726500736368656475 *6c65546872656164004748437a69546f7048616e646c65725f6b5f636c6f73757265005f5f7374 *67696e69745f466f726569676e004748437a69526561645f7a6466526561645a4d5a4e5f636c6f *73757265005f5f737467696e69745f466f726569676e7a694d61727368616c7a69416c6c6f635f *004748437a69494f426173655f6c766c33345f696e666f004748437a6953686f775f7a64737a64 *646d73686f77325f696e666f00546578747a695072657474795072696e747a6948756768657350 *4a5f70756e6374756174655f656e74727900446973747269627574696f6e7a6953657475705f7a *646766726f6d436f6d70696c6572466c61766f725f696e666f004748437a694e756d5f656e756d *44656c7461496e74656765725f656e747279004748437a695265616c5f7a635f656e7472790053 *797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c375f656e747279 *004748437a6953686f775f69746f735f636c6f73757265004748437a6953686f775f6134305f69 *6e666f0073636176656e6765645f7374617469635f6f626a65637473004748437a694c6973745f *66696c7465725f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f6c76 *6c5f656e747279005f5f737467696e69745f446174617a6944796e616d69630044697374726962 *7574696f6e7a69436f6d7061747a6952656164505f6765745f656e74727900546578747a695265 *61647a694c65785f7a644c723577706135325f696e666f00446973747269627574696f6e7a6950 *61636b6167654465736372697074696f6e5f7570646174655061636b6167654465736372697074 *696f6e5f696e666f004748437a69546f7048616e646c65725f7a644c723337776c766c31365f63 *6c6f73757265004748437a6953686f775f7a644c72315a5a6461325f656e747279004469737472 *69627574696f6e7a6953657475705f48656c70466c61675f7374617469635f696e666f00466f72 *6569676e7a694d61727368616c7a69416c6c6f635f7a6477616c6c6f636142797465735f636c6f *7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f *706661696c5f656e74727900446973747269627574696f6e7a6956657273696f6e5f7061727365 *56657273696f6e5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a *64776363616c6c33345f656e747279004748437a6948616e646c655f7a644c7262585a5a6c766c *355f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c36335f696e666f007374675f61705f6c5f726574004748437a69426173655f7a647767 *6364496e745f656e747279004748437a69494f5f696c6c6567616c42756666657253697a7a655f *696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f6f7074696f6e *5f73727400446973747269627574696f6e7a694c6963656e73655f5075626c6963446f6d61696e *5f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164 *505f6d616e7954696c6c5f636c6f73757265004748437a695074725f636173745074725f696e66 *6f004748437a6948616e646c655f7a644c724a6677726974657a75666c6167735f656e74727900 *446174617a694d617962655f7a644c7252426c766c5f696e666f00546578747a69526561647a69 *4c65785f454f465f7374617469635f656e74727900546578747a69526561647a694c65785f7a64 *4c7235786c6c766c34365f636c6f73757265004748437a6948616e646c655f6f70656e42696e61 *727946696c655f696e666f004748437a69494f5f7a647777726974654c696e65735f736c6f7700 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c365f636c6f73 *75726500546578747a69526561647a694c65785f7a644c7235767a7a78395f636c6f7375726500 *4748437a6948616e646c655f7a644c726258446131385f696e666f004748437a69494f42617365 *5f62756653697a7a655f656e74727900446973747269627574696f6e7a6953657475705f7a6467 *746f416374696f6e5f636c6f7375726500466f726569676e7a694d61727368616c7a6941727261 *795f706f6b654172726179305f696e666f004748437a69494f5f7a6477685075744275667a715f *696e666f004748437a695265616c5f66726f6d496e74656772616c5f696e666f004748437a6953 *686f775f6131355f636c6f73757265004748437a695265616c5f7a637a635f696e666f00474843 *7a6953686f775f7a646653686f774d617962655f636c6f73757265004748437a69494f42617365 *5f6c766c33335f636c6f7375726500546578747a69526561647a694c65785f7a644c723575356c *766c31335f696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e6c *69745f5072655f656e74727900446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f657874656e73696f6e735f656e74727900446973747269627574696f6e7a6950 *726550726f636573737a69556e6c69745f50726f6772616d5f636f6e5f656e7472790054657874 *7a695072657474795072696e747a69487567686573504a5f70756e6374756174655f636c6f7375 *726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f656d70 *74795061636b6167654465736372697074696f6e5f636c6f73757265007374675f73656c5f345f *6e6f7570645f656e74727900546578747a69526561647a694c65785f7a644c723576467831305f *636c6f7375726500446973747269627574696f6e7a694765744f70745f4e6f6e4f70745f696e66 *6f004748437a6953686f775f6137345f656e747279004748437a6953686f775f6131325f656e74 *7279007363686564756c6557616974546872656164004748437a69426173655f6571537472696e *675f696e666f00436f6e74726f6c7a694d6f6e61645f6c6966744d5f696e666f00446973747269 *627574696f6e7a6956657273696f6e5f73686f7756657273696f6e5f636c6f7375726500696e74 *3634546f496e74656765727a685f66617374004748437a69494f5f7a644c723966646c766c315f *696e666f00546578747a69506172736572436f6d62696e61746f72737a6952656164505f46696e *616c5f636f6e5f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164 *505f4c6f6f6b5f636c6f7375726500446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f4275696c64496e666f5f736c6f770053797374656d7a69436d645f7a644c *7233554c6c766c5f656e747279004748437a6948616e646c655f7a644c724a626f75747075747a *75666c6167735f696e666f004748437a69494f426173655f627566525074725f696e666f004469 *73747269627574696f6e7a6950617273655574696c735f7061727365436f6d6d614c6973745f69 *6e666f00446973747269627574696f6e7a694c6963656e73655f425344335f7374617469635f69 *6e666f00436f6e74726f6c7a694d6f6e61645f73657175656e63657a755f656e74727900537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35345f696e666f0047 *48437a69494f5f7a644c7239655a5a615f636c6f73757265004748437a69496e745f6c766c3239 *5f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a754e4f *4e424c4f434b5f636c6f73757265004748437a695265616c5f5a43445265616c5f737461746963 *5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7361746973 *66795f696e666f00446973747269627574696f6e7a695061636b6167655f70617273655061636b *6167654e616d655f656e747279005f5f737467696e69745f446174617a69426f6f6c5f00474843 *7a6953686f775f5a434453686f775f7374617469635f656e74727900446973747269627574696f *6e7a69436f6d7061747a6952656164505f706661696c5f636c6f73757265004748437a69576f72 *645f5731367a685f636f6e5f696e666f00546578747a69506172736572436f6d62696e61746f72 *737a6952656164505f72657475726e5f656e74727900446973747269627574696f6e7a69507265 *50726f636573737a69556e6c69745f426c616e6b5f7374617469635f656e747279007265616464 *697236345f724040474c4942435f322e320053797374656d7a69506f7369787a69496e7465726e *616c735f7a644c733869727361745f696e666f004748437a695265616c5f746f526174696f6e61 *6c325f656e747279004748437a69496e745f6d6f64325f656e747279007274735f6d6b576f7264 *3634004748437a69546f7048616e646c65725f72756e494f5f636c6f737572650053797374656d *7a69436d645f615f696e666f007374675f64756d6d795f7265745f656e74727900636d705f7468 *72656164004748437a69494f426173655f7a737a65355f636c6f73757265004469737472696275 *74696f6e7a694765744f70745f4e6f4172675f7374617469635f656e74727900546578747a6952 *6561647a694c65785f7a644c723575786c766c31365f636c6f7375726500446973747269627574 *696f6e7a6953696d706c657a695574696c735f636f707946696c65566572626f73655f656e7472 *790053797374656d7a69436d645f7a644c7233554c6c766c5f696e666f004748437a6942617365 *5f47545f7374617469635f656e747279006d6b5765616b7a685f66617374004748437a69426173 *655f7a644c723266336c766c325f696e666f00546578747a69526561647a694c65785f7a644c72 *3575586133375f636c6f7375726500546578747a69526561647a694c65785f7a644c72357a7a39 *6136395f656e74727900546578747a69526561647a694c65785f7a644c7235766a6c766c32355f *636c6f7375726500446174617a69486173685461626c655f48545f7374617469635f656e747279 *004748437a69526561645f7265616450726563345f656e74727900446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f7a64665265616445786563757461626c655f *636c6f7375726500446174617a695479706561626c655f6d6b41707054795f636c6f7375726500 *53797374656d7a69506f7369787a69496e7465726e616c735f7a644c733869727361745f736c6f *7700546578747a695072657474795072696e747a69487567686573504a5f687365705f636c6f73 *75726500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6368616e *676546696c654578745f636c6f7375726500446973747269627574696f6e7a6953657475705f57 *697468486164646f636b5f7374617469635f656e7472790053797374656d7a69506f7369787a69 *496e7465726e616c735f6f7a7552444f4e4c595f656e747279004748437a69576f72645f57387a *685f636f6e5f696e666f00446174617a695475706c655f736e645f656e747279007374675f6361 *7463685f6672616d655f375f726574004748437a69426173655f6c74496e745f636c6f73757265 *00446973747269627574696f6e7a6950617273655574696c735f50617273654f6b5f636f6e5f69 *6e666f004748437a695265616c5f6469764d6f64315f656e74727900446973747269627574696f *6e7a6950617273655574696c735f7a6467746f504572726f725f636c6f73757265004748437a69 *494f426173655f6c766c32375f696e666f004748437a6948616e646c655f61315f656e74727900 *466f726569676e7a694d61727368616c7a6941727261795f776974684172726179305f656e7472 *7900446973747269627574696f6e7a6950617273655574696c735f706172736551756f7465645f *73727400446973747269627574696f6e7a6953657475705f7a646652656164436f6d70696c6572 *5f636c6f73757265004748437a69576f72645f5733327a685f7374617469635f656e7472790044 *6973747269627574696f6e7a6956657273696f6e5f73686f7756657273696f6e5f737274004748 *437a69496e745f7a64646d7a6c5f656e7472790066726565537461626c6550747200546578747a *69526561647a694c65785f7a644c7235764e6c766c33305f636c6f7375726500546578747a6952 *6561647a694c65785f496e745f7374617469635f656e74727900446174617a695479706561626c *655f7a644c72364f4f74626c315f636c6f7375726500446973747269627574696f6e7a69536574 *75705f636f6d70696c6572466c61766f725f656e74727900446973747269627574696f6e7a6953 *696d706c657a695574696c735f64656661756c745061636b616765446573635f7372740070726f *675f61726776007274735f676574496e74313600546578747a69506172736572436f6d62696e61 *746f72737a6952656164505f6d706c75735f656e747279004748437a69494f426173655f427566 *6665724c697374436f6e735f636f6e5f696e666f004748437a6953545265665f53545265665f63 *6f6e5f656e747279005f5f737467696e69745f53797374656d7a69506f7369787a69456e760044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f5061636b616765 *4465736372697074696f6e5f696e666f00446973747269627574696f6e7a6953696d706c657a69 *5574696c735f64656661756c74486f6f6b65645061636b616765446573635f656e747279006162 *734040474c4942435f322e3000546578747a69526561647a694c65785f7a644c723574526c766c *395f656e747279004748437a695765616b5f7a647772756e46696e616c697a7a65724261746368 *5f656e747279006768635f7274735f6f707473004748437a69494f426173655f48617264776172 *654661756c745f7374617469635f696e666f004748437a69556e69636f64655f69735370616365 *5f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f7261775379 *7374656d566572626f73655f696e666f004748437a69576f72645f7369676e756d335f656e7472 *7900446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f496e636c75 *64655f636f6e5f656e747279004748437a6953686f775f6134305f656e747279004748437a6952 *65616c5f7a657a655f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f50 *6f6c796d6f7270686963436f6d706f6e656e74735f636c6f737572650044697374726962757469 *6f6e7a6953657475705f4c6966745f636c6f7375726500546578747a69526561647a694c65785f *7a644c723577746c766c33375f696e666f0053797374656d7a69457869745f6c766c315f696e66 *6f00446973747269627574696f6e7a6953657475705f436f7079436d645f7374617469635f696e *666f00446973747269627574696f6e7a694765744f70745f456e644f664f7074735f636c6f7375 *7265004748437a695265616c5f61375f696e666f0053797374656d7a69506f7369787a69496e74 *65726e616c735f6f7a754e4f435454595f696e666f004748437a69494f426173655f7a657a6538 *5f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4d756c746950617261 *6d54797065436c61737365735f7374617469635f656e7472790053797374656d7a694469726563 *746f72795f7468726f774572726e6f49664d696e75733152657472797a755f656e747279004748 *437a6948616e646c655f7345454b7a754355525f636c6f7375726500446174617a695479706561 *626c655f4b657950725f636f6e5f656e74727900446973747269627574696f6e7a695365747570 *5f496e73745072656669785f656e74727900446174617a694c6973745f66696e645f636c6f7375 *7265004748437a695265616c5f5a437a765f636f6e5f696e666f00446973747269627574696f6e *7a6956657273696f6e5f556e696f6e56657273696f6e52616e6765735f696e666f004469737472 *69627574696f6e7a6950617273655574696c735f6669656c644765745f636c6f73757265004469 *73747269627574696f6e7a6953696d706c657a695574696c735f64656661756c74486f6f6b6564 *5061636b616765446573635f696e666f00446973747269627574696f6e7a694765744f70745f67 *65744f70745f636c6f73757265004748437a6948616e646c655f7374646f75745f656e74727900 *546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f6661696c5f *696e666f00737072696e74664040474c4942435f322e3000446973747269627574696f6e7a6953 *657475705f576974684863506b675f636f6e5f656e747279004748437a69494f426173655f4172 *697468457863657074696f6e5f636f6e5f696e666f00446174617a695475706c655f5a32545f73 *74617469635f656e747279004748437a694e756d5f6c766c31345f636c6f737572650044697374 *7269627574696f6e7a6950726550726f636573737a69556e6c69745f496e636c7564655f737461 *7469635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c36345f696e666f00546578747a69526561647a694c65785f7a644c72357a7a316c657841 *736369695f636c6f7375726500446973747269627574696f6e7a694765744f70745f7a64676672 *6f6d4f70744b696e645f636c6f73757265006677726974654040474c4942435f322e3000474843 *7a69494f426173655f6861427566666572735f656e74727900446973747269627574696f6e7a69 *436f6d7061747a6952656164505f636861725f636c6f73757265007374675f67635f67656e5f72 *6574004748437a69494f426173655f44697669646542795a5a65726f5f7374617469635f656e74 *7279004748437a69494f5f7a644c723966566c766c31395f636c6f73757265004748437a69494f *5f7a644c723966746c766c395f656e747279007274735f676574576f7264004748437a69546f70 *48616e646c65725f7a644c723337716c766c31335f656e74727900546578747a69526561647a69 *4c65785f436861725f7374617469635f696e666f004748437a695265616c5f7a647766315f696e *666f004748437a69426173655f5a30545f7374617469635f696e666f00546578747a6952656164 *7a694c65785f7a644c72357a7a786c766c39325f636c6f73757265004748437a69496e745f7a64 *77626f756e646564456e756d46726f6d5468656e5f696e666f0066696e616c697a655765616b50 *6f696e746572734e6f7700446973747269627574696f6e7a69457874656e73696f6e5f45786973 *74656e7469616c5175616e74696669636174696f6e5f7374617469635f656e7472790067307330 *00446973747269627574696f6e7a69457874656e73696f6e5f4172726f77735f7374617469635f *696e666f004748437a69576f72645f577a685f7374617469635f656e747279004748437a694861 *6e646c655f64735f656e747279004748437a695265616c5f61365f696e666f004748437a69546f *7048616e646c65725f746f7048616e646c65725f636c6f7375726500446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f7061636b6167655f656e74727900474843 *7a69494f5f7a6477636f6d6d69744275666665727a715f636c6f73757265004748437a69426173 *655f4c545f7374617469635f656e747279005f5f737467696e69745f446973747269627574696f *6e7a69436f6d7061747a6946696c65506174685f004748437a6948616e646c655f696f657a756e *6f745265616461626c655f656e74727900466f726569676e7a6953746f7261626c655f5a434453 *746f7261626c655f7374617469635f696e666f004748437a6948616e646c655f7a647766696c6c *526561644275666665724c6f6f705f636c6f737572650053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c32315f696e666f005f5f646174615f73746172740047 *48437a69494f5f7a644c723966726c766c385f656e747279004748437a6953686f775f6135315f *636c6f73757265004748437a69496e745f49387a685f7374617469635f656e747279005f5f7374 *67696e69745f4e756d657269635f007374675f455843455054494f4e5f434f4e535f696e666f00 *546578747a695072657474795072696e747a69487567686573504a5f7a64776d6b4e6573745f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f456d7074 *795f636c6f73757265004748437a69526561645f726561644c6973745072656344656661756c74 *5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f64726f704162736f6c7574655072656669785f696e666f00446973747269627574696f6e7a69 *436f6d7061747a6946696c65506174685f6a6f696e46696c654578745f696e666f004469737472 *69627574696f6e7a6953657475705f436c65616e436d645f7374617469635f696e666f00474843 *7a69576f72645f5731367a685f7374617469635f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f6c766c31325f636c6f737572650053797374656d7a69456e76 *69726f6e6d656e745f676f325f656e74727900446973747269627574696f6e7a69506172736555 *74696c735f73686f77446570656e64656e63795f656e747279004748437a694e756d5f75707a75 *66625f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f7061727365536561726368506174685f656e74727900446973747269627574696f6e7a694765 *744f70745f4f70744172675f696e666f0053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c36345f636c6f73757265005f5f737467696e69745f466f726569676e *7a694300446973747269627574696f6e7a6956657273696f6e5f5468697356657273696f6e5f63 *6c6f73757265004748437a6948616e646c655f6c766c31345f656e747279004748437a69457272 *5f6572726f725f696e666f004748437a69526561645f61345f636c6f737572650053797374656d *7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32375f636c6f737572650054 *6578747a69526561647a694c65785f7a644c723574566c766c31315f636c6f7375726500546578 *747a69526561647a694c65785f7a644c72357a7a316c657841736369695f696e666f004748437a *6948616e646c655f7a644c726333766c766c3130305f636c6f73757265004748437a6948616e64 *6c655f6131375f696e666f004748437a69426173655f756e7061636b466f6c647243537472696e *677a685f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f7a64664571 *457874656e73696f6e5f636c6f73757265004748437a6953686f775f7a646653686f77496e745f *636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f7a6466 *46756e63746f725061727365725f656e74727900446973747269627574696f6e7a694765744f70 *745f6765744f70747a715f636c6f7375726500446973747269627574696f6e7a69506172736555 *74696c735f73696d706c654669656c645f656e74727900446973747269627574696f6e7a695365 *7475705f636f6d70696c6572466c61766f725f636c6f73757265004748437a694c6973745f6d61 *78696d756d5f656e747279004748437a69494f426173655f6c766c31395f636c6f737572650073 *74675f494e445f365f696e666f004748437a6948616e646c655f77616e745265616461626c6548 *616e646c657a715f656e74727900546578747a695072657474795072696e747a69487567686573 *504a5f4e696c41626f76655f7374617469635f656e747279004748437a69496e745f66726f6d49 *6e7465676572325f656e747279004748437a6948616e646c655f7a644c724a726d6b46696c6548 *616e646c655f636c6f7375726500446174617a695479706561626c655f7a64574b657950725f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c34 *305f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f666454797065 *5f636c6f7375726500446174617a694d617962655f66726f6d4d617962655f656e747279004748 *437a695265616c5f7a64646d73686f775f696e666f004748437a6948616e646c655f657272355f *636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f613235 *5f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f7a6467746f *504572726f725f656e747279005f5f737467696e69745f466f726569676e5f004748437a69546f *7048616e646c65725f7265706f72744572726f725f636c6f737572650044697374726962757469 *6f6e7a6950617273655574696c735f706172736546696c6550617468515f696e666f004748437a *6953686f775f6132365f636c6f73757265004748437a6948616e646c655f657272335f636c6f73 *757265007374675f71756f74576f7264363400546578747a69526561647a694c65785f7a644c72 *3577686c766c33355f696e666f00446973747269627574696f6e7a6953657475705f5769746843 *6f6d70696c65725f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061 *747a6952656164505f6f7074696f6e5f636c6f73757265004748437a69494f426173655f686149 *7353747265616d5f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f506f *6c796d6f7270686963436f6d706f6e656e74735f7374617469635f656e74727900446973747269 *627574696f6e7a69436f6d7061747a6946696c65506174685f657865457874656e73696f6e5f63 *6c6f7375726500446973747269627574696f6e7a6953657475705f7061727365556e7265676973 *746572417267735f73727400546578747a69526561647a694c65785f7a644c72357544705f656e *747279004748437a6948616e646c655f7a644c726259786c766c32325f636c6f73757265007374 *675f73656c5f31325f6e6f7570645f656e747279007374675f73656c5f345f7570645f656e7472 *7900546578747a69506172736572436f6d62696e61746f72737a6952656164505f737472696e67 *5f636c6f73757265004748437a69496e745f7a64777a657a655f696e666f0053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c37375f656e747279004748437a69 *426173655f7a695f656e747279004748437a69494f426173655f6132355f696e666f004748437a *69494f426173655f496c6c6567616c4f7065726174696f6e5f7374617469635f656e747279005f *4a765f5265676973746572436c6173736573005f5f63747970655f625f6c6f634040474c494243 *5f322e330053797374656d7a69506f7369787a69496e7465726e616c735f53747265616d5f7374 *617469635f656e74727900546578747a69526561647a694c65785f7a644c7235416a6c766c3131 *365f636c6f73757265004748437a694c6973745f72657065617446425f696e666f005379737465 *6d7a69506f7369787a6946696c65735f6c766c32325f636c6f73757265004748437a69494f4261 *73655f61375f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64 *776363616c6c33325f656e74727900706572666f726d4743007274735f6c6f636b00466f726569 *676e7a694d61727368616c7a69416c6c6f635f7a6477616c6c6f636142797465735f656e747279 *00446973747269627574696f6e7a6950617273655574696c735f7a6467746f5061727365526573 *756c745f636c6f7375726500446973747269627574696f6e7a694765744f70745f4f7074696f6e *5f7374617469635f656e74727900546578747a69526561647a694c65785f7a644c7235796e6c76 *6c36365f636c6f7375726500546578747a69526561647a694c65785f7a644c723541706c766c31 *31395f636c6f73757265007374675f67635f67656e00446973747269627574696f6e7a69506163 *6b6167654465736372697074696f6e5f696e636c756465446972735f656e74727900546578747a *69526561647a694c65785f7a644c723578526136375f636c6f737572650053797374656d7a6950 *6f7369787a69496e7465726e616c735f526567756c617246696c655f636c6f7375726500446973 *747269627574696f6e7a6950617273655574696c735f70617273654c6963656e7365515f636c6f *737572650053797374656d7a69506f7369787a69496e7465726e616c735f636f6e73747a75667a *75676574666c5f636c6f73757265004748437a69546f7048616e646c65725f7a644c723337736c *766c31345f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a6477 *6363616c6c32345f656e747279004748437a69494f426173655f46696c6548616e646c655f636f *6e5f656e747279004748437a69496e745f6d696e426f756e64325f636c6f737572650044697374 *7269627574696f6e7a6953657475705f7a646766726f6d436d645f636c6f73757265006d61726b *43414673004748437a694c6973745f6c766c31365f656e74727900436f6e74726f6c7a694d6f6e *61645f73657175656e63655f696e666f0053797374656d7a694469726563746f72795f67657443 *757272656e744469726563746f72795f736c6f7700546578747a69506172736572436f6d62696e *61746f72737a6952656164507265635f6d696e507265635f636c6f737572650044697374726962 *7574696f6e7a6950617273655574696c735f6669656c645365745f636c6f737572650044697374 *7269627574696f6e7a69436f6d7061747a6952656164505f7a6c7a707a705f656e74727900436f *6e74726f6c7a694d6f6e61645f756e6c6573735f696e666f00546578747a69526561647a694c65 *785f7a644c723577426135345f636c6f73757265004748437a69494f426173655f454f465f7374 *617469635f696e666f004748437a69494f426173655f4e6f537563685468696e675f7374617469 *635f656e747279004748437a694c6973745f74616b657a75756e736166657a7555496e745f696e *666f00446973747269627574696f6e7a6953657475705f496e7374616c6c436d645f636c6f7375 *7265004748437a69494f5f7a644c723966666c766c325f636c6f73757265004748437a69456e75 *6d5f6c766c31365f696e666f00446973747269627574696f6e7a6953657475705f4748435f7374 *617469635f656e747279004748437a6953686f775f6136365f696e666f007374675f67635f6c31 *5f726574004748437a69526561645f7a64737a64646d726561647350726563315f696e666f0047 *48437a69494f5f6c766c335f656e747279004748437a69576f72645f6e6567617465335f636c6f *73757265004748437a694c6973745f7265706561745f636c6f73757265004748437a69546f7048 *616e646c65725f7a644c723337616c766c355f696e666f004748437a69456e756d5f656e756d46 *726f6d5468656e335f636c6f737572650053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c35355f636c6f73757265004748437a69496e745f616273325f656e74 *7279004748437a69494f426173655f496e76616c6964417267756d656e745f7374617469635f69 *6e666f00446973747269627574696f6e7a6956657273696f6e5f7a6467746f56657273696f6e52 *616e67655f656e74727900546578747a695072657474795072696e747a69487567686573504a5f *7a644c723467796c766c32315f636c6f73757265004748437a69576f72645f73686f7773507265 *63335f696e666f004748437a695265616c5f5a4344496e74656772616c5f7374617469635f696e *666f004748437a69426173655f7a677a677a655f696e666f00697343757272656e745468726561 *64426f756e647a685f6661737400436f6e74726f6c7a694d6f6e61645f756e6c6573735f636c6f *73757265004748437a69494f426173655f496e617070726f707269617465547970655f73746174 *69635f696e666f00546578747a69506172736572436f6d62696e61746f72737a6952656164505f *72657475726e5f636c6f73757265007374675f63746f695f7265745f5231705f696e666f005465 *78747a69506172736572436f6d62696e61746f72737a6952656164505f72657475726e5f696e66 *6f005f5f737467696e69745f53797374656d7a69506f736978004748437a694c6973745f7a7a69 *70576974685f636c6f73757265004748437a69426173655f7a707a705f636c6f73757265004469 *73747269627574696f6e7a69457874656e73696f6e5f506172616c6c656c4c697374436f6d705f *636c6f7375726500546578747a69526561647a694c65785f7a644c7235766c6134315f696e666f *004748437a69494f426173655f68614275666665725f656e74727900446973747269627574696f *6e7a694765744f70745f5065726d7574655f7374617469635f696e666f0053797374656d7a6950 *6f7369787a69496e7465726e616c735f7a64776363616c6c37305f656e747279004748437a6952 *6561645f7a6473726561644c69737444656661756c74315f656e74727900446973747269627574 *696f6e7a6956657273696f6e5f5468697356657273696f6e5f636f6e5f656e747279004748437a *694e756d5f7369676e756d325f636c6f73757265004748437a694e756d5f616273315f636c6f73 *75726500696e69745363686564756c6572004748437a69494f5f7a644c723966706c766c375f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c3237 *5f696e666f004748437a69494f426173655f417070656e6448616e646c655f7374617469635f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33 *385f696e666f00446174617a695479706561626c655f547970655265705f7374617469635f696e *666f00527473466c61677300446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f65787472614c6962446972735f696e666f004748437a69496e745f4931367a685f *636f6e5f656e747279004748437a69494f426173655f53656d69436c6f73656448616e646c655f *7374617469635f696e666f0053797374656d7a69506f7369787a6946696c65735f6c766c31395f *656e747279007374675f756e636865636b656453686966744c3634004748437a69426173655f7a *737a65335f696e666f007274735f6d6b537461626c6550747200446973747269627574696f6e7a *69457874656e73696f6e5f46756e6374696f6e616c446570656e64656e636965735f636c6f7375 *726500446973747269627574696f6e7a6953657475705f7061727365476c6f62616c417267735f *696e666f00546578747a69526561647a694c65785f7a644c723576766c766c32375f656e747279 *0053797374656d7a69506f7369787a6946696c65735f6c766c31395f696e666f00446973747269 *627574696f6e7a69457874656e73696f6e5f5479706553796e6f6e796d496e7374616e6365735f *7374617469635f656e74727900446973747269627574696f6e7a6953657475705f636f6e666967 *48617070795f636c6f7375726500546578747a69526561647a694c65785f7a644c723576376c76 *6c32335f636c6f73757265004748437a69426173655f7a677a677a655f636c6f73757265004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f7a646766726f6d505f636c6f73 *75726500446973747269627574696f6e7a69436f6d7061747a6952656164505f636f756e745f63 *6c6f73757265004748437a69526561645f6c766c32315f656e747279006973416c697665005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c31395f736c6f7700 *546578747a69526561647a694c65785f7a644c7235746e6131395f636c6f737572650054657874 *7a695072657474795072696e747a69487567686573504a5f7a644c723467636c766c31305f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *66526561644275696c64496e666f5f636c6f7375726500446973747269627574696f6e7a69436f *6d7061747a6946696c65506174685f70617468536570617261746f725f636c6f73757265007369 *6764656c7365744040474c4942435f322e3000546578747a69526561647a694c65785f7a644c72 *35764e6c766c33305f656e747279004748437a69576f72645f7a644c723943366c766c31315f63 *6c6f73757265004748437a695265616c5f71756f74315f696e666f004748437a6953686f775f6c *766c32335f656e74727900446973747269627574696f6e7a694765744f70745f52657475726e49 *6e4f726465725f696e666f004748437a69426173655f6c65496e745f656e747279004469737472 *69627574696f6e7a6950617273655574696c735f50617273654f6b5f636f6e5f656e7472790047 *48437a69526561645f61345f656e74727900546578747a695072657474795072696e747a694875 *67686573504a5f7a6c7a707a675f696e666f00446174617a694c6973745f756e6c696e65735f69 *6e666f00546578747a69526561647a694c65785f7a644c7235743161385f696e666f0054657874 *7a69526561647a694c65785f7a644c72354148657461315f636c6f73757265007374675f67635f *756e62785f723100446973747269627574696f6e7a694765744f70745f4f70744172675f636c6f *73757265004748437a69426173655f437a685f636f6e5f656e74727900546578747a6950726574 *74795072696e747a69487567686573504a5f66756c6c52656e6465725f696e666f004748437a69 *494f5f6c766c335f636c6f73757265004748437a69426173655f756e7061636b466f6c64724353 *7472696e677a685f696e666f005f5f6873636f72655f72656e616d6546696c6500446973747269 *627574696f6e7a6953657475705f7a646766726f6d416374696f6e5f656e747279004748437a69 *426173655f706c7573496e745f656e74727900466f726569676e7a69437a694572726f725f6572 *726e6f546f494f4572726f725f696e666f004748437a69494f426173655f696f4572726f725f69 *6e666f004748437a695074725f636173745074725f636c6f73757265004748437a69556e69636f *64655f7a6477697344696769745f696e666f004748437a69526561645f7a6473726561644c6973 *745072656344656661756c74345f696e666f0053797374656d7a69506f7369787a695479706573 *5f7a6466496e74656772616c435069645f636c6f73757265004748437a6953686f775f7a644c72 *315a5a426c766c325f696e666f0053797374656d7a69436d645f615f656e747279005f5f737467 *696e69745f53797374656d7a69494f7a694572726f7200446973747269627574696f6e7a694578 *74656e73696f6e5f506f6c796d6f7270686963436f6d706f6e656e74735f7374617469635f696e *666f004748437a69494f5f685075744275665f636c6f73757265006d6b4170557064307a685f66 *617374004748437a69494f426173655f7a6466457145786974436f64655f636c6f737572650053 *797374656d7a694469726563746f72795f6c766c32355f656e74727900546578747a6952656164 *7a694c65785f7a644c7235787a7a6136345f656e747279004748437a695265616c5f7a64776469 *764d6f645f636c6f7375726500446973747269627574696f6e7a6953657475705f706172736543 *6f7079417267735f636c6f73757265004748437a69546f7048616e646c65725f6b5f656e747279 *00726561644040474c4942435f322e30004748437a695265616c5f6c766c31375f696e666f0047 *48437a694e756d5f7a644c723278726c766c5f656e747279004748437a695265616c5f7a64737a *63325f636c6f737572650053797374656d7a69436d645f6572725f636c6f737572650054657874 *7a69526561647a694c65785f7a644c723576766c766c32375f636c6f73757265004748437a6949 *4f426173655f6c766c33305f696e666f004748437a6948616e646c655f7a644c72625a5a376c76 *6c34305f636c6f7375726500436f6e74726f6c7a694d6f6e61645f6c6966744d325f696e666f00 *446973747269627574696f6e7a694c6963656e73655f4f746865724c6963656e73655f73746174 *69635f696e666f004748437a69546f7048616e646c65725f7a644c723336576c766c315f636c6f *73757265004748437a69426173655f5a434445715f636f6e5f696e666f004748437a694e756d5f *7a64646d73686f775f656e74727900446973747269627574696f6e7a69436f6d7061747a694669 *6c65506174685f6973526f6f746564506174685f636c6f7375726500446973747269627574696f *6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c75735061727365725f737274 *004748437a6953686f775f73686f776c5f636c6f7375726500446973747269627574696f6e7a69 *436f6d7061747a6952656164505f656e6442795f636c6f7375726500446973747269627574696f *6e7a6950617273655574696c735f73706c69745374616e7a7a61735f636c6f7375726500474843 *7a695265616c5f7a64776469764d6f645f696e666f00546578747a695072657474795072696e74 *7a69487567686573504a5f726564756365446f63315f696e666f0053797374656d7a69506f7369 *787a69496e7465726e616c735f73697a7a656f667a75737461745f656e74727900446174617a69 *5479706561626c655f6c676f5f696e666f00446973747269627574696f6e7a6953657475705f7a *646653686f77466c61675f737274004748437a6953686f775f73686f776c5f696e666f00474843 *7a69426173655f437a685f636f6e5f696e666f007274735f6d6b446f75626c65004748437a6952 *65616c5f7a635f696e666f004748437a69494f426173655f737461636b4f766572666c6f775f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467736c766c31385f656e74727900446973747269627574696f6e7a69436f6d7061747a695265 *6164505f7a6c7a707a705f636c6f73757265006765746f757274696d656f666461790053797374 *656d7a694469726563746f72795f6372656174654469726563746f72795f636c6f73757265005f *5f66787374617436344040474c4942435f322e32006c6f6f6b7570486173685461626c65004748 *437a694c6973745f7a644c723271456c766c5f636c6f7375726500446973747269627574696f6e *7a695061636b6167655f70617273655061636b61676549645f696e666f004748437a69576f7264 *5f7a64646d73686f774c697374335f696e666f004748437a6948616e646c655f7a644c724a6472 *6561647a75666c6167735f696e666f00446973747269627574696f6e7a69457874656e73696f6e *5f416c6c6f77556e646563696461626c65496e7374616e6365735f636c6f737572650044697374 *7269627574696f6e7a6953657475705f436c65616e436d645f7374617469635f656e7472790044 *6973747269627574696f6e7a6953696d706c657a695574696c735f72617753797374656d506174 *685f656e74727900626c6f636b65645f71756575655f686400446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f657874656e73696f6e735f636c6f737572650047 *48437a69494f426173655f7a647773686f777350726563345f636c6f73757265004748437a6949 *6e745f7a64646d6d696e5f656e747279004748437a69494f426173655f62696e64494f5f696e66 *6f004748437a694e756d5f7a675f696e666f004748437a694c6973745f64726f707a685f696e66 *6f004748437a69494f426173655f615f696e666f004748437a69456e756d5f656674496e744642 *5f696e666f00446973747269627574696f6e7a6956657273696f6e5f4c6174657256657273696f *6e5f636f6e5f656e74727900546578747a69506172736572436f6d62696e61746f72737a695265 *6164505f46696e616c5f636f6e5f696e666f004748437a69494f5f77726974654c696e6573315f *656e747279004748437a6948616e646c655f6c766c345f696e666f007374675f67635f67656e5f *696e666f004748437a69576f72645f7a644c723943366c766c31315f656e747279004748437a69 *456e756d5f5a4344456e756d5f7374617469635f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f7a644c72346863676f335f636c6f73757265004748437a6945 *6e756d5f676f7a7575707a75696e747a756c6973745f656e74727900446973747269627574696f *6e7a6953657475705f556e7265676973746572436d645f7374617469635f656e74727900546578 *747a69526561647a694c65785f7a644c723579686c766c36335f636c6f7375726500466f726569 *676e7a6953746f7261626c655f706f6c797a7573697a7a654f66325f656e747279004748437a69 *48616e646c655f6c766c37325f696e666f005f5f737467696e69745f4748437a69556e69636f64 *655f0053797374656d7a69506f7369787a6946696c65735f7468726f774572726e6f49664d696e *7573317a75315f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574 *696c735f636f707946696c65566572626f73655f696e666f00446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f636f707972696768745f696e666f004748437a69 *4572725f7a644c723130356c766c335f696e666f00446973747269627574696f6e7a69436f6d70 *61747a6946696c65506174685f646c6c457874656e73696f6e5f636c6f73757265004469737472 *69627574696f6e7a69436f6d7061747a6952656164505f6761746865725f656e74727900474843 *7a694572725f6c766c385f636c6f73757265004748437a694c6973745f7a6477627265616b5f69 *6e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f4578 *6563757461626c655f636c6f73757265004748437a694c6973745f6c6173745f636c6f73757265 *004748437a695265616c5f61365f656e747279004748437a69496e745f7a64646d656e756d4672 *6f6d546f5f696e666f00546578747a695072657474795072696e747a69487567686573504a5f42 *65736964655f636f6e5f656e74727900436f6e74726f6c7a694d6f6e61645f6c6966744d5f636c *6f7375726500446973747269627574696f6e7a6953657475705f48656c70466c61675f636c6f73 *757265004748437a69494f5f7a644c72444a685075746342756666657265645f636c6f73757265 *004748437a694c6973745f696e69745f696e666f00446973747269627574696f6e7a6956657273 *696f6e5f56657273696f6e5f636f6e5f656e74727900546578747a69526561647a694c65785f7a *644c72357a7a7264735f636c6f7375726500446973747269627574696f6e7a6953657475705f7a *64664571466c61675f737274004748437a694e756d5f7a64776469764d6f64496e74656765725f *696e666f004748437a695265616c5f6131305f696e666f00446973747269627574696f6e7a6953 *657475705f496e73745072656669785f7374617469635f696e666f007374675f424c41434b484f *4c455f42515f696e666f00546578747a69526561647a694c65785f7a644c723577526c766c3431 *5f696e666f004748437a69494f5f6c766c365f696e666f004748437a6953686f775f7a64737a64 *646d73686f774c697374325f696e666f0053797374656d7a69456e7669726f6e6d656e745f6765 *7450726f674e616d655f656e74727900446973747269627574696f6e7a6953657475705f636f6d *70696c6572506174685f656e7472790053797374656d7a69494f5f685075745374724c6e5f696e *666f004748437a6953686f775f6131385f656e747279004748437a69494f426173655f6c766c32 *305f636c6f73757265004748437a69494f426173655f4572726f7243616c6c5f636f6e5f696e66 *6f007570646174655468726561644c6162656c00446973747269627574696f6e7a694c6963656e *73655f425344335f636c6f73757265004748437a69494f426173655f436c6f73656448616e646c *655f7374617469635f656e74727900446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f65787472614c6962735f656e747279006177616974557365725369676e61 *6c7300546578747a69526561647a694c65785f7a644c7235764a6134355f636c6f737572650047 *48437a69496e745f746f526174696f6e616c325f636c6f73757265004748437a695074725f6e75 *6c6c5074725f636c6f73757265004748437a6948616e646c655f6132385f636c6f737572650047 *48437a69426173655f7a64646d7a6c7a655f636c6f7375726500446973747269627574696f6e7a *6953657475705f5072656669785f7374617469635f696e666f00546578747a6950726574747950 *72696e747a69487567686573504a5f7365705f636c6f73757265004748437a69546f7048616e64 *6c65725f64735f736c6f7700446174617a695479706561626c655f4b657950725f737461746963 *5f696e666f00546578747a69526561647a694c65785f7a644c723576446134345f656e74727900 *446174617a694d617962655f66726f6d4a7573745f696e666f00446973747269627574696f6e7a *694765744f70745f7a646766726f6d4172674f726465725f636c6f7375726500546578747a6950 *6172736572436f6d62696e61746f72737a6952656164505f72657475726e315f636c6f73757265 *007274735f6d6b507472004748437a694c6973745f7a644c723272776c766c31385f636c6f7375 *7265004748437a69494f426173655f6132315f656e747279004748437a69426173655f4f726465 *72696e675f636c6f737572655f74626c00466f726569676e7a69437a694572726f725f7468726f *774572726e6f5f656e747279007374675f4d55545f434f4e535f696e666f004469737472696275 *74696f6e7a69457874656e73696f6e5f4578697374656e7469616c5175616e7469666963617469 *6f6e5f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a69526561 *64505f7a644c723174656c766c5f656e7472790053797374656d7a694469726563746f72795f64 *6f65734469726563746f727945786973745f696e666f004748437a69494f426173655f57726974 *6548616e646c655f636c6f7375726500546578747a69506172736572436f6d62696e61746f7273 *7a6952656164507265635f72657475726e5f636c6f7375726500446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f73796e6f707369735f656e747279004748437a *6953686f775f6133345f656e747279004748437a69494f426173655f5265736f75726365457868 *6175737465645f7374617469635f696e666f00446973747269627574696f6e7a6953657475705f *7a64664571466c61675f656e74727900676364496e74656765727a685f66617374004748437a69 *53686f775f6c766c315f636c6f73757265004748437a6953686f775f6136365f656e7472790047 *48437a69526561645f6c766c31345f656e7472790053797374656d7a694469726563746f72795f *7a6477676f5f696e666f004748437a69494f426173655f62696e64494f5f636c6f73757265005f *5f676d707a5f737562004748437a69494f426173655f4275666665724c6973744e696c5f737461 *7469635f656e747279007374675f73656c5f31355f6e6f7570645f656e747279004748437a6949 *6e745f6d6f64325f696e666f00546578747a69526561647a694c65785f6137305f696e666f0047 *48437a69496e745f7a64646d656e756d46726f6d546f5f656e7472790044697374726962757469 *6f6e7a69436f6d7061747a6952656164505f736b69704d616e795f737274006d6f76655f54534f *004748437a69426173655f7a64737a64646d6d696e5f656e74727900446973747269627574696f *6e7a69457874656e73696f6e5f657874656e73696f6e73546f48756773466c61675f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506172 *7365725f696e666f005a434d61696e5f6d61696e5f656e747279005f5f676d6f6e5f7374617274 *5f5f007374675f73656c5f385f6e6f7570645f696e666f004748437a69494f426173655f577269 *74654d6f64655f7374617469635f696e666f004748437a694c6973745f7a644c723271556c766c *385f696e666f004748437a69466f726569676e5074725f4d616c6c6f635074725f737461746963 *5f656e74727900446973747269627574696f6e7a6950617273655574696c735f6d794572726f72 *5f656e747279006c646578704040474c4942435f322e3000546578747a69526561647a694c6578 *5f7a644c723541726c766c3132305f636c6f73757265004748437a69576f72645f57387a685f73 *74617469635f656e747279004748437a695074725f46756e5074725f636f6e5f656e7472790044 *6973747269627574696f6e7a6950617273655574696c735f7a646653686f775061727365526573 *756c745f636c6f73757265004748437a69456e756d5f65666474496e7446425f656e7472790044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6f746865724d6f *64756c65735f636c6f73757265004748437a69494f426173655f50726f746f636f6c4572726f72 *5f7374617469635f696e666f004748437a694c6973745f64726f705f636c6f7375726500446973 *747269627574696f6e7a6953696d706c657a695574696c735f72617753797374656d5061746845 *7869745f737274004748437a6948616e646c655f696f657a75454f465f696e666f004748437a69 *494f426173655f68614f74686572536964655f656e747279004748437a69426173655f74696d65 *73496e745f656e7472790053797374656d7a69506f7369787a6954797065735f7a646653686f77 *434d6f64655f636c6f73757265004748437a69494f426173655f45786974537563636573735f73 *74617469635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a6477 *6363616c6c32355f736c6f770053797374656d7a69506f7369787a69496e7465726e616c735f7a *64776363616c6c37375f696e666f00466f726569676e7a69437a694572726f725f7a6477636361 *6c6c325f656e747279004748437a694c6973745f706f6c797a757265765f696e666f005f5f7374 *67696e69745f446174617a69426974735f004748437a6953686f775f6131395f636c6f73757265 *004748437a69494f426173655f6c766c32345f656e747279004748437a694c6973745f74616b65 *7a75756e736166657a7555496e745f636c6f73757265004748437a69466f726569676e5074725f *4d616c6c6f635074725f636f6e5f696e666f00446973747269627574696f6e7a69436f6d706174 *7a6952656164505f4c6f6f6b5f636f6e5f656e747279005f5f737467696e69745f446973747269 *627574696f6e7a6950617273655574696c735f00 hunk ./test/HSQL/src/HSQL/HsMySQL.h 1 +#ifndef HsMySQL +#define HsMySQL + +#if defined(_WIN32_) +#include +#endif + +#include + +#endif hunk ./test/HSQL/src/HSQL/HsODBC.c 1 +#include "HsODBC.h" + +#if defined(_WIN32_) +// Under Windows SQLFreeEnv function has stdcall calling convention +// while in Haskell functions represented with FunPtr must be always +// with ccall convention. For that reason we need to redirect calling +// to this function. + +void my_sqlFreeEnv(HENV hEnv) +{ + SQLFreeEnv(hEnv); +} +#endif hunk ./test/HSQL/src/HSQL/HsODBC.h 1 +#ifndef HsODBC +#define HsODBC + +#if defined(_WIN32_) +#include +#endif + +#include +#include + +#define FIELD_NAME_LENGTH 255 + +typedef struct + { + HSTMT hSTMT; + SQLUSMALLINT fieldsCount; + SQLCHAR fieldName[FIELD_NAME_LENGTH]; + SQLSMALLINT NameLength; + SQLSMALLINT DataType; + SQLULEN ColumnSize; + SQLSMALLINT DecimalDigits; + SQLSMALLINT Nullable; + } FIELD; + +#if defined(_WIN32_) +void my_sqlFreeEnv(HENV hEnv); +#endif + +#endif hunk ./test/HSQL/src/HSQL/MySQL.hsc 1 +----------------------------------------------------------------------------------------- +{-| Module : Database.HSQL.MySQL + Copyright : (c) Krasimir Angelov 2003 + License : BSD-style + + Maintainer : ka2_mail@yahoo.com + Stability : provisional + Portability : portable + + The module provides interface to MySQL database +-} +----------------------------------------------------------------------------------------- + +#include + +module Database.HSQL.MySQL(connect, module Database.HSQL) where + +import Database.HSQL +import Database.HSQL.Types +import Data.Dynamic +import Data.Bits +import Data.Char +import Foreign +import Foreign.C +import Control.Monad(when,unless) +import Control.Exception (throwDyn, finally) +import Control.Concurrent.MVar +import System.Time +import System.IO.Unsafe +import Text.ParserCombinators.ReadP +import Text.Read + +#include + +type MYSQL = Ptr () +type MYSQL_RES = Ptr () +type MYSQL_FIELD = Ptr () +type MYSQL_ROW = Ptr CString +type MYSQL_LENGTHS = Ptr CULong + +#if defined(_WIN32_) +#let CALLCONV = "stdcall" +#else +#let CALLCONV = "ccall" +#endif + +foreign import #{CALLCONV} "HsMySQL.h mysql_init" mysql_init :: MYSQL -> IO MYSQL +foreign import #{CALLCONV} "HsMySQL.h mysql_real_connect" mysql_real_connect :: MYSQL -> CString -> CString -> CString -> CString -> Int -> CString -> Int -> IO MYSQL +foreign import #{CALLCONV} "HsMySQL.h mysql_close" mysql_close :: MYSQL -> IO () +foreign import #{CALLCONV} "HsMySQL.h mysql_errno" mysql_errno :: MYSQL -> IO Int +foreign import #{CALLCONV} "HsMySQL.h mysql_error" mysql_error :: MYSQL -> IO CString +foreign import #{CALLCONV} "HsMySQL.h mysql_query" mysql_query :: MYSQL -> CString -> IO Int +foreign import #{CALLCONV} "HsMySQL.h mysql_use_result" mysql_use_result :: MYSQL -> IO MYSQL_RES +foreign import #{CALLCONV} "HsMySQL.h mysql_fetch_field" mysql_fetch_field :: MYSQL_RES -> IO MYSQL_FIELD +foreign import #{CALLCONV} "HsMySQL.h mysql_free_result" mysql_free_result :: MYSQL_RES -> IO () +foreign import #{CALLCONV} "HsMySQL.h mysql_fetch_row" mysql_fetch_row :: MYSQL_RES -> IO MYSQL_ROW +foreign import #{CALLCONV} "HsMySQL.h mysql_fetch_lengths" mysql_fetch_lengths :: MYSQL_RES -> IO MYSQL_LENGTHS +foreign import #{CALLCONV} "HsMySQL.h mysql_list_tables" mysql_list_tables :: MYSQL -> CString -> IO MYSQL_RES +foreign import #{CALLCONV} "HsMySQL.h mysql_list_fields" mysql_list_fields :: MYSQL -> CString -> CString -> IO MYSQL_RES + +----------------------------------------------------------------------------------------- +-- routines for handling exceptions +----------------------------------------------------------------------------------------- + +handleSqlError :: MYSQL -> IO a +handleSqlError pMYSQL = do + errno <- mysql_errno pMYSQL + errMsg <- mysql_error pMYSQL >>= peekCString + throwDyn (SqlError "" errno errMsg) + +----------------------------------------------------------------------------------------- +-- Connect/Disconnect +----------------------------------------------------------------------------------------- + +-- | Makes a new connection to the database server. +connect :: String -- ^ Server name + -> String -- ^ Database name + -> String -- ^ User identifier + -> String -- ^ Authentication string (password) + -> IO Connection +connect server database user authentication = do + pMYSQL <- mysql_init nullPtr + pServer <- newCString server + pDatabase <- newCString database + pUser <- newCString user + pAuthentication <- newCString authentication + res <- mysql_real_connect pMYSQL pServer pUser pAuthentication pDatabase 0 nullPtr 0 + free pServer + free pDatabase + free pUser + free pAuthentication + when (res == nullPtr) (handleSqlError pMYSQL) + refFalse <- newMVar False + let connection = Connection + { connDisconnect = mysql_close pMYSQL + , connExecute = execute pMYSQL + , connQuery = query connection pMYSQL + , connTables = tables connection pMYSQL + , connDescribe = describe connection pMYSQL + , connBeginTransaction = execute pMYSQL "begin" + , connCommitTransaction = execute pMYSQL "commit" + , connRollbackTransaction = execute pMYSQL "rollback" + , connClosed = refFalse + } + return connection + where + execute :: MYSQL -> String -> IO () + execute pMYSQL query = do + res <- withCString query (mysql_query pMYSQL) + when (res /= 0) (handleSqlError pMYSQL) + + withStatement :: Connection -> MYSQL -> MYSQL_RES -> IO Statement + withStatement conn pMYSQL pRes = do + currRow <- newMVar (nullPtr, nullPtr) + refFalse <- newMVar False + if (pRes == nullPtr) + then do + errno <- mysql_errno pMYSQL + when (errno /= 0) (handleSqlError pMYSQL) + return (Statement + { stmtConn = conn + , stmtClose = return () + , stmtFetch = fetch pRes currRow + , stmtGetCol = getColValue currRow + , stmtFields = [] + , stmtClosed = refFalse + }) + else do + fieldDefs <- getFieldDefs pRes + return (Statement + { stmtConn = conn + , stmtClose = mysql_free_result pRes + , stmtFetch = fetch pRes currRow + , stmtGetCol = getColValue currRow + , stmtFields = fieldDefs + , stmtClosed = refFalse + }) + where + getFieldDefs pRes = do + pField <- mysql_fetch_field pRes + if pField == nullPtr + then return [] + else do + name <- (#peek MYSQL_FIELD, name) pField >>= peekCString + (dataType :: Int) <- (#peek MYSQL_FIELD, type) pField + (columnSize :: Int) <- (#peek MYSQL_FIELD, length) pField + (flags :: Int) <- (#peek MYSQL_FIELD, flags) pField + (decimalDigits :: Int) <- (#peek MYSQL_FIELD, decimals) pField + let sqlType = mkSqlType dataType columnSize decimalDigits + defs <- getFieldDefs pRes + return ((name,sqlType,(flags .&. (#const NOT_NULL_FLAG)) == 0):defs) + + mkSqlType :: Int -> Int -> Int -> SqlType + mkSqlType (#const FIELD_TYPE_STRING) size _ = SqlChar size + mkSqlType (#const FIELD_TYPE_VAR_STRING) size _ = SqlVarChar size + mkSqlType (#const FIELD_TYPE_DECIMAL) size prec = SqlNumeric size prec + mkSqlType (#const FIELD_TYPE_SHORT) _ _ = SqlSmallInt + mkSqlType (#const FIELD_TYPE_INT24) _ _ = SqlMedInt + mkSqlType (#const FIELD_TYPE_LONG) _ _ = SqlInteger + mkSqlType (#const FIELD_TYPE_FLOAT) _ _ = SqlReal + mkSqlType (#const FIELD_TYPE_DOUBLE) _ _ = SqlDouble + mkSqlType (#const FIELD_TYPE_TINY) _ _ = SqlTinyInt + mkSqlType (#const FIELD_TYPE_LONGLONG) _ _ = SqlBigInt + mkSqlType (#const FIELD_TYPE_DATE) _ _ = SqlDate + mkSqlType (#const FIELD_TYPE_TIME) _ _ = SqlTime + mkSqlType (#const FIELD_TYPE_TIMESTAMP) _ _ = SqlTimeStamp + mkSqlType (#const FIELD_TYPE_DATETIME) _ _ = SqlDateTime + mkSqlType (#const FIELD_TYPE_YEAR) _ _ = SqlYear + mkSqlType (#const FIELD_TYPE_BLOB) _ _ = SqlBLOB + mkSqlType (#const FIELD_TYPE_SET) _ _ = SqlSET + mkSqlType (#const FIELD_TYPE_ENUM) _ _ = SqlENUM + mkSqlType tp _ _ = SqlUnknown tp + + query :: Connection -> MYSQL -> String -> IO Statement + query conn pMYSQL query = do + res <- withCString query (mysql_query pMYSQL) + when (res /= 0) (handleSqlError pMYSQL) + pRes <- mysql_use_result pMYSQL + withStatement conn pMYSQL pRes + + fetch :: MYSQL_RES -> MVar (MYSQL_ROW, MYSQL_LENGTHS) -> IO Bool + fetch pRes currRow + | pRes == nullPtr = return False + | otherwise = modifyMVar currRow $ \(pRow, pLengths) -> do + pRow <- mysql_fetch_row pRes + pLengths <- mysql_fetch_lengths pRes + return ((pRow, pLengths), pRow /= nullPtr) + + getColValue :: MVar (MYSQL_ROW, MYSQL_LENGTHS) -> Int -> FieldDef -> (SqlType -> CString -> Int -> IO (Maybe a)) -> IO (Maybe a) + getColValue currRow colNumber (name,sqlType,nullable) f = do + (row, lengths) <- readMVar currRow + pValue <- peekElemOff row colNumber + len <- fmap fromIntegral (peekElemOff lengths colNumber) + if pValue == nullPtr + then return Nothing + else do + mv <- f sqlType pValue len + case mv of + Just v -> return (Just v) + Nothing -> throwDyn (SqlBadTypeCast name sqlType) + + tables :: Connection -> MYSQL -> IO [String] + tables conn pMYSQL = do + pRes <- mysql_list_tables pMYSQL nullPtr + stmt <- withStatement conn pMYSQL pRes + -- SQLTables returns: + -- Column name # Type + -- Tables_in_xx 0 VARCHAR + collectRows (\stmt -> do + mb_v <- stmtGetCol stmt 0 ("Tables", SqlVarChar 0, False) fromNonNullSqlCStringLen + return (case mb_v of { Nothing -> ""; Just a -> a })) stmt + + describe :: Connection -> MYSQL -> String -> IO [FieldDef] + describe conn pMYSQL table = do + pRes <- withCString table (\table -> mysql_list_fields pMYSQL table nullPtr) + stmt <- withStatement conn pMYSQL pRes + return (getFieldsTypes stmt) hunk ./test/HSQL/src/HSQL/ODBC.hsc 1 +----------------------------------------------------------------------------------------- +{-| Module : Database.HSQL.ODBC + Copyright : (c) Krasimir Angelov 2003 + License : BSD-style + + Maintainer : ka2_mail@yahoo.com + Stability : provisional + Portability : portable + + The module provides interface to ODBC +-} +----------------------------------------------------------------------------------------- + +module Database.HSQL.ODBC(connect, driverConnect, module Database.HSQL) where + +import Database.HSQL +import Database.HSQL.Types +import Data.Word(Word32, Word16) +import Data.Int(Int32, Int16) +import Data.Maybe +import Foreign +import Foreign.C +import Control.Monad(unless) +import Control.Exception(throwDyn) +import Control.Concurrent.MVar +import System.IO.Unsafe +import System.Time + +#include +#include + +type SQLHANDLE = Ptr () +type HENV = SQLHANDLE +type HDBC = SQLHANDLE +type HSTMT = SQLHANDLE +type HENVRef = ForeignPtr () + +type SQLSMALLINT = #type SQLSMALLINT +type SQLUSMALLINT = #type SQLUSMALLINT +type SQLINTEGER = #type SQLINTEGER +type SQLUINTEGER = #type SQLUINTEGER +type SQLRETURN = SQLSMALLINT +type SQLLEN = SQLINTEGER +type SQLULEN = SQLINTEGER + +#if defined(_WIN32_) +#let CALLCONV = "stdcall" +#else +#let CALLCONV = "ccall" +#endif + +foreign import #{CALLCONV} "HsODBC.h SQLAllocEnv" sqlAllocEnv :: Ptr HENV -> IO SQLRETURN +#if defined(_WIN32_) +foreign import ccall "HsODBC.h &my_sqlFreeEnv" sqlFreeEnv_p :: FunPtr (HENV -> IO ()) +#else +foreign import ccall "HsODBC.h &SQLFreeEnv" sqlFreeEnv_p :: FunPtr (HENV -> IO ()) +#endif +foreign import #{CALLCONV} "HsODBC.h SQLAllocConnect" sqlAllocConnect :: HENV -> Ptr HDBC -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLFreeConnect" sqlFreeConnect:: HDBC -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLConnect" sqlConnect :: HDBC -> CString -> Int -> CString -> Int -> CString -> Int -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLDriverConnect" sqlDriverConnect :: HDBC -> Ptr () -> CString -> SQLSMALLINT -> CString -> SQLSMALLINT -> Ptr SQLSMALLINT -> SQLUSMALLINT -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLDisconnect" sqlDisconnect :: HDBC -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLAllocStmt" sqlAllocStmt :: HDBC -> Ptr HSTMT -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLFreeStmt" sqlFreeStmt :: HSTMT -> SQLUSMALLINT -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLNumResultCols" sqlNumResultCols :: HSTMT -> Ptr SQLUSMALLINT -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLDescribeCol" sqlDescribeCol :: HSTMT -> SQLUSMALLINT -> CString -> SQLSMALLINT -> Ptr SQLSMALLINT -> Ptr SQLSMALLINT -> Ptr SQLULEN -> Ptr SQLSMALLINT -> Ptr SQLSMALLINT -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLBindCol" sqlBindCol :: HSTMT -> SQLUSMALLINT -> SQLSMALLINT -> Ptr a -> SQLLEN -> Ptr SQLINTEGER -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLFetch" sqlFetch :: HSTMT -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLGetDiagRec" sqlGetDiagRec :: SQLSMALLINT -> SQLHANDLE -> SQLSMALLINT -> CString -> Ptr SQLINTEGER -> CString -> SQLSMALLINT -> Ptr SQLSMALLINT -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLExecDirect" sqlExecDirect :: HSTMT -> CString -> Int -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLSetConnectOption" sqlSetConnectOption :: HDBC -> SQLUSMALLINT -> SQLULEN -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLTransact" sqlTransact :: HENV -> HDBC -> SQLUSMALLINT -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLGetData" sqlGetData :: HSTMT -> SQLUSMALLINT -> SQLSMALLINT -> Ptr () -> SQLINTEGER -> Ptr SQLINTEGER -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLTables" sqlTables :: HSTMT -> CString -> SQLSMALLINT -> CString -> SQLSMALLINT -> CString -> SQLSMALLINT -> CString -> SQLSMALLINT -> IO SQLRETURN +foreign import #{CALLCONV} "HsODBC.h SQLColumns" sqlColumns :: HSTMT -> CString -> SQLSMALLINT -> CString -> SQLSMALLINT -> CString -> SQLSMALLINT -> CString -> SQLSMALLINT -> IO SQLRETURN + +----------------------------------------------------------------------------------------- +-- routines for handling exceptions +----------------------------------------------------------------------------------------- + +sqlSuccess :: SQLRETURN -> Bool +sqlSuccess res = + (res == (#const SQL_SUCCESS)) || (res == (#const SQL_SUCCESS_WITH_INFO)) || (res == (#const SQL_NO_DATA)) + +handleSqlResult :: SQLSMALLINT -> SQLHANDLE -> SQLRETURN -> IO () +handleSqlResult handleType handle res + | sqlSuccess res = return () + | res == (#const SQL_INVALID_HANDLE) = throwDyn SqlInvalidHandle + | res == (#const SQL_STILL_EXECUTING) = throwDyn SqlStillExecuting + | res == (#const SQL_NEED_DATA) = throwDyn SqlNeedData + | res == (#const SQL_ERROR) = + allocaBytes 256 $ \pState -> + alloca $ \pNative -> + allocaBytes 256 $ \pMsg -> + alloca $ \pTextLen -> + do + res <- sqlGetDiagRec handleType handle 1 pState pNative pMsg 256 pTextLen + e <- if res == (#const SQL_NO_DATA) + then return SqlNoData + else do + state <- peekCString pState + native <- peek pNative + msg <- peekCString pMsg + return (SqlError {seState=state, seNativeError=fromIntegral native, seErrorMsg=msg}) + throwDyn e + | otherwise = error (show res) + +----------------------------------------------------------------------------------------- +-- keeper of HENV +----------------------------------------------------------------------------------------- + +{-# NOINLINE myEnvironment #-} +myEnvironment :: HENVRef +myEnvironment = unsafePerformIO $ alloca $ \ (phEnv :: Ptr HENV) -> do + res <- sqlAllocEnv phEnv + hEnv <- peek phEnv + handleSqlResult 0 nullPtr res + newForeignPtr sqlFreeEnv_p hEnv + +----------------------------------------------------------------------------------------- +-- Connect/Disconnect +----------------------------------------------------------------------------------------- + +-- | Makes a new connection to the ODBC data source +connect :: String -- ^ Data source name + -> String -- ^ User identifier + -> String -- ^ Authentication string (password) + -> IO Connection -- ^ the returned value represents the new connection +connect server user authentication = connectHelper $ \hDBC -> + withCString server $ \pServer -> + withCString user $ \pUser -> + withCString authentication $ \pAuthentication -> + sqlConnect hDBC pServer (#const SQL_NTS) pUser (#const SQL_NTS) pAuthentication (#const SQL_NTS) + +-- | 'driverConnect' is an alternative to 'connect'. It supports data sources that +-- require more connection information than the three arguments in 'connect' +-- and data sources that are not defined in the system information. +driverConnect :: String -- ^ Connection string + -> IO Connection -- ^ the returned value represents the new connection +driverConnect connString = connectHelper $ \hDBC -> + withCString connString $ \pConnString -> + allocaBytes 1024 $ \pOutConnString -> + alloca $ \pLen -> + sqlDriverConnect hDBC nullPtr pConnString (#const SQL_NTS) pOutConnString 1024 pLen (#const SQL_DRIVER_NOPROMPT) + +connectHelper :: (HDBC -> IO SQLRETURN) -> IO Connection +connectHelper connectFunction = withForeignPtr myEnvironment $ \hEnv -> do + hDBC <- alloca $ \ (phDBC :: Ptr HDBC) -> do + res <- sqlAllocConnect hEnv phDBC + handleSqlResult (#const SQL_HANDLE_ENV) hEnv res + peek phDBC + res <- connectFunction hDBC + handleSqlResult (#const SQL_HANDLE_DBC) hDBC res + refFalse <- newMVar False + let connection = (Connection + { connDisconnect = disconnect hDBC + , connExecute = execute hDBC + , connQuery = query connection hDBC + , connTables = tables connection hDBC + , connDescribe = describe connection hDBC + , connBeginTransaction = beginTransaction myEnvironment hDBC + , connCommitTransaction = commitTransaction myEnvironment hDBC + , connRollbackTransaction = rollbackTransaction myEnvironment hDBC + , connClosed = refFalse + }) + return connection + where + disconnect :: HDBC -> IO () + disconnect hDBC = do + sqlDisconnect hDBC >>= handleSqlResult (#const SQL_HANDLE_DBC) hDBC + sqlFreeConnect hDBC >>= handleSqlResult (#const SQL_HANDLE_DBC) hDBC + + execute :: HDBC -> String -> IO () + execute hDBC query = allocaBytes (#const sizeof(HSTMT)) $ + \pStmt -> do + res <- sqlAllocStmt hDBC pStmt + handleSqlResult (#const SQL_HANDLE_DBC) hDBC res + hSTMT <- peek pStmt + withCStringLen query $ \(pQuery,len) -> do + res <- sqlExecDirect hSTMT pQuery len + handleSqlResult (#const SQL_HANDLE_STMT) hSTMT res + res <- sqlFreeStmt hSTMT (#const SQL_DROP) + handleSqlResult (#const SQL_HANDLE_STMT) hSTMT res + + stmtBufferSize = 256 + + withStatement :: Connection -> HDBC -> (HSTMT -> IO SQLRETURN) -> IO Statement + withStatement connection hDBC f = + allocaBytes (#const sizeof(FIELD)) $ \pFIELD -> do + res <- sqlAllocStmt hDBC ((#ptr FIELD, hSTMT) pFIELD) + handleSqlResult (#const SQL_HANDLE_DBC) hDBC res + hSTMT <- (#peek FIELD, hSTMT) pFIELD + let handleResult res = handleSqlResult (#const SQL_HANDLE_STMT) hSTMT res + f hSTMT >>= handleResult + sqlNumResultCols hSTMT ((#ptr FIELD, fieldsCount) pFIELD) >>= handleResult + count <- (#peek FIELD, fieldsCount) pFIELD + fields <- getFieldDefs hSTMT pFIELD 1 count + buffer <- mallocBytes (fromIntegral stmtBufferSize) + refFalse <- newMVar False + let statement = Statement + { stmtConn = connection + , stmtClose = closeStatement hSTMT buffer + , stmtFetch = fetch hSTMT + , stmtGetCol = getColValue hSTMT buffer + , stmtFields = fields + , stmtClosed = refFalse + } + return statement + where + getFieldDefs :: HSTMT -> Ptr a -> SQLUSMALLINT -> SQLUSMALLINT -> IO [FieldDef] + getFieldDefs hSTMT pFIELD n count + | n > count = return [] + | otherwise = do + res <- sqlDescribeCol hSTMT n ((#ptr FIELD, fieldName) pFIELD) (#const FIELD_NAME_LENGTH) ((#ptr FIELD, NameLength) pFIELD) ((#ptr FIELD, DataType) pFIELD) ((#ptr FIELD, ColumnSize) pFIELD) ((#ptr FIELD, DecimalDigits) pFIELD) ((#ptr FIELD, Nullable) pFIELD) + handleSqlResult (#const SQL_HANDLE_STMT) hSTMT res + name <- peekCString ((#ptr FIELD, fieldName) pFIELD) + dataType <- (#peek FIELD, DataType) pFIELD + columnSize <- (#peek FIELD, ColumnSize) pFIELD + decimalDigits <- (#peek FIELD, DecimalDigits) pFIELD + (nullable :: SQLSMALLINT) <- (#peek FIELD, Nullable) pFIELD + let sqlType = mkSqlType dataType columnSize decimalDigits + fields <- getFieldDefs hSTMT pFIELD (n+1) count + return ((name,sqlType,toBool nullable):fields) + + mkSqlType :: SQLSMALLINT -> SQLULEN -> SQLSMALLINT -> SqlType + mkSqlType (#const SQL_CHAR) size _ = SqlChar (fromIntegral size) + mkSqlType (#const SQL_VARCHAR) size _ = SqlVarChar (fromIntegral size) + mkSqlType (#const SQL_LONGVARCHAR) size _ = SqlLongVarChar (fromIntegral size) + mkSqlType (#const SQL_DECIMAL) size prec = SqlDecimal (fromIntegral size) (fromIntegral prec) + mkSqlType (#const SQL_NUMERIC) size prec = SqlNumeric (fromIntegral size) (fromIntegral prec) + mkSqlType (#const SQL_SMALLINT) _ _ = SqlSmallInt + mkSqlType (#const SQL_INTEGER) _ _ = SqlInteger + mkSqlType (#const SQL_REAL) _ _ = SqlReal + -- From: http://msdn.microsoft.com/library/en-us/odbc/htm/odappdpr_2.asp + -- "Depending on the implementation, the precision of SQL_FLOAT can be either 24 or 53: + -- if it is 24, the SQL_FLOAT data type is the same as SQL_REAL; + -- if it is 53, the SQL_FLOAT data type is the same as SQL_DOUBLE." + mkSqlType (#const SQL_FLOAT) _ _ = SqlFloat + mkSqlType (#const SQL_DOUBLE) _ _ = SqlDouble + mkSqlType (#const SQL_BIT) _ _ = SqlBit + mkSqlType (#const SQL_TINYINT) _ _ = SqlTinyInt + mkSqlType (#const SQL_BIGINT) _ _ = SqlBigInt + mkSqlType (#const SQL_BINARY) size _ = SqlBinary (fromIntegral size) + mkSqlType (#const SQL_VARBINARY) size _ = SqlVarBinary (fromIntegral size) + mkSqlType (#const SQL_LONGVARBINARY)size _ = SqlLongVarBinary (fromIntegral size) + mkSqlType (#const SQL_DATE) _ _ = SqlDate + mkSqlType (#const SQL_TIME) _ _ = SqlTime + mkSqlType (#const SQL_TIMESTAMP) _ _ = SqlDateTime + mkSqlType (#const SQL_WCHAR) size _ = SqlWChar (fromIntegral size) + mkSqlType (#const SQL_WVARCHAR) size _ = SqlWVarChar (fromIntegral size) + mkSqlType (#const SQL_WLONGVARCHAR) size _ = SqlWLongVarChar (fromIntegral size) + mkSqlType tp _ _ = SqlUnknown (fromIntegral tp) + + query :: Connection -> HDBC -> String -> IO Statement + query connection hDBC q = withStatement connection hDBC doQuery + where doQuery hSTMT = withCStringLen q (uncurry (sqlExecDirect hSTMT)) + + beginTransaction myEnvironment hDBC = do + sqlSetConnectOption hDBC (#const SQL_AUTOCOMMIT) (#const SQL_AUTOCOMMIT_OFF) + return () + + commitTransaction myEnvironment hDBC = withForeignPtr myEnvironment $ \hEnv -> do + sqlTransact hEnv hDBC (#const SQL_COMMIT) + sqlSetConnectOption hDBC (#const SQL_AUTOCOMMIT) (#const SQL_AUTOCOMMIT_ON) + return () + + rollbackTransaction myEnvironment hDBC = withForeignPtr myEnvironment $ \hEnv -> do + sqlTransact hEnv hDBC (#const SQL_ROLLBACK) + sqlSetConnectOption hDBC (#const SQL_AUTOCOMMIT) (#const SQL_AUTOCOMMIT_ON) + return () + + tables :: Connection -> HDBC -> IO [String] + tables connection hDBC = do + stmt <- withStatement connection hDBC sqlTables' + -- SQLTables returns (column names may vary): + -- Column name # Type + -- TABLE_NAME 3 VARCHAR + collectRows (\s -> getFieldValue s 3 ("TABLE_NAME", SqlVarChar 0, False) "") stmt + where sqlTables' hSTMT = sqlTables hSTMT nullPtr 0 nullPtr 0 nullPtr 0 nullPtr 0 + + describe :: Connection -> HDBC -> String -> IO [FieldDef] + describe connection hDBC table = do + stmt <- withStatement connection hDBC (sqlColumns' table) + collectRows getColumnInfo stmt + where + sqlColumns' table hSTMT = + withCStringLen table (\(pTable,len) -> + sqlColumns hSTMT nullPtr 0 nullPtr 0 pTable (fromIntegral len) nullPtr 0) + -- SQLColumns returns (column names may vary): + -- Column name # Type + -- COLUMN_NAME 4 Varchar not NULL + -- DATA_TYPE 5 Smallint not NULL + -- COLUMN_SIZE 7 Integer + -- DECIMAL_DIGITS 9 Smallint + -- NULLABLE 11 Smallint not NULL + + getColumnInfo stmt = do + column_name <- getFieldValue stmt 4 ("COLUMN_NAME", SqlVarChar 0, False) "" + (data_type::Int) <- getFieldValue stmt 5 ("DATA_TYPE", SqlSmallInt, False) 0 + (column_size::Int) <- getFieldValue stmt 7 ("COLUMN_SIZE", SqlInteger, True) 0 + (decimal_digits::Int) <- getFieldValue stmt 9 ("DECIMAL_DIGITS", SqlSmallInt, True) 0 + (nullable::Int) <- getFieldValue stmt 11 ("NULLABLE", SqlSmallInt, False) 0 + let sqlType = mkSqlType (fromIntegral data_type) (fromIntegral column_size) (fromIntegral decimal_digits) + return (column_name, sqlType, toBool nullable) + + getFieldValue stmt colNumber fieldDef v = do + mb_v <- stmtGetCol stmt (colNumber-1) fieldDef fromNonNullSqlCStringLen + return (case mb_v of { Nothing -> v; Just a -> a }) + + fetch :: HSTMT -> IO Bool + fetch hSTMT = do + res <- sqlFetch hSTMT + handleSqlResult (#const SQL_HANDLE_STMT) hSTMT res + return (res /= (#const SQL_NO_DATA)) + + getColValue :: HSTMT -> CString -> Int -> FieldDef -> (SqlType -> CString -> Int -> IO (Maybe a)) -> IO (Maybe a) + getColValue hSTMT buffer colNumber (name,sqlType,nullable) f = do + (res,len_or_ind) <- getData buffer (fromIntegral stmtBufferSize) + if len_or_ind == (#const SQL_NULL_DATA) + then return Nothing + else do + mb_value <- (if res == (#const SQL_SUCCESS_WITH_INFO) + then getLongData len_or_ind + else f sqlType buffer (fromIntegral len_or_ind)) + case mb_value of + Just value -> return (Just value) + Nothing -> throwDyn (SqlBadTypeCast name sqlType) + where + getData :: CString -> SQLINTEGER -> IO (SQLRETURN, SQLINTEGER) + getData buffer size = alloca $ \lenP -> do + res <- sqlGetData hSTMT (fromIntegral colNumber+1) (#const SQL_C_CHAR) (castPtr buffer) size lenP + handleSqlResult (#const SQL_HANDLE_STMT) hSTMT res + len_or_ind <- peek lenP + return (res, len_or_ind) + + -- gets called only when there is more data than would + -- fit in the normal buffer. This call to + -- SQLGetData() will fetch the rest of the data. + -- We create a new buffer big enough to hold the + -- old and the new data, copy the old data into + -- it and put the new data in buffer after the old. + getLongData len = allocaBytes (fromIntegral newBufSize) $ \newBuf -> do + copyBytes newBuf buffer stmtBufferSize + -- The last byte of the old data with always be null, + -- so it is overwritten with the first byte of the new data. + let newDataStart = newBuf `plusPtr` (stmtBufferSize - 1) + newDataLen = newBufSize - (fromIntegral stmtBufferSize - 1) + (res,_) <- getData newDataStart newDataLen + f sqlType newBuf (fromIntegral newBufSize-1) + where + newBufSize = len+1 -- to allow for terminating null character + + closeStatement :: HSTMT -> CString -> IO () + closeStatement hSTMT buffer = do + free buffer + sqlFreeStmt hSTMT (#const SQL_DROP) >>= handleSqlResult (#const SQL_HANDLE_STMT) hSTMT hunk ./test/HSQL/src/HSQL/PostgreSQL.hsc 1 +----------------------------------------------------------------------------------------- +{-| Module : Database.HSQL.PostgreSQL + Copyright : (c) Krasimir Angelov 2003 + License : BSD-style + + Maintainer : ka2_mail@yahoo.com + Stability : provisional + Portability : portable + + The module provides interface to PostgreSQL database +-} +----------------------------------------------------------------------------------------- + +module Database.HSQL.PostgreSQL(connect, module Database.HSQL) where + +import Database.HSQL +import Database.HSQL.Types +import Data.Dynamic +import Data.Char +import Foreign +import Foreign.C +import Control.Exception (throwDyn, catchDyn, dynExceptions, Exception(..)) +import Control.Monad(when,unless,mplus) +import Control.Concurrent.MVar +import System.Time +import System.IO.Unsafe +import Text.ParserCombinators.ReadP +import Text.Read +import Numeric + +# include +#include +#include +#include + +type PGconn = Ptr () +type PGresult = Ptr () +type ConnStatusType = #type ConnStatusType +type ExecStatusType = #type ExecStatusType +type Oid = #type Oid + +foreign import ccall "libpq-fe.h PQsetdbLogin" pqSetdbLogin :: CString -> CString -> CString -> CString -> CString -> CString -> CString -> IO PGconn +foreign import ccall "libpq-fe.h PQstatus" pqStatus :: PGconn -> IO ConnStatusType +foreign import ccall "libpq-fe.h PQerrorMessage" pqErrorMessage :: PGconn -> IO CString +foreign import ccall "libpq-fe.h PQfinish" pqFinish :: PGconn -> IO () +foreign import ccall "libpq-fe.h PQexec" pqExec :: PGconn -> CString -> IO PGresult +foreign import ccall "libpq-fe.h PQresultStatus" pqResultStatus :: PGresult -> IO ExecStatusType +foreign import ccall "libpq-fe.h PQresStatus" pqResStatus :: ExecStatusType -> IO CString +foreign import ccall "libpq-fe.h PQresultErrorMessage" pqResultErrorMessage :: PGresult -> IO CString +foreign import ccall "libpq-fe.h PQnfields" pgNFields :: PGresult -> IO Int +foreign import ccall "libpq-fe.h PQntuples" pqNTuples :: PGresult -> IO Int +foreign import ccall "libpq-fe.h PQfname" pgFName :: PGresult -> Int -> IO CString +foreign import ccall "libpq-fe.h PQftype" pqFType :: PGresult -> Int -> IO Oid +foreign import ccall "libpq-fe.h PQfmod" pqFMod :: PGresult -> Int -> IO Int +foreign import ccall "libpq-fe.h PQfnumber" pqFNumber :: PGresult -> CString -> IO Int +foreign import ccall "libpq-fe.h PQgetvalue" pqGetvalue :: PGresult -> Int -> Int -> IO CString +foreign import ccall "libpq-fe.h PQgetisnull" pqGetisnull :: PGresult -> Int -> Int -> IO Int + +foreign import ccall "strlen" strlen :: CString -> IO Int + +----------------------------------------------------------------------------------------- +-- Connect/Disconnect +----------------------------------------------------------------------------------------- + +-- | Makes a new connection to the database server. +connect :: String -- ^ Server name + -> String -- ^ Database name + -> String -- ^ User identifier + -> String -- ^ Authentication string (password) + -> IO Connection +connect server database user authentication = do + pServer <- newCString server + pDatabase <- newCString database + pUser <- newCString user + pAuthentication <- newCString authentication + pConn <- pqSetdbLogin pServer nullPtr nullPtr nullPtr pDatabase pUser pAuthentication + free pServer + free pUser + free pAuthentication + status <- pqStatus pConn + unless (status == (#const CONNECTION_OK)) (do + errMsg <- pqErrorMessage pConn >>= peekCString + pqFinish pConn + throwDyn (SqlError {seState="C", seNativeError=fromIntegral status, seErrorMsg=errMsg})) + refFalse <- newMVar False + let connection = Connection + { connDisconnect = pqFinish pConn + , connExecute = execute pConn + , connQuery = query connection pConn + , connTables = tables connection pConn + , connDescribe = describe connection pConn + , connBeginTransaction = execute pConn "begin" + , connCommitTransaction = execute pConn "commit" + , connRollbackTransaction = execute pConn "rollback" + , connClosed = refFalse + } + return connection + where + execute :: PGconn -> String -> IO () + execute pConn sqlExpr = do + pRes <- withCString sqlExpr (pqExec pConn) + when (pRes==nullPtr) (do + errMsg <- pqErrorMessage pConn >>= peekCString + throwDyn (SqlError {seState="E", seNativeError=(#const PGRES_FATAL_ERROR), seErrorMsg=errMsg})) + status <- pqResultStatus pRes + unless (status == (#const PGRES_COMMAND_OK) || status == (#const PGRES_TUPLES_OK)) (do + errMsg <- pqResultErrorMessage pRes >>= peekCString + throwDyn (SqlError {seState="E", seNativeError=fromIntegral status, seErrorMsg=errMsg})) + return () + + query :: Connection -> PGconn -> String -> IO Statement + query conn pConn query = do + pRes <- withCString query (pqExec pConn) + when (pRes==nullPtr) (do + errMsg <- pqErrorMessage pConn >>= peekCString + throwDyn (SqlError {seState="E", seNativeError=(#const PGRES_FATAL_ERROR), seErrorMsg=errMsg})) + status <- pqResultStatus pRes + unless (status == (#const PGRES_COMMAND_OK) || status == (#const PGRES_TUPLES_OK)) (do + errMsg <- pqResultErrorMessage pRes >>= peekCString + throwDyn (SqlError {seState="E", seNativeError=fromIntegral status, seErrorMsg=errMsg})) + defs <- if status == (#const PGRES_TUPLES_OK) then pgNFields pRes >>= getFieldDefs pRes 0 else return [] + countTuples <- pqNTuples pRes; + tupleIndex <- newMVar (-1) + refFalse <- newMVar False + return (Statement + { stmtConn = conn + , stmtClose = return () + , stmtFetch = fetch tupleIndex countTuples + , stmtGetCol = getColValue pRes tupleIndex countTuples + , stmtFields = defs + , stmtClosed = refFalse + }) + where + getFieldDefs pRes i n + | i >= n = return [] + | otherwise = do + name <- pgFName pRes i >>= peekCString + dataType <- pqFType pRes i + modifier <- pqFMod pRes i + defs <- getFieldDefs pRes (i+1) n + return ((name,mkSqlType dataType modifier,True):defs) + + mkSqlType :: Oid -> Int -> SqlType + mkSqlType (#const BPCHAROID) size = SqlChar (size-4) + mkSqlType (#const VARCHAROID) size = SqlVarChar (size-4) + mkSqlType (#const NAMEOID) size = SqlVarChar 31 + mkSqlType (#const TEXTOID) size = SqlText + mkSqlType (#const NUMERICOID) size = SqlNumeric ((size-4) `div` 0x10000) ((size-4) `mod` 0x10000) + mkSqlType (#const INT2OID) size = SqlSmallInt + mkSqlType (#const INT4OID) size = SqlInteger + mkSqlType (#const FLOAT4OID) size = SqlReal + mkSqlType (#const FLOAT8OID) size = SqlDouble + mkSqlType (#const BOOLOID) size = SqlBit + mkSqlType (#const BITOID) size = SqlBinary size + mkSqlType (#const VARBITOID) size = SqlVarBinary size + mkSqlType (#const BYTEAOID) size = SqlTinyInt + mkSqlType (#const INT8OID) size = SqlBigInt + mkSqlType (#const DATEOID) size = SqlDate + mkSqlType (#const TIMEOID) size = SqlTime + mkSqlType (#const TIMETZOID) size = SqlTimeTZ + mkSqlType (#const ABSTIMEOID) size = SqlAbsTime + mkSqlType (#const RELTIMEOID) size = SqlRelTime + mkSqlType (#const INTERVALOID) size = SqlTimeInterval + mkSqlType (#const TINTERVALOID) size = SqlAbsTimeInterval + mkSqlType (#const TIMESTAMPOID) size = SqlDateTime + mkSqlType (#const TIMESTAMPTZOID) size = SqlDateTimeTZ + mkSqlType (#const CASHOID) size = SqlMoney + mkSqlType (#const INETOID) size = SqlINetAddr + mkSqlType (#const 829) size = SqlMacAddr -- hack + mkSqlType (#const CIDROID) size = SqlCIDRAddr + mkSqlType (#const POINTOID) size = SqlPoint + mkSqlType (#const LSEGOID) size = SqlLSeg + mkSqlType (#const PATHOID) size = SqlPath + mkSqlType (#const BOXOID) size = SqlBox + mkSqlType (#const POLYGONOID) size = SqlPolygon + mkSqlType (#const LINEOID) size = SqlLine + mkSqlType (#const CIRCLEOID) size = SqlCircle + mkSqlType tp size = SqlUnknown (fromIntegral tp) + + getFieldValue stmt colNumber fieldDef v = do + mb_v <- stmtGetCol stmt colNumber fieldDef fromNonNullSqlCStringLen + return (case mb_v of { Nothing -> v; Just a -> a }) + + tables :: Connection -> PGconn -> IO [String] + tables connection pConn = do + stmt <- query connection pConn "select relname from pg_class where relkind='r' and relname !~ '^pg_'" + collectRows (\s -> getFieldValue s 0 ("relname", SqlVarChar 0, False) "") stmt + + describe :: Connection -> PGconn -> String -> IO [FieldDef] + describe connection pConn table = do + stmt <- query connection pConn + ("select attname, atttypid, atttypmod, attnotnull " ++ + "from pg_attribute as cols join pg_class as ts on cols.attrelid=ts.oid " ++ + "where cols.attnum > 0 and ts.relname='"++table++"'") + collectRows getColumnInfo stmt + where + getColumnInfo stmt = do + column_name <- getFieldValue stmt 0 ("attname", SqlVarChar 0, False) "" + (data_type::Int) <- getFieldValue stmt 1 ("atttypid", SqlInteger, False) 0 + (type_mod::Int) <- getFieldValue stmt 2 ("atttypmod", SqlInteger, False) 0 + (notnull::Bool) <- getFieldValue stmt 3 ("attnotnull", SqlBit, False) False + let sqlType = mkSqlType (fromIntegral data_type) (fromIntegral type_mod) + return (column_name, sqlType, not notnull) + + fetch :: MVar Int -> Int -> IO Bool + fetch tupleIndex countTuples = + modifyMVar tupleIndex (\index -> return (index+1,index < countTuples-1)) + + getColValue :: PGresult -> MVar Int -> Int -> Int -> FieldDef -> (SqlType -> CString -> Int -> IO (Maybe a)) -> IO (Maybe a) + getColValue pRes tupleIndex countTuples colNumber (name,sqlType,nullable) f = do + index <- readMVar tupleIndex + when (index >= countTuples) (throwDyn SqlNoData) + isnull <- pqGetisnull pRes index colNumber + if isnull == 1 + then return Nothing + else do + pStr <- pqGetvalue pRes index colNumber + strLen <- strlen pStr + mb_value <- f sqlType pStr strLen + case mb_value of + Just v -> return (Just v) + Nothing -> throwDyn (SqlBadTypeCast name sqlType) hunk ./test/HSQL/src/HSQL/SQLite.hsc 1 +----------------------------------------------------------------------------------------- +{-| Module : Database.HSQL.SQLite + Copyright : (c) Krasimir Angelov 2003 + License : BSD-style + + Maintainer : ka2_mail@yahoo.com + Stability : provisional + Portability : portable + + The module provides interface to SQLite +-} +----------------------------------------------------------------------------------------- + +module Database.HSQL.SQLite(connect, module Database.HSQL) where + +import Database.HSQL +import Database.HSQL.Types +import Foreign +import Foreign.C +import System.IO +import Control.Monad(when) +import Control.Exception(throwDyn) +import Control.Concurrent.MVar + +#include +#include + +type SQLite = Ptr () + +foreign import ccall sqlite_open :: CString -> Int -> Ptr CString -> IO SQLite +foreign import ccall sqlite_close :: SQLite -> IO () +foreign import ccall sqlite_exec :: SQLite -> CString -> FunPtr () -> Ptr () -> Ptr CString -> IO Int +foreign import ccall sqlite_get_table :: SQLite -> CString -> Ptr (Ptr CString) -> Ptr Int -> Ptr Int -> Ptr CString -> IO Int +foreign import ccall sqlite_free_table :: Ptr CString -> IO () +foreign import ccall sqlite_freemem :: CString -> IO () + +foreign import ccall "strlen" strlen :: CString -> IO Int + +----------------------------------------------------------------------------------------- +-- routines for handling exceptions +----------------------------------------------------------------------------------------- + +handleSqlResult :: Int -> Ptr CString -> IO () +handleSqlResult res ppMsg + | res == (#const SQLITE_OK) = return () + | otherwise = do + pMsg <- peek ppMsg + msg <- peekCString pMsg + sqlite_freemem pMsg + throwDyn (SqlError "E" res msg) + +----------------------------------------------------------------------------------------- +-- Connect +----------------------------------------------------------------------------------------- + +connect :: FilePath -> IOMode -> IO Connection +connect fpath mode = + alloca $ \ppMsg -> + withCString fpath $ \pFPath -> do + sqlite <- sqlite_open pFPath 0 ppMsg + when (sqlite == nullPtr) $ do + pMsg <- peek ppMsg + msg <- peekCString pMsg + free pMsg + throwDyn (SqlError + { seState = "C" + , seNativeError = 0 + , seErrorMsg = msg + }) + refFalse <- newMVar False + let connection = Connection + { connDisconnect = sqlite_close sqlite + , connClosed = refFalse + , connExecute = execute sqlite + , connQuery = query connection sqlite + , connTables = tables connection sqlite + , connDescribe = describe connection sqlite + , connBeginTransaction = execute sqlite "BEGIN TRANSACTION" + , connCommitTransaction = execute sqlite "COMMIT TRANSACTION" + , connRollbackTransaction = execute sqlite "ROLLBACK TRANSACTION" + } + return connection + where + oflags1 = case mode of + ReadMode -> (#const O_RDONLY) + WriteMode -> (#const O_WRONLY) + ReadWriteMode -> (#const O_RDWR) + AppendMode -> (#const O_APPEND) + + execute :: SQLite -> String -> IO () + execute sqlite query = + withCString query $ \pQuery -> do + alloca $ \ppMsg -> do + res <- sqlite_exec sqlite pQuery nullFunPtr nullPtr ppMsg + handleSqlResult res ppMsg + + query :: Connection -> SQLite -> String -> IO Statement + query connection sqlite query = do + withCString query $ \pQuery -> do + alloca $ \ppResult -> do + alloca $ \pnRow -> do + alloca $ \pnColumn -> do + alloca $ \ppMsg -> do + res <- sqlite_get_table sqlite pQuery ppResult pnRow pnColumn ppMsg + handleSqlResult res ppMsg + pResult <- peek ppResult + rows <- peek pnRow + columns <- peek pnColumn + defs <- getFieldDefs pResult 0 columns + refFalse <- newMVar False + refIndex <- newMVar 0 + return (Statement + { stmtConn = connection + , stmtClose = sqlite_free_table pResult + , stmtFetch = fetch refIndex rows + , stmtGetCol = getColValue pResult refIndex columns rows + , stmtFields = defs + , stmtClosed = refFalse + }) + where + getFieldDefs :: Ptr CString -> Int -> Int -> IO [FieldDef] + getFieldDefs pResult index count + | index >= count = return [] + | otherwise = do + name <- peekElemOff pResult index >>= peekCString + defs <- getFieldDefs pResult (index+1) count + return ((name,SqlText,True):defs) + + tables :: Connection -> SQLite -> IO [String] + tables connection sqlite = do + stmt <- query connection sqlite "select tbl_name from sqlite_master" + collectRows (\stmt -> getFieldValue stmt "tbl_name") stmt + + describe :: Connection -> SQLite -> String -> IO [FieldDef] + describe connection sqlite table = do + stmt <- query connection sqlite ("pragma table_info("++table++")") + collectRows getRow stmt + where + getRow stmt = do + name <- getFieldValue stmt "name" + notnull <- getFieldValue stmt "notnull" + return (name, SqlText, notnull=="0") + + fetch tupleIndex countTuples = + modifyMVar tupleIndex (\index -> return (index+1,index < countTuples)) + + getColValue pResult refIndex columns rows colNumber (name,sqlType,nullable) f = do + index <- readMVar refIndex + when (index > rows) (throwDyn SqlNoData) + pStr <- peekElemOff pResult (columns*index+colNumber) + if pStr == nullPtr + then return Nothing + else do + strLen <- strlen pStr + mb_value <- f sqlType pStr strLen + case mb_value of + Just v -> return (Just v) + Nothing -> throwDyn (SqlBadTypeCast name sqlType) hunk ./test/HSQL/src/HSQL/Types.hs 1 +-- #hide +module Database.HSQL.Types where + +import Control.Concurrent.MVar +import Data.Dynamic +import Foreign.C + +type FieldDef = (String, SqlType, Bool) + +data SqlType + = SqlChar Int -- ODBC, MySQL, PostgreSQL + | SqlVarChar Int -- ODBC, MySQL, PostgreSQL + | SqlLongVarChar Int -- ODBC + | SqlText -- , , PostgreSQL + | SqlWChar Int -- ODBC + | SqlWVarChar Int -- ODBC + | SqlWLongVarChar Int -- ODBC + | SqlDecimal Int Int -- ODBC + | SqlNumeric Int Int -- ODBC, MySQL, PostgreSQL + | SqlSmallInt -- ODBC, MySQL, PostgreSQL + | SqlMedInt -- , MySQL + | SqlInteger -- ODBC, MySQL, PostgreSQL + | SqlReal -- ODBC, MySQL, PostgreSQL + | SqlFloat -- ODBC + | SqlDouble -- ODBC, MySQL, PostgreSQL + | SqlBit -- ODBC, , PostgreSQL + | SqlTinyInt -- ODBC, MySQL, PostgreSQL + | SqlBigInt -- ODBC, MySQL, PostgreSQL + | SqlBinary Int -- ODBC, , PostgreSQL + | SqlVarBinary Int -- ODBC, , PostgreSQL + | SqlLongVarBinary Int -- ODBC + | SqlDate -- ODBC, MySQL, PostgreSQL + | SqlTime -- ODBC, MySQL, PostgreSQL + | SqlTimeTZ -- , , PostgreSQL + | SqlAbsTime -- , , PostgreSQL + | SqlRelTime -- , , PostgreSQL + | SqlTimeInterval -- , , PostgreSQL + | SqlAbsTimeInterval -- , , PostgreSQL + | SqlTimeStamp -- ODBC, MySQL + | SqlDateTime -- , MySQL + | SqlDateTimeTZ -- , MySQL, PostgreSQL + | SqlYear -- , MySQL + | SqlSET -- , MySQL + | SqlENUM -- , MySQL + | SqlBLOB -- , MySQL + | SqlMoney -- , , PostgreSQL + | SqlINetAddr -- , , PostgreSQL + | SqlCIDRAddr -- , , PostgreSQL + | SqlMacAddr -- , , PostgreSQL + | SqlPoint -- , , PostgreSQL + | SqlLSeg -- , , PostgreSQL + | SqlPath -- , , PostgreSQL + | SqlBox -- , , PostgreSQL + | SqlPolygon -- , , PostgreSQL + | SqlLine -- , , PostgreSQL + | SqlCircle -- , , PostgreSQL + | SqlUnknown Int -- ^ HSQL returns @SqlUnknown tp@ for all + -- columns for which it cannot determine + -- the right type. The @tp@ here is the + -- internal type code returned from the + -- backend library + deriving (Eq, Show) + +data SqlError + = SqlError + { seState :: String + , seNativeError :: Int + , seErrorMsg :: String + } + | SqlNoData + | SqlInvalidHandle + | SqlStillExecuting + | SqlNeedData + | SqlBadTypeCast + { seFieldName :: String + , seFieldType :: SqlType + } + | SqlFetchNull + { seFieldName :: String + } + | SqlUnknownField + { seFieldName :: String + } + | SqlUnsupportedOperation + | SqlClosedHandle + +sqlErrorTc :: TyCon +sqlErrorTc = mkTyCon "Database.HSQL.SqlError" + +instance Typeable SqlError where + typeOf _ = mkAppTy sqlErrorTc [] + +instance Show SqlError where + showsPrec _ (SqlError{seErrorMsg=msg}) = showString msg + showsPrec _ SqlNoData = showString "No data" + showsPrec _ SqlInvalidHandle = showString "Invalid handle" + showsPrec _ SqlStillExecuting = showString "Stlll executing" + showsPrec _ SqlNeedData = showString "Need data" + showsPrec _ (SqlBadTypeCast name tp) = showString ("The type of " ++ name ++ " field can't be converted to " ++ show tp ++ " type") + showsPrec _ (SqlFetchNull name) = showString ("The value of " ++ name ++ " field is null") + showsPrec _ (SqlUnknownField name) = showString ("Unknown field name: " ++ name) + showsPrec _ SqlUnsupportedOperation = showString "Unsupported operation" + showsPrec _ SqlClosedHandle = showString "The referenced handle is already closed" + +-- | A 'Connection' type represents a connection to a database, through which you can operate on the it. +-- In order to create the connection you need to use the @connect@ function from the module for +-- your prefered backend. +data Connection + = Connection + { connDisconnect :: IO () + , connExecute :: String -> IO () + , connQuery :: String -> IO Statement + , connTables :: IO [String] + , connDescribe :: String -> IO [FieldDef] + , connBeginTransaction :: IO () + , connCommitTransaction :: IO () + , connRollbackTransaction :: IO () + , connClosed :: MVar Bool + } + +-- | The 'Statement' type represents a result from the execution of given SQL query. +data Statement + = Statement + { stmtConn :: Connection + , stmtClose :: IO () + , stmtFetch :: IO Bool + , stmtGetCol :: forall a . Int -> FieldDef -> (SqlType -> CString -> Int -> IO (Maybe a)) -> IO (Maybe a) + , stmtFields :: [FieldDef] + , stmtClosed :: MVar Bool + } + + +class SqlBind a where + -- This allows for faster conversion for eq. integral numeric types, etc. + -- Default version uses fromSqlValue. + fromNonNullSqlCStringLen :: SqlType -> CString -> Int -> IO (Maybe a) + fromNonNullSqlCStringLen sqlType cstr cstrLen = do + str <- peekCStringLen (cstr, cstrLen) + return (fromSqlValue sqlType str) + + fromSqlValue :: SqlType -> String -> Maybe a + toSqlValue :: a -> String hunk ./test/HSQL/src/HSQL.hsc 1 +----------------------------------------------------------------------------------------- +{-| Module : Database.HSQL.ODBC + Copyright : (c) Krasimir Angelov 2003 + License : BSD-style + + Maintainer : ka2_mail@yahoo.com + Stability : provisional + Portability : portable + + The module provides an abstract database interface +-} +----------------------------------------------------------------------------------------- + +module Database.HSQL + ( + -- * Connect\/Disconnect + Connection + , disconnect -- :: Connection -> IO () + + -- * Command Execution Functions + -- | Once a connection to a database has been successfully established, + -- the functions described here are used to perform SQL queries and commands. + , execute -- :: Connection -> String -> IO () + , Statement + , query -- :: Connection -> String -> IO Statement + , closeStatement -- :: Statement -> IO () + , fetch -- :: Statement -> IO Bool + + -- * Retrieving Statement values and types + , FieldDef, SqlType(..), SqlBind, toSqlValue + , getFieldValueMB -- :: SqlBind a => Statement -> String -> IO (Maybe a) + , getFieldValue -- :: SqlBind a => Statement -> String -> IO a + , getFieldValue' -- :: SqlBind a => Statement -> String -> a -> IO a + , getFieldValueType -- :: Statement -> String -> (SqlType, Bool) + , getFieldsTypes -- :: Statement -> [(String, SqlType, Bool)] + + -- * Transactions + , inTransaction -- :: Connection -> (Connection -> IO a) -> IO a + + + -- * SQL Exceptions handling + , SqlError(..) + , catchSql -- :: IO a -> (SqlError -> IO a) -> IO a + , handleSql -- :: (SqlError -> IO a) -> IO a -> IO a + , sqlExceptions -- :: Exception -> Maybe SqlError + + -- * Utilities + , forEachRow -- :: (Statement -> s -> IO s) -- ^ an action + , forEachRow' -- :: (Statement -> IO ()) -> Statement -> IO () + , collectRows -- :: (Statement -> IO a) -> Statement -> IO [a] + + -- * Metadata + , tables -- :: Connection -> IO [String] + , describe -- :: Connection -> String -> IO [FieldDef] + + -- * Extra types + , Point(..), Line(..), Path(..), Box(..), Circle(..), Polygon(..) + ) where + +import Prelude hiding (catch) +import Foreign +import Foreign.C +import Data.Int +import Data.Char +import Data.Dynamic +import System.Time +import System.IO.Unsafe(unsafePerformIO) +import Control.Monad(when,unless,mplus) +import Control.Exception (throwDyn, catchDyn, dynExceptions, Exception(..), finally, catch, throwIO) +import Control.Concurrent.MVar +import Text.ParserCombinators.ReadP +import Text.Read +import Text.Read.Lex +import Numeric +import Database.HSQL.Types + +#include + +----------------------------------------------------------------------------------------- +-- routines for exception handling +----------------------------------------------------------------------------------------- + +catchSql :: IO a -> (SqlError -> IO a) -> IO a +catchSql = catchDyn + +handleSql :: (SqlError -> IO a) -> IO a -> IO a +handleSql h f = catchDyn f h + +sqlExceptions :: Exception -> Maybe SqlError +sqlExceptions e = dynExceptions e >>= fromDynamic + +checkHandle :: MVar Bool -> IO a -> IO a +checkHandle ref action = + withMVar ref (\closed -> when closed (throwDyn SqlClosedHandle) >> action) + +closeHandle :: MVar Bool -> IO () -> IO () +closeHandle ref action = + modifyMVar_ ref (\closed -> unless closed action >> return True) + +----------------------------------------------------------------------------------------- +-- Operations on the connection +----------------------------------------------------------------------------------------- + +-- | Closes the connection. Performing 'disconnect' on a connection that has already been +-- closed has no effect. All other operations on a closed connection will fail. +disconnect :: Connection -> IO () +disconnect conn = closeHandle (connClosed conn) (connDisconnect conn) + +-- | Submits a command to the database. +execute :: Connection -- ^ the database connection + -> String -- ^ the text of SQL command + -> IO () +execute conn query = checkHandle (connClosed conn) (connExecute conn query) + +-- | Executes a query and returns a result set +query :: Connection -- ^ the database connection + -> String -- ^ the text of SQL query + -> IO Statement -- ^ the associated statement. Must be closed with + -- the 'closeStatement' function +query conn query = checkHandle (connClosed conn) (connQuery conn query) + + +-- | List all tables in the database. +tables :: Connection -- ^ Database connection + -> IO [String] -- ^ The names of all tables in the database. +tables conn = checkHandle (connClosed conn) (connTables conn) + +-- | List all columns in a table along with their types and @nullable@ flags +describe :: Connection -- ^ Database connection + -> String -- ^ Name of a database table + -> IO [FieldDef] -- ^ The list of fields in the table +describe conn table = checkHandle (connClosed conn) (connDescribe conn table) + +----------------------------------------------------------------------------------------- +-- transactions +----------------------------------------------------------------------------------------- + +-- | The 'inTransaction' function executes the specified action in transaction mode. +-- If the action completes successfully then the transaction will be commited. +-- If the action completes with an exception then the transaction will be rolled back +-- and the exception will be throw again. +inTransaction :: Connection + -> (Connection -> IO a) -- ^ an action + -> IO a -- ^ the returned value is the result returned from action +inTransaction conn action = do + checkHandle (connClosed conn) (connBeginTransaction conn) + r <- catch (action conn) (\err -> do + checkHandle (connClosed conn) (connRollbackTransaction conn) + throwIO err) + checkHandle (connClosed conn) (connCommitTransaction conn) + return r + +----------------------------------------------------------------------------------------- +-- Operations on the statements +----------------------------------------------------------------------------------------- + +-- | 'fetch' fetches the next rowset of data from the result set. +-- The values from columns can be retrieved with 'getFieldValue' function. +fetch :: Statement -> IO Bool +fetch stmt = checkHandle (stmtClosed stmt) (stmtFetch stmt) + +-- | 'closeStatement' stops processing associated with a specific statement, closes any open cursors +-- associated with the statement, discards pending results, and frees all resources associated with +-- the statement. Performing 'closeStatement' on a statement that has already been +-- closed has no effect. All other operations on a closed statement will fail. +closeStatement :: Statement -> IO () +closeStatement stmt = closeHandle (stmtClosed stmt) (stmtClose stmt) + +-- | Returns the type and the @nullable@ flag for field with specified name +getFieldValueType :: Statement -> String -> (SqlType, Bool) +getFieldValueType stmt name = (sqlType, nullable) + where + (sqlType,nullable,colNumber) = findFieldInfo name (stmtFields stmt) 0 + +-- | Returns the list of fields with their types and @nullable@ flags +getFieldsTypes :: Statement -> [(String, SqlType, Bool)] +getFieldsTypes stmt = stmtFields stmt + +findFieldInfo :: String -> [FieldDef] -> Int -> (SqlType,Bool,Int) +findFieldInfo name [] colNumber = throwDyn (SqlUnknownField name) +findFieldInfo name (fieldDef@(name',sqlType,nullable):fields) colNumber + | name == name' = (sqlType,nullable,colNumber) + | otherwise = findFieldInfo name fields $! (colNumber+1) + +----------------------------------------------------------------------------------------- +-- binding +----------------------------------------------------------------------------------------- + +foreign import ccall "stdlib.h atoi" c_atoi :: CString -> IO Int +#ifdef WIN32 +foreign import ccall "stdlib.h _atoi64" c_atoi64 :: CString -> IO Int64 +#else +foreign import ccall "stdlib.h strtoll" c_strtoll :: CString -> Ptr CString -> Int -> IO Int64 +#endif + +instance SqlBind Int where + fromNonNullSqlCStringLen sqlType cstr cstrLen = do + if sqlType==SqlInteger || sqlType==SqlMedInt + || sqlType==SqlTinyInt || sqlType==SqlSmallInt + || sqlType==SqlBigInt + then do + val <- c_atoi cstr + return (Just val) + else + return Nothing + + fromSqlValue SqlInteger s = Just (read s) + fromSqlValue SqlMedInt s = Just (read s) + fromSqlValue SqlTinyInt s = Just (read s) + fromSqlValue SqlSmallInt s = Just (read s) + fromSqlValue SqlBigInt s = Just (read s) + fromSqlValue _ _ = Nothing + + toSqlValue s = show s + +instance SqlBind Int64 where + fromNonNullSqlCStringLen sqlType cstr cstrLen = do + if sqlType==SqlInteger || sqlType==SqlMedInt + || sqlType==SqlTinyInt || sqlType==SqlSmallInt || sqlType==SqlBigInt + then do +#ifdef WIN32 + val <- c_atoi64 cstr +#else + val <- c_strtoll cstr nullPtr 10 +#endif + return (Just val) + else + return Nothing + + fromSqlValue SqlInteger s = Just (read s) + fromSqlValue SqlMedInt s = Just (read s) + fromSqlValue SqlTinyInt s = Just (read s) + fromSqlValue SqlSmallInt s = Just (read s) + fromSqlValue SqlBigInt s = Just (read s) + fromSqlValue _ s = Nothing + + toSqlValue val = show val + +instance SqlBind Integer where + fromSqlValue SqlInteger s = Just (read s) + fromSqlValue SqlMedInt s = Just (read s) + fromSqlValue SqlTinyInt s = Just (read s) + fromSqlValue SqlSmallInt s = Just (read s) + fromSqlValue SqlBigInt s = Just (read s) + fromSqlValue _ _ = Nothing + + toSqlValue s = show s +instance SqlBind String where + fromSqlValue _ = Just + + toSqlValue s = '\'' : foldr mapChar "'" s + where + mapChar '\\' s = '\\':'\\':s + mapChar '\'' s = '\\':'\'':s + mapChar '\n' s = '\\':'n' :s + mapChar '\r' s = '\\':'r' :s + mapChar '\t' s = '\\':'t' :s + mapChar '\NUL' s = '\\':'0' :s + mapChar c s = c :s + +instance SqlBind Bool where + fromSqlValue SqlBit s = Just (s == "t") + fromSqlValue _ _ = Nothing + + toSqlValue True = "'t'" + toSqlValue False = "'f'" + +instance SqlBind Double where + fromSqlValue (SqlDecimal _ _) s = Just (read s) + fromSqlValue (SqlNumeric _ _) s = Just (read s) + fromSqlValue SqlDouble s = Just (read s) + fromSqlValue SqlReal s = Just (read s) + fromSqlValue SqlFloat s = Just (read s) + fromSqlValue _ _ = Nothing + + toSqlValue d = show d + +mkClockTime :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> ClockTime +mkClockTime year mon mday hour min sec tz = + unsafePerformIO $ do + allocaBytes (#const sizeof(struct tm)) $ \ p_tm -> do + (#poke struct tm,tm_sec ) p_tm (fromIntegral sec :: CInt) + (#poke struct tm,tm_min ) p_tm (fromIntegral min :: CInt) + (#poke struct tm,tm_hour ) p_tm (fromIntegral hour :: CInt) + (#poke struct tm,tm_mday ) p_tm (fromIntegral mday :: CInt) + (#poke struct tm,tm_mon ) p_tm (fromIntegral (mon-1) :: CInt) + (#poke struct tm,tm_year ) p_tm (fromIntegral (year-1900) :: CInt) + (#poke struct tm,tm_isdst) p_tm (-1 :: CInt) + t <- mktime p_tm + return (TOD (fromIntegral t + fromIntegral (tz-currTZ)) 0) +foreign import ccall unsafe mktime :: Ptr () -> IO CTime + +{-# NOINLINE currTZ #-} +currTZ :: Int +currTZ = ctTZ (unsafePerformIO (getClockTime >>= toCalendarTime)) -- Hack + +parseTZ :: ReadP Int +parseTZ = (char '+' >> readDecP) `mplus` (char '-' >> fmap negate readDecP) + +f_read :: ReadP a -> String -> Maybe a +f_read f s = case readP_to_S f s of {[(x,_)] -> Just x} + +instance SqlBind ClockTime where + fromSqlValue SqlTimeTZ s = f_read getTimeTZ s + where + getTimeTZ :: ReadP ClockTime + getTimeTZ = do + hour <- readDecP + char ':' + minutes <- readDecP + char ':' + seconds <- readDecP + (char '.' >> readDecP) `mplus` (return 0) + tz <- parseTZ + return (mkClockTime 1970 1 1 hour minutes seconds (tz*3600)) + + fromSqlValue SqlTime s = f_read getTime s + where + getTime :: ReadP ClockTime + getTime = do + hour <- readDecP + char ':' + minutes <- readDecP + char ':' + seconds <- readDecP + return (mkClockTime 1970 1 1 hour minutes seconds currTZ) + + fromSqlValue SqlDate s = f_read getDate s + where + getDate :: ReadP ClockTime + getDate = do + year <- readDecP + char '-' + month <- readDecP + char '-' + day <- readDecP + return (mkClockTime year month day 0 0 0 currTZ) + + fromSqlValue SqlDateTimeTZ s = f_read getDateTimeTZ s + where + getDateTimeTZ :: ReadP ClockTime + getDateTimeTZ = do + year <- readDecP + char '-' + month <- readDecP + char '-' + day <- readDecP + skipSpaces + hour <- readDecP + char ':' + minutes <- readDecP + char ':' + seconds <- readDecP + char '.' >> readDecP -- ) `mplus` (return 0) + tz <- parseTZ + return (mkClockTime year month day hour minutes seconds (tz*3600)) + + fromSqlValue SqlDateTime s = f_read getDateTime s + where + getDateTime :: ReadP ClockTime + getDateTime = do + year <- readDecP + char '-' + month <- readDecP + char '-' + day <- readDecP + skipSpaces + hour <- readDecP + char ':' + minutes <- readDecP + char ':' + seconds <- readDecP + return (mkClockTime year month day hour minutes seconds currTZ) + + fromSqlValue SqlTimeStamp s = + let + [year,month,day,hour,minutes,seconds] = parts [4,2,2,2,2,2] s + + parts [] xs = [] + parts (ix:ixs) xs = part ix 0 xs + where + part 0 n xs = n : parts ixs xs + part k n (x:xs) = part (k-1) (n*10 + (ord x - ord '0')) xs + in + Just (mkClockTime year month day hour minutes seconds currTZ) + + fromSqlValue _ _ = Nothing + + toSqlValue ct = '\'' : (shows (ctYear t) . + score . + shows (ctMonth t) . + score . + shows (ctDay t) . + space . + shows (ctHour t) . + colon . + shows (ctMin t) . + colon . + shows (ctSec t)) "'" + where + t = toUTCTime ct + score = showChar '-' + space = showChar ' ' + colon = showChar ':' + +data Point = Point Double Double deriving (Eq, Show) +data Line = Line Point Point deriving (Eq, Show) +data Path = OpenPath [Point] | ClosedPath [Point] deriving (Eq, Show) +data Box = Box Double Double Double Double deriving (Eq, Show) +data Circle = Circle Point Double deriving (Eq, Show) +data Polygon = Polygon [Point] deriving (Eq, Show) + +instance SqlBind Point where + fromSqlValue SqlPoint s = case read s of + (x,y) -> Just (Point x y) + fromSqlValue _ _ = Nothing + + toSqlValue (Point x y) = '\'' : shows (x,y) "'" + +instance SqlBind Line where + fromSqlValue SqlLSeg s = case read s of + [(x1,y1),(x2,y2)] -> Just (Line (Point x1 y1) (Point x2 y2)) + fromSqlValue _ _ = Nothing + + toSqlValue (Line (Point x1 y1) (Point x2 y2)) = '\'' : shows [(x1,y1),(x2,y2)] "'" + +instance SqlBind Path where + fromSqlValue SqlPath ('(':s) = case read ("["++init s++"]") of -- closed path + ps -> Just (ClosedPath (map (\(x,y) -> Point x y) ps)) + fromSqlValue SqlPath s = case read s of -- closed path -- open path + ps -> Just (OpenPath (map (\(x,y) -> Point x y) ps)) + fromSqlValue SqlLSeg s = case read s of + [(x1,y1),(x2,y2)] -> Just (OpenPath [(Point x1 y1), (Point x2 y2)]) + fromSqlValue SqlPoint s = case read s of + (x,y) -> Just (ClosedPath [Point x y]) + fromSqlValue _ _ = Nothing + + toSqlValue (OpenPath ps) = '\'' : shows ps "'" + toSqlValue (ClosedPath ps) = "'(" ++ init (tail (show ps)) ++ "')" + +instance SqlBind Box where + fromSqlValue SqlBox s = case read ("("++s++")") of + ((x1,y1),(x2,y2)) -> Just (Box x1 y1 x2 y2) + fromSqlValue _ _ = Nothing + + toSqlValue (Box x1 y1 x2 y2) = '\'' : shows ((x1,y1),(x2,y2)) "'" + +instance SqlBind Polygon where + fromSqlValue SqlPolygon s = case read ("["++init (tail s)++"]") of + ps -> Just (Polygon (map (\(x,y) -> Point x y) ps)) + fromSqlValue _ _ = Nothing + + toSqlValue (Polygon ps) = "'(" ++ init (tail (show ps)) ++ "')" + +instance SqlBind Circle where + fromSqlValue SqlCircle s = case read ("("++init (tail s)++")") of + ((x,y),r) -> Just (Circle (Point x y) r) + fromSqlValue _ _ = Nothing + + toSqlValue (Circle (Point x y) r) = "'<" ++ show (x,y) ++ "," ++ show r ++ "'>" + +data INetAddr = INetAddr Int Int Int Int Int deriving (Eq,Show) + +instance SqlBind INetAddr where + fromSqlValue t s + | t == SqlINetAddr || t == SqlCIDRAddr = + case readNum s of + (x1,s) -> case readNum s of + (x2,s) -> case readNum s of + (x3,s) -> case readNum s of + (x4,s) -> case readNum s of + (mask,_) -> Just (INetAddr x1 x2 x3 x4 mask) + | otherwise = Nothing + where + readNum s = case readDec s of + [(x,'.':s)] -> (x,s) + [(x,'/':s)] -> (x,s) + [(x,"")] -> (x,"") + _ -> (0,"") + + toSqlValue (INetAddr x1 x2 x3 x4 mask) = '\'' : + (shows x1 . + dot . + shows x2. + dot . + shows x3 . + dot . + shows x4 . + slash . + shows mask) "'" + where + dot = showChar '.' + slash = showChar '/' + +data MacAddr = MacAddr Int Int Int Int Int Int deriving (Eq,Show) + +instance SqlBind MacAddr where + fromSqlValue SqlMacAddr s = + case readHex s of + [(x1,':':s)] -> case readHex s of + [(x2,':':s)] -> case readHex s of + [(x3,':':s)] -> case readHex s of + [(x4,':':s)] -> case readHex s of + [(x5,':':s)] -> case readHex s of + [(x6,_)] -> Just (MacAddr x1 x2 x3 x4 x5 x6) + fromSqlValue _ _ = Nothing + + toSqlValue (MacAddr x1 x2 x3 x4 x5 x6) = '\'' : + (showHex x1 . + colon . + showHex x2 . + colon . + showHex x3 . + colon . + showHex x4 . + colon . + showHex x5 . + colon . + showHex x6) "'" + where + colon = showChar ':' + showHex = showIntAtBase 16 intToDigit + +-- | Retrieves the value of field with the specified name. +-- The returned value is Nothing if the field value is @null@. +getFieldValueMB :: SqlBind a => Statement + -> String -- ^ Field name + -> IO (Maybe a) -- ^ Field value or Nothing +getFieldValueMB stmt name = checkHandle (stmtClosed stmt) $ + stmtGetCol stmt colNumber (name,sqlType,nullable) fromNonNullSqlCStringLen + where + (sqlType,nullable,colNumber) = findFieldInfo name (stmtFields stmt) 0 + +-- | Retrieves the value of field with the specified name. +-- If the field value is @null@ then the function will throw 'SqlFetchNull' exception. +getFieldValue :: SqlBind a => Statement + -> String -- ^ Field name + -> IO a -- ^ Field value +getFieldValue stmt name = do + mb_v <- getFieldValueMB stmt name + case mb_v of + Nothing -> throwDyn (SqlFetchNull name) + Just a -> return a + +-- | Retrieves the value of field with the specified name. +-- If the field value is @null@ then the function will return the default value. +getFieldValue' :: SqlBind a => Statement + -> String -- ^ Field name + -> a -- ^ Default field value + -> IO a -- ^ Field value +getFieldValue' stmt name def = do + mb_v <- getFieldValueMB stmt name + return (case mb_v of { Nothing -> def; Just a -> a }) + + +----------------------------------------------------------------------------------------- +-- helpers +----------------------------------------------------------------------------------------- + +-- | The 'forEachRow' function iterates through the result set in 'Statement' and +-- executes the given action for each row in the set. The function closes the 'Statement' +-- after the last row processing or if the given action raises an exception. +forEachRow :: (Statement -> s -> IO s) -- ^ an action + -> Statement -- ^ the statement + -> s -- ^ initial state + -> IO s -- ^ final state +forEachRow f stmt s = loop s `finally` closeStatement stmt + where + loop s = do + success <- fetch stmt + if success then f stmt s >>= loop else return s + +-- | The 'forEachRow\'' function is analogous to 'forEachRow' but doesn't provide state. +-- The function closes the 'Statement' after the last row processing or if the given +-- action raises an exception. +forEachRow' :: (Statement -> IO ()) -> Statement -> IO () +forEachRow' f stmt = loop `finally` closeStatement stmt + where + loop = do + success <- fetch stmt + when success (f stmt >> loop) + +-- | The 'collectRows' function iterates through the result set in 'Statement' and +-- executes the given action for each row in the set. The values returned from action +-- are collected and returned as list. The function closes the 'Statement' after the +-- last row processing or if the given action raises an exception. +collectRows :: (Statement -> IO a) -> Statement -> IO [a] +collectRows f stmt = loop `finally` closeStatement stmt + where + loop = do + success <- fetch stmt + if success + then do + x <- f stmt + xs <- loop + return (x:xs) + else return [] addfile ./doc/GNUmakefile hunk ./doc/GNUmakefile 1 +all: Cabal.xml + docbook2pdf Cabal.xml hunk ./doc/Makefile 1 -TOP = ../.. -include $(TOP)/mk/boilerplate.mk - -XML_DOC = Cabal -INSTALL_XML_DOC = $(XML_DOC) - -include $(TOP)/mk/target.mk rmfile ./doc/Makefile hunk ./Distribution/ModuleTest.hs 136 - assertBool "wash2hs isn't +x" (executable perms), - TestLabel "testing the HUnit package" $ TestCase $ + assertBool "wash2hs isn't +x" (executable perms) + ,TestLabel "testing the HUnit package" $ TestCase $ hunk ./Distribution/ModuleTest.hs 169 - assertCmd ("ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit") "package remove", + assertCmd ("ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit") "package remove" hunk ./Distribution/ModuleTest.hs 171 - TestLabel "package A: configure GHC, sdist" $ TestCase $ + ,TestLabel "package A: configure GHC, sdist" $ TestCase $ hunk ./Distribution/ModuleTest.hs 195 - assertBool "dist/build doesn't exists", - TestLabel "package A: GHC and copy-prefix" $ TestCase $ -- (uses above config) + assertBool "dist/build doesn't exists" + ,TestLabel "package A: GHC and copy-prefix" $ TestCase $ -- (uses above config) hunk ./Distribution/ModuleTest.hs 202 - assertEqual "install returned error code" ExitSuccess instRetCode, - TestLabel "package A: GHC and copy to configure loc." $ TestCase $ -- (uses above config) + assertEqual "install returned error code" ExitSuccess instRetCode + ,TestLabel "package A: GHC and copy to configure loc." $ TestCase $ -- (uses above config) hunk ./Distribution/ModuleTest.hs 208 - assertEqual "install returned error code" ExitSuccess instRetCode, - TestLabel "package A: GHC and install w/ no prefix" $ TestCase $ + assertEqual "install returned error code" ExitSuccess instRetCode + ,TestLabel "package A: GHC and install w/ no prefix" $ TestCase $ hunk ./Distribution/ModuleTest.hs 215 - assertEqual "install returned error code" ExitSuccess instRetCode, - TestLabel "package withHooks: GHC building" $ TestCase $ + assertEqual "install returned error code" ExitSuccess instRetCode + ,TestLabel "package HSQL (make-based): GHC building" $ TestCase $ + do setCurrentDirectory $ (testdir `joinFileName` "HSQL") + system "make distclean" + system "rm -rf /tmp/lib/HSQL" + system "ghc -cpp --make -i../.. Setup.lhs -o setup 2>out.build" + assertCmd "./setup configure --ghc --prefix=/tmp" + "configure returned error code" + doesFileExist "config.mk" >>= + assertBool "config.mk not generated after configure" + assertCmd "./setup build" "build hsql returned error code" + assertCmd "./setup copy" "copy hsql returned error code" + doesFileExist "/tmp/lib/HSQL/GHC/libHSsql.a" >>= + assertBool "libHSsql.a doesn't exist. copy failed." + ,TestLabel "package withHooks: GHC building" $ TestCase $ hunk ./Distribution/ModuleTest.hs 243 - assertBool "D.gc did not get compiled to D.o this is an overriding test", - TestLabel "package withHooks: GHC and copy" $ TestCase $ + assertBool "D.gc did not get compiled to D.o this is an overriding test" + ,TestLabel "package withHooks: GHC and copy" $ TestCase $ hunk ./Distribution/ModuleTest.hs 251 - assertEqual "install returned error code" ExitSuccess instRetCode, - TestLabel "package withHooks: GHC and clean" $ TestCase $ + assertEqual "install returned error code" ExitSuccess instRetCode + ,TestLabel "package withHooks: GHC and clean" $ TestCase $ hunk ./Distribution/ModuleTest.hs 255 - assertEqual "C.hs (a generated file) not cleaned." False, - TestLabel "package twoMains: GHC building" $ TestCase $ + assertEqual "C.hs (a generated file) not cleaned." False + ,TestLabel "package twoMains: GHC building" $ TestCase $ hunk ./Distribution/ModuleTest.hs 270 - assertCmd "./dist/build/testB isB" "B is not B", - TestLabel "package depOnLib: GHC building (executable depending on its lib)" $ TestCase $ + assertCmd "./dist/build/testB isB" "B is not B" + ,TestLabel "package depOnLib: GHC building (executable depending on its lib)" $ TestCase $ hunk ./Distribution/ModuleTest.hs 291 --- TestLabel "package A:no install-prefix and hugs" $ TestCase $ +-- ,TestLabel "package A:no install-prefix and hugs" $ TestCase $ hunk ./Distribution/Simple.hs 192 - putStrLn $ "Suffix Handlers are: " ++ concatMap (show . fst) pps hunk ./TODO 29 -** How about replacing the modules field with hidden-modules, to avoid - repetition? - hunk ./test/HSQL/Makefile 120 - + hunk ./test/HSQL/Makefile 155 - $(GHC_PKG) -u -g -i hsql.pkg + $(GHC_PKG) --config-file=tmpConfig -u -g -i hsql.pkg hunk ./test/HSQL/out.build 17 -Compiling Distribution.Make ( ../../Distribution/Make.hs, ../../Distribution/Make.o ) +Skipping Distribution.Make ( ../../Distribution/Make.hs, ../../Distribution/Make.o ) move ./test ./tests hunk ./Distribution/ModuleTest.hs 121 - = let testdir = currDir `joinFileName` "test" in + = let testdir = currDir `joinFileName` "tests" in hunk ./GNUmakefile 70 - cd test/HUnit-1.0 && make clean + cd tests/HUnit-1.0 && make clean hunk ./GNUmakefile 73 - cd test/A && make clean - cd test/wash2hs && make clean + cd tests/A && make clean + cd tests/wash2hs && make clean hunk ./GNUmakefile 88 - cd test/HUnit-1.0 && make && ./setup configure --prefix=$(PREF) && ./setup build + cd tests/HUnit-1.0 && make && ./setup configure --prefix=$(PREF) && ./setup build hunk ./GNUmakefile 93 - cd test/HUnit-1.0 && ./setup install $(USER_FLAG) + cd tests/HUnit-1.0 && ./setup install $(USER_FLAG) hunk ./GNUmakefile 100 - ghc -main-is Distribution.ModuleTest.main $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:test/HUnit-1.0/src Distribution/ModuleTest -o moduleTest + ghc -main-is Distribution.ModuleTest.main $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:tests/HUnit-1.0/src Distribution/ModuleTest -o moduleTest hunk ./GNUmakefile 103 - cd test/A && make clean - cd test/HUnit-1.0 && make clean - cd test/A && make - cd test/HUnit-1.0 && make + cd tests/A && make clean + cd tests/HUnit-1.0 && make clean + cd tests/A && make + cd tests/HUnit-1.0 && make move ./Distribution/ModuleTest.hs ./tests/ModuleTest.hs hunk ./tests/HSQL/out.build 1 -Chasing modules from: Setup.lhs -Skipping Distribution.Compat.RawSystem ( ../../Distribution/Compat/RawSystem.hs, ../../Distribution/Compat/RawSystem.o ) -Skipping Distribution.Compat.Exception ( ../../Distribution/Compat/Exception.hs, ../../Distribution/Compat/Exception.o ) -Skipping Distribution.Extension ( ../../Distribution/Extension.hs, ../../Distribution/Extension.o ) -Skipping Distribution.PreProcess.Unlit ( ../../Distribution/PreProcess/Unlit.hs, ../../Distribution/PreProcess/Unlit.o ) -Skipping Distribution.Compat.FilePath ( ../../Distribution/Compat/FilePath.hs, ../../Distribution/Compat/FilePath.o ) -Skipping Distribution.Compat.Directory ( ../../Distribution/Compat/Directory.hs, ../../Distribution/Compat/Directory.o ) -Skipping Distribution.Compat.ReadP ( ../../Distribution/Compat/ReadP.hs, ../../Distribution/Compat/ReadP.o ) -Skipping Distribution.License ( ../../Distribution/License.hs, ../../Distribution/License.o ) -Skipping Distribution.Version ( ../../Distribution/Version.hs, ../../Distribution/Version.o ) -Skipping Distribution.Package ( ../../Distribution/Package.hs, ../../Distribution/Package.o ) -Skipping Distribution.GetOpt ( ../../Distribution/GetOpt.hs, ../../Distribution/GetOpt.o ) -Skipping Distribution.Setup ( ../../Distribution/Setup.hs, ../../Distribution/Setup.o ) -Skipping Distribution.Simple.Utils ( ../../Distribution/Simple/Utils.hs, ../../Distribution/Simple/Utils.o ) -Skipping Distribution.ParseUtils ( ../../Distribution/ParseUtils.hs, ../../Distribution/ParseUtils.o ) -Skipping Distribution.PackageDescription ( ../../Distribution/PackageDescription.hs, ../../Distribution/PackageDescription.o ) -Skipping Distribution.Make ( ../../Distribution/Make.hs, ../../Distribution/Make.o ) -Skipping Main ( Setup.lhs, Setup.o ) -Linking ... rmfile ./tests/HSQL/out.build binary ./tests/HSQL/setup oldhex *7f454c460101010000000000000000000200030001000000b0990408340000001ca60d00000000 *00340020000800280022001f000600000034000000348004083480040800010000000100000500 *000004000000030000003401000034810408348104081300000013000000040000000100000001 *00000000000000008004080080040894110d0094110d00050000000010000001000000a0110d00 *a0a11108a0a1110848750000c02b01000600000000100000020000006c840d006c1412086c1412 *08e0000000e0000000060000000400000004000000480100004881040848810408200000002000 *0000040000000400000050e5746468110d0068911108689111082c0000002c0000000400000004 *00000051e57464000000000000000000000000000000000000000007000000040000002f6c6962 *2f6c642d6c696e75782e736f2e320000040000001000000001000000474e550000000000020000 *000200000000000000610000006b00000016000000030000005600000000000000000000003300 *0000000000000000000000000000230000006a0000001300000050000000570000004700000043 *0000001a0000002a0000002800000019000000520000004200000039000000340000005c000000 *400000001500000055000000620000000000000000000000170000000c0000005e000000630000 *000000000051000000210000006100000000000000000000000000000000000000660000000000 *000027000000650000003a000000530000000000000035000000000000005f0000000000000000 *0000000000000069000000410000002200000000000000040000005b000000360000000f000000 *37000000000000006400000038000000540000000d0000003c0000000700000000000000000000 *00000000002b0000000000000068000000060000003f0000004a000000240000004f0000001e00 *00005a000000000000004b00000000000000000000003d00000000000000670000005d00000045 *0000004e000000440000001f000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000e000000000000000000000000000000000000000000000000000000090000001100 *000000000000000000001200000000000000000000001c00000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000001400000000000000 *18000000000000002e0000000000000000000000050000003000000000000000000000001d0000 *000000000000000000020000000000000001000000000000000000000029000000000000000000 *00000000000000000000000000000b0000000000000000000000000000003e0000001b00000000 *00000000000000000000000000000000000000310000003b0000002c0000002d00000020000000 *0a0000004800000046000000080000004900000058000000000000002500000000000000000000 *00590000003200000000000000000000002f000000600000004d0000004c000000000000002600 *0000000000001000000000000000000000000000000000000000000000004b000000000000003d *000000120000008d030000000000003a000000120000007e01000000000000082c000012000000 *1203000000000000be0000001200000034020000000000003a0000001200000069020000000000 *005300000012000000ef01000000000000ec00000012000000d701000000000000080000001200 *0000560000006c141208000000001100f1ff5f000000000000008e02000012000000fb02000000 *0000007c0000001200000099020000000000003f00000012000000b00200000000000071000000 *12000000d7020000000000005c00000012000000f501000000000000d400000012000000690100 *0000000000bc000000120000009f030000000000002300000012000000d8020000000000005a00 *000012000000c701000000000000f6000000120000001702000000000000df0000001200000050 *02000000000000360000001200000057020000000000003a00000012000000d002000000000000 *9c0000001200000010020000000000009400000012000000a901000000000000ad000000120000 *0083030000000000001902000012000000b6020000000000000106000012000000010300000000 *000039000000120000002503000000000000d3000000120000002e020000000000003a00000012 *0000006f0000000000000001040000120000007a000000000000004e0200001200000096000000 *a49304080000000012000a00fc01000000000000b501000012000000ba010000000000003a0000 *0012000000b2010000000000008b00000012000000e5010000000000003c000000120000008500 *000000000000d101000012000000c002000000000000d300000012000000900100000017120804 *00000011001700c90200000417120804000000110017002802000000000000fa01000012000000 *900000000000000043000000120000009c00000000000000d60500001200000076010000000000 *0040000000120000009e030000000000003b3b000012000000a700000000000000320500001200 *00005b010000000000007c000000120000001e020000000000004700000012000000f102000000 *000000d300000012000000b200000000000000630500001200000055030000000000007f000000 *120000006d030000000000000d02000012000000b2030000000000004c00000012000000bd0000 *00000000007f02000012000000c800000000000000de0000001200000063010000000000006100 *000012000000dd02000000000000d800000012000000d7000000000000001b0200001200000073 *020000000000001001000012000000cd030000e8161208000000001000f1ff4303000000000000 *fa00000012000000a7030000000000004600000012000000e600000000000000b2010000120000 *006102000000000000ba01000012000000f400000070ec10080000000012000d007d0300000000 *00007d00000012000000de010000000000004600000012000000bf03000000000000be00000012 *000000af0200000000000080010000120000003b02000000000000b901000012000000c1010000 *000000003600000012000000fa00000000000000c8000000120000000a02000000000000360000 *0012000000be030000000000003300000012000000740300000000000086000000120000007d02 *0000000000003a000000120000009102000000000000c0010000120000009d010000000000004d *000000120000003e03000000000000d100000012000000ce01000000000000d300000012000000 *c6030000e8161208000000001000f1ff0701000060151208000000001100f1ffad030000000000 *00b100000012000000d903000060cd1208000000001000f1ff97010000000000003a0000001200 *0000a0020000000000002801000012000000030200000000000035000000120000008a02000000 *00000052000000120000003d0300000000000013000000120000004802000000000000a6000000 *120000001d010000000000008f010000120000002b0100000000000068000000120000002e0300 *00a4ec10080400000011000e005d03000000000000870100001200000069030000000000001400 *000012000000a7020000000000003400000012000000fa0200000000000065010000120000000c *000000000000000000000020000000e30200000000000071000000120000001b03000000000000 *470000001200000043020000000000007c00000012000000930300000000000010010000120000 *0046010000000000007f0200001200000020000000000000000000000020000000390000000000 *00007f00000012000000006c6962646c2e736f2e32005f4a765f5265676973746572436c617373 *6573005f5f676d6f6e5f73746172745f5f006c69626d2e736f2e36006c64657870006c6962676d *702e736f2e33005f5f676d706e5f636d70005f44594e414d4943005f5f676d707a5f6469766578 *616374005f5f676d707a5f676364005f5f676d707a5f6d756c005f5f676d707a5f636f6d005f5f *676d707a5f696e6974005f5f676d707a5f786f72005f5f676d707a5f616e64005f5f676d707a5f *696f72005f5f676d707a5f616464005f5f676d707a5f666469765f7172005f5f676d707a5f7464 *69765f7172005f5f676d707a5f746469765f72005f66696e69005f5f676d706e5f6763645f3100 *5f474c4f42414c5f4f46465345545f5441424c455f005f5f676d707a5f746469765f71005f5f67 *6d705f7365745f6d656d6f72795f66756e6374696f6e73005f5f676d707a5f737562006c696263 *2e736f2e36007761697470696400706175736500736967696e7465727275707400737973636f6e *66005f5f737472746f645f696e7465726e616c007374646f7574007574696d6500736967656d70 *7479736574007374726572726f72006d656d6d6f7665006d756e6d61700074696d657300676574 *656e7600697377616c70686100676574706964006d656d637079007365746974696d6572006578 *65636c00706572726f72006d616c6c6f630069736174747900726d6469720073656c6563740066 *666c757368007369676164647365740061626f72740063686d6f640072656e616d650073747272 *6368720072656164007374726e63707900756e6c696e6b00676574727573616765007265616c6c *6f6300736967616374696f6e005f5f787374617436340067657474696d656f66646179006d656d *736574006f70656e64697200737472636d700067657463776400737072696e74660066636c6f73 *65007365746c6f63616c6500697377646967697400737464657272006d6d617036340076666f72 *6b006670757463005f5f63747970655f625f6c6f6300697377757070657200667772697465005f *5f6572726e6f5f6c6f636174696f6e00746f776c6f7765720073696764656c7365740069737761 *6c6e756d005f494f5f737464696e5f75736564005f65786974005f5f6c6962635f73746172745f *6d61696e006c7365656b3634007265616464697236345f72006162730065786563767000636c6f *73656469720066636e746c00746373657461747472006d6b646972005f5f667873746174363400 *76667072696e746600726169736500667265650073696770726f636d61736b00666f70656e3634 *005f6564617461005f5f6273735f7374617274005f656e6400474c4942435f322e3000474c4942 *435f322e3300474c4942435f322e3200474c4942435f322e310000000000020002000200020002 *000200020001000000020002000200020002000200020002000200020002000200030002000200 *020002000200020002000000000001000200020002000200000002000200020002000000000002 *000200000002000200020000000300020002000000000002000200000004000100020002000000 *020001000200020003000300020002000000020003000200020002000200020002000100010002 *000100020002000200020002000200000000000100040002000200020000000500020002000400 *000000000600010001002f00000010000000200000001069690d00000600de0300000000000001 *0004005101000010000000000000001369690d00000500e8030000100000001269690d00000400 *f2030000100000001169690d00000300fc030000100000001069690d00000200de030000000000 *00e416120806690000001712080528000004171208052900006c15120807010000701512080702 *0000741512080703000078151208070400007c1512080705000080151208070600008415120807 *07000088151208070800008c151208070a000090151208070b000094151208070c000098151208 *070d00009c151208070e0000a0151208070f0000a415120807100000a815120807110000ac1512 *0807120000b015120807130000b415120807140000b815120807150000bc15120807160000c015 *120807170000c415120807180000c815120807190000cc151208071a0000d0151208071b0000d4 *151208071c0000d8151208071d0000dc151208071e0000e0151208071f0000e415120807200000 *e815120807220000ec15120807230000f015120807240000f415120807250000f8151208072600 *00fc1512080727000000161208072a000004161208072b000008161208072c00000c161208072d *000010161208072e000014161208072f000018161208073000001c161208073100002016120807 *320000241612080733000028161208073400002c16120807350000301612080736000034161208 *0737000038161208073800003c1612080739000040161208073a000044161208073b0000481612 *08073c00004c161208073e000050161208073f0000541612080740000058161208074100005c16 *1208074300006016120807440000641612080745000068161208074600006c1612080747000070 *16120807480000741612080749000078161208074a00007c161208074b000080161208074c0000 *84161208074d000088161208074e00008c161208074f0000901612080750000094161208075100 *0098161208075400009c16120807560000a016120807570000a416120807580000a81612080759 *0000ac161208075a0000b0161208075b0000b4161208075c0000b8161208075d0000bc16120807 *5f0000c016120807600000c416120807610000c816120807620000cc16120807640000d0161208 *07650000d416120807660000d816120807670000dc16120807680000e0161208076a00005589e5 *83ec08e825060000e88c060000e887580c00c9c300ff3564151208ff256815120800000000ff25 *6c1512086800000000e9e0ffffffff25701512086808000000e9d0ffffffff2574151208681000 *0000e9c0ffffffff25781512086818000000e9b0ffffffff257c1512086820000000e9a0ffffff *ff25801512086828000000e990ffffffff25841512086830000000e980ffffffff258815120868 *38000000e970ffffffff258c1512086840000000e960ffffffff25901512086848000000e950ff *ffffff25941512086850000000e940ffffffff25981512086858000000e930ffffffff259c1512 *086860000000e920ffffffff25a01512086868000000e910ffffffff25a41512086870000000e9 *00ffffffff25a81512086878000000e9f0feffffff25ac1512086880000000e9e0feffffff25b0 *1512086888000000e9d0feffffff25b41512086890000000e9c0feffffff25b815120868980000 *00e9b0feffffff25bc15120868a0000000e9a0feffffff25c015120868a8000000e990feffffff *25c415120868b0000000e980feffffff25c815120868b8000000e970feffffff25cc15120868c0 *000000e960feffffff25d015120868c8000000e950feffffff25d415120868d0000000e940feff *ffff25d815120868d8000000e930feffffff25dc15120868e0000000e920feffffff25e0151208 *68e8000000e910feffffff25e415120868f0000000e900feffffff25e815120868f8000000e9f0 *fdffffff25ec1512086800010000e9e0fdffffff25f01512086808010000e9d0fdffffff25f415 *12086810010000e9c0fdffffff25f81512086818010000e9b0fdffffff25fc1512086820010000 *e9a0fdffffff25001612086828010000e990fdffffff25041612086830010000e980fdffffff25 *081612086838010000e970fdffffff250c1612086840010000e960fdffffff2510161208684801 *0000e950fdffffff25141612086850010000e940fdffffff25181612086858010000e930fdffff *ff251c1612086860010000e920fdffffff25201612086868010000e910fdffffff252416120868 *70010000e900fdffffff25281612086878010000e9f0fcffffff252c1612086880010000e9e0fc *ffffff25301612086888010000e9d0fcffffff25341612086890010000e9c0fcffffff25381612 *086898010000e9b0fcffffff253c16120868a0010000e9a0fcffffff254016120868a8010000e9 *90fcffffff254416120868b0010000e980fcffffff254816120868b8010000e970fcffffff254c *16120868c0010000e960fcffffff255016120868c8010000e950fcffffff255416120868d00100 *00e940fcffffff255816120868d8010000e930fcffffff255c16120868e0010000e920fcffffff *256016120868e8010000e910fcffffff256416120868f0010000e900fcffffff256816120868f8 *010000e9f0fbffffff256c1612086800020000e9e0fbffffff25701612086808020000e9d0fbff *ffff25741612086810020000e9c0fbffffff25781612086818020000e9b0fbffffff257c161208 *6820020000e9a0fbffffff25801612086828020000e990fbffffff25841612086830020000e980 *fbffffff25881612086838020000e970fbffffff258c1612086840020000e960fbffffff259016 *12086848020000e950fbffffff25941612086850020000e940fbffffff25981612086858020000 *e930fbffffff259c1612086860020000e920fbffffff25a01612086868020000e910fbffffff25 *a41612086870020000e900fbffffff25a81612086878020000e9f0faffffff25ac161208688002 *0000e9e0faffffff25b01612086888020000e9d0faffffff25b41612086890020000e9c0faffff *ff25b81612086898020000e9b0faffffff25bc16120868a0020000e9a0faffffff25c016120868 *a8020000e990faffffff25c416120868b0020000e980faffffff25c816120868b8020000e970fa *ffffff25cc16120868c0020000e960faffffff25d016120868c8020000e950faffffff25d41612 *0868d0020000e940faffffff25d816120868d8020000e930faffffff25dc16120868e0020000e9 *20faffffff25e016120868e8020000e910faffff0000000031ed5e89e183e4f050545268e0eb10 *086880eb1008515668e0b70f08e87bfdfffff490905589e553e8000000005b81c3837b0d00508b *838401000085c07402ffd08b5dfcc9c3909090909090909090905589e583ec08803d0817120800 *752da1a8a111088b1085d2741b8db60000000083c004a3a8a11108ffd2a1a8a111088b1085d275 *ebc6050817120801c9c389f65589e583ec08a15c15120885c07421b80000000085c07418c70424 *5c151208e89c65fbf78db6000000008dbf0000000089ec5dc3e900000000833daca1110800751e *c705aca1110801000000c74500819b040883c504c7450090310c0883c50483c5fcff650089f6e9 *c7ffffff8d760014a21108b09a040800000200180001008d45f43b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e86d630b0083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcbe14a2110883c5f4e98c6c0b0034d5110814a21108109b04080000 *0200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e809630b0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f414a2 *1108be34d5110883c5f0e98d760b0090e900000000833dd0a11108000f8596000000c705d0a111 *0801000000c7450074320c0883c504c74500f0440c0883c504c745005c460c0883c504c7450004 *aa0b0883c504c7450004a10b0883c504c7450035d2040883c504c74500f8400c0883c504c74500 *3519050883c504c74500919f050883c504c745008db3050883c504c74500e524060883c504c745 *009162070883c504c745006dc4090883c504c7450090310c0883c50483c5fcff650089f6e4d111 *08d4d1110844d11108dcd21108d0d5110860d51108409c040801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4be60d5110883c5f0e990750b00309c040800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8ec1008894df4 *bed4d1110883c5f0e977730b008d76002c9c040801000100130003008d45ec3b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8849c04088d4ff8894df48b *56048955f0bee4d1110883c5ece910790b00309c040800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9b0ec1008894df4bed4d1110883c5f0e9eb720b008d7600 *2c9c040801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ecc09c04088b46048947f0c747f8109d04088d47ec8945f48d47f889 *45f0bee4d1110883c5ece977780b008d76002c9c040801000100130017008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f84c9d04088b4e04894f *fc8d57f88955f4c745f0d0d51108be44d1110883c5ece91d780b00902c9c040801000000240037 *0083c7183b7b5c760ac7436c06000000ff63f8c747ec509c04088b45048947f0c747f8ac9d0408 *8b45048947fc8d47ec8945048d47f88945008b760883c5fce9cd770b00902c9c04080400010000 *00000011003f008d45f83b43547308bed4a11108ff63fcbedcd21108c745fc049e040883c5fcff *268d7600e4d11108d4d11108b8d3110844d11108dcd21108b0d51108b8d5110858d21108b0d011 *080000000024000000c745000cd211088b760c83c5fce94e730b0089f6bedcd21108c74500a89e *0408ff2689f6909e040800000200120001008d45f03b4354720883c7083b7b5c760ac7436c0200 *0000ff63f8c745f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d51108 *83c5f0e9ec720b009c9e040801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fcb80a1208c70700d211088b4e *04894df48d57f88955f0beb0d0110883c5ece99b760b008d7600849e040801000100130041008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f828 *9f04088b4e04894ffc8d57f88955f4beb8d3110883c5f0e93c720b00809e040800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c8ec1008894df4bed4d1110883 *c5f0e923700b008d76007c9e040801000100130007018d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec889f04088b46048947f0c747f8d89f0408 *8d47ec8945f48d47f88945f0bee4d1110883c5ece9af750b008d7600949e040800000200120003 *008d45f03b43547303ff63f8c745f8d46d10088975fcc745f458d21108beb8d5110883c5f0e96b *710b008d76007c9e0408010001001300cf018d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec14a004088b46048947f0c747f874a004088d47ec89 *45f48d47f88945f0be44d1110883c5ece917750b008d76007c9e0408010000002400ef0183c718 *3b7b5c760ac7436c06000000ff63f8c747ecd89e0408c747f8aca004088b45048947fc8d4fec89 *4d048d57f88955008b760883c5fce9cb740b008d7600897500bedcd21108c745fc0ca1040883c5 *fcff264ca10408bc9e04087c9e0408000000002500ff017c9e040804000100000000001100ff01 *8d45f83b43547308bedca11108ff63fc8b7500c7450074a10408ff26e4d1110854d211084cd211 *08d4d1110844d11108d8d01108dcd21108ccd21108b0b011080cac11083cac110804ac110814ac *110834ac1108fcab1108e4ab1108e8ad1108e0ad1108a4a91108a0d01108d0d5110860d51108ac *d51108b0d51108d4a11108dca11108a0a104081a000000ffffff03a0a104081a000000bfffff03 *a0a104081a000000bfffbf03a0a104081a000000bfffbd03a0a104081a000000bfffbd03a0a104 *081a000000bfffbd0301000000240000008b7608e9a86f0b00c0a1040801000100130001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beb0b01108c745f058a2040883c5 *f0ff26aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e0ec1008894df4bed4d1110883c5f0e9576d0b008d7600a0a1040801000100130009018d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec6ca204 *088b46048947f0c747f8a4a204088d47ec8945f48d47f88945f0bee4d1110883c5ece9e3720b00 *8d7600a0a104081a0000009d009803a0a104081a0000009d009803a0a10408190000009d009801 *aca104081500000011001200fca1040801000100130001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4beb0d5110883c5f0e9706e0b00aca104081200000011000200aca1 *04081200000001000200aca104081200000001000200aca1040800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b91ced1008894df4bed4d1110883c5f0e9336c0b *008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8c8a304088d47f8894500bed0d511 *0883c5fce9e46d0b00aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b930ed1008894df4bed4d1110883c5f0e9cb6b0b008d760083c70c3b7b5c760ac7 *436c03000000ff63f8c747f830a404088d47f8894500bed0d5110883c5fce97c6d0b0060a40408 *f8a30408b0a30408000000002500ffffa4a30408010000002400ffffc74500fcd211088b450489 *45fc8b7608c74504a0a4040883c5f8e949710b009098a30408010001001300ffff8d45e83b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4beccd21108c745f0aca4040883c5f0ff2658 *a3040804000100010000000c00ffff8d45f83b4354720883c7183b7b5c760ac7436c06000000ff *63fcc747ec70a304088b45008947f0c747f8d8a404088b45008947fc8d47ec8945008d47f88945 *fc8b760483c5f8e9b5700b0090a0a10408190000001d000801a0a10408140000000d000800a0a1 *0408140000000d000800be00d2110883c504ff25c46d100889f6aca1040800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b948ed1008894df4bed4d1110883c5f0 *e95b6a0b008d7600a0a1040801000100130009008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8a0a504088b4e04894df48d57f88955f0bee4d1 *110883c5ece9f46f0b0083c7183b7b5c760ac7436c06000000ff63f8c747ecdca504088b460489 *47f0c747f87cdc0b088d4fec894ffcc70700d211088d77f883c504ff25c06d100889f620a60408 *84a50408a0a104080000000025000900a0a1040800000000240009008b7624c7450074a60408ff *26a0a1040801000100130009008d45f43b43547303ff63f8c745f8d46d10088975fc8b7604c745 *f480a6040883c5f4ff26be00d2110883c504ff25c46d100889f6aca1040800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954ed1008894df4bed4d1110883c5f0 *e923690b008d7600a0a1040801000100130009008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8d8a604088b4e04894df48d57f88955f0bee4d1 *110883c5ece9bc6e0b0083c7183b7b5c760ac7436c06000000ff63f8c747ec14a704088b460489 *47f0c747f87cdc0b088d4fec894ffcc70700d211088d77f883c504ff25c06d100889f658a70408 *bca60408a0a104080000000025000900a0a1040800000000240009008b760cc74500aca70408ff *26a0a1040801000100130009008d45f43b43547303ff63f8c745f8d46d10088975fc8b7604c745 *f4b8a7040883c5f4ff26a0a1040801000100130009008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec98a604088b46048947f0c747f8d0a70408 *8b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9bd6d0b0090be00d2110883c5 *04ff25c46d100889f6b864ed1008894500bed4d1110883c5fce9ab670b008d7600b868ed100889 *4500bed4d1110883c5fce993670b008d7600b870ed1008894500bed4d1110883c5fce97b670b00 *8d7600b878ed1008894500be4cd2110883c5fce963670b008d7600b0a80408b0a80408b0a80408 *98a8040880a8040868a80408a8a104080000000025000300a8a1040801000100130003008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b7604c745f4eca8040883c5f4ff26aca104080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8ed1008894df4be *d4d1110883c5f0e9d3660b008d7600a0a104080100010013000d008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf8a804088b46048947f0c747 *f828a904088d47ec8945f48d47f88945f0bee4d1110883c5ece95f6c0b008d760083c7183b7b5c *760ac7436c06000000ff63f8c747ec64a904088b46048947f0c747f87cdc0b088d4fec894ffcc7 *0700d211088d77f883c504ff25c06d100889f6b8a9040858a80408a0a104080000000025000d00 *8b7504c745040caa040883c504ff2690aca1040800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9b4ed1008894df4bed4d1110883c5f0e9d3650b008d7600a0a1 *040801000100130009008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f828aa04088b4e04894df48d57f88955f0bee4d1110883c5ece96c6b0b00 *83c7183b7b5c760ac7436c06000000ff63f8c747ec64aa04088b46048947f0c747f87cdc0b088d *4fec894ffcc70700d211088d77f883c508ff25c06d100889f6a8aa04080caa0408a0a104080100 *000025000d00a0a104080000000024000d008b46048945008b7608c745fcfcaa040883c5fcff26 *8d7600a0a104080100010013000d008d45f03b43547303ff63f8c745f8d46d10088975fc8b7604 *c745f408ab040883c5f4ff26a0a104080100010013000d008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec00a804088b46048947f0c747f82cab *04088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9616a0b009078a5040801 *0001001300ffff8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f85cab04088b4e04894ffc8d57f88955f4bea0d0110883c5f0e904660b00aca104 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c0ed100889 *4df4bed4d1110883c5f0e9eb630b008d76006ca50408010001001300ffff8d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecc0ab04088b46048947 *f0c747f810ac04088d47ec8945f48d47f88945f0bee4d1110883c5ece977690b008d760060a504 *08010001001300ffff8d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f84cac04088b4e04894ffc8d57f88955f4c745f0d4a11108be44d1110883c5 *ece91d690b00904ca30408030000001200ffff8d45ec3b4354720883c7143b7b5c760ac7436c05 *000000ff63f8c745f8d46d10088975fcc747f014a504088b46088947f4c747f8acac04088b4604 *8947fc8d47f08945f48d47f88945f08b760c83c5ece9bb680b008d760004a20408010001001300 *01008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9f9f3ffff9040 *a30408020000002400ffff83c71c3b7b5c760ac7436c07000000ff63f8c747e804ad04088b4604 *8947ec8b45088947f08b45048947f4c747f868ad04088b460c8947fc8d47f88945048b75088d47 *e8894508e930680b0034a3040804000100020000000e00ffff8d45f83b43547303ff63fc8b4608 *8945fc8b45008b4e04894d0089c6c745f898ad040883c5f8ff26e0a1040802000000150001008d *45e83b43547303ff63f8c745f8d46d10088975fcc745f400d211088b4e08894df08b56048955ec *bee8ad110883c5e8e9876c0b008d7600aca104081700000011007200aca1040817000000110072 *00aca104081600000011003200aca104081500000011001200fca1040801000100130001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beb0d5110883c5f0e944630b00ac *a104081200000011000200aca104081200000001000200aca104081200000001000200aca10408 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d0ed1008894d *f4bed4d1110883c5f0e907610b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8f4 *ae04088d47f8894500bed0d5110883c5fce9b8620b00aca1040800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9e0ed1008894df4bed4d1110883c5f0e99f600b *008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f85caf04088d47f8894500bed0d511 *0883c5fce950620b008caf040824af0408dcae0408000000002500ffffd0ae0408010000002400 *ffffc74500fcd211088b45048945fc8b7608c74504ccaf040883c5f8e91d660b0090c4ae040801 *0001001300ffff8d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beccd21108 *c745f0d8af040883c5f0ff2684ae040804000100010000000c00ffff8d45f83b4354720883c718 *3b7b5c760ac7436c06000000ff63fcc747ec9cae04088b45008947f0c747f804b004088b450089 *47fc8d47ec8945008d47f88945fc8b760483c5f8e989650b0090aca104081600000001002000ac *a1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f4ed10 *08894df4bed4d1110883c5f0e9575f0b008d76008cb00408000002001200ffff8d45f43b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a4b004088d4ff8 *894df483c5f4e93fedffff8d760078ae0408020000001500ffff8d45ec3b4354720883c7143b7b *5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f040b004088b46048947f4c747f8 *e0b004088d47f08945f48d47f88945f08b760883c5ece99d640b009004a2040801000100130001 *008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9ddefffff906cae *0408020000002400ffff83c7183b7b5c760ac7436c06000000ff63f8c747ec28b104088b450889 *47f08b45048947f4c747f884b104088b460c8947fc8d47f88945048b75088d47ec894508e91a64 *0b0089f660ae040804000100020000000e00ffff8d45f83b43547303ff63fc8b46088945fc8b45 *008b4e04894d0089c6c745f8b4b1040883c5f8ff26dca1040801000100130001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fcc745f400d211088b4e04894df0bee4ab110883c5ece9a563 *0b0090aca104081700000011007200aca104081700000011007200aca104081600000011003200 *aca104081500000011001200fca1040801000100130001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4beb0d5110883c5f0e9345f0b00aca104081200000011000200aca1 *04081200000001000200aca104081200000001000200aca1040800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9fced1008894df4bed4d1110883c5f0e9f75c0b *008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f804b304088d47f8894500bed0d511 *0883c5fce9a85e0b00aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b90cee1008894df4bed4d1110883c5f0e98f5c0b008d760083c70c3b7b5c760ac7 *436c03000000ff63f8c747f86cb304088d47f8894500bed0d5110883c5fce9405e0b009cb30408 *34b30408ecb20408000000002500ffffe0b20408010000002400ffffc74500fcd211088b450489 *45fc8b7608c74504dcb3040883c5f8e90d620b0090d4b20408010001001300ffff8d45e83b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4beccd21108c745f0e8b3040883c5f0ff2694 *b2040804000100010000000c00ffff8d45f83b4354720883c7183b7b5c760ac7436c06000000ff *63fcc747ecacb204088b45008947f0c747f814b404088b45008947fc8d47ec8945008d47f88945 *fc8b760483c5f8e979610b0090aca104081600000001002000aca1040800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b920ee1008894df4bed4d1110883c5f0e9 *475b0b008d76009cb40408000002001200ffff8d45f43b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8b4b404088d4ff8894df483c5f4e92fe9ffff8d76 *0088b20408020000001500ffff8d45ec3b4354720883c7143b7b5c760ac7436c05000000ff63f8 *c745f8d46d10088975fcc747f050b404088b46048947f4c747f8f0b404088d47f08945f48d47f8 *8945f08b760883c5ece98d600b009004a2040801000100130001008d45f43b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df483c5f4e9cdebffff907cb20408020000002400ffff83c718 *3b7b5c760ac7436c06000000ff63f8c747ec38b504088b45088947f08b45048947f4c747f894b5 *04088b460c8947fc8d47f88945048b75088d47ec894508e90a600b0089f670b204080400010002 *0000000e00ffff8d45f83b43547303ff63fc8b46088945fc8b45008b4e04894d0089c6c745f8c4 *b5040883c5f8ff26d8a1040801000100130001008d45ec3b43547303ff63f8c745f8d46d100889 *75fcc745f400d211088b4e04894df0befcab110883c5ece9955f0b0090a0a104081a0000003900 *2402a0a104081a00000039002402a0a104081a00000039002402a0a104081600000039002400a0 *a104081600000039002000aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b92cee1008894df4bed4d1110883c5f0e933590b008d7600a0a10408040001 *00010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbee4d1110883c5f8e9ee5e0b00 *89f6a0a1040801000100130029008d45e83b4354720883c7143b7b5c760ac7436c05000000ff63 *f8c745f8d46d10088975fcc747f0c8b60408c747fc08b704088d47f089078b46048945f48d47fc *8945f0c745ec00d21108bed8d0110883c5e8e959630b0090aca1040800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b938ee1008894df4bed4d1110883c5f0e963 *580b008d7600a0a1040801000100130029008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec34b704088b46048947f0c747f898b704088d47ec89 *45f48d47f88945f0bee4d1110883c5ece9ef5d0b008d7600b0b60408010001001300ffff8d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d4b704 *088b4e04894ffc8d57f88955f4c745f060d51108be44d1110883c5ece9955d0b0090a4b6040801 *0001001300ffff8d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f834b804088b4e04894ffc8d57f88955f4c745f0a4a91108be44d1110883c5ece9 *3d5d0b009004a2040801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b *4e04894df483c5f4e97de8ffff9098b60408020000002400ffff83c7183b7b5c760ac7436c0600 *0000ff63f8c747ec8cb804088b46048947f0c747f8e4b804088b45048947fc8d47f88945048b75 *088d47ec894508e9c05c0b008cb60408010000002400ffff8b460c8945008b7604c745fc14b904 *0883c5fcff268d760080b6040804000100010000000c00ffff8d45f83b43547303ff63fc8b4d00 *8b560489550089cec745fc60b9040883c5fcff2689f6d4a1040802000000150001008d45e83b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e4bb0b088b *46088947fcc707d8111208c745f400d211088b46048945f08d47f88945ecbe34ac110883c5e8e9 *d5600b0090aca104081700000013807600aca104081700000013807600aca10408170000001380 *7600aca104081600000013803600aca104081600000011003200aca104081500000011001200fc *a1040801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be *b0d5110883c5f0e97c570b00aca104081200000011000200aca104081200000001000200aca104 *081200000001000200aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b948ee1008894df4bed4d1110883c5f0e93f550b008d760083c70c3b7b5c760ac7 *436c03000000ff63f8c747f8bcba04088d47f8894500bed0d5110883c5fce9f0560b00aca10408 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b958ee1008894d *f4bed4d1110883c5f0e9d7540b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f824 *bb04088d47f8894500bed0d5110883c5fce988560b0054bb0408ecba0408a4ba04080000000025 *00ffff98ba0408010000002400ffffc74500fcd211088b45048945fc8b7608c7450494bb040883 *c5f8e9555a0b00908cba0408010001001300ffff8d45e83b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df4beccd21108c745f0a0bb040883c5f0ff264cba040804000100010000000c00 *ffff8d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec64ba04088b450089 *47f0c747f8ccbb04088b45008947fc8d47ec8945008d47f88945fc8b760483c5f8e9c1590b0090 *aca104081600000001002000aca1040800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b96cee1008894df4bed4d1110883c5f0e98f530b008d760054bc04080000 *02001200ffff8d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f86cbc04088d4ff8894df483c5f4e977e1ffff8d760040ba0408020000001500ffff *8d45ec3b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0 *08bc04088b46048947f4c747f8a8bc04088d47f08945f48d47f88945f08b760883c5ece9d5580b *0090aca104081300000003800400aca104081300000003000400aca1040800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97cee1008894df4bed4d1110883c5f0 *e997520b008d76004cbd0408000002001200ffff8d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f864bd04088d4ff8894df4c745f060d51108be44 *d1110883c5ece92f580b008d760040bd0408000002001200ffff8d45ec3b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a0bd04088d4ff8894df4c745f0 *a4a91108be44d1110883c5ece9db570b008d760034ba0408020000001500ffff8d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf0bc04088b4604 *8947f08b46088947f4c747f8f4bd04088d47ec8945f48d47f88945f08b760483c5ece977570b00 *8d760004a2040801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df483c5f4e9b5e2ffff9028ba0408030000002400ffff83c7183b7b5c760ac7436c06000000 *ff63f8c747ec48be04088b450c8947f08b45088947f4c747f8acbe04088b45048947fc8d47f889 *45088b750c8d47ec89450c83c504e9ef560b008d76001cba0408020000002400ffff8b460c8945 *008b7604c745fcdcbe040883c5fcff268d760010ba040804000100020000000e00ffff8d45f43b *43547303ff63fc8b46088945fc8b45008b4e04894d0089c6c745f834bf040883c5f8ff26d0a104 *0802000000150001008d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8e4bb0b088b46088947fcc707d8111208c745f400d211088b46048945f08d *47f88945ecbe14ac110883c5e8e9fd5a0b0090aca104081700000011007200aca1040817000000 *11007200aca104081600000011003200aca104081500000011001200fca1040801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beb0d5110883c5f0e9bc51 *0b00aca104081200000011000200aca104081200000001000200aca104081200000001000200ac *a1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98cee10 *08894df4bed4d1110883c5f0e97f4f0b008d760083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f87cc004088d47f8894500bed0d5110883c5fce930510b00aca1040800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b99cee1008894df4bed4d1110883c5f0e9 *174f0b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8e4c004088d47f8894500be *d0d5110883c5fce9c8500b0014c10408acc0040864c00408000000002500ffff58c00408010000 *002400ffffc74500fcd211088b45048945fc8b7608c7450454c1040883c5f8e995540b00904cc0 *0408010001001300ffff8d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894df4becc *d21108c745f060c1040883c5f0ff260cc0040804000100010000000c00ffff8d45f83b43547208 *83c7183b7b5c760ac7436c06000000ff63fcc747ec24c004088b45008947f0c747f88cc104088b *45008947fc8d47ec8945008d47f88945fc8b760483c5f8e901540b0090aca10408160000000100 *2000aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *b0ee1008894df4bed4d1110883c5f0e9cf4d0b008d760014c20408000002001200ffff8d45f43b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82cc20408 *8d4ff8894df483c5f4e9b7dbffff8d760000c00408020000001500ffff8d45ec3b4354720883c7 *143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0c8c104088b46048947f4 *c747f868c204088d47f08945f48d47f88945f08b760883c5ece915530b009004a2040801000100 *130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e955deffff *90f4bf0408020000002400ffff83c7183b7b5c760ac7436c06000000ff63f8c747ecb0c204088b *45088947f08b45048947f4c747f80cc304088b460c8947fc8d47f88945048b75088d47ec894508 *e992520b0089f6e8bf040804000100020000000e00ffff8d45f83b43547303ff63fc8b46088945 *fc8b45008b4e04894d0089c6c745f83cc3040883c5f8ff26cca1040801000100130001008d45ec *3b43547303ff63f8c745f8d46d10088975fcc745f400d211088b4e04894df0be04ac110883c5ec *e91d520b0090aca104081700000011007200aca104081700000011007200aca104081700000011 *007200aca104081700000011007200aca1040800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9bcee1008894df4bed4d1110883c5f0e9c74b0b008d7600aca104 *081600000011003200aca104081500000011001200fca1040801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4beb0d5110883c5f0e9584d0b00aca1040812 *00000011000200aca104081200000001000200aca104081200000001000200aca1040800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b908ef1008894df4bed4d1 *110883c5f0e91b4b0b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8e0c404088d *47f8894500bed0d5110883c5fce9cc4c0b00aca1040800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b91cef1008894df4bed4d1110883c5f0e9b34a0b008d7600 *83c70c3b7b5c760ac7436c03000000ff63f8c747f848c504088d47f8894500bed0d5110883c5fc *e9644c0b0078c5040810c50408c8c40408000000002500ffffbcc40408010000002400ffffc745 *00fcd211088b45048945fc8b7608c74504b8c5040883c5f8e931500b0090b0c404080100010013 *00ffff8d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beccd21108c745f0c4 *c5040883c5f0ff2670c4040804000100010000000c00ffff8d45f83b4354720883c7183b7b5c76 *0ac7436c06000000ff63fcc747ec88c404088b45008947f0c747f8f0c504088b45008947fc8d47 *ec8945008d47f88945fc8b760483c5f8e99d4f0b0090aca104081600000001002000aca1040800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930ef1008894df4 *bed4d1110883c5f0e96b490b008d760078c60408000002001200ffff8d45f43b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f890c604088d4ff8894df483 *c5f4e953d7ffff8d760064c40408020000001500ffff8d45ec3b4354720883c7143b7b5c760ac7 *436c05000000ff63f8c745f8d46d10088975fcc747f02cc604088b46048947f4c747f8ccc60408 *8d47f08945f48d47f88945f08b760883c5ece9b14e0b009004a2040801000100130001008d45f4 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9f1d9ffff901cc404080400 *00002400ffff83c7183b7b5c760ac7436c06000000ff63f8837e04007537c747ec14c704088b45 *108947f08b450c8947f4c747f870c704088b45048947fc8d47f889450c8b75108d47ec89451083 *c508e9254e0b00c747ec34c404088d47ec8945108b750883c50c83c7f4e9fe490b0089f610c404 *08040000002400ffff8b7608c74500a0c70408ff2604c40408030000002400ffff8b460c894500 *8b7604c745fc18c8040883c5fcff268d7600f8c3040804000100030000000b00ffff8d45f03b43 *547303ff63fc8b460c8945f88b46088945fc8b45008b4e04894d0089c6c745f430c8040883c5f4 *ff2689f6c8a1040802000000150001008d45e83b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8e4bb0b088b46088947fcc707d8111208c745f400d21108 *8b46048945f08d47f88945ecbe3cac110883c5e8e9f9510b0090aca104081700000011007200ac *a104081700000011007200aca104081600000011003200aca104081500000011001200fca10408 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beb0d511 *0883c5f0e9b8480b00aca104081200000011000200aca104081200000001000200aca104081200 *000001000200aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b940ef1008894df4bed4d1110883c5f0e97b460b008d760083c70c3b7b5c760ac7436c03 *000000ff63f8c747f880c904088d47f8894500bed0d5110883c5fce92c480b00aca10408000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954ef1008894df4bed4 *d1110883c5f0e913460b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8e8c90408 *8d47f8894500bed0d5110883c5fce9c4470b0018ca0408b0c9040868c90408000000002500ffff *5cc90408010000002400ffffc74500fcd211088b45048945fc8b7608c7450458ca040883c5f8e9 *914b0b009050c90408010001001300ffff8d45e83b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4beccd21108c745f064ca040883c5f0ff2610c9040804000100010000000c00ffff8d *45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec28c904088b45008947f0c7 *47f890ca04088b45008947fc8d47ec8945008d47f88945fc8b760483c5f8e9fd4a0b0090aca104 *081600000001002000aca1040800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b96cef1008894df4bed4d1110883c5f0e9cb440b008d760018cb04080000020012 *00ffff8d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f830cb04088d4ff8894df483c5f4e9b3d2ffff8d760004c90408020000001500ffff8d45ec *3b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0ccca04 *088b46048947f4c747f86ccb04088d47f08945f48d47f88945f08b760883c5ece9114a0b009004 *a2040801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483 *c5f4e951d5ffff90f8c80408020000002400ffff83c7183b7b5c760ac7436c06000000ff63f8c7 *47ecb4cb04088b45088947f08b45048947f4c747f810cc04088b460c8947fc8d47f88945048b75 *088d47ec894508e98e490b0089f6ecc8040804000100020000000e00ffff8d45f83b43547303ff *63fc8b46088945fc8b45008b4e04894d0089c6c745f840cc040883c5f8ff26c4a1040801000100 *130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f400d211088b4e04894df0be *0cac110883c5ece919490b009044a20408040000002400ffff8b068b40fcc1e81085c00f8c7002 *000083f8090f8f67020000b9eca11108ff24818d760083c7183b7b5c760ac7436c06000000ff63 *f8c747ecf4ad04088b45108947f08b450c8947f4c747f828ae04088b46048947fc8b450489078d *47ec8945108b750c8d47f889450c83c508e99a480b0083c7183b7b5c760ac7436c06000000ff63 *f8c747ec0cb204088b45108947f08b450c8947f4c747f840b204088b45048947fc8d47ec894510 *8b750c8d47f889450c83c508e951480b0083c7183b7b5c760ac7436c06000000ff63f8c747ec1c *b604088b45108947f08b450c8947f4c747f850b604088b45048947fc8d47ec8945108b750c8d47 *f889450c83c508e908480b0083c7143b7b5c760ac7436c05000000ff63f8c747f088b904088b45 *108947f4c747f8b8b904088b45048947fc8b460489078d47f08945108b750c8d47f889450c83c5 *08e9c0470b0083c7183b7b5c760ac7436c06000000ff63f8c747ec5cbf04088b45108947f08b45 *0c8947f4c747f890bf04088b45048947fc8b460489078d47ec8945108b750c8d47f889450c83c5 *08e972470b0083c7183b7b5c760ac7436c06000000ff63f8c747ec94c304088b45108947f08b45 *0c8947f4c747f8c8c304088b45048947fc8d47ec8945108b750c8d47f889450c83c508e929470b *0083c71c3b7b5c760ac7436c07000000ff63f8c747e858c804088b45108947ec8b450c8947f08b *45088947f4c747f894c804088b45048947fc8b460489078d47e88945108b750c8d47f889450c83 *c508e9d5460b0083c7183b7b5c760ac7436c06000000ff63f8c747ec98cc04088b45108947f08b *450c8947f4c747f8cccc04088b45048947fc8d47ec8945108b750c8d47f889450c83c508e98c46 *0b0083c70c3b7b5c760ac7436c03000000ff63f8c747f8e0a204088977fc8d47f8894510c7450c *54d21108be44d1110883c508e956460b0089f638a20408030000002400ffff8b46088945008b76 *04c745fc08cd040883c5fcff268d76002ca2040804000100030000000b00ffff8d45f03b435473 *03ff63fc8b460c8945f88b46088945fc8b45008b4e04894d0089c6c745f4cccf040883c5f4ff26 *89f6e4a1040801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4bee0ad110883c5f0e9b0410b0020a2040804000100030000000b00ffff8d45f83b43547208 *83c71c3b7b5c760ac7436c07000000ff63fcc747e8f4cf04088b46048947ec8b46088947f08b46 *0c8947f4c747f830d004088b45008947fc8d47e88945008d47f88945fc8b760883c5f8e955450b *009014a20408000000002400ffff83c7103b7b5c760ac7436c04000000ff63f8c747f468d00408 *8b46088947f88b46048947fc8b461089078d47f4894500c745fcacd511088b760483c5f8e90645 *0b0089f608a2040804000100000000001100ffff8d45f83b43547308bee4a11108ff63fcbedcd2 *1108c74500ccd00408ff2689f6dcd211087caa1108b4bf1108e4a1110844d10408010001001300 *03008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4b4bf1108c745f07caa11088b76 *0483c5ece98a440b0089f644d10408000000002400070083c70c3b7b5c760ac7436c03000000ff *63f8c747f85cd104088b46048947fcc74500e4a111088d4ff8894dfc8b760483c5f8e945440b00 *9040d104080000020018000f008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8512c0b0083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcbedcd21108c745f498d1040883c5f4ff26e900000000833d24a2110800751ec70524a21108 *01000000c7450004aa0b0883c504c7450090310c0883c50483c5fcff650089f6e4d11108d4d111 *0864d2040801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f87cdc0b08c747fca8091208c70700d211088d4ff8894df48b5604 *8955f0bee4d1110883c5ece94b430b008d760068d2040800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b97cef1008894df4bed4d1110883c5f0e9233d0b008d76 *0064d2040801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ec78d204088b46048947f0c747f8d8d204088d47ec8945f48d47f8 *8945f0bee4d1110883c5ece9af420b008d760064d2040802000000150003008d45ec3b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f814d304088b460889 *47fc8d47f88945f48b46048945f0bee4d1110883c5ece956420b0089f668d20408000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b994ef1008894df4bed4d11108 *83c5f0e92f3c0b008d760064d2040802000000150003008d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec74d304088b46048947f08b46088947f4 *c747f8ccd304088d47ec8945f48d47f88945f0bee4d1110883c5ece9b5410b009064d204080b00 *0200000000001100030083c7143b7b5c760fbe28a21108c7436c05000000ff63fcc747f008d404 *088b45048947f48b45008947f8c747fc601805088d47f089078d77fc83c5088b4500ff60e089f6 *e4d11108d4d11108e0d11108acd01108be00d2110883c50c8b4500ff60f089f68b750483c510ff *2683c7283b7b5c760ac7436c0a000000ff63f8c747dcc86b10088b450c8947e08b45088947e489 *77e8c747ec7cdc0b08c747f0580a12088d47dc8947f4c747f87cdc0b088b45088947fc8d47ec89 *078d47f889450c8b4504894508bee4d1110883c504e9d1400b0090dcd40408d4d40408b4d40408 *03000000250001008b46048945008b7608c745fc58d5040883c5fcff268d760058d50408c4d404 *08b4d404080200000025000100b4d404080b000200000001000b0001008d45f83b43547303ff63 *fc8b4d0489750489cec745fc84d5040883c5fcff269083c7183b7b5c760ac7436c06000000ff63 *f8c747ec7cdc0b088b45048947f0c747f400d21108c747f87cdc0b08c747fcc00a1208c70700d2 *11088d4fec894d048d57f8895500bee4d1110883c5fce90d400b0090b4d4040801000100130001 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f87cdc0b08c747fc580a1208c70700d211088b4e04894df48d57f88955f0bee4d1110883c5ece9 *af3f0b008d7600b4d4040802000000150001008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec14d604088b46088947f0c747f87cdc0b088b4604 *8947fcc70700d211088d47ec8945f48d47f88945f0bee4d1110883c5ece9433f0b008d760083c7 *183b7b5c760ac7436c06000000ff63f8c747ec74d604088b45048947f08b46088947f4c747f87c *dc0b08c747fcc00a1208c70700d211088d47ec8945048d47f8894500bee4d1110883c5fce9ee3e *0b0089f6b4d4040801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc400c1208c70700d211088d4ff8894df4 *8b56048955f0bee4d1110883c5ece98f3e0b008d7600b4d4040801000100130001008d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec34d704088b *46048947f0c747f87cdc0b08c747fc300c1208c70700d211088d47ec8945f48d47f88945f0bee4 *d1110883c5ece9223e0b0089f6b4d4040802000000150001008d45ec3b4354720883c7183b7b5c *760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec94d704088b46088947f0c747f87c *dc0b088b46048947fcc70700d211088d47ec8945f48d47f88945f0bee4d1110883c5ece9b73d0b *008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec00d804088b45048947f08b460889 *47f4c747f87cdc0b08c747fcc00a1208c70700d211088d47ec8945048d47f8894500bee4d11108 *83c5fce9623d0b0089f660d80408d4d60408b4d50408b4d404080100000025000100b4d4040804 *000100010000000c0001008d45f83b43547303ff63fc8b7604c745fcccd8040883c5fcff2689f6 *b4d4040802000000150005008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c7 *45f8d46d10088975fcc747fcdcd804088b460489078b46088945f48d47fc8945f0bee0d1110883 *c5ece9c73c0b008d7600b4d4040803000000120005008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f804d904088b46088947fc8b460c89078d47 *f88945f4c745f0b80a12088b760483c5f0e9eafbffff89f6b8d4040800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9a0ef1008894df4bed4d1110883c5f0e943 *360b008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8b8d904088d47f8894500bee4 *d1110883c5fce9003c0b00b4d4040801000100130001008d45ec3b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc400b1208c70700d211 *088b4e04894df48d57f88955f0bee4d1110883c5ece9a33b0b008d7600b4d40408020000001500 *01008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f820da04088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece94a3b0b0089f6 *b8d4040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a4ef *1008894df4bed4d1110883c5f0e923350b008d760083c7183b7b5c760ac7436c06000000ff63f8 *c747ec80da04088b45048947f08b46088947f4c747f8d8da04088d47ec8945048d47f8894500be *e4d1110883c5fce9c73a0b008d7600b4d4040801000100130001008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc400c1208c7 *0700d211088d4ff8894df48b56048955f0bee4d1110883c5ece9673a0b008d7600b8d404080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8ef1008894df4be *d4d1110883c5f0e93f340b008d7600b4d4040801000100130003008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec5cdb04088b46048947f0c747 *f8bcdb04088d47ec8945f48d47f88945f0bee4d1110883c5ece9cb390b008d7600b4d404080200 *0000150003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8f8db04088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece97239 *0b0089f6b8d4040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9acef1008894df4bed4d1110883c5f0e94b330b008d760083c7183b7b5c760ac7436c060000 *00ff63f8c747ec58dc04088b45048947f08b46088947f4c747f8b0dc04088d47ec8945048d47f8 *894500bee4d1110883c5fce9ef380b008d7600e0dc040808db0408e8d90408b4d4040801000000 *25000300b4d4040804000100010000000c0003008d45f83b43547303ff63fc8b7604c745fc40dd *040883c5fcff2689f6b4d4040802000000150007008d45ec3b4354720883c7083b7b5c760ac743 *6c02000000ff63f8c745f8d46d10088975fcc747fc50dd04088b460489078b46088945f48d47fc *8945f0bee0d1110883c5ece953380b008d7600b4d4040803000000120007008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f878dd04088b460889 *47fc8b460c89078d47f88945f4c745f0b80a12088b760483c5f0e976f7ffff89f683c71c3b7b5c *760ac7436c07000000ff63f8c747e8fcbb0b088b45088947ec8b45048947f0c747f400d21108c7 *47f87cdc0b088d47e88947fcc70700d211088d77f883c50c8b4500ff60ec90be00d2110883c508 *8b4500ff60f089f683c7283b7b5c760ac7436c0a000000ff63f8c747dc8c6b10088b45048947e0 *8b46088947e4c747e8fcbb0b08c747ec00d21108c747f000d211088b46048947f4c747f87cdc0b *088d47e88947fc8d47dc89078d77f883c5088b4500ff60ec89f67cde04086cde04080000000001 *0000002500000004000100000001000b0000008d45fc3b43547303ff63fc8b4d0089750089cec7 *45fcf0de040883c5fcff269001000100130000008d45f43b4354720883c7083b7b5c760ac7436c *02000000ff63f8c745f8d46d10088975fcc747fcfcde04088b4e04894df48d77fc83c5f4eb9f8d *760083c7283b7b5c760ac7436c0a000000ff63f8c747dc24df04088b46088947e0c747e8fcbb0b *088b45088947ec8b45048947f08b46048947f4c747f87cdc0b088d47e88947fc8d47dc89078d77 *f883c50c8b4500ff60ec89f660df040820de0408000000000200000025000000b4d40408000000 *0024000f0083c7283b7b5c760ac7436c0a000000ff63f8c747dc94d50408c747e45cd904088d47 *dc8947e88b460c8947ec8b46048947f0c747f4d0dd04088d47dc8947f88b460c8947fc8b460889 *078b46108945f48d47f48945fc8d47e4894500beacd01108c745f8ccdf040883c5f0e9c0310b00 *b4d40408040001000000000011000f008d45f03b43547308be30a21108ff63fc8b7500c74500d8 *df0408ff2690d1110844d3110874e0040800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e8a51d0b0083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f490d11108be44d3110883c5f0e929310b0090e4d11108 *d4d1110848d11108e0d1110830a2110838d3110840d311083cd3110888d3110874d3110880d311 *08a8d0110838a21108ece0040800000200120021008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f488d31108bee0d1110883c5f0e9bf300b008d7600e8e0040801000100130043048d *45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f820 *e104088b4e04894df48d57f88955f0c745ec38a21108be48d1110883c5e8e941390b0090be00d2 *110883c50c8b4500ff60f089f608e1040800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fcc745f4580a1208be80d3110883c5f0e91f300b008d7600e0e004080100010013 *0001048d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8c0e104088d4ff8894df48b56048955f0bee4d1110883c5ece9d8330b00e0e00408020000 *00150001068d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8f8e104088b46088947fc8d47f88945f48b46048945f0be74d3110883c5ece982330b *0089f683c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b45048947e48b46088947 *e8c747ec48e204088b45088947f08b46048947f4c747f87cdc0b088d47ec8947fc8d47e089078d *77f883c50c8b4500ff60ec89f694e20408a4e10408e0e004080200000025000106e0e004080400 *0100010000000c0001068d45f83b43547303ff63fc8975fc8b4d008b560489550089cec745f800 *e3040883c5f8ff268d7600e0e0040804000100000001000b000d1783c7143b7b5c760ac7436c05 *000000ff63fcc747f058e104088b45008947f4c747fc10e304088d4ff0890f8d77fceb98f0e004 *0800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f430a21108be40 *d3110883c5f0e95b2e0b008d7600e8e004080100010013001d008d45e83b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f884e304088b4e04894df48d57f8 *8955f0c745ec38d31108be48d1110883c5e8e9dd360b009002000000150000008d45f43b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8985f10088b4e08 *894ffc8d57f88955f48b760483c5f4e9f6feffff89f602000000150000008d45f43b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80c5f10088b4e08894f *fc8d57f88955f48b760483c5f4e9aafeffff89f6e4e0040800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9b0ef1008894df4bed4d1110883c5f0e94f2b0b008d *7600e0e0040801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8ace404088b4e04894df48d57f88955f0bee4d1110883c5ece9 *e8300b00e0e0040802000000150003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8e8e404088b46088947fc8d47f88945f48b46048945f0be *e4d1110883c5ece992300b0089f6e4e0040800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9b4ef1008894df4bed4d1110883c5f0e96b2a0b008d7600e0e00408 *02000000150003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ec38e504088b46048947f08b46088947f4c747f890e504088d47ec8945f48d47 *f88945f0bee4d1110883c5ece9f12f0b0090e0e0040803000000120003008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8cce504088b46088947 *fc8b460c89078d47f88945f48b46048945f0bee4d1110883c5ece9952f0b0090e4e00408000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b8ef1008894df4bed4 *d1110883c5f0e96f290b008d7600e0e0040816000300000001000b00030083c71c3b7b5c760ac7 *436c07000000ff63fcc747e830e604088b45008947ec8b45048947f08b45088947f4c747f88ce6 *04088d47e88945088d47f8894504bee4d11108e9002f0b00e0e0040802000000150083008d45e4 *3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d8246010 *088b46088947dcc747e410e404088b46048947e88b46088947ecc747f05ce404088b46048947f4 *8b46088947f8c747fccce604088d47d88945f48d47e48945f08d47f08945ec8d47fc8945e8be3c *d3110883c5e4e9d9350b0090e0e004080b000200000000001100ff1f83c72c3b7b5c760fbe48a2 *1108c7436c0b000000ff63fcc747d848e30408c747e0bce304088b45048947e4c747ec20e70408 *8d47d88947f08d47e08947f4c747f87cdc0b088b45008947fc8d47ec89078d47f8894504bea8d0 *1108e9f4290b00e4d11108d4d1110848a2110818e8040800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9bcef1008894df4bed4d1110883c5f0e9cf270b008d76 *0014e8040801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f82ce804088d4ff8894df48b56048955f0bee4d1110883c5ece968 *2d0b0018e8040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e0ef1008894df4bed4d1110883c5f0e943270b008d760014e8040801000100130003008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec68e804 *088b46048947f0c747f8b8e804088d47ec8945f48d47f88945f0bee4d1110883c5ece9cf2c0b00 *8d760014e8040802000000150007008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8f4e804088b46048947fc8b46088945f48d47f88945f083c5 *f0e91bfeffff8d760014e804080b000200000000001100070083c7143b7b5c760fbe50a21108c7 *436c05000000ff63fcc747f054e904088b45048947f48b45008947f8c747fc601805088d47f089 *078d77fc83c5088b4500ff60e089f6ccd1110880d11108f0e9040800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e829140b0083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0 *e9ad270b009058a2110800000000240000008b7608e92c1d0b005cea040800000200180001008d *45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b1130b0083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe58a21108c745f468ea0408 *83c5f4ff2680d11108b8d01108d0ea040800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e849130b0083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f480d11108beb8d0110883c5f0e9cd260b0090e4d11108 *d4d1110880d11108e0d1110888a2110850a2110828a2110860d311088cd3110868a2110878a211 *0883c7143b7b5c760ac7436c05000000ff63f8c747f014bc0b08c747f400d21108c747f800d211 *08c747fc00d21108c70700d211088d77f083c510ff65008d760083c7143b7b5c760ac7436c0500 *0000ff63f8c747f030180508c747f400d21108c747f8e4bb0b088d47f08947fc8b4d08890f8d77 *f883c50ce9ef810b008d760083c7143b7b5c760ac7436c05000000ff63f8c747f0301805088b45 *048947f4c747f8e4bb0b088d4ff0894ffc8b550c89178d77f883c510e9b0810b00be00d2110883 *c50c8b4500ff60f089f68b751083c514e991010000908b45108945148b750483c514e9c3000000 *8d760083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b45108947 *f4c747f87cdc0b088b45088947fc8d47ec89078d77f883c5188b4500ff60ec9054ec040840ec04 *0800000000850200002500000005000000240000008b45148945fc8b4d0c894df88b7608c74500 *acec040883c5f4e942290b0089f68b46088945108b4e04894d14be80d11108c74500b4ec0408ff *2689f6d4ec040834ec040844eb0408050000002500010044eb040804000100040000000b000100 *8d45e03b43547303ff63fc8975f08b46108945f48b460c8945f88b46088945fc8b45008b4e0489 *4d0089c6c745ec04ed040883c5ecff269044eb0408030000002400010083c7143b7b5c760ac743 *6c05000000ff63f8c747f014ed04088b45048947f48b450c8947f88b45088947fc89378b460489 *450c8d77f083c50ceb81908b46088945008b7604c745fc58ed040883c5fcff268d760094ed0408 *24ec040844eb0408020000002500010044eb040804000100010000000c0001008d45f43b435473 *03ff63fc8b4e04894dfc8b550089750089d6c745f8c0ed040883c5f8ff268d760044eb04080200 *0000150001008d45f43b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fcd0ed04088b4e04890f8b56088955f48d77fc83c5f4eb8e89f6be00d2110883c508 *8b4500ff60f089f6020000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b *10088b45088947f08b45048947f4c747f87cdc0b088b460c8947fc8d47ec89078d77f883c50c8b *4500ff60ec908b46088945008b7604c745fc5cee040883c5fcff268d7600a0ee040844ee040800 *000000010000002500000004000100000001000b0000008d45f83b43547303ff63fc8b4d008975 *0089cec745fcccee040883c5fcff269083c72c3b7b5c760ac7436c0b000000ff63f8c747d87cdc *0b088b45048947dcc747e000d21108c747e47cdc0b08c747e8c00a12088d47d88947ecc747f010 *1805088d47e48947f4c747f8e4bb0b088d47f08947fc8b450889078d77f883c50ce9787e0b0083 *c7443b7b5c760ac7436c11000000ff63f8c747c07cdc0b08c747c4c00a12088977c8c747cc7cdc *0b088d47c08947d08b45088947d4c747d87cdc0b088b45048947dcc747e000d21108c747e47cdc *0b08c747e8c00a12088d47d88947ecc747f0101805088d47e48947f4c747f8e4bb0b088d47f089 *47fc8d47cc89078d77f883c50ce9f07d0b005cef0408f8ee04080000000002000000250000008b *7508c74508f8ef040883c508ff269083c7143b7b5c760ac7436c05000000ff63f8c747f0f01705 *088b45048947f4c747f8e4bb0b088d4ff0894ffc8b550889178d77f883c50ce9907d0b0083c72c *3b7b5c760ac7436c0b000000ff63f8c747d87cdc0b08c747dcc00a12088977e0c747e47cdc0b08 *8d47d88947e88b45088947ecc747f0f01705088b45048947f4c747f8e4bb0b088d47f08947fc8d *47e489078d77f883c50ce9307d0b0044f0040808f004080000000002000000250000008b460489 *45088b7504c74504b8f0040883c504ff268d760054eb040802000000150001008d45f03b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec7cdc0b088b4604 *8947f0c747f400d21108c747f87cdc0b08c747fcc00a12088d47ec89078d47f88945f48b460889 *45f083c5f0e935e3ffff9083c7183b7b5c760ac7436c06000000ff63f8c747ecdcf004088b450c *8947f08b4d04894ff4c747f8e4bb0b088d57ec8957fcc70700d211088d77f883c514e9557c0b00 *9083c7203b7b5c760ac7436c08000000ff63f8c747e48c6b10088b45088947e88b46048947ecc7 *47f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b460889078d77f883c514e9057c *0b009080f104083cf1040854eb040804010000250001008b7510c74500e4f10408ff2683c7203b *7b5c760ac7436c08000000ff63f8c747e48c6b10088b45088947e88977ecc747f0f01705088d47 *e48947f4c747f8e4bb0b088d47f08947fc8b451089078d77f883c514e9987b0b00f0f10408e4f1 *040854eb040804000000250001008b46088945008b4d048b560489550489cec745fc50f2040883 *c5fcff268d760001000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4 *e0d011088b760483c5f0e9691f0b009083c7203b7b5c760ac7436c08000000ff63f8c747e478f2 *04088b45048947e8c747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b45088907 *8d77f883c50ce9eb7a0b008d760002000000150000008d45f03b4354720883c7083b7b5c760ac7 *436c02000000ff63f8c745f8d46d10088975fcc747fc94b90b088b4e04890f8d57fc8955f48b76 *0883c5f0e9d31e0b008d760083c7203b7b5c760ac7436c08000000ff63f8c747e4f4f204088977 *e88b45048947ecc747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b450889078d *77f883c50ce9507a0b0038f30408a0f204080000000002000000250000008b46048945088b7504 *c7450498f3040883c504ff268d760098f3040850f20408b8f0040854eb04080300000025000100 *8b7504c74508c8f3040883c508ff269050eb040802000000150001008d45f03b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec7cdc0b088b46048947f0c7 *47f400d21108c747f87cdc0b08c747fcc00a12088d47ec89078d47f88945f48b46088945f083c5 *f0e969f5ffff9083c7183b7b5c760ac7436c06000000ff63f8c747ece4f304088b45108947f08b *45088947f4c747f8e4bb0b088d47ec8947fc8b451489078d77f883c518e94e790b0089f644f404 *08c8f3040850eb040805000000250003008b46048945008b7608c745fc9cf4040883c5fcff268d *76009cf40408f8ef040850eb0408040000002500030083c70c3b7b5c760ac7436c03000000ff63 *f8c747f8e4bb0b08c747fcc0a211088b450889078d77f883c50ce9dc780b000200000024000000 *8b45088b4d04894d088945048b7608e900210b0044eb040804000100010000000c0001008d45f8 *3b43547303ff63fc8b4e04894dfcbe80d11108c745f800f5040883c5f8ff2689f644eb04080100 *0100130021008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc24f50408c707400b12088b4e04894df48d57fc8955f0be60d3110883c5ece97620 *0b0089f6be00d2110883c5108b4500ff60f089f68b45148945188b751083c518e96f0100008d76 *008b750483c518e99d0000009083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b *45048947f08b45188947f4c747f87cdc0b088b45088947fc8d47ec89078d77f883c51c8b4500ff *60ec90d0f50408c4f504080000000086030000250000008b46048945fc8b4d18894df88b560889 *55188b750cc7450028f6040883c5f4e9c81f0b0028f60408b0f504080000000006000000250000 *0004000100050000000b0000008d45dc3b43547303ff63fc8975ec8b46148945f08b46108945f4 *8b460c8945f88b46088945fc8b45008b4e04894d0089c6c745e860f6040883c5e8ff268d760004 *0000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec6cf604088b45108947f08b *45048947f48b450c8947f88b45088947fc89378b46088945108d77ec83c510e974ffffff8b4608 *8945008b7604c745fcb4f6040883c5fcff268d7600f8f60408a0f5040800000000030000002500 *000004000100020000000e0000008d45f03b43547303ff63fc8b46088945f88975fc8b45008b4e *04894d0089c6c745f424f7040883c5f4ff269004000100020000000e00000083c70c3b7b5c760a *c7436c03000000ff63fcc747f830f704088b46088947fc8b4d00890f8b56048955008d77f8eb99 *9060eb040801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fcc745f468a2 *11088b760483c5f4eba08b750483c50cff268b7508c7450878a2110883c508eb8990d0f70408c8 *f7040864eb040802000000250001005ceb040802000000150005008d45e43b43547303ff63f8c7 *45f8d46d10088975fc8b46088945e88b46088945f08b46048945f4be8cd31108c745ecf4f70408 *83c5e4e9cd190b0090be00d2110883c5088b4500ff60f089f6020000002400000083c7183b7b5c *760ac7436c06000000ff63f8c747ec8c6b10088b45088947f08b45048947f4c747f87cdc0b088b *460c8947fc8d47ec89078d77f883c50c8b4500ff60ec908b46088945008b7604c745fc54f80408 *83c5fcff268d760098f804083cf8040800000000010000002500000004000100000001000b0000 *008d45f83b43547303ff63fc8b4d0089750089cec745fcc4f8040883c5fcff269040eb04080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ecef1008894df4be *d4d1110883c5f0e9ff160b008d76003ceb040801000100130003008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fcf804088b4e04894df48d57 *f88955f0bee4d1110883c5ece9981c0b0083c7203b7b5c760ac7436c08000000ff63f8c747e438 *f904088b45088947e8c747f0101805088d47e48947f4c747f8e4bb0b088d47f08947fc8b451089 *078d77f883c514e90f740b008d760083c7143b7b5c760ac7436c05000000ff63f8c747f0f01705 *088b45088947f4c747f8e4bb0b088d4ff0894ffc8b550c89178d77f883c510e9d0730b0040eb04 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f0ef100889 *4df4bed4d1110883c5f0e9eb150b008d76003ceb040801000100130003008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f810fa04088b4e04894d *f48d57f88955f0bee4d1110883c5ece9841b0b0040eb040800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9f4ef1008894df4bed4d1110883c5f0e95f150b008d *760040eb040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *14f01008894df4bed4d1110883c5f0e923150b008d76003ceb040801000100130003008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d8fa0408 *8b4e04894df48d57f88955f0bee4d1110883c5ece9bc1a0b003ceb040801000100130003008d45 *ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec9cfa *0408c747f814fb04088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece95f1a0b *008d760040eb040800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b918f01008894df4bed4d1110883c5f0e937140b008d76003ceb040801000100130003008d45 *ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec64fb *04088b46048947f0c747f8c4fb04088d47ec8945f48d47f88945f0bee4d1110883c5ece9c3190b *008d76003ceb0408430000002400030083c7203b7b5c760ac7436c08000000ff63f88b460483f8 *3d7537c747e400fc04088b45048947e8c747f0601805088d47e48947f4c747f8e4bb0b088d47f0 *8947fc8b450c89078d77f883c510e923710b00c747e44cfa04088b45048947e8c747f010180508 *8d47e48947f4c747f8e4bb0b088d47f08947fc8b450c89078d77f883c510e9ec700b008b7604c7 *450060fc0408ff26e8fc0408c8f904083ceb040803000000250003003ceb040803000000240003 *008b7608c7450008fd0408ff268b45088b4e04894d0889c6c7450014fd0408ff2640eb04080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b924f01008894df4be *d4d1110883c5f0e9bb120b008d76003ceb040801000100130003008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f840fd04088b4e04894df48d57 *f88955f0bee4d1110883c5ece954180b003ceb040802000000150043008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cfd04088b46048947fc *8d47f88945f48b46088945f083c5f0e95fd6ffff8d760083c7183b7b5c760ac7436c06000000ff *63f8c747ecccfd04088b45088947f08b4d04894ff4c747f8e4bb0b088d57ec8957fcc70700d211 *088d77f883c514e97d6f0b009083c7203b7b5c760ac7436c08000000ff63f8c747e48c6b10088b *450c8947e88b46048947ecc747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b46 *0889078d77f883c514e92d6f0b009058fe040814fe04083ceb040804010000250043008b7510c7 *4500bcfe0408ff2640eb040800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b928f01008894df4bed4d1110883c5f0e927110b008d76003ceb0408010001001300 *03008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8d4fe04088b4e04894df48d57f88955f0bee4d1110883c5ece9c0160b003ceb040804000000 *2400030083c7203b7b5c760ac7436c08000000ff63f88b460483f83d753dc747e48c6b10088b45 *0c8947e88b45048947ecc747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b4510 *89078d77f883c514e91d6e0b00c747e410ff04088b45088947e8c747f0101805088d47e48947f4 *c747f8e4bb0b088d47f08947fc8b451089078d77f883c514e9e66d0b0089f68b46088945048b76 *04c7450060ff0408ff2689f6f0ff0408bcfe04083ceb040804000000250043003ceb0408040000 *00240043008b7608c7450018000508ff268b46088945008b4d088b560489550889cec745fc2400 *050883c5fcff268d760001000100130000008d45f03b43547303ff63f8c745f8d46d10088975fc *c745f4e0d011088b760483c5f0e989110b009083c7203b7b5c760ac7436c08000000ff63f8c747 *e4580005088b45088947e8c747f0f01705088d47e48947f4c747f8e4bb0b088d47f08947fc8b45 *0c89078d77f883c510e90b6d0b008d760040eb040800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b92cf01008894df4bed4d1110883c5f0e9230f0b008d76003c *eb040801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8d80005088b4e04894df48d57f88955f0bee4d1110883c5ece9bc140b *0002000000150000008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fc94b90b088b4e04890f8d57fc8955f48b760883c5f0e967100b008d76003c *eb0408040000002400030083c7203b7b5c760ac7436c08000000ff63f88b460483f83d753dc747 *e4600105088b45048947e88b450c8947ecc747f0f01705088d47e48947f4c747f8e4bb0b088d47 *f08947fc8b451089078d77f883c514e9cd6b0b00c747e4140105088b45088947e8c747f0101805 *088d47e48947f4c747f8e4bb0b088d47f08947fc8b451089078d77f883c514e9966b0b0089f68b *46088945008b7604c745fcb001050883c5fcff268d760040020508800005083ceb040803000000 *250003003ceb040803000000240003008b7608c745006c020508ff268b45088b4e04894d0889c6 *c7450078020508ff26840205083000050820fd04083ceb040803000000250043008b7504c74508 *b002050883c508ff269040eb040800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b930f01008894df4bed4d1110883c5f0e92f0d0b008d76003ceb040801000100 *130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975 *fcc747f8cc0205088b4e04894df48d57f88955f0bee4d1110883c5ece9c8120b003ceb04080200 *0000150023008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8080305088b46048947fc8d47f88945f48b46088945f083c5f0e90fe6ffff8d7600 *83c7183b7b5c760ac7436c06000000ff63f8c747ec580305088b450c8947f08b45088947f4c747 *f8e4bb0b088d47ec8947fc8b451489078d77f883c518e9f2690b0089f6a0030508b00205083ceb *040805000000250063008b46048945008b7608c745fcf803050883c5fcff268d7600f80305087c *f904083ceb0408040000002500630083c7443b7b5c760ac7436c11000000ff63f8c747c054f504 *088977c4c747cc0c5f10088d47c08947d0c747d868f704088b45048947dc8d47cc8947e0c747e4 *a4f704088d47d88947e8c747f000f804088d47d88947f48d47e48947f8c747fcd0f804088d47f0 *8945f48d47f08945fc8d47cc8945008d47c08945048d77fcc745f82404050883c5f4e91ff4ffff *8d760024040508c8f404083ceb0408020000002500e7073ceb0408030000002400e70783c7143b *7b5c760ac7436c05000000ff63f88b460483f82d75128b7504c74504c804050883c50483c7ecff *26c747f004ee04088977f48b45088947f8c747fcd8ee04088d47f08945f88d47f0894500897508 *8d77fcc745fcc8f4040883c5f8e9a0e9ffff8b46088945048b7604c74500d4040508ff2689f638 *050508e8eb04083ceb0408030000002500e7073ceb0408040000002400e70783c7143b7b5c760a *c7436c05000000ff63f88b460483f82d75128b7504c745046005050883c50483c7ecff26c747f0 *301805088b45088947f4c747f8e4bb0b088d47f08947fc8b451089078d77f883c514e912680b00 *89f68b46088945fc8975008b7604c745f86c05050883c5f8ff26c4050508a8eb04083ceb040802 *0000002500e7073ceb0408030000001200e7078d45e03b43547303ff63f8c745f8d46d10088975 *fc8b4e0c894df08b56088955f48b7604c745ecf005050883c5ecff264ceb040803000000120001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b46088945f48b46048945f08b460c8945 *ec83c5ece9310500009083c7503b7b5c760ac7436c14000000ff63f8c747b4b06010088b450889 *47b8c747c0246010088b45088947c4c747cc985f10088b45088947d0c747d80c5f10088b450889 *47dcc747e47cdc0b088b46048947e88d47d88947ecc747f014bc0b088d47e48947f48d47cc8947 *f88d47c08947fc8d47b489078d77f083c510ff650083c7503b7b5c760ac7436c14000000ff63f8 *c747b4b06010088b45088947b8c747c0246010088b45088947c4c747cc7cdc0b088b46048947d0 *8d47c08947d4c747d8985f10088b45088947dcc747e40c5f10088b45088947e8c747f014bc0b08 *8d47e48947f48d47d88947f88d47cc8947fc8d47b489078d77f083c510ff650083c72c3b7b5c76 *0ac7436c0b000000ff63f8c747d8246010088b45088947dcc747e47cdc0b088b45048947e88b45 *0c8947ecc747f014bc0b08c747f400d211088d47e48947f88d47d88947fcc70700d211088d77f0 *83c510ff65009083c7503b7b5c760ac7436c14000000ff63f8c747b4b06010088b45088947b8c7 *47c0246010088b45088947c4c747cc985f10088b45088947d0c747d87cdc0b088b45048947dc8d *47cc8947e0c747e40c5f10088b45088947e8c747f014bc0b088d47e48947f48d47d88947f88d47 *c08947fc8d47b489078d77f083c510ff650083c75c3b7b5c760ac7436c17000000ff63f8c747a8 *b06010088b45088947acc747b4246010088b45088947b8c747c0985f10088b45088947c4c747cc *0c5f10088b45088947d0c747d88c6b10088b46048947dc8b45048947e0c747e47cdc0b088d47d8 *8947e88d47cc8947ecc747f014bc0b088d47e48947f48d47c08947f88d47b48947fc8d47a88907 *8d77f083c510ff65009044080508c4070508680705080000000003000000250000008b45048b4e *04894d0489c6c74500f0080508ff2683c7203b7b5c760ac7436c08000000ff63f8c747e4246010 *088b45048947e8c747f014bc0b08c747f400d211088b4d08894ff88d57e48957fcc70700d21108 *8d77f083c50cff650083c7203b7b5c760ac7436c08000000ff63f8c747e4246010088b45048947 *e8c747f014bc0b08c747f400d211088b4d08894ff88d57e48957fcc70700d211088d77f083c50c *ff650048eb040802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df48b56088955f0bee0d1110883c5ece9460c0b0089f683c72c3b7b5c760ac7436c0b000000 *ff63f8c747d8246010088b45048947dcc747e4a00905088b45088947e88b46048947ecc747f014 *bc0b088d47e48947f4c747f800d211088d47d88947fcc70700d211088d77f083c50cff650090d0 *0905084c0905080409050848eb040802000000250001008b7504c74504440a050883c504ff2690 *83c7503b7b5c760ac7436c14000000ff63f8c747b4b06010088b45088947b8c747c07cdc0b088b *46048947c48d47b48947c8c747cc246010088b45088947d0c747d8985f10088b45088947dcc747 *e40c5f10088b45088947e8c747f014bc0b088d47e48947f48d47d88947f88d47cc8947fc8d47c0 *89078d77f083c510ff6500540a0508440a0508f0080508e80605086806050848eb040803000000 *2500010048eb040803000000240001008b7604c74500f40a0508ff2683c72c3b7b5c760ac7436c *0b000000ff63f8c747d8fc0505088b46048947dc8b46088947e08b45088947e4c747e8985f1008 *8d47d88947ecc747f4380605088b45088947f88d47e88947fc8b450489078d47f48945088d47e8 *89450c8d77d8c74500000b0508ff260c0b050868eb04083ceb0408830000002500ff073ceb0408 *16000300000000001100ff078d45fc3b43547308be88a21108ff63fc8b7508c745fc880b050883 *c5fcff2690e4d11108d4d11108bc0b050800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b934f01008894df4bed4d1110883c5f0e92f040b008d7600b80b050801 *000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8cc0b05088d4ff8894df48b56048955f0bee4d1110883c5ece9c8090b00bc0b05 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b938f0100889 *4df4bed4d1110883c5f0e9a3030b008d7600b80b05080400010000000000110003008d45f83b43 *54720883c7183b7b5c760fbe90a21108c7436c06000000ff63fcc747ec080c05088b45008947f0 *c747f8580c05088d47ec8945008d47f88945fcbee4d1110883c5f8e930090b00e4d11108e0d111 *0888a2110890a21108ec0c050803000000120001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b460c8945f48b46088945f08b46048945ec83c5ece969feffff90e80c05080100010013 *0005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8246010088b4e04894ffc8d57f88955f4c745f090a21108bee0d1110883c5ece98d080b00 *90e40c05080100010013000b008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ec3c0d05088b46048947f0c747f8b06010088b46048947fc8d47ec *8945f48d47f88945f0bee4d1110883c5ece929080b0090e40c0508160003000000000011000f00 *83c7443b7b5c760fbe98a21108c7436c11000000ff63fcc747c0000d05088b45008947c48b4504 *8947c88b45088947ccc747d0940d05088d47c08947d4c747dc985f10088d47c08947e0c747e80c *5f10088d47c08947ecc747f4fcbb0b088d47e88947f88d47dc8947fc8d47d089078d77f483c50c *ff650004000100000000001100000083c7083b7b5c760fbea8a21108c7436c02000000ff63fcc7 *47fc181905088b450089078d77fc83c5048b4d00ff61e890bea0a2110883c5048b4500ff60f089 *f6bea4a2110883c5048b4500ff60ec89f683c7083b7b5c760ac7436c02000000ff63f8c747fc18 *1905088b460489078d77fc83c5048b4d00ff61e889f6d00e0508c00e0508000000000000000025 *0000008b7604c74500100f0508ff26100f0508b00e050800000000000000002500000004000100 *00000000110000008b7500c74500300f0508ff2683c7083b7b5c760ac7436c02000000ff63f8c7 *47fcf0dc0b08c70708d211088d77fc83c5048b4500ff60f09083c7103b7b5c760ac7436c040000 *00ff63f8c747f4f0dc0b08c747f808d21108c747fc10dd0b088d47f489078d77fc83c5048b4d00 *ff61ec83c7103b7b5c760ac7436c04000000ff63f8c747f410dd0b088b46048947f8c747fc10dd *0b088d4ff4890f8d77fc83c5048b5500ff62ec90ac0f0508740f0508480f050800000000000000 *00250000000400010000000000110000008b7500c74500fc0f0508ff2604000100000000001100 *000083c7083b7b5c760fbeb4a21108c7436c02000000ff63fcc747fcf01705088b450089078d77 *fc83c5048b4d00ff61f09004000100000000001100000083c7083b7b5c760fbeb8a21108c7436c *02000000ff63fcc747fc101805088b450089078d77fc83c5048b4d00ff61ec9004000100000000 *001100000083c7083b7b5c760fbebca21108c7436c02000000ff63fcc747fc301805088b450089 *078d77fc83c5048b4d00ff61e89004000100000000001100000083c7083b7b5c760fbec4a21108 *c7436c02000000ff63fcc747fc601805088b450089078d77fc83c5048b4d00ff61e09083c7083b *7b5c760ac7436c02000000ff63f8c747fcf01705088b460489078d77fc83c5048b4d00ff61f089 *f683c7083b7b5c760ac7436c02000000ff63f8c747fc101805088b460489078d77fc83c5048b4d *00ff61ec89f630110508041105080000000000000000250000008b7604c7450070110508ff2683 *c7083b7b5c760ac7436c02000000ff63f8c747fc301805088b460489078d77fc83c5048b4d00ff *61e889f6bec0a2110883c5048b4500ff60e489f683c7083b7b5c760ac7436c02000000ff63f8c7 *47fc601805088b460489078d77fc83c5048b4d00ff61e089f6b8110508a8110508000000000000 *0000250000008b7604c74500f8110508ff26f81105087c1105080000000000000000250000008b *7604c7450018120508ff2618120508701105080000000000000000250000000400010000000000 *110000008b7500c7450038120508ff2683c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc *0b088b46048947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f09083c7103b7b5c *760ac7436c04000000ff63f8c747f410dd0b088b46048947f8c747fcf0dc0b088d4ff4890f8d77 *fc83c5048b5500ff62f09083c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b088b4604 *8947f8c747fc10dd0b088d4ff4890f8d77fc83c5048b5500ff62ec9083c7183b7b5c760ac7436c *06000000ff63f8c747ecf0dc0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fc10dd *0b088d4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b7b5c760ac7436c06000000ff63 *f8c747ec10dd0b088b46048947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f48907 *8d77fc83c5048b4500ff60ec40130508f8120508c0120508881205085012050800000000000000 *00250000000400010000000000110000008b7500c74500a4130508ff2604000100000000001100 *000083c7083b7b5c760fbed0a21108c7436c02000000ff63fcc747fc801805088b450089078d77 *fc83c5048b4d00ff61f0900b000200000000001100000083c70c3b7b5c760fbed4a21108c7436c *03000000ff63fcc747f8a01805088b45008947fc8b4d04890f8d77f883c5088b5500ff62ec8d76 *000b000200000000001100000083c70c3b7b5c760fbed8a21108c7436c03000000ff63fcc747f8 *c01805088b45008947fc8b4d04890f8d77f883c5088b5500ff62e88d760083c7083b7b5c760ac7 *436c02000000ff63f8c747fc801805088b460489078d77fc83c5048b4d00ff61f089f600000000 *2400000083c70c3b7b5c760ac7436c03000000ff63f8c747f8a01805088b46048947fc8b4e0889 *0f8d77f883c5048b5500ff62ec8b7604c74500b4140508ff26000000002400000083c70c3b7b5c *760ac7436c03000000ff63f8c747f8c01805088b46048947fc8b4e08890f8d77f883c5048b5500 *ff62e88b7604c74500f8140508ff2628150508e41405080000000000000000250000008b7604c7 *450048150508ff2648150508801405080000000000000000250000000400010000000000110000 *008b7500c7450068150508ff2683c7083b7b5c760ac7436c02000000ff63f8c747fcf0dc0b088b *460489078d77fc83c5048b4d00ff61f089f683c71c3b7b5c760ac7436c07000000ff63f8c747e8 *d8dc0b088b46048947ec8b46088947f0c747f4f0dc0b088d47e88947f8c747fc10dd0b088d47f4 *89078d77fc83c5048b4500ff60ec89f683c71c3b7b5c760ac7436c07000000ff63f8c747e8d8dc *0b088b46048947ec8b46088947f0c747f410dd0b088d47e88947f8c747fc10dd0b088d47f48907 *8d77fc83c5048b4500ff60ec89f6f8150508ac1505088015050800000000000000002500000004 *00010000000000110000008b7500c745005c160508ff2617000400000000001100000083c7143b *7b5c760fbee4a21108c7436c05000000ff63fcc747f0e01805088b45008947f48b45048947f88b *45088947fc8b450c89078d77f083c510ff650089f6020000002400000083c7143b7b5c760ac743 *6c05000000ff63f8c747f0e01805088b45088947f48b45048947f88b46048947fc8b460889078d *77f083c50cff65008d760001000000240000008b46088945008b4d048b560489550489cec745fc *c816050883c5fcff268d760000000000240000008b46088945008b7604c745fc0c17050883c5fc *ff268d76000400010000000000110000008d45f83b43547308bee8a21108ff63fc8b7500c74500 *34170508ff26000000002400000083c7243b7b5c760ac7436c09000000ff63f8c747e0d8dc0b08 *8b460c8947e48b46108947e8c747ecd8dc0b088b46048947f08b46088947f4c747f8d8dc0b088d *47ec8947fc8d47e089078d77f883c504ff6500900400010000000000110000008b7500c745007c *170508ff2601000000020000008b4500ff60f089f601000000090000008b4500ff60f089f60100 *0000020001008b4500ff60ec89f601000000090001008b4500ff60ec89f601000000020002008b *4500ff60e889f601000000090002008b4500ff60e889f6000000000a0003008b4500ff60e489f6 *01000000020004008b4500ff60e089f601000000090004008b4500ff60e089f601000000020000 *008b4500ff60f089f601000000090000008b4500ff60f089f602000000040001008b4500ff60ec *89f602000000090001008b4500ff60ec89f602000000040002008b4500ff60e889f60200000009 *0002008b4500ff60e889f60400000001000000ff6500900400000009000000ff65009000000000 *0a0000008b4500ff60f089f6000000000a0001008b4500ff60ec89f601000000020002008b4500 *ff60e889f601000000090002008b4500ff60e89090e900000000833df0a21108007546c705f0a2 *110801000000c7450004aa0b0883c504c7450004a10b0883c504c7450090310c0883c504c74500 *50a70b0883c504c745002cbc0b0883c504c745004dec090883c50483c5fcff650089f684d41108 *4cd411088c19050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e88de40a0083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f44cd41108be84d4110883c5f0e911f80a0090f4a2110800000000240000008b *760ce990ed0a00f819050800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e815e40a0083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcbef4a21108c745f4041a050883c5f4ff2684d41108f4a211086c1a05080000 *0200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e8ade30a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4a2 *1108be84d4110883c5f0e931f70a009014a3110800000000240000008b760ce9b0ec0a00d81a05 *0800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e835e30a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe14 *a31108c745f4e41a050883c5f4ff268cd4110830d411084c1b050800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8cde20a0083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f48cd41108be30d4110883c5f0 *e951f60a009080d1110844d111083cc61108e4c611085cc61108acc6110894c611087cd011084c *d5110848d5110834a31108b81b050800000200120041008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f480d11108be94c6110883c5f0e9eff50a008d7600020000002400000083c70c *3b7b5c760ac7436c03000000ff63f8c747f87c9f05088b45048947fc8b4d08890f8d57f8895508 *8b760c83c504e9aff50a008d7600c01b050804000100010000000c0001008d45f83b43547303ff *63fc8b4e04894dfcbe3cc61108c745f8241c050883c5f8ff2689f6cc1b05080000020012001100 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f448d51108beacc6110883c5f0e943f5 *0a008d760001000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4c00a *12088b760483c5f0e911f50a0090cc1b0508010000002400110083c7183b7b5c760ac7436c0600 *0000ff63f8c747ec9c1c0508c747f8d01c05088b45048947fc8d4fec894d048d57f88955008b76 *0883c5fce9d3f80a008d7600c01b050801000100130089008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4be3cc61108c745f0041d050883c5f0ff26c01b0508010001001300 *8d008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8501d05088b4e04894ffc8d57f88955f4be5cc6110883c5f0e93cf40a00c01b050802000000 *24008d0083c7143b7b5c760ac7436c05000000ff63f8c747f06c1c05088b45088947f4c747f888 *1d05088b45048947fc8d47f08945088d47f88945048b7604e9fcf70a00c01b0508040001000100 *00000c008d008d45f83b43547303ff63fc8b4e04894dfcbe3cc61108c745f8d81d050883c5f8ff *2689f601000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4c80a1208 *8b760483c5f0e98df30a0090cc1b050800000200120009008d45f03b43547303ff63f8c745f8d4 *6d10088975fcc745f44cd51108beacc6110883c5f0e957f30a008d7600c01b0508000002001200 *21018d45ec3b43547303ff63f8c745f8d46d10088975fcc745f434a31108c745f03cc61108be7c *d0110883c5ece924f70a00bc1b0508000002001200d3028d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec881e0508c747f8c01e05088d4fec894d *f48d57f88955f0be44d1110883c5ece9cdf60a0090bc1b0508010001001300d7028d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec541e05088b46 *048947f0c747f8fc1e05088d47ec8945f48d47f88945f0bee4c6110883c5ece96ff60a008d7600 *bc1b0508010000002400df0383c7143b7b5c760ac7436c05000000ff63f8c747f0281e05088b45 *048947f4c747f8541f05088b45048947fc8d47f08945048d47f88945008b760483c5fce91df60a *0090b81b0508000002001800ff078d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c747ec085c100856e829de0a0083c4048d47ec894604c706245b1008c745f8d46d10088d47ec *8945fcc747f8f01b05088d47f88945f4be3cc61108c745f0b41f050883c5f0ff268d76008cd411 *0884d411086820050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e8b1dd0a0083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcc745f48cd41108be84d4110883c5f0e935f10a009054a311080000000024000000 *8b760ce9b4e60a00d420050800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e839dd0a0083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcbe54a31108c745f4e020050883c5f4ff26f4d41108d8d411084821050800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8d1dc0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4 *d41108bed8d4110883c5f0e955f00a0090d8d4110874a31108b421050800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e865dc0a0083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f474a31108bed8d4110883 *c5f0e9e9ef0a009008d5110800000000240000008b7608e968e50a002022050800000200180001 *008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8eddb0a *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe08d51108c745f42c22 *050883c5f4ff2608d51108d8d411089422050800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e885db0a0083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f408d51108bed8d4110883c5f0e909ef0a0090d0d1 *110890d111080023050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e819db0a0083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f490d11108bed0d1110883c5f0e99dee0a0090ccd1110880d111086c2305 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8adda0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f480d11108beccd1110883c5f0e931ee0a009050d31108c4a31108d82305080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e841da0a00 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c4a31108be50d311 *0883c5f0e9c5ed0a0090b4a3110800000000240000008b760483c504ff26442405080000020018 *0001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c9 *d90a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbeb4a31108c745f4 *5024050883c5f4ff26bcd1110854d31108d4a31108e4a31108c024050804000100010000000c00 *01008d45f83b43547303ff63fc8b4d00894dfc8b5604895500bed4a3110883c5f8e918f10a00bc *24050802000000150003008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745 *f8d46d10088975fcc747e4985f10088b46048947e8c747f0985f10088b46088947f4c747fcd824 *05088d47f089078d47e48945f48d47fc8945f0be54d3110883c5ece9a9f00a0090020000002400 *000083c7183b7b5c760ac7436c06000000ff63f8c747ec0c5f10088b45048947f0c747f80c5f10 *088b45088947fc8d47ec8945088d47f88945048b7608e960f00a00c42405080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4bee4a31108c7 *45ec7425050883c5ecff2689f6b82405080b0002000000000011000f008d45fc3b4354720883c7 *183b7b5c760fbef4a31108c7436c06000000ff63fcc747ec082505088b45008947f08b45048947 *f4c747f8c02505088b45008947fc8b450489078d47ec8945048d47f8894500bebcd1110883c5fc *e9b3ef0a008d7600b4a31108020000002400000083c7183b7b5c760ac7436c06000000ff63f8c7 *47ec0c5f10088b45088947f0c747f80c5f10088b45048947fc8d47ec8945088d47f88945048b76 *08e964ef0a00642605080b00020000000000110001008d45fc3b43547308befca31108ff63fcbe *b4a31108c745fc7026050883c5fcff268d7600d4d11108f4d01108fcd01108e426050800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950f01008894df4bed4d1 *110883c5f0e9ffe80a008d7600e426050800000200120003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fc2605088d4ff8894df4bef4d011 *0883c5f0e992ea0a0089f6e42605080400010000000000110007008d45f83b4354720883c70c3b *7b5c760fbe04a41108c7436c03000000ff63fcc747f838270508c7450000d211088d4ff8894dfc *befcd0110883c5f8e94cee0a00d4d1110890d1110848d11108bcd41108c0d4110884a31108a4a3 *1108d827050800000200120001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0 *d4110883c5f0e9cde90a00900100000024000000c74500d81112088b760483c5fce9beed0a0089 *f6dc27050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be84a31108c745f04428050883c5f0ff26d02705080100010013000d008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf0270508c747f86428 *05088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece927ed0a008d7600c82705 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b970f0100889 *4df4bed4d1110883c5f0e9ffe60a008d7600c827050800000200120011008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fc2805088d4ff8894d *f4bec0d4110883c5f0e992e80a0089f6c827050801000100130035008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec9c2805088b46048947f0c7 *47f8382905088d47ec8945f48d47f88945f0be48d1110883c5ece93fec0a008d7600c827050800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980f01008894df4 *bed4d1110883c5f0e917e60a008d7600c827050800000200120011008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e42905088d4ff8894df4be *c0d4110883c5f0e9aae70a0089f6c827050801000100130035008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec842905088b46048947f0c747f8 *202a05088d47ec8945f48d47f88945f0be48d1110883c5ece957eb0a008d760001000000240000 *00c74500d81112088b760483c5fce93aeb0a0089f6e027050801000100130001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4bea4a31108c745f0c82a050883c5f0ff26c8 *27050802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec6c2a05088b46088947f0c747f8e82a05088b46048947fc8d47ec8945 *f48d47f88945f0be48d1110883c5ece99dea0a0090c827050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b984f01008894df4bed4d1110883c5f0e977e40a00 *8d7600c827050800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8842b05088d4ff8894df4bec0d4110883c5f0e90ae60a0089 *f6c827050802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ec202b05088b46048947f08b46088947f4c747f8c02b05088d47ec *8945f48d47f88945f0be48d1110883c5ece9b1e90a0090c827050800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b998f01008894df4bed4d1110883c5f0e98be3 *0a008d7600c827050800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8702c05088d4ff8894df4bec0d4110883c5f0e91ee50a *0089f6c827050802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec0c2c05088b46048947f08b46088947f4c747f8ac2c05088d *47ec8945f48d47f88945f0be48d1110883c5ece9c5e80a009001000000240000008b4504894500 *c74504301212088b761483c5fce9a4e80a00cc27050801000100130001008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0582d050883c5f0ff26c8270508 *4200000024007f0083c7183b7b5c760ac7436c06000000ff63f8c747ecf82c05088b46048947f0 *8b46088947f4c747f87c2d05088b45048947fc8d47ec8945088d47f8894504bebcd41108e918e8 *0a00c82705080b0002000000000011007f008d45fc3b43547308be0ca41108ff63fc8b7504c745 *fcb42d050883c5fcff26900ca4110814a411082c2e050800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8edcf0a0083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f414a41108be0ca4110883c5f0e971e30a *0090ccd411081ca41108982e050800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e881cf0a0083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f41ca41108beccd4110883c5f0e905e30a0090c4d11108d4d111 *0828d41108a8d6110888d6110898d6110824a3110864a31108082f050800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a4f01008894df4bed4d1110883c5f0e9 *cbe00a008d7600082f0508420000002400010083c70c3b7b5c761ec745006c2f0508c7436c0300 *0000b8ff00000083f000894320e91e0e0b00c747f8302f05088d4ff8894d088b750483c504e95e *e20a0089f6082f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9f0f01008894df4bed4d1110883c5f0e943e00a008d760083c504e97cffffff082f050800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f8f01008894df4 *bed4d1110883c5f0e9ffdf0a008d7600082f0508420000002400010083c70c3b7b5c761ec74500 *38300508c7436c03000000b8ff00000083f000894320e9520d0b00c747f8fc2f05088d4ff8894d *088b750483c504e992e10a0089f683c504ebbb8d7600082f050800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b944f11008894df4bed4d1110883c5f0e96fdf0a *008d7600082f0508420000002400010083c70c3b7b5c761ec74500c8300508c7436c03000000b8 *ff00000083f000894320e9c20c0b00c747f88c3005088d4ff8894d088b750483c504e902e10a00 *89f6082f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *90f11008894df4bed4d1110883c5f0e9e7de0a008d760083c504e97cffffff082f050800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a0f11008894df4bed4d1 *110883c5f0e9a3de0a008d7600082f0508420000002400010083c70c3b7b5c761ec74500943105 *08c7436c03000000b8ff00000083f000894320e9f60b0b00c747f8583105088d4ff8894d088b75 *0483c504e936e00a0089f683c504ebbb8d7600082f050800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9ecf11008894df4bed4d1110883c5f0e913de0a008d76 *00082f0508420000002400010083c70c3b7b5c761ec7450024320508c7436c03000000b8ff0000 *0083f000894320e9660b0b00c747f8e83105088d4ff8894d088b750483c504e9a6df0a0089f683 *c508ebbb8d7600082f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b938f21008894df4bed4d1110883c5f0e983dd0a008d7600082f050842000000240001 *0083c70c3b7b5c761ec74500b4320508c7436c03000000b8ff00000083f000894320e9d60a0b00 *c747f8783205088d4ff8894d088b750483c504e916df0a0089f6082f050800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b984f21008894df4bed4d1110883c5f0 *e9fbdc0a008d760083c508e97cffffff082f050800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b990f21008894df4bed4d1110883c5f0e9b7dc0a008d7600082f *0508420000002400010083c70c3b7b5c761ec7450080330508c7436c03000000b8ff00000083f0 *00894320e90a0a0b00c747f8443305088d4ff8894d088b750483c504e94ade0a0089f683c508eb *bb8d7600082f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9dcf21008894df4bed4d1110883c5f0e927dc0a008d7600082f0508420000002400010083c7 *0c3b7b5c761ec7450010340508c7436c03000000b8ff00000083f000894320e97a090b00c747f8 *d43305088d4ff8894d088b750483c504e9badd0a0089f683c508ebbb8d760083c70c3b7b5c760a *c7436c03000000ff63f8c747f87c9f05088b45108947fc8b4d08890f8d57f88955108b750483c5 *0ce97bdd0a008d760083c508e978ffffff9034050858340508082f05080400000025000100082f *050805000000240001008b460483f87d750f8b7504c74504ac34050883c504ff2683c50ce939ff *ffff908b46088945008b7604c745fcb834050883c5fcff268d7600d834050850340508082f0508 *04000000250001008b7604c7450004350508ff2683c508e9f8feffff1035050810350508103505 *081035050810350508043505081035050810350508082f05080400000025000100082f05080400 *0100040000000b0001008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745f04435050883c5f0ff26082f050804000100040000000b000300 *8d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0543505088b46048947f4 *8b46088947f88b45008947fc8b460c89078d47f0894500c745fc28d411088b761083c5f8e92ce0 *0a00182f050800000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc745f424 *a31108be98d6110883c5f0e9ebdb0a008d760083c7203b7b5c760ac7436c08000000ff63f8c747 *e4983505088b450c8947e88b45108947ec8b45088947f08b45048947f4c747f8f43505088d47e4 *8945108d47f889450c8b750483c508e9a5df0a009083c508e908fdffff7036050820360508082f *05080400000025003300082f050805000000240033008b460483f83d750f8b7504c745048c3605 *0883c504ff2683c50ce9c9fcffff908b46088945008b7604c745fc9836050883c5fcff268d7600 *b8360508c0330508082f050804000000250033008b7604c74500e4360508ff2683c508e988fcff *fff0360508f0360508f0360508f0360508f0360508e4360508f0360508f0360508082f05080400 *000025003300082f050804000100040000000b0033008d45ec3b43547303ff63fc8b46048945fc *8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f02437050883c5f0ff2683c7143b *7b5c760ac7436c05000000ff63f8c747f0343705088b450c8947f48b45108947f88b45088947fc *8b450489078d47f0894510c7450c28d411088b750483c508e964de0a006837050830330508082f *0508040000002500330083c70c3b7b5c760ac7436c03000000ff63f8c747f8003305088b460489 *45fc8d4ff8894df8bec4d11108c74500c437050883c5f4e917de0a008d760083c508e9acfaffff *00380508003805080038050800380508c4370508003805080038050800380508042f0508040000 *0025006700042f050804000100040000000b0067008d45e43b43547303ff63fc8b46048945fc8b *46108945f48b460c8945f88b45008b4e08894d0089c6c745f03438050883c5f0ff2683c7143b7b *5c760ac7436c05000000ff63f8c747f0443805088b450c8947f48b45108947f88b45088947fc8b *450489078d47f0894510c7450c28d411088b750483c508e954dd0a0083c508e95cf9ffffc03805 *0878380508042f05080400000025006700042f050805000000240067008b460483f82c750f8b75 *04c74504dc38050883c504ff2683c50ce91df9ffff908b46088945008b7604c745fce838050883 *c5fcff268d76000839050864320508042f050804000000250067008b7604c7450034390508ff26 *83c508e9dcf8ffff40390508403905084039050840390508403905083439050840390508403905 *08042f05080400000025006700042f050804000100040000000b0067008d45ec3b43547303ff63 *fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f07439050883c5 *f0ff26042f050804000100030000000b0067008d45f83b4354720883c7143b7b5c760ac7436c05 *000000ff63fcc747f0843905088b46048947f48b45008947f88b46088947fc8b460c89078d47f0 *894500c745fc28d411088b760c83c5f8e9fcdb0a00182f050800000200120005008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f464a31108be98d6110883c5f0e9bbd70a008d760083 *c71c3b7b5c760ac7436c07000000ff63f8c747e8c83905088b45088947ec8b450c8947f08b4504 *8947f4c747f8243a05088d47e889450c8d47f88945088b750483c504e97bdb0a008d760083c504 *e9f0f6ffff9c3a0508503a0508042f0508030000002500e700042f0508040000002400e7008b46 *0483f83d750f8b7504c74504b83a050883c504ff2683c508e9b1f6ffff908b46088945008b7604 *c745fcc43a050883c5fcff268d7600e43a0508d4310508042f0508030000002500e7008b7604c7 *4500103b0508ff2683c504e970f6ffff1c3b05081c3b05081c3b05081c3b05081c3b0508103b05 *081c3b05081c3b0508042f0508030000002500e700042f050804000100030000000b00e7008d45 *f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4503b0508 *83c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4603b05088b45088947f88b *450c8947fc8b450489078d47f489450cc7450828d411088b750483c504e942da0a0089f6903b05 *0844310508042f0508030000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f814 *3105088b46048945fc8d4ff8894df8bec4d11108c74500e83b050883c5f4e9f3d90a008d760083 *c504e99cf4ffff243c0508243c0508243c0508243c0508e83b0508243c0508243c0508243c0508 *042f0508030000002500e700042f050804000100030000000b00e7008d45e83b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4583c050883c5f4ff2689f683c7 *103b7b5c760ac7436c04000000ff63f8c747f4683c05088b45088947f88b450c8947fc8b450489 *078d47f489450cc7450828d411088b750483c504e93ad90a0089f683c504e954f3ffffdc3c0508 *983c0508042f0508030000002500e700042f0508040000002400e7008b460483f87b750f8b7504 *c74504f83c050883c504ff2683c508e915f3ffff908b46088945008b7604c745fc043d050883c5 *fcff268d7600243d050878300508042f0508030000002500e7008b7604c74500503d0508ff2683 *c504e9d4f2ffff5c3d05085c3d05085c3d05085c3d05085c3d0508503d05085c3d05085c3d0508 *042f0508030000002500e700042f050804000100030000000b00e7008d45f03b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4903d050883c5f4ff2689f683c7 *103b7b5c760ac7436c04000000ff63f8c747f4a03d05088b45088947f88b450c8947fc8b450489 *078d47f489450cc7450828d411088b750483c504e902d80a0089f6d03d0508e82f0508042f0508 *030000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f8b82f05088b46048945fc *8d4ff8894df8bec4d11108c74500283e050883c5f4e9b3d70a008d760083c504e900f1ffff643e *0508643e0508643e0508643e0508283e0508643e0508643e0508643e0508042f05080300000025 *00e700042f050804000100030000000b00e7008d45e83b43547303ff63fc8b46048945fc8b460c *8945f88b45008b4e08894d0089c6c745f4983e050883c5f4ff2689f6042f0508000000002400e7 *0083c7103b7b5c760ac7436c04000000ff63f8c747f4a83e05088b46108947f88b460c8947fc8b *460489078d47f4894500c745fc28d411088b760483c5f8e9eed60a0089f6042f05080000020012 *00ef008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4e43e050883c5f4 *ff2689f6042f0508000002001800ff008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c747ec085c100856e8c5be0a0083c4048d47ec894604c706245b1008c745f8d46d10088d *47ec8945fcc747f8343f05088d47f88945f4c745f028121208be88d6110883c5ece948d60a0020 *d411083ca41108cc3f050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e84dbe0a0083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f43ca41108be20d4110883c5f0e9d1d10a0090e4d11108b8d31108e0d1 *1108b0d0110840d3110894a3110804000100010000000c00000083c70c3b7b5c760ac7436c0300 *0000ff63fcc747f87cdc0b088b46048947fc8b4d00890f8d77f883c5048b5500ff62ec48400508 *01000100130001008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d *10088975fcc747fc5c400508c707c00a12088b4e04894df48d57fc8955f0be40d3110883c5ece9 *32d50a0089f64040050801000100130009008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4c745f094a31108bee0d1110883c5ece9f5d40a0090404005080100010013000b00 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *f04005088b46048947f0c747f87cdc0b08c747fcc80a1208c70700d211088d47ec8945f48d47f8 *8945f0beb0d0110883c5ece98ad40a0089f63c40050801000100130017008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82c4105088b4e04894f *fc8d57f88955f4beb8d3110883c5f0e92cd00a00384005080000000024003f0083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec984005088b46088947f0c747f8984105088b46048947fc8d47 *ec8945008d47f88945fcbee4d1110883c5f8e9e7d30a008d760038400508040001000000000011 *003f008d45f83b43547308be5ca41108ff63fc8b7500c74500e8410508ff260400010000000000 *1100000083c71c3b7b5c760fbe64a41108c7436c07000000ff63fcc747e8fc9e05088b45008947 *ecc747f0dc9e05088b45008947f4c747f83c9f05088d47f08947fc8d47e889078d77f883c5048b *4500ff60e09004000100000000001100000083c71c3b7b5c760fbe68a41108c7436c07000000ff *63fcc747e81c9f05088b45008947ecc747f0dc9e05088b45008947f4c747f83c9f05088d47f089 *47fc8d47e889078d77f883c5048b4500ff60e09001000100130000008d45f43b43547303ff63f8 *c745f8d46d10088975fc8b4e04894df483c5f4e985ffffff9001000100130000008d45f43b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9fdfeffff900b0002000000000011 *00000083c7243b7b5c760fbe6ca41108c7436c09000000ff63fcc747e01c4305088b45048947e4 *c747ec484305088b45008947f0c747f85c9f05088d47ec8947fc8d47e089078d77f883c5088b45 *00ff60dc90d4d1110880d1110814c611083cc611081cc611089cc611087cd0110844a31108cc43 *050800000200120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f480d11108be *9cc6110883c5f0e9ebcd0a008d7600cc43050800000200120011008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f480d11108be9cc6110883c5f0e9b3cd0a008d7600d4430508000002 *00120009008d45f03b43547303ff63f8c745f8d46d10088975fcc745f43cc61108be7cd0110883 *c5f0e97bcd0a008d7600be00d2110883c5108b4500ff60f089f6e443050802000000150001008d *45ec3b43547303ff63f8c745f8d46d10088975fcc745f444a311088b4e08894df08b760483c5ec *e93bd10a008d7600e4430508040000002400010083c7183b7b5c760ac7436c06000000ff63f8c7 *47ecac4405088b450c8947f08b45048947f4c747f88c6b10088b45108947fc8b450889078d47ec *8945108d47f889450c8b760883c508e9ded00a0089f6d443050804000000120011008d45e43b43 *547303ff63f8c745f8d46d10088975fc8b46108945e88b460c8945ec8b46088945f08b46048945 *f4be3cc61108c745e4e844050883c5e4ff2689f6d4430508040000002400110083c72c3b7b5c76 *0ac7436c0b000000ff63f8c747d88c6b10088b45088947dc8b45048947e0c747e4444505088b45 *108947e88b450c8947ec8b46048947f08b46088947f4c747f87cdc0b088d47e48947fc8d47d889 *078d77f883c5148b4500ff60ec89f68b46088945008b7604c745fc9045050883c5fcff268d7600 *f445050890440508d44305080300000025001100d443050804000100020000000e0011008d45f0 *3b43547303ff63fc8975f88b46088945fc8b45008b4e04894d0089c6c745f42046050883c5f4ff *2690c843050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *28f31008894df4bed4d1110883c5f0e993c90a008d7600c843050800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b92cf31008894df4bed4d1110883c5f0e957c9 *0a008d7600c843050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b930f31008894df4bed4d1110883c5f0e91bc90a008d7600c843050802000000150089008d *45f43b4354720b81c7c00000003b7b5c760ac7436c30000000ff63f8c745f8d46d10088975fcc7 *8744ffffff304605088b4604898748ffffff8b460889874cffffffc78750ffffff68460508c787 *5cffffffe4bb0b088d8750ffffff898760ffffffc78764ffffff74a71108c78768ffffff7cdc0b *088d875cffffff89876cffffffc78770ffffff00d21108c78774ffffffa4460508c74780e4bb0b *088d8774ffffff894784c7478864a41108c7478c7cdc0b088d47808947908d8768ffffff894794 *c747987cdc0b08c7479c480b1208c747a000d21108c747a4e4bb0b088d47988947a8c747ac78a7 *1108c747b07cdc0b088d47a48947b48d478c8947b8c747bce0460508c747c8e4bb0b088d47bc89 *47ccc747d068a41108c747d47cdc0b088d47c88947d88d47b08947dcc747e07cdc0b08c747e438 *0b1208c747e800d21108c747ece4bb0b088d47e08947f0c747f47ca71108c747f87cdc0b088d47 *ec8947fc8d47d489078d47f88945f48db744ffffff83c5f4e997fdffff8d760000000000240000 *00c7450070a711088b760c83c5fce952c90a0089f6d443050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcbe3cc61108c745f4a448050883c5f4ff2689f6c843050800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b934f31008894df4 *bed4d1110883c5f0e903c70a008d7600c843050801000100130001008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f84805088d4ff8894df48b *760483c5f0e998c80a00c8430508010000002400090083c7183b7b5c760ac7436c06000000ff63 *f8c747ecc4480508c747f8344905088b45048947fc8d4fec894d048d57f88955008b760883c5fc *e95bcc0a008d7600c843050801000100130009008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df4be3cc61108c745f07c49050883c5f0ff26c8430508000002001200fb008d45 *f03b4354720883c73c3b7b5c760ac7436c0f000000ff63f8c745f8d46d10088975fcc747c82c44 *0508c747d464440508c747e01c4705088d47c88947e48d47d48947e8c747ecc84905088d47c889 *47f0c747f87cdc0b088d47ec8947fc8d47e089078d47f88945f4be1cc6110883c5f0e991c70a00 *9001000000240000008b760ce980c70a00d443050801000100130001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f0804a050883c5f0ff260200000024 *00000083c70c3b7b5c760ac7436c03000000ff63f8c747f85c9f05088b45048947fc8b4d08890f *8d57f88955088b760c83c504e90bc70a008d7600d443050804000100010000000c0001008d45f8 *3b43547303ff63fc8b4e04894dfcbe3cc61108c745f8c84a050883c5f8ff2689f6d44305080200 *00002400010083c7083b7b5c760ac7436c02000000ff63f8c747fc104b05088b450489078b4d08 *894d048d57fc8955088b7604e9a2ca0a0089f6d443050802000000150001008d45ec3b43547303 *ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be3cc61108c745ec404b050883c5 *ecff2689f6c843050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b93cf31008894df4bed4d1110883c5f0e93bc40a008d7600c843050801000100130001008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c0 *4b05088d4ff8894df48b760483c5f0e9d0c50a00c8430508030000002400090083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec804b05088b45088947f08b45048947f4c747f8fc4b05088b45 *0c8947fc8d47ec89450c8d47f88945088b760883c504e987c90a008d7600c84305080300000012 *0009008d45e83b43547303ff63f8c745f8d46d10088975fc8b460c8945ec8b46088945f08b4604 *8945f4be3cc61108c745e8444c050883c5e8ff26c84305080300000012000d008d45ec3b435472 *0883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8944a05088b460c *8947ecc747f49c4c05088b46048947f88b46088947fc8b460c89078d47e88945f48d47f48945f0 *be14c6110883c5ece9d2c80a0089f6020000002400000083c70c3b7b5c760ac7436c03000000ff *63f8c747f83c9f05088b45048947fc8b4d08890f8d57f88955088b760c83c504e987c40a008d76 *00d443050804000100010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbe3cc61108 *c745f84c4d050883c5f8ff2689f6d4430508020000002400010083c7083b7b5c760ac7436c0200 *0000ff63f8c747fc944d05088b450489078b4d08894d048d57fc8955088b7604e91ec80a0089f6 *d443050802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df0 *8b56048955f4be3cc61108c745ecc44d050883c5ecff2689f6c843050800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b940f31008894df4bed4d1110883c5f0e9 *b7c10a008d7600c843050801000100130001008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8444e05088d4ff8894df48b760483c5f0e94cc30a *00c8430508030000002400090083c7183b7b5c760ac7436c06000000ff63f8c747ec044e05088b *45088947f08b45048947f4c747f8804e05088b450c8947fc8d47ec89450c8d47f88945088b7608 *83c504e903c70a008d7600c843050803000000120009008d45e83b43547303ff63f8c745f8d46d *10088975fc8b460c8945ec8b46088945f08b46048945f4be3cc61108c745e8c84e050883c5e8ff *26c843050804000100020000000e000d008d45f83b4354720883c7203b7b5c760ac7436c080000 *00ff63fcc747e4e04c05088b46048947e88b46088947ec8b45008947f0c747f4204f05088b4604 *8947f88b46088947fc8b450089078d47e48945008d47f48945fcbe14c6110883c5f8e948c60a00 *c84305080200000024000d0083c70c3b7b5c760ac7436c03000000ff63f8c747f8684f05088b45 *088947fc8b4d04890f8d57f88955088b7604e90ac60a0089f6c8430508000002001800ff008d45 *ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856e815ae0a0083c4 *048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ecf4430508c747f8004a05 *088d47f88945f08d47ec8945f4be3cc61108c745ecd84f050883c5ecff2689f6d4d4110880a411 *088850050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e891ad0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcc745f480a41108bed4d4110883c5f0e915c10a0090d4d1110890d1110848d11108b8d41108 *bcd41108c0d411080ca41108a4a41108f450050800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b944f31008894df4bed4d1110883c5f0e9dbbe0a008d760083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8205105088d47f8894508bec0d4110883c504e98c *c00a000c51050801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4c745f03012120883c5f0e95adcffff89f6f450050800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b950f31008894df4bed4d1110883c5f0e93bbe0a008d *7600f450050800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8c05105088d4ff8894df4bec0d4110883c5f0e9cebf0a0089f6 *f450050801000100130065008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec885105088b46048947f0c747f8fc5105088d47ec8945f48d47f889 *45f0be48d1110883c5ece97bc30a008d760001000000240000008b4504894500c7450430121208 *8b761483c5fce958c30a00f850050801000100130001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be90d11108c745f0a452050883c5f0ff2683c7183b7b5c760ac7436c *06000000ff63f8c747ec485205088b46048947f0c747f8c85205088b45048947fc8d47ec894508 *8d47f8894504bebcd41108e9dec20a0089f60c51050801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f03012120883c5f0e99edaffff89f6f4500508 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b960f31008894d *f4bed4d1110883c5f0e97fbc0a008d7600f450050800000200120021008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87c5305088d4ff8894df4 *bec0d4110883c5f0e912be0a0089f6f450050801000100130065008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec445305088b46048947f0c747 *f8b85305088d47ec8945f48d47f88945f0be48d1110883c5ece9bfc10a008d7600010000002400 *00008b4504894500c74504301212088b761483c5fce99cc10a00f850050801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f06054050883 *c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec045405088b46048947f0c747f884 *5405088b45048947fc8d47ec8945088d47f8894504bebcd41108e922c10a0089f60c5105080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0301212 *0883c5f0e9e2d8ffff89f6f450050800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b970f31008894df4bed4d1110883c5f0e9c3ba0a008d7600f4500508000002 *00120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8385505088d4ff8894df4bec0d4110883c5f0e956bc0a0089f6f45005080100010013 *0065008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec005505088b46048947f0c747f8745505088d47ec8945f48d47f88945f0be48d1110883c5 *ece903c00a008d760001000000240000008b4504894500c74504301212088b761483c5fce9e0bf *0a00f850050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be90d11108c745f01c56050883c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747 *ecc05505088b46048947f0c747f8405605088b45048947fc8d47ec8945088d47f8894504bebcd4 *1108e966bf0a0089f61051050801000100130001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4c745f03012120883c5f0e96e05000089f6fc50050801000100130023008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8bc *5605088b4e04894ffc8d57f88955f4c745f0b8d41108be48d1110883c5ece9d5be0a0090105105 *0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0 *3012120883c5f0e9de04000089f6fc50050802000000150023008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf45605088b46088947f0c747f8 *4c5705088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece939be0a0090f45005 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980f3100889 *4df4bed4d1110883c5f0e913b80a008d7600f450050800000200120021008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e85705088d4ff8894d *f4bec0d4110883c5f0e9a6b90a0089f6f4500508020000001500ad008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec845705088b46048947f08b *46088947f4c747f8245805088d47ec8945f48d47f88945f0be48d1110883c5ece94dbd0a009001 *000000240000008b4504894500c74504301212088b761483c5fce92cbd0a00f850050801000100 *130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0 *d058050883c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec705805088b46048947 *f08b46088947f4c747f8f45805088b45048947fc8d47ec8945088d47f8894504bebcd41108e9ac *bc0a001051050801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4c745f03012120883c5f0e9b602000089f6fc50050801000100130023008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8745905088b4e04 *894ffc8d57f88955f4c745f0b8d41108be48d1110883c5ece91dbc0a0090105105080100010013 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03012120883c5 *f0e92602000089f6fc50050802000000150023008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747ecac5905088b46088947f0c747f8045a05088b46 *048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece981bb0a0090f45005080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b994f31008894df4bed4d111 *0883c5f0e95bb50a008d7600f450050800000200120021008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a05a05088d4ff8894df4bec0d41108 *83c5f0e9eeb60a0089f6f4500508020000001500ad008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec3c5a05088b46048947f08b46088947f4c7 *47f8dc5a05088d47ec8945f48d47f88945f0be48d1110883c5ece995ba0a009001000000240000 *008b4504894500c74504301212088b761483c5fce974ba0a00f850050801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0885b050883c5 *f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec285b05088b46048947f08b46088947 *f4c747f8ac5b05088b45048947fc8d47ec8945088d47f8894504bebcd41108e9f4b90a00d85b05 *08205905086c560508b0540508f452050850510508f4500508420000002500ff00f45005080b00 *0200000000001100ff008d45fc3b43547308bea4a41108ff63fc8b7504c745fc445c050883c5fc *ff2690a4a41108aca41108745c050800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8a5a10a0083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f4aca41108bea4a4110883c5f0e929b50a0090ccd41108b4a4 *1108e05c050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e839a10a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f4b4a41108beccd4110883c5f0e9bdb40a009048d41108d4a4110844d41108d4a411 *083cd41108d4a411084c5d050800000200180003008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e8bda00a0083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4d4a41108be48d4110883c5f0e941b40a0090545d050800000200 *180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *59a00a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d4a41108 *be44d4110883c5f0e9ddb30a00905c5d050800000200180003008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8f59f0a0083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcc745f4d4a41108be3cd4110883c5f0e979b30a0090c4d111 *08d4d1110828d41108a8d6110880d6110888d611088cd611084ca411082ca5110820d411081ca5 *1108945e050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *acf31008894df4bed4d1110883c5f0e933b10a008d7600945e0508420000002400010083c70c3b *7b5c761ec74500045f0508c7436c03000000b8ff00000083f000894320e986de0a00c747f8c85e *05088d4ff8894d088b750483c504e9c6b20a0089f6945e050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9f8f31008894df4bed4d1110883c5f0e9abb00a00 *8d760083c504e97cffffff04000100020000000e0000008d45fc3b4354720883c70c3b7b5c760a *c7436c03000000ff63fcc747f85c9f05088b46048947fc8b450089078d47f88945008b760883c5 *fce937b20a008d7600a85e050800000200120005008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f42ca51108be8cd6110883c5f0e9ffb10a008d7600a85e050804000100020000000e *0005008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec945f05088b4500 *8947f08b46048947f4c747f8e05f05088d47ec8945008d47f88945fc8b760883c5f8e9adb50a00 *90a85e050800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42ca5 *1108be8cd6110883c5f0e96bb10a008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec *1c6005088b450c8947f08b45048947f4c747f8746005088d47ec89450c8d47f88945088b750483 *c504e931b50a0090a0600508805f0508945e0508030000002500a10083c70c3b7b5c760ac7436c *03000000ff63f8c747f8505f05088b46048945fc8d4ff8894df8bec4d11108c74500f860050883 *c5f4e9e3b40a008d760083c504e9c8fdffff34610508346105083461050834610508f860050834 *6105083461050834610508905e05080300000025004301905e050804000100030000000b004301 *8d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f46861 *050883c5f4ff2689f6905e0508000000002400470183c7103b7b5c760ac7436c04000000ff63f8 *c747f4786105088b46108947f88b460c8947fc8b460489078d47f4894500c745fc28d411088b76 *0483c5f8e91eb40a0089f6905e05080000020012004f018d45ec3b43547303ff63f8c745f8d46d *10088975fcbea8d61108c745f4b461050883c5f4ff2689f6905e05080000020012006f018d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8046205 *088d4ff8894df4c745f028121208be88d6110883c5ece997b30a008d7600945e05080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910f41008894df4bed4d111 *0883c5f0e96fad0a008d7600945e0508420000002400010083c70c3b7b5c761ec74500c8620508 *c7436c03000000b8ff00000083f000894320e9c2da0a00c747f88c6205088d4ff8894d088b7504 *83c504e902af0a0089f6945e050800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b95cf41008894df4bed4d1110883c5f0e9e7ac0a008d760083c504e97cffffff *04000100020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc7 *47f83c9f05088b46048947fc8b450089078d47f88945008b760883c5fce973ae0a008d7600a85e *050800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42ca51108be *8cd6110883c5f0e93bae0a008d7600a85e050804000100020000000e0005008d45f83b43547208 *83c7183b7b5c760ac7436c06000000ff63fcc747ec586305088b45008947f08b46048947f4c747 *f8a46305088d47ec8945008d47f88945fc8b760883c5f8e9e9b10a0090a85e0508000002001200 *05008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42ca51108be8cd6110883c5f0e9 *a7ad0a008d760083c7183b7b5c760ac7436c06000000ff63f8c747ece06305088b450c8947f08b *45048947f4c747f8386405088d47ec89450c8d47f88945088b750483c504e96db10a0090646405 *0844630508945e0508030000002500a10083c70c3b7b5c760ac7436c03000000ff63f8c747f814 *6305088b46048945fc8d4ff8894df8bec4d11108c74500bc64050883c5f4e91fb10a008d760083 *c504e9c8fdfffff8640508f8640508f8640508f8640508bc640508f8640508f8640508f8640508 *905e05080300000025004301905e050804000100030000000b0043018d45e83b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f42c65050883c5f4ff2689f6905e *0508000000002400470183c7103b7b5c760ac7436c04000000ff63f8c747f43c6505088b461089 *47f88b460c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e95ab00a0089f6 *905e05080000020012004f018d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c7 *45f47865050883c5f4ff2689f6905e05080000020012006f018d45ec3b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c86505088d4ff8894df4c745f028 *121208be88d6110883c5ece9d3af0a008d7600905e05080000020012007f018d45ec3b43547208 *83c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec38620508c747f8fc *6505088d4fec894df48d57f88955f0be80d6110883c5ece979af0a0090945e0508000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b970f41008894df4bed4d11108 *83c5f0e953a90a008d7600945e0508420000002400010083c70c3b7b5c761ec74500e4660508c7 *436c03000000b8ff00000083f000894320e9a6d60a00c747f8a86605088d4ff8894d088b750483 *c504e9e6aa0a0089f6945e050800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9bcf41008894df4bed4d1110883c5f0e9cba80a008d760083c504e97cffffff04 *000100010000000c0000008d45fc3b4354720883c7083b7b5c760ac7436c02000000ff63fcc747 *fc1c9f05088b4d00890f8d57fc8955008b760483c5fce95daa0a0090a85e050800000200120003 *008d45f03b43547303ff63f8c745f8d46d10088975fcc745f44ca41108be8cd6110883c5f0e927 *aa0a008d760083c7143b7b5c760ac7436c05000000ff63f8c747f0746705088b450c8947f4c747 *f8b86705088d4ff0894d0c8d57f88955088b750483c504e9f3ad0a008d7600e467050860670508 *945e0508030000002500610083c70c3b7b5c760ac7436c03000000ff63f8c747f8306705088b46 *048945fc8d4ff8894df8bec4d11108c745003868050883c5f4e9a3ad0a008d760083c504e968fe *ffff7468050874680508746805087468050838680508746805087468050874680508905e050803 *0000002500c300905e050804000100030000000b00c3008d45e83b43547303ff63fc8b46048945 *fc8b460c8945f88b45008b4e08894d0089c6c745f4a868050883c5f4ff2689f6905e0508000000 *002400c70083c7103b7b5c760ac7436c04000000ff63f8c747f4b86805088b46108947f88b460c *8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e9deac0a0089f6905e050800 *0002001200cf008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4f46805 *0883c5f4ff2689f6905e0508000002001200ef008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8446905088d4ff8894df4c745f028121208be88 *d6110883c5ece957ac0a008d7600905e0508000002001200ff018d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec50660508c747f8786905088d4f *ec894df48d57f88955f0be80d6110883c5ece9fdab0a0090945e050800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9ccf41008894df4bed4d1110883c5f0e9d7 *a50a008d7600945e0508420000002400010083c70c3b7b5c761ec74500606a0508c7436c030000 *00b8ff00000083f000894320e92ad30a00c747f8246a05088d4ff8894d088b750483c504e96aa7 *0a0089f6945e050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b918f51008894df4bed4d1110883c5f0e94fa50a008d760083c504e97cffffff040001000100 *00000c0000008d45fc3b4354720883c7083b7b5c760ac7436c02000000ff63fcc747fcfc9e0508 *8b4d00890f8d57fc8955008b760483c5fce9e1a60a0090a85e050800000200120003008d45f03b *43547303ff63f8c745f8d46d10088975fcc745f44ca41108be8cd6110883c5f0e9aba60a008d76 *0083c7143b7b5c760ac7436c05000000ff63f8c747f0f06a05088b450c8947f4c747f8346b0508 *8d4ff0894d0c8d57f88955088b750483c504e977aa0a008d7600606b0508dc6a0508945e050803 *0000002500610083c70c3b7b5c760ac7436c03000000ff63f8c747f8ac6a05088b46048945fc8d *4ff8894df8bec4d11108c74500b46b050883c5f4e927aa0a008d760083c504e968fefffff06b05 *08f06b0508f06b0508f06b0508b46b0508f06b0508f06b0508f06b0508905e0508030000002500 *c300905e050804000100030000000b00c3008d45e83b43547303ff63fc8b46048945fc8b460c89 *45f88b45008b4e08894d0089c6c745f4246c050883c5f4ff2689f6905e0508000000002400c700 *83c7103b7b5c760ac7436c04000000ff63f8c747f4346c05088b46108947f88b460c8947fc8b46 *0489078d47f4894500c745fc28d411088b760483c5f8e962a90a0089f6905e0508000002001200 *cf008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4706c050883c5f4ff *2689f6905e0508000002001200ef008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8c06c05088d4ff8894df4c745f028121208be88d6110883c5 *ece9dba80a008d7600905e0508000002001200ff018d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747eccc690508c747f8f46c05088d4fec894df48d *57f88955f0be80d6110883c5ece981a80a0090945e050800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b928f51008894df4bed4d1110883c5f0e95ba20a008d76 *00945e0508420000002400010083c70c3b7b5c761ec74500dc6d0508c7436c03000000b8ff0000 *0083f000894320e9aecf0a00c747f8a06d05088d4ff8894d088b750483c504e9eea30a0089f694 *5e050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974f510 *08894df4bed4d1110883c5f0e9d3a10a008d760083c504e97cffffff04000100010000000c0000 *008d45fc3b4354720883c7083b7b5c760ac7436c02000000ff63fcc747fcdc9e05088b4d00890f *8d57fc8955008b760483c5fce965a30a0090a85e050800000200120003008d45f03b43547303ff *63f8c745f8d46d10088975fcc745f44ca41108be8cd6110883c5f0e92fa30a008d760083c7143b *7b5c760ac7436c05000000ff63f8c747f06c6e05088b450c8947f4c747f8b06e05088d4ff0894d *0c8d57f88955088b750483c504e9fba60a008d7600dc6e0508586e0508945e0508030000002500 *610083c70c3b7b5c760ac7436c03000000ff63f8c747f8286e05088b46048945fc8d4ff8894df8 *bec4d11108c74500306f050883c5f4e9aba60a008d760083c504e968feffff6c6f05086c6f0508 *6c6f05086c6f0508306f05086c6f05086c6f05086c6f0508905e0508030000002500c300905e05 *0804000100030000000b00c3008d45e83b43547303ff63fc8b46048945fc8b460c8945f88b4500 *8b4e08894d0089c6c745f4a06f050883c5f4ff2689f6905e0508000000002400c70083c7103b7b *5c760ac7436c04000000ff63f8c747f4b06f05088b46108947f88b460c8947fc8b460489078d47 *f4894500c745fc28d411088b760483c5f8e9e6a50a0089f6905e0508000002001200cf008d45ec *3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4ec6f050883c5f4ff2689f6905e *0508000002001200ef008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f83c7005088d4ff8894df4c745f028121208be88d6110883c5ece95fa50a *008d7600905e0508000002001200ff018d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ec486d0508c747f8707005088d4fec894df48d57f88955f0 *be80d6110883c5ece905a50a0090945e050800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b980f51008894df4bed4d1110883c5f0e9df9e0a008d7600945e0508 *420000002400010083c70c3b7b5c761ec7450058710508c7436c03000000b8ff00000083f00089 *4320e932cc0a00c747f81c7105088d4ff8894d088b750483c504e972a00a0089f6945e05080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ccf51008894df4be *d4d1110883c5f0e9579e0a008d7600eb8289f68b7508c7450870a7110883c504e91ea00a0089f6 *d8710508d4710508945e0508020000002500010083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8a47105088b46048945fc8d4ff8894df8bec4d11108c745000072050883c5f4e9dba30a008d *7600e917ffffff8d76003c7205083c7205083c7205083c720508007205083c7205083c7205083c *720508905e05080200000025000300905e050804000100020000000e0003008d45ec3b43547303 *ff63fc8b46048945fc8b45008b4e08894d0089c6c745f87072050883c5f8ff26905e0508000000 *002400070083c70c3b7b5c760ac7436c03000000ff63f8c747f8807205088b46108947fc8b4e0c *890f8d57f8895500c745fc28d411088b760483c5f8e924a30a00905e05080000020012000f008d *45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4b472050883c5f4ff2689f6 *905e0508000002001800ff018d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c7 *47e0085c100856e8fd8a0a0083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945 *fcc747ecc4700508c747f8fc7205088d47ec8945f48d47f88945f0be80d6110883c5ece97aa20a *0089f6b45e050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c747f8085c100856e8858a0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47 *f88945fcc745f41ca51108be20d4110883c5f0e9099e0a009048d411083ca5110844d411083ca5 *11083cd411083ca511080074050800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8098a0a0083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f43ca51108be48d4110883c5f0e98d9d0a009008740508000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8a5890a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f43ca511 *08be44d4110883c5f0e9299d0a00901074050800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e841890a0083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f43ca51108be3cd4110883c5f0e9c59c0a0090c4d1 *1108d4d1110828d41108a8d6110888d611088cd6110804a311082ca51108487505080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d8f51008894df4bed4d111 *0883c5f0e98b9a0a008d760048750508420000002400010083c70c3b7b5c761ec74500ac750508 *c7436c03000000b8ff00000083f000894320e9dec70a00c747f8707505088d4ff8894d088b7504 *83c504e91e9c0a0089f64875050800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b924f61008894df4bed4d1110883c5f0e9039a0a008d760083c504e97cffffff *04000100020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc7 *47f8b49e05088b46048947fc8b450089078d47f88945008b760883c5fce98f9b0a008d76005875 *050800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42ca51108be *8cd6110883c5f0e9579b0a008d76005875050804000100020000000e0005008d45f83b43547208 *83c7183b7b5c760ac7436c06000000ff63fcc747ec3c7605088b45008947f08b46048947f4c747 *f8887605088d47ec8945008d47f88945fc8b760883c5f8e9059f0a009058750508000002001200 *03008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404a31108be8cd6110883c5f0e9 *c39a0a008d760083c7183b7b5c760ac7436c06000000ff63f8c747ecc47605088b450c8947f08b *45048947f4c747f81c7705088d47ec89450c8d47f88945088b750483c504e9899e0a0090487705 *082876050848750508030000002500710083c70c3b7b5c760ac7436c03000000ff63f8c747f8f8 *7505088b46048945fc8d4ff8894df8bec4d11108c74500a077050883c5f4e93b9e0a008d760083 *c504e9c8fdffffdc770508dc770508dc770508dc770508a0770508dc770508dc770508dc770508 *44750508030000002500e3004475050804000100030000000b00e3008d45e83b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f41078050883c5f4ff2689f64475 *0508000000002400e70083c7103b7b5c760ac7436c04000000ff63f8c747f4207805088b461089 *47f88b460c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e9769d0a0089f6 *44750508000002001200ef008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c7 *45f45c78050883c5f4ff2689f644750508000002001800ff008d45ec3b4354720883c7183b7b5c *760ac7436c06000000ff63f8c747ec085c100856e84d850a0083c4048d47ec894604c706245b10 *08c745f8d46d10088d47ec8945fcc747f8ac7805088d47f88945f4c745f028121208be88d61108 *83c5ece9d09c0a0020d4110884a511084479050800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8d5840a0083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f484a51108be20d4110883c5f0e959980a0090d4 *d41108a4a51108b079050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e869840a0083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f4a4a51108bed4d4110883c5f0e9ed970a0090d4d1110890d1110848d1 *1108b8d41108bcd41108c0d4110874a31108a4a41108387a050801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03012120883c5f0e9e2e1ffff89f6 *247a050801000100130023008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8487a05088b4e04894ffc8d57f88955f4c745f0b8d41108be48d111 *0883c5ece9499b0a00900100000024000000c74500301212088b760483c5fce92e9b0a0089f634 *7a050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be *74a31108c745f0d47a050883c5f0ff26247a050802000000150033008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec807a05088b46088947f0c7 *47f8f47a05088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece9919a0a00901c *7a050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930f610 *08894df4bed4d1110883c5f0e96b940a008d76001c7a050800000200120021008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8907b05088d4ff8 *894df4bec0d4110883c5f0e9fe950a0089f61c7a0508020000001500ed008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec2c7b05088b46048947 *f08b46088947f4c747f8cc7b05088d47ec8945f48d47f88945f0be48d1110883c5ece9a5990a00 *9001000000240000008b4504894500c74504301212088b761483c5fce984990a00207a05080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c7 *45f0787c050883c5f0ff261c7a0508420000002400ff0083c7183b7b5c760ac7436c06000000ff *63f8c747ec187c05088b46048947f08b46088947f4c747f89c7c05088b45048947fc8d47ec8945 *088d47f8894504bebcd41108e9f8980a001c7a05080b000200000000001100ff008d45fc3b4354 *7308bec8a51108ff63fc8b7504c745fcd47c050883c5fcff2690c8a51108d0a511084c7d050800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8cd800a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d0 *a51108bec8a5110883c5f0e951940a0090ccd41108d8a51108b87d050800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e861800a0083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d8a51108beccd4110883 *c5f0e9e5930a0090d4d41108f8a51108247e050800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f57f0a0083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4f8a51108bed4d4110883c5f0e979930a009048 *d411081ca6110844d411081ca611083cd411081ca61108907e050800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8797f0a0083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f41ca61108be48d4110883c5f0 *e9fd920a0090987e050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e8157f0a0083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f41ca61108be44d4110883c5f0e999920a0090a07e050800000200180003 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b17e0a *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f41ca61108be3cd4 *110883c5f0e935920a0090c8d1110864a61108d47f050800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8457e0a0083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f464a61108bec8d1110883c5f0e9c9910a *00906cd1110884a6110868d1110884a6110864d1110884a6110860d1110884a611085cd1110884 *a6110858d1110884a611084080050800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8b17d0a0083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f484a61108be6cd1110883c5f0e935910a0090488005080000 *0200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e84d7d0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f484a6 *1108be68d1110883c5f0e9d1900a00905080050800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8e97c0a0083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f484a61108be64d1110883c5f0e96d900a009058 *80050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8857c0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f484a61108be60d1110883c5f0e909900a00906080050800000200180003008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8217c0a0083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f484a61108be5cd1110883c5f0e9a5 *8f0a00906880050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8bd7b0a0083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f484a61108be58d1110883c5f0e9418f0a0090bcd11108b8d111080ca71108b4 *a31108f4a31108be04d2110883c50c8b4500ff60ec89f68b460489450883c504e90aa3ffff89f6 *020000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec0c5f10088b45088947f0 *c747f80c5f10088b45048947fc8d47ec8945088d47f88945048b7610e9d0920a008b4604894508 *beb4a31108c7450004830508ff26020000002400000083c7183b7b5c760ac7436c06000000ff63 *f8c747ec0c5f10088b45088947f0c747f80c5f10088b45048947fc8d47ec8945088d47f8894504 *8b7618e974920a008b4604894508beb4a31108c7450060830508ff26d082050802000000150001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0e97f *0100008d7600d082050802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e08894df48b56048955f083c5f0e9470100008d760083c7183b7b5c760ac7436c06000000ff *63f8c747ecc08305088b45048947f08b46088947f4c747f8f88305088b45048947fc8b46048907 *8d47ec8945088d47f8894504beb8d11108e9a3910a008d7600d082050802000000150001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0e9bf000000 *8d7600d082050802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08 *894df48b56048955f083c5f0e9870000008d760083c7183b7b5c760ac7436c06000000ff63f8c7 *47ec808405088b45048947f08b46088947f4c747f8b88405088b45048947fc8b460489078d47ec *8945088d47f8894504bebcd11108e9e3900a008d7600e484050824840508a083050844830508ec *820508dc820508c88205084200000025001f00c88205080b0002000000000011001f008d45fc3b *43547308be0ca71108ff63fc8b7504c745fc5885050883c5fcff2690e4d11108d4d111085ca411 *0814a71108f4a31108b83cf61008894500bed4d1110883c5fce9778a0a008d7600908505080100 *0100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e95dbc *ffff9083c7243b7b5c760ac7436c09000000ff63f8c747e0c08505088b46048947e4c747ec7cdc *0b08c747f0400b12088d47e08947f4c747f87cdc0b08c747fc400b12088d47ec89078d77f883c5 *048b4500ff60ec89f69085050801000100130001008d45f43b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df483c5f4e9d9bbffff9083c7183b7b5c760ac7436c06000000ff63f8c747ec *448605088b46048947f0c747f87cdc0b08c747fc480b12088d4fec890f8d77f883c5048b5500ff *62ec89f69085050801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e *04894df483c5f4e969bbffff9083c7183b7b5c760ac7436c06000000ff63f8c747ecb48605088b *46048947f0c747f87cdc0b08c747fc380b12088d4fec890f8d77f883c5048b5500ff62ec89f694 *85050801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483 *c5f4e9bd060000908c85050800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b944f61008894df4bed4d1110883c5f0e9a7880a008d760088850508010001001300 *0b008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc7 *47ec248705088b46048947f0c747f8548705088d47ec8945f48d47f88945f0bee4d1110883c5ec *e9338e0a008d76009485050801000100130001008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df483c5f4e9f105000090888505080200000024000b0083c7183b7b5c761ec745 *0020880508c7436c06000000b8ff00000083f000894320e96ab50a00c747ec908705088b450489 *47f0c747f8f08705088b45088947fc8d47ec8945088d47f8894504bee4d11108e99e8d0a0089f6 *83c504eba38d76009085050801000100130001008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df483c5f4e991b9ffff9083c7243b7b5c760ac7436c09000000ff63f8c747e08c *8805088b45048947e4c747ec7cdc0b08c747f0400b12088d47e08947f4c747f87cdc0b08c747fc *480b12088d47ec89078d77f883c5108b4500ff60ec89f6b0880508788805088885050803000000 *25000f008b46048945fc8b4d04894df8c745001889050883c5f8e9d19cffff9083c504e9e4feff *ff9085050801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f483c5f4e9d5b8ffff9083c7243b7b5c760ac7436c09000000ff63f8c747e0488905088b450489 *47e4c747ec7cdc0b08c747f0400b12088d47e08947f4c747f87cdc0b08c747fc380b12088d47ec *89078d77f883c5108b4500ff60ec89f66c89050834890508888505080300000025000f008b4604 *8945fc8b4d04894df8c74500d489050883c5f8e9159cffff9083c504e928fefffff0890508f089 *0508d489050818890508f0890508f0890508888505080300000025001f008b46048945008b7504 *c745fc1c8a050883c5fcff268d760083c504e9e4fdffff9085050801000100130001008d45f43b *43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9d5b7ffff9083c7243b7b5c76 *0ac7436c09000000ff63f8c747e0488a05088b45048947e4c747ec7cdc0b08c747f0400b12088d *47e08947f4c747f87cdc0b08c747fc480b12088d47ec89078d77f883c5108b4500ff60ec89f66c *8a0508348a0508888505080300000025000f008b45048945fc8b4e04894df88b5604895504c745 *00d48a050883c5f8e90f9bffff8d760083c504e920fdfffff88a0508f88a0508f88a0508f88a05 *08d48a0508f88a0508888505080300000025001f008b46048945008b7504c745fc248b050883c5 *fcff268d760083c504e9dcfcffff9085050801000100130001008d45f43b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df483c5f4e9cdb6ffff9083c7243b7b5c760ac7436c09000000ff *63f8c747e0508b05088b45048947e4c747ec7cdc0b08c747f0400b12088d47e08947f4c747f87c *dc0b08c747fc380b12088d47ec89078d77f883c5108b4500ff60ec89f6748b05083c8b05088885 *05080300000025000f008b45048945fc8b4e04894df88b5604895504c74500dc8b050883c5f8e9 *079affff8d760083c504e918fcffff008c0508008c0508008c0508008c0508dc8b0508008c0508 *888505080300000025001f008b46048945008b7504c745fc2c8c050883c5fcff268d7600e9d7fb *ffff8d7600448c0508448c05082c8c0508248b05081c8a0508448c050888850508020000002500 *1f008b46048945008b4e08894dfc8b7604c745f8708c050883c5f8ff2690948505080100010013 *0001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e94901000090 *8c85050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b948f6 *1008894df4bed4d1110883c5f0e933830a008d7600888505080100010013000b008d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec988c05088b46 *048947f0c747f8c88c05088d47ec8945f48d47f88945f0bee4d1110883c5ece9bf880a008d7600 *9485050801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *83c5f4e97d0000009083c7183b7b5c760ac7436c06000000ff63f8c747ec048d05088b46088947 *f0c747f8648d05088b46048947fc8d47ec8945008d47f88945fcbee4d1110883c5f8e947880a00 *8d7600888d0508708c0508d886050868860508e48505089c850508888505080000000025001f00 *88850508040001000000000011001f008d45ec3b43547308be14a71108ff63fc8b7500c74500f4 *8d0508ff26bcd11108f4a311081ca71108be04d2110883c5048b4500ff60ec89f6befcd1110883 *c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60 *f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f67c8e0508 *6c8e05085c8e05084c8e05083c8e05082c8e05080000000000000000250000008b7504c74504b0 *8e050883c504ff2690befcd1110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec *89f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd11108 *83c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6108f0508008f0508f08e0508 *e08e0508d08e0508c08e05080000000000000000250000008b7504c74504448f050883c504ff26 *90befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be04d2110883 *c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60 *f089f6befcd1110883c5048b4500ff60f089f6a48f0508948f0508848f0508748f0508648f0508 *548f05080000000000000000250000008b7504c74504d88f050883c504ff2690befcd1110883c5 *048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f0 *89f6be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6befcd11108 *83c5048b4500ff60f089f638900508289005081890050808900508f88f0508e88f050800000000 *00000000250000008b7504c745046c90050883c504ff2690befcd1110883c5048b4500ff60f089 *f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883 *c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60 *f089f6cc900508bc900508ac9005089c9005088c9005087c900508000000000000000025000000 *8b7504c745040091050883c504ff2690befcd1110883c5048b4500ff60f089f6befcd1110883c5 *048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f0 *89f6befcd1110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f66091050850 *910508409105083091050820910508109105080000000000000000250000008b7504c745049491 *050883c504ff269094910508009105086c900508d88f0508448f0508b08e050800000000010000 *002500000002000000240000008b7504c74504c891050883c504ff2690ebee89f68b460489450c *8b4d04894d0883c508e90c94ffff83c504ebd38d7600f8910508f8910508f8910508f8910508e4 *910508f8910508248e050803000000250001008b46048945008b7508c745fc2492050883c5fcff *268d76008b460489450c8b4d04894d0883c508e9b493ffff83c504e978ffffff50920508509205 *08509205083c9205085092050850920508248e050803000000250001008b46048945008b7508c7 *45fc7c92050883c5fcff268d76008b460489450c8b4d04894d0883c508e95c93ffff83c504e920 *ffffffa8920508a892050894920508a8920508a8920508a8920508248e05080300000025000100 *8b46048945008b7508c745fcd492050883c5fcff268d7600288e050802000000150001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0e90f0200008d *7600288e050802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0889 *4df48b56048955f083c5f0e9d70100008d760083c7183b7b5c760ac7436c06000000ff63f8c747 *ecf89205088b45048947f08b46088947f4c747f8309305088b45088947fc8b460489078d47ec89 *45108d47f889450cbebcd1110883c508e968820a0083c508e91cfeffffac9305085c930508ac93 *0508ac930508ac930508ac930508208e050804000000250005008b46088945fc8b4e04894d008b *7508c745f8d893050883c5f8ff2690288e050802000000150001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e08894df48b56048955f083c5f0e9070100008d7600288e0508020000 *00150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083 *c5f0e9cf0000008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec009405088b450489 *47f08b46088947f4c747f8389405088b45088947fc8b460489078d47ec8945108d47f889450cbe *bcd1110883c508e960810a0083c508e914fdffff64940508b4940508b4940508b4940508b49405 *08b4940508208e050804000000250005008b46088945fc8b4e04894d008b7508c745f8e0940508 *83c5f8ff2690e0940508d8930508d49205087c92050824920508e0910508208e05080200000025 *000700208e05080b00020000000000110007008d45f43b43547308be1ca71108ff63fc8b7500c7 *45fc2095050883c5fcff269054d111081ca711085495050802000000150001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0eba689f6509505080b00 *0200000000001100030083c70c3b7b5c760fbe24a71108c7436c03000000ff63fcc747f8649505 *088b45008947fc8b4d04890f8d57f8895504be54d11108e9337c0a008d7600bcd11108c4a31108 *1ca71108e095050802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *08894df48b56048955f083c5f0e917ffffff8d760002000000240000008b45088b4d04894d0889 *45048b7608e9dc7f0a00dc95050802000000150001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e08894df08b56048955f4bec4a31108c745ec2496050883c5ecff2689f6d8950508 *020000002400070083c7183b7b5c760ac7436c06000000ff63f8c747ecf09505088b45048947f0 *8b46088947f4c747f8449605088b45088947fc8b460489078d47ec8945088d47f8894504bebcd1 *1108e9437f0a008d7600d895050801000000240007008b46088945008b4d048b560489550489ce *c745fc8496050883c5fcff268d7600d89505080b00020000000000110007008d45fc3b43547308 *be3ca71108ff63fc8b7500c74500e0960508ff2654d111083ca711083097050802000000150001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebaa *89f62c9705080b000200000000001100030083c70c3b7b5c760fbe44a71108c7436c03000000ff *63fcc747f8409705088b45008947fc8b4d04890f8d57f8895504be54d11108e9577a0a008d7600 *00000000240000008b760483c504ff260400010000000000110000008b7500c74500bc970508ff *2600000000240000008b760883c504ff260400010000000000110000008b7500c74500e4970508 *ff260b000200000000001100000083c70c3b7b5c760fbe64a71108c7436c03000000ff63fcc747 *f87c9f05088b45008947fc8b4d04890f8d77f883c508ff650089f6000000002400000083c70c3b *7b5c760ac7436c03000000ff63f8c747f87c9f05088b46048947fc8b4e08890f8d77f883c504ff *65008d76000400010000000000110000008b7500c745004c980508ff26000000002400000083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8d8dc0b088b46048947fc8b4e08890f8d77f883c5 *04ff65008d76000400010000000000110000008b7500c745009c980508ff260400010000000000 *1100000083c7083b7b5c760fbe74a71108c7436c02000000ff63fcc747fcdc9e05088b45008907 *8d77fc83c5048b4d00ff61ec9004000100000000001100000083c7083b7b5c760fbe78a71108c7 *436c02000000ff63fcc747fcfc9e05088b450089078d77fc83c5048b4d00ff61e8900400010000 *0000001100000083c7083b7b5c760fbe7ca71108c7436c02000000ff63fcc747fc1c9f05088b45 *0089078d77fc83c5048b4d00ff61e4900b000200000000001100000083c70c3b7b5c760fbe80a7 *1108c7436c03000000ff63fcc747f83c9f05088b45008947fc8b4d04890f8d77f883c5088b5500 *ff62e08d76000b000200000000001100000083c70c3b7b5c760fbe84a71108c7436c03000000ff *63fcc747f85c9f05088b45008947fc8b4d04890f8d77f883c5088b5500ff62dc8d7600be70a711 *0883c5048b4500ff60f089f683c7083b7b5c760ac7436c02000000ff63f8c747fcdc9e05088b46 *0489078d77fc83c5048b4d00ff61ec89f683c7083b7b5c760ac7436c02000000ff63f8c747fcfc *9e05088b460489078d77fc83c5048b4d00ff61e889f65c9a0508309a0508000000000000000025 *0000008b7604c745009c9a0508ff269c9a0508209a05080000000000000000250000008b7604c7 *4500bc9a0508ff2683c7083b7b5c760ac7436c02000000ff63f8c747fc1c9f05088b460489078d *77fc83c5048b4d00ff61e489f6000000002400000083c70c3b7b5c760ac7436c03000000ff63f8 *c747f83c9f05088b46048947fc8b4e08890f8d77f883c5048b5500ff62e08b7604c74500fc9a05 *08ff26000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f85c9f05088b4604 *8947fc8b4e08890f8d77f883c5048b5500ff62dc8b7604c74500409b0508ff26709b05082c9b05 *080000000000000000250000008b7604c74500909b0508ff26909b0508c89a0508000000000000 *0000250000008b7604c74500b09b0508ff26b09b0508bc9a050800000000000000002500000004 *00010000000000110000008b7500c74500d09b0508ff2683c7103b7b5c760ac7436c04000000ff *63f8c747f4f0dc0b08c747f808d21108c747fcf0dc0b088d47f489078d77fc83c5048b4d00ff61 *f083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b088b46048947f0c747f410dd0b08 *8d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7183b7b5c760ac7 *436c06000000ff63f8c747ec10dd0b088b46048947f0c747f410dd0b088d47ec8947f8c747fcf0 *dc0b088d47f489078d77fc83c5048b4500ff60f083c7103b7b5c760ac7436c04000000ff63f8c7 *47f4f0dc0b088b46048947f8c747fc10dd0b088d4ff4890f8d77fc83c5048b5500ff62ec9083c7 *243b7b5c760ac7436c09000000ff63f8c747e0d8dc0b088b46048947e48b46088947e8c747ecf0 *dc0b088d47e08947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5 *048b4500ff60ec9083c7243b7b5c760ac7436c09000000ff63f8c747e0d8dc0b088b46048947e4 *8b46088947e8c747ec10dd0b088d47e08947f0c747f410dd0b088d47ec8947f8c747fc10dd0b08 *8d47f489078d77fc83c5048b4500ff60ec90389d0508e09c0508a89c0508649c0508209c0508e8 *9b05080000000000000000250000000400010000000000110000008b7500c74500b49d0508ff26 *0b000200000000001100000083c70c3b7b5c760fbe90a71108c7436c03000000ff63fcc747f8b4 *9e05088b45008947fc8b4d04890f8d77f883c508ff650089f6000000002400000083c70c3b7b5c *760ac7436c03000000ff63f8c747f8b49e05088b46048947fc8b4e08890f8d77f883c504ff6500 *8d76000400010000000000110000008b7500c74500149e0508ff26000000002400000083c70c3b *7b5c760ac7436c03000000ff63f8c747f8d8dc0b088b46048947fc8b4e08890f8d77f883c504ff *65008d76000400010000000000110000008b7500c74500649e0508ff260200000004000000ff65 *00900200000009000000ff650090000000000a0000008b4500ff60f089f601000000020001008b *4500ff60ec89f601000000090001008b4500ff60ec89f601000000020002008b4500ff60e889f6 *01000000090002008b4500ff60e889f601000000020003008b4500ff60e489f601000000090003 *008b4500ff60e489f602000000040004008b4500ff60e089f602000000090004008b4500ff60e0 *89f602000000040005008b4500ff60dc89f602000000090005008b4500ff60dc89f60200000004 *000000ff6500900200000009000000ff650090e900000000833d9ca71108007514c7059ca71108 *01000000c7450090310c0883c50483c5fcff6500d4d11108c0d41108b49f050800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94cf61008894df4bed4d1110883 *c5f0e933700a008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8c89f05088d47f889 *4500bec0d4110883c5fce9e4710a00b49f050800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b950f61008894df4bed4d1110883c5f0e9cb6f0a008d760083c70c *3b7b5c760ac7436c03000000ff63f8c747f830a005088d47f8894500bec0d4110883c5fce97c71 *0a00b49f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *58f61008894df4bed4d1110883c5f0e9636f0a008d760083c70c3b7b5c760ac7436c03000000ff *63f8c747f898a005088d47f8894500bec0d4110883c5fce914710a00b49f050800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b960f61008894df4bed4d1110883 *c5f0e9fb6e0a008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f800a105088d47f889 *4500bec0d4110883c5fce9ac700a00b49f050800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b968f61008894df4bed4d1110883c5f0e9936e0a008d760083c70c *3b7b5c760ac7436c03000000ff63f8c747f868a105088d47f8894500bec0d4110883c5fce94470 *0a00b49f050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *78f61008894df4bed4d1110883c5f0e92b6e0a008d760083c70c3b7b5c760ac7436c03000000ff *63f8c747f8d0a105088d47f8894500bec0d4110883c5fce9dc6f0a00b49f050800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98cf61008894df4bed4d1110883 *c5f0e9c36d0a008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f838a205088d47f889 *4500bec0d4110883c5fce9746f0a0068a2050800a2050898a1050830a10508c8a0050860a00508 *f89f0508b49f05080000000025000300b49f05080b00020000000000110003008b7504c74504bc *a2050883c504ff2690a0a71108a8a71108dca2050800000200180003008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83d5b0a0083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fcc745f4a8a71108bea0a7110883c5f0e9c16e0a0090 *ccd41108b0a7110848a3050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8d15a0a0083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f4b0a71108beccd4110883c5f0e9556e0a0090d4d1110818d41108a8 *d611080000000024000000c7450090a811088b760c83c5fce92e6e0a0089f6bca3050800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4c8a3050883c5 *f4ff2689f6b4a3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b99cf61008894df4bed4d1110883c5f0e9df6b0a008d76000000000024000000c745008ca8 *11088b760c83c5fce9a26d0a0089f6bca3050800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcbea8d61108c745f454a4050883c5f4ff2689f6b4a3050800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9acf61008894df4bed4d1110883 *c5f0e9536b0a008d76000000000024000000c7450088a811088b760c83c5fce9166d0a0089f6bc *a3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745 *f4e0a4050883c5f4ff2689f6b4a3050800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9c0f61008894df4bed4d1110883c5f0e9c76a0a008d7600000000002400 *0000c7450084a811088b760c83c5fce98a6c0a0089f6bca3050800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fcbea8d61108c745f46ca5050883c5f4ff2689f6b4a30508 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d0f61008894d *f4bed4d1110883c5f0e93b6a0a008d76000000000024000000c7450080a811088b760c83c5fce9 *fe6b0a0089f6bca3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *bea8d61108c745f4f8a5050883c5f4ff2689f6b4a3050800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9d8f61008894df4bed4d1110883c5f0e9af690a008d76 *000000000024000000c745007ca811088b760c83c5fce9726b0a0089f6bca30508000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f484a6050883c5f4ff *2689f6b4a3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e0f61008894df4bed4d1110883c5f0e923690a008d76000000000024000000c7450078a81108 *8b760c83c5fce9e66a0a0089f6bca3050800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fcbea8d61108c745f410a7050883c5f4ff2689f6b4a3050800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e8f61008894df4bed4d1110883c5f0 *e997680a008d7600b4a3050800000200180007008d45f03b4354720b81c75c0100003b7b5c760a *c7436c57000000ff63f8c787a8feffff085c100856e887560a0083c4048d87a8feffff894604c7 *06245b1008c745f8d46d10088d87a8feffff8945fcc787b4feffffe8a30508c787c0feffff1ca4 *0508c787ccfeffffe4bb0b088d87c0feffff8987d0feffff8d87b4feffff8987d4feffffc787d8 *feffff7cdc0b088d87ccfeffff8987dcfeffffc787e0feffff00d21108c787e4feffff74a40508 *c787f0feffffa8a40508c787fcfeffffe4bb0b088d87f0feffff898700ffffff8d87e4feffff89 *8704ffffffc78708ffffff7cdc0b088d87fcfeffff89870cffffff8d87d8feffff898710ffffff *c78714ffffff00a50508c78720ffffff34a50508c7872cffffffe4bb0b088d8720ffffff898730 *ffffff8d8714ffffff898734ffffffc78738ffffff7cdc0b088d872cffffff89873cffffff8d87 *08ffffff898740ffffffc78744ffffff8ca50508c78750ffffffc0a50508c7875cffffffe4bb0b *088d8750ffffff898760ffffff8d8744ffffff898764ffffffc78768ffffff7cdc0b088d875cff *ffff89876cffffff8d8738ffffff898770ffffffc78774ffffff18a60508c747804ca60508c747 *8ce4bb0b088d47808947908d8774ffffff894794c747987cdc0b088d478c89479c8d8768ffffff *8947a0c747a4a4a60508c747b0d8a60508c747bce4bb0b088d47b08947c08d47a48947c4c747c8 *7cdc0b088d47bc8947cc8d47988947d0c747d430a70508c747e064a70508c747ece4bb0b088d47 *e08947f08d47d48947f4c747f87cdc0b088d47ec8947fc8d47c889078d47f88945f4be18d41108 *83c5f0e904680a0020d41108d0a7110804aa050800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e815540a0083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4d0a71108be20d4110883c5f0e999670a0090be *04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f680aa050880aa0508 *80aa050880aa050880aa050880aa050870aa05080000000000000000250000008b7504c74504b8 *aa050883c504ff2690be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f0 *89f6d8aa0508d8aa0508d8aa0508d8aa0508d8aa0508c8aa0508d8aa0508000000000000000025 *0000008b7504c7450410ab050883c504ff2690be04d2110883c5048b4500ff60ec89f6befcd111 *0883c5048b4500ff60f089f630ab050830ab050830ab050830ab050820ab050830ab050830ab05 *080000000000000000250000008b7504c7450468ab050883c504ff2690be04d2110883c5048b45 *00ff60ec89f6befcd1110883c5048b4500ff60f089f688ab050888ab050888ab050878ab050888 *ab050888ab050888ab05080000000000000000250000008b7504c74504c0ab050883c504ff2690 *be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6e0ab0508e0ab05 *08d0ab0508e0ab0508e0ab0508e0ab0508e0ab05080000000000000000250000008b7504c74504 *18ac050883c504ff2690be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60 *f089f638ac050828ac050838ac050838ac050838ac050838ac050838ac05080000000000000000 *250000008b7504c7450470ac050883c504ff2690befcd1110883c5048b4500ff60f089f6befcd1 *110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b45 *00ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be *04d2110883c5048b4500ff60ec89f6e0ac0508d0ac0508c0ac0508b0ac0508a0ac050890ac0508 *80ac05080000000000000000250000008b7504c7450418ad050883c504ff269018ad050870ac05 *0818ac0508c0ab050868ab050810ab0508b8aa05080000000001000000250000000b0002000000 *0000110000008b7500c7450050ad0508ff2654d1110802000000150000008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebc289f668ad05080b000200 *000000001100010083c70c3b7b5c760fbef4a71108c7436c03000000ff63fcc747f874ad05088b *45008947fc8b4d04890f8d57f8895504be54d11108e923640a008d760048d411080ca8110844d4 *11080ca811083cd411080ca81108e8ad050800000200180003008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e821500a0083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcc745f40ca81108be48d4110883c5f0e9a5630a0090f0ad05 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8bd4f0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f40ca81108be44d4110883c5f0e941630a0090f8ad050800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8594f0a0083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f40ca81108be3cd4110883c5f0e9dd620a *0090d4d4110854a811082caf050800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8ed4e0a0083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f454a81108bed4d4110883c5f0e971620a0090be78a8110883c5 *048b4500ff60f089f6be7ca8110883c5048b4500ff60ec89f6be80a8110883c5048b4500ff60e8 *89f6b8af0508a8af05080000000000000000250000008b7604c74500dcaf0508ff26dcaf050898 *af05080000000000000000250000008b7604c74500fcaf0508ff26be84a8110883c5048b4500ff *60e489f6be88a8110883c5048b4500ff60e089f618b0050808b005080000000000000000250000 *008b7604c745003cb00508ff26be8ca8110883c5048b4500ff60dc89f6be90a8110883c5048b45 *00ff60d889f658b0050848b005080000000000000000250000008b7604c745007cb00508ff267c *b005083cb005080000000000000000250000008b7604c745009cb00508ff269cb00508fcaf0508 *0000000000000000250000000400010000000000110000008b7500c74500bcb00508ff2683c710 *3b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c747f808d21108c747fcf0dc0b088d47f4 *89078d77fc83c5048b4d00ff61f083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b08 *c747f008d21108c747f410dd0b088d47ec8947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b *5500ff62f08d760083c7183b7b5c760ac7436c06000000ff63f8c747ec10dd0b08c747f008d211 *08c747f410dd0b088d47ec8947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f08d *760083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b08c747f008d21108c747f4f0dc *0b088d47ec8947f8c747fc10dd0b088d4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b *7b5c760ac7436c06000000ff63f8c747ec10dd0b08c747f008d21108c747f4f0dc0b088d47ec89 *47f8c747fc10dd0b088d4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b7b5c760ac743 *6c06000000ff63f8c747ecf0dc0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fc10 *dd0b088d4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b7b5c760ac7436c06000000ff *63f8c747ec10dd0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fc10dd0b088d4ff4 *890f8d77fc83c5048b5500ff62ec8d760074b205082cb20508e4b105089cb1050854b105080cb1 *0508d4b005080000000000000000250000000400010000000000110000008b7500c74500e4b205 *08ff26000000000a0000008b4500ff60f089f6000000000a0001008b4500ff60ec89f600000000 *0a0002008b4500ff60e889f6000000000a0003008b4500ff60e489f6000000000a0004008b4500 *ff60e089f6000000000a0005008b4500ff60dc89f6000000000a0006008b4500ff60d889f678a8 *11087ca8110880a8110884a8110888a811088ca8110890a81108e900000000833d9ca81108000f *85b4000000c7059ca8110801000000c7450049bb0a0883c504c74500cd640a0883c504c7450051 *450a0883c504c74500d8480c0883c504c7450094b40b0883c504c7450004aa0b0883c504c74500 *04a10b0883c504c745009c360c0883c504c74500f0440c0883c504c74500e524060883c504c745 *0050a70b0883c504c7450035180b0883c504c745005c460c0883c504c7450090310c0883c504c7 *4500984a0c0883c504c745000d8a0a0883c504c7450069180b0883c50483c5fcff6500be00d211 *0883c5048b4500ff60f089f6be00d2110883c5088b4500ff60f089f601000100130000008d45f4 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e98d0000009083c7183b7b5c *760ac7436c06000000ff63f8c747ec7cb405088b45048947f0c747f87cdc0b088b46048947fc8d *47ec89078d77f883c5088b4500ff60ec8d7600a0b4050864b40508000000000100000025000000 *8b46088945008b7604c745fcf4b4050883c5fcff268d7600f4b4050854b4050800000000000000 *00250000000400010000000000110000008d45fc3b43547308bea0a81108ff63fc8b7500c74500 *20b50508ff2638d41108a4cb110848b5050800000200180003008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8d1480a0083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcc745f4a4cb1108be38d4110883c5f0e9555c0a0090bcd311 *0834d61108b4d41108b4b5050800000200180007008d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e861480a0083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4bcd31108c745f034d61108beb4d4110883c5ece9ea5f0a0089f6 *f4d41108d8d411082cb6050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8ed470a0083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f4f4d41108bed8d4110883c5f0e9715b0a0090d8d41108d4a8110898 *b6050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e881470a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f4d4a81108bed8d4110883c5f0e9055b0a009080d11108bcd0110804b70508000002001800 *03008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e81547 *0a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f480d11108bebc *d0110883c5f0e9995a0a0090ccd1110880d1110870b7050800000200180003008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a9460a0083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e92d5a *0a0090b4d0110804a91108dcb7050800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e83d460a0083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f404a91108beb4d0110883c5f0e9c1590a0090dcd211080000 *0000240000008b760ce9404f0a0048b8050800000200180001008d45f43b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8c5450a0083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcbedcd21108c745f454b8050883c5f4ff26e4d11108dcd211 *08a0d2110880d2110858d2110868d21108b0d51108d4b8050800000200120001008d45f03b4354 *720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc14e90b08c707 *e01112088d4ffc894df4beb0d5110883c5f0e9e0580a00bcb8050801000100130001008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08 *c747fca8091208c70700d211088d4ff8894df48b56048955f0bee4d1110883c5ece98f5c0a008d *7600bcb8050801000100130015008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f834b905088b4e04894ffc8d57f88955f4c745f058d21108bea0 *d2110883c5ece9355c0a0090bcb8050802000000150055008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ece4b80508c747f894b905088b460489 *47fc8d47ec8945f48d47f88945f08b760883c5ece9d95b0a0090c8b8050800000200120005008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f468d21108be80d2110883c5f0e997570a *008d7600bcb805080100000024007d0083c7183b7b5c760ac7436c06000000ff63f8c747ececb9 *05088b45048947f08b46088947f4c747f848ba05088d47ec8945048d47f88945008b760883c5fc *e9515b0a0090bcb80508040001000000000011007f008d45f83b43547308be34a91108ff63fcbe *dcd21108c745fc80ba050883c5fcff268d760084d01108dcd21108f8ba05080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e821430a00 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be84d011 *0883c5f0e9a5560a009098d01108dcd2110864bb050800000200180003008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b5420a0083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be98d0110883c5f0e939560a00 *9098d01108dcd21108d0bb050800000200180003008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e849420a0083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4dcd21108be98d0110883c5f0e9cd550a00908cd01108dcd21108 *3cbc050800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e8dd410a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fcc745f4dcd21108be8cd0110883c5f0e961550a009098d01108dcd21108a8bc05080000020018 *0003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e871 *410a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be *98d0110883c5f0e9f5540a0090e4d11108d4d1110890d1110844d11108dcd21108d8c71108d0d5 *110840d3110834a9110858d511083ca9110818bd050800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9ecf61008894df4bed4d1110883c5f0e9af520a008d7600 *14bd050801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f84cbd05088b4e04894df48d57f88955f0bee4d1110883c5ece94858 *0a0083c70c3b7b5c760ac7436c03000000ff63f8c747f888bd05088b45108947fc8d4ff8894d10 *83c510e9dbfcffff8d760038bd050802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df48b56048955f0be58d5110883c5ece9de570a0089f604000100010000 *000c00000083c70c3b7b5c760ac7436c03000000ff63fcc747f87cdc0b088b46048947fc8b4d00 *890f8d77f883c5048b5500ff62ec30bd050801000100130001008d45ec3b4354720883c7083b7b *5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc44be0508c707580a12088b4e04 *894df48d57fc8955f0be40d3110883c5ece94a570a0089f614bd050802000000150081008d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f880be05 *088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece9f2560a0089f614bd050802 *0000001500c1008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8d8be05088b46048947fc8b460889078d47f88945f4bed0d5110883c5f0e98f52 *0a008d760001000000240000008b4504894500c74504a4a811088b761083c5fce978560a001cbd *050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90 *d11108c745f084bf050883c5f0ff261cbd050801000100130001018d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a8bf05088b4e04894ffc8d57 *f88955f4be3ca9110883c5f0e9e4510a0014bd0508030000001200cd048d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec30bf05088b46088947f0 *8b460c8947f4c747f8e0bf05088b46048947fc8d47ec8945f48d47f88945f0be44d1110883c5ec *e987550a008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e808be05088b46048947ec *8b45088947f0c747f430c005088b450c8947f88b46048947fc8b450889078d47e88945108d47f4 *89450c8b750483c508e930550a0090c00508ccbd050814bd0508040000002500cf0714bd050804 *000100040000000b00cf078d45f03b43547303ff63fc8b46108945f48b460c8945f88b46088945 *fc8b45008b4e04894d0089c6c745f0f8c0050883c5f0ff2628bd050801000100130001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bed8c7110883c5f0e998500a0014bd *0508030000002400ef0783c7203b7b5c760ac7436c08000000ff63f8c747e408c105088b450889 *47e88b45048947ec8b450c8947f08b46088947f4c747f848c105088b45088947fc8d47e489450c *8d47f88945088b760483c504e943540a008d760014bd050816000300000000001100ff078d45fc *3b43547308be8ca91108ff63fcbedcd21108c745fc7cc1050883c5fcff268d7600e4d11108d4d1 *1108dcd21108a0d2110880d2110858d2110868d2110808c2050801000100130001008d45ec3b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c7 *47fca8091208c70700d211088d4ff8894df48b56048955f0bee4d1110883c5ece993530a008d76 *000cc2050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9fc *f61008894df4bed4d1110883c5f0e96b4d0a008d760008c2050801000100130003008d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec30c205088b *46048947f0c747f890c205088d47ec8945f48d47f88945f0bee4d1110883c5ece9f7520a008d76 *0008c205080100010013002b008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8ccc205088b4e04894ffc8d57f88955f4c745f058d21108bea0d2 *110883c5ece99d520a009018c2050800000200120005008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f468d21108be80d2110883c5f0e95b4e0a008d760008c205080100000024007b *0083c7183b7b5c760ac7436c06000000ff63f8c747ec2cc305088b45048947f0c747f884c30508 *8d4fec894d048d57f88955008b760883c5fce91b520a008d760008c20508040001000000000011 *007f008d45f83b43547308be94a91108ff63fcbedcd21108c745fcbcc3050883c5fcff268d7600 *e4d1110890d1110844d11108dcd21108d0d5110840d3110858d511083ca9110848c40508020000 *00150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be *58d5110883c5ece98a510a0089f604000100010000000c00000083c70c3b7b5c760ac7436c0300 *0000ff63fcc747f87cdc0b088b46048947fc8b4d00890f8d77f883c5048b5500ff62ec44c40508 *01000100130001008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d *10088975fcc747fc98c40508c707580a12088b4e04894df48d57fc8955f0be40d3110883c5ece9 *f6500a0089f630c4050802000000150021008d45ec3b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8d4c405088b46088947fc8d47f88945f48b46048945 *f0bee4d1110883c5ece99e500a0089f630c4050802000000150031008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82cc505088b46048947fc8b *460889078d47f88945f4bed0d5110883c5f0e93b4c0a008d760001000000240000008b45048945 *00c74504a4a811088b761083c5fce924500a0034c4050801000100130001008d45ec3b43547303 *ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0d8c5050883c5f0ff2634c405 *0801000100130041008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8fcc505088b4e04894ffc8d57f88955f4be3ca9110883c5f0e9904b0a0030 *c40508030000001200b7008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec84c505088b46088947f08b460c8947f4c747f834c605088b46048947 *fc8d47ec8945f48d47f88945f0be44d1110883c5ece9334f0a008d760030c40508030000002400 *f70083c71c3b7b5c760ac7436c07000000ff63f8c747e85cc405088b45088947ec8b450c8947f0 *c747f484c605088b45048947f88b45088947fc8b450c89078d47e889450c8d47f48945088b7608 *83c504e9d04e0a0030c4050816000300000000001100ff008d45fc3b43547308be9ca91108ff63 *fcbedcd21108c745fcf0c6050883c5fcff268d7600dcd21108ccd21108b0d51108c745080cd211 *088b750483c504e9724a0a0089f6beb0d5110883c504e9634a0a008d760098c7050884c7050880 *c70508020000002500010080c705080200000024000100c745fcfcd211088b45088945f88b7604 *c74500bcc7050883c5f4e92d4e0a00907cc7050804000100010000000c0003008d45ec3b435473 *03ff63fc8b4e04894dfcbeccd21108c745f8c8c7050883c5f8ff2689f67cc70508010000002400 *030083c7083b7b5c760ac7436c02000000ff63f8c747fcf8c705088b460c89078b4d04894d008d *57fc8955048b760483c5fce9b74d0a008d760078c705080400010000000000110007008d45f83b *43547308bea4a91108ff63fcbedcd21108c745fc28c8050883c5fcff268d7600e4d1110890d111 *0844d11108dcd21108d0d5110840d31108a4a9110858d511083ca91108b0c80508020000001500 *01008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be58d511 *0883c5ece9224d0a0089f69cc8050802000000150031008d45ec3b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f8c4c805088b46048947fc8b460889078d *47f88945f4c745f0a4a91108be44d1110883c5ece9c44c0a0004000100010000000c00000083c7 *0c3b7b5c760ac7436c03000000ff63fcc747f87cdc0b088b46048947fc8b4d00890f8d77f883c5 *048b5500ff62eca8c8050801000100130001008d45ec3b4354720883c7083b7b5c760ac7436c02 *000000ff63f8c745f8d46d10088975fcc747fc5cc90508c707580a12088b4e04894df48d57fc89 *55f0be40d3110883c5ece9324c0a0089f694c8050802000000150021008d45ec3b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f898c905088b46088947fc *8d47f88945f48b46048945f0bee4d1110883c5ece9da4b0a0089f694c805080200000015003100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *f0c905088b46048947fc8b460889078d47f88945f4bed0d5110883c5f0e977470a008d76000100 *0000240000008b4504894500c74504a4a811088b761083c5fce9604b0a0098c805080100010013 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f09c *ca050883c5f0ff2698c8050801000100130081008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8c0ca05088b4e04894ffc8d57f88955f4be3ca9 *110883c5f0e9cc460a0094c8050803000000120037018d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec48ca05088b46088947f08b460c8947f4c7 *47f8f8ca05088b46048947fc8d47ec8945f48d47f88945f0be44d1110883c5ece96f4a0a008d76 *0094c80508030000002400f70183c71c3b7b5c760ac7436c07000000ff63f8c747e800c905088b *45088947ec8b450c8947f0c747f448cb05088b45048947f88b45088947fc8b450c89078d47e889 *450c8d47f48945088b760883c504e90c4a0a0094c8050816000300000000001100ff018d45fc3b *43547308beaca91108ff63fcbedcd21108c745fcb4cb050883c5fcff268d760044d111088ca911 *08a4a9110840cc050803000000120001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *460c8945f48b46088945f08b46048945ec83c5ece961f5ffff903ccc0508160003000000000011 *00070083c7103b7b5c760fbeb4a91108c7436c04000000ff63fcc747f454cc05088b45008947f8 *8b45048947fc8b450889078d47f4894508c74504a4a91108be44d11108e93a490a0089f654c811 *08dccc050800000000240001008b460483f82e750abe54c8110883c504ff2683c504ff2690dccc *05080400010000000000110001008b7500c74500eccc0508ff26e0d1110854c8110820cd050800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8f9300a0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4bc *a91108bee0d1110883c5f0e97d440a00901cc8110864c81108dcd2110898d5110840d31108c4a9 *11087ca91108be00d2110883c5088b4500ff60f089f68b750c8b450889450c83c50ce9b3000000 *8d760083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b450c8947f08b45088947 *f4c747f87cdc0b088b45048947fc8d47ec89078d77f883c5108b4500ff60ec90cccd0508b8cd05 *0800000000030000002500000002000000240000008b46048945008b7608c745fc24ce050883c5 *fcff268d76008b46088945008b7604c745fc2cce050883c5fcff268d760044ce0508a8cd050800 *000000010000002500000004000100000001000b0000008d45f43b43547303ff63fc8b4d008975 *0089cec745fc70ce050883c5fcff269001000100130000008d45f43b4354720883c7083b7b5c76 *0ac7436c02000000ff63f8c745f8d46d10088975fcc747fc7cce05088b4e04894df48d77fc83c5 *f4eb9f8d760004000100010000000c0000008d45fc3b4354720883c70c3b7b5c760ac7436c0300 *0000ff63fcc747f8a4ce05088b4d00894ffc8d57f88955008b760483c5fce9e4420a00a0cd0508 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bec4a911 *0883c5f0e9b0420a0090cd050802000000150011008d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f830cf05088b46088947fc8d47f88945f48b46 *048945f0be64c8110883c5ece966460a0089f6be00d2110883c50c8b4500ff60f089f68ccd0508 *02000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b560489 *55f0be1cc8110883c5ece91a460a0089f683c7243b7b5c760ac7436c09000000ff63f8c747e08c *6b10088b45048947e48b46088947e8c747eccccf05088b45088947f08b46048947f4c747f87cdc *0b088d47ec8947fc8d47e089078d77f883c50c8b4500ff60ec89f6fccf0508b0cf05088ccd0508 *02000000250001008ccd050804000100010000000c0001008d45f83b43547303ff63fc8975fc8b *4d008b560489550089cec745f868d0050883c5f8ff268d76008ccd050804000100020000000e00 *230083c7143b7b5c760ac7436c05000000ff63fcc747f064cf05088b45008947f48b46048947f8 *c747fc78d005088d47f089078b46088945008d77fceb8c8ccd050803000000120033008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b0d00508 *8b46048947fc8b460889078b460c8945f48d47f88945f0be40d3110883c5ece9cd440a00900400 *0100020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8 *e4bb0b088b46048947fc8b450089078d47f88945008b760883c5fce977400a008d760098cd0508 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be98d511 *0883c5f0e940400a0098cd050804000100020000000e0001008d45f83b4354720883c7183b7b5c *760ac7436c06000000ff63fcc747ec54d105088b45008947f08b46048947f4c747f8a0d105088b *45008947fc8d47ec8945008d47f88945fc8b760883c5f8e9eb430a008d76008ccd050805000000 *12007b008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975 *fcc747e8f8d005088b460c8947ec8b46108947f08b46148947f4c747f8d8d105088b46048947fc *8b460889078d47e88945f48d47f88945f0be7ca9110883c5ece974430a008ccd05080300000024 *007b0083c7203b7b5c760ac7436c08000000ff63f8c747e4ecce05088b460c8947e8c747ec38d2 *05088b460c8947f08b46048947f48b45088947f88b450c8947fc8b450489078d47e489450c8d47 *ec8945088b760483c504e90e430a0089f68ccd0508160003000000000011007f008d45fc3b4354 *7308bed4a91108ff63fcbedcd21108c745fcacd2050883c5fcff268d7600e4d11108d4d1110890 *d1110844d11108dcd21108e0c71108d0d511083ca9110850d3050802000000150001008d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0bee0c7110883c5ece97e *420a0089f640d3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b908f71008894df4bed4d1110883c5f0e9573c0a008d76003cd3050801000100130003008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a4 *d305088b4e04894df48d57f88955f0bee4d1110883c5ece9f0410a003cd3050802000000150003 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8e0d305088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece99a410a0089f640 *d3050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910f710 *08894df4bed4d1110883c5f0e9733b0a008d76003cd3050802000000150003008d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec30d405088b4604 *8947f08b46088947f4c747f888d405088d47ec8945f48d47f88945f0bee4d1110883c5ece9f940 *0a00903cd3050802000000150043008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8c4d405088b46048947fc8b460889078d47f88945f4bed0d5 *110883c5f0e9973c0a008d760001000000240000008b4504894500c74504a4a811088b761083c5 *fce980400a0044d3050801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be90d11108c745f07cd5050883c5f0ff2644d3050801000100130021008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a0d50508 *8b4e04894ffc8d57f88955f4be3ca9110883c5f0e9ec3b0a003cd30508030000001200cf008d45 *ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec28d5 *05088b46088947f08b460c8947f4c747f8d8d505088b46048947fc8d47ec8945f48d47f88945f0 *be44d1110883c5ece98f3f0a008d76003cd30508030000002400ef0083c71c3b7b5c760ac7436c *07000000ff63f8c747e868d305088b45088947ec8b450c8947f0c747f428d605088b45048947f8 *8b45088947fc8b450c89078d47e889450c8d47f48945088b760883c504e92c3f0a003cd3050816 *000300000000001100ff008d45fc3b43547308bedca91108ff63fcbedcd21108c745fc94d60508 *83c5fcff268d7600e4d11108d4d11108b8d31108b0d31108f0d0110844d11108e0d1110864c811 *087cc81108dcd2110808c81108d0d51108bcd3110870d3110888d311088cd31108d4a91108dca9 *1108b0d51108e4a8110804a9110814a911083ca911084ca911085ca911086ca911081cd705081a *000000ffffff031cd705081a000000fffdff031cd705081a000000fffdff0324d7050818000000 *7fbdcc0024d7050801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4beb8d3110883c5f0e9203a0a0054d7050801000100130001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be88d3110883c5f0e9ec390a0054d705080100000024 *00010083c70c3b7b5c760ac7436c03000000ff63f8c747f8f4d705088b45048947fcc74504aca8 *11088d4ff8894d008b761483c5fce9b53d0a00904cd7050801000100130005008d45ec3b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f028d8050883c5f0ff264cd7 *050801000100130007008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f86cd805088b4e04894ffc8d57f88955f4be70d3110883c5f0e920390a00 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8a4d805088b45088947fc8b4d04894d088d57 *f8895504bee0d11108e9f73c0a008d76008b750483c50cff2620d90508e8d8050834d705080200 *00002500c10134d70508020000001500c1038d45e43b43547303ff63f8c745f8d46d10088975fc *8b46048945e88b46088945f08b46048945f4be8cd31108c745ec3cd9050883c5e4e985380a0090 *28d70508170000001140400001000100130000008d45f03b43547303ff63f8c745f8d46d100889 *75fcc745f40cd211088b760483c5f0e949380a009028d705081700000011404000be00d2110883 *c5108b4500ff60f089f638d7050802000000150001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e08894df48b56048955f0be64c8110883c5ece9fe3b0a0089f638d7050804000000 *120001048d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975 *fcc747f8e8d905088b46048947fc8b461089078d47f88945f48b460c8945f08b46088945ec83c5 *ece984fcffff38d70508040000002400010483c72c3b7b5c760ac7436c0b000000ff63f8c747d8 *8c6b10088b45088947dc8b45048947e0c747e424da05088b45108947e88b450c8947ec8b460489 *47f08b46088947f4c747f87cdc0b088d47e48947fc8d47d889078d77f883c5148b4500ff60ec89 *f68b46088945008b7604c745fc80da050883c5fcff268d7600e4da0508ccd9050838d705080300 *00002500010438d7050804000100020000000e0001048d45f03b43547303ff63fc8975f88b4608 *8945fc8b45008b4e04894d0089c6c745f410db050883c5f4ff269028d705080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0beb0d3110883 *c5ece98e3a0a0089f628d7050804000000120011408d45f43b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747ec20db05088b46048947f08b46108947f4c747 *f858db05088b46088947fc8b460c89078d47f88945f48d77ec83c5f4e932ffffff89f6c0d90508 *040000001200ffff8d45f03b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d *10088975fcc747f094db05088b46048947f48b46088947f88b460c8947fc8b461089078d47f089 *45f4be6ca9110883c5f0e9b7350a008d760084d90508060000001200ffff8d45ec3b4354720883 *c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e498d905088b460c8947 *e8c747f0fcdb05088b46048947f48b46108947f88b46148947fc8b461889078d47e48945f48d47 *f08945f08b760883c5ece94e390a0089f62cd70508150000005b0013002cd70508120000001900 *03002cd7050811000000190001002cd7050811000000190001002cd705081100000019000100be *00d2110883c50c8b4500ff60f089f63cd7050801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be7cc8110883c5f0e9c0340a002cd7050801000100130011 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f820dd05088b4e04894ffc8d57f88955f4bef0d0110883c5f0e970340a008b45048945108b750c *83c510e9ff0100008d760038d7050802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df48b56048955f0be64c8110883c5ece92e380a0089f638d70508020000 *00150003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8b8dd05088b46048947fc8b460889078d47f88945f4be7cc8110883c5f0e9cb330a00 *8d76002cd7050802000000150019008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8f4dd05088b46048947fc8b460889078d47f88945f4bef0d0 *110883c5f0e973330a008d760083c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b *450c8947e48b45048947e8c747ec4cde05088b45108947f08b45088947f4c747f87cdc0b088d47 *ec8947fc8d47e089078d77f883c5148b4500ff60ec89f698de050898dd05082cd7050804000000 *250019002cd70508040000002400190083c7183b7b5c760ac7436c06000000ff63f8c747ec7cdc *0b08c747f0c80a1208c747f400d21108c747f854dd05088b45088947fc8d4fec894dfc8d57f889 *55f88b7604c7450004df050883c5f4e9b2360a0089f68b46088945fc8b4e04894d00be04a91108 *c745f810df050883c5f8ff268d760064df050804dd0508f8dc0508020000002500ffffecdc0508 *04000100010000000c00ffff8d45e43b43547303ff63fc8975fc8b4d008b560489550089cec745 *f898df050883c5f8ff268d7600e0dc0508020000001500ffff8d45f43b4354720883c7083b7b5c *760ac7436c02000000ff63f8c745f8d46d10088975fcc747fca8df05088b4e04890f8b56088955 *f48d77fc83c5f4eb8e89f6d4dc0508020000001500ffff8d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f8dcdf05088b46048947fc8b460889078d *47f88945f4be14a9110883c5f0e997310a008d760044d7050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f404d21108be08c8110883c5f0e95f310a008d760044 *d7050800000200120001408d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f880e005088d4ff8894df4be5ca9110883c5f0e912310a0089f6c8dc05 *08020000001500ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747ec28e005088b46048947f08b46088947f4c747f8b8e005088d47ec8945f48d *47f88945f0be44d1110883c5ece9b9340a0090a8d7050804000100050000000b00ffff8d45f83b *4354720883c7403b7b5c760ac7436c10000000ff63fcc747c4c0d705088b45008947c8c747d048 *d905088b46088947d48d47c48947d8c747dc60dc05088b46048947e08b460c8947e48b46108947 *e88d47c48947ec8d47d08947f08b46148947f4c747f804e105088b46048947fc8d47d089078d47 *dc8945008d47f88945fc8b760c83c5f8e91a340a0089f61cd70508180000000388cd001cd70508 *1700000003884d001cd705081700000003884c001cd705081700000003884c001cd70508140000 *0003080c0064d7050800000200120001008d45f03b4354720883c7083b7b5c760ac7436c020000 *00ff63f8c745f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883 *c5f0e9802f0a001cd7050814000000030808001cd7050814000000030008001cd7050814000000 *030008001cd70508140000000300080001000000240000008b7608e9402f0a0068d70508010001 *00130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee4a81108c745 *f0c0e2050883c5f0ff2620d7050800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b918f71008894df4bed4d1110883c5f0e9ef2c0a008d7600ace2050801000100 *1300ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975 *fcc747ecd4e205088b46048947f0c747f80ce305088d47ec8945f48d47f88945f0bee4d1110883 *c5ece97b320a008d7600a0e20508020000001500ffff8d45ec3b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f848e305088b46088947fc8d47f88945f48b *46048945f0bee4d1110883c5ece922320a0089f620d7050800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b92cf71008894df4bed4d1110883c5f0e9fb2b0a008d *760094e20508020000001500ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c745f8d46d10088975fcc747eca8e305088b46048947f08b46088947f4c747f800e405088d47 *ec8945f48d47f88945f0bee4d1110883c5ece981310a009088e20508020000001500ffff8d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f83ce405 *088b46048947fc8b460889078d47f88945f4bed0d5110883c5f0e91f2d0a008d76002ce2050803 *0000001200ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec44e20508c747f8a0e405088b46048947fc8b460889078d47ec8945f48d47f889 *45f08b760c83c5ece9c8300a0058d7050801000100130001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4be8cd3110883c5f0e9882c0a0020e20508040000001200ffff8d *45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8f8 *e405088b46048947ec8b46088947f08b46108947f4c747f858e505088b460c8947fc8d47e88945 *f48d47f88945f0be3ca9110883c5ece925300a009014e2050804000100040000000b00ffff8d45 *f83b4354720883c7203b7b5c760ac7436c08000000ff63fcc747e48c6b10088b46108947e88b45 *008947ecc747f08ce505088b46048947f48b46088947f88b45008947fc8b460c89078d47e48945 *008d47f08945fc8b760c83c5f8e9b22f0a0089f65cd7050803000000120001008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b088b4604 *8947fcc70700d211088b460c8945f48b46088945f08d47f88945ec83c5ece957ecffff8d760008 *e2050804000100050000000b00ffff8d45f83b4354720883c7243b7b5c760ac7436c09000000ff *63fcc747e000e605088b45008947e48b46088947e88b460c8947ec8b46108947f0c747f470e605 *088b46048947f88b45008947fc8b460889078d47e08945008d47f48945fc8b761483c5f8e9d82e *0a00fce10508060000001200ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c745f8d46d10088975fcc747ecd4e605088b46048947f08b46088947f48b460c8947f88b4610 *8947fc8b461489078b46188945f48d47ec8945f0be4ca9110883c5ece96b2e0a008d76009cd705 *08080000001200ffff8d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d4 *6d10088975fcc747d06ce105088b46048947d48b46088947d88b46108947dc8b46148947e08b46 *208947e4c747e848e705088b46088947ec8b460c8947f08b46108947f48b46148947f88b461889 *47fc8b461c89078d47d08945f48d47e88945f08b761883c5ece9d22d0a0089f644d70508010001 *00130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f004d21108 *be08c8110883c5ece9952d0a009090d70508050000002400ffff83c7303b7b5c760ac7436c0c00 *0000ff63f8c747d4b8e705088b450c8947d88b45088947dc8b45148947e08b46088947e48b460c *8947e88b46048947ec8b45108947f08b45048947f4c747f850e805088b450c8947fc8d47d48945 *148d47f88945108b760883c50ce91b2d0a008d760084d7050818000500000000001100ffff8d45 *fc3b43547308bee4a91108ff63fcbedcd21108c745fc8ce8050883c5fcff268d7600e4d11108d4 *d1110864c8110834e9050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b94cf71008894df4bed4d1110883c5f0e9b3260a008d760030e9050801000100130003 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f848e905088d4ff8894df48b56048955f0bee4d1110883c5ece94c2c0a0034e905080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950f71008894df4bed4d111 *0883c5f0e927260a008d760030e9050801000100130003008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec84e905088b46048947f0c747f8d4e9 *05088d47ec8945f48d47f88945f0bee4d1110883c5ece9b32b0a008d760030e905080b00020000 *000000110007008d45fc3b4354720883c70c3b7b5c760fbe04aa1108c7436c03000000ff63fcc7 *47f810ea05088b4d04894ffc8d57f8895504be64c8110883c5fce9612b0a009048d11108dcd211 *08ecd51108c4a8110824a91108b4ea050800000200120019008d45ec3b43547303ff63f8c745f8 *d46d10088975fcc745f4c4a81108c745f024a91108be48d1110883c5ece9102b0a00b4ea050800 *00000024001d0083c70c3b7b5c760ac7436c03000000ff63f8c747f8d4ea05088d47f8894500c7 *45fcecd511088b760483c5f8e9d32a0a008d7600b4ea05080000020018001f008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8dd120a0083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcbedcd21108c745f410eb050883c5f4ff26e4 *d11108d4d111081cc8110864c81108dcd2110898d51108e4d5110880d51108bcd3110870d01108 *0caa1108000000002400000083c7083b7b5c760ac7436c02000000ff63f8c747fcb8050c08c707 *010000008d47fc8945008b762483c5fce900260a00c4eb050800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcbebcd31108c745f4d8eb050883c5f4ff2689f60100000024 *0000008b7608e9bc250a0001000000240000008b7608c7450044ec0508ff26c4eb050801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f0 *54ec050883c5f0ff26a8eb050800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b958f71008894df4bed4d1110883c5f0e957230a008d7600a4eb05080100010013 *0003018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec6cec05088b46048947f0c747f8a4ec05088d47ec8945f48d47f88945f0bee4d1110883c5 *ece9e3280a008d7600a4eb050802000000150007018d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8e0ec05088b46048947fc8b46088945f48d47 *f88945f0be1cc8110883c5ece98a280a0089f6a4eb05080300000012000f018d45ec3b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f840ed05088b460889 *47fc8b460c89078d47f88945f48b46048945f0be64c8110883c5ece92d280a0090c0eb05080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be80d5110883 *c5f0e9ec230a00bceb050801000100130003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8f4ed05088b4e04894ffc8d57f88955f4bee4d511 *0883c5f0e99c230a0083c7183b7b5c760ac7436c06000000ff63f8c747ec28ee05088b450c8947 *f0c747f88c6b10088b45048947fc8b450c89078d47ec8945188d47f8894514be70d0110883c510 *e95e270a0089f602000000240000008b7614e94c270a00c4eb050802000000150001008d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4bebcd31108c745ecc0ee *050883c5ecff2689f683c70c3b7b5c760ac7436c03000000ff63f8c747f8d4ee05088b45188947 *fc8b4d10890f8d57f88955188b750883c514e91b0100008d760008ef05086cee0508bceb050806 *00000025000f00bceb050804000100060000000b000f008d45e83b43547303ff63fc8b46188945 *ec8b46148945f08b46108945f48b460c8945f88b46088945fc8b45008b4e04894d0089c6c745e8 *54ef050883c5e8ff26b8eb050801000100130001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4be98d5110883c5f0e930220a00b8eb05080600000024001f0083c7283b7b *5c760ac7436c0a000000ff63f8c747dc64ef05088b45108947e08b45148947e48b45188947e88b *450c8947ec8b45088947f08b45048947f4c747f8b0ef05088b450c8947fc8d47dc8945188d47f8 *8945148b760483c510e9cf250a008d7600a4eb05080b000200030000000b00ff038d45ec3b4354 *720883c7103b7b5c760ac7436c04000000ff63fcc747f498ed05088b45008947f88b45048947fc *8b460889078b460c8945f08975f48d47f48945f88b46048945fcbedcd21108c745ece4ef050883 *c5ecff2604000100020000000e0000008d45fc3b43547303ff63fc8b4e08894dfc8b760483c5fc *eb838d7600cceb0508430000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f8bc *f005088b450c8947fc8b4d04890f8d57f889550cc745080caa11088b760483c504e9f4240a00a4 *eb050816000300000000001100ff078d45fc3b4354720883c71c3b7b5c760fbe1caa1108c7436c *07000000ff63fcc747e814ec0508c747f458f005088d47e88947f88b45048947fc8b450889078d *47f4894508bedcd21108c745fce4f0050883c5fcff268d760080d11108bcd3110878d31108be00 *d2110883c50c8b4500ff60f089f601000100130000008d45f43b43547303ff63f8c745f8d46d10 *088975fcc745f400d211088b760483c5f4e9cd0200009083c7183b7b5c760ac7436c06000000ff *63f8c747ecacf105088b450c8947f0c747f87cdc0b088b45048947fc8d47ec89078d77f883c510 *8b4500ff60ec8d760083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45108947 *f08b45048947f4c747f87cdc0b088b45088947fc8d47ec89078d77f883c5148b4500ff60ec9002 *000000150000008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d811 *12088b760883c5f0e9ef0800008d7600050000002400000083c7303b7b5c760ac7436c0c000000 *ff63f88b460483f87d755ac747d460f205088b45048947d88b45108947dcc747e07cdc0b08c747 *e4400d12088d47d48947e8c747ec7cdc0b08c747f0c00a12088d47e08947f4c747f87cdc0b08c7 *47fc700a12088d47ec89078d77f883c5188b4500ff60ecc747d48c6b10088b45148947d88b4508 *8947dcc747e07cdc0b088b450c8947e48d47d48947e88d77e083c51883c7e88b4500ff60ec8d76 *008b46088945008b7604c745fc98f2050883c5fcff268d760044f3050814f20508000000000400 *000025000000050000002400000083c7183b7b5c760ac7436c06000000ff63f88b460483f82d75 *128b7504c7450470f3050883c50483c7e8ff26c747ec8c6b10088b45148947f08b45088947f4c7 *47f87cdc0b088b450c8947fc8d47ec89078d77f883c5188b4500ff60ec8d76008b46088945fc89 *75008b7604c745f878f3050883c5f8ff26d8f30508d4f105080000000003000000250000000300 *00002400000083c7183b7b5c760ac7436c06000000ff63f88b460483f82375148b450489750489 *c6c7450004f4050883c7e8ff26c747ec8c6b10088b450c8947f08b45048947f4c747f87cdc0b08 *8977fc8d47ec89078d77f883c5108b4500ff60ec8b46088945008b7604c745fc0cf4050883c5fc *ff268d760068f4050894f1050800000000020000002500000004000100010000000c0000008d45 *ec3b43547303ff63fc8b4e04894dfc8b550089750089d6c745f894f4050883c5f8ff268d7600be *00d2110883c5108b4500ff60f089f6c7450c00d211088b750483c508e99206000089f601000000 *240000008b4504894500c74504aca811088b760c83c5fce908210a008cf1050801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f0f4f405 *0883c5f0ff268cf10508040000002400010083c70c3b7b5c760ac7436c03000000ff63f88b4604 *83f87d7524c747f818f505088b450c8947fc8b45048945108d47f889450c8b750883c50ce9ee05 *00008b750883c50c83c7f4e9e00500008b460889450089750c8b7604c745fc50f5050883c5fcff *269cf50508d8f405088cf1050883000000250001008cf1050803000000240001008b460483f82d *750c8b750cc74500c8f50508ff268b750483c508e989050000908b460889450c8b7604c74500d4 *f50508ff2689f6f4f50508c8f405088cf1050883000000250001008cf105080300000024000100 *8b750cc745001cf60508ff26ebf289f602000000150000008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e08894df4c745f0d81112088b760483c5f0e90f0500008d760083c7183b7b5c *760ac7436c06000000ff63f8c747ec40f605088b45048947f08b46088947f4c747f87cdc0b088b *46048947fc8d47ec89078d77f883c5108b4500ff60ec9070f6050834f605088cf1050803000000 *250001008cf105080300000024000100837e0400750c8b750cc74500c8f60508ff26e93dffffff *908cf1050803000000240001008b7508c74500d4f60508ff26ebf289f6ebee89f6010000002400 *00008b4504894500c74504aca811088b761483c5fce9e81e0a008cf1050801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f014f7050883 *c5f0ff268cf10508040000002400010083c70c3b7b5c760ac7436c03000000ff63f88b460483f8 *2d7524c747f838f705088b450c8947fc8b45048945108d47f889450c8b750883c50ce9ce030000 *83c50483c7f4e93fffffff8d76008b46088945008b7604c745fc70f7050883c5fcff268d7600bc *f7050808f705088cf1050803000000250001008cf1050804000000240001008b460483f87b750f *8b7504c74504e8f7050883c504ff2683c504e9e5feffff908b46088945008b7604c745fcf4f705 *0883c5fcff268d760014f8050804f705088cf1050803000000250001008cf10508030000002400 *01008b750cc7450040f80508ff2683c508ebef8d7600ebea89f602000000240000008b45088b4d *04894d088945048b7604e9941d0a0088f1050804000100010000000c0001008d45f83b43547303 *ff63fc8b4e04894dfcbe80d11108c745f86cf8050883c5f8ff2689f688f1050801000100130005 *008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747 *fc90f80508c707a80912088b4e04894df48d57fc8955f0be78d3110883c5ece90a1d0a0089f688 *f10508040000002400070083c70c3b7b5c760ac7436c03000000ff63f88b460483f82d7525c747 *f8c0f805088b4d04894ffc8d57f8895510c7450cd81112088b750883c50ce92502000083c50483 *c7f4e9eafeffff89f68b46088945008b7604c745fc18f9050883c5fcff268d760064f9050860f8 *050888f10508030000002500070083c508e9b4feffff83c508e9acfeffff83c50ce9a4feffff83 *c7303b7b5c760ac7436c0c000000ff63f8c747d48c6b10088b450c8947d88b45048947dcc747e0 *7cdc0b08c747e4700a12088d47d48947e8c747ec7cdc0b08c747f0c00a12088d47e08947f4c747 *f87cdc0b08c747fc300d12088d47ec89078d77f883c51c8b4500ff60eca8f90508a0f905088cf1 *050846000000250001008cf1050806000000240001008b460483f823750c8b7508c7450028fa05 *08ff2683c50ce9fcfdffff8b46088945008b7604c745fc34fa050883c5fcff268d760050fa0508 *98f905088cf1050805000000250001008cf1050806000000240001008b460483f82d750f8b7504 *c745047cfa050883c504ff2683c50ce9a5fdffff908b46088945008b7604c745fc88fa050883c5 *fcff268d7600a8fa050890f905088cf10508050000002500010088f1050806000000240007008b *460483f87b7d1483f82d75238b7504c7450c90f9050883c50cff2683f87b750f8b7504c74504d4 *fa050883c504ff2683c50ce934fdffff8b46088945008b7604c745fce0fa050883c5fcff268d76 *0018fb050858f8050888f10508050000002500070088f105080500000024000700837e0400750c *8b7514c7450044fb0508ff2683c508e9e2fcffff89f688f105080b000200020000000e0007008d *45ec3b43547303ff63fc8975fc8b4e08894df48b56048955f88b7500c745f050fb050883c5f0ff *268d760088f105080b000200000000001100070083c7143b7b5c760fbe24aa1108c7436c050000 *00ff63fcc747f0a0f405088d47f88947f4c747f87cfb05088d4ff0894ffc8b55008917c74500d8 *1112088d77f8eb8289f6e4d11108dcd11108c4d11108d4d11108b4d3110844d11108e0d1110830 *c91108c4d01108dcd21108c8d5110878d3110890d3110898d31108acd01108a4d0110824aa1108 *50d51108b4a81108f4a8110804a9110824a91108fcfb050816000000ffff3f00fcfb0508020000 *00150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be *e4d1110883c5ece97a190a0089f6fcfb050802000000150001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df48b56048955f0bee4d1110883c5ece93e190a0089f6fcfb0508 *02000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b560489 *55f0bee4d1110883c5ece902190a0089f6fcfb0508030000002400010083c7343b7b5c760ac743 *6c0d000000ff63f8c747d06cfc05088b45048947d48b460c8947d8c747dca8fc05088b45088947 *e08b46088947e4c747e8e4fc05088b450c8947ec8b46048947f0c747f4fcbb0b088d47e88947f8 *8d47dc8947fc8d47d089078d77f483c510ff6500fcfb050801000000240001008b460c8945fc8b *46088945008b45048b4e04894d0489c6c745f820fd050883c5f8ff2690fcfb05080b0002000000 *01000b0001008d45f83b43547303ff63fc8b7500c7450098fd0508ff269004fc05081100000043 *00010004fc0508110000004300010083c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b *08c747f800d21108c747fc00d21108c70700d211088d77f483c504ff650089f608fc0508000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b95cf71008894df4bed4 *d1110883c5f0e9bb110a008d760004fc0508110000004300010008fc050800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b964f71008894df4bed4d1110883c5f0 *e973110a008d760004fc0508110000004300010008fc050800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b970f71008894df4bed4d1110883c5f0e92b110a008d *760004fc0508110000004300010008fc050800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b980f71008894df4bed4d1110883c5f0e9e3100a008d760004fc0508 *110000004300010008fc050800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b990f71008894df4bed4d1110883c5f0e99b100a008d760004fc0508110000004300 *010008fc050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *9cf71008894df4bed4d1110883c5f0e953100a008d760083c7103b7b5c760ac7436c04000000ff *63f8c747f4fcbb0b08c747f800d21108c747fc00d21108c70700d211088d77f483c50cff650089 *f683c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b08c747f800d21108c747fc00d211 *088b450489078d77f483c50cff65008d760010000608d8ff050800000000420000002500000083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8a8ff05088b45088945fc8d4ff8894df8bec4d1 *1108c745005c00060883c5f4e97f150a008d7600bee0d0110883c5048b4500ff60f089f683c708 *3b7b5c760ac7436c02000000ff63f8c747fc94b90b088b450489078d77fc83c50c8b4d00ff61ec *89f6bee0d0110883c50c8b4500ff60f089f6d4000608a80006080000000042000000250000008b *7508c74500f8000608ff2683c7083b7b5c760ac7436c02000000ff63f8c747fc94b90b088b4504 *89078d77fc83c50c8b4d00ff61ec89f6bee0d0110883c50c8b4500ff60f089f630010608040106 *080000000042000000250000008b7508c7450054010608ff26bee0d0110883c50c8b4500ff60f0 *89f6600106085401060800000000020000002500000003000000240000008b460483f82c750f8b *7504c745048401060883c504ff26bee0d0110883c5108b4d00ff61f08d76008b46088945008b76 *04c745fc8c01060883c5fcff268d7600b4010608f8000608000000000200000025000000010000 *00240000008b46048945008b7608c745fce001060883c5fcff268d76008b46088945008b7604c7 *45fce801060883c5fcff268d7600000206089800060800000000000000002500000044fc050804 *000100000001000b0001008d45f43b43547303ff63fc8b4d00894dfcbeb4a81108c745002c0206 *0883c5f8e9a70f0a008d76001cfc050801000100130001048d45ec3b4354720883c7083b7b5c76 *0ac7436c02000000ff63f8c745f8d46d10088975fcc747fc3c0206088b4e04894df48d57fc8955 *f0bec4d0110883c5ece960130a0083c71c3b7b5c760ac7436c07000000ff63f8c747e870020608 *8b45048947ecc747f4fcbb0b088d4fe8894ff8c747fc00d21108c70700d211088d77f483c50cff *650089f6b40206085c00060890ff0508020000002500ffff83c70c3b7b5c760ac7436c03000000 *ff63f8c747f860ff05088b45088945fc8d4ff8894df8bec4d11108c745000c03060883c5f4e9cf *120a008d760083c7283b7b5c760ac7436c0a000000ff63f8c747dce4bb0b08c747e0acb111088b *45048947e4c747e87cdc0b088d4fdc894fecc747f000d21108c747f4fcbb0b08c747f800d21108 *8d57e88957fcc70700d211088d77f483c50cff65008d7600480306080c03060848ff0508020000 *002500ffff83c70c3b7b5c760ac7436c03000000ff63f8c747f818ff05088b45088945fc8d4ff8 *894df8bec4d11108c74500bc03060883c5f4e91f120a008d760083c7283b7b5c760ac7436c0a00 *0000ff63f8c747dce4bb0b08c747e0a8b111088b45048947e4c747e87cdc0b088d4fdc894fecc7 *47f000d21108c747f4fcbb0b08c747f800d211088d57e88957fcc70700d211088d77f483c50cff *65008d7600f8030608bc03060800ff0508020000002500ffff83c70c3b7b5c760ac7436c030000 *00ff63f8c747f8d0fe05088b45088945fc8d4ff8894df8bec4d11108c745006c04060883c5f4e9 *6f110a008d760083c7283b7b5c760ac7436c0a000000ff63f8c747dce4bb0b08c747e0a4b11108 *8b45048947e4c747e87cdc0b088d4fdc894fecc747f000d21108c747f4fcbb0b08c747f800d211 *088d57e88957fcc70700d211088d77f483c50cff65008d7600a80406086c040608b8fe05080200 *00002500ffff83c70c3b7b5c760ac7436c03000000ff63f8c747f888fe05088b45088945fc8d4f *f8894df8bec4d11108c745001c05060883c5f4e9bf100a008d760083c7283b7b5c760ac7436c0a *000000ff63f8c747dce4bb0b08c747e0a4b111088b45048947e4c747e87cdc0b088d4fdc894fec *c747f000d21108c747f4fcbb0b08c747f800d211088d57e88957fcc70700d211088d77f483c50c *ff65008d7600580506081c05060870fe0508020000002500ffff83c70c3b7b5c760ac7436c0300 *0000ff63f8c747f840fe05088b46048945f48d47f88945f08b46088945fc8b4604894500bec4d1 *1108c745f8cc05060883c5ece903100a008d7600cc050608fcfd0508f0fd0508000000002500ff *ffe4fd050804000100000001000b00ffff8d45ec3b43547303ff63fc8b7500c7450028060608ff *269004fc050813000000032c040004fc050813000000030c0400bee0d0110883c5048b4500ff60 *f089f608fc050800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9a4f71008894df4bed4d1110883c5f0e977090a008d760008fc05081200000001060200bee0d0 *110883c5088b4500ff60f089f608fc050800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9a8f71008894df4bed4d1110883c5f0e91f090a008d760030fc050801 *000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be98d31108 *83c5f0e9c80a0a00bee0d0110883c5088b4500ff60f089f62cfc050801000100130001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d3110883c5f0e9840a0a0083c7 *143b7b5c760ac7436c05000000ff63f8c747f05c0706088b45048947f4c747fc94b90b088d4ff0 *890f8d77fc83c5088b5500ff62ec9084070608400706082cfc0508010000002500010008fc0508 *010000002400010683c7183b7b5c760ac7436c06000000ff63f8c747ecdc060608c747f8180706 *088b45048947fc8d4fec894dfc8d57f88955f88b7608c74500d007060883c5f4e9f40d0a00be04 *a91108c74500dc070608ff2689f620080608c0060608b4060608010000002500ffff83c70c3b7b *5c760ac7436c03000000ff63f8c747f8840606088b46048945f88d4ff8894df48b5608895500be *c4d11108c745fc4408060883c5f0e9910d0a009044080608680606085c060608000000002500ff *ff5006060804000100000001000b00ffff8d45f03b43547303ff63fc8b4d00894dfcbea4d01108 *c745009808060883c5f8e93b090a008d7600befcd1110883c5048b4500ff60f089f60000000024 *0000008b460483f823750ebefcd1110883c5048b4d00ff61f0be04d2110883c5048b5500ff62ec *8b7604c74500e8080608ff260c090608d008060800000000000000002500000004000100000001 *000b0000008b7500c745002c090608ff2600fc0508150000007da6150000fc0508150000007da4 *150000fc0508130000007da4050008fc0508110000001f69010008fc0508110000001f69010008 *fc0508110000001f69010008fc0508110000001f69010008fc0508110000001d69010008fc0508 *110000001528010008fc0508110000001520010008fc0508110000001100010008fc0508000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9acf71008894df4bed4 *d1110883c5f0e927060a008d76008b750483c50cff268b45088b4d04894d08894504be30c91108 *e9f20b0a0089f60c0a0608040a060818fc05080200000025000100bc090608020000001500ffff *8d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *d40906088b46048945e88d47f88945e48b46088945f08b46048945f4bef4a81108c745ec380a06 *0883c5e0e9790b0a00903cfc050800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fcc745f404d21108be24aa110883c5f0e937070a008d7600b0090608020000001500ffff *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *440a06088b46048947f08b46088947f4c747f8a80a06088d47ec8945f48d47f88945f0be44d111 *0883c5ece9dd0a0a0090a4090608020000001500ffff8d45ec3b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8e00a06088b46048947fc8b460889078d47 *f88945f4c745f0acd01108be44d1110883c5ece9800a0a0028fc050800000200120041008d45f0 *3b43547303ff63f8c745f8d46d10088975fcc745f450d51108be78d3110883c5f0e93f060a008d *760014fc050800000200120021088d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8a00b06088d4ff8894df4bee0d1110883c5f0e9f2050a0089f6 *98090608020000001500ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec440b06088b46048947f08b46088947f4c747f8d80b06088d47ec89 *45f48d47f88945f0be44d1110883c5ece999090a00900cfc050801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4beb4d3110883c5f0e958050a008c090608 *030000001200ffff8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ec240c06088b46088947f08b460c8947f4c747f8880c06088b46048947fc8d47 *ec8945f48d47f88945f0be44d1110883c5ece9fb080a008d760014fc050801000100130001008d *45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee0d1110883c5f0e9b8040a00 *80090608040000001200ffff8d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c7 *45f8d46d10088975fcc747e8bc0c06088b46088947ec8b460c8947f08b46108947f4c747f8280d *06088b46048947fc8d47e88945f48d47f88945f0be44d1110883c5ece955080a00907409060804 *0000001200ffff8d45ec3b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10 *088975fcc747f05c0d06088b46048947f48b46088947f88b460c8947fc8b461089078d47f08945 *f4c745f0a0a81108be44d1110883c5ece9ec070a0014fc050801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4bee0d1110883c5f0e9ac030a006809060805 *0000001200ffff8d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10 *088975fcc747e4cc0d06088b46088947e88b460c8947ec8b46108947f08b46148947f4c747f834 *0e06088b46048947fc8d47e48945f48d47f88945f0be44d1110883c5ece943070a008d760000fc *050801000100130001008d45ec3b4354720883c7103b7b5c760ac7436c04000000ff63f8c745f8 *d46d10088975fcc747f4fcbb0b08c747f800d21108c747fc00d21108c70700d211088d4ff4894d *f48b56048955f0bedcd1110883c5ece9dc060a005c090608060000001200ffff8d45ec3b435472 *0883c7243b7b5c760ac7436c09000000ff63f8c745f8d46d10088975fcc747e0680e06088b4608 *8947e48b460c8947e88b46108947ec8b46148947f08b46188947f4c747f8e00e06088b46048947 *fc8d47e08945f48d47f88945f0be44d1110883c5ece961060a0090500906080400010005000000 *0b00ffff8d45f83b4354720883c71c3b7b5c760ac7436c07000000ff63fcc747e8440f06088b46 *048947ec8b46088947f08b460c8947f48b46108947f88b46148947fc8b450089078d47e8894500 *c745fc24a91108be44d1110883c5f8e9f2050a0089f624fc050801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4bec8d5110883c5f0e9b0010a0044090608 *050000002400ffff83c7243b7b5c760ac7436c09000000ff63f8c747e0c40f06088b45108947e4 *8b450c8947e88b45088947ec8b45048947f08b45148947f4c747f8301006088b45148947fc8d47 *e08945148d47f88945108b760483c50ce955050a009054fc050804000100000000001100ffff8d *45ec3b4354720883c7203b7b5c760fbe2caa1108c7436c08000000ff63fcc747e4ccfd0508c747 *ec38060608c747f4a8080608c747fc380906088d47fc8945f08d47f48945f48d47ec8945f88d47 *e48945fcbedcd21108c745ec6410060883c5ecff26d4d111083411060800000200180001008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8e9ec090083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8b4f710088945f4bed4d111 *0883c5f0e98bfe09008d7600e4d11108d4d11108b4d3110844d1110834a91108e4a8110804a911 *0834aa1108bc11060801000000240001008b4504894500c7450434aa11088b760483c5fce93004 *0a00b811060804000100000001000b0003008d45f83b43547303ff63fcbe04a91108c745fccc11 *060883c5fcff26a811060801000100130031008d45ec3b4354720883c7083b7b5c760ac7436c02 *000000ff63f8c745f8d46d10088975fcc747fcf41106088b4e04894df48d57fc8955f0beb4d311 *0883c5ece9b4030a00a8110608010000002400310083c70c3b7b5c760ac7436c03000000ff63f8 *c747f81c1206088b45048947fc8d4ff8894d048b7608e96fff09008d7600a81106080100010013 *0039008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee4a81108c745f06c *12060883c5f0ff26a411060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9c8f71008894df4bed4d1110883c5f0e91bfd09008d7600a0110608010001001300 *e7008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc7 *47eca81206088b46048947f0c747f8e01206088d47ec8945f48d47f88945f0bee4d1110883c5ec *e9a7020a008d7600a011060804000100000000001100ff008d45f83b4354720883c70c3b7b5c76 *0fbe44aa1108c7436c03000000ff63fcc747f81c1306088b4d00894ffc8d57f8895500c745fc34 *a91108be44d1110883c5f8e94e020a0089f6d4d11108c813060800000200180001008d45f03b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e855ea090083c4048d47 *f8894604c706245b1008c745f8d46d10088d47f88945fc90b808f810088945f4bed4d1110883c5 *f0e9f7fb09008d7600ecd01108b8d1110844d1110844c8110804a9110834aa11084caa11084814 *060801000000240001008b4504894500c7450434aa11088b760883c5fce9a0010a004414060801 *000100130003008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be04a91108 *c745f05c14060883c5f0ff264014060801000100130001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4be44c8110883c5f0e928fd0900341406080100010013000d008d45 *ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b814 *06088b4e04894ffc8d57f88955f4c745f0ecd01108be44d1110883c5ece9dd000a009034140608 *0100000024004d0083c70c3b7b5c760ac7436c03000000ff63f8c747f8ec1406088b45048947fc *c745044caa11088d4ff8894d008b760883c5fce999000a0090341406080100010013005d008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be04a91108c745f04415060883c5 *f0ff2634140608040001000000000011007f008d45f83b4354720883c7183b7b5c760fbe5caa11 *08c7436c06000000ff63fcc747ec801406088b45008947f0c747f8881506088b45008947fc8d47 *ec8945008d47f88945fcbeb8d1110883c5f8e9feff090089f6e4d11108d4d1110844d1110834a9 *11084caa11081c16060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b910f81008894df4bed4d1110883c5f0e9c3f909008d7600181606080000020012001300 *8d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *38160608c745f44caa11088d4ff8894df0bee4d1110883c5ece95bff09008d7600181606080000 *020018001f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c1008 *56e865e7090083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f87416 *06088d47f88945f4c745f034a91108be44d1110883c5ece9e8fe0900e4d11108d4d11108b4d311 *0844d11108dcd2110868d5110864aa110844aa110804a9110894a9110834aa11084caa11085caa *1108be64aa110883c508e92ff009008d7600be64aa110883c510e91ff009008d76008b75108b45 *0489451083c50ce977fa09008d7600801706087017060844170608c4000000250001008b450489 *45fcc74500a817060883c5fce907feffff8d76003017060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b978f81008894df4bed4d1110883c5f0e92ff809008d *76002c17060800000200120003088d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8cc170608c745f44caa11088d4ff8894df0bee4d1110883c5ec *e9c7fd09008d76002c1706080000020012000b0a8d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8081806088d4ff8894df4c745f094a91108be44 *d1110883c5ece973fd09008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b1008 *8b45108947f08b45048947f4c747f85c1806088d47ec8945108b750c8d47f889450c83c508e92d *fd090090a4180608a81706082c1706084400000025004b1a2c1706084400000024004b1ec745fc *34aa11088b45048945f88b7608c74500fc18060883c5f4e9edfc090090be04a91108c745000819 *0608ff2689f683c7183b7b5c760ac7436c06000000ff63f8c747ec7cdc0b088b45048947f0c747 *f400d21108c747f87cdc0b088b45088947fc8d47ec89078d47f889451483c514e902faffff89f6 *2c17060801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f87cdc0b08c747fc680a1208c70700d211088d4ff8894df48b560489 *55f0bee4d1110883c5ece937fc09008d76003017060800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9c4f81008894df4bed4d1110883c5f0e90ff609008d7600 *2c17060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec8c1906088b46048947f0c747f8ec1906088d47ec8945f48d47f889 *45f0bee4d1110883c5ece99bfb09008d76002c1706080100010013000b028d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8281a06088b4e04894f *fc8d57f88955f4c745f094a91108be44d1110883c5ece941fb09009083c7183b7b5c760ac7436c *06000000ff63f8c747ec8c6b10088b45148947f08b45088947f4c747f8881a06088b45088947fc *8d47ec8945148b75108d47f889451083c50ce9f7fa09008d7600d41a0608381906082c17060885 *00000025008b02c745fc34aa11088b45048945f88b750cc74500341b060883c5f4e9c1fa090090 *2c17060801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f87cdc0b08c747fc680a1208c70700d211088d4ff8894df48b560489 *55f0bee4d1110883c5ece963fa09008d76003017060800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b91cf91008894df4bed4d1110883c5f0e93bf409008d7600 *2c17060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec601b06088b46048947f0c747f8c01b06088d47ec8945f48d47f889 *45f0bee4d1110883c5ece9c7f909008d76002c1706080100010013000b028d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fc1b06088b4e04894f *fc8d57f88955f4c745f094a91108be44d1110883c5ece96df909009083c7183b7b5c760ac7436c *06000000ff63f8c747ec8c6b10088b45148947f08b45048947f4c747f85c1c06088b45048947fc *8d47ec8945148b75108d47f889451083c50ce923f909008d7600a81c0608341b06082c17060805 *00000025008b062c1706088500000024008b06c745fc34aa11088b45088945f88b4e08894d0c8b *7608c74500081d060883c5f4e9dbf809008d7600be04a91108c74500141d0608ff2689f68b450c *89451483c514e926f6ffff89f64c1d06083c1d06082c1706080500000025008b078b4604894500 *8b7608c745fc701d060883c5fcff268d7600701d0608281906082c170608040000002500cb1f8b *46048945fc8975008b7608c745f89c1d060883c5f8ff269c1d0608601706082c17060802000000 *2500cb1f2c17060804000100020000000e00cf1f8d45e03b43547303ff63fc8b45008945f4c745 *f05caa11088b46088945fc8b4604894500beb4d31108c745f8c81d060883c5ece904f809004017 *060801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be68 *d5110883c5f0e9c4f309002c170608010000002400ef1f83c7183b7b5c760ac7436c06000000ff *63f8c747ecd81d06088b460c8947f08b46088947f4c747f81c1e06088b45048947fc8d47ec8945 *048d47f88945008b760483c5fce97bf709008d76002c17060804000100000000001100ff1f8d45 *f83b43547308be74aa1108ff63fcbedcd21108c745fc501e060883c5fcff268d7600dcd2110888 *d5110874aa1108d41e06080000000024000300c7450074aa1108c745fc88d511088b760483c5f8 *e913f709008d7600d01e060800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e81ddf090083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcbedcd21108c745f4e81e060883c5f4ff26d4d11108641f06080000020018 *0001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b9 *de090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b874f910088945 *f4bed4d1110883c5f0e95bf009008d7600e4d11108d4d11108ecd0110864c8110844c81108dcd2 *110868d5110834a9110804a911088caa1108be00d2110883c50c8b4500ff60f089f6e01f060801 *000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be44c81108 *83c5f0e9ccf10900d81f060801000100130005008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8142006088b4e04894ffc8d57f88955f4beecd0 *110883c5f0e97cf109008b45048945108b750c83c510e93b0100008d7600dc1f06080200000015 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be64c8 *110883c5ece93af5090089f683c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b45 *0c8947e48b45048947e8c747ecac2006088b45108947f08b45088947f4c747f87cdc0b088d47ec *8947fc8d47e089078d77f883c5148b4500ff60ec89f6dc2006088c200608dc1f06080400000025 *000100d81f0608040000002400870083c70c3b7b5c760ac7436c03000000ff63f8c747f8482006 *088b45088947fcc745fc8caa11088d4ff8894df88b7608c745004821060883c5f4e982f4090089 *f68b46088945fc8b4e04894d00be04a91108c745f85421060883c5f8ff268d760094210608f81f *0608d81f0608020000002500c700d81f060804000100010000000c00c7008d45e43b43547303ff *63fc8975fc8b4d008b560489550089cec745f8c821060883c5f8ff268d76008b7504c74504e0d0 *1108e9f9ef09009083c7083b7b5c760ac7436c02000000ff63f8c747fc94b90b088b450489078b *75088d4ffc894d0883c504e9c9ef090090d41f060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b980f91008894df4bed4d1110883c5f0e9afed09008d7600d0 *1f060800000200120003028d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f84c220608c745f48caa11088d4ff8894df0bee4d1110883c5ece947f3 *09008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8882206088d47f889450883c508 *e9dd97ffff90d022060810220608d01f060802000000250083028b46048945008b7608c745fc0c *23060883c5fcff268d76000c23060800220608d01f06080100000025008302d01f060804000100 *020000000e009f038d45f83b4354720883c7083b7b5c760ac7436c02000000ff63fcc747fcd821 *06088b460489078b45008945f88b46088945008d77fcc745fc3823060883c5f8e94cfeffffe81f *060801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be68 *d5110883c5f0e948ee0900d01f0608010000002400df0383c7183b7b5c760ac7436c06000000ff *63f8c747ec482306088b45048947f08b460c8947f4c747f8982306088b45048947fc8d47ec8945 *048d47f88945008b760483c5fce9fff109008d7600d01f060804000100000000001100ff038d45 *f83b43547308be9caa1108ff63fcbedcd21108c745fccc23060883c5fcff268d7600dcd2110888 *d511089caa1108502406080000000024000300c745009caa1108c745fc88d511088b760483c5f8 *e997f109008d76004c24060800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8a1d9090083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcbedcd21108c745f46424060883c5f4ff26e900000000833db4aa11080075 *50c705b4aa110801000000c745003519050883c504c7450035d2040883c504c7450004aa0b0883 *c504c7450004a10b0883c504c74500f0440c0883c504c74500f8400c0883c504c7450090310c08 *83c50483c5fcff650044d1110848d1110854d111088cd31108be00d2110883c5088b4500ff60f0 *89f602000000240000008b068b40fcc1e81083f80d754483c7183b7b5c760ac7436c06000000ff *63f8c747ec8c6b10088b45088947f08b45048947f4c747f87cdc0b08c747fc0cd211088d47ec89 *078d77f883c50c8b4500ff60ec8b75088b450489450883c508eb39908b46088945008b7604c745 *fc6c25060883c5fcff268d7600cc25060854250608000000000100000025000000040001000000 *01000b0000008d45f83b43547303ff63fc8b4d0089750089cec745fcf825060883c5fcff269001 *000100130000008d45f43b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10 *088975fcc747fc042606088b4e04894df48d77fc83c5f4eb9f8d76004825060800000200120007 *008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f48cd31108c745f054d11108be48d1 *110883c5ece970ef090044250608040001000000000011000f008d45f83b4354720883c7183b7b *5c760fbeb8aa1108c7436c06000000ff63fcc747ec2c2606088b45008947f0c747f8742606088d *47ec8945008d47f88945fcbe44d1110883c5f8e914ef0900be00d2110883c5088b4500ff60f089 *f602000000240000008b068b40fcc1e81083f810754383c7183b7b5c760ac7436c06000000ff63 *f8c747ec8c6b10088b45088947f08b45048947f4c747f87cdc0b088b46048947fc8d47ec89078d *77f883c50c8b4500ff60ec8b75088b450489450883c508eb3a89f68b46088945008b7604c745fc *1827060883c5fcff268d7600782706080027060800000000010000002500000004000100000001 *000b0000008d45f83b43547303ff63fc8b4d0089750089cec745fca427060883c5fcff26900400 *0100000000001100000083c7083b7b5c760fbec0aa1108c7436c02000000ff63fcc747fcb02706 *088d77fcebb19048d11108be00d2110883c5088b4500ff60f089f683c7103b7b5c760ac7436c04 *000000ff63f8c747f4286107088b46048947f8c747fc801805088d4ff4890f8d77fc83c504ff25 *c46d1008900028060801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4c745f078b21108be48d1110883c5ece98ded09009083c7183b7b5c760ac7436c0600 *0000ff63f8c747ec582806088b46048947f0c747f8a01805088d4fec894ffc8b560889178d77f8 *83c504ff25c06d10088d76000028060801000100130001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4c745f078b21108be48d1110883c5ece911ed09009083c7183b7b5c *760ac7436c06000000ff63f8c747ecd42806088b46048947f0c747f8c01805088d4fec894ffc8b *560889178d77f883c504ff25bc6d10088d76000429060888280608142806080028060800000000 *250001000028060801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b76 *04c745f45c29060883c5f4ff2600280608020000002400010083c7383b7b5c760ac7436c0e0000 *00ff63f8c747cc8c6b10088b45088947d08b45048947d4c747d8682906088b460c8947dcc747e4 *e01805088b46048947e88b46088947ec8d47d88947f08b46108947f4c747f87cdc0b088d47e489 *47fc8d47cc89078d77f883c50c8b4500ff60ec908b46088945008b7604c745fc9829060883c5fc *ff268d7600082a0608042806080028060801000000250001000028060804000100000001000b00 *01008d45f83b43547303ff63fc8b4d0089750089cec745fc342a060883c5fcff26900028060804 *000100000000001100010083c7083b7b5c760fbec4aa1108c7436c02000000ff63fcc747fc442a *06088d77fcebad90d4d11108982a060800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9a0f91008894df4bed4d1110883c5f0e953e509008d7600982a06080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b4f91008894df4be *d4d1110883c5f0e917e509008d7600982a060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9bcf91008894df4bed4d1110883c5f0e9dbe409008d7600982a06 *0800000200180001008d45f83b4354720883c7583b7b5c760ac7436c16000000ff63f8c747ac08 *5c100856e8d1d2090083c4048d47ac894604c706245b1008c745f8d46d10088d47ac8945fcc747 *b8a82a0608c747c480180508c747c86cb21108c747cce42a0608c747d87cdc0b088d47cc8947dc *c747e000d21108c747e4202b0608c747f0e01805088d47e48947f48d47d88947f88d47c48947fc *8d47b889078d77f083c5f8e9d5410a0090d4d11108ccaa1108002c060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c0f91008894df4bed4d1110883c5f0e9 *e7e309008d7600002c060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9f0f91008894df4bed4d1110883c5f0e9abe309008d7600002c060800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b908fa1008894df4bed4d1110883 *c5f0e96fe309008d7600002c060800000200180003008d45f83b4354720883c7543b7b5c760ac7 *436c15000000ff63f8c747b0085c100856e865d1090083c4048d47b0894604c706245b1008c745 *f8d46d10088d47b08945fcc747bc7cdc0b08c747c0ccaa1108c747c400d21108c747c8142c0608 *c747d4502c0608c747e08c2c0608c747ecd85f07088d47e08947f08d47d48947f48d47c88947f8 *8d47bc8947fcc707e4b111088d77ec83c5f8e96f400a008d76008cd4110830d41108682d060800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8b1d0090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f48c *d41108be30d4110883c5f0e935e4090090d4d11108d8d01108f4aa1108d82d0608010001001300 *03008d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0f4aa1108c745ec *ecaa1108bed8d0110883c5e8e9c2ec090089f6d82d060804000100000001000b00030083c7143b *7b5c760ac7436c05000000ff63fcc747f0ec2d06088b45008947f4c747fc106107088d4ff0890f *8d77fc83c504ff6500d42d060800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b910fa1008894df4bed4d1110883c5f0e987e109008d7600d42d06080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96cfa1008894df4bed4d111 *0883c5f0e94be109008d7600d42d060800000200180007008d45f83b4354720883c7703b7b5c76 *0ac7436c1c000000ff63f8c74794085c100856e841cf090083c4048d4794894604c706245b1008 *c745f8d46d10088d47948945fcc747a0342e0608c747a8742e0608c747b47cdc0b08c747b8c80c *1208c747bc00d21108c747c0c01805088d47a08947c48d47b48947c8c747ccb02e0608c747d87c *dc0b088d47cc8947dcc747e000d21108c747e47cdc0b08c747e8080d1208c747ec00d21108c747 *f0e01805088d47e48947f48d47d88947f88d47c08947fc8d47a889078d77f083c5f8e9163e0a00 *89f6ccaa110804ab1108c02f060800000200180003008d45f83b4354720883c7243b7b5c760ac7 *436c09000000ff63f8c747e0085c100856e859ce090083c4048d47e0894604c706245b1008c745 *f8d46d10088d47e08945fcc747ec7cdc0b08c747f004ab1108c747f400d21108c747f87cdc0b08 *c747fcccaa11088d47ec89078d77f883c5f8ff25c06d100890d4d11108ccaa110804ab11084c30 *060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974fa1008 *894df4bed4d1110883c5f0e997df09008d76004c30060800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9a0fa1008894df4bed4d1110883c5f0e95bdf09008d76 *004c30060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc *fa1008894df4bed4d1110883c5f0e91fdf09008d76004c30060800000200180007008d45f83b43 *54720883c7603b7b5c760ac7436c18000000ff63f8c747a4085c100856e815cd090083c4048d47 *a4894604c706245b1008c745f8d46d10088d47a48945fcc747b07cdc0b08c747b404ab1108c747 *b800d21108c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747c864300608c747d4a0300608 *c747e0dc300608c747ecd85f07088d47e08947f08d47d48947f48d47c88947f88d47bc8947fcc7 *07e0b111088d77ec83c5f8e90b3c0a008d7600d4d11108ccaa110804ab1108cc31060800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d4fa1008894df4bed4d1 *110883c5f0e917de09008d7600cc31060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9f0fa1008894df4bed4d1110883c5f0e9dbdd09008d7600cc31060800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b924fb1008894df4 *bed4d1110883c5f0e99fdd09008d7600cc31060800000200180007008d45f83b4354720883c760 *3b7b5c760ac7436c18000000ff63f8c747a4085c100856e895cb090083c4048d47a4894604c706 *245b1008c745f8d46d10088d47a48945fcc747b07cdc0b08c747b404ab1108c747b800d21108c7 *47bc7cdc0b08c747c0ccaa11088d47b08947c4c747c8e4310608c747d420320608c747e05c3206 *08c747ecd85f07088d47e08947f08d47d48947f48d47c88947f88d47bc8947fcc707ecb111088d *77ec83c5f8e98b3a0a008d7600d4d11108ccaa110804ab11084c33060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b92cfb1008894df4bed4d1110883c5f0e9 *97dc09008d76004c33060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b94cfb1008894df4bed4d1110883c5f0e95bdc09008d76004c33060800000200180007 *008d45f83b4354720883c7543b7b5c760ac7436c15000000ff63f8c747b0085c100856e851ca09 *0083c4048d47b0894604c706245b1008c745f8d46d10088d47b08945fcc747bc7cdc0b08c747c0 *04ab1108c747c400d21108c747c87cdc0b08c747ccccaa11088d47bc8947d0c747d464330608c7 *47e0a0330608c747ecd85f07088d47e08947f08d47d48947f4c747f800d211088d47c88947fcc7 *07f0b111088d77ec83c5f8e94d390a0090d4d11108ccaa110804ab110888340608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950fb1008894df4bed4d11108 *83c5f0e95bdb09008d76008834060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9a8fb1008894df4bed4d1110883c5f0e91fdb09008d760088340608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b0fb1008894df4bed4 *d1110883c5f0e9e3da09008d76008834060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b900fc1008894df4bed4d1110883c5f0e9a7da09008d760088340608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b908fc1008894d *f4bed4d1110883c5f0e96bda09008d76008834060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b920fc1008894df4bed4d1110883c5f0e92fda09008d760088 *34060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b924fc10 *08894df4bed4d1110883c5f0e9f3d909008d76008834060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b934fc1008894df4bed4d1110883c5f0e9b7d909008d *76008834060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *e8fc1008894df4bed4d1110883c5f0e97bd909008d76008834060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b924fd1008894df4bed4d1110883c5f0e93fd9 *09008d76008834060800000200180007008d45f83b4354720b81c75c0100003b7b5c760ac7436c *57000000ff63f8c787a8feffff085c100856e82fc7090083c4048d87a8feffff894604c706245b *1008c745f8d46d10088d87a8feffff8945fcc787b4feffffb8610708c787b8fefffffcd11108c7 *87bcfeffffa0340608c787c8feffff80180508c787ccfeffff68b21108c787d0feffffdc340608 *c787dcfeffff7cdc0b088d87d0feffff8987e0feffffc787e4feffff00d21108c787e8feffffe0 *180508c787ecfeffff00d211088d87dcfeffff8987f0feffff8d87c8feffff8987f4feffff8d87 *bcfeffff8987f8feffffc787fcfeffff7cdc0b088d87e8feffff898700ffffffc78704ffffff00 *d21108c78708ffffff18350608c78714ffffff80180508c78718ffffff64b21108c7871cffffff *54350608c78728ffffff7cdc0b088d871cffffff89872cffffffc78730ffffff00d21108c78734 *ffffffe0180508c78738ffffff00d211088d8728ffffff89873cffffff8d8714ffffff898740ff *ffff8d8708ffffff898744ffffffc78748ffffff7cdc0b088d8734ffffff89874cffffff8d87fc *feffff898750ffffffc78754ffffff90350608c78760ffffffcc350608c7876cffffffa0180508 *c78770ffffff70b211088d8760ffffff898774ffffffc78778ffffff08360608c747847cdc0b08 *8d8778ffffff894788c7478c00d21108c74790e0180508c7479400d211088d47848947988d876c *ffffff89479c8d8754ffffff8947a0c747a47cdc0b088d47908947a88d8748ffffff8947acc747 *b07cdc0b08c747b404ab11088d47a48947b8c747bc7cdc0b08c747c0ccaa11088d47b08947c4c7 *47c844360608c747d480360608c747e0bc360608c747ecd85f07088d47e08947f08d47d48947f4 *8d47c88947f88d47bc8947fc8d87b4feffff89078d77ec83c5f8e937340a008d7600d4d11108cc *aa110804ab1108a039060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b92cfd1008894df4bed4d1110883c5f0e943d609008d7600a039060800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b964fd1008894df4bed4d1110883 *c5f0e907d609008d7600a039060800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b968fd1008894df4bed4d1110883c5f0e9cbd509008d7600a039060800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974fd1008894df4bed4d1 *110883c5f0e98fd509008d7600a039060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9f0fd1008894df4bed4d1110883c5f0e953d509008d7600a039060800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b91cfe1008894df4 *bed4d1110883c5f0e917d509008d7600a039060800000200180007008d45f83b4354720b81c7c4 *0000003b7b5c760ac7436c31000000ff63f8c78740ffffff085c100856e807c3090083c4048d87 *40ffffff894604c706245b1008c745f8d46d10088d8740ffffff8945fcc7874cffffff88610708 *c78750ffffffe0d01108c78754ffffffb8390608c78760fffffff4390608c7876cffffffa01805 *08c78770ffffff70b211088d8760ffffff898774ffffffc78778ffffff303a0608c747847cdc0b *088d8778ffffff894788c7478c00d21108c74790e0180508c7479400d211088d47848947988d87 *6cffffff89479c8d8754ffffff8947a0c747a47cdc0b088d47908947a8c747ac00d21108c747b0 *7cdc0b08c747b404ab11088d47a48947b8c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747 *c86c3a0608c747d4a83a0608c747e0e43a0608c747ecd85f07088d47e08947f08d47d48947f48d *47c88947f88d47bc8947fc8d874cffffff89078d77ec83c5f8e953310a008d7600d4d11108ccaa *110804ab1108843c060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b924fe1008894df4bed4d1110883c5f0e95fd309008d7600843c06080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950fe1008894df4bed4d1110883c5 *f0e923d309008d7600843c060800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b988fe1008894df4bed4d1110883c5f0e9e7d209008d7600843c06080000020018 *0007008d45f83b4354720883c7603b7b5c760ac7436c18000000ff63f8c747a4085c100856e8dd *c0090083c4048d47a4894604c706245b1008c745f8d46d10088d47a48945fcc747b07cdc0b08c7 *47b404ab1108c747b800d21108c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747c89c3c06 *08c747d4d83c0608c747e0143d0608c747ecd85f07088d47e08947f08d47d48947f48d47c88947 *f88d47bc8947fcc707f8b111088d77ec83c5f8e9d32f0a008d7600d4d11108ccaa110804ab1108 *043e060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b990fe *1008894df4bed4d1110883c5f0e9dfd109008d7600043e060800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9e8fe1008894df4bed4d1110883c5f0e9a3d10900 *8d7600043e060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9f0fe1008894df4bed4d1110883c5f0e967d109008d7600043e060800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b940ff1008894df4bed4d1110883c5f0e92b *d109008d7600043e060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b948ff1008894df4bed4d1110883c5f0e9efd009008d7600043e06080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974ff1008894df4bed4d1110883c5 *f0e9b3d009008d7600043e060800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9a0ff1008894df4bed4d1110883c5f0e977d009008d7600043e06080000020018 *0007008d45f83b4354720b81c7000100003b7b5c760ac7436c40000000ff63f8c78704ffffff08 *5c100856e867be090083c4048d8704ffffff894604c706245b1008c745f8d46d10088d8704ffff *ff8945fcc78710ffffffdc610708c78714fffffffcd11108c78718ffffff1c3e0608c78724ffff *ff80180508c78728ffffff68b21108c7872cffffff583e0608c78738ffffff7cdc0b088d872cff *ffff89873cffffffc78740ffffff00d21108c78744ffffffe0180508c78748ffffff00d211088d *8738ffffff89874cffffff8d8724ffffff898750ffffff8d8718ffffff898754ffffffc78758ff *ffff7cdc0b088d8744ffffff89875cffffffc78760ffffff00d21108c78764ffffff943e0608c7 *8770ffffff80180508c78774ffffff64b21108c78778ffffffd03e0608c747847cdc0b088d8778 *ffffff894788c7478c00d21108c74790e0180508c7479400d211088d47848947988d8770ffffff *89479c8d8764ffffff8947a0c747a47cdc0b088d47908947a88d8758ffffff8947acc747b07cdc *0b08c747b404ab11088d47a48947b8c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747c80c *3f0608c747d4483f0608c747e0843f0608c747ecd85f07088d47e08947f08d47d48947f48d47c8 *8947f88d47bc8947fc8d8710ffffff89078d77ec83c5f8e9272c0a008d7600d4d11108ccaa1108 *04ab1108b041060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9acff1008894df4bed4d1110883c5f0e933ce09008d7600b041060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9dcff1008894df4bed4d1110883c5f0e9 *f7cd09008d7600b041060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b908001108894df4bed4d1110883c5f0e9bbcd09008d7600b041060800000200180007 *008d45f83b4354720883c7603b7b5c760ac7436c18000000ff63f8c747a4085c100856e8b1bb09 *0083c4048d47a4894604c706245b1008c745f8d46d10088d47a48945fcc747b07cdc0b08c747b4 *04ab1108c747b800d21108c747bc7cdc0b08c747c0ccaa11088d47b08947c4c747c8c8410608c7 *47d404420608c747e040420608c747ecd85f07088d47e08947f08d47d48947f48d47c88947f88d *47bc8947fcc70700b211088d77ec83c5f8e9a72a0a008d7600e4d11108d4d11108d8d51108d0d5 *110848a21108dcd2110848d11108a8d511083843060801000100130001008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8246010088b4e04894f *fc8d57f88955f4bed8d5110883c5f0e968ce09004843060801000100130001008d45f43b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9a5e6ffff9030430608020000001500 *41008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc7 *47ecac4306088b46088947f0c747f8b06010088b46048947fc8d47ec8945f48d47f88945f0bee4 *d1110883c5ece9e1d10900903043060801000100130001008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec7cdc0b08c747f0280b1208c747f400 *d21108c747f80c5f10088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece975d1 *0900903443060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b914001108894df4bed4d1110883c5f0e94fcb09008d76003043060801000100130003008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec404406 *088b46048947f0c747f8ac4406088d47ec8945f48d47f88945f0bee4d1110883c5ece9dbd00900 *8d76003043060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ece84406088b46048947f0c747f80c5f10088b46048947fc8d *47ec8945f48d47f88945f0bee4d1110883c5ece975d00900903443060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c001108894df4bed4d1110883c5f0e9 *4fca09008d76003043060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec484506088b46048947f0c747f8ac4506088d47ec *8945f48d47f88945f0bee4d1110883c5ece9dbcf09008d76003043060802000000150003008d45 *ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e845 *06088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ece982cf090089f634430608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b940001108894d *f4bed4d1110883c5f0e95bc909008d76003043060802000000150003008d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec484606088b46048947f0 *8b46088947f4c747f8a04606088d47ec8945f48d47f88945f0bee4d1110883c5ece9e1ce090090 *3043060803000000120053008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ecdc4306088b46088947f08b460c8947f4c747f8dc4606088b460489 *47fc8b460889078d47ec8945f48d47f88945f0be48a2110883c5ece972ce090089f63043060803 *00000012005b008d45f03b4354720883c7103b7b5c760ac7436c04000000ff63f8c745f8d46d10 *088975fcc747f4404706088b46048947f88b46088947fc8b460c89078d47f48945f4bed0d51108 *83c5f0e909ca0900903043060804000100030000000b005f008d45f83b4354720883c71c3b7b5c *760ac7436c07000000ff63fcc747e85c4306088b46048947ecc747f4b04706088b45008947f88b *46048947fc8b460889078d47e88945008d47f48945fc8b760c83c5f8e9aecd090089f630430608 *020000002400df0083c7103b7b5c760ac7436c04000000ff63f8c747f4104806088b45048947f8 *8b45088947fc8b460889078d47f4894508c74504a8d511088b7604e961cd090090304306080b00 *0200000000001100ff008d45fc3b43547308bea4ab1108ff63fcbedcd21108c745fc7448060883 *c5fcff268d760090d01108dcd21108e848060800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e831b5090083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f4dcd21108be90d0110883c5f0e9b5c80900908cd0 *1108dcd211085449060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e8c5b4090083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f4dcd21108be8cd0110883c5f0e949c809009084d01108dcd21108c04906 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e859b4090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f4dcd21108be84d0110883c5f0e9ddc7090090e4d1110854d21108d4d1110844d11108d0d51108 *88a21108dcd2110848d11108a4ab1108b8aa1108b0d51108acab1108484a060801000100130001 *008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9e9dfffff902c4a *060802000000150081008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8 *d46d10088975fcc747ec684a06088b46088947f0c747f8b06010088b46048947fc8d47ec8945f4 *8d47f88945f0bee4d1110883c5ece925cb0900902c4a0608030000001200a1008d45e83b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8984a06088b4604 *8947fc8b460889078b460c8945f48d47f88945f0c745eca4a21108be88a2110883c5e8e992cf09 *0089f601000100130000008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483 *c5f4e95ddcffff908b750883c50cff26344a060800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b948001108894df4bed4d1110883c5f0e967c409008d7600304a *060800000000240007008b068b48fcc1e91083f90f75088b760483c504ff2683c70c3b7b5c760a *c7436c03000000ff63f8c747f8944b06088d57f8895500c745fc54d21108be44d1110883c5f8e9 *fcc90900304a060801000100130007008d45ec3b43547303ff63f8c745f8d46d10088975fc8b76 *04c745f4d04b060883c5f4ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec244c06088b *46048947f0c747f88c6b10088b45048947fc8b460889078d47ec8945088d47f8894504be44d111 *08e985c9090090484c0608804b0608304a06080200000025000700304a06080b00020000000100 *0b0007008d45fc3b43547303ff63fc8b4d0089750089cec745fca44c060883c5fcff2690304a06 *0801000100130007008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fcb44c0608c745f4d81112088b4e04894df08d77fc83c5f0eb94304a060844 *0100002400070083c7283b7b5c760ac7436c0a000000ff63f8c747dc5c4b06088b450c8947e0c7 *47e8e04c06088b450c8947ecc747f4fcbb0b088d47e88947f88d47dc8947fc8b450489078d47f4 *8945108b760c83c50ce987c409008d7600bedcd21108c745002c4d0608ff2689f6544a06080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4fcd21108beb0d51108 *83c5f0e93fc409008d76004c4a060802000000150001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e08894df48b56048955f083c5f0e9c3faffff8d76004c4a060843000000240005 *0083c7183b7b5c760ac7436c06000000ff63f8c747eca04d0608c747f8d84d06088b45048947fc *8b450c89078d47ec89450c8d47f88945088b760883c504e9c2c7090089f6bedcd21108c7450410 *4e060883c504ff268d7600544e0608844d0608304a0608040000002500a7028b450c8945fcc745 *007c4e060883c5fce923d8ffff8d7600544a060800000200120001008d45f03b4354720883c708 *3b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc14e90b08c707e01112088d *4ffc894df4beb0d5110883c5f0e924c309003c4a060801000100130081008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f0d0d51108beacab110883c5ece9f5c6090090 *3c4a0608020000001500c1008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747eca04e0608c747f8f04e06088b46048947fc8d47ec8945f48d47f889 *45f08b760883c5ece999c6090090344a060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b95c001108894df4bed4d1110883c5f0e973c009008d7600344a0608 *00000200120005008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8884f06088d4ff8894df4bed0d5110883c5f0e906c2090089f6344a06080100 *00002400050383c7183b7b5c760ac7436c06000000ff63f8c747ec2c4f06088b45048947f08b46 *088947f4c747f8c44f06088d47ec8945048d47f88945008b760883c5fce9c1c5090090897510be *dcd21108c7450c1050060883c50cff26545006087c4e0608304a0608040000002500af07304a06 *08030000002400af078b460c8945008b7610c745fc7c50060883c5fcff268d76002c4a06081600 *0300000000001100ff0f8d45f43b4354720883c71c3b7b5c760fbedcab1108c7436c07000000ff *63fcc747e8fc4a06088b45008947ec8b45088947f08b45048947f4c747f80c5f10088d47e88947 *fc8d47f88945048d77e8c745fc8850060883c5fcff2689f624ab1108dcab11080c5106080b0002 *0000000000110003008d45fc3b43547308bee4ab1108ff63fcc745fc24ab110883c5fce96dffff *ff9044ab1108dcab1108445106080b00020000000000110003008d45fc3b43547308beecab1108 *ff63fcc745fc44ab110883c5fce935ffffff9034ab1108dcab11087c5106080b00020000000000 *110003008d45fc3b43547308bef4ab1108ff63fcc745fc34ab110883c5fce9fdfeffff90dcaa11 *08dcab1108b45106080b00020000000000110003008d45fc3b43547308befcab1108ff63fcc745 *fcdcaa110883c5fce9c5feffff9074ab1108dcab1108ec5106080b00020000000000110003008d *45fc3b43547308be04ac1108ff63fcc745fc74ab110883c5fce98dfeffff9094ab1108dcab1108 *245206080b00020000000000110003008d45fc3b43547308be0cac1108ff63fcc745fc94ab1108 *83c5fce955feffff90e4d1110854d21108d4d1110844d1110858d31108d0d5110888a21108dcd2 *110848d11108a4ab1108b8aa110854ab1108b0d51108acab1108ccab11088b750883c50cff2664 *52060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9680011 *08894df4bed4d1110883c5f0e94fbd09008d7600897500be54d2110883c5fce91cbf0900dc5206 *08dc5206086052060800000000250001006052060802000000240007008b068b40fcc1e81083f8 *0b0f8cee00000083f8100f8fe5000000b91cac110883c0f5ff24818d760083c70c3b7b5c760ac7 *436c03000000ff63f8c747f8e4bb0b08c747fc04d211088b450489078d77f883c50ce9701a0a00 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b08c747fcfcd111088b450489078d77 *f883c50ce9401a0a00b87c001108894504bed4d11108c7450800530608e97bbc090083c70c3b7b *5c760ac7436c03000000ff63f8c747f8e4bb0b088b45088947fc8b460489078d77f883c50ce9f8 *190a0083c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b45088947fc8b45048907 *8d77f883c50ce9c9190a0083c70c3b7b5c760ac7436c03000000ff63f8c747f8ac5206088d47f8 *894508c7450454d21108be44d11108e9d9c10900906052060803000000120007008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e0c894df08b56088955f48b7604c745ec0c53060883c5 *ecff2660520608030000002400070083c71c3b7b5c760ac7436c07000000ff63f8c747e8485406 *088b45048947ec8b46048947f08b46088947f4c747f88c6b10088b45088947fc8b450c89078d47 *e889450c8d47f8894508be44d1110883c504e93ac1090089f68b46048945008b4d088b56088955 *0889cec745fc8454060883c5fcff268d7600dc5406089852060860520608020000002500070060 *5206080b000200000001000b0007008d45f83b43547303ff63fc8b4d0089750089cec745fc1055 *060883c5fcff26907c52060801000100130001008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df483c5f4e905d5ffff9000000000240000008b761083c504ff26885206080000 *0200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbe54ab1108c745f478550608 *83c5f4ff2689f65c52060801000100130001098d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec4c5506088b46048947f0c747f88c5506088d47ec *8945f48d47f88945f0bee4d1110883c5ece903c009008d76005c52060802000000150041098d45 *e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c055 *06088b46048947fc8b46088945f48d47f88945f0c745eca4a21108be88a2110883c5e8e973c409 *008d760001000100130000008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *83c5f4e93dd1ffff9005000000120000008d45f03b4354720883c72c3b7b5c760ac7436c0b0000 *00ff63f8c745f8d46d10088975fcc747d87c5606088b46088947dcc747e4c86b10088b46048947 *e88b46088947ec8b460c8947f0c747f4fcbb0b088d47e48947f88d47d88947fc8b461089078d47 *f48945f48b761483c5f0e9edba090090897500be54d2110883c5fce9dcba09001c5706081c5706 *086052060800000000250001006052060800000200120003008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8d7600b9b8001108894df0bed4d11108c745f44057060883c5ece9a8b8090000 *000000240000008b068b40fcc1e81083f80e750ebe04d2110883c5048b4500ff60ecbefcd11108 *83c5048b4500ff60f08d760004000100000001000b0000008b7500c7450088570608ff266c5206 *0801000100130001008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fcc05706088b4e04894df48d57fc8955f0be58d3110883c5ece9f8bd090060 *5206080100010013000b208d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec4c570608c747f8d85706088b46048947fc8d47ec8945f48d47f88945 *f0beccab110883c5ece99bbd09008d7600605206080502000024000b2083c7243b7b5c760ac743 *6c09000000ff63f8c747e0a85606088b45108947e48b45088947e88b450c8947ec8b45048947f0 *8b460c8947f4c747f8285806088b45088947fc8d47e08945148d47f88945108b760883c50ce931 *bd090090bedcd21108c7450088580608ff2689f68c52060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fcc745f4fcd21108beb0d5110883c5f0e9dfb809008d76008052 *060801000100130005008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745 *f054ab110883c5f0e962efffff89f6805206080100000024000d0083c7183b7b5c760ac7436c06 *000000ff63f8c747ec00590608c747f8385906088b45048947fc8d4fec894d048d57f88955008b *760883c5fce967bc09008d7600bedcd21108c745107059060883c510ff268d7600b0590608e458 *0608605206080500000025004b2d8b45088945fcc74500d859060883c5fce9c7ccffff8d76008c *52060800000200120001008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745 *f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e9c8b709 *007052060801000100130001018d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4c745f0d0d51108beacab110883c5ece999bb0900907052060802000000150081018d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecfc590608c7 *47f84c5a06088b46048947fc8d47ec8945f48d47f88945f08b760883c5ece93dbb090090645206 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f400110889 *4df4bed4d1110883c5f0e917b509008d76006452060800000200120009008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e45a06088d4ff8894d *f4bed0d5110883c5f0e9aab6090089f664520608010000002400090c83c7183b7b5c760ac7436c *06000000ff63f8c747ec885a06088b45048947f08b46088947f4c747f8205b06088d47ec894504 *8d47f88945008b760883c5fce965ba090090897514bedcd21108c745106c5b060883c510ff26b0 *5b0608d8590608605206080500000025005b3f605206080400000024005b3f8b460c8945008b76 *10c745fcd85b060883c5fcff268d76005c52060816000300000000001100ff7f8d45f03b435472 *0883c7203b7b5c760fbe14ac1108c7436c08000000ff63fcc747e420550608c747ec205606088b *45088947f08b45048947f4c747f80c5f10088d47ec8947fc8d47f88945fc8d47e48945048d77ec *c745f8e45b060883c5f8ff268d7600e4d1110854d21108d4d1110844d11108d0d5110888a21108 *dcd2110848d11108a4ab1108b8aa110864ab1108b0d51108acab11088c5c060801000100130001 *008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9a1cdffff900000 *0000240000008b761083c504ff26985c060800000200120001008d45f43b43547303ff63f8c745 *f8d46d10088975fcbe64ab1108c745f4dc5c060883c5f4ff2689f6705c06080100010013008104 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *b05c06088b46048947f0c747f8f05c06088d47ec8945f48d47f88945f0bee4d1110883c5ece99f *b809008d7600705c0608020000001500a1048d45e83b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8245d06088b46048947fc8b46088945f48d47f88945 *f0c745eca4a21108be88a2110883c5e8e90fbd09008d760001000100130000008d45f43b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9d9c9ffff908b750883c50cff26785c *060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b900011108 *894df4bed4d1110883c5f0e9e3b109008d7600745c060802000000240007008b068b40fcc1e810 *83f80f7d4583f80e0f85a400000083c7143b7b5c760ac7436c05000000ff63f8c747f094b90b08 *8b46048947f4c747f8e4bb0b088d47f08947fc8b450489078d77f883c50ce92e0f0a0083f8107d *2f83c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b45088947fc8b460489078d77 *f883c50ce9fa0e0a0083f810752f83c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b08 *8b45088947fc8b450489078d77f883c50ce9c60e0a0083c70c3b7b5c760ac7436c03000000ff63 *f8c747f8185e06088d47f8894508c7450454d21108be44d11108e9d6b6090089f6745c06080300 *0000120007008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0c894df08b56088955f4 *8b7604c745ec545e060883c5ecff26745c0608030000002400070083c71c3b7b5c760ac7436c07 *000000ff63f8c747e84c5f06088b45048947ec8b46048947f08b46088947f4c747f88c6b10088b *45088947fc8b450c89078d47e889450c8d47f8894508be44d1110883c504e936b6090089f68b46 *048945008b4d088b560889550889cec745fc885f060883c5fcff268d7600e05f0608045e060874 *5c06080200000025000700745c06080b000200000001000b0007008d45f83b43547303ff63fc8b *4d0089750089cec745fc1460060883c5fcff2690745c060802000000150007008d45f03b435472 *0883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc246006088b4e08 *894df48b56048955f08d77fc83c5f0eb9590745c0608040100002400070083c7283b7b5c760ac7 *436c0a000000ff63f8c747dce05d06088b450c8947e0c747e8506006088b450c8947ec8b450889 *47f0c747f4fcbb0b088d47e88947f88d47dc8947fc8b450489078d47f48945108b760c83c50ce9 *11b1090090bedcd21108c745009c600608ff2689f69c5c060800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f4fcd21108beb0d5110883c5f0e9cbb009008d760090 *5c060801000100130005008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c7 *45f064ab110883c5f0e94ee7ffff89f6905c06080100000024000d0083c7183b7b5c760ac7436c *06000000ff63f8c747ec14610608c747f84c6106088b45048947fc8d4fec894d048d57f8895500 *8b760883c5fce953b409008d7600bedcd21108c7450c8461060883c50cff268d7600c4610608f8 *600608745c0608040000002500a7068b450c8945fcc74500ec61060883c5fce9b3c4ffff8d7600 *9c5c060800000200120001008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c7 *45f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e9b4af *0900805c060801000100130001018d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4c745f0d0d51108beacab110883c5ece985b3090090805c060802000000150081018d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec10620608 *c747f8606206088b46048947fc8d47ec8945f48d47f88945f08b760883c5ece929b3090090785c *060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b914011108 *894df4bed4d1110883c5f0e903ad09008d7600785c060800000200120005008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f86206088d4ff889 *4df4bed0d5110883c5f0e996ae090089f6785c0608010000002400050683c7183b7b5c760ac743 *6c06000000ff63f8c747ec9c6206088b45048947f08b46088947f4c747f8346306088d47ec8945 *048d47f88945008b760883c5fce951b2090090897510bedcd21108c7450c8063060883c50cff26 *c4630608ec610608745c0608040000002500af0f745c0608030000002400af0f8b460c8945008b *7610c745fcec63060883c5fcff268d7600705c060816000300000000001100ff1f8d45f43b4354 *720883c7183b7b5c760fbe34ac1108c7436c06000000ff63fcc747ec845d06088b45088947f08b *45048947f4c747f80c5f10088d47ec8947fc8d47f88945048d77ecc745fcf863060883c5fcff26 *e4d1110854d21108d4d1110844d11108d0d5110888a21108dcd2110848d11108a4ab1108b8aa11 *0884ab1108b0d51108acab11089064060801000100130001008d45f43b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df483c5f4e99dc5ffff9000000000240000008b761083c504ff269c *64060800000200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbe84ab1108c745 *f4e064060883c5f4ff2689f67464060801000100130081048d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb46406088b46048947f0c747f8f464 *06088d47ec8945f48d47f88945f0bee4d1110883c5ece99bb009008d7600746406080200000015 *00a1048d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8286506088b46048947fc8b46088945f48d47f88945f0c745eca4a21108be88a2110883c5 *e8e90bb509008d760001000100130000008d45f43b43547303ff63f8c745f8d46d10088975fc8b *4e04894df483c5f4e9d5c1ffff908b750883c50cff267c64060800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b920011108894df4bed4d1110883c5f0e9dfa909 *008d76007864060802000000240007008b068b40fcc1e81083f80f7d7783f80c7d3983f80b0f85 *d100000083c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b08c747fc04d211088b4504 *89078d77f883c50ce931070a0083f80c0f859800000083c70c3b7b5c760ac7436c03000000ff63 *f8c747f8e4bb0b08c747fcfcd111088b450489078d77f883c50ce9f8060a0083f8107d2f83c70c *3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b45088947fc8b460489078d77f883c50c *e9c4060a0083f810752f83c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b450889 *47fc8b450489078d77f883c50ce990060a0083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *1c6606088d47f8894508c7450454d21108be44d11108e9a0ae0900786406080300000012000700 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0c894df08b56088955f48b7604c745ec *5866060883c5ecff2678640608030000002400070083c71c3b7b5c760ac7436c07000000ff63f8 *c747e8806706088b45048947ec8b46048947f08b46088947f4c747f88c6b10088b45088947fc8b *450c89078d47e889450c8d47f8894508be44d1110883c504e902ae090089f68b46048945008b4d *088b560889550889cec745fcbc67060883c5fcff268d7600146806080866060878640608020000 *0025000700786406080b000200000001000b0007008d45f83b43547303ff63fc8b4d0089750089 *cec745fc4868060883c5fcff26907864060802000000150007008d45f03b4354720883c7083b7b *5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc586806088b4e08894df48b5604 *8955f08d77fc83c5f0eb959078640608040100002400070083c7283b7b5c760ac7436c0a000000 *ff63f8c747dce46506088b450c8947e0c747e8846806088b450c8947ec8b45088947f0c747f4fc *bb0b088d47e88947f88d47dc8947fc8b450489078d47f48945108b760c83c50ce9dda8090090be *dcd21108c74500d0680608ff2689f6a064060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f4fcd21108beb0d5110883c5f0e997a809008d760094640608010001 *00130005008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f084ab1108 *83c5f0e91adfffff89f6946406080100000024000d0083c7183b7b5c760ac7436c06000000ff63 *f8c747ec48690608c747f8806906088b45048947fc8d4fec894d048d57f88955008b760883c5fc *e91fac09008d7600bedcd21108c7450cb869060883c50cff268d7600f86906082c690608786406 *08040000002500a7068b450c8945fcc74500206a060883c5fce97fbcffff8d7600a06406080000 *0200120001008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e980a7090084640608 *01000100130001018d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d0 *d51108beacab110883c5ece951ab0900908464060802000000150081018d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec446a0608c747f8946a06 *088b46048947fc8d47ec8945f48d47f88945f08b760883c5ece9f5aa0900907c64060800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b934011108894df4bed4d1 *110883c5f0e9cfa409008d76007c64060800000200120005008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82c6b06088d4ff8894df4bed0d511 *0883c5f0e962a6090089f67c640608010000002400050683c7183b7b5c760ac7436c06000000ff *63f8c747ecd06a06088b45048947f08b46088947f4c747f8686b06088d47ec8945048d47f88945 *008b760883c5fce91daa090090897510bedcd21108c7450cb46b060883c50cff26f86b0608206a *060878640608040000002500af0f78640608030000002400af0f8b460c8945008b7610c745fc20 *6c060883c5fcff268d76007464060816000300000000001100ff1f8d45f43b4354720883c7183b *7b5c760fbe3cac1108c7436c06000000ff63fcc747ec886506088b45088947f08b45048947f4c7 *47f80c5f10088d47ec8947fc8d47f88945048d77ecc745fc2c6c060883c5fcff26bcd311080000 *0000240000008b760883c504ff26a86c060800000200180001008d45f43b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e86591090083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcbebcd31108c745f4b46c060883c5f4ff2644ac1108000000 *00240000008b7604e96c9a09001c6d060800000200180001008d45f43b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e8f190090083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcbe44ac1108c745f4286d060883c5f4ff26bcd3110800000000 *240000008b760483c504ff26906d060800000200180001008d45f43b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e87d90090083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcbebcd31108c745f49c6d060883c5f4ff2664ac11080000000024 *0000008b7608e984990900046e060800000200180001008d45f43b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e80990090083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcbe64ac1108c745f4106e060883c5f4ff26d4a41108000000002400 *00008b760ce910990900786e060800000200180001008d45f43b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8958f090083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcbed4a41108c745f4846e060883c5f4ff26f4d41108d8d41108ec6e06 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e82d8f090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f4f4d41108bed8d4110883c5f0e9b1a20900901cd5110894ac1108586f06080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c18e0900 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f494ac1108be1cd511 *0883c5f0e945a209009094ac110800000000240000008b7604e9c4970900c46f06080000020018 *0001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e849 *8e090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe94ac1108c745f4 *d06f060883c5f4ff2690d1110844d311083870060800000200180003008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8e18d090083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fcc745f490d11108be44d3110883c5f0e965a1090090 *90d1110800000000240000008b7614e9e4960900a470060800000200180001008d45f43b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8698d090083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcbe90d11108c745f4b070060883c5f4ff2684 *d411084cd411081871060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8018d090083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f44cd41108be84d4110883c5f0e985a0090090e4ac1108000000002400 *00008b760ce9049609008471060800000200180001008d45f43b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8898c090083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcbee4ac1108c745f49071060883c5f4ff26ccd1110880d11108f87106 *0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8218c090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f480d11108beccd1110883c5f0e9a59f090090dcd0110804ad1108647206080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b58b0900 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f404ad1108bedcd011 *0883c5f0e9399f09009004ad110800000000240000008b7608e9b8940900d07206080000020018 *0001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83d *8b090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe04ad1108c745f4 *dc72060883c5f4ff26c4d11108d4d1110818d4110828d41108a8d6110880d6110888d611088cd6 *1108f4ac11084873060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b940011108894df4bed4d1110883c5f0e9879c09008d7600487306084200000024000100 *83c70c3b7b5c761ec74500b0730608c7436c03000000b8ff00000083f000894320e9dac90900c7 *47f8747306088d4ff8894d088b750483c504e91a9e090089f64873060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b98c011108894df4bed4d1110883c5f0e9 *ff9b09008d760083c504e97cffffff04000100010000000c0000008d45fc3b4354720883c7083b *7b5c760ac7436c02000000ff63fcc747fc746207088b4d00890f8d57fc8955008b760483c5fce9 *919d0900906073060800000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc7 *45f4f4ac1108be8cd6110883c5f0e95b9d09008d760083c7143b7b5c760ac7436c05000000ff63 *f8c747f0407406088b450c8947f4c747f8847406088d4ff0894d0c8d57f88955088b750483c504 *e927a109008d7600b07406082c74060848730608030000002500c10083c70c3b7b5c760ac7436c *03000000ff63f8c747f8fc7306088b46048945fc8d4ff8894df8bec4d11108c745000475060883 *c5f4e9d7a009008d760083c504e968feffff407506084075060840750608407506080475060840 *75060840750608407506084473060803000000250083014473060804000100030000000b008301 *8d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f47475 *060883c5f4ff2689f6447306080000000024008b0183c7103b7b5c760ac7436c04000000ff63f8 *c747f4847506088b46108947f88b460c8947fc8b460489078d47f4894500c745fc28d411088b76 *0483c5f8e912a0090089f6447306080000020012009b018d45ec3b43547303ff63f8c745f8d46d *10088975fcbea8d61108c745f4c075060883c5f4ff2689f644730608000002001200db018d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8107606 *088d4ff8894df4c745f028121208be88d6110883c5ece98b9f09008d76000000000024000000c7 *4500b4b111088b760c83c5fce9629b090089f65473060800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fcbea8d61108c745f49476060883c5f4ff2689f648730608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b99c011108894df4bed4 *d1110883c5f0e9139909008d76000000000024000000c74500b0b111088b760c83c5fce9d69a09 *0089f65473060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d6 *1108c745f42077060883c5f4ff2689f64873060800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9a4011108894df4bed4d1110883c5f0e9879809008d76000000 *000024000000c74500acb111088b760c83c5fce94a9a090089f65473060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4ac77060883c5f4ff2689f6 *4873060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a801 *1108894df4bed4d1110883c5f0e9fb9709008d76000000000024000000c74500a8b111088b760c *83c5fce9be99090089f65473060800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fcbea8d61108c745f43878060883c5f4ff2689f64873060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9b0011108894df4bed4d1110883c5f0e96f97 *09008d76000000000024000000c74500a4b111088b760c83c5fce93299090089f6547306080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4c4780608 *83c5f4ff2689f64873060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9b4011108894df4bed4d1110883c5f0e9e39609008d7600487306080000020012000b *008d45f03b4354720b81c7f00000003b7b5c760ac7436c3c000000ff63f8c745f8d46d10088975 *fcc78714ffffffb4760608c78720ffffffe8760608c7872cffffffe4bb0b088d8720ffffff8987 *30ffffff8d8714ffffff898734ffffffc78738ffffff7cdc0b088d872cffffff89873cffffffc7 *8740ffffff00d21108c78744ffffff40770608c78750ffffff74770608c7875cffffffe4bb0b08 *8d8750ffffff898760ffffff8d8744ffffff898764ffffffc78768ffffff7cdc0b088d875cffff *ff89876cffffff8d8738ffffff898770ffffffc78774ffffffcc770608c7478000780608c7478c *e4bb0b088d47808947908d8774ffffff894794c747987cdc0b088d478c89479c8d8768ffffff89 *47a0c747a458780608c747b08c780608c747bce4bb0b088d47b08947c08d47a48947c4c747c87c *dc0b088d47bc8947cc8d47988947d0c747d4e4780608c747e018790608c747ece4bb0b088d47e0 *8947f08d47d48947f4c747f87cdc0b088d47ec8947fc8d47c889078d47f88945f4be18d4110883 *c5f0e92897090044730608000002001800ff018d45ec3b4354720883c7243b7b5c760ac7436c09 *000000ff63f8c747e0085c100856e84183090083c4048d47e0894604c706245b1008c745f8d46d *10088d47e08945fcc747ec44760608c747f8547906088d47ec8945f48d47f88945f0be80d61108 *83c5ece9be9a090089f620d4110834ad1108587b060800000200180003008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c182090083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f434ad1108be20d4110883c5f0e945960900 *90d4d1110890d1110848d11108bcd41108c0d4110894ac1108c47b060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b8011108894df4bed4d1110883c5f0e9 *139409008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8e87b06088d47f8894508be *c0d4110883c504e9c4950900c47b060800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9bc011108894df4bed4d1110883c5f0e9ab9309008d760083c70c3b7b5c *760ac7436c03000000ff63f8c747f8507c06088d47f8894508bec0d4110883c504e95c950900c4 *7b060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c00111 *08894df4bed4d1110883c5f0e9439309008d760083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8b87c06088d47f8894508bec0d4110883c504e9f4940900c47b060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c8011108894df4bed4d1110883c5f0e9 *db9209008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8207d06088d47f8894508be *c0d4110883c504e98c940900c47b060800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9cc011108894df4bed4d1110883c5f0e9739209008d760083c70c3b7b5c *760ac7436c03000000ff63f8c747f8887d06088d47f8894508bec0d4110883c504e92494090001 *00000024000000c74500301212088b760483c5fce91698090089f6d87b06080100010013000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be94ac1108c745f0ec7d0608 *83c5f0ff26c47b060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9d4011108894df4bed4d1110883c5f0e9b79109008d7600c47b060800000200120011008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f844 *7e06088d4ff8894df4bec0d4110883c5f0e94a93090089f6c47b060801000100130035008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec0c7e06 *088b46048947f0c747f8807e06088d47ec8945f48d47f88945f0be48d1110883c5ece9f7960900 *8d760001000000240000008b4504894500c74504301212088b761483c5fce9d4960900c87b0608 *01000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d111 *08c745f0287f060883c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747eccc7e06088b *46048947f0c747f84c7f06088b45048947fc8d47ec8945088d47f8894504bebcd41108e95a9609 *0089f6787f0608b87d0608507d0608e87c0608807c0608187c0608c47b06084200000025003f00 *c47b06080b0002000000000011003f008d45fc3b43547308be54ad1108ff63fc8b7504c745fce0 *7f060883c5fcff269054ad11085cad11081080060800000200180003008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8097e090083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fcc745f45cad1108be54ad110883c5f0e98d91090090 *ccd4110864ad11087c80060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e89d7d090083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f464ad1108beccd4110883c5f0e92191090090d4d11108ccaa1108e8 *80060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e40111 *08894df4bed4d1110883c5f0e9ff8e09008d7600e880060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9fc011108894df4bed4d1110883c5f0e9c38e09008d *7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *04021108894df4bed4d1110883c5f0e9878e09008d7600e880060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b910021108894df4bed4d1110883c5f0e94b8e *09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b928021108894df4bed4d1110883c5f0e90f8e09008d7600e880060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930021108894df4bed4d1110883c5f0 *e9d38d09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b93c021108894df4bed4d1110883c5f0e9978d09008d7600e8800608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954021108894df4bed4d11108 *83c5f0e95b8d09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b95c021108894df4bed4d1110883c5f0e91f8d09008d7600e8800608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b968021108894df4bed4 *d1110883c5f0e9e38c09008d7600e880060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b980021108894df4bed4d1110883c5f0e9a78c09008d7600e8800608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b988021108894d *f4bed4d1110883c5f0e96b8c09008d7600e880060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b994021108894df4bed4d1110883c5f0e92f8c09008d7600e8 *80060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b00211 *08894df4bed4d1110883c5f0e9f38b09008d7600e880060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9b8021108894df4bed4d1110883c5f0e9b78b09008d *7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *c8021108894df4bed4d1110883c5f0e97b8b09008d7600e880060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9f8021108894df4bed4d1110883c5f0e93f8b *09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9fc021108894df4bed4d1110883c5f0e9038b09008d7600e880060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b904031108894df4bed4d1110883c5f0 *e9c78a09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b928031108894df4bed4d1110883c5f0e98b8a09008d7600e8800608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930031108894df4bed4d11108 *83c5f0e94f8a09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b93c031108894df4bed4d1110883c5f0e9138a09008d7600e8800608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b964031108894df4bed4 *d1110883c5f0e9d78909008d7600e880060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b96c031108894df4bed4d1110883c5f0e99b8909008d7600e8800608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97c031108894d *f4bed4d1110883c5f0e95f8909008d7600e880060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b990031108894df4bed4d1110883c5f0e9238909008d7600e8 *80060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9980311 *08894df4bed4d1110883c5f0e9e78809008d7600e880060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9ac031108894df4bed4d1110883c5f0e9ab8809008d *7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *b0031108894df4bed4d1110883c5f0e96f8809008d7600e880060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9c4031108894df4bed4d1110883c5f0e93388 *09008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9c8031108894df4bed4d1110883c5f0e9f78709008d7600e880060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f8031108894df4bed4d1110883c5f0 *e9bb8709008d7600e880060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b918041108894df4bed4d1110883c5f0e97f8709008d7600e8800608000002001800 *03008d45f83b4354720b81c7440400003b7b5c760ac7436c11010000ff63f8c787c0fbffff085c *100856e86f75090083c4048d87c0fbffff894604c706245b1008c745f8d46d10088d87c0fbffff *8945fcc787ccfbffff58610708c787d0fbffff84ad1108c787d4fbfffffc800608c787e0fbffff *38810608c787ecfbffffa0180508c787f0fbffff60b211088d87e0fbffff8987f4fbffffc787f8 *fbffff74810608c78704fcffff7cdc0b088d87f8fbffff898708fcffffc7870cfcffff00d21108 *c78710fcffffe0180508c78714fcffff00d211088d8704fcffff898718fcffff8d87ecfbffff89 *871cfcffff8d87d4fbffff898720fcffffc78724fcffff7cdc0b088d8710fcffff898728fcffff *c7872cfcffff00d21108c78730fcffffb0810608c7873cfcffffec810608c78748fcffffa01805 *08c7874cfcffff5cb211088d873cfcffff898750fcffffc78754fcffff28820608c78760fcffff *7cdc0b088d8754fcffff898764fcffffc78768fcffff00d21108c7876cfcffffe0180508c78770 *fcffff00d211088d8760fcffff898774fcffff8d8748fcffff898778fcffff8d8730fcffff8987 *7cfcffffc78780fcffff7cdc0b088d876cfcffff898784fcffff8d8724fcffff898788fcffffc7 *878cfcffff64820608c78798fcffffa0820608c787a4fcffffa0180508c787a8fcffff58b21108 *8d8798fcffff8987acfcffffc787b0fcffffdc820608c787bcfcffff7cdc0b088d87b0fcffff89 *87c0fcffffc787c4fcffff00d21108c787c8fcffffe0180508c787ccfcffff00d211088d87bcfc *ffff8987d0fcffff8d87a4fcffff8987d4fcffff8d878cfcffff8987d8fcffffc787dcfcffff7c *dc0b088d87c8fcffff8987e0fcffff8d8780fcffff8987e4fcffffc787e8fcffff18830608c787 *f4fcffff54830608c78700fdffffa0180508c78704fdffff54b211088d87f4fcffff898708fdff *ffc7870cfdffff90830608c78718fdffff7cdc0b088d870cfdffff89871cfdffffc78720fdffff *00d21108c78724fdffffe0180508c78728fdffff00d211088d8718fdffff89872cfdffff8d8700 *fdffff898730fdffff8d87e8fcffff898734fdffffc78738fdffff7cdc0b088d8724fdffff8987 *3cfdffff8d87dcfcffff898740fdffffc78744fdffffcc830608c78750fdffff08840608c7875c *fdffffa0180508c78760fdffff50b211088d8750fdffff898764fdffffc78768fdffff44840608 *c78774fdffff7cdc0b088d8768fdffff898778fdffffc7877cfdffff00d21108c78780fdffffe0 *180508c78784fdffff00d211088d8774fdffff898788fdffff8d875cfdffff89878cfdffff8d87 *44fdffff898790fdffffc78794fdffff7cdc0b088d8780fdffff898798fdffff8d8738fdffff89 *879cfdffffc787a0fdffff80840608c787acfdffffbc840608c787b8fdffffa0180508c787bcfd *ffff4cb211088d87acfdffff8987c0fdffffc787c4fdfffff8840608c787d0fdffff7cdc0b088d *87c4fdffff8987d4fdffffc787d8fdffff00d21108c787dcfdffffe0180508c787e0fdffff00d2 *11088d87d0fdffff8987e4fdffff8d87b8fdffff8987e8fdffff8d87a0fdffff8987ecfdffffc7 *87f0fdffff7cdc0b088d87dcfdffff8987f4fdffff8d8794fdffff8987f8fdffffc787fcfdffff *34850608c78708feffff70850608c78714feffffa0180508c78718feffff48b211088d8708feff *ff89871cfeffffc78720feffffac850608c7872cfeffff7cdc0b088d8720feffff898730feffff *c78734feffff00d21108c78738feffffe0180508c7873cfeffff00d211088d872cfeffff898740 *feffff8d8714feffff898744feffff8d87fcfdffff898748feffffc7874cfeffff7cdc0b088d87 *38feffff898750feffff8d87f0fdffff898754feffffc78758feffffe8850608c78764feffff24 *860608c78770feffffa0180508c78774feffff44b211088d8764feffff898778feffffc7877cfe *ffff60860608c78788feffff7cdc0b088d877cfeffff89878cfeffffc78790feffff00d21108c7 *8794feffff7cdc0b08c78798feffff100d1208c7879cfeffff00d21108c787a0feffffe0180508 *8d8794feffff8987a4feffff8d8788feffff8987a8feffff8d8770feffff8987acfeffff8d8758 *feffff8987b0feffffc787b4feffff7cdc0b088d87a0feffff8987b8feffff8d874cfeffff8987 *bcfeffffc787c0feffff9c860608c787ccfeffff80180508c787d0feffff40b21108c787d4feff *ffd8860608c787e0feffff7cdc0b088d87d4feffff8987e4feffffc787e8feffff00d21108c787 *ecfeffffe0180508c787f0feffff00d211088d87e0feffff8987f4feffff8d87ccfeffff8987f8 *feffff8d87c0feffff8987fcfeffffc78700ffffff7cdc0b088d87ecfeffff898704ffffff8d87 *b4feffff898708ffffffc7870cffffff14870608c78718ffffff80180508c7871cffffff3cb211 *08c78720ffffff50870608c7872cffffff7cdc0b088d8720ffffff898730ffffffc78734ffffff *00d21108c78738ffffff7cdc0b08c7873cffffffc80c1208c78740ffffff00d21108c78744ffff *ffe01805088d8738ffffff898748ffffff8d872cffffff89874cffffff8d8718ffffff898750ff *ffff8d870cffffff898754ffffffc78758ffffff7cdc0b088d8744ffffff89875cffffff8d8700 *ffffff898760ffffffc78764ffffff8c870608c78770ffffff80180508c78774ffffff38b21108 *c78778ffffffc8870608c747847cdc0b088d8778ffffff894788c7478c00d21108c747907cdc0b *08c74794900c1208c7479800d21108c7479ce01805088d47908947a08d47848947a48d8770ffff *ff8947a88d8764ffffff8947acc747b07cdc0b088d479c8947b48d8758ffffff8947b8c747bc7c *dc0b08c747c0ccaa11088d47b08947c4c747c804880608c747d440880608c747e07c880608c747 *ecd85f07088d47e08947f08d47d48947f48d47c88947f88d47bc8947fc8d87ccfbffff89078d77 *ec83c5f8e98ddc090090b0ad110824ab110834ab110844ab1108dcaa110854ab110864ab110874 *ab110884ab110894ab110848910608000002001800ff038d45f83b4354720b81c7840000003b7b *5c760ac7436c21000000ff63f8c74780085c100856e8ae6c090083c4048d4780894604c706245b *1008c745f8d46d10088d47808945fcc7478c7cdc0b08c7479094ab1108c7479400d21108c74798 *7cdc0b08c7479c84ab11088d478c8947a0c747a47cdc0b08c747a844ab11088d47988947acc747 *b07cdc0b08c747b434ab11088d47a48947b8c747bc7cdc0b08c747c074ab11088d47b08947c4c7 *47c87cdc0b08c747cc64ab11088d47bc8947d0c747d47cdc0b08c747d854ab11088d47c88947dc *c747e07cdc0b08c747e4dcaa11088d47d48947e8c747ec7cdc0b08c747f024ab11088d47e08947 *f4c747f87cdc0b08c747fcb0ad11088d47ec89078d77f883c5f8ff25c06d100889f6e4d11108d4 *d1110844d1110888d3110884d31108d8d51108d0d5110848a21108dcd2110814ab1108c0ad1108 *a8d51108bcd31108bcab1108c4ac1108be00d2110883c5088b4500ff60f089f6a4920608010001 *00130001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f80c5f10088b4e04894ffc8d57f88955f4be88d3110883c5f0e9d47e090083c7243b7b *5c760ac7436c09000000ff63f8c747e08c6b10088b45048947e48b46088947e8c747ecf0920608 *8b46048947f0c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5088b4500ff60ec349306 *08d4920608a49206080100000025000100a492060804000100000001000b0001008d45fc3b4354 *7303ff63fc8b4d0089750089cec745fc9893060883c5fcff2690a492060800000200120081008d *45f43b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fca8 *930608c745f4c0ad11088d77fc83c5f4eb9a89f6a492060800000200120081088d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d49306088d4ff8 *894df4bec4ac110883c5f0e9ae7d090089f69c92060800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b924041108894df4bed4d1110883c5f0e9937b09008d7600 *9892060801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8689406088d4ff8894df48b56048955f0bee4d1110883c5ece92c81 *09009c92060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *38041108894df4bed4d1110883c5f0e9077b09008d76009892060801000100130003008d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747eca4940608 *8b46048947f0c747f8f49406088d47ec8945f48d47f88945f0bee4d1110883c5ece9938009008d *76009892060801000100130047008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8309506088b4e04894ffc8d57f88955f4c745f0d0d51108be44 *d1110883c5ece93980090090be00d2110883c5108b4500ff60f089f6b092060801000100130001 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8985f10088b4e04894ffc8d57f88955f4bed0d5110883c5f0e9cc7b09009c9206080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b968041108894df4bed4d111 *0883c5f0e9b37909008d76009c92060800000200120011008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8489606088d4ff8894df4bed8d51108 *83c5f0e9467b090089f69c92060802000000150031008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ecf89506088b46048947f0c747f884960608 *8d47ec8945f48d47f88945f08b760883c5ece9f57e090090a492060801000100130001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be88d3110883c5f0e9b47a0900a492 *0608020000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f82c9706088b450489 *47fc8b4d08894d048d57f88955088b760ce9817e090090a492060802000000150001028d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4bebcd31108c745ec6097 *060883c5ecff2689f6a492060802000000150003028d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8a09706088b46048947fc8b46088907c745f4 *580a12088d47f88945f0be84d3110883c5ece9e47d09009892060802000000150019108d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec0c5f1008 *8b46088947f0c747f8e09706088b46048947fc8d47ec89078d47f88945f48d47ec8945f0bee4d1 *110883c5ece97c7d09009892060802000000150039108d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f83c9806088b46048947fc8b460889078d47 *f88945f4bed8d5110883c5f0e91b7909008d7600989206080300000012007b108d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecd09606088b4608 *8947f08b460c8947f4c747f8a49806088b46048947fc8b460889078d47ec8945f48d47f88945f0 *8b760c83c5ece9b87c09009c92060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b970041108894df4bed4d1110883c5f0e9937609008d76009c920608000002 *00120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8689906088d4ff8894df4bed8d5110883c5f0e92678090089f6989206080300000012 *007b108d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fc *c747e8fc9806088b46048947ec8b46088947f08b460c8947f4c747f8a49906088d47e88945f48d *47f88945f08b760c83c5ece9c97b09009083c7283b7b5c760ac7436c0a000000ff63f8c747dc8c *6b10088b45048947e08b46088947e4c747e8f09906088b450c8947ec8b46048947f08b45088947 *f4c747f87cdc0b088d47e88947fc8d47dc89078d77f883c5108b4500ff60ec4c9a0608dc950608 *989206080300000025007b109892060804000100020000000e007b108d45f43b43547303ff63fc *8975f88b46088945fc8b45008b4e04894d0089c6c745f4bc9a060883c5f4ff2690989206080200 *000015007b148d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8cc9a06088b4e04894ffc8b56088917c745f4c0ad11088d77f883c5f4eb838d7600 *989206080200000015007b348d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8049b06088b46048947fc8b460889078d47f88945f4bebcab110883 *c5f0e9677609008d7600989206080200000015007f748d45ec3b4354720883c7243b7b5c760ac7 *436c09000000ff63f8c745f8d46d10088975fcc747e01c940608c747ec909506088b46048947f0 *c747f8589b06088d47e08947fc8b460889078d47ec8945f48d47f88945f08b760883c5ece9037a *09008d76009c92060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b974041108894df4bed4d1110883c5f0e9db7309008d76009c92060800000200120021008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f820 *9c06088d4ff8894df4bed0d5110883c5f0e96e75090089f6989206080200000015007f748d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb09b06 *088b46048947f08b46088947f4c747f85c9c06088d47ec8945f48d47f88945f08b760883c5ece9 *177909008d76009c92060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b980041108894df4bed4d1110883c5f0e9ef7209008d76009892060801000100130003 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f80c9d06088d4ff8894df48b56048955f0bee4d1110883c5ece9887809009c9206080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b0041108894df4bed4d111 *0883c5f0e9637209008d76009892060801000100130003008d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec489d06088b46048947f0c747f8989d *06088d47ec8945f48d47f88945f0bee4d1110883c5ece9ef7709008d7600989206080100010013 *0083028d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8d49d06088b4e04894ffcc745f414ab11088d57f88955f0be48a2110883c5ece995770900 *9098920608010001001300c3028d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8349e06088b4e04894ffc8d57f88955f4bed0d5110883c5f0e938 *7309009892060804000100010000000c00ff768d45f83b4354720883c7183b7b5c760ac7436c06 *000000ff63fcc747eca89c06088b45008947f08b46048947f4c747f88c9e06088b45008947fc8d *47ec8945008d47f88945fc8b760483c5f8e9e37609008d760098920608000000002400ff7e83c7 *083b7b5c760ac7436c02000000ff63f8c747fce09e06088b460889078d4ffc894d00c745fca8d5 *11088b760483c5f8e99e76090089f698920608000002001800ff7f8d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8a95e090083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcbedcd21108c745f4409f060883c5f4ff26e4d11108d4d1 *110844d1110848d11108d0d5110888a21108dcd2110814ab1108c0ad1108b8aa1108c0d01108b0 *d51108acab110804ad1108d0ad110804a0060800000200120001008d45f03b4354720883c7083b *7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc14e90b08c707e01112088d4f *fc894df4beb0d5110883c5f0e9a4710900e89f060801000100130001018d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4c745f0d0d51108beacab110883c5ece97575090090e8 *9f060802000000150081018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec20a00608c747f870a006088b46048947fc8d47ec8945f48d47f88945 *f08b760883c5ece91975090090dc9f060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9b8041108894df4bed4d1110883c5f0e9f36e09008d7600dc9f060800 *000200120009008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f808a106088d4ff8894df4bed0d5110883c5f0e98670090089f6dc9f0608010000 *002400090c83c7183b7b5c760ac7436c06000000ff63f8c747ecaca006088b45048947f08b4608 *8947f4c747f844a106088d47ec8945048d47f88945008b760883c5fce94174090090dc9f060822 *0000002400290cbedcd21108c7450490a1060883c504ff268d760004a006080000020012000100 *8d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc *14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e9c46f0900dc9f0608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c0041108894df4bed4d11108 *83c5f0e9ab6d09008d7600dc9f06080000020012000b008d45ec3b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f850a206088d4ff8894df4c745f0d0d511 *08be44d1110883c5ece9437309008d7600dc9f06080000000024000b0483c7183b7b5c760ac743 *6c06000000ff63f8c747ec00a20608c747f88ca206088d47ec8945008d4ff8894dfc8b760883c5 *f8e9fd72090090bedcd21108c74504e0a2060883c504ff268d760083c5fce9acfeffff2ca30608 *18a30608dc9f06080100000025002b0c8b7504c7450048a30608ff2602000000240000008b4508 *8b4d04894d088945048b7608e9a47209000ca0060804000100010000000c0001008d45f83b4354 *7303ff63fc8b4e04894dfcbe04ad1108c745f85ca3060883c5f8ff2689f6e49f06080100010013 *0001048d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fc *c747fc80a306088b4e04890fc745f45cb111088d57fc8955f0be48d1110883c5ece91a72090089 *f604a0060800000200120001008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8 *c745f8d46d10088975fcc747fc14e90b08c707e01112088d4ffc894df4beb0d5110883c5f0e9bc *6d0900dc9f060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e0041108894df4bed4d1110883c5f0e9a36b09008d7600d89f060801000100130003008d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f858a406 *088d4ff8894df48b56048955f0bee4d1110883c5ece93c710900dc9f060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f0041108894df4bed4d1110883c5f0 *e9176b09008d7600d89f060801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747ec94a406088b46048947f0c747f8e4a406088d47 *ec8945f48d47f88945f0bee4d1110883c5ece9a37009008d7600d89f060801000100130017008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f820 *a506088b4e04894ffc8d57f88955f4c745f0d0d51108be44d1110883c5ece94970090090d89f06 *08420000002400170883c7183b7b5c760ac7436c06000000ff63f8c747ec08a40608c747f880a5 *06088b45048947fc8d4fec894d088d57f88955048b7608e90270090089f6bedcd21108c74504d8 *a5060883c504ff268d7600430000002400000083c7183b7b5c760ac7436c06000000ff63f8c747 *ec3c6110088b450c8947f0c747f8e4bb0b088d47ec8947fc8b450489078d47f889450c8b760c83 *c508e9966b090089f68b460489450cbedcd21108c7450030a60608ff2674a6060814a60608d89f *0608830000002500570883c70c3b7b5c760ac7436c03000000ff63f8c747f8b0a306088b450889 *47fcc745fcc0ad11088d4ff8894df8bec0d01108c745009ca6060883c5f4e9386f090083c504e9 *fcfaffffdca606089ca60608d89f06080300000025005f3d8b46088945fc8b4e04894d008b7504 *c745f8f8a6060883c5f8ff2690f8a6060848a30608d89f06080100000025005f3dd89f06080200 *000024005f3d8b7504c7450428a7060883c504ff2690ebee89f604a0060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f4fcd21108beb0d5110883c5f0e98b6a09 *008d760004a00608000000002400090083c70c3b7b5c760ac7436c03000000ff63f8c747f854a7 *06088d47f8894500c745fcd0ad11088b760883c5f8e9576e09008d7600bedcd21108c745088ca7 *060883c508ff268d7600c0a7060844a70608d89f06080200000025005f7d8b4504894500c74504 *e8a70608e9ba7effff89f683c504e930fffffffca70608e8a70608d89f06080300000025005f7f *d89f06080000000024005f7f8b46108945008b4e08894dfc8b56048955f88b7610c745f418a806 *0883c5f4ff268d7600d89f060804000100000000001100ff7f8d45e83b43547308bee0ad1108ff *63fc8b4d00894dfcc745f814ab1108c745f4a0a21108be88a21108c7450024a8060883c5f0e954 *720900e4d1110854d21108d4d1110844d11108d0d5110888a21108dcd2110848d11108a4ab1108 *b8aa1108b0ad1108b0d51108acab1108aca8060801000100130001008d45f43b43547303ff63f8 *c745f8d46d10088975fc8b4e04894df483c5f4e98181ffff9000000000240000008b761083c504 *ff26b8a8060800000200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbeb0ad11 *08c745f4fca8060883c5f4ff2689f690a8060801000100130081048d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecd0a806088b46048947f0c747 *f810a906088d47ec8945f48d47f88945f0bee4d1110883c5ece97f6c09008d760090a806080200 *00001500a1048d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f844a906088b46048947fc8b46088945f48d47f88945f0c745eca4a21108be88a211 *0883c5e8e9ef7009008d760001000100130000008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df483c5f4e9b97dffff908b750883c50cff2698a8060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b908051108894df4bed4d1110883c5f0e9 *c36509008d7600010000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b *088b45048947d8c747dc406107088b46048947e08b46088947e48b460c8947e88b46108947ec8b *46148947f08b46188947f48b461c8947f88d47d48947fc8b462489078d77dc83c508e9fec20900 *89f6010000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b088b450489 *47d8c747dc406107088b46048947e08b46088947e48b460c8947e88b46108947ec8b46148947f0 *8b46188947f48d47d48947f88b46208947fc8b462489078d77dc83c508e98ec2090089f6010000 *002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b088b45048947d8c747dc *406107088b46048947e08b46088947e48b460c8947e88b46108947ec8b46148947f08d47d48947 *f48b461c8947f88b46208947fc8b462489078d77dc83c508e91ec2090089f60100000024000000 *83c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b088b45048947d8c747dc406107088b *46048947e08b46088947e48b460c8947e88b46108947ec8d47d48947f08b46188947f48b461c89 *47f88b46208947fc8b462489078d77dc83c508e9aec1090089f6010000002400000083c7303b7b *5c760ac7436c0c000000ff63f8c747d494b90b088b45048947d8c747dc406107088b46048947e0 *8b46088947e48b460c8947e88d47d48947ec8b46148947f08b46188947f48b461c8947f88b4620 *8947fc8b462489078d77dc83c508e93ec1090089f6010000002400000083c7303b7b5c760ac743 *6c0c000000ff63f8c747d494b90b088b45048947d8c747dc406107088b46048947e08b46088947 *e48b460c8947e88b46108947ec8b46148947f08b46188947f48b461c8947f88b46208947fc8d47 *d489078d77dc83c508e9cec0090089f6010000002400000083c7303b7b5c760ac7436c0c000000 *ff63f8c747d494b90b088b45048947d8c747dc406107088b46048947e08b46088947e48d47d489 *47e88b46108947ec8b46148947f08b46188947f48b461c8947f88b46208947fc8b462489078d77 *dc83c508e95ec0090089f6010000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747 *d494b90b088b45048947d8c747dc406107088b46048947e08d47d48947e48b460c8947e88b4610 *8947ec8b46148947f08b46188947f48b461c8947f88b46208947fc8b462489078d77dc83c508e9 *eebf090089f6000000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b08 *c747d8acb11108c747dc406107088d47d48947e08b46088947e48b460c8947e88b46108947ec8b *46148947f08b46188947f48b461c8947f88b46208947fc8b462489078d77dc83c504e97dbf0900 *90000000002400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b08c747d8a8b1 *1108c747dc406107088d47d48947e08b46088947e48b460c8947e88b46108947ec8b46148947f0 *8b46188947f48b461c8947f88b46208947fc8b462489078d77dc83c504e90dbf09009000000000 *2400000083c7303b7b5c760ac7436c0c000000ff63f8c747d494b90b08c747d8a4b11108c747dc *406107088d47d48947e08b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947 *f48b461c8947f88b46208947fc8b462489078d77dc83c504e99dbe09009094a806080100000024 *0007008b068b40fcc1e81085c00f8ce900000083f8100f8fe0000000b9f0ad1108ff24818d7600 *8b7504c74504d0ae060883c504ff268b7504c7450460ae060883c504ff268b7504c74504f0ad06 *0883c504ff268b45048b4e04894d0489c6c7450080ad0608ff268b45048b4e04894d0489c6c745 *0010ad0608ff268b45048b4e04894d0489c6c74500a0ac0608ff268b45048b4e04894d0489c6c7 *450030ac0608ff268b45048b4e04894d0489c6c74500c0ab0608ff268b45048b4e04894d0489c6 *c7450050ab0608ff268b45048b4e04894d0489c6c74500e0aa0608ff268b45048b4e04894d0489 *c6c7450070aa0608ff268b750483c508ff2683c70c3b7b5c760ac7436c03000000ff63f8c747f8 *38aa06088d47f8894504c7450054d21108be44d1110883c5fce9a465090094a806080200000015 *0007008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b7604c745f044af06 *0883c5f0ff2689f683c7183b7b5c760ac7436c06000000ff63f8c747ec7cb006088b46048947f0 *8b45088947f4c747f88c6b10088b45048947fc8b460889078d47ec8945088d47f8894504be44d1 *1108e91f6509008d7600a8b0060824aa060894a80608020000002500070094a806080b00020000 *0001000b0007008d45fc3b43547303ff63fc8b4d0089750089cec745fc0cb1060883c5fcff2690 *94a8060802000000150007008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c7 *45f8d46d10088975fcc747fc1cb106088b4e08894df48b56048955f08d77fc83c5f0eb959094a8 *0608040100002400070083c7283b7b5c760ac7436c0a000000ff63f8c747dc00aa06088b450c89 *47e0c747e848b106088b450c8947ec8b45088947f0c747f4fcbb0b088d47e88947f88d47dc8947 *fc8b450489078d47f48945108b760c83c50ce91960090090bedcd21108c7450094b10608ff2689 *f6bca8060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4fcd2 *1108beb0d5110883c5f0e9d35f09008d7600b0a8060801000100130005008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f0b0ad110883c5f0e95696ffff89f6b0a80608 *0100000024000d0083c7183b7b5c760ac7436c06000000ff63f8c747ec0cb20608c747f844b206 *088b45048947fc8d4fec894d048d57f88955008b760883c5fce95b6309008d7600bedcd21108c7 *450c7cb2060883c50cff268d7600bcb20608f0b1060894a80608040000002500a7068b450c8945 *fcc74500e4b2060883c5fce9bb73ffff8d7600bca8060800000200120001008d45f03b43547208 *83c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc14e90b08c707e011 *12088d4ffc894df4beb0d5110883c5f0e9bc5e0900a0a8060801000100130001018d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d0d51108beacab110883c5ece98d62 *090090a0a8060802000000150081018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec08b30608c747f858b306088b46048947fc8d47ec8945f48d *47f88945f08b760883c5ece9316209009098a8060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b91c051108894df4bed4d1110883c5f0e90b5c09008d760098 *a8060800000200120005008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8f0b306088d4ff8894df4bed0d5110883c5f0e99e5d090089f698a806 *08010000002400050683c7183b7b5c760ac7436c06000000ff63f8c747ec94b306088b45048947 *f08b46088947f4c747f82cb406088d47ec8945048d47f88945008b760883c5fce9596109009089 *7510bedcd21108c7450c78b4060883c50cff26bcb40608e4b2060894a80608040000002500af0f *94a80608030000002400af0f8b460c8945008b7610c745fce4b4060883c5fcff268d760090a806 *0816000300000000001100ff1f8d45f43b4354720883c7183b7b5c760fbee8ad1108c7436c0600 *0000ff63fcc747eca4a906088b45088947f08b45048947f4c747f80c5f10088d47ec8947fc8d47 *f88945048d77ecc745fcf0b4060883c5fcff2640d111086cb50608040001000000000011000100 *8d45fc3b43547308be34ae1108ff63fcbe40d1110883c5fce96b5c09008d760004ad1108be04d2 *110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b45 *00ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be *fcd1110883c5048b4500ff60f089f6f4b50608e4b50608d4b50608c4b50608b4b50608a4b50608 *0000000000000000250000008b7504c7450428b6060883c504ff2690befcd1110883c5048b4500 *ff60f089f6be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6befc *d1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b *4500ff60f089f688b6060878b6060868b6060858b6060848b6060838b606080000000000000000 *250000008b7504c74504bcb6060883c504ff2690befcd1110883c5048b4500ff60f089f6befcd1 *110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b45 *00ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f61c *b706080cb70608fcb60608ecb60608dcb60608ccb606080000000000000000250000008b7504c7 *450450b7060883c504ff2690befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500 *ff60f089f6befcd1110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f6befc *d1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6b0b70608a0b7060890 *b7060880b7060870b7060860b706080000000000000000250000008b7504c74504e4b7060883c5 *04ff2690befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1 *110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be04d2110883c5048b45 *00ff60ec89f6befcd1110883c5048b4500ff60f089f644b8060834b8060824b8060814b8060804 *b80608f4b706080000000000000000250000008b7504c7450478b8060883c504ff2690befcd111 *0883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500 *ff60f089f6befcd1110883c5048b4500ff60f089f6befcd1110883c5048b4500ff60f089f6be04 *d2110883c5048b4500ff60ec89f6d8b80608c8b80608b8b80608a8b8060898b8060888b8060800 *00000000000000250000008b7504c745040cb9060883c504ff26900cb9060878b80608e4b70608 *50b70608bcb6060828b6060800000000010000002500000002000000240000008b7504c7450440 *b9060883c504ff269043000000240000008b45048945088b760883c504e9a35c09008d76008b46 *0489450cbe04ad1108c7450060b90608ff2683c504ebbb8d760074b9060888b9060888b9060888 *b9060888b9060888b90608a0b5060803000000250001008b46048945008b7508c745fcb4b90608 *83c5fcff268d7600e977ffffff8d7600b4b90608ccb90608ccb90608ccb90608ccb90608ccb906 *08a0b506080200000025000100a0b506080b00020000000000110001008d45f83b43547308be3c *ae1108ff63fc8b7500c745fcf8b9060883c5fcff269054d1110804ad11082cba06080200000015 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0 *eba689f628ba06080b000200000000001100030083c70c3b7b5c760fbe44ae1108c7436c030000 *00ff63fcc747f83cba06088b45008947fc8b4d04890f8d57f8895504be54d11108e95b5709008d *7600dcd011084cae1108b0ba060800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e86943090083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f44cae1108bedcd0110883c5f0e9ed56090090bcd1110814ad11 *085cae110802000000240000008b45088b4d04894d088945048b7608e9d05a090020bb06080200 *0000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4 *be14ad1108c745ec30bb060883c5ecff2689f602000000240000008b45088b4d04894d08894504 *8b7608e9745a090020bb060802000000150001008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e08894df08b56048955f4be14ad1108c745ec8cbb060883c5ecff2689f6020000002400 *00008b45088b4d04894d088945048b7608e9185a090020bb060802000000150001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be14ad1108c745ece8bb06 *0883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e9bc59090020bb06 *0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be14ad1108c745ec44bc060883c5ecff2689f602000000240000008b45088b4d04894d08 *8945048b7608e96059090020bb060802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be14ad1108c745eca0bc060883c5ecff2689f6020000 *00240000008b45088b4d04894d088945048b7608e90459090020bb060802000000150001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be14ad1108c745ec *fcbc060883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e9a8580900 *20bb060802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df0 *8b56048955f4be14ad1108c745ec58bd060883c5ecff2689f602000000240000008b45088b4d04 *894d088945048b7608e94c58090020bb060802000000150001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df08b56048955f4be14ad1108c745ecb4bd060883c5ecff2689f6 *02000000240000008b45088b4d04894d088945048b7608e9f057090024bb060802000000150001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be5cae1108 *c745ec10be060883c5ecff2689f61cbb060804000000120007008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecd4bd06088b460c8947f08b4610 *8947f4c747f830be06088b46048947fc8b460889078d47ec8945f48d47f88945f0bebcd1110883 *c5ece94257090089f61cbb060806000000120007008d45ec3b4354720883c7203b7b5c760ac743 *6c08000000ff63f8c745f8d46d10088975fcc747e478bd06088b46148947e88b46188947ecc747 *f070be06088b46048947f48b46088947f88b460c8947fc8b461089078d47e48945f48d47f08945 *f0bebcd1110883c5ece9c656090089f61cbb060808000000120007008d45ec3b4354720883c728 *3b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dc1cbd06088b461c8947e08b *46208947e4c747e8e0be06088b46048947ec8b46088947f08b460c8947f48b46108947f88b4614 *8947fc8b461889078d47dc8945f48d47e88945f0bebcd1110883c5ece93e56090089f61cbb0608 *0a000000120007008d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d *10088975fcc747d4c0bc06088b46248947d88b46288947dcc747e05cbf06088b46048947e48b46 *088947e88b460c8947ec8b46108947f08b46148947f48b46188947f88b461c8947fc8b46208907 *8d47d48945f48d47e08945f0bebcd1110883c5ece9aa55090089f61cbb06080c00000012000700 *8d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747cc *64bc06088b462c8947d08b46308947d4c747d8e4bf06088b46048947dc8b46088947e08b460c89 *47e48b46108947e88b46148947ec8b46188947f08b461c8947f48b46208947f88b46248947fc8b *462889078d47cc8945f48d47d88945f0bebcd1110883c5ece90a55090089f61cbb06080e000000 *120007008d45ec3b4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975 *fcc747c408bc06088b46348947c88b46388947ccc747d078c006088b46048947d48b46088947d8 *8b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b4624 *8947f48b46288947f88b462c8947fc8b463089078d47c48945f48d47d08945f0bebcd1110883c5 *ece95e54090089f61cbb060810000000120007008d45ec3b4354720883c7483b7b5c760ac7436c *12000000ff63f8c745f8d46d10088975fcc747bcacbb06088b463c8947c08b46408947c4c747c8 *18c106088b46048947cc8b46088947d08b460c8947d48b46108947d88b46148947dc8b46188947 *e08b461c8947e48b46208947e88b46248947ec8b46288947f08b462c8947f48b46308947f88b46 *348947fc8b463889078d47bc8945f48d47c88945f0bebcd1110883c5ece9a653090089f61cbb06 *08090000002400070083c7503b7b5c760ac7436c14000000ff63f8c747b450bb06088b45048947 *b88b46248947bcc747c0c4c106088b45248947c48b46048947c88b45208947cc8b46088947d08b *451c8947d48b460c8947d88b45188947dc8b46108947e08b45148947e48b46148947e88b451089 *47ec8b46188947f08b450c8947f48b461c8947f88b45088947fc8b462089078d47b48945248d47 *c0894520bebcd1110883c51ce9f45209001cbb060801000000240007008b46248945e48b462089 *45e88b461c8945ec8b46188945f08b46148945f48b46108945f88b460c8945fc8b46088945008b *45048b4e04894d0489c6c745e07cc2060883c5e0ff26901cbb06080b0002000000000011000700 *8d45e03b43547308be6cae1108ff63fc8b7500c745002cc30608ff2654d111086cae1108a4c306 *0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b5604 *8955f083c5f0ebaa89f6a0c306080b000200000000001100030083c70c3b7b5c760fbe74ae1108 *c7436c03000000ff63fcc747f8b4c306088b45008947fc8b4d04890f8d57f8895504be54d11108 *e9e34d09008d7600bcd1110864a6110804ad110804ad110802000000240000008b45088b4d0489 *4d088945048b7608e9c051090030c4060802000000150001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df08b56048955f4be04ad1108c745ec40c4060883c5ecff2689f602 *000000240000008b45088b4d04894d088945048b7608e96451090030c406080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be04ad1108c7 *45ec9cc4060883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e90851 *09002cc4060802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0889 *4df08b56048955f4be64a61108c745ecf8c4060883c5ecff2689f634c406080200000015000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0e987f4 *ffff8d760028c406080400000012000b008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec18c506088b460c8947f08b46108947f4c747f858c506 *088b46048947fc8b460889078d47ec8945f48d47f88945f0bebcd1110883c5ece92250090089f6 *28c406080600000012000f008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c7 *45f8d46d10088975fcc747e4bcc406088b46148947e88b46188947ecc747f090c506088b460489 *47f48b46088947f88b460c8947fc8b461089078d47e48945f48d47f08945f0bebcd1110883c5ec *e9a64f090089f628c406080400000024000f0083c7283b7b5c760ac7436c0a000000ff63f8c747 *dc60c406088b45048947e08b46108947e4c747e800c606088b45108947ec8b46048947f08b450c *8947f48b46088947f88b45088947fc8b460c89078d47dc8945108d47e889450cbebcd1110883c5 *08e9304f090028c406080100000024000f008b46108945f88b460c8945fc8b46088945008b4504 *8b4e04894d0489c6c745f47cc6060883c5f4ff268d760028c406080b0002000000000011000f00 *8d45f43b43547308be8cae1108ff63fc8b7500c74500f0c60608ff2654d111088cae11084cc706 *0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b5604 *8955f083c5f0ebaa89f648c706080b000200000000001100030083c70c3b7b5c760fbe94ae1108 *c7436c03000000ff63fcc747f85cc706088b45008947fc8b4d04890f8d57f8895504be54d11108 *e93b4a09008d760048d41108acae110844d41108acae11083cd41108acae1108d0c70608000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e83936090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4acae11 *08be48d4110883c5f0e9bd49090090d8c7060800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8d535090083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f4acae1108be44d4110883c5f0e95949090090e0c7 *060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e87135090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4acae1108be3cd4110883c5f0e9f548090090c4d11108d4d1110828d41108a8d6110888d611 *0898d6110884ac1108f4ac110844ad110818c9060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b928051108894df4bed4d1110883c5f0e9b74609008d760018 *c90608420000002400010083c70c3b7b5c761ec7450080c90608c7436c03000000b8ff00000083 *f000894320e90a740900c747f844c906088d4ff8894d088b750483c504e94a48090089f618c906 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97405110889 *4df4bed4d1110883c5f0e92f4609008d760083c504e97cffffff18c9060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980051108894df4bed4d1110883c5f0 *e9eb4509008d760018c90608420000002400010083c70c3b7b5c761ec745004cca0608c7436c03 *000000b8ff00000083f000894320e93e730900c747f810ca06088d4ff8894d088b750483c504e9 *7e47090089f683c504ebbb8d760018c9060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9cc051108894df4bed4d1110883c5f0e95b4509008d760018c90608 *420000002400010083c70c3b7b5c761ec74500dcca0608c7436c03000000b8ff00000083f00089 *4320e9ae720900c747f8a0ca06088d4ff8894d088b750483c504e9ee46090089f618c906080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b918061108894df4be *d4d1110883c5f0e9d34409008d760083c504e97cffffff18c9060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b928061108894df4bed4d1110883c5f0e98f44 *09008d760018c90608420000002400010083c70c3b7b5c761ec74500a8cb0608c7436c03000000 *b8ff00000083f000894320e9e2710900c747f86ccb06088d4ff8894d088b750483c504e9224609 *0089f683c504ebbb8d760018c9060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b974061108894df4bed4d1110883c5f0e9ff4309008d760018c90608420000 *002400010083c70c3b7b5c761ec7450038cc0608c7436c03000000b8ff00000083f000894320e9 *52710900c747f8fccb06088d4ff8894d088b750483c504e99245090089f683c508ebbb8d760018 *c9060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c00611 *08894df4bed4d1110883c5f0e96f4309008d760018c90608420000002400010083c70c3b7b5c76 *1ec74500c8cc0608c7436c03000000b8ff00000083f000894320e9c2700900c747f88ccc06088d *4ff8894d088b750483c504e90245090089f618c9060800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b90c071108894df4bed4d1110883c5f0e9e74209008d7600 *83c508e97cffffff18c9060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b91c071108894df4bed4d1110883c5f0e9a34209008d760018c90608420000002400 *010083c70c3b7b5c761ec7450094cd0608c7436c03000000b8ff00000083f000894320e9f66f09 *00c747f858cd06088d4ff8894d088b750483c504e93644090089f683c508ebbb8d760018c90608 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b968071108894d *f4bed4d1110883c5f0e9134209008d760018c90608420000002400010083c70c3b7b5c761ec745 *0024ce0608c7436c03000000b8ff00000083f000894320e9666f0900c747f8e8cd06088d4ff889 *4d088b750483c504e9a643090089f683c50cebbb8d760018c9060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9b4071108894df4bed4d1110883c5f0e98341 *09008d760018c90608420000002400010083c70c3b7b5c761ec74500b4ce0608c7436c03000000 *b8ff00000083f000894320e9d66e0900c747f878ce06088d4ff8894d088b750483c504e9164309 *0089f618c9060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b900081108894df4bed4d1110883c5f0e9fb4009008d760083c50ce97cffffff18c90608000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910081108894df4bed4 *d1110883c5f0e9b74009008d760018c90608420000002400010083c70c3b7b5c761ec7450080cf *0608c7436c03000000b8ff00000083f000894320e90a6e0900c747f844cf06088d4ff8894d088b *750483c504e94a42090089f683c50cebbb8d760018c9060800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b95c081108894df4bed4d1110883c5f0e9274009008d *760018c90608420000002400010083c70c3b7b5c761ec7450010d00608c7436c03000000b8ff00 *000083f000894320e97a6d0900c747f8d4cf06088d4ff8894d088b750483c504e9ba41090089f6 *83c510ebbb8d760018c9060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9a8081108894df4bed4d1110883c5f0e9973f09008d760018c90608420000002400 *010083c70c3b7b5c761ec74500a0d00608c7436c03000000b8ff00000083f000894320e9ea6c09 *00c747f864d006088d4ff8894d088b750483c504e92a41090089f618c906080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f4081108894df4bed4d1110883c5 *f0e90f3f09008d760083c510e97cffffff18c9060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b904091108894df4bed4d1110883c5f0e9cb3e09008d760018 *c90608420000002400010083c70c3b7b5c761ec745006cd10608c7436c03000000b8ff00000083 *f000894320e91e6c0900c747f830d106088d4ff8894d088b750483c504e95e40090089f683c510 *ebbb8d760018c9060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b950091108894df4bed4d1110883c5f0e93b3e09008d760018c90608420000002400010083 *c70c3b7b5c761ec74500fcd10608c7436c03000000b8ff00000083f000894320e98e6b0900c747 *f8c0d106088d4ff8894d088b750483c504e9ce3f090089f683c510ebbb8d760083c7143b7b5c76 *0ac7436c05000000ff63f8c747f00c6207088b45188947f48b45108947f88b450c8947fc8b4508 *89078d47f08945188b750483c514e9833f09008d760083c510e96cffffff88d2060844d2060818 *c90608060000002500010018c9060807000000240001008b460483f87d750f8b7504c74504a4d2 *060883c504ff2683c514e92dffffff908b46088945008b7604c745fcb0d2060883c5fcff268d76 *00d0d206083cd2060818c9060806000000250001008b7604c74500fcd20608ff2683c510e9ecfe *ffff08d3060808d3060808d3060808d3060808d30608fcd2060808d3060808d3060818c9060806 *0000002500010018c9060804000100060000000b0001008d45e43b43547303ff63fc8b46048945 *fc8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e8 *3cd3060883c5e8ff2618c9060804000100060000000b0003008d45f83b4354720883c71c3b7b5c *760ac7436c07000000ff63fcc747e84cd306088b46048947ec8b46088947f08b460c8947f48b46 *108947f88b45008947fc8b461489078d47e8894500c745fc28d411088b761883c5f8e91c420900 *28c9060800000200120005008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4f4ac11 *08be98d6110883c5f0e9db3d09008d760083c7283b7b5c760ac7436c0a000000ff63f8c747dc9c *d306088b45148947e08b45188947e48b45108947e88b450c8947ec8b45088947f08b45048947f4 *c747f804d406088d47dc8945188d47f88945148b750483c510e9894109009083c510e9d8fcffff *8cd4060830d4060818c90608060000002500530018c9060807000000240053008b460483f83d75 *0f8b7504c74504a8d4060883c504ff2683c514e999fcffff908b46088945008b7604c745fcb4d4 *060883c5fcff268d7600d4d40608acd1060818c9060806000000250053008b7604c7450000d506 *08ff2683c510e958fcffff0cd506080cd506080cd506080cd506080cd5060800d506080cd50608 *0cd5060818c90608060000002500530018c9060804000100060000000b0053008d45e43b435473 *03ff63fc8b46048945fc8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745e840d5060883c5e8ff2683c71c3b7b5c760ac7436c07000000ff63f8c747e8 *50d506088b45148947ec8b45188947f08b45108947f48b450c8947f88b45088947fc8b45048907 *8d47e8894518c7451428d411088b750483c510e93040090090d506081cd1060818c90608060000 *002500530083c70c3b7b5c760ac7436c03000000ff63f8c747f8ecd006088b46048945fc8d4ff8 *894df8bec4d11108c74500f8d5060883c5f4e9e33f09008d760083c510e964faffff34d6060834 *d6060834d6060834d60608f8d5060834d6060834d6060834d6060814c90608060000002500a700 *14c9060804000100060000000b00a7008d45dc3b43547303ff63fc8b46048945fc8b46188945ec *8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e868d6060883c5e8 *ff2683c71c3b7b5c760ac7436c07000000ff63f8c747e878d606088b45148947ec8b45188947f0 *8b45108947f48b450c8947f88b45088947fc8b450489078d47e8894518c7451428d411088b7504 *83c510e9083f090083c510e9fcf8ffff0cd70608b8d6060814c90608060000002500a70014c906 *08070000002400a7008b460483f82c750f8b7504c7450428d7060883c504ff2683c514e9bdf8ff *ff908b46088945008b7604c745fc34d7060883c5fcff268d760054d7060850d0060814c9060806 *0000002500a7008b7604c7450080d70608ff2683c510e97cf8ffff8cd706088cd706088cd70608 *8cd706088cd7060880d706088cd706088cd7060814c90608060000002500a70014c90608040001 *00060000000b00a7008d45e43b43547303ff63fc8b46048945fc8b46188945ec8b46148945f08b *46108945f48b460c8945f88b45008b4e08894d0089c6c745e8c0d7060883c5e8ff2614c9060804 *000100050000000b00a7008d45f83b4354720883c71c3b7b5c760ac7436c07000000ff63fcc747 *e8d0d706088b46048947ec8b46088947f08b460c8947f48b45008947f88b46108947fc8b461489 *078d47e8894500c745fc28d411088b761483c5f8e9983d090028c9060800000200120005008d45 *f03b43547303ff63f8c745f8d46d10088975fcc745f4f4ac1108be98d6110883c5f0e957390900 *8d760083c7243b7b5c760ac7436c09000000ff63f8c747e020d806088b45108947e48b45148947 *e88b450c8947ec8b45088947f08b45048947f4c747f888d806088d47e08945148d47f88945108b *750483c50ce90b3d09008d760083c50ce96cf6ffff0cd90608b4d8060814c90608050000002500 *a70014c90608060000002400a7008b460483f83d750f8b7504c7450428d9060883c504ff2683c5 *10e92df6ffff908b46088945008b7604c745fc34d9060883c5fcff268d760054d90608c0cf0608 *14c90608050000002500a7008b7604c7450080d90608ff2683c50ce9ecf5ffff8cd906088cd906 *088cd906088cd906088cd9060880d906088cd906088cd9060814c90608050000002500a70014c9 *060804000100050000000b00a7008d45e83b43547303ff63fc8b46048945fc8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745ecc0d9060883c5ecff2689f683c7183b *7b5c760ac7436c06000000ff63f8c747ecd0d906088b45108947f08b45148947f48b450c8947f8 *8b45088947fc8b450489078d47ec894514c7451028d411088b750483c50ce9ba3b090089f60cda *060830cf060814c90608050000002500a70083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *00cf06088b46048945fc8d4ff8894df8bec4d11108c7450070da060883c5f4e96b3b09008d7600 *83c50ce900f4ffffacda0608acda0608acda0608acda060870da0608acda0608acda0608acda06 *0814c90608050000002500a70014c9060804000100050000000b00a7008d45e03b43547303ff63 *fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745ec *e0da060883c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8c747ecf0da06088b4510 *8947f08b45148947f48b450c8947f88b45088947fc8b450489078d47ec894514c7451028d41108 *8b750483c50ce99a3a090089f683c50ce9a0f2ffff7cdb06082cdb060814c90608050000002500 *a70014c90608060000002400a7008b460483f82c750f8b7504c7450498db060883c504ff2683c5 *10e961f2ffff908b46088945008b7604c745fca4db060883c5fcff268d7600c4db060864ce0608 *14c90608050000002500a7008b7604c74500f0db0608ff2683c50ce920f2fffffcdb0608fcdb06 *08fcdb0608fcdb0608fcdb0608f0db0608fcdb0608fcdb060814c90608050000002500a70014c9 *060804000100050000000b00a7008d45e83b43547303ff63fc8b46048945fc8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745ec30dc060883c5ecff2689f614c90608 *04000100040000000b00a7008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc7 *47ec40dc06088b46048947f08b46088947f48b45008947f88b460c8947fc8b461089078d47ec89 *4500c745fc28d411088b761083c5f8e93239090089f628c9060800000200120003008d45f03b43 *547303ff63f8c745f8d46d10088975fcc745f484ac1108be98d6110883c5f0e9ef3409008d7600 *83c7203b7b5c760ac7436c08000000ff63f8c747e48cdc06088b450c8947e88b45108947ec8b45 *088947f08b45048947f4c747f8f0dc06088d47e48945108d47f889450c8b750483c508e9a93809 *009083c508e920f0ffff6cdd06081cdd060814c90608040000002500e70014c906080500000024 *00e7008b460483f83d750f8b7504c7450488dd060883c504ff2683c50ce9e1efffff908b460889 *45008b7604c745fc94dd060883c5fcff268d7600b4dd0608d4cd060814c90608040000002500e7 *008b7604c74500e0dd0608ff2683c508e9a0efffffecdd0608ecdd0608ecdd0608ecdd0608ecdd *0608e0dd0608ecdd0608ecdd060814c90608040000002500e70014c9060804000100040000000b *00e7008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e0889 *4d0089c6c745f020de060883c5f0ff2683c7143b7b5c760ac7436c05000000ff63f8c747f030de *06088b450c8947f48b45108947f88b45088947fc8b450489078d47f0894510c7450c28d411088b *750483c508e96837090064de060844cd060814c90608040000002500e70083c70c3b7b5c760ac7 *436c03000000ff63f8c747f814cd06088b46048945fc8d4ff8894df8bec4d11108c74500c0de06 *0883c5f4e91b3709008d760083c508e9c4edfffffcde0608fcde0608fcde0608fcde0608c0de06 *08fcde0608fcde0608fcde060814c90608040000002500e70014c9060804000100040000000b00 *e7008d45e43b43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d *0089c6c745f030df060883c5f0ff2683c7143b7b5c760ac7436c05000000ff63f8c747f040df06 *088b450c8947f48b45108947f88b45088947fc8b450489078d47f0894510c7450c28d411088b75 *0483c508e95836090083c508e974ecffffbcdf060874df060814c90608040000002500e70014c9 *0608050000002400e7008b460483f82c750f8b7504c74504d8df060883c504ff2683c50ce935ec *ffff908b46088945008b7604c745fce4df060883c5fcff268d760004e0060878cc060814c90608 *040000002500e7008b7604c7450030e00608ff2683c508e9f4ebffff3ce006083ce006083ce006 *083ce006083ce0060830e006083ce006083ce0060814c90608040000002500e70014c906080400 *0100040000000b00e7008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745f070e0060883c5f0ff2614c9060804000100030000000b00e700 *8d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f080e006088b46048947f4 *8b45008947f88b46088947fc8b460c89078d47f0894500c745fc28d411088b760c83c5f8e90035 *090028c9060800000200120009008d45f03b43547303ff63f8c745f8d46d10088975fcc745f444 *ad1108be98d6110883c5f0e9bf3009008d760083c71c3b7b5c760ac7436c07000000ff63f8c747 *e8c4e006088b45088947ec8b450c8947f08b45048947f4c747f820e106088d47e889450c8d47f8 *8945088b750483c504e97f3409008d760083c504e908eaffff98e106084ce1060814c906080300 *00002500e70114c90608040000002400e7018b460483f83d750f8b7504c74504b4e1060883c504 *ff2683c508e9c9e9ffff908b46088945008b7604c745fcc0e1060883c5fcff268d7600e0e10608 *e8cb060814c90608030000002500e7018b7604c745000ce20608ff2683c504e988e9ffff18e206 *0818e2060818e2060818e2060818e206080ce2060818e2060818e2060814c90608030000002500 *e70114c9060804000100030000000b00e7018d45f03b43547303ff63fc8b46048945fc8b460c89 *45f88b45008b4e08894d0089c6c745f44ce2060883c5f4ff2689f683c7103b7b5c760ac7436c04 *000000ff63f8c747f45ce206088b45088947f88b450c8947fc8b450489078d47f489450cc74508 *28d411088b750483c504e94633090089f68ce2060858cb060814c90608030000002500e70183c7 *0c3b7b5c760ac7436c03000000ff63f8c747f828cb06088b46048945fc8d4ff8894df8bec4d111 *08c74500e4e2060883c5f4e9f73209008d760083c504e9b4e7ffff20e3060820e3060820e30608 *20e30608e4e2060820e3060820e3060820e3060814c90608030000002500e70114c90608040001 *00030000000b00e7018d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e0889 *4d0089c6c745f454e3060883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4 *64e306088b45088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c5 *04e93e32090089f683c504e96ce6ffffd8e3060894e3060814c90608030000002500e70114c906 *08040000002400e7018b460483f87b750f8b7504c74504f4e3060883c504ff2683c508e92de6ff *ff908b46088945008b7604c745fc00e4060883c5fcff268d760020e406088cca060814c9060803 *0000002500e7018b7604c745004ce40608ff2683c504e9ece5ffff58e4060858e4060858e40608 *58e4060858e406084ce4060858e4060858e4060814c90608030000002500e70114c90608040001 *00030000000b00e7018d45f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e0889 *4d0089c6c745f48ce4060883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4 *9ce406088b45088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c5 *04e90631090089f6cce40608fcc9060814c90608030000002500e70183c70c3b7b5c760ac7436c *03000000ff63f8c747f8ccc906088b46048945fc8d4ff8894df8bec4d11108c7450024e5060883 *c5f4e9b73009008d760083c504e918e4ffff60e5060860e5060860e5060860e5060824e5060860 *e5060860e5060860e5060814c90608030000002500e70114c9060804000100030000000b00e701 *8d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f494e5 *060883c5f4ff2689f614c90608000000002400e70183c7103b7b5c760ac7436c04000000ff63f8 *c747f4a4e506088b46108947f88b460c8947fc8b460489078d47f4894500c745fc28d411088b76 *0483c5f8e9f22f090089f614c90608000002001200ef018d45ec3b43547303ff63f8c745f8d46d *10088975fcbea8d61108c745f4e0e5060883c5f4ff2689f614c90608000002001800ff018d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8c917090083c404 *8d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f830e606088d47f88945f4c7 *45f028121208be88d6110883c5ece94c2f090020d41108f4ae1108c8e606080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e851170900 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4ae1108be20d411 *0883c5f0e9d52a090090d4d4110814af110834e7060800000200180003008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8e516090083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f414af1108bed4d4110883c5f0e9692a0900 *90d4d1110890d1110848d11108bcd41108c0d4110880a4110894ac110854ad1108b0e706080000 *0200120001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e9f1 *290900900100000024000000c74500d81112088b760483c5fce9e22d090089f6b8e70608010001 *00130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be94ac1108c745 *f020e8060883c5f0ff26a8e7060801000100130015008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747eccce70608c747f840e806088b46048947fc *8d47ec8945f48d47f88945f0be48d1110883c5ece94b2d09008d7600a0e7060800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b99c091108894df4bed4d1110883 *c5f0e9232709008d7600a0e7060800000200120011008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8d8e806088d4ff8894df4bec0d4110883c5 *f0e9b628090089f6a0e7060801000100130055008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747ec78e806088b46048947f0c747f814e906088d47 *ec8945f48d47f88945f0be48d1110883c5ece9632c09008d7600a0e7060800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b0091108894df4bed4d1110883c5f0 *e93b2609008d7600a0e7060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8c0e906088d4ff8894df4bec0d4110883c5f0e9 *ce27090089f6a0e7060801000100130055008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec60e906088b46048947f0c747f8fce906088d47ec89 *45f48d47f88945f0be48d1110883c5ece97b2b09008d76000100000024000000c74500d8111208 *8b760483c5fce95e2b090089f6b8e7060801000100130001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4be94ac1108c745f0a4ea060883c5f0ff26a0e706080200000015 *0055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec48ea06088b46088947f0c747f8c4ea06088b46048947fc8d47ec8945f48d47f88945f0be *48d1110883c5ece9c12a090090a0e7060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9b4091108894df4bed4d1110883c5f0e99b2409008d7600a0e7060800 *000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f860eb06088d4ff8894df4bec0d4110883c5f0e92e26090089f6a0e70608020000 *00150055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d100889 *75fcc747ecfcea06088b46048947f08b46088947f4c747f89ceb06088d47ec8945f48d47f88945 *f0be48d1110883c5ece9d529090090a0e7060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9c4091108894df4bed4d1110883c5f0e9af2309008d7600a0e706 *0800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f84cec06088d4ff8894df4bec0d4110883c5f0e94225090089f6a0e7060802 *000000150055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ece8eb06088b46048947f08b46088947f4c747f888ec06088d47ec8945f48d47f8 *8945f0be48d1110883c5ece9e9280900900100000024000000c74500d81112088b760483c5fce9 *ce28090089f6b4e7060801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be80a41108c745f034ed060883c5f0ff26a0e7060803000000120075008d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecd4ec0608 *8b46088947f08b460c8947f4c747f854ed06088b46048947fc8d47ec8945f48d47f88945f0be48 *d1110883c5ece92b2809008d7600a0e7060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9c8091108894df4bed4d1110883c5f0e9032209008d7600a0e70608 *00000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8f8ed06088d4ff8894df4bec0d4110883c5f0e99623090089f6a0e706080300 *0000120075008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d1008 *8975fcc747e88ced06088b46048947ec8b46088947f08b460c8947f4c747f834ee06088d47e889 *45f48d47f88945f0be48d1110883c5ece9372709008d7600a0e7060800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9dc091108894df4bed4d1110883c5f0e90f *2109008d7600a0e7060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8ecee06088d4ff8894df4bec0d4110883c5f0e9a222 *090089f6a0e7060803000000120075008d45ec3b4354720883c71c3b7b5c760ac7436c07000000 *ff63f8c745f8d46d10088975fcc747e880ee06088b46048947ec8b46088947f08b460c8947f4c7 *47f828ef06088d47e88945f48d47f88945f0be48d1110883c5ece9432609008d7600bce7060801 *000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d811 *120883c5f0e9e68fffff89f6a0e70608040000001200f5008d45ec3b4354720883c71c3b7b5c76 *0ac7436c07000000ff63f8c745f8d46d10088975fcc747e874ef06088b46088947ec8b460c8947 *f08b46108947f4c747f8e0ef06088b46048947fc8d47e88945f48d47f88945f0be48d1110883c5 *ece99925090090a0e7060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9e0091108894df4bed4d1110883c5f0e9731f09008d7600a0e7060800000200120011 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f888f006088d4ff8894df4bec0d4110883c5f0e90621090089f6a0e70608040000001200f5008d *45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e418 *f006088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f8c4f006088d47e48945 *f48d47f88945f0be48d1110883c5ece9a124090090a0e7060800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9f4091108894df4bed4d1110883c5f0e97b1e0900 *8d7600a0e7060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f880f106088d4ff8894df4bec0d4110883c5f0e90e20090089 *f6a0e70608040000001200f5008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8 *c745f8d46d10088975fcc747e410f106088b46048947e88b46088947ec8b460c8947f08b461089 *47f4c747f8bcf106088d47e48945f48d47f88945f0be48d1110883c5ece9a92309009001000000 *240000008b4504894500c74504301212088b761483c5fce988230900a4e7060801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f074f206 *0883c5f0ff26a0e70608420000002400ff0083c7203b7b5c760ac7436c08000000ff63f8c747e4 *08f206088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f898f206088b450489 *47fc8d47e48945088d47f8894504bebcd41108e9f0220900a0e706080b000200000000001100ff *008d45fc3b43547308be38af1108ff63fc8b7504c745fcd0f2060883c5fcff269038af110840af *110854f3060800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8c50a090083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f440af1108be38af110883c5f0e9491e090090ccd4110848af1108c0f30608000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8590a090083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f448af11 *08beccd4110883c5f0e9dd1d0900901cd5110814af11082cf4060800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8ed09090083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f414af1108be1cd5110883c5f0 *e9711d090090d4d1110890d1110848d11108bcd41108c0d41108a4ac110868af1108a8f4060800 *000200120001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e9 *fd1c0900900100000024000000c74500d81112088b760483c5fce9ee20090089f6acf406080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea4ac1108c7 *45f014f5060883c5f0ff26a0f406080100010013000d008d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ecc0f40608c747f834f506088b46048947 *fc8d47ec8945f48d47f88945f0be48d1110883c5ece9572009008d760098f40608000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9000a1108894df4bed4d11108 *83c5f0e92f1a09008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f8ccf506088d4ff8894df4bec0d4110883 *c5f0e9c21b090089f698f4060801000100130035008d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747ec6cf506088b46048947f0c747f808f606088d *47ec8945f48d47f88945f0be48d1110883c5ece96f1f09008d760098f406080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9100a1108894df4bed4d1110883c5 *f0e9471909008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8b4f606088d4ff8894df4bec0d4110883c5f0 *e9da1a090089f698f4060801000100130035008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec54f606088b46048947f0c747f8f0f606088d47ec *8945f48d47f88945f0be48d1110883c5ece9871e09008d76000100000024000000c74500d81112 *088b760483c5fce96a1e090089f6acf4060801000100130001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df4bea4ac1108c745f098f7060883c5f0ff2698f4060802000000 *150035008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975 *fcc747ec3cf706088b46088947f0c747f8b8f706088b46048947fc8d47ec8945f48d47f88945f0 *be48d1110883c5ece9cd1d09009098f4060800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9140a1108894df4bed4d1110883c5f0e9a71709008d760098f40608 *00000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f854f806088d4ff8894df4bec0d4110883c5f0e93a19090089f698f406080200 *0000150035008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d1008 *8975fcc747ecf0f706088b46048947f08b46088947f4c747f890f806088d47ec8945f48d47f889 *45f0be48d1110883c5ece9e11c09009098f4060800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9240a1108894df4bed4d1110883c5f0e9bb1609008d760098f4 *060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f840f906088d4ff8894df4bec0d4110883c5f0e94e18090089f698f40608 *02000000150035008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ecdcf806088b46048947f08b46088947f4c747f87cf906088d47ec8945f48d47 *f88945f0be48d1110883c5ece9f51b0900900100000024000000c74500d81112088b760483c5fc *e9da1b090089f6acf4060801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4bea4ac1108c745f028fa060883c5f0ff2698f4060803000000120035008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecc8f906 *088b46088947f08b460c8947f4c747f848fa06088b46048947fc8d47ec8945f48d47f88945f0be *48d1110883c5ece9371b09008d760098f4060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9280a1108894df4bed4d1110883c5f0e90f1509008d760098f406 *0800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8ecfa06088d4ff8894df4bec0d4110883c5f0e9a216090089f698f4060803 *000000120035008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10 *088975fcc747e880fa06088b46048947ec8b46088947f08b460c8947f4c747f828fb06088d47e8 *8945f48d47f88945f0be48d1110883c5ece9431a09008d760098f4060800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9380a1108894df4bed4d1110883c5f0e9 *1b1409008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8e0fb06088d4ff8894df4bec0d4110883c5f0e9ae *15090089f698f4060803000000120035008d45ec3b4354720883c71c3b7b5c760ac7436c070000 *00ff63f8c745f8d46d10088975fcc747e874fb06088b46048947ec8b46088947f08b460c8947f4 *c747f81cfc06088d47e88945f48d47f88945f0be48d1110883c5ece94f1909008d760001000000 *24000000c74500d81112088b760483c5fce93219090089f6acf4060801000100130001008d45ec *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea4ac1108c745f0d0fc060883c5f0 *ff2698f4060804000000120035008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63 *f8c745f8d46d10088975fcc747e868fc06088b46088947ec8b460c8947f08b46108947f4c747f8 *f0fc06088b46048947fc8d47e88945f48d47f88945f0be48d1110883c5ece9891809009098f406 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c0a110889 *4df4bed4d1110883c5f0e9631209008d760098f4060800000200120011008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f898fd06088d4ff8894d *f4bec0d4110883c5f0e9f613090089f698f4060804000000120035008d45ec3b4354720883c720 *3b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e428fd06088b46048947e88b *46088947ec8b460c8947f08b46108947f4c747f8d4fd06088d47e48945f48d47f88945f0be48d1 *110883c5ece9911709009098f4060800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b94c0a1108894df4bed4d1110883c5f0e96b1109008d760098f40608000002 *00120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f890fe06088d4ff8894df4bec0d4110883c5f0e9fe12090089f698f406080400000012 *0035008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fc *c747e420fe06088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f8ccfe06088d *47e48945f48d47f88945f0be48d1110883c5ece999160900900100000024000000c74500d81112 *088b760483c5fce97e16090089f6acf4060801000100130001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df4bea4ac1108c745f084ff060883c5f0ff2698f4060805000000 *120035008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975 *fcc747e418ff06088b46088947e88b460c8947ec8b46108947f08b46148947f4c747f8a4ff0608 *8b46048947fc8d47e48945f48d47f88945f0be48d1110883c5ece9cf1509008d760098f4060800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9500a1108894df4 *bed4d1110883c5f0e9a70f09008d760098f4060800000200120011008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8540007088d4ff8894df4be *c0d4110883c5f0e93a11090089f698f4060805000000120035008d45ec3b4354720883c7243b7b *5c760ac7436c09000000ff63f8c745f8d46d10088975fcc747e0dcff06088b46048947e48b4608 *8947e88b460c8947ec8b46108947f08b46148947f4c747f8900007088d47e08945f48d47f88945 *f0be48d1110883c5ece9cf1409008d760098f4060800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9600a1108894df4bed4d1110883c5f0e9a70e09008d760098 *f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8540107088d4ff8894df4bec0d4110883c5f0e93a10090089f698f406 *0805000000120035008d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c745f8d4 *6d10088975fcc747e0dc0007088b46048947e48b46088947e88b460c8947ec8b46108947f08b46 *148947f4c747f8900107088d47e08945f48d47f88945f0be48d1110883c5ece9cf1309008d7600 *0100000024000000c74500d81112088b760483c5fce9b213090089f6acf4060801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea4ac1108c745f0500207 *0883c5f0ff2698f4060806000000120035008d45ec3b4354720883c7243b7b5c760ac7436c0900 *0000ff63f8c745f8d46d10088975fcc747e0dc0107088b46088947e48b460c8947e88b46108947 *ec8b46148947f08b46188947f4c747f8700207088b46048947fc8d47e08945f48d47f88945f0be *48d1110883c5ece9fd1209009098f4060800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9640a1108894df4bed4d1110883c5f0e9d70c09008d760098f4060800 *000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8240307088d4ff8894df4bec0d4110883c5f0e96a0e090089f698f40608060000 *00120035008d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d100889 *75fcc747dca80207088b46048947e08b46088947e48b460c8947e88b46108947ec8b46148947f0 *8b46188947f4c747f8600307088d47dc8945f48d47f88945f0be48d1110883c5ece9f911090090 *98f4060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9780a *1108894df4bed4d1110883c5f0e9d30b09008d760098f4060800000200120011008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8280407088d4f *f8894df4bec0d4110883c5f0e9660d090089f698f4060806000000120035008d45ec3b43547208 *83c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dcac0307088b460489 *47e08b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947f4c747f864040708 *8d47dc8945f48d47f88945f0be48d1110883c5ece9f5100900900100000024000000c74500d811 *12088b760483c5fce9da10090089f6acf4060801000100130001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4bea4ac1108c745f02805070883c5f0ff2698f40608070000 *00120035008d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d100889 *75fcc747dcb00407088b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f0 *8b461c8947f4c747f8480507088b46048947fc8d47dc8945f48d47f88945f0be48d1110883c5ec *e91f1009008d760098f4060800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b97c0a1108894df4bed4d1110883c5f0e9f70909008d760098f40608000002001200 *11008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8040607088d4ff8894df4bec0d4110883c5f0e98a0b090089f698f406080700000012003500 *8d45ec3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d8 *800507088b46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947 *f08b461c8947f4c747f8400607088d47d88945f48d47f88945f0be48d1110883c5ece9130f0900 *8d760098f4060800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b98c0a1108894df4bed4d1110883c5f0e9eb0809008d760098f4060800000200120011008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8100707 *088d4ff8894df4bec0d4110883c5f0e97e0a090089f698f4060807000000120035008d45ec3b43 *54720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d88c0607088b *46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b461c89 *47f4c747f84c0707088d47d88945f48d47f88945f0be48d1110883c5ece9070e09008d76000100 *000024000000c74500d81112088b760483c5fce9ea0d090089f6acf4060801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea4ac1108c745f01808070883 *c5f0ff2698f4060808000000120035008d45ec3b4354720883c72c3b7b5c760ac7436c0b000000 *ff63f8c745f8d46d10088975fcc747d8980707088b46088947dc8b460c8947e08b46108947e48b *46148947e88b46188947ec8b461c8947f08b46208947f4c747f8380807088b46048947fc8d47d8 *8945f48d47f88945f0be48d1110883c5ece9290d09009098f4060800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9900a1108894df4bed4d1110883c5f0e90307 *09008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8f80807088d4ff8894df4bec0d4110883c5f0e9960809 *0089f698f4060808000000120035008d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff *63f8c745f8d46d10088975fcc747d4700807088b46048947d88b46088947dc8b460c8947e08b46 *108947e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f8340907088d47d489 *45f48d47f88945f0be48d1110883c5ece9190c09009098f4060800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9a00a1108894df4bed4d1110883c5f0e9f30509 *008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8080a07088d4ff8894df4bec0d4110883c5f0e986070900 *89f698f4060808000000120035008d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63 *f8c745f8d46d10088975fcc747d4800907088b46048947d88b46088947dc8b460c8947e08b4610 *8947e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f8440a07088d47d48945 *f48d47f88945f0be48d1110883c5ece9090b0900900100000024000000c74500d81112088b7604 *83c5fce9ee0a090089f6b0f4060801000100130001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e04894df4be68af1108c745f0140b070883c5f0ff2698f406080900000012007500 *8d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc747d4 *900a07088b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947 *ec8b46208947f08b46248947f4c747f8340b07088b46048947fc8d47d48945f48d47f88945f0be *48d1110883c5ece9270a09008d760098f4060800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9a40a1108894df4bed4d1110883c5f0e9ff0309008d760098f406 *0800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8fc0b07088d4ff8894df4bec0d4110883c5f0e99205090089f698f4060809 *000000120075008d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d46d10 *088975fcc747d06c0b07088b46048947d48b46088947d88b460c8947dc8b46108947e08b461489 *47e48b46188947e88b461c8947ec8b46208947f08b46248947f4c747f8380c07088d47d08945f4 *8d47f88945f0be48d1110883c5ece90f0909008d760098f4060800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9b80a1108894df4bed4d1110883c5f0e9e70209 *008d760098f4060800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8140d07088d4ff8894df4bec0d4110883c5f0e97a040900 *89f698f4060809000000120075008d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63 *f8c745f8d46d10088975fcc747d0840c07088b46048947d48b46088947d88b460c8947dc8b4610 *8947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f4c747f8500d07 *088d47d08945f48d47f88945f0be48d1110883c5ece9f70709008d760001000000240000008b45 *04894500c74504301212088b761483c5fce9d40709009cf4060801000100130001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0280e070883c5f0ff26 *98f406084200000024007f0083c7343b7b5c760ac7436c0d000000ff63f8c747d09c0d07088b46 *048947d48b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947 *ec8b46208947f08b46248947f4c747f84c0e07088b45048947fc8d47d08945088d47f8894504be *bcd41108e91e07090089f698f406080b0002000000000011007f008d45fc3b43547308be78af11 *08ff63fc8b7504c745fc840e070883c5fcff269078af110880af1108280f070800000200180003 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f1ee08 *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f480af1108be78af *110883c5f0e97502090090ccd4110888af1108940f070800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e885ee080083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f488af1108beccd4110883c5f0e9090209 *009048d41108a8af110844d41108a8af11083cd41108a8af11080010070800000200180003008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e809ee080083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a8af1108be48d41108 *83c5f0e98d010900900810070800000200180003008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e8a5ed080083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4a8af1108be44d4110883c5f0e929010900901010070800000200 *180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *41ed080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a8af1108 *be3cd4110883c5f0e9c500090090d4d41108f0af11084411070800000200180003008d45f03b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8d5ec080083c4048d47 *f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f0af1108bed4d4110883c5f0e9 *590009009070d1110840d1110814ad11086cae110821000000240000003975040f94c083e00183 *c508b92cdc0b088b34818b4d00f7d883c0fcff248190b411070801000000240001008b45048945 *fc897504be40d11108c74500c811070883c5f8e9f7ff08008d760021000000240000003975040f *94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff248190b411070801000000240001 *008b45048945fc897504be40d11108c745001c12070883c5f8e9a3ff08008d7600020000002400 *00008b7608e99c030900b011070802000000240003008b068b40fcc1e81083f80875148b460489 *4508be70d11108c7450070120708ff268b4508894500897508be40d11108c745044812070883c5 *fce946ff080089f621000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d00 *f7d883c0fcff248190b411070801000000240001008b45048945fc897504be40d11108c74500cc *12070883c5f8e9f3fe08008d760002000000240000008b7608e9ec020900b01107080200000024 *0003008b068b40fcc1e81083f80675148b4604894508be70d11108c7450020130708ff268b4508 *894500897508be40d11108c74504f812070883c5fce996fe080089f62100000024000000397504 *0f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff248190b4110708010000002400 *01008b45048945fc897504be40d11108c745007c13070883c5f8e943fe08008d76000200000024 *0000008b7608e93c020900b411070802000000240003008b068b40fcc1e81083f80375148b4604 *894508be14ad1108c74500d0130708ff268b4508894500897508be40d11108c74504a813070883 *c5fce9e6fd080089f621000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d *00f7d883c0fcff248190b411070801000000240001008b45048945fc897504be40d11108c74500 *2c14070883c5f8e993fd08008d7600b411070802000000240005008b068b40fcc1e81085c0750e *8b460489450883c504e9e6aeffff8b4508894500897508be40d11108c745045814070883c5fce9 *4dfd080090b01107080100000024000f008b068b40fcc1e81083f8067d4283f8037d1e85c0757c *8b46048945008b450489750489c6c745fc8414070883c5fcff2683f803755d8b46048945008b45 *0489750489c6c745fce413070883c5fcff2683f8087d1f83f80675398b46048945008b45048975 *0489c6c745fc3413070883c5fcff2683f808751a8b46048945008b450489750489c6c745fc8412 *070883c5fcff268975fcbe40d11108c74500f411070883c5f8e997fc08008d7600b01107080b00 *02000000000011000f008d45f83b43547308be14b01108ff63fc8b7500c74500c8140708ff2654 *d1110814b01108a415070802000000150001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8b4e08894df48b56048955f083c5f0ebaa89f6a01507080b000200000000001100030083c70c *3b7b5c760fbe1cb01108c7436c03000000ff63fcc747f8b41507088b45008947fc8b4d04890f8d *57f8895504be54d11108e9e3fb08008d7600d4d4110834b011082816070800000200180003008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f1e7080083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f434b01108bed4d41108 *83c5f0e975fb080090d4d1110890d1110848d11108e0d41108bcd41108c0d41108a4ac110878af *11089416070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *c80a1108894df4bed4d1110883c5f0e93bf908008d76009416070800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9d00a1108894df4bed4d1110883c5f0e9fff8 *08008d76000100000024000000c74500301212088b760483c5fce9cefe080089f6a01607080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee0d41108c7 *45f03417070883c5f0ff269416070800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9e00a1108894df4bed4d1110883c5f0e96ff808008d760094160708000002 *00120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f88c1707088d4ff8894df4bec0d4110883c5f0e902fa080089f6941607080100010013 *002d008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec541707088b46048947f0c747f8c81707088d47ec8945f48d47f88945f0be48d1110883c5 *ece9affd08008d760001000000240000008b4504894500c74504301212088b761483c5fce98cfd *08009816070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be90d11108c745f07018070883c5f0ff269416070800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9f00a1108894df4bed4d1110883c5f0e92ff708008d76 *000100000024000000c74500301212088b760483c5fce9fefc080089f6a0160708010001001300 *01008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee0d41108c745f00419 *070883c5f0ff269416070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9fc0a1108894df4bed4d1110883c5f0e99ff608008d76009416070800000200120021 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f85c1907088d4ff8894df4bec0d4110883c5f0e932f8080089f6941607080100010013002d008d *45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec24 *1907088b46048947f0c747f8981907088d47ec8945f48d47f88945f0be48d1110883c5ece9dffb *08008d760001000000240000008b4504894500c74504301212088b761483c5fce9bcfb08009816 *070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90 *d11108c745f0401a070883c5f0ff269416070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9080b1108894df4bed4d1110883c5f0e95ff508008d7600941607 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9180b110889 *4df4bed4d1110883c5f0e923f508008d76000100000024000000c74500301212088b760483c5fc *e9f2fa080089f6ac16070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4bea4ac1108c745f0101b070883c5f0ff269416070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9240b1108894df4bed4d1110883c5f0e993 *f408008d76009416070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8681b07088d4ff8894df4bec0d4110883c5f0e926f6 *080089f69416070801000100130065008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ec301b07088b46048947f0c747f8a41b07088d47ec8945f4 *8d47f88945f0be48d1110883c5ece9d3f908008d760001000000240000008b4504894500c74504 *301212088b761483c5fce9b0f908009816070801000100130001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be90d11108c745f04c1c070883c5f0ff2694160708000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9300b1108894df4bed4 *d1110883c5f0e953f308008d76009416070800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b93c0b1108894df4bed4d1110883c5f0e917f308008d7600b0160708 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f030 *12120883c5f0e9bef1ffff89f69416070800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9480b1108894df4bed4d1110883c5f0e9a3f208008d76009416070800 *000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8581d07088d4ff8894df4bec0d4110883c5f0e936f4080089f694160708010001 *001300a5008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d100889 *75fcc747ec201d07088b46048947f0c747f8941d07088d47ec8945f48d47f88945f0be48d11108 *83c5ece9e3f708008d760001000000240000008b4504894500c74504301212088b761483c5fce9 *c0f708009816070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be90d11108c745f03c1e070883c5f0ff2694160708420000002400ff008b068b40fcc1 *e81085c00f8c2402000083f8090f8f1b020000b960b01108ff24818d760083c7183b7b5c760ac7 *436c06000000ff63f8c747ece01d07088b46048947f0c747f8601e07088b45048947fc8d47ec89 *45088d47f8894504bebcd41108e916f7080083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *e41c07088d47f8894508bec0d4110883c504e9def2080083c70c3b7b5c760ac7436c03000000ff *63f8c747f8a81c07088d47f8894508bec0d4110883c504e9b2f2080083c7183b7b5c760ac7436c *06000000ff63f8c747ecf01b07088b46048947f0c747f8701c07088b45048947fc8d47ec894508 *8d47f8894504bebcd41108e97cf6080083c70c3b7b5c760ac7436c03000000ff63f8c747f8d81a *07088d47f8894508bec0d4110883c504e944f2080083c70c3b7b5c760ac7436c03000000ff63f8 *c747f89c1a07088d47f8894508bec0d4110883c504e918f2080083c7183b7b5c760ac7436c0600 *0000ff63f8c747ece41907088b46048947f0c747f8641a07088b45048947fc8d47ec8945088d47 *f8894504bebcd41108e9e2f5080083c70c3b7b5c760ac7436c03000000ff63f8c747f8cc180708 *8d47f8894508bec0d4110883c504e9aaf1080083c7183b7b5c760ac7436c06000000ff63f8c747 *ec141807088b46048947f0c747f8941807088b45048947fc8d47ec8945088d47f8894504bebcd4 *1108e974f5080083c70c3b7b5c760ac7436c03000000ff63f8c747f8fc1607088d47f8894508be *c0d4110883c504e93cf1080083c70c3b7b5c760ac7436c03000000ff63f8c747f8c01607088d47 *f8894508bec0d4110883c504e910f10800941607080b000200000000001100ff008d45fc3b4354 *7308be58b01108ff63fc8b7504c745fc981e070883c5fcff269058b0110888b011082821070800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8f1dc080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f488 *b01108be58b0110883c5f0e975f0080090ccd4110890b011089421070800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e885dc080083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f490b01108beccd4110883 *c5f0e909f0080090d4d41108b0b011080022070800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e819dc080083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4b0b01108bed4d4110883c5f0e99def08009054 *d1110874ac110824ad110840d1110821000000240000003975040f94c083e00183c508b92cdc0b *088b34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc897504c745 *008422070883c5fce9b892ffff21000000240000003975040f94c083e00183c508b92cdc0b088b *34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc897504c74500d0 *22070883c5fce96c92ffff7822070803000000240001008b068b40fcc1e81083f810751e8b4604 *89450c8b45088945008b4504894508c7450414161008e995b704008b450c89450489750cc74508 *fc22070883c504e91d92ffff9021000000240000003975040f94c083e00183c508b92cdc0b088b *34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc897504c745006c *23070883c5fce9d091ffff7022070802000000240005008b068b40fcc1e81083f80f75108b4604 *894508be74ac1108e93bf208008b4508894500897508c7450498230708e99291ffff89f6210000 *00240000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff2481907822 *070801000000240001008b45048945fc897504c74500f823070883c5fce94491ffff7422070802 *000000240003008b068b40fcc1e81083f80e75108b4604894508be24ad1108e9aff108008b4508 *894500897508c7450424240708e90691ffff89f621000000240000003975040f94c083e00183c5 *08b92cdc0b088b34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc *897504c745008424070883c5fce9b890ffff7422070802000000240003008b068b40fcc1e81083 *f80a75108b4604894508be24ad1108e923f108008b4508894500897508c74504b0240708e97a90 *ffff89f621000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0 *fcff2481907822070801000000240001008b45048945fc897504c745001025070883c5fce92c90 *ffff7422070802000000240003008b068b40fcc1e81083f80975108b4604894508be24ad1108e9 *97f008008b4508894500897508c745043c250708e9ee8fffff89f621000000240000003975040f *94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff2481907822070801000000240001 *008b45048945fc897504c745009c25070883c5fce9a08fffff7422070802000000240003008b06 *8b40fcc1e81083f80875108b4604894508be24ad1108e90bf008008b4508894500897508c74504 *c8250708e9628fffff89f621000000240000003975040f94c083e00183c508b92cdc0b088b3481 *8b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc897504c74500282607 *0883c5fce9148fffff7422070802000000240003008b068b40fcc1e81083f80775108b46048945 *08be24ad1108e97fef08008b4508894500897508c7450454260708e9d68effff89f62100000024 *0000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff24819078220708 *01000000240001008b45048945fc897504c74500b426070883c5fce9888effff74220708020000 *00240003008b068b40fcc1e81083f80675108b4604894508be24ad1108e9f3ee08008b45088945 *00897508c74504e0260708e94a8effff89f621000000240000003975040f94c083e00183c508b9 *2cdc0b088b34818b4d00f7d883c0fcff2481907822070801000000240001008b45048945fc8975 *04c745004027070883c5fce9fc8dffff7422070802000000240003008b068b40fcc1e81083f805 *75108b4604894508be24ad1108e967ee08008b4508894500897508c745046c270708e9be8dffff *89f621000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7d883c0fcff *2481907822070801000000240001008b45048945fc897504c74500cc27070883c5fce9708dffff *7422070802000000240003008b068b40fcc1e81083f80475108b4604894508be24ad1108e9dbed *08008b4508894500897508c74504f8270708e9328dffff89f621000000240000003975040f94c0 *83e00183c508b92cdc0b088b34818b4d00f7d883c0fcff2481907822070801000000240001008b *45048945fc897504c745005828070883c5fce9e48cffff7422070802000000240003008b068b40 *fcc1e81083f80375108b4604894508be24ad1108e94fed08008b4508894500897508c745048428 *0708e9a68cffff89f67022070802000000240007008b068b40fcc1e81083f8030f8c1701000083 *f8100f8f0e010000b9dcb0110883c0fdff24818d76008b46048945048b450889750889c6c74500 *a8280708ff268b46048945048b450889750889c6c745001c280708ff268b46048945048b450889 *750889c6c7450090270708ff268b46048945048b450889750889c6c7450004270708ff268b4604 *8945048b450889750889c6c7450078260708ff268b46048945048b450889750889c6c74500ec25 *0708ff268b46048945048b450889750889c6c7450060250708ff268b46048945048b4508897508 *89c6c74500d4240708ff268b46048945048b450889750889c6c7450048240708ff268b46048945 *048b450889750889c6c74500bc230708ff268b46048945008b450889750889c6c745fc20230708 *83c5fcff26897500c74504b0220708e9618bffff90702207080b000200010000000c0007008d45 *f83b43547303ff63fc8b4d008b560489550089cec745fce828070883c5fcff2689f66c2207080b *000200010000000c00010083c7103b7b5c760ac7436c04000000ff63fcc747f4c86b10088b4604 *8947f88b45008947fc8b450489078d47f4894504be54d11108e96ae7080089f66c220708040001 *000000000011000f0083c71c3b7b5c760fbed4b01108c7436c07000000ff63fcc747e8302a0708 *8b45008947ecc747f0642a07088d47e88947f4c747f880dd0b088d47f08947fc8d47e889078d77 *f883c504ff6500d4d1110848d11108d4d41108bcd41108c0d41108ccd4110854ac1108b4ac1108 *d4ac110802000000150000008d45e83b43547303ff63f8c745f8d46d10088975fc8b4e08894df4 *c745f030121208c745ec141610088b56048955e883c5e8e9a101050090fc2a0708000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9540b1108894df4bed4d11108 *83c5f0e98fe408008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f86c2b07088d4ff8894df4bec0d4110883 *c5f0e922e6080089f6fc2a070802000000150013008d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747ec282b07088b46048947f08b46088947f4c747 *f8a82b07088d47ec8945f48d47f88945f0be48d1110883c5ece9c9e90800901c2b070801000100 *130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0be *d4ac110883c5ece98de9080090142b070801000100130001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4c745f030121208be54ac110883c5ece951e9080090fc2a070800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b95c0b1108894df4 *bed4d1110883c5f0e92be308008d7600fc2a070800000200120011008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d02c07088d4ff8894df4be *c0d4110883c5f0e9bee4080089f6fc2a070801000100130053008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec942c07088b46048947f0c747f8 *0c2d07088d47ec8945f48d47f88945f0be48d1110883c5ece96be808008d76001c2b0708010001 *00130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0 *bed4ac110883c5ece92de8080090182b070801000100130001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df4c745f030121208beb4ac110883c5ece9f1e7080090fc2a0708 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9680b1108894d *f4bed4d1110883c5f0e9cbe108008d7600fc2a070800000200120011008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8302e07088d4ff8894df4 *bec0d4110883c5f0e95ee3080089f6fc2a070801000100130093008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf42d07088b46048947f0c747 *f86c2e07088d47ec8945f48d47f88945f0be48d1110883c5ece90be708008d76001c2b07080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894d *f0bed4ac110883c5ece9cde6080090fc2a070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9740b1108894df4bed4d1110883c5f0e9a7e008008d7600fc2a07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9800b110889 *4df4bed4d1110883c5f0e96be008008d7600fc2a070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b98c0b1108894df4bed4d1110883c5f0e92fe008008d7600 *182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *c745f030121208beb4ac110883c5ece9dde5080090fc2a070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9980b1108894df4bed4d1110883c5f0e9b7df0800 *8d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8443007088d4ff8894df4bec0d4110883c5f0e94ae1080089 *f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ec083007088b46048947f0c747f8803007088d47ec8945f48d47f8 *8945f0be48d1110883c5ece9f7e408008d76001c2b070801000100130001008d45ec3b43547303 *ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece9b9e40800 *90182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4c745f030121208beb4ac110883c5ece97de4080090fc2a070800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9a40b1108894df4bed4d1110883c5f0e957de08 *008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8a43107088d4ff8894df4bec0d4110883c5f0e9eadf0800 *89f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c745f8d46d10088975fcc747ec683107088b46048947f0c747f8e03107088d47ec8945f48d47 *f88945f0be48d1110883c5ece997e308008d76001c2b070801000100130001008d45ec3b435473 *03ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece959e308 *0090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4c745f030121208beb4ac110883c5ece91de3080090fc2a070800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9b00b1108894df4bed4d1110883c5f0e9f7dc *08008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8043307088d4ff8894df4bec0d4110883c5f0e98ade08 *0089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ecc83207088b46048947f0c747f8403307088d47ec8945f48d *47f88945f0be48d1110883c5ece937e208008d76001c2b070801000100130001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece9f9e1 *080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4c745f030121208beb4ac110883c5ece9bde1080090fc2a070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9bc0b1108894df4bed4d1110883c5f0e997 *db08008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8643407088d4ff8894df4bec0d4110883c5f0e92add *080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ec283407088b46048947f0c747f8a03407088d47ec8945f4 *8d47f88945f0be48d1110883c5ece9d7e008008d76001c2b070801000100130001008d45ec3b43 *547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece999 *e0080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4c745f030121208beb4ac110883c5ece95de0080090fc2a070800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c80b1108894df4bed4d1110883c5f0e9 *37da08008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8c43507088d4ff8894df4bec0d4110883c5f0e9ca *db080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec883507088b46048947f0c747f8003607088d47ec8945 *f48d47f88945f0be48d1110883c5ece977df08008d76001c2b070801000100130001008d45ec3b *43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ece9 *39df080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4c745f030121208beb4ac110883c5ece9fdde080090fc2a070800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d80b1108894df4bed4d1110883c5f0 *e9d7d808008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8243707088d4ff8894df4bec0d4110883c5f0e9 *6ada080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ece83607088b46048947f0c747f8603707088d47ec89 *45f48d47f88945f0be48d1110883c5ece917de08008d76001c2b070801000100130001008d45ec *3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5ec *e9d9dd080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4c745f030121208beb4ac110883c5ece99ddd080090fc2a07080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e00b1108894df4bed4d1110883c5 *f0e977d708008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8843807088d4ff8894df4bec0d4110883c5f0 *e90ad9080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec483807088b46048947f0c747f8c03807088d47ec *8945f48d47f88945f0be48d1110883c5ece9b7dc08008d76001c2b070801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883c5 *ece979dc080090182b070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4c745f030121208beb4ac110883c5ece93ddc080090fc2a070800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ec0b1108894df4bed4d1110883 *c5f0e917d608008d7600fc2a070800000200120011008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8e43907088d4ff8894df4bec0d4110883c5 *f0e9aad7080089f6fc2a070801000100130093008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747eca83907088b46048947f0c747f8203a07088d47 *ec8945f48d47f88945f0be48d1110883c5ece957db08008d76001c2b070801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fcc745f4301212088b4e04894df0bed4ac110883 *c5ece919db080090fc2a070800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9fc0b1108894df4bed4d1110883c5f0e9f3d408008d7600fc2a0708000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9080c1108894df4bed4d11108 *83c5f0e9b7d408008d7600fc2a070800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9100c1108894df4bed4d1110883c5f0e97bd408008d7600fc2a0708020000 *002400db018b068b40fcc1e81085c00f8cb003000083f80f0f8fa7030000b91cb11108ff24818d *760083c70c3b7b5c760ac7436c03000000ff63f8c747f8803b07088d47f8894508bec0d4110883 *c504e9fcd5080083c70c3b7b5c760ac7436c03000000ff63f8c747f8443b07088d47f8894508be *c0d4110883c504e9d0d5080083c70c3b7b5c760ac7436c03000000ff63f8c747f8083b07088d47 *f8894508bec0d4110883c504e9a4d5080083c7183b7b5c760ac7436c06000000ff63f8c747ec6c *3a07088b46048947f0c747f8cc3a07088b45048947fc8d47ec8945088d47f8894504bebcd41108 *e96ed9080083c7183b7b5c760ac7436c06000000ff63f8c747ec0c3907088b46048947f0c747f8 *6c3907088b45048947fc8d47ec8945088d47f8894504bebcd41108e92cd9080083c7183b7b5c76 *0ac7436c06000000ff63f8c747ecac3707088b46048947f0c747f80c3807088b45048947fc8d47 *ec8945088d47f8894504bebcd41108e9ead8080083c7183b7b5c760ac7436c06000000ff63f8c7 *47ec4c3607088b46048947f0c747f8ac3607088b45048947fc8d47ec8945088d47f8894504bebc *d41108e9a8d8080083c7183b7b5c760ac7436c06000000ff63f8c747ecec3407088b46048947f0 *c747f84c3507088b45048947fc8d47ec8945088d47f8894504bebcd41108e966d8080083c7183b *7b5c760ac7436c06000000ff63f8c747ec8c3307088b46048947f0c747f8ec3307088b45048947 *fc8d47ec8945088d47f8894504bebcd41108e924d8080083c7183b7b5c760ac7436c06000000ff *63f8c747ec2c3207088b46048947f0c747f88c3207088b45048947fc8d47ec8945088d47f88945 *04bebcd41108e9e2d7080083c7183b7b5c760ac7436c06000000ff63f8c747eccc3007088b4604 *8947f0c747f82c3107088b45048947fc8d47ec8945088d47f8894504bebcd41108e9a0d7080083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8cc2f07088d47f8894508bec0d4110883c504e9 *68d3080083c70c3b7b5c760ac7436c03000000ff63f8c747f8902f07088d47f8894508bec0d411 *0883c504e93cd3080083c70c3b7b5c760ac7436c03000000ff63f8c747f8542f07088d47f88945 *08bec0d4110883c504e910d3080083c7183b7b5c760ac7436c06000000ff63f8c747ecb82e0708 *8b46048947f0c747f8182f07088b45048947fc8d47ec8945088d47f8894504bebcd41108e9dad6 *080083c7183b7b5c760ac7436c06000000ff63f8c747ec582d07088b46048947f0c747f8b82d07 *088b45048947fc8d47ec8945088d47f8894504bebcd41108e998d6080083c7183b7b5c760ac743 *6c06000000ff63f8c747ecf42b07088b45088947f08b46048947f4c747f8582c07088b45048947 *fc8d47ec8945088d47f8894504bebcd41108e950d60800fc2a07080b000200010000000c00db01 *8d45fc3b43547303ff63fc8b4d048b560489550489cec745fcbc3b070883c5fcff2689f6102b07 *0801000100130001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f88c6b10088b4e04894ffcc707d81112088d57f88955f4beccd4110883c5f0 *e9bad1080089f6042b070801000100130001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4bed4d4110883c5f0e984d10800fc2a070804000100000000001100ff0183c730 *3b7b5c760fbe14b11108c7436c0c000000ff63fcc747d4d43f07088b45008947d8c747dc044007 *088d47d48947e0c747e84c2d0c088d47d48947ec8d47f88947f08d47dc8947f4c747f85c400708 *8d47e88947fc8d77e883c504e956ec040089f600000000240000008b760483c504ff2604000100 *00000000110000008b7500c7450000410708ff2600000000240000008b760883c504ff26040001 *0000000000110000008b7500c7450028410708ff2600000000240000008b760c83c504ff260400 *010000000000110000008b7500c7450050410708ff2600000000240000008b761083c504ff2604 *00010000000000110000008b7500c7450078410708ff2600000000240000008b761483c504ff26 *0400010000000000110000008b7500c74500a0410708ff2600000000240000008b760483c504ff *260400010000000000110000008b7500c74500c8410708ff2600000000240000008b760883c504 *ff260400010000000000110000008b7500c74500f0410708ff2600000000240000008b760c83c5 *04ff260400010000000000110000008b7500c7450018420708ff2600000000240000008b761083 *c504ff260400010000000000110000008b7500c7450040420708ff2600000000240000008b7614 *83c504ff260400010000000000110000008b7500c7450068420708ff2600000000240000008b76 *1883c504ff260400010000000000110000008b7500c7450090420708ff2600000000240000008b *761c83c504ff260400010000000000110000008b7500c74500b8420708ff260000000024000000 *8b762083c504ff260400010000000000110000008b7500c74500e0420708ff2600000000240000 *008b762483c504ff260400010000000000110000008b7500c7450008430708ff26000000002400 *00008b760483c504ff260400010000000000110000008b7500c7450030430708ff260000000024 *0000008b760883c504ff260400010000000000110000008b7500c7450058430708ff2600000000 *240000008b760c83c504ff260400010000000000110000008b7500c7450080430708ff26000000 *00240000008b761083c504ff260400010000000000110000008b7500c74500a8430708ff260400 *0100000000001100000083c7083b7b5c760fbeb8b11108c7436c02000000ff63fcc747fc746207 *088b450089078d77fc83c5048b4d00ff61dc90bea4b1110883c5048b4500ff60f089f6bea8b111 *0883c5048b4500ff60ec89f6beacb1110883c5048b4500ff60e889f62444070814440708000000 *0000000000250000008b7604c7450048440708ff26484407080444070800000000000000002500 *00008b7604c7450068440708ff26beb0b1110883c5048b4500ff60e489f6beb4b1110883c5048b *4500ff60e089f683c7083b7b5c760ac7436c02000000ff63f8c747fc746207088b460489078d77 *fc83c5048b4d00ff61dc89f694440708844407080000000000000000250000008b7604c74500d4 *440708ff26d4440708744407080000000000000000250000008b7604c74500f4440708ff26f444 *0708684407080000000000000000250000000400010000000000110000008b7500c74500144507 *08ff2683c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c747f808d21108c747fcf0 *dc0b088d47f489078d77fc83c5048b4d00ff61f083c7183b7b5c760ac7436c06000000ff63f8c7 *47ecf0dc0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fcf0dc0b088d4ff4890f8d *77fc83c5048b5500ff62f08d760083c7183b7b5c760ac7436c06000000ff63f8c747ec10dd0b08 *c747f008d21108c747f410dd0b088d47ec8947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b *5500ff62f08d760083c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c747f808d211 *08c747fc10dd0b088d47f489078d77fc83c5048b4d00ff61ec83c7183b7b5c760ac7436c060000 *00ff63f8c747ecf0dc0b08c747f008d21108c747f410dd0b088d47ec8947f8c747fc10dd0b088d *4ff4890f8d77fc83c5048b5500ff62ec8d760083c7183b7b5c760ac7436c06000000ff63f8c747 *ec10dd0b088b46048947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc *83c5048b4500ff60ec744607082c460708f4450708ac450708644507082c450708000000000000 *0000250000000400010000000000110000008b7500c74500dc460708ff26170004000000000011 *00000083c7143b7b5c760fbec4b11108c7436c05000000ff63fcc747f00c6207088b45008947f4 *8b45048947f88b45088947fc8b450c89078d77f083c510ff650089f6020000002400000083c714 *3b7b5c760ac7436c05000000ff63f8c747f00c6207088b45088947f48b45048947f88b46048947 *fc8b460889078d77f083c50cff65008d760001000000240000008b46088945008b4d048b560489 *550489cec745fc4847070883c5fcff268d760000000000240000008b46088945008b7604c745fc *8c47070883c5fcff268d76000400010000000000110000008d45f83b43547308bec8b11108ff63 *fc8b7500c74500b4470708ff26000000002400000083c7243b7b5c760ac7436c09000000ff63f8 *c747e0d8dc0b088b460c8947e48b46108947e8c747ecd8dc0b088b46048947f08b46088947f4c7 *47f8d8dc0b088d47ec8947fc8d47e089078d77f883c504ff650090040001000000000011000000 *8b7500c74500fc470708ff2683c500e91800000068480708090000000000000000000900000000 *001100000083c7283b7b5c7612bed0b1110883c500c7436c0a000000ff63fcc747dc406107088b *45008947e08b45048947e48b45088947e88b450c8947ec8b45108947f08b45148947f48b451889 *47f88b451c8947fc8b452089078d77dc83c524ff650090070000002400000083c7283b7b5c760a *c7436c0a000000ff63f8c747dc406107088b45188947e08b45148947e48b451c8947e88b451089 *47ec8b450c8947f08b45088947f48b45048947f88b46048947fc8b460889078d77dc83c520ff65 *009006000000240000008b46048945008b7608c745fcf048070883c5fcff268d76000500000024 *0000008b46088945008b4d048b560489550489cec745fc5049070883c5fcff268d760004000000 *240000008b46088945008b7604c745fc7049070883c5fcff268d760003000000240000008b4608 *8945008b4d0c8b560489550c89cec745fc9849070883c5fcff268d760002000000240000008b46 *088945008b4d048b560489550489cec745fcb849070883c5fcff268d760001000000240000008b *46088945008b7604c745fce049070883c5fcff268d760000000000240000008b46088945008b76 *04c745fc084a070883c5fcff268d76000400010000000000110000008d45e43b43547308bed4b1 *1108ff63fc8b7500c74500284a0708ff26000000002400000083c7603b7b5c760ac7436c180000 *00ff63f8c747a4d8dc0b088b46208947a88b46248947acc747b0d8dc0b088b461c8947b48d47a4 *8947b8c747bcd8dc0b088b46148947c08b46188947c4c747c8d8dc0b088d47bc8947cc8d47b089 *47d0c747d4d8dc0b088b460c8947d88b46108947dcc747e0d8dc0b088b46048947e48b46088947 *e8c747ecd8dc0b088d47e08947f08d47d48947f4c747f8d8dc0b088d47ec8947fc8d47c889078d *77f883c504ff650089f60400010000000000110000008b7500c74500704a0708ff260400010000 *0000001100000083c7083b7b5c760fbedcb11108c7436c02000000ff63fcc747fc586107088b45 *0089078d77fc83c504ff650004000100000000001100000083c7083b7b5c760fbee8b11108c743 *6c02000000ff63fcc747fc886107088b450089078d77fc83c504ff650004000100000000001100 *000083c7083b7b5c760fbef4b11108c7436c02000000ff63fcc747fcb86107088b450089078d77 *fc83c504ff650004000100000000001100000083c7083b7b5c760fbefcb11108c7436c02000000 *ff63fcc747fcdc6107088b450089078d77fc83c504ff650083c7083b7b5c760ac7436c02000000 *ff63f8c747fc586107088b460489078d77fc83c504ff650090bee0b1110883c504ff650090444c *07081c4c07080000000000000000250000008b7604c74500644c0708ff26bee4b1110883c504ff *65009083c7083b7b5c760ac7436c02000000ff63f8c747fc886107088b460489078d77fc83c504 *ff650090beecb1110883c504ff650090a44c07087c4c07080000000000000000250000008b7604 *c74500c44c0708ff26c44c0708704c07080000000000000000250000008b7604c74500e44c0708 *ff26e44c0708644c07080000000000000000250000008b7604c74500044d0708ff26bef0b11108 *83c504ff65009083c7083b7b5c760ac7436c02000000ff63f8c747fcb86107088b460489078d77 *fc83c504ff650090bef8b1110883c504ff650090444d07081c4d07080000000000000000250000 *008b7604c74500644d0708ff26644d0708104d07080000000000000000250000008b7604c74500 *844d0708ff2683c7083b7b5c760ac7436c02000000ff63f8c747fcdc6107088b460489078d77fc *83c504ff650090be00b2110883c504ff650090be04b2110883c504ff650090c44d0708b84d0708 *0000000000000000250000008b7604c74500e44d0708ff26e44d0708904d070800000000000000 *00250000008b7604c74500044e0708ff26044e0708844d07080000000000000000250000008b76 *04c74500244e0708ff26244e0708044d0708000000000000000025000000040001000000000011 *0000008b7500c74500444e0708ff2600000000240000008b068b40fcc1e81083f8010f8c100300 *0083f80a0f8f07030000b910b2110848ff24819083c7183b7b5c760ac7436c06000000ff63f8c7 *47ec10dd0b08c747f008d21108c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d *77fc83c5048b4500ff60f083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b08c747f0 *08d21108c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff *60f083c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b088b46048947e8c747ec10dd0b *088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b *4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747 *ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc *83c5048b4500ff60f083c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b08c747f008d2 *1108c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec *83c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b088b46048947e8c747ec10dd0b088d *47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500 *ff60ec83c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ec10 *dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5 *048b4500ff60ec83c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b088b46048947f0c7 *47f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c720 *3b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c747ec10dd0b088d47e4 *8947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60 *ec83c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ec10dd0b *088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b *4500ff60ec83c7183b7b5c760ac7436c06000000ff63f8c747ecf0dc0b088b46048947f0c747f4 *f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f08d76000400 *010000000000110000008b7500c74500644e0708ff2604000100000000001100000083c7083b7b *5c760fbe44b21108c7436c02000000ff63fcc747fc146007088b450089078d77fc83c504ff6500 *04000100000000001100000083c7083b7b5c760fbe48b21108c7436c02000000ff63fcc747fc2c *6007088b450089078d77fc83c504ff650004000100000000001100000083c7083b7b5c760fbe4c *b21108c7436c02000000ff63fcc747fc446007088b450089078d77fc83c504ff65000400010000 *0000001100000083c7083b7b5c760fbe50b21108c7436c02000000ff63fcc747fc5c6007088b45 *0089078d77fc83c504ff650004000100000000001100000083c7083b7b5c760fbe54b21108c743 *6c02000000ff63fcc747fc746007088b450089078d77fc83c504ff650004000100000000001100 *000083c7083b7b5c760fbe58b21108c7436c02000000ff63fcc747fc8c6007088b450089078d77 *fc83c504ff650004000100000000001100000083c7083b7b5c760fbe5cb21108c7436c02000000 *ff63fcc747fca46007088b450089078d77fc83c504ff650004000100000000001100000083c708 *3b7b5c760fbe60b21108c7436c02000000ff63fcc747fcbc6007088b450089078d77fc83c504ff *650004000100000000001100000083c7083b7b5c760fbe70b21108c7436c02000000ff63fcc747 *fcf86007088b450089078d77fc83c504ff650004000100000000001100000083c7083b7b5c760f *be74b21108c7436c02000000ff63fcc747fc106107088b450089078d77fc83c504ff6500040001 *00000000001100000083c7083b7b5c760fbe78b21108c7436c02000000ff63fcc747fc28610708 *8b450089078d77fc83c504ff6500be38b2110883c504ff650090be3cb2110883c504ff65009058 *5407084c5407080000000000000000250000008b7604c7450078540708ff26be40b2110883c504 *ff65009083c7083b7b5c760ac7436c02000000ff63f8c747fc146007088b460489078d77fc83c5 *04ff65009090540708845407080000000000000000250000008b7604c74500cc540708ff26cc54 *0708785407080000000000000000250000008b7604c74500ec540708ff2683c7083b7b5c760ac7 *436c02000000ff63f8c747fc2c6007088b460489078d77fc83c504ff65009083c7083b7b5c760a *c7436c02000000ff63f8c747fc446007088b460489078d77fc83c504ff65009020550708f85407 *080000000000000000250000008b7604c745005c550708ff2683c7083b7b5c760ac7436c020000 *00ff63f8c747fc5c6007088b460489078d77fc83c504ff65009083c7083b7b5c760ac7436c0200 *0000ff63f8c747fc746007088b460489078d77fc83c504ff650090905507086855070800000000 *00000000250000008b7604c74500cc550708ff26cc5507085c5507080000000000000000250000 *008b7604c74500ec550708ff26ec550708ec5407080000000000000000250000008b7604c74500 *0c560708ff2683c7083b7b5c760ac7436c02000000ff63f8c747fc8c6007088b460489078d77fc *83c504ff65009083c7083b7b5c760ac7436c02000000ff63f8c747fca46007088b460489078d77 *fc83c504ff65009040560708185607080000000000000000250000008b7604c745007c560708ff *2683c7083b7b5c760ac7436c02000000ff63f8c747fcbc6007088b460489078d77fc83c504ff65 *0090be64b2110883c504ff650090b0560708885607080000000000000000250000008b7604c745 *00d0560708ff26d05607087c5607080000000000000000250000008b7604c74500f0560708ff26 *be68b2110883c504ff650090be6cb2110883c504ff65009008570708fc56070800000000000000 *00250000008b7604c7450028570708ff2683c7083b7b5c760ac7436c02000000ff63f8c747fcf8 *6007088b460489078d77fc83c504ff65009083c7083b7b5c760ac7436c02000000ff63f8c747fc *106107088b460489078d77fc83c504ff65009083c7083b7b5c760ac7436c02000000ff63f8c747 *fc286107088b460489078d77fc83c504ff650090845707085c5707080000000000000000250000 *008b7604c74500c0570708ff26c0570708345707080000000000000000250000008b7604c74500 *e0570708ff26e0570708285707080000000000000000250000008b7604c7450000580708ff2600 *580708f05607080000000000000000250000008b7604c7450020580708ff26205807080c560708 *0000000000000000250000000400010000000000110000008b7500c7450040580708ff26000000 *00240000008b068b40fcc1e81083f8010f8c4205000083f8100f8f39050000b984b2110848ff24 *819083c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ecf0dc *0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c504 *8b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c7 *47ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77 *fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b088b460489 *47e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489 *078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b088b *46048947e8c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d *47f489078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747e410dd *0b088b46048947e8c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc *0b088d47f489078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63f8c747 *e4f0dc0b088b46048947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c747 *fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c08000000ff63 *f8c747e410dd0b088b46048947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947 *f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7203b7b5c760ac7436c080000 *00ff63f8c747e4f0dc0b088b46048947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b088d47 *ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7203b7b5c760ac7436c *08000000ff63f8c747e410dd0b088b46048947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b *088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7203b7b5c760a *c7436c08000000ff63f8c747e4f0dc0b088b46048947e8c747ec10dd0b088d47e48947f0c747f4 *f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7203b7b *5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ec10dd0b088d47e48947 *f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83 *c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c747ecf0dc0b088d *47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500 *ff60ec83c7203b7b5c760ac7436c08000000ff63f8c747e410dd0b08c747e808d21108c747ecf0 *dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5 *048b4500ff60ec83c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b088b46048947e8c7 *47ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77 *fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b088b460489 *47e0c747e410dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec89 *47f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a00 *0000ff63f8c747dc10dd0b088b46048947e0c747e410dd0b088d47dc8947e8c747ec10dd0b088d *47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500 *ff60ec83c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c747ecf0 *dc0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5 *048b4500ff60f08d76000400010000000000110000008b7500c7450060580708ff261800050000 *0000001100000083c7183b7b5c760fbec4b21108c7436c06000000ff63fcc747ecd85f07088b45 *008947f08b45048947f48b45088947f88b450c8947fc8b451089078d77ec83c514ff6500030000 *002400000083c7183b7b5c760ac7436c06000000ff63f8c747ecd85f07088b450c8947f08b4508 *8947f48b45048947f88b46048947fc8b460889078d77ec83c510ff65009002000000240000008b *46048945008b7608c745fc785e070883c5fcff268d760001000000240000008b46088945008b4d *048b560489550489cec745fcc05e070883c5fcff268d760000000000240000008b46088945008b *7604c745fce05e070883c5fcff268d76000400010000000000110000008d45f43b43547308bec8 *b21108ff63fc8b7500c74500085f0708ff26000000002400000083c7303b7b5c760ac7436c0c00 *0000ff63f8c747d4d8dc0b088b46108947d88b46148947dcc747e0d8dc0b088b460c8947e48d47 *d48947e8c747ecd8dc0b088b46048947f08b46088947f4c747f8d8dc0b088d47ec8947fc8d47e0 *89078d77f883c504ff650089f60400010000000000110000008b7500c74500505f0708ff260500 *000001000000ff6500900500000009000000ff650090000000000a000000ff650090000000000a *000100ff650090000000000a000200ff6500900100000002000300ff6500900100000009000300 *ff6500900100000002000400ff6500900100000009000400ff6500900100000002000500ff6500 *900100000009000500ff6500900100000002000600ff6500900100000009000600ff6500900100 *000002000700ff6500900100000009000700ff6500900100000002000800ff6500900100000009 *000800ff6500900100000002000900ff6500900100000009000900ff6500900100000002000a00 *ff6500900100000009000a00ff650090000000000a000b00ff650090000000000a000c00ff6500 *90000000000a000d00ff6500900100000002000e00ff6500900100000009000e00ff6500900100 *000002000f00ff6500900100000009000f00ff6500900100000002001000ff6500900100000009 *001000ff6500900900000001000000ff6500900900000009000000ff6500900100000002000000 *ff6500900100000009000000ff650090000000000a000100ff650090000000000a000200ff6500 *900100000002000300ff6500900100000009000300ff650090000000000a000400ff6500900000 *00000a000500ff6500900100000002000600ff6500900100000009000600ff650090000000000a *000700ff6500900100000002000800ff6500900100000009000800ff650090000000000a000900 *ff650090000000000a000a00ff6500900400000001000000ff6500900400000009000000ff6500 *90000000000a0000008b4500ff60f089f6000000000a0001008b4500ff60ec89f6000000000a00 *02008b4500ff60e889f6000000000a0003008b4500ff60e489f6000000000a0004008b4500ff60 *e089f601000000020005008b4500ff60dc89f601000000090005008b4500ff60dc9090e9000000 *00833dd0b21108000f8596000000c705d0b2110801000000c7450049bb0a0883c504c745003519 *050883c504c7450094b40b0883c504c7450004a10b0883c504c74500919f050883c504c745009c *360c0883c504c745008db3050883c504c74500e524060883c504c745006dc4090883c504c74500 *50a70b0883c504c745004dec090883c504c7450090310c0883c504c745009d180b0883c504c745 *00d4630c0883c50483c5fcff650089f68cd01108dcd211083c63070800000200120003008d45f0 *3b43547303ff63f8c745f8d46d10088975fcc745f4dcd21108be8cd0110883c5f0e98fae08008d *7600be00d2110883c50c8b4500ff60f089f68b45088945108b750c83c510e9d70000008d760083 *c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b450c8947e48b45088947e8c747ec *8c6b10088b45108947f08b45048947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5 *148b4500ff60ec89f6a06307088c63070800000000040000002500000004000000240000008b76 *04c745000c640708ff2603000000240000008975008b760cc745fc1464070883c5fcff2689f68b *46088945008b7604c745fc2864070883c5fcff268d76003c6407087c6307080000000002000000 *2500000004000100010000000c0000008d45f03b43547303ff63fc8975fc8b4d008b5604895500 *89cec745f86864070883c5f8ff268d760002000000150000008d45f43b4354720883c7143b7b5c *760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0746407088b46048947f4c747f840 *6710088b46088947fc8d47f88945f48d77f083c5f4eb840b000200010000000c00000083c70c3b *7b5c760ac7436c03000000ff63fcc747f8a46407088b45048947fc8b4d00890f8d57f88955048b *7604e9daac080089f63c63070800000200180003008d45f83b4354720883c7203b7b5c760ac743 *6c08000000ff63f8c747e4085c100856e8f198080083c4048d47e4894604c706245b1008c745f8 *d46d10088d47e48945fcc747f050630708c747fcfc6407088d47f089078d77fc83c5f8e9370809 *008d760084d01108dcd21108a065070800000200180003008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e87998080083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcc745f4dcd21108be84d0110883c5f0e9fdab080090dcd2110800 *000000240000008b760ce97ca108000c66070800000200180001008d45f43b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e80198080083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcbedcd21108c745f41866070883c5f4ff26e4d1110854d2 *1108d4d1110844d1110854d11108dcd2110834a91108d0ce110898d51108c8d51108e4b2110889 *7500be54d2110883c5fce94cab0800ac660708ac6607088466070800000000250001008b460489 *4500bed0ce1108c74504d066070883c5fce91eab080089f68b45048b4e04894d0489c6e90cab08 *00ec660708d06607088466070801000000250041008466070804000100020000000e0041008d45 *f43b43547303ff63fc8b4d00894df88b56088955008b7604c745fc1067070883c5f4e9bfaa0800 *8d7600a466070801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4bec8d5110883c5f0e988aa08008466070804000000120041018d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec206707088b46088947f08b *460c8947f4c747f8586707088b46048947fc8d47ec8945f48d47f88945f08b761083c5ece92dae *0800908866070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9180c1108894df4bed4d1110883c5f0e907a808008d76008066070801000100130005008d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f46707 *088d4ff8894df48b56048955f0bee4d1110883c5ece9a0ad08008866070800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c0c1108894df4bed4d1110883c5f0 *e97ba708008d76008066070801000100130005008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747ec306807088b46048947f0c747f8806807088d47 *ec8945f48d47f88945f0bee4d1110883c5ece907ad08008d7600806607080100010013004d008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8bc *6807088b4e04894ffc8d57f88955f4c745f034a91108be44d1110883c5ece9adac080090906607 *0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be54d1 *110883c5f0e96ca80800806607080200000015005d048d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec1c6907088b46048947f0c747f874690708 *8b46088947fc8d47ec8945f48d47f88945f0bee4b2110883c5ece915ac08009080660708040001 *00050000000b00df068d45f83b4354720883c7203b7b5c760ac7436c08000000ff63fcc747e48c *6707088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f8a86907088b46048947 *fc8b450089078d47e48945008d47f88945fc8b761483c5f8e9a2ab080089f6a066070801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be98d5110883c5f0 *e960a7080080660708020000002400df0783c7243b7b5c760ac7436c09000000ff63f8c747e010 *6a07088b45088947e48b45048947e88b460c8947ec8b46048947f08b46088947f4c747f8806a07 *088b45088947fc8d47e08945088d47f88945048b7604e908ab0800806607080b00020000000000 *1100ff078d45fc3b43547308be04b31108ff63fcbedcd21108c745fcb46a070883c5fcff268d76 *0024cf110800000000240000008b7610e9489c0800406b070800000200180001008d45f43b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8cd92080083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcbe24cf1108c745f44c6b070883c5f4ff26 *88d0110824cf1108b46b070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e86592080083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f424cf1108be88d0110883c5f0e9e9a508009088d0110824cf110820 *6c070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8f991080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f424cf1108be88d0110883c5f0e97da508009098d0110824cf11088c6c0708000002001800 *03008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88d91 *080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f424cf1108be98 *d0110883c5f0e911a508009088d0110824cf1108f86c070800000200180003008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e82191080083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcc745f424cf1108be88d0110883c5f0e9a5a4 *0800907cd0110824cf1108646d070800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8b590080083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f424cf1108be7cd0110883c5f0e939a408009098d0110824cf *1108d06d070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e84990080083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f424cf1108be98d0110883c5f0e9cda308009080cb110800000000240000008b7608 *e94c9908003c6e070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e8d18f080083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcbe80cb1108c745f4486e070883c5f4ff26d8d4110880cb1108b06e070800000200 *180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *698f080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f480cb1108 *bed8d4110883c5f0e9eda2080090e0d4110800000000240000008b7608e96c9808001c6f070800 *000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8f18e080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbee0d411 *08c745f4286f070883c5f4ff2684d41108a4cb1108906f070800000200180003008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8898e080083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4cb1108be84d4110883c5f0e90d *a2080090acb3110800000000240000008b760ce98c970800fc6f070800000200180001008d45f4 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8118e080083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcbeacb31108c745f40870070883c5 *f4ff2664d411084ccd11087070070800000200180003008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8a98d080083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f464d41108be4ccd110883c5f0e92da108009064d411080000 *0000240000008b760ce9ac960800dc70070800000200180001008d45f43b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8318d080083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcbe64d41108c745f4e870070883c5f4ff26ccd1110844ca11 *085071070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8c98c080083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcc745f444ca1108beccd1110883c5f0e94da0080090d8d41108f8a51108bc71070800000200 *180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *5d8c080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f8a51108 *bed8d4110883c5f0e9e19f08009024d51108a4a5110814af11082872070800000200180007008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8ed8b080083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4a51108c745f014af *1108be24d5110883c5ece976a3080089f6d8d411080cb41108a072070800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8798b080083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f40cb41108bed8d4110883 *c5f0e9fd9e080090f4d41108d8d411080c73070800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e80d8b080083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4f4d41108bed8d4110883c5f0e9919e080090d8 *d411082cb411087873070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8a18a080083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f42cb41108bed8d4110883c5f0e9259e08009024d5110814af11083cb4 *1108e473070800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8318a080083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f43cb41108c745f014af1108be24d5110883c5ece9baa1080089f6d8d411084cb411 *085c74070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8bd89080083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcc745f44cb41108bed8d4110883c5f0e9419d08009054a8110800000000240000008b7608e9 *c0920800c874070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e84589080083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcbe54a81108c745f4d474070883c5f4ff2684d411081ca611083c7507080000020018 *0003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8dd *88080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f41ca61108be *84d4110883c5f0e9619c0800907cb4110800000000240000008b760ce9e0910800a87507080000 *0200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e86588080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe7cb41108 *c745f4b475070883c5f4ff26a4d411083ca51108acae11081c76070800000200180007008d45ec *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f987080083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f43ca51108c745f0acae1108 *bea4d4110883c5ece9829f080089f684d411089cb411089476070800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88587080083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f49cb41108be84d4110883c5f0 *e9099b080090acb4110800000000240000008b760ce9889008000077070800000200180001008d *45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e80d87080083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbeacb41108c745f40c770708 *83c5f4ff2684d411084cd411087477070800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e8a586080083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f44cd41108be84d4110883c5f0e9299a08009084d41108 *ccb41108e077070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e83986080083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f4ccb41108be84d4110883c5f0e9bd99080090a4d41108acae1108dcb411084c *78070800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8c985080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f4dcb41108c745f0acae1108bea4d4110883c5ece9529d080089f684d41108ecb41108c478 *070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e85585080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4ecb41108be84d4110883c5f0e9d998080090fcb4110800000000240000008b760ce9588e08 *003079070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8dd84080083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcbefcb41108c745f43c79070883c5f4ff26dcb4110800000000240000008b760ce9e48d0800 *a479070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e86984080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fcbedcb41108c745f4b079070883c5f4ff26ccb4110800000000240000008b760ce9708d080018 *7a070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8f583080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *beccb41108c745f4247a070883c5f4ff260ca8110800000000240000008b760ce9fc8c08008c7a *070800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e88183080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe *0ca81108c745f4987a070883c5f4ff267cc5110800000000240000008b760ce9888c0800007b07 *0800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e80d83080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe7c *c51108c745f40c7b070883c5f4ff26ccd111084ca71108747b070800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a582080083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f44ca71108beccd1110883c5f0 *e92996080090e8d011082ca711084cae1108e07b070800000200180007008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83582080083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f42ca71108c745f04cae1108bee8d0110883 *c5ece9be99080089f6ccd111086cb51108587c070800000200180003008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c181080083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fcc745f46cb51108beccd1110883c5f0e94595080090 *ccd1110880d11108c47c070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e85581080083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f480d11108beccd1110883c5f0e9d994080090ccd111088cb5110830 *7d070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e980080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f48cb51108beccd1110883c5f0e96d94080090e8d011084cae11089cb511089c7d07080000 *0200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e87980080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f49cb5 *1108c745f04cae1108bee8d0110883c5ece90298080089f6ccd11108acb51108147e0708000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e80580080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4acb511 *08beccd1110883c5f0e98993080090e4d11108d4d1110844d111086ccd1108ccb511088cb51108 *807e070801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f87cdc0b08c747fc900a1208c70700d211088d4ff8894df48b560489 *55f0bee4d1110883c5ece91f9708008d7600847e070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9540c1108894df4bed4d1110883c5f0e9f79008008d7600 *807e070801000100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747eca47e07088b46048947f0c747f8047f07088d47ec8945f48d47f889 *45f0bee4d1110883c5ece9839608008d76008c7e070801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be6ccd110883c5f0e940920800807e070800000000 *24000f0083c7183b7b5c760ac7436c06000000ff63f8c747ec407f07088b46088947f0c747f8a0 *7f07088b46048947fc8d47ec8945008d47f88945fcbe44d1110883c5f8e9fb9508008d76008b75 *08c74508d47f070883c508ff269083c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b08 *8b45088947f88b450c8947fc8b450489078d47f489451c83c514e9f80000008b451889451c8b4d *04894d188b55088955148b751083c510e9639a08008d7600648007082c800708907e0708070800 *0025000100907e070807000000240001008b450c8945fc8b4d1c894df88b7608c7450098800708 *83c5f4e95295080089f6907e070804000000240003008b460c8945f88b4e04894dfc8b56088955 *00be8cb51108c745f4a480070883c5f4ff2690907e070803000000240003008b46108945008b4d *0c8b560489550c89cec745fcd080070883c5fcff268d76008b46088945008b7604c745fc008107 *0883c5fcff268d7600208107081c800708807e07080200000025003f00807e0708160003000000 *000011003f008d45e03b43547308beccb51108ff63fc8b7500c745004c810708ff26bcd1110870 *d11108ecb311088cb511089cb51108bcb5110802000000240000008b45088b4d04894d08894504 *8b7608e9689408008c81070802000000150001008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e08894df08b56048955f4bebcb51108c745ec9881070883c5ecff2689f6020000002400 *00008b45088b4d04894d088945048b7608e90c9408008881070802000000150001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be9cb51108c745ecf48107 *0883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e9b0930800888107 *0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be9cb51108c745ec5082070883c5ecff2689f602000000240000008b45088b4d04894d08 *8945048b7608e9549308008881070802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be9cb51108c745ecac82070883c5ecff2689f6020000 *00240000008b45088b4d04894d088945048b7608e9f89208008881070802000000150001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be9cb51108c745ec *0883070883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e99c920800 *8081070802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df0 *8b56048955f4beecb31108c745ec6483070883c5ecff2689f602000000240000008b45088b4d04 *894d088945048b7608e9409208008881070802000000150001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df08b56048955f4be9cb51108c745ecc083070883c5ecff2689f6 *02000000240000008b45088b4d04894d088945048b7608e9e49108008481070802000000150001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108 *c745ec1c84070883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e988 *9108008881070802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08 *894df08b56048955f4be9cb51108c745ec7884070883c5ecff2689f602000000240000008b4508 *8b4d04894d088945048b7608e92c9108008881070802000000150001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e08894df08b56048955f4be9cb51108c745ecd484070883c5ecff *2689f602000000240000008b45088b4d04894d088945048b7608e9d09008008881070802000000 *150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be9c *b51108c745ec3085070883c5ecff2689f602000000240000008b45088b4d04894d088945048b76 *08e9749008008881070802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e08894df08b56048955f4be9cb51108c745ec8c85070883c5ecff2689f60200000024000000 *8b45088b4d04894d088945048b7608e9189008007c81070802000000150001008d45ec3b435473 *03ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be70d11108c745ece885070883 *c5ecff2689f67881070804000000120013008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ecac8507088b460c8947f08b46108947f4c747f80886 *07088b46048947fc8b460889078d47ec8945f48d47f88945f0bebcd1110883c5ece96a8f080089 *f67881070806000000120013008d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8 *c745f8d46d10088975fcc747e4508507088b46148947e88b46188947ecc747f0488607088b4604 *8947f48b46088947f88b460c8947fc8b461089078d47e48945f48d47f08945f0bebcd1110883c5 *ece9ee8e080089f67881070808000000120013008d45ec3b4354720883c7283b7b5c760ac7436c *0a000000ff63f8c745f8d46d10088975fcc747dcf48407088b461c8947e08b46208947e4c747e8 *b88607088b46048947ec8b46088947f08b460c8947f48b46108947f88b46148947fc8b46188907 *8d47dc8945f48d47e88945f0bebcd1110883c5ece9668e080089f6788107080a00000012001300 *8d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc747d4 *988407088b46248947d88b46288947dcc747e0348707088b46048947e48b46088947e88b460c89 *47ec8b46108947f08b46148947f48b46188947f88b461c8947fc8b462089078d47d48945f48d47 *e08945f0bebcd1110883c5ece9d28d080089f6788107080c00000012001b008d45ec3b43547208 *83c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747cc3c8407088b462c89 *47d08b46308947d4c747d8bc8707088b46048947dc8b46088947e08b460c8947e48b46108947e8 *8b46148947ec8b46188947f08b461c8947f48b46208947f88b46248947fc8b462889078d47cc89 *45f48d47d88945f0bebcd1110883c5ece9328d080089f6788107080e00000012001b008d45ec3b *4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975fcc747c4e0830708 *8b46348947c88b46388947ccc747d0508807088b46048947d48b46088947d88b460c8947dc8b46 *108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f48b46288947 *f88b462c8947fc8b463089078d47c48945f48d47d08945f0bebcd1110883c5ece9868c080089f6 *788107081000000012001f008d45ec3b4354720883c7483b7b5c760ac7436c12000000ff63f8c7 *45f8d46d10088975fcc747bc848307088b463c8947c08b46408947c4c747c8f08807088b460489 *47cc8b46088947d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c8947e48b *46208947e88b46248947ec8b46288947f08b462c8947f48b46308947f88b46348947fc8b463889 *078d47bc8945f48d47c88945f0bebcd1110883c5ece9ce8b080089f6788107081200000012001f *008d45ec3b4354720883c7503b7b5c760ac7436c14000000ff63f8c745f8d46d10088975fcc747 *b4288307088b46448947b88b46488947bcc747c09c8907088b46048947c48b46088947c88b460c *8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e4 *8b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88b463c8947fc8b4640 *89078d47b48945f48d47c08945f0bebcd1110883c5ece90a8b080089f678810708140000001200 *1f008d45ec3b4354720883c7583b7b5c760ac7436c16000000ff63f8c745f8d46d10088975fcc7 *47accc8207088b464c8947b08b46508947b4c747b8548a07088b46048947bc8b46088947c08b46 *0c8947c48b46108947c88b46148947cc8b46188947d08b461c8947d48b46208947d88b46248947 *dc8b46288947e08b462c8947e48b46308947e88b46348947ec8b46388947f08b463c8947f48b46 *408947f88b46448947fc8b464889078d47ac8945f48d47b88945f0bebcd1110883c5ece93a8a08 *0089f6788107081600000012001f008d45ec3b4354720883c7603b7b5c760ac7436c18000000ff *63f8c745f8d46d10088975fcc747a4708207088b46548947a88b46588947acc747b0188b07088b *46048947b48b46088947b88b460c8947bc8b46108947c08b46148947c48b46188947c88b461c89 *47cc8b46208947d08b46248947d48b46288947d88b462c8947dc8b46308947e08b46348947e48b *46388947e88b463c8947ec8b46408947f08b46448947f48b46488947f88b464c8947fc8b465089 *078d47a48945f48d47b08945f0bebcd1110883c5ece95e89080089f6788107081800000012001f *008d45ec3b4354720883c7683b7b5c760ac7436c1a000000ff63f8c745f8d46d10088975fcc747 *9c148207088b465c8947a08b46608947a4c747a8e88b07088b46048947ac8b46088947b08b460c *8947b48b46108947b88b46148947bc8b46188947c08b461c8947c48b46208947c88b46248947cc *8b46288947d08b462c8947d48b46308947d88b46348947dc8b46388947e08b463c8947e48b4640 *8947e88b46448947ec8b46488947f08b464c8947f48b46508947f88b46548947fc8b465889078d *479c8945f48d47a88945f0bebcd1110883c5ece97688080089f6788107080d00000024003f0083 *c7703b7b5c760ac7436c1c000000ff63f8c74794b88107088b45048947988b463489479cc747a0 *c48c07088b45348947a48b46048947a88b45308947ac8b46088947b08b452c8947b48b460c8947 *b88b45288947bc8b46108947c08b45248947c48b46148947c88b45208947cc8b46188947d08b45 *1c8947d48b461c8947d88b45188947dc8b46208947e08b45148947e48b46248947e88b45108947 *ec8b46288947f08b450c8947f48b462c8947f88b45088947fc8b463089078d47948945348d47a0 *894530bebcd1110883c52ce994870800788107080100000024003f008b46348945d48b46308945 *d88b462c8945dc8b46288945e08b46248945e48b46208945e88b461c8945ec8b46188945f08b46 *148945f48b46108945f88b460c8945fc8b46088945008b45048b4e04894d0489c6c745d0ac8d07 *0883c5d0ff2690788107080b0002000000000011003f008d45d03b43547308bed4b51108ff63fc *8b7500c745008c8e0708ff2654d11108d4b511081c8f070802000000150001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebaa89f6188f07080b00 *0200000000001100030083c70c3b7b5c760fbedcb51108c7436c03000000ff63fcc747f82c8f07 *088b45008947fc8b4d04890f8d57f8895504be54d11108e96b8208008d7600c4d11108d4d11108 *28d41108a8d6110888d6110898d61108bcb31108dcb311080cb511081cb511082cb51108a48f07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9640c110889 *4df4bed4d1110883c5f0e9238008008d7600a48f0708420000002400010083c70c3b7b5c761ec7 *450014900708c7436c03000000b8ff00000083f000894320e976ad0800c747f8d88f07088d4ff8 *894d088b750483c504e9b681080089f6a48f070800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9bc0c1108894df4bed4d1110883c5f0e99b7f08008d760083c5 *04e97cffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9c80c1108894df4bed4d1110883c5f0e9577f08008d7600a48f07084200000024000100 *83c70c3b7b5c761ec74500e0900708c7436c03000000b8ff00000083f000894320e9aaac0800c7 *47f8a49007088d4ff8894d088b750483c504e9ea80080089f683c504ebbb8d7600a48f07080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9200d1108894df4be *d4d1110883c5f0e9c77e08008d7600a48f0708420000002400010083c70c3b7b5c761ec7450070 *910708c7436c03000000b8ff00000083f000894320e91aac0800c747f8349107088d4ff8894d08 *8b750483c504e95a80080089f6a48f070800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9780d1108894df4bed4d1110883c5f0e93f7e08008d760083c504e97c *ffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9840d1108894df4bed4d1110883c5f0e9fb7d08008d7600a48f0708420000002400010083c70c *3b7b5c761ec745003c920708c7436c03000000b8ff00000083f000894320e94eab0800c747f800 *9207088d4ff8894d088b750483c504e98e7f080089f683c504ebbb8d7600a48f07080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9dc0d1108894df4bed4d111 *0883c5f0e96b7d08008d7600a48f0708420000002400010083c70c3b7b5c761ec74500cc920708 *c7436c03000000b8ff00000083f000894320e9beaa0800c747f8909207088d4ff8894d088b7504 *83c504e9fe7e080089f683c508ebbb8d7600a48f070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9340e1108894df4bed4d1110883c5f0e9db7c08008d7600 *a48f0708420000002400010083c70c3b7b5c761ec745005c930708c7436c03000000b8ff000000 *83f000894320e92eaa0800c747f8209307088d4ff8894d088b750483c504e96e7e080089f6a48f *070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98c0e1108 *894df4bed4d1110883c5f0e9537c08008d760083c508e97cffffffa48f07080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9980e1108894df4bed4d1110883c5 *f0e90f7c08008d7600a48f0708420000002400010083c70c3b7b5c761ec7450028940708c7436c *03000000b8ff00000083f000894320e962a90800c747f8ec9307088d4ff8894d088b750483c504 *e9a27d080089f683c508ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9f00e1108894df4bed4d1110883c5f0e97f7b08008d7600a48f07 *08420000002400010083c70c3b7b5c761ec74500b8940708c7436c03000000b8ff00000083f000 *894320e9d2a80800c747f87c9407088d4ff8894d088b750483c504e9127d080089f683c50cebbb *8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9480f1108894df4bed4d1110883c5f0e9ef7a08008d7600a48f0708420000002400010083c70c *3b7b5c761ec7450048950708c7436c03000000b8ff00000083f000894320e942a80800c747f80c *9507088d4ff8894d088b750483c504e9827c080089f6a48f070800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9a00f1108894df4bed4d1110883c5f0e9677a08 *008d760083c50ce97cffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9ac0f1108894df4bed4d1110883c5f0e9237a08008d7600a48f07084200 *00002400010083c70c3b7b5c761ec7450014960708c7436c03000000b8ff00000083f000894320 *e976a70800c747f8d89507088d4ff8894d088b750483c504e9b67b080089f683c50cebbb8d7600 *a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90410 *1108894df4bed4d1110883c5f0e9937908008d7600a48f0708420000002400010083c70c3b7b5c *761ec74500a4960708c7436c03000000b8ff00000083f000894320e9e6a60800c747f868960708 *8d4ff8894d088b750483c504e9267b080089f683c510ebbb8d7600a48f07080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b95c101108894df4bed4d1110883c5 *f0e9037908008d7600a48f0708420000002400010083c70c3b7b5c761ec7450034970708c7436c *03000000b8ff00000083f000894320e956a60800c747f8f89607088d4ff8894d088b750483c504 *e9967a080089f6a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9b4101108894df4bed4d1110883c5f0e97b7808008d760083c510e97cffffffa48f07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c010110889 *4df4bed4d1110883c5f0e9377808008d7600a48f0708420000002400010083c70c3b7b5c761ec7 *450000980708c7436c03000000b8ff00000083f000894320e98aa50800c747f8c49707088d4ff8 *894d088b750483c504e9ca79080089f683c510ebbb8d7600a48f070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b918111108894df4bed4d1110883c5f0e9a7 *7708008d7600a48f0708420000002400010083c70c3b7b5c761ec7450090980708c7436c030000 *00b8ff00000083f000894320e9faa40800c747f8549807088d4ff8894d088b750483c504e93a79 *080089f683c514ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b970111108894df4bed4d1110883c5f0e9177708008d7600a48f07084200 *00002400010083c70c3b7b5c761ec7450020990708c7436c03000000b8ff00000083f000894320 *e96aa40800c747f8e49807088d4ff8894d088b750483c504e9aa78080089f6a48f070800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c8111108894df4bed4d1 *110883c5f0e98f7608008d760083c514e97cffffffa48f070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9d4111108894df4bed4d1110883c5f0e94b760800 *8d7600a48f0708420000002400010083c70c3b7b5c761ec74500ec990708c7436c03000000b8ff *00000083f000894320e99ea30800c747f8b09907088d4ff8894d088b750483c504e9de77080089 *f683c514ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b92c121108894df4bed4d1110883c5f0e9bb7508008d7600a48f07084200000024 *00010083c70c3b7b5c761ec745007c9a0708c7436c03000000b8ff00000083f000894320e90ea3 *0800c747f8409a07088d4ff8894d088b750483c504e94e77080089f683c518ebbb8d7600a48f07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98412110889 *4df4bed4d1110883c5f0e92b7508008d7600a48f0708420000002400010083c70c3b7b5c761ec7 *45000c9b0708c7436c03000000b8ff00000083f000894320e97ea20800c747f8d09a07088d4ff8 *894d088b750483c504e9be76080089f6a48f070800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9dc121108894df4bed4d1110883c5f0e9a37408008d760083c5 *18e97cffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9e8121108894df4bed4d1110883c5f0e95f7408008d7600a48f07084200000024000100 *83c70c3b7b5c761ec74500d89b0708c7436c03000000b8ff00000083f000894320e9b2a10800c7 *47f89c9b07088d4ff8894d088b750483c504e9f275080089f683c518ebbb8d7600a48f07080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b940131108894df4be *d4d1110883c5f0e9cf7308008d7600a48f0708420000002400010083c70c3b7b5c761ec7450068 *9c0708c7436c03000000b8ff00000083f000894320e922a10800c747f82c9c07088d4ff8894d08 *8b750483c504e96275080089f683c51cebbb8d7600a48f070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b998131108894df4bed4d1110883c5f0e93f730800 *8d7600a48f0708420000002400010083c70c3b7b5c761ec74500f89c0708c7436c03000000b8ff *00000083f000894320e992a00800c747f8bc9c07088d4ff8894d088b750483c504e9d274080089 *f6a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f0 *131108894df4bed4d1110883c5f0e9b77208008d760083c51ce97cffffffa48f07080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b900141108894df4bed4d111 *0883c5f0e9737208008d7600a48f0708420000002400010083c70c3b7b5c761ec74500c49d0708 *c7436c03000000b8ff00000083f000894320e9c69f0800c747f8889d07088d4ff8894d088b7504 *83c504e90674080089f683c51cebbb8d7600a48f070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b958141108894df4bed4d1110883c5f0e9e37108008d7600 *a48f0708420000002400010083c70c3b7b5c761ec74500549e0708c7436c03000000b8ff000000 *83f000894320e9369f0800c747f8189e07088d4ff8894d088b750483c504e97673080089f683c5 *20ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9b0141108894df4bed4d1110883c5f0e9537108008d7600a48f07084200000024000100 *83c70c3b7b5c761ec74500e49e0708c7436c03000000b8ff00000083f000894320e9a69e0800c7 *47f8a89e07088d4ff8894d088b750483c504e9e672080089f6a48f070800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b908151108894df4bed4d1110883c5f0e9 *cb7008008d760083c520e97cffffffa48f070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b914151108894df4bed4d1110883c5f0e9877008008d7600a48f07 *08420000002400010083c70c3b7b5c761ec74500b09f0708c7436c03000000b8ff00000083f000 *894320e9da9d0800c747f8749f07088d4ff8894d088b750483c504e91a72080089f683c520ebbb *8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b96c151108894df4bed4d1110883c5f0e9f76f08008d7600a48f0708420000002400010083c70c *3b7b5c761ec7450040a00708c7436c03000000b8ff00000083f000894320e94a9d0800c747f804 *a007088d4ff8894d088b750483c504e98a71080089f683c524ebbb8d7600a48f07080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c4151108894df4bed4d111 *0883c5f0e9676f08008d7600a48f0708420000002400010083c70c3b7b5c761ec74500d0a00708 *c7436c03000000b8ff00000083f000894320e9ba9c0800c747f894a007088d4ff8894d088b7504 *83c504e9fa70080089f6a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b91c161108894df4bed4d1110883c5f0e9df6e08008d760083c524e97cffffff *a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92816 *1108894df4bed4d1110883c5f0e99b6e08008d7600a48f0708420000002400010083c70c3b7b5c *761ec745009ca10708c7436c03000000b8ff00000083f000894320e9ee9b0800c747f860a10708 *8d4ff8894d088b750483c504e92e70080089f683c524ebbb8d7600a48f07080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980161108894df4bed4d1110883c5 *f0e90b6e08008d7600a48f0708420000002400010083c70c3b7b5c761ec745002ca20708c7436c *03000000b8ff00000083f000894320e95e9b0800c747f8f0a107088d4ff8894d088b750483c504 *e99e6f080089f683c528ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9d8161108894df4bed4d1110883c5f0e97b6d08008d7600a48f07 *08420000002400010083c70c3b7b5c761ec74500bca20708c7436c03000000b8ff00000083f000 *894320e9ce9a0800c747f880a207088d4ff8894d088b750483c504e90e6f080089f6a48f070800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b930171108894df4 *bed4d1110883c5f0e9f36c08008d760083c528e97cffffffa48f070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b940171108894df4bed4d1110883c5f0e9af *6c08008d7600a48f0708420000002400010083c70c3b7b5c761ec7450088a30708c7436c030000 *00b8ff00000083f000894320e9029a0800c747f84ca307088d4ff8894d088b750483c504e9426e *080089f683c528ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b998171108894df4bed4d1110883c5f0e91f6c08008d7600a48f07084200 *00002400010083c70c3b7b5c761ec7450018a40708c7436c03000000b8ff00000083f000894320 *e972990800c747f8dca307088d4ff8894d088b750483c504e9b26d080089f683c52cebbb8d7600 *a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f017 *1108894df4bed4d1110883c5f0e98f6b08008d7600a48f0708420000002400010083c70c3b7b5c *761ec74500a8a40708c7436c03000000b8ff00000083f000894320e9e2980800c747f86ca40708 *8d4ff8894d088b750483c504e9226d080089f6a48f070800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b948181108894df4bed4d1110883c5f0e9076b08008d76 *0083c52ce97cffffffa48f070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b954181108894df4bed4d1110883c5f0e9c36a08008d7600a48f07084200000024 *00010083c70c3b7b5c761ec7450074a50708c7436c03000000b8ff00000083f000894320e91698 *0800c747f838a507088d4ff8894d088b750483c504e9566c080089f683c52cebbb8d7600a48f07 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ac18110889 *4df4bed4d1110883c5f0e9336a08008d7600a48f0708420000002400010083c70c3b7b5c761ec7 *450004a60708c7436c03000000b8ff00000083f000894320e986970800c747f8c8a507088d4ff8 *894d088b750483c504e9c66b080089f683c530ebbb8d7600a48f070800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b904191108894df4bed4d1110883c5f0e9a3 *6908008d7600a48f0708420000002400010083c70c3b7b5c761ec7450094a60708c7436c030000 *00b8ff00000083f000894320e9f6960800c747f858a607088d4ff8894d088b750483c504e9366b *080089f6a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b95c191108894df4bed4d1110883c5f0e91b6908008d760083c530e97cffffffa48f07080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b968191108894df4be *d4d1110883c5f0e9d76808008d7600a48f0708420000002400010083c70c3b7b5c761ec7450060 *a70708c7436c03000000b8ff00000083f000894320e92a960800c747f824a707088d4ff8894d08 *8b750483c504e96a6a080089f683c530ebbb8d7600a48f070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9c0191108894df4bed4d1110883c5f0e947680800 *8d7600a48f0708420000002400010083c70c3b7b5c761ec74500f0a70708c7436c03000000b8ff *00000083f000894320e99a950800c747f8b4a707088d4ff8894d088b750483c504e9da69080089 *f683c534ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9181a1108894df4bed4d1110883c5f0e9b76708008d7600a48f07084200000024 *00010083c70c3b7b5c761ec7450080a80708c7436c03000000b8ff00000083f000894320e90a95 *0800c747f844a807088d4ff8894d088b750483c504e94a69080089f6a48f070800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9701a1108894df4bed4d1110883 *c5f0e92f6708008d760083c534e97cffffffa48f070800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9781a1108894df4bed4d1110883c5f0e9eb6608008d7600 *a48f0708420000002400010083c70c3b7b5c761ec745004ca90708c7436c03000000b8ff000000 *83f000894320e93e940800c747f810a907088d4ff8894d088b750483c504e97e68080089f683c5 *34ebbb8d7600a48f070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9d01a1108894df4bed4d1110883c5f0e95b6608008d7600a48f07084200000024000100 *83c70c3b7b5c761ec74500dca90708c7436c03000000b8ff00000083f000894320e9ae930800c7 *47f8a0a907088d4ff8894d088b750483c504e9ee67080089f683c534ebbb8d760083c7383b7b5c *760ac7436c0e000000ff63f8c747cc28c409088b453c8947d08b45348947d48b45308947d88b45 *2c8947dc8b45288947e08b45248947e48b45208947e88b451c8947ec8b45188947f08b45148947 *f48b45108947f88b450c8947fc8b450889078d47cc89453c8b750483c538e96d6708009083c534 *e938ffffff9caa070824aa0708a48f07080f00000025000100a48f070810000000240001008b46 *0483f87d750f8b7504c74504b8aa070883c504ff2683c538e9f9feffff908b46088945008b7604 *c745fcc4aa070883c5fcff268d7600e4aa07081caa0708a48f07080f000000250001008b7604c7 *450010ab0708ff2683c534e9b8feffff1cab07081cab07081cab07081cab07081cab070810ab07 *081cab07081cab0708a48f07080f00000025000100a48f0708040001000f0000000b0001008d45 *c03b43547303ff63fc8b46048945fc8b463c8945c88b46388945cc8b46348945d08b46308945d4 *8b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b4614 *8945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c450ab070883c5c4ff2689 *f6a48f0708040001000f0000000b0003008d45f83b4354720883c7403b7b5c760ac7436c100000 *00ff63fcc747c460ab07088b46048947c88b46088947cc8b460c8947d08b46108947d48b461489 *47d88b46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec8b462c8947f08b *46308947f48b46348947f88b45008947fc8b463889078d47c4894500c745fc28d411088b763c83 *c5f8e99a69080089f6b48f070800000200120009008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f40cb51108be98d6110883c5f0e9576508008d760083c74c3b7b5c760ac7436c1300 *0000ff63f8c747b8e8ab07088b45388947bc8b453c8947c08b45348947c48b45308947c88b452c *8947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f888ac07088d47b889453c8d47 *f88945388b750483c534e9cf6808008d760083c534e9fcfbffff48ad0708b4ac0708a48f07080f *00000025009300a48f070810000000240093008b460483f83d750f8b7504c7450464ad070883c5 *04ff2683c538e9bdfbffff908b46088945008b7604c745fc70ad070883c5fcff268d760090ad07 *088ca90708a48f07080f000000250093008b7604c74500bcad0708ff2683c534e97cfbffffc8ad *0708c8ad0708c8ad0708c8ad0708c8ad0708bcad0708c8ad0708c8ad0708a48f07080f00000025 *009300a48f0708040001000f0000000b0093008d45c03b43547303ff63fc8b46048945fc8b463c *8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e0 *8b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b4500 *8b4e08894d0089c6c745c4fcad070883c5c4ff2689f683c7403b7b5c760ac7436c10000000ff63 *f8c747c40cae07088b45388947c88b453c8947cc8b45348947d08b45308947d48b452c8947d88b *45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b451089 *47f48b450c8947f88b45088947fc8b450489078d47c489453cc7453828d411088b750483c534e9 *0667080089f684ae0708fca80708a48f07080f0000002500930083c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8cca807088b46048945fc8d4ff8894df8bec4d11108c7450024af070883c5f4 *e9b76608008d760083c534e918f9ffff60af070860af070860af070860af070824af070860af07 *0860af070860af0708a08f07080f00000025002701a08f0708040001000f0000000b0027018d45 *b83b43547303ff63fc8b46048945fc8b463c8945c88b46388945cc8b46348945d08b46308945d4 *8b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b4614 *8945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c494af070883c5c4ff2689 *f683c7403b7b5c760ac7436c10000000ff63f8c747c4a4af07088b45388947c88b453c8947cc8b *45348947d08b45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c89 *47e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47 *c489453cc7453828d411088b750483c534e96e65080089f683c534e940f7ffffa8b007081cb007 *08a08f07080f00000025002701a08f070810000000240027018b460483f82c750f8b7504c74504 *c4b0070883c504ff2683c538e901f7ffff908b46088945008b7604c745fcd0b0070883c5fcff26 *8d7600f0b0070830a80708a08f07080f000000250027018b7604c745001cb10708ff2683c534e9 *c0f6ffff28b1070828b1070828b1070828b1070828b107081cb1070828b1070828b10708a08f07 *080f00000025002701a08f0708040001000f0000000b0027018d45c03b43547303ff63fc8b4604 *8945fc8b463c8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc *8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c *8945f88b45008b4e08894d0089c6c745c45cb1070883c5c4ff2689f6a08f0708040001000e0000 *000b0027018d45f83b4354720883c7403b7b5c760ac7436c10000000ff63fcc747c46cb107088b *46048947c88b46088947cc8b460c8947d08b46108947d48b46148947d88b46188947dc8b461c89 *47e08b46208947e48b46248947e88b46288947ec8b462c8947f08b46308947f48b45008947f88b *46348947fc8b463889078d47c4894500c745fc28d411088b763883c5f8e98e63080089f6b48f07 *0800000200120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98 *d6110883c5f0e94b5f08008d760083c7483b7b5c760ac7436c12000000ff63f8c747bcf4b10708 *8b45348947c08b45388947c48b45308947c88b452c8947cc8b45288947d08b45248947d48b4520 *8947d88b451c8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f0 *8b45048947f4c747f894b207088d47bc8945388d47f88945348b750483c530e9c96208009083c5 *30e90cf4ffff4cb30708c0b20708a08f07080e00000025002703a08f07080f000000240027038b *460483f83d750f8b7504c7450468b3070883c504ff2683c534e9cdf3ffff908b46088945008b76 *04c745fc74b3070883c5fcff268d760094b30708a0a70708a08f07080e000000250027038b7604 *c74500c0b30708ff2683c530e98cf3ffffccb30708ccb30708ccb30708ccb30708ccb30708c0b3 *0708ccb30708ccb30708a08f07080e00000025002703a08f0708040001000e0000000b0027038d *45c43b43547303ff63fc8b46048945fc8b46388945cc8b46348945d08b46308945d48b462c8945 *d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745c800b4070883c5c8ff2683c73c3b7b5c *760ac7436c0f000000ff63f8c747c810b407088b45348947cc8b45388947d08b45308947d48b45 *2c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947 *f08b45108947f48b450c8947f88b45088947fc8b450489078d47c8894538c7453428d411088b75 *0483c530e91061080080b4070810a70708a08f07080e0000002500270383c70c3b7b5c760ac743 *6c03000000ff63f8c747f8e0a607088b46048945fc8d4ff8894df8bec4d11108c7450018b50708 *83c5f4e9c36008008d760083c530e938f1ffff54b5070854b5070854b5070854b5070818b50708 *54b5070854b5070854b50708a08f07080e00000025002703a08f0708040001000e0000000b0027 *038d45bc3b43547303ff63fc8b46048945fc8b46388945cc8b46348945d08b46308945d48b462c *8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f0 *8b46108945f48b460c8945f88b45008b4e08894d0089c6c745c888b5070883c5c8ff2683c73c3b *7b5c760ac7436c0f000000ff63f8c747c898b507088b45348947cc8b45388947d08b45308947d4 *8b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b4514 *8947f08b45108947f48b450c8947f88b45088947fc8b450489078d47c8894538c7453428d41108 *8b750483c530e9885f080083c530e970efffff8cb6070808b60708a08f07080e00000025002703 *a08f07080f000000240027038b460483f82c750f8b7504c74504a8b6070883c504ff2683c534e9 *31efffff908b46088945008b7604c745fcb4b6070883c5fcff268d7600d4b6070844a60708a08f *07080e000000250027038b7604c7450000b70708ff2683c530e9f0eeffff0cb707080cb707080c *b707080cb707080cb7070800b707080cb707080cb70708a08f07080e00000025002703a08f0708 *040001000e0000000b0027038d45c43b43547303ff63fc8b46048945fc8b46388945cc8b463489 *45d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b *46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c840b7 *070883c5c8ff26a08f0708040001000d0000000b0027038d45f83b4354720883c73c3b7b5c760a *c7436c0f000000ff63fcc747c850b707088b46048947cc8b46088947d08b460c8947d48b461089 *47d88b46148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f08b *462c8947f48b45008947f88b46308947fc8b463489078d47c8894500c745fc28d411088b763483 *c5f8e9b85d0800b48f070800000200120011008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f41cb51108be98d6110883c5f0e9775908008d760083c7443b7b5c760ac7436c11000000 *ff63f8c747c0d0b707088b45308947c48b45348947c88b452c8947cc8b45288947d08b45248947 *d48b45208947d88b451c8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45 *088947f08b45048947f4c747f868b807088d47c08945348d47f88945308b750483c52ce9fb5c08 *008d760083c52ce950ecffff1cb9070894b80708a08f07080d00000025002703a08f07080e0000 *00240027038b460483f83d750f8b7504c7450438b9070883c504ff2683c530e911ecffff908b46 *088945008b7604c745fc44b9070883c5fcff268d760064b90708b4a50708a08f07080d00000025 *0027038b7604c7450090b90708ff2683c52ce9d0ebffff9cb907089cb907089cb907089cb90708 *9cb9070890b907089cb907089cb90708a08f07080d00000025002703a08f0708040001000d0000 *000b0027038d45c83b43547303ff63fc8b46048945fc8b46348945d08b46308945d48b462c8945 *d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745ccd0b9070883c5ccff2689f683c7383b *7b5c760ac7436c0e000000ff63f8c747cce0b907088b45308947d08b45348947d48b452c8947d8 *8b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b4510 *8947f48b450c8947f88b45088947fc8b450489078d47cc894534c7453028d411088b750483c52c *e94a5b080089f64cba070824a50708a08f07080d0000002500270383c70c3b7b5c760ac7436c03 *000000ff63f8c747f8f4a407088b46048945fc8d4ff8894df8bec4d11108c74500e0ba070883c5 *f4e9fb5a08008d760083c52ce984e9ffff1cbb07081cbb07081cbb07081cbb0708e0ba07081cbb *07081cbb07081cbb0708a08f07080d00000025002703a08f0708040001000d0000000b0027038d *45c03b43547303ff63fc8b46048945fc8b46348945d08b46308945d48b462c8945d88b46288945 *dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b46 *0c8945f88b45008b4e08894d0089c6c745cc50bb070883c5ccff2689f683c7383b7b5c760ac743 *6c0e000000ff63f8c747cc60bb07088b45308947d08b45348947d48b452c8947d88b45288947dc *8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c *8947f88b45088947fc8b450489078d47cc894534c7453028d411088b750483c52ce9ca59080089 *f683c52ce9c4e7ffff4cbc0708ccbb0708a08f07080d00000025002703a08f07080e0000002400 *27038b460483f82c750f8b7504c7450468bc070883c504ff2683c530e985e7ffff908b46088945 *008b7604c745fc74bc070883c5fcff268d760094bc070858a40708a08f07080d00000025002703 *8b7604c74500c0bc0708ff2683c52ce944e7ffffccbc0708ccbc0708ccbc0708ccbc0708ccbc07 *08c0bc0708ccbc0708ccbc0708a08f07080d00000025002703a08f0708040001000d0000000b00 *27038d45c83b43547303ff63fc8b46048945fc8b46348945d08b46308945d48b462c8945d88b46 *288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945 *f48b460c8945f88b45008b4e08894d0089c6c745cc00bd070883c5ccff2689f6a08f0708040001 *000c0000000b0027038d45f83b4354720883c7383b7b5c760ac7436c0e000000ff63fcc747cc10 *bd07088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e4 *8b461c8947e88b46208947ec8b46248947f08b46288947f48b45008947f88b462c8947fc8b4630 *89078d47cc894500c745fc28d411088b763083c5f8e90258080089f6b48f070800000200120011 *008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6110883c5f0e9bf *5308008d760083c7403b7b5c760ac7436c10000000ff63f8c747c48cbd07088b452c8947c88b45 *308947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947 *e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f820be07088d47c48945308d *47f889452c8b750483c528e9495708009083c528e9b4e4ffffccbe07084cbe0708a08f07080c00 *000025002703a08f07080d000000240027038b460483f83d750f8b7504c74504e8be070883c504 *ff2683c52ce975e4ffff908b46088945008b7604c745fcf4be070883c5fcff268d760014bf0708 *c8a30708a08f07080c000000250027038b7604c7450040bf0708ff2683c528e934e4ffff4cbf07 *084cbf07084cbf07084cbf07084cbf070840bf07084cbf07084cbf0708a08f07080c0000002500 *2703a08f0708040001000c0000000b0027038d45cc3b43547303ff63fc8b46048945fc8b463089 *45d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b *46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d080bf070883c5d0ff *2683c7343b7b5c760ac7436c0d000000ff63f8c747d090bf07088b452c8947d48b45308947d88b *45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b451089 *47f48b450c8947f88b45088947fc8b450489078d47d0894530c7452c28d411088b750483c528e9 *a8550800f4bf070838a30708a08f07080c0000002500270383c70c3b7b5c760ac7436c03000000 *ff63f8c747f808a307088b46048945fc8d4ff8894df8bec4d11108c7450080c0070883c5f4e95b *5508008d760083c528e9f8e1ffffbcc00708bcc00708bcc00708bcc0070880c00708bcc00708bc *c00708bcc00708a08f07080c00000025002703a08f0708040001000c0000000b0027038d45c43b *43547303ff63fc8b46048945fc8b46308945d48b462c8945d88b46288945dc8b46248945e08b46 *208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745d0f0c0070883c5d0ff2683c7343b7b5c760ac7436c0d000000ff63f8c747d0 *00c107088b452c8947d48b45308947d88b45288947dc8b45248947e08b45208947e48b451c8947 *e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47d0 *894530c7452c28d411088b750483c528e93854080083c528e948e0ffffdcc1070864c10708a08f *07080c00000025002703a08f07080d000000240027038b460483f82c750f8b7504c74504f8c107 *0883c504ff2683c52ce909e0ffff908b46088945008b7604c745fc04c2070883c5fcff268d7600 *24c207086ca20708a08f07080c000000250027038b7604c7450050c20708ff2683c528e9c8dfff *ff5cc207085cc207085cc207085cc207085cc2070850c207085cc207085cc20708a08f07080c00 *000025002703a08f0708040001000c0000000b0027038d45cc3b43547303ff63fc8b46048945fc *8b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b4618 *8945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d090c20708 *83c5d0ff26a08f0708040001000b0000000b0027038d45f83b4354720883c7343b7b5c760ac743 *6c0d000000ff63fcc747d0a0c207088b46048947d48b46088947d88b460c8947dc8b46108947e0 *8b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f48b45008947f88b4628 *8947fc8b462c89078d47d0894500c745fc28d411088b762c83c5f8e980520800b48f0708000002 *00120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6110883 *c5f0e93f4e08008d760083c73c3b7b5c760ac7436c0f000000ff63f8c747c814c307088b452889 *47cc8b452c8947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e48b *45108947e88b450c8947ec8b45088947f08b45048947f4c747f8a0c307088d47c889452c8d47f8 *8945288b750483c524e9cf5108008d760083c524e94cddffff48c40708ccc30708a08f07080b00 *000025002703a08f07080c000000240027038b460483f83d750f8b7504c7450464c4070883c504 *ff2683c528e90dddffff908b46088945008b7604c745fc70c4070883c5fcff268d760090c40708 *dca10708a08f07080b000000250027038b7604c74500bcc40708ff2683c524e9ccdcffffc8c407 *08c8c40708c8c40708c8c40708c8c40708bcc40708c8c40708c8c40708a08f07080b0000002500 *2703a08f0708040001000b0000000b0027038d45d03b43547303ff63fc8b46048945fc8b462c89 *45d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b *46108945f48b460c8945f88b45008b4e08894d0089c6c745d4fcc4070883c5d4ff2689f683c730 *3b7b5c760ac7436c0c000000ff63f8c747d40cc507088b45288947d88b452c8947dc8b45248947 *e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45 *088947fc8b450489078d47d489452cc7452828d411088b750483c524e93650080089f66cc50708 *4ca10708a08f07080b0000002500270383c70c3b7b5c760ac7436c03000000ff63f8c747f81ca1 *07088b46048945fc8d4ff8894df8bec4d11108c74500f4c5070883c5f4e9e74f08008d760083c5 *24e998daffff30c6070830c6070830c6070830c60708f4c5070830c6070830c6070830c60708a0 *8f07080b00000025002703a08f0708040001000b0000000b0027038d45c83b43547303ff63fc8b *46048945fc8b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b461889 *45ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d464c6070883 *c5d4ff2689f683c7303b7b5c760ac7436c0c000000ff63f8c747d474c607088b45288947d88b45 *2c8947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947 *f48b450c8947f88b45088947fc8b450489078d47d489452cc7452828d411088b750483c524e9ce *4e080089f683c524e9f0d8ffff48c70708d4c60708a08f07080b00000025002703a08f07080c00 *0000240027038b460483f82c750f8b7504c7450464c7070883c504ff2683c528e9b1d8ffff908b *46088945008b7604c745fc70c7070883c5fcff268d760090c7070880a00708a08f07080b000000 *250027038b7604c74500bcc70708ff2683c524e970d8ffffc8c70708c8c70708c8c70708c8c707 *08c8c70708bcc70708c8c70708c8c70708a08f07080b00000025002703a08f0708040001000b00 *00000b0027038d45d03b43547303ff63fc8b46048945fc8b462c8945d88b46288945dc8b462489 *45e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b *45008b4e08894d0089c6c745d4fcc7070883c5d4ff2689f6a08f0708040001000a0000000b0027 *038d45f83b4354720883c7303b7b5c760ac7436c0c000000ff63fcc747d40cc807088b46048947 *d88b46088947dc8b460c8947e08b46108947e48b46148947e88b46188947ec8b461c8947f08b46 *208947f48b45008947f88b46248947fc8b462889078d47d4894500c745fc28d411088b762883c5 *f8e91e4d080089f6b48f070800000200120003008d45f03b43547303ff63f8c745f8d46d100889 *75fcc745f4bcb31108be98d6110883c5f0e9db4808008d760083c7383b7b5c760ac7436c0e0000 *00ff63f8c747cc7cc807088b45248947d08b45288947d48b45208947d88b451c8947dc8b451889 *47e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f804c90708 *8d47cc8945288d47f88945248b750483c520e9714c08009083c520e904d6ffffa4c9070830c907 *08a08f07080a00000025006703a08f07080b000000240067038b460483f83d750f8b7504c74504 *c0c9070883c504ff2683c524e9c5d5ffff908b46088945008b7604c745fcccc9070883c5fcff26 *8d7600ecc90708f09f0708a08f07080a000000250067038b7604c7450018ca0708ff2683c520e9 *84d5ffff24ca070824ca070824ca070824ca070824ca070818ca070824ca070824ca0708a08f07 *080a00000025006703a08f0708040001000a0000000b0067038d45d43b43547303ff63fc8b4604 *8945fc8b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f0 *8b46108945f48b460c8945f88b45008b4e08894d0089c6c745d858ca070883c5d8ff2683c72c3b *7b5c760ac7436c0b000000ff63f8c747d868ca07088b45248947dc8b45288947e08b45208947e4 *8b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b4504 *89078d47d8894528c7452428d411088b750483c520e9e84a0800c0ca0708609f0708a08f07080a *0000002500670383c70c3b7b5c760ac7436c03000000ff63f8c747f8309f07088b46048945fc8d *4ff8894df8bec4d11108c7450040cb070883c5f4e99b4a08008d760083c520e960d3ffff7ccb07 *087ccb07087ccb07087ccb070840cb07087ccb07087ccb07087ccb0708a08f07080a0000002500 *6703a08f0708040001000a0000000b0067038d45cc3b43547303ff63fc8b46048945fc8b462889 *45dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b *460c8945f88b45008b4e08894d0089c6c745d8b0cb070883c5d8ff2683c72c3b7b5c760ac7436c *0b000000ff63f8c747d8c0cb07088b45248947dc8b45288947e08b45208947e48b451c8947e88b *45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47d88945 *28c7452428d411088b750483c520e99049080083c520e9c8d1ffff84cc070818cc0708a08f0708 *0a00000025006703a08f07080b000000240067038b460483f82c750f8b7504c74504a0cc070883 *c504ff2683c524e989d1ffff908b46088945008b7604c745fcaccc070883c5fcff268d7600cccc *0708949e0708a08f07080a000000250067038b7604c74500f8cc0708ff2683c520e948d1ffff04 *cd070804cd070804cd070804cd070804cd0708f8cc070804cd070804cd0708a08f07080a000000 *25006703a08f0708040001000a0000000b0067038d45d43b43547303ff63fc8b46048945fc8b46 *288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945 *f48b460c8945f88b45008b4e08894d0089c6c745d838cd070883c5d8ff26a08f07080400010009 *0000000b0067038d45f83b4354720883c72c3b7b5c760ac7436c0b000000ff63fcc747d848cd07 *088b46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b46 *1c8947f48b45008947f88b46208947fc8b462489078d47d8894500c745fc28d411088b762483c5 *f8e9f0470800b48f070800000200120011008d45f03b43547303ff63f8c745f8d46d10088975fc *c745f41cb51108be98d6110883c5f0e9af4308008d760083c7343b7b5c760ac7436c0d000000ff *63f8c747d0b0cd07088b45208947d48b45248947d88b451c8947dc8b45188947e08b45148947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f830ce07088d47d08945248d47 *f88945208b750483c51ce94b4708008d760083c51ce9f0ceffffccce07085cce0708a08f070809 *00000025006703a08f07080a000000240067038b460483f83d750f8b7504c74504e8ce070883c5 *04ff2683c520e9b1ceffff908b46088945008b7604c745fcf4ce070883c5fcff268d760014cf07 *08049e0708a08f070809000000250067038b7604c7450040cf0708ff2683c51ce970ceffff4ccf *07084ccf07084ccf07084ccf07084ccf070840cf07084ccf07084ccf0708a08f07080900000025 *006703a08f070804000100090000000b0067038d45d83b43547303ff63fc8b46048945fc8b4624 *8945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745dc80cf070883c5dcff2689f683c7283b7b5c760ac7436c0a0000 *00ff63f8c747dc90cf07088b45208947e08b45248947e48b451c8947e88b45188947ec8b451489 *47f08b45108947f48b450c8947f88b45088947fc8b450489078d47dc894524c7452028d411088b *750483c51ce9ca45080089f6e4cf0708749d0708a08f0708090000002500670383c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8449d07088b46048945fc8d4ff8894df8bec4d11108c7450060 *d0070883c5f4e97b4508008d760083c51ce954ccffff9cd007089cd007089cd007089cd0070860 *d007089cd007089cd007089cd00708a08f07080900000025006703a08f07080400010009000000 *0b0067038d45d03b43547303ff63fc8b46048945fc8b46248945e08b46208945e48b461c8945e8 *8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745dcd0 *d0070883c5dcff2689f683c7283b7b5c760ac7436c0a000000ff63f8c747dce0d007088b452089 *47e08b45248947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b *45088947fc8b450489078d47dc894524c7452028d411088b750483c51ce97a44080089f683c51c *e9c4caffff9cd1070834d10708a08f07080900000025006703a08f07080a000000240067038b46 *0483f82c750f8b7504c74504b8d1070883c504ff2683c520e985caffff908b46088945008b7604 *c745fcc4d1070883c5fcff268d7600e4d10708a89c0708a08f070809000000250067038b7604c7 *450010d20708ff2683c51ce944caffff1cd207081cd207081cd207081cd207081cd2070810d207 *081cd207081cd20708a08f07080900000025006703a08f070804000100090000000b0067038d45 *d83b43547303ff63fc8b46048945fc8b46248945e08b46208945e48b461c8945e88b46188945ec *8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745dc50d2070883c5dc *ff2689f6a08f070804000100080000000b0067038d45f83b4354720883c7283b7b5c760ac7436c *0a000000ff63fcc747dc60d207088b46048947e08b46088947e48b460c8947e88b46108947ec8b *46148947f08b46188947f48b45008947f88b461c8947fc8b462089078d47dc894500c745fc28d4 *11088b762083c5f8e9e242080089f6b48f070800000200120021008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f42cb51108be98d6110883c5f0e99f3e08008d760083c7303b7b5c76 *0ac7436c0c000000ff63f8c747d4c4d207088b451c8947d88b45208947dc8b45188947e08b4514 *8947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f840d307088d47d48945 *208d47f889451c8b750483c518e9414208009083c518e9fcc7ffffd4d307086cd30708a08f0708 *0800000025006707a08f070809000000240067078b460483f83d750f8b7504c74504f0d3070883 *c504ff2683c51ce9bdc7ffff908b46088945008b7604c745fcfcd3070883c5fcff268d76001cd4 *0708189c0708a08f070808000000250067078b7604c7450048d40708ff2683c518e97cc7ffff54 *d4070854d4070854d4070854d4070854d4070848d4070854d4070854d40708a08f070808000000 *25006707a08f070804000100080000000b0067078d45dc3b43547303ff63fc8b46048945fc8b46 *208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745e088d4070883c5e0ff2683c7243b7b5c760ac7436c09000000ff63f8c747e0 *98d407088b451c8947e48b45208947e88b45188947ec8b45148947f08b45108947f48b450c8947 *f88b45088947fc8b450489078d47e0894520c7451c28d411088b750483c518e9d0400800e4d407 *08889b0708a08f0708080000002500670783c70c3b7b5c760ac7436c03000000ff63f8c747f858 *9b07088b46048945fc8d4ff8894df8bec4d11108c7450058d5070883c5f4e9834008008d760083 *c518e970c5ffff94d5070894d5070894d5070894d5070858d5070894d5070894d5070894d50708 *a08f07080800000025006707a08f070804000100080000000b0067078d45d43b43547303ff63fc *8b46048945fc8b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c *8945f88b45008b4e08894d0089c6c745e0c8d5070883c5e0ff2683c7243b7b5c760ac7436c0900 *0000ff63f8c747e0d8d507088b451c8947e48b45208947e88b45188947ec8b45148947f08b4510 *8947f48b450c8947f88b45088947fc8b450489078d47e0894520c7451c28d411088b750483c518 *e9903f080083c518e9f0c3ffff84d6070824d60708a08f07080800000025006707a08f07080900 *0000240067078b460483f82c750f8b7504c74504a0d6070883c504ff2683c51ce9b1c3ffff908b *46088945008b7604c745fcacd6070883c5fcff268d7600ccd60708bc9a0708a08f070808000000 *250067078b7604c74500f8d60708ff2683c518e970c3ffff04d7070804d7070804d7070804d707 *0804d70708f8d6070804d7070804d70708a08f07080800000025006707a08f0708040001000800 *00000b0067078d45dc3b43547303ff63fc8b46048945fc8b46208945e48b461c8945e88b461889 *45ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e038d7070883 *c5e0ff26a08f070804000100070000000b0067078d45f83b4354720883c7243b7b5c760ac7436c *09000000ff63fcc747e048d707088b46048947e48b46088947e88b460c8947ec8b46108947f08b *46148947f48b45008947f88b46188947fc8b461c89078d47e0894500c745fc28d411088b761c83 *c5f8e9083e0800b48f070800000200120011008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f41cb51108be98d6110883c5f0e9c73908008d760083c72c3b7b5c760ac7436c0b000000 *ff63f8c747d8a4d707088b45188947dc8b451c8947e08b45148947e48b45108947e88b450c8947 *ec8b45088947f08b45048947f4c747f818d807088d47d889451c8d47f88945188b750483c514e9 *6f3d08008d760083c514e93cc1ffffa8d8070844d80708a08f07080700000025006707a08f0708 *08000000240067078b460483f83d750f8b7504c74504c4d8070883c504ff2683c518e9fdc0ffff *908b46088945008b7604c745fcd0d8070883c5fcff268d7600f0d807082c9a0708a08f07080700 *0000250067078b7604c745001cd90708ff2683c514e9bcc0ffff28d9070828d9070828d9070828 *d9070828d907081cd9070828d9070828d90708a08f07080700000025006707a08f070804000100 *070000000b0067078d45e03b43547303ff63fc8b46048945fc8b461c8945e88b46188945ec8b46 *148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e45cd9070883c5e4ff26 *89f683c7203b7b5c760ac7436c08000000ff63f8c747e46cd907088b45188947e88b451c8947ec *8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e489451cc7451828 *d411088b750483c514e9063c080089f6b4d907089c990708a08f0708070000002500670783c70c *3b7b5c760ac7436c03000000ff63f8c747f86c9907088b46048945fc8d4ff8894df8bec4d11108 *c7450024da070883c5f4e9b73b08008d760083c514e9b8beffff60da070860da070860da070860 *da070824da070860da070860da070860da0708a08f07080700000025006707a08f070804000100 *070000000b0067078d45d83b43547303ff63fc8b46048945fc8b461c8945e88b46188945ec8b46 *148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e494da070883c5e4ff26 *89f683c7203b7b5c760ac7436c08000000ff63f8c747e4a4da07088b45188947e88b451c8947ec *8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e489451cc7451828 *d411088b750483c514e9ce3a080089f683c514e940bdffff48db0708ecda0708a08f0708070000 *0025006707a08f070808000000240067078b460483f82c750f8b7504c7450464db070883c504ff *2683c518e901bdffff908b46088945008b7604c745fc70db070883c5fcff268d760090db0708d0 *980708a08f070807000000250067078b7604c74500bcdb0708ff2683c514e9c0bcffffc8db0708 *c8db0708c8db0708c8db0708c8db0708bcdb0708c8db0708c8db0708a08f070807000000250067 *07a08f070804000100070000000b0067078d45e03b43547303ff63fc8b46048945fc8b461c8945 *e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e4 *fcdb070883c5e4ff2689f6a08f070804000100060000000b0067078d45f83b4354720883c7203b *7b5c760ac7436c08000000ff63fcc747e40cdc07088b46048947e88b46088947ec8b460c8947f0 *8b46108947f48b45008947f88b46148947fc8b461889078d47e4894500c745fc28d411088b7618 *83c5f8e94e39080089f6b48f070800000200120011008d45f03b43547303ff63f8c745f8d46d10 *088975fcc745f41cb51108be98d6110883c5f0e90b3508008d760083c7283b7b5c760ac7436c0a *000000ff63f8c747dc64dc07088b45148947e08b45188947e48b45108947e88b450c8947ec8b45 *088947f08b45048947f4c747f8d4dc07088d47dc8945188d47f88945148b750483c510e9b93808 *009083c510e99cbaffff5cdd070800dd0708a08f07080600000025006707a08f07080700000024 *0067078b460483f83d750f8b7504c7450478dd070883c504ff2683c514e95dbaffff908b460889 *45008b7604c745fc84dd070883c5fcff268d7600a4dd070840980708a08f070806000000250067 *078b7604c74500d0dd0708ff2683c510e91cbaffffdcdd0708dcdd0708dcdd0708dcdd0708dcdd *0708d0dd0708dcdd0708dcdd0708a08f07080600000025006707a08f070804000100060000000b *0067078d45e43b43547303ff63fc8b46048945fc8b46188945ec8b46148945f08b46108945f48b *460c8945f88b45008b4e08894d0089c6c745e810de070883c5e8ff2683c71c3b7b5c760ac7436c *07000000ff63f8c747e820de07088b45148947ec8b45188947f08b45108947f48b450c8947f88b *45088947fc8b450489078d47e8894518c7451428d411088b750483c510e96037080060de0708b0 *970708a08f0708060000002500670783c70c3b7b5c760ac7436c03000000ff63f8c747f8809707 *088b46048945fc8d4ff8894df8bec4d11108c74500c8de070883c5f4e9133708008d760083c510 *e928b8ffff04df070804df070804df070804df0708c8de070804df070804df070804df0708a08f *07080600000025006707a08f070804000100060000000b0067078d45dc3b43547303ff63fc8b46 *048945fc8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6 *c745e838df070883c5e8ff2683c71c3b7b5c760ac7436c07000000ff63f8c747e848df07088b45 *148947ec8b45188947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e8894518 *c7451428d411088b750483c510e93836080083c510e9c0b6ffffdcdf070888df0708a08f070806 *00000025006707a08f070807000000240067078b460483f82c750f8b7504c74504f8df070883c5 *04ff2683c514e981b6ffff908b46088945008b7604c745fc04e0070883c5fcff268d760024e007 *08e4960708a08f070806000000250067078b7604c7450050e00708ff2683c510e940b6ffff5ce0 *07085ce007085ce007085ce007085ce0070850e007085ce007085ce00708a08f07080600000025 *006707a08f070804000100060000000b0067078d45e43b43547303ff63fc8b46048945fc8b4618 *8945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e890e00708 *83c5e8ff26a08f070804000100050000000b0067078d45f83b4354720883c71c3b7b5c760ac743 *6c07000000ff63fcc747e8a0e007088b46048947ec8b46088947f08b460c8947f48b45008947f8 *8b46108947fc8b461489078d47e8894500c745fc28d411088b761483c5f8e9c8340800b48f0708 *00000200120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6 *110883c5f0e9873008008d760083c7243b7b5c760ac7436c09000000ff63f8c747e0f0e007088b *45108947e48b45148947e88b450c8947ec8b45088947f08b45048947f4c747f858e107088d47e0 *8945148d47f88945108b750483c50ce93b3408008d760083c50ce930b4ffffdce1070884e10708 *a08f07080500000025006707a08f070806000000240067078b460483f83d750f8b7504c74504f8 *e1070883c504ff2683c510e9f1b3ffff908b46088945008b7604c745fc04e2070883c5fcff268d *760024e2070854960708a08f070805000000250067078b7604c7450050e20708ff2683c50ce9b0 *b3ffff5ce207085ce207085ce207085ce207085ce2070850e207085ce207085ce20708a08f0708 *0500000025006707a08f070804000100050000000b0067078d45e83b43547303ff63fc8b460489 *45fc8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745ec90e2070883 *c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8c747eca0e207088b45108947f08b45 *148947f48b450c8947f88b45088947fc8b450489078d47ec894514c7451028d411088b750483c5 *0ce9ea32080089f6dce20708c4950708a08f0708050000002500670783c70c3b7b5c760ac7436c *03000000ff63f8c747f8949507088b46048945fc8d4ff8894df8bec4d11108c7450040e3070883 *c5f4e99b3208008d760083c50ce9c4b1ffff7ce307087ce307087ce307087ce3070840e307087c *e307087ce307087ce30708a08f07080500000025006707a08f070804000100050000000b006707 *8d45e03b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745ecb0e3070883c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8 *c747ecc0e307088b45108947f08b45148947f48b450c8947f88b45088947fc8b450489078d47ec *894514c7451028d411088b750483c50ce9ca31080089f683c50ce964b0ffff4ce40708fce30708 *a08f07080500000025006707a08f070806000000240067078b460483f82c750f8b7504c7450468 *e4070883c504ff2683c510e925b0ffff908b46088945008b7604c745fc74e4070883c5fcff268d *760094e40708f8940708a08f070805000000250067078b7604c74500c0e40708ff2683c50ce9e4 *afffffcce40708cce40708cce40708cce40708cce40708c0e40708cce40708cce40708a08f0708 *0500000025006707a08f070804000100050000000b0067078d45e83b43547303ff63fc8b460489 *45fc8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745ec00e5070883 *c5ecff2689f6a08f070804000100040000000b0067078d45f83b4354720883c7183b7b5c760ac7 *436c06000000ff63fcc747ec10e507088b46048947f08b46088947f48b45008947f88b460c8947 *fc8b461089078d47ec894500c745fc28d411088b761083c5f8e96230080089f6b48f0708000002 *00120011008d45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6110883 *c5f0e91f2c08008d760083c7203b7b5c760ac7436c08000000ff63f8c747e45ce507088b450c89 *47e88b45108947ec8b45088947f08b45048947f4c747f8c0e507088d47e48945108d47f889450c *8b750483c508e9d92f08009083c508e9e4adffff3ce60708ece50708a08f070804000000250067 *07a08f070805000000240067078b460483f83d750f8b7504c7450458e6070883c504ff2683c50c *e9a5adffff908b46088945008b7604c745fc64e6070883c5fcff268d760084e6070868940708a0 *8f070804000000250067078b7604c74500b0e60708ff2683c508e964adffffbce60708bce60708 *bce60708bce60708bce60708b0e60708bce60708bce60708a08f07080400000025006707a08f07 *0804000100040000000b0067078d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c *8945f88b45008b4e08894d0089c6c745f0f0e6070883c5f0ff2683c7143b7b5c760ac7436c0500 *0000ff63f8c747f000e707088b450c8947f48b45108947f88b45088947fc8b450489078d47f089 *4510c7450c28d411088b750483c508e9982e080034e70708d8930708a08f070804000000250067 *0783c70c3b7b5c760ac7436c03000000ff63f8c747f8a89307088b46048945fc8d4ff8894df8be *c4d11108c7450090e7070883c5f4e94b2e08008d760083c508e988abffffcce70708cce70708cc *e70708cce7070890e70708cce70708cce70708cce70708a08f07080400000025006707a08f0708 *04000100040000000b0067078d45e43b43547303ff63fc8b46048945fc8b46108945f48b460c89 *45f88b45008b4e08894d0089c6c745f000e8070883c5f0ff2683c7143b7b5c760ac7436c050000 *00ff63f8c747f010e807088b450c8947f48b45108947f88b45088947fc8b450489078d47f08945 *10c7450c28d411088b750483c508e9882d080083c508e938aaffff8ce8070844e80708a08f0708 *0400000025006707a08f070805000000240067078b460483f82c750f8b7504c74504a8e8070883 *c504ff2683c50ce9f9a9ffff908b46088945008b7604c745fcb4e8070883c5fcff268d7600d4e8 *07080c930708a08f070804000000250067078b7604c7450000e90708ff2683c508e9b8a9ffff0c *e907080ce907080ce907080ce907080ce9070800e907080ce907080ce90708a08f070804000000 *25006707a08f070804000100040000000b0067078d45ec3b43547303ff63fc8b46048945fc8b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745f040e9070883c5f0ff26a08f07080400 *0100030000000b0067078d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0 *50e907088b46048947f48b45008947f88b46088947fc8b460c89078d47f0894500c745fc28d411 *088b760c83c5f8e9302c0800b48f070800000200120005008d45f03b43547303ff63f8c745f8d4 *6d10088975fcc745f4dcb31108be98d6110883c5f0e9ef2708008d760083c71c3b7b5c760ac743 *6c07000000ff63f8c747e894e907088b45088947ec8b450c8947f08b45048947f4c747f8f0e907 *088d47e889450c8d47f88945088b750483c504e9af2b08008d760083c504e9cca7ffff68ea0708 *1cea0708a08f0708030000002500e707a08f0708040000002400e7078b460483f83d750f8b7504 *c7450484ea070883c504ff2683c508e98da7ffff908b46088945008b7604c745fc90ea070883c5 *fcff268d7600b0ea07087c920708a08f0708030000002500e7078b7604c74500dcea0708ff2683 *c504e94ca7ffffe8ea0708e8ea0708e8ea0708e8ea0708e8ea0708dcea0708e8ea0708e8ea0708 *a08f0708030000002500e707a08f070804000100030000000b00e7078d45f03b43547303ff63fc *8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f41ceb070883c5f4ff2689f683c7 *103b7b5c760ac7436c04000000ff63f8c747f42ceb07088b45088947f88b450c8947fc8b450489 *078d47f489450cc7450828d411088b750483c504e9762a080089f65ceb0708ec910708a08f0708 *030000002500e70783c70c3b7b5c760ac7436c03000000ff63f8c747f8bc9107088b46048945fc *8d4ff8894df8bec4d11108c74500b4eb070883c5f4e9272a08008d760083c504e978a5fffff0eb *0708f0eb0708f0eb0708f0eb0708b4eb0708f0eb0708f0eb0708f0eb0708a08f07080300000025 *00e707a08f070804000100030000000b00e7078d45e83b43547303ff63fc8b46048945fc8b460c *8945f88b45008b4e08894d0089c6c745f424ec070883c5f4ff2689f683c7103b7b5c760ac7436c *04000000ff63f8c747f434ec07088b45088947f88b450c8947fc8b450489078d47f489450cc745 *0828d411088b750483c504e96e29080089f683c504e930a4ffffa8ec070864ec0708a08f070803 *0000002500e707a08f0708040000002400e7078b460483f87b750f8b7504c74504c4ec070883c5 *04ff2683c508e9f1a3ffff908b46088945008b7604c745fcd0ec070883c5fcff268d7600f0ec07 *0820910708a08f0708030000002500e7078b7604c745001ced0708ff2683c504e9b0a3ffff28ed *070828ed070828ed070828ed070828ed07081ced070828ed070828ed0708a08f07080300000025 *00e707a08f070804000100030000000b00e7078d45f03b43547303ff63fc8b46048945fc8b460c *8945f88b45008b4e08894d0089c6c745f45ced070883c5f4ff2689f683c7103b7b5c760ac7436c *04000000ff63f8c747f46ced07088b45088947f88b450c8947fc8b450489078d47f489450cc745 *0828d411088b750483c504e93628080089f69ced070890900708a08f0708030000002500e70783 *c70c3b7b5c760ac7436c03000000ff63f8c747f8609007088b46048945fc8d4ff8894df8bec4d1 *1108c74500f4ed070883c5f4e9e72708008d760083c504e9dca1ffff30ee070830ee070830ee07 *0830ee0708f4ed070830ee070830ee070830ee0708a08f0708030000002500e707a08f07080400 *0100030000000b00e7078d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08 *894d0089c6c745f464ee070883c5f4ff2689f6a08f0708000000002400e70783c7103b7b5c760a *c7436c04000000ff63f8c747f474ee07088b46108947f88b460c8947fc8b460489078d47f48945 *00c745fc28d411088b760483c5f8e92227080089f6a08f0708000002001200ef078d45ec3b4354 *7303ff63f8c745f8d46d10088975fcbea8d61108c745f4b0ee070883c5f4ff2689f6a08f070800 *0002001800ff078d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c10 *0856e8f90e080083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f800 *ef07088d47f88945f4c745f028121208be88d6110883c5ece97c26080020d41108f4b5110898ef *070800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e8810e080083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4f4b51108be20d4110883c5f0e90522080090d4d1110890d1110848d11108e0d41108bcd411 *08c0d411088cb311082cb411083cb411085cb4110818f0070800000200120001008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747 *fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e985210800900100000024000000 *c74500d81112088b760483c5fce97625080089f628f0070801000100130001008d45ec3b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df4be5cb41108c745f08cf0070883c5f0ff260cf0 *070801000100130089008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8 *d46d10088975fcc747ec38f00708c747f8acf007088b46048947fc8d47ec8945f48d47f88945f0 *be48d1110883c5ece9df2408008d760004f0070800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b9281b1108894df4bed4d1110883c5f0e9b71e08008d760004f0 *070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f844f107088d4ff8894df4bec0d4110883c5f0e94a20080089f604f00708 *01000100130025028d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ece4f007088b46048947f0c747f880f107088d47ec8945f48d47f88945f0be48 *d1110883c5ece9f72308008d760004f0070800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9341b1108894df4bed4d1110883c5f0e9cf1d08008d760004f00708 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f82cf207088d4ff8894df4bec0d4110883c5f0e9621f080089f604f007080100 *0100130025028d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d1008 *8975fcc747ecccf107088b46048947f0c747f868f207088d47ec8945f48d47f88945f0be48d111 *0883c5ece90f2308008d76000100000024000000c74500d81112088b760483c5fce9f222080089 *f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be3cb41108c745f010f3070883c5f0ff2604f0070802000000150025038d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb4f207088b46088947 *f0c747f830f307088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece955220800 *9004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b938 *1b1108894df4bed4d1110883c5f0e92f1c08008d760004f0070800000200120021008d45f03b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8ccf307088d *4ff8894df4bec0d4110883c5f0e9c21d080089f604f0070802000000150025038d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec68f307088b4604 *8947f08b46088947f4c747f808f407088d47ec8945f48d47f88945f0be48d1110883c5ece96921 *08009004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9441b1108894df4bed4d1110883c5f0e9431b08008d760004f0070800000200120021008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b8f407 *088d4ff8894df4bec0d4110883c5f0e9d61c080089f604f0070802000000150025038d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec54f407088b *46048947f08b46088947f4c747f8f4f407088d47ec8945f48d47f88945f0be48d1110883c5ece9 *7d200800900100000024000000c74500d81112088b760483c5fce96220080089f624f007080100 *0100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cb41108c7 *45f0a0f5070883c5f0ff2604f0070803000000120025038d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec40f507088b46088947f08b460c8947f4 *c747f8c0f507088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece9bf1f08008d *760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *481b1108894df4bed4d1110883c5f0e9971908008d760004f0070800000200120021008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f864f60708 *8d4ff8894df4bec0d4110883c5f0e92a1b080089f604f0070803000000120025038d45ec3b4354 *720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8f8f507088b46 *048947ec8b46088947f08b460c8947f4c747f8a0f607088d47e88945f48d47f88945f0be48d111 *0883c5ece9cb1e08008d760004f0070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9581b1108894df4bed4d1110883c5f0e9a31808008d760004f007080000 *0200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f858f707088d4ff8894df4bec0d4110883c5f0e9361a080089f604f0070803000000 *120025038d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975 *fcc747e8ecf607088b46048947ec8b46088947f08b460c8947f4c747f894f707088d47e88945f4 *8d47f88945f0be48d1110883c5ece9d71d08008d76000100000024000000c74500d81112088b76 *0483c5fce9ba1d080089f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be3cb41108c745f048f8070883c5f0ff2604f0070804000000120025 *038d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747 *e8e0f707088b46088947ec8b460c8947f08b46108947f4c747f868f807088b46048947fc8d47e8 *8945f48d47f88945f0be48d1110883c5ece9111d08009004f0070800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b95c1b1108894df4bed4d1110883c5f0e9eb16 *08008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f810f907088d4ff8894df4bec0d4110883c5f0e97e1808 *0089f604f0070804000000120025038d45ec3b4354720883c7203b7b5c760ac7436c08000000ff *63f8c745f8d46d10088975fcc747e4a0f807088b46048947e88b46088947ec8b460c8947f08b46 *108947f4c747f84cf907088d47e48945f48d47f88945f0be48d1110883c5ece9191c08009004f0 *070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c1b1108 *894df4bed4d1110883c5f0e9f31508008d760004f0070800000200120021008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f808fa07088d4ff889 *4df4bec0d4110883c5f0e98617080089f604f0070804000000120025038d45ec3b4354720883c7 *203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e498f907088b46048947e8 *8b46088947ec8b460c8947f08b46108947f4c747f844fa07088d47e48945f48d47f88945f0be48 *d1110883c5ece9211b0800900100000024000000c74500d81112088b760483c5fce9061b080089 *f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be3cb41108c745f0fcfa070883c5f0ff2604f0070805000000120025038d45ec3b4354720883 *c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e490fa07088b46088947 *e88b460c8947ec8b46108947f08b46148947f4c747f81cfb07088b46048947fc8d47e48945f48d *47f88945f0be48d1110883c5ece9571a08008d760004f0070800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9701b1108894df4bed4d1110883c5f0e92f140800 *8d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8ccfb07088d4ff8894df4bec0d4110883c5f0e9c215080089 *f604f0070805000000120025038d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8 *c745f8d46d10088975fcc747e054fb07088b46048947e48b46088947e88b460c8947ec8b461089 *47f08b46148947f4c747f808fc07088d47e08945f48d47f88945f0be48d1110883c5ece9571908 *008d760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9801b1108894df4bed4d1110883c5f0e92f1308008d760004f0070800000200120021008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8ccfc *07088d4ff8894df4bec0d4110883c5f0e9c214080089f604f0070805000000120025038d45ec3b *4354720883c7243b7b5c760ac7436c09000000ff63f8c745f8d46d10088975fcc747e054fc0708 *8b46048947e48b46088947e88b460c8947ec8b46108947f08b46148947f4c747f808fd07088d47 *e08945f48d47f88945f0be48d1110883c5ece9571808008d76000100000024000000c74500d811 *12088b760483c5fce93a18080089f61cf0070801000100130001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be8cb31108c745f0c8fd070883c5f0ff2604f00708060000 *00120065038d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c745f8d46d100889 *75fcc747e054fd07088b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947f4 *c747f8e8fd07088b46048947fc8d47e08945f48d47f88945f0be48d1110883c5ece98517080090 *04f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9841b *1108894df4bed4d1110883c5f0e95f1108008d760004f0070800000200120021008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f89cfe07088d4f *f8894df4bec0d4110883c5f0e9f212080089f604f0070806000000120065038d45ec3b43547208 *83c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dc20fe07088b460489 *47e08b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947f4c747f8d8fe0708 *8d47dc8945f48d47f88945f0be48d1110883c5ece9811608009004f0070800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9941b1108894df4bed4d1110883c5f0 *e95b1008008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8a0ff07088d4ff8894df4bec0d4110883c5f0e9 *ee11080089f604f0070806000000120065038d45ec3b4354720883c7283b7b5c760ac7436c0a00 *0000ff63f8c745f8d46d10088975fcc747dc24ff07088b46048947e08b46088947e48b460c8947 *e88b46108947ec8b46148947f08b46188947f4c747f8dcff07088d47dc8945f48d47f88945f0be *48d1110883c5ece97d150800900100000024000000c74500d81112088b760483c5fce962150800 *89f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be3cb41108c745f0a000080883c5f0ff2604f0070807000000120065038d45ec3b43547208 *83c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dc280008088b460889 *47e08b460c8947e48b46108947e88b46148947ec8b46188947f08b461c8947f4c747f8c0000808 *8b46048947fc8d47dc8945f48d47f88945f0be48d1110883c5ece9a71408008d760004f0070800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9981b1108894df4 *bed4d1110883c5f0e97f0e08008d760004f0070800000200120021008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87c0108088d4ff8894df4be *c0d4110883c5f0e91210080089f604f0070807000000120065038d45ec3b4354720883c72c3b7b *5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d8f80008088b46048947dc8b4608 *8947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b461c8947f4c747f8b80108 *088d47d88945f48d47f88945f0be48d1110883c5ece99b1308008d760004f00708000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a81b1108894df4bed4d11108 *83c5f0e9730d08008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f8880208088d4ff8894df4bec0d4110883 *c5f0e9060f080089f604f0070807000000120065038d45ec3b4354720883c72c3b7b5c760ac743 *6c0b000000ff63f8c745f8d46d10088975fcc747d8040208088b46048947dc8b46088947e08b46 *0c8947e48b46108947e88b46148947ec8b46188947f08b461c8947f4c747f8c40208088d47d889 *45f48d47f88945f0be48d1110883c5ece98f1208008d76000100000024000000c74500d8111208 *8b760483c5fce97212080089f620f0070801000100130001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4be2cb41108c745f09003080883c5f0ff2604f007080800000012 *00e5038d45ec3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fc *c747d8100308088b46088947dc8b460c8947e08b46108947e48b46148947e88b46188947ec8b46 *1c8947f08b46208947f4c747f8b00308088b46048947fc8d47d88945f48d47f88945f0be48d111 *0883c5ece9b11108009004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b9ac1b1108894df4bed4d1110883c5f0e98b0b08008d760004f0070800000200 *120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975 *fcc747f8700408088d4ff8894df4bec0d4110883c5f0e91e0d080089f604f00708080000001200 *e5038d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc7 *47d4e80308088b46048947d88b46088947dc8b460c8947e08b46108947e48b46148947e88b4618 *8947ec8b461c8947f08b46208947f4c747f8ac0408088d47d48945f48d47f88945f0be48d11108 *83c5ece9a11008009004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9bc1b1108894df4bed4d1110883c5f0e97b0a08008d760004f007080000020012 *0021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8800508088d4ff8894df4bec0d4110883c5f0e90e0c080089f604f00708080000001200e5 *038d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc747 *d4f80408088b46048947d88b46088947dc8b460c8947e08b46108947e48b46148947e88b461889 *47ec8b461c8947f08b46208947f4c747f8bc0508088d47d48945f48d47f88945f0be48d1110883 *c5ece9910f0800900100000024000000c74500d81112088b760483c5fce9760f080089f624f007 *0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cb4 *1108c745f08c06080883c5f0ff2604f00708090000001200e5038d45ec3b4354720883c7303b7b *5c760ac7436c0c000000ff63f8c745f8d46d10088975fcc747d4080608088b46088947d88b460c *8947dc8b46108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f4 *c747f8ac0608088b46048947fc8d47d48945f48d47f88945f0be48d1110883c5ece9af0e08008d *760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *c01b1108894df4bed4d1110883c5f0e9870808008d760004f0070800000200120021008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f874070808 *8d4ff8894df4bec0d4110883c5f0e91a0a080089f604f00708090000001200e5038d45ec3b4354 *720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d46d10088975fcc747d0e40608088b46 *048947d48b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947 *ec8b46208947f08b46248947f4c747f8b00708088d47d08945f48d47f88945f0be48d1110883c5 *ece9970d08008d760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9cc1b1108894df4bed4d1110883c5f0e96f0708008d760004f007080000020012 *0021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f88c0808088d4ff8894df4bec0d4110883c5f0e90209080089f604f00708090000001200e5 *038d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d46d10088975fcc747 *d0fc0708088b46048947d48b46088947d88b460c8947dc8b46108947e08b46148947e48b461889 *47e88b461c8947ec8b46208947f08b46248947f4c747f8c80808088d47d08945f48d47f88945f0 *be48d1110883c5ece97f0c08008d76000100000024000000c74500d81112088b760483c5fce962 *0c080089f624f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4be3cb41108c745f0a009080883c5f0ff2604f007080a0000001200e5038d45ec3b43 *54720883c7343b7b5c760ac7436c0d000000ff63f8c745f8d46d10088975fcc747d0140908088b *46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b462089 *47ec8b46248947f08b46288947f4c747f8c00908088b46048947fc8d47d08945f48d47f88945f0 *be48d1110883c5ece9950b08009004f0070800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9d01b1108894df4bed4d1110883c5f0e96f0508008d760004f00708 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f88c0a08088d4ff8894df4bec0d4110883c5f0e90207080089f604f007080a00 *00001200e5038d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d1008 *8975fcc747ccf80908088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947 *e08b46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f4c747f8c80a08088d *47cc8945f48d47f88945f0be48d1110883c5ece9790a08009004f0070800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e01b1108894df4bed4d1110883c5f0e9 *530408008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8a80b08088d4ff8894df4bec0d4110883c5f0e9e6 *05080089f604f007080a0000001200e5038d45ec3b4354720883c7383b7b5c760ac7436c0e0000 *00ff63f8c745f8d46d10088975fcc747cc140b08088b46048947d08b46088947d48b460c8947d8 *8b46108947dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b46248947f08b4628 *8947f4c747f8e40b08088d47cc8945f48d47f88945f0be48d1110883c5ece95d09080090010000 *0024000000c74500d81112088b760483c5fce94209080089f624f0070801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cb41108c745f0c00c080883c5 *f0ff2604f007080b0000001200e5038d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff *63f8c745f8d46d10088975fcc747cc300c08088b46088947d08b460c8947d48b46108947d88b46 *148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f08b462c8947 *f4c747f8e00c08088b46048947fc8d47cc8945f48d47f88945f0be48d1110883c5ece96f080800 *8d760004f0070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9e41b1108894df4bed4d1110883c5f0e9470208008d760004f0070800000200120021008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b40d08 *088d4ff8894df4bec0d4110883c5f0e9da03080089f604f007080b0000001200e5038d45ec3b43 *54720883c73c3b7b5c760ac7436c0f000000ff63f8c745f8d46d10088975fcc747c8180d08088b *46048947cc8b46088947d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c89 *47e48b46208947e88b46248947ec8b46288947f08b462c8947f4c747f8f00d08088d47c88945f4 *8d47f88945f0be48d1110883c5ece94b0708008d760004f0070800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9f41b1108894df4bed4d1110883c5f0e9230108 *008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8d80e08088d4ff8894df4bec0d4110883c5f0e9b6020800 *89f604f007080b0000001200e5038d45ec3b4354720883c73c3b7b5c760ac7436c0f000000ff63 *f8c745f8d46d10088975fcc747c83c0e08088b46048947cc8b46088947d08b460c8947d48b4610 *8947d88b46148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f0 *8b462c8947f4c747f8140f08088d47c88945f48d47f88945f0be48d1110883c5ece9270608008d *76000100000024000000c74500d81112088b760483c5fce90a06080089f624f007080100010013 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cb41108c745f0f8 *0f080883c5f0ff2604f007080c0000001200e5038d45ec3b4354720883c73c3b7b5c760ac7436c *0f000000ff63f8c745f8d46d10088975fcc747c8600f08088b46088947cc8b460c8947d08b4610 *8947d48b46148947d88b46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec *8b462c8947f08b46308947f4c747f8181008088b46048947fc8d47c88945f48d47f88945f0be48 *d1110883c5ece9310508009004f0070800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9f81b1108894df4bed4d1110883c5f0e90bff07008d760004f007080000 *0200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8f01008088d4ff8894df4bec0d4110883c5f0e99e00080089f604f007080c000000 *1200e5038d45ec3b4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975 *fcc747c4501008088b46048947c88b46088947cc8b460c8947d08b46108947d48b46148947d88b *46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec8b462c8947f08b463089 *47f4c747f82c1108088d47c48945f48d47f88945f0be48d1110883c5ece9090408009004f00708 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9081c1108894d *f4bed4d1110883c5f0e9e3fd07008d760004f0070800000200120021008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8181208088d4ff8894df4 *bec0d4110883c5f0e976ff070089f604f007080c0000001200e5038d45ec3b4354720883c7403b *7b5c760ac7436c10000000ff63f8c745f8d46d10088975fcc747c4781108088b46048947c88b46 *088947cc8b460c8947d08b46108947d48b46148947d88b46188947dc8b461c8947e08b46208947 *e48b46248947e88b46288947ec8b462c8947f08b46308947f4c747f8541208088d47c48945f48d *47f88945f0be48d1110883c5ece9e1020800900100000024000000c74500d81112088b760483c5 *fce9c602080089f610f0070801000100130001008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df4bee0d41108c745f03c13080883c5f0ff2604f007080d0000001200ed038d45 *ec3b4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975fcc747c4a012 *08088b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b *46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f4c747f85c *1308088b46048947fc8d47c48945f48d47f88945f0be48d1110883c5ece9e70108008d760004f0 *070800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90c1c1108 *894df4bed4d1110883c5f0e9bffb07008d760004f0070800000200120021008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f83c1408088d4ff889 *4df4bec0d4110883c5f0e952fd070089f604f007080d0000001200ed038d45ec3b4354720883c7 *443b7b5c760ac7436c11000000ff63f8c745f8d46d10088975fcc747c0941308088b46048947c4 *8b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b4620 *8947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f4c747f8781408 *088d47c08945f48d47f88945f0be48d1110883c5ece9b70008008d760004f00708000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b91c1c1108894df4bed4d11108 *83c5f0e98ffa07008d760004f0070800000200120021008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f86c1508088d4ff8894df4bec0d4110883 *c5f0e922fc070089f604f007080d0000001200ed038d45ec3b4354720883c7443b7b5c760ac743 *6c11000000ff63f8c745f8d46d10088975fcc747c0c41408088b46048947c48b46088947c88b46 *0c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947 *e48b46288947e88b462c8947ec8b46308947f08b46348947f4c747f8a81508088d47c08945f48d *47f88945f0be48d1110883c5ece987ff07008d760001000000240000008b4504894500c7450430 *1212088b761483c5fce964ff070008f0070801000100130001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e04894df4be90d11108c745f09816080883c5f0ff2604f0070842000000 *2400ff0383c7443b7b5c760ac7436c11000000ff63f8c747c0f41508088b46048947c48b460889 *47c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b *46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f4c747f8bc1608088b4504 *8947fc8d47c08945088d47f8894504bebcd41108e996fe070089f604f007080b00020000000000 *1100ff038d45fc3b43547308be14b61108ff63fc8b7504c745fcf416080883c5fcff269014b611 *081cb61108b017080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e869e6070083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcc745f41cb61108be14b6110883c5f0e9edf9070090ccd4110824b611081c180808 *00000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c *100856e8fde5070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4 *24b61108beccd4110883c5f0e981f9070090e4d1110848d11108d8d011088c1808080000020012 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f490c31108c745f070c31108be *48d1110883c5ece944fd07008c18080801000100130003008d45e83b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8a01808088b4e04894df48d57f88955 *f0c745ec00d21108bed8d0110883c5e8e9bd010800909018080801000100130001008d45e83b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f08cc31108c745ec00d21108bed8d0 *110883c5e8e97a01080089f688180808000000002400070083c7183b7b5c760ac7436c06000000 *ff63f8c747ecdc1808088b463c8947f0c747f8341908088b463c8947fc8d47ec8945008d47f889 *45fcbee4d1110883c5f8e957fc07008d7600881808080400010000000000110007008d45f83b43 *547308beacb61108ff63fc8b7500c7450078190808ff2648d1110840d31108ec19080800000200 *120001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f454c31108c745f070c31108 *be48d1110883c5ece9e4fb0700ec190808000000002400030083c70c3b7b5c760ac7436c030000 *00ff63f8c747f8001a08088b46408945008d4ff8894dfcbe40d3110883c5f8e9a6fb070089f6ec *1908080400010000000000110003008d45f83b43547308beb4b61108ff63fc8b7500c745003c1a *0808ff2648d11108d8d011089c1a080800000200120001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fcc745f490c31108c745f058c31108be48d1110883c5ece934fb07009c1a08080400 *010000000000110003008d45f43b4354720883c7183b7b5c760fbebcb61108c7436c06000000ff *63fcc747ecb46610088b45008947f0c747f8b01a08088d47ec8945008d47f88945fcc745f8fcd1 *1108bed8d0110883c5f4e9a1ff07009048d11108ccd01108d8d01108dcd21108441b0808000002 *00120001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f490c31108c745f058c311 *08be48d1110883c5ece984fa070042000000240000008b45048945088b760c83c504e95ff60700 *8d7600bedcd21108c74504981b080883c504ff268d7600481b080801000100130001008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b4661008 *8b4e04894ffc8d57f88955f4beccd0110883c5f0e9f8f5070083c70c3b7b5c760ac7436c030000 *00ff63f8c747f8cc1b08088b45048947fc8b750c8d4ff8894d0c83c508e9c8f50700101c0808ac *1b0808481b08080300000025000500441b0808160003000000000011000f008d45ec3b43547208 *83c7183b7b5c760fbec4b61108c7436c06000000ff63fcc747ecb46610088b45008947f0c747f8 *601b08088d47ec8945f88d47f88945f4c745f0fcd11108bed8d01108c745fc541c080883c5ece9 *26fe070089f6e4d1110854d21108d4d11108bcd1110844d11108f4a911088cb51108c01c080802 *000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f89c6510088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece9e2 *f8070089f6c01c080802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8106510088b46048947fc8d47f88945f48b46088945f0 *bee4d1110883c5ece98af8070089f6c01c080802000000150001008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8846410088b46048947fc8d47 *f88945f48b46088945f0bee4d1110883c5ece932f8070089f6c01c080802000000150001008d45 *ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f863 *10088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece9daf7070089f6c01c0808 *02000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f86c6310088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece9 *82f7070089f6c01c080802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8e06210088b46048947fc8d47f88945f48b46088945 *f0bee4d1110883c5ece92af7070089f6c01c080802000000150001008d45ec3b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8546210088b46048947fc8d *47f88945f48b46088945f0bee4d1110883c5ece9d2f6070089f6c81c080800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9281c1108894df4bed4d1110883c5f0 *e9abf007008d7600c81c080800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9381c1108894df4bed4d1110883c5f0e96ff007008d7600c01c0808000002001200 *05008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc7 *47ec501f0808c747f88c1f08088d4fec894df48d57f88955f0bee4d1110883c5ece901f6070090 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8c81f08088d47f8894508c7450454d21108be *44d11108e9d0f507008b750483c50cff264420080814200808c01c0808420000002500170083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8c86110088b450c8947fcc74500f4a911088d4ff8 *894dfc8b7504c745046020080883c5f8e976f5070089f600000000240000008b761883c504ff26 *8b750cc7450ca820080883c50cff2690b020080860200808c01c08080300000025003700c01c08 *080200000024003700c745f8f4a911088b45048945f48b4e08894d008b7608c745fcd420080883 *c5f0e90ff507008d7600c01c080802000000150077008d45dc3b43547303ff63f8c745f8d46d10 *088975fc8b4e08894df08b56048955f4be8cb51108c745ece020080883c5ecff2689f6c01c0808 *02000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f83c6110088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece9 *76f4070089f6c01c080802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f8b06010088b46048947fc8d47f88945f48b46088945 *f0bee4d1110883c5ece91ef4070089f6c01c080802000000150001008d45ec3b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8246010088b46048947fc8d *47f88945f48b46088945f0bee4d1110883c5ece9c6f3070089f6c01c080802000000150001008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f898 *5f10088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece96ef3070089f6cc1c08 *0802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f80c5f10088b46088947fc8d47f88945f48b46048945f0bebcd1110883c5ec *e916f3070089f6c01c08080100000024007f0081c7d40000003b7b5c760ac7436c35000000ff63 *f8c78730ffffffe81c08088b4504898734ffffff8b4634898738ffffffc7873cffffff401d0808 *8b4504898740ffffff8b4630898744ffffffc78748ffffff981d08088b450489874cffffff8b46 *2c898750ffffffc78754fffffff01d08088b4504898758ffffff8b462889875cffffffc78760ff *ffff481e08088b4504898764ffffff8b4624898768ffffffc7876cffffffa01e08088b45048987 *70ffffff8b4620898774ffffffc78778fffffff81e08088b450489877cffffff8b461c894780c7 *4784142108088b45048947888b461889478cc74790542108088b45048947948b4614894798c747 *9cac2108088b45048947a08b46108947a4c747a8042208088b45048947ac8b460c8947b0c747b4 *5c2208088b45048947b88b46088947bcc747c0b42208088b46048947c48b45048947c8c747cc28 *c409088d47c08947d08d47b48947d48d47a88947d88d479c8947dc8d47908947e08d47848947e4 *8d8778ffffff8947e88d876cffffff8947ec8d8760ffffff8947f08d8754ffffff8947f48d8748 *ffffff8947f88d873cffffff8947fc8d8730ffffff89078d77cc83c508ff650089f6c01c08080b *0002000000000011007f008b7500c745000c230808ff26dcd111088cb511081cb71108be00d211 *0883c50c8b4500ff60f089f68b45048945148b75188b4d10894d1883c514e9d501000090ec2408 *0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b5604 *8955f083c5f0eb8e89f6ec240808010000002400010083c71c3b7b5c760ac7436c07000000ff63 *f8c747e8242508088b45048947ec8b460c8947f0c747f410c409088b46048947f88b46088947fc *8d47e889078d77f483c508e934480800ec24080802000000150001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8b4e08894df48b7604c745f05825080883c5f0ff2689f683c7183b7b5c *760ac7436c06000000ff63f8c747ecac2508088b45148947f08b45088947f4c747f87cdc0b088d *47ec8947fc8b451089078d77f883c51c8b4500ff60ec90d825080800250808ec24080886000000 *25000100ec240808060000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f80c5f *10088b45148947fc8b4d0c894dfc8d57f88955f88b7608c745003026080883c5f4e99bef07008d *7600e824080803000000240003008975f88b46088945fc8b4e04894d00be8cb51108c745f43c26 *080883c5f4ff268b46088945008b4d048b560489550489cec745fc8826080883c5fcff268d7600 *a8260808f0240808e82408080200000025000300e82408080b000200000001000b0003008d45e0 *3b43547303ff63fc8b4d0489750489cec745fcdc26080883c5fcff2690e4240808030000001200 *01008d45e83b43547303ff63f8c745f8d46d10088975fc8b460c8945f48b46088945f08b460489 *45ecbedcd1110883c5e8e998f307008b750483c508ff2683c7143b7b5c760ac7436c05000000ff *63f8c747f040c40908c747f400d211088b45048947f8c747fc94b90b088d4ff0890f8d77fc83c5 *08ff25c06d100889f6ec24080802000000150001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8b4e08894df48b56048955f083c5f0e90ffdffff8d7600ec240808010000002400010083 *c7183b7b5c760ac7436c06000000ff63f8c747eca02708088b45048947f08b46088947f4c747f8 *40c409088b46048947fc8d47ec89078d77f883c508e9ba45080089f6ec24080802000000150001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b7604c745f0d827080883 *c5f0ff2689f683c7143b7b5c760ac7436c05000000ff63f8c747f0282808088b46048947f48b4d *04894ff8c747fc94b90b088d57f089178d77fc83c508ff25c06d10088d76005428080854270808 *ec24080801000000250001008b45048b4e04894d0489c6c74500a8280808ff26a82808084c2708 *08ec2408080100000025000100ec24080802000000150001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df48b7604c745f0d028080883c5f0ff2689f6e42408080300000024 *00050083c7603b7b5c760ac7436c18000000ff63f8c747a4182708088b450c8947a88b46408947 *ac8b45048947b0c747b4dc2808088b45088947b88b463c8947bcc747c058c409088b46048947c4 *8b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b4620 *8947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f8 *8d47b48947fc8d47a489078d77c083c510ff65008d7600e4240808010000002400070083c7083b *7b5c760ac7436c02000000ff63f8c747fcec2608088b46088945fc8b4e04894d008b75048d57fc *895504c745f81429080883c5f8ff2689f6e42408080b00020000000000110007008d45f83b4354 *7308be34b71108ff63fc8b7500c74500d0290808ff26c8d0110824b71108010000002400000083 *c70c3b7b5c760ac7436c03000000ff63f8c747f840c409088b45048947fc8b4e08890f8d77f883 *c508e95d43080090382a080802000000150003008d45e43b43547303ff63f8c745f8d46d100889 *75fc8b4e04894decc745e824b711088b56088955f4bec8d01108c745f0482a080883c5e4e954eb *0700382a0808420000002400030083c7583b7b5c760ac7436c16000000ff63f8c747ac842a0808 *8b463c8947b08b45048947b4c747b894b90b088d47ac8947bcc747c058c409088b46048947c48b *46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b462089 *47e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88d *47b88947fc8b464089078d77c083c50cff65008d7600382a08080b00020000000000110003008d *45fc3b43547308be3cb71108ff63fc8b7504c745fccc2a080883c5fcff2690d8d01108a02b0808 *0400010000000000110001008d45f43b4354720883c70c3b7b5c760fbe44b71108c7436c030000 *00ff63fcc747f8b46610088b4d00894ffc8d57f8895500c745fc8cc31108c745f800d21108bed8 *d0110883c5f4e9e3ee07008d7600d4d11108042c080800000200180001008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e819d2070083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fc90b8701c11088945f4bed4d1110883c5f0e9bbe3 *07008d760024ce110854cf1108ccd611084cb71108d8d011083cb71108702c0808000002001800 *3f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e899d1 *070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f43cb71108c745 *f044b71108c745ec24ce1108c745e8ccd61108c745e44cb71108be54cf110883c5e0e975f30700 *90420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46048947 *c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b45 *048947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947 *f88b463c8947fc8b464089078d77c083c50cff65008d76000b00020000000000110000008d45fc *3b43547308be7cb71108ff63fc8b7504c745fc102d080883c5fcff2690d4d11108c02d08080000 *0200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e85dd0070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8801c11 *088945f4bed4d1110883c5f0e9ffe107008d7600e0ce110854cd110854cf110880b711087cb711 *082c2e08080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c747f8085c100856e8e1cf070083c4048d47f8894604c706245b1008c745f8d46d10088d47f889 *45fcc745f47cb71108c745f0b0c31108c745ec54cd1108c745e8e0ce1108c745e480b71108be54 *cf110883c5e0e9bdf1070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c7 *47c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b4504 *8947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f0 *8b46348947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65008d76000b000200 *00000000110000008d45fc3b43547308beb0b71108ff63fc8b7504c745fcc82e080883c5fcff26 *904cd11108a4c61108782f080800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f404d21108be4cd1110883c5f0e953e207008d7600782f080800000200180003008d *45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e869ce070083 *c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f88c2f08088d47f88945 *f4bea4c6110883c5f0e9e7e107008d7600d4d111082430080800000200180001008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f9cd070083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fc90b88c1c11088945f4bed4d1110883c5f0 *e99bdf07008d7600f0ce11084ccf1108c4b71108b4b71108b0b71108903008080000020018001f *008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e87dcd07 *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4b0b71108c745f0 *a8c31108c745ecb4b71108c745e8f0ce1108c745e4c4b71108be4ccf110883c5e0e959ef070090 *420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46048947c4 *8b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b4620 *8947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b45048947f48b46388947f8 *8b463c8947fc8b464089078d77c083c50cff65008d76000b00020000000000110000008d45fc3b *43547308bef4b71108ff63fc8b7504c745fc2c31080883c5fcff26904cd11108a4c61108dc3108 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4c *d1110883c5f0e9efdf07008d7600dc31080800000200180003008d45f03b4354720883c7183b7b *5c760ac7436c06000000ff63f8c747ec085c100856e805cc070083c4048d47ec894604c706245b *1008c745f8d46d10088d47ec8945fcc747f8f03108088d47f88945f4bea4c6110883c5f0e983df *07008d7600d4d111088832080800000200180001008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e895cb070083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fc90b8941c11088945f4bed4d1110883c5f0e937dd07008d7600f0ce1108 *4ccf110808b81108f8b71108f4b71108f43208080000020018001f008d45e03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e819cb070083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4f4b71108c745f0c4c31108c745ecf8b71108c7 *45e8f0ce1108c745e408b81108be4ccf110883c5e0e9f5ec070090420000002400000083c7443b *7b5c760ac7436c11000000ff63f8c747c058c409088b46048947c48b46088947c88b460c8947cc *8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b4628 *8947e88b462c8947ec8b45048947f08b46348947f48b46388947f88b463c8947fc8b464089078d *77c083c50cff65008d76000b00020000000000110000008d45fc3b43547308be38b81108ff63fc *8b7504c745fc9033080883c5fcff26904cd11108a4c611084034080800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883c5f0e98bdd07008d *76004034080800000200180003008d45f03b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c747ec085c100856e8a1c9070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec *8945fcc747f8543408088d47f88945f4bea4c6110883c5f0e91fdd07008d7600d4d11108ec3408 *0800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e831c9070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8 *a01c11088945f4bed4d1110883c5f0e9d3da07008d7600f0ce11084ccf11084cb811083cb81108 *38b81108583508080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8b5c8070083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f438b81108c745f0c0c31108c745ec3cb81108c745e8f0ce1108c745e44cb811 *08be4ccf110883c5e0e991ea070090420000002400000083c7443b7b5c760ac7436c11000000ff *63f8c747c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d4 *8b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b45048947ec8b4630 *8947f08b46348947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65008d76000b *00020000000000110000008d45fc3b43547308be7cb81108ff63fc8b7504c745fcf435080883c5 *fcff26904cd11108a4c61108a436080800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fcc745f404d21108be4cd1110883c5f0e927db07008d7600a4360808000002001800 *03008d45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e83dc7 *070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8b83608088d47 *f88945f4bea4c6110883c5f0e9bbda07008d7600d4d111085037080800000200180001008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8cdc6070083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8ac1c11088945f4bed4d11108 *83c5f0e96fd807008d7600f0ce11084ccf110890b8110880b811087cb81108bc37080800000200 *18001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *51c6070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f47cb81108 *c745f0bcc31108c745ec80b81108c745e8f0ce1108c745e490b81108be4ccf110883c5e0e92de8 *070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b4604 *8947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc *8b46208947e08b46248947e48b45048947e88b462c8947ec8b46308947f08b46348947f48b4638 *8947f88b463c8947fc8b464089078d77c083c50cff65008d76000b00020000000000110000008d *45fc3b43547308bec0b81108ff63fc8b7504c745fc5838080883c5fcff26904cd11108a4c61108 *0839080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d211 *08be4cd1110883c5f0e9c3d807008d76000839080800000200180003008d45f03b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8d9c4070083c4048d47ec894604c7 *06245b1008c745f8d46d10088d47ec8945fcc747f81c3908088d47f88945f4bea4c6110883c5f0 *e957d807008d7600d4d11108b439080800000200180001008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e869c4070083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fc90b8b81c11088945f4bed4d1110883c5f0e90bd607008d7600f0 *ce11084ccf1108d4b81108c4b81108c0b81108203a08080000020018001f008d45e03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8edc3070083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f4c0b81108c745f0b8c31108c745ecc4b8 *1108c745e8f0ce1108c745e4d4b81108be4ccf110883c5e0e9c9e5070090420000002400000083 *c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46048947c48b46088947c88b460c *8947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b45048947e4 *8b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88b463c8947fc8b4640 *89078d77c083c50cff65008d76000b00020000000000110000008d45fc3b43547308be04b91108 *ff63fc8b7504c745fcbc3a080883c5fcff26904cd11108a4c611086c3b08080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883c5f0e95fd6 *07008d76006c3b080800000200180003008d45f03b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c747ec085c100856e875c2070083c4048d47ec894604c706245b1008c745f8d46d1008 *8d47ec8945fcc747f8803b08088d47f88945f4bea4c6110883c5f0e9f3d507008d7600d4d11108 *183c080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e805c2070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fc90b8c41c11088945f4bed4d1110883c5f0e9a7d307008d7600f0ce11084ccf110818b9110808 *b9110804b91108843c08080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e889c1070083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f404b91108c745f0b4c31108c745ec08b91108c745e8f0ce1108c745e4 *18b91108be4ccf110883c5e0e965e3070090420000002400000083c7443b7b5c760ac7436c1100 *0000ff63f8c747c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b4614 *8947d48b46188947d88b45048947dc8b46208947e08b46248947e48b46288947e88b462c8947ec *8b46308947f08b46348947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65008d *76000b00020000000000110000008d45fc3b43547308be48b91108ff63fc8b7504c745fc203d08 *0883c5fcff26904cd11108a4c61108d03d080800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f404d21108be4cd1110883c5f0e9fbd307008d7600d03d0808000002 *00180003008d45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856 *e811c0070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8e43d08 *088d47f88945f4bea4c6110883c5f0e98fd307008d7600d4d111087c3e08080000020018000100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a1bf0700 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8d01c11088945f4bed4 *d1110883c5f0e943d107008d7600f0ce11084ccf11085cb911084cb9110848b91108e83e080800 *00020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e825bf070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f448 *b91108c745f0acc31108c745ec4cb91108c745e8f0ce1108c745e45cb91108be4ccf110883c5e0 *e901e1070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c40908 *8b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c *8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f4 *8b45048947f88b463c8947fc8b464089078d77c083c50cff65008d76000b000200000000001100 *00008d45fc3b43547308be8cb91108ff63fc8b7504c745fc843f080883c5fcff2690d4d1110834 *40080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e9bd070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *90b8dc1c11088945f4bed4d1110883c5f0e98bcf07008d7600e8ce11083ccd110854cf110890b9 *11088cb91108a04008080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e86dbd070083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f48cb91108c745f0c8c31108c745ec3ccd1108c745e8e8ce1108c745e490 *b91108be54cf110883c5e0e949df070090420000002400000083c7443b7b5c760ac7436c110000 *00ff63f8c747c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b450489 *47d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b *46308947f08b46348947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65008d76 *000b00020000000000110000008d45fc3b43547308bec0b91108ff63fc8b7504c745fc3c410808 *83c5fcff26904cd11108a4c61108ec41080800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fcc745f404d21108be4cd1110883c5f0e9dfcf07008d7600ec41080800000200 *180003008d45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8 *f5bb070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f800420808 *8d47f88945f4bea4c6110883c5f0e973cf07008d7600d4d111089842080800000200180001008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e885bb070083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8ec1c11088945f4bed4d1 *110883c5f0e927cd07008d7600f0ce11084ccf1108d4b91108c4b91108c0b91108044308080000 *020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e809bb070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c0b9 *1108c745f0a4c31108c745ecc4b91108c745e8f0ce1108c745e4d4b91108be4ccf110883c5e0e9 *e5dc070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b *46048947c48b46088947c88b460c8947cc8b45048947d08b46148947d48b46188947d88b461c89 *47dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b *46388947f88b463c8947fc8b464089078d77c083c50cff65008d76000b00020000000000110000 *008d45fc3b43547308be04ba1108ff63fc8b7504c745fca043080883c5fcff26904cd11108a4c6 *11085044080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404 *d21108be4cd1110883c5f0e97bcd07008d76005044080800000200180003008d45f03b43547208 *83c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e891b9070083c4048d47ec8946 *04c706245b1008c745f8d46d10088d47ec8945fcc747f8644408088d47f88945f4bea4c6110883 *c5f0e90fcd07008d7600d4d11108fc44080800000200180001008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e821b9070083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fc90b8f81c11088945f4bed4d1110883c5f0e9c3ca07008d76 *00f0ce11084ccf110818ba110808ba110804ba1108684508080000020018001f008d45e03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a5b8070083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f404ba1108c745f0a0c31108c745ec *08ba1108c745e8f0ce1108c745e418ba1108be4ccf110883c5e0e981da07009042000000240000 *0083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46048947c48b46088947c88b *45048947cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b462489 *47e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88b463c8947fc8b *464089078d77c083c50cff65008d76000b00020000000000110000008d45fc3b43547308be48ba *1108ff63fc8b7504c745fc0446080883c5fcff2690d4d11108b446080800000200180001008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e869b7070083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8041d11088945f4bed4d111 *0883c5f0e90bc907008d7600d8ce110814ce11084ccf11084cba110848ba110820470808000002 *0018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8edb6070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f448ba11 *08c745f09cc31108c745ec14ce1108c745e8d8ce1108c745e44cba1108be4ccf110883c5e0e9c9 *d8070090420000002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b46 *048947c48b45048947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b461c8947 *dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b46348947f48b46 *388947f88b463c8947fc8b464089078d77c083c50cff65008d76000b0002000000000011000000 *8d45fc3b43547308be7cba1108ff63fc8b7504c745fcbc47080883c5fcff269048d11108ccd611 *086cb411086c48080800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e8a9b5070083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcc745f46cb41108c745f0ccd61108be48d1110883c5ece932cd070089f6d4d11108 *e448080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e839b5070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fc90b8141d11088945f4bed4d1110883c5f0e9dbc607008d760094cd11084ccf110890ba110880 *ba11087cba1108504908080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8bdb4070083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f47cba1108c745f098c31108c745ec94cd1108c745e880ba1108c745e4 *90ba1108be4ccf110883c5e0e999d6070090010000002400000083c70c3b7b5c760ac7436c0300 *0000ff63f8c747f838ec09088b46048947fc8b4d04890f8d77f883c508e9b92308009002000000 *150000008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b7604c745f0ec49 *080883c5f0ff2689f6420000002400000083c7503b7b5c760ac7436c14000000ff63f8c747b424 *4a08088b46048947b88b45048947bcc747c058c409088d47b48947c48b46088947c88b460c8947 *cc8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46 *288947e88b462c8947ec8b46308947f08b46348947f48b46388947f88b463c8947fc8b46408907 *8d77c083c50cff65000b00020000000000110000008d45fc3b43547308bec0ba1108ff63fc8b75 *04c745fc584a080883c5fcff269048d11108184b080800000200180001008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e805b3070083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f494c31108c745f090c51108be48d1110883 *c5ece98eca070089f648d111085ca41108ccd61108884b080800000200180007008d45ec3b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88db2070083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f45ca41108c745f0ccd61108be48d1 *110883c5ece916ca070089f6d4d11108004c080800000200180001008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e81db2070083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fc90b81c1d11088945f4bed4d1110883c5f0e9bfc30700 *8d760044a311084ccf1108e4ba1108d4ba1108c4ba1108c0ba11086c4c08080000020018003f00 *8d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e89db10700 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c0ba1108c745f0c4 *ba1108c745ec44a31108c745e8d4ba1108c745e4e4ba1108be4ccf110883c5e0e979d307009001 *0000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f838ec09088b45048947fc8b *4e08890f8d77f883c508e9992008009002000000150000008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e08894df48b7604c745f00c4d080883c5f0ff2689f6420000002400000083c7 *503b7b5c760ac7436c14000000ff63f8c747b4444d08088b46048947b88b45048947bcc747c058 *c409088d47b48947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d8 *8b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b4634 *8947f48b46388947f88b463c8947fc8b464089078d77c083c50cff65000b000200000000001100 *00008d45fc3b43547308be14bb1108ff63fc8b7504c745fc784d080883c5fcff269048d1110838 *4e080800000200180001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e5af070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f494c31108c745f08cc51108be48d1110883c5ece96ec7070089f6d4d11108a84e08080000 *0200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e875af070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8241d11 *088945f4bed4d1110883c5f0e917c107008d760008c411084ccf1108ccd6110828bb110818bb11 *0814bb1108144f08080000020018003f008d45e03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e8f5ae070083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fcc745f414bb1108c745f018bb1108c745ec08c41108c745e8ccd61108c745e428bb *1108be4ccf110883c5e0e9d1d0070090e4d11108d4d11108f8c41108d0d51108b04f0808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c1d1108894df4bed4 *d1110883c5f0e933c007008d7600b44f080801000100130001008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80c5f10088b4e04894ffc8d57f8 *8955f4bef8c4110883c5f0e9c0c10700ac4f080801000100130007008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecc84f0808c747f804500808 *8b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece96fc507008d7600ac4f080802 *000000150007008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec545008088b46088947f0c747f87cdc0b08c747fc580a12088d47ec89078d47f8 *8945f48b46048945f0bee4d1110883c5ece903c507008d7600ac4f08080b000200000000001100 *0f0083c70c3b7b5c760fbe68bb1108c7436c03000000ff63fcc747f8b45008088b45008947fc8b *4d04890f8d57f8895504bed0d51108e9abc007008d76004cae1108be00d2110883c50c8b4500ff *60f089f68b450c8945148b751083c514e9770100008d76008b750883c50ce9690100009083c718 *3b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b46088947f4c747f87cdc *0b088b46048947fc8d47ec89078d77f883c5108b4500ff60ec9094510808885108080000000003 *0000002500000004000100020000000e0000008d45f43b43547303ff63fc8975f88b46088945fc *8b45008b4e04894d0089c6c745f4ec51080883c5f4ff269083c70c3b7b5c760ac7436c03000000 *ff63f8c747f8f85108088b450c8947fc8b4d10890f8b55048955148d77f883c514eba289f62452 *08087451080800000000450200002500000005000000240000008b45148945fc8b4d08894df88b *7608c745006c52080883c5f4e982c3070089f66051080803000000240001008b46088945fc8b4e *04894d00be4cae1108c745f87452080883c5f8ff268d76008b46088945008b7604c745fca05208 *0883c5fcff268d7600c05208086451080860510808020000002500010060510808040001000100 *00000c0001008d45e03b43547303ff63fc8975fc8b4d008b560489550089cec745f8ec52080883 *c5f8ff268d7600605108080b000200000000001100010083c7083b7b5c760fbe70bb1108c7436c *02000000ff63fcc747fcfc5208088b450089078d77fc83c504eb9d90420000002400000083c710 *3b7b5c760ac7436c04000000ff63f8c747f410c409088b46048947f88b4d04894ffc8b560c8917 *8d77f483c50cff6500900b00020000000000110000008d45fc3b43547308be78bb1108ff63fc8b *7504c745fc6853080883c5fcff2690d4d11108c853080800000200180001008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e855aa070083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fc90b8301d11088945f4bed4d1110883c5f0e9f7 *bb07008d7600d8ce110814ce11084ccf11087cbb110878bb1108345408080000020018001f008d *45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8d9a9070083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f478bb1108c745f050c3 *1108c745ec14ce1108c745e8d8ce1108c745e47cbb1108be4ccf110883c5e0e9b5cb0700904200 *00002400000083c7103b7b5c760ac7436c04000000ff63f8c747f410c409088b45048947f88b4e *08894ffc8b560c89178d77f483c50cff6500900b00020000000000110000008d45fc3b43547308 *beacbb1108ff63fc8b7504c745fcd054080883c5fcff26904cd11108a4c6110830550808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883 *c5f0e99bbc07008d76003055080800000200180003008d45f03b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c747ec085c100856e8b1a8070083c4048d47ec894604c706245b1008c745 *f8d46d10088d47ec8945fcc747f8445508088d47f88945f4bea4c6110883c5f0e92fbc07008d76 *00d4d11108dc55080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c747f8085c100856e841a8070083c4048d47f8894604c706245b1008c745f8d46d1008 *8d47f88945fc90b8381d11088945f4bed4d1110883c5f0e9e3b907008d7600f0ce11084ccf1108 *c0bb1108b0bb1108acbb1108485608080000020018001f008d45e03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e8c5a7070083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcc745f4acbb1108c745f04cc31108c745ecb0bb1108c745e8f0ce *1108c745e4c0bb1108be4ccf110883c5e0e9a1c9070090420000002400000083c7383b7b5c760a *c7436c0e000000ff63f8c747cc28c409088b46048947d08b46088947d48b460c8947d88b461089 *47dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b *462c8947f88b46308947fc8b450489078d77cc83c50cff6500900b00020000000000110000008d *45fc3b43547308bef0bb1108ff63fc8b7504c745fce456080883c5fcff2690d4d1110880570808 *00000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c *100856e89da6070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b844 *1d11088945f4bed4d1110883c5f0e93fb807008d760044cf1108f4bb1108f0bb1108ec57080800 *000200180007008d45e43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e829a6070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f0 *bb1108c745f088c31108c745eca8b11108c745e8f4bb1108be44cf110883c5e4e90cc507004200 *00002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b46 *088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b46208947 *ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b450489078d77cc83c50cff6500 *900b00020000000000110000008d45fc3b43547308be24bc1108ff63fc8b7504c745fc78580808 *83c5fcff2690d4d111081459080800000200180001008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e809a5070083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fc90b8501d11088945f4bed4d1110883c5f0e9abb607008d760044cf11 *0828bc110824bc11088059080800000200180007008d45e43b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e895a4070083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f424bc1108c745f088c31108c745ecacb11108c745e828bc1108be *44cf110883c5e4e978c30700420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c7 *47cc28c409088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b4618 *8947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b462c8947f88b46308947fc *8b450489078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308be58bc11 *08ff63fc8b7504c745fc0c5a080883c5fcff2690d4d11108a85a080800000200180001008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e875a3070083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8601d11088945f4bed4d11108 *83c5f0e917b507008d760044cf11085cbc110858bc1108145b080800000200180007008d45e43b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e801a3070083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f458bc1108c745f088c31108c7 *45eca4b11108c745e85cbc1108be44cf110883c5e4e9e4c10700420000002400000083c7383b7b *5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b46088947d48b460c8947d88b *46108947dc8b46148947e08b46188947e48b45048947e88b46208947ec8b46248947f08b462889 *47f48b462c8947f88b46308947fc8b463489078d77cc83c50cff6500900b000200000000001100 *00008d45fc3b43547308be8cbc1108ff63fc8b7504c745fca05b080883c5fcff2690d4d111083c *5c080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e1a1070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *90b86c1d11088945f4bed4d1110883c5f0e983b307008d760024ce110854cf1108ccd6110890bc *11088cbc1108a85c08080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e865a1070083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f48cbc1108c745f070c31108c745ec24ce1108c745e8ccd61108c745e490 *bc1108be54cf110883c5e0e941c3070090420000002400000083c7383b7b5c760ac7436c0e0000 *00ff63f8c747cc28c409088b46048947d08b46088947d48b460c8947d88b46108947dc8b461489 *47e08b45048947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b462c8947f88b *46308947fc8b463489078d77cc83c50cff6500900b00020000000000110000008d45fc3b435473 *08bec0bc1108ff63fc8b7504c745fc445d080883c5fcff2690d4d11108e05d0808000002001800 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83da0 *070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b87c1d11088945f4 *bed4d1110883c5f0e9dfb107008d7600d8ce110814ce11084ccf1108c4bc1108c0bc11084c5e08 *080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8c19f070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f4c0bc1108c745f06cc31108c745ec14ce1108c745e8d8ce1108c745e4c4bc1108be4ccf110883 *c5e0e99dc1070090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c4 *09088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b *461c8947e88b46208947ec8b46248947f08b46288947f48b45048947f88b46308947fc8b463489 *078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308bef4bc1108ff63fc *8b7504c745fce85e080883c5fcff2690d4d11108845f080800000200180001008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8999e070083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fc90b88c1d11088945f4bed4d1110883c5f0e9 *3bb007008d7600d8ce110814ce110854cf1108f8bc1108f4bc1108f05f08080000020018001f00 *8d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e81d9e0700 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4bc1108c745f080 *c31108c745ec14ce1108c745e8d8ce1108c745e4f8bc1108be54cf110883c5e0e9f9bf07009042 *0000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b *46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b462089 *47ec8b46248947f08b46288947f48b462c8947f88b45048947fc8b463489078d77cc83c50cff65 *00900b00020000000000110000008d45fc3b43547308be28bd1108ff63fc8b7504c745fc8c6008 *0883c5fcff2690d4d111082861080800000200180001008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e8f59c070083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fc90b89c1d11088945f4bed4d1110883c5f0e997ae07008d7600d8ce *110814ce110854cf11082cbd110828bd1108946108080000020018001f008d45e03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8799c070083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f428bd1108c745f084c31108c745ec14ce11 *08c745e8d8ce1108c745e42cbd1108be54cf110883c5e0e955be070090420000002400000083c7 *383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b46088947d48b460c89 *47d88b46108947dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b46248947f08b *45048947f48b462c8947f88b46308947fc8b463489078d77cc83c50cff6500900b000200000000 *00110000008d45fc3b43547308be5cbd1108ff63fc8b7504c745fc3062080883c5fcff2690d4d1 *1108cc62080800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8519b070083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fc90b8a81d11088945f4bed4d1110883c5f0e9f3ac07008d760034ce110854cf1108ccd611 *0860bd11085cbd1108386308080000020018001f008d45e03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e8d59a070083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f45cbd1108c745f07cc31108c745ec34ce1108c745e8ccd61108c7 *45e460bd1108be54cf110883c5e0e9b1bc070090420000002400000083c7383b7b5c760ac7436c *0e000000ff63f8c747cc28c409088b46048947d08b46088947d48b460c8947d88b46108947dc8b *46148947e08b46188947e48b461c8947e88b46208947ec8b45048947f08b46288947f48b462c89 *47f88b46308947fc8b463489078d77cc83c50cff6500900b00020000000000110000008d45fc3b *43547308be90bd1108ff63fc8b7504c745fcd463080883c5fcff2690d4d1110870640808000002 *00180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8ad99070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8b81d1108 *8945f4bed4d1110883c5f0e94fab07008d760034ce110854cf1108ccd6110894bd110890bd1108 *dc6408080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e83199070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fcc745f490bd1108c745f078c31108c745ec34ce1108c745e8ccd61108c745e494bd1108be54cf *110883c5e0e90dbb070090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747 *cc28c409088b46048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b461889 *47e48b461c8947e88b45048947ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b *463489078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308bec4bd1108 *ff63fc8b7504c745fc7865080883c5fcff269048d11108ccd611087cb311081466080800000200 *180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8 *0198070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f47cb31108 *c745f0ccd61108be48d1110883c5ece98aaf070089f6d4d111088c66080800000200180001008d *45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e89197070083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8c41d11088945f4bed4d1 *110883c5f0e933a907008d7600b4cd110854cf1108d8bd1108c8bd1108c4bd1108f86608080000 *020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e81597070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c4bd *1108c745f074c31108c745ecb4cd1108c745e8c8bd1108c745e4d8bd1108be54cf110883c5e0e9 *f1b8070090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b *46048947d08b46088947d48b460c8947d88b46108947dc8b45048947e08b46188947e48b461c89 *47e88b46208947ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b463489078d77 *cc83c50cff6500900b00020000000000110000008d45fc3b43547308be08be1108ff63fc8b7504 *c745fc9467080883c5fcff2690d4d111083068080800000200180001008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8ed95070083c4048d47f8894604c7 *06245b1008c745f8d46d10088d47f88945fc90b8d01d11088945f4bed4d1110883c5f0e98fa707 *008d7600d8ce110814ce110854cf11080cbe110808be11089c6808080000020018001f008d45e0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e87195070083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f408be1108c745f068c31108 *c745ec14ce1108c745e8d8ce1108c745e40cbe1108be54cf110883c5e0e94db707009042000000 *2400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b46048947d08b460889 *47d48b460c8947d88b45048947dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b *46248947f08b46288947f48b462c8947f88b46308947fc8b463489078d77cc83c50cff6500900b *00020000000000110000008d45fc3b43547308be3cbe1108ff63fc8b7504c745fc3869080883c5 *fcff26904cd1110834c61108a4c61108a4d01108d469080800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883c5f0e9efa707008d7600d469 *080800000200120005008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f8f06908088d4ff8894df4bea4c6110883c5f0e9a2a7070089f6d4690808 *0000020018000f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c *100856e8b993070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8 *286a08088d47f88945f4c745f0a4d01108be34c6110883c5ece93cab070048d11108e0d1110820 *d71108ccd61108dc6a080800000200120005008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f4ccd61108bee0d1110883c5f0e9eba607008d7600d86a08080000020018000f008d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e80193070083c404 *8d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8f46a08088d47f88945f4c7 *45f020d71108be48d1110883c5ece984aa0700d4d11108906b080800000200180001008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88d92070083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8dc1d11088945f4bed4d1110883 *c5f0e92fa407008d76004ccf110860be110850be110840be11083cbe1108fc6b08080000020018 *001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e811 *92070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f43cbe1108c7 *45f064c31108c745ec40be1108c745e850be1108c745e460be1108be4ccf110883c5e0e9edb307 *0090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c409088b460489 *47d08b46088947d48b45048947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b *46208947ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b463489078d77cc83c5 *0cff6500900b00020000000000110000008d45fc3b43547308be90be1108ff63fc8b7504c745fc *986c080883c5fcff26904cd1110834c61108a4c61108a4d01108346d080800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883c5f0e98fa407 *008d7600346d080800000200120005008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8506d08088d4ff8894df4bea4c6110883c5f0e942a40700 *89f6346d08080000020018000f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c747ec085c100856e85990070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec *8945fcc747f8886d08088d47f88945f4c745f0a4d01108be34c6110883c5ece9dca7070048d111 *08e0d1110820d71108ccd611083c6e080800000200120005008d45f03b43547303ff63f8c745f8 *d46d10088975fcc745f4ccd61108bee0d1110883c5f0e98ba307008d7600386e08080000020018 *000f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8a1 *8f070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8546e08088d *47f88945f4c745f020d71108be48d1110883c5ece924a70700d4d11108f06e0808000002001800 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e82d8f *070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8e81d11088945f4 *bed4d1110883c5f0e9cfa007008d76004ccf1108b4be1108a4be110894be110890be11085c6f08 *080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e8b18e070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f490be1108c745f060c31108c745ec94be1108c745e8a4be1108c745e4b4be1108be4ccf110883 *c5e0e98db0070090420000002400000083c7383b7b5c760ac7436c0e000000ff63f8c747cc28c4 *09088b46048947d08b45048947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b *461c8947e88b46208947ec8b46248947f08b46288947f48b462c8947f88b46308947fc8b463489 *078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308bee4be1108ff63fc *8b7504c745fcf86f080883c5fcff26904cd1110834c61108a4c61108a4d0110894700808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108be4cd1110883 *c5f0e92fa107008d76009470080800000200120005008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8b07008088d4ff8894df4bea4c6110883c5 *f0e9e2a0070089f6947008080000020018000f008d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c747ec085c100856e8f98c070083c4048d47ec894604c706245b1008c745f8d4 *6d10088d47ec8945fcc747f8e87008088d47f88945f4c745f0a4d01108be34c6110883c5ece97c *a4070048d11108e0d1110820d71108ccd611089c71080800000200120005008d45f03b43547303 *ff63f8c745f8d46d10088975fcc745f4ccd61108bee0d1110883c5f0e92ba007008d7600987108 *080000020018000f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec08 *5c100856e8418c070083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747 *f8b47108088d47f88945f4c745f020d71108be48d1110883c5ece9c4a30700d4d1110850720808 *00000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c *100856e8cd8b070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8f4 *1d11088945f4bed4d1110883c5f0e96f9d07008d76004ccf110808bf1108f8be1108e8be1108e4 *be1108bc7208080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c747f8085c100856e8518b070083c4048d47f8894604c706245b1008c745f8d46d10088d47 *f88945fcc745f4e4be1108c745f05cc31108c745ece8be1108c745e8f8be1108c745e408bf1108 *be4ccf110883c5e0e92dad070090420000002400000083c7383b7b5c760ac7436c0e000000ff63 *f8c747cc28c409088b45048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b *46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b462c8947f88b463089 *47fc8b463489078d77cc83c50cff6500900b00020000000000110000008d45fc3b43547308be38 *bf1108ff63fc8b7504c745fc5873080883c5fcff269048d11108ccd611089cb31108f473080800 *000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e8218a070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f49c *b31108c745f0ccd61108be48d1110883c5ece9aaa1070089f6d4d111086c740808000002001800 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b189 *070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8001e11088945f4 *bed4d1110883c5f0e9539b07008d76004ccf1108ccb311084cbf11083cbf110838bf1108d87408 *080000020018001f008d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e83589070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745 *f438bf1108c745f058c31108c745ecccb31108c745e83cbf1108c745e44cbf1108be4ccf110883 *c5e0e911ab070090d4d1110844d11108e0d1110830d71108c0d61108c8d61108ccd61108d0d611 *08d8d61108e4d611086cbf1108bed0d6110883c50cff2689f680750808030000002400010083c7 *1c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b450c8947ec8b45088947f08b450489 *47f4c747f88c6b10088b46088947fc8b450889078d47e889450c8d47f8894508bec8d6110883c5 *04e90ea0070089f68b46088945008b7604c745fcb075080883c5fcff268d760008760808987508 *08807508080200000025000500807508080b000200000001000b0005008d45f83b43547303ff63 *fc8b4d0489750489cec745fc3476080883c5fcff26908075080800000200120005008d45f83b43 *54720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc447608088d *77fc83c5f8e92ef7070089f69475080802000000150001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fcc745f46cbf11088b4e08894df08b760483c5ece9339f07008d7600847508080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beccd6110883 *c5f0e9f09a07006c75080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b90c1e1108894df4bed4d1110883c5f0e9d79807008d76006c75080800000200120041 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8247708088d4ff8894df4beccd6110883c5f0e96a9a070089f66c75080801000100130051008d *45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf0 *7608088b46048947f0c747f8607708088d47ec8945f48d47f88945f0bec0d6110883c5ece9179e *07008d76006c75080801000100130071028d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8ac7708088b4e04894ffc8d57f88955f4c745f0e4d611 *08bec8d6110883c5ece9bd9d0700906c750808010000002400710683c7183b7b5c760ac7436c06 *000000ff63f8c747ecb47608088b45048947f08b46088947f4c747f80c7808088b46048947fc8d *47ec8945048d47f8894500bec8d6110883c5fce9659d0700906c75080804000100010000000c00 *71068d45f83b43547303ff63fc8b4d008b560489550089cec745fc6478080883c5fcff2689f66c *75080802000000150075068d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745 *f8d46d10088975fcc747fcc07808088b460489078b46088945f48d47fc8945f0bee0d1110883c5 *ece9db9c07008d76006c75080802000000150075078d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8f07808088b46048947fc8b460889078d47f8 *8945f4bed8d6110883c5f0e9779807008d7600bed0d6110883c508ff2689f68b46048945008b75 *04c745046cbf110883c5fce95c9c0700a079080894790808887508080100000025000900887508 *0802000000150009008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df48b7608 *c745f0cc79080883c5f0ff2689f66c750808030000001200f5078d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec487908088b46048947f08b460c *8947f4c747f8d87908088b46048947fc8b460889078d47ec8945f48d47f88945f0bec8d6110883 *c5ece9a29b070089f66c750808000000002400ff0783c71c3b7b5c760ac7436c07000000ff63f8 *c747e870760808c747f4107a08088d47e88947f88b46048947fc8b460889078d47f4894500c745 *fc30d71108be44d1110883c5f8e9499b0700906c75080804000100000000001100ff078d45f83b *43547308be7cbf1108ff63fc8b7500c74500807a0808ff267cbf1108c0d51108f87a0808010001 *00130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e9adffff *ff90f87a08080b00020000000000110003008d45fc3b4354720883c70c3b7b5c760fbe84bf1108 *c7436c03000000ff63fcc747f80c7b08088b4d04894ffc8d57f8895504bec0d5110883c5fce995 *9a070090d4d11108e0d1110824cf1108accf11086ccd1108ccb61108ccb511083cd511084cb311 *085cb311086cb311088cb511086cbf1108807b080800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9181e1108894df4bed4d1110883c5f0e93b9407008d760083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8c07b08088d47f8894500c745fcd8111208be6c *cd110883c5f8e9f199070090807b080800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9541e1108894df4bed4d1110883c5f0e9cb9307008d7600847b08080100 *0100130041008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03cd511 *08bee0d1110883c5ece97999070090807b080800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9601e1108894df4bed4d1110883c5f0e9539307008d760083c70c *3b7b5c760ac7436c03000000ff63f8c747f8a87c08088d47f88945108b4d04894d0cbe6ccd1108 *83c508e90a99070089f604000100020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7 *436c03000000ff63fcc747f8e4bb0b088b46048947fc8b450089078d47f88945008b760883c5fc *e9b39407008d7600987b080800000200120041008d45f03b43547303ff63f8c745f8d46d100889 *75fcc745f46cbf1108beccb5110883c5f0e97b9407008d7600947b08080100010013008b008d45 *e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8647d *08088b4e04894df4c745f0ccb611088d57f88955ecbe4cb3110883c5e8e9fd9c070090947b0808 *4300000024008b0083c7183b7b5c760ac7436c06000000ff63f8c747ec187d08088b45048947f0 *8b460c8947f4c747f89c7d08088b450c8947fc8d47ec89450c8d47f88945088b760483c504e9d7 *9707008d7600be24cf1108c74504f47d080883c504ff268d7600407e0808d87c0808807b080884 *00000025007511807b0808040000002400f71183c7183b7b5c760ac7436c06000000ff63f8c747 *ec307c0808c747f86c7c08088b450c8947fc8d4fec894dfc8d57f88955f88b7608c74500687e08 *0883c5f4e95c970700807b0808010000002400f7198b46048945f88b4e0c894dfc8b5608895500 *be8cb51108c745f4747e080883c5f4ff26908b46088945008b7604c745fcc47e080883c5fcff26 *8d7600e87e0808f07b0808807b0808000000002500f719807b080804000100000001000b00f719 *8d45e43b43547303ff63fc8b7500c74500147f0808ff2690807b080800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9881e1108894df4bed4d1110883c5f0e9b3 *9007008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8487f08088d47f88945108b75 *0c83c50ce96692070089f604000100010000000c0000008d45fc3b4354720883c70c3b7b5c760a *c7436c03000000ff63fcc747f8e4bb0b08c747fce0d011088b4d00890f8d57f88955008b760483 *c5fce91a92070089f6a87b080802000000150001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e08894df48b56048955f0be6cb3110883c5ece9ea95070089f683c7143b7b5c760ac7 *436c05000000ff63f8c747f0b07f08088b45108947f4c747f8fc7f08088b45148947fc8b450489 *078d47f08945148d47f88945108b750883c50ce9a095070004000100020000000e0000008d45fc *3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8e4bb0b088b46088947fc8b4500 *89078d47f88945008b760483c5fce94b9107008d7600a87b080802000000150001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be6cb3110883c5ece91a95 *070089f683c7183b7b5c760ac7436c06000000ff63f8c747ec808008088b45108947f08977f4c7 *47f8cc8008088b45148947fc8b450c89078d47ec8945148d47f88945108b750883c50ce9cd9407 *0090fc8008082c800808a87b08080500000025000100a87b080804000100050000000b0001008d *45ec3b43547303ff63fc8b46148945f08b46108945f48b460c8945f88b46088945fc8b45008b4e *04894d0089c6c745ec5c81080883c5ecff2689f68b7504c74504e0d01108e95190070090807b08 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e01e110889 *4df4bed4d1110883c5f0e9378e07008d7600847b080801000100130041008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f03cd51108bee0d1110883c5ece9e593070090 *8b7508c74508e0d0110883c504e9c68f070089f6987b080800000200120041008d45f03b435473 *03ff63f8c745f8d46d10088975fcc745f46cbf1108beccb5110883c5f0e98f8f07008d7600947b *08080100010013008b008d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f8508208088b4e04894df4c745f0ccb611088d57f88955ecbe4cb3110883 *c5e8e9119807009083c70c3b7b5c760ac7436c03000000ff63f8c747f8888208088b45048947fc *8d4ff8894d08c74504e4d01108be5cb31108e90a93070089f6d482080830820808947b08080200 *000025009b00807b0808030000002400e31383c7183b7b5c760ac7436c06000000ff63f8c747ec *c4810808c747f8008208088b45048947fc8d4fec894d008d57f88955fc8b7604c7450420830808 *83c5f8e9a4920700807b0808020000002400e31b8b4608894500be8cb51108c745fc2c83080883 *c5fcff26908975008b7604c745fc7c83080883c5fcff2689f694830808a8810808807b08080100 *00002500e31b807b0808020000001500e31b8d45e03b43547303ff63f8c745f8d46d10088975fc *8b4e08894df48b7604c745f0bc83080883c5f0ff2689f683c7243b7b5c760ac7436c09000000ff *63f8c747e06c8108088b45108947e48b45088947e88b46088947ec8b45048947f08977f4c747f8 *c88308088b46048947fc8b450889078d47e08945108d47f889450c8b750483c508e9c39107008d *7600f4830808787f0808807b0808040000002500e31f807b080804000100040000000b00e31f8d *45f03b43547303ff63fc8b46108945f48b460c8945f88b46088945fc8b45008b4e04894d0089c6 *c745f06884080883c5f0ff268c7b080801000100130001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4beaccf110883c5f0e9288d0700807b0808020000002400eb1f83c7 *203b7b5c760ac7436c08000000ff63f8c747e4788408088b45048947e88b46108947ec8b460c89 *47f08b46048947f4c747f8b88408088b45088947fc8d47e48945088d47f88945048b7604e9d690 *070089f6807b080804000100000000001100ff1f8d45f83b4354720883c7083b7b5c760fbe8cbf *1108c7436c02000000ff63fcc747fc247f08088d4ffc894dfcbe24cf1108c745f8ec84080883c5 *f8ff268d760004b311088cbf1108908508080400010000000000110003008d45fc3b43547308be *94bf1108ff63fcc745fc8cbf110883c5fce955e5feff9044d11108e0d1110830d71108c8d61108 *d0d61108d8d61108e4d6110848bb1108e0bb11086cbf1108bed0d6110883c50cff2689f6d48508 *08030000002400010083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b450c8947 *ec8b45088947f08b45048947f4c747f88c6b10088b46088947fc8b450889078d47e889450c8d47 *f8894508bec8d6110883c504e9b68f070089f68b46088945008b7604c745fc0886080883c5fcff *268d760060860808f0850808d48508080200000025000300d48508080b000200000001000b0003 *008d45f83b43547303ff63fc8b4d0489750489cec745fc8c86080883c5fcff2690d48508080000 *0200120003008d45f83b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc9c8608088d77fc83c5f8e9d6e6070089f6ec85080802000000150001008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f824601008 *8b4e08894ffcc745f46cbf11088d57f88955f08b760483c5ece9bf8e07008d7600e88508080200 *0000150001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f4e0bb11088b4e08894d *f08b760483c5ece9838e07008d7600d485080802000000150029008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8648708088b46048947fc8b46 *0889078d47f88945f4c745f0e4d61108bec8d6110883c5ece9248e0700d4850808040001000100 *00000c0069008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec0c870808 *8b46048947f08b45008947f4c747f8a08708088b46048947fc8b450089078d47ec8945008d47f8 *8945fcbec8d6110883c5f8e9bc8d0700cc850808020000001500a5018d45ec3b4354720883c714 *3b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f0406710088b46088947f4c7 *47fc008808088b460489078d47f08945f48d47fc8945f0bee0d1110883c5ece95a8d070089f6cc *850808020000001500b5018d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8648808088b46048947fc8b460889078d47f88945f4bed8d6110883c5 *f0e9f78807008d7600bed0d6110883c508ff2689f683c70c3b7b5c760ac7436c03000000ff63f8 *c747f8985f10088b46048947fc8d4ff8894d008b7504c745046cbf110883c5fce9bd8c07009020 *89080814890808d88508080100000025002100d885080801000000240021008b763cc745006c89 *0808ff26d885080802000000150021008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e *04894df48b7608c745f07889080883c5f0ff2689f6e485080802000000150001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fcc745f448bb11088b4e08894df08b760483c5ece91f8c0700 *8d7600d485080802000000150053008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec908908088b46048947f08b46088947f4c747f8c88908088b *46048947fc8b460889078d47ec8945f48d47f88945f0bec8d6110883c5ece9ae8b070089f6cc85 *0808020000001500fd018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8 *d46d10088975fcc747ecc88808088b46048947f08b46088947f4c747f8048a08088b46048947fc *8b460889078d47ec8945f48d47f88945f0bec8d6110883c5ece93e8b070089f6c8850808040001 *00000000001100ff038d45f83b4354720883c7183b7b5c760fbe9cbf1108c7436c06000000ff63 *fcc747ecc8860808c747f8748a08088d47ec8947fc8b450089078d47f8894500c745fc30d71108 *be44d1110883c5f8e9da8a070089f69cbf1108c0d511083c8b080801000100130001008d45f43b *43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e975ffffff903c8b08080b0002 *0000000000110003008d45fc3b4354720883c70c3b7b5c760fbea4bf1108c7436c03000000ff63 *fcc747f8508b08088b4d04894ffc8d57f8895504bec0d5110883c5fce9518a070090e4d1110854 *d21108c4d11108d4d1110844d11108c8d0110824cf1108accf11086ccd110848bb1108ccb51108 *0cb311081cb311082cb311083cb311088cb5110808b7110824b71108e0bb11086cbf1108c48b08 *0814000000ffff0f00bee0d0110883c50c8b4500ff60f089f68b75188b451089451883c514e9eb *0000008d760083c7143b7b5c760ac7436c05000000ff63f8c747f0e4bb0b088b45088947f48b45 *048947f8c747fc94b90b088d47f089078d77fc83c51c8b4500ff60ec8d7600448c0808308c0808 *00000000860000002500000006000000240000008b450c8945fc8b4d14894df88b7608c7450098 *8c080883c5f4e95689070089f6008c080803000000240001008b460c8945f88b4e04894dfc8b56 *08895500be8cb51108c745f4a08c080883c5f4ff26908b46088945008b7604c745fccc8c080883 *c5fcff268d7600f08c0808208c0808008c08080200000025000100008c08080b00020000000100 *0b0001008d45e03b43547303ff63fc8b4d0489750489cec745fc1c8d080883c5fcff2690010000 *002400000083c7103b7b5c760ac7436c04000000ff63f8c747f410c409088b46048947f88b4e08 *894ffc8b550489178d77f483c508e94be007008d760002000000150000008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e08894df48b7604c745f0548d080883c5f0ff2689f604000100 *020000000e0000008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8948d *08088b46048947fc8b450089078d47f88945008b760883c5fce9ff8307008d7600ec8b08080400 *0000120001028d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d1008 *8975fcc747e8fcbb0b088b46088947ec8b460c8947f08b46108947f4c747f8246010088b460489 *47fc8d47e88945f48d47f88945f0c745ec6cbf110883c5ece9dff2feff8d7600ec8b0808040000 *002400010283c7203b7b5c760ac7436c08000000ff63f8c747e4cc8d08088b450c8947e88b460c *8947ecc747f0188e08088b450c8947f48b45108947f88b45088947fc8b450489078d47e4894510 *8d47f089450c8b760483c508e92e87070089f6dc8b080842000000240011208b460c8945fc8b4e *08894d008b5604895508be24cf1108c745f88c8e080883c5f8ff26908b750cc74504f48e080883 *c504ff269083c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b088b45088947f88b450c *8947fc8b450489078d47f48945208b75188b451489451883c518e9f70000008d76008b451c8945 *208b4d04894d1c8b55088955188b751083c514e95b8b07008d76006c8f0808288f080800000000 *081000002500000008000000240000008b450c8945fc8b4d20894df88b7608c74500a08f080883 *c5f4e94e86070089f6008c080805000000240001008b460c8945f88b4e04894dfc8b5608895500 *be8cb51108c745f4a88f080883c5f4ff2690008c080804000000240001008b46108945008b4d10 *8b560489551089cec745fcd48f080883c5fcff268d76008b46088945008b7604c745fc04900808 *83c5fcff268d760024900808188f0808dc8b08080300000025001122dc8b080816000300000001 *000b0011228d45dc3b43547303ff63fc8b4d0089750089cec745fc5090080883c5fcff2690c48b *0808130000001f190500c48b0808130000001f190500897500be54d2110883c5fce96081070098 *90080898900808c88b08080000000025000100b8ec1e1108894504bed4d11108c74508bc900808 *e9537f07008d7600c48b0808130000001d190500d08b080800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9041f1108894df4bed4d1110883c5f0e90b7f07008d *7600c48b08081300000019190500c48b080801000100130001008d45ec3b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc900a1208c707 *00d211088d4ff8894df48b56048955f0bee4d1110883c5ece98b8407008d7600d08b0808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9101f1108894df4bed4 *d1110883c5f0e9637e07008d7600c48b080801000100130009008d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec389108088b46048947f0c747f8 *989108088d47ec8945f48d47f88945f0bee4d1110883c5ece9ef8307008d7600e48b0808010001 *00130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be6ccd110883c5 *f0e9ac7f070083c7183b7b5c760ac7436c06000000ff63f8c747ecd49108088b450c8947f0c747 *f8349208088b45048947fc8d47ec8945188d47f8894514be44d1110883c510e9738307008d7600 *d08b080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c1f *1108894df4bed4d1110883c5f0e94b7d07008d7600c48b08081300000019180500d08b08080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9441f1108894df4be *d4d1110883c5f0e9037d07008d7600c48b080801000100130009008d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f89208088d4ff8894df48b56 *048955f0bee4d1110883c5ece99c820700d08b080800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b94c1f1108894df4bed4d1110883c5f0e9777c07008d7600c4 *8b080801000100130009008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec349308088b46048947f0c747f8849308088d47ec8945f48d47f88945 *f0bee4d1110883c5ece9038207008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8c0 *9308088b45048947fc8d4ff8894d14c745100cb31108be44d1110883c50ce9c78107008d76000c *8c080801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4e0bb1108 *8b760483c5f0e9857d070090f48b0808830000002400510083c70c3b7b5c760ac7436c03000000 *ff63f8c747f85c9408088b45088947fc8b4d04894d0cc7450808b711088d57f8895504be1cb311 *08e9188607008b7604c745089094080883c508ff2690cc94080814940808e09208084502000025 *00ffff83c70c3b7b5c760ac7436c03000000ff63f8c747f8b09208088b45108945008d4ff8894d *fc8b7518c74504f094080883c5fce905f8ffff90f09408085c92080820910808060000002500ff *ffd8900808030000002400ffff83c70c3b7b5c760ac7436c03000000ff63f8c747f8f09008088b *46088945f08d47f88945ec8b46048945f88b460c8945fc8b4608894500bec4d11108c745f43c95 *080883c5e8e981800700908975008b7604c745fc4895080883c5fcff2689f694950808bc900808 *8c900808020000002500ffff8090080804000100020000000e00ffff8d45dc3b43547303ff63fc *8b46088945fc8b45008b4e04894d0089c6c745f8bc95080883c5f8ff26d88b0808010001001300 *01108d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8b46610088b4e04894ffc8d57f88955f4c745f024b71108bec8d0110883c5ece9c97f070090 *010000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f840c409088b46048947fc *8b4d04890f8d77f883c508e951d707009002000000150000008d45f03b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df48b7604c745f05496080883c5f0ff2689f6020000002400000083 *c7583b7b5c760ac7436c16000000ff63f8c747ac8c9608088b45088947b08b45048947b4c747b8 *94b90b088d47ac8947bcc747c058c409088b46048947c48b46088947c88b460c8947cc8b461089 *47d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b *462c8947ec8b46308947f08b46348947f48b46388947f88d47b88947fc8b464089078d77c083c5 *0ce971d607009003000000120000008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0c *894df08b56088955f48b7604c745ecc096080883c5ecff2604000100030000000b0000008d45fc *3b4354720883c7103b7b5c760ac7436c04000000ff63fcc747f46c9708088b46048947f88b4608 *8947fc8b450089078d47f48945008b760c83c5fce91d7a070090ec8b080804000000120001028d *45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8fc *bb0b088b46088947ec8b460c8947f08b46108947f4c747f8985f10088b46048947fc8d47e88945 *f48d47f88945f0c745ec6cbf110883c5ece9ffe8feff8d7600ec8b0808050000002400010283c7 *243b7b5c760ac7436c09000000ff63f8c747e0a89708088b45108947e48b45148947e88b460c89 *47ecc747f0f89708088b45148947f48b450c8947f88b45088947fc8b450489078d47e08945148d *47f08945108b760483c50ce9487d0700d88b0808420000002400235083c70c3b7b5c760ac7436c *03000000ff63f8c747f8009608088b45048947fc8b460c8945f88b46088945fc8b46048945008d *47f8894508be24cf1108c745f46c98080883c5f4ff268b750cc74504d898080883c504ff269083 *c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b088b45088947f88b450c8947fc8b4504 *89078d47f48945208b75188b451489451883c518e9f70000008d76008b451c8945208b4d04894d *1c8b55088955188b751083c514e9538107008d7600749908083099080800000000081000002500 *000008000000240000008b450c8945fc8b4d20894df88b7608c74500a899080883c5f4e9467c07 *0089f6008c080805000000240001008b460c8945f88b4e04894dfc8b5608895500be8cb51108c7 *45f4b099080883c5f4ff2690008c080804000000240001008b46108945008b4d108b5604895510 *89cec745fcdc99080883c5fcff268d76008b46088945008b7604c745fc0c9a080883c5fcff268d *76002c9a080820990808d88b08080300000025002354d88b080816000300000001000b0023548d *45dc3b43547303ff63fc8b4d0089750089cec745fc589a080883c5fcff2690d08b080800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c1f1108894df4bed4d1 *110883c5f0e9677507008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8949a08088d *47f88945148b750c83c510e91a77070089f6010000002400000083c7443b7b5c760ac7436c1100 *0000ff63f8c747c058c409088b46048947c48b46088947c88b460c8947cc8b46108947d08b4614 *8947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec *8b46308947f08b46348947f48b46388947f88b463c8947fc8b450489078d77c083c508e959d207 *009002000000150000008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b76 *04c745f0f89a080883c5f0ff2689f604000100020000000e0000008d45fc3b4354720883c70c3b *7b5c760ac7436c03000000ff63fcc747f8849b08088b46048947fc8b450089078d47f88945008b *760883c5fce90f7607008d7600fc8b080802000000150001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df48b56048955f0be3cb3110883c5ece9de79070089f6fc8b080804 *000100040000000b0001008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747 *ecbc9b08088b45008947f08b460c8947f4c747f8089c08088b46048947fc8b460889078d47ec89 *45008d47f88945fc8b761083c5f8e97679070089f6e88b080801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f448bb11088b760483c5f0e93575070090e88b080802 *000000150011008d45e83b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8ac9c08088b46048947fc8b46088945f4c745f064b611088d47f88945ecbe2cb3 *110883c5e8e9b37d07008d760083c7203b7b5c760ac7436c08000000ff63f8c747e4489c08088b *45148947e88b46088947ec8b45088947f08b45048947f4c747f8e09c08088b45108947fc8b4604 *89078d47e48945148d47f88945108b750483c50ce98678070089f6349d0808c49a0808d08b0808 *050000002500410cd08b080804000100050000000b00410c8d45ec3b43547303ff63fc8b461489 *45f08b46108945f48b460c8945f88b46088945fc8b45008b4e04894d0089c6c745eca49d080883 *c5ecff2689f6e08b080801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4beaccf110883c5f0e9e4730700d08b0808030000002400510c83c7243b7b5c760a *c7436c09000000ff63f8c747e0b49d08088b45088947e48b45048947e88b46108947ec8b460c89 *47f08b46048947f4c747f8fc9d08088b450c8947fc8d47e089450c8d47f88945088b760483c504 *e98977070090148c080804000100000000001100ffff8d45f43b4354720883c7243b7b5c760fbe *acbf1108c7436c09000000ff63fcc747e02c8d0808c747e860900808c747f0cc9508088d47e089 *47f48d47e88947f8c747fc689a08088d47fc8945f88d47f08945fcbe24cf1108c745f4309e0808 *83c5f4ff2604b31108acbf1108009f08080400010000000000110003008d45fc3b43547308beb4 *bf1108ff63fcc745fcacbf110883c5fce9e5cbfeff90e4d11108d4d1110844d11108dcd21108d0 *d5110801000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f404d21108 *8b760483c5f0e98d720700903c9f080800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9c41f1108894df4bed4d1110883c5f0e9737007008d7600389f08080100 *0100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8889f08088b4e04894df48d57f88955f0bee4d1110883c5ece90c760700389f0808 *01000100130017008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8c49f08088b4e04894ffc8d57f88955f4c745f0d0d51108be44d1110883c5ec *e9b575070090389f0808010000002400170083c7183b7b5c760ac7436c06000000ff63f8c747ec *549f08088b460c8947f0c747f814a008088b45048947fc8d47ec8945048d47f88945008b760883 *c5fce96575070090389f0808040001000000000011001f008d45f83b43547308bebcbf1108ff63 *fcbedcd21108c745fc6ca0080883c5fcff268d7600d4d11108bcd11108b8d1110870d1110844d1 *1108ccd01108d4d01108dcd211088cd3110858d31108f4b21108bcbf110801000000240000008b *4504894500c7450404d211088b760883c5fce9e0740700f0a0080804000100000001000b000100 *8d45f83b43547303ff63fcbe70d11108c745fc1ca1080883c5fcff26f0a0080804000000120041 *008d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747 *cc7cdc0b088b46108947d0c747d400d21108c747d87cdc0b088b460c8947dc8d47cc8947e0c747 *e47cdc0b088b46088947e88d47d88947ecc747f07cdc0b088b46048947f48d47e48947f8c747fc *44a108088d47f08945f48d47fc8945f0be58d3110883c5ece9177407008d7600f0a00808040001 *00030000000b00c3008d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f06c *a108088b46048947f48b46088947f88b460c8947fc8b450089078d47f0894500c745fcf4b21108 *be44d1110883c5f8e9b273070089f6e4a0080800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9dc1f1108894df4bed4d1110883c5f0e98b6d07008d7600e4a008 *08000000002400010883c70c3b7b5c761ec74500aca20808c7436c03000000b8ff00000083f000 *894320e9de9a0700c747f870a208088d4ff8894d00e9dcfdffff00000000240000008b760483c5 *04ff26f8a0080801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8b46610088b4e04894ffc8d57f88955f0beccd01108c745f4 *eca2080883c5ece9bd6e070090f8a0080801000100130009008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f800a308088b4e04894ffc8d57f889 *55f4be8cd3110883c5f0e96c6e070004a1080801000100130001008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8406710088b4e04894ffc8d57 *f88955f4be8cd3110883c5f0e91c6e0700c74508fcd111088b750483c504e90a6e070089f683c5 *08e9a4feffff00a40808eca30808e4a00808420000002500010883c7183b7b5c760ac7436c0600 *0000ff63f8c747ec58a308088b45088947f0c747f8a8a308088b45088947fc8d47ec8945fc8d47 *f88945f8bebcd11108c745001ca4080883c5f4e9ac710700c74508fcd111088b750483c504e98e *6d070089f683c508e928feffff7ca4080868a40808e4a00808420000002500010883c70c3b7b5c *760ac7436c03000000ff63f8c747f8406710088b45088947fc8d4ff8894dfcc745f88cd31108be *44d11108c7450098a4080883c5f4e93c71070098a408081ca40808e4a008080200000025003309 *e4a0080802000000150073098d45e03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8b46610088b46048947fc8d47f88945e88b46088945f08b46048945 *f4bed4d01108c745ececa4080883c5e4e9b96c070090e4a0080804000100050000000b007b0f8d *45f83b4354720883c71c3b7b5c760ac7436c07000000ff63fcc747e810a208088b460c8947ec8b *46108947f08b45008947f4c747f8f8a408088b46048947fc8b460889078d47e88945008d47f889 *45fc8b761483c5f8e958700700fca0080801000100130001008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b46610088b4e04894ffc8d57f889 *55f4bed4d0110883c5f0e9fc6b070004a1080801000100130001008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8406710088b4e04894ffc8d57 *f88955f4be8cd3110883c5f0e9ac6b07008b7504c74504fcd11108e99d6b070090e4a008080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910201108894df4be *d4d1110883c5f0e9836907008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f878a608 *088d47f889450483c504e9f1f9ffff90a8a608085ca60808e4a008080100000025000108e4a008 *0802000000150043098d45e43b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747ecc8a508088b46048947f0c747f818a608088b46048947fc8d47ec8945ec8d *47f88945e88b46088945f4bebcd11108c745f0e4a6080883c5e4e9c06e0700e4a0080804000100 *040000000b007b0f8d45f83b4354720883c7243b7b5c760ac7436c09000000ff63fcc747e060a5 *08088b46048947e48b46088947e88b460c8947ec8b45008947f08b46108947f4c747f8f0a60808 *8b46048947fc8b460889078d47e08945008d47f88945fc8b761083c5f8e9486e07000000000024 *0000008b760483c504ff2600000000240000008b7608c74500d4a70808ff260000000024000000 *8b7604c74500e4a70808ff2601000100130000008d45f43b43547303ff63f8c745f8d46d100889 *75fc8b7604c745f4f8a7080883c5f4ff2604a1080801000100130001008d45f03b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80ca808088b4e04894ffc *8d57f88955f4be8cd3110883c5f0e98869070000000000240000008b760483c504ff2600000000 *240000008b7604c7450088a80808ff2601000100130000008d45f43b43547303ff63f8c745f8d4 *6d10088975fc8b7604c745f498a8080883c5f4ff2604a1080801000100130001008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8aca808088b4e *04894ffc8d57f88955f4be8cd3110883c5f0e9e86807008b7504c74504fcd11108e9d968070090 *e4a0080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94420 *1108894df4bed4d1110883c5f0e9bf6607008d760083c70c3b7b5c760ac7436c03000000ff63f8 *c747f83ca908088d47f889450483c504e92df7ffff906ca9080820a90808e4a008080100000025 *000108e4a0080802000000150005098d45e43b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec3ca808088b46048947f0c747f8dca808088b46048947fc8d *47ec8945ec8d47f88945e88b46088945f4beb8d11108c745f0a8a9080883c5e4e9fc6b0700e4a0 *080804000100030000000b007f0f8d45f83b4354720883c7203b7b5c760ac7436c08000000ff63 *fcc747e464a708088b46048947e88b46088947ec8b45008947f08b460c8947f4c747f8b4a90808 *8b46048947fc8b460889078d47e48945008d47f88945fc8b760c83c5f8e98a6b070089f68b7504 *c7450404d21108e96d670700908b7504c7450404d21108e95d67070090e4a00808000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b988201108894df4bed4d11108 *83c5f0e9436507008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8b8aa08088d47f8 *89450483c504e9b1f5ffff90e8aa08089caa0808e4a00808010000002500010883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f80c5f10088b46048947fc8d4ff8894dfcc745f88cd31108be44 *d11108c7450024ab080883c5f4e9b06a070024ab08088caa0808e4a008080100000025001109e4 *a0080801000000240011098b763cc7450078ab0808ff26e4a0080802000000150011098d45e43b *43547303ff63f8c745f8d46d10088975fc8b4e08894df48b7604c745f084ab080883c5f0ff2689 *f6e4a008080100000024007f0f83c71c3b7b5c760ac7436c07000000ff63f8c747e828aa08088b *45048947ec8b460c8947f08b46048947f4c747f89cab08088b45048947fc8b460c89078d47e889 *45048d47f88945008b760483c5fce9ec690700e4a0080804000100000000001100ff0f8d45f83b *43547308bec4bf1108ff63fcbedcd21108c745fcd4ab080883c5fcff268d7600bcd111089cb511 *08d4b5110864ac080802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b *4e08894df48b56048955f083c5f0e95fe2feff8d760002000000240000008b45088b4d04894d08 *8945048b7608e95869070060ac080802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be9cb51108c745eca8ac080883c5ecff2689f65cac08 *08020000002400070083c7183b7b5c760ac7436c06000000ff63f8c747ec74ac08088b45048947 *f08b46088947f4c747f8c8ac08088b45088947fc8b460489078d47ec8945088d47f8894504bebc *d11108e9bf6807008d76005cac080801000000240007008b46088945008b4d048b560489550489 *cec745fc08ad080883c5fcff268d76005cac08080b00020000000000110007008d45fc3b435473 *08beccbf1108ff63fc8b7500c7450064ad0808ff2654d11108ccbf1108b4ad0808020000001500 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0eb *aa89f6b0ad08080b000200000000001100030083c70c3b7b5c760fbed4bf1108c7436c03000000 *ff63fcc747f8c4ad08088b45008947fc8b4d04890f8d57f8895504be54d11108e9d36307008d76 *00dcd01108dcbf110838ae080800000200180003008d45f03b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c747f8085c100856e8e14f070083c4048d47f8894604c706245b1008c745f8 *d46d10088d47f88945fcc745f4dcbf1108bedcd0110883c5f0e96563070090bcd111088cb51108 *d4b51108acae080802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *08894df48b56048955f083c5f0e917e0feff8d760002000000240000008b45088b4d04894d0889 *45048b7608e910670700a8ae080802000000150001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e08894df08b56048955f4be8cb51108c745ecf0ae080883c5ecff2689f602000000 *240000008b45088b4d04894d088945048b7608e9b4660700a8ae080802000000150001008d45ec *3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108c745ec4c *af080883c5ecff2689f6a4ae080804000000120003008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec10af08088b460c8947f08b46108947f4c7 *47f86caf08088b46048947fc8b460889078d47ec8945f48d47f88945f0bebcd1110883c5ece906 *66070089f6a4ae0808030000002400070083c7203b7b5c760ac7436c08000000ff63f8c747e4bc *ae08088b45048947e88b460c8947ecc747f0acaf08088b450c8947f48b46048947f88b45088947 *fc8b460889078d47e489450c8d47f0894508bebcd1110883c504e99c650700a4ae080801000000 *240007008b460c8945fc8b46088945008b45048b4e04894d0489c6c745f81cb0080883c5f8ff26 *90a4ae08080b00020000000000110007008d45f83b43547308befcbf1108ff63fc8b7500c74500 *84b00808ff2654d11108fcbf1108d8b0080802000000150001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebaa89f6d4b008080b00020000000000 *1100030083c70c3b7b5c760fbe04c01108c7436c03000000ff63fcc747f8e8b008088b45008947 *fc8b4d04890f8d57f8895504be54d11108e9af6007008d760048d411081cc0110844d411081cc0 *11083cd411081cc011085cb1080800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8ad4c070083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f41cc01108be48d4110883c5f0e9316007009064b10808000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8494c070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f41cc011 *08be44d4110883c5f0e9cd5f0700906cb1080800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8e54b070083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f41cc01108be3cd4110883c5f0e9695f070090c4d1 *1108d4d1110828d41108a8d6110888d6110898d611081cb5110804b61108a4b208080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e8201108894df4bed4d111 *0883c5f0e92f5d07008d7600a4b20808420000002400010083c70c3b7b5c761ec7450008b30808 *c7436c03000000b8ff00000083f000894320e9828a0700c747f8ccb208088d4ff8894d088b7504 *83c504e9c25e070089f6a4b2080800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b940211108894df4bed4d1110883c5f0e9a75c07008d760083c504e97cffffff *a4b2080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94821 *1108894df4bed4d1110883c5f0e9635c07008d7600a4b20808420000002400010083c70c3b7b5c *761ec74500d4b30808c7436c03000000b8ff00000083f000894320e9b6890700c747f898b30808 *8d4ff8894d088b750483c504e9f65d070089f683c504ebbb8d7600a4b208080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a0211108894df4bed4d1110883c5 *f0e9d35b07008d7600a4b20808420000002400010083c70c3b7b5c761ec7450064b40808c7436c *03000000b8ff00000083f000894320e926890700c747f828b408088d4ff8894d088b750483c504 *e9665d070089f6a4b2080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9f8211108894df4bed4d1110883c5f0e94b5b07008d760083c504e97cffffffa4b208 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90822110889 *4df4bed4d1110883c5f0e9075b07008d7600a4b20808420000002400010083c70c3b7b5c761ec7 *450030b50808c7436c03000000b8ff00000083f000894320e95a880700c747f8f4b408088d4ff8 *894d088b750483c504e99a5c070089f683c504ebbb8d7600a4b2080800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b960221108894df4bed4d1110883c5f0e977 *5a07008d7600a4b20808420000002400010083c70c3b7b5c761ec74500c0b50808c7436c030000 *00b8ff00000083f000894320e9ca870700c747f884b508088d4ff8894d088b750483c504e90a5c *070089f683c508ebbb8d7600a4b2080800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9b8221108894df4bed4d1110883c5f0e9e75907008d7600a4b208084200 *00002400010083c70c3b7b5c761ec7450050b60808c7436c03000000b8ff00000083f000894320 *e93a870700c747f814b608088d4ff8894d088b750483c504e97a5b070089f6a4b2080800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910231108894df4bed4d1 *110883c5f0e95f5907008d760083c508e97cffffffa4b2080800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b920231108894df4bed4d1110883c5f0e91b590700 *8d7600a4b20808420000002400010083c70c3b7b5c761ec745001cb70808c7436c03000000b8ff *00000083f000894320e96e860700c747f8e0b608088d4ff8894d088b750483c504e9ae5a070089 *f683c508ebbb8d7600a4b2080800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b978231108894df4bed4d1110883c5f0e98b5807008d7600a4b208084200000024 *00010083c70c3b7b5c761ec74500acb70808c7436c03000000b8ff00000083f000894320e9de85 *0700c747f870b708088d4ff8894d088b750483c504e91e5a070089f683c508ebbb8d760083c70c *3b7b5c760ac7436c03000000ff63f8c747f840c409088b45108947fc8b4d08890f8d57f8895510 *8b750483c50ce9df5907008d760083c508e978ffffff2cb80808f4b70808a4b208080400000025 *000100a4b2080805000000240001008b460483f87d750f8b7504c7450448b8080883c504ff2683 *c50ce939ffffff908b46088945008b7604c745fc54b8080883c5fcff268d760074b80808ecb708 *08a4b2080804000000250001008b7604c74500a0b80808ff2683c508e9f8feffffacb80808acb8 *0808acb80808acb80808acb80808a0b80808acb80808acb80808a4b208080400000025000100a4 *b2080804000100040000000b0001008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b *460c8945f88b45008b4e08894d0089c6c745f0e0b8080883c5f0ff26a4b2080804000100040000 *000b0003008d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0f0b808088b *46048947f48b46088947f88b45008947fc8b460c89078d47f0894500c745fc28d411088b761083 *c5f8e9905c0700b4b2080800000200120005008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f404b61108be98d6110883c5f0e94f5807008d760083c7203b7b5c760ac7436c08000000 *ff63f8c747e434b908088b450c8947e88b45108947ec8b45088947f08b45048947f4c747f890b9 *08088d47e48945108d47f889450c8b750483c508e9095c07009083c508e908fdffff0cba0808bc *b90808a4b208080400000025005300a4b2080805000000240053008b460483f83d750f8b7504c7 *450428ba080883c504ff2683c50ce9c9fcffff908b46088945008b7604c745fc34ba080883c5fc *ff268d760054ba08085cb70808a4b2080804000000250053008b7604c7450080ba0808ff2683c5 *08e988fcffff8cba08088cba08088cba08088cba08088cba080880ba08088cba08088cba0808a4 *b208080400000025005300a4b2080804000100040000000b0053008d45ec3b43547303ff63fc8b *46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f0c0ba080883c5f0ff *2683c7143b7b5c760ac7436c05000000ff63f8c747f0d0ba08088b450c8947f48b45108947f88b *45088947fc8b450489078d47f0894510c7450c28d411088b750483c508e9c85a070004bb0808cc *b60808a4b20808040000002500530083c70c3b7b5c760ac7436c03000000ff63f8c747f89cb608 *088b46048945fc8d4ff8894df8bec4d11108c7450060bb080883c5f4e97b5a07008d760083c508 *e9acfaffff9cbb08089cbb08089cbb08089cbb080860bb08089cbb08089cbb08089cbb0808a0b2 *0808040000002500a700a0b2080804000100040000000b00a7008d45e43b43547303ff63fc8b46 *048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f0d0bb080883c5f0ff26 *83c7143b7b5c760ac7436c05000000ff63f8c747f0e0bb08088b450c8947f48b45108947f88b45 *088947fc8b450489078d47f0894510c7450c28d411088b750483c508e9b859070083c508e95cf9 *ffff5cbc080814bc0808a0b20808040000002500a700a0b20808050000002400a7008b460483f8 *2c750f8b7504c7450478bc080883c504ff2683c50ce91df9ffff908b46088945008b7604c745fc *84bc080883c5fcff268d7600a4bc080800b60808a0b20808040000002500a7008b7604c74500d0 *bc0808ff2683c508e9dcf8ffffdcbc0808dcbc0808dcbc0808dcbc0808dcbc0808d0bc0808dcbc *0808dcbc0808a0b20808040000002500a700a0b2080804000100040000000b00a7008d45ec3b43 *547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f010 *bd080883c5f0ff26a0b2080804000100030000000b00a7008d45f83b4354720883c7143b7b5c76 *0ac7436c05000000ff63fcc747f020bd08088b46048947f48b45008947f88b46088947fc8b460c *89078d47f0894500c745fc28d411088b760c83c5f8e960580700b4b2080800000200120003008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f41cb51108be98d6110883c5f0e91f5407 *008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e864bd08088b45088947ec8b450c89 *47f08b45048947f4c747f8c0bd08088d47e889450c8d47f88945088b750483c504e9df5707008d *760083c504e9f0f6ffff38be0808ecbd0808a0b20808030000002500e700a0b208080400000024 *00e7008b460483f83d750f8b7504c7450454be080883c504ff2683c508e9b1f6ffff908b460889 *45008b7604c745fc60be080883c5fcff268d760080be080870b50808a0b20808030000002500e7 *008b7604c74500acbe0808ff2683c504e970f6ffffb8be0808b8be0808b8be0808b8be0808b8be *0808acbe0808b8be0808b8be0808a0b20808030000002500e700a0b2080804000100030000000b *00e7008d45f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745 *f4ecbe080883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4fcbe08088b45 *088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c504e9a6560700 *89f62cbf0808e0b40808a0b20808030000002500e70083c70c3b7b5c760ac7436c03000000ff63 *f8c747f8b0b408088b46048945fc8d4ff8894df8bec4d11108c7450084bf080883c5f4e9575607 *008d760083c504e99cf4ffffc0bf0808c0bf0808c0bf0808c0bf080884bf0808c0bf0808c0bf08 *08c0bf0808a0b20808030000002500e700a0b2080804000100030000000b00e7008d45e83b4354 *7303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4f4bf080883c5f4ff *2689f683c7103b7b5c760ac7436c04000000ff63f8c747f404c008088b45088947f88b450c8947 *fc8b450489078d47f489450cc7450828d411088b750483c504e99e55070089f683c504e954f3ff *ff78c0080834c00808a0b20808030000002500e700a0b20808040000002400e7008b460483f87b *750f8b7504c7450494c0080883c504ff2683c508e915f3ffff908b46088945008b7604c745fca0 *c0080883c5fcff268d7600c0c0080814b40808a0b20808030000002500e7008b7604c74500ecc0 *0808ff2683c504e9d4f2fffff8c00808f8c00808f8c00808f8c00808f8c00808ecc00808f8c008 *08f8c00808a0b20808030000002500e700a0b2080804000100030000000b00e7008d45f03b4354 *7303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f42cc1080883c5f4ff *2689f683c7103b7b5c760ac7436c04000000ff63f8c747f43cc108088b45088947f88b450c8947 *fc8b450489078d47f489450cc7450828d411088b750483c504e96654070089f66cc1080884b308 *08a0b20808030000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f854b308088b *46048945fc8d4ff8894df8bec4d11108c74500c4c1080883c5f4e9175407008d760083c504e900 *f1ffff00c2080800c2080800c2080800c20808c4c1080800c2080800c2080800c20808a0b20808 *030000002500e700a0b2080804000100030000000b00e7008d45e83b43547303ff63fc8b460489 *45fc8b460c8945f88b45008b4e08894d0089c6c745f434c2080883c5f4ff2689f6a0b208080000 *00002400e70083c7103b7b5c760ac7436c04000000ff63f8c747f444c208088b46108947f88b46 *0c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e95253070089f6a0b20808 *000002001200ef008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f480c2 *080883c5f4ff2689f6a0b20808000002001800ff008d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c747ec085c100856e8293b070083c4048d47ec894604c706245b1008c745f8 *d46d10088d47ec8945fcc747f8d0c208088d47f88945f4c745f028121208be88d6110883c5ece9 *ac52070020d4110864c0110868c3080800000200180003008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e8b13a070083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcc745f464c01108be20d4110883c5f0e9354e07009048d4110884 *c0110844d4110884c011083cd4110884c01108d4c3080800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8353a070083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f484c01108be48d4110883c5f0e9b94d07 *0090dcc3080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8d139070083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f484c01108be44d4110883c5f0e9554d070090e4c3080800000200180003008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e86d39070083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f484c01108be3cd4110883c5 *f0e9f14c0700907cd4110884c0110818c5080800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e80139070083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f484c01108be7cd4110883c5f0e9854c070090ccc0 *110800000000240000008b760ce90442070084c5080800000200180001008d45f43b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88938070083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcbeccc01108c745f490c5080883c5f4ff26c4d111 *08d4d1110828d41108a8d6110888d6110898d611082cb5110804b61108fcc50808000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d0231108894df4bed4d11108 *83c5f0e9d74907008d7600fcc50808420000002400010083c70c3b7b5c761ec7450060c60808c7 *436c03000000b8ff00000083f000894320e92a770700c747f824c608088d4ff8894d088b750483 *c504e96a4b070089f6fcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b928241108894df4bed4d1110883c5f0e94f4907008d760083c504e97cfffffffc *c5080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9342411 *08894df4bed4d1110883c5f0e90b4907008d7600fcc50808420000002400010083c70c3b7b5c76 *1ec745002cc70808c7436c03000000b8ff00000083f000894320e95e760700c747f8f0c608088d *4ff8894d088b750483c504e99e4a070089f683c504ebbb8d7600fcc5080800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b98c241108894df4bed4d1110883c5f0 *e97b4807008d7600fcc50808420000002400010083c70c3b7b5c761ec74500bcc70808c7436c03 *000000b8ff00000083f000894320e9ce750700c747f880c708088d4ff8894d088b750483c504e9 *0e4a070089f6fcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9e4241108894df4bed4d1110883c5f0e9f34707008d760083c504e97cfffffffcc50808 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ec241108894d *f4bed4d1110883c5f0e9af4707008d7600fcc50808420000002400010083c70c3b7b5c761ec745 *0088c80808c7436c03000000b8ff00000083f000894320e902750700c747f84cc808088d4ff889 *4d088b750483c504e94249070089f683c504ebbb8d7600fcc5080800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b944251108894df4bed4d1110883c5f0e91f47 *07008d7600fcc50808420000002400010083c70c3b7b5c761ec7450018c90808c7436c03000000 *b8ff00000083f000894320e972740700c747f8dcc808088d4ff8894d088b750483c504e9b24807 *0089f683c508ebbb8d7600fcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b99c251108894df4bed4d1110883c5f0e98f4607008d7600fcc50808420000 *002400010083c70c3b7b5c761ec74500a8c90808c7436c03000000b8ff00000083f000894320e9 *e2730700c747f86cc908088d4ff8894d088b750483c504e92248070089f6fcc508080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f4251108894df4bed4d111 *0883c5f0e9074607008d760083c508e97cfffffffcc5080800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b900261108894df4bed4d1110883c5f0e9c34507008d *7600fcc50808420000002400010083c70c3b7b5c761ec7450074ca0808c7436c03000000b8ff00 *000083f000894320e916730700c747f838ca08088d4ff8894d088b750483c504e95647070089f6 *83c508ebbb8d7600fcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b958261108894df4bed4d1110883c5f0e9334507008d7600fcc50808420000002400 *010083c70c3b7b5c761ec7450004cb0808c7436c03000000b8ff00000083f000894320e9867207 *00c747f8c8ca08088d4ff8894d088b750483c504e9c646070089f683c50cebbb8d7600fcc50808 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b0261108894d *f4bed4d1110883c5f0e9a34407008d7600fcc50808420000002400010083c70c3b7b5c761ec745 *0094cb0808c7436c03000000b8ff00000083f000894320e9f6710700c747f858cb08088d4ff889 *4d088b750483c504e93646070089f6fcc5080800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b908271108894df4bed4d1110883c5f0e91b4407008d760083c50c *e97cfffffffcc5080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b914271108894df4bed4d1110883c5f0e9d74307008d7600fcc50808420000002400010083 *c70c3b7b5c761ec7450060cc0808c7436c03000000b8ff00000083f000894320e92a710700c747 *f824cc08088d4ff8894d088b750483c504e96a45070089f683c50cebbb8d7600fcc50808000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c271108894df4bed4 *d1110883c5f0e9474307008d7600fcc50808420000002400010083c70c3b7b5c761ec74500f0cc *0808c7436c03000000b8ff00000083f000894320e99a700700c747f8b4cc08088d4ff8894d088b *750483c504e9da44070089f683c50cebbb8d760083c7103b7b5c760ac7436c04000000ff63f8c7 *47f410c409088b45148947f88b450c8947fc8b450889078d47f48945148b750483c510e9954407 *009083c50ce974ffffff74cd080838cd0808fcc508080500000025000100fcc508080600000024 *0001008b460483f87d750f8b7504c7450490cd080883c504ff2683c510e935ffffff908b460889 *45008b7604c745fc9ccd080883c5fcff268d7600bccd080830cd0808fcc5080805000000250001 *008b7604c74500e8cd0808ff2683c50ce9f4fefffff4cd0808f4cd0808f4cd0808f4cd0808f4cd *0808e8cd0808f4cd0808f4cd0808fcc508080500000025000100fcc5080804000100050000000b *0001008d45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b *45008b4e08894d0089c6c745ec28ce080883c5ecff2689f6fcc5080804000100050000000b0003 *008d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec38ce08088b46048947 *f08b46088947f48b460c8947f88b45008947fc8b461089078d47ec894500c745fc28d411088b76 *1483c5f8e93a47070089f60cc6080800000200120005008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f404b61108be98d6110883c5f0e9f74207008d760083c7243b7b5c760ac7436c *09000000ff63f8c747e084ce08088b45108947e48b45148947e88b450c8947ec8b45088947f08b *45048947f4c747f8e8ce08088d47e08945148d47f88945108b750483c50ce9ab4607008d760083 *c50ce9ecfcffff6ccf080814cf0808fcc508080500000025005300fcc508080600000024005300 *8b460483f83d750f8b7504c7450488cf080883c504ff2683c510e9adfcffff908b46088945008b *7604c745fc94cf080883c5fcff268d7600b4cf0808a0cc0808fcc5080805000000250053008b76 *04c74500e0cf0808ff2683c50ce96cfcffffeccf0808eccf0808eccf0808eccf0808eccf0808e0 *cf0808eccf0808eccf0808fcc508080500000025005300fcc5080804000100050000000b005300 *8d45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745ec20d0080883c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8 *c747ec30d008088b45108947f08b45148947f48b450c8947f88b45088947fc8b450489078d47ec *894514c7451028d411088b750483c50ce95a45070089f66cd0080810cc0808fcc5080805000000 *2500530083c70c3b7b5c760ac7436c03000000ff63f8c747f8e0cb08088b46048945fc8d4ff889 *4df8bec4d11108c74500d0d0080883c5f4e90b4507008d760083c50ce980faffff0cd108080cd1 *08080cd108080cd10808d0d008080cd108080cd108080cd10808f8c50808050000002500a700f8 *c5080804000100050000000b00a7008d45e03b43547303ff63fc8b46048945fc8b46148945f08b *46108945f48b460c8945f88b45008b4e08894d0089c6c745ec40d1080883c5ecff2689f683c718 *3b7b5c760ac7436c06000000ff63f8c747ec50d108088b45108947f08b45148947f48b450c8947 *f88b45088947fc8b450489078d47ec894514c7451028d411088b750483c50ce93a44070089f683 *c50ce920f9ffffdcd108088cd10808f8c50808050000002500a700f8c50808060000002400a700 *8b460483f82c750f8b7504c74504f8d1080883c504ff2683c510e9e1f8ffff908b46088945008b *7604c745fc04d2080883c5fcff268d760024d2080844cb0808f8c50808050000002500a7008b76 *04c7450050d20808ff2683c50ce9a0f8ffff5cd208085cd208085cd208085cd208085cd2080850 *d208085cd208085cd20808f8c50808050000002500a700f8c5080804000100050000000b00a700 *8d45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745ec90d2080883c5ecff2689f6f8c5080804000100040000000b00a7008d45 *f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747eca0d208088b46048947f08b46 *088947f48b45008947f88b460c8947fc8b461089078d47ec894500c745fc28d411088b761083c5 *f8e9d242070089f60cc6080800000200120003008d45f03b43547303ff63f8c745f8d46d100889 *75fcc745f42cb51108be98d6110883c5f0e98f3e07008d760083c7203b7b5c760ac7436c080000 *00ff63f8c747e4ecd208088b450c8947e88b45108947ec8b45088947f08b45048947f4c747f850 *d308088d47e48945108d47f889450c8b750483c508e9494207009083c508e9a0f6ffffccd30808 *7cd30808f8c50808040000002500e700f8c50808050000002400e7008b460483f83d750f8b7504 *c74504e8d3080883c504ff2683c50ce961f6ffff908b46088945008b7604c745fcf4d3080883c5 *fcff268d760014d40808b4ca0808f8c50808040000002500e7008b7604c7450040d40808ff2683 *c508e920f6ffff4cd408084cd408084cd408084cd408084cd4080840d408084cd408084cd40808 *f8c50808040000002500e700f8c5080804000100040000000b00e7008d45ec3b43547303ff63fc *8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f080d4080883c5f0 *ff2683c7143b7b5c760ac7436c05000000ff63f8c747f090d408088b450c8947f48b45108947f8 *8b45088947fc8b450489078d47f0894510c7450c28d411088b750483c508e908410700c4d40808 *24ca0808f8c50808040000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f8f4c9 *08088b46048945fc8d4ff8894df8bec4d11108c7450020d5080883c5f4e9bb4007008d760083c5 *08e944f4ffff5cd508085cd508085cd508085cd5080820d508085cd508085cd508085cd50808f8 *c50808040000002500e700f8c5080804000100040000000b00e7008d45e43b43547303ff63fc8b *46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f090d5080883c5f0ff *2683c7143b7b5c760ac7436c05000000ff63f8c747f0a0d508088b450c8947f48b45108947f88b *45088947fc8b450489078d47f0894510c7450c28d411088b750483c508e9f83f070083c508e9f4 *f2ffff1cd60808d4d50808f8c50808040000002500e700f8c50808050000002400e7008b460483 *f82c750f8b7504c7450438d6080883c504ff2683c50ce9b5f2ffff908b46088945008b7604c745 *fc44d6080883c5fcff268d760064d6080858c90808f8c50808040000002500e7008b7604c74500 *90d60808ff2683c508e974f2ffff9cd608089cd608089cd608089cd608089cd6080890d608089c *d608089cd60808f8c50808040000002500e700f8c5080804000100040000000b00e7008d45ec3b *43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f0 *d0d6080883c5f0ff26f8c5080804000100030000000b00e7008d45f83b4354720883c7143b7b5c *760ac7436c05000000ff63fcc747f0e0d608088b46048947f48b45008947f88b46088947fc8b46 *0c89078d47f0894500c745fc28d411088b760c83c5f8e9a03e07000cc608080000020012000300 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e95f3a *07008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e824d708088b45088947ec8b450c *8947f08b45048947f4c747f880d708088d47e889450c8d47f88945088b750483c504e91f3e0700 *8d760083c504e988f0fffff8d70808acd70808f8c50808030000002500e700f8c5080804000000 *2400e7008b460483f83d750f8b7504c7450414d8080883c504ff2683c508e949f0ffff908b4608 *8945008b7604c745fc20d8080883c5fcff268d760040d80808c8c80808f8c50808030000002500 *e7008b7604c745006cd80808ff2683c504e908f0ffff78d8080878d8080878d8080878d8080878 *d808086cd8080878d8080878d80808f8c50808030000002500e700f8c508080400010003000000 *0b00e7008d45f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c7 *45f4acd8080883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4bcd808088b *45088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c504e9e63c07 *0089f6ecd8080838c80808f8c50808030000002500e70083c70c3b7b5c760ac7436c03000000ff *63f8c747f808c808088b46048945fc8d4ff8894df8bec4d11108c7450044d9080883c5f4e9973c *07008d760083c504e934eeffff80d9080880d9080880d9080880d9080844d9080880d9080880d9 *080880d90808f8c50808030000002500e700f8c5080804000100030000000b00e7008d45e83b43 *547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4b4d9080883c5f4 *ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4c4d908088b45088947f88b450c89 *47fc8b450489078d47f489450cc7450828d411088b750483c504e9de3b070089f683c504e9ecec *ffff38da0808f4d90808f8c50808030000002500e700f8c50808040000002400e7008b460483f8 *7b750f8b7504c7450454da080883c504ff2683c508e9adecffff908b46088945008b7604c745fc *60da080883c5fcff268d760080da08086cc70808f8c50808030000002500e7008b7604c74500ac *da0808ff2683c504e96cecffffb8da0808b8da0808b8da0808b8da0808b8da0808acda0808b8da *0808b8da0808f8c50808030000002500e700f8c5080804000100030000000b00e7008d45f03b43 *547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4ecda080883c5f4 *ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4fcda08088b45088947f88b450c89 *47fc8b450489078d47f489450cc7450828d411088b750483c504e9a63a070089f62cdb0808dcc6 *0808f8c50808030000002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f8acc60808 *8b46048945fc8d4ff8894df8bec4d11108c7450084db080883c5f4e9573a07008d760083c504e9 *98eaffffc0db0808c0db0808c0db0808c0db080884db0808c0db0808c0db0808c0db0808f8c508 *08030000002500e700f8c5080804000100030000000b00e7008d45e83b43547303ff63fc8b4604 *8945fc8b460c8945f88b45008b4e08894d0089c6c745f4f4db080883c5f4ff2689f6f8c5080800 *0000002400e70083c7103b7b5c760ac7436c04000000ff63f8c747f404dc08088b46108947f88b *460c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e99239070089f6f8c508 *08000002001200ef008d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f440 *dc080883c5f4ff2689f6f8c50808000002001800ff008d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c747ec085c100856e86921070083c4048d47ec894604c706245b1008c745 *f8d46d10088d47ec8945fcc747f890dc08088d47f88945f4c745f028121208be88d6110883c5ec *e9ec38070020d41108ecc0110828dd080800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e8f120070083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f4ecc01108be20d4110883c5f0e97534070090d4d41108 *0cc1110894dd080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e88520070083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f40cc11108bed4d4110883c5f0e90934070090d4d1110890d1110848d11108bc *d41108c0d411083cb4110814b6110810de080800000200120001008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc400d1208c7 *0700d211088d4ff8894df4bec0d4110883c5f0e9953307009018de080801000100130001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f0d811120883c5f0e9e638ff *ff89f608de080801000100130015008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec28de0808c747f880de08088b46048947fc8d47ec8945f48d *47f88945f0be48d1110883c5ece90b3707008d760000de080800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9c4271108894df4bed4d1110883c5f0e9e3300700 *8d760000de080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f818df08088d4ff8894df4bec0d4110883c5f0e97632070089 *f600de080801000100130055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8 *c745f8d46d10088975fcc747ecb8de08088b46048947f0c747f854df08088d47ec8945f48d47f8 *8945f0be48d1110883c5ece9233607008d760000de080800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9d4271108894df4bed4d1110883c5f0e9fb2f07008d76 *0000de080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f800e008088d4ff8894df4bec0d4110883c5f0e98e31070089f600 *de080801000100130055008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747eca0df08088b46048947f0c747f83ce008088d47ec8945f48d47f88945 *f0be48d1110883c5ece93b3507008d76000100000024000000c74500d81112088b760483c5fce9 *1e35070089f614de080801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be3cb41108c745f0e4e0080883c5f0ff2600de080802000000150075008d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec88e00808 *8b46088947f0c747f804e108088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ec *e9813407009000de080800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9d8271108894df4bed4d1110883c5f0e95b2e07008d760000de08080000020012001100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *a0e108088d4ff8894df4bec0d4110883c5f0e9ee2f070089f600de080802000000150075008d45 *ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec3ce1 *08088b46048947f08b46088947f4c747f8dce108088d47ec8945f48d47f88945f0be48d1110883 *c5ece9953307009000de080800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9ec271108894df4bed4d1110883c5f0e96f2d07008d760000de0808000002001200 *11008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f88ce208088d4ff8894df4bec0d4110883c5f0e9022f070089f600de08080200000015007500 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *28e208088b46048947f08b46088947f4c747f8c8e208088d47ec8945f48d47f88945f0be48d111 *0883c5ece9a93207009001000000240000008b4504894500c74504301212088b761483c5fce988 *32070004de080801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4be90d11108c745f074e3080883c5f0ff2600de08084200000024007f0083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec14e308088b46048947f08b46088947f4c747f898e308088b45 *048947fc8d47ec8945088d47f8894504bebcd41108e9fc31070000de08080b0002000000000011 *007f008d45fc3b43547308be30c11108ff63fc8b7504c745fcd0e3080883c5fcff269030c11108 *38c1110848e4080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8d119070083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f438c11108be30c1110883c5f0e9552d070090ccd4110840c11108b4e4080800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e86519070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f440 *c11108beccd4110883c5f0e9e92c070090d4d4110860c1110820e5080800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f918070083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f460c11108bed4d4110883 *c5f0e97d2c0700901cd5110860c111088ce5080800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88d18070083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f460c11108be1cd5110883c5f0e9112c070090d4 *d1110890d1110848d11108bcd41108c0d411082cb4110814b6110808e608080000020012000100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *7cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e99d2b07009010e6 *080801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745 *f0d811120883c5f0e9ee30ffff89f600e6080801000100130015008d45ec3b4354720883c7183b *7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec20e60808c747f878e608088b *46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece9132f07008d7600f8e508080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f8271108894df4be *d4d1110883c5f0e9eb2807008d7600f8e5080800000200120011008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f810e708088d4ff8894df4bec0 *d4110883c5f0e97e2a070089f6f8e5080801000100130055008d45ec3b4354720883c7183b7b5c *760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb0e608088b46048947f0c747f84c *e708088d47ec8945f48d47f88945f0be48d1110883c5ece92b2e07008d7600f8e5080800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b908281108894df4bed4d1 *110883c5f0e9032807008d7600f8e5080800000200120011008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f8e708088d4ff8894df4bec0d411 *0883c5f0e99629070089f6f8e5080801000100130055008d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec98e708088b46048947f0c747f834e808 *088d47ec8945f48d47f88945f0be48d1110883c5ece9432d07008d76000100000024000000c745 *00d81112088b760483c5fce9262d070089f60ce6080801000100130001008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0dce8080883c5f0ff26f8e50808 *02000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d *10088975fcc747ec80e808088b46088947f0c747f8fce808088b46048947fc8d47ec8945f48d47 *f88945f0be48d1110883c5ece9892c070090f8e5080800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b90c281108894df4bed4d1110883c5f0e9632607008d7600 *f8e5080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f898e908088d4ff8894df4bec0d4110883c5f0e9f627070089f6f8e5 *080802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8 *d46d10088975fcc747ec34e908088b46048947f08b46088947f4c747f8d4e908088d47ec8945f4 *8d47f88945f0be48d1110883c5ece99d2b070090f8e5080800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b91c281108894df4bed4d1110883c5f0e9772507008d *7600f8e5080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f884ea08088d4ff8894df4bec0d4110883c5f0e90a27070089f6 *f8e5080802000000150075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ec20ea08088b46048947f08b46088947f4c747f8c0ea08088d47ec89 *45f48d47f88945f0be48d1110883c5ece9b12a0700900100000024000000c74500d81112088b76 *0483c5fce9962a070089f60ce6080801000100130001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be2cb41108c745f06ceb080883c5f0ff26f8e5080803000000120075 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec0ceb08088b46088947f08b460c8947f4c747f88ceb08088b46048947fc8d47ec8945f48d47f8 *8945f0be48d1110883c5ece9f32907008d7600f8e5080800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b920281108894df4bed4d1110883c5f0e9cb2307008d76 *00f8e5080800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f830ec08088d4ff8894df4bec0d4110883c5f0e95e25070089f6f8 *e5080803000000120075008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745 *f8d46d10088975fcc747e8c4eb08088b46048947ec8b46088947f08b460c8947f4c747f86cec08 *088d47e88945f48d47f88945f0be48d1110883c5ece9ff2807008d7600f8e50808000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c281108894df4bed4d11108 *83c5f0e9d72207008d7600f8e5080800000200120011008d45f03b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c745f8d46d10088975fcc747f824ed08088d4ff8894df4bec0d4110883 *c5f0e96a24070089f6f8e5080803000000120075008d45ec3b4354720883c71c3b7b5c760ac743 *6c07000000ff63f8c745f8d46d10088975fcc747e8b8ec08088b46048947ec8b46088947f08b46 *0c8947f4c747f860ed08088d47e88945f48d47f88945f0be48d1110883c5ece90b2807008d7600 *01000000240000008b4504894500c74504301212088b761483c5fce9e8270700fce50808010001 *00130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745 *f014ee080883c5f0ff26f8e508084200000024007f0083c71c3b7b5c760ac7436c07000000ff63 *f8c747e8aced08088b46048947ec8b46088947f08b460c8947f4c747f838ee08088b45048947fc *8d47e88945088d47f8894504bebcd41108e95627070089f6f8e508080b0002000000000011007f *008d45fc3b43547308be94c11108ff63fc8b7504c745fc70ee080883c5fcff269094c111089cc1 *1108f0ee080800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8290f070083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f49cc11108be94c1110883c5f0e9ad22070090ccd41108a4c111085cef0808000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8bd0e070083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4c111 *08beccd4110883c5f0e94122070090ccd111080cc01108c8ef080800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8510e070083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f40cc01108beccd1110883c5f0 *e9d521070090bcd11108fca7110898c411085cb511087cb511088cb51108ecbf1108c4c1110802 *000000240000008b45088b4d04894d088945048b7608e9a425070050f008080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4bec4c11108c7 *45ec5cf0080883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e94825 *07004cf0080802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0889 *4df08b56048955f4beecbf1108c745ecb8f0080883c5ecff2689f602000000240000008b45088b *4d04894d088945048b7608e9ec24070040f0080802000000150001008d45ec3b43547303ff63f8 *c745f8d46d10088975fc8b4e08894df08b56048955f4be5cb51108c745ec14f1080883c5ecff26 *89f602000000240000008b45088b4d04894d088945048b7608e99024070048f008080200000015 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb5 *1108c745ec70f1080883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608 *e93424070048f0080802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e08894df08b56048955f4be8cb51108c745ecccf1080883c5ecff2689f602000000240000008b *45088b4d04894d088945048b7608e9d823070048f0080802000000150001008d45ec3b43547303 *ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108c745ec28f2080883c5 *ecff2689f602000000240000008b45088b4d04894d088945048b7608e97c23070048f008080200 *0000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4 *be8cb51108c745ec84f2080883c5ecff2689f602000000240000008b45088b4d04894d08894504 *8b7608e92023070048f0080802000000150001008d45ec3b43547303ff63f8c745f8d46d100889 *75fc8b4e08894df08b56048955f4be8cb51108c745ece0f2080883c5ecff2689f6020000002400 *00008b45088b4d04894d088945048b7608e9c422070044f0080802000000150001008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be7cb51108c745ec3cf308 *0883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e96822070048f008 *0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be8cb51108c745ec98f3080883c5ecff2689f602000000240000008b45088b4d04894d08 *8945048b7608e90c22070048f0080802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be8cb51108c745ecf4f3080883c5ecff2689f6020000 *00240000008b45088b4d04894d088945048b7608e9b021070048f0080802000000150001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108c745ec *50f4080883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e954210700 *48f0080802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df0 *8b56048955f4be8cb51108c745ecacf4080883c5ecff2689f602000000240000008b45088b4d04 *894d088945048b7608e9f820070048f0080802000000150001008d45ec3b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df08b56048955f4be8cb51108c745ec08f5080883c5ecff2689f6 *02000000240000008b45088b4d04894d088945048b7608e99c20070038f0080802000000150001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4befca71108 *c745ec64f5080883c5ecff2689f602000000240000008b45088b4d04894d088945048b7608e940 *2007003cf0080802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08 *894df08b56048955f4be98c41108c745ecc0f5080883c5ecff2689f634f0080804000000120007 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec84f508088b460c8947f08b46108947f4c747f8e0f508088b46048947fc8b460889078d47ec89 *45f48d47f88945f0bebcd1110883c5ece9921f070089f634f0080806000000120027008d45ec3b *4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e428f50808 *8b46148947e88b46188947ecc747f020f608088b46048947f48b46088947f88b460c8947fc8b46 *1089078d47e48945f48d47f08945f0bebcd1110883c5ece9161f070089f634f008080800000012 *0027008d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fc *c747dcccf408088b461c8947e08b46208947e4c747e890f608088b46048947ec8b46088947f08b *460c8947f48b46108947f88b46148947fc8b461889078d47dc8945f48d47e88945f0bebcd11108 *83c5ece98e1e070089f634f008080a000000120027008d45ec3b4354720883c7303b7b5c760ac7 *436c0c000000ff63f8c745f8d46d10088975fcc747d470f408088b46248947d88b46288947dcc7 *47e00cf708088b46048947e48b46088947e88b460c8947ec8b46108947f08b46148947f48b4618 *8947f88b461c8947fc8b462089078d47d48945f48d47e08945f0bebcd1110883c5ece9fa1d0700 *89f634f008080c000000120027008d45ec3b4354720883c7383b7b5c760ac7436c0e000000ff63 *f8c745f8d46d10088975fcc747cc14f408088b462c8947d08b46308947d4c747d894f708088b46 *048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b461c8947 *f48b46208947f88b46248947fc8b462889078d47cc8945f48d47d88945f0bebcd1110883c5ece9 *5a1d070089f634f008080e000000120027008d45ec3b4354720883c7403b7b5c760ac7436c1000 *0000ff63f8c745f8d46d10088975fcc747c4b8f308088b46348947c88b46388947ccc747d028f8 *08088b46048947d48b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b *461c8947ec8b46208947f08b46248947f48b46288947f88b462c8947fc8b463089078d47c48945 *f48d47d08945f0bebcd1110883c5ece9ae1c070089f634f0080810000000120037008d45ec3b43 *54720883c7483b7b5c760ac7436c12000000ff63f8c745f8d46d10088975fcc747bc5cf308088b *463c8947c08b46408947c4c747c8c8f808088b46048947cc8b46088947d08b460c8947d48b4610 *8947d88b46148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f0 *8b462c8947f48b46308947f88b46348947fc8b463889078d47bc8945f48d47c88945f0bebcd111 *0883c5ece9f61b070089f634f0080812000000120037008d45ec3b4354720883c7503b7b5c760a *c7436c14000000ff63f8c745f8d46d10088975fcc747b400f308088b46448947b88b46488947bc *c747c074f908088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46 *188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947 *f08b46348947f48b46388947f88b463c8947fc8b464089078d47b48945f48d47c08945f0bebcd1 *110883c5ece9321b070089f634f0080814000000120037008d45ec3b4354720883c7583b7b5c76 *0ac7436c16000000ff63f8c745f8d46d10088975fcc747aca4f208088b464c8947b08b46508947 *b4c747b82cfa08088b46048947bc8b46088947c08b460c8947c48b46108947c88b46148947cc8b *46188947d08b461c8947d48b46208947d88b46248947dc8b46288947e08b462c8947e48b463089 *47e88b46348947ec8b46388947f08b463c8947f48b46408947f88b46448947fc8b464889078d47 *ac8945f48d47b88945f0bebcd1110883c5ece9621a070089f634f0080816000000120037008d45 *ec3b4354720883c7603b7b5c760ac7436c18000000ff63f8c745f8d46d10088975fcc747a448f2 *08088b46548947a88b46588947acc747b0f0fa08088b46048947b48b46088947b88b460c8947bc *8b46108947c08b46148947c48b46188947c88b461c8947cc8b46208947d08b46248947d48b4628 *8947d88b462c8947dc8b46308947e08b46348947e48b46388947e88b463c8947ec8b46408947f0 *8b46448947f48b46488947f88b464c8947fc8b465089078d47a48945f48d47b08945f0bebcd111 *0883c5ece98619070089f634f0080818000000120037008d45ec3b4354720883c7683b7b5c760a *c7436c1a000000ff63f8c745f8d46d10088975fcc7479cecf108088b465c8947a08b46608947a4 *c747a8c0fb08088b46048947ac8b46088947b08b460c8947b48b46108947b88b46148947bc8b46 *188947c08b461c8947c48b46208947c88b46248947cc8b46288947d08b462c8947d48b46308947 *d88b46348947dc8b46388947e08b463c8947e48b46408947e88b46448947ec8b46488947f08b46 *4c8947f48b46508947f88b46548947fc8b465889078d479c8945f48d47a88945f0bebcd1110883 *c5ece99e18070089f634f008081a000000120037008d45ec3b4354720883c7703b7b5c760ac743 *6c1c000000ff63f8c745f8d46d10088975fcc7479490f108088b46648947988b466889479cc747 *a09cfc08088b46048947a48b46088947a88b460c8947ac8b46108947b08b46148947b48b461889 *47b88b461c8947bc8b46208947c08b46248947c48b46288947c88b462c8947cc8b46308947d08b *46348947d48b46388947d88b463c8947dc8b46408947e08b46448947e48b46488947e88b464c89 *47ec8b46508947f08b46548947f48b46588947f88b465c8947fc8b466089078d47948945f48d47 *a08945f0bebcd1110883c5ece9aa17070089f634f008081c00000012003f008d45ec3b43547208 *83c7783b7b5c760ac7436c1e000000ff63f8c745f8d46d10088975fcc7478c34f108088b466c89 *47908b4670894794c7479884fd08088b460489479c8b46088947a08b460c8947a48b46108947a8 *8b46148947ac8b46188947b08b461c8947b48b46208947b88b46248947bc8b46288947c08b462c *8947c48b46308947c88b46348947cc8b46388947d08b463c8947d48b46408947d88b46448947dc *8b46488947e08b464c8947e48b46508947e88b46548947ec8b46588947f08b465c8947f48b4660 *8947f88b46648947fc8b466889078d478c8945f48d47988945f0bebcd1110883c5ece9aa160700 *89f634f008081e00000012007f008d45ec3b4354720b81c7800000003b7b5c760ac7436c200000 *00ff63f8c745f8d46d10088975fcc74784d8f008088b46748947888b467889478cc7479078fe08 *088b46048947948b46088947988b460c89479c8b46108947a08b46148947a48b46188947a88b46 *1c8947ac8b46208947b08b46248947b48b46288947b88b462c8947bc8b46308947c08b46348947 *c48b46388947c88b463c8947cc8b46408947d08b46448947d48b46488947d88b464c8947dc8b46 *508947e08b46548947e48b46588947e88b465c8947ec8b46608947f08b46648947f48b46688947 *f88b466c8947fc8b467089078d47848945f48d47908945f0bebcd1110883c5ece99b1507008d76 *0034f00808100000002400ff0081c7880000003b7b5c760ac7436c22000000ff63f8c7877cffff *ff7cf008088b45048947808b4640894784c7478878ff08088b454089478c8b46048947908b453c *8947948b46088947988b453889479c8b460c8947a08b45348947a48b46108947a88b45308947ac *8b46148947b08b452c8947b48b46188947b88b45288947bc8b461c8947c08b45248947c48b4620 *8947c88b45208947cc8b46248947d08b451c8947d48b46288947d88b45188947dc8b462c8947e0 *8b45148947e48b46308947e88b45108947ec8b46348947f08b450c8947f48b46388947f88b4508 *8947fc8b463c89078d877cffffff8945408d478889453cbebcd1110883c538e98b1407008d7600 *34f00808010000002400ff008b46408945c88b463c8945cc8b46388945d08b46348945d48b4630 *8945d88b462c8945dc8b46288945e08b46248945e48b46208945e88b461c8945ec8b46188945f0 *8b46148945f48b46108945f88b460c8945fc8b46088945008b45048b4e04894d0489c6c745c488 *00090883c5c4ff268d760034f008080b000200000000001100ff008d45c43b43547308bed4c111 *08ff63fc8b7500c7450098010908ff2654d11108d4c111083c02090802000000150001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0ebaa89f63802 *09080b000200000000001100030083c70c3b7b5c760fbedcc11108c7436c03000000ff63fcc747 *f84c0209088b45008947fc8b4d04890f8d57f8895504be54d11108e94b0f07008d760048d41108 *f4c1110844d41108f4c111083cd41108f4c11108c002090800000200180003008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e849fb060083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcc745f4f4c11108be48d4110883c5f0e9cd0e *070090c802090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c747f8085c100856e8e5fa060083c4048d47f8894604c706245b1008c745f8d46d10088d47 *f88945fcc745f4f4c11108be44d4110883c5f0e9690e070090d002090800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e881fa060083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4c11108be3cd4110883 *c5f0e9050e07009084d41108f4c111080404090800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e815fa060083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f4f4c11108be84d4110883c5f0e9990d0700903c *c2110800000000240000008b760ce9180307007004090800000200180001008d45f43b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e89df9060083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcbe3cc21108c745f47c04090883c5f4ff26c4d1 *1108d4d1110828d41108a8d6110888d6110898d611088cb41108bcb411082cb511083cb511084c *b51108dcc011084cc21108e804090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b93c281108894df4bed4d1110883c5f0e9d70a07008d7600e8040908420000 *002400010083c70c3b7b5c761ec7450060050908c7436c03000000b8ff00000083f000894320e9 *2a380700c747f8240509088d4ff8894d088b750483c504e96a0c070089f6e80409080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b994281108894df4bed4d111 *0883c5f0e94f0a07008d760083c504e97cffffffe804090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9a8281108894df4bed4d1110883c5f0e90b0a07008d *7600e8040908420000002400010083c70c3b7b5c761ec745002c060908c7436c03000000b8ff00 *000083f000894320e95e370700c747f8f00509088d4ff8894d088b750483c504e99e0b070089f6 *83c504ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b900291108894df4bed4d1110883c5f0e97b0907008d7600e8040908420000002400 *010083c70c3b7b5c761ec74500bc060908c7436c03000000b8ff00000083f000894320e9ce3607 *00c747f8800609088d4ff8894d088b750483c504e90e0b070089f6e80409080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b958291108894df4bed4d1110883c5 *f0e9f30807008d760083c504e97cffffffe804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b960291108894df4bed4d1110883c5f0e9af0807008d7600e8 *040908420000002400010083c70c3b7b5c761ec7450088070908c7436c03000000b8ff00000083 *f000894320e902360700c747f84c0709088d4ff8894d088b750483c504e9420a070089f683c504 *ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9b8291108894df4bed4d1110883c5f0e91f0807008d7600e8040908420000002400010083 *c70c3b7b5c761ec7450018080908c7436c03000000b8ff00000083f000894320e972350700c747 *f8dc0709088d4ff8894d088b750483c504e9b209070089f683c508ebbb8d7600e8040908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9102a1108894df4bed4 *d1110883c5f0e98f0707008d7600e8040908420000002400010083c70c3b7b5c761ec74500a808 *0908c7436c03000000b8ff00000083f000894320e9e2340700c747f86c0809088d4ff8894d088b *750483c504e92209070089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9682a1108894df4bed4d1110883c5f0e9070707008d760083c508e97cff *ffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *702a1108894df4bed4d1110883c5f0e9c30607008d7600e8040908420000002400010083c70c3b *7b5c761ec7450074090908c7436c03000000b8ff00000083f000894320e916340700c747f83809 *09088d4ff8894d088b750483c504e95608070089f683c508ebbb8d7600e8040908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c82a1108894df4bed4d11108 *83c5f0e9330607008d7600e8040908420000002400010083c70c3b7b5c761ec74500040a0908c7 *436c03000000b8ff00000083f000894320e986330700c747f8c80909088d4ff8894d088b750483 *c504e9c607070089f683c50cebbb8d7600e804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9202b1108894df4bed4d1110883c5f0e9a30507008d7600e8 *040908420000002400010083c70c3b7b5c761ec74500940a0908c7436c03000000b8ff00000083 *f000894320e9f6320700c747f8580a09088d4ff8894d088b750483c504e93607070089f6e80409 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9782b110889 *4df4bed4d1110883c5f0e91b0507008d760083c50ce97cffffffe804090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9842b1108894df4bed4d1110883c5f0 *e9d70407008d7600e8040908420000002400010083c70c3b7b5c761ec74500600b0908c7436c03 *000000b8ff00000083f000894320e92a320700c747f8240b09088d4ff8894d088b750483c504e9 *6a06070089f683c50cebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9dc2b1108894df4bed4d1110883c5f0e9470407008d7600e8040908 *420000002400010083c70c3b7b5c761ec74500f00b0908c7436c03000000b8ff00000083f00089 *4320e99a310700c747f8b40b09088d4ff8894d088b750483c504e9da05070089f683c510ebbb8d *7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *342c1108894df4bed4d1110883c5f0e9b70307008d7600e8040908420000002400010083c70c3b *7b5c761ec74500800c0908c7436c03000000b8ff00000083f000894320e90a310700c747f8440c *09088d4ff8894d088b750483c504e94a05070089f6e804090800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b98c2c1108894df4bed4d1110883c5f0e92f030700 *8d760083c510e97cffffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9982c1108894df4bed4d1110883c5f0e9eb0207008d7600e8040908420000 *002400010083c70c3b7b5c761ec745004c0d0908c7436c03000000b8ff00000083f000894320e9 *3e300700c747f8100d09088d4ff8894d088b750483c504e97e04070089f683c510ebbb8d7600e8 *04090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f02c11 *08894df4bed4d1110883c5f0e95b0207008d7600e8040908420000002400010083c70c3b7b5c76 *1ec74500dc0d0908c7436c03000000b8ff00000083f000894320e9ae2f0700c747f8a00d09088d *4ff8894d088b750483c504e9ee03070089f683c514ebbb8d7600e804090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9482d1108894df4bed4d1110883c5f0 *e9cb0107008d7600e8040908420000002400010083c70c3b7b5c761ec745006c0e0908c7436c03 *000000b8ff00000083f000894320e91e2f0700c747f8300e09088d4ff8894d088b750483c504e9 *5e03070089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9a02d1108894df4bed4d1110883c5f0e9430107008d760083c514e97cffffffe8040908 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ac2d1108894d *f4bed4d1110883c5f0e9ff0007008d7600e8040908420000002400010083c70c3b7b5c761ec745 *00380f0908c7436c03000000b8ff00000083f000894320e9522e0700c747f8fc0e09088d4ff889 *4d088b750483c504e99202070089f683c514ebbb8d7600e804090800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9042e1108894df4bed4d1110883c5f0e96f00 *07008d7600e8040908420000002400010083c70c3b7b5c761ec74500c80f0908c7436c03000000 *b8ff00000083f000894320e9c22d0700c747f88c0f09088d4ff8894d088b750483c504e9020207 *0089f683c518ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b95c2e1108894df4bed4d1110883c5f0e9dfff06008d7600e8040908420000 *002400010083c70c3b7b5c761ec7450058100908c7436c03000000b8ff00000083f000894320e9 *322d0700c747f81c1009088d4ff8894d088b750483c504e97201070089f6e80409080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b42e1108894df4bed4d111 *0883c5f0e957ff06008d760083c518e97cffffffe804090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9bc2e1108894df4bed4d1110883c5f0e913ff06008d *7600e8040908420000002400010083c70c3b7b5c761ec7450024110908c7436c03000000b8ff00 *000083f000894320e9662c0700c747f8e81009088d4ff8894d088b750483c504e9a600070089f6 *83c518ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9142f1108894df4bed4d1110883c5f0e983fe06008d7600e8040908420000002400 *010083c70c3b7b5c761ec74500b4110908c7436c03000000b8ff00000083f000894320e9d62b07 *00c747f8781109088d4ff8894d088b750483c504e91600070089f683c51cebbb8d7600e8040908 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c2f1108894d *f4bed4d1110883c5f0e9f3fd06008d7600e8040908420000002400010083c70c3b7b5c761ec745 *0044120908c7436c03000000b8ff00000083f000894320e9462b0700c747f8081209088d4ff889 *4d088b750483c504e986ff060089f6e804090800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9c42f1108894df4bed4d1110883c5f0e96bfd06008d760083c51c *e97cffffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9d02f1108894df4bed4d1110883c5f0e927fd06008d7600e8040908420000002400010083 *c70c3b7b5c761ec7450010130908c7436c03000000b8ff00000083f000894320e97a2a0700c747 *f8d41209088d4ff8894d088b750483c504e9bafe060089f683c51cebbb8d7600e8040908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b928301108894df4bed4 *d1110883c5f0e997fc06008d7600e8040908420000002400010083c70c3b7b5c761ec74500a013 *0908c7436c03000000b8ff00000083f000894320e9ea290700c747f8641309088d4ff8894d088b *750483c504e92afe060089f683c520ebbb8d7600e804090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b980301108894df4bed4d1110883c5f0e907fc06008d *7600e8040908420000002400010083c70c3b7b5c761ec7450030140908c7436c03000000b8ff00 *000083f000894320e95a290700c747f8f41309088d4ff8894d088b750483c504e99afd060089f6 *e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d830 *1108894df4bed4d1110883c5f0e97ffb06008d760083c520e97cffffffe8040908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e4301108894df4bed4d11108 *83c5f0e93bfb06008d7600e8040908420000002400010083c70c3b7b5c761ec74500fc140908c7 *436c03000000b8ff00000083f000894320e98e280700c747f8c01409088d4ff8894d088b750483 *c504e9cefc060089f683c520ebbb8d7600e804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b93c311108894df4bed4d1110883c5f0e9abfa06008d7600e8 *040908420000002400010083c70c3b7b5c761ec745008c150908c7436c03000000b8ff00000083 *f000894320e9fe270700c747f8501509088d4ff8894d088b750483c504e93efc060089f683c524 *ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b994311108894df4bed4d1110883c5f0e91bfa06008d7600e8040908420000002400010083 *c70c3b7b5c761ec745001c160908c7436c03000000b8ff00000083f000894320e96e270700c747 *f8e01509088d4ff8894d088b750483c504e9aefb060089f6e804090800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9ec311108894df4bed4d1110883c5f0e993 *f906008d760083c524e97cffffffe804090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9f8311108894df4bed4d1110883c5f0e94ff906008d7600e8040908 *420000002400010083c70c3b7b5c761ec74500e8160908c7436c03000000b8ff00000083f00089 *4320e9a2260700c747f8ac1609088d4ff8894d088b750483c504e9e2fa060089f683c524ebbb8d *7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *50321108894df4bed4d1110883c5f0e9bff806008d7600e8040908420000002400010083c70c3b *7b5c761ec7450078170908c7436c03000000b8ff00000083f000894320e912260700c747f83c17 *09088d4ff8894d088b750483c504e952fa060089f683c528ebbb8d7600e8040908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8321108894df4bed4d11108 *83c5f0e92ff806008d7600e8040908420000002400010083c70c3b7b5c761ec7450008180908c7 *436c03000000b8ff00000083f000894320e982250700c747f8cc1709088d4ff8894d088b750483 *c504e9c2f9060089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b900331108894df4bed4d1110883c5f0e9a7f706008d760083c528e97cffffffe8 *04090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9083311 *08894df4bed4d1110883c5f0e963f706008d7600e8040908420000002400010083c70c3b7b5c76 *1ec74500d4180908c7436c03000000b8ff00000083f000894320e9b6240700c747f8981809088d *4ff8894d088b750483c504e9f6f8060089f683c528ebbb8d7600e804090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b960331108894df4bed4d1110883c5f0 *e9d3f606008d7600e8040908420000002400010083c70c3b7b5c761ec7450064190908c7436c03 *000000b8ff00000083f000894320e926240700c747f8281909088d4ff8894d088b750483c504e9 *66f8060089f683c52cebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9b8331108894df4bed4d1110883c5f0e943f606008d7600e8040908 *420000002400010083c70c3b7b5c761ec74500f4190908c7436c03000000b8ff00000083f00089 *4320e996230700c747f8b81909088d4ff8894d088b750483c504e9d6f7060089f6e80409080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b910341108894df4be *d4d1110883c5f0e9bbf506008d760083c52ce97cffffffe804090800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b91c341108894df4bed4d1110883c5f0e977f5 *06008d7600e8040908420000002400010083c70c3b7b5c761ec74500c01a0908c7436c03000000 *b8ff00000083f000894320e9ca220700c747f8841a09088d4ff8894d088b750483c504e90af706 *0089f683c52cebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b974341108894df4bed4d1110883c5f0e9e7f406008d7600e8040908420000 *002400010083c70c3b7b5c761ec74500501b0908c7436c03000000b8ff00000083f000894320e9 *3a220700c747f8141b09088d4ff8894d088b750483c504e97af6060089f683c530ebbb8d7600e8 *04090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc3411 *08894df4bed4d1110883c5f0e957f406008d7600e8040908420000002400010083c70c3b7b5c76 *1ec74500e01b0908c7436c03000000b8ff00000083f000894320e9aa210700c747f8a41b09088d *4ff8894d088b750483c504e9eaf5060089f6e804090800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b924351108894df4bed4d1110883c5f0e9cff306008d7600 *83c530e97cffffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b930351108894df4bed4d1110883c5f0e98bf306008d7600e8040908420000002400 *010083c70c3b7b5c761ec74500ac1c0908c7436c03000000b8ff00000083f000894320e9de2007 *00c747f8701c09088d4ff8894d088b750483c504e91ef5060089f683c530ebbb8d7600e8040908 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b988351108894d *f4bed4d1110883c5f0e9fbf206008d7600e8040908420000002400010083c70c3b7b5c761ec745 *003c1d0908c7436c03000000b8ff00000083f000894320e94e200700c747f8001d09088d4ff889 *4d088b750483c504e98ef4060089f683c534ebbb8d7600e804090800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9e0351108894df4bed4d1110883c5f0e96bf2 *06008d7600e8040908420000002400010083c70c3b7b5c761ec74500cc1d0908c7436c03000000 *b8ff00000083f000894320e9be1f0700c747f8901d09088d4ff8894d088b750483c504e9fef306 *0089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b938361108894df4bed4d1110883c5f0e9e3f106008d760083c534e97cffffffe8040908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b944361108894df4bed4 *d1110883c5f0e99ff106008d7600e8040908420000002400010083c70c3b7b5c761ec74500981e *0908c7436c03000000b8ff00000083f000894320e9f21e0700c747f85c1e09088d4ff8894d088b *750483c504e932f3060089f683c534ebbb8d7600e804090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b99c361108894df4bed4d1110883c5f0e90ff106008d *7600e8040908420000002400010083c70c3b7b5c761ec74500281f0908c7436c03000000b8ff00 *000083f000894320e9621e0700c747f8ec1e09088d4ff8894d088b750483c504e9a2f2060089f6 *83c538ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9f4361108894df4bed4d1110883c5f0e97ff006008d7600e8040908420000002400 *010083c70c3b7b5c761ec74500b81f0908c7436c03000000b8ff00000083f000894320e9d21d07 *00c747f87c1f09088d4ff8894d088b750483c504e912f2060089f6e80409080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94c371108894df4bed4d1110883c5 *f0e9f7ef06008d760083c538e97cffffffe804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b95c371108894df4bed4d1110883c5f0e9b3ef06008d7600e8 *040908420000002400010083c70c3b7b5c761ec7450084200908c7436c03000000b8ff00000083 *f000894320e9061d0700c747f8482009088d4ff8894d088b750483c504e946f1060089f683c538 *ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9b4371108894df4bed4d1110883c5f0e923ef06008d7600e8040908420000002400010083 *c70c3b7b5c761ec7450014210908c7436c03000000b8ff00000083f000894320e9761c0700c747 *f8d82009088d4ff8894d088b750483c504e9b6f0060089f683c53cebbb8d7600e8040908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90c381108894df4bed4 *d1110883c5f0e993ee06008d7600e8040908420000002400010083c70c3b7b5c761ec74500a421 *0908c7436c03000000b8ff00000083f000894320e9e61b0700c747f8682109088d4ff8894d088b *750483c504e926f0060089f6e804090800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b964381108894df4bed4d1110883c5f0e90bee06008d760083c53ce97cff *ffffe804090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *6c381108894df4bed4d1110883c5f0e9c7ed06008d7600e8040908420000002400010083c70c3b *7b5c761ec7450070220908c7436c03000000b8ff00000083f000894320e91a1b0700c747f83422 *09088d4ff8894d088b750483c504e95aef060089f683c53cebbb8d7600e8040908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c4381108894df4bed4d11108 *83c5f0e937ed06008d7600e8040908420000002400010083c70c3b7b5c761ec7450000230908c7 *436c03000000b8ff00000083f000894320e98a1a0700c747f8c42209088d4ff8894d088b750483 *c504e9caee060089f683c540ebbb8d7600e804090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b91c391108894df4bed4d1110883c5f0e9a7ec06008d7600e8 *040908420000002400010083c70c3b7b5c761ec7450090230908c7436c03000000b8ff00000083 *f000894320e9fa190700c747f8542309088d4ff8894d088b750483c504e93aee060089f6e80409 *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97439110889 *4df4bed4d1110883c5f0e91fec06008d760083c540e97cffffffe804090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980391108894df4bed4d1110883c5f0 *e9dbeb06008d7600e8040908420000002400010083c70c3b7b5c761ec745005c240908c7436c03 *000000b8ff00000083f000894320e92e190700c747f8202409088d4ff8894d088b750483c504e9 *6eed060089f683c540ebbb8d7600e804090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9d8391108894df4bed4d1110883c5f0e94beb06008d7600e8040908 *420000002400010083c70c3b7b5c761ec74500ec240908c7436c03000000b8ff00000083f00089 *4320e99e180700c747f8b02409088d4ff8894d088b750483c504e9deec060089f683c540ebbb8d *760083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b45488947c48b45408947c8 *8b453c8947cc8b45388947d08b45348947d48b45308947d88b452c8947dc8b45288947e08b4524 *8947e48b45208947e88b451c8947ec8b45188947f08b45148947f48b45108947f88b450c8947fc *8b450889078d47c08945488b750483c544e94bec06008d760083c540e924ffffffc02509083425 *0908e80409081200000025000100e804090813000000240001008b460483f87d750f8b7504c745 *04dc25090883c504ff2683c544e9e5feffff908b46088945008b7604c745fce825090883c5fcff *268d7600082609082c250908e804090812000000250001008b7604c7450034260908ff2683c540 *e9a4feffff4026090840260908402609084026090840260908342609084026090840260908e804 *09081200000025000100e804090804000100120000000b0001008d45b43b43547303ff63fc8b46 *048945fc8b46488945bc8b46448945c08b46408945c48b463c8945c88b46388945cc8b46348945 *d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46 *188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745b8742609 *0883c5b8ff26e804090804000100120000000b0003008d45f83b4354720883c74c3b7b5c760ac7 *436c13000000ff63fcc747b8842609088b46048947bc8b46088947c08b460c8947c48b46108947 *c88b46148947cc8b46188947d08b461c8947d48b46208947d88b46248947dc8b46288947e08b46 *2c8947e48b46308947e88b46348947ec8b46388947f08b463c8947f48b46408947f88b45008947 *fc8b464489078d47b8894500c745fc28d411088b764883c5f8e954ee0600f80409080000020012 *0081008d45f03b43547303ff63f8c745f8d46d10088975fcc745f44cc21108be98d6110883c5f0 *e913ea06008d760083c7583b7b5c760ac7436c16000000ff63f8c747ac1c2709088b45448947b0 *8b45488947b48b45408947b88b453c8947bc8b45388947c08b45348947c48b45308947c88b452c *8947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f8cc2709088d47ac8945488d47 *f88945448b750483c540e979ed06009083c540e9b8fbffff9c280908f8270908e8040908120000 *0025001308e804090813000000240013088b460483f83d750f8b7504c74504b828090883c504ff *2683c544e979fbffff908b46088945008b7604c745fcc428090883c5fcff268d7600e42809089c *240908e804090812000000250013088b7604c7450010290908ff2683c540e938fbffff1c290908 *1c2909081c2909081c2909081c290908102909081c2909081c290908e804090812000000250013 *08e804090804000100120000000b0013088d45b43b43547303ff63fc8b46048945fc8b46488945 *bc8b46448945c08b46408945c48b463c8945c88b46388945cc8b46348945d08b46308945d48b46 *2c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945 *f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745b85029090883c5b8ff2683c74c *3b7b5c760ac7436c13000000ff63f8c747b8602909088b45448947bc8b45488947c08b45408947 *c48b453c8947c88b45388947cc8b45348947d08b45308947d48b452c8947d88b45288947dc8b45 *248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947 *f88b45088947fc8b450489078d47b8894548c7454428d411088b750483c540e990eb0600e82909 *080c240908e8040908120000002500130883c70c3b7b5c760ac7436c03000000ff63f8c747f8dc *2309088b46048945fc8d4ff8894df8bec4d11108c74500982a090883c5f4e943eb06008d760083 *c540e9b4f8ffffd42a0908d42a0908d42a0908d42a0908982a0908d42a0908d42a0908d42a0908 *e40409081200000025002710e404090804000100120000000b0027108d45ac3b43547303ff63fc *8b46048945fc8b46488945bc8b46448945c08b46408945c48b463c8945c88b46388945cc8b4634 *8945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e8 *8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745b808 *2b090883c5b8ff2683c74c3b7b5c760ac7436c13000000ff63f8c747b8182b09088b45448947bc *8b45488947c08b45408947c48b453c8947c88b45388947cc8b45348947d08b45308947d48b452c *8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f0 *8b45108947f48b450c8947f88b45088947fc8b450489078d47b8894548c7454428d411088b7504 *83c540e9d8e9060083c540e9bcf6ffff3c2c0908a02b0908e40409081200000025002710e40409 *0813000000240027108b460483f82c750f8b7504c74504582c090883c504ff2683c544e97df6ff *ff908b46088945008b7604c745fc642c090883c5fcff268d7600842c090840230908e404090812 *000000250027108b7604c74500b02c0908ff2683c540e93cf6ffffbc2c0908bc2c0908bc2c0908 *bc2c0908bc2c0908b02c0908bc2c0908bc2c0908e40409081200000025002710e4040908040001 *00120000000b0027108d45b43b43547303ff63fc8b46048945fc8b46488945bc8b46448945c08b *46408945c48b463c8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b462889 *45dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b *460c8945f88b45008b4e08894d0089c6c745b8f02c090883c5b8ff26e404090804000100110000 *000b0027108d45f83b4354720883c74c3b7b5c760ac7436c13000000ff63fcc747b8002d09088b *46048947bc8b46088947c08b460c8947c48b46108947c88b46148947cc8b46188947d08b461c89 *47d48b46208947d88b46248947dc8b46288947e08b462c8947e48b46308947e88b46348947ec8b *46388947f08b463c8947f48b45008947f88b46408947fc8b464489078d47b8894500c745fc28d4 *11088b764483c5f8e9d8e70600f804090800000200120041008d45f03b43547303ff63f8c745f8 *d46d10088975fcc745f4dcc01108be98d6110883c5f0e997e306008d760083c7543b7b5c760ac7 *436c15000000ff63f8c747b0982d09088b45408947b48b45448947b88b453c8947bc8b45388947 *c08b45348947c48b45308947c88b452c8947cc8b45288947d08b45248947d48b45208947d88b45 *1c8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947 *f4c747f8482e09088d47b08945448d47f88945408b750483c53ce903e706008d760083c53ce954 *f3ffff142f0908742e0908e40409081100000025002718e404090812000000240027188b460483 *f83d750f8b7504c74504302f090883c504ff2683c540e915f3ffff908b46088945008b7604c745 *fc3c2f090883c5fcff268d76005c2f0908b0220908e404090811000000250027188b7604c74500 *882f0908ff2683c53ce9d4f2ffff942f0908942f0908942f0908942f0908942f0908882f090894 *2f0908942f0908e40409081100000025002718e404090804000100110000000b0027188d45b83b *43547303ff63fc8b46048945fc8b46448945c08b46408945c48b463c8945c88b46388945cc8b46 *348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945 *e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745bc *c82f090883c5bcff2689f683c7483b7b5c760ac7436c12000000ff63f8c747bcd82f09088b4540 *8947c08b45448947c48b453c8947c88b45388947cc8b45348947d08b45308947d48b452c8947d8 *8b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b4510 *8947f48b450c8947f88b45088947fc8b450489078d47bc894544c7454028d411088b750483c53c *e922e5060089f65c30090820220908e4040908110000002500271883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8f02109088b46048945fc8d4ff8894df8bec4d11108c745000831090883c5 *f4e9d3e406008d760083c53ce958f0ffff44310908443109084431090844310908083109084431 *09084431090844310908e40409081100000025002718e404090804000100110000000b0027188d *45b03b43547303ff63fc8b46048945fc8b46448945c08b46408945c48b463c8945c88b46388945 *cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b46 *1c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6 *c745bc7831090883c5bcff2689f683c7483b7b5c760ac7436c12000000ff63f8c747bc88310908 *8b45408947c08b45448947c48b453c8947c88b45388947cc8b45348947d08b45308947d48b452c *8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f0 *8b45108947f48b450c8947f88b45088947fc8b450489078d47bc894544c7454028d411088b7504 *83c53ce972e3060089f683c53ce968eeffffa43209080c320908e40409081100000025002718e4 *04090812000000240027188b460483f82c750f8b7504c74504c032090883c504ff2683c540e929 *eeffff908b46088945008b7604c745fccc32090883c5fcff268d7600ec32090854210908e40409 *0811000000250027188b7604c7450018330908ff2683c53ce9e8edffff24330908243309082433 *09082433090824330908183309082433090824330908e40409081100000025002718e404090804 *000100110000000b0027188d45b83b43547303ff63fc8b46048945fc8b46448945c08b46408945 *c48b463c8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46 *248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945 *f88b45008b4e08894d0089c6c745bc5833090883c5bcff2689f6e404090804000100100000000b *0027188d45f83b4354720883c7483b7b5c760ac7436c12000000ff63fcc747bc683309088b4604 *8947c08b46088947c48b460c8947c88b46108947cc8b46148947d08b46188947d48b461c8947d8 *8b46208947dc8b46248947e08b46288947e48b462c8947e88b46308947ec8b46348947f08b4638 *8947f48b45008947f88b463c8947fc8b464089078d47bc894500c745fc28d411088b764083c5f8 *e97ae1060089f6f804090800000200120003008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f48cb41108be98d6110883c5f0e937dd06008d760083c7503b7b5c760ac7436c14000000 *ff63f8c747b4fc3309088b453c8947b88b45408947bc8b45388947c08b45348947c48b45308947 *c88b452c8947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45 *148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f8a83409088d47b489 *45408d47f889453c8b750483c538e9a9e006009083c538e910ebffff6c350908d4340908e40409 *081000000025006718e404090811000000240067188b460483f83d750f8b7504c7450488350908 *83c504ff2683c53ce9d1eaffff908b46088945008b7604c745fc9435090883c5fcff268d7600b4 *350908c4200908e404090810000000250067188b7604c74500e0350908ff2683c538e990eaffff *ec350908ec350908ec350908ec350908ec350908e0350908ec350908ec350908e4040908100000 *0025006718e404090804000100100000000b0067188d45bc3b43547303ff63fc8b46048945fc8b *46408945c48b463c8945c88b46388945cc8b46348945d08b46308945d48b462c8945d88b462889 *45dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b *460c8945f88b45008b4e08894d0089c6c745c02036090883c5c0ff2683c7443b7b5c760ac7436c *11000000ff63f8c747c0303609088b453c8947c48b45408947c88b45388947cc8b45348947d08b *45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b451889 *47ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47c0894540c745 *3c28d411088b750483c538e9d8de0600ac36090834200908e4040908100000002500671883c70c *3b7b5c760ac7436c03000000ff63f8c747f8042009088b46048945fc8d4ff8894df8bec4d11108 *c745005037090883c5f4e98bde06008d760083c538e924e8ffff8c3709088c3709088c3709088c *370908503709088c3709088c3709088c370908e40409081000000025006718e404090804000100 *100000000b0067188d45b43b43547303ff63fc8b46048945fc8b46408945c48b463c8945c88b46 *388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945 *e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d *0089c6c745c0c037090883c5c0ff2683c7443b7b5c760ac7436c11000000ff63f8c747c0d03709 *088b453c8947c48b45408947c88b45388947cc8b45348947d08b45308947d48b452c8947d88b45 *288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947 *f48b450c8947f88b45088947fc8b450489078d47c0894540c7453c28d411088b750483c538e938 *dd060083c538e944e6ffffdc3809084c380908e40409081000000025006718e404090811000000 *240067188b460483f82c750f8b7504c74504f838090883c504ff2683c53ce905e6ffff908b4608 *8945008b7604c745fc0439090883c5fcff268d760024390908681f0908e4040908100000002500 *67188b7604c7450050390908ff2683c538e9c4e5ffff5c3909085c3909085c3909085c3909085c *390908503909085c3909085c390908e40409081000000025006718e40409080400010010000000 *0b0067188d45bc3b43547303ff63fc8b46048945fc8b46408945c48b463c8945c88b46388945cc *8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c *8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c7 *45c09039090883c5c0ff26e4040908040001000f0000000b0067188d45f83b4354720883c7443b *7b5c760ac7436c11000000ff63fcc747c0a03909088b46048947c48b46088947c88b460c8947cc *8b46108947d08b46148947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b4628 *8947e88b462c8947ec8b46308947f08b46348947f48b45008947f88b46388947fc8b463c89078d *47c0894500c745fc28d411088b763c83c5f8e950db0600f804090800000200120009008d45f03b *43547303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e90fd706008d76 *0083c74c3b7b5c760ac7436c13000000ff63f8c747b82c3a09088b45388947bc8b453c8947c08b *45348947c48b45308947c88b452c8947cc8b45288947d08b45248947d48b45208947d88b451c89 *47dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c7 *47f8d03a09088d47b889453c8d47f88945388b750483c534e987da06008d760083c534e900e3ff *ff903b0908fc3a0908e40409080f00000025006719e404090810000000240067198b460483f83d *750f8b7504c74504ac3b090883c504ff2683c538e9c1e2ffff908b46088945008b7604c745fcb8 *3b090883c5fcff268d7600d83b0908d81e0908e40409080f000000250067198b7604c74500043c *0908ff2683c534e980e2ffff103c0908103c0908103c0908103c0908103c0908043c0908103c09 *08103c0908e40409080f00000025006719e4040908040001000f0000000b0067198d45c03b4354 *7303ff63fc8b46048945fc8b463c8945c88b46388945cc8b46348945d08b46308945d48b462c89 *45d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b *46108945f48b460c8945f88b45008b4e08894d0089c6c745c4443c090883c5c4ff2689f683c740 *3b7b5c760ac7436c10000000ff63f8c747c4543c09088b45388947c88b453c8947cc8b45348947 *d08b45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45 *188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47c489453c *c7453828d411088b750483c534e9bed8060089f6cc3c0908481e0908e40409080f000000250067 *1983c70c3b7b5c760ac7436c03000000ff63f8c747f8181e09088b46048945fc8d4ff8894df8be *c4d11108c745006c3d090883c5f4e96fd806008d760083c534e91ce0ffffa83d0908a83d0908a8 *3d0908a83d09086c3d0908a83d0908a83d0908a83d0908e40409080f00000025006719e4040908 *040001000f0000000b0067198d45b83b43547303ff63fc8b46048945fc8b463c8945c88b463889 *45cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b *461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089 *c6c745c4dc3d090883c5c4ff2689f683c7403b7b5c760ac7436c10000000ff63f8c747c4ec3d09 *088b45388947c88b453c8947cc8b45348947d08b45308947d48b452c8947d88b45288947dc8b45 *248947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947 *f88b45088947fc8b450489078d47c489453cc7453828d411088b750483c534e926d7060089f683 *c534e944defffff03e0908643e0908e40409080f00000025006719e40409081000000024006719 *8b460483f82c750f8b7504c745040c3f090883c504ff2683c538e905deffff908b46088945008b *7604c745fc183f090883c5fcff268d7600383f09087c1d0908e40409080f000000250067198b76 *04c74500643f0908ff2683c534e9c4ddffff703f0908703f0908703f0908703f0908703f090864 *3f0908703f0908703f0908e40409080f00000025006719e4040908040001000f0000000b006719 *8d45c03b43547303ff63fc8b46048945fc8b463c8945c88b46388945cc8b46348945d08b463089 *45d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b *46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c4a43f090883c5c4ff *2689f6e4040908040001000e0000000b0067198d45f83b4354720883c7403b7b5c760ac7436c10 *000000ff63fcc747c4b43f09088b46048947c88b46088947cc8b460c8947d08b46108947d48b46 *148947d88b46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec8b462c8947 *f08b46308947f48b45008947f88b46348947fc8b463889078d47c4894500c745fc28d411088b76 *3883c5f8e946d5060089f6f804090800000200120009008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f42cb51108be98d6110883c5f0e903d106008d760083c7483b7b5c760ac7436c *12000000ff63f8c747bc3c4009088b45348947c08b45388947c48b45308947c88b452c8947cc8b *45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e48b451089 *47e88b450c8947ec8b45088947f08b45048947f4c747f8dc4009088d47bc8945388d47f8894534 *8b750483c530e981d406009083c530e910dbffff9441090808410908e40409080e000000250067 *19e40409080f000000240067198b460483f83d750f8b7504c74504b041090883c504ff2683c534 *e9d1daffff908b46088945008b7604c745fcbc41090883c5fcff268d7600dc410908ec1c0908e4 *0409080e000000250067198b7604c7450008420908ff2683c530e990daffff1442090814420908 *144209081442090814420908084209081442090814420908e40409080e00000025006719e40409 *08040001000e0000000b0067198d45c43b43547303ff63fc8b46048945fc8b46388945cc8b4634 *8945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e8 *8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745c848 *42090883c5c8ff2683c73c3b7b5c760ac7436c0f000000ff63f8c747c8584209088b45348947cc *8b45388947d08b45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c *8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d *47c8894538c7453428d411088b750483c530e9c8d20600c84209085c1c0908e40409080e000000 *2500671983c70c3b7b5c760ac7436c03000000ff63f8c747f82c1c09088b46048945fc8d4ff889 *4df8bec4d11108c745006043090883c5f4e97bd206008d760083c530e93cd8ffff9c4309089c43 *09089c4309089c430908604309089c4309089c4309089c430908e40409080e00000025006719e4 *040908040001000e0000000b0067198d45bc3b43547303ff63fc8b46048945fc8b46388945cc8b *46348945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c89 *45e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745 *c8d043090883c5c8ff2683c73c3b7b5c760ac7436c0f000000ff63f8c747c8e04309088b453489 *47cc8b45388947d08b45308947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b *451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489 *078d47c8894538c7453428d411088b750483c530e940d1060083c530e974d6ffffd44409085044 *0908e40409080e00000025006719e40409080f000000240067198b460483f82c750f8b7504c745 *04f044090883c504ff2683c534e935d6ffff908b46088945008b7604c745fcfc44090883c5fcff *268d76001c450908901b0908e40409080e000000250067198b7604c7450048450908ff2683c530 *e9f4d5ffff5445090854450908544509085445090854450908484509085445090854450908e404 *09080e00000025006719e4040908040001000e0000000b0067198d45c43b43547303ff63fc8b46 *048945fc8b46388945cc8b46348945d08b46308945d48b462c8945d88b46288945dc8b46248945 *e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45 *008b4e08894d0089c6c745c88845090883c5c8ff26e4040908040001000d0000000b0067198d45 *f83b4354720883c73c3b7b5c760ac7436c0f000000ff63fcc747c8984509088b46048947cc8b46 *088947d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c8947e48b46208947 *e88b46248947ec8b46288947f08b462c8947f48b45008947f88b46308947fc8b463489078d47c8 *894500c745fc28d411088b763483c5f8e970cf0600f804090800000200120009008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e92fcb06008d760083 *c7443b7b5c760ac7436c11000000ff63f8c747c0184609088b45308947c48b45348947c88b452c *8947cc8b45288947d08b45248947d48b45208947d88b451c8947dc8b45188947e08b45148947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f8b04609088d47c08945348d47 *f88945308b750483c52ce9b3ce06008d760083c52ce954d3ffff64470908dc460908e40409080d *00000025006719e40409080e000000240067198b460483f83d750f8b7504c745048047090883c5 *04ff2683c530e915d3ffff908b46088945008b7604c745fc8c47090883c5fcff268d7600ac4709 *08001b0908e40409080d000000250067198b7604c74500d8470908ff2683c52ce9d4d2ffffe447 *0908e4470908e4470908e4470908e4470908d8470908e4470908e4470908e40409080d00000025 *006719e4040908040001000d0000000b0067198d45c83b43547303ff63fc8b46048945fc8b4634 *8945d08b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e8 *8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745cc18 *48090883c5ccff2689f683c7383b7b5c760ac7436c0e000000ff63f8c747cc284809088b453089 *47d08b45348947d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b *45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47cc8945 *34c7453028d411088b750483c52ce902cd060089f694480908701a0908e40409080d0000002500 *671983c70c3b7b5c760ac7436c03000000ff63f8c747f8401a09088b46048945fc8d4ff8894df8 *bec4d11108c745002849090883c5f4e9b3cc06008d760083c52ce988d0ffff6449090864490908 *644909086449090828490908644909086449090864490908e40409080d00000025006719e40409 *08040001000d0000000b0067198d45c03b43547303ff63fc8b46048945fc8b46348945d08b4630 *8945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec *8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745cc9849090883c5cc *ff2689f683c7383b7b5c760ac7436c0e000000ff63f8c747cca84909088b45308947d08b453489 *47d48b452c8947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b *45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47cc894534c7453028d4 *11088b750483c52ce982cb060089f683c52ce9c8ceffff944a0908144a0908e40409080d000000 *25006719e40409080e000000240067198b460483f82c750f8b7504c74504b04a090883c504ff26 *83c530e989ceffff908b46088945008b7604c745fcbc4a090883c5fcff268d7600dc4a0908a419 *0908e40409080d000000250067198b7604c74500084b0908ff2683c52ce948ceffff144b090814 *4b0908144b0908144b0908144b0908084b0908144b0908144b0908e40409080d00000025006719 *e4040908040001000d0000000b0067198d45c83b43547303ff63fc8b46048945fc8b46348945d0 *8b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b4618 *8945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745cc484b0908 *83c5ccff2689f6e4040908040001000c0000000b0067198d45f83b4354720883c7383b7b5c760a *c7436c0e000000ff63fcc747cc584b09088b46048947d08b46088947d48b460c8947d88b461089 *47dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f48b *45008947f88b462c8947fc8b463089078d47cc894500c745fc28d411088b763083c5f8e9bac906 *0089f6f804090800000200120009008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4 *2cb51108be98d6110883c5f0e977c506008d760083c7403b7b5c760ac7436c10000000ff63f8c7 *47c4d44b09088b452c8947c88b45308947cc8b45288947d08b45248947d48b45208947d88b451c *8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4 *c747f8684c09088d47c48945308d47f889452c8b750483c528e901c906009083c528e9b8cbffff *144d0908944c0908e40409080c00000025006719e40409080d000000240067198b460483f83d75 *0f8b7504c74504304d090883c504ff2683c52ce979cbffff908b46088945008b7604c745fc3c4d *090883c5fcff268d76005c4d090814190908e40409080c000000250067198b7604c74500884d09 *08ff2683c528e938cbffff944d0908944d0908944d0908944d0908944d0908884d0908944d0908 *944d0908e40409080c00000025006719e4040908040001000c0000000b0067198d45cc3b435473 *03ff63fc8b46048945fc8b46308945d48b462c8945d88b46288945dc8b46248945e08b46208945 *e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d *0089c6c745d0c84d090883c5d0ff2683c7343b7b5c760ac7436c0d000000ff63f8c747d0d84d09 *088b452c8947d48b45308947d88b45288947dc8b45248947e08b45208947e48b451c8947e88b45 *188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47d0894530 *c7452c28d411088b750483c528e960c706003c4e090884180908e40409080c0000002500671983 *c70c3b7b5c760ac7436c03000000ff63f8c747f8541809088b46048945fc8d4ff8894df8bec4d1 *1108c74500c84e090883c5f4e913c706008d760083c528e9fcc8ffff044f0908044f0908044f09 *08044f0908c84e0908044f0908044f0908044f0908e40409080c00000025006719e40409080400 *01000c0000000b0067198d45c43b43547303ff63fc8b46048945fc8b46308945d48b462c8945d8 *8b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945f08b4610 *8945f48b460c8945f88b45008b4e08894d0089c6c745d0384f090883c5d0ff2683c7343b7b5c76 *0ac7436c0d000000ff63f8c747d0484f09088b452c8947d48b45308947d88b45288947dc8b4524 *8947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f8 *8b45088947fc8b450489078d47d0894530c7452c28d411088b750483c528e9f0c5060083c528e9 *4cc7ffff24500908ac4f0908e40409080c00000025006719e40409080d000000240067198b4604 *83f82c750f8b7504c745044050090883c504ff2683c52ce90dc7ffff908b46088945008b7604c7 *45fc4c50090883c5fcff268d76006c500908b8170908e40409080c000000250067198b7604c745 *0098500908ff2683c528e9ccc6ffffa4500908a4500908a4500908a4500908a450090898500908 *a4500908a4500908e40409080c00000025006719e4040908040001000c0000000b0067198d45cc *3b43547303ff63fc8b46048945fc8b46308945d48b462c8945d88b46288945dc8b46248945e08b *46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745d0d850090883c5d0ff26e4040908040001000b0000000b0067198d45f83b *4354720883c7343b7b5c760ac7436c0d000000ff63fcc747d0e85009088b46048947d48b460889 *47d88b460c8947dc8b46108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b *46248947f48b45008947f88b46288947fc8b462c89078d47d0894500c745fc28d411088b762c83 *c5f8e938c40600f804090800000200120009008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f42cb51108be98d6110883c5f0e9f7bf06008d760083c73c3b7b5c760ac7436c0f000000 *ff63f8c747c85c5109088b45288947cc8b452c8947d08b45248947d48b45208947d88b451c8947 *dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747 *f8e85109088d47c889452c8d47f88945288b750483c524e987c306008d760083c524e950c4ffff *9052090814520908e40409080b00000025006719e40409080c000000240067198b460483f83d75 *0f8b7504c74504ac52090883c504ff2683c528e911c4ffff908b46088945008b7604c745fcb852 *090883c5fcff268d7600d852090828170908e40409080b000000250067198b7604c74500045309 *08ff2683c524e9d0c3ffff10530908105309081053090810530908105309080453090810530908 *10530908e40409080b00000025006719e4040908040001000b0000000b0067198d45d03b435473 *03ff63fc8b46048945fc8b462c8945d88b46288945dc8b46248945e08b46208945e48b461c8945 *e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d4 *4453090883c5d4ff2689f683c7303b7b5c760ac7436c0c000000ff63f8c747d4545309088b4528 *8947d88b452c8947dc8b45248947e08b45208947e48b451c8947e88b45188947ec8b45148947f0 *8b45108947f48b450c8947f88b45088947fc8b450489078d47d489452cc7452828d411088b7504 *83c524e9eec1060089f6b453090898160908e40409080b0000002500671983c70c3b7b5c760ac7 *436c03000000ff63f8c747f8681609088b46048945fc8d4ff8894df8bec4d11108c745003c5409 *0883c5f4e99fc106008d760083c524e99cc1ffff785409087854090878540908785409083c5409 *08785409087854090878540908e40409080b00000025006719e4040908040001000b0000000b00 *67198d45c83b43547303ff63fc8b46048945fc8b462c8945d88b46288945dc8b46248945e08b46 *208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745d4ac54090883c5d4ff2689f683c7303b7b5c760ac7436c0c000000ff63f8c7 *47d4bc5409088b45288947d88b452c8947dc8b45248947e08b45208947e48b451c8947e88b4518 *8947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47d489452cc7 *452828d411088b750483c524e986c0060089f683c524e9f4bfffff905509081c550908e4040908 *0b00000025006719e40409080c000000240067198b460483f82c750f8b7504c74504ac55090883 *c504ff2683c528e9b5bfffff908b46088945008b7604c745fcb855090883c5fcff268d7600d855 *0908cc150908e40409080b000000250067198b7604c7450004560908ff2683c524e974bfffff10 *56090810560908105609081056090810560908045609081056090810560908e40409080b000000 *25006719e4040908040001000b0000000b0067198d45d03b43547303ff63fc8b46048945fc8b46 *2c8945d88b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945ec8b46148945 *f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d44456090883c5d4ff2689f6e4 *040908040001000a0000000b0067198d45f83b4354720883c7303b7b5c760ac7436c0c000000ff *63fcc747d4545609088b46048947d88b46088947dc8b460c8947e08b46108947e48b46148947e8 *8b46188947ec8b461c8947f08b46208947f48b45008947f88b46248947fc8b462889078d47d489 *4500c745fc28d411088b762883c5f8e9d6be060089f6f804090800000200120005008d45f03b43 *547303ff63f8c745f8d46d10088975fcc745f4bcb41108be98d6110883c5f0e993ba06008d7600 *83c7383b7b5c760ac7436c0e000000ff63f8c747ccc45609088b45248947d08b45288947d48b45 *208947d88b451c8947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947 *f08b45048947f4c747f84c5709088d47cc8945288d47f88945248b750483c520e929be06009083 *c520e908bdffffec57090878570908e40409080a0000002500e719e40409080b0000002400e719 *8b460483f83d750f8b7504c745040858090883c504ff2683c524e9c9bcffff908b46088945008b *7604c745fc1458090883c5fcff268d7600345809083c150908e40409080a0000002500e7198b76 *04c7450060580908ff2683c520e988bcffff6c5809086c5809086c5809086c5809086c58090860 *5809086c5809086c580908e40409080a0000002500e719e4040908040001000a0000000b00e719 *8d45d43b43547303ff63fc8b46048945fc8b46288945dc8b46248945e08b46208945e48b461c89 *45e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745 *d8a058090883c5d8ff2683c72c3b7b5c760ac7436c0b000000ff63f8c747d8b05809088b452489 *47dc8b45288947e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b *450c8947f88b45088947fc8b450489078d47d8894528c7452428d411088b750483c520e9a0bc06 *0008590908ac140908e40409080a0000002500e71983c70c3b7b5c760ac7436c03000000ff63f8 *c747f87c1409088b46048945fc8d4ff8894df8bec4d11108c745008859090883c5f4e953bc0600 *8d760083c520e964baffffc4590908c4590908c4590908c459090888590908c4590908c4590908 *c4590908e40409080a0000002500e719e4040908040001000a0000000b00e7198d45cc3b435473 *03ff63fc8b46048945fc8b46288945dc8b46248945e08b46208945e48b461c8945e88b46188945 *ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d8f859090883c5 *d8ff2683c72c3b7b5c760ac7436c0b000000ff63f8c747d8085a09088b45248947dc8b45288947 *e08b45208947e48b451c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45 *088947fc8b450489078d47d8894528c7452428d411088b750483c520e948bb060083c520e9ccb8 *ffffcc5a0908605a0908e40409080a0000002500e719e40409080b0000002400e7198b460483f8 *2c750f8b7504c74504e85a090883c504ff2683c524e98db8ffff908b46088945008b7604c745fc *f45a090883c5fcff268d7600145b0908e0130908e40409080a0000002500e7198b7604c7450040 *5b0908ff2683c520e94cb8ffff4c5b09084c5b09084c5b09084c5b09084c5b0908405b09084c5b *09084c5b0908e40409080a0000002500e719e4040908040001000a0000000b00e7198d45d43b43 *547303ff63fc8b46048945fc8b46288945dc8b46248945e08b46208945e48b461c8945e88b4618 *8945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745d8805b0908 *83c5d8ff26e404090804000100090000000b00e7198d45f83b4354720883c72c3b7b5c760ac743 *6c0b000000ff63fcc747d8905b09088b46048947dc8b46088947e08b460c8947e48b46108947e8 *8b46148947ec8b46188947f08b461c8947f48b45008947f88b46208947fc8b462489078d47d889 *4500c745fc28d411088b762483c5f8e9a8b90600f804090800000200120009008d45f03b435473 *03ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e967b506008d760083c7 *343b7b5c760ac7436c0d000000ff63f8c747d0f85b09088b45208947d48b45248947d88b451c89 *47dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c7 *47f8785c09088d47d08945248d47f88945208b750483c51ce903b906008d760083c51ce9f4b5ff *ff145d0908a45c0908e4040908090000002500e719e40409080a0000002400e7198b460483f83d *750f8b7504c74504305d090883c504ff2683c520e9b5b5ffff908b46088945008b7604c745fc3c *5d090883c5fcff268d76005c5d090850130908e4040908090000002500e7198b7604c74500885d *0908ff2683c51ce974b5ffff945d0908945d0908945d0908945d0908945d0908885d0908945d09 *08945d0908e4040908090000002500e719e404090804000100090000000b00e7198d45d83b4354 *7303ff63fc8b46048945fc8b46248945e08b46208945e48b461c8945e88b46188945ec8b461489 *45f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745dcc85d090883c5dcff2689f6 *83c7283b7b5c760ac7436c0a000000ff63f8c747dcd85d09088b45208947e08b45248947e48b45 *1c8947e88b45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b45048907 *8d47dc894524c7452028d411088b750483c51ce982b7060089f62c5e0908c0120908e404090809 *0000002500e71983c70c3b7b5c760ac7436c03000000ff63f8c747f8901209088b46048945fc8d *4ff8894df8bec4d11108c74500a85e090883c5f4e933b706008d760083c51ce958b3ffffe45e09 *08e45e0908e45e0908e45e0908a85e0908e45e0908e45e0908e45e0908e4040908090000002500 *e719e404090804000100090000000b00e7198d45d03b43547303ff63fc8b46048945fc8b462489 *45e08b46208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b *45008b4e08894d0089c6c745dc185f090883c5dcff2689f683c7283b7b5c760ac7436c0a000000 *ff63f8c747dc285f09088b45208947e08b45248947e48b451c8947e88b45188947ec8b45148947 *f08b45108947f48b450c8947f88b45088947fc8b450489078d47dc894524c7452028d411088b75 *0483c51ce932b6060089f683c51ce9c8b1ffffe45f09087c5f0908e4040908090000002500e719 *e40409080a0000002400e7198b460483f82c750f8b7504c745040060090883c504ff2683c520e9 *89b1ffff908b46088945008b7604c745fc0c60090883c5fcff268d76002c600908f4110908e404 *0908090000002500e7198b7604c7450058600908ff2683c51ce948b1ffff646009086460090864 *6009086460090864600908586009086460090864600908e4040908090000002500e719e4040908 *04000100090000000b00e7198d45d83b43547303ff63fc8b46048945fc8b46248945e08b462089 *45e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e0889 *4d0089c6c745dc9860090883c5dcff2689f6e404090804000100080000000b00e7198d45f83b43 *54720883c7283b7b5c760ac7436c0a000000ff63fcc747dca86009088b46048947e08b46088947 *e48b460c8947e88b46108947ec8b46148947f08b46188947f48b45008947f88b461c8947fc8b46 *2089078d47dc894500c745fc28d411088b762083c5f8e99ab4060089f6f8040908000002001200 *09008d45f03b43547303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e9 *57b006008d760083c7303b7b5c760ac7436c0c000000ff63f8c747d40c6109088b451c8947d88b *45208947dc8b45188947e08b45148947e48b45108947e88b450c8947ec8b45088947f08b450489 *47f4c747f8886109088d47d48945208d47f889451c8b750483c518e9f9b306009083c518e900af *ffff1c620908b4610908e4040908080000002500e719e4040908090000002400e7198b460483f8 *3d750f8b7504c745043862090883c504ff2683c51ce9c1aeffff908b46088945008b7604c745fc *4462090883c5fcff268d76006462090864110908e4040908080000002500e7198b7604c7450090 *620908ff2683c518e980aeffff9c6209089c6209089c6209089c6209089c620908906209089c62 *09089c620908e4040908080000002500e719e404090804000100080000000b00e7198d45dc3b43 *547303ff63fc8b46048945fc8b46208945e48b461c8945e88b46188945ec8b46148945f08b4610 *8945f48b460c8945f88b45008b4e08894d0089c6c745e0d062090883c5e0ff2683c7243b7b5c76 *0ac7436c09000000ff63f8c747e0e06209088b451c8947e48b45208947e88b45188947ec8b4514 *8947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e0894520c7451c28d41108 *8b750483c518e988b206002c630908d4100908e4040908080000002500e71983c70c3b7b5c760a *c7436c03000000ff63f8c747f8a41009088b46048945fc8d4ff8894df8bec4d11108c74500a063 *090883c5f4e93bb206008d760083c518e974acffffdc630908dc630908dc630908dc630908a063 *0908dc630908dc630908dc630908e4040908080000002500e719e404090804000100080000000b *00e7198d45d43b43547303ff63fc8b46048945fc8b46208945e48b461c8945e88b46188945ec8b *46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e01064090883c5e0ff *2683c7243b7b5c760ac7436c09000000ff63f8c747e0206409088b451c8947e48b45208947e88b *45188947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b450489078d47e08945 *20c7451c28d411088b750483c518e948b1060083c518e9f4aaffffcc6409086c640908e4040908 *080000002500e719e4040908090000002400e7198b460483f82c750f8b7504c74504e864090883 *c504ff2683c51ce9b5aaffff908b46088945008b7604c745fcf464090883c5fcff268d76001465 *090808100908e4040908080000002500e7198b7604c7450040650908ff2683c518e974aaffff4c *6509084c6509084c6509084c6509084c650908406509084c6509084c650908e404090808000000 *2500e719e404090804000100080000000b00e7198d45dc3b43547303ff63fc8b46048945fc8b46 *208945e48b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745e08065090883c5e0ff26e404090804000100070000000b00e7198d45f83b43 *54720883c7243b7b5c760ac7436c09000000ff63fcc747e0906509088b46048947e48b46088947 *e88b460c8947ec8b46108947f08b46148947f48b45008947f88b46188947fc8b461c89078d47e0 *894500c745fc28d411088b761c83c5f8e9c0af0600f804090800000200120009008d45f03b4354 *7303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e97fab06008d760083 *c72c3b7b5c760ac7436c0b000000ff63f8c747d8ec6509088b45188947dc8b451c8947e08b4514 *8947e48b45108947e88b450c8947ec8b45088947f08b45048947f4c747f8606609088d47d88945 *1c8d47f88945188b750483c514e927af06008d760083c514e940a8fffff06609088c660908e404 *0908070000002500e719e4040908080000002400e7198b460483f83d750f8b7504c745040c6709 *0883c504ff2683c518e901a8ffff908b46088945008b7604c745fc1867090883c5fcff268d7600 *38670908780f0908e4040908070000002500e7198b7604c7450064670908ff2683c514e9c0a7ff *ff7067090870670908706709087067090870670908646709087067090870670908e40409080700 *00002500e719e404090804000100070000000b00e7198d45e03b43547303ff63fc8b46048945fc *8b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d00 *89c6c745e4a467090883c5e4ff2689f683c7203b7b5c760ac7436c08000000ff63f8c747e4b467 *09088b45188947e88b451c8947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b *450489078d47e489451cc7451828d411088b750483c514e9bead060089f6fc670908e80e0908e4 *040908070000002500e71983c70c3b7b5c760ac7436c03000000ff63f8c747f8b80e09088b4604 *8945fc8d4ff8894df8bec4d11108c745006c68090883c5f4e96fad06008d760083c514e9bca5ff *ffa8680908a8680908a8680908a86809086c680908a8680908a8680908a8680908e40409080700 *00002500e719e404090804000100070000000b00e7198d45d83b43547303ff63fc8b46048945fc *8b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d00 *89c6c745e4dc68090883c5e4ff2689f683c7203b7b5c760ac7436c08000000ff63f8c747e4ec68 *09088b45188947e88b451c8947ec8b45148947f08b45108947f48b450c8947f88b45088947fc8b *450489078d47e489451cc7451828d411088b750483c514e986ac060089f683c514e944a4ffff90 *69090834690908e4040908070000002500e719e4040908080000002400e7198b460483f82c750f *8b7504c74504ac69090883c504ff2683c518e905a4ffff908b46088945008b7604c745fcb86909 *0883c5fcff268d7600d86909081c0e0908e4040908070000002500e7198b7604c74500046a0908 *ff2683c514e9c4a3ffff106a0908106a0908106a0908106a0908106a0908046a0908106a090810 *6a0908e4040908070000002500e719e404090804000100070000000b00e7198d45e03b43547303 *ff63fc8b46048945fc8b461c8945e88b46188945ec8b46148945f08b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745e4446a090883c5e4ff2689f6e404090804000100060000000b00 *e7198d45f83b4354720883c7203b7b5c760ac7436c08000000ff63fcc747e4546a09088b460489 *47e88b46088947ec8b460c8947f08b46108947f48b45008947f88b46148947fc8b461889078d47 *e4894500c745fc28d411088b761883c5f8e906ab060089f6f804090800000200120009008d45f0 *3b43547303ff63f8c745f8d46d10088975fcc745f42cb51108be98d6110883c5f0e9c3a606008d *760083c7283b7b5c760ac7436c0a000000ff63f8c747dcac6a09088b45148947e08b45188947e4 *8b45108947e88b450c8947ec8b45088947f08b45048947f4c747f81c6b09088d47dc8945188d47 *f88945148b750483c510e971aa06009083c510e9a0a1ffffa46b0908486b0908e4040908060000 *002500e719e4040908070000002400e7198b460483f83d750f8b7504c74504c06b090883c504ff *2683c514e961a1ffff908b46088945008b7604c745fccc6b090883c5fcff268d7600ec6b09088c *0d0908e4040908060000002500e7198b7604c74500186c0908ff2683c510e920a1ffff246c0908 *246c0908246c0908246c0908246c0908186c0908246c0908246c0908e4040908060000002500e7 *19e404090804000100060000000b00e7198d45e43b43547303ff63fc8b46048945fc8b46188945 *ec8b46148945f08b46108945f48b460c8945f88b45008b4e08894d0089c6c745e8586c090883c5 *e8ff2683c71c3b7b5c760ac7436c07000000ff63f8c747e8686c09088b45148947ec8b45188947 *f08b45108947f48b450c8947f88b45088947fc8b450489078d47e8894518c7451428d411088b75 *0483c510e918a90600a86c0908fc0c0908e4040908060000002500e71983c70c3b7b5c760ac743 *6c03000000ff63f8c747f8cc0c09088b46048945fc8d4ff8894df8bec4d11108c74500106d0908 *83c5f4e9cba806008d760083c510e92c9fffff4c6d09084c6d09084c6d09084c6d0908106d0908 *4c6d09084c6d09084c6d0908e4040908060000002500e719e404090804000100060000000b00e7 *198d45dc3b43547303ff63fc8b46048945fc8b46188945ec8b46148945f08b46108945f48b460c *8945f88b45008b4e08894d0089c6c745e8806d090883c5e8ff2683c71c3b7b5c760ac7436c0700 *0000ff63f8c747e8906d09088b45148947ec8b45188947f08b45108947f48b450c8947f88b4508 *8947fc8b450489078d47e8894518c7451428d411088b750483c510e9f0a7060083c510e9c49dff *ff246e0908d06d0908e4040908060000002500e719e4040908070000002400e7198b460483f82c *750f8b7504c74504406e090883c504ff2683c514e9859dffff908b46088945008b7604c745fc4c *6e090883c5fcff268d76006c6e0908300c0908e4040908060000002500e7198b7604c74500986e *0908ff2683c510e9449dffffa46e0908a46e0908a46e0908a46e0908a46e0908986e0908a46e09 *08a46e0908e4040908060000002500e719e404090804000100060000000b00e7198d45e43b4354 *7303ff63fc8b46048945fc8b46188945ec8b46148945f08b46108945f48b460c8945f88b45008b *4e08894d0089c6c745e8d86e090883c5e8ff26e404090804000100050000000b00e7198d45f83b *4354720883c71c3b7b5c760ac7436c07000000ff63fcc747e8e86e09088b46048947ec8b460889 *47f08b460c8947f48b45008947f88b46108947fc8b461489078d47e8894500c745fc28d411088b *761483c5f8e980a60600f804090800000200120009008d45f03b43547303ff63f8c745f8d46d10 *088975fcc745f42cb51108be98d6110883c5f0e93fa206008d760083c7243b7b5c760ac7436c09 *000000ff63f8c747e0386f09088b45108947e48b45148947e88b450c8947ec8b45088947f08b45 *048947f4c747f8a06f09088d47e08945148d47f88945108b750483c50ce9f3a506008d760083c5 *0ce9349bffff24700908cc6f0908e4040908050000002500e719e4040908060000002400e7198b *460483f83d750f8b7504c745044070090883c504ff2683c510e9f59affff908b46088945008b76 *04c745fc4c70090883c5fcff268d76006c700908a00b0908e4040908050000002500e7198b7604 *c7450098700908ff2683c50ce9b49affffa4700908a4700908a4700908a4700908a47009089870 *0908a4700908a4700908e4040908050000002500e719e404090804000100050000000b00e7198d *45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745ecd870090883c5ecff2689f683c7183b7b5c760ac7436c06000000ff63f8c7 *47ece87009088b45108947f08b45148947f48b450c8947f88b45088947fc8b450489078d47ec89 *4514c7451028d411088b750483c50ce9a2a4060089f624710908100b0908e40409080500000025 *00e71983c70c3b7b5c760ac7436c03000000ff63f8c747f8e00a09088b46048945fc8d4ff8894d *f8bec4d11108c745008871090883c5f4e953a406008d760083c50ce9c898ffffc4710908c47109 *08c4710908c471090888710908c4710908c4710908c4710908e4040908050000002500e719e404 *090804000100050000000b00e7198d45e03b43547303ff63fc8b46048945fc8b46148945f08b46 *108945f48b460c8945f88b45008b4e08894d0089c6c745ecf871090883c5ecff2689f683c7183b *7b5c760ac7436c06000000ff63f8c747ec087209088b45108947f08b45148947f48b450c8947f8 *8b45088947fc8b450489078d47ec894514c7451028d411088b750483c50ce982a3060089f683c5 *0ce96897ffff9472090844720908e4040908050000002500e719e4040908060000002400e7198b *460483f82c750f8b7504c74504b072090883c504ff2683c510e92997ffff908b46088945008b76 *04c745fcbc72090883c5fcff268d7600dc720908440a0908e4040908050000002500e7198b7604 *c7450008730908ff2683c50ce9e896ffff14730908147309081473090814730908147309080873 *09081473090814730908e4040908050000002500e719e404090804000100050000000b00e7198d *45e83b43547303ff63fc8b46048945fc8b46148945f08b46108945f48b460c8945f88b45008b4e *08894d0089c6c745ec4873090883c5ecff2689f6e404090804000100040000000b00e7198d45f8 *3b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec587309088b46048947f08b4608 *8947f48b45008947f88b460c8947fc8b461089078d47ec894500c745fc28d411088b761083c5f8 *e91aa2060089f6f804090800000200120011008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f43cb51108be98d6110883c5f0e9d79d06008d760083c7203b7b5c760ac7436c08000000 *ff63f8c747e4a47309088b450c8947e88b45108947ec8b45088947f08b45048947f4c747f80874 *09088d47e48945108d47f889450c8b750483c508e991a106009083c508e9e894ffff8474090834 *740908e4040908040000002500e71be4040908050000002400e71b8b460483f83d750f8b7504c7 *4504a074090883c504ff2683c50ce9a994ffff908b46088945008b7604c745fcac74090883c5fc *ff268d7600cc740908b4090908e4040908040000002500e71b8b7604c74500f8740908ff2683c5 *08e96894ffff0475090804750908047509080475090804750908f87409080475090804750908e4 *040908040000002500e71be404090804000100040000000b00e71b8d45ec3b43547303ff63fc8b *46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f03875090883c5f0ff *2683c7143b7b5c760ac7436c05000000ff63f8c747f0487509088b450c8947f48b45108947f88b *45088947fc8b450489078d47f0894510c7450c28d411088b750483c508e950a006007c75090824 *090908e4040908040000002500e71b83c70c3b7b5c760ac7436c03000000ff63f8c747f8f40809 *088b46048945fc8d4ff8894df8bec4d11108c74500d875090883c5f4e903a006008d760083c508 *e98c92ffff14760908147609081476090814760908d8750908147609081476090814760908e404 *0908040000002500e71be404090804000100040000000b00e71b8d45e43b43547303ff63fc8b46 *048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f04876090883c5f0ff26 *83c7143b7b5c760ac7436c05000000ff63f8c747f0587609088b450c8947f48b45108947f88b45 *088947fc8b450489078d47f0894510c7450c28d411088b750483c508e9409f060083c508e93c91 *ffffd47609088c760908e4040908040000002500e71be4040908050000002400e71b8b460483f8 *2c750f8b7504c74504f076090883c504ff2683c50ce9fd90ffff908b46088945008b7604c745fc *fc76090883c5fcff268d76001c77090858080908e4040908040000002500e71b8b7604c7450048 *770908ff2683c508e9bc90ffff5477090854770908547709085477090854770908487709085477 *090854770908e4040908040000002500e71be404090804000100040000000b00e71b8d45ec3b43 *547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c745f088 *77090883c5f0ff26e404090804000100030000000b00e71b8d45f83b4354720883c7143b7b5c76 *0ac7436c05000000ff63fcc747f0987709088b46048947f48b45008947f88b46088947fc8b460c *89078d47f0894500c745fc28d411088b760c83c5f8e9e89d0600f804090800000200120021008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f44cb51108be98d6110883c5f0e9a79906 *008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8dc7709088b45088947ec8b450c89 *47f08b45048947f4c747f8387809088d47e889450c8d47f88945088b750483c504e9679d06008d *760083c504e9d08effffb078090864780908e4040908030000002500e71fe40409080400000024 *00e71f8b460483f83d750f8b7504c74504cc78090883c504ff2683c508e9918effff908b460889 *45008b7604c745fcd878090883c5fcff268d7600f8780908c8070908e4040908030000002500e7 *1f8b7604c7450024790908ff2683c504e9508effff307909083079090830790908307909083079 *0908247909083079090830790908e4040908030000002500e71fe404090804000100030000000b *00e71f8d45f03b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745 *f46479090883c5f4ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4747909088b45 *088947f88b450c8947fc8b450489078d47f489450cc7450828d411088b750483c504e92e9c0600 *89f6a479090838070908e4040908030000002500e71f83c70c3b7b5c760ac7436c03000000ff63 *f8c747f8080709088b46048945fc8d4ff8894df8bec4d11108c74500fc79090883c5f4e9df9b06 *008d760083c504e97c8cffff387a0908387a0908387a0908387a0908fc790908387a0908387a09 *08387a0908e4040908030000002500e71fe404090804000100030000000b00e71f8d45e83b4354 *7303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f46c7a090883c5f4ff *2689f683c7103b7b5c760ac7436c04000000ff63f8c747f47c7a09088b45088947f88b450c8947 *fc8b450489078d47f489450cc7450828d411088b750483c504e9269b060089f683c504e9348bff *fff07a0908ac7a0908e4040908030000002500e71fe4040908040000002400e71f8b460483f87b *750f8b7504c745040c7b090883c504ff2683c508e9f58affff908b46088945008b7604c745fc18 *7b090883c5fcff268d7600387b09086c060908e4040908030000002500e71f8b7604c74500647b *0908ff2683c504e9b48affff707b0908707b0908707b0908707b0908707b0908647b0908707b09 *08707b0908e4040908030000002500e71fe404090804000100030000000b00e71f8d45f03b4354 *7303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d0089c6c745f4a47b090883c5f4ff *2689f683c7103b7b5c760ac7436c04000000ff63f8c747f4b47b09088b45088947f88b450c8947 *fc8b450489078d47f489450cc7450828d411088b750483c504e9ee99060089f6e47b0908dc0509 *08e4040908030000002500e71f83c70c3b7b5c760ac7436c03000000ff63f8c747f8ac0509088b *46048945fc8d4ff8894df8bec4d11108c745003c7c090883c5f4e99f9906008d760083c504e9e0 *88ffff787c0908787c0908787c0908787c09083c7c0908787c0908787c0908787c0908e4040908 *030000002500e71fe404090804000100030000000b00e71f8d45e83b43547303ff63fc8b460489 *45fc8b460c8945f88b45008b4e08894d0089c6c745f4ac7c090883c5f4ff2689f6e40409080000 *00002400e71f83c7103b7b5c760ac7436c04000000ff63f8c747f4bc7c09088b46108947f88b46 *0c8947fc8b460489078d47f4894500c745fc28d411088b760483c5f8e9da98060089f6e4040908 *000002001200ef1f8d45ec3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4f87c *090883c5f4ff2689f6e4040908000002001800ff1f8d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c747ec085c100856e8b180060083c4048d47ec894604c706245b1008c745f8 *d46d10088d47ec8945fcc747f8487d09088d47f88945f4c745f028121208be88d6110883c5ece9 *3498060020d411085cc21108e07d090800000200180003008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8085c100856e83980060083c4048d47f8894604c706245b1008 *c745f8d46d10088d47f88945fcc745f45cc21108be20d4110883c5f0e9bd9306009048d411087c *c2110844d411087cc211083cd411087cc211084c7e090800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8bd7f060083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f47cc21108be48d4110883c5f0e9419306 *0090547e090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e8597f060083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f47cc21108be44d4110883c5f0e9dd920600905c7e090800000200180003008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f57e060083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f47cc21108be3cd4110883c5 *f0e97992060090d4d41108c4c21108907f090800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8897e060083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f4c4c21108bed4d4110883c5f0e90d92060090d8d4 *1108c4c21108fc7f090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8085c100856e81d7e060083c4048d47f8894604c706245b1008c745f8d46d10 *088d47f88945fcc745f4c4c21108bed8d4110883c5f0e9a191060090d4d1110890d1110848d111 *0854a81108bcd41108c0d4110824c51108fcb311081cb411082cb4110884c11108e8c211087c80 *090800000200120001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883 *c5f0e919910600900100000024000000c74500d81112088b760483c5fce90a95060089f6948009 *0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bee8c2 *1108c745f0f880090883c5f0ff267080090801000100130009028d45ec3b4354720883c7183b7b *5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747eca4800908c747f8188109088b46 *048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece9739406008d760068800908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9303a1108894df4bed4 *d1110883c5f0e94b8e06008d76006880090800000200120021008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b08109088d4ff8894df4bec0d4 *110883c5f0e9de8f060089f66880090801000100130025088d45ec3b4354720883c7183b7b5c76 *0ac7436c06000000ff63f8c745f8d46d10088975fcc747ec508109088b46048947f0c747f8ec81 *09088d47ec8945f48d47f88945f0be48d1110883c5ece98b9306008d7600688009080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9403a1108894df4bed4d111 *0883c5f0e9638d06008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8988209088d4ff8894df4bec0d41108 *83c5f0e9f68e060089f66880090801000100130025088d45ec3b4354720883c7183b7b5c760ac7 *436c06000000ff63f8c745f8d46d10088975fcc747ec388209088b46048947f0c747f8d4820908 *8d47ec8945f48d47f88945f0be48d1110883c5ece9a39206008d76000100000024000000c74500 *d81112088b760483c5fce98692060089f69080090801000100130001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be84c11108c745f07c83090883c5f0ff266880090802 *0000001500250c8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec208309088b46088947f0c747f89c8309088b46048947fc8d47ec8945f48d47f8 *8945f0be48d1110883c5ece9e9910600906880090800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9443a1108894df4bed4d1110883c5f0e9c38b06008d760068 *80090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8388409088d4ff8894df4bec0d4110883c5f0e9568d060089f6688009 *08020000001500250c8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747ecd48309088b46048947f08b46088947f4c747f8748409088d47ec8945f48d *47f88945f0be48d1110883c5ece9fd900600906880090800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9503a1108894df4bed4d1110883c5f0e9d78a06008d76 *006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8248509088d4ff8894df4bec0d4110883c5f0e96a8c060089f668 *800908020000001500250c8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ecc08409088b46048947f08b46088947f4c747f8608509088d47ec8945 *f48d47f88945f0be48d1110883c5ece911900600900100000024000000c74500d81112088b7604 *83c5fce9f68f060089f68480090801000100130001008d45ec3b43547303ff63f8c745f8d46d10 *088975fc8b4e04894df4befcb31108c745f00c86090883c5f0ff2668800908030000001200a50c *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *ac8509088b46088947f08b460c8947f4c747f82c8609088b46048947fc8d47ec8945f48d47f889 *45f0be48d1110883c5ece9538f06008d76006880090800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9543a1108894df4bed4d1110883c5f0e92b8906008d7600 *6880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8d08609088d4ff8894df4bec0d4110883c5f0e9be8a060089f66880 *0908030000001200a50c8d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8 *d46d10088975fcc747e8648609088b46048947ec8b46088947f08b460c8947f4c747f80c870908 *8d47e88945f48d47f88945f0be48d1110883c5ece95f8e06008d76006880090800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9643a1108894df4bed4d1110883 *c5f0e9378806008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f8c48709088d4ff8894df4bec0d4110883c5 *f0e9ca89060089f668800908030000001200a50c8d45ec3b4354720883c71c3b7b5c760ac7436c *07000000ff63f8c745f8d46d10088975fcc747e8588709088b46048947ec8b46088947f08b460c *8947f4c747f8008809088d47e88945f48d47f88945f0be48d1110883c5ece96b8d06008d760001 *00000024000000c74500d81112088b760483c5fce94e8d060089f68c8009080100010013000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0b4880908 *83c5f0ff2668800908040000001200a50e8d45ec3b4354720883c71c3b7b5c760ac7436c070000 *00ff63f8c745f8d46d10088975fcc747e84c8809088b46088947ec8b460c8947f08b46108947f4 *c747f8d48809088b46048947fc8d47e88945f48d47f88945f0be48d1110883c5ece9a58c060090 *6880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9683a *1108894df4bed4d1110883c5f0e97f8606008d76006880090800000200120021008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87c8909088d4f *f8894df4bec0d4110883c5f0e91288060089f668800908040000001200a50e8d45ec3b43547208 *83c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10088975fcc747e40c8909088b460489 *47e88b46088947ec8b460c8947f08b46108947f4c747f8b88909088d47e48945f48d47f88945f0 *be48d1110883c5ece9ad8b0600906880090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9743a1108894df4bed4d1110883c5f0e9878506008d760068800908 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8748a09088d4ff8894df4bec0d4110883c5f0e91a87060089f6688009080400 *00001200a50e8d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d1008 *8975fcc747e4048a09088b46048947e88b46088947ec8b460c8947f08b46108947f4c747f8b08a *09088d47e48945f48d47f88945f0be48d1110883c5ece9b58a0600900100000024000000c74500 *d81112088b760483c5fce99a8a060089f68c80090801000100130001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0688b090883c5f0ff266880090805 *0000001200a50e8d45ec3b4354720883c7203b7b5c760ac7436c08000000ff63f8c745f8d46d10 *088975fcc747e4fc8a09088b46088947e88b460c8947ec8b46108947f08b46148947f4c747f888 *8b09088b46048947fc8d47e48945f48d47f88945f0be48d1110883c5ece9eb8906008d76006880 *090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9783a1108 *894df4bed4d1110883c5f0e9c38306008d76006880090800000200120021008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8388c09088d4ff889 *4df4bec0d4110883c5f0e95685060089f668800908050000001200a50e8d45ec3b4354720883c7 *243b7b5c760ac7436c09000000ff63f8c745f8d46d10088975fcc747e0c08b09088b46048947e4 *8b46088947e88b460c8947ec8b46108947f08b46148947f4c747f8748c09088d47e08945f48d47 *f88945f0be48d1110883c5ece9eb8806008d76006880090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b9883a1108894df4bed4d1110883c5f0e9c38206008d *76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8388d09088d4ff8894df4bec0d4110883c5f0e95684060089f6 *68800908050000001200a50e8d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c7 *45f8d46d10088975fcc747e0c08c09088b46048947e48b46088947e88b460c8947ec8b46108947 *f08b46148947f4c747f8748d09088d47e08945f48d47f88945f0be48d1110883c5ece9eb870600 *8d76000100000024000000c74500d81112088b760483c5fce9ce87060089f68c80090801000100 *130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0 *348e090883c5f0ff2668800908060000001200a50e8d45ec3b4354720883c7243b7b5c760ac743 *6c09000000ff63f8c745f8d46d10088975fcc747e0c08d09088b46088947e48b460c8947e88b46 *108947ec8b46148947f08b46188947f4c747f8548e09088b46048947fc8d47e08945f48d47f889 *45f0be48d1110883c5ece919870600906880090800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b98c3a1108894df4bed4d1110883c5f0e9f38006008d76006880 *090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f8088f09088d4ff8894df4bec0d4110883c5f0e98682060089f668800908 *060000001200a50e8d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d *10088975fcc747dc8c8e09088b46048947e08b46088947e48b460c8947e88b46108947ec8b4614 *8947f08b46188947f4c747f8448f09088d47dc8945f48d47f88945f0be48d1110883c5ece91586 *0600906880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9983a1108894df4bed4d1110883c5f0e9ef7f06008d76006880090800000200120021008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80c9009 *088d4ff8894df4bec0d4110883c5f0e98281060089f668800908060000001200a50e8d45ec3b43 *54720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dc908f09088b *46048947e08b46088947e48b460c8947e88b46108947ec8b46148947f08b46188947f4c747f848 *9009088d47dc8945f48d47f88945f0be48d1110883c5ece911850600900100000024000000c745 *00d81112088b760483c5fce9f684060089f68c80090801000100130001008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f00c91090883c5f0ff2668800908 *070000001200a50e8d45ec3b4354720883c7283b7b5c760ac7436c0a000000ff63f8c745f8d46d *10088975fcc747dc949009088b46088947e08b460c8947e48b46108947e88b46148947ec8b4618 *8947f08b461c8947f4c747f82c9109088b46048947fc8d47dc8945f48d47f88945f0be48d11108 *83c5ece93b8406008d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b99c3a1108894df4bed4d1110883c5f0e9137e06008d760068800908000002 *00120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8e89109088d4ff8894df4bec0d4110883c5f0e9a67f060089f6688009080700000012 *00a50e8d45ec3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fc *c747d8649109088b46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46 *188947f08b461c8947f4c747f8249209088d47d88945f48d47f88945f0be48d1110883c5ece92f *8306008d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9a83a1108894df4bed4d1110883c5f0e9077d06008d7600688009080000020012002100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *f49209088d4ff8894df4bec0d4110883c5f0e99a7e060089f668800908070000001200a50e8d45 *ec3b4354720883c72c3b7b5c760ac7436c0b000000ff63f8c745f8d46d10088975fcc747d87092 *09088b46048947dc8b46088947e08b460c8947e48b46108947e88b46148947ec8b46188947f08b *461c8947f4c747f8309309088d47d88945f48d47f88945f0be48d1110883c5ece9238206008d76 *000100000024000000c74500d81112088b760483c5fce90682060089f68c800908010001001300 *01008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0fc93 *090883c5f0ff2668800908080000001200a50e8d45ec3b4354720883c72c3b7b5c760ac7436c0b *000000ff63f8c745f8d46d10088975fcc747d87c9309088b46088947dc8b460c8947e08b461089 *47e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f81c9409088b46048947fc *8d47d88945f48d47f88945f0be48d1110883c5ece945810600906880090800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ac3a1108894df4bed4d1110883c5f0 *e91f7b06008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8dc9409088d4ff8894df4bec0d4110883c5f0e9 *b27c060089f668800908080000001200a50e8d45ec3b4354720883c7303b7b5c760ac7436c0c00 *0000ff63f8c745f8d46d10088975fcc747d4549409088b46048947d88b46088947dc8b460c8947 *e08b46108947e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f8189509088d *47d48945f48d47f88945f0be48d1110883c5ece935800600906880090800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b83a1108894df4bed4d1110883c5f0e9 *0f7a06008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8ec9509088d4ff8894df4bec0d4110883c5f0e9a2 *7b060089f668800908080000001200a50e8d45ec3b4354720883c7303b7b5c760ac7436c0c0000 *00ff63f8c745f8d46d10088975fcc747d4649509088b46048947d88b46088947dc8b460c8947e0 *8b46108947e48b46148947e88b46188947ec8b461c8947f08b46208947f4c747f8289609088d47 *d48945f48d47f88945f0be48d1110883c5ece9257f0600900100000024000000c74500d8111208 *8b760483c5fce90a7f060089f68880090801000100130001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4be1cb41108c745f0f896090883c5f0ff26688009080900000012 *00a50f8d45ec3b4354720883c7303b7b5c760ac7436c0c000000ff63f8c745f8d46d10088975fc *c747d4749609088b46088947d88b460c8947dc8b46108947e08b46148947e48b46188947e88b46 *1c8947ec8b46208947f08b46248947f4c747f8189709088b46048947fc8d47d48945f48d47f889 *45f0be48d1110883c5ece9437e06008d76006880090800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9bc3a1108894df4bed4d1110883c5f0e91b7806008d7600 *6880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f8e09709088d4ff8894df4bec0d4110883c5f0e9ae79060089f66880 *0908090000001200a50f8d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745f8 *d46d10088975fcc747d0509709088b46048947d48b46088947d88b460c8947dc8b46108947e08b *46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f4c747f81c9809088d47d0 *8945f48d47f88945f0be48d1110883c5ece92b7d06008d76006880090800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc3a1108894df4bed4d1110883c5f0e9 *037706008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f8f89809088d4ff8894df4bec0d4110883c5f0e996 *78060089f668800908090000001200a50f8d45ec3b4354720883c7343b7b5c760ac7436c0d0000 *00ff63f8c745f8d46d10088975fcc747d0689809088b46048947d48b46088947d88b460c8947dc *8b46108947e08b46148947e48b46188947e88b461c8947ec8b46208947f08b46248947f4c747f8 *349909088d47d08945f48d47f88945f0be48d1110883c5ece9137c06008d760001000000240000 *00c74500d81112088b760483c5fce9f67b060089f68c80090801000100130001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f00c9a090883c5f0ff2668 *8009080a0000001200a50f8d45ec3b4354720883c7343b7b5c760ac7436c0d000000ff63f8c745 *f8d46d10088975fcc747d0809909088b46088947d48b460c8947d88b46108947dc8b46148947e0 *8b46188947e48b461c8947e88b46208947ec8b46248947f08b46288947f4c747f82c9a09088b46 *048947fc8d47d08945f48d47f88945f0be48d1110883c5ece9297b060090688009080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d03a1108894df4bed4d111 *0883c5f0e9037506008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8f89a09088d4ff8894df4bec0d41108 *83c5f0e99676060089f6688009080a0000001200a50f8d45ec3b4354720883c7383b7b5c760ac7 *436c0e000000ff63f8c745f8d46d10088975fcc747cc649a09088b46048947d08b46088947d48b *460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947e88b46208947ec8b462489 *47f08b46288947f4c747f8349b09088d47cc8945f48d47f88945f0be48d1110883c5ece90d7a06 *00906880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *e03a1108894df4bed4d1110883c5f0e9e77306008d76006880090800000200120021008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8149c0908 *8d4ff8894df4bec0d4110883c5f0e97a75060089f6688009080a0000001200a50f8d45ec3b4354 *720883c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747cc809b09088b46 *048947d08b46088947d48b460c8947d88b46108947dc8b46148947e08b46188947e48b461c8947 *e88b46208947ec8b46248947f08b46288947f4c747f8509c09088d47cc8945f48d47f88945f0be *48d1110883c5ece9f1780600900100000024000000c74500d81112088b760483c5fce9d6780600 *89f68c80090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be2cb41108c745f02c9d090883c5f0ff26688009080b0000001200a50f8d45ec3b43547208 *83c7383b7b5c760ac7436c0e000000ff63f8c745f8d46d10088975fcc747cc9c9c09088b460889 *47d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c8947e48b46208947e88b *46248947ec8b46288947f08b462c8947f4c747f84c9d09088b46048947fc8d47cc8945f48d47f8 *8945f0be48d1110883c5ece9037806008d76006880090800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9e43a1108894df4bed4d1110883c5f0e9db7106008d76 *006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8209e09088d4ff8894df4bec0d4110883c5f0e96e73060089f668 *8009080b0000001200a50f8d45ec3b4354720883c73c3b7b5c760ac7436c0f000000ff63f8c745 *f8d46d10088975fcc747c8849d09088b46048947cc8b46088947d08b460c8947d48b46108947d8 *8b46148947dc8b46188947e08b461c8947e48b46208947e88b46248947ec8b46288947f08b462c *8947f4c747f85c9e09088d47c88945f48d47f88945f0be48d1110883c5ece9df7606008d760068 *80090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f03a11 *08894df4bed4d1110883c5f0e9b77006008d76006880090800000200120021008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8449f09088d4ff8 *894df4bec0d4110883c5f0e94a72060089f6688009080b0000001200a50f8d45ec3b4354720883 *c73c3b7b5c760ac7436c0f000000ff63f8c745f8d46d10088975fcc747c8a89e09088b46048947 *cc8b46088947d08b460c8947d48b46108947d88b46148947dc8b46188947e08b461c8947e48b46 *208947e88b46248947ec8b46288947f08b462c8947f4c747f8809f09088d47c88945f48d47f889 *45f0be48d1110883c5ece9bb7506008d76000100000024000000c74500d81112088b760483c5fc *e99e75060089f68c80090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4be2cb41108c745f064a0090883c5f0ff26688009080c0000001200a50f8d45ec *3b4354720883c73c3b7b5c760ac7436c0f000000ff63f8c745f8d46d10088975fcc747c8cc9f09 *088b46088947cc8b460c8947d08b46108947d48b46148947d88b46188947dc8b461c8947e08b46 *208947e48b46248947e88b46288947ec8b462c8947f08b46308947f4c747f884a009088b460489 *47fc8d47c88945f48d47f88945f0be48d1110883c5ece9c5740600906880090800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f43a1108894df4bed4d1110883 *c5f0e99f6e06008d76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f85ca109088d4ff8894df4bec0d4110883c5 *f0e93270060089f6688009080c0000001200a50f8d45ec3b4354720883c7403b7b5c760ac7436c *10000000ff63f8c745f8d46d10088975fcc747c4bca009088b46048947c88b46088947cc8b460c *8947d08b46108947d48b46148947d88b46188947dc8b461c8947e08b46208947e48b46248947e8 *8b46288947ec8b462c8947f08b46308947f4c747f898a109088d47c48945f48d47f88945f0be48 *d1110883c5ece99d730600906880090800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9043b1108894df4bed4d1110883c5f0e9776d06008d7600688009080000 *0200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f884a209088d4ff8894df4bec0d4110883c5f0e90a6f060089f6688009080c000000 *1200a50f8d45ec3b4354720883c7403b7b5c760ac7436c10000000ff63f8c745f8d46d10088975 *fcc747c4e4a109088b46048947c88b46088947cc8b460c8947d08b46108947d48b46148947d88b *46188947dc8b461c8947e08b46208947e48b46248947e88b46288947ec8b462c8947f08b463089 *47f4c747f8c0a209088d47c48945f48d47f88945f0be48d1110883c5ece9757206009001000000 *24000000c74500d81112088b760483c5fce95a72060089f68c80090801000100130001008d45ec *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f0a8a3090883c5f0 *ff26688009080d0000001200a50f8d45ec3b4354720883c7403b7b5c760ac7436c10000000ff63 *f8c745f8d46d10088975fcc747c40ca309088b46088947c88b460c8947cc8b46108947d08b4614 *8947d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec *8b46308947f08b46348947f4c747f8c8a309088b46048947fc8d47c48945f48d47f88945f0be48 *d1110883c5ece97b7106008d76006880090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b9083b1108894df4bed4d1110883c5f0e9536b06008d760068800908 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8a8a409088d4ff8894df4bec0d4110883c5f0e9e66c060089f6688009080d00 *00001200a50f8d45ec3b4354720883c7443b7b5c760ac7436c11000000ff63f8c745f8d46d1008 *8975fcc747c000a409088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947 *d48b46188947d88b461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46 *308947f08b46348947f4c747f8e4a409088d47c08945f48d47f88945f0be48d1110883c5ece94b *7006008d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9183b1108894df4bed4d1110883c5f0e9236a06008d7600688009080000020012002100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *d8a509088d4ff8894df4bec0d4110883c5f0e9b66b060089f6688009080d0000001200a50f8d45 *ec3b4354720883c7443b7b5c760ac7436c11000000ff63f8c745f8d46d10088975fcc747c030a5 *09088b46048947c48b46088947c88b460c8947cc8b46108947d08b46148947d48b46188947d88b *461c8947dc8b46208947e08b46248947e48b46288947e88b462c8947ec8b46308947f08b463489 *47f4c747f814a609088d47c08945f48d47f88945f0be48d1110883c5ece91b6f06008d76000100 *000024000000c74500d81112088b760483c5fce9fe6e060089f68c80090801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be2cb41108c745f004a7090883 *c5f0ff26688009080e0000001200a50f8d45ec3b4354720883c7443b7b5c760ac7436c11000000 *ff63f8c745f8d46d10088975fcc747c060a609088b46088947c48b460c8947c88b46108947cc8b *46148947d08b46188947d48b461c8947d88b46208947dc8b46248947e08b46288947e48b462c89 *47e88b46308947ec8b46348947f08b46388947f4c747f824a709088b46048947fc8d47c08945f4 *8d47f88945f0be48d1110883c5ece9196e0600906880090800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b91c3b1108894df4bed4d1110883c5f0e9f36706008d *76006880090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f808a809088d4ff8894df4bec0d4110883c5f0e98669060089f6 *688009080e0000001200a50f8d45ec3b4354720883c7483b7b5c760ac7436c12000000ff63f8c7 *45f8d46d10088975fcc747bc5ca709088b46048947c08b46088947c48b460c8947c88b46108947 *cc8b46148947d08b46188947d48b461c8947d88b46208947dc8b46248947e08b46288947e48b46 *2c8947e88b46308947ec8b46348947f08b46388947f4c747f844a809088d47bc8945f48d47f889 *45f0be48d1110883c5ece9e56c0600906880090800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b92c3b1108894df4bed4d1110883c5f0e9bf6606008d76006880 *090800000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f83ca909088d4ff8894df4bec0d4110883c5f0e95268060089f668800908 *0e0000001200a50f8d45ec3b4354720883c7483b7b5c760ac7436c12000000ff63f8c745f8d46d *10088975fcc747bc90a809088b46048947c08b46088947c48b460c8947c88b46108947cc8b4614 *8947d08b46188947d48b461c8947d88b46208947dc8b46248947e08b46288947e48b462c8947e8 *8b46308947ec8b46348947f08b46388947f4c747f878a909088d47bc8945f48d47f88945f0be48 *d1110883c5ece9b16b0600900100000024000000c74500d81112088b760483c5fce9966b060089 *f67480090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be54a81108c745f06caa090883c5f0ff26688009080f0000001200ad0f8d45ec3b4354720883 *c7483b7b5c760ac7436c12000000ff63f8c745f8d46d10088975fcc747bcc4a909088b46088947 *c08b460c8947c48b46108947c88b46148947cc8b46188947d08b461c8947d48b46208947d88b46 *248947dc8b46288947e08b462c8947e48b46308947e88b46348947ec8b46388947f08b463c8947 *f4c747f88caa09088b46048947fc8d47bc8945f48d47f88945f0be48d1110883c5ece9ab6a0600 *8d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b9303b1108894df4bed4d1110883c5f0e9836406008d76006880090800000200120021008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f878ab09 *088d4ff8894df4bec0d4110883c5f0e91666060089f6688009080f0000001200ad0f8d45ec3b43 *54720883c74c3b7b5c760ac7436c13000000ff63f8c745f8d46d10088975fcc747b8c4aa09088b *46048947bc8b46088947c08b460c8947c48b46108947c88b46148947cc8b46188947d08b461c89 *47d48b46208947d88b46248947dc8b46288947e08b462c8947e48b46308947e88b46348947ec8b *46388947f08b463c8947f4c747f8b4ab09088d47b88945f48d47f88945f0be48d1110883c5ece9 *6f6906008d76006880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b93c3b1108894df4bed4d1110883c5f0e9476306008d76006880090800000200120021 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8b4ac09088d4ff8894df4bec0d4110883c5f0e9da64060089f6688009080f0000001200ad0f8d *45ec3b4354720883c74c3b7b5c760ac7436c13000000ff63f8c745f8d46d10088975fcc747b800 *ac09088b46048947bc8b46088947c08b460c8947c48b46108947c88b46148947cc8b46188947d0 *8b461c8947d48b46208947d88b46248947dc8b46288947e08b462c8947e48b46308947e88b4634 *8947ec8b46388947f08b463c8947f4c747f8f0ac09088d47b88945f48d47f88945f0be48d11108 *83c5ece9336806008d76000100000024000000c74500d81112088b760483c5fce91668060089f6 *8080090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *be24c51108c745f0ecad090883c5f0ff2668800908100000001200ed0f8d45ec3b4354720883c7 *4c3b7b5c760ac7436c13000000ff63f8c745f8d46d10088975fcc747b83cad09088b46088947bc *8b460c8947c08b46108947c48b46148947c88b46188947cc8b461c8947d08b46208947d48b4624 *8947d88b46288947dc8b462c8947e08b46308947e48b46348947e88b46388947ec8b463c8947f0 *8b46408947f4c747f80cae09088b46048947fc8d47b88945f48d47f88945f0be48d1110883c5ec *e925670600906880090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9403b1108894df4bed4d1110883c5f0e9ff6006008d7600688009080000020012002100 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *fcae09088d4ff8894df4bec0d4110883c5f0e99262060089f668800908100000001200ed0f8d45 *ec3b4354720883c7503b7b5c760ac7436c14000000ff63f8c745f8d46d10088975fcc747b444ae *09088b46048947b88b46088947bc8b460c8947c08b46108947c48b46148947c88b46188947cc8b *461c8947d08b46208947d48b46248947d88b46288947dc8b462c8947e08b46308947e48b463489 *47e88b46388947ec8b463c8947f08b46408947f4c747f838af09088d47b48945f48d47f88945f0 *be48d1110883c5ece9e5650600906880090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b94c3b1108894df4bed4d1110883c5f0e9bf5f06008d760068800908 *00000200120021008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f83cb009088d4ff8894df4bec0d4110883c5f0e95261060089f6688009081000 *00001200ed0f8d45ec3b4354720883c7503b7b5c760ac7436c14000000ff63f8c745f8d46d1008 *8975fcc747b484af09088b46048947b88b46088947bc8b460c8947c08b46108947c48b46148947 *c88b46188947cc8b461c8947d08b46208947d48b46248947d88b46288947dc8b462c8947e08b46 *308947e48b46348947e88b46388947ec8b463c8947f08b46408947f4c747f878b009088d47b489 *45f48d47f88945f0be48d1110883c5ece9a56406009001000000240000008b4504894500c74504 *301212088b761483c5fce9846406006c80090801000100130001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be90d11108c745f078b1090883c5f0ff2668800908420000 *002400ff0f83c7503b7b5c760ac7436c14000000ff63f8c747b4c4b009088b46048947b88b4608 *8947bc8b460c8947c08b46108947c48b46148947c88b46188947cc8b461c8947d08b46208947d4 *8b46248947d88b46288947dc8b462c8947e08b46308947e48b46348947e88b46388947ec8b463c *8947f08b46408947f4c747f89cb109088b45048947fc8d47b48945088d47f8894504bebcd41108 *e9a4630600688009080b000200000000001100ff0f8d45fc3b43547308bef8c21108ff63fc8b75 *04c745fcd4b1090883c5fcff2690f8c2110800c31108a0b2090800000200180003008d45f03b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8794b060083c4048d47 *f8894604c706245b1008c745f8d46d10088d47f88945fcc745f400c31108bef8c2110883c5f0e9 *fd5e060090ccd4110808c311080cb3090800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e80d4b060083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f408c31108beccd4110883c5f0e9915e060090d4d41108 *28c3110878b3090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8a14a060083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f428c31108bed4d4110883c5f0e9255e06009000000000240000008b760483c5 *04ff260400010000000000110000008b7500c74500ecb30908ff2600000000240000008b760883 *c504ff260400010000000000110000008b7500c7450014b40908ff2600000000240000008b760c *83c504ff260400010000000000110000008b7500c745003cb40908ff2600000000240000008b76 *0483c504ff260400010000000000110000008b7500c7450064b40908ff2600000000240000008b *760883c504ff260400010000000000110000008b7500c745008cb40908ff260000000024000000 *8b760c83c504ff260400010000000000110000008b7500c74500b4b40908ff2600000000240000 *008b761083c504ff260400010000000000110000008b7500c74500dcb40908ff26000000002400 *00008b761483c504ff260400010000000000110000008b7500c7450004b50908ff260000000024 *0000008b761883c504ff260400010000000000110000008b7500c745002cb50908ff2600000000 *240000008b761c83c504ff260400010000000000110000008b7500c7450054b50908ff26000000 *00240000008b762083c504ff260400010000000000110000008b7500c745007cb50908ff260000 *0000240000008b762483c504ff260400010000000000110000008b7500c74500a4b50908ff2600 *000000240000008b762883c504ff260400010000000000110000008b7500c74500ccb50908ff26 *00000000240000008b762c83c504ff260400010000000000110000008b7500c74500f4b50908ff *2600000000240000008b763083c504ff260400010000000000110000008b7500c745001cb60908 *ff2600000000240000008b763483c504ff260400010000000000110000008b7500c7450044b609 *08ff2600000000240000008b760483c504ff260400010000000000110000008b7500c745006cb6 *0908ff2600000000240000008b760883c504ff260400010000000000110000008b7500c7450094 *b60908ff2600000000240000008b760483c504ff260400010000000000110000008b7500c74500 *bcb60908ff2600000000240000008b760883c504ff260400010000000000110000008b7500c745 *00e4b60908ff2600000000240000008b760c83c504ff260400010000000000110000008b7500c7 *45000cb70908ff2600000000240000008b761083c504ff260400010000000000110000008b7500 *c7450034b70908ff2600000000240000008b761483c504ff260400010000000000110000008b75 *00c745005cb70908ff2600000000240000008b761883c504ff260400010000000000110000008b *7500c7450084b70908ff2600000000240000008b761c83c504ff26040001000000000011000000 *8b7500c74500acb70908ff2600000000240000008b762083c504ff260400010000000000110000 *008b7500c74500d4b70908ff2600000000240000008b762483c504ff2604000100000000001100 *00008b7500c74500fcb70908ff2600000000240000008b762883c504ff26040001000000000011 *0000008b7500c7450024b80908ff2600000000240000008b762c83c504ff260400010000000000 *110000008b7500c745004cb80908ff2600000000240000008b763083c504ff2604000100000000 *00110000008b7500c7450074b80908ff2600000000240000008b763483c504ff26040001000000 *0000110000008b7500c745009cb80908ff2600000000240000008b763883c504ff260400010000 *000000110000008b7500c74500c4b80908ff2600000000240000008b763c83c504ff2604000100 *00000000110000008b7500c74500ecb80908ff2600000000240000008b764083c504ff26040001 *0000000000110000008b7500c7450014b90908ff2683c500e91800000034b909080d0000000000 *000000000d00000000001100000083c7383b7b5c7612bed4c3110883c500c7436c0e000000ff63 *fcc747cc28c409088b45008947d08b45048947d48b45088947d88b450c8947dc8b45108947e08b *45148947e48b45188947e88b451c8947ec8b45208947f08b45248947f48b45288947f88b452c89 *47fc8b453089078d77cc83c534ff6500900b0000002400000083c7383b7b5c760ac7436c0e0000 *00ff63f8c747cc28c409088b45248947d08b45288947d48b45208947d88b451c8947dc8b452c89 *47e08b45188947e48b45108947e88b45148947ec8b450c8947f08b45088947f48b45048947f88b *46048947fc8b460889078d77cc83c530ff6500900a000000240000008b46088945008b4d048b56 *0489550489cec745fcd4b9090883c5fcff268d760009000000240000008b46088945008b7604c7 *45fc4cba090883c5fcff268d760008000000240000008b46088945008b4d088b560489550889ce *c745fc74ba090883c5fcff268d760007000000240000008b46048945008b7608c745fc94ba0908 *83c5fcff268d760006000000240000008b46088945008b7604c745fcbcba090883c5fcff268d76 *0005000000240000008b46088945008b4d148b560489551489cec745fcdcba090883c5fcff268d *760004000000240000008b46048945008b7608c745fcfcba090883c5fcff268d76000300000024 *0000008b46088945008b4d088b560489550889cec745fc24bb090883c5fcff268d760002000000 *240000008b46048945008b7608c745fc44bb090883c5fcff268d760001000000240000008b4608 *8945008b7604c745fc6cbb090883c5fcff268d760000000000240000008b46088945008b7604c7 *45fc8cbb090883c5fcff268d76000400010000000000110000008d45d43b43547308bed8c31108 *ff63fc8b7500c74500acbb0908ff26000000002400000081c7900000003b7b5c760ac7436c2400 *0000ff63f8c78774ffffffd8dc0b088b4630898778ffffff8b463489877cffffffc74780d8dc0b *088b46288947848b462c894788c7478cd8dc0b088d47808947908d8774ffffff894794c74798d8 *dc0b088b462089479c8b46248947a0c747a4d8dc0b088b461c8947a88d47988947acc747b0d8dc *0b088d47a48947b48d478c8947b8c747bcd8dc0b088b46148947c08b46188947c4c747c8d8dc0b *088b46108947cc8d47bc8947d0c747d4d8dc0b088b46088947d88b460c8947dcc747e0d8dc0b08 *8b46048947e48d47d48947e8c747ecd8dc0b088d47e08947f08d47c88947f4c747f8d8dc0b088d *47ec8947fc8d47b089078d77f883c504ff65008d76000400010000000000110000008b7500c745 *00f4bb0908ff260b000200000000001100000083c70c3b7b5c760fbee0c31108c7436c03000000 *ff63fcc747f840c409088b45008947fc8b4d04890f8d77f883c508ff650089f600000000240000 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f840c409088b46048947fc8b4e08890f8d77 *f883c504ff65008d76000400010000000000110000008b7500c7450064bd0908ff260000000024 *00000083c70c3b7b5c760ac7436c03000000ff63f8c747f8d8dc0b088b46048947fc8b4e08890f *8d77f883c504ff65008d76000400010000000000110000008b7500c74500b4bd0908ff26160003 *00000000001100000083c7103b7b5c760fbeecc31108c7436c04000000ff63fcc747f410c40908 *8b45008947f88b4d04894ffc8b550889178d77f483c50cff6500010000002400000083c7103b7b *5c760ac7436c04000000ff63f8c747f410c409088b45048947f88b4e04894ffc8b560889178d77 *f483c508ff65009000000000240000008b46048945008b7608c745fc48be090883c5fcff268d76 *000400010000000000110000008d45fc3b43547308bef0c31108ff63fc8b7500c7450084be0908 *ff26000000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ecd8dc0b088b460889 *47f08b460c8947f4c747f8d8dc0b088b46048947fc8d47ec89078d77f883c504ff650004000100 *00000000110000008b7500c74500ccbe0908ff2683c500e91800000024bf090810000000000000 *0000001000000000001100000083c7443b7b5c7612bef8c3110883c500c7436c11000000ff63fc *c747c058c409088b45008947c48b45048947c88b45088947cc8b450c8947d08b45108947d48b45 *148947d88b45188947dc8b451c8947e08b45208947e48b45248947e88b45288947ec8b452c8947 *f08b45308947f48b45348947f88b45388947fc8b453c89078d77c083c540ff65008d76000e0000 *002400000083c7443b7b5c760ac7436c11000000ff63f8c747c058c409088b45308947c48b452c *8947c88b45348947cc8b45288947d08b45248947d48b45208947d88b45388947dc8b451c8947e0 *8b45148947e48b45108947e88b45188947ec8b450c8947f08b45088947f48b45048947f88b4604 *8947fc8b460889078d77c083c53cff65008d76000d000000240000008b46088945008b4d048b56 *0489550489cec745fcd8bf090883c5fcff268d76000c000000240000008b46088945008b7604c7 *45fc64c0090883c5fcff268d76000b000000240000008b46088945008b4d0c8b560489550c89ce *c745fc8cc0090883c5fcff268d76000a000000240000008b46088945008b4d048b560489550489 *cec745fcacc0090883c5fcff268d760009000000240000008b46088945008b7604c745fcd4c009 *0883c5fcff268d760008000000240000008b46088945008b7604c745fcfcc0090883c5fcff268d *760007000000240000008b46088945008b4d1c8b560489551c89cec745fc1cc1090883c5fcff26 *8d760006000000240000008b46088945008b4d048b560489550489cec745fc3cc1090883c5fcff *268d760005000000240000008b46088945008b7604c745fc64c1090883c5fcff268d7600040000 *00240000008b46088945008b4d0c8b560489550c89cec745fc8cc1090883c5fcff268d76000300 *0000240000008b46088945008b4d048b560489550489cec745fcacc1090883c5fcff268d760002 *000000240000008b46088945008b7604c745fcd4c1090883c5fcff268d76000100000024000000 *8b46088945008b7604c745fcfcc1090883c5fcff268d760000000000240000008b46088945008b *7604c745fc1cc2090883c5fcff268d76000400010000000000110000008d45c83b43547308befc *c31108ff63fc8b7500c745003cc20908ff26000000002400000081c7b40000003b7b5c760ac743 *6c2d000000ff63f8c78750ffffffd8dc0b088b463c898754ffffff8b4640898758ffffffc7875c *ffffffd8dc0b088b4634898760ffffff8b4638898764ffffffc78768ffffffd8dc0b088d875cff *ffff89876cffffff8d8750ffffff898770ffffffc78774ffffffd8dc0b088b462c898778ffffff *8b463089877cffffffc74780d8dc0b088b46248947848b4628894788c7478cd8dc0b088d478089 *47908d8774ffffff894794c74798d8dc0b088d478c89479c8d8768ffffff8947a0c747a4d8dc0b *088b461c8947a88b46208947acc747b0d8dc0b088b46148947b48b46188947b8c747bcd8dc0b08 *8d47b08947c08d47a48947c4c747c8d8dc0b088b460c8947cc8b46108947d0c747d4d8dc0b088b *46048947d88b46088947dcc747e0d8dc0b088d47d48947e48d47c88947e8c747ecd8dc0b088d47 *e08947f08d47bc8947f4c747f8d8dc0b088d47ec8947fc8d479889078d77f883c504ff650089f6 *0400010000000000110000008b7500c7450084c20908ff260300000001000000ff650090030000 *0009000000ff6500900d00000001000000ff6500900d00000009000000ff650090020000000400 *0000ff6500900200000009000000ff6500901000000001000000ff6500901000000009000000ff *650090e900000000833d04c4110800753cc70504c4110801000000c7450004aa0b0883c504c745 *003519050883c504c7450090310c0883c504c7450050a70b0883c504c745004dec090883c50483 *c5fcff6500b8d3110880d111083cc61108e4c61108acc6110894c61108b0d0110848d51108d0c4 *090801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f87cdc0b08c747fcc00a1208c70700d211088b4e04894df48d57f88955f0 *beb0d0110883c5ece9df5006008d7600b8c4090801000100130041008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e4c409088b4e04894ffc8d *57f88955f4beb8d3110883c5f0e9804c0600b8c40908010000002400410083c70c3b7b5c760ac7 *436c03000000ff63f8c747f844c509088b45048947fc8d4ff8894d048b760ce9474c06008d7600 *b8c4090804000100000001000b0045008d45fc3b43547303ff63fcbe3cc61108c745fc94c50908 *83c5fcff26bcc4090800000200120011008d45ec3b43547303ff63f8c745f8d46d10088975fcc7 *45f4c00a1208c745f080d11108be94c6110883c5ece9e84f0600c8c4090800000200120009008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f448d51108beacc6110883c5f0e9a74b06 *008d7600bcc409080000020012005d008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ecfcc50908c747f838c609088d4fec894df48d57f88955f0 *bee4c6110883c5ece9594f060090b8c40908000000002400ff0083c7143b7b5c760ac7436c0500 *0000ff63f8c747f0d4c50908c747f870c609088d47f08945008d4ff8894dfc8b760483c5f8e915 *4f060090b8c40908000002001800ff008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e82137060083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcbe3cc61108c745f4c8c6090883c5f4ff26d4a4110800000000240000008b760ce928 *40060060c7090800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c747f8085c100856e8ad36060083c4048d47f8894604c706245b1008c745f8d46d10088d47 *f88945fcbed4a41108c745f46cc7090883c5f4ff2684d411084cd41108d4c70908000002001800 *03008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e84536 *060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f44cd41108be84 *d4110883c5f0e9c94906009028c4110800000000240000008b760ce9483f060040c80908000002 *00180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8cd35060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe28c41108c7 *45f44cc8090883c5f4ff26f4d41108d8d41108b4c8090800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e86535060083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f4f4d41108bed8d4110883c5f0e9e94806 *009080d1110894c6110820c9090800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8f934060083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f480d11108be94c6110883c5f0e97d480600907cc611083cc611 *0844a3110808c4110858c41108020000002400000083c70c3b7b5c760ac7436c03000000ff63f8 *c747f838ec09088b45048947fc8b4d08890f8d57f88955088b760c83c504e92b4806008d760090 *c9090804000100010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbe3cc61108c745 *f8a8c9090883c5f8ff2689f6000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f87c9f0508c747fc00d21108c70700d211088d47f88945008b760c83c5fce9b54706009090c9 *090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f4 *1cca090883c5f4ff2689f69cc9090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fcc745f4c00a1208be58c4110883c5f0e94b4706008d760094c9090800000000240005 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f894ca0908c7450044a311088d47f88945fc *8b760883c5f8e9174b06008d760090c909080000020012000b008d45ec3b43547303ff63f8c745 *f8d46d10088975fcbe3cc61108c745f4ccca090883c5f4ff2689f68cc909080000020012001700 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *60ca0908c747f80ccb09088d4fec894df48d57f88955f0be7cc6110883c5ece9894a0600908cc9 *0908010000002400170083c7143b7b5c760ac7436c05000000ff63f8c747f0f0c909088b450489 *47f4c747f840cb09088d4ff0894d048d57f88955008b760483c5fce93f4a06008d76008cc90908 *04000100000001000b0017008d45f83b43547303ff63fcbe3cc61108c745fc98cb090883c5fcff *268cc909080000000024001f0083c7083b7b5c760ac7436c02000000ff63f8c747fce8cb09088d *47fc894500c745fc08c411088b760483c5f8e9d34906008d76008cc909080000020018001f008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8dd31060083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe3cc61108c745f410cc0908 *83c5f4ff26ccd1110880d11108a4cc090800000200180003008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c747f8085c100856e87531060083c4048d47f8894604c706245b10 *08c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e9f944060090bcd11108 *64a6110878c4110802000000240000008b45088b4d04894d088945048b7608e9dc48060014cd09 *0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be64a61108c745ec24cd090883c5ecff2689f602000000240000008b45088b4d04894d08 *8945048b7608e98048060018cd090802000000150001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e08894df08b56048955f4be78c41108c745ec80cd090883c5ecff2689f610cd09 *08020000002400070083c7183b7b5c760ac7436c06000000ff63f8c747ec44cd09088b45048947 *f08b46088947f4c747f8a0cd09088b45088947fc8b460489078d47ec8945088d47f8894504bebc *d11108e9e74706008d760010cd090801000000240007008b46088945008b4d048b560489550489 *cec745fce0cd090883c5fcff268d760010cd09080b00020000000000110007008d45fc3b435473 *08be88c41108ff63fc8b7500c745003cce0908ff2654d1110888c411088cce0908020000001500 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f083c5f0eb *aa89f688ce09080b000200000000001100030083c70c3b7b5c760fbe90c41108c7436c03000000 *ff63fcc747f89cce09088b45008947fc8b4d04890f8d57f8895504be54d11108e9fb4206008d76 *00d4d1110890d1110848d11108bcd41108c0d4110880a4110848c4110820cf0908000002001200 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f87cdc0b08c747fc400d1208c70700d211088d4ff8894df4bec0d4110883c5f0e98542060090 *0100000024000000c74500d81112088b760483c5fce97646060089f624cf090801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be80a41108c745f08ccf09 *0883c5f0ff2618cf09080100010013000d008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec38cf0908c747f8accf09088b46048947fc8d47ec89 *45f48d47f88945f0be48d1110883c5ece9df4506008d760010cf090800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b9643b1108894df4bed4d1110883c5f0e9b7 *3f06008d760010cf090800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f844d009088d4ff8894df4bec0d4110883c5f0e94a41 *060089f610cf090801000100130035008d45ec3b4354720883c7183b7b5c760ac7436c06000000 *ff63f8c745f8d46d10088975fcc747ece4cf09088b46048947f0c747f880d009088d47ec8945f4 *8d47f88945f0be48d1110883c5ece9f74406008d760010cf090800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9743b1108894df4bed4d1110883c5f0e9cf3e06 *008d760010cf090800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f82cd109088d4ff8894df4bec0d4110883c5f0e962400600 *89f610cf090801000100130035008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63 *f8c745f8d46d10088975fcc747ecccd009088b46048947f0c747f868d109088d47ec8945f48d47 *f88945f0be48d1110883c5ece90f4406008d76000100000024000000c74500d81112088b760483 *c5fce9f243060089f628cf090801000100130001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4be48c41108c745f010d2090883c5f0ff2610cf090802000000150075008d *45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb4 *d109088b46088947f0c747f830d209088b46048947fc8d47ec8945f48d47f88945f0be48d11108 *83c5ece9554306009010cf090800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9783b1108894df4bed4d1110883c5f0e92f3d06008d760010cf09080000020012 *0011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8ccd209088d4ff8894df4bec0d4110883c5f0e9c23e060089f610cf090802000000150075 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec68d209088b46048947f08b46088947f4c747f808d309088d47ec8945f48d47f88945f0be48d1 *110883c5ece9694206009010cf090800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9843b1108894df4bed4d1110883c5f0e9433c06008d760010cf0908000002 *00120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8b8d309088d4ff8894df4bec0d4110883c5f0e9d63d060089f610cf09080200000015 *0075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ec54d309088b46048947f08b46088947f4c747f8f4d309088d47ec8945f48d47f88945f0be *48d1110883c5ece97d4106009001000000240000008b4504894500c74504301212088b761483c5 *fce95c41060014cf090801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be90d11108c745f0a0d4090883c5f0ff2610cf09084200000024007f0083c7183b *7b5c760ac7436c06000000ff63f8c747ec40d409088b46048947f08b46088947f4c747f8c4d409 *088b45048947fc8d47ec8945088d47f8894504bebcd41108e9d040060010cf09080b0002000000 *000011007f008d45fc3b43547308bea8c41108ff63fc8b7504c745fcfcd4090883c5fcff2690a8 *c41108b0c4110874d5090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8a528060083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f4b0c41108bea8c4110883c5f0e9293c060090ccd41108b8c41108e0d5 *090800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e83928060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4b8c41108beccd4110883c5f0e9bd3b060090c4d11108d4d1110828d41108a8d6110888d611 *0898d6110818c4110838c4110850d6090800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9983b1108894df4bed4d1110883c5f0e9833906008d760050d6090842 *0000002400010083c70c3b7b5c761ec74500b4d60908c7436c03000000b8ff00000083f0008943 *20e9d6660600c747f878d609088d4ff8894d088b750483c504e9163b060089f650d60908000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e43b1108894df4bed4 *d1110883c5f0e9fb3806008d760083c504e97cffffff50d6090800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b9f83b1108894df4bed4d1110883c5f0e9b73806 *008d760050d60908420000002400010083c70c3b7b5c761ec7450080d70908c7436c03000000b8 *ff00000083f000894320e90a660600c747f844d709088d4ff8894d088b750483c504e94a3a0600 *89f683c504ebbb8d760050d6090800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b9443c1108894df4bed4d1110883c5f0e9273806008d760050d6090842000000 *2400010083c70c3b7b5c761ec7450010d80908c7436c03000000b8ff00000083f000894320e97a *650600c747f8d4d709088d4ff8894d088b750483c504e9ba39060089f650d60908000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9903c1108894df4bed4d11108 *83c5f0e99f3706008d760083c504e97cffffff50d6090800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b9983c1108894df4bed4d1110883c5f0e95b3706008d76 *0050d60908420000002400010083c70c3b7b5c761ec74500dcd80908c7436c03000000b8ff0000 *0083f000894320e9ae640600c747f8a0d809088d4ff8894d088b750483c504e9ee38060089f683 *c504ebbb8d760050d6090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9e43c1108894df4bed4d1110883c5f0e9cb3606008d760050d6090842000000240001 *0083c70c3b7b5c761ec745006cd90908c7436c03000000b8ff00000083f000894320e91e640600 *c747f830d909088d4ff8894d088b750483c504e95e38060089f683c508ebbb8d760050d6090800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9303d1108894df4 *bed4d1110883c5f0e93b3606008d760050d60908420000002400010083c70c3b7b5c761ec74500 *fcd90908c7436c03000000b8ff00000083f000894320e98e630600c747f8c0d909088d4ff8894d *088b750483c504e9ce37060089f650d6090800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b97c3d1108894df4bed4d1110883c5f0e9b33506008d760083c508e9 *7cffffff50d6090800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b9883d1108894df4bed4d1110883c5f0e96f3506008d760050d60908420000002400010083c7 *0c3b7b5c761ec74500c8da0908c7436c03000000b8ff00000083f000894320e9c2620600c747f8 *8cda09088d4ff8894d088b750483c504e90237060089f683c508ebbb8d760050d6090800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d43d1108894df4bed4d1 *110883c5f0e9df3406008d760050d60908420000002400010083c70c3b7b5c761ec7450058db09 *08c7436c03000000b8ff00000083f000894320e932620600c747f81cdb09088d4ff8894d088b75 *0483c504e97236060089f683c508ebbb8d760083c70c3b7b5c760ac7436c03000000ff63f8c747 *f838ec09088b45108947fc8b4d08890f8d57f88955108b750483c50ce9333606008d760083c508 *e978ffffffd8db0908a0db090850d60908040000002500010050d6090805000000240001008b46 *0483f87d750f8b7504c74504f4db090883c504ff2683c50ce939ffffff908b46088945008b7604 *c745fc00dc090883c5fcff268d760020dc090898db090850d6090804000000250001008b7604c7 *45004cdc0908ff2683c508e9f8feffff58dc090858dc090858dc090858dc090858dc09084cdc09 *0858dc090858dc090850d60908040000002500010050d6090804000100040000000b0001008d45 *ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b45008b4e08894d0089c6c7 *45f08cdc090883c5f0ff2650d6090804000100040000000b0003008d45f83b4354720883c7143b *7b5c760ac7436c05000000ff63fcc747f09cdc09088b46048947f48b46088947f88b45008947fc *8b460c89078d47f0894500c745fc28d411088b761083c5f8e9e438060060d60908000002001200 *03008d45f03b43547303ff63f8c745f8d46d10088975fcc745f418c41108be98d6110883c5f0e9 *a33406008d760083c7203b7b5c760ac7436c08000000ff63f8c747e4e0dc09088b450c8947e88b *45108947ec8b45088947f08b45048947f4c747f83cdd09088d47e48945108d47f889450c8b7504 *83c508e95d3806009083c508e908fdffffb8dd090868dd090850d60908040000002500330050d6 *090805000000240033008b460483f83d750f8b7504c74504d4dd090883c504ff2683c50ce9c9fc *ffff908b46088945008b7604c745fce0dd090883c5fcff268d760000de090808db090850d60908 *04000000250033008b7604c745002cde0908ff2683c508e988fcffff38de090838de090838de09 *0838de090838de09082cde090838de090838de090850d60908040000002500330050d609080400 *0100040000000b0033008d45ec3b43547303ff63fc8b46048945fc8b46108945f48b460c8945f8 *8b45008b4e08894d0089c6c745f06cde090883c5f0ff2683c7143b7b5c760ac7436c05000000ff *63f8c747f07cde09088b450c8947f48b45108947f88b45088947fc8b450489078d47f0894510c7 *450c28d411088b750483c508e91c370600b0de090878da090850d60908040000002500330083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f848da09088b46048945fc8d4ff8894df8bec4d111 *08c745000cdf090883c5f4e9cf3606008d760083c508e9acfaffff48df090848df090848df0908 *48df09080cdf090848df090848df090848df09084cd6090804000000250067004cd60908040001 *00040000000b0067008d45e43b43547303ff63fc8b46048945fc8b46108945f48b460c8945f88b *45008b4e08894d0089c6c745f07cdf090883c5f0ff2683c7143b7b5c760ac7436c05000000ff63 *f8c747f08cdf09088b450c8947f48b45108947f88b45088947fc8b450489078d47f0894510c745 *0c28d411088b750483c508e90c36060083c508e95cf9ffff08e00908c0df09084cd60908040000 *00250067004cd6090805000000240067008b460483f82c750f8b7504c7450424e0090883c504ff *2683c50ce91df9ffff908b46088945008b7604c745fc30e0090883c5fcff268d760050e00908ac *d909084cd6090804000000250067008b7604c745007ce00908ff2683c508e9dcf8ffff88e00908 *88e0090888e0090888e0090888e009087ce0090888e0090888e009084cd6090804000000250067 *004cd6090804000100040000000b0067008d45ec3b43547303ff63fc8b46048945fc8b46108945 *f48b460c8945f88b45008b4e08894d0089c6c745f0bce0090883c5f0ff264cd609080400010003 *0000000b0067008d45f83b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0cce009 *088b46048947f48b45008947f88b46088947fc8b460c89078d47f0894500c745fc28d411088b76 *0c83c5f8e9b434060060d6090800000200120005008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f438c41108be98d6110883c5f0e9733006008d760083c71c3b7b5c760ac7436c0700 *0000ff63f8c747e810e109088b45088947ec8b450c8947f08b45048947f4c747f86ce109088d47 *e889450c8d47f88945088b750483c504e9333406008d760083c504e9f0f6ffffe4e1090898e109 *084cd60908030000002500e7004cd60908040000002400e7008b460483f83d750f8b7504c74504 *00e2090883c504ff2683c508e9b1f6ffff908b46088945008b7604c745fc0ce2090883c5fcff26 *8d76002ce209081cd909084cd60908030000002500e7008b7604c7450058e20908ff2683c504e9 *70f6ffff64e2090864e2090864e2090864e2090864e2090858e2090864e2090864e209084cd609 *08030000002500e7004cd6090804000100030000000b00e7008d45f03b43547303ff63fc8b4604 *8945fc8b460c8945f88b45008b4e08894d0089c6c745f498e2090883c5f4ff2689f683c7103b7b *5c760ac7436c04000000ff63f8c747f4a8e209088b45088947f88b450c8947fc8b450489078d47 *f489450cc7450828d411088b750483c504e9fa32060089f6d8e209088cd809084cd60908030000 *002500e70083c70c3b7b5c760ac7436c03000000ff63f8c747f85cd809088b46048945fc8d4ff8 *894df8bec4d11108c7450030e3090883c5f4e9ab3206008d760083c504e99cf4ffff6ce309086c *e309086ce309086ce3090830e309086ce309086ce309086ce309084cd60908030000002500e700 *4cd6090804000100030000000b00e7008d45e83b43547303ff63fc8b46048945fc8b460c8945f8 *8b45008b4e08894d0089c6c745f4a0e3090883c5f4ff2689f683c7103b7b5c760ac7436c040000 *00ff63f8c747f4b0e309088b45088947f88b450c8947fc8b450489078d47f489450cc7450828d4 *11088b750483c504e9f231060089f683c504e954f3ffff24e40908e0e309084cd6090803000000 *2500e7004cd60908040000002400e7008b460483f87b750f8b7504c7450440e4090883c504ff26 *83c508e915f3ffff908b46088945008b7604c745fc4ce4090883c5fcff268d76006ce40908c0d7 *09084cd60908030000002500e7008b7604c7450098e40908ff2683c504e9d4f2ffffa4e40908a4 *e40908a4e40908a4e40908a4e4090898e40908a4e40908a4e409084cd60908030000002500e700 *4cd6090804000100030000000b00e7008d45f03b43547303ff63fc8b46048945fc8b460c8945f8 *8b45008b4e08894d0089c6c745f4d8e4090883c5f4ff2689f683c7103b7b5c760ac7436c040000 *00ff63f8c747f4e8e409088b45088947f88b450c8947fc8b450489078d47f489450cc7450828d4 *11088b750483c504e9ba30060089f618e5090830d709084cd60908030000002500e70083c70c3b *7b5c760ac7436c03000000ff63f8c747f800d709088b46048945fc8d4ff8894df8bec4d11108c7 *450070e5090883c5f4e96b3006008d760083c504e900f1fffface50908ace50908ace50908ace5 *090870e50908ace50908ace50908ace509084cd60908030000002500e7004cd609080400010003 *0000000b00e7008d45e83b43547303ff63fc8b46048945fc8b460c8945f88b45008b4e08894d00 *89c6c745f4e0e5090883c5f4ff2689f64cd60908000000002400e70083c7103b7b5c760ac7436c *04000000ff63f8c747f4f0e509088b46108947f88b460c8947fc8b460489078d47f4894500c745 *fc28d411088b760483c5f8e9a62f060089f64cd60908000002001200ef008d45ec3b43547303ff *63f8c745f8d46d10088975fcbea8d61108c745f42ce6090883c5f4ff2689f64cd6090800000200 *1800ff008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8 *7d17060083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f87ce60908 *8d47f88945f4c745f028121208be88d6110883c5ece9002f060020d41108d8c4110814e7090800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e80517060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d8 *c41108be20d4110883c5f0e9892a060090e4d111085ca411088b750883c50cff2684e709080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be5ca4110883 *c5f0e9442a060083c7183b7b5c760ac7436c06000000ff63f8c747ec9ce709088b45048947f0c7 *47f87cdc0b08c747fcc00a12088d47ec89078b45088945048d47f8894508bee4d11108e9082e06 *00c4e7090888e7090880e70908020000002500030080e7090801000000240003008975008b7604 *c745fc20e8090883c5fcff2689f680e7090800000000240003008b46048945008b7608c745fc2c *e8090883c5fcff268d760080e709080400010000000000110003008d45f83b43547308bef8c411 *08ff63fc8b7500c745004ce80908ff26d4d4110800c5110890e8090800000200180003008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88915060083c404 *8d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f400c51108bed4d4110883c5 *f0e90d2906009000c51108fce8090800000200180001008d45f83b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e82115060083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcbe00c5110883c5f8e9f043020048d4110834c5110844d4110834c5 *11083cd4110834c511085ce9090800000200180003008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8ad14060083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f434c51108be48d4110883c5f0e9312806009064e90908000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e84914060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f434c511 *08be44d4110883c5f0e9cd270600906ce9090800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e8e513060083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f434c51108be3cd4110883c5f0e9692706009034c5 *1108a0ea090800000200180001008d45f83b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e87d13060083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcbe34c5110883c5f8e9f432020000000000240000008b760483c504ff2604000100000000 *00110000008b7500c7450008eb0908ff2600000000240000008b760883c504ff26040001000000 *0000110000008b7500c7450030eb0908ff260b000200000000001100000083c70c3b7b5c760fbe *94c51108c7436c03000000ff63fcc747f838ec09088b45008947fc8b4d04890f8d77f883c508ff *650089f6000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f838ec09088b46 *048947fc8b4e08890f8d77f883c504ff65008d76000400010000000000110000008b7500c74500 *98eb0908ff26000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f8d8dc0b08 *8b46048947fc8b4e08890f8d77f883c504ff65008d76000400010000000000110000008b7500c7 *4500e8eb0908ff260200000004000000ff6500900200000009000000ff650090e900000000833d *a0c51108007528c705a0c5110801000000c7450004a10b0883c504c7450090310c0883c504c745 *0050a70b0883c50483c5fcff650004000100030000000b0000008d45f83b4354720883c70c3b7b *5c760ac7436c03000000ff63fcc747f88c6b10088b46088947fc8b450089078d47f88945008b46 *048945fc8b760c83c5f8e9412906009005000000120000008d45ec3b4354720883c7103b7b5c76 *0ac7436c04000000ff63f8c745f8d46d10088975fcc747f490ec09088b46088947f88b460c8947 *fc8b461089078d47f48945f48b46048945f08b761483c5ece9e528060090030000002400000083 *c7183b7b5c760ac7436c06000000ff63f8c747ecdcec09088b450c8947f08b45088947f48b460c *8947f88b46088947fc8b460489078d47ec89450c8b45048945088b760883c504e98f2806008d76 *001700040000000000110000008b7500c7450038ed0908ff2684d3110894d01108a4ed09080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be94d0110883 *c5f0e92c240600a0ed090802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e08894df48b56048955f0be84d3110883c5ece9fe27060089f6a0ed09080b000200010000 *000c00010083c70c3b7b5c760ac7436c03000000ff63fcc747f8e8ed09088b45008947fc8b4d04 *890f8d57f88955048b7604e9ae23060089f6a0ed090804000100000000001100030083c7143b7b *5c760fbea8c51108c7436c05000000ff63fcc747f0b4ed09088b45008947f4c747fc28ee09088d *4ff0890f8d77fc83c504ff65008d7600040001000000000011000000be54c7110883c5048b4500 *ff60e889f604000100000000001100000083c7083b7b5c760fbeb4c51108c7436c02000000ff63 *fcc747fce4440a088b450089078d77fc83c5048b4d00ff61ec9004000100000000001100000083 *c7083b7b5c760fbeb8c51108c7436c02000000ff63fcc747fcc4440a088b450089078d77fc83c5 *048b4d00ff61f090be00d2110883c50c8b4500ff60f089f683c70c3b7b5c760ac7436c03000000 *ff63f8c747f88c6b10088b45088947fc8b460489078b46088945088b75048d47f889450483c504 *e901010000904cef09083cef09080000000002000000250000008b45088b4e04894d0889c6c745 *009cef0908ff2683c70c3b7b5c760ac7436c03000000ff63f8c747f88c6b10088b46048947fc8b *4d08890f8b75048d57f889550483c504e9a30000008d7600be00d2110883c50c8b4500ff60f089 *f683c7283b7b5c760ac7436c0a000000ff63f8c747dcc86b10088b45048947e08b46088947e48b *45088947e8c747ece4bb0b088b46048947f08b45088947f4c747f87cdc0b088d47ec8947fc8d47 *dc89078d77f883c50c8b4500ff60ec8b760483c50cff2654f00908f8ef0908e8ef0908b0ef0908 *9cef09080000000002000000250000000b000200000001000b0000008d45fc3b43547303ff63fc *8b4d0089750089cec745fc7cf0090883c5fcff269000000200180000008d45f83b4354720883c7 *143b7b5c760ac7436c05000000ff63f8c747f0085c100856e87d0d060083c4048d47f0894604c7 *06245b1008c745f8d46d10088d47f08945fcc747fc88f009088d77fc83c5f8e9cf7c06008d7600 *bcc51108be00d2110883c50c8b4500ff60f089f68b750883c50ce9850100009083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b46088947f4c747f87cdc0b088b46 *048947fc8d47ec89078d77f883c5108b4500ff60ec9028f109081cf10908000000000300000025 *00000004000100020000000e0000008d45f43b43547303ff63fc8975f88b46088945fc8b45008b *4e04894d0089c6c745f480f1090883c5f4ff269008f1090803000000120001008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f88c6b10088b4608 *8947fc8b460489078b460c8945f48d47f88945f0bebcc5110883c5ece9012406009008f1090803 *0000002400010083c71c3b7b5c760ac7436c07000000ff63f8c747e88cf109088b45048947ec8b *450c8947f0c747f4c4f109088b46048947f88b45088947fc8b460889078d47f489450c8d77e883 *c50ce91effffff89f68b46088945008b7604c745fc20f2090883c5fcff268d760070f209080cf1 *090808f10908020000002500010008f1090804000100010000000c0001008d45f43b43547303ff *63fc8b4e04894dfc8b550089750089d6c745f89cf2090883c5f8ff268d7600be54c7110883c504 *8b4500ff60e889f683c7083b7b5c760ac7436c02000000ff63f8c747fc34450a0889378d77fc83 *c5048b4500ff60e090e4f20908d4f2090800000000000000002500000008f10908040001000200 *00000e0001008d45fc3b4354720883c7143b7b5c760ac7436c05000000ff63fcc747f0acf20908 *8b46048947f4c747f88c6b10088b46088947fc8b450089078d47f88945fc8d77f0c7450020f309 *0883c5fce92bffffff8d760008f109080b000200000000001100010083c7143b7b5c760fbeccc5 *1108c7436c05000000ff63fcc747f030f309088b45048947f48b45008947f8c747fce4440a088d *47f089078d77fc83c5088b4500ff60ec89f6e8d31108000000002400000083c7083b7b5c760ac7 *436c02000000ff63f8c747fcb8050c08c707000000008d47fc8945008b762483c5fce9f41d0600 *d8f3090800000200180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8085c100856e80d0a060083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945 *fcbee8d31108c745f4e4f3090883c5f4ff263cd11108bcc51108f4c51108e4d111084cd21108bc *c51108e4c5110804000100000001000b000000be54c7110883c5048b4500ff60e889f604000100 *000001000b00000083c70c3b7b5c760ac7436c03000000ff63fcc747f814450a088b45008947fc *c70754c711088d77f883c5048b4d00ff61e48d760004000100030000000b0000008d45fc3b4354 *720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10088b460c8947fc8b450089078b *46048945008d47f88945fc8b760883c5fce9e10300009083c7183b7b5c760ac7436c06000000ff *63f8c747ecf8f409088b45088947f08b45048947f48b46048947f8c747fcc4440a088d47ec8907 *8d77fc83c50c8b4500ff60f09004000100030000000b0000008d45fc3b4354720883c70c3b7b5c *760ac7436c03000000ff63fcc747f88c6b10088b460c8947fc8b450089078b46048945008d47f8 *8945fc8b760883c5fce94d0300009083c7183b7b5c760ac7436c06000000ff63f8c747ec8cf509 *088b45088947f08b45048947f48b46048947f8c747fce4440a088d47ec89078d77fc83c50c8b45 *00ff60ec90be54c7110883c50c8b4500ff60e889f6040000002400000083c71c3b7b5c760ac743 *6c07000000ff63f8c747e8c86b10088b450c8947ec8b45048947f08b45108947f4c747f88c6b10 *088b45108947fc8b450889078d47e88945108d47f889450c8b760c83c508e9941f06008b460889 *45fc8b4e04894d00bef4c51108c745f82cf6090883c5f8ff268d7600be00d2110883c50c8b4500 *ff60f089f68b750883c50ce9850100009083c7183b7b5c760ac7436c06000000ff63f8c747ec8c *6b10088b45048947f08b46088947f4c747f87cdc0b088b46048947fc8d47ec89078d77f883c510 *8b4500ff60ec90bcf60908b0f6090800000000030000002500000004000100020000000e000000 *8d45f43b43547303ff63fc8975f88b46088945fc8b45008b4e04894d0089c6c745f414f7090883 *c5f4ff269078f4090803000000120001008d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f88c6b10088b46088947fc8b460489078b460c8945f48d *47f88945f0bebcc5110883c5ece96d1e06009078f40908030000002400010083c71c3b7b5c760a *c7436c07000000ff63f8c747e820f709088b45048947ec8b450c8947f0c747f458f709088b4604 *8947f88b45088947fc8b460889078d47f489450c8d77e883c50ce91effffff89f68b4608894500 *8b7604c745fcb4f7090883c5fcff268d760004f80908a0f6090878f40908020000002500010078 *f4090804000100010000000c0001008d45f43b43547303ff63fc8b4e04894dfc8b550089750089 *d6c745f830f8090883c5f8ff268d7600be54c7110883c5048b4500ff60e889f683c7083b7b5c76 *0ac7436c02000000ff63f8c747fc34450a0889378d77fc83c5048b4500ff60e09078f8090868f8 *090800000000000000002500000083c7083b7b5c760ac7436c02000000ff63f8c747fc40f80908 *8b450889078b4e04894d048d77fcc74508b4f8090883c504e956ffffff89f6b4f8090880f60908 *14f60908d0f509083cf5090878f40908020000002500030078f409080b000200000001000b0003 *008d45f43b43547303ff63fc8b4d0089750089cec745fc0cf9090883c5fcff269074f409080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cd1110883 *c5f0e99818060074f4090800000200180007008d45f83b4354720883c7443b7b5c760ac7436c11 *000000ff63f8c747c0085c100856e8b104060083c4048d47c0894604c706245b1008c745f8d46d *10088d47c08945fcc747cc9cf40908c747d4b8f40908c747dc1cf90908c747e450dd0b088d47dc *8947e88d47f88947ec8d47d48947f08d47cc8947f4c747f848f909088d47e48947fc8d77e483c5 *f8e945e301009083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b45048947ec8b *45088947f08b46088947f4c747f814450a088b46048947fc8d47e889078d77f883c5108b4500ff *60e48d76008b750c83c510ff268b750c83c510ff2688f4090802000000150001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0bebcc5110883c5ece9721b06 *0089f680f4090803000000120005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f874fa09088b46048947fc8b460889078b460c8945f48d47f8 *8945f0bee4d1110883c5ece9151b06009080f4090804000100020000000e00050083c7183b7b5c *760ac7436c06000000ff63fcc747ecb0fa09088b46048947f08b45008947f48b46088947f8c747 *fc34450a088d47ec89078d77fc83c5048b4500ff60e09083c7143b7b5c760ac7436c05000000ff *63f8c747f010fb09088b450c8947f48b46048947f8c747fce4440a088d47f089078d77fc83c510 *8b4500ff60ec8d760004000100030000000b0000008d45fc3b4354720883c70c3b7b5c760ac743 *6c03000000ff63fcc747f88c6b10088b46088947fc8b450089078b460c8945008d47f88945fc8b *760483c5fce95d0900009083c7183b7b5c760ac7436c06000000ff63f8c747eca0fb09088b4504 *8947f08b450c8947f48977f8c747fce4440a088d47ec89078d77fc83c5108b4500ff60ec040001 *00030000000b0000008d45fc3b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec8c *6b10088b460c8947f08b45008947f4c747f88c6b10088b46088947fc8b450089078d47ec894500 *8d47f88945fc8b760483c5fce9ba08000089f683c7183b7b5c760ac7436c06000000ff63f8c747 *ec30fc09088b45048947f08b450c8947f48b46048947f8c747fce4440a088d47ec89078d77fc83 *c5108b4500ff60ec9000000000000000000000000088fc0908e4fb090800000000430000002500 *00008b450c8b4e04894d0c89c6c74500ecfc0908ff26b8203e110889450cbe4cd2110883c508e9 *131306008d760004000100030000000b0000008d45fc3b4354720883c70c3b7b5c760ac7436c03 *000000ff63fcc747f88c6b10088b46088947fc8b450089078d47f88945008b46048945fc8b760c *83c5fce9d90700009083c7183b7b5c760ac7436c06000000ff63f8c747ec24fd09088b450c8947 *f08b46048947f48b45048947f8c747fce4440a088d47ec89078d77fc83c5108b4500ff60ec9000 *000000000000000000000068fd090800fd090884f4090843000000250001008b450c89750c89c6 *c74500ccfd0908ff268d7600ccfd0908ccfd0908ccfd0908ecfc0908ccfd090884f40908430000 *00250001008b450c89750c89c6c7450000fe0908ff268d760054fb090800fe090800fe090800fe *090800fe090880f40908430000002500070080f4090803000000240007008b7508c7450034fe09 *08ff2688f4090802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f88c6b10088b46088947fc8b460489078b46048945f48d47f8 *8945f0bebcc5110883c5ece96d1706009080f4090803000000120005008d45ec3b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f858fe09088b46048947fc *8b460889078b460c8945f48d47f88945f0bee4d1110883c5ece9111706009080f4090804000100 *020000000e00050083c7183b7b5c760ac7436c06000000ff63fcc747ecb4fe09088b45008947f0 *8b46048947f48b46088947f8c747fc34450a088d47ec89078d77fc83c5048b4500ff60e09083c7 *143b7b5c760ac7436c05000000ff63f8c747f014ff09088b45048947f48b46048947f8c747fce4 *440a088d47f089078d77fc83c5148b4500ff60ec8d760083c504e9a0feffff58ff090898ff0908 *98ff090898ff090898ff090880f4090804000000250007008b46048945008b7508c745fcc0ff09 *0883c5fcff268d760088f4090802000000150001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e08894df48b56048955f0bebcc5110883c5ece90216060089f680f409080300000012 *0005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f8e4ff09088b46088947fc8b460c89078d47f88945f48b46048945f0bee4d1110883c5ece9 *a51506009080f4090804000100020000000e00050083c7183b7b5c760ac7436c06000000ff63fc *c747ec20000a088b46048947f08b46088947f48b45008947f8c747fc34450a088d47ec89078d77 *fc83c5048b4500ff60e09083c7143b7b5c760ac7436c05000000ff63f8c747f080000a088b4504 *8947f48977f8c747fce4440a088d4ff0890f8d77fc83c5088b5500ff62ec89f688f40908020000 *00150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f88c6b10088b46088947fc8b460489078b46048945f48d47f88945f0bebcc5110883c5 *ece9b91406009080f4090803000000120005008d45ec3b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c745f8d46d10088975fcc747f80c010a088b46088947fc8b460c89078d47f88945 *f48b46048945f0bee4d1110883c5ece95d1406009080f4090804000100020000000e00050083c7 *183b7b5c760ac7436c06000000ff63fcc747ec68010a088b46048947f08b45008947f48b460889 *47f8c747fc34450a088d47ec89078d77fc83c5048b4500ff60e09083c7143b7b5c760ac7436c05 *000000ff63f8c747f0c8010a088b45048947f48b46048947f8c747fce4440a088d47f089078d77 *fc83c5088b4500ff60ec8d760080f4090802000000150001008d45ec3b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df48b56048955f0bee4d1110883c5ece98e13060089f683c7143b7b *5c760ac7436c05000000ff63f8c747f058020a088b45048947f48b46048947f8c747fc34450a08 *8d47f089078d77fc83c5088b4500ff60e08d760088020a0800000000000000000c020a08c4000a *0880f4090801000000250005008b460489450c8b7508c74508e8020a0883c508ff268d7600e93b *fbffff8d7600e8020a0800030a0800030a08c0ff090800030a0880f40908030000002500070089 *75088b750cc7450028030a08ff269028030a0828030a0860fa090828030a0828030a0880f40908 *43000000250007008b450c89750c89c6c7450058030a08ff268d760058030a0858030a0858fa09 *0858030a0858030a0880f40908430000002500070089750c8b7508c745008c030a08ff26908c03 *0a080cfa09088c030a088c030a088c030a0880f40908830000002500070080f409080300000024 *0007008b750cc74500bc030a08ff2604000100030000000b0000008d45fc3b4354720883c7183b *7b5c760ac7436c06000000ff63fcc747ec8c6b10088b460c8947f08b45008947f4c747f88c6b10 *088b46088947fc8b450089078d47ec8945008d47f88945fc8b760483c5fce90a01000089f683c7 *183b7b5c760ac7436c06000000ff63f8c747ece0030a088b45088947f08b45048947f48b460489 *47f8c747fcc4440a088d47ec89078d77fc83c5148b4500ff60f09083c504e944ffffff7c040a08 *7c040a087c040a087c040a0838040a0880f4090804000000250007008b46048945008b750cc745 *fca4040a0883c5fcff268d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b *45048947ec8b46088947f08b450c8947f4c747f814450a088b46048947fc8d47e889078d77f883 *c5108b4500ff60e48d7600e9bbfeffff8d760008050a08bc040a0808050a0808050a08a4040a08 *80f40908030000002500070080f409080b000200000001000b0007008d45f43b43547303ff63fc *8975fc8b7500c745f830050a0883c5f8ff268d760080f409080000020018000f008d45f83b4354 *720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856e8c1f8050083c4048d47e0 *894604c706245b1008c745f8d46d10088d47e08945fcc747ec40050a08c747f4f8a60b08c747f8 *e4c51108c747fc54c711088d47ec89078d77f483c5f8e9f967060090bcc51108e4c51108000000 *00240000008b760ce9a8010600e0050a0800000200120001008d45f43b43547303ff63f8c745f8 *d46d10088975fcbee4c51108c745f4ec050a0883c5f4ff2689f6dc050a0804000100010000000c *0001008d45fc3b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10088b4500 *8947fc8b460489078d47f8894500bebcc5110883c5fce9910b060090dc050a0800000200180003 *008d45f83b4354720883c7203b7b5c760ac7436c08000000ff63f8c747e4085c100856e8a9f705 *0083c4048d47e4894604c706245b1008c745f8d46d10088d47e48945fcc747f000060a08c747fc *38060a088d47f089078d77fc83c5f8e9ef6606008d7600f4c51108030000002400000083c7183b *7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45088947f08b450c8947f4c747f88c6b10 *088b45048947fc8b450c89078d47ec89450c8d47f88945088b760c83c504e9d20e060089f6e806 *0a081600030000000000110001008d45fc3b43547308be14c61108ff63fcbef4c51108c745fcf4 *060a0883c5fcff268d7600f4c51108beb0c5110883c508ff6500908b750483c508e90900060090 *030000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45088947f0 *8b450c8947f4c747f88c6b10088b45048947fc8b450c89078d47ec89450c8d47f88945088b760c *83c504e92a0e060089f678070a0804000100020000000e0001008d45f43b43547303ff63fc8b4e *08894df88b56048955fcbef4c51108c745f49c070a0883c5f4ff2683c7183b7b5c760ac7436c06 *000000ff63f8c747ec8c6b10088b45088947f08977f4c747f8fc070a088d4fec894ffc8b550489 *178d77f883c50cff65008d760024080a0888070a0878070a0802000000250001008b4604894500 *8b7608c745fc78080a0883c5fcff268d760078080a087c070a0878070a08010000002500010078 *070a0804000100000001000b0001008d45f83b43547303ff63fc8b4d0089750089cec745fca408 *0a0883c5fcff269078070a0800000200180001008d45f83b4354720883c7143b7b5c760ac7436c *05000000ff63f8c747f0085c100856e84df5050083c4048d47f0894604c706245b1008c745f8d4 *6d10088d47f08945fcc747fcb4080a088d77fc83c5f8e99f6406008d760054d21108d4d1110848 *d1110850d11108e4c51108f4c5110804000100010000000c00000083c70c3b7b5c760ac7436c03 *000000ff63fcc747f87cdc0b088b46048947fc8b4d00890f8d77f883c5048b5500ff62ec40090a *0802000000150001008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fc5c090a088b460889078d47fc8945f48b46048945f0be48d1110883c5ece9 *330c06008d760040090a0804000100030000000b0001008d45fc3b4354720883c7183b7b5c760a *c7436c06000000ff63fcc747ec8c6b10088b460c8947f08b45008947f4c747f898090a088b4604 *8947fc8b450089078d47ec8945008d47f88945fc8b760883c5fce95202000089f683c7183b7b5c *760ac7436c06000000ff63f8c747ecf4090a088b45048947f08b45088947f48b46048947f8c747 *fcc4440a088d47ec89078d77fc83c50c8b4500ff60f09004000100030000000b0000008d45fc3b *4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10088b460c8947fc8b450089 *078d47f88945008b46048945fc8b760883c5fce9bd0100009083c7183b7b5c760ac7436c060000 *00ff63f8c747ec9c0a0a088b45048947f08b45088947f48b46048947f8c747fce4440a088d47ec *89078d77fc83c50c8b4500ff60ec90be54c7110883c50c8b4500ff60e889f60100010013000000 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f400d211088b760483c5f0e9a5060600 *9002000000150000008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f83c0b0a088b4e04894ffc8d57f88955f48b760883c5f0e95a06060089f604 *0000002400000083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b45108947ec8b *450c8947f08b45048947f4c747f86c0b0a088b450c8947fc8b450889078d47e88945108d47f889 *450c8b760c83c508e9080a06008b46088945fc8b4e04894d00bef4c51108c745f8b80b0a0883c5 *f8ff268d7600897500be54d2110883c5fce9cc0506002c0c0a082c0c0a0838090a080000000025 *000100b8583e1108894504bed4d11108c74508500c0a08e9bf0306008d7600500c0a080c0c0a08 *240b0a08e00a0a084c0a0a0838090a08020000002500270038090a080b000200000001000b0027 *008d45f43b43547303ff63fc8b4d0489750489cec745fc8c0c0a0883c5fcff269038090a080000 *0200120027008d45f83b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc9c0c0a088d77fc83c5f8e9d660060089f604000100020000000e0000008d45fc3b *4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8e4bb0b088b45008947fc8b460489 *078d47f88945008b760883c5fce9bf0406008d7600020000002400000083c70c3b7b5c760ac743 *6c03000000ff63f8c747f80c0d0a088b45088947fc8b4d04890f8d57f88955088b760c83c504e9 *7f0406008d760048090a0804000100010000000c0001008d45f83b43547303ff63fc8b4e04894d *fcbee4c51108c745f8540d0a0883c5f8ff2689f648090a0802000000150001008d45f03b435472 *0883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc9c0d0a088b4e04 *890f8d57fc8955f48b760883c5f0e9fb0306008d760044090a0804000100020000000e0003008d *45f83b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8cc0d0a088b45008947fc8b *460889078d47f8894500c745fc50d111088b760483c5f8e9b007060038090a0804000100000000 *0011003f0083c7183b7b5c760fbe2cc61108c7436c06000000ff63fcc747ecc80c0a08c747f820 *0e0a088d47ec8947fc8b4d00890f8d77f883c504ff65008d760048d11108b00e0a080200000015 *0001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0be48d1 *110883c5ece92607060089f6b00e0a0816000300000000001100010083c70c3b7b5c760fbe34c6 *1108c7436c03000000ff63fcc747f8c00e0a088b45088947fc8b4d00890f8d57f88955088b7504 *83c504e9ce02060089f63cd111080b000200000001000b000000be54c7110883c5088b4500ff60 *e889f60b000200000001000b0000008b75048b4500894504e99202060089f60400010002000000 *0e0000008d45f83b43547303ff63fc8b4d00894dfc8b56048955008b760883c5f8e96e06060089 *f616000300000001000b00000083c70c3b7b5c760ac7436c03000000ff63fcc747f8840f0a088b *45088947fc8b4d04890f8d57f88955088b750083c504e91f0206008d76003c0f0a080100010013 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cd1110883c5f0e9 *e80106003c0f0a0800000200180001008d45f83b4354720883c7443b7b5c760ac7436c11000000 *ff63f8c747c0085c100856e801ee050083c4048d47c0894604c706245b1008c745f8d46d10088d *47c08945fcc747cc4c0f0a08c747d4680f0a08c747dcb40f0a08c747e450dd0b088d47dc8947e8 *8d47f88947ec8d47d48947f08d47cc8947f4c747f8f80f0a088d47e48947fc8d77e483c5f8e995 *cc01009078d01108f4c511083cc61108bc100a0800000200120005008d45f03b43547303ff63f8 *c745f8d46d10088975fcc745f43cc61108be78d0110883c5f0e90b0106008d7600000000002400 *0000c7450000d211088b760c83c5fce9ee00060089f6c4100a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fcbe3cc61108c745f408110a0883c5f4ff2689f603000000 *2400000083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b450c89 *47f4c747f88c6b10088b45088947fc8b450c89078d47ec89450c8d47f88945088b760c83c504e9 *6e04060089f6c0100a0804000100020000000e0001008d45f43b43547303ff63fc8b4e08894df8 *8b56048955fcbef4c51108c745f458110a0883c5f4ff26c0100a0804000100010000000c000300 *8d45f43b4354720883c7243b7b5c760ac7436c09000000ff63fcc747e028110a08c747ec8c6b10 *088977f08b45008947f4c747f8b8110a088d47e08947fc8d47ec89078b45008945fc8d47f88945 *00c745f8f8d111088b760483c5f4e9930806008d76000000000024000000c7450000d211088b76 *0c83c5fce99aff050089f6c4100a0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fcbe3cc61108c745f45c120a0883c5f4ff2689f6030000002400000083c7183b7b5c76 *0ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45 *088947fc8b450c89078d47ec89450c8d47f88945088b760c83c504e91a03060089f6c0100a0804 *000100020000000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108 *c745f4ac120a0883c5f4ff26c0100a0804000100010000000c00030083c7243b7b5c760ac7436c *09000000ff63fcc747e07c120a08c747ec8c6b10088b46048947f08b45008947f4c747f80c130a *088d47e08947fc8d47ec89078d77f883c504ff650090bc100a0800000200180007008d45f83b43 *54720883c7343b7b5c760ac7436c0d000000ff63f8c747d0085c100856e895ea050083c4048d47 *d0894604c706245b1008c745f8d46d10088d47d08945fcc747dcd4100a08c747e8f0110a088d47 *dc8947ecc747f044130a088d47e88947f4c747f8e4bb0b088d47f08947fc8d47e889078d77f883 *c5f8e9bb5906008d76004cc6110800000000240000008b7604e96cf305001c140a080000020018 *0001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f1 *e9050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe4cc61108c745f4 *28140a0883c5f4ff264cc6110800000000240000008b7608e9f8f2050090140a08000002001800 *01008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e87de9 *050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe4cc61108c745f49c *140a0883c5f4ff26e8d31108d4c51108e4c511083cc6110800000000240000008b760ce978f205 *000c150a0800000200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbee4c51108 *c745f41c150a0883c5f4ff2689f6000000002400000083c7083b7b5c760ac7436c02000000ff63 *f8c747fcb8050c08c707000000008d47fc8945008b762483c5fce978fc050004150a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fcbee8d31108c745f460150a0883c5 *f4ff2689f6000000002400000083c7083b7b5c760ac7436c02000000ff63f8c747fcb8050c08c7 *07010000008d47fc8945008b762483c5fce90cfc050004150a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fcbee8d31108c745f4cc150a0883c5f4ff2689f604000000 *120000008d45f43b4354720883c7103b7b5c760ac7436c04000000ff63f8c745f8d46d10088975 *fcc747f4c86b10088b460c8947f88b46088947fc8b460489078d47f48945f48b761083c5f4e907 *0100008d7600050100002400000083c7143b7b5c760ac7436c05000000ff63f8c747f038160a08 *8b450c8947f48b45148947f88b45048947fc8b450889078d47f0894514c745104cc711088b7608 *83c50ce93cff0500be3cc61108c7450090160a08ff2689f60000000024000000c745000cd21108 *8b760c83c5fce906fb050089f6be3cc61108c74514f0160a0883c514ff268d760004170a08d816 *0a0810150a08050100002500010010150a0805000000240001008b45148945fc8b4d10894df88b *7608c745002c170a0883c5f4e9befe050089f610150a0804000000240001008b460c8945008b76 *04c745fc38170a0883c5fcff268d760004150a0804000100020000000e0009008d45e03b435473 *03ff63fc8975f48b4e08894df88b56048955fcbee8d31108c745f064170a0883c5f0ff26900000 *00002400000083c7083b7b5c760ac7436c02000000ff63f8c747fcb8050c08c707010000008d47 *fc8945008b762483c5fce918fa050004150a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcbee8d31108c745f4c0170a0883c5f4ff2689f68b750883c518e96def0500 *9002000000240000008b7614e9d4fd050004150a0802000000150001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e08894df08b56048955f4bee8d31108c745ec38180a0883c5ecff *2689f683c7183b7b5c760ac7436c06000000ff63f8c747ec4c180a088b450c8947f08b45188947 *f4c747f88c6b10088b45148947fc8b460489078d47ec8945188b46088945148d47f88945108b75 *0483c510e9c001000080180a0824180a0804150a0806010000250001008b45148b4e04894d1489 *c6c74500e8180a08ff2683c70c3b7b5c760ac7436c03000000ff63f8c747f88c6b10088b460489 *47fc8b4d14890f8d57f88955108b750483c510e9630100008d76008b750883c518e95dee050090 *02000000240000008b7604e9c4fc05000c150a0804000100010000000c0001008d45f83b435473 *03ff63fc8b4e04894dfcbee4c51108c745f848190a0883c5f8ff2689f60c150a08030000002400 *010083c7143b7b5c760ac7436c05000000ff63f8c747f060190a088b45088947f4c747f88c6b10 *088b45048947fc8b450c89078d47f089450c8d47f88945088b760883c504e93cfc0500897514be *3cc61108c7450c90190a0883c50cff2602000000240000008b7604e918fc05000c150a08040001 *00010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbee4c51108c745f8f4190a0883 *c5f8ff2689f683c7103b7b5c760ac7436c04000000ff63f8c747f434450a088b46048947f8c747 *fc0c1a0a088d4ff4890f8d77fc83c51cff6500301a0a08d8190a0834190a08fc180a08e8180a08 *04150a080600000025000d0004150a0816000300030000000b000d008d45f03b43547303ff63fc *8975f48b460c8945f88b46088945fc8b45008b4e04894d0089c6c745f0841a0a0883c5f0ff268d *760008150a0804000100030000000b0001008d45f83b4354720883c70c3b7b5c760ac7436c0300 *0000ff63fcc747f88c6b10088b460c8947fc8b460489078b45008945fcc74500d4c511088d47f8 *8945f88b760883c5f8e972ffffff89f608150a08030000002400010083c7103b7b5c760ac7436c *04000000ff63f8c747f4d81a0a088b450c8947f88b45048947fc8b450889078d47f489450cc745 *0850c711088b760483c504e9a2fa050089f604150a080b000200010000000c000f008d45f83b43 *54720883c7403b7b5c760ac7436c10000000ff63fcc747c49c150a08c747d008160a08c747dc8c *170a088d47c48947e08d47d08947e4c747e8fc170a08c747f4941a0a088d47dc8947f88d47e889 *47fc8b450489078d47f48945fc8b4604894504be3cc61108c745f8301b0a0883c5f8ff26900415 *0a080000020018000f008d45f83b4354720883c7203b7b5c760ac7436c08000000ff63f8c747e4 *085c100856e825e2050083c4048d47e4894604c706245b1008c745f8d46d10088d47e48945fcc7 *47f030150a08c747fc841b0a088d47f089078d77fc83c5f8e96b5106008d76003cc61108beb0c5 *110883c508ff65009001000000240000008b760ce97cf50500be3cc61108c74500841c0a08ff26 *89f68c1c0a08701c0a086c1c0a0801000000250001006c1c0a0804000100010000000c0001008d *45f43b43547303ff63fc8b4d00894df88b7604c745fcb01c0a0883c5f4e925f50500906c1c0a08 *010000002400010083c7083b7b5c760ac7436c02000000ff63f8c747fcc01c0a088b450489078d *4ffc894d04c745004cc711088b760483c5fce9eef8050089f66c1c0a0804000100000000001100 *01008d45f83b43547308be8cc61108ff63fcbe3cc61108c745fcf01c0a0883c5fcff268d76003c *c61108beb0c5110883c508ff65009001000000240000008b760ce98cf40500be3cc61108c74500 *741d0a08ff2689f67c1d0a08601d0a085c1d0a0801000000250001005c1d0a0802000000240001 *008b45088945008b4d04894dfc8b7608c74504a01d0a0883c5f8e94af8050089f65c1d0a080400 *0100020000000e0001008d45f03b43547303ff63fc8b4e08894dfc8b7604c745f8ac1d0a0883c5 *f8ff265c1d0a08020000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f8dc1d0a *088b45048947fc8b4d08890f8d57f8895508c745044cc711088b7604e9d3f705008d76005c1d0a *080b00020000000000110001008d45fc3b43547308be94c61108ff63fcbe3cc61108c745fc081e *0a0883c5fcff268d76003cc61108c4010000240000008b45048945108b760c83c50ce973f30500 *8d7600be3cc61108c74500841e0a08ff2689f6beb0c5110883c514ff650090beb0c5110883c518 *ff650090050300002400000083c7103b7b5c760ac7436c04000000ff63f8c747f4c86b10088b45 *0c8947f88b45088947fc8b450489078d47f4894514c745104cc711088b760883c50ce90af70500 *89f6be3cc61108c74500c81e0a08ff2689f60c1f0a08b41e0a08781e0a08050300002500010078 *1e0a0805000000240001008b45108945fc8b4d14894df88b7608c74500301f0a0883c5f4e9baf6 *050089f68b46088945008b4d0c8b560489550c89cec745fc3c1f0a0883c5fcff268d76005c1f0a *08a81e0a08781e0a0804000000250001008b46088945048b4d108b560489551089cec74500901f *0a08ff2689f6901f0a08981e0a08781e0a080400000025000100781e0a080b000200020000000e *0001008d45e43b43547303ff63fc8b46088945f88975fc8b45008b4e04894d0089c6c745f4c01f *0a0883c5f4ff269004000100020000000e0000008d45fc3b43547303ff63fc8b4e08894dfc8b76 *0483c5fcebaf8d7600020000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f808 *200a088b45048947fc8b4d08890f8d57f8895508c7450450c711088b7604e9aff505008d760078 *1e0a080b00020000000000110001008d45fc3b4354720883c70c3b7b5c760fbe9cc61108c7436c *03000000ff63fcc747f8d01f0a088b45008947fc8b450489078d47f8894500be3cc61108c745fc *2c200a0883c5fcff263cc611080000000024000000c7450000d211088b760c83c5fce92af10500 *89f6be3cc61108c74508cc200a0883c508ff268d76000000000024000000c7450000d211088b76 *0c83c5fce9faf0050089f6be3cc61108c7450cfc200a0883c50cff268d76000200000024000000 *83c70c3b7b5c760ac7436c03000000ff63f8c747f87cdc0b088b45048947fc8b4d08890f8d57f8 *8955088b760c83c504e9a7f005008d7600c0200a0804000100010000000c0001008d45f83b4354 *7303ff63fc8b4e04894dfcbe3cc61108c745f82c210a0883c5f8ff2689f6c0200a080300000024 *00010083c7143b7b5c760ac7436c05000000ff63f8c747f074210a088b450c8947f4c747f88c6b *10088b45048947fc8b450889078d47f089450c8d47f88945088b760483c504e928f40500c0200a *0803000000120001008d45e83b43547303ff63f8c745f8d46d10088975fc8b460c8945ec8b4608 *8945f08b46048945f4be3cc61108c745e8a4210a0883c5e8ff26c0200a08030000002400010083 *c7103b7b5c760ac7436c04000000ff63f8c747f4f8210a088b450c8947f88b45048947fc8b4508 *89078d47f489450cc745084cc711088b760883c504e996f3050089f6be3cc61108c745003c220a *08ff2689f680220a0810210a08c0200a0803000000250001008b46048945f88b46088945008b45 *088b4e04894d0889c6c745fca4220a0883c5f4e93eef050089f6a4220a08e0200a08c0200a0802 *00000025000100c0200a0804000100010000000c0001008d45ec3b43547303ff63fc8975fc8b4d *008b560489550089cec745f8e0220a0883c5f8ff268d7600c0200a0801000100130001008d45f8 *3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fcf0220a *088b4e04890f8d77fc83c5f8e9754a06009004000100010000000c0000008d45fc3b43547303ff *63fc8b760483c5fce986ee050089f6010000002400000083c7083b7b5c760ac7436c02000000ff *63f8c747fc6c230a088b450489078d4ffc894d04c7450050c711088b760483c5fce952f2050089 *f6c0200a080400010000000000110001008d45f83b4354720883c70c3b7b5c760fbea4c61108c7 *436c03000000ff63fcc747f824230a088b4d00894ffc8d57f8895500be3cc61108c745fc8c230a *0883c5fcff26903cc611083cc61108beb0c5110883c50cff650090020000002400000083c70c3b *7b5c760ac7436c03000000ff63f8c747f87cdc0b088b45048947fc8b4d08890f8d57f88955088b *760c83c504e99fed05008d76001c240a0804000100010000000c0001008d45f83b43547303ff63 *fc8b4e04894dfcbe3cc61108c745f834240a0883c5f8ff2689f618240a0801000100130001008d *45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e905ffffff9018240a08 *020000002400030083c7143b7b5c760ac7436c05000000ff63f8c747f07c240a088b45088947f4 *c747f8ac240a088b45048947fc8d47f08945088d47f88945048b7604e9f8f00500be3cc61108c7 *4500dc240a08ff2689f61c250a0820240a0818240a08020000002500030018240a080400010001 *0000000c0003008d45f03b43547303ff63fc8b4d00894df48b56048955fc8b7604c745f840250a *0883c5f0e98fec05008d760018240a08010000002400030083c7083b7b5c760ac7436c02000000 *ff63f8c747fc50250a088b450489078d4ffc894d04c745004cc711088b760483c5fce956f00500 *89f618240a080400010000000000110003008d45f83b43547308beacc61108ff63fcbe3cc61108 *c745fc88250a0883c5fcff268d760050d511083cc611080000000024000000c745000cd211088b *760c83c5fce9f2eb050089f6be3cc61108c7450404260a0883c504ff268d760000000000240000 *00c745000cd211088b760c83c5fce9c2eb050089f6be3cc61108c7450834260a0883c508ff268d *7600020000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f88c6b10088b450889 *47fc8b4d04890f8d57f8895508c745044cc711088b7608e977ef05008d7600be3cc61108c74500 *64260a08ff2689f6a0260a0848260a08f8250a0802000000250001008b46048945f88b4e08894d *00be50d51108c745fcc4260a0883c5f4e924eb0500c4260a0818260a08f4250a08010000002500 *0300f4250a0804000100000001000b0003008d45f03b43547303ff63fc8b4d0089750089cec745 *fcf8260a0883c5fcff2690f4250a0800000200120003008d45f83b4354720883c7083b7b5c760a *c7436c02000000ff63f8c745f8d46d10088975fcc747fc08270a088d77fc83c5f8e96a46060089 *f604000100010000000c0000008d45fc3b43547303ff63fc8b760483c5fce97aea050089f60100 *00002400000083c7083b7b5c760ac7436c02000000ff63f8c747fc78270a088b450489078d4ffc *894d04c7450050c711088b760483c5fce946ee050089f6f4250a0800000200180003008d45ec3b *4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e851d6050083c4048d *47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f834270a088d47f88945f4be3c *c61108c745f098270a0883c5f0ff268d7600f4c511083cc6110801000000240000008b760ce9b0 *e9050044280a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4be3cc61108c745f050280a0883c5f0ff26030000002400000083c7183b7b5c760ac7436c *06000000ff63f8c747ec8c6b10088b45088947f08b450c8947f4c747f88c6b10088b45048947fc *8b450c89078d47ec89450c8d47f88945088b760c83c504e92eed050089f640280a080400010002 *0000000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f498 *280a0883c5f4ff2640280a080b000200000000001100030083c7183b7b5c760fbec4c61108c743 *6c06000000ff63fcc747ec64280a088b45008947f0c747f8f8280a088d4fec894ffc8b55048917 *8d77f883c508ff650090f4c511083cc611080000000024000000c745000cd211088b760c83c5fc *e976e8050089f674290a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fcbe3cc61108c745f480290a0883c5f4ff2689f674290a08010000002400010083c70c3b7b5c76 *0ac7436c03000000ff63f8c747f8a0290a088b45048945008d4ff8894d048b760883c5fce910ec *050074290a0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be3cc61108c745f0d4290a0883c5f0ff260000000024000000c745000cd211088b760c83c5 *fce9b2e7050089f674290a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fcbe3cc61108c745f4442a0a0883c5f4ff2689f6030000002400000083c7183b7b5c760ac743 *6c06000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45088947 *fc8b450c89078d47ec89450c8d47f88945088b760c83c504e932eb050089f670290a0804000100 *020000000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f4 *942a0a0883c5f4ff2670290a0804000100000000001100030083c7243b7b5c760fbeccc61108c7 *436c09000000ff63fcc747e0102a0a088b45008947e4c747ec642a0a08c747f8f42a0a088d4fe0 *894ffc8d57ec89178d77f883c504ff650089f63cc611084cc611080000000024000000c745000c *d211088b760c83c5fce972e6050089f6742b0a0800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fcbe3cc61108c745f4842b0a0883c5f4ff2689f601000000240000008b76 *04e92ce60500782b0a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be4cc61108c745f0d42b0a0883c5f0ff26742b0a08010000002400030083c7183b *7b5c760ac7436c06000000ff63f8c747eca42b0a08c747f8e82b0a088b45048947fc8d4fec894d *048d57f88955008b760883c5fce9b7e905008d7600742b0a080400010000000000110003008d45 *f83b43547308bed4c61108ff63fcbe3cc61108c745fc202c0a0883c5fcff268d7600d4c611083c *c61108942c0a0801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df483c5f4e9a5ffffff90942c0a08010000002400010083c70c3b7b5c760ac7436c03000000 *ff63f8c747f8a82c0a088b45048947fc8b4d04894d008d57f88955048b760883c5fce906e90500 *89f6942c0a080400010000000000110003008d45f83b43547308bedcc61108ff63fcbe3cc61108 *c745fcd82c0a0883c5fcff268d760078d011083cc611084cc61108442d0a080000020012000300 *8d45f03b43547303ff63f8c745f8d46d10088975fcc745f43cc61108be78d0110883c5f0e983e4 *05008d760002000000240000008b7608e97ce80500482d0a0802000000150001008d45ec3b4354 *7303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be3cc61108c745ec902d0a08 *83c5ecff2689f6482d0a08020000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747 *f8a42d0a088b45088947fc8b4d04890f8d57f88955088b760483c504e9efe305008d7600482d0a *0802000000150003008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b5604 *8955f4be4cc61108c745ece42d0a0883c5ecff2689f6482d0a080b000200010000000c0003008d *45f83b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8282e0a088b45008947fc8b *450489078d47f8894504c745fcf8d111088b760483c5f8e934ec0500442d0a0800000200180007 *008d45f83b4354720883c7203b7b5c760ac7436c08000000ff63f8c747e4085c100856e871cf05 *0083c4048d47e4894604c706245b1008c745f8d46d10088d47e48945fcc747f05c2d0a08c747fc *6c2e0a088d47f089078d77fc83c5f8e9b73e06008d7600e4c61108f4c511083cc61108202f0a08 *02000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b560489 *55f0bee4c6110883c5ece9aee6050089f60000000024000000c7450000d211088b760c83c5fce9 *86e2050089f6282f0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *be3cc61108c745f4702f0a0883c5f4ff2689f6030000002400000083c7183b7b5c760ac7436c06 *000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45088947fc8b *450c89078d47ec89450c8d47f88945088b760c83c504e906e6050089f6242f0a08040001000200 *00000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f4c02f *0a0883c5f4ff26202f0a080b000200000000001100070083c7243b7b5c760fbef4c61108c7436c *09000000ff63fcc747e0382f0a088b45008947e48b45048947e8c747ec902f0a08c747f820300a *088d47e08947fc8d47ec89078d77f883c508ff65003cc611084cc6110801000000240000008b76 *0ce94ce10500a4300a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be3cc61108c745f0b4300a0883c5f0ff26a4300a08020000002400010083c70c3b *7b5c760ac7436c03000000ff63f8c747f8c8300a088b45088947fc8d4ff8894d088b7608e9e7e4 *05008d7600a4300a0804000100010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbe *3cc61108c745f800310a0883c5f8ff2689f6a4300a08020000002400010083c7083b7b5c760ac7 *436c02000000ff63f8c747fc40310a088b450489078b4d08894d048d57fc8955088b7604e972e4 *050089f6a4300a0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e *08894df08b56048955f4be3cc61108c745ec70310a0883c5ecff2689f6a4300a08020000002400 *010083c70c3b7b5c760ac7436c03000000ff63f8c747f8b0310a088b45048947fc8b4d08890f8d *57f88955088b760483c504e9e3df05008d7600a4300a080b00020000000000110003008d45fc3b *43547308befcc61108ff63fcbe4cc61108c745fcf0310a0883c5fcff268d76003cc611084cc611 *0801000000240000008b760ce994df05005c320a0801000100130001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f06c320a0883c5f0ff265c320a0802 *0000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f880320a088b45088947fc8d *4ff8894d088b7608e92fe305008d76005c320a0804000100010000000c0001008d45f83b435473 *03ff63fc8b4e04894dfcbe3cc61108c745f8b8320a0883c5f8ff2689f65c320a08020000002400 *010083c7083b7b5c760ac7436c02000000ff63f8c747fcf8320a088b450489078b4d08894d048d *57fc8955088b7604e9bae2050089f65c320a0802000000150001008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e08894df08b56048955f4be3cc61108c745ec28330a0883c5ecff2689 *f65c320a08020000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f868330a088b *45048947fc8b4d08890f8d57f88955088b760883c504e92bde05008d76005c320a080b00020000 *000000110003008d45fc3b43547308be04c71108ff63fcbe4cc61108c745fca8330a0883c5fcff *268d7600f4c511083cc61108030000002400000083c7103b7b5c760ac7436c04000000ff63f8c7 *47f4c86b10088b45048947f88b45088947fc8b450c89078d47f489450c8b760c83c508e9a9dd05 *009018340a0804000100020000000e0001008d45f43b43547303ff63fc8b4e08894df88b560489 *55fcbe3cc61108c745f424340a0883c5f4ff2618340a08030000002400010083c70c3b7b5c760a *c7436c03000000ff63f8c747f870340a088b45048947fc8b4d0c890f8d57f889550c8b760483c5 *04e93be105008d760018340a0804000100020000000e0001008d45f43b43547303ff63fc8b4e08 *894df88b56048955fcbe3cc61108c745f4a4340a0883c5f4ff2618340a08030000002400010083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8ec340a088b45088947fc8b450489078b450c89 *45088d47f889450c8b760483c504e9b9e005009018340a0803000000120001008d45e83b435473 *03ff63f8c745f8d46d10088975fc8b460c8945ec8b46088945f08b46048945f4be3cc61108c745 *e820350a0883c5e8ff2601000000240000008b760ce958dc050018340a0801000100130001008d *45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f0a8350a0883 *c5f0ff26030000002400000083c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45 *048947f08b450c8947f4c747f88c6b10088b45088947fc8b450c89078d47ec89450c8d47f88945 *088b760c83c504e9d6df050089f614340a0804000100020000000e0001008d45f43b43547303ff *63fc8b4e08894df88b56048955fcbef4c51108c745f4f0350a0883c5f4ff2614340a0804000100 *020000000e00030083c7283b7b5c760ac7436c0a000000ff63fcc747dc68350a088b46048947e0 *8b46088947e48b45008947e8c747ecbc350a088b45008947f0c747f850360a088d47dc8947fc8d *47ec89078d77f883c504ff65009014340a08030000002400030083c70c3b7b5c760ac7436c0300 *0000ff63f8c747f888360a088b45088947fc8b450489078b450c8945088d47f889450c8b760483 *c504e9f1de05009014340a0802000000150003008d45e83b43547303ff63f8c745f8d46d100889 *75fc8975ec8b4e08894df08b56048955f4be3cc61108c745e8e8360a0883c5e8ff268d76001434 *0a080b000200000000001100030083c70c3b7b5c760fbe0cc71108c7436c03000000ff63fcc747 *f830370a088b45008947fc8b4d04890f8d77f883c504e9f0cf05000cc71108f4c511083cc61108 *ac370a0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08894df4 *8b56048955f083c5f0e98bffffff8d760001000000240000008b760ce908da0500b4370a080100 *0100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cc61108c7 *45f0f8370a0883c5f0ff26030000002400000083c7183b7b5c760ac7436c06000000ff63f8c747 *ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45088947fc8b450c89078d47ec89 *450c8d47f88945088b760c83c504e986dd050089f6b0370a0804000100020000000e0001008d45 *f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f440380a0883c5f4ff26ac *370a0816000300000000001100070083c7243b7b5c760fbe14c71108c7436c09000000ff63fcc7 *47e0c4370a088b45008947e48b45048947e8c747ec0c380a088b45088947f0c747f8a0380a088d *47e08947fc8d47ec89078d77f883c50cff650089f6f4c511083cc6110804000100030000000b00 *000083c7103b7b5c760ac7436c04000000ff63fcc747f4c86b10088b46088947f88b46048947fc *8b450089078d47f48945008b760ce908020000040000002400000083c7103b7b5c760ac7436c04 *000000ff63f8c747f440390a088b45088947f88b45108947fc8b450489078d47f48945108b7604 *83c508e959dc05009030390a0804000100030000000b0001008d45f03b43547303ff63fc8b460c *8945f48b46088945f88b46048945fcbe3cc61108c745f080390a0883c5f0ff2689f630390a0804 *0000002400010083c7103b7b5c760ac7436c04000000ff63f8c747f4cc390a088b450c8947f88b *45088947fc8b450489078b451089450c8d47f48945108b760483c508e9cbdb05008d760030390a *0804000000120001008d45e43b43547303ff63f8c745f8d46d10088975fc8b46108945e88b460c *8945ec8b46088945f08b46048945f4be3cc61108c745e4083a0a0883c5e4ff2689f60100000024 *0000008b760ce960d7050030390a0801000100130001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be3cc61108c745f0a03a0a0883c5f0ff26030000002400000083c718 *3b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b *10088b45088947fc8b450c89078d47ec89450c8d47f88945088b760c83c504e9deda050089f62c *390a0804000100020000000e0001008d45f43b43547303ff63fc8b4e08894df88b56048955fcbe *f4c51108c745f4e83a0a0883c5f4ff262c390a0804000100020000000e00030083c72c3b7b5c76 *0ac7436c0b000000ff63fcc747d8583a0a088b46048947dc8b46088947e08b45008947e48977e8 *c747ecb43a0a088b45008947f0c747f8483b0a088d47d88947fc8d47ec89078d77f883c504ff65 *0089f602000000240000008b7604e92cda05002c390a080b00020000000000110003008d45fc3b *4354720883c70c3b7b5c760fbe1cc71108c7436c03000000ff63fcc747f8803b0a088b45048947 *fc8b450089078d47f8894504be3cc61108c745fce03b0a0883c5fcff261cc71108f4c511083cc6 *1108403c0a0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0889 *4df48b56048955f083c5f0e977ffffff8d760001000000240000008b760ce974d50500483c0a08 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cc611 *08c745f08c3c0a0883c5f0ff26030000002400000083c7183b7b5c760ac7436c06000000ff63f8 *c747ec8c6b10088b45048947f08b450c8947f4c747f88c6b10088b45088947fc8b450c89078d47 *ec89450c8d47f88945088b760c83c504e9f2d8050089f6443c0a0804000100020000000e000100 *8d45f43b43547303ff63fc8b4e08894df88b56048955fcbef4c51108c745f4d43c0a0883c5f4ff *26403c0a0816000300000000001100070083c7243b7b5c760fbe24c71108c7436c09000000ff63 *fcc747e0583c0a088b45008947e48b45048947e8c747eca03c0a088b45088947f0c747f8343d0a *088d47e08947fc8d47ec89078d77f883c50cff650089f67cc6110878d011083cc61108c43d0a08 *00000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc745f43cc61108be78d0 *110883c5f0e907d405008d760003000000120000008d45e83b43547303ff63f8c745f8d46d1008 *8975fc8b4e0c894df48b56088955f0c745ecf8d111088b760483c5e8e9a5dc0500900000000024 *000000c7450000d211088b760c83c5fce9aed3050089f6c83d0a0800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f4483e0a0883c5f4ff2689f6c83d0a *08010000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f8683e0a088b45048945 *008d4ff8894d048b760883c5fce948d70500c83d0a0801000100130001008d45ec3b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f09c3e0a0883c5f0ff26c03d0a08 *03000000120005008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d *10088975fcc747e80c3e0a088b46048947ec8b460c8947f08977f4c747f8d83e0a088b46088947 *fc8d47e88945f48d47f88945f0be7cc6110883c5ece9a4d60500c03d0a080b000200010000000c *00050083c7103b7b5c760ac7436c04000000ff63fcc747f4103f0a088b46048947f88b4d04894f *fc8b550089178d77f483c504e9e7c705008d7600c03d0a0800000200180007008d45f83b435472 *0883c7203b7b5c760ac7436c08000000ff63f8c747e4085c100856e869be050083c4048d47e489 *4604c706245b1008c745f8d46d10088d47e48945fcc747f0d83d0a08c747fc803f0a088d47f089 *078d77fc83c5f8e9af2d06008d7600f4c511083cc6110828400a0800000200180003008d45f83b *4354720883c71c3b7b5c760ac7436c07000000ff63f8c747e8085c100856e8f1bd050083c4048d *47e8894604c706245b1008c745f8d46d10088d47e88945fcc747f4f8a60b08c747f83cc61108c7 *47fcb0c51108c70714c611088d77f483c5f8e92f2d06008d760004000100000000001100000083 *c7083b7b5c760fbe4cc71108c7436c02000000ff63fcc747fcc4440a088b450089078d77fc83c5 *048b4d00ff61f09004000100000000001100000083c7083b7b5c760fbe50c71108c7436c020000 *00ff63fcc747fce4440a088b450089078d77fc83c5048b4d00ff61ec900b000200000000001100 *000083c70c3b7b5c760fbe58c71108c7436c03000000ff63fcc747f814450a088b45008947fc8b *4d04890f8d77f883c5088b5500ff62e48d760004000100000000001100000083c7083b7b5c760f *be5cc71108c7436c02000000ff63fcc747fc34450a088b450089078d77fc83c5048b4d00ff61e0 *9083c7083b7b5c760ac7436c02000000ff63f8c747fcc4440a088b460489078d77fc83c5048b4d *00ff61f089f683c7083b7b5c760ac7436c02000000ff63f8c747fce4440a088b460489078d77fc *83c5048b4d00ff61ec89f6cc410a08a0410a080000000000000000250000008b7604c745000c42 *0a08ff26be54c7110883c5048b4500ff60e889f6000000002400000083c70c3b7b5c760ac7436c *03000000ff63f8c747f814450a088b46048947fc8b4e08890f8d77f883c5048b5500ff62e48b76 *04c7450030420a08ff2683c7083b7b5c760ac7436c02000000ff63f8c747fc34450a088b460489 *078d77fc83c5048b4d00ff61e089f66c420a0860420a080000000000000000250000008b7604c7 *4500ac420a08ff26ac420a0818420a080000000000000000250000008b7604c74500cc420a08ff *26cc420a080c420a080000000000000000250000000400010000000000110000008b7500c74500 *ec420a08ff2683c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b088b46048947f8c747 *fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f09083c7103b7b5c760ac7436c04000000ff *63f8c747f410dd0b088b46048947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f0 *9083c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c747f808d21108c747fc10dd0b *088d47f489078d77fc83c5048b4d00ff61ec83c7243b7b5c760ac7436c09000000ff63f8c747e0 *d8dc0b088b46048947e48b46088947e8c747ecf0dc0b088d47e08947f0c747f410dd0b088d47ec *8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec9083c7183b7b5c760ac7436c *06000000ff63f8c747ec10dd0b088b46048947f0c747f410dd0b088d47ec8947f8c747fc10dd0b *088d47f489078d77fc83c5048b4500ff60ec04440a08ac430a0874430a083c430a0804430a0800 *00000000000000250000000400010000000000110000008b7500c7450068440a08ff2604000100 *00000000110000008b7500e908c30500040001000000000011000000e9e7ffffff8d7600040001 *0000000000110000008b7500e9e0c2050001000000020000008b4500ff60f089f6010000000900 *00008b4500ff60f089f601000000020001008b4500ff60ec89f601000000090001008b4500ff60 *ec89f6000000000a0002008b4500ff60e889f602000000040003008b4500ff60e489f602000000 *090003008b4500ff60e489f601000000020004008b4500ff60e089f601000000090004008b4500 *ff60e09090e900000000833d74c71108007564c70574c7110801000000c74500cd640a0883c504 *c7450004a10b0883c504c745009c360c0883c504c74500f8400c0883c504c745009c8c0b0883c5 *04c7450035180b0883c504c7450050be0b0883c504c745005c460c0883c504c7450090310c0883 *c50483c5fcff6500ccd1110880d11108c4450a0800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e855b8050083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e9d9cb05009084 *d01108dcd2110830460a0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e8e9b7050083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f4dcd21108be84d0110883c5f0e96dcb05009090d01108dcd211089c46 *0a0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8 *085c100856e87db7050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc7 *45f4dcd21108be90d0110883c5f0e901cb05009080d01108dcd2110808470a0800000200180003 *008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e811b705 *0083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be80d0 *110883c5f0e995ca0500908cd01108dcd2110874470a0800000200180003008d45f03b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a5b6050083c4048d47f88946 *04c706245b1008c745f8d46d10088d47f88945fcc745f4dcd21108be8cd0110883c5f0e929ca05 *0090d4d111089cc811081cc8110864c81108dcd2110898d51108a0d511080000000024000000c7 *4500e0d011088b760c83c5fce9f2c9050089f6bedcd21108c7450804480a0883c508ff268d7600 *ec470a0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df4 *8b56048955f0be64c8110883c5ece9aecd050089f6e8470a0802000000150003008d45ec3b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f838480a088b46 *048947fc8b46088907c745f400d211088d47f88945f0be1cc8110883c5ece950cd05008b450889 *45108b750483c510e9870100008d760083c7083b7b5c760ac7436c02000000ff63f8c747fc94b9 *0b088b451089078d4ffc894d108b750c83c50ce901c9050090d8480a08c4480a08000000000400 *00002500000004000100040000000b0000008d45f03b43547303ff63fc8b46108945f48b460c89 *45f88b46088945fc8b45008b4e04894d0089c6c745f01c490a0883c5f0ff26f4470a0801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be98d5110883c5f0 *e978c80500f4470a08030000002400010083c7203b7b5c760ac7436c08000000ff63f8c747e428 *490a088b450c8947e88b460c8947ec8b45048947f08b45088947f4c747f868490a088b450c8947 *fc8d47e489450c8d47f88945088b760483c504e923cc05008d760083c70c3b7b5c760ac7436c03 *000000ff63f8c747f874480a088b46048947fc8b450889078b46088945008d47f8894508bedcd2 *1108c745fc9c490a0883c5fcff268d7600f4490a0818480a08e8470a080200000025000f00e847 *0a0804000100010000000c000f008d45f43b43547303ff63fc8975fc8b4d008b560489550089ce *c745f84c4a0a0883c5f8ff268d7600e4470a0801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be9cc8110883c5f0e950c70500e4470a0804000100010000 *000c00010083c70c3b7b5c760ac7436c03000000ff63fcc747f8904a0a088b45008947fc8d4ff8 *894d008b7604e967ffffff8d7600e0470a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b97c3e1108894df4bed4d1110883c5f0e9f7c405008d7600e0470a08 *00000200120041008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f8044b0a088d4ff8894df4bea0d5110883c5f0e98ac6050089f6e0470a080100 *00002400430083c7143b7b5c760ac7436c05000000ff63f8c747f0c84a0a088b45048947f4c747 *f8404b0a088d4ff0894d048d57f88955008b760483c5fce94bca05008d7600e0470a0804000100 *0000000011007f008d45f83b4354720883c7083b7b5c760fbed8c71108c7436c02000000ff63fc *c747fc5c4a0a088b4d00890f8d57fc895500bedcd21108c745fc8c4b0a0883c5fcff2689f6d4d1 *110890d1110844d11108dcd2110810d0110818d0110804d0110800d01108fccf110808d0110890 *d2110898d2110874d0110888d2110878d2110838d11108e4d5110888c7110898c71108204c0a08 *13000000ffff0700244c0a081200000007060200244c0a081200000007060200244c0a08120000 *0003060200244c0a0812000000030402004c4c0a0803000000120001008d45e83b43547303ff63 *f8c745f8d46d10088975fc8b46088945f48b46048945f08b460c8945ecbe98d2110883c5e8e9fc *cd05004c4c0a0806000000120001008d45ec3b4354720883c7243b7b5c760ac7436c09000000ff *63f8c745f8d46d10088975fcc747e00c6c10088b46148947e48b46048947e88b46108947ec8b46 *088947f0c747f4b44c0a088b46088947f88b460c8947fc8b461089078d47e08945f48d47f48945 *f08b761883c5ece9aec8050089f6244c0a08120000000100020001000000240000008b45048945 *00c7450478c711088b761083c5fce980c80500244c0a0801000100130001008d45ec3b43547303 *ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f07c4d0a0883c5f0ff26684d0a *08010001001300ffff8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8a04d0a088b4e04894ffc8d57f88955f4be98c7110883c5f0e9ecc305009c *4c0a0804000100050000000b00ffff8d45f83b4354720883c7283b7b5c760ac7436c0a000000ff *63fcc747dcf44c0a088b46048947e08b46088947e48b45008947e88b460c8947ec8b46108947f0 *8b46148947f4c747f8d84d0a088b45008947fc8d47dc8945008d47f88945fcbe44d1110883c5f8 *e97dc7050090484c0a0802000000150001008d45e83b43547303ff63f8c745f8d46d10088975fc *c745f480c711088b4e08894df08b56048955ecbe90d2110883c5e8e90bcc05008d7600904c0a08 *040000002400ffff83c7243b7b5c760ac7436c09000000ff63f8c747e02c4e0a088b45088947e4 *8b45108947e88b450c8947ec8b45048947f08b46088947f4c747f8a44e0a088b45088947fc8b45 *1089078d47e08945108d47f889450c8b760483c508e9ccc60500844c0a0816000300000001000b *00ffff8d45f83b43547303ff63fc8975fcbedcd21108c745f8e84e0a0883c5f8ff2690784c0a08 *000002001200ffff8d45f83b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d *10088975fcc747fc584f0a088d77fc83c5f8e91a1e060089f6204c0a0811000000fdf30100204c *0a0811000000fdf3010001000100130000008d45f03b43547303ff63f8c745f8d46d10088975fc *c745f40cd211088b760483c5f0e905c2050090404c0a0801000100130001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8b4e04894df4befccf110883c5f0e9d0c105003c4c0a08010001 *00130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be00d0110883c5 *f0e99cc105003c4c0a0804000100010000000c0007008d45f43b4354720883c7183b7b5c760ac7 *436c06000000ff63fcc747ec10500a088b45008947f0c747f844500a088b45008947fc8d47ec89 *45008d47f88945fc8b46048945f8be08d0110883c5f4e915ca050090344c0a0801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be18d0110883c5f0e904c1 *0500344c0a080300000012001d008d45ec3b4354720883c7143b7b5c760ac7436c05000000ff63 *f8c745f8d46d10088975fcc747f07c500a088b46048947f4c747f8dc500a088b46088947fc8d47 *f08945f48d47f88945f08b760c83c5ece9afc405008d7600344c0a080300000012001d088d45f0 *3b4354720883c7103b7b5c760ac7436c04000000ff63f8c745f8d46d10088975fcc747f410510a *088b46048947f88b46088947fc8b460c89078d47f48945f4bee4d5110883c5f0e945c005009034 *4c0a080500000012001d088d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745 *f8d46d10088975fcc747e8dc4f0a088b46108947ecc747f474510a088b46048947f88b46088947 *fc8b460c89078d47e88945f48d47f48945f08b761483c5ece9e4c30500384c0a08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be04d0110883c5f0e9a4 *bf0500304c0a0804000100010000000c0005008d45f83b4354720883c70c3b7b5c760ac7436c03 *000000ff63fcc747f83c520a088b45008947fc8d47f88945008b46048945fcbe10d0110883c5f8 *e960c30500344c0a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4be18d0110883c5f0e920bf0500304c0a0803000000120007008d45ec3b4354720883 *c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f074520a088b46048947 *f4c747f8c0520a088b46088947fc8d47f08945f48d47f88945f08b760c83c5ece9cbc205008d76 *00304c0a0803000000120007108d45f03b4354720883c7103b7b5c760ac7436c04000000ff63f8 *c745f8d46d10088975fcc747f4f4520a088b46048947f88b46088947fc8b460c89078d47f48945 *f4bee4d5110883c5f0e961be050090304c0a080500000012003f108d45ec3b4354720883c7283b *7b5c760ac7436c0a000000ff63f8c745f8d46d10088975fcc747dcd0510a088b46048947e08b46 *088947e48b460c8947e88b46108947ec8b46148947f0c747f458530a088b46048947f88b460889 *47fc8b460c89078d47dc8945f48d47f48945f08b761483c5ece9e8c1050004000100030000000b *0000008d45f43b43547303ff63fc8b4e0c894dfc8b56088955f88b760483c5f4e98ac6050089f6 *5c4c0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcc745f480c711 *08be38d1110883c5f0e977bd05008d7600284c0a0803000000120001208d45ec3b4354720883c7 *1c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e838540a088b46048947ec *8b46088947f08b460c8947f4c747f868540a088d47e88945f48d47f88945f0be44d1110883c5ec *e917c105008d7600284c0a08050000002400fd6083c7283b7b5c760ac7436c0a000000ff63f8c7 *47dcb4530a088b450c8947e08b45088947e48b46048947e88b460c8947ec8b46088947f0c747f4 *a0540a088b45108947f88b45048947fc8b451489078d47dc8945148d47f48945108b760883c50c *e9a2c0050089f6284c0a0804000100040000000b00ff608d45ec3b43547303ff63fc8b46108945 *f08b460c8945f48b46088945f88b46048945fcbedcd21108c745ec0c550a0883c5ecff26544c0a *0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc745f410d311088b4e *04894df0be88d2110883c5ece921c0050090504c0a0801000100130007008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c4550a088b4e04894f *fcc745f478d211088d57f88955f0be74d0110883c5ece9c9bf050090284c0a0804000100030000 *000b00ff7c8d45f83b4354720883c7203b7b5c760ac7436c08000000ff63fcc747e484550a088b *46048947e88b46088947ec8b460c8947f08b45008947f4c747f800560a088b46088947fc8d47e4 *8945008d47f88945fcbe44d1110883c5f8e959bf050090544c0a0801000100130001008d45ec3b *43547303ff63f8c745f8d46d10088975fcc745f40cd311088b4e04894df0be88d2110883c5ece9 *1dbf050090504c0a0801000100130007008d45ec3b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8c8560a088b4e04894ffcc745f478d211088d57f88955 *f0be74d0110883c5ece9c5be05009083c71c3b7b5c760ac7436c07000000ff63f8c747e85c560a *088b45048947ec8b450c8947f08b45088947f4c747f804570a088b45088947fc8d47e889450c8d *47f8894508be44d1110883c504e973be05008d7600204c0a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9843e1108894df4bed4d1110883c5f0e94bb80500 *8d7600204c0a08000000002400010083c70c3b7b5c760ac7436c03000000ff63f8c747f8b0570a *088d47f88945008b761083c5fce9f2b9050089f6bedcd21108c7450cec570a0883c50cff268d76 *0018580a0850570a08c84f0a08030000002500ffffbc4f0a08030000002400ffff8b45088945fc *8b4d0c894df88b7608c7450040580a0883c5f4e9aabd050089f66c4c0a080b0002000000000011 *00ffff8d45ec3b4354720883c70c3b7b5c760fbee0c71108c7436c03000000ff63fcc747f8844f *0a088d4ff8894dfcbe88c71108c745f84c580a0883c5f8ff268d7600d4d11108bc580a08000002 *00180001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e861a5050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8b83e1108 *8945f4bed4d1110883c5f0e903b705008d7600a0d51108e8c7110828590a080000020018000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8f1a40500 *83c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4e8c71108bea0d511 *0883c5f0e975b805009074c81108dcd2110808c8110890d51108a0d3110870d51108a8c71108c7 *450c0cd211088b750483c508e946b8050089f6be70d51108e93ab8050089f694590a0801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be74c8110883c5f0 *e904b8050094590a0801000100130011008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8dc590a088b4e04894ffc8d57f88955f4bea0d3110883 *c5f0e9b4b705009c590a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f4fcd11108be08c8110883c5f0e97fb705008d760083c7183b7b5c760ac7436c06000000 *ff63f8c747ec105a0a088b45048947f0c747f8605a0a088d4fec894d048d57f8895500bea8c711 *0883c5fce949bb0500908c5a0a08c4590a0894590a0801000000250075008b7508c74508e05a0a *0883c508ff2690c7450c0cd211088b750483c508e906b7050089f6f05a0a08e05a0a0894590a08 *03000000250075008b450c89750c89c6c74500185b0a08ff268d7600185b0a08b0590a0894590a *08030000002500750094590a0804000100030000000b0075008d45f43b43547303ff63fc8b4e0c *894df88b56088955fc8b7604c745f4405b0a0883c5f4ff2689f6a0590a0801000100130001008d *45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d5110883c5f0e95cb60500 *94590a080200000024007d0083c71c3b7b5c760ac7436c07000000ff63f8c747e8505b0a088b45 *088947ec8b45048947f08b460c8947f4c747f8845b0a088b45088947fc8d47e88945088d47f889 *45048b7604e910ba050094590a080b0002000000000011007f008d45fc3b43547308be08c81108 *ff63fcbedcd21108c745fcb85b0a0883c5fcff268d7600d4d11108bcd1110844d1110864c81108 *dcd21108a8d2110810c81108e4d5110890d5110880d5110868d5110878d5110888c71108b8c711 *08c8c71108645c0a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4be78d5110883c5f0e960b50500be00d2110883c5188b4500ff60f089f6385c0a0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c03e1108894df4 *bed4d1110883c5f0e937b305008d7600385c0a08010000002400010083c70c3b7b5c760ac7436c *03000000ff63f8c747f8c45c0a088b45048945008d4ff8894d048b760483c5fce9e4b80500385c *0a0801000100130001108d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be88 *c71108c745f0005d0a0883c5f0ff26010000002400000083c70c3b7b5c760ac7436c03000000ff *63f8c747f87cdc0b08c747fcc80a1208c70700d211088b45048945008d4ff8894d048b760483c5 *fce967b805008d7600685c0a0801000100130001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4be88c71108c745f0705d0a0883c5f0ff268b450489451c8b750c83c51ce9 *8f0400008d7600445c0a0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e08894df48b56048955f0be64c8110883c5ece9deb7050089f6505c0a0801000100130001 *008d45f43b43547303ff63f8c745f8d46d10088975fc8b4e04894df483c5f4e93d060000904c5c *0a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bea8 *d2110883c5f0e96cb305006c5c0a0801000100130001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4beb8c7110883c5f0e938b30500405c0a0802000000150009088d45ec *3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec745e0a *088b46088947f0c747f8a85e0a088b46048947fc8d47ec8945f48d47f88945f0be44d1110883c5 *ece9e1b6050090405c0a0804000100030000000b0019088d45f83b4354720883c7183b7b5c760a *c7436c06000000ff63fcc747ec445e0a088b46048947f0c747f8dc5e0a088b45008947fc8b4608 *89078d47ec8945008d47f88945fc8b760c83c5f8e980b60500585c0a0801000100130001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d5110883c5f0e940b2050083 *c71c3b7b5c760ac7436c07000000ff63f8c747e8445f0a088b45108947ec8b46048947f08b450c *8947f4c747f8a05f0a088b45108947fc8d47e88945108d47f889450c8b750883c508e9fdb50500 *90c745100cd211088b750483c50ce9deb1050089f618600a08c85f0a08405c0a08040000002500 *5908405c0a0804000100040000000b0059088d45f03b43547303ff63fc8b46108945f48b460c89 *45f88b46088945fc8b45008b4e04894d0089c6c745f040600a0883c5f0ff265c5c0a0801000100 *130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be80d5110883c5f0 *e950b10500545c0a0801000100130005008d45f03b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f890600a088b4e04894ffc8d57f88955f4bee4d5110883 *c5f0e900b10500405c0a08050000001200fb088d45ec3b4354720883c72c3b7b5c760ac7436c0b *000000ff63f8c745f8d46d10088975fcc747d8085e0a088b46048947dc8b46088947e0c747e450 *600a088d47d88947e88b460c8947ec8b46108947f08b46148947f4c747f8c4600a088d47d88947 *fc8d47e48945f48d47f88945f08b761083c5ece986b4050089f683c7303b7b5c760ac7436c0c00 *0000ff63f8c747d48c6b10088b450c8947d88b45048947dcc747e014610a088b451c8947e48b45 *088947e88b45188947ec8b45148947f08b45108947f4c747f87cdc0b088d47e08947fc8d47d489 *078d77f883c5208b4500ff60ec90610a08e85d0a08405c0a08070000002500fb0883c7183b7b5c *760ac7436c06000000ff63f8c747ec3c5d0a088b46048947f0c747f8bc5d0a088b46048947fc8d *47ec8945f48d47f88945f08b46088945fc8b4604894500bebcd11108c745f80c620a0883c5ece9 *b0b305000c620a08a85c0a08385c0a08050000002500ef33385c0a0804000100040000000b00ef *338d45d83b43547303ff63fc8975f08b46108945f48b460c8945f88b46088945fc8b45008b4e04 *894d0089c6c745ec78620a0883c5ecff2690385c0a08050000001200ef338d45f43b4354720883 *c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10088975fcc747f088620a088b46048947 *f48b46088947f88b460c8947fc8b461089078b46148945f48d77f083c5f4e969ffffff90385c0a *08050000001200ef738d45f03b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747eccc620a088b46048947f08b46088947f48b460c8947f88b46108947fc8b46 *1489078d47ec8945f4bec8c7110883c5f0e981ae050090385c0a0804000100040000000b00ef7b *8d45f83b4354720883c7243b7b5c760ac7436c09000000ff63fcc747e0805c0a088b46048947e4 *c747ec2c630a088b46048947f08b46088947f48b460c8947f88b46108947fc8b450089078d47e0 *8945008d47ec8945fc8b760883c5f8e91ab2050089f6605c0a0801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4be68d5110883c5f0e9d8ad0500385c0a08 *010000002400ef7f83c7203b7b5c760ac7436c08000000ff63f8c747e498630a088b45048947e8 *8b46088947ec8b46048947f08b460c8947f4c747f808640a088b45048947fc8d47e48945048d47 *f88945008b760483c5fce983b105008d7600385c0a0804000100000000001100ff7f8d45f83b43 *547308be10c81108ff63fcbedcd21108c745fc3c640a0883c5fcff26909090e900000000833d18 *c8110800751ec70518c8110801000000c7450004aa0b0883c504c7450090310c0883c50483c5fc *ff650089f6e4d111088b750483c50cff2683c70c3b7b5c760ac7436c03000000ff63f8c747f87c *dc0b08c747fcc80a120889378d47f8894508bee4d11108e9dab0050089f608650a0800650a08fc *640a084200000025000100fc640a080b00020000000000110001008d45fc3b43547308be1cc811 *08ff63fc8b7504c745fc50650a0883c5fcff269080d1110801000000240000008b4504894500c7 *4504d00a12088b760883c5fce970b0050080650a080400010000000000110001008d45f83b4354 *7308be24c81108ff63fcbe80d11108c745fc8c650a0883c5fcff268d760080d11108be00d21108 *83c5048b4500ff60f089f68b750483c510ff268b750883c510ff26f4650a08ec650a0800000000 *83000000250000000300000024000000c745fcd00a12088b450c8945f88b7608c7450010660a08 *83c5f4e9ddaf0500908975f88b46088945fc8b4e04894d00be80d11108c745f418660a0883c5f4 *ff2638660a08dc650a08d8650a080000000025000100d8650a080400010000000000110001008d *45e83b43547308be2cc81108ff63fc8b7500c745006c660a08ff2680d11108befcd1110883c504 *8b4500ff60f089f601000000240000008b4504894500c74504d00a12088b760883c5fce948af05 *008b4604894500be80d11108c745fcb4660a0883c5fcff2690cc660a089c660a0898660a080000 *00002500010098660a080400010000000000110001008d45f83b43547308be34c81108ff63fc8b *7500c74500f8660a08ff2680d11108befcd1110883c5048b4500ff60f089f60100000024000000 *8b4504894500c74504d00a12088b760883c5fce9bcae05008b4604894500be80d11108c745fc40 *670a0883c5fcff269058670a0828670a0824670a08000000002500010024670a08040001000000 *0000110001008d45f83b43547308be3cc81108ff63fc8b7500c7450084670a08ff26e4d1110880 *d1110860d311085cd3110880d11108bc670a0801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e910aa0500b8670a0801000100130007 *008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747 *f8d0670a088b4e04894ffc8d57f88955f4c745f024c81108be60d3110883c5ece9c5ad05009002 *000000240000008b45088b4d04894d088945048b7608e9a8ad0500b4670a080400010001000000 *0c0001008d45f83b43547303ff63fc8b4e04894dfcbe80d11108c745f858680a0883c5f8ff2689 *f683c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b450c8947fcc70700d211088d *77f883c510ff650089f683c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b450c89 *47fcc70700d211088d77f883c510ff650089f6bc670a0801000100130001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e9d4a80500b0670a08020000 *00150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f8985f10088b46048947fc8d47f88945f48b46088945f0bee4d1110883c5ece98aac05 *0089f6b0670a0802000000150009008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f840690a088b46048947fc8b460889078d47f88945f4be5cd3 *110883c5f0e927a805008d760083c7243b7b5c760ac7436c09000000ff63f8c747e00c690a088b *45048947e4c747ec98690a088b45088947f08b46088947f4c747f8e4bb0b088d47ec8947fc8d47 *e089078d77f883c510ff65008d7600e4690a08d0680a08b0670a0803000000250009008b450489 *750489c6c74500486a0a08ff268d7600486a0a08a0680a08b0670a080300000025000900b0670a *0802000000240009008b46088945008b7604c745fc706a0a0883c5fcff268d7600b0670a080400 *01000000000011001f008d45ec3b4354720883c7203b7b5c760fbe44c81108c7436c08000000ff *63fcc747e404680a088b45008947e8c747f00c5f10088d47e48947f4c747fc7c680a08c707c80a *12088d47f08945f48d47fc8945f08d47e48945fcbe60d31108c745f87c6a0a0883c5ece904ab05 *00e4d1110844c8110800000000240000008b760483c504ff26c74508206b0a0883c504e96dffff *ff9000000000240000008b760483c504ff26146b0a0801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df0c745f4406b0a0883c5f0e926ffffff89f683c7183b *7b5c760ac7436c06000000ff63f8c747ec7cdc0b08c747f0c80a12088977f4c747f8546b0a088b *45048947fc8d4fec894d088d57f8895504bee4d11108e94eaa050089f6806b0a08286b0a08106b *0a084200000025000300106b0a080b00020000000000110003008d45fc3b43547308be4cc81108 *ff63fc8b7504c745fcdc6b0a0883c5fcff269080d1110848d1110854d1110854d311085cd31108 *80d11108bee0d0110883c5048b4500ff60f089f61c6c0a0801000100130001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e9a0a5050083c7143b7b5c *760ac7436c05000000ff63f8c747f0406c0a088b45088947f4c747fc94b90b088d4ff0890f8d77 *fc83c5108b5500ff62ec901c6c0a0801000100130001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be5cd3110883c5f0e934a5050083c7143b7b5c760ac7436c05000000 *ff63f8c747f0ac6c0a088b450c8947f4c747fc94b90b088d4ff0890f8d77fc83c5148b5500ff62 *ec908b750883c514ff268b75108b450489451083c508e9a70000008d7600146d0a080c6d0a0800 *00000004000000250000000500000024000000c74500d00a12088b45048945fc8b7608c745043c *6d0a0883c5f8e9b1a80500908b4604894500be80d11108c745fc446d0a0883c5fcff2690646d0a *08d46c0a080c6c0a0804000000250011008b46088945008b7604c745fc906d0a0883c5fcff268d *7600906d0a08686c0a080c6c0a0803000000250011000c6c0a0816000300000001000b0011008d *45ec3b43547303ff63fc8b4d0889750889cec745fcbc6d0a0883c5fcff26900c6c0a0800000200 *120011008d45f83b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975 *fcc747fccc6d0a088d77fc83c5f8e9a6ff050089f68b75148b45108945148b4d0c894d1083c50c *e99dac0500908b451489450c8b45048945148b75088b45108945088b4518894510c7451800d211 *0883c508e90e02000089f6c7451800d211088b750c8b451089450c8b4d14894d108b5504895514 *83c50ce924040000746e0a08486e0a080000000007000000250000000700000024000000c745fc *d00a12088b45188945f88b7608c74500ac6e0a0883c5f4e941a70500908b46088945008b4e0489 *4d14be80d11108c745fcb46e0a0883c5fcff268d7600d46e0a08306e0a080c6c0a080600000025 *0001000c6c0a0817000400030000000b0001008d45e43b43547303ff63fc8b460c8945f88b4608 *8945fc8b45088b4e04894d0889c6c745f4086f0a0883c5f4ff2689f683c70c3b7b5c760ac7436c *03000000ff63f8c747f87cdc0b088b45108947fc8b450c89078b451889451c8b45148945188d47 *f88945148b45088945108b750483c510eb8c8b750883c520ff268b751083c528ff2683c70c3b7b *5c760ac7436c03000000ff63f8c747f87cdc0b088b45048947fc8b452089078d47f88945208b75 *248b450c89452483c510e9a9000000909c6f0a08946f0a08000000004900000025000000090000 *00240000008b45088945fc8b4d18894df88b7608c74500ec6f0a0883c5f4e902a6050089f68b46 *088945fc8b4e04894d00be80d11108c745f8f46f0a0883c5f8ff268d760014700a088c6f0a080c *6c0a0807000000250001008b46088945048b7604c7450048700a08ff2689f648700a08486f0a08 *0c6c0a0807000000250001000c6c0a0819000600010000000c0001008d45e43b43547303ff63fc *8b4e04894dfc8b551489751489d6c745f870700a0883c5f8ff268d76001c6c0a08010001001300 *01008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f87cdc0b08c747fc54c811088b4e04890f8d57f88955f4be5cd3110883c5f0e90aa1050089f6 *83c7203b7b5c760ac7436c08000000ff63f8c747e47cdc0b08c747e854c811088b450c8947ecc7 *47f0b4700a088b450c8947f4c747fc94b90b088d47f089078b45148945188b45108945148d47e4 *8945108d47fc89450c8b750483c50ce9b6fdffff89f61c6c0a0801000100130001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e970a0050083c7143b *7b5c760ac7436c05000000ff63f8c747f070710a088b450c8947f4c747fc94b90b088d4ff0890f *8d77fc83c51c8b5500ff62ec908b751083c524ff2683c70c3b7b5c760ac7436c03000000ff63f8 *c747f87cdc0b088b45048947fc8b451c89078d47f889451c8b75208b450c89452083c510e9a900 *000090d8710a08d0710a080000000048000000250000000800000024000000c745fcd00a12088b *45088945f88b7608c7450028720a0883c5f4e9c5a30500908b46088945fc8b4e04894d00be80d1 *1108c745f830720a0883c5f8ff268d760050720a0898710a080c6c0a0806000000250011008b46 *088945048b7604c7450084720a08ff2689f684720a0800710a080c6c0a0806000000250011000c *6c0a0818000500010000000c0011008d45e43b43547303ff63fc8b4e04894dfc8b551089751089 *d6c745f8ac720a0883c5f8ff268d7600106c0a0800000200120013008d45ec3b43547303ff63f8 *c745f8d46d10088975fcc745f434c81108c745f054d11108be48d1110883c5ece9f4a20500bee0 *d0110883c5048b4500ff60f089f683c7143b7b5c760ac7436c05000000ff63f8c747f07cdc0b08 *c747f4c80a1208c747f800d21108c747fc94b90b088d47f089078d77fc83c5048b4d00ff61ec90 *30730a0820730a0800000000000000002500000083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f8f0720a088b45048945008d4ff8894dfcbe54d31108c7450484730a0883c5f8e957a205008d *760083c508ff268d7600c0730a0884730a08106c0a08010000002500170083c72c3b7b5c760ac7 *436c0b000000ff63f8c747d8f86d0a08c747e4186f0a088d47d88947e88d47fc8947ec8d47f489 *47f0c747f480700a088d47e48947f8c747fcbc720a088d47e489078b46088945f88b46048945f4 *c745f000d21108c745ece0d011088975008d77e4c745fcdc730a0883c5ece9c2faffff89f6dc73 *0a08246c0a080c6c0a080000000025003f000c6c0a08040001000000000011003f008d45ec3b43 *547308be5cc81108ff63fc8b7500c745006c740a08ff26e4d1110880d1110898d311088b750483 *c50cff26a0740a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be98d3110883c5f0e9289d050083c70c3b7b5c760ac7436c03000000ff63f8c747f87c *dc0b08c747fc54c811088b450889078d4ff8894d08bee4d11108e9ffa005008d7600bee4d11108 *e9f2a0050089f618750a08e0740a0898740a08020000002500010098740a080200000024000500 *83c70c3b7b5c760ac7436c03000000ff63f8c747f8b8740a088b45048947fcc745fcd00a12088d *4ff8894df88b7608c7450038750a0883c5f4e992a0050089f6897508be80d11108c7450044750a *08ff268d760084750a08a4740a0898740a08420000002500070098740a0802000000240007008b *7508c74500ac750a08ff268b750883c50cff268b750883c50cff26ebe289f6d4750a08cc750a08 *98740a08020000002500070098740a0803000000240007008b460483f82e750f8b7504c74504ec *750a0883c504ff2683c504eba48b46088945008b7604c745fcf8750a0883c5fcff268d76001476 *0a08c4750a0898740a08020000002500070098740a080b00020000000000110007008d45f03b43 *547308be64c81108ff63fc8b7500c745fc40760a0883c5fcff269080d1110864c81108c7450800 *d2110883c504e9c9ffffff908b450489450c83c508e9baffffff89f68b750483c510ff2698760a *0888760a0874760a08830000002500010074760a080300000024000100c745fcd00a12088b450c *8945f88b7608c74500b4760a0883c5f4e9359f0500908975008b4604894508be80d11108c745fc *c0760a0883c5fcff2689f6e0760a0878760a0870760a08420000002500030070760a080b000200 *00000000110003008d45ec3b43547308be6cc81108ff63fc8b7504c745fc10770a0883c5fcff26 *90e4d11108c4d11108d4d1110880d1110844d11108e0d1110860d3110864c8110880d11108be00 *d2110883c5048b4500ff60f089f68b750483c50cff268b750883c50cff267c770a0874770a0800 *00000002000000250000008b46088945fc8975008b7604c745f898770a0883c5f8ff2698770a08 *64770a0800000000000000002500000004000100000001000b0000008d45f83b43547303ff63fc *8b7500c74500c4770a08ff269083c70c3b7b5c760ac7436c03000000ff63f8c747f87cdc0b08c7 *47fc00d21108c70700d211088d77f883c50c8b4500ff60ec89f683c70c3b7b5c760ac7436c0300 *0000ff63f8c747f8e4bb0b088b45048947fcc70700d211088d77f883c508e988f5050083c70c3b *7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b45048947fc8b4e08890f8d77f883c508e9 *59f50500904c780a081c780a0800000000010000002500000000000000240000008b4604894500 *8b7608c745fc90780a0883c5fcff268d760058770a0801000100130005008d45e83b43547303ff *63f8c745f8d46d10088975fc8b4e04894df0c745ec24c81108be60d31108c745f498780a0883c5 *e8e9229d050089f648770a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9c43e1108894df4bed4d1110883c5f0e9fb9605008d76005c770a08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be64c8110883c5f0e9a4 *98050054770a0803000000120005008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c745f8d46d10088975fcc747ec8c6b10088b460c8947f08b46048947f4c747f83c790a088b *46088947fc8d47ec8945f48d47f88945f0bee0d1110883c5ece9479c05008d760083c71c3b7b5c *760ac7436c07000000ff63f8c747e870790a088b45088947ec8b45048947f08b450c8947f4c747 *f87cdc0b08c747fc00d211088d47e889078d77f883c5148b4500ff60ec89f650770a0803000000 *120001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975 *fcc747f88c6b10088b460c8947fc8b460889078d47f88945f48b46048945f0be44d1110883c5ec *e99d9b0500905c770a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4be64c8110883c5f0e95c97050083c71c3b7b5c760ac7436c07000000ff63f8c747 *e8287a0a088b45108947ec8b45088947f08b450c8947f4c747f8847a0a088b45048947fc8d47e8 *8945108d47f889450cbee0d1110883c508e9179b05008d7600ac7a0a08d0790a0850770a080400 *000025000b0044770a080400000024005b0083c70c3b7b5c761ec74500207b0a08c7436c030000 *00b8ff00000083f000894320e96ac20500c747f800790a088b4d04894dfc8d57f88955f8bec4d1 *1108c74500147b0a0883c5f4e9a79a05008d7600ebae89f68b45088945108b750c83c510e9eb00 *00008d7600eb9689f6887b0a08747b0a0844770a080400000025005b0044770a08050000002400 *5b008b460483f82e750f8b7504c74504a07b0a0883c504ff2683c504e955ffffff908b46088945 *008b7604c745fcac7b0a0883c5fcff268d7600cc7b0a08707b0a0844770a080400000025005b00 *83c7243b7b5c760ac7436c09000000ff63f8c747e0bc780a088977e4c747ec985f10088d47e089 *47f0c747f80c5f10088d47e08947fc8d47ec8945008d47f88945fc8d77f8c745f8f87b0a0883c5 *f8ff268d7600f87b0a08e8770a0844770a08020000002500fb0044770a0804000100010000000c *00fb008d45e43b43547303ff63fc8975fc8b4d008b560489550089cec745f8607c0a0883c5f8ff *268d760040770a0800000200120001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fcc80a1208c70700d211088d4ff8894df4 *c745f000d21108bee4d1110883c5ece91e99050089f683c7103b7b5c760ac7436c04000000ff63 *f8c747f4fcbb0b08c747f800d211088b45048947fcc70700d211088d77f483c508e9a5f0050090 *83c7103b7b5c760ac7436c04000000ff63f8c747f4fcbb0b08c747f800d211088b45108947fc8b *4d04890f8d77f483c514e96ef0050089f640770a0800000200120001008d45ec3b4354720883c7 *0c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc54c811 *08c70700d211088d4ff8894df4c745f000d21108bee4d1110883c5ece94e98050089f640770a08 *00000200120001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d *10088975fcc747f87cdc0b08c747fc54c81108c70700d211088d4ff8894df4c745f000d21108be *e4d1110883c5ece9ee97050089f683c7283b7b5c760ac7436c0a000000ff63f8c747dc747d0a08 *c747e8d47d0a08c747f4fcbb0b088d47e88947f88d4fdc894ffc8b550889178d77f483c514e969 *ef050090287e0a08307d0a0840770a08840000002500010040770a080400000024000100c745fc *d00a12088b450c8945f88b7608c74500807e0a0883c5f4e969970500908975f88b46088945fc8b *4e04894d00be80d11108c745f48c7e0a0883c5f4ff26ac7e0a08f87c0a0840770a080100000025 *00090040770a0801000100130009008d45d83b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f8a47c0a088d4ff8894df48b7604c745f0e07e0a0883c5f0ff *2602000000150000008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8246010088b4e08894ffc8d57f88955f48b760483c5f4e9fafcffff89f650 *770a0803000000120001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8347f0a088b46088947fc8b460c89078d47f88945f48b46048945f0be *44d1110883c5ece9419605009040770a0801000100130001008d45f03b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f80c5f10088b4e04894ffc8d57f889 *55f4bee4d1110883c5f0e9e491050040770a0803000000120031008d45ec3b4354720883c71c3b *7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e8847f0a088b46048947ec8b46 *088947f08b460c8947f4c747f8e07f0a088b460c8947fc8d47e88945f48d47f88945f0bee0d111 *0883c5ece9819505009040770a0804000100000000001100ff0183c7443b7b5c760fbe74c81108 *c7436c11000000ff63fcc747c0d0770a08c747c8707c0a088d47c08947ccc747d0ec7e0a088b45 *008947d4c747dc30800a088d47c08947e08d47c88947e48d47d08947e8c747ec985f10088d47d0 *8947f0c747f87cdc0b088d47ec8947fc8d47dc89078d77f883c5048b4500ff60ec78d3110860d3 *11085cd3110880d1110828810a0801000100130001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8b4e04894df4be5cd3110883c5f0e9a490050024810a0801000100130007008d45ec3b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f83c810a08 *8b4e04894ffc8d57f88955f4c745f024c81108be60d3110883c5ece9599405009083c70c3b7b5c *760ac7436c03000000ff63f8c747f87cdc0b08c747fcc80a1208c70700d211088d77f883c504ff *25c06d100889f683c504ff268d7600f0810a08bc810a0800000000000000002500000000000000 *240000008b7604c745000c820a08ff2601000100130000008d45f43b43547303ff63f8c745f8d4 *6d10088975fc8b7604c745f414820a0883c5f4ff2628810a0801000100130001008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f828820a088b4e *04894ffc8d57f88955f4be5cd3110883c5f0e96c8f050083c70c3b7b5c760ac7436c03000000ff *63f8c747f87cdc0b08c747fcc80a1208c70700d211088d77f883c504ff25c06d100889f683c70c *3b7b5c760ac7436c03000000ff63f8c747f87cdc0b08c747fc54c81108c70700d211088d77f883 *c504ff25c06d100889f683c504ff268d760004830a08d0820a0800000000000000002500000089 *75fcc745f824c81108be78d31108c7450020830a0883c5f4e9d692050089f620830a089c820a08 *20810a08000000002500090020810a0800000000240009008b7608c7450054830a08ff2620810a *0801000100130009008d45e83b43547303ff63f8c745f8d46d10088975fc8b7604c745f460830a *0883c5f4ff2620810a080100010013000d008d45f03b4354720883c70c3b7b5c760ac7436c0300 *0000ff63f8c745f8d46d10088975fcc747f878830a088b4e04894ffc8d57f88955f4be5cd31108 *83c5f0e91c8e050020810a08040001000000000011000f0083c7303b7b5c760fbe7cc81108c743 *6c0c000000ff63fcc747d470810a088b45008947d8c747e058820a088d47d48947e4c747eca883 *0a088d47d48947f0c747f8e4bb0b088d47ec8947fc8d47e089078d77f883c504ff65008d760080 *d1110860d311085cd311087cc8110864840a0801000100130001008d45f43b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df483c5f4e965ffffff9060840a0801000100130001008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8985f10 *088b4e04894ffc8d57f88955f4be5cd3110883c5f0e9208d050002000000240000008b45088b4d *04894d088945048b7608e91091050058840a0804000100010000000c0001008d45f83b43547303 *ff63fc8b4e04894dfcbe80d11108c745f8f0840a0883c5f8ff2689f660840a0801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e99c8c *050083c7283b7b5c760ac7436c0a000000ff63f8c747dc44850a088b45048947e0c747e80c5f10 *088b45088947ecc747f4fcbb0b088d47e88947f88d47dc8947fcc70700d211088d77f483c50cff *650089f660840a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be5cd3110883c5f0e9188c050060840a0801000100130001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be5cd3110883c5f0e9e48b050083c7343b7b5c760ac7 *436c0d000000ff63f8c747d0c8850a088b45048947d4c747dcfc850a088b46088947e0c747e80c *5f10088b45088947ecc747f4fcbb0b088d47e88947f88d47dc8947fc8d47d089078d77f483c50c *ff650089f624860a086c850a0860840a08020000002500010060840a0801000000240001008b46 *048945008b7608c745fc94860a0883c5fcff268d760058840a08040001000000000011000f008d *45f03b4354720883c7203b7b5c760fbe84c81108c7436c08000000ff63fcc747e474840a088b45 *008947e8c747f0a4840a088d47e48947f4c747fc14850a08c707c80a12088d47f08945f88d47fc *8945f48d47e4894500be60d31108c745fca0860a0883c5f0e9e08e0500b8d31108b0d011083887 *0a0801000100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8 *d46d10088975fcc747f87cdc0b08c747fc8cc81108c70700d211088b4e04894df48d57f88955f0 *beb0d0110883c5ece97b8e05008d760034870a080400010000000000110003008d45fc3b435472 *0883c70c3b7b5c760fbe94c81108c7436c03000000ff63fcc747f848870a088b4d00894ffc8d57 *f8895500beb8d3110883c5fce91d8a05009080d1110860d3110802000000240000008b45088b4d *04894d088945048b7608e9048e0500ec870a0804000100010000000c0001008d45f83b43547303 *ff63fc8b4e04894dfcbe80d11108c745f8fc870a0883c5f8ff2689f683c70c3b7b5c760ac7436c *03000000ff63f8c747f87cdc0b088b45048947fcc70700d211088d77f883c5108b4d00ff61ec8d *760083c71c3b7b5c760ac7436c07000000ff63f8c747e8c86b10088b450c8947ec8b45088947f0 *8b46088947f4c747f87cdc0b088b45048947fc8d47e889078d77f883c5108b4500ff60ec8d7600 *78880a0844880a0800000000030000002500000002000000240000008b46048945008b7608c745 *fcd8880a0883c5fcff268d7600ec870a080b000200000001000b0003008d45f03b4354720883c7 *083b7b5c760ac7436c02000000ff63fcc747fc20880a088b450089078b45048945f88d47fc8945 *f4897504be60d31108c745fce0880a0883c5f0e9c38c05008d7600ec870a080400010000000000 *110003008d45fc3b4354720883c7083b7b5c760fbe9cc81108c7436c02000000ff63fcc747fc08 *890a08c745fc8cc811088d77fc83c5fce96cffffffd4d111089c890a0800000200180001008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e88174050083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fc90b8c83e11088945f4bed4d111 *0883c5f0e923860500909090e900000000833dd0c8110800751ec705d0c8110801000000c74500 *90310c0883c504c7450050a70b0883c50483c5fcff650089f630d411088cd411083c8a0a080000 *0200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e8dd73050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f48cd4 *1108be30d4110883c5f0e96187050090bcd3110800000000240000008b760883c504ff26a88a0a *0800000200180001008d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f808 *5c100856e86573050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbebc *d31108c745f4b48a0a0883c5f4ff26e4d11108c4d11108d4d11108ecc81108248b0a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc3e1108894df4bed4d1 *110883c5f0e9c38405008d7600248b0a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9d03e1108894df4bed4d1110883c5f0e9878405008d76001c8b0a0801 *000100130005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8748b0a088d4ff8894df48b56048955f0bee4d1110883c5ece9208a0500248b0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d83e110889 *4df4bed4d1110883c5f0e9fb8305008d76001c8b0a0801000100130005008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecb08b0a088b46048947 *f0c747f8008c0a088d47ec8945f48d47f88945f0bee4d1110883c5ece9878905008d76001c8b0a *0802000000150005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f83c8c0a088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ec *e92e89050089f6248b0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9e83e1108894df4bed4d1110883c5f0e9078305008d76001c8b0a0802000000150005 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec9c8c0a088b46048947f08b46088947f4c747f8f48c0a088d47ec8945f48d47f88945f0bee4d1 *110883c5ece98d8805009001000000240000008b7608e970840500288b0a080100010013000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beecc81108c745f0908d0a08 *83c5f0ff261c8b0a080300000012000d008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec308d0a088b46088947f08b460c8947f4c747f8a48d0a *088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9db8705008d7600248b0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ec3e1108894d *f4bed4d1110883c5f0e9b38105008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8dc *8d0a088b45048947ec8b45088947f08b450c8947f4c747f8488e0a088d47e889450c8d47f88945 *08bee4d1110883c504e95187050090248b0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9f43e1108894df4bed4d1110883c5f0e92b8105008d76001c8b0a *0801000100130005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8d08e0a088d4ff8894df48b56048955f0bee4d1110883c5ece9c486050024 *8b0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9fc3e11 *08894df4bed4d1110883c5f0e99f8005008d76001c8b0a0801000100130005008d45ec3b435472 *0883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec0c8f0a088b4604 *8947f0c747f85c8f0a088d47ec8945f48d47f88945f0bee4d1110883c5ece92b8605008d76001c *8b0a0802000000150005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8988f0a088b46088947fc8d47f88945f48b46048945f0bee4d1110883 *c5ece9d285050089f6248b0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b90c3f1108894df4bed4d1110883c5f0e9ab7f05008d76001c8b0a080200000015 *0005008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fc *c747ecf88f0a088b46048947f08b46088947f4c747f850900a088d47ec8945f48d47f88945f0be *e4d1110883c5ece9318505009001000000240000008b7608e914810500288b0a08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beecc81108c745f0ec90 *0a0883c5f0ff261c8b0a080300000012000d008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747ec8c900a088b46088947f08b460c8947f4c747f800 *910a088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece97f8405008d7600248b *0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9103f1108 *894df4bed4d1110883c5f0e9577e05008d76001c8b0a080300000012000d008d45ec3b43547208 *83c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc747e838910a088b460489 *47ec8b46088947f08b460c8947f4c747f8a4910a088d47e88945f48d47f88945f0bee4d1110883 *c5ece9d78305008d76001c8b0a080400000012000d008d45ec3b4354720883c7103b7b5c760ac7 *436c04000000ff63f8c745f8d46d10088975fcc747f4e0910a088b46048947f88b46088947fc8b *460c89078d47f48945f48b46108945f0bee4d1110883c5ece9738305008d7600248b0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b91c3f1108894df4bed4 *d1110883c5f0e94b7d05008d760083c7203b7b5c760ac7436c08000000ff63f8c747e44c920a08 *8b45048947e88b45088947ec8b450c8947f08977f4c747f8b0920a088d47e489450c8d47f88945 *08bee4d1110883c504e9e682050089f6e0920a08788e0a081c8b0a080300000025000d008b7504 *c7450444930a0883c504ff2690248b0a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9283f1108894df4bed4d1110883c5f0e99b7c05008d76001c8b0a0801 *000100130005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f860930a088d4ff8894df48b56048955f0bee4d1110883c5ece934820500248b0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9303f110889 *4df4bed4d1110883c5f0e90f7c05008d76001c8b0a0801000100130005008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec9c930a088b46048947 *f0c747f8ec930a088d47ec8945f48d47f88945f0bee4d1110883c5ece99b8105008d76001c8b0a *0802000000150005008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f828940a088b46088947fc8d47f88945f48b46048945f0bee4d1110883c5ec *e94281050089f6248b0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b9403f1108894df4bed4d1110883c5f0e91b7b05008d76001c8b0a0802000000150005 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec88940a088b46048947f08b46088947f4c747f8e0940a088d47ec8945f48d47f88945f0bee4d1 *110883c5ece9a18005009001000000240000008b7608e9847c0500288b0a080100010013000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beecc81108c745f07c950a08 *83c5f0ff261c8b0a080300000012000d008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec1c950a088b46088947f08b460c8947f4c747f890950a *088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9ef7f05008d7600248b0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9443f1108894d *f4bed4d1110883c5f0e9c77905008d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8c8 *950a088b45088947ec8b450c8947f08b45108947f4c747f834960a088d47e88945108d47f88945 *0cbee4d1110883c508e9657f05009064960a0844930a081c8b0a080400000025000d001c8b0a08 *170004000000000011000f008d45f03b4354720883c70c3b7b5c760fbefcc81108c7436c030000 *00ff63fcc747f8388b0a088b4d00894df88d57f88955f4bec4d11108c745fcc4960a0883c5f0e9 *fa7e050089f6ccd1110880d111081c970a0800000200180003008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c747f8085c100856e8fd66050083c4048d47f8894604c706245b *1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e9817a0500900b0002 *0000000000110000008b750483c508ff264cd21108d4d1110868d3110850d5110888d3110870d3 *1108a4d0110854d311084cd51108bcd31108dcc8110804c9110818c91108b84c3f1108894508be *4cd2110883c504e9437805008d7600cc970a0801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4c745f0d811120883c5f0e9020c000089f683c7183b7b5c76 *0ac7436c06000000ff63f8c747ecf4970a088b45048947f0c747f87cdc0b08c747fc40c911088d *4fec890f8d77f883c5108b5500ff62ec89f6cc970a0801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4c745f0d811120883c5f0e98a0b000089f683c7183b *7b5c760ac7436c06000000ff63f8c747ec6c980a088b45048947f0c747f87cdc0b08c747fc3cc9 *11088d4fec890f8d77f883c5108b5500ff62ec89f698980a0820980a08cc970a08c30000002500 *0100a8970a0843000000240011028b450c8945fcc745f850d51108be54d31108c74500ec980a08 *83c5f4e9fb7c05008d7600ebda89f6cc970a0802000000150001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df48b56088955f083c5f0e9cb0a00008d760001000000240000 *008b4504894500c74504d4c811088b760c83c5fce99c7c0500c0970a0801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f060990a0883c5 *f0ff26b0970a0802000000150011008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff *63f8c745f8d46d10088975fcc747f884990a088b46048947fc8b46088945f48d47f88945f0be70 *d3110883c5ece90e7c050089f6cc970a0801000100130001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8b4e04894df4c745f0d811120883c5f0e9e209000089f683c7083b7b5c760ac7 *436c02000000ff63f8c747fc2cbb0a088b450489078d77fc83c508ff25b46d100889f683c7083b *7b5c760ac7436c02000000ff63f8c747fc2cbb0a088b450889078d77fc83c50cff25b46d100889 *f683c7083b7b5c760ac7436c02000000ff63f8c747fc2cbb0a088b450c89078d77fc83c510ff25 *b46d100889f6c4970a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4bedcc8110883c5f0e91077050083c7183b7b5c760ac7436c06000000ff63f8c747 *ecd09a0a088b45088947f0c747f80cbb0a088d4fec894ffc8b550489178d77f883c510ff25b86d *10088d7600f89a0a08989a0a08c4970a0803000000250001008b45048945f8c745f44cd511088b *4e04894d00be54d31108c745fc4c9b0a0883c5f0e9a17a0500904c9b0a086c9a0a08b8970a0802 *00000025000b008b46048945008b7608c745fc889b0a0883c5fcff268d7600889b0a08409a0a08 *b8970a080100000025000b00b4970a0801000100130017008d45dc3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894dec8b56048955f4bea4d01108c745f0b49b0a0883c5e8e9137605008d *7600a8970a08040000002400fd0283c72c3b7b5c760ac7436c0b000000ff63f88b460483f83e7d *4583f8230f8592000000c747d8149a0a088b45088947dcc747e4c09b0a088b45048947e8c747f0 *7cdc0b088d47e48947f48d47d88947f88d77f083c51483c7f88b4500ff60ec83f83e7551c747d8 *2c990a088b45088947dc8b450c8947e0c747e4bc990a088b450c8947e88b45048947ecc747f0cc *ba0a088d47e48947f4c747f87cdc0b088d47f08947fc8d47d889078d77f883c5148b4500ff60ec *83c50483c7d4e934fcffff8b46088945008b7604c745fc049c0a0883c5fcff268d7600c49c0a08 *1c990a08a8970a08030000002500fd028b46048945088b4e08894d008b7604c745fcf09c0a0883 *c5fcff2690f09c0a08d0970a089c970a08420000002500e9179c970a08020000002400e9178b75 *08c74500209d0a08ff26ebf289f683c504ebeb8d7600a4970a0801000100130003008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f050d51108be68d3110883c5ece995 *78050090ac970a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be88d3110883c5f0e954740500ac970a08010000002400010083c70c3b7b5c760ac743 *6c03000000ff63f8c747f88c9d0a088b45048947fcc74504d4c811088d4ff8894d008b761483c5 *fce91d78050090ac970a0801000100130021008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df4bebcd31108c745f0c09d0a0883c5f0ff26ac970a0802000000150021018d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8049e0a *088b46048947fc8b46088945f48d47f88945f083c5f0e99f0500008d76009c970a080400000024 *00fd1783c7443b7b5c760ac7436c11000000ff63f88b460483f83e7565c747c0509d0a088b4504 *8947c4c747cc985f10088d47c08947d0c747d80c5f10088d47c08947dcc747e43c9e0a088d47d8 *8947e88b45088947ecc747f0ccba0a088d47cc8947f4c747f87cdc0b088d47f08947fc8d47e489 *078d77f883c5148b4500ff60ec83c50883c7bce912feffff89f68b46088945008b7604c745fc90 *9e0a0883c5fcff268d76001c9f0a083c9d0a089c970a08030000002500fd178b46088945008b76 *04c745fc489f0a0883c5fcff268d7600489f0a08389d0a089c970a08020000002500fd179c970a *08020000002400fd17837e0400750c8b7508c74500749f0a08ff26e995fdffff909c970a080200 *00002400fd178b7504c74500809f0a08ff26be00d2110883c50c8b4500ff60f089f683c504ebdf *8d7600be00d2110883c5088b4500ff60f089f683c7203b7b5c760ac7436c08000000ff63f8c747 *e48c6b10088b45088947e88b45048947ecc747f0ccba0a08c747f400d21108c747f87cdc0b088d *47f08947fc8d47e489078d77f883c50c8b4500ff60ec8d7600a0970a0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9883f1108894df4bed4d1110883c5f0e9 *c36f05008d760083c7203b7b5c760ac7436c08000000ff63f8c747e48c6b10088b450c8947e88b *45088947ecc747f0ccba0a088b45048947f4c747f87cdc0b088d47f08947fc8d47e489078d77f8 *83c5108b4500ff60eccc970a0801000100130001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4c745f0d811120883c5f0e93203000089f683c7183b7b5c760ac7436c0600 *0000ff63f8c747ecc4a00a088b45088947f0c747f87cdc0b08c747fc3cc911088d4fec890f8d77 *f883c5108b5500ff62ec89f6f0a00a0868a00a08cc970a080300000025000100a0970a08040000 *002400010883c70c3b7b5c760ac7436c03000000ff63f8c747f838a00a088d47f88945008b4d04 *894dfc8b7608c7450444a10a0883c5f8e98d74050090a0970a08040000002400010c83c7203b7b *5c760ac7436c08000000ff63f88b460483f85c7511be04c91108c7450050a10a0883c7e0ff26c7 *47e48c6b10088b45108947e88b450c8947ecc747f0ccba0a088b45088947f4c747f87cdc0b088d *47f08947fc8d47e489078d77f883c5148b4500ff60ec8d76008b46088945fc8975008b7604c745 *f894a10a0883c5f8ff2600a20a08d89f0a08a0970a08020000002500010c8b46088945008b7604 *c745fc2ca20a0883c5fcff268d76002ca20a08c89f0a08a0970a08010000002500010ca0970a08 *04000100000001000b00010c8d45e83b43547303ff63fc8b4d0089750089cec745fc58a20a0883 *c5fcff2690a0970a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9943f1108894df4bed4d1110883c5f0e9676d05008d760083c50ce9d8fcffff83c7183b7b *5c760ac7436c06000000ff63f8c747ec8c6b10088b45048947f08b450c8947f4c747f87cdc0b08 *c747fc3cc911088d47ec89078d77f883c5188b4500ff60eccca20a08c4a20a089c970a08450000 *002500fd179c970a08050000002400ff1783c70c3b7b5c760ac7436c03000000ff63f8c747f894 *a20a088d47f88945fc8b4d08894df88b7608c7450024a30a0883c5f4e9ad720500909c970a0804 *0000002400ff1f83c7083b7b5c760ac7436c02000000ff63f88b460483f85c751ec747fc68a20a *088d4ffc894d00be04c91108c745fc30a30a0883c5fcff2683c50883c7f8e9edfbffff908b4608 *8945008b7604c745fc74a30a0883c5fcff268d7600b8a30a08c09f0a089c970a08030000002500 *ff1f8b46088945008b7604c745fce4a30a0883c5fcff268d7600e4a30a08b09f0a089c970a0802 *0000002500ff1f9c970a080b000200000000001100ff1f8d45e43b43547308be18c91108ff63fc *8b7504c745fc10a40a0883c5fcff2690e4d11108ecc811088b760483c504ff26be00d2110883c5 *048b4500ff60f089f6be00d2110883c5048b4500ff60f089f601000000240000008b7608e9886d *050044a40a0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4beecc81108c745f078a40a0883c5f0ff2640a40a0802000000150003008d45ec3b43547208 *83c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec7cdc0b08c747f058 *0a12088b46088947f4c747f88ca40a088b46048947fc8d47ec8945f48d47f88945f0bee4d11108 *83c5ece9f270050089f683c7243b7b5c760ac7436c09000000ff63f8c747e0c4a40a088b460489 *47e48b46088947e8c747ec7cdc0b08c747f0580a12088d47e08947f4c747f87cdc0b08c747fc70 *0a12088d47ec89078d77f883c5048b4500ff60ec83c70c3b7b5c760ac7436c03000000ff63f8c7 *47f87cdc0b08c747fc700a12088b460489078d77f883c5048b4d00ff61ec8d76007ca50a0824a5 *0a0860a40a0850a40a0848a40a0840a40a08000000002500030040a40a08040001000000000011 *0003008b7500c74500d0a50a08ff2654d21108d4d11108bcd31108fcc8110828c91108be00d211 *0883c5148b4500ff60f089f601000000240000008b4504894500c74504d4c811088b761483c5fc *e9e46f0500f4a50a0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b *4e04894df4bebcd31108c745f018a60a0883c5f0ff26f4a50a0804000000120005008d45e83b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f83ca60a088b *460c8947fc8b46108945f48b46048945f08d47f88945ec8b46088945e883c5e8e93b0900008d76 *0083c7203b7b5c760ac7436c08000000ff63f8c747e474a60a088b46048947e88b45048947ec8b *45088947f08b46088947f4c747f87cdc0b088b46048947fc8d47e489078d77f883c5148b4500ff *60ec90c8a60a0800a60a08f4a50a088401000025000500f4a50a0884000000240005008b7510c7 *45002ca70a08ff26ebf289f6f0a50a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9a03f1108894df4bed4d1110883c5f0e9a76805008d7600f0a50a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a83f1108894df4be *d4d1110883c5f0e96b6805008d7600897500be54d2110883c5fce9386a0500c0a70a08c0a70a08 *eca50a08000000002500010083c7183b7b5c760ac7436c06000000ff63f8c747ec54a70a08c747 *f890a70a088d47ec8945108b45088945048b450c8945088d47f889450cc74514e4a70a0883c504 *e9a9eeffff90fca50a0804000000120001008d45e83b43547303ff63f8c745f8d46d10088975fc *8b46088945f48b46048945f08b46108945ec8b460c8945e883c5e8e9930700008d760083c7203b *7b5c760ac7436c08000000ff63f8c747e438a80a088b45108947e88b45048947ec8b46088947f0 *8b46048947f4c747f87cdc0b088977fc8d47e489078d77f883c5188b4500ff60ec010000002400 *00008b4504894500c74504d4c811088b761483c5fce9386d0500f4a50a0801000100130001008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f0c4a80a0883 *c5f0ff26f4a50a0804000000120005008d45e83b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8e8a80a088b46088947fc8b46108945f48b460c8945f08d *47f88945ec8b46048945e883c5e8e98f0600008d760083c7203b7b5c760ac7436c08000000ff63 *f8c747e420a90a088b45088947e88b450c8947ec8b45108947f08b45048947f4c747f87cdc0b08 *8977fc8d47e489078d77f883c5188b4500ff60ec83c504e970fdffff74a90a0870a80a08e4a70a *08c0a90a08c0a90a08eca50a080500000025001f008b46088945008b7604c745fce8a90a0883c5 *fcff268d7600e8a90a0844a70a08eca50a080400000025001f0089750c8b7510c7450014aa0a08 *ff2690e90ffdffff8d7600fca50a0803000000120001008d45e83b43547303ff63f8c745f8d46d *10088975fc8b46048945f4c745f03cc911088b460c8945ec8b46088945e883c5e8e99205000089 *f683c71c3b7b5c760ac7436c07000000ff63f8c747e838aa0a088b450c8947ec8b46088947f08b *46048947f4c747f87cdc0b088977fc8d47e889078d77f883c5148b4500ff60ec89f60100000024 *0000008b4504894500c74504d4c811088b761483c5fce93c6b0500f4a50a080100010013000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bebcd31108c745f0c0aa0a08 *83c5f0ff26f4a50a0803000000120005008d45e83b4354720883c70c3b7b5c760ac7436c030000 *00ff63f8c745f8d46d10088975fcc747f8e4aa0a088b46088947fc8b460c8945f4c745f03cc911 *088d47f88945ec8b46048945e883c5e8e99204000089f683c71c3b7b5c760ac7436c07000000ff *63f8c747e81cab0a088b45048947ec8b45088947f08b450c8947f4c747f87cdc0b088977fc8d47 *e889078d77f883c5148b4500ff60ec89f6e97bfbffff8d760070ab0a0870aa0a08b8ab0a08b8ab *0a08b8ab0a08f4a50a0804000000250005008b460889450c8b7604c74500e0ab0a08ff2689f6e0 *ab0a0824aa0a08f4a50a0884000000250005008b7510c7450008ac0a08ff26e91ffbffff8d7600 *f0a50a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b03f *1108894df4bed4d1110883c5f0e9d36305008d7600f0a50a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9b83f1108894df4bed4d1110883c5f0e997630500 *8d7600897500be54d2110883c5fce96465050094ac0a0894ac0a08eca50a080000000025000100 *83c7183b7b5c760ac7436c06000000ff63f8c747ec28ac0a08c747f864ac0a088d47ec89450c8b *45048945008b45088945048d47f8894508c74510b8ac0a08e9d8e9fffffca50a08030000001200 *01008d45e83b43547303ff63f8c745f8d46d10088975fc8b46048945f4c745f040c911088b460c *8945ec8b46088945e883c5e8e9c202000089f683c71c3b7b5c760ac7436c07000000ff63f8c747 *e808ad0a088b450c8947ec8b46088947f08b46048947f4c747f87cdc0b088977fc8d47e889078d *77f883c5148b4500ff60ec89f601000000240000008b4504894500c74504d4c811088b761483c5 *fce96c680500f4a50a0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *8b4e04894df4bebcd31108c745f090ad0a0883c5f0ff26f4a50a0803000000120005008d45e83b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b4ad0a08 *8b46088947fc8b460c8945f4c745f040c911088d47f88945ec8b46048945e883c5e8e9c2010000 *89f683c71c3b7b5c760ac7436c07000000ff63f8c747e8ecad0a088b45048947ec8b45088947f0 *8b450c8947f4c747f87cdc0b088977fc8d47e889078d77f883c5148b4500ff60ec89f6e9abf8ff *ff8d760040ae0a0840ad0a0888ae0a0888ae0a08b8ac0a08eca50a080400000025001f008b4608 *89450c8b7604c74500b0ae0a08ff2689f6b0ae0a0814ac0a08eca50a088400000025001f008b75 *10c74500d8ae0a08ff26e94ff8ffff8d7600e4ae0a08e4ae0a08d8ae0a0808ac0a0814aa0a08ec *a50a088400000025001f00eca50a080400000024001f008b750cc745000caf0a08ff26ebf289f6 *fca50a0803000000120001008d45e83b43547303ff63f8c745f8d46d10088975fc8b460c8945f4 *8b46088945f0c745ece01112088b46048945e883c5e8e99600000089f683c71c3b7b5c760ac743 *6c07000000ff63f8c747e834af0a088b45048947ec8b46048947f08b46088947f4c747f87cdc0b *088b46048947fc8d47e889078d77f883c5148b4500ff60ec8d76006caf0a0824af0a08eca50a08 *0400000025001f00eca50a080400000024001f00837e0400750c8b7510c74500ccaf0a08ff26e9 *29ffffff90eca50a08170004000000000011001f008d45f83b43547308be28c91108ff63fc8b75 *04c745fcd8af0a0883c5fcff269048d1110850d11108e0d11108a8d0110818c9110820c9110828 *c9110801000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f400d21108 *8b760483c5f0e99d6105009083c7183b7b5c760ac7436c06000000ff63f8c747ec44b00a088b45 *088947f0c747f87cdc0b088d4fec894ffcc70700d211088d77f883c50c8b5500ff62ec89f60400 *0100010000000c00000083c70c3b7b5c760ac7436c03000000ff63fcc747f87cdc0b088b460489 *47fc8b4d00890f8d77f883c5048b5500ff62ec20b00a0802000000150001008d45ec3b43547208 *83c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fcb8b00a088b460889 *078d47fc8945f48b46048945f0be48d1110883c5ece9d76405008d760024b00a08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fcc745f450d11108c745f000d211088b76 *0483c5f0e97603000089f601000100130000008d45f03b43547303ff63f8c745f8d46d10088975 *fcc745f400d211088b760483c5f0e95d6005009083c7243b7b5c760ac7436c09000000ff63f8c7 *47e04cb10a088b45048947e4c747ec84b10a088b45088947f0c747f87cdc0b088d47ec8947fc8d *47e089078d77f883c50c8b4500ff60ec89f624b00a0802000000150001008d45f03b43547303ff *63f8c745f8d46d10088975fcc745f450d111088b4e08894df08b760483c5f0e9bf0200008d7600 *01000100130000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f400d211088b7604 *83c5f0e9a55f05009024b00a0802000000150001008d45f03b43547303ff63f8c745f8d46d1008 *8975fcc745f450d111088b4e08894df08b760483c5f0e9530200008d760001000100130000008d *45f03b43547303ff63f8c745f8d46d10088975fcc745f400d211088b760483c5f0e9395f050090 *24b00a08040000002400010083c7243b7b5c760ac7436c09000000ff63f88b460483f80a753ec7 *47e070b20a088b450c8947e48b45048947e8c747eca8b20a088b45108947f0c747f87cdc0b088d *47ec8947fc8d47e089078d77f883c5148b4500ff60ecc747e004b20a088b450c8947e48b450889 *47e8c747ec3cb20a088b45108947f0c747f87cdc0b088d47ec8947fc8d47e089078d77f883c514 *8b4500ff60ec89f68b46088945fc8975008b7604c745f8dcb20a0883c5f8ff2674b30a08acb10a *0824b00a08020000002500010024b00a0802000000150001008d45f03b43547303ff63f8c745f8 *d46d10088975fcc745f450d111088b4e04894df08b760883c5f0e9170100008d76000100010013 *0000008d45f03b43547303ff63f8c745f8d46d10088975fcc745f400d211088b760483c5f0e9fd *5d05009020b00a08030000002400030083c7243b7b5c760ac7436c09000000ff63f88b460483f8 *0d7d4383f80a7555c747e0acb30a088b45048947e48b45088947e8c747ece4b30a088b450c8947 *f0c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5108b4500ff60ec83f80d75128b7504 *c74504a0b30a0883c50483c7dcff26c747e0f4b00a088b450c8947e48977e88d47e089450c8b75 *088b450489450883c50883c7e8eb3d908b46088945008b7604c745fc18b40a0883c5fcff268d76 *00b4b40a086cb00a0820b00a08020000002500030020b00a080b000200000001000b0003008d45 *f43b43547303ff63fc8b4d0089750089cec745fce0b40a0883c5fcff269020b00a080100010013 *0003008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fc *c747fcf0b40a08c745f450d111088b4e04894df08d77fc83c5f0eb9430b00a0801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be18c9110883c5f0e9785c *050038b00a0802000000150001008d45e83b43547303ff63f8c745f8d46d10088975fcc745f43c *c911088b4e08894df08b56048955ecbe28c9110883c5e8e9136505008d760020b00a0801000100 *130051008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975 *fcc747ec68b50a08c747f0d8111208c747f89cb50a088b46048947fcc707d81112088d47ec8945 *f48d47f88945f0be48d1110883c5ece9d65f050089f628b00a0800000200120009008d45f03b43 *547303ff63f8c745f8d46d10088975fcc745f420c91108bee0d1110883c5f0e9935b05008d7600 *20b00a0801000100130075008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c7 *45f8d46d10088975fcc747ece0b50a088b46048947f0c747f84cb60a088d47ec8945f48d47f889 *45f0be48d1110883c5ece93f5f05008d760020b00a080b0002000000000011007f008d45f83b43 *54720883c7183b7b5c760fbe30c91108c7436c06000000ff63fcc747ec1cb50a088b45048947f0 *c747f884b60a088b45008947fc8d47ec8945048d47f8894500c745fca8d01108be48d1110883c5 *f8e9a36305008d760004000100000000001100000083c7083b7b5c760fbe38c91108c7436c0200 *0000ff63fcc747fcccba0a088b450089078d77fc83c5048b4d00ff61f0900b0002000000000011 *00000083c70c3b7b5c760fbe44c91108c7436c03000000ff63fcc747f80cbb0a088b45008947fc *8b4d04890f8d77f883c5088b5500ff62e48d760004000100000000001100000083c7083b7b5c76 *0fbe48c91108c7436c02000000ff63fcc747fc2cbb0a088b450089078d77fc83c5048b4d00ff61 *e09083c7083b7b5c760ac7436c02000000ff63f8c747fcccba0a088b460489078d77fc83c5048b *4d00ff61f089f6be3cc9110883c5048b4500ff60ec89f62cb80a0800b80a080000000000000000 *250000008b7604c7450050b80a08ff26be40c9110883c5048b4500ff60e889f600000000240000 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f80cbb0a088b46048947fc8b4e08890f8d77 *f883c5048b5500ff62e48b7604c7450074b80a08ff2683c7083b7b5c760ac7436c02000000ff63 *f8c747fc2cbb0a088b460489078d77fc83c5048b4d00ff61e089f6b0b80a08a4b80a0800000000 *00000000250000008b7604c74500f0b80a08ff26f0b80a085cb80a080000000000000000250000 *008b7604c7450010b90a08ff2610b90a0850b80a08000000000000000025000000040001000000 *0000110000008b7500c7450030b90a08ff2683c7103b7b5c760ac7436c04000000ff63f8c747f4 *f0dc0b088b46048947f8c747fcf0dc0b088d4ff4890f8d77fc83c5048b5500ff62f09083c7103b *7b5c760ac7436c04000000ff63f8c747f410dd0b08c747f808d21108c747fcf0dc0b088d47f489 *078d77fc83c5048b4d00ff61f083c7103b7b5c760ac7436c04000000ff63f8c747f4f0dc0b08c7 *47f808d21108c747fc10dd0b088d47f489078d77fc83c5048b4d00ff61ec83c7243b7b5c760ac7 *436c09000000ff63f8c747e0d8dc0b088b46048947e48b46088947e8c747ecf0dc0b088d47e089 *47f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec *9083c7183b7b5c760ac7436c06000000ff63f8c747ec10dd0b088b46048947f0c747f410dd0b08 *8d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec48ba0a08f0b90a08b8 *b90a0880b90a0848b90a080000000000000000250000000400010000000000110000008b7500c7 *4500acba0a08ff2601000000020000008b4500ff60f089f601000000090000008b4500ff60f089 *f6000000000a0001008b4500ff60ec89f6000000000a0002008b4500ff60e889f6020000000400 *03008b4500ff60e489f602000000090003008b4500ff60e489f601000000020004008b4500ff60 *e089f601000000090004008b4500ff60e09090e900000000833d54c9110800751ec70554c91108 *01000000c7450004aa0b0883c504c7450090310c0883c50483c5fcff650089f6be00d2110883c5 *088b4500ff60f089f68b75088b450489450883c508e9930000008d760083c7183b7b5c760ac743 *6c06000000ff63f8c747ec8c6b10088b45088947f08b45048947f4c747f87cdc0b088b46048947 *fc8d47ec89078d77f883c50c8b4500ff60ec909cbb0a0888bb0a08000000000200000025000000 *8b46088945008b7604c745fcf4bb0a0883c5fcff268d7600f4bb0a0878bb0a0800000000010000 *002500000004000100000001000b0000008d45f83b43547303ff63fc8b4d0089750089cec745fc *20bc0a0883c5fcff269001000100130000008d45f43b4354720883c7083b7b5c760ac7436c0200 *0000ff63f8c745f8d46d10088975fcc747fc2cbc0a088b4e04894df48d77fc83c5f4eb9f8d7600 *be00d2110883c5088b4500ff60f089f683c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b *10088b45088947f08b45048947f4c747f87cdc0b088b46048947fc8d47ec89078d77f883c50c8b *4500ff60ec908b75088b450489450883c508eb4e89f6e4bc0a08a0bc0a08000000000200000025 *0000008b46088945008b7604c745fc08bd0a0883c5fcff268d760008bd0a0890bc0a0800000000 *010000002500000004000100000001000b0000008d45f83b43547303ff63fc8b4d0089750089ce *c745fc34bd0a0883c5fcff269001000100130000008d45f43b4354720883c7083b7b5c760ac743 *6c02000000ff63f8c745f8d46d10088975fcc747fc40bd0a088b4e04894df48d77fc83c5f4eb9f *8d760004000100000000001100000083c7243b7b5c760fbe58c91108c7436c09000000ff63fcc7 *47e054bc0a088b45008947e4c747ec68bd0a088b45008947f0c747f8e4bb0b088d47ec8947fc8d *47e089078d77f883c504ff6500ccd1110880d11108fcbd0a0800000200180003008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e81d40050083c4048d47f8 *894604c706245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e9a1 *53050090d4d1110818d41108a8d611080000000024000000c7450064cc11088b760c83c5fce97a *53050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbe *a8d61108c745f47cbe0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9c03f1108894df4bed4d1110883c5f0e92b5105008d7600 *0000000024000000c7450060cc11088b760c83c5fce9ee52050089f670be0a0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f408bf0a0883c5f4ff26 *89f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *dc3f1108894df4bed4d1110883c5f0e99f5005008d76000000000024000000c745005ccc11088b *760c83c5fce96252050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fcbea8d61108c745f494bf0a0883c5f4ff2689f668be0a0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ec3f1108894df4bed4d1110883c5f0e9 *135005008d76000000000024000000c7450058cc11088b760c83c5fce9d651050089f670be0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f420c0 *0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b904401108894df4bed4d1110883c5f0e9874f05008d76000000000024000000c7 *450054cc11088b760c83c5fce94a51050089f670be0a0800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fcbea8d61108c745f4acc00a0883c5f4ff2689f668be0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b918401108894df4bed4 *d1110883c5f0e9fb4e05008d76000000000024000000c7450050cc11088b760c83c5fce9be5005 *0089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d6 *1108c745f438c10a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b928401108894df4bed4d1110883c5f0e96f4e05008d76000000 *000024000000c745004ccc11088b760c83c5fce93250050089f670be0a0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4c4c10a0883c5f4ff2689f6 *68be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c40 *1108894df4bed4d1110883c5f0e9e34d05008d76000000000024000000c7450048cc11088b760c *83c5fce9a64f050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fcbea8d61108c745f450c20a0883c5f4ff2689f668be0a0800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b948401108894df4bed4d1110883c5f0e9574d *05008d76000000000024000000c7450044cc11088b760c83c5fce91a4f050089f670be0a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4dcc20a08 *83c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b950401108894df4bed4d1110883c5f0e9cb4c05008d76000000000024000000c74500 *40cc11088b760c83c5fce98e4e050089f670be0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fcbea8d61108c745f468c30a0883c5f4ff2689f668be0a080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b960401108894df4bed4d111 *0883c5f0e93f4c05008d76000000000024000000c745003ccc11088b760c83c5fce9024e050089 *f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108 *c745f4f4c30a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b96c401108894df4bed4d1110883c5f0e9b34b05008d760000000000 *24000000c7450038cc11088b760c83c5fce9764d050089f670be0a0800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f480c40a0883c5f4ff2689f668be *0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b988401108 *894df4bed4d1110883c5f0e9274b05008d76000000000024000000c7450034cc11088b760c83c5 *fce9ea4c050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fcbea8d61108c745f40cc50a0883c5f4ff2689f668be0a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b9a4401108894df4bed4d1110883c5f0e99b4a0500 *8d76000000000024000000c7450030cc11088b760c83c5fce95e4c050089f670be0a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f498c50a0883c5 *f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9c0401108894df4bed4d1110883c5f0e90f4a05008d76000000000024000000c745002ccc *11088b760c83c5fce9d24b050089f670be0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fcbea8d61108c745f424c60a0883c5f4ff2689f668be0a0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9dc401108894df4bed4d1110883 *c5f0e9834905008d76000000000024000000c7450028cc11088b760c83c5fce9464b050089f670 *be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745 *f4b0c60a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9ec401108894df4bed4d1110883c5f0e9f74805008d7600000000002400 *0000c7450024cc11088b760c83c5fce9ba4a050089f670be0a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fcbea8d61108c745f43cc70a0883c5f4ff2689f668be0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b904411108894d *f4bed4d1110883c5f0e96b4805008d76000000000024000000c7450020cc11088b760c83c5fce9 *2e4a050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *bea8d61108c745f4c8c70a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b908411108894df4bed4d1110883c5f0e9df4705008d76 *000000000024000000c745001ccc11088b760c83c5fce9a249050089f670be0a08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f454c80a0883c5f4ff *2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b918411108894df4bed4d1110883c5f0e9534705008d76000000000024000000c7450018cc1108 *8b760c83c5fce91649050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fcbea8d61108c745f4e0c80a0883c5f4ff2689f668be0a0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c411108894df4bed4d1110883c5f0 *e9c74605008d76000000000024000000c7450014cc11088b760c83c5fce98a48050089f670be0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f46c *c90a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b940411108894df4bed4d1110883c5f0e93b4605008d76000000000024000000 *c7450010cc11088b760c83c5fce9fe47050089f670be0a0800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fcbea8d61108c745f4f8c90a0883c5f4ff2689f668be0a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b950411108894df4be *d4d1110883c5f0e9af4505008d76000000000024000000c745000ccc11088b760c83c5fce97247 *050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8 *d61108c745f484ca0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b964411108894df4bed4d1110883c5f0e9234505008d760000 *00000024000000c7450008cc11088b760c83c5fce9e646050089f670be0a080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f410cb0a0883c5f4ff2689 *f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b980 *411108894df4bed4d1110883c5f0e9974405008d76000000000024000000c7450004cc11088b76 *0c83c5fce95a46050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fcbea8d61108c745f49ccb0a0883c5f4ff2689f668be0a0800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b998411108894df4bed4d1110883c5f0e90b *4405008d76000000000024000000c7450000cc11088b760c83c5fce9ce45050089f670be0a0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f428cc0a *0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9a4411108894df4bed4d1110883c5f0e97f4305008d76000000000024000000c745 *00fccb11088b760c83c5fce94245050089f670be0a0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fcbea8d61108c745f4b4cc0a0883c5f4ff2689f668be0a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9bc411108894df4bed4d1 *110883c5f0e9f34205008d76000000000024000000c74500f8cb11088b760c83c5fce9b6440500 *89f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d611 *08c745f440cd0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9d8411108894df4bed4d1110883c5f0e9674205008d7600000000 *0024000000c74500f4cb11088b760c83c5fce92a44050089f670be0a0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4cccd0a0883c5f4ff2689f668 *be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f04111 *08894df4bed4d1110883c5f0e9db4105008d76000000000024000000c74500f0cb11088b760c83 *c5fce99e43050089f670be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fcbea8d61108c745f458ce0a0883c5f4ff2689f668be0a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b904421108894df4bed4d1110883c5f0e94f4105 *008d76000000000024000000c74500eccb11088b760c83c5fce91243050089f670be0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fcbea8d61108c745f4e4ce0a0883 *c5f4ff2689f668be0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b910421108894df4bed4d1110883c5f0e9c34005008d760068be0a080000020018000700 *8d45f03b4354720b81c7dc0500003b7b5c760ac7436c77010000ff63f8c78728faffff085c1008 *56e8b32e050083c4048d8728faffff894604c706245b1008c745f8d46d10088d8728faffff8945 *fcc78734faffff9cbe0a08c78740faffffd0be0a08c7874cfaffffe4bb0b088d8740faffff8987 *50faffff8d8734faffff898754faffffc78758faffff7cdc0b088d874cfaffff89875cfaffffc7 *8760faffff00d21108c78764faffff28bf0a08c78770faffff5cbf0a08c7877cfaffffe4bb0b08 *8d8770faffff898780faffff8d8764faffff898784faffffc78788faffff7cdc0b088d877cfaff *ff89878cfaffff8d8758faffff898790faffffc78794faffffb4bf0a08c787a0faffffe8bf0a08 *c787acfaffffe4bb0b088d87a0faffff8987b0faffff8d8794faffff8987b4faffffc787b8faff *ff7cdc0b088d87acfaffff8987bcfaffff8d8788faffff8987c0faffffc787c4faffff40c00a08 *c787d0faffff74c00a08c787dcfaffffe4bb0b088d87d0faffff8987e0faffff8d87c4faffff89 *87e4faffffc787e8faffff7cdc0b088d87dcfaffff8987ecfaffff8d87b8faffff8987f0faffff *c787f4faffffccc00a08c78700fbffff00c10a08c7870cfbffffe4bb0b088d8700fbffff898710 *fbffff8d87f4faffff898714fbffffc78718fbffff7cdc0b088d870cfbffff89871cfbffff8d87 *e8faffff898720fbffffc78724fbffff58c10a08c78730fbffff8cc10a08c7873cfbffffe4bb0b *088d8730fbffff898740fbffff8d8724fbffff898744fbffffc78748fbffff7cdc0b088d873cfb *ffff89874cfbffff8d8718fbffff898750fbffffc78754fbffffe4c10a08c78760fbffff18c20a *08c7876cfbffffe4bb0b088d8760fbffff898770fbffff8d8754fbffff898774fbffffc78778fb *ffff7cdc0b088d876cfbffff89877cfbffff8d8748fbffff898780fbffffc78784fbffff70c20a *08c78790fbffffa4c20a08c7879cfbffffe4bb0b088d8790fbffff8987a0fbffff8d8784fbffff *8987a4fbffffc787a8fbffff7cdc0b088d879cfbffff8987acfbffff8d8778fbffff8987b0fbff *ffc787b4fbfffffcc20a08c787c0fbffff30c30a08c787ccfbffffe4bb0b088d87c0fbffff8987 *d0fbffff8d87b4fbffff8987d4fbffffc787d8fbffff7cdc0b088d87ccfbffff8987dcfbffff8d *87a8fbffff8987e0fbffffc787e4fbffff88c30a08c787f0fbffffbcc30a08c787fcfbffffe4bb *0b088d87f0fbffff898700fcffff8d87e4fbffff898704fcffffc78708fcffff7cdc0b088d87fc *fbffff89870cfcffff8d87d8fbffff898710fcffffc78714fcffff14c40a08c78720fcffff48c4 *0a08c7872cfcffffe4bb0b088d8720fcffff898730fcffff8d8714fcffff898734fcffffc78738 *fcffff7cdc0b088d872cfcffff89873cfcffff8d8708fcffff898740fcffffc78744fcffffa0c4 *0a08c78750fcffffd4c40a08c7875cfcffffe4bb0b088d8750fcffff898760fcffff8d8744fcff *ff898764fcffffc78768fcffff7cdc0b088d875cfcffff89876cfcffff8d8738fcffff898770fc *ffffc78774fcffff2cc50a08c78780fcffff60c50a08c7878cfcffffe4bb0b088d8780fcffff89 *8790fcffff8d8774fcffff898794fcffffc78798fcffff7cdc0b088d878cfcffff89879cfcffff *8d8768fcffff8987a0fcffffc787a4fcffffb8c50a08c787b0fcffffecc50a08c787bcfcffffe4 *bb0b088d87b0fcffff8987c0fcffff8d87a4fcffff8987c4fcffffc787c8fcffff7cdc0b088d87 *bcfcffff8987ccfcffff8d8798fcffff8987d0fcffffc787d4fcffff44c60a08c787e0fcffff78 *c60a08c787ecfcffffe4bb0b088d87e0fcffff8987f0fcffff8d87d4fcffff8987f4fcffffc787 *f8fcffff7cdc0b088d87ecfcffff8987fcfcffff8d87c8fcffff898700fdffffc78704fdffffd0 *c60a08c78710fdffff04c70a08c7871cfdffffe4bb0b088d8710fdffff898720fdffff8d8704fd *ffff898724fdffffc78728fdffff7cdc0b088d871cfdffff89872cfdffff8d87f8fcffff898730 *fdffffc78734fdffff5cc70a08c78740fdffff90c70a08c7874cfdffffe4bb0b088d8740fdffff *898750fdffff8d8734fdffff898754fdffffc78758fdffff7cdc0b088d874cfdffff89875cfdff *ff8d8728fdffff898760fdffffc78764fdffffe8c70a08c78770fdffff1cc80a08c7877cfdffff *e4bb0b088d8770fdffff898780fdffff8d8764fdffff898784fdffffc78788fdffff7cdc0b088d *877cfdffff89878cfdffff8d8758fdffff898790fdffffc78794fdffff74c80a08c787a0fdffff *a8c80a08c787acfdffffe4bb0b088d87a0fdffff8987b0fdffff8d8794fdffff8987b4fdffffc7 *87b8fdffff7cdc0b088d87acfdffff8987bcfdffff8d8788fdffff8987c0fdffffc787c4fdffff *00c90a08c787d0fdffff34c90a08c787dcfdffffe4bb0b088d87d0fdffff8987e0fdffff8d87c4 *fdffff8987e4fdffffc787e8fdffff7cdc0b088d87dcfdffff8987ecfdffff8d87b8fdffff8987 *f0fdffffc787f4fdffff8cc90a08c78700feffffc0c90a08c7870cfeffffe4bb0b088d8700feff *ff898710feffff8d87f4fdffff898714feffffc78718feffff7cdc0b088d870cfeffff89871cfe *ffff8d87e8fdffff898720feffffc78724feffff18ca0a08c78730feffff4cca0a08c7873cfeff *ffe4bb0b088d8730feffff898740feffff8d8724feffff898744feffffc78748feffff7cdc0b08 *8d873cfeffff89874cfeffff8d8718feffff898750feffffc78754feffffa4ca0a08c78760feff *ffd8ca0a08c7876cfeffffe4bb0b088d8760feffff898770feffff8d8754feffff898774feffff *c78778feffff7cdc0b088d876cfeffff89877cfeffff8d8748feffff898780feffffc78784feff *ff30cb0a08c78790feffff64cb0a08c7879cfeffffe4bb0b088d8790feffff8987a0feffff8d87 *84feffff8987a4feffffc787a8feffff7cdc0b088d879cfeffff8987acfeffff8d8778feffff89 *87b0feffffc787b4feffffbccb0a08c787c0fefffff0cb0a08c787ccfeffffe4bb0b088d87c0fe *ffff8987d0feffff8d87b4feffff8987d4feffffc787d8feffff7cdc0b088d87ccfeffff8987dc *feffff8d87a8feffff8987e0feffffc787e4feffff48cc0a08c787f0feffff7ccc0a08c787fcfe *ffffe4bb0b088d87f0feffff898700ffffff8d87e4feffff898704ffffffc78708ffffff7cdc0b *088d87fcfeffff89870cffffff8d87d8feffff898710ffffffc78714ffffffd4cc0a08c78720ff *ffff08cd0a08c7872cffffffe4bb0b088d8720ffffff898730ffffff8d8714ffffff898734ffff *ffc78738ffffff7cdc0b088d872cffffff89873cffffff8d8708ffffff898740ffffffc78744ff *ffff60cd0a08c78750ffffff94cd0a08c7875cffffffe4bb0b088d8750ffffff898760ffffff8d *8744ffffff898764ffffffc78768ffffff7cdc0b088d875cffffff89876cffffff8d8738ffffff *898770ffffffc78774ffffffeccd0a08c7478020ce0a08c7478ce4bb0b088d47808947908d8774 *ffffff894794c747987cdc0b088d478c89479c8d8768ffffff8947a0c747a478ce0a08c747b0ac *ce0a08c747bce4bb0b088d47b08947c08d47a48947c4c747c87cdc0b088d47bc8947cc8d479889 *47d0c747d404cf0a08c747e038cf0a08c747ece4bb0b088d47e08947f08d47d48947f4c747f87c *dc0b088d47ec8947fc8d47c889078d47f88945f4be18d4110883c5f0e9f037050020d411086cc9 *110818da0a0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e80124050083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f46cc91108be20d4110883c5f0e98537050090d4d11108c0d4110884da0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b928421108894df4bed4 *d1110883c5f0e9633505008d760084da0a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b944421108894df4bed4d1110883c5f0e9273505008d760084da0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954421108894d *f4bed4d1110883c5f0e9eb3405008d760084da0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b96c421108894df4bed4d1110883c5f0e9af3405008d760084 *da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9804211 *08894df4bed4d1110883c5f0e9733405008d760084da0a0800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b990421108894df4bed4d1110883c5f0e9373405008d *760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *a4421108894df4bed4d1110883c5f0e9fb3305008d760084da0a0800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9b0421108894df4bed4d1110883c5f0e9bf33 *05008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9b8421108894df4bed4d1110883c5f0e9833305008d760084da0a0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c8421108894df4bed4d1110883c5f0 *e9473305008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9d4421108894df4bed4d1110883c5f0e90b3305008d760084da0a08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9f0421108894df4bed4d11108 *83c5f0e9cf3205008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b90c431108894df4bed4d1110883c5f0e9933205008d760084da0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b928431108894df4bed4 *d1110883c5f0e9573205008d760084da0a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b944431108894df4bed4d1110883c5f0e91b3205008d760084da0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b954431108894d *f4bed4d1110883c5f0e9df3105008d760084da0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b96c431108894df4bed4d1110883c5f0e9a33105008d760084 *da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9704311 *08894df4bed4d1110883c5f0e9673105008d760084da0a0800000200120001008d45f03b435473 *03ff63f8c745f8d46d10088975fc8d7600b980431108894df4bed4d1110883c5f0e92b3105008d *760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9 *94431108894df4bed4d1110883c5f0e9ef3005008d760084da0a0800000200120001008d45f03b *43547303ff63f8c745f8d46d10088975fc8d7600b9a8431108894df4bed4d1110883c5f0e9b330 *05008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d *7600b9b8431108894df4bed4d1110883c5f0e9773005008d760084da0a0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc431108894df4bed4d1110883c5f0 *e93b3005008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b9e8431108894df4bed4d1110883c5f0e9ff2f05008d760084da0a08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b900441108894df4bed4d11108 *83c5f0e9c32f05008d760084da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b90c441108894df4bed4d1110883c5f0e9872f05008d760084da0a08000002 *00120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b924441108894df4bed4 *d1110883c5f0e94b2f05008d760084da0a0800000200120001008d45f03b43547303ff63f8c745 *f8d46d10088975fc8d7600b940441108894df4bed4d1110883c5f0e90f2f05008d760084da0a08 *00000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b958441108894d *f4bed4d1110883c5f0e9d32e05008d760084da0a0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b96c441108894df4bed4d1110883c5f0e9972e05008d760084 *da0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9784411 *08894df4bed4d1110883c5f0e95b2e05008d760084da0a0800000000240003008b068b40fcc1e8 *1085c00f8c3c05000083f81d0f8f33050000b994c91108ff24818d760083c70c3b7b5c760ac743 *6c03000000ff63f8c747f8a0e10a088d47f8894500bec0d4110883c5fce9dc2f050083c70c3b7b *5c760ac7436c03000000ff63f8c747f864e10a088d47f8894500bec0d4110883c5fce9b02f0500 *83c70c3b7b5c760ac7436c03000000ff63f8c747f828e10a088d47f8894500bec0d4110883c5fc *e9842f050083c70c3b7b5c760ac7436c03000000ff63f8c747f8ece00a088d47f8894500bec0d4 *110883c5fce9582f050083c70c3b7b5c760ac7436c03000000ff63f8c747f8b0e00a088d47f889 *4500bec0d4110883c5fce92c2f050083c70c3b7b5c760ac7436c03000000ff63f8c747f874e00a *088d47f8894500bec0d4110883c5fce9002f050083c70c3b7b5c760ac7436c03000000ff63f8c7 *47f838e00a088d47f8894500bec0d4110883c5fce9d42e050083c70c3b7b5c760ac7436c030000 *00ff63f8c747f8fcdf0a088d47f8894500bec0d4110883c5fce9a82e050083c70c3b7b5c760ac7 *436c03000000ff63f8c747f8c0df0a088d47f8894500bec0d4110883c5fce97c2e050083c70c3b *7b5c760ac7436c03000000ff63f8c747f884df0a088d47f8894500bec0d4110883c5fce9502e05 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f848df0a088d47f8894500bec0d4110883c5 *fce9242e050083c70c3b7b5c760ac7436c03000000ff63f8c747f80cdf0a088d47f8894500bec0 *d4110883c5fce9f82d050083c70c3b7b5c760ac7436c03000000ff63f8c747f8d0de0a088d47f8 *894500bec0d4110883c5fce9cc2d050083c70c3b7b5c760ac7436c03000000ff63f8c747f894de *0a088d47f8894500bec0d4110883c5fce9a02d050083c70c3b7b5c760ac7436c03000000ff63f8 *c747f858de0a088d47f8894500bec0d4110883c5fce9742d050083c70c3b7b5c760ac7436c0300 *0000ff63f8c747f81cde0a088d47f8894500bec0d4110883c5fce9482d050083c70c3b7b5c760a *c7436c03000000ff63f8c747f8e0dd0a088d47f8894500bec0d4110883c5fce91c2d050083c70c *3b7b5c760ac7436c03000000ff63f8c747f8a4dd0a088d47f8894500bec0d4110883c5fce9f02c *050083c70c3b7b5c760ac7436c03000000ff63f8c747f868dd0a088d47f8894500bec0d4110883 *c5fce9c42c050083c70c3b7b5c760ac7436c03000000ff63f8c747f82cdd0a088d47f8894500be *c0d4110883c5fce9982c050083c70c3b7b5c760ac7436c03000000ff63f8c747f8f0dc0a088d47 *f8894500bec0d4110883c5fce96c2c050083c70c3b7b5c760ac7436c03000000ff63f8c747f8b4 *dc0a088d47f8894500bec0d4110883c5fce9402c050083c70c3b7b5c760ac7436c03000000ff63 *f8c747f878dc0a088d47f8894500bec0d4110883c5fce9142c050083c70c3b7b5c760ac7436c03 *000000ff63f8c747f83cdc0a088d47f8894500bec0d4110883c5fce9e82b050083c70c3b7b5c76 *0ac7436c03000000ff63f8c747f800dc0a088d47f8894500bec0d4110883c5fce9bc2b050083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f8c4db0a088d47f8894500bec0d4110883c5fce990 *2b050083c70c3b7b5c760ac7436c03000000ff63f8c747f888db0a088d47f8894500bec0d41108 *83c5fce9642b050083c70c3b7b5c760ac7436c03000000ff63f8c747f84cdb0a088d47f8894500 *bec0d4110883c5fce9382b050083c70c3b7b5c760ac7436c03000000ff63f8c747f810db0a088d *47f8894500bec0d4110883c5fce90c2b050083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *d4da0a088d47f8894500bec0d4110883c5fce9e02a050083c70c3b7b5c760ac7436c03000000ff *63f8c747f898da0a088d47f8894500bec0d4110883c5fce9b42a050084da0a080b000200000000 *00110003008b7504c74504dce10a0883c504ff26908cc911080cca110874e70a08000002001800 *03008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8a516 *050083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f40cca1108be8c *c9110883c5f0e9292a050090ccd4110814ca1108e0e70a0800000200180003008d45f03b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83916050083c4048d47f889 *4604c706245b1008c745f8d46d10088d47f88945fcc745f414ca1108beccd4110883c5f0e9bd29 *05009040d1110821000000240000003975040f94c083e00183c508b92cdc0b088b34818b4d00f7 *d883c0fcff2481904ce80a0801000000240001008b45048945fc897504be40d11108c7450058e8 *0a0883c5f8e9672905008d76004ce80a080b00020000000000110001008d45f83b43547308be34 *ca1108ff63fc8b4d00894dfcbe40d11108c7450084e80a0883c5f8e92a29050089f654d1110840 *d11108e4e80a0802000000150001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e08 *894df48b56048955f083c5f0eb9a89f6e0e80a080b000200000000001100030083c70c3b7b5c76 *0fbe3cca1108c7436c03000000ff63fcc747f8f4e80a088b45008947fc8b4d04890f8d57f88955 *04be54d11108e9a32805008d76009cd011085cc9110844ca110868e90a0800000200180007008d *45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8ad14050083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f45cc91108c745f044ca *1108be9cd0110883c5ece9362c050089f6b4d0110854ca1108e0e90a0800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83914050083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f454ca1108beb4d0110883 *c5f0e9bd27050090d4d1110844d11108e0d1110864ca11084cea0a0800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b990441108894df4bed4d1110883c5f0e993 *2505008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b9a8441108894df4bed4d1110883c5f0e9572505008d76004cea0a080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9b4441108894df4bed4d1110883c5 *f0e91b2505008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9c0441108894df4bed4d1110883c5f0e9df2405008d76004cea0a080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d0441108894df4bed4d111 *0883c5f0e9a32405008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9e0441108894df4bed4d1110883c5f0e9672405008d76004cea0a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b900451108894df4be *d4d1110883c5f0e92b2405008d76004cea0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b920451108894df4bed4d1110883c5f0e9ef2305008d76004cea0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b94045110889 *4df4bed4d1110883c5f0e9b32305008d76004cea0a0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b948451108894df4bed4d1110883c5f0e9772305008d7600 *4cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b95045 *1108894df4bed4d1110883c5f0e93b2305008d76004cea0a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b960451108894df4bed4d1110883c5f0e9ff220500 *8d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b968451108894df4bed4d1110883c5f0e9c32205008d76004cea0a0800000200120001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8d7600b978451108894df4bed4d1110883c5f0e987 *2205008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b988451108894df4bed4d1110883c5f0e94b2205008d76004cea0a080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b998451108894df4bed4d1110883c5 *f0e90f2205008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fc8d7600b9ac451108894df4bed4d1110883c5f0e9d32105008d76004cea0a080000020012 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9bc451108894df4bed4d111 *0883c5f0e9972105008d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9cc451108894df4bed4d1110883c5f0e95b2105008d76004cea0a080000 *0200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9dc451108894df4be *d4d1110883c5f0e91f2105008d76004cea0a0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b9ec451108894df4bed4d1110883c5f0e9e32005008d76004cea0a *0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9fc45110889 *4df4bed4d1110883c5f0e9a72005008d76004cea0a0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b91c461108894df4bed4d1110883c5f0e96b2005008d7600 *4cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b92c46 *1108894df4bed4d1110883c5f0e92f2005008d76004cea0a0800000200120001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8d7600b93c461108894df4bed4d1110883c5f0e9f31f0500 *8d76004cea0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b94c461108894df4bed4d1110883c5f0e9b71f05008d76004cea0a0800000000240001008b068b *40fcc1e81085c00f8cba05000083f81d0f8fb1050000b97cca1108ff24818d760083c7143b7b5c *760ac7436c05000000ff63f8c747f044f00a08c747fce4a90b088d47f089078d77fc83c5048b45 *00ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f008f00a08c747fce4a90b088d47f0 *89078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0ccef0a08 *c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000 *ff63f8c747f090ef0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b *5c760ac7436c05000000ff63f8c747f054ef0a08c747fce4a90b088d47f089078d77fc83c5048b *4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f018ef0a08c747fce4a90b088d47 *f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0dcee0a *08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c050000 *00ff63f8c747f0a0ee0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b *7b5c760ac7436c05000000ff63f8c747f064ee0a08c747fce4a90b088d47f089078d77fc83c504 *8b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f028ee0a08c747fce4a90b088d *47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0eced *0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c0500 *0000ff63f8c747f0b0ed0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c714 *3b7b5c760ac7436c05000000ff63f8c747f074ed0a08c747fce4a90b088d47f089078d77fc83c5 *048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f038ed0a08c747fce4a90b08 *8d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0fc *ec0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05 *000000ff63f8c747f0c0ec0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7 *143b7b5c760ac7436c05000000ff63f8c747f084ec0a08c747fce4a90b088d47f089078d77fc83 *c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f048ec0a08c747fce4a90b *088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0 *0cec0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c *05000000ff63f8c747f0d0eb0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83 *c7143b7b5c760ac7436c05000000ff63f8c747f094eb0a08c747fce4a90b088d47f089078d77fc *83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f058eb0a08c747fce4a9 *0b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747 *f01ceb0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac743 *6c05000000ff63f8c747f0e0ea0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec *83c7143b7b5c760ac7436c05000000ff63f8c747f0a4ea0a08c747fce4a90b088d47f089078d77 *fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f068ea0a08c747fce4 *a90b088d47f089078d77fc83c5048b4500ff60ec83c7083b7b5c760ac7436c02000000ff63f8c7 *47fcc4a90b08c70754cc11088d77fc83c5048b4500ff60f083c7083b7b5c760ac7436c02000000 *ff63f8c747fcc4a90b08c70758cc11088d77fc83c5048b4500ff60f083c7083b7b5c760ac7436c *02000000ff63f8c747fcc4a90b08c7075ccc11088d77fc83c5048b4500ff60f083c7083b7b5c76 *0ac7436c02000000ff63f8c747fcc4a90b08c70760cc11088d77fc83c5048b4500ff60f083c708 *3b7b5c760ac7436c02000000ff63f8c747fcc4a90b08c70764cc11088d77fc83c5048b4500ff60 *f08d76004cea0a0804000100000001000b0001008b7500c7450080f00a08ff264cea0a08010001 *00130005008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d100889 *75fcc747fc88f60a088b4e04894df48d57fc8955f0bee0d1110883c5ece9301f05004cea0a0801 *00010013000f008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10 *088975fcc747f8a0f60a088b4e04894ffc8d57f88955f4c745f064ca1108be44d1110883c5ece9 *d91e0500904cea0a08040001000000000011000f008d45f83b4354720883c70c3b7b5c760fbe74 *ca1108c7436c03000000ff63fcc747f8f0f60a088b4d00894ffc8d57f8895500c745fc58c91108 *be44d1110883c5f8e9821e050089f6d4d1110844d11108e0d1110864ca110894f70a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b96c461108894df4bed4d1 *110883c5f0e94b1805008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b970461108894df4bed4d1110883c5f0e90f1805008d760094f70a0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974461108894df4 *bed4d1110883c5f0e9d31705008d760094f70a0800000200120001008d45f03b43547303ff63f8 *c745f8d46d10088975fc8d7600b978461108894df4bed4d1110883c5f0e9971705008d760094f7 *0a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b97c461108 *894df4bed4d1110883c5f0e95b1705008d760094f70a0800000200120001008d45f03b43547303 *ff63f8c745f8d46d10088975fc8d7600b980461108894df4bed4d1110883c5f0e91f1705008d76 *0094f70a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b984 *461108894df4bed4d1110883c5f0e9e31605008d760094f70a0800000200120001008d45f03b43 *547303ff63f8c745f8d46d10088975fc8d7600b988461108894df4bed4d1110883c5f0e9a71605 *008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b98c461108894df4bed4d1110883c5f0e96b1605008d760094f70a0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fc8d7600b990461108894df4bed4d1110883c5f0e9 *2f1605008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975 *fc8d7600b994461108894df4bed4d1110883c5f0e9f31505008d760094f70a0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b998461108894df4bed4d1110883 *c5f0e9b71505008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8d7600b99c461108894df4bed4d1110883c5f0e97b1505008d760094f70a0800000200 *120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a0461108894df4bed4d1 *110883c5f0e93f1505008d760094f70a0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b9a4461108894df4bed4d1110883c5f0e9031505008d760094f70a0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9a8461108894df4 *bed4d1110883c5f0e9c71405008d760094f70a0800000000240001008b068b40fcc1e81085c00f *8ca503000083f81e0f8f9c030000b9fcca1108ff24818d760083c7143b7b5c760ac7436c050000 *00ff63f8c747f034fb0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b *7b5c760ac7436c05000000ff63f8c747f0f8fa0a08c747fce4a90b088d47f089078d77fc83c504 *8b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0bcfa0a08c747fce4a90b088d *47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f080fa *0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c0500 *0000ff63f8c747f044fa0a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c714 *3b7b5c760ac7436c05000000ff63f8c747f008fa0a08c747fce4a90b088d47f089078d77fc83c5 *048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0ccf90a08c747fce4a90b08 *8d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f090 *f90a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05 *000000ff63f8c747f054f90a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7 *143b7b5c760ac7436c05000000ff63f8c747f018f90a08c747fce4a90b088d47f089078d77fc83 *c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0dcf80a08c747fce4a90b *088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f0 *a0f80a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7083b7b5c760ac7436c *02000000ff63f8c747fce4a90b08c70700d211088d77fc83c5048b4500ff60ec83c7083b7b5c76 *0ac7436c02000000ff63f8c747fce4a90b08c70700d211088d77fc83c5048b4500ff60ec83c708 *3b7b5c760ac7436c02000000ff63f8c747fce4a90b08c70700d211088d77fc83c5048b4500ff60 *ec83c7143b7b5c760ac7436c05000000ff63f8c747f064f80a08c747fce4a90b088d47f089078d *77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8c747f028f80a08c747fc *e4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760ac7436c05000000ff63f8 *c747f0ecf70a08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7143b7b5c760a *c7436c05000000ff63f8c747f0b0f70a08c747fce4a90b088d47f089078d77fc83c5048b4500ff *60ec83c7083b7b5c760ac7436c02000000ff63f8c747fcc4a90b0889378d77fc83c5048b4500ff *60f094f70a0804000100000001000b0001008b7500c7450070fb0a08ff2694f70a080100010013 *0005008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fc *c747fc5cff0a088b4e04894df48d57fc8955f0bee0d1110883c5ece95c16050094f70a08010001 *0013000f008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d100889 *75fcc747f874ff0a088b4e04894ffc8d57f88955f4c745f064ca1108be44d1110883c5ece90516 *05009094f70a08040001000000000011000f008d45f83b4354720883c70c3b7b5c760fbef4ca11 *08c7436c03000000ff63fcc747f8c4ff0a088b4d00894ffc8d57f8895500c745fc58c91108be44 *d1110883c5f8e9ae15050089f6d4d1110844d11108e0d1110864ca110868000b08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9ac461108894df4bed4d11108 *83c5f0e9770f05008d760068000b0800000200120001008d45f03b43547303ff63f8c745f8d46d *10088975fc8d7600b9b4461108894df4bed4d1110883c5f0e93b0f05008d760068000b08000000 *00240001008b068b40fcc1e81083f80e0f8d9d00000083f8087d3483f8040f853901000083c708 *3b7b5c760ac7436c02000000ff63f8c747fce4a90b08c70700d211088d77fc83c5048b4500ff60 *ec83f80d7d3483f8080f850001000083c7083b7b5c760ac7436c02000000ff63f8c747fce4a90b *08c70700d211088d77fc83c5048b4500ff60ec83c7083b7b5c760ac7436c02000000ff63f8c747 *fce4a90b08c70700d211088d77fc83c5048b4500ff60ec83f8117d3a83f80e0f859c00000083c7 *143b7b5c760ac7436c05000000ff63f8c747f0c0000b08c747fce4a90b088d47f089078d77fc83 *c5048b4500ff60ec83f81a7d3083f811756183c7083b7b5c760ac7436c02000000ff63f8c747fc *e4a90b08c70700d211088d77fc83c5048b4500ff60ec83f81a753183c7143b7b5c760ac7436c05 *000000ff63f8c747f084000b08c747fce4a90b088d47f089078d77fc83c5048b4500ff60ec83c7 *083b7b5c760ac7436c02000000ff63f8c747fcc4a90b0889378d77fc83c5048b4500ff60f09068 *000b0804000100000001000b0001008b7500c74500fc000b08ff2668000b080100010013000500 *8d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc *8c020b088b4e04894df48d57fc8955f0bee0d1110883c5ece92c13050068000b08010001001300 *0f008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8a4020b088b4e04894ffc8d57f88955f4c745f064ca1108be44d1110883c5ece9d512050090 *68000b08040001000000000011000f008d45f83b4354720883c70c3b7b5c760fbe78cb1108c743 *6c03000000ff63fcc747f8f4020b088b4d00894ffc8d57f8895500c745fc58c91108be44d11108 *83c5f8e97e12050089f6d4d4110880cb110898030b0800000200180003008d45f03b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e881fa040083c4048d47f8894604 *c706245b1008c745f8d46d10088d47f88945fcc745f480cb1108bed4d4110883c5f0e9050e0500 *9048d41108a4cb110844d41108a4cb11083cd41108a4cb110804040b0800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e805fa040083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4cb1108be48d4110883 *c5f0e9890d0500900c040b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8a1f9040083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f4a4cb1108be44d4110883c5f0e9250d05009014040b080000020018 *0003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e83d *f9040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4a4cb1108be *3cd4110883c5f0e9c10c050090beeccb110883c504ff650090bef0cb110883c504ff650090bef4 *cb110883c504ff65009060050b0854050b080000000000000000250000008b7604c7450080050b *08ff2680050b0848050b080000000000000000250000008b7604c74500a0050b08ff26bef8cb11 *0883c504ff650090befccb110883c504ff650090b8050b08ac050b080000000000000000250000 *008b7604c74500d8050b08ff26be00cc110883c504ff650090be04cc110883c504ff650090f005 *0b08e4050b080000000000000000250000008b7604c7450010060b08ff2610060b08d8050b0800 *00000000000000250000008b7604c7450030060b08ff2630060b08a0050b080000000000000000 *250000008b7604c7450050060b08ff26be08cc110883c504ff650090be0ccc110883c504ff6500 *9068060b085c060b080000000000000000250000008b7604c7450088060b08ff26be10cc110883 *c504ff650090be14cc110883c504ff650090a0060b0894060b080000000000000000250000008b *7604c74500c0060b08ff26c0060b0888060b080000000000000000250000008b7604c74500e006 *0b08ff26be18cc110883c504ff650090be1ccc110883c504ff650090f8060b08ec060b08000000 *0000000000250000008b7604c7450018070b08ff26be20cc110883c504ff650090be24cc110883 *c504ff65009030070b0824070b080000000000000000250000008b7604c7450050070b08ff2650 *070b0818070b080000000000000000250000008b7604c7450070070b08ff2670070b08e0060b08 *0000000000000000250000008b7604c7450090070b08ff2690070b0850060b0800000000000000 *00250000008b7604c74500b0070b08ff26be28cc110883c504ff650090be2ccc110883c504ff65 *0090c8070b08bc070b080000000000000000250000008b7604c74500e8070b08ff26be30cc1108 *83c504ff650090be34cc110883c504ff65009000080b08f4070b08000000000000000025000000 *8b7604c7450020080b08ff2620080b08e8070b080000000000000000250000008b7604c7450040 *080b08ff26be38cc110883c504ff650090be3ccc110883c504ff65009058080b084c080b080000 *000000000000250000008b7604c7450078080b08ff26be40cc110883c504ff650090be44cc1108 *83c504ff65009090080b0884080b080000000000000000250000008b7604c74500b0080b08ff26 *b0080b0878080b080000000000000000250000008b7604c74500d0080b08ff26d0080b0840080b *080000000000000000250000008b7604c74500f0080b08ff26be48cc110883c504ff650090be4c *cc110883c504ff65009008090b08fc080b080000000000000000250000008b7604c7450028090b *08ff26be50cc110883c504ff650090be54cc110883c504ff65009040090b0834090b0800000000 *00000000250000008b7604c7450060090b08ff2660090b0828090b080000000000000000250000 *008b7604c7450080090b08ff26be58cc110883c504ff650090be5ccc110883c504ff6500909809 *0b088c090b080000000000000000250000008b7604c74500b8090b08ff26be60cc110883c504ff *650090be64cc110883c504ff650090d0090b08c4090b080000000000000000250000008b7604c7 *4500f0090b08ff26f0090b08b8090b080000000000000000250000008b7604c74500100a0b08ff *26100a0b0880090b080000000000000000250000008b7604c74500300a0b08ff26300a0b08f008 *0b080000000000000000250000008b7604c74500500a0b08ff26500a0b08b0070b080000000000 *000000250000000400010000000000110000008b7500c74500700a0b08ff260000000024000000 *8b068b40fcc1e81083f8010f8c350b000083f81e0f8f2c0b0000b970cc110848ff24819083c728 *3b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e410dd0b088d47dc *8947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f4 *89078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08 *c747e008d21108c747e410dd0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b *088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760a *c7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747 *ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc *83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d2 *1108c747e4f0dc0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec89 *47f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a00 *0000ff63f8c747dcf0dc0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ec10dd0b08 *8d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b45 *00ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e4 *10dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc *f0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8 *c747dcf0dc0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ecf0dc0b088d47e48947 *f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083 *c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e4f0dc0b088d *47dc8947e8c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d *47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc *0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f410 *dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c *760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e410dd0b088d47dc8947e8 *c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d *77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e0 *08d21108c747e4f0dc0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47 *ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c *0a000000ff63f8c747dc10dd0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ec10dd *0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c504 *8b4500ff60f083c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c7 *47e410dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c7 *47fcf0dc0b088d47f489078d77fc83c5048b4500ff60f083c7283b7b5c760ac7436c0a000000ff *63f8c747dc10dd0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ec10dd0b088d47e4 *8947f0c747f410dd0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b4500ff60 *f083c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e4f0dc0b *088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b *088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dc *10dd0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747 *f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b *7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e410dd0b088d47dc89 *47e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489 *078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c7 *47e008d21108c747e410dd0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f4f0dc0b08 *8d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7 *436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ec *10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83 *c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d211 *08c747e4f0dc0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947 *f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a0000 *00ff63f8c747dcf0dc0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ec10dd0b088d *47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500 *ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e410 *dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f4f0dc0b088d47ec8947f8c747fc10 *dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c7 *47dcf0dc0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ecf0dc0b088d47e48947f0 *c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7 *283b7b5c760ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e4f0dc0b088d47 *dc8947e8c747ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47 *f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b *08c747e008d21108c747e410dd0b088d47dc8947e8c747ecf0dc0b088d47e48947f0c747f410dd *0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c76 *0ac7436c0a000000ff63f8c747dc10dd0b08c747e008d21108c747e410dd0b088d47dc8947e8c7 *47ecf0dc0b088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77 *fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008 *d21108c747e4f0dc0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec *8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a *000000ff63f8c747dc10dd0b08c747e008d21108c747e4f0dc0b088d47dc8947e8c747ec10dd0b *088d47e48947f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b *4500ff60ec83c7283b7b5c760ac7436c0a000000ff63f8c747dcf0dc0b08c747e008d21108c747 *e410dd0b088d47dc8947e8c747ec10dd0b088d47e48947f0c747f410dd0b088d47ec8947f8c747 *fc10dd0b088d47f489078d77fc83c5048b4500ff60ec83c7283b7b5c760ac7436c0a000000ff63 *f8c747dc10dd0b08c747e008d21108c747e410dd0b088d47dc8947e8c747ec10dd0b088d47e489 *47f0c747f410dd0b088d47ec8947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff60ec *83c7203b7b5c760ac7436c08000000ff63f8c747e4f0dc0b08c747e808d21108c747ecf0dc0b08 *8d47e48947f0c747f4f0dc0b088d47ec8947f8c747fcf0dc0b088d47f489078d77fc83c5048b45 *00ff60f00400010000000000110000008b7500c74500900a0b08ff26000000000a000000ff6500 *90000000000a000100ff650090000000000a000200ff650090000000000a000300ff6500900000 *00000a000400ff650090000000000a000500ff650090000000000a000600ff650090000000000a *000700ff650090000000000a000800ff650090000000000a000900ff650090000000000a000a00 *ff650090000000000a000b00ff650090000000000a000c00ff650090000000000a000d00ff6500 *90000000000a000e00ff650090000000000a000f00ff650090000000000a001000ff6500900000 *00000a001100ff650090000000000a001200ff650090000000000a001300ff650090000000000a *001400ff650090000000000a001500ff650090000000000a001600ff650090000000000a001700 *ff650090000000000a001800ff650090000000000a001900ff650090000000000a001a00ff6500 *90000000000a001b00ff650090000000000a001c00ff650090000000000a001d00ff6500900000 *00000a001e00ff650090eccb1108f0cb1108f4cb1108f8cb1108fccb110800cc110804cc110808 *cc11080ccc110810cc110814cc110818cc11081ccc110820cc110824cc110828cc11082ccc1108 *30cc110834cc110838cc11083ccc110840cc110844cc110848cc11084ccc110850cc110854cc11 *0858cc11085ccc110860cc110864cc1108e900000000833de8cc110800751ec705e8cc11080100 *0000c7450090310c0883c504c74500689d0b0883c50483c5fcff65009090e900000000833deccc *110800751ec705eccc110801000000c7450074320c0883c504c7450090310c0883c50483c5fcff *65009090e900000000833df0cc1108007564c705f0cc110801000000c7450049bb0a0883c504c7 *45003519050883c504c74500919f050883c504c74500e524060883c504c745006dc4090883c504 *c7450050a70b0883c504c745004dec090883c504c7450090310c0883c504c74500d4630c0883c5 *0483c5fcff650080d111083cc61108a4c5110894c6110814190b0800000200120003008d45f03b *43547303ff63f8c745f8d46d10088975fcc745f43cc61108bea4c5110883c5f0e9b3f804008d76 *0010190b0800000200120009008d45f03b43547303ff63f8c745f8d46d10088975fcc745f480d1 *1108be94c6110883c5f0e97bf804008d760001000100130000008d45f03b43547303ff63f8c745 *f8d46d10088975fcc745f4680a12088b760483c5f0e949f804009001000100130000008d45f03b *43547303ff63f8c745f8d46d10088975fcc745f4680a12088b760483c5f0e919f804009010190b *080000020018000f008d45ec3b4354720883c73c3b7b5c760ac7436c0f000000ff63f8c747c808 *5c100856e831e4040083c4048d47c8894604c706245b1008c745f8d46d10088d47c88945fcc747 *d42c190b08c747e064190b08c747ec98190b088d47e08947f0c747f8c8190b088d47e08947fc8d *47ec8945f48d47f88945f08d77d483c5ece996fb040089f680d111083cc61108f4c61108b4c611 *0894c61108801a0b0800000200120011008d45ec3b43547303ff63f8c745f8d46d10088975fcc7 *45f4b80a1208c745f080d11108be94c6110883c5ece944fb0400801a0b08000000002400190083 *c70c3b7b5c760ac7436c03000000ff63f8c747f8a01a0b088d47f8894500c745fcb4c611088b76 *0883c5f8e907fb04008d7600801a0b080000020012001b008d45ec3b43547303ff63f8c745f8d4 *6d10088975fcbe3cc61108c745f4dc1a0b0883c5f4ff2689f6801a0b080000000024001b0083c7 *0c3b7b5c760ac7436c03000000ff63f8c747f81c1b0b08c74500b4c611088d47f88945fc8b7608 *83c5f8e993fa04008d7600801a0b080000020012001b008d45ec3b43547303ff63f8c745f8d46d *10088975fcbe3cc61108c745f4501b0b0883c5f4ff2689f6801a0b08040001000000000011001f *008d45f83b4354720883c70c3b7b5c760fbe04cd1108c7436c03000000ff63fcc747f8901b0b08 *8b4d00894dfc8d57f8895500bef4c6110883c5f8e90dfa0400907cc611083cc6110844a31108f4 *cc1108000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f87c9f0508c747fc *00d21108c70700d211088d47f88945008b760c83c5fce9b1f50400900c1c0b0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f4201c0b0883c5f4ff26 *89f6081c0b0800000200120007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c745f8d46d10088975fcc747f8641c0b088d4ff8894df4c745f044a31108be7cc6110883c5ec *e937f904008d7600141c0b0801000100130001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8b4e04894df4bef4cc110883c5f0e9f4f40400081c0b080000020018000f008d45ec3b4354 *720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856e80de1040083c4048d47e0 *894604c706245b1008c745f8d46d10088d47e08945fcc747ec981c0b08c747f8ec1c0b088d47ec *8947fc8d47ec8945f48d47f88945f0be7cc6110883c5ece984f804007cc6110870a41108f4cc11 *08941d0b0800000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc745f470a4 *1108bef4cc110883c5f0e937f404008d7600901d0b0800000200180007008d45ec3b4354720883 *c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e84de0040083c4048d47ec894604 *c706245b1008c745f8d46d10088d47ec8945fcc747f8a81d0b08c745f470a411088d47f88945f0 *be7cc6110883c5ece9d0f704007cc6110808c41108f4cc1108481e0b0800000200120003008d45 *f03b43547303ff63f8c745f8d46d10088975fcc745f408c41108bef4cc110883c5f0e983f30400 *8d7600441e0b0800000200180007008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff *63f8c747ec085c100856e899df040083c4048d47ec894604c706245b1008c745f8d46d10088d47 *ec8945fcc747f85c1e0b08c745f408c411088d47f88945f0be7cc6110883c5ece91cf7040044d1 *11087cc611083cc61108b4c611082ccd11081ccd110800000000240000008b760ce97ce8040000 *1f0b0800000200120001008d45f43b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745 *f4181f0b0883c5f4ff2689f6f81e0b0803000000120001008d45ec3b4354720883c70c3b7b5c76 *0ac7436c03000000ff63f8c745f8d46d10088975fcc747f8b49e05088b46088947fc8b460c8907 *8d47f88945f48b46048945f0be44d1110883c5ece965f6040090f81e0b08030000002400090083 *c7103b7b5c760ac7436c04000000ff63f8c747f4601f0b088b45088947f88b45048947fc8b450c *89078d47f489450cc74508b4c611088b760883c504e916f6040089f6f81e0b0804000100020000 *000e000d008d45f43b43547303ff63fc8b4e08894df88b56048955fcbe3cc61108c745f4bc1f0b *0883c5f4ff260000000024000000c7450070a711088b760c83c5fce9b6f1040089f6001f0b0800 *000200120001008d45f03b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f440200b *0883c5f4ff2689f6fc1e0b0800000200120013008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f860200b088d4ff8894df4c745f01ccd1108be7c *c6110883c5ece93bf504008d7600f81e0b080200000024002f0083c7183b7b5c760ac7436c0600 *0000ff63f8c747ec10200b088b45088947f08b45048947f4c747f894200b088d47ec8945088d47 *f88945048b7604e9ecf40400f81e0b080200000015002f008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e08894df08b56048955f4be3cc61108c745ece8200b0883c5ecff2689f6f81e *0b080200000024002f0083c70c3b7b5c760ac7436c03000000ff63f8c747f834210b088b450489 *47fc8b4d08890f8d57f8895508c74504b4c611088b7608e967f404008d7600f81e0b0804000100 *010000000c002f008d45f83b43547303ff63fc8b4e04894dfcbe3cc61108c745f874210b0883c5 *f8ff2689f6f81e0b080100000024003f0083c7083b7b5c760ac7436c02000000ff63f8c747fcc0 *210b088b450489078d4ffc894d04c745002ccd11088b760483c5fce9eef3040089f6f81e0b0800 *00020018003f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c10 *0856e8f9db040083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f82c *1f0b088d47f88945f4be3cc61108c745f0f0210b0883c5f0ff268d7600ccc5110838d411089c22 *0b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be38 *d4110883c5f0e934ef040098220b080400010000000000110003008d45fc3b4354720883c70c3b *7b5c760fbe4ccd1108c7436c03000000ff63fcc747f8ac220b088b4d00894ffc8d57f8895500be *ccc5110883c5fce9e5ee0400907cc611083cc61108b4c6110870a41108acae11084ccd1108f4cc *1108020000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f8e4bb0b088b450889 *47fc8b4d04890f8d57f88955088b760c83c504e98bee04008d760028230b080200000015000100 *8d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df08b56048955f4be3cc61108c7 *45ec48230b0883c5ecff2689f628230b08020000002400030083c70c3b7b5c760ac7436c030000 *00ff63f8c747f88c230b088b45048947fc8b4d08890f8d57f8895508c74504b4c611088b7608e9 *0ff204008d760028230b0804000100010000000c0003008d45f83b43547303ff63fc8b4e04894d *fcbe3cc61108c745f8cc230b0883c5f8ff2689f60000000024000000c7450070a711088b760c83 *c5fce9b2ed040089f628230b0800000200120001008d45f03b43547303ff63f8c745f8d46d1008 *8975fcbe3cc61108c745f444240b0883c5f4ff2689f624230b080000020012000b008d45ec3b43 *54720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f864240b088d *4ff8894df4c745f070a41108be7cc6110883c5ece937f104008d760024230b080100000024000f *0083c7143b7b5c760ac7436c05000000ff63f8c747f018240b088b45048947f4c747f898240b08 *8d4ff0894d048d57f88955008b760483c5fce9ebf004008d760024230b080100010013000f008d *45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be3cc61108c745f0ec240b0883 *c5f0ff2624230b080100000024000f0083c70c3b7b5c760ac7436c03000000ff63f8c747f83825 *0b088b45048947fc8d4ff8894d04c74500b4c611088b760883c5fce96df004009024230b080400 *0100000001000b000f008d45f83b43547303ff63fcbe3cc61108c745fc70250b0883c5fcff2634 *230b0800000200120003008d45f43b43547303ff63f8c745f8d46d10088975fcc745f4acae1108 *83c5f4e9e0fcffff24230b080000000024003f0083c7143b7b5c760ac7436c05000000ff63f8c7 *47f0b8250b08c747f8e0250b088d47f08945008d4ff8894dfc8b760483c5f8e9cdef0400902423 *0b080000020012003f008d45ec3b43547303ff63f8c745f8d46d10088975fcbe3cc61108c745f4 *10260b0883c5f4ff2689f63c230b0801000100130001008d45f03b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4bef4cc110883c5f0e958eb040024230b080000020018007f008d45ec *3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856e871d7040083c404 *8d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ec54260b08c747f888260b08 *8d47ec8947fc8d47ec8945f48d47f88945f0be7cc6110883c5ece9e8ee040054d3110850d51108 *2c270b0800000000240003008b4608894500c745fc50d51108be54d3110883c5f8e9baee040089 *f62c270b080400010000000000110003008d45f83b43547308be64cd1108ff63fc8b7500c74500 *40270b08ff2644d1110888270b080b00020000000000110001008d45fc3b4354720883c7143b7b *5c760fbe6ccd1108c7436c05000000ff63fcc747f094b90b088b45008947f4c747f87c8c0b088b *45048947fc8d47f089078d47f8894504c74500e0cf1108be44d1110883c5fce920ee040004c611 *0854d3110850d51108f4270b0802000000150001008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e08894df48b56048955f0be04c6110883c5ece9daed040089f6be00d2110883c5088b *4500ff60f089f683c7183b7b5c760ac7436c06000000ff63f8c747ec8c6b10088b450c8947f08b *45088947f4c747f87cdc0b088b45048947fc8d47ec89078d77f883c5108b4500ff60ec908b750c *8b450889450c83c50ceb6e89f690280b084c280b08000000000300000025000000020000002400 *00008b46048945008b7608c745fcb4280b0883c5fcff268d76008b46088945008b7604c745fcbc *280b0883c5fcff268d7600d4280b083c280b080000000001000000250000000400010000000100 *0b0000008d45f43b43547303ff63fc8b4d0089750089cec745fc00290b0883c5fcff2690be00d2 *110883c5088b4500ff60f089f68b750c8b450889450c83c50ce9cb0000008d760083c7183b7b5c *760ac7436c06000000ff63f8c747ec8c6b10088b450c8947f08b45088947f4c747f87cdc0b088b *45048947fc8d47ec89078d77f883c5108b4500ff60ec9050290b083c290b080000000003000000 *25000000f8270b0802000000240003008b46088945f8c745f450d511088b4e04894d00be54d311 *08c745fca8290b0883c5f0e939ec0400908b46088945008b7604c745fcb4290b0883c5fcff268d *7600dc290b082c290b08f8270b080100000025000300f8270b0804000100000001000b0003008d *45e83b43547303ff63fc8b4d0089750089cec745fc082a0b0883c5fcff269083c7143b7b5c760a *c7436c05000000ff63f8c747f05c8c0b088b45088947f48b45048947f8c747fcfc8b0b088d47f0 *89078d77fc83c5148b4500ff60f08d760083c7083b7b5c760ac7436c02000000ff63f8c747fc1c *8c0b088b451089078d77fc83c5148b4d00ff61ec89f683c7143b7b5c760ac7436c05000000ff63 *f8c747f03c8c0b088b45088947f48b45048947f8c747fcfc8b0b088d47f089078d77fc83c5148b *4500ff60f08d7600a42a0b08782a0b080000000084000000250000008b46048945108b7608c745 *00f82a0b08ff2689f6f82a0b08382a0b0800000000840100002500000083c7083b7b5c760ac743 *6c02000000ff63f8c747fc182a0b088b45108945fc8d77fcc74500202b0b0883c5fce9c7feffff *8d760083c7083b7b5c760ac7436c02000000ff63f8c747fc1c8c0b088b451089078d77fc83c514 *8b4d00ff61ec89f683c7143b7b5c760ac7436c05000000ff63f8c747f03c8c0b088b45088947f4 *8b45048947f8c747fcfc8b0b088d47f089078d77fc83c5148b4500ff60f08d7600802b0b08542b *0b080000000084000000250000008b46048945108b7608c74500d42b0b08ff2689f6d42b0b0820 *2b0b08f8270b088400000025000300f4270b081700040000000000110007008d45f83b43547208 *83c7143b7b5c760fbe74cd1108c7436c05000000ff63fcc747f00c280b088b45088947f48b450c *8947f8c747fc0c290b088d47f08945f88d47f089450c8d77fcc745fcfc2b0b0883c5f8e9a9fcff *ff900ca811084ccd1108642c0b0800000200180003008d45f43b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c747f8085c100856e8b5d1040083c4048d47f8894604c706245b1008c745 *f8d46d10088d47f88945fcc745f40ca8110883c5f4e91af6ffff89f67cc611080ca811084ccd11 *08f4cc110884cd1108d02c0b0800000200120003008d45f43b43547303ff63f8c745f8d46d1008 *8975fcc745f40ca8110883c5f4e9d4f5ffffd82c0b0800000200120003008d45f03b43547303ff *63f8c745f8d46d10088975fcc745f484cd1108bef4cc110883c5f0e9c3e404008d7600cc2c0b08 *0000020018001f008d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c *100856e8d9d0040083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ec *ec2c0b08c747f81c2d0b088d47ec8945f48d47f88945f0be7cc6110883c5ece956e8040089f6a4 *cb11084ccd1108c02d0b0800000200180003008d45f43b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e859d0040083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f4a4cb110883c5f4e9bef4ffff89f67cc61108a4cb11084ccd1108f4cc *1108a4cd11082c2e0b0800000200120003008d45f43b43547303ff63f8c745f8d46d10088975fc *c745f4a4cb110883c5f4e978f4ffff342e0b0800000200120003008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f4a4cd1108bef4cc110883c5f0e967e304008d7600282e0b08000002 *0018001f008d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856 *e87dcf040083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ec482e0b *08c747f8782e0b088d47ec8945f48d47f88945f0be7cc6110883c5ece9fae6040089f684d41108 *4cd411081c2f0b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c747f8085c100856e8fdce040083c4048d47f8894604c706245b1008c745f8d46d10088d *47f88945fcc745f44cd41108be84d4110883c5f0e981e204009038d41108c4cd1108882f0b0800 *000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c10 *0856e891ce040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4c4 *cd1108be38d4110883c5f0e915e2040090ccc51108d4cd1108f42f0b0800000200180003008d45 *f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e825ce040083c4 *048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4d4cd1108beccc5110883 *c5f0e9a9e1040090ccd1110880d1110860300b0800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8b9cd040083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f480d11108beccd1110883c5f0e93de104009080 *d1110850d31108cc300b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03 *000000ff63f8c747f8085c100856e84dcd040083c4048d47f8894604c706245b1008c745f8d46d *10088d47f88945fcc745f480d11108be50d3110883c5f0e9d1e0040090d4d11108b8d111087cc6 *1108acc6110848d51108e4cd110804ce110838310b0800000200120001008d45f03b43547303ff *63f8c745f8d46d10088975fc8d7600b9bc461108894df4bed4d1110883c5f0e99bde04008d7600 *38310b0801000100130041008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c7 *45f8d46d10088975fcc747f860310b088d4ff8894df48b56048955f0be04ce110883c5ece934e4 *040048310b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e0489 *4df4be48d5110883c5f0e9f4df040038310b0804000100000001000b0053008d45f83b43547208 *83c7183b7b5c760ac7436c06000000ff63fcc747ec9c310b088b45008947f0c747f8ec310b088b *45008947fc8d47ec8945008d47f88945fcbeb8d1110883c5f8e9a3e304008d760038310b080000 *020012005b008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d1008 *8975fcc747fc24320b088d4ffc894df4beacc6110883c5f0e94adf040089f638310b0800000200 *18007f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8 *61cb040083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f880320b08 *8d47f88945f4c745f0e4cd1108be7cc6110883c5ece9e4e20400d4d11108b8d111087cc611083c *c61108a4c611088cc6110844d5110848d51108f4cc110804ce1108020000002400000083c70c3b *7b5c760ac7436c03000000ff63f8c747f87cdc0b088b45048947fc8b4d08890f8d57f88955088b *760c83c504e973de04008d76003c330b0804000100010000000c0001008d45f83b43547303ff63 *fc8b4e04894dfcbe3cc61108c745f860330b0883c5f8ff2689f630330b0800000200120001008d *45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9c4461108894df4bed4d1110883c5f0 *e923dc04008d760030330b0801000100130001028d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c745f8d46d10088975fcc747f8d8330b088d4ff8894df48b56048955f0be04ce *110883c5ece9bce104004c330b0801000100130001008d45f03b43547303ff63f8c745f8d46d10 *088975fc8b4e04894df4be48d5110883c5f0e97cdd040030330b0804000100000001000b008302 *8d45f83b4354720883c7183b7b5c760ac7436c06000000ff63fcc747ec14340b088b45008947f0 *c747f864340b088b45008947fc8d47ec8945008d47f88945fcbeb8d1110883c5f8e92be104008d *760030330b0800000200120093028d45f03b4354720883c7083b7b5c760ac7436c02000000ff63 *f8c745f8d46d10088975fcc747fc9c340b088d4ffc894df4bea4c6110883c5f0e9d2dc040089f6 *30330b080100000024009b0283c7143b7b5c760ac7436c05000000ff63f8c747f0a8330b088b45 *048947f4c747f8f8340b088d4ff0894d048d57f88955008b760483c5fce993e004008d76003033 *0b0804000100000001000b009b028d45f83b43547303ff63fcbe3cc61108c745fc44350b0883c5 *fcff2644330b0800000200120003008d45f03b43547303ff63f8c745f8d46d10088975fcc745f4 *44d51108be8cc6110883c5f0e923dc04008d760030330b08000000002400fb0283c7143b7b5c76 *0ac7436c05000000ff63f8c747f094350b08c747f8bc350b088d47f08945008d4ff8894dfc8b76 *0483c5f8e9e9df04009030330b08000002001200fb028d45ec3b43547303ff63f8c745f8d46d10 *088975fcbe3cc61108c745f4f4350b0883c5f4ff2689f650330b0801000100130001008d45f03b *43547303ff63f8c745f8d46d10088975fc8b4e04894df4bef4cc110883c5f0e974db040030330b *08000002001800ff038d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e008 *5c100856e88dc7040083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747 *ec38360b08c747f86c360b088d47ec8947fc8d47ec8945f48d47f88945f0be7cc6110883c5ece9 *04df0400bcd1110880d1110854d111087cc61108acc6110850d51108e4cd110801000000240000 *008b4504894500c74504b80a12088b760483c5fce9c8de040014370b0801000100130001008d45 *ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be80d11108c745f034370b0883c5 *f0ff2624370b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4be50d5110883c5f0e950da040018370b0801000100130009008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f890370b088b4e04894ffc8d *57f88955f4be54d1110883c5f0e900da040010370b0804000100000001000b0027008d45f83b43 *54720883c7183b7b5c760ac7436c06000000ff63fcc747ec58370b088b45008947f0c747f8c437 *0b088b45008947fc8d47ec8945008d47f88945fcbebcd1110883c5f8e9afdd04008d760010370b *0800000200120037008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d4 *6d10088975fcc747fc18380b088d4ffc894df4beacc6110883c5f0e956d9040089f610370b0800 *00020018007f008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c10 *0856e86dc5040083c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f874 *380b088d47f88945f4c745f0e4cd1108be7cc6110883c5ece9f0dc0400e4d11108b8d1110880d1 *110878d3110850d51108be00d2110883c5088b4500ff60f089f601000100130000008d45f43b43 *547303ff63f8c745f8d46d10088975fcc745f400d211088b760483c5f4e9e10500009083c7243b *7b5c760ac7436c09000000ff63f8c747e050390b088b450c8947e4c747ece4bb0b088b45088947 *f08b45048947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5108b4500ff60ec83c7 *243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b45148947e48b45088947e8c747ece4 *bb0b088b45108947f08b450c8947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c518 *8b4500ff60ec89f601000000240000008b4504894500c74504a00912088b760883c5fce9d4db04 *002c390b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be80d11108c745f0283a0b0883c5f0ff2601000000240000008b4504894500c74504580a1208 *8b760883c5fce97cdb04002c390b0801000100130001008d45ec3b43547303ff63f8c745f8d46d *10088975fc8b4e04894df4be80d11108c745f0803a0b0883c5f0ff2683c7243b7b5c760ac7436c *09000000ff63f8c747e08c6b10088b45188947e48b450c8947e8c747ece4bb0b088b45148947f0 *8b45108947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c51c8b4500ff60ec89f630 *390b0801000100130003008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c7 *45f050d51108be78d3110883c5ece9b1da04009024390b0801000100130001008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc *a8091208c70700d211088b4e04894df48d57f88955f0bee4d1110883c5ece953da04008d760024 *390b0802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8703b0b088b46088947fc8d47f88945f48b46048945f0bee4d1110883 *c5ece9fad9040089f624390b08050000002400010083c7243b7b5c761ec74500283c0b08c7436c *09000000b8ff00000083f000894320e962010500c747e0d03b0b088b450c8947e48b45088947e8 *c747ece4bb0b088b45108947f08d47e08947f4c747f87cdc0b088d47ec8947fc8b450489078b75 *148d47f889451483c514e9c102000090eb8e89f624390b0801000100130001008d45ec3b435472 *0883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f87cdc0b08c747fc *a8091208c70700d211088b4e04894df48d57f88955f0bee4d1110883c5ece91bd904008d760024 *390b0802000000150001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8a83c0b088b46088947fc8d47f88945f48b46048945f0bee4d1110883 *c5ece9c2d8040089f624390b08060000002400010083c7243b7b5c760ac7436c09000000ff63f8 *8b460483f82e7549c747e0083d0b088b45108947e48b45048947e8c747ece4bb0b088b45148947 *f08d47e08947f4c747f87cdc0b088d47ec8947fc8b450889078b75188d47f889451883c518e995 *01000083c50483c7dce95afeffff89f68b46088945008b7604c745fc603d0b0883c5fcff268d76 *00d03d0b08983c0b0824390b08050000002500010083c70c3b7b5c760ac7436c03000000ff63f8 *c747f8343b0b088b45048947fc8d4ff8894d0c8d77f8c74504fc3d0b0883c504ff26fc3d0b08d0 *3a0b0824390b08060000002500190083c7183b7b5c760ac7436c06000000ff63f8c747ec4c3a0b *088b46048947f0c747f8a43a0b088b46048947fc8d47ec8945f88d47f88945f48b4608894500be *b8d11108c745fc443e0b0883c5f0e97ed7040089f6443e0b08c8390b0824390b08050000002500 *1f0024390b080500000024001f008b7608c74500ac3e0b08ff268b46088945fc8975008b7604c7 *45f8b83e0b0883c5f8ff26c43e0b0878390b0824390b080300000025001f0024390b0802000000 *24001f008b46088945008b4d048b560489550489cec745fcf03e0b0883c5fcff268d76008b4608 *8945008b7604c745fcfc3e0b0883c5fcff268d76001c3f0b0838390b0824390b08010000002500 *1f0024390b0804000100000001000b001f008d45dc3b43547303ff63fc8b4d0089750089cec745 *fc483f0b0883c5fcff269024390b080000020018001f008d45f83b4354720883c7143b7b5c760a *c7436c05000000ff63f8c747f0085c100856e8a9be040083c4048d47f0894604c706245b1008c7 *45f8d46d10088d47f08945fcc747fc583f0b088d77fc83c5f8e9fb2d05008d76004cd311084cae *1108dc3f0b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63 *f8c747f8085c100856e83dbe040083c4048d47f8894604c706245b1008c745f8d46d10088d47f8 *8945fcc745f44cae1108be4cd3110883c5f0e9c1d10400901cd5110808d5110848400b08000002 *00180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856 *e8d1bd040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f408d511 *08be1cd5110883c5f0e955d1040090f4d41108d8d41108b4400b0800000200180003008d45f03b *4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e865bd040083c4048d *47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f4f4d41108bed8d4110883c5f0 *e9e9d004009090d1110800000000240000008b7614e968c6040020410b0800000200180001008d *45f43b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8edbc040083 *c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcbe90d11108c745f42c410b08 *83c5f4ff2604000100000000001100000083c7143b7b5c760fbe94ce1108c7436c05000000ff63 *fcc747f07c8c0b088b45008947f4c747f8e0d01108c747fcfc8b0b088d4ff0890f8d77fc83c504 *8b5500ff62f09004000100000000001100000083c7083b7b5c760fbe98ce1108c7436c02000000 *ff63fcc747fc1c8c0b088b450089078d77fc83c5048b4d00ff61ec9083c7083b7b5c760ac7436c *02000000ff63f8c747fcfc8b0b088b460489078d77fc83c5088b4d00ff61f089f68b45048b4e04 *894d0489c6e9accf04004c420b0820420b080000000001000000250000000b0002000000000011 *0000008b7500c7450070420b08ff26d4d1110890d1110848d1110808d51108b8d41108bcd41108 *c0d4110864ce110874ce11080100000024000000c74500301212088b760483c5fce94ed3040089 *f694420b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4be08d51108c745f0b4420b0883c5f0ff2690420b0801000100130007008d45ec3b4354720883 *c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d4420b088b4e04894f *fc8d57f88955f4c745f0b8d41108be48d1110883c5ece9bdd20400900100000024000000c74500 *301212088b760483c5fce9a2d2040089f6a8420b0801000100130001008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4be74ce1108c745f060430b0883c5f0ff2690420b0802 *000000150047008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec0c430b088b46088947f0c747f880430b088b46048947fc8d47ec8945f48d47f8 *8945f0be48d1110883c5ece905d204009088420b0800000200120001008d45f03b43547303ff63 *f8c745f8d46d10088975fc8d7600b9c8461108894df4bed4d1110883c5f0e9dfcb04008d760088 *420b0800000200120041008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f81c440b088d4ff8894df4bec0d4110883c5f0e972cd040089f688420b *080200000015005d018d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d4 *6d10088975fcc747ecb8430b088b46048947f08b46088947f4c747f858440b088d47ec8945f48d *47f88945f0be48d1110883c5ece919d104009001000000240000008b4504894500c74504301212 *088b761483c5fce9f8d004008c420b0801000100130001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4be90d11108c745f004450b0883c5f0ff2683c7183b7b5c760ac743 *6c06000000ff63f8c747eca4440b088b46048947f08b46088947f4c747f828450b088b45048947 *fc8d47ec8945088d47f8894504bebcd41108e978d004000100000024000000c74500301212088b *760483c5fce95ed0040089f694420b0801000100130001008d45ec3b43547303ff63f8c745f8d4 *6d10088975fc8b4e04894df4be08d51108c745f0a4450b0883c5f0ff2690420b08010001001300 *07008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8c4450b088b4e04894ffc8d57f88955f4c745f0b8d41108be48d1110883c5ece9cdcf040090 *0100000024000000c74500301212088b760483c5fce9b2cf040089f6a8420b0801000100130001 *008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be74ce1108c745f050460b *0883c5f0ff2690420b0802000000150047008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ecfc450b088b46088947f0c747f870460b088b460489 *47fc8d47ec8945f48d47f88945f0be48d1110883c5ece915cf04009088420b0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9d8461108894df4bed4d1110883 *c5f0e9efc804008d760088420b0800000200120041008d45f03b4354720883c70c3b7b5c760ac7 *436c03000000ff63f8c745f8d46d10088975fcc747f80c470b088d4ff8894df4bec0d4110883c5 *f0e982ca040089f688420b080200000015005d018d45ec3b4354720883c7183b7b5c760ac7436c *06000000ff63f8c745f8d46d10088975fcc747eca8460b088b46048947f08b46088947f4c747f8 *48470b088d47ec8945f48d47f88945f0be48d1110883c5ece929ce04009001000000240000008b *4504894500c74504301212088b761483c5fce908ce04008c420b0801000100130001008d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108c745f0f4470b0883c5f0ff *2683c7183b7b5c760ac7436c06000000ff63f8c747ec94470b088b46048947f08b46088947f4c7 *47f818480b088b45048947fc8d47ec8945088d47f8894504bebcd41108e988cd04000100000024 *000000c74500301212088b760483c5fce96ecd040089f6a4420b0801000100130001008d45ec3b *43547303ff63f8c745f8d46d10088975fc8b4e04894df4be64ce1108c745f094480b0883c5f0ff *2690420b0801000100130025008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8 *c745f8d46d10088975fcc747f8b4480b088b4e04894ffc8d57f88955f4c745f0b8d41108be48d1 *110883c5ece9ddcc0400900100000024000000c74500301212088b760483c5fce9c2cc040089f6 *a8420b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *be74ce1108c745f040490b0883c5f0ff2690420b0802000000150065008d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecec480b088b46088947f0 *c747f860490b088b46048947fc8d47ec8945f48d47f88945f0be48d1110883c5ece925cc040090 *88420b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9e446 *1108894df4bed4d1110883c5f0e9ffc504008d760088420b0800000200120041008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8fc490b088d4f *f8894df4bec0d4110883c5f0e992c7040089f688420b08020000001500d5018d45ec3b43547208 *83c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec98490b088b460489 *47f08b46088947f4c747f8384a0b088d47ec8945f48d47f88945f0be48d1110883c5ece939cb04 *009001000000240000008b4504894500c74504301212088b761483c5fce918cb04008c420b0801 *000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be90d11108 *c745f0e44a0b0883c5f0ff2683c7183b7b5c760ac7436c06000000ff63f8c747ec844a0b088b46 *048947f08b46088947f4c747f8084b0b088b45048947fc8d47ec8945088d47f8894504bebcd411 *08e998ca0400344b0b0844480b0854450b0888420b08420000002500ff0188420b080b00020000 *0000001100ff018d45fc3b43547308bea0ce1108ff63fc8b7504c745fc944b0b0883c5fcff2690 *a0ce1108a8ce1108c44b0b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e855b2040083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f4a8ce1108bea0ce110883c5f0e9d9c5040090ccd41108b0ce110830 *4c0b0800000200180003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747 *f8085c100856e8e9b1040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fc *c745f4b0ce1108beccd4110883c5f0e96dc5040090e4d11108d4d1110808d511089c4c0b080100 *0100130001008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f87cdc0b08c747fc900a1208c70700d211088d4ff8894df48b56048955f0bee4d111 *0883c5ece90fc904008d7600a04c0b0800000200120001008d45f03b43547303ff63f8c745f8d4 *6d10088975fc8d7600b9f0461108894df4bed4d1110883c5f0e9e7c204008d76009c4c0b080100 *0100130003008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d1008 *8975fcc747ecb44c0b088b46048947f0c747f8144d0b088d47ec8945f48d47f88945f0bee4d111 *0883c5ece973c804008d760001000000240000008b7608e954c40400a44c0b0801000100130001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be08d51108c745f0ac4d0b *0883c5f0ff269c4c0b0802000000150007008d45ec3b4354720883c7183b7b5c760ac7436c0600 *0000ff63f8c745f8d46d10088975fcc747ec504d0b088b46088947f0c747f8c04d0b088b460489 *47fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9c5c7040090a04c0b0800000200120001 *008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b90c471108894df4bed4d1110883 *c5f0e99fc104008d760083c7183b7b5c760ac7436c06000000ff63f8c747ecf84d0b088b460889 *47f08b46048947f4c747f85c4e0b088d47ec8945008d47f88945fcbee4d1110883c5f8e943c704 *008d7600a04c0b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b914471108894df4bed4d1110883c5f0e91bc104008d76009c4c0b0801000100130003008d45 *ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8e04e *0b088d4ff8894df48b56048955f0bee4d1110883c5ece9b4c60400a04c0b080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b920471108894df4bed4d1110883c5 *f0e98fc004008d76009c4c0b0801000100130003008d45ec3b4354720883c7183b7b5c760ac743 *6c06000000ff63f8c745f8d46d10088975fcc747ec1c4f0b088b46048947f0c747f86c4f0b088d *47ec8945f48d47f88945f0bee4d1110883c5ece91bc604008d760001000000240000008b7608e9 *fcc10400a44c0b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be08d51108c745f004500b0883c5f0ff269c4c0b0802000000150007008d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747eca84f0b088b46 *088947f0c747f818500b088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece96d *c5040090a04c0b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d76 *00b934471108894df4bed4d1110883c5f0e947bf04008d760083c7183b7b5c760ac7436c060000 *00ff63f8c747ec50500b088b46088947f08b46048947f4c747f8b4500b088d47ec8945008d47f8 *8945fcbee4d1110883c5f8e9ebc404008d76008b750483c508ff26a04c0b080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b93c471108894df4bed4d1110883c5 *f0e9bbbe04008d76009c4c0b0801000100130003008d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f840510b088b4e04894df48d57f88955f0bee4 *d1110883c5ece954c4040001000000240000008b7608e938c00400a44c0b080100010013000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be08d51108c745f0c8510b08 *83c5f0ff269c4c0b0802000000150007008d45ec3b4354720883c7183b7b5c760ac7436c060000 *00ff63f8c745f8d46d10088975fcc747ec7c510b088b46088947f0c747f8dc510b088b46048947 *fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9a9c3040090a04c0b080000020012000100 *8d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b940471108894df4bed4d1110883c5 *f0e983bd04008d760083c7183b7b5c760ac7436c06000000ff63f8c747ec14520b088b46048947 *f08b45048947f4c747f878520b088d47ec8945048d47f8894500bee4d1110883c5fce927c30400 *8d7600a8520b082c510b089c4c0b0801000000250007008b46048945008b7608c745fc04530b08 *83c5fcff268d760004530b08e4500b088c4e0b089c4c0b0800000000250007009c4c0b08040001 *0000000000110007008d45f83b43547308bed0ce1108ff63fc8b7500c7450034530b08ff26e4d1 *1108d4d11108b8d1110880d1110854d3110860d3110848d51108ccd61108e0d6110804ce110802 *000000240000008b45088b4d04894d088945048b7608e970c204006c530b080400010001000000 *0c0001008d45f83b43547303ff63fc8b4e04894dfcbe80d11108c745f890530b0883c5f8ff2689 *f68b750483c50cff2683c7243b7b5c760ac7436c09000000ff63f8c747e08c6b10088b45088947 *e48b46088947e8c747ec7cdc0b088b46048947f08d47e08947f4c747f87cdc0b088b46048947fc *8d47ec89078d47f8894508bee4d11108e9dac1040089f6e0530b08d8530b0860530b0802000000 *2500010060530b0801000000240001008b46048945008b7608c745fc50540b0883c5fcff268d76 *0060530b0804000100000001000b0029008d45f03b4354720883c7083b7b5c760ac7436c020000 *00ff63fcc747fcb4530b08c707380c12088b4d00894df88d57fc8955f4897500be60d31108c745 *fc5c540b0883c5f0e946c1040089f664530b0800000200120001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8d7600b948471108894df4bed4d1110883c5f0e91fbb04008d760064530b *0801000100130001018d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8dc540b088d4ff8894df48b56048955f0be04ce110883c5ece9b8c0040078 *530b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be *48d5110883c5f0e978bc040064530b0804000100000001000b0023018d45f83b4354720883c718 *3b7b5c760ac7436c06000000ff63fcc747ec18550b088b45008947f0c747f868550b088b450089 *47fc8d47ec8945008d47f88945fcbeb8d1110883c5f8e927c004008d76007c530b080200000015 *0001008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fc *c747f88c6b10088b46048947fc8b460889078d47f88945f4beccd6110883c5f0e9c3bb04008d76 *0083c70c3b7b5c760ac7436c03000000ff63f8c747f8fc550b088b45048947fc8b4d08890f8d57 *f8895508bee0d6110883c504e989bb04009083c70c3b7b5c760ac7436c03000000ff63f8c747f8 *8c6b10088b45048947fc8b4d08890f8d57f8895508beccd6110883c504e951bb04009080560b08 *48560b087c530b08020000002500030060530b0804000100000000001100ff038d45ec3b435472 *0883c7103b7b5c760fbed8ce1108c7436c04000000ff63fcc747f484540b08c747fca0550b088b *45008945f48d47fc8945f08d47f48945fcbe54d31108c745f8cc560b0883c5ece9e5be040090e4 *d1110814a7110814af1108ccd6110834570b0801000100130001008d45f03b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4be14a7110883c5f0e994ba040030570b0801000100130003 *008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747 *ec4c570b088b46048947f0c747f87cdc0b08c747fc580a1208c70700d211088d47ec8945f48d47 *f88945f0bee4d1110883c5ece936be040089f601000000240000008b7608e918ba040038570b08 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be14af11 *08c745f0e8570b0883c5f0ff2630570b0802000000150007008d45ec3b4354720883c7183b7b5c *760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec80570b088b46088947f0c747f8fc *570b088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece989bd04009030570b08 *0000000024000f0083c70c3b7b5c760ac7436c03000000ff63f8c747f834580b088b46048947fc *8b4e08890f8d57f8895500beccd6110883c5fce939b904009030570b0804000100000000001100 *0f008d45fc3b43547308bee0ce1108ff63fc8b7500c7450098580b08ff2614a71108c0d61108cc *d61108fc580b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04 *894df4be14a7110883c5f0e9ccb80400fc580b0801000100130005008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f814590b088b4e04894ffc8d *57f88955f4beccd6110883c5f0e97cb8040004590b0801000100130001008d45f03b43547303ff *63f8c745f8d46d10088975fc8b4e04894df4beccd6110883c5f0e948b80400fc580b0800000000 *2400070083c7183b7b5c760ac7436c06000000ff63f8c747ec48590b088b46088947f0c747f898 *590b088b46048947fc8d47ec8945008d47f88945fcbec0d6110883c5f8e903bc04008d7600fc58 *0b080400010000000000110007008d45f83b43547308bee8ce1108ff63fc8b7500c74500cc590b *08ff26acd011088cd31108ccd61108d8d61108be00d2110883c5088b4500ff60f089f68b750483 *c508ff2683c70c3b7b5c760ac7436c03000000ff63f8c747f87cdc0b08c747fcc80a1208c70700 *d211088d77f883c508ff25c06d100889f6685a0b08605a0b08000000000100000025000000445a *0b0801000100130001008d45e83b43547303ff63f8c745f8d46d10088975fc8b4e04894dec8b56 *048955f4be8cd31108c745f0b05a0b0883c5e8e917b704008d7600445a0b080100010013000300 *8d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8 *bc5a0b088b4e04894ffc8d57f88955f4beccd6110883c5f0e9c4b6040083c7243b7b5c760ac743 *6c09000000ff63f8c747e08c6b10088b45048947e48b46088947e8c747ec005b0b088b46048947 *f0c747f87cdc0b088d47ec8947fc8d47e089078d77f883c5088b4500ff60ec445b0b08505a0b08 *445a0b080100000025000300445a0b0804000100000001000b0003008d45fc3b43547303ff63fc *8b4d0089750089cec745fca85b0b0883c5fcff2690405a0b0801000100130001008d45f03b4354 *7303ff63f8c745f8d46d10088975fc8b4e04894df4beacd0110883c5f0e9fcb50400405a0b0801 *000100130007008d45f43b4354720883c7143b7b5c760ac7436c05000000ff63f8c745f8d46d10 *088975fcc747f0b85b0b08c747f8e45b0b088b4e04894ffc8d57f88955f48d77f083c5f4e957ff *ffff8d7600405a0b08040001000000000011000f008d45fc3b4354720883c70c3b7b5c760fbef0 *ce1108c7436c03000000ff63fcc747f8185c0b088b4d00894ffc8d57f8895500bed8d6110883c5 *fce955b5040090d4d41108f8ce1108b45c0b0800000200180003008d45f03b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c747f8085c100856e865a1040083c4048d47f8894604c70624 *5b1008c745f8d46d10088d47f88945fcc745f4f8ce1108bed4d4110883c5f0e9e9b4040090d4d1 *110848d11108d4d41108bcd41108c0d41108ccd4110884ce1108a0ce11083c5d0b080100010013 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03012120883c5 *f0e92eeeffff89f6205d0b0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b950471108894df4bed4d1110883c5f0e977b204008d7600205d0b08000002001200 *11008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8845d0b088d4ff8894df4bec0d4110883c5f0e90ab4040089f6205d0b080100010013009300 *8d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec *4c5d0b088b46048947f0c747f8c05d0b088d47ec8945f48d47f88945f0be48d1110883c5ece9b7 *b704008d7600385d0b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fc *c745f4301212088b4e04894df0be84ce110883c5ece979b704009083c7183b7b5c760ac7436c06 *000000ff63f8c747ec0c5e0b088b46048947f0c747f86c5e0b088b45048947fc8d47ec8945088d *47f8894504bebcd41108e936b7040089f602000000150000008d45e83b43547303ff63f8c745f8 *d46d10088975fc8b4e08894df4c745f030121208c745ec141610088b56048955e883c5e8e9e1cd *000090205d0b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600 *b960471108894df4bed4d1110883c5f0e9cfb004008d7600205d0b0800000200120011008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f82c5f0b *088d4ff8894df4bec0d4110883c5f0e962b2040089f6205d0b0802000000150013008d45ec3b43 *54720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ece85e0b088b *46048947f08b46088947f4c747f8685f0b088d47ec8945f48d47f88945f0be48d1110883c5ece9 *09b6040090385d0b0801000100130001008d45ec3b43547303ff63f8c745f8d46d10088975fcc7 *45f4301212088b4e04894df0be84ce110883c5ece9cdb504009083c7183b7b5c760ac7436c0600 *0000ff63f8c747ecb45f0b088b45088947f08b46048947f4c747f818600b088b45048947fc8d47 *ec8945088d47f8894504bebcd41108e984b5040048600b089c5e0b08205d0b08020000002500db *00205d0b080b000200010000000c00db008d45fc3b43547303ff63fc8b4d048b560489550489ce *c745fca4600b0883c5fcff2689f6345d0b0801000100130001008d45f03b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f88c6b10088b4e04894ffcc707d8 *1112088d57f88955f4beccd4110883c5f0e9dab0040089f6285d0b0801000100130001008d45f0 *3b43547303ff63f8c745f8d46d10088975fc8b4e04894df4bed4d4110883c5f0e9a4b00400205d *0b0804000100000000001100ff0083c7303b7b5c760fbe1ccf1108c7436c0c000000ff63fcc747 *d4b4600b088b45008947d8c747dce4600b088d47d48947e0c747e84c2d0c088d47d48947ec8d47 *f88947f08d47dc8947f4c747f83c610b088d47e88947fc8d77e883c504e976cb000089f634cf11 *083cd1110824cf1108d8610b0800000200180001008d45f83b4354720883c7203b7b5c760ac743 *6c08000000ff63f8c747e4085c100856e83d9c040083c4048d47e4894604c706245b1008c745f8 *d46d10088d47e48945fcc747f050dd0b08c747f49cce1108c747f834cf1108c747fc98ce1108c7 *0794ce11088d77f083c5f8e9740b0500dc610b0800000200180003008d45f03b4354720883c70c *3b7b5c760ac7436c03000000ff63f8c747f8085c100856e8c19b040083c4048d47f8894604c706 *245b1008c745f8d46d10088d47f88945fcc745f424cf1108be3cd1110883c5f0e945af040090e4 *d11108b4d31108e0d11108a4d011084cae1108c4d61108c0d61108ccd611080cd71108d0d61108 *dcd6110828d7110854ce110802000000240000008b7604e90cb30400d4620b0801000000240001 *008b4604894500be4cae1108c745fc00630b0883c5fcff2690d4620b0804000100010000000c00 *01008d45f83b43547303ff63fc8b4d008b560489550089cec745fc14630b0883c5fcff2689f6c8 *620b0802000000150009008d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745 *f8d46d10088975fcc747fc3c630b088b460489078b46088945f48d47fc8945f0beb4d3110883c5 *ece95fb204008d7600be00d2110883c504ff25c46d100889f68b760483c504ff26c8630b08b863 *0b08000000000000000025000000f4620b0802000000150001008d45e83b43547303ff63f8c745 *f8d46d10088975fc8b4e08894df08b56048955ecbe54ce1108c745f4e4630b0883c5e8e9efb104 *008d7600d0620b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4bea4d0110883c5f0e9acad0400c4620b0803000000120009108d45ec3b4354720883c7 *183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ecf0630b088b46048947f0 *8b46088947f4c747f834640b088b460c8947fc8d47ec8945f48d47f88945f0bee4d1110883c5ec *e94fb104008d7600c4620b080500000012001b108d45ec3b4354720883c7343b7b5c760ac7436c *0d000000ff63f8c745f8d46d10088975fcc747d06c630b088b46048947d48b460c8947d8c747dc *68640b088b46048947e08b460c8947e48b46108947e8c747ece4bb0b088b46048947f08d47dc89 *47f4c747f87cdc0b088d47ec8947fc8d47d089078b46088945f48d47f88945f08b761483c5ece9 *b4b00400c4620b0816000300030000000b001b1083c72c3b7b5c760ac7436c0b000000ff63fcc7 *47d88c6b10088b46088947dc8b45088947e0c747e4d4640b088b46048947e88b45088947ec8d47 *d88947f08b45048947f48b460c8947f8c747fc1c8c0b088d47e489078d77fc83c50c8b4500ff60 *ec89f6bed0d6110883c504ff2689f6cc620b0801000100130021008d45ec3b43547303ff63f8c7 *45f8d46d10088975fc8b4e04894df4c745f0ccd61108bee0d1110883c5ece9f9af04009083c70c *3b7b5c760ac7436c03000000ff63f8c747f8ec650b088b46048947fc8d4ff8894d00be28d71108 *83c5fce9baab040089f61c660b08d4650b08cc620b08000000002500a102cc620b080400010002 *0000000e00a1068d45f43b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10 *088b46088947fc8b450089078d47f88945fc8b46048945f8be54ce1108c7450064660b0883c5f4 *e954af0400bed0d6110883c508ff2689f6cc620b0801000100130021008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4c745f0ccd61108bee0d1110883c5ece90daf040090cc *620b0801000100130021018d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8d8660b088b4e04894ffc8d57f88955f4bedcd6110883c5f0e9b0aa04 *00e0620b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894d *f4beccd6110883c5f0e97caa0400d8620b080100010013000d008d45ec3b4354720883c70c3b7b *5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f864670b088b4e04894ffcc745f4 *0cd711088d57f88955f0bec4d6110883c5ece931ae04009083c7183b7b5c760ac7436c06000000 *ff63f8c747ec14670b088b46048947f0c747f898670b088b45048947fc8d47ec8945048d47f889 *4500bec0d6110883c5fce9ebad04008d7600e4670b08c0660b08cc620b08010000002500f901cc *620b0804000100030000000b00f9058d45f03b4354720883c70c3b7b5c760ac7436c03000000ff *63fcc747f88c6b10088b460c8947fc8b450089078d47f88945f88b46088945f48b4604894500be *54ce1108c745fc40680b0883c5f0e972ad040089f6c4620b0817000400000000001100ff1f83c7 *403b7b5c760fbe44cf1108c7436c10000000ff63fcc747c470650b088b45048947c88b45088947 *cc8b450c8947d0c747d474660b088b45048947d88b45088947dcc747e050680b088b45008947e4 *8b45048947e88b45088947ecc747f0e48b0b088b45008947f48d47e08947f88d47d48947fc8d47 *c489078d77f083c510ff65009048d11108c4d61108c0d6110874cd1108ccd611080cd7110883c7 *083b7b5c760ac7436c02000000ff63f8c747fcfc8b0b088b460489078d77fc83c50c8b4d00ff61 *f089f683c7183b7b5c760ac7436c06000000ff63f8c747ecc86b10088b45048947f08b46048947 *f48b45088947f8c747fc1c8c0b088d47ec89078d77fc83c50c8b4500ff60ec907c690b0850690b *0800000000020000002500000044690b0816000300030000000b0001008d45f03b43547303ff63 *fc8b45048945fc8b46088945f88b46048945f48b45008945f08b460c894504c74500d4690b0883 *c5f0e9f0c1ffff38690b0802000000150001008d45ec3b43547303ff63f8c745f8d46d10088975 *fc8b4e04894df48b56088955f0be48d1110883c5ece9beab040089f603000000120000008d45f0 *3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f88c6b10 *088b46088947fc8b460489078d47f88945f48b760c83c5f0e961a704009048690b080100010013 *0001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4beccd6110883c5f0e9 *2ca704003c690b0801000100130019008d45ec3b4354720883c70c3b7b5c760ac7436c03000000 *ff63f8c745f8d46d10088975fcc747f8b46a0b088b4e04894ffcc745f40cd711088d57f88955f0 *bec4d6110883c5ece9e1aa0400903c690b0804000100030000000b001b008d45f83b4354720883 *c71c3b7b5c760ac7436c07000000ff63fcc747e8606a0b088b45008947ec8b46088947f08b460c *8947f4c747f8e86a0b088b46048947fc8d47e88945008d47f88945fcbec0d6110883c5f8e977aa *04008d760038690b08180005000000000011003f0083c7403b7b5c760fbe4ccf1108c7436c1000 *0000ff63fcc747c4e4690b088b45008947c88b45088947cc8b45108947d0c747d4286a0b088b45 *0c8947d88b45048947dcc747e0446b0b088b45008947e48b450c8947e88b45048947ecc747f0e4 *8b0b088b45008947f48d47e08947f88d47d48947fc8d47c489078d77f083c514ff650090e0d111 *08c4d61108c0d6110874cd110804cd1108ccd611080cd71108d0d6110820d71108d4d61108f8d6 *1108d8d61108446c0b0801000100130001008d45f43b43547303ff63f8c745f8d46d10088975fc *8b4e04894df483c5f4e935afffff9083c7083b7b5c760ac7436c02000000ff63f8c747fcfc8b0b *088b460489078d77fc83c50c8b4d00ff61f089f683c7183b7b5c760ac7436c06000000ff63f8c7 *47ecc86b10088b45048947f08b46048947f48b45088947f8c747fc1c8c0b088d47ec89078d77fc *83c50c8b4500ff60ec90c06c0b08946c0b08000000000200000025000000406c0b081600030003 *0000000b0003008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f8706c0b *088b46088947fc8b45048945fc8d47f88945f88b46048945f48b45008945f08b460c894504c745 *00186d0b0883c5f0e990beffffbed0d6110883c508ff2689f63c6c0b0804000100010000000c00 *01018d45f83b4354720883c70c3b7b5c760ac7436c03000000ff63fcc747f88c6b10088b460489 *47fc8b450089078d47f8894500c745fcf8d61108bec0d6110883c5f8e936a8040089f6346c0b08 *02000000150005048d45ec3b4354720883c7083b7b5c760ac7436c02000000ff63f8c745f8d46d *10088975fcc747fc986d0b088b460489078b46088945f48d47fc8945f0bee0d1110883c5ece9df *a704008d760083c70c3b7b5c760ac7436c03000000ff63f8c747f8ec6d0b088b45048947fc8937 *8d4ff8894d04bed8d61108e99fa304008d7600386e0b087c6d0b08346c0b08010000002500850c *346c0b0804000100020000000e00850c8d45f43b43547303ff63fc8b4d00894df88b5608895500 *8b7604c745fc806e0b0883c5f4e94fa304008d7600bed0d6110883c50cff2689f6346c0b080200 *0000150001008d45ec3b43547303ff63f8c745f8d46d10088975fc8b4e08894df48b56048955f0 *bee0d1110883c5ece912a7040089f6346c0b0802000000150001068d45ec3b4354720883c70c3b *7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8d46e0b088b46048947fc8b46 *0889078d47f88945f4c745f0f8d61108bed4d6110883c5ece9b4a60400346c0b08020000001500 *01078d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc7 *47f8106f0b088b46048947fc8b460889078d47f88945f4be20d7110883c5f0e953a204008d7600 *486c0b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4 *beccd6110883c5f0e91ca20400386c0b0801000100130031008d45ec3b4354720883c70c3b7b5c *760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8c46f0b088b4e04894ffcc745f40c *d711088d57f88955f0bec4d6110883c5ece9d1a504009083c7183b7b5c760ac7436c06000000ff *63f8c747ec6c6f0b088b45048947f08977f4c747f8f86f0b088b45088947fc8d47ec8945088d47 *f8894504bec0d61108e98ba504008d760044700b08bc6e0b08346c0b08020000002500e707346c *0b0804000100030000000b00e7078d45f03b43547303ff63fc8b45008945f48b460c8945fc8b46 *048945008b7608c745f8a0700b0883c5f0e929a1040090346c0b0818000500000000001100ff0f *83c7403b7b5c760fbe54cf1108c7436c10000000ff63fcc747c4286d0b088b45008947c88b4508 *8947cc8b45108947d0c747d4906e0b088b450c8947d88b45048947dcc747e0b0700b088b450089 *47e48b450c8947e88b45048947ecc747f0e48b0b088b45008947f48d47e08947f88d47d48947fc *8d47c489078d77f083c514ff650090e4d11108d4d1110880d1110844d11108e0d1110808d51108 *60d3110878d3110850d511083cd51108f4cd110834cf11085ccf110883c7083b7b5c760ac7436c *02000000ff63f8c747fc1c8c0b08c70700d211088d77fc83c5048b4500ff60ec9083c7083b7b5c *760ac7436c02000000ff63f8c747fc1c8c0b08c7070cd211088d77fc83c5108b4500ff60ec908b *450c8945188b751083c514e9370400008d760001000000240000008b7608e9e49f040088710b08 *01000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be08d511 *08c745f01c720b0883c5f0ff2678710b0800000200120001008d45f03b43547303ff63f8c745f8 *d46d10088975fc8d7600b96c471108894df4bed4d1110883c5f0e9939d04008d760074710b0801 *000100130023008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10 *088975fcc747ec30720b088b46048947f0c747f868720b088d47ec8945f48d47f88945f0bee4d1 *110883c5ece91fa304008d760001000000240000008b7608e9009f040088710b08010001001300 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e04894df4be08d51108c745f00073 *0b0883c5f0ff2674710b0802000000150023008d45ec3b4354720883c7183b7b5c760ac7436c06 *000000ff63f8c745f8d46d10088975fcc747eca4720b088b46088947f0c747f814730b088b4604 *8947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece971a204009078710b08000002001200 *01008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b974471108894df4bed4d11108 *83c5f0e94b9c04008d760074710b0802000000150023008d45ec3b4354720883c7183b7b5c760a *c7436c06000000ff63f8c745f8d46d10088975fcc747ec4c730b088b46048947f08b46088947f4 *c747f8b0730b088d47ec8945f48d47f88945f0bee4d1110883c5ece9d1a104009074710b080300 *0000120023008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d1008 *8975fcc747f8ec730b088b46088947fc8b460c89078d47f88945f48b46048945f0bee4d1110883 *c5ece975a104009078710b0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fc8d7600b990471108894df4bed4d1110883c5f0e94f9b04008d760074710b08030000001200 *23008d45ec3b4354720883c71c3b7b5c760ac7436c07000000ff63f8c745f8d46d10088975fcc7 *47e850740b088b46048947ec8b46088947f08b460c8947f4c747f8ac740b088d47e88945f48d47 *f88945f0bee4d1110883c5ece9cfa004008d760083c7243b7b5c760ac7436c09000000ff63f8c7 *47e0e8740b088b45148947e48b45188947e88b45048947ecc747f07c8c0b088d47e08947f4c747 *f8e0d01108c747fcfc8b0b088d47f089078d77fc83c51c8b4500ff60f09048750b0800720b0874 *710b08460000002500230074710b0806000000240023008b45148945fc8b4d08894df88b7608c7 *4500b4750b0883c5f4e936a0040089f674710b0804000000240023048b46048945fc8b4e08894d *00bef4cd1108c745f8c0750b0883c5f8ff268d76008b46088945008b7604c745fcec750b0883c5 *fcff268d76000c760b08d4710b0874710b08030000002500230474710b080b000200010000000c *0023048d45e03b43547303ff63fc8975fc8b4d048b560489550489cec745f838760b0883c5f8ff *268d760002000000240000008b45088b4d04894d088945048b7608e9889f04007c710b08040001 *00010000000c0001008d45f83b43547303ff63fc8b4e04894dfcbe80d11108c745f878760b0883 *c5f8ff2689f678710b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc *8d7600b99c471108894df4bed4d1110883c5f0e92f9904008d760001000000240000008b7608e9 *fc9a040088710b0801000100130001008d45f03b43547303ff63f8c745f8d46d10088975fc8b4e *04894df4be08d51108c745f004770b0883c5f0ff2674710b0801000100130023008d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747eccc760b08c747 *f818770b088b46048947fc8d47ec8945f48d47f88945f0bee4d1110883c5ece9739e04008d7600 *78710b0800000200120001008d45f03b43547303ff63f8c745f8d46d10088975fc8d7600b9cc47 *1108894df4bed4d1110883c5f0e94b9804008d760074710b0801000100130023008d45ec3b4354 *720883c7183b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec50770b088b46 *048947f0c747f8b0770b088d47ec8945f48d47f88945f0bee4d1110883c5ece9d79d04008d7600 *74710b08a300000024002b0083c70c3b7b5c761ec745004c780b08c7436c03000000b8ff000000 *83f000894320e93ec50400c747f8ec770b088b4d08894ffc8d57f889550cc7450894ce1108be44 *d1110883c504e97b9d04008d760083c504ebab8d760084710b0801000100130021008d45ec3b43 *547303ff63f8c745f8d46d10088975fc8b4e04894df4c745f03cd51108bee0d1110883c5ece935 *9d04009083c7083b7b5c760ac7436c02000000ff63f8c747fcfc8b0b088b460489078d77fc83c5 *188b4d00ff61f089f690710b0801000100130003008d45ec3b43547303ff63f8c745f8d46d1008 *8975fc8b4e04894df4c745f050d51108be78d3110883c5ece9cd9c04009083c7403b7b5c760ac7 *436c10000000ff63f8c747c418790b088b45048947c8c747d0fcbb0b088b45108947d48b451489 *47d88d47c48947dcc747e07cdc0b088d47d08947e48b46048947e8c747ec1c8c0b088d47e08947 *f0c747f4c86b10088b450c8947f88b45148947fc8b460489078d47ec8945148d47f4894510be34 *cf110883c50ce9439c04008d760048790b08e0780b0890710b08450000002500130074710b0805 *0000002400bb1b83c70c3b7b5c760ac7436c03000000ff63f88b460483f83a7528c747f8b0780b *088b45088947fc8b45148945fc8d47f8894514c74500e8790b0883c5fce9fe00000083c50883c7 *f4e90bfeffff8d76008b46088945008b7604c745fcf4790b0883c5fcff268d7600447a0b089c78 *0b0874710b08040000002500bb1b74710b08030000002400bb1b8b46048945008b7608c745fc70 *7a0b0883c5fcff268d760074710b08010000002400ff1f83c7103b7b5c760ac7436c04000000ff *63f8c747f448760b088b46048947f8c747fc9c760b08c707280b12088b46088945f48d47fc8945 *f08d47f48945fc8b4604894500be60d31108c745f87c7a0b0883c5ece91c9b04008b4608894500 *8b7604c745fca07a0b0883c5fcff268d7600f87a0b08a8710b0874710b08000000002500ff1f74 *710b0804000100000000001100ff1f8d45e83b43547308be5ccf1108ff63fc8b7500c74500247b *0b08ff26b4d31108b0d3110848d11108acd0110878d3110824d2110850d5110844ce1108000000 *0024000000c745007ccd11088b761483c5fce97e96040089f6647b0b0800000200120001008d45 *f03b43547303ff63f8c745f8d46d10088975fcbe24d21108c745f4787b0b0883c5f4ff2689f654 *7b0b0800000200120011008d45f03b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8987b0b088d4ff8894df4beb0d3110883c5f0e9fe95040089f6547b0b *0800000200120017008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d4 *6d10088975fcc747f8cc7b0b08c745f4acd011088d4ff8894df0be48d1110883c5ece9b7990400 *8d7600befcd1110883c5048b4500ff60f089f6be04d2110883c5048b4500ff60ec89f600000000 *240000008b460483f82d750ebefcd1110883c5048b4d00ff61f0be04d2110883c5048b5500ff62 *ec8b7604c74500887c0b08ff26ac7c0b08707c0b08000000000000000025000000010000002400 *00008b460483f82d750f8b7504c74504cc7c0b0883c504ff26be04d2110883c5088b4d00ff61ec *8d76008b46088945008b7604c745fcd47c0b0883c5fcff268d7600fc7c0b08607c0b0800000000 *0000000025000000607b0b0800000000240005008b46088945fcc745f850d51108be78d31108c7 *4500287d0b0883c5f4e9bf9804008d7600607b0b0804000100000001000b0005008d45f43b4354 *7303ff63fc8b7500c74500347d0b08ff2690507b0b0800000200120051008d45f03b4354720883 *c7083b7b5c760ac7436c02000000ff63f8c745f8d46d10088975fcc747fc687d0b088d4ffc894d *f4beb4d3110883c5f0e93e94040089f6507b0b080000020012007f008d45ec3b4354720883c718 *3b7b5c760ac7436c06000000ff63f8c745f8d46d10088975fcc747ec187c0b08c747f88c7d0b08 *8d4fec894df48d57f88955f0be48d1110883c5ece9f197040090507b0b08000002001800ff008d *45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c747ec085c100856e8fd7f040083 *c4048d47ec894604c706245b1008c745f8d46d10088d47ec8945fcc747f8d87d0b088d47f88945 *f4c745f044ce1108be48d1110883c5ece98097040048d111085ccf110864cf1108947e0b080000 *0200180007008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c747f8085c1008 *56e8817f040083c4048d47f8894604c706245b1008c745f8d46d10088d47f88945fcc745f464cf *1108c745f05ccf1108be48d1110883c5ece90a97040089f660d3110878d3110864cd110884cf11 *08be00d2110883c5048b4500ff60f089f60c7f0b0801000100130005008d45ec3b43547303ff63 *f8c745f8d46d10088975fc8b4e04894df4c745f064cd1108be60d3110883c5ece9ad9604009010 *7f0b0801000100130003008d45ec3b4354720883c70c3b7b5c760ac7436c03000000ff63f8c745 *f8d46d10088975fcc747f8985f10088b4e04894ffc8d57f88955f4c745f064cd1108be78d31108 *83c5ece95596040090107f0b0801000100130007008d45f43b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f8747f0b088b4e04894ffc8d57f88955f483c5 *f4eb7883c7303b7b5c760ac7436c0c000000ff63f8c747d4387f0b088977d8c747e0cc7f0b088d *47d48947e4c747ec0c5f10088d47d48947f0c747f87cdc0b088d47ec8947fc8d47e089078d77f8 *83c5048b4500ff60ec08800b081c7f0b080c7f0b080000000025000f000c7f0b08040001000000 *000011000f008b7500c7450070800b08ff26b4d31108b0d3110848d11108e0d11108acd0110878 *d3110824d2110850d5110844ce110884cf11080000000024000000c745007ccd11088b761483c5 *fce93a91040089f6a4800b0800000200120001008d45f03b43547303ff63f8c745f8d46d100889 *75fcbe24d21108c745f4bc800b0883c5f4ff2689f690800b0800000200120021008d45f03b4354 *720883c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f8dc800b088d4f *f8894df4beb0d3110883c5f0e9ba90040089f690800b080000020012002b008d45ec3b43547208 *83c70c3b7b5c760ac7436c03000000ff63f8c745f8d46d10088975fcc747f810810b08c745f4ac *d011088d4ff8894df0be48d1110883c5ece9739404008d7600be04d2110883c5048b4500ff60ec *89f6be04d2110883c5048b4500ff60ec89f600000000240000008b460483f82d750ebefcd11108 *83c5048b4d00ff61f0be04d2110883c5048b5500ff62ec8b7604c74500cc810b08ff26f0810b08 *b4810b0800000000000000002500000001000000240000008b460483f82d750f8b7504c7450410 *820b0883c504ff26be04d2110883c5088b4d00ff61ec8d76008b46088945008b7604c745fc1882 *0b0883c5fcff268d760040820b08a4810b08000000000000000025000000a0800b080000000024 *0005008b46088945fcc745f850d51108be78d31108c745006c820b0883c5f4e97b9304008d7600 *a0800b0804000100000001000b0005008d45f43b43547303ff63fc8b7500c7450078820b08ff26 *908c800b08000002001200a1008d45f03b4354720883c7083b7b5c760ac7436c02000000ff63f8 *c745f8d46d10088975fcc747fcac820b088d4ffc894df4beb4d3110883c5f0e9fa8e040089f68c *800b08000002001200f7008d45ec3b4354720883c7183b7b5c760ac7436c06000000ff63f8c745 *f8d46d10088975fcc747ec5c810b08c747f8d0820b088d4fec894df48d57f88955f0be48d11108 *83c5ece9ad920400908c800b08000002001200f7028d45ec3b4354720883c70c3b7b5c760ac743 *6c03000000ff63f8c745f8d46d10088975fcc747f81c830b088d4ff8894df4c745f084cf1108be *48d1110883c5ece95b9204008d760098800b0800000200120021008d45f03b43547303ff63f8c7 *45f8d46d10088975fcc745f444ce1108bee0d1110883c5f0e9178e04008d76008c800b08000002 *001800ff038d45ec3b4354720883c7243b7b5c760ac7436c09000000ff63f8c747e0085c100856 *e82d7a040083c4048d47e0894604c706245b1008c745f8d46d10088d47e08945fcc747ec74830b *08c747f8c8830b088d47ec8945f48d47f88945f0be48d1110883c5ece9aa91040089f698d01108 *24cf11085ccf11086c840b0800000200180007008d45ec3b4354720883c70c3b7b5c760ac7436c *03000000ff63f8c747f8085c100856e8a979040083c4048d47f8894604c706245b1008c745f8d4 *6d10088d47f88945fcc745f45ccf1108c745f024cf1108be98d0110883c5ece93291040089f648 *d111089ccf11088ccf1108e4840b0800000200180007008d45ec3b4354720883c70c3b7b5c760a *c7436c03000000ff63f8c747f8085c100856e83179040083c4048d47f8894604c706245b1008c7 *45f8d46d10088d47f88945fcc745f48ccf1108c745f09ccf1108be48d1110883c5ece9ba900400 *89f600000000240000008b760483c504ff260400010000000000110000008b7500c7450064850b *08ff2600000000240000008b7608e9088204000400010000000000110000008b7500c745008c85 *0b08ff2600000000240000008b760ce9e08104000400010000000000110000008b7500c74500b4 *850b08ff2600000000240000008b7610e9b88104000400010000000000110000008b7500c74500 *dc850b08ff260b000200000000001100000083c70c3b7b5c760fbecccf1108c7436c03000000ff *63fcc747f83c8c0b088b45008947fc8b4d04890f8d77f883c5088b5500ff62f08d76000b000200 *000000001100000083c70c3b7b5c760fbed0cf1108c7436c03000000ff63fcc747f85c8c0b088b *45008947fc8b4d04890f8d77f883c5088b5500ff62ec8d76000b000200000000001100000083c7 *0c3b7b5c760fbed4cf1108c7436c03000000ff63fcc747f87c8c0b088b45008947fc8b4d04890f *8d77f883c5088b5500ff62e88d7600000000002400000083c70c3b7b5c760ac7436c03000000ff *63f8c747f83c8c0b088b46048947fc8b4e08890f8d77f883c5048b5500ff62f08b7604c74500d0 *860b08ff26000000002400000083c70c3b7b5c760ac7436c03000000ff63f8c747f85c8c0b088b *46048947fc8b4e08890f8d77f883c5048b5500ff62ec8b7604c7450014870b08ff260000000024 *00000083c70c3b7b5c760ac7436c03000000ff63f8c747f87c8c0b088b46048947fc8b4e08890f *8d77f883c5048b5500ff62e88b7604c7450058870b08ff2688870b0844870b0800000000000000 *00250000008b7604c74500a8870b08ff26a8870b0800870b080000000000000000250000000400 *010000000000110000008b7500c74500c8870b08ff2683c7143b7b5c760ac7436c05000000ff63 *f8c747f0d8dc0b088b46048947f48b46088947f8c747fcf0dc0b088d47f089078d77fc83c5048b *4500ff60f08d760083c71c3b7b5c760ac7436c07000000ff63f8c747e8d8dc0b088b46048947ec *8b46088947f0c747f4f0dc0b088d47e88947f8c747fc10dd0b088d47f489078d77fc83c5048b45 *00ff60ec89f683c71c3b7b5c760ac7436c07000000ff63f8c747e8d8dc0b088b46048947ec8b46 *088947f0c747f410dd0b088d47e88947f8c747fc10dd0b088d47f489078d77fc83c5048b4500ff *60ec89f66c880b0820880b08e0870b080000000000000000250000000400010000000000110000 *008b7500c74500d0880b08ff2604000100000000001100000083c7083b7b5c760fbee0cf1108c7 *436c02000000ff63fcc747fcfc8b0b088b450089078d77fc83c5048b4d00ff61f0900400010000 *0000001100000083c7083b7b5c760fbee4cf1108c7436c02000000ff63fcc747fc1c8c0b088b45 *0089078d77fc83c5048b4d00ff61ec9083c7083b7b5c760ac7436c02000000ff63f8c747fcfc8b *0b088b460489078d77fc83c5048b4d00ff61f089f683c7083b7b5c760ac7436c02000000ff63f8 *c747fc1c8c0b088b460489078d77fc83c5048b4d00ff61ec89f68c890b0860890b080000000000 *000000250000000400010000000000110000008b7500c74500cc890b08ff2683c7083b7b5c760a *c7436c02000000ff63f8c747fcf0dc0b088b460489078d77fc83c5048b4d00ff61f089f683c708 *3b7b5c760ac7436c02000000ff63f8c747fc10dd0b088b460489078d77fc83c5048b4d00ff61ec *89f6108a0b08e4890b080000000000000000250000000400010000000000110000008b7500c745 *00508a0b08ff2617000400000000001100000083c7143b7b5c760fbef0cf1108c7436c05000000 *ff63fcc747f0e48b0b088b45008947f48b45048947f88b45088947fc8b450c89078d77f083c510 *ff650089f6020000002400000083c7143b7b5c760ac7436c05000000ff63f8c747f0e48b0b088b *45088947f48b45048947f88b46048947fc8b460889078d77f083c50cff65008d76000100000024 *0000008b46088945008b4d048b560489550489cec745fcbc8a0b0883c5fcff268d760000000000 *240000008b46088945008b7604c745fc008b0b0883c5fcff268d76000400010000000000110000 *008d45f83b43547308bef4cf1108ff63fc8b7500c74500288b0b08ff26000000002400000083c7 *243b7b5c760ac7436c09000000ff63f8c747e0d8dc0b088b460c8947e48b46108947e8c747ecd8 *dc0b088b46048947f08b46088947f4c747f8d8dc0b088d47ec8947fc8d47e089078d77f883c504 *ff6500900400010000000000110000008b7500c74500708b0b08ff260400000001000000ff6500 *900400000009000000ff65009001000000020000008b4500ff60f089f601000000090000008b45 *00ff60f089f601000000020001008b4500ff60ec89f601000000090001008b4500ff60ec89f602 *000000040000008b4500ff60f089f602000000090000008b4500ff60f089f60200000004000100 *8b4500ff60ec89f602000000090001008b4500ff60ec89f602000000040002008b4500ff60e889 *f602000000090002008b4500ff60e89090b89c8c0b08ffe090833d0c171208000f8596000000c7 *050c17120801000000c74500f49a0b0883c504c74500f4980b0883c504c74500349a0b0883c504 *c7450094990b0883c504c7450040990b0883c504c74500b08d0b0883c504c74500a4970b0883c5 *04c745002c980b0883c504c74500809a0b0883c504c745002c8e0b0883c504c74500508d0b0883 *c504c74500a04d0c0883c504c74500004e0c0883c504c7450090310c0883c50483ed04ff650090 *9090b8508d0b08ffe090833d10171208007546c7051017120801000000c7450050be0b0883c504 *c74500ccbe0b0883c504c745009c360c0883c504c74500984a0c0883c504c74500004e0c0883c5 *04c7450090310c0883c50483ed04ff6500909090b8b08d0b08ffe090833d14171208007564c705 *1417120801000000c7450004a10b0883c504c7450094b40b0883c504c7450048c80b0883c504c7 *45009cc70b0883c504c74500a4c50b0883c504c7450058c10b0883c504c745008cc30b0883c504 *c745000cbf0b0883c504c7450090310c0883c50483ed04ff650090b82c8e0b08ffe090833d1817 *1208007550c7051817120801000000c7450050be0b0883c504c74500ccbe0b0883c504c7450098 *4a0c0883c504c7450010a70b0883c504c745006c4a0c0883c504c74500004e0c0883c504c74500 *90310c0883c50483ed04ff65009004000100000000001100000083c7083b7b5c7611c7436c0200 *0000befccf11088b43fcffe0c747fc988f0b088b450089078d47fc894500b88ce80b08ebe589f6 *e9c70000008d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b450489 *078d77fc83c5088b4500ebe79083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b *088b450489078d77fc83c5088b4500ebe790008f0b08d48e0b0800000000210000002500000001 *000000240000008b46488b7504894504c74500408f0b08ff2689f68b46048b7004ebe48b760483 *c608ebdc648f0b085c8f0b08000000000100000025000000cc8e0b080000000000000000000001 *00010000000c0000008d45f83b435473058b43fcffe08b46048945fc8b7604c745f8808f0b0883 *ed088b06ebe704000100000000001100000083c7083b7b5c7611c7436c02000000be00d011088b *43fcffe0c747fcc8900b088b450089078d47fc894500b88ce80b08ebe589f6e9c70000008d7600 *83c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b450489078d77fc83c5088b *4500ebe79083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b450489078d77 *fc83c5088b4500ebe79030900b0804900b0800000000210000002500000001000000240000008b *46408b7504894504c7450070900b08ff2689f68b46048b7004ebe48b760483c608ebdc94900b08 *8c900b08000000000100000025000000fc8f0b08000000000000000000000100010000000c0000 *008d45f83b435473058b43fcffe08b46048945fc8b7604c745f8b0900b0883ed088b06ebe70400 *0100000000001100000083c7083b7b5c7611c7436c02000000be04d011088b43fcffe0c747fcf8 *910b088b450089078d47fc894500b88ce80b08ebe589f6e9c70000008d760083c7083b7b5c760c *c7436c020000008b43f8ffe0c747fcd8300c088b450489078d77fc83c5088b4500ebe79083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fcd8300c088b450489078d77fc83c5088b4500eb *e79060910b0834910b0800000000210000002500000001000000240000008b46108b7504894504 *c74500a0910b08ff2689f68b46048b7004ebe48b760483c608ebdcc4910b08bc910b0800000000 *01000000250000002c910b08000000000000000000000100010000000c0000008d45f83b435473 *058b43fcffe08b46048945fc8b7604c745f8e0910b0883ed088b06ebe720d0110850d011081c92 *0b0816000400000000001100030083c70c3b7b5c7611c7436c03000000be08d011088b43fcffe0 *c747f838940b088b45048947fc8b450889078d47f88945088b450089450483c504b8e4c10b08eb *d68d7600eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8 *b03d1008ffe0c747fcd8300c0889378d77fc83c5048b4500ebea8d760078920b08000000000000 *00000000010000000200100000008d45f43b435473058b43fcffe08b46048945f88b46088945f4 *c745fc84920b0883ed0cb8244b0c08ebe189f6210000002400000083c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8d0920b088b45048947fc8b460489078d77f883c508b8d46d1008ebdf *9001000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f48b7604c745f004930b0883ed108b06ebdb420000002400000083c50cff650089f61c920b0823 *0000002400030083c70c3b7b5c760cc7436c030000008b43f8ffe08b55048b4604894204c747f8 *40930b088b450c8947fc8b450489078d47f8894500c745fc20d01108be50d01108c7450478930b *0883ed08b84c181008ebc089f61c920b0803000000240003008b550883c2088b460489028b7504 *895504c745008c930b08ff2689f61c920b08030000002400030089f08b7508894508c74500ec93 *0b08ff268d76001c920b0804000200020000000e0003008d45ec3b435473058b43fcffe08b4604 *8945fc8b46088945f8be08000000c745f414940b0883ed0cb8cc421008ebdc9040d0110860d011 *0868940b080b000300000000001100030083c7083b7b5c7611c7436c02000000be10d011088b43 *fcffe0c747fcfc940b088b450489078d47fc894504b8e4c10b08ebe589f602000000150000008d *45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10 *b8ac4c0c08ebdc9068940b0804000100010000000c0003008d45f83b4354720883c70c3b7b5c76 *0cc7436c030000008b43fcffe0c747f8bc940b088b45008947fc8b460489078d47f8894500c745 *fc40d01108be60d0110883ed08b814161008ebd0909030d0110860d0110848950b080400020000 *000000110003008d45f03b4354730abe18d011088b43fcffe0be00d21108c745fc84970b0883ed *04b89c431008ebe8eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff *000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760088950b080000 *0000000000000000010000000200100000008d45f43b435473058b43fcffe08b46048945f88b46 *088945f4c745fc94950b0883ed0cb8b04b0c08ebe189f6210000002400000083c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8e0950b088b45048947fc8b460489078d77f883c508b8d46d *1008ebdf9001000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b *46088945f48b7604c745f014960b0883ed108b06ebdb48950b0804000100000001000d0003008d *45f83b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f850960b088b45008947 *fc8b460489078d47f8894500c745fc30d01108be60d0110883ed08b814161008ebd089f6020000 *002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f8dce0 *0b088b45088947fc8b450489078d77f883c50c8b4500ebe189f648950b08020000002400030083 *c7083b7b5c7615c7436c02000000c74320fe000000b8b03d1008ffe08d4608c747fc90960b0889 *078d47fc8945fc8b45088945f8897508c74500e4960b0883ed08b8e4c10b08ebd28d760048950b *080100000024000300897500be60000000c745fc2c970b0883ed04e931ab040090b8a4970b08ff *e090833d1c17120800756ec7051c17120801000000c74500fce00b0883c504c74500cce70b0883 *c504c7450010a70b0883c504c74500ccbe0b0883c504c7450050be0b0883c504c74500984a0c08 *83c504c74500004e0c0883c504c74500d8480c0883c504c745005c460c0883c504c7450090310c *0883c50483ed04ff6500909090b82c980b08ffe090833d20171208000f85aa000000c705201712 *0801000000c74500a04d0c0883c504c7450004a10b0883c504c74500004e0c0883c504c74500f0 *440c0883c504c74500d8480c0883c504c745005c460c0883c504c7450048c80b0883c504c74500 *10c80b0883c504c745009cc70b0883c504c7450020c70b0883c504c74500a4c50b0883c504c745 *00e8c40b0883c504c745008cc30b0883c504c7450058c10b0883c504c745000cbf0b0883c504c7 *450090310c0883c50483ed04ff6500909090b8f4980b08ffe090833d24171208007532c7052417 *120801000000c7450050be0b0883c504c74500ccbe0b0883c504c74500004e0c0883c504c74500 *90310c0883c50483ed04ff6500909090b840990b08ffe090833d2817120800753cc70528171208 *01000000c74500004e0c0883c504c74500ccbe0b0883c504c74500a4970b0883c504c745005c46 *0c0883c504c7450090310c0883c50483ed04ff650090b894990b08ffe090833d2c171208000f85 *82000000c7052c17120801000000c745006c4a0c0883c504c74500004e0c0883c504c7450048c8 *0b0883c504c745009cc70b0883c504c7450020c70b0883c504c745002cc40b0883c504c745008c *c30b0883c504c7450058c10b0883c504c745000cbf0b0883c504c7450050a70b0883c504c74500 *10a70b0883c504c7450090310c0883c50483ed04ff6500909090b8349a0b08ffe090833d301712 *08007532c7053017120801000000c7450050be0b0883c504c74500ccbe0b0883c504c74500004e *0c0883c504c7450090310c0883c50483ed04ff6500909090b8809a0b08ffe090833d3417120800 *755ac7053417120801000000c74500004e0c0883c504c74500984a0c0883c504c745009cc70b08 *83c504c74500e8c40b0883c504c745008cc30b0883c504c7450058c10b0883c504c745000cbf0b *0883c504c7450090310c0883c50483ed04ff6500909090b8f49a0b08ffe090833d381712080075 *3cc7053817120801000000c74500ccbe0b0883c504c74500984a0c0883c504c7450050be0b0883 *c504c74500004e0c0883c504c7450090310c0883c50483ed04ff65009073657446696c6554696d *6573008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8d16204008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0409b0b0883ed10b84cce0b08ebbf9067657446696c6553746174 *75730089f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e85d6204008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0b49b0b0883ed10b84cce0b08ebbf9073657446696c654d6f646500 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8ed6104008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f0289c0b0883ed10b84cce0b08ebbf9008d61108989c0b0800000200180001008d *45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e881 *6104008d47f8894604c706245b10088d55f8c702d46d1008894204c745f408d6110883ed0cb88c *bf0b08ebc60cd11108fc9c0b0800000200180001008d45f43b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e81d6104008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f40cd1110883ed0cb88cbf0b08ebc6b8689d0b08ffe090833d3c17 *120800755ac7053c17120801000000c745006c4a0c0883c504c74500a4a70b0883c504c74500d8 *480c0883c504c7450090310c0883c504c74500cce70b0883c504c7450098dd0b0883c504c74500 *78df0b0883c504c74500d8c80b0883c50483ed04ff65009090900b000200000000001100000083 *c7283b7b5c7611c7436c0a000000be70d011088b43fcffe0c747dc609e0b088b45048947e0c747 *e4a09e0b088b45008947e8c747ecf89e0b088b45048947f08d47dc8947f48d47e48947f8c747fc *449f0b088d47ec89078d77fc83c5088b4500ebb490010000002400000083c504e9204a00000400 *0200010000000c0000008d45f83b435473058b43fcffe08b7604c745fc4c9e0b0883ed08b81c09 *1008ebea8d7600eb1a89f6849e0b08000000000000000000000100010000000c0000008b7604e9 *d0920400eb4e89f601000000240000008b750483c508ff65008d760001000000240000008b4504 *89750489c6c74500b49e0b0883ed04e93d6a040090a89e0b080000000000000000000001000300 *00000b0000008d45f43b435473058b43fcffe08b46048945fc8b46088943048b760cc745f8c89e *0b0883ed08b870331008ebde8d7600eb1a89f6289f0b0800000000000000000000010001000000 *0c0000008b7604e9b091040016000400000000001100000083c7103b7b5c7611c7436c04000000 *be74d011088b43fcffe0c747f4cca00b088b45008947f88b45088947fc8b450489078d77f483c5 *0cb8fc301008ebd989f6e92f0100008d7600010000002400000083c504e9c44800000400020001 *0000000c0000008d45f83b435473058b43fcffe08b7604c745fca89f0b0883ed08b81c091008eb *ea8d7600eb1a89f6e09f0b08000000000000000000000100010000000c0000008b7604e9749104 *0001000000240000008b750483c508ff65008d760002000000240000008b45088945008975088b *7504c745040ca00b0883ed04e9ad73040090020000002400000083c7283b7b5c7615c7436c0a00 *0000c74320fe000000b8b03d1008ffe0c747dc8c6b10088b45048947e08977e4c747e8bc9f0b08 *8d47dc8947ecc747f08c6b10088b45088947f48977f8c747fcfc9f0b088d47f089078975088d47 *e88943048d77fcc7450020a00b08b870331008ebab989f0b080000000000000000000001000300 *00000b0000008d45f03b435473058b43fcffe08b460c8945f88b46088945fc8b7604c745f444a0 *0b0883ed10b81c091008ebde909090b804a10b08ffe090833d40171208007528c7054017120801 *000000c74500b4ed0b0883c504c74500d8c80b0883c504c7450094b40b0883c50483ed04ff6500 *901700040000000000110000008d45fc3b4354730abe78d011088b43fcffe08b7500c7450070a1 *0b088b06ebf003000000240000008b460c8945008b46048945fc83ed04e970d700001600030000 *000000110000008b7500c74500f4a10b08ff2604000100020000000e0000008d45fc3b43547208 *83c70c3b7b5c760cc7436c030000008b43fcffe0c747f88c6b10088b46048947fc8b450089078d *47f88945008b760883ed04b808121008ebd98d7600020000002400000083c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8a8a10b088b45048947fc8b460c89078b45088945048d47f88945 *088b7604b814161008ebd61600030000000000110000008d45fc3b4354730abe80d011088b43fc *ffe08b7504c745fcaca20b0883ed048b06ebed908b750c83c50ce9316504009000000000240000 *00c745000cd211088b760c83ed04e9826f040089f68b7504c7450c74a20b0883c50cff269088a2 *0b0860a20b080000000043000000250000001600030000000000110000008d45fc3b4354730abe *84d011088b43fcffe08b7504c745fc28a30b0883ed048b06ebed900000000024000000c745000c *d211088b760c83ed04e9126f040089f68b7504c7450ce4a20b0883c50cff26908b750c83c50ce9 *896404009008a30b08f8a20b080000000043000000250000001700040000000000110000008d45 *fc3b4354730abe88d011088b43fcffe08b7500c745005ca30b088b06ebf003000000240000008b *460c8945008b46048945fc83ed04e944d400000b00020000000000110000008d45fc3b43547208 *83c7183b7b5c7611c7436c06000000be8cd011088b43fcffe0c747ecd8a30b088b45008947f0c7 *47f818a40b088b45008947fc8d47ec8945008d47f88945fc83ed04b860d80b08ebce8d76000100 *0100130000008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f40cd21108c7 *45f0081210088b46048945ec83ed14b858db0b08ebd49001000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb830db0b08ebe2909090160003 *0000000000110000008d45f43b4354730abe90d011088b43fcffe08b45088945f88b45048945f4 *c745fca8a40b0883ed0cb844d90b08ebe19089750c8b450489450883c508e9ebfeffff8d760080 *a40b0880a40b0800000000c3000000250000000b00020000000000110000008d45fc3b43547208 *83c7243b7b5c7611c7436c09000000be94d011088b43fcffe0c747e020a50b088b45008947e4c7 *47ec60a50b088b45008947f0c747f844a60b088b45008947fc8d47ec89078d47e08945008d47f8 *8945fc83ed04b860d80b08ebbc9001000100130000008d45ec3b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f400d21108c745f0081210088b46048945ec83ed14b858db0b08ebd490 *01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4 *83ed0cb808db0b08ebe28d760004000100020000000e0000008d45f83b4354720883c70c3b7b5c *760cc7436c030000008b43fcffe0c747f87cdc0b088b46088947fc8b450089078d47f8894500c7 *45fc081210088b46048945f883ed08b858db0b08ebcf9004000100030000000b0000008d45f83b *4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f898a50b088b46048947fc8b45 *0089078d47f88945008b460c8945fc8b760883ed08b814161008ebd3900b000200020000000e00 *00008d45fc3b4354720883c7103b7b5c760cc7436c040000008b43fcffe0c747f4f0a50b088b46 *048947f88b46088947fc8b450489078d47f48945048b760883ed04b814161008ebd39016000300 *00000000110000008d45f43b4354730abe98d011088b43fcffe08b45088945f88b45048945f4c7 *45fcf0a60b0883ed0cb844d90b08ebe19089750c8b450489450883c508e9dbfdffff8d7600c8a6 *0b08c8a60b0800000000c3000000250000000300000001000000ff6500900300000009000000ff *650090b810a70b08ffe090833d44171208007528c7054417120801000000c745000c1e0c0883c5 *04c74500d8c80b0883c504c7450064050c0883c50483ed04ff650090b850a70b08ffe090833d48 *17120800753cc7054817120801000000c74500642e0c0883c504c7450064050c0883c504c74500 *10070c0883c504c74500a01f0c0883c504c74500d8c80b0883c50483ed04ff650090b8a4a70b08 *ffe090833d4c171208007546c7054c17120801000000c7450064de0b0883c504c7450064050c08 *83c504c74500a01f0c0883c504c74500d8c80b0883c504c7450094b40b0883c504c745002cbc0b *0883c50483ed04ff65009090900b000200000000001100000083c7203b7b5c7611c7436c080000 *00be9cd011088b43fcffe0c747e438a90b088b45008947e88b45048947ecc747f08ca90b088d47 *e48947f4c747f880dd0b088d47f08947fc8d47e489078d77f883c5088b4500ebc189f6c7450014 *1610088b45048945fc8b45088945048b460489450883ed04e95f3200008d7600befcd1110883c5 *0c8b4500ff60f089f684a80b0860a80b080000000002000000250000008b550c8b460489450c89 *d6c74504a8a80b0883c504ff2690befcd1110883c5108b4500ff60f089f68b450c8945088b4604 *89450c8b4504894500c7450414161008e9f231000089f6d0a80b08c0a80b080000000043000000 *250000008b550c8b460489450c89d6c7450004a90b08ff2604a90b08a8a80b0800000000030000 *00250000000b000200020000000e0000008d45f83b435473058b43fcffe08b46088945fc8b5500 *8b460489450089d6c745f82ca90b0883ed088b06ebdf897500e9dc20000064a90b0864a90b0800 *00000000000000250000000b000200010000000c0000008d45fc3b435473058b43fcffe08b4500 *8945fc8b45048945008b7604c7450480a90b0883ed04b838a90b08ebde90909001000000020000 *008b4500ff60f089f601000000090000008b4500ff60f0909001000000020001008b4500ff60ec *89f601000000090001008b4500ff60ec9090b804aa0b08ffe090833d50171208007546c7055017 *120801000000c74500b4ed0b0883c504c74500d8c80b0883c504c745000c1e0c0883c504c74500 *64050c0883c504c7450050a70b0883c504c7450094b40b0883c50483ed04ff6500909090040001 *0000000000110000008d45fc3b4354730abea0d011088b43fcffe08b7500c7450058ab0b088b06 *ebf0be00d2110883c5048b4500ff60f089f68b750483c508ff2601000100130000008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb868aa0b08ebe28d7600 *83c7183b7b5c760cc7436c060000008b43f8ffe0c747eca8aa0b088977f0c747f87cdc0b08c747 *fc5cd711088d47ec89078b45048945008d47f8894504b82cda0b08ebced4aa0b0898aa0b080000 *000001000000250000008b46048945008b7608c745fc2cab0b0883ed04ff268d76002cab0b0888 *aa0b080000000000000000250000000400010000000000110000008d45f83b4354730abea4d011 *088b43fcffe08b45008945fcc745f850d51108c74500dcac0b0883ed08b898fb0b08ebe0be00d2 *110883c5048b4500ff60f089f6000000002400000083c70c3b7b5c7615c7436c03000000c74320 *fe000001b8b03d1008ffe0c747f8e4bb0b088977fc8b450089078d77f883c508b8d46d1008ebe2 *8d760001000100130000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b4604 *8945f0c745ec50d51108c745f4acab0b0883ed14b80cf80b08ebd49000000000240000008b4608 *894500e929ffffff9001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008 *8970048b7604c745f430ac0b0883ed0c8b06ebe189f683c7303b7b5c760cc7436c0c0000008b43 *f8ffe0c747d4f0ab0b088977d8c747e044ac0b088d47d48947e4c747ec0c5f10088947f0c747f8 *7cdc0b088d47ec8947fc8d47e089078d77f883c5048b45008b40ecebbd8d760070ac0b0894ab0b *080000000000000000250000000400010000000000110000008d45fc3b4354730abea8d011088b *43fcffe08b7500c74500acad0b088b06ebf0be00d2110883c5048b4500ff60f089f60100010013 *0000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e8 *ac0b08ebe28d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec20ad0b088b460889 *47f0c747f87cdc0b08c747fc64d711088d47ec89078d47f88945008b46048945fc83ed04b82cda *0b08ebc889f64cad0b0808ad0b080000000000000000250000000400010000000000110000008b *7500c745003caf0b08ff26be00d2110883c5048b4500ff60f089f6000000002400000083c70c3b *7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8e4bb0b088977fc8b450089 *078d77f883c508b8d46d1008ebe28d760001000100130000008d45ec3b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f0c745ec6cd71108c745f4dcad0b0883ed14b80cf80b08 *ebd490be00d2110883c504ff25c46d100889f68b4608894500e945ffffff9068ae0b0858ae0b08 *00000000000000002500000000000000240000008b7608c7450088ae0b08ff2601000100130000 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f490ae0b0883ed0c *8b06ebe189f683c7303b7b5c760cc7436c0c0000008b43f8ffe0c747d420ae0b088977d8c747e0 *a4ae0b088d47d48947e4c747ec0c5f10088947f0c747f87cdc0b088d47ec8947fc8d47e089078d *77f883c5048b45008b40ecebbd8d7600d0ae0b08c4ad0b080000000000000000250000000b0002 *0000000000110000008d45fc3b4354730abeb0d011088b43fcffe08b7504c745fc80b00b0883ed *048b06ebed90be00d2110883c50c8b4500ff60f089f683c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f87cdc0b088b45088947fcc70700d211088d77f883c50c8b45008b40ecebdd8d7600 *02000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f4 *8b46048945f083ed10b848af0b08ebdc9083c7243b7b5c760cc7436c090000008b43f8ffe0c747 *e0bcaf0b088b45048947e48977e8c747ec7cdc0b088b45048947f08d47e08947f4c747f87cdc0b *088b45088947fc8d47ec89078d77f883c50c8b45008b40ecebbb90ecaf0b087caf0b0800000000 *02000000250000008b46048945088b7608c7450058b00b08ff2689f658b00b086caf0b08000000 *0042000000250000000b000200000000001100000083c7083b7b5c7611c7436c02000000beb4d0 *11088b43fcffe0c747fcfcb10b088b450089078b4504894500c7450400d211088d77fcb8fcb10b *08ebdbbe00d2110883c5108b4500ff60f089f604000000120000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f87cdc0b088b460489 *47fc8b460889078d47f88945f48b460c8945f08b761083ed10b8fcb10b08ebc79083c7203b7b5c *760cc7436c080000008b43f8ffe0c747e4e0b00b088b450c8947e88b45108947ec8b45048947f0 *8b45088947f4c747f87cdc0b088b450c8947fc8d47e489078d77f883c5148b45008b40ecebbf90 *8b450489450c8b750883c50ceb6689f688b10b0834b10b080000000004000000250000008b450c *8945f88b46048945f48b45088945f08b46088945008b4604894508c745fcacb10b0883ed10e953 *4300008d7600acb10b08c8b00b080000000003000000250000000b000200010000000c0000008d *45e83b435473058b43fcffe08975fc8b55008b460489450089d6c745f8f0b10b0883ed088b06eb *e29090901600030000000000110000008d45e83b4354730abeb8d011088b43fcffe08b45088945 *f88b750483ed08b83cb30b08ebeb8d7600be04d2110883c5188b4500ff60ec89f6befcd1110883 *c5108b4500ff60f089f6befcd1110883c5188b4500ff60f089f68b751083c504e9a5000000908c *b20b087cb20b0800000000450200002500000005000000240000008b45088945fc8b45148945f8 *8b7608c74500acb20b0883ed0ce94263040089f68b46088945fc8b46048945008b7504c745f8b4 *b20b0883ed08ff2690d4b20b086cb20b080000000003000000250000008b46088945108b460489 *45148b7504c7450804b30b0883c508ff269004b30b085cb20b08000000004503000025000000c3 *00000024000000c745fc34b30b0883ed04ff261600030000000000110000008d45f43b43547208 *83c70c3b7b5c7611c7436c03000000bebcd011088b43fcffe0c747f8b0b30b088b45088947fcc7 *45f800d211088b45048945f48d47f8894508c745fcfcb30b0883ed0cb84cee0b08ebcd89f60100 *0100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed *0cb858f70b08ebe28d760089750883c504e94dfeffff90dcb30b08dcb30b080000000043000000 *250000000b00020000000000110000008d45fc3b4354730abec0d011088b43fcffe08b45008945 *fc8b4504894500c745048cb40b0883ed04b840020c08ebe190bee0d0110883c5048b4500ff60f0 *89f683c7083b7b5c760cc7436c020000008b43f8ffe0c747fc94b90b088b460489078d77fc83c5 *048b45008b40ecebe489f648b40b0838b40b08000000000000000025000000b894b40b08ffe090 *833d5417120800751ec7055417120801000000c7450064de0b0883c504c74500d8c80b0883c504 *83ed04ff65009090900b00020000000000110000008d45f43b4354730abec4d011088b43fcffe0 *8b7504c745fcd4b50b0883ed048b06ebed90be00d2110883c50c8b4500ff60f089f683c504e9c4 *ffffff02000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b4608 *8945f48b46048945f083ed10b8d0b40b08ebdc9083c7183b7b5c760cc7436c060000008b43f8ff *e0c747ec14b50b088b45048947f08b45088947f4c747f87cdc0b088b46048947fc8d47ec89078d *77f883c50c8b45008b40ecebcb9044b50b0804b50b080000000002000000250000008b46048945 *fc8b46088945088b7504c74500a0b50b0883ed08e94a5c040089f6a0b50b08f4b40b0800000000 *42000000250000000b00020000000000110000008d45fc3b4354730abec8d011088b43fcffe08b *7504c745fc30b60b0883ed048b06ebed908b750483c508e98d510400908b760483c508e9815104 *009010b60b0804b60b0800000000420000002500000070d7110830b60b08040001000000000011 *0001008b7500c7450078b60b08ff26be70d71108e94251040089f68b7604e9385104005cb60b08 *50b60b0830b60b0800000000250001000400010000000000110000008b7500c74500c4b60b08ff *26be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6a0b60b0890b6 *0b080000000000000000250000001600030000000000110000008d45fc3b4354730abed8d01108 *8b43fcffe08b7508c745fc28b70b0883ed048b06ebed908b750483c50ce99d500400908b460489 *450c8b750883c508e9f75a04008d760000b70b08f4b60b08000000008300000025000000040001 *00000000001100000083c71c3b7b5c7611c7436c07000000bedcd011088b43fcffe0c747e8bcb8 *0b088b45008947ecc747f00cb90b088d47e88947f4c747f880dd0b088d47f08947fc8d47e88907 *8d77f883c5048b4500ebc721000000240000003975040f94c00fb6c08944240883c5088b34852c *dc0b088b542408c1e2028b450029d0ff60f089f601000000240000008b45048945fc897504c745 *008cb70b0883ed04e938c40000897500c74504bcb70b08e929c400009021000000240000003975 *040f94c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f089f601 *000000240000008b45048945fc897504c74500ecb70b0883ed04e9d8c300008b450c8945048975 *0cc745081cb80b0883c504e9c0c300008b460489450c8b45088945008b4504894508c745041416 *1008e97622000089f64cb80b0834b80b080000000003000000250000008b46048945008b450889 *750889c6c745fc80b80b0883ed04ff2689f680b80b08d4b70b080000000002000000250000000b *000200010000000c0000008d45f83b435473058b43fcffe08b55008b460489450089d6c745fcb0 *b80b0883ed048b06ebe589f6897500e95c110000e4b80b08e4b80b080000000000000000250000 *000b000200010000000c0000008d45fc3b435473058b43fcffe08b45008945fc8b45048945008b *7604c7450400b90b0883ed04b8bcb80b08ebde90909004000100000000001100000083c7083b7b *5c7611c7436c02000000bee4d011088b43fcffe0c747fc94b90b088b450089078d77fc83c5048b *45008b40ecebe490000000000a0000008b4500ff60f0909001000000020001008b4500ff60ec89 *f601000000090001008b4500ff60ec90900b000200000000001100000083c7203b7b5c7611c743 *6c08000000bee8d011088b43fcffe0c747e408bb0b088b45008947e88b45048947ecc747f05cbb *0b088d47e48947f4c747f880dd0b088d47f08947fc8d47e489078d77f883c5088b4500ebc189f6 *03000000120000008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f4 *8b46088945f0c745ec141610088b46048945e883ed18b8e0da0b08ebcf897500e9ac13000054ba *0b0854ba0b08000000000100000025000000040000002400000083c7103b7b5c760cc7436c0400 *00008b43f8ffe0c747f418ba0b088b45088947f88b45048947fc8b460889078b46048945088b45 *10894504c74500141610088b450c8945fc8d47f4894510c7450c70ba0b0883ed04b8e0da0b08eb *b603000000240000008b46088945008b550c8b460489450c89d6c745fc78ba0b0883ed04ff268d *76000b000200020000000e0000008d45f03b435473058b43fcffe08b46088945fc8b55008b4604 *89450089d6c745f8dcba0b0883ed088b06ebdf897500e90c0f000034bb0b0834bb0b0800000000 *00000000250000000b000200010000000c0000008d45fc3b435473058b43fcffe08b45008945fc *8b45048945008b7604c7450450bb0b0883ed04b808bb0b08ebde90909004000100000000001100 *00008b7500c74500acbb0b08ff2600000000240000008b7608e9e84b0400040001000000000011 *0000008b7500c74500d4bb0b08ff2600000000240000008b7604e9c04b04000200000004000000 *ff6500900200000009000000ff6500900300000001000000ff6500900300000009000000ff6500 *900400000001000000ff6500900400000009000000ff650090b82cbc0b08ffe090833d58171208 *000f85a0000000c7055817120801000000c74500b4060c0883c504c74500642d0c0883c504c745 *00cce70b0883c504c745000c1e0c0883c504c74500b0df0b0883c504c7450064050c0883c504c7 *450064de0b0883c504c74500a01f0c0883c504c74500d8c80b0883c504c7450004aa0b0883c504 *c7450024be0b0883c504c74500e07a0c0883c504c74500247a0c0883c504c7450094b40b0883c5 *04c74500507a0c0883c50483ed04ff65009084d71108e0bc0b080400010000000000110001008d *45fc3b4354730abef4d011088b43fcffe08b45008945fcc7450028bd0b0883ed04b8887c0c08eb *e78d7600000000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008 *ffe0c747f8f4bd0b088b45008947fc89378d77f883c5088b4500ebe4908cd7110860bd0b080b00 *020000000000110001008d45fc3b4354730abefcd011088b43fcffe08b45008945fc8b45048945 *00c74504acbd0b0883ed04b890800c08ebe190000000002400000083c7103b7b5c7615c7436c04 *000000c74320ff000002b8b03d1008ffe0c747f40cbe0b088b45008947f88b45048947fc89378d *77f483c50c8b4500ebde9090900100010005000000ff6500900100010009000000ff6500900200 *010001000000ff6500900200010009000000ff650090b824be0b08ffe090833d5c171208007514 *c7055c17120801000000c7450014300c0883c50483ed04ff650090b850be0b08ffe090833d6017 *1208007564c7056017120801000000c7450094c40b0883c504c745006c4a0c0883c504c7450048 *c80b0883c504c7450010c80b0883c504c745002cc40b0883c504c745009cc70b0883c504c74500 *24be0b0883c504c74500e07a0c0883c504c7450010a70b0883c50483ed04ff650090b8ccbe0b08 *ffe090833d64171208007528c7056417120801000000c7450058c10b0883c504c745000cbf0b08 *83c504c745008cc30b0883c50483ed04ff650090b80cbf0b08ffe090833d68171208007564c705 *6817120801000000c7450064050c0883c504c74500d8c80b0883c504c74500cce70b0883c504c7 *450094b40b0883c504c745002cc60b0883c504c7450058c10b0883c504c745008cc30b0883c504 *c745009cc70b0883c504c7450048c80b0883c50483ed04ff650090040001000000000011000000 *83c7183b7b5c7611c7436c06000000be04d111088b43fcffe0c747ec4cc00b088b45008947f0c7 *47f820c10b088b45008947fc8d47ec89078d77f883c5048b4500ebd49001000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4a0d711088b760483ed10b80812 *1008ebde8d7600000000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8d8 *bf0b088b46248947fc8d47f88945008b761883ed04b808121008ebde01000100130000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f410c00b0883ed0c8b06ebe1 *89f6be0cd2110883c50cff6500900000000024000000be0cd2110883c504ff650090c745088cc0 *0b0883c504e931c100009098c00b0878c00b080000000042000000250000000300000024000000 *8b45048945008b450c8945fc8b7608c74504bcc00b0883ed08e93255040089f603000000240000 *008b7604c74500c4c00b08ff2603000000240000008b450c89750c89c6c74500ecc00b08ff268d *76000b000300020000000e0000008d45f03b435473058b43fcffe08b46088945fc8b55048b4604 *89450489d6c745f800c10b0883ed0cb81c091008ebdc90b858c10b08ffe090833d6c1712080075 *6ec7056c17120801000000c74500cce70b0883c504c74500d8c80b0883c504c7450064050c0883 *c504c745000c1e0c0883c504c74500b4ed0b0883c504c7450024be0b0883c504c7450048c80b08 *83c504c745009cc70b0883c504c745008cc30b0883c504c74500a4c50b0883c50483ed04ff6500 *9090900b00030000000000110000008d45f03b4354730abe08d111088b43fcffe0c745f8000000 *008b45008945f4c745fc74c30b0883ed0cb804ee0b08ebe08b55088b450cc6041000be0cd21108 *83c510ff65008d760084010000240000000fbe4e048b550c8b4510880c10ff45108b450489450c *8b750883c50ceb3a89f68b46088945008b7604c745fc34c20b0883ed04ff268d760054c20b0814 *c20b0800000000c3000000250000000a000300000001000d0000008d45f43b435473058b43fcff *e08975fc8b55008b460489450089d6c745f880c20b0883ed088b06ebe28d760042000000240000 *0083c50cff650089f6230000002400000083c7083b7b5c7615c7436c02000000c74320fe000000 *b8b03d1008ffe0c747fce0060c088b450489078d47fc8945008b750cc74504c0c20b0883ed04b8 *e8131008ebd890020000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b8b0 *3d1008ffe08d5608c747fc8cc20b088917c745f8000000008b45048945f48955008975048d77fc *c745fcd0c20b0883ed0cb88cc20b08ebcb020000002400000046c745001cc30b08e94b7f040090 *9090b88cc30b08ffe090833d70171208000f8582000000c7057017120801000000c7450010070c *0883c504c7450064050c0883c504c74500a01f0c0883c504c745000c1e0c0883c504c745000cde *0b0883c504c74500b0df0b0883c504c74500d8c80b0883c504c745002cbc0b0883c504c7450024 *be0b0883c504c74500e07a0c0883c504c7450010a70b0883c504c7450048c80b0883c50483ed04 *ff6500909090b82cc40b08ffe090833d74171208007550c7057417120801000000c7450064de0b *0883c504c7450054e00b0883c504c7450064050c0883c504c74500cce70b0883c504c74500d8c8 *0b0883c504c7450048c80b0883c504c745009cc70b0883c50483ed04ff650090b894c40b08ffe0 *90833d7817120800753cc7057817120801000000c7450078c60b0883c504c7450020c70b0883c5 *04c745002cc60b0883c504c74500a4c50b0883c504c74500e8c40b0883c50483ed04ff650090b8 *e8c40b08ffe090833d7c171208007578c7057c17120801000000c74500d8c80b0883c504c74500 *64050c0883c504c7450064de0b0883c504c74500b4060c0883c504c745000c1e0c0883c504c745 *00cce70b0883c504c745002cc40b0883c504c7450048c80b0883c504c745008cc30b0883c504c7 *45009cc70b0883c504c7450094b40b0883c50483ed04ff6500900b00030000000000110000008b *7500c7450090c50b08ff2601000000240000008b4604894500e999be000090b8a4c50b08ffe090 *833d8017120800756ec7058017120801000000c7450064de0b0883c504c74500d8c80b0883c504 *c74500b4ed0b0883c504c7450064050c0883c504c74500cce70b0883c504c7450020c70b0883c5 *04c74500e8c40b0883c504c7450048c80b0883c504c745009cc70b0883c504c7450004a10b0883 *c50483ed04ff6500909090b82cc60b08ffe090833d84171208007532c7058417120801000000c7 *450064050c0883c504c74500cce70b0883c504c74500d8c80b0883c504c745009cc70b0883c504 *83ed04ff6500909090b878c60b08ffe090833d88171208000f858c000000c70588171208010000 *00c745009cc70b0883c504c7450048c80b0883c504c745002cc60b0883c504c74500a4c50b0883 *c504c74500e8c40b0883c504c7450004aa0b0883c504c7450004a10b0883c504c7450064050c08 *83c504c74500b4ed0b0883c504c74500cce70b0883c504c7450078df0b0883c504c7450064de0b *0883c504c74500d8c80b0883c50483ed04ff650090b820c70b08ffe090833d8c171208007564c7 *058c17120801000000c7450064050c0883c504c74500d8c80b0883c504c745000c1e0c0883c504 *c74500cce70b0883c504c74500e8c40b0883c504c745008cc30b0883c504c7450048c80b0883c5 *04c745009cc70b0883c504c7450094b40b0883c50483ed04ff650090b89cc70b08ffe090833d90 *17120800755ac7059017120801000000c74500a01f0c0883c504c7450008310c0883c504c74500 *b4ed0b0883c504c7450064050c0883c504c74500d8c80b0883c504c7450064de0b0883c504c745 *00cce70b0883c504c74500b4060c0883c50483ed04ff6500909090b810c80b08ffe090833d9417 *120800751ec7059417120801000000c74500642d0c0883c504c7450064de0b0883c50483ed04ff *6500909090b848c80b08ffe090833d98171208007578c7059817120801000000c74500cce70b08 *83c504c74500d8c80b0883c504c7450064de0b0883c504c74500b0df0b0883c504c74500b4060c *0883c504c74500642d0c0883c504c7450014300c0883c504c74500f0e90b0883c504c745006405 *0c0883c504c74500bc2d0c0883c504c7450004a10b0883c50483ed04ff650090b8d8c80b08ffe0 *90833d9c171208007514c7059c17120801000000c7450064de0b0883c50483ed04ff6500901600 *030000000000110000008b7500c7450030c90b08ff2604000100010000000c0000008b7604e974 *3e0400020000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc20c90b088b *450889078d47fc8945088b7604b814161008ebe20400010000000000110000008d45f83b435473 *0abe40d111088b43fcffe08b7500c74500a4c90b08c745fc5873100883ed08b89c071008ebe38d *760000000000240000008b060fb770fe83c504ff65000b00020000000000110000008b7500e944 *48040016000300000000001100000083c70c3b7b5c7611c7436c03000000be48d111088b43fcff *e0c747f88c6b10088b45048947fc8b450889078d47f88945088b750083c504b808121008ebd990 *900b00020000000000110000008b750083c504e9753d0400900400010000000000110000008b75 *00e9603d04000400010000000000110000008b7500c7450088ca0b08ff26be04d2110883c5048b *4500ff60ec89f6befcd1110883c5048b4500ff60f089f664ca0b0854ca0b080000000000000000 *250000001600030000000000110000008d45f43b4354730abe58d111088b43fcffe08b7500c745 *00e8ca0b088b06ebf08b750483c508e9dd3c0400908b750883c508e9d13c040090c0ca0b08b4ca *0b0800000000020000002500000002000000240000008b45088945fc8b45048945f88b760cc745 *00e0ca0b0883ed0ce90e4b040090901600030000000000110000008d45f43b4354730abe5cd111 *088b43fcffe08b7500c7450068cb0b088b06ebf08b750883c508e95d3c0400908b750483c508e9 *513c04009040cb0b0834cb0b0800000000020000002500000002000000240000008b45088945fc *8b45048945f88b760cc7450060cb0b0883ed0ce98e4a040090901600030000000000110000008d *45fc3b4354730abe60d111088b43fcffe08b7500c74500f4cb0b088b06ebf0be04d2110883c504 *8b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6c4cb0b08c4cb0b08b4cb0b08000000 *00000000002500000002000000240000008b45048945008b45088945048b7608c74508eccb0b08 *83ed04e9024a040090901600030000000000110000008d45fc3b4354730abe64d111088b43fcff *e08b7500c7450080cc0b088b06ebf0befcd1110883c5048b4500ff60f089f6be04d2110883c504 *8b4500ff60ec89f650cc0b0850cc0b0840cc0b0800000000000000002500000002000000240000 *008b45048945008b45088945048b7608c7450878cc0b0883ed04e9764904009090160003000000 *0000110000008d45fc3b4354730abe68d111088b43fcffe08b7500c745000ccd0b088b06ebf0be *04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6cccc0b08dccc0b08 *dccc0b0800000000000000002500000002000000240000008b45048945008b45088945048b7608 *c7450804cd0b0883ed04e9ea48040090901600030000000000110000008d45fc3b4354730abe6c *d111088b43fcffe08b7500c7450098cd0b088b06ebf0befcd1110883c5048b4500ff60f089f6be *04d2110883c5048b4500ff60ec89f658cd0b0868cd0b0868cd0b08000000000000000025000000 *02000000240000008b45048945008b45088945048b7608c7450890cd0b0883ed04e95e48040090 *900b00020000000000110000008b7500c74500fccd0b08ff268b750483c508ff26be04d2110883 *c5088b4500ff60ec89f6d8cd0b08d0cd0b080000000001000000250000000b0002000000000011 *0000008b7500c7450040ce0b08ff26befcd1110883c5088b4500ff60f089f68b750483c508ff26 *24ce0b0814ce0b0800000000010000002500000009000200000000001100000083c70c3b7b5c76 *11c7436c03000000bec0d111088b43fcffe0c747f8d0ce0b088b45048947fc8b45008907c74504 *000000008d77f883c504b8d0ce0b08ebd89001000100160000008d45f43b435473058b43f8ffe0 *8d45f8c700d46d10088970048b4608408945f48b760483ed0cb8d0ce0b08ebde8d760003000100 *010001000f00000083c7203b7b5c760cc7436c080000008b43fcffe08b56088b45000fb6141085 *d2750d8b760483c50483ef208b06ebe3c747e494ce0b088977e88b45008947ecc747f03cdc0b08 *8957f4c747f87cdc0b088d47f08947fc8d47e489078d77f883c5048b45008b40eceba99090900b *00020000000000110000008d45f83b4354730abec4d111088b43fcffe08b7500c7450070d00b08 *8b06ebf0be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f678cf0b *0868cf0b080000000000000000250000008b7504c745049ccf0b0883c504ff2690befcd1110883 *c50c8b4500ff60f089f683000000240000008b450c3b460475108b450489450c83c508b848cf0b *08ffe0befcd1110883c5108b45008b40f0ebee03000000240000008b550c8b460489450c89d6c7 *4500c4cf0b08ff268b46088945008b55088b460489450889d6c745fcf4cf0b0883ed04ff268d76 *0008d00b08accf0b080000000002000000250000008b46088945008b55048b460489450489d6c7 *45fc3cd00b0883ed04ff268d76003cd00b089ccf0b080000000001000000250000001600030000 *000000110000008d45fc3b4354730abec8d111088b43fcffe08b7500c74500d8d00b088b06ebf0 *be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6acd00b089cd00b *0800000000000000002500000002000000240000008b45048945008b45088945048b7608c74508 *d0d00b0883ed04e91e450400909004000100000000001100000083c71c3b7b5c7611c7436c0700 *0000beccd111088b43fcffe0c747e878d20b088b45008947ecc747f080dd0b088d47fc8947f48d *47e88947f8c747fcb0d20b088d47f0890789c683c504b880dd0b08ebc68d7600be6cd8110883c5 *04e9bf0a00008d7600befcd1110883c5048b4500ff60f089f668d10b0858d10b08000000000000 *0000250000008b750cc7450c8cd10b0883c50cff2690befcd1110883c5148b4500ff60f089f689 *7500e954fcffffacd10b08acd10b0800000000010000002500000083c7103b7b5c760cc7436c04 *0000008b43f8ffe0c747f4c86b10088b45088947f88b45048947fc8b460889078b46048945088b *4510894504c74500141610088b450c8945fc8d47f4894510c7450cc8d10b0883ed04b8e0da0b08 *ebb6c8d10b089cd10b080000000004000000250000008b46088945008b550c8b460489450c89d6 *c745fc38d20b0883ed04ff268d760038d20b088cd10b080000000003000000250000000b000200 *010000000c0000008d45f03b435473058b43fcffe08975fc8b55008b460489450089d6c745f86c *d20b0883ed088b06ebe28d76000b000200010000000c0000008d45fc3b435473058b43fcffe08b *46048945fc83ed04b87cd00b08ebee90909004000100000000001100000083c7683b7b5c7611c7 *436c1a000000bed0d111088b43fcffe0c7479ca0d40b088b45008947a0c747a408d50b088b4500 *8947a8c747b068dd0b088d47a48947b48d479c8947b88d47d48947bc8d47dc8947c08d47e48947 *c48d47ec8947c88d47f48947cc8d47fc8947d0c747d45cd50b088d47b08947d8c747dc88d50b08 *8947e0c747e4b4d50b088947e8c747ece0d50b088947f0c747f40cd60b088947f8c747fc38d60b *08890789c683c504b868dd0b08e960ffffff90be18d2110883c5048b4500ff60ec89f6be14d211 *0883c5048b4500ff60f089f6a4d30b0894d30b080000000000000000250000008b750cc7450cc8 *d30b0883c50cff2690be1cd2110883c5148b4500ff60e889f68b450489450c8b750883c50ce9a7 *0000008d760083c514ff268d7600fcd30b08e8d30b08fcd30b080000000084000000250000008b *46048945fc8b45108945f8c745f4141610088b450c8945f08b4608894510c745001cd40b0883ed *10e97e07000089f61cd40b08d8d30b080000000004000000250000008b46088945008b550c8b46 *0489450c89d6c745fc60d40b0883ed04ff268d760060d40b08c8d30b0800000000030000002500 *00000b000200010000000c0000008d45e43b435473058b43fcffe08975fc8b55008b4604894500 *89d6c745f894d40b0883ed088b06ebe28d760001000100130000008d45f43b435473058b43f8ff *e08d45f8c700d46d10088970048b46048945f483ed0cb8f0db0b08ebe28d760001000100130000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d100889 *7004c747f8d4d40b088b46048947fc8d47f88945f483ed0cb804d10b08ebd58d76000b00020001 *0000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04b838cd0b08ebee8d7600 *0b000200010000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04b8accc0b08 *ebee8d76000b000200010000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04 *b820cc0b08ebee8d76000b000200010000000c0000008d45fc3b435473058b43fcffe08b460489 *45fc83ed04b894cb0b08ebee8d76000b000200010000000c0000008d45fc3b435473058b43fcff *e08b46048945fc83ed04b814cb0b08ebee8d76000b000200010000000c0000008d45fc3b435473 *058b43fcffe08b46048945fc83ed04b894ca0b08ebee90909003000100000000001100000083c7 *083b7b5c7611c7436c02000000bed4d111088b43fcffe0c747fce0d60b088b45008907c7450000 *0000008d77fcb8e0d60b08ebe189f601000100160000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b4608408945f48b760483ed0cb8e0d60b08ebde8d760003000100000001 *000d00000083c7203b7b5c760cc7436c080000008b43fcffe08b56048b45000fb6141085d27513 *be00d2110883c50483ef208b45008b40f0ebddc747e4a4d60b088977e88b45008947ecc747f03c *dc0b088957f4c747f87cdc0b088d47f08947fc8d47e489078d77f883c5048b45008b40eceba390 *12000300000000001100000083c7103b7b5c7611c7436c04000000bed8d111088b43fcffe0c747 *f4e8d70b088b45048947f88b45088947fc8b45008907c74508000000008d77f483c508b8e8d70b *08ebd28d760001000100160000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b4608408945f48b760483ed0cb8e8d70b08ebde8d760003000100020001000b0000008d45f83b *4354720883c7143b7b5c760cc7436c050000008b43fcffe08b560c8b45000fb6141085d2750d8b *760883ef14b89c071008ebe3c747f0acd70b088977f48b45008947f8c747fc3cdc0b0889178d47 *f08945008d47fc8945fc8b760483ed08b814161008ebb190909016000300000000001100000083 *c70c3b7b5c7611c7436c03000000bedcd111088b43fcffe0c747f808d90b088b45008947fc8b45 *0489078d77f883c508b808d90b08ebdf8b750483c50ce9f92e04009083c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f88c6b10088b450c8947fc8b460889078d47f889450c8b55088b4604 *89450889d683c504b814161008ebd18d7600a4d80b0898d80b0800000000030000002500000004 *000100020000000e0000008d45f43b435473058b43fcffe08b46088945f88b46048945fc8b4500 *89750089c6c745f4fcd80b0883ed0c8b06ebdc900b00020000000000110000008d45fc3b435473 *0abee0d111088b43fcffe08b7504c745fc20da0b0883ed048b06ebed90be00d2110883c50c8b45 *00ff60f089f602000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46088945f48b46048945f083ed10b844d90b08ebdc9083c7243b7b5c760cc7436c090000008b *43f8ffe0c747e080d90b088b45048947e48b46088947e8c747ec8c6b10088b45048947f08b4604 *8947f4c747f87cdc0b088d47ec8947fc8d47e089078d77f883c50c8b45008b40ecebb889f6b0d9 *0b0868d90b080000000042000000250000000b00020000000000110000008b7500c74500d4da0b *08ff268b750483c508ff2602000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d *10088970048b46088945f48b46048945f083ed10b82cda0b08ebdc9083c7183b7b5c760cc7436c *060000008b43f8ffe0c747ec48da0b088b46088947f08b45048947f4c747f87cdc0b088b460489 *47fc8d47ec89078d77f883c5088b45008b40ecebcb9078da0b0838da0b08000000000100000025 *0000000400010000000000110000008b7500c74500f4da0b08ff2600000000240000008b7608e9 *a02c04000400010000000000110000008b7500c745001cdb0b08ff2600000000240000008b7604 *e9782c04000400010000000000110000008b7500c7450044db0b08ff2600000000240000008b76 *08e9502c04000400010000000000110000008b7500c745006cdb0b08ff2600000000240000008b *760ce9282c04000b000200000000001100000083c70c3b7b5c7611c7436c03000000bef8d11108 *8b43fcffe0c747f87cdc0b088b45008947fc8b450489078d77f883c5088b45008b40ecebde9090 *900400010000000000110000008b7500c74500dcdb0b08ff2600000000240000008b7608e9b82b *04000400010000000000110000008b7500c7450004dc0b08ff2600000000240000008b760483c5 *04ff26000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec89f6fcd11108 *04d211080000010003000000ff650090000001000a000000ff6500900000010003000000ff6500 *90000001000a000000ff650090000000000a0000008b4500ff60f0909002000000040001008b45 *00ff60ec89f602000000090001008b4500ff60ec9090000000000a0000008b4500ff60f0909000 *0000000a0001008b4500ff60ec9090000000000a0002008b4500ff60e889f614d2110818d21108 *1cd211080200000004000000ff6500900200000009000000ff65009001000000020000008b4500 *ff60f089f601000000090000008b4500ff60f0909001000000020001008b4500ff60ec89f60100 *0000090001008b4500ff60ec9090000000000a000000ff65009008d21108000000000a000000ff *6500900cd211080400000001000000ff6500900400000009000000ff6500900800000001000000 *ff6500900800000009000000ff6500900200000004000000ff6500900200000009000000ff6500 *90b898dd0b08ffe090833da017120800755ac705a017120801000000c74500f0050c0883c504c7 *4500b4060c0883c504c7450078df0b0883c504c74500d8c80b0883c504c745000c1e0c0883c504 *c7450064050c0883c504c74500cce70b0883c504c7450094b40b0883c50483ed04ff6500909090 *b80cde0b08ffe090833da4171208007528c705a417120801000000c74500d8c80b0883c504c745 *004c7c0c0883c504c7450064de0b0883c50483ed04ff6500900800000001000000ff6500900800 *000009000000ff650090b864de0b08ffe090833da8171208007528c705a817120801000000c745 *00b4ed0b0883c504c7450078df0b0883c504c74500d8c80b0883c50483ed04ff650090c8d81108 *b8d811089cde0b0803000100000000001100030083c7143b7b5c7611c7436c05000000be4cd211 *088b43fcffe0c747f000df0b088b45008947f4c747fcc0e90b088d47f089078d47fc894500b874 *e80b08ebd8909cde0b0800000200140003008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f4b8d811088b46048945f083ed10b8a8930c08ebdb040001000000000011000000 *83c7083b7b5c7611c7436c02000000be54d211088b43fcffe0c747fc84e90b088b450089078d47 *fc894500b874e80b08ebe59090b878df0b08ffe090833dac17120800751ec705ac171208010000 *00c74500d8c80b0883c504c74500cce70b0883c50483ed04ff6500909090b8b0df0b08ffe09083 *3db017120800755ac705b017120801000000c745000c1e0c0883c504c745005c890c0883c504c7 *450064050c0883c504c74500a01f0c0883c504c745000cde0b0883c504c74500b4ed0b0883c504 *c74500d8c80b0883c504c7450094b40b0883c50483ed04ff65009090900000020006000000ff65 *0090000002000a000000ff6500900000010003000000ff650090000001000a000000ff650090b8 *54e00b08ffe090833db417120800756ec705b417120801000000c7450064de0b0883c504c74500 *a01f0c0883c504c74500b4060c0883c504c74500cce70b0883c504c74500d8c80b0883c504c745 *00b4ed0b0883c504c745002cbc0b0883c504c7450048c80b0883c504c745009cc70b0883c504c7 *450004a10b0883c50483ed04ff650090909002000000040001008b4500ff60ec89f60200000009 *0001008b4500ff60ec9090b8fce00b08ffe090833db8171208000f85be000000c705b817120801 *000000c745000c1e0c0883c504c7450098dd0b0883c504c74500a01f0c0883c504c7450064050c *0883c504c745000cde0b0883c504c7450078df0b0883c504c74500cce70b0883c504c74500b4ed *0b0883c504c7450010070c0883c504c74500d8c80b0883c504c745005c890c0883c504c7450098 *4a0c0883c504c74500d8480c0883c504c74500ccbe0b0883c504c7450050be0b0883c504c74500 *94b40b0883c504c7450010a70b0883c504c7450004a10b0883c50483ed04ff650090909034d911 *08d0e10b0800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8491c04008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f434d9110883ed0cb88ce80b08ebc640d9110834e20b0800000200180001008d45f43b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e51b0400 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f440d9110883ed0cb88ce80b08 *ebc648d9110804d9110898e20b080400020000000000110003008d45e83b4354730abe78d21108 *8b43fcffe08b7500c74500d8e30b088b06ebf083c7083b7b5c760cc7436c020000008b43f8ffe0 *c747fcd8e90b088b46088907c7450048d911088d47fc8945fc8975f8c745f404d9110883ed0cb8 *649c0c08ebd18d760098e20b08020000002400030083c7083b7b5c7615c7436c02000000c74320 *fe000000b8b03d1008ffe0c747fcd8e90b088b450489078d47fc8945048b4508894500c7450848 *d91108c745fc04d9110883ed04b8649c0c08ebce8d760083c7083b7b5c760cc7436c020000008b *43f8ffe0c747fcd8e90b088b460c8907c745f448d911088d47fc8945f08975ecc745e804d91108 *8b46088945fc897500c745f820e30b0883ed18b8649c0c08ebc18d760070e30b08d0e20b0898e2 *0b08000000002500030050d9110814d9110824d91108d8e30b080400020000000000110007008d *45f83b4354730abe80d211088b43fcffe08b45008945fcc745002cd91108c745f814d9110883ed *08b8a4a30c08ebe060d91108f4d8110824e40b080b000300000000001100030083c7143b7b5c76 *11c7436c05000000be88d211088b43fcffe0c747f098e50b088b45008947f4c747f8cce50b088b *45008947fc8b450489078d47f08943048d77f883c508b870331008ebcc9028e40b080100000024 *00010083c7203b7b5c760cc7436c080000008b43f8ffe0c747e494b90b088b45048947e8c747ec *ece80b088b46048947f08b46088947f4c747f8f4d811088b46108947fc8d47e489078d77ec83c5 *08b8d46d1008ebbf9028e40b0802000000150001008d45f03b435473058b43f8ffe08d45f8c700 *d46d10088970048b46048945f48b7608c745f094e40b0883ed108b06ebdb28e40b080100000024 *0001008b06668378fe09754083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0f4e40b08 *8b45048947f48b46048947f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd28975 *0483c504b874e80b08ebc589f628e40b0804000200010000000c0001008d45fc3b435473058b43 *fcffe08b55008b460489450089d6c745fc30e50b0883ed048b06ebe589f624e40b080200000015 *0001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f404d211088b460889 *45f08b46048945ec83ed14b878a40c08ebd59090a0d9110804e60b081600030000000000110001 *008d45fc3b4354730abe90d211088b43fcffe08b7508c745fc48e60b0883ed048b06ebed9004e6 *0b0883000000240001008b460489450c83c504e916cd00009090a8d9110858e60b081600040000 *000000110001008d45f43b4354730abe98d211088b43fcffe08b7508c745fcb0e60b0883ed048b *06ebed900000000024000000be0cd2110883c504ff65009058e60b0883000000240001008b4604 *8945008b45088945fcc745081c0910088b45048945f8c7450404d21108c7450c98e60b0883ed08 *e9b9cd00009058d9110870d9110888d91108b8d91108c0d91108d0d91108e0e60b080b00030000 *00000011003f008d45f03b4354730abea0d211088b43fcffe0c745f880d911088b45008945f4c7 *45f088d91108c745fcb8e70b0883ed10b8a4a30c08ebd99083c508e924d100008b45088b550489 *550889450483c504e9b8d100008b45088b550489550889450483c504e928d500005ce70b0848e7 *0b0840e70b08ece60b080300000025000700ece60b0802000000240007008b46088945008b7604 *c745fc88e70b0883ed04ff268d7600ece60b080200000024000700c7450094e70b08ff26909090 *b8cce70b08ffe090833dbc171208007578c705bc17120801000000c74500b4ed0b0883c504c745 *0010070c0883c504c74500a01f0c0883c504c7450094b40b0883c504c7450064050c0883c504c7 *4500d8c80b0883c504c74500681f0c0883c504c745000cde0b0883c504c745005c890c0883c504 *c74500281f0c0883c504c74500a4a70b0883c50483ed04ff650090040002000000000011000000 *e9e3d600009090900400010000000000110000008b750083c504e9494b04009004000100000000 *00110000008d45fc3b4354730abec8d211088b43fcffe08b7500c74500bce80b0883ed04b81c09 *1008ebea89f60000000024000000e9db1e0400909090000000000a0000008b4500ff60f0909000 *0000000a0001008b4500ff60ec90900500000001000000ff6500900500000009000000ff650090 *000000000a0000008b4500ff60f0909001000000020001008b4500ff60ec89f601000000090001 *008b4500ff60ec9090000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec *90900100000002000300ff6500900100000009000300ff650090000000000a000400ff65009000 *0000000a000500ff6500900100000002000700ff6500900100000009000700ff65009001000000 *02000900ff6500900100000009000900ff650090000000000a000b00ff6500900100000002000c *00ff6500900100000009000c00ff6500900100000002000000ff6500900100000009000000ff65 *0090b8f0e90b08ffe090833dc017120800756ec705c017120801000000c7450014300c0883c504 *c74500a01f0c0883c504c745005c890c0883c504c7450010070c0883c504c745000c1e0c0883c5 *04c7450064050c0883c504c745000cde0b0883c504c74500d8c80b0883c504c7450010a70b0883 *c504c7450064de0b0883c50483ed04ff65009090900400010000000000110000008b7500c74500 *14eb0b08ff2683c7083b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b460489078d *77fc83c5048b4500ebe790000000002400000083c7083b7b5c760ec7436c02000000b8f0371008 *ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea89f68b46048943048b7608c74500bcea0b *08e9e76504008d7600e8ea0b0888ea0b0800000000000000002500000004000100000000001100 *00008b7500c7450034eb0b08ff26000000002400000083c7083b7b5c760cc7436c020000008b43 *f8ffe08b460485c0740485c0780a83c50483ef088b06ebe9f7d8c747fc84ed0b0889078d77fc83 *c5048b4500ebd3900400010000000000110000008b7500c7450094eb0b08ff2600000000240000 *008b460485c0750dbe3cda110883c504e9dc010000be44da110885c079efbe30da1108ebe80400 *010000000000110000008b7500c74500d8eb0b08ff26000000002400000083c7083b7b5c760cc7 *436c020000008b43f8ffe08b4604f7d8c747fc84ed0b0889078d77fc83c5048b4500ebe5909090 *0b00020000000000110000008b7500c7450060ec0b08ff26210000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe08b4504034604c747fc84ed0b0889078d77fc83c5088b4500ebe4 *89f601000000240000008b55048b460489450489d6c7450028ec0b08ff260b0002000000000011 *0000008b7500c74500ccec0b08ff26210000002400000083c7083b7b5c760cc7436c020000008b *43f8ffe08b45040faf4604c747fc84ed0b0889078d77fc83c5088b4500ebe39001000000240000 *008b55048b460489450489d6c7450094ec0b08ff260b00020000000000110000008b7500c74500 *38ed0b08ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45042b46 *04c747fc84ed0b0889078d77fc83c5088b4500ebe489f601000000240000008b55048b46048945 *0489d6c7450000ed0b08ff260000010003000000ff650090000001000a000000ff650090000001 *0003000000ff650090000001000a000000ff6500900000010003000000ff650090000001000a00 *0000ff6500900000020006000000ff650090000002000a000000ff650090b8b4ed0b08ffe09083 *3dc4171208007532c705c417120801000000c7450094b40b0883c504c74500d8c80b0883c504c7 *45004c7c0c0883c504c7450064de0b0883c50483ed04ff65009090900a00020000000000110000 *008b7500c7450040ee0b08ff268b750483c508ff65008d7600ff45048b4608894500e9daffffff *89f61cee0b0810ee0b080000000021000000250000000b00020000000000110000008b7500c745 *00b0ee0b08ff268b750483c508ff2683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87c *dc0b088b46048947fc8b450489078d47f88945048b4608894500b84cee0b08ebd98d760060ee0b *0858ee0b080000000001000000250000000400010000000000110000008d45fc3b4354720883c7 *0c3b7b5c7611c7436c03000000be38d311088b43fcffe0c747f8b8ef0b088d77f883ed04b80812 *1008ebea8d7600010000002400000083c7583b7b5c760cc7436c160000008b43f8ffe0c747ac24 *6010088b45048947b0c747b87cdc0b088b460c8947bc8d47ac8947c0c747c4985f10088b450489 *47c8c747d07cdc0b088b46088947d48d47c48947d8c747dc0c5f10088b45048947e0c747e87cdc *0b088b46048947ec8d47dc8947f0c747f4fcbb0b088d47e88947f88d47d08947fc8d47b889078d *77f483c5088b4500e978ffffff89f60b000200000001000b0000008b7500c74500fcee0b08ff26 *00000200120000008d45ec3b4354720883c7183b7b5c760cc7436c060000008b43f8ffe08d45f8 *c700d46d1008897004c747ecfcbb0b08c747f000d21108c747f400d21108c747f800d21108c747 *fca4ef0b088d47ec8945f48d47fc8945f0bedcd1110883ed14b814161008ebb490901700040000 *000000110000008d45f83b4354730abe3cd311088b43fcffe08b7504c745fcb0f10b0883ed048b *06ebed90be00d2110883c5148b4500ff60f089f6be00d2110883c5148b4500ff60f089f6be00d2 *110883c5188b4500ff60f089f604000000120000008d45e83b435473058b43f8ffe08d45f8c700 *d46d10088970048b46108945f48b460c8945f08b46088945ec8b46048945e883ed18b82cf00b08 *ebd09083c7343b7b5c760cc7436c0d0000008b43f8ffe0c747d088f00b088b45088947d48b450c *8947d88b45048947dc8b46088947e0c747e40c6c10088b45088947e88b45108947ec8b45148947 *f08b46048947f4c747f87cdc0b088d47e48947fc8d47d089078d77f883c5188b45008b40eceba0 *89f6c4f00b0870f00b080000000005000000250000008b46088945008b55108b460489451089d6 *c745fc4cf10b0883ed04ff268d76004cf10b0860f00b080000000004000000250000008b460889 *45088b550c8b460489450c89d6c7450080f10b08ff2689f680f10b0850f00b0800000000440000 *00250000000b000200000000001100000083c7083b7b5c7611c7436c02000000be40d311088b43 *fcffe0c747fc84f20b088b450089078d77fc83c504b884f20b08ebe589f6be00d2110883c50c8b *4500ff60f089f6897500e924e8ffff00f20b0800f20b0800000000010000002500000083c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f88c6b10088b45048947fc8b460889078b46048945 *008b75088d47f8894508c745041cf20b0883ed04b808121008ebcc89f61cf20b08f0f10b080000 *0000020000002500000004000100010000000c0000008d45f43b435473058b43fcffe08975fc8b *55008b460489450089d6c745f878f20b0883ed088b06ebe2909090f0da1108b0f20b080b000200 *00000000110001008d45f83b4354730abe44d311088b43fcffe08b7504c745fcf4f30b0883ed04 *8b06ebed90bef0da110883c508e9a71404008d76008b750883c508e99914040090020000002400 *00008b45088b55048955088945048b7620e9f422040003000000120000008d45ec3b435473058b *43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604c745ec0cf30b0883 *ed148b06ebd589f683c7103b7b5c760cc7436c040000008b43f8ffe0c747f428f30b088b450489 *47f88b45088947fc8b460489078b46088945fc8d77f483ed04b8bcf30b08ebd39060f30b08f8f2 *0b08000000000200000025000000420000002400000089750c8b7500c74504b4f30b0883c504ff *2689f68b46088945fc8b760483ed04ebde89f6d0f30b08e8f20b08b0f20b084200000025000100 *1600030000000000110000008d45e83b4354730abe4cd311088b43fcffe08b45088945f88b7504 *83ed08b80cf50b08ebeb8d7600bee0d0110883c5108b4500ff60f089f68b45108945048b751483 *c504e9c30000008d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc94b90b088b45 *0489078d77fc83c5188b45008b40ecebe489f64cf40b0838f40b08000000004500000025000000 *05000000240000008b45088945fc8b45148945f88b7608c7450090f40b0883ed0ce95e21040089 *f603000000240000008b46088945fc8b46048945008b7504c745f898f40b0883ed08ff26908b46 *088945088b7604c74500c0f40b08ff2689f6dcf40b0828f40b08000000004300000025000000c3 *000000240000008975108b7500c7450404f50b0883c504ff269090160003000000000011000000 *8d45ec3b4354730abe50d311088b43fcffe08b45088945f88b750483ed08b8f8f50b08ebeb8d76 *00befcd1110883c5108b4500ff60f089f68b45048945008b7510e98600000089f6be04d2110883 *c5148b4500ff60ec89f674f50b0864f50b0800000000840000002500000004000000240000008b *450c8945fc8b45108945f88b7608c7450098f50b0883ed0ce95620040089f68b46088945008b46 *048945088b7504c745fca0f50b0883ed04ff2690c0f50b0854f50b080000000043000000250000 *00c3000000240000008975108b7500c74504f0f50b0883c504ff2690900b000200000000001100 *00008d45f43b4354730abe54d311088b43fcffe08b7504c745fcacf60b0883ed048b06ebed90be *04d2110883c50c8b4500ff60ec89f6befcd1110883c50c8b4500ff60f089f683c504e9b4ffffff *5cf60b084cf60b080000000002000000250000008b46048945fc8b46088945088b7504c7450078 *f60b0883ed08e9721b040089f678f60b083cf60b080000000042000000250000000b0002000000 *0000110000008d45f43b4354730abe58d311088b43fcffe08b7504c745fc4cf70b0883ed048b06 *ebed90befcd1110883c50c8b4500ff60f089f683c504e9c4ffffffbe04d2110883c50c8b4500ff *60ec89f6f4f60b08ecf60b080000000002000000250000008b46048945fc8b46088945088b7504 *c7450018f70b0883ed08e9d21a040089f618f70b08dcf60b080000000042000000250000000400 *010000000000110000008d45fc3b4354730abe5cd311088b43fcffe08b45008945fcc7450000d2 *110883ed04b84cee0b08ebe79090900b00020000000000110000008d45fc3b4354730abe60d311 *088b43fcffe08b45008945fc8b4504894500c74504c8f70b0883ed04b80cf80b08ebe190000000 *002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8e4bb *0b088977fc8b450089078d77f883c5088b4500ebe4900b00020000000000110000008d45ec3b43 *54730abe64d311088b43fcffe08b7504c745fc44f90b0883ed048b06ebed90c7450800d21108be *00d2110883c508ff650489f602000000150000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46088945f48b46048945f083ed10b890f70b08ebdc9083c7303b7b5c760cc743 *6c0c0000008b43f8ffe0c747d44cf80b088b450c8947d88b45048947dcc747e0985f10088d47d4 *8947e4c747ec0c5f10088947f0c747f87cdc0b088b45108947fc8d47ec89078d47e08945108d77 *f883c5108b4504ebb18d76008b4508894510be00d2110883c510ff65048d7600e0f80b087cf80b *080000000004000000250000008b46048945f48b46088945fc8975008b46048945088b7504c745 *f808f90b0883ed10e9d91804009008f90b0830f80b080000000042000000250000000b00020000 *000000110000008d45fc3b4354730abe68d311088b43fcffe08b45008945fc8b4504894500c745 *0488f90b0883ed04b8ccf90b08ebe190000000002400000083c70c3b7b5c7615c7436c03000000 *c74320fe000001b8b03d1008ffe0c747f8e4bb0b088977fc8b450089078d77f883c5088b4500eb *e4900b00020000000000110000008d45ec3b4354730abe6cd311088b43fcffe08b7504c745fc04 *fb0b0883ed048b06ebed90c7450800d21108be00d2110883c508ff650489f68b4504894510be00 *d2110883c510ff65048d760002000000150000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46088945f48b46048945f083ed10b850f90b08ebdc9083c7303b7b5c760cc743 *6c0c0000008b43f8ffe0c747d420fa0b088b450c8947d88b45088947dcc747e0985f10088d47d4 *8947e4c747ec0c5f10088947f0c747f87cdc0b088b45108947fc8d47ec89078d47e08945108d77 *f883c5108b4504ebb18d760050fa0b0804fa0b080000000004000000250000008b46048945f489 *75fc8b46088945008b46048945088b7504c745f8c8fa0b0883ed10e91917040090c8fa0b08f0f9 *0b080000000042000000250000000b00020000000000110000008b7500c7450024fb0b08ff2601 *00000024000000837e0400780d8b4604894500b838ce0c08ffe0be00d2110883c5088b45008b40 *f0ebee900b00020000000000110000008b7500c7450068fb0b08ff260100000024000000837e04 *007910be00d2110883c5088b45008b40f0ffe08b4604894500b85cd00c08ebf1900b0002000000 *0000110000008d45f03b4354730abe78d311088b43fcffe08b7504c745fc28fc0b0883ed048b06 *ebed90be00d2110883c50c8b4500ff60f089f68b750483c510ff2683c508e9bcffffffd4fb0b08 *ccfb0b080000000003000000250000008b46048945f88975008b46088945088b7504c745fcf0fb *0b0883ed0ce9f71504008d7600f0fb0b08bcfb0b080000000042000000250000000b0002000000 *00001100000083c7103b7b5c7611c7436c04000000be7cd311088b43fcffe0c747f4c86b10088b *45008947f88b45048947fc8d47f4890789c683c504b89c071008ebda8d76000400010000000000 *1100000083c70c3b7b5c7611c7436c03000000be80d311088b43fcffe0c747f87cdc0b088b4500 *8947fc8d47f8890789c683c504b87cdc0b08ebe0900b00020000000000110000008b7500c74500 *0cfd0b08ff2601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f483ed0cb880fc0b08ebe28d7600010000002400000083c70c3b7b5c760cc7436c03 *0000008b43f8ffe0837e04007913be00d2110883c50883ef0c8b45008b40f0ebe5c747f8d8fc0b *088b45048947fc8d47f88945048b4604894500b85cd00c08ebc590909004000100000000001100 *00008d45f83b4354730abe88d311088b43fcffe0c745fc000000008b45008945f8c74500a0fd0b *0883ed08b804ee0b08ebe0000000002400000083c7083b7b5c760ec7436c02000000b8f0371008 *ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea90900400010000000000110000008b7500 *c7450018fe0b08ff26be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f0 *89f6f4fd0b08e4fd0b08000000000000000025000000e0da110818fe0b08040001000000000011 *0001008d45fc3b4354730abe90d311088b43fcffe08b7500c7450080fe0b088b06ebf0bee0da11 *0883c504ff2689f68b46088945008b46048945fc83ed04e994ce000058fe0b084cfe0b0818fe0b *080000000025000100d0da110880fe0b080400010000000000110001008d45fc3b4354730abe98 *d311088b43fcffe08b7500c74500e8fe0b088b06ebf0bed0da1108e9de08040089f68b46088945 *008b46048945fc83ed04e900cf0000c0fe0b08b4fe0b0880fe0b080000000025000100c0da1108 *e8fe0b080400010000000000110001008b7500c7450030ff0b08ff26bec0da110883c504ff2689 *f68b760883c504ff2614ff0b0808ff0b08e8fe0b08000000002500010017000400000000001100 *0000e99bcc00008d76001600030000000000110000008d45fc3b4354730abeacd311088b43fcff *e08b7504c745fcfc000c0883ed048b06ebed90be00d2110883c5108b4500ff60f089f6be00d211 *0883c5108b4500ff60f089f616000300010000000c00000083c71c3b7b5c760cc7436c07000000 *8b43fcffe0c747e8c86b10088b46048947ec8b45008947f08b45048947f4c747f87cdc0b088d47 *e88947fc8b450889078d77f883c50c8b45008b40ecebc58d760003000000120000008d45e83b43 *54720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fca0 *ff0b088b460489078b460c8945f48b46088945f0c745ec00d211088d47fc8945e883ed18b8dccb *0c08ebc39083c72c3b7b5c760cc7436c0b0000008b43f8ffe0c747d8f8ff0b088b45048947dc8b *45088947e08b46088947e4c747e8c86b10088b45048947ec8b450c8947f08b46048947f4c747f8 *7cdc0b088d47e88947fc8d47d889078d77f883c5108b45008b40ecebac89f650000c0884ff0b08 *0000000003000000250000008b46088945088b550c8b460489450c89d6c74500cc000c08ff2689 *f6cc000c0874ff0b080000000043000000250000000b00020000000000110000008d45fc3b4354 *730abeb0d311088b43fcffe08b7500c7450034020c088b06ebf0be00d2110883c5088b4500ff60 *f089f6be00d2110883c50c8b4500ff60f089f602000000150000008d45e83b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945f48b46048945f0c745ec00d21108c745e804db1108 *83ed18b8dccb0c08ebce8d760083c7243b7b5c760cc7436c090000008b43f8ffe0c747e050010c *088b45048947e48b46088947e8c747ece4bb0b088b45088947f08b46048947f4c747f87cdc0b08 *8d47ec8947fc8d47e089078d77f883c50c8b45008b40ecebb889f690010c0838010c0800000000 *02000000250000008b46088945008b55048b460489450489d6c745fc00020c0883ed04ff268d76 *0000020c0828010c080000000001000000250000000b00020000000000110000008d45f03b4354 *730abeb4d311088b43fcffe08b7504c745fc50030c0883ed048b06ebed90be00d2110883c50c8b *4500ff60f089f68b450489450c83c508e9beffffff89f602000000150000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b840020c08ebdc *9083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec8c020c088b45088947f08b45048947 *f4c747f87cdc0b088b450c8947fc8d47ec89078d77f883c5108b45008b40ecebcb90bc020c0874 *020c080000000003000000250000008b46048945f88b46088945008b46048945088b7504c745fc *18030c0883ed0ce9cc0e040018030c0864020c0800000000420000002500000004000100000000 *00110000008d45fc3b4354730abeb8d311088b43fcffe08b7500c745005c050c088b06ebf0be00 *d2110883c5048b4500ff60f089f6be00d2110883c5088b4500ff60f089f68b750883c50cff2683 *c7183b7b5c760cc7436c060000008b43f8ffe0c747ec8c6b10088b45048947f08b46088947f4c7 *47f87cdc0b088b46048947fc8d47ec89078d77f883c50c8b45008b40ecebcb90a4030c089c030c *0800000000020000002500000004000100010000000c0000008d45f83b435473058b43fcffe089 *75fc8b55008b460489450089d6c745f800040c0883ed088b06ebe28d760083c7143b7b5c760cc7 *436c050000008b43f8ffe0c747f08c6b10088b45048947f48b46088947f8c747fc0c040c088d47 *f089078b46048945048d77fc83c504b80c040c08ebcc89f638040c088c030c0800000000010000 *002500000004000100000001000b0000008d45fc3b435473058b43fcffe08b450089750089c6c7 *45fc94040c0883ed048b06ebe89001000100130000008d45f43b4354720883c7083b7b5c760cc7 *436c020000008b43f8ffe08d45f8c700d46d1008897004c747fca0040c088b46048945f48d77fc *83ed0cb8a0040c08ebd889f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8cc040c08 *8b46088947fc8d47f88945008b46048945fc83ed04b82cda0b08ebdb9010050c087c030c080000 *00000000000025000000b864050c08ffe090833dc817120800753cc705c817120801000000c745 *000cde0b0883c504c74500a01f0c0883c504c74500b4ed0b0883c504c74500d8c80b0883c504c7 *450064de0b0883c50483ed04ff65009000000100030000008b4500ff60f089f6000001000a0000 *008b4500ff60f090900900000001000000ff6500900900000009000000ff650090b8f0050c08ff *e090833dcc171208007546c705cc17120801000000c7450064050c0883c504c74500b4060c0883 *c504c74500281f0c0883c504c74500b4ed0b0883c504c74500d8c80b0883c504c7450064de0b08 *83c50483ed04ff65009090900400010000000000110000008d45fc3b4354730abe14d411088b43 *fcffe08b7500c745007c060c088b06ebf00000000024000000837e04007417c7450000d211088b *46048945fc83ed04b84cce0b08ffe0be00d2110883c5048b45008b40f0ebee909090b8b4060c08 *ffe090833dd0171208007514c705d017120801000000c74500d8c80b0883c50483ed04ff650090 *0000010003000000ff650090000001000a000000ff6500900000010003000000ff650090000001 *000a000000ff650090b810070c08ffe090833dd4171208000f8596000000c705d4171208010000 *00c7450064de0b0883c504c74500642e0c0883c504c74500d8c80b0883c504c745005c890c0883 *c504c74500a01f0c0883c504c74500b4ed0b0883c504c74500b0df0b0883c504c745000c1e0c08 *83c504c7450064050c0883c504c74500247a0c0883c504c7450094b40b0883c504c74500305f0c *0883c504c74500a86b0c0883c504c74500e84e0c0883c50483ed04ff650090909018d4110840d7 *110870d6110868d61108bc070c08040001000000000011000f008b7500c74500900b0c08ff26be *7cd6110883c504ff650090bc070c0801000100130001008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b46048945f483ed0cb8dc070c08ebe28d7600be78d6110883c5088b4500 *ff60e889f68b750483c508ff263c080c082c080c080000000001000000250000008b4604894500 *8b45048945fcc7450458080c0883ed04e9d5c6ffff90be78d6110883c50c8b4500ff60e889f674 *080c0874080c0874080c0874080c0858080c0874080c0874080c0874080c080000000002000000 *2500000004000100020000000e0000008d45f43b435473058b43fcffe08b46088945fc8b55008b *460489450089d6c745f8b0080c0883ed088b06ebdfc0070c0804000000120001008d45f43b4354 *720883c71c3b7b5c760cc7436c070000008b43f8ffe08d45f8c700d46d1008897004c747e8c86b *10088b460c8947ec8b46048947f08b46088947f4c747f8bc080c088d47e88947fc8b461089078d *47f88945f483ed0cb85c6c0c08ebb790c0070c0804000000120005008d45f03b4354720883c714 *3b7b5c760cc7436c050000008b43f8ffe08d45f8c700d46d1008897004c747f0f4080c088b4604 *8947f48b46088947f88b460c8947fc8b461089078d47f08945f4c745f098db110883ed10b83851 *0c08ebbd8d760004000100010000000c0000008b760483c504ff26c4070c080400010001000000 *0c0001008d45f83b435473058b43fcffe0c745fc081210088b45008945f88b460489450083ed08 *b8385d0c08ebe189f6c0070c08030000002400070083c7383b7b5c760cc7436c0e0000008b43f8 *ffe0c747cc8c6b10088b45048947d08b450c8947d4c747d864090c088b45088947dc8b450c8947 *e08b46088947e48b46048947e8c747ecd0090c088d47d88947f0c747f4e8090c088d47ec8947f8 *c747fcc05e0c088d47f489078d47cc89450c8d47fc89450883c508b838510c08eb9089f6c0070c *0804000100030000000b0007008d45f43b435473058b43fcffe08b46088945f88b46048945fc8b *760cc745f4200a0c0883ed0c8b06ebe189f6c0070c0804000100020000000e00070083c71c3b7b *5c760cc7436c070000008b43fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f4b40a *0c088b45008947f88d47e88947fc8b460889078d77f483c5048b4500ebc889f683c7183b7b5c76 *0cc7436c060000008b43f8ffe0c747ec00080c088b46088947f0c747f8f00a0c088d47ec8947fc *8b460489078d77f883c5048b4500ebd489f63c0b0c08e8070c08bc070c080000000025000f0048 *d7110868d61108900b0c0804000100000000001100030083c7183b7b5c7611c7436c06000000be *20d411088b43fcffe0c747ecf80b0c088d47f88947f0c747f8bc0c0c088b45008947fc8d47ec89 *078d77f883c5048b4500ebd490900b0c0801000100130001008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb808e00c08ebe28d7600897500e90c45000024 *0c0c08240c0c08240c0c08240c0c08240c0c08940b0c080100000025000100940b0c0804000100 *020000000e0001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8 *8c6b10088b46088947fc8b450089078b45008945f88d47f88945008b7604c745fc4c0c0c0883ed *0cb808121008ebcc89f6940b0c0804000100020000000e00010083c7243b7b5c760cc7436c0900 *00008b43fcffe0c747e08c6b10088b46048947e48b45008947e8c747ec8c6b10088b46088947f0 *8b45008947f4c747f85c0c0c088d47e08947fc8d47ec89078d77f883c5048b4500ebbb9048d711 *08140d0c080b000200000000001100010083c504e9e067000054d211086cdb11087cdb110870d6 *1108300d0c080b0002000000000011000f008b7500c74500540e0c08ff26897500e9c84100005c *0d0c085c0d0c085c0d0c085c0d0c085c0d0c080000000001000000250000003c0d0c0802000000 *150001008d45e43b435473058b43f8ffe08d45f8c700d46d1008897004c745ec90db1108c745e8 *90d611088b46088945f48b7604c745f0840d0c0883ed1cb814161008ebca8d7600c745006cdb11 *08be54d2110883ed04e9200404008b750483c504e9a9f9030090c745047cdb1108be54d21108e9 *030404008d7600f40d0c08e80d0c08300d0c0801000000250005008b46048945008b7608c745fc *1c0e0c0883ed04ff268d76001c0e0c08d40d0c08300d0c080000000025000700300d0c08010000 *0024000f0083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8900d0c088b460c8947fc8b *450489078d47f8894500c74504480e0c08b8f0dd0c08ebd890900400010000000000110000008d *45fc3b4354730abe38d411088b43fcffe08b7500c74500c40e0c088b06ebf00000000024000000 *c7450090d611088b760483ed04e9320304009090acdb1108d80e0c080400010000000000110001 *0083c70c3b7b5c7611c7436c03000000be3cd411088b43fcffe0c747f8246010088b45008947fc *8d47f8894500b8d0e30c08ebe4900400010000000000110000008d45fc3b4354720883c70c3b7b *5c7611c7436c03000000be44d411088b43fcffe0c747f89c0f0c088b45008947fc8d47f8894500 *be60d6110883ed04b808121008ebdc900000000024000000c7450064d61108c745fc64db11088b *761083ed08e9830604008d760001000100130000008d45ec3b435473058b43f8ffe08d45f8c700 *d46d10088970048b7604c745f4780f0c0883ed0c8b06ebe190900b000200000000001100000083 *c70c3b7b5c7611c7436c03000000be48d411088b43fcffe0c747f83c100c088b45008947fc8b45 *0489078d47f8894504be60d61108b808121008ebda8d760001000000240000008b4504894500c7 *450464d611088b760c83ed04e9e005040002000000150000008d45ec3b435473058b43f8ffe08d *45f8c700d46d10088970048b46088945f48b7604c745f01c100c0883ed108b06ebdb5061747465 *726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174204748 *432f526561642e6c68733a333231004a757374004e6f7468696e67005061747465726e206d6174 *6368206661696c75726520696e20646f2065787072657373696f6e206174204748432f52656164 *2e6c68733a3332350090acdb110848d7110820d4110880d61108f0100c08040001000000000011 *000f0083c7403b7b5c7611c7436c10000000be7cd411088b43fcffe0c747c418160c088b450089 *47c8c747d0f41d0c088d47e48947d48d47ec8947d88d47c48947dc8d47f88947e0c747e490160c *088d47d08947e8c747ecb8160c088947f0c747f8f0160c088947fc89c683c504b8f41d0c08eba5 *89f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460489 *45f483ed0cb8a81d0c08ebe28d760000000200120000008d45f43b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f4b4100c0883ed0cb864d60b08ebe189f68b4504894508be9cd61108 *83c504e9090004009016000300000001000b00000083c7083b7b5c760cc7436c020000008b43fc *ffe0c747fc94b90b088b450089078d47fc894500b8d0620c08ebe58d760001000100130000008d *45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4be8cd6110883ed10b8 *08121008ebdd89f683c7143b7b5c760cc7436c050000008b43f8ffe0c747f00c120c08c747f844 *120c088b45088947fc8d47f08945088d47f8894504bea4d61108b814161008ebd274120c08ec11 *0c080000000002000000250000008b45048945008975fcc74504c8120c0883ed04e968bcffffc8 *120c08c8120c08000000000300000025000000c745f8a7100c088b4604894500c745fcf4120c08 *83ed08e954c3ffff8b4504894508be9cd6110883c504e9e5fe03009010130c0810130c0810130c *0810130c08f4120c0810130c0810130c0810130c08000000000200000025000000040001000100 *00000c0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8c011 *0c088d47f88945fc8b55008b460489450089d6c745f850130c0883ed088b06ebd889f6f4100c08 *01000100130001008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4 *c745f028d41108bea4d6110883ed14b814161008ebd68d7600f4100c0801000100130001008d45 *f03b4354720883c7203b7b5c760cc7436c080000008b43f8ffe08d45f8c700d46d1008897004c7 *47e48c110c088b46048947e8c747f05c130c088d47e48947f4c747f8ac130c088d47f08947fc8d *47f88945f4c745f0c4d4110883ed10b894600c08ebb489f600000200120000008d45f43b435473 *058b43f8ffe08d45f8c700d46d1008897004c745f46c100c0883ed0cb864d60b08ebe189f6be9c *d61108e972fd030089f6c74504e0d01108bea0d61108e95ffd03008d760098140c088c140c0800 *00000001000000250000008b45048945008975fcc74504c0140c0883ed04e970baffffc0140c08 *c0140c08000000000200000025000000c745f8ac100c088b4604894500c745fcec140c0883ed08 *e95cc1ffffbe9cd61108e9f6fc030089f608150c0808150c0808150c0808150c08ec140c080815 *0c0808150c0808150c0800000000010000002500000004000100000001000b0000008d45f43b43 *54720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f860140c088b75008d47f8894500 *c745fc40150c0883ed048b06ebe089f6f4100c0801000100130001008d45ec3b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f4c745f028d41108bea4d6110883ed14b8141610 *08ebd68d7600fc100c0802000000150001008d45ec3b435473058b43f8ffe08d45f8c700d46d10 *088970048b46088945f48b46048945f0be80d6110883ed14b814161008ebd7f4100c0801000100 *130007008d45f43b4354720883c72c3b7b5c760cc7436c0b0000008b43f8ffe08d45f8c700d46d *1008897004c747d8f0130c088b46048947dcc747e44c150c08c747ec94150c088d47e48947f0c7 *47f8d8150c088d47ec8947fc8d47d889078d47f88945f483ed0cb8a80b0c08ebaf900400010001 *0000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04b8d40f0c08ebee8d7600 *01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4 *83ed0cb82c0f0c08ebe28d7600f0100c0801000100130001008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb8ec0e0c08ebe2909090acdb11081c170c0804 *000100000000001100010083c7403b7b5c7611c7436c10000000be84d411088b43fcffe0c747c4 *ac170c088b45008947c8c747d0f41d0c088d47e48947d48d47ec8947d88d47c48947dc8d47f889 *47e0c747e4e4170c088d47d08947e8c747ec0c180c088947f0c747f844180c088947fc89c683c5 *04b8f41d0c08eba589f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b46048945f483ed0cb8d01d0c08ebe28d760004000100010000000c0000008d45fc3b *435473058b43fcffe08b46048945fc83ed04b8d40f0c08ebee8d760001000100130000008d45f4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb82c0f0c08ebe28d *76001c170c0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f483ed0cb8ec0e0c08ebe29090905061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174204748432f526561642e6c68733a34363100 *90acdb110848d7110848d7110820d41108ac180c080b0002000000000011000f0083c7403b7b5c *7611c7436c10000000bea4d411088b43fcffe0c747c4b81c0c088b45008947c88b45048947ccc7 *47d0f41d0c088d47e48947d48d47ec8947d88d47c48947dc8d47f88947e0c747e4101d0c088d47 *d08947e8c747ec381d0c088947f0c747f8701d0c088947fc89c683c508b8f41d0c08eb9f010001 *00130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0c *b8a81d0c08ebe28d760000000200120000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f470180c0883ed0cb864d60b08ebe189f68b450889450cbe9cd6110883c508e949 *f803009016000300010000000c00000083c70c3b7b5c760cc7436c030000008b43fcffe0c747f8 *e4bb0b088b46048947fc8b450089078d47f8894500b8d0620c08ebdf9083c7083b7b5c760cc743 *6c020000008b43f8ffe0c747fccc190c088b450489078b450c8945088d47fc89450cbea4d61108 *83c504b814161008ebd7908b450889450cbe9cd6110883c508e9b9f70300903c1a0c08001a0c08 *0000000003000000250000000400000024000000837e042c75118b7504c74504641a0c0883c504 *8b06ffe08b450c894510be9cd6110883c50cb808121008ebe98b46088945008b7604c745fc6c1a *0c0883ed04ff268d7600981a0c08ac190c080000000003000000250000008b7604c74500c41a0c *08ff268b450889450cbe9cd6110883c508e925f7030090d01a0c08d01a0c08d01a0c08d01a0c08 *d01a0c08c41a0c08d01a0c08d01a0c0800000000030000002500000004000100020000000e0000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f880190c088b4608 *8945f88d47f88945fc8b55008b460489450089d6c745f4101b0c0883ed0c8b06ebd2b0180c080b *000200010000000c0001008d45fc3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0 *c747f81c1b0c088b46048947fc8b450089078d47f8894500c745fc28d4110883ed04b8f0620c08 *ebd58d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *46048945f483ed0cb8a81d0c08ebe28d760002000000150000008d45ec3b435473058b43f8ffe0 *8d45f8c700d46d10088970048b46088945f48b46048945f0bea4d6110883ed14b814161008ebd7 *b0180c0802000000150003008d45f43b4354720883c72c3b7b5c760cc7436c0b0000008b43f8ff *e08d45f8c700d46d1008897004c747d84c190c088b46088947dcc747e4741b0c088d47d88947e8 *c747ecc41b0c088b46048947f0c747f8f81b0c088d47ec8947fc8d47e489078d47f88945f483ed *0cb808e00c08eba98d7600b0180c0802000000150007008d45f43b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8381c0c088b46048947fc8b46 *0889078d47f88945f483ed0cb8a80b0c08ebd089f604000100010000000c0000008d45fc3b4354 *73058b43fcffe08b46048945fc83ed04b8d40f0c08ebee8d760001000100130000008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb82c0f0c08ebe28d7600 *ac180c0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46 *048945f483ed0cb8ec0e0c08ebe29090900400010000000000110000008b7500c74500bc1d0c08 *ff2600000000240000008b760ce9d8e903000400010000000000110000008b7500c74500e41d0c *08ff2600000000240000008b7610e9b0e903000400000001000000ff6500900400000009000000 *ff650090b80c1e0c08ffe090833dd8171208007546c705d817120801000000c745000cde0b0883 *c504c74500a01f0c0883c504c74500b4ed0b0883c504c7450064050c0883c504c74500d8c80b08 *83c504c7450064de0b0883c50483ed04ff65009090901600030000000000110000008d45fc3b43 *54730abeb4d411088b43fcffe08b7504c745fce41e0c0883ed048b06ebed900100000024000000 *8b7624e964f3030002000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *70048b46088945f48b7604c745f09c1e0c0883ed108b06ebdb430000002400000083c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8ac1e0c088b45048947fc8b450c89078d47f889450c8b *762483c508b808121008ebd9909090b8281f0c08ffe090833ddc171208007528c705dc17120801 *000000c74500a01f0c0883c504c7450064050c0883c504c74500d8c80b0883c50483ed04ff6500 *90b8681f0c08ffe090833de017120800751ec705e017120801000000c74500281f0c0883c504c7 *4500d8c80b0883c50483ed04ff6500909090b8a01f0c08ffe090833de4171208007546c705e417 *120801000000c74500247a0c0883c504c74500b4ed0b0883c504c7450094b40b0883c504c74500 *0cde0b0883c504c74500d8c80b0883c504c7450064de0b0883c50483ed04ff6500909090040001 *00000000001100000083c70c3b7b5c7611c7436c03000000beb8d411088b43fcffe0c747f87cdc *0b08c747fc54dc11088b450089078d77f883c5048b45008b40ecebdd90900b0002000000000011 *0000008b7500c7450050210c08ff268b750483c504e939e703009002000000150000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8 *7cdc0b08c747fc44dc11088b460489078d47f88945f48b760883ed10b808121008ebcc89f60400 *0100010000000c00000083c7183b7b5c760cc7436c060000008b43fcffe0c747ec6c200c088b45 *008947f08b46048947f4c747f87cdc0b08c747fc4cdc11088d47ec89078d77f883c5048b45008b *40ecebca83c7083b7b5c760cc7436c020000008b43f8ffe0c747fcc8200c088b450489078d77fc *83c5088b4500ebe79010210c0858200c080000000001000000250000000b000200000000001100 *0000e9cbb8ffff9090905cdc110864210c081600030000000000110001008d45fc3b4354730abe *ccd411088b43fcffe08b7504c745fc08240c0883ed048b06ebed90c745085cdc110883c508e981 *b8ffff9083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc74dc11088b *450489078d77f883c5108b45008b40ecebdd8d760004000000120000008d45ec3b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f88c6b10088b46 *0c8947fc8b460889078d47f88945f48b46048945f08b761083ed14b814161008ebc79083c7203b *7b5c760cc7436c080000008b43f8ffe0c747e4ec210c088b46048947e88b46088947ec8b450c89 *47f08b45088947f4c747f87cdc0b08c747fc7cdc11088d47e489078d77f883c5108b45008b40ec *ebbe40220c08ac210c0800000000030000002500000004000100020000000e0000008d45f43b43 *5473058b43fcffe08b46088945f88b46048945fc8b450089750089c6c745f4a8220c0883ed0c8b *06ebdc9003000000120000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e08d45f8c700d46d1008897004c747f8b4220c088b46048947fc8b460889078b460c8945f48d77 *f883ed0cb8b4220c08ebcd8d760004000000120000008d45ec3b4354720883c7103b7b5c760cc7 *436c040000008b43f8ffe08d45f8c700d46d1008897004c747f4ec220c088b46088947f88b460c *8947fc8b461089078d47f48945f48b46048945f08b760883ed14b814161008ebc18d760083c720 *3b7b5c760cc7436c080000008b43f8ffe0c747e444230c088b46048947e88b45048947ec8b450c *8947f08b46088947f4c747f87cdc0b08c747fc6cdc11088d47e489078d77f883c5108b45008b40 *ecebbea0230c089c210c0864210c08430000002500010004000100000000001100000083c7143b *7b5c7611c7436c05000000bed4d411088b43fcffe0c747f05c240c088b45008947f4c747fc9424 *0c088d47f089078d77fc83c5048b4500ebda8d760001000100130000008d45f43b435473058b43 *f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8d4fb0c08ebe28d76000400010001 *0000000c0000008d45f83b435473058b43fcffe08b45008945fcc7450000d211088b760483ed08 *b814161008ebe4905cdc1108bc240c0804000100000000001100010083c73c3b7b5c7611c7436c *0f000000bed8d411088b43fcffe0c747c848250c088b45008947ccc747d480250c088d47c88947 *d8c747dc4c2d0c088d47d48947e08d47ec8947e48d47f88947e8c747ec90250c088d47dc8947f0 *c747f8c8250c088947fc89c683c504b84c2d0c08eba89001000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8282d0c08ebe28d7600040001 *00010000000c0000008b7604e914e2030001000100130000008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb814240c08ebe28d7600bc240c080100010013 *0001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb824 *fc0c08ebe29090904a75737420004e6f7468696e670089f65cdc110804260c0804000100000000 *001100010083c7303b7b5c7611c7436c0c000000be1cd511088b43fcffe0c747d4b4280c088b45 *008947d8c747dc4c2d0c088d47d48947e08d47ec8947e48d47f88947e8c747ece4280c088d47dc *8947f0c747f81c290c088947fc89c683c504b84c2d0c08ebb589f6897500e9d8faffff7c260c08 *7c260c08000000000100000025000000c74504fa250c08c7450898260c0883c504e9b6afffff89 *f602000000150000008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f4c745f0acdc1108c745ec141610088b46048945e883ed18b8002d0c08ebce8d76000000020012 *0000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4f4250c0883ed0cb8 *64d60b08ebe189f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *70048b46048945f4bec0d4110883ed10b808121008ebdd89f602000000150000008d45ec3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f0be48d1110883ed14 *b814161008ebd701000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *04c745f4c4d411088b46048945f083ed10b8d88b0c08ebdb01000100130000008d45f03b435473 *058b43f8ffe08d45f8c700d46d10088970048b46048945f4bebcd4110883ed10b808121008ebdd *89f683c7483b7b5c760cc7436c120000008b43f8ffe0c747bcb8260c088b45088947c08b460489 *47c4c747c800270c08c747d434270c088d47c88947d8c747e06c270c088d47d48947e48d47bc89 *47e8c747eca8270c088b45048947f0c747f8e0270c088d47ec8947fcc74508081210088d47e089 *45048d47f8894500b8bcc90b08eb9089f610280c0898260c080000000003000000250000001600 *0300010000000c0000008d45fc3b435473058b43fcffe08b55048b460489450489d6c745fca828 *0c0883ed048b06ebe589f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b46048945f483ed0cb814240c08ebe28d760004260c0801000100130001008d45f4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb824fc0c08ebe290 *90905cdc110848290c080b000200000000001100010083c74c3b7b5c7611c7436c13000000be24 *d511088b43fcffe0c747b8e8290c088b45048947bcc747c41c2a0c088b45008947c8c747d05c2c *0c088d47b88947d48d47c48947d8c747dc4c2d0c088d47d08947e08d47ec8947e48d47f88947e8 *c747ec902c0c088d47dc8947f0c747f8c82c0c088947fc89c683c508b84c2d0c08eb9589f60100 *0100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed *0cb8d4fb0c08ebe28d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b46048945f483ed0cb8d4fb0c08ebe28d760000000200120000008d45f03b435473 *058b43f8ffe08d45f8c700d46d1008897004c745f444dc1108bea8dc110883ed10b808121008eb *dc9002000000150000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460889 *45f48b46048945f0be48d1110883ed14b814161008ebd700000200120000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f47cdc1108bea8dc110883ed10b808121008ebdc *9002000000150000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f48b46048945f0be48d1110883ed14b814161008ebd702000000150000008d45ec3b435473058b *43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f0be48d1110883ed14b81416 *1008ebd700000200120000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745 *f44cdc1108bea8dc110883ed10b808121008ebdc90030000002400000083c7603b7b5c760cc743 *6c180000008b43f8ffe0c747a4502a0c08c747b08c6b10088b45088947b48b46088947b8c747bc *882a0c088d47b08947c08d47a48947c4c747c8c42a0c08c747d4fc2a0c088d47c88947d88d47bc *8947dcc747e08c6b10088b45048947e48b46048947e8c747ec382b0c088d47e08947f08d47d489 *47f4c747f8742b0c088d47ec8945088d47f889450483c504b8d0c90b08e971ffffff8d76001600 *0300020000000e0000008d45fc3b435473058b43fcffe08b46088945008b55048b460489450489 *d6c745fcac2b0c0883ed048b06ebdf01000100130000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b46048945f483ed0cb814240c08ebe28d760048290c0801000100130001 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb824fc0c *08ebe29090900400010000000000110000008b7500c74500142d0c08ff2600000000240000008b *7604e980da03000400010000000000110000008b7500c745003c2d0c08ff260000000024000000 *8b760ce958da03000300000001000000ff6500900300000009000000ff650090b8642d0c08ffe0 *90833de8171208007528c705e817120801000000c74500d8c80b0883c504c74500cce70b0883c5 *04c74500b4060c0883c50483ed04ff6500900000010003000000ff650090000001000a000000ff *650090b8bc2d0c08ffe090833dec171208007550c705ec17120801000000c74500cce70b0883c5 *04c74500d8c80b0883c504c74500b0df0b0883c504c74500b4060c0883c504c74500642d0c0883 *c504c7450014300c0883c504c74500f0e90b0883c50483ed04ff650090f0dc11081c2e0c080400 *020000000000110001008d45fc3b4354730abe34d511088b43fcffe08b45008945fcc74500f0dc *110883ed04b870960c08ebe7909090b8642e0c08ffe090833df017120800753cc705f017120801 *000000c7450014300c0883c504c7450064050c0883c504c74500f0e90b0883c504c745000c1e0c *0883c504c74500d8c80b0883c50483ed04ff65009080d81108b02e0c0804000100000000001100 *01008b7500c74500dc2e0c08ff26b02e0c0800000000240001008b4604894500e92dd600009004 *00010000000000110000008b7500c74500082f0c08ff2600000000240000008b4604894500e979 *d60000900400010000000000110000008b7500c74500342f0c08ff2600000000240000008b4604 *894500e99dd60000900400010000000000110000008b7500c74500602f0c08ff26000000002400 *00008b4604894500e9c1d60000900400010000000000110000008b7500c745008c2f0c08ff2600 *000000240000008b460483f80c742a83f80c770f83f80a742083f80a771b83f809eb1483f82074 *1183f820770583f80deb053da00000007510be04d2110883c5048b45008b40ecffe0befcd11108 *83c5048b45008b40f0ebee90900b00030000000000110000008b7500c7450000300c08ff260100 *0000240000008b4604894500e971d6000090b814300c08ffe090833df4171208007564c705f417 *120801000000c745005c890c0883c504c74500a01f0c0883c504c7450010070c0883c504c74500 *0c1e0c0883c504c7450064050c0883c504c745000cde0b0883c504c74500d8c80b0883c504c745 *0010a70b0883c504c7450064de0b0883c50483ed04ff6500900000010003000000ff6500900000 *01000a000000ff6500900000010003000000ff650090000001000a000000ff6500900000010003 *000000ff650090000001000a000000ff6500900000010003000000ff650090000001000a000000 *ff6500900000020006000000ff650090000002000a000000ff650090b808310c08ffe090833df8 *17120800756ec705f817120801000000c74500e84e0c0883c504c74500a86b0c0883c504c74500 *94b40b0883c504c74500a01f0c0883c504c7450064050c0883c504c74500b0df0b0883c504c745 *000c1e0c0883c504c7450010070c0883c504c74500d8c80b0883c504c7450050a70b0883c50483 *ed04ff6500909090b890310c08ffe090833dfc171208000f85c8000000c705fc17120801000000 *c74500a01f0c0883c504c7450064de0b0883c504c74500b0df0b0883c504c745000c1e0c0883c5 *04c7450064050c0883c504c745000cde0b0883c504c7450010070c0883c504c7450078df0b0883 *c504c74500cce70b0883c504c74500d8c80b0883c504c745004c7c0c0883c504c74500f8790c08 *83c504c7450094b40b0883c504c74500247a0c0883c504c7450004aa0b0883c504c7450084770c *0883c504c74500686b0c0883c504c745005c460c0883c504c7450004a10b0883c50483ed04ff65 *0090b874320c08ffe090833d0018120800753cc7050018120801000000c74500f0440c0883c504 *c74500cce70b0883c504c74500ccbe0b0883c504c7450050be0b0883c504c7450090310c0883c5 *0483ed04ff650090ecd711082cdd11083cdd1108c0320c080b000300000000001100070083c70c *3b7b5c7611c7436c03000000be58d511088b43fcffe0c747f8cc350c088b45008947fc8b450489 *078d47f8894504b8e4c10b08ebdfeb5689f6000000002400000083c7083b7b5c7615c7436c0200 *0000c74320ff000000b8b03d1008ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea8d7600 *14330c0800000000000000000000010000000200100000008d45fc3b435473058b43fcffe08b46 *04894424188b460889442414c745fc20330c0883ed048b43608968308b53688d4704894204c744 *240400000000891c24e85e9a03008944240c8b442414894424048b442418890424e86481030089 *442410c7442404000000008b44240c890424e8bd9a03008b43608b683005880000008943548b43 *688b780483ef0489c28b4018c1e00c030283e80489435c8b7424108b4500e964ffffff90210000 *002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f86c330c088b45048947fc8b *460489078d77f883c508b8d46d1008ebdf9001000000240000008b55048b460489450489d6c745 *001c340c08ff2602000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *048b46088945f48b7604c745f058340c0883ed108b06ebdb000000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe0837e0400750dbefcd2110883c50483ef08eb0fc747fc14e90b08 *89378d77fc83c5048b4500ebd7900000000024000000c74500ac340c08ff268d7600c4320c0804 *000200010000000c0003008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0 *c747f874340c088b46048947fc8b450089078d47f88945fcc745f82cdd1108be3cdd1108c74500 *f0340c0883ed0cb84c181008ebc98d7600c0320c0804000200010000000c0007008d45f43b4354 *720883c7083b7b5c760cc7436c020000008b43fcffe0c747fc0c350c088b460489078b45008945 *fc8d47fc894500c745f85cdb1108c745f4f8d7110883ed0cb8b8860c08ebcec0320c0804000100 *020000000e0007008d45f83b4354720883c7143b7b5c760cc7436c050000008b43fcffe0c747f0 *70350c088b45008947f4c747f87cdc0b088b46048947fc8b460889078d47f08945008d47f88945 *fcc745f808d1110883ed08b800880c08ebc24cdd110854dd110824360c08040002000000000011 *0003008d45fc3b4354730abe60d511088b43fcffe08b7500c7450094360c088b06ebf0be54dd11 *0883c504e957ff03008d7600c745004cdd11088975fc83ed04e9668bffff89f66c360c085c360c *0824360c080000000025000300b89c360c08ffe090833d0418120800756ec70504181208010000 *00c74500ccbe0b0883c504c74500cce70b0883c504c7450050be0b0883c504c74500d8480c0883 *c504c745005c460c0883c504c74500884e0c0883c504c74500984a0c0883c504c74500004e0c08 *83c504c74500689d0b0883c504c7450090310c0883c50483ed04ff650090909084dd110884dd11 *089cdd1108b8dd11081c370c08040002000000000011000f0083c7103b7b5c7611c7436c040000 *00be68d511088b43fcffe0c747f428380c088b45008947f8c747fc983b0c088b450089078d47f4 *8943048d77fc83c504b870331008ebd28d760002000000150000008d45f03b435473058b43f8ff *e08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b83c490c08ebdc90010000 *00240000008b06668378fe09754083c7143b7b5c760cc7436c050000008b43f8ffe0c747f08c37 *0c088b45048947f48b46048947f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd2 *89750483c504b874e80b08ebc589f604000200010000000c0000008d45fc3b435473058b43fcff *e08b55008b460489450089d6c745fcc4370c0883ed048b06ebe589f6e9430300008d7600e98f02 *00008d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *46048945f483ed0cb8e04b0c08ebe28d76001c370c0801000100130009008d45ec3b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f868380c088b *46048947fc8d47f88945f4c745f084dd1108beb8dd110883ed14b814161008ebc98d7600010000 *002400000083c504e970afffff04000200010000000c0000008d45f83b435473058b43fcffe08b *7604c745fcfc380c0883ed08b81c091008ebea8d7600eb3a89f624370c0821000000240001008b *45048945008b4604894504e977d500008d760034390c080000000024370c080000010001000100 *0f0001008d45f83b435473058b43fcffe08b46088945fc8b7604c745f844390c0883ed088b06eb *e7eb1a89f694390c08000000000000000000000100010000000c0000008b7604e9c0f703000100 *0100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed *0cb8e04b0c08ebe28d760001000000240000008b750483c508ff65008d76001c370c0801000000 *2400090083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f8c0390c *088b45048947fc8d47f88945fcc745f884dd1108897504beb8dd1108c74500f4390c0883ed0cb8 *4c181008ebcb1c370c082100000024000d0083c7283b7b5c7615c7436c0a000000c74320fe0000 *00b8b03d1008ffe0c747dca0380c088977e0c747e810390c088d47dc8947ecc747f070390c0889 *77f48b45048947f8c747fcb0390c088d47f089078975048d47e88943048d77fcc745000c3a0c08 *b870331008ebb189f658380c08000000001c370c0800000100010001000f000f008d45ec3b4354 *73058b43fcffe0c745f494dd11088b46048945f08b46088945fcc745f8683a0c0883ed10b8e4c1 *0b08ebda8d7600010000002400000083c508ff650089f61c370c080100000024000f0083c70c3b *7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe08d4e08c747f8ec3a0c088b550489 *57fc890f8975048d77f8c74500283b0c08b8fc301008ebd89050380c08000000001c370c080000 *0100010000000c000f008d45f83b435473058b43fcffe08b46048945fcbe04000000c745f83c3b *0c0883ed08b8cc421008ebe2909090c8dd1108c43b0c080400020000000000110001008d45fc3b *4354730abe70d511088b43fcffe08b45008945fcc74500d8dd110883ed04b8e4c10b08ebe79090 *90e0dd1108043c0c0804000200000000001100010083c7143b7b5c7611c7436c05000000be78d5 *11088b43fcffe0c747f0043d0c088b45008947f4c747f8383d0c088b45008947fc8d47f0894304 *8d77f883c504b870331008ebd189f602000000150000008d45f03b435473058b43f8ffe08d45f8 *c700d46d10088970048b46048945f48b46088945f083ed10b83c490c08ebdc9001000000240000 *008b06668378fe09754083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0683c0c088b45 *048947f48b46048947f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd289750483 *c504b874e80b08ebc589f604000200010000000c0000008d45fc3b435473058b43fcffe08b5500 *8b460489450089d6c745fca03c0c0883ed048b06ebe589f6043c0c0801000100130001008d45ec *3b435473058b43f8ffe08d45f8c700d46d1008897004c745f4e0dd11088b46048945f0be08d111 *0883ed14b814161008ebd6909090e8dd1108703d0c0804000200000000001100010083c7143b7b *5c7611c7436c05000000be80d511088b43fcffe0c747f0703e0c088b45008947f4c747f8a43e0c *088b45008947fc8d47f08943048d77f883c504b870331008ebd189f602000000150000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b83c *490c08ebdc9001000000240000008b06668378fe09754083c7143b7b5c760cc7436c050000008b *43f8ffe0c747f0d43d0c088b45048947f48b46048947f8c747fc9ce90b088d47f089078d77fc83 *c508b8c0351008ebd289750483c504b874e80b08ebc589f604000200010000000c0000008d45fc *3b435473058b43fcffe08b55008b460489450089d6c745fc0c3e0c0883ed048b06ebe589f6703d *0c0801000100130001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f4e8 *dd11088b46048945f0be08d1110883ed14b814161008ebd6909090a8dd1108dcd71108f0dd1108 *283f0c0800000000dc3e0c080000010000000000110007008d45f43b4354730abe88d511088b43 *fcffe0bea8dd1108c745fc9c3f0c0883ed048b06ebeb8d7600e9d3ffffff8d7600e43e0c082100 *0000240001008b4604894500e971d6000090e43e0c082100000024000100c745003c3f0c08ff26 *8d7600e03e0c08210000002400030085f6740a897500b8b8150d08ffe0bedcd71108c74500543f *0c08b8c0351008ebeb8d7600e03e0c0800000000240003008b46048945f88b4604894500c745fc *6c3f0c0883ed08e90d45000090f8dd110860dd1108b83f0c0804000200000000001100030083c7 *0c3b7b5c7611c7436c03000000be90d511088b43fcffe0c747f818400c088b45008947fcc74304 *00de11088d77f883c504b870331008ebdd89f6b83f0c0801000100130003008d45e83b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f4a4dd11088b46048945f0c745ec60dd1108bef8 *dd110883ed18b8e41a1008ebcff8dd110874dd110854400c0804000200000000001100030083c7 *0c3b7b5c7611c7436c03000000be98d511088b43fcffe0c747f8b4400c088b45008947fcc74304 *04de11088d77f883c504b870331008ebdd89f654400c0801000100130003008d45e83b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f470dd11088b46048945f0c745ec74dd1108bef8 *dd110883ed18b8e41a1008ebcfb8f8400c08ffe090833d08181208007546c70508181208010000 *00c7450004a10b0883c504c74500cce70b0883c504c74500689d0b0883c504c74500ccbe0b0883 *c504c7450050be0b0883c504c7450090310c0883c50483ed04ff650090909008de110818de1108 *50410c080400010000000000110003008d45f83b4354720883c7283b7b5c7611c7436c0a000000 *bea0d511088b43fcffe0c747dc94b90b088b45008947e0c747e4ece80b08c747e8e0d01108c747 *ec28da1108c747f018de1108c747f408de11088d47dc8947f8c747fc68420c088d47e489078b45 *008945fc8d47fc894500be08d1110883ed08b814161008eba189f6010000002400000083c7083b *7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe085f67519c747fc9ce90b088b4504 *89078d77fc83c508b8c0351008ebe189750483c50483ef08b8b8820c08ebd189f6010000002400 *00008b4604c74500f0410c08890424e88652f8ff89c6ff65009004000200010000000c0000008d *45fc3b435473058b43fcffe08b55008b460489450089d6c745fc44420c0883ed048b06ebe59090 *d0420c0800000000000000000000010000000000110000008d45f03b4354730abea8d511088b43 *fcffe0be04000000c745fca4430c0883ed04b8cc421008ebe8e9d3ffffff8d7600010001001300 *00008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46048945f0 *83ed10b8d81c0d08ebdc90020000002400000083c70c3b7b5c7615c7436c03000000c74320fe00 *0000b8b03d1008ffe0c747f8e0420c088977fc8d77f883c50c8b4500ebe989f623000000240000 *008b45048b008b00894500c7450418430c08e94e3f000089f601000000240000008d56088b4d04 *83c1088975008955fcc745f854430c0883ed0889542404890c24e8bc7c0300ff65000000000024 *000000897500be04000000c745fc74430c0883ed04e911ff030090fc430c080000000000000000 *0000010000000000110000008d45e03b4354730abeacd511088b43fcffe0be04000000c745fcd0 *440c0883ed04b8cc421008ebe8e9d3ffffff8d7600430000002400000083c510ff650089f64300 *0000240000008975fcc745000c440c0883ed04e926d9000089f6a40000002400000083c7083b7b *5c7615c7436c02000000c74320ff000000b8b03d1008ffe08b450c8b108b45048b0083c004c747 *fce0060c0889074ac745001c0910088d47fc8945fc8955f8c745f4f8d71108c745041c440c0883 *ed0cb8e4840c08ebbf01000000240000008b550483c2088d4e088955008975fc894df8c745f438 *440c0883ed0c894c2404891424e8917b0300ff6500900000000024000000897500be04000000c7 *45fc9c440c0883ed04e9e5fd030090b8f0440c08ffe090833d0c18120800751ec7050c18120801 *000000c7450090310c0883c504c74500cce70b0883c50483ed04ff650090909030de110820450c *0804000200000000001100010083c70c3b7b5c7611c7436c03000000beb0d511088b43fcffe0c7 *47f828460c088b45008947fc8d77f8b81c091008ebe7be44de110883c504e9632804008d7600eb *1a89f674450c08000000000000000000000100010000000c0000008b7604e928f0030020450c08 *010000002400010083c7103b7b5c760cc7436c040000008b43f8ffe0837e0400750dbe3cde1108 *83c50883ef10eb1fc747f4a4c40c088b45048947f8c747fc90450c088d47f489078d77fc83c508 *b8d46d1008ebc58d76008975008b7604c745fca4450c0883ed04ff2689f6f4450c0864450c0820 *450c08000000002500010020450c0801000100130001008d45f03b435473058b43f8ffe08d45f8 *c700d46d10088970048b7604c745f41c460c0883ed0c8b06ebe19090b85c460c08ffe090833d10 *18120800756ec7051018120801000000c74500a01f0c0883c504c74500d8480c0883c504c74500 *10070c0883c504c7450064050c0883c504c7450078df0b0883c504c74500281f0c0883c504c745 *00b0ac0c0883c504c74500fce00b0883c504c74500cce70b0883c504c74500d8c80b0883c50483 *ed04ff6500909090a0d2110898d91108dc460c080b00030000000000110003008d45f43b435473 *0abeb8d511088b43fcffe08b45048945f88b45008945f4c745fc30470c0883ed0cb808e70b08eb *e190e0460c084200000024000100c745080a00000083c504e9dd68000090a0d2110868d9110878 *d2110840470c080b00030000000000110007008d45f83b4354730abec0d511088b43fcffe0c745 *fc10d311088b45008945f8c74500ac470c0883ed08b8e0aa0c08ebe048470c0801000000240001 *0083c504e9109bffff40470c0801000000240005008b45048945fc8975f8897504c7450098470c *0883ed08e9419fffff90b0d9110868d91108c8470c080400020000000000110003008d45f83b43 *54730abec8d511088b43fcffe0c745fc0cd311088b45008945f8c745001c480c0883ed08b8e0aa *0c08ebe0c8470c080000000024000100897500e9a86d000068d21108a0d2110898d9110824480c *080400020000000000110007008d45f83b4354730abed0d511088b43fcffe08b45008945fcc745 *f868d21108c745007c480c0883ed08b808e70b08ebe024480c080000000024000500c745000a00 *0000c745fc68d2110883ed04e98a670000909068d21108a0d2110894480c080400020000000000 *110003008d45fc3b4354730abed8d511088b43fcffe0c745fc68d2110883ed04b808e70b08ebed *90b8d8480c08ffe090833d14181208007546c7051418120801000000c7450078df0b0883c504c7 *450084770c0883c504c74500cce70b0883c504c74500d8c80b0883c504c7450094b40b0883c504 *c74500247a0c0883c50483ed04ff65009090900b00020000000000110000008b7500c745005049 *0c08ff26010000002400000083c7203b7b5c760cc7436c080000008b43f8ffe0c747e494b90b08 *8b45048947e8c747ecece80b088b46048947f08b46088947f48b460c8947f88b46108947fc8d47 *e489078d77ec83c5088b4500ebc204000200000000001100000083c7083b7b5c7611c7436c0200 *0000bee4d511088b43fcffe0c747fc404a0c088b45008907c7430448de11088d77fc83c504b870 *331008ebde8d7600eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320fe *000000b8b03d1008ffe0c747fce4a90b0889378d77fc83c5048b4500ebea8d7600e8490c080000 *00000000000000000100010000000c0000008d45f83b435473058b43fcffe08b7604c745fcf449 *0c0883ed08b81c091008ebea909090b86c4a0c08ffe090833d18181208007514c7051818120801 *000000c74500cce70b0883c50483ed04ff650090b8984a0c08ffe090833d1c18120800756ec705 *1c18120801000000c745000c1e0c0883c504c74500cce70b0883c504c7450064050c0883c504c7 *4500d8c80b0883c504c7450094b40b0883c504c7450010a70b0883c504c74500ccbe0b0883c504 *c7450050be0b0883c504c74500004e0c0883c504c7450004a10b0883c50483ed04ff6500909090 *0800030000000000110000008b55008b450483c50889442404891424e8534df8ff89c6ff650090 *9090de1108404b0c0800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8d9b203008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f490de110883ed0cb888c40c08ebc60800030000000000110000008b55008b *450483c5088944240889542404c7042403000000e86f4bf8ff89c6ff6500909004000100000000 *00110000008b7500c74500704c0c08ff26eb5689f6000000002400000083c7083b7b5c7615c743 *6c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea *8d7600ec4b0c08000000000000000000000100000001000d0000008d45f83b435473058b43fcff *e08b46048945f8c745fcf84b0c0883ed08b8ec240d08ebe7000000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe0c747fc444c0c088b460489078d47fc894500b888c40c08ebe590 *90900b00020000000000110000008b7500c74500844d0c08ff26eb5689f6000000002400000083 *c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77 *fc83c5048b4500ebea8d7600b84c0c0800000000000000000000010000000200100000008d45f4 *3b435473058b43fcffe08b46088945f88b46048945f4c745fcc44c0c0883ed0cb82c250d08ebe1 *89f6210000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8104d0c088b45 *048947fc8b460489078d47f889450483c504b888c40c08ebdc89f601000000240000008b55048b *460489450489d6c74500444d0c08ff26b8a04d0c08ffe090833d20181208007546c70520181208 *01000000c74500004e0c0883c504c74500984a0c0883c504c745006c4a0c0883c504c74500ccbe *0b0883c504c7450050be0b0883c504c7450090310c0883c50483ed04ff6500909090b8004e0c08 *ffe090833d2418120800756ec7052418120801000000c7450010070c0883c504c74500a01f0c08 *83c504c745000c1e0c0883c504c7450064050c0883c504c745000cde0b0883c504c74500d8c80b *0883c504c7450010a70b0883c504c745002cbc0b0883c504c74500ccbe0b0883c504c7450050be *0b0883c50483ed04ff6500909090b8884e0c08ffe090833d28181208007546c705281812080100 *0000c7450050be0b0883c504c74500ccbe0b0883c504c745006c4a0c0883c504c74500f01e0d08 *83c504c74500187b0c0883c504c7450090310c0883c50483ed04ff6500909090b8e84e0c08ffe0 *90833d2c181208007528c7052c18120801000000c7450004a10b0883c504c74500d8c80b0883c5 *04c74500642e0c0883c50483ed04ff6500900b00020000000000110000008d45f83b4354730abe *60d611088b43fcffe08b7500c74500d8500c088b06ebf0be00d2110883c5088b4500ff60f089f6 *897500e9c8ffffff5c4f0c085c4f0c085c4f0c085c4f0c085c4f0c080000000001000000250000 *008b46048945fc8b55048b460889450489d6c74500844f0c0883ed08e964c20300844f0c084c4f *0c080000000001000000250000008b55048b460489450489d6c74500b84f0c08ff26897500e958 *ffffffcc4f0c08cc4f0c08cc4f0c08cc4f0c08cc4f0c080000000001000000250000008b450489 *45fc8b7604c74500f44f0c0883ed08e9fcc10300be00d2110883c5088b4500ff60f089f6020000 *00150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b4608 *8945f083ed10b82c4f0c08ebdc9083c7243b7b5c760cc7436c090000008b43f8ffe0c747e02450 *0c088b45048947e48b46088947e8c747ece4bb0b088b46048947f08b45048947f4c747f87cdc0b *088d47ec8947fc8d47e089078d77f883c5088b45008b40ecebb889f68b760483c508ff26b0500c *0854500c080c500c08f44f0c08b84f0c0800000000010000002500000004000100000000001100 *000083c70c3b7b5c7611c7436c03000000be64d611088b43fcffe0c747f8f05e0c088b45008947 *fcc70778d611088d77f883c5048b45008b40e4ebdd909020df110868d6110820510c080b000200 *00000000110003008d45f83b4354730abe68d611088b43fcffe08b7500c745fc205d0c0883ed04 *8b06ebed9024510c0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46088945f48b46048945f083ed10b838510c08ebdc9083c7183b7b5c760cc7436c0600 *00008b43f8ffe0c747ec68510c088b45048947f08b46088947f4c747f8f05e0c088b46048947fc *8d47ec89078d77f883c50c8b45008b40e4ebcb908b750483c508ff268b750483c508ff26897500 *e93488fffff0510c08f0510c0800000000010000002500000003000000120000008d45e83b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46088945ec8b46048945e88b460c8945f4c745 *f00c520c0883ed18b82c4f0c08ebcf04000100020000000e00000083c7183b7b5c760cc7436c06 *0000008b43fcffe0c747ec14520c088b46048947f08b45008947f48b46088947f8c747fc105f0c *088d47ec89078d77fc83c5048b45008b40e0ebcb9083c7143b7b5c760cc7436c050000008b43f8 *ffe0c747f05c520c088b45048947f48b46048947f8c747fcc05e0c088d47f089078d77fc83c508 *8b45008b40ecebd18d7600897500e948feffffe8520c08e8520c08e8520c08e8520c08e8520c08 *24510c08010000002500010024510c0804000100020000000e0001008d45f43b435473058b43fc *ffe08b45008945f88b46088945008b7604c745fc10530c0883ed0cb808121008ebde8d760083c7 *143b7b5c760cc7436c050000008b43f8ffe0c747f020530c088b45048947f48977f8c747fcc05e *0c088d47f089078d77fc83c5088b45008b40ecebd489f6897500e9a0fdffff90530c0890530c08 *90530c0890530c0890530c0824510c08010000002500010024510c0804000100020000000e0001 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f88c6b10088b4608 *8947fc8b450089078b45008945f88d47f88945008b7604c745fcb8530c0883ed0cb808121008eb *cc89f683c7143b7b5c760cc7436c050000008b43f8ffe0c747f0c8530c088b45048947f48b4604 *8947f8c747fcc05e0c088d47f089078d77fc83c5088b45008b40ecebd18d760000000000000000 *000000000018540c0850530c0824510c0801000000250001008b55048b460489450489d6c74500 *7c540c08ff26be20df110883c508ff2689f624510c0804000100020000000e0001008d45fc3b43 *54720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f88c6b10088b46088947fc8b4500 *89078d47f88945008b46048945fc83ed04b838510c08ebd683c7143b7b5c760cc7436c05000000 *8b43f8ffe0c747f0ac540c088b45048947f48b46048947f8c747fcc05e0c088d47f089078d77fc *83c5088b45008b40ecebd18d7600000000000000000000000000f0540c0890540c0820510c0801 *000000250003008b450489750489c6c7450054550c08ff268d760054550c0854550c0854550c08 *7c540c0854550c0820510c0801000000250003008b450489750489c6c7450088550c08ff268d76 *00a4520c0888550c0888550c0888550c0888550c0820510c08010000002500030020510c080200 *0000240003008b7504c74504bc550c0883c504ff26908b450489450889750483c504e94384ffff *8d7600d8550c08d8550c080000000042000000250000008b45088945fc8975f8c7450000560c08 *83ed08e914f9ffff00560c0800560c0800560c0800560c0800560c080000000002000000250000 *0003000000120000008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945 *e88b460c8945f08b46048945f48b7608c745ec38560c0883ed1cb808121008ebcc900400010002 *0000000e00000083c7183b7b5c760cc7436c060000008b43fcffe0c747ec40560c088b45008947 *f08b46048947f48b46088947f8c747fc105f0c088d47ec89078d77fc83c5048b45008b40e0ebcb *9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f08c560c088b45048947f48b46048947 *f8c747fcc05e0c088d47f089078d77fc83c5108b45008b40ecebd18d760083c504e9a8feffffd4 *560c0818570c0818570c0818570c0818570c0820510c0803000000250003008b46048945008b75 *04c745fc40570c0883ed04ff268d760002000000150000008d45f03b435473058b43f8ffe08d45 *f8c700d46d10088970048b46088945f48b46048945f083ed10b82c4f0c08ebdc90030000001200 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008 *897004c747f860570c088b46088947fc8b460c89078d47f88945f48b46048945f083ed10b82cda *0b08ebca04000100020000000e00000083c7183b7b5c760cc7436c060000008b43fcffe0c747ec *98570c088b46048947f08b46088947f48b45008947f8c747fc105f0c088d47ec89078d77fc83c5 *048b45008b40e0ebcb9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0f4570c088b45 *048947f48977f8c747fcc05e0c088d47f089078d77fc83c5088b45008b40ecebd489f6897500e9 *a8f6ffff7c580c087c580c087c580c087c580c087c580c08000000000100000025000000020000 *00150000008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46048945ec8b4604 *8945f48b7608c745f0a4580c0883ed18b808121008ebd28d760003000000120000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8ac *580c088b46088947fc8b460c89078d47f88945f48b46048945f083ed10b82cda0b08ebca040001 *00020000000e00000083c7183b7b5c760cc7436c060000008b43fcffe0c747ecf0580c088b4604 *8947f08b45008947f48b46088947f8c747fc105f0c088d47ec89078d77fc83c5048b45008b40e0 *ebcb9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f04c590c088b45048947f48b4604 *8947f8c747fcc05e0c088d47f089078d77fc83c5088b45008b40ecebd18d760002000000150000 *008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083 *ed10b82cda0b08ebdc9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0e0590c088b45 *048947f48b46048947f8c747fc105f0c088d47f089078d77fc83c5088b45008b40e0ebd18d7600 *105a0c08000000000000000094590c083c580c080000000001000000250000008b46048945088b *7504c74504745a0c0883c504ff268d7600e937fbffff8d7600745a0c088c5a0c088c5a0c084057 *0c088c5a0c0820510c0802000000250003008975008b7504c745fcb45a0c0883ed04ff2689f6b4 *5a0c08b45a0c08e8510c08b45a0c08b45a0c0820510c0801000000250003008b450489750489c6 *c74500e85a0c08ff268d7600e85a0c08e85a0c08e0510c08e85a0c08e85a0c0820510c08010000 *00250003008975088b7504c745041c5b0c0883c504ff2689f61c5b0c0898510c081c5b0c081c5b *0c081c5b0c0820510c08420000002500030020510c0802000000240003008b7508c74500505b0c *08ff26897500e9c8f5ffff685b0c08685b0c08685b0c08685b0c08685b0c0824510c0801000000 *2500010024510c0804000100020000000e0001008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43fcffe0c747f88c6b10088b46088947fc8b450089078b45008945f88d47f8894500 *8b7604c745fc905b0c0883ed0cb808121008ebcc89f683c7143b7b5c760cc7436c050000008b43 *f8ffe0c747f0a05b0c088b45048947f48b46048947f8c747fca05e0c088d47f089078d77fc83c5 *108b45008b40f0ebd18d760083c504e920ffffff345c0c08345c0c08345c0c08345c0c08f05b0c *0820510c0803000000250003008b46048945008b7508c745fc5c5c0c0883ed04ff268d76002451 *0c0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460489 *45f48b46088945f083ed10b838510c08ebdc9083c7183b7b5c760cc7436c060000008b43f8ffe0 *c747ec805c0c088b45088947f08b46088947f4c747f8f05e0c088b46048947fc8d47ec89078d77 *f883c50c8b45008b40e4ebcb90e95ffeffff8d7600f85c0c08b05c0c08f85c0c08f85c0c085c5c *0c0820510c08020000002500030050d5110870d61108205d0c080400010000000000110003008d *45f43b4354730abe70d611088b43fcffe08b7500c74500985e0c088b06ebf0be1cdf110883c504 *ff650090be18df110883c508ff650090245d0c0801000100130001008d45f43b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f483ed0cb8385d0c08ebe28d7600040001000100 *00000c0000008b760483c504ff2604000100010000000c00000083c71c3b7b5c760cc7436c0700 *00008b43fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f4b45d0c088d47e88947f8 *c747fca05e0c088d47f489078d77fc83c5048b45008b40f0ebc489f683c7143b7b5c760cc7436c *050000008b43f8ffe0c747f07c5d0c088b45048947f4c747fcc85d0c088d47f089078d77fc83c5 *088b4500ebda185e0c08645d0c08245d0c0801000000250001008b46048945f88b4608894500be *50d51108c745fc645e0c0883ed0ce984b30300645e0c08585d0c08205d0c080000000025000300 *01000000020000008b4500ff60f089f601000000090000008b4500ff60f0909001000000020001 *008b4500ff60ec89f601000000090001008b4500ff60ec9090000000000a0002008b4500ff60e8 *909002000000040003008b4500ff60e489f602000000090003008b4500ff60e490900100000002 *0004008b4500ff60e089f601000000090004008b4500ff60e09090b8305f0c08ffe090833d3018 *1208007532c7053018120801000000c7450064050c0883c504c74500d8c80b0883c504c7450004 *a10b0883c504c74500e84e0c0883c50483ed04ff65009090900b0002000000000011000000be78 *d6110883c5088b4500ff60e8909068d61108905f0c0816000300000000001100010083c7243b7b *5c7611c7436c09000000be80d611088b43fcffe0c747e08c6b10088b45048947e48b45088947e8 *c747ec8c6b10088b45008947f08b45088947f4c747f838600c088d47e08947fc8d47ec89078d77 *f883c50c8b4500ebbb897500e930f1ffff00600c0800600c0800600c0800600c0800600c08905f *0c080100000025000100905f0c0804000100020000000e0001008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43fcffe0c747f88c6b10088b46048947fc8b450089078b45008945f8 *8d47f88945008b7608c745fc28600c0883ed0cb808121008ebcc90900b00020000000000110000 *0083c7183b7b5c7611c7436c06000000be88d611088b43fcffe0c747ec8c6b10088b45048947f0 *8b45008947f4c747f834610c088b45008947fc8d47ec89078d77f883c5088b4500ebce8d760042 *000000240000008b45083b46047e0dbe34df110883c50c8b4500ffe08b750483c508b89c071008 *ebf189f602000000240000008b55088b460489450889d6c74500e8600c08ff2604000100020000 *000e0000008d45f83b435473058b43fcffe08b46088945fc8b55008b460489450089d6c745f814 *610c0883ed088b06ebdf0b000200000000001100000083c70c3b7b5c7611c7436c03000000be8c *d611088b43fcffe0c747f8e4610c088b45048947fc8d47f88945048b7500b808121008ebe189f6 *000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b460440c747fc54dc0b08 *89078d77fc83c504b8d46d1008ebe489f601000100130000008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b7604c745f4ac610c0883ed0c8b06ebe19090040001000000000011 *00000083c7143b7b5c7611c7436c05000000be98d611088b43fcffe0c747f064620c088b450089 *47f4c747fca0620c088d47f089078d77fc83c5048b4500ebda8d760001000100130000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d1008897004c745f490d611088b760483ed10b8081210 *08ebde8d760004000100010000000c0000008b7604e9f4a40300160003000000000011000000be *78d6110883c50c8b4500ff60e890901600030000000000110000008b75088b450089450883c504 *e927af030090909016000300000000001100000083c71c3b7b5c7611c7436c07000000bea4d611 *088b43fcffe0c747e88c6b10088b45008947ec8b45088947f0c747f484630c088b45088947f88d *47e88947fc8b450489078d77f483c50c8b4500ebc89004000100030000000b0000008d45f43b43 *5473058b43fcffe08b46048945fc8b45008945f88b46088945008b760c83ed0cb8e41a1008ebdf *04000100030000000b0000008d45fc3b4354720883c7103b7b5c760cc7436c040000008b43fcff *e0c747f44c630c088b46048947f88b45008947fc8b460c89078d47f48945008b760883ed04b808 *121008ebd390b8d4630c08ffe090833d34181208007514c7053418120801000000c7450090310c *0883c50483ed04ff6500900b000200000000001100000083c7103b7b5c7611c7436c04000000be *c0d611088b43fcffe0c747f4186b0c088b45008947f8c747fc04d211088b450489078d77f483c5 *088b45008b40d8ebd70b000200000000001100000083c7103b7b5c7611c7436c04000000bec4d6 *11088b43fcffe0c747f4186b0c088b45008947f8c747fcfcd111088b450489078d77f483c5088b *45008b40d8ebd70b000200000000001100000083c7103b7b5c7611c7436c04000000bec8d61108 *8b43fcffe0c747f4386b0c088b45008947f8c747fcfcd111088b450489078d77f483c5088b4500 *8b40d4ebd70400010000000000110000008d45f43b4354730abeccd611088b43fcffe0c745f800 *0000008b45008945f4c745fc20650c0883ed0cb804ee0b08ebe0010000002400000083c7183b7b *5c760ec7436c06000000b8f0371008ffe0c747ecc86a0c088b45048947f0c747f4f86a0c088d47 *ec8947f8c747fc3cd7110889378d77f483c5088b45008b40e8ebcd900b00020000000000110000 *008d45fc3b4354730abed4d611088b43fcffe08b7504c745fc14670c0883ed048b06ebed90be00 *d2110883c50c8b4500ff60f089f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc *0b088b45088947fcc70700d211088d77f883c5108b45008b40ecebdd8d76000200000015000000 *8d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed *10b850640c08ebdc9083c7283b7b5c760cc7436c0a0000008b43f8ffe0c747dcc86b10088b4504 *8947e08b46048947e48b46088947e8c747ece8650c088b45088947f08b450c8947f4c747f87cdc *0b088d47ec8947fc8d47dc89078d77f883c5108b45008b40ecebb218660c08a8650c0800000000 *03000000250000000b000200010000000c0000008d45f83b435473058b43fcffe08975fc8b5504 *8b460489450489d6c745f88c660c0883ed088b06ebe28d760083c7083b7b5c760cc7436c020000 *008b43f8ffe0c747fc98660c088b450489078b46088945088b46048945048d77fc83c504b89866 *0c08ebd98d7600c4660c0898650c08000000004200000025000000040001000000000011000000 *8b7500c74500cc670c08ff26be3cd7110883c5048b4500ff60f089f601000100130000008d45f4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb820670c08ebe28d *760083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e844670c088b46088947ecc747f438 *6b0c088b46048947f8c747fcfcd111088d47e889078d77f483c5048b45008b40d4ebca70670c08 *2c670c080000000000000000250000000400010000000000110000008b7500c7450084680c08ff *26be3cd7110883c5048b4500ff60f089f601000100130000008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb8d8670c08ebe28d760083c71c3b7b5c760cc7 *436c070000008b43f8ffe0c747e8fc670c088b46088947ecc747f4186b0c088b46048947f8c747 *fc04d211088d47e889078d77f483c5048b45008b40d8ebca28680c08e4670c0800000000000000 *002500000004000100000000001100000083c7203b7b5c7611c7436c08000000bee0d611088b43 *fcffe0c747e4186b0c08c747e860df1108c747ecfcd111088b45008947f0c747f4186b0c088d47 *e48947f8c747fcfcd11108c70760df11088d77f483c5048b45008b40d8ebbb98df1108b0df1108 *ec680c080400010000000000110003008d45f43b4354730abe20d711088b43fcffe08b7500c745 *00ac690c088b06ebf0be3cd7110883c5048b4500ff60f089f6c74500000000008975fcc745f804 *d2110883ed08e92bcb00008d760034690c0834690c0834690c0834690c0834690c0834690c0834 *690c0834690c08f0680c0801000000250001008b46048945f88b4608894500c745fc7c690c0883 *ed08e94dc10000907c690c0824690c08ec680c08000000002500030098df1108b8df1108ac690c *080400010000000000110003008d45f43b4354730abe28d711088b43fcffe08b7500c745006c6a *0c088b06ebf0be3cd7110883c5048b4500ff60f089f6c74500000000008975fcc745f804d21108 *83ed08e93bd300008d7600f4690c08f4690c08f4690c08f4690c08f4690c08f4690c08f4690c08 *f4690c08b0690c0801000000250001008b46048945f88b4608894500c745fc3c6a0c0883ed08e9 *8dc00000903c6a0c08e4690c08ac690c080000000025000300c8df11086c6a0c08040001000000 *0000110001008d45ec3b4354730abe30d711088b43fcffe0c745fc00d21108c745f884df1108c7 *45f474df1108c745f07cdf1108c745ec38d7110883ed14b80c460d08ebd1900100000002000100 *8b4500ff60ec89f601000000090001008b4500ff60ec9090000000000a0000008b4500ff60f090 *9002000100010002008b4500ff60e889f602000100090002008b4500ff60e89090030000000100 *06008b4500ff60d889f603000000090006008b4500ff60d8909003000000010007008b4500ff60 *d489f603000000090007008b4500ff60d49090000000000a0000008b4500ff60f09090b8686b0c *08ffe090833d38181208007528c7053818120801000000c74500305f0c0883c504c74500a86b0c *0883c504c7450010070c0883c50483ed04ff650090b8a86b0c08ffe090833d3c18120800756ec7 *053c18120801000000c7450094b40b0883c504c7450004a10b0883c504c745000cde0b0883c504 *c74500b4ed0b0883c504c745000c1e0c0883c504c74500a01f0c0883c504c7450064050c0883c5 *04c74500d8c80b0883c504c74500e84e0c0883c504c74500642e0c0883c50483ed04ff65009090 *900ce01108f4df110868d61108d4df1108e4df1108d4df11081ce011082ce0110834e01108286c *0c0804000100000000001100ff018d45fc3b4354720883c7443b7b5c7611c7436c11000000be40 *d711088b43fcffe0c747c084710c088b45008947c4c747cc68730c088b45008947d0c747d4e873 *0c088d47cc8947d8c747e068740c088947e48d47d48947e8c747eca05e0c088d47e08947f0c747 *f4cc740c088d47ec8947f8c747fca05e0c088d47f489078d47c08945008d47fc8945fc83ed04b8 *38510c08eb8b2c6c0c0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d10 *088970048b46048945f4bef4df110883ed10b808121008ebdd89f6897500e904e4ffff2c6d0c08 *2c6d0c082c6d0c082c6d0c082c6d0c08306c0c080100000025000100286c0c0801000100130007 *008d45e83b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d100889 *7004c747f8fc6c0c088b46048947fc8b46048945ec8d47f88945f4be0ce01108c745f0546d0c08 *83ed18b808121008ebc390be78d6110883c50c8b4500ff60e889f683c7083b7b5c760cc7436c02 *0000008b43f8ffe0c747fc54770c088b450489078b75088d47fc89450883c504b808121008ebdf *9083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc34770c088b450489078b75088d47fc *89450883c504b808121008ebdf90fc6d0c08c86d0c08000000000200000025000000406c0c0804 *000100020000000e0001008d45ec3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0 *c747f87cdc0b088b46088947fc8b45008907c745f41ce011088d47f88945f0c745ec70d8110889 *45fc8b4604894500c745f8446e0c0883ed14b82cf50b08ebbe83c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8546e0c088b45048947fc8b450889078d47f8894508c7450404e0110883c5 *04b85c260d08ebd58d7600b06e0c08b86d0c083c6c0c080200000025000300346c0c0804000100 *010000000c000d008d45ec3b435473058b43fcffe0c745f4d4df11088b45008945f0c745ec80d1 *11088b46048945fcc745f8046f0c0883ed14b82cf50b08ebd3286c0c080100010013006f008d45 *f03b4354720883c71c3b7b5c760cc7436c070000008b43f8ffe08d45f8c700d46d1008897004c7 *47e8606d0c088b46048947ecc747f4146f0c088b46048947f8c747fca05e0c088d47f489078d47 *e88945f48d47fc8945f083ed10b838510c08ebb6be78d6110883c50c8b4500ff60e889f683c714 *3b7b5c760cc7436c050000008b43f8ffe0c747f07cdc0b088b45088947f4c747f800d21108c747 *fc34770c088d47f089078d47fc8945088b750483c504b808121008ebcb90cc6f0c08bc6f0c0800 *0000000200000025000000386c0c0804000100010000000c0001008d45ec3b435473058b43fcff *e0c745f4e4df11088b45008945f0c745ec80d111088b46048945fcc745f828700c0883ed14b82c *f50b08ebd3286c0c080100010013007f008d45f03b4354720883c71c3b7b5c760cc7436c070000 *008b43f8ffe08d45f8c700d46d1008897004c747e8586f0c088b46048947ecc747f438700c088b *46048947f8c747fca05e0c088d47f489078d47e88945f48d47fc8945f083ed10b838510c08ebb6 *486c0c0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46 *048945f4be34e0110883ed10b808121008ebdd89f60100000024000000837e0422750a8b750483 *c5088b06ffe0be78d6110883c5088b45008b40e8ebee04000100010000000c0000008d45fc3b43 *5473058b43fcffe08b55008b460489450089d6c745fc24710c0883ed048b06ebe589f6286c0c08 *0100010013007f018d45f03b4354720883c7283b7b5c760cc7436c0a0000008b43f8ffe08d45f8 *c700d46d1008897004c747dc7c700c088b46048947e0c747e8ec700c088b46048947ecc747f450 *710c088d47e88947f8c747fca05e0c088d47f489078d47dc8945f48d47fc8945f083ed10b83851 *0c08eba98d760002000000150000008d45f03b4354720883c7083b7b5c760cc7436c020000008b *43f8ffe08d45f8c700d46d1008897004c747fc14770c088b460489078d47fc8945f48b760883ed *10b808121008ebd3900100000024000000837e0427750a8b750483c5088b06ffe0be78d6110883 *c5088b45008b40e8ebee04000100010000000c0000008d45fc3b435473058b43fcffe08b55008b *460489450089d6c745fc50720c0883ed048b06ebe589f6830000002400000083c71c3b7b5c761c *c7436c07000000c74500ac720c08c74320ff000000b8b03d1008ffe0c747e800720c088b450889 *47ec8b45048947f0c747f47c720c088d47e88947f8c747fca05e0c088d47f489078d77fc83c510 *8b45008b40f0ebc489f68300000024000000837e04277510be78d6110883c5108b45008b40e8ff *e0b8ac720c08ebf78d76008b7508c7450014730c08ff26e967ffffff8d760040730c0834730c08 *0000000083000000250000000b000200010000000c0000008d45f83b435473058b43fcffe08b46 *048945fc8b7504c745f85c730c0883ed088b06ebe701000000240000008b46048945008b55048b *460889450489d6ebc19004000100010000000c0000008d45fc3b435473058b43fcffe08b55008b *460489450089d6c745fc94730c0883ed048b06ebe589f6446c0c0801000100130001008d45f43b *4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc *b4730c088b460489078d47fc8945f483ed0cb800620d08ebd60200000024000000837e045c750a *8b750483c50c8b06ffe08975048b7508c74508fcd1110883c504b868730c08ebe7900400010002 *0000000e0000008d45f83b435473058b43fcffe08b46088945fc8b55008b460489450089d6c745 *f834740c0883ed088b06ebdf0100000024000000837e0427750d8b750483c508b8a05e0c08ffe0 *be78d6110883c5088b45008b40e8ebee9004000100010000000c0000008d45fc3b435473058b43 *fcffe08b55008b460489450089d6c745fc9c740c0883ed048b06ebe5909070d6110868d6110840 *d71108f4740c0804000100000000001100070083c7243b7b5c7611c7436c09000000be48d71108 *8b43fcffe0c747e048760c088b45008947e4c747ecc8760c088d47e08947f0c747f4e0760c088d *47ec8947f8c747fcc05e0c088d47f489078d77fc83c5048b45008b40ecebbd89f6fc740c080100 *0100130001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed *0cb85c6c0c08ebe28d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d *1008897004c745f450d711088b760483ed10b808121008ebde8d76008b750483c508ff26be78d6 *110883c5088b4500ff60e889f6e4750c08dc750c08000000000100000025000000040001000100 *00000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc08760c0883ed *048b06ebe589f6f8740c0801000100130003008d45f03b4354720883c7283b7b5c760cc7436c0a *0000008b43f8ffe08d45f8c700d46d1008897004c747dc78750c088b46048947e0c747e8ac750c *088b46048947ecc747f414760c088d47e88947f8c747fcc05e0c088d47f489078d47dc8945f48d *47fc8945f083ed10b838510c08eba98d760004000100010000000c0000008b760483c504ff26f4 *740c0804000100010000000c0001008d45f83b435473058b43fcffe0c745fc081210088b450089 *45f88b460489450083ed08b8385d0c08ebe1909001000000020000008b4500ff60f089f6010000 *00090000008b4500ff60f0909001000000020002008b4500ff60e889f601000000090002008b45 *00ff60e8909001000000020004008b4500ff60e089f601000000090004008b4500ff60e0909000 *0000000a0007008b4500ff60d49090b884770c08ffe090833d40181208007514c7054018120801 *000000c74500a01f0c0883c50483ed04ff65009018000500000000001100000083c70c3b7b5c76 *11c7436c03000000be54d711088b43fcffe0c747f8b8780c088b45008947fc8b450489078d77f8 *83c508b8b8780c08ebdf8b45108945148b750483c510e90b9a03008d760004000100030000000b *0000008d45f83b435473058b43fcffe08b45008945fc8b46088945008b46048945f88b760c83ed *08b8b8780c08ebdf83c7203b7b5c760cc7436c080000008b43f8ffe0c747e40c780c088b450c89 *47e88b46088947ec8b45148947f0c747f4c86b10088b450c8947f88b45108947fc8b460489078d *47e48945148d47f48945108b750883c50cb814161008ebb489f638780c08ec770c080000000005 *0000002500000016000300020000000e0000008d45f43b435473058b43fcffe08b46088945f88b *46048945fc8b450889750889c6c745f4ac780c0883ed0c8b06ebdc901800050000000000110000 *0083c7143b7b5c7611c7436c05000000be58d711088b43fcffe0c747f0a0790c088b45108947f4 *8b45088947f88b45048947fc8b450089078d47f08945108b750083c508b814161008ebcd89f604 *000100030000000b0000008d45fc3b4354720883c7103b7b5c760cc7436c040000008b43fcffe0 *c747f4c86b10088b46088947f88b46048947fc8b450089078d47f48945008b760c83ed04b80812 *1008ebd39004000100040000000b0000008d45f83b4354720883c7103b7b5c760cc7436c040000 *008b43fcffe0c747f44c790c088b45008947f88b46088947fc8b460c89078d47f48945008b4604 *8945fc8b761083ed08b814161008ebcd909090b8f8790c08ffe090833d44181208007514c70544 *18120801000000c74500d8c80b0883c50483ed04ff650090b8247a0c08ffe090833d4818120800 *7514c7054818120801000000c74500d8c80b0883c50483ed04ff650090b8507a0c08ffe090833d *4c181208007578c7054c18120801000000c7450064de0b0883c504c7450004a10b0883c504c745 *00cce70b0883c504c745000c1e0c0883c504c7450064050c0883c504c74500e07a0c0883c504c7 *450004aa0b0883c504c7450094b40b0883c504c7450010a70b0883c504c745004c7c0c0883c504 *c74500d8c80b0883c50483ed04ff650090b8e07a0c08ffe090833d5018120800751ec705501812 *0801000000c74500d8c80b0883c504c74500f0e90b0883c50483ed04ff6500909090b8187b0c08 *ffe090833d5418120800751ec7055418120801000000c7450090310c0883c504c745005c890c08 *83c50483ed04ff65009090900400010000000000110000008b7500c74500687b0c08ff26000000 *0024000000837e040a7510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b *40f0ebee909054d2110850e01108907b0c0800000200180003008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8858203008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f450e01108be54d2110883ed10b808121008ebc19090 *900400010000000000110000008b7500c74500447c0c08ff26be0000000083c504ff650090be01 *00000083c504ff650090247c0c08187c0c08000000000000000025000000b84c7c0c08ffe09083 *3d58181208007514c7055818120801000000c74500d8c80b0883c50483ed04ff65009044e01108 *60e01108707c0c080400010000000000110003008d45f83b4354720883c7083b7b5c7611c7436c *02000000be84d711088b43fcffe0c747fcd87d0c088b450089078d47fc8945f8c745fc087e0c08 *83ed08b88ce80b08ebdbe9070100008d760001000000240000008b750483c508ff65008d760070 *7c0c08020000002400010083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ff *e0c747fc54dc0b0889378d47fc8945008b45088945fc8b45048945f88d47fc894508c74504dc7c *0c0883ed08b814760d08ebcc90c74500f47c0c08e8ed47030089c6ff65008d76008b760483c50c *ff65008d7600587d0c08447d0c08707c0c080200000025000100707c0c080200000024000100c7 *4500787d0c08ff268d7600707c0c0801000000240001008b45048945f88b46048945f48b460489 *4500c745fc847d0c0883ed0ce9d70001008d7600cc7c0c0800000000707c0c0800000100010000 *000c0003008d45ec3b435473058b43fcffe08b46048945fcbe60e01108c745f89c7d0c0883ed08 *8b06ebe589f601000000240000008b760483c504ff650490909044e0110870e011088cd7110814 *7e0c080b00020000000000110007008d45fc3b4354730abe8cd711088b43fcffe08b7504c745fc *7c800c0883ed048b06ebed908b750483c50cff2602000000150000008d45f03b435473058b43f8 *ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b850810c08ebdc90e907 *0100008d760001000000240000008b750483c508ff65008d7600147e0c08020000002400010083 *c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc54dc0b0889378d47 *fc8945008b45088945fc8b45048945f88d47fc894508c74504a47e0c0883ed08b814760d08ebcc *90c74500bc7e0c08e82546030089c6ff65008d76008b760483c50cff65008d7600207f0c080c7f *0c08147e0c080200000025000100147e0c080200000024000100c74500407f0c08ff268d760014 *7e0c0801000000240001008b45048945f88b46048945f48b4604894500c745fc4c7f0c0883ed0c *e90fff00008d7600947e0c0800000000147e0c0800000100010000000c0003008d45ec3b435473 *058b43fcffe08b46048945fcbe70e01108c745f8647f0c0883ed088b06ebe589f6147e0c080200 *0000150003008d45f43b4354720883c7143b7b5c760cc7436c050000008b43f8ffe08d45f8c700 *d46d1008897004c747f0647e0c088b46048947f48b46088947f8c747fca07f0c088d47f089078d *47fc8945f483ed0cb88ce80b08ebc39083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *d47f0c088b45048947fc8b460489078b46088945088d47f889450483c504b8307e0c08ebd62c80 *0c08547e0c08147e0c0842000000250007008cd711087c800c080b00020000000000110001008d *45f03b4354730abe94d711088b43fcffe08b7500c7450024810c088b06ebf04300000024000000 *8b45048945088b760483c508ff65089083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *54dc0b088b450889078975fc8d47fc8945f8c74500b8800c0883ed08b8307e0c08ebd889f6c880 *0c08c8800c087c800c0843000000250001007c800c0801000000240001008b45048945f48975fc *8b4608894500c745f818810c0883ed0ce9b201010090900b00020000000000110000008b7500c7 *4500a0810c08ff26210000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *bc810c088b45048947fc8b460489078d77f883c5088b4500ebe18d760001000000240000008b55 *048b460489450489d6c7450064810c08ff260000020006000000ff650090000002000a000000ff *6500900400020000000000110000008d45fc3b4354730abea8d711088b43fcffe0c745fc64820c *0883ed04b82c860d08ebed9001000100160000008d45e83b4354720883c7083b7b5c760cc7436c *020000008b43f8ffe08d45f8c700d46d1008897004c747fc84ed0b088b46088907c745f4e0d011 *08c745f0e0d011088d47fc8945ec8b46048945e883ed18b8e8830d08ebc2010000002400000083 *c7143b7b5c7615c7436c05000000c74320ff000000b8b03d1008ffe0c747f004820c088b450489 *47f48977f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd5909003000200000000 *00110000008d45f83b4354720883c7083b7b5c7611c7436c02000000beacd711088b43fcffe0c7 *47fc0c830c088b45008907c745f8000000008d77fcc745fc1c840c0883ed08b80c830c08ebd703 *000200000001000d00000083c7083b7b5c760cc7436c020000008b43fcffe08b56048b4500803c *10007517c747fc54dc0b088b450089078d77fc83c5048b4500ebdbff450083ef08b80c830c08eb *ce210000002400000083c7143b7b5c761cc7436c05000000c7450458830c08c74320fe000100b8 *b03d1008ffe08b55088b45000fbe0410837d00007e2d8b55004a0fb6c0c747f03cdc0b088947f4 *c747f87cdc0b088d47f08947fc89378955008d77f8b858830c08ebc10fb6c0c747f03cdc0b0889 *47f4c747f87cdc0b088d47f08947fc89378d77f883c50c8b4500eb9a2100000024000000837e04 *007e168b4604488945fcbe00d2110883ed04b858830c08ffe0be00d2110883c5088b4500ebf18d *76002100000024000000c74500e8830c08ff269090900900030000000000110000008d45f83b43 *54730abed4d711088b43fcffe08b7500c7450070840c08b8cc421008ebed900100000024000000 *83c508ff650089f6010000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b8 *b03d1008ffe089f28d4608c747fce0060c0889078d47fc8945fc8b7504895504c7450060840c08 *83ed08b8e8131008ebd30300020000000000110000008b450083c504890424e8ea10f8ff89c6ff *6500901400030000000000110000008d45fc3b4354720883c70c3b7b5c7611c7436c03000000be *e8d711088b43fcffe0837d04007e348b450448c747f85c860c088b55008957fc8b55088917c745 *0800d21108c74504081210088945008d77f883ed04b828101008ebc4bed0e0110883c50c83ef0c *8b4500ebb490c40000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d *1008ffe0c747f87cdc0b088977fc8b451089078b55084a8d47f889451089550c8b750483c50cb8 *5c860c08ebd589f6440000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *54dc0b088b450889078d47fc8945fc8b450c8945f88b760cc7450058850c0883ed0cb84c181008 *ebd2010000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0 *c747f87cdc0b088977fc8b450489078d77f883c5088b4500ebe4900200000024000000c74500d4 *e011088b45048945fc8b760cc74504f0850c0883ed08e9fd9103009009000300020000000e0000 *008d45e83b435473058b43fcffe08b450085c075158b46088945008b7604c745fc30860c0883ed *04eb198975f88945fc8b46088945008b7604c745f4a8850c0883ed0c8b06ebc59090e0d81108a4 *860c081700050000000000110001008d45ec3b4354730abeecd711088b43fcffe08b7500c74500 *cc870c088b06ebf0420000002400000083c50cff650089f603000000240000008b45048945008b *750cc74504e0860c0883ed04e9e08c0300450000002400000083c7083b7b5c7615c7436c020000 *00c74320fe000000b8b03d1008ffe08d4608c747fce0060c0889078b45108945008d47fc8945fc *8b450c8945f88b45048945f4c745041c0910088d47fc89450c897510c74508f0860c0883ed0cb8 *448a0d08ebb989f645000000240000008b4508400faf460489c6c7450010870c08e93abb030089 *f6a4860c080500000024000100c745fce0d811088b450889750889c6c745007c870c0883ed08e9 *4a8a030089f6a4860c080300000024000100c745f4000000008b45088945f08975fc8b46048945 *00c745f8a0870c0883ed10e91366ffff9090901600030000000000110000008d45fc3b4354730a *bef4d711088b43fcffe08b7504c745fc3c890c0883ed048b06ebed908b750cc7450c00d2110883 *c508e9d289030089f604000100020000000e0000008d45fc3b4354720883c70c3b7b5c760cc743 *6c030000008b43fcffe0c747f87cdc0b088b46048947fc8b450089078d47f88945008b760883ed *04b808121008ebd98d760004000100030000000b0000008d45f83b4354720883c70c3b7b5c760c *c7436c030000008b43fcffe0c747f844880c088b45008947fc8b460c89078d47f88945008b4608 *8945fc8b46048945f883ed08b800880c08ebd089f683c7103b7b5c760cc7436c040000008b43f8 *ffe0c747f494880c088b45048947f88b46088947fc8b450c89078d47f489450c8b46048945088b *750483c504b814161008ebcd8d7600e0880c0824880c0800000000430000002500000008000000 *01000000ff6500900800000009000000ff650090b85c890c08ffe090833d5c181208007550c705 *5c18120801000000c74500b4ed0b0883c504c74500a01f0c0883c504c74500d8c80b0883c504c7 *4500281f0c0883c504c7450064050c0883c504c745000cde0b0883c504c7450064de0b0883c504 *83ed04ff6500900b00020000000000110000008d45fc3b4354730abe20d811088b43fcffe08b75 *00c745000c8a0c088b06ebf042000000240000008b45083b46047e0783c50c8b06ffe08b7504eb *f401000000240000008975008b55048b460489450489d6c745fcf0890c0883ed04ff2690900b00 *020000000000110000008d45fc3b4354730abe24d811088b43fcffe08b7500c74500788a0c088b *06ebf042000000240000008b45083b46047e038b750483c50c8b06ffe089f60100000024000000 *8975008b55048b460489450489d6c745fc5c8a0c0883ed04ff2690900b00020000000000110000 *008b7500c74500e88a0c08ff2621000000240000008b45043b46040f9ec00fb6c08944240883c5 *088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760001000000240000008b55048b46 *0489450489d6c74500b48a0c08ff260b00020000000000110000008b7500c74500508b0c08ff26 *21000000240000008b45043b46040f9cc00fb6c08944240883c5088b34852cdc0b088b542408c1 *e2028b450029d0ff60f08d760001000000240000008b55048b460489450489d6c745001c8b0c08 *ff260b00020000000000110000008b7500c74500b88b0c08ff2621000000240000008b45043b46 *040f9dc00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d7600 *01000000240000008b55048b460489450489d6c74500848b0c08ff260b00020000000000110000 *008b7500c74500208c0c08ff2621000000240000008b45043b46040f9fc00fb6c08944240883c5 *088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760001000000240000008b55048b46 *0489450489d6c74500ec8b0c08ff260400010000000000110000008b7500c74500548c0c08ff26 *000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4604f7d8c747fc54dc0b *0889078d77fc83c5048b4500ebe59090900b00020000000000110000008b7500c74500dc8c0c08 *ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040faf4604c747 *fc54dc0b0889078d77fc83c5088b4500ebe39001000000240000008b55048b460489450489d6c7 *4500a48c0c08ff260b00020000000000110000008b7500c74500488d0c08ff2621000000240000 *0083c7083b7b5c760cc7436c020000008b43f8ffe08b45042b4604c747fc54dc0b0889078d77fc *83c5088b4500ebe489f601000000240000008b55048b460489450489d6c74500108d0c08ff260b *00020000000000110000008b7500c74500b48d0c08ff26210000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe08b4504034604c747fc54dc0b0889078d77fc83c5088b4500ebe489 *f601000000240000008b55048b460489450489d6c745007c8d0c08ff260b000200000000001100 *00008b7500c74500048e0c08ff2621000000240000008b45048945008b4604894504e95b040100 *8d760001000000240000008b55048b460489450489d6c74500e88d0c08ff260b00020000000000 *110000008b7500c745006c8e0c08ff2621000000240000008b45043b46040f94c00fb6c0894424 *0883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760001000000240000008b55 *048b460489450489d6c74500388e0c08ff260b00020000000000110000008b7500c74500d48e0c *08ff2621000000240000008b45043b46040f95c00fb6c08944240883c5088b34852cdc0b088b54 *2408c1e2028b450029d0ff60f08d760001000000240000008b55048b460489450489d6c74500a0 *8e0c08ff260b00020000000000110000008b7500c74500608f0c08ff26be04d2110883c5048b45 *00ff60ec89f6befcd1110883c5048b4500ff60f089f6108f0c08008f0c08000000000000000025 *0000008b7504c74504348f0c0883c504ff26908b750483c508ff26448f0c08348f0c0800000000 *01000000250000000b00020000000000110000008b7500c74500d88f0c08ff268b750483c508ff *26be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089f6908f0c08808f *0c080000000000000000250000008b7504c74504b48f0c0883c504ff2690b48f0c08788f0c0800 *000000010000002500000054d2110830e11108d88f0c0800000200180003008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e83d6e03008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f430e11108be54d2110883ed10b8081210 *08ebc19090901600030000000000110000008b7500c74500a4900c08ff2662000000240000008b *45048945008b45088945048b4604894508e9750701009022000000240000008b55088b46048945 *0889d6c7450068900c08ff2602000000240000008b55048b460489450489d6c7450088900c08ff *260b00020000000000110000008b7500c74500f4900c08ff2621000000240000008b4504894500 *8b4604894504e9ef0801008d760001000000240000008b55048b460489450489d6c74500d8900c *08ff260b00020000000000110000008b7500c7450044910c08ff2621000000240000008b450489 *45008b4604894504e9c70501008d760001000000240000008b55048b460489450489d6c7450028 *910c08ff260400010000000000110000008d45fc3b4354730abe9cd811088b43fcffe08b7500c7 *45008c910c088b06ebf00000000024000000c74500ffffff7f8b46048945fc83ed04e937080100 *9090900400010000000000110000008b750083c504ff260400010000000000110000008b750083 *c504ff2650e11108cc910c080400010000000000110001008b7500c74500f8910c08ff26cc910c *08000000002400010083c7083b7b5c760cc7436c020000008b43f8ffe08b46043dffffff7f750f *be50e1110883c50483ef088b06ebe540c747fc54dc0b0889078d77fc83c5048b4500ebd0909040 *e111083c920c080400010000000000110001008b7500c7450068920c08ff263c920c0800000000 *2400010083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d00000080750fbe40e11108 *83c50483ef088b06ebe548c747fc54dc0b0889078d77fc83c5048b4500ebd090904e6f6e2d6578 *6861757374697665207061747465726e7320696e009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8596b03008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0ac920c0883ed10b84cce *0b08ebbf903a20009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8f16a03008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f02c930c0883ed10b84cce0b08ebbf90c8d8110894930c08 *0900020000000000110001008d45f43b4354730abed8d811088b43fcffe08b45008945fcc74500 *00960c0883ed04b8a0920d08ebe78d760001000100130000008d45f03b435473058b43f8ffe08d *45f8c700d46d1008897004c745f478e111088b46048945f083ed10b82cda0b08ebdb0200000015 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d10 *08897004c747f8dc930c088b46088947fc8d47f88945f48b46048945f083ed10b82cda0b08ebcf *9094930c0802000000150001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe08d45f8c700d46d1008897004c747f814940c088b46048947fc8b460889078d47f88945f4c7 *45f0c8d8110883ed10b82cda0b08ebc98d760094930c08630000002400010083c70c3b7b5c761c *c7436c03000000c74504cc940c08c74320fe000001b8b03d1008ffe0c747f86c940c088b451089 *47fc8b450089078d47f889451089750c83c50cb82cda0b08ebd98d7600c745f800d211088b7504 *83ed08eba59094930c08030000002400010083c70c3b7b5c760cc7436c030000008b43f8ffe083 *7e047c7521c747f87cdc0b08c747fc88e111088b450489078d47f88945fc8b750883ed04eb10c7 *45fc00d211088b750883ed0483ef0cb8cc940c08ebc089f68b46088945008b7604c745fc34950c *0883ed04ff268d760088950c0818950c0894930c08020000002500010094930c08010000002400 *01008975048b7500c74500b4950c08ff26908975fcc745f890e11108c74500c0950c0883ed08e9 *e363ffff8d7600d0950c08d0950c0894930c080100000025000100a4e1110800960c0800000200 *180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8196803008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4a4e11108 *83ed0cb874e80b08ebc60b000300000000001100000083c7083b7b5c7611c7436c02000000bef0 *d811088b43fcffe0c747fcb4960c088b450489078d47fc8943048b750083c508b870331008ebdf *04000100010000000c0000008d45fc3b435473058b43fcffe08b760483ed04b808121008ebf190 *906f70656e42696e61727946696c65009000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8416703008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f0d0960c0883ed10b84cce0b08ebbf90 *68436c6f7365009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e8d56603008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f400d21108c745f044970c0883ed10b84cce0b08ebbf9068466c757368009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8696603008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0b0970c0883ed10b84cce0b08ebbf90f0e1110824d91108f8980c08070700001c98 *0c080000080000000000110003008d45dc3b4354720883c7183b7b5c7611c7436c06000000be24 *d911088b43fcffe08b451089c22b550c7531c747ec14c50c088b45088947f08b45188947f4c747 *f800000000c747fc000000008b451489078d77ec83c51c8b4500ebc3c747ec84ed0b088957f0c7 *47f454dc0b088b450c8947f8c745f41c0910088d47ec8945f08d47f48945ec8b45088945e88b45 *048945e48b45008945e0c745dcf0e111088955fcc745f87c990c0883ed2483ef08b804a30d08e9 *66ffffff8d7600e93fffffff8d760020980c08280e00002400010083c7183b7b5c760cc7436c06 *0000008b43f8ffe08b46043b45047c31c747ec14c50c088b45108947f08b45208947f4c747f800 *000000c747fc000000008b451c89078d77ec83c5248b4500ebc58b451403460489451483c50883 *ef18b83c980c08ebaf9020980c08280e000024000100c745000c990c08ff2690909024d9110888 *990c080400020000000000110001008d45dc3b4354730abe2cd911088b43fcffe08b45008945f8 *c745fc309b0c0883ed08b804c40c08ebe78d7600be0cd2110883c51cff65009001000100130000 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8b4c30c *08ebe28d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f483ed0cb808c30c08ebe28d760042000000240000008b4504897004be0cd2110883 *c50cff65008d760083c7183b7b5c760cc7436c060000008b43f8ffe08b45103b450c7510be0cd2 *110883c51c83ef188b4500ebe6c747ecdc990c088b45188947f0c747f8109a0c088b45188947fc *8b45108945008b45088945fc8b45048945088b450c894504c7450c18da11088d47ec8945f88d47 *f88945f4c74510449a0c0883ed0cb83c980c08eb9089f6589a0c08c8990c0888990c08a6010000 *2500010088990c0802000000240001008b46148945f48b46048945f88b46108945fc8b460c8945 *008b7608c745f0f09a0c0883ed10ff269088990c0801000000240001008b46048b500489450089 *d6c745fcfc9a0c0883ed04ff26905ce21108d0e11108909b0c0800000000489b0c080000010000 *000000110003008d45ec3b4354730abe34d911088b43fcffe0be01000000c745fc049c0c0883ed *04b880421008ebe8e9d3ffffff8d7600489b0c08000000002400030083c7083b7b5c7615c7436c *02000000c74320fe000000b8b03d1008ffe0c747fcd4f10c088937c7450024da11088d47fc8945 *fcc745f820da1108c745f4d0e11108c745f040e2110883ed10b81ca70d08ebc989f6489b0c0800 *0000002400030083c7183b7b5c7615c7436c06000000c74320fe000000b8b03d1008ffe0c747ec *14c50c088977f0c747f414da1108c747f800000000c747fc00000000c707010000008d77ecc745 *00a49b0c08b89c431008ebc89017000500000000001100000083c7143b7b5c7611c7436c050000 *00be3cd911088b43fcffe0c747f07c9e0c088b45088947f48b450c8947f88b45008947fc8b4504 *89078d77f083c510b8fc301008ebd3e9cf0100008d760003000000120000008d45ec3b43547305 *8b43f8ffe08d45f8c700d46d10088970048b460c8945f48b46088945f08b46048945ec83ed14b8 *b0aa0d08ebd68d760083000000240000008b06668378fe09754683c7183b7b5c760cc7436c0600 *00008b43f8ffe0c747ecb89c0c088b46048947f08b45088947f48b45048947f8c747fc9ce90b08 *8d47ec89078d77fc83c510b8c0351008ebcc89750c83c50cb874e80b08ebbf0300000024000000 *8b750cc74500f89c0c08ff2604000200040000000b0000008d45f43b435473058b43fcffe08b46 *0c8945fc8b46108945f88b46088943048b7604c745f45c9d0c0883ed0cb87c541008ebd8900000 *000024000000be0cd2110883c504ff650090c4010000240000008973048b7504c74510b09d0c08 *83c510e9a3b603008d7600040000002400000083c7203b7b5c7615c7436c08000000c74320fe00 *0000b8b03d1008ffe0c747e4749d0c088b45048947e88977ec8b450c8947f08b45088947f4c747 *f88c6b10088b45108947fc89378d47e48943048d77f8c74500c49d0c08b870331008ebbc900300 *0000240000008b46048945008b7604c745fce49d0c0883ed04e9c8b40300a89c0c080000000000 *00000000000100040000000b0000008d45ec3b435473058b43fcffe08b46108945f48b460c8945 *f88b46088945fc8b7604c745f04c9e0c0883ed108b06ebdba8e211085ce21108e0e11108049f0c *0800000000ac9e0c080000010000000000110007008d45ec3b4354730abe40d911088b43fcffe0 *c745f818da1108c745f448e21108c745fc509f0c0883ed0cb894b10d08ebdf8d7600e9c7ffffff *8d7600b09e0c0800000000240003008b46088945008b46048945fcc745f820da1108c745f4e0e1 *1108c745f048e2110883ed10e9db0701008d7600b09e0c080000000024000300c74500189f0c08 *ff2690909024d91108c0e211085c9f0c080400020000000000110003008d45f83b4354730abe48 *d911088b43fcffe08b45008945f8c745fcfc9f0c0883ed08b88cc30c08ebe78d76008b750483c5 *08ff65008d7600609f0c08010000002400010083c504e96c1301008b45048945fcc74500b89f0c *0883ed04e9970501008d7600c09f0c08c09f0c08c09f0c08c09f0c08c09f0c08a09f0c085c9f0c *08010000002500030080e2110864e21108c8e21108fc9f0c0817000500000000001100070083c7 *083b7b5c7611c7436c02000000be50d911088b43fcffe0c747fc64a30c088b450c89078d47fc89 *450cb868ab0d08ebe589f6be8ce2110883c50cff650090be8ce2110883c50cff650090be70e211 *0883c50cff65009001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d100889 *70048b46048945f483ed0cb804c40c08ebe28d7600e9f70100008d760001000100130000008d45 *f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb808c30c08ebe2 *8d7600000000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec14c50c088b *46048947f0c747f418da11088b460c8947f88b46108947fc8b461489078d77ec83c504b8d46d10 *08ebcc89f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *7604c745f4e8a00c0883ed0c8b06ebe189f6830000002400000083c70c3b7b5c7615c7436c0300 *0000c74320fe000000b8b03d1008ffe0c747f838a10c088977fc8b55048d47f88942048b750883 *c50cb81c091008ebde8d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8b4a00c08 *8b45208947fc8b550c8b450889450c8955088b4510894504c7451014da11088b45148945008d47 *f88945fcc745146ca10c0883ed04b804b70d08ebbb908b45188b55048950048b751c83c520e904 *67030004a20c08aca10c0804a00c08c80100002500010004a00c0803000000240001008975f08b *46148945f48b46108945f88b460c8945fc8b46048945008b7608c745ec2ca20c0883ed14ff2689 *f604a00c0802000000240001008b46048b500489450089d6c745fc38a20c0883ed04ff2690a4a0 *0c080000000004a00c0800000100030000000b0001008d45d83b435473058b43fcffe08b460889 *45f88b46048945fc8b760cc745f470a20c0883ed0c8b06ebe189f683c7283b7b5c760cc7436c0a *0000008b43f8ffe0c747dc8c6b10088b45048947e08b45088947e4c747e878a00c088b45088947 *ecc747f4a0a20c088b45088947f88d47dc8947fc8d47e889078d77f483c50c8b4500ebbb908b75 *0483c504e9d96e030090cca20c0824a30c0824a30c0864a00c0858a00c084ca00c08fc9f0c0802 *00000025000700fc9f0c0804000100010000000c0007008d45f43b435473058b43fcffe08b4500 *8945f48b46048945fcc745f854a30c0883ed0cb88cc30c08ebe1909050d9110890a30c08160004 *0000000000110001008d45fc3b4354730abe58d911088b43fcffe08b7504c745fc4ca40c0883ed *048b06ebed9083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b460889078d *47fc8945088b4504894500897504b818a00c08ebdc89f683c7083b7b5c760cc7436c020000008b *43f8ffe0c747fcd8e90b088b460c89078d47fc8945088b4504894500897504b818a00c08ebdc89 *f600a40c08c8a30c0890a30c08430000002500010030e2110800e2110820e2110810e21108d0e2 *110864de1108b8e111084ca40c08160003000000000011007f0083c7303b7b5c7611c7436c0c00 *0000be60d911088b43fcffe0c747d434a50c088b45048947d8c747e08ca70c088b45048947e48b *45088947e8c747ec88aa0c088b45008947f08b45048947f48d47d48947f88b45088947fc8d47e0 *89078d47ec8945088b4500894504be08d11108b814161008eba28d7600be04d2110883c504ff25 *c06d100889f6befcd1110883c504ff25c46d100889f600a50c0800a50c08f0a40c0800a50c0800 *000000000000002500000001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b7604c745f42ca50c0883ed0c8b06ebe189f68b750483c508ff65008d7600210000 *00240000008b45040b460489c683c508ff650089f6be64de1108c7450074a50c08ff2689f684a5 *0c0860a50c0860a40c08210000002500010060a40c0803000100010000000c0001008d45fc3b43 *5473058b43fcffe08b7604c745fca8a50c0883ed048b06ebed89f6000000002400000083c7083b *7b5c760ec7436c02000000b8f0371008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008eb *e801000000240000008b46048945008b7504c74504e0a50c08eb9289f6be30e21108c7450014a6 *0c08ff2689f6000000002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc *84ed0b0889378d77fc83c504b8d46d1008ebe801000000240000008b46048945008b7504c74504 *40a60c08e92fffffff8d7600be00e21108c7450074a60c08ff2689f6000000002400000083c708 *3b7b5c760ec7436c02000000b8f0371008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008 *ebe801000000240000008b46048945008b7504c74504a4a60c08e9cbfeffff8d7600be10e21108 *c74500d8a60c08ff2689f6000000002400000083c7083b7b5c760ec7436c02000000b8f0371008 *ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe801000000240000008b46048945008b *7504c7450408a70c08e967feffff8d7600be20e21108c745003ca70c08ff2689f654a70c08f0a6 *0c088ca60c0828a60c084ca40c080100000025000f004ca40c080200000015002f008d45f03b43 *54720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fcb8 *a50c088b460889078d47fc8945f48b7604c745f080a70c0883ed108b06ebcf90eb5689f6000000 *002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed *0b0889378d77fc83c5048b4500ebea8d7600d8a70c080000000000000000000001000000020010 *0000008d45f03b435473058b43fcffe0c745f8b60100008b46088945f48b46048945f0c745fce4 *a70c0883ed10b894240d08ebda8d7600000000002400000083c7083b7b5c760cc7436c02000000 *8b43f8ffe0c747fc54dc0b088b460489078d77fc83c504b8d46d1008ebe58d7600010001001300 *00008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f46ca80c0883ed *0c8b06ebe189f6010000002400000083c504e9943fffff01000000240000008b46048945fcc745 *00d8a80c0883ed04e90f7c00008d760004000200010000000c0000008d45f83b435473058b43fc *ffe08b7604c745fce8a80c0883ed048b06ebed89f65ca40c0805000000120001008d45dc3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b460c8945f48b46108945f08b46088945ec8b46 *048945e8c745e4e0d011088b46148945e0bed0e2110883ed24b8fc231008ebbe8d76005ca40c08 *040000002400010083c72c3b7b5c7615c7436c0b000000c74320fe000000b8b03d1008ffe0c747 *d8a4a80c088977dcc747e40ca90c088d47d88947e8c747ec38a90c088b45108947f08b450c8947 *f48b45088947f88b45048947fc8d47d889078d47e48943048d77ec83c514b870331008ebb0905c *a40c08250000002400050083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f830a80c088b *45048947fc8b460489078d47f8894500c745fcb8e11108c745f8cce11108c7450494a90c0883ed *08b808880d08ebc7905ca40c0805000000240005008b55048b460489450489d6c745000caa0c08 *ff265ca40c0804000200050000000b0005008d45e43b435473058b43fcffe08b46148945f08b46 *108945f48b460c8945f88b46088945fc8b55008b460489450089d6c745ec64aa0c0883ed148b06 *ebcd909060d91108b8e11108c8aa0c080b000300000000001100030083c7143b7b5c7611c7436c *05000000be68d911088b43fcffe0c747f03cac0c088b45008947f4c747f870ac0c088b45008947 *fc8b450489078d47f08943048d77f883c508b870331008ebcc90ccaa0c08010000002400010083 *c7203b7b5c760cc7436c080000008b43f8ffe0c747e494b90b088b45048947e8c747ecece80b08 *8b46048947f08b46088947f4c747f8b8e111088b46108947fc8d47e489078d77ec83c508b8d46d *1008ebbf90ccaa0c0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46048945f48b7608c745f038ab0c0883ed108b06ebdbccaa0c0801000000240001008b *06668378fe09754083c7143b7b5c760cc7436c050000008b43f8ffe0c747f098ab0c088b450489 *47f48b46048947f8c747fc9ce90b088d47f089078d77fc83c508b8c0351008ebd289750483c504 *b874e80b08ebc589f6ccaa0c0804000200010000000c0001008d45fc3b435473058b43fcffe08b *55008b460489450089d6c745fcd4ab0c0883ed048b06ebe589f6c8aa0c0802000000150001008d *45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f4fcd111088b46088945f08b46 *048945ec83ed14b878a40c08ebd59090b8b0ac0c08ffe090833d60181208000f85a0000000c705 *6018120801000000c74500b4ed0b0883c504c7450078df0b0883c504c74500a01f0c0883c504c7 *450064050c0883c504c745000c1e0c0883c504c74500fce00b0883c504c74500cce70b0883c504 *c74500d8c80b0883c504c745000cde0b0883c504c74500984a0c0883c504c7450004a10b0883c5 *04c7450094b40b0883c504c74500d8480c0883c504c74500ccbe0b0883c504c7450050be0b0883 *c50483ed04ff65009070d9110864ad0c080400020000000000110001008d45f43b4354730abe80 *d911088b43fcffe08b7500c7450078af0c088b06ebf0be70d9110883c50cff6500904200000024 *00000083c7243b7b5c7615c7436c09000000c74320fe000000b8b03d1008ffe0c747e014c50c08 *8977e4c747e818da1108c747ec00000000c747f0000000008b45088947f4c747f8e4bb0b088b45 *048947fc8d47e089078d77f883c50c8b4500ebbc9042000000240000008b46048945088b7604c7 *4500acad0c08e9579403008d76008b4504894500c7450414ae0c08e94614000089f60100000024 *00000083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec14c50c088b45048947f0c747f4 *18da1108c747f800000000c747fc000000008b460489078d77ec83c508b8d46d1008ebca020000 *00150000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945ec8b4608 *8945f4c745f048ae0c0883ed14b884c20c08ebd589f683c7183b7b5c760cc7436c060000008b43 *f8ffe08b550c8b4608894204c747ec98ae0c088b45048947f08b46048947f4c747f8e4bb0b088b *45088947fc8d47ec89078d77f883c5108b4500ebc58d7600d0ae0c082cae0c0800000000030000 *00250000008b45088b50048b45048b400489450089750489d6c745fc34af0c0883ed04ff2634af *0c0834af0c0898ad0c0864ad0c08020000002500010064ad0c0800000000240001008b46148945 *fc8b46188945008b7610c745f86caf0c0883ed08ff269068507574537472000000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *854e03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f094 *af0c0883ed10b84cce0b08ebbf9024d9110858d9110810e3110800b00c080a0003000000000011 *0007008d45fc3b4354720883c70c3b7b5c7611c7436c03000000be98d911088b43fcffe00fbe45 *04c747f81cb30c088b55048957fc89078d47f8894504c745fc10e3110883ed04b8a4a30c08ebd4 *90000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c7 *47fc84ed0b0889378d77fc83c5048b4500ebea8d76000300020000000200100000008b56088b46 *04c7450070b00c08c74424080100000089442404891424e88be3f7ff89c6ff650089f6eb2e89f6 *0000000024000000be0cd2110883c504ff650090d8b00c08000000000000000000000100000001 *000d0000008d45fc3b435473058b43fcffe08b7604c745fce4b00c0883ed04b870571008ebea8d *76004200000024000000be0cd2110883c50cff65009008b00c0883000000240001008b45048945 *008975fcc745f810e31108c745f4c8e11108c7450434b10c0883ed0ce98ad7000089f6c745f800 *0000008b750cc745004cb10c08c745fc5873100883ed0ce9945e0300c745f8010000008b750cc7 *45004cb10c08c745fc5873100883ed0ce9745e030094b10c0874b10c0808b00c08030000002500 *010008b00c08230000002400010083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0b0b0 *0c088b45048947f48b46048947f8c747fc08b10c088b460489078d47fc8945048b450c8945fc8d *47f089450cc74500c8b10c0883ed04b8b4c30c08ebbc89f608b00c0863000000240001008d4e08 *0fb645048846088b450c8945fc894d04897508c74500d4b10c0883ed04e9ab1000008d7600be01 *000000c7450038b20c08e95b9003008d760083c7083b7b5c760cc7436c020000008b43f8ffe0c7 *47fc3cdc0b088b45088907c7450804d211088b450c8945048d47fc89450c83c504b8e8d50d08eb *d58d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc3cdc0b088b45088907c74508 *fcd111088b450c8945048d47fc89450c83c504b8e8d50d08ebd58d7600b4b20c0874b20c0860b2 *0c0800b00c08630000002500050000b00c080400020000000200100005008d45e83b435473058b *43fcffe08b45008945f08b46088945f88b46048945fcc745f40cb30c0883ed10b8dcc30c08ebdb *40e311089ce2110830e3110868e311084cb30c08150003000000000011000f008d45fc3b435472 *0883c70c3b7b5c7611c7436c03000000bea0d911088b43fcffe08b550885d27510be70e3110883 *c50c83ef0c8b4500ebe785d2782cc747f844b40c088b45048947fc89178d47f88945088b450089 *4504c7450030e31108be9ce2110883ed04eb22c747f854dc0b088957fc8d47f8894508c7450430 *e31108be58e3110883ed0483ef04b8e41a1008eb8e8d760058b30c0842000000240001008b4504 *894500c74504000000008b460c8945fc8b46148945f88b46208945f483ed0ce9c92401009058b3 *0c0804000200010001000f0001008d45ec3b435473058b43fcffe08b46048945fc8b55008b4608 *89450089d6c745f80cb40c0883ed088b06ebdf40e3110858d91108e0e2110850e3110828b50c08 *8400000070b40c08000004000000000011000f0083c7103b7b5c7611c7436c04000000bea8d911 *088b43fcffe08b550885d27510be74e3110883c51083ef108b4500ebe785d2782fc747f478b50c *088b45048947f88b450c8947fc89178d47f489450c8b4500894508c74504e0e21108be58d91108 *eb25c747f454dc0b088957f88d47f489450cc74508e0e211088b4500894504be58e3110883ef08 *b8e41a1008eb8890e96bffffff8d76007cb40c0883000000240001008b55088b450c8945088b45 *0489450c8955048b460c8945008b46148945fc8b46208945f883ed08e9981701007cb40c080400 *0200020001000b0001008d45ec3b435473058b43fcffe08b46088945f88b46048945fc8b55008b *460c89450089d6c745f43cb50c0883ed0c8b06ebd990908ce2110878e2110820e3110888e31108 *acb50c08040002000000000011000f008d45f43b4354720883c7143b7b5c7611c7436c05000000 *beb0d911088b43fcffe0c747f02cb60c088b45008947f4c747fc9cb70c088d47f089078b75008d *47fc894500c745fc54b80c0883ed048b06ebce8d7600b8b50c0801000100130001008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb814e10d08ebe28d7600 *83c50ce930f4000083c50ce928f4000083c50ce9f0f3000083c50ce9e8f3000000000000240000 *0083c7243b7b5c760cc7436c090000008b43f8ffe0c747e02cc50c08c747e41cda11088b460889 *47e88b460c8947ec8b46108947f08b46148947f48b46188947f88b461c8947fc8b462089078d77 *e083c504b8d46d1008ebba01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b7604c745f480b60c0883ed0c8b06ebe189f6010000002400000083c7183b7b5c76 *15c7436c06000000c74320fe000000b8b03d1008ffe0c747ece0b60c088b45048947f0c747f8e4 *bb0b088d47ec8947fc89378d77f883c5088b4500ebd78b7504c7450414b70c08e9b55103009058 *b70c0870b60c0868b60c0858b70c0860b60c0858b60c08acb50c080200000025000300acb50c08 *04000200010000000c0003008d45f43b435473058b43fcffe08b45008945f48b46048945fcc745 *f88cb70c0883ed0cb88cc30c08ebe189f683c7083b7b5c760cc7436c020000008b43f8ffe0c747 *fcd8e90b088b460889078d47fc8945008975fcc745f820e3110883ed08b880ae0d08ebd889f683 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b460889078d47fc8945008975 *fcc745f820e3110883ed08b880ae0d08ebd889f604b80c08c8b70c08b4b50c0801000000250001 *0098d91108b8d9110854b80c080b00030000000000110003008d45f43b4354730abeb8d911088b *43fcffe08b7504c745fc00b90c0883ed048b06ebed90be0cd2110883c50cff65009058b80c0802 *0000002400010083c504e9bcffffff54b80c0802000000240003008b46048945fc8b45048945f8 *c74500a8b80c0883ed08e945f7ffff908b46088945088b7604c74500bcb80c08ff2689f6d8b80c *0890b80c0854b80c084200000025000300c8d9110800b90c081600040000000000110001008d45 *f43b4354730abec0d911088b43fcffe08b7504c745fc94b90c0883ed048b06ebed9058d9110824 *d9110800e31108c0d91108bcb90c088603000038b90c08000007000000000011000f008d45e83b *4354730abec8d911088b43fcffe08b45148945f8be0000000083ed08b808bc0c08ebe99000b90c *0843000000240001008b46148945088b460c8945008b46048945fc8b45048945f88b4610894504 *83ed08e9a6ffffff89f6e99fffffff8d76003cb90c0804000200010002000b0001008d45ec3b43 *5473058b43fcffe0c745fcfcd11108c745f804d211088b46088945f48b460c8945f08b46048945 *ec83ed14b8dcc20d08ebd49044b90c08481f0000240001008b450489452089751c8b450c894518 *83c518e9e5feffff903cb90c0804000200010002000b0001008d45ec3b435473058b43fcffe0c7 *45fc04d21108c745f8fcd111088b46088945f48b460c8945f08b46048945ec83ed14b8dcc20d08 *ebd4900000000024000000be0cd2110883c504ff65009083c7103b7b5c760cc7436c040000008b *43f8ffe0c747f440ba0c088b45088947f88b45188947fc8b451489078d47f48945148b45048945 *10c7450c00e31108c7451880ba0c0883c50cb8a4a30c08ebc23cb90c0804000200010002000b00 *01008d45ec3b435473058b43fcffe0c745fcfcd11108c745f804d211088b460c8945f48b460889 *45f08b46048945ec83ed14b8dcc20d08ebd49044b90c08c6060000240001008b45108945188975 *148b450489451083c510e9cdfdffff9038b90c088606000024000f0083c7103b7b5c760cc7436c *040000008b43f8ffe00fb64e048b55088b4518884c1008837e040a753d8b551842c747f4ecba0c *088b45088947f88b45148947fc89178d47f48945fc8b45048945f8c745f400e31108c7450030bb *0c0883ed0cb8a4a30c08ebad8b5518428b45108945fc89d683ed0483ef10b808bc0c08eb9489f6 *8b46088945108b7604c7450054bb0c08ff2689f6d4bb0c088cba0c0838b90c088607000025000f *0038b90c088607000024000f0083c7103b7b5c761cc7436c04000000c7450408bc0c08c74320ff *000001b8b03d1008ffe03b7518741789751c8b7500c74504fcbb0c0883c50483ef108b06ebe2c7 *47f4d4b90c088b450c8947f88977fc8b451889078d47f48945f88b45088945f4c745f000e31108 *c745fc18ba0c0883ed10b8a4a30c08eba9909090d8d9110884bc0c081600040000000000110001 *008d45f43b4354730abed0d911088b43fcffe08b7504c745fc18bd0c0883ed048b06ebed9058d9 *110824d9110800e31108d0d9110840bd0c0886030000bcbc0c08000007000000000011000f008d *45e83b4354730abed8d911088b43fcffe08b45148945f8be0000000083ed08b8c0be0c08ebe990 *84bc0c0843000000240001008b46148945088b460c8945008b46048945fc8b45048945f88b4610 *89450483ed08e9a6ffffff89f6e99fffffff8d7600c0bc0c0804000200010002000b0001008d45 *ec3b435473058b43fcffe0c745fcfcd11108c745f804d211088b46088945f48b460c8945f08b46 *048945ec83ed14b8dcc20d08ebd490c8bc0c08481f0000240001008b450489452089751c8b450c *89451883c518e9e5feffff90c0bc0c0804000200010002000b0001008d45ec3b435473058b43fc *ffe0c745fc04d21108c745f8fcd111088b46088945f48b460c8945f08b46048945ec83ed14b8dc *c20d08ebd4900000000024000000be0cd2110883c504ff65009083c7103b7b5c760cc7436c0400 *00008b43f8ffe0c747f4c4bd0c088b45088947f88b45188947fc8b451489078d47f48945148b45 *04894510c7450c00e31108c7451804be0c0883c50cb8a4a30c08ebc2bcbc0c088606000024000f *000fb64e048b55088b4518884c10088b5518428b45108945fc89d683ed04eb35908b4608894510 *8b7604c745006cbe0c08ff2689f68cbe0c0810be0c08bcbc0c088607000025000f00bcbc0c0886 *07000024000f0083c7103b7b5c761cc7436c04000000c74504c0be0c08c74320ff000001b8b03d *1008ffe03b7518741789751c8b7500c74504b4be0c0883c50483ef108b06ebe2c747f458bd0c08 *8b450c8947f88977fc8b451889078d47f48945f88b45088945f4c745f000e31108c745fc9cbd0c *0883ed10b8a4a30c08eba990909004000200000000001100000083c7083b7b5c7611c7436c0200 *0000bee0d911088b43fcffe0c747fc9ce90b088b450089078d77fc83c504b8c0351008ebe59090 *0b00020000000000110000008b7500c7450038c00c08ff26be04d2110883c5048b4500ff60ec89 *f6befcd1110883c5048b4500ff60f089f6a4bf0c0894bf0c080000000000000000250000008b75 *04c74504c8bf0c0883c504ff2690befcd1110883c5088b4500ff60f089f68b45048945008b4604 *894504e92bd100008d7600e8bf0c08d8bf0c080000000001000000250000008b55048b46048945 *0489d6c7450010c00c08ff2610c00c08c8bf0c080000000001000000250000000b000200000000 *00110000008b7500c7450040c10c08ff26befcd1110883c5048b4500ff60f089f6be04d2110883 *c5048b4500ff60ec89f660c00c0850c00c080000000000000000250000008b7504c7450484c00c *0883c504ff2690be04d2110883c5088b4500ff60ec89f621000000240000008b45043b46047510 *befcd1110883c5088b45008b40f0ffe0be04d2110883c5088b45008b40ecebee01000000240000 *008b55048b460489450489d6c74500acc00c08ff268b55048b460489450489d6c74500dcc00c08 *ff26f0c00c0894c00c080000000001000000250000008b55048b460489450489d6c7450018c10c *08ff2618c10c0884c00c0800000000010000002500000004000200000000001100000083c7143b *7b5c7611c7436c05000000beecd911088b43fcffe0c747f094c10c088b45008947f4c747fc9ce9 *0b088d47f089078d77fc83c504b8c0351008ebd89001000100130000008d45f43b435473058b43 *f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e8ee0d08ebe29090900400020000 *000000110000008b750083c504ff65009090900b00030000000000110000008d45fc3b4354730a *bef4d911088b43fcffe08b7500c7450014c20c0883ed04b81c091008ebea89f601000000240000 *008b450489750489c6e9c75103009090900b000300000000001100000083c7083b7b5c7611c743 *6c02000000bef8d911088b43fcffe0c747fc70c20c088b450489078d47fc894504b8e4c10c08eb *e589f604000100010000000c0000008b7604e9244503000400010000000000110000008d45fc3b *4354730abefcd911088b43fcffe08b7500c74500f0c20c088b06ebf0210000002400000083c708 *3b7b5c761cc7436c02000000c74500acc20c08c74320ff000000b8b03d1008ffe0c747fc54dc0b *088b450489078d77fc83c5088b4500ebe79000000000240000008b461489450083ed04ebb19004 *00010000000000110000008d45fc3b4354730abe00da11088b43fcffe08b7500c7450074c30c08 *8b06ebf0210000002400000083c7083b7b5c761cc7436c02000000c7450030c30c08c74320ff00 *0000b8b03d1008ffe0c747fc54dc0b088b450489078d77fc83c5088b4500ebe790000000002400 *00008b462089450083ed04ebb1900400010000000000110000008b7500c74500a0c30c08ff2600 *000000240000008b760483c504ff260400010000000000110000008b7500c74500c8c30c08ff26 *00000000240000008b760c83c504ff260400010000000000110000008b7500c74500f0c30c08ff *2600000000240000008b761083c504ff260400010000000000110000008d45fc3b4354730abe10 *da11088b43fcffe08b7500c7450070c40c088b06ebf0010000002400000083c7083b7b5c761cc7 *436c02000000c745002cc40c08c74320ff000000b8b03d1008ffe0c747fcd4f10c088b45048907 *8d77fc83c5088b4500ebe79000000000240000008b461489450083ed04ebb19004000100000000 *00110000008b7500e90c430300000000000a000100ff6500900100000002000800ff6500900100 *000009000800ff650090000000000a0000008b4500ff60f09090000000000a0001008b4500ff60 *ec9090000000000a0003008b4500ff60e49090000000000a0000008b4500ff60f0909000000000 *0a0001008b4500ff60ec89f614da110818da11080200030001000000ff65009002000300090000 *00ff6500900700010001000000ff6500900700010009000000ff65009004000100000000001100 *00008d45f83b4354730abe38da11088b43fcffe08b7500c7450070c50c088b06ebf00000000024 *000000c7450000d211088b46048945fcc745f80000000083ed08e9443000001600030000000000 *110000008b7500c74500c8c50c08ff2622000000240000008b45048945008b4604894504e91330 *00008d760002000000240000008b55048b460489450489d6c74500acc50c08ff26040001000000 *0000110000008b7500c74500fcc50c08ff26000000002400000083c7083b7b5c760cc7436c0200 *00008b43f8ffe0c747fcb8050c088b460489078d77fc83c5048b45008b40f0ebe4909094e11108 *2cc60c080b00020000000000110001008b7500c7450070c70c08ff2600000200170000008d45f8 *3b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d10088970048b46 *0499f77e08c747fc84ed0b0889178d77fc83ed08b8d46d1008ebd58d760000000200170000008d *45f83b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004 *8b460499f77e08c747fc84ed0b0889078d77fc83ed08b8d46d1008ebd58d76002cc60c08210000 *002400010083c7243b7b5c760cc7436c090000008b43f8ffe08b560485d27512be94e1110883c5 *0483ef24b89c071008ebe5c747e054c60c088b45048947e48957e8c747eca4c60c088b45048947 *f08957f4c747f8e4bb0b088d47ec8947fc8d47e089078d77f883c5088b4500eba889f62cc60c08 *01000000240001008b55048b460489450489d6c74500f8c60c08ff2694e1110884c70c080b0002 *0000000000110001008b7500c74500d0c70c08ff2684c70c0821000000240001008b4504894500 *8b4604894504e9bb3001008d760084c70c0801000000240001008b55048b460489450489d6c745 *00b0c70c08ff2694e11108e4c70c080b00020000000000110001008b7500c7450068c80c08ff26 *e4c70c08210000002400010083c7083b7b5c760cc7436c020000008b43f8ffe08b560485d27512 *be94e1110883c50483ef08b89c071008ebe58b450489d199f7f9c747fc84ed0b0889078d77fc83 *c5088b4500ebc98d7600e4c70c0801000000240001008b55048b460489450489d6c7450010c80c *08ff2694e111087cc80c080b00020000000000110001008d45fc3b4354730abe6cda11088b43fc *ffe08b7500c745002cc90c088b06ebf0000000002400000083c7083b7b5c760ec7436c02000000 *b8f0371008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea89f67cc80c08210000002400 *01008b460485c0750fbe94e1110883c504b89c071008ffe08945008b45048945fcc74504b8c80c *0883ed04b88c910d08ebe47cc80c0801000000240001008b55048b460489450489d6c74500f0c8 *0c08ff2694e1110840c90c080b00020000000000110001008d45fc3b4354730abe74da11088b43 *fcffe08b7500c74500f0c90c088b06ebf0000000002400000083c7083b7b5c760ec7436c020000 *00b8f0371008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea89f640c90c082100000024 *0001008b460485c0750fbe94e1110883c504b89c071008ffe08945008b45048945fcc745047cc9 *0c0883ed04b8d8910d08ebe440c90c0801000000240001008b55048b460489450489d6c74500b4 *c90c08ff2694e1110804ca0c080b00020000000000110001008b7500c7450088ca0c08ff2604ca *0c08210000002400010083c7083b7b5c760cc7436c020000008b43f8ffe08b560485d27512be94 *e1110883c50483ef08b89c071008ebe58b450489d199f7f9c747fc84ed0b0889178d77fc83c508 *8b4500ebc98d760004ca0c0801000000240001008b55048b460489450489d6c7450030ca0c08ff *260b00020000000000110000008b7500c74500f0ca0c08ff2621000000240000008b45043b4604 *0f94c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760001 *000000240000008b55048b460489450489d6c74500bcca0c08ff260b0002000000000011000000 *8b7500c7450054cb0c08ff2621000000240000008b45043b46047510befcd1110883c5088b4500 *8b40f0ffe0be04d2110883c5088b45008b40ecebee01000000240000008b55048b460489450489 *d6c7450024cb0c08ff26d8dc11089cda110868cb0c0800000200180003008d45f43b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8ad3203008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f49cda110883ed0cb824fc0c08ebc6170004 *0000000000110000008d45fc3b4354730abeb0da11088b43fcffe08b7508c745fcf4cc0c0883ed *048b06ebed908b750883c510e9913b0300908b750883c510e9853b03009004000000120000008d *45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46108945f48b460c8945f08b4608 *8945ec8b46048945e883ed18b8dccb0c08ebd09083c7143b7b5c760cc7436c050000008b43f8ff *e0c747f020cc0c088b45048947f48b45088947f88b450c8947fc8b460889078b460489450c8b45 *108945088d47f08945108b750483c504b8e41a1008ebc18d76005ccc0c080ccc0c080000000004 *000000250000008b460889450c8b55108b460489451089d6c74500c4cc0c08ff2689f6c4cc0c08 *00cc0c080000000084000000250000000b00020000000000110000008d45fc3b4354730abeb4da *11088b43fcffe08b7504c745fcc8cd0c0883ed048b06ebed90be00d2110883c50c8b4500ff60f0 *89f602000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460889 *45f48b46048945f083ed10b800cd0c08ebdc9083c7183b7b5c760cc7436c060000008b43f8ffe0 *c747ec3ccd0c088b46048947f08b46088947f4c747f87cdc0b088b45048947fc8d47ec89078d77 *f883c50c8b45008b40ecebcb906ccd0c0824cd0c080000000042000000250000000b0002000000 *0000110000008d45fc3b4354730abeb8da11088b43fcffe08b7504c745fc2cce0c0883ed048b06 *ebed908b750483c508e999390300908b46088945088b460489450483c504e9bcffffff04ce0c08 *f8cd0c080000000042000000250000000900020000000000110000008b450085c0750a8b750483 *c5088b06ffe08b7504894504c7450090ce0c08ebedbe00d2110883c5088b4500ff60f089f68b45 *04488b5608895504894500e9beffffff89f668ce0c0858ce0c0800000000210000002500000054 *d211084ce4110890ce0c0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8852f03008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f44ce41108be54d2110883ed10b808121008ebc190909054d211085ce4 *110800cf0c0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8152f03008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f45ce41108be54d2110883ed10b808121008ebc190909054d211086ce4110870cf0c *0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8a52e03008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f46ce41108be54d2110883ed10b808121008ebc190909054d211087ce41108e0cf0c0800000200 *180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8352e03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f47ce41108 *be54d2110883ed10b808121008ebc19090900900020000000000110000008b450085c07510be00 *d2110883c5088b45008b40f0ffe08b7504894504c7450028d10c088b06ebedbe00d2110883c508 *8b4500ff60f089f601000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *70048b56084a8b46048945f48955f083ed10b85cd00c08ebdb83c7183b7b5c760cc7436c060000 *008b43f8ffe0c747ec9cd00c088b46088947f08b45048947f4c747f87cdc0b088b46048947fc8d *47ec89078d77f883c5088b45008b40ecebcb90ccd00c0884d00c08000000002100000025000000 *16000300000000001100000083c7183b7b5c7611c7436c06000000be04db11088b43fcffe0c747 *ece4bb0b088b45008947f08b45048947f4c747f87cdc0b088d47ec8947fc8b450889078d77f883 *c50c8b45008b40ecebcb0b00020000000000110000008d45f03b4354730abe08db11088b43fcff *e08b7500c7450024d40c088b06ebf0c40100002400000083c7183b7b5c7615c7436c06000000c7 *4320ff000001b8b03d1008ffe0c747ecccdc0c088b45008947f08977f4c747f8ccdc0c088b4508 *8947fc8b451489078d47ec8945148d47f889451083c510b88cd10c08ebc68d7600620000002400 *000089750c8b7508c745fcb4d10c0883ed04e95b7303008d760083c7083b7b5c760cc7436c0200 *00008b43f8ffe08b450489c12b4e0433460489ca33550485c27817c747fcb8050c08890f8d77fc *83c5088b45008b40f0ebd38b46048945008b7504c745fc14d20c0883ed0483ef08b884451008eb *b6420000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c7 *47f8ccdc0c088b45008947fc89378b450889450c8d47f889450883c508b88cd10c08ebd989f689 *75008b7504c745fc90d20c0883ed04e99b7203008d7600d4d20c082cd20c080000000021000000 *250000008b55048b460489450489d6c7450000d30c08ff26010000002400000083c70c3b7b5c76 *15c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378b45 *088945048d47f889450883c504b88cd10c08ebd989f68b7604c745081cd30c0883c508e9127203 *0089f6000000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ff *e0c747f8ccdc0c088b45008947fc89378d77f883c5088b45008b40ecebe189f68b460489430c8b *46088943088b45048943048b7508c7450c7cd30c0883c50ce9d0740300b8d30c0860d30c080000 *000043000000250000008b46048945fc8b46088945008b450489750489c6c745f8f0d30c0883ed *08ff26f0d30c0800d30c080000000001000000250000000400010000000000110000008d45fc3b *4354730abe0cdb11088b43fcffe08b45008945fcc7450064d40c0883ed04b86cff0d08ebe78d76 *00000000002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc54dc0b0889 *378d77fc83c5048b4500ebea90900400010000000000110000008b7500c74500b0d40c08ff2600 *0000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0837e040079198b4604f7d8c7 *47fc54dc0b0889078d77fc83c5048b4500ebdf83c50483ef088b06ebd590909004000100000000 *00110000008b7500c7450010d50c08ff260000000024000000837e0400781a837e0400750dbeb0 *e4110883c504e92b07ffffbea8e41108ebf1beb8e41108ebea900400010000000000110000008b *750083c504ff260400010000000000110000008b7500c74500e8d50c08ff26837e0400781a837e *0400750dbe90e4110883c504e93b30ffffbea0e41108ebf1be98e41108ebea9000000000240000 *0085f67f1885f6750dbe90e4110883c504e90f30ffffbe98e41108ebf1bea0e41108ebea90c743 *08000000008b46048943048b7608c7450094d50c08e9647a0300b8d50c0864d50c080000000000 *000000250000000b00020000000000110000008d45f03b4354730abe30db11088b43fcffe08b75 *00c74500a0d80c088b06ebf0c40100002400000083c7183b7b5c7615c7436c06000000c74320ff *000001b8b03d1008ffe0c747ecccdc0c088b45008947f08977f4c747f8ccdc0c088b45088947fc *8b451489078d47ec8945148d47f889451083c510b8f4d50c08ebc68d7600620000002400000089 *750c8b7508c745fc1cd60c0883ed04e9f36e03008d760083c7083b7b5c760cc7436c020000008b *43f8ffe08b4604f76d0489c18d420183f801770d8b450489c233560431cac1ea1f85d2751e8b45 *040faf4604c747fcb8050c0889078d77fc83c5088b45008b40f0ebbf8b46048945008b7504c745 *fc7cd60c0883ed0483ef08b884451008eba2420000002400000083c70c3b7b5c7615c7436c0300 *0000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378b450889450c8d47 *f889450883c508b8f4d50c08ebd989f68975008b7504c745fc0cd70c0883ed04e91f6e03008d76 *0050d70c0894d60c080000000021000000250000008b55048b460489450489d6c745007cd70c08 *ff26010000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0 *c747f8ccdc0c088b45008947fc89378b45088945048d47f889450883c504b8f4d50c08ebd989f6 *8b7604c7450898d70c0883c508e9966d030089f6000000002400000083c70c3b7b5c7615c7436c *03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d77f883c508 *8b45008b40ecebe189f68b460489430c8b46088943088b45048943048b7508c7450cf8d70c0883 *c50ce9ec70030034d80c08dcd70c080000000043000000250000008b46048945fc8b4608894500 *8b450489750489c6c745f86cd80c0883ed08ff266cd80c087cd70c080000000001000000250000 *000b00020000000000110000008d45f03b4354730abe34db11088b43fcffe08b7500c7450048db *0c088b06ebf0c40100002400000083c7183b7b5c7615c7436c06000000c74320ff000001b8b03d *1008ffe0c747ecccdc0c088b45008947f08977f4c747f8ccdc0c088b45088947fc8b451489078d *47ec8945148d47f889451083c510b8acd80c08ebc68d7600620000002400000089750c8b7508c7 *45fcd4d80c0883ed04e93b6c03008d760083c7083b7b5c760cc7436c020000008b43f8ffe08b45 *0489c1034e04334604f7d089ca33550485c27817c747fcb8050c08890f8d77fc83c5088b45008b *40f0ebd18b46048945008b7504c745fc34d90c0883ed0483ef08b884451008ebb489f642000000 *2400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c *088b45008947fc89378b450889450c8d47f889450883c508b8acd80c08ebd989f68975008b7504 *c745fcb4d90c0883ed04e9776b03008d7600f8d90c084cd90c080000000021000000250000008b *55048b460489450489d6c7450024da0c08ff26010000002400000083c70c3b7b5c7615c7436c03 *000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378b45088945048d *47f889450883c504b8acd80c08ebd989f68b7604c7450840da0c0883c508e9ee6a030089f60000 *00002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8cc *dc0c088b45008947fc89378d77f883c5088b45008b40ecebe189f68b460489430c8b4608894308 *8b45048943048b7508c7450ca0da0c0883c50ce9146d0300dcda0c0884da0c0800000000430000 *00250000008b46048945fc8b46088945008b450489750489c6c745f814db0c0883ed08ff2614db *0c0824da0c08000000000100000025000000c8e4110848db0c080400010000000000110001008b *7500c74500fcdb0c08ff2683c7083b7b5c760cc7436c020000008b43f8ffe08b46043d00000080 *750fbec8e4110883c50483ef088b06ebe5f7d8c747fcb8050c0889078d77fc83c5048b45008b40 *f0ebcc89f683c70c3b7b5c760cc7436c030000008b43f8ffe08b4608f7d8c747f8ccdc0c088b56 *048957fc89078d77f883c5048b45008b40ecebdc89f6b0db0c0868db0c0848db0c080000000025 *000100c8e41108fcdb0c080400010000000000110001008b7500c74500c4dc0c08ff2683c7083b *7b5c760cc7436c020000008b43f8ffe08b46043d000000807507bec8e41108eb1d85c07919f7d8 *c747fcb8050c0889078d77fc83c5048b45008b40f0ebd083c50483ef088b06ebc683c70c3b7b5c *760cc7436c030000008b43f8ffe0837e080079228b4608f7d8c747f8ccdc0c088b56048957fc89 *078d77f883c5048b45008b40ecebd683c50483ef0c8b06ebcc89f668dc0c081cdc0c08fcdb0c08 *000000002500010001000100050001008b4500ff60ec89f601000100090001008b4500ff60ec90 *905072656c7564652e726561643a206e6f207061727365009000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8252103008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0e4dc0c0883ed10 *b84cce0b08ebbf905072656c7564652e726561643a20616d626967756f75732070617273650089 *f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8a12003008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f400d21108c745f060dd0c0883ed10b84cce0b08ebbf900400010000000000110000008d45f83b *4354730abe8cdb11088b43fcffe08b7500c7450000df0c088b06ebf0be00d2110883c5048b4500 *ff60f089f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *46048945f483ed0cb8f0dd0c08ebe28d760083c7183b7b5c760cc7436c060000008b43f8ffe0c7 *47ec28de0c088b45088947f0c747f87cdc0b088b45048947fc8d47ec89078d77f883c50c8b4500 *8b40ecebd18d760083c508e950ffffff98de0c0854de0c08000000000200000025000000010000 *00240000008b46048945008b7608c745fcb4de0c0883ed04ff268d76008b46088945008b7604c7 *45fcbcde0c0883ed04ff268d7600d4de0c0810de0c0800000000000000002500000070d6110800 *df0c0804000100000000001100010083c7243b7b5c7611c7436c09000000be90db11088b43fcff *e0c747e078df0c088b45008947e4c747ecb0df0c088d47e08947f0c747f4c8df0c088d47ec8947 *f8c747fcc05e0c088d47f489078d77fc83c5048b45008b40ecebbd89f601000100130000008d45 *f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e4500c08ebe2 *8d760004000100010000000c0000008b760483c504ff2600df0c0804000100010000000c000100 *8d45f83b435473058b43fcffe0c745fc081210088b45008945f88b460489450083ed08b8385d0c *08ebe1909048d71108f4df0c0804000100000000001100010083c7143b7b5c7611c7436c050000 *00bea4db11088b43fcffe0c747f050e00c088b45008947f4c747fc60e30c088d47f089078d77fc *83c5048b4500ebda8d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b46048945f483ed0cb81c620c08ebe28d7600be78d6110883c5088b4500ff60e889 *f68b750483c508ff26be78d6110883c5088b4500ff60e889f694e00c088ce00c08000000000100 *0000250000000200000024000000837e042975118b7504c74504b8e00c0883c5048b06ffe0be78 *d6110883c50c8b45008b40e8ebee908b46088945008b7604c745fcc0e00c0883ed04ff268d7600 *e8e00c087ce00c080000000001000000250000008b7604c7450014e10c08ff26be78d6110883c5 *088b4500ff60e889f620e10c0820e10c0820e10c0820e10c0820e10c0814e10c0820e10c0820e1 *0c0800000000010000002500000004000100010000000c0000008d45f83b435473058b43fcffe0 *8b55008b460489450089d6c745fc5ce10c0883ed048b06ebe589f6f4df0c080400010001000000 *0c00010083c7143b7b5c760cc7436c050000008b43fcffe0c747f08c6b10088b46048947f48b45 *008947f8c747fc68e10c088d47f089078d47fc894500b810750c08ebd2f4df0c08030000001200 *01008d45ec3b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008 *897004c747fca0e10c088b460c89078d47fc8945f48b46088945f08b760483ed14b814161008eb *cd8d7600be78d6110883c5088b4500ff60e889f68b750483c508ff26be78d6110883c5088b4500 *ff60e889f654e20c084ce20c080000000001000000250000000200000024000000837e04287511 *8b7504c7450478e20c0883c5048b06ffe0be78d6110883c50c8b45008b40e8ebee908b46088945 *008b7604c745fc80e20c0883ed04ff268d7600a8e20c083ce20c08000000000100000025000000 *8b7604c74500d4e20c08ff26be78d6110883c5088b4500ff60e889f6e0e20c08e0e20c08e0e20c *08e0e20c08e0e20c08d4e20c08e0e20c08e0e20c08000000000100000025000000040001000100 *00000c0000008d45f83b435473058b43fcffe08b55008b460489450089d6c745fc1ce30c0883ed *048b06ebe589f6f4df0c080b000200010000000c00010083c7183b7b5c760cc7436c060000008b *43fcffe0c747ecece10c088b46048947f08b45008947f48b45048947f8c747fc28e30c088d47ec *89078d47fc89450483c504b810750c08ebc990909020d4110848d7110840d7110870d6110868d6 *1108ace30c08040001000000000011001f0083c7203b7b5c7611c7436c08000000beacdb11088b *43fcffe0c747e428e40c088b45008947e8c747f014e70c088d47e48947f4c747f87cec0c088947 *fc8d47f089078d47f8894500b8a80b0c08ebc89001000100130000008d45f43b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f483ed0cb81c620c08ebe28d7600040001000200 *00000e0000008d45fc3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f87cdc *0b088b46048947fc8b450089078d47f88945008b760883ed04b808121008ebd98d760004000100 *030000000b0000008d45f83b435473058b43fcffe08b46048945fc8b45008945f88b4608894500 *8b760c83ed08b814e70c08ebdf05000000120000008d45ec3b4354720883c71c3b7b5c760cc743 *6c070000008b43f8ffe08d45f8c700d46d1008897004c747e860e40c088b460c8947ec8b461089 *47f0c747f4b0e40c088b46088947f88d47e88947fc8b461489078d47f48945f48b46088945f08b *760483ed14b814161008ebae02000000150000008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe08d45f8c700d46d1008897004c747f87cdc0b088b46048947fcc70700d211 *088d47f88945f48b760883ed10b808121008ebcc89f6be78d6110883c50c8b4500ff60e889f68b *750483c50cff26be78d6110883c50c8b4500ff60e889f6c0e50c08b8e50c080000000042000000 *250000008b750483c508ff26be78d6110883c5088b4500ff60e889f6ece50c08e4e50c08000000 *00010000002500000003000000240000008b460483f82c741683f85d75208b7504c74504e4e50c *0883c5048b06ffe08b7504c7450810e60c0883c508ebedbe78d6110883c5108b45008b40e8ebdf *8d76008b46088945008b7604c745fc18e60c0883ed04ff268d760058e60c08a8e50c0800000000 *02000000250000008b7604c7450084e60c08ff26be78d6110883c50c8b4500ff60e889f690e60c *0890e60c0890e60c0890e60c0890e60c0884e60c0890e60c0890e60c0800000000020000002500 *000004000100020000000e0000008d45f43b435473058b43fcffe08b46088945fc8b55008b4604 *89450089d6c745f8cce60c0883ed088b06ebdfb0e30c0816000300010000000c00010083c7303b *7b5c760cc7436c0c0000008b43fcffe0c747d4e4e40c088b46048947d88b45048947dc8b450089 *47e08b45088947e48977e8c747ec58e50c088b45008947f08b45088947f4c747f8d8e60c088d47 *d48947fc8d47ec89078d47f889450883c508b810750c08eba79004000100030000000b0000008d *45f83b435473058b43fcffe08b460c8945fc8b45008945f88b46088945008b760483ed08b814e7 *0c08ebdf04000000120000008d45ec3b4354720883c7103b7b5c760cc7436c040000008b43f8ff *e08d45f8c700d46d1008897004c747f48ce70c088b46088947f88b460c8947fc8b461089078d47 *f48945f48b46108945f08b760483ed14b814161008ebc18d760001000100130000008d45f03b43 *5473058b43f8ffe08d45f8c700d46d1008897004c745f400d211088b760483ed10b808121008eb *de8d7600be78d6110883c5088b4500ff60e889f68b750483c508ff26be78d6110883c5088b4500 *ff60e889f66ce80c0864e80c08000000000100000025000000be78d6110883c5048b4500ff60e8 *89f6be78d6110883c5048b4500ff60e889f6a0e80c0890e80c0800000000000000002500000002 *000000240000008b460483f82c741683f85d75208b7504c7450490e80c0883c5048b06ffe08b75 *04c74508c4e80c0883c508ebedbe78d6110883c50c8b45008b40e8ebdf8d76008b46088945008b *7604c745fccce80c0883ed04ff268d76000ce90c0854e80c080000000001000000250000008b76 *04c7450038e90c08ff26be78d6110883c5088b4500ff60e889f644e90c0844e90c0844e90c0844 *e90c0844e90c0838e90c0844e90c0844e90c080000000001000000250000000400010001000000 *0c0000008d45f83b435473058b43fcffe08b55008b460489450089d6c745fc80e90c0883ed048b *06ebe589f6b4e30c0801000100130001008d45f43b4354720883c7143b7b5c760cc7436c050000 *008b43f8ffe08d45f8c700d46d1008897004c747f024e80c088b46048947f4c747fc8ce90c088d *47f089078d47fc8945f483ed0cb85c6c0c08ebc98d7600b4e30c0801000100130005008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8 *c0e90c088b46048947fc8d47f88945f4c745f0fce4110883ed10b838510c08ebce040001000100 *00000c0000008b760483c504ff26b8e30c0804000100010000000c0001008d45f83b435473058b *43fcffe0c745fc081210088b45008945f88b460489450083ed08b8385d0c08ebe189f6b4e30c08 *04000000120007008d45f03b4354720883c7383b7b5c760cc7436c0e0000008b43f8ffe08d45f8 *c700d46d1008897004c747ccc0e70c088b46048947d08b46088947d48b460c8947d88b46108947 *dcc747e020ea0c088b460c8947e4c747ec78ea0c088d47e08947f0c747f490ea0c088d47ec8947 *f8c747fcc05e0c088d47f489078d47cc8945f48d47fc8945f083ed10b838510c08eb8abe78d611 *0883c5088b4500ff60e889f68b750483c508ff26be78d6110883c5088b4500ff60e889f670eb0c *0868eb0c080000000001000000250000000200000024000000837e045b75118b7504c7450494eb *0c0883c5048b06ffe0be78d6110883c50c8b45008b40e8ebee908b46088945008b7604c745fc9c *eb0c0883ed04ff268d7600c4eb0c0858eb0c080000000001000000250000008b7604c74500f0eb *0c08ff26be78d6110883c5088b4500ff60e889f6fceb0c08fceb0c08fceb0c08fceb0c08fceb0c *08f0eb0c08fceb0c08fceb0c0800000000010000002500000004000100010000000c0000008d45 *f83b435473058b43fcffe08b55008b460489450089d6c745fc38ec0c0883ed048b06ebe589f6b0 *e30c080b000200020000000e000f0083c71c3b7b5c760cc7436c070000008b43fcffe0c747e8c8 *ea0c088b46048947ec8b46088947f08b45048947f48b45008947f8c747fc44ec0c088d47e88907 *8d47fc89450483c504b810750c08ebc39020d4110848d71108ccec0c0800000200180003008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e84911 *03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f410e5110883ed0cb8a80b *0c08ebc620d4110818e5110834ed0c0800000200180003008d45f43b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8e11003008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f418e5110883ed0cb8a80b0c08ebc620e511089ced0c0804 *00010000000000110001008d45fc3b4354730abed4db11088b43fcffe0c745fc20e5110883ed04 *b82c4f0c08ebed90b4db1108d4ed0c080400010000000000110001008d45fc3b4354720883c70c *3b7b5c7611c7436c03000000bedcdb11088b43fcffe0c747f838ee0c088b45008947fc8d47f889 *4500be60d6110883ed04b808121008ebdc90d4ed0c0801000100130001008d45ec3b435473058b *43f8ffe08d45f8c700d46d1008897004c745f464d611088b46048945f0beb4db110883ed14b814 *161008ebd690909020d4110830e5110870ee0c0800000200180003008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a50f03008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f430e5110883ed0cb8a80b0c08ebc6acdb1108e4 *db1108d8ee0c0800000200180003008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e83d0f03008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f4e4db110883ed0cb8d0e30c08ebc638e5110840ef0c0804000100000000001100 *01008d45fc3b4354730abe04dc11088b43fcffe0c745fc38e5110883ed04b82c4f0c08ebed90e4 *db110878ef0c080400010000000000110001008d45fc3b4354720883c70c3b7b5c7611c7436c03 *000000be0cdc11088b43fcffe0c747f8dcef0c088b45008947fc8d47f8894500be60d6110883ed *04b808121008ebdc9078ef0c0801000100130001008d45ec3b435473058b43f8ffe08d45f8c700 *d46d1008897004c745f464d611088b46048945f0bee4db110883ed14b814161008ebd690909008 *e5110814f00c0800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8050e03008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f448e5110883ed0cb894070e08ebc6acdb110814dc110878f00c08000002001800 *03008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e89d0d03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f414dc110883ed *0cb8d0e30c08ebc64ce51108e0f00c080400010000000000110001008d45fc3b4354730abe34dc *11088b43fcffe0c745fc4ce5110883ed04b82c4f0c08ebed9014dc110818f10c08040001000000 *0000110001008d45fc3b4354720883c70c3b7b5c7611c7436c03000000be3cdc11088b43fcffe0 *c747f87cf10c088b45008947fc8d47f8894500be60d6110883ed04b808121008ebdc9018f10c08 *01000100130001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004c745f464d611 *088b46048945f0be14dc110883ed14b814161008ebd69090900900000001000000ff6500900900 *000009000000ff6500900100000002000000ff6500900100000009000000ff6500905b5d009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8390c03008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0e4f10c0883ed10b84cce0b08ebbf90b8e51108c8e511084cf20c08040001000000 *0000110003008b7500c745009cf20c08ff26beb8e5110883c504ff2689f6bec8e5110883c504ff *2689f67cf20c0870f20c084cf20c08000000002500030098e51108a8e511085cdc11089cf20c08 *0b00020000000000110007008b7500c74500c4f50c08ff26c745005cdc1108e95ce7feff83c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc74dc11088b450489078d77f8 *83c50c8b45008b40ecebdd8d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f88c6b *10088b45048947fc8b450889078d47f8894508c74504a8e5110883c504b82cda0b08ebd58d7600 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f88c6b10088b45048947fc8b450889078d *47f8894508c7450498e5110883c504b82cda0b08ebd58d760048f30c0808f30c089cf20c080200 *0000250003009cf20c0803000000120003008d45ec3b435473058b43f8ffe08d45f8c700d46d10 *088970048b460c8945f08b46088945f48b7604c745ec9cf30c0883ed148b06ebd589f683c71c3b *7b5c760cc7436c070000008b43f8ffe0c747e8a8f30c088b46048947ec8b46088947f08b450889 *47f4c747f87cdc0b08c747fc7cdc11088d47e889078d77f883c50c8b45008b40ecebc489f6e0f3 *0c08d0f20c089cf20c0802000000250003009cf20c0804000100010000000c0003008d45f83b43 *5473058b43fcffe08b46048945fc8b450089750089c6c745f844f40c0883ed088b06ebe28d7600 *9cf20c0802000000150003008d45f43b4354720883c7083b7b5c760cc7436c020000008b43f8ff *e08d45f8c700d46d1008897004c747fc54f40c088b460489078b46088945f48d77fc83ed0cb854 *f40c08ebd390c74500a8e51108e94ce5feffc7450098e51108e940e5feffe0f40c08d4f40c089c *f20c0801000000250003009cf20c0803000000120003008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f88cf40c088b46048947fc8b46 *0889078d47f88945f48b760cc745f000f50c0883ed108b06ebc98d760083c71c3b7b5c760cc743 *6c070000008b43f8ffe0c747e80cf50c088b45048947ec8b46088947f08b46048947f4c747f87c *dc0b08c747fc6cdc11088d47e889078d77f883c5088b45008b40ecebc489f660f50c08c4f20c08 *9cf20c08010000002500070010000300000000001100000083c7183b7b5c7611c7436c06000000 *be94dc11088b43fcffe0837d0400793a837d00067e34c747ec40f60c088b45088947f08b450489 *47f4c747f87cdc0b08c747fc4cdc11088d47ec89078d77f883c50c8b45008b40ecebbe83c50483 *ef18b8b0150e08ebb189f601000100160000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe08d45f8c700d46d1008897004c747f87cdc0b08c747fc44dc11088b46048907 *8d47f88945f48b46088945f083ed10b8b0150e08ebc99090901600030000000000110000008b75 *00c74500d0f60c08ff2622000000240000008b45048945008b4604894504e90bffffff8d760002 *000000240000008b55048b460489450489d6c74500b4f60c08ff265cdc1108e4f60c080b000200 *00000000110001008b7500c74500a8f90c08ff26c745005cdc1108e91ce3feff83c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc74dc11088b450489078d77f883c50c8b *45008b40ecebdd8d7600020000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f88c6b10088b45048947fc8b450889078d47f88945088b4604894504c7450000000000b8d0f5 *0c08ebd203000000120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46 *0c8945f08b46088945f48b7604c745ec50f70c0883ed148b06ebd589f683c71c3b7b5c760cc743 *6c070000008b43f8ffe0c747e898f70c088b46048947ec8b46088947f08b45088947f4c747f87c *dc0b08c747fc7cdc11088d47e889078d77f883c50c8b45008b40ecebc489f6d0f70c0810f70c08 *00000000020000002500000004000100010000000c0000008d45f83b435473058b43fcffe08b46 *048945fc8b450089750089c6c745f834f80c0883ed088b06ebe28d760002000000150000008d45 *f43b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c7 *47fc40f80c088b460489078b46088945f48d77fc83ed0cb840f80c08ebd3900200000024000000 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f874f80c088b45088947fc8b450489078d *47f88945088b4604894504c7450000000000b8d0f50c08ebd203000000120000008d45ec3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604c745ecc4f8 *0c0883ed148b06ebd589f683c71c3b7b5c760cc7436c070000008b43f8ffe0c747e80cf90c088b *46048947ec8b45048947f08b46088947f4c747f87cdc0b08c747fc6cdc11088d47e889078d77f8 *83c5088b45008b40ecebc489f644f90c0804f70c08e4f60c080100000025000100040001000000 *0000110000008d45f83b4354730abea4dc11088b43fcffe08b7500c74500dcf90c088b06ebf000 *00000024000000c7450000d211088b46048945fcc745f80000000083ed08e9d8fbffff0b000200 *000000001100000083c70c3b7b5c7611c7436c03000000bea8dc11088b43fcffe0c747f87cdc0b *088b45008947fc8b450489078d77f883c5088b45008b40ecebde90909098e51108a8e5110840fa *0c081600030000000000110003008b7504c7450494fa0c0883c504ff2690c74500a8e51108e9b8 *dffeffc7450098e51108e9acdffeff74fa0c0868fa0c0840fa0c080100000025000300dce51108 *94fa0c080b000200000000001100010083c7183b7b5c7611c7436c06000000bebcdc11088b43fc *ffe0c747ec04fb0c088b45008947f08b45048947f4c747f87cdc0b08c747fc90e511088d47ec89 *078d77f883c5088b45008b40ecebca8d760094fa0c0802000000150001008d45f03b435473058b *43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b834170e08ebdc90 *e4e5110834fb0c081600030000000000110001008b7504c7450464fb0c0883c504ff269034fb0c *0801000000240001008b4604894500e9511d010090e4e5110870fb0c0804000100000000001100 *01008d45fc3b4354730abeccdc11088b43fcffe08b7500c74500b0fb0c088b06ebf070fb0c0800 *00000024000100c7450000d211088b46048945fc83ed04e9fb1c01009090900400010000000000 *110000008d45fc3b4354730abed4dc11088b43fcffe08b7500c74500fcfb0c088b06ebf0000000 *0024000000c7450020e111088b760483ed04e9fa15030090905cdc110810fc0c08040001000000 *00001100010083c7143b7b5c7611c7436c05000000bed8dc11088b43fcffe0c747f06cfc0c088b *45008947f4c747fc14ff0c088d47f089078d77fc83c5048b4500ebda8d76000100010013000000 *8d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8d4fb0c08 *ebe28d7600c745045cdc110883c504e985ddfeff9083c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f87cdc0b08c747fc74dc11088b450489078d77f883c5108b45008b40ecebdd8d760004 *000000120000008d45ec3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c7 *00d46d1008897004c747f88c6b10088b46108947fc8b460c89078d47f88945f48b46088945f08b *760483ed14b814161008ebc79083c7203b7b5c760cc7436c080000008b43f8ffe0c747e4e8fc0c *088b450c8947e88b46048947ec8b46088947f08b45088947f4c747f87cdc0b08c747fc7cdc1108 *8d47e489078d77f883c5108b45008b40ecebbe3cfd0c08a8fc0c08000000000300000025000000 *04000100020000000e0000008d45f43b435473058b43fcffe08b46088945f88975fc8b55008b46 *0489450089d6c745f4a4fd0c0883ed0c8b06ebdc9003000000120000008d45f43b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8b0fd0c088b46 *048947fc8b460889078b460c8945f48d77f883ed0cb8b0fd0c08ebcd8d76000400000012000000 *8d45ec3b4354720883c7103b7b5c760cc7436c040000008b43f8ffe08d45f8c700d46d10088970 *04c747f4e8fd0c088b46048947f88b460c8947fc8b461089078d47f48945f48b46088945f08b76 *0483ed14b814161008ebc18d760083c7203b7b5c760cc7436c080000008b43f8ffe0c747e440fe *0c088b45048947e88b46048947ec8b45088947f08b46088947f4c747f87cdc0b08c747fc6cdc11 *088d47e489078d77f883c50c8b45008b40ecebbe9cfe0c0898fc0c0810fc0c0802000000250001 *0010fc0c080b000200010000000c0001008d45fc3b435473058b43fcffe08b55008b4604894500 *89d6c745fc04ff0c0883ed048b06ebe590901600040000000000110000008b7500c7450098ff0c *08ff2662000000240000008b4d088b55048b460489048abe0cd2110883c50cff65009022000000 *240000008b55088b460489450889d6c745005cff0c08ff2602000000240000008b55048b460489 *450489d6c745007cff0c08ff260b00030000000000110000008b7500c7450008000d08ff262100 *00002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b46048b55048b0482c747fce0 *060c0889078d77fc83c5088b4500ebe18d760001000000240000008b55048b460489450489d6c7 *4500ccff0c08ff26f0dc11081c000d080400010000000000110001008d45fc3b4354730abee8dc *11088b43fcffe0bef0dc110883ed04b808121008ebef8d760000e61108a0e3110890e3110808e6 *110810e6110820e6110830e6110840e6110850e6110860e6110870e6110880e6110890e61108a0 *e61108b0e61108e8dc1108e0000d0804000200000000001100ffff83c70c3b7b5c7611c7436c03 *000000bef0dc11088b43fcffe0c747f8d4040d088b45008947fcc74304e8dc11088d77f883c504 *b870331008ebdd89f654000d0810000000ffff000058000d080000000024000100c74500f0e511 *088b46148945fc8b46108945f88b460c8945f48b46088945f08b46048945ec83ed14e9b7ee0000 *8d7600be40e6110883c504ff2689f6be50e6110883c504ff2689f6be60e6110883c504ff2689f6 *be70e6110883c504ff2689f6be80e6110883c504ff2689f658010d084c010d0840010d0834010d *0828010d0870000d080000000025001f0058000d08000000002400c33f8b060fb740fe83f80e77 *07ff24854c481108c74500f0e511088b46048945fc83ed04b82cda0b08ffe0beb0e61108eb118b *7604c74500f8000d08eb32bea0e6110883c504eb28be90e61108ebf4c74500f0e511088b460489 *45fc83ed04b8b4ec0d08ebc38b7604c7450084010d088b06ebb589f658000d08010001001300c3 *3f8d45e03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f490010d0883ed0c *8b06ebe189f6be18e6110883c504e98b6b03008d7600be20e6110883c504ff2689f6be30e61108 *83c504ff2689f658020d084c020d080000000068000d08000000002500030068000d0801000100 *130003008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f47c020d08 *83ed0c8b06ebe189f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f888020d088977fc *8d47f8894500c745fc04d21108be00e6110883ed08b814161008ebd889f6b4020d08b4020d083c *020d0854000d080000000025007100beece5110883c504e9bf6a03008d7600eb2e89f600000000 *24000000be0cd2110883c504ff65009018030d08000000000000000000000100000001000d0000 *008d45fc3b435473058b43fcffe08b460489442418c745fc24030d0883ed048b43608968308b53 *688d4704894204c744240400000000891c24e889ca0200894424148b442418890424e89bbe0200 *c7442404000000008b442414890424e8f4ca02008b43608b683005880000008943548b43688b78 *0483ef0489c28b4018c1e00c030283e80489435c8b4500e97bffffff000000002400000083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fc48030d088b460489078d77fc83c504b8d46d10 *08ebe58d76008b7604c74500e0030d08ff2610040d0808030d0800000000000000002500000054 *000d08000000002400ff7f8b060fb740fe83f805743283f8057f0783f803740eeb3a83f8077430 *83f8087410eb2e8b7604c7450008030d088b06ffe08b7604c7450030040d08ebf0be08e6110883 *c504b8d46d1008ebe38b4604eb2183c70c3b7b5c760cc7436c030000008b43f8ebcac747f81002 *0d088977fc8d47f8894500c745fc04d21108be00e6110883ed08b814161008eba49054000d0801 *0001001300ff7f8d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f43c *040d0883ed0c8b06ebe1909080d8110800050d080300010000000000110001008b4500c7450038 *050d08890424e8d68ef7ff89c6ff65009000050d08000000002400010083c7083b7b5c7615c743 *6c02000000c74320ff000000b8b03d1008ffe081feffff1000760fbe80d8110883c50483ef088b *06ebe7c747fc3cdc0b0889378d77fc83c5048b4500ebd30300010000000000110000008b4500c7 *4500ac050d08890424e8fe90f7ff89c6ff650090000000002400000085f67510befcd1110883c5 *048b45008b40f0ffe0be04d2110883c5048b45008b40ecebee0300010000000000110000008b45 *00c74500fc050d08890424e88e8ff7ff89c6ff650090000000002400000085f67510befcd11108 *83c5048b45008b40f0ffe0be04d2110883c5048b45008b40ecebee030001000000000011000000 *8b4500c745004c060d08890424e8ce8ff7ff89c6ff650090000000002400000085f67510befcd1 *110883c5048b45008b40f0ffe0be04d2110883c5048b45008b40ecebee09000300000000001100 *00008d45f83b4354730abe0cdd11088b43fcffe08b750083ed04b8b4060d08ebf1902200000024 *0000008b7504eb0b8d7600220000002400000089f085f6750dbe0cd2110883c50c8b4500ffe048 *8b55088b54820c89450489d6c74500a4060d0883ed04b81c091008ebe090909004000100000000 *00110000008d45fc3b4354730abe10dd11088b43fcffe08b45008945fcc7450028070d0883ed04 *b894210e08ebe78d7600000000002400000083c7083b7b5c760ec7436c02000000b8f0371008ff *e0c747fcd8300c0889378d77fc83c5048b4500ebea90900400010000000000110000008b750083 *c504ff260400010000000000110000008b7500c7450088070d08ff260000000024000000837e04 *00740dbecce6110883c504e93d29ffffbed4e61108ebf190900400010000000000110000008b75 *00c74500c4070d08ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b *4604f7d8c747fcd8300c0889078d77fc83c5048b4500ebe59090900b0002000000000011000000 *8b7500c745004c080d08ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ff *e08b4504034604c747fcd8300c0889078d77fc83c5088b4500ebe489f601000000240000008b55 *048b460489450489d6c7450014080d08ff260b00020000000000110000008b7500c74500b8080d *08ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040faf4604c7 *47fcd8300c0889078d77fc83c5088b4500ebe39001000000240000008b55048b460489450489d6 *c7450080080d08ff260b00020000000000110000008b7500c7450024090d08ff26210000002400 *000083c7083b7b5c760cc7436c020000008b43f8ffe08b45042b4604c747fcd8300c0889078d77 *fc83c5088b4500ebe489f601000000240000008b55048b460489450489d6c74500ec080d08ff26 *72617753797374656d0089f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e8ddf402008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f400d21108c745f038090d0883ed10b84cce0b08ebbf90bcd31108a8 *090d0800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e871f402008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f4bcd3110883ed0cb84c860d08ebc610e711083cdd11080c0a0d0804000200000000001100 *03008d45f43b4354720883c70c3b7b5c7611c7436c03000000be4cdd11088b43fcffe0c747f83c *0b0d088b45008947fc8d47f88945fcc745f810e71108be3cdd1108c74500b40b0d0883ed0cb84c *181008ebce8d7600eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff *000000b8b03d1008ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea8d7600780a0d080000 *00000000000000000100000001000d0000008d45fc3b435473058b43fcffe08b4604c745fc840a *0d0883ed04890424e84aab020089c68b4500ebe28d7600000000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe0c747fcd00a0d088b460489078d77fc83c504b8d46d1008ebe58d76 *0001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745 *f4040b0d0883ed0c8b06ebe189f6000000002400000083c7083b7b5c760cc7436c020000008b43 *f8ffe0837e0400750dbefcd2110883c50483ef08eb0fc747fc14e90b0889378d77fc83c5048b45 *00ebd7900000000024000000c74500700b0d08ff26909090646f65734469726563746f72794578 *697374009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e84df202008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0c00b0d0883ed10b84cce0b08ebbf90040002000000000011000000 *8d45fc3b4354730abe70dd11088b43fcffe08b7500c745000c0d0d088b06ebf000000000240000 *0085f6750fbe04d2110883c504a1c06d1008ffe0befcd1110883c504a1c46d1008ebef89f60000 *0200140000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f0c745 *f46c0c0d0883ed10b8d01f0d08ebdb000000002400000083c70c3b7b5c7615c7436c03000000c7 *4320ff000000b8b03d1008ffe0c747f8980c0d088977fc8d77f883c5048b4500ebe989f6000000 *00240000008b46048945fcc74500d00c0d0883ed04e9ff110000909090646f657346696c654578 *6973740089f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8edf002008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0240d0d0883ed10b84cce0b08ebbf906765744469726563746f72 *79436f6e74656e7473008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e871f002008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f0980d0d0883ed10b84cce0b08ebbf9084dd1108 *140e0d080400010000000000110001008d45f43b4354720883c70c3b7b5c7611c7436c03000000 *be94dd11088b43fcffe0c747f8840e0d088b45008947fc8d47f8894500c745fc84dd1108c745f8 *98e01108be94e0110883ed0cb8e41a1008ebce8d760001000100130000008d45f43b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8c8230d08ebe290909078de1108 *84dd11089cdd1108b00e0d080800030000000000110007008d45f03b4354730abe9cdd11088b43 *fcffe0c745f800000000c745fcac100d0883ed08b8fc850d08ebe689f6b40e0d08210000002400 *01008b45043b46047411c7450484dd110883c504b8d8810c08ffe0be00d2110883c5088b4500eb *f189f6b40e0d080000000024000100837e04ff750dbe00d2110883c5048b4500ffe0c7450084dd *1108b8d8810c08ebf08d7600b00e0d08620000002400070083feff740783fe047415eb1dbe78de *1108c74508380f0d0883c5088b06ffe083c504b8cc0e0d08ebf4897508be78de1108c74504040f *0d0883c504ebde8d7600c30000002400000083c70c3b7b5c7615c7436c03000000c74320fe0000 *00b8b03d1008ffe0c747f87cdc0b088b45048947fc89378d77f883c5108b4500ebe490b80e0d08 *c3000000240001008b450c8945fc8b45088945f8c74500b00f0d0883ed08e9bdfeffff90b80e0d *08e3000000240001008b45048945fc897504c74500f40f0d0883ed04e90c110000b80e0d08e300 *0000240001008975fcc745001c100d0883ed04e96672ffff89f6b00e0d08620000002400070085 *f6752d8b45048b0085c074178945f8894500c745fc40100d0883ed08b890200d08ffe0be00d211 *0883c50c8b4500ebf1c74500680f0d08b82c860d08ebe390b00e0d0862000000240007008b4504 *8945fc8b45088945f8c7450060100d0883ed08e999100000900400020000000000110000008d45 *fc3b4354730abea4dd11088b43fcffe08b7500c745009c110d088b06ebf0000000002400000085 *f6750fbefcd1110883c504a1c46d1008ffe0be04d2110883c504a1c06d1008ebef89f600000200 *140000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f0c745f4fc *100d0883ed10b8d01f0d08ebdb000000002400000083c70c3b7b5c7615c7436c03000000c74320 *ff000000b8b03d1008ffe0c747f828110d088977fc8d77f883c5048b4500ebe989f60000000024 *0000008b46048945fcc7450060110d0883ed04e96f0d000090909000000200180000008d45f43b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e86dec0200 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f41c120d0883ed0cbe00100000 *8b4500ebc390000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d *1008ffe0c747fc54dc0b0889378d77fc83c504b8d46d1008ebe8900cd1110850120d0800000200 *180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8c9eb02008d47f8894604c706245b10088d55f8c702d46d1008894204c745f40cd11108 *83ed0cb88cbf0b08ebc66ce711087ce71108b4120d0800000200180003008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e861eb02008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f47ce71108be6ce7110883ed10b808121008 *ebc1909090c8dd110824130d080400010000000000110001008d45fc3b4354720883c70c3b7b5c *7611c7436c03000000bed8dd11088b43fcffe0c747f840140d088b45008947fc8d47f8894500be *c8dd110883ed04b808121008ebdc90eb5689f6000000002400000083c7083b7b5c7615c7436c02 *000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d76 *007c130d08000000000000000000000100000001000d0000008d45f43b435473058b43fcffe0c7 *45f8ff0100008b46048945f4c745fc88130d0883ed0cb8a0230d08ebe090000000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd4130d088b460489078d77fc83c504b8d4 *6d1008ebe58d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d100889 *70048b7604c745f408140d0883ed0c8b06ebe190905ce711086ce711086c140d08040001000000 *0000110003008d45f83b4354720883c70c3b7b5c7611c7436c03000000bee0dd11088b43fcffe0 *c747f8d8140d088b45008947fc8d47f8894500c745fc5ce71108be6ce7110883ed08b814161008 *ebd589f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46 *048945f483ed0cb8d4220d08ebe29090904ce711086ce7110804150d0804000100000000001100 *03008d45f83b4354720883c70c3b7b5c7611c7436c03000000bee8dd11088b43fcffe0c747f870 *150d088b45008947fc8d47f8894500c745fc4ce71108be6ce7110883ed08b814161008ebd589f6 *01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4 *83ed0cb808220d08ebe2909090a8e011083ce71108f0dd11089c150d0808000300000000001100 *07008d45f43b4354730abef0dd11088b43fcffe08b45048945f88b45008945f4c745fc08170d08 *83ed0cb8c4240d08ebe19001000000240000008b750483c508ff65008d76002100000024000000 *8b45048945fc897504c74500f0150d0883ed04e9b8730000a4150d0821000000240001008b4604 *894500e985ffffff90a4150d082100000024000100c7450028160d08ff268d76009c150d082100 *00002400050085f6740a897500b8b8150d08ffe0bea8e01108c7450040160d08b8c0351008ebeb *8d7600a4150d080000000024000100c7450000000000c745fc0000000083ed04e91affffff89f6 *9c150d08620000002400070083fe2275378b450889c201d27511c7450888160d0883c504b8d489 *0d08ffe08955008b45048945fc895508c7450458160d0883ed04b8f4890d08ebe1c745083ce711 *0883c508b8d8810c08ebd08d76009c150d08620000002400070085f6750ec74500ac160d08b82c *860d08ffe0897500897508c7450404160d08b8b8820c08ebea909050de11086ce711088ce71108 *30170d0816000400000000001100070083c7243b7b5c7611c7436c09000000bef8dd11088b43fc *ffe0c747e050180d088b45048947e4c747e884180d088b45048947ecc747f4301b0d088d47e889 *47f88b45088947fc8b450089078d47e08943048d77f483c50cb870331008ebb989f60200000015 *0000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945 *f083ed10b83c490c08ebdc9001000000240000008b06668378fe09754083c7143b7b5c760cc743 *6c050000008b43f8ffe0c747f0b4170d088b45048947f48b46048947f8c747fc9ce90b088d47f0 *89078d77fc83c508b8c0351008ebd289750483c504b874e80b08ebc589f604000200010000000c *0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fcec170d0883ed048b06 *ebe589f638170d0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d100889 *70048b46048945f483ed0cb8d4260e08ebe28d7600e97b0200008d760001000100160000008d45 *f03b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c7 *47fce0060c088b460889078d47fc8945f48b760483ed10b808121008ebd390eb5689f600000000 *2400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b *0889378d77fc83c5048b4500ebea8d760008190d08000000000000000000000100000002001000 *00008d45f43b435473058b43fcffe08b46048945f88b46088945f4c745fc14190d0883ed0cb8b0 *4b0c08ebe189f6210000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f860 *190d088b45048947fc8b460489078d77f883c508b8d46d1008ebdf9001000100160000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f094190d0883 *ed108b06ebdb01000000240000008b750483c504e909ef02009034170d0804000200020001000b *0001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8d0190d088b *45008947fc8b460c89078d47f88945f88b46088945f48b4604894500be6ce71108c745fc081a0d *0883ed10b84c181008ebc489f6010000002400000083c508ff650089f634170d08030000002400 *010083c71c3b7b5c7615c7436c07000000c74320fe000000b8b03d1008ffe08d5608c747e8c018 *0d088b45088947ec8957f0c747f4241a0d088d47e88947f88b45048947fc89178d47f48945048b *450c89450089750cc74508841a0d08b8e4c10b08ebb989f634170d0803000000240001008b7604 *c74500981a0d08e9b527030090b0180d080000000030170d0800000100030000000b0003008d45 *f03b435473058b43fcffe08b460c8945f48b46088945f88b46048945fcbe50de1108c745f0081b *0d0883ed108b06ebd990900400020000000000110000008b7500c74500841b0d08ff2600000000 *240000008b06668378fe09750dbefcd1110883c5048b4500ffe0897500b874e80b08ebf4040002 *0000000000110000008b7500c74500c41b0d08ff2600000000240000008b06668378fe09750dbe *fcd1110883c5048b4500ffe0897500b874e80b08ebf46e6f20656e7669726f6e6d656e74207661 *726961626c650000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e825e202008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f400d21108c745f0e41b0d0883ed10b84cce0b08ebbf90676574456e7600900000 *0200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c *1008893424e8b9e102008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d2 *1108c745f0601c0d0883ed10b84cce0b08ebbf900b00020000000000110000008d45fc3b435473 *0abe28de11088b43fcffe08b7504c745fc481d0d0883ed048b06ebed908b750483c50cff260200 *000024000000837e042f75068b450889450483c504e9b8ffffff8b46088945088b7604c745000c *1d0d08ff2689f6201d0d08fc1c0d08000000004200000025000000040002000000000011000000 *8d45f83b4354730abe2cde11088b43fcffe08b7500c745002c1e0d088b06ebf0be00d2110883c5 *04ff650090010000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d10 *08ffe0c747f87cdc0b088b45048947fc89378d77f883c5088b4500ebe49001000000240000008b *45048945fc897504c74500881d0d0883ed04e974ffffff01000000240000008b46048945fcc745 *00c81d0d0883ed04e9bb64ffff8d76008b46088945008b7604c745fce81d0d0883ed04ff268d76 *00001e0d08741d0d0800000000000000002500000030de1108541e0d08000000002c1e0d080000 *01000000000011000100be30de1108e96e17030089f6e9efffffff909090801e0d080000000000 *000000000001000000000011000000beb0e71108e94217030089f6e9efffffff90909004000200 *00000000110000008b7500c74500a81e0d08ff2600000000240000008b06668378fe09752b83c7 *083b7b5c760cc7436c020000008b43f8ffe0c747fcc4a90b088b460489078d77fc83c5048b4500 *ebe7897500b874e80b08ebdd9090b8f01e0d08ffe090833d64181208007514c705641812080100 *0000c7450090310c0883c50483ed04ff6500900300020000000000110000008b450083c5048b70 *10ff650000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8f5de02008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f4901f0d0883ed0cb830280e08ebc6000000002400000083c7083b7b5c7615c7436c0200 *0000c74320ff000000b8b03d1008ffe0c747fc54dc0b0889378d77fc83c504b8d46d1008ebe890 *0300020000000000110000008b450083c5042500f000003d004000000f94c00fb6f0ff65009090 *9000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e835de02008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f450200d0883ed0cb858280e08ebc6000000002400000083c7083b7b5c7615c7436c02000000c7 *4320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe890030002 *0000000000110000008b450083c5048d7013ff650000000200180000008d45f43b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e885dd02008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400210d0883ed0cb8e02a0e08ebc600000000 *2400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b *0889378d77fc83c504b8d46d1008ebe8900300020000000000110000008b450083c504890424e8 *2e77f7ffff65009090900800030000000000110000008b55008b450483c50889442404891424e8 *8389020089c6ff65009090b8210d0800000000000000000000010000000000110000008d45fc3b *4354730abe90de11088b43fcffe0c745fcc8210d0883ed04b8082b0e08ebed90e9d7ffffff8d76 *00000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c7 *47fc84ed0b0889378d77fc83c5048b4500ebea9090900400010000000000110000008b7500c745 *0098220d08ff26eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff00 *0000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760014220d08000000 *000000000000000100000001000d0000008d45f83b435473058b43fcffe08b46048945f8c745fc *20220d0883ed08b81c2f0e08ebe7000000002400000083c7083b7b5c760cc7436c020000008b43 *f8ffe0c747fc6c220d088b460489078d47fc894500b888c40c08ebe59090900400010000000000 *110000008b7500c7450064230d08ff26eb5689f6000000002400000083c7083b7b5c7615c7436c *02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d *7600e0220d08000000000000000000000100000001000d0000008d45f83b435473058b43fcffe0 *8b46048945f8c745fcec220d0883ed08b86c2f0e08ebe7000000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe0c747fc38230d088b460489078d47fc894500b888c40c08ebe59090 *900800030000000000110000008b55008b450483c50889442404891424e82770f7ff89c6ff6500 *90900400010000000000110000008b7500c7450058240d08ff26eb5689f6000000002400000083 *c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fce0060c0889378d77 *fc83c5048b4500ebea8d7600d4230d08000000000000000000000100000001000d0000008d45f8 *3b435473058b43fcffe08b46048945f8c745fce0230d0883ed08b88c2f0e08ebe7000000002400 *000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc2c240d088b460489078d47fc8945 *00b888c40c08ebe59090900f00040000000000110000008b4d008b55048b450883c50c89442408 *89542404890c24e8fc72f7ff89c6ff65009090900800030000000000110000008b55008b450483 *c50889442404891424e8c373f7ff89c6ff650090900300020000000000110000008b450083c504 *890424e82273f7ff89c6ff6500900300020000000000110000008b450083c504890424e8626ff7 *ff89c6ff6500900800030000000000110000008b55008b450483c50889442404891424e84b70f7 *ff89c6ff650090900400010000000000110000008d45fc3b4354730abe18df11088b43fcffe08b *7500c745000cd2110883ed04b808121008ebea90900400010000000000110000008d45fc3b4354 *730abe1cdf11088b43fcffe08b7500c745000cd2110883ed04b808121008ebea9090546578742f *506172736572436f6d62696e61746f72732f52656164502e68733a3130317c66756e6374696f6e *206d706c757300904cd21108e4250d0800000200180001008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e835d802008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f4b0250d08be4cd2110883ed10b828101008ebc19090900b *000200000000001100000083c71c3b7b5c7611c7436c07000000be30df11088b43fcffe0c747e8 *84280d088b45008947ecc747f0bc280d088d47e88947f48b45048947f8c747fcc05e0c088d47f0 *89078d77fc83c5088b45008b40ecebc490bea0e8110883c50cff650090be9ce8110883c510ff65 *009004000100020000000e0000008d45fc3b4354720883c70c3b7b5c760cc7436c030000008b43 *fcffe0c747f87cdc0b088b46048947fc8b450089078d47f88945008b760883ed04b808121008eb *d98d760003000000120000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e08d45f8c700d46d1008897004c747f8d4260d088b46048947fc8b460c89078d47f88945f48b76 *0883ed10b808121008ebcd8d760004000100010000000c0000008b760483c504ff260400010002 *0000000e00000083c7203b7b5c760cc7436c080000008b43fcffe0c747e420270d088b46048947 *e88b46088947ec8b45008947f0c747f47c270d088d47e48947f8c747fca05e0c088d47f489078d *77fc83c5048b45008b40f0ebbe83c7183b7b5c760cc7436c060000008b43f8ffe0c747ec8c6b10 *088b45088947f08b45048947f4c747f890270d088b450c8947fc8d47ec89078d77f883c5108b45 *00ebcee4270d08bc260d080000000003000000250000008b46048945f88b46088945008b55088b *460489450889d6c745fc3c280d0883ed0ce9a6e9020089f63c280d08b0260d0800000000020000 *002500000004000100010000000c0000008d45ec3b435473058b43fcffe08975fc8b55008b4604 *89450089d6c745f878280d0883ed088b06ebe28d760004000100020000000e0000008d45f83b43 *5473058b43fcffe0c745fc081210088b45008945f88b46088945008b760483ed08b884280d08eb *de909090040001000000000011000000be78d6110883c5048b4500ff60e8909016000300000000 *001100000083c71c3b7b5c7611c7436c07000000be38df11088b43fcffe0c747e88c6b10088b45 *008947ec8b45088947f0c747f484290d088b45088947f88d47e88947fc8b450489078d77f483c5 *0c8b4500ebc89004000100010000000c0000008b760483c504ff2604000100030000000b000000 *8d45fc3b4354720883c7183b7b5c760cc7436c060000008b43fcffe0c747ecc86b10088b460c89 *47f08b46048947f48b45008947f8c747fc70290d088d47ec89078d47fc8945008b760883ed04b8 *08121008ebc60b00020000000000110000008b7500c74500542a0d08ff2683c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f87cdc0b088b46048947fc8b450489078d77f883c5088b45008b *40ecebde8b4604894500e9fdaffeff908b4604894500e9f1affeff90302a0d08242a0d08f0290d *0800000000010000002500000088df110898df1108542a0d081600030000000000110003008d45 *f43b4354730abe88df11088b43fcffe08b7500c74500b0300d088b06ebf068e9110890df110898 *df11088c2a0d081600030000000000110007008d45fc3b4354730abe90df11088b43fcffe08b75 *00c745009c320d088b06ebf088df110890df110898df1108c82a0d080400010000000000110007 *008d45f83b4354730abe98df11088b43fcffe08b7500c74500c0330d088b06ebf08b750883c50c *ff26542a0d0803000000120001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46088945f48b46048945f08b460c8945ec83ed14b86c2a0d08ebd68d760083c7183b7b5c760c *c7436c060000008b43f8ffe0c747ec182b0d088b45048947f08b45088947f48b46048947f8c747 *fc5c5f0d088d47ec89078d77fc83c50c8b45008b40ecebcb908b45088b550489550889450483c5 *04e9b81101008b45088b5504895508894504897500e9acfeffffac2b0d08ac2b0d08ac2b0d08ac *2b0d08ac2b0d08ac2b0d08ac2b0d08982b0d08542a0d080200000025000100542a0d0803000000 *120001008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f08b460489 *45f48b760cc745ecec2b0d0883ed148b06ebd589f683c7203b7b5c760cc7436c080000008b43f8 *ffe0c747e4f82b0d088b45048947e88b45088947ec8b46088947f0c747f4f86a0c088b46048947 *f88d47e48947fc8b460c89078d77f483c50c8b45008b40e8ebbf90542a0d080300000012000100 *8d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f08b46 *0c8945ec83ed14b86c2a0d08ebd68d760083c71c3b7b5c760cc7436c070000008b43f8ffe0c747 *e8902c0d088b45048947ec8b45088947f08b46048947f4c747f87c5f0d088d47e88947fc8b4608 *89078d77f883c50c8b45008b40e4ebc58d7600542a0d0803000000120001008d45ec3b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f08b460c8945ec83ed14b8 *6c2a0d08ebd68d7600542a0d0803000000120001008d45ec3b435473058b43f8ffe08d45f8c700 *d46d10088970048b46088945f48b46048945f08b460c8945ec83ed14b86c2a0d08ebd68d760083 *c72c3b7b5c760cc7436c0b0000008b43f8ffe0c747d8242d0d088b45048947dc8b45088947e08b *46088947e4c747e8682d0d088b45048947ec8b45088947f08b46048947f4c747f89c5f0d088d47 *e88947fc8d47d889078d77f883c50c8b45008b40e0ebac89f6bed0df110883c50c8b4500ff60dc *89f6542a0d0802000000150001008d45ec3b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f4c745f0fcd111088b46088945ec83ed14b86c2a0d08ebd589f683c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8242e0d088b45148947fc8b450489078d47f8894514c74510 *fcd111088b450889450c83c50cb86c2a0d08ebcf90c7450004d211088975fc83ed04e9bafbffff *89f6a02e0d08a02e0d08a02e0d08a02e0d08a02e0d08a02e0d08a02e0d08a02e0d08542a0d0801 *00000025000100c74510e02e0d0883c50ce9f5fbffff90e02e0d085c2e0d08542a0d0805010000 *250003008b7510c74500042f0d08ff26c74500fcd111088975fc83ed04e94afbffff89f6102f0d *08102f0d08102f0d08102f0d08102f0d08102f0d08102f0d08102f0d08542a0d08010000002500 *0100c74510502f0d0883c50ce985fbffff90542a0d0802000000150001008d45ec3b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f4c745f004d211088b46088945ec83ed14b8 *6c2a0d08ebd589f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f86c2f0d088b451489 *47fc8b450489078d47f8894514c7451004d211088b450889450c83c50cb86c2a0d08ebcf90a42f *0d08502f0d08542a0d0805010000250003008b7510c74500fc2f0d08ff26fc2f0d08042f0d0854 *2a0d0805000000250003008b460c8945f88b46048945fc8975008b7608c745f41c300d0883ed0c *ff2689f6897500e928faffff3c300d083c300d083c300d083c300d083c300d083c300d083c300d *083c300d08542a0d0802000000250001008975fcc7450070300d0883ed04e962faffff89f67030 *0d081c300d08082e0d08a02d0d08c82c0d08302c0d08502b0d08042b0d08542a0d080200000025 *000300942a0d0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970 *048b46048945f483ed0cb8e42a0d08ebe28d76008b4504894500c74504000000008975fc83ed04 *e9e8110100e8300d08e8300d08e8300d08e8300d08e8300d08e8300d08e8300d08e8300d088c2a *0d08020000002500010083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8bc300d088b45 *088947fc8975fc8d47f8894508c745002c310d0883ed04b8e42a0d08ebd790902a0d0803000000 *120001008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b460489 *45f08b460c8945ec83ed14b8a82a0d08ebd68d760083c7103b7b5c760cc7436c040000008b43f8 *ffe0c747f474310d088b45048947f88b45088947fc8b460c89078d47f48945088b46088945048b *4604894500b8a82a0d08ebcd8d7600942a0d0801000100130001008d45f43b435473058b43f8ff *e08d45f8c700d46d10088970048b46048945f483ed0cb8e42a0d08ebe28d760083c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f800320d088b45088947fc8d47f88945088b4504894500c7 *4504000000008975fc83ed04b8e8420e08ebd18d7600ac310d082c310d082c320d082c320d082c *320d082c320d082c320d082c320d088c2a0d080200000025000700d02a0d080100010013000100 *8d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e42a0d08 *ebe28d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8a8320d088b460c8947fc8d *47f88945008b46088945fc8b46048945f883ed08b86c2a0d08ebd58d7600d02a0d080100010013 *0001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8e4 *2a0d08ebe28d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f820330d088b460c89 *47fc8d47f88945008b46088945fc8b46048945f883ed08b8a82a0d08ebd58d760083c504ff268d *76004c330d08d4320d088c330d088c330d088c330d088c330d088c330d088c330d08c82a0d0800 *0000002500070058e9110898df1108a0df1108b0df11089c340d0884000000c0330d0800000400 *0000000011000f008d45ec3b4354730abea0df11088b43fcffe08b7504c745fcbc370d0883ed04 *8b06ebed9098df1108b0df11080c340d080b00020000000000110003008d45f83b4354730abea8 *df11088b43fcffe08b7504c745fc40380d0883ed048b06ebed90e0e8110868e9110898df1108a0 *df1108a8df1108b0df110840380d088400000048340d08000004000000000011003f008d45f43b *4354730abeb0df11088b43fcffe08b7504c745fc1c3d0d0883ed048b06ebed90e947ffffff8d76 *00be3cd7110883c5148b4500ff60f089f6be3cd7110883c5148b4500ff60f089f6897508c74500 *fcd11108e9e10b010090c4340d08c4340d08c4340d08c4340d08c4340d08c4340d08c4340d08c4 *340d080000000062000000250000008b4504894500c745fc000000008975f88b450c8945f4c745 *0400350d0883ed0ce953ffffff8d760000350d0800350d0800350d0800350d0800350d0800350d *0800350d0800350d08cc330d084300000025000100c4330d0803000100120005008d45dc3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46088945e48b460c8945ec8b46108945f08b46 *048945f4c745e854350d0883ed1cb8e42a0d08ebc989f683c7203b7b5c760cc7436c080000008b *43f8ffe0c747e460350d088b45048947e88b45108947ec8b45088947f08b450c8947f4c747f89c *5f0d088977fc8d47e489078d77f883c5148b45008b40e0ebc2a4350d08a4350d08a4350d08a435 *0d08a4350d08a4350d08a4350d08b4340d08c4330d0884000000250005008975fc8b45048945f8 *c7450020360d0883ed08e92c07010020360d0820360d0820360d0820360d0820360d0820360d08 *20360d0820360d08c4330d0884000000250005008b450c8945008b45048945fc8975f88b450889 *45f4c7450464360d0883ed0ce9f0fdffff64360d0864360d0864360d0864360d0864360d086436 *0d0864360d0864360d08c4330d0825010000250005008975fcc74500b4360d0883ed04e9920701 *0089f6b4360d08b4360d08b4360d08b4360d08b4360d08b4360d08b4360d08b4360d08c0330d08 *2501000025000b00c0330d088400000024000b008b45108945f8897500c745fcf4360d0883ed08 *e9ccf3ffff8b750cebe38d76008b750c4eebda89f620370d0818370d08c0330d08840000002500 *0b008b46048945108b46088945088b7504c745003c370d08ff263c370d08a4340d08c0330d08c4 *01000025000b008b7510c7450068370d08ff268b460489450883c504e966fcffff89f689750883 *c504e9e9fcffff9084370d0884370d0884370d0884370d0874370d0884370d0884370d0868370d *08c0330d08c400000025000f00be3cd7110883c50c8b4500ff60f089f68975008b45048945fcc7 *45040000000083ed04e994fcffffcc370d08cc370d08cc370d08cc370d08cc370d08cc370d08cc *370d08cc370d0810340d0802000000250001008b46048945fc8b4608894508c7450010380d0883 *ed04e9b9f2ffff9010380d08bc370d080c340d084200000025000300e933fcffff8d7600897508 *83c504e98d0701009048380d0848380d0848380d0848380d0848380d0848380d0848380d084838 *0d08000000006200000025000000be3cd71108c7450880380d0883c508ebb78d7600c745000000 *00008975fc8b45048945f88b4510894504c7450880380d0883ed08e9bffbffff8d760094380d08 *94380d0894380d0894380d0894380d0894380d0894380d0894380d085c340d08c4000000250001 *008b46048945fc8b4608894510c74500e8380d0883ed04e9e1f1ffff90e8380d0880380d085034 *0d08c4010000250009008b7510c7450018390d08ff2658340d0802000000150001008d45f03b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b824340d *08ebdc904c340d0803000100120009008d45e83b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe08d45f8c700d46d1008897004c747f830390d088b46048947fc8b460889078d47f889 *45f48b46108945f0c745ecfcd111088b460c8945e883ed18b8e8420e08ebbd8d760083c71c3b7b *5c760cc7436c070000008b43f8ffe0c747e86c390d088b45048947ec8b45108947f08b46048947 *f48b450c8947f8c747fc5c5f0d088d47e889078d77fc83c5148b45008b40ecebc58d760054340d *0803000200120001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46102b46 *148b56088955f48945f08b460c8945ec8b46048945e883ed18b8e8330d08ebcd89f683c7283b7b *5c760cc7436c0a0000008b43f8ffe0c747dc283a0d088b45048947e08b45108947e48b46088947 *e88b450c8947ec8b460c8947f0c747f4f86a0c088b46048947f88d47dc8947fc8b460c89078d77 *f483c5148b45008b40e8ebb3905c340d0803000200120001008d45e83b435473058b43f8ffe08d *45f8c700d46d10088970048b46102b46148b56088955f48945f08b460c8945ec8b46048945e883 *ed18b878340d08ebcd89f683c7243b7b5c760cc7436c090000008b43f8ffe0c747e0d43a0d088b *45048947e48b45108947e88b46048947ec8b450c8947f08b46088947f4c747f87c5f0d088d47e0 *8947fc8b460889078d77f883c5148b45008b40e4ebb98d760058340d0802000000150001008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b8 *24340d08ebdc904c340d0803000100120009008d45e83b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe08d45f8c700d46d1008897004c747f87c3b0d088b46048947fc8b460889078d *47f88945f48b46108945f0c745ecfcd111088b460c8945e883ed18b8e8420e08ebbd8d76005c34 *0d0803000100120001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b460c89 *45f48b46108945f08b46088945ec8b46048945e883ed18b878340d08ebd09083c7343b7b5c760c *c7436c0d0000008b43f8ffe0c747d0b83b0d088b45048947d48b45108947d88b46088947dc8b45 *0c8947e0c747e4243c0d088b45048947e88b46048947ec8b45108947f08b450c8947f4c747f89c *5f0d088d47e48947fc8d47d089078d77f883c5148b45008b40e0eba089f6bed0df110883c5148b *4500ff60dc89f6bee0e8110883c514ff2689f6e43c0d08e43c0d08d43c0d08603c0d08143b0d08 *683a0d08cc390d0818390d0848340d08c400000025003f00d0e8110868e9110898df1108b8df11 *08c0df1108b03d0d08840000001c3d0d08000004000000000011001f008d45f43b4354730abeb8 *df11088b43fcffe08b7504c745fcf0420d0883ed048b06ebed9058e9110898df1108b8df1108c0 *df11086c3d0d08170004000000000011000f008d45f83b4354730abec0df11088b43fcffe08b75 *04c745fcdc450d0883ed048b06ebed90e993ffffff8d760089750883c504e91d02010090b83d0d *08b83d0d08b83d0d08b83d0d08b83d0d08b83d0d08b83d0d08b83d0d0800000000620000002500 *0000be3cd71108c74508f03d0d0883c508ebb78d7600c74500000000008975fc8b45048945f88b *4510894504c74508f03d0d0883ed08e91fffffff8d7600043e0d08043e0d08043e0d08043e0d08 *043e0d08043e0d08043e0d08043e0d08283d0d08c4000000250001008b46048945fc8b46088945 *10c74500583e0d0883ed04e971ecffff90583e0d08f03d0d08243d0d08c4010000250003008b75 *10c74500883e0d08ff26897500e948ecffff943e0d08943e0d08943e0d08943e0d08943e0d0894 *3e0d08943e0d08943e0d08243d0d080000000025000100243d0d0801000100130001008d45f03b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f0c745f4c83e0d0883ed10b8e0 *480e08ebdb203d0d0802000100120003008d45e83b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe08d45f8c700d46d1008897004c747f8d43e0d088b46048947fc8d47f88945f48b46 *0c8945f0c745ecfcd111088b46088945e883ed18b8e8420e08ebc283c7183b7b5c760cc7436c06 *0000008b43f8ffe0c747ec103f0d088b45108947f08b46048947f48b450c8947f8c747fc5c5f0d *088d47ec89078d77fc83c5148b45008b40ecebcb902c3d0d0803000200120001008d45e83b4354 *720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d10088970048b46102b46 *14c747fc54dc0b0889078b46088945f48d47fc8945f08b460c8945ec8b46048945e883ed18b88c *3d0d08ebc18d760083c7283b7b5c760cc7436c0a0000008b43f8ffe0c747dcbc3f0d088b450489 *47e08b45108947e48b46088947e88b450c8947ec8b460c8947f0c747f4f86a0c088b46048947f8 *8d47dc8947fc8b460c89078d77f483c5148b45008b40e8ebb390283d0d0803000200120001008d *45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46102b46148b56088955f48945f0 *8b460c8945ec8b46048945e883ed18b8483d0d08ebcd89f683c7243b7b5c760cc7436c09000000 *8b43f8ffe0c747e084400d088b45048947e48b45108947e88b46048947ec8b450c8947f08b4608 *8947f4c747f87c5f0d088d47e08947fc8b460889078d77f883c5148b45008b40e4ebb98d760089 *7500e9bce9ffff20410d0820410d0820410d0820410d0820410d0820410d0820410d0820410d08 *243d0d080000000025000100243d0d0801000100130001008d45f03b435473058b43f8ffe08d45 *f8c700d46d10088970048b46048945f0c745f454410d0883ed10b898490e08ebdb203d0d080200 *0100120003008d45e83b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700 *d46d1008897004c747f860410d088b46048947fc8d47f88945f48b460c8945f0c745ecfcd11108 *8b46088945e883ed18b8e8420e08ebc2283d0d0803000100120001008d45e83b435473058b43f8 *ffe08d45f8c700d46d10088970048b460c8945f48b46108945f08b46088945ec8b46048945e883 *ed18b8483d0d08ebd09083c7303b7b5c760cc7436c0c0000008b43f8ffe0c747d49c410d088b45 *108947d88b46088947dc8b450c8947e0c747e400420d088b45048947e88b46048947ec8b451089 *47f08b450c8947f4c747f89c5f0d088d47e48947fc8d47d489078d77f883c5148b45008b40e0eb *a6bed0df110883c5148b4500ff60dc89f6bed0e8110883c514ff2689f6b8420d08b8420d08a842 *0d083c420d08c4400d0818400d08683f0d08883e0d081c3d0d08c400000025001f00be3cd71108 *83c50c8b4500ff60f089f68b4504894500897504c745fcfcd1110883ed04e99cfd000000430d08 *00430d0800430d0800430d0800430d0800430d0800430d0800430d080000000021000000250000 *008975fcc7450044430d0883ed04e98ee7ffff89f644430d0844430d0844430d0844430d084443 *0d0844430d0844430d0844430d08703d0d082100000025000100703d0d0801000000240001008b *45048945fc8b4604894504c7450084430d0883ed04e90d03010090703d0d080200000015000100 *8d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f09043 *0d0883ed108b06ebdb83c7183b7b5c760cc7436c060000008b43f8ffe0c747ecb8430d088b4504 *8947f08b45088947f4c747f89c5f0d088977fc8d47ec89078d77f883c50c8b45008b40e0ebcee8 *430d08e8430d08e8430d08e8430d08e8430d08e8430d08e8430d08f0420d08703d0d0802000000 *250001008975fcc7450058440d0883ed04e9eef9000089f658440d0858440d0858440d0858440d *0858440d0858440d0858440d0858440d086c3d0d0802000000250003008b4504894500897504c7 *450898440d08e9b7f800008d760098440d0898440d0898440d0898440d0898440d0898440d0898 *440d0898440d086c3d0d0844000000250003008975fcc74500dc440d0883ed04e9f6e5ffff89f6 *dc440d08dc440d08dc440d08dc440d08dc440d08dc440d08dc440d08dc440d086c3d0d08440000 *00250003008b45108945fcc745001c450d0883ed04e93f0201008d76008b45108945fcc745001c *450d0883ed04e9df0201008d760034450d081c450d086c3d0d0844000000250003008b7504c745 *0060450d08ff268b460489450883c504e912f8ffff89f6743d0d0844000000240001008b450c89 *45088b460489450c83c504e9acf7ffff8b450c89750c89c6c7450088450d08ff268d76009c450d *089c450d089c450d089c450d086c450d089c450d089c450d0860450d086c3d0d08440000002500 *0f0040e91108b0e1110800e9110810e9110820e9110830e9110898df110884e91108dc450d0819 *000600000000001100ff008b7500c74500345f0d08ff2689750cc7450048e91108e959f5000090 *18460d0818460d0818460d0818460d0818460d0818460d0818460d0818460d08dc450d08830000 *00250001008b4514894504c7450854460d0883c504e97be4ffff8d760089750cc7450054df1108 *e905f50000906c460d086c460d086c460d086c460d086c460d086c460d086c460d086c460d08dc *450d0883000000250001008b4514894504c74508a8460d0883c504e927e4ffff8d7600e0450d08 *2100000024000100db4504d95c24088b4604890424d9442408d83424d95c24048b442404890424 *8b042489450483c504e99b5400008d7600e0450d0801000000240001008b55048b460489450489 *d6c74500cc460d08ff26e0450d0802000000150001008d45f03b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46088945f48b7604c745f008470d0883ed108b06ebdbbe3cd7110883c514 *8b4500ff60f089f602000100120000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *70048b46088945f48b460c8945f08b760483ed10b8c84a0d08ebd989f683c7183b7b5c760cc743 *6c060000008b43f8ffe0c747ec70470d088b45088947f08b46048947f48b450c8947f8c747fc5c *5f0d088d47ec89078d77fc83c5148b45008b40ecebcb9002000200120000008d45ec3b43547208 *83c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc54dc0b08 *8b461089078b46048945f48d47fc8945f08b460c8945ec8b760883ed14b8ec4e0d08ebc79083c7 *243b7b5c760cc7436c090000008b43f8ffe0c747e0f4470d088b46088947e48b45048947e88b45 *0c8947ec8b460c8947f0c747f4f86a0c088b46048947f88d47e08947fc8b460c89078d77f483c5 *148b45008b40e8ebb98d760002000200120000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b460c2b46108b56088955f48945f08b760483ed10b8c84a0d08ebd68d760083c7 *203b7b5c760cc7436c080000008b43f8ffe0c747e4ac480d088b45088947e88b46048947ec8b45 *0c8947f08b46088947f4c747f87c5f0d088d47e48947fc8b460889078d77f883c5148b45008b40 *e4ebbf9002000100120000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46 *048945f48b460c8945f08b760883ed10b8c84a0d08ebd989f68b45048945108b750883c50ce943 *0100008d76008b751083c514ff2688490d0874490d080000000084000000250000008b45048945 *108b750883c50ce9130100008d76008b751083c514ff26b8490d08a4490d080000000084000000 *25000000f8450d08840000002400010083c7103b7b5c760cc7436c040000008b43f8ffe0c747f4 *40490d088b45108947f88b45088947fc8b450c89078b450c3b46047c1b8d47f48945fc8b460489 *45f88d47f4894510c74500d4490d08eb198d47f48945fc8b450c8945f88d47f4894510c74500a4 *490d0883ed08b85c4a0e08eba089f68b46088945048b55108b460489451089d6c74500e0490d08 *ff2689f6bed0df110883c5148b4500ff60dc89f6be10e9110883c514ff2689f6804a0d08804a0d *08704a0d08544a0d08e4480d0848480d08a4470d0858470d08e8450d088400000025001100e845 *0d0809000200020000000e0011008d45ec3b435473058b43fcffe08b46088945f88975fc8b5504 *8b460489450489d6c745f4b84a0d0883ed0c8b06ebdc90be3cd7110883c5188b4500ff60f089f6 *43000000240000008b45082b46048945088b750c8b450489450c83c508eba19003000100120000 *008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945ec8b46108945f08b *46048945f48b7608c745e8104b0d0883ed188b06ebcf83c71c3b7b5c760cc7436c070000008b43 *f8ffe0c747e8304b0d088b45088947ec8b45108947f08b46048947f48b450c8947f8c747fc5c5f *0d088d47e889078d77fc83c5188b45008b40ecebc58d7600210000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe08b4604034504c747fc54dc0b0889078d77fc83c508b8d46d1008 *ebe201000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460889 *45f48b7604c745f0c44b0d0883ed108b06ebdb03000200120000008d45ec3b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8fc4b0d088b460889 *47fc8b461489078b460c8945f48d47f88945f08b46108945ec8b760483ed14b8ec4e0d08ebc18d *760083c7283b7b5c760cc7436c0a0000008b43f8ffe0c747dc344c0d088b45048947e08b451089 *47e48b46088947e88b450c8947ec8b460c8947f0c747f4f86a0c088b46048947f88d47dc8947fc *8b460c89078d77f483c5188b45008b40e8ebb3908b46048945148b750483c50ce9eb0100008d76 *0003000100120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945 *f48b46088945f08b46108945ec8b760483ed14b8ec4e0d08ebd38b45088945148b750483c50ce9 *970100008d76008b751483c518ff26584d0d08444d0d08000000008500000025000000f8450d08 *85010000240001008b450c2b46048b55148955fc8945f8897510c74500744d0d0883ed08e9bbfc *00008d76008b45088945148b750483c50ce9370100008d76008b751483c518ff26b84d0d08a44d *0d08000000008500000025000000f8450d0885010000240001008b45102b46048b55148955fc89 *45f8897510c74500d44d0d0883ed08e95bfc00008d7600f8450d08850000002400010083c7143b *7b5c760cc7436c050000008b43f8ffe0c747f00c4d0d088b45048947f48b45108947f88b451489 *47fc8b450c89078b450c3b46047c1a8d47f08945148b55108b460489451089d6c74500e04d0d08 *eb108d47f08945148b7510c74500804d0d088b06ebaa8b46088945088b55148b460489451489d6 *c74500104e0d08ff2689f6bed0df110883c5188b4500ff60dc89f6be20e9110883c518ff2689f6 *a44e0d08a44e0d08944e0d08784e0d08f04c0d08904c0d086c4b0d08f84a0d08ec450d08850000 *0025000900ec450d0812000300020000000e0009008d45ec3b435473058b43fcffe08975f88b46 *088945fc8b55088b460489450889d6c745f4dc4e0d0883ed0c8b06ebdc90210000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe08b45042b4604c747fc54dc0b0889078d77fc83c5 *08b8d46d1008ebe201000000240000008b55048b460489450489d6c74500244f0d08ff26020000 *00150000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604 *c745f05c4f0d0883ed108b06ebdb000000002400000083c7083b7b5c760cc7436c020000008b43 *f8ffe08b460489c2c1ea1f01d0d1f8c747fc54dc0b0889078d77fc83c504b8d46d1008ebdc89f6 *01000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f4 *b04f0d0883ed0c8b06ebe189f60000000024000000c74500f8e811088b46048945fc83ed04e983 *fb00008d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b7604c745f424500d0883ed0c8b06ebe189f60000000024000000c74500f0e811088b46048945 *fc83ed04e92ffb00008d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b7604c745f478500d0883ed0c8b06ebe189f68b750483c528e9cdb60200900200 *0100120000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46 *0c8945f08b760483ed10b8685a0d08ebd989f683c7103b7b5c760cc7436c040000008b43f8ffe0 *c747f4d8500d088b45148947f88b46048947fc8b452489078d47f4894528c7452448e911088b75 *0883c520b814161008ebcc89f602000200120000008d45f03b435473058b43f8ffe08d45f8c700 *d46d10088970048b460c0346108b56048955f48945f08b760883ed10b8345c0d08ebd68d760004 *000200120000008d45ec3b4354720883c7143b7b5c760cc7436c050000008b43f8ffe08d45f8c7 *00d46d1008897004c747f05c510d088b46088947f48b460c8947f88b46148947fc8b461889078d *47f08945f48b46048945f08b761083ed14b814161008ebbb9000000200140000008d45f43b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8244b0e08ebe28d760083 *c7303b7b5c760cc7436c0c0000008b43f8ffe0c747d49c510d088b45148947d88b45048947dc8b *450c8947e08b45088947e48b45248947e88b45108947ecc747f004520d088b45248947f4c747fc *c86a0c088d47f089078d47d48945288d47fc8945248b750883c520b814161008eba18d76000200 *0200120000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b461003460c8b56 *048955f48945f08b760883ed10b8345c0d08ebd68d760004000200120000008d45ec3b43547208 *83c7143b7b5c760cc7436c050000008b43f8ffe08d45f8c700d46d1008897004c747f0ac520d08 *8b46088947f48b460c8947f88b46148947fc8b461889078d47f08945f48b46048945f08b761083 *ed14b814161008ebbb9000000200140000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b46048945f483ed0cb8244b0e08ebe28d7600060500002400000083c7303b7b5c760c *c7436c0c0000008b43f8ffe08b55182b5604c747d4ec520d088b45148947d88b450c8947dc8b45 *088947e08b45048947e48b45108947e88957ecc747f054530d088957f4c747fcc86a0c088d47f0 *89078d47d48945188d47fc8945148b750483c510b814161008eba18d760005000200120000008d *45dc3b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e08b46108945e48b460c *8945e88b461c8945ec8b46088945f08b46188945f48b7604c745dc88530d0883ed248b06ebbd89 *f605000200120000008d45ec3b4354720883c7203b7b5c760cc7436c080000008b43f8ffe08d45 *f8c700d46d1008897004c747e404540d088b46048947e88b46088947ec8b460c8947f08b461089 *47f48b46148947f88b46188947fc8b461c89078d47e48945f4c745f048e911088b761483ed14b8 *14161008eba889f606000200120000008d45ec3b4354720883c7203b7b5c760cc7436c08000000 *8b43f8ffe08d45f8c700d46d1008897004c747e45c540d088b46048947e88b460c8947ec8b4610 *8947f08b46148947f48b46188947f88b461c8947fc8b462089078d47e48945f48b46088945f08b *761883ed14b814161008eba98d760002000200120000008d45f03b435473058b43f8ffe08d45f8 *c700d46d10088970048b461003460c8b56048955f48945f08b760883ed10b8345c0d08ebd68d76 *0004000200120000008d45ec3b4354720883c7143b7b5c760cc7436c050000008b43f8ffe08d45 *f8c700d46d1008897004c747f054550d088b46088947f48b460c8947f88b46148947fc8b461889 *078d47f08945f48b46048945f08b761083ed14b814161008ebbb9000000200140000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8244b0e08ebe28d76 *00060500002400000083c7303b7b5c760cc7436c0c0000008b43f8ffe08b5518035604c747d494 *550d088b45148947d88b450c8947dc8b45088947e08b45048947e48b45108947e88957ecc747f0 *fc550d088957f4c747fcc86a0c088d47f089078d47d48945188d47fc8945148b750483c510b814 *161008eba18d760005000200120000008d45dc3b435473058b43f8ffe08d45f8c700d46d100889 *70048b46148945e08b46108945e48b460c8945e88b461c8945ec8b46088945f08b46188945f48b *7604c745dc30560d0883ed248b06ebbd89f605000200120000008d45ec3b4354720883c7203b7b *5c760cc7436c080000008b43f8ffe08d45f8c700d46d1008897004c747e4ac560d088b46048947 *e88b46088947ec8b460c8947f08b46108947f48b46148947f88b46188947fc8b461c89078d47e4 *8945f4c745f048e911088b761483ed14b814161008eba889f606000200120000008d45ec3b4354 *720883c7203b7b5c760cc7436c080000008b43f8ffe08d45f8c700d46d1008897004c747e40457 *0d088b46048947e88b460c8947ec8b46108947f08b46148947f48b46188947f88b461c8947fc8b *462089078d47e48945f48b46088945f08b761883ed14b814161008eba98d760002000200120000 *008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460c0346108b56048955f489 *45f08b760883ed10b8345c0d08ebd68d760004000200120000008d45ec3b4354720883c7143b7b *5c760cc7436c050000008b43f8ffe08d45f8c700d46d1008897004c747f0fc570d088b46088947 *f48b460c8947f88b46148947fc8b461889078d47f08945f48b46048945f08b761083ed14b81416 *1008ebbb9000000200140000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *46048945f483ed0cb8244b0e08ebe28d76000a6100002400000083c7303b7b5c760cc7436c0c00 *00008b43f8ffe08b45243b46047d6e85c07858c747d43c580d088b45148947d88b45048947dc8b *450c8947e08b45088947e48b45248947e88b45108947ecc747f0a4580d088b45248947f4c747fc *c86a0c088d47f089078d47d48945288d47fc8945248b750883c520eb5fc747d480570d088b4520 *8947d88b4518eb10c747d4d8540d088b45208947d88b451c8947dc8b45148947e08b45048947e4 *8b450c8947e88b45088947ec8b45248947f08b45108947f48d47d4894528c7452448e911088b75 *0883c52083ef0cb814161008e931ffffff8d76008b7528c74500d8580d08ff2600000000000000 *00bc590d0830520d08000000000a210000250000008b46088945048b46048945148b55108b460c *89451089d6c74500e4590d08ff268b45240346088b56048955288945248b751483c524eb4d90be *00e9110883c528e973ad02008d76001c5a0d081c5a0d081c5a0d081c5a0d08045a0d08e4590d08 *0c510d08c4500d08e4450d080a20000025000100e4450d0809000200080000000b0001008d45dc *3b435473058b43fcffe08b46208945e08b461c8945e48b46188945e88b46148945ec8975f08b46 *108945f48b460c8945f88b46088945fc8b55048b460489450489d6c745dc585a0d0883ed248b06 *ebb8908b750483c514e9d5ac02009002000100120000008d45f03b435473058b43f8ffe08d45f8 *c700d46d10088970048b46088945f48b460c8945f08b760483ed10b8685a0d08ebd989f683c710 *3b7b5c760cc7436c040000008b43f8ffe0c747f4d05a0d088b45148947f88b46048947fc8b4510 *89078d47f4894514c7451048e911088b750883c50cb814161008ebcc89f602000200120000008d *45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460c0346108b56088955f48945f0 *8b760483ed10b8345c0d08ebd68d760083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0 *545b0d088b450c8947f48b46088947f88b45108947fc8b460c89078d47f08945148b4604894510 *8b750883c50cb814161008ebc7908b46048945148b750c83c510eb4e89f6be30e9110883c514e9 *a7ab02008d7600e85b0d08e85b0d08e85b0d08e85b0d08d85b0d088c5b0d08045b0d08bc5a0d08 *f0450d080501000025000100f0450d0809000200030000000b0001008d45f03b435473058b43fc *ffe08b460c8945f48b46088945f88975fc8b55048b460489450489d6c745f0245c0d0883ed108b *06ebd68d760089750cc74508000000008b750483c508e9e7fdffff8d76006c5c0d086c5c0d086c *5c0d086c5c0d086c5c0d086c5c0d086c5c0d086c5c0d0800000000c3000000250000008975fc8b *450c8945f88b7508c74500b05c0d0883ed08e9fdedffff90b05c0d08b05c0d08b05c0d08b05c0d *08b05c0d08b05c0d08b05c0d08b05c0d08000000008300000025000000f4450d08030000002400 *01008b450c8945fc8b460489450cc74500f85c0d0883ed04e9c5cdffff908b7504c74508045d0d *0883c508ff269089750cc74508000000008b750483c508e923fdffff8d7600305d0d08305d0d08 *305d0d08305d0d08305d0d08305d0d08305d0d08305d0d0800000000c3000000250000008975fc *c745f8ffffff7f8b7508c74500745d0d0883ed08e938edffff745d0d08745d0d08745d0d08745d *0d08745d0d08745d0d08745d0d08745d0d080000000083000000250000008b4514894504c74508 *bc5d0d0883c504e913cdffff8d76000000000000000000bc5d0d08205d0d08f4450d0845000000 *2500010081c7980000003b7b5c760cc7436c260000008b43f8ffe0c7876cffffff28470d088b45 *04898770ffffff8b4508898774ffffffc78778ffffffc84a0d088d876cffffff89877cffffff8d *4784894780c74784ec4e0d088d876cffffff8947888d8778ffffff89478cc74790784f0d088b45 *048947948d876cffffff894798c7479cf04f0d088d47908947a0c747a844500d088d479c8947ac *c747b4c86a0c088d47a88947b8c747bc98500d088d479c8947c0c747c8c86a0c088d47bc8947cc *c747d0685a0d088d47908947d48d479c8947d88d47b48947dc8d47c88947e08977e48d47f48947 *e88b450c8947ec8b45108947f0c747f4345c0d088d47d08947f88b450c8947fc8b451089078d47 *d089450c8d8778ffffff894510c74500f05d0d088b06e9edfeffffa8460d0854460d08f05d0d08 *f05d0d08dc450d08050000002500ff0001000000020000008b4500ff60f089f601000000090000 *008b4500ff60f0909001000000020001008b4500ff60ec89f601000000090001008b4500ff60ec *909001000100050003008b4500ff60e489f601000100090003008b4500ff60e490900200000004 *0004008b4500ff60e089f602000000090004008b4500ff60e09090000000000a0005008b4500ff *60dc90902140232425262a2b2e2f3c3d3e3f5c5e7c3a2d7e008d760000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8459e02 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c45f0d08 *83ed10b84cce0b08ebbf902c3b28295b5d7b7d600089f600000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d59d02008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f040600d0883ed10b84c *ce0b08ebbf90a4e8110894e91108e4e91108b0600d0800000200180007008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8619d02008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f4e4e91108c745f0dce9110883ed10b8dc33 *0e08ebbf90d4df110824610d080400010000000000110001008d45f83b4354730abe04e011088b *43fcffe08b45008945fcc74500d4df1108c745f880d1110883ed08b82cf50b08ebe0a4e81108fc *e9110804ea110868610d0800000200180007008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8a99c02008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f404ea1108c745f0fce9110883ed10b8dc330e08ebbf9094e9110880d8 *110868d61108ece911080cea1108dc610d08040001000000000011001f008d45fc3b4354720b81 *c7d00000003b7b5c7611c7436c34000000be2ce011088b43fcffe0c78734ffffffa0630d088b45 *00898738ffffffc78740ffffffd8630d088b4500898744ffffffc7874cffffff10640d088b4500 *898750ffffffc78758ffffff48640d088b450089875cffffffc78764ffffff80640d088b450089 *8768ffffffc78770ffffffb8640d088b4500898774ffffffc7877cfffffff0640d088b45008947 *80c7478898730d088b450089478c8d8734ffffff8947908d8740ffffff8947948d874cffffff89 *47988d8758ffffff89479c8d8764ffffff8947a08d8770ffffff8947a48d877cffffff8947a8c7 *47ac30740d088b45008947b0c747b868740d088b45008947bcc747c4a0740d088b45008947c8c7 *47d040750d088d8734ffffff8947d48d8740ffffff8947d88d874cffffff8947dc8d8758ffffff *8947e08d8764ffffff8947e48d8770ffffff8947e88d877cffffff8947ec8d47ac8947f08d47b8 *8947f48d47c48947f8c747fca05e0c088d47d089078d47888945008d47fc8945fc83ed04b83851 *0c08e98cfeffff89f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *897004c745f47cea11088b760483ed10b808121008ebde8d760001000100130000008d45f03b43 *5473058b43f8ffe08d45f8c700d46d1008897004c745f46cea11088b760483ed10b808121008eb *de8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745 *f45cea11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43 *f8ffe08d45f8c700d46d1008897004c745f44cea11088b760483ed10b808121008ebde8d760001 *000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f43cea1108 *8b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45 *f8c700d46d1008897004c745f42cea11088b760483ed10b808121008ebde8d7600010001001300 *00008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f41cea11088b760483ed *10b808121008ebde8d760004000100010000000c0000008d45fc3b4354720883c70c3b7b5c760c *c7436c030000008b43fcffe0c747f8e4bb0b088b45008947fcc70704d211088d47f88945008b76 *0483ed04b808121008ebd889f6e8610d0801000100130001008d45f03b4354720883c7083b7b5c *760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc2c650d088b460489078d *47fc8945f4beece9110883ed10b808121008ebd18d760001000100130000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f43cec11088b760483ed10b808121008ebde8d76 *0001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f42cec *11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d1008897004c745f41cec11088b760483ed10b808121008ebde8d760001000100 *130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f40cec11088b7604 *83ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700 *d46d1008897004c745f4fceb11088b760483ed10b808121008ebde8d760001000100130000008d *45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4eceb11088b760483ed10b808 *121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *7004c745f4dceb11088b760483ed10b808121008ebde8d760001000100130000008d45f03b4354 *73058b43f8ffe08d45f8c700d46d1008897004c745f4cceb11088b760483ed10b808121008ebde *8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4 *bceb11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8 *ffe08d45f8c700d46d1008897004c745f4aceb11088b760483ed10b808121008ebde8d76000100 *0100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f49ceb11088b *760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f48ceb11088b760483ed10b808121008ebde8d760001000100130000 *008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f47ceb11088b760483ed10 *b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f46ceb11088b760483ed10b808121008ebde8d760001000100130000008d45f03b *435473058b43f8ffe08d45f8c700d46d1008897004c745f45ceb11088b760483ed10b808121008 *ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c7 *45f44ceb11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b *43f8ffe08d45f8c700d46d1008897004c745f43ceb11088b760483ed10b808121008ebde8d7600 *01000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f42ceb11 *088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d *45f8c700d46d1008897004c745f41ceb11088b760483ed10b808121008ebde8d76000100010013 *0000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f40ceb11088b760483 *ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d1008897004c745f4fcea11088b760483ed10b808121008ebde8d760001000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4ecea11088b760483ed10b80812 *1008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *04c745f4dcea11088b760483ed10b808121008ebde8d760001000100130000008d45f03b435473 *058b43f8ffe08d45f8c700d46d1008897004c745f4ccea11088b760483ed10b808121008ebde8d *760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4bc *ea11088b760483ed10b808121008ebde8d760003000100200000000b0000008b450083e84083f8 *1f0f87c4000000ff2485884811088bb68000000083c5048b06ffe08b767cebf48b7678ebef8b76 *74ebea8b7670ebe58b766cebe08b7668ebdb8b761cebd68b7618ebd18b7608ebcc8b7610ebc78b *7604ebc28b7614ebbd8b760cebb88b7664ebb38b7660ebae8b765ceba98b7658eba48b7654eb9f *8b7650eb9a8b764ceb958b7648eb908b7644eb8b8b7640eb868b763ceb818b7638e979ffffff8b *7634e971ffffff8b7630e969ffffff8b762ce961ffffff8b7628e959ffffff8b7624e951ffffff *8b7620e949ffffffbe78d6110883c5048b45008b40e8e93bffffff89f601000000240000008b45 *048b560489550489c683c504e9fdfeffff9004000100010000000c0000008d45fc3b435473058b *43fcffe08b55008b460489450089d6c745fc3c6c0d0883ed048b06ebe589f60100000024000000 *837e045e750d8b750483c508b8a05e0c08ffe0be78d6110883c5088b45008b40e8ebee90040001 *00010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc8c6c0d *0883ed048b06ebe589f6e4610d0808000000120003008d45f03b4354720b81c7dc0100003b7b5c *760cc7436c770000008b43f8ffe08d45f8c700d46d1008897004c78728feffff7c650d088b4604 *89872cfeffffc78734feffffd0650d088b4604898738feffffc78740feffff08660d088b460489 *8744feffffc7874cfeffff40660d088b4604898750feffffc78758feffff78660d088b46048987 *5cfeffffc78764feffffb0660d088b4604898768feffffc78770feffffe8660d088b4604898774 *feffffc7877cfeffff20670d088b4604898780feffffc78788feffff58670d088b460489878cfe *ffffc78794feffff90670d088b4604898798feffffc787a0feffffc8670d088b46048987a4feff *ffc787acfeffff00680d088b46048987b0feffffc787b8feffff38680d088b46048987bcfeffff *c787c4feffff70680d088b46048987c8feffffc787d0feffffa8680d088b46048987d4feffffc7 *87dcfeffffe0680d088b46048987e0feffffc787e8feffff18690d088b46048987ecfeffffc787 *f4feffff50690d088b46048987f8feffffc78700ffffff88690d088b4604898704ffffffc7870c *ffffffc0690d088b4604898710ffffffc78718fffffff8690d088b460489871cffffffc78724ff *ffff306a0d088b4604898728ffffffc78730ffffff686a0d088b4604898734ffffffc7873cffff *ffa06a0d088b4604898740ffffffc78748ffffffd86a0d088b460489874cffffffc78754ffffff *106b0d088b4604898758ffffffc78760ffffff4c6b0d088b4608898764ffffff8b460c898768ff *ffff8b461089876cffffff8b4614898770ffffff8b4618898774ffffff8b461c898778ffffff8b *462089877cffffff8d8734feffff8947808d8740feffff8947848d874cfeffff8947888d8758fe *ffff89478c8d8764feffff8947908d8770feffff8947948d877cfeffff8947988d8788feffff89 *479c8d8794feffff8947a08d87a0feffff8947a48d87acfeffff8947a88d87b8feffff8947ac8d *87c4feffff8947b08d87d0feffff8947b48d87dcfeffff8947b88d87e8feffff8947bc8d87f4fe *ffff8947c08d8700ffffff8947c48d870cffffff8947c88d8718ffffff8947cc8d8724ffffff89 *47d08d8730ffffff8947d48d873cffffff8947d88d8748ffffff8947dc8d8754ffffff8947e0c7 *47e45c6c0d088d8760ffffff8947e8c747eca05e0c088d47e48947f0c747f4bc6c0d088d47ec89 *47f8c747fca05e0c088d47f489078d8728feffff8945f48d47fc8945f083ed10b838510c08e988 *fcffff8d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f483ed0cb804580e08ebe28d760083c7083b7b5c760cc7436c020000008b43f8ffe0 *817e04ffff1000760fbe80d8110883c50483ef088b06ebe68b4604c747fc3cdc0b0889078d77fc *83c504b8d46d1008ebcd8d7600e0610d08000000002400010083c7083b7b5c760ec7436c020000 *00b8f0371008ffe081feffff1000760fbe80d8110883c50483ef088b06ebe7c747fc3cdc0b0889 *378d77fc83c504b8d46d1008ebd1908b46048943048b7608c7450010710d08e97bdf02008d7600 *54710d08bc700d08e0610d080000000025000100e0610d0801000100130001008d45f43b435473 *058b43f8ffe08d45f8c700d46d10088970048b7604c745f480710d0883ed0c8b06ebe189f6e061 *0d08020000002400010083c7183b7b5c761cc7436c06000000c74500c4710d08c74320ff000000 *b8b03d1008ffe0c747ec8c710d088b45048947f0c747f8e4bb0b088d47ec8947fcc70704d21108 *8b75088d47f889450883c504b808121008ebcb90817e04ffff10007f07b8c4710d08ffe0be78d6 *110883c50c8b45008b40e8ebeee0610d08020000002400010085f67f07b8c4710d08ffe0be78d6 *110883c50c8b45008b40e8ebee90c74308ffff10008b46048943048b7608c7450048720d08e9b8 *dd020064720d081c720d08e0610d080200000025000100897500c745fc94720d0883ed04ff2690 *94720d0894720d08e0610d080100000025000100e0610d0804000100020000000e0001008d45f0 *3b435473058b43fcffe08b45008945f8c745f4a4e911088b46088945f08b4604894500c745fcb8 *720d0883ed10b8f84c0e08ebd490dc610d0804000100010000000c0003008d45fc3b4354720883 *c7183b7b5c760cc7436c060000008b43fcffe0c747ec90700d088b45008947f0c747f8c8720d08 *8b46048947fc8d47ec89078b45008945fc8d47f889450083ed04b8604e0e08ebc98d7600897500 *e9ccddfeff64730d0864730d0864730d0864730d0864730d08e4610d080100000025000100dc61 *0d080800000012001f008d45e83b4354720883c72c3b7b5c760cc7436c0b0000008b43f8ffe08d *45f8c700d46d1008897004c747d8f06c0d088b46048947dc8b46088947e08b460c8947e48b4610 *8947e88b46148947ec8b46188947f08b461c8947f48b46208947f8c747fc10730d088b46048907 *8d47fc8945ec8d47d88945f4be0cea1108c745f08c730d0883ed18b808121008eb8d8d76000100 *0100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4acea11088b *760483ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f49cea11088b760483ed10b808121008ebde8d760001000100130000 *008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f48cea11088b760483ed10 *b808121008ebde8d76000a000000240000008b460483e82283f854773eff2485084911088b7510 *83c52c8b06ffe08b7514ebf48b7518ebef8b751cebea8b7520ebe58b7524ebe08b7528ebdb8b75 *04ebd68b7508ebd18b750cebccbe78d6110883c52c8b45008b40e8ebc18d7600040001000a0000 *000b0000008d45d83b435473058b43fcffe08b46288945dc8b46248945e08b46208945e48b461c *8945e88b46188945ec8b46148945f08b46108945f48b460c8945f88b46088945fc8b55008b4604 *89450089d6c745d8d8740d0883ed288b06ebaf4cec11089c750d0800000200180001008d45f43b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e87d880200 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f450d1110883ed0cb8006a0e08 *ebc6f8e0110800760d081600040000000000110001008d45bc3b4354730abe44e011088b43fcff *e08b45008b7004c745fc987d0d0883ed048b06ebea89f6230000002400000083c7183b7b5c760c *c7436c060000008b43f8ffe08b4d0481e1ff0300008b460c8b54880cc747ece4bb0b088b450889 *47f08b450c8947f4c747f87cdc0b088d47ec8947fc89178b560c8d47f889448a0cbe0cd2110883 *c5108b4500ebb58d760044000000240000008b45048b74b00cc7450444760d0883c504ff269066 *01000024000000c74504f6ffffff897500897510c74508ac760d08e9ff8200008d760066010000 *240000008b46042345103b450874053b45087c0489c6ebc88b460489c6237504ebf489f6440000 *00240000008b450c8945f48b46248945fc8b46188945008b46208945088b7610c745f8ec760d08 *83ed10e9ca9a020089f604000000240000008b4508897004c7450014770d08ff2690092e000024 *00000083c7303b7b5c760ec7436c0c000000b8f0371008ffe08b4524408944240889f183c9018b *551801d2c747d41c810d088b45108947d88b450c8947dc8b45208947e08b45088947e48b450489 *47e8c747ec000000008957f08b45148947f4894ff88b451c8947fc8b44240889078d77d483c528 *b8d46d1008eb9b8d7600092e000024000000c745fc010000008b45148945f8c7450060770d0883 *ed08e9e081000005000600120000008d45c83b4354720883c7303b7b5c760cc7436c0c0000008b *43f8ffe08d45f8c700d46d10088970048b4e20418b46188945f48b46048945f08b461c8945ec8b *46248945e88b462c8945e48b46088945e08b460c8945dc8b46108945d88b46148945d43b4e2474 *5b3b4de87d568b55f442c747d41c810d088b45e08947d88b45dc8947dc8b45f08947e08b45d889 *47e48b45d48947e8894fec8b45e88947f08b46288947f48b45e48947f88b45ec8947fc89178d77 *d483ed08b8d46d1008e958ffffff83ed3083ef30b8e4770d08e948ffffff89f6e6050000240000 *008b4d048b560c8b451489448a0cbe0cd2110883c51cff6500e8030000240000008b4d048b560c *8b451889448a0c8b55108b45208b74900cc74508e4780d0883c508ff26908b55108b45288b7490 *0cc7450804790d0883c508ff2689f6ca0d00002400000083c70c3b7b5c761cc7436c03000000c7 *450048790d08c74320ff000000b8b03d1008ffe03b751c741ac747f87cdc0b088b45148947fc8b *452089078d47f8894520eb18c747f87cdc0b088b45148947fc8b452489078d47f88945248b7504 *83c520b8647a0d08ebbaca0d0000240000008b46042345183b451074053b45107c0789c6e979ff *ffff8b460489c623750cebf18d7600ca090000240000008b45188945fc8b462489450c8b461889 *45108b46208945188b7610c74500b8790d0883ed08e9fa97020089f68a0f000024000000897514 *8b46048945188b7508c74500e4790d08ff268d76008b46088945288b7604c74500187a0d08ff26 *89f6307a0d0828790d08000000008a0f00002500000016000400020005000b0000008d45d83b43 *5473058b43fcffe08975e48b46088945e88b461c8945ec8b46188945f08b46148945f48b461089 *45f88b460c8945fc8b55088b460489450889d6c745e0587a0d0883ed208b06ebbe8d7600050000 *00240000008b750483c504e981fcffff90f2e107002400000083c7503b7b5c760cc7436c140000 *008b43f8ffe08b553081e2ff0300008b460c8b4c900cc747b408780d088b453c8947b88b452089 *47bc8b451c8947c08b45188947c48b45148947c88b45388947cc8b45348947d08b45308947d48b *452c8947d88b45288947dc8b45248947e0c747e4647a0d088b453c8947e88d47b48947ec8b450c *8947f08b45108947f48b45088947f88b45048947fc8917894d30c7452c00d21108c7452800d211 *088d47b48945388d77e4c74534bc7a0d0883c528b8647a0d08e94afffffff1f00300240000008b *45388b44b00c89750089c6c745fcd07a0d0883ed04ff26f1f0030024000000c745fcf6ffffff8b *452c8945f8c74500a07b0d0883ed08e9047e000000760d08b3c30f002400010083c7103b7b5c76 *0cc7436c040000008b43f8ffe08b45143b460474143b46047c0fbef8e0110883c55083ef108b06 *ebe2c747f46c8f0d08c747f854ec1108c747fc5cec11088b450889078b45142b45048b4d408d57 *f48954810c83c508b8c07b0d08ebae00760d08b3c30f002400010083c7103b7b5c760cc7436c04 *0000008b43f8ffe08b45143b460474143b46047c0fbef8e0110883c55083ef108b06ebe2c747f4 *6c8f0d08c747f854ec1108c747fc5cec11088b450889078b45142b45048b4d408d57f48954810c *83c508b8c07b0d08ebae00760d08d2e10700240001008b46043b451074233b45107d148945008b *751cc745fc587c0d0883ed048b06ffe0bef8e0110883c54cebf28b46048945008b751cc745fce8 *7b0d08ebdd8d760000760d08f1f00300240001008975008b751cc745fcc87c0d0883ed04ff2689 *f600760d0830f801002400010081fe00040000750d8b750883c530b848770d08ffe081feff0300 *007feb8b450425ff03000089750889450085c0751dc7430400d21108be00040000c745fc147d0d *0883ed04b818431008ebc783ed04b8c07b0d08ebbd89f600760d08030000002400010083c7303b *7b5c760cc7436c0c0000008b43f8ffe08b462c8d1485000000008b460c8945008b4e2841c747d4 *1c810d088b46048947d88b46088947dc8b45008947e08b46108947e48b46148947e88b46188947 *ec8b461c8947f08b46208947f48b46248947f8894ffc8b462c8907395628746b3956287c668b46 *1c034618c745c8f6ffffff8945c48945d08d47d48945d48b46148945d88b46108945dc8b460889 *45e08b46048945e48b46248945e88b46208945ec8b461c8945f08b46188945f4894df88b462c89 *45fcc745cc347d0d0883ed3cb8e0f90d08e935ffffff8d77d483ed04b848770d08e925ffffff90 *90900b00030000000000110000008d45e43b4354730abe4ce011088b43fcffe08b45008b7004c7 *4500dc800d088b06ebed90be00d2110883c5108b4500ff60f089f68b45048945108b750883c510 *e9c30000008d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec8c6b10088b450889 *47f08b45048947f4c747f87cdc0b088b45108947fc8d47ec89078d77f883c5148b45008b40eceb *cb90dc7e0d08c87e0d0800000000840000002500000004000000240000008b46048945fc8b4510 *8945f88b46088945108b750cc74500387f0d0883ed0ce9b09602008b46088945008b7604c745fc *407f0d0883ed04ff268d7600647f0d08b87e0d0800000000030000002500000004000100020000 *000e0000008d45e43b435473058b43fcffe08975f88b46088945fc8b55008b460489450089d6c7 *45f4907f0d0883ed0c8b06ebdc90bee0d0110883c504ff65009083c7083b7b5c760cc7436c0200 *00008b43f8ffe0c747fc94b90b088b460489078d77fc83c5048b4500ebe790d87f0d08cc7f0d08 *000000000000000025000000c40000002400000083c70c3b7b5c760cc7436c030000008b43f8ff *e08b550c81e2ff0300008b460c8b54900cc747f89c7f0d088b45108947fc8b4504890789550c8d *77f8c7451018800d0883c50cb89c7f0d08ebc58d760084000000240000008b45088b74b00cc745 *0020800d08ff266602000024000000c74504f6ffffff897500897514c7450878800d08e9377900 *008d760066020000240000008b46042345143b450874053b45087c0489c6ebc88b460489c62375 *04ebf489f601000000240000008b45048945e88b46248945f08b46188945f48b46148945f88b46 *0c8945fc8b46208945008b7610c745ecb4800d0883ed1ce9f690020090900500060001000000ff *6500900500060009000000ff6500904d617962652e66726f6d4a7573743a204e6f7468696e6700 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8dd7c02008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f02c810d0883ed10b84cce0b08ebbf9064ec1108a8810d0800000200180001008d *45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e871 *7c02008d47f8894604c706245b10088d55f8c702d46d1008894204be64ec1108c745f418820d08 *83ed0c8b06ebc489f6000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747 *fcd4f10c088b460889078d77fc83c504b8d46d1008ebe590909064ec110848820d080000020018 *0001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e8d17b02008d47f8894604c706245b10088d55f8c702d46d1008894204be64ec1108c745f4 *b8820d0883ed0c8b06ebc489f6000000002400000083c7083b7b5c760cc7436c020000008b43f8 *ffe0c747fcd4f10c088b460c89078d77fc83c504b8d46d1008ebe5909090040001000000000011 *0000008d45fc3b4354730abe80e011088b43fcffe08b7500c74500dc830d088b06ebf0be00d211 *0883c5048b4500ff60f089f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46048945f483ed0cb8f4820d08ebe28d7600010000002400000083c7203b7b5c *760cc7436c080000008b43f8ffe0c747e42c830d088b45048947e8c747f054dc0b088b460c8947 *f4c747f87cdc0b088d47f08947fc8d47e489078d77f883c5088b45008b40ecebc489f68b460889 *45008b7604c745fc60830d0883ed04ff268d7600b0830d0814830d080000000000000000250000 *0017000400000000001100000083c7243b7b5c7611c7436c09000000be84e011088b43fcffe0c7 *47e0dc840d088b45048947e4c747ecb8850d088b45048947f08d47e08947f48b45088947f88b45 *008947fc8b450c89078d47ec89450c83c50cb88ce80b08ebbd89f600000000240000008b460483 *f87a7776ff24855c4a1108bed4e3110883c504e96ce90200be08e41108ebf1bef8e31108ebeabe *cce31108ebe3bef4e31108ebdcbef0e31108ebd5bee8e31108ebcebedce31108ebc7bed8e31108 *ebc0be28da1108ebb9bee4e31108ebb2be04e41108ebabbe00e41108eba4bed0e31108eb9dbefc *e31108eb96beece31108eb8f8d760001000100130000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b7604c745f44c840d0883ed0c8b06ebe189f6e9ab0000008d7600040000 *002400000083c7183b7b5c7615c7436c06000000c74320fe000000b8b03d1008ffe0c747ecece8 *0b088b450c8947f08b45108947f48b45088947f88977fc8b450489078d77ec83c5148b4500ebd2 *8d760004000000240000008975fcc7450018850d0883ed04e93afdfeff89f60400000024000000 *8b46048945fcc745006c850d0883ed04e907e800008d760008850d080000000000000000000001 *00050000000b0000008d45e83b435473058b43fcffe08b46148945f08b46108945f48b460c8945 *f88b46088945fc8b7604c745ec88850d0883ed148b06ebd590900300020000000000110000008b *45008944240883c504e8610ff7ff8b5424088910ff650038860d08000000000000000000000100 *0000000011000000e83b0ff7ff8b30ff650089f6e9efffffff9090900400010000000000110000 *0083c7183b7b5c7611c7436c06000000be90e011088b43fcffe0c747ec0c870d088b45008947f0 *c747f8cc870d088b45008947fc8d47ec89078d77f883c5048b4500ebd49001000100130000008d *45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4a0d711088b760483ed10b808 *121008ebde8d7600000000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *98860d088b46248947fc8d47f88945008b761883ed04b808121008ebde01000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f4d0860d0883ed0c8b06eb *e189f68b750883c50cff65008d76008b450489450883c508e986fafeff89f644870d0838870d08 *00000000020000002500000003000000240000008b45048945008b450c8945fc8b7608c7450468 *870d0883ed08e9868e020089f603000000240000008b7604c7450070870d08ff26030000002400 *00008b450c89750c89c6c7450098870d08ff268d76000b000300020000000e0000008d45f03b43 *5473058b43fcffe08b46088945fc8b55048b460489450489d6c745f8ac870d0883ed0cb81c0910 *08ebdc901600040000000000110000008d45f03b4354730abe94e011088b43fcffe08b7508c745 *fc90880d0883ed08b81c091008ebea89f68b750483c514ff65008d7600030000002400000083fe *04750a83c504b808880d08ffe08b450889450c83c50cb8d8810c08ebee90c7450444880d0883c5 *04e9b9fdffff9064880d0830880d0800000000040000002500000003000000240000008975f889 *75008b7504c745fc88880d0883ed0ce9608902000400010000000000110000008b7500c74500c8 *880d08ff260000000024000000837e04000f94c00fb6c08944240883c5048b34852cdc0b088b54 *2408c1e2028b450029d0ff60f0901700050000000000110000008d45f03b4354730abe9ce01108 *8b43fcffe08b7508c745fcb0890d0883ed08b81c091008ebea89f68b750483c518ff65008d7600 *040000002400000083c504e9bcffffff040000002400000083fe04740783fe0b740ceb1e83c504 *b8fc880d08ffe08b7510c7450038890d0883ed04b81c091008ebea8b450889451083c510b8d881 *0c08ebda89f6c7450448890d0883c504e999fcffff9084890d0824890d08000000000500000025 *00000004000000240000008975f88975008b7504c745fca8890d0883ed0ce94088020003000200 *00000000110000008b450083c504890424e89a0ef7ffff65009090900800030000000000110000 *008b55008b450483c50889442404891424e8730df7ff89c6ff65009090308a0d08000000000000 *0000000001000000000011000000be00d21108ff6500e9f3ffffff909090170004000000000011 *00000083c7103b7b5c7611c7436c04000000bedce011088b43fcffe0c747f48c8c0d088b450089 *47f88b45088947fc8b450489078b450c894508c7450c000000008d77f483c508b88c8c0d08ebcc *90850300002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc54dc0b088b4514 *89078b45048945148d47fc8945108b450889450c8b761083c508b8e41a1008ebd3908b750cc745 *00988a0d08ff2602000100120000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *048b460c408945f48b46048945f08b760883ed10b88c8c0d08ebd890830000002400000083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fc54dc0b088b450c89078b450489450c8b450889 *45048d47fc8945088b7610b8e41a1008ebd603000100120000008d45e83b435473058b43f8ffe0 *8d45f8c700d46d10088970048b460c8945ec8b46088945f08b46108945f48b7604c745e8288b0d *0883ed188b06ebcfeb2e89f601000000240000008b750483c504e95d7d020090a88b0d08000000 *000000000000000100020000000e0000008d45f43b435473058b43fcffe08b46048945fc8b7608 *c745f8b48b0d0883ed0cb81c091008ebe49083c7303b7b5c760cc7436c0c0000008b43f8ffe0c7 *47d4ec8a0d088b46088947d88b45108947dc8b45148947e0c747e46c8b0d088b450c8947e88b45 *088947ec8b46048947f08b45148947f4c747f8d88b0d088d47d48947fc8d47e489078d77f883c5 *188b4500eba98d7600008c0d08d88a0d080000000005020000250000000a000200030000000b00 *00008d45f03b435473058b43fcffe08b460c8945f48b46088945f88b46048945fc8b4500897500 *89c6c745f0808c0d0883ed108b06ebd69090900b00030000000000110000008b7500c745001c8d *0d08ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040346048b *00c747fce0060c0889078d77fc83c5088b4500ebe201000000240000008b55048b460489450489 *d6c74500e48c0d08ff260b000200000000001100000083c7143b7b5c7611c7436c05000000bee4 *e011088b43fcffe0c747f0888d0d088b45008947f48b45048947f8c747fcfc8d0d088d47f08907 *8d77fc83c5088b4500ebd49002000000150000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46088945f48b46048945f083ed10b880060e08ebdc9021000000240000008b55 *048b46048902be0cd2110883c508ff65009001000000240000008b55048b460489450489d6c745 *00c08d0d08ff2604000200010000000c0000008d45fc3b435473058b43fcffe08b7604c745fcdc *8d0d0883ed048b06ebed90900400020000000000110000008b7500c745003c8e0d08ff26000000 *002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b46048b00c747fce0060c088907 *8d77fc83c5048b4500ebe59090900b00030000000000110000008b7500c74500a88e0d08ff2621 *000000240000008b55048b46048902be0cd2110883c508ff65009001000000240000008b55048b *460489450489d6c745008c8e0d08ff26040001000000000011000000bebcec110883c504e97f4d *feff909090040001000000000011000000bebcec110883c504e9634dfeff90909054d21108c4ec *1108f48e0d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8216f02008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f4c4ec1108be54d2110883ed10b808121008ebc19090900300000001000000ff6500 *900300000009000000ff6500900b00020000000000110000008d45f83b4354730abe08e111088b *43fcffe08b7500c74500b0900d088b06ebf0be04d2110883c5048b4500ff60ec89f6befcd11108 *83c5048b4500ff60f089f6b88f0d08a88f0d080000000000000000250000008b7504c74504dc8f *0d0883c504ff2690befcd1110883c50c8b4500ff60f089f683000000240000008b450c3b460475 *108b450489450c83c508b8888f0d08ffe0befcd1110883c5108b45008b40f0ebee030000002400 *00008b550c8b460489450c89d6c7450004900d08ff268b46088945008b55088b460489450889d6 *c745fc34900d0883ed04ff268d760048900d08ec8f0d080000000002000000250000008b460889 *45008b55048b460489450489d6c745fc7c900d0883ed04ff268d76007c900d08dc8f0d08000000 *0001000000250000000b00020000000000110000008b7500c7450004910d08ff26210000002400 *00008b45043b46040f95c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029 *d0ff60f08d760001000000240000008b55048b460489450489d6c74500d0900d08ff260b000200 *00000000110000008b7500c745006c910d08ff2621000000240000008b45043b46040f94c00fb6 *c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d7600010000002400 *00008b55048b460489450489d6c7450038910d08ff260800020000000000110000008b450099f7 *7d04837d00007e17837d0400791185d2751bbe0000000083c5088b4500ffe0837d0000790f837d *04007e09ebe189d6037504ebe389d6ebdf9090900800020000000000110000008d45fc3b435473 *0abe18e111088b43fcffe0837d00007e19837d040079138b45004899f77d048d70ff83c5088b45 *00ebdf83ed04b81c920d08ebd5906200000024000000837d04007906837d08007f138b550489d0 *99f77d0889c683c50c8b4500ffe08b45044099f77d088d70ffebeb080002000000000011000000 *8b45003b45047c253b45047410be1cd2110883c5088b45008b40e8ffe0be18d2110883c5088b45 *008b40ecebeebe14d2110883c5088b45008b40f0ebde90909003000100000000001100000083c7 *083b7b5c7611c7436c02000000be28e111088b43fcffe0c747fcc4930d088b45008907c7450000 *0000008d77fcb8c4930d08ebe189f601000100160000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b4608408945f48b760483ed0cb8c4930d08ebde8d760001000100160000 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460883c0028945f48b760483 *ed0cb8c4930d08ebdc9001000100160000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b460883c0038945f48b760483ed0cb8c4930d08ebdc9001000100160000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b460883c0048945f48b760483ed0cb8c493 *0d08ebdc9003000100000001000d00000083c7203b7b5c760cc7436c080000008b43fcffe08b56 *048b45000fb60c1085c97513be00d2110883c50483ef208b45008b40f0ebdd83f97f0f86ea0000 *0081f9df0000000f86b500000081f9ef000000765ec747e488930d088977e88b45008947ec8b55 *0083c2038b46040fb61402895424048b550083c2028b46040fb60402c1e0068904248b5500428b *46040fb61402c1e20c89c8c1e0128d8402000038fc8b14248d841000e0ffff8b542404eb3fc747 *e450930d088977e88b45008947ec8b550083c2028b46040fb61402895424088b5500428b46040f *b61402c1e20689c8c1e00c8d840200e0f1ff8b5424088d441080c747f03cdc0b088947f4eb43c7 *47e418930d088977e88b45008947ec8b5500428b46040fb6140289c8c1e0068d840280cfffffeb *cbc747e4e0920d088977e88b45008947ecc747f03cdc0b08894ff4c747f87cdc0b088d47f08947 *fc8d47e489078d77f883c5048b45008b40ece9adfeffff9090900b00020000000000110000008d *45fc3b4354730abe2ce111088b43fcffe08b45008945fc8b4504894500c745049c950d0883ed04 *b848cf0b08ebe190be04d2110883c5048b4500ff60ec89f6befcd1110883c5048b4500ff60f089 *f678950d0868950d080000000000000000250000005072656c7564652e6368723a206261642061 *7267756d656e740089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8696802008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f49c950d0883ed0cb864d60b08ebc654d21108d8ec110814960d08000002 *00180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e8016802008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4d8ec11 *08be54d2110883ed10b808121008ebc190909054d21108e8ec110884960d080000020018000300 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *916702008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4e8ec1108be54d211 *0883ed10b808121008ebc19090900800020000000000110000008d45fc3b4354730abe60e11108 *8b43fcffe08b450489c22b5500791db80000008029d08945048b45008945fc89550083ed04b818 *740e08ebd7b8ffffff7f29d08945048b45008945fc89550083ed04b834750e08ebba89f6e0970d *0884010000000000000000040000000000110000008d45fc3b4354730abe64e111088b43fcffe0 *8b450c89c22b55087929b80000008029d089450c8b45008945fc8b45048945008b450889450489 *550883ed04b85c760e08ebcbb8ffffff7f29d089450c8b45008945fc8b45048945008b45088945 *0489550883ed04b890770e08eba289f6e98bffffff9090900f00030000000000110000008b4504 *89c22b550079158b45003b45087c22295508895504b818740e08ffe08b45003b45087f0d295508 *895504b834750e08ebe9be00d2110883c50c8b45008b40f0ebd994980d08850300000000000000 *00050000000000110000008b450c89c22b550879158b45083b45107c2229551089550cb85c760e *08ffe08b45083b45107f0d29551089550cb890770e08ebe98b750483c510b89c071008ebdc8d76 *00e9b7ffffff90909010990d08840100000000000000000400000000001100000083c7103b7b5c *7611c7436c04000000be70e111088b43fcffe08b45083b450c7f2bc747f46c990d088b45048947 *f88b45008947fc8b450c89078b450889450c8d77f483c50cb86c990d08ebcb8b750483c50c83ef *10b89c071008ebbbe99fffffff8d760002000200120000008d45f43b435473058b43f8ffe08d45 *f8c700d46d10088970048b46103b460c7411408945f48b760883ed0cb86c990d08ebd98b760483 *ed0cb89c071008ebcc9003000100020001000b0000008d45f83b4354720883c71c3b7b5c760cc7 *436c070000008b43fcffe0c747e820990d088b46048947ec8977f08b460c8947f48b45008947f8 *c747fc54dc0b088b450089078d47e88945008d47fc8945fc8b760883ed08b814161008ebbd8d76 *0008000200000000001100000083c7083b7b5c7611c7436c02000000be74e111088b43fcffe08b *45003b45047f1fc747fc849a0d088b450489078b45008945048d77fc83c504b8849a0d08ebd7be *00d2110883c50883ef088b45008b40f0ebc49001000200120000008d45f43b435473058b43f8ff *e08d45f8c700d46d10088970048b460c3b46087411408945f48b760483ed0cb8849a0d08ebd9be *00d2110883ed08a1c46d1008ebca8d760003000100000001000d00000083c7243b7b5c760cc743 *6c090000008b43fcffe0c747e0349a0d088977e48b46048947e88b45008947ecc747f054dc0b08 *8b45008947f4c747f87cdc0b088d47f08947fc8d47e089078d77f883c5048b45008b40ecebbb90 *0400010000000000110000008b7500c74500fc9a0d08ff260000000024000000837e047c7510be *fcd1110883c5048b45008b40f0ffe0be04d2110883c5048b45008b40ecebee9090000002001800 *00008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8fd6202008d47f8894604c706245b10088d55f8c702d46d1008894204c745f410ed110883ed *0cb874e80b08ebc62ced1108809b0d080500010000000000110001008d45f43b4354730abeb0e1 *11088b43fcffe08b4500894424048b442404894424088b4424088945fcc74500709d0d0883ed04 *b840790e08ebd78d7600000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b *460448c747fc54dc0b0889078d77fc83c5048b4500ebe6000000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe08b460440c747fc54dc0b0889078d77fc83c5048b4500ebe6220000 *00240000008b450489442408d9eed9442408d9c9dae9dfe0f6c44574118b7508c745080c9c0d08 *83c5088b06ffe08b7508c74508d89b0d08ebed8d760022000000240000008b560489d0c1e81f8d *041083e0fe39c2750783c50c8b06ffe0b8409c0d08ebf722000000240000008b450089442404d9 *05584c1108d86c2404d95c2408d9442408d9eedde1dfe0f6c4457428dae9dfe09e0f94c20f9bc0 *84d0750a83c504b8409c0d08ffe08b750cc74504809c0d0883c504eb0addd8ddd88b750c83c510 *8b06ebe189f601000000240000008b46048904248b0424894424048b4424048945008b46048904 *24d90424d9eed9c9dae9dfe09e73278b45008904248b04243500000080894424088b4424088904 *248b04248945f883ed08e94dffffff8b4500894424048b442404ebe20000000024000000897504 *8b7500c745000c9d0d08ff26906f70656e46696c65008d760000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8956002008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0809d0d0883ed10 *b84cce0b08ebbf900400010000000000110000008b7500c74500109e0d08ff2600000000240000 *00837e04ff7510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0ebee *90900400010000000000110000008b7500c74500589e0d08ff260000000024000000837e04ff75 *10be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0ebee90903c737464 *6572723e008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e8955f02008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f400d21108c745f0809e0d0883ed10b84cce0b08ebbf903c7374646f75743e00 *8d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8255f02008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f0f09e0d0883ed10b84cce0b08ebbf90666c757368577269746542756666 *6572008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8ad5e02008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0609f0d0883ed10b84cce0b08ebbf90b4ed1108e4e71108d89f0d *0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e83d5e02008d47f8894604c706245b10088d55f8c702d46d1008894204beb4 *ed1108c745f488a00d0883ed0c8b06ebc489f6210000002400000083c7083b7b5c760cc7436c02 *0000008b43f8ffe08b45040b4604c747fc84ed0b0889078d77fc83c508b8d46d1008ebe2dc9f0d *0800000000240001008b4604894500bee4e71108c745fc4ca00d0883ed04ff269000e21108c4e7 *1108a0a00d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8755d02008d47f8894604c706245b10088d55f8c702d46d1008 *894204be00e21108c745f450a10d0883ed0c8b06ebc489f6210000002400000083c7083b7b5c76 *0cc7436c020000008b43f8ffe08b45040b4604c747fc84ed0b0889078d77fc83c508b8d46d1008 *ebe2a4a00d0800000000240001008b4604894500bec4e71108c745fc14a10d0883ed04ff2690b4 *ed1108d4e7110868a10d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8ad5c02008d47f8894604c706245b10088d55f8c7 *02d46d1008894204beb4ed1108c745f418a20d0883ed0c8b06ebc489f6210000002400000083c7 *083b7b5c760cc7436c020000008b43f8ffe08b45040b4604c747fc84ed0b0889078d77fc83c508 *b8d46d1008ebe26ca10d0800000000240001008b4604894500bed4e71108c745fcdca10d0883ed *04ff2690a4ed1108f4e7110830a20d0800000200180003008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8e55b02008d47f8894604c706245b10 *088d55f8c702d46d1008894204bea4ed1108c745f4e0a20d0883ed0c8b06ebc489f62100000024 *00000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040b4604c747fc84ed0b0889078d *77fc83c508b8d46d1008ebe234a20d0800000000240001008b4604894500bef4e71108c745fca4 *a20d0883ed04ff269019000600000000001100000083c7243b7b5c7611c7436c09000000be50e2 *11088b43fcffe0c747e080a30d088b45048947e4c747ec14a50d088b45048947f08b45108947f4 *8b45148947f88b450c8947fc8b450889078d47e08945148d47ec8945108b450089450cc74508c8 *e11108be9ce0110883c504b87c1d1008eba589f601000100130000008d45f03b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f4bed4ec110883ed10b808121008ebdd89f60000 *00002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84 *ed0b0889378d77fc83c5048b4500ebea8d7600c4010000240000008b4508894424188b450483c0 *088b4d0c8b5604c74510b8a30d0883c5108954240801c8894424048b442418890424e835f0f6ff *89c6ff650044010000240000008b550c8b460489450c89d6c74500f4a30d08ff26030002000300 *01000b0000008d45f03b435473058b43fcffe08b460c8945f48b46108945f88b46088945fc8b76 *04c745f034a40d0883ed108b06ebdb8b7504c7450400000000e9956b0200908b7504c745040100 *0000e9856b02009094a40d0884a40d08000000000100000025000000040000002400000083c714 *3b7b5c760cc7436c050000008b43f8ffe0c747f054a40d088b45108947f48b450c8947f88b4508 *8947fc8b460489078d47f08945108b7504c7450cb8a40d0883c50c8b06ebc98d76000500000012 *0000008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e88b46108945 *ec8b460c8945f08b46088945f48b7604c745e4c0a40d0883ed1c8b06ebc9909024d9110858a50d *080400020000000000110001008d45dc3b4354730abe54e211088b43fcffe08b45008945f8c745 *fceca60d0883ed08b804c40c08ebe78d76008b55188b4514894204be0cd2110883c520ff650001 *000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483 *ed0cb8b4c30c08ebe28d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46048945f483ed0cb808c30c08ebe28d760042000000240000008b4504897004 *be0cd2110883c50cff65008d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ecb4a5 *0d088b451c8947f0c747f8e8a50d088b451c8947fc8b550c8b450489450c8955048b4510894500 *c7451018da11088d47ec8945fc8d47f88945f8c745141ca60d0883ed08b83c980c08ebae30a60d *0898a50d0858a50d08e70000002500010058a50d0802000000240001008b46148945f08b461089 *45f48b460c8945f88b46048945fc8975008b7608c745eca8a60d0883ed14ff2689f658a50d0801 *000000240001008b46048b500489450089d6c745fcb4a60d0883ed04ff269094ed110824d91108 *04a70d081800060000000000110003008d45f83b4354730abe5ce211088b43fcffe0bebce31108 *c745fc00aa0d0883ed04b89c431008ebe8040100002400000083c7243b7b5c760cc7436c090000 *008b43f8ffe0c747e02cc50c088b450c8947e4c747e8fcd11108c747ecfcd111088b45088947f0 *8b46048947f48b45048947f8c747fce0d011088b451089078d77e083c514b8d46d1008ebb889f6 *04000000240000008b55108b460489451089d6c745004ca70d08ff2605000000120000008d45e4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e88b46108945ec8b460c8945 *f08b46088945f48b7604c745e4b0a70d0883ed1c8b06ebc989f604a70d0801000100130001008d *45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb86c860e08eb *e28d7600eb6e89f60000000024000000be0cd2110883c504ff65009002000000240000008b4504 *8943048b7508c7450854a80d0883c508e9fcab020008a70d0802000000240001008975fcc74500 *68a80d0883ed04e9cefcffff89f648a80d080000000008a70d0800000100020000000e0001008d *45f03b435473058b43fcffe08b46048945fc8b46088945f88b7604c745f48ca80d0883ed0cb82c *531008ebde8d7600c40000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8 *b03d1008ffe0c747f830f80d088b45048947fc8b451089078d77f883c5148b4500ebe189f604a7 *0d08c40000002400030083c7183b7b5c760ec7436c06000000b894361008ffe0c747ec1ca80d08 *8b45048947f0c747f8b8a80d088b45108947fc8d47ec89078d47f8894308c743040cd211088b75 *10c74500f0a80d08b8c0441008ebc19004a70d08060000002400030083c7183b7b5c7615c7436c *06000000c74320fe000000b8b03d1008ffe0c747eccca70d088b45088947f08b45148947f48b45 *108947f88b45188947fc8b450489078975188d47ec894304c7450838a90d0883c508b87c541008 *ebc09004a70d080500000024000300897500c745fc98a90d0883ed04e9cea80200909064e21108 *3caa0d080000000014aa0d08000001000000000011000100be64e21108e9868b020089f6e9efff *ffff909090eced11086caa0d080000000044aa0d08000001000000000011000100beeced1108e9 *568b020089f6e9efffffff90909080e211089caa0d080000000074aa0d08000001000000000011 *000100be80e21108e9268b020089f6e9efffffff9090901600030000000000110000008d45f43b *4354730abe94e211088b43fcffe08b7500c745002cab0d088b06ebf0000000002400000083c718 *3b7b5c7615c7436c06000000c74320fe000004b8b03d1008ffe0c747ecece80b088977f08b4500 *8947f48b45048947f88b45088947fc8b450c89078d77ec83c5148b4500ebd28d76000200000024 *0000008b45048945008b45088945048b46148945fc8b46108945f88b46088945f4c74508d8aa0d *0883ed0ce9d3d4000090909017000500000000001100000083c7143b7b5c7611c7436c05000000 *be98e211088b43fcffe0c747f088ad0d088b45088947f48b450c8947f88b45008947fc8b450489 *078d77f083c510b8fc301008ebd3e9d70100008d760003000000120000008d45ec3b435473058b *43f8ffe08d45f8c700d46d10088970048b460c8945f48b46088945f08b46048945ec83ed14b8b0 *aa0d08ebd68d760083000000240000008b06668378fe09754683c7183b7b5c760cc7436c060000 *008b43f8ffe0c747ecbcab0d088b46048947f08b45088947f48b45048947f8c747fc9ce90b088d *47ec89078d77fc83c510b8c0351008ebcc89750c83c50cb874e80b08ebbf03000000240000008b *750cc74500fcab0d08ff2604000200040000000b0000008d45f43b435473058b43fcffe08b460c *8945fc8b46108945f88b46088943048b7604c745f460ac0d0883ed0cb87c541008ebd890420000 *00240000008b750483c50cff65008d7600c40000002400000089750c8b45108943048b7504c745 *08b4ac0d0883c508e999a7020090040000002400000083c7203b7b5c7615c7436c08000000c743 *20fe000000b8b03d1008ffe0c747e478ac0d088b45048947e88977ec8b450c8947f08b45088947 *f4c747f88c6b10088b45108947fc89378975108d47e48943048d77f8c74500c8ac0d08b8703310 *08ebb989f603000000240000008b46048945008b7604c745fcecac0d0883ed04e9bca50200acab *0d08000000000000000000000100040000000b0000008d45ec3b435473058b43fcffe08b461089 *45f48b460c8945f88b46088945fc8b7604c745f058ad0d0883ed108b06ebdb14ee1108b8ad0d08 *1600040000000000110001008d45fc3b4354730abe9ce211088b43fcffe08b7504c745fc74ae0d *0883ed048b06ebed9083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b4608 *89078d47fc8945088b4504894500897504b8f0860e08ebdc89f683c7083b7b5c760cc7436c0200 *00008b43f8ffe0c747fcd8e90b088b460889078d47fc8945088b4504894500897504b8f0860e08 *ebdc89f628ae0d08f0ad0d08b8ad0d08430000002500010017000500000000001100000083c714 *3b7b5c7611c7436c05000000bea4e211088b43fcffe0c747f0b4b00d088b45088947f48b450c89 *47f88b45008947fc8b450489078d77f083c510b8fc301008ebd3e9eb0100008d76000300000012 *0000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f48b46088945 *f08b46048945ec83ed14b8b0aa0d08ebd68d760083000000240000008b06668378fe09754683c7 *183b7b5c760cc7436c060000008b43f8ffe0c747ecd4ae0d088b46048947f08b45088947f48b45 *048947f8c747fc9ce90b088d47ec89078d77fc83c510b8c0351008ebcc89750c83c50cb874e80b *08ebbf03000000240000008b750cc7450014af0d08ff2604000200040000000b0000008d45f43b *435473058b43fcffe08b460c8945fc8b46108945f88b46088943048b7604c745f478af0d0883ed *0cb87c541008ebd89001000000240000008b750483c508ff65008d7600c4010000240000008b46 *088945108b46048943048b7504c7450cccaf0d0883c50ce97ea4020089f6c401000024000000c7 *4500e0af0d08ff268d7600040000002400000083c7203b7b5c7615c7436c08000000c74320fe00 *0000b8b03d1008ffe0c747e490af0d088b45048947e88977ec8b450c8947f08b45088947f4c747 *f88c6b10088b45108947fc89378d47e48943048d77f8c7450008b00d08b870331008ebbc900300 *0000240000008b46048945008b7604c745fc1cb00d0883ed04e990a20200c4ae0d080000000000 *00000000000100040000000b0000008d45ec3b435473058b43fcffe08b46108945f48b460c8945 *f88b46088945fc8b7604c745f084b00d0883ed108b06ebdb00000200180000008d45f43b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e83d4d02008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f44cb10d0883ed0cbe002000008b4500 *ebc390000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ff *e0c747fc54dc0b0889378d77fc83c504b8d46d1008ebe890a8e2110880b10d080b000300000000 *00110001008d45f83b4354730abeb8e211088b43fcffe0bea8e21108c745fcfcb20d0883ed048b *06ebeb8d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700d46d1008897004 *837e0400750ebe88ed110889c5b8c0f70d08ebdebec8e3110883ed08a1c06d1008ebcf01000000 *2400000083c7203b7b5c7615c7436c08000000c74320ff000000b8b03d1008ffe0c747e4c4b10d *088977e8c747f0d4f10c088b45048947f4c747f8e4bb0b088d47f08947fc8d47e489078d77f883 *c5088b4500ebca8d760001000000240000008b46048945fcc7450008b20d0883ed04e9a77d0000 *8d760042000000240000008975088b7504c7450464b20d0883c504ff2689f62300000024000000 *83c7183b7b5c7615c7436c06000000c74320fe000000b8b03d1008ffe0c747ec14c50c088977f0 *8b450c8947f4c747f800000000c747fc000000008b450489078d77ecc7450484b20d0883c504b8 *9c431008ebc702000000240000008b46048945008b7604c745fca0b20d0883ed04e96c8f020004 *d911082cee110814b30d080400020000000000110003008d45ec3b4354730abec0e211088b43fc *ffe08b45008945f8c745fca0b60d0883ed08b808c30c08ebe78d7600000000002400000083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fc84ed0b088b460489078d77fc83c504b8d46d10 *08ebe58d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004 *8b7604c745f460b30d0883ed0c8b06ebe189f6000000002400000083c7243b7b5c760cc7436c09 *0000008b43f8ffe0c747e02cc50c08c747e4c0e311088b46088947e88b460c8947ec8b46108947 *f08b46148947f48b46188947f88b461c8947fcc707ffffffff8d77e083c504b8d46d1008ebb98d *760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c7 *45f4ccb30d0883ed0c8b06ebe189f6010000002400000083c70c3b7b5c7615c7436c03000000c7 *4320ff000000b8b03d1008ffe0c747f830b40d088b45048947fc8d77f883c5088b4500ebe68d76 *0001000000240000008b4604c7450064b40d08890424e8f7f9010089c6ff650090020000002400 *00008b4604c74004bce311088b7504c74504a4b40d0883c504ff268d760002000000240000008b *45088945fcc74500c4b40d0883ed04e94b4100008d7600eb5689f6000000002400000083c7083b *7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5 *048b4500ebea8d760000b50d08000000000000000000000100000001000d0000008d45f83b4354 *73058b43fcffe08b46048945f8c745fc0cb50d0883ed08b80c250d08ebe7000000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fc58b50d088b460489078d77fc83c504b8d4 *6d1008ebe58d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d100889 *70048b7604c745f484b50d0883ed0c8b06ebe189f60200000024000000e9f3feffff8d760014b3 *0d08020000002400030083c70c3b7b5c760cc7436c030000008b43f8ffe08b460483f801740e83 *f8017f0485c0eb0383f802750a83ef0cb8e8b40d08ebdec747f8bcb50d088b45048947fc8d47f8 *8945fcc745f804d91108be2cee1108c74500f0b50d0883ed0cb84c181008ebae8b7504c7450404 *b60d0883c504ff269083c504e968feffff78b60d0868b60d0814b30d08030000002500030014b3 *0d08010000002400030083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f898b30d088977 *fc8d47f88945008b45048945f48975fcc745f894b60d0883ed0cb8ccf60d08ebd490901cee1108 *78ed110854ee110870b70d0886030000e0b60d080000070000000000110007008d45f43b435472 *0883c7183b7b5c7611c7436c06000000bec8e211088b43fcffe08b45083b450c74118b7500c745 *004cb90d0883ef188b06ebe5c747ec14c50c088b45048947f08b45148947f48b45088947f88b45 *0c8947fc8b451089078d77ec83c5188b4500ebb68d7600e98fffffff8d7600eb7a89f600000000 *24000000c744240400000000c704240000000083c70c3b7b5c7615c7436c03000000c74320ff00 *0200b8b03d1008ffe0c747f89ced0b088d57fc8b4d00890c248b450489442404890a8b4c240489 *4a048d77f883c50c8b4500ebd39078b70d08000000000000000000000100000004000b000000c7 *44240400000000c70424000000008d45ec3b435473058b43fcffe08b46108945f88d55f08d4608 *8b08890c248b400489442404890a8b4c2404894a048b46048945ecc745fc84b70d0883ed14b8b8 *2f0e08ebc6c50100002400000083c7183b7b5c7615c7436c06000000c74320fe000000b8b03d10 *08ffe0c747ec14c50c088b45048947f08b45148947f4c747f800000000c747fc000000008b4510 *89078d77ec83c5188b4500ebcd89f6e4b60d08e80e000024000300c744240400000000c7042400 *00000083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0f4b70d088b45188947f48d57f8 *8d45048b08890c248b400489442404890a8b4c2404894a048b460489078d47f0894508c7450478 *ed1108c7450064ee1108c7450c50b80d08b808880d08ebaf89f6e0b60d08c501000024000700be *1cee1108c745fcacb80d0883ed04ff268d7600e0b60d08c5010000240007008b55082b550c8b46 *0489450cc745002cb90d08891424e8a2fa01008d4df8890189510489cdff6508a8e2110844ee11 *080ce811082ce8110864e5110834e811083cee11086cee110878ee110874b90d08190007000000 *00001100ff018d45f43b4354730abed0e211088b43fcffe08b45008945f8c745f464e51108c745 *fc64c20d0883ed0cb8402b0e08ebe0be38ed110883c504e9ff01feff8d7600be48ed110883c504 *e9ef01feff8d7600be68ed110883c504e9df01feff8d7600be58ed110883c504e9cf01feff8d76 *0008ba0d08f8b90d08e8b90d08d8b90d0800000000000000002500000001000100130000008d45 *f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f434ba0d0883ed0c8b06eb *e189f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f80c5f10088b45108947fc8b4514 *8945188d47f88945148b450c894510c7450cfcd111088b450489450883c508b8108e0e08ebc889 *f678b90d08460400002400010083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d10 *08ffe0c747f80c5f10088b45108947fc8b45148945188d47f88945148b450c894510c7450cfcd1 *11088b450489450883c508b8108e0e08ebc890c745fc34e811088b450c8945f8c74500c0ba0d08 *83ed08e9b406feff14bb0d0868ba0d0878b90d08460400002500110078b90d0846000000240011 *008b7518c7450044bb0d08ff26000000002400000083c7083b7b5c7615c7436c02000000c74320 *ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d76000300020000 *0001000d0000008b56048b4500c7450064bb0d08c74424080100000089442404891424e8d7ef01 *0089c6ff650089f68b7504c7450400000000e94d540200908b7504c7450401000000e93d540200 *90dcbb0d08ccbb0d08000000000100000025000000210000002400000083c7083b7b5c760cc743 *6c020000008b43f8ffe0c747fca4bb0d088b450489078d47fc8945048b7608c7450000bc0d088b *06ebde01000000240000008b55048b460489450489d6c7450008bc0d08ff260200000015000000 *8d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f044bc *0d0883ed108b06ebdbbe78ee110883c520e9237902008d7600840000002400000083c7243b7b5c *760cc7436c090000008b43f8ffe0c747e02cc50c08c747e420da11088b45108947e8c747ec04d2 *11088b45088947f08b46048947f48b45048947f8c747fce0d011088b450c89078d77e083c514b8 *d46d1008ebb889f604000000240000008b550c8b460489450c89d6c74500a8bc0d08ff26050000 *00120000008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e88b4610 *8945ec8b460c8945f08b46088945f48b7604c745e40cbd0d0883ed1c8b06ebc989f68500000024 *00000083c7343b7b5c760cc7436c0d0000008b43f8ffe0c747d0d8e90b088b45108947d4c747d8 *94b90b088d47d08947dcc747e02cc50c08c747e4c4e311088b45148947e8c747ec04d211088b45 *088947f08b46048947f48b45048947f88d47d88947fc8b450c89078d77e083c518b8d46d1008eb *9f9005000000240000008b550c8b460489450c89d6c7450074bd0d08ff2606000000120000008d *45e03b435473058b43f8ffe08d45f8c700d46d10088970048b46188945e48b46148945e88b4610 *8945ec8b460c8945f08b46088945f48b7604c745e0f0bd0d0883ed208b06ebc3eb1a89f654be0d *08000000008cb90d0800000100020000000e0001008d45f83b435473058b43fcffe08b46088945 *fc8b46048945f883ed08b8cc8b0e08ebe890440000002400000083c7103b7b5c7615c7436c0400 *0000c74320fe000000b8b03d1008ffe0c747f450f80d088b45048947f88b450c8947fc8b451089 *078d77f483c5148b4500ebdb8cb90d08440000002400010083c70c3b7b5c760ec7436c03000000 *b894361008ffe0c747f870be0d088b45048947fc8b451089078d47f8894308c743040cd211088b *7510c745009cbe0d08b8c0441008ebce89f68cb90d08070000002400010083c71c3b7b5c7615c7 *436c07000000c74320fe000000b8b03d1008ffe0c747e80cbe0d088b45088947ec8b45188947f0 *8b451c8947f48b45148947f88b450c8947fc8b450489078975188d47e8894304c7450ce8be0d08 *83c50cb87c541008ebba8d76008cb90d080600000024000100897500c745fc3cbf0d0883ed04e9 *2293020089f68cb90d0846010000240001008b46048945108b4608894508bebce31108c74500ac *bf0d08e9b38302008d76008cb90d084601000024000100c74500ccbf0d08ff268d760074b90d08 *4601000024004100c745fc14da11088b45048945f8c74500f8bf0d0883ed08e968f1ffff74b90d *08060000002400410083c7183b7b5c7615c7436c06000000c74320fe000000b8b03d1008ffe0c7 *47ec28bd0d088b45048947f08b45148947f48b45188947f88b45108947fc8b450889078975188d *47ec894304c7450010c00d08b87c541008ebc374b90d084600000024004100897508c7450038c0 *0d08e9359202009074b90d0846050000240041008b46048945188b4608894510bebce31108c745 *009cc00d08e9c78202008d760074b90d084605000024004100c74500b8c00d08ff268d7600c745 *fc18da11088b45048945f8c74500e4c00d0883ed08e988f0ffff8b45148945188975148b450c89 *4510c7450c04d211088b450489450883c508e9e0cc0000f0c00d080cc10d080cc10d080cc10d08 *0cc10d080cc10d0874b90d08460500002500430074b90d0846050000240043008b7604c7450054 *c10d08ff268b7514c7450460c10d0883c504ff269078b90d084600000024001100e9c3f9ffff8d *760078b90d084600000024005100837e04ff7513be6cee1108c7450088c10d08b8c0351008ffe0 *b850bb0d08ebf778b90d084600000024005100c745009cc10d08ff268d76008b7504c74504c8c1 *0d08e93947020090d4c10d086cc10d0890bc0d0874b90d08870000002500e30174b90d08870000 *002400e301c74500fcc10d08ff268d760074b90d08870000002400e301ebe689f68b45088945fc *c7450020c20d0883ed04e9176e00008d76008b7604ebc78d76003cc20d0824c20d0874b90d0887 *0000002500eb0174b90d08060000002400eb0183c7183b7b5c7615c7436c06000000c74320fe00 *0000b8b03d1008ffe0c747ec3cba0d088b45108947f08d47ec894510c747f860bc0d088b450489 *47fc8d47ec89078d47f88945008b7508c745fc58c20d0883ed048b06ebc290909024d9110800c3 *0d08c6000000c0c20d080000070000000000110001008d45d83b4354730abed8e211088b43fcff *e08b7514c745fc8cc90d0883ed048b06ebed90e9d7ffffff8d760083c7183b7b5c760cc7436c06 *0000008b43f8ffe0c747ec14c50c088b453c8947f08b45108947f48b45048947f88b45088947fc *8b450c89078d77ec83c5408b4500ebcf9083c7243b7b5c760cc7436c090000008b43f8ffe08b45 *0c3b45187430c747e014c50c088b453c8947e48b45108947e88b45048947ec8b45088947f08b45 *0c8947f48d77e083c54083ef0ceb498b45248b5004c747e010f80d088b453c8947e48957e88b55 *248d47e0894204c747ec14c50c088b453c8947f08b45108947f48b45048947f88b45088947fc8b *450c89078d77ec83c5408b4500e975ffffff8d76004cc30d0808c30d0800000000efde07002500 *0000ea5e0000240000008975388b7534c745fc00c40d0883ed04ff2689f601000100130000008d *45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb848ca0b08eb *e28d7600e9d70100008d760000000200170000008d45f83b435473058b43f8ffe08d45f8c700d4 *6d10088970048b46083b46040f94c00fb6c08944240883ed088b34852cdc0b088b442408c1e002 *f7d88b80c46d1008ebc7620000002400000083c7183b7b5c7615c7436c06000000c74320fe0000 *00b8b03d1008ffe0c747ec14c50c088977f0c747f418da1108c747f800000000c747fc00000000 *8b450489078d77ec83c50c8b4500ebcf8b751cc74518acc40d0883c518e9767d020089f68b7504 *83c524ff65008d76000cc50d08f8c40d0800000000c81f0000250000004cfd0000240000008b55 *308b45048942048b750cc745102cc50d0883c510ff26c0c20d080cb9000024000100c745fc18da *11088b45208945f88b45248945f4c745f0000000008b45288945ec8b45088945e88b45188945e4 *c7450034c50d0883ed1ce9a9d2feff90ebc289f6ebbe89f68b45243b45207507b858c50d08ffe0 *8b55308b451c8942048b750483c5348b4500ebea909cc50d0898c50d08c0c20d080cb100002500 *01008b750cc74500d4c50d08ff26d4c50d0894c50d08c0c20d080cb1000025000100c0c20d080b *580000240001008975008b750cc745fcf4c50d0883ed04ff2689f650c40d0800000000c0c20d08 *00000200090005000b0001008d45b03b4354720883c70c3b7b5c760cc7436c030000008b43fcff *e0c747f860c40d088b46288947fc8b463089078b46248945cc8b46288945c88b46388945c48b46 *348945c08b46208945bc8b461c8945b88b46108945b48b461c8945d48d47f88945d88b46188945 *dc8b46148945e08b46108945e48b460c8945e88b46308945ec8b462c8945f08b46088945f48b46 *288945f88b46048945fcc745d000c60d0883ed4cb83c980c08e96cffffff89f6cb190000240000 *0083c7183b7b5c7615c7436c06000000c74320ff000000b8b03d1008ffe08b550c035520c747ec *14c50c088b45248947f08b45048947f48b45108947f88957fc8b450889078b552c8d47ec894204 *8b451c8945fcc745f800000000c745f400000000c7450018da11088b751883ed0cb808c40d08eb *a68d7600ea5e0000240000008b46148945f88b46108945f48b460c8945f08b46088945fc8b7604 *83ed10e981fcffff90ea5e000024000000c7450064c70d08ff268d76008b450c2b45103b45247f *148b7504c7450890c70d0883c508b82cc60d08ffe08b4d248b452883c0088b5510895424188b55 *1c83c208c74504e4c60d0883c504894c24088954240403442418890424e8adcff6ff89c68b4500 *ebc389f6ea5e0000240000008b46148945f88b46108945f48b460c8945f08b46088945fc8b7604 *83ed10e9e5fbffff90ea5e000024000000c7450000c80d08ff268d76008b7504c745082cc80d08 *83c508e9e2fdffff89f638c80d089cc70d08000000008c33000025000000c0c20d084906000024 *00010083ef803b7b5c760cc7436c200000008b43f8ffe08b4614894500c7478414c50c088b4510 *894788c7478c18da1108c74790000000008b45188947948b4514894798c7479c54dc0b088b4508 *8947a0c747a414c50c088b45108947a8c747ac18da1108c747b000000000c747b4000000008b45 *148947b8c747bc24c40d088b451c8947c0c747c82cc60d088b45248947cc8b45108947d08d4784 *8947d48d479c8947d88d47a48947dc8d47bc8947e08b45048947e48b46048947e88b46088947ec *8b46148947f08b45188947f48b45148947f88b460c8947fc8b461089078d47c88945f88b460889 *45fc8b46108945048b460c8945088b551c8b460489451c89d6c745f460c80d0883ed0c8b06e901 *ffffff8d7600c0c20d08c6040000240001008b46148b50048b460c8945f88b46208945fc8b4618 *8945008b461489451889d6c745f46cc80d0883ed0cff2668507574427566000000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *613402008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0b8 *c90d0883ed10b84cce0b08ebbf9054d21108b0ee110824ca0d0800000200180003008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8f13302008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f4b0ee1108be54d2110883ed10b8 *08121008ebc1909090636f6d6d6974416e6452656c656173654275666665720090000002001800 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8753302008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745 *f094ca0d0883ed10b84cce0b08ebbf906850757443686172008d760000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8053302 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f010cb0d08 *83ed10b84cce0b08ebbf9068476574436f6e74656e7473008d760000000200180000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e891320200 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f080cb0d0883 *ed10b84cce0b08ebbf90684765744275660000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8253202008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0f4cb0d0883ed10b84cce0b08ebbf *90696c6c6567616c206275666665722073697a6520008d760000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a93102008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f060cc0d0883ed10 *b84cce0b08ebbf9024d9110884ee110850e3110828cd0d0826020000dccc0d0800000700000000 *00110007008d45d83b4354730abe50e311088b43fcffe08b45048b7004c745fcf4d30d0883ed04 *8b06ebea89f6e9d3ffffff8d7600470e00002400000083c7203b7b5c7615c7436c08000000c743 *20ff000000b8b03d1008ffe08b5514035518c747e414c50c088b45108947e88b45048947ec8b45 *088947f08957f48b451c8947f88b550c8d47e4894204c747fc54dc0b088b451889078d77fc83c5 *208b4500ebb68d7600470e0000240000008b4d188b451083c0088b5604c7450038cd0d08894c24 *0889542404034514890424e8cec9f6ff89c6ff650090e9eb0100008d7600e0cc0d08c300000024 *00010083fe0b750b8b750483c5108b4500ffe0c7450c84ee110883c50cb8d8810c08ebed8d7600 *e0cc0d08c30000002400010083fe0b750b8b750483c5108b4500ffe0c7450c84ee110883c50cb8 *d8810c08ebed8d7600e0cc0d08840100002400010083feff7511c7450418ce0d0883c504b82c86 *0d08ffe083c7083b7b5c760ec7436c02000000b8f0371008ebe88b450c29f089f2035510c747fc *54dc0b088917c745101c09100889450c8d47fc8945088b750483c508b80cd00d08ebb8e0cc0d08 *84010000240001008b4500894304c7450448ce0d0883c504e91f8202008d7600e0cc0d08840100 *002400010083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe085f67911c7 *4500b0ce0d0883ef08b8e4451008ebe989f283feff7514c74504e8cd0d0883c50483ef08b82c86 *0d08ebce8b450c29f0035510c747fc54dc0b088917c745101c09100889450c8d47fc8945088b75 *0483c508b80cd00d08eba090e0cc0d08c4010000240001008b550c8b45080346048955fc8945f8 *8b45108945f48975088b4604894510c74500d4ce0d0883ed0ce9b35f00008d7600e0cc0d088401 *0000240001008b55088b460489450889d6c745005ccf0d08ff26d4cd0d0800000000e0cc0d0800 *000100030002000b0001008d45e03b435473058b43fcffe08b460c8945f08b46088945f48b4614 *8945f88b46108945fc8b7604c745ec98cf0d0883ed148b06ebd589f6e0cc0d080a000200010001 *000f00010083c7183b7b5c760cc7436c060000008b43fcffe0837d04007e2cc747ecc4cf0d088b *46048947f08b45008947f48977f88b46088947fc8b450489078d77ec83c5088b4500ebcc8b4500 *894504bef0d9110883ef18b808121008ebb79083c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f80cd00d088b45188947fc8b450c8907c745201c091008c7451894ee11088d77f883c518b8 *0cd00d08ebd18d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46048945f483ed0cb8ec060e08ebe28d7600e0cc0d0804000100120001008d45e03b43 *54720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc84 *ed0b088b461489078d47fc8945f48b46108945f08b460c8945ec8b46088945e88b46048945e4c7 *45e084ee110883ed20b8e8830e08ebb790e9f30000008d7600210000002400000083c7083b7b5c *760cc7436c020000008b43f8ffe08b4604034504c747fc54dc0b0889078d77fc83c508b8d46d10 *08ebe201000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b4608 *8945f48b7604c745f060d10d0883ed108b06ebdb830000002400000083c70c3b7b5c760cc7436c *030000008b43f8ffe08b550c2b5604c747f898d10d088b45088947fc8b46048907c7450c1c0910 *088955088b75048d47f889450483c504b88cd20d08ebc98d76008300000024000000c74500d0d1 *0d08ff268d760050d10d08000000000000000000000100030001000b0000008d45ec3b43547305 *8b43fcffe08b460c8945f48b46048945f88b46108945fc8b7608c745f024d20d0883ed14b81c09 *1008ebd890e0cc0d080a000200030000000b00010083c72c3b7b5c760cc7436c0b0000008b43fc *ffe0837d04007e48c747d8ecd00d088b46048947dc8b46088947e08b460c8947e48b45008947e8 *8b45048947ecc747f048d20d088b45008947f48d47d88947f88977fc8b450489078d77f083c508 *eb0bbeacee110883c50883ef2c8b4500eba089f6620000002400000083c7083b7b5c7615c7436c *02000000c74320fe000000b8b03d1008ffe0c747fc54dc0b088b450489078d77fc83c50c8b4500 *ebe783c71c3b7b5c760cc7436c070000008b43f8ffe0c747e8b4d00d088b45188947ecc747f48c *d20d088b45048947f88b45148947fc8d47e88907c745141c0910088b451c894510c7450c94ee11 *088d77f4c7451808d30d0883c50cb88cd20d08ebb18d76003cd30d0868d00d08e0cc0d08c81900 *0025000100e0cc0d08c8080000240003008b45108970048b451c3b45087c0e8b7520c74500b4d3 *0d088b06ffe083c50cb800cd0d08ebf489f6dccc0d08260200002400070083c7083b7b5c760cc7 *436c020000008b43f8ffe08b46142b46103b45147f50c747fc54dc0b088b450489078b46088945 *f48b46148945f08b46108945ec8b460c8945e88b46048945e48b450c8945e08d47fc8945dc8945 *fc8b4614894500c745f8c0d30d0883ed24b83c980c08eba38b46088945008b460c8945048b4604 *89450c8b46148945188b55108b461089451089d6c745fca8cd0d0883ed0483ef088b06e96cffff *ff909040e311089cd40d0816000400000000001100010083c7343b7b5c7611c7436c0d000000be *58e311088b43fcffe0c747d088d50d088b45088947d4c747dc94b90b088b45008947e0c747e4ec *e80b088d47dc8947e8c747ecf0e311088b45048947f08d47d08947f4c747f8e0d01108c747fc9c *e90b088d47e489078d77fc83c50cb8c0351008eba4900000000024000000c7450000d211088b46 *048945fcc745f80900000083ed08e98820ffff01000100130000008d45ec3b435473058b43f8ff *e08d45f8c700d46d10088970048b7604c745f42cd50d0883ed0c8b06ebe189f69cd40d08010001 *00130001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d4 *6d1008897004c747f850d50d088b46048947fc8d47f88945f4c745f040e3110883ed10b82cda0b *08ebce24d91108d4d50d081600040000000000110001008d45dc3b4354730abe60e311088b43fc *ffe08b45008945f8c745fcb4d80d0883ed08b804c40c08ebe78d760001000100130000008d45f4 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8b4c30c08ebe28d *760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460489 *45f483ed0cb808c30c08ebe28d7600c4010000240000008b4504897004be0cd2110883c514ff65 *008d7600d4d50d08c93200002400010083c7183b7b5c761cc7436c06000000c74500a4d60d08c7 *4320ff000000b8b03d1008ffe0c747ec1cd60d088b451c8947f0c747f850d60d088b451c8947fc *8b45108945008b45048945108b450c8945048b450889450c8b45248945088d47ec8945fc8d47f8 *8945f8c7451484d60d0883ed08b83c980c08eba98d760083c7183b7b5c760cc7436c060000008b *43f8ffe0c747ec14c50c088b45108947f08b45048947f48b450c8947f88b45248947fc8b450889 *078b55188d47ec894204be0cd2110883c5288b4500ebc489f683c7183b7b5c760cc7436c060000 *008b43f8ffe0837d140a750a83ef18b8a4d60d08ebeec747ec14c50c088b45108947f08b450489 *47f48b450c8947f88b45248947fc8b450889078b55188d47ec894204be0cd2110883c5288b4500 *ebb489f670d70d0820d70d08d4d50d08c932000025000100d4d50d0825020000240001008b5514 *428955148b46048945008b460c8945fc8b46148945f88b46088945f43b56147c0a83ed10b8a4d6 *0d08ffe08b7510c745f0e4d70d0883ed108b06ebed90d4d50d0806040000240001000fb64e048b *55048b4518884c10088b55088b460489450889d6c74504f0d70d0883c504ff268d7600d4d50d08 *06000000240001008b55188b460489451889d6c745003cd80d08ff26d4d50d0805000000240001 *008b45048945f8897500c745fc70d80d0883ed08e91c1d0000d4d50d0803000000240001008b46 *048b40048945f48945fc8b4604894500c745f890d80d0883ed0ce93f1c00009090904cee11089c *ee110868e3110824d90d0826060000d8d80d080000070000000000110007008d45d83b4354730a *be68e311088b43fcffe08b45048b7004c745fc74de0d0883ed048b06ebea89f6e9d3ffffff8d76 *00210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4504034604c747fc54 *dc0b0889078d77fc83c508b8d46d1008ebe201000100160000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d10088970048b46088945f48b7604c745f034d90d0883ed108b06ebdb62000000 *2400000083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f86cd90d *088977fc8b450489078d77f883c50c8b4500ebe490eb5689f6000000002400000083c7083b7b5c *7615c7436c02000000c74320fe000000b8b03d1008ffe0c747fc94b90b0889378d77fc83c5048b *4500ebea8d7600dcd90d0800000000d8d80d0800000100040003000b0001008d45e03b43547208 *83c7183b7b5c760cc7436c060000008b43fcffe0c747ec14c50c088b460c8947f08b46108947f4 *8b46148947f88b46188947fc8b461c89078b461c8945f88b46188945f48b460c8945f08d47ec89 *45ec8b46048945e8c745e404d211088b46088945e0c745fce8d90d0883ed20b878910e08eb9e83 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fc54dc0b088b451489078d77fc83c51c8b45 *00ebe7908b45088b560489500483c504e90ffeffff8d7600dcda0d08b0da0d08e0d80d08260600 *0025000100e0d80d082606000024000100c7450004db0d08ff268d7600070f00002400000083c7 *203b7b5c7615c7436c08000000c74320ff000000b8b03d1008ffe0c747e414c50c088b45088947 *e88b45048947ecc747f000000000c747f4000000008b45108947f88b550c8d47e48942048b4518 *03451cc747fc54dc0b0889078d77fc83c5208b4500ebb490070f0000240000008b4e048b450883 *c008894424188b5514c7450024db0d088b451c894424088b44241801d089442404890c24e8d8bb *f6ff89c6ff65008d7600881e00002400000083c7203b7b5c7615c7436c08000000c74320ff0000 *00b8b03d1008ffe08b5518035520c747e414c50c088b45088947e88b45048947ec8957f08b4514 *8947f48b450c8947f88b55108d47e48942048b451c034520c747fc54dc0b0889078d77fc83c524 *8b4500ebb3881e0000240000008b4e048b450883c008894424188b5518c74500d4db0d088b4520 *894424088b44241801d089442404890c24e828bbf6ff89c6ff65008d7600620000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe08b4508034504034604c747fc54dc0b0889078d77 *fc83c50cb8d46d1008ebdf9001000200120000008d45ec3b435473058b43f8ffe08d45f8c700d4 *6d10088970048b460c8945f08b46088945f48b7604c745ec84dc0d0883ed148b06ebd589f6ea7f *00002400000083c7103b7b5c7615c7436c04000000c74320fe000000b8b03d1008ffe0c747f4c0 *dc0d088977f88b45248947fc8b450489078d77f483c52c8b4500ebde8d7600dcd80d086be60000 *2400030083c7283b7b5c7615c7436c0a000000c74320ff000000b8b03d1008ffe0c747dc14c50c *088b45108947e08b450c8947e4c747e800000000c747ec000000008b45148947f08b551c8d47dc *8942048b452c89c12b4d083b4d147c4c8b4504034508c747f4e0060c088947f8c747fc54dc0b08 *8b45188907c745001c091008894dfc8d47f48945f88b45208945f48d47fc8945f0c7450400dd0d *0883ed10b8c09b0e08e975ffffff8b45280345088b5504035508c747f4e0060c088957f8894d2c *8945288d47f489452483c51883ef08b8fcd80d08e943ffffffdcd80d082a730000240003008b4d *048b46048945008b46048904248b450c83c0088b5520c745fc4cdd0d0883ed04894c240801d089 *442404e83bb9f6ff89c6ff650089f6d8d80d08260600002400070083c7283b7b5c760cc7436c0a *0000008b43f8ffe08b460c3b46100f849c0000008b46102b460c39451874603945187c2c8945f4 *8b46088945f88b46048945fc8b46148945008b55108b460c89451089d6c745f030de0d0883ed10 *eb568b46088945fc8b46048945008b46148945048b461089450c8b55108b460c89451089d6c745 *f844dc0d0883ed08eb278b46088945008b46048945048b461489450c8b55108b460c89451089d6 *c745fc94db0d0883ed0483ef288b06e956ffffff8b45183b46147f58c747dc54dc0b088b450489 *47e0c747e434da0d088b450c8947e88d47dc8947ec8b46048947f08b46088947f48b460c8947f8 *8b46108947fc8b46148907c74304ecee11088d77e4c7450010db0d08b870331008e9f6feffffc7 *47dc54dc0b088b45048947e08b45188945088b45108945048b450c894500c7450c1c0910088d47 *dc8945fcc74510a4d90d0883ed0483ef20b8c09b0e08e9b3feffff90f4df0d0800000000000000 *00000001000000000011000000be94ee1108ff6500e9f3ffffff9090901ce00d08000000000000 *0000000001000000000011000000be94ee1108ff6500e9f3ffffff90909088e3110824e00d0817 *00050000000000110001008d45f83b4354730abe78e311088b43fcffe0c745fc1c0910088b4500 *8945f8c7450014e40d0883ed08b814e10d08ebe04cee1108c0e2110854e2110878e3110868e00d *08180006000000000011000f0083c7203b7b5c7611c7436c08000000be80e311088b43fcffe0c7 *47e4e8e40d088b45048947e8c747ecf8e50d088b45108947f08b45088947f48b45048947f88b45 *008947fc8b450c89078d47e48943048d77ec83c514b870331008ebba8d7600c0e2110854e21108 *c0ee1108d0ee110878e3110880e3110888e31108e8e00d08040001000000000011007f008d45fc *3b4354720883c7483b7b5c7611c7436c12000000be88e311088b43fcffe0c747bc94b90b088b45 *008947c0c747c4ece80b088d47bc8947c8c747ccd8e31108c747d0c0ee1108c747d4d0ee1108c7 *47d8e0d01108c747dc3ce60d088b45008947e0c747e890eb0d088b45008947ec8d47c48947f08d *47dc8947f4c747f874ec0d088b45008947fc8d47e889078d47f8894500be9ce3110883ed04b808 *121008e978ffffff90000000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0c747 *ec14c50c088b46048947f08b46088947f4c747f800000000c747fc000000008b461489078d77ec *83c504b8d46d1008ebcb9001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b7604c745f4c4e10d0883ed0c8b06ebe189f60a000300010001000f00000083c714 *3b7b5c760cc7436c050000008b43fcffe08b45043b46087c388b56040fb64410088b55044ac747 *f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450089078955048d47f8894500b84ce20d *08ebbe8b750083c50883ef148b4500ebb089f6c30000002400000083c70c3b7b5c7615c7436c03 *000000c74320fe000000b8b03d1008ffe0c747f8e4bb0b088b45048947fc89378d77f883c5108b *4500ebe490040100002400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f84ce20d *088b45048947fc8b460489078b4510488945008b450c8945fc8d77f8c74504b8e20d0883ed04b8 *4ce20d08ebcb90040000002400000083c70c3b7b5c760cc7436c030000008b43f8ffe08b560485 *d2751dc747f8e4bb0b088b45088947fc8b450c89078d77f883c5148b4500ebda8b45108945fc89 *5510c74500f8e20d0883ed0483ef0cb840f50d08ebbd8d760003000000240000008b450c8945f8 *897500c745fc48e30d0883ed08e904120000030000002400000083c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f814e20d088b450c8947fc8b56048d47f88942048b450c8945fcc74500a8 *e30d0883ed04b814f50d08ebd18d760003000000240000008b450889750889c6c74500c8e30d08 *ff268d760083c504e93cb700000000000024000000897500e92cb700006ce00d08010000002400 *01008b4504894500c7450438e40d08e9ceceffff89f68b45048945fcc745004ce40d0883ed04e9 *f7c0ffff8d760060e40d0860e40d0860e40d0860e40d0860e40d0828e40d086ce00d0801000000 *250003006ce00d0801000000240003008b06668378fe0975178b45048945fcc745009ce40d0883 *ed04b88cc30c08ffe089750483c504b874e80b08ebf18d76006ce00d0804000200010000000c00 *03008d45f83b435473058b43fcffe08b55008b460489450089d6c745fca8e40d0883ed048b06eb *e589f6e9e30000008d760001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d *10088970048b46048945f483ed0cb8b4c30c08ebe28d760074e00d080401000024000100897510 *8b55088b450c8945088b450489450c89550483c504e9c3faffff8d760068e00d08040000002400 *090083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f820e50d088b450c8947fc8b461489 *45fc8b46108945f88b46048945f48975f08d47f88945ecc745e804d211088b45108945e4c74500 *58e50d0883ed1cb878910e08ebb889f610e50d080000000068e00d0800000100050000000b0009 *008d45d03b435473058b43fcffe08b46148945f08b46108945f48b460c8945f88b46088945fc8b *7604c745ec84e50d0883ed148b06ebd589f600e10d0801000100130001008d45f43b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb814e10d08ebe28d760083c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8e4bb0b088b45108947fcc70700d211088d77f883 *c5148b4500ebe089f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000 *b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760003000200010001000f *0000008b56088b460483c008c74500a4e60d08c74424080100000089442404891424e864b2f6ff *89c6ff65008d7600eb2e89f60000000024000000be0cd2110883c504ff65009010e70d08000000 *000000000000000100000001000d0000008d45fc3b435473058b43fcffe08b7604c745fc1ce70d *0883ed04b830571008ebea8d7600220000002400000083c7203b7b5c7615c7436c08000000c743 *20fe000000b8b03d1008ffe0c747e43cdc0b088b45048947e8c747ec7cdc0b088d47e48947f089 *77f4c747f8e4bb0b088b45088947fc8d47ec89078d77f883c50c8b4500ebc49000000000240000 *0083c70c3b7b5c7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f8e4bb0b088977 *fcc70700d211088d77f883c5048b4500ebe3e8e00d0801000000240001008b4504894500c74504 *cce70d08e90acbffff89f6e8e00d084603000024000300837e040075178b4518894510c7451410 *e80d0883c510b86ca50d08ffe08b45040fb640088945148b750cc745106ce70d0883c50cb81c09 *1008ebe090e8e00d084603000024000300c7450030e80d08ff268d7600e8e00d08460100002400 *07008b45148945fc8975f8c745f4c0ee1108c745f0c8e11108c7450078e80d0883ed10e946a0ff *ff89f6c745f8000000008b7510c7450090e80d08c745fc5873100883ed0ce950270200c745f801 *0000008b7510c7450090e80d08c745fc5873100883ed0ce930270200d8e80d08b8e80d08e8e00d *084600000025000700e8e00d08460300002400070083c7143b7b5c760cc7436c050000008b43f8 *ffe0c747f0e4e60d088b45048947f48b46048947f8c747fc40e70d088b460489078d47fc894514 *8b45188945fc8d47f0894510c745000ce90d0883ed04b8b4c30c08ebbc89f68b45188945fcc745 *0018e90d0883ed04e983d9feff8d760001000100130000008d45f43b435473058b43f8ffe08d45 *f8c700d46d10088970048b46048945f483ed0cb808c30c08ebe28d760083c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f890e90d088b45188947fc8b451889450c8b45088945188b451489 *45088b45108945148d47f889451083c508b888e00d08ebc98d760001000100130000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb808c30c08ebe28d76 *0083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f810ea0d088b45188947fc8b45188945 *0c8b45088945188b45148945088b45108945148d47f889451083c508b888e00d08ebc98d76003c *ea0d08bce90d0870e90d08e8e00d080600000025002700e8e00d0804000000240037008b460c3b *461075208b45108945f48b46048945fc897500c745f8a0ea0d0883ed0cb8dcc30c08ffe08b450c *8945048b450889450c8b451089450889751083c504b838e00d08ebdf90e8e00d08440000002400 *37008b46048b400489750889c6c74500acea0d08ff268b45108945fcc7450000eb0d0883ed04e9 *dbd8feff8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc9ce90b088b45088907 *8d77fc83c514b8c0351008ebe58d76002ceb0d082ceb0d082ceb0d082ceb0d0814eb0d0868e60d *08e8e00d080400000025003700e8e00d0804000200030000000b0037008d45d83b435473058b43 *fcffe08b45008945ec8b460c8945f48b46088945f88b46048945fcc745f080eb0d0883ed14b88c *c30c08ebd589f6e9a70000008d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8 *e90b088b460889078d47fc8945008975fcc745f8c0ee110883ed08b880ae0d08ebd889f683c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b460889078d47fc8945008975fcc7 *45f8c0ee110883ed08b880ae0d08ebd889f60cec0d08d0eb0d08f0e00d080100000025000100c8 *eb0d0800000000f0e00d0800000100020000000e0001008d45f03b435473058b43fcffe08b4608 *8945fc8b7604c745f85cec0d0883ed088b06ebe7f0ee1108b8ef1108c8ef110898ec0d080b0002 *0000000000110007008b7500c74500dcee0d08ff268b750483c508ff2602000000150000008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b8 *2cda0b08ebdc9083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8d0ec0d088b45048947 *fc89378d47f8894504c74500f0ee1108b82cda0b08ebdb9000ed0d08c0ec0d0898ec0d08010000 *002500010098ec0d0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46048945f48b7608c745f04ced0d0883ed108b06ebdb83c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f858ed0d088b45048947fc8b460489078d47f8894504c74500b8ef1108b8 *2cda0b08ebd889f68b750483c508ff2602000000150000008d45f03b435473058b43f8ffe08d45 *f8c700d46d10088970048b46088945f48b46048945f083ed10b82cda0b08ebdc9083c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8d4ed0d088977fc8b450489078d47f8894504c74500f0 *ee1108b82cda0b08ebdb9004ee0d08c4ed0d0898ec0d08010000002500010098ec0d0802000000 *150001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c7 *45f050ee0d0883ed108b06ebdb83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f85cee0d *088b46048947fc8b450489078d47f8894504c74500c8ef1108b82cda0b08ebd889f68cee0d0888 *ed0d0898ec0d08010000002500070004000100000000001100000083c7183b7b5c7611c7436c06 *000000be98e311088b43fcffe0c747ecece80b08c747f0e0d01108c747f4e0e31108c747f800d2 *11088b45008947fcc707e0d011088d77ec83c5048b4500ebcb04000200000000001100000083c7 *0c3b7b5c7611c7436c03000000be9ce311088b43fcffe0c747f88cef0d088b45008947fc8d77f8 *83c5048b4500ebe68d76000000000024000000e91b1802008d760001000100130000008d45f03b *435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f47cef0d0883ed10b81c091008 *ebde909090f0ee110800ef1108e0ef1108f0ef1108bcef0d08190006000000000011000f008d45 *fc3b4354720883c7143b7b5c7611c7436c05000000bea0e311088b43fcffe0c747f014f20d088b *45048947f48b450c8947f88b45148947fc8b450889078d47f08945148b7510c745fc08f50d0883 *ed048b06ebc989f68b750483c508ff2602000000150000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f87cdc0b08c747fc10ef1108 *8b460889078d47f88945f48b46048945f083ed10b82cda0b08ebc98d760083c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f844f00d088977fc8b450489078d47f8894504c7450000ef1108 *b82cda0b08ebdb9098f00d0834f00d08c0ef0d080100000025000100c0ef0d0802000000150001 *008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f0e4 *f00d0883ed108b06ebdbc0ef0d0803000000120005008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8f0f00d088b46088947fc8b460c *89078d47f88945f48b46048945f083ed10b804a80e08ebca8b750483c508ff26bcef0d08010001 *00130001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4c745f0 *f0ee110883ed10b82cda0b08ebdb83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f890f1 *0d088b45048947fc8d47f8894504897500b82cda0b08ebe18d7600c0f10d087cf10d08bcef0d08 *0100000025000100bcef0d080400000012000b008d45f03b4354720883c7103b7b5c760cc7436c *040000008b43f8ffe08d45f8c700d46d1008897004c747f42cf10d088b46048947f88b46088947 *fc8b460c89078d47f48945f48b7610c745f008f20d0883ed108b06ebc3908b750483c508ff26bc *ef0d0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b4604 *8945f4c745f0f0ee110883ed10b82cda0b08ebdbbcef0d0802000000150001008d45f03b435472 *0883c7183b7b5c760cc7436c060000008b43f8ffe08d45f8c700d46d1008897004c747ec80f20d *088b46048947f0c747f87cdc0b08c747fcd8ef11088d47ec89078d47f88945f48b46088945f083 *ed10b82cda0b08ebbc89f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8bcf20d088b *45048947fc8b460489078d47f8894504c74500e0ef1108b82cda0b08ebd889f6bcef0d08010001 *00130001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4c745f0 *f0ee110883ed10b82cda0b08ebdbbcef0d0802000000150001008d45f03b4354720883c7183b7b *5c760cc7436c060000008b43f8ffe08d45f8c700d46d1008897004c747ec64f30d088b46048947 *f0c747f87cdc0b08c747fcd8ef11088d47ec89078d47f88945f48b46088945f083ed10b82cda0b *08ebbc89f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8a0f30d088b45048947fc8b *460489078d47f8894504c74500e0ef1108b82cda0b08ebd889f600f40d081cf30d08bcef0d0801 *000000250005008b7604c7450050f40d08ff2650f40d086cf20d08bcef0d080100000025000500 *8b7504c7451470f40d0883c514ff2690bcef0d0801000100130001008d45f03b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f4c745f0f0ee110883ed10b82cda0b08ebdb83c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f88cf40d088b45188947fc8d47f88945188b46 *0489451483c514b82cda0b08ebdb90bcf40d0870f40d08bcef0d08c60300002500050004000100 *00000000110000008b7500c7450028f50d08ff2600000000240000008b760483c504ff65009090 *900400010000000000110000008d45fc3b4354730abeace311088b43fcffe08b7500c74500acf5 *0d088b06ebf0210000002400000083c7083b7b5c761cc7436c02000000c7450068f50d08c74320 *ff000000b8b03d1008ffe0c747fc54dc0b088b450489078d77fc83c5088b4500ebe79000000000 *240000008b460c89450083ed04ebb1900400010000000000110000008d45fc3b4354730abeb0e3 *11088b43fcffe08b7500c7450030f60d088b06ebf0210000002400000083c7083b7b5c761cc743 *6c02000000c74500ecf50d08c74320ff000000b8b03d1008ffe0c747fc54dc0b088b450489078d *77fc83c5088b4500ebe79000000000240000008b461089450083ed04ebb1900400010000000000 *110000008d45fc3b4354730abeb4e311088b43fcffe08b7500c74500b4f60d088b06ebf0010000 *002400000083c7083b7b5c761cc7436c02000000c7450070f60d08c74320ff000000b8b03d1008 *ffe0c747fcd4f10c088b450489078d77fc83c5088b4500ebe79000000000240000008b46188945 *0083ed04ebb1900400010000000000110000008b7500c74500e0f60d08ff260000000024000000 *8b761c83c504ff26000000000a000000ff650090000000000a000200ff650090000000000a0003 *00ff650090000000000a000500ff650090000000000a000600ff650090000000000a000700ff65 *0090000000000a000800ff650090000000000a000a00ff650090000000000a000b00ff65009000 *0000000a000c00ff650090000000000a000d00ff650090000000000a000e00ff65009000000000 *0a000f00ff650090000000000a001000ff650090000000000a001100ff650090000000000a0012 *00ff650090000000000a0001008b4500ff60ec909001000000020002008b4500ff60e889f60100 *0000090002008b4500ff60e89090000000000a0000008b4500ff60f09090000000000a0002008b *4500ff60e89090000000000a0000008b4500ff60f0909002000000040001008b4500ff60ec89f6 *02000000090001008b4500ff60ec909002000000040000008b4500ff60f089f602000000090000 *008b4500ff60f0909003000000010001008b4500ff60ec89f603000000090001008b4500ff60ec *909094e1110868f80d0808000200000000001100010083c7243b7b5c7611c7436c09000000be0c *e411088b43fcffe08b550485d27512be94e1110883c50483ef24b89c071008ebe5c747e028f90d *088b45008947e48957e8c747ec9cf90d088b45008947f08957f4c747f8e4bb0b088d47ec8947fc *8d47e089078d77f883c5088b4500eba890000000002400000083c7083b7b5c760ec7436c020000 *00b8f0371008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe800000200170000008d *45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f08b46048945ecc745f4 *f4f80d0883ed14b88c910d08ebd589f6000000002400000083c7083b7b5c760ec7436c02000000 *b8f0371008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe800000200170000008d45 *ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f08b46048945ecc745f468 *f90d0883ed14b8d8910d08ebd59090080002000000000011000000837d040079288b450489c1f7 *d983f91f7f0f8b450089c6d3fe83c5088b4500ffe0837d0000791abeffffffffebeb837d041f7f *0d8b45000fb64d0489c6d3e6ebd8be00000000ebd10400010000000000110000008b7500c74500 *48fa0d08ff2600000000240000008b4604894500e92db00000900b00020000000000110000008b *7500c7450090fa0d08ff2621000000240000008b45048945008b4604894504e9ebae00008d7600 *01000000240000008b55048b460489450489d6c7450074fa0d08ff260400010000000000110000 *008b7500c74500c4fa0d08ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8 *ffe0c747fc54dc0b088b460489078d77fc83c5048b4500ebe7900400010000000000110000008b *7500c7450010fb0d08ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0 *c747fc84ed0b088b460489078d77fc83c5048b4500ebe7901600030000000000110000008b7500 *c7450098fb0d08ff2662000000240000008b45048945008b45088945048b4604894508e965b300 *009022000000240000008b55088b460489450889d6c745005cfb0d08ff2602000000240000008b *55048b460489450489d6c745007cfb0d08ff2610f01108acfb0d08040001000000000011000100 *8b7500c74500d8fb0d08ff26acfb0d08000000002400010083c7083b7b5c760cc7436c02000000 *8b43f8ffe08b46043dffffff7f750fbe10f0110883c50483ef088b06ebe540c747fc84ed0b0889 *078d77fc83c5048b4500ebd090905ce511081cfc0d080400010000000000110001008d45fc3b43 *54730abe34e411088b43fcffe08b7500c745005cfc0d088b06ebf01cfc0d080000000024000100 *83c7083b7b5c760cc7436c020000008b43f8ffe0c747fcb8050c088b46048907c7450048f01108 *8d47fc8945fc83ed04b8d4120e08ebdb9020f0110854f0110894fc0d0804000100000000001100 *03008d45fc3b4354730abe3ce411088b43fcffe08b7500c7450028fd0d088b06ebf094fc0d0821 *0000002400010083c7083b7b5c760cc7436c020000008b43f8ffe08b45043b4604750fbe20f011 *0883c50883ef088b06ebe78b450448c747fc84ed0b0889078d77fc83c5088b4500ebcf9094fc0d *0800000000240003008b4604894500be54f01108c745fcd8fc0d0883ed04ff269054f0110840fd *0d080b00020000000000110001008b7500c745008cfd0d08ff2640fd0d0821000000240001008b *45048945008b4604894504e99bb200008d760040fd0d0801000000240001008b55048b46048945 *0489d6c745006cfd0d08ff2688f0110898f01108a0fd0d0800000200180003008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8750002008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f498f01108c745f088f0110883ed10b8 *2cda0b08ebbf9088f01108a8f0110810fe0d0800000200180003008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8050002008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f4a8f01108c745f088f0110883ed10b82cda0b08eb *bf9088f01108b8f0110880fe0d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e895ff01008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f4b8f01108c745f088f0110883ed10b82cda0b08ebbf9088f011 *08c8f01108f0fe0d0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e825ff01008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f4c8f01108c745f088f0110883ed10b82cda0b08ebbf900400010000000000 *110000008b7500c74500acff0d08ff268b760483c504ff65008d76008b46048943048b760883c5 *04e94f5102008d760084ff0d0878ff0d080000000000000000250000000b000200000000001100 *00008d45fc3b4354730abec0e411088b43fcffe08b7500c745005c010e088b06ebf08b45043b46 *040f94c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d7600 *000000002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b4500 *8b40f0ebee8b45048943088b46048943048b7608c745040c000e0883c504e9ea4f020089f63000 *0e08d8ff0d080000000021000000250000008b55048b460489450489d6c7450064000e08ff2600 *0000002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b *40f0ebee8b46048943088b45048943048b7508c7450880000e0883c508e9764f020089f6000000 *002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0 *ebee8b460489430c8b46088943088b45048943048b7508c74508cc000e0883c508e9744f0200f0 *000e08a4000e080000000042000000250000008b46048945008b55048b460889450489d6c745fc *28010e0883ed04ff268d760028010e0864000e080000000001000000250000000b000200000000 *00110000008d45fc3b4354730abec4e411088b43fcffe08b7500c745000c030e088b06ebf08b45 *043b46040f95c00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f0 *8d7600000000002400000085f67510befcd1110883c5048b45008b40f0ffe0be04d2110883c504 *8b45008b40ecebee8b45048943088b46048943048b7608c74504bc010e0883c504e93a4e020089 *f6e0010e0888010e080000000021000000250000008b55048b460489450489d6c7450014020e08 *ff26000000002400000085f67510befcd1110883c5048b45008b40f0ffe0be04d2110883c5048b *45008b40ecebee8b46048943088b45048943048b7508c7450830020e0883c508e9c64d020089f6 *000000002400000085f67510befcd1110883c5048b45008b40f0ffe0be04d2110883c5048b4500 *8b40ecebee8b460489430c8b46088943088b45048943048b7508c745087c020e0883c508e9c44d *0200a0020e0854020e080000000042000000250000008b46048945008b55048b460889450489d6 *c745fcd8020e0883ed04ff268d7600d8020e0814020e0800000000010000002500000000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e815fb01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4e4f01108 *c745f0a0e4110883ed10b8acd80c08ebbf90c8e4110870030e081600030000000000110001008b *7500c745009c030e08ff2670030e0802000000240001008b4604894500e929b50000905cdc1108 *c8e41108a8030e080b00020000000000110003008b7500c7450030060e08ff26c745005cdc1108 *e954d6fdff83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc74dc1108 *8b450489078d77f883c50c8b45008b40ecebdd8d7600ac030e0803000000120001008d45ec3b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f88c *6b10088b460c8947fc8b460889078d47f88945f48b46048945f0c745ec0000000083ed14b8d0b8 *0e08ebc39083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e81c040e088b46048947ec8b *46088947f08b45088947f4c747f87cdc0b08c747fc7cdc11088d47e889078d77f883c50c8b4500 *8b40ecebc489f674040e08d8030e08ac030e080200000025000100ac030e080400010001000000 *0c0001008d45f83b435473058b43fcffe08b46048945fc8b450089750089c6c745f8d8040e0883 *ed088b06ebe28d7600ac030e0802000000150001008d45f43b4354720883c7083b7b5c760cc743 *6c020000008b43f8ffe08d45f8c700d46d1008897004c747fce8040e088b460489078b46088945 *f48d77fc83ed0cb8e8040e08ebd390ac030e0803000000120001008d45ec3b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f820050e088b460889 *47fc8b460c89078d47f88945f48b46048945f0c745ec0000000083ed14b8d0b80e08ebc39083c7 *1c3b7b5c760cc7436c070000008b43f8ffe0c747e874050e088b46048947ec8b45048947f08b46 *088947f4c747f87cdc0b08c747fc6cdc11088d47e889078d77f883c5088b45008b40ecebc489f6 *cc050e08cc030e08a8030e080100000025000300c8e4110830060e080400010000000000110001 *008d45f83b4354730abee8e411088b43fcffe08b45008945fcc7450000d21108c745f800000000 *83ed08b8d0b80e08ebe00b00020000000000110000008b7500c74500cc060e08ff262100000024 *00000083c7083b7b5c760cc7436c020000008b43f8ffe08b4504034604c747fce0060c0889078d *77fc83c5088b4500ebe489f601000000240000008b55048b460489450489d6c7450094060e08ff *260400010000000000110000008b7500c7450000070e08ff26000000002400000083c7083b7b5c *760cc7436c020000008b43f8ffe0c747fce0060c088b460489078d77fc83c5048b4500ebe79004 *00010000000000110000008b7500c7450078070e08ff26be78d6110883c5048b4500ff60e889f6 *be78d6110883c5048b4500ff60e889f654070e0844070e0800000000000000002500000020d411 *0848d7110808e5110878070e0804000100000000001100070083c7183b7b5c7611c7436c060000 *00be08e511088b43fcffe0c747ece8070e088b45008947f0c747f80c0b0e088b45008947fc8d47 *ec89078d47f8894500b8a80b0c08ebd28d760080070e0801000100130001008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb894070e08ebe28d7600010001 *00130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0c *b8408c0c08ebe28d760004000100010000000c0000008d45fc3b4354720883c70c3b7b5c760cc7 *436c030000008b43fcffe0c747f81c080e088b45008947fc8d47f88945008b760483ed04b80812 *1008ebde03000000120000008d45ec3b4354720883c7083b7b5c760cc7436c020000008b43f8ff *e08d45f8c700d46d1008897004c747fc54080e088b460c89078d47fc8945f48b46088945f08b76 *0483ed14b814161008ebcd8d7600be78d6110883c50c8b4500ff60e889f68b46048945088b7504 *83c504e9ff0802008d7600f8080e08e8080e080000000042000000250000008b7510c745082009 *0e08e9d908020090be78d6110883c50c8b4500ff60e889f68b46048945088b750483c504e9b708 *02008d760040090e0830090e080000000042000000250000008b750883c514ff26be78d6110883 *c50c8b4500ff60e889f68b46048945088b750483c504e9770802008d760080090e0870090e0800 *00000042000000250000008b7510c74508a8090e08e95108020090a8090e0868090e0800000000 *04000000250000000500000024000000837e042d75118b7504c74504cc090e0883c5048b06ffe0 *8b7514c7450c68090e0883c504b808121008ebea908b46088945008b7604c745fcd4090e0883ed *04ff268d7600000a0e0820090e080000000004000000250000008975008b7604c745fc2c0a0e08 *83ed04ff2689f6be78d6110883c50c8b4500ff60e889f68b46048945088b750483c504e9a70702 *008d7600500a0e08400a0e080000000042000000250000008975008b750cc74504780a0e0883ed *04e97b0702008d7600780a0e08780a0e08780a0e082c0a0e08780a0e08780a0e08780a0e08780a *0e0800000000030000002500000004000100030000000b0000008d45ec3b435473058b43fcffe0 *8b460c8945f88b46088945fc8b55008b460489450089d6c745f4bc0a0e0883ed0c8b06ebd989f6 *7c070e080b000200020000000e00010083c7203b7b5c760cc7436c080000008b43fcffe0c747e4 *98080e088b46088947e88b45008947ec8b45048947f0c747f4c80a0e088b46048947f88b450489 *47fc8d47e489078d47f489450483c504b810750c08ebbd90909048d71108640b0e080b00020000 *0000001100010083c7083b7b5c7611c7436c02000000be10e511088b43fcffe0c747fc080c0e08 *8b450489078d47fc89450483c504b810750c08ebe28d76008b45048b560489550489c6e9480602 *00be78d6110883c5088b4500ff60e889f6c00b0e08c00b0e08c00b0e08c00b0e08c00b0e08c00b *0e08c00b0e08b00b0e0800000000010000002500000004000100010000000c0000008d45fc3b43 *5473058b43fcffe08b55008b460489450089d6c745fcfc0b0e0883ed048b06ebe5909040d71108 *70d6110868d6110818f11108300c0e08040001000000000011000f0083c7143b7b5c7611c7436c *05000000be18e511088b43fcffe0c747f09c0c0e088b45008947f4c747fc540e0e088d47f08907 *8d77fc83c5048b4500ebda8d76003c0c0e0801000100130001008d45f03b435473058b43f8ffe0 *8d45f8c700d46d10088970048b46048945f4be18f1110883ed10b808121008ebdd89f68b45048b *560489550489c6e92c050200be78d6110883c5088b4500ff60e889f6dc0c0e08dc0c0e08dc0c0e *08dc0c0e08dc0c0e08dc0c0e08cc0c0e08dc0c0e08000000000100000025000000040001000100 *00000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc180d0e0883ed *048b06ebe589f6300c0e0801000100130001008d45f43b4354720883c7083b7b5c760cc7436c02 *0000008b43f8ffe08d45f8c700d46d1008897004c747fc240d0e088b460489078d47fc8945f483 *ed0cb85c6c0c08ebd6300c0e0801000100130005008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe08d45f8c700d46d1008897004c747f8580d0e088b46048947fc8d47f889 *45f4c745f028f1110883ed10b838510c08ebce04000100010000000c0000008b760483c504ff26 *340c0e0804000100010000000c0001008d45f83b435473058b43fcffe0c745fc081210088b4500 *8945f88b460489450083ed08b8385d0c08ebe189f6300c0e0804000100010000000c0007008d45 *fc3b4354720883c7303b7b5c760cc7436c0c0000008b43fcffe0c747d48c6b10088b46048947d8 *8b45008947dcc747e0a80d0e088b45008947e4c747ec000e0e088d47e08947f0c747f4180e0e08 *8d47ec8947f8c747fcc05e0c088d47f489078d47d48945008d47fc8945fc83ed04b838510c08eb *a2c4db1108cc0e0e0800000200180001008d45ec3b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e84def01008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f464d61108c745f064db1108bec4db110883ed14b814161008ebba48d71108 *f4f0110804f111083c0f0e080b000200000000001100070083c7243b7b5c7611c7436c09000000 *be30e511088b43fcffe0c747e0b80f0e088b45048947e4c747ecf00f0e088b45048947f0c747f8 *ec100e088d47e08947fc8d47ec89078d47f889450483c504b810750c08ebc28d76000100010013 *0000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4fcd111088b760483 *ed10b808121008ebde8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d1008897004c745f404d211088b760483ed10b808121008ebde8d7600be78d6110883c5088b45 *00ff60e889f68b750483c508ff2630100e0820100e08000000000100000025000000c74500f4f0 *1108c745084c100e08e9e9befdff908b750883c510ff2660100e084c100e08400f0e0803000000 *250001008b46048945f8c745f404f111088b4604894500c745fc7c100e0883ed0ce9aabefdff89 *f6be78d6110883c50c8b4500ff60e889f6a0100e08a0100e08a0100e08a0100e087c100e08a010 *0e08a0100e08a0100e08400f0e080200000025000300400f0e0804000100020000000e0003008d *45ec3b435473058b43fcffe08b46088945fc8b55008b460489450089d6c745f8dc100e0883ed08 *8b06ebdff4db110818110e0800000200180001008d45ec3b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e801ed01008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f464d61108c745f064db1108bef4db110883ed14b814161008ebba04 *00010000000000110000008b7500c745004c120e08ff2601000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb830d40c08ebe28d760083c714 *3b7b5c760cc7436c050000008b43f8ffe0c747f0a8110e088b46048947f4c747fc94b90b088d47 *f089078d77fc83c5048b45008b40ecebd790bee0d0110883c5048b4500ff60f089f610120e0810 *120e08d4110e0810120e0810120e0810120e0810120e0810120e08000000000000000025000000 *24dc11084c120e0800000200180001008d45ec3b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e8cdeb01008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f464d61108c745f064db1108be24dc110883ed14b814161008ebba54db11085c *f11108bc120e080b00020000000000110003008d45f83b4354730abe5ce511088b43fcffe08b45 *048945f8c745fcc4130e0883ed08b810dc0c08ebe78d7600000000002400000083c70c3b7b5c76 *15c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e088977fc8b450089078d77 *f883c5088b4500ebe4908b45048945008975fcc7450408130e0883ed04e908a9000040130e0840 *130e08c0120e0801000000250001008975008b45048945fcc745046c130e0883ed04e970c2feff *6c130e086c130e08c0120e0802000000250001008b45088945fc897508c7450098130e0883ed04 *e9a8c1feff98130e0898130e08c0120e0802000000250001000200000004000000ff6500900200 *000009000000ff6500900300000001000000ff6500900300000009000000ff6500905472756500 *8d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e825ea01008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f0f4130e0883ed10b84cce0b08ebbf9046616c73650089f6000002001800 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8b9e901008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745 *f060140e0883ed10b84cce0b08ebbf90a8e51108cc140e0800000200180001008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e84de901008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0a8e5110883ed10b8 *2cda0b08ebbf9098e5110838150e0800000200180001008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8e1e801008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f098e5110883ed10b82cda0b08ebbf900900 *0200000000001100000083c7183b7b5c7611c7436c06000000bed8e511088b43fcffe0837d0000 *780a83ef18b890c60e08ebee8b450089c2f7da85d27809c747ece8160e08eb07c747ec7c160e08 *8b45048947f08957f4c747f87cdc0b08c747fce0f111088d47ec89078d77f883c5088b45008b40 *eceba989f601000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b *4e08ba6766666689c8f7eac1fa0289c8c1f81f29c28d149201d229ca8b46048945f48955f083ed *10b890c60e08ebc28d760001000100160000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe08d45f8c700d46d1008897004c747f828160e088b46048947fc8b460889078b *4e08ba6766666689c8f7eac1fa02c1f91f29d18d47f88945f4894df083ed10b890c60e08ebb98d *760001000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b460489 *45f48b46088945f083ed10b890c60e08ebdc90d0f11108ecf11108dce5110818170e080b000200 *00000000110007008d45fc3b4354730abedce511088b43fcffe08b7500c74500a8180e088b06eb *f083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f87cdc0b08c747fc90e511088b450489 *078d77f883c5088b45008b40ecebdd8d760020170e0802000000150001008d45f03b435473058b *43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b834170e08ebdc90 *20170e0802000000150001008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46 *088945f48b46048945f083ed10b834170e08ebdc9018170e08020000002400070083c70c3b7b5c *760cc7436c030000008b43f8ffe08b560483fa227529c747f8d4170e088b45048947fc8b450889 *078d47f8894508c74504d0f1110883c504b82cda0b08ebcdc747f898170e088b45048947fc8b45 *0889078d47f889450889550483c504b894c70e08eba889f68b46088945008b7604c745fc10180e *0883ed04ff268d76007c180e0854170e0818170e080100000025000700c0f11108ecf11108a818 *0e0809000200000000001100030083c7183b7b5c7611c7436c06000000bee4e511088b43fcffe0 *8b550083fa277511c74500c0f1110883ef18b82cda0b08ebe5c747ec30190e088b45048947f089 *57f4c747f87cdc0b08c747fcb8f111088d47ec89078d77f883c5088b45008b40ecebb490ac180e *0801000100160001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45 *f8c700d46d1008897004c747f87cdc0b08c747fcb8f111088b460489078d47f88945f48b460889 *45f083ed10b894c70e08ebc9909090281a0e080000000000000000000001000000000011000000 *8d45fc3b4354730abeece511088b43fcffe0c745fc381a0e0883ed048b43608968308b53688d47 *04894204c744240400000000891c24e837b4010089442408c7042400000000e849a80100c74424 *04000000008b442408890424e8a2b401008b43608b683005880000008943548b43688b780483ef *0489c28b4018c1e00c030283e80489435c8b4500eb8590e96fffffff8d76000000000024000000 *be0cd2110883c504ff650090e0d81108fcf11108441a0e080b00030000000000110003008d45fc *3b4354730abe00e611088b43fcffe0c7430404f21108befcf11108c745fcac1b0e0883ed04b870 *331008ebe190bee0d8110883c504ff6500900000000024000000be0cd2110883c504ff650090c7 *4500a01a0e08c7042401000000e897a7010090ac1a0e088c1a0e08441a0e080000000025000100 *441a0e0801000000240001008b7504c74504d41a0e0883c504ff2690441a0e0822000000240001 *008b55048b4604c74504e01a0e0883c5048944240889542404c70424b0061008e8449c0100ff65 *0090441a0e0802000000240001008b55048b460489450489d6c74500fc1a0e08ff26441a0e0801 *000000240001008b46088945008b7604c745fc301b0e0883ed04ff268d7600441a0e0804000200 *010000000c0001008d45f83b435473058b43fcffe08b55008b460489450089d6c745fc501b0e08 *83ed048b06ebe589f6441a0e08020000002400010083c7083b7b5c7615c7436c02000000c74320 *fe000000b8b03d1008ffe0c747fc781b0e088b450489078b45088945048d47fc89450883c504b8 *786f0e08ebdc9000e6110808f21108381c0e0800000000ec1b0e08000001000000000011000300 *8d45f83b4354730abe08e611088b43fcffe0c745fc08f21108c745f804d2110883ed08b85c1a0e *08ebe689f6e9cfffffff909090e0d8110818f21108401c0e080400020000000000110003008d45 *fc3b4354730abe10e611088b43fcffe0c7430420f21108be18f21108c745fcf81c0e0883ed04b8 *70331008ebe190bee0d8110883c504ff6500900000000024000000be0cd2110883c504ff650090 *c745009c1c0e08c7042402000000e89ba5010090a81c0e08881c0e08401c0e0800000000250001 *00401c0e0801000000240001008b7504c74504d01c0e0883c504ff2690401c0e08010000002400 *0100c74500dc1c0e08e8e7a70100ff65009010e61108481d0e0800000000081d0e080000010000 *000000110001008d45fc3b4354730abe18e611088b43fcffe0c745fc04d2110883ed04b8581c0e *08ebed90e9d7ffffff90909098ef1108501d0e0800000200180001008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c9e001008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f4f0e51108c745f098ef110883ed10b82cda0b08 *ebbf90a8ef1108bc1d0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e85de001008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4f0e51108c745f0a8ef110883ed10b82cda0b08ebbf9048ef1108281e *0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e8f1df01008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f4f0e51108c745f048ef110883ed10b82cda0b08ebbf9058ef1108941e0e0800000200180001 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e885df01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4f0e51108c745f0 *58ef110883ed10b82cda0b08ebbf9068ef1108001f0e0800000200180001008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e819df01008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f4f0e51108c745f068ef110883ed10b82c *da0b08ebbf9078ef11086c1f0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8adde01008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f4f0e51108c745f078ef110883ed10b82cda0b08ebbf9088ef11 *08d81f0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e841de01008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f4f0e51108c745f088ef110883ed10b82cda0b08ebbf9038ef110844200e0800000200 *180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8d5dd01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4f0e51108 *c745f038ef110883ed10b82cda0b08ebbf9028ef1108b0200e0800000200180001008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e869dd01008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f4f0e51108c745f028ef110883ed *10b82cda0b08ebbf9018ef11081c210e0800000200180001008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8fddc01008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f4f0e51108c745f018ef110883ed10b82cda0b08ebbf90 *0400010000000000110000008b7500c74500d4210e08ff268b760483c504ff65008d76008b4604 *8943048b760883c504e9432f02008d7600ac210e08a0210e08000000000000000025000000ecf0 *1108d4210e080400010000000000110001008b7500c7450000220e08ff26d4210e080000000024 *0001008b4604894500e9adab000090ecf011080c220e080b000200000000001100010083c7183b *7b5c7611c7436c06000000bedce611088b43fcffe0c747ec6c220e088b45048947f0c747f8c022 *0e088d47ec8947fc8b450089078d77f883c5088b4500ebd49001000100130000008d45f43b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb828d00e08ebe28d76000c *220e0802000000240001008b4604894500e921960000900c220e0804000100020000000e000100 *8d45f83b435473058b43fcffe08b46048945fc8b7608c745f8a4220e0883ed088b06ebe70b0002 *0000000000110000008b7500c7450038230e08ff2621000000240000008b45043b46040f94c00f *b6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d76000100000024 *0000008b55048b460489450489d6c7450004230e08ff260b00020000000000110000008b7500c7 *45009c230e08ff2621000000240000008b45043b46047510befcd1110883c5088b45008b40f0ff *e0be04d2110883c5088b45008b40ecebee01000000240000008b55048b460489450489d6c74500 *6c230e08ff26d8dc1108fce61108b0230e0800000200180003008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e865da01008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f4fce6110883ed0cb824fc0c08ebc673797374656d00 *9000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e801da01008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f400d21108c745f018240e0883ed10b84cce0b08ebbf9067657443757272656e74446972656374 *6f72790000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e889d901008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f084240e0883ed10b84cce0b08ebbf9072656d6f766546696c65009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e819d901008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0fc240e0883ed10b84cce0b08ebbf9072656d6f76654469726563746f7279000000 *0200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c *1008893424e8a5d801008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d2 *1108c745f06c250e0883ed10b84cce0b08ebbf900cd11108e0250e0800000200180001008d45f4 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e839d801 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f40cd1110883ed0cb8c46d0e *08ebc66372656174654469726563746f72790000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cdd701008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f044260e0883ed10b84cce0b08eb *bf9080f0110870f011088ce71108b8260e080400010000000000110007008d45f03b4354730abe *8ce711088b43fcffe0c745f8000000008b45008945f4c745fcd4270e0883ed0cb804ee0b08ebe0 *897500e9c8ffffff04270e0804270e08c0260e080000000025000100897500e9acffffff20270e *0820270e08c0260e080000000025000100c0260e0822000000240001008b460483f82f743683f8 *5c7567837d04007916be00d21108c7450820270e0883c508b804270e08ffe08b45048945008b45 *08894504c7450820270e08eb2f837d04007916be00d21108c745083c270e0883c508b820270e08 *ebcd8b45048945008b4508894504c745083c270e08b85cd00c08ebb38b750883c50c8b06eba989 *f6b8260e0801000000240007008d56ff85d27e3085d2781d8955f88b45048945f4895500c745fc *48270e0883ed0cb8a4b10e08ffe0be70f0110883c504b89c071008ebef8b750483c5088b06ebe5 *90909038280e080000000000000000000001000000000011000000be60000000ff6500e9f3ffff *ff90909060280e080000000000000000000001000000000011000000be00000000ff6500e9f3ff *ffff90909000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8b9d501008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f4cc280e0883ed0cb81cd70e08ebc6000000002400000083c7083b7b5c7615c7436c02 *000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe8 *9000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e821d501008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f464290e0883ed0cb844d70e08ebc6000000002400000083c7083b7b5c7615c7436c02000000c7 *4320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe890000002 *00180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e889d401008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4fc290e *0883ed0cb86cd70e08ebc6000000002400000083c7083b7b5c7615c7436c02000000c74320ff00 *0000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe89000000200180000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e8f1d301008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4942a0e0883ed0c *b894d70e08ebc6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b0 *3d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe890e82a0e0800000000000000 *00000001000000000011000000be00000000ff6500e9f3ffffff909090142b0e08000000000000 *0000000001000000000011000000e82f69f6ff89c6ff650089f6e9efffffff9090909cf21108ac *f21108d4f2110888f21108e4f211081c2b0e080b0003000000000011001f008d45f03b4354730a *be0ce811088b43fcffe08b7500c74500f02e0e088b06ebf00000000024000000be0cd2110883c5 *04ff650090e3000000240000008b45040b46048b55088955048945088b450c894500c7450c682b *0e08e913ac00008d7600242b0e08e3000000240001008b4604894508bed4f21108c745007c2b0e *08ff261c2b0e08e30000002400050089750cbe9cf21108c74500ac2b0e08ff268d76008b7604eb *e78d76001c2b0e08e300000024000500ebd689f68b46048943048b7608c74500f42b0e08e9d724 *02008d7600f82b0e08e02b0e081c2b0e08e3000000250005001c2b0e0823000000240005008575 *04751a8b450c8945fc8b7508c74500242c0e0883ed08b808121008ffe0be0cd2110883c5108b45 *00ebf11c2b0e0823000000240005008b46048945fcc745f801000000c74500302c0e0883ed08e9 *5ccdffff1c2b0e0802000000240015008b4604894500bee4f21108c745fc682c0e0883ed04ff26 *901c2b0e080200000024001500c74500902c0e08ff268d76001c2b0e080200000024001d008975 *fcc745f888f21108c745f484f21108c74500b42c0e0883ed0ce91c5bffffeb7a89f60000000024 *00000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b08 *89378d77fc83c5048b4500ebea8d760021000000240000008b46048945008b45048945fcc74504 *f82c0e0883ed04e991aa000090ec2c0e0800000000202b0e0800000100000001000d0001008d45 *f43b435473058b43fcffe08b46048945fcbeacf21108c745f8342d0e0883ed088b06ebe589f683 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fc682d0e088b460489078d77fcc74500cc2c *0e08c745fc5873100883ed04b858731008ebd790eb7a89f6000000002400000083c7083b7b5c76 *15c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b45 *00ebea8d760021000000240000008b46048945008b45048945fcc74504d82d0e0883ed04e9b1a9 *000090cc2d0e0800000000202b0e0800000100000001000d0001008d45f43b435473058b43fcff *e08b46048945fcbeacf21108c745f8142e0e0883ed088b06ebe589f61c2b0e080200000024001f *0083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc482e0e0889378d77fcc74500cc *2c0e08c745fc5873100883ed04b858731008ebda89f68b46048943048b7608c745007c2e0e08e9 *172202008d7600b82e0e08902d0e081c2b0e080200000025001f001c2b0e080100000024001f00 *8b46248945008b45048945f88b7624c745fce42e0e0883ed0ce9fae20100909003000200000000 *00110000008b450083c504890424e8d265f6ff89c6ff6500900f00040000000000110000008b4d *008b55048b450883c50c8944240889542404890c24e80465f6ff89c6ff65009090900300020000 *000000110000008b450083c504890424e88268f6ff89c6ff650090030002000000000011000000 *8b450083c504890424e8a268f6ff89c6ff6500900c300e08e40100000000000000000400000000 *0011000000c744241400000000c7442410000000008b45008904248d45048b10895424108b4004 *894424148b450c83c5108944240c8b4424108b5424148944240489542408e8bf66f6ff8d4df889 *0189510489cdff650889f6e9a7ffffff9090900300020000000000110000008b450083c5048904 *24e87e68f6ff89c6ff65009050de110874f21108c8f2110834300e080400020000000000110007 *008d45ec3b4354730abe2ce811088b43fcffe0be50de1108c745fcdc320e0883ed048b06ebeb8d *7600eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d *1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760078300e080000000000000000 *0000010000000200100000008d45f43b435473058b43fcffe08b46048945f88b46088945f4c745 *fc84300e0883ed0cb808d80e08ebe189f6010000002400000083c508ff650089f63c300e080100 *00002400010085f67513bec8f21108c7450004310e08b8c0351008ffe0be44e8110883c5088b45 *00ebf13c300e08220000002400010085f675148b4504894500c7450418310e08b880d40e08ffe0 *be40e8110883c50c8b4500ebf18d76003c300e08220000002400010085f675178b45048945fcc7 *450048310e0883ed04b858d40e08ffe0be40e8110883c50c8b4500ebf13c300e08220000002400 *010085f675178b45048945fcc745007c310e0883ed04b8d8d20e08ffe0be40e8110883c50c8b45 *00ebf13c300e08220000002400010085f675178b45048945fcc74500b0310e0883ed04b830d40e *08ffe0be3ce8110883c50c8b4500ebf13c300e0801000000240001008975f8897500c745fce431 *0e0883ed08e9a3edfeff8d76003c300e0822000000240001008b4504894500c7450418320e08e9 *d2ecfeff89f638300e08010000002400030083c70c3b7b5c760cc7436c030000008b43f8ffe08b *450483c008c747f8d0300e088947fc8b560489178d57f88955f8c745f474f21108c745f084f211 *08894500c745fc3c320e0883ed10b808880d08ebc18d760038300e08010000002400030089f08b *7504894504c745005c320e08ff268d760038300e0801000000240003008b7604c74500bc320e08 *e9e10f02009030f31108ec320e080400020000000000110001008b7500c7450018330e08ff26ec *320e0800000000240001008b4604894500e921a5000090000000000a0000008b4500ff60f09090 *000000000a0001008b4500ff60ec9090000000000a0002008b4500ff60e889f63ce8110840e811 *0844e811080400010000000000110000008d45fc3b4354730abe9ce811088b43fcffe08b7500c7 *450000d2110883ed04b808121008ebea90900400010000000000110000008d45fc3b4354730abe *a0e811088b43fcffe08b7500c7450000d2110883ed04b808121008ebea909060f31108c8330e08 *0b000200000000001100010083c7203b7b5c7611c7436c08000000bea4e811088b43fcffe0c747 *e4c0360e088b45048947e8c747ecf4360e088b45008947f0c747f878370e088d47e48947fc8d47 *ec89078d77f883c5088b4500ebc78b750883c510e965d30100908b45108b550c89551089450c89 *75088b750483c508e96e02000089f638340e0838340e0838340e0838340e0838340e0800000000 *c4000000250000008b5510428b46048945fc8b46088945108b750c89550cc7450074340e0883ed *08e96fdd01008d760074340e082c340e080000000004010000250000008b550c8b460489450c89 *d6c74500b0340e08ff268975088b750483c508e9ee01000089f6c4340e08c4340e08c4340e08c4 *340e08c4340e080000000044010000250000008b450c8945fc8b7604c74500f4340e0883ed08e9 *fcdc01008b750883c510e985d201009000000200140000008d45f43b435473058b43f8ffe08d45 *f8c700d46d10088970048b46048945f483ed0cb8ccd90e08ebe28d7600c8330e08020000001500 *01008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b46048945f0 *83ed10b8d8da0e08ebdc9004000100010000000c0000008b760483c504ff26c8330e0804000100 *020000000e0001008d45fc3b4354720883c7143b7b5c760cc7436c050000008b43fcffe0c747f0 *58350e088b46048947f48b45008947f8c747fc94350e088d47f089078d47fc8945008b760883ed *04b808121008ebcc89f683c7183b7b5c760cc7436c060000008b43f8ffe0c747ec20350e088b45 *108947f0c747f8ac350e088977fc8d47ec89078d77f883c5148b4500ebd790c8330e0804000100 *010000000c0001008d45fc3b435473058b43fcffe08b46048945fc83ed04b8d8da0e08ebee8d76 *0083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc48360e0889378d77fc83c5148b4500 *ebea68360e08fc350e080c350e08f4340e08b0340e08c8330e080401000025000100c8330e0815 *000300010000000c0001008d45f03b435473058b43fcffe08975fc8b55008b460489450089d6c7 *45f8b0360e0883ed088b06ebe28d760001000100130000008d45f03b435473058b43f8ffe08d45 *f8c700d46d1008897004c745f464d611088b760483ed10b808121008ebde8d7600040001000300 *00000b0000008d45f03b435473058b43fcffe0c745fc08121008c745f8000000008b45008945f4 *8b460c8945008b46088945f08b760483ed10b8c0360e08ebd189f604000100020000000e000000 *83c7183b7b5c760cc7436c060000008b43fcffe0c747ec30370e088b46048947f08b46088947f4 *8b45008947f8c747fcc05e0c088d47ec89078d77fc83c5048b45008b40ecebcb90546578742f50 *72657474795072696e742f487567686573504a2e68733a3634317c66756e6374696f6e20736570 *3100904cd21108f0370e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e829c601008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4c0370e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3638377c66756e6374696f6e2066696c *6c31004cd211088c380e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e88dc501008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f45c380e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3833347c66756e6374696f6e206c6179 *0089f64cd2110828390e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8f1c401008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4f8380e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3733367c66756e6374696f6e20676574 *0089f64cd21108c4390e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e855c401008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f494390e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3734397c66756e6374696f6e20676574 *3100904cd21108603a0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8b9c301008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4303a0e08be4cd2110883ed10b828101008ebc1909090546578742f50 *72657474795072696e742f487567686573504a2e68733a3835397c66756e6374696f6e206c6179 *3200904cd21108fc3a0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e81dc301008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f4cc3a0e08be4cd2110883ed10b828101008ebc1909090d0f31108b4f3 *1108683b0e0817000400000000001100030083c7103b7b5c7611c7436c04000000be40e911088b *43fcffe0c747f4203d0e088b45048947f88b45008947fc8b450889078b450c894508c7450cd0f3 *11088d77f483c508b8203d0e08ebcc908b750483c514e9c5cb010090683b0e0802000000150001 *008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4d0f311088b46088945f0 *8b760483ed10b8203d0e08ebd89083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8e43b *0e088b45108947fc8b460489078d47f88945148b45088945108b750c83c50cb814161008ebd390 *83c7103b7b5c760cc7436c040000008b43f8ffe0c747f4c86b10088b45108947f88b46088947fc *8b451489078d47f48945148b46048945108b750c83c50cb814161008ebcd8d76008b45108b5604 *89551089c683c510eb70c74514d0f311088b45108b560889551089c683c510eb59908b751483c5 *14e9c9ca010090beb4f3110883c514e9bbca01008d7600d43c0e08d43c0e08c83c0e08b03c0e08 *a03c0e08583c0e08183c0e08cc3b0e08683b0e080500000025000300683b0e080b000200030000 *000b0003008d45f03b435473058b43fcffe08b460c8945f48b46088945f88b46048945fc8b4500 *89750089c6c745f0103d0e0883ed108b06ebd69090900b00020000000000110000008d45fc3b43 *54730abe54e911088b43fcffe08b7504c745fc403e0e0883ed048b06ebed90be3cd7110883c50c *8b4500ff60f089f68b460489450883c504e9beffffff89f68b750483c508ff2683c7103b7b5c76 *0cc7436c040000008b43f8ffe0c747f4f86a0c08c747f854df11088b45048947fcc70701000000 *8d77f483c5088b45008b40e8ebd6b03d0e08a83d0e080000000001000000250000008975088b75 *04c74504003e0e0883c504ff2689f6003e0e08003e0e08003e0e08003e0e08983d0e08003e0e08 *003e0e08883d0e080000000042000000250000007cf3110858e91108403e0e0804000100000000 *00110003008b7500c74500d43f0e08ff26be3cd7110883c5048b4500ff60f089f6bed0df110883 *c5048b4500ff60dc89f6443e0e0801000100130001008d45f43b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46048945f483ed0cb8583e0e08ebe28d760083c71c3b7b5c760cc7436c07 *0000008b43f8ffe0c747e8903e0e088b46088947ecc747f4f86a0c088b46048947f88d47e88947 *fc8b460c89078d77f483c5048b45008b40e8ebcb90443e0e0801000100130001008d45f43b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8583e0e08ebe28d760083 *c7183b7b5c760cc7436c060000008b43f8ffe0c747ec103f0e088b46048947f0c747f87c5f0d08 *8d47ec8947fc8b460889078d77f883c5048b45008b40e4ebd18d76008b4604894500e9cdfeffff *90bed0df110883c5048b4500ff60dc89f6be7cf3110883c504ff2689f69c3f0e089c3f0e088c3f *0e08803f0e083c3f0e08bc3e0e08743e0e08643e0e08403e0e0800000000250003000900020000 *000000110000008d45fc3b4354730abe60e911088b43fcffe08b7504c745fca8400e0883ed048b *06ebed90be3cd7110883c50c8b4500ff60f089f68b45040346088b560489550889450483c504e9 *b5ffffff90bed0df110883c50c8b4500ff60dc89f683c70c3b7b5c760cc7436c030000008b43f8 *ffe08b450485c0750a83c50c83ef0c8b06ebedc747f87c5f0d088977fc89078d77f883c50c8b45 *008b40e4ebd3903c400e083c400e082c400e083c400e0814400e083c400e083c400e0804400e08 *0000000062000000250000001400030000000000110000008d45fc3b4354730abe64e911088b43 *fcffe08b7508c745fcc8420e0883ed048b06ebed90be3cd7110883c5108b4500ff60f089f68b45 *080346088b560489550c89450883c504e9b5ffffff9000000200140000008d45f43b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb874e50e08ebe28d760001000100 *160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b460889 *45f083ed10b8e03f0e08ebdc9083c7243b7b5c760cc7436c090000008b43f8ffe0837d04007f31 *c747e03c410e088b45088947e48b45048947e8c747ec5c5f0d088d47e08947f08d77ec83c50c83 *ef108b45008b40ecebc7c747e008410e088b45048947e4c747ecc86a0c088d47e08947f0c747f4 *f86a0c088d47ec8947f88b45088947fc8b450489078d77f483c50c8b45008b40e8eb8790010001 *00160000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b4608 *8945f083ed10b8e03f0e08ebdc9083c7143b7b5c760cc7436c050000008b43f8ffe0c747f00042 *0e088b45088947f48b45048947f8c747fc5c5f0d088d47f089078d77fc83c50c8b45008b40eceb *d18d760030420e086c410e0800000000220000002500000089750c8b7504c7450488420e0883c5 *04ff2689f688420e0888420e0888420e0888420e08e8400e0888420e0888420e08d8400e080000 *0000c3000000250000009cf3110868e91108f4420e0884000000c8420e08000004000000000011 *0003008b7500c74500ac460e08ff26e9efffffff8d760083c508e9dcfcffffcc420e0803000100 *120001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b461089 *45f08b46048945ec8b460c8945e883ed18b8e8420e08ebd09083c71c3b7b5c760cc7436c070000 *008b43f8ffe0c747e810430e088b45048947ec8b450c8947f08b46048947f48b45088947f8c747 *fc5c5f0d088d47e889078d77fc83c5108b45008b40ecebc58d76008b450c2b450489450c8b5510 *8b450889451089550883c508e9fbfcffff8d76008b450c2b450489450c8b55108b450889451089 *550889750483c504e90cffffffbc430e08bc430e08bc430e08bc430e08bc430e08bc430e08bc43 *0e089c430e08cc420e08a400000025000100cc420e0803000200120001008d45e43b435473058b *43f8ffe08d45f8c700d46d10088970048b46148945e88b46088945ec8b46108945f08b46048945 *f48b760cc745e408440e0883ed1c8b06ebc989f683c7283b7b5c760cc7436c0a0000008b43f8ff *e0c747dc14440e088b45048947e08b450c8947e48b46088947e88b45088947ec8b460c8947f0c7 *47f4f86a0c088b46048947f88d47dc8947fc8b460c89078d77f483c5108b45008b40e8ebb390cc *420e0803000200120001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b4610 *2b46148b56088955f48945f08b46048945ec8b460c8945e883ed18b8e8420e08ebcd89f683c724 *3b7b5c760cc7436c090000008b43f8ffe0c747e0c4440e088b45048947e48b450c8947e88b4604 *8947ec8b45088947f08b46088947f4c747f87c5f0d088d47e08947fc8b460889078d77f883c510 *8b45008b40e4ebb98d7600cc420e0803000100120001008d45e83b435473058b43f8ffe08d45f8 *c700d46d10088970048b46088945f48b46108945f08b46048945ec8b460c8945e883ed18b8e842 *0e08ebd090cc420e0803000100120001008d45e83b435473058b43f8ffe08d45f8c700d46d1008 *8970048b460c8945f48b46108945f08b46088945ec8b46048945e883ed18b8e8420e08ebd09083 *c7343b7b5c760cc7436c0d0000008b43f8ffe0c747d06c450e088b45048947d48b450c8947d88b *46088947dc8b45088947e0c747e4b4450e088b46048947e88b45048947ec8b450c8947f08b4508 *8947f4c747f89c5f0d088d47e48947fc8d47d089078d77f883c5108b45008b40e0eba089f6bed0 *df110883c5108b4500ff60dc89f6be9cf3110883c510ff2689f674460e0874460e0864460e08f0 *450e0804450e0858440e084c430e08fc420e08c8420e0843000000250003000400010000000000 *110000008b7500c7450064470e08ff26be3cd7110883c5048b4500ff60f089f601000100130000 *008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8b8460e *08ebe28d760083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e8dc460e088b46088947ec *c747f4386b0c088b46048947f8c747fcfcd111088d47e889078d77f483c5048b45008b40d4ebca *08470e08c4460e080000000000000000250000000400010000000000110000008b7500c745001c *480e08ff26be3cd7110883c5048b4500ff60f089f601000100130000008d45f43b435473058b43 *f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb870470e08ebe28d760083c71c3b7b *5c760cc7436c070000008b43f8ffe0c747e894470e088b46088947ecc747f4186b0c088b460489 *47f8c747fcfcd111088d47e889078d77f483c5048b45008b40d8ebcac0470e087c470e08000000 *0000000000250000000400010000000000110000008b7500c74500d4480e08ff26be3cd7110883 *c5048b4500ff60f089f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b46048945f483ed0cb828480e08ebe28d760083c71c3b7b5c760cc7436c070000008b *43f8ffe0c747e84c480e088b46088947ecc747f4186b0c088b46048947f8c747fc04d211088d47 *e889078d77f483c5048b45008b40d8ebca78480e0834480e080000000000000000250000000400 *010000000000110000008b7500c745008c490e08ff26be3cd7110883c5048b4500ff60f089f601 *000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483 *ed0cb8e0480e08ebe28d760083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e804490e08 *8b46088947ecc747f4386b0c088b46048947f8c747fcfcd111088d47e889078d77f483c5048b45 *008b40d4ebca30490e08ec480e080000000000000000250000000400010000000000110000008b *7500c74500444a0e08ff26be3cd7110883c5048b4500ff60f089f601000100130000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb898490e08ebe28d76 *0083c71c3b7b5c760cc7436c070000008b43f8ffe0c747e8bc490e088b46088947ecc747f4386b *0c088b46048947f8c747fcfcd111088d47e889078d77f483c5048b45008b40d4ebcae8490e08a4 *490e080000000000000000250000008cf3110884e91108444a0e08090002000000000011000300 *8d45fc3b4354730abe84e911088b43fcffe0837d000078118b7504c745fc184b0e0883ed048b06 *ebe7befcd1110883c5088b45008b40f0ebd78d7600be04d2110883c50c8b4500ff60ec89f6be04 *d2110883c50c8b4500ff60ec89f68b45042b460c8b560889550889450483c504e98dffffff90be *fcd1110883c50c8b4500ff60f089f6be8cf3110883c50cff2689f6e04a0e08e04a0e08d04a0e08 *e04a0e08e04a0e08b84a0e08a84a0e08984a0e08444a0e08620000002500030003000100000000 *001100000083c7183b7b5c7611c7436c06000000be8ce911088b43fcffe0837d00077f0a83ef18 *b874e50e08ebeec747ec844b0e088b45008947f0c747f87cdc0b08c747fcacf311088d47ec8907 *8d77f883c5048b45008b40ecebc09000000200140000008d45f43b435473058b43f8ffe08d45f8 *c700d46d10088970048b460483e8088945f483ed0cb8244b0e08ebdf0900020000000000110000 *0083c7183b7b5c7611c7436c06000000be90e911088b43fcffe08b550085d27513be00d2110883 *c50883ef188b45008b40f0ebe4c747ec284c0e088b45048947f08957f4c747f87cdc0b088b4504 *8947fc8d47ec89078d77f883c5088b45008b40ecebb49001000100160000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d10088970048b56084a8b46048945f48955f083ed10b8bc4b0e08eb *db546578742f526561642f4c65782e68733a3430397c66756e6374696f6e2076616c446967008d *76004cd21108804c0e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e899b101008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f4584c0e08be4cd2110883ed10b828101008ebc190909016000300000000 *00110000008d45f43b4354730abeace911088b43fcffe08b7508c745fce44d0e0883ed048b06eb *ed908b750883c510ff2689750883c504e9c9ffffff90244d0e08244d0e08000000004300000025 *0000008b45088945fc8975f8c74500444d0e0883ed08e9508bfeff444d0e08444d0e0800000000 *0300000025000000030000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *b8050c088b460489078b45048945fc8b45088945f88d47fc894508c74500704d0e0883ed08b8f4 *d50c08ebcf908b460889450c8b7604c74500784d0e08ff2689f6bc4d0e081c4d0e080000000083 *000000250000002e2e009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e839b001008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f400d21108c745f0e44d0e0883ed10b84cce0b08ebbf9094e911084c4e *0e080b000200000000001100010083c71c3b7b5c7611c7436c07000000bed0e911088b43fcffe0 *c747e808570e088b45008947ecc747f0a8570e088d47e88947f48b45048947f8c747fcc05e0c08 *8d47f089078d77fc83c5088b45008b40ecebc49001000100130000008d45f03b435473058b43f8 *ffe08d45f8c700d46d1008897004c745f400d211088b760483ed10b808121008ebde8d76000400 *0100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d683ed04b808 *121008ebe989f683c7143b7b5c760cc7436c050000008b43f8ffe0c747f0bc4e0e088b450c8947 *f4c747fcf84e0e088d47f089078d77fc83c5108b4500ebda04000100020000000e0000008d45fc *3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f87cdc0b088b46048947fc8b *450089078d47f88945008b760883ed04b808121008ebd98d760004000000120000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f860 *4f0e088b46088947fc8b460c89078d47f88945f48b46048945f08b761083ed10b808570e08ebc7 *9004000100010000000c0000008b760483c504ff2604000100010000000c00000083c71c3b7b5c *760cc7436c070000008b43fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f40c500e *088d47e88947f8c747fca05e0c088d47f489078d77fc83c5048b45008b40f0ebc489f624000000 *2400000083c71c3b7b5c761cc7436c07000000c7450078500e08c74320fe000000b8b03d1008ff *e0c747e8ac4f0e088b450c8947ec8977f08b45108947f48b45088947f8c747fc20500e088d47e8 *89078d77fc83c5148b4500ebcb9001000100130000008d45f03b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f400d211088b760483ed10b808121008ebde8d76000400010001000000 *0c0000008d45fc3b435473058b43fcffe08b55008b460489450089d683ed04b808121008ebe989 *f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f400d2 *11088b760483ed10b808121008ebde8d760004000100010000000c0000008d45fc3b435473058b *43fcffe08b55008b460489450089d683ed04b808121008ebe989f6030000002400000083c7143b *7b5c760cc7436c050000008b43f8ffe0837e042f763c837e04377616c747f040510e088b450c89 *47f4c747fc7c510e08eb348b460483e830c747f054dc0b088947f48d77f083ed0483ef0cb87850 *0e08ebbcc747f0d8500e088b450c8947f4c747fc14510e088d47f089078d77fc83c5108b4500eb *9889f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4 *00d211088b760483ed10b808121008ebde8d760004000100010000000c0000008d45fc3b435473 *058b43fcffe08b55008b460489450089d683ed04b808121008ebe989f601000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f400d211088b760483ed10b80812 *1008ebde8d760004000100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489 *450089d683ed04b808121008ebe989f6030000002400000083c7143b7b5c760cc7436c05000000 *8b43f8ffe0837e042f763c837e04397616c747f094520e088b450c8947f4c747fcd0520e08eb34 *8b460483e830c747f054dc0b088947f48d77f083ed0483ef0cb878500e08ebbcc747f02c520e08 *8b450c8947f4c747fc68520e088d47f089078d77fc83c5108b4500eb9889f6e9930000008d7600 *210000002400000083c7103b7b5c761cc7436c04000000c7450088530e08c74320ff000000b8b0 *3d1008ffe0837d04407630837d0446772a8b450483e837c747f454dc0b088947f8c747fc94b90b *088d47f489078d77fc83c5088b45008b40ecebc8bee0d0110883c50883ef108b45008b40f0ebb5 *8d760078530e08000000000000000000000100000001000d0000008d45f83b4354720883c7103b *7b5c760cc7436c040000008b43fcffe08b46048945fc837e0460762c83f86677278b45fc83e857 *c747f454dc0b088947f8c747fc94b90b088d47f489078d77fc8b45008b40ecebc683ed0883ef10 *b888530e08ebb98d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f400d211088b760483ed10b808121008ebde8d760004000100010000000c000000 *8d45fc3b435473058b43fcffe08b55008b460489450089d683ed04b808121008ebe989f683c714 *3b7b5c760cc7436c050000008b43f8ffe0c747f07c540e088b450c8947f4c747fcb8540e088d47 *f089078d77fc83c5108b4500ebda8b760483ed04e959fbffff9014550e08dc540e080000000003 *0000002500000001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970 *04c745f400d211088b760483ed10b808121008ebde8d760004000100010000000c0000008d45fc *3b435473058b43fcffe08b55008b460489450089d683ed04b808121008ebe989f683c7143b7b5c *760cc7436c050000008b43f8ffe0c747f03c550e088b450c8947f4c747fc78550e088d47f08907 *8d77fc83c5108b4500ebda8b760483ed04e999faffff90d4550e089c550e080000000003000000 *25000000030000002400000083c7103b7b5c760cc7436c040000008b43f8ffe0c747f410540e08 *8b46048947f8837e042f762e837e0439760c8d77f4c74500f4550e08eb268b460483e830c747fc *54dc0b0889078d77fc83ed04b878500e08ebbd8d77f4c7450034550e0883ef08b810540e08eba9 *8d76004c4e0e0804000000240001008b460483f80a742483f80a7f0783f8087409eb3083f81074 *1feb298b7504c74504a8510e0883c5048b06ffe08b7504c74504fc520e08ebed8b7504c74504fc *550e08ebe1be94e9110883c514ebda89f68b46048945008b55088b460889450889d6c745fc7456 *0e0883ed04ff268d7600c4560e081c4f0e084c4e0e0803000000250001004c4e0e080b00020001 *0000000c0001008d45f43b435473058b43fcffe08975fc8b55008b460489450089d6c745f8f856 *0e0883ed088b06ebe28d7600be78d6110883c5088b4500ff60e889f68b450489750489c6e9b7ba *01008d760044570e0834570e0800000000010000002500000004000100010000000c0000008d45 *fc3b435473058b43fcffe08b55008b460489450089d6c745fc68570e0883ed048b06ebe589f604 *000100020000000e0000008d45f43b4354720883c7083b7b5c760cc7436c020000008b43fcffe0 *c747fc74570e088b46088907c745fc08121008c745f850d111088b45008945f48d47fc8945008b *760483ed0cb808570e08ebcb900400010000000000110000008b7500c7450018580e08ff260000 *00002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcb8050c088b460489078d *77fc83c5048b45008b40f0ebe4909094e9110848580e0804000100000000001100010083c74c3b *7b5c7611c7436c13000000bedce911088b43fcffe0c747b8d0590e088b45008947bcc747c02c5a *0e088d47b88947c4c747cc645a0e088947d0c747d8a05a0e088d47c08947dc8d47cc8947e0c747 *e4045b0e088d47d88947e8c747eca05e0c088d47e48947f0c747f4645b0e088d47ec8947f8c747 *fca05e0c088d47f489078d77fc83c5048b45008b40f0eb868d760001000100130000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb804580e08ebe28d76 *0002000000150000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f4c745f0a4e911088b46048945ec83ed14b8f84c0e08ebd589f604000100020000000e0000008d *45fc3b4354720883c7143b7b5c760cc7436c050000008b43fcffe0c747f02c590e088b46048947 *f48b45008947f8c747fcfc6c0e088d47f089078d47fc8945008b760883ed04b808121008ebcc89 *f648580e0804000100010000000c0001008d45fc3b4354720883c7183b7b5c760cc7436c060000 *008b43fcffe0c747ecf8580e088b45008947f0c747f870590e088d47ec8947fc8b460489078b45 *008945fc8d47f889450083ed04b8604e0e08ebc98d760001000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f458f411088b760483ed0cb8d0590e08ebde8d76 *0001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f450f4 *11088b760483ed0cb8d0590e08ebde8d760003000100020000000e0000008b450083f858742283 *f858770783f84f740eeb1b83f86f740783f878740ceb0f8b760483c5048b06ffe08b7608ebf4be *78d6110883c5048b45008b40e8ebe99001000000240000008b45048b560489550489c683c504eb *a804000100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745 *fce85a0e0883ed048b06ebe589f60100000024000000837e0430750d8b750483c508b8a05e0c08 *ffe0be78d6110883c5088b45008b40e8ebee9004000100010000000c0000008d45fc3b43547305 *8b43fcffe08b55008b460489450089d6c745fc345b0e0883ed048b06ebe5909094e911086cf111 *085cf1110818f4110830f4110840f4110860f411088c5b0e08040001000000000011007f008d45 *fc3b4354720883c7083b7b5c7611c7436c02000000bee4e911088b43fcffe0c747fcd8640e088b *450089078d47fc894500c745fc10f4110883ed04b8604e0e08ebdb01000100130000008d45ec3b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4c745f0a4e91108c745ece0f3 *110883ed14b8f84c0e08ebd49083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8cc130e *088977fcc70734f111088d77f883c504b8d46d1008ebe18d76003c5c0e083c5c0e080000000000 *0000002500000001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970 *048b7604c745f4845c0e0883ed0c8b06ebe189f683c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8cc130e088977fcc70734f111088d77f883c504b8d46d1008ebe18d7600b85c0e08b85c *0e0800000000000000002500000001000100130000008d45f43b435473058b43f8ffe08d45f8c7 *00d46d10088970048b7604c745f4005d0e0883ed0c8b06ebe189f68b750483c514e9bd0f000090 *000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747 *f8cc130e088977fc8b450089078d77f883c508b8d46d1008ebe28d76008b45048945008975fcc7 *4504485d0e0883ed04e9c45e0000845d0e08845d0e08945b0e0801000000250001008b45048945 *008b45088945fc897508c74504b05d0e0883ed04e92678feff89f6b05d0e08b05d0e08945b0e08 *0200000025000100945b0e0802000000240001008b46088945fc8b45048945f88b4604894504c7 *4500e45d0e0883ed08e9e377feff8d7600945b0e0801000000240005008b45048945f8c745f468 *f411088b46088945008b4604894504be30f41108c745fcf05d0e0883ed10e9c7b701008d760094 *5b0e0802000000150005008d45e03b435473058b43f8ffe08d45f8c700d46d10088970048b4608 *8945f48b7604c745f0205e0e0883ed108b06ebdb83c7143b7b5c760cc7436c050000008b43f8ff *e0c747f05c5e0e088b45048947f48b45088947f8c747fc1c6d0e088d47f089078d77fc83c510a1 *ac6d1008ebd28b4504894500897504e91a77feff89f6cc5e0e08cc5e0e08000000000100000025 *000000905b0e0802000000150001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970 *048b46088945ecc745e8e0f311088b46048945f4c745f0f05e0e0883ed18b838c00e08ebce8d76 *0083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0fc5e0e088b450c8947f48b45088947 *f8c747fcfc6c0e088d47f089078d77fc83c510a1b06d1008ebd23c5f0e088c5e0e08905b0e0803 *00000025000b00c74500a4e911088b46048945fc8b460489450cc74504905f0e0883ed04e96257 *000089f6905f0e08345d0e08905b0e088400000025000b008b7504c74504c85f0e0883c504ff26 *90000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c7 *47f8cc130e088977fc8b450089078d77f883c508b8d46d1008ebe28d7600897500c74508e05f0e *08e9355c0000901c600e081c600e08945b0e0842000000250001008b45088945fc8975f8c74500 *40600e0883ed08e95478feff40600e0840600e08945b0e0802000000250001008b451089450089 *7510c745086c600e08e97375feff8d76006c600e086c600e08945b0e0844000000250001008b45 *0c8945fc8b45088945f889750cc7450098600e0883ed08e93e75feff89f698600e0898600e0894 *5b0e080400000025000100945b0e0802000000240001008b45008945f88b45088945f4897504c7 *45fccc600e0883ed0ce9fe74feff89f6945b0e0801000000240011008b45048945f8c745f428f4 *1108c745f0a4e91108c745ece0f311088b46088945008b4604894504c745fcd8600e0883ed14e9 *1687000089f6945b0e0802000000150011008d45dc3b435473058b43f8ffe08d45f8c700d46d10 *088970048b46088945f48b7604c745f004610e0883ed108b06ebdb83c7083b7b5c760cc7436c02 *0000008b43f8ffe0c747fc1c6d0e088b450489078d77fc83c508a1ac6d1008ebe58d7600000000 *002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc13 *0e088977fc8b450089078d77f883c508b8d46d1008ebe28d76008b45048945008975fcc74504b0 *610e0883ed04e95c5a0000ec610e08ec610e08945b0e0801000000250001008b45048945008b45 *088945fc897508c7450418620e0883ed04e9be73feff89f618620e0818620e08945b0e08020000 *0025000100945b0e0802000000240001008b46088945fc8b45048945f88b4604894504c745004c *620e0883ed08e97b73feff8d7600945b0e0801000000240005008b45048945f8c745f468f41108 *8b46088945008b4604894504be30f41108c745fc58620e0883ed10e95fb301008d7600945b0e08 *02000000150005008d45e03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f4 *8b7604c745f088620e0883ed108b06ebdb83c7143b7b5c760cc7436c050000008b43f8ffe0c747 *f0c4620e088b45048947f48b46048947f8c747fc1c6d0e088d47f089078d77fc83c508a1ac6d10 *08ebd2f4620e0878610e08945b0e08010000002500050083c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f848610e088b45108947fc8b460489078d47f88945148b7504c7451048630e0883 *c5108b06ebd58d760048630e08c85f0e08905b0e080500000025002b00905b0e08060000001200 *2b008d45e03b435473058b43f8ffe08d45f8c700d46d10088970048b46188945e48b46108945e8 *8b460c8945ec8b46088945f08b46048945f48b7614c745e09c630e0883ed208b06ebc3905b0e08 *04000100060000000b002b008d45fc3b4354720883c71c3b7b5c760cc7436c070000008b43fcff *e0c747e8a8630e088b46048947ec8b46088947f08b460c8947f48b46108947f88b46148947fc8b *450089078d47e88945008b761883ed04b808121008ebc18d7600905b0e0804000100050000000b *003b008d45fc3b4354720883c71c3b7b5c760cc7436c070000008b43fcffe0c747e800640e088b *46048947ec8b46088947f08b460c8947f48b46108947f88b45008947fc8b461489078d47e88945 *00be40f4110883ed04b808121008ebbf90905b0e0804000100010000000c003f008d45fc3b4354 *720883c7443b7b5c760cc7436c110000008b43fcffe0c747c0045c0e088b45008947c4c747cc8c *5c0e088d47c08947d0c747d8085d0e088947dcc747e4fc6c0e088947e8c747ec6c640e088947f0 *8d47cc8947f48d47d88947f88d47e48947fc8b460489078d47ec894500be18f4110883ed04b808 *121008eb9a68f3110878f5110858650e0800000200180003008d45f43b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8bd9801008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f478f5110883ed0cb8f8de0e08ebc668d6110890f51108 *acf51108c0650e080400010000000000110007008d45f43b4354720883c7203b7b5c7611c7436c *08000000befce911088b43fcffe0c747e4a0660e088b45008947e8c747f000670e088b45008947 *f4c747fc3c670e088d47f089078d47fc8945f8c745f490f511088d47e4894500c745fc6c670e08 *83ed0cb878e00e08ebb49001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d *1008897004c745f4bcf511088b760483ed10b808121008ebde8d760004000100010000000c0000 *008b760483c504ff26c8650e0801000100130001008d45f03b4354720883c7143b7b5c760cc743 *6c050000008b43f8ffe08d45f8c700d46d1008897004c747f050660e088b46048947f4c747fc8c *660e088d47f089078d47fc8945f4c745f0acf5110883ed10b878e00e08ebc20100010013000000 *8d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4a0f511088b760483ed10b8 *08121008ebde8d760004000100010000000c0000008b760483c504ff26897500e9ece9fdff4467 *0e0844670e0844670e0844670e0844670e08c0650e08010000002500010024f2110888f511086c *670e0804000100000000001100030083c7103b7b5c7611c7436c04000000be04ea11088b43fcff *e0c747f44c690e088b45008947f8c747fca05e0c088d47f489078d77fc83c5048b45008b40f0eb *d704000100020000000e0000008d45fc3b4354720883c7143b7b5c760cc7436c050000008b43fc *ffe0c747f07cdc0b088b46048947f48b45008947f8c747fcdc6c0e088d47f089078d47fc894500 *8b760883ed04b808121008ebcc89f670670e08420000002400010083c70c3b7b5c760cc7436c03 *0000008b43f8ffe0837e045f7526c747f8d0670e088977fc8b450489078d47f8894508c7450488 *f5110883c504b85c260d08ebd2be78d6110883c50c83ef0c8b45008b40e8ebbf908b7508c74500 *2c680e08ff2604000100020000000e0000008d45fc3b4354720883c7143b7b5c760cc7436c0500 *00008b43fcffe0c747f07cdc0b088b46048947f48b45008947f8c747fcdc6c0e088d47f089078d *47fc8945008b760883ed04b808121008ebcc89f683c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f898680e088b45088947fc8b450489078d47f8894508c7450488f5110883c504b85c260d *08ebd58d7600e8680e0880680e0870670e0802000000250001006c670e0804000100010000000c *0003008d45f03b435473058b43fcffe08b45008945f48b46048945fcbe24f21108c745f83c690e *0883ed10b808121008ebdc90a4e811087c690e0800000200180001008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e89d9401008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f4dcf51108c745f0d8f5110883ed10b8dc330e08 *ebbf90e0f511084cec1108e8690e0804000100000000001100030083c7203b7b5c7611c7436c08 *000000be4cec11088b43fcffe0c747e4586a0e088b45008947e8c747f0bc6c0e088d47e48947f4 *c747f8686c0e088b45008947fc8d47f089078d77f883c5048b4500ebc701000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f400d211088b760483ed10b80812 *1008ebde8d760004000100020000000e0000008d45fc3b4354720883c70c3b7b5c760cc7436c03 *0000008b43fcffe0c747f87cdc0b088b46088947fc8b450089078d47f88945008b760483ed04b8 *08121008ebd98d76008b750883c514ff2604000100020000000e0000008d45fc3b4354720883c7 *0c3b7b5c760cc7436c030000008b43fcffe0c747f87cdc0b088b46088947fc8b450089078d47f8 *8945008b760483ed04b808121008ebd98d760083c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8ec6a0e088b45108947fc8b450489078b450c894510c7450c081210088d47f889450883c5 *08b8006a0e08ebcf90306b0e08d86a0e08ec690e080400000025000100ec690e08040000002400 *010083c70c3b7b5c760cc7436c030000008b43f8ffe0837e042275168b450489750489c6c74500 *886b0e0883ef0c8b06ebe2c747f8946a0e088b45108947fc89378b450c894510c7450c08121008 *8d47f889450883c508b8006a0e08ebb6ec690e0803000000240001008b46088945008b7604c745 *fc946b0e0883ed04ff268d7600ec690e0804000100030000000b0001008d45f03b435473058b43 *fcffe08b460c8945f88b46088945fc8b55008b460489450089d6c745f4fc6b0e0883ed0c8b06eb *d989f6e8690e0804000100020000000e00030083c71c3b7b5c760cc7436c070000008b43fcffe0 *c747e88c6b10088b45008947ec8b46088947f0c747f4246c0e088b46048947f88b45008947fc8d *47e889078d47f4894500b810ed0e08ebc601000000020001008b4500ff60ec89f6010000000900 *01008b4500ff60ec909001000000020003008b4500ff60e489f601000000090003008b4500ff60 *e4909001000000020005008b4500ff60dc89f601000000090005008b4500ff60dc909001000000 *020006008b4500ff60d889f601000000090006008b4500ff60d89090e8f51108346d0e08000002 *00180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e8e59001008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4f0f511 *0883ed0cb88ce80b08ebc60300020000000000110000008b450083c504890424e88a27f6ff89c6 *ff65009004000100000000001100000083c7203b7b5c7611c7436c08000000be78ec11088b43fc *ffe0c747e4906e0e088b45008947e8c747f0f86e0e088b45008947f48d47e48947f8c747fc3c6f *0e088d47f089078d77fc83c5048b4500ebc701000100130000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d1008897004c745f4a0d711088b760483ed10b808121008ebde8d760000000000 *2400000083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f81c6e0e088b46248947fc8d47 *f88945008b761883ed04b808121008ebde01000100130000008d45f03b435473058b43f8ffe08d *45f8c700d46d10088970048b7604c745f4546e0e0883ed0c8b06ebe189f602000000240000008b *45088b55048955088945048b7608e93ca7010002000000240000008b7604c74500c46e0e08ff26 *04000100020000000e0000008d45f83b435473058b43fcffe08b46088945fc8b7604c745f8e06e *0e0883ed088b06ebe70000000024000000be0cd2110883c504ff6500900b000300010000000c00 *00008d45f83b435473058b43fcffe08b45008945fc8b45048945008b46048945f8c74504246f0e *0883ed08b808880d08ebdb0b00030000000000110000008d45ec3b4354730abe7cec11088b43fc *ffe0c745f8000000008b45008945f4c745fc18710e0883ed0cb804ee0b08ebe0be0cd2110883c5 *10ff65009084010000240000000fbe4e048b550c8b4510880c10ff45108b450489450c8b750883 *c50ceb3a89f68b46088945008b7604c745fcbc6f0e0883ed04ff268d7600dc6f0e08a86f0e0800 *000000c3000000250000000a000300000001000d0000008d45f43b435473058b43fcffe08975fc *8b55008b460489450089d6c745f808700e0883ed088b06ebe28d7600420000002400000083c50c *ff650089f6640000002400000083c71c3b7b5c7615c7436c07000000c74320fe000000b8b03d10 *08ffe0c747e854dc0b088b45088947ecc747f0e0060c088b45048947f4c747f8e4bb0b088d47f0 *8947fc8d47e889078d47f88945048b7510c7450848700e08b8e8131008ebbb2300000024000000 *83c7083b7b5c7615c7436c02000000c74320fe000000b8b03d1008ffe08d5608c747fc14700e08 *8917c745f8000000008b45088945f48955008975088d77fcc745fc58700e0883ed0cb814700e08 *ebcb0200000024000000897500c745fcc0700e0883ed04e9a2d1010090906d616c6c6f63009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8ed8c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f02c710e0883ed10b84cce0b08ebbf906f7574206f66206d656d6f72790089f60000 *0200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c *1008893424e8798c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d2 *1108c745f098710e0883ed10b84cce0b08ebbf904572726f7220696e20617272617920696e6465 *78008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8fd8b01008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f00c720e0883ed10b84cce0b08ebbf90040002000000000011000000 *8b7500c74500bc720e08ff260000000024000000be0cd2110883c504ff65009000000000240000 *008b7604c74500a8720e08e9a5e40100905072656c7564652e456e756d2e707265647b496e747d *3a20747269656420746f2074616b6520607072656427206f66206d696e426f756e64008d760000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8198b01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0cc720e0883ed10b84cce0b08ebbf905072656c7564652e456e756d2e737563637b *496e747d3a20747269656420746f2074616b6520607375636327206f66206d6178426f756e6400 *8d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8798a01008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f06c730e0883ed10b84cce0b08ebbf900f000300000000001100000083c7 *0c3b7b5c7611c7436c03000000bef8ec11088b43fcffe0c747f89c740e088b45088947fc8b4504 *89078b45008945088d77f883c508b89c740e08ebd989f601000200120000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b460803460c8945f48b760483ed0cb89c740e08ebdc *9003000100000002001000000083c7243b7b5c760cc7436c090000008b43fcffe08b45003b4604 *7c3dc747e060740e088977e48b45008947e88b46088947ecc747f054dc0b088b45008947f4c747 *f87cdc0b088d47f08947fc8d47e089078d77f883c504eb2ac747e054dc0b088b45008947e4c747 *e87cdc0b088d47e08947ecc747f000d211088d77e883c50483ef108b45008b40eceb87900f0003 *00000000001100000083c70c3b7b5c7611c7436c03000000befcec11088b43fcffe0c747f8b875 *0e088b45088947fc8b450489078b45008945088d77f883c508b8b8750e08ebd989f60100020012 *0000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460803460c8945f48b76 *0483ed0cb8b8750e08ebdc9003000100000002001000000083c7243b7b5c760cc7436c09000000 *8b43fcffe08b45003b46047f3dc747e07c750e088977e48b45008947e88b46088947ecc747f054 *dc0b088b45008947f4c747f87cdc0b088d47f08947fc8d47e089078d77f883c504eb2ac747e054 *dc0b088b45008947e4c747e87cdc0b088d47e08947ecc747f000d211088d77e883c50483ef108b *45008b40eceb8790a8760e08850300000000000000000500000000001100000083c7143b7b5c76 *11c7436c05000000be00ed11088b43fcffe0c747f0f4760e088b45048947f48b45008947f88b45 *108947fc8b450c89078b45088945108d77f083c510b8f4760e08ebcd89f6e9afffffff8d760001 *000200120000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460803460c89 *45f48b760483ed0cb8f4760e08ebdc9003000100020002000b0000008d45f83b4354720883c718 *3b7b5c760cc7436c060000008b43fcffe08b45003b460c7c36c747ecb8760e088977f08b450089 *47f48b46108947f8c747fc54dc0b088b450089078d47ec8945008d47fc8945fc8b760883ed08eb *22c747ec54dc0b088b45008947f08b46048945008d47ec8945fc8b760883ed0883ef10b8141610 *08eb9790dc770e08850300000000000000000500000000001100000083c7143b7b5c7611c7436c *05000000be04ed11088b43fcffe0c747f028780e088b45048947f48b45008947f88b45108947fc *8b450c89078b45088945108d77f083c510b828780e08ebcd89f6e9afffffff8d76000100020012 *0000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b460803460c8945f48b76 *0483ed0cb828780e08ebdc9003000100020002000b0000008d45f83b4354720883c7183b7b5c76 *0cc7436c060000008b43fcffe08b45003b460c7f36c747ecec770e088977f08b45008947f48b46 *108947f8c747fc54dc0b088b450089078d47ec8945008d47fc8945fc8b760883ed08eb22c747ec *54dc0b088b45008947f08b46048945008d47ec8945fc8b760883ed0883ef10b814161008eb9790 *5072656c7564652e756e646566696e65640089f600000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8618501008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0ac780e0883ed10b84cce0b08 *ebbf9094e111084cf111083cf1110824790e080500010000000000110007008d45f03b4354730a *be2ced11088b43fcffe08b4500894424088b442408894328c74500b07f0e08b81c511008ebe289 *f6210000002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe089f00faf4504c747 *fc54dc0b0889078d77fc83c508b8d46d1008ebe289f628790e08210000002400010083c7083b7b *5c760ec7436c02000000b8f0371008ffe08b450485c07516c747fc54dc0b0889378d77fc83c508 *b8d46d1008ebe185c07f0fbe4cf1110883c50883ef088b06ebce48c745fc020000008945f8c745 *f41cf61108897504c7450078790e0883ed0c83ef08b84cbf0e08eba59028790e08010002001200 *01008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b4604894304 *8b760cc745f0b8790e0883ed10b8e4501008ebd28d76002c790e0800000200140001008d45ec3b *435473058b43f8ffe08d45f8c700d46d10088970048b4604f7d87507be34f11108eb0985c07f0c *be3cf1110883ed088b06ebd448c745f40cf611088945f0c745ec0cf6110883ed14b870be0e08eb *b890000000002400000083c7083b7b5c7615c7436c02000000c74320ff000100b8b03d1008ffe0 *c747fc3ce00b088b4500894424048b442404894424088b44240889078d77fc83c508b8d46d1008 *ebd589f68b56048b4504c74504d87a0e0883c50489442404891424e8807c0100d95c24148b4424 *14894424188b442418894424148b4424148945fc83ed04ff65048d7600000000002400000083c7 *083b7b5c7615c7436c02000000c74320ff000100b8b03d1008ffe0c747fc3ce00b088b45008944 *24048b442404894424088b44240889078d77fc83c508b8d46d1008ebd589f68b4e088b560483c2 *088b4504c74504687b0e0883c5048944240889542404890c24e85f7b0100d95c24148b44241489 *4424188b442418894424148b4424148945fc83ed04ff650490b07b0e08207b0e08000000002100 *00002500000001000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46088945f48b7604c745f00c7c0e0883ed108b06ebdb01000100130000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb830d40c08ebe28d7600210000 *002400000083c7183b7b5c7615c7436c06000000c74320fe000001b8b03d1008ffe0c747ec147c *0e088b45008947f08b45088947f4c747f84c7c0e088977fc8d47ec8945088d77f883c5088b4504 *ebd090440100002400000083c70c3b7b5c761cc7436c03000000c74500d47c0e08c74320ff0000 *00b8b03d1008ffe0c747f8ccdc0c088b450c8947fc8b450889078b45048945088d47f8894504c7 *450c807c0e0883c504b838b40e08ebcf90000000002400000083c7083b7b5c7615c7436c020000 *00c74320ff000100b8b03d1008ffe0c747fc3ce00b088b4500894424048b442404894424088b44 *240889078d77fc83c508b8d46d1008ebd589f68b56048b4504c74504307d0e0883c50489442404 *891424e8287a0100d95c24148b442414894424188b442418894424148b4424148945fc83ed04ff *65048d7600000000002400000083c7083b7b5c7615c7436c02000000c74320ff000100b8b03d10 *08ffe0c747fc3ce00b088b4500894424048b442404894424088b44240889078d77fc83c508b8d4 *6d1008ebd589f68b4e088b560483c2088b4504c74504c07d0e0883c5048944240889542404890c *24e807790100d95c24148b442414894424188b442418894424148b4424148945fc83ed04ff6504 *90087e0e08787d0e0800000000210000002500000001000100160000008d45f03b435473058b43 *f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f0647e0e0883ed108b06ebdb01 *000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483 *ed0cb830d40c08ebe28d7600210000002400000083c7183b7b5c760cc7436c060000008b43f8ff *e0c747ec6c7e0e088b46088947f08b45048947f4c747f8a47e0e088b46048947fc8d47ec894504 *8d77f883c5048b4504ebcd8d760024790e08e401000024000100be94e11108c7450cd87e0e0883 *c508e95c880100837e04007507b82c7f0e08ffe0b8d47c0e08ebf724790e084401000024000100 *85f67507b82c7f0e08ffe0b8d47c0e08ebf789f6c74308000000008b46048943048b7608c74500 *607f0e08e9a8d00100747f0e08407f0e0824790e08440100002500010024790e08000000002400 *070083c7103b7b5c7615c7436c04000000c74320ff000101b8b03d1008ffe085f67926c747f47c *7a0e088977f88975088d47f48945fc89c6c745f8a47f0e0883ed0883ef048b06ebd4c747f4347a *0e088b45048947f88977fc8b45008907c7450814f611088d77f483c5088b4504ebad9090180005 *00000000001100000083c7143b7b5c7611c7436c05000000be34ed11088b43fcffe0c747f03081 *0e088b45108947f48b45088947f8c747fc94b90b088b451089078d47f08945108b450c8945088b *450489450c8b45008945048d77fc83c5048b4510ebbc9083c7083b7b5c760cc7436c020000008b *43f8ffe0c747fc94b90b088b460489078d77fc83c504a1c06d1008ebe58d760083c7083b7b5c76 *0cc7436c020000008b43f8ffe0c747fc94b90b088b460489078d77fc83c504a1c06d1008ebe58d *7600b8800e0888800e080000000000000000250000008b7504c74504fc800e0883c504ff269083 *c508ff268d76000c810e08fc800e0800000000010000002500000002000000150000008d45f03b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b7608c745f028810e0883ed *108b06ebdb666c757368526561644275666665720000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8b17c01008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f060810e0883ed10b84cce0b *08ebbf9068616e646c652069732066696e616c697a65640000000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8397c01008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0d4810e0883ed10b8 *4cce0b08ebbf90d4f21108f4f211084c820e0800000200180003008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c97b01008d47f8894604c706 *245b10088d55f8c702d46d1008894204bed4f21108c745f4fc820e0883ed0c8b06ebc489f62100 *00002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040b4604c747fc84ed0b08 *89078d77fc83c508b8d46d1008ebe250820e0800000000240001008b4604894500bef4f21108c7 *45fcc0820e0883ed04ff2690a4ed110804f3110814830e0800000200180003008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8017b01008d47f8 *894604c706245b10088d55f8c702d46d1008894204bea4ed1108c745f4c4830e0883ed0c8b06eb *c489f6210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040b4604c747 *fc84ed0b0889078d77fc83c508b8d46d1008ebe218830e0800000000240001008b4604894500be *04f31108c745fc88830e0883ed04ff269019000600000000001100000083c7243b7b5c7611c743 *6c09000000bec4ed11088b43fcffe0c747e064840e088b45048947e4c747ec14860e088b450489 *47f08b450c8947f48b45108947f88b45148947fc8b450889078d47e08945148d47ec8945108b45 *0089450cc74508c8e11108be9ce0110883c504b87c1d1008eba589f601000100130000008d45f0 *3b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f4bed4ec110883ed10b80812 *1008ebdd89f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d *1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d7600e4010000240000008b450489 *4424188b450c8b4d088b5604c745109c840e0883c5108954240801c8894424048b442418890424 *e8540ff6ff89c6ff65008d7600a4010000240000008b55088b460489450889d6c74500d8840e08 *ff2624010000240000008b550c8b460489450c89d6c7450018850e08ff2603000200030001000b *0000008d45f03b435473058b43fcffe08b46108945f48b460c8945f88b46088945fc8b7604c745 *f034850e0883ed108b06ebdb8b7504c7450400000000e9958a0100908b7504c7450401000000e9 *858a01009094850e0884850e08000000000100000025000000040000002400000083c7143b7b5c *760cc7436c050000008b43f8ffe0c747f054850e088b45108947f48b450c8947f88b45088947fc *8b460489078d47f08945108b7504c7450cb8850e0883c50c8b06ebc98d76000500000012000000 *8d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46148945e88b46108945ec8b46 *0c8945f08b46088945f48b7604c745e4c0850e0883ed1c8b06ebc9909094ed110858860e080400 *0100000000001100010083c7283b7b5c7611c7436c0a000000bec8ed11088b43fcffe0c747dc94 *b90b088b45008947e0c747e4ece80b08c747e8e0d01108c747ecd8e31108c747f000d21108c747 *f494ed11088d47dc8947f8c747fc9ce90b088d47e489078d47fc894500b874e80b08ebaf80e211 *08eced110824d91108d4860e0817000500000000001100070083c7083b7b5c7611c7436c020000 *00be14ee11088b43fcffe0c747fc848a0e088b450c89078d47fc89450cb868ab0d08ebe589f6be *8ce2110883c50cff650090be8ce2110883c50cff6500908b750483c504e9c18a010090be78e211 *0883c50cff650090be78e2110883c50cff65009001000100130000008d45f43b435473058b43f8 *ffe08d45f8c700d46d10088970048b46048945f483ed0cb804c40c08ebe28d7600e9330200008d *76008b751883c51ce9758101009001000100130000008d45f43b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46048945f483ed0cb8b4c30c08ebe28d760001000100130000008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb808c30c08ebe28d76 *00000000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec14c50c088b4604 *8947f0c747f414da11088b460c8947f88b46108947fc8b461489078d77ec83c504b8d46d1008eb *cc89f601000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604 *c745f418880e0883ed0c8b06ebe189f6830000002400000083c70c3b7b5c7615c7436c03000000 *c74320fe000000b8b03d1008ffe0c747f868880e088977fc8b55048d47f88942048b750883c50c *b81c091008ebde8d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ecb0870e088b45 *1c8947f0c747f8e4870e088b451c8947fc8b55088b45048945088955048b450c894500c7450c18 *da11088b45108945fc8d47ec8945f88d47f88945f4c745109c880e0883ed0cb83c980c08eba889 *f6dc880e089c870e08dc860e08e700000025000100dc860e0803000000240001008b46148945f4 *8b46108945f88b460c8945fc8b46048945008b7608c745f05c890e0883ed10ff2690dc860e0802 *000000240001008b46048b500489450089d6c745fc68890e0883ed04ff269094870e0800000000 *dc860e0800000100030000000b0001008d45d43b435473058b43fcffe08b46088945f88b460489 *45fc8b760cc745f49c890e0883ed0c8b06ebe189f683c7283b7b5c760cc7436c0a0000008b43f8 *ffe0c747dc8c6b10088b45048947e08b45088947e4c747e868870e088b45088947ecc747f4cc89 *0e088b45088947f88d47dc8947fc8d47e889078d77f483c50c8b4500ebbb90f8890e0854870e08 *48870e083c870e0830870e0824870e08d4860e080200000025000700d4860e0804000100010000 *000c0007008d45f43b435473058b43fcffe08b45008945f48b46048945fcc745f8748a0e0883ed *0cb88cc30c08ebe1909000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8717301008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f4188b0e0883ed0cbe010000008b4500ebc390000000002400000083c708 *3b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83 *c504b8d46d1008ebe8900cd111084c8b0e0800000200180001008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cd7201008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f40cd1110883ed0cb8c46d0e08ebc694ed110824d911 *08c0e21108b08b0e080b00030000000000110007008d45f43b4354730abe3cee11088b43fcffe0 *8b7504c745fce08d0e0883ed04b82c531008ebea89f6b08b0e0801000100130001008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb86c860e08ebe28d7600 *0000000024000000be0cd2110883c504ff65009083c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8008c0e088b45088947fc8d47f88943048b750cc7450c348c0e0883c50cb87c541008eb *d790b48b0e0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46048945f4be54e2110883ed10b808121008ebdd89f6b08b0e0801000100130001008d45f43b *435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb86c860e08ebe28d76 *000000000024000000be0cd2110883c504ff650090b08b0e08020000002400010083c70c3b7b5c *7615c7436c03000000c74320fe000000b8b03d1008ffe0c747f8c48c0e088b45048947fc8d47f8 *8943048b7508c74508f88c0e0883c508b87c541008ebd7b08b0e0803000000240005008b450489 *4500c74504108d0e08e9ba25ffff89f683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *888c0e088b45048947fcc7430434f611088d77f8c74500608d0e08b870331008ebd98d7600748d *0e08748d0e08748d0e08748d0e08748d0e08408c0e08b08b0e080300000025000700b08b0e0802 *000000240007008975f8897500c745fcd48d0e0883ed08e99735feff909090a8e211083cee1108 *f88d0e081800060000000000110003008d45f03b4354720883c70c3b7b5c7611c7436c03000000 *be44ee11088b43fcffe0c747f8a88e0e088b450c8947fc8d47f88945f88b45008945f4c745fc4c *910e0883ed0cb894b10d08ebd490be14da110883c504ff25c46d100889f6be18da110883c504ff *25c06d100889f66c8e0e086c8e0e086c8e0e085c8e0e086c8e0e086c8e0e080000000000000000 *2500000001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b76 *04c745f4a08e0e0883ed0c8b06ebe189f6060200002400000083c7243b7b5c760cc7436c090000 *008b43f8ffe0c747e02cc50c088b45188947e48b45108947e88b450c8947ec8b45088947f08b46 *048947f48b45048947f8c747fce0d011088b451489078d77e083c51cb8d46d1008ebba06000000 *240000008b55148b460489451489d6c74500dc8e0e08ff2607000000120000008d45dc3b435473 *058b43f8ffe08d45f8c700d46d10088970048b461c8945e08b46188945e48b46148945e88b4610 *8945ec8b460c8945f08b46088945f48b7604c745dc3c8f0e0883ed248b06ebbd89f6eb1a89f6a8 *8f0e0800000000fc8d0e0800000100020000000e0001008d45f83b435473058b43fcffe08b4604 *8945fc8b46088945f883ed08b8cc8b0e08ebe890430000002400000083c70c3b7b5c7615c7436c *03000000c74320fe000000b8b03d1008ffe0c747f830f80d088b45048947fc8b450c89078d77f8 *83c5108b4500ebe189f6fc8d0e08430000002400010083c70c3b7b5c760ec7436c03000000b894 *361008ffe0c747f8c48f0e088b450c8947fc8b450489078d47f8894308c743040cd211088b750c *c74500f08f0e08b8c0441008ebce89f6fc8d0e08080000002400010083c7203b7b5c7615c7436c *08000000c74320fe000000b8b03d1008ffe0c747e4588f0e088b45108947e88b451c8947ec8b45 *0c8947f08b45208947f48b45148947f88b45088947fc8b450489078975208d47e4894304c74514 *38900e0883c514b87c541008ebb490fc8d0e080700000024000100897500c745fc8c900e0883ed *04e9cec1010089f6fc8d0e0805000000240001008b46048945008b46088945fcbebce31108c745 *f800910e0883ed08e95cb20100fc8d0e080500000024000100c7450020910e08ff2690909024f6 *11084cee1108d8910e08070c000058910e080000080000000000110003008d45e43b4354720883 *c70c3b7b5c7611c7436c03000000be4cee11088b43fcffe08b45182b4514751dc747f8c4960e08 *8b450c8947fc8b451489078d77f883c51c8b4500ebd98b7500894500c745fc0c960e0883ed0483 *ef0c8b06ebc28d7600e99bffffff8d7600000000002400000083c7083b7b5c7615c7436c020000 *00c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760003 *000200010003000b0000008b460c894424188b460483c0088b4e088b5610c74500e8910e088954 *240801c8894424048b442418890424e81407f6ff89c6ff65008d7600eb2e89f600000000240000 *00be0cd2110883c504ff65009060920e08000000000000000000000100000001000d0000008d45 *fc3b435473058b43fcffe08b7604c745fc6c920e0883ed04b830571008ebea8d76006200000024 *00000083c7183b7b5c760cc7436c060000008b43f8ffe08b5508035504c747ec14c50c088b4604 *8947f08b46088947f4c747f8000000008957fc8b461489078d77ec83c50cb8d46d1008ebc98d76 *0001000200120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945 *f08b46088945f48b7604c745ecbc920e0883ed148b06ebd589f68b4520034510894520c74510fc *d111088b450489450c83c50ce912feffff89f6620000002400000083c7183b7b5c760cc7436c06 *0000008b43f8ffe08b5508035504c747ec14c50c088b46048947f08b46088947f4c747f8000000 *008957fc8b461489078d77ec83c50cb8d46d1008ebc98d760001000200120000008d45ec3b4354 *73058b43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604c745ec7093 *0e0883ed148b06ebd589f683c7103b7b5c760cc7436c040000008b43f8ffe0c747f4c4930e088b *45188947f88b45208947fc8b451089078d77f483c5288b4500ebdb90fc930e0848930e085c910e *08c931000025000100210000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0c747 *ec14c50c088b46048947f08b46088947f4c747f8000000008b45048947fc8b461489078d77ec83 *c508b8d46d1008ebcc89f601000100160000008d45f03b435473058b43f8ffe08d45f8c700d46d *10088970048b46088945f48b7604c745f050940e0883ed108b06ebdb5c910e08c9300000240001 *0083c7103b7b5c760cc7436c040000008b43f8ffe08b560485d2752f8b552085d2750d83c52883 *ef10b8d4f50e08ebe3c747f4a0940e088b45188947f88957fc8d77f483c52883ef04eb343b550c *7d148b7510895510c7450048940e0883ef108b06ebafc747f410930e088b45188947f88b452089 *47fc89178d77f483c5288b4500eb8f905c910e08c930000024000100c74500dc940e08ff268d76 *0058910e0889300000240003008b45088945fc8975f8c745f424f61108c745f0c8e11108c74500 *6c950e0883ed10e952f3feff89f6c745fc000000008b7504c7450484950e08c745005873100883 *ed08e95c7a0100c745fc010000008b7504c7450484950e08c745005873100883ed08e93c7a0100 *cc950e08ac950e0858910e080a6100002500030058910e08270c00002400030083c71c3b7b5c76 *0cc7436c070000008b43f8ffe0c747e828920e088b45148947ec8b45188947f08b46048947f48b *45048947f8c747fc90920e088b460489078d47fc8945008975fc8d47e88945f88b750cc745f400 *960e0883ed0c8b06ebb390210000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0 *c747ec14c50c088b46048947f08b46088947f4c747f8000000008b45048947fc8b461489078d77 *ec83c508b8d46d1008ebcc89f601000100160000008d45f03b435473058b43f8ffe08d45f8c700 *d46d10088970048b46088945f48b7604c745f074960e0883ed108b06ebdb00000200180000008d *45ec3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e82d *6701008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4d0970e0883ed0cc704 *2401000000e8b41c01008d4df8890189510489cd8b4508ebb20000000024000000c74424040000 *0000c704240000000083c70c3b7b5c7615c7436c03000000c74320ff000200b8b03d1008ffe0c7 *47f89ced0b088d57fc8b4d00890c248b450489442404890a8b4c2404894a048d77f883c50cb8d4 *6d1008ebd18d76000000000024000000c744241400000000c7442410000000008b550089542410 *8b450489442414c745086c970e0883c5088b4424108b54241489042489542404e8981a01008d4d *f8890189510489cdff650890909054ee11081c980e080400010000000000110001008d45f43b43 *54730abe64ee11088b43fcffe08b7500c74500c4980e088b06ebf06200000024000000c744240c *00000000c744240800000000c744241400000000c7442410000000008d55fc8d45048b08894c24 *108b400489442414890a8b4c2414894a048d55048d46048b08894c24088b40048944240c890a8b *4c240c894a0483ed04e9e81100001c980e080000000024000100c744240400000000c704240000 *00008d55fc8d46048b08890c248b400489442404890a8b4c2404894a04be54ee1108c745f85898 *0e0883ed08ff269077726974654368756e6b009000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8156501008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f000990e0883ed10b84cce0b08 *ebbf90726561644368756e6b0089f600000200180000008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8a56401008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f070990e0883ed10b84cce0b08ebbf90009a *0e080000000000000000000001000000000011000000be0cd21108ff6500e9f3ffffff9090906e *6f2062756666657221009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e80d6401008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f400d21108c745f0089a0e0883ed10b84cce0b08ebbf906c617a795265 *6164008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e89d6301008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0789a0e0883ed10b84cce0b08ebbf90696c6c6567616c2068616e *646c6520747970650000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8256301008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f0e89a0e0883ed10b84cce0b08ebbf900400020000000000 *1100000083c70c3b7b5c7611c7436c03000000bee0ee11088b43fcffe0c747f8e4bb0b088b4500 *8947fcc70700d211088d77f883c5048b4500ebe0909cee1108289c0e0804010000a49b0e080000 *0400000000001100010083c7283b7b5c7611c7436c0a000000bee4ee11088b43fcffe0c747dc4c *9c0e088b45008947e0c747e4749c0e088b45088947e8c747f0ac9f0e088b45008947f48d47dc89 *47f88d47e48947fc8b45048907c7450894ee11088d77f083c508b8ac9f0e08ebb28d7600e993ff *ffff8d7600eb1a89f6309c0e08000000000000000000000100010000000c0000008d45fc3b4354 *73058b43fcffe08b46048945fc83ed04b874f40e08ebee8d760001000100130000008d45f43b43 *5473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8ec060e08ebe28d7600 *000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747 *fc84ed0b0889378d77fc83c5048b4500ebea8d7600e4010000240000008b4504894424188b4508 *8b4e048b550cc74510a89c0e0883c5108954240801c8894424048b442418890424e858fcf5ff89 *c6ff65008d7600a4010000240000008b55088b460489450889d6c74500e49c0e08ff2603000200 *020002000b0000008d45f03b435473058b43fcffe08b46108945f48b46088945f88b460c8945fc *8b7604c745f0249d0e0883ed108b06ebdb8b7504c7450400000000e9a5720100908b7504c74504 *01000000e99572010090849d0e08749d0e08000000000100000025000000840000002400000083 *c7143b7b5c760cc7436c050000008b43f8ffe0c747f0449d0e088b45108947f48b45088947f88b *450c8947fc8b460489078d47f08945108b7504c7450ca89d0e0883c50c8b06ebc98d7600040001 *00120000008d45e43b435473058b43f8ffe08d45f8c700d46d10088970048b46108945e88b460c *8945ec8b46148945f08b46088945f48b7604c745e4b09d0e0883ed1c8b06ebc989f6e903010000 *8d7600210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4604034504c747 *fc54dc0b0889078d77fc83c508b8d46d1008ebe201000100160000008d45f03b435473058b43f8 *ffe08d45f8c700d46d10088970048b46088945f48b7604c745f0589e0e0883ed108b06ebdb8300 *00002400000083c70c3b7b5c760cc7436c030000008b43f8ffe08b4e0485c9750e8b750883c510 *83ef0c8b4500ebe98b450c29c8c747f8909e0e088b55088957fc890fc7450c1c0910088945088b *75048d47f889450483c504b8ac9f0e08ebb889f68300000024000000c74500c89e0e08ff268d76 *00489e0e0800000000a49b0e0800000100040001000b0001008d45e03b435473058b43fcffe08b *46048945ec8b460c8945e8c745e49cee1108c745e0c8e111088b46108945f48b46088945f88b46 *148945fcc745f02c9f0e0883ed20b8fc880d08ebc189f6a49b0e080a000200040000000b000100 *83c7303b7b5c760cc7436c0c0000008b43fcffe0837d04007e51c747d4049e0e088b46048947d8 *8b460c8947dc8b45008947e08b46108947e48b45048947e8c747ec509f0e088b46088947f08b45 *008947f48d47d48947f88977fc8b450489078d77ec83c5088b4500eba78b4500894504bef0d911 *0883ef30b808121008eb920400020000000000110000008d45fc3b4354730abeecee11088b43fc *ffe08b7500c74500a0a00e088b06ebf001000000240000008b06668378fe04750dbee0d0110883 *c5088b4500ffe08b750483c508b8c0351008ebf19001000000240000008b7608c7450060a00e08 *ff2600000000240000008b06668378fe0975148975008b7604c745fc8ca00e0883ed048b06ffe0 *897500b874e80b08ebf4903a20009000000200180000008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8555d01008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f0c8a00e0883ed10b84cce0b08ebbf902028 *009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e8ed5c01008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f400d21108c745f030a10e0883ed10b84cce0b08ebbf903c3c6c6f6f703e3e008d7600000002 *00180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e87d5c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d211 *08c745f098a10e0883ed10b84cce0b08ebbf90756e6b6e6f776e20657863657074696f6e0089f6 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8055c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f008a20e0883ed10b84cce0b08ebbf9074687265616420626c6f636b656420696e *646566696e6974656c790000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8855b01008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f400d21108c745f080a20e0883ed10b84cce0b08ebbf9061726974686d *65746963206f766572666c6f770000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e80d5b01008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f000a30e0883ed10b84cce0b08ebbf90617269 *74686d6574696320756e646572666c6f77008d760000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8915a01008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f078a30e0883ed10b84cce0b *08ebbf906c6f7373206f6620707265636973696f6e0089f600000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8195a01008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0f4a30e0883ed10b8 *4cce0b08ebbf90646976696465206279207a65726f009000000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a55901008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f06ca40e0883ed10b84c *ce0b08ebbf9064656e6f726d616c008d760000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8355901008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0e0a40e0883ed10b84cce0b08ebbf *9068656170206f766572666c6f770089f600000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c15801008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f050a50e0883ed10b84cce0b08ebbf90 *746872656164206b696c6c65640089f600000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e84d5801008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0c4a50e0883ed10b84cce0b08ebbf9061 *7272617920696e646578206f7574206f662072616e6765008d760000000200180000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cd570100 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f038a60e0883 *ed10b84cce0b08ebbf90756e646566696e656420617272617920656c656d656e74000000020018 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e8515701008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c7 *45f0b8a60e0883ed10b84cce0b08ebbf907b68616e646c653a200089f600000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e156 *01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f034a70e *0883ed10b84cce0b08ebbf90b0f61108c0f61108d0f61108e0f61108f0f6110800f7110810f711 *0820f7110830f7110840f7110850f7110860f7110870f7110880f7110890f71108a0f71108b0f7 *1108c0f71108d0f71108e0f7110810a80e080b000200000000001100ffff8b7500c7450050a80e *08ff26a4a70e0814000000ffff0f00897500e90832fdff1ca80e081ca80e080000000001000000 *25000000a4a70e0814000000ffff0f0038a80e08010000002400ffff8b060fb740fe83f8120f87 *9b000000ff2485984c1108bed0f71108c7450038a80e088b06ffe0bec0f71108ebeebeb0f71108 *ebe7bea0f71108ebe0be90f71108ebd9be80f71108ebd2be70f71108ebcbbe60f71108ebc4be50 *f71108ebbdbe40f71108ebb6be30f71108ebafbe20f71108eba8be10f71108eba1be00f71108eb *9abef0f61108eb93bee0f61108eb8cbed0f61108eb85bec0f61108e97bffffffbeb0f61108e971 *ffffffbee0f71108e967ffffff000000000a0003008b4500ff60e490900100000002000000ff65 *00900100000009000000ff650090000000000a0004008b4500ff60e09090000000000a0005008b *4500ff60dc89f6c0e311081cda1108c4e3110820da1108f8ef1108fcef11080800020000000000 *1100000083c7083b7b5c7611c7436c02000000be04f011088b43fcffe08b45003b45047f1fc747 *fc1caa0e088b450489078b45008945048d77fc83c504b81caa0e08ebd7be00d2110883c50883ef *088b45008b40f0ebc49001000200120000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *088970048b460c3b46087411408945f48b760483ed0cb81caa0e08ebd9be00d2110883ed08a1c4 *6d1008ebca8d760003000100000001000d00000083c7243b7b5c760cc7436c090000008b43fcff *e0c747e0cca90e088977e48b46048947e88b45008947ecc747f084ed0b088b45008947f4c747f8 *7cdc0b088d47f08947fc8d47e089078d77f883c5048b45008b40ecebbb90030001000000000011 *000000e90b55000090909014ab0e08e401000000000000000002000000000011000000c744241c *00000000c744241800000000c744242400000000c7442420000000008b5500895424208b450489 *4424248d45088b10895424188b40048944241cc7450c24ab0e0883c50c8b4424188b54241c8944 *24088954240c8b4424208b54242489042489542404e84206010089c6ff65008d7600e987ffffff *8d7600000000002400000085f67510befcd1110883c5048b45008b40f0ffe0be04d2110883c504 *8b45008b40ecebee38f21108f4f7110848ab0e0800000200180003008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cd5201008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f4f4f7110883ed0cb870cf0e08ebc630f21108f4 *f71108b0ab0e0800000200180003008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8655201008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f4f4f7110883ed0cb8a8ce0e08ebc60b00020000000000110000008b7500c74500 *80ac0e08ff2621000000240000008b45043b460474283b46040f9cc00fb6c08944240883c5088b *34852cdc0b088b542408c1e2028b450029d08b40f0ffe0be04d2110883c5088b45008b40ecebee *01000000240000008b55048b460489450489d6c7450038ac0e08ff260b00020000000000110000 *008b7500c74500ecac0e08ff2621000000240000008b45043b460474153b46047c10be04d21108 *83c5088b45008b40ecffe0befcd1110883c5088b45008b40f0ebee8d760001000000240000008b *55048b460489450489d6c74500b4ac0e08ff260b00020000000000110000008b7500c7450058ad *0e08ff2621000000240000008b45043b460474053b46047c10be04d2110883c5088b45008b40ec *ffe0befcd1110883c5088b45008b40f0ebee8d760001000000240000008b55048b460489450489 *d6c7450020ad0e08ff260b00020000000000110000008b7500c74500d4ad0e08ff262100000024 *0000008b45043b460474283b46040f9cc00fb6c08944240883c5088b34852cdc0b088b542408c1 *e2028b450029d08b40f0ffe0befcd1110883c5088b4500ebee8d760001000000240000008b5504 *8b460489450489d6c745008cad0e08ff260b00020000000000110000008d45fc3b4354730abe40 *f011088b43fcffe08b7500c7450040ae0e088b06ebf042000000240000008b45083b4604740c3b *46047c0783c50c8b06ffe08b7504ebf48d760001000000240000008975008b55048b4604894504 *89d6c745fc1cae0e0883ed04ff2690900b00020000000000110000008d45fc3b4354730abe44f0 *11088b43fcffe08b7500c74500b0ae0e088b06ebf042000000240000008b45083b460474083b46 *047c038b750483c50c8b06ffe09001000000240000008975008b55048b460489450489d6c745fc *90ae0e0883ed04ff2690900f00030000000000110000008d45f83b4354730abe50f011088b43fc *ffe0c745fc00d21108c745f804f8110883ed08b850980d08ebe6909000000200180000008d45ec *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e81d4f01 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f008f81108c745ec48f01108 *c745f404b00e0883ed14b8acd80c08ebb889f683c7083b7b5c760cc7436c020000008b43f8ffe0 *8b4604f7d8c747fc84ed0b0889078d77fc83c504b8d46d1008ebe390000000002400000083c708 *3b7b5c760ec7436c02000000b8f0371008ffe089f0f7d8c747fc84ed0b0889078d77fc83c504b8 *d46d1008ebe48b46048943048b7608c74500a8af0e08e9f7a001008d7600d8af0e0870af0e0800 *000000000000002500000054f0110804b00e080800020000000000110001008d45f43b4354730a *be64f011088b43fcffe08b45043b45007d13be54f01108c745fc78b00e0883ed048b06ebe38b45 *008945fc8b4504894500c74504ffffff7fc745f800d21108c745f410f8110883ed0cb850980d08 *ebb862000000240000008b45048945008b45088945048b4604894508c745fc00d21108c745f814 *f8110883ed08e9b0e7feff0b00020000000000110000008b7500c7450008b10e08ff2621000000 *240000008b45043b460474253b46047c10be1cd2110883c5088b45008b40e8ffe0be14d2110883 *c5088b45008b40f0ebeebe18d2110883c5088b45008b40ecebde8d760001000000240000008b55 *048b460489450489d6c74500c0b00e08ff2654d2110828f811081cb10e0800000200180003008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8f9 *4c01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f428f81108be54d21108 *83ed10b808121008ebc190909038f8110880f011088cb10e080a00020000000000110003008b75 *00c74500fcb10e08ff26be38f8110883c504e9df5501008d76008b450485c0750d8b760483c504 *b89c071008ffe0488945048b4608894500b8a4b10e08ebed8d7600c0b10e08b0b10e088cb10e08 *21000000250003005072656c7564652e008d760000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8194c01008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0fcb10e0883ed10b84cce0b08 *ebbf9018f8110848f811086cb20e0800000200180003008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8a94b01008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f418f81108c745f048f8110883ed10b82cda0b08ebbf9018f8 *110858f81108dcb20e0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8394b01008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f418f81108c745f058f8110883ed10b82cda0b08ebbf9018f8110868f811 *084cb30e0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8c94a01008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f418f81108c745f068f8110883ed10b82cda0b08ebbf9018f8110878f81108bcb30e08 *00000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8594a01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *18f81108c745f078f8110883ed10b82cda0b08ebbf900b00020000000000110000008d45f83b43 *54730abed8f011088b43fcffe08b7500c74500b8b60e088b06ebf083c7103b7b5c760cc7436c04 *0000008b43f8ffe08b4d0489c899f77e048944240889c899f77e04c747f4b8050c088957f8c747 *fcb8050c088b44240889078d47f48945048d77fc83c5048b4504ebc390420000002400000083c7 *0c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947 *fc89378b450889450c8d47f889450883c508b838b40e08ebd989f68975008b7504c745fcb0b40e *0883ed04e97b9001008d7600f4b40e0858b40e0800000000210000002500000001000000240000 *0083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45 *008947fc89378d47f889450483c504b838b40e08ebdf8b46043d000000807513be00000080c745 *0028b50e08b884451008ffe08b7504894504c7450020b50e088b06ebed89f60100000024000000 *83c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b4500 *8947fc89378b45088945048d47f889450883c504b838b40e08ebd989f68b7604c745089cb50e08 *83c508e9928f010089f6000000002400000083c7183b7b5c7615c7436c06000000c74320ff0001 *02b8b03d1008ffe0c747ecccdc0c088b45088947f08b45008947f4c747f8ccdc0c088b45048947 *fc89378d47ec89450c8d77f883c50c8b4504ebcb8b460489430c8b46088943088b45048943048b *7508c7450cfcb50e0883c50ce9049801004cb60e08e0b50e080000000043000000250000008b46 *048945fc8b46088945008b450489750489c6c745f884b60e0883ed08ff2684b60e0864b50e0800 *00000001000000250000000400010000000000110000008b7500c74500d8b60e08ff2600000000 *2400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcb8050c088b460489078d77fc *83c5048b45008b40f0ebe490900b00020000000000110000008d45fc3b4354730abee0f011088b *43fcffe08b7500c74500bcb80e088b06ebf08b45043b46040f9dc00fb6c08944240883c5088b34 *852cdc0b088b542408c1e2028b450029d0ff60f08d7600000000002400000085f60f9ec00fb6c0 *8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f08d76008b45048943088b *46048943048b7608c7450468b70e0883c504e98a98010089f690b70e0834b70e08000000002100 *0000250000008b55048b460489450489d6c74500c4b70e08ff26000000002400000089f0f7d0c1 *e81f8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f08b46048943088b45 *048943048b7508c74508e0b70e0883c508e91698010089f6000000002400000089f0f7d0c1e81f *8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f08b460489430c8b460889 *43088b45048943048b7508c745082cb80e0883c508e91498010050b80e0804b80e080000000042 *000000250000008b46048945008b55048b460889450489d6c745fc88b80e0883ed04ff268d7600 *88b80e08c4b70e08000000000100000025000000c8e41108bcb80e081200030000000000110001 *008d45f83b4354730abeecf011088b43fcffe0837d00067e1ec745fc90e411088b45048945f8c7 *4500d4b90e0883ed08b824080f08ebda83c504b8980b0f08ebd083c504e980520000bcb80e0802 *000000150001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c7 *00d46d1008897004c747f87cdc0b08c747fc88f811088b460889078d47f88945f48b46048945f0 *83ed10b8980b0f08ebc98d760083c7183b7b5c760cc7436c060000008b43f8ffe0c747ec24b90e *088b45048947f08b45088947f4c747f87cdc0b08c747fc90f811088d47ec89078d77f883c50c8b *45008b40ecebca78b90e0810b90e08bcb80e08020000002500010046616c73650089f600000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8454401008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0d4b90e0883ed10b84cce0b08ebbf9054727565008d760000000200180000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d94301008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f040ba0e0883ed *10b84cce0b08ebbf900400010000000000110000008b7500c74500f8ba0e08ff26be78d6110883 *c5048b4500ff60e889f6be78d6110883c5048b4500ff60e889f6d4ba0e08c4ba0e080000000000 *00000025000000acdb1108b4db1108f8ba0e0800000200180003008d45f43b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e81d4301008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f4b4db110883ed0cb8d0e30c08ebc654d21108ccf8 *110860bb0e0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8b54201008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f4ccf81108be54d2110883ed10b808121008ebc190909054d21108ccf81108d0bb0e *0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8454201008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f4ccf81108be54d2110883ed10b808121008ebc190909094e11108b0f8110898f81108dcf81108 *40bc0e080b0002000000000011000f008d45f03b4354730abe5cf111088b43fcffe08b45048945 *f8c745f4bcf81108c745fc64be0e0883ed0cb8b8ff0d08ebe08b450489750489c683c504ff6504 *89f690bc0e0890bc0e080000000001000000250000008b45048945008b45088945fc897508c745 *04b4bc0e0883ed04e98e48000089f6b4bc0e08b4bc0e0848bc0e080200000025000100897500ff *650489f6e8bc0e08e8bc0e08000000000000000025000000837e04007516be94e11108c7450804 *bd0e0883c504b89c071008ffe08975fc8b45048945f8897504c74500e8bc0e0883ed08b860050f *08ebe18d76008b450489750489c683c504ff650489f640bd0e0840bd0e08000000000100000025 *0000008b450c89450089750cc7450864bd0e08e9e74700008d760064bd0e0864bd0e0848bc0e08 *4300000025000100897500ff650489f690bd0e0890bd0e0800000000000000002500000040bc0e *08030000002400050085f67516be94e11108c7450cacbd0e0883c508b89c071008ffe08b450489 *45fc8b45088945f8c7450090bd0e0883ed08b860050f08ebe190897500c74308000000008b4604 *8943048b7608c745fcb8bd0e0883ed04e92692010089f6f0bd0e0804bd0e0840bc0e0802000000 *250005008b45088945fc8b45048945f8c7450028be0e0883ed08e9014f000090bedcf8110883c5 *0cff2689f644be0e0828be0e0840bc0e080200000025000f001400030000000000110000008d45 *ec3b4354730abe64f111088b43fcffe08b450485c0750a8b750883c50c8b06ebed8945f88b7500 *83ed08b8f8be0e08ebdd908b4504488945108b451489450c89751483c50ce9b4ffffffa4be0e08 *a4be0e0800000000e5010000250000008b45048945f883ed08eb1d90d0be0e08d0be0e08000000 *00220000002500000063000000240000008b550089d0c1e81f8d041083e0fe39c2751e89d0c1ea *1f01d0d1f889750489750089450cc74508f0be0e08e9cc16feff8b45108945f88975f4897510c7 *45fcd0be0e0883ed0cebe31300030000000000110000008d45fc3b4354730abe68f111088b43fc *ffe08b450485c0750b8b750883c50c8b4500ebec8945048b7500c745000cc00e088b06ebdb8d76 *00620000002400000083c7083b7b5c761cc7436c02000000c745048cbf0e08c74320ff000100b8 *b03d1008ffe08b550089d0c1e81f8d041083e0fe39c2751989d0c1ea1f01d0d1f88945000faff6 *83ef08b88cbf0e08ebd389f00faf450c8b55004ac747fc54dc0b08893789450c8955088d47fc89 *450483c504b84cbf0e08ebaa62000000240000008b45048945fc8b760483ed04e96fffffff9090 *903cf11108ecf8110820c00e080b00020000000000110003008d45f43b4354730abe6cf111088b *43fcffe08b45048945f8c745f4bcf81108c745fc0cc10e0883ed0cb8b8ff0d08ebe0be3cf11108 *83c50cff2689f68b4504894508894500897504e9335400008d760074c00e0874c00e0824c00e08 *4200000025000100c745fc34f111088b45088945f8c745009cc00e0883ed08e9d410feff9cc00e *0868c00e0820c00e080200000025000300c745fcbcf811088b45088945f8c74500ccc00e0883ed *08e9f0480000be34f1110883c50ce9c344fdff8d7600e8c00e08ccc00e0820c00e080200000025 *00030094e111080cc10e080b00020000000000110001008d45fc3b4354730abe74f111088b43fc *ffe08b7504c745fc50c20e0883ed048b06ebed9000000200170000008d45f83b4354720883c708 *3b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d10088970048b460499f77e08c747fc *54dc0b0889178d77fc83ed08b8d46d1008ebd58d760000000200170000008d45f83b4354720883 *c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700d46d10088970048b460499f77e08c7 *47fc54dc0b0889078d77fc83ed08b8d46d1008ebd58d7600210000002400000083c7243b7b5c76 *0cc7436c090000008b43f8ffe0c747e04cc10e088b46048947e48b45048947e8c747ec9cc10e08 *8b46048947f08b45048947f4c747f8e4bb0b088d47ec8947fc8d47e089078d77f883c5088b4500 *ebbb900cc10e0842000000240001008b460485c0750fbe94e1110883c508b89c071008ffe08945 *088b7504c74504ecc10e0883c5048b06ebea909094e111087cc20e080b00020000000000110001 *008d45fc3b4354730abe7cf111088b43fcffe08b7504c745fcc0c20e0883ed048b06ebed907cc2 *0e0842000000240001008b460489450883c504e96a4f0000909094e11108d0c20e080b00020000 *000000110001008d45fc3b4354730abe84f111088b43fcffe08b7504c745fc4cc30e0883ed048b *06ebed90210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b460499f77d04 *c747fc54dc0b0889078d77fc83c5088b4500ebe390d0c20e0842000000240001008b460485c075 *0fbe94e1110883c508b89c071008ffe08945088b7504c7450410c30e0883c5048b06ebea909094 *e1110878c30e080b00020000000000110001008d45fc3b4354730abe8cf111088b43fcffe08b75 *04c745fc14c40e0883ed048b06ebed90000000002400000083c7083b7b5c760ec7436c02000000 *b8f0371008ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea89f621000000240000008b45 *048945008b46048945fcc74504b8c30e0883ed04e985cdfeff9078c30e0842000000240001008b *460485c0750fbe94e1110883c508b89c071008ffe08945088b7504c74504ecc30e0883c5048b06 *ebea909094e1110840c40e080b00020000000000110001008d45fc3b4354730abe94f111088b43 *fcffe08b7504c745fcdcc40e0883ed048b06ebed90000000002400000083c7083b7b5c760ec743 *6c02000000b8f0371008ffe0c747fc54dc0b0889378d77fc83c5048b4500ebea89f62100000024 *0000008b45048945008b46048945fcc7450480c40e0883ed04e909cdfeff9040c40e0842000000 *240001008b460485c0750fbe94e1110883c508b89c071008ffe08945088b7504c74504b4c40e08 *83c5048b06ebea909094e1110808c50e080b00020000000000110001008d45fc3b4354730abe9c *f111088b43fcffe08b7504c745fc84c50e0883ed048b06ebed90210000002400000083c7083b7b *5c760cc7436c020000008b43f8ffe08b460499f77d04c747fc54dc0b0889178d77fc83c5088b45 *00ebe39008c50e0842000000240001008b460485c0750fbe94e1110883c508b89c071008ffe089 *45088b7504c7450448c50e0883c5048b06ebea9090275c2727008d760000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e86938 *01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0b0c50e *0883ed10b84cce0b08ebbf905c22009000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8013801008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f01cc60e0883ed10b84cce0b08ebbf9009 *000200000000001100000083c7143b7b5c7611c7436c05000000bee8f111088b43fcffe0837d00 *097e6a8b4d00b867666666f7e9890424895424048b542404c1fa0289c8c1f81f29c28d049201c0 *29c189c883c030c747f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b45048907b8676666 *66f76d00c1fa028b4500c1f81f29c28d47f8894504895500b890c60e08eb8e8b450083c030c747 *f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450489078d77f883c5088b45008b40ece9 *5bffffff20fa110880f0110870f0110868f9110878f9110888f9110898f91108a8f91108b8f911 *08c8f91108d8f91108e8f91108f8f9110810fa11084cc70e0809000200000000001100ff3f83c7 *183b7b5c7611c7436c06000000beecf111088b43fcffe0837d007f0f87f20000008b450083f85c *740e83f87f7518c7450088f91108eb07c7450078f9110883ef18e99b00000083f81f0f879c0000 *0089c283e80783f8077765ff2485e44c1108c74500f8f91108ebd5c74500e8f91108ebccc74500 *d8f91108ebc3c74500c8f91108ebbac74500b8f91108ebb1c74500a8f91108eba8c7450098f911 *08eb9fc747eca0ca0e088b45048947f08d47ec894504c7450068f9110883ef0ceb23c747ececc9 *0e088957f0c747f87cdc0b08c747fc08fa11088d47ec89078d47f8894500b82cda0b08e92affff *ffc747ec3cdc0b088947f0c747f47cdc0b088d47ec8947f88b45048947fc8d77f483c50883ef04 *eb2cc747ec8cc90e088b45048947f08b45008947f4c747f87cdc0b08c747fc08fa11088d47ec89 *078d77f883c5088b45008b40ece9cbfeffffbe00d2110883c504ff25c46d100889f680c70e0801 *00000024000100837e042f7606837e0439760a8b750483c5088b06ffe0c7450010fa1108b82cda *0b08ebf08975008b7604c745fcfcc80e0883ed04ff2689f620c90e08e0c80e0880c70e08000000 *002500010080c70e0801000100130001008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b7604c745f448c90e0883ed0c8b06ebe189f680c70e0801000100160001008d45ec3b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f854 *c90e088b46048947fc8b56088d47f88945f48955f0c745ec0000000083ed14b8d0f50c08ebc889 *f64cc70e0800000200140007008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b *460485c078148945f4c745f020fa110883ed10b8a4b10e08ebd7be70f0110883ed0cb89c071008 *ebc890be00d2110883c504ff25c46d100889f680c70e080100000024000100837e0448750ec745 *0010fa1108b82cda0b08ffe08b750483c5088b06ebf489f68975008b7604c745fc4cca0e0883ed *04ff2689f66cca0e0830ca0e0880c70e08000000002500010080c70e0801000100130001008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f494ca0e0883ed0c8b06eb *e1909068d211082cd9110814d9110850d911081ccb0e0800000000ccca0e080000010000000000 *11000f008d45f03b4354730abefcf111088b43fcffe0be68d21108c745fcc0cb0e0883ed048b06 *ebeb8d7600e9d3ffffff8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b *088b46088907c745002cd911088d47fc8945fc8975f8c745f414d9110883ed0cb818a00c08ebd1 *8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b460c8907c745002c *d911088d47fc8945fc8975f8c745f414d9110883ed0cb818a00c08ebd18d760068cb0e0824cb0e *08d0ca0e080000000025000700040002000000000011000000be0cd2110883c504ff6500906e6f *207468726561647320746f2072756e3a2020696e66696e697465206c6f6f70206f722064656164 *6c6f636b3f009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8193201008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f400d21108c745f0d8cb0e0883ed10b84cce0b08ebbf9068d211082cd9110814d9 *110850d91108bccc0e08000000006ccc0e08000001000000000011000f008d45f03b4354730abe *18f211088b43fcffe0be68d21108c745fc60cd0e0883ed048b06ebeb8d7600e9d3ffffff8d7600 *83c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd8e90b088b46088907c745002cd91108 *8d47fc8945fc8975f8c745f414d9110883ed0cb818a00c08ebd18d760083c7083b7b5c760cc743 *6c020000008b43f8ffe0c747fcd8e90b088b460c8907c745002cd911088d47fc8945fc8975f8c7 *45f414d9110883ed0cb818a00c08ebd18d760008cd0e08c4cc0e0870cc0e080000000025000700 *040002000000000011000000be0cd2110883c504ff6500900400010000000000110000008b7500 *c7450098cd0e08ff2600000000240000008b4604894500e99950000090ecf01108a4cd0e080300 *010000000000110001008d45f83b4354720883c7083b7b5c7611c7436c02000000be28f211088b *43fcffe08b450085c0791389c6c745004cce0e0883ef08b8e4451008ebe4c747fcb8050c088907 *8d77fcc7450040ce0e08b810ce0e08ebca8d7600c7450000d211088975fcc745f80000000083ed *08e9a7eaffff8d760010ce0e0810ce0e08a4cd0e080000000025000100a4cd0e08000000002400 *010083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b *45008947fc89378d77f8c7450440ce0e0883c504b810ce0e08ebdb54d2110838fa110848fa1108 *8cce0e080400010000000000110007008d45f83b4354720883c70c3b7b5c7611c7436c03000000 *be30f211088b43fcffe0c747f800cf0e088b45008947fc8d47f88945fcc745f848fa1108c74500 *54cf0e0883ed08b82cda0b08ebd390ce0e0801000100130001008d45f03b435473058b43f8ffe0 *8d45f8c700d46d1008897004c745f438fa11088b46048945f083ed10b82cda0b08ebdb897500be *54d2110883ed04e9c842010030cf0e0830cf0e088cce0e08000000002500010054d2110858fa11 *0868fa110854cf0e080400010000000000110007008d45f83b4354720883c70c3b7b5c7611c743 *6c03000000be38f211088b43fcffe0c747f8c8cf0e088b45008947fc8d47f88945fcc745f868fa *1108c745001cd00e0883ed08b82cda0b08ebd358cf0e0801000100130001008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f458fa11088b46048945f083ed10b82cda0b08eb *db897500be54d2110883ed04e900420100f8cf0e08f8cf0e0854cf0e0800000000250001000400 *010000000000110000008b7500c745003cd00e08ff2600000000240000008b4604894500e9454e *0000906e756c6c20636f6d6d616e64008d760000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c92d01008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f048d00e0883ed10b84cce0b08eb *bf90457869744661696c75726520300089f600000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8552d01008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0bcd00e0883ed10b84cce0b08ebbf *906578697457697468008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8e52c01008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f030d10e0883ed10b84cce0b08ebbf9066645479 *7065009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8792c01008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f0a0d10e0883ed10b84cce0b08ebbf900400010000000000110000008b *7500c745002cd20e08ff260000000024000000837e04ff7510be04d2110883c5048b45008b40ec *ffe0befcd1110883c5048b45008b40f0ebee90907365744e6f6e426c6f636b696e674644008d76 *0000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8b92b01008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f400d21108c745f054d20e0883ed10b84cce0b08ebbf900300020000000000110000008b450083 *c5042500f000003d00c000000f94c00fb6f0ff650090909000000200180000008d45f43b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e82d2b01008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f458d30e0883ed0cb8a0210f08ebc600 *0000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc *84ed0b0889378d77fc83c504b8d46d1008ebe89000000200180000008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8952a01008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f4f0d30e0883ed0cb8c8210f08ebc60000000024 *00000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b08 *89378d77fc83c504b8d46d1008ebe8900300020000000000110000008b450083c5042500f00000 *3d001000000f94c00fb6f0ff65009090900300020000000000110000008b450083c5042500f000 *003d002000000f94c00fb6f0ff65009090900300020000000000110000008b450083c5042500f0 *00003d008000000f94c00fb6f0ff650090909000000200180000008d45f43b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8852901008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d50e0883ed0cb8f0210f08ebc6000000002400 *000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889 *378d77fc83c504b8d46d1008ebe890d4f2110834d50e0800000200180001008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e52801008d47f889 *4604c706245b10088d55f8c702d46d1008894204bed4f21108c745f4a4d50e0883ed0c8b06ebc4 *89f6000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc54dc0b088b46 *0489078d77fc83c504b8d46d1008ebe590909000000200180000008d45f43b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e84d2801008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f438d60e0883ed0cb818220f08ebc6000000002400 *000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889 *378d77fc83c504b8d46d1008ebe89000000200180000008d45f43b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8b52701008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f4d0d60e0883ed0cb840220f08ebc6000000002400000083c7 *083b7b5c7615c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc *83c504b8d46d1008ebe89024d70e080000000000000000000001000000000011000000be000400 *00ff6500e9f3ffffff9090904cd70e080000000000000000000001000000000011000000be0200 *0000ff6500e9f3ffffff90909074d70e080000000000000000000001000000000011000000be01 *000000ff6500e9f3ffffff9090909cd70e080000000000000000000001000000000011000000be *00000000ff6500e9f3ffffff9090900f00040000000000110000008b4d008b55048b450883c50c *8944240889542404890c24e8c0bff5ff89c6ff65009090900800030000000000110000008b5500 *8b450483c50889442404891424e897bff5ff89c6ff650090900800030000000000110000008b55 *008b450483c5088944240889542404c7042403000000e857c1f5ff89c6ff6500909078fa1108b8 *fa11082cd80e080300020000000000110003008d45f43b4354730abe30f311088b43fcffe0beb8 *fa1108c745fc74d90e0883ed048b06ebeb8d7600eb5689f6000000002400000083c7083b7b5c76 *15c7436c02000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c5048b45 *00ebea8d76006cd80e0800000000000000000000010000000200100000008d45f03b435473058b *43fcffe0c745f8b60100008b46088945f48b46048945f0c745fc78d80e0883ed10b894240d08eb *da8d7600000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b8b03d1008 *ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea8d760000000000240000008b46048945fc *c7450000d90e0883ed04e9bb4bfeff8d76000000000024000000c745003cd90e08ff268d76002c *d80e08210000002400010083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8c4d80e088b *45048947fc8b460489078d47f8894500c745fc78fa1108c745f884f21108c745045cd90e0883ed *08b808880d08ebc79003000100000000001100000083c7143b7b5c7611c7436c05000000be5cf3 *11088b43fcffe08b450085c0750dbec8fa110883c50483ef14eb1cc747f024da0e088947f4c747 *fc70da0e088d47f089078d77fc83c5048b4500ebc989f600000200140000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b4604488945f483ed0cb8ccd90e08ebe189f6040001 *00010000000c0000008b760483c504ff2604000100010000000c00000083c71c3b7b5c760cc743 *6c070000008b43fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f45cda0e088d47e8 *8947f8c747fca05e0c088d47f489078d77fc83c5048b45008b40f0ebc4909068d6110860f31108 *c0da0e080b00020000000000110003008d45f83b4354730abe60f311088b43fcffe08b7500c745 *00e0de0e088b06ebf0897500e9d8fffffff8da0e08f8da0e08f8da0e08f8da0e08f8da0e08c4da *0e080100000025000100c4da0e0804000100020000000e0001008d45f43b435473058b43fcffe0 *8b45008945f88b46048945008b7608c745fc20db0e0883ed0cb808121008ebde8d760083c7143b *7b5c760cc7436c050000008b43f8ffe0c747f030db0e088b45048947f48b46048947f8c747fca0 *5e0c088d47f089078d77fc83c5088b45008b40f0ebd18d7600897500e92cffffffa4db0e08a4db *0e08a4db0e08a4db0e08a4db0e08c4da0e080100000025000100c4da0e0804000100020000000e *0001008d45f43b435473058b43fcffe08b45008945f88b46048945008b7608c745fcccdb0e0883 *ed0cb808121008ebde8d760083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0dcdb0e08 *8b45048947f48b46048947f8c747fcc05e0c088d47f089078d77fc83c5088b45008b40ecebd18d *7600be78d6110883c5088b4500ff60e889f6c4da0e0802000000150001008d45f03b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b8d8da0e08ebdc90 *897500e99474fdff9cdc0e089cdc0e089cdc0e089cdc0e089cdc0e08c0da0e0801000000250001 *0083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f86cdc0e088b45048947fc8b46088907 *8b46048945fc8b75048d47f8894504c74500c4dc0e0883ed08b808121008ebcc89f6be00d21108 *83c50c8b4500ff60f089f68b450489450889750483c504e9fffcfcff8d76001cdd0e081cdd0e08 *0000000042000000250000008b45088945fc8975f8c7450044dd0e0883ed08e9d071fdff44dd0e *0844dd0e0844dd0e0844dd0e0844dd0e08000000000200000025000000030000002400000083c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f88c6b10088b45088947fc8b450489078b4604 *8945008d47f88945088b550c8b460889450c89d6c745047cdd0e0883ed04b808121008ebc489f6 *8b46088945008b7604c745fc84dd0e0883ed04ff268d7600d4dd0e080cdd0e0800000000020000 *002500000004000100010000000c0000008d45f03b435473058b43fcffe08975fc8b55008b4604 *89450089d6c745f800de0e0883ed088b06ebe28d7600be78d6110883c5048b4500ff60e889f683 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fc105f0c0889378d77fc83c5048b45008b40 *e0ebe79048de0e0838de0e0800000000000000002500000083c7083b7b5c760cc7436c02000000 *8b43f8ffe0c747fc0cde0e088b450489078b46048945008d77fcc7450488de0e08b80cde0e08eb *db9088de0e08c4dc0e0850dc0e080cdc0e0860db0e08c0da0e08010000002500030068f3110868 *d61108e0de0e080400010000000000110003008d45fc3b4354730abe68f311088b43fcffe08b75 *00c745006ce00e088b06ebf0be34df110883c504ff6500908b750483c504e96d28010090e0de0e *0801000100130001008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945 *f483ed0cb8f8de0e08ebe28d7600897500e9c871fdff68df0e0868df0e0868df0e0868df0e0868 *df0e08e4de0e080100000025000100e4de0e0804000100020000000e0001008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43fcffe0c747f88c6b10088b46048947fc8b450089078b *45008945f88d47f88945008b7608c745fc90df0e0883ed0cb808121008ebcc89f683c7183b7b5c *760cc7436c060000008b43f8ffe0c747ec3cdf0e088977f0c747f8a0df0e088d47ec8947fc8b45 *0489078d77f883c5088b4500ebd790f0df0e0824df0e08e0de0e0801000000250003008b460489 *45008b7608c745fc40e00e0883ed04ff268d760040e00e0818df0e08e0de0e0800000000250003 *000b000200000000001100000083c7283b7b5c7611c7436c0a000000be70f311088b43fcffe0c7 *47dcece00e088b45008947e0c747e484e20e088d47dc8947e8c747ecbce20e088b45008947f08d *47e48947f48b45048947f8c747fcc05e0c088d47ec89078d77fc83c5088b45008b40ecebb189f6 *04000100010000000c0000008d45fc3b435473058b43fcffe08b46048945fc83ed04b858230f08 *ebee8d76008b750883c510ff65008d7600be34df110883c510ff65009004000100010000000c00 *00008b760483c504ff2604000100010000000c00000083c71c3b7b5c760cc7436c070000008b43 *fcffe0c747e88c6b10088b46048947ec8b45008947f0c747f430e10e088d47e88947f8c747fca0 *5e0c088d47f489078d77fc83c5048b45008b40f0ebc489f6040100002400000083c7183b7b5c76 *0cc7436c060000008b43f8ffe08b45103b4604740dbe34df110883c51483ef18eb2bc747ecc86b *10088b45088947f08b450c8947f48b45048947f8c747fc44e10e088d47ec89078d77fc83c5148b *4500ebb98d760004000000240000008b55108b460489451089d6c745009ce10e08ff268b460889 *45008b550c8b460489450c89d6c745fc00e20e0883ed04ff268d760014e20e0818e10e08000000 *0003000000250000008b46088945088b550c8b460489450c89d6c7450048e20e08ff2689f648e2 *0e080ce10e080000000003000000250000000b000200010000000c0000008d45f43b435473058b *43fcffe08975fc8b55008b460489450089d6c745f878e20e0883ed088b06ebe28d760004000100 *030000000b0000008d45f43b435473058b43fcffe0c745fc081210088b45008945f88b460c8945 *008b46048945f48b760883ed0cb884e20e08ebd890546578742f5072657474795072696e742f48 *7567686573504a2e68733a3739317c66756e6374696f6e206f6e654c696e657200904cd2110824 *e30e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8f51a01008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f4f0e20e08be4cd2110883ed10b828101008ebc1909090546578742f507265747479507269 *6e742f487567686573504a2e68733a3736367c66756e6374696f6e206669747300904cd21108c0 *e30e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8591a01008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f490e30e08be4cd2110883ed10b828101008ebc1909090546578742f507265747479507269 *6e742f487567686573504a2e68733a3535357c66756e6374696f6e2061626f76654e657374004c *d2110860e40e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8b91901008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f42ce40e08be4cd2110883ed10b828101008ebc1909090546578742f5072657474 *795072696e742f487567686573504a2e68733a3837327c66756e6374696f6e206c61790089f64c *d21108fce40e0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e81d1901008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f4cce40e08be4cd2110883ed10b828101008ebc190909003000100000000001100 *000083c7183b7b5c7611c7436c06000000bec4f311088b43fcffe0837d00007e2ec747ecdce50e *088b45008947f0c747f87cdc0b08c747fcc8e811088d47ec89078d77f883c5048b45008b40eceb *cabe00d2110883c50483ef188b45008b40f0ebb700000200140000008d45f43b435473058b43f8 *ffe08d45f8c700d46d10088970048b4604488945f483ed0cb874e50e08ebe1909054d21108d0fa *110808e60e0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e80d1801008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f4d0fa1108be54d2110883ed10b808121008ebc19090903a3a009000000200180000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e8a51701008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0 *78e60e0883ed10b84cce0b08ebbf90a4e8110894e91108e0e60e0800000200180003008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e835170100 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f418fb1108c745f010fb110883 *ed10b8dc330e08ebbf9050f9110814f91108f4f8110850e70e0800000200180007008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c11601008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f414f91108c745f0f4f8110883ed *10b8d0160f08ebbf90a4e811081cfb1108c4e70e0800000200180003008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8511601008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f424fb1108c745f01cfb110883ed10b8dc330e *08ebbf905cf1110854db110860f4110834e80e081700040000000000110007008d45f43b435473 *0abe60f411088b43fcffe08b750cc745fcfce90e0883ed048b06ebed90897500e9e4d3ffff74e8 *0e0874e80e0834e80e0801000000250001008b4504894500897504c7450890e80e08e94fedfdff *8d760090e80e0890e80e0834e80e0843000000250001008b45088945fc89750cc74500bce80e08 *83ed04e984ecfdffbce80e08bce80e0834e80e0883000000250001008b450c894500c74504e8e8 *0e08e916f3fdff89f68b450c89450889750c83c504e943ffffff8d7600fce80e08fce80e083ce8 *0e0844000000250001008b45048945fc8b450c8945f889750cc7450024e90e0883ed08e9b2ecfd *ff89f624e90e0824e90e083ce80e0844000000250001008b45088945fc8975f8c7450058e90e08 *83ed08e93ceffdff58e90e0858e90e083ce80e0804000000250001003ce80e0804000000240001 *0083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcb8050c088b460489078b45048945fc *8b45088945f88d47fc894508c7450084e90e0883ed08b8f4d50c08ebcf908b46088945108b7604 *c7450090e90e08ff2689f6d4e90e08e8e80e0834e80e08040100002500070048d51108e0fa1108 *fce90e080400010000000000110003008d45f43b4354730abe88f511088b43fcffe08b45008945 *f8be48d51108c745fc84ea0e0883ed0cb808121008ebe289f68b4504894500c74504e0fa1108c7 *45fc80d1110883ed04e9cc0afdffbe04d2110883c5088b4500ff60ec89f660ea0e0844ea0e0800 *ea0e0801000000250001004e614e0000000200180000008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8991301008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f084ea0e0883ed10b84cce0b08ebbf90496e *66696e697479008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8291301008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f400d21108c745f0ecea0e0883ed10b84cce0b08ebbf9004000100000000 *001100000083c72c3b7b5c7611c7436c0b000000bed8f511088b43fcffe0c747d8d0eb0e088b45 *008947dcc747e408ec0e088b45008947e8c747f08cec0e088d47d88947f48d47e48947f8c747fc *a05e0c088d47f089078d77fc83c5048b45008b40f0ebb701000100130000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f458f411088b760483ed10b808121008ebde8d76 *0001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f450f4 *11088b760483ed10b808121008ebde8d760002000000240000008b460483f858742283f8587707 *83f84f740eeb1b83f86f740783f878740ceb0f8b750883c50c8b06ffe08b7504ebf4be78d61108 *83c50c8b45008b40e8ebe99004000100020000000e0000008d45f83b435473058b43fcffe08b46 *088945fc8b55008b460489450089d6c745f840ec0e0883ed088b06ebdf04000100000000001100 *00008d45fc3b4354730abedcf511088b43fcffe08b7500c7450010f4110883ed04b808121008eb *ea909050d5110870d6110868d611082ce01108e0f51108ecec0e08040001000000000011001f00 *8d45fc3b4354720883ef803b7b5c7611c7436c20000000bee0f511088b43fcffe0c7478418ee0e *088b4500894788c74790a4ee0e088b45008947948d4784894798c7479ca05e0c088d47908947a0 *c747a4dcee0e088b45008947a8c747b03cef0e088d47a48947b4c747b8a05e0c088d47b08947bc *c747c070ef0e088d47b88947c4c747c88cef0e088d47c08947ccc747d0c05e0c088d47c88947d4 *c747d8f8ef0e088d47a48947dc8d47d08947e0c747e478f00e088d47d88947e8c747eca05e0c08 *8d47e48947f0c747f4d8f00e088d47ec8947f8c747fca05e0c088d47f489078d479c8945008d47 *fc8945fc83ed04b838510c08e924ffffff90f8ec0e0801000100130001008d45f43b435473058b *43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb800620d08ebe28d760002000000 *2400000083c70c3b7b5c760cc7436c030000008b43f8ffe0837e045c750d8b750483c50c83ef0c *8b06ebebc747f8e4bb0b088977fcc707fcd111088b75088d47f889450883c504b808121008ebc8 *89f604000100020000000e0000008d45f83b435473058b43fcffe08b46088945fc8b55008b4604 *89450089d6c745f84cee0e0883ed088b06ebdffcec0e0801000100130001008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb810ed0e08ebe28d7600010000 *0024000000837e045c750a8b750483c5088b06ffe0be78d6110883c5088b45008b40e8ebee0400 *0100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc10ef *0e0883ed048b06ebe589f604000100010000000c0000008b760483c504e9256ffdff90f0ec0e08 *04000100010000000c0001008d45f83b435473058b43fcffe0c745fc081210088b45008945f88b *460489450083ed08b8385d0c08ebe189f6be78d6110883c5088b4500ff60e889f68b750483c508 *e9ed6efdff90c8ef0e08b8ef0e08000000000100000025000000ecec0e0803000100020000000e *0001008d45f43b4354720883c7083b7b5c760cc7436c020000008b43fcffe08b450083f826750d *8b760483c50483ef088b06ebe9c747fc3cdc0b0889078d47fc8945f88b4608894500be50d51108 *c745fce8ef0e0883ed0cb808121008ebbe01000000240000008b45048b560489550489c683c504 *eb8c04000100010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c7 *45fc5cf00e0883ed048b06ebe589f60100000024000000837e045c750d8b750483c508b8a05e0c *08ffe0be78d6110883c5088b45008b40e8ebee9004000100010000000c0000008d45fc3b435473 *058b43fcffe08b55008b460489450089d6c745fca8f00e0883ed048b06ebe59090e0d8110800f1 *0e080b00030000000000110001008d45f83b4354730abee8f511088b43fcffe0c74304e0d81108 *be00040000c745fc38f20e0883ed04b818431008ebe190000000002400000083c7083b7b5c7615 *c7436c02000000c74320fe000000b8b03d1008ffe0c747fcd4f10c0889378d77fc83c5048b4500 *ebea8d7600030000002400000083c7403b7b5c7615c7436c10000000c74320fe000000b8b03d10 *08ffe0c747c46c8f0d08c747c854ec1108c747cc5cec11088977d08b55048d47c489420cc747d4 *1c810d08c747d854ec1108c747dc5cec11088b45048947e08b450c8947e48b45088947e8c747ec *00000000c747f000040000c747f4ff030000c747f8ff070000c747fc00000000c707000400008d *77d4c7450c4cf10e0883c50cb89c431008e976ffffff8d76000200000024000000897500c74304 *00d21108be00040000c745fc88f10e0883ed04e9c25001009090e8f51108a8f20e080000000058 *f20e080000010000000000110001008d45f03b4354730abef0f511088b43fcffe0c745f848fb11 *08c745f4c4d11108c745fcc4f30e0883ed0cb814f10e08ebdf8d7600e9c7ffffff8d7600020000 *002400000083c7103b7b5c760cc7436c040000008b43f8ffe0c747f4ecf30e088b45048947f88b *45088947fc8b460489078d77f483c50cb8d46d1008ebd98d760002000000240000008b55088b46 *0489450889d6c74500b8f20e08ff2603000000120000008d45ec3b435473058b43f8ffe08d45f8 *c700d46d10088970048b460c8945f08b46088945f48b7604c745ecfcf20e0883ed148b06ebd589 *f6020000002400000083c7103b7b5c7615c7436c04000000c74320fe000000b8b03d1008ffe0c7 *47f418f30e088b45088947f88b45048947fc89378d77f483c50c8b4500ebde8d76000100000024 *000000897500be54fb1108c745fc58f30e0883ed04e9e54f01009058f20e080000000024000100 *c745f84cfb1108c745f450fb1108897500c745fca0f30e0883ed0ce930fdffff03000000010000 *00ff6500900300000009000000ff6500907265616c6c6f630000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e81d0a01008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0fcf30e0883ed10 *b84cce0b08ebbf900400020000000000110000008b7500c745009cf40e08ff2600000000240000 *00be0cd2110883c504ff65009000000000240000008b7604c7450088f40e08e985620100906669 *6c6c52656164427566666572009000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8650901008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f0acf40e0883ed10b84cce0b08ebbf90040002 *000000000011000000be0cd2110883c504ff65009068616e646c65206973206e6f74206f70656e *20666f722077726974696e67009000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8c90801008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f038f50e0883ed10b84cce0b08ebbf90e0f50e *080000000000000000000001000000000011000000be94fb1108e9e23f010089f6e9efffffff90 *909068616e646c6520697320636c6f736564008d760000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8250801008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0e8f50e0883ed10b84cce *0b08ebbf90616c726561647920657869737473009000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8b10701008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f060f60e0883ed10b84cce0b *08ebbf90646f6573206e6f74206578697374009000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e83d0701008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0d4f60e0883ed10b84cce0b08 *ebbf907265736f7572636520627573790089f600000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c90601008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f048f70e0883ed10b84cce0b08eb *bf907265736f7572636520657868617573746564009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8510601008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0bcf70e0883ed10b84cce *0b08ebbf90656e64206f662066696c650000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e10501008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f034f80e0883ed10b84cce0b08ebbf90 *696c6c6567616c206f7065726174696f6e0089f600000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8690501008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0a4f80e0883ed10b84cce0b08 *ebbf907065726d697373696f6e2064656e6965640089f600000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8f10401008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f01cf90e0883ed10b84c *ce0b08ebbf9075736572206572726f72009000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8810401008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f094f90e0883ed10b84cce0b08ebbf *90756e7361746973696669656420636f6e73747261696e7473008d760000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e80104 *01008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f004fa0e *0883ed10b84cce0b08ebbf9073797374656d206572726f72008d760000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e88d0301 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f084fa0e08 *83ed10b84cce0b08ebbf9070726f746f636f6c206572726f72009000000200180000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e819030100 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0f8fa0e0883 *ed10b84cce0b08ebbf906661696c6564009000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8ad0201008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f06cfb0e0883ed10b84cce0b08ebbf *90696e76616c696420617267756d656e74008d760000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8350201008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0d8fb0e0883ed10b84cce0b *08ebbf90696e617070726f7072696174652074797065009000000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8bd0101008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f050fc0e0883ed10b8 *4cce0b08ebbf906861726477617265206661756c74009000000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8490101008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c8fc0e0883ed10b84c *ce0b08ebbf90756e737570706f72746564206f7065726174696f6e0089f600000200180000008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8cd *0001008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f03cfd *0e0883ed10b84cce0b08ebbf9074696d656f75740000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8610001008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0b8fd0e0883ed10b84cce0b *08ebbf907265736f757263652076616e69736865640089f600000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e9ff00008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f024fe0e0883ed10b8 *4cce0b08ebbf90696e7465727275707465640000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e879ff00008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f09cfe0e0883ed10b84cce0b08eb *bf90756e6b6e6f776e20494f206572726f72008d760000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e801ff00008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f00cff0e0883ed10b84cce *0b08ebbf9003000100000000001100000083c7203b7b5c7611c7436c08000000bef0f711088b43 *fcffe0c747e4ecff0e088b45008947e8c747f084ed0b088b45008947f4c747f87cdc0b088d47f0 *8947fc8d47e489078d77f883c5048b45008b40ecebc49000000200140000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46043dffffff7f750fbe00d2110883ed08a1c46d10 *08ebd9408945f483ed0cb890ff0e08ebcb496e7433320089f600000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8edfd00008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f02c000f0883ed10 *b84cce0b08ebbf900b000200000000001100000083c7183b7b5c7611c7436c06000000be04f811 *088b43fcffe0c747ecf4000f088b45008947f0c747f87cdc0b088d47ec8947fc8b450489078d77 *f883c5088b45008b40ecebd189f601000100130000008d45f43b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46048945f483ed0cb8fcfa0d08ebe29090900b0002000000000011000000 *83c7183b7b5c7611c7436c06000000be10f811088b43fcffe0c747ec7c010f088b45008947f0c7 *47f87cdc0b088d47ec8947fc8b450489078d77f883c5088b45008b40ecebd189f6010001001300 *00008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f483ed0cb8fcfa *0d08ebe29090900b000200000000001100000083c7183b7b5c7611c7436c06000000be14f81108 *8b43fcffe0c747ec04020f088b45008947f0c747f87cdc0b088d47ec8947fc8b450489078d77f8 *83c5088b45008b40ecebd189f601000100130000008d45f43b435473058b43f8ffe08d45f8c700 *d46d10088970048b46048945f483ed0cb8fcfa0d08ebe29090903a20656d707479206c69737400 *8d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8e1fb00008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f030020f0883ed10b84cce0b08ebbf905072656c7564652e282121293a20 *6e6567617469766520696e6465780a0089f600000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e85dfb00008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0a4020f0883ed10b84cce0b08ebbf *9054d21108a0fb110828030f0800000200180003008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8edfa00008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f4a0fb1108be54d2110883ed10b808121008ebc19090907461696c *008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e881fa00008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f098030f0883ed10b84cce0b08ebbf906c617374008d76000000020018 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e815fa00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c7 *45f004040f0883ed10b84cce0b08ebbf90696e6974008d760000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a9f900008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f070040f0883ed10 *b84cce0b08ebbf906d6178696d756d0000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e83df900008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0dc040f0883ed10b84cce0b08ebbf9098 *f81108c0fb110848050f080b00020000000000110003008d45f43b4354730abe98f811088b43fc *ffe08b45048945f8c745f490e41108c745fc18080f0883ed0cb8b8ff0d08ebe083c7083b7b5c76 *0cc7436c020000008b43f8ffe08b450499f77e04c747fcb8050c0889078d77fc83c5088b45008b *40f0ebe089f648050f08420000002400010083c70c3b7b5c7615c7436c03000000c74320ff0000 *01b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378b450889450c8d47f889450883c508b8 *60050f08ebd989f68975008b7504c745fcd0050f0883ed04e95b3f01008d760014060f0890050f *0848050f08210000002500010048050f08010000002400010083c70c3b7b5c7615c7436c030000 *00c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d47f889450483c504 *b860050f08ebdf8b46043d000000807513be00000080c745004c060f08b884451008ffe08b7504 *894504c7450040060f088b06ebed89f6000000002400000083c70c3b7b5c7615c7436c03000000 *c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d77f883c5088b45008b *40ecebe189f642000000240000008b450089430c8973088b45088943048b750cc7450cc0060f08 *83c50ce94f4301008d76008b7604c7450004070f08e94d3e010090000000002400000083c70c3b *7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89 *378d77f883c5088b45008b40ecebe189f68b460489430c8b46088943088b45048943048b7508c7 *450840070f0883c508e9d44201007c070f0828070f080000000042000000250000008b46048945 *008b55048b460889450489d6c745fcb4070f0883ed04ff268d7600b4070f0888060f0848050f08 *01000000250001008b7504c74504e8070f0883c504ff2690bec0fb110883c50cff2689f6f8070f *08e8070f0848050f0802000000250003000b00020000000000110000008d45fc3b4354730abea0 *f811088b43fcffe08b7500c74500cc090f088b06ebf08b45043b46040f9cc00fb6c08944240883 *c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d7600000000002400000085f60f9f *c00fb6c08944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f08d76008b4504 *8943088b46048943048b7608c7450478080f0883c504e97a47010089f6a0080f0844080f080000 *000021000000250000008b55048b460489450489d6c74500d4080f08ff26000000002400000089 *f0c1e81f8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f089f68b460489 *43088b45048943048b7508c74508f0080f0883c508e90647010089f6000000002400000089f0c1 *e81f8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f089f68b460489430c *8b46088943088b45048943048b7508c745083c090f0883c508e90447010060090f0814090f0800 *00000042000000250000008b46048945008b55048b460889450489d6c745fc98090f0883ed04ff *268d760098090f08d4080f080000000001000000250000000b00020000000000110000008d45fc *3b4354730abea4f811088b43fcffe08b7500c74500840b0f088b06ebf08b45043b46040f9fc00f *b6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d76000000000024 *00000089f0c1e81f8944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f089f6 *8b45048943088b46048943048b7608c745042c0a0f0883c504e9ca45010089f6500a0f08f8090f *080000000021000000250000008b55048b460489450489d6c74500840a0f08ff26000000002400 *000085f60f9fc00fb6c08944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff60f0 *8d76008b46048943088b45048943048b7508c74508a00a0f0883c508e95245010089f600000000 *2400000085f60f9fc00fb6c08944240883c5048b34852cdc0b088b542408c1e2028b450029d0ff *60f08d76008b460489430c8b46088943088b45048943048b7508c74508f00a0f0883c508e94c45 *0100180b0f08c80a0f080000000042000000250000008b46048945008b55048b460889450489d6 *c745fc500b0f0883ed04ff268d7600500b0f08840a0f08000000000100000025000000c8e41108 *840b0f080b00020000000000110001008d45f43b4354730abea8f811088b43fcffe0c745f890e4 *11088b45008945f4c745fc240d0f0883ed0cb824080f08ebe083c504e904290000897500e9fc28 *0000d00b0f08d00b0f0800000000010000002500000083c7083b7b5c760cc7436c020000008b43 *f8ffe08b46043d000000807513bec8e41108c74500ec0b0f0883ef088b06ebe1f7d8c747fcb805 *0c0889078d77fcc74500ec0b0f08b8d00b0f08ebc58d760083c70c3b7b5c760cc7436c03000000 *8b43f8ffe08b5608f7dac747f8ccdc0c088b46048947fc89178d77f8c74500ec0b0f08b8d00b0f *08ebd98d76003c0c0f08ec0b0f08840b0f080100000025000100840b0f0802000000150001008d *45f03b435473058b43f8ffe08d45f8c700d46d10088970048b46088945f48b7604c745f08c0c0f *0883ed108b06ebdb83c7183b7b5c760cc7436c060000008b43f8ffe0c747ec980c0f088b450489 *47f08b45088947f4c747f87cdc0b08c747fcd0fb11088d47ec89078d77f883c50c8b45008b40ec *ebcac80c0f08c80b0f08840b0f080200000025000100b0f811085cfb1108b0fb1108c8e4110824 *0d0f080b0002000000000011000f008d45ec3b4354730abeb0f811088b43fcffe08b7500c745fc *d8110f0883ed048b06ebed90000000002400000083c7083b7b5c760ec7436c02000000b8f03710 *08ffe0c747fcb8050c0889378d77fc83c5048b45008b40f0ebe78d76008b46048945048b450889 *4500c74508700d0f08e9c4200000000000002400000083c7083b7b5c760ec7436c02000000b8f0 *371008ffe0c747fcb8050c0889378d77fc83c5048b45008b40f0ebe78d7600300d0f0826050000 *2400010083c70c3b7b5c761cc7436c03000000c74500fc0d0f08c74320ff000000b8b03d1008ff *e08b451885c0752d837d100079228b4510f7d8c747f8ccdc0c088b550c8957fc89078d77f883c5 *1c8b45008b40ecebcf8b7508eb36837d1000753abec8e411083d00000080742485c0791df7d8c7 *47f8b8050c088947fc8d77f883c51c83ef048b45008b40f0eb978b751483c51c83ef0c8b06eb8a *8973088b450c8943048b7504c74518c00d0f0883c51883ef0cb818501008e967ffffff90300d0f *088502000024000100897500837d1400780b8b751483ed04e924ffffff8b451489c6f7deebef8d *76008b46088945008b46048945fc8975f8837d0800751b8b460885c0750cbeb0fb110883c50c8b *06ffe089c685c07914eb0e837e080078058b7500eb078b450089c6f7de83ed0cb8c40e0f08ebda *e40e0f08a00d0f08280d0f0842000000250007008975008b55048b460489450489d6c745fc440f *0f0883ed04ff2689f689750883c508e9d9fdffff90000000002400000083c70c3b7b5c7615c743 *6c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d77f883c5 *088b45008b40ecebe189f6000000002400000083c70c3b7b5c7615c7436c03000000c74320ff00 *0001b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d77f883c5088b45008b40ecebe189 *f68b550885d275308b560885d2750cbeb0fb110883c5108b06ffe08b460489430c8953088b4504 *894304be00000000c7450cb80f0f08eb1b8b460489430c8b46088943088b450489430489d6c745 *0c740f0f0883c50cb8dc491008ebbcf40f0f08600f0f08240d0f0843000000250005008b460489 *45fc8b46088945008b450489750489c6c745f864100f0883ed08ff2664100f08440f0f08240d0f *080100000025000f00240d0f080200000024000f008b7504c7450498100f0883c504ff2690240d *0f08420000002400010083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0 *c747f8ccdc0c088b45008947fc89378d47f889450c83c508b8440d0f08ebdf817e040000008075 *13be00000080c74500c0100f08b884451008ffe0b8a4100f08ebf790eb8289f620110f08fc100f *08240d0f080200000025000f00240d0f080200000024000f008b7508c7450038110f08ff26240d *0f08010000002400010083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0 *c747f8ccdc0c088b45008947fc89378d47f889450483c504b8440d0f08ebdf817e040000008075 *16be00000080c745045c110f0883c504b884451008ffe0b844110f08ebf789f6eb8289f6c0110f *0898110f08240d0f080200000025000f000400010000000000110000008b7500c7450024120f08 *ff26be78d6110883c5048b4500ff60e889f6be78d6110883c5048b4500ff60e889f600120f08f0 *110f0800000000000000002500000094e1110824120f080a00020000000000110001008b450485 *c0750fbe94e1110883c504b89c071008ffe08945048b7500c7450050130f088b06ebed90000000 *002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc54dc0b0889378d77fc *83c504b8d46d1008ebe800000200170000008d45ec3b435473058b43f8ffe08d45f8c700d46d10 *088970048b46088945f08b46048945ecc745f468120f0883ed14b88c910d08ebd589f600000000 *2400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0c747fc54dc0b0889378d77fc83 *c504b8d46d1008ebe800000200170000008d45ec3b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46088945f08b46048945ecc745f4dc120f0883ed14b8d8910d08ebd589f62100000024 *00000083c7243b7b5c760cc7436c090000008b43f8ffe0c747e09c120f088b46048947e48b4504 *8947e8c747ec10130f088b46048947f08b45048947f4c747f8e4bb0b088d47ec8947fc8d47e089 *078d77f883c5088b4500ebbb905072656c7564652e5e3a206e65676174697665206578706f6e65 *6e74008d760000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e859ea00008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0a8130f0883ed10b84cce0b08ebbf9054d2110828fc11082c140f *0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8e9e900008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f428fc1108be54d2110883ed10b808121008ebc190909098f81108d8fb1108ecf811089c140f08 *1600030000000000110007008d45ec3b4354730abeecf811088b43fcffe08b45048945f8c745f4 *bcf81108c745fc24160f0883ed0cb8b8ff0d08ebe08b4504894500897504e9c2ffffff89f6e814 *0f08e8140f08a4140f080200000025000100c7450834f11108897514c7450c0c150f0883c504e9 *67bcfdff8d76000c150f080c150f08a4140f08c5020000250001008b45148945fc8b45108945f8 *c745003c150f0883ed08e99dc0fdff908b45048945f883ed08eb7d9058150f0858150f089c140f *0802000000250007008b45048945fc8945f8897504c7450078150f0883ed08e961c0fdff907815 *0f0878150f089c140f080200000025000700c745080cfc1108c7450ca8150f0883c504e9a2efff *ff89f6a8150f083c150f089c140f08c5000000250007009c140f0863000000240007008b450089 *45f889750cc745fcd4150f0883ed08e9142300008b45088945fc8b750483ed04ebda89f68b750c *83c510ff2608160f08f8150f089c140f0803000000250007005cf1110824160f08040001000000 *0000110001008d45fc3b4354730abe0cf911088b43fcffe08b7500c74500a4160f088b06ebf000 *0000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8 *cc130e088977fc8b450089078d77f883c5088b4500ebe49024160f0800000000240001008b4604 *8945fcc7450060160f0883ed04e91b23000090909018fc1108bc160f080b000200000000001100 *010083c7483b7b5c7611c7436c12000000be50f911088b43fcffe0c747bc60170f088b45008947 *c08b45048947c4c747c80c5f10088b45048947ccc747d40c5f10088d47c88947d8c747e0d0170f *088d47d48947e4c747ec64190f088b45008947f08d47bc8947f48d47c88947f88d47d48947fc8d *47e089078d77ec83c5088b4500eb9589f6bc160f0802000000150001008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f80c5f10088b46 *048947fc8b46088945f48d47f88945f083ed10b83c3d0f08ebcf900000000024000000c74500bc *f811088b762483ed04e942fa000089f601000100130000008d45f03b435473058b43f8ffe08d45 *f8c700d46d10088970048b7604c745f4b4170f0883ed0c8b06ebe189f601000000240000008b76 *18e9fcf9000002000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46088945f48b7604c745f004180f0883ed108b06ebdb04000000120000008d45ec3b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f814180f08 *8b46088947fc8b460c89078d47f88945f48b46108945f08b760483ed14b814161008ebc7908500 *00002400000083c7143b7b5c760cc7436c050000008b43f8ffe0c747f04c180f088b45088947f4 *8b45048947f88b45148947fc8b451089078d47f08945148b760c83c510b808121008ebcd8d7600 *8b750cc74500a8180f08ff268b750883c50ce90dfd000090fc180f08f0180f0800000000050000 *002500000006000000240000008b45048945008b45188945fc8b7614c745041c190f0883ed08e9 *d2fc000089f606000000240000008b7608c7450024190f08ff260b000200050000000b0000008d *45e43b435473058b43fcffe08b46148945f08b46108945f48b46088945f88b46048945fc8b760c *c745ec4c190f0883ed148b06ebd590900400000001000000ff6500900400000009000000ff6500 *905c534f0000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e869e400008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0b4190f0883ed10b84cce0b08ebbf905c5c00900000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *01e400008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f01c *1a0f0883ed10b84cce0b08ebbf905c44454c008d760000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e895e300008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0841a0f0883ed10b84cce *0b08ebbf905c76009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e82de300008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f0f01a0f0883ed10b84cce0b08ebbf905c74009000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8c5e200008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0581b0f0883ed10b84cce0b08ebbf905c72009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e85de200008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c01b0f0883ed10b84cce *0b08ebbf905c6e009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8f5e100008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f0281c0f0883ed10b84cce0b08ebbf905c66009000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e88de100008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0901c0f0883ed10b84cce0b08ebbf905c62009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e825e100008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0f81c0f0883ed10b84cce *0b08ebbf905c61009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8bde000008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f0601d0f0883ed10b84cce0b08ebbf905c26009000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e855e000008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0c81d0f0883ed10b84cce0b08ebbf900300010000000000110000008b4500c745005c1e0f *08890424e81e7af5ff89c6ff650090000000002400000085f67510befcd1110883c5048b45008b *40f0ffe0be04d2110883c5048b45008b40ecebee0300010000000000110000008d45fc3b435472 *0883c7083b7b5c7611c7436c02000000be34fa11088b43fcffe08b450085c0791389c6c74500e8 *1e0f0883ef08b8e4451008ebe4c747fcb8050c0889078d77fc83c5048b45008b40f0ebcd89f600 *0000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8 *ccdc0c088b45008947fc89378d77f883c5088b45008b40ecebe190907d3a20747269656420746f *2074616b6520607072656427206f66206d696e426f756e640000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d9de00008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0241f0f0883ed10 *b84cce0b08ebbf90456e756d2e707265647b009000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e869de00008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0ac1f0f0883ed10b84cce0b08 *ebbf907d3a20747269656420746f2074616b6520607375636327206f66206d6178426f756e6400 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8e1dd00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f01c200f0883ed10b84cce0b08ebbf90456e756d2e737563637b00900000020018 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e871dd00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c7 *45f0a4200f0883ed10b84cce0b08ebbf9066696c655472756e63617465008d7600000002001800 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8fddc00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745 *f014210f0883ed10b84cce0b08ebbf90a8210f0800000000000000000000010000000000110000 *00be04000000ff6500e9f3ffffff909090d0210f08000000000000000000000100000000001100 *0000be03000000ff6500e9f3ffffff909090f8210f080000000000000000000001000000000011 *000000be00080000ff6500e9f3ffffff90909020220f0800000000000000000000010000000000 *11000000be00010000ff6500e9f3ffffff90909048220f08000000000000000000000100000000 *0011000000be40000000ff6500e9f3ffffff90909004fd1108e4e7110850220f08000002001800 *03008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8c5db00008d47f8894604c706245b10088d55f8c702d46d1008894204bee4e71108c745f400 *230f0883ed0c8b06ebc489f6210000002400000083c7083b7b5c760cc7436c020000008b43f8ff *e08b45040b4604c747fc84ed0b0889078d77fc83c508b8d46d1008ebe250220f08000000002400 *01008b4604894500be04fd1108c745fcc4220f0883ed04ff26900400010000000000110000008d *45fc3b4354730abec8fa11088b43fcffe08b7500c745000cd2110883ed04b808121008ebea9090 *0b00020000000000110000008b75048b4500894504e9a2ee00009090656173795f646973706c61 *793a204e6f446f630000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8a5da00008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f068230f0883ed10b84cce0b08ebbf905f27009000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e83dda00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f0e0230f0883ed10b84cce0b08ebbf9094e9110848240f0804000100000000001100010083 *c71c3b7b5c7611c7436c07000000be10fb11088b43fcffe0c747e800250f088b45008947ecc747 *f480250f088d47e88947f8c747fca05e0c088d47f489078d77fc83c5048b45008b40f0ebca8d76 *0004000100010000000c0000008d45fc3b4354720883c7083b7b5c760cc7436c020000008b43fc *ffe0c747fc94b90b088b450089078d47fc8945008b760483ed04b808121008ebdf9048240f0801 *000100130001008d45f03b4354720883c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c7 *00d46d1008897004c747fcb8240f088b460489078d47fc8945f4c745f010f4110883ed10b8604e *0e08ebcf900100000024000000837e042e750a8b750483c5088b06ffe0be78d6110883c5088b45 *008b40e8ebee04000100010000000c0000008d45fc3b435473058b43fcffe08b55008b46048945 *0089d6c745fc54250f0883ed048b06ebe590900400010000000000110000008d45fc3b4354730a *be18fb11088b43fcffe08b7500c74500e0d0110883ed04b808121008ebea909094e91108c8e411 *0868d61108dc250f080400010000000000110007008d45fc3b4354720883c72c3b7b5c7611c743 *6c0b000000be1cfb11088b43fcffe0c747d89c2a0f088b45008947dcc747e4682b0f088d47d889 *47e8c747eca05e0c088d47e48947f0c747f4c42b0f088d47d88947f8c747fca05e0c088d47f489 *078d47ec8945008d47fc8945fc83ed04b838510c08eba8900000000024000000837e042d750fbe *04d2110883c504a1c06d1008ffe0befcd1110883c504a1c46d1008ebef01000100130000008d45 *f43b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f478260f0883ed0c8b06eb *e189f6c74500a4e91108c745fc3cfd110883ed04e91226ffff89f683c7083b7b5c760cc7436c02 *0000008b43f8ffe08b46043d00000080750fbec8e4110883c50483ef088b06ebe5f7d8c747fcb8 *050c0889078d77fc83c504a1c46d1008ebcd8d760083c70c3b7b5c760cc7436c030000008b43f8 *ffe08b5608f7dac747f8ccdc0c088b46048947fc89178d77f883c504a1c06d1008ebdd8d760030 *270f08e8260f08e0250f0800000000250001008b4504894500c745fca4e91108c745f83cfd1108 *c745047c270f0883ed08e95925ffff907c270f08d0260f08e0250f080100000025000100e0250f *0802000000150001008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *f48b7604c745f0b4270f0883ed108b06ebdbe0250f0804000100020000000e0001008d45fc3b43 *54720883c7143b7b5c760cc7436c050000008b43fcffe0c747f0c0270f088b46048947f48b4500 *8947f8c747fc94b90b088d47f089078d47fc8945008b760883ed04b808121008ebcc89f6dc250f *0804000100010000000c0003008d45fc3b4354720883c7183b7b5c760cc7436c060000008b43fc *ffe0c747eca4260f088b45008947f0c747f800280f088d47ec8947fc8b460489078d47f8894500 *c745fc10f4110883ed04b8604e0e08ebc889f601000100130000008d45ec3b435473058b43f8ff *e08d45f8c700d46d10088970048b46048945f4c745f0a4e91108c745ec3cfd110883ed14b8f84c *0e08ebd49004000100010000000c0000008d45fc3b4354720883c7143b7b5c760cc7436c050000 *008b43fcffe0c747f0bc280f088b45008947f4c747fc94b90b088d47f089078d47fc8945008b76 *0483ed04b808121008ebd2dc250f0801000100130001008d45f03b4354720883c7083b7b5c760c *c7436c020000008b43f8ffe08d45f8c700d46d1008897004c747fc00290f088b460489078d47fc *8945f4c745f010f4110883ed10b8604e0e08ebcf900100000024000000837e042b75128b450489 *750489c683c504b860280f08ffe0be78d6110883c5088b45008b40e8ebee04000100010000000c *0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fca8290f0883ed048b06 *ebe589f60100000024000000837e042d75128b450489750489c683c504b860280f08ffe0be78d6 *110883c5088b45008b40e8ebee04000100010000000c0000008d45fc3b435473058b43fcffe08b *55008b460489450089d6c745fc0c2a0f0883ed048b06ebe589f6897500e9c826fdff682a0f0868 *2a0f08682a0f08682a0f08682a0f08e4250f080100000025000100dc250f080100010013000700 *8d45e83b4354720883c7343b7b5c760cc7436c0d0000008b43f8ffe08d45f8c700d46d10088970 *04c747d060280f088b46048947d4c747d854290f088b46048947dcc747e4dc290f088d47d08947 *e8c747eca05e0c088d47e48947f0c747f4402a0f088d47d08947f8c747fca05e0c088d47f48907 *8d47ec8945ec8d47fc8945e88d47d88945f4c745f0902a0f0883ed18b838510c08eb8201000000 *24000000837e0445750a8b750483c5088b06ffe0be78d6110883c5088b45008b40e8ebee040001 *00010000000c0000008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fc3c2b0f *0883ed048b06ebe589f60100000024000000837e0465750a8b750483c5088b06ffe0be78d61108 *83c5088b45008b40e8ebee04000100010000000c0000008d45fc3b435473058b43fcffe08b5500 *8b460489450089d6c745fc982b0f0883ed048b06ebe590900400010000000000110000008d45fc *3b4354730abe24fb11088b43fcffe08b7500c74500e0d0110883ed04b808121008ebea9090a4e8 *110844fd11085cfd1108202c0f0800000200180007008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8f1d100008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f46cfd1108c745f054fd110883ed10b8dc330e08ebbf90040001 *0000000000110000008d45fc3b4354730abe48fb11088b43fcffe08b45008945fcc74500d42c0f *0883ed04b8c4490f08ebe78d7600000000002400000083c7083b7b5c760ec7436c02000000b8f0 *371008ffe0c747fc84ed0b0889378d77fc83c5048b4500ebea9090040001000000000011000000 *8b7500c74500202d0f08ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8ff *e08b4e08b84dc5f4b2f7e98954240c8d040ac1f8148944240889c8998b44240829d069c067e316 *0029c1894c24148b4e04b84dc5f4b2f7e98d040ac1f8148944240889c8998b44240829d069c067 *e3160029c18b5424148d0c0ab84dc5f4b2f7e98954240c8d040ac1f8148944240889c8998b4424 *0829d069c067e3160029c1c747fc84ed0b08890f8d77fc83c5048b4500e968ffffff90900b0002 *0000000000110000008d45fc3b4354730abe50fb11088b43fcffe08b7500c74500482e0f088b06 *ebf062000000240000008b45083b4604752b8b45043b46080f94c00fb6c08944240883c50c8b34 *852cdc0b088b542408c1e2028b450029d08b40f0ffe0befcd1110883c50c8b4500ebee01000000 *240000008b46088945008b55048b460489450489d6c745fc002e0f0883ed04ff2690909090fd11 *08682e0f080800020000000000110001008d45fc3b4354730abe5cfb11088b43fcffe0837d0000 *78058b7500eb078b450089c6f7de83ed04b8b82e0f08ebe289f6682e0f08620000002400010083 *7d08007824837d040075158b450889c685c0752fbe90fd110883c50c8b06ffe08b450885c0741c *eb24837d0400750d8b450885c074de89c6f7deeb078b450885c0750883c50c8b4500ebd3f7d889 *430483c50cb8f44f1008ebc49069732061206469726563746f7279009000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8fdce *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0142f0f *0883ed10b84cce0b08ebbf9066696c65206973206c6f636b6564009000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e889ce00 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0882f0f08 *83ed10b84cce0b08ebbf9068616e646c65206973206e6f74206f70656e20666f72207265616469 *6e67009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e805ce00008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f0fc2f0f0883ed10b84cce0b08ebbf905072656c7564652e282121293a *20696e64657820746f6f206c617267650a009000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e881cd00008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f080300f0883ed10b84cce0b08eb *bf9054d21108c0fd110804310f0800000200180003008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e811cd00008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f4c0fd1108be54d2110883ed10b808121008ebc190909054d211 *08d0fd110874310f0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8a1cc00008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f4d0fd1108be54d2110883ed10b808121008ebc1909090d8fb1108e0fd1108 *e4310f080b00020000000000110003008d45f43b4354730abed8fb11088b43fcffe08b45048945 *f8c745f490e41108c745fcc8340f0883ed0cb8b8ff0d08ebe083c7083b7b5c760cc7436c020000 *008b43f8ffe08b450499f77e04c747fcb8050c0889178d77fc83c5088b45008b40f0ebe089f6e4 *310f08420000002400010083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ff *e0c747f8ccdc0c088b45008947fc89378b450889450c8d47f889450883c508b8fc310f08ebd989 *f68975008b7504c745fc6c320f0883ed04e9bf1201008d7600b0320f082c320f08e4310f082100 *000025000100e4310f08010000002400010083c70c3b7b5c7615c7436c03000000c74320ff0000 *01b8b03d1008ffe0c747f8ccdc0c088b45008947fc89378d47f889450483c504b8fc310f08ebdf *8b46043d000000807513be00000080c74500e8320f08b884451008ffe08b7504894504c74500dc *320f088b06ebed89f6000000002400000083c7083b7b5c760ec7436c02000000b8f0371008ffe0 *c747fcb8050c0889378d77fc83c5048b45008b40f0ebe78d760000000000240000008b45008943 *04c745045c330f0883c504e93b1d01008d760042000000240000008b450089430c8973088b4508 *8943048b750cc7450c94330f0883c50ce9371701008d76008b7604c74500b4330f08e99d110100 *90000000002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c7 *47f8ccdc0c088b45008947fc89378d77f883c5088b45008b40ecebe189f68b460489430c8b4608 *8943088b45048943048b7508c74508f0330f0883c508e9bc1601002c340f08d8330f0800000000 *42000000250000008b46048945008b55048b460889450489d6c745fc64340f0883ed04ff268d76 *0064340f0824330f08e4310f0801000000250001008b7504c7450498340f0883c504ff2690bee0 *fd110883c50cff2689f6a8340f0898340f08e4310f0802000000250003000b0002000000000011 *0000008d45f43b4354730abee0fb11088b43fcffe0c745f8f0fd11088b45008945f4c745fcdc36 *0f0883ed0cb824080f08ebe083c7143b7b5c760cc7436c050000008b43f8ffe08b460483c030c7 *47f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450889078d47f889450883c504b8d434 *0f08ebcc89f6020000002400000083c7143b7b5c760ec7436c05000000b8f0371008ffe08d4630 *c747f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450889078d47f889450883c504b8d4 *340f08ebcf8d76008b46048943048b7608c7450054350f08e9331b01008d76009c350f0804350f *0800000000020000002500000001000000240000008975048b7500c74500c8350f08ff2690c745 *00f0fd11088b45048945fcc74504d0350f0883ed04e93c7effff83c7143b7b5c760cc7436c0500 *00008b43f8ffe08b460483c030c747f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b4504 *89078d77f883c5088b45008b40ecebce010000002400000083c7143b7b5c760ec7436c05000000 *b8f0371008ffe08d4630c747f03cdc0b088947f4c747f87cdc0b088d47f08947fc8b450489078d *77f883c5088b45008b40ecebd1908b46048943048b7608c7450048360f08e9431a01008d76008c *360f08fc350f080000000001000000250000008b7504c74504b8360f0883c504ff2690b8360f08 *e0350f080000000002000000250000000400010000000000110000008b750083c504ff2654d211 *08ccf81108f0360f0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e825c700008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f4ccf81108be54d2110883ed10b808121008ebc1909090526174696f2e253a *207a65726f2064656e6f6d696e61746f720089f600000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a5c600008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f060370f0883ed10b84cce0b08 *ebbf905cfe1108e0370f080b00020000000000110001008d45f43b4354730abe38fc11088b43fc *ffe08b45048945f8c745f4bcf81108c745fc6c380f0883ed0cb8b8ff0d08ebe000000000240000 *0083c508ff268d76008b45048945008b4508894504c745082c380f08e9b4130000be5cfe110883 *c50cff2689f64c380f0834380f08e0370f0802000000250001006cfe11086c380f080b00020000 *000000110001008d45f43b4354730abe40fc11088b43fcffe08b45048945f8c745f4bcf81108c7 *45fcf8380f0883ed0cb8b8ff0d08ebe000000000240000008b750083c508ff268b45048945008b *4508894504c74508b8380f08e928130000be6cfe110883c50cff2689f6d8380f08c0380f086c38 *0f080200000025000100d8fb1108f8380f080400010000000000110001008d45f83b4354730abe *48fc11088b43fcffe0c745fc0cfc11088b45008945f8c74500c0390f0883ed08b8fc310f08ebe0 *837e04007510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0ebee89 *f6000000002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45 *008b40f0ebeec74308000000008b46048943048b7608c745006c390f08e98c16010090390f083c *390f080000000000000000250000005cf11108c0390f080300010000000000110001008d45f83b *4354720883c7083b7b5c7611c7436c02000000be50fc11088b43fcffe0c747fcb8050c088b4500 *8907c745fca0e411088d47fc8945f8c74500483a0f0883ed08b8f4d50c08ebd490c7450034f111 *088975fc83ed04e92e82ffff89f6203a0f08203a0f08c0390f08000000002500010094fe110848 *3a0f080400010000000000110001008d45fc3b4354730abe58fc11088b43fcffe08b45008945fc *c74500903a0f0883ed04b890560f08ebe78d7600000000002400000083c70c3b7b5c7615c7436c *03000000c74320fe000001b8b03d1008ffe0c747f8cc130e088977fc8b450089078d77f883c508 *8b4500ebe4909cfe1108c83a0f080b00020000000000110001008d45fc3b4354730abe60fc1108 *8b43fcffe08b45008945fc8b4504894500c74504143b0f0883ed04b8b4580f08ebe19000000000 *2400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e *088977fc8b450089078d77f883c5088b4500ebe4900400010000000000110000008b750083c504 *ff2694e11108603b0f080b00020000000000110001008d45f43b4354730abe98fc11088b43fcff *e08b45048945f8c745f4bcf81108c745fcd03b0f0883ed0cb8b8ff0d08ebe083c504e9a0130000 *be94e1110883c508e9e3cb00008d7600ac3b0f08a43b0f08603b0f08020000002500010094e111 *08d03b0f080b00020000000000110001008d45f43b4354730abea0fc11088b43fcffe08b450489 *45f8c745f4bcf81108c745fc403c0f0883ed0cb8b8ff0d08ebe083c504e9b4120000be94e11108 *83c508e973cb00008d76001c3c0f08143c0f08d03b0f08020000002500010094e1110898f81108 *403c0f080b00020000000000110003008d45f43b4354730abea8fc11088b43fcffe08b45048945 *f8c745f4bcf81108c745fcb43c0f0883ed0cb8b8ff0d08ebe083c504e9d0c8ffffbe94e1110883 *c508e9ffca00008d7600903c0f08883c0f08403c0f08020000002500030094e11108d8fb1108b4 *3c0f080b00020000000000110003008d45f43b4354730abeb0fc11088b43fcffe08b45048945f8 *c745f4bcf81108c745fc283d0f0883ed0cb8b8ff0d08ebe083c504e9f8f4ffffbe94e1110883c5 *08e98bca00008d7600043d0f08fc3c0f08b43c0f08020000002500030018fc1108283d0f080b00 *0200000000001100010081c7d00000003b7b5c7611c7436c34000000beccfc11088b43fcffe0c7 *8734ffffff0c5f10088b4504898738ffffffc78740ffffff985f10088d8734ffffff898744ffff *ffc7874cffffffc03e0f088b4500898750ffffffc78758ffffff0c5f10088d8734ffffff89875c *ffffffc78764ffffff103f0f088d8758ffffff898768ffffffc78770ffffff603f0f08898774ff *ffffc7877cffffff943f0f088b4504894780c747880c5f10088b450489478cc747940c5f10088d *4788894798c747a0e43f0f088d47948947a4c747ac34400f088947b0c747b884400f088947bcc7 *47c470430f088b45048947c88b45008947cc8d877cffffff8947d08d47888947d48d47948947d8 *8d47a08947dc8d47ac8947e08d47b88947e4c747e818450f088d8740ffffff8947ec8d874cffff *ff8947f08d8758ffffff8947f48d8764ffffff8947f88d8770ffffff8947fc8d47c489078d77e8 *83c5088b4500e9bafeffff0000000024000000c7450034f111088b762483ed04e952d3000089f6 *01000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745f4 *a43e0f0883ed0c8b06ebe189f60000000024000000c74500bcf811088b762483ed04e902d30000 *89f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c7 *45f4f43e0f0883ed0c8b06ebe189f60000000024000000c7450034f111088b762483ed04e9b2d2 *000089f601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b76 *04c745f4443f0f0883ed0c8b06ebe189f601000100130000008d45f43b435473058b43f8ffe08d *45f8c700d46d10088970048b46048945f483ed0cb8c05b0f08ebe28d76000000000024000000c7 *4500bcf811088b762483ed04e92ed2000089f601000100130000008d45f03b435473058b43f8ff *e08d45f8c700d46d10088970048b7604c745f4c83f0f0883ed0c8b06ebe189f600000000240000 *00c7450034f111088b762483ed04e9ded1000089f601000100130000008d45f03b435473058b43 *f8ffe08d45f8c700d46d10088970048b7604c745f418400f0883ed0c8b06ebe189f60000000024 *000000c745000cfc11088b762483ed04e98ed1000089f601000100130000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d10088970048b7604c745f468400f0883ed0c8b06ebe189f6020000 *00240000008b7610e954d5000003000000120000008d45ec3b435473058b43f8ffe08d45f8c700 *d46d10088970048b460c8945f08b46088945f48b7604c745ecb8400f0883ed148b06ebd589f602 *000000240000008b760ce904d5000003000000120000008d45ec3b435473058b43f8ffe08d45f8 *c700d46d10088970048b460c8945f08b46088945f48b7604c745ec08410f0883ed148b06ebd589 *f683c7203b7b5c760cc7436c080000008b43f8ffe0c747e4c8400f088b45248947e88b45348947 *ec8b45308947f0c747f418410f088b451c8947f88b45148947fc8b450489078d47e48945348b45 *3089452c8d47f48945308b750c83c52cb870430f08ebae02000000240000008b7618e950d40000 *03000000120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f0 *8b46088945f48b7604c745ecbc410f0883ed148b06ebd589f601000000240000008b4504894500 *8b761083ed04e9f7d300008d760002000000150000008d45ec3b435473058b43f8ffe08d45f8c7 *00d46d10088970048b46088945f48b7604c745f00c420f0883ed108b06ebdb83c71c3b7b5c760c *c7436c070000008b43f8ffe0c747e8cc410f088b45288947ec8b45108947f08b45048947f4c747 *f828420f088b45248947fc8b453089078d47e88945048d77f883c504b8c8420f08ebc089f65842 *0f0850410f08000000004d840000250000000b610000240000008b45008945f889752c8b751cc7 *45fcc0420f0883ed0ce925cf0000908b45288945fc8b752483ed04ebd689f68b752c83c52ce99d *c4000090f4420f08e4420f08000000000b010000250000000b000000240000008b45288945fc8b *45108945f88b7608c7450014430f0883ed0ce9dad2000089f60b000000240000008b7604c74500 *1c430f08ff260b000000240000008b7608c7450044430f08ff2616000300080000000b0000008d *45cc3b435473058b43fcffe08975e08b46208945e48b461c8945e88b46188945ec8b46148945f0 *8b460c8945f48b46088945f88b46048945fc8b7610c745dc58430f0883ed248b06ebc090be18fc *110883c51ce9d3c300008d760002000000240000008b760ce938d2000003000000120000008d45 *ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604c7 *45ecd4430f0883ed148b06ebd589f683c7103b7b5c760cc7436c040000008b43f8ffe0c747f4e4 *430f088b45108947f88b45088947fc8b451c89078b451889451c8945148d47f48945188b750483 *c514b870430f08ebca1c440f08bc430f08283d0f0887020000250001008b45108945008b452089 *45fc8b7504c7450478440f0883ed08e97ed1000089f68b751883c520e9f9c200009098440f0878 *440f08283d0f080800000025000100283d0f0808000000240001008b45208945fc8b45108945f8 *8b7608c74500b8440f0883ed0ce932d1000089f6283d0f0807000000240001008b46108945008b *7604c745fcc4440f0883ed04ff268d7600283d0f080b000200060000000b0001008d45d83b4354 *73058b43fcffe08b46188945ec8b46148945f08b46108945f48b460c8945f88b46088945fc8b76 *04c745e8f0440f0883ed188b06ebcf4e554c0000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c9b800008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f054450f0883ed10b84cce0b08eb *bf90756e6b6e6f776e2066696c6520747970650089f600000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e851b800008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0bc450f0883ed10b84cce *0b08ebbf9000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8edb700008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f498460f0883ed0cb8285f0f08ebc6000000002400000083c7083b7b5c7615c7436c02 *000000c74320ff000000b8b03d1008ffe0c747fc84ed0b0889378d77fc83c504b8d46d1008ebe8 *90534f480000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e851b700008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0cc460f0883ed10b84cce0b08ebbf9044fd110834470f0804000100 *00000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be54fd11088b43fc *ffe0c747f0a4470f088b45008947f4c747fce0470f088d47f089078d47fc894500c745fc44fd11 *0883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f480f411088b760483ed10b808121008ebde8d76000400010001000000 *0c0000008b760483c504ff26534f009000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e835b600008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0e8470f0883ed10b84cce0b08ebbf905c *fd110850480f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05 *000000be6cfd11088b43fcffe0c747f0c0480f088b45008947f4c747fcfc480f088d47f089078d *47fc894500c745fc5cfd110883ed04b878e00e08ebce8d760001000100130000008d45f03b4354 *73058b43f8ffe08d45f8c700d46d1008897004c745f488f411088b760483ed10b808121008ebde *8d760004000100010000000c0000008b760483c504ff2628ff110804490f080400010000000000 *110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be74fd11088b43fcffe0c747 *f074490f088b45008947f4c747fcb0490f088d47f089078d47fc894500c745fc28ff110883ed04 *b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f478f411088b760483ed10b808121008ebde8d760004000100010000000c000000 *8b760483c504ff260400010000000000110000008d45fc3b4354730abe8cfd11088b43fcffe0c7 *45fc0000000083ed04b860600f08ebed9054d2110854ff1108e8490f0800000200180003008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e82db4 *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f454ff1108be54d2110883 *ed10b808121008ebc1909090000000000a000400ff6500904748432e4e756d2e676364496e7465 *6765723a206763642030203020697320756e646566696e6564008d760000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e891b3 *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0644a0f *0883ed10b84cce0b08ebbf905072656c7564652e496e74656772616c2e71756f747b496e746567 *65727d3a2064697669646520627920300000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e801b300008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f0f44a0f0883ed10b84cce0b08ebbf90 *54d2110864ff1108844b0f0800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e891b200008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f464ff1108be54d2110883ed10b808121008ebc19090900b00020000 *000000110000008d45f43b4354730abef8fd11088b43fcffe08b7500c74500c44e0f088b06ebf0 *210000002400000083c7103b7b5c760ec7436c04000000b8f0371008ffe0c747f4b8050c088977 *f8c747fcb8050c088b450489078d47f48945048d77fc83c5048b4504ebd78d7600620000002400 *00008b45048945008b45088945fc897508c74504284c0f0883ed04e9fe44feff89f68b46048945 *f88b45048945f48b4604894500c745fc704c0f0883ed0ce92745feff8d76004200000024000000 *83c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b4500 *8947fc89378b450889450c8d47f889450883c508b8004c0f08ebd989f68975008b7504c745fcbc *4c0f0883ed04e96ff800008d7600004d0f08904c0f080000000021000000250000000100000024 *00000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c08 *8b45008947fc89378d47f889450483c504b8004c0f08ebdf8b46043d000000807513be00000080 *c74500344d0f08b884451008ffe08b7504894504c745002c4d0f088b06ebed89f6010000002400 *000083c70c3b7b5c7615c7436c03000000c74320ff000001b8b03d1008ffe0c747f8ccdc0c088b *45008947fc89378b45088945048d47f889450883c504b8004c0f08ebd989f68b7604c74508a84d *0f0883c508e986f7000089f6000000002400000083c7183b7b5c7615c7436c06000000c74320ff *000102b8b03d1008ffe0c747ecccdc0c088b45088947f08b45008947f4c747f8ccdc0c088b4504 *8947fc89378d47ec89450c8d77f883c50c8b4504ebcb8b460489430c8b46088943088b45048943 *048b7508c7450c084e0f0883c50ce9b8000100584e0f08ec4d0f08000000004300000025000000 *8b46048945fc8b46088945008b450489750489c6c745f8904e0f0883ed08ff26904e0f08704d0f *080000000001000000250000000b00020000000000110000008d45fc3b4354730abefcfd11088b *43fcffe08b45008945fc8b4504894500c74504084f0f0883ed04b8004c0f08ebe1900000000024 *00000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8e4bb0b08 *8977fc8b450089078d77f883c5088b4500ebe4900b00020000000000110000008d45fc3b435473 *0abe00fe11088b43fcffe08b45008945fc8b4504894500c74504844f0f0883ed04b838b40e08eb *e190000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0 *c747f8e4bb0b088977fc8b450089078d77f883c5088b4500ebe490040001000000000011000000 *8d45fc3b4354730abe04fe11088b43fcffe08b45008945fcc74500a0e4110883ed04b88cd10c08 *ebe79090900400010000000000110000008d45fc3b4354730abe30fe11088b43fcffe08b450089 *45fcc74500a0e4110883ed04b8acd80c08ebe79090900400010000000000110000008d45fc3b43 *54730abe34fe11088b43fcffe08b45008945fcc74500a0e4110883ed04b890660f08ebe7909090 *0b000200000000001100000083c70c3b7b5c7611c7436c03000000be38fe11088b43fcffe0c747 *f8b0500f088b45008947fc8b450489078d47f8894504b890660f08ebdf02000000150000008d45 *f03b435473058b43f8ffe08d45f8c700d46d10088970048b46048945f48b46088945f083ed10b8 *8cd10c08ebdc900b00020000000000110000008d45fc3b4354730abe3cfe11088b43fcffe08b45 *008945fcc74500a0e4110883ed04b860680f08ebe79090901600030000000000110000008d45f4 *3b4354730abe40fe11088b43fcffe08b45008945f88b45048945f4c745fc74510f0883ed0cb88c *d10c08ebe19089750883c504e9011700009054510f0854510f0800000000430000002500000004 *00010000000000110000008b7500c74500d0510f08ff2683c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8cc130e088977fcc70734f111088d77f883c5048b4500ebe3908c510f088c510f *08000000000000000025000000c8e41108d0510f080400010000000000110001008d45fc3b4354 *730abe48fe11088b43fcffe08b45008945fcc7450018520f0883ed04b8046b0f08ebe78d760000 *0000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8 *cc130e088977fc8b450089078d77f883c5088b4500ebe4900400010000000000110000008d45fc *3b4354730abe50fe11088b43fcffe08b45008945fcc7450090520f0883ed04b8246a0f08ebe78d *7600000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0 *c747f8cc130e088977fc8b450089078d77f883c5088b4500ebe490c8e41108c8520f0804000100 *00000000110001008d45fc3b4354730abe54fe11088b43fcffe08b45008945fcc7450010530f08 *83ed04b828690f08ebe78d7600000000002400000083c70c3b7b5c7615c7436c03000000c74320 *fe000001b8b03d1008ffe0c747f8cc130e088977fc8b450089078d77f883c5088b4500ebe49094 *e1110848530f0800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8d1aa00008d47f8894604c706245b10088d55f8c702d46d10 *08894204be94e11108c745f4bc530f0883ed10b89c071008ebc18d760000000000240000008b76 *0483c504ff2694e11108c4530f0800000200180001008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e855aa00008d47f8894604c706245b10088d *55f8c702d46d1008894204be94e11108c745f438540f0883ed10b89c071008ebc18d7600000000 *00240000008b760883c504ff265cf1110840540f080b00020000000000110001008d45f43b4354 *730abe7cfe11088b43fcffe08b7500c7450050550f088b06ebf0000000002400000083c70c3b7b *5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e088977fc8b45008907 *8d77f883c5088b4500ebe4908b45048945008975fcc745047c540f0883ed04e99467ffffb4540f *08b4540f0840540f0801000000250001008b45048945008b45088945fc897508c74504e0540f08 *83ed04e9f680fdff89f6e0540f08e0540f0840540f08020000002500010040540f080200000024 *0001008b46088945fc8b45048945f88b4604894504c7450014550f0883ed08e9b380fdff8d7600 *40540f0801000000240001008b46088945008b55048b460489450489d6c745fc20550f0883ed04 *ff269090905cf1110870550f080b00020000000000110001008d45fc3b4354730abe84fe11088b *43fcffe08b45008945fc8b4504894500c74504bc550f0883ed04b804700f08ebe1900000000024 *00000083c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e08 *8977fc8b450089078d77f883c5088b4500ebe4905cf11108f4550f080b00020000000000110001 *008d45fc3b4354730abe8cfe11088b43fcffe08b45008945fc8b4504894500c7450440560f0883 *ed04b854710f08ebe190000000002400000083c70c3b7b5c7615c7436c03000000c74320fe0000 *01b8b03d1008ffe0c747f8cc130e088977fc8b450089078d77f883c5088b4500ebe490c8e41108 *5cf1110878560f080400010000000000110003008d45ec3b4354730abe94fe11088b43fcffe08b *7500c7450080580f088b06ebf08b450489450c89750883c508e99f65ffff8d7600b0560f08b056 *0f087c560f08c3000000250001008975fc8b450c8945f8c74500d8560f0883ed08e9047ffdffd8 *560f08d8560f087c560f084300000025000100837e0400781d837e04007510be90e41108c74500 *04570f088b06ffe0bea0e41108ebeebe98e41108ebe789f67c560f08430000002400010085f67f *1b85f67510be90e41108c7450004570f088b06ffe0be98e41108ebeebea0e41108ebe789f6c743 *08000000008b46048943048b7608c745003c570f08e9b8f8000064570f0804570f087c560f0843 *000000250001008975008b7504c745fc94570f0883ed04ff2689f694570f0894570f087c560f08 *020000002500010083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d000000807507be *c8e41108eb2085c0791cf7d8c747fcb8050c0889078d77fcc74500bc570f08b894570f08ebcdc7 *4500bc570f0883ef088b06ebbf9083c70c3b7b5c760cc7436c030000008b43f8ffe0837e080079 *258b5608f7dac747f8ccdc0c088b46048947fc89178d77f8c74500bc570f08b894570f08ebd3c7 *4500bc570f0883ef0c8b06ebc58d760010580f08bc570f0878560f08020000002500030078560f *0800000000240003008b46088945008b46048945fc8b7604c745f874580f0883ed08ff2690c8e4 *11085cf111089c580f080b00020000000000110003008d45ec3b4354730abe9cfe11088b43fcff *e08b7500c745002c5b0f088b06ebf08b450489451089750c83c50ce97b63ffff8d7600d4580f08 *d4580f08a0580f08c4010000250001008b45108945fc8975f8c74500fc580f0883ed08e9e07cfd *fffc580f08fc580f08a0580f08c4000000250001008b45108945fc8b450c8945f8897510c74500 *28590f0883ed08e9ae7cfdff89f628590f0828590f08a0580f084400000025000100837e040078 *1d837e04007510be90e41108c745005c590f088b06ffe0bea0e41108ebeebe98e41108ebe789f6 *a0580f08440000002400010085f67f1b85f67510be90e41108c745005c590f088b06ffe0be98e4 *1108ebeebea0e41108ebe789f6c74308000000008b46048943048b7608c7450094590f08e960f6 *0000bc590f085c590f08a0580f0844000000250001008975008b7504c745fcec590f0883ed04ff *2689f6ec590f08ec590f08a0580f08030000002500010083c7083b7b5c760cc7436c020000008b *43f8ffe08b46043d000000807507bec8e41108eb2085c0791cf7d8c747fcb8050c0889078d77fc *c74500145a0f08b8ec590f08ebcdc74500145a0f0883ef088b06ebbf9083c70c3b7b5c760cc743 *6c030000008b43f8ffe0837e080079258b5608f7dac747f8ccdc0c088b46048947fc89178d77f8 *c74500145a0f08b8ec590f08ebd3c74500145a0f0883ef0c8b06ebc58d7600685a0f08145a0f08 *9c580f080300000025000300897500c745fccc5a0f0883ed04ff2690cc5a0f08cc5a0f089c580f *0802000000250003009c580f0802000000240003008b46048945fc8b45088945f88b4608894508 *c74500f05a0f0883ed08e9d77afdff8d76009c580f0801000000240003008b46048945008b5504 *8b460889450489d6c745fcfc5a0f0883ed04ff26909090d8dc1108c4fe11084c5b0f0800000200 *180003008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8c9a200008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4c4fe1108 *83ed0cb824fc0c08ebc604000100000000001100000083c7383b7b5c7611c7436c0e000000bed8 *fe11088b43fcffe0c747cc0c5f10088b45008947d0c747d8605c0f088d47cc8947dcc747e4c45c *0f088947e8c747f0c45d0f088b45008947f48d47cc8947f88d47d88947fc8d47e489078d77f083 *c5048b4500ebb189f60000000024000000c745000cfc11088b762483ed04e9c6b5000089f60000 *0000240000008b7604c74500305c0f08ff2601000100130000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d10088970048b7604c745f44c5c0f0883ed0c8b06ebe189f60000000024000000 *c74500bcf811088b762483ed04e962b5000089f600000000240000008b7604c74500945c0f08ff *2601000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10088970048b7604c745 *f4b05c0f0883ed0c8b06ebe189f602000000240000008b760ce914b9000003000000120000008d *45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f08b46088945f48b7604 *c745ecf85c0f0883ed148b06ebd589f6040000002400000083c7103b7b5c760cc7436c04000000 *8b43f8ffe0c747f4085d0f088b450c8947f88b45088947fc8b451089078b45048945108d47f489 *450c8b760883c508b814161008ebcd8d760004000000240000008b7604c74500485d0f08ff2604 *000000240000008b7608c74500985d0f08ff2604000100040000000b0000008d45f03b43547305 *8b43fcffe08b46108945f48b460c8945f88b46048945fc8b7608c745f0ac5d0f0883ed108b06eb *db5cf11108f45d0f080400010000000000110001008d45f83b4354730abedcfe11088b43fcffe0 *c745fca0e411088b45008945f8c74500a85e0f0883ed08b8f4d50c08ebe0000000002400000083 *c70c3b7b5c7615c7436c03000000c74320fe000001b8b03d1008ffe0c747f8cc130e088977fc8b *450089078d77f883c5088b4500ebe490c745fc34f111088975f8c74500405e0f0883ed08e9cf5d *ffff8d7600785e0f08785e0f08f45d0f080000000025000100534f480000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8759f *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0a85e0f *0883ed10b84cce0b08ebbf90305f0f080000000000000000000001000000000011000000be0002 *0000ff6500e9f3ffffff9090904e554c0000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e59e00008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f0385f0f0883ed10b84cce0b08ebbf90 *18001208a05f0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c *05000000be38ff11088b43fcffe0c747f010600f088b45008947f4c747fc4c600f088d47f08907 *8d47fc894500c745fc1800120883ed04b878e00e08ebce8d760001000100130000008d45f03b43 *5473058b43f8ffe08d45f8c700d46d1008897004c745f490f411088b760483ed10b808121008eb *de8d760004000100010000000c0000008b760483c504ff260900020000000000110000008d45fc *3b4354730abe50ff11088b43fcffe08b7504c745fcf8600f0883ed048b06ebed908b750483c50c *ff65008d760022000000240000008b4d04c1e107b84dc5f4b2f7e98d040ac1f8148944240889c8 *998b44240829d069c067e3160029c189c803460489450483c504e990ffffff8b46088945088b76 *04c7450098600f08ff2689f6d0600f0884600f080000000062000000250000004748432e426173 *652e676364496e743a206763642030203020697320756e646566696e65640089f6000002001800 *00008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e8019d00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4f8600f0883ed *0cb864d60b08ebc65072656c7564652e496e74656772616c2e72656d7b496e74656765727d3a20 *6469766964652062792030009000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8799c00008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f07c610f0883ed10b84cce0b08ebbf900b000200 *00000000110000008d45fc3b4354730abe74ff11088b43fcffe08b7500c74500c4630f088b06eb *f08b45043b46040f9ec00fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0 *ff60f08d7600000000002400000089f0f7d0c1e81f8944240883c5048b34852cdc0b088b542408 *c1e2028b450029d0ff60f08b45048943088b46048943048b7608c745046c620f0883c504e98aed *000089f690620f0838620f080000000021000000250000008b55048b460489450489d6c74500c4 *620f08ff26000000002400000085f60f9ec00fb6c08944240883c5048b34852cdc0b088b542408 *c1e2028b450029d0ff60f08d76008b46048943088b45048943048b7508c74508e0620f0883c508 *e912ed000089f6000000002400000085f60f9ec00fb6c08944240883c5048b34852cdc0b088b54 *2408c1e2028b450029d0ff60f08d76008b460489430c8b46088943088b45048943048b7508c745 *0830630f0883c508e90ced000058630f0808630f080000000042000000250000008b4604894500 *8b55048b460889450489d6c745fc90630f0883ed04ff268d760090630f08c4620f080000000001 *000000250000000b00020000000000110000008d45f43b4354730abe78ff11088b43fcffe08b45 *048945f88b45008945f4c745fc24640f0883ed0cb818620f08ebe1908b750483c50cff268b7508 *83c50cff2608640f0800640f080000000002000000250000000b00020000000000110000008d45 *f43b4354730abe7cff11088b43fcffe08b45048945f88b45008945f4c745fc84640f0883ed0cb8 *18620f08ebe1908b750883c50cff268b750483c50cff2668640f0860640f080000000002000000 *250000000b00020000000000110000008d45fc3b4354730abe80ff11088b43fcffe08b7500c745 *0084660f088b06ebf08b45043b460474253b46047e10be1cd2110883c5088b45008b40e8ffe0be *14d2110883c5088b45008b40f0ebeebe18d2110883c5088b45008b40ecebde8d76000000000024 *00000085f67f2485f67810be18d2110883c5048b45008b40ecffe0be1cd2110883c5048b45008b *40e8ebeebe14d2110883c5048b45008b40f0ebde8b45048943088b46048943048b7608c74504f8 *640f0883c504e9eaea000089f630650f08b0640f080000000021000000250000008b55048b4604 *89450489d6c7450064650f08ff26000000002400000085f6782485f67f10be18d2110883c5048b *45008b40ecffe0be1cd2110883c5048b45008b40e8ebeebe14d2110883c5048b45008b40f0ebde *8b46048943088b45048943048b7508c7450880650f0883c508e962ea000089f600000000240000 *0085f6782485f67f10be18d2110883c5048b45008b40ecffe0be1cd2110883c5048b45008b40e8 *ebeebe14d2110883c5048b45008b40f0ebde8b460489430c8b46088943088b45048943048b7508 *c74508e0650f0883c508e94cea000018660f08b8650f080000000042000000250000008b460489 *45008b55048b460889450489d6c745fc50660f0883ed04ff268d760050660f0864650f08000000 *0001000000250000000b000200000000001100000083c7183b7b5c7611c7436c06000000be84ff *11088b43fcffe0c747ec1c670f088b45008947f08b45048947f4c747f87cdc0b088b45008947fc *8d47ec89078d77f883c5088b45008b40ecebcb02000000150000008d45f03b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945f48b46048945f083ed10b8acd80c08ebdc90020000 *00150000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d4 *6d1008897004c747f8e4660f088b46048947fc8b460889078b46088945f48d47f88945f083ed10 *b890660f08ebca16000300000000001100000083c7103b7b5c7611c7436c04000000be88ff1108 *8b43fcffe0c747f4fc670f088b45048947f88b45008947fc8b450889078d47f48945088b7500b8 *14161008ebd68d760002000000150000008d45f03b435473058b43f8ffe08d45f8c700d46d1008 *8970048b46088945f48b46048945f083ed10b8acd80c08ebdc9003000000120000008d45ec3b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700d46d1008897004c747f8c4 *670f088b46048947fc8b460c89078b460c8945f48d47f88945f08b46088945ec83ed14b878670f *08ebc490901600030000000000110000008d45f43b4354730abe8cff11088b43fcffe0c745f890 *e411088b45048945f4c745fcb4680f0883ed0cb814b70e08ebe083c504e9c410000083c504e954 *0f000098680f0890680f080000000003000000250000001800050000000000110000008d45f43b *4354730abe90ff11088b43fcffe0c745f890e411088b450c8945f4c745fc14690f0883ed0cb814 *b70e08ebe083c504e9880d000083c504e90c0c0000f8680f08f0680f0800000000050000002500 *0000c8e4110814690f080400010000000000110001008d45fc3b4354730abe94ff11088b43fcff *e08b7500c74500006a0f088b06ebf083c504ff650489f648690f0848690f080000000001000000 *2500000083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d000000807513bec8e41108 *c7450064690f0883ef088b06ebe1f7d8c747fcb8050c0889078d77fc83c5048b4504ebcb9083c7 *0c3b7b5c760cc7436c030000008b43f8ffe08b5608f7dac747f8ccdc0c088b46048947fc89178d *77f883c5048b4504ebdf90ac690f0864690f0814690f08010000002500010014690f0800000000 *240001008b46088945008b7604c745fcf4690f0883ed04ff269090900400010000000000110000 *008b7500c74500e46a0f08ff26837e04007825837e04007511c7450034f11108bebcf811088b45 *04ffe0c7450034f11108be34f11108ebedc7450034f11108be50001208ebdf8d76000000000024 *00000085f67f2385f67511c7450034f11108bebcf811088b4504ffe0c7450034f11108be500012 *08ebedc7450034f11108be34f11108ebdf8d7600c74308000000008b46048943048b7608c74500 *746a0f08e970e50000ac6a0f08306a0f0800000000000000002500000000000000240000008b76 *04c74500dc6a0f08ff26c8e41108f06a0f080400010000000000110001008d45fc3b4354730abe *a0ff11088b43fcffe08b7500c74500f86b0f088b06ebf083c504ff650489f6246b0f08246b0f08 *00000000010000002500000083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d000000 *807513bec8e41108c74500406b0f0883ef088b06ebe185c07913f7d8c747fcb8050c0889078d77 *fc83c504eb0683c50483ef088b4504ebbf9083c70c3b7b5c760cc7436c030000008b43f8ffe083 *7e0800791c8b5608f7dac747f8ccdc0c088b46048947fc89178d77f883c504eb0683c50483ef0c *8b4504ebd18d7600946b0f08406b0f08f06a0f080100000025000100f06a0f0800000000240001 *008b46088945008b7604c745fcec6b0f0883ed04ff269090900b00020000000000110000008d45 *f43b4354730abea8ff11088b43fcffe08b7500c74500606f0f088b06ebf08b45043b46040f94c0 *0fb6c08944240883c5088b34852cdc0b088b542408c1e2028b450029d0ff60f08d760000000000 *2400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0eb *ee8b45048943088b46048943048b7608c74504706c0f0883c504e986e3000089f6946c0f083c6c *0f080000000021000000250000008b460489450c8b7504c74508c86c0f0883c508ff268d760000 *0000002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b *40f0ebee8b46048943088b45048943048b7508c74508e86c0f0883c508e90ee3000089f6000000 *002400000085f67510be04d2110883c5048b45008b40ecffe0befcd1110883c5048b45008b40f0 *ebee8b460489430c8b46088943088b45048943048b7508c74508346d0f0883c508e90ce3000058 *6d0f080c6d0f080000000042000000250000008b46048945088b460889450c8b7504c74504906d *0f0883c504ff2690906d0f08c86c0f0800000000c30000002500000043000000240000008b750c *c74500c06d0f08ff268b45083b46047507b8c86d0f08ffe0befcd1110883c5108b45008b40f0eb *ee90430000002400000085f67507b8c86d0f08ffe0befcd1110883c5108b45008b40f0ebee908b *45088943088b46048943048b7608c74500fc6d0f08e905e2000090186e0f08d46d0f0800000000 *43000000250000008b55088b460489450889d6c74500486e0f08ff26430000002400000085f675 *07b8c86d0f08ffe0befcd1110883c5108b45008b40f0ebee908b46048943088b45048943048b75 *0cc74504646e0f0883c504e99ae1000089f6430000002400000085f67507b8c86d0f08ffe0befc *d1110883c5108b45008b40f0ebee908b460489430c8b46088943088b45048943048b750cc74504 *a86e0f0883c504e9a0e10000c46e0f08806e0f080000000084000000250000008b46048945008b *55088b460889450889d6c745fcfc6e0f0883ed04ff268d7600fc6e0f08486e0f08000000000300 *00002500000002000000240000008b46088945008b55048b460489450489d6c745fc306f0f0883 *ed04ff268d760001000000240000008b46048945008b55048b460889450489d6c745fc386f0f08 *83ed04ff269090900b00020000000000110000008d45fc3b4354730abeacff11088b43fcffe08b *45008945fc8b4504894500c74504f06f0f0883ed04b81c6c0f08ebe190be04d2110883c5048b45 *00ff60ec89f6befcd1110883c5048b4500ff60f089f6cc6f0f08bc6f0f08000000000000000025 *0000005cf11108f06f0f080b00020000000000110001008d45ec3b4354730abeb0ff11088b43fc *ffe08b7500c7450020710f088b06ebf08b450489450889750483c504e92b4cffff8d760024700f *0824700f08f06f0f0842000000250001008b45088945fc8975f8c745004c700f0883ed08e94868 *fdff4c700f084c700f08f06f0f0802000000250001008b45048945008b450c8945fc89750cc745 *0478700f0883ed04e95e65fdff89f678700f0878700f08f06f0f0803000000250001008b450c89 *45008b45048945fc89750cc74504ac700f0883ed04e92a65fdff89f6ac700f08ac700f08f06f0f *080400000025000100f06f0f0802000000240001008b46088945f48b45048945f08b46048945fc *8b4608894500c745f8e0700f0883ed10e9e164fdff90f06f0f0801000000240001008b46088945 *008b55048b460489450489d6c745fcec700f0883ed04ff269090905cf1110840710f080b000200 *00000000110001008d45ec3b4354730abeb8ff11088b43fcffe08b7500c7450070720f088b06eb *f08b450489450889750483c504e9db4affff8d760074710f0874710f0840710f08420000002500 *01008b45088945fc8975f8c745009c710f0883ed08e9d85ffdff9c710f089c710f0840710f0802 *000000250001008b45048945008b450c8945fc89750cc74504c8710f0883ed04e90e64fdff89f6 *c8710f08c8710f0840710f0803000000250001008b450c8945008b45048945fc89750cc74504fc *710f0883ed04e9da63fdff89f6fc710f08fc710f0840710f08040000002500010040710f080200 *0000240001008b46088945f48b45048945f08b46048945fc8b4608894500c745f830720f0883ed *10e99163fdff9040710f0801000000240001008b46088945008b55048b460489450489d6c745fc *3c720f0883ed04ff269090905800120890720f080b00020000000000110001008b7500c74500bc *720f08ff2690720f0801000000240001008b4604894500e9090800009058001208c8720f080400 *010000000000110001008d45f43b4354730abec8ff11088b43fcffe0c745fc081210088b450089 *45f8c7450000d21108c745f40000000083ed0cb8d07a0f08ebd990535458000000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *098b00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f014 *730f0883ed10b84cce0b08ebbf903c2d009000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8a18a00008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f07c730f0883ed10b84cce0b08ebbf *905354580000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8398a00008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f0e4730f0883ed10b84cce0b08ebbf90a00012084c740f0804000100 *00000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be280012088b43fc *ffe0c747f0bc740f088b45008947f4c747fcf8740f088d47f089078d47fc894500c745fca00012 *0883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f498f411088b760483ed10b808121008ebde8d76000400010001000000 *0c0000008b760483c504ff2618000500000000001100000083c7143b7b5c7611c7436c05000000 *be400012088b43fcffe0c747f034760f088b45108947f48b45048947f88b450c8947fc8b450089 *078b45088945108d77f083c510b834760f08ebcd89f68b450489750489c683c504e9cc00000058 *750f0858750f0800000000010000002500000003000000120000008d45e83b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945ec8b46048945e88b460c8945f4c745f07c750f0883 *ed18b8acd80c08ebcf83c7103b7b5c760cc7436c040000008b43f8ffe0c747f484750f088b4514 *8947f88b450c8947fc8b450889078b45148945108d47f48945148b750483c50cb814161008ebcd *8d76008b751083c514e9899100009008760f08c0750f0800000000050000002500000004000100 *040000000b0000008d45e43b435473058b43fcffe08b46048945e88b45008945e48b46108945f0 *8975f48b460c8945f88b46088945fcc745ec28760f0883ed1cb8d8090f08ebcc90180005000000 *00001100000083c7143b7b5c7611c7436c05000000be440012088b43fcffe0c747f0a8770f088b *45108947f48b45048947f88b450c8947fc8b450089078b45088945108d77f083c510b8a8770f08 *ebcd89f68b450489750489c683c504e9cc000000cc760f08cc760f080000000001000000250000 *0003000000120000008d45e83b435473058b43f8ffe08d45f8c700d46d10088970048b46088945 *ec8b46048945e88b460c8945f4c745f0f0760f0883ed18b8acd80c08ebcf83c7103b7b5c760cc7 *436c040000008b43f8ffe0c747f4f8760f088b45148947f88b450c8947fc8b450889078b451489 *45108d47f48945148b750483c50cb814161008ebcd8d76008b751083c514e915900000907c770f *0834770f0800000000050000002500000004000100040000000b0000008d45e43b435473058b43 *fcffe08b46048945e88b45008945e48b46108945f08975f48b460c8945f88b46088945fcc745ec *9c770f0883ed1cb824080f08ebcc9016000300000000001100000083c70c3b7b5c7611c7436c03 *000000be480012088b43fcffe0c747f81c790f088b45088947fc8b450489078b45008945088d77 *f883c508b81c790f08ebd989f68b450489750489c683c504e9d800000034780f0834780f080000 *0000010000002500000003000000120000008d45e83b435473058b43f8ffe08d45f8c700d46d10 *088970048b46088945ec8b46048945e88b460c8945f4c745f058780f0883ed18b8acd80c08ebcf *83c71c3b7b5c760cc7436c070000008b43f8ffe0c747e860780f088b450c8947ec8b45088947f0 *8b45048947f4c747f87cdc0b088b450c8947fc8d47e889078d77f883c5108b45008b40ecebc58d *7600be00d2110883c5108b4500ff60f089f6ec780f089c780f0800000000030000002500000004 *000100020000000e0000008d45ec3b435473058b43fcffe08b46048945f08b45008945ec8975f8 *8b46088945fcc745f410790f0883ed14b8d8090f08ebd89016000300000000001100000083c70c *3b7b5c7611c7436c03000000be4c0012088b43fcffe0c747f8847a0f088b45088947fc8b450489 *078b45008945088d77f883c508b8847a0f08ebd989f68b450489750489c683c504e9d80000009c *790f089c790f0800000000010000002500000003000000120000008d45e83b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945ec8b46048945e88b460c8945f4c745f0c0790f0883 *ed18b8acd80c08ebcf83c71c3b7b5c760cc7436c070000008b43f8ffe0c747e8c8790f088b450c *8947ec8b45088947f08b45048947f4c747f87cdc0b088b450c8947fc8d47e889078d77f883c510 *8b45008b40ecebc58d7600be00d2110883c5108b4500ff60f089f6547a0f08047a0f0800000000 *030000002500000004000100020000000e0000008d45ec3b435473058b43fcffe08b46048945f0 *8b45008945ec8975f88b46088945fcc745f4787a0f0883ed14b824080f08ebd890ecf01108c800 *1208b87a0f080900020000000000110003008d45fc3b4354730abe580012088b43fcffe08b7504 *c745fcac7c0f0883ed048b06ebed90b87a0f0802000000150001008d45ec3b435473058b43f8ff *e08d45f8c700d46d10088970048b46088945f48b46048945f0c745ec0800000083ed14b8d0b80e *08ebd589f6b87a0f0802000000150003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe08d45f8c700d46d1008897004c747f8007b0f088b46048947fc8b460889078d47f8 *8945f4c745f0c800120883ed10b82cda0b08ebc98d7600b87a0f0804000100020000000e000300 *8d45f83b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8447b0f088b460889 *47fc8b450089078d47f88945008b46048945fcc745f80800000083ed08b8d0b80e08ebcf900200 *0000150000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700 *d46d1008897004c747f87cdc0b08c747fc44dc11088b460889078d47f88945f48b760483ed0cb8 *a87b0f08ebcc89f604000100010000000c00000083c7183b7b5c760cc7436c060000008b43fcff *e0c747ecfc7b0f088b46048947f08b45008947f4c747f87cdc0b08c747fc4cdc11088d47ec8907 *8d77f883c5048b45008b40ecebcab87a0f08620000002400030083c7143b7b5c760cc7436c0500 *00008b43f8ffe0c747f0a87b0f088b46048947f48b46088947f8837d04077f0b8d77f083c50c83 *ef08eb12c747fc587c0f088d47f089078d77fc83c50c8b4500ebc3904554580000000200180000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e8218100008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0 *fc7c0f0883ed10b84cce0b08ebbf902d3e009000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8b98000008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f0647d0f0883ed10b84cce0b08eb *bf904554580000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8518000008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0cc7d0f0883ed10b84cce0b08ebbf9018011208347e0f08040001 *0000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000beb00012088b43 *fcffe0c747f0a47e0f088b45008947f4c747fce07e0f088d47f089078d47fc894500c745fc1801 *120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f4a0f411088b760483ed10b808121008ebde8d760004000100010000 *000c0000008b760483c504ff262025200000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8357f00008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f0e87e0f0883ed10b84cce0b08ebbf90 *454f540000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8cd7e00008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f0507f0f0883ed10b84cce0b08ebbf90454f540000000200180000008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e865 *7e00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0b87f *0f0883ed10b84cce0b08ebbf908801120820800f080400010000000000110001008d45fc3b4354 *720883c7143b7b5c7611c7436c05000000be280112088b43fcffe0c747f090800f088b45008947 *f4c747fccc800f088d47f089078d47fc894500c745fc8801120883ed04b878e00e08ebce8d7600 *01000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4a8f411 *088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff26454e *510000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e8497d00008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f400d21108c745f0d4800f0883ed10b84cce0b08ebbf90454e510000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8e17c00 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f03c810f08 *83ed10b84cce0b08ebbf90e8011208a4810f080400010000000000110001008d45fc3b43547208 *83c7143b7b5c7611c7436c05000000be980112088b43fcffe0c747f014820f088b45008947f4c7 *47fc50820f088d47f089078d47fc894500c745fce801120883ed04b878e00e08ebce8d76000100 *0100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f4b0f411088b *760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff2641434b00 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8c57b00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f058820f0883ed10b84cce0b08ebbf903d3e009000000200180000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e85d7b00008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c0820f0883ed *10b84cce0b08ebbf9041434b0000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8f57a00008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f028830f0883ed10b84cce0b08ebbf9030021208 *90830f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000 *bef80112088b43fcffe0c747f000840f088b45008947f4c747fc3c840f088d47f089078d47fc89 *4500c745fc3002120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b *43f8ffe08d45f8c700d46d1008897004c745f4b8f411088b760483ed10b808121008ebde8d7600 *04000100010000000c0000008b760483c504ff2642454c0000000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d97900008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f044840f0883ed10b8 *4cce0b08ebbf9042454c0000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f8085c1008893424e8717900008d47f8894604c706245b10088d55f8c7 *02d46d1008894204c745f400d21108c745f0ac840f0883ed10b84cce0b08ebbf90780212081485 *0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be40 *0212088b43fcffe0c747f084850f088b45008947f4c747fcc0850f088d47f089078d47fc894500 *c745fc7802120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8 *ffe08d45f8c700d46d1008897004c745f4c0f411088b760483ed10b808121008ebde8d76000400 *0100010000000c0000008b760483c504ff264253009000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8557800008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0c8850f0883ed10b84cce *0b08ebbf904253009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f8085c1008893424e8ed7700008d47f8894604c706245b10088d55f8c702d4 *6d1008894204c745f400d21108c745f030860f0883ed10b84cce0b08ebbf90c002120898860f08 *0400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be880212 *088b43fcffe0c747f008870f088b45008947f4c747fc44870f088d47f089078d47fc894500c745 *fcc002120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d1008897004c745f4c8f411088b760483ed10b808121008ebde8d760004000100 *010000000c0000008b760483c504ff264854009000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8d17600008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f04c870f0883ed10b84cce0b08 *ebbf904854009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8085c1008893424e8697600008d47f8894604c706245b10088d55f8c702d46d10 *08894204c745f400d21108c745f0b4870f0883ed10b84cce0b08ebbf90080312081c880f080400 *010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000bed00212088b *43fcffe0c747f08c880f088b45008947f4c747fcc8880f088d47f089078d47fc894500c745fc08 *03120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45 *f8c700d46d1008897004c745f4d0f411088b760483ed10b808121008ebde8d7600040001000100 *00000c0000008b760483c504ff264c46009000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e84d7500008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0d0880f0883ed10b84cce0b08ebbf *904c46009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8085c1008893424e8e57400008d47f8894604c706245b10088d55f8c702d46d100889 *4204c745f400d21108c745f038890f0883ed10b84cce0b08ebbf9050031208a0890f0804000100 *00000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be180312088b43fc *ffe0c747f0108a0f088b45008947f4c747fc4c8a0f088d47f089078d47fc894500c745fc500312 *0883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f4d8f411088b760483ed10b808121008ebde8d76000400010001000000 *0c0000008b760483c504ff265654009000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8c97300008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0548a0f0883ed10b84cce0b08ebbf9056 *54009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f8085c1008893424e8617300008d47f8894604c706245b10088d55f8c702d46d1008894204 *c745f400d21108c745f0bc8a0f0883ed10b84cce0b08ebbf9098031208248b0f08040001000000 *0000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be600312088b43fcffe0 *c747f0948b0f088b45008947f4c747fcd08b0f088d47f089078d47fc894500c745fc9803120883 *ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d4 *6d1008897004c745f4e0f411088b760483ed10b808121008ebde8d760004000100010000000c00 *00008b760483c504ff264646009000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8457200008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f0d88b0f0883ed10b84cce0b08ebbf90464600 *9000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f8085c1008893424e8dd7100008d47f8894604c706245b10088d55f8c702d46d1008894204c745 *f400d21108c745f0408c0f0883ed10b84cce0b08ebbf90e0031208a88c0f080400010000000000 *110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000bea80312088b43fcffe0c747 *f0188d0f088b45008947f4c747fc548d0f088d47f089078d47fc894500c745fce003120883ed04 *b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f4e8f411088b760483ed10b808121008ebde8d760004000100010000000c000000 *8b760483c504ff264352009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e8c17000008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f400d21108c745f05c8d0f0883ed10b84cce0b08ebbf904352009000 *000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *5c1008893424e8597000008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400 *d21108c745f0c48d0f0883ed10b84cce0b08ebbf90280412082c8e0f0804000100000000001100 *01008d45fc3b4354720883c7143b7b5c7611c7436c05000000bef00312088b43fcffe0c747f09c *8e0f088b45008947f4c747fcd88e0f088d47f089078d47fc894500c745fc2804120883ed04b878 *e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d100889 *7004c745f4f0f411088b760483ed10b808121008ebde8d760004000100010000000c0000008b76 *0483c504ff26534f009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e83d6f00008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f400d21108c745f0e08e0f0883ed10b84cce0b08ebbf9053490090000002 *00180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10 *08893424e8d56e00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d211 *08c745f0488f0f0883ed10b84cce0b08ebbf9070041208b08f0f08040001000000000011000100 *8d45fc3b4354720883c7143b7b5c7611c7436c05000000be380412088b43fcffe0c747f020900f *088b45008947f4c747fc5c900f088d47f089078d47fc894500c745fc7004120883ed04b878e00e *08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004 *c745f4f8f411088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483 *c504ff265349009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e8b96d00008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f400d21108c745f064900f0883ed10b84cce0b08ebbf90444c45000000020018 *0000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c100889 *3424e8516d00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c7 *45f0cc900f0883ed10b84cce0b08ebbf90b804120834910f080400010000000000110001008d45 *fc3b4354720883c7143b7b5c7611c7436c05000000be800412088b43fcffe0c747f0a4910f088b *45008947f4c747fce0910f088d47f089078d47fc894500c745fcb804120883ed04b878e00e08eb *ce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745 *f400f511088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504 *ff26444c450000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8356c00008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f0e8910f0883ed10b84cce0b08ebbf904443310000000200180000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424 *e8cd6b00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0 *50920f0883ed10b84cce0b08ebbf9000051208b8920f080400010000000000110001008d45fc3b *4354720883c7143b7b5c7611c7436c05000000bec80412088b43fcffe0c747f028930f088b4500 *8947f4c747fc64930f088d47f089078d47fc894500c745fc0005120883ed04b878e00e08ebce8d *760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f408 *f511088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff26 *4443310000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8b16a00008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f06c930f0883ed10b84cce0b08ebbf904443320000000200180000008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e849 *6a00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0d493 *0f0883ed10b84cce0b08ebbf90480512083c940f080400010000000000110001008d45fc3b4354 *720883c7143b7b5c7611c7436c05000000be100512088b43fcffe0c747f0ac940f088b45008947 *f4c747fce8940f088d47f089078d47fc894500c745fc4805120883ed04b878e00e08ebce8d7600 *01000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f410f511 *088b760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff264443 *320000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e82d6900008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f400d21108c745f0f0940f0883ed10b84cce0b08ebbf904443330000000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8c56800 *008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f058950f08 *83ed10b84cce0b08ebbf9090051208c0950f080400010000000000110001008d45fc3b43547208 *83c7143b7b5c7611c7436c05000000be580512088b43fcffe0c747f030960f088b45008947f4c7 *47fc6c960f088d47f089078d47fc894500c745fc9005120883ed04b878e00e08ebce8d76000100 *0100130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f418f511088b *760483ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff2644433300 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e8a96700008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f074960f0883ed10b84cce0b08ebbf904443340000000200180000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8416700008d *47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0dc960f0883ed *10b84cce0b08ebbf90d805120844970f080400010000000000110001008d45fc3b4354720883c7 *143b7b5c7611c7436c05000000bea00512088b43fcffe0c747f0b4970f088b45008947f4c747fc *f0970f088d47f089078d47fc894500c745fcd805120883ed04b878e00e08ebce8d760001000100 *130000008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f420f511088b7604 *83ed10b808121008ebde8d760004000100010000000c0000008b760483c504ff26444334000000 *0200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c *1008893424e8256600008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d2 *1108c745f0f8970f0883ed10b84cce0b08ebbf904e414b0000000200180000008d45f03b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8bd6500008d47f8 *894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f060980f0883ed10b8 *4cce0b08ebbf9020061208c8980f080400010000000000110001008d45fc3b4354720883c7143b *7b5c7611c7436c05000000bee80512088b43fcffe0c747f038990f088b45008947f4c747fc7499 *0f088d47f089078d47fc894500c745fc2006120883ed04b878e00e08ebce8d7600010001001300 *00008d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f428f511088b760483ed *10b808121008ebde8d760004000100010000000c0000008b760483c504ff264e414b0000000200 *180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008 *893424e8a16400008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108 *c745f07c990f0883ed10b84cce0b08ebbf9053594e0000000200180000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8396400008d47f88946 *04c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0e4990f0883ed10b84cce *0b08ebbf90680612084c9a0f080400010000000000110001008d45fc3b4354720883c7143b7b5c *7611c7436c05000000be300612088b43fcffe0c747f0bc9a0f088b45008947f4c747fcf89a0f08 *8d47f089078d47fc894500c745fc6806120883ed04b878e00e08ebce8d76000100010013000000 *8d45f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f430f511088b760483ed10b8 *08121008ebde8d760004000100010000000c0000008b760483c504ff2653594e00000002001800 *00008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c10088934 *24e81d6300008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745 *f0009b0f0883ed10b84cce0b08ebbf904554420000000200180000008d45f03b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8b56200008d47f8894604c7 *06245b10088d55f8c702d46d1008894204c745f400d21108c745f0689b0f0883ed10b84cce0b08 *ebbf90b0061208d09b0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611 *c7436c05000000be780612088b43fcffe0c747f0409c0f088b45008947f4c747fc7c9c0f088d47 *f089078d47fc894500c745fcb006120883ed04b878e00e08ebce8d760001000100130000008d45 *f03b435473058b43f8ffe08d45f8c700d46d1008897004c745f438f511088b760483ed10b80812 *1008ebde8d760004000100010000000c0000008b760483c504ff26455442000000020018000000 *8d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8 *996100008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f084 *9c0f0883ed10b84cce0b08ebbf9043414e0000000200180000008d45f03b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8316100008d47f8894604c70624 *5b10088d55f8c702d46d1008894204c745f400d21108c745f0ec9c0f0883ed10b84cce0b08ebbf *90f8061208549d0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c743 *6c05000000bec00612088b43fcffe0c747f0c49d0f088b45008947f4c747fc009e0f088d47f089 *078d47fc894500c745fcf806120883ed04b878e00e08ebce8d760001000100130000008d45f03b *435473058b43f8ffe08d45f8c700d46d1008897004c745f440f511088b760483ed10b808121008 *ebde8d760004000100010000000c0000008b760483c504ff2643414e0000000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e81560 *00008d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f0089e0f *0883ed10b84cce0b08ebbf90454d009000000200180000008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f8085c1008893424e8ad5f00008d47f8894604c706245b10 *088d55f8c702d46d1008894204c745f400d21108c745f0709e0f0883ed10b84cce0b08ebbf9040 *071208d89e0f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05 *000000be080712088b43fcffe0c747f0489f0f088b45008947f4c747fc849f0f088d47f089078d *47fc894500c745fc4007120883ed04b878e00e08ebce8d760001000100130000008d45f03b4354 *73058b43f8ffe08d45f8c700d46d1008897004c745f448f511088b760483ed10b808121008ebde *8d760004000100010000000c0000008b760483c504ff26454d009000000200180000008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8915e0000 *8d47f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f08c9f0f0883 *ed10b84cce0b08ebbf905355420000000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8085c1008893424e8295e00008d47f8894604c706245b10088d *55f8c702d46d1008894204c745f400d21108c745f0f49f0f0883ed10b84cce0b08ebbf90880712 *085ca00f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c050000 *00be500712088b43fcffe0c747f0cca00f088b45008947f4c747fc08a10f088d47f089078d47fc *894500c745fc8807120883ed04b878e00e08ebce8d760001000100130000008d45f03b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f450f511088b760483ed10b808121008ebde8d76 *0004000100010000000c0000008b760483c504ff265355420000000200180000008d45f03b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e80d5d00008d47 *f8894604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f010a10f0883ed10 *b84cce0b08ebbf904553430000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8085c1008893424e8a55c00008d47f8894604c706245b10088d55f8 *c702d46d1008894204c745f400d21108c745f078a10f0883ed10b84cce0b08ebbf90d0071208e0 *a10f080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be *980712088b43fcffe0c747f050a20f088b45008947f4c747fc8ca20f088d47f089078d47fc8945 *00c745fcd007120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43 *f8ffe08d45f8c700d46d1008897004c745f458f511088b760483ed10b808121008ebde8d760004 *000100010000000c0000008b760483c504ff264553430000000200180000008d45f03b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8895b00008d47f889 *4604c706245b10088d55f8c702d46d1008894204c745f400d21108c745f094a20f0883ed10b84c *ce0b08ebbf904653009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f8085c1008893424e8215b00008d47f8894604c706245b10088d55f8c702 *d46d1008894204c745f400d21108c745f0fca20f0883ed10b84cce0b08ebbf901808120864a30f *080400010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000bee007 *12088b43fcffe0c747f0d4a30f088b45008947f4c747fc10a40f088d47f089078d47fc894500c7 *45fc1808120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ff *e08d45f8c700d46d1008897004c745f460f511088b760483ed10b808121008ebde8d7600040001 *00010000000c0000008b760483c504ff264653009000000200180000008d45f03b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8055a00008d47f8894604 *c706245b10088d55f8c702d46d1008894204c745f400d21108c745f018a40f0883ed10b84cce0b *08ebbf904753009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8085c1008893424e89d5900008d47f8894604c706245b10088d55f8c702d46d *1008894204c745f400d21108c745f080a40f0883ed10b84cce0b08ebbf9060081208e8a40f0804 *00010000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be28081208 *8b43fcffe0c747f058a50f088b45008947f4c747fc94a50f088d47f089078d47fc894500c745fc *6008120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d *45f8c700d46d1008897004c745f468f511088b760483ed10b808121008ebde8d76000400010001 *0000000c0000008b760483c504ff264753009000000200180000008d45f03b4354720883c70c3b *7b5c760cc7436c030000008b43f8ffe0c747f8085c1008893424e8815800008d47f8894604c706 *245b10088d55f8c702d46d1008894204c745f400d21108c745f09ca50f0883ed10b84cce0b08eb *bf905253009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43 *f8ffe0c747f8085c1008893424e8195800008d47f8894604c706245b10088d55f8c702d46d1008 *894204c745f400d21108c745f004a60f0883ed10b84cce0b08ebbf90a80812086ca60f08040001 *0000000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be700812088b43 *fcffe0c747f0dca60f088b45008947f4c747fc18a70f088d47f089078d47fc894500c745fca808 *120883ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8 *c700d46d1008897004c745f470f511088b760483ed10b808121008ebde8d760004000100010000 *000c0000008b760483c504ff265253009000000200180000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8085c1008893424e8fd5600008d47f8894604c706245b *10088d55f8c702d46d1008894204c745f400d21108c745f020a70f0883ed10b84cce0b08ebbf90 *5553009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f8085c1008893424e8955600008d47f8894604c706245b10088d55f8c702d46d10088942 *04c745f400d21108c745f088a70f0883ed10b84cce0b08ebbf90f0081208f0a70f080400010000 *000000110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000beb80812088b43fcff *e0c747f060a80f088b45008947f4c747fc9ca80f088d47f089078d47fc894500c745fcf0081208 *83ed04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700 *d46d1008897004c745f4000912088b760483ed10b808121008ebde8d760004000100010000000c *0000008b760483c504ff265553009000000200180000008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f8085c1008893424e8795500008d47f8894604c706245b1008 *8d55f8c702d46d1008894204c745f400d21108c745f0a4a80f0883ed10b84cce0b08ebbf905350 *009000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f8085c1008893424e8115500008d47f8894604c706245b10088d55f8c702d46d1008894204c7 *45f400d21108c745f00ca90f0883ed10b84cce0b08ebbf902009120874a90f0804000100000000 *00110001008d45fc3b4354720883c7143b7b5c7611c7436c05000000be080912088b43fcffe0c7 *47f0e4a90f088b45008947f4c747fc20aa0f088d47f089078d47fc894500c745fc2009120883ed *04b878e00e08ebce8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700d46d *1008897004c745f4300912088b760483ed10b808121008ebde8d760004000100010000000c0000 *008b760483c504ff265350009000000200180000008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f8085c1008893424e8f55300008d47f8894604c706245b10088d55 *f8c702d46d1008894204c745f400d21108c745f028aa0f0883ed10b84cce0b08ebbf9044454c00 *00000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *085c1008893424e88d5300008d47f8894604c706245b10088d55f8c702d46d1008894204c745f4 *00d21108c745f090aa0f0883ed10b84cce0b08ebbf905589e583ec18895df48975f8897dfc8b75 *0cb8ffffffff85f67460833d38091208ff750ac7053809120800010000a1380912080514010000 *890424e884eaf4ff89c3b8ffffffff85db743089742408895c24048b4508890424e8b6edf4ff89 *c785c07408c70600000000eb05833e007508891c24e80bedf4ff89f88b5df48b75f88b7dfc89ec *5dc35589e583ec088b450c894424048b4508890424e874e8f4ff89ec5dc35589e557565381ecbc *0000008b7d088d5d8881ff000400007e1ac704247c4d1108e8a6160000e8a5e9f4ff8338040f85 *75010000895c2408897c2404c7042403000000e898edf4ff85c078da837d0c000f845d010000bb *000000003b1d801812087d708b45e48945848b45e08945808b458c89857cffffff8b4588898578 *ffffff8d049b8d3485000000008b86a81812088b96ac1812088b4d8431d133458009c175278b86 *a01812088b96a41812088b8d7cffffff31d1338578ffffffbaffffffff09c10f843a020000433b *1d801812087cae837d10000f8489000000bb000000003b1d841812087d7c8b45e4898574ffffff *8b45e0898570ffffff8b458c89856cffffff8b4588898568ffffff8d049b8d3485000000008b86 *a86812088b96ac6812088b8d74ffffff31d1338570ffffff09c175278b86a06812088b96a46812 *088b8d6cffffff31d1338568ffffffbaffffffff09c10f84a7010000433b1d841812087ca88b0d *841812088d4101a3841812088d0c89c1e1028b45888b558c8981a06812088991a46812088b45e0 *8b55e48981a86812088991ac68120889b9b0681208e956010000baffffffffe951010000bb0000 *00003b1d841812087d7c8b45e4898564ffffff8b45e0898560ffffff8b458c89855cffffff8b45 *88898558ffffff8d049b8d3485000000008b86a86812088b96ac6812088b8d64ffffff31d13385 *60ffffff09c175278b86a06812088b96a46812088b8d5cffffff31d1338558ffffffbaffffffff *09c10f84d1000000433b1d841812087ca8bb000000003b1d801812087d788b45e4898554ffffff *8b45e0898550ffffff8b458c89854cffffff8b4588898548ffffff8d049b8d3485000000008b86 *a81812088b96ac1812088b8d54ffffff31d1338550ffffff09c175238b86a01812088b96a41812 *088b8d4cffffff31d1338548ffffffba0000000009c1744c433b1d801812087cac8b0d80181208 *8d4101a3801812088d0c89c1e1028b45888b558c8981a01812088991a41812088b45e08b55e489 *81a81812088991ac18120889b9b0181208ba0000000089d081c4bc0000005b5e5f5dc35589e556 *538b5508b9000000003b0d801812087d708d0489391485b0181208755b413b0d801812087d4abb *8c1812088b35801812088d0489c1e0028b90a018120889908c1812088b90a4181208895403048b *90a8181208895403088b90ac1812088954030c8b90b0181208895403104139f17cc1ff0d801812 *08eb7b413b0d801812087c90b9000000003b0d841812087d758d0489391485b06812087560413b *0d841812087d4abb8c6812088b35841812088d0489c1e0028b90a068120889908c6812088b90a4 *681208895403048b90a8681208895403088b90ac6812088954030c8b90b0681208895403104139 *f17cc1ff0d84181208b800000000eb0e413b0d841812087c8bb8010000005b5e5dc39090905589 *e583ec08891c24897424048b5d088b750c8b55108b4d14b80100000039ce770b720439d37705b8 *000000008b1c248b74240489ec5dc35589e583ec08891c24897424048b5d088b750c8b55108b4d *14b80100000039ce770b720439d37305b8000000008b1c248b74240489ec5dc35589e5538b4508 *8b550c8b4d108b5d1431c831da09d00f94c00fb6c05b5dc35589e5538b45088b550c8b4d108b5d *1431c831da09d00f95c00fb6c05b5dc35589e583ec08891c24897424048b5d088b750c8b55108b *4d14b80100000039ce720b770439d37205b8000000008b1c248b74240489ec5dc35589e583ec08 *891c24897424048b5d088b750c8b55108b4d14b80100000039ce720b770439d37605b800000000 *8b1c248b74240489ec5dc35589e583ec08891c24897424048b5d088b750c8b55108b4d14b80100 *000039ce7f0b7c0439d37705b8000000008b1c248b74240489ec5dc35589e583ec08891c248974 *24048b5d088b750c8b55108b4d14b80100000039ce7f0b7c0439d37305b8000000008b1c248b74 *240489ec5dc35589e5538b45088b550c8b4d108b5d1431c831da09d00f94c00fb6c05b5dc35589 *e5538b45088b550c8b4d108b5d1431c831da09d00f95c00fb6c05b5dc35589e583ec08891c2489 *7424048b5d088b750c8b55108b4d14b80100000039ce7c0b7f0439d37205b8000000008b1c248b *74240489ec5dc35589e583ec08891c24897424048b5d088b750c8b55108b4d14b80100000039ce *7c0b7f0439d37605b8000000008b1c248b74240489ec5dc35589e583ec188b45108b5514894424 *088954240c8b45088b550c89042489542404e89e37010089ec5dc35589e583ec188b45108b5514 *894424088954240c8b45088b550c89042489542404e84436010089ec5dc35589e583ec188b4510 *8b5514894424088954240c8b45088b550c89042489542404e80a34010089ec5dc35589e583ec18 *8b45108b5514894424088954240c8b45088b550c89042489542404e85032010089ec5dc35589e5 *8b45088b550cf7d883d200f7da5dc35589e58b45108b551403450813550c5dc35589e58b45088b *550c2b45101b55145dc35589e583ec18895df48975f8897dfc8b5d108b75148b4508f7e38945e8 *8b7d080faffe89d101f90faf5d0c8d1c0b895dec8b45e88b55ec8b5df48b75f88b7dfc89ec5dc3 *5589e5538b45088b550c8b4d108b5d1421c821da5b5dc35589e5538b45088b550c8b4d108b5d14 *09c809da5b5dc35589e5538b45088b550c8b4d108b5d1431c831da5b5dc35589e58b45088b550c *f7d0f7d25dc35589e58b4d108b45088b550c0fa5c2d3e0f6c120740789c2b8000000005dc35589 *e58b4d108b45088b550c0fadd0d3eaf6c120740789d0ba000000005dc35589e58b4d108b45088b *550c0fa5c2d3e0f6c120740789c2b8000000005dc35589e58b4d108b45088b550c0fadd0d3faf6 *c120740589d0c1fa1f5dc35589e58b4d108b45088b550c0fadd0d3eaf6c120740789d0ba000000 *005dc35589e58b4508995dc35589e58b45085dc35589e58b45088b550c5dc35589e58b4508ba00 *0000005dc35589e58b45085dc35589e58b45088b550c5dc35589e583ec08891c24897424048b45 *0c8b7508b900000000bb0000000085f6744285f67f0783feff7410eb1783fe0175128b08bb0000 *0000eb298b08bb00000000eb198b08bb000000008b400489c2b80000000001c111d385f67907f7 *d983d300f7db89c889da8b1c248b74240489ec5dc35589e583ec08891c24897424048b450c8b75 *08b900000000bb0000000085f6744285f67f0783feff7410eb1783fe0175128b08bb00000000eb *298b08bb00000000eb198b08bb000000008b400489c2b80000000001c111d385f67907f7d983d3 *00f7db89c889da8b1c248b74240489ec5dc39090905589e557565383ec3ce852dff4ff89c3baff *ffffff83f8ff0f84e50000008d75d485c00f858f000000c745d800000000c745dc00000000c745 *e000000000c745e400000000c7442408000000008d5dd8895c2404c7042400000000e860e0f4ff *c744240800000000895c2404c7042401000000e848e0f4ffc744240800000000895c2404c70424 *02000000e830e0f4ff8b450c894424048b4508890424e8fee0f4ffc704247f000000e8f2e2f4ff *e88ddff4ff8338047546c74424080000000089742404891c24e884e0f4ff85c078de8b45d40fb6 *d4a87f74298b45d4ba000000003c7f7409a87f7405ba0100000085d2740be848dff4ffc7000400 *0000baffffffff89d083c43c5b5e5f5dc39090905589e557565383ec4ce842def4ff89c3baffff *ffff83f8ff0f84fe0000008d75d485c00f85a8000000c745d800000000c745dc00000000c745e0 *00000000c745e400000000c7442408000000008d5dd8895c2404c7042400000000e850dff4ffc7 *44240800000000895c2404c7042401000000e838dff4ffc744240800000000895c2404c7042402 *000000e820dff4ffc7442410000000008b45088944240cc7442408964d1108c74424049e4d1108 *c70424994d1108e835ddf4ffc704247f000000e8c9e1f4ffe864def4ff8338047546c744240800 *00000089742404891c24e85bdff4ff85c078de8b45d40fb6d4a87f74298b45d4ba000000003c7f *7409a87f7405ba0100000085d2740be81fdef4ffc70004000000baffffffff89d083c44c5b5e5f *5dc390905589e557565383ec1c8b5d088b75108b7d0cc645f30ac7042402000000e8d60d000085 *db7419c7042402000000ffd3eb0ee8d2ddf4ff833804753929de01df89742408897c2404c70424 *02000000e8a5dcf4ff89c339f07cd8c7442408010000008d45f389442404c7042402000000e884 *dcf4ff83c41c5b5e5f5dc35589e583ec18895dfc83e4f0c7442408a89a04088b450c894424048b *4508890424e828080000e85f070000c744240400000000c70424c0a11108e8e605000089c3e845 *07000083fb02741383fb02770783fb01742feb3483fb037415eb2dc70424c04d1108e8e90a0000 *b8fa000000eb26c70424454e1108e8d60a0000b8fc000000eb13b800000000eb0cc70424004e11 *08e8f1090000890424e8b1090000b8000000008b5dfc89ec5dc39083ec0cc7042402000000e855 *470000c7003cdc0b088b54241089500483c40cc383ec0cc7042402000000e835470000c70054dc *0b088b54241089500483c40cc383ec0c895c24080fb65c2410c7042402000000e80c470000c700 *54ed0b080fb6d38950048b5c240883c40cc383ec0c895c24080fbf5c2410c7042402000000e8e0 *460000c7006ced0b0881e3ffff00008958048b5c240883c40cc383ec0cc7042402000000e8ba46 *0000c70084ed0b088b54241089500483c40cc383ec0c895c2404897424088b5c24108b742414c7 *042403000000e88a460000c7009ced0b088958048970088b5c24048b74240883c40cc383ec0cc7 *042402000000e863460000c70090300c088b54241089500483c40cc383ec0c895c24080fb65c24 *10c7042402000000e83a460000c700a8300c080fb6d38950048b5c240883c40cc383ec0c895c24 *080fb75c2410c7042402000000e80e460000c700c0300c088958048b5c240883c40cc383ec0cc7 *042402000000e8ee450000c700d8300c088b54241089500483c40cc383ec0c895c240489742408 *8b5c24108b742414c7042403000000e8be450000c700f0300c088958048970088b5c24048b7424 *0883c40cc383ec0cc7042402000000e897450000c7003ce00b088b542410895424088b54240889 *500483c40cc383ec1cdd442420dd5c2410c7042403000000e867450000c70024e00b08dd442410 *dd5c2408dd442408dd580483c41cc383ec0cc7042402000000e83f450000c700a42d0c088b5424 *1089500483c40cc383ec0cc7042402000000e81f450000c700e0060c088b54241089500483c40c *c383ec0cc7042402000000e8ff440000c700f8060c088b54241089500483c40cc3837c24040074 *06b804d21108c3b8fcd11108c383ec0c8b442410890424e89effffff89442404c7042414d41108 *e80400000083c40cc383ec0cc7042403000000e8a9440000c7008c6b10088b5424108950048b54 *241489500883c40cc38b4424048b4004c38b4424048b4004c38b4424040fbe4004c38b4424040f *bf4004c38b4424048b4004c38b4424048b50088b4004c38b4424048b4004c38b4424040fb64004 *c38b4424040fb74004c38b4424048b4004c38b4424048b50088b4004c383ec048b4424088b4004 *890424d9042483c404c383ec0c8b442410dd4004dd1c24dd042483c40cc38b4424048b4004c38b *4424048b4004c38b4424048b4004c38b4424048b0083e80866837806007506b800000000c3b801 *000000c383ec1c895c24188b1da0b81208c705a0b8120800000000a14cbb1208890424e8241300 *008b48308d51fc8950308b5424208951fc8b48308d51fc895030c741fcd4351008895c24088b54 *242489542404890424e8091400008b5c241883c41cc383ec1c895c24188b1da0b81208c705a0b8 *1208000000008b442424890424e8c51200008b48308d51fc8950308b5424208951fc8b48308d51 *fc895030c741fcd4351008895c24088b54242889542404890424e8aa1300008b5c241883c41cc3 *83ec1c895c24188b1da0b81208c705a0b8120800000000a14cbb1208890424e8651200008b4830 *8d51fc895030c741fc805e10088b48308d51fc895030c741fc1c0910088b48308d51fc8950308b *5424208951fc8b48308d51fc895030c741fcd4351008895c24088b54242489542404890424e82a *1300008b5c241883c41cc357565383ec108b7c24248b35a0b81208c705a0b81208000000008b44 *2420c1e0048b1520ba12088b1c02a14cbb1208890424e8d21100008b48308d51fc895030c741fc *805e10088b48308d51fc895030c741fc1c0910088b48308d51fc8950308959fc8b48308d51fc89 *5030c741fcd4351008897424088d54240c89542404890424e89b12000089c383f801751285ff74 *0e8b44240c890424e8c4290000890789d883c4105b5e5fc383ec1c895c24188b1da0b81208c705 *a0b8120800000000a14cbb1208890424e83c1100008b48308d51fc895030c741fcb45e10088b48 *308d51fc895030c741fc1c0910088b48308d51fc8950308b5424208951fc8b48308d51fc895030 *c741fcd4351008895c24088b54242489542404890424e8011200008b5c241883c41cc383ec1c89 *5c24188b1da0b81208c705a0b81208000000008b442424890424e8bd1000008b48308d51fc8950 *30c741fcb45e10088b48308d51fc895030c741fc1c0910088b48308d51fc8950308b5424208951 *fc8b48308d51fc895030c741fcd4351008895c24088b54242889542404890424e8821100008b5c *241883c41cc383ec0c8b5424108b44241483f802741383f802770783f8017448eb2683f803740f *eb1f89542404c704242a4e1108eb0b89542404c70424414e1108e8ef030000eb14894424088954 *2404c70424514e1108e8d9030000c7042401000000e8f002000083c40cc3c3c383ec1c895c2414 *897424188b5c24208b742424ff05b0b81208833db0b81208010f8f90000000e8cb2c0000e8b01a *0100e84747000085db743085f6742cc744240ce0cc1208c744240834bb12088b0689442404891c *24e8f31b01008b03a328bb12088b06a32cbb1208e881b40000e833110000e8c03a0000e8e82600 *00e85e440000c7042414000000e83b450000e8cc2b0000e827220000e8e9250000c7442404fc5a *1108c7042400000000e83fd5f4ffe89d2c00008b5c24148b74241883c41cc383ec0c8d44241489 *4424048d442410890424e827ffffff8b442418890424e83600000083c40cc38b5424048b4c2408 *85d27407a128bb1208890285c97407a12cbb12088901c38b442404a328bb12088b442408a32cbb *1208c383ec1c895c2414897424188b742420833db0b81208007f0cc70424a04e1108e8bd010000 *c7042404000000e8deb3000089c38b00a3b4b81208c700ba5e1008ba0100000085f6740da1b4b8 *1208897004ba02000000a1b4b812088d0490a398bc1208c744240448bc1208c70424c05e1008e8 *03350000891c24e8ceb500008b5c24148b74241883c41cc381ec1c010000899c241401000089b4 *2418010000833db0b81208007f0cc704246d4e1108e82e010000ff0db0b81208833db0b8120800 *0f8fc2000000e8b62b0000e805440000e845100000e8ef430000c7042400000000e8ef030000c7 *042401000000e8e3030000c7042402000000e8d70300008d9c2490000000891c24e8b8d6f4ffc7 *44240416000000891c24e8e8d4f4ff8d44241089442408895c2404c7042400000000e820d5f4ff *bb00000000bea4b81208833c9e0074178b049e89442408c744240400000000891c24e869d3f4ff *4383fb027eddc7442408000000008d44241089442404c7042402000000e8d7d4f4ffe8572b0000 *e8313c00008b9c24140100008bb4241801000081c41c010000c383ec0ce8e5feffff83c40cc383 *ec0c833db0b81208017516e8d7440000e8cbfeffff8b442410890424e80400000083c40cc383ec *0c8b442410890424e8f7d5f4ff9090905383ec188d5c2424833d2cbb1208007429833d30bb1208 *007420a130bb120889442408c7442404cd4e1108a104171208890424e81cd2f4ffeb25a1041712 *088944240cc744240810000000c744240401000000c70424d14e1108e875d6f4ff895c24088b44 *242089442404a104171208890424e87cd3f4ffa10417120889442404c704240a000000e827d4f4 *ffa1041712088944240cc744240875000000c744240401000000c70424604f1108e822d6f4ffa1 *04171208890424e8c5d1f4ffc70424fe000000e823ffffff83ec1c895c24188d5c2424833d2cbb *1208007427833d30bb120800741ea130bb120889442408c7442404e24e1108a104171208890424 *e84ed1f4ff895c24088b44242089442404a104171208890424e8d5d2f4ffa10417120889442404 *c704240a000000e880d3f4ff8b5c241883c41cc383ec0c8d442414894424088b44241089442404 *a104171208890424e898d2f4ffa10417120889442404c704240a000000e843d3f4ff83c40cc383 *ec0c895c24088b5c2410891c24e8ccd1f4ff85c0751c8b44241489442404891c24e8e8420000c7 *0424fe000000e846feffff8b5c240883c40cc383ec0c895c24088b5c2414895c24048b44241089 *0424e849d3f4ff85c0751c8b44241889442404891c24e8a5420000c70424fe000000e803feffff *8b5c240883c40cc35383ec088b4424148b5c24100fafd88b44241889442404891c24e863ffffff *ba0000000039da7d09c60402004239da7cf783c4085bc383ec0c8b442410890424e8dcd3f4ff83 *c40cc383ec1ca100171208890424e838d0f4ff8b4424248944240c8b44242089442408c7442404 *e04f1108a104171208890424e8e3cff4ffa104171208890424e806d0f4ffe831d1f4ff83ec0ca1 *48bb1208c1e002890424e84e42000083c40cc383ec0ca150bb1208c1e00c89442404c704240000 *0000e8ff410000c70424fb000000e82dfdffff8b54240489d0803a0074064080380075fa29d0c3 *a1b8b812088d50018915b8b81208c3c705b8b8120800000000b800000000c383ec1c895c24188b *5c2420c744240403000000891c24e815d2f4fff6c408741925fff7ffff89442408c74424040400 *0000891c24e8f7d1f4ff8b5c241883c41cc383ec1c895c24188b5c2420c744240403000000891c *24e8d4d1f4fff6c40875190d0008000089442408c744240404000000891c24e8b6d1f4ff8b5c24 *1883c41cc35557565383ec1c8b7c24308b6c243483fd000f876301000081ffe7030000771d897c *2408c7442404e74e11088b442438890424e816d3f4ffe91f02000083fd000f873501000081ff3f *420f00776ec7442408e8030000c744240c00000000893c24896c2404e8782301008944240c8b74 *240cc7442408e8030000c744240c00000000893c24896c2404e8242201008974240c89442408b8 *eb4e1108837c243c007505b8f64e1108894424048b442438890424e897d2f4ffe9a001000083fd *000f87b600000081ffffc99a3b0f87aa000000c7442408e8030000c744240c00000000893c2489 *6c2404e8f522010089442410c7442408e8030000c744240c00000000893c24896c2404e8a52101 *00c7442408e8030000c744240c0000000089042489542404e8b92201008944240c8b74240cc744 *240840420f00c744240c00000000893c24896c2404e8652101008974240c89442408b8004f1108 *837c243c007505b8124f1108894424048b442438890424e8d8d1f4ffe9e1000000c7442408e803 *0000c744240c00000000893c24896c2404e84b22010089442414c7442408e8030000c744240c00 *000000893c24896c2404e8fb200100c7442408e8030000c744240c0000000089042489542404e8 *0f22010089442410c744240840420f00c744240c00000000893c24896c2404e8bf200100c74424 *08e8030000c744240c0000000089042489542404e8d32101008944240c8b74240cc744240800ca *9a3bc744240c00000000893c24896c2404e87f2001008974240c89442408b8224f1108837c243c *007505b83b4f1108894424048b442438890424e8f2d0f4ff8b44243883c41c5b5e5f5dc383ec0c *8b442410890424e807cff4ff83c40cc39090905557565383ec1c8b6c2430c7442414000000008b *442434894424188d442418890424e836b00000833ddcb81208007417c705dcb8120800000000c7 *44241401000000e841050000813d40091208e0bb12087405e8631c0000813dc8b8120848091208 *750c813dd0b81208480912087418813dc0b81208480912080f94c00fb6c0890424e8ad14000083 *3ddcb8120800759f813dc0b81208480912080f85b1000000813dc8b81208480912080f85a10000 *00813dd0b81208480912080f8591000000c744240401000000c70424e4d10f08e814b00000813d *c0b81208480912087571e884100000813dc0b81208480912087560e83119000085c07425e83619 *0000833ddcb81208000f8523ffffff813d40091208e0bb12087439e89d1b0000eb328b15bcb812 *088b020fb740124883f8027714c744240408d311088b02890424e87b0d0000eb0cc70424205011 *08e9cc0000008b15c0b8120881fa4809120874258b4204a3c0b81208c7420448091208813dc0b8 *120848091208750ac705c4b812084809120889d38b442418895068833d94bb120800752e813dc0 *b81208480912087518813dc8b8120848091208750c813dd0b8120848091208740ac705d8b81208 *010000000fb77310e842cbf4ff8b5320891083fe01742f83fe01721183fe02740583fe047530bf *04000000eb358b44241883c00889442404c70424485e1008e89f2b0000eb0c8b442418890424e8 *61fe000089c7eb0cc7042460501108e8e9f7ffff8b4424188b5868e8e1caf4ff8b0089432083ff *040f8742020000ff24bd845311088b442418817874000400000f86b30000008b40748d3485ff0f *0000c1ee0c89f0030520bc12083b0528bc12080f8392000000a320bc1208893424e8b6a9000089 *c78b4424188b40708947088b4424188b40708b400c89470c8b4424188b407083780c0074088b40 *0c897808eb0f8b542418a1b8ba1208897804897a6c8b4424188b407089780c89fa89f0c1e0058d *043839c7731f89c1a1b8ba1208894214c7421000000000c7421c0000000083c22039ca72e3a1b8 *ba12080170088b442418897870eb1c891c24e82de10000c705e8b8120801000000c705d8b81208 *01000000a1c0b81208894304891dc0b81208813dc4b81208480912080f854d010000e930010000 *891c24e8eee00000891c24e83007000089c6837b240074058b43248930893424e8d1e00000a1c0 *b812088946048935c0b81208813dc4b81208480912080f85050100008935c4b81208e9fa000000 *c705d8b81208000000000fb7431039f00f851afeffff891c24e88ae00000e9a3000000a1041712 *08890424e8cbc8f4ff891c24e870e00000e9bd000000395d00757e66837b1004751a837d080074 *0b8b45088b53308b52048910c7450401000000eb20837d080074098b4508c70000000000837c24 *14000f95c00fb6c083c002894504837d0c00750a8b4510a3bcb81208eb098b550c8b4510894210 *837d1000740a8b4510c7400c000000008b442418890424e826ac000083c41c5b5e5f5dc3837b24 *007434813dc0b81208480912087508891dc0b81208eb08a1c4b81208895804891dc4b81208eb10 *897c2404c70424a0501108e87df5ffff833de8b81208000f848bfbffffc744240400000000c704 *24e4d10f08e839ac0000c705e8b8120800000000e968fbffffb800000000c3b800000000c383ec *0c895c2408e837f2ffffe894c7f4ff89c385c00f8593000000c705c4b8120848091208c705c0b8 *120848091208a1d4b812083d4809120874158b5804890424e85709000089d881fb4809120875eb *8b15bcb8120885d2741a8b4210a3bcb81208891424e800f7ffff8b15bcb8120885d275e6c74424 *04000000008b442410890424e8adefffff89442404c7042410541108e845f1ffffe8a7f1ffffe8 *48f3ffffc7042400000000e881f4ffffe891f1ffff89d88b5c240883c40cc35383ec08a1d4b812 *083d4809120874158b580c890424e8aa08000089d881fb4809120875eb83c4085bc383ec1c895c *241089742414897c2418e84ac7f4ff8b388b74242083ee088b466866c7401000008b4668890424 *e85ade00008b5668a1e4b812088942048b4668a3e4b812088b466883781800751266c740120700 *8b4668c7401848091208eb098b466866c7401208008b46688b581c893424e84baa0000e8e3c6f4 *ff893889d88b5c24108b7424148b7c241883c41cc357565383ec108b742420e8c0c6f4ff8b388d *44240c890424e8ffa90000bae4b812088b1de4b8120881fb48091208742239731c74108d53048b *5b0481fb4809120875edeb0d8b4304890281fb48091208750cc70424e0501108e86df3ffffc743 *044809120866837b120775128b4318890424e85b050000c743180000000066c7431200008b4424 *0c895868e83fc6f4ff89388b44240c83c00883c4105b5e5fc38b4424048b481c8b4424088b501c *b8ffffffff39d1720839d10f97c00fb6c0c38b4424048b401cc3565383ec048b44241083f82577 *05b8260000008d70f3890424e86d30000089c1c700805c100866c7401000008b153c0912088d42 *01a33c09120889511c66c741120000c7411800000000c7412000000000c7412400000000897128 *8b1d48bb120881fb00f80300764389dac1ea0bb820080402f7e289d0c1e00729d089c2c1e20b89 *d829d03dfffb0100770489d3eb1c89dac1ea0bb820080402f7e289d0c1e00729d0c1e00b8d9800 *f803008d43f389412c8d14b18d4230894130c74230185e1008c7410448091208a1d4b812088941 *0c890dd4b8120889c883c4045b5ec38b542404813dc0b812084809120875088915c0b81208eb08 *a1c4b812088950048915c4b81208c383ec0c8b442410890424e8caffffff83c40cc383ec0c895c *24088b5c2410c74424041c541108c7042414000000e840f3ffff89c289188943248b4424148942 *08c7420400000000a1bcb81208894210c7420c00000000833dbcb81208007408a1bcb812088950 *0c8915bcb81208813dc0b81208480912087508891dc0b81208eb08a1c4b81208895804891dc4b8 *12088b44241889442404891424e8a20000008b5c240883c40cc383ec0cc705c0b8120848091208 *c705c4b8120848091208c705c8b8120848091208c705ccb8120848091208c705d0b81208480912 *08c705e4b8120848091208c705bcb8120800000000c705d4b8120848091208c705d8b812080000 *0000c705dcb81208000000008b0d90bb1208ba6766666689c8f7eac1fa0389c8c1f81f29c28915 *94bb1208e809a7000083c40cc3c705e0b8120801000000c383ec1c895c2414897424188b5c2420 *8b44242489442404891c24e891f6ffff8b7304891c24e8bbf2ffff89f08b5c24148b74241883c4 *1cc383ec0c895c24088b5c2410813dc0b81208480912087412c70424c0b81208ffd3c70424c4b8 *1208ffd3813dc8b81208480912087412c70424c8b81208ffd3c70424ccb81208ffd3813dd0b812 *08480912087409c70424d0b81208ffd3813de4b81208480912087409c70424e4b81208ffd3891c *24e8471300008b5c240883c40cc383ec0cc744240400000000c70424e4d10f08e8c9a6000083c4 *0cc383ec0cc744240401000000c70424e4d10f08e8aea6000083c40cc383ec0c895c24088b5c24 *10891c24e836ffffff891c24ff15ecb812088b5c240883c40cc383ec0c8b442410a3ecb81208c7 *44240400000000c704249bd20f08e866a6000083c40cc35557565383ec1c8b6c24308b45283b45 *2c7217c7442404bcd21108892c24e81504000089e8e9210100008b45288b552c01c039d0760289 *d08d1c853310000081e300f0ffffc1eb0289d981fb00f80300764189dac1ea0bb820080402f7e2 *89d0c1e00729d089c2c1e20b89d829d089d13dfffb0100761c89dac1ea0bb820080402f7e289d0 *c1e00729d0c1e00b8d8800f8030089cb8d41f389442418890c24e8692c000089442414fcb90d00 *000089c789eef3a58b45288d4485008b553029d083c0348b4c24148d1c9983e0fc29c389df89d6 *89c283f8077612f6c304740d8b0689038d7b0483c60483ea04fc89d1c1e902f3a589d083e00285 *c0740c0fb70666890783c70283c60289d083e00185c074050fb60688078b4424148958308b5424 *1889502866c7451003008945048b45288d44853489453066c7451200008b4c2414c74108000000 *0089c883c41c5b5e5f5dc38b54240466c7421200008b4a04c7420448091208813dc0b812084809 *120875088915c0b81208eb08a1c4b812088950048915c4b8120889c8c383ec0c8b4424103d4809 *1208740f890424e8b1ffffff3d4809120875f183c40cc383ec0c8b4424103d48091208740f8904 *24e890ffffff3d4809120875f183c40cc3c705dcb8120801000000c705d8b8120801000000c357 *565383ec108b5c242066837b12000f84c70100000fb7431283f8060f8769010000ff2485985311 *08be480912088b7b148d4f048b570439f2742a39da75168b43048901395f0c0f85590100008977 *0ce9510100008d4a0489d68b520481fa4809120875d6c7042400511108e9210100008b43148d48 *048b500481fa48091208741639da0f84170100008d4a048b520481fa4809120875eac704244051 *1108e9ee0000008b43146683781003750a8b4004668378100374f68d48188b501881fa48091208 *741639da0f84d30000008d4a048b520481fa4809120875eac7042480511108e9aa000000b90000 *00008b15c8b8120881fa48091208744e39da753d85c975238b4304a3c8b81208391dccb812080f *858f000000c705ccb8120848091208e9800000008b42048941043915ccb812087572890dccb812 *08eb6a89d18b520481fa4809120875b2c70424c0511108eb40b9000000008b15d0b8120881fa48 *091208741d39da750c85c9742a8b4204894104eb3189d18b520481fa4809120875e3c704240052 *1108eb07c7042427541108e80becffff8b4304a3d0b81208eb058b43048901c743044809120866 *c743120000c7431400000000813dc0b81208480912087508891dc0b81208eb08a1c4b812088958 *04891dc4b8120883c4105b5e5fc383ec0cc7442404000000008b442410890424e85b00000083c4 *0cc383ec0c895c24088b5c241066837b1004742266837b1002741b0fb7431283e8076683f80176 *08891c24e8d4fdffff66c7431002008b5c240883c40cc383ec0c8b442414894424048b44241089 *0424e80400000083c40cc35557565383ec0c8b44242066837810040f841d02000066837810020f *8412020000890424e882fdffff8b5424208b7a30813fd4351008750583c704eb0983ef04c70754 *0912088d5f048b4704eb548b1383ea0c0fb7420883e82383f8067737ff2485b45311088b430489 *c2c1ea18c1e81025ff0000008d441015eb218b430483c003eb198b42048b00eb118b43048b4018 *83c002eb078b420483e01f408d1c838b0383e80c668378082a7415668378082b7507837c242400 *7507668378082c758d0fb7400883f82b741d83f82b7f0a83f82a745ee94e01000083f82c0f8433 *010000e940010000c7042402000000e8e2270000c700c03310088b5424248950048d7bfc8b5424 *20837a18007507c74218480912088907c747fcd43510088d47fc8b54242089423066c742100000 *e90101000089de29fe89f0c1f8028d70ff83c002890424e88c27000089c58970048b0789450883 *c704ba0000000039f2730e8b0783c7048944950c4239f272f2c74500900810088b4b048b110fb7 *42fcf6840061121208010f858000000081fadc5b1008750b8b4104890424e8d7fbffff8b4b0489 *c82500f00f00c1e80789ca81e20000f0ff89c609d6837e1000750e8969048b4304c700645a1008 *eb408b43048968048b4b048139dc5b100874268b46108d04c08b15acba12088b4482148941088b *46108d04c08b4b048b15acba1208894c82148b4304c700445b100883c704892fe931feffff83c7 *048b44242066c740100200897830eb0cc7042435541108e81ae9ffff83c40c5b5e5f5dc35383ec *088b54241081fa48091208745b8b5a0ca1d4b8120889420c8915d4b812080fb7421283f801740f *83f801723283f802740f83f803751cc744240400d31108eb08c744240408d31108891424e872fd *ffffeb0cc7042440521108e8b1e8ffff89da81fb4809120875a583c4085bc357565383ec108b35 *d4b8120881fe480912080f84b900000066837e1003750a8b760466837e100374f666837e12020f *858e0000008b7e148b4e308b0183e80c0fb7400883f82a740783f82c7475eb1c3979047512c744 *240408d31108893424e8f1fcffffeb5c83c108ebcf8b1183ea0c0fb7420883e82383f8067737ff *2485d05311088b410489c2c1ea18c1e81025ff0000008d541015eb218b510483c203eb198b4204 *8b10eb118b41048b501883c202eb078b520483e21f428d0c91e978ffffff8b760c81fe48091208 *0f8547ffffff83c4105b5e5fc383ec1c8b5424200fb7421283f8080f8710010000ff2485ec5311 *088b421489442408c744240440541108eb598b421489442408c74424045e541108eb488b421489 *442408c74424047b541108eb37a1041712088944240cc744240815000000c744240401000000c7 *04248f541108e9aa0000008b42148b401c89442408c744240480521108a104171208890424e88c *b9f4ffe9ac000000a1041712088944240cc74424081a000000c744240401000000c70424a55411 *08eb64a1041712088944240cc74424080e000000c744240401000000c70424c0541108eb42a104 *1712088944240cc74424081e000000c744240401000000c70424c0521108eb20a1041712088944 *240cc744240840000000c744240401000000c70424e0521108e87cbdf4ffeb1f8954240c8b421c *894424080fb7421289442404c7042440531108e887e6ffff83c41cc383ec1c8b5424200fb74210 *83f802740783f8047424eb49a1041712088944240cc74424080f000000c744240401000000c704 *24cf541108eb20a1041712088944240cc74424080d000000c744240401000000c70424df541108 *e8f9bcf4ffeb08891424e851feffff83c41cc35383ec18a1041712088944240cc74424080d0000 *00c744240401000000c70424ed541108e8c2bcf4ff8b1dd4b8120881fb480912087470895c240c *8b431c89442408c7442404fb541108a104171208890424e814b8f4ff8b431c890424e8e7270000 *85c0741989442408c74424040c551108a104171208890424e8ecb7f4ff891c24e80dffffffa104 *17120889442404c704240a000000e82fbaf4ff8b5b0c81fb48091208759083c4185bc383ec0c8b *442410890424e82af7ffff83c40cc356538b5c240cb900000000813dd0b81208480912087465a1 *d0b8120889c289de2b701485f67e558b4204a3d0b8120866c742120000c7420448091208a1c0b8 *12088942048915c0b81208813dc4b812084809120875068915c4b81208b901000000813dd0b812 *0848091208740f8b15d0b8120889d82b421485c07fab89c85b5ec35557565381ec3c010000beff *ffffffc744242400000000c744242800000000c744242c00000000e87afa0000a3f0b8120889c7 *890424e844ffffff85c00f85ef020000bb0000000083bc2450010000007432813dd0b812084809 *12087421a1d0b812088b401429f889c369db204e0000eb12c744242401000000e97f010000bbff *ffff07b800000000bd200000008dbc24b000000089e9fcf3ab8d7c243089e9fcf3ab8b0dc8b812 *0881f948091208745c8b79040fb7411283f804740783f805741deb338b411439c67d0289c689c2 *c1ea0583e01f0fab8494b0000000eb248b411439c67d0289c689c2c1ea0583e01f0fab449430eb *0cc7042414551108e98e01000089f981ff4809120875a4ba83de1b4389d8f7e2c1ea1289542428 *69d240420f0089d829d08944242ce998000000e8a6b6f4ff833804744e8338090f842fffffffe8 *93b6f4ff8b0089442408c74424041f551108a104171208890424e8c8b5f4ffa104171208890424 *e8ebb5f4ffc7042423551108e88fb5f4ffc704242a551108e909010000813d40091208e0bb1208 *740ae8ed050000e994010000833ddcb81208000f8587010000e8f6f80000890424e8c7fdffff81 *3dc0b81208480912080f856a0100008d44242889442410c744240c000000008d44243089442408 *8d8424b0000000894424048d4601890424e8a5b5f4ff85c00f8832ffffffbd00000000b9010000 *0085c9750b837c2424000f84f80000008b0dc8b8120881f9480912080f84bf0000008b79040fb7 *411283f804740783f8057426eb4ebb00000000837c242400753b8b411489c283e21fc1e8050fa3 *9484b00000000f92c0eb1fbb00000000837c24240075178b411489c283e21fc1e8050fa3548430 *0f92c084c07413bb01000000eb0cc7042438551108e841e2ffff85db742f66c741120000c74104 *48091208a1c0b81208894104890dc0b81208813dc4b81208480912087519890dc4b81208eb1185 *ed7508890dc8b81208eb03894d0489cd89f981ff480912080f8541ffffff85ed7516c705ccb812 *0848091208c705c8b8120848091208eb0dc7450448091208892dccb8120883bc24500100000074 *19833ddcb81208007510813dc0b81208480912080f84f5fcffff81c43c0100005b5e5f5dc39090 *c383ec1c895c24188b5c24203b1d08b912087c6a833d04b91208007519c7442404435511088d04 *9d04000000890424e8d9e2ffffeb20c7442408435511088d049d0400000089442404a104b91208 *890424e8f2e2ffffa304b912088b1508b9120839da7f11a104b91208c70490ffffffff4239da7e *ef8d4301a308b912088b5c241883c41cc383ec0cc7042400000000e838e4ffff83c40cc381ec9c *000000899c249400000089b424980000008bb424a00000008b0d40091208a104b912088b14b08d *4104a340091208c1e204a120ba12088b04108901813d4009120820bc12087518c7042451551108 *e874e1ffffc7042401000000e88be0ffff8d5c2410891c24e875b6f4ff89742404891c24e8a9b4 *f4ffc744240800000000895c2404c7042401000000e8e1b4f4ff83fe12750cc7042412000000e8 *4affffffc705d8b81208010000008b9c24940000008bb4249800000081c49c000000c383ec0cc7 *042420b91208e812b6f4ff83c40cc383ec0cc7442408a0b91208c744240420b91208c704240000 *0000e87fb4f4ff83c40cc383ec0cc744240800000000c7442404a0b91208c7042402000000e85c *b4f4ff83c40cc3833d0cb91208000f95c00fb6c0c383ec0c813d40091208e0bb12087523833ddc *b8120800751ae85db4f4ff813d40091208e0bb12087509833ddcb812080074e683c40cc381eccc *010000899c24bc01000089b424c001000089bc24c401000089ac24c80100008b9c24d00100008b *bc24d40100008bac24d801000085db0f88c80100008db42430010000893424e836b5f4ff85c00f *85b1010000895c2404893424e862b3f4ff85c00f859d0100008d8424b000000089442408897424 *04c7042400000000e88fb3f4ff85c00f857a010000891c24e874fdffffa104b912088b04988944 *241cc78424a40000000000000083fffe741d83fffe7f0e8d470583f8010f8793000000eb5683ff *ff742be987000000a104b91208c70498feffffff895c2404c7042420b91208e8aab5f4ffc74424 *2001000000eb6da104b91208c70498ffffffff895c2404c7042420b91208e884b5f4ffc7442420 *00000000eb478b5500a104b91208891498895c2404c7042420b91208e88fb2f4ffc744242069e1 *0f0883fffb750bc78424a400000000000080ff050cb91208eb0cc704246a551108e83fdeffff83 *bc24dc0100000074158d7c2424fcb9200000008bb424dc010000f3a5eb0c8d442424890424e8f8 *b3f4ffb80000000083fb11750e833d00b91208007405b801000000098424a4000000c744240800 *0000008d44242089442404891c24e891aff4ff85c07523c7442408000000008d8424b000000089 *442404c7042402000000e82eb2f4ff85c07424837c241c007816a104b912088b0498890424e817 *030000ff0d0cb91208bafdffffffeb1c8b44241c83c0038b54241c83f802760c8b44241c894500 *bafcffffff89d08b9c24bc0100008bb424c00100008bbc24c40100008bac24c801000081c4cc01 *0000c35383ec08e81efdffff813d40091208e0bb1208746e8b15400912088d42fca3400912088b *5afca14cbb1208890424e81beaffff8b48308d51fc895030c741fcb45e10088b48308d51fc8950 *30c741fc1c0910088b48308d51fc8950308959fc8b48308d51fc895030c741fcd4351008890424 *e8ddeaffff813d40091208e0bb12087592e8c2fcffff83c4085bc3565383ec048b7424108b1d40 *09120881fbe0bb1208741083eb04891c24ffd681fbe0bb120875f083c4045b5ec383ec0c833ddc *b8120800740cc70424fc000000e86ddcffffe8c3eeffff83c40cc35381ec38010000c78424a000 *0000d1e50f088d9c24a00000008d8424a4000000890424e832b2f4ffc784242401000000000000 *8d44241089442408895c2404c7042402000000e8dfadf4ff85c0740cc70424a0551108e8e6dcff *ffc744240401000000c7042402000000e84baef4ffc78424a000000056e10f088d9c24a0000000 *8d8424a4000000890424e8cab1f4ffc7842424010000000000008d44241089442408895c2404c7 *042412000000e877adf4ff85c0740cc70424e0551108e87edcffff81c4380100005bc39090908b *442404c1e0048b1520ba12088b0402c3c38b4424048b1066837afc1e741c66837afc2274156683 *7afc1f740e66837afc20740766837afc2175288b40048b1066837afc1e74f466837afc2274ed66 *837afc1f74e666837afc2074df66837afc2174d8c383ec1c895c2414897424188b742420833d24 *ba1208007505e8f9000000893424e889ffffff89c689442404a12cba1208890424e8c8dd000085 *c075528b0d20ba1208a124ba120889c329cbc1fb048b00a324ba120889dac1e204c74411080000 *0000a120ba1208893410a120ba1208c744100c00000000895c240889742404a12cba1208890424 *e862de000089d88b5c24148b74241883c41cc383ec0c8b442410890424e857ffffff8b0d20ba12 *0889c2c1e204ff44110883c40cc383ec1c895c24188b442420c1e004030520ba1208ff48088378 *0c00753583780800752f89c3833800741bc7442408000000008b0089442404a12cba1208890424 *e86cde0000a124ba12088903891d24ba12088b5c241883c41cc35383ec188b1d28ba120885db75 *66c70528ba120840000000c74424040b561108c7042400040000e877dbffffa320ba12088d5010 *b90000000005f003000039d072208908c7400400000000c7400800000000c7400c0000000089c1 *83e81039d073e0891524ba1208e8f2df0000a32cba1208eb6aa128ba12088d1400891528ba1208 *c74424080b561108c1e00589442404a120ba1208890424e840dbffffa320ba120889dac1e2048d *0c10bb000000008d440af039c872208918c7400400000000c7400800000000c7400c0000000089 *c383e81039c873e0890d24ba120883c4185bc357565383ec108b7c2420a128ba1208c1e0048b15 *20ba12088d34028d5a1039f373298b0385c0741c3b0520ba1208720439f072108b03894304837b *08007405891c24ffd783c31039f372d783c4105b5e5fc357565383ec108b7c2420a128ba1208c1 *e0048b1520ba12088d34028d5a1039f3732c837b0c0074088d430c890424ffd78b0385c074113b *0520ba1208720439f07205891c24ffd783c31039f372d483c4105b5e5fc357565383ec10a128ba *1208c1e0048b1520ba12088d34028d5a1039f37376837b0c00740e8b430c890424e8339f000089 *430c8b0385c074553b0520ba1208720439f07249837b08007543837b0c00753189df833b00741b *c7442408000000008b0389442404a12cba1208890424e85bdc0000a124ba12088907893d24ba12 *08eb0c8b03890424e8d79e0000890383c31039f3728a83c4105b5e5fc357565383ec108b7c2420 *85ff7428833d2cba120800741fc744240400000000a12cba1208890424e8c5dc0000e809de0000 *a32cba1208a128ba1208c1e0048b1520ba12088d34028d5a1039f30f8392000000833b00752b83 *7b0400747cc7442408000000008b430489442404a12cba1208890424e8b9db0000c74304000000 *00eb578b033b0520ba1208720439f0724985ff75238b033b4304743ec7442408000000008b4304 *89442404a12cba1208890424e87bdb000089d82b0520ba1208c1f804894424088b0389442404a1 *2cba1208890424e8dada000083c31039f30f826effffff83c4105b5e5fc3909083ec2c8d442410 *890424e881acf4ffa338ba12088b442410a33cba120883c42cc3a170ba12082b0574ba120850db *04248d642404db0530ba1208def9c383ec0ce8bbffffffa13cba12082b0574ba120850db0424db *0530ba1208def983c410c383ec6c8d44241089442404c7042400000000e849a9f4ff8b44243483 *c46cc35383ec188b1d40bb1208833d44bb1208037640895c240cc744240844000000c744240401 *000000c7042440561108e83eadf4ff895c240cc74424083a000000c744240401000000c70424a0 *561108e81eadf4ffc7442404d65a1108a170bb1208c1e002890424e8a7d7ffffa398ba1208ba00 *0000003b1570bb12087315a198ba1208c7049000000000423b1570bb120872eb83c4185bc383ec *1cc7042402000000e8dba9f4ff83f8ff7531a1041712088944240cc744240822000000c7442404 *01000000c70424e0561108e8a1acf4ffc7042401000000e8afd5ffffa330ba1208e89bfeffffa1 *38ba1208a334ba120883c41cc383ec0ce885feffffa13cba1208a340ba1208a138ba1208a348ba *1208a134ba12083b0538ba12087e0cc70544ba120800000000eb10a138ba12082b0534ba1208a3 *44ba120883c40cc383ec0ce83cfeffffa138ba1208a354ba12082b057cba12082b0548ba1208a3 *50ba120885c0790ac70550ba120800000000a13cba12082b0574ba12082b0540ba1208a34cba12 *0885c0790ac7054cba12080000000083c40cc383ec0ce8e3fdffffa13cba12082b054cba12082b *0574ba12082b0540ba1208a358ba1208a138ba12082b0554ba1208a35cba1208833d58ba120800 *790ac70558ba120800000000833d5cba120800790ac7055cba12080000000083c40cc383ec1ca1 *88bb120885c0744b83f8017631a1041712088944240cc744240804000000c744240401000000c7 *0424e05a1108e847abf4ffc70594ba120801000000eb15a10417120889442404c7042407000000 *e806a9f4ff833d44bb120800742ce828fdffffa13cba1208a370ba1208a138ba1208a378ba1208 *833d44bb120800740ae866fdffffa38cba120883c41cc383ec5c895c244c89742450897c245489 *6c24588b6c24708b3540bb1208833d44bb1208000f8465010000e8cefcffffa13cba1208894424 *488b1d38ba120889c72b3d70ba120889d82b0578ba120889442444833d44bb1208040f85c30000 *0085f60f84bb000000e8f1fcffff894424408b442468c1e002894424108b442464c1e002894424 *0c8b442460c1e00289442408c7442404e55a1108893424e8cca5f4ff896c24308b158cba120889 *d02b0590ba12088944242c8b44244029d08944242889d82b0534ba120850db04248d642404db05 *30ba1208dcf9d9c9dd5c2420db442448d8f1dd5c2418db442444d8f1dd5c241057db04248d6424 *04def1dd5c2408c744240420571108893424e85ca5f4ff8b442440a390ba1208893424e87ba5f4 *ffa198ba1208013ca88b44246cba00000000010568ba120811156cba12088b442460ba00000000 *010560ba1208111564ba1208013d74ba12088b44244401057cba1208a170bb12084839c575218b *4424683b0580ba12087605a380ba1208ff0588ba12088b442468010584ba1208833d94ba120800 *742fa1041712088944240cc744240808000000c744240401000000c70424f45a1108e830a9f4ff *c70594ba1208000000008b5c244c8b7424508b7c24548b6c245883c45cc35557565381ec8c0200 *008bbc24a00200008b3540bb1208833d44bb1208000f8491050000c744247000000000e8f1faff *ffa13cba12088944245ca138ba12082b0534ba12088944247489f899013d60ba1208111564ba12 *08db44245cd9eed9c9dae9dfe09e750a7a08c744245c01000000db442474d9eed9c9dae9dfe09e *750a7a08c744247401000000bb000000003b1d70bb1208731c8b0dacba12088b1570bb12088d04 *db8b6c811c016c24704339d372f0833d44bb120803764985f67445c7442410fc5a1108c744240c *fc5a11088d04bd0000000089442408c7442404fd5a1108893424e8a7a3f4ffd9eedd542410dd5c *2408c74424040e5b1108893424e88da3f4ff833d44bb1208020f869a03000085f60f8492030000 *c744240c010000008d9c2480000000895c2408a160ba12088b1564ba12080fa4c202c1e0028904 *2489542404e869d4ffff895c2408c744240460571108893424e833a3f4ffc744240c0100000089 *5c2408a168ba12088b156cba12080fa4c202c1e00289042489542404e82bd4ffff895c2408c744 *24041d5b1108893424e8f5a2f4ff833d88ba1208007441c744240c01000000895c2408a180ba12 *08c1e002890424c744240400000000e8ead3ffffa188ba12088944240c895c2408c7442404a057 *1108893424e8aba2f4ff89742404c704240a000000e8fba4f4ffbb000000003b1d70bb12087341 *a198ba1208db0498db0530ba1208def9dd5c2410895c240c8d14dba1acba12088b44901c894424 *08c7442404e0571108893424e856a2f4ff433b1d70bb120872bfa120bb120825ff0f0000894424 *08c744240420581108893424e82fa2f4ffdb0544ba1208db0530ba1208dcf9d9c9dd5c2410db05 *40ba1208def1dd5c2408c744240440581108893424e8ffa1f4ffdb0550ba1208db0530ba1208dc *f9d9c9dd5c2410db054cba1208def1dd5c2408c744240480581108893424e8cfa1f4ffdb057cba *1208db0530ba1208dcf9d9c9dd5c2410db0574ba1208def1dd5c2408c7442404c0581108893424 *e89fa1f4ffdb055cba1208db0530ba1208dcf9d9c9dd5c2410db0558ba1208def1dd5c2408c744 *240400591108893424e86fa1f4ffdb442474dd5c2468db0530ba1208dd442468d8f1dd5c2410db *44245cdd542460def1dd5c2408c744240440591108893424e839a1f4ffdb057cba1208db0530ba *1208dcf9d905505b1108dccadd442468d8f2defbd9cadd5c2410db0574ba1208d8f1decadc7c24 *60def9dd5c2408c744240480591108893424e8f1a0f4ff8b44245c3b0574ba12087524c744240c *010000008d84248000000089442408c7042400000000c744240400000000eb6bc744240c010000 *008d84248000000089442408a160ba12088b1564ba12080fa4c202c1e0025250df2c248d642408 *85d27906d805545b1108dd5c2478dd4424788b44245c2b0574ba120850db04248d642404db0530 *ba1208def9def9dd1c24e8d1ef000089042489542404e873d1ffff8d84248000000089442408c7 *442404c0591108893424e836a0f4ff8b44245c2b0574ba12082b0540ba120850db04248d642404 *db0530ba1208dcf9d9c9d80d505b1108db442474d8f2d8f9dd5c2410db44245cdef2def1dd5c24 *08c7442404005a1108893424e8e69ff4ff833d44bb1208020f85e400000085f60f84dc000000a1 *60ba12088b1564ba12080fa4c202c1e002894424088954240cc74424043a5b1108893424e8a79f *f4ffdb057cba1208db0530ba1208dcf9d9c9dd5c2444db0574ba1208d8f1dd5c243cdb0550ba12 *08d8f1dd5c2434db054cba1208d8f1dd5c242cdb0544ba1208d8f1dd5c2424db0540ba1208def1 *dd5c241ca120bb120825ff0f000089442418a188ba120889442414a180ba1208c1e00289442410 *833d88ba1208007415a184ba1208c1e002ba00000000f73588ba1208eb05b8000000008944240c *8b6c2470896c2408c7442404405a1108893424e8f59ef4ff893424e81d9ff4ff3b350417120874 *08893424e8dda1f4ff81c48c0200005b5e5f5dc3a1c0ba12088b15c4ba12080fa4c202c1e002c3 *90909081ec1c20000089e0050020000089580089700489780889680c8b9c24242000008b842420 *200000ffe089f089e281c2002000008b5a008b72048b7a088b6a0c81c41c200000c39090565383 *ec248b7424308b5c2434c744241800000000c744241c0000000089f185f67902f7d9497828d905 *585b1108dd442418d8c98b048bba000000005250df2c248d642408dec1dd5c24184979e0ddd8dd *442418d9eed9c9dde1dfe0ddd99e7a0274168b44243889442408dd1c24e8e1a2f4ffdd5c2418eb *02ddd885f679058074241f80dd44241883c4245b5ec383ec1c895c24188b5c242089d885db7902 *f7d850db04248d642404dd5c2410dd442410d9eed9c9dde1dfe0ddd99e7a0274168b4424248944 *2408dd1c24e884a2f4ffdd5c2410eb02ddd885db79058074241780dd4424108b5c241883c41cc3 *565383ec148b7424208b5c2424b8000000008944241089f185f67902f7d9497828d905585b1108 *d9c0d84c24108b048bba000000005250df2c248d642408dec1d95c24104979e0ddd8d9442410d9 *eed9c9dde1dfe0ddd99e7a0274168b44242889442408dd1c24e8fba1f4ffd95c2410eb02ddd885 *f679058074241380d944241083c4145b5ec383ec1c895c24188b5c242089d885db7902f7d850db *04248d642404d95c2414d9442414d9eed9c9dde1dfe0ddd99e7a0274168b44242489442408dd1c *24e89ea1f4ffd95c2414eb02ddd885db79058074241780d94424148b5c241883c41cc357565383 *ec088b5c24188b7c241cdd442420dd1c248b04248b54240489c1c7030200000085c07517f7c2ff *ffff7f750fc7430400000000c70700000000eb5cc743040200000089d0c1e81425ff0700002d33 *04000089d681e2ffff0f003dcdfbffff740881ca00001000eb1b40f7c200001000751201d285c9 *79014201c948f7c20000100074ee89078b430889088b430889500485f67903f75b0483c4085b5e *5fc383ec08891c24897424048b4c240c8b5c24108b542414c70101000000f7c2ffffff7f750fc7 *410400000000c70300000000eb55c741040100000089d0c1f81725ff0000002d96000000890389 *d681e2ffff7f003d6affffff740881ca00008000eb1a8b03408903f7c200008000750d01d248f7 *c20000800074f589038b4108891085f67903f759048b1c248b74240483c408c383ec0c895c2408 *dd442410dd1c248b14248b4c2404bb0000000089c8c1e81425ff0700003dff0700007511f7c1ff *ff0f00750485d27405bb0100000089d88b5c240883c40cc383ec0c895c2408dd442410dd1c248b *14248b4c2404bb0000000089c825ffffff7f3d0000f07f750985d27505bb0100000089d88b5c24 *0883c40cc383ec0cdd442410dd1c248b14248b4c2404b800000000f7c10000f07f7511f7c1ffff *0f00750485d27405b80100000083c40cc383ec0c895c2408dd442410dd1c248b14248b4c2404bb *0000000081f900000080750985d27505bb0100000089d88b5c240883c40cc38b542404b9000000 *0089d0c1e8173cff750df7c2ffff7f007405b90100000089c8c38b44240425ffffff7f3d000080 *7f0f94c00fb6c0c38b542404b90000000089d0c1e81784c0750df7c2ffff7f007405b901000000 *89c8c3817c2404000000800f94c00fb6c0c39090905557565383ec0c833dacba1208000f858003 *0000833d50bb1208007440a15cbb12083b0550bb12087605a350bb1208833d50bb1208007425a1 *54bb12083b0550bb12087618c70424605b1108e83ec8ffffc7042401000000e85b9df4ffe88e79 *0000c7442404f75b1108a170bb12088d04c0c1e002890424e8bcc8ffffa3acba1208bd00000000 *3b2d70bb1208733b8d44ed008b15acba12088d04828928c740104c091208c740144c091208c740 *1c00000000c7402000000000c7400c00000000453b2d70bb120872c58b15acba12088915b0ba12 *08a170bb12088d04c08d4482dca3b4ba1208833d70bb120801767ac74008010000008b1db4ba12 *08c7442404095c1108c7042450000000e828c8ffff894304bd00000000833d70bb12080174718d *5ced00c1e3028b1574bb1208a1acba1208895418088b35acba1208c7442404205c1108a174bb12 *088d0480c1e004890424e8e0c7ffff89441e0445a170bb12084839c572baeb29a1b0ba1208c740 *08010000008b1db0ba1208c7442404205c1108c7042450000000e8a9c7ffff894304bd00000000 *3b2d70bb12080f83ca000000bf000000008b15acba120889d68d04ed0000000089c301e83b7c82 *080f839b0000008d4c1d00c1e1028d04bfc1e00403440e048938c7400400000000c74034000000 *00c740080000000089ca0315acba1208895010896814c7402400000000c7402800000000c7402c *00000000c7403c00000000c7403800000000c7401800000000c7401c00000000c7404000000000 *c7404400000000c7404800000000c7402000000000c7404c00000000478b35acba12083b7c0e08 *0f8265ffffff453b2d70bb12080f8236ffffffbd00000000833d70bb12080174728b15acba1208 *89d38d04ed0000000089c601e8bf00000000837c82080174298d4c3500c1e1028b5c0b048d04bf *c1e0048d5403508954030c478b1dacba12088b440b084839c772d78b0dacba12088d54ed00c1e2 *028b5c11048d04bfc1e0048b5411288954030c45a170bb12084839c5728e833d7cbb1208007426 *833d70bb120801750ec70424c05b1108e8f4c5ffffeb0fa1b4ba12088b4004c7402001000000a1 *b4ba12088b400489400ca1acba1208c7400c00000000a1acba12088b4004a3b8ba1208e8a10000 *00c70530bc120800000000c705a0ba120800000000c7052cbc120800000000c70520bc12080000 *0000a154bb1208a328bc1208c74424087e021008c744240442021008c7042412021008e8c49af4 *ff83c40c5b5e5f5dc383ec0ce837040000890424e8daf1ffff83c40cc38b542404c7420c000000 *00a1b4ba12088b4014894208a1b4ba1208895014c38b4424048b1089500c8b15a0ba1208895008 *a3a0ba1208c383ec0c895c24088b1db8ba1208a154bb120889442404c7042400000000e8760000 *008943048b1554bb1208a1b8ba1208895008a1b8ba1208c7403000000000a1b8ba1208c7403400 *0000008b15b8ba12088b4204a3acbc12088b4204a3b0bc12088b5c240883c40cc3a1b8ba12088b *500485d2740c8b028942048b520885d275f4a1b8ba12088b50048915acbc12088b4004a3b0bc12 *08c35756538b5c24108b7c2414be0000000039fe7333e8ab76000089c289580885db740389430c *a1b8ba1208894214c7421000000000c7421c000000008b0289420489d34639fe72cdc7430c0000 *000089d85b5e5fc357565383ec108b7c24208b1db8ba12088b730839fe745b39fe7239a1b8ba12 *088b500439fe761b8b5a08c7430c000000002b7218891424e82077000089da39fe77e5a1b8ba12 *0889500439fe731c8b1db8ba120889f829f0894424048b4304890424e845ffffff894304a1b8ba *120889780883c4105b5e5fc383ec1c895c240c89742410897c2414896c24188b74242081fe3203 *0000766a8d1cb5ff0f0000c1eb0c891c24e87474000089c289c58b0db8ba12088d79188b411889 *4208c7420c000000008379180074068b411889500c892fa1b8ba120801581cc7421000000000a1 *b8ba1208894214c7421c020000008b028d04b0894204011d20bc12088b02eb7f833d2cbc120800 *74228b15a4ba12088d04b23b05a8ba12087655833d2cbc1208007408a12cbc1208895004e83e75 *000089c2a12cbc120889420889152cbc1208c7421000000000a1b8ba1208894214c7421c000000 *008b02a3a4ba12088b020500100000a3a8ba1208ff0520bc12088b15a4ba12088d04b2a3a4ba12 *0889d08b5c240c8b7424108b7c24148b6c241883c41cc38b1520bc1208c1e20aa1a8ba12082b05 *a4ba1208c1f80289d129c1833d24bc12080074158b1524bc12088b022b42040500100000c1f802 *29c189c8c3833d2cbc120800740e8b15a4ba1208a12cbc1208895004c383ec1c895c2410897424 *14897c24188b5c24208b0d24bc120881fb32030000760a891c24e867feffffeb774383e3fe85c9 *74118b41048d14988b01050010000039c27653e83e74000089c1a324bc120889c78b15b8ba1208 *8d72188b4218894108c7410c00000000837a180074068b421889480c893ec7411000000000a1b8 *ba1208894114c7411c060000008b01894104ff0520bc12088b51048d049a89410489d08b5c2410 *8b7424148b7c241883c41cc383ec0c895c24088b5c241083c305c1eb028d4302890424e8c2fdff *ffc700985d100889580483c0088b5c240883c40cc357565383ec108b7424248b442428890424e8 *baffffff89c7bb000000008b4c242089c239f3730c0fb601880243414239f372f489f883c4105b *5e5fc3c3565383ec048b35b0bc1208a1b8ba12088b5808c1e30ae872feffff8d0c188b460885c0 *740d81e9000400008b400885c075f38b168d8200100000394604730f89d02b46040500100000c1 *f80229c1ba00000000010dc0ba12081115c4ba120889c883c4045b5ec35557565383ec08bd0000 *0000833d70bb1208017522a1b8ba12088b4834c1e10a8b502c8b42042b02c1e8028d840800fcff *ffe980000000bb000000003b1d70bb12087371a1acba1208894424048b1570bb1208891424b900 *0000008d04db8b5424043b4c8208734789d78d34850000000085db750485c9742f8d0489c1e004 *89c2035437048b421c034208c1e00a8dac2800fcffff837a2c00740d8b522c8b42042b02c1e802 *01c5413b4c370872c2433b1c2472a189e883c4085b5e5f5dc35557565383ec0cc7442408000000 *00bd00000000b8000000003b0570bb120873798b15acba120889542404a170bb1208890424bb00 *0000008d44ed008b5424043b5c8208734e89d78d34850000000085ed750485db74368d049bc1e0 *048b5437048d0c028b420803421c3b44370c76168379200075108b41088b5424088d1442895424 *08eb078b410801442408433b5c370872bb453b2c2472998b44240883c40c5b5e5f5dc39083ec0c *833dc8ba120800750ae83cc40000a3c8ba120883c40cc383ec1c895c24188b5c2420891c24e83d *0000008b44242489442408895c2404a1c8ba1208890424e880c100008b5c241883c41cc383ec0c *8b44241089442404a1c8ba1208890424e872c0000083c40cc383ec1c895c2414897424188b7424 *2089742404a1c8ba1208890424e84ec0000089c385c0741d8944240889742404a1c8ba12088904 *24e8a0c10000891c24e898bfffff8b5c24148b74241883c41cc3909090833d94bb1208007e23ff *0dccba1208833dccba1208007f14a194bb1208a3ccba1208c705d8b8120801000000c383ec0cc7 *442404080510088b442410890424e831d2000083c40cc383ec0ce89cd2000083c40cc383ec0ce8 *06baffff8b1530bc120885d274468b4210a330bc1208813abc5c1008742cc702bc5c1008817a0c *44091208741dc7442404000000008b420c890424e865b8ffffe8c6b9ffffe8c0b9ffff8b1530bc *120885d275bae8b2b9ffff83c40cc357565383ec108b5c2420be0000000089da85db7417817a0c *44091208740146c702bc5c10088b521085d275e985f60f84b80000008d4603890424e8f4f9ffff *89c7c700c05d1008c7400800000000897004be0000000089da85db7418817a0c4409120874088b *420c8944b70c468b521085d275e88b1d4cbb1208893424e86db2ffff89442404c7042454d51108 *e8e9b4ffff897c2404890424e8ddb4ffff89c6891c24e800c9ffff8b48308d51fc895030c741fc *b45e10088b48308d51fc895030c741fc1c0910088b48308d51fc8950308971fc8b48308d51fc89 *5030c741fcd4351008890424e8c2c9ffff83c4105b5e5fc383ec1ca1335c11088b15375c110889 *44241089542414c7442408070000008d442410894424048b442420890424e87a8df4ff83c41cc3 *9090c390909083ec1c8b4424248944240c8b44242089442408c7442404405c1108a10417120889 *0424e8a88df4ff83c41cc3c390909083ec1c8b44242489c2c1ea148954240c89442408c7442404 *805c1108a104171208890424e8778df4ff83c41cc390909083ec0c8b44241089442408c7442404 *005d1108a104171208890424e8508df4ff83c40cc39c0710089c0710089c0710089c0710089c07 *10089c0710089c0710089c07100800000000000000002400000083c5048b060fb740fc83e80b83 *f8177711ff2485545d11088b7604ebe68b4500ffe08b06ebfa89f6000000001c00000089f20fb7 *460689442408c1e00289e929c13b4b54731083ed048b4304894500b844371008ffe08b442408c1 *e00229c58b760883c20cb9000000003b4c240873108b0283c20489448d00413b4c240872f08b06 *ebd0000000001b00000089f20fb7460689442408c1e00289e929c189c883e8083b435473058b43 *f8ffe08d45f8c700d46d10088970048b442408c1e00289e929c18d69f88b760883c20cb9000000 *003b4c240873108b0283c20489448d00413b4c240872f08b06ebbf90000000001d00000089f28b *460489442408c1e00289e929c189c883e8083b435473058b43f8ffe08d45f8c700d46d10088970 *048b442408c1e00289e929c18d69f88b760883c20cb9000000003b4c240873108b0283c2048944 *8d00413b4c240872f08b060fb740fc83e80b83f8177711ff2485b45d11088b7604ebe68b4500eb *a48b06eba09090900000000000000000240000008b1683ea080fb7420483e80b83f8260f871f01 *0000ff2485e45e11080fb7561483fa01751b83c504b8485a1008ffe00fb752fe83fa01750883c5 *04e9e500000083c70c3b7b5c7609c7436c03000000eb5cb803000000c1e00289f929c189c883c0 *04c700cc0710084a6689500489700866c74006000089c6e9960000000fb7560483fa01751183c5 *04c743041c091008b8cc071008eb96897424180fb7460683c0038d3c873b7b5c761289436cc745 *001c0910088b43f8e971ffffffc1e00289f929c183c104c701cc0710088d42ff668941048b5424 *180fb74206668941068b4208894108ba000000008b4424180fb74006894424108944241439c273 *138b4424188b44900c8944910c423b54241472ed89ce83c5048b4500e90fffffffc745001c0910 *088b06e901ffffff8b7604e9ccfeffffc70424145e1108e80cb8ffff0000000021000000240000 *008b1683ea080fb7420483e80b83f8260f87b3010000ff2485805f11080fb7561483fa01750a83 *c504b8485a1008ffe083c7103b7b5c7750b804000000c1e00289f929c183c104c701cc0710088d *42ff6689410489710866c741060100ba000000008b4495048944910c4274f5eb570fb752fe83fa *01750883c504e93a01000083c7103b7b5c7609c7436c04000000eb6fb804000000c1e00289f929 *c183c104c701cc0710088d42ff6689410489710866c741060100ba000000008b4495048944910c *4274f589cee9db0000000fb7560483fa01751483c504c74304680a1008b8cc071008e944ffffff *897424180fb7460683c0048d3c873b7b5c761289436cc74500680a10088b43f8e91fffffffc1e0 *0289f929c183c104894c2414c701cc0710088d42ff668941048b5424180fb7420640668941068b *4208894108c7442408000000000fb742068944240c3944240873218b4c24088b5424188b448a0c *8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b5424180fb752068954 *24108b4c2410034c24088b4424088b4485048b54241489448a0cff44240874e289d683c5088b45 *00e97bfeffffc74500680a10088b06e96dfeffff8b7604e938feffffc70424215e1108e82cb6ff *ff0000000062000000240000008b1683ea080fb7420483e80b83f8260f87c0010000ff24851c60 *11080fb7561483fa01750a83c504b8485a1008ffe083c7143b7b5c7753b805000000c1e00289f9 *29c183c104c701cc0710088d42ff6689410489710866c741060200ba000000008b449504894491 *0c4283fa0176f2eb5a0fb752fe83fa01750883c504e94401000083c7143b7b5c7609c7436c0500 *0000eb72b805000000c1e00289f929c183c104c701cc0710088d42ff6689410489710866c74106 *0200ba000000008b4495048944910c4283fa0176f289cee9e20000000fb7560483fa01751483c5 *04c74304480c1008b8cc071008e93effffff897424180fb7460683c0058d3c873b7b5c76128943 *6cc74500480c10088b43f8e919ffffffc1e00289f929c183c104894c2414c701cc0710088d42ff *668941048b5424180fb7420683c002668941068b4208894108c7442408000000000fb742068944 *240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c1 *72dfc7442408000000008b5424180fb75206895424108b4c2410034c24088b4424088b4485048b *54241489448a0cff442408837c24080176dd89d683c50c8b4500e96efeffffc74500480c10088b *06e960feffff8b7604e92bfeffffc704242e5e1108e83fb4ffff8d760000000000620000002400 *00008b1683ea080fb7420483e80b83f8260f87c0010000ff2485b86011080fb7561483fa01750a *83c504b8485a1008ffe083c7143b7b5c7753b805000000c1e00289f929c183c104c701cc071008 *8d42ff6689410489710866c741060200ba000000008b4495048944910c4283fa0176f2eb5a0fb7 *52fe83fa01750883c504e94401000083c7143b7b5c7609c7436c05000000eb72b805000000c1e0 *0289f929c183c104c701cc0710088d42ff6689410489710866c741060200ba000000008b449504 *8944910c4283fa0176f289cee9e20000000fb7560483fa01751483c504c74304380e1008b8cc07 *1008e93effffff897424180fb7460683c0058d3c873b7b5c761289436cc74500380e10088b43f8 *e919ffffffc1e00289f929c183c104894c2414c701cc0710088d42ff668941048b5424180fb742 *0683c002668941068b4208894108c7442408000000000fb742068944240c3944240873218b4c24 *088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b *5424180fb75206895424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408 *837c24080176dd89d683c50c8b4500e96efeffffc74500380e10088b06e960feffff8b7604e92b *feffffc704243b5e1108e84fb2ffff8d76000000000021000000240000008b1683ea080fb74204 *83e80b83f8260f87b3010000ff2485546111080fb7561483fa01750a83c504b8485a1008ffe083 *c7103b7b5c7750b804000000c1e00289f929c183c104c701cc0710088d42ff6689410489710866 *c741060100ba000000008b4495048944910c4274f5eb570fb752fe83fa01750883c504e93a0100 *0083c7103b7b5c7609c7436c04000000eb6fb804000000c1e00289f929c183c104c701cc071008 *8d42ff6689410489710866c741060100ba000000008b4495048944910c4274f589cee9db000000 *0fb7560483fa01751483c504c7430428101008b8cc071008e944ffffff897424180fb7460683c0 *048d3c873b7b5c761289436cc74500281010088b43f8e91fffffffc1e00289f929c183c104894c *2414c701cc0710088d42ff668941048b5424180fb7420640668941068b4208894108c744240800 *0000000fb742068944240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c4189 *4c24088b44240c39c172dfc7442408000000008b5424180fb75206895424108b4c2410034c2408 *8b4424088b4485048b54241489448a0cff44240874e289d683c5088b4500e97bfeffffc7450028 *1010088b06e96dfeffff8b7604e938feffffc70424485e1108e86cb0ffff000000000100000024 *0000008b1683ea080fb7420483e80b83f8260f87b3010000ff2485f06111080fb7561483fa0175 *0a83c504b8485a1008ffe083c7103b7b5c7750b804000000c1e00289f929c183c104c701cc0710 *088d42ff6689410489710866c741060100ba000000008b4495048944910c4274f5eb570fb752fe *83fa01750883c504e93a01000083c7103b7b5c7609c7436c04000000eb6fb804000000c1e00289 *f929c183c104c701cc0710088d42ff6689410489710866c741060100ba000000008b4495048944 *910c4274f589cee9db0000000fb7560483fa01751483c504c7430408121008b8cc071008e944ff *ffff897424180fb7460683c0048d3c873b7b5c761289436cc74500081210088b43f8e91fffffff *c1e00289f929c183c104894c2414c701cc0710088d42ff668941048b5424180fb7420640668941 *068b4208894108c7442408000000000fb742068944240c3944240873218b4c24088b5424188b44 *8a0c8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b5424180fb75206 *895424108b4c2410034c24088b4424088b4485048b54241489448a0cff44240874e289d683c508 *8b4500e97bfeffffc74500081210088b06e96dfeffff8b7604e938feffffc70424555e1108e88c *aeffff0000000001000000240000008b1683ea080fb7420483e80b83f8260f87fc010000ff2485 *8c6211080fb7561483fa0175148b4504894500c745041c091008b8485a1008ffe083fa02750583 *c504ebef83c7103b7b5c7767b804000000c1e00289f929c183c104c701cc0710088d42fe668941 *0489710866c741060100ba000000008b4495048944910c4274f5eb710fb752fe83fa0175128b45 *04894500c745041c091008e96501000083fa02750883c504e95801000083c7103b7b5c760cc743 *6c04000000e98a000000b804000000c1e00289f929c183c104c701cc0710088d42fe6689410489 *710866c741060100ba000000008b4495048944910c4274f589cee9f60000000fb7560483fa0175 *168b4504894500c745041c091008c7430408121008eb0f83fa02751483c504c74304e8131008b8 *cc071008e905ffffff897424180fb7460683c0048d3c873b7b5c761289436cc74500e81310088b *43f8e9e0feffffc1e00289f929c183c104894c2414c701cc0710088d42fe668941048b5424180f *b7420640668941068b4208894108c7442408000000000fb742068944240c3944240873218b4c24 *088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b *5424180fb75206895424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408 *74e289d683c5088b4500e93cfeffffc74500e81310088b06e92efeffff8b7604e9effdffffc704 *24625e1108e863acffff8d76000000000002000000240000008b1683ea080fb7420483e80b83f8 *260f8709020000ff2485286311080fb7561483fa0175148b4504894500c7450408121008b8485a *1008ffe083fa02750583c504ebef83c7143b7b5c776ab805000000c1e00289f929c183c104c701 *cc0710088d42fe6689410489710866c741060200ba000000008b4495048944910c4283fa0176f2 *eb740fb752fe83fa0175128b4504894500c7450408121008e96f01000083fa02750883c504e962 *01000083c7143b7b5c760cc7436c05000000e98d000000b805000000c1e00289f929c183c104c7 *01cc0710088d42fe6689410489710866c741060200ba000000008b4495048944910c4283fa0176 *f289cee9fd0000000fb7560483fa0175168b4504894500c7450408121008c7430408121008eb0f *83fa02751483c504c7430414161008b8cc071008e9fffeffff897424180fb7460683c0058d3c87 *3b7b5c761289436cc74500141610088b43f8e9dafeffffc1e00289f929c183c104894c2414c701 *cc0710088d42fe668941048b5424180fb7420683c002668941068b4208894108c7442408000000 *000fb742068944240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24 *088b44240c39c172dfc7442408000000008b5424180fb75206895424108b4c2410034c24088b44 *24088b4485048b54241489448a0cff442408837c24080176dd89d683c50c8b4500e92ffeffffc7 *4500141610088b06e921feffff8b7604e9e2fdffffc70424705e1108e82aaaffff89f600000000 *02000000240000008b1683ea080fb7420483e80b83f8260f8768020000ff2485c46311080fb756 *1483fa0175148b4504894500c74504e8131008b8485a1008ffe083fa0275158b45048945008b45 *08894504c745081c091008ebdf83fa03750583c504ebd583c7143b7b5c0f878a000000b8050000 *00c1e00289f929c183c104c701cc0710088d42fd6689410489710866c741060200ba000000008b *4495048944910c4283fa0176f2e9910000000fb752fe83fa0175128b4504894500c74504e81310 *08e9ad01000083fa0275188b45048945008b4508894504c745081c091008e99001000083fa0375 *0883c504e98301000083c7143b7b5c760cc7436c05000000e9ae000000b805000000c1e00289f9 *29c183c104c701cc0710088d42fd6689410489710866c741060200ba000000008b449504894491 *0c4283fa0176f289cee91e0100000fb7560483fa0175168b4504894500c74504e8131008c74304 *08121008eb3083fa02751c8b45048945008b4508894504c745081c091008c7430414161008eb0f *83fa03751483c504c743044c181008b8cc071008e9a0feffff897424180fb7460683c0058d3c87 *3b7b5c761289436cc745004c1810088b43f8e97bfeffffc1e00289f929c183c104894c2414c701 *cc0710088d42fd668941048b5424180fb7420683c002668941068b4208894108c7442408000000 *000fb742068944240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24 *088b44240c39c172dfc7442408000000008b5424180fb75206895424108b4c2410034c24088b44 *24088b4485048b54241489448a0cff442408837c24080176dd89d683c50c8b4500e9d0fdffffc7 *45004c1810088b06e9c2fdffff8b7604e983fdffffc704247e5e1108e893a7ffff8d7600000000 *0003000000240000008b1683ea080fb7420483e80b83f8260f8768020000ff2485606411080fb7 *561483fa0175148b4504894500c7450414161008b8485a1008ffe083fa0275158b45048945008b *4508894504c7450808121008ebdf83fa03750583c504ebd583c7183b7b5c0f878a000000b80600 *0000c1e00289f929c183c104c701cc0710088d42fd6689410489710866c741060300ba00000000 *8b4495048944910c4283fa0276f2e9910000000fb752fe83fa0175128b4504894500c745041416 *1008e9ad01000083fa0275188b45048945008b4508894504c7450808121008e99001000083fa03 *750883c504e98301000083c7183b7b5c760cc7436c06000000e9ae000000b806000000c1e00289 *f929c183c104c701cc0710088d42fd6689410489710866c741060300ba000000008b4495048944 *910c4283fa0276f289cee91e0100000fb7560483fa0175168b4504894500c7450414161008c743 *0408121008eb3083fa02751c8b45048945008b4508894504c7450808121008c7430414161008eb *0f83fa03751483c504c74304e41a1008b8cc071008e9a0feffff897424180fb7460683c0068d3c *873b7b5c761289436cc74500e41a10088b43f8e97bfeffffc1e00289f929c183c104894c2414c7 *01cc0710088d42fd668941048b5424180fb7420683c003668941068b4208894108c74424080000 *00000fb742068944240c3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c *24088b44240c39c172dfc7442408000000008b5424180fb75206895424108b4c2410034c24088b *4424088b4485048b54241489448a0cff442408837c24080276dd89d683c5108b4500e9d0fdffff *c74500e41a10088b06e9c2fdffff8b7604e983fdffffc704248d5e1108e8fba4ffff8d76000000 *000004000000240000008b1683ea080fb7420483e80b83f8260f87d2020000ff2485fc6411080f *b7561483fa0175148b4504894500c74504e41a1008b8485a1008ffe083fa0275158b4504894500 *8b4508894504c7450814161008ebdf83fa03751b8b45048945008b45088945048b450c894508c7 *450c08121008ebbf83fa04750583c504ebb583c71c3b7b5c0f87ad000000b807000000c1e00289 *f929c183c104c701cc0710088d42fc6689410489710866c741060400ba000000008b4495048944 *910c4283fa0376f2e9b40000000fb752fe83fa0175128b4504894500c74504e41a1008e9f70100 *0083fa0275188b45048945008b4508894504c7450814161008e9da01000083fa03751e8b450489 *45008b45088945048b450c894508c7450c08121008e9b701000083fa04750883c504e9aa010000 *83c71c3b7b5c760cc7436c07000000e9d5000000b807000000c1e00289f929c183c104c701cc07 *10088d42fc6689410489710866c741060400ba000000008b4495048944910c4283fa0376f289ce *e9450100000fb7560483fa0175168b4504894500c74504e41a1008c7430408121008eb5783fa02 *751c8b45048945008b4508894504c7450814161008c7430414161008eb3683fa0375228b450489 *45008b45088945048b450c894508c7450c08121008c74304e41a1008eb0f83fa04751483c504c7 *43047c1d1008b8cc071008e936feffff897424180fb7460683c0078d3c873b7b5c761289436cc7 *45007c1d10088b43f8e911feffffc1e00289f929c183c104894c2414c701cc0710088d42fc6689 *41048b5424180fb7420683c004668941068b4208894108c7442408000000000fb742068944240c *3944240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c172df *c7442408000000008b5424180fb75206895424108b4c2410034c24088b4424088b4485048b5424 *1489448a0cff442408837c24080376dd89d683c5148b4500e966fdffffc745007c1d10088b06e9 *58fdffff8b7604e919fdffffc704249c5e1108e8f9a1ffff900000000005000000240000008b16 *83ea080fb7420483e80b83f8260f8751030000ff2485986511080fb7561483fa0175148b450489 *4500c745047c1d1008b8485a1008ffe083fa0275158b45048945008b4508894504c74508e41a10 *08ebdf83fa03751b8b45048945008b45088945048b450c894508c7450c14161008ebbf83fa0475 *218b45048945008b45088945048b450c8945088b451089450cc7451008121008eb9983fa057505 *83c504eb8f83c7203b7b5c0f87d6000000b808000000c1e00289f929c183c104c701cc0710088d *42fb6689410489710866c741060500ba000000008b4495048944910c4283fa0476f2e9dd000000 *0fb752fe83fa0175128b4504894500c745047c1d1008e95002000083fa0275188b45048945008b *4508894504c74508e41a1008e93302000083fa03751e8b45048945008b45088945048b450c8945 *08c7450c14161008e91002000083fa0475248b45048945008b45088945048b450c8945088b4510 *89450cc7451008121008e9e701000083fa05750883c504e9da01000083c7203b7b5c760cc7436c *08000000e905010000b808000000c1e00289f929c183c104c701cc0710088d42fb668941048971 *0866c741060500ba000000008b4495048944910c4283fa0476f289cee9750100000fb7560483fa *0175198b4504894500c745047c1d1008c7430408121008e98400000083fa02751c8b4504894500 *8b4508894504c74508e41a1008c7430414161008eb6383fa0375228b45048945008b4508894504 *8b450c894508c7450c14161008c74304e41a1008eb3c83fa0475288b45048945008b4508894504 *8b450c8945088b451089450cc7451008121008c743047c1d1008eb0f83fa05751483c504c74304 *7c201008b8cc071008e9b7fdffff897424180fb7460683c0088d3c873b7b5c761289436cc74500 *7c2010088b43f8e992fdffffc1e00289f929c183c104894c2414c701cc0710088d42fb66894104 *8b5424180fb7420683c005668941068b4208894108c7442408000000000fb742068944240c3944 *240873218b4c24088b5424188b448a0c8b54241489448a0c41894c24088b44240c39c172dfc744 *2408000000008b5424180fb75206895424108b4c2410034c24088b4424088b4485048b54241489 *448a0cff442408837c24080476dd89d683c5188b4500e9e7fcffffc745007c2010088b06e9d9fc *ffff8b7604e99afcffffc70424ac5e1108e87a9effff89f60000000006000000240000008b1683 *ea080fb7420483e80b83f8260f87fc030000ff2485346611080fb74e1483f90175148b45048945 *00c745047c201008b8485a1008ffe083f90275158b45048945008b4508894504c745087c1d1008 *ebdf83f903751b8b45048945008b45088945048b450c894508c7450ce41a1008ebbf83f9047521 *8b45048945008b45088945048b450c8945088b451089450cc7451014161008eb9983f905752a8b *45048945008b45088945048b450c8945088b451089450c8b4514894510c7451408121008e96aff *ffff83f906750883c504e95dffffff83c7243b7b5c0f870d010000b809000000c1e00289fa29c2 *83c20489542428c702cc0710088d41fa6689420489720866c742060600ba000000008b4495048b *4c24288944910c4283fa0576eee9140100000fb74afe83f90175128b4504894500c745047c2010 *08e9c102000083f90275188b45048945008b4508894504c745087c1d1008e9a402000083f90375 *1e8b45048945008b45088945048b450c894508c7450ce41a1008e98102000083f90475248b4504 *8945008b45088945048b450c8945088b451089450cc7451014161008e95802000083f905752a8b *45048945008b45088945048b450c8945088b451089450c8b4514894510c7451408121008e92902 *000083f906750883c504e91c02000083c7243b7b5c760cc7436c09000000e943010000b8090000 *00c1e00289fa29c283c20489542424c702cc0710088d41fa6689420489720866c742060600ba00 *0000008b4495048b4c24248944910c4283fa0576ee89cee9af0100000fb74e0483f90175198b45 *04894500c745047c201008c7430408121008e9ba00000083f902751f8b45048945008b45088945 *04c745087c1d1008c7430414161008e99600000083f90375228b45048945008b45088945048b45 *0c894508c7450ce41a1008c74304e41a1008eb6f83f90475288b45048945008b45088945048b45 *0c8945088b451089450cc7451014161008c743047c1d1008eb4283f905752e8b45048945008b45 *088945048b450c8945088b451089450c8b4514894510c7451408121008c743047c201008eb0f83 *f906751483c504c74304fc231008b8cc071008e910fdffff897424100fb7460683c0098d3c873b *7b5c761289436cc74500fc2310088b43f8e9ebfcffffc1e00289fa29c283c20489542420c702cc *0710088d41fa668942048b4c24100fb7410683c006668942068b4108894208c744240800000000 *0fb741068944241c3944240873258b4424088b5424108b44820c8b5424088b4c24208944910c42 *895424088b44241c39c272dbc7442408000000008b5424100fb75206895424188b4c2418034c24 *088b4424088b4485048b54242089448a0cff442408837c24080576dd89d683c51c8b4500e93cfc *ffffc74500fc2310088b06e92efcffff8b7604e9effbffffc70424bd5e1108e84f9affff8d7600 *0000000007000000240000008b1683ea080fb7420483e80b83f8260f87a2040000ff2485d06611 *080fb74e1483f90175148b4504894500c74504fc231008b8485a1008ffe083f90275158b450489 *45008b4508894504c745087c201008ebdf83f903751b8b45048945008b45088945048b450c8945 *08c7450c7c1d1008ebbf83f90475218b45048945008b45088945048b450c8945088b451089450c *c74510e41a1008eb9983f905752a8b45048945008b45088945048b450c8945088b451089450c8b *4514894510c7451414161008e96affffff83f90675308b45048945008b45088945048b450c8945 *088b451089450c8b45148945108b4518894514c7451808121008e935ffffff83f907750883c504 *e928ffffff83c7283b7b5c0f8742010000b80a000000c1e00289fa29c283c20489542428c702cc *0710088d41f96689420489720866c742060700ba000000008b4495048b4c24288944910c4283fa *0676eee9490100000fb74afe83f90175128b4504894500c74504fc231008e93203000083f90275 *188b45048945008b4508894504c745087c201008e91503000083f903751e8b45048945008b4508 *8945048b450c894508c7450c7c1d1008e9f202000083f90475248b45048945008b45088945048b *450c8945088b451089450cc74510e41a1008e9c902000083f905752a8b45048945008b45088945 *048b450c8945088b451089450c8b4514894510c7451414161008e99a02000083f90675308b4504 *8945008b45088945048b450c8945088b451089450c8b45148945108b4518894514c74518081210 *08e96502000083f907750883c504e95802000083c7283b7b5c760cc7436c0a000000e97f010000 *b80a000000c1e00289fa29c283c20489542424c702cc0710088d41f96689420489720866c74206 *0700ba000000008b4495048b4c24248944910c4283fa0676ee89cee9eb0100000fb74e0483f901 *75198b4504894500c74504fc231008c7430408121008e9f600000083f902751f8b45048945008b *4508894504c745087c201008c7430414161008e9d200000083f90375258b45048945008b450889 *45048b450c894508c7450c7c1d1008c74304e41a1008e9a800000083f90475288b45048945008b *45088945048b450c8945088b451089450cc74510e41a1008c743047c1d1008eb7b83f905752e8b *45048945008b45088945048b450c8945088b451089450c8b4514894510c7451414161008c74304 *7c201008eb4883f90675348b45048945008b45088945048b450c8945088b451089450c8b451489 *45108b4518894514c7451808121008c74304fc231008eb0f83f907751483c504c7430428281008 *b8cc071008e96afcffff897424100fb7460683c00a8d3c873b7b5c761289436cc7450028281008 *8b43f8e945fcffffc1e00289fa29c283c20489542420c702cc0710088d41f9668942048b4c2410 *0fb7410683c007668942068b4108894208c7442408000000000fb741068944241c394424087325 *8b4424088b5424108b44820c8b5424088b4c24208944910c42895424088b44241c39c272dbc744 *2408000000008b5424100fb75206895424188b4c2418034c24088b4424088b4485048b54242089 *448a0cff442408837c24080676dd89d683c5208b4500e996fbffffc74500282810088b06e988fb *ffff8b7604e949fbffffc70424cf5e1108e87d95ffff90ff2689f683ed0c897508c74504000000 *00c74500bc3b1008e98b0900008d7600ff2689f683ed0c897508c7450400000000c74500bc3b10 *08e96b0900008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e94b0900008d *7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e92b0900008d7600ff2689f683 *ed0c897508c7450400000000c74500bc3b1008e90b0900008d7600ff2689f683ed0c897508c745 *0400000000c74500bc3b1008e9eb0800008d7600ff2689f683ed0c897508c7450400000000c745 *00bc3b1008e9cb0800008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e9ab *0800008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e98b0800008d7600ff *2689f683ed0c897508c7450400000000c74500bc3b1008e96b0800008d7600ff2689f683ed0c89 *7508c7450400000000c74500bc3b1008e94b0800008d7600ff2689f683ed0c897508c745040000 *0000c74500bc3b1008e92b0800008d7600ff2689f683ed0c897508c7450400000000c74500bc3b *1008e90b0800008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e9eb070000 *8d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e9cb0700008d7600ff2689f6 *83ed0c897508c7450400000000c74500bc3b1008e9ab0700008d7600ff2689f683ed0c897508c7 *450400000000c74500bc3b1008e98b0700008d7600ff2689f683ed0c897508c7450400000000c7 *4500bc3b1008e96b0700008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e9 *4b0700008d7600ff2689f683ed0c897508c7450400000000c74500bc3b1008e92b0700008d7600 *ff2689f683ed0c897508c7450400000000c74500bc3b1008e90b0700008d7600ff2689f683ed0c *897508c7450400000000c74500bc3b1008e9eb0600008d7600000000000000000000000000ec2c *10080c2d10082c2d10084c2d10086c2d10088c2d1008ac2d1008cc2d1008ec2d10080000000000 *000000000000000c2e10082c2e10084c2e10086c2e10088c2e1008ac2e1008cc2e1008ec2e1008 *0c2f10082c2f10084c2f10086c2f10088c2f1008000000000000000000000000f02c1008102d10 *08302d1008502d1008702d1008902d1008b02d1008d02d1008f02d100800000000000000000000 *0000102e1008302e1008502e1008702e1008902e1008b02e1008d02e1008f02e1008102f100830 *2f1008502f1008702f1008902f1008000000000000000000000000210000000100000021000000 *620000006200000062000000220000004200000002000000000000000000000000000000e30000 *0063000000a300000023000000c300000043000000830000000300000004000000050000000600 *000007000000080000008d45f83b43547315c74320fe000000c74324fc301008b8843c1008ffe0 *8b436083781800751fc7401848091208817d00e4311008750583c504eb0a83ed04c74500583110 *0883ed04b81c091008ebcc900000000000000000240000008b43608b4018890424e82aa3ffff8b *4360c740180000000083c504ff650089f68d45f83b43547315c74320fe000000c7432478311008 *b8843c1008ffe08b436083781800742d8b4018890424e8e7a2ffff8b4360c7401800000000817d *0058311008750583c504eb0a83ed04c74500e431100883ed04b81c091008ebbe8d760000000000 *00000000240000008b4360c740184809120883c504ff650066837e1003750a8b760466837e1003 *74f6837e180074590fb7461283f801740d83f801720f83e80383f8037707b801000000eb05b800 *00000085c075338b53608b46188942048b43608946188b436066c7401203008b4360897014c743 *20fc000000c74324f4311008b8c4401008ffe03b7360755d8b43608968308b53688d4704894204 *8b430489442404893424e879a4ffff8b43606683781002750cbe04000000b829f60f08ebc58b43 *608b683005880000008943548b43688b780483ef0489c28b4018c1e00c030283e80489435ceb0f *8b430489442404893424e82ba4ffff8b4500eb8889f64d331008443310083b3310083233100829 *33100820331008173310080e33100800000000220000002b00000083c50cff650083c50c8b4500 *ff60f083c50c8b4500ff60ec83c50c8b4500ff60e883c50c8b4500ff60e483c50c8b4500ff60e0 *83c50c8b4500ff60dc83c50c8b4500ff60d883c50c8b4500ff60d489f6020000000b0000008b46 *088943048b7604e90200000089f68d45f03b43547315c74320fc000000c7432470331008b8843c *1008ffe083ed0cc74500083310088b43048945088b4360837818000f95c00fb6c089450483ed04 *b81c091008ebd49001000000120000008b7604e900000000c7042403000000e81cccffff894424 *14c700c03310088b442414897004896c24188b5424188b0a83e90c894c240c0fb7410883e82383 *f806773bff24856c6711088b420489c2c1ea18c1e81025ff0000008d441015eb298b420483c003 *eb218b54240c8b42048b00eb158b42048b401883c002eb0b8b54240c8b420483e01f408b542418 *8d0482894424100fb7410883f82b0f841901000083f82b7f0a83f82a7413e9fd00000083f82c0f *84c3000000e9ef0000008b5424188b42048138dc5b1008750b8b4004890424e8f99fffff8b4424 *188b480489c82500f00f00c1e80789ca81e20000f0ff09d0894424088378100075168b54241489 *51048b5424188b4204c700645a1008eb5c8b5424188b42048b5424148950048b4424188b480481 *39dc5b100874328b5424088b42108d04c08b15acba12088b4482148941088b5424088b42108d04 *c08b5424188b4a048b15acba1208894c82148b5424188b4204c700445b10088b44241089442418 *e9aefeffff8b43608b50288d6c90308975008b436066c7401002008b43608968308b53688d4704 *894204be04000000b829f60f08ffe08b54241089542418e970feffff8b4424188b500889c583c5 *0c83780400750a83ed04c74500583110088b4360837818007507c740184809120883ed08c74504 *1c09100889750089d683ed04b808121008ebac89f6e903feffff90909000000000010000002400 *00008b750483c5088b060fb740fc83e80b83f8177711ff2485886711088b7604ebe68b4500ffe0 *8b06ebfa8d760083ed08897504c74500d43510083b7b5c765b8b436cc1e00229c7817b6c000400 *0077438b43688d57048950048b43688378080074318b40088943688b780483ef0489c28b4018c1 *e00c030283e80489435c833dd8b81208007407be02000000eb118b4500ffe0be00000000eb05be *010000008b43608968308b53688d47048942048b436066c740100000b829f60f08ebd38d76003b *7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b4368837808007431 *8b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8b81208007407be02 *000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b43 *6066c740100000b829f60f08ebd300000000000000002400000083c504ff650089f60000000001 *000000240000008b750483c508ff65008d760083ed08897504c74500383710083b7b5c765b8b43 *6cc1e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b4008894368 *8b780483ef0489c28b4018c1e00c030283e80489435c833dd8b81208007407be02000000eb118b *4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066c7401000 *00b829f60f08ebd38d76000000000021000000240000008b750483c508ff65008d760083ed0889 *7504c74500e43710083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950 *048b43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c83 *3dd8b81208007407be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b *53688d47048942048b436066c740100000b829f60f08ebd38d7600000000002100000024000000 *8b4504894424088b44240889432883c508ff650083ed088b4328894424088b442408894504c745 *00903810083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b4368 *8378080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8b812 *08007407be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47 *048942048b436066c740100000b829f60f08ebd3000000006200000024000000dd4504dd1c24dd *0424dd5b3883c50cff650089f683ed0cdd4338dd1c24dd0424dd5d04c745004c3910083b7b5c76 *5b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b4008 *8943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8b81208007407be02000000 *eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066c7 *40100000b829f60f08ebd389f6000000006200000024000000c744240400000000c70424000000 *008d45048b108914248b4004894424048b04248b54240489434889534c83c50cff65008d760083 *ed0c8d4d048b43488b534c8901895104c74500083a10083b7b5c765b8b436cc1e00229c7817b6c *0004000077438b43688d57048950048b43688378080074318b40088943688b780483ef0489c28b *4018c1e00c030283e80489435c833dd8b81208007407be02000000eb118b4500ffe0be00000000 *eb05be010000008b43608968308b53688d47048942048b436066c740100000b829f60f08ebd300 *000000010000002400000083c504ff650489f68b0683e8186683780c0075058b4004eb19668378 *0c0175078b40048b00eb0e0fb7400c8b04858c30100883e01f83ed0c897508894504c74500bc3b *10083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b4368837808 *0074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8b812080074 *07be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942 *048b436066c740100000b829f60f08ebd38d76000000000000000000290000008b750883c50cff *26000000000000000028000000c744240400000000c70424000000008d454c8b108914248b4004 *894424048b04248b54240489434889534cdd4544dd5c2410dd442410dd5b40dd453cdd5c2410dd *442410dd5b388b45388944240c8b44240c8943348b45348944240c8b44240c8943308b45308944 *240c8b44240c89432c8b452c8944240c8b44240c8943288b452889431c8b45248943188b452089 *43148b451c8943108b451889430c8b45148943088b45108943048b750c83c554ff65b489f683ed *548d4d4c8b43488b534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c2410dd4424 *10dd5d3c8b43348944240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c *8b44240c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b4314894520 *8b431089451c8b430c8945188b43088945148b430489451089750c8b43248945088b4320894504 *c74500d03b10083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b *43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833dd8 *b81208007407be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b5368 *8d47048942048b436066c740100000b829f60f08ebd38d76000fb643220fb6532301d08b448500 *89432483ed548d4d4c8b43488b534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c *2410dd442410dd5d3c8b43348944240c8b44240c8945388b43308944240c8b44240c8945348b43 *2c8944240c8b44240c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b *43148945208b431089451c8b430c8945188b43088945148b430489451089750c8b43248945088b *4320894504c74500d03b10083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57 *048950048b43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489 *435c833dd8b81208007407be02000000eb118b4500ffe0be00000000eb05be010000008b436089 *68308b53688d47048942048b436066c740100000b829f60f08ebd389f683ed548d4d4c8b43488b *534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c2410dd442410dd5d3c8b433489 *44240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c8945308b *43288944240c8b44240c89452c8b431c8945288b43188945248b43148945208b431089451c8b43 *0c8945188b43088945148b430489451089750c8b43248945088b4320894504c74500d03b10088b *43608968308b53688d47048942048b436066c740100000be00000000e976b6ffff9083ed548d4d *4c8b43488b534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c2410dd442410dd5d *3c8b43348944240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b4424 *0c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b43148945208b4310 *89451c8b430c8945188b43088945148b430489451089750c8b43248945088b4320894504c74500 *d03b10088b43608968308b53688d47048942048b436066c740100000be02000000e9aeb5ffff90 *8b43608968308b53688d47048942048b436066c740100000be02000000e98bb5ffff89f68b4360 *8968308b53688d47048942048b436066c740100100be02000000e967b5ffff89f683ed548d4d4c *8b43488b534c8901895104dd4340dd5c2410dd442410dd5d44dd4338dd5c2410dd442410dd5d3c *8b43348944240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c *8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b43148945208b431089 *451c8b430c8945188b43088945148b430489451089750c8b43248945088b4320894504c74500d0 *3b10088b43608968308b53688d47048942048b436066c740100000be03000000e99eb4ffff908b *43608968308b53688d47048942048b436066c740100000be03000000e97bb4ffff89f683ed0889 *7504c74500d43510088b43608968308b53688d47048942048b436066c740100000be03000000e9 *4ab4ffff900000000001000000240000008b750483c508e9351100009083ed08897504c74500ec *4110088b43608968308b53688d47048942048b436066c740100000be03000000e902b4ffff9000 *00000002000000240000008b45088943048b750483c50ce9371200008d760083ed0c8b43048945 *08897504c74500344210088b43608968308b53688d47048942048b436066c740100000be030000 *00e9acb3ffff909090a120bc12083b0528bc12087215c74320ff000000c7432480421008b8ec3e *1008ffe08d4603c1e8028944240883c002890424e839bdffffc700985d10088b54240889500489 *c68b4500ebd590a120bc12083b0528bc12087215c74320ff000000c74324cc421008b8ec3e1008 *ffe08d4603c1e8028944240883c002890424e85dbeffffc700985d10088b54240889500489c68b *4500ebd59089742414a120bc12083b0528bc12087215c74320fd000000c7432418431008b8ec3e *1008ffe08b44241483c00389442418890424e89fbcffff89c1c700ac5d10088b5424148950048b *4304894424108d410c8b542418c1e2028954240c8d140a39d073198b54240c01ca895424088b54 *2410891083c0043b44240872f189ce8b4500eba083c70c3b7b5c761cc7436c03000000c74320fe *000000c743249c431008b8843c1008ffe08d47f8c700d45d100889700489c68b4500ebeb9083c7 *243b7b5c761cc7436c09000000c74320fc000000c74324d4431008b8843c1008ffe08b4e048d47 *f8c7008c6b10088b53048950048948088d50f4c740f40c5f10088942048956048d50e8c740e898 *5f100889420489d68b4500ebc58d760083c7083b7b5c761cc7436c02000000c74320ff000000c7 *432434441008b8843c1008ffe08d47fcc700e45c100889700489c68b4500ebeb90c706ac5d1008 *837e080075458974240889f181e100f00f00c1e90789f0250000f0ff09c18379100074278b4110 *8d04c08b15acba12088b4482108946088b41108d04c08b15acba12088b4c2408894c8210ff6500 *837b08007507c743084409120883c7143b7b5c761cc7436c05000000c74320f8000000c74324c0 *441008b8843c1008ffe08d47f0c700a85c10088970048b53048950088b530889500c8b1530bc12 *08895010a330bc120889c68b4500ebd189f6813ebc5c10087514be00000000c745fc4409120883 *ed048b4504ffe0c706bc5c10088b4e0c8b461089460481f94409120874d5be01000000894dfceb *d78d760089f0813ea85c1008750aba010000008b4608eb05ba0000000089d68945fc83ed04ff65 *0489f083c70c3b7b5c761cc7436c03000000c74320ff000000c7432484451008b8843c1008ffe0 *8d57f8c702985d1008c742040100000085f67909b9fffffffff7d8eb0eb90000000085f67e07b9 *01000000890789ce8955fc83ed048b4504ebc483c70c3b7b5c761cc7436c03000000c74320ff00 *0000c74324e4451008b8843c1008ffe08d47f8c700985d1008c7400401000000b90000000085f6 *7407b901000000893789ce8945fc83ed048b4504ebd18d76008b43488b534c8944243089542434 *c744242c0000000083e80183daff83fa017211770583f8fe760ac744242802000000eb08c74424 *28010000008b5424288d7c97083b7b5c761d89d083c00289436cc74320ff000000c74324384610 *08b8843c1008ffe08b442428c1e00289fa29c283ea0489542424c702985d10088b442428894204 *837c2434007915c744242c01000000f75c24308354243400f75c2434c744240800000000c74424 *0c010000008b4424308b54243489042489542404e895a10000894424188954241c837c24280275 *12b9020000008b5424308957fc8b442418eb18b9000000008b5424340b542430740bb901000000 *8b4424308907837c242c007402f7d989ce8b5424248955fc83ed048b4504e947ffffff908b4348 *8b534c894424208954242483fa0119d283c2028d7c97083b7b5c761b8d420289436cc74320ff00 *0000c7432454471008b8843c1008ffe08d04950000000089f929c183e904894c241cc701985d10 *08895104c744240800000000c744240c010000008b4424208b54242489042489542404e8c3a000 *00837c2424007610ba020000008b4c2420894ffc8907eb1aba000000008b4424240b442420740b *ba010000008b4c2420890f89d68b44241c8945fc83ed048b4504e97affffff89f6a120bc12083b *0528bc12087215c74320f5000000c7432414481008b8ec3e1008ffe08b53048b4b0c8b43088944 *241c8b4204894424408974244483c208895424488b4104894424308b44241c8944243483c10889 *4c24388d442420890424e8b54df4ff8d442430894424088d442440894424048d442420890424e8 *594ef4ff8b7424248b44242883e8088945fc83ed048b4504eb8b8d7600a120bc12083b0528bc12 *087215c74320f5000000c74324ac481008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b42 *04894424408974244483c208895424488b4104894424308b44241c8944243483c108894c24388d *442420890424e81d4df4ff8d442430894424088d442440894424048d442420890424e86150f4ff *8b7424248b44242883e8088945fc83ed048b4504eb8b8d7600a120bc12083b0528bc12087215c7 *4320f5000000c7432444491008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b4204894424 *408974244483c208895424488b4104894424308b44241c8944243483c108894c24388d44242089 *0424e8854cf4ff8d442430894424088d442440894424048d442420890424e8e94bf4ff8b742424 *8b44242883e8088945fc83ed048b4504eb8b8d7600a120bc12083b0528bc12087215c74320f500 *0000c74324dc491008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b420489442440897424 *4483c208895424488b4104894424308b44241c8944243483c108894c24388d442420890424e8ed *4bf4ff8d442430894424088d442440894424048d442420890424e8414bf4ff8b7424248b442428 *83e8088945fc83ed048b4504eb8b8d7600a120bc12083b0528bc12087215c74320f5000000c743 *24744a1008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b4204894424408974244483c208 *895424488b4104894424308b44241c8944243483c108894c24388d442420890424e8554bf4ff8d *442430894424088d442440894424048d442420890424e8f94df4ff8b7424248b44242883e80889 *45fc83ed048b4504eb8b8d7600a120bc12083b0528bc12087215c74320f5000000c743240c4b10 *08b8ec3e1008ffe08b53048b4b0c8b43088944241c8b4204894424408974244483c20889542448 *8b4104894424308b44241c8944243483c108894c24388d442420890424e8bd4af4ff8d44243089 *4424088d442440894424048d442420890424e8e14bf4ff8b7424248b44242883e8088945fc83ed *048b4504eb8b8d7600a120bc12083b0528bc12087215c74320f5000000c74324a44b1008b8ec3e *1008ffe08b53048b4b0c8b43088944241c8b4204894424408974244483c208895424488b410489 *4424308b44241c8944243483c108894c24388d442420890424e8254af4ff8d442430894424088d *442440894424048d442420890424e82948f4ff8b7424248b44242883e8088945fc83ed048b4504 *eb8b8d7600a120bc12083b0528bc12087215c74320f5000000c743243c4c1008b8ec3e1008ffe0 *8b53048b4b0c8b43088944241c8b4204894424408974244483c208895424488b4104894424308b *44241c8944243483c108894c24388d442420890424e88d49f4ff8d442430894424088d44244089 *4424048d442420890424e8b149f4ff8b7424248b44242883e8088945fc83ed048b4504eb8b8d76 *00a120bc12083b0528bc12087215c74320f5000000c74324d44c1008b8ec3e1008ffe08b53048b *4b0c8b43088944241c8b4204894424408974244483c208895424488b4104894424308b44241c89 *44243483c108894c24388d442420890424e8f548f4ff8d442430894424088d442440894424048d *442420890424e85949f4ff8b7424248b44242883e8088945fc83ed048b4504eb8b8d7600a120bc *12083b0528bc12087215c74320f5000000c743246c4d1008b8ec3e1008ffe08b53048b4b0c8b43 *088944241c8b4204894424408974244483c208895424488b4104894424308b44241c8944243483 *c108894c24388d442420890424e85d48f4ff8d442430894424088d442440894424048d44242089 *0424e85148f4ff8b7424248b44242883e8088945fc83ed048b4504eb8b8d7600a120bc12083b05 *28bc12087215c74320fd000000c74324044e1008b8ec3e1008ffe08b43048b5004895424208974 *242483c008894424288d442410890424e8e547f4ff8d442420894424048d442410890424e8a147 *f4ff8b7424148b44241883e8088945fc83ed048b4504ebb38d7600a120bc12083b0528bc120872 *15c74320f5000000c74324744e1008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b420489 *4424508974245483c208895424588b4104894424408b44241c8944244483c108894c24488d4424 *30890424e85547f4ff8d442420890424e84947f4ff8d4424408944240c8d442450894424088d44 *2420894424048d442430890424e82548f4ff8b7424348b4424248945f48b44243883e8088945f8 *8b44242883e8088945fc83ed0c8b450ce963ffffff8d7600a120bc12083b0528bc12087215c743 *20f5000000c74324344f1008b8ec3e1008ffe08b53048b4b0c8b43088944241c8b420489442450 *8974245483c208895424588b4104894424408b44241c8944244483c108894c24488d4424308904 *24e89546f4ff8d442420890424e88946f4ff8d4424408944240c8d442450894424088d44242089 *4424048d442430890424e83547f4ff8b7424348b4424248945f48b44243883e8088945f88b4424 *2883e8088945fc83ed0c8b450ce963ffffff8d7600897424188b430489442408c7442404010000 *008d442418890424e8d947f4ff89c6ff65008b430889442408897424048b430483c008890424e8 *bb47f4ff89c6ff650089f689f1b8000000008b530885d27e07b801000000eb0b85d27907b8ffff *fffff7da39c1740989ce29c68b4500ffe085c9740a8b43048b400839d07507be00000000ebe689 *ce39d077e089cef7deebda89f6897424188b430839c6740729c68b4500ffe0837c241800742c8b *442418890424e86f48f4ff8b4b0483c1088b530c83c2088944240889542404890c24e80343f4ff *85c07507be00000000ebc1334424180f99c00fb6c08d7400ffebb1b80000000085f6740c8b4304 *8b400885f67902f7d889c6ff650089f6b80000000085f6740c8b43048b400885f67902f7d889c6 *ff650089f68b43288944241c83c70c3b7b5c761cc7436c03000000c74320ff000000c743241c51 *1008b8843c1008ffe08d47f889442414c700985d1008c74004010000008b44241483c008894424 *288b44241c894424088d442418894424048d442420890424e83ba7ffff8b7424188b4424248945 *f88b4424148945fc83ed088b4508eba9dd4338dd5c241883c7103b7b5c761cc7436c04000000c7 *4320ff000000c743249c511008b8843c1008ffe08d47f489442410c700985d1008c74004020000 *008b44241083c00889442428dd442418dd5c24088d442414894424048d442420890424e819a6ff *ff8b7424148b4424248945f88b4424108945fc83ed088b4508eba9a120bc12083b0528bc120872 *15c74320fe000000c743241c521008b8ec3e1008ffe089742408a14cbb1208890424e8167dffff *89c28b48308d41fc894230c741fcb45e10088b4a308d41fc894230c741fc1c0910088b4a308d41 *fc8942308b4424088941fc8b4a308d41fc894230c741fcd435100889d6891424e8d07dffffc705 *d8b81208010000008b4500eb9289f6e9cbedffff8d76008b7360ff650089f6ff6500908b436089 *0424e8567affff89c6ff6500813e205d10080f94c00fb6f0ff65009083c7143b7b5c761cc7436c *05000000c74320ff000000c74324e0521008b8843c1008ffe08d47f0c700205d1008c7400c4809 *1208c7400448091208c740104809120889c68b4500ebd98d760089742408813e205d1008754881 *7e044809120875088b4360894604eb0d8b4424088b500c8b43608942048b4360c7400448091208 *8b436066c7401201008b43608b5424088950148b436089420cb8f8411008ffe08b4424088b4010 *894424048b542408817a044809120874388b52048b42308b480883c00c8942308b542408894a10 *8b4204890424e84489ffff8b5424088942043d48091208751ac7420c48091208eb118b442408c7 *00205d1008c74010480912088b7424048b4500eb9489f689742408813e205d10087514be000000 *00c745fc4409120883ed048b4504ffe08b4424088b4010894424048b542408817a044809120874 *388b52048b42308b480883c00c8942308b542408894a108b4204890424e8b888ffff8b54240889 *42043d48091208751ac7420c48091208eb118b442408c7401048091208c700205d1008be010000 *008b5424048955fceb899089742408813e0c5d10087548817e044809120875088b4360894604eb *0d8b4424088b500c8b43608942048b4360c74004480912088b436066c7401201008b43608b5424 *088950148b436089420cb848421008ffe08b44240881780448091208743e8b40048b50308b4304 *8942048b5424088b42048b4030c700383710088b4204890424e8f987ffff8b5424088942043d48 *0912087519c7420c48091208eb108b43048b542408894210c7020c5d10088b4500eb9e89742408 *813e0c5d1008750abe000000008b4500ffe08b44240881780448091208743e8b40048b50308b43 *048942048b5424088b42048b4030c700383710088b4204890424e88387ffff8b5424088942043d *4809120875b9c7420c48091208ebb08b43048b542408894210c7020c5d1008eb9e9083c7083b7b *5c761cc7436c02000000c74320fe000000c74324a4551008b8843c1008ffe0893424e85491ffff *89c1c1e00489442408a120ba12088b542408837c100c00751b8d57fcc702f85c1008894a04a120 *ba12088b4c24088954080ceb0e89cac1e204a120ba12088b54100c89d68b4500ebad8d7600a120 *bc12083b0528bc12087215c74320fe000000c743241c561008b8ec3e1008ffe0893424e87891ff *ff89c68b4500ebef8d760089f2c1e204a120ba12088b3410ff65008b4314894424088b500483c2 *068d3c973b7b5c761889536cc74320d0000000c7432460561008b8843c1008ffe08d0495000000 *0089f929c183c104c701485a10088971048b43048941088b430889410c8b430c8941100fb74310 *6689411466895116ba000000008b4424083b500473168b4424088b44900889449118428b442408 *3b500472ea89ce8b4500eb9e8d760083c70c3b7b5c761cc7436c03000000c74320fe000000c743 *24f0561008b8843c1008ffe08d47f8c7002808100866c74006000089700889c68b4500ebe58d76 *008b436066c7401204008b4360897014813dc8b8120848091208750a8b4360a3c8b81208eb0b8b *5360a1ccb812088950048b4360a3ccb81208e91feaffff8d76008b436066c7401205008b436089 *7014813dc8b8120848091208750a8b4360a3c8b81208eb0b8b5360a1ccb812088950048b4360a3 *ccb81208e9dfe9ffff8d76008b436066c7401206008d8e1f4e0000b8ad8bdb68f7e9c1fa0d89c8 *c1f81f29c289542404e85e8000008b4c240401c18b4360894814c7442408000000008b15d0b812 *0881fa480912087419394a147314895424088b520481fa480912087405394a1472ec8b43608950 *04837c240800750a8b4360a3d0b81208eb0a8b43608b542408894204e952e9ffff9090ff65008b *4500ff60f08b4500ff60ec8b4500ff60e88b4500ff60e48b4500ff60e08b4500ff60dc8b4500ff *60d88b4500ff60d4902c5910081a59100808591008f6581008e4581008d2581008c0581008ae58 *100800000000000000002300000083ed08897504c74500d4351008e9f2e7ffff83ed08897504c7 *4500d4351008e9e0e7ffff83ed08897504c74500d4351008e9cee7ffff83ed08897504c74500d4 *351008e9bce7ffff83ed08897504c74500d4351008e9aae7ffff83ed08897504c74500d4351008 *e998e7ffff83ed08897504c74500d4351008e986e7ffff83ed08897504c74500d4351008e974e7 *ffff83ed08897504c74500d4351008e962e7ffff89f600000000000000002300000083ed088975 *04c7450038371008e942e7ffff89f600000000000000002300000083ed08897504c74500e43710 *08e922e7ffff89f600000000000000002300000083ed088b4328894424088b442408894504c745 *0090381008e9f7e6ffff8d760000000000000000002300000083ed0cdd4338dd1c24dd0424dd5d *04c745004c391008e9cde6ffff9000000000000000002300000083ed0c8d45048b53488b4b4c89 *10894804c74500083a1008e9a3e6ffff8d760000000000000000002300000083ed04c745002437 *1008e985e6ffff90000000000000000023000000e973e6ffff8d76000000000000000000000000 *0002000000040000001a00000083ed08897504c74500285a1008e946e6ffff89f6010000001e00 *00008b7604ff268d7600010000001e0000008b7604ff650089f6010000001e0000008b76048b45 *00ff60f08d7600010000001e0000008b76048b4500ff60ec8d7600010000001e0000008b76048b *4500ff60e88d7600010000001e0000008b76048b4500ff60e48d7600010000001e0000008b7604 *8b4500ff60e08d7600010000001e0000008b76048b4500ff60dc8d7600010000001e0000008b76 *048b4500ff60d88d7600010000001e0000008b76048b4500ff60d48d760001000000220000008b *7604ff268d760001000100200000008b7604ff268d7600010001001f0000008b7604ff268d7600 *01000100210000008b7604ff268d7600000002002e0000008b4360c74004480912088b43608946 *048b436066c7401202008b4360897014c706dc5b10088974240889f181e100f00f00c1e90789f0 *250000f0ff09c18379100074278b41108d04c08b15acba12088b4482108946088b41108d04c08b *15acba12088b4c2408894c8210e9dde5ffff90010001002f0000008b53608b46048942048b4360 *8946048b436066c7401202008b4360897014e9b1e5ffff90000002002d0000008b4360c7400448 *0912088b43608946048b436066c7401202008b4360897014c706dc5b10088974240889f181e100 *f00f00c1e90789f0250000f0ff09c18379100074278b41108d04c08b15acba12088b4482108946 *088b41108d04c08b15acba12088b4c2408894c8210e939e5ffff90000000003b000000c70424e8 *671108e8dc65ffff0100000040000000c70424fc671108e8c865ffff0000040038000000c70424 *16681108e8b465ffff0000040001000000c704242b681108e8a065ffff000000000a000000c704 *2445681108e88c65ffff0000010039000000c7042462681108e87865ffff000001003a000000c7 *04247a681108e86465ffff0400000032000000c7042496681108e85065ffff0400000032000000 *c70424b0681108e83c65ffff000000000a000000c70424cb681108e82865ffff000000000a0000 *00c70424e9681108e81465ffff0100010037000000c7042406691108e80065ffff000000000a00 *0000c704241f691108e8ec64ffff0100010001000000c7042442691108e8d864ffff0000000033 *000000c7042461691108e8c464ffff0000000034000000c704247b691108e8b064ffff00000000 *35000000c7042498691108e89c64ffff0100010036000000c70424bc691108e88864ffff000000 *000a000000ff650090185e1008185e1008185e1008185e1008185e1008185e1008185e1008185e *100800000000000000002c00000083ed04897504c74500d43510088b436066c7401004008b4360 *8968308b53688d4704894204be04000000e9e297ffff908b43608b683005880000008943548b43 *688b780483ef0489c28b4018c1e00c030283e80489435cff650089f60000000000000000240000 *0083c5048b060fb740fc83e80b83f8177711ff2485d46911088b7604ebe68b4500ffe08b06ebfa *89f600000000000000002400000083c504ff6500e96a97ffff908b6b5083ed04ff650090909000 *00000000000000240000008b760483c5048b060fb740fc83e80b83f8177711ff2485346a11088b *7604ebe68b4500ffe08b06ebfa8d760000000000190000008d45f43b435473058b43f8ffe08d45 *f8c700d46d1008897004c745f4d85e10088b760483ed0c8b060fb740fc83e80b83f8177711ff24 *85946a11088b7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b760883c5 *048b060fb740fc83e80b83f8177711ff2485f46a11088b7604ebe68b4500ffe08b06ebfa8d7600 *01000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4645f10 *088b760483ed0c8b060fb740fc83e80b83f8177711ff2485546b11088b7604ebe68b4500ebc68b *06ebc28d76000000000000000000240000008b760c83c5048b060fb740fc83e80b83f8177711ff *2485b46b11088b7604ebe68b4500ffe08b06ebfa8d760002000000190000008d45f43b43547305 *8b43f8ffe08d45f8c700d46d1008897004c745f4f05f10088b760483ed0c8b060fb740fc83e80b *83f8177711ff2485146c11088b7604ebe68b4500ebc68b06ebc28d760000000000000000002400 *00008b761083c5048b060fb740fc83e80b83f8177711ff2485746c11088b7604ebe68b4500ffe0 *8b06ebfa8d760003000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970 *04c745f47c6010088b760483ed0c8b060fb740fc83e80b83f8177711ff2485d46c11088b7604eb *e68b4500ebc68b06ebc28d76000000000000000000240000008b761483c5048b060fb740fc83e8 *0b83f8177711ff2485346d11088b7604ebe68b4500ffe08b06ebfa8d760004000000190000008d *45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4086110088b760483ed0c8b06 *0fb740fc83e80b83f8177711ff2485946d11088b7604ebe68b4500ebc68b06ebc28d7600000000 *0000000000240000008b761883c5048b060fb740fc83e80b83f8177711ff2485f46d11088b7604 *ebe68b4500ffe08b06ebfa8d760005000000190000008d45f43b435473058b43f8ffe08d45f8c7 *00d46d1008897004c745f4946110088b760483ed0c8b060fb740fc83e80b83f8177711ff248554 *6e11088b7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b761c83c5048b *060fb740fc83e80b83f8177711ff2485b46e11088b7604ebe68b4500ffe08b06ebfa8d76000600 *0000190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4206210088b *760483ed0c8b060fb740fc83e80b83f8177711ff2485146f11088b7604ebe68b4500ebc68b06eb *c28d76000000000000000000240000008b762083c5048b060fb740fc83e80b83f8177711ff2485 *746f11088b7604ebe68b4500ffe08b06ebfa8d760007000000190000008d45f43b435473058b43 *f8ffe08d45f8c700d46d1008897004c745f4ac6210088b760483ed0c8b060fb740fc83e80b83f8 *177711ff2485d46f11088b7604ebe68b4500ebc68b06ebc28d7600000000000000000024000000 *8b762483c5048b060fb740fc83e80b83f8177711ff2485347011088b7604ebe68b4500ffe08b06 *ebfa8d760008000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c7 *45f4386310088b760483ed0c8b060fb740fc83e80b83f8177711ff2485947011088b7604ebe68b *4500ebc68b06ebc28d76000000000000000000240000008b762883c5048b060fb740fc83e80b83 *f8177711ff2485f47011088b7604ebe68b4500ffe08b06ebfa8d760009000000190000008d45f4 *3b435473058b43f8ffe08d45f8c700d46d1008897004c745f4c46310088b760483ed0c8b060fb7 *40fc83e80b83f8177711ff2485547111088b7604ebe68b4500ebc68b06ebc28d76000000000000 *000000240000008b762c83c5048b060fb740fc83e80b83f8177711ff2485b47111088b7604ebe6 *8b4500ffe08b06ebfa8d76000a000000190000008d45f43b435473058b43f8ffe08d45f8c700d4 *6d1008897004c745f4506410088b760483ed0c8b060fb740fc83e80b83f8177711ff2485147211 *088b7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b763083c5048b060f *b740fc83e80b83f8177711ff2485747211088b7604ebe68b4500ffe08b06ebfa8d76000b000000 *190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4dc6410088b7604 *83ed0c8b060fb740fc83e80b83f8177711ff2485d47211088b7604ebe68b4500ebc68b06ebc28d *76000000000000000000240000008b763483c5048b060fb740fc83e80b83f8177711ff24853473 *11088b7604ebe68b4500ffe08b06ebfa8d76000c000000190000008d45f43b435473058b43f8ff *e08d45f8c700d46d1008897004c745f4686510088b760483ed0c8b060fb740fc83e80b83f81777 *11ff2485947311088b7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b76 *3883c5048b060fb740fc83e80b83f8177711ff2485f47311088b7604ebe68b4500ffe08b06ebfa *8d76000d000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d1008897004c745f4 *f46510088b760483ed0c8b060fb740fc83e80b83f8177711ff2485547411088b7604ebe68b4500 *ebc68b06ebc28d76000000000000000000240000008b763c83c5048b060fb740fc83e80b83f817 *7711ff2485b47411088b7604ebe68b4500ffe08b06ebfa8d76000e000000190000008d45f43b43 *5473058b43f8ffe08d45f8c700d46d1008897004c745f4806610088b760483ed0c8b060fb740fc *83e80b83f8177711ff2485147511088b7604ebe68b4500ebc68b06ebc28d760000000000000000 *00240000008b764083c5048b060fb740fc83e80b83f8177711ff2485747511088b7604ebe68b45 *00ffe08b06ebfa8d76000f000000190000008d45f43b435473058b43f8ffe08d45f8c700d46d10 *08897004c745f40c6710088b760483ed0c8b060fb740fc83e80b83f8177711ff2485d47511088b *7604ebe68b4500ebc68b06ebc28d76000000000000000000240000008b760483c504ff26000000 *00190000008d45fc3b435473058b43f8ffe0c745fc986710088b760483ed048b06ebed89f60000 *000000000000240000008b760883c504ff2601000000190000008d45fc3b435473058b43f8ffe0 *c745fcd46710088b760483ed048b06ebed89f60000000000000000240000008b760c83c504ff26 *02000000190000008d45fc3b435473058b43f8ffe0c745fc106810088b760483ed048b06ebed89 *f60000000000000000240000008b761083c504ff2603000000190000008d45fc3b435473058b43 *f8ffe0c745fc4c6810088b760483ed048b06ebed89f60000000000000000240000008b761483c5 *04ff2604000000190000008d45fc3b435473058b43f8ffe0c745fc886810088b760483ed048b06 *ebed89f60000000000000000240000008b761883c504ff2605000000190000008d45fc3b435473 *058b43f8ffe0c745fcc46810088b760483ed048b06ebed89f60000000000000000240000008b76 *1c83c504ff2606000000190000008d45fc3b435473058b43f8ffe0c745fc006910088b760483ed *048b06ebed89f60000000000000000240000008b762083c504ff2607000000190000008d45fc3b *435473058b43f8ffe0c745fc3c6910088b760483ed048b06ebed89f60000000000000000240000 *008b762483c504ff2608000000190000008d45fc3b435473058b43f8ffe0c745fc786910088b76 *0483ed048b06ebed89f60000000000000000240000008b762883c504ff2609000000190000008d *45fc3b435473058b43f8ffe0c745fcb46910088b760483ed048b06ebed89f60000000000000000 *240000008b762c83c504ff260a000000190000008d45fc3b435473058b43f8ffe0c745fcf06910 *088b760483ed048b06ebed89f60000000000000000240000008b763083c504ff260b0000001900 *00008d45fc3b435473058b43f8ffe0c745fc2c6a10088b760483ed048b06ebed89f60000000000 *000000240000008b763483c504ff260c000000190000008d45fc3b435473058b43f8ffe0c745fc *686a10088b760483ed048b06ebed89f60000000000000000240000008b763883c504ff260d0000 *00190000008d45fc3b435473058b43f8ffe0c745fca46a10088b760483ed048b06ebed89f60000 *000000000000240000008b763c83c504ff260e000000190000008d45fc3b435473058b43f8ffe0 *c745fce06a10088b760483ed048b06ebed89f60000000000000000240000008b764083c504ff26 *0f000000190000008d45fc3b435473058b43f8ffe0c745fc1c6b10088b760483ed048b06ebed89 *f60000000001000100130000008d45f43b435473058b43f8ffe08d45f8c700d46d10088970048b *760489c583ed04b89c071008ebe30000000002000000150000008d45f03b435473058b43f8ffe0 *8d45f8c700d46d10088970048b46088945f48b760483ed0c83ed04b808121008ebdc9000000000 *03000000120000008d45ec3b435473058b43f8ffe08d45f8c700d46d10088970048b460c8945f4 *8b46088945f08b760483ed1083ed04b814161008ebd68d76000000000004000000120000008d45 *e83b435473058b43f8ffe08d45f8c700d46d10088970048b46108945f48b460c8945f08b460889 *45ec8b760483ed1483ed04b8e41a1008ebd0900000000005000000120000008d45e43b43547305 *8b43f8ffe08d45f8c700d46d10088970048b46148945f48b46108945f08b460c8945ec8b460889 *45e88b760483ed1883ed04b87c1d1008ebca8d76000000000006000000120000008d45e03b4354 *73058b43f8ffe08d45f8c700d46d10088970048b46188945f48b46148945f08b46108945ec8b46 *0c8945e88b46088945e48b760483ed1c83ed04b87c201008ebc490000000000700000012000000 *8d45dc3b435473058b43f8ffe08d45f8c700d46d10088970048b461c8945f48b46188945f08b46 *148945ec8b46108945e88b460c8945e48b46088945e08b760483ed2083ed04b8fc231008ebbe8d *76000000000008000000120000008d45d83b435473058b43f8ffe08d45f8c700d46d1008897004 *8b46208945f48b461c8945f08b46188945ec8b46148945e88b46108945e48b460c8945e08b4608 *8945dc8b760483ed2483ed04b828281008ebb89091721008f971100861711008c9701008317010 *08996f1008016f1008696e100800000000010000002a0000008b45048944240883c5088138dc5b *1008750b8b4004890424e89f66ffff8b4424082500f00f00c1e8078b54240881e20000f0ff89c1 *09d18379100075128b4c2408897104c701745a10088b4500ffe08b4424088970048138dc5b1008 *742b8b41108d04c08b15acba12088b4482148b5424088942088b41108d04c08b15acba12088b4c *2408894c82148b442408c700445b1008ebb58b45048944240883c5088138dc5b1008750b8b4004 *890424e80a66ffff8b4424082500f00f00c1e8078b54240881e20000f0ff89c109d18379100075 *158b4c2408897104c701845a10088b45008b40f0ffe08b4424088970048138dc5b1008742b8b41 *108d04c08b15acba12088b4482148b5424088942088b41108d04c08b15acba12088b4c2408894c *82148b442408c700445b1008ebb28b45048944240883c5088138dc5b1008750b8b4004890424e8 *7265ffff8b4424082500f00f00c1e8078b54240881e20000f0ff89c109d18379100075158b4c24 *08897104c701985a10088b45008b40ecffe08b4424088970048138dc5b1008742b8b41108d04c0 *8b15acba12088b4482148b5424088942088b41108d04c08b15acba12088b4c2408894c82148b44 *2408c700445b1008ebb28b45048944240883c5088138dc5b1008750b8b4004890424e8da64ffff *8b4424082500f00f00c1e8078b54240881e20000f0ff89c109d18379100075158b4c2408897104 *c701ac5a10088b45008b40e8ffe08b4424088970048138dc5b1008742b8b41108d04c08b15acba *12088b4482148b5424088942088b41108d04c08b15acba12088b4c2408894c82148b442408c700 *445b1008ebb28b45048944240883c5088138dc5b1008750b8b4004890424e84264ffff8b442408 *2500f00f00c1e8078b54240881e20000f0ff89c109d18379100075158b4c2408897104c701c05a *10088b45008b40e4ffe08b4424088970048138dc5b1008742b8b41108d04c08b15acba12088b44 *82148b5424088942088b41108d04c08b15acba12088b4c2408894c82148b442408c700445b1008 *ebb28b45048944240883c5088138dc5b1008750b8b4004890424e8aa63ffff8b4424082500f00f *00c1e8078b54240881e20000f0ff89c109d18379100075158b4c2408897104c701d45a10088b45 *008b40e0ffe08b4424088970048138dc5b1008742b8b41108d04c08b15acba12088b4482148b54 *24088942088b41108d04c08b15acba12088b4c2408894c82148b442408c700445b1008ebb28b45 *048944240883c5088138dc5b1008750b8b4004890424e81263ffff8b4424082500f00f00c1e807 *8b54240881e20000f0ff89c109d18379100075158b4c2408897104c701e85a10088b45008b40dc *ffe08b4424088970048138dc5b1008742b8b41108d04c08b15acba12088b4482148b5424088942 *088b41108d04c08b15acba12088b4c2408894c82148b442408c700445b1008ebb28b4504894424 *0883c5088138dc5b1008750b8b4004890424e87a62ffff8b4424082500f00f00c1e8078b542408 *81e20000f0ff89c109d18379100075158b4c2408897104c701fc5a10088b45008b40d8ffe08b44 *24088970048138dc5b1008742b8b41108d04c08b15acba12088b4482148b5424088942088b4110 *8d04c08b15acba12088b4c2408894c82148b442408c700445b1008ebb28b45048944240883c508 *8138dc5b1008750b8b4004890424e8e261ffff8b4424082500f00f00c1e8078b54240881e20000 *f0ff89c109d18379100075158b4c2408897104c701105b10088b45008b40d4ffe08b4424088970 *048138dc5b1008742b8b41108d04c08b15acba12088b4482148b5424088942088b41108d04c08b *15acba12088b4c2408894c82148b442408c700445b1008ebb28d76005873100858731008587310 *08587310085873100858731008587310085873100800000000000000002400000083c504ff6500 *909083ec0cc7442404347611088b442410890424e86650ffff83c40cc383ec0c895c2404897424 *088b4424108b5c24148b742418ba0000000085c0740783f801742feb5cc704240e000000e8b2ff *ffff89c2c60058c6400168895802c6400650c64007b8897008c6400cffc6400de0eb2fc7042411 *000000e885ffffff89c2c60068895801c64005b8897006c6400a68a1d0ba120889420bc6420fff *c64210e089d08b5c24048b74240883c40cc383ec0c895c24088b5c2410803b68741c803b587412 *895c2404c7042460761108e8024fffffeb20803b6875058b4301eb038b4302890424e89873ffff *c60300891c24e83e50ffff8b5c240883c40cc383ec0cc7042404000000e8f6feffffa3d0ba1208 *c60083a1d0ba1208c64001c4a1d0ba1208c6400204a1d0ba1208c64003c383c40cc3909090c355 *57565383ec0c8b74242081fefe000000762589f0c1e00c05ff1f0000c1e81440890424e83c0100 *00e91c0100008b43088902e910010000bad4ba12088b1dd4ba120885db746339731874e2397318 *764f8b431829f0894318c1e00501c389f789d985f60f84de0000008973188b03894304ba010000 *008d432039f20f83c6000000c7400400000000c74018000000008948084283c02039fa72e7e9a8 *0000008d53088b5b0885db759de83863000089c7890424e81b0300008d5f4089f589d985f6742e *8973188b4740894304ba010000008d476039f27319c7400400000000c740180000000089480842 *83c02039ea72e781fefd000000774ebafe00000089f0c1e0058d3c1829f2742d8957188b078947 *04b9010000008d472039d17319c7400400000000c74018000000008978084183c02039d172e789 *f0c1e0058d0418890424e8f600000089d883c40c5b5e5f5dc383ec0cc7042401000000e89ffeff *ff83c40cc35557565383ec0c8b6c2420be00000000bb00000000bf00000000b9000000008b15d4 *ba120885d27438817a18fe000000752185db740b8b0105000010003902740b89d389cfbe010000 *00eb014639ee7414eb05bb0000000089d18b520885d275c839ee751685ff750a8b4208a3d4ba12 *08eb1d8b4208894708eb15892c24e83f63000089c3890424e8e201000083c340befe00000089d9 *c74318fe0000008b03894304ba010000008d4320c7400400000000c74018000000008948084283 *c02039f272e789e8c1e00883e80289431889d883c40c5b5e5f5dc3565383ec048b4c2410817918 *fe000000760d890c24e8e7000000e9dc000000bb000000008b15d4ba120885d274158b023b0173 *0f89d38b520885d274068b023b0172f185db7510a1d4ba1208894108890dd4ba1208eb5a8b4308 *894108894b0889ce85c974478b531889d0c1e00c03033b01753989d00341188943188b41088943 *088b7118ba0000000089c839f27319c7400400000000c740180000000089580883c0204239f272 *e789d8eb0289f089c18b510885d274438b591889d8c1e00c03013b02753589d80342188941188b *42088941088b7218bb0000000089d039f37319c7400400000000c740180000000089480883c020 *4339f372e783c4045b5ec357565383ec108b5c24208b4318c1e00c89c6c1ee14467454bffe0000 *0089d8250000f0ff890424e86900000089d9c74318fe0000008b03894304ba010000008d4320c7 *400400000000c74018000000008948084283c02039fa72e7891c24e89cfeffff81c3000010004e *75b183c4105b5e5fc35383ec088b44241085c074118b5808890424e875feffff89d885db75ef83 *c4085bc3538b4424088d90002000008d48400500f00f0089c339c2770f891183c12081c2001000 *0039da76f15bc3908b442404c70000361008c74004ec3a1008c383ec0cc7042440bc1208e8dfff *ffff83c40cc383ec0c8b442410c70040bc1208e80568ffff83c40cc3c383ec0c895c24088b5c24 *10e807fdffff89c18b4314894110895914c74108000000008b43143b05e0ba12087709c7411c01 *000000eb07c7411c00000000837b2c00740f8b432c8b53248950048b432c894808894b2c8b0189 *43240500100000894328ff4334ff05fcba120889c88b5c240883c40cc35557565383ec5cc74424 *3000000000c744242800000000e8dd68ffffe85974ffffe81489ffff89442434837c2474007417 *a170bb120848a3e0ba1208c705e4ba120801000000eb70c705e0ba120800000000c74424240000 *0000b8000000003b0570bb1208733a8b1dacba12088b3570bb12088b5424248d04d2c1e0028b4c *03048b510803511c3b54030c720a8b4c2424890de0ba1208ff4424243974242472d2a170bb1208 *483905e0ba12080f94c00fb6c0a3e4ba1208c705dcba120801000000c705c0bc12080100000083 *3de4ba120800741ca170bb12088d04c0c1e0020305acba12088b40f0890424e8382f0000833d70 *bb1208017521a1b8ba12088b50308915f8ba1208c7403000000000a1b8ba1208c7403400000000 *c705fcba120800000000c7442424000000008b4424248d14c0c1e202a1acba1208c74410144c09 *1208a1acba1208c74410104c091208bd00000000a1acba12083b6c10080f83f70000008b542424 *8d04d2c1e00289442420837c242400751185ed750d833d70bb1208010f87bd0000008d44ad00c1 *e0048b15acba120889c68b4c242003740a04c7462400000000c7462c00000000c7463000000000 *893424e8ccfdffff89c28946308b0089463c895638c7464000000000c7464400000000c7464800 *0000008b561885d2740b83621cfe8b520885d275f5837e2000744f8b4608c1e00c89c7c1ef0574 *428d87ff0f0000c1e80c890424e839f9ffff89464c8b18897c2408c744240400000000891c24e8 *471df4ff8b560485d27411895a0c83eb80834a1c088b520885d275ef45a1acba12088b5424203b *6c10080f8217ffffffff4424248b4c24243b0de0ba12080f86bdfeffffa1e0ba12084089442424 *3b0570bb12080f83aa000000bd000000008b15acba120889d38b442424c1e00389c1034424243b *6c820873768b4424248d14088d44ad00c1e00489c603749304837e2c007512893424e8c3fcffff *894604c74608010000008b462489463c8b462c894638c7463000000000c7463400000000c74640 *00000000c7464400000000c7464800000000458b1dacba12088b4c2424c1e1038b5424248d040a *3b6c8308728aff4424248b4c24243b0d70bb12080f8256ffffff833de4ba1208007436c7042404 *000000e80bf8ffffa300bb12088b00a304bb1208a308bb12080500400000a30cbb1208eb178934 *24e82b2c0000e972020000c70500bb120800000000a170bb120848894424243b05e0ba12087636 *8b0dacba12088b5424248d04d2c1e0028b540110895401188b15acba1208c74402104c091208ff *4c24248b4c24243b0de0ba120877caa170bb120848894424243b05e0ba120876678b5424248d1c *d2c1e30289d80305acba1208890424e8db2500008b4c2424890de8ba1208a1acba12088b541808 *4a89d378258d04c98d3485000000008d049bc1e0048b15acba120803443204890424e86a170000 *4b79e5ff4c24248b4c24243b0de0ba12087799a170bb120848894424243b05e0ba120876678b54 *24248d1cd2c1e30289d80305acba1208890424e8212600008b4c2424890de8ba1208a1acba1208 *8b5418084a89d378258d04c98d3485000000008d049bc1e0048b15acba120803443204890424e8 *f11600004b79e5ff4c24248b4c24243b0de0ba12087799c705e8ba120800000000c70424d58910 *08e8a82b0000c705e8ba120800000000c70424d5891008ff542470c7042430bc1208e8d30a0000 *a130bc1208a3b8bc1208c70530bc120800000000c705ecba120800000000a1d4b81208a3f0ba12 *08c705d4b8120848091208c705bcbc120848091208c70424d5891008e8a66affffbd0000000083 *3de4ba120800740e833ddcba1208017405e8d7260000833d10bb120800751f833d14bb12080075 *16833d00bb1208007417a108bb12083b0504bb1208740ae80c1d0000bd010000008b1d70bb1208 *4b78728b15acba12088d04db8b4c820849785f8d3c850000000085db750d85c97509833d70bb12 *080177448d0489c1e0048b15acba120889c603743a04891de8ba12088b462c3b463875088b463c *3b46247312893424e8b0150000bd01000000e963ffffff837e40000f856dfdffff4979a84b798e *85ed0f852fffffffe8f407000085c00f8522ffffff8b1dbcb8120885db74238b03890424e8bd09 *000085c0750cc704248d761108e8ef42ffff89038b5b1085db75dde83d6affffc7442424000000 *00b8000000003b0570bb1208737cbd000000008b15acba120889d38b442424c1e00389c1034424 *243b6c8208734c8b4424248d14088d44ad00c1e00489c603749304837c242400750d85ed750983 *3d70bb12080177098b562c8b4624894204458b1dacba12088b4c2424c1e1038b5424248d040a3b *6c830872b4ff4424248b4c24243b0d70bb12087284833de4ba1208007421a1b4ba12088b400483 *78200074138b4008894424288b442470890424e8c4370000a1fcba1208c1e00a8944242cc74424 *2400000000ba000000003b1570bb12080f83f90100008b4c24243b0de0ba1208770d8b15acba12 *088d04c9ff44821cbd000000008b15acba120889d38b442424c1e00389c1034424243b6c82080f *83a80100008b4424248d14088d44ad00c1e00489c603749304837c242400750d85ed7509833d70 *bb12080177248b5424243b15e0ba12080f87040100008b562c8b022b42040500100000c1f80229 *44242c8b4c24243b0de0ba12080f87e0000000837e200074098b4424282b4608eb038b4608c1e0 *0a01442430837c242400750885ed0f8483000000837e200074498b563085d2740b83621cfe8b52 *0885d275f5837e040075088b4630894604eb1e8b560485d274178b5a0885db75068b4630894208 *83621cf789da85db75e98b4608034634894608eb268b4604890424e8c5f6ffff8b56308956048b *463489460885d2740b83621cfe8b520885d275f5c7463000000000c74634000000008b561885d2 *74118b5a08891424e816f5ffff89da85db75ef8b564485d2740b83621cfe8b520885d275f58b46 *448946188b4648eb4a8b564485d2742d8d7e188b5a0883621cfe89d18b4618894208c7420c0000 *0000837e180074068b461889500c890f89da85db75d68b4608034634894608c74634000000008b *461c03464889461c458b1dacba12088b4c2424c1e1038b5424248d040a3b6c83080f8258feffff *ff4424248b4c24243b0d70bb12080f8207feffff833de4ba1208000f84f8010000833d70bb1208 *010f86eb0100008b3550bb12088b2d70bb1208a1b4ba12088b50048b420803421c8944241c8b44 *241cba000000005250df2c248d642408dc0d60bb1208dd5c2450a158bb1208ba000000005250df *2c248d642408dd5c2448dd442448dd442450d9c9dde1dfe0ddd99e7306ddd8dd442450d97c2446 *0fb7442446660d000c6689442444d96c2444df7c2438d96c24468b44243889c3ba000000005256 *df2c248d642408dc0d68bb1208d835dc761108dd5c2448a154bb1208ba000000005250df2c248d *642408dd5c2450dd442450dd442448d9c9dde1dfe0ddd99e7306ddd8dd442448d96c2444df7c24 *38d96c24468b44243889c7833d70bb120801765a833d7cbb120800754085f6744da1b4ba12088b *40048b4008ba000000005250df2c248d642408ba000000005256df2c248d642408dc0d80bb1208 *d835505b1108d9c9dae9dfe09e7611a1b4ba12088b4004c7402001000000eb0fa1b4ba12088b40 *04c740200000000085f6745f39fe7305e81b41ffffa1b4ba12088b400483782000741d8d441bfe *8d55fe0fafc28d041801f839f0762a89f329fb8d542dfdeb138d542dfe89d80fafc201f839f076 *1189f329fb89d889d1ba00000000f7f189c33b5c241c7305e8c540ffffc744242400000000396c *2424731a8b4424248d14c0a1acba1208895c900cff442424396c242472e6e87c7effff89c7833d *2cbc120800740da12cbc1208890424e8c5f3ffffc7052cbc120800000000c70520bc1208000000 *00c705a4ba120800000000c705a8ba120800000000a154bb1208a328bc1208c70524bc12080000 *0000833d00bb120800740da100bb1208890424e8fff1ffffc744242400000000bd000000008b15 *acba120889d38b442424c1e00389c1034424243b6c820873468b4424248d14088d44ad00c1e004 *89c603749304837e20007411837e4c00740b8b464c890424e8acf1ffff458b1dacba12088b4c24 *24c1e1038b5424248d040a3b6c830872baff4424248b4c24243b0de0ba1208768a833d70bb1208 *010f85fd000000833df8ba120800740da1f8ba1208890424e8d2f2ffffa1b8ba12088b503085d2 *740ec7421c000000008b520885d275f2a1b8ba12088b4834be50bb1208833d50bb120800746cba *000000005251df2c248d642408dc0d60bb1208d8c0a150bb1208ba000000005250df2c24d9c98d *642408dae9dfe09e763a8d1409a150bb120889c329d38d049b8d0480c1e002ba00000000f73650 *db04248d642404dd0568bb1208dae9dfe09e7605e8f53effff89d9eb46ba000000005251df2c24 *8d642408dc0d60bb1208d97c24460fb7442446660d000c6689442444d96c2444df7c2438d96c24 *468b44243889c13b0554bb120873068b0d54bb1208890c24eb68833d5cbb1208007457e83b7dff *ff89c1833de0ba1208007521a1fcba12088d04808d0480c1e0028b1db8ba1208ba00000000f773 *08a3e8121208a15cbb120829c88d04808d0480c1e0028b15e812120883c26489d199f7f93b0554 *bb12087d05a154bb1208890424e8ae78ffff833de4ba120800740da1c0bc1208890424e8662200 *00e81078ffffa1b8bc1208890424e8cc7effffa1bcbc1208890424e85852ffffa1e4ba12088904 *24e85463ffffa1e0ba1208894424108b44242c8944240c897c24088b542430895424048b4c2434 *890c24e81b67ffffe8285bffff83c45c5b5e5f5dc357565383ec10bf000000008b15ecba120883 *fa010f84e200000083fa017213b80000000083fa020f848d010000e97c010000c705e8ba120800 *000000beb8bc12088b1db8bc120885db747e813bbc5c100874108b030fb740fc83f838740c83f8 *4075548b53048916eb598b4304890424e87001000085c074368943048b4308e829030000894308 *8b430ce81e03000089430c8b431089068b5310a130bc1208894310891d30bc1208bf01000000eb *148d73108b5310eb0cc70424e0761108e9f200000089d385d2758285ff0f85d60000008b1db8bc *120885db74128b430ce8ca02000089430c8b5b1085db75eec705ecba120801000000e9ab000000 *bef0ba12088b1df0ba120881fb480912087462891c24e8ce00000085c0740289c30fb7531083fa *03741183fa03770583fa02eb0383fa047407eb118b5304eb298b530cc7430c48091208eb1d85c0 *75088d730c8b530ceb138b530ca1d4b8120889430c891dd4b81208891689d381fa48091208759e *a1f0ba12083d4809120874208b580ce8280200008b15bcbc120889500ca3bcbc120889d881fb48 *09120875e0c705ecba120802000000b801000000eb0cc70424a7761108e86d39ffff83c4105b5e *5fc35383ec088b5c24108b0385c07411e8d901000089038d58108b401085c075ef83c4085bc355 *5756538b7424148b2de0ba12088b3e83ef0889f0c1e81480b8e0bc120800741f89f02500f00f00 *c1e80789f281e20000f0ff09d03968107706f6401c01740489f2eb64f6401c027559f6401c0874 *2289f12b08c1f90289cbc1eb058b500c83e11fb801000000d3e023049a89f285c075360fb74704 *83f83b741983f83b7f0a83e81e83f804771beb1183f84075148b5604eb1466837e100375088b76 *04e96bffffffba0000000089d05b5e5f5dc383ec0c895c24088b5c24108b03e80701000089038b *5c240883c40cc35557565383ec0c8b7c24208b6c24248b5c24288b74242c8b46143b05e8ba1208 *7312a1e8ba12088d04c08b15acba12088b7482048b46248d04a83b46287208893424e898eeffff *8b4e2489fa85db740d8b0283c204890183c1044b75f38b46248d14a8895624c707945c10088947 *0483c40c5b5e5f5dc383ec0c895c2404897424088b4424148b58048b432483c00c3b4328720889 *1c24e843eeffff8b73248d460c894324c7065c5d10088b44241089460489f181e100f00f00c1e9 *0789f0250000f0ff09c18379100074238b41108d04c08b15acba12088b4482148946088b41108d *04c08b15acba12088974821489f08b5c24048b74240883c40cc35557565383ec1c89c389d8c1e8 *1480b8e0bc1208000f84e200000089d82500f00f00c1e80789da81e20000f0ff09c28b42103b05 *e0ba1208761b3b05e8ba12080f830f050000c705f4ba120801000000e900050000f6421c027424 *8b0b83e908668379043b750b66837b10030f84b1060000891c24e857210000e9d6040000f6421c *0874728b3289d929f1c1f90289c8c1e8058b520c83e11fbf0100000089fdd3e589e9230c8285c9 *0f85a604000089d929f1c1f90289c8c1e80583e11fd3e7093c82a108bb12083b050cbb12087214 *c70510bb120801000000a104bb1208a308bb1208a108bb12088918830508bb120804e95e040000 *8b42148b780c8b0b83e9080fb7410483f8400f8772060000ff24853c79110889dd0fb7010fb751 *028d5c020189fe8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b4624 *8d04983b46287208893424e88decffff8b4e2489ea85db0f84a80500008b0283c204890183c104 *4b75f3e9960500008b5304813b3cdc0b0875138d04d55809120881faff0000000f860306000081 *3b54dc0b08751583faf07c108d04d5d811120883fa100f8ee605000089ddbe0200000089fb8b47 *143b05e8ba12087312a1e8ba12088d04c08b15acba12088b5c82048b43248d04b03b4328720889 *1c24e8faebffff8b4b2489ea85f60f84ab0200008b0283c204890183c1044e75f3e99902000089 *ddbe0300000089fb8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b5c82048b43 *248d04b03b43287208891c24e8a2ebffff8b4b2489ea85f60f84530200008b0283c204890183c1 *044e75f3e94102000089ddbe0300000089fb8b47143b05e8ba12087312a1e8ba12088d04c08b15 *acba12088b5c82048b43248d04b03b43287208891c24e84aebffff8b4b2489ea85f60f84fb0100 *008b0283c204890183c1044e75f3e9e901000089dd0fb7010fb751028d5c020189fe8b47143b05 *e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b46248d04983b46287208893424e8 *eceaffff8b4e2489ea85db0f84070400008b0283c204890183c1044b75f3e9f503000089dd0fb7 *5b1689fe8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b46248d0498 *3b46287208893424e895eaffff8b4e2489ea85db0f84b00300008b0283c204890183c1044b75f3 *e99e030000897c240cc744240801000000c744240403000000891c24e87bfbffffe90804000089 *ddbe0300000089fb8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b5c82048b43 *248d04b03b43287208891c24e81ceaffff8b4b2489ea85f60f84cd0000008b0283c204890183c1 *044e75f3e9bb000000833dd8ba120808765189ddbe0300000089fb8b47143b05e8ba12087312a1 *e8ba12088d04c08b15acba12088b5c82048b43248d04b03b43287208891c24e8bbe9ffff8b4b24 *89ea85f674708b0283c204890183c1044e75f3eb61895c24048b01890424e85003000085c0755a *89ddbe0300000089fb8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b5c82048b *43248d04b03b43287208891c24e858e9ffff8b4b2489ea85f6740d8b0283c204890183c1044e75 *f38b4324894b24e965020000ff05d8ba1208e84afbffffff0dd8ba1208c703945c1008894304e9 *cb02000066837906000f8480000000833de4ba1208007477837b0c007571a1dcba120889430ceb *6166837906007460833de4ba1208007457837b04007551a1dcba1208894304eb41833de4ba1208 *00743e837b0c007538837b08007532a1dcba1208894308eb22833de4ba120800741f0fb7110fb7 *410201c2837c930400750fa1dcba120889449304891ddcba120889d8e939020000895c2404c704 *24be761108e92402000089dd0fb743068d580389fe8b47143b05e8ba12087312a1e8ba12088d04 *c08b15acba12088b7482048b46248d04983b46287208893424e83be8ffff8b4e2489ea85db0f84 *560100008b0283c204890183c1044b75f3e94401000089dd8b5b0483c30389fe8b47143b05e8ba *12087312a1e8ba12088d04c08b15acba12088b7482048b46248d04983b46287208893424e8e2e7 *ffff8b4e2489ea85db0f84fd0000008b0283c204890183c1044b75f3e9eb000000833de8ba1208 *0074388b530489d0c1e81480b8e0bc120800742789d02500f00f00c1e80781e20000f0ff09d08b *40103b05e8ba1208730ac705f4ba1208010000008b4304e92d01000089dd8b5b0483c30289fe8b *47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b46248d04983b46287208 *893424e840e7ffff8b4e2489ea85db745f8b0283c204890183c1044b75f3eb5089dd8b5b0483c3 *0389fe8b47143b05e8ba12087312a1e8ba12088d04c08b15acba12088b7482048b46248d04983b *46287208893424e8eee6ffff8b4e2489ea85db740d8b0283c204890183c1044b75f38b4624894e *24c74500945c1008894504eb7966837b100375088b5b04e9def8ffff8b432883c00d897c240cc7 *4424080d00000089442404891c24e8baf7ffff89c689442404891c24e8c40100008b53308b4e30 *8b43288d44833439c273158b0283c204890183c1048b43288d44833439c272eb89f0eb140fb741 *0489442404c7042420771108e8e52fffff83c41c5b5e5f5dc35557565383ec0c8b7c24248b7704 *8b2f89f82500f00f00c1e80789fa81e20000f0ff09d08b40103b05e0ba12080f873e010000c707 *645b100889f281e200f00f00c1ea0789f0250000f0ff09c289f0c1e81480b8e0bc12080074328b *421ca8017524a808742789f12b0ac1f90289cbc1eb058b520c83e11fb801000000d3e023049a85 *c07407b801000000eb05b80000000085c00f85d50000008b0683e8080fb7500483fa400f87af00 *0000ff2495407a11088b4424208b74860489f281e200f00f00c1ea0789f0250000f0ff09c289f0 *c1e81480b8e0bc12080074328b421ca8017524a808742789f12b0ac1f90289cbc1eb058b520c83 *e11fb801000000d3e023049a85c07407ba01000000eb05ba0000000089f085d2745ceb538b7604 *e915ffffffff05d8ba1208833dd8ba120808773c897424048b00890424e8bffeffffff0dd8ba12 *0885c07424894604c706645a100889c6e9defeffff0fb7400489442404c7042460771108e86e2e *ffff892fb80000000083c40c5b5e5f5dc38b54240889d02b44240483e0fc014230c35557565383 *ec0cbd000000008b4424208b78088b4004894424088b4424208b18be000000003b742408732ef7 *c70100000074078b03e89af6ffff4683c304f7c61f000000750b458b4424208b7ca808eb02d1ef *3b74240872d283c40c5b5e5f5dc383ec0c895c24088b5c24108b4304e860f6ffff8943040fb743 *12486683f802770b8b4314e84af6ffff894314837b1800740b8b4318e839f6ffff8943188b4328 *8d448334894424048b4330890424e8691200008b5c240883c40cc35557565383ec1ca1e8ba1208 *894424108b5424308b5a3c8b4a38894c2414c705f4ba1208000000003b4a2c75163b5a240f83aa *0600008b5424148b4424303b502c74178b4c24143b5904750e8b4108894424148b18e96d060000 *8b3383ee08895c24180fb7460483f83b0f870b060000ff2485447b1108c705e8ba120800000000 *8b4304e88ff5ffff8943048b430ce884f5ffff89430c8b4310e879f5ffff8943108b5424108915 *e8ba120889d981e100f00f00c1e90789d8250000f0ff09c18379100074238b41108d04c08b15ac *ba12088b4482108943088b41108d04c08b15acba1208895c8210c705f4ba12080000000083c314 *e9980500008d46f00fb770168b780881feffff00007505893c24eb2e85f6744bf7c60100000074 *078b07e8f3f4ffff83c704d1ee75eaeb330fb77e068b76fc81ffffff0000750a893424e8fffdff *ffeb1a85ff7416f7c70100000074078b06e8bef4ffff83c604d1ef75ea8b4308e8aff4ffff8943 *08e9850300000fb77e068b76fc81ffffff00000f845e01000085ff0f846a030000f7c701000000 *74078b06e87df4ffff83c604d1ef75eae94f0300008d46f00fb770168b780881feffff0000750a *893c24e883fdffffeb1a85f67416f7c60100000074078b07e842f4ffff83c704d1ee75ea8b4304 *e833f4ffff894304eb680fb77e068b76fc81ffffff0000747085ff0f8400030000f7c701000000 *74078b06e808f4ffff83c604d1ef75eae9e50200008d46f00fb770168b780881feffff0000750a *893c24e80efdffffeb1a85f67416f7c60100000074078b07e8cdf3ffff83c704d1ee75ea83c308 *e9390400000fb77e068b76fc81ffffff00007505893424eb3885ff0f848b020000f7c701000000 *74078b06e893f3ffff83c604d1ef75eae9700200008d46f00fb770168b780881feffff0000750d *893c24e899fcffffe95102000085f60f8449020000f7c60100000074078b07e851f3ffff83c704 *d1ee75eae92e0200000fb77e068b76fc81ffffff00007505893424eb3885ff0f8407020000f7c7 *0100000074078b06e81af3ffff83c604d1ef75eae9ec0100008d46f00fb770168b780881feffff *0000750d893c24e820fcffffe9cd01000085f60f84c5010000f7c60100000074078b07e8d8f2ff *ff83c704d1ee75eae9aa0100008d46f00fb778168b680881ffffff0000742c85ff744df7c70100 *000074088b4500e8a6f2ffff83c504d1ef75e9eb340fb77e068b6efc81ffffff0000750a892c24 *e8b2fbffffeb1b85ff7417f7c70100000074088b4500e870f2ffff83c504d1ef75e90fb7068d7c *830483c30439fb73108b03e854f2ffff890383c30439fb72f00fb74602e9a00200008b4304e83a *f2ffff8943048b4308e82ff2ffff8943088b430ce824f2ffff89430c8b4310e819f2ffff894310 *0fb74316e96b0200008b4c24308b41108338007406c703545b10088b4304e8f3f1ffff89430483 *3df4ba1208000f84cc000000c705f4ba12080000000089d981e100f00f00c1e90789d8250000f0 *ff09c1837910000f84a40000008b41108d04c08b15acba12088b4482148943088b41108d04c08b *15acba1208895c8214eb7fc705e8ba1208000000008b4304e884f1ffff8943048b442410a3e8ba *1208eb0b8b4304e86ef1ffff89430489d981e100f00f00c1e90789d8250000f0ff09c183791000 *74238b41108d04c08b15acba12088b4482108943088b41108d04c08b15acba1208895c8210c705 *f4ba120800000000eb0b8b4304e81af1ffff89430483c30ce98a0100008b4308e807f1ffff8943 *088b43048d44830c894424048d430c890424e8370d00008b43048d5c830ce95d010000891c24e8 *d513000089c3e94e0100008b430483c002e926010000c705e8ba1208000000008b430483c0038d *348383c30c39f373108b03e8a7f0ffff890383c30439f372f08b5424108915e8ba12088b4c2418 *81e100f00f00c1e9078b442418250000f0ff09c183791000742b8b41108d04c08b15acba12088b *4482108b5424188942088b41108d04c08b15acba12088b4c2418894c8210c705f4ba1208000000 *00e9b7000000c74308000000008b430483c0038d348383c30c39f30f839c0000008b03e81af0ff *ff890383c30439f372f0e98700000089dec705e8ba120800000000891c24e885f9ffff8b442410 *a3e8ba120889d981e100f00f00c1e90789d8250000f0ff09c18379100074238b41108d04c08b15 *acba12088b4482108943088b41108d04c08b15acba1208895c8210c705f4ba1208000000008b46 *2883c00d8d1c83eb18895c24080fb7460489442404c70424a0771108e8ff26ffff833df4ba1208 *00742bc705f4ba120800000000a1e8ba12088d04c08b15acba12088d0482894424048b54241889 *1424e8cbeeffff8b4424148b4c24303b412c0f856bf9ffff3b5924e950f9ffff8b4c24148b5424 *30894a38895a3c83c41c5b5e5f5dc35557565383ec1ca1b4ba12088b00a3e8ba120889442414a1 *08bb120889c23b0504bb12080f84580400008d42fca308bb12088b5afc8b3383ee08895c24180f *b7460483f83b0f87a0030000ff2485347c1108c705e8ba1208000000008b4304e8beeeffff8943 *048b430ce8b3eeffff89430c8b4310e8a8eeffff894310e90d0300008d46f00fb770168b780881 *feffff00007505893c24eb2e85f6744bf7c60100000074078b07e876eeffff83c704d1ee75eaeb *330fb77e068b76fc81ffffff0000750a893424e882f7ffffeb1a85ff7416f7c70100000074078b *06e841eeffff83c604d1ef75ea8b4308e832eeffff894308e92a0200008d46f00fb770168b7808 *81feffff00007505893c24eb3585f60f840b020000f7c60100000074078b07e8fcedffff83c704 *d1ee75eae9f00100000fb77e068b76fc81ffffff0000750d893424e805f7ffffe9d401000085ff *0f84cc010000f7c70100000074078b06e8bdedffff83c604d1ef75eae9b10100008d46f00fb758 *168b700881fbffff0000742f85db0f8478020000f6c30174078b06e88bedffff83c604d1eb75ed *e9600200000fb75e068b76fc81fbffff0000750d893424e894f6ffffe94402000085db0f843c02 *0000f6c30174078b06e84fedffff83c604d1eb75ede9240200008d46f00fb778168b680881ffff *ff0000742c85ff744df7c70100000074088b4500e81dedffff83c504d1ef75e9eb340fb77e068b *6efc81ffffff0000750a892c24e829f6ffffeb1b85ff7417f7c70100000074088b4500e8e7ecff *ff83c504d1ef75e90fb7068d74830483c30439f30f83af0100008b03e8c7ecffff890383c30439 *f372f0e99a0100008b4304e8b1ecffff8943048b4308e8a6ecffff8943088b430ce89becffff89 *430c8b4310e890ecffff894310e9690100008b4304e880ecffff894304833df4ba1208000f842d *01000089d981e100f00f00c1e90789d8250000f0ff09c1837910000f840f0100008b41108d04c0 *8b15acba12088b4482148943088b41108d04c08b15acba1208895c8214e9e7000000c705e8ba12 *08000000008b4304e818ecffff894304e9c30000008b4304e808ecffff894304e9bd0000008b43 *04e8f8ebffff894304e9d10000008b4308e8e8ebffff8943088b43048d44830c894424048d430c *890424e818080000e9ab000000891c24e8bd0e0000e99e000000c705e8ba1208000000008b4304 *83c0038d348383c30c39f373108b03e89cebffff890383c30439f372f08b442414a3e8ba1208eb *45c74308000000008b430483c0038d348383c30c39f373528b03e86aebffff890383c30439f372 *f0eb40c705e8ba120800000000891c24e8daf4ffff8b7c2414893de8ba1208c705f4ba12080000 *0000eb18895c24080fb7460489442404c70424e0771108e89922ffff833df4ba120800742bc705 *f4ba120800000000a1e8ba12088d04c08b15acba12088d0482894424048b442418890424e865ea *ffff8b4c241883c1048b4424182500f00f00c1e8078b54241881e20000f0ff09d02b08c1f90289 *cbc1eb058b500c83e11fb801000000d3e009049a8b1508bb12083b1504bb12080f85a8fbffff83 *3d10bb120800742a833d14bb120800752ec70510bb120800000000a1b4ba12088b40048b4004a3 *14bb12088b00a318bb1208833d14bb1208000f84b00000008b1d14bb1208be01000000eb078305 *18bb120804a118bb12083b4304731f89c12b0bc1f90289cac1ea058b430c83e11f89f7d3e789f9 *230c9085c974d0a114bb12088b3518bb12083b700473468d4e042b08c1f90289cbc1eb058b500c *83e11fb801000000d3e023049a85c074058d4608eb338b1518bb1208a108bb12088910830508bb *120804830518bb120808e9c2faffffa114bb12088b4008a314bb120885c0740c8b00a318bb1208 *e950ffffff83c41c5b5e5f5dc383ec1c895c241089742414897c24188b5c24208b3de8ba12088b *1383ea080fb7420483f83b0f8769010000ff2485247d11080fb7028d74830483c30439f30f8364 *0100008b03e85de9ffff890383c30439f372f0e94f0100008b4304e847e9ffff894304e93f0100 *00c705e8ba12080000000089d981e100f00f00c1e90789d8250000f0ff09c18379100074238b41 *108d04c08b15acba12088b4482108943088b41108d04c08b15acba1208895c82108b430483c003 *8d348383c30c39f30f83910000008b03e8dde8ffff890383c30439f372f0eb7fc7430800000000 *8b430483c0038d348383c30c39f30f83b70000008b03e8b0e8ffff890383c30439f372f0e9a200 *0000c705e8ba120800000000891c24e81df2ffff89d981e100f00f00c1e90789d8250000f0ff09 *c18379100074238b41108d04c08b15acba12088b4482108943088b41108d04c08b15acba120889 *5c8210893de8ba1208c705f4ba120800000000eb418b4308e839e8ffff8943088b43048d44830c *894424048d430c890424e869040000eb1e891c24e8110b0000eb140fb7420489442404c7042420 *781108e87a1fffffa1f4ba1208c705f4ba1208000000008b5c24108b7424148b7c241883c41cc3 *5557565383ec0c8b7c24208b5f14bd4c0912088b73088b07a3e8ba1208c705f4ba120800000000 *39eb0f84850000008b1383ea080fb7420483f8227f0c83f8217d0e83f81f7409eb4683f837742b *eb3f8b4304e889e7ffff894304833df4ba120800740cc705f4ba120800000000eb18c743080000 *0000eb2a8b4304890424e8b5fdffff85c0741b896b0889ddeb140fb7420489442404c704244078 *1108e8b81effff89f38b760881fb4c0912080f857bffffff896f1483c40c5b5e5f5dc355575653 *83ec0c8b6c24208b75188b460889442408c705e8ba120800000000c705f4ba12080000000081fe *4c0912080f84610100008b1683ea080fb7420483e81f83f81c0f8721010000ff2485147e11088b *45108946088975108b460483c0038d3c868d5e0c39fb0f83110100008b03e8ade6ffff890383c3 *0439fb72f0e9fc0000008b4500a3e8ba12088b460483c0038d3c868d5e0c39fb73108b03e880e6 *ffff890383c30439fb72f0c705e8ba120800000000c7460800000000833df4ba1208000f84b600 *0000c705f4ba120800000000896c2404893424e8bde5ffffe99b0000008b4604e836e6ffff8946 *048b460ce82be6ffff89460c8b4610e820e6ffff894610eb15893424e8a0efffffeb0b8b4604e8 *09e6ffff8946048b4510894608897510eb588b4500a3e8ba12088b4604e8ebe5ffff894604c705 *e8ba120800000000833df4ba1208007415c705f4ba1208000000008b4514894608897514eb1dc7 *460800000000eb140fb7420489442404c7042480781108e81d1dffff8b7424088b460889442408 *81fe4c0912080f859ffeffff83c40c5b5e5f5dc357565383ec108b35dcba1208a1b4ba12088b00 *a3e8ba120883fe010f844e0100008b0e8d59f80fb741f80fb7530201d08b448604a3dcba12080f *b741f80fb7530201d08b15c0bc1208895486048935c0bc12080fb7430483f8110f849700000083 *f8117f0e83f8090f84be000000e9d900000083f818744b83f8220f85cb0000008b4604e8fbe4ff *ff894604833df4ba1208000f84c7000000c705f4ba1208000000008b4608a3c0bc1208a1b4ba12 *088b4014894608a1b4ba1208897014e99d0000000fb773068b5bfc81feffff00007505891c24eb *3585f60f8481000000f7c60100000074078b03e896e4ffff83c304d1ee75eaeb698d43f00fb758 *168b700881fbffff0000750a893424e89fedffffeb4d85db7449f6c30174078b06e861e4ffff83 *c604d1eb75edeb340fb7038d7c86048d5e0439fb73268b03e843e4ffff890383c30439fb72f0eb *140fb7430489442404c70424c0781108e89e1bffff8b35dcba120883fe010f85b2feffff83c410 *5b5e5fc35557565383ec0c8b742420bd000000008b4424248b5804bf000000003b7c2428732df6 *c30175098b06e8e0e3ffff89064783c604f7c71f000000750b458b4424248b5ca804eb02d1eb3b *7c242872d383c40c5b5e5f5dc35557565383ec1c8b7c24303b7c24340f83860100008b0783e80c *894424180fb7400883e82383f8090f874b010000ff2485887e11088b4704e87ae3ffff89470483 *c708e9490100008b5424188b420489c583e51f83c70489ee89c3c1eb0585ed7416f6c30175098b *07e849e3ffff890783c704d1eb4e75ea8b4424180fb7580a8b3081fbffff0000750d893424e851 *ecffffe9fa00000085db0f84f2000000f6c30174078b06e80ce3ffff83c604d1eb75ede9da0000 *0083c7048b07e8f6e2ffff890783c7048b5818895c240883c01889442404893c24e8cdfeffff8d *3c9fe9ad0000008b5424188b42048b1883c704895c24088b420489442404893c24e8a6feffff8d *3c9fe96dffffff8b6f048d770cbf080000000fb7ddf6c30175098b06e892e2ffff890683c604d1 *eb4f75ea89e8c1e80e25fc0300008d7c3028c1ed18744f8b07e86ee2ffff890783c7044d75f1eb *3e8b4708e85ce2ffff8947088b1083ea188d470c89442404891424e8ad04000089c7e9fffeffff *8b5424180fb7420889442404c7042400791108e8a019ffff3b7c24340f827afeffff83c41c5b5e *5f5dc357565383ec108b5c24208b534085d274538d7b448b420889434089d18b4344894208c742 *0c00000000837b440074068b434489500c890f8b43480342188943488b32893424e822f8ffff85 *c0740f8b431089442404893424e831e1ffff8b534085d275b083c4105b5e5fc38b4c240483f901 *741f8b110fb742f80fb752fa01d08b548104c74481040000000089d183fa0175e1c38b54240481 *fa4c09120874138b4208c742080000000089c23d4c09120875edc38b15a0ba120885d274138b42 *0c8902c7420c000000008b520885d275edc705a0ba120800000000c3565383ec048b7424108b1d *a0ba120885db740f8d4304890424ffd68b5b0885db75f183c4045b5ec3538b4424088b48308b01 *83e80c0fb7400883f82a740783f82c747feb268b41048138645b100874728138dc5b1008740e81 *38085c10087406c700645b100883c108ebc58b1183ea0c0fb7420883e82383f8067737ff2485b0 *7e11088b410489c2c1ea18c1e81025ff0000008d541015eb218b510483c203eb198b42048b10eb *118b41048b501883c202eb078b520483e21f428d0c91e96effffff5bc35557565383ec1cc74424 *14000000008b5424308b42288d448234894424108b5a30c744241800000000bd000000008d7bf8 *39c30f839d0100008b0383e80c668378082a0f851d01000089de8b43048138645b1008751085ed *0f84780100008d7bf8e970010000837c2418000f84c00000008b4424143943040f84a90000008b *4b048b110fb742fcf6840061121208010f859200000081fadc5b1008750b8b4104890424e86e29 *ffff8b4e0489c82500f00f00c1e80789ca81e20000f0ff09d08944240c8378100075128b542414 *8951048b4604c700645a1008eb4c8b46048b5424148950048b4e048139dc5b1008742e8b54240c *8b42108d04c08b15acba12088b4482148941088b54240c8b42108d04c08b4e048b15acba120889 *4c82148b4604c700445b100883c502892b897b04eb308b43048138645b100874168138dc5b1008 *740e8138085c10087406c700645b1008c7442418010000008b76048974241483c308eb66c74424 *180000000085ed74038d7bf8bd000000008b1383ea0c0fb7420883e82383f8067737ff2485cc7e *11088b430489c2c1ea18c1e81025ff0000008d541015eb218b530483c203eb198b42048b10eb11 *8b43048b501883c202eb078b520483e21f428d1c933b5c24100f8263feffff8d5f0889de8b4424 *303b7830762c8b07c1e00229c389d88b7f048d5f0829d829c689442408895c2404893424e85be9 *f3ff8b5424303b7a3077d48b44243089703083c41c5b5e5f5dc383ec0c8b442410833d78bb1208 *01750a890424e8c9fdffffeb08890424e823fdffff83c40cc38b54240489d02500f00f00c1e807 *81e20000f0ff89c109d1f6411c0174168b41103b05e8ba1208736dc705f4ba120801000000c38b *511483790c00740b8b510c8b4108894208eb068b41088942188379080074098b51088b410c8942 *0c8b41148b500c8b42143b05e8ba12087312a1e8ba12088d04c08b15acba12088b548204895114 *8b42148941108b4240894108894a4083491c01c383ec1c895c241089742414897c24188b542420 *8b7c24240fb7420c85c0740783f8017411eb298b420489c6c1ee0589c383e31feb488b42048b18 *895c240889442404893c24e840f9ffff8d3c9feb320fb7420c8b04858c30100889c6c1ee0589c3 *83e31f741bf7c60100000075098b07e823ddffff890783c704d1ee4b85dbebe389f88b5c24108b *7424148b7c241883c41cc35557565383ec0c8b6c24208b4508e8f2dcffff8945088b1083ea188d *7d0c0fb775060fb7420c83f801741783f8017f0685c07409eb3a83f8027417eb338b4204eb3989 *7424088b420489442404893c24eb14897424088b450883c018894424048d450c890424e88cf8ff *ff8d3cb7eb2e0fb7420c8b04858c30100889c3c1eb050fb7750685f67416f6c30175098b07e871 *dcffff890783c704d1eb4e75ea89f883c40c5b5e5f5dc390909083ec0c895c24088b4c241083f9 *010f84940000008b1183ea080fb7420483f811745583f8117f0783f8097450eb5d83f818743f83 *f82275538b590489d8c1e81480b8e0bc120800742489d82500f00f00c1e80789da81e20000f0ff *09d0f6401c01750a8b038941048d410589038b4908eb2d8b490ceb288b4904eb230fb7020fb752 *0201d08b4c8104eb140fb7420489442404c70424007f1108e83513ffff83f9010f856cffffff8b *5c240883c40cc35557565383ec2c8b7424403b7424440f83010300008b1683ea0c0fb7420883e8 *2383f8090f87ce020000ff2485e87f11088b6e0489e981e1ffff000083c60cbf08000000f6c101 *75338b1e89d8c1e81480b8e0bc120800742389d82500f00f00c1e80789da81e20000f0ff09d0f6 *401c0175098b0389068d4601890383c604d1e94f75c089e8c1e80e25fc0300008d74302889efc1 *ef180f846f0200008b0e89c8c1e81480b8e0bc120800742389c82500f00f00c1e80789ca81e200 *00f0ff09d0f6401c0175098b0189068d4601890183c6044f75c7e9310200008b420489c1c1e905 *83c60489c783e71f0f841b020000f6c10175338b1e89d8c1e81480b8e0bc120800742389d82500 *f00f00c1e80789da81e20000f0ff09d0f6401c0175098b0389068d4601890383c604d1e94f75c0 *e9d601000083c6048b0e89c8c1e81480b8e0bc120800742389c82500f00f00c1e80789ca81e200 *00f0ff09d0f6401c0175098b0189068d4601890183c6048b41188944242889f38d511889542424 *89442420c744241c000000008b791cbd0000000039c57361f7c70100000075338b0b89c8c1e814 *80b8e0bc120800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b018903 *8d430189014583c304f7c51f0000007512ff44241c8b44241c8b5424248b7c8204eb02d1ef3b6c *2420729f8b4424288d3486e90801000083c6048b42048b3889f389442418897c2414c744240c00 *0000008b6804c744241000000000397c24107367f7c50100000075338b0b89c8c1e81480b8e0bc *120800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d430189 *01ff44241083c304f64424101f7512ff44240c8b54240c8b4424188b6c9004eb02d1ed8b542414 *3954241072998d34beeb7189f38b46088b00a80174078b40ffa80175f98d70e88b4b0889c8c1e8 *1480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *43088d430989018d430c89442404893424e8e608000089c6eb140fb7420889442404c70424407f *1108e81810ffff3b7424440f82fffcffff83c42c5b5e5f5dc35383ec088b5c24108b4b0489c8c1 *e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b01 *8943048d430589018b4b0c89c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e2 *0000f0ff09d0f6401c01750a8b0189430c8d430d89010fb74312486683f80277358b4b1489c8c1 *e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b01 *8943148d43158901837b180074358b4b1889c8c1e81480b8e0bc120800742489c82500f00f00c1 *e80789ca81e20000f0ff09d0f6401c01750a8b018943188d431989018b43288d44833489442404 *8b4330890424e8dffbffff8b432883c00d8d048383c4085bc357565383ec108b74242085f60f84 *f00000008b0e8b1183ea080fb7420483e81c83f81f0f87ba000000ff2485108011088b410483c0 *038d3c8183c10c39f90f83b30000008b1989d8c1e81480b8e0bc120800742389d82500f00f00c1 *e80789da81e20000f0ff09d0f6401c0175098b0389018d4101890383c10439f972c6eb77890c24 *e867feffffeb6d89cf8b590889d8c1e81480b8e0bc120800742489d82500f00f00c1e80789da81 *e20000f0ff09d0f6401c01750a8b038941088d410989038b47048d44870c894424048d470c8904 *24e8fafaffffeb1e890c24e800080000eb140fb7420489442404c70424807f1108e8fe0dffff8b *760885f60f8510ffffff83c4105b5e5fc35383ec088b5c241085db74268b133b530473188b0283 *e80889542404890424e8e809000089c23b430472e88b5b0885db75da83c4085bc35557565383ec *1c8b742430897424148b068944241885f60f84ea0000008b1e3b5e040f83d4000000eb0383c304 *3b5e040f83c600000089d92b0ec1f90289cac1ea058b460c83e11fbf01000000d3e789f9230c90 *85c974d23b5e040f839b0000008b03a80174078b40ffa80175f983e80889df895c2404890424e8 *5609000089c389c529fdc1fd028b4424188d14a88b4c24148b01050010000039c276328d4f042b *0ec1f90289cac1ea0583e11fb801000000d3e089c1f7d18b460c210c908b4c24148b4908894c24 *148b01894424188b4c24188b17f6c201740b4a8b02890a89c2a80175f589178b4c24188d0ca989 *4c24183b5e040f823affffff8b760885f60f8516ffffff83c41c5b5e5f5dc35557565383ec1c8b *4424308b400489442414894424188b28c744240c0100000085c00f845c0100008b5424188b323b *72040f833a010000eb0383c6048b5c24183b73040f832801000089f18b4424182b08c1f90289ca *c1ea058b400c83e11fbb01000000d3e389d9230c9085c974ca8b4424183b70040f83f50000008d *4e042b08c1f90289cac1ea058b400c83e11fbb01000000d3e389d9230c9085c975148b44241489 *68048b5008895424148b2aff44240c89f389e98b16f6c201740b4a8b02890a89c2a80175f58913 *8b3e83ef08897c2404893424e8300400008944241039f5741789eb89f189c285c0740d8b0183c1 *04890383c3044a75f30fb74704f684006012120820743d89e981e100f00f00c1e90789e8250000 *f0ff09c18379100074238b41108d04c08b15acba12088b4482108945088b41108d04c08b15acba *1208896c821066837f043b750c896c2404893424e8eedcffff8b442410c1e00201c501c68b5c24 *183b73040f82d8feffff8b4424188b40088944241885c00f85a4feffff8b542414896a04837a08 *0074168b4208890424e8e9c0ffff8b5c2414c74308000000008b54240c8b44243089500889d083 *c41c5b5e5f5dc356538b74240c8b5e1481fb4c091208743f8b4b0889c8c1e81480b8e0bc120800 *742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943088d4309890189 *cb81f94c09120875c18b4e1489c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81 *e20000f0ff09d0f6401c01750a8b018946148d461589015b5ec357565383ec10c7042494ba1008 *ff542420833d30bc120800743b8b0d30bc120889c8c1e81480b8e0bc120800742789c82500f00f *00c1e80789ca81e20000f0ff09d0f6401c01750d8b01a330bc1208c70131bc1208833db8bc1208 *00743b8b0db8bc120889c8c1e81480b8e0bc120800742789c82500f00f00c1e80789ca81e20000 *f0ff09d0f6401c01750d8b01a3b8bc1208c701b9bc1208be010000003b3570bb1208735e8d04f6 *8b15acba12088d1c828b4b1089c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81 *e20000f0ff09d0f6401c01750a8b018943108d431189018d04f68b15acba12088d0482890424e8 *7dfeffff463b3570bb120872a28b0dd4b8120889c8c1e81480b8e0bc120800742789c82500f00f *00c1e80789ca81e20000f0ff09d0f6401c01750d8b01a3d4b81208c701d5b812088b0dbcbc1208 *89c8c1e81480b8e0bc120800742789c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175 *0d8b01a3bcbc1208c701bdbc12088b0dbcb8120885c9743a8b1989d8c1e81480b8e0bc12080074 *2389d82500f00f00c1e80789da81e20000f0ff09d0f6401c0175098b0389018d410189038b4910 *85c975c6a1c0bc1208890424e8c3f4ffffc7042494ba1008e8922fffffc7042494ba1008e8cdef *ffffbe000000003b3570bb1208737ebf000000008b15acba120889d38d04f50000000089c101f0 *3b7c820873578d140e8d04bfc1e0040344930489c38b4030890424e84efaffff8b4344890424e8 *3af9ffffa170bb12084839c67511837b0400740b8b4304890424e85ffaffff478b1dacba12088d *0cf5000000008d040e3b7c830872a9463b3570bb12087282a1b4ba12088b5804837b0400740b89 *1c24e838fbffff89430883c4105b5e5fc3538b5c24088b0b89c8c1e81480b8e0bc120800742389 *c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d430189015bc38b4424 *048b4c24080fb7510483fa3b7733ff249590801108b802000000c3b803000000c30fb7400683c0 *03c38b400483c002c38b4004ebf08b402883c00dc30fb74016c30fb7010fb751028d440201c355 *57565383ec108b5424248b4424288944240c0fb7420c85c0740a83f8017417e9a20000008b4204 *89c1c1e90589c583e51fe9ef0000008b42048b288b5c240c89442408896c2404c7042400000000 *8b7004bf0000000039ef735ff7c60100000075338b0b89c8c1e81480b8e0bc120800742389c825 *00f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d430189014783c304f7c71f *0000007510ff04248b14248b4424088b749004eb02d1ee3b7c240472a18b54240c8d14aa895424 *0ceb630fb7420c8b04858c30100889c1c1e90589c583e51f744cf6c101753b8b44240c8b1889d8 *c1e81480b8e0bc120800742789d82500f00f00c1e80789da81e20000f0ff09d0f6401c01750d8b *038b54240c890289d04089038344240c04d1e94d85edebb28b44240c83c4105b5e5f5dc3555756 *5383ec1c8b5424308b42088b00a80174078b40ffa80175f983e8188b54243083c20c895424188b *5424300fb772060fb7500c83fa01742483fa017f0985d27413e93b01000083fa020f849a000000 *e92d0100008b4004e9300100008b5c24188b40048944241489742410c744240c000000008b7804 *bd0000000039f50f83f1000000f7c70100000075338b0b89c8c1e81480b8e0bc120800742389c8 *2500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d430189014583c304f7c5 *1f0000007512ff44240c8b44240c8b5424148b7c8204eb02d1ef3b6c2410729fe98b0000008b5c *243083c30c8b5424308b42088d50188954240889742404c70424000000008b781cbd0000000039 *f5735ff7c70100000075338b0b89c8c1e81480b8e0bc120800742389c82500f00f00c1e80789ca *81e20000f0ff09d0f6401c0175098b0189038d430189014583c304f7c51f0000007510ff04248b *04248b5424088b7c8204eb02d1ef3b6c240472a18b4424188d04b089442418eb660fb7400c8b04 *858c30100889c3c1eb058b5424300fb7720685f6744af6c301753b8b4424188b0889c8c1e81480 *b8e0bc120800742789c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750d8b018b5424 *18890289d04089018344241804d1eb4e75b68b4424308b480889c8c1e81480b8e0bc120800742a *89c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175108b018b54243089420889d083c0 *0989018b44241883c41c5b5e5f5dc383ec1c895c241089742414897c24188b7424208b5c24240f *b7460483f83b0f8742040000ff2485808111088b4b0489c8c1e81480b8e0bc120800742489c825 *00f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943048d430589018d4308e91204 *00008b4b0489c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0 *f6401c01750a8b018943048d430589018b4b0889c8c1e81480b8e0bc1208000f84e602000089c8 *2500f00f00c1e80789ca81e20000f0ff09d0f6401c010f85c80200008b018943088d4309e9b902 *000089de8b4b0489c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff *09d0f6401c01750a8b018943048d430589018b4e0889c8c1e81480b8e0bc120800742489c82500 *f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018946088d460989018b4e0c89c8c1e8 *1480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *460c8d460d89018b4e1089c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e200 *00f0ff09d0f6401c01750a8b018946108d461189010fb74616e94d0200000fb7068d7c830483c3 *0439fb733a8b0b89c8c1e81480b8e0bc120800742389c82500f00f00c1e80789ca81e20000f0ff *09d0f6401c0175098b0189038d4301890183c30439fb72c60fb74602e9fc01000089de8b4b0489 *c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a *8b018943048d430589018b4e0889c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca *81e20000f0ff09d0f6401c01750a8b018946088d460989018b4e0c89c8c1e81480b8e0bc120800 *742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d890183 *7e10000f84a3000000eb6c89de8b4b0489c8c1e81480b8e0bc120800742489c82500f00f00c1e8 *0789ca81e20000f0ff09d0f6401c01750a8b018943048d430589018b4e0c89c8c1e81480b8e0bc *120800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d *89018b4e1089c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81e20000f0ff09d0 *f6401c01750a8b018946108d461189018d4314e9170100008b4b0489c8c1e81480b8e0bc120800 *742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943048d430589018d *430ce9da00000089de8b4b0889c8c1e81480b8e0bc120800742489c82500f00f00c1e80789ca81 *e20000f0ff09d0f6401c01750a8b018943088d430989018b46048d44860c894424048d460c8904 *24e8cfecffff8b46048d44860ce981000000891c24e8cbf9ffffeb778b430483c0028d0483eb6c *8b430483c0038d348383c30c39f3733a8b0b89c8c1e81480b8e0bc120800742389c82500f00f00 *c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d4301890183c30439f372c689d8eb1e *891c24e876efffffeb140fb7460489442404c70424c07f1108e866fffeff8b5c24108b7424148b *7c241883c41cc390908b5424048b44240889c1c1e90289c82342083b027d0589c823420cc35557 *565383ec0c8b7c24208b5c2424b900000000803b007434be01c8ff7fc1e1070fbe0301c189c8f7 *ee890424895424048b6c2404c1fd1389c89989e829d069c00700100029c143803b0075d189c823 *47083b077d0589c823470c83c40c5b5e5f5dc38b442408394424040f94c00fb6c0c383ec0c8b44 *2414894424048b442410890424e8b3d0f3ff85c00f94c00fb6c083c40cc383ec0cc74424047082 *1108c7042400100000e80100ffff8b4c24148b54241089448a1883c40cc35557565383ec2c8b7c *24408b1789d00347043dffff0f000f8f1301000089d085d2790505ff030000c1f80a894424288b *1789d085d279068d82ff0300002500fcffff29c2895424248b470489c5032f89e885ed79068d85 *ff030000c1f80a8944242089e885ed79068d85ff0300002500fcffff89ea29c28954241c75108b *4c2420894c2404893c24e84cffffff8b074089073b47047519c7070000000001c08947048b470c *89470801c083c80189470cff4714c744241400000000c7442418000000008b5424288b4497188b *4c24248b1c8885db74348b73088b0389442404893c24ff971810000039e8750d8b442414894308 *895c2414eb0b8b542418895308895c241889f385f675cc8b4c24288b448f188b4c24188b542424 *890c908b5424208b4497188b5424148b4c241c89148883c42c5b5e5f5dc357565383ec108b7424 *208b7c2424897c2404893424ff961810000089c185c079068d80ff03000089c3c1fb0a89c885c9 *79068d81ff0300002500fcffff89ca29c28b449e188b1c9085db741f897c24048b03890424ff96 *1c10000085c074058b4304eb0c8b5b0885db75e1b80000000083c4105b5e5fc383ec0c895c2408 *8b0d1cbb120885c9740a8b4108a31cbb1208eb3fc74424047d821108c70424fc0f0000e813fefe *ff89c18d400ca31cbb120889c28d81f00f000089c339c2730c8d420c89420889c239d872f4c742 *080000000089c88b5c240883c40cc38b542404a11cbb120889420889151cbb1208c35557565383 *ec0c8b7424208b6c2424ff46108b46148d04803946107c08893424e8b5fdffff896c2404893424 *ff961810000089c285c079068d80ff03000089c7c1ff0a89d085d279068d82ff0300002500fcff *ff89d329c3e82cffffff89288b5424288950048b54be188b149a8950088b54be1889049a83c40c *5b5e5f5dc35557565383ec0c8b742420bf000000008b44242489442404893424ff961810000089 *c285c079068d80ff030000c1f80a8944240889d085d279068d82ff0300002500fcffff89d529c5 *8b5424088b4496188b1ca885db745a8b442424894424048b03890424ff961c10000085c0743a83 *7c24280074098b542428395304752a85ff75108b4424088b5486188b43088904aaeb068b430889 *4708891c24e8cdfeffffff4e108b4304eb0e89df8b5b0885db75a6b80000000083c40c5b5e5f5d *c35557565383ec0c8b6c24248b5424208b42040302488944240885c0790505ff030000c1f80a89 *4424088b4c24208b410489c703394f89f885ff79068d87ff0300002500fcffff29c7837c240800 *785685ff78338b5424088b4c24208b4491188b1cb885db741d8b730885ed74088b4304890424ff *d5891c24e832feffff89f385f675e34f79cd8b5424088b4c24208b449118890424e8a7fcfeffbf *ff030000ff4c240879aa8b442420890424e890fcfeff83c40c5b5e5f5dc35383ec08c74424048b *821108c7042420100000e8bcfbfeff89c3c744240400000000890424e892fbffff8b53188d8200 *10000039c27315c7020000000083c2048b4318050010000039c272ebc70300000000c743040004 *0000c74308ff030000c7430cff070000c7431000000000c74314000400008b4424108983181000 *008b44241489831c10000089d883c4085bc383ec0cc744240493c31008c7042414c31008e859ff *ffff83c40cc383ec0cc7442404a2c31008c7042430c31008e83effffff83c40cc3905557565383 *ec5c8b5424708b42688b6830058800000089442430817d00d4351008750583c504eb1c817d0028 *5a10080f85a90200008b4d04894c242c83c508e95c0500008b5d00895c242c83c5048b74242c8b *060fb740fc83f8220f8789000000ff2485f08211088b44242c8b40048944242cebd98b5c242c0f *b74b068d048d0000000089ea29c289d083e8083b442430731f83ed08895d04c74500d43510088b *4c24708b41688968308b4168e9ed05000083ed08c74500d46d1008895d048d048d0000000029c5 *ba0000000039ca730d8b44930c894495004239ca72f38b5b08895c242ce9b604000083ed088b5c *242c895d04c74500d4351008e93d0200008b45000fb740fc83f824742183f8247f0e83f8230f84 *27040000e99601000083f82a0f84fa000000e9880100008b45003d1c0910087512c74424280100 *0000bf00000000e9030200003d680a100874263d480c100874073d380e1008750ac74424280100 *0000eb2f3d2810100874073d081210087512c744242801000000bf01000000e9c40100003d1416 *10087512c744242802000000bf02000000e9ab0100003de41a10087512c744242803000000bf03 *000000e9920100003d7c1d10087512c744242804000000bf04000000e9790100003d7c20100875 *12c744242805000000bf05000000e9600100003dfc2310087512c744242806000000bf06000000 *e9470100003d282810080f85a5000000c744242807000000bf07000000e92a0100008b45048138 *dc5b1008750b8b4004890424e88809ffff8b4d0489c82500f00f00c1e80789ca81e20000f0ff89 *c309d3837b100075128b44242c8941048b4504c700645a1008eb448b45048b54242c8950048b4d *048139dc5b100874268b43108d04c08b15acba12088b4482148941088b43108d04c08b4d048b15 *acba1208894c82148b4504c700445b100883c508e94bfeffff83ed088b4c242c894d04c74500d4 *3510088b5c24708b43688968308b436866c740100000e9ff0900008b550083ea0c0fb7420883e8 *2383f8067737ff24857c8311088b450489c2c1ea18c1e81025ff0000008d541015eb218b550483 *c203eb198b42048b10eb118b45048b501883c202eb078b520483e21f428b449500668378fc230f *843f0200008b7424708b46688968308b4668eb878b54242c8b020fb740fc83f81a0f842a010000 *83f81c0f85b601000089d68b42088b00668378fc1a0f85a401000083c5040fb752043b54242873 *53b90000000039d1730d8b448d0089448dfc4139d172f38b44242829d08b0485e8121208894495 *fc83ed040fb756068d04950000000029c5b90000000039d173408b448e0c89448d00410fb74606 *39c172efeb2d3b54242875330fb756068d04950000000029c5b90000000039d173118b448e0c89 *448d00410fb7460639c172ef8b76088974242ce98d0100000fb746068d440703890424e8fd32ff *ff89c3c700cc0710080fb746042b442428668943040fb7460601f8668943068b4608894308b900 *0000000fb7460689c239c1730d8b448e0c89448b0c4139d172f3b90000000039f973140fb77606 *8d14318b448d008944930c4139f972f0895c242ce98c00000083c5048b4c242c0fb759143b5c24 *28732fba0000000039da730d8b449500894495fc4239da72f38b44242829d88b0485e812120889 *449dfc83ed04e9d70000003b5c24280f84cd0000008d4703890424e84232ffff89c1c700cc0710 *0889d82b442428668941048b5c242c89590866897906ba0000000039fa730d8b4495008944910c *4239fa72f3894c242c8d6cbd00e9e2fbffff83ed088b74242c897504c74500d43510088b542470 *8b42688968308b4268e992fdffff83ed048b4c242c894d008b5d08895c242ca120bc12083b0528 *bc12080f82a700000083ed04c74500d43510088b7424708b46688968308b4668eb4f8b54950489 *54242ca120bc12083b0528bc120872798b5424708b42688968308b4268eb2ba120bc12083b0528 *bc1208722e83ed088b4c242c894d04c74500285a10088b5c24708b43688968308b436866c74010 *0100b800000000e9700800008d8538ffffff3b442430732383ed088b74242c897504c74500285a *10088b5424708b42688968308b4268e995000000c7442424010000008b4c242c8b590483c30889 *5c24208b710883c6088974241c8b410c83c00c894424188b511083c208895424148b4c24248b5c *24200fb7044b41894c242483f8330f87e7070000ff2485988311088b7424248b5424200fb70472 *46897424248d04850400000089e929c13b4c243073bd83ed088b5c242c895d04c74500285a1008 *8b7424708b46688968308b466866c740100100b801000000e99c0700008b5424248b4c24200fb7 *045142895424248b448500e9840000008b5c24248b7424200fb7045e430fb7145e43895c24248b *4485008945fc8b4495008945f8e9360100008b5424248b4c24200fb7045142895424240fb71451 *ff4424248b5c24240fb70c5943895c24248b4485008945fc8b4495008945f88b448d008945f483 *ed0ce909ffffff8b7424248b5424200fb7047246897424248b4c24188b04818945fce974020000 *8b5c24248b7424200fb7045e43895c2424c745f89c581008eb6d8b4c24248b5c24200fb7044b41 *894c2424c745f84c591008eb748b5424248b4c24200fb704514289542424c745f86c591008eb7b *8b7424248b5424200fb704724689742424c745f88c5910088b4c24188b0481eb618b5c24248b74 *24200fb7045e43895c2424c745f8b85910088b5424188b0482eb408b4c24248b5c24200fb7044b *41894c2424c745f8e05910088b7424188b0486eb1f8b5424248b4c24200fb704514289542424c7 *45f80c5a10088b5c24188b04838945fc83ed08e90efeffff83ed04c7450028101008e9fffdffff *83ed04c745001c091008e9f0fdffff83ed04c74500680a1008e9e1fdffff83ed04c74500480c10 *08e9d2fdffff83ed04c74500380e1008e9c3fdffff83ed04c7450008121008e9b4fdffff83ed04 *c7450014161008e9a5fdffff83ed04c74500e41a1008e996fdffff83ed04c745007c1d1008e987 *fdffff83ed04c745007c201008e978fdffff83ed04c74500fc231008e969fdffff83ed04c74500 *28281008e95afdffff8b7424248b4424200fb71c70460fb70c7046897424248d048d0000000029 *c5ba0000000039ca0f8d2efdffff8d041a8b74241c8b0486894495004239ca7cede916fdffff8b *4424248b5424200fb70c42400fb71c42408944242449780e8d140b8b448d00894495004979f28d *6c9d00e9e6fcffff8b4c24248b7424200fb71c4e41894c24248d430383f8037305b80300000089 *0424e8a22dffff8945fc66895806c70028081008eb3c8b4424248b5424200fb73442400fb71c42 *40894424248d430383f8027305b802000000890424e8682dffff8945fc6689580666897004c700 *cc07100883ed04e96dfcffff8b4c24248b5c24200fb7044b41894c24240fb70c4bff4424248b5c *85008b4500894308ba0000000039ca7d0d8b4495048944930c4239ca7cf38d6c8d04e92bfcffff *8b7424248b4424200fb70c7046897424248b5d008d048d0000000029c5ba0000000039ca0f8d01 *fcffff8b449304894495004239ca7cf3e9effbffff8b5424248b4c24200fb73451420fb71c5142 *895424248b5424148b04b20fb750f80fb740fa8d44100183f8027305b802000000890424e8962c *ffff89c18b5424148b04b28901ba0000000039da7d0d8b449500894491044239da7cf38d6c9dfc *894d00e987fbffff8b4c24248b5c24200fb7144b41894c24240fb70c4bff4424248b45008b000f *b740fe39d0eb468b7424248b4424200fb71470460fb70c7046897424248b45008b000fb740fe39 *d0eb4e8b4c24248b5c24200fb7144b41894c24240fb70c4bff4424248b45048b74241c3b04960f *8c15fbffffe9ff0200008b4424248b4c24200fb71441400fb70c4140894424248b45048b5c241c *3b04930f84eafaffffe9d40200008b7424248b5424200fb70472460fb714724689742424dd4504 *dd5c2440dd442440dd5c24508b4c241cdd0481dd5c2440dd442440dd5c2448dd442450dd442448 *d9c9dae9dfe09e0f8298faffffeb528b5424248b4c24200fb7045142895424240fb71451ff4424 *24dd4504dd5c2450dd442450dd5c24408b5c241cdd0483dd5c2450dd442450dd5c2448dd442440 *dd442448d9c9dae9dfe09e7a060f8444faffff89542424e93bfaffff8b4c24248b5c24200fb714 *4b41894c24240fb70c4bff4424248b4504894424348b4424348944243c8b74241c8b0496894424 *348b44243489442438d944243cd9442438d9c9dae9dfe09e0f82ebf9ffffe9d50100008b4c2424 *8b5c24200fb7144b41894c24240fb70c4bff4424248b45048944243c8b44243c894424348b7424 *1c8b04968944243c8b44243c89442438d9442434d9442438d9c9dae9dfe09e0f8a850100000f84 *90f9ffffe97a010000833dd8b81208000f8484f3ffff83ed04c74500d43510088b5424708b4268 *8968308b426866c740100100b802000000e9640100008b4d00894c242c83c504e90af4ffff83ed *04c7450038371008e9d9f5ffff83ed04c74500e4371008e9caf5ffff83ed04c7450090381008e9 *bbf5ffff83ed04c745004c391008e9acf5ffff83ed04c74500083a1008e99df5ffff83ed04c745 *0024371008e98ef5ffff8b5c24248b7424200fb7145e430fbf045e43895c242401449500e9cff8 *ffff8b4424248b5424200fb71c4240894424240fb70442ff4424248b4c241c8b3c81e808bff3ff *89c68b5424708b42688b4020890683ed54c1e31081cbff000000895d04c74500d03b10088b4268 *896830c74424040000000089d083c008890424e86bf7feff89c38b4c24708b41688b403083c054 *890424ffd7c744240400000000891c24e8d6f7feff89442470836c2470088b5c24708b43688d90 *88000000895424308b683083c5548b16895020e91df8ffff8b4c24248b5c24200fb70c4b894c24 *24e908f8ffffc704249a821108eb07c70424c0821108e84debfeff83c45c5b5e5f5dc39081ecac *000000899c24a80000008b8424b0000000894424108d5c24108d442414890424e800c1f3ffc784 *249400000000000000c744240800000000895c2404c704241a000000e8adbcf3ff8b9c24a80000 *0081c4ac000000c383ec2c895c24288b5c24308b442434890424e890ffffffe89e000000a3f0b8 *1208bad34d621089d8f7e2c1ea068954241869d2e803000029d369dbe8030000895c241c8b4424 *188b54241c8944241089542414c7442408000000008d44241089442404c7042401000000e800be *f3ff8b5c242883c42cc383ec2cc744241800000000c744241c000000008b4424188b54241c8944 *241089542414c7442408000000008d44241089442404c7042401000000e8b9bdf3ff83c42cc383 *ec1c895c2418c7442404000000008d442410890424e8dabff3ff8b4424108d1c808d1c9b8b4c24 *14baad8bdb6889c8f7eac1fa0dc1f91f29ca8d045a8b5c241883c41cc383ec0cc7042401000000 *e83101000083c40cc383ec2c895c24288b5c2434c744241400000000c744241800000000c74424 *10ffffffffc744240c22000000c744240807000000895c24048b442430890424e84abcf3ff83f8 *ff7552e890bcf3ff83380c740d833816752481fbffffffbf761c895c2404c7042480841108e835 *eafeffc7042401000000e84ce9feffe85dbcf3ff8b00890424e823bcf3ff89442404c70424df84 *1108e83fe9feff8b5c242883c42cc383ec1c895c241089742414897c24188b7c242081c7000010 *00897c2404c7042400000000e835ffffff89c389c681e6ffff0f00b80000100029f08944240489 *1c24e855bcf3ff83f8ff741a85f67e22897424048d041f29f0890424e83bbcf3ff83f8ff750cc7 *0424c0841108e8c6e8feff29f381c30000100089d88b5c24108b7424148b7c241883c41cc35653 *83ec148b74242089f3c1e314833d24bb1208007437895c2404a124bb1208890424e8abfeffff89 *c1a9ffff0f007427895c2404890424e8d3bbf3ff83f8ff750cc70424f3841108e85ee8feff891c *24e81fffffff89c18d040ba324bb1208ba0000000039f2731789d0c1e0148d0408c1e814c680e0 *bc1208014239f272e9013520bb120889c883c4145b5ec39090c70540bb120800000000c70544bb *120800000000c70548bb120800000400c7054cbb120800010000c70554bb120840000000c70558 *bb120800010000c70550bb120800000000c7055cbb120800000000c70568bb120800000000c705 *6cbb120800000840c70560bb120800000000c70564bb120800000040c70570bb120802000000c7 *0574bb120802000000c70578bb120801000000c7057cbb120800000000c70580bb120800000000 *c70584bb120800003e40c70590bb120814000000c35557565383ec0c8b6c2420e831bef3ff8b10 *eb01450fbe4500f64442012075f489efe81abef3ff8b10eb01470fbe07f6444201207505803f00 *75f039fd74688b44242483381e7e14c74424041f000000c70424a08f1108e801e7feffc7442404 *0c85110889fe29ee8d4601890424e85fe8feff89c389742408896c2404890424e84cbdf3ffc604 *1e008b5424248b028b542428891c828b442424ff0089fd803f000f8564ffffff83c40c5b5e5f5d *c35557565383ec3c8b7c245cc744241c00000000c74424042f0000008b5424548b02890424e8e9 *bbf3ff85c0740940eb0c43e9520100008b4c24548b01a330bb12088b4424508b30bb01000000c7 *00010000008b542458c70200000000833d38bb1208007415897c240889542404a138bb12088904 *24e8d7feffffc7042427851108e89cb8f3ff85c07414897c24088b4c2458894c2404890424e8b3 *feffffbd0000000039f30f8dfc0000008b5424548b049a89442404c704242e851108e889070000 *85c00f8566ffffff8b4c24548b049989442404c7042434851108e86a07000085c00f859f000000 *8b5424548b049a89442404c7042437851108e84b07000085c07407bd01000000eb728b4c24548b *049989442404c704242f851108e82907000085c07407bd00000000eb5083fd01751b8b44245883 *381e7f128b108b4c24548b04998904978b442458eb1885ed75188b4c24508b118b4c24548b0499 *8904918b442450ff00eb14c74424041f000000c70424a08f1108e831e5feff4339f30f8c25ffff *ffeb1f39f37d1b8b4c24508b118b4c24548b04998904918b442450ff004339f37ce58b5424508b *028b4c2454c70481000000008b5424588b02c7048700000000bb000000003b1a0f8dd60300008b *049f80382d7420a100171208890424e84bb7f3ff8b049f89442404c704243c851108e994030000 *8b049f0fbe400183e83f83f8390f8773030000ff2485789011088b049f83c002890424e8290500 *0085c0790505ff0f0000c1f80ca354bb1208e999010000c70588bb120801000000e9540300008b *049f80780200743683c002c744240800000000c744240400000000890424e8c7b5f3ffdd5c2428 *dd442428dd5c2430dd442430dd1d80bb1208e915030000c7057cbb120801000000e9060300008b *049f83c002c744240800000000c744240400000000890424e87fb5f3ffdd5c2430dd442430dd5c *2428dd442428dd1d60bb1208d9eedd0560bb1208e9a30000008b049f83c002890424e867040000 *c1e802a348bb1208e9e00000008b049f83c002890424e84c040000c1e802a34cbb1208e9c50000 *008b049f83c002890424e83104000085c0790505ff0f0000c1f80ca350bb1208e9a10000008b04 *9f83c002c744240800000000c744240400000000890424e8e4b4f3ffdd5c2430dd442430dd5c24 *28dd442428dd1d68bb1208dd0568bb1208d9eedde9dfe09e7768d905505b1108d9c9dae9dfe09e *0f8615020000eb558b049f83c002890424e8b5030000a370bb1208eb348b049f83c002890424e8 *a0030000a374bb1208eb1f8b049f83c002890424e88b03000085c0790505ff0f0000c1f80ca35c *bb120885c00f85c2010000eb02ddd88b049f890424e840040000e9ae010000c70544bb12080400 *0000eb16c70544bb120803000000eb0ac70544bb120802000000c744241458851108897c24108b *5424588b028944240c8b4c2454894c24088b5424508b0289442404891c24e8b9010000a340bb12 *0885c00f854f010000e942010000c70578bb120800000000e93b010000c70424c08f1108eb07c7 *042465851108e804e3feffe9190100008b049f80780200750fc70590bb120800000000e9090100 *008b049f83c002c744240800000000c744240400000000890424e882b3f3ffdd5c2430dd442430 *dd5c2428d90568901108dc4c2428d97c24260fb7442426660d000c6689442424d96c2424db5c24 *20d96c24268b4c2420ba6766666689c8f7eac1fa0389c8c1f81f29c28d149289d1c1e102740a83 *f9137f05b914000000890d90bb1208e981000000c7042400901108e94affffffc704247e851108 *e93effffffc704249b851108e932ffffffc7042440901108e926ffffff8b049f0fbe400283f863 *0f840fffffff83f8637f0685c0740deb1b83f8740f84fbfeffffeb108b049f89442404c70424b7 *851108eb0e8b049f89442404c70424d1851108e8e6e1feffc744241c01000000438b5424583b1a *0f8c2afcffff837c241c007441a100171208890424e876b3f3ffbb20131208833d201312080074 *1a8b0389442404c7042425861108e80ee2feff83c304833b0075e6c7042401000000e8ace0feff *83c43c5b5e5f5dc35557565381ec9c0000008bac24b00000008bbc24c0000000c7442404e88511 *088b04af83c002890424e82502000085c074088b3504171208eb4f8b04af807802007410c74424 *04ef85110883c002890424eb2f8b9424b80000008b02894424088b8424c4000000894424048d5c *2410891c24e803b7f3ffc7442404ef851108891c24e8d3b5f3ff89c685f675248b04af83c00289 *442408c7442404f1851108a104171208890424e85eb2f3ffe995000000bb000000003b9c24b400 *00007d288b9424b80000008b049a89442408c74424040b861108893424e82db2f3ff433b9c24b4 *0000007cd88974240cc744240805000000c744240401000000c704240f861108e883b6f3ffbb00 *0000003b9c24bc0000007d218b049f89442408c74424040b861108893424e8deb1f3ff433b9c24 *bc0000007cdf89742404c704240a000000e824b4f3ff89f081c49c0000005b5e5f5dc383ec3c89 *5c2434897c24388b5c2440803b00750ab800000000e9b3000000c744240800000000c744240400 *000000891c24e8b1b0f3ffdd5c2418dd442418dd5c2420dd442420dd5c242889dffcb9ffffffff *b000f2aef7d10fbe440bfe83f867740583f8477508d9056c901108eb3483f86d740583f84d7508 *d90570901108eb2283f86b740583f84b7508d90568901108eb1083f877740583f857750ed90574 *901108dc4c2428dd5c2428d97c24160fb7442416660d000c6689442414dd442428d96c2414db5c *2410d96c24168b4424108b5c24348b7c243883c43cc383ec0c8b44241089442404c70424158611 *08e83adffeffc7042401000000e851defeff83ec0c8b442414894424048b442410890424e850b0 *f3ff85c00f94c00fb6c083c40cc390909090909090905589e583ec20e8b100000081c125310100 *dd4508d981007cffff8975f8897dfcdde1dfe09e7619ddd8ddd831c031d28b75f88b7dfc89ec5d *c38db42600000000d97deed9c131f60fb745eed889047cffff660d000c668945ecd96decdf7de0 *d96dee8b45e089c75056df2c2483c40885c07841dd5df0dd45f0deeadde9dfe09e761ed9e031d2 *d96decdf7de0d96dee8b45e029c619d789f089faeb938d742600d96decdf7de0d96dee31d28b45 *e001c611d7ebe2d881f445ffffebb78b0c24c35589e5575683ec288b7d0cc745e8000000008b75 *088b4510c745ec0000000085ff8b5514c745f4000000000f883f01000085d20f88270100008975 *e085d289fe8945d48955e4757839f8764489fa8b45e0f775d489c78d76008dbc2700000000c745 *d000000000897de88b55d08b4df48b45e88955ec85c98b55ec7407f7d883d200f7da83c4285e5f *5dc3908d7426008b7dd485ff750eb80100000031c931d2f7f18945d489f031d2f775d48945d08b *45e0f775d489c7ebae8db42600000000397de4760b31ffeb978db426000000000fbd45e489c783 *f71f751d3b75e4770e8b55d431ff3955e00f8272ffffffbf01000000e968ffffff8b55e4b82000 *000089f929f88945dcd3e28b45d40fb64ddcd3e889f9d365d409c28b45e00fb64ddc8955e489f2 *d3ea89f9d3e60fb64ddcd3e809c689f989f0f775e4d365e089d689c78b45d4f7e739f2770f0f85 *10ffffff3b45e00f8607ffffff4fe901ffffff90f755f4f7d883d200f7dae9cafeffff90c745f4 *fffffffff7de83d700f7dfe9aefeffff909090909090909090909090905589e5575683ec308b7d *0cc745e0000000008b75088b4510c745e40000000085ff8b5514c745ec000000000f88bf010000 *85d20f88a80100008945cc8d4df085d2894de88955dc8975d8897dd4757939f8764d89f089faf7 *75cc8955d88b7de885ff741bc745e4000000008b45d88945e08b45e88b55e08b4de48910894804 *8b45ec85c0740af75df08355f400f75df48b45f08b55f483c4305e5f5dc38d76008b45cc85c075 *0db80100000031d2f775cc8945cc8b45d48b55dcf775cc8955d48b45d8f775cceb928b55d43955 *dc76148975e08b45e08955e48b55e48945f08955f4eb9b0fbd45dc89c683f61f75518b55dc3955 *d477088b4dcc394dd872128b55d48b45d82b45cc1b55dc8945d88955d48b75e885f60f8463ffff *ff8b45d88b55d48b4de88945e08b45e08955e48b55e48901895104e944ffffff908d7426008b55 *dcb82000000089f129f08b7dd48945d0d3e28b45cc0fb64dd0d3e889f1d365cc09c28b45d80fb6 *4dd08955dc8b55d4d3ea89f1d3e70fb64dd0d3e809c7897dd489f889f1f775dc8955d4d365d8f7 *65cc3b55d489c7774074398b4de885c90f84d9feffff8b4dd48b45d829f819d1894dd489ca0fb6 *4dd08945d8d3e289f1d3e809c28b45d48955e0d3e88945e4e99dfeffff3b45d876c22b7dcc1b55 *dcebbaf7d883d200f7dae94cfeffff8d7600c745ecfffffffff7de83d700f7dfe92efeffff9090 *90909090909090909090905589e5575683ec208b5514c745f0000000008b75088b7d0cc745f400 *0000008b451085d28975e889fe8945dc8955ec755f39f8762b89fa8b45e8f775dc89c790c745d8 *00000000897df08b55d88b45f08955f48b55f483c4205e5f5dc38d76008b45dc85c0750eb80100 *000031c931d2f7f18945dc89f031d2f775dc8945d88b45e8f775dc89c7ebbe8db4260000000039 *7dec760b31ffeba78db426000000000fbd45ec89c783f71f75193b75ec770a8b55dc31ff3955e8 *7286bf01000000e97cffffff8b55ecb82000000089f929f88945e4d3e28b45dc0fb64de4d3e889 *f9d365dc09c28b45e80fb64de48955ec89f2d3ea89f9d3e60fb64de4d3e809c689f989f0f775ec *d365e889d689c78b45dcf7e739f2770f0f8524ffffff3b45e80f861bffffff4fe915ffffff9090 *9090905589e58d4df0575683ec308b5514c745e0000000008b75088b7d0cc745e4000000008b45 *1085d2894dec8955dc8945cc8975d8897dd4756839f8763989f089faf775cc8955d88b4dec85c9 *741bc745e4000000008b45d88945e08b45ec8b55e08b4de489108948048b45f08b55f483c4305e *5f5dc38b75cc85f6750db80100000031d2f775cc8945cc8b45d48b55dcf775cc8955d48b45d8f7 *75cceba68d76008b55d43955dc76188975e08b45e08955e48b55e48945f08955f4ebac8d742600 *0fbd45dc89c683f61f754c8b55dc3955d477088b4dcc394dd872128b55d48b45d82b45cc1b55dc *8945d88955d48b55ec85d20f8470ffffff8b45d88b55d48b4dec8945e08b45e08955e48b55e489 *01895104e951ffffff8b55dcb82000000089f129f08b7dd48945d0d3e28b45cc0fb64dd0d3e889 *f1d365cc09c28b45d80fb64dd08955dc8b55d4d3ea89f1d3e70fb64dd0d3e809c7897dd489f889 *f1f775dc8955d4d365d8f765cc3b55d489c7774074398b45ec85c00f84ebfeffff8b4dd48b45d8 *29f819d1894dd489ca0fb64dd08945d8d3e289f1d3e809c28b45d48955e0d3e88945e4e9affeff *ff3b45d876c22b7dcc1b55dcebba90909090909090905589e5575631f65383ec0ce8a000000081 *c3d0290100e809a8f3ff8d93348cffff8d83348cffff29c2c1fa0239d6731c89d78db426000000 *008dbc2700000000ff94b3348cffff4639fe72f483c40c5b5e5f5dc38db6000000008dbf000000 *005589e583ec08891c24e84200000081c372290100897424048d83348cffff8d93348cffff29d0 *c1f80285c08d70ff7510e85b0000008b1c248b74240489ec5dc3ff94b3348cffff89f04e85c075 *f2ebe08b1c24c39090909090909090909090905589e55383ec04bb4c151208a14c15120883f8ff *74168d76008dbc270000000083eb04ffd08b0383f8ff75f4585b5dc35589e553e8000000005b81 *c3e728010052e87aadf3ff8b5dfcc9c30000000000000000000000000000000000000000000300 *0000010002003d2d3d2d000000002d3d2d3d20436162616c20657865637574696e673a20000055 *6e7265636f676e6973656420666c6167733a200000000053696d706c6520436162616c204d616b *6566696c6520696e7465726661636520646f65736e277420737570706f727420636f6d6d616e64 *3a20000000436f6e666967757265206661696c65642e000000436f6e6669677572652053756363 *65656465642e000000002d2d7072656669783d0000002d2d776974682d68632d706b673d000067 *6863006e6863393800000068756773000000002e2e2f2e2e2f446973747269627574696f6e2f4d *616b652e68733a3130307c66756e6374696f6e2073686f77484300002d2d776974682d68633d00 *002d2d776974682d68633d00002e2f636f6e66696775726520000000004275696c64206661696c *65642e0000004275696c64205375636365656465642e000000006d616b6500000000436c65616e *206661696c65642e000000436c65616e205375636365656465642e000000006d616b6520636c65 *616e0000207072656669783d000000006d616b6520696e7374616c6c00000000496e7374616c6c *206661696c65642e00496e7374616c6c205375636365656465642e00006d616b65207265676973 *7465720000006d616b6520696e7374616c6c000000005364697374206661696c65642e00000053 *64697374205375636365656465642e000000006d616b6520646973740000005061747465726e20 *6d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e *2f446973747269627574696f6e2f4d616b652e68733a3136390000000052656769737465722066 *61696c65642e000000005265676973746572205375636365656465642e006d616b652072656769 *73746572000000556e7265676973746572206661696c65642e0000556e72656769737465722053 *75636365656465642e0000006d616b6520756e7265676973746572002720726571756972657320 *616e20617267756d656e7420006f7074696f6e2060000000002d2d00002d2d00005b3d00002d2d *00002020000020200000202000002720697320616d626967756f75733b20636f756c6420626520 *6f6e65206f663a000000006f7074696f6e2060000000002d2d00002d2d00002720646f65736e27 *7420616c6c6f7720616e20617267756d656e740a000000002d2d00006f7074696f6e2060000000 *002d2d00002d2d00002d2d00002d2d0000270a0000756e7265636f676e697a6564206f7074696f *6e2060000000446973747269627574696f6e2e56657273696f6e2e56657273696f6e0000000076 *657273696f6e54616773203d2000002c20000076657273696f6e4272616e6368203d2000000000 *56657273696f6e207b0000005061747465726e206d61746368206661696c75726520696e20646f *2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5665727369 *6f6e2e68733a3132380056657273696f6e005061747465726e206d61746368206661696c757265 *20696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e *2f56657273696f6e2e68733a313238005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f56 *657273696f6e2e68733a3132380076657273696f6e4272616e63680000005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f56657273696f6e2e68733a313238005061747465726e206d6174 *6368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469 *73747269627574696f6e2f56657273696f6e2e68733a313238005061747465726e206d61746368 *206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374 *7269627574696f6e2f56657273696f6e2e68733a3132380076657273696f6e5461677300506174 *7465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20617420 *2e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68733a313238005061747465 *726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e *2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68733a313238003d3d00003e3d00 *003c3d00002d616e7900000000262600007c7c0000416e7956657273696f6e0000546869735665 *7273696f6e20000000004c6174657256657273696f6e200000004561726c69657256657273696f *6e2000556e696f6e56657273696f6e52616e6765732000496e7465727365637456657273696f6e *52616e67657320005061747465726e206d61746368206661696c75726520696e20646f20657870 *72657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68 *733a32303100496e7465727365637456657273696f6e52616e67657300005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f56657273696f6e2e68733a32303100556e696f6e56657273696f *6e52616e67657300005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e *68733a323031004561726c69657256657273696f6e00005061747465726e206d61746368206661 *696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962 *7574696f6e2f56657273696f6e2e68733a323031004c6174657256657273696f6e000000005061 *747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174 *202e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68733a3230310054686973 *56657273696f6e005061747465726e206d61746368206661696c75726520696e20646f20657870 *72657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f56657273696f6e2e68 *733a32303100416e7956657273696f6e00005061747465726e206d61746368206661696c757265 *20696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e *2f56657273696f6e2e68733a32363100446570656e64656e63790000446570656e64656e637920 *002d616e79000000007c7c00002626000047504c004c47504c0000000042534433000000004253 *4434000000005075626c6963446f6d61696e00000000416c6c5269676874735265736572766564 *0000004f746865724c6963656e7365000000004f746865724c6963656e736500000000416c6c52 *696768747352657365727665640000005075626c6963446f6d61696e0000000042534434000000 *0042534433000000004c47504c0000000047504c0043616e6e6f742066696e643a200000005761 *726e696e673a2000000020746f2000000000636f707920000000207769746820616e7920737566 *6669783a2000004572726f723a20436f756c64206e6f742066696e64206d6f64756c653a200000 *2e6100006c69624853000000746d70004f5054494f4e53004f5054494f4e535f474843004f5054 *494f4e535f4e484339380000004f5054494f4e535f48554753000000004c414e47554147450000 *0000494e434c554445007b2d2300232d7d002e6c68730000000053657475702e64657363726970 *74696f6e0000004d756c7469706c65206465736372697074696f6e2066696c657320666f756e64 *2e2020506c6561736520757365206f6e6c79206f6e65206f66203a2000000000636162616c0000 *004e6f206465736372697074696f6e2066696c6520666f756e642c20706c656173652063726561 *7465206120636162616c2d666f726d6174746564206465736372697074696f6e2066696c652077 *69746820746865206e616d65203c706b676e616d653e2e000000005468652066696c656e616d65 *202253657475702e6465736372697074696f6e2220697320646570726563617465642c20706c65 *617365206d6f766520746f203c706b676e616d653e2e0000005468652066696c656e616d652022 *53657475702e6465736372697074696f6e2220697320646570726563617465642e2020506c6561 *7365206d6f7665206f7574206f6620746865207761792e205573696e6720220000000054686520 *66696c656e616d65202253657475702e6465736372697074696f6e222069732064657072656361 *7465642e2020506c65617365206d6f7665206f7574206f6620746865207761792e205573696e67 *2022000000006275696c64696e666f0000004d756c7469706c652066696c657320776974682065 *7874656e73696f6e20000053686f7720746869732068656c7020746578740068656c7000000000 *683f000052656d6f766573202e68692c202e6f2c2070726570726f63657373656420736f757263 *65732c206574632e0a00000000436c65616e2075702061667465722061206275696c642e00636c *65616e000000436f6e74726f6c20766572626f7369747920286e20697320302d2d352c206e6f72 *6d616c20766572626f73697479206c6576656c20697320312c202d7620616c6f6e652069732065 *71756976616c656e7420746f202d763329000000766572626f7365005468697320697320746865 *206c6f6e67206465736372697074696f6e20666f72206275696c642e0a000000004d616b652074 *686973207061636b61676520726561647920666f7220696e7374616c6c6174696f6e2e00000062 *75696c64000000526571756972657320637070687320616e6420686164646f636b2e0047656e65 *7261746520486164646f636b2048544d4c20636f64652066726f6d204578706f7365642d4d6f64 *756c65732e00000000686164646f636b0047656e65726174652050726f6772616d617469636120 *50726f6a6563742e0000706665002864656661756c74292075706f6e2072656769737472617469 *6f6e2c2072656769737465722074686973207061636b61676520696e207468652073797374656d *2d77696465207061636b6167652064617461626173650000676c6f62616c000075706f6e207265 *67697374726174696f6e2c2072656769737465722074686973207061636b61676520696e207468 *6520757365722773206c6f63616c207061636b6167652064617461626173650000007573657200 *0000005b444550524543415445442c2075736520636f70795d000044495200696e7374616c6c2d *7072656669780000556e6c696b652074686520636f707920636f6d6d616e642c20696e7374616c *6c2063616c6c732074686520726567697374657220636f6d6d616e642e0a496620796f75207761 *6e7420746f20696e7374616c6c20696e746f2061206c6f636174696f6e2074686174206973206e *6f742077686174207761730a73706563696669656420696e2074686520636f6e66696775726520 *737465702c207573652074686520636f707920636f6d6d616e642e0a00000000436f7079207468 *652066696c657320696e746f2074686520696e7374616c6c206c6f636174696f6e732e2052756e *2072656769737465722e00000000696e7374616c6c007370656369667920746865206469726563 *746f727920696e20776869636820746f20706c61636520696e7374616c6c65642066696c657300 *44495200636f70792d70726566697800446f6573206e6f742063616c6c2072656769737465722c *20616e6420616c6c6f777320612070726566697820617420696e7374616c6c2074696d650a5769 *74686f75742074686520636f70792d70726566697820666c61672c20636f6e6669677572652064 *657465726d696e6573206c6f636174696f6e2e0a000000436f7079207468652066696c65732069 *6e746f2074686520696e7374616c6c206c6f636174696f6e732e0000636f707900000000546869 *7320697320746865206c6f6e67206465736372697074696f6e20666f722073646973742e0a0000 *000047656e6572617465206120736f7572636520646973747269627574696f6e2066696c652028 *2e7461722e677a206f72202e7a6970292e000073646973740000002864656661756c7429207570 *6f6e20726567697374726174696f6e2c2072656769737465722074686973207061636b61676520 *696e207468652073797374656d2d77696465207061636b6167652064617461626173650000676c *6f62616c000075706f6e20726567697374726174696f6e2c207265676973746572207468697320 *7061636b61676520696e2074686520757365722773206c6f63616c207061636b61676520646174 *616261736500000075736572000000005468697320697320746865206c6f6e6720646573637269 *7074696f6e20666f722072656769737465722e0a0052656769737465722074686973207061636b *61676520776974682074686520636f6d70696c65722e0000000072656769737465720000000054 *68697320697320746865206c6f6e67206465736372697074696f6e20666f7220756e7265676973 *7465722e0a000000556e72656769737465722074686973207061636b6167652077697468207468 *6520636f6d70696c65722e0000756e72656769737465720000205b464c4147535d0a0a466c6167 *7320666f722000000000205b474c4f42414c20464c4147535d200000000055736167653a200055 *6e657870656374656420666c616721000000004572726f72733a2000000000556e657870656374 *656420666c616721000000002d2d696e7374616c6c2d7072656669782069732064657072656361 *7465642e2055736520636f707920636f6d6d616e6420696e73746561642e0000002d2d696e7374 *616c6c2d70726566697820697320646570726563617465642e2055736520636f707920636f6d6d *616e6420696e73746561642e0000004572726f72733a2000000000556e65787065637465642066 *6c616721000000004572726f72733a2000000000556e657870656374656420666c616721000000 *004572726f72733a20000000005061747465726e206d61746368206661696c75726520696e2064 *6f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475 *702e68733a3734000000004f74686572436f6d70696c657200000048656c69756d000048424300 *48756773000000004e48430047484300474843004e48430048756773000000004842430048656c *69756d00004f74686572436f6d70696c65722000006769766520746865207061746820746f2063 *7070687300005041544800000000776974682d6370706873000067697665207468652070617468 *20746f20687363326873005041544800000000776974682d687363326873006769766520746865 *207061746820746f20616c65780000005041544800000000776974682d616c6578000000676976 *6520746865207061746820746f20686170707900005041544800000000776974682d6861707079 *00006769766520746865207061746820746f20686164646f636b00000000504154480000000077 *6974682d686164646f636b0000000062616b6520746869732070726566697820696e2070726570 *61726174696f6e206f6620696e7374616c6c6174696f6e00444952007072656669780000676976 *6520746865207061746820746f20746865207061636b61676520746f6f6c000000504154480000 *0000776974682d68632d706b67006769766520746865207061746820746f206120706172746963 *756c617220636f6d70696c657200005041544800000000776974682d636f6d70696c6572000000 *636f6d70696c65207769746820687567730000006875677300000000636f6d70696c6520776974 *68204e4843000000006e686300636f6d70696c6520776974682047484300000000676863005468 *697320697320746865206c6f6e67206465736372697074696f6e20666f7220636f6e6669677572 *652e0a000000005072657061726520746f206275696c6420746865207061636b6167652e000000 *636f6e66696775726500000020434f4d4d414e44202d2d68656c70272e0000000a466f72206d6f *726520696e666f726d6174696f6e2061626f7574206120636f6d6d616e642c2074727920270000 *0000202020200000000020200000436f6d6d616e64733a000000205b474c4f42414c20464c4147 *535d20434f4d4d414e44205b464c4147535d0a0a476c6f62616c20666c6167733a000055736167 *653a20004572726f72733a004e6f20636f6d6d616e6420676976656e2028747279202d2d68656c *70290000002028747279202d2d68656c7029000000556e7265636f676e6973656420636f6d6d61 *6e643a200000556e657870656374656420666c616721000000004572726f72733a200000000050 *61747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e2061 *74202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a373700000000436f6d *70696c6572000000005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e6873 *3a3737000000005061747465726e206d61746368206661696c75726520696e20646f2065787072 *657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a37 *3700000000636f6d70696c6572466c61766f7200005061747465726e206d61746368206661696c *75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574 *696f6e2f53657475702e68733a3737000000005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f53657475702e68733a3737000000005061747465726e206d61746368206661696c75726520 *696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f *53657475702e68733a373700000000636f6d70696c657256657273696f6e005061747465726e20 *6d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e *2f446973747269627574696f6e2f53657475702e68733a3737000000005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f53657475702e68733a3737000000005061747465726e206d617463 *68206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973 *747269627574696f6e2f53657475702e68733a373700000000636f6d70696c6572506174680000 *00005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f *6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a373700000000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a3737000000005061 *747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174 *202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68733a373700000000636f6d70 *696c6572506b67546f6f6c005061747465726e206d61746368206661696c75726520696e20646f *2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5365747570 *2e68733a3737000000005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f53657475702e68 *733a373700000000636f6d70696c6572506b67546f6f6c203d2000002c200000636f6d70696c65 *7250617468203d20002c200000636f6d70696c657256657273696f6e203d2000002c200000636f *6d70696c6572466c61766f72203d20000000436f6d70696c6572207b0000636f6e666967507265 *666978203d20002c200000636f6e6669674370706873203d2000002c200000636f6e6669674873 *63326873203d20002c200000636f6e666967416c6578203d200000002c200000636f6e66696748 *61707079203d2000002c200000636f6e666967486164646f636b203d20000000002c200000636f *6e6669674863506b67203d2000002c200000636f6e666967486350617468203d20002c20000063 *6f6e6669674863466c61766f72203d20000000436f6e666967466c616773207b00000048656c70 *436d6400556e7265676973746572436d640000005265676973746572436d642000000000534469 *7374436d6400000000496e7374616c6c436d64200050726f6772616d6174696361436d64004861 *64646f636b436d640000436f7079436d642000000000436c65616e436d64000000004275696c64 *436d6400000000436f6e666967436d642000004c69667420000000566572626f73652000000000 *496e7374507265666978200048656c70466c616700000000476c6f62616c466c61670000557365 *72466c61670000000057697468437070687320000057697468487363326873200057697468416c *65782000000057697468486170707920000057697468486164646f636b20000000005072656669 *782000576974684863506b6720000057697468436f6d70696c65722000000048756773466c6167 *000000004e6863466c616700476863466c6167002220646f65736e27742065786973742e204361 *6e6e6f7420636f6e74696e75652e0000004572726f722050617273696e673a2066696c65202200 *0000556e6b6e6f776e206669656c642027005061747465726e206d61746368206661696c757265 *20696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e *2f5061636b6167654465736372697074696f6e2e68733a31373700004275696c64496e666f0000 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e20646f20 *65787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167 *654465736372697074696f6e2e68733a31373700006275696c6461626c65000000506174746572 *6e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f *2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31 *373700005061747465726e206d61746368206661696c75726520696e20646f2065787072657373 *696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269 *7074696f6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e20 *646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f506163 *6b6167654465736372697074696f6e2e68733a313737000063634f7074696f6e73000000506174 *7465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20617420 *2e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68 *733a31373700005061747465726e206d61746368206661696c75726520696e20646f2065787072 *657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573 *6372697074696f6e2e68733a31373700005061747465726e206d61746368206661696c75726520 *696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f *5061636b6167654465736372697074696f6e2e68733a31373700006c644f7074696f6e73000000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765 *4465736372697074696f6e2e68733a31373700005061747465726e206d61746368206661696c75 *726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962757469 *6f6e2f5061636b6167654465736372697074696f6e2e68733a31373700006672616d65776f726b *7300005061747465726e206d61746368206661696c75726520696e20646f206578707265737369 *6f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363726970 *74696f6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e2064 *6f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b *6167654465736372697074696f6e2e68733a31373700005061747465726e206d61746368206661 *696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962 *7574696f6e2f5061636b6167654465736372697074696f6e2e68733a313737000063536f757263 *6573000000005061747465726e206d61746368206661696c75726520696e20646f206578707265 *7373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363 *72697074696f6e2e68733a31373700005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f50 *61636b6167654465736372697074696f6e2e68733a31373700005061747465726e206d61746368 *206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374 *7269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000687353 *6f75726365446972005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544 *65736372697074696f6e2e68733a31373700005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a31373700005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000 *6f746865724d6f64756c6573000000005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f50 *61636b6167654465736372697074696f6e2e68733a31373700005061747465726e206d61746368 *206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374 *7269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000506174 *7465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20617420 *2e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68 *733a3137370000657874656e73696f6e7300005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a31373700005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a313737000065787472614c6962730000005061747465726e206d6174636820666169 *6c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472696275 *74696f6e2f5061636b6167654465736372697074696f6e2e68733a31373700005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137 *3700005061747465726e206d61746368206661696c75726520696e20646f206578707265737369 *6f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363726970 *74696f6e2e68733a313737000065787472614c696244697273000000005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137370000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765 *4465736372697074696f6e2e68733a3137370000696e636c75646544697273005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3137 *3700005061747465726e206d61746368206661696c75726520696e20646f206578707265737369 *6f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363726970 *74696f6e2e68733a31373700005061747465726e206d61746368206661696c75726520696e2064 *6f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b *6167654465736372697074696f6e2e68733a3137370000696e636c756465730000000050617474 *65726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e *2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e6873 *3a31373700005061747465726e206d61746368206661696c75726520696e20646f206578707265 *7373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363 *72697074696f6e2e68733a31373700005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f50 *61636b6167654465736372697074696f6e2e68733a31373700006f7074696f6e73005061747465 *726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e *2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a *31373700005061747465726e206d61746368206661696c75726520696e20646f20657870726573 *73696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372 *697074696f6e2e68733a31373700006f7074696f6e73203d2000002c200000696e636c75646573 *203d20002c200000696e636c75646544697273203d2000002c20000065787472614c6962446972 *73203d20002c20000065787472614c696273203d20000000002c200000657874656e73696f6e73 *203d200000002c2000006f746865724d6f64756c6573203d20002c2000006873536f7572636544 *6972203d2000002c20000063536f7572636573203d20002c2000006672616d65776f726b73203d *200000002c2000006c644f7074696f6e73203d20000000002c20000063634f7074696f6e73203d *20000000002c2000006275696c6461626c65203d20000000004275696c64496e666f207b006873 *2d736f757263652d646972000000756e696f6e3a2054776f206e6f6e2d656d707479206669656c *647320666f756e6420696e20756e696f6e20617474656d70743a20000000006578706f7365642d *6d6f64756c6573007465737465642d7769746800617574686f72000063617465676f7279000000 *006465736372697074696f6e0073796e6f70736973000000007061636b6167652d75726c00686f *6d65706167650000000073746162696c6974790000006275696c642d646570656e64730000006d *61696e7461696e65720000636f707972696768740000006c6963656e73652d66696c6500000000 *6c6963656e73650076657273696f6e006e616d65000000002e2e2e006d61696e2d697300657865 *63757461626c6500006f7074696f6e732d6e6863006f7074696f6e732d68756773000000006f70 *74696f6e732d676863006f746865722d6d6f64756c657300000068732d736f757263652d646972 *000000696e636c7564652d6469727300000000696e636c756465730000000065787472612d6c69 *622d64697273000065787472612d6c6962730000657874656e73696f6e730000632d736f757263 *65730000006672616d65776f726b7300006c642d6f7074696f6e73000063632d6f7074696f6e73 *00006275696c6461626c6500000065786563757461626c653a006572726f7220696e2070617273 *696e67206275696c64696e666f2066696c652e2045787065637465642065786563757461626c65 *207374616e7a610065786563757461626c650000657870656374696e6720276578656375746162 *6c652720617420746f70206f66207374616e7a61005061747465726e206d61746368206661696c *75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574 *696f6e2f5061636b6167654465736372697074696f6e2e68733a34383500006578656375746162 *6c650000546869732073686f756c646e27742068617070656e21000065786563757461626c6500 *002745786563757461626c6527207374616e7a61207374617274696e672077697468206669656c *6420270000006d61696e2d697300207374616e7a61004e6f20274d61696e2d497327206669656c *6420666f756e6420666f72200000005061747465726e206d61746368206661696c75726520696e *20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061 *636b6167654465736372697074696f6e2e68733a343437000053616e69747920436865636b2057 *61726e696e673a2000004e6f206578706f736564206d6f64756c6573206f722065786563757461 *626c657320696e2074686973207061636b6167652e00004e6f2065786563757461626c65732061 *6e64206e6f206c69627261727920666f756e642e204e6f7468696e6720746f20646f2e00706163 *6b616765206964656e746966696572206d616c666f726d65642c2065697468657220656d707479 *206e616d65206f7220656d7074792076657273696f6e000000004e6f6e2d656d707479206c6962 *726172792c2062757420656d707479206578706f736564206d6f64756c6573206c6973742e2043 *6162616c206d6179206e6f74206275696c642074686973206c69627261727920636f7272656374 *6c790000005061747465726e206d61746368206661696c75726520696e20646f20657870726573 *73696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372 *697074696f6e2e68733a31333400004c696272617279005061747465726e206d61746368206661 *696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962 *7574696f6e2f5061636b6167654465736372697074696f6e2e68733a3133340000506174746572 *6e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f *2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31 *333400006578706f7365644d6f64756c657300005061747465726e206d61746368206661696c75 *726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962757469 *6f6e2f5061636b6167654465736372697074696f6e2e68733a31333400005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31333400 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a31333400006c69624275696c64496e666f000000005061747465726e206d617463 *68206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973 *747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31333400005061 *747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174 *202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e *68733a31333400005061747465726e206d61746368206661696c75726520696e20646f20657870 *72657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465 *736372697074696f6e2e68733a323131000045786563757461626c6500005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a32313100 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a32313100006578654e616d65005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a32313100005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3231310000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a32313100006d6f64756c655061746800005061747465726e206d6174636820666169 *6c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472696275 *74696f6e2f5061636b6167654465736372697074696f6e2e68733a32313100005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3231 *3100005061747465726e206d61746368206661696c75726520696e20646f206578707265737369 *6f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363726970 *74696f6e2e68733a32313100006275696c64496e666f0000005061747465726e206d6174636820 *6661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472 *69627574696f6e2f5061636b6167654465736372697074696f6e2e68733a323131000050617474 *65726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e *2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e6873 *3a32313100006c69624275696c64496e666f203d20002c2000006578706f7365644d6f64756c65 *73203d200000004c696272617279207b0000006275696c64496e666f203d20000000002c200000 *6d6f64756c6550617468203d200000002c2000006578654e616d65203d20000045786563757461 *626c65207b000000005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544 *65736372697074696f6e2e68733a31313100005061636b6167654465736372697074696f6e0000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765 *4465736372697074696f6e2e68733a31313100007061636b616765005061747465726e206d6174 *6368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469 *73747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a313131000050 *61747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e2061 *74202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e *2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544 *65736372697074696f6e2e68733a31313100006c6963656e7365005061747465726e206d617463 *68206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973 *747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061 *747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174 *202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e *68733a31313100005061747465726e206d61746368206661696c75726520696e20646f20657870 *72657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465 *736372697074696f6e2e68733a31313100006c6963656e736546696c65005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f20 *65787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167 *654465736372697074696f6e2e68733a3131310000636f70797269676874000000506174746572 *6e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f *2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31 *313100005061747465726e206d61746368206661696c75726520696e20646f2065787072657373 *696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269 *7074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20 *646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f506163 *6b6167654465736372697074696f6e2e68733a31313100006d61696e7461696e65720000506174 *7465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20617420 *2e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68 *733a31313100005061747465726e206d61746368206661696c75726520696e20646f2065787072 *657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573 *6372697074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520 *696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f *5061636b6167654465736372697074696f6e2e68733a3131310000617574686f72000050617474 *65726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e *2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e6873 *3a31313100005061747465726e206d61746368206661696c75726520696e20646f206578707265 *7373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544657363 *72697074696f6e2e68733a31313100005061747465726e206d61746368206661696c7572652069 *6e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f50 *61636b6167654465736372697074696f6e2e68733a313131000073746162696c69747900000050 *61747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e2061 *74202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e *2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f206578 *7072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61676544 *65736372697074696f6e2e68733a31313100005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a313131000074657374656457697468 *00005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f *6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074 *696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20646f *2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61 *67654465736372697074696f6e2e68733a31313100005061747465726e206d6174636820666169 *6c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472696275 *74696f6e2f5061636b6167654465736372697074696f6e2e68733a3131310000686f6d65706167 *65000000005061747465726e206d61746368206661696c75726520696e20646f20657870726573 *73696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372 *697074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e *20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061 *636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d6174636820 *6661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472 *69627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3131310000706b6755 *726c00005061747465726e206d61746368206661696c75726520696e20646f2065787072657373 *696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269 *7074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520696e20 *646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f506163 *6b6167654465736372697074696f6e2e68733a31313100005061747465726e206d617463682066 *61696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269 *627574696f6e2f5061636b6167654465736372697074696f6e2e68733a313131000073796e6f70 *736973000000005061747465726e206d61746368206661696c75726520696e20646f2065787072 *657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573 *6372697074696f6e2e68733a31313100005061747465726e206d61746368206661696c75726520 *696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f *5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d617463 *68206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973 *747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100006465 *736372697074696f6e005061747465726e206d61746368206661696c75726520696e20646f2065 *787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765 *4465736372697074696f6e2e68733a31313100005061747465726e206d61746368206661696c75 *726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962757469 *6f6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100 *0063617465676f7279000000005061747465726e206d61746368206661696c75726520696e2064 *6f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b *6167654465736372697074696f6e2e68733a31313100005061747465726e206d61746368206661 *696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962 *7574696f6e2f5061636b6167654465736372697074696f6e2e68733a3131310000506174746572 *6e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f *2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31 *313100006275696c64446570656e6473000000005061747465726e206d61746368206661696c75 *726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44697374726962757469 *6f6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b616765446573637269707469 *6f6e2e68733a31313100006c696272617279005061747465726e206d61746368206661696c7572 *6520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f *6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e206d61 *746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f44 *6973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3131310000 *5061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e20 *6174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f *6e2e68733a313131000065786563757461626c6573005061747465726e206d6174636820666169 *6c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469737472696275 *74696f6e2f5061636b6167654465736372697074696f6e2e68733a31313100005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167654465736372697074696f6e2e68733a3131 *31000065786563757461626c6573203d2000002c2000006c696272617279203d2000002c200000 *6275696c64446570656e6473203d20002c20000063617465676f7279203d20002c200000646573 *6372697074696f6e203d2000002c20000073796e6f70736973203d20002c200000706b6755726c *203d200000002c200000686f6d6570616765203d20002c20000074657374656457697468203d20 *0000002c20000073746162696c697479203d20000000002c200000617574686f72203d20000000 *2c2000006d61696e7461696e6572203d200000002c200000636f70797269676874203d20000000 *002c2000006c6963656e736546696c65203d2000002c2000006c6963656e7365203d2000002c20 *00007061636b616765203d2000005061636b6167654465736372697074696f6e207b0000000070 *6b6756657273696f6e203d200000002c200000706b674e616d65203d2000005061636b61676549 *64656e746966696572207b005061747465726e206d61746368206661696c75726520696e20646f *2065787072657373696f6e206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b61 *67652e68733a353200005061636b6167654964656e7469666965720000005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167652e68733a353200005061747465726e206d6174 *6368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f4469 *73747269627574696f6e2f5061636b6167652e68733a35320000706b674e616d65005061747465 *726e206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e *2f2e2e2f446973747269627574696f6e2f5061636b6167652e68733a353200005061747465726e *206d61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e *2e2f446973747269627574696f6e2f5061636b6167652e68733a353200005061747465726e206d *61746368206661696c75726520696e20646f2065787072657373696f6e206174202e2e2f2e2e2f *446973747269627574696f6e2f5061636b6167652e68733a35320000706b6756657273696f6e00 *005061747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e *206174202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167652e68733a3532000050 *61747465726e206d61746368206661696c75726520696e20646f2065787072657373696f6e2061 *74202e2e2f2e2e2f446973747269627574696f6e2f5061636b6167652e68733a353200002e2e2f *2e2e2f446973747269627574696f6e2f436f6d7061742f52656164502e68733a3131387c66756e *6374696f6e206d706c7573000000646f206e6f74207573652072656164535f746f5f5020696e20 *67617468657221000000005041544800000000636f707946696c653a20736f7572636520616e64 *2064657374696e6174696f6e20617265207468652073616d652066696c650000484f4d45000000 *002e2e00002e2e0000736f000022220000206c696e652e0a00206c696e65206265666f72652000 *00003a2000004c696e6520000000206c696e652e0a00206c696e65206265666f7265200000003a *200000206174206c696e6520000000496e2066696c652000000000206c696e652e0a00206c696e *65206265666f7265200000003a2000004c696e65200000002e2e2f2e2e2f446973747269627574 *696f6e2f50726550726f636573732f556e6c69742e68733a33357c66756e6374696f6e20636c61 *737369667900656e647b636f64657d000000626567696e7b636f64657d00636f6d6d656e740070 *726f6772616d0070726f6772616d00636f6d6d656e7400556e736166654f7665726c617070696e *67496e7374616e636573000048657265446f63756d656e74730000005265737472696374656454 *79706553796e6f6e796d730000457874656e7369626c655265636f7264730000004e616d656446 *69656c6450756e7300004e6f496d706c696369745072656c75646500000047656e657269637300 *0000004172726f77730000436f6e74657874537461636b00000000496e6c696e65506861736500 *416c6c6f77496e636f686572656e74496e7374616e63657300000000416c6c6f77556e64656369 *6461626c65496e7374616e636573000000416c6c6f774f7665726c617070696e67496e7374616e *636573000000466f726569676e46756e6374696f6e496e746572666163650000000054656d706c *6174654861736b656c6c005479706553796e6f6e796d496e7374616e6365730000000043505000 *456d707479446174614465636c730000466c657869626c65496e7374616e636573000000466c65 *7869626c65436f6e746578747300000000496d706c69636974506172616d73000053636f706564 *547970655661726961626c6573004578697374656e7469616c5175616e74696669636174696f6e *000000506f6c796d6f7270686963436f6d706f6e656e747300000052616e6b4e54797065730000 *46756e6374696f6e616c446570656e64656e6369657300004e6f4d6f6e6f6d6f72706869736d52 *65737472696374696f6e0000004d756c7469506172616d54797065436c61737365730000005061 *72616c6c656c4c697374436f6d7000000000526563757273697665446f004f7665726c61707069 *6e67496e7374616e63657300000000556e736166654f7665726c617070696e67496e7374616e63 *6573000048657265446f63756d656e7473000000526573747269637465645479706553796e6f6e *796d730000457874656e7369626c655265636f7264730000004e616d65644669656c6450756e73 *00004e6f496d706c696369745072656c75646500000047656e6572696373000000004172726f77 *730000436f6e74657874537461636b00000000496e6c696e65506861736500416c6c6f77496e63 *6f686572656e74496e7374616e63657300000000416c6c6f77556e646563696461626c65496e73 *74616e636573000000416c6c6f774f7665726c617070696e67496e7374616e636573000000466f *726569676e46756e6374696f6e496e746572666163650000000054656d706c6174654861736b65 *6c6c005479706553796e6f6e796d496e7374616e6365730000000043505000456d707479446174 *614465636c730000466c657869626c65496e7374616e636573000000466c657869626c65436f6e *746578747300000000496d706c69636974506172616d73000053636f7065645479706556617269 *61626c6573004578697374656e7469616c5175616e74696669636174696f6e000000506f6c796d *6f7270686963436f6d706f6e656e747300000052616e6b4e5479706573000046756e6374696f6e *616c446570656e64656e6369657300004e6f4d6f6e6f6d6f72706869736d526573747269637469 *6f6e0000004d756c7469506172616d54797065436c6173736573000000506172616c6c656c4c69 *7374436f6d7000000000526563757273697665446f004f7665726c617070696e67496e7374616e *636573000000002d666e6f2d696d706c696369742d7072656c7564650000002d6667656e657269 *637300002d666172726f7773000000002d66636f6e746578742d737461636b002d66696e6c696e *652d706861736500002d66616c6c6f772d696e636f686572656e742d696e7374616e6365730000 *00002d66616c6c6f772d756e646563696461626c652d696e7374616e6365730000002d66616c6c *6f772d6f7665726c617070696e672d696e7374616e6365730000002d666669000000002d667468 *000000002d66676c6173676f772d6578747300002d637070000000002d66676c6173676f772d65 *78747300002d66676c6173676f772d6578747300002d66676c6173676f772d6578747300002d66 *696d706c696369742d706172616d730000002d66676c6173676f772d6578747300002d66676c61 *73676f772d6578747300002d66676c6173676f772d6578747300002d66676c6173676f772d6578 *747300002d66676c6173676f772d6578747300002d666e6f2d6d6f6e6f6d6f72706869736d2d72 *65737472696374696f6e0000002d66676c6173676f772d6578747300002d66676c6173676f772d *6578747300002d66676c6173676f772d6578747300002d66616c6c6f772d6f7665726c61707069 *6e672d696e7374616e6365730000002b4f00002b4800002d3938002d3938002d3938002d393800 *2d3938002d3938002d3938002d3938002d3938002d3938002d3938002d3938002d3938002b6f00 *002d70756e730000002d637070000000002d2b2f5f2e0000005f272e00416d6269676f75735061 *7273652000004e6f5061727365200000000046726f6d537472696e6720003a20416d6269676f75 *7320706172736520696e206669656c642027004c696e652000000027206661696c656400000000 *3a205061727365206f66206669656c64202700004c696e65200000003a2000004c696e65200000 *002d2b2f5f2e00000050617273654661696c6564200000000050617273654f6b20000000002061 *6e642000000020697320646566696e6564206f6e20626f7468206c696e65200000005468652066 *69656c642000003a20496e76616c69642073796e74617820286e6f20636f6c6f6e206166746572 *206669656c64206e616d6529000000004c696e652000db0f49400000003f0000003f0000003f00 *00003f0000003fdb0f4940182d4454fb2109400000003fdb0f49400000003f0000003f0000003f *0000003f0000003fdb0f4940182d4454fb2109400000003fdb0f49400000003f0000003f000000 *3f0000003f0000003fdb0f4940182d4454fb2109400000003f0000f4010d08dd010d08a2010d08 *a2010d08d6010d08a2010d08cc010d08a2010d08a2010d08c0010d08a2010d08b9010d08a2010d *08a2010d08a2010d08626b0d086f6b0d08746b0d08796b0d087e6b0d08836b0d08886b0d088d6b *0d08926b0d08976b0d089c6b0d08a16b0d08a66b0d08ab6b0d08b06b0d08b56b0d08ba6b0d08bf *6b0d08c46b0d08c96b0d08ce6b0d08d36b0d08d86b0d08dd6b0d08e26b0d08e76b0d08ef6b0d08 *f76b0d08ff6b0d08076c0d080f6c0d08176c0d0817750d0821750d0821750d0821750d0821750d *081c750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d082175 *0d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821 *750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d08 *21750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d *0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d0821750d082175 *0d0821750d0821750d0821750d0821750d0812750d0821750d0821750d0821750d0821750d08ea *740d08f4740d0821750d0821750d0821750d08f9740d0821750d0821750d0821750d0821750d08 *21750d0821750d0821750d08fe740d0821750d0821750d0821750d0803750d0821750d0808750d *0821750d080d750d08ca840d0892840d08a0840d08a0840d0868840d086f840d08a0840d085b84 *0d0884840d08ca840d08a0840d085b840d085b840d0892840d08ca840d0884840d08bc840d0876 *840d08c3840d08c3840d087d840d087d840d0884840d085b840d085b840d0899840d08bc840d08 *92840d085b840d08c3840d0892840d085b840d08ae840d0884840d08c3840d08bc840d0884840d *085b840d08c3840d08a7840d0884840d08ca840d08a0840d08ae840d08ca840d08ca840d08ca84 *0d08ca840d08ca840d08ca840d08ca840d08ca840d08ca840d08ca840d08ca840d08ca840d08ca *840d08ca840d08ca840d08ca840d0884840d08a0840d08b5840d085b840d08a0840d08ca840d08 *99840d08ae840d08ca840d08a7840d08ae840d088b840d08c3840d08ca840d087d840d08ca840d *08ca840d08ca840d08ae840d08ca840d08ca840d08ca840d08ca840d08ca840d0884840d08ca84 *0d08ca840d085b840d0884840d0884840d085b840d088b840d08c3840d088b840d08c3840d08c3 *840d08c3840d08c3840d08bc840d08c3840d08ae840d08a0840d08ae840d08ca840d08ae840d08 *5b840d0876840d0884840d0899840d085b840d08b5840d08a0840d08a0840d08a0840d0876840d *0876840d08ae840d08ca840d08ca840d08ca840d08ca840d08ca840d0892840d08db0f49400000 *003f0000003f0000003f0000003f0000003fdb0f4940182d4454fb2109400000003fdb0f494000 *00003f0000003f0000003f0000003f0000003fdb0f4940182d4454fb2109400000003ff0a80e08 *e6a80e08dfa80e08d8a80e08d1a80e08caa80e08c3a80e08bca80e08b5a80e08aea80e08a7a80e *08a0a80e0899a80e0892a80e088ba80e0884a80e087da80e0876a80e0866a80e08f6c70e08ffc7 *0e0823c80e0811c80e082cc80e0808c80e081ac80e0835c80e08db0f49400000003f0000003f00 *00003f0000003f0000003fdb0f4940182d4454fb2109400000003fdb0f49400000003f0000003f *0000003f0000003f0000003fdb0f4940182d4454fb2109400000003fdb0f49400000003f000000 *3f0000003f0000003f0000003fdb0f4940182d4454fb2109400000003f6c6f636b46696c653a20 *6664206f7574206f662072616e6765002d63002f62696e2f736800000000000000000000000000 *000000000000000000000000000000000000006d61696e20746872656164206578697465642028 *756e63617567687420657863657074696f6e290000000000000000000000000000000000000000 *00000000006d61696e2074687265616420636f6d706c65746564207769746820696e76616c6964 *207374617475730025733a20756e63617567687420657863657074696f6e0025733a20696e7465 *727275707465640025733a2052657475726e20636f64652028256429206e6f74206f6b00746f6f *206d616e792068735f657869742829730000000000000000000000000000000000000000000000 *00000000000000000068735f6164645f726f6f742829206d7573742062652063616c6c65642061 *667465722068735f696e697428290025733a20696e7465726e616c206572726f723a200025733a *2000256c7500256c752c25332e336c7500256c7525332e336c7500256c752c25332e336c752c25 *332e336c7500256c7525332e336c7525332e336c7500256c752c25332e336c752c25332e336c75 *2c25332e336c7500256c7525332e336c7525332e336c7525332e336c7500000000000000000000 *00000000000020202020506c65617365207265706f727420746869732061732061206275672074 *6f20676c6173676f772d6861736b656c6c2d62756773406861736b656c6c2e6f72672c0a202020 *206f7220687474703a2f2f7777772e736f75726365666f7267652e6e65742f70726f6a65637473 *2f6768632f0a0000000000000000000000415353455254494f4e204641494c45443a2066696c65 *2025732c206c696e652025750a0000000000000000000000000000000000000000000000000000 *000000646561646c6f636b3a206d61696e2074687265616420626c6f636b656420696e20612073 *7472616e6765207761790000000000000000000000000000000000007363686564756c653a2069 *6e76616c696420776861745f6e657874206669656c640000000000000000000000000000000000 *00000000000000000000000000007363686564756c653a20696e76616c69642074687265616420 *72657475726e20636f646520256400000000000000000000000000000000000000000000000000 *726573756d655468726561643a20746872656164206e6f7420666f756e640000756e626c6f636b *54687265616420284d564152293a2054534f206e6f7420666f756e640000000000000000000000 *000000000000000000000000000000000000756e626c6f636b5468726561642028424c41434b48 *4f4c45293a2054534f206e6f7420666f756e640000000000000000000000000000000000000000 *00000000756e626c6f636b5468726561642028457863657074696f6e293a2054534f206e6f7420 *666f756e64000000000000000000000000000000000000000000000000756e626c6f636b546872 *6561642028492f4f293a2054534f206e6f7420666f756e64000000000000000000000000000000 *000000000000000000000000000000756e626c6f636b546872656164202864656c6179293a2054 *534f206e6f7420666f756e64000000000000000000000000000000000000000000000000000000 *00726573757272656374546872656164733a2074687265616420626c6f636b656420696e206120 *737472616e676520776179000000000000000000000000000000697320626c6f636b6564206f6e *2064656c69766572696e6720616e20657863657074696f6e20746f207468726561642025640000 *000000000000000000000000697320626c6f636b6564206f6e20616e2065787465726e616c2063 *616c6c0000697320626c6f636b6564206f6e20616e2065787465726e616c2063616c6c20286578 *63657074696f6e73207765726520616c726561647920626c6f636b656429000000000000000000 *00000000000000000000000000000000000000000000007072696e74546872656164426c6f636b *6167653a20737472616e67652074736f2d3e7768795f626c6f636b65643a20256420666f722054 *534f2025642028256429000000a0ca0f08a3cb0f08f1cb0f0814cc0f082ecc0f0851d60f08efd4 *0f0837d50f086ad50f08aed50f08aed50f0818d60f08a6d70f08b1d70f08b1d70f089fd70f089f *d70f0881d70f0897d70f086eda0f0879da0f0879da0f0867da0f0867da0f0849da0f085fda0f08 *57db0f08ecda0f0835db0f0811db0f08b9da0f08cada0f08dbda0f0879db0f089bdb0f08666f72 *6b50726f63657373007761697454687265616400756e626c6f636b546872656164007261697365 *4173796e6300697320626c6f636b6564206f6e20726561642066726f6d20666420256400697320 *626c6f636b6564206f6e20777269746520746f20666420256400697320626c6f636b656420756e *74696c20256400697320626c6f636b6564206f6e20616e204d56617200697320626c6f636b6564 *206f6e206120626c61636b20686f6c65006973206e6f7420626c6f636b65640068617320626565 *6e206b696c6c65640068617320636f6d706c6574656400616c6c20746872656164733a0a000974 *6872656164202564204020257020005b222573225d200041776169744576656e740025640a0073 *656c6563740073656c656374206661696c65640061776169744576656e74006d6f72655f68616e *646c65727300746f6f206d616e792070656e64696e67207369676e616c73007374675f7369675f *696e7374616c6c3a20626164207370690000000000000000000000000000000000000000000000 *000000000000007761726e696e673a206661696c656420746f20696e7374616c6c20534947494e *542068616e646c657200000000000000000000000000000000000000000000007761726e696e67 *3a206661696c656420746f20696e7374616c6c20534947434f4e542068616e646c657200656e6c *61726765537461626c655074725461626c65000000000000000000000000000000000000000000 *000000000000000000000020202020416c6c6f6320202020436f6c6c656374202020204c697665 *2020202047432020202047432020202020544f542020202020544f5420205061676520466c7473 *0a0000000000000000000000000000000000000000000000000000000020202020627974657320 *202020206279746573202020202062797465732020757365722020656c61702020202075736572 *20202020656c61700a000000000000737461745f696e69743a206261642063616c6c20746f2027 *737973636f6e6627210a0000000000000000000000000000000000000000000000000000000000 *002025352e32662025352e32662025372e32662025372e32662025346c642025346c6420202847 *656e3a2025326c64290a000000000000000000000000000000002531317320627974657320616c *6c6f636174656420696e2074686520686561700a00000000000000000000000000000000000000 *00000000000000000000000025313173206279746573206d6178696d756d207265736964656e63 *792028256c642073616d706c65287329290a000000000000000000000000000000000000002531 *316420636f6c6c656374696f6e7320696e2067656e65726174696f6e202564202825362e326673 *290a0000000000000000000000000000000000000000000a2531316c64204d6220746f74616c20 *6d656d6f727920696e207573650a0a002020494e4954202074696d65202025362e326673202028 *25362e32667320656c6170736564290a0000000000000000000000000000000000000000000000 *000020204d555420202074696d65202025362e32667320202825362e32667320656c6170736564 *290a00000000000000000000000000000000000000000000000000202047432020202074696d65 *202025362e32667320202825362e32667320656c6170736564290a000000000000000000000000 *00000000000000000000000000202045584954202074696d65202025362e32667320202825362e *32667320656c6170736564290a0000000000000000000000000000000000000000000000000020 *20546f74616c2074696d65202025362e32667320202825362e32667320656c6170736564290a0a *0000000000000000000000000000000000000000000000002020252547432074696d6520202020 *2025352e31662525202028252e3166252520656c6170736564290a0a0000000000000000000000 *000000000000000000002020416c6c6f6320726174652020202025732062797465732070657220 *4d5554207365636f6e640a0a000000000000000000000000000000000000000000000020205072 *6f6475637469766974792025352e31662525206f6620746f74616c20757365722c20252e316625 *25206f6620746f74616c20656c61707365640a0a002564204743732c20256c642f256c64206176 *672f6d6178206279746573207265736964656e63792028256c642073616d706c6573292c20256c *754d20696e207573652c20252e326620494e49542028252e326620656c6170736564292c20252e *3266204d55542028252e326620656c6170736564292c20252e32662047432028252e326620656c *617073656429203a6768633e3e0a00696e6974537461747300204743200025396c642025396c64 *2025396c640008080820200808080025396c642025392e39732025392e3973002025352e326620 *25352e32660a0a002531317320627974657320636f7069656420647572696e672047430a003c3c *6768633a20256c6c752062797465732c200000000000c8420000805f0000804f000000006d6178 *696d756d20686561702073697a6520282d4d2920697320736d616c6c6572207468616e206d696e *696d756d20616c6c6f6320617265612073697a6520282d41290000000000000000000000000000 *0000000000000000000000000000005741524e494e473a20636f6d70616374696f6e2069732069 *6e636f6d70617469626c652077697468202d47313b2064697361626c656400696e697453746f72 *6167653a2067656e7300696e697453746f726167653a206c617374207374657000696e69745374 *6f726167653a207374657073000a4661696c3a200000000000006d616c6c6f633a206661696c65 *64206f6e207265717565737420666f7220256c752062797465733b206d6573736167653a202573 *0a000000000000000000000048656170206578686175737465643b0a43757272656e74206d6178 *696d756d20686561702073697a6520697320256c752062797465732028256c75204d62293b0a75 *736520602b525453202d4d3c73697a653e2720746f20696e6372656173652069742e0a00000000 *0000000000000000000000000000000000000000000000537461636b207370616365206f766572 *666c6f773a2063757272656e742073697a6520256c642062797465732e0a55736520602b525453 *202d4b73697a652720746f20696e6372656173652069742e0a00000000b9071008b9071008b907 *1008b9071008b9071008b9071008b9071008be071008be071008be071008be071008be071008be *071008be071008be071008b9071008be071008b9071008be071008b4071008b4071008b4071008 *b4071008b407100804091008040910080409100804091008040910080409100804091008090910 *080909100809091008090910080909100809091008090910080909100804091008090910080409 *100809091008ff081008ff081008ff081008ff081008ff0810087374675f61705f765f72657400 *7374675f61705f665f726574007374675f61705f645f726574007374675f61705f6c5f72657400 *7374675f61705f6e5f726574007374675f61705f705f726574007374675f61705f70765f726574 *007374675f61705f70705f726574007374675f61705f7070765f726574007374675f61705f7070 *705f726574007374675f61705f707070705f726574007374675f61705f70707070705f72657400 *7374675f61705f7070707070705f726574007374675f61705f707070707070705f726574000000 *4b0910084b0910084b0910084b0910084b0910084b0910084b0910083a0a10083a0a10083a0a10 *083a0a10083a0a10083a0a10083a0a10083a0a1008380910083a0a1008990910083a0a1008480a *1008480a1008480a1008480a1008480a1008500a1008500a1008500a1008500a1008500a100850 *0a1008500a1008500a1008500a1008500a10083a0a10083a0a10083a0a10083a0a10083a0a1008 *d60a1008d60a1008d60a1008d60a1008d60a1008d60a1008d60a10081a0c10081a0c10081a0c10 *081a0c10081a0c10081a0c10081a0c10081a0c1008840a10081a0c1008340b10081a0c1008280c *1008280c1008280c1008280c1008280c1008300c1008300c1008300c1008300c1008300c100830 *0c1008300c1008300c1008300c1008300c10081a0c10081a0c10081a0c10081a0c10081a0c1008 *b90c1008b90c1008b90c1008b90c1008b90c1008b90c1008b90c1008070e1008070e1008070e10 *08070e1008070e1008070e1008070e1008070e1008640c1008070e10081a0d1008070e1008150e *1008150e1008150e1008150e1008150e10081d0e10081d0e10081d0e10081d0e10081d0e10081d *0e10081d0e10081d0e10081d0e10081d0e1008070e1008070e1008070e1008070e1008070e1008 *a90e1008a90e1008a90e1008a90e1008a90e1008a90e1008a90e1008f70f1008f70f1008f70f10 *08f70f1008f70f1008f70f1008f70f1008f70f1008540e1008f70f10080a0f1008f70f10080510 *1008051010080510100805101008051010080d1010080d1010080d1010080d1010080d1010080d *1010080d1010080d1010080d1010080d101008f70f1008f70f1008f70f1008f70f1008f70f1008 *96101008961010089610100896101008961010089610100896101008da111008da111008da1110 *08da111008da111008da111008da111008da11100844101008da111008f4101008da111008e811 *1008e8111008e8111008e8111008e8111008f0111008f0111008f0111008f0111008f0111008f0 *111008f0111008f0111008f0111008f0111008da111008da111008da111008da111008da111008 *76121008761210087612100876121008761210087612100876121008ba131008ba131008ba1310 *08ba131008ba131008ba131008ba131008ba13100824121008ba131008d4121008ba131008c813 *1008c8131008c8131008c8131008c8131008d0131008d0131008d0131008d0131008d0131008d0 *131008d0131008d0131008d0131008d0131008ba131008ba131008ba131008ba131008ba131008 *6a1410086a1410086a1410086a1410086a1410086a1410086a141008e3151008e3151008e31510 *08e3151008e3151008e3151008e3151008e315100804141008e3151008e2141008e3151008f115 *1008f1151008f1151008f1151008f1151008f9151008f9151008f9151008f9151008f9151008f9 *151008f9151008f9151008f9151008f9151008e3151008e3151008e3151008e3151008e3151008 *991610089916100899161008991610089916100899161008991610081c1810081c1810081c1810 *081c1810081c1810081c1810081c1810081c181008301610081c181008141710081c1810082a18 *10082a1810082a1810082a1810082a181008321810083218100832181008321810083218100832 *181008321810083218100832181008321810081c1810081c1810081c1810081c1810081c181008 *f2181008f2181008f2181008f2181008f2181008f2181008f2181008b31a1008b31a1008b31a10 *08b31a1008b31a1008b31a1008b31a1008b31a100868181008b31a10088a191008b31a1008c11a *1008c11a1008c11a1008c11a1008c11a1008c91a1008c91a1008c91a1008c91a1008c91a1008c9 *1a1008c91a1008c91a1008c91a1008c91a1008b31a1008b31a1008b31a1008b31a1008b31a1008 *8a1b10088a1b10088a1b10088a1b10088a1b10088a1b10088a1b10084b1d10084b1d10084b1d10 *084b1d10084b1d10084b1d10084b1d10084b1d1008001b10084b1d1008221c10084b1d1008591d *1008591d1008591d1008591d1008591d1008611d1008611d1008611d1008611d1008611d100861 *1d1008611d1008611d1008611d1008611d10084b1d10084b1d10084b1d10084b1d10084b1d1008 *421e1008421e1008421e1008421e1008421e1008421e1008421e10084d2010084d2010084d2010 *084d2010084d2010084d2010084d2010084d201008981d10084d201008fd1e10084d2010085b20 *10085b2010085b2010085b2010085b201008632010086320100863201008632010086320100863 *201008632010086320100863201008632010084d2010084d2010084d2010084d2010084d201008 *68211008682110086821100868211008682110086821100868211008cc231008cc231008cc2310 *08cc231008cc231008cc231008cc231008cc23100898201008cc2310084c221008cc231008da23 *1008da231008da231008da231008da231008e2231008e2231008e2231008e2231008e2231008e2 *231008e2231008e2231008e2231008e2231008cc231008cc231008cc231008cc231008cc231008 *22251008222510082225100822251008222510082225100822251008f7271008f7271008f72710 *08f7271008f7271008f7271008f7271008f727100818241008f72710083d261008f72710080528 *1008052810080528100805281008052810080d2810080d2810080d2810080d2810080d2810080d *2810080d2810080d2810080d2810080d281008f7271008f7271008f7271008f7271008f7271008 *83291008832910088329100883291008832910088329100883291008c92c1008c92c1008c92c10 *08c92c1008c92c1008c92c1008c92c1008c92c100844281008c92c1008d32a1008c92c1008d72c *1008d72c1008d72c1008d72c1008d72c1008df2c1008df2c1008df2c1008df2c1008df2c1008df *2c1008df2c1008df2c1008df2c1008df2c1008c92c1008c92c1008c92c1008c92c1008c92c1008 *323410083d3410083d3410082734100827341008093410081f341008f4351008f4351008f43510 *08f4351008f4351008f4351008f4351008f9351008f9351008f9351008f9351008f9351008f935 *1008f9351008f9351008f4351008f9351008f4351008f9351008ef351008ef351008ef351008ef *351008ef35100854534f206f626a65637420656e74657265642100455641435541544544206f62 *6a65637420656e746572656421005745414b206f626a65637420656e7465726564210044454144 *5f5745414b206f626a65637420656e746572656421004e4f5f46494e414c495a4552206f626a65 *637420656e74657265642100464f524549474e206f626a65637420656e74657265642100535441 *424c455f4e414d45206f626a65637420656e7465726564210046554c4c5f4d564152206f626a65 *637420656e74657265642100454d5054595f4d564152206f626a65637420656e74657265642100 *454e445f54534f5f5155455545206f626a65637420656e74657265642100454e445f4d55545f4c *495354206f626a65637420656e746572656421004d55545f434f4e53206f626a65637420656e74 *657265642100454e445f455843455054494f4e5f4c495354206f626a65637420656e7465726564 *2100455843455054494f4e5f434f4e53206f626a65637420656e746572656421004152525f574f *524453206f626a65637420656e746572656421004d55545f4152525f50545253206f626a656374 *20656e746572656421004d55545f4152525f505452535f46524f5a454e206f626a65637420656e *746572656421004d55545f564152206f626a65637420656e746572656421009d5e10089d5e1008 *9d5e10089d5e10089d5e10089d5e10089d5e1008a25e1008a25e1008a25e1008a25e1008a25e10 *08a25e1008a25e1008a25e10089d5e1008a25e10089d5e1008a25e1008985e1008985e1008985e *1008985e1008985e1008f85e1008f85e1008f85e1008f85e1008f85e1008f85e1008f85e1008fd *5e1008fd5e1008fd5e1008fd5e1008fd5e1008fd5e1008fd5e1008fd5e1008f85e1008fd5e1008 *f85e1008fd5e1008f35e1008f35e1008f35e1008f35e1008f35e10084c5f10084c5f10084c5f10 *084c5f10084c5f10084c5f10084c5f1008515f1008515f1008515f1008515f1008515f1008515f *1008515f1008515f10084c5f1008515f10084c5f1008515f1008475f1008475f1008475f100847 *5f1008475f1008845f1008845f1008845f1008845f1008845f1008845f1008845f1008895f1008 *895f1008895f1008895f1008895f1008895f1008895f1008895f1008845f1008895f1008845f10 *08895f10087f5f10087f5f10087f5f10087f5f10087f5f1008d85f1008d85f1008d85f1008d85f *1008d85f1008d85f1008d85f1008dd5f1008dd5f1008dd5f1008dd5f1008dd5f1008dd5f1008dd *5f1008dd5f1008d85f1008dd5f1008d85f1008dd5f1008d35f1008d35f1008d35f1008d35f1008 *d35f10081060100810601008106010081060100810601008106010081060100815601008156010 *081560100815601008156010081560100815601008156010081060100815601008106010081560 *10080b6010080b6010080b6010080b6010080b6010086460100864601008646010086460100864 *601008646010086460100869601008696010086960100869601008696010086960100869601008 *69601008646010086960100864601008696010085f6010085f6010085f6010085f6010085f6010 *089c6010089c6010089c6010089c6010089c6010089c6010089c601008a1601008a1601008a160 *1008a1601008a1601008a1601008a1601008a16010089c601008a16010089c601008a160100897 *60100897601008976010089760100897601008f0601008f0601008f0601008f0601008f0601008 *f0601008f0601008f5601008f5601008f5601008f5601008f5601008f5601008f5601008f56010 *08f0601008f5601008f0601008f5601008eb601008eb601008eb601008eb601008eb6010082861 *10082861100828611008286110082861100828611008286110082d6110082d6110082d6110082d *6110082d6110082d6110082d6110082d611008286110082d611008286110082d61100823611008 *236110082361100823611008236110087c6110087c6110087c6110087c6110087c6110087c6110 *087c61100881611008816110088161100881611008816110088161100881611008816110087c61 *1008816110087c611008816110087761100877611008776110087761100877611008b4611008b4 *611008b4611008b4611008b4611008b4611008b4611008b9611008b9611008b9611008b9611008 *b9611008b9611008b9611008b9611008b4611008b9611008b4611008b9611008af611008af6110 *08af611008af611008af6110080862100808621008086210080862100808621008086210080862 *10080d6210080d6210080d6210080d6210080d6210080d6210080d6210080d621008086210080d *621008086210080d62100803621008036210080362100803621008036210084062100840621008 *406210084062100840621008406210084062100845621008456210084562100845621008456210 *08456210084562100845621008406210084562100840621008456210083b6210083b6210083b62 *10083b6210083b6210089462100894621008946210089462100894621008946210089462100899 *621008996210089962100899621008996210089962100899621008996210089462100899621008 *94621008996210088f6210088f6210088f6210088f6210088f621008cc621008cc621008cc6210 *08cc621008cc621008cc621008cc621008d1621008d1621008d1621008d1621008d1621008d162 *1008d1621008d1621008cc621008d1621008cc621008d1621008c7621008c7621008c7621008c7 *621008c76210082063100820631008206310082063100820631008206310082063100825631008 *256310082563100825631008256310082563100825631008256310082063100825631008206310 *08256310081b6310081b6310081b6310081b6310081b6310085863100858631008586310085863 *10085863100858631008586310085d6310085d6310085d6310085d6310085d6310085d6310085d *6310085d631008586310085d631008586310085d63100853631008536310085363100853631008 *53631008ac631008ac631008ac631008ac631008ac631008ac631008ac631008b1631008b16310 *08b1631008b1631008b1631008b1631008b1631008b1631008ac631008b1631008ac631008b163 *1008a7631008a7631008a7631008a7631008a7631008e4631008e4631008e4631008e4631008e4 *631008e4631008e4631008e9631008e9631008e9631008e9631008e9631008e9631008e9631008 *e9631008e4631008e9631008e4631008e9631008df631008df631008df631008df631008df6310 *08386410083864100838641008386410083864100838641008386410083d6410083d6410083d64 *10083d6410083d6410083d6410083d6410083d641008386410083d641008386410083d64100833 *641008336410083364100833641008336410087064100870641008706410087064100870641008 *706410087064100875641008756410087564100875641008756410087564100875641008756410 *08706410087564100870641008756410086b6410086b6410086b6410086b6410086b641008c464 *1008c4641008c4641008c4641008c4641008c4641008c4641008c9641008c9641008c9641008c9 *641008c9641008c9641008c9641008c9641008c4641008c9641008c4641008c9641008bf641008 *bf641008bf641008bf641008bf641008fc641008fc641008fc641008fc641008fc641008fc6410 *08fc6410080165100801651008016510080165100801651008016510080165100801651008fc64 *100801651008fc64100801651008f7641008f7641008f7641008f7641008f76410085065100850 *651008506510085065100850651008506510085065100855651008556510085565100855651008 *55651008556510085565100855651008506510085565100850651008556510084b6510084b6510 *084b6510084b6510084b6510088865100888651008886510088865100888651008886510088865 *10088d6510088d6510088d6510088d6510088d6510088d6510088d6510088d651008886510088d *651008886510088d6510088365100883651008836510088365100883651008dc651008dc651008 *dc651008dc651008dc651008dc651008dc651008e1651008e1651008e1651008e1651008e16510 *08e1651008e1651008e1651008dc651008e1651008dc651008e1651008d7651008d7651008d765 *1008d7651008d76510081466100814661008146610081466100814661008146610081466100819 *661008196610081966100819661008196610081966100819661008196610081466100819661008 *14661008196610080f6610080f6610080f6610080f6610080f6610086866100868661008686610 *08686610086866100868661008686610086d6610086d6610086d6610086d6610086d6610086d66 *10086d6610086d661008686610086d661008686610086d66100863661008636610086366100863 *66100863661008a0661008a0661008a0661008a0661008a0661008a0661008a0661008a5661008 *a5661008a5661008a5661008a5661008a5661008a5661008a5661008a0661008a5661008a06610 *08a56610089b6610089b6610089b6610089b6610089b661008f4661008f4661008f4661008f466 *1008f4661008f4661008f4661008f9661008f9661008f9661008f9661008f9661008f9661008f9 *661008f9661008f4661008f9661008f4661008f9661008ef661008ef661008ef661008ef661008 *ef6610082c6710082c6710082c6710082c6710082c6710082c6710082c67100831671008316710 *083167100831671008316710083167100831671008316710082c671008316710082c6710083167 *100827671008276710082767100827671008276710088067100880671008806710088067100880 *671008806710088067100885671008856710088567100885671008856710088567100885671008 *85671008806710088567100880671008856710087b6710087b6710087b6710087b6710087b6710 *086d616c6c6f634279746573525758000000000000000000000000000000000000000000000000 *000000000000667265654861736b656c6c46756e6374696f6e5074723a206e6f7420666f72206d *652c20677576212025700a006d61696e2074687265616420686173206265656e20474327640074 *726176657273655f7765616b5f7074725f6c6973740065766163756174653a20737461636b2066 *72616d652061742025700a00000000484374726176657273655f7765616b5f7074725f6c697374 *3a206e6f74205745414b0000000000000000000000000000000000000000000000000000000000 *00000065766163756174653a20737472616e676520636c6f737572652074797065202564000000 *000000000000000000000000000000000000000000000000000000006576616c5f7468756e6b5f *73656c6563746f723a20737472616e67652073656c656374656520256400000000000000000000 *000000000000000000000000000073636176656e67653a20756e696d706c656d656e7465642f73 *7472616e676520636c6f7375726520747970652025642040202570000000000000000000000000 *73636176656e67655f6d61726b5f737461636b3a20756e696d706c656d656e7465642f73747261 *6e676520636c6f73757265207479706520256420402025700073636176656e67655f6f6e653a20 *737472616e6765206f626a6563742025640073636176656e67655f6d75745f6f6e63655f6c6973 *743a20737472616e6765206f626a6563743f202564000000000000000000000000000000000000 *0000000073636176656e67655f6d757461626c655f6c6973743a20737472616e6765206f626a65 *63743f202564000000000000000000000000000000000000000000000073636176656e67655f73 *74617469633a20737472616e676520636c6f737572652025640000000000000000000000000000 *00000000000000000000000000000073636176656e67655f737461636b3a207765697264206163 *7469766174696f6e207265636f726420666f756e64206f6e20737461636b3a20256400006f9210 *08a58d10089d8c1008628c10084d8d10084d8d10084d8d100843901008439010081b9010084390 *1008a58d10089d8c10089d8c10084d8d10084d8d10084d8d1008dc8f1008a58d1008f58c1008f5 *8c1008f58c1008f58c1008f58c1008b88f1008d38e1008038e10085a9010085a901008b4901008 *1192100811921008a58d1008a58d1008fc8f10084a9010084a9010084a9010084a9010084a9010 *084a9010086f9210084a9010084a9010084a9010085a8e10085a8e10087b8e10085a8e10085a8e *1008048c100856911008a8911008a8911008048c10086f921008a58d1008a58d1008a58d10080a *9210086f9210086f9210086f9210086f9210080d911008e69310083e9310083e9310083e931008 *3e9310083e9310083e931008e6931008e69310083e9310083e931008e6931008e6931008e69310 *08e6931008e6931008e6931008e6931008fa931008fa931008fa931008fa931008fa931008fa93 *1008fa931008af931008e6931008fa931008e6931008fa931008a7931008a7931008a7931008a7 *931008a7931008e6931008e6931008e6931008e6931008e6931008e6931008e6931008e6931008 *e6931008e6931008fa931008fa931008fa931008fa931008fa931008e6931008e6931008e69310 *08e6931008e6931008e6931008e6931008e6931008e6931008e6931008e6931008e6931008e693 *1008e6931008fa931008519b100885981008b39610082897100837961008cc991008d799100851 *9b1008519b1008519b1008519b1008229810087d961008f2961008d1951008e097100867971008 *519b10085198100847961008c096100804961008a997100830971008519b1008cc991008ac9810 *080c9a10080c9a1008df991008519b1008519b1008e1981008f3981008519b1008519b1008519b *1008519b1008519b1008519b1008519b1008519b1008519b1008519b1008519b1008d7991008d7 *99100878991008d7991008d79910084d9510081b9a1008269a1008b29a100858991008c0991008 *859810088598100885981008e29a1008b79f10080e9e1008ee9e1008cf9f1008b49c1008ee9e10 *08cf9f1008b79f1008b79f1008b79f1008b79f1008ab9d1008c49c10083d9d10084e9c1008c49c *10083d9d1008b79f1008da9d1008fe9c10086f9d1008819c1008fe9c10086f9d1008b79f1008ee *9e1008359e1008249f1008249f1008fe9e1008b79f1008669e1008cf9f1008669e1008b79f1008 *b79f1008b79f1008b79f1008b79f1008b79f1008b79f1008b79f1008b79f1008b79f1008b79f10 *08cf9f1008cf9f1008de9e1008cf9f1008cf9f10081e9c1008cf9f1008319f1008669f1008c49e *1008ab9f10080e9e10080e9e10080e9e10088f9f1008daa2100878a1100878a1100878a1100878 *a1100878a1100878a11008daa21008daa21008daa21008daa2100878a1100878a1100878a11008 *78a1100878a1100878a11008daa2100878a1100878a1100878a1100878a1100878a1100878a110 *08daa210089fa11008daa21008d0a21008d0a21008ada21008daa21008eea2100878a1100878a1 *1008daa21008daa21008daa21008daa21008daa21008daa21008daa21008daa21008daa21008da *a21008daa21008eea21008eea21008daa21008eea21008eea21008daa21008eea21008afa11008 *1ca21008daa21008daa2100878a1100878a11008daa210084ca21008f3a4100837a51008f3a410 *0837a5100837a5100837a5100837a5100837a5100837a5100837a5100837a5100837a5100837a5 *100837a5100837a5100837a51008dda4100837a5100837a51008b0a4100837a510081da410084f *a41008dda4100837a5100837a5100837a5100837a51008d3a41008eea710087fa710087fa71008 *1ba810081ba8100842a810088aa810086ca710087fa710087fa710085eaa100869aa100869aa10 *0857aa100857aa100839aa10084faa100831ac10083cac10083cac10082aac10082aac10080cac *100822ac10080000000000000000000000000000000000000000000000007468726561645f7374 *617469633a20737472616e676520636c6f73757265202564000000000000000000000000000000 *000000000000000000000000000000007468726561645f737461636b3a20776569726420616374 *69766174696f6e207265636f726420666f756e64206f6e20737461636b3a202564000000000000 *00007570646174655f6677645f6c617267653a20756e6b6e6f776e2f737472616e6765206f626a *6563742020256400000000000000000000000000000000000000007570646174655f6677643a20 *756e6b6e6f776e2f737472616e6765206f626a6563742020256400007ab010081fb010081fb010 *0848b1100848b1100875af1008dfb110081fb010081fb010081fb010084cb41008fdb3100856b4 *100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856 *b4100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856b4100856b41008 *56b410086ab41008a3b31008a3b3100856b4100856b4100856b4100856b4100856b41008f3b310 *0812bb100812bb1008e6ba1008e6ba1008ecba1008ecba1008ecba100812bb100812bb100812bb *100812bb100812bb1008e6ba1008e6ba1008ecba1008ecba1008ecba100812bb100812bb1008ec *ba1008ecba1008ecba1008ecba1008ecba100812bb1008ecba10080dbb1008f2ba1008f2ba1008 *01bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb10 *0812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb100812bb *100812bb100812bb1008faba100801bb100801bb100812bb100812bb100812bb100812bb100812 *bb100806bb1008eec2100844c01008b3be1008e8be1008f0be1008ebc1100820c21008eec21008 *eec21008eec21008eec2100844c01008b3be1008e8be1008f0be1008ebc1100820c21008eec210 *0844c01008ebc1100820c21008f0be1008ebc1100820c21008eec21008ebc1100865bf100881c2 *100881c2100828c21008eec21008ebc1100844c01008ebc11008eec21008eec21008eec21008ee *c21008eec21008eec21008eec21008eec21008eec21008eec21008eec2100844c0100844c01008 *44c0100844c0100844c0100842c110088bc2100896c2100896c2100844c0100844c0100895c010 *0844c0100844c01008e4c21008616c6c6f635365676d656e7400616c6c6f63486173684c697374 *00616c6c6f63486173685461626c6500696e7465727072657442434f3a20686974206120434153 *454641494c00000000000000000000696e7465727072657442434f3a20756e6b6e6f776e206f72 *20756e696d706c656d656e746564206f70636f6465000000bac91008d0c91008d0c91008d0c910 *08d0c91008d0c91008d0c91008d0c91008d0c91008d0c91008d0c91008d0c91008d0c91008d0c9 *1008d0c91008d0c91008d0c91008d0c91008bac91008bac91008bac91008bac91008bac91008ba *c91008bac91008bac91008d0c9100845c91008d0c91008bac9100838c9100838c9100838c91008 *38c9100838c91008eccb1008f7cb1008f7cb1008e5cb1008e5cb1008c7cb1008ddcb10080fd710 *082fcf10087fcf100899cf1008c2cf100805d0100825d010083fd0100859d0100873d0100894d0 *1008b5d01008d6d01008b4d1100800d110081ed110082dd110083cd110080fd110084bd110085a *d1100869d1100878d1100887d1100896d11008a5d11008f8d1100828d210085dd21008a1d21008 *e3d210081fd31008d0d31008fed31008d3d4100828d5100829d4100878d4100887d31008add310 *0806d71008f1d610083fd6100820d6100883d51008b7d51008c6d51008d5d51008e4d51008f3d5 *100802d6100811d610080000000000000000000000000000000000000000000000006f7574206f *66206d656d6f727920287265717565737465642025642062797465732900000000000000000000 *000000000000000000000000000000000000000067656e5f6d61705f6d626c6f636b733a206d75 *6e6d6170206661696c6564006765744d426c6f636b3a206d6d61703a202573006765744d426c6f *636b3a206d756e6d6170206661696c656400527473466c6167732e633a73706c6974527473466c *616773282900474843525453002d2d525453002d2d002b52545300756e65787065637465642052 *545320617267756d656e743a2025730025302e313232732e7374617400474843206e6f74206275 *696c7420666f723a202d70726f6600474843206e6f74206275696c7420666f723a202d70617261 *6c6c656c00474843206e6f74206275696c7420666f723a202d6772616e73696d00696e636f6d70 *6c65746520525453206f7074696f6e3a20257300756e6b6e6f776e20525453206f7074696f6e3a *2025730073746465727200770043616e2774206f70656e2073746174732066696c652025730a00 *257320002b525453200062616420525453206f7074696f6e3a2025730000000000000000000000 *000000000000000000000000000055736167653a203c70726f673e203c617267733e205b2b5254 *53203c7274736f7074733e207c202d525453203c617267733e5d202e2e2e202d2d525453203c61 *7267733e000000000000000000000000000000000000000000000000000000002020202b525453 *20202020496e646963617465732072756e2074696d652073797374656d206f7074696f6e732066 *6f6c6c6f77000000000000000000000000002020202d52545320202020496e6469636174657320 *70726f6772616d20617267756d656e747320666f6c6c6f77000000000000000000000000000000 *0000000020202d2d52545320202020496e64696361746573207468617420414c4c207375627365 *7175656e7420617267756d656e74732077696c6c20626520676976656e20746f20746865000000 *00000000000000000000000000000000000000000000202020202020202020202070726f677261 *6d2028696e636c7564696e6720616e79206f662074686573652052545320666c61677329000000 *000000000000000054686520666f6c6c6f77696e672072756e2074696d652073797374656d206f *7074696f6e732061726520617661696c61626c653a00000000000000000000000020202d3f2020 *20202020205072696e74732074686973206d65737361676520616e642065786974733b20746865 *2070726f6772616d206973206e6f74206578656375746564000000000000000000000000000000 *00000000000000000000000020202d4b3c73697a653e205365747320746865206d6178696d756d *20737461636b2073697a65202864656661756c7420314d2920204567733a202d4b33326b202020 *2d4b3531326b00000000000000000000000000000000000000000000000020202d6b3c73697a65 *3e20536574732074686520696e697469616c2074687265616420737461636b2073697a65202864 *656661756c7420316b2920204567733a202d6b346b2020202d6b326d0000000000000000000000 *00000000000000000020202d413c73697a653e205365747320746865206d696e696d756d20616c *6c6f636174696f6e20617265612073697a65202864656661756c74203235366b29204567733a20 *2d41316d202d4131306b000000000000000000000000000000000020202d4d3c73697a653e2053 *65747320746865206d6178696d756d20686561702073697a65202864656661756c7420756e6c69 *6d697465642920204567733a202d4d3235366b202d4d3147000000000000000000000000000000 *00000000000020202d483c73697a653e205365747320746865206d696e696d756d206865617020 *73697a65202864656661756c7420304d292020204567733a202d4832346d20202d483147000000 *00000000000000000000000000000000000000000000000020202d6d3c6e3e202020204d696e69 *6d756d2025206f662068656170207768696368206d75737420626520617661696c61626c652028 *64656661756c742033252900000000000000000000000000000000000000000000000000000000 *00000020202d473c6e3e202020204e756d626572206f662067656e65726174696f6e7320286465 *6661756c743a2032290000000000000000000000000000000000000020202d543c6e3e20202020 *4e756d626572206f6620737465707320696e20796f756e6765722067656e65726174696f6e7320 *2864656661756c743a203229000020202d633c6e3e202020204175746f2d656e61626c6520636f *6d70616374696f6e206f6620746865206f6c646573742067656e65726174696f6e207768656e20 *6c6976652064617461206973000000000000000000000000000000000000000020202020202020 *202020206174206c65617374203c6e3e25206f6620746865206d6178696d756d20686561702073 *697a65207365742077697468202d4d202864656661756c743a2033302529000000000000000000 *000000000000000000000020202d6320202020202020456e61626c6520636f6d70616374696f6e *20666f7220616c6c206d616a6f7220636f6c6c656374696f6e730000000000000000000020202d *743c66696c653e204f6e652d6c696e65204743207374617469737469637320202864656661756c *742066696c653a203c70726f6772616d3e2e737461742900000000000000000000000000000000 *00000000000000000000000000000020202d733c66696c653e2053756d6d617279202047432073 *74617469737469637320202877697468202d5373746465727220676f696e6720746f2073746465 *72722900000000000000000000000000000000000000000000000000000000000020202d533c66 *696c653e2044657461696c65642047432073746174697374696373000000000000000000000000 *0000000000000000000000000000000000000020202d5a20202020202020446f6e277420737175 *65657a65206f757420757064617465206672616d6573206f6e20737461636b206f766572666c6f *770000000020202d4220202020202020536f756e64207468652062656c6c206174207468652073 *74617274206f662065616368206761726261676520636f6c6c656374696f6e0000000000000000 *000000000000000000000000000000000000000000000020202d433c736563733e2020436f6e74 *6578742d73776974636820696e74657276616c20696e207365636f6e6473000000000000000000 *000000000000000000202020202020202020202020202020202830206f72206e6f20617267756d *656e74206d65616e7320737769746368206173206f6674656e20617320706f737369626c652900 *000000000000000000000000000000000000000000000000000000202020202020202020202020 *202020207468652064656661756c74206973202e3032207365633b207265736f6c7574696f6e20 *6973202e303220736563000000525453206f7074696f6e73206d617920616c736f206265207370 *65636966696564207573696e67207468652047484352545320656e7669726f6e6d656e74207661 *726961626c652e0000000000000000000000000000000000000000000000004f74686572205254 *53206f7074696f6e73206d617920626520617661696c61626c6520666f722070726f6772616d73 *20636f6d70696c6564206120646966666572656e74207761792e00000000000000000000000000 *000000000000000000005468652047484320557365722773204775696465206861732066756c6c *2064657461696c732e0000000000000000000000000000000000000000000000000000746f6f20 *6d616e792052545320617267756d656e747320286d61782025642900474843206e6f7420627569 *6c7420666f723a202d70726f66206f72202d706172616c6c656c00000000000000000000000000 *0000000000000000000000000000474843206e6f74206275696c7420666f723a202d706172616c *6c656c206f72202d736d7000000000000000000000000000000000000000000000000000000000 *474843206e6f74206275696c7420666f723a207469636b792d7469636b79207374617473000000 *0000007a44286b6e4e00247449000080404de110083ae11008cedd1008f2dd100834e010083ae1 *10083ae110084fde100842df10086cdf10083ae110083ae1100890de10083ae11008c6de10083a *e110083ae110081ae010083ae1100823e01008a7df100857df10083ae110083ae110083ae11008 *3ae110083ae110080be010083ae110083ae110083ae110083ae110083ae110083ae110083ae110 *08ece0100801de10083ae11008d4e010083ae110083ae1100823e010083ae110083ae11008abde *10083ae11008eade10083ae110083ae110081ae01008e0e01008f8e01008b3df1008bfdf10083a *e110083ae110083ae1100804e11008000000000000802f011b033b64820000040000008853ffff *808200001855ffffa08200002857ffffc08200005858ffffe08200000000000000000000000000 *0000000000000000005815120800000000c09a0408000000000000000000000000249b04080000 *0000000000000000000000000000589e04080000000084a104080000000020d10408000000002c *cd04087acd0408c3cd04080cce040888cf040888cf040854ce0408a2ce0408ebce04083fcf0408 *dcd104080000000000000000000000000000000070d404080000000058e004080000000088e004 *08000000000000000000000000b4e7040800000000ace904080000000004ea0408000000000000 *0000000000007cea0408000000000000000000000000e4ea040800000000000000000000000098 *0b050800000000980c050800000000fc0d050800000000f818050808190508800e05083c0f0508 *08100508201005085c1005089810050850180508d410050844120508b0130508c8130508041405 *084814050874150508681605088016050858170508dc17050800000000a0190508000000000000 *000000000000181a0508000000000000000000000000801a0508000000000000000000000000f8 *1a0508000000000000000000000000601b05080000000000000000000000000420050800000000 *00000000000000007c200508000000000000000000000000f42005080000000000000000000000 *005c210508000000000000000000000000c8210508000000000000000000000000402205080000 *00000000000000000000a822050800000000000000000000000014230508000000000000000000 *00000080230508000000000000000000000000ec23050800000000000000000000000064240508 *0000000000000000000000000426050800000000c02605080000000088270508000000000c2e05 *080000000060dc0b0800000000402e0508000000000000000000000000ac2e0508000000000000 *000000000000683f0508000000000000000000000000e03f050800000000000000000000000040 *4205080000000068420508c44205087843050818500508000000000000000000000000582d0c08 *0ca4110894a411082ca41108000000009c500508000000000000000000000000545c0508000000 *0060dc0b0800000000885c0508000000000000000000000000f45c050800000000000000000000 *0000001e0c08eca41108fca411084ca411080ca5110800000000705d0508000000000000000000 *000000d45d0508000000000000000000000000385e050800000000000000000000000030730508 *000000000000000000000000a8730508000000000000000000000000001e0c0854a5110864a511 *082ca5110874a51108000000002474050800000000000000000000000088740508000000000000 *000000000000ec740508000000000000000000000000e078050800000000000000000000000058 *790508000000000000000000000000582d0c08a4a41108b8a51108c4a4110800000000c4790508 *0000000000000000000000002c7d05080000000060dc0b0800000000607d050800000000000000 *0000000000cc7d0508000000000000000000000000582d0c08c8a511080ca61108e8a511080000 *0000387e0508000000000000000000000000001e0c0834a6110844a6110894a5110854a6110800 *000000b47e0508000000000000000000000000187f05080000000000000000000000007c7f0508 *0000000000000000000000008cdd0b0874a61108f4a3110800000000e87f050800000000000000 *000000000074dd0b0864a61108fca31108aca61108bca61108cca61108dca61108eca61108fca6 *1108000000007c800508000000000000000000000000e080050800000000000000000000000044 *810508000000000000000000000000a88105080000000000000000000000000c82050800000000 *0000000000000000708205080000000000000000000000006885050800000000048e0508000000 *0030950508000000009c950508000000008cdd0b0824a711081ca7110800000000109705080000 *000078970508000000008cdd0b0844a711083ca7110800000000d0970508f89705081098050888 *980508d8980508cc9e0508f09805082c99050868990508a4990508e8990508dc9b0508c09d0508 *d89d0508509e0508a09e050800000000cca205080000000060dc0b0800000000f0a20508000000 *0000000000000000005ca30508000000000000000000000000a0a7050800000000000000000000 *000018aa05080000000000000000000000005cad0508acad0508000000008cdd0b08f4a71108f0 *a7110800000000001e0c0824a8110834a81108e0a7110844a81108000000000cae050800000000 *000000000000000070ae0508000000000000000000000000d4ae05080000000000000000000000 *00582d0c08a0a7110868a81108c0a711080000000040af050800000000000000000000000004b3 *050814b3050824b3050834b3050844b3050854b3050864b30508c8b00508f0b20508000000002c *b5050860dc0b080000000060dc0b08010000005cb50508000000000000000000000000ccb50508 *00000000000000000000000040b60508000000000000000000000000acb6050800000000000000 *000000000018b7050800000000000000000000000084b70508000000000000000000000000f0b7 *050800000000000000000000000068b80508000000000000000000000000d4ba0508000000000c *bb050800000000000000000000000078bb0508000000000000000000000000e4bb050800000000 *000000000000000050bc0508000000000000000000000000bcbc05080000000000000000000000 *00e4c10508000000000cc405080000000054c705080000000070c805080000000018cc05080000 *000094cc05080000000014cd05080000000034cd050800000000000000000000000018d3050800 *000000f8d60508000000000ce905080000000048dc0b082e0000008cdc0b08eca9110800d21108 *0100000074ea05080000000050eb050800000000000000000000000030f1050800000000b8fb05 *0800000000d010060800000000441106080000000000000000000000008013060800000000d813 *0608000000000000000000000000c415060800000000c8160608000000000000000000000000ac *1e060800000000101f0608000000000000000000000000741f0608000000000000000000000000 *28240608000000008c24060800000000000000000000000000000000b426060800000000dc2706 *08742a0608000000005c2b0608000000000000000000000000c82c060800000000000000000000 *000060dc0b08030000007c2d0608000000000000000000000000ec2e0608000000000000000000 *000000d42f06080000000000000000000000001831060800000000000000000000000098320608 *000000000000000000000000dc330608000000000000000000000000f836060800000000000000 *0000000000203b0608000000000000000000000000503d0608000000000000000000000000c03f *06080000000000000000000000007c420608000000000000000000000000c448060800000000fc *48060800000000000000000000000068490608000000000000000000000000d449060800000000 *0000000000000000b05006080000000024510608000000005c5106080000000094510608000000 *00cc5106080000000004520608000000003c520608000000000c5c060800000000345306086453 *06080b54060894530608ad530608dc5306082064060800000000546c060800000000c86c060800 *00000000000000000000003c6d0608000000000000000000000000b06d06080000000000000000 *00000000246e0608000000000000000000000000986e0608000000000000000000000000006f06 *080000000000000000000000006c6f0608000000000000000000000000e46f0608000000000000 *0000000000004c700608000000000000000000000000c47006080000000000000000000000002c *710608000000000000000000000000a47106080000000000000000000000000c72060800000000 *000000000000000078720608000000000000000000000000f07206080000000000000000000000 *00ec7a06080000000000000000000000006c7b0608000000000000000000000000f07f06080000 *000060dc0b08000000002480060800000000000000000000000090800608000000000000000000 *0000004c610708e0d01108e0d01108e0d01108e0d01108e0d01108e0d01108e0d01108e0d01108 *e0d0110801000000b88806080000000000000000000000007c9106080000000000000000000000 *00849f060800000000000000000000000058a806080000000018b506080000000068af060877af *060886af060895af0608a9af0608bdaf0608d1af0608e5af0608f9af06080db0060821b006083d *b006083db006083db006083db006083db0060835b0060880b506080000000008ba060800000000 *74ba0608000000008cdd0b0844ae11083cae110800000000c4ba06080000000000000000000000 *0084c3060800000000ecc30608000000008cdd0b0874ae11086cae1108000000002cc706080000 *000094c70608000000008cdd0b0894ae11088cae110800000000001e0c08c4ae1108d4ae110844 *ad1108e4ae110800000000f4c7060800000000000000000000000058c806080000000000000000 *00000000bcc8060800000000000000000000000064e60608000000000000000000000000dce606 *08000000000000000000000000582d0c0854ad110828af110874ad11080000000048e706080000 *0000000000000000000034f306080000000060dc0b080000000068f30608000000000000000000 *000000d4f3060800000000000000000000000040f40608000000000000000000000000080f0708 *0000000060dc0b08000000003c0f0708000000000000000000000000a80f070800000000000000 *0000000000001e0c08c0af1108d0af110804af1108e0af11080000000024100708000000000000 *00000000000088100708000000000000000000000000ec10070800000000000000000000000058 *2d0c0838af110804b0110858af1108000000005811070800000000000000000000000084150708 *00000000ec150708000000008cdd0b081cb0110814b0110800000000582d0c0878af110848b011 *0898af1108000000003c1607080000000000000000000000000821070800000000bc1e0708fe1e *07082a1f0708561f0708981f0708c41f0708f01f0708322007085e200708a020070860dc0b0800 *0000003c210708000000000000000000000000a8210708000000000000000000000000582d0c08 *58b01108c4b01108a0b011080000000014220708000000000000000000000000b02a0708000000 *0010290708272907083e290708552907086c290708832907089a290708b1290708102a0708102a *0708102a0708c8290708df290708f62907089440070800000000e03b07080c3c0708383c070864 *3c0708a63c0708e83c07082a3d07086c3d0708ae3d0708f03d0708323e0708743e0708a03e0708 *cc3e0708f83e07083a3f0708144107083c410708644107088c410708b4410708dc410708044207 *082c420708544207087c420708a4420708cc420708f44207081c430708444307086c4307089443 *0708bc4307082462070834620708446207085462070864620708d443070820450708e846070800 *470708d84707085c480708884807084c4a0708304b0708484b0708706107087c610708804b0708 *a0610708ac610708b84b0708d0610708f04b0708f461070800620708504e0708d8510708884e07 *08cd4e0708124f0708634f0708b54f0708fa4f07084b5007089d500708e150070833510708f05f *0708fc5f070808600708f0510708285207086052070898520708d0520708085307084053070878 *530708d4600708e0600708ec600708b0530708e8530708205407084c580708145e070884580708 *d65807082859070879590708ca5907081b5a07086c5a0708bd5a07080e5b07085f5b0708b05b07 *08025c0708545c0708a65c0708f75c0708555d07082c5e07082c5f0708c45f0708000000003c65 *0708000000000000000000000000b46507080000000000000000000000002c6607080000000000 *000000000000001c6b070800000000606b0708000000000000000000000000c86b070800000000 *0000000000000000346c0708000000000000000000000000a06c07080000000000000000000000 *000c6d0708000000000000000000000000786d0708000000000000000000000000e46d07080000 *000000000000000000005c6e0708000000000000000000000000c46e0708000000000000000000 *0000003c6f0708000000000000000000000000a46f07080000000000000000000000001c700708 *00000000000000000000000084700708000000000000000000000000fc70070800000000000000 *000000000064710708000000000000000000000000d07107080000000000000000000000004072 *0708000000000000000000000000b4720708000000000000000000000000207307080000000000 *000000000000008c730708000000000000000000000000fc730708000000000000000000000000 *70740708000000000000000000000000e874070800000000000000000000000050750708000000 *000000000000000000c87507080000000000000000000000003476070800000000000000000000 *0000a8760708000000000000000000000000207707080000000000000000000000008877070800 *0000000000000000000000f4770708000000000000000000000000647807080000000000000000 *00000000d878070800000000000000000000000050790708000000000000000000000000c47907 *08000000000000000000000000387a0708000000000000000000000000ac7a0708000000000000 *000000000000207b0708000000000000000000000000887b0708000000000000000000000000f8 *7b07080000000000000000000000006c7c0708000000000000000000000000d87c070800000000 *0000000000000000447d0708000000000000000000000000b47d07080000000000000000000000 *00287e07080000000000000000000000005c81070800000000fc8e070800000000648f07080000 *00008cdd0b08dcb51108d4b511080000000034ef0708000000000000000000000000acef070800 *0000000000000000000000901708080000000060dc0b0800000000c41708080000000000000000 *0000000030180808000000000000000000000000889f050800d2110800d211080100000044ec09 *0800d2110844b611080100000064c4090854b611088ca8110800d2110800d2110800d2110800d2 *110800d2110800d2110800d2110800d2110800d2110800d2110800d2110800d21108e0d0110800 *d2110801000000d019080800000000801a080800000000f01a080800000000641c080800000000 *34c4090804d2110800d2110800d2110800d2110800d21108f4a9110800d2110800d2110800d211 *0800d2110800d2110800d2110800d21108000000001cc4090800d2110800d21108ccb611080000 *0000d8240808000000004cc4090800d21108ccb61108000000001c2a080800000000802b080800 *000000b42b080800000000142c0808000000000000000000000000942c08080000000000000000 *000000008cdc0b085cb7110800d2110800000000a02d0808d02d08080000000000000000000000 *004c2e08080000000000000000000000008cdc0b0890b711086cb7110800000000582f0808c42f *080800000000000000000000000034300808000000000000000000000000b03008080000000000 *000000000000008cdc0b08d4b71108a0b7110800000000bc310808283208080000000000000000 *0000000098320808000000000000000000000000143308080000000000000000000000008cdc0b *0818b81108e4b7110800000000203408088c340808000000000000000000000000fc3408080000 *00000000000000000000783508080000000000000000000000008cdc0b085cb8110828b8110800 *00000084360808f036080800000000000000000000000060370808000000000000000000000000 *dc3708080000000000000000000000008cdc0b08a0b811086cb8110800000000e8380808543908 *08000000000000000000000000c4390808000000000000000000000000403a0808000000000000 *0000000000008cdc0b08e4b81108b0b81108000000004c3b0808b83b0808000000000000000000 *000000283c0808000000000000000000000000a43c08080000000000000000000000008cdc0b08 *28b91108f4b8110800000000b03d08081c3e08080000000000000000000000008c3e0808000000 *000000000000000000083f08080000000000000000000000008cdc0b086cb9110838b911080000 *00001440080844400808000000000000000000000000c04008080000000000000000000000008c *dc0b08a0b911087cb9110800000000cc41080838420808000000000000000000000000a8420808 *000000000000000000000000244308080000000000000000000000008cdc0b08e4b91108b0b911 *0800000000304408089c4408080000000000000000000000000c45080800000000000000000000 *0000884508080000000000000000000000008cdc0b0828ba1108f4b911080000000094460808c4 *460808000000000000000000000000404708080000000000000000000000008cdc0b085cba1108 *38ba1108000000004c48080884480808000000000000000000000000f448080800000000000000 *0000000000704908080000000000000000000000008cdc0b08a0ba11086cba110800000000f84a *0808284b0808000000000000000000000000a04b0808000000000000000000000000104c080800 *0000000000000000000000904c08080000000000000000000000008cdc0b08f4ba1108b0ba1108 *00000000184e0808484e0808000000000000000000000000b84e08080000000000000000000000 *00384f08080000000000000000000000008cdc0b0838bb110804bb110800000000f0bb0b08e0d0 *110800d211080100000024510808000000003453080800000000a8530808d85308080000000000 *00000000000000545408080000000000000000000000008cdc0b088cbb110800d2110800000000 *105508087c550808000000000000000000000000ec550808000000000000000000000000685608 *080000000000000000000000008cdc0b08d0bb11089cbb11080000000060570808905708080000 *00000000000000000000045808080000000000000000000000008cdc0b0804bc110800d2110800 *000000f45808082459080800000000000000000000000098590808000000000000000000000000 *8cdc0b0838bc110814bc110800000000885a0808b85a08080000000000000000000000002c5b08 *080000000000000000000000008cdc0b086cbc110848bc1108000000001c5c08084c5c08080000 *00000000000000000000c85c08080000000000000000000000008cdc0b08a0bc11087cbc110800 *000000c05d0808f05d08080000000000000000000000006c5e0808000000000000000000000000 *8cdc0b08d4bc1108b0bc110800000000645f0808945f0808000000000000000000000000106008 *080000000000000000000000008cdc0b0808bd1108e4bc11080000000008610808386108080000 *00000000000000000000b46108080000000000000000000000008cdc0b083cbd110818bd110800 *000000ac620808dc62080800000000000000000000000058630808000000000000000000000000 *8cdc0b0870bd11084cbd1108000000005064080880640808000000000000000000000000fc6408 *080000000000000000000000008cdc0b08a4bd110880bd110800000000f46508082c6608080000 *000000000000000000009c66080800000000000000000000000018670808000000000000000000 *0000008cdc0b08e8bd1108b4bd1108000000001068080840680808000000000000000000000000 *bc6808080000000000000000000000008cdc0b081cbe1108f8bd110800000000b4690808746a08 *080000000000000000000000002c6b0808000000000000000000000000a06b0808000000000000 *0000000000001c6c08080000000000000000000000008cdc0b0870be11082cbe11080000000014 *6d0808d46d08080000000000000000000000008c6e0808000000000000000000000000006f0808 *0000000000000000000000007c6f08080000000000000000000000008cdc0b08c4be110880be11 *08000000007470080834710808000000000000000000000000ec71080800000000000000000000 *000060720808000000000000000000000000dc7208080000000000000000000000008cdc0b0818 *bf1108d4be110800000000d47308080c7408080000000000000000000000007c74080800000000 *0000000000000000f87408080000000000000000000000008cdc0b085cbf110828bf1108000000 *00dc7a080800000000407b0808000000005085080800000000a885080800000000e88a08080000 *0000848b0808000000009c9e080800000000189f080800000000c0a008080000000038ac080800 *00000094ad080800000000fcad0808000000008cdd0b08d4bf1108ccbf1108000000004cae0808 *000000000000000000000000b8b008080000000020b10808000000008cdd0b0804c01108fcbf11 *0800000000001e0c0834c0110844c0110804b6110854c011080000000080b10808000000000000 *000000000000e4b1080800000000000000000000000048b2080800000000000000000000000004 *c308080000000000000000000000007cc30808000000000000000000000000001e0c089cc01108 *acc0110874c01108bcc0110800000000f8c308080000000000000000000000005cc40808000000 *000000000000000000c0c408080000000000000000000000002cc5080800000000000000000000 *0000a4c50808000000000000000000000000c4dc08080000000000000000000000003cdd080800 *0000000000000000000000582d0c0814b6110820c1110834b6110800000000a8dd080800000000 *000000000000000028e408080000000060dc0b08000000005ce408080000000000000000000000 *00c8e40808000000000000000000000000582d0c0830c1110874c1110850c111080000000034e5 *0808000000000000000000000000a0e50808000000000000000000000000d0ee08080000000060 *dc0b080000000004ef080800000000000000000000000070ef0808000000000000000000000000 *dcef08080000000000000000000000001c0209080000000084020908000000008cdd0b08dcc111 *08d4c1110800000000001e0c080cc211081cc21108fcc011082cc2110800000000e40209080000 *0000000000000000000048030908000000000000000000000000ac030908000000000000000000 *00000018040908000000000000000000000000900409080000000000000000000000007c7d0908 *000000000000000000000000f47d0908000000000000000000000000001e0c0894c21108a4c211 *086cc21108b4c2110800000000707e0908000000000000000000000000d47e0908000000000000 *000000000000387f0908000000000000000000000000582d0c0894c11108d8c21108b4c1110800 *000000a47f09080000000000000000000000001080090800000000000000000000000080b20908 *0000000060dc0b0800000000b4b2090800000000000000000000000020b3090800000000000000 *0000000000582d0c08f8c211083cc3110818c31108000000008cb3090800000000000000000000 *000000b4090828b4090850b4090878b40908a0b40908c8b40908f0b4090818b5090840b5090868 *b5090890b50908b8b50908e0b5090808b6090830b6090858b6090880b60908a8b60908d0b60908 *f8b6090820b7090848b7090870b7090898b70908c0b70908e8b7090810b8090838b8090860b809 *0888b80908b0b80908d8b8090800b9090828b9090854b90908d0bb090810bd090828bd0908a0bd *0908f0bd090808be0908a8be090818bf090844bf090860c20908fcc30908000000000cc7090800 *000000000000000000000080c70908000000000000000000000000e8c709080000000000000000 *0000000060c80908000000000000000000000000c8c8090800000000000000000000000034c909 *0800000000000000000000000050cc0908000000000000000000000000b8cc0908000000000000 *0000000000006cce090800000000d4ce0908000000008cdd0b0890c4110888c411080000000054 *d509080000000060dc0b080000000088d50908000000000000000000000000f4d5090800000000 *0000000000000000b0e6090800000000000000000000000028e709080000000000000000000000 *0074e8090800000000582d0c08a8c4110814c51108c8c4110800000000a4e80908000000000000 *0000000000000ce90908000000000000000000000000001e0c084cc511085cc51108e8c411086c *c511080000000080e90908000000000000000000000000e4e90908000000000000000000000000 *48ea0908000000000000000000000000b0ea09080000000000000000000000001ceb090844eb09 *085ceb0908d4eb090824ec09080000000094ed09086cee090800000000b4ee0908d0ee09080cef *0908b0f0090800000000000000000000000094f309080000000020f40908000000000000000000 *0000007cf909080000000000000000000000006c050a0800000000000000000000000084060a08 *00000000000000000000000054070a0800000000e0080a08000000000000000000000000740e0a *0800000000000f0a08000000002c100a0800000000000000000000000098130a08000000000000 *0000000000003c140a08000000000000000000000000b0140a0800000000000000000000000008 *1c0a08000000000000000000000000381d0a0800000000541e0a080000000078200a0800000000 *d4230a0800000000d0250a0800000000dc270a0800000000000000000000000030290a08000000 *002c2b0a0800000000702c0a0800000000202d0a0800000000bc2e0a0800000000000000000000 *000058300a080000000038320a0800000000f0330a080000000078370a0800000000d8380a0800 *000000f83b0a08000000006c3d0a0800000000c43f0a080000000000000000000000003c400a08 *000000000000000000000000b4400a08f0400a0804450a082c410a0870410a08f8420a0874440a *088c440a08a0440a08b4440a080000000060dc0b080000000060dc0b0800040000d8450a080000 *0000000000000000000044460a08000000000000000000000000b0460a08000000000000000000 *0000001c470a0800000000000000000000000088470a08000000000000000000000000dc4b0a08 *000000007c580a0800000000cc580a080000000000000000000000003c590a0800000000000000 *0000000000145c0a0800000000a4640a08000000000000000060650a0800000000b4650a080000 *00007c660a080000000008670a080000000094670a0800000000a46a0a0800000000ec6b0a0800 *00000048dc0b082f0000007c740a080000000050760a080000000020770a0800000000a4800a08 *00000000fc830a0800000000c8860a080000000048dc0b083a000000ac870a080000000064890a *08000000006cdc0b0848dc0b086f0000008cdc0b08a8c8110800d2110801000000ac890a080000 *000000000000000000000000000060dc0b0801000000508a0a08000000000000000000000000c8 *8a0a08000000000000000000000000d4960a080000000030970a08000000000000000000000000 *94970a0820a40a0800000000e0a50a080000000000b00a0800000000e8b60a080000000050b70a *08ecba0a08fcba0a088cb70a08d0b70a083cb90a08b8ba0a0800000000b0bd0a0810be0a080000 *0000000000000000000074cf0a080000000000000000000000002cda0a08000000000000000000 *00000064e70a080000000000e20a082ce20a0858e20a0884e20a08b0e20a08dce20a0808e30a08 *34e30a0860e30a088ce30a08b8e30a08e4e30a0810e40a083ce40a0868e40a0894e40a08c0e40a *08ece40a0818e50a0844e50a0870e50a089ce50a08c8e50a08f4e50a0820e60a084ce60a0878e6 *0a08a4e60a08d0e60a08fce60a0860dc0b080000000088e70a08000000000000000000000000f4 *e70a08000000000000000000000000b4e80a08000000002ce90a08000000008cdd0b083cca1108 *34ca11080000000080e90a08000000000000000000000000f4e90a080000000000000000000000 *004cf70a0800000000a4f00a08d5f00a0806f10a0837f10a0868f10a0899f10a08caf10a08fbf1 *0a082cf20a085df20a088ef20a08bff20a08f0f20a0821f30a0852f30a0883f30a08b4f30a08e5 *f30a0816f40a0847f40a0878f40a08a9f40a08daf40a080bf50a083cf50a086df50a089ef50a08 *c9f50a08f4f50a081ff60a0820000b080000000094fb0a08c5fb0a08f6fb0a0827fc0a0825ff0a *0858fc0a0889fc0a08bafc0a08ebfc0a081cfd0a084dfd0a087efd0a08affd0a08e0fd0a080bfe *0a0825ff0a0825ff0a0836fe0a0825ff0a0825ff0a0825ff0a0825ff0a0825ff0a0825ff0a0825 *ff0a0825ff0a0825ff0a0861fe0a0892fe0a08c3fe0a08f4fe0a0850030b0800000000582d0c08 *8cc9110894cb110824ca110800000000ac030b08000000000000000000000000001e0c08bccb11 *08cccb11087cc91108dccb11080000000028040b080000000000000000000000008c040b080000 *00000000000000000000f0040b0800000000000000000000000048160b0854160b0860160b086c *160b0878160b0884160b0890160b089c160b08a8160b08b4160b08c0160b08cc160b08d8160b08 *e4160b08f0160b08fc160b0808170b0814170b0820170b082c170b0838170b0844170b0850170b *085c170b0868170b0874170b0880170b088c170b0898170b08a4170b08b0170b087c0a0b083416 *0b08b40a0b08130b0b08720b0b08d10b0b08300c0b088f0c0b08ee0c0b084d0d0b08ac0d0b080b *0e0b086a0e0b08c90e0b08280f0b08870f0b08e60f0b0845100b08a4100b0803110b0862110b08 *c1110b0820120b087f120b08de120b083d130b089c130b08fb130b085a140b08b9140b0818150b *0877150b08000000000000000000000000fc190b08000000000000000000000000c81b0b080000 *0000201d0b08000000000000000000000000e01d0b08000000000000000000000000941e0b0800 *000000000000000000000034220b08000000000000000000000000e4220b0800000000bc260b08 *0000000000000000000000006c270b08000000009c270b08000000000c2c0b080000000060dc0b *0801000000782c0b08000000000000000000000000542d0b08000000000000000000000000d42d *0b08000000000000000000000000b02e0b08000000000000000000000000302f0b080000000000 *000000000000009c2f0b0800000000000000000000000008300b08000000000000000000000000 *74300b08000000000000000000000000e0300b08000000000000000000000000cc320b08000000 *000000000000000000a0360b08000000000000000000000000c0380b0800000000000000000000 *0000843f0b08000000000000000000000000f03f0b080000000000000000000000005c400b0800 *0000000000000000000000c8400b0800000000000000000000000040410b080000000000000000 *00000000a0410b08f0410b087c420b08a44b0b080000000060dc0b0800000000d84b0b08000000 *000000000000000000444c0b0800000000000000000000000044530b0800000000dc560b080000 *0000e0580b0800000000245a0b0800000000745c0b0800000000582d0c08a0ce11080ccf1108c0 *ce110800000000c85c0b0800000000000000000000000074610b0800000000f0610b0800000000 *00000000000000006c620b08000000000000000000000000b4680b0800000000b06b0b08000000 *00f0700b0800000000347b0b0800000000307e0b08000000000000000000000000ac7e0b080000 *0000000000000000000080800b080000000000840b0800000000000000000000000084840b0800 *0000000000000000000000fc840b0800000000000000000000000078850b08a0850b08c8850b08 *f0850b0808860b084c860b0890860b08d4870b08dc880b08f4880b0830890b08d8890b085c8a0b *08748a0b084c8b0b08d08b0b08988e0b08c88f0b08f8900b0834920b080000000080940b080000 *000060950b0800000000589b0b08000000000000000000000000cc9b0b08000000000000000000 *0000003c9c0b08000000000000000000000000a89c0b080000000000000000000000000c9d0b08 *000000000000000000000000e09d0b08589f0b0848a10b0890a10b083ca20b08b8a20b0834a30b *087ca30b0850a40b08b4a40b0898a60b0808a80b0868aa0b0864ab0b08e8ac0b08b8ad0b0848af *0b088cb00b0834b20b0854b30b0808b40b08d0b40b08e0b50b0844b60b080000000084b60b08d0 *b60b0834b70b0884b90b0848b90b08b8b90b0898bb0b08c0bb0b08f4bc0b080000000074bd0b08 *000000008cbf0b08e4c10b08e4050c08b0d71108c0d711082cd3110828d3110824d3110820d311 *081cd3110818d3110814d31108000000007cc50b0808c90b086cc90b08bcc90b08d0c90b081cca *0b0834ca0b0848ca0b0894ca0b0814cb0b0894cb0b0820cc0b08accc0b0838cd0b088cdd0b0858 *d8110854d81108010000008cdd0b0850d811084cd811080100000074dd0b085cd8110848d81108 *28d8110834d8110830d811082cd8110820d8110824d8110801000000c4cd0b0808ce0b084cce0b *0848cf0b087cd00b0804d10b08dcd20b0864d60b085cd70b0860d80b0844d90b082cda0b08e0da *0b0808db0b0830db0b0858db0b0880db0b0814dc0b086cdc0b0824dc0b0830dd0b0840dd0b08c8 *db0b089cdc0b08acdc0b08bcdc0b08f0db0b0858de0b08b0d81108a8d81108a4d81108a0d81108 *9cd8110898d8110894d8110890d8110800000000b4de0b08000000003cdf0b08e0e10b08000000 *00000000000000000044e20b08000000000000000000000000b0e20b0800000000f4e30b080000 *00003ce40b080000000018e60b08000000006ce60b080000000008e70b080000000060e80b0874 *e80b0860e90b08f8d211080100000060e90b08f4d21108010000008ce80b088cdd0b08e8d91108 *e4d91108010000005cdd0b08f4d91108f8d91108f0d91108ecd911080100000034e90b0844e90b *0804e90b086ce90b0878e90b08b4e90b08cce80b08dce80b087cea0b0820eb0b0880eb0b08c4eb *0b0814ec0b0880ec0b08ecec0b0804ee0b084cee0b08bcee0b082cf00b08bcf10b08c4f20b0800 *00000000f40b082cf50b0818f60b08b8f60b0858f70b0890f70b080cf80b0850f90b08ccf90b08 *10fb0b0854fb0b0898fb0b0834fc0b0880fc0b08c4fc0b0868fd0b08d8fd0b082cfe0b08000000 *0094fe0b0800000000fcfe0b08000000003cff0b0850ff0b0808010c0840020c085c030c08e405 *0c085cd8110808d5110840d811083cd8110844d8110838d8110814db110810db11080cdb110800 *000000e4050c0820db110840db110808db110830db110834db110838db11081cdb110854db1108 *18db11080000000054060c08dc070c0800000000a80b0c0800000000280d0c0800000000500d0c *08000000009c0e0c08ec0e0c08000000002c0f0c08d40f0c08001e0c08dcdb1108d4db1108b4db *1108c4db110800000000001e0c080cdc110804dc1108e4db1108f4db11080000000010110c0800 *00000030170c0800000000001e0c083cdc110834dc110814dc110824dc110800000000cc180c08 *00000000a81d0c08d01d0c08701e0c0804200c084c200c085c210c0860dc0b080a00000078210c *080000000014240c08d0240c0800000000582d0c08b4dc110884dc11088cdc110800000000582d *0c08c4dc1108ccdc1108bcdc110800000000582d0c0898dc1108a4dc11089cdc11080000000018 *260c08000000005c290c0800000000002d0c08282d0c08302e0c0800000000c42e0c0800000000 *f42e0c08202f0c084c2f0c08782f0c08ec2f0c08dc320c08000000003c360c08000000003c370c *0800000000d83b0c0800000000183c0c0800000000843d0c0800000000003f0c0800000000d03f *0c08000000006c400c080000000068410c0800000000a8420c08d4430c0834450c0800000000f4 *460c08000000005c470c0800000000e0470c080000000040480c0800000000ac480c0800000000 *3c490c08ac490c08244b0c08504b0c08000000000000000000000000b04b0c08e04b0c08ac4c0c *08e4050c08b8de1108f0de110828dd110824dd110820dd11081cdd110818dd110814dd110810dd *110800000000c8f10c0804df1108c8de11087cda110874da11086cda110864da11085cda110854 *da110850da1108000000002c4f0c08e4500c0838510c0800000000385d0c0800000000e05e0c08 *805f0c08a45f0c080000000094600c086c610c0860dc0b08000000001c620c08b4620c08d0620c *08f0620c085cdd0b08a4d6110838df1108a0d611089cd611080100000004640c0850640c089c64 *0c08e8640c08e86a0c0874650c0820670c08d8670c0890680c08086b0c0854df11083cd7110801 *00000001000000086b0c0848df11083cd711080100000001000000086b0c083cdf11083cd71108 *010000000100000004690c0800000000c4690c0800000000806a0c0800000000586b0c08e86a0c *085c6c0c080000000010750c080000000074770c08b4770c08f4780c0848dc0b082000000048dc *0b080a000000547b0c08a47b0c080000000000000000000000000c7c0c08887c0c080000000030 *7e0c080000000090800c080000000050810c08c8050c0801000000d8810c08b8820c088cdd0b08 *88da110884da110801000000582d0c084cda110838da11088cda11080000000034840c08c4840c *08a8e90b08b4e0110800000000e4840c08b8860c080000000000880c0850890c08f4e01108f0e0 *1108e4dc1108e0dc1108e0e01108e4e01108e8e01108ece0110801000000c8890c08348a0c08a0 *8a0c08088b0c08708b0c08d88b0c08408c0c08908c0c08fc8c0c08688d0c08d48d0c08248e0c08 *8c8e0c08f48e0c086c8f0c088cdd0b080ce1110810e111080100000024dc0b088cdd0b082ce111 *0808e1110801000000ec8f0c0800000000000000000000000054900c08c4900c0814910c086491 *0c08b0910c08c4910c08e0910c080000000050920c0800000000d0920c08000000000000000000 *00000038930c08000000000000000000000000a8930c080000000010960c080000000000000000 *0000000070960c08e8960c0800000000000000000000000054970c080000000000000000000000 *00c0970c080000000000000000000000003c980c08000000009c990c0800000000689b0c080000 *0000649c0c08d09e0c0800000000749f0c080000000018a00c0800000000a4a30c080000000078 *a40c0800000000e0aa0c0800000000f0bb0b0824da1108f0e211080000000078ad0c0800000000 *a4af0c080000000000000000000000001cb00c08000000006cb30c080000000098b40c08000000 *00ccb50c08000000006cb80c080000000014b90c080000000060b90c080000000098bc0c080000 *0000e4bc0c080000000048bf0c0888bf0c0844c00c084cc10c08ccc10c08e4c10c0830c20c0884 *c20c0808c30c088cc30c08b4c30c08dcc30c0804c40c08ecc40c08fcc40c08ccc40c08dcc40c08 *bcc40c0898c40c0888c40c0890ed0b08ffffffff48c50c0890ed0b080000000090ed0b08010000 *0098c50c08e8c50c0840c60c080000000098c70c0800000000f8c70c080000000090c80c080000 *000054c90c080000000018ca0c0800000000a8ca0c0810cb0c087ccb0c08000000000000000000 *000000582d0c084cda110838da11088cda110800000000dccb0c0800cd0c08d4cd0c0838ce0c08 *a4ce0c0800000000000000000000000014cf0c0800000000000000000000000084cf0c08000000 *000000000000000000f4cf0c080000000000000000000000005cd00c0834d10c088cd10c0830d4 *0c089cd40c08fcd40c0844d50c0858d50c088cdd0b08c4e41108c0e4110801000000f4d50c08ac *d80c085cdb0c0800000000582d0c08d8e41108e8e41108e0e411080000000010dc0c0800000000 *ec060c080000000060dc0b080000000004dd0c0800000000000000000000000088dd0c08000000 *000000000000000000f0dd0c0814df0c0800000000d05e0c08f8e411080100000008e00c080000 *0000d0e30c0800000000e0ec0c0800000000000000000000000048ed0c08000000000000000000 *000000b0ed0c0800000000e8ed0c080000000084ee0c08000000000000000000000000ecee0c08 *00000000000000000000000054ef0c08000000008cef0c080000000024f00c0800000000000000 *00000000008cf00c08000000000000000000000000f4f00c08000000002cf10c080000000048dc *0b082900000048dc0b082800000048dc0b0820000000f0f10c0800000000000000000000000048 *dc0b085b00000048dc0b085d00000048dc0b082c00000064f20c0800000000b8f20c0800000000 *d0f50c08a0f60c08f8f60c0800000000b4f90c0804fa0c0860dc0b080b00000058fa0c08000000 *00a8fa0c080000000048fb0c080000000084fb0c0800000000d4fb0c0824fc0c080000000048ff *0c08b8ff0c0830000d0800000000a4000d080000000014050d08000000008c050d08dc050d082c *060d087c060d08f4060d0860070d0874070d08b0070d0800080d086c080d08d8080d084c090d08 *000000000000000000000000b8090d08000000000000000000000000240a0d0800000000a8e90b *0820e7110800000000dc0b0d08000000000000000000000000440c0d083c0d0d08000000000000 *000000000000b80d0d08000000000000000000000000280e0d0800000000cc0e0d0800000000d4 *100d08bc110d0800000000000000000000000060120d08000000000000000000000000c8120d08 *00000000000000000000000038130d080000000084140d08000000001c150d0800000000b8150d *08000000004c170d0800000000701b0d08b01b0d08041c0d08000000000000000000000000701c *0d08000000000000000000000000d81c0d08541d0d08a8e90b0894e7110800000000481e0d0800 *000000741e0d08941e0d08201f0d08341f0d08000000000000000000000000d01f0d08f41f0d08 *00000000000000000000000090200d08a4200d0800000000000000000000000040210d0860210d *0894210d0808220d08d4220d08a0230d08c8230d0894240d08c4240d08ec240d080c250d082c25 *0d088cdd0b08e8e61108e4e611080100000058de0b083ce411082ce4110824e4110820e4110818 *e4110844e411081ce4110828e4110800000000582d0c08dce61108c4e61108ece6110800000000 *f0130e0870e8110848e8110834e411080000000054250d0888250d08f4250d0800000000000000 *00000000005c260d08f8280d0814290d084c5f0d08b8e81108010000004c5f0d08c0e811080100 *00004c5f0d08c8e8110801000000086b0c08ace811083cd71108010000000100000048e00b0800 *00c03f60dc0b0864000000e4290d086c2a0d0800000000a82a0d0800000000e42a0d0800000000 *e8330d080000000024340d080000000078340d0800000000483d0d08000000008c3d0d08000000 *000c460d0800000000bc5f0d08e45f0d0800000000000000000000000054600d08000000000000 *000000000000c8600d0800000000000000000000000038610d080000000080610d080000000000 *000000000000008cdc0b08c0e91108b0e911080000000000620d0800000000ac750d0800000000 *000000000000000014760d0800000000947e0d084c810d08000000000000000000000000b8810d *0800000000000000000000000058820d08000000000000000000000000f4820d08e8830d08fc85 *0d082c860d084c860d0808880d08b4880d08fc880d08d4890d08f4890d08a8e90b08a0ec110800 *000000f8e80b08e0d01108d4e3110880ec110890ec1108e0d0110800000000288a0d0860dc0b08 *00000000448a0d08d08c0d083c8d0d08288e0d08788e0d08c88e0d08e48e0d08088f0d08000000 *000000000000000000888f0d08bc900d0824910d088c910d08d8910d0854920d0860dc0b080000 *0000a0920d0838950d08c0950d0800000000000000000000000028960d08000000000000000000 *00000098960d0800000000000000000000000000970d0870970d08f4970d0850980d08b4980d08 *d8990d088cdc0b0808ed110800d211080100000048dc0b0820000000e89a0d082c9b0d08000000 *00000000000000000090e90b081ced110800000000949b0d0800000000949d0d08000000000000 *000000000000fc9d0d08449e0d08949e0d08000000000000000000000000049f0d080000000000 *000000000000007c9f0d08000000000000000000000000ec9f0d08000000000000000000000000 *b4a00d080000000000000000000000007ca10d0800000000000000000000000044a20d08000000 *00000000000000000060dc0b080200000060dc0b080100000004a30d086ca50d08000000001ca7 *0d0800000000a8e90b08d0ed11080000000030aa0d080000000060aa0d0800000000a8e90b08f8 *ed11080000000090aa0d0800000000b0aa0d0868ab0d08ccad0d080000000080ae0d08ecb00d08 *00000000000000000000000094b10d08000000002cb30d080000000004b70d0800000000a8b90d *0800000000dcc20d0800000000c8c90d0800000000000000000000000038ca0d08000000000000 *000000000000b4ca0d0800000000000000000000000024cb0d0800000000000000000000000098 *cb0d0800000000000000000000000004cc0d0800000000000000000000000080cc0d0800000000 *000000000000000000cd0d0800000000b0d40d0800000000e8d50d0800000000fcd80d08000000 *00ecdf0d0814e00d0838e00d080000000088e00d080000000014e10d0800000000b4ec0d080000 *0000e8ee0d0840ef0d08dcef0d080000000014f50d0840f50d08c4f50d0848f60d08ccf60d0800 *f80d08e0f70d08f0f70d08b0f70d08f0f60d08fcf60d0808f70d0814f70d0820f70d082cf70d08 *38f70d0844f70d0850f70d085cf70d0868f70d0874f70d0880f70d088cf70d0898f70d08a4f70d *087cf80d0800000000e0f90d0834fa0d0860fa0d08b0fa0d08fcfa0d0848fb0d08c0fb0d080000 *000030fc0d0800000000acfc0d080000000054fd0d0800000000b4fd0d08000000000000000000 *00000024fe0d0800000000000000000000000094fe0d0800000000000000000000000004ff0d08 *0000000000000000000000006cff0d08c8050c0800000000c8050c08ffffffffc8050c08010000 *0060dc0b080100000060dc0b080000000060dc0b08ffffffffb8ff0d0868010e0814030e080000 *0000000000000000000084030e0800000000c0030e080000000044060e080000000080060e08ec *060e0838070e08d05e0c0814f111080100000094070e0800000000780b0e0800000000500c0e08 *00000000dc0e0e08000000000000000000000000580f0e080000000028110e0800000000000000 *000000000094110e085c120e08000000000000000000000000d4120e0800000000c8f10c08a4f1 *110824d211089cf1110894f111088cf1110884f111087cf1110874f11108dcf011080000000048 *dc0b082200000004140e0800000000000000000000000070140e08000000000000000000000000 *dc140e0800000000000000000000000048150e08000000000000000000000000b0150e0834170e *0800000000c0180e08000000009c190e088cdc0b08f4f1110800d21108010000005c1a0e080000 *00000c1c0e0800000000581c0e0800000000241d0e0800000000601d0e08000000000000000000 *000000cc1d0e08000000000000000000000000381e0e08000000000000000000000000a41e0e08 *000000000000000000000000101f0e080000000000000000000000007c1f0e0800000000000000 *0000000000e81f0e0800000000000000000000000054200e08000000000000000000000000c020 *0e080000000000000000000000002c210e0800000000000000000000000094210e08e8210e0800 *000000e4300c0801000000e4300c080000000020220e0800000000f0220e0858230e08c4230e08 *000000000000000000000000582d0c08dce61108c4e61108ece611080000000028240e08000000 *000000000000000000f8e80b08e0d01108f0e3110810e7110844f21108e0d0110800000000a024 *0e0800000000000000000000000010250e0800000000000000000000000084250e080000000000 *00000000000000f0250e080000000000000000000000005c260e08000000000000000000000000 *d4260e0800000000f8e80b08e0d01108f0e3110864f2110854f21108e0d0110800000000b0c40c *08fcd211080100000030280e0858280e0870280e0800000000000000000000000008290e080000 *00000000000000000000a0290e08000000000000000000000000382a0e08000000000000000000 *000000e02a0e08082b0e08402b0e08000000001c2f0e083c2f0e086c2f0e088c2f0e08b82f0e08 *20300e0850300e080000000000330e08000000002c330e083c330e084c330e0874dd0b0838f311 *086cf0110830f0110834f0110838f011083cf0110840f0110844f0110801000000e4050c0838f3 *110848f311082cd3110828d3110824d3110820d311081cd3110818d3110814d31108000000006c *330e08a0330e08dc330e08000000004c5f0d0874f311080100000048dc0b083a00000048dc0b08 *2c00000048dc0b082000000000380e080000000000000000000000009c380e0800000000000000 *000000000048dc0b085c00000048dc0b082f00000038390e08000000000000000000000000d439 *0e08000000000000000000000000703a0e080000000000000000000000000c3b0e080000000000 *00000000000000803b0e08000000004c5f0d08c8f3110801000000643d0e08583e0e0800000000 *e03f0e08b4400e08e8420e0800000000b8460e0870470e0828480e08e0480e0898490e085c4a0e *0800000000244b0e08bc4b0e08904c0e08000000000000000000000000c8050c0800000000f84c *0e088cdc0b0800f41108f0f3110800000000f04d0e08000000000000000000000000604e0e0800 *00000004580e085c580e0800000000b85b0e08000000006c650e08000000000000000000000000 *dc650e080000000084670e08000000008c690e08000000000000000000000000f0bb0b08b8f411 *0804d2110801000000f0bb0b08c0f4110804d2110801000000f0bb0b08e0f4110804d211080100 *0000f0bb0b08d0f4110804d2110801000000f0bb0b08e8f4110804d2110801000000f0bb0b08c8 *f4110804d2110801000000f0bb0b08d8f4110804d2110801000000f0bb0b08e8f3110804d21108 *01000000f0bb0b08d0f5110804d2110801000000f0bb0b08c8f5110804d2110801000000f0bb0b *0878f4110804d2110801000000f0bb0b0880f4110804d2110801000000f0bb0b0890f4110804d2 *110801000000f0bb0b0898f4110804d2110801000000f0bb0b08a0f4110804d2110801000000f0 *bb0b08a8f4110804d2110801000000f0bb0b08b0f4110804d2110801000000f0bb0b0888f41108 *04d2110801000000f0bb0b08f0f4110804d2110801000000f0bb0b08f8f4110804d21108010000 *00f0bb0b0800f5110804d2110801000000f0bb0b0808f5110804d2110801000000f0bb0b0810f5 *110804d2110801000000f0bb0b0818f5110804d2110801000000f0bb0b0820f5110804d2110801 *000000f0bb0b0828f5110804d2110801000000f0bb0b0830f5110804d2110801000000f0bb0b08 *38f5110804d2110801000000f0bb0b0840f5110804d2110801000000f0bb0b0848f5110804d211 *0801000000f0bb0b0850f5110804d2110801000000f0bb0b0858f5110804d2110801000000f0bb *0b0860f5110804d2110801000000f0bb0b0868f5110804d2110801000000f0bb0b0870f5110804 *d2110801000000006a0e080000000090ed0b080000000090ed0b08ff030000446d0e0800000000 *0000000000000000a46d0e08c46d0e08786f0e083c710e08000000000000000000000000b0710e *08000000000000000000000000f8e80b08e0d01108d4e31108f8f5110890ec1108e0d011080000 *000060dc0b08040000002c720e0800000000000000000000000094720e0810730e080000000000 *00000000000000b0730e0800000000000000000000000018740e0834750e085c760e0890770e08 *48dc0b080a00000028a90e0800f0110801000000c8780e0800000000000000000000000040790e *08000000002c800e08f0bb0b08c4e31108fcd1110801000000f0bb0b0820da110804d211080100 *0000f0bb0b08fcef110804d2110801000000f0bb0b08f8ef110804d211080100000078810e0800 *0000000000000000000000d0f70d08e0d0110801000000f0810e08000000000000000000000000 *60820e0800000000000000000000000028830e08000000000000000000000000e8830e086c860e *0800000000f8e80b08e0d01108d8e3110800d2110838f61108e0d0110800000000a8e90b0848f6 *110800000000f8e80b08e0d01108d8e3110800d2110868f61108e0d0110800000000f0860e0800 *000000b88a0e080000000000000000000000005c8b0e08000000000000000000000000cc8b0e08 *00000000108e0e080000000078910e0800000000fc960e0800000000000000000000000030980e *0800000000a8e90b0894f6110800000000a8e90b0878f611080000000014990e08000000000000 *00000000000060dc0b080000000084990e08000000000000000000000000f8990e081c9a0e0800 *00000000000000000000008c9a0e08000000000000000000000000049b0e080000000000000000 *000000006c9b0e08c09b0e080000000038a00e08d4a00e080000000000000000000000003ca10e *0800000000000000000000000048dc0b0829000000aca10e0800000000000000000000000024a2 *0e08000000000000000000000000a4a20e080000000000000000000000001ca30e080000000000 *0000000000000098a30e0800000000000000000000000010a40e08000000000000000000000000 *84a40e08000000000000000000000000f4a40e0800000000000000000000000068a50e08000000 *000000000000000000dca50e080000000000000000000000005ca60e0800000000000000000000 *0000d8a60e0800000000000000000000000048dc0b087d00000048a70e08000000000000000000 *00000004a80e080000000034a90e0844a90e080ca90e0870a90e0880aa0e08a0aa0e085cab0e08 *000000000000000000000000c4ab0e0800000000000000000000000024ac0e08a0ac0e080cad0e *0878ad0e08f4ad0e0868ae0e08c8050c0801000000d8ae0e080caf0e0800000000000000000000 *000018b00e0800000000acb00e0830b10e08000000000000000000000000a4b10e080000000010 *b20e0800000000000000000000000080b20e08000000000000000000000000f0b20e0800000000 *000000000000000060b30e08000000000000000000000000d0b30e080000000000000000000000 *0038b40e08c4b60e0814b70e08c8050c08ffffff7fd0b80e0800000000e4b90e08000000000000 *00000000000050ba0e08000000000000000000000000b8ba0e080cbb0e08000000000000000000 *000000d05e0c08b8f8110801000000c8050c080100000074bb0e08000000000000000000000000 *e4bb0e0800000000000000000000000060bc0e080000000070be0e084cbf0e0838c00e08000000 *0020c10e080000000090c20e0800000000e4c20e08000000008cc30e080000000054c40e080000 *00001cc50e0800000000f0130e08bcd3110890d111080cf911080000000048dc0b0827000000c0 *c50e0800000000000000000000000028c60e0800000000000000000000000048dc0b082d000000 *90c60e0894c70e080000000048dc0b080a000000f4ca0e0800000000cccb0e0810cc0e08000000 *00000000000000000094cc0e08000000006ccd0e0884cd0e08b8cd0e0800000000a8ce0e080000 *000070cf0e080000000028d00e0860d00e08000000000000000000000000d4d00e080000000000 *0000000000000044d10e08000000000000000000000000b0d10e08000000000000000000000000 *18d20e0870d20e08000000000000000000000000d8d20e08fcd20e080000000000000000000000 *0094d30e0800000000000000000000000030d40e0858d40e0880d40e08a8e90b0888fa11080000 *0000a4d40e0800000000000000000000000044d50e08000000000000000000000000dcd50e0800 *000000000000000000000074d60e080000000000000000000000001cd70e0844d70e086cd70e08 *94d70e08b0d70e08e0d70e0808d80e0844d80e08000000008cdd0b0888da110884da1108010000 *00582d0c084cda110838da11088cda110800000000ccd90e08d8da0e0800000000f8de0e080000 *000078e00e0848dc0b082200000034e30e08000000000000000000000000d0e30e080000000000 *0000000000000070e40e0800000000000000000000000048dc0b08090000000ce50e0800000000 *000000000000000074e50e0848dc0b080a0000001ce60e08000000000000000000000000c8050c *080a00000048dc0b085c0000008cdc0b0800fb1108f0fa11080000000084e60e08000000000000 *00000000000060dc0b080a000000f4e60e08000000000000000000000000c8050c080100000068 *e70e08000000000000000000000000d8e70e0800000000000000000000000060dc0b0810000000 *60dc0b080800000050e80e0800000000d8130e08e0f3110834f111080100000048dc0b08000000 *0048dc0b080100000048dc0b080e00000048dc0b080200000048dc0b080300000048dc0b080400 *000048dc0b080500000048dc0b080600000048dc0b080700000048dc0b080800000048dc0b0809 *00000048dc0b080a00000048dc0b080b00000048dc0b080c00000048dc0b080d00000048dc0b08 *0f00000048dc0b081000000048dc0b081100000048dc0b081200000048dc0b081300000048dc0b *081400000048dc0b081500000048dc0b081600000048dc0b081700000048dc0b081800000048dc *0b081900000048dc0b081a00000048dc0b081b00000048dc0b081c00000048dc0b081d00000048 *dc0b081e00000048dc0b081f0000008cdc0b0828fb110838fb11080000000014ea0e0800000000 *90ea0e080000000000000000000000002c6d0e0840f911080100000000eb0e0800000000000000 *00000000002c6d0e0858f911080100000048dc0b082700000048dc0b082200000068eb0e08c4ec *0e0810ed0e080000000014f10e080000000074f20e08000000000cf40e08000000000000000000 *00000074f40e08c8050c080200000048e00b080000000060dc0b0802000000c4f40e0800000000 *00000000000000002cf50e0860f50e08000000000000000000000000f8e80b08e0d01108d8e311 *0800d2110884fb1108e0d0110800000000d4f50e0804f60e08000000000000000000000000f8e8 *0b08e0d01108f4e31108b8e1110864fb1108e0d0110800000000f8e80b08e0d01108d0e31108b8 *e1110874fb1108e0d011080000000078f60e08000000000000000000000000ecf60e0800000000 *000000000000000060f70e08000000000000000000000000d8f70e080000000000000000000000 *0048f80e08000000000000000000000000c0f80e0800000000000000000000000038f90e080000 *00000000000000000000a8f90e0800000000000000000000000028fa0e08000000000000000000 *0000009cfa0e0800000000000000000000000010fb0e080000000000000000000000007cfb0e08 *000000000000000000000000f4fb0e080000000000000000000000006cfc0e0800000000000000 *0000000000e0fc0e080000000000000000000000005cfd0e08000000000000000000000000c8fd *0e0800000000000000000000000040fe0e08000000000000000000000000b0fe0e080000000000 *0000000000000028ff0e0800000000000000000000000090ff0e083c000f080000000000000000 *00000000a4000f08c8050c08ffffff7f2c010f08b4010f0848020f080000000000000000000000 *00cc020f080000000000000000000000003c030f08000000000000000000000000a8030f080000 *0000000000000000000014040f0800000000000000000000000080040f08000000000000000000 *000000ec040f0800000000000000000000000048dc0b082900000048dc0b082800000060050f08 *0000000024080f08d8090f08980b0f0800000000440d0f0800000000e4110f08c8050c08000000 *0038120f0800000000d0130f0800000000000000000000000040140f0800000000000000000000 *0000b8140f0800000000b0190f0868fc110860fc110858fc110814fc11080000000038160f0800 *000000c8f10c08b8fc1108e4fb1108b0fc110838fc110840fc1108a8fc1108a0fc110898fc1108 *94fc110800000000d8130e08bcf81108bcf8110801000000d0160f0800000000d8130e0834f111 *08bcf8110801000000c0190f08000000000000000000000000281a0f0800000000000000000000 *0000941a0f08000000000000000000000000fc1a0f08000000000000000000000000641b0f0800 *0000000000000000000000cc1b0f08000000000000000000000000341c0f080000000000000000 *000000009c1c0f08000000000000000000000000041d0f080000000000000000000000006c1d0f *0800000000000000000000000048dc0b085c000000d41d0f080000000000000000000000008cdc *0b08e4fc1108d4fc1108000000003c1e0f088c1e0f08501f0f08000000000000000000000000c0 *1f0f0800000000000000000000000048200f08000000000000000000000000b8200f0800000000 *00000000000000002c210f08000000000000000000000000f8e80b08e0d01108fce3110874f211 *08f4fc1108e0d0110800000000a0210f08c8210f08f0210f0818220f0840220f0864220f080000 *0000000000000000000024230f0858230f0884230f08000000000000000000000000ec230f0800 *00000000000000000000008cdc0b0824fd110814fd1108000000008cdc0b0834fd110800d21108 *010000005c240f0800000000b4250f08f8250f0800000000f82b0f08382c0f0800000000000000 *00000000008cdc0b0874fd11087cfd110800000000a02c0f080c2d0f08d82d0f0860dc0b080100 *00007c2e0f08000000002c2f0f08000000000000000000000000a02f0f08000000000000000000 *00000024300f08000000000000000000000000a8e90b08a0fd110801000000a8300f0800000000 *000000000000000018310f0800000000000000000000000088310f080000000000000000000000 *0048dc0b082d000000fc310f0800000000d4340f0858de0b0804fe110830fe1108dcf011080cdb *110834fe110838fe11083cfe110840fe110801000000c8050c0802000000e8360f0804370f0800 *000000000000000000000084370f08000000000000000000000000f4370f080000000080380f08 *000000000c390f0800000000d4390f08000000005c3a0f0800000000dc3a0f0800000000e4050c *08a4fe1108c4fe11088cfe11087cfe110884fe110854fe110850fe110848fe110844fe11080000 *0000583b0f08743b0f0800000000e43b0f0800000000583c0f0800000000cc3c0f0800000000f0 *130e08e8d3110808fe1108dcfe1108000000003c3d0f08000000008cdc0b08f4fe1108e4fe1108 *0000000060450f08000000000000000000000000d8450f080000000000000000000000003c460f *080000000000000000000000008cdc0b0818ff110808ff1108000000008cdc0b08e8f3110800d2 *11080100000048dc0b083d000000c8050c080a000000d8460f0800000000000000000000000048 *470f0800000000f4470f0800000000000000000000000064480f080000000018490f0800000000 *8cdc0b0838ff110840ff110800000000c4490f08fc490f08000000000000000000000000f8e80b *08e0d01108bcfd110800d2110800d21108e0d0110801000000604a0f08984a0f08000000000000 *000000000000284b0f08000000000000000000000000984b0f08000000000000000000000000c8 *050c080a000000004c0f08d04e0f084c4f0f08c84f0f0874dd0b0820db110880ff110874ff1108 *a4f81108e0f01108a0f811087cff110878ff11080100000000500f0838500f0870500f08ec500f *0824510f0880510f08e4510f08000000005c520f08dc520f080000000058530f08000000000000 *000000000000d4530f0800000000000000000000000054540f080000000084550f080000000008 *560f080000000090560f0800000000b4580f08000000008cdd0b08acff1108a8ff110801000000 *605b0f08000000000000000000000000582d0c08c0ff1108c8ff1108b4fe110800000000c05b0f *08085e0f08000000008cdc0b08e0ff1108d0ff110800000000b45e0f0800000000000000000000 *0000285f0f088cdc0b0800001208f0ff1108000000008cdc0b081000120800d211080100000044 *5f0f08000000000000000000000000b45f0f08000000008cdc0b08280012083000120800000000 *60600f0828610f08000000000000000000000000b0610f0800000000000000000000000018620f *08d0630f0830640f0890640f0890660f0878670f0860680f08c0680f0828690f0800000000246a *0f08046b0f08000000001c6c0f088c6f0f0804700f080000000054710f0800000000a4720f0800 *000000dc720f08000000008cdc0b0870001208600012080000000020730f080000000000000000 *000000008cdc0b0890001208800012080000000088730f0800000000000000000000000048dc0b *087c000000f0730f0800000000000000000000000060740f08000000008cdc0b08b0001208b800 *1208000000000c750f0880760f08f4770f085c790f08c8050c08ffffffffd07a0f08000000008c *dc0b08e8001208d800120800000000087d0f080000000000000000000000008cdc0b0808011208 *f800120800000000707d0f08000000000000000000000000d87d0f080000000000000000000000 *00487e0f08000000008cdc0b08280112083001120800000000f47e0f0800000000000000000000 *00008cdc0b085001120840011208000000005c7f0f080000000000000000000000008cdc0b0870 *01120860011208000000008cdc0b088001120800d2110801000000c47f0f080000000000000000 *0000000034800f08000000008cdc0b0898011208a0011208000000008cdc0b08c0011208b00112 *0800000000e0800f080000000000000000000000008cdc0b08d001120800d21108000000008cdc *0b08e001120800d211080100000048dc0b084000000048810f08000000000000000000000000b8 *810f08000000008cdc0b08f801120800021208000000008cdc0b08200212081002120800000000 *64820f08000000000000000000000000cc820f0800000000000000000000000048dc0b087e0000 *0034830f08000000000000000000000000a4830f08000000008cdc0b0840021208480212080000 *00008cdc0b0868021208580212080000000050840f08000000000000000000000000b8840f0800 *000000000000000000000028850f08000000008cdc0b088802120890021208000000008cdc0b08 *b0021208a002120800000000d4850f080000000000000000000000003c860f0800000000000000 *0000000000ac860f08000000008cdc0b08d0021208d8021208000000008cdc0b08f8021208e802 *12080000000058870f08000000000000000000000000c0870f0800000000000000000000000030 *880f08000000008cdc0b081803120820031208000000008cdc0b08400312083003120800000000 *dc880f0800000000000000000000000044890f08000000000000000000000000b4890f08000000 *008cdc0b086003120868031208000000008cdc0b08880312087803120800000000608a0f080000 *00000000000000000000c88a0f08000000000000000000000000388b0f08000000008cdc0b08a8 *031208b0031208000000008cdc0b08d0031208c003120800000000e48b0f080000000000000000 *000000004c8c0f08000000000000000000000000bc8c0f08000000008cdc0b08f0031208f80312 *08000000008cdc0b08180412080804120800000000688d0f08000000000000000000000000d08d *0f08000000000000000000000000408e0f08000000008cdc0b083804120840041208000000008c *dc0b08600412085004120800000000ec8e0f08000000000000000000000000548f0f0800000000 *0000000000000000c48f0f08000000008cdc0b088004120888041208000000008cdc0b08a80412 *08980412080000000070900f08000000000000000000000000d8900f0800000000000000000000 *000048910f08000000008cdc0b08c8041208d0041208000000008cdc0b08f0041208e004120800 *000000f4910f080000000000000000000000005c920f08000000000000000000000000cc920f08 *000000008cdc0b081005120818051208000000008cdc0b0838051208280512080000000078930f *08000000000000000000000000e0930f0800000000000000000000000050940f08000000008cdc *0b085805120860051208000000008cdc0b08800512087005120800000000fc940f080000000000 *0000000000000064950f08000000000000000000000000d4950f08000000008cdc0b08a0051208 *a8051208000000008cdc0b08c8051208b80512080000000080960f080000000000000000000000 *00e8960f0800000000000000000000000058970f08000000008cdc0b08e8051208f00512080000 *00008cdc0b0810061208000612080000000004980f080000000000000000000000006c980f0800 *0000000000000000000000dc980f08000000008cdc0b083006120838061208000000008cdc0b08 *58061208480612080000000088990f08000000000000000000000000f0990f0800000000000000 *0000000000609a0f08000000008cdc0b087806120880061208000000008cdc0b08a00612089006 *1208000000000c9b0f08000000000000000000000000749b0f08000000000000000000000000e4 *9b0f08000000008cdc0b08c0061208c8061208000000008cdc0b08e8061208d806120800000000 *909c0f08000000000000000000000000f89c0f08000000000000000000000000689d0f08000000 *008cdc0b080807120810071208000000008cdc0b08300712082007120800000000149e0f080000 *000000000000000000007c9e0f08000000000000000000000000ec9e0f08000000008cdc0b0850 *07120858071208000000008cdc0b08780712086807120800000000989f0f080000000000000000 *0000000000a00f0800000000000000000000000070a00f08000000008cdc0b0898071208a00712 *08000000008cdc0b08c0071208b0071208000000001ca10f0800000000000000000000000084a1 *0f08000000000000000000000000f4a10f08000000008cdc0b08e0071208e8071208000000008c *dc0b0808081208f807120800000000a0a20f0800000000000000000000000008a30f0800000000 *000000000000000078a30f08000000008cdc0b082808120830081208000000008cdc0b08500812 *08400812080000000024a40f080000000000000000000000008ca40f0800000000000000000000 *0000fca40f08000000008cdc0b087008120878081208000000008cdc0b08980812088808120800 *000000a8a50f0800000000000000000000000010a60f0800000000000000000000000080a60f08 *000000008cdc0b08b8081208c0081208000000008cdc0b08e0081208d0081208000000002ca70f *0800000000000000000000000094a70f0800000000000000000000000004a80f08000000008cdc *0b080809120800d21108000000008cdc0b081009120800d2110800000000b0a80f080000000000 *0000000000000018a90f0800000000000000000000000048dc0b082000000088a90f0800000000 *34aa0f080000000000000000000000009caa0f0800000000000000000000000048dc0b087f0000 *00ffffffff01000000e0bb1208d05c1008345d1008485d1008705d1008e85d100848dc0b080000 *000048dc0b080100000048dc0b080200000048dc0b080300000048dc0b080400000048dc0b0805 *00000048dc0b080600000048dc0b080700000048dc0b080800000048dc0b080900000048dc0b08 *0a00000048dc0b080b00000048dc0b080c00000048dc0b080d00000048dc0b080e00000048dc0b *080f00000048dc0b081000000048dc0b081100000048dc0b081200000048dc0b081300000048dc *0b081400000048dc0b081500000048dc0b081600000048dc0b081700000048dc0b081800000048 *dc0b081900000048dc0b081a00000048dc0b081b00000048dc0b081c00000048dc0b081d000000 *48dc0b081e00000048dc0b081f00000048dc0b082000000048dc0b082100000048dc0b08220000 *0048dc0b082300000048dc0b082400000048dc0b082500000048dc0b082600000048dc0b082700 *000048dc0b082800000048dc0b082900000048dc0b082a00000048dc0b082b00000048dc0b082c *00000048dc0b082d00000048dc0b082e00000048dc0b082f00000048dc0b083000000048dc0b08 *3100000048dc0b083200000048dc0b083300000048dc0b083400000048dc0b083500000048dc0b *083600000048dc0b083700000048dc0b083800000048dc0b083900000048dc0b083a00000048dc *0b083b00000048dc0b083c00000048dc0b083d00000048dc0b083e00000048dc0b083f00000048 *dc0b084000000048dc0b084100000048dc0b084200000048dc0b084300000048dc0b0844000000 *48dc0b084500000048dc0b084600000048dc0b084700000048dc0b084800000048dc0b08490000 *0048dc0b084a00000048dc0b084b00000048dc0b084c00000048dc0b084d00000048dc0b084e00 *000048dc0b084f00000048dc0b085000000048dc0b085100000048dc0b085200000048dc0b0853 *00000048dc0b085400000048dc0b085500000048dc0b085600000048dc0b085700000048dc0b08 *5800000048dc0b085900000048dc0b085a00000048dc0b085b00000048dc0b085c00000048dc0b *085d00000048dc0b085e00000048dc0b085f00000048dc0b086000000048dc0b086100000048dc *0b086200000048dc0b086300000048dc0b086400000048dc0b086500000048dc0b086600000048 *dc0b086700000048dc0b086800000048dc0b086900000048dc0b086a00000048dc0b086b000000 *48dc0b086c00000048dc0b086d00000048dc0b086e00000048dc0b086f00000048dc0b08700000 *0048dc0b087100000048dc0b087200000048dc0b087300000048dc0b087400000048dc0b087500 *000048dc0b087600000048dc0b087700000048dc0b087800000048dc0b087900000048dc0b087a *00000048dc0b087b00000048dc0b087c00000048dc0b087d00000048dc0b087e00000048dc0b08 *7f00000048dc0b088000000048dc0b088100000048dc0b088200000048dc0b088300000048dc0b *088400000048dc0b088500000048dc0b088600000048dc0b088700000048dc0b088800000048dc *0b088900000048dc0b088a00000048dc0b088b00000048dc0b088c00000048dc0b088d00000048 *dc0b088e00000048dc0b088f00000048dc0b089000000048dc0b089100000048dc0b0892000000 *48dc0b089300000048dc0b089400000048dc0b089500000048dc0b089600000048dc0b08970000 *0048dc0b089800000048dc0b089900000048dc0b089a00000048dc0b089b00000048dc0b089c00 *000048dc0b089d00000048dc0b089e00000048dc0b089f00000048dc0b08a000000048dc0b08a1 *00000048dc0b08a200000048dc0b08a300000048dc0b08a400000048dc0b08a500000048dc0b08 *a600000048dc0b08a700000048dc0b08a800000048dc0b08a900000048dc0b08aa00000048dc0b *08ab00000048dc0b08ac00000048dc0b08ad00000048dc0b08ae00000048dc0b08af00000048dc *0b08b000000048dc0b08b100000048dc0b08b200000048dc0b08b300000048dc0b08b400000048 *dc0b08b500000048dc0b08b600000048dc0b08b700000048dc0b08b800000048dc0b08b9000000 *48dc0b08ba00000048dc0b08bb00000048dc0b08bc00000048dc0b08bd00000048dc0b08be0000 *0048dc0b08bf00000048dc0b08c000000048dc0b08c100000048dc0b08c200000048dc0b08c300 *000048dc0b08c400000048dc0b08c500000048dc0b08c600000048dc0b08c700000048dc0b08c8 *00000048dc0b08c900000048dc0b08ca00000048dc0b08cb00000048dc0b08cc00000048dc0b08 *cd00000048dc0b08ce00000048dc0b08cf00000048dc0b08d000000048dc0b08d100000048dc0b *08d200000048dc0b08d300000048dc0b08d400000048dc0b08d500000048dc0b08d600000048dc *0b08d700000048dc0b08d800000048dc0b08d900000048dc0b08da00000048dc0b08db00000048 *dc0b08dc00000048dc0b08dd00000048dc0b08de00000048dc0b08df00000048dc0b08e0000000 *48dc0b08e100000048dc0b08e200000048dc0b08e300000048dc0b08e400000048dc0b08e50000 *0048dc0b08e600000048dc0b08e700000048dc0b08e800000048dc0b08e900000048dc0b08ea00 *000048dc0b08eb00000048dc0b08ec00000048dc0b08ed00000048dc0b08ee00000048dc0b08ef *00000048dc0b08f000000048dc0b08f100000048dc0b08f200000048dc0b08f300000048dc0b08 *f400000048dc0b08f500000048dc0b08f600000048dc0b08f700000048dc0b08f800000048dc0b *08f900000048dc0b08fa00000048dc0b08fb00000048dc0b08fc00000048dc0b08fd00000048dc *0b08fe00000048dc0b08ff00000060dc0b08f0ffffff60dc0b08f1ffffff60dc0b08f2ffffff60 *dc0b08f3ffffff60dc0b08f4ffffff60dc0b08f5ffffff60dc0b08f6ffffff60dc0b08f7ffffff *60dc0b08f8ffffff60dc0b08f9ffffff60dc0b08faffffff60dc0b08fbffffff60dc0b08fcffff *ff60dc0b08fdffffff60dc0b08feffffff60dc0b08ffffffff60dc0b080000000060dc0b080100 *000060dc0b080200000060dc0b080300000060dc0b080400000060dc0b080500000060dc0b0806 *00000060dc0b080700000060dc0b080800000060dc0b080900000060dc0b080a00000060dc0b08 *0b00000060dc0b080c00000060dc0b080d00000060dc0b080e00000060dc0b080f00000060dc0b *081000000000000500050005000500050005000d000d000d000d00850085008500850085008500 *8d009200920092009200920092009a009200050010000500100004010401040104010c01020082 *008200800080008000000002000200020046004400640044004400650045006500450065004500 *4500450045006500650065006400640000004500250000001e0000000812100814161008e41a10 *087c1d10087c201008fc2310082828100800000000000000000000000000000000000000000000 *0000fc5a110840861108fc5a1108a0861108e08611082087110880871108fc5a1108c0871108fc *5a110800881108fc5a110860881108c0881108fc5a11082089110880891108e0891108408a1108 *a08a1108e08a1108208b1108808b1108e08b1108fc5a1108208c1108808c1108e08c1108fc5a11 *08fc5a1108208d1108608d1108fc5a1108c08d1108008e1108608e1108fc5a1108fc5a1108a08e *1108fc5a1108008f1108608f1108fc5a1108000000001400000000000000017a5200017c08011b *0c0404880100001c0000001c00000000d1feff8301000000410e088502420d0545860487030000 *1c0000003c00000070d2feff0302000000410e088502420d05458604870300001c0000005c0000 *0060d4feff2b01000000410e088502420d05458604870300001c0000007c00000070d5feffb801 *000000410e088502420d0548860487030000000000000100000001000000010000002f00000001 *0000003f00000001000000510100000c000000a49304080d00000070ec10080400000068810408 *05000000508b040806000000a08404080a000000060400000b0000001000000015000000000000 *00030000006015120802000000f0020000140000001100000017000000b4900408110000009c90 *040812000000180000001300000008000000feffff6f2c900408ffffff6f02000000f0ffff6f56 *8f0408000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000ffffffff00000000ffffffff00000000000000006c141208000000 *0000000000d2930408e2930408f293040802940408129404082294040832940408429404085294 *040862940408729404088294040892940408a2940408b2940408c2940408d2940408e2940408f2 *940408029504081295040822950408329504084295040852950408629504087295040882950408 *92950408a2950408b2950408c2950408d2950408e2950408f29504080296040812960408229604 *0832960408429604085296040862960408729604088296040892960408a2960408b2960408c296 *0408d2960408e2960408f296040802970408129704082297040832970408429704085297040862 *970408729704088297040892970408a2970408b2970408c2970408d2970408e2970408f2970408 *029804081298040822980408329804084298040852980408629804087298040882980408929804 *08a2980408b2980408c2980408d2980408e2980408f29804080299040812990408229904083299 *0408429904085299040862990408729904088299040892990408a2990408000000000000000000 *00000000000000000000000000000000000000004743433a2028474e552920332e332e35202844 *656269616e20313a332e332e352d312900004743433a2028474e552920332e332e352028446562 *69616e20313a332e332e352d312900004743433a2028474e552920332e332e3520284465626961 *6e20313a332e332e352d342900004743433a2028474e552920332e332e35202844656269616e20 *313a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a *332e332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e *332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e *352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d *312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d3129 *00004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d31290000 *4743433a2028474e552920332e332e35202844656269616e20313a332e332e352d312900004743 *433a2028474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a *2028474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a2028 *474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e *552920332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e5529 *20332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e55292033 *2e332e35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e33 *2e35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e35 *202844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e352028 *44656269616e20313a332e332e352d312900004743433a2028474e552920332e332e3520284465 *6269616e20313a332e332e352d312900004743433a2028474e552920332e332e35202844656269 *616e20313a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e *20313a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e2031 *3a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a33 *2e332e352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e33 *2e352d312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e35 *2d312900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d31 *2900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d312900 *004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d3129000047 *43433a2028474e552920332e332e35202844656269616e20313a332e332e352d31290000474343 *3a2028474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a20 *28474e552920332e332e35202844656269616e20313a332e332e352d312900004743433a202847 *4e552920332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e55 *2920332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e552920 *332e332e35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e *332e35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e *35202844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e3520 *2844656269616e20313a332e332e352d312900004743433a2028474e552920332e332e35202844 *656269616e20313a332e332e352d312900004743433a2028474e552920332e332e352028446562 *69616e20313a332e332e352d312900004743433a2028474e552920332e332e3520284465626961 *6e20313a332e332e352d312900004743433a2028474e552920332e332e35202844656269616e20 *313a332e332e352d342900004743433a2028474e552920332e332e35202844656269616e20313a *332e332e352d342900004743433a2028474e552920332e332e35202844656269616e20313a332e *332e352d342900004743433a2028474e552920332e332e35202844656269616e20313a332e332e *352d342900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d *342900004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d3129 *00004743433a2028474e552920332e332e35202844656269616e20313a332e332e352d34290000 *4743433a2028474e552920332e332e35202844656269616e20313a332e332e352d312900000000 *0000001c000000020000000000040000000000b09904082200000000000000000000002c000000 *02004b09000004000000000070ec100811000000a49304080b000000d499040822000000000000 *0000000000240000000200480a000004000000000086ec100805000000b9930408020000000000 *000000000000210000000200af0000009c080000840800005f494f5f737464696e5f7573656400 *00000000ab000000020000000000040100000000b0990408d29904082e2e2f737973646570732f *693338362f656c662f73746172742e53002f686f6d652f676f746f6d2f64656269616e2f676c69 *62632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e6473312d31392e74 *657374342f676c6962632d322e332e322e6473312f6275696c642d747265652f676c6962632d32 *2e332e322f63737500474e5520415320322e313500018098080000020014000000040171000000 *d4990408d49904082e010000d6040000140300000102c301000002d53000000003460300000407 *02ac02000003224200000003a200000001080233020000032354000000038f000000020702a001 *0000032430000000024e02000003257100000003410300000407029f05000003288300000003a4 *0000000106026906000003294200000002d5060000032aa000000003e102000002050262030000 *032b540000000216060000032cbd00000004696e740004050299020000032d3000000002670500 *000332da00000003f3020000080502d40100000333ec000000033c03000008070245020000033b *da0000000274030000033cec00000002eb0200000388ec00000002530300000389300000000202 *060000038a3000000002ff010000038b710000000228040000038cec0000000266040000038d30 *00000002cb050000038e300000000213010000038f6101000003f80200000405027f0500000390 *da000000022b0200000391bd000000059501000008039206cd0000000392950100000223000007 *a5010000bd00000008a5010000010003460300000407025702000003927e01000002ba04000003 *93610100000200040000039471000000025c0000000395ec00000002df01000003963000000002 *0b00000003976101000002b0000000039830000000021a04000003996101000002a8050000039b *bd00000002d5050000039c6101000002a4020000039dbd000000020a06000003a0bd0000000284 *02000003a3bd00000002be01000003a661010000025901000003ab61010000024a04000003acda *00000002b205000003af71000000025704000003b0ec000000023501000003b371000000024a01 *000003b4ec000000021b01000003b6bd00000002cc06000003ba68010000026f04000003bba902 *00000904f300000002b606000003bcba0200000904c002000003ab0000000106020f04000003bf *bd000000025b05000003c2300000000a32040000024501610100000a6d03000002620130000000 *0b140300000404530c090400000451e90200000c5b030000045214030000000724030000c00200 *0008a501000003000549030000080454063d020000044ebd00000002230006d30000000453f502 *00000223040002f605000004542403000005790300000c051e0679040000051c56010000022300 *0638000000051d49030000022304000295050000051e5403000005a90300001005230679040000 *052168010000022300063800000005224903000002230800027a0100000523840300000df90300 *000406260e2d000000000e07020000010ead040000020e71050000030ee6010000040e60020000 *050ea8010000060e14000000070e67000000080edf05000009000d0e0400000406380e3a040000 *010e410600000200027306000006481904000009041f0400000f5204000001bd00000010520400 *00103705000010ba05000010c005000010cb05000010d705000010bd00000010bd000000000904 *580400001137050000b50200003c063f06c20200000675a607000002230006d60300000676e706 *000002230406bd0000000678bd000000022308067f060000067aba02000002230c06ca01000006 *7bba02000002231006c7000000067d0e0400000223140689050000067edd05000002231806cb03 *0000067f0306000002231c0657060000068024060000022320068b0600000684bd000000022324 *06ef0000000685bd00000002232806d10200000686bd00000002232c06740200000687bd000000 *022330068e020000068abd00000002233406af060000068c850600000223380009043d05000011 *ba050000c404000024064006330300000693d1050000022300069d0300000694d1050000022304 *06950300000698bd0000000223080616020000069cbd00000002230c069e04000006a0bd000000 *022310062501000006a2ac070000022314063800000006a349030000022318066106000006a79a *070000022320000904c00500000904c605000012420000000904d1050000090442000000090425 *0000000201010000064be80500000904ee0500000f0306000001e9020000105204000010420000 *00000240000000064e0e0600000904140600000f2406000001bd000000105204000000027f0400 *00064f2f060000090435060000134106000001105204000000029d06000006584c060000090452 *0600000f8506000001bd00000010520400001037050000108506000010c005000010ba05000010 *c005000010cb05000010d70500000014040220060000065d920600000904980600000fbc060000 *01bd000000108506000010c005000010c005000010d105000010d10500000002430500000661c7 *0600000904cd0600000fe706000001bd00000010e706000010f206000010d7050000000904ed06 *000012c00200000904f80600000904e706000002b403000006640907000009040f0700000f2407 *000001bd000000102407000010e706000000090485060000027f03000006653507000009043b07 *0000134707000001108506000000119a0700000103000014064206f4030000066a410600000223 *0006e0030000066b870600000223040690010000066c2a07000002230806af060000066d850600 *0002230c063a060000066e9a070000022310000904470700001564010000010904a00700000904 *4903000011e9070000820000000806ad06db00000006ae25000000022300064201000006af5204 *000002230406af06000006b0e90700000223080007f80700003d05000016a50100000002860100 *0006b1030800000904b2070000052e0800002c053406fa0100000532b207000002230006af0600 *0005333d050000022308000b4d0800002c05350cfa010000052fb20700000ca903000005340908 *000000025100000005352e08000002e40000000537a000000002000000000538bd00000002c006 *000005395400000002bf050000053a30000000178f040000011996080000010503a4ec100812bd *00000000f90000000200180100000401350100002f686f6d652f676f746f6d2f64656269616e2f *676c6962632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e6473312d31 *392e74657374342f676c6962632d322e332e322e6473312f6275696c642d747265652f69333836 *2d6c6962632f6373752f637274692e53002f686f6d652f676f746f6d2f64656269616e2f676c69 *62632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e6473312d31392e74 *657374342f676c6962632d322e332e322e6473312f6275696c642d747265652f676c6962632d32 *2e332e322f63737500474e5520415320322e3135000180f9000000020028010000040107020000 *2f686f6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f6361 *6c2f676c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e *6473312f6275696c642d747265652f693338362d6c6962632f6373752f6372746e2e53002f686f *6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f67 *6c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e647331 *2f6275696c642d747265652f676c6962632d322e332e322f63737500474e5520415320322e3135 *00018001110010061101120103081b0825081305000000011101100612011101030e1b0e250e13 *0b0000021600030e3a0b3b0b49130000032400030e0b0b3e0b000004240003080b0b3e0b000005 *130101130b0b3a0b3b0b0000060d00030e3a0b3b0b4913380a0000070101011349130000082100 *49132f0b0000090f000b0b491300000a1600030e3a0b3b05491300000b170101130b0b3a0b3b0b *00000c0d00030e3a0b3b0b491300000d040101130b0b3a0b3b0b00000e2800030e1c0d00000f15 *010113270c49130000100500491300001113010113030e0b0b3a0b3b0b00001226004913000013 *15010113270c0000140f000b0b0000151300030e3c0c000016210049130000173400030e3a0b3b *0b49133f0c020a000000011100100603081b0825081305000000011100100603081b0825081305 *0000005300000002002f0000000101fb0e0a0001010101000000012e2e2f737973646570732f69 *3338362f656c66000073746172742e530001000000000502b0990408032e01301e313a221f0319 *1d56571e1f59580201000101160000000200100000000101fb0e0a0001010101000000010000c0 *0000000200ba0000000101fb0e0a0001010101000000012f7573722f6c69622f6763632d6c6962 *2f693438362d6c696e75782f332e332e352f696e636c756465002e2e2f737973646570732f6765 *6e657269632f62697473002e2e2f7763736d6273002e2e2f737973646570732f676e75002e2e2f *69636f6e760000696e69742e63000000007374646465662e680001000074797065732e68000200 *0077636861722e68000300005f475f636f6e6669672e680004000067636f6e762e680005000000 *ce0000000200850000000101fb0e0a0001010101000000012f686f6d652f676f746f6d2f646562 *69616e2f676c6962632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e64 *73312d31392e74657374342f676c6962632d322e332e322e6473312f6275696c642d747265652f *693338362d6c6962632f6373750000637274692e53000100000000050270ec10080332011e2c1e *571e640201000101000502a49304080322011e2c3a0205000101000502d4990408030b011e2c1e *571e641e642c2c2d3a1e0201000101ac0000000200850000000101fb0e0a000101010100000001 *2f686f6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f6361 *6c2f676c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e *6473312f6275696c642d747265652f693338362d6c6962632f63737500006372746e2e53000100 *000000050286ec10080312013a1e0201000101000502b99304080309011e02010001015f475f69 *6e7433325f74005f5f74696d655f74005f5f47434f4e565f494e434f4d504c4554455f494e5055 *54005f5f47434f4e565f4f4b005f5f7374617465005f5f67636f6e765f696e69745f666374005f *475f69636f6e765f74005f5f726c696d36345f74005f5f47434f4e565f494c4c4547414c5f4445 *5343524950544f52005f5f67636f6e765f696e666f0073686f727420756e7369676e656420696e *7400756e7369676e65642063686172005f5f757365636f6e64735f74005f5f636f756e74657200 *5f5f666374005f5f76616c005f5f76616c7565005f5f6e7374657073005f475f696e7431365f74 *005f5f6d61785f6e65656465645f66726f6d005f5f67636f6e765f62746f77635f666374005f5f *6f66665f74005f5f7373697a655f74005f5f73746174657000696e69742e63005f5f667366696c *636e745f74005f5f7374657073005f5f667366696c636e7436345f74005f5f626c6b636e745f74 *005f5f67636f6e765f6c6f616465645f6f626a656374005f475f66706f7336345f74005f5f6763 *6f6e765f74005f5f7472616e735f656e645f666374005f5f755f696e74005f5f47434f4e565f49 *4c4c4547414c5f494e505554005f5f626c6b73697a655f74005f5f746f5f6e616d65005f5f7569 *6e7436345f74005f5f69645f74005f5f47434f4e565f454d5054595f494e505554005f5f636400 *5f5f696e6f5f74005f5f47434f4e565f4e4f434f4e56005f5f696e766f636174696f6e5f636f75 *6e746572005f5f7069645f74005f5f755f73686f7274005f5f636f756e74005f5f717561645f74 *005f5f755f6c6f6e67005f5f667369645f74005f5f47434f4e565f46554c4c5f4f555450555400 *5f5f6d61785f6e65656465645f746f005f5f74696d65725f74005f5f737461746566756c005f5f *75696e7433325f74005f5f6b65795f74005f5f755f63686172005f5f67636f6e765f7374657000 *5f5f73686c69625f68616e646c65005f5f6d696e5f6e65656465645f746f0073686f727420696e *74005f5f6465765f74006c6f6e67206c6f6e6720696e74005f5f67636f6e765f7472616e735f64 *61746100474e55204320332e332e35202844656269616e20313a332e332e352d3129005f5f6f75 *74627566006c6f6e67206c6f6e6720756e7369676e656420696e74005f5f7569645f74005f5f77 *636862005f5f75696e7431365f740077696e745f74005f5f755f717561645f74005f5f67636f6e *765f7472616e735f656e645f666374005f5f666c616773005f5f6f7574627566656e64005f5f63 *6f6d62696e6564005f5f67636f6e765f7472616e735f696e69745f666374005f5f696e69745f66 *6374005f5f6d6f646e616d65005f5f7472616e735f636f6e746578745f666374005f5f7472616e *735f666374005f5f726c696d5f74005f5f776368005f5f696e747074725f74005f5f7375736563 *6f6e64735f74005f5f696e6f36345f740077636861725f74005f5f47434f4e565f49535f4c4153 *54005f5f626c6b636e7436345f74005f5f6673626c6b636e7436345f74005f5f6d6f64655f7400 *5f5f71616464725f74005f5f706f73005f5f67636f6e765f656e645f666374005f494f5f737464 *696e5f75736564005f5f696e7465726e616c5f757365005f5f47434f4e565f4e4f4442005f5f63 *6c6f636b5f74005f5f67636f6e765f737465705f64617461002f686f6d652f676f746f6d2f6465 *6269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f676c6962635f322e332e322e *6473312d31392e74657374342f676c6962632d322e332e322e6473312f6275696c642d74726565 *2f676c6962632d322e332e322f637375005f5f67636f6e765f7472616e735f71756572795f6663 *74005f5f736f636b6c656e5f74005f5f696e7436345f74005f5f47434f4e565f4e4f4d454d005f *5f6f666636345f74005f5f62746f77635f666374005f475f66706f735f74005f5f696e74385f74 *005f5f64616464725f74005f5f6673626c6b636e745f74005f475f75696e7433325f74005f5f6e *6c696e6b5f74005f5f7377626c6b5f74005f5f47434f4e565f494e5445524e414c5f4552524f52 *005f5f6d6273746174655f74005f5f6769645f74005f5f636c6f636b69645f74005f5f696e7433 *325f74005f5f67636f6e765f7472616e735f636f6e746578745f666374005f5f6e657874005f5f *47434f4e565f49474e4f52455f4552524f5253005f5f656e645f666374005f5f7472616e73005f *5f75696e74385f74005f5f67636f6e765f666374005f5f66726f6d5f6e616d65005f5f6d696e5f *6e65656465645f66726f6d005f5f67636f6e765f7472616e735f666374005f5f64617461005f5f *63616464725f74005f475f75696e7431365f74005f5f6c6f66665f74005f5f696e7431365f7400 *002e73796d746162002e737472746162002e7368737472746162002e696e74657270002e6e6f74 *652e4142492d746167002e68617368002e64796e73796d002e64796e737472002e676e752e7665 *7273696f6e002e676e752e76657273696f6e5f72002e72656c2e64796e002e72656c2e706c7400 *2e696e6974002e74657874002e66696e69002e726f64617461002e65685f6672616d655f686472 *002e64617461002e65685f6672616d65002e64796e616d6963002e63746f7273002e64746f7273 *002e6a6372002e676f74002e627373002e636f6d6d656e74002e64656275675f6172616e676573 *002e64656275675f7075626e616d6573002e64656275675f696e666f002e64656275675f616262 *726576002e64656275675f6c696e65002e64656275675f73747200000000000000000000000000 *000000000000000000000000000000000000000000000000000000001b00000001000000020000 *003481040834010000130000000000000000000000010000000000000023000000070000000200 *000048810408480100002000000000000000000000000400000000000000310000000500000002 *00000068810408680100003803000004000000000000000400000004000000370000000b000000 *02000000a0840408a0040000b0060000050000000100000004000000100000003f000000030000 *0002000000508b0408500b0000060400000000000000000000010000000000000047000000ffff *ff6f02000000568f0408560f0000d60000000400000000000000020000000200000054000000fe *ffff6f020000002c9004082c100000700000000500000002000000040000000000000063000000 *09000000020000009c9004089c10000018000000040000000000000004000000080000006c0000 *000900000002000000b4900408b4100000f0020000040000000b00000004000000080000007500 *00000100000006000000a4930408a4130000170000000000000000000000040000000000000070 *0000000100000006000000bc930408bc130000f005000000000000000000000400000004000000 *7b0000000100000006000000b0990408b0190000c0520c00000000000000000010000000000000 *0081000000010000000600000070ec1008706c0c001b0000000000000000000000040000000000 *0000870000000100000002000000a0ec1008a06c0c00c8a4000000000000000000002000000000 *0000008f00000001000000020000006891110868110d002c000000000000000000000004000000 *000000009d0000000100000003000000a0a11108a0110d00307200000000000000000000200000 *0000000000a30000000100000002000000d0131208d0830d009c00000000000000000000000400 *000000000000ad00000006000000030000006c1412086c840d00e0000000050000000000000004 *00000008000000b600000001000000030000004c1512084c850d00080000000000000000000000 *0400000000000000bd00000001000000030000005415120854850d000800000000000000000000 *000400000000000000c400000001000000030000005c1512085c850d0004000000000000000000 *00000400000000000000c900000001000000030000006015120860850d00880100000000000000 *0000000400000004000000ce00000008000000030000000017120800870d0060b6000000000000 *000000002000000000000000d300000001000000000000000000000000870d003a070000000000 *00000000000100000000000000dc000000010000000000000000000000408e0d00780000000000 *0000000000000800000000000000eb000000010000000000000000000000b88e0d002500000000 *000000000000000100000000000000fb000000010000000000000000000000dd8e0d00450b0000 *0000000000000000010000000000000007010000010000000000000000000000229a0d00380100 *0000000000000000000100000000000000150100000100000000000000000000005a9b0d00b702 *00000000000000000000010000000000000021010000010000003000000000000000119e0d00df *0600000000000000000000010000000100000011000000030000000000000000000000f0a40d00 *2c01000000000000000000000100000000000000010000000200000000000000000000006cab0d *00f071060021000000f24c00000400000010000000090000000300000000000000000000005c1d *140024800600000000000000000001000000000000000000000000000000000000000000000000 *000000348104080000000003000100000000004881040800000000030002000000000068810408 *000000000300030000000000a0840408000000000300040000000000508b040800000000030005 *0000000000568f04080000000003000600000000002c9004080000000003000700000000009c90 *0408000000000300080000000000b4900408000000000300090000000000a49304080000000003 *000a0000000000bc9304080000000003000b0000000000b09904080000000003000c0000000000 *70ec10080000000003000d0000000000a0ec10080000000003000e000000000068911108000000 *0003000f0000000000a0a11108000000000300100000000000d013120800000000030011000000 *00006c1412080000000003001200000000004c1512080000000003001300000000005415120800 *00000003001400000000005c151208000000000300150000000000601512080000000003001600 *000000000017120800000000030017000000000000000000000000000300180000000000000000 *00000000000300190000000000000000000000000003001a000000000000000000000000000300 *1b0000000000000000000000000003001c0000000000000000000000000003001d000000000000 *0000000000000003001e0000000000000000000000000003001f00000000000000000000000000 *03002000000000000000000000000000030021000100000000000000000000000400f1ff100000 *0000000000000000000400f1ff0100000000000000000000000400f1ff80000000000000000000 *00000400f1ff8b00000000000000000000000400f1ff9600000000000000000000000400f1ff8b *00000000000000000000000400f1ff1000000000000000000000000400f1ff8b00000000000000 *000000000400f1ff0100000000000000000000000400f1ff1000000000000000000000000400f1 *ff0100000000000000000000000400f1ff8000000000000000000000000400f1ff8b0000000000 *0000000000000400f1ff0b01000000000000000000000400f1ff12010000000000000000000004 *00f1ff8401000000000000000000000400f1fff601000000000000000000000400f1ff12010000 *00000000000000000400f1ff0100000000000000000000000400f1ff1000000000000000000000 *000400f1ff0100000000000000000000000400f1ff8000000000000000000000000400f1ff1201 *000000000000000000000400f1ff01020000d49904080000000002000c00110200000000000000 *0000000400f1ff1c0200004c15120800000000010013002a020000541512080000000001001400 *380200005c151208000000000100150045020000a8a11108000000000100100049020000081712 *08010000000100170055020000009a04080000000002000c006b020000409a0408000000000200 *0c001102000000000000000000000400f1ff770200005015120800000000010013008402000058 *1512080000000001001400910200006814120800000000010011009f0200005c15120800000000 *01001500ab02000040ec10080000000002000c00c102000000000000000000000400f1ff840100 *0000000000000000000400f1fff601000000000000000000000400f1ffc1020000000000000000 *00000400f1ff0100000000000000000000000400f1ff1000000000000000000000000400f1ff01 *00000000000000000000000400f1ff8000000000000000000000000400f1ffc102000000000000 *000000000400f1ff330300002c9c04080000000000000c003c030000d4a1110800000000000010 *0049030000589e04080000000000000c0053030000509c04080000000000000c005d030000509c *04080000000000000c0068030000849c04080000000000000c0072030000849c04080000000000 *000c007d030000c09c04080000000000000c0087030000c09c04080000000000000c0092030000 *109d04080000000000000c009c030000109d04080000000000000c00a70300004c9d0408000000 *0000000c00b10300004c9d04080000000000000c00bc030000ac9d04080000000000000c00c603 *0000ac9d04080000000000000c00d1030000049e04080000000000000c00db030000049e040800 *00000000000c00e4030000589e04080000000000000c00ef0300007c9e04080000000000000c00 *f8030000dca1110800000000000010000504000084a104080000000000000c000f040000a89e04 *080000000000000c0019040000a89e04080000000000000c0022040000bc9e0408000000000000 *0c002d040000d89e04080000000000000c0037040000d89e04080000000000000c004204000028 *9f04080000000000000c004c040000289f04080000000000000c0057040000889f040800000000 *00000c0061040000889f04080000000000000c006c040000d89f04080000000000000c00760400 *00d89f04080000000000000c008104000014a004080000000000000c008b04000014a004080000 *000000000c009604000074a004080000000000000c00a004000074a004080000000000000c00ab *040000aca004080000000000000c00b5040000aca004080000000000000c00c00400000ca10408 *0000000000000c00ca0400000ca104080000000000000c00d30400004ca104080000000000000c *00de04000074a104080000000000000c00e804000084a104080000000000000c00f304000014a2 *04080000000000000c00fd04000020a204080000000000000c00070500002ca204080000000000 *000c001105000038a204080000000000000c001b05000044a204080000000000000c0025050000 *58a204080000000000000c002f05000058a204080000000000000c00380500006ca20408000000 *0000000c00420500006ca204080000000000000c004d050000a4a204080000000000000c005705 *0000a4a204080000000000000c0062050000e0a204080000000000000c006c050000e0a2040800 *00000000000c007705000034a304080000000000000c008105000040a304080000000000000c00 *8b0500004ca304080000000000000c009505000058a304080000000000000c009f05000070a304 *080000000000000c00a905000070a304080000000000000c00b405000098a30408000000000000 *0c00be050000a4a304080000000000000c00c8050000b0a304080000000000000c00d2050000c8 *a304080000000000000c00dc050000c8a304080000000000000c00e7050000f8a3040800000000 *00000c00f205000030a404080000000000000c00fc05000030a404080000000000000c00070600 *0060a404080000000000000c0012060000a0a404080000000000000c001c060000aca404080000 *000000000c0026060000aca404080000000000000c002f060000d8a404080000000000000c0039 *060000d8a404080000000000000c004406000014a504080000000000000c004e06000014a50408 *0000000000000c005906000060a504080000000000000c00630600006ca504080000000000000c *006d06000078a504080000000000000c007706000084a504080000000000000c0082060000a0a5 *04080000000000000c008c060000a0a504080000000000000c0097060000dca504080000000000 *000c00a1060000dca504080000000000000c00ac06000020a604080000000000000c00b7060000 *74a604080000000000000c00c106000080a604080000000000000c00cb06000080a60408000000 *0000000c00d406000098a604080000000000000c00de06000098a604080000000000000c00e906 *0000bca604080000000000000c00f4060000d8a604080000000000000c00fe060000d8a6040800 *00000000000c000907000014a704080000000000000c001307000014a704080000000000000c00 *1e07000058a704080000000000000c0029070000aca704080000000000000c0033070000b8a704 *080000000000000c003d070000b8a704080000000000000c0046070000d0a70408000000000000 *0c0050070000d0a704080000000000000c005b07000000a804080000000000000c006507000000 *a804080000000000000c007007000058a804080000000000000c007b07000068a8040800000000 *00000c008607000080a804080000000000000c009107000098a804080000000000000c009c0700 *00b0a804080000000000000c00a6070000eca804080000000000000c00b0070000f8a804080000 *000000000c00ba070000f8a804080000000000000c00c507000028a904080000000000000c00cf *07000028a904080000000000000c00da07000064a904080000000000000c00e407000064a90408 *0000000000000c00ef070000b8a904080000000000000c00fa0700000caa04080000000000000c *00040800000caa04080000000000000c000f08000028aa04080000000000000c001908000028aa *04080000000000000c002408000064aa04080000000000000c002e08000064aa04080000000000 *000c0039080000a8aa04080000000000000c0044080000fcaa04080000000000000c004e080000 *08ab04080000000000000c005808000008ab04080000000000000c00610800002cab0408000000 *0000000c006b0800002cab04080000000000000c00760800005cab04080000000000000c008008 *00005cab04080000000000000c008b080000c0ab04080000000000000c0095080000c0ab040800 *00000000000c00a008000010ac04080000000000000c00aa08000010ac04080000000000000c00 *b50800004cac04080000000000000c00bf0800004cac04080000000000000c00ca080000acac04 *080000000000000c00d4080000acac04080000000000000c00df08000004ad0408000000000000 *0c00e908000004ad04080000000000000c00f408000068ad04080000000000000c00fe08000068 *ad04080000000000000c000909000098ad04080000000000000c001309000098ad040800000000 *00000c001c090000f4ad04080000000000000c0026090000f4ad04080000000000000c00310900 *0028ae04080000000000000c003b09000028ae04080000000000000c004609000060ae04080000 *000000000c00500900006cae04080000000000000c005a09000078ae04080000000000000c0064 *09000084ae04080000000000000c006e0900009cae04080000000000000c00780900009cae0408 *0000000000000c0083090000c4ae04080000000000000c008d090000d0ae04080000000000000c *0097090000dcae04080000000000000c00a1090000f4ae04080000000000000c00ab090000f4ae *04080000000000000c00b609000024af04080000000000000c00c10900005caf04080000000000 *000c00cb0900005caf04080000000000000c00d60900008caf04080000000000000c00e1090000 *ccaf04080000000000000c00eb090000d8af04080000000000000c00f5090000d8af0408000000 *0000000c00fe09000004b004080000000000000c00080a000004b004080000000000000c00130a *000040b004080000000000000c001d0a000040b004080000000000000c00280a00008cb0040800 *00000000000c00320a0000a4b004080000000000000c003c0a0000a4b004080000000000000c00 *470a0000e0b004080000000000000c00510a0000e0b004080000000000000c005c0a000028b104 *080000000000000c00660a000028b104080000000000000c00710a000084b10408000000000000 *0c007b0a000084b104080000000000000c00860a0000b4b104080000000000000c00900a0000b4 *b104080000000000000c00990a00000cb204080000000000000c00a30a00000cb2040800000000 *00000c00ae0a000040b204080000000000000c00b80a000040b204080000000000000c00c30a00 *0070b204080000000000000c00cd0a00007cb204080000000000000c00d70a000088b204080000 *000000000c00e10a000094b204080000000000000c00eb0a0000acb204080000000000000c00f5 *0a0000acb204080000000000000c00000b0000d4b204080000000000000c000a0b0000e0b20408 *0000000000000c00140b0000ecb204080000000000000c001e0b000004b304080000000000000c *00280b000004b304080000000000000c00330b000034b304080000000000000c003e0b00006cb3 *04080000000000000c00480b00006cb304080000000000000c00530b00009cb304080000000000 *000c005e0b0000dcb304080000000000000c00680b0000e8b304080000000000000c00720b0000 *e8b304080000000000000c007b0b000014b404080000000000000c00850b000014b40408000000 *0000000c00900b000050b404080000000000000c009a0b000050b404080000000000000c00a50b *00009cb404080000000000000c00af0b0000b4b404080000000000000c00b90b0000b4b4040800 *00000000000c00c40b0000f0b404080000000000000c00ce0b0000f0b404080000000000000c00 *d90b000038b504080000000000000c00e30b000038b504080000000000000c00ee0b000094b504 *080000000000000c00f80b000094b504080000000000000c00030c0000c4b50408000000000000 *0c000d0c0000c4b504080000000000000c00160c00001cb604080000000000000c00200c00001c *b604080000000000000c002b0c000050b604080000000000000c00350c000050b6040800000000 *00000c00400c000080b604080000000000000c004a0c00008cb604080000000000000c00540c00 *0098b604080000000000000c005e0c0000a4b604080000000000000c00680c0000b0b604080000 *000000000c00720c0000c8b604080000000000000c007c0c0000c8b604080000000000000c0087 *0c000008b704080000000000000c00910c000008b704080000000000000c009c0c000034b70408 *0000000000000c00a60c000034b704080000000000000c00b10c000098b704080000000000000c *00bb0c000098b704080000000000000c00c60c0000d4b704080000000000000c00d00c0000d4b7 *04080000000000000c00db0c000034b804080000000000000c00e50c000034b804080000000000 *000c00f00c00008cb804080000000000000c00fa0c00008cb804080000000000000c00050d0000 *e4b804080000000000000c000f0d0000e4b804080000000000000c001a0d000014b90408000000 *0000000c00240d000014b904080000000000000c002d0d000060b904080000000000000c00370d *000060b904080000000000000c00400d000088b904080000000000000c004a0d000088b9040800 *00000000000c00550d0000b8b904080000000000000c005f0d0000b8b904080000000000000c00 *6a0d000010ba04080000000000000c00740d00001cba04080000000000000c007e0d000028ba04 *080000000000000c00880d000034ba04080000000000000c00920d000040ba0408000000000000 *0c009c0d00004cba04080000000000000c00a60d000064ba04080000000000000c00b00d000064 *ba04080000000000000c00bb0d00008cba04080000000000000c00c50d000098ba040800000000 *00000c00cf0d0000a4ba04080000000000000c00d90d0000bcba04080000000000000c00e30d00 *00bcba04080000000000000c00ee0d0000ecba04080000000000000c00f90d000024bb04080000 *000000000c00030e000024bb04080000000000000c000e0e000054bb04080000000000000c0019 *0e000094bb04080000000000000c00230e0000a0bb04080000000000000c002d0e0000a0bb0408 *0000000000000c00360e0000ccbb04080000000000000c00400e0000ccbb04080000000000000c *004b0e000008bc04080000000000000c00550e000008bc04080000000000000c00600e000054bc *04080000000000000c006a0e00006cbc04080000000000000c00740e00006cbc04080000000000 *000c007f0e0000a8bc04080000000000000c00890e0000a8bc04080000000000000c00940e0000 *f0bc04080000000000000c009e0e0000f0bc04080000000000000c00a90e000040bd0408000000 *0000000c00b30e00004cbd04080000000000000c00bd0e000064bd04080000000000000c00c70e *000064bd04080000000000000c00d20e0000a0bd04080000000000000c00dc0e0000a0bd040800 *00000000000c00e70e0000f4bd04080000000000000c00f10e0000f4bd04080000000000000c00 *fc0e000048be04080000000000000c00060f000048be04080000000000000c00110f0000acbe04 *080000000000000c001b0f0000acbe04080000000000000c00260f0000dcbe0408000000000000 *0c00300f0000dcbe04080000000000000c00390f000034bf04080000000000000c00430f000034 *bf04080000000000000c004c0f00005cbf04080000000000000c00560f00005cbf040800000000 *00000c00610f000090bf04080000000000000c006b0f000090bf04080000000000000c00760f00 *00e8bf04080000000000000c00800f0000f4bf04080000000000000c008a0f000000c004080000 *000000000c00940f00000cc004080000000000000c009e0f000024c004080000000000000c00a8 *0f000024c004080000000000000c00b30f00004cc004080000000000000c00bd0f000058c00408 *0000000000000c00c70f000064c004080000000000000c00d10f00007cc004080000000000000c *00db0f00007cc004080000000000000c00e60f0000acc004080000000000000c00f10f0000e4c0 *04080000000000000c00fb0f0000e4c004080000000000000c000610000014c104080000000000 *000c001110000054c104080000000000000c001b10000060c104080000000000000c0025100000 *60c104080000000000000c002e1000008cc104080000000000000c00381000008cc10408000000 *0000000c0043100000c8c104080000000000000c004d100000c8c104080000000000000c005810 *000014c204080000000000000c00621000002cc204080000000000000c006c1000002cc2040800 *00000000000c007710000068c204080000000000000c008110000068c204080000000000000c00 *8c100000b0c204080000000000000c0096100000b0c204080000000000000c00a11000000cc304 *080000000000000c00ab1000000cc304080000000000000c00b61000003cc30408000000000000 *0c00c01000003cc304080000000000000c00c910000094c304080000000000000c00d310000094 *c304080000000000000c00de100000c8c304080000000000000c00e8100000c8c3040800000000 *00000c00f3100000f8c304080000000000000c00fd10000004c404080000000000000c00071100 *0010c404080000000000000c00111100001cc404080000000000000c001b11000034c404080000 *000000000c002511000034c404080000000000000c003011000064c404080000000000000c003a *11000070c404080000000000000c004411000088c404080000000000000c004e11000088c40408 *0000000000000c0059110000b0c404080000000000000c0063110000bcc404080000000000000c *006d110000c8c404080000000000000c0077110000e0c404080000000000000c0081110000e0c4 *04080000000000000c008c11000010c504080000000000000c009711000048c504080000000000 *000c00a111000048c504080000000000000c00ac11000078c504080000000000000c00b7110000 *b8c504080000000000000c00c1110000c4c504080000000000000c00cb110000c4c50408000000 *0000000c00d4110000f0c504080000000000000c00de110000f0c504080000000000000c00e911 *00002cc604080000000000000c00f31100002cc604080000000000000c00fe11000078c6040800 *00000000000c000812000090c604080000000000000c001212000090c604080000000000000c00 *1d120000ccc604080000000000000c0027120000ccc604080000000000000c003212000014c704 *080000000000000c003c12000014c704080000000000000c004712000070c70408000000000000 *0c005112000070c704080000000000000c005c120000a0c704080000000000000c0066120000a0 *c704080000000000000c006f12000018c804080000000000000c007912000018c8040800000000 *00000c008212000030c804080000000000000c008c12000030c804080000000000000c00951200 *0058c804080000000000000c009f12000058c804080000000000000c00aa12000094c804080000 *000000000c00b412000094c804080000000000000c00bf120000ecc804080000000000000c00c9 *120000f8c804080000000000000c00d312000004c904080000000000000c00dd12000010c90408 *0000000000000c00e712000028c904080000000000000c00f112000028c904080000000000000c *00fc12000050c904080000000000000c00061300005cc904080000000000000c001013000068c9 *04080000000000000c001a13000080c904080000000000000c002413000080c904080000000000 *000c002f130000b0c904080000000000000c003a130000e8c904080000000000000c0044130000 *e8c904080000000000000c004f13000018ca04080000000000000c005a13000058ca0408000000 *0000000c006413000064ca04080000000000000c006e13000064ca04080000000000000c007713 *000090ca04080000000000000c008113000090ca04080000000000000c008c130000ccca040800 *00000000000c0096130000ccca04080000000000000c00a113000018cb04080000000000000c00 *ab13000030cb04080000000000000c00b513000030cb04080000000000000c00c01300006ccb04 *080000000000000c00ca1300006ccb04080000000000000c00d5130000b4cb0408000000000000 *0c00df130000b4cb04080000000000000c00ea13000010cc04080000000000000c00f413000010 *cc04080000000000000c00ff13000040cc04080000000000000c000914000040cc040800000000 *00000c001214000098cc04080000000000000c001c14000098cc04080000000000000c00271400 *00cccc04080000000000000c0031140000cccc04080000000000000c003c14000008cd04080000 *000000000c004614000008cd04080000000000000c004f140000cccf04080000000000000c0059 *140000cccf04080000000000000c0062140000f4cf04080000000000000c006c140000f4cf0408 *0000000000000c007714000030d004080000000000000c008114000030d004080000000000000c *008c14000068d004080000000000000c009614000068d004080000000000000c00a1140000ccd0 *04080000000000000c00ab140000ccd004080000000000000c00b41400005cd104080000000000 *000c00be1400005cd104080000000000000c00c914000098d104080000000000000c00d3140000 *98d104080000000000000c00dc14000064d204080000000000000c00e514000028a21108000000 *0000001000f214000070d404080000000000000c00fc14000078d204080000000000000c000615 *000078d204080000000000000c0011150000d8d204080000000000000c001b150000d8d2040800 *00000000000c002615000014d304080000000000000c003015000014d304080000000000000c00 *3b15000074d304080000000000000c004515000074d304080000000000000c0050150000ccd304 *080000000000000c005a150000ccd304080000000000000c006515000008d40408000000000000 *0c006f15000008d404080000000000000c007a15000070d404080000000000000c0085150000b4 *d404080000000000000c008e15000030a2110800000000000010009b15000058e0040800000000 *00000c00a5150000c4d404080000000000000c00b0150000d4d404080000000000000c00bb1500 *00dcd404080000000000000c00c615000058d504080000000000000c00d015000058d504080000 *000000000c00db15000084d504080000000000000c00e515000094d504080000000000000c00ef *15000094d504080000000000000c00fa150000b4d504080000000000000c000516000014d60408 *0000000000000c000f16000014d604080000000000000c001a16000074d604080000000000000c *002416000074d604080000000000000c002f160000d4d604080000000000000c003a16000034d7 *04080000000000000c004416000034d704080000000000000c004f16000094d704080000000000 *000c005916000094d704080000000000000c006416000000d804080000000000000c006e160000 *00d804080000000000000c007916000060d804080000000000000c0084160000ccd80408000000 *0000000c008e160000dcd804080000000000000c0098160000dcd804080000000000000c00a316 *000004d904080000000000000c00ad16000004d904080000000000000c00b81600005cd9040800 *00000000000c00c21600005cd904080000000000000c00cd160000b8d904080000000000000c00 *d7160000b8d904080000000000000c00e2160000e8d904080000000000000c00ed16000020da04 *080000000000000c00f716000020da04080000000000000c000217000080da0408000000000000 *0c000c17000080da04080000000000000c0017170000d8da04080000000000000c0021170000d8 *da04080000000000000c002c17000008db04080000000000000c00371700005cdb040800000000 *00000c00411700005cdb04080000000000000c004c170000bcdb04080000000000000c00561700 *00bcdb04080000000000000c0061170000f8db04080000000000000c006b170000f8db04080000 *000000000c007617000058dc04080000000000000c008017000058dc04080000000000000c008b *170000b0dc04080000000000000c0095170000b0dc04080000000000000c00a0170000e0dc0408 *0000000000000c00ab17000040dd04080000000000000c00b517000050dd04080000000000000c *00bf17000050dd04080000000000000c00ca17000078dd04080000000000000c00d417000078dd *04080000000000000c00df170000d0dd04080000000000000c00e9170000d0dd04080000000000 *000c00f417000020de04080000000000000c00ff1700006cde04080000000000000c000a180000 *7cde04080000000000000c0015180000f0de04080000000000000c001f180000fcde0408000000 *0000000c0029180000fcde04080000000000000c003418000024df04080000000000000c003e18 *000024df04080000000000000c004918000060df04080000000000000c0054180000ccdf040800 *00000000000c005e180000d8df04080000000000000c0068180000d8df04080000000000000c00 *7118000058e004080000000000000c007c18000074e004080000000000000c008518000038a211 *0800000000000010009218000088e004080000000000000c009c18000088e00408000000000000 *0c00a718000020e104080000000000000c00b118000020e104080000000000000c00bc18000058 *e104080000000000000c00c618000058e104080000000000000c00d1180000a4e1040800000000 *00000c00dc180000c0e104080000000000000c00e6180000c0e104080000000000000c00f11800 *00f8e104080000000000000c00fb180000f8e104080000000000000c000619000048e204080000 *000000000c001019000048e204080000000000000c001b19000094e204080000000000000c0026 *19000000e304080000000000000c003019000010e304080000000000000c003a19000010e30408 *0000000000000c004519000048e304080000000000000c004f19000048e304080000000000000c *005a19000084e304080000000000000c006419000084e304080000000000000c006f190000bce3 *04080000000000000c0079190000bce304080000000000000c008419000010e404080000000000 *000c008e19000010e404080000000000000c00991900005ce404080000000000000c00a3190000 *5ce404080000000000000c00ae190000ace404080000000000000c00b8190000ace40408000000 *0000000c00c3190000e8e404080000000000000c00cd190000e8e404080000000000000c00d819 *000038e504080000000000000c00e219000038e504080000000000000c00ed19000090e5040800 *00000000000c00f719000090e504080000000000000c00021a0000cce504080000000000000c00 *0c1a0000cce504080000000000000c00171a000030e604080000000000000c00211a000030e604 *080000000000000c002c1a00008ce604080000000000000c00361a00008ce60408000000000000 *0c00411a0000cce604080000000000000c004b1a0000cce604080000000000000c00561a000020 *e704080000000000000c00601a000020e704080000000000000c006b1a000014e8040800000000 *00000c00741a000050a211080000000000001000811a0000ace904080000000000000c008b1a00 *002ce804080000000000000c00951a00002ce804080000000000000c00a01a000068e804080000 *000000000c00aa1a000068e804080000000000000c00b51a0000b8e804080000000000000c00bf *1a0000b8e804080000000000000c00ca1a0000f4e804080000000000000c00d41a0000f4e80408 *0000000000000c00df1a000054e904080000000000000c00e91a000054e904080000000000000c *00f41a0000ace904080000000000000c00ff1a0000f0e904080000000000000c00081b000058a2 *11080000000000001000151b000004ea04080000000000000c001f1b000004ea04080000000000 *000c002a1b00005cea04080000000000000c00331b000068a211080000000000001000401b0000 *7cea04080000000000000c009711000068ea04080000000000000c004a1b000068ea0408000000 *0000000c00531b00007cea04080000000000000c005e1b0000d0ea04080000000000000c00671b *000078a211080000000000001000741b0000e4ea04080000000000000c007e1b0000e4ea040800 *00000000000c00891b000068eb04080000000000000c00941b0000a8eb04080000000000000c00 *9f1b0000e8eb04080000000000000c00aa1b000024ec04080000000000000c00b51b000034ec04 *080000000000000c00c01b0000d0ed04080000000000000c00cb1b000040ec0408000000000000 *0c00d61b000014ed04080000000000000c00e11b000054ec04080000000000000c00ec1b0000ac *ec04080000000000000c00f61b0000b4ec04080000000000000c00001c0000b4ec040800000000 *00000c00091c0000d4ec04080000000000000c00141c000004ed04080000000000000c001e1c00 *0014ed04080000000000000c00281c000058ed04080000000000000c00321c000058ed04080000 *000000000c003b1c000094ed04080000000000000c00461c0000c0ed04080000000000000c0050 *1c0000d0ed04080000000000000c005a1c000004ee04080000000000000c00641c000004ee0408 *0000000000000c006f1c000044ee04080000000000000c007a1c00005cee04080000000000000c *00841c00005cee04080000000000000c008d1c0000a0ee04080000000000000c00981c0000ccee *04080000000000000c00a21c0000d8ee04080000000000000c00ac1c0000d8ee04080000000000 *000c00b71c0000f8ee04080000000000000c00c21c00005cef04080000000000000c00cd1c0000 *f8ef04080000000000000c00d71c0000f8ef04080000000000000c00e21c000008f00408000000 *0000000c00ed1c000044f004080000000000000c00f81c0000b8f004080000000000000c00021d *0000b8f004080000000000000c000d1d0000dcf004080000000000000c00171d0000dcf0040800 *00000000000c00221d00003cf104080000000000000c002d1d000080f104080000000000000c00 *381d0000e4f104080000000000000c00421d0000e4f104080000000000000c004d1d0000f0f104 *080000000000000c00581d000050f204080000000000000c00621d000050f20408000000000000 *0c006d1d000078f204080000000000000c00771d000078f204080000000000000c00821d0000a0 *f204080000000000000c008d1d0000f4f204080000000000000c00971d0000f4f2040800000000 *00000c00a21d000038f304080000000000000c00ad1d000098f304080000000000000c00b71d00 *0098f304080000000000000c00c21d0000c8f304080000000000000c00cc1d0000c8f304080000 *000000000c00d71d0000e4f304080000000000000c00e11d0000e4f304080000000000000c00ec *1d000044f404080000000000000c00f71d00009cf404080000000000000c00011e00009cf40408 *0000000000000c000c1e0000c8f404080000000000000c00161e0000c8f404080000000000000c *00211e000000f504080000000000000c002b1e000000f504080000000000000c00341e000024f5 *04080000000000000c003e1e000024f504080000000000000c00491e000054f504080000000000 *000c00531e000054f504080000000000000c005e1e0000a0f504080000000000000c00691e0000 *b0f504080000000000000c00741e000030f704080000000000000c007f1e0000c4f50408000000 *0000000c008a1e00006cf604080000000000000c00951e0000d0f504080000000000000c00a01e *000028f604080000000000000c00aa1e000028f604080000000000000c00b51e000060f6040800 *00000000000c00bf1e00006cf604080000000000000c00c91e0000b4f604080000000000000c00 *d31e0000b4f604080000000000000c00dc1e0000f8f604080000000000000c00e71e000024f704 *080000000000000c00f11e000030f704080000000000000c00fb1e000068f70408000000000000 *0c00051f000068f704080000000000000c00101f0000a4f704080000000000000c001a1f0000a4 *f704080000000000000c00251f0000c8f704080000000000000c00301f0000d0f7040800000000 *00000c003b1f0000f4f704080000000000000c00451f000000f804080000000000000c004f1f00 *0000f804080000000000000c005a1f00003cf804080000000000000c00651f000054f804080000 *000000000c006f1f000054f804080000000000000c00781f000098f804080000000000000c0083 *1f0000c4f804080000000000000c008d1f0000d0f804080000000000000c00971f0000d0f80408 *0000000000000c00a21f0000fcf804080000000000000c00ac1f0000fcf804080000000000000c *00b71f000038f904080000000000000c00c11f000038f904080000000000000c00cc1f00007cf9 *04080000000000000c00d71f0000c8f904080000000000000c00e21f000010fa04080000000000 *000c00ec1f000010fa04080000000000000c00f71f00004cfa04080000000000000c0001200000 *4cfa04080000000000000c000c2000009cfa04080000000000000c00162000009cfa0408000000 *0000000c0021200000d8fa04080000000000000c002b200000d8fa04080000000000000c003620 *000014fb04080000000000000c004020000014fb04080000000000000c004b20000064fb040800 *00000000000c005520000064fb04080000000000000c0060200000c4fb04080000000000000c00 *6a200000c4fb04080000000000000c007520000000fc04080000000000000c007f20000000fc04 *080000000000000c008a20000060fc04080000000000000c009420000060fc0408000000000000 *0c009d200000e8fc04080000000000000c00a820000008fd04080000000000000c00b220000014 *fd04080000000000000c00bc20000014fd04080000000000000c00c520000020fd040800000000 *00000c00d020000040fd04080000000000000c00da20000040fd04080000000000000c00e52000 *007cfd04080000000000000c00ef2000007cfd04080000000000000c00fa200000ccfd04080000 *000000000c0004210000ccfd04080000000000000c000f21000014fe04080000000000000c001a *21000058fe04080000000000000c0025210000bcfe04080000000000000c002f210000bcfe0408 *0000000000000c003a210000d4fe04080000000000000c0044210000d4fe04080000000000000c *004f21000010ff04080000000000000c005921000010ff04080000000000000c006421000060ff *04080000000000000c006e21000060ff04080000000000000c0077210000f0ff04080000000000 *000c0082210000180005080000000000000c00870c0000240005080000000000000c008c210000 *240005080000000000000c0095210000300005080000000000000c00a021000058000508000000 *0000000c00aa210000580005080000000000000c00b5210000800005080000000000000c00c021 *0000d80005080000000000000c00ca210000d80005080000000000000c00d52100001401050800 *00000000000c00df210000140105080000000000000c00ea210000600105080000000000000c00 *f4210000600105080000000000000c00ff210000b00105080000000000000c0009220000b00105 *080000000000000c0012220000400205080000000000000c001d2200006c020508000000000000 *0c00db0c0000780205080000000000000c0027220000780205080000000000000c003022000084 *0205080000000000000c003b220000b00205080000000000000c0045220000b002050800000000 *00000c0050220000cc0205080000000000000c005a220000cc0205080000000000000c00652200 *00080305080000000000000c006f220000080305080000000000000c007a220000580305080000 *000000000c0084220000580305080000000000000c008f220000a00305080000000000000c009a *220000f80305080000000000000c00a4220000f80305080000000000000c00af22000024040508 *0000000000000c00b9220000240405080000000000000c00c4220000c80405080000000000000c *00ce220000d40405080000000000000c00d8220000d40405080000000000000c00e12200003805 *05080000000000000c00ec220000600505080000000000000c00f62200006c0505080000000000 *000c00002300006c0505080000000000000c0009230000c40505080000000000000c0014230000 *f00505080000000000000c001e230000fc0505080000000000000c0028230000fc050508000000 *0000000c0033230000380605080000000000000c003d230000380605080000000000000c004823 *0000680605080000000000000c0053230000e80605080000000000000c005e2300006807050800 *00000000000c0069230000c40705080000000000000c0074230000440805080000000000000c00 *7f230000f00805080000000000000c0089230000f00805080000000000000c0094230000040905 *080000000000000c009f2300004c0905080000000000000c00aa230000a0090508000000000000 *0c00b4230000a00905080000000000000c00bf230000d00905080000000000000c00ca23000044 *0a05080000000000000c00d4230000440a05080000000000000c00df230000540a050800000000 *00000c00ea230000f40a05080000000000000c007f0e0000000b05080000000000000c00f42300 *00000b05080000000000000c00fd2300000c0b05080000000000000c0008240000880b05080000 *000000000c0012240000b80b05080000000000000c001b24000090a21108000000000000100028 *240000980c05080000000000000c0032240000cc0b05080000000000000c003c240000cc0b0508 *0000000000000c0047240000080c05080000000000000c0051240000080c05080000000000000c *005c240000580c05080000000000000c0066240000580c05080000000000000c0071240000980c *05080000000000000c007c240000000d05080000000000000c0086240000000d05080000000000 *000c00a70300003c0d05080000000000000c00b10300003c0d05080000000000000c00bc030000 *940d05080000000000000c00c6030000940d05080000000000000c0091240000b00e0508000000 *0000000c009c240000c00e05080000000000000c00a7240000d00e05080000000000000c00b224 *0000100f05080000000000000c00bc240000100f05080000000000000c00c7240000300f050800 *00000000000c00d1240000480f05080000000000000c00dc240000740f05080000000000000c00 *e7240000ac0f05080000000000000c00f2240000fc0f05080000000000000c00fc240000041105 *080000000000000c0007250000301105080000000000000c001225000070110508000000000000 *0c001c250000701105080000000000000c00272500007c1105080000000000000c0032250000a8 *1105080000000000000c003d250000b81105080000000000000c0048250000f811050800000000 *00000c0052250000f81105080000000000000c005d250000181205080000000000000c00672500 *00181205080000000000000c0072250000381205080000000000000c007c250000501205080000 *000000000c0087250000881205080000000000000c0092250000c01205080000000000000c009d *250000f81205080000000000000c00a8250000401305080000000000000c00b3250000a4130508 *0000000000000c00bd250000801405080000000000000c00c8250000b41405080000000000000c *00d2250000b41405080000000000000c00db250000e41405080000000000000c00470a0000f814 *05080000000000000c00e6250000f81405080000000000000c00ef250000281505080000000000 *000c00fa250000481505080000000000000c0004260000481505080000000000000c000f260000 *681505080000000000000c0019260000801505080000000000000c0024260000ac150508000000 *0000000c002f260000f81505080000000000000c003a2600005c1605080000000000000c00710a *0000c81605080000000000000c0044260000c81605080000000000000c004d2600000c17050800 *00000000000c00572600000c1705080000000000000c0060260000341705080000000000000c00 *6a260000341705080000000000000c00732600007c1705080000000000000c007d2600007c1705 *080000000000000c00862600008c1905080000000000000c008f260000f4a21108000000000000 *10009c260000a01905080000000000000c00a6260000a01905080000000000000c00b1260000f8 *1905080000000000000c00ba26000004a311080000000000001000c7260000181a050800000000 *00000c00d1260000041a05080000000000000c00db260000041a05080000000000000c00e42600 *00181a05080000000000000c00ef2600006c1a05080000000000000c00f826000014a311080000 *00000000100005270000801a05080000000000000c000f270000801a05080000000000000c001a *270000d81a05080000000000000c002327000024a31108000000000000100030270000f81a0508 *0000000000000c003a270000e41a05080000000000000c0044270000e41a05080000000000000c *004d270000f81a05080000000000000c00582700004c1b05080000000000000c006127000034a3 *110800000000000010006e270000601b05080000000000000c0078270000601b05080000000000 *000c0083270000f01b05080000000000000c008d270000f01b05080000000000000c0098270000 *241c05080000000000000c00a2270000241c05080000000000000c00ab2700006c1c0508000000 *0000000c00b52700006c1c05080000000000000c00c02700009c1c05080000000000000c00ca27 *00009c1c05080000000000000c00d5270000d01c05080000000000000c00df270000d01c050800 *00000000000c00ea270000041d05080000000000000c00f4270000041d05080000000000000c00 *fd270000501d05080000000000000c0007280000501d05080000000000000c0012280000881d05 *080000000000000c001c280000881d05080000000000000c0027280000d81d0508000000000000 *0c0031280000d81d05080000000000000c003a280000281e05080000000000000c004428000028 *1e05080000000000000c004f280000541e05080000000000000c0059280000541e050800000000 *00000c0064280000881e05080000000000000c006e280000881e05080000000000000c00792800 *00c01e05080000000000000c0083280000c01e05080000000000000c008e280000fc1e05080000 *000000000c0098280000fc1e05080000000000000c00a3280000541f05080000000000000c00ad *280000541f05080000000000000c00b8280000b41f05080000000000000c00c2280000b41f0508 *0000000000000c00cb280000682005080000000000000c00d428000054a3110800000000000010 *00e12800007c2005080000000000000c00eb2800007c2005080000000000000c00f6280000d420 *05080000000000000c00ff28000064a3110800000000000010000c290000f42005080000000000 *000c0016290000e02005080000000000000c0020290000e02005080000000000000c0029290000 *f42005080000000000000c0034290000482105080000000000000c003d29000074a31108000000 *00000010004a2900005c2105080000000000000c00542900005c2105080000000000000c005f29 *0000b42105080000000000000c006829000084a31108000000000000100075290000c821050800 *00000000000c007f290000c82105080000000000000c008a290000202205080000000000000c00 *9329000094a311080000000000001000a0290000402205080000000000000c00aa2900002c2205 *080000000000000c00b42900002c2205080000000000000c00bd29000040220508000000000000 *0c00c8290000942205080000000000000c00d1290000a4a311080000000000001000de290000a8 *2205080000000000000c00e8290000a82205080000000000000c00f32900000023050800000000 *00000c00fc290000b4a311080000000000001000092a0000142305080000000000000c00132a00 *00142305080000000000000c001e2a00006c2305080000000000000c00272a0000c4a311080000 *000000001000342a0000802305080000000000000c003e2a0000802305080000000000000c0049 *2a0000d82305080000000000000c00522a0000d4a3110800000000000010005f2a0000ec230508 *0000000000000c00692a0000ec2305080000000000000c00742a0000442405080000000000000c *007d2a0000e4a3110800000000000010008a2a0000642405080000000000000c00942a00005024 *05080000000000000c009e2a0000502405080000000000000c00a72a0000642405080000000000 *000c00b22a0000b82405080000000000000c00bb2a0000f4a311080000000000001000c82a0000 *042605080000000000000c00d22a0000d82405080000000000000c00dc2a0000d8240508000000 *0000000c00e72a0000082505080000000000000c00f12a0000082505080000000000000c00fc2a *0000742505080000000000000c00062b0000742505080000000000000c000f2b0000c025050800 *00000000000c00192b0000c02505080000000000000c00242b0000042605080000000000000c00 *2f2b0000642605080000000000000c00382b0000fca311080000000000001000452b0000c02605 *080000000000000c004f2b0000702605080000000000000c00592b000070260508000000000000 *0c00622b0000c02605080000000000000c006d2b0000fc2605080000000000000c00772b0000fc *2605080000000000000c00822b0000382705080000000000000c008c2b00003827050800000000 *00000c00972b0000c82705080000000000000c00a02b00000ca411080000000000001000ad2b00 *000c2e05080000000000000c00b72b0000f02705080000000000000c00c12b0000f02705080000 *000000000c00cc2b0000442805080000000000000c00d62b0000442805080000000000000c00df *2b0000642805080000000000000c00e92b0000642805080000000000000c00f42b00009c280508 *0000000000000c00fe2b00009c2805080000000000000c00092c0000fc2805080000000000000c *00132c0000fc2805080000000000000c001e2c0000382905080000000000000c00282c00003829 *05080000000000000c00332c0000842905080000000000000c003d2c0000842905080000000000 *000c00482c0000e42905080000000000000c00522c0000e42905080000000000000c005d2c0000 *202a05080000000000000c00672c0000202a05080000000000000c00722c00006c2a0508000000 *0000000c007c2c00006c2a05080000000000000c00872c0000c82a05080000000000000c00912c *0000c82a05080000000000000c009a2c0000e82a05080000000000000c00a42c0000e82a050800 *00000000000c00af2c0000202b05080000000000000c00b92c0000202b05080000000000000c00 *c42c0000842b05080000000000000c00ce2c0000842b05080000000000000c00d92c0000c02b05 *080000000000000c00e32c0000c02b05080000000000000c00ee2c00000c2c0508000000000000 *0c00f82c00000c2c05080000000000000c00032d0000702c05080000000000000c000d2d000070 *2c05080000000000000c00182d0000ac2c05080000000000000c00222d0000ac2c050800000000 *00000c002d2d0000f82c05080000000000000c00372d0000f82c05080000000000000c00422d00 *00582d05080000000000000c004c2d0000582d05080000000000000c00552d00007c2d05080000 *000000000c005f2d00007c2d05080000000000000c006a2d0000b42d05080000000000000c0074 *2d0000b42d05080000000000000c007d2d00000c2e05080000000000000c00882d000014a41108 *0000000000001000952d00002c2e05080000000000000c009e2d00001ca4110800000000000010 *00ab2d0000402e05080000000000000c00b52d0000402e05080000000000000c00c02d0000982e *05080000000000000c00c92d00002ca411080000000000001000d62d0000ac2e05080000000000 *000c00e02d0000ac2e05080000000000000c00eb2d0000042f05080000000000000c00f42d0000 *3ca411080000000000001000012e0000683f05080000000000000c000b2e0000302f0508000000 *0000000c00152e0000302f05080000000000000c00202e00006c2f05080000000000000c002a2e *00006c2f05080000000000000c00332e0000b82f05080000000000000c003d2e0000b82f050800 *00000000000c00482e0000e82f05080000000000000c00532e0000fc2f05080000000000000c00 *5d2e0000fc2f05080000000000000c00682e0000383005080000000000000c00722e0000383005 *080000000000000c007b2e0000783005080000000000000c00862e00008c300508000000000000 *0c00902e00008c3005080000000000000c009b2e0000c83005080000000000000c00a52e0000c8 *3005080000000000000c00ae2e0000143105080000000000000c00b82e00001431050800000000 *00000c00c32e0000443105080000000000000c00ce2e0000583105080000000000000c00d82e00 *00583105080000000000000c00e32e0000943105080000000000000c00ed2e0000943105080000 *000000000c00f62e0000d43105080000000000000c00012f0000e83105080000000000000c000b *2f0000e83105080000000000000c00162f0000243205080000000000000c00202f000024320508 *0000000000000c00292f0000643205080000000000000c00342f0000783205080000000000000c *003e2f0000783205080000000000000c00492f0000b43205080000000000000c00532f0000b432 *05080000000000000c005c2f0000003305080000000000000c00662f0000003305080000000000 *000c00712f0000303305080000000000000c007c2f0000443305080000000000000c00862f0000 *443305080000000000000c00912f0000803305080000000000000c009b2f000080330508000000 *0000000c00a42f0000c03305080000000000000c00af2f0000d43305080000000000000c00b92f *0000d43305080000000000000c00c42f0000103405080000000000000c00ce2f00001034050800 *00000000000c00d72f0000503405080000000000000c00e22f0000583405080000000000000c00 *ed2f0000903405080000000000000c00f82f0000ac3405080000000000000c0002300000b83405 *080000000000000c000c300000b83405080000000000000c0015300000d8340508000000000000 *0c0020300000043505080000000000000c002a300000043505080000000000000c003530000010 *3505080000000000000c003f300000443505080000000000000c00493000005435050800000000 *00000c0053300000543505080000000000000c005e300000983505080000000000000c00683000 *00983505080000000000000c0073300000f43505080000000000000c007d300000f43505080000 *000000000c0088300000203605080000000000000c0093300000703605080000000000000c009e *3000008c3605080000000000000c00a8300000983605080000000000000c00b230000098360508 *0000000000000c00bb300000b83605080000000000000c00c6300000e43605080000000000000c *00d0300000e43605080000000000000c00db300000f03605080000000000000c00e53000002437 *05080000000000000c00ef300000343705080000000000000c00f9300000343705080000000000 *000c0004310000683705080000000000000c000f310000c43705080000000000000c0019310000 *c43705080000000000000c0024310000003805080000000000000c002e31000034380508000000 *0000000c0038310000443805080000000000000c0042310000443805080000000000000c004d31 *0000783805080000000000000c0058310000c03805080000000000000c0063310000dc38050800 *00000000000c006d310000e83805080000000000000c0077310000e83805080000000000000c00 *80310000083905080000000000000c008b310000343905080000000000000c0095310000343905 *080000000000000c00a0310000403905080000000000000c00aa31000074390508000000000000 *0c00b4310000843905080000000000000c00be310000843905080000000000000c00c9310000c8 *3905080000000000000c00d3310000c83905080000000000000c00de310000243a050800000000 *00000c00e8310000243a05080000000000000c00f3310000503a05080000000000000c00fe3100 *009c3a05080000000000000c0009320000b83a05080000000000000c0013320000c43a05080000 *000000000c001d320000c43a05080000000000000c0026320000e43a05080000000000000c0031 *320000103b05080000000000000c003b320000103b05080000000000000c00463200001c3b0508 *0000000000000c0050320000503b05080000000000000c005a320000603b05080000000000000c *0064320000603b05080000000000000c006f320000903b05080000000000000c007a320000e83b *05080000000000000c0084320000e83b05080000000000000c008f320000243c05080000000000 *000c0099320000583c05080000000000000c00a3320000683c05080000000000000c00ad320000 *683c05080000000000000c00b8320000983c05080000000000000c00c3320000dc3c0508000000 *0000000c00ce320000f83c05080000000000000c00d8320000043d05080000000000000c00e232 *0000043d05080000000000000c00eb320000243d05080000000000000c00f6320000503d050800 *00000000000c0000330000503d05080000000000000c000b3300005c3d05080000000000000c00 *15330000903d05080000000000000c001f330000a03d05080000000000000c0029330000a03d05 *080000000000000c0034330000d03d05080000000000000c003f330000283e0508000000000000 *0c0049330000283e05080000000000000c0054330000643e05080000000000000c005e33000098 *3e05080000000000000c0068330000a83e05080000000000000c0072330000a83e050800000000 *00000c007d330000e43e05080000000000000c0087330000e43e05080000000000000c00903300 *00343f05080000000000000c009a330000343f05080000000000000c00a5330000683f05080000 *000000000c00b0330000cc3f05080000000000000c00b93300004ca411080000000000001000c6 *330000e03f05080000000000000c00d0330000e03f05080000000000000c00db3300005c400508 *0000000000000c00e53300005c4005080000000000000c00f0330000984005080000000000000c *00fa330000984005080000000000000c0005340000f04005080000000000000c000f340000f040 *05080000000000000c001a3400002c4105080000000000000c00243400002c4105080000000000 *000c002f340000984105080000000000000c0039340000984105080000000000000c0044340000 *e84105080000000000000c004e340000e84105080000000000000c00573400001c430508000000 *0000000c00613400001c4305080000000000000c006c340000484305080000000000000c007634 *0000484305080000000000000c0081340000f44305080000000000000c008b340000f443050800 *00000000000c00963400002c4405080000000000000c00a03400002c4405080000000000000c00 *ab340000644405080000000000000c00b5340000644405080000000000000c00c0340000904405 *080000000000000c00cb340000ac4405080000000000000c00d5340000ac440508000000000000 *0c00e0340000e84405080000000000000c00ea340000e84405080000000000000c00f334000044 *4505080000000000000c00fd340000444505080000000000000c00083500009045050800000000 *00000c0012350000904505080000000000000c001b350000f44505080000000000000c00263500 *00204605080000000000000c0030350000304605080000000000000c003a350000304605080000 *000000000c0045350000684605080000000000000c004f350000684605080000000000000c005a *350000a44605080000000000000c0064350000a44605080000000000000c006f350000e0460508 *0000000000000c0079350000e04605080000000000000c00843500001c4705080000000000000c *008e3500001c4705080000000000000c0099350000a44805080000000000000c00a3350000a448 *05080000000000000c00ac350000c44805080000000000000c00b6350000c44805080000000000 *000c00c1350000f84805080000000000000c00cb350000f84805080000000000000c00d6350000 *344905080000000000000c00e0350000344905080000000000000c00eb3500007c490508000000 *0000000c00f53500007c4905080000000000000c00fe350000c84905080000000000000c000836 *0000c84905080000000000000c0013360000004a05080000000000000c001d360000004a050800 *00000000000c0028360000804a05080000000000000c0032360000804a05080000000000000c00 *3b360000944a05080000000000000c0045360000944a05080000000000000c0050360000c84a05 *080000000000000c005a360000c84a05080000000000000c0063360000104b0508000000000000 *0c006d360000104b05080000000000000c0078360000404b05080000000000000c008236000040 *4b05080000000000000c008b360000804b05080000000000000c0095360000804b050800000000 *00000c00a0360000c04b05080000000000000c00aa360000c04b05080000000000000c00b53600 *00fc4b05080000000000000c00bf360000fc4b05080000000000000c00ca360000444c05080000 *000000000c00d4360000444c05080000000000000c00dd3600009c4c05080000000000000c00e7 *3600009c4c05080000000000000c00f2360000e04c05080000000000000c00fc360000e04c0508 *0000000000000c00073700004c4d05080000000000000c00113700004c4d05080000000000000c *001a370000944d05080000000000000c0024370000944d05080000000000000c002f370000c44d *05080000000000000c0039370000c44d05080000000000000c0042370000044e05080000000000 *000c004c370000044e05080000000000000c0057370000444e05080000000000000c0061370000 *444e05080000000000000c006c370000804e05080000000000000c0076370000804e0508000000 *0000000c0081370000c84e05080000000000000c008b370000c84e05080000000000000c009437 *0000204f05080000000000000c009e370000204f05080000000000000c00a9370000684f050800 *00000000000c00b3370000684f05080000000000000c00be370000d84f05080000000000000c00 *c8370000d84f05080000000000000c00d1370000885005080000000000000c00da37000094a411 *080000000000001000e73700009c5005080000000000000c00f13700009c500508000000000000 *0c00fc370000f45005080000000000000c0005380000a4a4110800000000000010001238000054 *5c05080000000000000c001c380000205105080000000000000c00263800002051050800000000 *00000c0031380000505105080000000000000c003c380000885105080000000000000c00463800 *00885105080000000000000c0051380000c05105080000000000000c005b380000c05105080000 *000000000c0066380000fc5105080000000000000c0070380000fc5105080000000000000c007b *380000485205080000000000000c0085380000485205080000000000000c0090380000a4520508 *0000000000000c009a380000a45205080000000000000c00a3380000c85205080000000000000c *00ad380000c85205080000000000000c00b8380000f45205080000000000000c00c33800004453 *05080000000000000c00cd380000445305080000000000000c00d83800007c5305080000000000 *000c00e23800007c5305080000000000000c00ed380000b85305080000000000000c00f7380000 *b85305080000000000000c0002390000045405080000000000000c000c39000004540508000000 *0000000c0017390000605405080000000000000c0021390000605405080000000000000c002a39 *0000845405080000000000000c0034390000845405080000000000000c003f390000b054050800 *00000000000c004a390000005505080000000000000c0054390000005505080000000000000c00 *5f390000385505080000000000000c0069390000385505080000000000000c0074390000745505 *080000000000000c007e390000745505080000000000000c0089390000c0550508000000000000 *0c0093390000c05505080000000000000c009e3900001c5605080000000000000c00a83900001c *5605080000000000000c00b1390000405605080000000000000c00bb3900004056050800000000 *00000c00c63900006c5605080000000000000c00d1390000bc5605080000000000000c00db3900 *00bc5605080000000000000c00e6390000545c05080000000000000c00f1390000f45605080000 *000000000c00fb390000f45605080000000000000c00063a00004c5705080000000000000c0010 *3a00004c5705080000000000000c001b3a0000845705080000000000000c00253a000084570508 *0000000000000c00303a0000e85705080000000000000c003a3a0000e85705080000000000000c *00453a0000245805080000000000000c004f3a0000245805080000000000000c005a3a00007058 *05080000000000000c00643a0000705805080000000000000c006f3a0000d05805080000000000 *000c00793a0000d05805080000000000000c00823a0000f45805080000000000000c008c3a0000 *f45805080000000000000c00973a0000205905080000000000000c00a23a000074590508000000 *0000000c00ac3a0000745905080000000000000c00b73a0000ac5905080000000000000c00c13a *0000ac5905080000000000000c00cc3a0000045a05080000000000000c00d63a0000045a050800 *00000000000c00e13a00003c5a05080000000000000c00eb3a00003c5a05080000000000000c00 *f63a0000a05a05080000000000000c00003b0000a05a05080000000000000c000b3b0000dc5a05 *080000000000000c00153b0000dc5a05080000000000000c00203b0000285b0508000000000000 *0c002a3b0000285b05080000000000000c00353b0000885b05080000000000000c003f3b000088 *5b05080000000000000c00483b0000ac5b05080000000000000c00523b0000ac5b050800000000 *00000c005d3b0000d85b05080000000000000c00683b0000445c05080000000000000c00723b00 *00aca4110800000000000010007f3b0000745c05080000000000000c00883b0000b4a411080000 *000000001000953b0000885c05080000000000000c009f3b0000885c05080000000000000c00aa *3b0000e05c05080000000000000c00b33b0000c4a411080000000000001000c03b0000f45c0508 *0000000000000c00ca3b0000f45c05080000000000000c00d53b00004c5d05080000000000000c *00de3b0000545d05080000000000000c00e73b00005c5d05080000000000000c00f03b0000eca4 *11080000000000001000fd3b0000fca4110800000000000010000a3c00000ca511080000000000 *001000173c0000705d05080000000000000c00213c0000705d05080000000000000c002c3c0000 *d45d05080000000000000c00363c0000d45d05080000000000000c00413c0000385e0508000000 *0000000c004b3c0000385e05080000000000000c00563c0000905e05080000000000000c005f3c *00002ca5110800000000000010006c3c0000b45e05080000000000000c00753c00001ca5110800 *00000000001000823c0000307305080000000000000c008c3c0000c85e05080000000000000c00 *963c0000c85e05080000000000000c00a13c0000045f05080000000000000c00ab3c0000045f05 *080000000000000c00b43c0000505f05080000000000000c00be3c0000505f0508000000000000 *0c00c93c0000805f05080000000000000c00d43c0000945f05080000000000000c00de3c000094 *5f05080000000000000c00e93c0000e05f05080000000000000c00f33c0000e05f050800000000 *00000c00fe3c00001c6005080000000000000c00083d00001c6005080000000000000c00133d00 *00746005080000000000000c001d3d0000746005080000000000000c00283d0000a06005080000 *000000000c00333d0000f86005080000000000000c003d3d0000f86005080000000000000c0048 *3d0000346105080000000000000c00523d0000686105080000000000000c005c3d000078610508 *0000000000000c00663d0000786105080000000000000c00713d0000b46105080000000000000c *007b3d0000b46105080000000000000c00843d0000046205080000000000000c008e3d00000462 *05080000000000000c00993d0000386205080000000000000c00a33d0000386205080000000000 *000c00ae3d00008c6205080000000000000c00b83d00008c6205080000000000000c00c33d0000 *c86205080000000000000c00cd3d0000c86205080000000000000c00d63d000014630508000000 *0000000c00e03d0000146305080000000000000c00eb3d0000446305080000000000000c00f63d *0000586305080000000000000c00003e0000586305080000000000000c000b3e0000a463050800 *00000000000c00153e0000a46305080000000000000c00203e0000e06305080000000000000c00 *2a3e0000e06305080000000000000c00353e0000386405080000000000000c003f3e0000386405 *080000000000000c004a3e0000646405080000000000000c00553e0000bc640508000000000000 *0c005f3e0000bc6405080000000000000c006a3e0000f86405080000000000000c00743e00002c *6505080000000000000c007e3e00003c6505080000000000000c00883e00003c65050800000000 *00000c00933e0000786505080000000000000c009d3e0000786505080000000000000c00a63e00 *00c86505080000000000000c00b03e0000c86505080000000000000c00bb3e0000fc6505080000 *000000000c00c53e0000fc6505080000000000000c00d03e0000506605080000000000000c00da *3e0000506605080000000000000c00e53e0000a86605080000000000000c00ef3e0000a8660508 *0000000000000c00fa3e0000e46605080000000000000c00043f0000e46605080000000000000c *000d3f0000306705080000000000000c00173f0000306705080000000000000c00223f00006067 *05080000000000000c002d3f0000746705080000000000000c00373f0000746705080000000000 *000c00423f0000b86705080000000000000c004c3f0000b86705080000000000000c00573f0000 *e46705080000000000000c00623f0000386805080000000000000c006c3f000038680508000000 *0000000c00773f0000746805080000000000000c00813f0000a86805080000000000000c008b3f *0000b86805080000000000000c00953f0000b86805080000000000000c00a03f0000f468050800 *00000000000c00aa3f0000f46805080000000000000c00b33f0000446905080000000000000c00 *bd3f0000446905080000000000000c00c83f0000786905080000000000000c00d23f0000786905 *080000000000000c00dd3f0000cc6905080000000000000c00e73f0000cc690508000000000000 *0c00f23f0000246a05080000000000000c00fc3f0000246a05080000000000000c000740000060 *6a05080000000000000c0011400000606a05080000000000000c001a400000ac6a050800000000 *00000c0024400000ac6a05080000000000000c002f400000dc6a05080000000000000c003a4000 *00f06a05080000000000000c0044400000f06a05080000000000000c004f400000346b05080000 *000000000c0059400000346b05080000000000000c0064400000606b05080000000000000c006f *400000b46b05080000000000000c0079400000b46b05080000000000000c0084400000f06b0508 *0000000000000c008e400000246c05080000000000000c0098400000346c05080000000000000c *00a2400000346c05080000000000000c00ad400000706c05080000000000000c00b7400000706c *05080000000000000c00c0400000c06c05080000000000000c00ca400000c06c05080000000000 *000c00d5400000f46c05080000000000000c00df400000f46c05080000000000000c00ea400000 *486d05080000000000000c00f4400000486d05080000000000000c00ff400000a06d0508000000 *0000000c0009410000a06d05080000000000000c0014410000dc6d05080000000000000c001e41 *0000dc6d05080000000000000c0027410000286e05080000000000000c0031410000286e050800 *00000000000c003c410000586e05080000000000000c00474100006c6e05080000000000000c00 *514100006c6e05080000000000000c005c410000b06e05080000000000000c0066410000b06e05 *080000000000000c0071410000dc6e05080000000000000c007c410000306f0508000000000000 *0c0086410000306f05080000000000000c00914100006c6f05080000000000000c009b410000a0 *6f05080000000000000c00a5410000b06f05080000000000000c00af410000b06f050800000000 *00000c00ba410000ec6f05080000000000000c00c4410000ec6f05080000000000000c00cd4100 *003c7005080000000000000c00d74100003c7005080000000000000c00e2410000707005080000 *000000000c00ec410000707005080000000000000c00f7410000c47005080000000000000c0001 *420000c47005080000000000000c000c4200001c7105080000000000000c00164200001c710508 *0000000000000c0021420000587105080000000000000c002b420000587105080000000000000c *0034420000a47105080000000000000c003e420000a47105080000000000000c0049420000d471 *05080000000000000c0054420000d87105080000000000000c005f420000007205080000000000 *000c0069420000007205080000000000000c00744200003c7205080000000000000c007e420000 *707205080000000000000c0088420000807205080000000000000c009242000080720508000000 *0000000c009d420000b47205080000000000000c00a7420000b47205080000000000000c00b042 *0000fc7205080000000000000c00ba420000fc7205080000000000000c00c54200003073050800 *00000000000c00d0420000a87305080000000000000c00da420000a87305080000000000000c00 *e5420000007405080000000000000c00ee420000087405080000000000000c00f7420000107405 *080000000000000c000043000054a5110800000000000010000d43000064a51108000000000000 *10001a43000074a51108000000000000100027430000247405080000000000000c003143000024 *7405080000000000000c003c430000887405080000000000000c00464300008874050800000000 *00000c0051430000ec7405080000000000000c005b430000ec7405080000000000000c00664300 *00447505080000000000000c006f43000084a5110800000000000010007c430000e07805080000 *000000000c0086430000707505080000000000000c0090430000707505080000000000000c009b *430000ac7505080000000000000c00a5430000ac7505080000000000000c00ae430000f8750508 *0000000000000c00b8430000f87505080000000000000c00c3430000287605080000000000000c *00ce4300003c7605080000000000000c00d84300003c7605080000000000000c00e34300008876 *05080000000000000c00ed430000887605080000000000000c00f8430000c47605080000000000 *000c0002440000c47605080000000000000c000d4400001c7705080000000000000c0017440000 *1c7705080000000000000c0022440000487705080000000000000c002d440000a0770508000000 *0000000c0037440000a07705080000000000000c0042440000dc7705080000000000000c004c44 *0000107805080000000000000c0056440000207805080000000000000c00604400002078050800 *00000000000c006b4400005c7805080000000000000c00754400005c7805080000000000000c00 *7e440000ac7805080000000000000c0088440000ac7805080000000000000c0093440000e07805 *080000000000000c009e440000447905080000000000000c00a744000094a51108000000000000 *1000b4440000587905080000000000000c00be440000587905080000000000000c00c9440000b0 *7905080000000000000c00d2440000b8a511080000000000001000df440000c479050800000000 *00000c00e9440000c47905080000000000000c00f44400001c7a05080000000000000c00fd4400 *00c8a5110800000000000010000a4500002c7d05080000000000000c0014450000487a05080000 *000000000c001e450000487a05080000000000000c0029450000807a05080000000000000c0033 *450000807a05080000000000000c003e450000d47a05080000000000000c0048450000d47a0508 *0000000000000c0051450000f47a05080000000000000c005b450000f47a05080000000000000c *00664500002c7b05080000000000000c00704500002c7b05080000000000000c007b450000907b *05080000000000000c0085450000907b05080000000000000c0090450000cc7b05080000000000 *000c009a450000cc7b05080000000000000c00a5450000187c05080000000000000c00af450000 *187c05080000000000000c00ba450000787c05080000000000000c00c4450000787c0508000000 *0000000c00cd4500009c7c05080000000000000c00d74500009c7c05080000000000000c00e245 *0000d47c05080000000000000c00ec450000d47c05080000000000000c00f54500002c7d050800 *00000000000c0000460000d0a5110800000000000010000d4600004c7d05080000000000000c00 *16460000d8a51108000000000000100023460000607d05080000000000000c002d460000607d05 *080000000000000c0038460000b87d05080000000000000c0041460000e8a51108000000000000 *10004e460000cc7d05080000000000000c0058460000cc7d05080000000000000c006346000024 *7e05080000000000000c006c4600000ca61108000000000000100079460000387e050800000000 *00000c0083460000387e05080000000000000c008e460000907e05080000000000000c00974600 *00987e05080000000000000c00a0460000a07e05080000000000000c00a946000034a611080000 *000000001000b646000044a611080000000000001000c346000054a611080000000000001000d0 *460000b47e05080000000000000c00da460000b47e05080000000000000c00e5460000187f0508 *0000000000000c00ef460000187f05080000000000000c00fa4600007c7f05080000000000000c *00044700007c7f05080000000000000c000f470000d47f05080000000000000c001847000074a6 *1108000000000000100025470000e87f05080000000000000c002f470000e87f05080000000000 *000c003a470000408005080000000000000c0043470000488005080000000000000c004c470000 *508005080000000000000c0055470000588005080000000000000c005e47000060800508000000 *0000000c0067470000688005080000000000000c0070470000aca6110800000000000010007d47 *0000bca6110800000000000010008a470000cca61108000000000000100097470000dca6110800 *00000000001000a4470000eca611080000000000001000b1470000fca611080000000000001000 *be4700007c8005080000000000000c00c84700007c8005080000000000000c00d3470000e08005 *080000000000000c00dd470000e08005080000000000000c00e847000044810508000000000000 *0c00f2470000448105080000000000000c00fd470000a88105080000000000000c0007480000a8 *8105080000000000000c00124800000c8205080000000000000c001c4800000c82050800000000 *00000c0027480000708205080000000000000c0031480000708205080000000000000c003c4800 *00dc8205080000000000000c0047480000ec8205080000000000000c0052480000048305080000 *000000000c005c480000048305080000000000000c0065480000448305080000000000000c0070 *480000608305080000000000000c007a480000608305080000000000000c0083480000a0830508 *0000000000000c008e480000c08305080000000000000c0098480000c08305080000000000000c *00a3480000f88305080000000000000c00ad480000f88305080000000000000c00b84800002484 *05080000000000000c00c3480000808405080000000000000c00cd480000808405080000000000 *000c00d8480000b88405080000000000000c00e2480000b88405080000000000000c00ed480000 *e48405080000000000000c00f8480000588505080000000000000c00024900009c850508000000 *0000000c000d490000c08505080000000000000c0017490000c08505080000000000000c002249 *0000e48505080000000000000c002d490000448605080000000000000c00374900004486050800 *00000000000c0042490000688605080000000000000c004d490000b48605080000000000000c00 *57490000b48605080000000000000c0062490000d88605080000000000000c006d490000248705 *080000000000000c0077490000248705080000000000000c008249000054870508000000000000 *0c008c490000548705080000000000000c0097490000908705080000000000000c00a149000090 *8705080000000000000c00ac490000f08705080000000000000c00b6490000f087050800000000 *00000c00c1490000208805080000000000000c00cb490000208805080000000000000c00d44900 *00788805080000000000000c00df4900008c8805080000000000000c00e94900008c8805080000 *000000000c00f4490000b08805080000000000000c00ff490000188905080000000000000c0009 *4a0000188905080000000000000c00144a0000348905080000000000000c001f4a000048890508 *0000000000000c00294a0000488905080000000000000c00344a00006c8905080000000000000c *003f4a0000d48905080000000000000c00494a0000d48905080000000000000c00544a0000f089 *05080000000000000c005e4a00001c8a05080000000000000c00684a00001c8a05080000000000 *000c00734a0000348a05080000000000000c007e4a0000488a05080000000000000c00884a0000 *488a05080000000000000c00934a00006c8a05080000000000000c009e4a0000d48a0508000000 *0000000c00a84a0000d48a05080000000000000c00b34a0000f88a05080000000000000c00bd4a *0000248b05080000000000000c00c74a0000248b05080000000000000c00d24a00003c8b050800 *00000000000c00dd4a0000508b05080000000000000c00e74a0000508b05080000000000000c00 *f24a0000748b05080000000000000c00fd4a0000dc8b05080000000000000c00074b0000dc8b05 *080000000000000c00124b0000008c05080000000000000c001c4b00002c8c0508000000000000 *0c00264b00002c8c05080000000000000c00314b0000448c05080000000000000c003b4b000070 *8c05080000000000000c00454b0000708c05080000000000000c00504b0000988c050800000000 *00000c005a4b0000988c05080000000000000c00654b0000c88c05080000000000000c006f4b00 *00c88c05080000000000000c007a4b0000048d05080000000000000c00844b0000048d05080000 *000000000c008f4b0000648d05080000000000000c00994b0000648d05080000000000000c00a4 *4b0000888d05080000000000000c00af4b0000f48d05080000000000000c00b94b0000208e0508 *0000000000000c00c24b00001ca711080000000000001000cf4b0000309505080000000000000c *00d94b00002c8e05080000000000000c00e44b00003c8e05080000000000000c00ef4b00004c8e *05080000000000000c00fa4b00005c8e05080000000000000c00054c00006c8e05080000000000 *000c00104c00007c8e05080000000000000c001b4c0000b08e05080000000000000c00254c0000 *b08e05080000000000000c00304c0000c08e05080000000000000c003b4c0000d08e0508000000 *0000000c00464c0000e08e05080000000000000c00514c0000f08e05080000000000000c005c4c *0000008f05080000000000000c00674c0000108f05080000000000000c00724c0000448f050800 *00000000000c007c4c0000448f05080000000000000c00874c0000548f05080000000000000c00 *924c0000648f05080000000000000c009d4c0000748f05080000000000000c00a84c0000848f05 *080000000000000c00b34c0000948f05080000000000000c00be4c0000a48f0508000000000000 *0c00c94c0000d88f05080000000000000c00d34c0000d88f05080000000000000c00de4c0000e8 *8f05080000000000000c00e94c0000f88f05080000000000000c00f44c00000890050800000000 *00000c00ff4c0000189005080000000000000c000a4d0000289005080000000000000c00154d00 *00389005080000000000000c00204d00006c9005080000000000000c002a4d00006c9005080000 *000000000c00354d00007c9005080000000000000c00404d00008c9005080000000000000c004b *4d00009c9005080000000000000c00564d0000ac9005080000000000000c00614d0000bc900508 *0000000000000c006c4d0000cc9005080000000000000c00774d0000009105080000000000000c *00814d0000009105080000000000000c008c4d0000109105080000000000000c00974d00002091 *05080000000000000c00a24d0000309105080000000000000c00ad4d0000409105080000000000 *000c00b84d0000509105080000000000000c00c34d0000609105080000000000000c00ce4d0000 *949105080000000000000c00d84d0000949105080000000000000c00e34d0000c8910508000000 *0000000c00ed4d0000d09105080000000000000c00f74d0000d09105080000000000000c00004e *0000e09105080000000000000c000b4e0000e49105080000000000000c00164e0000f891050800 *00000000000c00204e0000249205080000000000000c002a4e0000249205080000000000000c00 *354e00003c9205080000000000000c00404e0000509205080000000000000c004a4e00007c9205 *080000000000000c00544e00007c9205080000000000000c005f4e000094920508000000000000 *0c006a4e0000a89205080000000000000c00744e0000d49205080000000000000c007e4e0000d4 *9205080000000000000c00894e0000f89205080000000000000c00934e0000f892050800000000 *00000c009e4e0000309505080000000000000c00a94e0000309305080000000000000c00b34e00 *00309305080000000000000c00be4e00005c9305080000000000000c00c94e0000ac9305080000 *000000000c00d34e0000d89305080000000000000c00dd4e0000d89305080000000000000c00e8 *4e0000009405080000000000000c00f24e0000009405080000000000000c00fd4e000038940508 *0000000000000c00074f0000389405080000000000000c00124f0000649405080000000000000c *001d4f0000b49405080000000000000c00274f0000e09405080000000000000c00314f0000e094 *05080000000000000c003c4f0000209505080000000000000c00464f0000509505080000000000 *000c004f4f000024a7110800000000000010005c4f00009c9505080000000000000c00664f0000 *649505080000000000000c00704f0000649505080000000000000c007b4f00009c950508000000 *0000000c00864f0000d89505080000000000000c008f4f00003ca7110800000000000010009c4f *0000109705080000000000000c00a64f0000f09505080000000000000c00b04f0000f095050800 *00000000000c00bb4f0000249605080000000000000c00c54f0000249605080000000000000c00 *ce4f0000449605080000000000000c00d84f0000449605080000000000000c00e34f0000849605 *080000000000000c00ed4f0000849605080000000000000c00f64f0000e0960508000000000000 *0c0000500000e09605080000000000000c0009500000109705080000000000000c00145000002c *9705080000000000000c001d50000044a7110800000000000010002a5000007897050800000000 *00000c0034500000409705080000000000000c003e500000409705080000000000000c00495000 *00789705080000000000000c0054500000bc9705080000000000000c005e500000bc9705080000 *000000000c0067500000e49705080000000000000c0071500000e49705080000000000000c007a *5000004c9805080000000000000c00845000004c9805080000000000000c008d5000009c980508 *0000000000000c00975000009c9805080000000000000c00a0500000209a05080000000000000c *00ab500000309a05080000000000000c00b65000005c9a05080000000000000c00c15000009c9a *05080000000000000c00cb5000009c9a05080000000000000c00d6500000bc9a05080000000000 *000c00e0500000bc9a05080000000000000c00eb500000c89a05080000000000000c00f6500000 *fc9a05080000000000000c0000510000fc9a05080000000000000c00095100002c9b0508000000 *0000000c0014510000409b05080000000000000c001e510000409b05080000000000000c002751 *0000709b05080000000000000c0032510000909b05080000000000000c003c510000909b050800 *00000000000c0047510000b09b05080000000000000c0051510000b09b05080000000000000c00 *5c510000d09b05080000000000000c0066510000e89b05080000000000000c0071510000209c05 *080000000000000c007c510000649c05080000000000000c0087510000a89c0508000000000000 *0c0092510000e09c05080000000000000c009d510000389d05080000000000000c00a8510000b4 *9d05080000000000000c00b2510000149e05080000000000000c00bc510000149e050800000000 *00000c00c5510000649e05080000000000000c00cf510000649e05080000000000000c00d85100 *00b49f05080000000000000c00e0510000a0a711080000000000001000ec510000cca205080000 *000000000c00f5510000c89f05080000000000000c00fe510000c89f05080000000000000c0008 *520000f89f05080000000000000c001252000030a005080000000000000c001b52000030a00508 *0000000000000c002552000060a005080000000000000c002f52000098a005080000000000000c *003852000098a005080000000000000c0042520000c8a005080000000000000c004c52000000a1 *05080000000000000c005552000000a105080000000000000c005f52000030a105080000000000 *000c006952000068a105080000000000000c007252000068a105080000000000000c007c520000 *98a105080000000000000c0086520000d0a105080000000000000c008f520000d0a10508000000 *0000000c009952000000a205080000000000000c00a352000038a205080000000000000c00ac52 *000038a205080000000000000c00b652000068a205080000000000000c00c0520000bca2050800 *00000000000c00c9520000cca205080000000000000c00d3520000a8a711080000000000001000 *df520000dca205080000000000000c00e7520000b0a711080000000000001000f3520000f0a205 *080000000000000c00fc520000f0a205080000000000000c000653000048a30508000000000000 *0c000e530000c0a7110800000000000010001a5300005ca305080000000000000c00235300005c *a305080000000000000c002d530000b4a305080000000000000c0035530000d0a7110800000000 *0000100041530000a0a705080000000000000c004a530000c8a305080000000000000c00535300 *00c8a305080000000000000c005b530000e8a305080000000000000c0064530000e8a305080000 *000000000c006e5300001ca405080000000000000c00775300001ca405080000000000000c0081 *53000054a405080000000000000c008a53000054a405080000000000000c009253000074a40508 *0000000000000c009b53000074a405080000000000000c00a5530000a8a405080000000000000c *00ae530000a8a405080000000000000c00b8530000e0a405080000000000000c00c1530000e0a4 *05080000000000000c00c953000000a505080000000000000c00d253000000a505080000000000 *000c00dc53000034a505080000000000000c00e553000034a505080000000000000c00ef530000 *6ca505080000000000000c00f85300006ca505080000000000000c00005400008ca50508000000 *0000000c00095400008ca505080000000000000c0013540000c0a505080000000000000c001c54 *0000c0a505080000000000000c0026540000f8a505080000000000000c002f540000f8a5050800 *00000000000c003754000018a605080000000000000c004054000018a605080000000000000c00 *4a5400004ca605080000000000000c00535400004ca605080000000000000c005d54000084a605 *080000000000000c006654000084a605080000000000000c006e540000a4a60508000000000000 *0c0077540000a4a605080000000000000c0081540000d8a605080000000000000c008a540000d8 *a605080000000000000c009454000010a705080000000000000c009d54000010a7050800000000 *00000c00a554000030a705080000000000000c00ae54000030a705080000000000000c00b85400 *0064a705080000000000000c00c154000064a705080000000000000c00cb540000a0a705080000 *000000000c00d554000004aa05080000000000000c00dd540000e0a711080000000000001000e9 *54000018aa05080000000000000c00f254000018aa05080000000000000c00fc540000f0a71108 *0000000000001000085500005cad05080000000000000c001155000070aa05080000000000000c *001b55000080aa05080000000000000c0024550000b8aa05080000000000000c002d550000b8aa *05080000000000000c0037550000c8aa05080000000000000c0041550000d8aa05080000000000 *000c004a55000010ab05080000000000000c005355000010ab05080000000000000c005d550000 *20ab05080000000000000c006755000030ab05080000000000000c007055000068ab0508000000 *0000000c007955000068ab05080000000000000c008355000078ab05080000000000000c008d55 *000088ab05080000000000000c0096550000c0ab05080000000000000c009f550000c0ab050800 *00000000000c00a9550000d0ab05080000000000000c00b3550000e0ab05080000000000000c00 *bc55000018ac05080000000000000c00c555000018ac05080000000000000c00cf55000028ac05 *080000000000000c00d955000038ac05080000000000000c00e255000070ac0508000000000000 *0c00eb55000070ac05080000000000000c00f555000080ac05080000000000000c00ff55000090 *ac05080000000000000c0009560000a0ac05080000000000000c0013560000b0ac050800000000 *00000c001d560000c0ac05080000000000000c0027560000d0ac05080000000000000c00315600 *00e0ac05080000000000000c003b56000018ad05080000000000000c004456000018ad05080000 *000000000c004e56000050ad05080000000000000c00575600005cad05080000000000000c0061 *56000068ad05080000000000000c0069560000f4a71108000000000000100075560000acad0508 *0000000000000c007e56000074ad05080000000000000c008756000074ad05080000000000000c *0091560000acad05080000000000000c009b560000e8ad05080000000000000c00a3560000f0ad *05080000000000000c00ab560000f8ad05080000000000000c00b356000024a811080000000000 *001000bf56000034a811080000000000001000cb56000044a811080000000000001000d7560000 *0cae05080000000000000c00e05600000cae05080000000000000c00ea56000070ae0508000000 *0000000c00f356000070ae05080000000000000c00fd560000d4ae05080000000000000c000657 *0000d4ae05080000000000000c00105700002caf05080000000000000c001857000068a8110800 *000000000010002457000040af05080000000000000c002d57000040af05080000000000000c00 *3757000098af05080000000000000c0041570000a8af05080000000000000c004b570000b8af05 *080000000000000c0055570000dcaf05080000000000000c005e570000dcaf0508000000000000 *0c0068570000fcaf05080000000000000c0071570000fcaf05080000000000000c007b57000008 *b005080000000000000c008557000018b005080000000000000c008f5700003cb0050800000000 *00000c00985700003cb005080000000000000c00a257000048b005080000000000000c00ac5700 *0058b005080000000000000c00b65700007cb005080000000000000c00bf5700007cb005080000 *000000000c00c95700009cb005080000000000000c00d25700009cb005080000000000000c00dc *570000bcb005080000000000000c00e5570000d4b005080000000000000c00ef5700000cb10508 *0000000000000c00f957000054b105080000000000000c00035800009cb105080000000000000c *000d580000e4b105080000000000000c00175800002cb205080000000000000c002158000074b2 *05080000000000000c002b580000e4b205080000000000000c0034580000a0a811080000000000 *001000415800002cb505080000000000000c004b58000054b405080000000000000c0056580000 *64b405080000000000000c00615800007cb405080000000000000c006b5800007cb40508000000 *0000000c00765800002cb505080000000000000c0081580000a0b405080000000000000c008c58 *0000f4b405080000000000000c0096580000f4b405080000000000000c00a158000020b5050800 *00000000000c00ab580000a4a811080000000000001000b8580000aca811080000000000001000 *c558000048b505080000000000000c00ce580000b4a811080000000000001000db5800005cb505 *080000000000000c00e55800005cb505080000000000000c00f0580000b4b50508000000000000 *0c00f9580000c4a81108000000000000100006590000ccb505080000000000000c0010590000cc *b505080000000000000c001b5900002cb605080000000000000c0024590000d4a8110800000000 *000010003159000040b605080000000000000c003b59000040b605080000000000000c00465900 *0098b605080000000000000c004f590000e4a8110800000000000010005c590000acb605080000 *000000000c0066590000acb605080000000000000c007159000004b705080000000000000c007a *590000f4a8110800000000000010008759000018b705080000000000000c009159000018b70508 *0000000000000c009c59000070b705080000000000000c00a559000004a9110800000000000010 *00b259000084b705080000000000000c00bc59000084b705080000000000000c00c7590000dcb7 *05080000000000000c00d059000014a911080000000000001000dd590000f0b705080000000000 *000c00e7590000f0b705080000000000000c00f259000048b805080000000000000c00fb590000 *24a911080000000000001000085a000068b805080000000000000c00125a000054b80508000000 *0000000c001c5a000054b805080000000000000c00255a000068b805080000000000000c00305a *0000e4b805080000000000000c003a5a0000e4b805080000000000000c00455a000034b9050800 *00000000000c004f5a000034b905080000000000000c005a5a000094b905080000000000000c00 *645a000094b905080000000000000c006f5a0000ecb905080000000000000c00795a0000ecb905 *080000000000000c00845a000048ba05080000000000000c008e5a000048ba0508000000000000 *0c00995a000080ba05080000000000000c00a35a000080ba05080000000000000c00ac5a0000f8 *ba05080000000000000c00b55a00003ca911080000000000001000c25a00000cbb050800000000 *00000c00cc5a00000cbb05080000000000000c00d75a000064bb05080000000000000c00e05a00 *004ca911080000000000001000ed5a000078bb05080000000000000c00f75a000078bb05080000 *000000000c00025b0000d0bb05080000000000000c000b5b00005ca91108000000000000100018 *5b0000e4bb05080000000000000c00225b0000e4bb05080000000000000c002d5b00003cbc0508 *0000000000000c00365b00006ca911080000000000001000435b000050bc05080000000000000c *004d5b000050bc05080000000000000c00585b0000a8bc05080000000000000c00615b00007ca9 *110800000000000010006e5b0000bcbc05080000000000000c00785b0000bcbc05080000000000 *000c00835b00004cbd05080000000000000c008d5b00004cbd05080000000000000c00985b0000 *88bd05080000000000000c00a25b000088bd05080000000000000c00ad5b0000ccbd0508000000 *0000000c00b85b000008be05080000000000000c00c25b000008be05080000000000000c00cd5b *000044be05080000000000000c00d75b000044be05080000000000000c00e25b000080be050800 *00000000000c00ec5b000080be05080000000000000c00f75b0000d8be05080000000000000c00 *015c0000d8be05080000000000000c000c5c000030bf05080000000000000c00165c000030bf05 *080000000000000c00215c000084bf05080000000000000c002b5c000084bf0508000000000000 *0c00345c0000a8bf05080000000000000c003e5c0000a8bf05080000000000000c00495c0000e0 *bf05080000000000000c00535c0000e0bf05080000000000000c005e5c000030c0050800000000 *00000c00685c000030c005080000000000000c00735c000090c005080000000000000c007e5c00 *00f8c005080000000000000c00885c000008c105080000000000000c00925c000008c105080000 *000000000c009d5c000048c105080000000000000c00a75c000048c105080000000000000c00b2 *5c00007cc105080000000000000c00bc5c00007cc105080000000000000c00c55c000008c20508 *0000000000000c00ce5c000094a911080000000000001000db5c00000cc405080000000000000c *00e55c000030c205080000000000000c00ef5c000030c205080000000000000c00fa5c000090c2 *05080000000000000c00045d000090c205080000000000000c000f5d0000ccc205080000000000 *000c00195d0000ccc205080000000000000c00245d00002cc305080000000000000c002e5d0000 *2cc305080000000000000c00395d000084c305080000000000000c00435d000084c30508000000 *0000000c004e5d0000bcc305080000000000000c00585d0000bcc305080000000000000c00615d *00000cc405080000000000000c006c5d00005cc405080000000000000c00765d00005cc4050800 *00000000000c00815d000098c405080000000000000c008b5d000098c405080000000000000c00 *965d0000d4c405080000000000000c00a05d0000d4c405080000000000000c00ab5d00002cc505 *080000000000000c00b55d00002cc505080000000000000c00c05d000084c50508000000000000 *0c00ca5d000084c505080000000000000c00d55d0000d8c505080000000000000c00df5d0000d8 *c505080000000000000c00e85d0000fcc505080000000000000c00f25d0000fcc5050800000000 *00000c00fd5d000034c605080000000000000c00075e000034c605080000000000000c00125e00 *0084c605080000000000000c001c5e000084c605080000000000000c00275e0000f0c605080000 *000000000c00315e0000f0c605080000000000000c003a5e000084c705080000000000000c0045 *5e000098c705080000000000000c00505e0000bcc705080000000000000c005a5e0000c8c70508 *0000000000000c00645e0000c8c705080000000000000c006d5e0000f8c705080000000000000c *00775e0000f8c705080000000000000c00825e000028c805080000000000000c008c5e000028c8 *05080000000000000c00955e0000c4c805080000000000000c009f5e0000c4c805080000000000 *000c00aa5e000000c905080000000000000c00b45e000000c905080000000000000c00bf5e0000 *5cc905080000000000000c00c95e00005cc905080000000000000c00d45e000098c90508000000 *0000000c00de5e000098c905080000000000000c00e95e0000f0c905080000000000000c00f35e *0000f0c905080000000000000c00fe5e000048ca05080000000000000c00085f000048ca050800 *00000000000c00135f00009cca05080000000000000c001d5f00009cca05080000000000000c00 *265f0000c0ca05080000000000000c00305f0000c0ca05080000000000000c003b5f0000f8ca05 *080000000000000c00455f0000f8ca05080000000000000c00505f000048cb0508000000000000 *0c005a5f000048cb05080000000000000c00655f0000b4cb05080000000000000c006f5f0000b4 *cb05080000000000000c00785f000054cc05080000000000000c00825f000054cc050800000000 *00000c008d5f0000dccc05080000000000000c00965f0000bca911080000000000001000a35f00 *0014cd05080000000000000c00ad5f0000eccc05080000000000000c00b75f0000eccc05080000 *000000000c00c05f000014cd05080000000000000c00cb5f0000a8cd05080000000000000c00d6 *5f0000b8cd05080000000000000c00e15f00007cce05080000000000000c00ec5f0000cccd0508 *0000000000000c00f75f000024ce05080000000000000c00016000002cce05080000000000000c *000b6000002cce05080000000000000c001460000044ce05080000000000000c001f60000070ce *05080000000000000c00296000007cce05080000000000000c0033600000a4ce05080000000000 *000c003d600000a4ce05080000000000000c0048600000ecce05080000000000000c0052600000 *ecce05080000000000000c005d60000030cf05080000000000000c006760000030cf0508000000 *0000000c007260000064cf05080000000000000c007c60000064cf05080000000000000c008760 *0000b0cf05080000000000000c0092600000cccf05080000000000000c009c600000cccf050800 *00000000000c00a7600000fccf05080000000000000c00b260000068d005080000000000000c00 *bc60000078d005080000000000000c00c660000078d005080000000000000c00d1600000b0d005 *080000000000000c00db600000b0d005080000000000000c00e6600000f8d00508000000000000 *0c00f0600000f8d005080000000000000c00fb60000054d105080000000000000c000561000054 *d105080000000000000c0010610000a0d105080000000000000c001a610000a0d1050800000000 *00000c0025610000d8d105080000000000000c002f610000d8d105080000000000000c003a6100 *0038d205080000000000000c004461000038d205080000000000000c004f610000acd205080000 *000000000c0059610000acd205080000000000000c006261000068d305080000000000000c006c *61000068d305080000000000000c0077610000a4d305080000000000000c0081610000a4d30508 *0000000000000c008c610000e0d305080000000000000c0096610000e0d305080000000000000c *00a161000030d405080000000000000c00ab61000030d405080000000000000c00b661000088d4 *05080000000000000c00c061000088d405080000000000000c00cb610000c4d405080000000000 *000c00d5610000c4d405080000000000000c00e061000028d505080000000000000c00ea610000 *28d505080000000000000c00f56100007cd505080000000000000c00ff6100007cd50508000000 *0000000c0008620000a0d505080000000000000c0012620000a0d505080000000000000c001d62 *0000d8d505080000000000000c0027620000d8d505080000000000000c003262000028d6050800 *00000000000c003c62000028d605080000000000000c004762000094d605080000000000000c00 *5162000094d605080000000000000c005a62000090d705080000000000000c00646200009cd705 *080000000000000c006e620000a8d705080000000000000c0078620000c0d70508000000000000 *0c0082620000c0d705080000000000000c008d620000f4d705080000000000000c0097620000f4 *d705080000000000000c00a262000028d805080000000000000c00ac62000028d8050800000000 *00000c00b56200006cd805080000000000000c00bf6200006cd805080000000000000c00ca6200 *00a4d805080000000000000c00d4620000a4d805080000000000000c00df620000e8d805080000 *000000000c00ea62000020d905080000000000000c00f56200003cd905080000000000000c00ff *62000048d905080000000000000c000963000048d905080000000000000c001463000084d90508 *0000000000000c001e63000098d905080000000000000c002863000098d905080000000000000c *0033630000c0d905080000000000000c003d630000ccd905080000000000000c0048630000e8d9 *05080000000000000c0052630000e8d905080000000000000c005d63000024da05080000000000 *000c006763000024da05080000000000000c007263000080da05080000000000000c007c630000 *80da05080000000000000c0085630000e4da05080000000000000c009063000010db0508000000 *0000000c009a63000020db05080000000000000c00a463000020db05080000000000000c00af63 *000058db05080000000000000c00b963000058db05080000000000000c00c463000094db050800 *00000000000c00ce63000094db05080000000000000c00d9630000fcdb05080000000000000c00 *e3630000fcdb05080000000000000c00ee63000060dc05080000000000000c00f863000060dc05 *080000000000000c0003640000c8dc05080000000000000c000d640000d4dc0508000000000000 *0c0017640000e0dc05080000000000000c0021640000ecdc05080000000000000c002b640000f8 *dc05080000000000000c003564000004dd05080000000000000c004064000020dd050800000000 *00000c004a64000020dd05080000000000000c005564000054dd05080000000000000c005f6400 *0054dd05080000000000000c006a64000098dd05080000000000000c0075640000a8df05080000 *000000000c0080640000b8dd05080000000000000c008a640000b8dd05080000000000000c0095 *640000f4dd05080000000000000c009f640000f4dd05080000000000000c00aa6400004cde0508 *0000000000000c00b46400004cde05080000000000000c00bf64000098de05080000000000000c *00ca64000004df05080000000000000c00d464000010df05080000000000000c00de64000010df *05080000000000000c00e764000064df05080000000000000c00f264000098df05080000000000 *000c00fc640000a8df05080000000000000c0006650000dcdf05080000000000000c0010650000 *dcdf05080000000000000c001b65000028e005080000000000000c002565000028e00508000000 *0000000c003065000080e005080000000000000c003a65000080e005080000000000000c004565 *0000b8e005080000000000000c004f650000b8e005080000000000000c005a65000004e1050800 *00000000000c006465000004e105080000000000000c006f6500006ce105080000000000000c00 *796500006ce105080000000000000c0084650000fce105080000000000000c008e65000008e205 *080000000000000c009865000014e205080000000000000c00a265000020e20508000000000000 *0c00ac6500002ce205080000000000000c00b665000044e205080000000000000c00c065000044 *e205080000000000000c00cb65000088e205080000000000000c00d565000094e2050800000000 *00000c00df650000a0e205080000000000000c00e9650000ace205080000000000000c00f36500 *00c0e205080000000000000c00fd650000c0e205080000000000000c0006660000d4e205080000 *000000000c0010660000d4e205080000000000000c001b6600000ce305080000000000000c0025 *6600000ce305080000000000000c003066000048e305080000000000000c003a66000048e30508 *0000000000000c0045660000a8e305080000000000000c004f660000a8e305080000000000000c *005a66000000e405080000000000000c006466000000e405080000000000000c006f6600003ce4 *05080000000000000c00796600003ce405080000000000000c0084660000a0e405080000000000 *000c008e660000a0e405080000000000000c0099660000f8e405080000000000000c00a3660000 *f8e405080000000000000c00ae66000058e505080000000000000c00b866000058e50508000000 *0000000c00c36600008ce505080000000000000c00cd6600008ce505080000000000000c00d866 *000000e605080000000000000c00e266000000e605080000000000000c00ed66000070e6050800 *00000000000c00f766000070e605080000000000000c0002670000d4e605080000000000000c00 *0c670000d4e605080000000000000c001767000048e705080000000000000c002167000048e705 *080000000000000c002c670000b8e705080000000000000c0036670000b8e70508000000000000 *0c004167000050e805080000000000000c004b67000050e805080000000000000c00566700008c *e805080000000000000c00606700008ce805080000000000000c0069670000eca9110800000000 *000010007667000048e905080000000000000c008067000048e905080000000000000c008b6700 *0084e905080000000000000c009567000084e905080000000000000c00a0670000d4e905080000 *000000000c00aa670000d4e905080000000000000c00b567000010ea05080000000000000c00bf *67000010ea05080000000000000c00ca670000b4ea05080000000000000c00d36700000caa1108 *0000000000001000e067000050eb05080000000000000c00ea670000d4ea05080000000000000c *00f4670000d4ea05080000000000000c00ff67000010eb05080000000000000c000968000010eb *05080000000000000c001268000050eb05080000000000000c001d680000d8eb05080000000000 *000c0027680000d8eb05080000000000000c003068000014ec05080000000000000c003a680000 *14ec05080000000000000c004568000044ec05080000000000000c004f68000044ec0508000000 *0000000c005868000054ec05080000000000000c006268000054ec05080000000000000c006b68 *00006cec05080000000000000c00756800006cec05080000000000000c0080680000a4ec050800 *00000000000c008a680000a4ec05080000000000000c0095680000e0ec05080000000000000c00 *9f680000e0ec05080000000000000c00aa68000040ed05080000000000000c00b468000040ed05 *080000000000000c00bf68000098ed05080000000000000c00c968000098ed0508000000000000 *0c00d4680000f4ed05080000000000000c00de680000f4ed05080000000000000c00e968000028 *ee05080000000000000c00f368000028ee05080000000000000c00fe6800006cee050800000000 *00000c0009690000c0ee05080000000000000c0013690000c0ee05080000000000000c001c6900 *00d4ee05080000000000000c0026690000d4ee05080000000000000c003169000008ef05080000 *000000000c003c69000058f005080000000000000c004769000054ef05080000000000000c0051 *69000064ef05080000000000000c005b69000064ef05080000000000000c0066690000b0ef0508 *0000000000000c0070690000b0ef05080000000000000c007b690000e4ef05080000000000000c *0085690000e4ef05080000000000000c008e69000058f005080000000000000c0098690000bcf0 *05080000000000000c00a2690000bcf005080000000000000c00ad690000e4f005080000000000 *000c00b7690000e4f005080000000000000c00c069000094f105080000000000000c00cb690000 *acf105080000000000000c00d5690000acf105080000000000000c00e0690000a0f40508000000 *0000000c00eb690000d4f105080000000000000c00f669000014f205080000000000000c00016a *000060f205080000000000000c000b6a000060f205080000000000000c00166a00007cfb050800 *00000000000c00216a000098f205080000000000000c002b6a000098f205080000000000000c00 *346a000044f305080000000000000c003f6a000070f305080000000000000c00496a000078f305 *080000000000000c00536a000078f305080000000000000c005c6a0000d8f30508000000000000 *0c00676a000004f405080000000000000c00716a00000cf405080000000000000c007b6a00000c *f405080000000000000c00846a000068f405080000000000000c008f6a000094f4050800000000 *00000c00996a0000a0f405080000000000000c00a36a0000c8f405080000000000000c00ae6a00 *00d8f405080000000000000c00b96a0000f4f405080000000000000c00c36a0000f4f405080000 *000000000c00cc6a000018f505080000000000000c00d66a000018f505080000000000000c00e1 *6a000050f505080000000000000c00eb6a000050f505080000000000000c00f46a00009cf50508 *0000000000000c00ff6a0000c8f505080000000000000c00096b0000d4f505080000000000000c *00136b0000d4f505080000000000000c001c6b0000f4f505080000000000000c00276b00001cf6 *05080000000000000c00316b000028f605080000000000000c003b6b000028f605080000000000 *000c00446b000034f605080000000000000c004f6b000040f605080000000000000c00596b0000 *40f605080000000000000c00646b000070f605080000000000000c006f6b0000c8f60508000000 *0000000c00796b0000d4f605080000000000000c00836b0000d4f605080000000000000c008c6b *0000f8f605080000000000000c00966b0000f8f605080000000000000c009f6b000004f7050800 *00000000000c00aa6b000008f705080000000000000c00b56b000014f705080000000000000c00 *bf6b000014f705080000000000000c00c86b000038f705080000000000000c00d26b000038f705 *080000000000000c00dd6b000070f705080000000000000c00e76b000070f70508000000000000 *0c00f06b0000bcf705080000000000000c00fb6b0000e8f705080000000000000c00056c0000f4 *f705080000000000000c000f6c0000f4f705080000000000000c00186c000014f8050800000000 *00000c00236c000040f805080000000000000c002d6c00004cf805080000000000000c00376c00 *004cf805080000000000000c00406c000058f805080000000000000c004b6c000060f805080000 *000000000c00566c00006cf805080000000000000c00606c00006cf805080000000000000c0069 *6c000090f805080000000000000c00736c000090f805080000000000000c007e6c0000c0f80508 *0000000000000c00886c0000c0f805080000000000000c00936c000018f905080000000000000c *009d6c000018f905080000000000000c00a66c000064f905080000000000000c00b16c000090f9 *05080000000000000c00bb6c000090f905080000000000000c00c66c000098f905080000000000 *000c00d16c0000a0f905080000000000000c00dc6c0000a8f905080000000000000c00e76c0000 *28fa05080000000000000c00f16c000034fa05080000000000000c00fb6c000034fa0508000000 *0000000c00046d000050fa05080000000000000c000f6d00007cfa05080000000000000c00196d *000088fa05080000000000000c00236d000088fa05080000000000000c002c6d0000a8fa050800 *00000000000c00376d0000d4fa05080000000000000c00416d0000e0fa05080000000000000c00 *4b6d0000e0fa05080000000000000c00546d000018fb05080000000000000c005f6d000044fb05 *080000000000000c00696d000050fb05080000000000000c00736d000050fb0508000000000000 *0c007c6d00007cfb05080000000000000c00866d00006cfc05080000000000000c00906d00006c *fc05080000000000000c009b6d0000a8fc05080000000000000c00a56d0000a8fc050800000000 *00000c00b06d0000e4fc05080000000000000c00ba6d0000e4fc05080000000000000c00c56d00 *0020fd05080000000000000c00cf6d000020fd05080000000000000c00d86d000098fd05080000 *000000000c00e26d000098fd05080000000000000c00eb6d0000ccfd05080000000000000c00f5 *6d0000ccfd05080000000000000c00006e0000e4fd05080000000000000c000a6e0000f0fd0508 *0000000000000c00146e0000fcfd05080000000000000c001f6e000040fe05080000000000000c *00296e000040fe05080000000000000c00346e000070fe05080000000000000c003e6e000088fe *05080000000000000c00486e000088fe05080000000000000c00536e0000b8fe05080000000000 *000c005d6e0000d0fe05080000000000000c00676e0000d0fe05080000000000000c00726e0000 *00ff05080000000000000c007c6e000018ff05080000000000000c00866e000018ff0508000000 *0000000c00916e000048ff05080000000000000c009b6e000060ff05080000000000000c00a56e *000060ff05080000000000000c00b06e000090ff05080000000000000c00ba6e0000a8ff050800 *00000000000c00c46e0000a8ff05080000000000000c00cf6e0000d8ff05080000000000000c00 *da6e0000100006080000000000000c00e56e00005c0006080000000000000c00ef6e00005c0006 *080000000000000c00fa6e0000980006080000000000000c00056f0000a8000608000000000000 *0c00106f0000d40006080000000000000c001b6f0000f80006080000000000000c00256f0000f8 *0006080000000000000c00306f0000040106080000000000000c003b6f00003001060800000000 *00000c00466f0000540106080000000000000c00506f0000540106080000000000000c005b6f00 *00600106080000000000000c00666f0000840106080000000000000c00706f00008c0106080000 *000000000c007a6f00008c0106080000000000000c00836f0000b40106080000000000000c008e *6f0000e00106080000000000000c00986f0000e80106080000000000000c00a26f0000e8010608 *0000000000000c00ab6f0000000206080000000000000c00b66f00002c0206080000000000000c *00c06f00003c0206080000000000000c00ca6f00003c0206080000000000000c00d56f00007002 *06080000000000000c00df6f0000700206080000000000000c00ea6f0000b40206080000000000 *000c00f56f00000c0306080000000000000c00ff6f00000c0306080000000000000c000a700000 *480306080000000000000c0015700000bc0306080000000000000c001f700000bc030608000000 *0000000c002a700000f80306080000000000000c00357000006c0406080000000000000c003f70 *00006c0406080000000000000c004a700000a80406080000000000000c00557000001c05060800 *00000000000c005f7000001c0506080000000000000c006a700000580506080000000000000c00 *75700000cc0506080000000000000c007f700000cc0506080000000000000c008a700000280606 *080000000000000c0094700000380606080000000000000c009e70000038060608000000000000 *0c00a9700000500606080000000000000c00b37000005c0606080000000000000c00bd70000068 *0606080000000000000c00c8700000840606080000000000000c00d27000008406060800000000 *00000c00dd700000b40606080000000000000c00e7700000c00606080000000000000c00f27000 *00dc0606080000000000000c00fc700000dc0606080000000000000c0007710000180706080000 *000000000c0011710000180706080000000000000c001c710000400706080000000000000c0027 *7100005c0706080000000000000c00317100005c0706080000000000000c003c71000084070608 *0000000000000c0047710000d00706080000000000000c0051710000dc0706080000000000000c *005b710000dc0706080000000000000c0064710000200806080000000000000c006f7100004408 *06080000000000000c0079710000440806080000000000000c0084710000980806080000000000 *000c008e710000a80806080000000000000c0098710000a80806080000000000000c00a3710000 *d00806080000000000000c00ae710000e80806080000000000000c00b8710000e8080608000000 *0000000c00c17100000c0906080000000000000c00cc7100002c0906080000000000000c00d671 *0000380906080000000000000c00e0710000380906080000000000000c00eb7100004409060800 *00000000000c00f5710000500906080000000000000c00ff7100005c0906080000000000000c00 *09720000680906080000000000000c0013720000740906080000000000000c001d720000800906 *080000000000000c00277200008c0906080000000000000c003172000098090608000000000000 *0c003b720000a40906080000000000000c0045720000b00906080000000000000c004f720000bc *0906080000000000000c0059720000d40906080000000000000c0063720000d409060800000000 *00000c006e720000040a06080000000000000c00797200000c0a06080000000000000c00847200 *00380a06080000000000000c008e720000440a06080000000000000c0098720000440a06080000 *000000000c00a3720000a80a06080000000000000c00ad720000a80a06080000000000000c00b8 *720000e00a06080000000000000c00c2720000e00a06080000000000000c00cd720000440b0608 *0000000000000c00d7720000440b06080000000000000c00e2720000a00b06080000000000000c *00ec720000a00b06080000000000000c00f7720000d80b06080000000000000c0001730000d80b *06080000000000000c000c730000240c06080000000000000c0016730000240c06080000000000 *000c0021730000880c06080000000000000c002b730000880c06080000000000000c0036730000 *bc0c06080000000000000c0040730000bc0c06080000000000000c004b730000280d0608000000 *0000000c0055730000280d06080000000000000c00607300005c0d06080000000000000c006a73 *00005c0d06080000000000000c0075730000cc0d06080000000000000c007f730000cc0d060800 *00000000000c008a730000340e06080000000000000c0094730000340e06080000000000000c00 *9f730000680e06080000000000000c00a9730000680e06080000000000000c00b4730000e00e06 *080000000000000c00be730000e00e06080000000000000c00c9730000440f0608000000000000 *0c00d3730000440f06080000000000000c00de730000c40f06080000000000000c00e8730000c4 *0f06080000000000000c00f3730000301006080000000000000c00fd7300003010060800000000 *00000c0008740000641006080000000000000c0012740000641006080000000000000c001b7400 *00341106080000000000000c002474000034aa1108000000000000100031740000441106080000 *000000000c003b740000441106080000000000000c0046740000a01106080000000000000c004f *74000044aa110800000000000010005c740000801306080000000000000c0066740000cc110608 *0000000000000c0070740000cc1106080000000000000c0079740000f41106080000000000000c *0083740000f41106080000000000000c008e7400001c1206080000000000000c00987400001c12 *06080000000000000c00a37400006c1206080000000000000c00ad7400006c1206080000000000 *000c00b6740000a81206080000000000000c00c0740000a81206080000000000000c00cb740000 *e01206080000000000000c00d5740000e01206080000000000000c00e07400001c130608000000 *0000000c00ea7400001c1306080000000000000c00f5740000801306080000000000000c000075 *0000c81306080000000000000c00097500004caa1108000000000000100016750000d813060800 *00000000000c0020750000d81306080000000000000c002b750000341406080000000000000c00 *347500005caa1108000000000000100041750000c41506080000000000000c004b7500005c1406 *080000000000000c00557500005c1406080000000000000c005e75000080140608000000000000 *0c0068750000801406080000000000000c0073750000b81406080000000000000c007d750000b8 *1406080000000000000c0088750000ec1406080000000000000c0092750000ec14060800000000 *00000c009d750000441506080000000000000c00a7750000441506080000000000000c00b07500 *00881506080000000000000c00ba750000881506080000000000000c00c5750000c41506080000 *000000000c00d0750000181606080000000000000c00d975000064aa11080000000000001000e6 *750000c81606080000000000000c00f0750000381606080000000000000c00fa75000038160608 *0000000000000c0005760000741606080000000000000c000f760000741606080000000000000c *001a760000c81606080000000000000c0025760000601706080000000000000c00307600007017 *06080000000000000c003b760000801706080000000000000c0046760000a81706080000000000 *000c0050760000a81706080000000000000c005b760000cc1706080000000000000c0065760000 *cc1706080000000000000c0070760000081806080000000000000c007a76000008180608000000 *0000000c00857600005c1806080000000000000c008f7600005c1806080000000000000c009a76 *0000a41806080000000000000c00a5760000fc1806080000000000000c00af7600000819060800 *00000000000c00b9760000081906080000000000000c00c2760000281906080000000000000c00 *cd760000381906080000000000000c00d87600008c1906080000000000000c00e27600008c1906 *080000000000000c00ed760000ec1906080000000000000c00f7760000ec190608000000000000 *0c0002770000281a06080000000000000c000c770000281a06080000000000000c001777000088 *1a06080000000000000c0021770000881a06080000000000000c002c770000d41a060800000000 *00000c0037770000341b06080000000000000c0041770000341b06080000000000000c004c7700 *00601b06080000000000000c0056770000601b06080000000000000c0061770000c01b06080000 *000000000c006b770000c01b06080000000000000c0076770000fc1b06080000000000000c0080 *770000fc1b06080000000000000c008b7700005c1c06080000000000000c00957700005c1c0608 *0000000000000c00a0770000a81c06080000000000000c00ab770000081d06080000000000000c *00b5770000141d06080000000000000c00bf770000141d06080000000000000c00c87700003c1d *06080000000000000c00d37700004c1d06080000000000000c00de770000701d06080000000000 *000c00e8770000701d06080000000000000c00f37700009c1d06080000000000000c00fd770000 *9c1d06080000000000000c0008780000c81d06080000000000000c0012780000d81d0608000000 *0000000c001c780000d81d06080000000000000c00277800001c1e06080000000000000c003178 *00001c1e06080000000000000c003c780000501e06080000000000000c0046780000501e060800 *00000000000c004f780000e81e06080000000000000c0059780000e81e06080000000000000c00 *62780000641f06080000000000000c006b7800008caa1108000000000000100078780000741f06 *080000000000000c0082780000741f06080000000000000c008d780000f81f0608000000000000 *0c0098780000142006080000000000000c00a2780000142006080000000000000c00ad78000048 *2006080000000000000c00b7780000482006080000000000000c00c27800008c20060800000000 *00000c00cd780000d82106080000000000000c00d8780000ac2006080000000000000c00e27800 *00ac2006080000000000000c00ed780000dc2006080000000000000c00f8780000482106080000 *000000000c0002790000542106080000000000000c000c790000542106080000000000000c0015 *790000942106080000000000000c0020790000c82106080000000000000c002a790000d8210608 *0000000000000c0034790000002206080000000000000c003f790000102206080000000000000c *004a7900004c2206080000000000000c00547900004c2206080000000000000c005f7900008822 *06080000000000000c0069790000882206080000000000000c0074790000d02206080000000000 *000c007f7900000c2306080000000000000c00897900000c2306080000000000000c0094790000 *382306080000000000000c009e790000482306080000000000000c00a879000048230608000000 *0000000c00b3790000982306080000000000000c00bd790000982306080000000000000c00c879 *0000cc2306080000000000000c00d2790000cc2306080000000000000c00db7900006424060800 *00000000000c00e5790000642406080000000000000c00ee790000442506080000000000000c00 *f7790000b8aa11080000000000001000047a0000b42606080000000000000c000e7a0000542506 *080000000000000c00197a00006c2506080000000000000c00237a00006c250608000000000000 *0c002c7a0000042606080000000000000c00377a0000cc2506080000000000000c00427a0000f8 *2506080000000000000c004c7a0000042606080000000000000c00567a00002c26060800000000 *00000c00607a00002c2606080000000000000c006b7a0000742606080000000000000c00757a00 *00742606080000000000000c00807a0000b42606080000000000000c008b7a0000c0aa11080000 *000000001000987a0000dc2706080000000000000c00a27a0000002706080000000000000c00ad *7a0000182706080000000000000c00b77a0000182706080000000000000c00c07a0000b0270608 *0000000000000c00cb7a0000782706080000000000000c00d67a0000a42706080000000000000c *00e07a0000b02706080000000000000c00ea7a0000dc2706080000000000000c00f57a00000028 *06080000000000000c00fe7a0000c4aa110800000000000010000b7b0000742a06080000000000 *000c00157b0000042806080000000000000c00207b0000142806080000000000000c002b7b0000 *582806080000000000000c00357b0000582806080000000000000c00407b000088280608000000 *0000000c004b7b0000d42806080000000000000c00557b0000d42806080000000000000c00607b *0000042906080000000000000c006b7b00005c2906080000000000000c00757b00006829060800 *00000000000c007f7b0000682906080000000000000c008a7b0000982906080000000000000c00 *947b0000982906080000000000000c009d7b0000082a06080000000000000c00a87b0000342a06 *080000000000000c00b27b0000442a06080000000000000c00bc7b0000442a0608000000000000 *0c00c77b0000742a06080000000000000c00d27b0000982a06080000000000000c00db7b0000cc *aa11080000000000001000e87b00005c2b06080000000000000c00f27b0000a82a060800000000 *00000c00fc7b0000a82a06080000000000000c00077c0000e42a06080000000000000c00117c00 *00e42a06080000000000000c001c7c0000202b06080000000000000c00267c0000202b06080000 *000000000c00317c00005c2b06080000000000000c003c7c0000002c06080000000000000c0045 *7c0000dcaa11080000000000001000527c0000c82c06080000000000000c005c7c0000142c0608 *0000000000000c00667c0000142c06080000000000000c00717c0000502c06080000000000000c *007b7c0000502c06080000000000000c00867c00008c2c06080000000000000c00907c00008c2c *06080000000000000c009b7c0000c82c06080000000000000c00a67c0000ecaa11080000000000 *001000b37c0000682d06080000000000000c00bc7c0000f4aa11080000000000001000c97c0000 *7c2d06080000000000000c00d37c00007c2d06080000000000000c00de7c0000d42d0608000000 *0000000c00e77c000004ab11080000000000001000f47c0000ec2e06080000000000000c00fe7c *0000ec2d06080000000000000c00087d0000ec2d06080000000000000c00137d0000342e060800 *00000000000c001d7d0000342e06080000000000000c00287d0000742e06080000000000000c00 *327d0000742e06080000000000000c003d7d0000b02e06080000000000000c00477d0000b02e06 *080000000000000c00527d0000ec2e06080000000000000c005d7d0000c02f0608000000000000 *0c00667d000014ab11080000000000001000737d0000d42f06080000000000000c007d7d0000d4 *2f06080000000000000c00887d00004c3006080000000000000c00917d000024ab110800000000 *000010009e7d0000183106080000000000000c00a87d0000643006080000000000000c00b27d00 *00643006080000000000000c00bd7d0000a03006080000000000000c00c77d0000a03006080000 *000000000c00d27d0000dc3006080000000000000c00dc7d0000dc3006080000000000000c00e7 *7d0000183106080000000000000c00f27d0000cc3106080000000000000c00fb7d000034ab1108 *0000000000001000087e0000983206080000000000000c00127e0000e43106080000000000000c *001c7e0000e43106080000000000000c00277e0000203206080000000000000c00317e00002032 *06080000000000000c003c7e00005c3206080000000000000c00467e00005c3206080000000000 *000c00517e0000983206080000000000000c005c7e00004c3306080000000000000c00657e0000 *44ab11080000000000001000727e0000dc3306080000000000000c007c7e000064330608000000 *0000000c00867e0000643306080000000000000c00917e0000a03306080000000000000c009b7e *0000a03306080000000000000c00a67e0000dc3306080000000000000c00b17e00008834060800 *00000000000c00ba7e000054ab11080000000000001000c77e0000f83606080000000000000c00 *d17e0000a03406080000000000000c00db7e0000a03406080000000000000c00e67e0000dc3406 *080000000000000c00f07e0000dc3406080000000000000c00fb7e000018350608000000000000 *0c00057f0000183506080000000000000c00107f0000543506080000000000000c001a7f000054 *3506080000000000000c00257f0000903506080000000000000c002f7f00009035060800000000 *00000c003a7f0000cc3506080000000000000c00447f0000cc3506080000000000000c004f7f00 *00083606080000000000000c00597f0000083606080000000000000c00647f0000443606080000 *000000000c006e7f0000443606080000000000000c00797f0000803606080000000000000c0083 *7f0000803606080000000000000c008e7f0000bc3606080000000000000c00987f0000bc360608 *0000000000000c00a37f0000f83606080000000000000c00ae7f0000a03906080000000000000c *00b77f000064ab11080000000000001000c47f0000203b06080000000000000c00ce7f0000b839 *06080000000000000c00d87f0000b83906080000000000000c00e37f0000f43906080000000000 *000c00ed7f0000f43906080000000000000c00f87f0000303a06080000000000000c0002800000 *303a06080000000000000c000d8000006c3a06080000000000000c00178000006c3a0608000000 *0000000c0022800000a83a06080000000000000c002c800000a83a06080000000000000c003780 *0000e43a06080000000000000c0041800000e43a06080000000000000c004c800000203b060800 *00000000000c0057800000843c06080000000000000c006080000074ab11080000000000001000 *6d800000503d06080000000000000c00778000009c3c06080000000000000c00818000009c3c06 *080000000000000c008c800000d83c06080000000000000c0096800000d83c0608000000000000 *0c00a1800000143d06080000000000000c00ab800000143d06080000000000000c00b680000050 *3d06080000000000000c00c1800000043e06080000000000000c00ca80000084ab110800000000 *00001000d7800000c03f06080000000000000c00e18000001c3e06080000000000000c00eb8000 *001c3e06080000000000000c00f6800000583e06080000000000000c0000810000583e06080000 *000000000c000b810000943e06080000000000000c0015810000943e06080000000000000c0020 *810000d03e06080000000000000c002a810000d03e06080000000000000c00358100000c3f0608 *0000000000000c003f8100000c3f06080000000000000c004a810000483f06080000000000000c *0054810000483f06080000000000000c005f810000843f06080000000000000c0069810000843f *06080000000000000c0074810000c03f06080000000000000c007f810000b04106080000000000 *000c008881000094ab11080000000000001000958100007c4206080000000000000c009f810000 *c84106080000000000000c00a9810000c84106080000000000000c00b481000004420608000000 *0000000c00be810000044206080000000000000c00c9810000404206080000000000000c00d381 *0000404206080000000000000c00de8100007c4206080000000000000c00e98100003043060800 *00000000000c00f2810000a4ab11080000000000001000ff810000c44806080000000000000c00 *098200005c4306080000000000000c00138200005c4306080000000000000c001e820000ac4306 *080000000000000c0028820000ac4306080000000000000c0033820000dc430608000000000000 *0c003d820000dc4306080000000000000c0048820000404406080000000000000c005282000040 *4406080000000000000c005d820000ac4406080000000000000c0067820000ac44060800000000 *00000c0072820000e84406080000000000000c007c820000e84406080000000000000c00878200 *00484506080000000000000c0091820000484506080000000000000c009c820000ac4506080000 *000000000c00a6820000ac4506080000000000000c00b1820000e84506080000000000000c00bb *820000e84506080000000000000c00c6820000484606080000000000000c00d082000048460608 *0000000000000c00db820000a04606080000000000000c00e5820000a04606080000000000000c *00f0820000dc4606080000000000000c00fa820000dc4606080000000000000c00058300004047 *06080000000000000c000f830000404706080000000000000c001a830000b04706080000000000 *000c0024830000b04706080000000000000c002f830000104806080000000000000c0039830000 *104806080000000000000c0044830000744806080000000000000c004e83000074480608000000 *0000000c0057830000c44806080000000000000c0062830000e84806080000000000000c006b83 *0000acab1108000000000000100078830000fc4806080000000000000c0082830000fc48060800 *00000000000c008d830000544906080000000000000c0096830000bcab11080000000000001000 *a3830000684906080000000000000c00ad830000684906080000000000000c00b8830000c04906 *080000000000000c00c1830000ccab11080000000000001000ce830000d4490608000000000000 *0c00d8830000d44906080000000000000c00e38300002c4a06080000000000000c00ec830000dc *ab11080000000000001000f9830000b05006080000000000000c0003840000684a060800000000 *00000c000d840000684a06080000000000000c0018840000984a06080000000000000c00228400 *00984a06080000000000000c002d840000fc4a06080000000000000c0037840000fc4a06080000 *000000000c00428400005c4b06080000000000000c004c8400005c4b06080000000000000c0057 *840000804b06080000000000000c0062840000944b06080000000000000c006c840000944b0608 *0000000000000c0077840000d04b06080000000000000c0081840000d04b06080000000000000c *008a840000244c06080000000000000c0094840000244c06080000000000000c009f840000484c *06080000000000000c00aa840000a44c06080000000000000c00b4840000b44c06080000000000 *000c00be840000b44c06080000000000000c00c9840000e04c06080000000000000c00d3840000 *e04c06080000000000000c00de8400002c4d06080000000000000c00e88400002c4d0608000000 *0000000c00f1840000844d06080000000000000c00fc840000a04d06080000000000000c000685 *0000a04d06080000000000000c0011850000d84d06080000000000000c001b850000d84d060800 *00000000000c0026850000104e06080000000000000c0030850000104e06080000000000000c00 *39850000544e06080000000000000c00448500007c4e06080000000000000c004e8500007c4e06 *080000000000000c0059850000a04e06080000000000000c0063850000a04e0608000000000000 *0c006e850000f04e06080000000000000c0078850000f04e06080000000000000c00838500002c *4f06080000000000000c008d8500002c4f06080000000000000c0098850000884f060800000000 *00000c00a2850000884f06080000000000000c00ad850000c44f06080000000000000c00b78500 *00c44f06080000000000000c00c2850000105006080000000000000c00cc850000105006080000 *000000000c00d5850000545006080000000000000c00e08500007c5006080000000000000c00ea *850000885006080000000000000c00f4850000885006080000000000000c00fd850000b0500608 *0000000000000c0008860000985206080000000000000c0013860000ac5206080000000000000c *001d860000ac5206080000000000000c0028860000dc5206080000000000000c00328600000053 *06080000000000000c003c8600000c5306080000000000000c00468600000c5306080000000000 *000c004f860000485406080000000000000c0059860000485406080000000000000c0064860000 *845406080000000000000c006e860000845406080000000000000c0077860000dc540608000000 *0000000c0082860000105506080000000000000c008c860000205506080000000000000c009686 *0000205506080000000000000c00a18600004c5506080000000000000c00ab8600004c55060800 *00000000000c00b6860000785506080000000000000c00c0860000785506080000000000000c00 *c98600008c5506080000000000000c00d38600008c5506080000000000000c00de860000c05506 *080000000000000c00e8860000c05506080000000000000c00f386000020560608000000000000 *0c00fd860000205606080000000000000c00088700007c5606080000000000000c00128700007c *5606080000000000000c001d870000a85606080000000000000c0027870000a856060800000000 *00000c00328700001c5706080000000000000c003c870000405706080000000000000c00468700 *004c5706080000000000000c00508700004c5706080000000000000c005b870000885706080000 *000000000c0065870000885706080000000000000c006e870000c05706080000000000000c0078 *870000c05706080000000000000c0083870000d85706080000000000000c008d870000d8570608 *0000000000000c0098870000285806080000000000000c00a2870000285806080000000000000c *00ad870000885806080000000000000c00b7870000885806080000000000000c00c0870000e458 *06080000000000000c00cb870000005906080000000000000c00d5870000005906080000000000 *000c00e0870000385906080000000000000c00ea870000385906080000000000000c00f5870000 *705906080000000000000c00ff870000705906080000000000000c0008880000b0590608000000 *0000000c0013880000d85906080000000000000c001d880000d85906080000000000000c002888 *0000fc5906080000000000000c0032880000fc5906080000000000000c003d8800004c5a060800 *00000000000c00478800004c5a06080000000000000c0052880000885a06080000000000000c00 *5c880000885a06080000000000000c0067880000e45a06080000000000000c0071880000e45a06 *080000000000000c007c880000205b06080000000000000c0086880000205b0608000000000000 *0c00918800006c5b06080000000000000c009b8800006c5b06080000000000000c00a4880000b0 *5b06080000000000000c00af880000d85b06080000000000000c00b9880000e45b060800000000 *00000c00c3880000e45b06080000000000000c00cc880000b05c06080000000000000c00d68800 *00b05c06080000000000000c00e1880000dc5c06080000000000000c00eb880000dc5c06080000 *000000000c00f4880000f05c06080000000000000c00fe880000f05c06080000000000000c0009 *890000245d06080000000000000c0013890000245d06080000000000000c001e890000845d0608 *0000000000000c0028890000845d06080000000000000c0033890000e05d06080000000000000c *003d890000e05d06080000000000000c0048890000045e06080000000000000c0053890000185e *06080000000000000c005d890000185e06080000000000000c0068890000545e06080000000000 *000c0072890000545e06080000000000000c007b8900004c5f06080000000000000c0085890000 *4c5f06080000000000000c0090890000885f06080000000000000c009a890000885f0608000000 *0000000c00a3890000e05f06080000000000000c00ae890000146006080000000000000c00b889 *0000246006080000000000000c00c2890000246006080000000000000c00cd8900005060060800 *00000000000c00d7890000506006080000000000000c00e28900009c6006080000000000000c00 *ec8900009c6006080000000000000c00f5890000f86006080000000000000c00008a0000146106 *080000000000000c000a8a0000146106080000000000000c00158a00004c610608000000000000 *0c001f8a00004c6106080000000000000c002a8a0000846106080000000000000c00348a000084 *6106080000000000000c003d8a0000c46106080000000000000c00488a0000ec61060800000000 *00000c00528a0000ec6106080000000000000c005d8a0000106206080000000000000c00678a00 *00106206080000000000000c00728a0000606206080000000000000c007c8a0000606206080000 *000000000c00878a00009c6206080000000000000c00918a00009c6206080000000000000c009c *8a0000f86206080000000000000c00a68a0000f86206080000000000000c00b18a000034630608 *0000000000000c00bb8a0000346306080000000000000c00c68a0000806306080000000000000c *00d08a0000806306080000000000000c00d98a0000c46306080000000000000c00e48a0000ec63 *06080000000000000c00ee8a0000f86306080000000000000c00f88a0000f86306080000000000 *000c00018b0000b46406080000000000000c000b8b0000b46406080000000000000c00168b0000 *e06406080000000000000c00208b0000e06406080000000000000c00298b0000f4640608000000 *0000000c00338b0000f46406080000000000000c003e8b0000286506080000000000000c00488b *0000286506080000000000000c00538b0000886506080000000000000c005d8b00008865060800 *00000000000c00688b0000e46506080000000000000c00728b0000e46506080000000000000c00 *7d8b0000086606080000000000000c00888b00001c6606080000000000000c00928b00001c6606 *080000000000000c009d8b0000586606080000000000000c00a78b000058660608000000000000 *0c00b08b0000806706080000000000000c00ba8b0000806706080000000000000c00c58b0000bc *6706080000000000000c00cf8b0000bc6706080000000000000c00d88b00001468060800000000 *00000c00e38b0000486806080000000000000c00ed8b0000586806080000000000000c00f78b00 *00586806080000000000000c00028c0000846806080000000000000c000c8c0000846806080000 *000000000c00178c0000d06806080000000000000c00218c0000d06806080000000000000c002a *8c00002c6906080000000000000c00358c0000486906080000000000000c003f8c000048690608 *0000000000000c004a8c0000806906080000000000000c00548c0000806906080000000000000c *005f8c0000b86906080000000000000c00698c0000b86906080000000000000c00728c0000f869 *06080000000000000c007d8c0000206a06080000000000000c00878c0000206a06080000000000 *000c00928c0000446a06080000000000000c009c8c0000446a06080000000000000c00a78c0000 *946a06080000000000000c00b18c0000946a06080000000000000c00bc8c0000d06a0608000000 *0000000c00c68c0000d06a06080000000000000c00d18c00002c6b06080000000000000c00db8c *00002c6b06080000000000000c00e68c0000686b06080000000000000c00f08c0000686b060800 *00000000000c00fb8c0000b46b06080000000000000c00058d0000b46b06080000000000000c00 *0e8d0000f86b06080000000000000c00198d0000206c06080000000000000c00238d00002c6c06 *080000000000000c002d8d00002c6c06080000000000000c00368d0000a86c0608000000000000 *0c003f8d000044ac110800000000000010004c8d0000c86c06080000000000000c00568d0000b4 *6c06080000000000000c00608d0000b46c06080000000000000c00698d0000c86c060800000000 *00000c00748d00001c6d06080000000000000c007d8d000054ac110800000000000010008a8d00 *003c6d06080000000000000c00948d0000286d06080000000000000c009e8d0000286d06080000 *000000000c00a78d00003c6d06080000000000000c00b28d0000906d06080000000000000c00bb *8d000064ac11080000000000001000c88d0000b06d06080000000000000c00d28d00009c6d0608 *0000000000000c00dc8d00009c6d06080000000000000c00e58d0000b06d06080000000000000c *00f08d0000046e06080000000000000c00f98d000074ac11080000000000001000068e0000246e *06080000000000000c00108e0000106e06080000000000000c001a8e0000106e06080000000000 *000c00238e0000246e06080000000000000c002e8e0000786e06080000000000000c00378e0000 *84ac11080000000000001000448e0000986e06080000000000000c004e8e0000846e0608000000 *0000000c00588e0000846e06080000000000000c00618e0000986e06080000000000000c006c8e *0000ec6e06080000000000000c00758e000094ac11080000000000001000828e0000006f060800 *00000000000c008c8e0000006f06080000000000000c00978e0000586f06080000000000000c00 *a08e0000a4ac11080000000000001000ad8e00006c6f06080000000000000c00b78e00006c6f06 *080000000000000c00c28e0000c46f06080000000000000c00cb8e0000b4ac1108000000000000 *1000d88e0000e46f06080000000000000c00e28e0000d06f06080000000000000c00ec8e0000d0 *6f06080000000000000c00f58e0000e46f06080000000000000c00008f00003870060800000000 *00000c00098f0000c4ac11080000000000001000168f00004c7006080000000000000c00208f00 *004c7006080000000000000c002b8f0000a47006080000000000000c00348f0000d4ac11080000 *000000001000418f0000c47006080000000000000c004b8f0000b07006080000000000000c0055 *8f0000b07006080000000000000c005e8f0000c47006080000000000000c00698f000018710608 *0000000000000c00728f0000e4ac110800000000000010007f8f00002c7106080000000000000c *00898f00002c7106080000000000000c00948f0000847106080000000000000c009d8f0000f4ac *11080000000000001000aa8f0000a47106080000000000000c00b48f0000907106080000000000 *000c00be8f0000907106080000000000000c00c78f0000a47106080000000000000c00d28f0000 *f87106080000000000000c00db8f000004ad11080000000000001000e88f00000c720608000000 *0000000c00f28f00000c7206080000000000000c00fd8f0000647206080000000000000c000690 *000014ad1108000000000000100013900000787206080000000000000c001d9000007872060800 *00000000000c0028900000d07206080000000000000c003190000024ad11080000000000001000 *3e900000f07206080000000000000c0048900000dc7206080000000000000c0052900000dc7206 *080000000000000c005b900000f07206080000000000000c006690000044730608000000000000 *0c006f90000034ad110800000000000010007c900000ec7a06080000000000000c008690000074 *7306080000000000000c0090900000747306080000000000000c009b900000b073060800000000 *00000c00a5900000b07306080000000000000c00ae900000fc7306080000000000000c00b89000 *00fc7306080000000000000c00c39000002c7406080000000000000c00ce900000407406080000 *000000000c00d8900000407406080000000000000c00e3900000847406080000000000000c00ed *900000847406080000000000000c00f8900000b07406080000000000000c000391000004750608 *0000000000000c000d910000047506080000000000000c0018910000407506080000000000000c *0022910000747506080000000000000c002c910000847506080000000000000c00369100008475 *06080000000000000c0041910000c07506080000000000000c004b910000c07506080000000000 *000c0054910000107606080000000000000c005e910000107606080000000000000c0069910000 *447606080000000000000c0073910000447606080000000000000c007e91000094760608000000 *0000000c0088910000947606080000000000000c0091910000b47606080000000000000c009b91 *0000b47606080000000000000c00a6910000e87606080000000000000c00b0910000e876060800 *00000000000c00bb910000207706080000000000000c00c5910000207706080000000000000c00 *ce910000407706080000000000000c00d8910000407706080000000000000c00e3910000747706 *080000000000000c00ed910000747706080000000000000c00f8910000ac770608000000000000 *0c0002920000ac7706080000000000000c000b920000cc7706080000000000000c0015920000cc *7706080000000000000c0020920000007806080000000000000c002a9200000078060800000000 *00000c0035920000387806080000000000000c003f920000387806080000000000000c00489200 *00587806080000000000000c0052920000587806080000000000000c005d9200008c7806080000 *000000000c00679200008c7806080000000000000c0072920000c47806080000000000000c007c *920000c47806080000000000000c0085920000e47806080000000000000c008f920000e4780608 *0000000000000c009a920000187906080000000000000c00a4920000187906080000000000000c *00af920000547906080000000000000c00b9920000547906080000000000000c00c4920000ec7a *06080000000000000c00cf920000587b06080000000000000c00d892000044ad11080000000000 *001000e59200006c7b06080000000000000c00ef9200006c7b06080000000000000c00fa920000 *c47b06080000000000000c000393000054ad1108000000000000100010930000f07f0608000000 *0000000c001a930000e87b06080000000000000c0024930000e87b06080000000000000c002f93 *0000187c06080000000000000c003a930000507c06080000000000000c0044930000507c060800 *00000000000c004f930000807c06080000000000000c005a930000b87c06080000000000000c00 *64930000b87c06080000000000000c006f930000e87c06080000000000000c007a930000207d06 *080000000000000c0084930000207d06080000000000000c008f930000507d0608000000000000 *0c009a930000887d06080000000000000c00a4930000887d06080000000000000c00af930000b8 *7d06080000000000000c00ba930000ec7d06080000000000000c00c4930000ec7d060800000000 *00000c00cd9300000c7e06080000000000000c00d79300000c7e06080000000000000c00e29300 *00447e06080000000000000c00ec930000447e06080000000000000c00f7930000807e06080000 *000000000c0001940000807e06080000000000000c000c940000cc7e06080000000000000c0016 *940000cc7e06080000000000000c0021940000287f06080000000000000c002b940000287f0608 *0000000000000c00349400004c7f06080000000000000c003e9400004c7f06080000000000000c *0049940000787f06080000000000000c0054940000e07f06080000000000000c005e940000f07f *06080000000000000c00699400005cad1108000000000000100076940000108006080000000000 *000c007f94000064ad110800000000000010008c940000248006080000000000000c0096940000 *248006080000000000000c00a19400007c8006080000000000000c00aa94000074ad1108000000 *0000001000b7940000908006080000000000000c00c1940000908006080000000000000c00cc94 *000084ad11080000000000001000d9940000e88006080000000000000c00e2940000b0ad110800 *00000000001000ef940000b88806080000000000000c00f9940000fc8006080000000000000c00 *03950000fc8006080000000000000c000e950000388106080000000000000c0018950000388106 *080000000000000c0023950000748106080000000000000c002d95000074810608000000000000 *0c0038950000b08106080000000000000c0042950000b08106080000000000000c004d950000ec *8106080000000000000c0057950000ec8106080000000000000c00629500002882060800000000 *00000c006c950000288206080000000000000c0077950000648206080000000000000c00819500 *00648206080000000000000c008c950000a08206080000000000000c0096950000a08206080000 *000000000c00a1950000dc8206080000000000000c00ab950000dc8206080000000000000c00b6 *950000188306080000000000000c00c0950000188306080000000000000c00cb95000054830608 *0000000000000c00d5950000548306080000000000000c00e0950000908306080000000000000c *00ea950000908306080000000000000c00f5950000cc8306080000000000000c00ff950000cc83 *06080000000000000c000a960000088406080000000000000c0014960000088406080000000000 *000c001f960000448406080000000000000c0029960000448406080000000000000c0034960000 *808406080000000000000c003e960000808406080000000000000c0049960000bc840608000000 *0000000c0053960000bc8406080000000000000c005e960000f88406080000000000000c006896 *0000f88406080000000000000c0073960000348506080000000000000c007d9600003485060800 *00000000000c0088960000708506080000000000000c0092960000708506080000000000000c00 *9d960000ac8506080000000000000c00a7960000ac8506080000000000000c00b2960000e88506 *080000000000000c00bc960000e88506080000000000000c00c796000024860608000000000000 *0c00d1960000248606080000000000000c00dc960000608606080000000000000c00e696000060 *8606080000000000000c00f19600009c8606080000000000000c00fb9600009c86060800000000 *00000c0006970000d88606080000000000000c0010970000d88606080000000000000c001b9700 *00148706080000000000000c0025970000148706080000000000000c0030970000508706080000 *000000000c003a970000508706080000000000000c00459700008c8706080000000000000c004f *9700008c8706080000000000000c005a970000c88706080000000000000c0064970000c8870608 *0000000000000c006f970000048806080000000000000c0079970000048806080000000000000c *0084970000408806080000000000000c008e970000408806080000000000000c00999700007c88 *06080000000000000c00a39700007c8806080000000000000c00ae970000b88806080000000000 *000c00b9970000489106080000000000000c00c2970000c0ad11080000000000001000cf970000 *7c9106080000000000000c00d99700007c9106080000000000000c00e497000098920608000000 *0000000c00ed970000d0ad11080000000000001000fa970000849f06080000000000000c000498 *0000d49206080000000000000c000f980000f09206080000000000000c0019980000f092060800 *00000000000c0024980000349306080000000000000c002f980000989306080000000000000c00 *39980000a89306080000000000000c0043980000a89306080000000000000c004e980000d49306 *080000000000000c0058980000d49306080000000000000c00639800001c940608000000000000 *0c006d9800001c9406080000000000000c0078980000689406080000000000000c008298000068 *9406080000000000000c008d980000a49406080000000000000c0097980000a494060800000000 *00000c00a2980000f49406080000000000000c00ac980000f49406080000000000000c00b79800 *00309506080000000000000c00c1980000309506080000000000000c00cc980000909506080000 *000000000c00d6980000909506080000000000000c00e1980000dc9506080000000000000c00ec *980000f89506080000000000000c00f6980000f89506080000000000000c000199000048960608 *0000000000000c000b990000489606080000000000000c0016990000849606080000000000000c *0020990000849606080000000000000c002b990000d09606080000000000000c0035990000d096 *06080000000000000c00409900002c9706080000000000000c004a9900002c9706080000000000 *000c0055990000609706080000000000000c005f990000609706080000000000000c0068990000 *a09706080000000000000c0072990000a09706080000000000000c007d990000e0970608000000 *0000000c0087990000e09706080000000000000c00929900003c9806080000000000000c009c99 *00003c9806080000000000000c00a7990000a49806080000000000000c00b1990000a498060800 *00000000000c00bc990000fc9806080000000000000c00c6990000fc9806080000000000000c00 *d1990000689906080000000000000c00db990000689906080000000000000c00e6990000a49906 *080000000000000c00f0990000a49906080000000000000c00fb990000f0990608000000000000 *0c00059a0000f09906080000000000000c00109a00004c9a06080000000000000c001b9a0000bc *9a06080000000000000c00259a0000cc9a06080000000000000c002f9a0000cc9a060800000000 *00000c003a9a0000049b06080000000000000c00449a0000049b06080000000000000c004f9a00 *00589b06080000000000000c00599a0000589b06080000000000000c00649a0000b09b06080000 *000000000c006e9a0000b09b06080000000000000c00799a0000209c06080000000000000c0083 *9a0000209c06080000000000000c008e9a00005c9c06080000000000000c00989a00005c9c0608 *0000000000000c00a39a0000a89c06080000000000000c00ad9a0000a89c06080000000000000c *00b89a00000c9d06080000000000000c00c29a00000c9d06080000000000000c00cd9a0000489d *06080000000000000c00d79a0000489d06080000000000000c00e29a0000989d06080000000000 *000c00ec9a0000989d06080000000000000c00f79a0000d49d06080000000000000c00019b0000 *d49d06080000000000000c000c9b0000349e06080000000000000c00169b0000349e0608000000 *0000000c00219b00008c9e06080000000000000c002b9b00008c9e06080000000000000c00369b *0000e09e06080000000000000c00409b0000e09e06080000000000000c004b9b0000409f060800 *00000000000c00559b0000409f06080000000000000c005e9b0000849f06080000000000000c00 *699b000020a006080000000000000c00739b000020a006080000000000000c007e9b000070a006 *080000000000000c00889b000070a006080000000000000c00939b0000aca00608000000000000 *0c009d9b0000aca006080000000000000c00a89b000008a106080000000000000c00b29b000008 *a106080000000000000c00bd9b000044a106080000000000000c00c79b000044a1060800000000 *00000c00d29b000090a106080000000000000c00dc9b000090a106080000000000000c00e59b00 *00e0a106080000000000000c00ef9b0000e0a106080000000000000c00f89b000000a206080000 *000000000c00029c000000a206080000000000000c000d9c000050a206080000000000000c0017 *9c000050a206080000000000000c00229c00008ca206080000000000000c002c9c00008ca20608 *0000000000000c00379c0000e0a206080000000000000c00419c0000e0a206080000000000000c *004a9c000018a306080000000000000c00559c00002ca306080000000000000c00609c000048a3 *06080000000000000c006a9c000048a306080000000000000c00759c00005ca306080000000000 *000c007f9c00005ca306080000000000000c00889c000080a306080000000000000c00929c0000 *80a306080000000000000c009d9c0000b0a306080000000000000c00a79c0000b0a30608000000 *0000000c00b29c000008a406080000000000000c00bc9c000008a406080000000000000c00c79c *000058a406080000000000000c00d19c000058a406080000000000000c00dc9c000094a4060800 *00000000000c00e69c000094a406080000000000000c00f19c0000e4a406080000000000000c00 *fb9c0000e4a406080000000000000c00069d000020a506080000000000000c00109d000020a506 *080000000000000c001b9d000080a506080000000000000c00259d000080a50608000000000000 *0c00309d0000d8a506080000000000000c003a9d0000d8a506080000000000000c00439d000014 *a606080000000000000c004e9d000030a606080000000000000c00589d000030a6060800000000 *00000c00619d000074a606080000000000000c006c9d00009ca606080000000000000c00769d00 *009ca606080000000000000c00819d0000dca606080000000000000c008c9d0000f8a606080000 *000000000c00969d0000f8a606080000000000000c00a19d000028a706080000000000000c00ab *9d000034a706080000000000000c00b59d000034a706080000000000000c00be9d000044a70608 *0000000000000c00c99d000054a706080000000000000c00d39d000054a706080000000000000c *00de9d00008ca706080000000000000c00e89d00008ca706080000000000000c00f19d0000c0a7 *06080000000000000c00fc9d0000e8a706080000000000000c00069e0000e8a706080000000000 *000c00119e0000fca706080000000000000c001c9e000018a806080000000000000c00269e0000 *24a806080000000000000c00309e000024a806080000000000000c00399e0000d0a80608000000 *0000000c00439e0000d0a806080000000000000c004e9e0000fca806080000000000000c00589e *0000fca806080000000000000c00619e000010a906080000000000000c006b9e000010a9060800 *00000000000c00769e000044a906080000000000000c00809e000044a906080000000000000c00 *8b9e0000a4a906080000000000000c00959e0000a4a906080000000000000c00a09e000000aa06 *080000000000000c00aa9e000000aa06080000000000000c00b59e000024aa0608000000000000 *0c00c09e000038aa06080000000000000c00ca9e000038aa06080000000000000c00d59e000070 *aa06080000000000000c00df9e000070aa06080000000000000c00e89e0000e0aa060800000000 *00000c00f29e0000e0aa06080000000000000c00fb9e000050ab06080000000000000c00059f00 *0050ab06080000000000000c000e9f0000c0ab06080000000000000c00189f0000c0ab06080000 *000000000c00219f000030ac06080000000000000c002b9f000030ac06080000000000000c0034 *9f0000a0ac06080000000000000c003e9f0000a0ac06080000000000000c00479f000010ad0608 *0000000000000c00519f000010ad06080000000000000c005a9f000080ad06080000000000000c *00649f000080ad06080000000000000c006d9f0000f0ad06080000000000000c00779f0000f0ad *06080000000000000c00809f000060ae06080000000000000c008a9f000060ae06080000000000 *000c00939f0000d0ae06080000000000000c009d9f0000d0ae06080000000000000c00a69f0000 *44af06080000000000000c00b09f000044af06080000000000000c00b99f00007cb00608000000 *0000000c00c39f00007cb006080000000000000c00ce9f0000a8b006080000000000000c00d99f *00000cb106080000000000000c00e39f00001cb106080000000000000c00ed9f00001cb1060800 *00000000000c00f89f000048b106080000000000000c0002a0000048b106080000000000000c00 *0da0000094b106080000000000000c0017a0000094b106080000000000000c0020a00000f0b106 *080000000000000c002ba000000cb206080000000000000c0035a000000cb20608000000000000 *0c0040a0000044b206080000000000000c004aa0000044b206080000000000000c0055a000007c *b206080000000000000c005fa000007cb206080000000000000c0068a00000bcb2060800000000 *00000c0073a00000e4b206080000000000000c007da00000e4b206080000000000000c0088a000 *0008b306080000000000000c0092a0000008b306080000000000000c009da0000058b306080000 *000000000c00a7a0000058b306080000000000000c00b2a0000094b306080000000000000c00bc *a0000094b306080000000000000c00c7a00000f0b306080000000000000c00d1a00000f0b30608 *0000000000000c00dca000002cb406080000000000000c00e6a000002cb406080000000000000c *00f1a0000078b406080000000000000c00fba0000078b406080000000000000c0004a10000bcb4 *06080000000000000c000fa10000e4b406080000000000000c0019a10000f0b406080000000000 *000c0023a10000f0b406080000000000000c002ca100006cb506080000000000000c0035a10000 *34ae1108000000000000100042a1000080b506080000000000000c004ca1000080b50608000000 *0000000c0057a10000a0b506080000000000000c0060a100003cae110800000000000010006da1 *000008ba06080000000000000c0077a10000a4b506080000000000000c0082a10000b4b5060800 *00000000000c008da10000c4b506080000000000000c0098a10000d4b506080000000000000c00 *a3a10000e4b506080000000000000c00aea10000f4b506080000000000000c00b9a1000028b606 *080000000000000c00c3a1000028b606080000000000000c00cea1000038b60608000000000000 *0c00d9a1000048b606080000000000000c00e4a1000058b606080000000000000c00efa1000068 *b606080000000000000c00faa1000078b606080000000000000c0005a2000088b6060800000000 *00000c0010a20000bcb606080000000000000c001aa20000bcb606080000000000000c0025a200 *00ccb606080000000000000c0030a20000dcb606080000000000000c003ba20000ecb606080000 *000000000c0046a20000fcb606080000000000000c0051a200000cb706080000000000000c005c *a200001cb706080000000000000c0067a2000050b706080000000000000c0071a2000050b70608 *0000000000000c007ca2000060b706080000000000000c0087a2000070b706080000000000000c *0092a2000080b706080000000000000c009da2000090b706080000000000000c00a8a20000a0b7 *06080000000000000c00b3a20000b0b706080000000000000c00bea20000e4b706080000000000 *000c00c8a20000e4b706080000000000000c00d3a20000f4b706080000000000000c00dea20000 *04b806080000000000000c00e9a2000014b806080000000000000c00f4a2000024b80608000000 *0000000c00ffa2000034b806080000000000000c000aa3000044b806080000000000000c0015a3 *000078b806080000000000000c001fa3000078b806080000000000000c002aa3000088b8060800 *00000000000c0035a3000098b806080000000000000c0040a30000a8b806080000000000000c00 *4ba30000b8b806080000000000000c0056a30000c8b806080000000000000c0061a30000d8b806 *080000000000000c006ca300000cb906080000000000000c0076a300000cb90608000000000000 *0c0081a3000040b906080000000000000c008ba3000048b906080000000000000c0095a3000048 *b906080000000000000c009ea3000060b906080000000000000c00a8a3000060b9060800000000 *00000c00b1a3000074b906080000000000000c00bca3000088b906080000000000000c00c6a300 *00b4b906080000000000000c00d0a30000b4b906080000000000000c00dba30000ccb906080000 *000000000c00e5a30000f8b906080000000000000c00efa3000008ba06080000000000000c00fa *a3000028ba06080000000000000c0003a4000044ae1108000000000000100010a4000074ba0608 *0000000000000c001aa400003cba06080000000000000c0024a400003cba06080000000000000c *002fa4000074ba06080000000000000c003aa40000b0ba06080000000000000c0043a400005cae *1108000000000000100050a40000c4ba06080000000000000c005aa40000c4ba06080000000000 *000c0065a400001cbb06080000000000000c006ea400006cae110800000000000010007ba40000 *84c306080000000000000c0085a4000030bb06080000000000000c008fa4000030bb0608000000 *0000000c0098a4000050bb06080000000000000c00a2a4000050bb06080000000000000c00ada4 *00008cbb06080000000000000c00b7a400008cbb06080000000000000c00c0a40000acbb060800 *00000000000c00caa40000acbb06080000000000000c00d5a40000e8bb06080000000000000c00 *dfa40000e8bb06080000000000000c00e8a4000008bc06080000000000000c00f2a4000008bc06 *080000000000000c00fda4000044bc06080000000000000c0007a5000044bc0608000000000000 *0c0010a5000064bc06080000000000000c001aa5000064bc06080000000000000c0025a50000a0 *bc06080000000000000c002fa50000a0bc06080000000000000c0038a50000c0bc060800000000 *00000c0042a50000c0bc06080000000000000c004da50000fcbc06080000000000000c0057a500 *00fcbc06080000000000000c0060a500001cbd06080000000000000c006aa500001cbd06080000 *000000000c0075a5000058bd06080000000000000c007fa5000058bd06080000000000000c0088 *a5000078bd06080000000000000c0092a5000078bd06080000000000000c009da50000b4bd0608 *0000000000000c00a7a50000b4bd06080000000000000c00b0a50000d4bd06080000000000000c *00baa50000d4bd06080000000000000c00c5a5000010be06080000000000000c00cfa5000010be *06080000000000000c00d8a5000030be06080000000000000c00e2a5000030be06080000000000 *000c00eda5000070be06080000000000000c00f7a5000070be06080000000000000c0002a60000 *e0be06080000000000000c000ca60000e0be06080000000000000c0017a600005cbf0608000000 *0000000c0021a600005cbf06080000000000000c002ca60000e4bf06080000000000000c0036a6 *0000e4bf06080000000000000c0041a6000078c006080000000000000c004ba6000078c0060800 *00000000000c0056a6000018c106080000000000000c0060a6000018c106080000000000000c00 *6ba60000c4c106080000000000000c0075a60000c4c106080000000000000c0080a600007cc206 *080000000000000c008aa600007cc206080000000000000c0093a600002cc30608000000000000 *0c009da600002cc306080000000000000c00a6a6000084c306080000000000000c00b1a60000a0 *c306080000000000000c00baa6000074ae11080000000000001000c7a60000ecc3060800000000 *00000c00d1a60000b4c306080000000000000c00dba60000b4c306080000000000000c00e6a600 *00ecc306080000000000000c00f1a6000028c406080000000000000c00faa600008cae11080000 *00000000100007a700002cc706080000000000000c0011a7000040c406080000000000000c001b *a7000040c406080000000000000c0024a7000060c406080000000000000c002ea7000060c40608 *0000000000000c0039a700009cc406080000000000000c0043a700009cc406080000000000000c *004ca70000bcc406080000000000000c0056a70000bcc406080000000000000c0061a70000f8c4 *06080000000000000c006ba70000f8c406080000000000000c0074a7000018c506080000000000 *000c007ea7000018c506080000000000000c0089a7000058c506080000000000000c0093a70000 *58c506080000000000000c009ea7000090c506080000000000000c00a8a7000090c50608000000 *0000000c00b3a7000000c606080000000000000c00bda7000000c606080000000000000c00c8a7 *00007cc606080000000000000c00d2a700007cc606080000000000000c00dba70000f0c6060800 *00000000000c00e5a70000f0c606080000000000000c00eea700002cc706080000000000000c00 *f9a7000048c706080000000000000c0002a8000094ae110800000000000010000fa8000094c706 *080000000000000c0019a800005cc706080000000000000c0023a800005cc70608000000000000 *0c002ea8000094c706080000000000000c0039a80000d0c706080000000000000c0042a80000d8 *c706080000000000000c004ba80000e0c706080000000000000c0054a80000c4ae110800000000 *0000100061a80000d4ae110800000000000010006ea80000e4ae110800000000000010007ba800 *00f4c706080000000000000c0085a80000f4c706080000000000000c0090a8000058c806080000 *000000000c009aa8000058c806080000000000000c00a5a80000bcc806080000000000000c00af *a80000bcc806080000000000000c00baa8000014c906080000000000000c00c3a80000f4ae1108 *0000000000001000d0a8000064e606080000000000000c00daa8000044c906080000000000000c *00e4a8000044c906080000000000000c00efa8000080c906080000000000000c00f9a8000080c9 *06080000000000000c0002a90000ccc906080000000000000c000ca90000ccc906080000000000 *000c0017a90000fcc906080000000000000c0022a9000010ca06080000000000000c002ca90000 *10ca06080000000000000c0037a900004cca06080000000000000c0041a900004cca0608000000 *0000000c004aa900008cca06080000000000000c0055a90000a0ca06080000000000000c005fa9 *0000a0ca06080000000000000c006aa90000dcca06080000000000000c0074a90000dcca060800 *00000000000c007da9000028cb06080000000000000c0087a9000028cb06080000000000000c00 *92a9000058cb06080000000000000c009da900006ccb06080000000000000c00a7a900006ccb06 *080000000000000c00b2a90000a8cb06080000000000000c00bca90000a8cb0608000000000000 *0c00c5a90000e8cb06080000000000000c00d0a90000fccb06080000000000000c00daa90000fc *cb06080000000000000c00e5a9000038cc06080000000000000c00efa9000038cc060800000000 *00000c00f8a9000078cc06080000000000000c0003aa00008ccc06080000000000000c000daa00 *008ccc06080000000000000c0018aa0000c8cc06080000000000000c0022aa0000c8cc06080000 *000000000c002baa000014cd06080000000000000c0035aa000014cd06080000000000000c0040 *aa000044cd06080000000000000c004baa000058cd06080000000000000c0055aa000058cd0608 *0000000000000c0060aa000094cd06080000000000000c006aaa000094cd06080000000000000c *0073aa0000d4cd06080000000000000c007eaa0000e8cd06080000000000000c0088aa0000e8cd *06080000000000000c0093aa000024ce06080000000000000c009daa000024ce06080000000000 *000c00a6aa000064ce06080000000000000c00b1aa000078ce06080000000000000c00bbaa0000 *78ce06080000000000000c00c6aa0000b4ce06080000000000000c00d0aa0000b4ce0608000000 *0000000c00d9aa000000cf06080000000000000c00e3aa000000cf06080000000000000c00eeaa *000030cf06080000000000000c00f9aa000044cf06080000000000000c0003ab000044cf060800 *00000000000c000eab000080cf06080000000000000c0018ab000080cf06080000000000000c00 *21ab0000c0cf06080000000000000c002cab0000d4cf06080000000000000c0036ab0000d4cf06 *080000000000000c0041ab000010d006080000000000000c004bab000010d00608000000000000 *0c0054ab000050d006080000000000000c005fab000064d006080000000000000c0069ab000064 *d006080000000000000c0074ab0000a0d006080000000000000c007eab0000a0d0060800000000 *00000c0087ab0000ecd006080000000000000c0091ab0000ecd006080000000000000c009cab00 *001cd106080000000000000c00a7ab000030d106080000000000000c00b1ab000030d106080000 *000000000c00bcab00006cd106080000000000000c00c6ab00006cd106080000000000000c00cf *ab0000acd106080000000000000c00daab0000c0d106080000000000000c00e4ab0000c0d10608 *0000000000000c00efab0000fcd106080000000000000c00f9ab0000fcd106080000000000000c *0002ac00003cd206080000000000000c000dac000044d206080000000000000c0018ac000088d2 *06080000000000000c0023ac0000a4d206080000000000000c002dac0000b0d206080000000000 *000c0037ac0000b0d206080000000000000c0040ac0000d0d206080000000000000c004bac0000 *fcd206080000000000000c0055ac0000fcd206080000000000000c0060ac000008d30608000000 *0000000c006aac00003cd306080000000000000c0074ac00004cd306080000000000000c007eac *00004cd306080000000000000c0089ac00009cd306080000000000000c0093ac00009cd3060800 *00000000000c009eac000004d406080000000000000c00a8ac000004d406080000000000000c00 *b3ac000030d406080000000000000c00beac00008cd406080000000000000c00c9ac0000a8d406 *080000000000000c00d3ac0000b4d406080000000000000c00ddac0000b4d40608000000000000 *0c00e6ac0000d4d406080000000000000c00f1ac000000d506080000000000000c00fbac000000 *d506080000000000000c0006ad00000cd506080000000000000c0010ad000040d5060800000000 *00000c001aad000050d506080000000000000c0024ad000050d506080000000000000c002fad00 *0090d506080000000000000c003aad0000f8d506080000000000000c0044ad0000f8d506080000 *000000000c004fad000034d606080000000000000c0059ad000068d606080000000000000c0063 *ad000078d606080000000000000c006dad000078d606080000000000000c0078ad0000b8d60608 *0000000000000c0083ad00000cd706080000000000000c008ead000028d706080000000000000c *0098ad000034d706080000000000000c00a2ad000034d706080000000000000c00abad000054d7 *06080000000000000c00b6ad000080d706080000000000000c00c0ad000080d706080000000000 *000c00cbad00008cd706080000000000000c00d5ad0000c0d706080000000000000c00dfad0000 *d0d706080000000000000c00e9ad0000d0d706080000000000000c00f4ad000020d80608000000 *0000000c00fead000020d806080000000000000c0009ae000088d806080000000000000c0013ae *000088d806080000000000000c001eae0000b4d806080000000000000c0029ae00000cd9060800 *00000000000c0034ae000028d906080000000000000c003eae000034d906080000000000000c00 *48ae000034d906080000000000000c0051ae000054d906080000000000000c005cae000080d906 *080000000000000c0066ae000080d906080000000000000c0071ae00008cd90608000000000000 *0c007bae0000c0d906080000000000000c0085ae0000d0d906080000000000000c008fae0000d0 *d906080000000000000c009aae00000cda06080000000000000c00a5ae000070da060800000000 *00000c00afae000070da06080000000000000c00baae0000acda06080000000000000c00c4ae00 *00e0da06080000000000000c00ceae0000f0da06080000000000000c00d8ae0000f0da06080000 *000000000c00e3ae00002cdb06080000000000000c00eeae00007cdb06080000000000000c00f9 *ae000098db06080000000000000c0003af0000a4db06080000000000000c000daf0000a4db0608 *0000000000000c0016af0000c4db06080000000000000c0021af0000f0db06080000000000000c *002baf0000f0db06080000000000000c0036af0000fcdb06080000000000000c0040af000030dc *06080000000000000c004aaf000040dc06080000000000000c0054af000040dc06080000000000 *000c005faf00008cdc06080000000000000c0069af00008cdc06080000000000000c0074af0000 *f0dc06080000000000000c007eaf0000f0dc06080000000000000c0089af00001cdd0608000000 *0000000c0094af00006cdd06080000000000000c009faf000088dd06080000000000000c00a9af *000094dd06080000000000000c00b3af000094dd06080000000000000c00bcaf0000b4dd060800 *00000000000c00c7af0000e0dd06080000000000000c00d1af0000e0dd06080000000000000c00 *dcaf0000ecdd06080000000000000c00e6af000020de06080000000000000c00f0af000030de06 *080000000000000c00faaf000030de06080000000000000c0005b0000064de0608000000000000 *0c0010b00000c0de06080000000000000c001ab00000c0de06080000000000000c0025b00000fc *de06080000000000000c002fb0000030df06080000000000000c0039b0000040df060800000000 *00000c0043b0000040df06080000000000000c004eb0000074df06080000000000000c0059b000 *00bcdf06080000000000000c0064b00000d8df06080000000000000c006eb00000e4df06080000 *000000000c0078b00000e4df06080000000000000c0081b0000004e006080000000000000c008c *b0000030e006080000000000000c0096b0000030e006080000000000000c00a1b000003ce00608 *0000000000000c00abb0000070e006080000000000000c00b5b0000080e006080000000000000c *00bfb0000080e006080000000000000c00cab00000c4e006080000000000000c00d4b00000c4e0 *06080000000000000c00dfb0000020e106080000000000000c00e9b0000020e106080000000000 *000c00f4b000004ce106080000000000000c00ffb0000098e106080000000000000c000ab10000 *b4e106080000000000000c0014b10000c0e106080000000000000c001eb10000c0e10608000000 *0000000c0027b10000e0e106080000000000000c0032b100000ce206080000000000000c003cb1 *00000ce206080000000000000c0047b1000018e206080000000000000c0051b100004ce2060800 *00000000000c005bb100005ce206080000000000000c0065b100005ce206080000000000000c00 *70b100008ce206080000000000000c007bb10000e4e206080000000000000c0085b10000e4e206 *080000000000000c0090b1000020e306080000000000000c009ab1000054e30608000000000000 *0c00a4b1000064e306080000000000000c00aeb1000064e306080000000000000c00b9b1000094 *e306080000000000000c00c4b10000d8e306080000000000000c00cfb10000f4e3060800000000 *00000c00d9b1000000e406080000000000000c00e3b1000000e406080000000000000c00ecb100 *0020e406080000000000000c00f7b100004ce406080000000000000c0001b200004ce406080000 *000000000c000cb2000058e406080000000000000c0016b200008ce406080000000000000c0020 *b200009ce406080000000000000c002ab200009ce406080000000000000c0035b20000cce40608 *0000000000000c0040b2000024e506080000000000000c004ab2000024e506080000000000000c *0055b2000060e506080000000000000c005fb2000094e506080000000000000c0069b20000a4e5 *06080000000000000c0073b20000a4e506080000000000000c007eb20000e0e506080000000000 *000c0088b20000e0e506080000000000000c0091b2000030e606080000000000000c009bb20000 *30e606080000000000000c00a6b2000064e606080000000000000c00b1b20000c8e60608000000 *0000000c00bab2000004af11080000000000001000c7b20000dce606080000000000000c00d1b2 *0000dce606080000000000000c00dcb2000034e706080000000000000c00e5b2000028af110800 *00000000001000f2b2000048e706080000000000000c00fcb2000048e706080000000000000c00 *07b30000a0e706080000000000000c0010b3000038af110800000000000010001db3000034f306 *080000000000000c0027b30000cce706080000000000000c0031b30000cce70608000000000000 *0c003cb3000020e806080000000000000c0046b3000020e806080000000000000c004fb3000040 *e806080000000000000c0059b3000040e806080000000000000c0064b3000078e8060800000000 *00000c006eb3000078e806080000000000000c0079b30000d8e806080000000000000c0083b300 *00d8e806080000000000000c008eb3000014e906080000000000000c0098b3000014e906080000 *000000000c00a3b3000060e906080000000000000c00adb3000060e906080000000000000c00b8 *b30000c0e906080000000000000c00c2b30000c0e906080000000000000c00cdb30000fce90608 *0000000000000c00d7b30000fce906080000000000000c00e2b3000048ea06080000000000000c *00ecb3000048ea06080000000000000c00f7b30000a4ea06080000000000000c0001b40000a4ea *06080000000000000c000ab40000c4ea06080000000000000c0014b40000c4ea06080000000000 *000c001fb40000fcea06080000000000000c0029b40000fcea06080000000000000c0034b40000 *60eb06080000000000000c003eb4000060eb06080000000000000c0049b400009ceb0608000000 *0000000c0053b400009ceb06080000000000000c005eb40000e8eb06080000000000000c0068b4 *0000e8eb06080000000000000c0073b400004cec06080000000000000c007db400004cec060800 *00000000000c0088b4000088ec06080000000000000c0092b4000088ec06080000000000000c00 *9db40000d4ec06080000000000000c00a7b40000d4ec06080000000000000c00b2b4000034ed06 *080000000000000c00bcb4000034ed06080000000000000c00c5b4000054ed0608000000000000 *0c00cfb4000054ed06080000000000000c00dab400008ced06080000000000000c00e4b400008c *ed06080000000000000c00efb40000f8ed06080000000000000c00f9b40000f8ed060800000000 *00000c0004b5000034ee06080000000000000c000eb5000034ee06080000000000000c0019b500 *0080ee06080000000000000c0023b5000080ee06080000000000000c002eb50000ecee06080000 *000000000c0038b50000ecee06080000000000000c0043b5000028ef06080000000000000c004d *b5000028ef06080000000000000c0058b5000074ef06080000000000000c0062b5000074ef0608 *0000000000000c006db50000e0ef06080000000000000c0077b50000e0ef06080000000000000c *0082b5000018f006080000000000000c008cb5000018f006080000000000000c0097b5000088f0 *06080000000000000c00a1b5000088f006080000000000000c00acb50000c4f006080000000000 *000c00b6b50000c4f006080000000000000c00c1b5000010f106080000000000000c00cbb50000 *10f106080000000000000c00d6b5000080f106080000000000000c00e0b5000080f10608000000 *0000000c00ebb50000bcf106080000000000000c00f5b50000bcf106080000000000000c0000b6 *000008f206080000000000000c000ab6000008f206080000000000000c0015b6000074f2060800 *00000000000c001fb6000074f206080000000000000c0028b6000098f206080000000000000c00 *32b6000098f206080000000000000c003db60000d0f206080000000000000c0047b60000d0f206 *080000000000000c0050b6000034f306080000000000000c005bb6000040af1108000000000000 *100068b6000054f306080000000000000c0071b6000048af110800000000000010007eb6000068 *f306080000000000000c0088b6000068f306080000000000000c0093b60000c0f3060800000000 *00000c009cb6000058af11080000000000001000a9b60000d4f306080000000000000c00b3b600 *00d4f306080000000000000c00beb600002cf406080000000000000c00c7b6000068af11080000 *000000001000d4b6000040f406080000000000000c00deb6000040f406080000000000000c00e9 *b6000098f406080000000000000c00f2b6000078af11080000000000001000ffb60000080f0708 *0000000000000c0009b70000c0f406080000000000000c0013b70000c0f406080000000000000c *001eb7000014f506080000000000000c0028b7000014f506080000000000000c0031b7000034f5 *06080000000000000c003bb7000034f506080000000000000c0046b700006cf506080000000000 *000c0050b700006cf506080000000000000c005bb70000ccf506080000000000000c0065b70000 *ccf506080000000000000c0070b7000008f606080000000000000c007ab7000008f60608000000 *0000000c0085b7000054f606080000000000000c008fb7000054f606080000000000000c009ab7 *0000b4f606080000000000000c00a4b70000b4f606080000000000000c00afb70000f0f6060800 *00000000000c00b9b70000f0f606080000000000000c00c4b700003cf706080000000000000c00 *ceb700003cf706080000000000000c00d9b7000098f706080000000000000c00e3b7000098f706 *080000000000000c00ecb70000b8f706080000000000000c00f6b70000b8f70608000000000000 *0c0001b80000f0f706080000000000000c000bb80000f0f706080000000000000c0016b8000054 *f806080000000000000c0020b8000054f806080000000000000c002bb8000090f8060800000000 *00000c0035b8000090f806080000000000000c0040b80000dcf806080000000000000c004ab800 *00dcf806080000000000000c0055b8000040f906080000000000000c005fb8000040f906080000 *000000000c006ab800007cf906080000000000000c0074b800007cf906080000000000000c007f *b80000c8f906080000000000000c0089b80000c8f906080000000000000c0094b8000028fa0608 *0000000000000c009eb8000028fa06080000000000000c00a7b8000048fa06080000000000000c *00b1b8000048fa06080000000000000c00bcb8000080fa06080000000000000c00c6b8000080fa *06080000000000000c00d1b80000ecfa06080000000000000c00dbb80000ecfa06080000000000 *000c00e6b8000028fb06080000000000000c00f0b8000028fb06080000000000000c00fbb80000 *74fb06080000000000000c0005b9000074fb06080000000000000c0010b90000e0fb0608000000 *0000000c001ab90000e0fb06080000000000000c0025b900001cfc06080000000000000c002fb9 *00001cfc06080000000000000c003ab9000068fc06080000000000000c0044b9000068fc060800 *00000000000c004fb90000d0fc06080000000000000c0059b90000d0fc06080000000000000c00 *62b90000f0fc06080000000000000c006cb90000f0fc06080000000000000c0077b9000028fd06 *080000000000000c0081b9000028fd06080000000000000c008cb9000098fd0608000000000000 *0c0096b9000098fd06080000000000000c00a1b90000d4fd06080000000000000c00abb90000d4 *fd06080000000000000c00b6b9000020fe06080000000000000c00c0b9000020fe060800000000 *00000c00cbb9000090fe06080000000000000c00d5b9000090fe06080000000000000c00e0b900 *00ccfe06080000000000000c00eab90000ccfe06080000000000000c00f5b9000018ff06080000 *000000000c00ffb9000018ff06080000000000000c000aba000084ff06080000000000000c0014 *ba000084ff06080000000000000c001dba0000a4ff06080000000000000c0027ba0000a4ff0608 *0000000000000c0032ba0000dcff06080000000000000c003cba0000dcff06080000000000000c *0047ba0000540007080000000000000c0051ba0000540007080000000000000c005cba00009000 *07080000000000000c0066ba0000900007080000000000000c0071ba0000dc0007080000000000 *000c007bba0000dc0007080000000000000c0086ba0000540107080000000000000c0090ba0000 *540107080000000000000c009bba0000900107080000000000000c00a5ba000090010708000000 *0000000c00b0ba0000dc0107080000000000000c00baba0000dc0107080000000000000c00c5ba *0000500207080000000000000c00cfba0000500207080000000000000c00d8ba00007002070800 *00000000000c00e2ba0000700207080000000000000c00edba0000a80207080000000000000c00 *f7ba0000a80207080000000000000c0002bb0000240307080000000000000c000cbb0000240307 *080000000000000c0017bb0000600307080000000000000c0021bb000060030708000000000000 *0c002cbb0000ac0307080000000000000c0036bb0000ac0307080000000000000c0041bb000028 *0407080000000000000c004bbb0000280407080000000000000c0056bb00006404070800000000 *00000c0060bb0000640407080000000000000c006bbb0000b00407080000000000000c0075bb00 *00b00407080000000000000c0080bb0000280507080000000000000c008abb0000280507080000 *000000000c0093bb0000480507080000000000000c009dbb0000480507080000000000000c00a8 *bb0000800507080000000000000c00b2bb0000800507080000000000000c00bdbb000004060708 *0000000000000c00c7bb0000040607080000000000000c00d2bb0000400607080000000000000c *00dcbb0000400607080000000000000c00e7bb00008c0607080000000000000c00f1bb00008c06 *07080000000000000c00fcbb0000100707080000000000000c0006bc0000100707080000000000 *000c0011bc00004c0707080000000000000c001bbc00004c0707080000000000000c0026bc0000 *980707080000000000000c0030bc0000980707080000000000000c003bbc000018080708000000 *0000000c0045bc0000180807080000000000000c004ebc0000380807080000000000000c0058bc *0000380807080000000000000c0063bc0000700807080000000000000c006dbc00007008070800 *00000000000c0078bc0000f80807080000000000000c0082bc0000f80807080000000000000c00 *8dbc0000340907080000000000000c0097bc0000340907080000000000000c00a2bc0000800907 *080000000000000c00acbc0000800907080000000000000c00b7bc0000080a0708000000000000 *0c00c1bc0000080a07080000000000000c00ccbc0000440a07080000000000000c00d6bc000044 *0a07080000000000000c00e1bc0000900a07080000000000000c00ebbc0000900a070800000000 *00000c00f6bc0000140b07080000000000000c0000bd0000140b07080000000000000c0009bd00 *00340b07080000000000000c0013bd0000340b07080000000000000c001ebd00006c0b07080000 *000000000c0028bd00006c0b07080000000000000c0033bd0000fc0b07080000000000000c003d *bd0000fc0b07080000000000000c0048bd0000380c07080000000000000c0052bd0000380c0708 *0000000000000c005dbd0000840c07080000000000000c0067bd0000840c07080000000000000c *0072bd0000140d07080000000000000c007cbd0000140d07080000000000000c0087bd0000500d *07080000000000000c0091bd0000500d07080000000000000c009cbd00009c0d07080000000000 *000c00a6bd00009c0d07080000000000000c00b1bd0000280e07080000000000000c00bbbd0000 *280e07080000000000000c00c4bd00004c0e07080000000000000c00cebd00004c0e0708000000 *0000000c00d9bd0000840e07080000000000000c00e3bd0000840e07080000000000000c00ecbd *0000080f07080000000000000c00f7bd000080af1108000000000000100004be0000280f070800 *00000000000c000dbe000088af110800000000000010001abe00003c0f07080000000000000c00 *24be00003c0f07080000000000000c002fbe0000940f07080000000000000c0038be000098af11 *08000000000000100045be0000a80f07080000000000000c004fbe0000a80f0708000000000000 *0c005abe0000001007080000000000000c0063be0000081007080000000000000c006cbe000010 *1007080000000000000c0075be0000c0af1108000000000000100082be0000d0af110800000000 *000010008fbe0000e0af110800000000000010009cbe0000241007080000000000000c00a6be00 *00241007080000000000000c00b1be0000881007080000000000000c00bbbe0000881007080000 *000000000c00c6be0000ec1007080000000000000c00d0be0000ec1007080000000000000c00db *be0000441107080000000000000c00e4be000004b011080000000000001000f1be000058110708 *0000000000000c00fbbe0000581107080000000000000c0006bf0000b01107080000000000000c *000fbf000014b0110800000000000010001cbf0000841507080000000000000c0026bf0000c811 *07080000000000000c0030bf0000c81107080000000000000c0039bf0000f41107080000000000 *000c0043bf0000f41107080000000000000c004cbf00001c1207080000000000000c0056bf0000 *1c1207080000000000000c005fbf0000481207080000000000000c0069bf000048120708000000 *0000000c0072bf0000701207080000000000000c007cbf0000701207080000000000000c0085bf *0000841207080000000000000c008fbf0000841207080000000000000c0098bf0000cc12070800 *00000000000c00a2bf0000cc1207080000000000000c00abbf0000f81207080000000000000c00 *b5bf0000f81207080000000000000c00bebf0000201307080000000000000c00c8bf0000201307 *080000000000000c00d1bf0000341307080000000000000c00dbbf000034130708000000000000 *0c00e4bf00007c1307080000000000000c00eebf00007c1307080000000000000c00f7bf0000a8 *1307080000000000000c0001c00000a81307080000000000000c000ac00000d013070800000000 *00000c0014c00000d01307080000000000000c001dc00000e41307080000000000000c0027c000 *00e41307080000000000000c0030c000002c1407080000000000000c003ac000002c1407080000 *000000000c0043c00000581407080000000000000c004dc00000581407080000000000000c0056 *c00000841407080000000000000c0060c00000841407080000000000000c0069c00000c8140708 *0000000000000c0073c00000c81407080000000000000c007cc00000841507080000000000000c *0087c00000a01507080000000000000c0090c000001cb0110800000000000010009dc00000ec15 *07080000000000000c00a7c00000b41507080000000000000c00b1c00000b41507080000000000 *000c00bcc00000ec1507080000000000000c00c7c00000281607080000000000000c00d0c00000 *48b011080000000000001000ddc000003c1607080000000000000c00e7c000003c160708000000 *0000000c00f2c00000941607080000000000000c00fbc0000058b01108000000000000100008c1 *0000082107080000000000000c0012c10000c01607080000000000000c001cc10000c016070800 *00000000000c0027c10000fc1607080000000000000c0031c10000fc1607080000000000000c00 *3cc10000341707080000000000000c0046c10000341707080000000000000c004fc10000541707 *080000000000000c0059c10000541707080000000000000c0064c100008c170708000000000000 *0c006ec100008c1707080000000000000c0079c10000c81707080000000000000c0083c10000c8 *1707080000000000000c008ec10000141807080000000000000c0098c100001418070800000000 *00000c00a3c10000701807080000000000000c00adc10000701807080000000000000c00b6c100 *00941807080000000000000c00c0c10000941807080000000000000c00cbc10000cc1807080000 *000000000c00d5c10000cc1807080000000000000c00e0c10000041907080000000000000c00ea *c10000041907080000000000000c00f3c10000241907080000000000000c00fdc1000024190708 *0000000000000c0008c200005c1907080000000000000c0012c200005c1907080000000000000c *001dc20000981907080000000000000c0027c20000981907080000000000000c0032c20000e419 *07080000000000000c003cc20000e41907080000000000000c0047c20000401a07080000000000 *000c0051c20000401a07080000000000000c005ac20000641a07080000000000000c0064c20000 *641a07080000000000000c006fc200009c1a07080000000000000c0079c200009c1a0708000000 *0000000c0084c20000d81a07080000000000000c008ec20000d81a07080000000000000c0099c2 *0000101b07080000000000000c00a3c20000101b07080000000000000c00acc20000301b070800 *00000000000c00b6c20000301b07080000000000000c00c1c20000681b07080000000000000c00 *cbc20000681b07080000000000000c00d6c20000a41b07080000000000000c00e0c20000a41b07 *080000000000000c00ebc20000f01b07080000000000000c00f5c20000f01b0708000000000000 *0c0000c300004c1c07080000000000000c000ac300004c1c07080000000000000c0013c3000070 *1c07080000000000000c001dc30000701c07080000000000000c0028c30000a81c070800000000 *00000c0032c30000a81c07080000000000000c003dc30000e41c07080000000000000c0047c300 *00e41c07080000000000000c0052c30000201d07080000000000000c005cc30000201d07080000 *000000000c0067c30000581d07080000000000000c0071c30000581d07080000000000000c007c *c30000941d07080000000000000c0086c30000941d07080000000000000c0091c30000e01d0708 *0000000000000c009bc30000e01d07080000000000000c00a6c300003c1e07080000000000000c *00b0c300003c1e07080000000000000c00b9c30000601e07080000000000000c00c3c30000601e *07080000000000000c00cec30000981e07080000000000000c00d8c30000981e07080000000000 *000c00e1c30000082107080000000000000c00ecc3000088b011080000000000001000f9c30000 *282107080000000000000c0002c4000090b0110800000000000010000fc400003c210708000000 *0000000c0019c400003c2107080000000000000c0024c40000942107080000000000000c002dc4 *0000a0b0110800000000000010003ac40000a82107080000000000000c0044c40000a821070800 *00000000000c004fc40000002207080000000000000c0058c40000c4b011080000000000001000 *65c40000142207080000000000000c006fc40000142207080000000000000c007ac40000842207 *080000000000000c0084c40000842207080000000000000c008dc40000b0220708000000000000 *0c0097c40000b02207080000000000000c00a0c40000d02207080000000000000c00aac40000d0 *2207080000000000000c00b3c40000fc2207080000000000000c00bdc40000fc22070800000000 *00000c00c6c40000202307080000000000000c00d0c40000202307080000000000000c00d9c400 *006c2307080000000000000c00e3c400006c2307080000000000000c00ecc40000982307080000 *000000000c00f6c40000982307080000000000000c00ffc40000bc2307080000000000000c0009 *c50000bc2307080000000000000c0012c50000f82307080000000000000c001cc50000f8230708 *0000000000000c0025c50000242407080000000000000c002fc50000242407080000000000000c *0038c50000482407080000000000000c0042c50000482407080000000000000c004bc500008424 *07080000000000000c0055c50000842407080000000000000c005ec50000b02407080000000000 *000c0068c50000b02407080000000000000c0071c50000d42407080000000000000c007bc50000 *d42407080000000000000c0084c50000102507080000000000000c008ec5000010250708000000 *0000000c0097c500003c2507080000000000000c00a1c500003c2507080000000000000c00aac5 *0000602507080000000000000c00b4c50000602507080000000000000c00bdc500009c25070800 *00000000000c00c7c500009c2507080000000000000c00d0c50000c82507080000000000000c00 *dac50000c82507080000000000000c00e3c50000ec2507080000000000000c00edc50000ec2507 *080000000000000c00f6c50000282607080000000000000c0000c6000028260708000000000000 *0c0009c60000542607080000000000000c0013c60000542607080000000000000c001cc6000078 *2607080000000000000c0026c60000782607080000000000000c002fc60000b426070800000000 *00000c0039c60000b42607080000000000000c0042c60000e02607080000000000000c004cc600 *00e02607080000000000000c0055c60000042707080000000000000c005fc60000042707080000 *000000000c0068c60000402707080000000000000c0072c60000402707080000000000000c007b *c600006c2707080000000000000c0085c600006c2707080000000000000c008ec6000090270708 *0000000000000c0098c60000902707080000000000000c00a1c60000cc2707080000000000000c *00abc60000cc2707080000000000000c00b4c60000f82707080000000000000c00bec60000f827 *07080000000000000c00c7c600001c2807080000000000000c00d1c600001c2807080000000000 *000c00dac60000582807080000000000000c00e4c60000582807080000000000000c00edc60000 *842807080000000000000c00f7c60000842807080000000000000c0000c70000a8280708000000 *0000000c000ac70000a82807080000000000000c0013c70000e82807080000000000000c001dc7 *0000e82807080000000000000c0026c70000302a07080000000000000c0030c70000302a070800 *00000000000c003bc70000642a07080000000000000c0045c70000642a07080000000000000c00 *50c70000282b07080000000000000c005ac70000282b07080000000000000c0065c700006c2b07 *080000000000000c006fc700006c2b07080000000000000c007ac70000a82b0708000000000000 *0c0084c70000a82b07080000000000000c008fc70000f42b07080000000000000c0099c70000f4 *2b07080000000000000c00a4c70000582c07080000000000000c00aec70000582c070800000000 *00000c00b9c70000942c07080000000000000c00c3c70000942c07080000000000000c00cec700 *00d02c07080000000000000c00d8c70000d02c07080000000000000c00e3c700000c2d07080000 *000000000c00edc700000c2d07080000000000000c00f8c70000582d07080000000000000c0002 *c80000582d07080000000000000c000dc80000b82d07080000000000000c0017c80000b82d0708 *0000000000000c0022c80000f42d07080000000000000c002cc80000f42d07080000000000000c *0037c80000302e07080000000000000c0041c80000302e07080000000000000c004cc800006c2e *07080000000000000c0056c800006c2e07080000000000000c0061c80000b82e07080000000000 *000c006bc80000b82e07080000000000000c0076c80000182f07080000000000000c0080c80000 *182f07080000000000000c008bc80000542f07080000000000000c0095c80000542f0708000000 *0000000c00a0c80000902f07080000000000000c00aac80000902f07080000000000000c00b5c8 *0000cc2f07080000000000000c00bfc80000cc2f07080000000000000c00cac800000830070800 *00000000000c00d4c80000083007080000000000000c00dfc80000443007080000000000000c00 *e9c80000443007080000000000000c00f4c80000803007080000000000000c00fec80000803007 *080000000000000c0009c90000cc3007080000000000000c0013c90000cc300708000000000000 *0c001ec900002c3107080000000000000c0028c900002c3107080000000000000c0033c9000068 *3107080000000000000c003dc90000683107080000000000000c0048c90000a431070800000000 *00000c0052c90000a43107080000000000000c005dc90000e03107080000000000000c0067c900 *00e03107080000000000000c0072c900002c3207080000000000000c007cc900002c3207080000 *000000000c0087c900008c3207080000000000000c0091c900008c3207080000000000000c009c *c90000c83207080000000000000c00a6c90000c83207080000000000000c00b1c9000004330708 *0000000000000c00bbc90000043307080000000000000c00c6c90000403307080000000000000c *00d0c90000403307080000000000000c00dbc900008c3307080000000000000c00e5c900008c33 *07080000000000000c00f0c90000ec3307080000000000000c00fac90000ec3307080000000000 *000c0005ca0000283407080000000000000c000fca0000283407080000000000000c001aca0000 *643407080000000000000c0024ca0000643407080000000000000c002fca0000a0340708000000 *0000000c0039ca0000a03407080000000000000c0044ca0000ec3407080000000000000c004eca *0000ec3407080000000000000c0059ca00004c3507080000000000000c0063ca00004c35070800 *00000000000c006eca0000883507080000000000000c0078ca0000883507080000000000000c00 *83ca0000c43507080000000000000c008dca0000c43507080000000000000c0098ca0000003607 *080000000000000c00a2ca0000003607080000000000000c00adca00004c360708000000000000 *0c00b7ca00004c3607080000000000000c00c2ca0000ac3607080000000000000c00ccca0000ac *3607080000000000000c00d7ca0000e83607080000000000000c00e1ca0000e836070800000000 *00000c00ecca0000243707080000000000000c00f6ca0000243707080000000000000c0001cb00 *00603707080000000000000c000bcb0000603707080000000000000c0016cb0000ac3707080000 *000000000c0020cb0000ac3707080000000000000c002bcb00000c3807080000000000000c0035 *cb00000c3807080000000000000c0040cb0000483807080000000000000c004acb000048380708 *0000000000000c0055cb0000843807080000000000000c005fcb0000843807080000000000000c *006acb0000c03807080000000000000c0074cb0000c03807080000000000000c007fcb00000c39 *07080000000000000c0089cb00000c3907080000000000000c0094cb00006c3907080000000000 *000c009ecb00006c3907080000000000000c00a9cb0000a83907080000000000000c00b3cb0000 *a83907080000000000000c00becb0000e43907080000000000000c00c8cb0000e4390708000000 *0000000c00d3cb0000203a07080000000000000c00ddcb0000203a07080000000000000c00e8cb *00006c3a07080000000000000c00f2cb00006c3a07080000000000000c00fdcb0000cc3a070800 *00000000000c0007cc0000cc3a07080000000000000c0012cc0000083b07080000000000000c00 *1ccc0000083b07080000000000000c0027cc0000443b07080000000000000c0031cc0000443b07 *080000000000000c003ccc0000803b07080000000000000c0046cc0000803b0708000000000000 *0c0051cc0000bc3b07080000000000000c005bcc0000bc3b07080000000000000c0064cc0000d4 *3f07080000000000000c006ecc0000d43f07080000000000000c0079cc00000440070800000000 *00000c0083cc0000044007080000000000000c008ecc00005c4007080000000000000c0098cc00 *005c4007080000000000000c00a3cc0000004107080000000000000c00adcc0000004107080000 *000000000c00b6cc0000284107080000000000000c00c0cc0000284107080000000000000c00c9 *cc0000504107080000000000000c00d3cc0000504107080000000000000c00dccc000078410708 *0000000000000c00e6cc0000784107080000000000000c00efcc0000a04107080000000000000c *00f9cc0000a04107080000000000000c0002cd0000c84107080000000000000c000ccd0000c841 *07080000000000000c0015cd0000f04107080000000000000c001fcd0000f04107080000000000 *000c0028cd0000184207080000000000000c0032cd0000184207080000000000000c003bcd0000 *404207080000000000000c0045cd0000404207080000000000000c004ecd000068420708000000 *0000000c0058cd0000684207080000000000000c0061cd0000904207080000000000000c006bcd *0000904207080000000000000c0074cd0000b84207080000000000000c007ecd0000b842070800 *00000000000c0087cd0000e04207080000000000000c0091cd0000e04207080000000000000c00 *9acd0000084307080000000000000c00a4cd0000084307080000000000000c00adcd0000304307 *080000000000000c00b7cd0000304307080000000000000c00c0cd000058430708000000000000 *0c00cacd0000584307080000000000000c00d3cd0000804307080000000000000c00ddcd000080 *4307080000000000000c00e6cd0000a84307080000000000000c00f0cd0000a843070800000000 *00000c00f9cd0000044407080000000000000c0004ce0000144407080000000000000c000fce00 *00244407080000000000000c001ace0000484407080000000000000c0024ce0000484407080000 *000000000c002fce0000684407080000000000000c0039ce0000684407080000000000000c0044 *ce0000744407080000000000000c004fce0000844407080000000000000c005ace000094440708 *0000000000000c0065ce0000d44407080000000000000c006fce0000d44407080000000000000c *007ace0000f44407080000000000000c0084ce0000f44407080000000000000c008fce00001445 *07080000000000000c0099ce00002c4507080000000000000c00a4ce0000644507080000000000 *000c00afce0000ac4507080000000000000c00bace0000f44507080000000000000c00c5ce0000 *2c4607080000000000000c00d0ce0000744607080000000000000c00dbce0000dc460708000000 *0000000c00e5ce0000484707080000000000000c00efce0000484707080000000000000c00f8ce *00008c4707080000000000000c0002cf00008c4707080000000000000c000bcf0000b447070800 *00000000000c0015cf0000b44707080000000000000c001ecf0000fc4707080000000000000c00 *28cf0000fc4707080000000000000c0031cf0000f04807080000000000000c003bcf0000f04807 *080000000000000c0044cf0000504907080000000000000c004ecf000050490708000000000000 *0c0057cf0000704907080000000000000c0061cf0000704907080000000000000c006acf000098 *4907080000000000000c0074cf0000984907080000000000000c007dcf0000b849070800000000 *00000c0087cf0000b84907080000000000000c0090cf0000e04907080000000000000c009acf00 *00e04907080000000000000c00a3cf0000084a07080000000000000c00adcf0000084a07080000 *000000000c00b6cf0000284a07080000000000000c00c0cf0000284a07080000000000000c00c9 *cf0000704a07080000000000000c00d3cf0000704a07080000000000000c00dccf00001c4c0708 *0000000000000c00e7cf0000444c07080000000000000c00f2cf0000644c07080000000000000c *00fccf0000644c07080000000000000c0007d00000704c07080000000000000c0012d000007c4c *07080000000000000c001dd00000a44c07080000000000000c0028d00000c44c07080000000000 *000c0032d00000c44c07080000000000000c003dd00000e44c07080000000000000c0047d00000 *e44c07080000000000000c0052d00000044d07080000000000000c005cd00000044d0708000000 *0000000c0067d00000104d07080000000000000c0072d000001c4d07080000000000000c007dd0 *0000444d07080000000000000c0088d00000644d07080000000000000c0092d00000644d070800 *00000000000c009dd00000844d07080000000000000c00a7d00000844d07080000000000000c00 *b2d00000904d07080000000000000c00bdd00000b84d07080000000000000c00c8d00000c44d07 *080000000000000c00d3d00000e44d07080000000000000c00ddd00000e44d0708000000000000 *0c00e8d00000044e07080000000000000c00f2d00000044e07080000000000000c00fdd0000024 *4e07080000000000000c0007d10000244e07080000000000000c0012d10000444e070800000000 *00000c001cd10000644e07080000000000000c0026d10000644e07080000000000000c002fd100 *004c5407080000000000000c003ad10000585407080000000000000c0045d10000785407080000 *000000000c004fd10000785407080000000000000c005ad10000845407080000000000000c0065 *d10000905407080000000000000c0070d10000cc5407080000000000000c007ad10000cc540708 *0000000000000c0085d10000ec5407080000000000000c008fd10000ec5407080000000000000c *009ad10000f85407080000000000000c00a5d10000205507080000000000000c00b0d100005c55 *07080000000000000c00bad100005c5507080000000000000c00c5d10000685507080000000000 *000c00d0d10000905507080000000000000c00dbd10000cc5507080000000000000c00e5d10000 *cc5507080000000000000c00f0d10000ec5507080000000000000c00fad10000ec550708000000 *0000000c0005d200000c5607080000000000000c000fd200000c5607080000000000000c001ad2 *0000185607080000000000000c0025d20000405607080000000000000c0030d200007c56070800 *00000000000c003ad200007c5607080000000000000c0045d20000885607080000000000000c00 *50d20000b05607080000000000000c005bd20000d05607080000000000000c0065d20000d05607 *080000000000000c0070d20000f05607080000000000000c007ad20000f0560708000000000000 *0c0085d20000fc5607080000000000000c0090d20000085707080000000000000c009bd2000028 *5707080000000000000c00a5d20000285707080000000000000c00b0d200003457070800000000 *00000c00bbd200005c5707080000000000000c00c6d20000845707080000000000000c00d1d200 *00c05707080000000000000c00dbd20000c05707080000000000000c00e6d20000e05707080000 *000000000c00f0d20000e05707080000000000000c00fbd20000005807080000000000000c0005 *d30000005807080000000000000c0010d30000205807080000000000000c001ad3000020580708 *0000000000000c0025d30000405807080000000000000c002fd30000605807080000000000000c *0039d30000605807080000000000000c0042d30000785e07080000000000000c004cd30000785e *07080000000000000c0055d30000c05e07080000000000000c005fd30000c05e07080000000000 *000c0068d30000e05e07080000000000000c0072d30000e05e07080000000000000c007bd30000 *085f07080000000000000c0085d30000085f07080000000000000c008ed30000505f0708000000 *0000000c0098d30000505f07080000000000000c00a1d30000506307080000000000000c00abd3 *0000506307080000000000000c00b6d300007c6307080000000000000c00c1d300008c63070800 *00000000000c00ccd30000746407080000000000000c00d7d30000a06307080000000000000c00 *e2d300000c6407080000000000000c00ecd30000146407080000000000000c00f6d30000146407 *080000000000000c00ffd30000286407080000000000000c0009d4000028640708000000000000 *0c0012d400003c6407080000000000000c001dd40000686407080000000000000c0027d4000074 *6407080000000000000c0031d40000a46407080000000000000c003bd40000a464070800000000 *00000c0046d40000fc6407080000000000000c0050d40000fc6407080000000000000c005bd400 *00a06507080000000000000c0064d40000e4b21108000000000000100071d40000b46507080000 *000000000c007bd40000b46507080000000000000c0086d400000c6607080000000000000c008f *d40000f4b2110800000000000010009cd400002c6607080000000000000c00a6d4000018660708 *0000000000000c00b0d40000186607080000000000000c00b9d400002c6607080000000000000c *00c4d40000806607080000000000000c00cdd4000004b311080000000000001000dad400001c6b *07080000000000000c00e4d40000ac6607080000000000000c00eed40000d06607080000000000 *000c00f8d40000d06607080000000000000c0003d50000ec6607080000000000000c000ed50000 *106707080000000000000c009d5c0000206707080000000000000c00a75c000020670708000000 *0000000c0018d50000586707080000000000000c0022d50000586707080000000000000c002dd5 *00008c6707080000000000000c0037d500008c6707080000000000000c0042d50000f467070800 *00000000000c004cd50000f46707080000000000000c0057d50000306807080000000000000c00 *61d50000306807080000000000000c006cd50000806807080000000000000c0076d50000806807 *080000000000000c0081d50000bc6807080000000000000c008bd50000bc680708000000000000 *0c006f5a00001c6907080000000000000c00795a00001c6907080000000000000c0096d5000074 *6907080000000000000c00a0d50000746907080000000000000c00abd50000a869070800000000 *00000c00b5d50000a86907080000000000000c00c0d50000106a07080000000000000c00cad500 *00106a07080000000000000c00d5d50000806a07080000000000000c00dfd50000806a07080000 *000000000c00ead50000b46a07080000000000000c00f4d50000b46a07080000000000000c00fd *d500001c6b07080000000000000c0008d60000406b07080000000000000c0011d600000cb31108 *00000000000010001ed60000606b07080000000000000c0028d600004c6b07080000000000000c *0032d600004c6b07080000000000000c003bd60000606b07080000000000000c0046d60000b46b *07080000000000000c004fd600001cb3110800000000000010005cd60000c86b07080000000000 *000c0066d60000c86b07080000000000000c0071d60000206c07080000000000000c007ad60000 *2cb31108000000000000100087d60000346c07080000000000000c0091d60000346c0708000000 *0000000c009cd600008c6c07080000000000000c00a5d600003cb311080000000000001000b2d6 *0000a06c07080000000000000c00bcd60000a06c07080000000000000c00c7d60000f86c070800 *00000000000c00d0d600004cb311080000000000001000ddd600000c6d07080000000000000c00 *e7d600000c6d07080000000000000c00f2d60000646d07080000000000000c00fbd600005cb311 *08000000000000100008d70000786d07080000000000000c0012d70000786d0708000000000000 *0c001dd70000d06d07080000000000000c0026d700006cb31108000000000000100033d70000e4 *6d07080000000000000c003dd70000e46d07080000000000000c0048d700003c6e070800000000 *00000c0051d700007cb3110800000000000010005ed700005c6e07080000000000000c0068d700 *00486e07080000000000000c0072d70000486e07080000000000000c007bd700005c6e07080000 *000000000c0086d70000b06e07080000000000000c008fd700008cb3110800000000000010009c *d70000c46e07080000000000000c00a6d70000c46e07080000000000000c00b1d700001c6f0708 *0000000000000c00bad700009cb311080000000000001000c7d700003c6f07080000000000000c *00d1d70000286f07080000000000000c00dbd70000286f07080000000000000c00e4d700003c6f *07080000000000000c00efd70000906f07080000000000000c00f8d70000acb311080000000000 *00100005d80000a46f07080000000000000c000fd80000a46f07080000000000000c001ad80000 *fc6f07080000000000000c0023d80000bcb31108000000000000100030d800001c700708000000 *0000000c003ad80000087007080000000000000c0044d80000087007080000000000000c004dd8 *00001c7007080000000000000c0058d80000707007080000000000000c0061d80000ccb3110800 *000000000010006ed80000847007080000000000000c0078d80000847007080000000000000c00 *83d80000dc7007080000000000000c008cd80000dcb31108000000000000100099d80000fc7007 *080000000000000c00a3d80000e87007080000000000000c00add80000e8700708000000000000 *0c00b6d80000fc7007080000000000000c00c1d80000507107080000000000000c00cad80000ec *b311080000000000001000d7d80000647107080000000000000c00e1d800006471070800000000 *00000c00ecd80000bc7107080000000000000c00f5d80000fcb31108000000000000100002d900 *00d07107080000000000000c000cd90000d07107080000000000000c0017d90000287207080000 *000000000c0020d900000cb4110800000000000010002dd90000407207080000000000000c0037 *d90000407207080000000000000c0042d90000a07207080000000000000c004bd900001cb41108 *000000000000100058d90000b47207080000000000000c0062d90000b47207080000000000000c *006dd900000c7307080000000000000c0076d900002cb41108000000000000100083d900002073 *07080000000000000c008dd90000207307080000000000000c0098d90000787307080000000000 *000c00a1d900003cb411080000000000001000aed900008c7307080000000000000c00b8d90000 *8c7307080000000000000c00c3d90000e47307080000000000000c00ccd900004cb41108000000 *0000001000d9d90000fc7307080000000000000c00e3d90000fc7307080000000000000c00eed9 *00005c7407080000000000000c00f7d900005cb41108000000000000100004da00007074070800 *00000000000c000eda0000707407080000000000000c0019da0000c87407080000000000000c00 *22da00006cb4110800000000000010002fda0000e87407080000000000000c0039da0000d47407 *080000000000000c0043da0000d47407080000000000000c004cda0000e8740708000000000000 *0c0057da00003c7507080000000000000c0060da00007cb4110800000000000010006dda000050 *7507080000000000000c0077da0000507507080000000000000c0082da0000a875070800000000 *00000c008bda00008cb41108000000000000100098da0000c87507080000000000000c00a2da00 *00b47507080000000000000c00acda0000b47507080000000000000c00b5da0000c87507080000 *000000000c00c0da00001c7607080000000000000c00c9da00009cb411080000000000001000d6 *da0000347607080000000000000c00e0da0000347607080000000000000c00ebda000094760708 *0000000000000c00f4da0000acb41108000000000000100001db0000a87607080000000000000c *000bdb0000a87607080000000000000c0016db0000007707080000000000000c001fdb0000bcb4 *110800000000000010002cdb0000207707080000000000000c0036db00000c7707080000000000 *000c0040db00000c7707080000000000000c0049db0000207707080000000000000c0054db0000 *747707080000000000000c005ddb0000ccb4110800000000000010006adb000088770708000000 *0000000c0074db0000887707080000000000000c007fdb0000e07707080000000000000c0088db *0000dcb41108000000000000100095db0000f47707080000000000000c009fdb0000f477070800 *00000000000c00aadb00004c7807080000000000000c00b3db0000ecb411080000000000001000 *c0db0000647807080000000000000c00cadb0000647807080000000000000c00d5db0000c47807 *080000000000000c00dedb0000fcb411080000000000001000ebdb0000d8780708000000000000 *0c00f5db0000d87807080000000000000c0000dc0000307907080000000000000c0009dc00000c *b51108000000000000100016dc0000507907080000000000000c0020dc00003c79070800000000 *00000c002adc00003c7907080000000000000c0033dc0000507907080000000000000c003edc00 *00a47907080000000000000c0047dc00001cb51108000000000000100054dc0000c47907080000 *000000000c005edc0000b07907080000000000000c0068dc0000b07907080000000000000c0071 *dc0000c47907080000000000000c007cdc0000187a07080000000000000c0085dc00002cb51108 *000000000000100092dc0000387a07080000000000000c009cdc0000247a07080000000000000c *00a6dc0000247a07080000000000000c00afdc0000387a07080000000000000c00badc00008c7a *07080000000000000c00c3dc00003cb511080000000000001000d0dc0000ac7a07080000000000 *000c00dadc0000987a07080000000000000c00e4dc0000987a07080000000000000c00eddc0000 *ac7a07080000000000000c00f8dc0000007b07080000000000000c0001dd00004cb51108000000 *00000010000edd0000207b07080000000000000c0018dd00000c7b07080000000000000c0022dd *00000c7b07080000000000000c002bdd0000207b07080000000000000c0036dd0000747b070800 *00000000000c003fdd00005cb5110800000000000010004cdd0000887b07080000000000000c00 *56dd0000887b07080000000000000c0061dd0000e07b07080000000000000c006add00006cb511 *08000000000000100077dd0000f87b07080000000000000c0081dd0000f87b0708000000000000 *0c008cdd0000587c07080000000000000c0095dd00007cb511080000000000001000a2dd00006c *7c07080000000000000c00acdd00006c7c07080000000000000c00b7dd0000c47c070800000000 *00000c00c0dd00008cb511080000000000001000cddd0000d87c07080000000000000c00d7dd00 *00d87c07080000000000000c00e2dd0000307d07080000000000000c00ebdd00009cb511080000 *000000001000f8dd0000447d07080000000000000c0002de0000447d07080000000000000c000d *de00009c7d07080000000000000c0016de0000acb51108000000000000100023de0000b47d0708 *0000000000000c002dde0000b47d07080000000000000c0038de0000147e07080000000000000c *0041de0000bcb5110800000000000010004ede0000287e07080000000000000c0058de0000287e *07080000000000000c0063de0000807e07080000000000000c006cde0000ccb511080000000000 *00100079de00005c8107080000000000000c0083de0000a47e07080000000000000c008dde0000 *a47e07080000000000000c00d45e0000047f07080000000000000c00de5e0000047f0708000000 *0000000c0098de0000407f07080000000000000c00a2de0000407f07080000000000000c00adde *0000a07f07080000000000000c00b7de0000a07f07080000000000000c00c2de0000d47f070800 *00000000000c00ccde0000d47f07080000000000000c00d5de00001c8007080000000000000c00 *e0de00002c8007080000000000000c00ebde00005c8107080000000000000c00f6de0000648007 *080000000000000c0001df0000988007080000000000000c000bdf0000a4800708000000000000 *0c0015df0000a48007080000000000000c001edf0000d08007080000000000000c0028df0000d0 *8007080000000000000c0031df0000008107080000000000000c003bdf00000081070800000000 *00000c0044df0000208107080000000000000c004fdf00004c8107080000000000000c0059df00 *00788107080000000000000c0062df0000d4b5110800000000000010006fdf0000fc8e07080000 *000000000c0079df0000988107080000000000000c0083df0000988107080000000000000c008c *df0000b88107080000000000000c0096df0000b88107080000000000000c00a1df0000f4810708 *0000000000000c00abdf0000f48107080000000000000c00b4df0000148207080000000000000c *00bedf0000148207080000000000000c00c9df0000508207080000000000000c00d3df00005082 *07080000000000000c00dcdf0000708207080000000000000c00e6df0000708207080000000000 *000c00f1df0000ac8207080000000000000c00fbdf0000ac8207080000000000000c0004e00000 *cc8207080000000000000c000ee00000cc8207080000000000000c0019e0000008830708000000 *0000000c0023e00000088307080000000000000c002ce00000288307080000000000000c0036e0 *0000288307080000000000000c0041e00000648307080000000000000c004be000006483070800 *00000000000c0054e00000848307080000000000000c005ee00000848307080000000000000c00 *69e00000c08307080000000000000c0073e00000c08307080000000000000c007ce00000e08307 *080000000000000c0086e00000e08307080000000000000c0091e000001c840708000000000000 *0c009be000001c8407080000000000000c00a4e000003c8407080000000000000c00aee000003c *8407080000000000000c00b9e00000788407080000000000000c00c3e000007884070800000000 *00000c00cce00000988407080000000000000c00d6e00000988407080000000000000c00e1e000 *00d48407080000000000000c00ebe00000d48407080000000000000c00d1600000f48407080000 *000000000c00db600000f48407080000000000000c00f4e00000308507080000000000000c00fe *e00000308507080000000000000c0007e10000508507080000000000000c0011e1000050850708 *0000000000000c001ce100008c8507080000000000000c0026e100008c8507080000000000000c *002fe10000ac8507080000000000000c0039e10000ac8507080000000000000c0044e10000e885 *07080000000000000c004ee10000e88507080000000000000c00fb600000088607080000000000 *000c0005610000088607080000000000000c0057e10000488607080000000000000c0061e10000 *488607080000000000000c006ce10000b88607080000000000000c0076e10000b8860708000000 *0000000c0081e10000348707080000000000000c008be10000348707080000000000000c0096e1 *0000bc8707080000000000000c00a0e10000bc8707080000000000000c00abe100005088070800 *00000000000c00b5e10000508807080000000000000c00c0e10000f08807080000000000000c00 *cae10000f08807080000000000000c00d5e100009c8907080000000000000c00dfe100009c8907 *080000000000000c00eae10000548a07080000000000000c00f4e10000548a0708000000000000 *0c00ffe10000188b07080000000000000c0009e20000188b07080000000000000c0014e20000e8 *8b07080000000000000c001ee20000e88b07080000000000000c0029e20000c48c070800000000 *00000c0033e20000c48c07080000000000000c003ee20000ac8d07080000000000000c0048e200 *00ac8d07080000000000000c0051e200008c8e07080000000000000c005be200008c8e07080000 *000000000c0064e20000fc8e07080000000000000c006fe20000188f07080000000000000c0078 *e20000dcb51108000000000000100085e20000648f07080000000000000c008fe200002c8f0708 *0000000000000c0099e200002c8f07080000000000000c00a4e20000648f07080000000000000c *00afe20000a08f07080000000000000c00b8e20000f4b511080000000000001000c5e2000034ef *07080000000000000c00cfe20000d88f07080000000000000c00d9e20000d88f07080000000000 *000c0045660000149007080000000000000c00e4e20000149007080000000000000c00ede20000 *609007080000000000000c00f7e20000609007080000000000000c0002e3000090900708000000 *0000000c000de30000a49007080000000000000c0017e30000a49007080000000000000c009966 *0000e09007080000000000000c0022e30000e09007080000000000000c002be300002091070800 *00000000000c0036e30000349107080000000000000c0040e30000349107080000000000000c00 *4be30000709107080000000000000c0055e30000709107080000000000000c005ee30000bc9107 *080000000000000c0068e30000bc9107080000000000000c0073e30000ec910708000000000000 *0c007ee30000009207080000000000000c0088e30000009207080000000000000c00b56200003c *9207080000000000000c0093e300003c9207080000000000000c009ce300007c92070800000000 *00000c0055640000909207080000000000000c005f640000909207080000000000000c00a7e300 *00cc9207080000000000000c00b1e30000cc9207080000000000000c00bae300000c9307080000 *000000000c005a650000209307080000000000000c0064650000209307080000000000000c00c5 *e300005c9307080000000000000c00cfe300005c9307080000000000000c00d8e30000a8930708 *0000000000000c00e2e30000a89307080000000000000c00ede30000d89307080000000000000c *00f8e30000ec9307080000000000000c0002e40000ec9307080000000000000c000de400002894 *07080000000000000c0017e40000289407080000000000000c0020e40000689407080000000000 *000c002be400007c9407080000000000000c0035e400007c9407080000000000000c0040e40000 *b89407080000000000000c004ae40000b89407080000000000000c0053e40000f8940708000000 *0000000c005ee400000c9507080000000000000c0068e400000c9507080000000000000c0073e4 *0000489507080000000000000c007de40000489507080000000000000c0086e400009495070800 *00000000000c0090e40000949507080000000000000c009be40000c49507080000000000000c00 *a6e40000d89507080000000000000c00b0e40000d89507080000000000000c00bbe40000149607 *080000000000000c00c5e40000149607080000000000000c00cee4000054960708000000000000 *0c00d9e40000689607080000000000000c00e3e40000689607080000000000000c00eee40000a4 *9607080000000000000c00f8e40000a49607080000000000000c0001e50000e496070800000000 *00000c000ce50000f89607080000000000000c0016e50000f89607080000000000000c0021e500 *00349707080000000000000c002be50000349707080000000000000c0034e50000809707080000 *000000000c003ee50000809707080000000000000c0049e50000b09707080000000000000c0054 *e50000c49707080000000000000c005ee50000c49707080000000000000c0069e5000000980708 *0000000000000c0073e50000009807080000000000000c007ce50000409807080000000000000c *0098690000549807080000000000000c00a2690000549807080000000000000c0087e500009098 *07080000000000000c0091e50000909807080000000000000c009ae50000d09807080000000000 *000c00a5e50000e49807080000000000000c00afe50000e49807080000000000000c00bae50000 *209907080000000000000c00c4e50000209907080000000000000c00cde500006c990708000000 *0000000c00d7e500006c9907080000000000000c00e2e500009c9907080000000000000c00ede5 *0000b09907080000000000000c00f7e50000b09907080000000000000c0002e60000ec99070800 *00000000000c000ce60000ec9907080000000000000c0015e600002c9a07080000000000000c00 *016a0000409a07080000000000000c000b6a0000409a07080000000000000c0020e600007c9a07 *080000000000000c002ae600007c9a07080000000000000c0033e60000bc9a0708000000000000 *0c003ee60000d09a07080000000000000c0048e60000d09a07080000000000000c0053e600000c *9b07080000000000000c005de600000c9b07080000000000000c0066e60000589b070800000000 *00000c0070e60000589b07080000000000000c007be60000889b07080000000000000c0086e600 *009c9b07080000000000000c0090e600009c9b07080000000000000c009be60000d89b07080000 *000000000c00a5e60000d89b07080000000000000c00aee60000189c07080000000000000c00b9 *e600002c9c07080000000000000c00c3e600002c9c07080000000000000c00cee60000689c0708 *0000000000000c00d8e60000689c07080000000000000c00e1e60000a89c07080000000000000c *00ece60000bc9c07080000000000000c00f6e60000bc9c07080000000000000c0001e70000f89c *07080000000000000c000be70000f89c07080000000000000c0014e70000449d07080000000000 *000c001ee70000449d07080000000000000c0029e70000749d07080000000000000c0034e70000 *889d07080000000000000c003ee70000889d07080000000000000c0049e70000c49d0708000000 *0000000c0053e70000c49d07080000000000000c005ce70000049e07080000000000000c0067e7 *0000189e07080000000000000c0071e70000189e07080000000000000c007ce70000549e070800 *00000000000c0086e70000549e07080000000000000c008fe70000949e07080000000000000c00 *9ae70000a89e07080000000000000c00a4e70000a89e07080000000000000c00afe70000e49e07 *080000000000000c00b9e70000e49e07080000000000000c00c2e70000309f0708000000000000 *0c00cce70000309f07080000000000000c00d7e70000609f07080000000000000c00e2e7000074 *9f07080000000000000c00ece70000749f07080000000000000c00f7e70000b09f070800000000 *00000c0001e80000b09f07080000000000000c000ae80000f09f07080000000000000c0015e800 *0004a007080000000000000c001fe8000004a007080000000000000c002ae8000040a007080000 *000000000c0034e8000040a007080000000000000c003de8000080a007080000000000000c0048 *e8000094a007080000000000000c0052e8000094a007080000000000000c005de80000d0a00708 *0000000000000c0067e80000d0a007080000000000000c0070e800001ca107080000000000000c *007ae800001ca107080000000000000c0085e800004ca107080000000000000c0090e8000060a1 *07080000000000000c009ae8000060a107080000000000000c00a5e800009ca107080000000000 *000c00afe800009ca107080000000000000c00b8e80000dca107080000000000000c00c3e80000 *f0a107080000000000000c00cde80000f0a107080000000000000c00d8e800002ca20708000000 *0000000c00e2e800002ca207080000000000000c00ebe800006ca207080000000000000c00f6e8 *000080a207080000000000000c0000e9000080a207080000000000000c000be90000bca2070800 *00000000000c0015e90000bca207080000000000000c001ee9000008a307080000000000000c00 *28e9000008a307080000000000000c0033e9000038a307080000000000000c003ee900004ca307 *080000000000000c0048e900004ca307080000000000000c0053e9000088a30708000000000000 *0c005de9000088a307080000000000000c0066e90000c8a307080000000000000c0071e90000dc *a307080000000000000c007be90000dca307080000000000000c0086e9000018a4070800000000 *00000c0090e9000018a407080000000000000c0099e9000058a407080000000000000c00a4e900 *006ca407080000000000000c00aee900006ca407080000000000000c00b9e90000a8a407080000 *000000000c00c3e90000a8a407080000000000000c0021730000f4a407080000000000000c002b *730000f4a407080000000000000c00cce9000024a507080000000000000c00a372000038a50708 *0000000000000c00ad72000038a507080000000000000c005972000074a507080000000000000c *00d7e9000074a507080000000000000c00e0e90000b4a507080000000000000c00ebe90000c8a5 *07080000000000000c00f5e90000c8a507080000000000000c0000ea000004a607080000000000 *000c000aea000004a607080000000000000c0013ea000044a607080000000000000c001eea0000 *58a607080000000000000c0028ea000058a607080000000000000c0033ea000094a60708000000 *0000000c003dea000094a607080000000000000c0046ea0000e0a607080000000000000c0050ea *0000e0a607080000000000000c005bea000010a707080000000000000c0066ea000024a7070800 *00000000000c0070ea000024a707080000000000000c007bea000060a707080000000000000c00 *85ea000060a707080000000000000c008eea0000a0a707080000000000000c0027780000b4a707 *080000000000000c0031780000b4a707080000000000000c0099ea0000f0a70708000000000000 *0c00a3ea0000f0a707080000000000000c00acea000030a807080000000000000c006177000044 *a807080000000000000c006b77000044a807080000000000000c00b7ea000080a8070800000000 *00000c00c1ea000080a807080000000000000c004c770000cca807080000000000000c00567700 *00cca807080000000000000c00caea0000fca807080000000000000c00d5ea000010a907080000 *000000000c00dfea000010a907080000000000000c00eaea00004ca907080000000000000c00f4 *ea00004ca907080000000000000c00fdea00008ca907080000000000000c0008eb0000a0a90708 *0000000000000c0012eb0000a0a907080000000000000c001deb0000dca907080000000000000c *0027eb0000dca907080000000000000c0030eb00001caa07080000000000000c003beb000024aa *07080000000000000c0046eb00009caa07080000000000000c0051eb0000b8aa07080000000000 *000c005beb0000c4aa07080000000000000c0065eb0000c4aa07080000000000000c006eeb0000 *e4aa07080000000000000c0079eb000010ab07080000000000000c0083eb000010ab0708000000 *0000000c008eeb00001cab07080000000000000c0098eb000050ab07080000000000000c00a2eb *000060ab07080000000000000c00aceb000060ab07080000000000000c00b7eb0000e8ab070800 *00000000000c00c1eb0000e8ab07080000000000000c00cceb000088ac07080000000000000c00 *d6eb000088ac07080000000000000c00e1eb0000b4ac07080000000000000c00eceb000048ad07 *080000000000000c00f7eb000064ad07080000000000000c0001ec000070ad0708000000000000 *0c000bec000070ad07080000000000000c0014ec000090ad07080000000000000c001fec0000bc *ad07080000000000000c0029ec0000bcad07080000000000000c0034ec0000c8ad070800000000 *00000c003eec0000fcad07080000000000000c0048ec00000cae07080000000000000c0052ec00 *000cae07080000000000000c005dec000084ae07080000000000000c0068ec000024af07080000 *000000000c0072ec000024af07080000000000000c007dec000060af07080000000000000c0087 *ec000094af07080000000000000c0091ec0000a4af07080000000000000c009bec0000a4af0708 *0000000000000c00a6ec00001cb007080000000000000c00b1ec0000a8b007080000000000000c *00bcec0000c4b007080000000000000c00c6ec0000d0b007080000000000000c00d0ec0000d0b0 *07080000000000000c00d9ec0000f0b007080000000000000c00e4ec00001cb107080000000000 *000c00eeec00001cb107080000000000000c00f9ec000028b107080000000000000c0003ed0000 *5cb107080000000000000c00987800006cb107080000000000000c00a27800006cb10708000000 *0000000c00ad780000f4b107080000000000000c00b7780000f4b107080000000000000c000ded *000094b207080000000000000c0017ed000094b207080000000000000c0022ed0000c0b2070800 *00000000000c002ded00004cb307080000000000000c0038ed000068b307080000000000000c00 *42ed000074b307080000000000000c004ced000074b307080000000000000c0055ed000094b307 *080000000000000c0060ed0000c0b307080000000000000c006aed0000c0b30708000000000000 *0c0075ed0000ccb307080000000000000c007fed000000b407080000000000000c0089ed000010 *b407080000000000000c0093ed000010b407080000000000000c009eed000080b4070800000000 *00000c00a9ed000018b507080000000000000c00b3ed000018b507080000000000000c00beed00 *0054b507080000000000000c00c8ed000088b507080000000000000c00d878000098b507080000 *000000000c00e278000098b507080000000000000c00d2ed000008b607080000000000000c00dd *ed00008cb607080000000000000c00e8ed0000a8b607080000000000000c00f2ed0000b4b60708 *0000000000000c00fced0000b4b607080000000000000c0005ee0000d4b607080000000000000c *0010ee000000b707080000000000000c001aee000000b707080000000000000c0025ee00000cb7 *07080000000000000c002fee000040b707080000000000000c002a79000050b707080000000000 *000c00cd78000050b707080000000000000c0039ee0000d0b707080000000000000c0043ee0000 *d0b707080000000000000c009f73000068b807080000000000000c00a973000068b80708000000 *0000000c004eee000094b807080000000000000c0059ee00001cb907080000000000000c0064ee *000038b907080000000000000c006eee000044b907080000000000000c0078ee000044b9070800 *00000000000c0081ee000064b907080000000000000c008cee000090b907080000000000000c00 *96ee000090b907080000000000000c00a1ee00009cb907080000000000000c00abee0000d0b907 *080000000000000c00b5ee0000e0b907080000000000000c00bfee0000e0b90708000000000000 *0c00caee00004cba07080000000000000c00d5ee0000e0ba07080000000000000c00dfee0000e0 *ba07080000000000000c00eaee00001cbb07080000000000000c00f4ee000050bb070800000000 *00000c00feee000060bb07080000000000000c0008ef000060bb07080000000000000c0013ef00 *00ccbb07080000000000000c001eef00004cbc07080000000000000c0029ef000068bc07080000 *000000000c0033ef000074bc07080000000000000c003def000074bc07080000000000000c0046 *ef000094bc07080000000000000c0051ef0000c0bc07080000000000000c005bef0000c0bc0708 *0000000000000c0066ef0000ccbc07080000000000000c0070ef000000bd07080000000000000c *007aef000010bd07080000000000000c0084ef000010bd07080000000000000c008fef00008cbd *07080000000000000c0099ef00008cbd07080000000000000c002771000020be07080000000000 *000c003171000020be07080000000000000c00a4ef00004cbe07080000000000000c00afef0000 *ccbe07080000000000000c00baef0000e8be07080000000000000c00c4ef0000f4be0708000000 *0000000c00ceef0000f4be07080000000000000c00d7ef000014bf07080000000000000c00e2ef *000040bf07080000000000000c00ecef000040bf07080000000000000c00f7ef00004cbf070800 *00000000000c0001f0000080bf07080000000000000c004a79000090bf07080000000000000c00 *5479000090bf07080000000000000c000bf00000f4bf07080000000000000c0016f0000080c007 *080000000000000c0020f0000080c007080000000000000c002bf00000bcc00708000000000000 *0c0035f00000f0c007080000000000000c005f79000000c107080000000000000c006979000000 *c107080000000000000c003ff0000064c107080000000000000c004af00000dcc1070800000000 *00000c0055f00000f8c107080000000000000c005ff0000004c207080000000000000c0069f000 *0004c207080000000000000c0072f0000024c207080000000000000c007df0000050c207080000 *000000000c0087f0000050c207080000000000000c0092f000005cc207080000000000000c009c *f0000090c207080000000000000c00a6f00000a0c207080000000000000c00b0f00000a0c20708 *0000000000000c00bbf0000014c307080000000000000c00c5f0000014c307080000000000000c *00d0f00000a0c307080000000000000c00daf00000a0c307080000000000000c00e5f00000ccc3 *07080000000000000c00f0f0000048c407080000000000000c00fbf0000064c407080000000000 *000c0005f1000070c407080000000000000c000ff1000070c407080000000000000c0018f10000 *90c407080000000000000c0023f10000bcc407080000000000000c002df10000bcc40708000000 *0000000c0038f10000c8c407080000000000000c0042f10000fcc407080000000000000c009e79 *00000cc507080000000000000c00a87900000cc507080000000000000c004cf100006cc5070800 *00000000000c0057f10000f4c507080000000000000c0061f10000f4c507080000000000000c00 *6cf1000030c607080000000000000c0076f1000064c607080000000000000c0080f1000074c607 *080000000000000c008af1000074c607080000000000000c0095f10000d4c60708000000000000 *0c00a0f1000048c707080000000000000c00abf1000064c707080000000000000c00b5f1000070 *c707080000000000000c00bff1000070c707080000000000000c00c8f1000090c7070800000000 *00000c00d3f10000bcc707080000000000000c00ddf10000bcc707080000000000000c00e8f100 *00c8c707080000000000000c00f2f10000fcc707080000000000000c00fcf100000cc807080000 *000000000c0006f200000cc807080000000000000c0011f200007cc807080000000000000c001b *f200007cc807080000000000000c0026f2000004c907080000000000000c0030f2000004c90708 *0000000000000c003bf2000030c907080000000000000c0046f20000a4c907080000000000000c *0051f20000c0c907080000000000000c005bf20000ccc907080000000000000c0065f20000ccc9 *07080000000000000c006ef20000ecc907080000000000000c0079f2000018ca07080000000000 *000c0083f2000018ca07080000000000000c008ef2000024ca07080000000000000c0098f20000 *58ca07080000000000000c00a2f2000068ca07080000000000000c00acf2000068ca0708000000 *0000000c00b7f20000c0ca07080000000000000c00c2f2000040cb07080000000000000c00ccf2 *000040cb07080000000000000c00d7f200007ccb07080000000000000c00e1f20000b0cb070800 *00000000000c00ebf20000c0cb07080000000000000c00f5f20000c0cb07080000000000000c00 *00f3000018cc07080000000000000c000bf3000084cc07080000000000000c0016f30000a0cc07 *080000000000000c0020f30000accc07080000000000000c002af30000accc0708000000000000 *0c0033f30000cccc07080000000000000c003ef30000f8cc07080000000000000c0048f30000f8 *cc07080000000000000c0053f3000004cd07080000000000000c005df3000038cd070800000000 *00000c0067f3000048cd07080000000000000c0071f3000048cd07080000000000000c007cf300 *00b0cd07080000000000000c0086f30000b0cd07080000000000000c0091f3000030ce07080000 *000000000c009bf3000030ce07080000000000000c00a6f300005cce07080000000000000c00b1 *f30000ccce07080000000000000c00bcf30000e8ce07080000000000000c00c6f30000f4ce0708 *0000000000000c00d0f30000f4ce07080000000000000c00d9f3000014cf07080000000000000c *00e4f3000040cf07080000000000000c00eef3000040cf07080000000000000c00f9f300004ccf *07080000000000000c0003f4000080cf07080000000000000c000df4000090cf07080000000000 *000c0017f4000090cf07080000000000000c0022f40000e4cf07080000000000000c002df40000 *60d007080000000000000c0037f4000060d007080000000000000c0042f400009cd00708000000 *0000000c004cf40000d0d007080000000000000c0056f40000e0d007080000000000000c0060f4 *0000e0d007080000000000000c006bf4000034d107080000000000000c0076f400009cd1070800 *00000000000c0081f40000b8d107080000000000000c008bf40000c4d107080000000000000c00 *95f40000c4d107080000000000000c009ef40000e4d107080000000000000c00a9f4000010d207 *080000000000000c00b3f4000010d207080000000000000c00bef400001cd20708000000000000 *0c00c8f4000050d207080000000000000c00d2f4000060d207080000000000000c00dcf4000060 *d207080000000000000c00e7f40000c4d207080000000000000c00f1f40000c4d2070800000000 *00000c00fcf4000040d307080000000000000c0006f5000040d307080000000000000c0011f500 *006cd307080000000000000c001cf50000d4d307080000000000000c0027f50000f0d307080000 *000000000c0031f50000fcd307080000000000000c003bf50000fcd307080000000000000c0044 *f500001cd407080000000000000c004ff5000048d407080000000000000c0059f5000048d40708 *0000000000000c0064f5000054d407080000000000000c006ef5000088d407080000000000000c *003c78000098d407080000000000000c0078f5000098d407080000000000000c0083f50000e4d4 *07080000000000000c008ef5000058d507080000000000000c0098f5000058d507080000000000 *000c00a3f5000094d507080000000000000c00adf50000c8d507080000000000000c00b7f50000 *d8d507080000000000000c00c1f50000d8d507080000000000000c00ccf5000024d60708000000 *0000000c00d7f5000084d607080000000000000c00e2f50000a0d607080000000000000c00ecf5 *0000acd607080000000000000c00f6f50000acd607080000000000000c00fff50000ccd6070800 *00000000000c000af60000f8d607080000000000000c0014f60000f8d607080000000000000c00 *1ff6000004d707080000000000000c0029f6000038d707080000000000000c0033f6000048d707 *080000000000000c003df6000048d707080000000000000c0048f60000a4d70708000000000000 *0c0052f60000a4d707080000000000000c005df6000018d807080000000000000c0067f6000018 *d807080000000000000c0072f6000044d807080000000000000c007df60000a8d8070800000000 *00000c0088f60000c4d807080000000000000c0092f60000d0d807080000000000000c009cf600 *00d0d807080000000000000c00a5f60000f0d807080000000000000c00b0f600001cd907080000 *000000000c00baf600001cd907080000000000000c00c5f6000028d907080000000000000c00cf *f600005cd907080000000000000c00b57700006cd907080000000000000c00d9f600006cd90708 *0000000000000c00e4f60000b4d907080000000000000c00eff6000024da07080000000000000c *00f9f6000024da07080000000000000c0004f7000060da07080000000000000c000ef7000094da *07080000000000000c0018f70000a4da07080000000000000c0022f70000a4da07080000000000 *000c002df70000ecda07080000000000000c0038f7000048db07080000000000000c0043f70000 *64db07080000000000000c004df7000070db07080000000000000c0057f7000070db0708000000 *0000000c0060f7000090db07080000000000000c006bf70000bcdb07080000000000000c0075f7 *0000bcdb07080000000000000c0080f70000c8db07080000000000000c008af70000fcdb070800 *00000000000c0094f700000cdc07080000000000000c009ef700000cdc07080000000000000c00 *4b75000064dc07080000000000000c00a9f7000064dc07080000000000000c00b4f70000d4dc07 *080000000000000c00bef70000d4dc07080000000000000c00c9f7000000dd0708000000000000 *0c00d4f700005cdd07080000000000000c00dff7000078dd07080000000000000c00e9f7000084 *dd07080000000000000c00f3f7000084dd07080000000000000c00fcf70000a4dd070800000000 *00000c0007f80000d0dd07080000000000000c0011f80000d0dd07080000000000000c001cf800 *00dcdd07080000000000000c0026f8000010de07080000000000000c009d75000020de07080000 *000000000c0030f8000020de07080000000000000c003bf8000060de07080000000000000c0046 *f80000c8de07080000000000000c0050f80000c8de07080000000000000c005bf8000004df0708 *0000000000000c0065f8000038df07080000000000000c00a374000048df07080000000000000c *006ff8000048df07080000000000000c007af8000088df07080000000000000c0085f80000dcdf *07080000000000000c0090f80000f8df07080000000000000c009af8000004e007080000000000 *000c00a4f8000004e007080000000000000c00adf8000024e007080000000000000c00b8f80000 *50e007080000000000000c00c2f8000050e007080000000000000c00cdf800005ce00708000000 *0000000c00d7f8000090e007080000000000000c00e1f80000a0e007080000000000000c00ebf8 *0000a0e007080000000000000c00f6f80000f0e007080000000000000c0000f90000f0e0070800 *00000000000c000bf9000058e107080000000000000c0015f9000058e107080000000000000c00 *20f9000084e107080000000000000c002bf90000dce107080000000000000c0036f90000f8e107 *080000000000000c0040f9000004e207080000000000000c004af9000004e20708000000000000 *0c0053f9000024e207080000000000000c005ef9000050e207080000000000000c0068f9000050 *e207080000000000000c0073f900005ce207080000000000000c007df9000090e2070800000000 *00000c00c56d0000a0e207080000000000000c0087f90000a0e207080000000000000c0092f900 *00dce207080000000000000c009df9000040e307080000000000000c00a7f9000040e307080000 *000000000c00b2f900007ce307080000000000000c00bcf90000b0e307080000000000000c00c6 *f90000c0e307080000000000000c00d0f90000c0e307080000000000000c00dbf90000fce30708 *0000000000000c00e6f900004ce407080000000000000c00f1f9000068e407080000000000000c *00fbf9000074e407080000000000000c0005fa000074e407080000000000000c000efa000094e4 *07080000000000000c0019fa0000c0e407080000000000000c0023fa0000c0e407080000000000 *000c002efa0000cce407080000000000000c0038fa000000e507080000000000000c0042fa0000 *10e507080000000000000c004cfa000010e507080000000000000c0057fa00005ce50708000000 *0000000c0061fa00005ce507080000000000000c006cfa0000c0e507080000000000000c0076fa *0000c0e507080000000000000c0081fa0000ece507080000000000000c008cfa00003ce6070800 *00000000000c0097fa000058e607080000000000000c00a1fa000064e607080000000000000c00 *abfa000064e607080000000000000c00b4fa000084e607080000000000000c00bffa0000b0e607 *080000000000000c00c9fa0000b0e607080000000000000c00d4fa0000bce60708000000000000 *0c00defa0000f0e607080000000000000c00e8fa000000e707080000000000000c00f2fa000000 *e707080000000000000c00fdfa000034e707080000000000000c0008fb000090e7070800000000 *00000c0012fb000090e707080000000000000c001dfb0000cce707080000000000000c0027fb00 *0000e807080000000000000c0031fb000010e807080000000000000c003bfb000010e807080000 *000000000c0046fb000044e807080000000000000c0051fb00008ce807080000000000000c005c *fb0000a8e807080000000000000c0066fb0000b4e807080000000000000c0070fb0000b4e80708 *0000000000000c0079fb0000d4e807080000000000000c0084fb000000e907080000000000000c *008efb000000e907080000000000000c0099fb00000ce907080000000000000c00a3fb000040e9 *07080000000000000c00adfb000050e907080000000000000c00b7fb000050e907080000000000 *000c00706f000094e907080000000000000c00c2fb000094e907080000000000000c00cdfb0000 *f0e907080000000000000c00d7fb0000f0e907080000000000000c00e2fb00001cea0708000000 *0000000c00edfb000068ea07080000000000000c00f8fb000084ea07080000000000000c0002fc *000090ea07080000000000000c000cfc000090ea07080000000000000c0015fc0000b0ea070800 *00000000000c0020fc0000dcea07080000000000000c002afc0000dcea07080000000000000c00 *35fc0000e8ea07080000000000000c003ffc00001ceb07080000000000000c0049fc00002ceb07 *080000000000000c0053fc00002ceb07080000000000000c005efc00005ceb0708000000000000 *0c0069fc0000b4eb07080000000000000c0073fc0000b4eb07080000000000000c007efc0000f0 *eb07080000000000000c0088fc000024ec07080000000000000c0092fc000034ec070800000000 *00000c009cfc000034ec07080000000000000c00a7fc000064ec07080000000000000c00b2fc00 *00a8ec07080000000000000c00bdfc0000c4ec07080000000000000c00c7fc0000d0ec07080000 *000000000c00d1fc0000d0ec07080000000000000c00dafc0000f0ec07080000000000000c00e5 *fc00001ced07080000000000000c00effc00001ced07080000000000000c00fafc000028ed0708 *0000000000000c0004fd00005ced07080000000000000c000efd00006ced07080000000000000c *0018fd00006ced07080000000000000c0023fd00009ced07080000000000000c002efd0000f4ed *07080000000000000c0038fd0000f4ed07080000000000000c0043fd000030ee07080000000000 *000c004dfd000064ee07080000000000000c0057fd000074ee07080000000000000c0061fd0000 *74ee07080000000000000c006cfd0000b0ee07080000000000000c0076fd0000b0ee0708000000 *0000000c005171000000ef07080000000000000c007ffd000000ef07080000000000000c008afd *000034ef07080000000000000c0095fd000098ef07080000000000000c009efd000004b6110800 *00000000001000abfd0000acef07080000000000000c00b5fd0000acef07080000000000000c00 *c0fd000004f007080000000000000c00c9fd000014b611080000000000001000d6fd0000901708 *080000000000000c00e0fd000038f007080000000000000c00eafd000038f00708000000000000 *0c00f5fd00008cf007080000000000000c00fffd00008cf007080000000000000c0008fe0000ac *f007080000000000000c0012fe0000acf007080000000000000c001dfe0000e4f0070800000000 *00000c0027fe0000e4f007080000000000000c0032fe000044f107080000000000000c003cfe00 *0044f107080000000000000c0047fe000080f107080000000000000c0051fe000080f107080000 *000000000c005cfe0000ccf107080000000000000c0066fe0000ccf107080000000000000c0071 *fe00002cf207080000000000000c007bfe00002cf207080000000000000c0086fe000068f20708 *0000000000000c0090fe000068f207080000000000000c009bfe0000b4f207080000000000000c *00a5fe0000b4f207080000000000000c00b0fe000010f307080000000000000c00bafe000010f3 *07080000000000000c00c3fe000030f307080000000000000c00cdfe000030f307080000000000 *000c00d8fe000068f307080000000000000c00e2fe000068f307080000000000000c00edfe0000 *ccf307080000000000000c00f7fe0000ccf307080000000000000c0002ff000008f40708000000 *0000000c000cff000008f407080000000000000c0017ff000054f407080000000000000c0021ff *000054f407080000000000000c002cff0000b8f407080000000000000c0036ff0000b8f4070800 *00000000000c0041ff0000f4f407080000000000000c004bff0000f4f407080000000000000c00 *56ff000040f507080000000000000c0060ff000040f507080000000000000c006bff0000a0f507 *080000000000000c0075ff0000a0f507080000000000000c007eff0000c0f50708000000000000 *0c0088ff0000c0f507080000000000000c0093ff0000f8f507080000000000000c009dff0000f8 *f507080000000000000c00a8ff000064f607080000000000000c00b2ff000064f6070800000000 *00000c00bdff0000a0f607080000000000000c00c7ff0000a0f607080000000000000c00d2ff00 *00ecf607080000000000000c00dcff0000ecf607080000000000000c00e7ff000058f707080000 *000000000c00f1ff000058f707080000000000000c00fcff000094f707080000000000000c0006 *00010094f707080000000000000c0011000100e0f707080000000000000c001b000100e0f70708 *0000000000000c002600010048f807080000000000000c003000010048f807080000000000000c *003900010068f807080000000000000c004300010068f807080000000000000c004e000100a0f8 *07080000000000000c0058000100a0f807080000000000000c006300010010f907080000000000 *000c006d00010010f907080000000000000c00780001004cf907080000000000000c0082000100 *4cf907080000000000000c008d00010098f907080000000000000c009700010098f90708000000 *0000000c00a200010008fa07080000000000000c00ac00010008fa07080000000000000c00b700 *010044fa07080000000000000c00c100010044fa07080000000000000c00cc00010090fa070800 *00000000000c00d600010090fa07080000000000000c00e1000100fcfa07080000000000000c00 *eb000100fcfa07080000000000000c00f40001001cfb07080000000000000c00fe0001001cfb07 *080000000000000c000901010054fb07080000000000000c001301010054fb0708000000000000 *0c001e010100ccfb07080000000000000c0028010100ccfb07080000000000000c003301010008 *fc07080000000000000c003d01010008fc07080000000000000c004801010054fc070800000000 *00000c005201010054fc07080000000000000c005d010100ccfc07080000000000000c00670101 *00ccfc07080000000000000c007201010008fd07080000000000000c007c01010008fd07080000 *000000000c008701010054fd07080000000000000c009101010054fd07080000000000000c009c *010100c8fd07080000000000000c00a6010100c8fd07080000000000000c00af010100e8fd0708 *0000000000000c00b9010100e8fd07080000000000000c00c401010020fe07080000000000000c *00ce01010020fe07080000000000000c00d90101009cfe07080000000000000c00e30101009cfe *07080000000000000c00ee010100d8fe07080000000000000c00f8010100d8fe07080000000000 *000c000302010024ff07080000000000000c000d02010024ff07080000000000000c005a5e0000 *a0ff07080000000000000c0018020100a0ff07080000000000000c0023020100dcff0708000000 *0000000c002d020100dcff07080000000000000c0038020100280008080000000000000c004202 *0100280008080000000000000c004d020100a00008080000000000000c0057020100a000080800 *00000000000c0060020100c00008080000000000000c006a020100c00008080000000000000c00 *75020100f80008080000000000000c007f020100f80008080000000000000c008a0201007c0108 *080000000000000c00940201007c0108080000000000000c009f020100b8010808000000000000 *0c00a9020100b80108080000000000000c00b4020100040208080000000000000c00be02010004 *0208080000000000000c00c9020100880208080000000000000c00d30201008802080800000000 *00000c00de020100c40208080000000000000c00e8020100c40208080000000000000c00f30201 *00100308080000000000000c00fd020100100308080000000000000c0008030100900308080000 *000000000c0012030100900308080000000000000c001b030100b00308080000000000000c0025 *030100b00308080000000000000c0030030100e80308080000000000000c003a030100e8030808 *0000000000000c0045030100700408080000000000000c004f030100700408080000000000000c *005a030100ac0408080000000000000c0064030100ac0408080000000000000c006f030100f804 *08080000000000000c0079030100f80408080000000000000c0084030100800508080000000000 *000c008e030100800508080000000000000c0099030100bc0508080000000000000c00a3030100 *bc0508080000000000000c00ae030100080608080000000000000c00b803010008060808000000 *0000000c00c30301008c0608080000000000000c00cd0301008c0608080000000000000c00f365 *0000ac0608080000000000000c00d6030100ac0608080000000000000c00e1030100e406080800 *00000000000c00eb030100e40608080000000000000c00f6030100740708080000000000000c00 *00040100740708080000000000000c000b040100b00708080000000000000c0015040100b00708 *080000000000000c0020040100fc0708080000000000000c002a040100fc070808000000000000 *0c00350401008c0808080000000000000c003f0401008c0808080000000000000c004a040100c8 *0808080000000000000c0054040100c80808080000000000000c005f0401001409080800000000 *00000c0069040100140908080000000000000c0074040100a00908080000000000000c007e0401 *00a00908080000000000000c0056670000c00908080000000000000c0087040100c00908080000 *000000000c0092040100f80908080000000000000c009c040100f80908080000000000000c00a7 *0401008c0a08080000000000000c00b10401008c0a08080000000000000c00bc040100c80a0808 *0000000000000c00c6040100c80a08080000000000000c00d1040100140b08080000000000000c *00db040100140b08080000000000000c00e6040100a80b08080000000000000c00f0040100a80b *08080000000000000c00fb040100e40b08080000000000000c0005050100e40b08080000000000 *000c0010050100300c08080000000000000c001a050100300c08080000000000000c0025050100 *c00c08080000000000000c002f050100c00c08080000000000000c007b690000e00c0808000000 *0000000c0038050100e00c08080000000000000c0043050100180d08080000000000000c004d05 *0100180d08080000000000000c0058680000b40d08080000000000000c0058050100b40d080800 *00000000000c0063050100f00d08080000000000000c006d050100f00d08080000000000000c00 *780501003c0e08080000000000000c00820501003c0e08080000000000000c008d050100d80e08 *080000000000000c0097050100d80e08080000000000000c00a2050100140f0808000000000000 *0c00ac050100140f08080000000000000c00b7050100600f08080000000000000c00c105010060 *0f08080000000000000c00cc050100f80f08080000000000000c00d6050100f80f080800000000 *00000c00df050100181008080000000000000c00e9050100181008080000000000000c00f40501 *00501008080000000000000c00fe050100501008080000000000000c00566c0000f01008080000 *000000000c0009060100f01008080000000000000c00140601002c1108080000000000000c001e *0601002c1108080000000000000c0029060100781108080000000000000c003306010078110808 *0000000000000c003e060100181208080000000000000c0048060100181208080000000000000c *00936c0000541208080000000000000c0053060100541208080000000000000c005e060100a012 *08080000000000000c0068060100a01208080000000000000c00730601003c1308080000000000 *000c007d0601003c1308080000000000000c00f16c00005c1308080000000000000c0086060100 *5c1308080000000000000c0091060100941308080000000000000c009b06010094130808000000 *0000000c00a60601003c1408080000000000000c00b00601003c1408080000000000000c00bb06 *0100781408080000000000000c00c5060100781408080000000000000c00d0060100c414080800 *00000000000c00da060100c41408080000000000000c00e50601006c1508080000000000000c00 *ef0601006c1508080000000000000c00fa060100a81508080000000000000c0004070100a81508 *080000000000000c000f070100f41508080000000000000c0019070100f4150808000000000000 *0c0024070100981608080000000000000c002e070100981608080000000000000c00b56b0000bc *1608080000000000000c0037070100bc1608080000000000000c0042070100f416080800000000 *00000c004c070100f41608080000000000000c0055070100901708080000000000000c00600701 *001cb6110800000000000010006d070100b01708080000000000000c007607010024b611080000 *00000000100083070100c41708080000000000000c008d070100c41708080000000000000c0098 *0701001c1808080000000000000c00a107010034b611080000000000001000ae07010030180808 *0000000000000c00b8070100301808080000000000000c00c307010044b6110800000000000010 *00d007010054b611080000000000001000dd070100a01808080000000000000c00e7070100a018 *08080000000000000c00f2070100dc1808080000000000000c00fc070100dc1808080000000000 *000c0007080100341908080000000000000c0011080100341908080000000000000c001c080100 *781908080000000000000c0026080100781908080000000000000c002f080100001a0808000000 *0000000c0039080100001a08080000000000000c00440801003c1a08080000000000000c004e08 *01003c1a08080000000000000c0057080100b01a08080000000000000c0061080100b01a080800 *00000000000c006c080100601b08080000000000000c0076080100601b08080000000000000c00 *81080100981b08080000000000000c008b080100981b08080000000000000c0094080100ac1b08 *080000000000000c009f080100cc1b08080000000000000c00a9080100cc1b0808000000000000 *0c00b4080100101c08080000000000000c00bf080100541c08080000000000000c00c908010008 *b711080000000000001000d6080100c01c08080000000000000c00df0801001cb7110800000000 *00001000ec080100d82408080000000000000c00f6080100e81c08080000000000000c00000901 *00e81c08080000000000000c000b090100401d08080000000000000c0015090100401d08080000 *000000000c0020090100981d08080000000000000c002a090100981d08080000000000000c0035 *090100f01d08080000000000000c003f090100f01d08080000000000000c004a090100481e0808 *0000000000000c0054090100481e08080000000000000c005f090100a01e08080000000000000c *0069090100a01e08080000000000000c0074090100f81e08080000000000000c007e090100f81e *08080000000000000c0089090100501f08080000000000000c0093090100501f08080000000000 *000c009e0901008c1f08080000000000000c00a80901008c1f08080000000000000c00b3090100 *c81f08080000000000000c00bd090100c81f08080000000000000c00c809010014200808000000 *0000000c00d3090100442008080000000000000c00de090100602008080000000000000c00e809 *0100602008080000000000000c00f3090100a82008080000000000000c00fd090100a820080800 *00000000000c00060a0100b02008080000000000000c00110a0100d42008080000000000000c00 *1b0a0100e02008080000000000000c00250a0100e02008080000000000000c002e0a0100142108 *080000000000000c00380a0100142108080000000000000c00430a010054210808000000000000 *0c004d0a0100542108080000000000000c00580a0100ac2108080000000000000c00620a0100ac *2108080000000000000c006d0a0100042208080000000000000c00770a01000422080800000000 *00000c00820a01005c2208080000000000000c008c0a01005c2208080000000000000c00970a01 *00b42208080000000000000c00a10a0100b42208080000000000000c00ac0a01000c2308080000 *000000000c00b60a01000c2308080000000000000c00bf0a0100d82408080000000000000c00ca *0a010024b711080000000000001000d70a0100f02408080000000000000c00e20a010000250808 *0000000000000c00ed0a0100ec2608080000000000000c00f80a0100242508080000000000000c *00020b0100242508080000000000000c000d0b0100582508080000000000000c00170b01005825 *08080000000000000c00200b0100ac2508080000000000000c002a0b0100ac2508080000000000 *000c00350b0100d82508080000000000000c00400b0100302608080000000000000c004a0b0100 *3c2608080000000000000c00540b01003c2608080000000000000c005d0b010088260808000000 *0000000c00670b0100882608080000000000000c00700b0100a82608080000000000000c007b0b *0100dc2608080000000000000c00850b0100ec2608080000000000000c008f0b01001827080800 *00000000000c00990b0100182708080000000000000c00a40b01004c2708080000000000000c00 *af0b0100542708080000000000000c00ba0b0100a02708080000000000000c00c40b0100a02708 *080000000000000c00cf0b0100d82708080000000000000c00d90b0100d8270808000000000000 *0c00e20b0100282808080000000000000c00ec0b0100282808080000000000000c00f70b010054 *2808080000000000000c00020c0100a82808080000000000000c000c0c0100a828080800000000 *00000c00170c0100d02808080000000000000c00210c0100dc2808080000000000000c002b0c01 *00dc2808080000000000000c00360c0100142908080000000000000c00400c0100142908080000 *000000000c00490c0100d02908080000000000000c00530c0100d02908080000000000000c005c *0c0100382a08080000000000000c00650c01003cb711080000000000001000720c0100802b0808 *0000000000000c007c0c0100482a08080000000000000c00860c0100482a08080000000000000c *008f0c0100842a08080000000000000c00990c0100842a08080000000000000c00a40c0100cc2a *08080000000000000c00ae0c0100cc2a08080000000000000c00b70c0100802b08080000000000 *000c00c20c0100a02b08080000000000000c00cb0c010044b711080000000000001000d80c0100 *b42b08080000000000000c00e20c0100b42b08080000000000000c00ed0c0100042c0808000000 *0000000c00f60c01004cb711080000000000001000030d0100142c08080000000000000c000d0d *0100142c08080000000000000c00180d0100702c08080000000000000c00210d01005cb7110800 *000000000010002e0d0100942c08080000000000000c00380d0100942c08080000000000000c00 *430d01006cb711080000000000001000500d01007cb7110800000000000010005d0d0100a02d08 *080000000000000c00670d0100102d08080000000000000c00710d0100102d0808000000000000 *0c007a0d0100a02d08080000000000000c00850d0100c02d08080000000000000c008e0d010080 *b7110800000000000010009b0d0100d02d08080000000000000c00a50d0100d02d080800000000 *00000c00b00d01002c2e08080000000000000c00b90d010090b711080000000000001000c60d01 *004c2e08080000000000000c00d00d01004c2e08080000000000000c00db0d0100a0b711080000 *000000001000e80d0100b0b711080000000000001000f50d0100582f08080000000000000c00ff *0d0100c82e08080000000000000c00090e0100c82e08080000000000000c00120e0100582f0808 *0000000000000c001d0e0100782f08080000000000000c00260e0100b4b7110800000000000010 *00330e0100c42f08080000000000000c003d0e01008c2f08080000000000000c00470e01008c2f *08080000000000000c00520e0100c42f08080000000000000c005d0e0100243008080000000000 *000c00660e0100c4b711080000000000001000730e0100343008080000000000000c007d0e0100 *343008080000000000000c00880e0100903008080000000000000c00910e0100d4b71108000000 *00000010009e0e0100b03008080000000000000c00a80e0100b03008080000000000000c00b30e *0100e4b711080000000000001000c00e0100f4b711080000000000001000cd0e0100bc31080800 *00000000000c00d70e01002c3108080000000000000c00e10e01002c3108080000000000000c00 *ea0e0100bc3108080000000000000c00f50e0100dc3108080000000000000c00fe0e0100f8b711 *0800000000000010000b0f0100283208080000000000000c00150f0100f0310808000000000000 *0c001f0f0100f03108080000000000000c002a0f0100283208080000000000000c00350f010088 *3208080000000000000c003e0f010008b8110800000000000010004b0f01009832080800000000 *00000c00550f0100983208080000000000000c00600f0100f43208080000000000000c00690f01 *0018b811080000000000001000760f0100143308080000000000000c00800f0100143308080000 *000000000c008b0f010028b811080000000000001000980f010038b811080000000000001000a5 *0f0100203408080000000000000c00af0f0100903308080000000000000c00b90f010090330808 *0000000000000c00c20f0100203408080000000000000c00cd0f0100403408080000000000000c *00d60f01003cb811080000000000001000e30f01008c3408080000000000000c00ed0f01005434 *08080000000000000c00f70f0100543408080000000000000c00021001008c3408080000000000 *000c000d100100ec3408080000000000000c00161001004cb81108000000000000100023100100 *fc3408080000000000000c002d100100fc3408080000000000000c003810010058350808000000 *0000000c00411001005cb8110800000000000010004e100100783508080000000000000c005810 *0100783508080000000000000c00631001006cb811080000000000001000701001007cb8110800 *000000000010007d100100843608080000000000000c0087100100f43508080000000000000c00 *91100100f43508080000000000000c009a100100843608080000000000000c00a5100100a43608 *080000000000000c00ae10010080b811080000000000001000bb100100f0360808000000000000 *0c00c5100100b83608080000000000000c00cf100100b83608080000000000000c00da100100f0 *3608080000000000000c00e5100100503708080000000000000c00ee10010090b8110800000000 *00001000fb100100603708080000000000000c0005110100603708080000000000000c00101101 *00bc3708080000000000000c0019110100a0b81108000000000000100026110100dc3708080000 *000000000c0030110100dc3708080000000000000c003b110100b0b81108000000000000100048 *110100c0b81108000000000000100055110100e83808080000000000000c005f11010058380808 *0000000000000c0069110100583808080000000000000c0072110100e83808080000000000000c *007d110100083908080000000000000c0086110100c4b811080000000000001000931101005439 *08080000000000000c009d1101001c3908080000000000000c00a71101001c3908080000000000 *000c00b2110100543908080000000000000c00bd110100b43908080000000000000c00c6110100 *d4b811080000000000001000d3110100c43908080000000000000c00dd110100c4390808000000 *0000000c00e8110100203a08080000000000000c00f1110100e4b811080000000000001000fe11 *0100403a08080000000000000c0008120100403a08080000000000000c0013120100f4b8110800 *000000000010002012010004b9110800000000000010002d1201004c3b08080000000000000c00 *37120100bc3a08080000000000000c0041120100bc3a08080000000000000c004a1201004c3b08 *080000000000000c00551201006c3b08080000000000000c005e12010008b91108000000000000 *10006b120100b83b08080000000000000c0075120100803b08080000000000000c007f12010080 *3b08080000000000000c008a120100b83b08080000000000000c0095120100183c080800000000 *00000c009e12010018b911080000000000001000ab120100283c08080000000000000c00b51201 *00283c08080000000000000c00c0120100843c08080000000000000c00c912010028b911080000 *000000001000d6120100a43c08080000000000000c00e0120100a43c08080000000000000c00eb *12010038b911080000000000001000f812010048b91108000000000000100005130100b03d0808 *0000000000000c000f130100203d08080000000000000c0019130100203d08080000000000000c *0022130100b03d08080000000000000c002d130100d03d08080000000000000c00361301004cb9 *11080000000000001000431301001c3e08080000000000000c004d130100e43d08080000000000 *000c0057130100e43d08080000000000000c00621301001c3e08080000000000000c006d130100 *7c3e08080000000000000c00761301005cb911080000000000001000831301008c3e0808000000 *0000000c008d1301008c3e08080000000000000c0098130100e83e08080000000000000c00a113 *01006cb911080000000000001000ae130100083f08080000000000000c00b8130100083f080800 *00000000000c00c31301007cb911080000000000001000d01301008cb911080000000000001000 *dd130100144008080000000000000c00e7130100843f08080000000000000c00f1130100843f08 *080000000000000c00fa130100144008080000000000000c000514010034400808000000000000 *0c000e14010090b9110800000000000010001b140100444008080000000000000c002514010044 *4008080000000000000c0030140100a04008080000000000000c0039140100a0b9110800000000 *0000100046140100c04008080000000000000c0050140100c04008080000000000000c005b1401 *00b0b91108000000000000100068140100c0b91108000000000000100075140100cc4108080000 *000000000c007f1401003c4108080000000000000c00891401003c4108080000000000000c0092 *140100cc4108080000000000000c009d140100ec4108080000000000000c00a6140100c4b91108 *0000000000001000b3140100384208080000000000000c00bd140100004208080000000000000c *00c7140100004208080000000000000c00d2140100384208080000000000000c00dd1401009842 *08080000000000000c00e6140100d4b911080000000000001000f3140100a84208080000000000 *000c00fd140100a84208080000000000000c0008150100044308080000000000000c0011150100 *e4b9110800000000000010001e150100244308080000000000000c002815010024430808000000 *0000000c0033150100f4b9110800000000000010004015010004ba110800000000000010004d15 *0100304408080000000000000c0057150100a04308080000000000000c0061150100a043080800 *00000000000c006a150100304408080000000000000c0075150100504408080000000000000c00 *7e15010008ba110800000000000010008b1501009c4408080000000000000c0095150100644408 *080000000000000c009f150100644408080000000000000c00aa1501009c440808000000000000 *0c00b5150100fc4408080000000000000c00be15010018ba11080000000000001000cb1501000c *4508080000000000000c00d51501000c4508080000000000000c00e01501006845080800000000 *00000c00e915010028ba11080000000000001000f6150100884508080000000000000c00001601 *00884508080000000000000c000b16010038ba110800000000000010001816010048ba11080000 *00000000100025160100944608080000000000000c002f160100044608080000000000000c0039 *160100044608080000000000000c0042160100944608080000000000000c004d160100b4460808 *0000000000000c00561601004cba1108000000000000100063160100c44608080000000000000c *006d160100c44608080000000000000c0078160100204708080000000000000c00811601005cba *110800000000000010008e160100404708080000000000000c0098160100404708080000000000 *000c00a31601006cba11080000000000001000b01601007cba11080000000000001000bd160100 *4c4808080000000000000c00c7160100bc4708080000000000000c00d1160100bc470808000000 *0000000c00da1601004c4808080000000000000c00e51601006c4808080000000000000c00ee16 *010080ba11080000000000001000fb160100844808080000000000000c00051701008448080800 *00000000000c0010170100e44808080000000000000c001917010090ba11080000000000001000 *26170100f44808080000000000000c0030170100f44808080000000000000c003b170100504908 *080000000000000c0044170100a0ba110800000000000010005117010070490808000000000000 *0c005b170100704908080000000000000c0066170100b0ba1108000000000000100073170100c0 *ba1108000000000000100080170100f84a08080000000000000c008a170100ec49080800000000 *00000c0094170100ec4908080000000000000c009d170100244a08080000000000000c00a71701 *00244a08080000000000000c00b2170100584a08080000000000000c00bc170100584a08080000 *000000000c00c5170100f84a08080000000000000c00d0170100184b08080000000000000c00d9 *170100c4ba11080000000000001000e6170100284b08080000000000000c00f0170100284b0808 *0000000000000c00fb170100884b08080000000000000c0004180100d4ba110800000000000010 *0011180100a04b08080000000000000c001b180100a04b08080000000000000c0026180100004c *08080000000000000c002f180100e4ba110800000000000010003c180100104c08080000000000 *000c0046180100104c08080000000000000c00511801006c4c08080000000000000c005a180100 *f4ba1108000000000000100067180100904c08080000000000000c0071180100904c0808000000 *0000000c007c18010004bb110800000000000010008918010014bb110800000000000010009618 *0100184e08080000000000000c00a01801000c4d08080000000000000c00aa1801000c4d080800 *00000000000c00b3180100444d08080000000000000c00bd180100444d08080000000000000c00 *c8180100784d08080000000000000c00d2180100784d08080000000000000c00db180100184e08 *080000000000000c00e6180100384e08080000000000000c00ef18010018bb1108000000000000 *1000fc180100484e08080000000000000c0006190100484e08080000000000000c0011190100a8 *4e08080000000000000c001a19010028bb1108000000000000100027190100b84e080800000000 *00000c0031190100b84e08080000000000000c003c190100144f08080000000000000c00451901 *0038bb1108000000000000100052190100384f08080000000000000c005c190100384f08080000 *000000000c0067190100c84f08080000000000000c0071190100c84f08080000000000000c007c *190100045008080000000000000c0086190100045008080000000000000c009119010054500808 *0000000000000c009b190100545008080000000000000c00a6190100b45008080000000000000c *00b0190100b45008080000000000000c00bb190100645108080000000000000c00c61901007451 *08080000000000000c00d1190100fc5208080000000000000c00dc190100885108080000000000 *000c00e7190100945108080000000000000c00f2190100ec5108080000000000000c00fc190100 *f85108080000000000000c00061a0100f85108080000000000000c00111a010024520808000000 *0000000c001c1a01006c5208080000000000000c00261a0100745208080000000000000c00301a *0100745208080000000000000c00391a0100a05208080000000000000c00431a0100a052080800 *00000000000c004c1a0100c05208080000000000000c00571a0100ec5208080000000000000c00 *611a0100fc5208080000000000000c006b1a010078bb11080000000000001000781a0100a85308 *080000000000000c00821a0100685308080000000000000c008c1a010068530808000000000000 *0c00951a0100a85308080000000000000c00a01a0100c85308080000000000000c00a91a01007c *bb11080000000000001000b61a0100d85308080000000000000c00c01a0100d853080800000000 *00000c00cb1a0100345408080000000000000c00d41a01008cbb11080000000000001000e11a01 *00545408080000000000000c00eb1a0100545408080000000000000c00f61a01009cbb11080000 *000000001000031b0100acbb11080000000000001000101b0100105508080000000000000c001a *1b0100d05408080000000000000c00241b0100d05408080000000000000c002d1b010010550808 *0000000000000c00381b0100305508080000000000000c00411b0100b0bb110800000000000010 *004e1b01007c5508080000000000000c00581b0100445508080000000000000c00621b01004455 *08080000000000000c006d1b01007c5508080000000000000c00781b0100dc5508080000000000 *000c00811b0100c0bb110800000000000010008e1b0100ec5508080000000000000c00981b0100 *ec5508080000000000000c00a31b0100485608080000000000000c00ac1b0100d0bb1108000000 *0000001000b91b0100685608080000000000000c00c31b0100685608080000000000000c00ce1b *0100e0bb11080000000000001000db1b0100f0bb11080000000000001000e81b01006057080800 *00000000000c00f21b0100e45608080000000000000c00fc1b0100e45608080000000000000c00 *051c0100605708080000000000000c00101c0100805708080000000000000c00191c0100f4bb11 *080000000000001000261c0100905708080000000000000c00301c010090570808000000000000 *0c003b1c0100ec5708080000000000000c00441c010004bc11080000000000001000511c010004 *5808080000000000000c005b1c0100045808080000000000000c00661c010014bc110800000000 *00001000731c010024bc11080000000000001000801c0100f45808080000000000000c008a1c01 *00785808080000000000000c00941c0100785808080000000000000c009d1c0100f45808080000 *000000000c00a81c0100145908080000000000000c00b11c010028bc11080000000000001000be *1c0100245908080000000000000c00c81c0100245908080000000000000c00d31c010080590808 *0000000000000c00dc1c010038bc11080000000000001000e91c0100985908080000000000000c *00f31c0100985908080000000000000c00fe1c010048bc110800000000000010000b1d010058bc *11080000000000001000181d0100885a08080000000000000c00221d01000c5a08080000000000 *000c002c1d01000c5a08080000000000000c00351d0100885a08080000000000000c00401d0100 *a85a08080000000000000c00491d01005cbc11080000000000001000561d0100b85a0808000000 *0000000c00601d0100b85a08080000000000000c006b1d0100145b08080000000000000c00741d *01006cbc11080000000000001000811d01002c5b08080000000000000c008b1d01002c5b080800 *00000000000c00961d01007cbc11080000000000001000a31d01008cbc11080000000000001000 *b01d01001c5c08080000000000000c00ba1d0100a05b08080000000000000c00c41d0100a05b08 *080000000000000c00cd1d01001c5c08080000000000000c00d81d01003c5c0808000000000000 *0c00e11d010090bc11080000000000001000ee1d01004c5c08080000000000000c00f81d01004c *5c08080000000000000c00031e0100a85c08080000000000000c000c1e0100a0bc110800000000 *00001000191e0100c85c08080000000000000c00231e0100c85c08080000000000000c002e1e01 *00b0bc110800000000000010003b1e0100c0bc11080000000000001000481e0100c05d08080000 *000000000c00521e0100445d08080000000000000c005c1e0100445d08080000000000000c0065 *1e0100c05d08080000000000000c00701e0100e05d08080000000000000c00791e0100c4bc1108 *0000000000001000861e0100f05d08080000000000000c00901e0100f05d08080000000000000c *009b1e01004c5e08080000000000000c00a41e0100d4bc11080000000000001000b11e01006c5e *08080000000000000c00bb1e01006c5e08080000000000000c00c61e0100e4bc11080000000000 *001000d31e0100f4bc11080000000000001000e01e0100645f08080000000000000c00ea1e0100 *e85e08080000000000000c00f41e0100e85e08080000000000000c00fd1e0100645f0808000000 *0000000c00081f0100845f08080000000000000c00111f0100f8bc110800000000000010001e1f *0100945f08080000000000000c00281f0100945f08080000000000000c00331f0100f05f080800 *00000000000c003c1f010008bd11080000000000001000491f0100106008080000000000000c00 *531f0100106008080000000000000c005e1f010018bd110800000000000010006b1f010028bd11 *080000000000001000781f0100086108080000000000000c00821f01008c600808000000000000 *0c008c1f01008c6008080000000000000c00951f0100086108080000000000000c00a01f010028 *6108080000000000000c00a91f01002cbd11080000000000001000b61f01003861080800000000 *00000c00c01f0100386108080000000000000c00cb1f0100946108080000000000000c00d41f01 *003cbd11080000000000001000e11f0100b46108080000000000000c00eb1f0100b46108080000 *000000000c00f61f01004cbd11080000000000001000032001005cbd1108000000000000100010 *200100ac6208080000000000000c001a200100306208080000000000000c002420010030620808 *0000000000000c002d200100ac6208080000000000000c0038200100cc6208080000000000000c *004120010060bd110800000000000010004e200100dc6208080000000000000c0058200100dc62 *08080000000000000c0063200100386308080000000000000c006c20010070bd11080000000000 *00100079200100586308080000000000000c0083200100586308080000000000000c008e200100 *80bd110800000000000010009b20010090bd11080000000000001000a820010050640808000000 *0000000c00b2200100d46308080000000000000c00bc200100d46308080000000000000c00c520 *0100506408080000000000000c00d0200100706408080000000000000c00d920010094bd110800 *00000000001000e6200100806408080000000000000c00f0200100806408080000000000000c00 *fb200100dc6408080000000000000c0004210100a4bd1108000000000000100011210100fc6408 *080000000000000c001b210100fc6408080000000000000c0026210100b4bd1108000000000000 *100033210100c4bd1108000000000000100040210100f46508080000000000000c004a21010078 *6508080000000000000c0054210100786508080000000000000c005d210100f465080800000000 *00000c0068210100146608080000000000000c0071210100c8bd110800000000000010007e2101 *002c6608080000000000000c00882101002c6608080000000000000c00932101008c6608080000 *000000000c009c210100d8bd11080000000000001000a92101009c6608080000000000000c00b3 *2101009c6608080000000000000c00be210100f86608080000000000000c00c7210100e8bd1108 *0000000000001000d4210100186708080000000000000c00de210100186708080000000000000c *00e9210100f8bd11080000000000001000f621010008be11080000000000001000032201001068 *08080000000000000c000d220100946708080000000000000c0017220100946708080000000000 *000c0020220100106808080000000000000c002b220100306808080000000000000c0034220100 *0cbe1108000000000000100041220100406808080000000000000c004b22010040680808000000 *0000000c00562201009c6808080000000000000c005f2201001cbe110800000000000010006c22 *0100bc6808080000000000000c0076220100bc6808080000000000000c00812201002cbe110800 *000000000010008e2201003cbe110800000000000010009b220100b46908080000000000000c00 *a5220100386908080000000000000c00af220100386908080000000000000c00b8220100b46908 *080000000000000c00c3220100d46908080000000000000c00cc22010040be1108000000000000 *1000d9220100746a08080000000000000c00e3220100f06908080000000000000c00ed220100f0 *6908080000000000000c00f8220100286a08080000000000000c0002230100286a080800000000 *00000c000d230100746a08080000000000000c0018230100d86a08080000000000000c00212301 *0050be110800000000000010002e2301002c6b08080000000000000c0038230100f46a08080000 *000000000c0042230100f46a08080000000000000c004d2301002c6b08080000000000000c0058 *230100906b08080000000000000c006123010060be110800000000000010006e230100a06b0808 *0000000000000c0078230100a06b08080000000000000c0083230100fc6b08080000000000000c *008c23010070be11080000000000001000992301001c6c08080000000000000c00a32301001c6c *08080000000000000c00ae23010080be11080000000000001000bb23010090be11080000000000 *001000c8230100146d08080000000000000c00d2230100986c08080000000000000c00dc230100 *986c08080000000000000c00e5230100146d08080000000000000c00f0230100346d0808000000 *0000000c00f923010094be1108000000000000100006240100d46d08080000000000000c001024 *0100506d08080000000000000c001a240100506d08080000000000000c0025240100886d080800 *00000000000c002f240100886d08080000000000000c003a240100d46d08080000000000000c00 *45240100386e08080000000000000c004e240100a4be110800000000000010005b2401008c6e08 *080000000000000c0065240100546e08080000000000000c006f240100546e0808000000000000 *0c007a2401008c6e08080000000000000c0085240100f06e08080000000000000c008e240100b4 *be110800000000000010009b240100006f08080000000000000c00a5240100006f080800000000 *00000c00b02401005c6f08080000000000000c00b9240100c4be11080000000000001000c62401 *007c6f08080000000000000c00d02401007c6f08080000000000000c00db240100d4be11080000 *000000001000e8240100e4be11080000000000001000f5240100747008080000000000000c00ff *240100f86f08080000000000000c0009250100f86f08080000000000000c001225010074700808 *0000000000000c001d250100947008080000000000000c0026250100e8be110800000000000010 *0033250100347108080000000000000c003d250100b07008080000000000000c0047250100b070 *08080000000000000c0052250100e87008080000000000000c005c250100e87008080000000000 *000c0067250100347108080000000000000c0072250100987108080000000000000c007b250100 *f8be1108000000000000100088250100ec7108080000000000000c0092250100b4710808000000 *0000000c009c250100b47108080000000000000c00a7250100ec7108080000000000000c00b225 *0100507208080000000000000c00bb25010008bf11080000000000001000c82501006072080800 *00000000000c00d2250100607208080000000000000c00dd250100bc7208080000000000000c00 *e625010018bf11080000000000001000f3250100dc7208080000000000000c00fd250100dc7208 *080000000000000c000826010028bf110800000000000010001526010038bf1108000000000000 *100022260100d47308080000000000000c002c260100587308080000000000000c003626010058 *7308080000000000000c003f260100d47308080000000000000c004a260100f473080800000000 *00000c00532601003cbf11080000000000001000602601000c7408080000000000000c006a2601 *000c7408080000000000000c00752601006c7408080000000000000c007e2601004cbf11080000 *0000000010008b2601007c7408080000000000000c00952601007c7408080000000000000c00a0 *260100d87408080000000000000c00a92601005cbf11080000000000001000b6260100f8740808 *0000000000000c00c0260100f87408080000000000000c00cb2601006cbf110800000000000010 *00d8260100987508080000000000000c00e3260100b07508080000000000000c00ed260100b075 *08080000000000000c00f6260100087608080000000000000c0001270100347608080000000000 *000c000b270100447608080000000000000c0015270100447608080000000000000c0020270100 *707608080000000000000c002a270100707608080000000000000c0035270100b4760808000000 *0000000c003f270100b47608080000000000000c004a270100f07608080000000000000c005427 *0100f07608080000000000000c005f270100247708080000000000000c00692701002477080800 *00000000000c0074270100607708080000000000000c007e270100607708080000000000000c00 *89270100ac7708080000000000000c0093270100ac7708080000000000000c009e2701000c7808 *080000000000000c00a82701000c7808080000000000000c00b327010064780808000000000000 *0c00bd270100647808080000000000000c00c6270100c07808080000000000000c00d0270100c0 *7808080000000000000c00db270100f07808080000000000000c00e5270100f078080800000000 *00000c00f0270100487908080000000000000c00fa270100487908080000000000000c00052801 *00947908080000000000000c0010280100a07908080000000000000c001b280100cc7908080000 *000000000c0025280100d87908080000000000000c002f280100d87908080000000000000c003a *280100107a08080000000000000c0044280100107a08080000000000000c004f280100807a0808 *0000000000000c0059280100807a08080000000000000c00622801000c7b08080000000000000c *006c2801000c7b08080000000000000c0077280100c07b08080000000000000c0081280100c07b *08080000000000000c008c280100f07b08080000000000000c0097280100307c08080000000000 *000c00a1280100307c08080000000000000c00ac2801006c7c08080000000000000c00b6280100 *6c7c08080000000000000c00c1280100a87c08080000000000000c00cb280100a87c0808000000 *0000000c00d6280100d87c08080000000000000c00e1280100187d08080000000000000c00eb28 *0100187d08080000000000000c00f6280100647d08080000000000000c0000290100647d080800 *00000000000c000b2901009c7d08080000000000000c00152901009c7d08080000000000000c00 *20290100f47d08080000000000000c002a290100f47d08080000000000000c0033290100407e08 *080000000000000c003e290100687e08080000000000000c0048290100747e0808000000000000 *0c0052290100747e08080000000000000c005b290100c47e08080000000000000c0065290100c4 *7e08080000000000000c006e290100e87e08080000000000000c0079290100147f080800000000 *00000c0083290100247f08080000000000000c008d290100247f08080000000000000c00982901 *00487f08080000000000000c00a2290100487f08080000000000000c00ad290100787f08080000 *000000000c00b8290100b07f08080000000000000c00c2290100b07f08080000000000000c00cd *290100fc7f08080000000000000c00d7290100fc7f08080000000000000c00e22901002c800808 *0000000000000c00ed290100808008080000000000000c00f7290100808008080000000000000c *00022a0100cc8008080000000000000c000c2a0100cc8008080000000000000c00172a0100fc80 *08080000000000000c00222a01005c8108080000000000000c002c2a01006c8108080000000000 *000c00362a01006c8108080000000000000c00412a0100a88108080000000000000c004c2a0100 *c48108080000000000000c00562a0100c48108080000000000000c00612a010000820808000000 *0000000c006b2a0100008208080000000000000c00762a0100308208080000000000000c00812a *0100508208080000000000000c008b2a0100508208080000000000000c00962a01008882080800 *00000000000c00a02a0100888208080000000000000c00ab2a0100d48208080000000000000c00 *b62a0100208308080000000000000c00c02a01002c8308080000000000000c00ca2a01002c8308 *080000000000000c00d32a01007c8308080000000000000c00dd2a01007c830808000000000000 *0c00e62a0100948308080000000000000c00f12a0100bc8308080000000000000c00fb2a0100c8 *8308080000000000000c00052b0100c88308080000000000000c00102b0100f483080800000000 *00000c001b2b0100688408080000000000000c00252b0100788408080000000000000c002f2b01 *00788408080000000000000c003a2b0100b88408080000000000000c00442b0100b88408080000 *000000000c004f2b0100ec8408080000000000000c00592b0100ec8408080000000000000c0062 *2b0100f08508080000000000000c006d2b0100088608080000000000000c00772b010008860808 *0000000000000c00802b0100608608080000000000000c008b2b01008c8608080000000000000c *00952b01009c8608080000000000000c009f2b01009c8608080000000000000c00aa2b0100c886 *08080000000000000c00b42b0100c88608080000000000000c00bf2b01000c8708080000000000 *000c00c92b01000c8708080000000000000c00d42b0100648708080000000000000c00de2b0100 *648708080000000000000c00e92b0100a08708080000000000000c00f32b0100a0870808000000 *0000000c00fe2b0100008808080000000000000c00082c0100008808080000000000000c00132c *0100648808080000000000000c001d2c0100648808080000000000000c00282c0100c888080800 *00000000000c00322c0100c88808080000000000000c003d2c0100148908080000000000000c00 *482c0100208908080000000000000c00532c01006c8908080000000000000c005d2c0100788908 *080000000000000c00672c0100788908080000000000000c00702c010090890808000000000000 *0c007a2c0100908908080000000000000c00852c0100c88908080000000000000c008f2c0100c8 *8908080000000000000c009a2c0100048a08080000000000000c00a42c0100048a080800000000 *00000c00af2c0100748a08080000000000000c00b92c0100748a08080000000000000c00c42c01 *00508b08080000000000000c00ce2c0100508b08080000000000000c00d92c0100208c08080000 *000000000c00e42c0100308c08080000000000000c00ef2c01002c8d08080000000000000c00fa *2c0100448c08080000000000000c00052d0100988c08080000000000000c000f2d0100a08c0808 *0000000000000c00192d0100a08c08080000000000000c00222d0100cc8c08080000000000000c *002c2d0100cc8c08080000000000000c00352d0100f08c08080000000000000c00402d01001c8d *08080000000000000c004a2d01002c8d08080000000000000c00542d0100548d08080000000000 *000c005e2d0100548d08080000000000000c00672d0100948d08080000000000000c00712d0100 *948d08080000000000000c007c2d0100cc8d08080000000000000c00862d0100cc8d0808000000 *0000000c00912d0100188e08080000000000000c009b2d0100188e08080000000000000c00a62d *01008c8e08080000000000000c00b02d01008c8e08080000000000000c00b92d0100f48e080800 *00000000000c00c32d0100f48e08080000000000000c00cc2d0100188f08080000000000000c00 *d72d0100288f08080000000000000c00e22d0100609008080000000000000c00ed2d01006c8f08 *080000000000000c00f82d0100a08f08080000000000000c00022e0100a88f0808000000000000 *0c000c2e0100a88f08080000000000000c00152e0100d48f08080000000000000c001f2e0100d4 *8f08080000000000000c00282e0100049008080000000000000c00322e01000490080800000000 *00000c003b2e0100249008080000000000000c00462e0100509008080000000000000c00502e01 *00609008080000000000000c005a2e0100809008080000000000000c00642e01008c9008080000 *000000000c006e2e0100989008080000000000000c00782e0100bc9008080000000000000c0082 *2e0100bc9008080000000000000c008d2e0100d89008080000000000000c00972e0100f0900808 *0000000000000c00a12e0100f09008080000000000000c00ac2e0100209108080000000000000c *00b62e0100389108080000000000000c00c02e0100389108080000000000000c00cb2e01009891 *08080000000000000c00d52e0100989108080000000000000c00e02e0100d49108080000000000 *000c00ea2e0100d49108080000000000000c00f52e0100349208080000000000000c00ff2e0100 *349208080000000000000c000a2f01005c9208080000000000000c00152f0100b0920808000000 *0000000c001f2f0100b09208080000000000000c002a2f0100e09208080000000000000c00342f *0100f89208080000000000000c003e2f0100f89208080000000000000c00492f01003493080800 *00000000000c00532f0100349308080000000000000c005e2f0100849308080000000000000c00 *682f0100849308080000000000000c00732f0100c09308080000000000000c007d2f0100c09308 *080000000000000c00882f0100149408080000000000000c00932f01005c940808000000000000 *0c009d2f01005c9408080000000000000c00a82f0100909408080000000000000c00b22f010090 *9408080000000000000c00bb2f0100cc9408080000000000000c00c62f0100f094080800000000 *00000c00d02f0100f09408080000000000000c00db2f01003c9508080000000000000c00e52f01 *00489508080000000000000c00ef2f0100489508080000000000000c00f82f0100949508080000 *000000000c0003300100bc9508080000000000000c000d300100cc9508080000000000000c0017 *300100cc9508080000000000000c0022300100009608080000000000000c002c30010000960808 *0000000000000c0037300100549608080000000000000c0041300100549608080000000000000c *004a3001008c9608080000000000000c00543001008c9608080000000000000c005f300100c096 *08080000000000000c0069300100c09608080000000000000c00723001006c9708080000000000 *000c007c3001006c9708080000000000000c0087300100a89708080000000000000c0091300100 *a89708080000000000000c009c300100f89708080000000000000c00a6300100f8970808000000 *0000000c00b13001006c9808080000000000000c00bb3001006c9808080000000000000c00c430 *0100d89808080000000000000c00ce300100d89808080000000000000c00d73001002099080800 *00000000000c00e2300100309908080000000000000c00ed300100689a08080000000000000c00 *f8300100749908080000000000000c0003310100a89908080000000000000c000d310100b09908 *080000000000000c0017310100b09908080000000000000c0020310100dc990808000000000000 *0c002a310100dc9908080000000000000c00333101000c9a08080000000000000c003d3101000c *9a08080000000000000c00463101002c9a08080000000000000c0051310100589a080800000000 *00000c005b310100689a08080000000000000c0065310100949a08080000000000000c006f3101 *00949a08080000000000000c007a310100c49a08080000000000000c0085310100f89a08080000 *000000000c008f310100f89a08080000000000000c0098310100849b08080000000000000c00a2 *310100849b08080000000000000c00ad310100bc9b08080000000000000c00b7310100bc9b0808 *0000000000000c00c2310100089c08080000000000000c00cc310100089c08080000000000000c *00d7310100489c08080000000000000c00e1310100489c08080000000000000c00ec310100ac9c *08080000000000000c00f6310100ac9c08080000000000000c0001320100e09c08080000000000 *000c000b320100e09c08080000000000000c0016320100349d08080000000000000c0021320100 *a49d08080000000000000c002b320100b49d08080000000000000c0035320100b49d0808000000 *0000000c0040320100fc9d08080000000000000c004a320100fc9d08080000000000000c005532 *0100309e08080000000000000c005f320100309e08080000000000000c0068320100389f080800 *00000000000c0071320100bcbf110800000000000010007e320100c0a008080000000000000c00 *88320100549f08080000000000000c0092320100549f08080000000000000c009d320100889f08 *080000000000000c00a7320100889f08080000000000000c00b2320100c49f0808000000000000 *0c00bc320100c49f08080000000000000c00c732010014a008080000000000000c00d132010014 *a008080000000000000c00dc3201006ca008080000000000000c00e63201006ca0080800000000 *00000c00ef320100c0a008080000000000000c00fa3201001ca108080000000000000c00043301 *001ca108080000000000000c000d33010044a108080000000000000c001733010044a108080000 *000000000c00223301006ca108080000000000000c002c3301006ca108080000000000000c0037 *33010010a208080000000000000c004133010010a208080000000000000c004c33010070a20808 *0000000000000c005633010070a208080000000000000c0061330100aca208080000000000000c *006b330100aca208080000000000000c0074330100eca208080000000000000c007e330100eca2 *08080000000000000c008733010000a308080000000000000c009133010000a308080000000000 *000c009c33010058a308080000000000000c00a633010058a308080000000000000c00b1330100 *a8a308080000000000000c00bb330100a8a308080000000000000c00c6330100eca30808000000 *0000000c00d133010000a408080000000000000c00dc3301001ca408080000000000000c00e633 *01001ca408080000000000000c00f133010068a408080000000000000c00fc3301007ca4080800 *00000000000c000734010098a408080000000000000c001134010098a408080000000000000c00 *1c340100eca408080000000000000c0026340100f8a408080000000000000c0030340100f8a408 *080000000000000c003b34010060a508080000000000000c004534010060a50808000000000000 *0c0050340100c8a508080000000000000c005a340100c8a508080000000000000c006534010018 *a608080000000000000c006f34010018a608080000000000000c007a3401005ca6080800000000 *00000c008534010078a608080000000000000c008f34010078a608080000000000000c009a3401 *00a8a608080000000000000c00a5340100e4a608080000000000000c00af340100f0a608080000 *000000000c00b9340100f0a608080000000000000c00c434010064a708080000000000000c00ce *34010064a708080000000000000c00d9340100d4a708080000000000000c00e3340100d4a70808 *0000000000000c00ec340100e4a708080000000000000c00f6340100e4a708080000000000000c *00ff340100f8a708080000000000000c0009350100f8a708080000000000000c00123501000ca8 *08080000000000000c001c3501000ca808080000000000000c00273501003ca808080000000000 *000c00313501003ca808080000000000000c003c35010088a808080000000000000c0046350100 *88a808080000000000000c004f35010098a808080000000000000c005935010098a80808000000 *0000000c0062350100aca808080000000000000c006c350100aca808080000000000000c007735 *0100dca808080000000000000c0081350100dca808080000000000000c008c35010020a9080800 *00000000000c00973501003ca908080000000000000c00a13501003ca908080000000000000c00 *ac3501006ca908080000000000000c00b7350100a8a908080000000000000c00c1350100b4a908 *080000000000000c00cb350100b4a908080000000000000c00d635010028aa0808000000000000 *0c00e035010028aa08080000000000000c00eb3501008caa08080000000000000c00f63501009c *aa08080000000000000c0001360100b8aa08080000000000000c000b360100b8aa080800000000 *00000c0016360100e8aa08080000000000000c002136010024ab08080000000000000c002b3601 *0024ab08080000000000000c003636010078ab08080000000000000c004036010084ab08080000 *000000000c004a36010084ab08080000000000000c00533601009cab08080000000000000c005d *3601009cab08080000000000000c0068360100d4ab08080000000000000c0072360100d4ab0808 *0000000000000c007b3601005cac08080000000000000c0084360100ccbf110800000000000010 *009136010094ad08080000000000000c009b36010074ac08080000000000000c00a536010074ac *08080000000000000c00b0360100a8ac08080000000000000c00ba360100a8ac08080000000000 *000c00c3360100c8ac08080000000000000c00cd360100c8ac08080000000000000c00d8360100 *08ad08080000000000000c00e236010008ad08080000000000000c00eb36010064ad0808000000 *0000000c00f536010064ad08080000000000000c00fe36010094ad08080000000000000c000937 *0100b0ad08080000000000000c0012370100d4bf110800000000000010001f370100fcad080800 *00000000000c0029370100c4ad08080000000000000c0033370100c4ad08080000000000000c00 *3e370100fcad08080000000000000c004937010038ae08080000000000000c0052370100ecbf11 *0800000000000010005f3701004cae08080000000000000c00693701004cae0808000000000000 *0c0074370100a4ae08080000000000000c007d370100fcbf110800000000000010008a370100b8 *b008080000000000000c0094370100bcae08080000000000000c009e370100bcae080800000000 *00000c00a9370100f0ae08080000000000000c00b3370100f0ae08080000000000000c00bc3701 *0010af08080000000000000c00c637010010af08080000000000000c00d13701004caf08080000 *000000000c00db3701004caf08080000000000000c00e43701006caf08080000000000000c00ee *3701006caf08080000000000000c00f9370100acaf08080000000000000c0003380100acaf0808 *0000000000000c000e3801001cb008080000000000000c00183801001cb008080000000000000c *002138010084b008080000000000000c002b38010084b008080000000000000c0034380100b8b0 *08080000000000000c003f380100d4b008080000000000000c004838010004c011080000000000 *0010005538010020b108080000000000000c005f380100e8b008080000000000000c0069380100 *e8b008080000000000000c007438010020b108080000000000000c007f3801005cb10808000000 *0000000c008838010064b108080000000000000c00913801006cb108080000000000000c009a38 *010034c011080000000000001000a738010044c011080000000000001000b438010054c0110800 *00000000001000c138010080b108080000000000000c00cb38010080b108080000000000000c00 *d6380100e4b108080000000000000c00e0380100e4b108080000000000000c00eb38010048b208 *080000000000000c00f538010048b208080000000000000c0000390100a0b20808000000000000 *0c000939010064c0110800000000000010001639010004c308080000000000000c0020390100cc *b208080000000000000c002a390100ccb208080000000000000c003539010008b3080800000000 *00000c003f39010008b308080000000000000c004839010054b308080000000000000c00523901 *0054b308080000000000000c005d39010084b308080000000000000c006839010098b308080000 *000000000c007239010098b308080000000000000c007d390100d4b308080000000000000c0087 *390100d4b308080000000000000c009039010014b408080000000000000c009b39010028b40808 *0000000000000c00a539010028b408080000000000000c00b039010064b408080000000000000c *00ba39010064b408080000000000000c00c3390100b0b408080000000000000c00cd390100b0b4 *08080000000000000c00d8390100e0b408080000000000000c00e3390100f4b408080000000000 *000c00ed390100f4b408080000000000000c00f839010030b508080000000000000c00023a0100 *30b508080000000000000c000b3a010070b508080000000000000c00163a010084b50808000000 *0000000c00203a010084b508080000000000000c002b3a0100c0b508080000000000000c00353a *0100c0b508080000000000000c003e3a010000b608080000000000000c00493a010014b6080800 *00000000000c00533a010014b608080000000000000c005e3a010050b608080000000000000c00 *683a010050b608080000000000000c00713a01009cb608080000000000000c007b3a01009cb608 *080000000000000c00863a0100ccb608080000000000000c00913a0100e0b60808000000000000 *0c009b3a0100e0b608080000000000000c00a63a01001cb708080000000000000c00b03a01001c *b708080000000000000c00b93a01005cb708080000000000000c00c43a010070b7080800000000 *00000c00ce3a010070b708080000000000000c00d93a0100acb708080000000000000c00e33a01 *00acb708080000000000000c00ec3a0100ecb708080000000000000c00f73a0100f4b708080000 *000000000c00023b01002cb808080000000000000c000d3b010048b808080000000000000c0017 *3b010054b808080000000000000c00213b010054b808080000000000000c002a3b010074b80808 *0000000000000c00353b0100a0b808080000000000000c003f3b0100a0b808080000000000000c *004a3b0100acb808080000000000000c00543b0100e0b808080000000000000c005e3b0100f0b8 *08080000000000000c00683b0100f0b808080000000000000c00733b010034b908080000000000 *000c007d3b010034b908080000000000000c00883b010090b908080000000000000c00923b0100 *90b908080000000000000c009d3b0100bcb908080000000000000c00a83b01000cba0808000000 *0000000c00b33b010028ba08080000000000000c00bd3b010034ba08080000000000000c00c73b *010034ba08080000000000000c00d03b010054ba08080000000000000c00db3b010080ba080800 *00000000000c00e53b010080ba08080000000000000c00f03b01008cba08080000000000000c00 *fa3b0100c0ba08080000000000000c00043c0100d0ba08080000000000000c000e3c0100d0ba08 *080000000000000c00193c010004bb08080000000000000c00243c010060bb0808000000000000 *0c002e3c010060bb08080000000000000c00393c01009cbb08080000000000000c00433c0100d0 *bb08080000000000000c004d3c0100e0bb08080000000000000c00573c0100e0bb080800000000 *00000c00623c010014bc08080000000000000c006d3c01005cbc08080000000000000c00783c01 *0078bc08080000000000000c00823c010084bc08080000000000000c008c3c010084bc08080000 *000000000c00953c0100a4bc08080000000000000c00a03c0100d0bc08080000000000000c00aa *3c0100d0bc08080000000000000c00b53c0100dcbc08080000000000000c00bf3c010010bd0808 *0000000000000c00c93c010020bd08080000000000000c00d33c010020bd08080000000000000c *00de3c010064bd08080000000000000c00e83c010064bd08080000000000000c00f33c0100c0bd *08080000000000000c00fd3c0100c0bd08080000000000000c00083d0100ecbd08080000000000 *000c00133d010038be08080000000000000c001e3d010054be08080000000000000c00283d0100 *60be08080000000000000c00323d010060be08080000000000000c003b3d010080be0808000000 *0000000c00463d0100acbe08080000000000000c00503d0100acbe08080000000000000c005b3d *0100b8be08080000000000000c00653d0100ecbe08080000000000000c006f3d0100fcbe080800 *00000000000c00793d0100fcbe08080000000000000c00843d01002cbf08080000000000000c00 *8f3d010084bf08080000000000000c00993d010084bf08080000000000000c00a43d0100c0bf08 *080000000000000c00ae3d0100f4bf08080000000000000c00b83d010004c00808000000000000 *0c00c23d010004c008080000000000000c00cd3d010034c008080000000000000c00d83d010078 *c008080000000000000c00e33d010094c008080000000000000c00ed3d0100a0c0080800000000 *00000c00f73d0100a0c008080000000000000c00003e0100c0c008080000000000000c000b3e01 *00ecc008080000000000000c00153e0100ecc008080000000000000c00203e0100f8c008080000 *000000000c002a3e01002cc108080000000000000c00343e01003cc108080000000000000c003e *3e01003cc108080000000000000c00493e01006cc108080000000000000c00543e0100c4c10808 *0000000000000c005e3e0100c4c108080000000000000c00693e010000c208080000000000000c *00733e010034c208080000000000000c007d3e010044c208080000000000000c00873e010044c2 *08080000000000000c00923e010080c208080000000000000c009c3e010080c208080000000000 *000c00a53e0100d0c208080000000000000c00af3e0100d0c208080000000000000c00ba3e0100 *04c308080000000000000c00c53e010068c308080000000000000c00ce3e010074c01108000000 *0000001000db3e01007cc308080000000000000c00e53e01007cc308080000000000000c00f03e *0100d4c308080000000000000c00f93e0100dcc308080000000000000c00023f0100e4c3080800 *00000000000c000b3f01009cc011080000000000001000183f0100acc011080000000000001000 *253f0100bcc011080000000000001000323f0100f8c308080000000000000c003c3f0100f8c308 *080000000000000c00473f01005cc408080000000000000c00513f01005cc40808000000000000 *0c005c3f0100c0c408080000000000000c00663f0100c0c408080000000000000c00713f010018 *c508080000000000000c007a3f0100ccc011080000000000001000873f01002cc5080800000000 *00000c00913f01002cc508080000000000000c009c3f010084c508080000000000000c00a53f01 *00dcc011080000000000001000b23f0100a4c508080000000000000c00bc3f010090c508080000 *000000000c00c63f010090c508080000000000000c00cf3f0100a4c508080000000000000c00da *3f0100f8c508080000000000000c00e33f0100ecc011080000000000001000f03f0100c4dc0808 *0000000000000c00fa3f010024c608080000000000000c000440010024c608080000000000000c *000f40010060c608080000000000000c001940010060c608080000000000000c0022400100acc6 *08080000000000000c002c400100acc608080000000000000c0037400100dcc608080000000000 *000c0042400100f0c608080000000000000c004c400100f0c608080000000000000c0057400100 *2cc708080000000000000c00614001002cc708080000000000000c006a4001006cc70808000000 *0000000c007540010080c708080000000000000c007f40010080c708080000000000000c008a40 *0100bcc708080000000000000c0094400100bcc708080000000000000c009d40010008c8080800 *00000000000c00a740010008c808080000000000000c00b240010038c808080000000000000c00 *bd4001004cc808080000000000000c00c74001004cc808080000000000000c00d240010088c808 *080000000000000c00dc40010088c808080000000000000c00e5400100c8c80808000000000000 *0c00f0400100dcc808080000000000000c00fa400100dcc808080000000000000c000541010018 *c908080000000000000c000f41010018c908080000000000000c001841010058c9080800000000 *00000c00234101006cc908080000000000000c002d4101006cc908080000000000000c00384101 *00a8c908080000000000000c0042410100a8c908080000000000000c004b410100f4c908080000 *000000000c0055410100f4c908080000000000000c006041010024ca08080000000000000c006b *41010038ca08080000000000000c007541010038ca08080000000000000c008041010074ca0808 *0000000000000c008a41010074ca08080000000000000c0093410100b4ca08080000000000000c *009e410100c8ca08080000000000000c00a8410100c8ca08080000000000000c00b341010004cb *08080000000000000c00bd41010004cb08080000000000000c00c641010044cb08080000000000 *000c00d141010058cb08080000000000000c00db41010058cb08080000000000000c00e6410100 *94cb08080000000000000c00f041010094cb08080000000000000c00f9410100e0cb0808000000 *0000000c0003420100e0cb08080000000000000c000e42010010cc08080000000000000c001942 *010024cc08080000000000000c002342010024cc08080000000000000c002e42010060cc080800 *00000000000c003842010060cc08080000000000000c0041420100a0cc08080000000000000c00 *4c420100b4cc08080000000000000c0056420100b4cc08080000000000000c0061420100f0cc08 *080000000000000c006b420100f0cc08080000000000000c007442010030cd0808000000000000 *0c007f42010038cd08080000000000000c008a42010074cd08080000000000000c009542010090 *cd08080000000000000c009f4201009ccd08080000000000000c00a94201009ccd080800000000 *00000c00b2420100bccd08080000000000000c00bd420100e8cd08080000000000000c00c74201 *00e8cd08080000000000000c00d2420100f4cd08080000000000000c00dc42010028ce08080000 *000000000c00e642010038ce08080000000000000c00f042010038ce08080000000000000c00fb *42010084ce08080000000000000c000543010084ce08080000000000000c0010430100e8ce0808 *0000000000000c001a430100e8ce08080000000000000c002543010014cf08080000000000000c *00304301006ccf08080000000000000c003b43010088cf08080000000000000c004543010094cf *08080000000000000c004f43010094cf08080000000000000c0058430100b4cf08080000000000 *000c0063430100e0cf08080000000000000c006d430100e0cf08080000000000000c0078430100 *eccf08080000000000000c008243010020d008080000000000000c008c43010030d00808000000 *0000000c009643010030d008080000000000000c00a14301006cd008080000000000000c00ac43 *0100d0d008080000000000000c00b6430100d0d008080000000000000c00c14301000cd1080800 *00000000000c00cb43010040d108080000000000000c00d543010050d108080000000000000c00 *df43010050d108080000000000000c00ea4301008cd108080000000000000c00f5430100dcd108 *080000000000000c0000440100f8d108080000000000000c000a44010004d20808000000000000 *0c001444010004d208080000000000000c001d44010024d208080000000000000c002844010050 *d208080000000000000c003244010050d208080000000000000c003d4401005cd2080800000000 *00000c004744010090d208080000000000000c0051440100a0d208080000000000000c005b4401 *00a0d208080000000000000c0066440100ecd208080000000000000c0070440100ecd208080000 *000000000c007b44010050d308080000000000000c008544010050d308080000000000000c0090 *4401007cd308080000000000000c009b440100ccd308080000000000000c00a6440100e8d30808 *0000000000000c00b0440100f4d308080000000000000c00ba440100f4d308080000000000000c *00c344010014d408080000000000000c00ce44010040d408080000000000000c00d844010040d4 *08080000000000000c00e34401004cd408080000000000000c00ed44010080d408080000000000 *000c00f744010090d408080000000000000c000145010090d408080000000000000c000c450100 *c4d408080000000000000c001745010020d508080000000000000c002145010020d50808000000 *0000000c002c4501005cd508080000000000000c003645010090d508080000000000000c004045 *0100a0d508080000000000000c004a450100a0d508080000000000000c0055450100d4d5080800 *00000000000c00604501001cd608080000000000000c006b45010038d608080000000000000c00 *7545010044d608080000000000000c007f45010044d608080000000000000c008845010064d608 *080000000000000c009345010090d608080000000000000c009d45010090d60808000000000000 *0c00a84501009cd608080000000000000c00b2450100d0d608080000000000000c00bc450100e0 *d608080000000000000c00c6450100e0d608080000000000000c00d145010024d7080800000000 *00000c00db45010024d708080000000000000c00e645010080d708080000000000000c00f04501 *0080d708080000000000000c00fb450100acd708080000000000000c0006460100f8d708080000 *000000000c001146010014d808080000000000000c001b46010020d808080000000000000c0025 *46010020d808080000000000000c002e46010040d808080000000000000c00394601006cd80808 *0000000000000c00434601006cd808080000000000000c004e46010078d808080000000000000c *0058460100acd808080000000000000c0062460100bcd808080000000000000c006c460100bcd8 *08080000000000000c0077460100ecd808080000000000000c008246010044d908080000000000 *000c008c46010044d908080000000000000c009746010080d908080000000000000c00a1460100 *b4d908080000000000000c00ab460100c4d908080000000000000c00b5460100c4d90808000000 *0000000c00c0460100f4d908080000000000000c00cb46010038da08080000000000000c00d646 *010054da08080000000000000c00e046010060da08080000000000000c00ea46010060da080800 *00000000000c00f346010080da08080000000000000c00fe460100acda08080000000000000c00 *08470100acda08080000000000000c0013470100b8da08080000000000000c001d470100ecda08 *080000000000000c0027470100fcda08080000000000000c0031470100fcda0808000000000000 *0c003c4701002cdb08080000000000000c004747010084db08080000000000000c005147010084 *db08080000000000000c005c470100c0db08080000000000000c0066470100f4db080800000000 *00000c007047010004dc08080000000000000c007a47010004dc08080000000000000c00854701 *0040dc08080000000000000c008f47010040dc08080000000000000c009847010090dc08080000 *000000000c00a247010090dc08080000000000000c00ad470100c4dc08080000000000000c00b8 *47010028dd08080000000000000c00c1470100fcc011080000000000001000ce4701003cdd0808 *0000000000000c00d84701003cdd08080000000000000c00e347010094dd08080000000000000c *00ec47010020c111080000000000001000f9470100a8dd08080000000000000c0003480100a8dd *08080000000000000c000e48010000de08080000000000000c001748010030c111080000000000 *0010002448010028e408080000000000000c002e48010028de08080000000000000c0038480100 *28de08080000000000000c004348010080de08080000000000000c004d48010080de0808000000 *0000000c0058480100b8de08080000000000000c0062480100b8de08080000000000000c006d48 *010018df08080000000000000c007748010018df08080000000000000c008248010054df080800 *00000000000c008c48010054df08080000000000000c0097480100a0df08080000000000000c00 *a1480100a0df08080000000000000c00ac48010000e008080000000000000c00b648010000e008 *080000000000000c00c14801003ce008080000000000000c00cb4801003ce00808000000000000 *0c00d648010088e008080000000000000c00e048010088e008080000000000000c00eb480100e4 *e008080000000000000c00f5480100e4e008080000000000000c00fe48010004e1080800000000 *00000c000849010004e108080000000000000c00134901003ce108080000000000000c001d4901 *003ce108080000000000000c0028490100a0e108080000000000000c0032490100a0e108080000 *000000000c003d490100dce108080000000000000c0047490100dce108080000000000000c0052 *49010028e208080000000000000c005c49010028e208080000000000000c00674901008ce20808 *0000000000000c00714901008ce208080000000000000c007c490100c8e208080000000000000c *0086490100c8e208080000000000000c009149010014e308080000000000000c009b49010014e3 *08080000000000000c00a649010074e308080000000000000c00b049010074e308080000000000 *000c00b949010098e308080000000000000c00c349010098e308080000000000000c00ce490100 *d0e308080000000000000c00d8490100d0e308080000000000000c00e149010028e40808000000 *0000000c00ec49010038c111080000000000001000f949010048e408080000000000000c00024a *010040c1110800000000000010000f4a01005ce408080000000000000c00194a01005ce4080800 *00000000000c00244a0100b4e408080000000000000c002d4a010050c111080000000000001000 *3a4a0100c8e408080000000000000c00444a0100c8e408080000000000000c004f4a010020e508 *080000000000000c00584a010074c111080000000000001000654a010034e50808000000000000 *0c006f4a010034e508080000000000000c007a4a01008ce508080000000000000c00834a010084 *c111080000000000001000904a0100a0e508080000000000000c009a4a0100a0e5080800000000 *00000c00a54a0100f8e508080000000000000c00ae4a010094c111080000000000001000bb4a01 *00d0ee08080000000000000c00c54a010020e608080000000000000c00cf4a010020e608080000 *000000000c00da4a010078e608080000000000000c00e44a010078e608080000000000000c00ef *4a0100b0e608080000000000000c00f94a0100b0e608080000000000000c00044b010010e70808 *0000000000000c000e4b010010e708080000000000000c00194b01004ce708080000000000000c *00234b01004ce708080000000000000c002e4b010098e708080000000000000c00384b010098e7 *08080000000000000c00434b0100f8e708080000000000000c004d4b0100f8e708080000000000 *000c00584b010034e808080000000000000c00624b010034e808080000000000000c006d4b0100 *80e808080000000000000c00774b010080e808080000000000000c00824b0100dce80808000000 *0000000c008c4b0100dce808080000000000000c00954b0100fce808080000000000000c009f4b *0100fce808080000000000000c00aa4b010034e908080000000000000c00b44b010034e9080800 *00000000000c00bf4b010098e908080000000000000c00c94b010098e908080000000000000c00 *d44b0100d4e908080000000000000c00de4b0100d4e908080000000000000c00e94b010020ea08 *080000000000000c00f34b010020ea08080000000000000c00fe4b010084ea0808000000000000 *0c00084c010084ea08080000000000000c00134c0100c0ea08080000000000000c001d4c0100c0 *ea08080000000000000c00284c01000ceb08080000000000000c00324c01000ceb080800000000 *00000c003d4c01006ceb08080000000000000c00474c01006ceb08080000000000000c00504c01 *008ceb08080000000000000c005a4c01008ceb08080000000000000c00654c0100c4eb08080000 *000000000c006f4c0100c4eb08080000000000000c007a4c010030ec08080000000000000c0084 *4c010030ec08080000000000000c008f4c01006cec08080000000000000c00994c01006cec0808 *0000000000000c00a44c0100b8ec08080000000000000c00ae4c0100b8ec08080000000000000c *00b94c010024ed08080000000000000c00c34c010024ed08080000000000000c00ce4c010060ed *08080000000000000c00d84c010060ed08080000000000000c00e34c0100aced08080000000000 *000c00ed4c0100aced08080000000000000c00f84c010014ee08080000000000000c00024d0100 *14ee08080000000000000c000b4d010038ee08080000000000000c00154d010038ee0808000000 *0000000c00204d010070ee08080000000000000c002a4d010070ee08080000000000000c00334d *0100d0ee08080000000000000c003e4d01009cc1110800000000000010004b4d0100f0ee080800 *00000000000c00544d0100a4c111080000000000001000614d010004ef08080000000000000c00 *6b4d010004ef08080000000000000c00764d01005cef08080000000000000c007f4d0100b4c111 *0800000000000010008c4d010070ef08080000000000000c00964d010070ef0808000000000000 *0c00a14d0100c8ef08080000000000000c00aa4d0100c4c111080000000000001000b74d0100dc *ef08080000000000000c00c14d0100dcef08080000000000000c00cc4d010034f0080800000000 *00000c00d54d0100d4c111080000000000001000e24d01001c0209080000000000000c00ec4d01 *005cf008080000000000000c00f64d01005cf008080000000000000c00ff4d01007cf008080000 *000000000c00094e01007cf008080000000000000c00144e0100b8f008080000000000000c001e *4e0100b8f008080000000000000c00274e0100d8f008080000000000000c00314e0100d8f00808 *0000000000000c003c4e010014f108080000000000000c00464e010014f108080000000000000c *004f4e010034f108080000000000000c00594e010034f108080000000000000c00644e010070f1 *08080000000000000c006e4e010070f108080000000000000c00774e010090f108080000000000 *000c00814e010090f108080000000000000c008c4e0100ccf108080000000000000c00964e0100 *ccf108080000000000000c009f4e0100ecf108080000000000000c00a94e0100ecf10808000000 *0000000c00b44e010028f208080000000000000c00be4e010028f208080000000000000c00c74e *010048f208080000000000000c00d14e010048f208080000000000000c00dc4e010084f2080800 *00000000000c00e64e010084f208080000000000000c00ef4e0100a4f208080000000000000c00 *f94e0100a4f208080000000000000c00044f0100e0f208080000000000000c000e4f0100e0f208 *080000000000000c00174f010000f308080000000000000c00214f010000f30808000000000000 *0c002c4f01003cf308080000000000000c00364f01003cf308080000000000000c003f4f01005c *f308080000000000000c00494f01005cf308080000000000000c00544f010098f3080800000000 *00000c005e4f010098f308080000000000000c00674f0100b8f308080000000000000c00714f01 *00b8f308080000000000000c007c4f0100f4f308080000000000000c00864f0100f4f308080000 *000000000c008f4f010014f408080000000000000c00994f010014f408080000000000000c00a4 *4f010050f408080000000000000c00ae4f010050f408080000000000000c00b74f010070f40808 *0000000000000c00c14f010070f408080000000000000c00cc4f0100acf408080000000000000c *00d64f0100acf408080000000000000c00df4f0100ccf408080000000000000c00e94f0100ccf4 *08080000000000000c00f44f010008f508080000000000000c00fe4f010008f508080000000000 *000c000750010028f508080000000000000c001150010028f508080000000000000c001c500100 *64f508080000000000000c002650010064f508080000000000000c002f50010084f50808000000 *0000000c003950010084f508080000000000000c0044500100c0f508080000000000000c004e50 *0100c0f508080000000000000c0057500100e0f508080000000000000c0061500100e0f5080800 *00000000000c006c50010020f608080000000000000c007650010020f608080000000000000c00 *8150010090f608080000000000000c008b50010090f608080000000000000c00965001000cf708 *080000000000000c00a05001000cf708080000000000000c00ab50010094f70808000000000000 *0c00b550010094f708080000000000000c00c050010028f808080000000000000c00ca50010028 *f808080000000000000c00d5500100c8f808080000000000000c00df500100c8f8080800000000 *00000c00ea50010074f908080000000000000c00f450010074f908080000000000000c00ff5001 *002cfa08080000000000000c00095101002cfa08080000000000000c0014510100f0fa08080000 *000000000c001e510100f0fa08080000000000000c0029510100c0fb08080000000000000c0033 *510100c0fb08080000000000000c003e5101009cfc08080000000000000c00485101009cfc0808 *0000000000000c005351010084fd08080000000000000c005d51010084fd08080000000000000c *006851010078fe08080000000000000c007251010078fe08080000000000000c007d51010078ff *08080000000000000c008751010078ff08080000000000000c0092510100880009080000000000 *000c009c510100880009080000000000000c00a5510100980109080000000000000c00af510100 *980109080000000000000c00b85101001c0209080000000000000c00c351010038020908000000 *0000000c00cc510100dcc111080000000000001000d9510100840209080000000000000c00e351 *01004c0209080000000000000c00ed5101004c0209080000000000000c00f85101008402090800 *00000000000c0003520100c00209080000000000000c000c520100c80209080000000000000c00 *15520100d00209080000000000000c001e5201000cc2110800000000000010002b5201001cc211 *080000000000001000385201002cc21108000000000000100045520100e4020908000000000000 *0c004f520100e40209080000000000000c005a520100480309080000000000000c006452010048 *0309080000000000000c006f520100ac0309080000000000000c0079520100ac03090800000000 *00000c0084520100040409080000000000000c008d5201003cc2110800000000000010009a5201 *00180409080000000000000c00a4520100180409080000000000000c00af520100700409080000 *000000000c00b85201004cc211080000000000001000c5520100900409080000000000000c00cf *5201007c0409080000000000000c00d95201007c0409080000000000000c00e252010090040908 *0000000000000c00ed520100e40409080000000000000c00f65201005cc2110800000000000010 *00035301007c7d09080000000000000c000d530100240509080000000000000c00175301002405 *09080000000000000c0022530100600509080000000000000c002c530100600509080000000000 *000c0035530100ac0509080000000000000c003f530100ac0509080000000000000c004a530100 *dc0509080000000000000c0055530100f00509080000000000000c005f530100f0050908000000 *0000000c006a5301002c0609080000000000000c00745301002c0609080000000000000c007d53 *01006c0609080000000000000c0088530100800609080000000000000c00925301008006090800 *00000000000c009d530100bc0609080000000000000c00a7530100bc0609080000000000000c00 *b0530100080709080000000000000c00ba530100080709080000000000000c00c5530100380709 *080000000000000c00d05301004c0709080000000000000c00da5301004c070908000000000000 *0c00e5530100880709080000000000000c00ef530100880709080000000000000c00f8530100c8 *0709080000000000000c0003540100dc0709080000000000000c000d540100dc07090800000000 *00000c0018540100180809080000000000000c0022540100180809080000000000000c002b5401 *00580809080000000000000c00365401006c0809080000000000000c00405401006c0809080000 *000000000c004b540100a80809080000000000000c0055540100a80809080000000000000c005e *540100f40809080000000000000c0068540100f40809080000000000000c007354010024090908 *0000000000000c007e540100380909080000000000000c0088540100380909080000000000000c *0093540100740909080000000000000c009d540100740909080000000000000c00a6540100b409 *09080000000000000c00b1540100c80909080000000000000c00bb540100c80909080000000000 *000c00c6540100040a09080000000000000c00d0540100040a09080000000000000c00d9540100 *440a09080000000000000c00e4540100580a09080000000000000c00ee540100580a0908000000 *0000000c00f9540100940a09080000000000000c0003550100940a09080000000000000c000c55 *0100e00a09080000000000000c0016550100e00a09080000000000000c0021550100100b090800 *00000000000c002c550100240b09080000000000000c0036550100240b09080000000000000c00 *41550100600b09080000000000000c004b550100600b09080000000000000c0054550100a00b09 *080000000000000c005f550100b40b09080000000000000c0069550100b40b0908000000000000 *0c0074550100f00b09080000000000000c007e550100f00b09080000000000000c008755010030 *0c09080000000000000c0092550100440c09080000000000000c009c550100440c090800000000 *00000c00a7550100800c09080000000000000c00b1550100800c09080000000000000c00ba5501 *00cc0c09080000000000000c00c4550100cc0c09080000000000000c00cf550100fc0c09080000 *000000000c00da550100100d09080000000000000c00e4550100100d09080000000000000c00ef *5501004c0d09080000000000000c00f95501004c0d09080000000000000c00025601008c0d0908 *0000000000000c000d560100a00d09080000000000000c0017560100a00d09080000000000000c *0022560100dc0d09080000000000000c002c560100dc0d09080000000000000c00355601001c0e *09080000000000000c0040560100300e09080000000000000c004a560100300e09080000000000 *000c00555601006c0e09080000000000000c005f5601006c0e09080000000000000c0068560100 *b80e09080000000000000c0072560100b80e09080000000000000c007d560100e80e0908000000 *0000000c0088560100fc0e09080000000000000c0092560100fc0e09080000000000000c009d56 *0100380f09080000000000000c00a7560100380f09080000000000000c00b0560100780f090800 *00000000000c00bb5601008c0f09080000000000000c00c55601008c0f09080000000000000c00 *d0560100c80f09080000000000000c00da560100c80f09080000000000000c00e3560100081009 *080000000000000c00ee5601001c1009080000000000000c00f85601001c100908000000000000 *0c0003570100581009080000000000000c000d570100581009080000000000000c0016570100a4 *1009080000000000000c0020570100a41009080000000000000c002b570100d410090800000000 *00000c0036570100e81009080000000000000c0040570100e81009080000000000000c004b5701 *00241109080000000000000c0055570100241109080000000000000c005e570100641109080000 *000000000c0069570100781109080000000000000c0073570100781109080000000000000c007e *570100b41109080000000000000c0088570100b41109080000000000000c0091570100f4110908 *0000000000000c009c570100081209080000000000000c00a6570100081209080000000000000c *00b1570100441209080000000000000c00bb570100441209080000000000000c00c45701009012 *09080000000000000c00ce570100901209080000000000000c00d9570100c01209080000000000 *000c00e4570100d41209080000000000000c00ee570100d41209080000000000000c00f9570100 *101309080000000000000c0003580100101309080000000000000c000c58010050130908000000 *0000000c0017580100641309080000000000000c0021580100641309080000000000000c002c58 *0100a01309080000000000000c0036580100a01309080000000000000c003f580100e013090800 *00000000000c004a580100f41309080000000000000c0054580100f41309080000000000000c00 *5f580100301409080000000000000c0069580100301409080000000000000c00725801007c1409 *080000000000000c007c5801007c1409080000000000000c0087580100ac140908000000000000 *0c0092580100c01409080000000000000c009c580100c01409080000000000000c00a7580100fc *1409080000000000000c00b1580100fc1409080000000000000c00ba5801003c15090800000000 *00000c00c5580100501509080000000000000c00cf580100501509080000000000000c00da5801 *008c1509080000000000000c00e45801008c1509080000000000000c00ed580100cc1509080000 *000000000c00f8580100e01509080000000000000c0002590100e01509080000000000000c000d *5901001c1609080000000000000c00175901001c1609080000000000000c002059010068160908 *0000000000000c002a590100681609080000000000000c0035590100981609080000000000000c *0040590100ac1609080000000000000c004a590100ac1609080000000000000c0055590100e816 *09080000000000000c005f590100e81609080000000000000c0068590100281709080000000000 *000c00735901003c1709080000000000000c007d5901003c1709080000000000000c0088590100 *781709080000000000000c0092590100781709080000000000000c009b590100b8170908000000 *0000000c00a6590100cc1709080000000000000c00b0590100cc1709080000000000000c00bb59 *0100081809080000000000000c00c5590100081809080000000000000c00ce5901005418090800 *00000000000c00d8590100541809080000000000000c00e3590100841809080000000000000c00 *ee590100981809080000000000000c00f8590100981809080000000000000c00035a0100d41809 *080000000000000c000d5a0100d41809080000000000000c00165a010014190908000000000000 *0c00215a0100281909080000000000000c002b5a0100281909080000000000000c00365a010064 *1909080000000000000c00405a0100641909080000000000000c00495a0100a419090800000000 *00000c00545a0100b81909080000000000000c005e5a0100b81909080000000000000c00695a01 *00f41909080000000000000c00735a0100f41909080000000000000c007c5a0100401a09080000 *000000000c00865a0100401a09080000000000000c00915a0100701a09080000000000000c009c *5a0100841a09080000000000000c00a65a0100841a09080000000000000c00b15a0100c01a0908 *0000000000000c00bb5a0100c01a09080000000000000c00c45a0100001b09080000000000000c *00cf5a0100141b09080000000000000c00d95a0100141b09080000000000000c00e45a0100501b *09080000000000000c00ee5a0100501b09080000000000000c00f75a0100901b09080000000000 *000c00025b0100a41b09080000000000000c000c5b0100a41b09080000000000000c00175b0100 *e01b09080000000000000c00215b0100e01b09080000000000000c002a5b01002c1c0908000000 *0000000c00345b01002c1c09080000000000000c003f5b01005c1c09080000000000000c004a5b *0100701c09080000000000000c00545b0100701c09080000000000000c005f5b0100ac1c090800 *00000000000c00695b0100ac1c09080000000000000c00725b0100ec1c09080000000000000c00 *7d5b0100001d09080000000000000c00875b0100001d09080000000000000c00925b01003c1d09 *080000000000000c009c5b01003c1d09080000000000000c00a55b01007c1d0908000000000000 *0c00b05b0100901d09080000000000000c00ba5b0100901d09080000000000000c00c55b0100cc *1d09080000000000000c00cf5b0100cc1d09080000000000000c00d85b0100181e090800000000 *00000c00e25b0100181e09080000000000000c00ed5b0100481e09080000000000000c00f85b01 *005c1e09080000000000000c00025c01005c1e09080000000000000c000d5c0100981e09080000 *000000000c00175c0100981e09080000000000000c00205c0100d81e09080000000000000c002b *5c0100ec1e09080000000000000c00355c0100ec1e09080000000000000c00405c0100281f0908 *0000000000000c004a5c0100281f09080000000000000c00535c0100681f09080000000000000c *005e5c01007c1f09080000000000000c00685c01007c1f09080000000000000c00735c0100b81f *09080000000000000c007d5c0100b81f09080000000000000c00865c0100042009080000000000 *000c00905c0100042009080000000000000c009b5c0100342009080000000000000c00a65c0100 *482009080000000000000c00b05c0100482009080000000000000c00bb5c010084200908000000 *0000000c00c55c0100842009080000000000000c00ce5c0100c42009080000000000000c00d95c *0100d82009080000000000000c00e35c0100d82009080000000000000c00ee5c01001421090800 *00000000000c00f85c0100142109080000000000000c00015d0100542109080000000000000c00 *0c5d0100682109080000000000000c00165d0100682109080000000000000c00215d0100a42109 *080000000000000c002b5d0100a42109080000000000000c00345d0100f0210908000000000000 *0c003e5d0100f02109080000000000000c00495d0100202209080000000000000c00545d010034 *2209080000000000000c005e5d0100342209080000000000000c00695d01007022090800000000 *00000c00735d0100702209080000000000000c007c5d0100b02209080000000000000c00875d01 *00c42209080000000000000c00915d0100c42209080000000000000c009c5d0100002309080000 *000000000c00a65d0100002309080000000000000c00af5d0100402309080000000000000c00ba *5d0100542309080000000000000c00c45d0100542309080000000000000c00cf5d010090230908 *0000000000000c00d95d0100902309080000000000000c00e25d0100dc2309080000000000000c *00ec5d0100dc2309080000000000000c00f75d01000c2409080000000000000c00025e01002024 *09080000000000000c000c5e0100202409080000000000000c00175e01005c2409080000000000 *000c00215e01005c2409080000000000000c002a5e01009c2409080000000000000c00355e0100 *b02409080000000000000c003f5e0100b02409080000000000000c004a5e0100ec240908000000 *0000000c00545e0100ec2409080000000000000c005d5e01002c2509080000000000000c00685e *0100342509080000000000000c00735e0100c02509080000000000000c007e5e0100dc25090800 *00000000000c00885e0100e82509080000000000000c00925e0100e82509080000000000000c00 *9b5e0100082609080000000000000c00a65e0100342609080000000000000c00b05e0100342609 *080000000000000c00bb5e0100402609080000000000000c00c55e010074260908000000000000 *0c00cf5e0100842609080000000000000c00d95e0100842609080000000000000c00e45e01001c *2709080000000000000c00ee5e01001c2709080000000000000c00f95e0100cc27090800000000 *00000c00035f0100cc2709080000000000000c000e5f0100f82709080000000000000c00195f01 *009c2809080000000000000c00245f0100b82809080000000000000c002e5f0100c42809080000 *000000000c00385f0100c42809080000000000000c00415f0100e42809080000000000000c004c *5f0100102909080000000000000c00565f0100102909080000000000000c00615f01001c290908 *0000000000000c006b5f0100502909080000000000000c00755f0100602909080000000000000c *007f5f0100602909080000000000000c008a5f0100e82909080000000000000c00955f0100982a *09080000000000000c009f5f0100982a09080000000000000c00aa5f0100d42a09080000000000 *000c00b45f0100082b09080000000000000c00be5f0100182b09080000000000000c00c85f0100 *182b09080000000000000c00d35f0100a02b09080000000000000c00de5f01003c2c0908000000 *0000000c00e95f0100582c09080000000000000c00f35f0100642c09080000000000000c00fd5f *0100642c09080000000000000c0006600100842c09080000000000000c0011600100b02c090800 *00000000000c001b600100b02c09080000000000000c0026600100bc2c09080000000000000c00 *30600100f02c09080000000000000c003a600100002d09080000000000000c0044600100002d09 *080000000000000c004f600100982d09080000000000000c0059600100982d0908000000000000 *0c0064600100482e09080000000000000c006e600100482e09080000000000000c007960010074 *2e09080000000000000c0084600100142f09080000000000000c008f600100302f090800000000 *00000c00996001003c2f09080000000000000c00a36001003c2f09080000000000000c00ac6001 *005c2f09080000000000000c00b7600100882f09080000000000000c00c1600100882f09080000 *000000000c00cc600100942f09080000000000000c00d6600100c82f09080000000000000c00e0 *600100d82f09080000000000000c00ea600100d82f09080000000000000c00f56001005c300908 *0000000000000c0000610100083109080000000000000c000a610100083109080000000000000c *0015610100443109080000000000000c001f610100783109080000000000000c00296101008831 *09080000000000000c0033610100883109080000000000000c003e6101000c3209080000000000 *000c0049610100a43209080000000000000c0054610100c03209080000000000000c005e610100 *cc3209080000000000000c0068610100cc3209080000000000000c0071610100ec320908000000 *0000000c007c610100183309080000000000000c0086610100183309080000000000000c009161 *0100243309080000000000000c009b610100583309080000000000000c00a56101006833090800 *00000000000c00af610100683309080000000000000c00ba610100fc3309080000000000000c00 *c4610100fc3309080000000000000c00cf610100a83409080000000000000c00d9610100a83409 *080000000000000c00e4610100d43409080000000000000c00ef6101006c350908000000000000 *0c00fa610100883509080000000000000c0004620100943509080000000000000c000e62010094 *3509080000000000000c0017620100b43509080000000000000c0022620100e035090800000000 *00000c002c620100e03509080000000000000c0037620100ec3509080000000000000c00416201 *00203609080000000000000c004b620100303609080000000000000c0055620100303609080000 *000000000c0060620100ac3609080000000000000c006b620100503709080000000000000c0075 *620100503709080000000000000c00806201008c3709080000000000000c008a620100c0370908 *0000000000000c0094620100d03709080000000000000c009e620100d03709080000000000000c *00a96201004c3809080000000000000c00b4620100dc3809080000000000000c00bf620100f838 *09080000000000000c00c9620100043909080000000000000c00d3620100043909080000000000 *000c00dc620100243909080000000000000c00e7620100503909080000000000000c00f1620100 *503909080000000000000c00fc6201005c3909080000000000000c000663010090390908000000 *0000000c0010630100a03909080000000000000c001a630100a03909080000000000000c002563 *01002c3a09080000000000000c002f6301002c3a09080000000000000c003a630100d03a090800 *00000000000c0044630100d03a09080000000000000c004f630100fc3a09080000000000000c00 *5a630100903b09080000000000000c0065630100ac3b09080000000000000c006f630100b83b09 *080000000000000c0079630100b83b09080000000000000c0082630100d83b0908000000000000 *0c008d630100043c09080000000000000c0097630100043c09080000000000000c00a263010010 *3c09080000000000000c00ac630100443c09080000000000000c00b6630100543c090800000000 *00000c00c0630100543c09080000000000000c00cb630100cc3c09080000000000000c00d66301 *006c3d09080000000000000c00e06301006c3d09080000000000000c00eb630100a83d09080000 *000000000c00f5630100dc3d09080000000000000c00ff630100ec3d09080000000000000c0009 *640100ec3d09080000000000000c0014640100643e09080000000000000c001f640100f03e0908 *0000000000000c002a6401000c3f09080000000000000c0034640100183f09080000000000000c *003e640100183f09080000000000000c0047640100383f09080000000000000c0052640100643f *09080000000000000c005c640100643f09080000000000000c0067640100703f09080000000000 *000c0071640100a43f09080000000000000c007b640100b43f09080000000000000c0085640100 *b43f09080000000000000c00906401003c4009080000000000000c009a6401003c400908000000 *0000000c00a5640100dc4009080000000000000c00af640100dc4009080000000000000c00ba64 *0100084109080000000000000c00c5640100944109080000000000000c00d0640100b041090800 *00000000000c00da640100bc4109080000000000000c00e4640100bc4109080000000000000c00 *ed640100dc4109080000000000000c00f8640100084209080000000000000c0002650100084209 *080000000000000c000d650100144209080000000000000c001765010048420908000000000000 *0c0021650100584209080000000000000c002b650100584209080000000000000c0036650100c8 *4209080000000000000c0041650100604309080000000000000c004b6501006043090800000000 *00000c00566501009c4309080000000000000c0060650100d04309080000000000000c006a6501 *00e04309080000000000000c0074650100e04309080000000000000c007f650100504409080000 *000000000c008a650100d44409080000000000000c0095650100f04409080000000000000c009f *650100fc4409080000000000000c00a9650100fc4409080000000000000c00b26501001c450908 *0000000000000c00bd650100484509080000000000000c00c7650100484509080000000000000c *00d2650100544509080000000000000c00dc650100884509080000000000000c00e66501009845 *09080000000000000c00f0650100984509080000000000000c00fb650100184609080000000000 *000c0005660100184609080000000000000c0010660100b04609080000000000000c001a660100 *b04609080000000000000c0025660100dc4609080000000000000c003066010064470908000000 *0000000c003b660100804709080000000000000c00456601008c4709080000000000000c004f66 *01008c4709080000000000000c0058660100ac4709080000000000000c0063660100d847090800 *00000000000c006d660100d84709080000000000000c0078660100e44709080000000000000c00 *82660100184809080000000000000c008c660100284809080000000000000c0096660100284809 *080000000000000c00a1660100944809080000000000000c00ac66010028490908000000000000 *0c00b6660100284909080000000000000c00c1660100644909080000000000000c00cb66010098 *4909080000000000000c00d5660100a84909080000000000000c00df660100a849090800000000 *00000c00ea660100144a09080000000000000c00f5660100944a09080000000000000c00006701 *00b04a09080000000000000c000a670100bc4a09080000000000000c0014670100bc4a09080000 *000000000c001d670100dc4a09080000000000000c0028670100084b09080000000000000c0032 *670100084b09080000000000000c003d670100144b09080000000000000c0047670100484b0908 *0000000000000c0051670100584b09080000000000000c005b670100584b09080000000000000c *0066670100d44b09080000000000000c0070670100d44b09080000000000000c007b670100684c *09080000000000000c0085670100684c09080000000000000c0090670100944c09080000000000 *000c009b670100144d09080000000000000c00a6670100304d09080000000000000c00b0670100 *3c4d09080000000000000c00ba6701003c4d09080000000000000c00c36701005c4d0908000000 *0000000c00ce670100884d09080000000000000c00d8670100884d09080000000000000c00e367 *0100944d09080000000000000c00ed670100c84d09080000000000000c00f7670100d84d090800 *00000000000c0001680100d84d09080000000000000c000c6801003c4e09080000000000000c00 *17680100c84e09080000000000000c0021680100c84e09080000000000000c002c680100044f09 *080000000000000c0036680100384f09080000000000000c0040680100484f0908000000000000 *0c004a680100484f09080000000000000c0055680100ac4f09080000000000000c006068010024 *5009080000000000000c006b680100405009080000000000000c00756801004c50090800000000 *00000c007f6801004c5009080000000000000c00886801006c5009080000000000000c00936801 *00985009080000000000000c009d680100985009080000000000000c00a8680100a45009080000 *000000000c00b2680100d85009080000000000000c00bc680100e85009080000000000000c00c6 *680100e85009080000000000000c00d16801005c5109080000000000000c00db6801005c510908 *0000000000000c00e6680100e85109080000000000000c00f0680100e85109080000000000000c *00fb680100145209080000000000000c0006690100905209080000000000000c0011690100ac52 *09080000000000000c001b690100b85209080000000000000c0025690100b85209080000000000 *000c002e690100d85209080000000000000c0039690100045309080000000000000c0043690100 *045309080000000000000c004e690100105309080000000000000c005869010044530908000000 *0000000c0062690100545309080000000000000c006c690100545309080000000000000c007769 *0100b45309080000000000000c00826901003c5409080000000000000c008c6901003c54090800 *00000000000c0097690100785409080000000000000c00a1690100ac5409080000000000000c00 *ab690100bc5409080000000000000c00b5690100bc5409080000000000000c00c06901001c5509 *080000000000000c00cb690100905509080000000000000c00d6690100ac550908000000000000 *0c00e0690100b85509080000000000000c00ea690100b85509080000000000000c00f3690100d8 *5509080000000000000c00fe690100045609080000000000000c00086a01000456090800000000 *00000c00136a0100105609080000000000000c001d6a0100445609080000000000000c00276a01 *00545609080000000000000c00316a0100545609080000000000000c003c6a0100c45609080000 *000000000c00466a0100c45609080000000000000c00516a01004c5709080000000000000c005b *6a01004c5709080000000000000c00666a0100785709080000000000000c00716a0100ec570908 *0000000000000c007c6a0100085809080000000000000c00866a0100145809080000000000000c *00906a0100145809080000000000000c00996a0100345809080000000000000c00a46a01006058 *09080000000000000c00ae6a0100605809080000000000000c00b96a01006c5809080000000000 *000c00c36a0100a05809080000000000000c00cd6a0100b05809080000000000000c00d76a0100 *b05809080000000000000c00e26a0100085909080000000000000c00ed6a010088590908000000 *0000000c00f76a0100885909080000000000000c00026b0100c45909080000000000000c000c6b *0100f85909080000000000000c00166b0100085a09080000000000000c00206b0100085a090800 *00000000000c002b6b0100605a09080000000000000c00366b0100cc5a09080000000000000c00 *416b0100e85a09080000000000000c004b6b0100f45a09080000000000000c00556b0100f45a09 *080000000000000c005e6b0100145b09080000000000000c00696b0100405b0908000000000000 *0c00736b0100405b09080000000000000c007e6b01004c5b09080000000000000c00886b010080 *5b09080000000000000c00926b0100905b09080000000000000c009c6b0100905b090800000000 *00000c00a76b0100f85b09080000000000000c00b16b0100f85b09080000000000000c00bc6b01 *00785c09080000000000000c00c66b0100785c09080000000000000c00d16b0100a45c09080000 *000000000c00dc6b0100145d09080000000000000c00e76b0100305d09080000000000000c00f1 *6b01003c5d09080000000000000c00fb6b01003c5d09080000000000000c00046c01005c5d0908 *0000000000000c000f6c0100885d09080000000000000c00196c0100885d09080000000000000c *00246c0100945d09080000000000000c002e6c0100c85d09080000000000000c00386c0100d85d *09080000000000000c00426c0100d85d09080000000000000c004d6c01002c5e09080000000000 *000c00586c0100a85e09080000000000000c00626c0100a85e09080000000000000c006d6c0100 *e45e09080000000000000c00776c0100185f09080000000000000c00816c0100285f0908000000 *0000000c008b6c0100285f09080000000000000c00966c01007c5f09080000000000000c00a16c *0100e45f09080000000000000c00ac6c0100006009080000000000000c00b66c01000c60090800 *00000000000c00c06c01000c6009080000000000000c00c96c01002c6009080000000000000c00 *d46c0100586009080000000000000c00de6c0100586009080000000000000c00e96c0100646009 *080000000000000c00f36c0100986009080000000000000c00fd6c0100a8600908000000000000 *0c00076d0100a86009080000000000000c00126d01000c6109080000000000000c001c6d01000c *6109080000000000000c00276d0100886109080000000000000c00316d01008861090800000000 *00000c003c6d0100b46109080000000000000c00476d01001c6209080000000000000c00526d01 *00386209080000000000000c005c6d0100446209080000000000000c00666d0100446209080000 *000000000c006f6d0100646209080000000000000c007a6d0100906209080000000000000c0084 *6d0100906209080000000000000c008f6d01009c6209080000000000000c00996d0100d0620908 *0000000000000c00a36d0100e06209080000000000000c00ad6d0100e06209080000000000000c *00b86d01002c6309080000000000000c00c36d0100a06309080000000000000c00cd6d0100a063 *09080000000000000c00d86d0100dc6309080000000000000c00e26d0100106409080000000000 *000c00ec6d0100206409080000000000000c00f66d0100206409080000000000000c00016e0100 *6c6409080000000000000c000c6e0100cc6409080000000000000c00176e0100e8640908000000 *0000000c00216e0100f46409080000000000000c002b6e0100f46409080000000000000c00346e *0100146509080000000000000c003f6e0100406509080000000000000c00496e01004065090800 *00000000000c00546e01004c6509080000000000000c005e6e0100806509080000000000000c00 *686e0100906509080000000000000c00726e0100906509080000000000000c007d6e0100ec6509 *080000000000000c00876e0100ec6509080000000000000c00926e010060660908000000000000 *0c009c6e0100606609080000000000000c00a76e01008c6609080000000000000c00b26e0100f0 *6609080000000000000c00bd6e01000c6709080000000000000c00c76e01001867090800000000 *00000c00d16e0100186709080000000000000c00da6e0100386709080000000000000c00e56e01 *00646709080000000000000c00ef6e0100646709080000000000000c00fa6e0100706709080000 *000000000c00046f0100a46709080000000000000c000e6f0100b46709080000000000000c0018 *6f0100b46709080000000000000c00236f0100fc6709080000000000000c002e6f01006c680908 *0000000000000c00386f01006c6809080000000000000c00436f0100a86809080000000000000c *004d6f0100dc6809080000000000000c00576f0100ec6809080000000000000c00616f0100ec68 *09080000000000000c006c6f0100346909080000000000000c00776f0100906909080000000000 *000c00826f0100ac6909080000000000000c008c6f0100b86909080000000000000c00966f0100 *b86909080000000000000c009f6f0100d86909080000000000000c00aa6f0100046a0908000000 *0000000c00b46f0100046a09080000000000000c00bf6f0100106a09080000000000000c00c96f *0100446a09080000000000000c00d36f0100546a09080000000000000c00dd6f0100546a090800 *00000000000c00e86f0100ac6a09080000000000000c00f26f0100ac6a09080000000000000c00 *fd6f01001c6b09080000000000000c00077001001c6b09080000000000000c0012700100486b09 *080000000000000c001d700100a46b09080000000000000c0028700100c06b0908000000000000 *0c0032700100cc6b09080000000000000c003c700100cc6b09080000000000000c0045700100ec *6b09080000000000000c0050700100186c09080000000000000c005a700100186c090800000000 *00000c0065700100246c09080000000000000c006f700100586c09080000000000000c00797001 *00686c09080000000000000c0083700100686c09080000000000000c008e700100a86c09080000 *000000000c0099700100106d09080000000000000c00a3700100106d09080000000000000c00ae *7001004c6d09080000000000000c00b8700100806d09080000000000000c00c2700100906d0908 *0000000000000c00cc700100906d09080000000000000c00d7700100d06d09080000000000000c *00e2700100246e09080000000000000c00ed700100406e09080000000000000c00f77001004c6e *09080000000000000c00017101004c6e09080000000000000c000a7101006c6e09080000000000 *000c0015710100986e09080000000000000c001f710100986e09080000000000000c002a710100 *a46e09080000000000000c0034710100d86e09080000000000000c003e710100e86e0908000000 *0000000c0048710100e86e09080000000000000c0053710100386f09080000000000000c005d71 *0100386f09080000000000000c0068710100a06f09080000000000000c0072710100a06f090800 *00000000000c007d710100cc6f09080000000000000c0088710100247009080000000000000c00 *93710100407009080000000000000c009d7101004c7009080000000000000c00a77101004c7009 *080000000000000c00b07101006c7009080000000000000c00bb71010098700908000000000000 *0c00c5710100987009080000000000000c00d0710100a47009080000000000000c00da710100d8 *7009080000000000000c00e4710100e87009080000000000000c00ee710100e870090800000000 *00000c00f9710100247109080000000000000c0004720100887109080000000000000c000e7201 *00887109080000000000000c0019720100c47109080000000000000c0023720100f87109080000 *000000000c002d720100087209080000000000000c0037720100087209080000000000000c0042 *720100447209080000000000000c004d720100947209080000000000000c0058720100b0720908 *0000000000000c0062720100bc7209080000000000000c006c720100bc7209080000000000000c *0075720100dc7209080000000000000c0080720100087309080000000000000c008a7201000873 *09080000000000000c0095720100147309080000000000000c009f720100487309080000000000 *000c00a9720100587309080000000000000c00b3720100587309080000000000000c00be720100 *a47309080000000000000c00c8720100a47309080000000000000c00d372010008740908000000 *0000000c00dd720100087409080000000000000c00e8720100347409080000000000000c00f372 *0100847409080000000000000c00fe720100a07409080000000000000c0008730100ac74090800 *00000000000c0012730100ac7409080000000000000c001b730100cc7409080000000000000c00 *26730100f87409080000000000000c0030730100f87409080000000000000c003b730100047509 *080000000000000c0045730100387509080000000000000c004f73010048750908000000000000 *0c0059730100487509080000000000000c00647301007c7509080000000000000c006f730100d8 *7509080000000000000c0079730100d87509080000000000000c00847301001476090800000000 *00000c008e730100487609080000000000000c0098730100587609080000000000000c00a27301 *00587609080000000000000c00ad7301008c7609080000000000000c00b8730100d47609080000 *000000000c00c3730100f07609080000000000000c00cd730100fc7609080000000000000c00d7 *730100fc7609080000000000000c00e07301001c7709080000000000000c00eb73010048770908 *0000000000000c00f5730100487709080000000000000c0000740100547709080000000000000c *000a740100887709080000000000000c0014740100987709080000000000000c001e7401009877 *09080000000000000c0029740100dc7709080000000000000c0033740100dc7709080000000000 *000c003e740100387809080000000000000c0048740100387809080000000000000c0053740100 *647809080000000000000c005e740100b07809080000000000000c0069740100cc780908000000 *0000000c0073740100d87809080000000000000c007d740100d87809080000000000000c008674 *0100f87809080000000000000c0091740100247909080000000000000c009b7401002479090800 *00000000000c00a6740100307909080000000000000c00b0740100647909080000000000000c00 *ba740100747909080000000000000c00c4740100747909080000000000000c00cf740100a47909 *080000000000000c00da740100fc7909080000000000000c00e4740100fc790908000000000000 *0c00ef740100387a09080000000000000c00f97401006c7a09080000000000000c00037501007c *7a09080000000000000c000d7501007c7a09080000000000000c0018750100ac7a090800000000 *00000c0023750100f07a09080000000000000c002e7501000c7b09080000000000000c00387501 *00187b09080000000000000c0042750100187b09080000000000000c004b750100387b09080000 *000000000c0056750100647b09080000000000000c0060750100647b09080000000000000c006b *750100707b09080000000000000c0075750100a47b09080000000000000c007f750100b47b0908 *0000000000000c0089750100b47b09080000000000000c0094750100e47b09080000000000000c *009f7501003c7c09080000000000000c00a97501003c7c09080000000000000c00b4750100787c *09080000000000000c00be750100ac7c09080000000000000c00c8750100bc7c09080000000000 *000c00d2750100bc7c09080000000000000c00dd750100f87c09080000000000000c00e7750100 *f87c09080000000000000c00f0750100487d09080000000000000c00fa750100487d0908000000 *0000000c00057601007c7d09080000000000000c0010760100e07d09080000000000000c001976 *01006cc21108000000000000100026760100f47d09080000000000000c0030760100f47d090800 *00000000000c003b7601004c7e09080000000000000c0044760100547e09080000000000000c00 *4d7601005c7e09080000000000000c005676010094c21108000000000000100063760100a4c211 *08000000000000100070760100b4c2110800000000000010007d760100707e0908000000000000 *0c0087760100707e09080000000000000c0092760100d47e09080000000000000c009c760100d4 *7e09080000000000000c00a7760100387f09080000000000000c00b1760100387f090800000000 *00000c00bc760100907f09080000000000000c00c5760100d8c211080000000000001000d27601 *00a47f09080000000000000c00dc760100a47f09080000000000000c00e7760100fc7f09080000 *000000000c00f0760100e8c211080000000000001000fd760100108009080000000000000c0007 *770100108009080000000000000c0012770100688009080000000000000c001b770100f8c21108 *00000000000010002877010080b209080000000000000c0032770100a48009080000000000000c *003c770100a48009080000000000000c0047770100f88009080000000000000c0051770100f880 *09080000000000000c005a770100188109080000000000000c0064770100188109080000000000 *000c006f770100508109080000000000000c0079770100508109080000000000000c0084770100 *b08109080000000000000c008e770100b08109080000000000000c0099770100ec810908000000 *0000000c00a3770100ec8109080000000000000c00ae770100388209080000000000000c00b877 *0100388209080000000000000c00c3770100988209080000000000000c00cd7701009882090800 *00000000000c00d8770100d48209080000000000000c00e2770100d48209080000000000000c00 *ed770100208309080000000000000c00f7770100208309080000000000000c00027801007c8309 *080000000000000c000c7801007c8309080000000000000c00157801009c830908000000000000 *0c001f7801009c8309080000000000000c002a780100d48309080000000000000c0034780100d4 *8309080000000000000c003f780100388409080000000000000c00497801003884090800000000 *00000c0054780100748409080000000000000c005e780100748409080000000000000c00697801 *00c08409080000000000000c0073780100c08409080000000000000c007e780100248509080000 *000000000c0088780100248509080000000000000c0093780100608509080000000000000c009d *780100608509080000000000000c00a8780100ac8509080000000000000c00b2780100ac850908 *0000000000000c00bd7801000c8609080000000000000c00c77801000c8609080000000000000c *00d07801002c8609080000000000000c00da7801002c8609080000000000000c00e57801006486 *09080000000000000c00ef780100648609080000000000000c00fa780100d08609080000000000 *000c0004790100d08609080000000000000c000f7901000c8709080000000000000c0019790100 *0c8709080000000000000c0024790100588709080000000000000c002e79010058870908000000 *0000000c0039790100c48709080000000000000c0043790100c48709080000000000000c004e79 *0100008809080000000000000c0058790100008809080000000000000c00637901004c88090800 *00000000000c006d7901004c8809080000000000000c0078790100b48809080000000000000c00 *82790100b48809080000000000000c008b790100d48809080000000000000c0095790100d48809 *080000000000000c00a07901000c8909080000000000000c00aa7901000c890908000000000000 *0c00b57901007c8909080000000000000c00bf7901007c8909080000000000000c00ca790100b8 *8909080000000000000c00d4790100b88909080000000000000c00df790100048a090800000000 *00000c00e9790100048a09080000000000000c00f4790100748a09080000000000000c00fe7901 *00748a09080000000000000c00097a0100b08a09080000000000000c00137a0100b08a09080000 *000000000c001e7a0100fc8a09080000000000000c00287a0100fc8a09080000000000000c0033 *7a0100688b09080000000000000c003d7a0100688b09080000000000000c00467a0100888b0908 *0000000000000c00507a0100888b09080000000000000c005b7a0100c08b09080000000000000c *00657a0100c08b09080000000000000c00707a0100388c09080000000000000c007a7a0100388c *09080000000000000c00857a0100748c09080000000000000c008f7a0100748c09080000000000 *000c009a7a0100c08c09080000000000000c00a47a0100c08c09080000000000000c00af7a0100 *388d09080000000000000c00b97a0100388d09080000000000000c00c47a0100748d0908000000 *0000000c00ce7a0100748d09080000000000000c00d97a0100c08d09080000000000000c00e37a *0100c08d09080000000000000c00ee7a0100348e09080000000000000c00f87a0100348e090800 *00000000000c00017b0100548e09080000000000000c000b7b0100548e09080000000000000c00 *167b01008c8e09080000000000000c00207b01008c8e09080000000000000c002b7b0100088f09 *080000000000000c00357b0100088f09080000000000000c00407b0100448f0908000000000000 *0c004a7b0100448f09080000000000000c00557b0100908f09080000000000000c005f7b010090 *8f09080000000000000c006a7b01000c9009080000000000000c00747b01000c90090800000000 *00000c007f7b0100489009080000000000000c00897b0100489009080000000000000c00947b01 *00949009080000000000000c009e7b0100949009080000000000000c00a97b01000c9109080000 *000000000c00b37b01000c9109080000000000000c00bc7b01002c9109080000000000000c00c6 *7b01002c9109080000000000000c00d17b0100649109080000000000000c00db7b010064910908 *0000000000000c00e67b0100e89109080000000000000c00f07b0100e89109080000000000000c *00fb7b0100249209080000000000000c00057c0100249209080000000000000c00107c01007092 *09080000000000000c001a7c0100709209080000000000000c00257c0100f49209080000000000 *000c002f7c0100f49209080000000000000c003a7c0100309309080000000000000c00447c0100 *309309080000000000000c004f7c01007c9309080000000000000c00597c01007c930908000000 *0000000c00647c0100fc9309080000000000000c006e7c0100fc9309080000000000000c00777c *01001c9409080000000000000c00817c01001c9409080000000000000c008c7c01005494090800 *00000000000c00967c0100549409080000000000000c00a17c0100dc9409080000000000000c00 *ab7c0100dc9409080000000000000c00b67c0100189509080000000000000c00c07c0100189509 *080000000000000c00cb7c0100649509080000000000000c00d57c010064950908000000000000 *0c00e07c0100ec9509080000000000000c00ea7c0100ec9509080000000000000c00f57c010028 *9609080000000000000c00ff7c0100289609080000000000000c000a7d01007496090800000000 *00000c00147d0100749609080000000000000c001f7d0100f89609080000000000000c00297d01 *00f89609080000000000000c00327d0100189709080000000000000c003c7d0100189709080000 *000000000c00477d0100509709080000000000000c00517d0100509709080000000000000c005c *7d0100e09709080000000000000c00667d0100e09709080000000000000c00717d01001c980908 *0000000000000c007b7d01001c9809080000000000000c00867d0100689809080000000000000c *00907d0100689809080000000000000c009b7d0100f89809080000000000000c00a57d0100f898 *09080000000000000c00b07d0100349909080000000000000c00ba7d0100349909080000000000 *000c00c57d0100809909080000000000000c00cf7d0100809909080000000000000c00da7d0100 *0c9a09080000000000000c00e47d01000c9a09080000000000000c00ed7d01002c9a0908000000 *0000000c00f77d01002c9a09080000000000000c00027e0100649a09080000000000000c000c7e *0100649a09080000000000000c00177e0100f89a09080000000000000c00217e0100f89a090800 *00000000000c002c7e0100349b09080000000000000c00367e0100349b09080000000000000c00 *417e0100809b09080000000000000c004b7e0100809b09080000000000000c00567e0100149c09 *080000000000000c00607e0100149c09080000000000000c006b7e0100509c0908000000000000 *0c00757e0100509c09080000000000000c00807e01009c9c09080000000000000c008a7e01009c *9c09080000000000000c00957e01002c9d09080000000000000c009f7e01002c9d090800000000 *00000c00a87e01004c9d09080000000000000c00b27e01004c9d09080000000000000c00bd7e01 *00849d09080000000000000c00c77e0100849d09080000000000000c00d27e0100209e09080000 *000000000c00dc7e0100209e09080000000000000c00e77e01005c9e09080000000000000c00f1 *7e01005c9e09080000000000000c00fc7e0100a89e09080000000000000c00067f0100a89e0908 *0000000000000c00117f0100449f09080000000000000c001b7f0100449f09080000000000000c *00267f0100809f09080000000000000c00307f0100809f09080000000000000c003b7f0100cc9f *09080000000000000c00457f0100cc9f09080000000000000c00507f010064a009080000000000 *000c005a7f010064a009080000000000000c00637f010084a009080000000000000c006d7f0100 *84a009080000000000000c00787f0100bca009080000000000000c00827f0100bca00908000000 *0000000c008d7f01005ca109080000000000000c00977f01005ca109080000000000000c00a27f *010098a109080000000000000c00ac7f010098a109080000000000000c00b77f0100e4a1090800 *00000000000c00c17f0100e4a109080000000000000c00cc7f010084a209080000000000000c00 *d67f010084a209080000000000000c00e17f0100c0a209080000000000000c00eb7f0100c0a209 *080000000000000c00f67f01000ca309080000000000000c00008001000ca30908000000000000 *0c000b800100a8a309080000000000000c0015800100a8a309080000000000000c001e800100c8 *a309080000000000000c0028800100c8a309080000000000000c003380010000a4090800000000 *00000c003d80010000a409080000000000000c0048800100a8a409080000000000000c00528001 *00a8a409080000000000000c005d800100e4a409080000000000000c0067800100e4a409080000 *000000000c007280010030a509080000000000000c007c80010030a509080000000000000c0087 *800100d8a509080000000000000c0091800100d8a509080000000000000c009c80010014a60908 *0000000000000c00a680010014a609080000000000000c00b180010060a609080000000000000c *00bb80010060a609080000000000000c00c680010004a709080000000000000c00d080010004a7 *09080000000000000c00d980010024a709080000000000000c00e380010024a709080000000000 *000c00ee8001005ca709080000000000000c00f88001005ca709080000000000000c0003810100 *08a809080000000000000c000d81010008a809080000000000000c001881010044a80908000000 *0000000c002281010044a809080000000000000c002d81010090a809080000000000000c003781 *010090a809080000000000000c00428101003ca909080000000000000c004c8101003ca9090800 *00000000000c005781010078a909080000000000000c006181010078a909080000000000000c00 *6c810100c4a909080000000000000c0076810100c4a909080000000000000c00818101006caa09 *080000000000000c008b8101006caa09080000000000000c00948101008caa0908000000000000 *0c009e8101008caa09080000000000000c00a9810100c4aa09080000000000000c00b3810100c4 *aa09080000000000000c00be81010078ab09080000000000000c00c881010078ab090800000000 *00000c00d3810100b4ab09080000000000000c00dd810100b4ab09080000000000000c00e88101 *0000ac09080000000000000c00f281010000ac09080000000000000c00fd810100b4ac09080000 *000000000c0007820100b4ac09080000000000000c0012820100f0ac09080000000000000c001c *820100f0ac09080000000000000c00278201003cad09080000000000000c00318201003cad0908 *0000000000000c003c820100ecad09080000000000000c0046820100ecad09080000000000000c *004f8201000cae09080000000000000c00598201000cae09080000000000000c006482010044ae *09080000000000000c006e82010044ae09080000000000000c0079820100fcae09080000000000 *000c0083820100fcae09080000000000000c008e82010038af09080000000000000c0098820100 *38af09080000000000000c00a382010084af09080000000000000c00ad82010084af0908000000 *0000000c00b88201003cb009080000000000000c00c28201003cb009080000000000000c00cd82 *010078b009080000000000000c00d782010078b009080000000000000c00e2820100c4b0090800 *00000000000c00ec820100c4b009080000000000000c00f782010078b109080000000000000c00 *0183010078b109080000000000000c000a8301009cb109080000000000000c00148301009cb109 *080000000000000c001f830100d4b109080000000000000c0029830100d4b10908000000000000 *0c003283010080b209080000000000000c003d83010000c3110800000000000010004a830100a0 *b209080000000000000c005383010008c31108000000000000100060830100b4b2090800000000 *00000c006a830100b4b209080000000000000c00758301000cb309080000000000000c007e8301 *0018c3110800000000000010008b83010020b309080000000000000c009583010020b309080000 *000000000c00a083010078b309080000000000000c00a98301003cc311080000000000001000b6 *8301008cb309080000000000000c00c08301008cb309080000000000000c00cb830100ecb30908 *0000000000000c00d5830100ecb309080000000000000c00de83010014b409080000000000000c *00e883010014b409080000000000000c00f18301003cb409080000000000000c00fb8301003cb4 *09080000000000000c000484010064b409080000000000000c000e84010064b409080000000000 *000c00178401008cb409080000000000000c00218401008cb409080000000000000c002a840100 *b4b409080000000000000c0034840100b4b409080000000000000c003d840100dcb40908000000 *0000000c0047840100dcb409080000000000000c005084010004b509080000000000000c005a84 *010004b509080000000000000c00638401002cb509080000000000000c006d8401002cb5090800 *00000000000c007684010054b509080000000000000c008084010054b509080000000000000c00 *898401007cb509080000000000000c00938401007cb509080000000000000c009c840100a4b509 *080000000000000c00a6840100a4b509080000000000000c00af840100ccb50908000000000000 *0c00b9840100ccb509080000000000000c00c2840100f4b509080000000000000c00cc840100f4 *b509080000000000000c00d58401001cb609080000000000000c00df8401001cb6090800000000 *00000c00e884010044b609080000000000000c00f284010044b609080000000000000c00fb8401 *006cb609080000000000000c00058501006cb609080000000000000c000e85010094b609080000 *000000000c001885010094b609080000000000000c0021850100bcb609080000000000000c002b *850100bcb609080000000000000c0034850100e4b609080000000000000c003e850100e4b60908 *0000000000000c00478501000cb709080000000000000c00518501000cb709080000000000000c *005a85010034b709080000000000000c006485010034b709080000000000000c006d8501005cb7 *09080000000000000c00778501005cb709080000000000000c008085010084b709080000000000 *000c008a85010084b709080000000000000c0093850100acb709080000000000000c009d850100 *acb709080000000000000c00a6850100d4b709080000000000000c00b0850100d4b70908000000 *0000000c00b9850100fcb709080000000000000c00c3850100fcb709080000000000000c00cc85 *010024b809080000000000000c00d685010024b809080000000000000c00df8501004cb8090800 *00000000000c00e98501004cb809080000000000000c00f285010074b809080000000000000c00 *fc85010074b809080000000000000c00058601009cb809080000000000000c000f8601009cb809 *080000000000000c0018860100c4b809080000000000000c0022860100c4b80908000000000000 *0c002b860100ecb809080000000000000c0035860100ecb809080000000000000c003e86010014 *b909080000000000000c004886010014b909080000000000000c0051860100d4b9090800000000 *00000c005b860100d4b909080000000000000c00648601004cba09080000000000000c006e8601 *004cba09080000000000000c007786010074ba09080000000000000c008186010074ba09080000 *000000000c008a86010094ba09080000000000000c009486010094ba09080000000000000c009d *860100bcba09080000000000000c00a7860100bcba09080000000000000c00b0860100dcba0908 *0000000000000c00ba860100dcba09080000000000000c00c3860100fcba09080000000000000c *00cd860100fcba09080000000000000c00d686010024bb09080000000000000c00e086010024bb *09080000000000000c00e986010044bb09080000000000000c00f386010044bb09080000000000 *000c00fc8601006cbb09080000000000000c00068701006cbb09080000000000000c000f870100 *8cbb09080000000000000c00198701008cbb09080000000000000c0022870100acbb0908000000 *0000000c002c870100acbb09080000000000000c0035870100f4bb09080000000000000c003f87 *0100f4bb09080000000000000c004887010064bd09080000000000000c005287010064bd090800 *00000000000c005b870100b4bd09080000000000000c0065870100b4bd09080000000000000c00 *6e87010048be09080000000000000c007887010048be09080000000000000c008187010084be09 *080000000000000c008b87010084be09080000000000000c0094870100ccbe0908000000000000 *0c009e870100ccbe09080000000000000c00a7870100d8bf09080000000000000c00b1870100d8 *bf09080000000000000c00ba87010064c009080000000000000c00c487010064c0090800000000 *00000c00cd8701008cc009080000000000000c00d78701008cc009080000000000000c00e08701 *00acc009080000000000000c00ea870100acc009080000000000000c00f3870100d4c009080000 *000000000c00fd870100d4c009080000000000000c0006880100fcc009080000000000000c0010 *880100fcc009080000000000000c00198801001cc109080000000000000c00238801001cc10908 *0000000000000c002c8801003cc109080000000000000c00368801003cc109080000000000000c *003f88010064c109080000000000000c004988010064c109080000000000000c00528801008cc1 *09080000000000000c005c8801008cc109080000000000000c0065880100acc109080000000000 *000c006f880100acc109080000000000000c0078880100d4c109080000000000000c0082880100 *d4c109080000000000000c008b880100fcc109080000000000000c0095880100fcc10908000000 *0000000c009e8801001cc209080000000000000c00a88801001cc209080000000000000c00b188 *01003cc209080000000000000c00bb8801003cc209080000000000000c00c488010084c2090800 *00000000000c00ce88010084c209080000000000000c00d7880100e4c409080000000000000c00 *e1880100e4c409080000000000000c00ec88010044c509080000000000000c00f688010044c509 *080000000000000c000189010094c509080000000000000c000b89010094c50908000000000000 *0c0014890100d4c509080000000000000c001e890100d4c509080000000000000c0029890100fc *c509080000000000000c0033890100fcc509080000000000000c003e89010038c6090800000000 *00000c004889010038c609080000000000000c005389010070c609080000000000000c005d8901 *0070c609080000000000000c0068890100c8c609080000000000000c0072890100c8c609080000 *000000000c007b89010060c709080000000000000c008489010018c41108000000000000100091 *89010080c709080000000000000c009b8901006cc709080000000000000c00a58901006cc70908 *0000000000000c00ae89010080c709080000000000000c00b9890100d4c709080000000000000c *00c289010028c411080000000000001000cf890100e8c709080000000000000c00d9890100e8c7 *09080000000000000c00e489010040c809080000000000000c00ed89010038c411080000000000 *001000fa89010060c809080000000000000c00048a01004cc809080000000000000c000e8a0100 *4cc809080000000000000c00178a010060c809080000000000000c00228a0100b4c80908000000 *0000000c002b8a010048c411080000000000001000388a0100c8c809080000000000000c00428a *0100c8c809080000000000000c004d8a010020c909080000000000000c00568a010058c4110800 *00000000001000638a010034c909080000000000000c006d8a010034c909080000000000000c00 *788a0100a8c909080000000000000c00828a0100a8c909080000000000000c008b8a0100f0c909 *080000000000000c00958a0100f0c909080000000000000c00a08a01001cca0908000000000000 *0c00aa8a01001cca09080000000000000c00b38a010060ca09080000000000000c00bd8a010060 *ca09080000000000000c00c88a010094ca09080000000000000c00d28a010094ca090800000000 *00000c00dd8a0100ccca09080000000000000c00e78a0100ccca09080000000000000c00f08a01 *000ccb09080000000000000c00fa8a01000ccb09080000000000000c00058b010040cb09080000 *000000000c000f8b010040cb09080000000000000c001a8b010098cb09080000000000000c0024 *8b010098cb09080000000000000c002d8b0100e8cb09080000000000000c00378b0100e8cb0908 *0000000000000c00428b010010cc09080000000000000c004c8b010010cc09080000000000000c *00558b0100a4cc09080000000000000c005e8b010078c4110800000000000010006b8b0100b8cc *09080000000000000c00758b0100b8cc09080000000000000c00808b010010cd09080000000000 *000c00898b010088c411080000000000001000968b01006cce09080000000000000c00a08b0100 *24cd09080000000000000c00aa8b010024cd09080000000000000c00b38b010044cd0908000000 *0000000c00bd8b010044cd09080000000000000c00c88b010080cd09080000000000000c00d28b *010080cd09080000000000000c00db8b0100a0cd09080000000000000c00e58b0100a0cd090800 *00000000000c00f08b0100e0cd09080000000000000c00fa8b0100e0cd09080000000000000c00 *038c01003cce09080000000000000c000d8c01003cce09080000000000000c00168c01006cce09 *080000000000000c00218c010088ce09080000000000000c002a8c010090c41108000000000000 *1000378c0100d4ce09080000000000000c00418c01009cce09080000000000000c004b8c01009c *ce09080000000000000c00568c0100d4ce09080000000000000c00618c010010cf090800000000 *00000c006a8c0100a8c411080000000000001000778c010054d509080000000000000c00818c01 *0038cf09080000000000000c008b8c010038cf09080000000000000c00968c01008ccf09080000 *000000000c00a08c01008ccf09080000000000000c00a98c0100accf09080000000000000c00b3 *8c0100accf09080000000000000c00be8c0100e4cf09080000000000000c00c88c0100e4cf0908 *0000000000000c00d38c010044d009080000000000000c00dd8c010044d009080000000000000c *00e88c010080d009080000000000000c00f28c010080d009080000000000000c00fd8c0100ccd0 *09080000000000000c00078d0100ccd009080000000000000c00128d01002cd109080000000000 *000c001c8d01002cd109080000000000000c00278d010068d109080000000000000c00318d0100 *68d109080000000000000c003c8d0100b4d109080000000000000c00468d0100b4d10908000000 *0000000c00518d010010d209080000000000000c005b8d010010d209080000000000000c00648d *010030d209080000000000000c006e8d010030d209080000000000000c00798d010068d2090800 *00000000000c00838d010068d209080000000000000c008e8d0100ccd209080000000000000c00 *988d0100ccd209080000000000000c00a38d010008d309080000000000000c00ad8d010008d309 *080000000000000c00b88d010054d309080000000000000c00c28d010054d30908000000000000 *0c00cd8d0100b8d309080000000000000c00d78d0100b8d309080000000000000c00e28d0100f4 *d309080000000000000c00ec8d0100f4d309080000000000000c00f78d010040d4090800000000 *00000c00018e010040d409080000000000000c000c8e0100a0d409080000000000000c00168e01 *00a0d409080000000000000c001f8e0100c4d409080000000000000c00298e0100c4d409080000 *000000000c00348e0100fcd409080000000000000c003e8e0100fcd409080000000000000c0047 *8e010054d509080000000000000c00528e0100b0c4110800000000000010005f8e010074d50908 *0000000000000c00688e0100b8c411080000000000001000758e010088d509080000000000000c *007f8e010088d509080000000000000c008a8e0100e0d509080000000000000c00938e0100c8c4 *11080000000000001000a08e0100f4d509080000000000000c00aa8e0100f4d509080000000000 *000c00b58e01004cd609080000000000000c00be8e0100d8c411080000000000001000cb8e0100 *b0e609080000000000000c00d58e010078d609080000000000000c00df8e010078d60908000000 *0000000c00ea8e0100b4d609080000000000000c00f48e0100b4d609080000000000000c00fd8e *010000d709080000000000000c00078f010000d709080000000000000c00128f010030d7090800 *00000000000c001d8f010044d709080000000000000c00278f010044d709080000000000000c00 *328f010080d709080000000000000c003c8f010080d709080000000000000c00458f0100c0d709 *080000000000000c00508f0100d4d709080000000000000c005a8f0100d4d70908000000000000 *0c00658f010010d809080000000000000c006f8f010010d809080000000000000c00788f01005c *d809080000000000000c00828f01005cd809080000000000000c008d8f01008cd8090800000000 *00000c00988f0100a0d809080000000000000c00a28f0100a0d809080000000000000c00ad8f01 *00dcd809080000000000000c00b78f0100dcd809080000000000000c00c08f01001cd909080000 *000000000c00cb8f010030d909080000000000000c00d58f010030d909080000000000000c00e0 *8f01006cd909080000000000000c00ea8f01006cd909080000000000000c00f38f0100acd90908 *0000000000000c00fe8f0100c0d909080000000000000c0008900100c0d909080000000000000c *0013900100fcd909080000000000000c001d900100fcd909080000000000000c002690010048da *09080000000000000c003090010048da09080000000000000c003b90010078da09080000000000 *000c00469001008cda09080000000000000c00509001008cda09080000000000000c005b900100 *c8da09080000000000000c0065900100c8da09080000000000000c006e90010008db0908000000 *0000000c00799001001cdb09080000000000000c00839001001cdb09080000000000000c008e90 *010058db09080000000000000c009890010058db09080000000000000c00a190010098db090800 *00000000000c00ac900100a0db09080000000000000c00b7900100d8db09080000000000000c00 *c2900100f4db09080000000000000c00cc90010000dc09080000000000000c00d690010000dc09 *080000000000000c00df90010020dc09080000000000000c00ea9001004cdc0908000000000000 *0c00f49001004cdc09080000000000000c00ff90010058dc09080000000000000c00099101008c *dc09080000000000000c00139101009cdc09080000000000000c001d9101009cdc090800000000 *00000c0028910100e0dc09080000000000000c0032910100e0dc09080000000000000c003d9101 *003cdd09080000000000000c00479101003cdd09080000000000000c005291010068dd09080000 *000000000c005d910100b8dd09080000000000000c0068910100d4dd09080000000000000c0072 *910100e0dd09080000000000000c007c910100e0dd09080000000000000c008591010000de0908 *0000000000000c00909101002cde09080000000000000c009a9101002cde09080000000000000c *00a591010038de09080000000000000c00af9101006cde09080000000000000c00b99101007cde *09080000000000000c00c39101007cde09080000000000000c00ce910100b0de09080000000000 *000c00d99101000cdf09080000000000000c00e39101000cdf09080000000000000c00ee910100 *48df09080000000000000c00f89101007cdf09080000000000000c00029201008cdf0908000000 *0000000c000c9201008cdf09080000000000000c0017920100c0df09080000000000000c002292 *010008e009080000000000000c002d92010024e009080000000000000c003792010030e0090800 *00000000000c004192010030e009080000000000000c004a92010050e009080000000000000c00 *559201007ce009080000000000000c005f9201007ce009080000000000000c006a92010088e009 *080000000000000c0074920100bce009080000000000000c007e920100cce00908000000000000 *0c0088920100cce009080000000000000c009392010010e109080000000000000c009d92010010 *e109080000000000000c00a89201006ce109080000000000000c00b29201006ce1090800000000 *00000c00bd92010098e109080000000000000c00c8920100e4e109080000000000000c00d39201 *0000e209080000000000000c00dd9201000ce209080000000000000c00e79201000ce209080000 *000000000c00f09201002ce209080000000000000c00fb92010058e209080000000000000c0005 *93010058e209080000000000000c001093010064e209080000000000000c001a93010098e20908 *0000000000000c0024930100a8e209080000000000000c002e930100a8e209080000000000000c *0039930100d8e209080000000000000c004493010030e309080000000000000c004e93010030e3 *09080000000000000c00599301006ce309080000000000000c0063930100a0e309080000000000 *000c006d930100b0e309080000000000000c0077930100b0e309080000000000000c0082930100 *e0e309080000000000000c008d93010024e409080000000000000c009893010040e40908000000 *0000000c00a29301004ce409080000000000000c00ac9301004ce409080000000000000c00b593 *01006ce409080000000000000c00c093010098e409080000000000000c00ca93010098e4090800 *00000000000c00d5930100a4e409080000000000000c00df930100d8e409080000000000000c00 *e9930100e8e409080000000000000c00f3930100e8e409080000000000000c00fe93010018e509 *080000000000000c000994010070e509080000000000000c001394010070e50908000000000000 *0c001e940100ace509080000000000000c0028940100e0e509080000000000000c0032940100f0 *e509080000000000000c003c940100f0e509080000000000000c00479401002ce6090800000000 *00000c00519401002ce609080000000000000c005a9401007ce609080000000000000c00649401 *007ce609080000000000000c006f940100b0e609080000000000000c007a94010014e709080000 *000000000c0083940100e8c4110800000000000010009094010028e709080000000000000c009a *94010028e709080000000000000c00a594010088e709080000000000000c00b09401009ce70908 *0000000000000c00ba9401009ce709080000000000000c00c5940100c4e709080000000000000c *00d094010020e809080000000000000c00da9401002ce809080000000000000c00e49401002ce8 *09080000000000000c00ed9401004ce809080000000000000c00f79401004ce809080000000000 *000c000095010090e809080000000000000c000995010000c51108000000000000100016950100 *14c51108000000000000100023950100a4e809080000000000000c002d950100a4e80908000000 *0000000c00389501005ce909080000000000000c004195010034c5110800000000000010004e95 *010064e909080000000000000c00579501006ce909080000000000000c00609501004cc5110800 *000000000010006d9501005cc5110800000000000010007a9501006cc511080000000000001000 *8795010080e909080000000000000c009195010080e909080000000000000c009c950100e4e909 *080000000000000c00a6950100e4e909080000000000000c00b195010048ea0908000000000000 *0c00bb95010048ea09080000000000000c00c695010008eb09080000000000000c00d095010008 *eb09080000000000000c00d995010030eb09080000000000000c00e395010030eb090800000000 *00000c00ec95010098eb09080000000000000c00f695010098eb09080000000000000c00ff9501 *00e8eb09080000000000000c0009960100e8eb09080000000000000c00cd89000090ec09080000 *000000000c00d789000090ec09080000000000000c0012960100dcec09080000000000000c001c *960100dcec09080000000000000c002796010038ed09080000000000000c003196010038ed0908 *0000000000000c003a960100b4ed09080000000000000c0044960100b4ed09080000000000000c *004f960100e8ed09080000000000000c0059960100e8ed09080000000000000c0017bb000028ee *09080000000000000c0021bb000028ee09080000000000000c0064960100bcc511080000000000 *00100071960100b0f009080000000000000c007b9601003cef09080000000000000c0086960100 *4cef09080000000000000c009196010088f009080000000000000c009c9601009cef0908000000 *0000000c00a69601009cef09080000000000000c00b1960100b0ef09080000000000000c00bc96 *0100e8ef09080000000000000c00c7960100f8ef09080000000000000c00d296010054f0090800 *00000000000c00dd9601007cf009080000000000000c00e796010088f009080000000000000c00 *f1960100b0f009080000000000000c00fc9601000cf109080000000000000c00079701001cf109 *080000000000000c0012970100acf209080000000000000c001d97010028f10908000000000000 *0c002897010080f109080000000000000c00329701008cf109080000000000000c003c9701008c *f109080000000000000c0047970100c4f109080000000000000c0051970100c4f1090800000000 *00000c0041bb000020f209080000000000000c005c97010020f209080000000000000c00659701 *0070f209080000000000000c00709701009cf209080000000000000c007a970100acf209080000 *000000000c0084970100d4f209080000000000000c008f970100e4f209080000000000000c009a *97010020f309080000000000000c00a497010030f309080000000000000c00ae97010030f30908 *0000000000000c00b9970100d8f309080000000000000c00c2970100d4c5110800000000000010 *00cf97010020f409080000000000000c00d9970100e4f309080000000000000c00e3970100e4f3 *09080000000000000c00ec97010020f409080000000000000c00f79701009cf409080000000000 *000c00019801009cf409080000000000000c000c980100b8f409080000000000000c0016980100 *b8f409080000000000000c0021980100f8f409080000000000000c002b980100f8f40908000000 *0000000c00369801001cf909080000000000000c00419801003cf509080000000000000c004c98 *01008cf509080000000000000c00569801008cf509080000000000000c0061980100d0f5090800 *00000000000c006c98010014f609080000000000000c00779801002cf609080000000000000c00 *819801002cf609080000000000000c008a98010080f609080000000000000c0095980100a0f609 *080000000000000c00a0980100b0f609080000000000000c00ab98010040f80908000000000000 *0c00b6980100bcf609080000000000000c00c198010014f709080000000000000c00cb98010020 *f709080000000000000c00d598010020f709080000000000000c00e098010058f7090800000000 *00000c00ea98010058f709080000000000000c0086ba0000b4f709080000000000000c00f59801 *00b4f709080000000000000c00fe98010004f809080000000000000c000999010030f809080000 *000000000c001399010040f809080000000000000c001d99010068f809080000000000000c0028 *99010078f809080000000000000c0033990100b4f809080000000000000c003d990100b4f80908 *0000000000000c00489901000cf909080000000000000c00529901001cf909080000000000000c *008592000048f909080000000000000c008f92000048f909080000000000000c005c9901000cfa *09080000000000000c006799010058fa09080000000000000c007299010060fa09080000000000 *000c007d99010074fa09080000000000000c008799010074fa09080000000000000c0092990100 *b0fa09080000000000000c009c990100b0fa09080000000000000c00a799010010fb0908000000 *0000000c00b199010010fb09080000000000000c00bc99010054fb09080000000000000c00c799 *0100a0fb09080000000000000c00d1990100a0fb09080000000000000c00dc99010040050a0800 *00000000000c00e7990100e4fb09080000000000000c00f299010030fc09080000000000000c00 *fc99010030fc09080000000000000c00079a010088fc09080000000000000c00129a0100ecfc09 *080000000000000c001c9a0100ecfc09080000000000000c00279a010000fd0908000000000000 *0c00329a010024fd09080000000000000c003c9a010024fd09080000000000000c00479a010068 *fd09080000000000000c00529a0100ccfd09080000000000000c005c9a0100ccfd090800000000 *00000c00669a010000fe09080000000000000c00709a010000fe09080000000000000c007a9a01 *0034fe09080000000000000c00849a010040fe09080000000000000c008e9a010040fe09080000 *000000000c00979a010058fe09080000000000000c00a19a010058fe09080000000000000c00ac *9a0100b4fe09080000000000000c00b69a0100b4fe09080000000000000c00c19a010014ff0908 *0000000000000c00cb9a010014ff09080000000000000c00d69a010058ff09080000000000000c *00e19a010098ff09080000000000000c00eb9a0100c0ff09080000000000000c00f59a0100c0ff *09080000000000000c00009b0100e4ff09080000000000000c000a9b0100e4ff09080000000000 *000c00159b010020000a080000000000000c001f9b010020000a080000000000000c002a9b0100 *80000a080000000000000c00349b010080000a080000000000000c003f9b0100c4000a08000000 *0000000c004a9b01000c010a080000000000000c00549b01000c010a080000000000000c005f9b *010068010a080000000000000c00699b010068010a080000000000000c002c910000c8010a0800 *00000000000c0036910000c8010a080000000000000c00749b01000c020a080000000000000c00 *7f9b010058020a080000000000000c00899b010058020a080000000000000c00949b010088020a *080000000000000c009f9b0100e8020a080000000000000c00a99b0100e8020a08000000000000 *0c00b49b010000030a080000000000000c00be9b010028030a080000000000000c00c89b010028 *030a080000000000000c00d29b010058030a080000000000000c00dc9b010058030a0800000000 *00000c00e69b01008c030a080000000000000c00f09b01008c030a080000000000000c00fa9b01 *00bc030a080000000000000c00049c0100c8030a080000000000000c000e9c0100c8030a080000 *000000000c000c940000e0030a080000000000000c0016940000e0030a080000000000000c0017 *9c010038040a080000000000000c00229c01007c040a080000000000000c002c9c0100a4040a08 *0000000000000c00369c0100a4040a080000000000000c00419c0100bc040a080000000000000c *004c9c010008050a080000000000000c00569c010030050a080000000000000c00609c01004005 *0a080000000000000c006a9c0100ec050a080000000000000c00749c0100ec050a080000000000 *000c001a93000000060a080000000000000c002493000000060a080000000000000c0093bb0000 *38060a080000000000000c009dbb000038060a080000000000000c007d9c0100f4060a08000000 *0000000c00879c0100f4060a080000000000000c00909c01007c070a080000000000000c009b9c *010088070a080000000000000c00d2bb00009c070a080000000000000c00a69c01009c070a0800 *00000000000c00af9c0100fc070a080000000000000c00b99c0100fc070a080000000000000c00 *c49c010024080a080000000000000c00cf9c010078080a080000000000000c00d99c010078080a *080000000000000c00e49c0100a4080a080000000000000c00ee9c0100b4080a08000000000000 *0c00f89c0100b4080a080000000000000c00039d01005c090a080000000000000c000d9d01005c *090a080000000000000c000a96000098090a080000000000000c001496000098090a0800000000 *00000c00189d0100f4090a080000000000000c00229d0100f4090a080000000000000c007d9600 *009c0c0a080000000000000c002d9d01004c0a0a080000000000000c00389d01009c0a0a080000 *000000000c00429d01009c0a0a080000000000000c004d9d0100e00a0a080000000000000c0058 *9d0100240b0a080000000000000c00639d01003c0b0a080000000000000c006d9d01003c0b0a08 *0000000000000c00789d01006c0b0a080000000000000c00829d01006c0b0a080000000000000c *008d9d0100b80b0a080000000000000c00979d0100b80b0a080000000000000c00a09d01000c0c *0a080000000000000c00ab9d01002c0c0a080000000000000c00b59d0100500c0a080000000000 *000c00bf9d0100500c0a080000000000000c00ca9d01008c0c0a080000000000000c0073960000 *9c0c0a080000000000000c00d49d0100c80c0a080000000000000c00de9d0100c80c0a08000000 *0000000c00e99d01000c0d0a080000000000000c00f39d01000c0d0a080000000000000c00fe9d *0100540d0a080000000000000c00089e0100540d0a080000000000000c00119e01009c0d0a0800 *00000000000c001b9e01009c0d0a080000000000000c0077950000cc0d0a080000000000000c00 *81950000cc0d0a080000000000000c00fcbb0000200e0a080000000000000c0006bc0000200e0a *080000000000000c00269e0100c00e0a080000000000000c00309e0100c00e0a08000000000000 *0c000e9500004c0f0a080000000000000c00189500004c0f0a080000000000000c003b9e010068 *0f0a080000000000000c00459e0100680f0a080000000000000c00509e0100840f0a0800000000 *00000c005a9e0100840f0a080000000000000c00659e0100b40f0a080000000000000c006f9e01 *00b40f0a080000000000000c007a9e0100f80f0a080000000000000c00849e0100f80f0a080000 *000000000c008f9e0100bc100a080000000000000c00989e01004cc611080000000000001000a5 *9e010098130a080000000000000c00af9e0100d4100a080000000000000c00b99e0100d4100a08 *0000000000000c00c49e010008110a080000000000000c00ce9e010008110a080000000000000c *00d79e010028110a080000000000000c00e19e010028110a080000000000000c00ec9e01005811 *0a080000000000000c00f69e010058110a080000000000000c00ff9e0100b8110a080000000000 *000c00099f0100b8110a080000000000000c00149f0100f0110a080000000000000c001e9f0100 *f0110a080000000000000c0078bc00005c120a080000000000000c00299f01005c120a08000000 *0000000c00329f01007c120a080000000000000c003c9f01007c120a080000000000000c00479f *0100ac120a080000000000000c00519f0100ac120a080000000000000c005a9f01000c130a0800 *00000000000c00649f01000c130a080000000000000c006f9f010044130a080000000000000c00 *799f010044130a080000000000000c00849f010098130a080000000000000c008f9f010028140a *080000000000000c00999f010028140a080000000000000c00a29f01009c140a08000000000000 *0c00ac9f01009c140a080000000000000c00dab400001c150a080000000000000c00b59f01001c *150a080000000000000c00be9f010030150a080000000000000c00c89f010030150a0800000000 *00000c00d39f010060150a080000000000000c00dd9f010060150a080000000000000c00e69f01 *009c150a080000000000000c00f09f01009c150a080000000000000c00fb9f0100cc150a080000 *000000000c0005a00100cc150a080000000000000c007d99000008160a080000000000000c0087 *99000008160a080000000000000c000ea0010038160a080000000000000c0018a0010038160a08 *0000000000000c0023a001008c170a080000000000000c002ea0010090160a080000000000000c *0038a0010090160a080000000000000c0041a00100d8160a080000000000000c004ca00100f016 *0a080000000000000c0056a00100f0160a080000000000000c005fa0010004170a080000000000 *000c006aa001002c170a080000000000000c0082b5000038170a080000000000000c0074a00100 *38170a080000000000000c007da0010064170a080000000000000c0087a0010064170a08000000 *0000000c0090a001008c170a080000000000000c009aa00100c0170a080000000000000c00a4a0 *0100c0170a080000000000000c00ada00100fc170a080000000000000c00b7a00100fc170a0800 *00000000000c00c2a0010024180a080000000000000c00cda0010038180a080000000000000c00 *d7a0010038180a080000000000000c00e0a001004c180a080000000000000c00eaa001004c180a *080000000000000c00f5a0010080180a080000000000000c0000a10100941a0a08000000000000 *0c000ba10100e8180a080000000000000c0015a10100e8180a080000000000000c0020a10100fc *180a080000000000000c002ba1010034190a080000000000000c0072bd000048190a0800000000 *00000c0036a1010048190a080000000000000c003fa1010060190a080000000000000c0049a101 *0060190a080000000000000c0054a1010090190a080000000000000c005ea1010090190a080000 *000000000c0067a10100d8190a080000000000000c0072a10100f4190a080000000000000c007c *a10100f4190a080000000000000c0048bd00000c1a0a080000000000000c0052bd00000c1a0a08 *0000000000000c0085a10100301a0a080000000000000c0090a10100841a0a080000000000000c *009aa10100941a0a080000000000000c001b9d0000d81a0a080000000000000c00259d0000d81a *0a080000000000000c00a4a10100301b0a080000000000000c00aea10100301b0a080000000000 *000c0058b50000841b0a080000000000000c0062b50000841b0a080000000000000c00b7a10100 *701c0a080000000000000c005eb40000841c0a080000000000000c00c2a10100841c0a08000000 *0000000c00cba101008c1c0a080000000000000c00d6a10100b01c0a080000000000000c00e0a1 *0100c01c0a080000000000000c00eaa10100c01c0a080000000000000c00f5a10100f01c0a0800 *00000000000c00ffa10100f01c0a080000000000000c0008a20100601d0a080000000000000c00 *13a20100741d0a080000000000000c001da20100741d0a080000000000000c0026a201007c1d0a *080000000000000c0031a20100a01d0a080000000000000c003ba20100ac1d0a08000000000000 *0c0045a20100ac1d0a080000000000000c004ea20100dc1d0a080000000000000c0058a20100dc *1d0a080000000000000c004fb30000081e0a080000000000000c0063a20100081e0a0800000000 *00000c00b8b30000841e0a080000000000000c006ca20100841e0a080000000000000c0075a201 *00981e0a080000000000000c0080a20100a81e0a080000000000000c008ba20100b41e0a080000 *000000000c0096a20100c81e0a080000000000000c00a0a20100c81e0a080000000000000c00a9 *a201000c1f0a080000000000000c00b4a20100301f0a080000000000000c00bea201003c1f0a08 *0000000000000c00c8a201003c1f0a080000000000000c00d1a201005c1f0a080000000000000c *00dca20100901f0a080000000000000c00e6a20100901f0a080000000000000c00f1a20100c01f *0a080000000000000c00fba20100d01f0a080000000000000c0005a30100d01f0a080000000000 *000c0010a3010008200a080000000000000c001aa3010008200a080000000000000c0025a30100 *2c200a080000000000000c002fa301002c200a080000000000000c0038a30100cc200a08000000 *0000000c0042a30100cc200a080000000000000c004ba30100e0200a080000000000000c0056a3 *0100fc200a080000000000000c0060a30100fc200a080000000000000c0069a3010010210a0800 *00000000000c0074a301002c210a080000000000000c007ea301002c210a080000000000000c00 *87a3010074210a080000000000000c0091a3010074210a080000000000000c009ca30100a4210a *080000000000000c00a6a30100a4210a080000000000000c00afa30100f8210a08000000000000 *0c00b9a30100f8210a080000000000000c00c4a301003c220a080000000000000c00cea301003c *220a080000000000000c00d7a3010080220a080000000000000c00e2a30100a4220a0800000000 *00000c00eca30100a4220a080000000000000c00f7a30100e0220a080000000000000c0001a401 *00f0220a080000000000000c000ba40100f0220a080000000000000c0016a4010024230a080000 *000000000c0020a4010024230a080000000000000c002ba401006c230a080000000000000c0035 *a401006c230a080000000000000c0040a401008c230a080000000000000c004aa401008c230a08 *0000000000000c0053a4010020240a080000000000000c005ea4010034240a080000000000000c *0068a4010034240a080000000000000c0071a401007c240a080000000000000c007ba401007c24 *0a080000000000000c0086a40100ac240a080000000000000c0090a40100ac240a080000000000 *000c009ba40100dc240a080000000000000c00a5a40100dc240a080000000000000c00aea40100 *1c250a080000000000000c00b9a4010040250a080000000000000c00c3a4010050250a08000000 *0000000c00cda4010050250a080000000000000c00d8a4010088250a080000000000000c00e2a4 *010088250a080000000000000c00eba4010004260a080000000000000c00f5a4010004260a0800 *00000000000c00fea4010018260a080000000000000c0009a5010034260a080000000000000c00 *13a5010034260a080000000000000c001ca5010048260a080000000000000c0027a5010064260a *080000000000000c0031a5010064260a080000000000000c003aa50100a0260a08000000000000 *0c0045a50100c4260a080000000000000c004fa50100c4260a080000000000000c005aa50100f8 *260a080000000000000c0064a5010008270a080000000000000c006ea5010008270a0800000000 *00000c0079a5010034270a080000000000000c0083a5010034270a080000000000000c008ea501 *0078270a080000000000000c0098a5010078270a080000000000000c00a3a5010098270a080000 *000000000c00ada5010098270a080000000000000c00b6a5010050280a080000000000000c00c0 *a5010050280a080000000000000c00c9a5010064280a080000000000000c00d3a5010064280a08 *0000000000000c00dea5010098280a080000000000000c00e8a5010098280a080000000000000c *00f1a50100f8280a080000000000000c00fba50100f8280a080000000000000c0006a601008029 *0a080000000000000c0010a6010080290a080000000000000c0019a60100a0290a080000000000 *000c0023a60100a0290a080000000000000c002ea60100d4290a080000000000000c0038a60100 *d4290a080000000000000c0041a60100102a0a080000000000000c004ba60100102a0a08000000 *0000000c0056a60100442a0a080000000000000c0060a60100442a0a080000000000000c0069a6 *0100642a0a080000000000000c0073a60100642a0a080000000000000c007ea60100942a0a0800 *00000000000c0088a60100942a0a080000000000000c0091a60100f42a0a080000000000000c00 *9ba60100f42a0a080000000000000c00a6a60100842b0a080000000000000c00b0a60100842b0a *080000000000000c00b9a60100a42b0a080000000000000c00c3a60100a42b0a08000000000000 *0c00cea60100d42b0a080000000000000c00d8a60100d42b0a080000000000000c00e1a60100e8 *2b0a080000000000000c00eba60100e82b0a080000000000000c00f6a60100202c0a0800000000 *00000c0000a70100202c0a080000000000000c0009a70100a82c0a080000000000000c0013a701 *00a82c0a080000000000000c001ea70100d82c0a080000000000000c0028a70100d82c0a080000 *000000000c0031a701005c2d0a080000000000000c003ba701005c2d0a080000000000000c0046 *a70100902d0a080000000000000c0050a70100902d0a080000000000000c0059a70100a42d0a08 *0000000000000c0063a70100a42d0a080000000000000c006ea70100e42d0a080000000000000c *0078a70100e42d0a080000000000000c0081a70100282e0a080000000000000c008ba70100282e *0a080000000000000c005faf00006c2e0a080000000000000c0069af00006c2e0a080000000000 *000c0096a70100382f0a080000000000000c00a0a70100382f0a080000000000000c00f4ad0000 *702f0a080000000000000c00aba70100702f0a080000000000000c00b4a70100902f0a08000000 *0000000c00bea70100902f0a080000000000000c00ceae0000c02f0a080000000000000c00c9a7 *0100c02f0a080000000000000c00d2a7010020300a080000000000000c00dca7010020300a0800 *00000000000c0063ad0000b4300a080000000000000c00e7a70100b4300a080000000000000c00 *f0a70100c8300a080000000000000c00faa70100c8300a080000000000000c0089ac000000310a *080000000000000c0005a8010000310a080000000000000c000ea8010040310a08000000000000 *0c0018a8010040310a080000000000000c0023a8010070310a080000000000000c002da8010070 *310a080000000000000c0036a80100b0310a080000000000000c0040a80100b0310a0800000000 *00000c004ba80100f0310a080000000000000c0055a80100f0310a080000000000000c005ea801 *006c320a080000000000000c0068a801006c320a080000000000000c0071a8010080320a080000 *000000000c007ba8010080320a080000000000000c0086a80100b8320a080000000000000c0090 *a80100b8320a080000000000000c0060a50000f8320a080000000000000c006aa50000f8320a08 *0000000000000c0099a8010028330a080000000000000c00a3a8010028330a080000000000000c *00aca8010068330a080000000000000c00b6a8010068330a080000000000000c00c1a80100a833 *0a080000000000000c00cba80100a8330a080000000000000c00d4a8010024340a080000000000 *000c00dea8010024340a080000000000000c00e7a8010070340a080000000000000c00f1a80100 *70340a080000000000000c009eac0000a4340a080000000000000c00fca80100a4340a08000000 *0000000c0005a90100ec340a080000000000000c000fa90100ec340a080000000000000c001aa9 *010020350a080000000000000c0024a9010020350a080000000000000c0098a4000068350a0800 *00000000000c00a2a4000068350a080000000000000c002da90100a8350a080000000000000c00 *37a90100a8350a080000000000000c0040a90100bc350a080000000000000c004aa90100bc350a *080000000000000c0055a90100f0350a080000000000000c005fa90100f0350a08000000000000 *0c0068a9010050360a080000000000000c0072a9010050360a080000000000000c007da9010088 *360a080000000000000c0087a9010088360a080000000000000c0092a90100e8360a0800000000 *00000c009ca90100e8360a080000000000000c00e8a4000030370a080000000000000c00f2a400 *0030370a080000000000000c00a5a90100c4370a080000000000000c00afa90100c4370a080000 *000000000c00baa90100f8370a080000000000000c00c4a90100f8370a080000000000000c00cd *a901000c380a080000000000000c00d7a901000c380a080000000000000c00e2a9010040380a08 *0000000000000c00eca9010040380a080000000000000c00f5a90100a0380a080000000000000c *00ffa90100a0380a080000000000000c000aaa010040390a080000000000000c0014aa01004039 *0a080000000000000c001faa0100803b0a080000000000000c002aaa010080390a080000000000 *000c0034aa010080390a080000000000000c003daa0100cc390a080000000000000c0047aa0100 *cc390a080000000000000c0052aa0100083a0a080000000000000c005caa0100083a0a08000000 *0000000c0065aa0100583a0a080000000000000c006faa0100583a0a080000000000000c007aaa *0100a03a0a080000000000000c0084aa0100a03a0a080000000000000c008daa0100b43a0a0800 *00000000000c0097aa0100b43a0a080000000000000c00a2aa0100e83a0a080000000000000c00 *acaa0100e83a0a080000000000000c00b5aa0100483b0a080000000000000c00bfaa0100483b0a *080000000000000c00caaa0100803b0a080000000000000c00a7ab0000e03b0a08000000000000 *0c00d4aa0100e03b0a080000000000000c00ddaa0100583c0a080000000000000c00e7aa010058 *3c0a080000000000000c00f2aa01008c3c0a080000000000000c00fcaa01008c3c0a0800000000 *00000c0005ab0100a03c0a080000000000000c000fab0100a03c0a080000000000000c001aab01 *00d43c0a080000000000000c0024ab0100d43c0a080000000000000c002dab0100343d0a080000 *000000000c0037ab0100343d0a080000000000000c00d0a90000d83d0a080000000000000c00da *a90000d83d0a080000000000000c0042ab01000c3e0a080000000000000c004cab01000c3e0a08 *0000000000000c0057ab0100483e0a080000000000000c0061ab0100483e0a080000000000000c *006aab0100683e0a080000000000000c0074ab0100683e0a080000000000000c007fab01009c3e *0a080000000000000c0089ab01009c3e0a080000000000000c0092ab0100d83e0a080000000000 *000c009cab0100d83e0a080000000000000c00a7ab0100103f0a080000000000000c00b1ab0100 *103f0a080000000000000c0041ab0000803f0a080000000000000c00bcab0100803f0a08000000 *0000000c00c7ab0100a0410a080000000000000c00d2ab0100cc410a080000000000000c00ddab *01000c420a080000000000000c00e7ab01000c420a080000000000000c00f2ab010018420a0800 *00000000000c00fdab010030420a080000000000000c0007ac010030420a080000000000000c00 *10ac010060420a080000000000000c001bac01006c420a080000000000000c0026ac0100ac420a *080000000000000c0030ac0100ac420a080000000000000c003bac0100cc420a08000000000000 *0c0045ac0100cc420a080000000000000c0050ac0100ec420a080000000000000c005aac010004 *430a080000000000000c0065ac01003c430a080000000000000c0070ac010074430a0800000000 *00000c007bac0100ac430a080000000000000c0086ac010004440a080000000000000c0091ac01 *0068440a080000000000000c009bac010078c711080000000000001000a8ac010080c711080000 *000000001000b5ac0100c4450a080000000000000c00beac010088c711080000000000001000cb *ac0100d8450a080000000000000c00d5ac0100d8450a080000000000000c00e0ac010030460a08 *0000000000000c00e9ac010098c711080000000000001000f6ac010044460a080000000000000c *0000ad010044460a080000000000000c000bad01009c460a080000000000000c0014ad0100a8c7 *1108000000000000100021ad0100b0460a080000000000000c002bad0100b0460a080000000000 *000c0036ad010008470a080000000000000c003fad0100b8c7110800000000000010004cad0100 *1c470a080000000000000c0056ad01001c470a080000000000000c0061ad010074470a08000000 *0000000c006aad0100c8c71108000000000000100077ad010088470a080000000000000c0081ad *010088470a080000000000000c008cad010004480a080000000000000c0096ad010004480a0800 *00000000000c009fad010018480a080000000000000c00aaad010038480a080000000000000c00 *b4ad010038480a080000000000000c00bfad010074480a080000000000000c00c9ad010074480a *080000000000000c00d4ad0100c4480a080000000000000c00dfad01005c4a0a08000000000000 *0c00eaad0100d8480a080000000000000c00f5ad01001c490a080000000000000c00ffad010028 *490a080000000000000c0009ae010028490a080000000000000c0014ae010068490a0800000000 *00000c001eae010068490a080000000000000c0029ae01009c490a080000000000000c0033ae01 *009c490a080000000000000c003cae0100f4490a080000000000000c0047ae01004c4a0a080000 *000000000c0051ae01005c4a0a080000000000000c005bae0100904a0a080000000000000c0065 *ae0100904a0a080000000000000c0070ae0100c84a0a080000000000000c007aae0100c84a0a08 *0000000000000c0085ae0100044b0a080000000000000c008fae0100044b0a080000000000000c *009aae0100404b0a080000000000000c00a4ae0100404b0a080000000000000c00afae01008c4b *0a080000000000000c00b9ae01008c4b0a080000000000000c00c2ae0100784c0a080000000000 *000c00ccae0100844c0a080000000000000c00d6ae0100904c0a080000000000000c00e0ae0100 *9c4c0a080000000000000c00eaae0100b44c0a080000000000000c00f4ae0100b44c0a08000000 *0000000c00ffae0100f44c0a080000000000000c0009af0100f44c0a080000000000000c0014af *0100684d0a080000000000000c001eaf01007c4d0a080000000000000c0028af01007c4d0a0800 *00000000000c0031af0100a04d0a080000000000000c003baf0100a04d0a080000000000000c00 *46af0100d84d0a080000000000000c0050af0100d84d0a080000000000000c005baf01002c4e0a *080000000000000c0065af01002c4e0a080000000000000c0070af0100a44e0a08000000000000 *0c007aaf0100a44e0a080000000000000c0085af0100e84e0a080000000000000c008faf0100e8 *4e0a080000000000000c0098af0100584f0a080000000000000c00a2af0100584f0a0800000000 *00000c00adaf0100844f0a080000000000000c00b7af0100844f0a080000000000000c00c2af01 *00bc4f0a080000000000000c00ccaf0100c84f0a080000000000000c00d6af0100dc4f0a080000 *000000000c00e0af0100dc4f0a080000000000000c00ebaf010010500a080000000000000c00f5 *af010010500a080000000000000c0000b0010044500a080000000000000c000ab0010044500a08 *0000000000000c0015b001007c500a080000000000000c001fb001007c500a080000000000000c *002ab00100dc500a080000000000000c0034b00100dc500a080000000000000c003fb001001051 *0a080000000000000c0049b0010010510a080000000000000c0054b0010074510a080000000000 *000c005eb0010074510a080000000000000c0069b00100d0510a080000000000000c0073b00100 *d0510a080000000000000c007eb001003c520a080000000000000c0088b001003c520a08000000 *0000000c0093b0010074520a080000000000000c009db0010074520a080000000000000c00a8b0 *0100c0520a080000000000000c00b2b00100c0520a080000000000000c00bdb00100f4520a0800 *00000000000c00c7b00100f4520a080000000000000c00d2b0010058530a080000000000000c00 *dcb0010058530a080000000000000c00e7b00100b4530a080000000000000c00f1b00100b4530a *080000000000000c00fcb0010038540a080000000000000c0006b1010038540a08000000000000 *0c0011b1010068540a080000000000000c001bb1010068540a080000000000000c0026b10100a0 *540a080000000000000c0030b10100a0540a080000000000000c003bb101000c550a0800000000 *00000c0045b101000c550a080000000000000c004eb1010084550a080000000000000c0058b101 *0084550a080000000000000c0063b10100c4550a080000000000000c006db10100c4550a080000 *000000000c0078b1010000560a080000000000000c0082b1010000560a080000000000000c008d *b101005c560a080000000000000c0097b101005c560a080000000000000c00a2b10100c8560a08 *0000000000000c00acb10100c8560a080000000000000c00b7b1010004570a080000000000000c *00c1b1010004570a080000000000000c00ccb1010050570a080000000000000c00d7b10100b057 *0a080000000000000c00e1b10100b0570a080000000000000c00ecb10100ec570a080000000000 *000c00f6b10100ec570a080000000000000c00ffb1010018580a080000000000000c000ab20100 *40580a080000000000000c0014b201004c580a080000000000000c001eb201004c580a08000000 *0000000c0027b20100bc580a080000000000000c0030b20100e8c7110800000000000010003db2 *0100cc580a080000000000000c0047b20100cc580a080000000000000c0052b20100b0590a0800 *00000000000c005db20100c4590a080000000000000c0068b20100dc590a080000000000000c00 *72b20100dc590a080000000000000c007db20100105a0a080000000000000c0087b20100105a0a *080000000000000c0092b20100605a0a080000000000000c009cb20100605a0a08000000000000 *0c00a7b201008c5a0a080000000000000c00b2b20100e05a0a080000000000000c00bcb20100e0 *5a0a080000000000000c00c7b20100f05a0a080000000000000c00d2b20100185b0a0800000000 *00000c00dcb20100185b0a080000000000000c00e7b20100405b0a080000000000000c00f1b201 *00505b0a080000000000000c00fbb20100505b0a080000000000000c0006b30100845b0a080000 *000000000c0010b30100845b0a080000000000000c001bb30100b85b0a080000000000000c0025 *b30100b85b0a080000000000000c002eb30100805c0a080000000000000c0038b30100805c0a08 *0000000000000c0043b30100a85c0a080000000000000c004eb30100c45c0a080000000000000c *0058b30100c45c0a080000000000000c0063b30100005d0a080000000000000c006db30100005d *0a080000000000000c0076b301003c5d0a080000000000000c0080b301003c5d0a080000000000 *000c008bb30100705d0a080000000000000c0095b30100705d0a080000000000000c009eb30100 *bc5d0a080000000000000c00a8b30100bc5d0a080000000000000c00b3b30100e85d0a08000000 *0000000c00beb3010088620a080000000000000c00c9b30100085e0a080000000000000c00d3b3 *0100085e0a080000000000000c00deb30100445e0a080000000000000c00e8b30100445e0a0800 *00000000000c00f3b30100745e0a080000000000000c00fdb30100745e0a080000000000000c00 *08b40100a85e0a080000000000000c0012b40100a85e0a080000000000000c001db40100dc5e0a *080000000000000c0027b40100dc5e0a080000000000000c0032b40100445f0a08000000000000 *0c003cb40100445f0a080000000000000c0047b40100a05f0a080000000000000c0051b40100a0 *5f0a080000000000000c005cb40100c85f0a080000000000000c0067b4010018600a0800000000 *00000c0072b4010040600a080000000000000c007cb4010050600a080000000000000c0086b401 *0050600a080000000000000c0091b4010090600a080000000000000c009bb4010090600a080000 *000000000c00a6b40100c4600a080000000000000c00b0b40100c4600a080000000000000c00bb *b4010014610a080000000000000c00c5b4010014610a080000000000000c00d0b4010090610a08 *0000000000000c00dbb401000c620a080000000000000c00e5b401000c620a080000000000000c *00f0b4010078620a080000000000000c00fab4010088620a080000000000000c0004b50100cc62 *0a080000000000000c000eb50100cc620a080000000000000c0019b501002c630a080000000000 *000c0023b501002c630a080000000000000c002eb5010098630a080000000000000c0038b50100 *98630a080000000000000c0043b5010008640a080000000000000c004db5010008640a08000000 *0000000c0058b501003c640a080000000000000c0062b501003c640a080000000000000c006bb5 *010000650a080000000000000c0076b5010008650a080000000000000c0081b5010050650a0800 *00000000000c008bb501008c650a080000000000000c0095b501008c650a080000000000000c00 *9eb50100dc650a080000000000000c00a9b50100ec650a080000000000000c00b4b50100f4650a *080000000000000c00bfb5010010660a080000000000000c00c9b5010018660a08000000000000 *0c00d3b5010018660a080000000000000c00dcb5010038660a080000000000000c00e7b501006c *660a080000000000000c00f1b501009c660a080000000000000c00fcb50100b4660a0800000000 *00000c0006b60100b4660a080000000000000c000fb60100cc660a080000000000000c001ab601 *00f8660a080000000000000c0024b6010028670a080000000000000c002fb6010040670a080000 *000000000c0039b6010040670a080000000000000c0042b6010058670a080000000000000c004d *b6010084670a080000000000000c0057b60100d0670a080000000000000c0061b60100d0670a08 *0000000000000c006cb6010004680a080000000000000c0076b6010004680a080000000000000c *0081b6010058680a080000000000000c008bb6010058680a080000000000000c0094b601007c68 *0a080000000000000c009eb601007c680a080000000000000c00a9b60100a0680a080000000000 *000c00b4b60100d0680a080000000000000c00bfb601000c690a080000000000000c00c9b60100 *0c690a080000000000000c00d4b6010040690a080000000000000c00deb6010040690a08000000 *0000000c00e9b6010098690a080000000000000c00f3b6010098690a080000000000000c00feb6 *0100e4690a080000000000000c0009b70100486a0a080000000000000c0013b70100486a0a0800 *00000000000c001eb70100706a0a080000000000000c0028b701007c6a0a080000000000000c00 *32b701007c6a0a080000000000000c003bb70100206b0a080000000000000c0045b70100206b0a *080000000000000c004eb70100286b0a080000000000000c0059b70100406b0a08000000000000 *0c0063b70100406b0a080000000000000c006cb70100546b0a080000000000000c0076b7010054 *6b0a080000000000000c0081b70100806b0a080000000000000c008cb70100dc6b0a0800000000 *00000c0096b70100246c0a080000000000000c00a1b70100406c0a080000000000000c00abb701 *00406c0a080000000000000c00b6b70100686c0a080000000000000c00c1b70100ac6c0a080000 *000000000c00cbb70100ac6c0a080000000000000c00d6b70100d46c0a080000000000000c00e1 *b701000c6d0a080000000000000c00ecb70100146d0a080000000000000c00f7b70100cc6d0a08 *0000000000000c0002b801003c6d0a080000000000000c000cb80100446d0a080000000000000c *0016b80100446d0a080000000000000c001fb80100646d0a080000000000000c002ab80100906d *0a080000000000000c0034b80100906d0a080000000000000c003fb80100bc6d0a080000000000 *000c0049b80100cc6d0a080000000000000c0053b80100f86d0a080000000000000c005db80100 *f86d0a080000000000000c0068b80100306e0a080000000000000c0073b80100486e0a08000000 *0000000c007eb8010080700a080000000000000c0089b80100746e0a080000000000000c0094b8 *0100bc720a080000000000000c009fb80100ac6e0a080000000000000c00a9b80100b46e0a0800 *00000000000c00b3b80100b46e0a080000000000000c00bcb80100d46e0a080000000000000c00 *c7b80100086f0a080000000000000c00d1b80100186f0a080000000000000c00dbb80100186f0a *080000000000000c00e6b80100486f0a080000000000000c00f1b801008c6f0a08000000000000 *0c00fcb80100946f0a080000000000000c0007b901009c6f0a080000000000000c0012b90100ec *6f0a080000000000000c001cb90100f46f0a080000000000000c0026b90100f46f0a0800000000 *00000c002fb9010014700a080000000000000c003ab9010048700a080000000000000c0044b901 *0048700a080000000000000c004fb9010070700a080000000000000c0059b9010080700a080000 *000000000c0063b90100b4700a080000000000000c006db90100b4700a080000000000000c0078 *b9010000710a080000000000000c0083b9010070710a080000000000000c008db9010070710a08 *0000000000000c0098b9010098710a080000000000000c00a3b90100d0710a080000000000000c *00aeb90100d8710a080000000000000c00b9b9010028720a080000000000000c00c3b901003072 *0a080000000000000c00cdb9010030720a080000000000000c00d6b9010050720a080000000000 *000c00e1b9010084720a080000000000000c00ebb9010084720a080000000000000c00f6b90100 *ac720a080000000000000c0000ba0100bc720a080000000000000c000aba0100f0720a08000000 *0000000c0014ba0100f0720a080000000000000c001fba010020730a080000000000000c002aba *010030730a080000000000000c0035ba010084730a080000000000000c003fba010084730a0800 *00000000000c004aba0100c0730a080000000000000c0055ba0100dc730a080000000000000c00 *5fba0100dc730a080000000000000c006aba01006c740a080000000000000c0074ba0100a4740a *080000000000000c007fba0100b8740a080000000000000c0089ba0100b8740a08000000000000 *0c0094ba0100e0740a080000000000000c009fba010018750a080000000000000c00aaba010038 *750a080000000000000c00b4ba010044750a080000000000000c00beba010044750a0800000000 *00000c00c7ba010084750a080000000000000c00d2ba0100ac750a080000000000000c00dcba01 *00b8750a080000000000000c00e6ba0100b8750a080000000000000c00efba0100c4750a080000 *000000000c00faba0100cc750a080000000000000c0005bb0100d4750a080000000000000c0010 *bb0100ec750a080000000000000c001abb0100f8750a080000000000000c0024bb0100f8750a08 *0000000000000c002dbb010014760a080000000000000c0038bb010040760a080000000000000c *0042bb010078760a080000000000000c004dbb010088760a080000000000000c0058bb01009876 *0a080000000000000c0063bb0100b4760a080000000000000c006dbb0100c0760a080000000000 *000c0077bb0100c0760a080000000000000c0080bb0100e0760a080000000000000c008bbb0100 *10770a080000000000000c0095bb010064770a080000000000000c00a0bb010074770a08000000 *0000000c00abbb01007c770a080000000000000c00b6bb010098770a080000000000000c00c0bb *010098770a080000000000000c00cbbb0100c4770a080000000000000c00d5bb0100d0770a0800 *00000000000c00dfbb0100d0770a080000000000000c00eabb0100e8770a080000000000000c00 *f5bb01001c780a080000000000000c0000bc01004c780a080000000000000c000bbc010090780a *080000000000000c0015bc010098780a080000000000000c001fbc010098780a08000000000000 *0c0028bc0100bc780a080000000000000c0032bc0100bc780a080000000000000c003dbc010000 *790a080000000000000c0047bc010000790a080000000000000c0052bc01003c790a0800000000 *00000c005cbc01003c790a080000000000000c0067bc010070790a080000000000000c0071bc01 *0070790a080000000000000c007cbc0100d0790a080000000000000c0087bc0100287a0a080000 *000000000c0091bc0100287a0a080000000000000c009cbc0100847a0a080000000000000c00a6 *bc0100847a0a080000000000000c00b1bc0100ac7a0a080000000000000c00bcbc0100147b0a08 *0000000000000c00c6bc0100207b0a080000000000000c00d0bc0100207b0a080000000000000c *00d9bc0100707b0a080000000000000c00e4bc0100747b0a080000000000000c00efbc0100707c *0a080000000000000c00fabc0100887b0a080000000000000c0005bd0100a07b0a080000000000 *000c000fbd0100ac7b0a080000000000000c0019bd0100ac7b0a080000000000000c0022bd0100 *cc7b0a080000000000000c002dbd0100f87b0a080000000000000c0037bd0100f87b0a08000000 *0000000c0042bd0100607c0a080000000000000c004cbd0100707c0a080000000000000c0056bd *0100a47c0a080000000000000c0060bd0100a47c0a080000000000000c006bbd0100f87c0a0800 *00000000000c0076bd0100307d0a080000000000000c0081bd0100747d0a080000000000000c00 *8bbd0100747d0a080000000000000c0096bd0100d47d0a080000000000000c00a0bd0100d47d0a *080000000000000c00abbd0100287e0a080000000000000c00b6bd0100807e0a08000000000000 *0c00c0bd01008c7e0a080000000000000c00cabd01008c7e0a080000000000000c00d3bd0100ac *7e0a080000000000000c00debd0100e07e0a080000000000000c00e8bd0100ec7e0a0800000000 *00000c00f2bd0100ec7e0a080000000000000c00fdbd0100347f0a080000000000000c0007be01 *00347f0a080000000000000c0012be0100847f0a080000000000000c001cbe0100847f0a080000 *000000000c0027be0100e07f0a080000000000000c0031be0100e07f0a080000000000000c003c *be010030800a080000000000000c0046be010030800a080000000000000c0051be01003c810a08 *0000000000000c005bbe01003c810a080000000000000c0066be010070810a080000000000000c *0070be010070810a080000000000000c007bbe0100bc810a080000000000000c0086be0100f081 *0a080000000000000c0091be01000c820a080000000000000c009bbe010014820a080000000000 *000c00a5be010014820a080000000000000c00aebe010028820a080000000000000c00b8be0100 *28820a080000000000000c00c3be010058820a080000000000000c00cdbe010058820a08000000 *0000000c00d8be01009c820a080000000000000c00e3be0100d0820a080000000000000c00eebe *010004830a080000000000000c00f9be010020830a080000000000000c0003bf010020830a0800 *00000000000c000ebf010054830a080000000000000c0018bf010060830a080000000000000c00 *22bf010060830a080000000000000c002bbf010078830a080000000000000c0035bf010078830a *080000000000000c0040bf0100a8830a080000000000000c004abf0100a8830a08000000000000 *0c0055bf010074840a080000000000000c005fbf010074840a080000000000000c006abf0100a4 *840a080000000000000c0074bf0100a4840a080000000000000c007fbf0100f0840a0800000000 *00000c0089bf0100f0840a080000000000000c0092bf010014850a080000000000000c009cbf01 *0014850a080000000000000c00a7bf010044850a080000000000000c00b1bf010044850a080000 *000000000c00bcbf01006c850a080000000000000c00c7bf0100c8850a080000000000000c00d1 *bf0100c8850a080000000000000c00dcbf0100fc850a080000000000000c00e6bf0100fc850a08 *0000000000000c00f1bf010024860a080000000000000c00fcbf010094860a080000000000000c *0006c00100a0860a080000000000000c0010c00100a0860a080000000000000c0019c001004887 *0a080000000000000c0023c0010048870a080000000000000c002ec00100fc870a080000000000 *000c0038c00100fc870a080000000000000c0041c0010020880a080000000000000c004bc00100 *20880a080000000000000c0056c0010044880a080000000000000c0061c0010078880a08000000 *0000000c006cc00100d8880a080000000000000c0076c00100e0880a080000000000000c0080c0 *0100e0880a080000000000000c0089c0010008890a080000000000000c0093c0010008890a0800 *00000000000c009ec00100a8c811080000000000001000abc00100d4c811080000000000001000 *b8c001003c8a0a080000000000000c00c1c00100dcc811080000000000001000cec00100508a0a *080000000000000c00d8c00100508a0a080000000000000c00e3c00100a88a0a08000000000000 *0c00ecc00100ecc811080000000000001000f9c00100c88a0a080000000000000c0003c10100b4 *8a0a080000000000000c000dc10100b48a0a080000000000000c0016c10100c88a0a0800000000 *00000c0021c101001c8b0a080000000000000c002ac10100fcc81108000000000000100037c101 *00d4960a080000000000000c0041c10100388b0a080000000000000c004bc10100388b0a080000 *000000000c0056c10100748b0a080000000000000c0060c10100748b0a080000000000000c006b *c10100b08b0a080000000000000c0075c10100b08b0a080000000000000c0080c10100008c0a08 *0000000000000c008ac10100008c0a080000000000000c0095c101003c8c0a080000000000000c *009fc101003c8c0a080000000000000c00aac101009c8c0a080000000000000c00b4c101009c8c *0a080000000000000c00bfc10100f48c0a080000000000000c00c9c10100f48c0a080000000000 *000c00d4c10100308d0a080000000000000c00dec10100308d0a080000000000000c00e9c10100 *908d0a080000000000000c00f3c10100908d0a080000000000000c00fcc10100a48d0a08000000 *0000000c0006c20100a48d0a080000000000000c0011c20100dc8d0a080000000000000c001bc2 *0100dc8d0a080000000000000c0026c20100488e0a080000000000000c0030c20100488e0a0800 *00000000000c003bc20100788e0a080000000000000c0046c20100d08e0a080000000000000c00 *50c20100d08e0a080000000000000c005bc201000c8f0a080000000000000c0065c201000c8f0a *080000000000000c0070c201005c8f0a080000000000000c007ac201005c8f0a08000000000000 *0c0085c20100988f0a080000000000000c008fc20100988f0a080000000000000c009ac20100f8 *8f0a080000000000000c00a4c20100f88f0a080000000000000c00afc2010050900a0800000000 *00000c00b9c2010050900a080000000000000c00c4c201008c900a080000000000000c00cec201 *008c900a080000000000000c00d9c20100ec900a080000000000000c00e3c20100ec900a080000 *000000000c00ecc2010000910a080000000000000c00f6c2010000910a080000000000000c0001 *c3010038910a080000000000000c000bc3010038910a080000000000000c0016c30100a4910a08 *0000000000000c0020c30100a4910a080000000000000c002bc30100e0910a080000000000000c *0035c30100e0910a080000000000000c0040c301004c920a080000000000000c004ac301004c92 *0a080000000000000c0055c30100b0920a080000000000000c005fc30100b0920a080000000000 *000c006ac30100e0920a080000000000000c0075c3010044930a080000000000000c007fc30100 *44930a080000000000000c008ac3010060930a080000000000000c0094c3010060930a08000000 *0000000c009fc301009c930a080000000000000c00a9c301009c930a080000000000000c00b4c3 *0100ec930a080000000000000c00bec30100ec930a080000000000000c00c9c3010028940a0800 *00000000000c00d3c3010028940a080000000000000c00dec3010088940a080000000000000c00 *e8c3010088940a080000000000000c00f3c30100e0940a080000000000000c00fdc30100e0940a *080000000000000c0008c401001c950a080000000000000c0012c401001c950a08000000000000 *0c001dc401007c950a080000000000000c0027c401007c950a080000000000000c0030c4010090 *950a080000000000000c003ac4010090950a080000000000000c0045c40100c8950a0800000000 *00000c004fc40100c8950a080000000000000c005ac4010034960a080000000000000c0064c401 *0034960a080000000000000c006fc4010064960a080000000000000c007ac40100c4960a080000 *000000000c0084c40100d4960a080000000000000c008fc401001c970a080000000000000c0098 *c4010004c911080000000000001000a5c4010030970a080000000000000c00afc4010030970a08 *0000000000000c00bac401009c970a080000000000000c00c3c4010018c9110800000000000010 *00d0c4010020a40a080000000000000c00dac40100d0970a080000000000000c00e5c40100f497 *0a080000000000000c00efc40100f4970a080000000000000c00fac4010020a40a080000000000 *000c0005c5010020980a080000000000000c0010c501006c980a080000000000000c001ac50100 *6c980a080000000000000c0025c5010098980a080000000000000c0030c50100ec980a08000000 *0000000c003ac50100f8980a080000000000000c0044c50100f8980a080000000000000c004dc5 *01001c990a080000000000000c0058c501002c990a080000000000000c0062c501002c990a0800 *00000000000c006dc5010060990a080000000000000c0077c5010060990a080000000000000c00 *80c5010084990a080000000000000c008ac5010084990a080000000000000c0095c50100bc990a *080000000000000c009fc50100bc990a080000000000000c00aac50100149a0a08000000000000 *0c00b4c50100149a0a080000000000000c00bfc50100409a0a080000000000000c00cac501006c *9a0a080000000000000c00d5c50100989a0a080000000000000c00e0c50100d09a0a0800000000 *00000c00eac50100d09a0a080000000000000c00f5c50100f89a0a080000000000000c0000c601 *004c9b0a080000000000000c000ac601004c9b0a080000000000000c0015c60100889b0a080000 *000000000c001fc60100889b0a080000000000000c002ac60100b49b0a080000000000000c0034 *c60100c09b0a080000000000000c003ec60100c09b0a080000000000000c0049c60100049c0a08 *0000000000000c0053c60100049c0a080000000000000c005cc60100c49c0a080000000000000c *0067c60100f09c0a080000000000000c0071c60100f09c0a080000000000000c007cc60100209d *0a080000000000000c0086c601002c9d0a080000000000000c0090c601002c9d0a080000000000 *000c0099c60100389d0a080000000000000c00a4c601003c9d0a080000000000000c00afc60100 *509d0a080000000000000c00b9c60100509d0a080000000000000c00c4c601008c9d0a08000000 *0000000c00cec601008c9d0a080000000000000c00d9c60100c09d0a080000000000000c00e3c6 *0100c09d0a080000000000000c00ecc60100049e0a080000000000000c00f6c60100049e0a0800 *00000000000c0001c701003c9e0a080000000000000c000bc701003c9e0a080000000000000c00 *16c70100909e0a080000000000000c0020c70100909e0a080000000000000c0029c701001c9f0a *080000000000000c0034c70100489f0a080000000000000c003ec70100489f0a08000000000000 *0c0049c70100749f0a080000000000000c0053c70100809f0a080000000000000c005dc7010080 *9f0a080000000000000c0066c70100a49f0a080000000000000c0070c70100a49f0a0800000000 *00000c0079c70100b09f0a080000000000000c0084c70100c09f0a080000000000000c008fc701 *00c89f0a080000000000000c009ac70100d89f0a080000000000000c00a5c7010038a00a080000 *000000000c00afc7010038a00a080000000000000c00bac7010068a00a080000000000000c00c5 *c70100c4a00a080000000000000c00cfc70100c4a00a080000000000000c00dac70100f0a00a08 *0000000000000c00e5c7010044a10a080000000000000c00efc7010050a10a080000000000000c *00f9c7010050a10a080000000000000c0002c8010094a10a080000000000000c000cc8010094a1 *0a080000000000000c0015c8010000a20a080000000000000c0020c801002ca20a080000000000 *000c002ac801002ca20a080000000000000c0035c8010058a20a080000000000000c003fc80100 *68a20a080000000000000c0049c8010068a20a080000000000000c0054c8010094a20a08000000 *0000000c005ec8010094a20a080000000000000c0069c80100c4a20a080000000000000c0074c8 *0100cca20a080000000000000c007fc8010024a30a080000000000000c0089c8010030a30a0800 *00000000000c0093c8010030a30a080000000000000c009cc8010074a30a080000000000000c00 *a6c8010074a30a080000000000000c00afc80100b8a30a080000000000000c00bac80100e4a30a *080000000000000c00c4c80100e4a30a080000000000000c00cfc8010010a40a08000000000000 *0c00d9c8010040a40a080000000000000c00e2c8010020c911080000000000001000efc80100e0 *a50a080000000000000c00f9c8010048a40a080000000000000c0004c9010050a40a0800000000 *00000c000fc9010060a40a080000000000000c001ac9010078a40a080000000000000c0024c901 *0078a40a080000000000000c002dc901008ca40a080000000000000c0037c901008ca40a080000 *000000000c0042c90100c4a40a080000000000000c004cc90100c4a40a080000000000000c0057 *c9010024a50a080000000000000c0062c901007ca50a080000000000000c006dc90100d0a50a08 *0000000000000c0077c90100e0a50a080000000000000c0082c90100eca50a080000000000000c *008bc9010028c91108000000000000100098c9010000b00a080000000000000c00a2c9010000a6 *0a080000000000000c00adc9010018a60a080000000000000c00b7c9010018a60a080000000000 *000c00c0c901003ca60a080000000000000c00cac901003ca60a080000000000000c00d5c90100 *74a60a080000000000000c00dfc9010074a60a080000000000000c00eac9010000b00a08000000 *0000000c00f5c90100c8a60a080000000000000c0000ca01002ca70a080000000000000c000aca *010038a70a080000000000000c0014ca010038a70a080000000000000c001dca010044a70a0800 *00000000000c0028ca010054a70a080000000000000c0032ca010054a70a080000000000000c00 *3dca010090a70a080000000000000c0047ca010090a70a080000000000000c0052ca0100c0a70a *080000000000000c005cca0100e4a70a080000000000000c0066ca0100e4a70a08000000000000 *0c0071ca010038a80a080000000000000c007bca010038a80a080000000000000c0086ca010070 *a80a080000000000000c0091ca0100c4a80a080000000000000c009bca0100c4a80a0800000000 *00000c00a4ca0100e8a80a080000000000000c00aeca0100e8a80a080000000000000c00b9ca01 *0020a90a080000000000000c00c3ca010020a90a080000000000000c00ceca010074a90a080000 *000000000c00d9ca0100c0a90a080000000000000c00e3ca0100e8a90a080000000000000c00ed *ca0100e8a90a080000000000000c00f8ca010014aa0a080000000000000c0002cb010014aa0a08 *0000000000000c000dcb010024aa0a080000000000000c0018cb010038aa0a080000000000000c *0022cb010038aa0a080000000000000c002dcb010070aa0a080000000000000c0038cb0100c0aa *0a080000000000000c0042cb0100c0aa0a080000000000000c004bcb0100e4aa0a080000000000 *000c0055cb0100e4aa0a080000000000000c0060cb01001cab0a080000000000000c006acb0100 *1cab0a080000000000000c0075cb010070ab0a080000000000000c0080cb0100b8ab0a08000000 *0000000c008acb0100e0ab0a080000000000000c0094cb0100e0ab0a080000000000000c009fcb *010008ac0a080000000000000c00a9cb010008ac0a080000000000000c00b4cb010014ac0a0800 *00000000000c00bfcb010028ac0a080000000000000c00c9cb010028ac0a080000000000000c00 *d4cb010064ac0a080000000000000c00decb010064ac0a080000000000000c00e9cb010094ac0a *080000000000000c00f3cb0100b8ac0a080000000000000c00fdcb0100b8ac0a08000000000000 *0c0008cc010008ad0a080000000000000c0012cc010008ad0a080000000000000c001dcc010040 *ad0a080000000000000c0028cc010090ad0a080000000000000c0032cc010090ad0a0800000000 *00000c003bcc0100b4ad0a080000000000000c0045cc0100b4ad0a080000000000000c0050cc01 *00ecad0a080000000000000c005acc0100ecad0a080000000000000c0065cc010040ae0a080000 *000000000c0070cc010088ae0a080000000000000c007acc0100b0ae0a080000000000000c0084 *cc0100b0ae0a080000000000000c008fcc0100d8ae0a080000000000000c0099cc0100d8ae0a08 *0000000000000c00a4cc0100e4ae0a080000000000000c00aecc01000caf0a080000000000000c *00b8cc010018af0a080000000000000c00c2cc010018af0a080000000000000c00cbcc010024af *0a080000000000000c00d6cc010034af0a080000000000000c00e0cc010034af0a080000000000 *000c00ebcc01006caf0a080000000000000c00f6cc0100ccaf0a080000000000000c0000cd0100 *d8af0a080000000000000c000acd0100d8af0a080000000000000c0013cd010044b00a08000000 *0000000c001dcd010044b00a080000000000000c0028cd01006cb00a080000000000000c0033cd *0100b8b00a080000000000000c003dcd0100b8b00a080000000000000c0048cd0100f4b00a0800 *00000000000c0052cd0100f4b00a080000000000000c005dcd01004cb10a080000000000000c00 *67cd01004cb10a080000000000000c0072cd0100f0b40a080000000000000c007dcd010084b10a *080000000000000c0087cd010084b10a080000000000000c0092cd0100acb10a08000000000000 *0c009dcd010004b20a080000000000000c00a7cd010004b20a080000000000000c00b2cd01003c *b20a080000000000000c00bccd01003cb20a080000000000000c00c7cd010070b20a0800000000 *00000c00d1cd010070b20a080000000000000c00dccd0100a8b20a080000000000000c00e6cd01 *00a8b20a080000000000000c00f1cd0100dcb20a080000000000000c00fbcd0100dcb20a080000 *000000000c0004ce010074b30a080000000000000c000fce0100a0b30a080000000000000c0019 *ce0100acb30a080000000000000c0023ce0100acb30a080000000000000c002ece0100e4b30a08 *0000000000000c0038ce0100e4b30a080000000000000c0043ce010018b40a080000000000000c *004dce010018b40a080000000000000c0056ce0100b4b40a080000000000000c0061ce0100e0b4 *0a080000000000000c006bce0100f0b40a080000000000000c0075ce01001cb50a080000000000 *000c007fce01001cb50a080000000000000c008ace010068b50a080000000000000c0094ce0100 *68b50a080000000000000c009fce01009cb50a080000000000000c00a9ce01009cb50a08000000 *0000000c00b4ce0100e0b50a080000000000000c00bece0100e0b50a080000000000000c00c9ce *01004cb60a080000000000000c00d3ce01004cb60a080000000000000c00dece010084b60a0800 *00000000000c00e8ce010084b60a080000000000000c00f3ce010000b80a080000000000000c00 *fece01002cb80a080000000000000c0009cf010050b80a080000000000000c0013cf010050b80a *080000000000000c001ecf01005cb80a080000000000000c0029cf010074b80a08000000000000 *0c0033cf010074b80a080000000000000c003ccf0100a4b80a080000000000000c0047cf0100b0 *b80a080000000000000c0052cf0100f0b80a080000000000000c005ccf0100f0b80a0800000000 *00000c0067cf010010b90a080000000000000c0071cf010010b90a080000000000000c007ccf01 *0030b90a080000000000000c0086cf010048b90a080000000000000c0091cf010080b90a080000 *000000000c009ccf0100b8b90a080000000000000c00a7cf0100f0b90a080000000000000c00b2 *cf010048ba0a080000000000000c00bdcf0100acba0a080000000000000c00c7cf010058c91108 *0000000000001000d4cf0100b0bd0a080000000000000c00decf010078bb0a080000000000000c *00e9cf010088bb0a080000000000000c00f4cf01002cbc0a080000000000000c00ffcf01009cbb *0a080000000000000c000ad00100f4bb0a080000000000000c0014d00100f4bb0a080000000000 *000c001fd0010020bc0a080000000000000c0029d001002cbc0a080000000000000c0033d00100 *54bc0a080000000000000c003dd0010054bc0a080000000000000c0048d0010090bc0a08000000 *0000000c0053d00100a0bc0a080000000000000c005ed00100e4bc0a080000000000000c0069d0 *010040bd0a080000000000000c0074d0010008bd0a080000000000000c007ed0010008bd0a0800 *00000000000c0089d0010034bd0a080000000000000c0093d0010040bd0a080000000000000c00 *9dd0010068bd0a080000000000000c00a7d0010068bd0a080000000000000c00b2d00100b0bd0a *080000000000000c00bdd00100fcbd0a080000000000000c00c6d001005cc91108000000000000 *1000d3d0010010be0a080000000000000c00ddd0010010be0a080000000000000c00e8d0010068 *be0a080000000000000c00f1d001006cc911080000000000001000fed0010074cf0a0800000000 *00000c0008d101007cbe0a080000000000000c0012d101007cbe0a080000000000000c001bd101 *009cbe0a080000000000000c0025d101009cbe0a080000000000000c0030d10100d0be0a080000 *000000000c003ad10100d0be0a080000000000000c0045d1010008bf0a080000000000000c004f *d1010008bf0a080000000000000c0058d1010028bf0a080000000000000c0062d1010028bf0a08 *0000000000000c006dd101005cbf0a080000000000000c0077d101005cbf0a080000000000000c *0082d1010094bf0a080000000000000c008cd1010094bf0a080000000000000c0095d10100b4bf *0a080000000000000c009fd10100b4bf0a080000000000000c00aad10100e8bf0a080000000000 *000c00b4d10100e8bf0a080000000000000c00bfd1010020c00a080000000000000c00c9d10100 *20c00a080000000000000c00d2d1010040c00a080000000000000c00dcd1010040c00a08000000 *0000000c00e7d1010074c00a080000000000000c00f1d1010074c00a080000000000000c00fcd1 *0100acc00a080000000000000c0006d20100acc00a080000000000000c000fd20100ccc00a0800 *00000000000c0019d20100ccc00a080000000000000c0024d2010000c10a080000000000000c00 *2ed2010000c10a080000000000000c0039d2010038c10a080000000000000c0043d2010038c10a *080000000000000c004cd2010058c10a080000000000000c0056d2010058c10a08000000000000 *0c0061d201008cc10a080000000000000c006bd201008cc10a080000000000000c0076d20100c4 *c10a080000000000000c0080d20100c4c10a080000000000000c0089d20100e4c10a0800000000 *00000c0093d20100e4c10a080000000000000c009ed2010018c20a080000000000000c00a8d201 *0018c20a080000000000000c00b3d2010050c20a080000000000000c00bdd2010050c20a080000 *000000000c00c6d2010070c20a080000000000000c00d0d2010070c20a080000000000000c00db *d20100a4c20a080000000000000c00e5d20100a4c20a080000000000000c00f0d20100dcc20a08 *0000000000000c00fad20100dcc20a080000000000000c0003d30100fcc20a080000000000000c *000dd30100fcc20a080000000000000c0018d3010030c30a080000000000000c0022d3010030c3 *0a080000000000000c002dd3010068c30a080000000000000c0037d3010068c30a080000000000 *000c0040d3010088c30a080000000000000c004ad3010088c30a080000000000000c0055d30100 *bcc30a080000000000000c005fd30100bcc30a080000000000000c006ad30100f4c30a08000000 *0000000c0074d30100f4c30a080000000000000c007dd3010014c40a080000000000000c0087d3 *010014c40a080000000000000c0092d3010048c40a080000000000000c009cd3010048c40a0800 *00000000000c00a7d3010080c40a080000000000000c00b1d3010080c40a080000000000000c00 *bad30100a0c40a080000000000000c00c4d30100a0c40a080000000000000c00cfd30100d4c40a *080000000000000c00d9d30100d4c40a080000000000000c00e4d301000cc50a08000000000000 *0c00eed301000cc50a080000000000000c00f7d301002cc50a080000000000000c0001d401002c *c50a080000000000000c000cd4010060c50a080000000000000c0016d4010060c50a0800000000 *00000c0021d4010098c50a080000000000000c002bd4010098c50a080000000000000c0034d401 *00b8c50a080000000000000c003ed40100b8c50a080000000000000c0049d40100ecc50a080000 *000000000c0053d40100ecc50a080000000000000c005ed4010024c60a080000000000000c0068 *d4010024c60a080000000000000c0071d4010044c60a080000000000000c007bd4010044c60a08 *0000000000000c0086d4010078c60a080000000000000c0090d4010078c60a080000000000000c *009bd40100b0c60a080000000000000c00a5d40100b0c60a080000000000000c00aed40100d0c6 *0a080000000000000c00b8d40100d0c60a080000000000000c00c3d4010004c70a080000000000 *000c00cdd4010004c70a080000000000000c00d8d401003cc70a080000000000000c00e2d40100 *3cc70a080000000000000c00ebd401005cc70a080000000000000c00f5d401005cc70a08000000 *0000000c0000d5010090c70a080000000000000c000ad5010090c70a080000000000000c0015d5 *0100c8c70a080000000000000c001fd50100c8c70a080000000000000c0028d50100e8c70a0800 *00000000000c0032d50100e8c70a080000000000000c003dd501001cc80a080000000000000c00 *47d501001cc80a080000000000000c0052d5010054c80a080000000000000c005cd5010054c80a *080000000000000c0065d5010074c80a080000000000000c006fd5010074c80a08000000000000 *0c007ad50100a8c80a080000000000000c0084d50100a8c80a080000000000000c008fd50100e0 *c80a080000000000000c0099d50100e0c80a080000000000000c00a2d5010000c90a0800000000 *00000c00acd5010000c90a080000000000000c00b7d5010034c90a080000000000000c00c1d501 *0034c90a080000000000000c00ccd501006cc90a080000000000000c00d6d501006cc90a080000 *000000000c00dfd501008cc90a080000000000000c00e9d501008cc90a080000000000000c00f4 *d50100c0c90a080000000000000c00fed50100c0c90a080000000000000c0009d60100f8c90a08 *0000000000000c0013d60100f8c90a080000000000000c001cd6010018ca0a080000000000000c *0026d6010018ca0a080000000000000c0031d601004cca0a080000000000000c003bd601004cca *0a080000000000000c0046d6010084ca0a080000000000000c0050d6010084ca0a080000000000 *000c0059d60100a4ca0a080000000000000c0063d60100a4ca0a080000000000000c006ed60100 *d8ca0a080000000000000c0078d60100d8ca0a080000000000000c0083d6010010cb0a08000000 *0000000c008dd6010010cb0a080000000000000c0096d6010030cb0a080000000000000c00a0d6 *010030cb0a080000000000000c00abd6010064cb0a080000000000000c00b5d6010064cb0a0800 *00000000000c00c0d601009ccb0a080000000000000c00cad601009ccb0a080000000000000c00 *d3d60100bccb0a080000000000000c00ddd60100bccb0a080000000000000c00e8d60100f0cb0a *080000000000000c00f2d60100f0cb0a080000000000000c00fdd6010028cc0a08000000000000 *0c0007d7010028cc0a080000000000000c0010d7010048cc0a080000000000000c001ad7010048 *cc0a080000000000000c0025d701007ccc0a080000000000000c002fd701007ccc0a0800000000 *00000c003ad70100b4cc0a080000000000000c0044d70100b4cc0a080000000000000c004dd701 *00d4cc0a080000000000000c0057d70100d4cc0a080000000000000c0062d7010008cd0a080000 *000000000c006cd7010008cd0a080000000000000c0077d7010040cd0a080000000000000c0081 *d7010040cd0a080000000000000c008ad7010060cd0a080000000000000c0094d7010060cd0a08 *0000000000000c009fd7010094cd0a080000000000000c00a9d7010094cd0a080000000000000c *00b4d70100cccd0a080000000000000c00bed70100cccd0a080000000000000c00c7d70100eccd *0a080000000000000c00d1d70100eccd0a080000000000000c00dcd7010020ce0a080000000000 *000c00e6d7010020ce0a080000000000000c00f1d7010058ce0a080000000000000c00fbd70100 *58ce0a080000000000000c0004d8010078ce0a080000000000000c000ed8010078ce0a08000000 *0000000c0019d80100acce0a080000000000000c0023d80100acce0a080000000000000c002ed8 *0100e4ce0a080000000000000c0038d80100e4ce0a080000000000000c0041d8010004cf0a0800 *00000000000c004bd8010004cf0a080000000000000c0056d8010038cf0a080000000000000c00 *60d8010038cf0a080000000000000c006bd8010074cf0a080000000000000c0076d8010018da0a *080000000000000c007fd801007cc9110800000000000010008cd801002cda0a08000000000000 *0c0096d801002cda0a080000000000000c00a1d8010084da0a080000000000000c00aad801008c *c911080000000000001000b7d8010064e70a080000000000000c00c1d8010098da0a0800000000 *00000c00cbd8010098da0a080000000000000c00d6d80100d4da0a080000000000000c00e0d801 *00d4da0a080000000000000c00ebd8010010db0a080000000000000c00f5d8010010db0a080000 *000000000c0000d901004cdb0a080000000000000c000ad901004cdb0a080000000000000c0015 *d9010088db0a080000000000000c001fd9010088db0a080000000000000c002ad90100c4db0a08 *0000000000000c0034d90100c4db0a080000000000000c003fd9010000dc0a080000000000000c *0049d9010000dc0a080000000000000c0054d901003cdc0a080000000000000c005ed901003cdc *0a080000000000000c0069d9010078dc0a080000000000000c0073d9010078dc0a080000000000 *000c007ed90100b4dc0a080000000000000c0088d90100b4dc0a080000000000000c0093d90100 *f0dc0a080000000000000c009dd90100f0dc0a080000000000000c00a8d901002cdd0a08000000 *0000000c00b2d901002cdd0a080000000000000c00bdd9010068dd0a080000000000000c00c7d9 *010068dd0a080000000000000c00d2d90100a4dd0a080000000000000c00dcd90100a4dd0a0800 *00000000000c00e7d90100e0dd0a080000000000000c00f1d90100e0dd0a080000000000000c00 *fcd901001cde0a080000000000000c0006da01001cde0a080000000000000c0011da010058de0a *080000000000000c001bda010058de0a080000000000000c0026da010094de0a08000000000000 *0c0030da010094de0a080000000000000c003bda0100d0de0a080000000000000c0045da0100d0 *de0a080000000000000c0050da01000cdf0a080000000000000c005ada01000cdf0a0800000000 *00000c0065da010048df0a080000000000000c006fda010048df0a080000000000000c007ada01 *0084df0a080000000000000c0084da010084df0a080000000000000c008fda0100c0df0a080000 *000000000c0099da0100c0df0a080000000000000c00a4da0100fcdf0a080000000000000c00ae *da0100fcdf0a080000000000000c00b9da010038e00a080000000000000c00c3da010038e00a08 *0000000000000c00ceda010074e00a080000000000000c00d8da010074e00a080000000000000c *00e3da0100b0e00a080000000000000c00edda0100b0e00a080000000000000c00f8da0100ece0 *0a080000000000000c0002db0100ece00a080000000000000c000ddb010028e10a080000000000 *000c0017db010028e10a080000000000000c0022db010064e10a080000000000000c002cdb0100 *64e10a080000000000000c0037db0100a0e10a080000000000000c0041db0100a0e10a08000000 *0000000c004cdb0100dce10a080000000000000c0056db0100dce10a080000000000000c005fdb *010064e70a080000000000000c006adb01000cca1108000000000000100077db010074e70a0800 *00000000000c0080db010014ca110800000000000010008ddb010088e70a080000000000000c00 *97db010088e70a080000000000000c00a2db0100e0e70a080000000000000c00abdb010024ca11 *080000000000001000b8db0100f4e70a080000000000000c00c2db0100f4e70a08000000000000 *0c00cddb01004ce80a080000000000000c00d6db010034ca11080000000000001000e3db0100b4 *e80a080000000000000c00eddb010058e80a080000000000000c00f7db010058e80a0800000000 *00000c0000dc010084e80a080000000000000c000adc010084e80a080000000000000c0013dc01 *00b4e80a080000000000000c001edc0100e0e80a080000000000000c0027dc01003cca11080000 *00000000100034dc01002ce90a080000000000000c003edc0100f4e80a080000000000000c0048 *dc0100f4e80a080000000000000c0053dc01002ce90a080000000000000c005edc010068e90a08 *0000000000000c0067dc010054ca1108000000000000100074dc010080e90a080000000000000c *007edc010080e90a080000000000000c0089dc0100e0e90a080000000000000c0092dc010064ca *110800000000000010009fdc0100f4e90a080000000000000c00a9dc0100f4e90a080000000000 *000c00b4dc010068ea0a080000000000000c00bedc010068ea0a080000000000000c00c9dc0100 *a4ea0a080000000000000c00d3dc0100a4ea0a080000000000000c00dedc0100e0ea0a08000000 *0000000c00e8dc0100e0ea0a080000000000000c00f3dc01001ceb0a080000000000000c00fddc *01001ceb0a080000000000000c0008dd010058eb0a080000000000000c0012dd010058eb0a0800 *00000000000c001ddd010094eb0a080000000000000c0027dd010094eb0a080000000000000c00 *32dd0100d0eb0a080000000000000c003cdd0100d0eb0a080000000000000c0047dd01000cec0a *080000000000000c0051dd01000cec0a080000000000000c005cdd010048ec0a08000000000000 *0c0066dd010048ec0a080000000000000c0071dd010084ec0a080000000000000c007bdd010084 *ec0a080000000000000c0086dd0100c0ec0a080000000000000c0090dd0100c0ec0a0800000000 *00000c009bdd0100fcec0a080000000000000c00a5dd0100fcec0a080000000000000c00b0dd01 *0038ed0a080000000000000c00badd010038ed0a080000000000000c00c5dd010074ed0a080000 *000000000c00cfdd010074ed0a080000000000000c00dadd0100b0ed0a080000000000000c00e4 *dd0100b0ed0a080000000000000c00efdd0100eced0a080000000000000c00f9dd0100eced0a08 *0000000000000c0004de010028ee0a080000000000000c000ede010028ee0a080000000000000c *0019de010064ee0a080000000000000c0023de010064ee0a080000000000000c002ede0100a0ee *0a080000000000000c0038de0100a0ee0a080000000000000c0043de0100dcee0a080000000000 *000c004dde0100dcee0a080000000000000c0058de010018ef0a080000000000000c0062de0100 *18ef0a080000000000000c006dde010054ef0a080000000000000c0077de010054ef0a08000000 *0000000c0082de010090ef0a080000000000000c008cde010090ef0a080000000000000c0097de *0100ccef0a080000000000000c00a1de0100ccef0a080000000000000c00acde010008f00a0800 *00000000000c00b6de010008f00a080000000000000c00c1de010044f00a080000000000000c00 *cbde010044f00a080000000000000c00d6de010080f00a080000000000000c00e0de010080f00a *080000000000000c00e9de010088f60a080000000000000c00f3de010088f60a08000000000000 *0c00fede0100a0f60a080000000000000c0008df0100a0f60a080000000000000c0013df0100f0 *f60a080000000000000c001ddf0100f0f60a080000000000000c0028df0100b0f70a0800000000 *00000c0032df0100b0f70a080000000000000c003ddf0100ecf70a080000000000000c0047df01 *00ecf70a080000000000000c0052df010028f80a080000000000000c005cdf010028f80a080000 *000000000c0067df010064f80a080000000000000c0071df010064f80a080000000000000c007c *df0100a0f80a080000000000000c0086df0100a0f80a080000000000000c0091df0100dcf80a08 *0000000000000c009bdf0100dcf80a080000000000000c00a6df010018f90a080000000000000c *00b0df010018f90a080000000000000c00bbdf010054f90a080000000000000c00c5df010054f9 *0a080000000000000c00d0df010090f90a080000000000000c00dadf010090f90a080000000000 *000c00e5df0100ccf90a080000000000000c00efdf0100ccf90a080000000000000c00fadf0100 *08fa0a080000000000000c0004e0010008fa0a080000000000000c000fe0010044fa0a08000000 *0000000c0019e0010044fa0a080000000000000c0024e0010080fa0a080000000000000c002ee0 *010080fa0a080000000000000c0039e00100bcfa0a080000000000000c0043e00100bcfa0a0800 *00000000000c004ee00100f8fa0a080000000000000c0058e00100f8fa0a080000000000000c00 *63e0010034fb0a080000000000000c006de0010034fb0a080000000000000c0078e0010070fb0a *080000000000000c0082e0010070fb0a080000000000000c008be001005cff0a08000000000000 *0c0095e001005cff0a080000000000000c00a0e0010074ff0a080000000000000c00aae0010074 *ff0a080000000000000c00b5e00100c4ff0a080000000000000c00bfe00100c4ff0a0800000000 *00000c00cae0010084000b080000000000000c00d4e0010084000b080000000000000c00dfe001 *00c0000b080000000000000c00e9e00100c0000b080000000000000c00f4e00100fc000b080000 *000000000c00fee00100fc000b080000000000000c0007e101008c020b080000000000000c0011 *e101008c020b080000000000000c001ce10100a4020b080000000000000c0026e10100a4020b08 *0000000000000c0031e10100f4020b080000000000000c003be10100f4020b080000000000000c *0046e1010098030b080000000000000c004fe1010094cb110800000000000010005ce10100ac03 *0b080000000000000c0066e10100ac030b080000000000000c0071e1010004040b080000000000 *000c007ae101000c040b080000000000000c0083e1010014040b080000000000000c008ce10100 *bccb1108000000000000100099e10100cccb11080000000000001000a6e10100dccb1108000000 *0000001000b3e1010028040b080000000000000c00bde1010028040b080000000000000c00c8e1 *01008c040b080000000000000c00d2e101008c040b080000000000000c00dde10100f0040b0800 *00000000000c00e7e10100f0040b080000000000000c00f2e1010048050b080000000000000c00 *fde1010054050b080000000000000c0008e2010060050b080000000000000c0013e2010080050b *080000000000000c001de2010080050b080000000000000c0028e20100a0050b08000000000000 *0c0032e20100a0050b080000000000000c003de20100ac050b080000000000000c0048e20100b8 *050b080000000000000c0053e20100d8050b080000000000000c005de20100d8050b0800000000 *00000c0068e20100e4050b080000000000000c0073e20100f0050b080000000000000c007ee201 *0010060b080000000000000c0088e2010010060b080000000000000c0093e2010030060b080000 *000000000c009de2010030060b080000000000000c00a8e2010050060b080000000000000c00b2 *e2010050060b080000000000000c00bde201005c060b080000000000000c00c8e2010068060b08 *0000000000000c00d3e2010088060b080000000000000c00dde2010088060b080000000000000c *00e8e2010094060b080000000000000c00f3e20100a0060b080000000000000c00fee20100c006 *0b080000000000000c0008e30100c0060b080000000000000c0013e30100e0060b080000000000 *000c001de30100e0060b080000000000000c0028e30100ec060b080000000000000c0033e30100 *f8060b080000000000000c003ee3010018070b080000000000000c0048e3010018070b08000000 *0000000c0053e3010024070b080000000000000c005ee3010030070b080000000000000c0069e3 *010050070b080000000000000c0073e3010050070b080000000000000c007ee3010070070b0800 *00000000000c0088e3010070070b080000000000000c0093e3010090070b080000000000000c00 *9de3010090070b080000000000000c00a8e30100b0070b080000000000000c00b2e30100b0070b *080000000000000c00bde30100bc070b080000000000000c00c8e30100c8070b08000000000000 *0c00d3e30100e8070b080000000000000c00dde30100e8070b080000000000000c00e8e30100f4 *070b080000000000000c00f3e3010000080b080000000000000c00fee3010020080b0800000000 *00000c0008e4010020080b080000000000000c0013e4010040080b080000000000000c001de401 *0040080b080000000000000c0028e401004c080b080000000000000c0033e4010058080b080000 *000000000c003ee4010078080b080000000000000c0048e4010078080b080000000000000c0053 *e4010084080b080000000000000c005ee4010090080b080000000000000c0069e40100b0080b08 *0000000000000c0073e40100b0080b080000000000000c007ee40100d0080b080000000000000c *0088e40100d0080b080000000000000c0093e40100f0080b080000000000000c009de40100f008 *0b080000000000000c00a8e40100fc080b080000000000000c00b3e4010008090b080000000000 *000c00bee4010028090b080000000000000c00c8e4010028090b080000000000000c00d3e40100 *34090b080000000000000c00dee4010040090b080000000000000c00e9e4010060090b08000000 *0000000c00f3e4010060090b080000000000000c00fee4010080090b080000000000000c0008e5 *010080090b080000000000000c0013e501008c090b080000000000000c001ee5010098090b0800 *00000000000c0029e50100b8090b080000000000000c0033e50100b8090b080000000000000c00 *3ee50100c4090b080000000000000c0049e50100d0090b080000000000000c0054e50100f0090b *080000000000000c005ee50100f0090b080000000000000c0069e50100100a0b08000000000000 *0c0073e50100100a0b080000000000000c007ee50100300a0b080000000000000c0088e5010030 *0a0b080000000000000c0093e50100500a0b080000000000000c009de50100500a0b0800000000 *00000c00a8e50100700a0b080000000000000c00b2e50100900a0b080000000000000c00bce501 *00900a0b080000000000000c00c5e501002c190b080000000000000c00cfe501002c190b080000 *000000000c00dae5010064190b080000000000000c00e4e5010064190b080000000000000c00ef *e5010098190b080000000000000c00f9e5010098190b080000000000000c0004e60100c8190b08 *0000000000000c000ee60100c8190b080000000000000c0019e60100a01a0b080000000000000c *0023e60100a01a0b080000000000000c002ee60100dc1a0b080000000000000c0038e60100dc1a *0b080000000000000c0041e601001c1b0b080000000000000c004be601001c1b0b080000000000 *000c0056e60100501b0b080000000000000c0060e60100501b0b080000000000000c0069e60100 *901b0b080000000000000c0073e60100901b0b080000000000000c007ee60100201c0b08000000 *0000000c0088e60100201c0b080000000000000c0091e60100641c0b080000000000000c009be6 *0100641c0b080000000000000c00a6e60100981c0b080000000000000c00b0e60100981c0b0800 *00000000000c00bbe60100ec1c0b080000000000000c00c5e60100ec1c0b080000000000000c00 *d0e60100a81d0b080000000000000c00dae60100a81d0b080000000000000c00e5e601005c1e0b *080000000000000c00efe601005c1e0b080000000000000c00fae60100181f0b08000000000000 *0c0004e70100181f0b080000000000000c000de701002c1f0b080000000000000c0017e701002c *1f0b080000000000000c0022e70100601f0b080000000000000c002ce70100601f0b0800000000 *00000c0037e70100bc1f0b080000000000000c0041e70100bc1f0b080000000000000c004ae701 *0010200b080000000000000c0054e7010010200b080000000000000c005fe7010040200b080000 *000000000c0069e7010040200b080000000000000c0072e7010060200b080000000000000c007c *e7010060200b080000000000000c0087e7010094200b080000000000000c0091e7010094200b08 *0000000000000c009ce70100e8200b080000000000000c00a6e70100e8200b080000000000000c *00afe7010034210b080000000000000c00b9e7010034210b080000000000000c00c4e701007421 *0b080000000000000c00cee7010074210b080000000000000c00d7e70100c0210b080000000000 *000c00e1e70100c0210b080000000000000c00ece70100f0210b080000000000000c00f6e70100 *f0210b080000000000000c00ffe70100ac220b080000000000000c0009e80100ac220b08000000 *0000000c0014e8010048230b080000000000000c001ee8010048230b080000000000000c0027e8 *01008c230b080000000000000c0031e801008c230b080000000000000c003ce80100cc230b0800 *00000000000c0046e80100cc230b080000000000000c004fe8010018240b080000000000000c00 *59e8010018240b080000000000000c0064e8010044240b080000000000000c006ee8010044240b *080000000000000c0077e8010064240b080000000000000c0081e8010064240b08000000000000 *0c008ce8010098240b080000000000000c0096e8010098240b080000000000000c00a1e80100ec *240b080000000000000c00abe80100ec240b080000000000000c00b4e8010038250b0800000000 *00000c00bee8010038250b080000000000000c00c9e8010070250b080000000000000c00d3e801 *0070250b080000000000000c00dce80100b8250b080000000000000c00e6e80100b8250b080000 *000000000c00f1e80100e0250b080000000000000c00fbe80100e0250b080000000000000c0006 *e9010010260b080000000000000c0010e9010010260b080000000000000c0019e9010054260b08 *0000000000000c0023e9010054260b080000000000000c002ee9010088260b080000000000000c *0038e9010088260b080000000000000c0043e901002c270b080000000000000c004ce9010064cd *1108000000000000100059e901006c270b080000000000000c0063e9010040270b080000000000 *000c006de9010040270b080000000000000c0076e901006c270b080000000000000c0081e90100 *0c280b080000000000000c008be901000c280b080000000000000c0096e901003c280b08000000 *0000000c00a1e901004c280b080000000000000c00ace9010090280b080000000000000c00b7e9 *01000c290b080000000000000c00c2e90100b4280b080000000000000c00cce90100bc280b0800 *00000000000c00d6e90100bc280b080000000000000c00dfe90100d4280b080000000000000c00 *eae9010000290b080000000000000c00f4e901000c290b080000000000000c00fee901002c290b *080000000000000c0009ea01003c290b080000000000000c0014ea0100182a0b08000000000000 *0c001fea010050290b080000000000000c002aea0100a8290b080000000000000c0034ea0100b4 *290b080000000000000c003eea0100b4290b080000000000000c0047ea0100dc290b0800000000 *00000c0052ea0100082a0b080000000000000c005cea0100182a0b080000000000000c0066ea01 *00382a0b080000000000000c0071ea0100782a0b080000000000000c007cea0100a42a0b080000 *000000000c0087ea0100f82a0b080000000000000c0091ea0100f82a0b080000000000000c009c *ea0100202b0b080000000000000c00a6ea0100202b0b080000000000000c00b1ea0100542b0b08 *0000000000000c00bcea0100802b0b080000000000000c00c7ea0100d42b0b080000000000000c *00d1ea0100d42b0b080000000000000c00dcea0100fc2b0b080000000000000c00e6ea01007ccd *11080000000000001000f3ea0100642c0b080000000000000c00fcea010084cd11080000000000 *00100009eb0100782c0b080000000000000c0013eb0100782c0b080000000000000c001eeb0100 *ec2c0b080000000000000c0028eb0100ec2c0b080000000000000c0033eb01001c2d0b08000000 *0000000c003deb01001c2d0b080000000000000c0048eb0100c02d0b080000000000000c0051eb *0100a4cd110800000000000010005eeb0100d42d0b080000000000000c0068eb0100d42d0b0800 *00000000000c0073eb0100482e0b080000000000000c007deb0100482e0b080000000000000c00 *88eb0100782e0b080000000000000c0092eb0100782e0b080000000000000c009deb01001c2f0b *080000000000000c00a6eb0100c4cd11080000000000001000b3eb0100302f0b08000000000000 *0c00bdeb0100302f0b080000000000000c00c8eb0100882f0b080000000000000c00d1eb0100d4 *cd11080000000000001000deeb01009c2f0b080000000000000c00e8eb01009c2f0b0800000000 *00000c00f3eb0100f42f0b080000000000000c00fceb0100e4cd1108000000000000100009ec01 *0008300b080000000000000c0013ec010008300b080000000000000c001eec010060300b080000 *000000000c0027ec0100f4cd1108000000000000100034ec010074300b080000000000000c003e *ec010074300b080000000000000c0049ec0100cc300b080000000000000c0052ec010004ce1108 *00000000000010005fec0100e0300b080000000000000c0069ec0100e0300b080000000000000c *0074ec010060310b080000000000000c007eec010060310b080000000000000c0089ec01009c31 *0b080000000000000c0093ec01009c310b080000000000000c009eec0100ec310b080000000000 *000c00a8ec0100ec310b080000000000000c00b3ec010024320b080000000000000c00bdec0100 *24320b080000000000000c00c8ec010080320b080000000000000c00d2ec010080320b08000000 *0000000c00ddec010060330b080000000000000c00e7ec010060330b080000000000000c00f0ec *0100a8330b080000000000000c00faec0100a8330b080000000000000c0005ed0100d8330b0800 *00000000000c000fed0100d8330b080000000000000c001aed010014340b080000000000000c00 *24ed010014340b080000000000000c002fed010064340b080000000000000c0039ed010064340b *080000000000000c0044ed01009c340b080000000000000c004eed01009c340b08000000000000 *0c0059ed0100f8340b080000000000000c0063ed0100f8340b080000000000000c006eed010044 *350b080000000000000c0078ed010044350b080000000000000c0081ed010094350b0800000000 *00000c008bed010094350b080000000000000c0096ed0100bc350b080000000000000c00a0ed01 *00bc350b080000000000000c00abed0100f4350b080000000000000c00b5ed0100f4350b080000 *000000000c00beed010038360b080000000000000c00c8ed010038360b080000000000000c00d3 *ed01006c360b080000000000000c00dded01006c360b080000000000000c00e8ed010034370b08 *0000000000000c00f2ed010034370b080000000000000c00fbed010058370b080000000000000c *0005ee010058370b080000000000000c0010ee010090370b080000000000000c001aee01009037 *0b080000000000000c0025ee0100c4370b080000000000000c002fee0100c4370b080000000000 *000c003aee010018380b080000000000000c0044ee010018380b080000000000000c004fee0100 *74380b080000000000000c0059ee010074380b080000000000000c0064ee010024390b08000000 *0000000c006dee010044ce110800000000000010007aee0100843f0b080000000000000c0084ee *010038390b080000000000000c008fee010050390b080000000000000c0099ee010050390b0800 *00000000000c00a4ee0100583f0b080000000000000c00afee010078390b080000000000000c00 *baee0100c8390b080000000000000c00c5ee0100283a0b080000000000000c00cfee0100283a0b *080000000000000c00d8ee01004c3a0b080000000000000c00e2ee01004c3a0b08000000000000 *0c00edee0100803a0b080000000000000c00f7ee0100803a0b080000000000000c0000ef0100a4 *3a0b080000000000000c000aef0100a43a0b080000000000000c0015ef0100d03a0b0800000000 *00000c0020ef0100343b0b080000000000000c002aef0100343b0b080000000000000c0035ef01 *00703b0b080000000000000c003fef0100703b0b080000000000000c004aef0100d03b0b080000 *000000000c0054ef0100d03b0b080000000000000c005fef0100283c0b080000000000000c0069 *ef0100283c0b080000000000000c0072ef0100983c0b080000000000000c007def0100a83c0b08 *0000000000000c0087ef0100a83c0b080000000000000c0092ef0100083d0b080000000000000c *009cef0100083d0b080000000000000c00a7ef0100603d0b080000000000000c00b1ef0100603d *0b080000000000000c00baef0100d03d0b080000000000000c00c5ef0100fc3d0b080000000000 *000c00cfef0100fc3d0b080000000000000c00daef0100443e0b080000000000000c00e4ef0100 *443e0b080000000000000c00efef0100ac3e0b080000000000000c00f9ef0100b83e0b08000000 *0000000c0003f00100b83e0b080000000000000c000cf00100c43e0b080000000000000c0017f0 *0100f03e0b080000000000000c0021f00100fc3e0b080000000000000c002bf00100fc3e0b0800 *00000000000c0034f001001c3f0b080000000000000c003ff00100483f0b080000000000000c00 *49f00100583f0b080000000000000c0053f00100843f0b080000000000000c005ef00100dc3f0b *080000000000000c0067f0010054ce1108000000000000100074f00100f03f0b08000000000000 *0c007ef00100f03f0b080000000000000c0089f0010048400b080000000000000c0092f0010064 *ce110800000000000010009ff001005c400b080000000000000c00a9f001005c400b0800000000 *00000c00b4f00100b4400b080000000000000c00bdf0010074ce11080000000000001000caf001 *00c8400b080000000000000c00d4f00100c8400b080000000000000c00dff0010020410b080000 *000000000c00e8f0010084ce11080000000000001000f5f0010040410b080000000000000c00ff *f001002c410b080000000000000c0009f101002c410b080000000000000c0012f1010040410b08 *0000000000000c001df1010094ce110800000000000010002af10100a0410b080000000000000c *0034f10100a0410b080000000000000c003ff1010098ce110800000000000010004cf10100f041 *0b080000000000000c0056f10100f0410b080000000000000c0061f101009cce11080000000000 *0010006ef101007c420b080000000000000c0078f1010020420b080000000000000c0083f10100 *4c420b080000000000000c008ef1010070420b080000000000000c0098f101007c420b08000000 *0000000c00a3f1010088420b080000000000000c00acf10100a0ce11080000000000001000b9f1 *0100a44b0b080000000000000c00c3f10100b4420b080000000000000c00cdf10100b4420b0800 *00000000000c00d6f10100d4420b080000000000000c00e0f10100d4420b080000000000000c00 *ebf101000c430b080000000000000c00f5f101000c430b080000000000000c0000f2010060430b *080000000000000c000af2010060430b080000000000000c0013f2010080430b08000000000000 *0c001df2010080430b080000000000000c0028f20100b8430b080000000000000c0032f20100b8 *430b080000000000000c003df201001c440b080000000000000c0047f201001c440b0800000000 *00000c0052f2010058440b080000000000000c005cf2010058440b080000000000000c0067f201 *00a4440b080000000000000c0071f20100a4440b080000000000000c007cf2010004450b080000 *000000000c0086f2010004450b080000000000000c008ff2010028450b080000000000000c0099 *f2010028450b080000000000000c00a4f2010054450b080000000000000c00aff20100a4450b08 *0000000000000c00b9f20100a4450b080000000000000c00c2f20100c4450b080000000000000c *00ccf20100c4450b080000000000000c00d7f20100fc450b080000000000000c00e1f20100fc45 *0b080000000000000c00ecf2010050460b080000000000000c00f6f2010050460b080000000000 *000c00fff2010070460b080000000000000c0009f3010070460b080000000000000c0014f30100 *a8460b080000000000000c001ef30100a8460b080000000000000c0029f301000c470b08000000 *0000000c0033f301000c470b080000000000000c003ef3010048470b080000000000000c0048f3 *010048470b080000000000000c0053f3010094470b080000000000000c005df3010094470b0800 *00000000000c0068f30100f4470b080000000000000c0072f30100f4470b080000000000000c00 *7bf3010018480b080000000000000c0085f3010018480b080000000000000c0090f3010044480b *080000000000000c009bf3010094480b080000000000000c00a5f3010094480b08000000000000 *0c00aef30100b4480b080000000000000c00b8f30100b4480b080000000000000c00c3f30100ec *480b080000000000000c00cdf30100ec480b080000000000000c00d8f3010040490b0800000000 *00000c00e2f3010040490b080000000000000c00ebf3010060490b080000000000000c00f5f301 *0060490b080000000000000c0000f4010098490b080000000000000c000af4010098490b080000 *000000000c0015f40100fc490b080000000000000c001ff40100fc490b080000000000000c002a *f40100384a0b080000000000000c0034f40100384a0b080000000000000c003ff40100844a0b08 *0000000000000c0049f40100844a0b080000000000000c0054f40100e44a0b080000000000000c *005ef40100e44a0b080000000000000c0067f40100084b0b080000000000000c0071f40100084b *0b080000000000000c007cf40100344b0b080000000000000c0087f40100944b0b080000000000 *000c0091f40100a44b0b080000000000000c009cf40100a8ce11080000000000001000a9f40100 *c44b0b080000000000000c00b2f40100b0ce11080000000000001000bff40100d84b0b08000000 *0000000c00c9f40100d84b0b080000000000000c00d4f40100304c0b080000000000000c00ddf4 *0100c0ce11080000000000001000eaf40100444c0b080000000000000c00f4f40100444c0b0800 *00000000000c00fff40100b44c0b080000000000000c0009f50100b44c0b080000000000000c00 *14f50100144d0b080000000000000c001ef50100144d0b080000000000000c0029f50100504d0b *080000000000000c0033f50100504d0b080000000000000c003ef50100ac4d0b08000000000000 *0c0048f50100ac4d0b080000000000000c0051f50100c04d0b080000000000000c005bf50100c0 *4d0b080000000000000c0066f50100f84d0b080000000000000c0070f50100f84d0b0800000000 *00000c007bf501005c4e0b080000000000000c0085f501005c4e0b080000000000000c0090f501 *008c4e0b080000000000000c009bf50100e04e0b080000000000000c00a5f50100e04e0b080000 *000000000c00b0f501001c4f0b080000000000000c00baf501001c4f0b080000000000000c00c5 *f501006c4f0b080000000000000c00cff501006c4f0b080000000000000c00daf50100a84f0b08 *0000000000000c00e4f50100a84f0b080000000000000c00eff5010004500b080000000000000c *00f9f5010004500b080000000000000c0002f6010018500b080000000000000c000cf601001850 *0b080000000000000c0017f6010050500b080000000000000c0021f6010050500b080000000000 *000c002cf60100b4500b080000000000000c0036f60100b4500b080000000000000c0041f60100 *e4500b080000000000000c004cf601002c510b080000000000000c0057f6010040510b08000000 *0000000c0061f6010040510b080000000000000c006cf601007c510b080000000000000c0076f6 *01007c510b080000000000000c0081f60100c8510b080000000000000c008bf60100c8510b0800 *00000000000c0094f60100dc510b080000000000000c009ef60100dc510b080000000000000c00 *a9f6010014520b080000000000000c00b3f6010014520b080000000000000c00bef6010078520b *080000000000000c00c8f6010078520b080000000000000c00d3f60100a8520b08000000000000 *0c00def6010004530b080000000000000c00e8f6010004530b080000000000000c00f3f6010034 *530b080000000000000c00fdf6010090530b080000000000000c0007f7010090530b0800000000 *00000c0010f70100b4530b080000000000000c001af70100b4530b080000000000000c0025f701 *00d8530b080000000000000c0030f70100e0530b080000000000000c003bf7010050540b080000 *000000000c0045f701005c540b080000000000000c004ff701005c540b080000000000000c0058 *f7010084540b080000000000000c0062f7010084540b080000000000000c006df70100dc540b08 *0000000000000c0077f70100dc540b080000000000000c0082f7010018550b080000000000000c *008cf7010018550b080000000000000c0097f7010068550b080000000000000c00a1f701006855 *0b080000000000000c00acf70100a0550b080000000000000c00b6f70100a0550b080000000000 *000c00c1f70100fc550b080000000000000c00cbf70100fc550b080000000000000c00d6f70100 *48560b080000000000000c00e1f7010080560b080000000000000c00ecf70100cc560b08000000 *0000000c00f6f701004c570b080000000000000c0000f801004c570b080000000000000c000bf8 *010080570b080000000000000c0015f8010080570b080000000000000c0020f80100e8570b0800 *00000000000c002af80100e8570b080000000000000c0033f80100fc570b080000000000000c00 *3df80100fc570b080000000000000c0048f8010034580b080000000000000c0052f8010034580b *080000000000000c005df8010098580b080000000000000c0067f8010098580b08000000000000 *0c0070f8010014590b080000000000000c007af8010014590b080000000000000c0085f8010048 *590b080000000000000c008ff8010048590b080000000000000c009af8010098590b0800000000 *00000c00a4f8010098590b080000000000000c00aff80100cc590b080000000000000c00b9f801 *00cc590b080000000000000c00c2f80100505a0b080000000000000c00cdf80100605a0b080000 *000000000c00d8f80100685a0b080000000000000c00e3f80100b05a0b080000000000000c00ed *f80100bc5a0b080000000000000c00f7f80100bc5a0b080000000000000c0002f90100005b0b08 *0000000000000c000cf90100005b0b080000000000000c0017f90100445b0b080000000000000c *0022f90100a85b0b080000000000000c002cf90100b85b0b080000000000000c0036f90100b85b *0b080000000000000c0041f90100e45b0b080000000000000c004bf90100e45b0b080000000000 *000c0056f90100185c0b080000000000000c0060f90100185c0b080000000000000c006bf90100 *b45c0b080000000000000c0074f901000ccf1108000000000000100081f90100c85c0b08000000 *0000000c008bf90100c85c0b080000000000000c0096f901004c5d0b080000000000000c00a0f9 *01004c5d0b080000000000000c00abf90100845d0b080000000000000c00b5f90100845d0b0800 *00000000000c00c0f90100c05d0b080000000000000c00caf90100c05d0b080000000000000c00 *d5f901000c5e0b080000000000000c00dff901000c5e0b080000000000000c00eaf901006c5e0b *080000000000000c00f4f901006c5e0b080000000000000c00fff901009c5e0b08000000000000 *0c000afa0100e85e0b080000000000000c0014fa0100e85e0b080000000000000c001ffa01002c *5f0b080000000000000c0029fa01002c5f0b080000000000000c0034fa0100685f0b0800000000 *00000c003efa0100685f0b080000000000000c0049fa0100b45f0b080000000000000c0053fa01 *00b45f0b080000000000000c005efa010018600b080000000000000c0068fa010018600b080000 *000000000c0073fa010048600b080000000000000c007efa0100a4600b080000000000000c0088 *fa0100b4600b080000000000000c0092fa0100b4600b080000000000000c009dfa0100e4600b08 *0000000000000c00a7fa0100e4600b080000000000000c00b2fa01003c610b080000000000000c *00bcfa01003c610b080000000000000c00c7fa010034cf11080000000000001000d4fa0100dc61 *0b080000000000000c00ddfa01006c620b080000000000000c00e7fa01006c620b080000000000 *000c00f2fa010000630b080000000000000c00fcfa010000630b080000000000000c0005fb0100 *14630b080000000000000c000ffb010014630b080000000000000c0018fb01003c630b08000000 *0000000c0022fb01003c630b080000000000000c002dfb01006c630b080000000000000c0037fb *01006c630b080000000000000c0042fb0100b8630b080000000000000c004dfb0100c8630b0800 *00000000000c0058fb0100e4630b080000000000000c0062fb0100f0630b080000000000000c00 *6cfb0100f0630b080000000000000c0077fb010034640b080000000000000c0081fb010034640b *080000000000000c008cfb010068640b080000000000000c0096fb010068640b08000000000000 *0c00a1fb0100d4640b080000000000000c00abfb0100d4640b080000000000000c00b6fb010070 *650b080000000000000c00c0fb010070650b080000000000000c00cbfb0100d4650b0800000000 *00000c00d6fb0100ec650b080000000000000c00e0fb0100ec650b080000000000000c00ebfb01 *001c660b080000000000000c00f6fb010064660b080000000000000c0000fc010074660b080000 *000000000c000afc010074660b080000000000000c0015fc0100c0660b080000000000000c0020 *fc0100d8660b080000000000000c002afc0100d8660b080000000000000c0035fc010014670b08 *0000000000000c003ffc010014670b080000000000000c004afc010064670b080000000000000c *0054fc010064670b080000000000000c005ffc010098670b080000000000000c0069fc01009867 *0b080000000000000c0074fc0100e4670b080000000000000c007ffc010040680b080000000000 *000c0089fc010050680b080000000000000c0093fc010050680b080000000000000c009efc0100 *50690b080000000000000c00a9fc01007c690b080000000000000c00b4fc0100d4690b08000000 *0000000c00befc0100e4690b080000000000000c00c8fc0100e4690b080000000000000c00d3fc *0100286a0b080000000000000c00ddfc0100286a0b080000000000000c00e8fc0100606a0b0800 *00000000000c00f2fc0100606a0b080000000000000c00fdfc0100b46a0b080000000000000c00 *07fd0100b46a0b080000000000000c0012fd0100e86a0b080000000000000c001cfd0100e86a0b *080000000000000c0027fd0100446b0b080000000000000c0031fd0100446b0b08000000000000 *0c003cfd0100706c0b080000000000000c0046fd0100706c0b080000000000000c0051fd010094 *6c0b080000000000000c005cfd0100c06c0b080000000000000c0067fd0100186d0b0800000000 *00000c0071fd0100286d0b080000000000000c007bfd0100286d0b080000000000000c0086fd01 *007c6d0b080000000000000c0091fd0100986d0b080000000000000c009bfd0100986d0b080000 *000000000c00a6fd0100ec6d0b080000000000000c00b0fd0100ec6d0b080000000000000c00bb *fd0100386e0b080000000000000c00c6fd0100806e0b080000000000000c00d0fd0100906e0b08 *0000000000000c00dafd0100906e0b080000000000000c00e5fd0100bc6e0b080000000000000c *00f0fd0100d46e0b080000000000000c00fafd0100d46e0b080000000000000c0005fe0100106f *0b080000000000000c000ffe0100106f0b080000000000000c001afe01006c6f0b080000000000 *000c0024fe01006c6f0b080000000000000c002ffe0100c46f0b080000000000000c0039fe0100 *c46f0b080000000000000c0044fe0100f86f0b080000000000000c004efe0100f86f0b08000000 *0000000c0059fe010044700b080000000000000c0064fe0100a0700b080000000000000c006efe *0100b0700b080000000000000c0078fe0100b0700b080000000000000c0083fe010074710b0800 *00000000000c008cfe01005ccf1108000000000000100099fe0100347b0b080000000000000c00 *a3fe0100a8710b080000000000000c00aefe0100d4710b080000000000000c00b9fe010000720b *080000000000000c00c4fe010048760b080000000000000c00cffe01001c720b08000000000000 *0c00d9fe01001c720b080000000000000c00e2fe010030720b080000000000000c00ecfe010030 *720b080000000000000c00f7fe010068720b080000000000000c0001ff010068720b0800000000 *00000c000cff0100a4720b080000000000000c0016ff0100a4720b080000000000000c0021ff01 *0000730b080000000000000c002bff010000730b080000000000000c0034ff010014730b080000 *000000000c003eff010014730b080000000000000c0049ff01004c730b080000000000000c0053 *ff01004c730b080000000000000c005eff0100b0730b080000000000000c0068ff0100b0730b08 *0000000000000c0073ff0100ec730b080000000000000c007dff0100ec730b080000000000000c *0088ff010050740b080000000000000c0092ff010050740b080000000000000c009dff0100ac74 *0b080000000000000c00a7ff0100ac740b080000000000000c00b2ff0100e8740b080000000000 *000c00bcff0100e8740b080000000000000c00c7ff010048750b080000000000000c00d2ff0100 *b4750b080000000000000c00dcff0100c0750b080000000000000c00e6ff0100c0750b08000000 *0000000c00efff0100ec750b080000000000000c00f9ff0100ec750b080000000000000c000200 *02000c760b080000000000000c000d00020038760b080000000000000c001700020048760b0800 *00000000000c002100020078760b080000000000000c002b00020078760b080000000000000c00 *340002009c760b080000000000000c003e0002009c760b080000000000000c0049000200cc760b *080000000000000c0053000200cc760b080000000000000c005e00020004770b08000000000000 *0c006800020004770b080000000000000c007100020018770b080000000000000c007b00020018 *770b080000000000000c008600020050770b080000000000000c009000020050770b0800000000 *00000c009b000200b0770b080000000000000c00a5000200b0770b080000000000000c00b00002 *00ec770b080000000000000c00ba000200ec770b080000000000000c00c50002004c780b080000 *000000000c00cf0002004c780b080000000000000c00d80002009c780b080000000000000c00e3 *000200b0780b080000000000000c00ed000200b0780b080000000000000c00f8000200e0780b08 *0000000000000c000301020018790b080000000000000c000d01020018790b080000000000000c *001801020048790b080000000000000c0023010200e8790b080000000000000c002d010200f479 *0b080000000000000c0037010200f4790b080000000000000c0040010200347b0b080000000000 *000c004b010200447a0b080000000000000c0056010200707a0b080000000000000c0060010200 *7c7a0b080000000000000c006a0102007c7a0b080000000000000c0073010200a07a0b08000000 *0000000c007d010200a07a0b080000000000000c0086010200f87a0b080000000000000c009101 *0200247b0b080000000000000c009b010200507b0b080000000000000c00a401020064cf110800 *00000000001000b1010200307e0b080000000000000c00bb010200787b0b080000000000000c00 *c5010200787b0b080000000000000c00ce010200987b0b080000000000000c00d8010200987b0b *080000000000000c00e3010200cc7b0b080000000000000c00ed010200cc7b0b08000000000000 *0c00f8010200187c0b080000000000000c0002020200187c0b080000000000000c000d02020060 *7c0b080000000000000c0018020200707c0b080000000000000c0023020200887c0b0800000000 *00000c002d020200887c0b080000000000000c0036020200ac7c0b080000000000000c00410202 *00cc7c0b080000000000000c004b020200d47c0b080000000000000c0055020200d47c0b080000 *000000000c005e020200fc7c0b080000000000000c0069020200287d0b080000000000000c0073 *020200347d0b080000000000000c007d020200347d0b080000000000000c0086020200687d0b08 *0000000000000c0090020200687d0b080000000000000c009b0202008c7d0b080000000000000c *00a50202008c7d0b080000000000000c00b0020200d87d0b080000000000000c00ba020200d87d *0b080000000000000c00c5020200307e0b080000000000000c00d00202000c7f0b080000000000 *000c00d902020084cf11080000000000001000e602020080800b080000000000000c00f0020200 *1c7f0b080000000000000c00fb020200387f0b080000000000000c0005030200387f0b08000000 *0000000c0010030200747f0b080000000000000c001a030200747f0b080000000000000c002503 *0200cc7f0b080000000000000c002f030200cc7f0b080000000000000c003a03020080800b0800 *00000000000c004503020008800b080000000000000c005003020070800b080000000000000c00 *5a0302008c800b080000000000000c00630302008ccf110800000000000010007003020000840b *080000000000000c007a030200bc800b080000000000000c0084030200bc800b08000000000000 *0c008d030200dc800b080000000000000c0097030200dc800b080000000000000c00a203020010 *810b080000000000000c00ac03020010810b080000000000000c00b70302005c810b0800000000 *00000c00c10302005c810b080000000000000c00cc030200a4810b080000000000000c00d70302 *00b4810b080000000000000c00e2030200cc810b080000000000000c00ec030200cc810b080000 *000000000c00f5030200f0810b080000000000000c000004020010820b080000000000000c000a *04020018820b080000000000000c001404020018820b080000000000000c001d04020040820b08 *0000000000000c00280402006c820b080000000000000c003204020078820b080000000000000c *003c04020078820b080000000000000c0045040200ac820b080000000000000c004f040200ac82 *0b080000000000000c005a040200d0820b080000000000000c0064040200d0820b080000000000 *000c006f0402001c830b080000000000000c00790402001c830b080000000000000c0084040200 *74830b080000000000000c008e04020074830b080000000000000c0099040200c8830b08000000 *0000000c00a3040200c8830b080000000000000c00ae04020000840b080000000000000c00b904 *02006c840b080000000000000c00c20402009ccf11080000000000001000cf04020084840b0800 *00000000000c00d904020084840b080000000000000c00e404020064850b080000000000000c00 *ee04020064850b080000000000000c00f70402008c850b080000000000000c00010502008c850b *080000000000000c000a050200b4850b080000000000000c0014050200b4850b08000000000000 *0c001d050200dc850b080000000000000c0027050200dc850b080000000000000c0030050200d0 *860b080000000000000c003a050200d0860b080000000000000c004305020000870b0800000000 *00000c004e05020014870b080000000000000c005805020014870b080000000000000c00610502 *0044870b080000000000000c006c05020058870b080000000000000c007605020058870b080000 *000000000c007f05020088870b080000000000000c008a050200a8870b080000000000000c0094 *050200a8870b080000000000000c009f050200c8870b080000000000000c00a9050200e0870b08 *0000000000000c00b405020020880b080000000000000c00bf0502006c880b080000000000000c *00ca050200d0880b080000000000000c00d405020060890b080000000000000c00df0502008c89 *0b080000000000000c00ea050200cc890b080000000000000c00f4050200e4890b080000000000 *000c00ff050200108a0b080000000000000c000a060200508a0b080000000000000c0014060200 *bc8a0b080000000000000c001e060200bc8a0b080000000000000c0027060200008b0b08000000 *0000000c0031060200008b0b080000000000000c003a060200288b0b080000000000000c004406 *0200288b0b080000000000000c004d060200708b0b080000000000000c0057060200708b0b0800 *00000000000c00600602000c171208040000000100170060060200101712080400000001001700 *600602001417120804000000010017006006020018171208040000000100170073060200988f0b *081800000001000c007d060200cc8e0b080500000002000c0087060200988f0b08240000000200 *0c0092060200d48e0b082b00000002000c009d060200008f0b082b00000002000c00a806020040 *8f0b081400000001000c0022560100488f0b080800000001000c002c560100488f0b0812000000 *02000c00b20602005c8f0b080800000002000c00bd060200648f0b080800000002000c00c80602 *00808f0b081400000001000c00d2060200c8900b081800000001000c00dc060200fc8f0b080500 *000002000c00e6060200c8900b082400000002000c00f106020004900b082b00000002000c00fc *06020030900b082b00000002000c000707020070900b081400000001000c00926e010078900b08 *0800000001000c001107020078900b081200000002000c001a0702008c900b080800000002000c *002507020094900b080800000002000c0030070200b0900b081400000001000c003a070200f891 *0b081800000001000c00440702002c910b080500000002000c004e070200f8910b082400000002 *000c005907020034910b082b00000002000c006407020060910b082b00000002000c006f070200 *a0910b081400000001000c0079070200a8910b080800000001000c0083070200a8910b08120000 *0002000c008c070200bc910b080800000002000c0097070200c4910b080800000002000c00a207 *0200e0910b081400000001000c00ac0702001c920b080800000001000c00d207020038940b0810 *00000001000c00dc07020078920b080200000002000c00e6070200d0920b082a00000002000c00 *f107020084920b080800000001000c00fb07020084920b083100000002000c0004080200d0920b *081800000001000c000e08020004930b080800000001000c001808020004930b08330000000200 *0c002108020040930b080800000001000c002b08020040930b083000000002000c003608020078 *930b080800000001000c004008020078930b080600000002000c00490802008c930b080c000000 *01000c00530802008c930b085200000002000c005c080200ec930b080c00000001000c00660802 *00ec930b081a00000002000c006f08020014940b080c00000001000c007908020014940b081100 *000002000c008208020038940b082f00000002000c008d08020068940b080800000001000c00b2 *080200fc940b081000000001000c00bc080200bc940b080800000001000c00c6080200bc940b08 *2f00000002000c00d1080200fc940b084a00000002000c00dc08020048950b080800000001000c *000309020084970b080c00000001000c000d09020088950b080200000002000c00876e0100e095 *0b082a00000002000c001709020094950b080800000001000c002109020094950b083100000002 *000c007d6e0100e0950b081800000001000c002a09020014960b080800000001000c0034090200 *14960b083300000002000c000e6f010050960b080800000001000c00186f010050960b08300000 *0002000c00576f010090960b081000000001000c00616f010090960b084a00000002000c003d09 *0200e4960b080800000001000c0047090200e4960b083a00000002000c00500902002c970b080c *00000001000c005a0902002c970b084900000002000c006309020084970b081700000002000c00 *600602001c17120804000000010017006006020020171208040000000100170060060200241712 *08040000000100170060060200281712080400000001001700600602002c171208040000000100 *170060060200301712080400000001001700600602003417120804000000010017006006020038 *17120804000000010017006c090200989c0b080400000001000c009a090200fc9c0b0804000000 *01000c00600602003c1712080400000001001700c9090200609e0b080c00000001000c00d30902 *00a09e0b081800000001000c00dd090200f89e0b081800000001000c00e7090200449f0b081800 *000001000c00f10902004c9e0b080800000001000c00fb0902004c9e0b080800000002000c0004 *0a0200609e0b082100000002000c000f0a0200849e0b080200000002000c00190a0200a09e0b08 *0800000002000c00240a0200a89e0b080200000002000c002e0a0200f89e0b082d00000002000c *00390a0200b49e0b080800000001000c00430a0200b49e0b080900000002000c004c0a0200c89e *0b080800000001000c00560a0200c89e0b081700000002000c005f0a0200289f0b080200000002 *000c00690a0200449f0b080800000002000c00740a0200cca00b081800000001000c007e0a0200 *989f0b080500000002000c00880a0200cca00b082d00000002000c00930a0200a89f0b08080000 *0001000c009d0a0200a89f0b080800000002000c00a60a0200bc9f0b080c00000001000c00b00a *0200bc9f0b082100000002000c00bb0a0200e09f0b080200000002000c00c50a0200fc9f0b0808 *00000002000c00d00a0200fc9f0b081800000001000c00da0a02000ca00b080800000001000c00 *e40a02000ca00b080900000002000c00ed0a020020a00b080800000001000c00f70a020020a00b *081b00000002000c00000b020044a00b080800000001000c000a0b020044a00b08700000000200 *0c0060060200401712080400000001001700130b020070a10b080800000001000c001d0b020070 *a10b081400000002000c00260b0200f4a10b080800000001000c00300b0200a8a10b080c000000 *01000c003a0b0200a8a10b084100000002000c00450b0200f4a10b083c00000002000c004e0b02 *00aca20b081400000001000c00580b020060a20b080b00000002000c00630b020074a20b080800 *000001000c006d0b020074a20b081200000002000c00760b020088a20b080f00000002000c0081 *0b020028a30b081400000001000c008b0b0200e4a20b080800000001000c00950b0200e4a20b08 *1200000002000c009e0b0200f8a20b080f00000002000c00a90b020008a30b080b00000002000c *00b40b02005ca30b080800000001000c00be0b02005ca30b081400000002000c00c70b0200d8a3 *0b080800000001000c00d10b020018a40b080800000001000c00db0b0200d8a30b083700000002 *000c00e60b020018a40b082900000002000c00f10b0200a8a40b081400000001000c00fb0b0200 *80a40b081100000002000c00050c020020a50b080800000001000c000f0c020060a50b08080000 *0001000c00190c020044a60b080c00000001000c00230c020020a50b083700000002000c002e0c *020060a50b082900000002000c00390c020098a50b080c00000001000c00430c020098a50b084b *00000002000c004e0c0200f0a50b080c00000001000c00580c0200f0a50b084700000002000c00 *630c020044a60b084700000002000c006e0c0200f0a60b081400000001000c00780c0200c8a60b *081100000002000c00600602004417120804000000010017006006020048171208040000000100 *1700600602004c1712080400000001001700820c020038a90b080c00000001000c008b0c02008c *a90b080c00000001000c00940c020060a80b082100000002000c009e0c020084a80b080e000000 *02000c00a80c0200a8a80b081400000001000c00b10c0200a8a80b081700000002000c00bb0c02 *00c0a80b080e00000002000c00c50c0200d0a80b081e00000002000c00cf0c020004a90b081400 *000001000c00d80c020004a90b081400000002000c00e20c02002ca90b081400000001000c00eb *0c020038a90b082c00000002000c00f50c020064a90b080800000002000c00fe0c020080a90b08 *1400000001000c00070d02008ca90b082d00000002000c00600602005017120804000000010017 *00110d020058ab0b081400000001000c001b0d020088aa0b080e00000002000c00260d020098aa *0b080800000002000c00310d0200a8aa0b080800000001000c003b0d0200a8aa0b082900000002 *000c00460d0200d4aa0b084400000002000c00510d02002cab0b081400000001000c005b0d0200 *2cab0b081500000002000c00660d0200dcac0b081400000001000c00700d020094ab0b080e0000 *0002000c007b0d0200acab0b080800000001000c00850d0200acab0b083900000002000c008e0d *0200f0ab0b080800000001000c00980d0200f0ab0b083700000002000c00a30d020030ac0b0808 *00000001000c00ad0d020030ac0b080b00000002000c00b60d020044ac0b080800000001000c00 *c00d020044ac0b082a00000002000c00cb0d020070ac0b085500000002000c00d60d0200acad0b *081400000001000c00e00d020008ad0b080e00000002000c00eb0d020020ad0b08080000000100 *0c00f50d020020ad0b082900000002000c00000e02004cad0b084a00000002000c000b0e02003c *af0b081400000001000c00150e0200c4ad0b080e00000002000c00200e0200dcad0b0808000000 *01000c002a0e0200dcad0b083900000002000c00330e020020ae0b080800000001000c003d0e02 *0020ae0b083700000002000c00480e020058ae0b080e00000002000c00530e020068ae0b080b00 *000002000c005e0e020088ae0b081400000001000c00680e020090ae0b080800000001000c0072 *0e020090ae0b080c00000002000c007b0e0200a4ae0b080800000001000c00850e0200a4ae0b08 *2a00000002000c00900e0200d0ae0b085500000002000c009b0e020080b00b081400000001000c *00a50e02006caf0b080e00000002000c00b00e02007caf0b083500000002000c00bb0e0200bcaf *0b080800000001000c00c50e0200bcaf0b082f00000002000c00d00e0200ecaf0b085700000002 *000c00db0e020058b00b081400000001000c00e50e020058b00b081200000002000c00f00e0200 *fcb10b080c00000001000c00fa0e0200fcb10b082900000002000c00050f0200c8b00b080e0000 *0002000c00100f0200e0b00b080800000001000c001a0f0200e0b00b085300000002000c00250f *020034b10b085300000002000c00300f020088b10b080e00000002000c003b0f0200acb10b0814 *00000001000c00450f0200acb10b082d00000002000c00500f0200f0b10b081400000001000c00 *5a0f02003cb30b080c00000002000c00630f02005cb20b080e00000002000c006e0f02006cb20b *080e00000002000c00790f02007cb20b080e00000002000c00840f02008cb20b080b0000000200 *0c008f0f0200acb20b081400000001000c00990f0200b4b20b080800000001000c00a30f0200b4 *b20b081e00000002000c00ac0f0200d4b20b081b00000002000c00b70f020004b30b0814000000 *01000c00c10f020004b30b081b00000002000c00cc0f020034b30b081400000001000c00d60f02 *003cb30b080800000001000c00e00f0200b0b30b080800000001000c00ea0f0200fcb30b081400 *000001000c00f40f0200b0b30b082900000002000c00ff0f0200dcb30b080b00000002000c0009 *1002008cb40b081400000001000c001310020038b40b080e00000002000c001e10020048b40b08 *2e00000002000c006006020054171208040000000100170029100200d4b50b081400000001000c *0032100200f4b40b080e00000002000c003c10020004b50b080800000002000c004610020014b5 *0b080800000001000c004f10020014b50b082f00000002000c005910020044b50b084700000002 *000c0063100200a0b50b081400000001000c006c100200a0b50b081e00000002000c0076100200 *30b60b081400000001000c007f10020004b60b080b00000002000c008910020010b60b080b0000 *0002000c009310020030b60b080400000001000c00ac10020078b60b081400000001000c00b510 *020050b60b080a00000002000c00bf1002005cb60b080800000002000c00c9100200c4b60b0814 *00000001000c00d210020090b60b080e00000002000c00dc100200a0b60b080e00000002000c00 *e610020028b70b081400000001000c00ef100200f4b60b080b00000002000c00f910020000b70b *081100000002000c0003110200bcb80b080c00000001000c000c1102000cb90b080c0000000100 *0c00151102008cb70b080800000001000c001e1102008cb70b082600000002000c0026110200bc *b70b080800000001000c002f110200bcb70b081800000002000c0037110200d4b70b080f000000 *02000c0041110200ecb70b080800000001000c004a110200ecb70b082600000002000c00521102 *001cb80b080800000001000c005b1102001cb80b081800000002000c006311020034b80b081800 *000002000c006d1102004cb80b081e00000002000c007711020080b80b081400000001000c0080 *11020080b80b081a00000002000c008a110200b0b80b081400000001000c0093110200bcb80b08 *2600000002000c009d110200e4b80b080800000002000c00a611020000b90b081400000001000c *00af1102000cb90b082d00000002000c00b911020008bb0b080c00000001000c00c31102005cbb *0b080c00000001000c00cd11020018ba0b080800000001000c00d711020018ba0b083c00000002 *000c00e211020054ba0b080800000002000c00d46c010070ba0b081400000001000c00ec110200 *78ba0b080800000001000c00f611020078ba0b085c00000002000c00ff110200dcba0b08080000 *0001000c0009120200dcba0b081d00000002000c001212020008bb0b082c00000002000c001d12 *020034bb0b080800000002000c002712020050bb0b081400000001000c00311202005cbb0b082d *00000002000c003c120200acbb0b080800000001000c0046120200acbb0b080800000002000c00 *4f120200d4bb0b080800000001000c0059120200d4bb0b080800000002000c0060060200581712 *08040000000100170062120200e0bc0b080400000001000c007d12020028bd0b08080000000100 *0c008712020028bd0b083700000002000c009012020060bd0b080400000001000c00ab120200ac *bd0b080800000001000c00b5120200acbd0b083d00000002000c00600602005c17120804000000 *010017006006020060171208040000000100170060060200641712080400000001001700600602 *00681712080400000001001700be1202004cc00b080800000001000c00c812020020c10b080c00 *000001000c00d2120200d8bf0b080800000001000c00dc120200d8bf0b082d00000002000c00e7 *12020010c00b080800000001000c00f112020010c00b083400000002000c00fa1202004cc00b08 *2a00000002000c000513020078c00b080b00000002000c00101302008cc00b080800000001000c *001a1302008cc00b080b00000002000c002313020098c00b080f00000002000c002e130200bcc0 *0b081400000001000c0038130200c4c00b080800000001000c0042130200c4c00b081e00000002 *000c004b130200ecc00b080800000001000c0055130200ecc00b080c00000002000c005e130200 *00c10b080800000001000c006813020000c10b081100000002000c007113020020c10b082f0000 *0002000c00600602006c17120804000000010017006a9c010074c30b080800000001000c007c13 *020014c20b081500000002000c008713020034c20b080800000001000c009113020034c20b081e *00000002000c00abb900008cc20b082900000002000c009a13020054c20b081500000002000c00 *a513020080c20b081400000001000c00a1b900008cc20b080c00000001000c0012c10000c0c20b *080800000001000c00af130200c0c20b080600000002000c00b8130200d0c20b08080000000100 *0c00c2130200d0c20b084300000002000c00cb1302001cc30b080800000001000c00d51302001c *c30b085000000002000c00749c010074c30b080d00000002000c00600602007017120804000000 *010017006006020074171208040000000100170060060200781712080400000001001700600602 *007c1712080400000001001700de13020090c50b080800000001000c00e813020090c50b080b00 *000002000c00600602008017120804000000010017006006020084171208040000000100170060 *060200881712080400000001001700600602008c17120804000000010017006006020090171208 *040000000100170060060200941712080400000001001700600602009817120804000000010017 *00600602009c1712080400000001001700f113020030c90b080800000001000c00fb13020020c9 *0b080c00000001000c000514020020c90b080800000002000c001014020030c90b083000000002 *000c0019140200a4c90b080800000001000c0023140200a4c90b080c00000002000c002c140200 *88ca0b081400000001000c003614020054ca0b080e00000002000c004114020064ca0b080e0000 *0002000c004c140200e8ca0b080800000001000c0056140200b4ca0b080b00000002000c006114 *0200c0ca0b080b00000002000c006c140200e0ca0b081400000001000c0076140200e8ca0b081e *00000002000c007f14020068cb0b080800000001000c008914020034cb0b080b00000002000c00 *9414020040cb0b080b00000002000c009f14020060cb0b081400000001000c00a914020068cb0b *081e00000002000c00b2140200f4cb0b080800000001000c00bc140200b4cb0b080e0000000200 *0c00c7140200c4cb0b080e00000002000c00d1140200eccb0b081800000001000c00db140200f4 *cb0b081e00000002000c00e414020080cc0b080800000001000c00ee14020040cc0b080e000000 *02000c00f914020050cc0b080e00000002000c000315020078cc0b081800000001000c000d1502 *0080cc0b081e00000002000c00161502000ccd0b080800000001000c0020150200cccc0b080e00 *000002000c002b150200dccc0b080e00000002000c003515020004cd0b081800000001000c003f *1502000ccd0b081e00000002000c002945000098cd0b080800000001000c004815020058cd0b08 *0e00000002000c005315020068cd0b080e00000002000c005d15020090cd0b081800000001000c *006715020098cd0b081e00000002000c0070150200fccd0b081400000001000c007a150200d0cd *0b080800000002000c0085150200d8cd0b080e00000002000c009015020040ce0b081400000001 *000c009a15020014ce0b080e00000002000c00a515020024ce0b080800000002000c00b0150200 *d0ce0b080c00000001000c00ba150200d0ce0b086900000002000c00c515020094ce0b08080000 *0001000c00cf15020094ce0b082d00000002000c00da15020070d00b081400000001000c00e415 *020068cf0b080e00000002000c00ef15020078cf0b080e00000002000c00fa1502009ccf0b0814 *00000001000c00041602009ccf0b080f00000002000c000f160200accf0b080e00000002000c00 *1a160200c4cf0b080800000001000c0024160200c4cf0b082800000002000c002d160200f4cf0b *080800000001000c0037160200f4cf0b081400000002000c004016020008d00b081d0000000200 *0c004b1602003cd00b081400000001000c00551602003cd00b081d00000002000c0060160200d8 *d00b080800000001000c006a1602009cd00b080e00000002000c0075160200acd00b080e000000 *02000c0080160200d0d00b081400000001000c008a160200d8d00b081e00000002000c00931602 *0078d20b080c00000001000c0073300000b0d20b080c00000001000c009d16020058d10b080d00 *000002000c00a816020068d10b080e00000002000c00b31602008cd10b081400000001000c00bd *1602008cd10b080f00000002000c00c81602009cd10b080e00000002000c00d3160200acd10b08 *0800000002000c00dd160200c8d10b081400000001000c00e7160200c8d10b085c00000002000c *00f216020038d20b081400000001000c00fc16020038d20b081d00000002000c00071702006cd2 *0b081400000001000c001117020078d20b082900000002000c007d300000b0d20b081d00000002 *000c001c170200a0d40b080c00000001000c00b431000008d50b080800000001000c0026170200 *5cd50b080c00000001000c006833000088d50b080c00000001000c0030170200b4d50b080c0000 *0001000c0090330000e0d50b080c00000001000c003a1702000cd60b080c00000001000c00012e *000038d60b080c00000001000c004417020094d30b080e00000002000c004f170200a4d30b080e *00000002000c005a170200c8d30b081400000001000c0064170200c8d30b080f00000002000c00 *6f170200d8d30b080e00000002000c007a170200e8d30b081100000002000c0085170200a0d40b *082900000002000c0090170200fcd30b080500000002000c009a1702001cd40b08180000000100 *0c00a41702001cd40b082e00000002000c00af17020060d40b081400000001000c00b917020060 *d40b081d00000002000c00c417020094d40b081400000001000c0038310000d4d40b0808000000 *01000c0042310000d4d40b082900000002000c00be31000008d50b084500000002000c00ce1702 *005cd50b081d00000002000c007233000088d50b081d00000002000c00d9170200b4d50b081d00 *000002000c009a330000e0d50b081d00000002000c00e41702000cd60b081d00000002000c00a5 *33000038d60b081d00000002000c00ef170200e0d60b080c00000001000c00f9170200e0d60b08 *6f00000002000c0004180200a4d60b080800000001000c000e180200a4d60b082d00000002000c *0019180200e8d70b080c00000001000c0023180200e8d70b086900000002000c002e180200acd7 *0b080800000001000c0038180200acd70b082d00000002000c004318020008d90b080c00000001 *000c004d18020008d90b082f00000002000c005818020098d80b080b00000002000c0063180200 *a4d80b084100000002000c006e180200fcd80b081400000001000c007818020020da0b08140000 *0001000c008218020068d90b080e00000002000c008d18020080d90b080800000001000c009718 *020080d90b082f00000002000c00a2180200b0d90b085a00000002000c00ad180200d4da0b0814 *00000001000c00b718020038da0b080800000002000c00c218020048da0b080800000001000c00 *cc18020048da0b082f00000002000c00d718020078da0b084700000002000c00e2180200f4da0b *080800000001000c00ec180200f4da0b080800000002000c00f51802001cdb0b08080000000100 *0c00ff1802001cdb0b080800000002000c000819020044db0b080800000001000c001219020044 *db0b080800000002000c001b1902006cdb0b080800000001000c00251902006cdb0b0808000000 *02000c002e190200dcdb0b080800000001000c0038190200dcdb0b080800000002000c00a63e00 *0004dc0b080800000001000c004119020004dc0b080800000002000c0060060200a01712080400 *00000100170060060200a4171208040000000100170060060200a817120804000000010017004a *1902009cde0b080800000001000c006019020000df0b080c00000001000c006a19020000df0b08 *3000000002000c0060060200ac171208040000000100170060060200b017120804000000010017 *0060060200b4171208040000000100170060060200b8171208040000000100170075190200d0e1 *0b080400000001000c008c19020034e20b080400000001000c00a319020098e20b080800000001 *000c00ba190200d8e30b081400000001000c00c4190200d0e20b084100000002000c00cf190200 *20e30b080c00000001000c00d919020020e30b084d00000002000c00e219020070e30b08510000 *0002000c00ed190200d8e30b080c00000001000c00041a020024e40b080800000001000c00231a *020098e50b081000000001000c002d1a0200cce50b080c00000001000c00371a020094e40b080c *00000001000c00411a020094e40b085300000002000c004a1a0200f4e40b080c00000001000c00 *541a0200f4e40b083000000002000c005f1a020030e50b080c00000001000c00691a020030e50b *085600000002000c00721a020098e50b082600000002000c007d1a0200cce50b08360000000200 *0c00881a020004e60b080400000001000c009c1a020048e60b080c00000001000c00a61a020048 *e60b080e00000002000c00af1a020058e60b080400000001000c00c31a0200b0e60b080c000000 *01000c00cd1a020098e60b080800000001000c00d71a020098e60b080b00000002000c00e01a02 *00b0e60b082f00000002000c00e91a0200e0e60b081800000001000c00fd1a0200b8e70b080c00 *000001000c00071b020040e70b080800000002000c00121b020048e70b081400000002000c001d *1b02005ce70b081400000002000c00281b020088e70b081800000001000c00321b020094e70b08 *0c00000001000c003c1b020094e70b081500000002000c00451b0200b8e70b080900000002000c *0060060200bc17120804000000010017004e1b0200bce80b080800000001000c00581b0200bce8 *0b080500000002000c0060060200c01712080400000001001700611b020014eb0b081400000001 *000c006b1b020088ea0b082b00000002000c00761b0200bcea0b080800000001000c00801b0200 *bcea0b082a00000002000c00891b0200e8ea0b081500000002000c00941b020034eb0b08080000 *0001000c009e1b020034eb0b083f00000002000c00a71b020094eb0b080800000001000c00b11b *020094eb0b082400000002000c00ba1b0200d8eb0b080800000001000c00c41b0200d8eb0b082d *00000002000c00cd1b020060ec0b080800000001000c00d71b020028ec0b080800000001000c00 *e11b020028ec0b082e00000002000c00ea1b020060ec0b081400000002000c00f31b0200ccec0b *080800000001000c00fd1b020094ec0b080800000001000c00071c020094ec0b082f0000000200 *0c00101c0200ccec0b081400000002000c00191c020038ed0b080800000001000c00231c020000 *ed0b080800000001000c002d1c020000ed0b082e00000002000c00361c020038ed0b0814000000 *02000c0060060200c417120804000000010017003f1c020040ee0b081400000001000c00491c02 *0010ee0b080900000002000c00541c02001cee0b080e00000002000c005f1c0200b0ee0b081400 *000001000c00691c020058ee0b080800000002000c00741c020060ee0b083900000002000c0055 *2d0000b8ef0b080800000001000c007f1c0200fcee0b080800000001000c00891c0200fcee0b08 *9a00000002000c00921c0200a4ef0b080c00000001000c009c1c0200a4ef0b080c00000002000c *005f2d0000b8ef0b086600000002000c00a71c0200b0f10b081400000001000c00b11c020050f0 *0b080e00000002000c00bc1c020060f00b080e00000002000c00c71c020070f00b080e00000002 *000c00d21c020088f00b080800000001000c00dc1c020088f00b083b00000002000c00e71c0200 *c4f00b087200000002000c00f21c02004cf10b081400000001000c00fc1c02004cf10b081d0000 *0002000c00071d020080f10b081400000001000c00111d020080f10b081a00000002000c001c1d *020084f20b080c00000001000c00261d020084f20b082900000002000c00311d0200f0f10b080e *00000002000c003c1d020000f20b080800000002000c00461d02001cf20b081400000001000c00 *501d02001cf20b084600000002000c005b1d020078f20b081400000001000c00651d0200b0f20b *080400000001000c007b1d0200f4f30b081400000001000c00851d0200e8f20b080d0000000200 *0c00901d0200f8f20b080b00000002000c009b1d02000cf30b080800000001000c00a51d02000c *f30b081400000002000c005a32000028f30b080800000001000c006432000028f30b0836000000 *02000c00ae1d020060f30b083f00000002000c00b91d0200bcf30b081200000002000c00c21d02 *00b4f30b081400000001000c00a3320000bcf30b080800000001000c00cc1d0200d0f30b080e00 *000002000c00d71d02000cf50b081200000002000c009a15020028f40b080e00000002000c00e0 *1d020038f40b081100000002000c00eb1d02004cf40b082e00000002000c00f61d020090f40b08 *1400000001000c00001e020098f40b080800000001000c000a1e020098f40b081e00000002000c *00131e0200c0f40b080800000001000c001d1e0200c0f40b081b00000002000c00a5150200dcf4 *0b081200000002000c009015020004f50b081400000001000c00261e02000cf50b080800000001 *000c00301e0200f8f50b081200000002000c00391e020054f50b080e00000002000c00441e0200 *64f50b080e00000002000c004f1e020074f50b080e00000002000c005a1e020098f50b08140000 *0001000c0090450000a0f50b080800000001000c00641e0200a0f50b081e00000002000c006d1e *0200c0f50b081b00000002000c00781e0200f0f50b081400000001000c00821e0200f8f50b0808 *00000001000c008c1e0200acf60b081400000001000c00961e02003cf60b080e00000002000c00 *a11e02004cf60b080e00000002000c00ac1e02005cf60b080800000002000c00b71e020078f60b *081400000001000c00c11e020078f60b081e00000002000c00cc1e02004cf70b08140000000100 *0c00d61e0200dcf60b080e00000002000c00e11e0200ecf60b080800000002000c00ec1e0200f4 *f60b080e00000002000c00f71e020018f70b081400000001000c00011f020018f70b081e000000 *02000c000c1f0200c8f70b080800000001000c00161f0200c8f70b083700000002000c001f1f02 *0044f90b081400000001000c00291f020030f80b081200000002000c00341f02004cf80b080800 *000001000c003e1f02004cf80b082f00000002000c00491f02007cf80b086100000002000c0054 *1f0200e0f80b081100000002000c005f1f020008f90b081400000001000c00691f020008f90b08 *2700000002000c00741f020088f90b080800000001000c007e1f020088f90b083700000002000c *00871f020004fb0b081400000001000c00911f0200f0f90b081200000002000c009c1f020004fa *0b081100000002000c00a71f020020fa0b080800000001000c00b11f020020fa0b082f00000002 *000c00bc1f020050fa0b086100000002000c00c71f0200c8fa0b081400000001000c00d11f0200 *c8fa0b082700000002000c00dc1f020024fb0b080800000001000c00e61f020024fb0b08230000 *0002000c00ef1f020068fb0b080800000001000c00f91f020068fb0b082300000002000c000220 *020028fc0b081400000001000c000c200200bcfb0b080e00000002000c0017200200ccfb0b0808 *00000002000c0022200200d4fb0b080800000002000c002d200200f0fb0b081400000001000c00 *37200200f0fb0b082100000002000c00422002000cfd0b080800000001000c004c200200d8fc0b *080800000001000c0056200200d8fc0b082900000002000c00612002000cfd0b084d0000000200 *0c006a200200a0fd0b080800000001000c0074200200a0fd0b082a00000002000c00ad18020018 *fe0b081400000001000c00b7180200e4fd0b080e00000002000c00d7180200f4fd0b080e000000 *02000c007d20020018fe0b080400000001000c007818020080fe0b081400000001000c00821802 *004cfe0b080a00000002000c00a218020058fe0b081400000002000c009020020080fe0b080400 *000001000c006e180200e8fe0b081400000001000c0058180200b4fe0b080a00000002000c0063 *180200c0fe0b081400000002000c00a3200200e8fe0b080400000001000c00b620020030ff0b08 *1400000001000c00c020020008ff0b080a00000002000c00cb20020014ff0b080800000002000c *00d6200200fc000c081400000001000c00e020020074ff0b080e00000002000c00eb20020084ff *0b080e00000002000c00f6200200a0ff0b080c00000001000c0000210200a0ff0b084d00000002 *000c00e93c0000f8ff0b080800000001000c00f33c0000f8ff0b085700000002000c000b210200 *50000c086600000002000c0016210200cc000c081400000001000c0020210200cc000c081a0000 *0002000c002b21020034020c081400000001000c003521020028010c080e00000002000c004021 *020038010c080e00000002000c00d03e000050010c080800000001000c00da3e000050010c083d *00000002000c004b21020090010c085a00000002000c005621020000020c081400000001000c00 *6021020000020c081d00000002000c006b21020050030c081400000001000c007521020064020c *080e00000002000c008021020074020c080e00000002000c008b2102008c020c08080000000100 *0c00952102008c020c082f00000002000c00a0210200bc020c084700000002000c00ab21020018 *030c081400000001000c00b521020018030c082400000002000c00c02102005c050c0814000000 *01000c00ca2102007c030c080e00000002000c00d52102008c030c080e00000002000c00e02102 *009c030c080800000002000c00eb210200a4030c084700000002000c00f621020000040c081400 *000001000c00002202000c040c080c00000001000c000a2202000c040c082900000002000c0015 *22020038040c084600000002000c002022020094040c081400000001000c002a220200a0040c08 *0c00000001000c0034220200a0040c082300000002000c003f220200cc040c080800000001000c *0049220200cc040c084200000002000c005422020010050c083700000002000c0060060200c817 *1208040000000100170060060200cc17120804000000010017005f2202007c060c080800000001 *000c00682202007c060c082d00000002000c0060060200d0171208040000000100170060060200 *d4171208040000000100170070220200bc070c081000000001000c00b66f0000900b0c08140000 *0001000c00fa6e0000e8070c080b00000002000c008522020000080c080c00000001000c008f22 *020000080c082900000002000c00056f00002c080c080e00000002000c00106f00003c080c0808 *00000002000c001b6f000058080c081400000001000c009a22020058080c081b00000002000c00 *a522020074080c080e00000002000c008e6f0000b0080c082c00000001000c00de9d0000bc080c *080c00000001000c00af220200bc080c082c00000002000c00ba220200f4080c080c0000000100 *0c00c4220200f4080c086300000002000c00cf22020064090c080c00000001000c00d922020064 *090c085d00000002000c00e4220200d0090c080c00000001000c00ee220200d0090c0808000000 *02000c00f9220200e8090c081000000001000c0003230200e8090c082a00000002000c00986f00 *00200a0c080c00000001000c00a26f0000200a0c088200000002000c000e230200b40a0c081000 *000001000c0018230200b40a0c082a00000002000c00adfb0000f00a0c081000000001000c00b7 *fb0000f00a0c084a00000002000c00ab6f00003c0b0c083e00000002000c0023230200900b0c08 *0800000001000c0038230200f80b0c080c00000001000c0068890000bc0c0c081000000001000c *0042230200f80b0c082900000002000c004d230200240c0c080800000002000c00572302004c0c *0c082000000001000c00ad7800005c0c0c081000000001000c00b77800005c0c0c084e00000002 *000c0061230200bc0c0c085700000002000c006c230200140d0c080400000001000c007f230200 *300d0c081000000001000c0008eb0000540e0c080c00000001000c00922302005c0d0c08080000 *0002000c009c230200840d0c082000000001000c00a6230200900d0c080c00000001000c00b023 *0200900d0c084100000002000c00bb230200d40d0c081400000002000c00c6230200e80d0c080b *00000002000c00d1230200f40d0c081100000002000c00dc2302001c0e0c081400000001000c00 *e62302001c0e0c081500000002000c00f1230200480e0c081400000001000c00fb230200540e0c *083a00000002000c0004240200c40e0c080800000001000c000e240200c40e0c08120000000200 *0c0017240200d80e0c080400000001000c00392402009c0f0c080800000001000c004324020078 *0f0c080800000001000c004d240200780f0c081900000002000c00562402009c0f0c082a000000 *02000c00612402003c100c080800000001000c006b2402001c100c080800000001000c00752402 *001c100c081800000002000c007e2402003c100c083000000002000c0089240200f0100c081000 *000001000c00955e000018160c080c00000001000c00a424020090160c080c00000001000c00ae *240200b8160c080800000001000c00b8240200f0160c080c00000001000c00c22402008c110c08 *0800000001000c00cc2402008c110c082900000002000c00d7240200c0110c080800000001000c *00e1240200c0110c082a00000002000c00ec240200ec110c081300000002000c00adde00000c12 *0c080c00000001000c00b7de00000c120c082d00000002000c00f724020044120c080800000001 *000c000125020044120c082e00000002000c000c25020074120c084000000002000c0017250200 *c8120c081400000001000c0021250200c8120c081800000002000c002b250200f4120c08140000 *0001000c0035250200f4120c081c00000002000c004025020010130c081300000002000c004a25 *020050130c082c00000001000c00d45e00005c130c080c00000001000c00de5e00005c130c0842 *00000002000c00e95e0000ac130c080c00000001000c00f35e0000ac130c083500000002000c00 *fe5e0000f0130c080c00000001000c00085f0000f0130c086600000002000c005425020060140c *080800000001000c005e25020060140c082a00000002000c00692502008c140c080a0000000200 *0c007425020098140c081100000002000c007f250200c0140c081400000001000c0089250200c0 *140c081800000002000c0093250200ec140c081400000001000c009d250200ec140c081c000000 *02000c00a825020008150c080a00000002000c00b225020040150c082c00000001000c00bc2502 *004c150c080c00000001000c00c62502004c150c083a00000002000c00d125020094150c080c00 *000001000c00db25020094150c083500000002000c00505f0000d8150c080c00000001000c005a *5f0000d8150c083400000002000c009f5e000018160c086b00000002000c00e625020090160c08 *1d00000002000c00f1250200b8160c082900000002000c00fc250200f0160c082900000002000c *00072602001c170c080400000001000c0021260200ac170c080800000001000c002b260200e417 *0c080c00000001000c00352602000c180c080800000001000c003f26020044180c080c00000001 *000c0049260200ac170c082900000002000c0054260200e4170c081d00000002000c005f260200 *0c180c082900000002000c006a26020044180c082900000002000c0075260200ac180c08100000 *0001000c0040640000b81c0c080c00000001000c008e260200101d0c080c00000001000c009826 *0200381d0c080800000001000c00a2260200701d0c080c00000001000c00ac2602004c190c0808 *00000001000c00b62602004c190c082900000002000c007862000080190c080800000001000c00 *8262000080190c082a00000002000c00c1260200ac190c081300000002000c00cc260200cc190c *080c00000001000c00d6260200cc190c083300000002000c00e1260200001a0c083b0000000200 *0c00ec2602003c1a0c081300000002000c00f7260200641a0c081400000001000c00057600006c *1a0c080800000001000c00012702006c1a0c082c00000002000c000a270200981a0c0815000000 *02000c0015270200c41a0c081400000001000c001f270200c41a0c080c00000002000c002a2702 *00d01a0c081300000002000c0034270200101b0c082c00000001000c003e2702001c1b0c080c00 *000001000c00482702001c1b0c084800000002000c0053270200741b0c081000000001000c005d *270200741b0c084500000002000c0068270200c41b0c080800000001000c0072270200c41b0c08 *2900000002000c007d270200f81b0c080800000001000c0087270200f81b0c083400000002000c *0092270200381c0c080c00000001000c009c270200381c0c087100000002000c004a640000b81c *0c084a00000002000c00a7270200101d0c081d00000002000c00b2270200381d0c082900000002 *000c00bd270200701d0c082900000002000c00c8270200bc1d0c080800000001000c00d2270200 *bc1d0c080800000002000c00b9e90000e41d0c080800000001000c00c3e90000e41d0c08080000 *0002000c0060060200d81712080400000001001700db270200e41e0c080800000001000c00e527 *02009c1e0c080800000001000c00ef2702009c1e0c080800000002000c0056c00000ac1e0c0808 *00000001000c00f8270200ac1e0c083000000002000c0003280200e41e0c083900000002000c00 *60060200dc171208040000000100170060060200e0171208040000000100170060060200e41712 *0804000000010017000c28020050210c081400000001000c001628020058200c080b0000000200 *0c00212802006c200c080800000001000c002b2802006c200c084e00000002000c0036280200c8 *200c080c00000001000c0040280200c8200c084800000002000c004b28020010210c082b000000 *02000c005628020064210c080400000001000c007128020008240c081400000001000c007b2802 *009c210c080f00000002000c0086280200ac210c083500000002000c0091280200ec210c080800 *000001000c009b280200ec210c085300000002000c00a628020040220c085400000002000c00b1 *280200a8220c081400000001000c00bb280200b4220c080c00000001000c00c5280200b4220c08 *2f00000002000c00d0280200ec220c080800000001000c00da280200ec220c084d00000002000c *00e528020044230c080800000001000c00ef28020044230c085900000002000c00fa280200a023 *0c085400000002000c00052902005c240c080800000001000c008c13000094240c080c00000001 *000c000f2902005c240c082900000002000c009613000094240c082700000002000c001a290200 *bc240c080400000001000c003429020048250c080800000001000c003e29020080250c080c0000 *0001000c004829020090250c080800000001000c0052290200c8250c080c00000001000c005c29 *020048250c082900000002000c006729020080250c080800000002000c007229020090250c0829 *00000002000c007d290200c8250c082900000002000c008829020004260c080400000001000c00 *a3290200b4280c080c00000001000c00ad290200e4280c080800000001000c00b72902001c290c *080c00000001000c00c12902007c260c080800000002000c00cb29020098260c08140000000100 *0c00d529020098260c081600000002000c00e0290200b8260c080800000001000c00ea290200b8 *260c083d00000002000c00f529020000270c080800000001000c00ff29020000270c082a000000 *02000c000a2a020034270c080800000001000c00142a020034270c082e00000002000c001f2a02 *006c270c080800000001000c00292a02006c270c083400000002000c0038050000a8270c080800 *000001000c0042050000a8270c083000000002000c0062050000e0270c080800000001000c006c *050000e0270c082e00000002000c00342a020010280c088200000002000c003f2a0200a8280c08 *1400000001000c00492a0200b4280c082600000002000c00542a0200e4280c082900000002000c *005f2a02001c290c082900000002000c006a2a020048290c080400000001000c00832a0200e829 *0c080800000001000c008d2a02001c2a0c080800000001000c00972a02005c2c0c080c00000001 *000c0044060000902c0c080800000001000c00a12a0200c82c0c080c00000001000c00ab2a0200 *e8290c082900000002000c00b62a02001c2a0c082900000002000c00c12a0200502a0c08080000 *0001000c00cb2a0200502a0c082f00000002000c00d62a0200882a0c080800000001000c00e02a *0200882a0c083400000002000c00b5080000c42a0c080800000001000c00bf080000c42a0c082f *00000002000c00eb2a0200fc2a0c080800000001000c00f52a0200fc2a0c083400000002000c00 *f2050000382b0c080800000001000c00fc050000382b0c083400000002000c00002b0200742b0c *080800000001000c000a2b0200742b0c082f00000002000c00152b0200ac2b0c08080000000100 *0c001f2b0200ac2b0c08a100000002000c00282b02005c2c0c082c00000002000c004e06000090 *2c0c082900000002000c00332b0200c82c0c082900000002000c003e2b0200142d0c0808000000 *01000c00482b0200142d0c080800000002000c00512b02003c2d0c080800000001000c005b2b02 *003c2d0c080800000002000c0060060200e8171208040000000100170060060200ec1712080400 *000001001700642b02001c2e0c080400000001000c0060060200f017120804000000010017007e *2b0200b02e0c080400000001000c00972b0200dc2e0c080c00000001000c00a12b0200dc2e0c08 *0b00000002000c00aa2b0200082f0c080800000001000c00b42b0200082f0c080b00000002000c *007e4a0000342f0c080800000001000c00bd2b0200342f0c080b00000002000c00c62b0200602f *0c080800000001000c00d02b0200602f0c080b00000002000c00d92b02008c2f0c080800000001 *000c00e32b02008c2f0c085200000002000c00ec2b020000300c080800000001000c00f52b0200 *00300c080b00000002000c0060060200f4171208040000000100170060060200f8171208040000 *000100170060060200fc171208040000000100170060060200001812080400000001001700fd2b *0200c0320c080c00000001000c00172c0200cc350c081000000001000c00212c020014330c0802 *00000002000c002b2c02006c330c08a700000002000c00362c020020330c080800000001000c00 *402c020020330c083100000002000c00492c02006c330c081800000001000c00532c02001c340c *080800000001000c005d2c02001c340c083300000002000c00662c020058340c08080000000100 *0c00702c020058340c081400000002000c00792c020074340c080800000001000c00832c020074 *340c083000000002000c008e2c0200ac340c080800000001000c00982c0200ac340c083b000000 *02000c00a12c0200f0340c080800000001000c00ab2c0200f0340c080900000002000c00b42c02 *000c350c081000000001000c00be2c02000c350c085100000002000c00c92c020070350c081000 *000001000c00d32c020070350c084c00000002000c00de2c0200cc350c085800000002000c00e9 *2c020024360c080800000001000c00002d020094360c081400000001000c000a2d02005c360c08 *0d00000002000c00152d02006c360c081200000002000c00600602000418120804000000010017 *00202d02001c370c081000000001000c004b2d020028380c080c00000001000c00552d0200983b *0c081800000001000c005f2d02008c370c080800000001000c00692d02008c370c082f00000002 *000c00742d0200c4370c080800000001000c007e2d0200c4370c085600000002000c00872d0200 *28380c082600000002000c00922d020050380c080500000002000c009c2d0200983b0c08290000 *0002000c00a72d020058380c080500000002000c00b12d0200ec3a0c083100000002000c00bc2d *020068380c080800000001000c00c62d020068380c082900000002000c00d12d0200a0380c080c *00000001000c00db2d0200a0380c085100000002000c00e62d0200fc380c080800000001000c00 *f02d0200fc380c080800000002000c00f92d020010390c080c00000001000c00032e020010390c *082100000002000c000e2e020034390c080200000002000c00182e020070390c08240000000200 *0c00232e020044390c080c00000001000c002d2e020044390c081100000002000c00362e020070 *390c081800000001000c00402e020094390c080200000002000c004a2e0200b0390c0808000000 *02000c00552e0200b0390c081800000001000c005f2e0200c0390c080800000001000c00692e02 *00c0390c082900000002000c00742e0200f4390c080800000001000c007e2e0200f4390c080900 *000002000c00872e02000c3a0c080c00000001000c00912e02000c3a0c085000000002000c009a *2e0200683a0c080c00000001000c00a42e0200683a0c086a00000002000c00ad2e0200ec3a0c08 *1800000001000c00b72e0200283b0c080800000001000c00c12e0200283b0c080600000002000c *00ca2e02003c3b0c080c00000001000c00d42e02003c3b0c084300000002000c00dd2e0200c43b *0c080400000001000c00032f0200043c0c080400000001000c00292f0200043d0c080c00000001 *000c00332f0200383d0c080c00000001000c003d2f0200683c0c080800000001000c00472f0200 *683c0c082f00000002000c00522f0200a03c0c080800000001000c005c2f0200a03c0c08560000 *0002000c00652f0200043d0c082600000002000c00702f0200383d0c083500000002000c007b2f *0200703d0c080400000001000c009c2f0200703e0c080c00000001000c00a62f0200a43e0c080c *00000001000c00b02f0200d43d0c080800000001000c00ba2f0200d43d0c082f00000002000c00 *c52f02000c3e0c080800000001000c00cf2f02000c3e0c085600000002000c00d82f0200703e0c *082600000002000c00e32f0200a43e0c083500000002000c00ee2f0200dc3e0c080c0000000100 *0c00183002009c3f0c080c00000001000c00223002003c3f0c080c00000001000c002c3002003c *3f0c080b00000002000c0035300200543f0c080c00000001000c003f300200543f0c0809000000 *02000c00483002006c3f0c080c00000001000c00523002006c3f0c082100000002000c005b3002 *009c3f0c081b00000002000c0064300200b83f0c080800000001000c008d30020018400c080c00 *000001000c009730020018400c083c00000002000c00a230020054400c080800000001000c00c6 *300200b4400c080c00000001000c00d0300200b4400c083c00000002000c006006020008181208 *0400000001001700db30020050410c080800000001000c00fa30020068420c080c00000001000c *0004310200f0410c080800000001000c000e310200f0410c084a00000002000c00f7b300004442 *0c080800000001000c0001b4000044420c081700000002000c001731020068420c082600000002 *000c0022310200a4430c080800000001000c002c310200e0420c080800000001000c0036310200 *e0420c082f00000002000c004131020018430c080800000001000c004b31020018430c08320000 *0002000c003db6000054430c080800000001000c0047b6000054430c081600000002000c005431 *020074430c080800000001000c005e31020074430c082800000002000c0067310200a4430c0817 *00000002000c0070310200d0440c080800000001000c007a3102000c440c080800000001000c00 *843102000c440c080600000002000c008d3102001c440c080800000001000c00973102001c440c *081200000002000c00a031020038440c080800000001000c00aa31020038440c085c0000000200 *0c00f6bc00009c440c080800000001000c0000bd00009c440c082b00000002000c00b3310200d0 *440c081700000002000c00600602000c1812080400000001001700bc31020020450c0804000000 *01000c00d631020028460c080c00000001000c00e031020064450c080d00000002000c00eb3102 *0074450c080200000002000c00f531020090450c080800000002000c000032020090450c081800 *000001000c000a320200a4450c080c00000001000c0014320200a4450c084d00000002000c001d *320200f4450c081200000002000c00283202001c460c081400000001000c003232020028460c08 *2a00000002000c00600602001018120804000000010017003d320200dc460c080800000001000c *005632020030470c080c00000001000c006032020030470c080f00000002000c00693202004047 *0c080c00000001000c0082320200ac470c080c00000001000c008c32020098470c080c00000001 *000c009632020098470c080800000002000c009f320200ac470c081b00000002000c00a8320200 *c8470c080800000001000c00137d00001c480c080c00000001000c00c03202001c480c08080000 *0002000c00c932020024480c080c00000001000c00e13202007c480c080c00000001000c00eb32 *02007c480c081600000002000c00f432020094480c080800000001000c00600602001418120804 *000000010017000a33020050490c080800000001000c001433020050490c085000000002000c00 *1d330200404a0c081800000001000c0027330200e8490c080200000002000c0031330200404a0c *082100000002000c003c330200f4490c080800000001000c0046330200f4490c08310000000200 *0c0060060200181812080400000001001700600602001c18120804000000010017004f33020040 *4b0c080400000001000c0076330200704c0c080800000001000c0080330200ec4b0c0802000000 *02000c008a330200444c0c082400000002000c00923e0100f84b0c080800000001000c009c3e01 *00f84b0c083100000002000c0093850100444c0c081800000001000c0095330200704c0c082d00 *000002000c009e330200844d0c080800000001000c00a8330200b84c0c080200000002000c00b2 *330200104d0c082a00000002000c00bd330200c44c0c080800000001000c00c7330200c44c0c08 *3100000002000c00d0330200104d0c081800000001000c00da330200444d0c080800000001000c *00e4330200444d0c083600000002000c00ed330200844d0c081400000002000c00600602002018 *120804000000010017006006020024181208040000000100170060060200281812080400000001 *001700600602002c1812080400000001001700f6330200d8500c082000000001000c0000340200 *4c4f0c080e00000002000c000b3402005c4f0c080800000002000c0015340200844f0c08200000 *0001000c001f340200844f0c082000000002000c002a340200b84f0c081400000001000c003434 *0200b84f0c081400000002000c003f340200cc4f0c080800000002000c0049340200f44f0c0820 *00000001000c0053340200f44f0c081800000002000c005e3402000c500c080e00000002000c00 *6934020024500c080800000001000c007334020024500c082f00000002000c007e34020054500c *085a00000002000c0089340200b0500c080800000002000c009434020020510c08080000000100 *0c00bd340200205d0c082000000001000c00c734020068510c080c00000001000c00d134020068 *510c082f00000002000c00dc34020098510c084700000002000c00e7340200e0510c0808000000 *02000c00f2340200e8510c080800000002000c00fd340200f0510c080800000002000c00073502 *000c520c081400000001000c001135020014520c080800000001000c001b35020014520c083c00 *000002000c00263502005c520c080c00000001000c00303502005c520c084700000002000c003b *350200a4520c084100000002000c0046350200e8520c080800000002000c005035020010530c08 *2000000001000c005a35020020530c081000000001000c006435020020530c082d00000002000c *006f35020050530c083e00000002000c007a35020090530c080800000002000c0084350200b853 *0c082000000001000c008e350200c8530c081000000001000c0098350200c8530c084e00000002 *000c00a335020018540c084100000002000c00ae3502007c540c082000000001000c00b8350200 *7c540c081400000002000c00c335020090540c080a00000002000c00ce350200ac540c08100000 *0001000c00d8350200ac540c084400000002000c00e3350200f0540c084100000002000c00ee35 *020054550c082000000001000c00f835020054550c081100000002000c000236020088550c0820 *00000001000c000c36020088550c081100000002000c0016360200bc550c082000000001000c00 *20360200c8550c080c00000001000c002a360200c8550c080f00000002000c0033360200d8550c *081100000002000c003d36020000560c081400000001000c004736020000560c08180000000200 *0c005136020038560c082000000001000c005b36020040560c080800000001000c006536020040 *560c083f00000002000c00703602008c560c080c00000001000c007a3602008c560c0847000000 *02000c0085360200d4560c084100000002000c009036020018570c080800000002000c009a3602 *0040570c082000000001000c00a436020040570c081500000002000c00af36020060570c080800 *000001000c00b936020060570c082f00000002000c00c436020098570c080800000001000c00ce *36020098570c085000000002000c00d9360200f4570c080c00000001000c00e3360200f4570c08 *4700000002000c00ee3602003c580c083e00000002000c00f93602007c580c080800000002000c *0003370200a4580c082000000001000c000d370200ac580c080800000001000c0017370200ac58 *0c083900000002000c0022370200f0580c080800000001000c002c370200f0580c085000000002 *000c00373702004c590c080c00000001000c00413702004c590c084700000002000c004c370200 *94590c084100000002000c0057370200e0590c080800000001000c0061370200e0590c082f0000 *0002000c006c370200105a0c084100000002000c0077370200745a0c082000000001000c008137 *0200745a0c081500000002000c008c3702008c5a0c080500000002000c0096370200b45a0c0820 *00000001000c00a0370200b45a0c081200000002000c00aa370200e85a0c082000000001000c00 *b4370200e85a0c081100000002000c00be3702001c5b0c082000000001000c00c83702001c5b0c *081200000002000c00d2370200505b0c082000000001000c00dc3702005c5b0c080c0000000100 *0c00e63702005c5b0c080c00000002000c00ef370200685b0c080800000002000c00f937020090 *5b0c082000000001000c0003380200a05b0c081000000001000c000d380200a05b0c084e000000 *02000c0018380200f05b0c084100000002000c0023380200345c0c080800000002000c002d3802 *005c5c0c082000000001000c00373802005c5c0c081500000002000c0042380200805c0c080c00 *000001000c004c380200805c0c082f00000002000c0057380200b05c0c084700000002000c0062 *380200f85c0c080500000002000c006c380200205d0c080800000001000c0094380200985e0c08 *1400000001000c009e380200585d0c080b00000002000c00a9380200645d0c080b00000002000c *00b43802007c5d0c080c00000001000c00be3802007c5d0c082900000002000c00c9380200b45d *0c080c00000001000c00d3380200b45d0c080800000002000c00de380200c85d0c080c00000001 *000c00e8380200c85d0c084e00000002000c00f3380200185e0c083800000002000c00fe380200 *645e0c081400000001000c0008390200645e0c082000000002000c006006020030181208040000 *000100170013390200905f0c080400000001000c004039020038600c081000000001000c004a39 *020000600c080800000002000c005439020028600c082000000001000c005e39020038600c084e *00000002000c006939020034610c080c00000001000c0073390200e8600c080800000001000c00 *7d390200e8600c082200000002000c008639020014610c080800000001000c009039020014610c *081400000002000c009939020034610c082c00000002000c00a4390200e4610c08080000000100 *0c00ae390200ac610c080800000001000c00b8390200ac610c082e00000002000c00c1390200e4 *610c082a00000002000c00cc39020064620c080800000001000c00d6390200a0620c080c000000 *01000c00e039020064620c082d00000002000c00eb390200a0620c080800000002000c00f63902 *0084630c080c00000001000c00003a02004c630c080c00000001000c000a3a02004c630c082c00 *000002000c00153a020084630c084700000002000c006006020034181208040000000100170020 *3a020020650c080800000001000c002a3a020020650c084700000002000c00333a020014670c08 *1400000001000c003d3a020098650c080e00000002000c00483a0200a8650c083500000002000c *00533a0200e8650c080800000001000c005d3a0200e8650c082f00000002000c00683a02001866 *0c086000000002000c00733a02008c660c081400000001000c007d3a020098660c080c00000001 *000c00873a020098660c082900000002000c00923a0200c4660c083900000002000c009d3a0200 *cc670c081400000001000c00a73a02002c670c080e00000002000c00b23a020044670c08080000 *0001000c00bc3a020044670c082900000002000c00c73a020070670c084800000002000c00d23a *020084680c081400000001000c00dc3a0200e4670c080e00000002000c00e73a0200fc670c0808 *00000001000c00f13a0200fc670c082900000002000c00fc3a020028680c084800000002000c00 *073b0200ec680c080800000001000c002c3b0200ac690c081400000001000c00363b020024690c *080e00000002000c00413b020034690c081900000002000c004b3b02007c690c082c0000000100 *0c00553b02007c690c081b00000002000c00603b0200ac690c080800000001000c00843b02006c *6a0c081400000001000c008e3b0200e4690c080e00000002000c00993b0200f4690c0819000000 *02000c00a33b02003c6a0c082c00000001000c00ad3b02003c6a0c081b00000002000c00b83b02 *006c6a0c080400000001000c0060060200381812080400000001001700600602003c1812080400 *000001001700df3b0200286c0c082400000001000c00f73b020084710c080c00000001000c0001 *3c020068730c080c00000001000c0051cc0000e8730c080c00000001000c0099c2000068740c08 *0c00000001000c00e0c10000cc740c080c00000001000c000b3c0200fc6c0c080c00000001000c *00153c0200fc6c0c082e00000002000c00203c02002c6d0c080800000002000c002a3c0200546d *0c082000000001000c0070310200606d0c080c00000001000c00343c0200606d0c085700000002 *000c003f3c0200b86d0c080e00000002000c004a3c0200c86d0c083300000002000c00553c0200 *fc6d0c083300000002000c00603c0200446e0c081400000001000c000aba0000546e0c08100000 *0001000c006a3c0200546e0c085c00000002000c00753c0200b06e0c083d00000002000c00803c *0200046f0c081400000001000c008a3c0200146f0c081000000001000c00943c0200146f0c0838 *00000002000c00f6bc0000586f0c080c00000001000c009f3c0200586f0c086400000002000c00 *aa3c0200bc6f0c080e00000002000c00b53c0200cc6f0c084700000002000c00c03c020028700c *081400000001000c00bebf000038700c081000000001000c00ca3c020038700c08380000000200 *0c00a03102007c700c080c00000001000c00d53c02007c700c086400000002000c00e03c0200ec *700c080c00000001000c00ea3c0200ec700c082e00000002000c00f53c020024710c0808000000 *01000c00ff3c020024710c082000000002000c00083d020050710c080c00000001000c00123d02 *0050710c082600000002000c001d3d020084710c087100000002000c00283d020000720c080800 *000001000c00323d020000720c084700000002000c00379c000050720c080800000001000c0041 *9c000050720c082000000002000c003d3d02007c720c080c00000001000c00473d02007c720c08 *2600000002000c00523d0200ac720c080800000001000c005c3d0200ac720c085e00000002000c *00653d020014730c080800000001000c006f3d020014730c081d00000002000c00783d02003473 *0c080c00000002000c00833d020040730c080500000002000c008e3d02005c730c081400000001 *000c00983d020068730c082400000002000c00a33d020094730c080800000001000c00ad3d0200 *94730c081300000002000c00b63d0200b4730c080c00000001000c00c03d0200b4730c08260000 *0002000c00cb3d0200e8730c084400000002000c00d63d020034740c080800000001000c00e03d *020034740c082700000002000c00e93d020068740c082c00000002000c00759c00009c740c0808 *00000001000c007f9c00009c740c082300000002000c00f43d0200cc740c082600000002000c00 *ff3d0200f4740c080c00000001000c00173e020048760c080c00000001000c00213e0200c8760c *080c00000001000c002b3e0200e0760c081000000001000c00353e020078750c080c0000000100 *0c003f3e020078750c082900000002000c003db60000ac750c080800000001000c004a3e0200ac *750c082d00000002000c00553e0200dc750c080800000002000c00603e0200e4750c080e000000 *02000c006b3e020008760c081400000001000c00b2b4000014760c080c00000001000c00753e02 *0014760c082600000002000c00803e020048760c087100000002000c008b3e0200c8760c080800 *000002000c00963e0200e0760c082a00000002000c0060060200401812080400000001001700a1 *3e0200b8780c080c00000001000c00ab3e0200b8780c082f00000002000c00b63e0200ec770c08 *1100000002000c00c13e02000c780c080c00000001000c00cb3e02000c780c082c00000002000c *00d63e020038780c085e00000002000c00e13e0200ac780c081400000001000c00eb3e0200a079 *0c080c00000001000c00f53e02004c790c080c00000001000c00ff3e02004c790c084700000002 *000c000a3f0200a0790c084d00000002000c006006020044181208040000000100170060060200 *481812080400000001001700600602004c18120804000000010017006006020050181208040000 *000100170060060200541812080400000001001700153f0200687b0c080800000001000c001f3f *0200687b0c082600000002000c00283f0200907b0c080800000001000c003d3f0200447c0c0814 *00000001000c00463f0200187c0c080b00000002000c00503f0200247c0c080b00000002000c00 *600602005818120804000000010017005a3f0200707c0c080800000001000c00783f0200d87d0c *081800000001000c00823f0200087e0c080800000001000c008c3f0200cc7c0c08050000000200 *0c00963f0200d87d0c082600000002000c00a13f0200dc7c0c080800000001000c00ab3f0200dc *7c0c080900000002000c00b43f0200f47c0c080c00000001000c00be3f0200f47c0c084f000000 *02000c00c73f0200447d0c081100000002000c00d23f0200587d0c080900000002000c00dd3f02 *00787d0c081400000001000c00e73f0200847d0c080c00000001000c00f13f0200847d0c080900 *000002000c00fa3f02009c7d0c080c00000001000c00044002009c7d0c082100000002000c000d *400200087e0c080900000002000c0016400200147e0c080c00000001000c002d4002007c800c08 *1400000001000c0037400200547e0c080800000002000c0042400200647e0c080800000001000c *004c400200647e0c082f00000002000c0057400200947e0c080500000002000c0061400200a07f *0c082600000002000c006c400200a47e0c080800000001000c0076400200a47e0c080900000002 *000c007f400200bc7e0c080c00000001000c0089400200bc7e0c084f00000002000c0092400200 *0c7f0c081100000002000c009d400200207f0c080900000002000c00a8400200407f0c08140000 *0001000c00b24002004c7f0c080c00000001000c00bc4002004c7f0c080900000002000c00c540 *0200647f0c080c00000001000c00cf400200647f0c082100000002000c00d8400200a07f0c0818 *00000001000c00e2400200d47f0c080c00000001000c00ec400200d47f0c085700000002000c00 *f74002002c800c083c00000002000c00024102007c800c080400000001000c002041020024810c *080c00000001000c002a410200b8800c080800000001000c0034410200b8800c080f0000000200 *0c003d410200c8800c083a00000002000c004741020018810c081400000001000c005141020024 *810c081e00000002000c005a410200a0810c080800000001000c006441020064810c0808000000 *01000c006e41020064810c083100000002000c0077410200a0810c081400000002000c00804102 *0064820c080800000001000c008a41020004820c080800000001000c009441020004820c085800 *000002000c009f41020064820c084600000002000c00a84102000c830c080c00000001000c00b2 *4102001c840c080800000001000c00bc4102000c830c084400000002000c0009a5010058830c08 *0800000001000c0013a5010058830c088800000002000c00c7410200e8830c080800000001000c *00d1410200e8830c082900000002000c00da4102001c840c080900000002000c00e34102007084 *0c080800000001000c00ed41020060840c080800000001000c00f741020060840c080600000002 *000c000042020070840c084800000002000c00094202005c860c080c00000001000c0013420200 *58850c080800000001000c001d42020058850c084600000002000c00264202005c860c08460000 *0002000c0031420200a8850c080800000001000c003b420200a8850c084000000002000c004442 *0200f0850c080800000001000c004e420200f0850c083700000002000c005742020030860c0808 *00000001000c006142020030860c081f00000002000c006a420200a4860c080400000001000c00 *91420200cc870c080c00000001000c009b420200e0860c080800000001000c00a5420200e0860c *080600000002000c00ae420200f0860c080800000001000c00b8420200f0860c08180000000200 *0c00c142020010870c080800000001000c00cb42020010870c086200000002000c00d44202007c *870c080800000001000c00de4202007c870c081600000002000c00e7420200a0870c080c000000 *01000c00f1420200a0870c081e00000002000c00fa420200cc870c082500000002000c00034302 *003c890c081400000001000c000d43020024880c081200000002000c001843020044880c080c00 *000001000c002243020044880c084100000002000c002d43020094880c080c00000001000c0037 *43020094880c084a00000002000c0042430200e0880c084500000002000c00600602005c181208 *04000000010017004d4302000c8a0c080800000001000c0057430200f0890c080800000001000c *0061430200f0890c081400000002000c006a4302000c8a0c081a00000002000c0073430200788a *0c080800000001000c008d2a02005c8a0c080800000001000c007d4302005c8a0c081200000002 *000c0086430200788a0c081a00000002000c008f430200e88a0c080800000001000c0099430200 *b48a0c080800000001000c00a3430200b48a0c082900000002000c00ac430200e88a0c08140000 *0002000c00b5430200508b0c080800000001000c00d92b02001c8b0c080800000001000c00e32b *02001c8b0c082900000002000c00bf430200508b0c081400000002000c00c8430200b88b0c0808 *00000001000c00d2430200848b0c080800000001000c00dc430200848b0c082900000002000c00 *e5430200b88b0c081400000002000c00ee430200208c0c080800000001000c00f8430200ec8b0c *080800000001000c0002440200ec8b0c082900000002000c000b440200208c0c08140000000200 *0c0014440200548c0c080800000001000c001e440200548c0c082d00000002000c0027440200dc *8c0c080800000001000c00c1490000a48c0c080800000001000c00cb490000a48c0c082f000000 *02000c0031440200dc8c0c081400000002000c003a440200488d0c080800000001000c00974900 *00108d0c080800000001000c0044440200108d0c082e00000002000c004d440200488d0c081400 *000002000c0056440200b48d0c080800000001000c006d4900007c8d0c080800000001000c0060 *4402007c8d0c082e00000002000c0069440200b48d0c081400000002000c0072440200048e0c08 *0800000001000c007c440200e88d0c080800000001000c0086440200e88d0c081100000002000c *008f440200048e0c081400000002000c00984402006c8e0c080800000001000c00a2440200388e *0c080800000001000c00ac440200388e0c082900000002000c00b54402006c8e0c081400000002 *000c00be440200d48e0c080800000001000c00c8440200a08e0c080800000001000c00d2440200 *a08e0c082900000002000c00db440200d48e0c081400000002000c00e4440200608f0c08140000 *0001000c00ee440200008f0c080e00000002000c00f9440200108f0c080e00000002000c000445 *0200348f0c081400000001000c000e450200348f0c080f00000002000c0019450200448f0c0808 *00000002000c0024450200d88f0c081400000001000c002e450200788f0c080800000002000c00 *39450200808f0c080e00000002000c0044450200908f0c080e00000002000c004f450200b48f0c *081400000001000c0059450200b48f0c080f00000002000c0064450200d88f0c08080000000100 *0c0077450200a4900c080800000001000c008145020068900c080800000001000c008b45020068 *900c081700000002000c006336000088900c080800000001000c009445020088900c0814000000 *02000c009d450200a4900c081400000002000c00a6450200f4900c080800000001000c00b04502 *00d8900c080800000001000c00ba450200d8900c081100000002000c00c3450200f4900c081400 *000002000c00cc45020044910c080800000001000c00d645020028910c080800000001000c00e0 *45020028910c081100000002000c00e945020044910c081400000002000c00f24502008c910c08 *0800000001000c00fc4502008c910c081500000002000c0005460200cc910c080400000001000c *0019460200f8910c080c00000001000c0023460200f8910c084200000002000c002c4602003c92 *0c080400000001000c004046020068920c080c00000001000c004a46020068920c084200000002 *000c005346020094930c080400000001000c006946020000960c081400000001000c0073460200 *dc930c080800000001000c007d460200dc930c083000000002000c008846020014940c08080000 *0001000c009246020014940c084b00000002000c009d4602006c940c080c00000001000c00a746 *02006c940c085100000002000c00b2460200cc940c080c00000001000c00bc460200cc940c0849 *00000002000c00c546020018950c080f00000002000c00d046020034950c080c00000001000c00 *da46020034950c085200000002000c00e346020088950c081500000002000c00ee460200b4950c *081400000001000c00f8460200c0950c080c00000001000c0002470200c0950c080f0000000200 *0c000b470200d0950c081900000002000c001547020000960c080400000001000c002c470200b4 *960c080c00000001000c0035470200b4960c081a00000002000c003f4702001c980c0808000000 *01000c00634702007c990c080c00000001000c006d4702000c990c080c00000001000c00774702 *000c990c086300000002000c00804702007c990c080900000002000c008947020088990c080400 *000001000c009f470200309b0c080c00000001000c00a9470200c8990c080b00000002000c00b4 *470200dc990c080800000001000c00be470200dc990c082900000002000c00c9470200109a0c08 *0800000001000c00d3470200109a0c082900000002000c00de470200449a0c080800000001000c *00e8470200449a0c081100000002000c00f1470200589a0c088200000002000c00fc470200f09a *0c081400000001000c0006480200fc9a0c080c00000001000c0010480200fc9a0c082700000002 *000c0019480200309b0c081700000002000c0022480200489b0c080800000001000c0038480200 *049c0c080c00000001000c0042480200a49b0c080c00000001000c004c480200a49b0c08520000 *0002000c0055480200049c0c085300000002000c005e4802007c9e0c081800000001000c006848 *0200a89c0c080500000002000c00724802007c9e0c083000000002000c007d480200b89c0c0808 *00000001000c0087480200b89c0c083500000002000c0092480200f89c0c080800000001000c00 *9c480200f89c0c085c00000002000c00a54802005c9d0c080800000001000c00af4802005c9d0c *080c00000002000c00b8480200749d0c080c00000001000c00c2480200749d0c08330000000200 *0c00cd480200b09d0c080800000001000c00d7480200b09d0c080b00000002000c00e0480200c4 *9d0c080800000001000c00ea480200c49d0c081500000002000c00f3480200e49d0c0808000000 *01000c00fd480200e49d0c085f00000002000c00064902004c9e0c080800000001000c00104902 *004c9e0c081800000002000c0019490200ac9e0c080c00000001000c002f490200509f0c080c00 *000001000c0039490200189f0c080c00000001000c0043490200189f0c082900000002000c004c *490200509f0c080900000002000c00554902005c9f0c080800000001000c0072490200fc9f0c08 *2400000001000c007c490200a09f0c080900000002000c0087490200b89f0c080c00000001000c *0091490200b89f0c080800000002000c009a490200c09f0c081500000002000c00a4490200fc9f *0c080c00000001000c00c949020064a30c081000000001000c00d34902004ca00c080b00000002 *000c00de49020058a00c080b00000002000c00e949020064a00c080b00000002000c00f4490200 *78a00c080800000001000c00fe49020078a00c082900000002000c00094a0200a4a00c08050000 *0002000c00134a0200a0a20c082a00000002000c001e4a0200b4a00c080800000001000c00284a *0200b4a00c082900000002000c00334a0200e8a00c080800000001000c003d4a0200e8a00c0846 *00000002000c00464a020038a10c080800000001000c00504a020038a10c082a00000002000c00 *5b4a02006ca10c080800000001000c00654a02006ca10c083d00000002000c006e4a0200aca10c *085700000002000c00794a020004a20c081400000002000c00844a02002ca20c08140000000100 *0c008e4a020038a20c080c00000001000c00984a020038a20c082a00000002000c00a14a020070 *a20c080c00000001000c00ab4a020070a20c081700000002000c00b44a0200a0a20c0818000000 *01000c00be4a0200cca20c085700000002000c00c94a020024a30c080b00000002000c00d34a02 *0054a30c082400000001000c00dd4a020064a30c082a00000002000c00e84a020090a30c080400 *000001000c000b4b02004ca40c081400000001000c00154b0200c8a30c083600000002000c0020 *4b020000a40c083600000002000c002b4b02004ca40c081c00000001000c00464b020034a50c08 *0800000001000c00504b02008ca70c080c00000001000c005a4b020088aa0c081000000001000c *00644b0200f0a40c080e00000002000c006f4b020000a50c080e00000002000c00794b02002ca5 *0c081c00000001000c00834b020034a50c082a00000002000c008e4b020060a50c080900000002 *000c00994b020074a50c080800000001000c00a34b020074a50c080e00000002000c00ac4b0200 *84a50c080e00000002000c00b74b0200a8a50c081400000001000c00c14b0200b8a50c08100000 *0001000c00cb4b0200b8a50c081e00000002000c00d64b0200e0a50c080800000001000c00e04b *0200e0a50c082c00000002000c00e94b020014a60c080800000001000c00f34b020014a60c0812 *00000002000c00fc4b020028a60c080e00000002000c00074c020040a60c080800000001000c00 *114c020040a60c082c00000002000c001a4c020074a60c080800000001000c00244c020074a60c *081500000002000c002d4c02008ca60c080e00000002000c00384c0200a4a60c08080000000100 *0c00424c0200a4a60c082c00000002000c004b4c0200d8a60c080800000001000c00554c0200d8 *a60c081500000002000c005e4c0200f0a60c080e00000002000c00694c020008a70c0808000000 *01000c00734c020008a70c082c00000002000c007c4c02003ca70c080800000001000c00864c02 *003ca70c081500000002000c008f4c020054a70c080e00000002000c009a4c020080a70c081c00 *000001000c00a44c02008ca70c084b00000002000c00af4c0200d8a70c080200000002000c00b9 *4c020030a80c083100000002000c00c44c0200e4a70c080800000001000c00ce4c0200e4a70c08 *3100000002000c00d74c020030a80c081800000001000c00e14c02006ca80c080800000001000c *00eb4c02006ca80c082d00000002000c00f44c0200a4a80c080800000001000c00fe4c0200a4a8 *0c082a00000002000c00094d0200d8a80c080800000001000c00134d0200d8a80c080800000002 *000c001c4d0200e8a80c080800000001000c00264d0200e8a80c081500000002000c002f4d0200 *0ca90c080c00000001000c00394d02000ca90c081e00000002000c00444d020038a90c080c0000 *0001000c004e4d020038a90c084d00000002000c00594d020094a90c080c00000001000c00634d *020094a90c086b00000002000c006c4d02000caa0c080c00000001000c00764d02000caa0c084b *00000002000c007f4d020064aa0c080c00000001000c00894d020064aa0c081400000002000c00 *924d020088aa0c083e00000002000c009d4d0200c8aa0c080800000001000c00b64d02003cac0c *081000000001000c00c04d020070ac0c080c00000001000c00ca4d020038ab0c080c0000000100 *0c00d44d020038ab0c085300000002000c00dd4d020098ab0c080c00000001000c00e74d020098 *ab0c083000000002000c00f24d0200d4ab0c080c00000001000c00fc4d0200d4ab0c0856000000 *02000c00054e02003cac0c082600000002000c00104e020070ac0c083600000002000c00600602 *006018120804000000010017001b4e020064ad0c080400000001000c002c4e020078af0c080c00 *000001000c00364e020098ad0c080b00000002000c00414e0200acad0c080800000001000c004b *4e0200acad0c085f00000002000c00544e020014ae0c080800000001000c005e4e020014ae0c08 *1500000002000c00674e02002cae0c081200000002000c00724e020048ae0c080800000001000c *007c4e020048ae0c084800000002000c00854e020098ae0c080800000001000c008f4e020098ae *0c083600000002000c009a4e0200d0ae0c084d00000002000c00a54e020034af0c081400000001 *000c00af4e020034af0c082000000002000c00b94e02006caf0c081800000001000c00c34e0200 *78af0c081b00000002000c00cc4e020000b00c080c00000001000c00e44e02001cb30c08100000 *0001000c00ee4e020070b00c080800000001000c00f84e020070b00c083100000002000c00014f *0200b0b00c080c00000001000c000b4f0200b0b00c082600000002000c00164f0200d8b00c0802 *00000002000c00204f020008b10c082100000002000c002b4f0200e4b00c080800000001000c00 *354f0200e4b00c080b00000002000c003e4f020008b10c081800000001000c00484f020034b10c *080800000001000c00524f020034b10c080b00000002000c005b4f02004cb10c080c0000000100 *0c00654f02004cb10c082600000002000c006e4f020074b10c082000000002000c00794f020094 *b10c082000000002000c00844f0200c8b10c081400000001000c008e4f0200d4b10c080c000000 *01000c00984f0200d4b10c085600000002000c00a14f020038b20c080c00000001000c00ab4f02 *0038b20c082500000002000c00b44f020060b20c081100000002000c00bf4f020074b20c083d00 *000002000c00ca4f0200b4b20c083d00000002000c00d54f02000cb30c081800000001000c00df *4f02001cb30c083000000002000c00ea4f02004cb30c081000000001000c000150020044b40c08 *1000000001000c000b5002000cb40c080c00000001000c00155002000cb40c082700000002000c *001e50020044b40c082c00000002000c002950020070b40c081000000001000c004250020078b5 *0c081000000001000c004c5002003cb50c080c00000001000c00565002003cb50c082c00000002 *000c005f50020078b50c083200000002000c006a500200acb50c081000000001000c0083500200 *2cb60c080c00000001000c008d5002009cb70c081000000001000c009750020054b80c08140000 *0001000c00a15002002cb60c082900000002000c00ac50020058b60c080800000002000c00b750 *020060b60c080800000002000c00c250020068b60c080800000002000c00cd50020070b60c0808 *00000002000c00d850020080b60c080800000001000c00e250020080b60c085800000002000c00 *eb500200e0b60c080800000001000c00f5500200e0b60c082a00000002000c000051020014b70c *080800000001000c000a51020014b70c084400000002000c001351020058b70c080f0000000200 *0c001d5102008cb70c082400000001000c00275102009cb70c082a00000002000c0032510200c8 *b70c083a00000002000c003d51020004b80c083a00000002000c004851020054b80c0808000000 *01000c005f51020000b90c081400000001000c006951020090b80c080b00000002000c00745102 *00a8b80c080c00000001000c007e510200a8b80c080800000002000c0087510200bcb80c080c00 *000001000c0091510200bcb80c081b00000002000c009a510200d8b80c081200000002000c00a5 *51020000b90c080400000001000c00bd51020094b90c080c00000001000c00c751020038b90c08 *1000000001000c00e151020008bc0c087900000002000c00ea51020094b90c082600000002000c *00f3510200d4b90c081000000001000c00fd510200d4b90c083700000002000c006cb6010018ba *0c080c00000001000c000852020018ba0c081700000002000c001152020040ba0c081000000001 *000c001b52020040ba0c083700000002000c002652020080ba0c080800000001000c0030520200 *80ba0c080b00000002000c00395202008cba0c085000000002000c0044520200ecba0c08100000 *0001000c004e520200ecba0c083700000002000c005952020030bb0c080c00000001000c006352 *020030bb0c081700000002000c006c52020054bb0c080c00000001000c007652020054bb0c087e *00000002000c007f520200d4bb0c081200000002000c008a520200fcbb0c081400000001000c00 *9452020008bc0c080c00000001000c009e52020084bc0c080400000001000c00b752020018bd0c *080c00000001000c00c1520200bcbc0c081000000001000c00dc520200c0be0c08790000000200 *0c00e552020018bd0c082600000002000c00ee52020058bd0c081000000001000c00f852020058 *bd0c083700000002000c00035302009cbd0c080c00000001000c000d5302009cbd0c0817000000 *02000c0016530200c4bd0c081000000001000c0020530200c4bd0c083700000002000c002b5302 *0004be0c080800000001000c003553020004be0c080b00000002000c003e53020010be0c085000 *000002000c00495302006cbe0c080c00000001000c00535302006cbe0c081f00000002000c005c *5302008cbe0c081200000002000c0067530200b4be0c081400000001000c0071530200c0be0c08 *0c00000001000c007b53020038c00c081400000001000c008553020094bf0c080e00000002000c *0090530200a4bf0c080e00000002000c009b530200c8bf0c081400000001000c00a5530200c8bf *0c080f00000002000c00b0530200d8bf0c080e00000002000c00bb530200e8bf0c081100000002 *000c00c653020010c00c081400000001000c00d053020010c00c081400000002000c00db530200 *40c10c081400000001000c00e553020050c00c080e00000002000c00f053020060c00c080e0000 *0002000c00fb53020084c00c081400000001000c000554020084c00c080f00000002000c001054 *020094c00c080e00000002000c001b540200acc00c080800000001000c0025540200acc00c0828 *00000002000c002e540200dcc00c080800000001000c0038540200dcc00c081400000002000c00 *41540200f0c00c081400000002000c004c54020018c10c081400000001000c005654020018c10c *081400000002000c006154020094c10c080800000001000c006b54020094c10c08290000000200 *0c007654020014c20c080800000001000c008054020014c20c080d00000002000c008954020070 *c20c080c00000001000c009354020070c20c080800000002000c009e540200f0c20c0808000000 *01000c00a8540200acc20c080800000001000c00b2540200acc20c083b00000002000c00bb5402 *00f0c20c080b00000002000c00c454020074c30c080800000001000c00ce54020030c30c080800 *000001000c00d854020030c30c083b00000002000c00e154020074c30c080b00000002000c00ea *540200a0c30c080800000001000c00f4540200a0c30c080800000002000c00fd540200c8c30c08 *0800000001000c0007550200c8c30c080800000002000c0010550200f0c30c080800000001000c *001a550200f0c30c080800000002000c002355020070c40c080800000001000c002d5502002cc4 *0c080800000001000c00375502002cc40c083b00000002000c004055020070c40c080b00000002 *000c004955020070c50c080800000001000c005355020070c50c081c00000002000c005c550200 *c8c50c080800000001000c0066550200acc50c080800000001000c0070550200acc50c08110000 *0002000c0079550200c8c50c081400000002000c0082550200fcc50c080800000001000c008c55 *0200fcc50c082e00000002000c00955502002cc60c080400000001000c00ab55020070c70c080c *00000001000c00b555020054c60c080800000001000c00bf55020054c60c084500000002000c00 *ca550200a4c60c080800000001000c00d4550200a4c60c084500000002000c00df550200f8c60c *080c00000001000c00e9550200f8c60c086a00000002000c00f255020070c70c08140000000200 *0c00fb55020084c70c080400000001000c0010560200d0c70c080c00000001000c001a560200b0 *c70c080c00000001000c0024560200b0c70c081100000002000c002d560200d0c70c0814000000 *02000c0036560200e4c70c080400000001000c004956020068c80c080c00000001000c00535602 *0010c80c080c00000001000c005d56020010c80c084900000002000c006656020068c80c081400 *000002000c006f5602007cc80c080400000001000c00815602002cc90c080c00000001000c008b *560200b8c80c080800000001000c0095560200b8c80c082a00000002000c009e560200f0c80c08 *0c00000001000c00a8560200f0c80c083000000002000c00b15602002cc90c081400000002000c *00ba56020040c90c080400000001000c00cc560200f0c90c080c00000001000c00d65602007cc9 *0c080800000001000c00e05602007cc90c082a00000002000c00e9560200b4c90c080c00000001 *000c00f3560200b4c90c083000000002000c00fc560200f0c90c081400000002000c0005570200 *04ca0c080400000001000c001757020088ca0c080c00000001000c002157020030ca0c080c0000 *0001000c002b57020030ca0c084900000002000c003457020088ca0c081400000002000c003d57 *0200f0ca0c080800000001000c0047570200bcca0c080800000001000c0051570200bcca0c0829 *00000002000c005a570200f0ca0c081400000002000c006357020054cb0c080800000001000c00 *6d57020024cb0c080800000001000c007757020024cb0c082800000002000c008057020054cb0c *081400000002000c008957020068cb0c080800000001000c00a4570200f4cc0c08140000000100 *0c00ae57020000cc0c080b00000002000c00b95702000ccc0c080b00000002000c00c457020020 *cc0c080800000001000c00ce57020020cc0c083b00000002000c00d95702005ccc0c0851000000 *02000c00e4570200c4cc0c081400000001000c00ee570200c4cc0c081a00000002000c00f95702 *00c8cd0c081400000001000c000358020024cd0c080e00000002000c000e5802003ccd0c080800 *000001000c00185802003ccd0c082f00000002000c00235802006ccd0c084700000002000c002e *5802002cce0c081400000001000c0038580200f8cd0c080b00000002000c004358020004ce0c08 *1400000002000c004e58020090ce0c081400000001000c005858020058ce0c080e00000002000c *006358020068ce0c081200000002000c006e58020090ce0c080800000001000c008258020000cf *0c080800000001000c009658020070cf0c080800000001000c00aa580200e0cf0c080800000001 *000c00be58020028d10c081400000001000c00c858020084d00c080e00000002000c00d3580200 *9cd00c080800000001000c00dd5802009cd00c083000000002000c00e8580200ccd00c08470000 *0002000c00f358020024d40c081400000001000c00fd580200b4d10c080800000001000c000759 *0200b4d10c085500000002000c001059020014d20c080800000001000c001a59020014d20c0815 *00000002000c00235902002cd20c085c00000002000c002e59020090d20c080800000001000c00 *3859020090d20c084200000002000c0041590200d4d20c081500000002000c004c59020000d30c *081400000001000c005659020000d30c081400000002000c00615902001cd30c08080000000100 *0c006b5902001cd30c084200000002000c007459020060d30c081200000002000c007f5902007c *d30c080800000001000c00895902007cd30c083a00000002000c0092590200b8d30c0824000000 *02000c009d590200f0d30c081400000001000c00a7590200f0d30c082000000002000c00b25902 *0064d40c080800000001000c00bc59020064d40c082a00000002000c00c5590200b0d40c080800 *000001000c00cf590200b0d40c083d00000002000c00d859020010d50c080800000001000c00e2 *59020010d50c082700000002000c00eb590200e8d50c081400000001000c00f559020064d50c08 *2700000002000c00005a020094d50c080800000001000c000a5a020094d50c082300000002000c *00135a0200b8d50c081c00000002000c001e5a0200a0d80c081400000001000c00285a02001cd6 *0c080800000001000c00325a02001cd60c085500000002000c003b5a02007cd60c080800000001 *000c00455a02007cd60c081500000002000c004e5a020094d60c087000000002000c00595a0200 *0cd70c080800000001000c00635a02000cd70c084200000002000c006c5a020050d70c08150000 *0002000c00775a02007cd70c081400000001000c00815a02007cd70c081400000002000c008c5a *020098d70c080800000001000c00965a020098d70c084200000002000c009f5a0200dcd70c0812 *00000002000c00aa5a0200f8d70c080800000001000c00b45a0200f8d70c083a00000002000c00 *bd5a020034d80c082400000002000c00c85a02006cd80c081400000001000c00d25a02006cd80c *082000000002000c00dd5a020048db0c081400000001000c00e75a0200d4d80c08080000000100 *0c00f15a0200d4d80c085500000002000c00fa5a020034d90c080800000001000c00045b020034 *d90c081500000002000c000d5b02004cd90c085e00000002000c00185b0200b4d90c0808000000 *01000c00225b0200b4d90c084200000002000c002b5b0200f8d90c081500000002000c00365b02 *0024da0c081400000001000c00405b020024da0c081400000002000c004b5b020040da0c080800 *000001000c00555b020040da0c084200000002000c005e5b020084da0c081200000002000c0069 *5b0200a0da0c080800000001000c00735b0200a0da0c083a00000002000c007c5b0200dcda0c08 *2400000002000c00875b020014db0c081400000001000c00915b020014db0c082000000002000c *009c5b020048db0c080400000001000c00b75b0200fcdb0c081400000001000c00c15b020068db *0c084600000002000c00cc5b0200b0db0c083600000002000c00d75b0200fcdb0c080400000001 *000c00e95b0200c4dc0c081400000001000c00f35b02001cdc0c084c00000002000c00fe5b0200 *68dc0c084600000002000c00095c020000df0c081400000001000c00135c020010de0c080e0000 *0002000c0075a5000028de0c080800000001000c001e5c020028de0c082900000002000c00295c *020054de0c084100000002000c00345c020098de0c080800000002000c003f5c0200b4de0c0814 *00000001000c00706f0000bcde0c080800000001000c007a6f0000bcde0c081500000002000c00 *495c0200d4de0c081500000002000c00545c020000df0c080400000001000c00675c020078df0c *080800000001000c00715c0200b0df0c080c00000001000c007b5c0200c8df0c08100000000100 *0c00855c020078df0c082900000002000c00905c0200b0df0c080800000002000c009b5c0200c8 *df0c082a00000002000c00a65c0200f4df0c080400000001000c00bb91000050e00c0808000000 *01000c0039ee000060e30c081000000001000c00ba5c020050e00c082900000002000c00c55c02 *007ce00c080e00000002000c00d05c02008ce00c080800000002000c00db5c020094e00c080e00 *000002000c00e65c0200b8e00c081400000001000c00f05c0200c0e00c080800000001000c00fa *5c0200c0e00c082700000002000c00035d0200e8e00c081500000002000c000e5d020014e10c08 *1400000001000c00185d020014e10c080c00000002000c00235d020020e10c080e00000002000c *002d5d02005ce10c082c00000001000c00178c000068e10c080c00000001000c00375d020068e1 *0c082600000002000c00425d0200a0e10c081000000001000c004c5d0200a0e10c084000000002 *000c00575d0200ece10c080c00000001000c00615d0200ece10c084d00000002000c006c5d0200 *3ce20c080e00000002000c00775d02004ce20c080800000002000c00825d020054e20c080e0000 *0002000c008d5d020078e20c081400000001000c00975d020080e20c080800000001000c00a15d *020080e20c082700000002000c00aa5d0200a8e20c081500000002000c00b55d0200d4e20c0814 *00000001000c00bf5d0200d4e20c080c00000002000c00ca5d0200e0e20c080e00000002000c00 *d45d02001ce30c082c00000001000c00de5d020028e30c080c00000001000c00e85d020028e30c *082600000002000c0043ee000060e30c084900000002000c00f35d0200ace30c08140000000100 *0c00065e020028e40c080800000001000c00105e020014e70c081000000001000c00d28d00007c *ec0c081000000001000c001a5e020028e40c082900000002000c00255e020060e40c080c000000 *01000c002f5e020060e40c084100000002000c003a5e0200b0e40c080c00000001000c00445e02 *00b0e40c082c00000002000c004f5e020014e70c086b00000002000c00ea850000e4e40c080800 *000001000c005a5e0200e4e40c086c00000002000c00655e020058e50c080800000001000c006f *5e020058e50c084e00000002000c007a5e0200a8e50c080e00000002000c00855e0200b8e50c08 *0800000002000c00905e0200c0e50c080e00000002000c009b5e0200e4e50c081400000001000c *00a55e0200e4e50c080800000002000c00b05e0200ece50c080e00000002000c00bb5e020010e6 *0c081400000001000c00c55e020018e60c080800000001000c00cf5e020018e60c083d00000002 *000c00d85e020058e60c081500000002000c00e35e020084e60c081400000001000c00ed5e0200 *84e60c080c00000002000c00f85e020090e60c080e00000002000c00025f0200cce60c082c0000 *0001000c000c5f0200d8e60c080c00000001000c00165f0200d8e60c082c00000002000c00215f *02008ce70c080c00000001000c002b5f02008ce70c082c00000002000c0048900000c0e70c0808 *00000001000c00365f0200c0e70c085900000002000c00415f020024e80c080800000001000c00 *4b5f020024e80c082d00000002000c00565f020054e80c080e00000002000c00615f020064e80c *080800000002000c006c5f02006ce80c080e00000002000c00775f020090e80c08140000000100 *0c00815f020090e80c080e00000002000c008c5f0200a0e80c080e00000002000c00975f0200c4 *e80c081400000001000c00a15f0200cce80c080800000001000c00ab5f0200cce80c083d000000 *02000c00b45f02000ce90c081500000002000c00bf5f020038e90c081400000001000c00c95f02 *0038e90c080c00000002000c00d45f020044e90c080e00000002000c00de5f020080e90c082c00 *000001000c00e85f02008ce90c080c00000001000c00f25f02008ce90c082600000002000c00fd *5f0200c0e90c080c00000001000c0007600200c0e90c085100000002000c001260020020ea0c08 *0c00000001000c001c60020020ea0c084c00000002000c002760020078ea0c080c00000001000c *003160020078ea0c080800000002000c005599000090ea0c081000000001000c003c60020090ea *0c082a00000002000c00b48f0000c8ea0c080c00000001000c0047600200c8ea0c089000000002 *000c005260020058eb0c080e00000002000c005d60020068eb0c080800000002000c0068600200 *70eb0c080e00000002000c007360020094eb0c081400000001000c00b7eb00009ceb0c08080000 *0001000c007d6002009ceb0c082700000002000c0086600200c4eb0c081500000002000c009160 *0200f0eb0c081400000001000c009b600200f0eb0c080c00000002000c00a6600200fceb0c080e *00000002000c00b060020038ec0c082c00000001000c00108e000044ec0c080c00000001000c00 *ba60020044ec0c082600000002000c00c56002007cec0c084f00000002000c00d0600200ccec0c *080800000001000c00e860020034ed0c080800000001000c00046102009ced0c08040000000100 *0c0026610200d4ed0c080400000001000c004661020038ee0c080c00000001000c005061020038 *ee0c083500000002000c005b61020070ee0c080800000001000c0073610200d8ee0c0808000000 *01000c009961020040ef0c080400000001000c00bb61020078ef0c080400000001000c00db6102 *00dcef0c080c00000001000c00e5610200dcef0c083500000002000c00f061020014f00c080400 *000001000c000862020078f00c080800000001000c002e620200e0f00c080400000001000c0050 *62020018f10c080400000001000c00706202007cf10c080c00000001000c007a6202007cf10c08 *3500000002000c00856202004cf20c080800000001000c00a06202009cf20c081400000001000c *00aa62020070f20c080a00000002000c00b56202007cf20c080a00000002000c00c06202009cf2 *0c080c00000001000c00df620200c4f50c081400000001000c00e9620200c4f20c080c00000002 *000c00f4620200d0f20c083500000002000c00ff62020008f30c083d00000002000c000a630200 *48f30c083d00000002000c00156302009cf30c081400000001000c001f630200a8f30c080c0000 *0001000c0029630200a8f30c083600000002000c0034630200e0f30c084e00000002000c003f63 *020044f40c081400000001000c004963020054f40c081000000001000c005363020054f40c0829 *00000002000c005e6302008cf40c080c00000001000c00686302008cf40c084700000002000c00 *73630200d4f40c080c00000002000c007e630200e0f40c080c00000002000c008963020000f50c *081400000001000c00936302000cf50c080c00000001000c009d6302000cf50c08510000000200 *0c00a863020060f50c084e00000002000c00fa20000040f60c080800000001000c000421000040 *f60c085100000002000c00b3630200d0f60c080800000001000c00bd630200b4f60c0808000000 *01000c00c7630200b4f60c081100000002000c00d0630200d0f60c081400000002000c00d96302 *00e4f60c080400000001000c00f8630200a8f90c081400000001000c000264020004f70c080c00 *000002000c000d64020010f70c083500000002000c001b10000050f70c080800000001000c0025 *10000050f70c084000000002000c001864020098f70c080800000001000c002264020098f70c08 *3600000002000c002d640200d0f70c084e00000002000c003864020034f80c081400000001000c *004264020040f80c080c00000001000c004c64020040f80c082900000002000c005764020074f8 *0c080800000001000c006164020074f80c084700000002000c006c640200c4f80c080800000001 *000c0076640200c4f80c084000000002000c007f6402000cf90c080800000001000c0089640200 *0cf90c083600000002000c009464020044f90c084e00000002000c009f640200dcf90c08080000 *0001000c00a9640200dcf90c081c00000002000c00b264020040fa0c080800000001000c00cb64 *020094fa0c081400000001000c00d564020068fa0c080c00000002000c00e064020074fa0c080c *00000002000c00eb64020094fa0c080400000001000c000365020004fb0c080c00000001000c00 *0d65020004fb0c082f00000002000c001865020034fb0c080400000001000c003165020064fb0c *080c00000001000c003b65020064fb0c080b00000002000c004465020070fb0c08040000000100 *0c008c140000b0fb0c080c00000001000c005f650200b0fb0c081500000002000c0012140000fc *fb0c080800000001000c0068650200fcfb0c081200000002000c007165020010fc0c0804000000 *01000c00a70300006cfc0c080800000001000c008c65020014ff0c081000000001000c00b10300 *006cfc0c082900000002000c009665020098fc0c080f00000002000c00a1650200a8fc0c083500 *000002000c00ac650200e8fc0c080800000001000c00b6650200e8fc0c085300000002000c00c1 *6502003cfd0c085400000002000c00cc650200a4fd0c081400000001000c00d6650200b0fd0c08 *0c00000001000c00e0650200b0fd0c082f00000002000c00eb650200e8fd0c080800000001000c *00f5650200e8fd0c084d00000002000c004204000040fe0c080800000001000c004c04000040fe *0c085900000002000c00006602009cfe0c085400000002000c000b66020004ff0c081400000001 *000c001566020014ff0c082600000002000c002066020098ff0c080800000001000c002a660200 *5cff0c080800000001000c00346602005cff0c081700000002000c003d6602007cff0c08080000 *0001000c00476602007cff0c081400000002000c005066020098ff0c081400000002000c005966 *020008000d080800000001000c0063660200ccff0c080800000001000c006d660200ccff0c0831 *00000002000c007666020008000d081400000002000c007f6602001c000d080400000001000c00 *a066020054000d084000000001000c00bf660200d4040d080c00000001000c00c9660200f8000d *080c00000001000c00d3660200f8000d082d00000002000c00dc66020028010d080a0000000200 *0c00e766020034010d080a00000002000c00f266020040010d080a00000002000c00fd6602004c *010d080a00000002000c000867020058010d080a00000002000c001367020084010d0820000000 *01000c001d67020090010d080c00000001000c002767020090010d087200000002000c00306702 *0010020d080c00000001000c003a67020010020d082a00000002000c00456702003c020d080d00 *000002000c00506702004c020d080a00000002000c005b67020058020d080a00000002000c0066 *6702007c020d081800000001000c007067020088020d080c00000001000c007a67020088020d08 *2a00000002000c0085670200b4020d083a00000002000c008f67020008030d081800000001000c *009967020008030d080d00000002000c00a467020018030d080200000002000c00ae6702004803 *0d089000000002000c00b967020024030d080800000001000c00c367020024030d080b00000002 *000c00cc67020048030d081800000001000c00d6670200e0030d080800000001000c00e0670200 *e0030d082d00000002000c00e967020010040d080c00000002000c00f467020030040d08140000 *0001000c00fe6702003c040d080c00000001000c00086802003c040d088b00000002000c001168 *0200d4040d082a00000002000c001c68020000050d080400000001000c003868020038050d080c *00000001000c004268020038050d084800000002000c004b680200ac050d080800000001000c00 *55680200ac050d082400000002000c00f1130200fc050d080800000001000c0010140200fc050d *082400000002000c005e6802004c060d080800000001000c00686802004c060d08240000000200 *0c0071680200b4060d083100000002000c0079680200a4060d080800000001000c0082680200a4 *060d080500000002000c008a680200b4060d080800000001000c009368020028070d0808000000 *01000c009d68020028070d082a00000002000c00a668020088070d080800000001000c00b06802 *0088070d081a00000002000c00b9680200c4070d080800000001000c00c3680200c4070d082d00 *000002000c00cc6802004c080d080800000001000c00d668020014080d080800000001000c00e0 *68020014080d082e00000002000c00e96802004c080d081400000002000c00f2680200b8080d08 *0800000001000c00fc68020080080d080800000001000c000669020080080d082f00000002000c *000f690200b8080d081400000002000c001869020024090d080800000001000c0022690200ec08 *0d080800000001000c002c690200ec080d082e00000002000c003569020024090d081400000002 *000c003e690200a8090d080400000001000c00616902000c0a0d080800000001000c0076690200 *3c0b0d080800000001000c0080690200b40b0d080800000001000c008a690200780a0d08020000 *0002000c0094410200d00a0d082900000002000c0094690200840a0d080800000001000c009e69 *0200840a0d083100000002000c008a410200d00a0d081800000001000c00a7690200040b0d0808 *00000001000c00b1690200040b0d082d00000002000c00ba6902003c0b0d082a00000002000c00 *c5690200700b0d080800000001000c00cf690200700b0d083b00000002000c00d8690200b40b0d *080900000002000c00e16902000c0d0d080800000001000c00eb6902006c0c0d08080000000100 *0c00f56902006c0c0d082200000002000c00fe690200980c0d080800000001000c00086a020098 *0c0d083000000002000c00136a0200d00c0d080800000001000c001d6a0200d00c0d0832000000 *02000c00266a02000c0d0d081500000002000c002f6a0200140e0d080400000001000c00526a02 *00840e0d080800000001000c005c6a0200840e0d082900000002000c00676a0200b00e0d080c00 *000001000c008c6a0200ac100d080c00000001000c00966a0200040f0d080c00000001000c00a0 *6a0200040f0d082600000002000c00a96a0200380f0d080c00000001000c00b36a0200380f0d08 *2100000002000c00bc6a0200680f0d080c00000001000c00c66a0200680f0d083d00000002000c *00cf6a0200b00f0d080800000001000c00d96a0200b00f0d083700000002000c00e26a0200f40f *0d080c00000001000c00ec6a0200f40f0d081b00000002000c00f56a02001c100d080c00000001 *000c00ff6a02001c100d081800000002000c00086b020040100d080c00000001000c00126b0200 *40100d081200000002000c001b6b020060100d080c00000001000c00256b020060100d083f0000 *0002000c002e6b0200ac100d081b00000002000c00376b02009c110d080800000001000c00416b *0200fc100d080800000001000c004b6b0200fc100d082200000002000c00546b020028110d0808 *00000001000c005e6b020028110d083000000002000c00696b020060110d080800000001000c00 *736b020060110d083200000002000c007c6b02009c110d081500000002000c00856b02001c120d *080800000001000c008f6b02001c120d083300000002000c00986b020050120d08040000000100 *0c00ca6b0200b4120d080800000001000c00e66b020024130d080400000001000c00026c020040 *140d080800000001000c000c6c02007c130d080200000002000c00166c0200d4130d082b000000 *02000c00216c020088130d080800000001000c002b6c020088130d083100000002000c00346c02 *00d4130d081800000001000c003e6c020008140d080800000001000c00486c020008140d082d00 *000002000c00516c020040140d082a00000002000c005c6c02006c140d080800000001000c0078 *6c0200d8140d080800000001000c00826c0200d8140d082900000002000c008d6c020004150d08 *0800000001000c00a96c020070150d080800000001000c00b36c020070150d082900000002000c *00be6c02009c150d080c00000001000c00da6c020008170d080c00000001000c00e46c0200f015 *0d080800000001000c00ee6c0200f0150d080900000002000c00f76c020004160d080800000001 *000c00016d020004160d081800000002000c000a6d020028160d080c00000001000c00146d0200 *28160d080b00000002000c001d6d020040160d080c00000001000c00276d020040160d08090000 *0002000c00306d020058160d080c00000001000c003a6d020058160d082100000002000c00436d *020088160d080c00000001000c004d6d020088160d081600000002000c00566d0200ac160d080c *00000001000c00606d0200ac160d084d00000002000c00696d020008170d082600000002000c00 *726d020030170d080c00000001000c00976d020050180d080c00000001000c00a16d020084180d *080c00000001000c00ab6d0200301b0d081800000001000c00b56d0200b4170d08080000000100 *0c00bf6d0200b4170d082f00000002000c00ca6d0200ec170d080800000001000c00d46d0200ec *170d085600000002000c00dd6d020050180d082600000002000c00e86d020084180d0829000000 *02000c00f36d0200b0180d080500000002000c00fd6d0200301b0d083200000002000c00086e02 *00c0180d080800000001000c00126e0200c0180d084700000002000c001d6e020008190d080200 *000002000c00276e020060190d082a00000002000c00326e020014190d080800000001000c003c *6e020014190d083100000002000c00456e020060190d081800000001000c004f6e020094190d08 *0800000001000c00596e020094190d083300000002000c00626e0200d0190d080800000001000c *006c6e0200d0190d083000000002000c00776e0200081a0d080800000001000c00816e0200081a *0d080b00000002000c008a6e0200241a0d081000000001000c00946e0200241a0d085600000002 *000c009f6e0200841a0d080800000001000c00a96e0200841a0d080600000002000c00b26e0200 *981a0d080c00000001000c00bc6e0200981a0d086200000002000c00c56e0200081b0d080c0000 *0001000c00cf6e0200081b0d080f00000002000c00d86e0200841b0d080800000001000c00e26e *0200841b0d082000000002000c00eb6e0200c41b0d080800000001000c00f56e0200c41b0d0820 *00000002000c00fe6e0200481d0d081400000001000c00086f0200fc1c0d080800000002000c00 *7eb200000c1d0d080800000001000c0088b200000c1d0d081400000002000c00136f0200201d0d *081200000002000c001e6f02002c1e0d081400000001000c00286f0200741d0d080b0000000200 *0c00173e0200881d0d080800000001000c00336f0200881d0d083700000002000c003c6f0200c8 *1d0d080800000001000c00466f0200c81d0d081800000002000c00353e0200e81d0d0808000000 *01000c004f6f0200e81d0d081500000002000c00586f0200001e0d081500000002000c00636f02 *002c1e0d080400000001000c00796f0200a81e0d080800000001000c00836f0200a81e0d083e00 *000002000c00600602006418120804000000010017008c6f0200901f0d080800000001000c0096 *6f0200901f0d083300000002000c009f6f020050200d080800000001000c00a96f020050200d08 *3300000002000c00b26f020000210d080800000001000c00bc6f020000210d083300000002000c *00c56f0200c8210d080800000001000c00cf6f0200c8210d083100000002000c00d86f02009822 *0d080800000001000c00e26f020014220d080200000002000c00ec6f02006c220d082400000002 *000c007433010020220d080800000001000c007e33010020220d083100000002000c00f76f0200 *6c220d081800000001000c000170020098220d082d00000002000c000a70020064230d08080000 *0001000c0014700200e0220d080200000002000c001e70020038230d082400000002000c002970 *0200ec220d080800000001000c0033700200ec220d083100000002000c003c70020038230d0818 *00000001000c004670020064230d082d00000002000c004f70020058240d080800000001000c00 *59700200d4230d080200000002000c00637002002c240d082400000002000c00fa320100e0230d *080800000001000c0004330100e0230d083100000002000c006e7002002c240d08180000000100 *0c007870020058240d082d00000002000c0081700200e4250d080400000001000c00b070020084 *280d080c00000001000c00ba700200bc280d080c00000001000c00c4700200b0260d080b000000 *02000c00cf700200bc260d080b00000002000c00da700200d4260d080c00000001000c00e47002 *00d4260d084100000002000c00ef70020020270d080800000001000c00f970020020270d084d00 *000002000c00047102007c270d080c00000001000c000e7102007c270d080800000002000c0019 *71020090270d080c00000001000c002371020090270d085400000002000c002e710200e4270d08 *4400000002000c00397102003c280d081400000001000c00437102003c280d082600000002000c *004e71020078280d081400000001000c005871020084280d082900000002000c0063710200bc28 *0d082d00000002000c006e71020084290d080c00000001000c007871020070290d080c00000001 *000c008271020070290d080800000002000c008d71020084290d085400000002000c0098710200 *542a0d081800000001000c00a2710200f0290d083400000002000c00ad710200242a0d080b0000 *0002000c00b8710200302a0d080b00000002000c00c3710200542a0d080800000001000c00f271 *0200b0300d082c00000001000c00fc7102008c2a0d080c00000001000c002a7202009c320d082c *00000001000c0034720200c82a0d080c00000001000c005f720200c0330d082c00000001000c00 *69720200042b0d080800000002000c0074720200182b0d080c00000001000c007e720200182b0d *083500000002000c0089720200502b0d084700000002000c0094720200982b0d08140000000200 *0c009f720200ac2b0d081400000002000c00a9720200ec2b0d082c00000001000c00b3720200f8 *2b0d080c00000001000c00bd720200f82b0d083600000002000c00c8720200302c0d0853000000 *02000c00d3720200902c0d080c00000001000c00dd720200902c0d083500000002000c00e87202 *00c82c0d084d00000002000c00f3720200242d0d080c00000001000c00fd720200242d0d083500 *000002000c0008730200682d0d080c00000001000c0012730200682d0d083500000002000c001d *730200a02d0d086600000002000c0028730200082e0d080e00000002000c0033730200242e0d08 *0c00000001000c003d730200242e0d083600000002000c00487302005c2e0d084300000002000c *0053730200a02e0d081200000002000c005d730200e02e0d082c00000001000c0067730200e02e *0d080f00000002000c0072730200042f0d081400000001000c007c730200042f0d080c00000002 *000c0087730200102f0d081200000002000c0091730200502f0d082c00000001000c009b730200 *502f0d080f00000002000c00a67302006c2f0d080c00000001000c00b07302006c2f0d08360000 *0002000c00bb730200a42f0d084300000002000c00c6730200fc2f0d081400000001000c00d073 *0200fc2f0d080c00000002000c00db7302001c300d081400000001000c00e57302001c300d081e *00000002000c00f07302003c300d080800000002000c00fa73020070300d082c00000001000c00 *0474020070300d081200000002000c000f740200bc300d080c00000001000c0019740200bc300d *082900000002000c0024740200e8300d081800000002000c002e7402002c310d082c0000000100 *0c00387402002c310d083b00000002000c004374020074310d080c00000001000c004d74020074 *310d083500000002000c0058740200ac310d084500000002000c006374020000320d080c000000 *01000c006d74020000320d082900000002000c00787402002c320d084100000002000c00827402 *00a8320d080c00000001000c008c740200a8320d082900000002000c0097740200d4320d083d00 *000002000c00a274020020330d080c00000001000c00ac74020020330d082900000002000c00b7 *7402004c330d083d00000002000c00c27402008c330d080500000002000c00cc740200c0330d08 *1000000001000c00fd740200bc370d082c00000001000c00077502000c340d080800000001000c *003575020040380d081400000001000c003f75020048340d081800000001000c00687502001c3d *0d082c00000001000c0072750200a4340d080e00000002000c007d750200b4340d080e00000002 *000c0088750200c4340d080f00000002000c009275020000350d082c00000001000c009c750200 *00350d082500000002000c00a675020054350d082c00000001000c00eb0d020060350d080c0000 *0001000c00f50d020060350d084200000002000c00b0750200a4350d085000000002000c00ba75 *020020360d082c00000001000c00c475020020360d081800000002000c00ce75020064360d082c *00000001000c00d875020064360d082400000002000c00e2750200b4360d082c00000001000c00 *ec750200b4360d081200000002000c00f6750200f4360d082c00000001000c000076020000370d *080c00000001000c000a76020000370d081800000002000c001376020018370d08050000000200 *0c001e76020020370d080600000002000c00297602003c370d081400000001000c00337602003c *370d081800000002000c003e76020068370d081400000001000c004876020068370d080c000000 *02000c005376020074370d080e00000002000c005e76020084370d080b00000002000c00687602 *00bc370d080e00000002000c0073760200cc370d081800000002000c007d76020010380d082c00 *000001000c008776020010380d081b00000002000c009276020048380d080b00000002000c009c *76020080380d082c00000001000c00a676020080380d081100000002000c00b176020094380d08 *2500000002000c00bb760200e8380d082c00000001000c00c5760200e8380d081b00000002000c *00d076020018390d081400000001000c00da76020018390d080c00000002000c00e57602003039 *0d080c00000001000c00ef76020030390d082f00000002000c00fa7602006c390d080c00000001 *000c00047702006c390d085d00000002000c000f770200cc390d084d00000002000c001a770200 *283a0d080c00000001000c0024770200283a0d083e00000002000c002f770200683a0d085f0000 *0002000c003a770200d43a0d080c00000001000c0044770200d43a0d083e00000002000c004f77 *0200143b0d085900000002000c005a7702007c3b0d080c00000001000c00647702007c3b0d082f *00000002000c006f770200b83b0d080c00000001000c0079770200b83b0d085d00000002000c00 *7b0e0200243c0d080c00000001000c00850e0200243c0d083b00000002000c0084770200603c0d *087200000002000c008f770200d43c0d080e00000002000c009a770200e43c0d080a0000000200 *0c00a47702001c3d0d081400000001000c00cc770200f0420d082c00000001000c00d67702006c *3d0d081000000001000c0004780200dc450d082c00000001000c000e780200b83d0d080b000000 *02000c0018780200f03d0d082c00000001000c0022780200f03d0d081100000002000c002d7802 *00043e0d082500000002000c0037780200583e0d082c00000001000c0041780200583e0d081b00 *000002000c004c780200883e0d081400000001000c0056780200883e0d080c00000002000c0061 *780200943e0d080800000002000c006b780200c83e0d082c00000001000c0075780200d43e0d08 *0c00000001000c007f780200d43e0d083000000002000c008a780200103f0d080c00000001000c *0094780200103f0d085800000002000c009f780200683f0d084700000002000c00aa780200bc3f *0d080c00000001000c00b4780200bc3f0d085900000002000c00bf78020018400d085f00000002 *000c00ca78020084400d080c00000001000c00d478020084400d083e00000002000c00df780200 *c4400d085900000002000c00ea78020020410d080800000002000c00f478020054410d082c0000 *0001000c00fe78020060410d080c00000001000c000879020060410d083000000002000c001379 *02009c410d080c00000001000c001d7902009c410d085800000002000c002879020000420d080c *00000001000c003279020000420d083b00000002000c003d7902003c420d086c00000002000c00 *48790200a8420d080e00000002000c0053790200b8420d080a00000002000c005d790200f0420d *080e00000002000c006879020000430d081800000002000c007279020044430d082c0000000100 *0c007c79020044430d081200000002000c008679020084430d082c00000001000c009079020090 *430d080c00000001000c009a79020090430d081b00000002000c00a3790200b8430d080c000000 *01000c00ad790200b8430d083000000002000c00b8790200e8430d084400000002000c00c27902 *0058440d082c00000001000c00cc79020058440d081200000002000c00d679020098440d082c00 *000001000c00e079020098440d081500000002000c00ea790200dc440d082c00000001000c00f4 *790200dc440d081200000002000c00fe7902001c450d082c00000001000c00087a02001c450d08 *1500000002000c00137a020034450d081500000002000c001e7a020060450d081400000001000c *00287a020060450d080c00000002000c00337a02006c450d080e00000002000c003e7a02008845 *0d080c00000001000c00487a020088450d081400000002000c00517a02009c450d081100000002 *000c005b7a0200dc450d082000000001000c00867a0200345f0d081c00000001000c00907a0200 *18460d080f00000002000c009a7a020054460d082c00000001000c00a47a020054460d08150000 *0002000c00af7a02006c460d080f00000002000c00b97a0200a8460d082c00000001000c00c37a *0200a8460d081500000002000c00ce7a0200cc460d080c00000001000c00d87a0200cc460d082d *00000002000c00e17a020008470d080c00000001000c00eb7a020008470d081400000002000c00 *f47a020028470d080c00000001000c00fe7a020028470d083000000002000c00097b020058470d *080e00000002000c00147b020070470d080800000001000c001e7b020070470d08320000000200 *0c00297b0200c84a0d082f00000002000c00347b0200a4470d084700000002000c003f7b0200f4 *470d080800000001000c00497b0200f4470d085300000002000c00547b0200ec4e0d082f000000 *02000c005f7b020048480d085900000002000c006a7b0200ac480d080800000001000c00747b02 *00ac480d083500000002000c007f7b0200e4480d085300000002000c008a7b020040490d080800 *000001000c00947b020040490d083200000002000c009f7b020074490d081100000002000c00aa *7b020088490d080800000002000c00b57b0200a4490d081400000001000c00bf7b0200a4490d08 *1100000002000c00ca7b0200b8490d080800000002000c00d57b0200d4490d081400000001000c *00df7b0200e0490d080c00000001000c00e97b0200e0490d087200000002000c00f27b0200544a *0d081a00000002000c00fd7b0200704a0d080e00000002000c00087c0200804a0d080a00000002 *000c00127c0200b84a0d082c00000001000c001c7c0200c84a0d081000000001000c00267c0200 *f84a0d080e00000002000c00317c0200104b0d080800000001000c003b7c0200104b0d08170000 *0002000c00447c0200304b0d080800000001000c004e7c0200304b0d083c00000002000c00597c *02006c4b0d084d00000002000c00647c0200c44b0d080800000001000c006e7c0200c44b0d0830 *00000002000c00777c0200fc4b0d080800000001000c00817c0200fc4b0d083000000002000c00 *8c7c0200344c0d080800000001000c00967c0200344c0d085900000002000c00a17c0200904c0d *085f00000002000c00ac7c0200f04c0d081100000002000c00b77c02000c4d0d08080000000100 *0c00c17c02000c4d0d083800000002000c00cc7c0200444d0d081100000002000c00d77c020058 *4d0d080800000002000c00e27c0200744d0d081400000001000c00ec7c0200804d0d080c000000 *01000c00f67c0200804d0d082100000002000c00ff7c0200a44d0d081100000002000c000a7d02 *00b84d0d080800000002000c00157d0200d44d0d081400000001000c001f7d0200e04d0d080c00 *000001000c00297d0200e04d0d082100000002000c00327d0200104e0d080c00000001000c003c *7d0200104e0d086800000002000c00457d0200784e0d081a00000002000c00507d0200944e0d08 *0e00000002000c005b7d0200a44e0d080a00000002000c00657d0200dc4e0d082c00000001000c *006f7d0200ec4e0d081000000001000c00797d0200244f0d080800000001000c00837d0200244f *0d083000000002000c008c7d02005c4f0d080800000001000c00967d02005c4f0d081400000002 *000c009f7d0200784f0d080800000001000c00a97d0200784f0d083000000002000c00b47d0200 *b04f0d080800000001000c00be7d0200b04f0d083600000002000c00c77d0200f04f0d08080000 *0001000c00d17d0200f04f0d082a00000002000c00dc7d020024500d080800000001000c00e67d *020024500d081500000002000c00ef7d020044500d080800000001000c00f97d020044500d082a *00000002000c00047e020078500d080800000001000c000e7e020078500d081500000002000c00 *177e020098500d080800000001000c00217e020098500d082a00000002000c002c7e0200c4500d *080b00000002000c00377e0200d8500d080800000001000c00417e0200d8500d08320000000200 *0c004c7e0200685a0d085300000002000c00577e02000c510d084600000002000c00627e02005c *510d080800000001000c006c7e02005c510d083500000002000c00777e0200345c0d0835000000 *02000c00827e02009c510d080800000001000c008c7e02009c510d085f00000002000c00977e02 *0004520d080800000001000c00a17e020004520d082900000002000c00ac7e020030520d087100 *000002000c00b77e0200ac520d080800000001000c00c17e0200ac520d083500000002000c00cc *7e0200ec520d080800000001000c00d67e0200ec520d085f00000002000c00e17e020054530d08 *0800000001000c00eb7e020054530d082900000002000c00f67e020088530d080800000001000c *00007f020088530d087100000002000c00097f020004540d080800000001000c00137f02000454 *0d084e00000002000c001e7f02005c540d080800000001000c00287f02005c540d087200000002 *000c00337f0200d8540d080800000001000c003d7f0200d8540d087100000002000c00487f0200 *54550d080800000001000c00527f020054550d083500000002000c005d7f020094550d08080000 *0001000c00677f020094550d085f00000002000c00727f0200fc550d080800000001000c007c7f *0200fc550d082900000002000c00877f020030560d080800000001000c00917f020030560d0871 *00000002000c009a7f0200ac560d080800000001000c00a47f0200ac560d084e00000002000c00 *af7f020004570d080800000001000c00b97f020004570d087200000002000c00c47f020080570d *080800000001000c00ce7f020080570d087100000002000c00d97f0200fc570d08080000000100 *0c00e37f0200fc570d083500000002000c00ee7f02003c580d080800000001000c00f87f02003c *580d085f00000002000c0003800200a4580d080800000001000c000d800200a4580d0829000000 *02000c0018800200d8580d080800000001000c0022800200d8580d08e100000002000c002b8002 *00bc590d080c00000002000c0036800200e4590d081c00000001000c0040800200e4590d082000 *000002000c004b800200045a0d081700000002000c00568002001c5a0d080d00000002000c0060 *800200585a0d082c00000001000c006a800200685a0d081000000001000c0074800200bc5a0d08 *0b00000002000c007f800200d05a0d080800000001000c0089800200d05a0d083200000002000c *0094800200045b0d084600000002000c009f800200545b0d080800000001000c00a9800200545b *0d083500000002000c00b48002008c5b0d084b00000002000c00bf800200d85b0d080e00000002 *000c00ca800200e85b0d080d00000002000c00d4800200245c0d082c00000001000c00de800200 *345c0d081000000001000c00e88002006c5c0d081500000002000c00f2800200b05c0d082c0000 *0001000c00fc800200b05c0d081b00000002000c0006810200f85c0d082c00000001000c001081 *0200045d0d080c00000001000c001a810200045d0d081b00000002000c0023810200205d0d080f *00000002000c002e810200305d0d081500000002000c0038810200745d0d082c00000001000c00 *42810200745d0d081c00000002000c004c810200bc5d0d082c00000001000c0056810200bc5d0d *081500000002000c0061810200f05d0d081c00000001000c006b810200f05d0d08280100000200 *0c0075810200b0600d080c00000001000c009981020024610d080400000001000c00b681020068 *610d080c00000001000c00d6810200dc610d081400000001000c00f1810200a0630d0808000000 *01000c00fb810200d8630d080800000001000c000582020010640d080800000001000c000f8202 *0048640d080800000001000c001982020080640d080800000001000c0023820200b8640d080800 *000001000c002d820200f0640d080800000001000c0055d3000098730d080c00000001000c0037 *82020030740d080800000001000c004182020068740d080800000001000c004b820200a0740d08 *0800000001000c005582020040750d080c00000001000c005f820200a0630d082d00000002000c *006a820200d8630d082d00000002000c007582020010640d082d00000002000c00808202004864 *0d082d00000002000c008b82020080640d082d00000002000c0096820200b8640d082d00000002 *000c00a1820200f0640d082d00000002000c00ac8202002c650d080c00000001000c00b6820200 *2c650d084200000002000c00c18202007c650d080c00000001000c00cb8202007c650d08490000 *0002000c00d6820200d0650d080800000001000c00e0820200d0650d082d00000002000c00eb82 *020008660d080800000001000c00f582020008660d082d00000002000c000083020040660d0808 *00000001000c000a83020040660d082d00000002000c001583020078660d080800000001000c00 *1f83020078660d082d00000002000c002a830200b0660d080800000001000c0034830200b0660d *082d00000002000c003f830200e8660d080800000001000c0049830200e8660d082d0000000200 *0c005483020020670d080800000001000c005e83020020670d082d00000002000c006983020058 *670d080800000001000c007383020058670d082d00000002000c007e83020090670d0808000000 *01000c008883020090670d082d00000002000c0093830200c8670d080800000001000c009d8302 *00c8670d082d00000002000c00a883020000680d080800000001000c00b283020000680d082d00 *000002000c00bd83020038680d080800000001000c00c783020038680d082d00000002000c00d2 *83020070680d080800000001000c00dc83020070680d082d00000002000c00e7830200a8680d08 *0800000001000c00f1830200a8680d082d00000002000c00fc830200e0680d080800000001000c *0006840200e0680d082d00000002000c001184020018690d080800000001000c001b8402001869 *0d082d00000002000c002684020050690d080800000001000c003084020050690d082d00000002 *000c003b84020088690d080800000001000c004584020088690d082d00000002000c0050840200 *c0690d080800000001000c005a840200c0690d082d00000002000c0065840200f8690d08080000 *0001000c006f840200f8690d082d00000002000c007a840200306a0d080800000001000c008484 *0200306a0d082d00000002000c008f840200686a0d080800000001000c0099840200686a0d082d *00000002000c00a4840200a06a0d080800000001000c00ae840200a06a0d082d00000002000c00 *b9840200d86a0d080800000001000c00c3840200d86a0d082d00000002000c00ce840200106b0d *080800000001000c00d8840200106b0d082d00000002000c00e38402004c6b0d080c0000000100 *0c00ed8402004c6b0d08e600000002000c00f88402003c6c0d080800000001000c00028502003c *6c0d081300000002000c000b8502005c6c0d080c00000001000c00158502005c6c0d0826000000 *02000c004e9d00008c6c0d080800000001000c00589d00008c6c0d082300000002000c00208502 *00bc6c0d080c00000001000c002a850200bc6c0d082600000002000c007bd30000f06c0d080c00 *000001000c0035850200f06c0d089503000002000c004085020090700d080800000001000c004a *85020090700d082900000002000c0055850200bc700d084500000002000c006085020010710d08 *0c00000001000c006a85020010710d084300000002000c007385020054710d081500000002000c *007e85020080710d081400000001000c00888502008c710d080c00000001000c00928502008c71 *0d082a00000002000c009d850200c4710d080c00000001000c00a7850200c4710d085700000002 *000c00b08502001c720d082000000002000c00bb85020048720d080c00000001000c00c5850200 *48720d081b00000002000c00ce85020064720d081c00000002000c00d985020094720d08140000 *0001000c00e385020094720d080f00000002000c00ed850200b8720d081400000001000c00f785 *0200c8720d081000000001000c0001860200c8720d083700000002000c000c86020010730d0810 *00000001000c001686020010730d085100000002000c002186020064730d080800000002000c00 *2b8602008c730d082000000001000c003586020098730d088d00000002000c004086020030740d *082d00000002000c004b86020068740d082d00000002000c0056860200a0740d082d0000000200 *0c0061860200d8740d080800000001000c006b860200d8740d085900000002000c007486020040 *750d085c00000002000c007f8602009c750d080400000001000c009f86020000760d0804000000 *01000c00bd860200987d0d080c00000001000c00c786020044760d080800000001000c00d18602 *0044760d085d00000002000c00889c0000ac760d080800000001000c00da860200ac760d081300 *000002000c00e3860200c8760d080800000001000c00ed860200c8760d081900000002000c0084 *c50000ec760d080800000001000c008ec50000ec760d081e00000002000c00f686020014770d08 *0800000001000c000087020014770d082a00000002000c000987020048770d080800000001000c *001387020048770d080f00000002000c001c87020060770d080800000001000c00268702006077 *0d087900000002000c002f870200e4770d080800000001000c0039870200e4770d081c00000002 *000c004287020008780d080800000001000c004c87020008780d08d200000002000c0057870200 *e4780d080800000001000c0061870200e4780d081800000002000c006a87020004790d08080000 *0001000c007487020004790d082300000002000c007d87020028790d081600000002000c008887 *020048790d080800000001000c009287020048790d086800000002000c009b870200647a0d084d *00000002000c00a6870200b8790d080800000001000c00b0870200b8790d082100000002000c00 *b9870200e4790d080800000001000c00c3870200e4790d082a00000002000c00cc870200187a0d *080800000001000c00d6870200187a0d081500000002000c00df870200307a0d08120000000200 *0c00ea870200587a0d081400000001000c00f4870200647a0d080c00000001000c00fe870200bc *7a0d080800000001000c0008880200bc7a0d080b00000002000c0011880200d07a0d0808000000 *01000c001b880200d07a0d08c800000002000c004ea20100a07b0d080800000001000c00248802 *00a07b0d081800000002000c002d880200c07b0d080800000001000c0037880200c07b0d081c00 *000002000c0040880200e87b0d080c00000001000c004a880200e87b0d086400000002000c0053 *880200587c0d080c00000001000c005d880200587c0d086400000002000c0068c60000c87c0d08 *0c00000001000c0072c60000c87c0d083d00000002000c007bc60000147d0d080c00000001000c *0085c60000147d0d081200000002000c0066880200347d0d080c00000001000c0070880200347d *0d085600000002000c0079880200987d0d08ed00000002000c0082880200dc800d080800000001 *000c008c880200b87e0d080e00000002000c0097880200c87e0d081100000002000c0037430200 *9c7f0d082f00000002000c00a2880200dc7e0d084700000002000c00ad880200387f0d08140000 *0001000c00b7880200407f0d080800000001000c00c1880200407f0d082400000002000c00ca88 *0200647f0d081500000002000c00d5880200907f0d081400000001000c002d4302009c7f0d080c *00000001000c00df880200cc7f0d080b00000002000c00ea880200d87f0d082b00000002000c00 *f588020018800d081400000001000c00ff88020020800d080800000001000c000989020020800d *084d00000002000c001289020078800d080800000001000c001c89020078800d08100000000200 *0c002589020090800d080800000001000c002f89020090800d081900000002000c0025c50000b4 *800d080800000001000c002fc50000b4800d081e00000002000c0038890200dc800d0836000000 *02000c0041890200a8810d080400000001000c002e23010018820d080800000001000c00588902 *0018820d082d00000002000c006189020048820d080400000001000c0080890200b8820d080800 *000001000c008a890200b8820d082d00000002000c0093890200dc830d081400000001000c009d *89020014830d080e00000002000c00a88902002c830d080800000001000c00b28902002c830d08 *2900000002000c00bd89020060830d080800000001000c00c789020060830d084e00000002000c *00d0890200b0830d081500000002000c00db890200dc840d080800000001000c00e5890200b885 *0d081800000001000c00ef8902004c840d080800000001000c00f98902004c840d088500000002 *000c00028a0200dc840d082a00000002000c000d8a020008850d080500000002000c00178a0200 *b8850d083600000002000c00228a020018850d080800000001000c002c8a020018850d08490000 *0002000c00358a02006c850d080800000001000c003f8a02006c850d081200000002000c00488a *020088850d080800000001000c00528a020088850d081500000002000c005b8a02000c870d0808 *00000001000c00658a0200cc870d080c00000001000c006f8a020098860d080800000001000c00 *798a020098860d082d00000002000c00848a0200d0860d080800000001000c008e8a0200d0860d *083400000002000c00978a02000c870d082a00000002000c00a28a020038870d08090000000200 *0c00ad8a020044870d080e00000002000c00b88a020068870d081400000001000c00c28a020070 *870d080800000001000c00cc8a020070870d081e00000002000c00d58a020098870d0808000000 *01000c00df8a020098870d080c00000002000c00e88a0200ac870d080800000001000c00f28a02 *00ac870d081100000002000c00fb8a0200cc870d082f00000002000c00068b020090880d080800 *000001000c00108b020030880d080900000002000c001b8b020044880d080800000001000c0025 *8b020044880d081f00000002000c002e8b020064880d080f00000002000c00398b020088880d08 *1400000001000c00438b020090880d081800000002000c004c8b0200c8880d080800000001000c *00568b0200c8880d082700000002000c005f8b0200b0890d080800000001000c00698b02002489 *0d080900000002000c00748b020038890d080800000001000c007e8b020038890d080800000002 *000c00878b020048890d080800000001000c00918b020048890d083a00000002000c009a8b0200 *84890d080f00000002000c00a58b0200a8890d081400000001000c00af8b0200b0890d08180000 *0002000c00b88b02008c8c0d080c00000001000c00c28b02008c8c0d083500000002000c00cd8b *0200988a0d080800000001000c00d78b0200988a0d083f00000002000c00e08b0200d88a0d080c *00000002000c00eb8b0200ec8a0d080800000001000c00f58b0200ec8a0d083300000002000c00 *008c0200288b0d080800000001000c000a8c0200288b0d083c00000002000c00138c02006c8b0d *080800000001000c001d8c02006c8b0d083c00000002000c00288c0200a88b0d08020000000200 *0c00328c0200d88b0d082700000002000c003d8c0200b48b0d080800000001000c00478c0200b4 *8b0d080b00000002000c00508c0200d88b0d081800000001000c005a8c0200008c0d0869000000 *02000c00658c0200808c0d081400000001000c006f8c02001c8d0d080800000001000c00798c02 *00e48c0d080800000001000c00838c0200e48c0d083000000002000c008c8c02001c8d0d081400 *000002000c00958c0200888d0d080800000001000c009f8c0200fc8d0d080c00000001000c00a9 *8c0200888d0d082f00000002000c00b48c0200c08d0d080800000001000c00be8c0200c08d0d08 *1300000002000c00c78c0200dc8d0d080800000001000c00d18c0200dc8d0d081400000002000c *00da8c0200fc8d0d081e00000002000c00e58c02003c8e0d080800000001000c00ef8c02003c8e *0d082d00000002000c00f88c0200a88e0d080800000001000c00028d02008c8e0d080800000001 *000c000c8d02008c8e0d081300000002000c00158d0200a88e0d081400000002000c001e8d0200 *f48e0d080800000001000c00308d0200b0900d081400000001000c003a8d0200a88f0d080e0000 *0002000c00458d0200b88f0d080e00000002000c00508d0200dc8f0d081400000001000c005a8d *0200dc8f0d080f00000002000c00658d0200ec8f0d080e00000002000c00708d020004900d0808 *00000001000c007a8d020004900d082800000002000c00838d020034900d080800000001000c00 *8d8d020034900d081400000002000c00968d020048900d081d00000002000c00a18d02007c900d *081400000001000c00ab8d02007c900d081d00000002000c00b68d020004910d08080000000100 *0c00dd4a0000d0900d080800000001000c00c08d0200d0900d082900000002000c00c98d020004 *910d081400000002000c00d28d02006c910d080800000001000c00dc8d020038910d0808000000 *01000c00e68d020038910d082900000002000c00ef8d02006c910d081400000002000c00f88d02 *001c920d082c00000002000c00018e02001c920d080800000001000c000b8e0200c4930d080c00 *000001000c00158e0200c4930d086501000002000c00208e0200e0920d080800000001000c002a *8e0200e0920d082d00000002000c00552d000018930d080800000001000c005f2d000018930d08 *2f00000002000c002d2d000050930d080800000001000c00372d000050930d082f00000002000c *00358e020088930d080800000001000c003f8e020088930d082f00000002000c005a1e02009c95 *0d081400000001000c00441e020068950d080e00000002000c004f1e020078950d080e00000002 *000c004a8e020014960d080800000001000c005e8e020084960d080800000001000c00728e0200 *6c990d080c00000001000c007c8e02006c990d085d00000002000c00878e020020990d08080000 *0001000c00918e020020990d083f00000002000c009c8e0200849a0d080c00000001000c00a68e *0200849a0d085700000002000c00b18e0200349a0d080800000001000c00bb8e0200349a0d0841 *00000002000c00c68e0200fc9a0d080800000001000c00d08e0200fc9a0d082600000002000c00 *d98e0200809b0d080400000001000c00f58e0200709d0d080800000001000c00ff8e0200d89b0d *080800000001000c00098f0200d89b0d082c00000002000c00128f02000c9c0d08080000000100 *0c001c8f02000c9c0d082c00000002000c00258f0200409c0d080800000001000c002f8f020040 *9c0d083500000002000c00388f0200809c0d080800000001000c00428f0200809c0d0820000000 *02000c004b8f0200a89c0d080800000001000c00558f0200a89c0d085a00000002000c005e8f02 *000c9d0d080800000001000c00688f02000c9d0d085c00000002000c00718f0200709d0d080f00 *000002000c007a8f0200109e0d080800000001000c00848f0200109e0d082600000002000c008d *8f0200589e0d080800000001000c00978f0200589e0d082600000002000c00a08f0200d89f0d08 *0800000001000c00c38f020088a00d080c00000001000c00cd8f02004ca00d080800000001000c *00d78f02004ca00d083000000002000c00e08f020088a00d081700000002000c00e98f0200a0a0 *0d080800000001000c000d90020050a10d080c00000001000c001790020014a10d080800000001 *000c002190020014a10d083000000002000c002a90020050a10d081700000002000c0033900200 *68a10d080800000001000c005390020018a20d080c00000001000c005d900200dca10d08080000 *0001000c0067900200dca10d083000000002000c007090020018a20d081700000002000c007990 *020030a20d080800000001000c009b900200e0a20d080c00000001000c00a5900200a4a20d0808 *00000001000c00af900200a4a20d083000000002000c00b8900200e0a20d081700000002000c00 *c190020080a30d080800000001000c00cb90020014a50d080800000001000c00d590020080a30d *082e00000002000c00e0900200b8a30d080800000001000c00ea900200b8a30d08310000000200 *0c00f3900200f4a30d080800000001000c00fd900200f4a30d083800000002000c000691020034 *a40d080800000001000c001091020034a40d081400000002000c001991020054a40d080c000000 *01000c002391020054a40d083000000002000c002e91020084a40d080f00000002000c00399102 *0094a40d080f00000002000c0044910200b8a40d081400000001000c004e910200c0a40d080800 *000001000c0058910200c0a40d084900000002000c006191020014a50d084200000002000c006c *91020058a50d080400000001000c0091910200eca60d080c00000001000c009b91020098a50d08 *1400000002000c00a6910200b4a50d080800000001000c00b0910200b4a50d082900000002000c *00bb910200e8a50d080800000001000c00c5910200e8a50d082900000002000c00d09102001ca6 *0d080800000001000c00da9102001ca60d081100000002000c00e391020030a60d086400000002 *000c00ee910200a8a60d081400000001000c00f8910200b4a60d080c00000001000c0002920200 *b4a60d082a00000002000c000b920200eca60d081700000002000c001492020004a70d08080000 *0001000c003092020000aa0d080c00000001000c003a9202004ca70d080800000001000c004492 *02004ca70d085a00000002000c004d920200b0a70d080800000001000c0057920200b0a70d0814 *00000002000c0060920200cca70d080800000001000c006a920200cca70d084200000002000c00 *759202001ca80d080c00000001000c007f9202001ca80d082900000002000c008a92020048a80d *080200000002000c0094920200b8a80d082d00000002000c009f92020054a80d08080000000100 *0c00a992020054a80d080b00000002000c00b292020068a80d080800000001000c00bc92020068 *a80d081800000002000c00c59202008ca80d080c00000001000c00cf9202008ca80d0812000000 *02000c00d8920200b8a80d081800000001000c00e2920200f0a80d080800000001000c00ec9202 *00f0a80d083a00000002000c00f592020038a90d080c00000001000c00ff92020038a90d085300 *000002000c000893020098a90d080c00000001000c001293020098a90d085b00000002000c001b *93020000aa0d081200000002000c002493020014aa0d080400000001000c004593020044aa0d08 *0400000001000c006693020074aa0d080400000001000c00889302002cab0d080800000001000c *0092930200d8aa0d080800000001000c009c930200d8aa0d084900000002000c00a59302002cab *0d082d00000002000c00ae93020088ad0d081800000001000c00b8930200acab0d080500000002 *000c00c293020088ad0d083000000002000c00cd930200bcab0d080800000001000c00d7930200 *bcab0d083500000002000c00e2930200fcab0d080800000001000c00ec930200fcab0d085c0000 *0002000c00f593020060ac0d080800000001000c00ff93020060ac0d080c00000002000c000894 *020078ac0d080c00000001000c001294020078ac0d083300000002000c001d940200b4ac0d0808 *00000001000c0027940200b4ac0d080900000002000c0030940200c8ac0d080800000001000c00 *3a940200c8ac0d081b00000002000c0043940200ecac0d080800000001000c004d940200ecac0d *086200000002000c005694020058ad0d080800000001000c006094020058ad0d08180000000200 *0c0069940200b8ad0d080400000001000c008c94020074ae0d081400000001000c0096940200f0 *ad0d083600000002000c00a194020028ae0d083600000002000c00ac940200b4b00d0818000000 *01000c00b6940200c4ae0d080500000002000c00c0940200b4b00d083000000002000c00cb9402 *00d4ae0d080800000001000c00d5940200d4ae0d083500000002000c00e094020014af0d080800 *000001000c00ea94020014af0d085c00000002000c00f394020078af0d080800000001000c00fd *94020078af0d080c00000002000c000695020090af0d080c00000001000c001095020090af0d08 *3300000002000c001b950200ccaf0d080800000001000c0025950200ccaf0d080900000002000c *002e950200e0af0d080800000001000c0038950200e0af0d081e00000002000c004195020008b0 *0d080800000001000c004b95020008b00d080900000002000c00549502001cb00d080800000001 *000c005e9502001cb00d085f00000002000c006795020084b00d080800000001000c0071950200 *84b00d081800000002000c007a9502004cb10d080800000001000c00849502004cb10d08330000 *0002000c008d95020080b10d080400000001000c00a7950200fcb20d080800000001000c00b195 *0200c4b10d080800000001000c00bb950200c4b10d083c00000002000c00c695020008b20d0808 *00000001000c00d095020008b20d085100000002000c00d995020064b20d080800000001000c00 *e395020064b20d081500000002000c00ec95020084b20d080800000001000c00f695020084b20d *081200000002000c00ff950200a0b20d080800000001000c0009960200a0b20d08540000000200 *0c0012960200fcb20d081800000002000c001b96020014b30d080800000001000c003c960200a0 *b60d080c00000001000c004696020060b30d080800000001000c005096020060b30d082d000000 *02000c005996020098b30d080800000001000c006396020098b30d082a00000002000c006e9602 *00ccb30d080800000001000c0078960200ccb30d085900000002000c008196020030b40d080800 *000001000c008b96020030b40d082a00000002000c009696020064b40d080800000001000c00a0 *96020064b40d083500000002000c00a9960200a4b40d080800000001000c00b3960200a4b40d08 *1700000002000c00bc960200c4b40d080800000001000c00c6960200c4b40d081900000002000c *00cf960200e8b40d080800000001000c00d9960200e8b40d081500000002000c00e296020000b5 *0d080200000002000c00ec96020058b50d082400000002000c00f79602000cb50d080800000001 *000c00019702000cb50d083100000002000c000a97020058b50d081800000001000c0014970200 *84b50d080800000001000c001e97020084b50d082d00000002000c0027970200bcb50d08080000 *0001000c0031970200bcb50d082a00000002000c003c970200f0b50d080800000001000c004697 *0200f0b50d080500000002000c004f97020004b60d080c00000001000c005997020004b60d0864 *00000002000c006297020068b60d080f00000002000c006d97020078b60d080800000002000c00 *7897020094b60d081400000001000c0082970200a0b60d083e00000002000c008b970200e0b60d *080c00000001000c00ae9702004cb90d080c00000001000c00b897020078b70d08020000000200 *0c00c2970200f4b70d085400000002000c00cd97020084b70d080800000001000c00d797020084 *b70d085700000002000c00e0970200f4b70d081800000001000c00ea97020050b80d0808000000 *01000c00f497020050b80d084e00000002000c00fd970200acb80d080c00000001000c00079802 *00acb80d087200000002000c00109802002cb90d080c00000001000c001a9802002cb90d081100 *000002000c00239802004cb90d082800000002000c002c98020074b90d082400000001000c0043 *98020064c20d080c00000001000c004d980200d8b90d080d00000002000c0058980200e8b90d08 *0d00000002000c0063980200f8b90d080d00000002000c006e98020008ba0d080d00000002000c *007998020034ba0d081c00000001000c00839802003cba0d080800000001000c008d9802003cba *0d082a00000002000c009898020068ba0d084a00000002000c00a3980200c0ba0d080c00000001 *000c00ad980200c0ba0d085300000002000c00b698020014bb0d081c00000002000c00c1980200 *44bb0d081400000001000c00cb98020050bb0d080c00000001000c00d598020050bb0d080c0000 *0002000c00de98020064bb0d080800000001000c00e898020064bb0d083100000002000c00f198 *0200a4bb0d080c00000001000c00fb980200a4bb0d082600000002000c0006990200ccbb0d080f *00000002000c0011990200dcbb0d080f00000002000c001c99020000bc0d081400000001000c00 *2699020008bc0d080800000001000c003099020008bc0d083400000002000c003999020044bc0d *080800000001000c004399020044bc0d081400000002000c004c99020060bc0d08080000000100 *0c005699020060bc0d083000000002000c006199020090bc0d080d00000002000c006c990200a8 *bc0d080800000001000c0076990200a8bc0d085a00000002000c007f9902000cbd0d0808000000 *01000c00899902000cbd0d081400000002000c009299020028bd0d080800000001000c009c9902 *0028bd0d084200000002000c00a799020074bd0d080800000001000c00b199020074bd0d087300 *000002000c00ba990200f0bd0d080800000001000c00c4990200f0bd0d081400000002000c00cd *9902000cbe0d080800000001000c00d79902000cbe0d084800000002000c00e299020054be0d08 *0200000002000c00ec99020070be0d082300000002000c00f799020070be0d081800000001000c *00019a02009cbe0d080800000001000c000b9a02009cbe0d084000000002000c00149a0200e8be *0d080c00000001000c001e9a0200e8be0d084600000002000c00279a02003cbf0d080c00000001 *000c00319a02003cbf0d086100000002000c003a9a0200acbf0d080c00000001000c00449a0200 *acbf0d081200000002000c004d9a0200ccbf0d080c00000001000c00579a0200ccbf0d081d0000 *0002000c00609a0200f8bf0d080c00000001000c006a9a0200f8bf0d080900000002000c00739a *020010c00d080c00000001000c007d9a020010c00d081c00000002000c00869a020038c00d080c *00000001000c00909a020038c00d085800000002000c00999a02009cc00d080c00000001000c00 *a39a02009cc00d080f00000002000c00ac9a0200b8c00d080c00000001000c00b69a0200b8c00d *081d00000002000c00bf9a0200e4c00d080c00000001000c00c99a0200e4c00d08090000000200 *0c00d29a0200f0c00d081c00000002000c00dd9a02000cc10d082400000002000c00e79a020054 *c10d082400000001000c00f19a020060c10d080c00000001000c00fb9a020060c10d080c000000 *02000c00049b02006cc10d080f00000002000c000f9b020088c10d080c00000001000c00199b02 *0088c10d080500000002000c00229b02009cc10d080c00000001000c002c9b02009cc10d082000 *000002000c00359b0200c8c10d080c00000001000c003f9b0200c8c10d080900000002000c0048 *9b0200d4c10d080f00000002000c00539b0200fcc10d081800000001000c005d9b020008c20d08 *0c00000001000c00679b020008c20d080900000002000c00709b020020c20d080c00000001000c *007a9b020020c20d080200000002000c00839b020024c20d081500000002000c008e9b02003cc2 *0d080500000002000c00999b020058c20d081400000001000c00a39b020064c20d085900000002 *000c00ac9b0200c0c20d080400000001000c00ca9b02008cc90d080c00000001000c00d49b0200 *08c30d084300000002000c00df9b02004cc30d089d00000002000c00ea9b020000c40d08140000 *0001000c00f49b020008c40d080800000001000c00fe9b020008c40d081200000002000c00079c *020024c40d080800000001000c00119c020024c40d082900000002000c001c9c020050c40d0805 *00000002000c00269c02002cc60d08ae00000002000c00319c020060c40d080800000001000c00 *3b9c020060c40d084400000002000c00469c0200acc40d080800000001000c00509c0200acc40d *084c00000002000c00599c0200f8c40d081200000002000c00649c02000cc50d08090000000200 *0c006f9c02002cc50d081400000001000c00799c020034c50d080800000001000c00839c020034 *c50d081800000002000c008c9c020058c50d080c00000001000c00969c020058c50d083b000000 *02000c009f9c020094c50d080200000002000c009eb5010098c50d080200000002000c00dcb501 *009cc50d082300000002000c00e7b50100d4c50d081400000001000c00aa9c0200d4c50d080c00 *000002000c00b59c0200f4c50d081400000001000c00bf9c020000c60d080c00000001000c00c9 *9c020000c60d081200000002000c00d29c02002cc60d081800000001000c00dc9c0200e4c60d08 *0800000001000c00e69c0200e4c60d087500000002000c00ef9c020064c70d080800000001000c *00f99c020064c70d082300000002000c00029d020090c70d080800000001000c000c9d020090c7 *0d080900000002000c00159d02009cc70d085a00000002000c00209d020000c80d080800000001 *000c002a9d020000c80d082300000002000c00339d02002cc80d080800000001000c003d9d0200 *2cc80d080900000002000c00469d020038c80d081200000002000c00519d020060c80d08140000 *0001000c005b9d02006cc80d080c00000001000c00659d02006cc80d081101000002000c006e9d *02008cc90d082c00000002000c00779d020024ca0d080800000001000c00889d0200dccc0d080c *00000001000c00a69d0200f4d30d080c00000001000c00d1b8010038cd0d080800000001000c00 *b09d020038cd0d086500000002000c00b99d0200a8cd0d080800000001000c00c39d0200a8cd0d *082b00000002000c00cc9d0200d4cd0d080500000002000c00d69d0200c4cf0d08360000000200 *0c00e19d0200e8cd0d080c00000001000c00eb9d0200e8cd0d082100000002000c00f49d020018 *ce0d080c00000001000c00fe9d020018ce0d082100000002000c00079e020048ce0d080c000000 *01000c00119e020048ce0d085c00000002000c001a9e02000cd00d085b00000002000c00259e02 *00b0ce0d080c00000001000c002f9e0200b0ce0d081500000002000c00389e0200d4ce0d080c00 *000001000c00429e0200d4ce0d087b00000002000c004b9e02005ccf0d080c00000001000c0055 *9e02005ccf0d082d00000002000c005e9e020098cf0d080c00000001000c00689e020098cf0d08 *1400000002000c00719e0200c4cf0d081800000001000c007b9e02000cd00d081000000001000c *00859e020068d00d084100000002000c00909e0200b4d00d080800000001000c009a9e0200b4d0 *0d082900000002000c00786c0200ecd00d080c00000001000c00826c0200ecd00d086300000002 *000c00a59e020050d10d080500000002000c00af9e020048d20d083300000002000c00ba9e0200 *60d10d080800000001000c00c49e020060d10d083000000002000c00cd9e020098d10d08080000 *0001000c00d79e020098d10d083000000002000c00e29e0200d0d10d080800000001000c00ec9e *0200d0d10d084900000002000c00f59e02008cd20d087200000002000c00009f020024d20d0808 *00000001000c000a9f020024d20d080900000002000c00139f020048d20d081800000001000c00 *1d9f02008cd20d081000000001000c00279f020008d30d080800000001000c00319f020008d30d *083400000002000c003a9f02003cd30d086100000002000c00459f0200b4d30d08140000000100 *0c004f9f0200c0d30d080c00000001000c00599f0200c0d30d082600000002000c00629f0200f4 *d30d08a600000002000c006b9f02009cd40d080400000001000c008a9f020088d50d080c000000 *01000c00949f02002cd50d080800000001000c009e9f02002cd50d081c00000002000c00a79f02 *0050d50d080800000001000c00b19f020050d50d082a00000002000c00bc9f020088d50d084c00 *000002000c00c79f0200d4d50d080400000001000c00e79f0200b4d80d080c00000001000c00f1 *9f02001cd60d080800000001000c00fb9f02001cd60d082900000002000c0006a0020050d60d08 *0800000001000c0010a0020050d60d082900000002000c001ba0020084d60d080800000001000c *0025a0020084d60d081100000002000c002ea00200a4d60d080c00000001000c0038a00200a4d6 *0d087900000002000c0041a0020020d70d084e00000002000c004ca0020070d70d085e00000002 *000c0057a00200e4d70d081400000001000c0061a00200f0d70d080c00000001000c006ba00200 *f0d70d083f00000002000c0074a002003cd80d080c00000001000c007ea002003cd80d08250000 *0002000c0087a0020070d80d080c00000001000c0091a0020070d80d081400000002000c009aa0 *020090d80d080c00000001000c00a4a0020090d80d081800000002000c00ada00200b4d80d0821 *00000002000c00b6a00200d8d80d080c00000001000c00d3a0020074de0d080c00000001000c00 *dda0020034d90d080800000001000c00e7a0020034d90d083000000002000c00f0a002006cd90d *080800000001000c00faa002006cd90d083000000002000c0005a10200a4d90d08080000000100 *0c000fa10200a4d90d083700000002000c0018a10200dcd90d080200000002000c0022a1020034 *da0d087c00000002000c002da10200e8d90d080800000001000c0037a10200e8d90d0831000000 *02000c0040a1020034da0d081800000001000c004aa10200b0da0d082b00000002000c0055a102 *00dcda0d081100000002000c0060a1020004db0d081400000001000c006aa1020010db0d080c00 *000001000c0074a1020010db0d080900000002000c007da1020024db0d080800000001000c0087 *a1020024db0d086700000002000c0090a1020094db0d080800000001000c009aa1020094db0d08 *3500000002000c00a3a10200d4db0d080800000001000c00ada10200d4db0d086800000002000c *00b6a1020044dc0d080800000001000c00c0a1020044dc0d083500000002000c00c9a1020084dc *0d080800000001000c00d3a1020084dc0d083300000002000c00dca10200c0dc0d080800000001 *000c00e6a10200c0dc0d083600000002000c00f1a1020000dd0d080800000001000c00fba10200 *00dd0d083d00000002000c0004a202004cdd0d080c00000001000c000ea202004cdd0d08d80000 *0002000c0017a2020030de0d080c00000001000c0021a2020030de0d083600000002000c002aa2 *020074de0d085f01000002000c0033a2020024e00d080400000001000c005da2020014e40d0808 *00000001000c0067a2020068e00d081000000001000c008da20200e8e40d081000000001000c00 *97a20200f8e50d081800000001000c00a1a20200e8e00d081c00000001000c00bfa202003ce60d *080c00000001000c00c9a2020090eb0d081000000001000c00d3a2020074ec0d08180000000100 *0c00dda20200c4e10d080800000001000c00e7a20200c4e10d084700000002000c00f0a2020014 *e20d080800000001000c00faa2020014e20d082a00000002000c0005a302004ce20d080c000000 *01000c000fa302004ce20d086200000002000c001aa30200b8e20d080800000001000c0024a302 *00b8e20d083700000002000c0094b60100f8e20d080800000001000c002da30200f8e20d084700 *000002000c0036a3020048e30d080800000001000c0040a3020048e30d085500000002000c0049 *a30200a8e30d080800000001000c0053a30200a8e30d081800000002000c005ca30200c8e30d08 *0800000001000c0066a30200c8e30d084100000002000c006fa3020014e40d081100000002000c *0078a3020028e40d080800000002000c0083a3020038e40d080800000001000c008da3020038e4 *0d080800000002000c0096a302004ce40d080c00000001000c00a0a302004ce40d081200000002 *000c00a9a3020060e40d081500000002000c00b3a302009ce40d082400000001000c00bda30200 *a8e40d080c00000001000c00c7a30200a8e40d082d00000002000c00d0a30200e8e40d08260000 *0002000c00dba3020010e50d080500000002000c00e5a30200f8e50d083600000002000c00f0a3 *020020e50d080800000001000c00faa3020020e50d082900000002000c0005a4020058e50d080c *00000001000c000fa4020058e50d081d00000002000c0018a4020084e50d080c00000001000c00 *22a4020084e50d085a00000002000c002ba402003ce60d082900000002000c0036a4020068e60d *083200000002000c0041a40200a4e60d080800000001000c004ba40200a4e60d08310000000200 *0c0054a40200e4e60d080c00000001000c005ea40200e4e60d082900000002000c0069a4020010 *e70d080200000002000c0073a4020040e70d082100000002000c007ea402001ce70d0808000000 *01000c0088a402001ce70d080b00000002000c0091a4020040e70d081800000001000c009ba402 *006ce70d080800000001000c00a5a402006ce70d085700000002000c00aea40200cce70d080800 *000001000c00b8a40200cce70d083800000002000c00c1a4020010e80d080c00000001000c00cb *a4020010e80d081200000002000c00d4a4020030e80d080c00000001000c00dea4020030e80d08 *3b00000002000c00e7a4020078e80d080c00000001000c00f1a4020078e80d080900000002000c *00faa4020090e80d080c00000001000c0004a5020090e80d082600000002000c000da50200b8e8 *0d082000000002000c0018a50200d8e80d082000000002000c0023a502000ce90d081400000001 *000c002da5020018e90d080c00000001000c0037a5020018e90d085600000002000c0040a50200 *70e90d081500000002000c004ba5020090e90d080800000001000c0055a5020090e90d08290000 *0002000c0060a50200bce90d084900000002000c006ba5020010ea0d080800000001000c0075a5 *020010ea0d082900000002000c0080a502003cea0d084900000002000c008ba50200a0ea0d0818 *00000001000c0095a50200acea0d080c00000001000c009fa50200acea0d084700000002000c00 *a8a5020000eb0d080c00000001000c00b2a5020000eb0d081400000002000c00bba5020014eb0d *081500000002000c00c6a502002ceb0d082d00000002000c00d0a5020080eb0d08240000000100 *0c00daa5020090eb0d083600000002000c00e5a50200c8eb0d080500000002000c00efa5020074 *ec0d082400000002000c00faa50200d0eb0d083a00000002000c0005a602000cec0d083a000000 *02000c0010a602005cec0d081400000001000c001aa6020098ec0d080c00000001000c0038a602 *00dcee0d081400000001000c0042a60200c0ec0d080800000002000c004da60200d0ec0d080800 *000001000c0057a60200d0ec0d082f00000002000c0062a6020000ed0d083700000002000c006d *a602004ced0d081400000001000c0077a6020058ed0d080c00000001000c0081a6020058ed0d08 *3000000002000c008ca6020088ed0d083a00000002000c0097a60200c4ed0d080800000002000c *00a2a60200d4ed0d080800000001000c00aca60200d4ed0d082f00000002000c00b7a6020004ee *0d083700000002000c00c2a6020050ee0d081400000001000c00cca602005cee0d080c00000001 *000c00d6a602005cee0d083000000002000c00e1a602008cee0d083a00000002000c00eca60200 *8cef0d080800000001000c00f6a602007cef0d080800000001000c0000a702007cef0d08050000 *0002000c0009a702008cef0d082d00000002000c0014a70200bcef0d081000000001000c0054e5 *000014f20d080c00000001000c0032a7020008f50d081400000001000c003ca7020034f00d0808 *00000002000c000ce5000044f00d080800000001000c0016e5000044f00d085100000002000c00 *47a7020098f00d083700000002000c0052a70200e4f00d081400000001000c0021e50000f0f00d *080c00000001000c005ca70200f0f00d083000000002000c0067a702002cf10d080c0000000100 *0c0071a702002cf10d085000000002000c007ca702007cf10d080800000002000c0087a7020090 *f10d080c00000001000c0091a7020090f10d083000000002000c009ca70200c0f10d0831000000 *02000c00a7a7020008f20d081400000001000c005ee5000014f20d085700000002000c00b1a702 *006cf20d080800000002000c00bca7020080f20d080c00000001000c00c6a7020080f20d083000 *000002000c00d1a70200bcf20d080c00000001000c00dba70200bcf20d085e00000002000c00e6 *a702001cf30d083a00000002000c00f1a7020064f30d080c00000001000c00fba7020064f30d08 *3000000002000c0006a80200a0f30d080c00000001000c0010a80200a0f30d085e00000002000c *001ba8020000f40d083a00000002000c0026a8020050f40d081400000001000c0030a8020050f4 *0d080c00000002000c003ba8020070f40d081400000001000c0045a8020070f40d080f00000002 *000c0050a802008cf40d080c00000001000c005aa802008cf40d083000000002000c0065a80200 *bcf40d083700000002000c0070a8020028f50d080800000001000c007aa8020028f50d08090000 *0002000c0083a80200acf50d080800000001000c008da8020068f50d080800000001000c0097a8 *020068f50d083b00000002000c00a0a80200acf50d080b00000002000c00a9a8020030f60d0808 *00000001000c00b3a80200ecf50d080800000001000c00bda80200ecf50d083b00000002000c00 *c6a8020030f60d080b00000002000c00cfa80200b4f60d080800000001000c00d9a8020070f60d *080800000001000c00e3a8020070f60d083b00000002000c00eca80200b4f60d080b0000000200 *0c00f5a80200e0f60d080800000001000c00ffa80200e0f60d080800000002000c0008a9020068 *f80d080400000001000c0020a9020028f90d080800000001000c002aa902009cf90d0808000000 *01000c0034a90200f4f80d080800000001000c003ea90200f4f80d082c00000002000c0047a902 *0028f90d083600000002000c0052a9020068f90d080800000001000c005ca9020068f90d082c00 *000002000c0065a902009cf90d083600000002000c0070a9020048fa0d080800000001000c007a *a9020048fa0d080b00000002000c0083a9020090fa0d080800000001000c008da9020074fa0d08 *0800000001000c0097a9020074fa0d081100000002000c00a0a9020090fa0d081400000002000c *00a9a90200c4fa0d080800000001000c00b3a90200c4fa0d082b00000002000c00bca9020010fb *0d080800000001000c00c6a9020010fb0d082b00000002000c00cfa9020098fb0d080800000001 *000c00d9a902005cfb0d080800000001000c00e3a902005cfb0d081700000002000c00eca90200 *7cfb0d080800000001000c00f6a902007cfb0d081400000002000c00ffa9020098fb0d08140000 *0002000c0008aa0200acfb0d080400000001000c001baa0200d8fb0d080c00000001000c0025aa *0200d8fb0d084200000002000c002eaa02001cfc0d080400000001000c0047aa02005cfc0d080c *00000001000c0051aa02005cfc0d083700000002000c005aaa020094fc0d080800000001000c00 *6daa020028fd0d080c00000001000c0077aa0200d8fc0d080c00000001000c0081aa0200d8fc0d *084300000002000c008aaa020028fd0d081700000002000c0093aa020040fd0d08040000000100 *0c00b4aa02008cfd0d080c00000001000c00beaa02006cfd0d080c00000001000c00c8aa02006c *fd0d081100000002000c00d1aa02008cfd0d081400000002000c00daaa0200a0fd0d0808000000 *01000c00f5aa020010fe0d080800000001000c0010ab020080fe0d080800000001000c002bab02 *00f0fe0d080800000001000c0046ab0200acff0d081400000001000c0050ab020078ff0d080900 *000002000c005bab020084ff0d081100000002000c0066ab02005c010e081400000001000c0070 *ab0200d8ff0d082900000002000c007bab02000c000e080800000001000c0085ab02000c000e08 *2400000002000c008eab020030000e081e00000002000c0099ab020064000e081400000001000c *00a3ab020064000e081400000002000c00aeab020080000e080800000001000c00b8ab02008000 *0e082400000002000c00c1ab0200a4000e081e00000002000c00ccab0200cc000e080800000001 *000c00d6ab0200cc000e082400000002000c00dfab0200f0000e082400000002000c00eaab0200 *28010e081400000001000c00f4ab020028010e081d00000002000c00ffab02000c030e08140000 *0001000c0009ac020088010e082900000002000c0014ac0200bc010e080800000001000c001eac *0200bc010e082400000002000c0027ac0200e0010e081e00000002000c0032ac020014020e0814 *00000001000c003cac020014020e081400000002000c0047ac020030020e080800000001000c00 *51ac020030020e082400000002000c005aac020054020e081e00000002000c0065ac02007c020e *080800000001000c006fac02007c020e082400000002000c0078ac0200a0020e08240000000200 *0c0083ac0200d8020e081400000001000c008dac0200d8020e081d00000002000c0098ac020070 *030e080400000001000c00afac02009c030e080c00000001000c00b9ac02009c030e080b000000 *02000c00c2ac0200a8030e080800000001000c00d8ac020030060e081400000001000c00e2ac02 *00cc030e080c00000002000c00edac0200d8030e083500000002000c00f8ac02001c040e080c00 *000001000c0002ad02001c040e085700000002000c000dad020074040e084e00000002000c0018 *ad0200d8040e081400000001000c0022ad0200e8040e081000000001000c002cad0200e8040e08 *2900000002000c0037ad020020050e080c00000001000c0041ad020020050e084700000002000c *004cad020074050e080c00000001000c0056ad020074050e085700000002000c0061ad0200cc05 *0e084e00000002000c006cad020030060e080400000001000c0082ad0200cc060e080800000001 *000c008bad020094060e080800000001000c0094ad020094060e082e00000002000c009cad0200 *cc060e081400000002000c00a4ad020000070e080800000001000c00adad020000070e082b0000 *0002000c00b5ad020078070e081400000001000c00bfad020044070e080e00000002000c00caad *020054070e080e00000002000c00d5ad020078070e080c00000001000c00efad0200e8070e080c *00000001000c00f9ad02000c0b0e081000000001000c0003ae0200e8070e082900000002000c00 *0eae02001c080e080800000001000c0018ae02001c080e082900000002000c0023ae020054080e *080c00000001000c002dae020054080e083c00000002000c0038ae020098080e08080000000100 *0c0042ae020098080e084d00000002000c0041770000e8080e080e00000002000c00a0770000f8 *080e081100000002000c00ab77000020090e081400000001000c00c276000020090e080f000000 *02000c004dae020030090e080e00000002000c0058ae020040090e081100000002000c0063ae02 *0068090e081400000001000c005076000068090e080800000002000c006dae020070090e080e00 *000002000c0078ae020080090e081100000002000c0083ae0200a8090e081400000001000c009a *760000a8090e080f00000002000c00a5760000cc090e081400000001000c00af760000d4090e08 *0800000001000c00b9760000d4090e082b00000002000c00e8770000000a0e081500000002000c *00f37700002c0a0e081400000001000c008dae02002c0a0e081200000002000c00cd760000400a *0e080e00000002000c002c770000500a0e081100000002000c0037770000780a0e081400000001 *000c0098ae0200780a0e081500000002000c00a2ae0200bc0a0e082c00000001000c00acae0200 *c80a0e080c00000001000c00b6ae0200c80a0e083200000002000c00c1ae02000c0b0e08550000 *0002000c00ccae0200640b0e080400000001000c00e0ae0200080c0e080c00000001000c00eaae *0200b00b0e081000000002000c00f5ae0200c00b0e080e00000002000c00ffae0200fc0b0e082c *00000001000c0009af0200080c0e082600000002000c0014af0200300c0e081000000001000c00 *28af02009c0c0e080c00000001000c00eaea0000540e0e081000000001000c0032af02009c0c0e *082e00000002000c003daf0200cc0c0e081000000002000c0048af0200dc0c0e080e0000000200 *0c0052af0200180d0e082c00000001000c005caf0200240d0e080c00000001000c0066af020024 *0d0e082600000002000c00ffd30000580d0e080c00000001000c0071af0200580d0e0844000000 *02000c007caf0200a80d0e080c00000001000c0086af0200a80d0e084c00000002000c0091af02 *00000e0e080c00000001000c009baf0200000e0e080800000002000c00a6af0200180e0e081000 *000001000c00b0af0200180e0e082a00000002000c00bbaf0200540e0e087800000002000c00c6 *af0200cc0e0e080400000001000c00d7af02003c0f0e080c00000001000c00ebaf0200b80f0e08 *0800000001000c00f5af0200f00f0e080800000001000c00ffaf0200ec100e081000000001000c *0009b00200b80f0e082d00000002000c0014b00200f00f0e082d00000002000c001fb002002010 *0e080e00000002000c002ab0020030100e080800000002000c0035b002004c100e081400000001 *000c003fb002004c100e081300000002000c004ab0020060100e080800000002000c0055b00200 *7c100e081400000001000c005fb002007c100e082200000002000c006ab00200a0100e080e0000 *0002000c0074b00200dc100e082c00000001000c007eb00200ec100e082c00000002000c0089b0 *020018110e080400000001000c009ab002004c120e082c00000001000c0018d50000a8110e0808 *00000001000c0022d50000a8110e082900000002000c00a4b00200d4110e083b00000002000c00 *afb0020010120e080e00000002000c00b9b002004c120e080400000001000c00cab00200bc120e *080800000001000c00deb00200c4130e081400000001000c00e8b0020008130e08080000000100 *0c00f2b0020008130e083700000002000c00fbb0020040130e081800000002000c0005b102006c *130e081400000001000c000fb102006c130e081800000002000c0019b1020098130e0814000000 *01000c0023b1020098130e081800000002000c002db10200cc140e080400000001000c0041b102 *0038150e080400000001000c0055b10200e8160e080800000001000c005fb102007c160e080800 *000001000c0069b1020028160e080800000001000c0073b1020028160e084900000002000c007e *b102007c160e086100000002000c0089b10200e8160e082f00000002000c0094b1020018170e08 *0c00000001000c00a8b10200a8180e081400000001000c00b2b1020054170e083500000002000c *00bdb1020098170e080c00000001000c00c7b1020098170e082f00000002000c00d2b10200d417 *0e080c00000001000c00dcb10200d4170e082f00000002000c00e7b1020010180e080c00000001 *000c00f1b1020010180e086a00000002000c00fab102007c180e081500000002000c0005b20200 *a8180e080800000001000c0020b2020030190e080c00000001000c002ab2020030190e08510000 *0002000c0035b20200381a0e080800000001000c003fb20200381a0e080b00000002000c0048b2 *0200441a0e080800000001000c0068b20200ac1b0e080c00000001000c0072b202008c1a0e080b *00000002000c007db20200a01a0e080800000001000c0087b20200a01a0e080b00000002000c00 *90b20200ac1a0e081300000002000c009bb20200d41a0e081400000001000c00a5b20200e01a0e *080c00000001000c00afb20200e01a0e080f00000002000c00b8b20200fc1a0e080c0000000100 *0c00c2b20200fc1a0e082700000002000c00cbb20200301b0e080c00000001000c00d5b2020030 *1b0e081400000002000c00deb20200501b0e080c00000001000c00e8b20200501b0e0815000000 *02000c00f1b20200781b0e081000000001000c00fbb20200781b0e082600000002000c0006b302 *00ac1b0e083f00000002000c000fb30200ec1b0e080800000001000c002fb30200401c0e080800 *000001000c0057b30200f81c0e080c00000001000c0061b30200881c0e080b00000002000c006c *b302009c1c0e080800000001000c0076b302009c1c0e080b00000002000c007fb30200a81c0e08 *1300000002000c008ab30200d01c0e081400000001000c0094b30200dc1c0e080c00000001000c *009eb30200dc1c0e080f00000002000c00a7b30200f81c0e080f00000002000c00b0b30200081d *0e080400000001000c00d0b30200501d0e080400000001000c00f0b30200bc1d0e080400000001 *000c0010b40200281e0e080400000001000c0030b40200941e0e080400000001000c0050b40200 *001f0e080400000001000c0071b402006c1f0e080400000001000c0092b40200d81f0e08040000 *0001000c00b3b4020044200e080400000001000c00d4b40200b0200e080400000001000c00f5b4 *02001c210e080400000001000c0016b50200d4210e081400000001000c0020b50200a0210e0809 *00000002000c002bb50200ac210e081100000002000c0036b50200d4210e080400000001000c00 *4db5020000220e080c00000001000c0057b5020000220e080b00000002000c0060b502000c220e *080400000001000c0079b502006c220e080800000001000c0083b50200c0220e08100000000100 *0c008db502006c220e082900000002000c0098b50200a4220e080c00000001000c00a2b50200a4 *220e080b00000002000c00abb50200c0220e082400000002000c00b6b5020038230e0808000000 *01000c00c0b5020004230e080800000001000c00cab5020004230e082900000002000c00d3b502 *0038230e081400000002000c00dcb502009c230e080800000001000c00e6b502006c230e080800 *000001000c00f0b502006c230e082800000002000c00f9b502009c230e081400000002000c0002 *b60200b0230e080800000001000c001eb60200e0250e080400000001000c004eb60200b8260e08 *0c00000001000c007db60200d4270e080c00000001000c0087b6020004270e080800000002000c *0091b6020020270e081400000001000c009bb6020020270e080800000002000c00a5b602003c27 *0e081400000001000c00afb6020048270e080c00000001000c00b9b6020048270e087e00000002 *000c00c2b60200d4270e084100000002000c00a82f0100cc280e080800000001000c00b22f0100 *cc280e083300000002000c00cbb6020064290e080800000001000c00d5b6020064290e08330000 *0002000c00deb60200fc290e080800000001000c00e8b60200fc290e083300000002000c00152e *0100942a0e080800000001000c001f2e0100942a0e083300000002000c00f1b602001c2b0e0814 *00000001000c001fb70200f02e0e080c00000001000c0029b70200682b0e080800000001000c00 *33b70200682b0e080b00000002000c003cb702007c2b0e080800000001000c0046b702007c2b0e *082100000002000c004fb70200ac2b0e080c00000001000c0059b70200ac2b0e08140000000200 *0c0062b70200cc2b0e080c00000001000c006cb70200cc2b0e081100000002000c00f1330100e0 *2b0e080500000002000c0075b70200f42b0e080c00000001000c007fb70200f42b0e0802000000 *02000c00fc330100f82b0e081500000002000c0007340100242c0e081400000001000c0088b702 *00302c0e080c00000001000c0092b70200302c0e082c00000002000c009bb70200682c0e080c00 *000001000c00a5b70200682c0e081c00000002000c00aeb70200902c0e080c00000001000c00b8 *b70200902c0e081700000002000c00c1b70200b42c0e080c00000001000c00cbb70200b42c0e08 *0900000002000c00d4b70200cc2c0e080c00000001000c00deb70200cc2c0e082000000002000c *00e7b70200ec2c0e080200000002000c00f1b70200682d0e082600000002000c00fcb70200f82c *0e080800000001000c0006b80200f82c0e083100000002000c000fb80200342d0e080800000001 *000c0019b80200342d0e081b00000002000c0022b80200682d0e081800000001000c002cb80200 *902d0e083b00000002000c0037b80200cc2d0e080200000002000c0041b80200482e0e08260000 *0002000c004cb80200d82d0e080800000001000c0056b80200d82d0e083100000002000c005fb8 *0200142e0e080800000001000c0069b80200142e0e081b00000002000c0072b80200482e0e0818 *00000001000c007cb802007c2e0e080c00000001000c0086b802007c2e0e083a00000002000c00 *8fb80200b82e0e081500000002000c009ab80200e42e0e081400000001000c00a4b80200f02e0e *081e00000002000c00adb8020034300e080c00000001000c00d1b80200dc320e080c0000000100 *0c00dbb8020078300e080200000002000c00e5b80200d0300e082a00000002000c00283d010084 *300e080800000001000c00323d010084300e083100000002000c00f0b80200d0300e0818000000 *01000c00fab8020004310e080800000001000c0004b9020004310e080600000002000c000db902 *0018310e080c00000001000c0017b9020018310e082400000002000c0020b9020048310e080c00 *000001000c002ab9020048310e082500000002000c0033b902007c310e080c00000001000c003d *b902007c310e082800000002000c0046b90200b0310e080c00000001000c0050b90200b0310e08 *2800000002000c0059b90200e4310e080c00000001000c0063b90200e4310e082800000002000c *006cb9020018320e080c00000001000c0076b9020018320e081500000002000c007fb902003c32 *0e080c00000001000c0089b902003c320e081200000002000c0092b902005c320e080c00000001 *000c009cb902005c320e085100000002000c00a5b90200bc320e080c00000001000c00afb90200 *bc320e081100000002000c00b8b90200dc320e080f00000002000c00c1b90200ec320e08040000 *0001000c00e4b9020018330e080c00000001000c00eeb9020018330e080b00000002000c00f7b9 *0200c8330e080400000001000c0021ba0200c0360e081000000001000c002bba0200f4360e0808 *00000001000c0035ba020078370e080c00000001000c003fba02002c340e080b00000002000c00 *4aba020038340e081a00000002000c0054ba0200c0360e082900000002000c005fba020074340e *082000000001000c0069ba020074340e082500000002000c0074ba0200b0340e08140000000100 *0c007eba0200b0340e081400000002000c0089ba0200c4340e080e00000002000c0093ba0200f4 *340e082000000001000c009dba0200f4340e081800000002000c00a8ba02000c350e080b000000 *02000c00b3ba020020350e080800000001000c00bdba020020350e082900000002000c00c8ba02 *0058350e080c00000001000c00d2ba020058350e082f00000002000c00ddba020094350e080c00 *000001000c00e7ba020094350e080800000002000c00f2ba0200ac350e081000000001000c00fc *ba0200ac350e084e00000002000c0007bb0200fc350e083b00000002000c0012bb020048360e08 *1000000001000c001cbb020048360e081d00000002000c0027bb020068360e082800000002000c *0032bb0200b0360e082000000001000c003cbb0200f4360e082d00000002000c0047bb02003037 *0e080c00000001000c0051bb020030370e083a00000002000c005cbb020078370e084700000002 *000c0067bb0200f0370e080400000001000c0092bb02008c380e080400000001000c00bfbb0200 *28390e080400000001000c00ecbb0200c4390e080400000001000c0019bc0200603a0e08040000 *0001000c0046bc0200fc3a0e080400000001000c0073bc0200683b0e080800000001000c00a7bc *0200203d0e081000000001000c00b1bc0200203d0e083500000002000c00bcbc0200cc3b0e080b *00000002000c00c7bc0200e43b0e080c00000001000c00d1bc0200e43b0e083300000002000c00 *dcbc0200183c0e083f00000002000c00e7bc0200583c0e084500000002000c00f2bc0200a03c0e *081000000002000c00fdbc0200b03c0e081700000002000c0008bd0200c83c0e080b0000000200 *0c0013bd0200d43c0e080d00000002000c001dbd0200103d0e082c00000001000c0027bd020040 *3e0e082c00000001000c0031bd0200883d0e080e00000002000c003cbd0200983d0e080e000000 *02000c0047bd0200a83d0e080800000002000c0052bd0200b03d0e083c00000002000c005dbd02 *00003e0e081400000001000c0067bd0200003e0e081200000002000c0071bd0200403e0e080800 *000001000c00a2bd0200d43f0e082c00000001000c00acbd0200643e0e080e00000002000c00b7 *bd0200743e0e080e00000002000c00c2bd0200903e0e080c00000001000c00ccbd0200903e0e08 *2900000002000c00d7bd0200bc3e0e084700000002000c00e2bd0200103f0e080c00000001000c *00ecbd0200103f0e082900000002000c00f7bd02003c3f0e084100000002000c0002be0200803f *0e080b00000002000c000dbe02008c3f0e080e00000002000c0018be02009c3f0e080a00000002 *000c0022be0200a8400e082c00000001000c002cbe020004400e080e00000002000c0037be0200 *14400e081700000002000c0042be02002c400e080e00000002000c004dbe02003c400e083f0000 *0002000c0057be0200c8420e082c00000001000c0061be0200d8400e080e00000002000c006cbe *0200e8400e081700000002000c0077be020008410e080800000001000c0081be020008410e0829 *00000002000c008cbe02003c410e080800000001000c0096be02003c410e082f00000002000c00 *a1be02006c410e088b00000002000c00acbe020000420e080800000001000c00b6be020000420e *082f00000002000c00c1be020030420e084100000002000c00ccbe020088420e08140000000100 *0c00d6be020088420e081200000002000c00e0be0200c8420e080800000001000c0014bf0200ac *460e082c00000001000c001ebf0200fc420e080800000002000c0029bf020010430e080c000000 *01000c0033bf020010430e083b00000002000c003ebf02004c430e084d00000002000c0049bf02 *009c430e081d00000002000c0054bf0200bc430e082000000002000c005ebf020008440e082c00 *000001000c0068bf020014440e080c00000001000c0072bf020014440e084200000002000c007d *bf020058440e085f00000002000c0088bf0200c4440e080c00000001000c0092bf0200c4440e08 *3e00000002000c009dbf020004450e085900000002000c00a8bf02006c450e080c00000001000c *00b2bf02006c450e083b00000002000c00bdbf0200b4450e080c00000001000c00c7bf0200b445 *0e083b00000002000c00d2bf0200f0450e087200000002000c00ddbf020064460e080e00000002 *000c00e8bf020074460e080a00000002000c00f2bf020064470e081400000001000c00fcbf0200 *c4460e080e00000002000c0007c00200dc460e080800000001000c0011c00200dc460e08290000 *0002000c001cc0020008470e084800000002000c0027c002001c480e081400000001000c0031c0 *02007c470e080e00000002000c003cc0020094470e080800000001000c0046c0020094470e0829 *00000002000c0051c00200c0470e084800000002000c005cc00200d4480e081400000001000c00 *66c0020034480e080e00000002000c0071c002004c480e080800000001000c007bc002004c480e *082900000002000c0086c0020078480e084800000002000c0091c002008c490e08140000000100 *0c009bc00200ec480e080e00000002000c00a6c0020004490e080800000001000c00b0c0020004 *490e082900000002000c00bbc0020030490e084800000002000c00c6c00200444a0e0814000000 *01000c00d0c00200a4490e080e00000002000c00dbc00200bc490e080800000001000c00e5c002 *00bc490e082900000002000c00f0c00200e8490e084800000002000c00fbc00200444a0e080800 *000001000c002ac10200184b0e082c00000001000c0034c10200984a0e080e00000002000c003f *c10200a84a0e080e00000002000c004ac10200b84a0e081700000002000c0055c10200d04a0e08 *0e00000002000c0060c10200e04a0e080a00000002000c006ac10200844b0e080800000001000c *0074c10200844b0e082c00000002000c007fc10200284c0e080800000001000c0089c10200284c *0e083000000002000c0094c10200804c0e080400000001000c00b4c10200e44d0e081400000001 *000c00bec102001c4d0e080800000002000c00c9c10200244d0e080b00000002000c00d3c10200 *444d0e081400000001000c00ddc10200444d0e081800000002000c00e7c10200704d0e08140000 *0001000c00f1c10200784d0e080800000001000c00fbc10200784d0e084300000002000c0004c2 *0200bc4d0e081200000002000c000fc202004c4e0e080400000001000c0033c2020008570e0810 *00000001000c0056bb0000a8570e080c00000001000c00bdbb0000bc4e0e080800000001000c00 *c7bb0000bc4e0e082d00000002000c00fd5f0200f84e0e080c00000001000c0007600200f84e0e *082200000002000c003dc202001c4f0e083800000002000c0056a30100604f0e080c0000000100 *0c0048c20200604f0e084100000002000c0053c20200ac4f0e080800000001000c005dc20200ac *4f0e085300000002000c0068c2020008570e082900000002000c0074a301000c500e080c000000 *01000c0073c202000c500e080800000002000c001260020020500e080c00000001000c001c6002 *0020500e084e00000002000c007ec2020078500e080800000001000c0088c2020078500e085700 *000002000c0091c20200d8500e080800000001000c009bc20200d8500e082d00000002000c00a6 *c2020014510e080c00000001000c00b0c2020014510e082200000002000c00bbc2020040510e08 *0800000001000c00c5c2020040510e082d00000002000c00d0c202007c510e080c00000001000c *00dac202007c510e082200000002000c0048900000a8510e080800000001000c0052900000a851 *0e087a00000002000c00e2b300002c520e080800000001000c00ecb300002c520e082d00000002 *000c00e5c2020068520e080c00000001000c00efc2020068520e082200000002000c00c1b50000 *94520e080800000001000c00cbb5000094520e082d00000002000c00215f0200d0520e080c0000 *0001000c002b5f0200d0520e082200000002000c00fac20200fc520e080800000001000c0004c3 *0200fc520e087a00000002000c000dc3020078530e080500000002000c0052bd000010540e0861 *00000002000c0017c3020088530e080800000001000c0021c3020088530e086d00000002000c00 *48bd000010540e081800000001000c00c49e01007c540e080800000001000c002ac302007c540e *082d00000002000c0035c30200b8540e080c00000001000c003fc30200b8540e08220000000200 *0c004ac30200dc540e083800000002000c0055c3020014550e080b00000002000c0060c3020034 *550e081400000001000c004ebc00003c550e080800000001000c0058bc00003c550e082d000000 *02000c006ac3020078550e080c00000001000c0074c3020078550e082200000002000c007fc302 *009c550e083800000002000c008ac30200d4550e080b00000002000c0095c30200f4550e081400 *000001000c009fc30200fc550e080800000001000c00a9c30200fc550e086900000002000c00b2 *c3020074560e080c00000001000c00bcc3020074560e084e00000002000c00c5c30200c4560e08 *1d00000002000c00d0c30200f8560e081400000001000c00dac3020034570e080e00000002000c *00e5c3020044570e080d00000002000c00f0c3020068570e081400000001000c0041bb00007457 *0e080c00000001000c004bbb000074570e082600000002000c0060bb0000a8570e084f00000002 *000c00fac3020018580e080800000001000c0004c4020018580e082e00000002000c000dc40200 *48580e080400000001000c002ec40200d0590e081000000001000c0038c402002c5a0e08080000 *0001000c006acb0000645a0e080800000001000c0042c40200a05a0e080c00000001000c00becb *0000045b0e080c00000001000c0012cc0000645b0e080c00000001000c004cc40200f8580e0808 *00000001000c0056c40200f8580e082900000002000c0061c402002c590e080800000001000c00 *6bc402002c590e083600000002000c0076c4020070590e080c00000001000c0080c4020070590e *084e00000002000c008bc40200d0590e085100000002000c0096c402002c5a0e082d0000000200 *0c0074cb0000645a0e082d00000002000c00a1c40200a05a0e083f00000002000c00acc40200e8 *5a0e080800000001000c00b6c40200e85a0e081000000002000c00c8cb0000045b0e0826000000 *02000c00bfc40200345b0e080800000001000c00c9c40200345b0e082300000002000c001ccc00 *00645b0e082600000002000c00d2c402008c5b0e081c00000001000c00f4c40200d8640e081000 *000001000c00fec40200045c0e080800000001000c0008c50200045c0e083700000002000c0013 *c502003c5c0e083100000002000c001dc50200845c0e081400000001000c0027c502008c5c0e08 *0800000001000c0031c502008c5c0e082a00000002000c003cc50200b85c0e083100000002000c *0046c50200005d0e081400000001000c008ecc0000085d0e080800000001000c0098cc0000085d *0e082a00000002000c0050c50200345d0e080b00000002000c00ba930000485d0e080800000001 *000c00c4930000485d0e083900000002000c005bc50200845d0e081800000002000c0065c50200 *b05d0e081400000001000c006fc50200b05d0e081e00000002000c0079c50200e45d0e08140000 *0001000c0083c50200f05d0e080c00000001000c008dc50200f05d0e082100000002000c0096c5 *0200205e0e080c00000001000c00a0c50200205e0e082d00000002000c00a9c502005c5e0e080c *00000001000c00b3c502005c5e0e083000000002000c00bec502008c5e0e084000000002000c00 *c9c50200cc5e0e080e00000002000c00d3c50200f05e0e081400000001000c00ddc50200fc5e0e *080c00000001000c00e7c50200fc5e0e083d00000002000c00f2c502003c5f0e08400000000200 *0c00fdc50200905f0e081400000001000c0007c60200905f0e082200000002000c0012c60200c8 *5f0e081400000001000c001cc60200c85f0e080f00000002000c0021940000e05f0e0808000000 *01000c002b940000e05f0e083900000002000c0027c602001c600e080f00000002000c0031c602 *0040600e081400000001000c003bc6020040600e081800000002000c0045c602006c600e081400 *000001000c004fc602006c600e081500000002000c0059c6020098600e081400000001000c0063 *c6020098600e081e00000002000c006dc60200cc600e081400000001000c0077c60200d8600e08 *0c00000001000c0081c60200d8600e081e00000002000c00e422020004610e080c00000001000c *008ac6020004610e083600000002000c0093c6020048610e080c00000001000c009dc602004861 *0e083000000002000c00a8c6020078610e082d00000002000c00b3c60200b0610e080800000001 *000c00bdc60200b0610e083900000002000c00c6c60200ec610e081800000002000c00d0c60200 *18620e081400000001000c00dac6020018620e081e00000002000c00e4c602004c620e08140000 *0001000c00f922020058620e080c00000001000c00eec6020058620e082100000002000c00f7c6 *020088620e080c00000001000c0001c7020088620e082d00000002000c000ac70200c4620e080c *00000001000c0014c70200c4620e083000000002000c001fc70200f4620e084000000002000c00 *2ac7020048630e081400000001000c0034c7020048630e083d00000002000c003fc702009c630e *081400000001000c0049c70200a8630e080c00000001000c0053c70200a8630e08480000000200 *0c005ec7020000640e081000000001000c0068c7020000640e085900000002000c0073c702006c *640e081000000001000c007dc702006c640e085b00000002000c0088c70200d8640e0880000000 *02000c0093c7020058650e080800000001000c00b8c70200c0650e080c00000001000c00dac702 *00a0660e080c00000001000c00e4c7020000670e080800000001000c00eec702003c670e080c00 *000001000c00f8c702006c670e082000000001000c0002c8020050660e080800000001000c000c *c8020050660e082d00000002000c0017c802008c660e080c00000001000c0021c802008c660e08 *0800000002000c002cc80200a0660e085800000002000c0037c8020000670e082d00000002000c *0042c802003c670e080800000002000c004dc8020044670e080800000002000c0057c802006c67 *0e080800000001000c0079c802004c690e081000000001000c0083c80200d0670e080c00000001 *000c008dc80200d0670e084e00000002000c0098c802002c680e080c00000001000c00a2c80200 *2c680e085300000002000c00be9d000080680e080c00000002000c00abc8020098680e080c0000 *0001000c00b5c8020098680e084e00000002000c00f19d0000e8680e083d00000002000c00fc9d *00003c690e081400000001000c00c0c802004c690e082f00000002000c00cbc802007c690e0804 *00000001000c00eac80200e8690e080800000001000c000ac90200586a0e080800000001000c00 *14c90200686c0e081000000001000c001ec90200586a0e082d00000002000c0029c90200946a0e *080c00000001000c0033c90200946a0e084100000002000c003ec90200d86a0e08080000000200 *0c0049c90200ec6a0e080c00000001000c0053c90200ec6a0e084100000002000c005ec9020030 *6b0e084300000002000c0069c90200886b0e081400000001000c0073c90200946b0e080c000000 *01000c007dc90200946b0e085c00000002000c0086c90200fc6b0e080c00000001000c0090c902 *00fc6b0e081500000002000c004ecd0000246c0e081000000001000c0099c90200246c0e083200 *000002000c00a4c90200686c0e084c00000002000c00afc90200346d0e080400000001000c00c8 *c90200906e0e080800000001000c00eb8b0200f86e0e080c00000001000c00d2c902003c6f0e08 *0c00000001000c00dcc902001c6e0e080800000001000c00e6c902001c6e0e082d00000002000c *00f1c90200546e0e080800000001000c00fbc90200546e0e083400000002000c0004ca0200906e *0e082a00000002000c000fca0200c46e0e080800000001000c0019ca0200c46e0e081400000002 *000c0022ca0200e06e0e080800000001000c002cca0200e06e0e080c00000002000c00f58b0200 *f86e0e082400000002000c0035ca0200246f0e080800000001000c003fca0200246f0e080b0000 *0002000c0048ca02003c6f0e083000000002000c00ed41020018710e080800000001000c0053ca *0200a86f0e080b00000002000c005eca0200bc6f0e080800000001000c0068ca0200bc6f0e081e *00000002000c0071ca020014700e082900000002000c007cca0200dc6f0e081500000002000c00 *87ca020008700e081400000001000c00ec9e010014700e080c00000001000c0091ca020048700e *080800000001000c009bca020048700e080600000002000c00a4ca020058700e08080000000100 *0c00aeca020058700e086000000002000c00b7ca0200c0700e080800000001000c00c1ca0200c0 *700e085000000002000c00f741020018710e081200000002000c00caca0200bc720e0808000000 *01000c00d4ca0200a8720e080800000001000c00deca0200a8720e080b00000002000c00e7ca02 *00bc720e080f00000002000c00f0ca02009c740e080c00000001000c00faca02009c740e088b00 *000002000c0005cb020060740e080800000001000c000fcb020060740e082f00000002000c00de *100000b8750e080c00000001000c00e8100000b8750e088b00000002000c001acb02007c750e08 *0800000001000c0024cb02007c750e082f00000002000c002fcb0200f4760e080c00000001000c *0039cb0200f4760e088300000002000c0044cb0200b8760e080800000001000c004ecb0200b876 *0e082f00000002000c0059cb020028780e080c00000001000c0063cb020028780e088300000002 *000c006ecb0200ec770e080800000001000c0078cb0200ec770e082f00000002000c0083cb0200 *24790e080c00000001000c00a7cb0200b07f0e080c00000001000c00b1cb020078790e08080000 *0001000c00bbcb020078790e083200000002000c00c4cb0200b8790e080c00000001000c00cecb *0200b8790e086f00000002000c00d7cb0200347a0e080c00000001000c00e1cb0200347a0e0839 *00000002000c00eccb02007c7a0e080c00000001000c00f6cb02007c7a0e085300000002000c00 *01cc0200d87a0e080800000001000c000bcc0200d87a0e084600000002000c0014cc0200207b0e *083d00000002000c001fcc0200687b0e080800000001000c0029cc0200687b0e08460000000200 *0c0032cc0200b07b0e084700000002000c003dcc02000c7c0e081400000001000c0047cc020014 *7c0e080800000001000c0051cc0200147c0e083000000002000c005ccc02004c7c0e0808000000 *01000c0066cc02004c7c0e082900000002000c0071cc0200807c0e080800000001000c007bcc02 *00807c0e084b00000002000c0084cc0200d47c0e080800000001000c008ecc0200d47c0e085300 *000002000c0097cc0200307d0e080800000001000c00a1cc0200307d0e084600000002000c00aa *cc0200787d0e083d00000002000c00b5cc0200c07d0e080800000001000c00bfcc0200c07d0e08 *4600000002000c00c8cc0200087e0e084700000002000c00d3cc0200647e0e081400000001000c *00ddcc02006c7e0e080800000001000c00e7cc02006c7e0e083000000002000c00f2cc0200a47e *0e080800000001000c00fccc0200a47e0e082900000002000c0007cd0200d87e0e080800000001 *000c0011cd0200d87e0e084500000002000c001acd02002c7f0e080c00000001000c0024cd0200 *2c7f0e081400000002000c002dcd0200407f0e081400000002000c0038cd0200607f0e080c0000 *0001000c0042cd0200607f0e081200000002000c004bcd0200747f0e081c00000002000c0056cd *0200a47f0e081400000001000c0060cd0200b07f0e086e00000002000c0069cd020030810e0808 *00000001000c0073cd020088800e082d00000002000c007ecd0200b8800e082d00000002000c00 *89cd0200fc800e081400000001000c0093cd0200fc800e080f00000002000c009ecd02000c810e *080500000002000c00a9cd020028810e081400000001000c00b3cd020030810e08300000000200 *0c00becd02004c820e080800000001000c00dfcd0200fc820e080c00000001000c00e9cd0200c0 *820e080800000001000c00f3cd0200c0820e083000000002000c00fccd0200fc820e0817000000 *02000c0005ce020014830e080800000001000c0029ce0200c4830e080c00000001000c0033ce02 *0088830e080800000001000c003dce020088830e083000000002000c0046ce0200c4830e081700 *000002000c004fce020064840e080800000001000c0059ce020014860e080800000001000c0063 *ce020064840e082e00000002000c006ece02009c840e080800000001000c0078ce02009c840e08 *3100000002000c0081ce0200d8840e080800000001000c008bce0200d8840e083500000002000c *0094ce020018850e080800000001000c009ece020018850e081400000002000c00a7ce02003485 *0e080800000001000c00b1ce020034850e081400000002000c00bace020054850e080c00000001 *000c00c4ce020054850e083000000002000c00cfce020084850e080f00000002000c00dace0200 *94850e080f00000002000c00e5ce0200b8850e081400000001000c00efce0200c0850e08080000 *0001000c00f9ce0200c0850e084900000002000c0002cf020014860e084200000002000c000dcf *020058860e080400000001000c0033cf0200d4860e080c00000001000c0058cf0200848a0e0810 *00000001000c0062cf020024870e080b00000002000c006dcf020030870e080b00000002000c00 *78cf02003c870e080b00000002000c0083cf020048870e080b00000002000c008ecf020054870e *080b00000002000c0099cf020068870e080800000001000c00a3cf020068870e08290000000200 *0c00aecf020094870e080500000002000c00b8cf0200cc890e082a00000002000c00c3cf02009c *870e080b00000002000c00cecf0200b0870e080800000001000c00d8cf0200b0870e0829000000 *02000c00e3cf0200e4870e080800000001000c00edcf0200e4870e082900000002000c00f8cf02 *0018880e080800000001000c0002d0020018880e084600000002000c000bd0020068880e080800 *000001000c0015d0020068880e082a00000002000c0020d002009c880e080800000001000c002a *d002009c880e083d00000002000c0033d00200dc880e086a00000002000c003ed002005c890e08 *1400000001000c0048d0020068890e080c00000001000c0052d0020068890e082700000002000c *005bd002009c890e080c00000001000c0065d002009c890e081700000002000c006ed00200cc89 *0e081800000001000c0078d00200f8890e085700000002000c0083d00200748a0e082400000001 *000c008dd00200848a0e082a00000002000c0098d00200188b0e080800000001000c00a2d00200 *188b0e083300000002000c00abd002004c8b0e080400000001000c00ddd00200b08b0e080c0000 *0001000c0008d10200e08d0e080c00000001000c0012d10200008c0e080c00000001000c001cd1 *0200008c0e082900000002000c0027d10200348c0e080800000001000c0031d10200348c0e080b *00000002000c003ad10200408c0e083b00000002000c0045d10200888c0e080c00000001000c00 *4fd10200888c0e082e00000002000c005ad10200c48c0e080c00000001000c0064d10200c48c0e *082900000002000c006fd10200f88c0e080800000001000c0079d10200f88c0e080b0000000200 *0c0082d10200108d0e080c00000001000c008cd10200108d0e084400000002000c0095d1020060 *8d0e080c00000001000c009fd10200608d0e081200000002000c00a8d10200748d0e0839000000 *02000c00b2d10200d48d0e082400000001000c00bcd10200e08d0e081500000002000c00c5d102 *00f88d0e080800000001000c00e8d10200a88e0e080800000001000c00f2d102004c910e080c00 *000001000c00fcd102005c8e0e080e00000002000c0007d202006c8e0e080e00000002000c0011 *d20200a08e0e082400000001000c001bd20200a88e0e082a00000002000c0026d20200dc8e0e08 *0800000001000c0030d20200dc8e0e085800000002000c0039d202003c8f0e080800000001000c *0043d202003c8f0e081400000002000c004cd20200588f0e080800000001000c0056d20200588f *0e084e00000002000c0061d20200a88f0e080200000002000c006bd20200c48f0e082300000002 *000c0076d20200c48f0e081800000001000c0080d20200f08f0e080800000001000c008ad20200 *f08f0e083a00000002000c0093d2020038900e080c00000001000c009dd2020038900e08460000 *0002000c00a6d202008c900e080c00000001000c00b0d202008c900e086700000002000c00b9d2 *020000910e080c00000001000c00c3d2020000910e081200000002000c00ccd2020020910e080c *00000001000c00d6d2020020910e082000000002000c00dfd202004c910e080900000002000c00 *e8d2020058910e080800000001000c000ed30200c4960e080800000001000c0018d302000c960e *080c00000001000c0022d30200e8910e080800000001000c002cd30200e8910e08310000000200 *0c0035d3020028920e080c00000001000c003fd3020028920e083500000002000c004ad3020060 *920e080200000002000c0054d3020090920e082100000002000c005fd302006c920e0808000000 *01000c0069d302006c920e080b00000002000c0072d3020090920e081800000001000c007cd302 *00bc920e080800000001000c0086d30200bc920e084900000002000c008fd3020010930e080800 *000001000c0099d3020010930e083600000002000c00a4d3020048930e081e00000002000c00af *d3020070930e080800000001000c00b9d3020070930e084900000002000c00c2d30200c4930e08 *0800000001000c00ccd30200c4930e083600000002000c00d7d30200fc930e083700000002000c *00e2d3020048940e081400000001000c00ecd3020050940e080800000001000c00f6d302005094 *0e084600000002000c00ffd30200a0940e080800000001000c0009d40200a0940e083000000002 *000c0014d40200dc940e080c00000001000c001ed40200dc940e088300000002000c0027d40200 *6c950e080c00000001000c0031d402006c950e080900000002000c003ad4020084950e080c0000 *0001000c0044d4020084950e082600000002000c004dd40200ac950e082000000002000c0058d4 *0200cc950e082000000002000c0063d4020000960e081400000001000c006dd402000c960e085f *00000002000c0076d4020074960e080800000001000c0080d4020074960e084600000002000c00 *89d40200c4960e083000000002000c0094d40200d0970e080800000001000c009ed402006c970e *080800000001000c00a8d402006c970e085900000002000c00b1d40200d0970e08490000000200 *0c00bad402001c980e080400000001000c00ced40200c4980e080c00000001000c00d8d4020058 *980e080800000001000c00e2d4020058980e086000000002000c00ebd40200c4980e083b000000 *02000c00f4d40200a49b0e080400000001000c0014d502004c9c0e081800000001000c001ed502 *00749c0e080800000001000c0028d50200ac9f0e081000000001000c0032d50200ac9f0e088000 *000002000c003dd50200309c0e080200000002000c0047d502004c9c0e081d00000002000c0052 *d50200749c0e082900000002000c005dd50200a89c0e080800000001000c0067d50200a89c0e08 *3100000002000c0070d50200e49c0e080800000001000c007ad50200e49c0e083500000002000c *0083d50200249d0e080800000001000c008dd50200249d0e081400000002000c0096d50200449d *0e080c00000001000c00a0d50200449d0e083000000002000c00abd50200749d0e080f00000002 *000c00b6d50200849d0e080f00000002000c00c1d50200a89d0e081400000001000c00cbd50200 *b09d0e080800000001000c00d5d50200b09d0e084900000002000c00ded50200049e0e08080000 *0001000c00e8d50200049e0e084200000002000c00f3d50200489e0e080500000002000c00fdd5 *0200509f0e084a00000002000c0008d60200589e0e080800000001000c0012d60200589e0e0830 *00000002000c001bd60200909e0e080800000001000c0025d60200909e0e083000000002000c00 *30d60200c89e0e080800000001000c003ad60200c89e0e085a00000002000c0043d602002c9f0e *080800000001000c004dd602002c9f0e080900000002000c0056d60200509f0e08180000000100 *0c0060d60200a0a00e080800000001000c006ad6020060a00e080800000001000c0074d6020060 *a00e082300000002000c007dd602008ca00e080800000001000c0087d602008ca00e080c000000 *02000c0090d60200a0a00e082700000002000c0099d60200a4a70e085000000001000c00b7d602 *0050a80e080c00000001000c00c1d602001ca80e080800000002000c00cbd6020038a80e081400 *000001000c00d5d6020038a80e080c00000001000c00dfd6020050a80e08b400000002000c00e8 *d602001caa0e080c00000001000c00f2d602001caa0e085700000002000c00fdd60200cca90e08 *0800000001000c0007d70200cca90e084100000002000c0012d7020024ab0e080800000001000c *001cd7020024ab0e082400000002000c0025d7020048ab0e080800000001000c0038d70200b0ab *0e080800000001000c004bd7020080ac0e080800000001000c0055d7020038ac0e080800000001 *000c005fd7020038ac0e084000000002000c0068d7020080ac0e081400000002000c0071d70200 *ecac0e080800000001000c007bd70200b4ac0e080800000001000c0085d70200b4ac0e082d0000 *0002000c008ed70200ecac0e081400000002000c0097d7020058ad0e080800000001000c00a1d7 *020020ad0e080800000001000c00abd7020020ad0e082d00000002000c00b4d7020058ad0e0814 *00000002000c00bdd70200d4ad0e080800000001000c00c7d702008cad0e080800000001000c00 *d1d702008cad0e083d00000002000c00dad70200d4ad0e081400000002000c00e3d7020040ae0e *080800000001000c00edd702001cae0e080800000001000c00f7d702001cae0e08190000000200 *0c0000d8020040ae0e081a00000002000c0009d80200b0ae0e080800000001000c0013d8020090 *ae0e080800000001000c001dd8020090ae0e081700000002000c0026d80200b0ae0e081a000000 *02000c002fd8020004b00e081400000001000c0039d8020070af0e082f00000002000c0044d802 *00a8af0e080800000001000c004ed80200a8af0e083000000002000c0057d80200d8af0e081500 *000002000c0062d8020004b00e080400000001000c0086d8020078b00e080800000001000c0090 *d8020078b00e082800000002000c0099d8020008b10e080800000001000c00a3d80200c0b00e08 *0800000001000c00add80200c0b00e083d00000002000c00b6d8020008b10e081400000002000c *00bfd802001cb10e080800000001000c00d2d802008cb10e080800000001000c00e4d80200fcb1 *0e081400000001000c00eed80200b0b10e080d00000002000c00f9d80200c0b10e082500000002 *000c0004d902006cb20e080800000001000c001fd90200dcb20e080800000001000c003ad90200 *4cb30e080800000001000c0055d90200bcb30e080800000001000c0070d90200b8b60e08140000 *0001000c007ad9020058b40e084f00000002000c0085d90200b0b40e080800000001000c008fd9 *0200b0b40e084200000002000c0098d90200f4b40e081500000002000c00a3d9020020b50e0814 *00000001000c00add9020028b50e080800000001000c00b7d9020028b50e083c00000002000c00 *c0d9020064b50e082e00000002000c00cbd902009cb50e080800000001000c00d5d902009cb50e *084200000002000c00ded90200e0b50e081200000002000c00e9d90200fcb50e08080000000100 *0c00f3d90200fcb50e085000000002000c00fcd902004cb60e082400000002000c0007da020084 *b60e081400000001000c0011da020084b60e082000000002000c001cda0200d8b60e0808000000 *01000c0026da0200d8b60e082e00000002000c002fda0200bcb80e081400000001000c0039da02 *0034b70e082900000002000c0044da020068b70e080800000001000c004eda020068b70e082500 *000002000c0057da020090b70e081e00000002000c0062da0200c4b70e081400000001000c006c *da0200c4b70e081400000002000c0077da0200e0b70e080800000001000c0081da0200e0b70e08 *2400000002000c008ada020004b80e081e00000002000c000d4400002cb80e080800000001000c *0095da02002cb80e082400000002000c009eda020050b80e082400000002000c00a9da020088b8 *0e081400000001000c00b3da020088b80e081d00000002000c00beda0200bcb80e080400000001 *000c00d8da0200d4b90e081400000001000c00e2da020010b90e080800000002000c00edda0200 *24b90e080c00000001000c00f7da020024b90e085100000002000c0002db020078b90e08480000 *0002000c000ddb0200f8ba0e081400000001000c0017db0200c4ba0e080e00000002000c0022db *0200d4ba0e080e00000002000c002ddb0200f8ba0e080800000001000c0053db020060bb0e0808 *00000001000c0066db0200d0bb0e080800000001000c0079db020040bc0e081000000001000c00 *94db020064be0e081400000001000c009edb020090bc0e080e00000002000c00a8db0200b4bc0e *081400000001000c00b2db0200b4bc0e081e00000002000c00bcdb0200e8bc0e08140000000100 *0c00c6db0200e8bc0e080600000002000c00d0db020004bd0e081400000001000c00dadb020004 *bd0e083900000002000c00e5db020040bd0e080e00000002000c00efdb020064bd0e0814000000 *01000c00f9db020064bd0e081500000002000c0003dc020090bd0e081400000001000c000ddc02 *0090bd0e080600000002000c0017dc0200acbd0e081400000001000c0021dc0200b8bd0e080c00 *000001000c002bdc0200b8bd0e083700000002000c0034dc0200f0bd0e082200000002000c003f *dc020028be0e081400000001000c0049dc020028be0e081b00000002000c0054dc020044be0e08 *0a00000002000c005fdc0200f8be0e084800000002000c0068dc0200a4be0e081800000002000c *0072dc0200d0be0e081400000001000c007cdc0200d0be0e080b00000002000c0086dc0200f0be *0e081400000001000c0090dc0200f8be0e080800000001000c00750201000cc00e080800000001 *000c009adc02008cbf0e080800000001000c00a4dc02008cbf0e087800000002000c00addc0200 *0cc00e081100000002000c00b6dc020020c00e080800000001000c00cbdc02000cc10e08140000 *0001000c00d5dc020068c00e080a00000002000c00e0dc020074c00e081100000002000c00eadc *02009cc00e081400000001000c00f4dc02009cc00e081c00000002000c00ffdc0200ccc00e0814 *00000001000c0009dd0200ccc00e081c00000002000c0014dd0200e8c00e080d00000002000c00 *1fdd02000cc10e080400000001000c0036dd020050c20e080c00000001000c0040dd02004cc10e *080800000001000c004add02004cc10e084500000002000c0055dd02009cc10e08080000000100 *0c005fdd02009cc10e084500000002000c006add0200ecc10e080800000001000c0074dd0200ec *c10e085700000002000c007ddd020050c20e082a00000002000c0086dd02007cc20e0804000000 *01000c009cdd0200c0c20e080c00000001000c00a6dd0200c0c20e080e00000002000c00afdd02 *00d0c20e080400000001000c00c3dd02004cc30e080c00000001000c0049e7000010c30e080800 *000001000c0053e7000010c30e082f00000002000c00cddd02004cc30e082a00000002000c00d6 *dd020078c30e080400000001000c002d6c000014c40e080c00000001000c00e9dd0200b8c30e08 *0800000001000c00f3dd0200b8c30e082a00000002000c0034e70000ecc30e080800000001000c *00fcdd0200ecc30e081b00000002000c00376c000014c40e082a00000002000c0005de020040c4 *0e080400000001000c0018de0200dcc40e080c00000001000c00c786020080c40e080800000001 *000c00d186020080c40e082a00000002000c0022de0200b4c40e080800000001000c002cde0200 *b4c40e081b00000002000c0035de0200dcc40e082a00000002000c003ede020008c50e08040000 *0001000c0051de020084c50e080c00000001000c00c86b000048c50e080800000001000c005bde *020048c50e082f00000002000c0064de020084c50e082a00000002000c006dde02004cc70e0838 *00000001000c008ade0200a0ca0e080c00000001000c0094de0200ecc90e080c00000001000c00 *930a02008cc90e080c00000001000c009ede0200e0c80e080e00000002000c00a9de0200fcc80e *080c00000001000c00b3de0200fcc80e082400000002000c00bcde020020c90e08120000000200 *0c00c7de020048c90e081400000001000c00d1de020054c90e080c00000001000c00dbde020054 *c90e082a00000002000c00e6de02008cc90e085200000002000c00f1de0200ecc90e0843000000 *02000c00fcde020030ca0e080e00000002000c0007df02004cca0e080c00000001000c0011df02 *004cca0e081e00000002000c001adf02006cca0e081200000002000c0025df020094ca0e081400 *000001000c002fdf0200a0ca0e082a00000002000c003adf0200ccca0e081000000001000c0051 *df0200c0cb0e081400000001000c005bdf020024cb0e084100000002000c0066df020068cb0e08 *4100000002000c0071df02006ccc0e081000000001000c0089df020060cd0e081400000001000c *0093df0200c4cc0e084100000002000c009edf020008cd0e084100000002000c00a9df020098cd *0e080800000001000c00b3df020098cd0e080b00000002000c00bcdf0200a4cd0e080400000001 *000c00d6df02004cce0e080c00000001000c00e0df020040ce0e081400000001000c00eadf0200 *10ce0e081900000002000c00f4df02004cce0e084000000002000c00fddf02008cce0e080c0000 *0001000c0015e0020000cf0e080c00000001000c001fe0020054cf0e081400000001000c0029e0 *020000cf0e083000000002000c0034e0020030cf0e081000000002000c003ee0020054cf0e080c *00000001000c0056e00200c8cf0e080c00000001000c0060e002001cd00e081400000001000c00 *6ae00200c8cf0e083000000002000c0075e00200f8cf0e081000000002000c007fe002003cd00e *080800000001000c0089e002003cd00e080b00000002000c0092e002002cd20e08080000000100 *0c009ce002002cd20e082600000002000c00a5e0020058d30e080800000001000c00afe0020058 *d30e083300000002000c00b8e00200f0d30e080800000001000c00c2e00200f0d30e0833000000 *02000c00cbe0020000d50e080800000001000c00d5e0020000d50e083300000002000c00dee002 *0034d50e080400000001000c0008e10200a4d50e080800000001000c0012e10200a4d50e082d00 *000002000c001be1020038d60e080800000001000c0025e1020038d60e083300000002000c002e *e10200d0d60e080800000001000c0038e10200d0d60e083300000002000c0041e102002cd80e08 *0800000001000c0065e1020074d90e080c00000001000c006fe102006cd80e080200000002000c *0079e10200c4d80e083100000002000c0084e1020078d80e080800000001000c008ee1020078d8 *0e083100000002000c0097e10200c4d80e081800000001000c00a1e1020000d90e080800000001 *000c00abe1020000d90e083100000002000c00b4e102003cd90e080800000001000c00bee10200 *3cd90e081500000002000c00c7e102005cd90e080800000001000c00d1e102005cd90e08090000 *0002000c00dae1020074d90e084b00000002000c00e3e1020024da0e080800000001000c00ede1 *020070da0e080c00000001000c00f7e1020024da0e082a00000002000c0002e202005cda0e080c *00000001000c000ce202005cda0e080800000002000c0017e2020070da0e084e00000002000c00 *22e20200c0da0e080800000001000c004ce20200e0de0e082000000001000c0056e20200f8da0e *080800000002000c0060e2020020db0e082000000001000c006ae2020030db0e08100000000100 *0c0074e2020030db0e082d00000002000c007fe2020060db0e084100000002000c008ae20200a4 *db0e080800000002000c0094e20200ccdb0e082000000001000c009ee20200dcdb0e0810000000 *01000c00a8e20200dcdb0e082d00000002000c00b3e202000cdc0e084100000002000c00bee202 *0050dc0e080e00000002000c00c9e202006cdc0e080c00000001000c00d3e202006cdc0e082f00 *000002000c00dee202009cdc0e080800000002000c00e8e20200c4dc0e082000000001000c00f2 *e20200c4dc0e084600000002000c00fde202000cdd0e080e00000002000c0008e302001cdd0e08 *1100000002000c0012e3020044dd0e081400000001000c001ce3020044dd0e081800000002000c *0026e302007cdd0e082000000001000c0030e3020084dd0e080800000001000c003ae3020084dd *0e084e00000002000c0043e30200d4dd0e081500000002000c004ee3020000de0e081400000001 *000c0058e302000cde0e080c00000001000c0062e302000cde0e082900000002000c006de30200 *38de0e080e00000002000c0078e3020048de0e082b00000002000c0083e3020088de0e08140000 *0001000c008de3020088de0e083700000002000c0098e30200e0de0e080800000001000c00c2e3 *02006ce00e081400000001000c00cce3020018df0e080b00000002000c00d7e3020024df0e080b *00000002000c00e2e302003cdf0e080c00000001000c00ece302003cdf0e082900000002000c00 *f7e3020068df0e080800000002000c0001e4020090df0e082000000001000c000be40200a0df0e *081000000001000c0015e40200a0df0e084e00000002000c0020e40200f0df0e083b0000000200 *0c002be4020040e00e081400000001000c0035e4020040e00e081500000002000c0040e40200ec *e00e080c00000001000c004ae4020084e20e080c00000001000c0054e40200bce20e080c000000 *01000c005ee40200ece00e081d00000002000c0069e402000ce10e080900000002000c0074e402 *0018e10e080b00000002000c00b40b020030e10e080c00000001000c007fe4020030e10e080800 *000002000c008ae4020044e10e080c00000001000c0094e4020044e10e084e00000002000c009f *e402009ce10e080800000001000c00a9e402009ce10e085900000002000c00b2e4020000e20e08 *0800000001000c00bce4020000e20e081400000002000c00c5e4020014e20e081d00000002000c *00d0e4020048e20e081400000001000c00dae4020048e20e081a00000002000c00e5e4020078e2 *0e081400000001000c00efe4020084e20e082900000002000c00fae40200bce20e083300000002 *000c0005e5020024e30e080400000001000c0032e50200c0e30e080400000001000c005fe50200 *60e40e080400000001000c008ce50200fce40e080400000001000c00b9e50200dce50e08080000 *0001000c00c3e50200dce50e082a00000002000c00cee5020008e60e080800000001000c00ffe5 *0200e0e60e080800000001000c0020e6020050e70e080c00000001000c0041e60200c4e70e0808 *00000001000c0062e6020034e80e080c00000001000c0085e60200fce90e081400000001000c00 *8fe6020074e80e080800000002000c0099e6020090e80e081400000001000c00a3e6020090e80e *081500000002000c00ade60200bce80e081400000001000c00b7e60200bce80e08180000000200 *0c00c1e60200e8e80e081400000001000c00cbe60200e8e80e081200000002000c00d6e60200fc *e80e081100000002000c00e0e6020024e90e081400000001000c00eae6020024e90e081e000000 *02000c00f4e6020058e90e081400000001000c00fee6020058e90e081800000002000c0008e702 *0084e90e081400000001000c0012e7020090e90e080c00000001000c001ce7020090e90e084300 *000002000c0025e70200d4e90e081200000002000c0030e70200fce90e080800000001000c0056 *e7020084ea0e081400000001000c0060e7020044ea0e081c00000002000c006be7020060ea0e08 *0e00000002000c0076e70200d0eb0e080800000001000c0080e7020008ec0e080800000001000c *008ae702008cec0e080c00000001000c0094e70200d0eb0e082d00000002000c009fe7020008ec *0e082d00000002000c00aae7020040ec0e080800000001000c00b4e7020040ec0e083f00000002 *000c00bde702008cec0e082c00000002000c00c8e70200ecec0e081400000001000c00eee70200 *18ee0e080c00000001000c00f8e70200a4ee0e080c00000001000c0002e80200dcee0e080c0000 *0001000c000ce802003cef0e080c00000001000c0016e8020070ef0e080c00000001000c0020e8 *02008cef0e081000000001000c002ae80200f8ef0e081000000001000c0057cf000078f00e080c *00000001000c0034e80200d8f00e080c00000001000c003ee8020018ee0e082900000002000c00 *49e802004cee0e080800000001000c0053e802004cee0e084a00000002000c005ce80200a4ee0e *082c00000002000c0067e80200dcee0e082900000002000c0072e8020010ef0e08080000000100 *0c007ce8020010ef0e082000000002000c0085e802003cef0e082600000002000c0090e8020070 *ef0e080b00000002000c009be802008cef0e082a00000002000c00a6e80200b8ef0e080e000000 *02000c00b1e80200c8ef0e080b00000002000c00bce80200e8ef0e081400000001000c00c6e802 *00f8ef0e085c00000002000c00d1e802005cf00e080800000001000c00dbe802005cf00e081000 *000002000c00e4e8020078f00e082600000002000c00568d0000a8f00e080800000001000c0060 *8d0000a8f00e082300000002000c00efe80200d8f00e082600000002000c00fae8020000f10e08 *0400000001000c0012e9020038f20e080800000001000c001ce902004cf10e080800000001000c *0026e902004cf10e083100000002000c00acc2000088f10e080800000001000c002fe9020088f1 *0e08a500000002000c0038e9020038f20e081e00000002000c0041e9020058f20e080400000001 *000c0060e90200c4f30e080c00000001000c006ae90200b8f20e080800000001000c0074e90200 *b8f20e083900000002000c007de90200fcf20e080800000001000c0087e90200fcf20e08140000 *0002000c0090e9020018f30e080800000001000c009ae9020018f30e083600000002000c00a5e9 *020058f30e080800000001000c00afe9020058f30e083d00000002000c00b8e90200a0f30e0808 *00000001000c00c2e90200a0f30e081700000002000c00cbe90200c4f30e082000000002000c00 *d4e902009cf40e080800000001000c00dee9020088f40e080800000001000c00e8e9020088f40e *080b00000002000c00f1e902009cf40e080f00000002000c00fae90200ecff0e08080000000100 *0c0004ea0200ecff0e084000000002000c000fea0200f4000f080800000001000c0019ea0200f4 *000f082900000002000c0024ea02007c010f080800000001000c002eea02007c010f0829000000 *02000c0039ea020004020f080800000001000c0043ea020004020f082900000002000c004eea02 *0028030f080800000001000c0068ea020048050f080800000001000c0081ea020018080f081400 *000001000c008bea020090050f083200000002000c0096ea0200d0050f080c00000001000c00a0 *ea0200d0050f084200000002000c00a9ea020014060f081500000002000c00b4ea020040060f08 *1400000001000c00beea02004c060f080c00000001000c00c8ea02004c060f083c00000002000c *00d1ea020088060f082e00000002000c00dcea0200c0060f080800000001000c00e6ea0200c006 *0f083a00000002000c00efea020004070f080800000001000c00f9ea020004070f082100000002 *000c0002eb020028070f080f00000002000c000deb020040070f080800000001000c0017eb0200 *40070f083a00000002000c0020eb02007c070f082400000002000c002beb0200b4070f08140000 *0001000c0035eb0200b4070f081d00000002000c0040eb0200e8070f081400000001000c004aeb *0200e8070f080f00000002000c0055eb0200f8070f080a00000002000c0060eb0200cc090f0814 *00000001000c006aeb020044080f082900000002000c0075eb020078080f080800000001000c00 *7feb020078080f082500000002000c0088eb0200a0080f081e00000002000c0093eb0200d4080f *081400000001000c009deb0200d4080f081400000002000c00a8eb0200f0080f08080000000100 *0c00b2eb0200f0080f082200000002000c00bbeb020014090f081e00000002000c00c6eb02003c *090f080800000001000c00d0eb02003c090f082200000002000c00d9eb020060090f0824000000 *02000c00e4eb020098090f081400000001000c00eeeb020098090f081d00000002000c00f9eb02 *00840b0f081400000001000c0003ec0200f8090f082900000002000c007c4300002c0a0f080800 *000001000c000eec02002c0a0f082200000002000c0017ec0200500a0f081e00000002000c0022 *ec0200840a0f081400000001000c002cec0200840a0f081400000002000c0037ec0200a00a0f08 *0800000001000c0041ec0200a00a0f082500000002000c004aec0200c80a0f081e00000002000c *00ef1f0200f00a0f080800000001000c00f91f0200f00a0f082500000002000c0055ec0200180b *0f082400000002000c0060ec0200500b0f081400000001000c006aec0200500b0f081d00000002 *000c0075ec0200840b0f080400000001000c0087ec0200240d0f081400000001000c0091ec0200 *c80b0f080800000002000c009cec0200d00b0f080800000002000c00a6ec0200ec0b0f08140000 *0001000c00b0ec0200ec0b0f084d00000002000c00bbec02003c0c0f083900000002000c00c6ec *02008c0c0f081400000001000c00d0ec0200980c0f080c00000001000c00daec0200980c0f0830 *00000002000c00e5ec0200c80c0f084800000002000c00f0ec0200240d0f081000000001000c00 *08ed0200d8110f081400000001000c0012ed0200700d0f080800000001000c001ced0200700d0f *082d00000002000c00c0340000a00d0f081800000002000c00ba450000c00d0f08080000000100 *0c00c4450000c00d0f082d00000002000c0025ed0200fc0d0f080c00000001000c002fed0200fc *0d0f08bb00000002000c0038ed0200c40e0f080c00000001000c0042ed0200c40e0f081d000000 *02000c001b350000e40e0f084c00000002000c0026350000440f0f081400000001000c004bed02 *00440f0f081a00000002000c0056ed0200600f0f080b00000002000c0061ed0200740f0f080800 *000001000c006bed0200740f0f083a00000002000c0074ed0200b80f0f080800000001000c007e *ed0200b80f0f083a00000002000c0087ed0200f40f0f085c00000002000c009932000064100f08 *1400000001000c0092ed020064100f082000000002000c009ded020098100f081400000001000c *00a7ed0200a4100f080c00000001000c00b1ed0200a4100f080f00000002000c00baed0200c010 *0f080c00000001000c00c4ed0200c0100f083c00000002000c00cded0200fc100f082300000002 *000c00d8ed020020110f080200000002000c00e3ed020038110f081400000001000c00eded0200 *44110f080c00000001000c00f7ed020044110f080c00000002000c0000ee02005c110f080c0000 *0001000c000aee02005c110f083c00000002000c0013ee020098110f082600000002000c001eee *0200c0110f080200000002000c0029ee020024120f081400000001000c0033ee0200f0110f080e *00000002000c003eee020000120f080e00000002000c0049ee020024120f080400000001000c00 *61ee020050130f080800000001000c006bee020068120f080800000001000c0075ee020068120f *082c00000002000c007eee02009c120f080800000001000c0088ee02009c120f08360000000200 *0c0093ee0200dc120f080800000001000c009dee0200dc120f082c00000002000c00a6ee020010 *130f080800000001000c00b0ee020010130f083600000002000c00bbee020050130f0857000000 *02000c00c4ee02002c140f080800000001000c00d7ee02009c140f080c00000001000c00e7ee02 *0024160f081400000001000c00f1ee0200e8140f080e00000002000c00fbee02000c150f081400 *000001000c0005ef02000c150f081900000002000c000fef02003c150f081400000001000c0019 *ef02003c150f081b00000002000c0024ef020058150f080b00000002000c002eef0200e0150f08 *1800000002000c0037ef020078150f081400000001000c0041ef020078150f081b00000002000c *004bef0200a8150f081400000001000c0055ef0200a8150f081600000002000c0060ef0200d415 *0f081400000001000c006aef0200e0150f080c00000001000c0074ef0200f8150f080e00000002 *000c007fef020008160f080800000002000c008aef020024160f080400000001000c00a4ef0200 *a4160f080c00000001000c00aeef020060160f080800000001000c00b8ef020060160f08370000 *0002000c00c1ef0200a4160f081500000002000c00caef0200bc160f080400000001000c00ddef *020060170f080c00000001000c00e7ef0200d0170f080800000001000c00f1ef020064190f080c *00000001000c00fbef020060170f084b00000002000c0006660000b4170f080800000001000c00 *06f00200b4170f081200000002000c000ff00200d0170f082a00000002000c006827020004180f *080800000001000c001af0020004180f080800000002000c0023f0020014180f08080000000100 *0c002df0020014180f083000000002000c0038f002004c180f080800000001000c0042f002004c *180f085300000002000c004df00200a8180f080800000001000c0057f00200a8180f0845000000 *02000c0060f00200f0180f080c00000002000c006bf00200fc180f080b00000002000c0076f002 *001c190f081400000001000c0080f0020024190f080800000001000c008af0020024190f081e00 *000002000c00ede200004c190f080800000001000c0093f002004c190f080c00000002000c009c *f0020064190f083600000002000c00a7f002005c1e0f080800000001000c00b1f002005c1e0f08 *2400000002000c00baf00200e81e0f080800000001000c00c4f00200e81e0f083a00000002000c *00cdf0020050220f080800000001000c00f0f0020000230f080c00000001000c00faf00200c422 *0f080800000001000c0004f10200c4220f083000000002000c000df1020000230f081700000002 *000c0016f1020048240f080400000001000c0036f1020000250f080c00000001000c0040f10200 *80250f080c00000001000c004af10200b8240f080c00000001000c0054f10200b8240f083b0000 *0002000c005ff1020000250f084b00000002000c006af1020054250f080800000001000c0074f1 *020054250f082000000002000c007df1020080250f082600000002000c0088f10200dc250f080c *00000001000c00a9f102009c2a0f080c00000001000c0013c30000682b0f080c00000001000c00 *b3f10200c42b0f080c00000001000c00b686000078260f080800000001000c00c086000078260f *082400000002000c00a4ca0200a4260f080800000001000c00bdf10200a4260f082a0000000200 *0c00c8f10200d0260f081600000002000c00d3f10200e8260f084500000002000c00def1020030 *270f083500000002000c00e9f102007c270f081400000001000c00f3f102007c270f0823000000 *02000c00fef10200b4270f081400000001000c0008f20200c0270f080c00000001000c0012f202 *00c0270f083000000002000c001df2020000280f081000000001000c0027f2020000280f084e00 *000002000c004fc1000060280f081000000001000c0059c1000060280f085200000002000c0032 *f20200bc280f080800000001000c003cf20200bc280f083700000002000c0047f2020000290f08 *0c00000001000c0051f2020000290f084800000002000c005cf2020054290f080c00000001000c *0066f2020054290f084b00000002000c0071f20200a8290f080800000001000c007bf20200a829 *0f082800000002000c0084f20200dc290f080c00000001000c008ef20200dc290f082600000002 *000c0099f202000c2a0f080800000001000c00a3f202000c2a0f082800000002000c00acf20200 *402a0f080c00000001000c00b6f20200402a0f082600000002000c00c1f20200682a0f08080000 *0002000c00cbf20200902a0f082000000001000c00d5f202009c2a0f089800000002000c00e0f2 *02003c2b0f080800000001000c00eaf202003c2b0f082000000002000c001dc30000682b0f0826 *00000002000c00f3f20200982b0f080800000001000c00fdf20200982b0f082000000002000c00 *06f30200c42b0f082600000002000c0011f30200202c0f080c00000001000c0025a30100d42c0f *080800000001000c002fa30100d42c0f082a00000002000c00e6200100202d0f08080000000100 *0c0032f30200202d0f08aa00000002000c003bf30200482e0f080800000001000c0045f3020000 *2e0f080800000001000c004ff30200002e0f084000000002000c0058f30200482e0f081d000000 *02000c0061f30200682e0f080400000001000c0079f30200b82e0f085b00000002000c0082f302 *00b82e0f080c00000001000c008cf3020004310f080800000001000c00a5f3020074310f080800 *000001000c00bef30200e4310f080800000001000c00d6f30200c8340f081400000001000c00e0 *f302002c320f083200000002000c00ebf302006c320f080c00000001000c00f5f302006c320f08 *4200000002000c00fef30200b0320f081500000002000c0009f40200dc320f081400000001000c *0013f40200e8320f080c00000001000c001df40200e8320f083c00000002000c0026f402002433 *0f082e00000002000c0031f402005c330f080800000001000c003bf402005c330f082d00000002 *000c0044f4020094330f080800000001000c004ef4020094330f081500000002000c0057f40200 *b4330f080800000001000c0061f40200b4330f082100000002000c006af40200d8330f080f0000 *0002000c0075f40200f0330f080800000001000c007ff40200f0330f083a00000002000c0088f4 *02002c340f082400000002000c0093f4020064340f081400000001000c009df4020064340f081d *00000002000c00a8f4020098340f081400000001000c00b2f4020098340f080f00000002000c00 *bdf40200a8340f080a00000002000c00c8f40200dc360f081400000001000c00d2f4020004350f *084600000002000c00ddf4020054350f080800000001000c00e7f4020054350f08450000000200 *0c00f0f402009c350f081500000002000c00fbf40200c8350f081400000001000c0005f50200d0 *350f080800000001000c000ff50200d0350f080f00000002000c0018f50200e0350f081c000000 *02000c0023f50200fc350f084400000002000c00bb3e000048360f080800000001000c002ef502 *0048360f084300000002000c0037f502008c360f081500000002000c0042f50200b8360f081400 *000001000c004cf50200b8360f080f00000002000c0057f50200f0360f080800000001000c0072 *f50200e0370f080400000001000c008bf502006c380f081400000001000c00566700002c380f08 *0800000001000c00606700002c380f080500000002000c0095f5020034380f081800000002000c *00a0f502004c380f080a00000002000c00abf502006c380f080400000001000c00c4f50200f838 *0f081400000001000c00cef50200b8380f080800000001000c00d8f50200b8380f080800000002 *000c00e1f50200c0380f081800000002000c00ecf50200d8380f080a00000002000c00f7f50200 *f8380f080400000001000c000df60200c0390f081400000001000c0017f602003c390f08260000 *0002000c0022f602006c390f080800000001000c002cf602006c390f082400000002000c0035f6 *020090390f081c00000002000c0040f60200c0390f080400000001000c005cf60200483a0f0814 *00000001000c0066f60200203a0f081200000002000c0070f60200483a0f080400000001000c00 *82f60200903a0f080800000001000c008cf60200903a0f083700000002000c0095f60200c83a0f *080400000001000c00216a0000143b0f080800000001000c002b6a0000143b0f08370000000200 *0c00a7f60200603b0f080400000001000c00bef60200d03b0f081400000001000c00c8f60200a4 *3b0f080800000002000c00d3f60200ac3b0f080d00000002000c00def60200d03b0f0804000000 *01000c00f4f60200403c0f081400000001000c00fef60200143c0f080800000002000c0009f702 *001c3c0f080d00000002000c0014f70200403c0f080800000001000c0028f70200b43c0f081400 *000001000c0032f70200883c0f080800000002000c003df70200903c0f080d00000002000c0048 *f70200b43c0f080800000001000c005bf70200283d0f081400000001000c0065f70200fc3c0f08 *0800000002000c0070f70200043d0f080d00000002000c007bf70200283d0f080400000001000c *008cf70200c03e0f080800000001000c0096f70200103f0f080800000001000c00a0f70200603f *0f080800000001000c00aaf70200943f0f080800000001000c00eb820200e43f0f080800000001 *000c00b4f7020034400f080800000001000c00bef7020084400f080800000001000c00c8f70200 *70430f080c00000001000c00d2f7020018450f081000000001000c00b5620000a43e0f08080000 *0001000c0093e30000a43e0f081200000002000c00dcf70200c03e0f082a00000002000c003e27 *0200f43e0f080800000001000c00e7f70200f43e0f081200000002000c00f0f70200103f0f082a *00000002000c0040640000443f0f080800000001000c00fbf70200443f0f081200000002000c00 *04f80200603f0f082a00000002000c000ff80200943f0f082900000002000c001af80200c83f0f *080800000001000c0024f80200c83f0f081200000002000c00f5820200e43f0f082a0000000200 *0c002df8020018400f080800000001000c0037f8020018400f081200000002000c0040f8020034 *400f082a00000002000c000de4000068400f080800000001000c0017e4000068400f0812000000 *02000c004bf8020084400f082a00000002000c0056f80200b8400f080800000001000c0060f802 *00b8400f080800000002000c0069f80200c8400f080800000001000c0073f80200c8400f083600 *000002000c007ef8020008410f080800000001000c0088f8020008410f080800000002000c00ac *82020018410f080800000001000c00b682020018410f083600000002000c0091f8020050410f08 *6400000002000c009cf8020070430f084b00000002000c00a7f80200bc410f080800000001000c *00b1f80200bc410f080800000002000c00baf80200cc410f080800000001000c00c4f80200cc41 *0f083600000002000c00cff802000c420f080800000001000c00d9f802000c420f081100000002 *000c00e384020028420f080800000001000c00ed84020028420f083000000002000c00e2f80200 *58420f085200000002000c00edf80200c8420f081b00000002000c00f6f80200c0420f08140000 *0001000c0000f90200c8420f080800000001000c000af90200e4420f080e00000002000c0015f9 *0200f4420f080b00000002000c0020f9020014430f081400000001000c002af902001c430f0808 *00000001000c0034f902001c430f081e00000002000c003df9020044430f080800000001000c00 *47f9020044430f080c00000002000c00af63000058430f080800000001000c0050f9020058430f *080c00000002000c0059f90200bc430f080d00000002000c0064f90200d4430f08080000000100 *0c006ef90200d4430f080800000002000c00c9cf0000e4430f080800000001000c0077f90200e4 *430f083600000002000c0082f902001c440f084800000002000c008df9020078440f0814000000 *01000c0097f9020078440f081e00000002000c00a2f9020098440f080b00000002000c00adf902 *00b8440f081400000001000c00b7f90200c4440f080c00000001000c00c1f90200c4440f081e00 *000002000c00bbe40000f0440f080c00000001000c00c5e40000f0440f081500000002000c00ca *f9020018450f083c00000002000c00d5f9020098460f080800000001000c00dff9020098460f08 *3300000002000c00e8f9020034470f080400000001000c0009fa0200a4470f080800000001000c *0013fa0200e0470f080c00000001000c001dfa0200a4470f082d00000002000c0028fa0200e047 *0f080800000002000c0033fa020050480f080400000001000c0054fa0200c0480f080800000001 *000c005efa0200fc480f080c00000001000c0068fa0200c0480f082d00000002000c0073fa0200 *fc480f080800000002000c007efa020004490f080400000001000c009ffa020074490f08080000 *0001000c00a9fa0200b0490f080c00000001000c00b3fa020074490f082d00000002000c00befa *0200b0490f080800000002000c00c9fa0200e8490f080800000001000c00dcfa0200844b0f0808 *00000001000c00f5fa0200c44e0f081400000001000c00fffa0200284c0f080800000001000c00 *09fb0200284c0f083d00000002000c00821e0200704c0f080800000001000c00301e0200704c0f *081e00000002000c0012fb0200904c0f082100000002000c001dfb0200bc4c0f08080000000100 *0c0027fb0200bc4c0f084200000002000c0030fb0200004d0f081500000002000c003bfb02002c *4d0f081400000001000c0045fb0200344d0f080800000001000c004ffb0200344d0f083c000000 *02000c0058fb0200704d0f082e00000002000c0063fb0200a84d0f080800000001000c006dfb02 *00a84d0f084200000002000c0076fb0200ec4d0f081200000002000c0081fb0200084e0f080800 *000001000c008bfb0200084e0f085000000002000c0094fb0200584e0f082400000002000c009f *fb0200904e0f081400000001000c00a9fb0200904e0f082000000002000c00b4fb0200084f0f08 *0800000001000c00befb0200084f0f083700000002000c00c7fb0200844f0f080800000001000c *00d1fb0200844f0f083700000002000c00dafb0200b0500f080800000001000c00e4fb0200b050 *0f082f00000002000c00effb020074510f081400000001000c00f9fb020054510f080b00000002 *000c0003fc0200d0510f081400000001000c000dfc02008c510f082f00000002000c0017fc0200 *d0510f080400000001000c0028fc020018520f080800000001000c0032fc020018520f08370000 *0002000c0086fe000090520f080800000001000c003bfc020090520f083700000002000c0044fc *0200c8520f080400000001000c0055fc020010530f080800000001000c005ffc020010530f0837 *00000002000c0068fc020048530f080400000001000c0038020100bc530f080800000001000c00 *7cfc0200bc530f080800000002000c0085fc0200c4530f080400000001000c000302010038540f *080800000001000c0099fc020038540f080800000002000c00a2fc020040540f08040000000100 *0c00b4fc020050550f080c00000001000c00096900007c540f080800000001000c00136900007c *540f083700000002000c00befc0200b4540f081800000002000c00c8fc0200e0540f0814000000 *01000c00d2fc0200e0540f081e00000002000c00dcfc020014550f081400000001000c00fb0401 *0020550f080c00000001000c00e6fc020020550f082100000002000c00effc020050550f081d00 *000002000c00f8fc020070550f080400000001000c007b690000bc550f080800000001000c0085 *690000bc550f083700000002000c000afd0200f4550f080400000001000c004568000040560f08 *0800000001000c004f68000040560f083700000002000c001cfd020078560f080800000001000c *005868000080580f080c00000001000c0030fd0200b0560f081100000002000c003afd0200d856 *0f081400000001000c0044fd0200d8560f081800000002000c004efd020004570f081400000001 *000c0058fd020004570f082a00000002000c0063fd02003c570f080c00000001000c006dfd0200 *3c570f082600000002000c0076fd020064570f081c00000002000c0081fd020094570f08140000 *0001000c008bfd020094570f081200000002000c0095fd0200bc570f081400000001000c009ffd *0200bc570f085300000002000c00aafd020010580f084d00000002000c00b5fd020074580f0814 *00000001000c006268000080580f081b00000002000c00bffd02009c580f080800000001000c00 *d3fd02002c5b0f080c00000001000c00ddfd0200d4580f081100000002000c00e7fd0200fc580f *081400000001000c00f1fd0200fc580f081800000002000c00fbfd020028590f08140000000100 *0c0005fe020028590f081e00000002000c000ffe02005c590f081400000001000c0019fe02005c *590f082a00000002000c0024fe020094590f080c00000001000c002efe020094590f0826000000 *02000c0037fe0200bc590f081c00000002000c0042fe0200ec590f081400000001000c004cfe02 *00ec590f081200000002000c0056fe0200145a0f081400000001000c0060fe0200145a0f085300 *000002000c006bfe0200685a0f084d00000002000c0076fe0200cc5a0f081400000001000c0080 *fe0200cc5a0f080f00000002000c008afe0200f05a0f081400000001000c001d680000fc5a0f08 *0c00000001000c0027680000fc5a0f082100000002000c0094fe02002c5b0f081d00000002000c *009dfe02004c5b0f080800000001000c00b8fe0200605c0f080800000001000c00c2fe0200c45c *0f080800000001000c0053e90000c45d0f080c00000001000c00ccfe0200305c0f080800000001 *000c00d6fe0200305c0f081200000002000c00dffe02004c5c0f080800000001000c00e9fe0200 *4c5c0f080c00000002000c00f2fe0200605c0f082a00000002000c00fdfe0200945c0f08080000 *0001000c0007ff0200945c0f081200000002000c0010ff0200b05c0f080800000001000c001aff *0200b05c0f080c00000002000c0023ff0200c45c0f082a00000002000c00d56f0000f85c0f0808 *00000001000c002eff0200f85c0f080800000002000c0037ff0200085d0f080800000001000c00 *41ff0200085d0f083600000002000c00c06f0000485d0f080800000001000c004cff0200485d0f *084500000002000c0055ff0200985d0f080800000001000c005fff0200985d0f080c0000000200 *0c0068ff0200ac5d0f080800000001000c0072ff0200ac5d0f080c00000002000c007bff0200c4 *5d0f083000000002000c0086ff0200f45d0f080400000001000c00a0ff0200a85e0f0814000000 *01000c0014e70000405e0f080800000001000c00aaff0200405e0f083700000002000c00b3ff02 *00785e0f081900000002000c00bdff0200a05f0f080400000001000c00deff020010600f080800 *000001000c00e8ff02004c600f080c00000001000c00f2ff020010600f082d00000002000c00fd *ff02004c600f080800000002000c0008000300f8600f081400000001000c001200030084600f08 *0900000002000c001d00030098600f080800000001000c002700030098600f083800000002000c *0030000300d0600f081200000002000c003b000300c4630f081400000001000c00450003003862 *0f082900000002000c00500003006c620f080800000001000c005a0003006c620f082400000002 *000c006300030090620f081e00000002000c006e000300c4620f081400000001000c0078000300 *c4620f081400000002000c0083000300e0620f080800000001000c008d000300e0620f08250000 *0002000c009600030008630f081e00000002000c00a100030030630f080800000001000c00ab00 *030030630f082500000002000c00b400030058630f082400000002000c00bf00030090630f0814 *00000001000c00c900030090630f081d00000002000c00d400030024640f081400000001000c00 *de00030000640f080800000002000c00e900030008640f080800000002000c00f400030084640f *081400000001000c00fe00030060640f080800000002000c000901030068640f08080000000200 *0c001401030084660f081400000001000c001e010300b0640f083d00000002000c0029010300f8 *640f080800000001000c0033010300f8640f083800000002000c003c01030030650f081e000000 *02000c004701030064650f081400000001000c005101030064650f081400000002000c00741f02 *0080650f080800000001000c007e1f020080650f083800000002000c005c010300b8650f081e00 *000002000c0067010300e0650f080800000001000c0071010300e0650f083800000002000c007a *01030018660f082400000002000c008501030050660f081400000001000c008f01030050660f08 *1d00000002000c009a0103001c670f080800000001000c00a4010300e4660f080800000001000c *00ae010300e4660f082f00000002000c00b90103001c670f085000000002000c00c4010300fc67 *0f080800000001000c00ce010300c4670f080800000001000c00d8010300c4670f082f00000002 *000c00e3010300fc670f085600000002000c00ee010300b4680f081400000001000c00f8010300 *90680f080800000002000c000302030098680f080800000002000c000e02030014690f08140000 *0001000c0018020300f0680f080800000002000c0023020300f8680f080800000002000c002e02 *030014690f080400000001000c00cc000100006a0f080c00000001000c004102030048690f0806 *00000002000c004b02030064690f081400000001000c005502030064690f084700000002000c00 *60020300ac690f083300000002000c006b020300f4690f081400000001000c0075020300006a0f *081500000002000c007e020300e46a0f080800000001000c0088020300306a0f08390000000200 *0c0093020300746a0f080800000001000c009d020300746a0f083500000002000c00a6020300ac *6a0f081c00000002000c00b1020300dc6a0f081400000001000c00bb020300e46a0f080c000000 *02000c00c4020300f06a0f080400000001000c0093ff0000f86b0f080c00000001000c00d80203 *00246b0f080600000002000c00e2020300406b0f081400000001000c00ec020300406b0f085300 *000002000c00f7020300946b0f084100000002000c0002030300ec6b0f081400000001000c000c *030300f86b0f081500000002000c00a2620000606f0f080800000001000c00150303003c6c0f08 *2900000002000c0020030300706c0f080800000001000c002a030300706c0f082400000002000c *0033030300946c0f081e00000002000c003e030300c86c0f081400000001000c0048030300c86c *0f081500000002000c000b040100e86c0f080800000001000c0053030300e86c0f082400000002 *000c005c0303000c6d0f081e00000002000c0067030300346d0f080800000001000c0071030300 *346d0f082400000002000c007a030300586d0f082400000002000c0085030300906d0f08140000 *0001000c008f030300906d0f081b00000002000c009a030300c06d0f081400000001000c00a403 *0300c86d0f080800000001000c00ae030300c86d0f080c00000002000c00b7030300d46d0f081f *00000002000c00c2030300fc6d0f080800000001000c00cc030300fc6d0f081b00000002000c00 *d5030300186e0f081b00000002000c00e0030300486e0f081400000001000c00ea030300486e0f *081400000002000c00f5030300646e0f080800000001000c00ff030300646e0f081b0000000200 *0c003d630000806e0f081e00000002000c0072630000a86e0f080800000001000c007c630000a8 *6e0f081b00000002000c0085630000c46e0f082400000002000c0090630000fc6e0f0814000000 *01000c0008040300fc6e0f081d00000002000c0013040300306f0f081400000001000c004a0401 *00386f0f080800000001000c001d040300386f0f081d00000002000c00ac620000606f0f081d00 *000002000c00f5620000f06f0f081400000001000c00df620000bc6f0f080e00000002000c00ea *620000cc6f0f080e00000002000c0026040300f06f0f080400000001000c003a04030020710f08 *0c00000001000c004404030024700f081100000002000c004e0403004c700f081400000001000c *00580403004c700f081800000002000c006204030078700f081400000001000c006c0403007870 *0f081e00000002000c0076040300ac700f081400000001000c0080040300ac700f081e00000002 *000c008a040300e0700f081400000001000c00e6040100ec700f080c00000001000c0094040300 *ec700f082700000002000c009d04030020710f081d00000002000c00a604030040710f08040000 *0001000c00ba04030070720f080c00000001000c00c404030074710f081100000002000c00ce04 *03009c710f081400000001000c00d80403009c710f081800000002000c00e2040300c8710f0814 *00000001000c00ec040300c8710f081e00000002000c00f6040300fc710f081400000001000c00 *00050300fc710f081e00000002000c000a05030030720f081400000001000c00140503003c720f *080c00000001000c001e0503003c720f082700000002000c002705030070720f081d0000000200 *0c003005030090720f080400000001000c0048050300bc720f080c00000001000c0052050300bc *720f080b00000002000c005b050300c8720f080400000001000c00720503004c740f0804000000 *01000c0093050300bc740f080800000001000c009d050300f8740f080c00000001000c00a70503 *00bc740f082d00000002000c00b2050300f8740f080800000002000c00bd05030034760f080c00 *000001000c00c705030034760f083f00000002000c00d205030058750f081000000002000c00dc *0503007c750f081400000001000c00e605030084750f080800000001000c00f005030084750f08 *3c00000002000c00fb050300c0750f084500000002000c000606030008760f080b00000002000c *001106030028760f081400000001000c001b060300a8770f080c00000001000c0025060300a877 *0f083f00000002000c0030060300cc760f081000000002000c003a060300f0760f081400000001 *000c0044060300f8760f080800000001000c004e060300f8760f083c00000002000c0059060300 *34770f084500000002000c00640603007c770f080b00000002000c006f0603009c770f08140000 *0001000c00790603001c790f080c00000001000c00830603001c790f083300000002000c008e06 *030034780f081000000002000c009806030058780f081400000001000c00a206030060780f0808 *00000001000c00ac06030060780f083c00000002000c00b70603009c780f084d00000002000c00 *c2060300ec780f080e00000002000c00cd06030010790f081400000001000c00d7060300847a0f *080c00000001000c00e1060300847a0f083300000002000c00ec0603009c790f08100000000200 *0c00f6060300c0790f081400000001000c0000070300c8790f080800000001000c000a070300c8 *790f083c00000002000c0015070300047a0f084d00000002000c0020070300547a0f080e000000 *02000c002b070300787a0f081400000001000c0035070300b87a0f080800000001000c00c3fe00 *00ac7c0f080c00000001000c0050070300007b0f080c00000001000c005a070300007b0f083600 *000002000c0065070300447b0f080c00000001000c006f070300447b0f085100000002000c007a *070300a87b0f081000000001000c0084070300a87b0f084b00000002000c008f070300fc7b0f08 *0800000001000c0099070300fc7b0f084e00000002000c0071fe0000587c0f080c00000001000c *007bfe0000587c0f084800000002000c00a4070300ac7c0f084f00000002000c00ad070300347e *0f080400000001000c00ce070300a47e0f080800000001000c00d8070300e07e0f080c00000001 *000c00e2070300a47e0f082d00000002000c00ed070300e07e0f080800000002000c00f8070300 *20800f080400000001000c001908030090800f080800000001000c0023080300cc800f080c0000 *0001000c002d08030090800f082d00000002000c0038080300cc800f080800000002000c004308 *0300a4810f080400000001000c006408030014820f080800000001000c006e08030050820f080c *00000001000c007808030014820f082d00000002000c008308030050820f080800000002000c00 *8e08030090830f080400000001000c00af08030000840f080800000001000c00b90803003c840f *080c00000001000c00c308030000840f082d00000002000c00ce0803003c840f08080000000200 *0c00d908030014850f080400000001000c00fa08030084850f080800000001000c0004090300c0 *850f080c00000001000c000e09030084850f082d00000002000c0019090300c0850f0808000000 *02000c002409030098860f080400000001000c004509030008870f080800000001000c004f0903 *0044870f080c00000001000c005909030008870f082d00000002000c006409030044870f080800 *000002000c006f0903001c880f080400000001000c00900903008c880f080800000001000c009a *090300c8880f080c00000001000c00a40903008c880f082d00000002000c00af090300c8880f08 *0800000002000c00ba090300a0890f080400000001000c00db090300108a0f080800000001000c *00e50903004c8a0f080c00000001000c00ef090300108a0f082d00000002000c00fa0903004c8a *0f080800000002000c00050a0300248b0f080400000001000c00270a0300948b0f080800000001 *000c00310a0300d08b0f080c00000001000c003b0a0300948b0f082d00000002000c00460a0300 *d08b0f080800000002000c00510a0300a88c0f080400000001000c00720a0300188d0f08080000 *0001000c007c0a0300548d0f080c00000001000c00860a0300188d0f082d00000002000c00910a *0300548d0f080800000002000c009c0a03002c8e0f080400000001000c00bd0a03009c8e0f0808 *00000001000c00c70a0300d88e0f080c00000001000c00d10a03009c8e0f082d00000002000c00 *dc0a0300d88e0f080800000002000c00e70a0300b08f0f080400000001000c00080b030020900f *080800000001000c00120b03005c900f080c00000001000c001c0b030020900f082d0000000200 *0c00270b03005c900f080800000002000c00320b030034910f080400000001000c00530b0300a4 *910f080800000001000c005d0b0300e0910f080c00000001000c00670b0300a4910f082d000000 *02000c00720b0300e0910f080800000002000c007d0b0300b8920f080400000001000c009e0b03 *0028930f080800000001000c00a80b030064930f080c00000001000c00b20b030028930f082d00 *000002000c00bd0b030064930f080800000002000c00c80b03003c940f080400000001000c00ea *0b0300ac940f080800000001000c00f40b0300e8940f080c00000001000c00fe0b0300ac940f08 *2d00000002000c00090c0300e8940f080800000002000c00140c0300c0950f080400000001000c *00350c030030960f080800000001000c003f0c03006c960f080c00000001000c00490c03003096 *0f082d00000002000c00540c03006c960f080800000002000c005f0c030044970f080400000001 *000c00800c0300b4970f080800000001000c008a0c0300f0970f080c00000001000c00940c0300 *b4970f082d00000002000c009f0c0300f0970f080800000002000c00aa0c0300c8980f08040000 *0001000c00cb0c030038990f080800000001000c00d50c030074990f080c00000001000c00df0c *030038990f082d00000002000c00ea0c030074990f080800000002000c00f50c03004c9a0f0804 *00000001000c00160d0300bc9a0f080800000001000c00200d0300f89a0f080c00000001000c00 *2a0d0300bc9a0f082d00000002000c00350d0300f89a0f080800000002000c00400d0300d09b0f *080400000001000c00610d0300409c0f080800000001000c006b0d03007c9c0f080c0000000100 *0c00750d0300409c0f082d00000002000c00800d03007c9c0f080800000002000c008b0d030054 *9d0f080400000001000c00ac0d0300c49d0f080800000001000c00b60d0300009e0f080c000000 *01000c00c00d0300c49d0f082d00000002000c00cb0d0300009e0f080800000002000c00d60d03 *00d89e0f080400000001000c00f70d0300489f0f080800000001000c00010e0300849f0f080c00 *000001000c000b0e0300489f0f082d00000002000c00160e0300849f0f080800000002000c0021 *0e03005ca00f080400000001000c00420e0300cca00f080800000001000c004c0e030008a10f08 *0c00000001000c00560e0300cca00f082d00000002000c00610e030008a10f080800000002000c *006c0e0300e0a10f080400000001000c008d0e030050a20f080800000001000c00970e03008ca2 *0f080c00000001000c00a10e030050a20f082d00000002000c00ac0e03008ca20f080800000002 *000c00b70e030064a30f080400000001000c00d80e0300d4a30f080800000001000c00e20e0300 *10a40f080c00000001000c00ec0e0300d4a30f082d00000002000c00f70e030010a40f08080000 *0002000c00020f0300e8a40f080400000001000c00230f030058a50f080800000001000c002d0f *030094a50f080c00000001000c00370f030058a50f082d00000002000c00420f030094a50f0808 *00000002000c004d0f03006ca60f080400000001000c006e0f0300dca60f080800000001000c00 *780f030018a70f080c00000001000c00820f0300dca60f082d00000002000c008d0f030018a70f *080800000002000c00980f0300f0a70f080400000001000c00b90f030060a80f08080000000100 *0c00c30f03009ca80f080c00000001000c00cd0f030060a80f082d00000002000c00d80f03009c *a80f080800000002000c00e30f030074a90f080400000001000c0004100300e4a90f0808000000 *01000c000e10030020aa0f080c00000001000c0018100300e4a90f082d00000002000c00231003 *0020aa0f080800000002000c002e10030038091208040000000100100037100300801812080400 *000001001700411003008418120804000000010017004c100300a0181208005000000100170055 *100300a068120800500000010017005f100300a0b81208040000000100170070100300b0b81208 *04000000010017007e100300b4b81208040000000100170089100300b8b8120804000000010017 *00991003003c0912080400000001001000a8100300e0b812080400000001001700c01003005cc8 *0f08bf04000002000c00c9100300c6d90f08d800000002000c00da100300e8b812080400000001 *001700e6100300e3d20f085301000002000c00fa100300c4d60f083c00000002000c0012110300 *e4b8120804000000010017002d11030044d00f082700000002000c003d110300acd10f08380000 *0002000c00491103009bd20f082400000002000c0052110300ecb8120804000000010017005e11 *030036d40f083900000002000c006f110300c6d40f08e301000002000c007d1103009eda0f0847 *01000002000c0091110300e5db0f086c00000002000c00a311030004b912080400000001001700 *ac11030008b912080400000001001700b61103000cb912080400000001001700c9110300d1e00f *088500000002000c00d711030056e10f081300000002000c00e411030069e10f08c20000000200 *0c00f411030020b91208800000000100170000120300a0b9120880000000010017000d120300d1 *e50f082100000002000c001e12030024ba120804000000010017002e12030028ba120804000000 *01001700371203002cba1208040000000100170048120300d2e60f085200000002000c005b1203 *0030ba120804000000010017006a12030034ba120804000000010017007b12030038ba12080400 *0000010017008e1203003cba120804000000010017009e12030040ba12080400000001001700ab *12030044ba12080400000001001700bb12030048ba12080400000001001700cc1203004cba1208 *0400000001001700d812030050ba12080400000001001700e712030054ba120804000000010017 *00f712030058ba12080400000001001700041303005cba120804000000010017001413030060ba *120808000000010017002113030068ba120808000000010017002f13030070ba12080400000001 *0017003d13030074ba120804000000010017004913030078ba1208040000000100170058130300 *7cba120804000000010017006513030080ba120804000000010017007213030084ba1208040000 *00010017007f13030088ba12080400000001001700901303008cba12080400000001001700a013 *030090ba12080400000001001700ae1303004ceb0f082100000002000c00b7130300aceb0f081f *00000002000c00c213030098ba12080400000001001700d013030094ba12080400000001001700 *d91303007e0210080100000002000c00ea130300420210083c00000002000c00fb130300120210 *083000000002000c000a140300c8ba1208040000000100170017140300ccba1208040000000100 *17002c140300080510082d00000002000c0038140300ec2c10080200000002000c0045140300f0 *2c10081900000002000c00541403000c2d10080200000002000c0061140300102d100819000000 *02000c00701403002c2d10080200000002000c007d140300302d10081900000002000c008c1403 *004c2d10080200000002000c0099140300502d10081900000002000c00a81403006c2d10080200 *000002000c00b5140300702d10081900000002000c00c41403008c2d10080200000002000c00d2 *140300902d10081900000002000c00e2140300ac2d10080200000002000c00f0140300b02d1008 *1900000002000c0000150300cc2d10080200000002000c000e150300d02d10081900000002000c *001e150300ec2d10080200000002000c002c150300f02d10081900000002000c003c1503000c2e *10080200000002000c004b150300102e10081900000002000c005c1503002c2e10080200000002 *000c006b150300302e10081900000002000c007c1503004c2e10080200000002000c008b150300 *502e10081900000002000c009c1503006c2e10080200000002000c00ab150300702e1008190000 *0002000c00bc1503008c2e10080200000002000c00cb150300902e10081900000002000c00dc15 *0300ac2e10080200000002000c00eb150300b02e10081900000002000c00fc150300cc2e100802 *00000002000c000b160300d02e10081900000002000c001c160300ec2e10080200000002000c00 *2b160300f02e10081900000002000c003c1603000c2f10080200000002000c004c160300102f10 *081900000002000c005e1603002c2f10080200000002000c006f160300302f1008190000000200 *0c00821603004c2f10080200000002000c0094160300502f10081900000002000c00a81603006c *2f10080200000002000c00bb160300702f10081900000002000c00d01603008c2f100802000000 *02000c00e4160300902f10081900000002000c00fa160300ec4110080b00000002000c00111703 *00344210081100000002000c00271703002c5910081200000002000c003e1703001a5910081200 *000002000c0055170300085910081200000002000c006c170300f65810081200000002000c0083 *170300e45810081200000002000c009a170300d25810081200000002000c00b1170300c0581008 *1200000002000c00c8170300ae5810081200000002000c00df1703009c5810081200000002000c *00f41703004c5910081200000002000c000e1803006c5910081200000002000c00251803008c59 *10081d00000002000c003b180300b85910081b00000002000c0051180300e05910081d00000002 *000c00671803000c5a10080f00000002000c007c180300285a10080500000002000c0093180300 *645a10080500000002000c00a1180300745a10080600000002000c00b6180300845a1008090000 *0002000c00c6180300985a10080900000002000c00d6180300ac5a10080900000002000c00e618 *0300c05a10080900000002000c00f6180300d45a10080900000002000c0006190300e85a100809 *00000002000c0016190300fc5a10080900000002000c0026190300105b10080900000002000c00 *36190300245b10080500000002000c004b190300345b10080500000002000c005e190300445b10 *080500000002000c0073190300545b10080500000002000c008d190300645b10086f0000000200 *0c00a1190300dc5b10082300000002000c00b8190300085c10086f00000002000c00d019030080 *5c10080c00000002000c00de190300945c10080c00000002000c00f2190300a85c10080c000000 *02000c00011a0300bc5c10080c00000002000c00151a0300d05c10080c00000002000c002c1a03 *00e45c10080c00000002000c003e1a0300f85c10080c00000002000c00541a03000c5d10080c00 *000002000c00681a0300205d10080c00000002000c007d1a0300345d10080c00000002000c0095 *1a0300485d10080c00000002000c00ac1a03005c5d10080c00000002000c00bf1a0300705d1008 *0c00000002000c00dc1a0300845d10080c00000002000c00f51a0300985d10080c00000002000c *00091b0300ac5d10080c00000002000c00201b0300c05d10080c00000002000c003e1b0300d45d *10080c00000002000c00501b0300d85e10080c00000001000c00671b0300d85e10082900000002 *000c007d1b0300645f10080c00000001000c00941b0300645f10082900000002000c00aa1b0300 *f05f10080c00000001000c00c11b0300f05f10082900000002000c00d71b03007c6010080c0000 *0001000c00ee1b03007c6010082900000002000c00041c0300086110080c00000001000c001b1c *0300086110082900000002000c00311c0300946110080c00000001000c00481c03009461100829 *00000002000c005e1c0300206210080c00000001000c00751c0300206210082900000002000c00 *8b1c0300ac6210080c00000001000c00a21c0300ac6210082900000002000c00b81c0300386310 *080c00000001000c00cf1c0300386310082900000002000c00e51c0300c46310080c0000000100 *0c00fc1c0300c46310082900000002000c00121d0300506410080c00000001000c002a1d030050 *6410082900000002000c00411d0300dc6410080c00000001000c00591d0300dc64100829000000 *02000c00701d0300686510080c00000001000c00881d0300686510082900000002000c009f1d03 *00f46510080c00000001000c00b71d0300f46510082900000002000c00ce1d0300806610080c00 *000001000c00e61d0300806610082900000002000c00fd1d03000c6710080c00000001000c0015 *1e03000c6710082900000002000c002c1e0300986710080c00000001000c00451e030098671008 *0800000002000c005d1e0300d46710080c00000001000c00761e0300d46710080800000002000c *008e1e0300106810080c00000001000c00a71e0300106810080800000002000c00bf1e03004c68 *10080c00000001000c00d81e03004c6810080800000002000c00f01e0300886810080c00000001 *000c00091f0300886810080800000002000c00211f0300c46810080c00000001000c003a1f0300 *c46810080800000002000c00521f0300006910080c00000001000c006b1f030000691008080000 *0002000c00831f03003c6910080c00000001000c009c1f03003c6910080800000002000c00b41f *0300786910080c00000001000c00cd1f0300786910080800000002000c00e51f0300b46910080c *00000001000c00fe1f0300b46910080800000002000c0016200300f06910080c00000001000c00 *30200300f06910080800000002000c00492003002c6a10080c00000001000c00632003002c6a10 *080800000002000c007c200300686a10080c00000001000c0096200300686a1008080000000200 *0c00af200300a46a10080c00000001000c00c9200300a46a10080800000002000c00e2200300e0 *6a10080c00000001000c00fc200300e06a10080800000002000c00152103001c6b10080c000000 *01000c002f2103001c6b10080800000002000c0048210300587310080600000002000c005a2103 *00607310081b00000002000c0069210300d0ba1208040000000100170080210300d4ba12080400 *0000010017008a210300fa751008d900000002000c0099210300697810082a00000002000c00a4 *210300d47710087300000002000c00b2210300947810081200000002000c00c1210300e8121208 *0400000001001000d0210300d8ba12080400000001001700e5210300d07810087500000002000c *00f4210300e0ba12080400000001001700f6210300fcba1208040000000100170001220300e4ba *120804000000010017000a220300dcba12080400000001001700192203006ea910082000000002 *000c002b220300f8ba120804000000010017003922030000bb120804000000010017004b220300 *04bb120804000000010017005622030008bb120804000000010017005e2203000cbb1208040000 *000100170069220300daa810086b00000002000c00782203000da31008bf00000002000c008f22 *0300e8ba1208040000000100170098220300d6941008f606000002000c00a1220300cca310089e *01000002000c00b7220300d58910081c00000002000c00c1220300028910082400000002000c00 *d4220300ecba12080400000001001700df220300f0ba12080400000001001700ef2203006aa510 *087601000002000c00ff22030010bb120804000000010017001523030014bb1208040000000100 *170024230300cc9b10087a05000002000c003823030041871008c101000002000c004f23030045 *a910082900000002000c0067230300ee8a10089d07000002000c0070230300f189100877000000 *02000c0079230300688a10088600000002000c0083230300f4ba12080400000001001700922303 *00bfac10089700000002000c00a12303008b9210087e01000002000c00b52303001a9410086100 *000002000c00cf2303007b9410085b00000002000c00db23030037a71008a301000002000c00ea *230300e9ad1008a800000002000c00f723030018bb120804000000010017000324030046a11008 *c701000002000c0010240300e0a610085700000002000c002624030056ad10089300000002000c *0039240300dea910089c00000002000c004d2403007aaa10081f02000002000c006024030094ae *1008b000000002000c006e24030044af10081e03000002000c007b2403001ebb10083601000002 *000c008c24030062b210081101000002000c009724030073b310080901000002000c00a8240300 *54bc10083402000002000c00b32403007cb410083700000002000c00be24030088be10088a0400 *0002000c00c9240300b3b410080f01000002000c00dc240300c2b51008bc01000002000c00f024 *0300ceba10085000000002000c00fa2403007eb710088800000002000c000f25030094ba10083a *00000002000c001625030014c310081c00000002000c001f25030030c310086300000002000c00 *2725030093c310080f00000002000c0033250300a2c310082300000002000c003e250300c5c310 *082700000002000c004b250300ecc310083801000002000c00522503001cbb1208040000000100 *17005b2503009bc510086400000002000c0069250300ffc510081300000002000c007625030009 *c810089000000002000c0086250300ec1212081c000000010010009425030024d7100859000000 *02000c00ab2503008fd81008a200000002000c00b325030031d910088b00000002000c00c32503 *0024bb12080400000001001700d225030020131208b000000001001000dd2503000bdb1008af00 *000002000c00eb25030005e410082300000002000c00f425030005e31008dd00000002000c00fb *250300e2e310082300000002000c0006260300b2e110085301000002000c00162603005ce71108 *0400000011001000362603001cc50e082300000012000c004b260300d0e3110804000000110010 *006c2603003ca5110800000000100010009e260300001805080000000010000c00c32603002cf1 *0c084300000012000c00e5260300f8d21108040000001100100006270300dcd104080000000010 *000c002a270300181905080000000010000c00572703004c330e080600000012000c0089270300 *6dc409080000000010000c00aa27030002c50f082700000012000c00b727030098041208040000 *0011001000cd270300b4400e080c00000011000c0005280300b01805080000000010000c002d28 *0300dcd0110804000000110010004c280300b0c40c080800000011000c007228030000d0110804 *000000110010009a280300ac860f085100000012000c00bd2803009cf111080400000011001000 *d4280300244b0e085700000012000c0007290300a46c10084700000012000c001a290300c4f211 *08040000001100100046290300f0620c080c00000011000c007429030084d70508000000001000 *0c00a6290300046b0f082000000012000c00bc290300ecab11080000000010001000ee29030070 *280e085400000012000c00172a0300f4970d084400000012000c002f2a0300500d0c0810000000 *11000c00432a0300d0b40b082300000012000c005e2a0300e8330d082300000012000c00912a03 *008c910d083d00000012000c00aa2a0300c4900c080c00000011000c00c52a03008c6007080000 *000010000c00ec2a0300000000003d00000012000000f72a0300b4f31108040000001100100028 *2b03003c140a080000000010000c004e2b0300041405080000000010000c00702b03006c8f0c08 *0c00000012000c00862b0300b4620c080e00000012000c00b32b030060d3110804000000110010 *00cb2b030040c409080000000010000c00fd2b03000cbb0e080c00000011000c00242c0300b8bc *12080400000011001700362c0300cc820f085b00000012000c00562c030060530b080000000010 *000c00802c03001c150d081000000011000c009d2c030024080f082000000012000c00af2c0300 *d01908080000000010000c00e02c0300f09805080000000010000c00082d0300ec4110080c0000 *0011000c00202d0300a8d0110804000000110010003b2d0300a45510087500000012000c00512d *0300b00212080400000011001000672d0300e0e311080400000011001000852d0300280e0d0851 *00000012000c00aa2d0300dec50f086802000012000c00bf2d0300f8ce11080000000010001000 *ee2d030018d305080000000010000c00202e0300244b0c080c00000011000c00492e0300cce90b *080300000012000c00732e03000c9d0b085400000012000c00a42e030054420708000000001000 *0c00cc2e03000c5f10080800000011000c00df2e030060d00e080800000011000c00f32e0300e0 *ef110804000000110010000b2f03000ce50e085900000012000c003a2f03000ce8110804000000 *110010006c2f030084ee0c085400000012000c00862f030035180b080000000010000c00b12f03 *002ca70f085b00000012000c00c52f0300d08b0b080000000010000c00f82f0300fc5f07080000 *000010000c0021300300d0210f080500000012000c004930030060050f083000000012000c0064 *3003004b5810080600000012000c007d300300b8090d085400000012000c00a2300300f04d0e08 *5b00000012000c00c3300300b4fd0d085b00000012000c00e0300300945c10080800000011000c *00f330030060050f081000000011000c000d31030034770c080600000012000c002c31030088b1 *1108000000001000100055310300301805080000000010000c007b310300804210084b00000012 *000c008f310300dc6107080000000010000c00b9310300a4a211080000000010001000de310300 *cceb110804000000110010000432030014770c080600000012000c002332030080001208040000 *001100100046320300d8da0e081000000011000c007132030060d00e085b00000012000c008632 *030088c311080000000010001000b732030078930f080800000011000c00ca320300a08a0c080c *00000011000c00df320300d09705080000000010000c000833030014da11080400000011001000 *27330300d004120804000000110010004c33030068410c087e00000012000c006d330300dc3a0f *081000000011000c0080330300b0190f080800000011000c00a433030000c30d08050000001200 *0c00c333030088da11080400000011001000da33030056c20f080f00000012000c00e333030018 *260c086200000012000c000034030048f3110804000000110010002934030060740f0810000000 *11000c004b340300f4980b084100000012000c006e340300d85107080000000010000c00953403 *00e0da0b080c00000012000c00aa340300546c10080c00000011000c00bc340300541e0a080000 *000010000c00e2340300f86007080000000010000c000b35030010a80e080c00000011000c002a *35030060950b081000000011000c0052350300801805080000000010000c0076350300b46a1008 *0800000011000c008c350300f04d0e080800000011000c00ac350300bc900d080c00000012000c *00c2350300ac750d085400000012000c00e43503007ce41108040000001100100003360300bcf1 *0b080c00000011000c001c3603000c0110083c00000012000c002c3603008cbf0b084300000012 *000c0059360300b0b01108000000001000100083360300702c0a080000000010000c00ad360300 *10250e085b00000012000c00cb36030040210d080c00000011000c00f436030094f11108040000 *00110010000b3703009ce90b080300000012000c002d37030038d1110804000000110010005937 *030073fe0f081800000012000c0063370300a0a20f080800000011000c0076370300e801120804 *00000011001000993703006c400c081000000011000c00be3703001caa11080000000010001000 *ef37030088a8110800000000100010001a380300bcc40c080800000011000c003e380300300812 *080400000011001000633803007ce711080400000011001000833803008cb80f08200000001200 *0c008e380300a80b0c081000000011000c00a4380300a4fa0f089c03000012000c00b03803003c *ff0b080500000012000c00c738030050d111080400000011001000dc380300e8360f0808000000 *12000c00ef38030084030e080c00000012000c00083903002c4f0c080c00000011000c00303903 *00081c0b080000000010000c005d39030038130d081000000011000c007a39030034450c081000 *000011000c0095390300e0f90d080c00000011000c00ad3903003c360c081000000011000c00c5 *3903006cf011080400000011001000df390300bcea11080400000011001000063a0300f04b0708 *0000000010000c002b3a0300dcd20b08b700000012000c00463a030084160b080000000010000c *00813a0300383710080900000012000c00943a030040f011080400000011001000ad3a030044a2 *0d085600000012000c00d13a030050d011080400000011001000033b030014e00d080800000012 *000c00173b030014dc11080400000011001000333b03004c8c0b080000000010000c00673b0300 *80f411080400000011001000893b03009c1a08080000000010000c00b63b030068d51108040000 *0011001000e53b0300149e0f085b00000012000c00f93b03005c790f080c00000011000c00103c *0300e46710080800000011000c00253c0300805c10080800000011000c00323c0300b04b0c0822 *00000012000c005c3c03005cfd0e080800000011000c00733c0300000000003a00000012000000 *843c03007cda110804000000110010009a3c0300a8dc11080400000011001000b53c030014ac11 *080000000010001000e23c0300f8de0e082000000012000c000e3d030060d61108040000001100 *1000393d0300fcf111080400000011001000543d0300b05e0c080800000011000c00833d03006c *e90b080300000012000c00ae3d030048cf0b082000000012000c00c73d030008c4110800000000 *10001000f63d0300a8df0b080700000012000c000b3e030078930f085b00000012000c001f3e03 *0054920d080c00000011000c003b3e030008670a080000000010000c006f3e03004cda1008bf00 *000012000c00843e030098fb0b080c00000011000c009d3e0300b8c409080000000010000c00c8 *3e0300f0b409080000000010000c00fa3e030098c3110800000000100010002b3f0300ece41008 *0000000012020c00423f030054ed0b080300000012000c005a3f030058de0b080300000012000c *00793f030070b709080000000010000c00aa3f03008c8e0c080c00000011000c00bf3f0300f4e3 *0b081000000011000c00d73f03006cee09080000000010000c00fe3f0300c0d411080400000011 *0010001b40030044fd110804000000110010003e40030014910c080c00000012000c005c400300 *7001120804000000110010007f400300d86a0c080600000012000c00ac400300985d1008080000 *0011000c00bf40030038f611080400000011001000d740030020e311080400000011001000f340 *0300589f0b080c00000011000c001341030078b409080000000010000c00434103002c6b100808 *00000011000c0059410300806a0c081000000011000c008141030084c811080000000010001000 *b6410300c86b10083500000012000c00c9410300c4490f082300000012000c00ed41030058300a *080000000010000c00154203002caa110800000000100010004e42030008a30f085b0000001200 *0c006f4203001cd70e080800000012000c009942030068c411080000000010001000c6420300fc *0d05080000000010000c00e8420300145c0a080000000010000c002743030054e2110804000000 *110010005043030034f11108040000001100100067430300f0e410088301000012020c00704303 *0040fe0e085b00000012000c008843030014ec0b080c00000011000c009a430300dcbf11080000 *000010001000d0430300f0bb0b080800000011000c00ec430300d01805080000000010000c0015 *440300d85f07080000000010000c003644030040770a080000000010000c006544030098a81108 *00000000100010009244030084550f081000000011000c00a544030084cf0c085900000012000c *00bb440300246a0f080c00000011000c00d0440300c8ff11080400000011001000eb440300a4c4 *0c080300000012000c000f450300d01006080000000010000c0045450300d8080d080c00000012 *000c0059450300106510084900000012000c006e450300b0ff1108040000001100100086450300 *d0b609080000000010000c00b4450300846207080000000010000c00e245030028610708000000 *0010000c000546030084d3110804000000110010002146030008e00c081000000011000c003646 *030030d51108040000001100100051460300ac890a080000000010000c00834603000461070800 *00000010000c00af4603000c5f10084900000012000c00c3460300d80612080400000011001000 *d946030074f20e083100000012000c00fa46030070be0e083300000012000c000f4703003c3a10 *089c00000012000c00194703009c190e081800000011000c00394703001cdf1108040000001100 *10006c470300f89c0f085b00000012000c008e470300e43a10080c00000011000c00a447030048 *470f081000000011000c00c647030038990b080700000012000c00e447030020d1040800000000 *10000c000e480300801805080000000010000c0033480300949e0d080800000011000c004a4803 *005ca7110800000000100010007648030008560f081000000011000c0089480300aced0b080700 *000012000c009d480300a8930c082900000012000c00b548030014f10e082f00000012000c00cf *48030048e211080400000011001000ee48030068410c081000000011000c000e490300e4d61108 *0400000011001000384903007c9e0f080800000011000c0058490300f44f10082400000012000c *0066490300d8d20e080c00000011000c008d49030070cf0e081000000011000c00a6490300b8ba *0e080c00000011000c00c2490300acd011080400000011001000db4903008cdc11080400000011 *001000fe4903002ccd11080000000010001000314a03006ccc11080000000010001000624a0300 *30640f080c00000011000c00784a03003ce7110804000000110010009b4a0300fcd20e08540000 *0012000c00ca4a0300eccf11080000000010001000fe4a0300085307080000000010000c00204b *0300485d10080800000011000c00364b0300dcf5110804000000110010005c4b03003c490c080c *00000012000c00834b030058280e081800000011000c00ac4b030050d811080400000011001000 *c44b03002ccc11080000000010001000f44b03002c5f07080000000010000c00164c030078ec11 *0804000000110010004a4c03009cee11080400000011001000644c0300183c0c08460000001200 *0c008c4c030010a60f080800000011000c00ad4c030040c80b080700000012000c00c94c030090 *660f080c00000011000c00e84c030020f211080400000011001000054d030078ef110804000000 *110010001d4d0300ec8f0c080c00000011000c00314d0300ccdc11080400000011001000504d03 *0014040f080800000011000c006c4d030008010c082000000012000c00814d030010370b080000 *000010000c00ac4d0300ccad0d081000000011000c00d04d0300186207080000000010000c00fa *4d030035d204080000000010000c001a4e0300d8f511080400000011001000404e030010bd0908 *0000000010000c00784e0300ac2f10087000000011000c008d4e030080a60f081000000011000c *00af4e030038f90e080800000011000c00c64e0300fc880d082600000012000c00f84e030014db *11080400000011001000114f030064b211080000000010001000364f030090b509080000000010 *000c00674f03001c9f05080000000010000c00954f0300803b0e084b00000012000c00cb4f0300 *48a211080000000010001000f24f030054920d083d00000012000c000f5003000cd21108040000 *001100100025500300681605080000000010000c004f500300a4720f081000000011000c006850 *030008010c080c00000011000c007c500300dc070c081000000011000c0092500300e4d5110804 *00000011001000b05003000c2c0b080000000010000c00d350030000000000082c000012000000 *f0500300fddc0f081300000012000c00fb50030008880d082600000012000c0025510300e4a008 *080000000010000c005d510300885010085c00000012000c006f51030044120508000000001000 *0c00975103005c120e086000000012000c00aa51030000dd11080400000011001000ca51030068 *e311080400000011001000eb51030000000000be00000012000000ff510300a0f60c080c000000 *11000c001c5203008ce80b082600000012000c003e520300fc160b080000000010000c00775203 *00f0b205080000000010000c00a15203005c8b0e080c00000011000c00d4520300000000003a00 *000012000000e6520300605b0f080c00000011000c000253030070e40e085900000012000c0031 *53030094070e084500000012000c004d53030024c811080000000010001000845303003ccd1108 *0000000010001000b5530300604a0f080300000012000c00d2530300fcd40c080c00000012000c *00e953030078cb110800000000100010001d540300f4df0d080500000012000c00305403002ce4 *1108040000001100100047540300202f0c080c00000011000c0064540300d83b0c081000000011 *000c008b5403007cd00b082000000012000c00a4540300c01f0f080800000011000c00c0540300 *0cda11080400000011001000e1540300201005080000000010000c0000550300f0510708000000 *0010000c002655030030890b080000000010000c004d55030080060e080c00000011000c006355 *0300e0c7110800000000100010009455030094ed09080000000010000c00be5503007005120804 *00000011001000d4550300d8f011080400000011001000f7550300d8f70e085b00000012000c00 *0f560300280e0d081000000011000c0033560300e8b60a080000000010000c005e56030080b609 *080000000010000c00935603009cfa0e080800000011000c00aa56030000380e08590000001200 *0c00d7560300bc2d0c085f00000012000c00f056030090c3110800000000100010002657030070 *08120804000000110010004b570300a06107080000000010000c0076570300350510081b000000 *12000c008157030024cb0d080800000011000c009a570300589b0b080800000011000c00b95703 *006ce90b080800000011000c00e357030070e40e080c00000011000c0011580300c81b0b080000 *000010000c003f5803006ceb1108040000001100100065580300c4e4110804000000110010007b *580300c8d9110804000000110010009958030014c911080000000010001000c75803008cbf1108 *00000000100010000559030004b305080000000010000c002b590300cc6c0e080600000012000c *004f59030000330e081000000011000c007359030098c70c080c00000012000c008a5903006cdc *0b080600000012000c00a65903008c050d081700000012000c00c4590300bce711080400000011 *001000f059030040e311080400000011001000065a030044d811080400000011001000205a0300 *c03310080800000012000c00305a03008c9a0e085b00000012000c004b5a030010c80b082d0000 *0012000c00695a0300e0cc12088000000011001700725a0300c8fd0e080800000011000c00895a *030084cf0c080c00000011000c009e5a030048f60f088e00000012000c00ad5a0300f84110082f *00000012000c00c05a0300acff11080400000011001000d65a0300789a0b080700000012000c00 *f65a030030280e081800000011000c001f5b030094fb11080400000011001000395b030070c60b *080700000012000c005a5b0300ac1e06080000000010000c008c5b0300fccb1108000000001000 *1000c65b0300245108080000000010000c00fa5b0300ccf90b080c00000011000c00115c0300dc *cb0c080c00000011000c002d5c03001cbb0a080000000010000c00625c0300f4fe110804000000 *11001000785c03001cf611080400000011001000985c030014e411080400000011001000b35c03 *0068000b080000000010000c00e35c030098740a080000000010000c00135d030000b909080000 *000010000c00425d0300c09a04080000000010000c00515d030000000000530000001200000066 *5d0300ccbe0b083700000012000c007c5d03001dbc0f086000000012000c00855d030098e21108 *0400000011001000a85d030000e311080400000011001000c45d0300b8c5110800000000100010 *00ec5d030094ed09080000000010000c00155e0300f4fb0e085b00000012000c002d5e0300a0f5 *11080400000011001000515e0300080412080400000011001000675e0300583b0f080c00000011 *000c00815e03002cc50c080300000012000c00a25e030050c911080000000010001000dc5e0300 *f4370f083000000012000c00f75e03001c4307080000000010000c001e5f0300280810085f0000 *0012000c002b5f0300b4b6110800000000100010005f5f0300703310084700000012000c006c5f *0300b80512080400000011001000825f03005cab0e080c00000011000c00965f03007808120804 *00000011001000bc5f0300f4a90b080600000012000c00dc5f0300e0f10c080300000012000c00 *fa5f0300ccd011080400000011001000176003005c9f05080000000010000c004e6003004c6910 *081e00000012000c0064600300c8f2110804000000110010008b60030048fe1108040000001100 *1000a0600300d89d05080000000010000c00c7600300b4890f081000000011000c00e96003002c *2f0f085b00000012000c0005610300b0150e080c00000011000c0019610300c88f0b080c000000 *11000c003e610300e89905080000000010000c0071610300300312080400000011001000876103 *00ccfc110804000000110010009c61030054e90b080800000011000c00c061030094cc05080000 *000010000c00f46103006c2f0e080c00000011000c001d620300916207080000000010000c0049 *6203002af00f08c005000012000c005362030014990e080800000011000c006a620300fcef1108 *04000000110010008e620300d4120e082900000012000c00a4620300e8960f080800000011000c *00c4620300f0f311080400000011001000e7620300a8e511080400000011001000fd6203001cd3 *110804000000110010001663030000000000ec0000001200000027630300e49b0f081000000011 *000c004963030030d8110804000000110010006163030004bf0b080700000012000c007d630300 *5ceb11080400000011001000a3630300f4820d082000000012000c00bc63030038f01108040000 *0011001000d66303005c5206080000000010000c00ff63030054fd0d080c00000012000c002264 *03008c5f0d080800000011000c004f64030014c50c080800000011000c006b640300e4d0110804 *0000001100100084640300c86110080800000011000c009764030028850f081000000011000c00 *b964030090ea0e085b00000012000c00db64030040f711080400000011001000f5640300582d0c *080800000011000c0013650300f0730f085b00000012000c00346503006c650e08540000001200 *0c005b650300e8420e081800000011000c009065030048dc0b080300000012000c00ab6503003c *c611080000000010001000de65030058530f080c00000011000c00f3650300a4c5110800000000 *100010001f6603007c2010080c00000011000c003166030048a70e080800000011000c00466603 *00aebb0f080800000012000c005466030050f9110804000000110010006b66030098f70d080800 *000011000c0094660300604e0e085300000012000c00ba66030090860b080000000010000c00e3 *660300ccc10c080c00000011000c00fd660300a0ed09080000000010000c002367030074fb1108 *0400000011001000416703003c6110080800000011000c005467030090800c081000000011000c *0073670300a8160b080000000010000c00b1670300c05d10080800000011000c00ce670300d4a9 *0b080800000011000c00ec67030064c409080000000010000c002c680300985f10080800000011 *000c003f68030014b70e080c00000011000c00526803006c610c083600000012000c007f680300 *cc4210084b00000012000c0099680300145c0a080000000010000c00d7680300d0250a08000000 *0010000c0000690300d8910d083b00000012000c001969030010c409080000000010000c004e69 *0300f8060c080800000011000c006769030034b20b080c00000011000c00826903002cf50e080c *00000011000c00a0690300f4a10f085100000012000c00c36903005c6c0c089400000012000c00 *dd6903003c9f05080000000010000c00106a030014d411080400000011001000306a0300546d10 *080c00000011000c00426a0300380e10080c00000011000c00506a030040e81108040000001100 *1000786a0300945106080000000010000c00a26a030010070c08a900000012000c00b76a030014 *b305080000000010000c00df6a030008e8110804000000110010000b6b0300bcd3110804000000 *11001000266b030050c10b080700000012000c00436b030024e70f089a00000012000c00546b03 *00e2ba0f082000000012000c00616b03005c8b0e085400000012000c00956b0300e0d511080400 *000011001000be6b030048b90b080c00000011000c00d46b030078e00e086600000012000c0000 *6c0300cce1110804000000110010001f6c03000c9b0f080800000011000c00326c030054e90b08 *0300000012000c00576c030064c409080000000010000c00986c03008807120804000000110010 *00bb6c0300d8dc11080400000011001000da6c0300d4c3110800000000100010000d6d0300c8e3 *110804000000110010002f6d03005cc811080000000010001000636d0300d0e811080400000011 *001000926d0300f06a10080800000011000c00a86d0300d8130e080300000012000c00c46d0300 *40e911080400000011001000fc6d0300a8dd11080400000011001000286e0300c0e81108040000 *0011001000506e030010e111080400000011001000686e03004cc409080000000010000c009e6e *03008c4107080000000010000c00c26e0300f4780c080c00000011000c00e06e030038ff110804 *00000011001000056f0300b8fa110804000000110010002c6f030018f211080400000011001000 *486f030038b809080000000010000c00766f0300a46007080000000010000c009f6f0300304b07 *080000000010000c00cb6f0300081005080000000010000c00f56f0300b45e10080c0000001100 *0c000870030030f105080000000010000c0036700300b45e0f080800000011000c00497003002c *720e085b00000012000c0064700300f4cf110800000000100010009770030018cc050800000000 *10000c00c770030034a30b082000000012000c00e2700300a4000f084600000012000c00f77003 *0074bb0e080c00000011000c000b710300485a10081200000012000c001971030050640c080c00 *000011000c003f71030040790e081000000011000c006471030048c50c080c00000011000c007b *71030090e911080400000011001000b371030080380f081000000011000c00cd7103001cec1108 *0400000011001000f371030050ff0b080c00000011000c000b72030014300c087300000012000c *0020720300c4e90f089b00000012000c0031720300ec8e0f080800000011000c0044720300b881 *0f085100000012000c0067720300f0e01108040000001100100092720300dc880b080000000010 *000c00be720300080912080400000011001000e372030058cc1108000000001000100015730300 *74ea05080000000010000c0041730300f0860e081000000011000c0067730300609a0f08510000 *0012000c008a73030048200f085b00000012000c00a773030078ed11080400000011001000c173 *030028610f085400000012000c00dc730300e05e0c080800000011000c000c74030020770a0800 *00000010000c003b740300a4640a080000000010000c0079740300106b0a080000000010000c00 *aa740300480c1008e101000012000c00b774030090ec11080400000011001000dc74030038610d *081000000011000c00fa7403005c5f0d080800000011000c0028750300fce41108040000001100 *10004775030078b409080000000010000c007875030048d1110804000000110010008d750300a4 *190f080300000012000c00af750300ecf011080400000011001000cd750300f8c70c0810000000 *11000c00e1750300b8c3110800000000100010001176030054e911080400000011001000477603 *00086007080000000010000c00707603007ca81108000000001000100093760300c05b0f080c00 *000011000c00a7760300749f0c082900000012000c00c676030091c61008bf00000012000c00d6 *760300608a0f080800000011000c00e9760300f8e3110804000000110010000b77030054330e08 *0c00000011000c0037770300042005080000000010000c00607703000c390f083000000012000c *007877030000080d080c00000011000c008b77030008c80b080700000012000c00a87703002c17 *0b080000000010000c00e67703002c410a080000000010000c000f78030088250d080c00000011 *000c003f780300d89f06080000000010000c00677803001005120804000000110010008d780300 *b4ec0d081000000011000c00ac780300d8ec11080400000011001000cb7803002c410a08000000 *0010000c00f378030034c811080000000010001000297903004cae110800000000100010005979 *0300e4160b080000000010000c008d79030084ee0c080c00000011000c00a67903001cca0b080c *00000011000c00bb79030044e20b080c00000011000c00d37903007caa11080000000010001000 *0a7a030084230f085b00000012000c00397a03003ce411080400000011001000507a0300a8ed0b *080800000011000c006b7a0300c1bb0f081400000012000c00787a030014e00d08180000001100 *0c008b7a0300581c0e081000000011000c00b47a0300f0da11080400000011001000cc7a030054 *d511080400000011001000f17a0300d08d0f080800000011000c00117b030058e9110804000000 *11001000467b0300641c08080000000010000c00757b030068d3110804000000110010008c7b03 *00d46810081e00000012000c00a27b0300e8ed0c084300000012000c00c47b0300c4690c081000 *000011000c00e97b0300b0fa0d080c00000012000c00027c030020810a080000000010000c0033 *7c0300a0ac0e080c00000011000c00487c03005c760e081800000011000c006d7c03005c580e08 *9100000012000c00907c030008290e085400000012000c00b77c0300b8ff0c080c00000011000c *00d87c0300b4f90c082000000012000c00f57c030098d611080400000011001000257d030014f3 *11080400000011001000517d03008cef0c084300000012000c00737d0300d4890d080c00000011 *000c00997d030098c50c080c00000012000c00b37d0300d0620c080c00000011000c00e17d0300 *48af0b082300000012000c00fe7d030012c610087f00000012000c000e7e030074e50e080c0000 *0011000c00407e030010e511080400000011001000587e030030f105080000000010000c00877e *0300740e0a080000000010000c00af7e030058f911080400000011001000ca7e030048ef110804 *00000011001000e27e0300280d0c080800000012000c00f77e0300d0ff11080400000011001000 *0d7f030014d911080400000011001000277f0300a4e211080400000011001000487f03008cd711 *080400000011001000637f03005c5106080000000010000c00937f03009caa0f08080000001100 *0c00b37f0300b4ee09080000000010000c00db7f03006c8f0d080300000012000c00f67f03008c *c30b089500000012000c00138003000e3310080900000012000c002980030060f50e085b000000 *12000c003f800300d8e90b080300000012000c005a80030034ca0b080800000012000c006d8003 *00e04b0c080c00000011000c0097800300acb80f082000000012000c00a1800300f80312080400 *000011001000c68003009ce90b080800000011000c00e78003001c5210088e00000012000c00f3 *800300e4cd0f082a00000012000c0004810300605b0f085400000012000c002181030084cd0e08 *0c00000011000c003b810300d48d0c080c00000012000c00568103001cd2110804000000110010 *006b81030024510f080c00000011000c008881030098b40c088f00000012000c00a38103003c52 *06080000000010000c00d081030090200d080c00000012000c00fa81030040480c081000000011 *000c0013820300e88a08080000000010000c005082030004cc0d085b00000012000c0064820300 *3c360c082000000012000c007d820300c4e61108040000001100100098820300b0da1108040000 *0011001000b78203007b7310089100000012000c00c682030087c00f088a00000012000c00d282 *0300680712080400000011001000e8820300d0fd11080400000011001000058303002c210f0808 *00000011000c00288303005cab0e085400000012000c003d8303000ca90e080800000011000c00 *63830300c0950d085400000012000c007f830300806a0c083f00000012000c00a883030094c70e *081000000011000c00c683030090a10b080c00000012000c00e183030035190508000000001000 *0c0002840300e8ad1108000000001000100031840300b4e3110804000000110010004f840300fc *490f085900000012000c00648403007c1f0e085b00000012000c008784030064770c0808000000 *11000c00aa840300a0440a080000000010000c00d884030098e411080400000011001000ef8403 *0080eb0b080c00000012000c000685030020bc0b080300000012000c0023850300b46610080800 *000011000c0037850300c007120804000000110010004d850300e4fc1108040000001100100063 *850300541e0a080000000010000c008a8503001cc611080000000010001000b585030081bb0f08 *0800000012000c00c2850300aceb11080400000011001000e8850300e0da0b080c00000011000c *00fc85030030e51108040000001100100014860300b8de110804000000110010003c86030064b3 *05080000000010000c006c860300eaf50f081300000012000c007b860300b0610f080800000011 *000c009686030020220f080500000012000c00bf860300281f0c083700000012000c00d2860300 *a8be09080000000010000c0008870300ccdc0c080800000011000c001e87030050180508000000 *0010000c004a87030054b909080000000010000c007a870300848b08080000000010000c00b887 *03006c4410085400000012000c00cf870300ac5d10080800000011000c00e58703006899050800 *00000010000c000f88030060120d080c00000011000c004288030040dd0b080300000012000c00 *5d880300dc9b05080000000010000c008a8803000000000008000000120000009c88030098f011 *080400000011001000bb88030038500f082900000012000c00d388030000de1108040000001100 *1000f38803006c141208000000001100f1fffc880300009f08080000000010000c003889030064 *d4110804000000110010005689030034b305080000000010000c007e890300e86a0c0808000000 *11000c00ac890300680612080400000011001000cf890300145e07080000000010000c00f58903 *00b06010084900000012000c00098a030074070d080c00000011000c00208a030020b709080000 *000010000c00528a0300e43110081000000012000c00778a03000c2d0f080c00000012000c0099 *8a0300d4a90b080600000012000c00b88a0300146007080000000010000c00e28a0300d8670c08 *0c00000011000c00088b030008a30f080800000011000c00288b0300f84d0c080700000012000c *00478b0300809a0b086900000012000c00688b0300f0b20e085b00000012000c00858b03006171 *10089800000012000c00998b0300a02c0f080c00000011000c00b98b0300b4400a080000000010 *000c00de8b03002cd911080400000011001000f88b03001cc409080000000010000c00308c0300 *d4220d080c00000011000c00578c0300a0850b080000000010000c00808c0300ccb50c08100000 *0011000c009a8c030078f411080400000011001000bb8c030074320c084b00000012000c00d28c *03006c9b0e083700000012000c00ee8c0300f0220e080c00000011000c00038d03008cc9090800 *00000010000c002c8d030050b409080000000010000c005d8d0300605207080000000010000c00 *7e8d03002c1706080000000010000c00ae8d0300f0330a080000000010000c00d68d0300d07a0f *081000000011000c00f28d0300b0730e080800000011000c000e8e030038930c085b0000001200 *0c00228e030004d6110804000000110010004c8e0300b4c3110800000000100010007e8e030049 *bb0a080000000010000c00a18e030008b40b082f00000012000c00b78e0300d4440a0800000000 *10000c00e48e0300f0330a080000000010000c000d8f030050940f081000000011000c00308f03 *00d4df11080400000011001000548f0300f0400a080000000010000c007a8f030000f011080400 *0000110010009c8f0300acdb11080400000011001000b38f03004c8b0b080000000010000c00e4 *8f03004c4a07080000000010000c000f90030088f2110804000000110010003c900300c4840c08 *1300000012000c00649003004c2d0c080300000012000c00809003002cf70d080800000011000c *00a2900300000000008e02000012000000b2900300546d10085300000012000c00c59003007076 *0a080000000010000c00f2900300508508080000000010000c002d910300e4b511080000000010 *00100065910300fc0d05080000000010000c008691030018f111080400000011001000b0910300 *d4260e083000000012000c00e191030064da11080400000011001000f891030064e51108040000 *00110010001992030054900c080c00000011000c0038920300e48b0b080000000010000c006792 *030039fa0f082200000012000c0072920300c43f0a080000000010000c009c92030044c00c080c *00000012000c00b4920300dc7a08080000000010000c00ef92030054fc05080000000010000c00 *25930300d0a21108000000001000100048930300e4ee110804000000110010006c930300d0f511 *080400000011001000909303007c9e0f085b00000012000c00b193030091721008980000001200 *0c00c59303000cde0b083700000012000c00da930300546c06080000000010000c000694030054 *200e080c00000011000c0028940300b0e9110804000000110010004b940300ac490c0839000000 *12000c0067940300d46810080800000011000c007c9403004c810d085b00000012000c00989403 *00b8090d080c00000011000c00bc94030094360c080700000012000c00d894030048810f085b00 *000012000c00f994030010cc0e085b00000012000c001b95030020f80d080800000011000c0042 *950300a47b0c085900000012000c005995030060820e085600000012000c007c9503009cab0f08 *1103000012000c0085950300741e0d080a00000012000c009d950300acd7110804000000110010 *00c7950300b4ed0b084100000012000c00dc950300481405080000000010000c00fe95030018d4 *110804000000110010001796030018d20e080c00000011000c003896030054ff11080400000011 *00100055960300e0aa0c084b00000012000c00709603008cc40b080700000012000c008b960300 *141610080c00000011000c009a9603002c531008be00000012000c00aa9603007cae1108000000 *0010001000d796030080f70d080300000012000c00059703007c9f0d085b00000012000c002497 *0300f4e0110804000000110010004d970300c81305080000000010000c006d97030014bc0b0803 *00000012000c0087970300d4870b080000000010000c00b197030090200d080c00000011000c00 *da9703003c980c081800000011000c00ff970300a0d0110804000000110010001a980300f05f07 *080000000010000c0042980300645b10080800000011000c00559803009cdc0b08080000001100 *0c006e98030008d80e080c00000011000c0097980300282d0c080c00000011000c00af980300ac *d511080400000011001000d3980300e43b0f083000000012000c00eb980300cc3c0f0810000000 *11000c00ff98030094720e080c00000011000c001e9903000cf80b082300000012000c00379903 *0054ee110804000000110010004e9903003cd3110804000000110010006a990300488d0b080700 *000012000c008d99030060450f085b00000012000c00a1990300086b0c080600000012000c00d5 *990300e0470c081000000011000c00ee990300180112080400000011001000119a0300e8f41108 *0400000011001000349a0300a4830f081000000011000c00569a03004eb10f081f00000012000c *00629a0300c7b20f081100000012000c00719a030014240c080c00000011000c00899a0300a89c *0b080c00000011000c00b89a0300644107080000000010000c00e19a030058fa11080400000011 *001000009b03006cee09080000000010000c00289b0300f8210f080500000012000c00519b0300 *a4e9110804000000110010006e9b0300f01705080000000010000c00909b030084a10f08080000 *0011000c00b09b030054c40e082300000012000c00c59b030004a30d080c00000011000c00e59b *0300d8c80b082300000012000c00fa9b03009cc611080000000010001000259c03003cac110800 *00000010001000539c03008ca40f085b00000012000c00749c030094210d082300000012000c00 *9e9c030048dc0b080800000011000c00b89c03000c750f080c00000011000c00cd9c030020d311 *080400000011001000e69c030088df11080400000011001000199d030008e00c083d0000001200 *0c002f9d030094c40b084b00000012000c004b9d0300c8b005080000000010000c00749d0300d0 *9e0c083100000012000c008c9d03004cde0b080800000011000c00a79d0300dcb8120804000000 *11001700b39d0300cdb30f081d00000012000c00cb9d030070500f083800000012000c00e79d03 *00f4a90b080800000011000c00069e0300e8210e080c00000012000c001f9e0300e4e911080400 *000011001000459e0300583c0f083000000012000c005b9e03000c1c0e081800000011000c007c *9e0300c45f07080000000010000c00a09e030040d111080400000011001000b99e030068021208 *0400000011001000cf9e03001bf80f08a200000012000c00de9e03009c380e080c00000011000c *000c9f0300a4aa11080000000010001000499f0300bcdc11080400000011001000659f0300f0ee *110804000000110010007b9f03006c2f0e081300000012000c00a59f030030d411080400000011 *001000bc9f03007c9b04080000000010000c00d99f0300fc880d080c00000011000c000aa00300 *50f71108040000001100100024a003002cdc0b080800000011000c003fa0030030fc0d08100000 *0011000c0059a00300d4440a080000000010000c0085a00300501805080000000010000c00b0a0 *0300e43710080900000012000c00c3a00300e8c50c080c00000011000c00dca00300d460070800 *00000010000c0006a103004aba0f082800000012000c0012a10300b4400e082300000012000c00 *4ba10300e8d01108040000001100100068a1030070900f080800000011000c007ba10300b8ba0a *080000000010000c00b2a1030008e611080400000011001000d6a1030031701008980000001200 *0c00eaa103002c860d081800000011000c000ba20300b03d0d080500000012000c0034a20300f8 *c70c080c00000012000c0049a2030010f80d080600000012000c006ea20300d0ee110804000000 *110010008ba2030070960c080c00000011000c00aea20300b4650a080000000010000c00e2a203 *0074f20e081800000011000c0002a3030008290e080800000011000c0028a3030038f70d080800 *000011000c0057a30300204c0a080000000010000c0084a30300b05e0c080600000012000c00b4 *a3030014b305080000000010000c00dba30300d41005080000000010000c00fda30300205f0c08 *0800000011000c002ea4030058f70b080c00000011000c0045a403004c7c0c082300000012000c *005ca40300e42605080000000010000c0089a4030048e811080400000011001000b1a40300507a *0c088700000012000c00cca40300c8e111080400000011001000e4a403000d8a0a080000000010 *000c000fa5030060e61108040000001100100034a50300c8d6110804000000110010005da50300 *84e20f080e00000012000c006da50300d8fe1108040000001100100084a5030090ff0e080c0000 *0011000c0095a503002cb50f080d01000012000c009fa503001c6d0e080800000011000c00bca5 *0300c4c311080000000010001000eea50300204507080000000010000c001ca6030000cd0d0826 *00000012000c003ca60300ec040f085b00000012000c0059a6030094b10d082500000012000c00 *75a6030000b909080000000010000c00a3a6030078850b080000000010000c00cca6030098f411 *080400000011001000eea6030000970d080c00000011000c0004a70300586b0c08060000001200 *0c0036a70300c4840c080c00000011000c005da70300b4e90b080800000011000c0084a70300f4 *880b080000000010000c00aea7030014ab0e080500000012000c00c4a70300e4a1110800000000 *10001000f1a70300b0fb110804000000110010000ea80300205407080000000010000c002da803 *00846410080800000011000c0041a80300603310080800000011000c0050a8030020d711080400 *00001100100079a803007c1d1008f302000012000c0089a80300583e0e081000000011000c00bb *a803002c390a080000000010000c00e3a80300a4b812080c00000011001700f1a8030060f41108 *040000001100100018a90300dc070c080c00000012000c002fa903008ce80b080c00000011000c *0050a903005c8c0b080000000010000c007ba90300b6b20f081100000012000c0089a90300d0e0 *11080400000011001000ada90300a0e411080400000011001000c4a9030034ca0b080c00000011 *000c00d6a90300f0b812080400000011001700e0a90300d4dc11080400000011001000f8a90300 *70df0b080700000012000c0011aa0300185e10082f00000012000c0025aa03002c060d08170000 *0012000c0043aa030050cc1108000000001000100075aa030068a711080000000010001000a0aa *030030dd0b080800000011000c00bbaa0300f81e0b080000000010000c00e8aa030001bc0f081c *00000012000c00f4aa030030e3110804000000110010000aab0300a89a04080000000010000c00 *1bab030014f61108040000001100100033ab030078210c081000000011000c004fab030058db0b *080c00000011000c0065ab0300d5bb0f081400000012000c0073ab03002c210e085b0000001200 *0c0096ab0300e8830e080c00000011000c00b9ab0300016f10089800000012000c00cdab03009c *e01108040000001100100001ac0300d0620c081100000012000c0030ac0300000000007c000000 *1200000041ac03000c5a10080c00000011000c0055ac0300ece61108040000001100100075ac03 *0000880c082300000012000c009cac030024c711080000000010001000c7ac030058b609080000 *000010000c00f6ac0300bcf10c080300000012000c0016ad030050f0110804000000110010003d *ad0300e4c10b080c00000011000c0061ad0300f4d7110804000000110010008aad03005c890c08 *5f00000012000c009ead0300b06010080800000011000c00b1ad0300f8d1110804000000110010 *00c6ad0300d1e60f080100000012000c00d9ad03003ab40f080b00000012000c00ebad0300e059 *10080c00000011000c0000ae0300d0e00f080100000012000c001aae0300e85307080000000010 *000c003bae030028fc1108040000001100100059ae03007cb2110800000000100010007fae0300 *88ff11080400000011001000a3ae0300646207080000000010000c00cbae030060f51108040000 *0011001000eeae03007c660a080000000010000c0026af0300d8b11108000000001000100055af *0300e0930f085b00000012000c0076af030038c50c080300000012000c009aaf030038d7110804 *00000011001000c7af03007cf311080400000011001000f8af0300246010084900000012000c00 *0cb0030054540f082000000012000c0020b0030028c409080000000010000c0055b00300f8cf11 *0800000000100010008ab00300903810081400000012000c0098b0030060180508000000001000 *0c00bdb00300fce611080400000011001000ddb00300bc110d080800000011000c0006b10300d0 *cf110800000000100010002fb10300542d0b080000000010000c005bb103007c0a0b0800000000 *10000c0087b10300b8fb05080000000010000c00b7b10300941a0f085b00000012000c00d4b103 *0054060c080c00000011000c00f1b10300f47e0f080800000011000c0003b203005c5f0d080600 *000012000c0032b2030004700f081000000011000c0047b20300bcb61108000000001000100078 *b2030088310c080700000012000c008ab203005c170b080000000010000c00b6b203001c610708 *0000000010000c00dfb20300f86c10084d00000012000c00f2b20300ccb8120804000000110017 *0003b3030010250e080800000011000c0020b30300085307080000000010000c0043b3030034e3 *0e085900000012000c0072b3030028c60e085b00000012000c008fb30300308a0d080500000012 *000c00b0b30300a4170b080000000010000c00e2b30300f0620c084f00000012000c0011b40300 *2c0f0c080c00000011000c0030b40300f8aa0f088800000012000c0041b40300c4fc0b080c0000 *0012000c005bb4030094990b089500000012000c007eb4030020d21108040000001100100098b4 *0300f4fe0f082f00000012000c00a7b40300a4190f080800000011000c00c8b40300c0e7110804 *00000011001000f4b403002c9b0d080800000011000c0010b503006ced0b080800000011000c00 *28b50300041405080000000010000c0049b503008c3010087000000011000c0059b50300b8810f *081000000011000c007bb50300cce3110804000000110010009db50300504b0c08540000001200 *0c00c6b5030068c311080000000010001000f8b50300bcb81208040000001100170005b6030000 *0000003f0000001200000017b60300e806120804000000110010002db6030054dd110804000000 *1100100046b6030054cf1108000000001000100071b6030004c50c080800000011000c0095b603 *0060680f083000000012000c00b7b60300e06007080000000010000c00e2b6030090e511080400 *000011001000f7b60300e81f0e085b00000012000c001ab703003dc50f080f00000012000c0023 *b70300f42e0c080c00000011000c003db7030094fe0d085b00000012000c005ab7030074dd0b08 *0300000012000c0078b70300a4e11108040000001100100096b70300604510082400000012000c *00a7b7030010f011080400000011001000beb703007cfb0e080800000011000c00d5b7030054fd *0d081000000011000c00f7b70300f4a10f081000000011000c0019b8030030e211080400000011 *0010003fb803000ce4110804000000110010005bb80300ac750d080c00000011000c007cb80300 *08db110804000000110010009ab80300346207080000000010000c00bfb80300e8d50d08290000 *0012000c00e1b8030008860b080000000010000c000eb9030028ff0e085b00000012000c0026b9 *030064db110804000000110010003db90300988e0b083200000012000c0069b9030024ec090800 *00000010000c009eb90300d4d411080400000011001000b9b9030044d50e080c00000011000c00 *e4b9030044d10e085b00000012000c00fab90300ec6c0e080800000011000c001cba0300d0ed11 *08040000001100100035ba030004f8110804000000110010004cba030060b90c08180000001100 *0c0067ba030008a204080000000010000c0091ba0300749b0f085b00000012000c00b2ba030000 *0012080400000011001000d5ba03008c3d0d082300000012000c0005bb030050d3110804000000 *110010001cbb0300846410084900000012000c0031bb03004800120804000000110010004bbb03 *003cb90a080000000010000c0080bb0300c86b10080c00000011000c0092bb0300bcf70f085f00 *000012000c00a4bb0300e4840c080c00000011000c00cebb0300c4440a080000000010000c00f8 *bb03004002120804000000110010001dbc030060f70e085b00000012000c0035bc03002cda0b08 *0c00000012000c004abc0300c8a21108000000001000100074bc03000000000071000000120000 *0085bc0300ec240d081300000012000c00afbc030018f511080400000011001000d2bc0300ccc4 *0c080600000012000c00fcbc0300e0da1108040000001100100014bd0300345308080000000010 *000c0044bd03000ca81108000000001000100071bd0300281a0f085b00000012000c008ebd0300 *40140f080c00000011000c00a2bd0300000f0a080000000010000c00d4bd0300ecf30e08080000 *0011000c00f2bd030014f10e081000000011000c000bbe030004e0110804000000110010002cbe *030024e90b080600000012000c0051be0300d8e90b080800000011000c006bbe030068fc110804 *000000110010008cbe030030de11080400000011001000a5be030094c805080000000010000c00 *d3be030084f211080400000011001000f7be03008db305080000000010000c001ebf0300fcb10f *082a00000012000c002cbf0300b8f4110804000000110010004ebf030084250e08080000001100 *0c006bbf0300b42d0c080700000012000c0083bf030064770c080600000012000c00a7bf030090 *d811080400000011001000c9bf0300d0c311080000000010001000febf030050810c080c000000 *11000c001bc0030080dd0b080300000012000c0035c00300a0ec10080400000011000e003cc003 *004fee0f08db01000012000c0047c0030074f70d080300000012000c006ec0030020d811080400 *0000110010008bc0030078d211080400000011001000a6c00300a4bf11080000000010001000e7 *c00300ecb00d085700000012000c0010c103009c8c0b08a900000012000c0029c1030030180508 *0000000010000c004ec10300805e10080c00000011000c005fc1030058d7110804000000110010 *0080c103009c640c084000000012000c00a7c103005c6007080000000010000c00d1c10300109b *04080000000010000c00e1c103003cb60f082601000012000c00ebc103007cb111080000000010 *00100015c20300000000005c0000001200000026c20300c4b60e080c00000012000c0041c20300 *4ca7110800000000100010006fc203005cf3110804000000110010009ec203008cb00b080c0000 *0011000c00b2c2030058c409080000000010000c00f0c20300d40f0c080c00000011000c000dc3 *0300106107080000000010000c0033c30300ec9e0f085100000012000c0056c30300fc190b0800 *00000010000c0081c30300a5bb0f080900000012000c008fc30300a8a50f080800000011000c00 *a2c30300ccc311080000000010001000d3c3030061ed0f085e00000012000c00e0c30300e8e411 *080400000011001000fac303005c2d0c080700000012000c0010c40300ec230f085b0000001200 *0c0032c4030080e3110804000000110010005cc403005c320a080000000010000c0083c4030040 *f50d082000000012000c009dc403005cfe11080400000011001000b5c40300fc8c0c080c000000 *12000c00cec40300381e0e080c00000011000c00efc40300a8930c081000000011000c0006c503 *0014b1110800000000100010002ec50300a8d71108040000001100100053c50300b44107080000 *000010000c0077c5030074aa11080000000010001000abc5030004a80f081000000011000c00cd *c50300f48e0c080c00000011000c00e2c5030034840c080c00000011000c000ec603002cf50b08 *2500000012000c0023c60300dc6107080000000010000c004cc60300b4010f080c00000011000c *0060c60300e8ee0d080c00000011000c007bc6030090640f080c00000011000c0091c60300e4e3 *11080400000011001000bcc6030000000000d400000012000000cec603002cec11080400000011 *001000f4c60300c8230d080c00000011000c001dc70300e8071208040000001100100042c70300 *48910f085100000012000c0065c703004c330e080800000011000c0096c7030028f31108040000 *0011001000c2c70300fcc309080000000010000c0002c8030078ff110804000000110010001bc8 *0300695810080600000012000c0034c80300f0440c082d00000012000c004cc80300d8da0e0820 *00000012000c0078c8030080760f084a00000012000c008ec8030090640f082000000012000c00 *a5c80300ec1908080000000010000c00d5c80300b8df1108040000001100100001c903004cd111 *08040000001100100019c9030038e00d083000000012000c0045c90300a0c31108000000001000 *100078c903004c4f0f082f00000012000c0096c90300743b0f081000000011000c00aec903009c *1c0f085b00000012000c00cbc9030000000000bc00000012000000e3c90300acb00e080c000000 *12000c00fbc9030070e81108040000001100100023ca0300dcbc0f088000000012000c002eca03 *0058820d080c00000011000c004eca030032b40f080800000012000c005fca0300c0fb0d080c00 *000012000c0074ca0300c8600d085b00000012000c009aca0300fcd40c080c00000011000c00b0 *ca0300bcc90b080800000012000c00c3ca0300e0b509080000000010000c00f7ca0300e49b0f08 *5100000012000c001acb03005cfb1108040000001100100036cb030034450a080000000010000c *0061cb0300fce809080000000010000c0094cb03004cd411080400000011001000b2cb03000c6d *0e080800000011000c00d2cb030034dd0b080400000011000c00edcb030018cc11080000000010 *0010001ecc030014fd1108040000001100100041cc030038c50c080800000011000c0064cc0300 *60dd1108040000001100100083cc030000000000230000001200000096cc030006b810088e0200 *0012000c009ecc03004cc10c080c00000011000c00b6cc0300000000005a00000012000000c6cc *030005be0f088000000012000c00d5cc030080b20e080c00000011000c00f1cc03000047070800 *00000010000c0013cd0300dc1705080000000010000c003ecd0300908c0c080c00000011000c00 *56cd0300e45c10080800000011000c0067cd03002007120804000000110010007dcd03001c140a *080000000010000c00a2cd03009cbb0f080900000012000c00afcd03004fb00f081f0000001200 *0c00bccd030020db11080400000011001000dacd030050dd0b080800000011000c00f6cd0300d0 *03120804000000110010000cce030024be0b082300000012000c0022ce0300b013050800000000 *10000c004bce030000000000f6000000120000005dce0300e4a90b080600000012000c007ace03 *00c46d0e085000000012000c00acce0300fcfa0d080c00000011000c00c1ce0300f8e811080400 *000011001000f2ce0300bca21108000000001000100016cf0300d8910d080c00000011000c002e *cf0300248e0b080700000012000c004dcf030038950d082f00000012000c0069cf0300285f0c08 *0700000012000c0095cf030068e111080400000011001000afcf0300f0e8110804000000110010 *00e0cf03006ccd1108000000001000100009d0030004b70d081800000011000c002dd00300a8ff *1108040000001100100044d00300b86107080000000010000c006cd00300c84f0f082900000012 *000c0080d0030028480e080c00000011000c00acd0030028110e086000000012000c00bfd00300 *d0b40b080c00000011000c00d9d003005ceb09080000000010000c0007d1030074d60e08540000 *0012000c002fd103005cf70d080300000012000c0058d10300002d0c080c00000012000c0072d1 *0300487e0f081000000011000c0094d1030098170b080000000010000c00d0d10300a5031008a6 *00000012000c00dbd10300d6f60f085f00000012000c00eed10300f0f60d080300000012000c00 *15d20300b0d91108040000001100100032d203002c5f07080000000010000c0055d20300d8b20f *084400000012000c0064d2030018c70b080700000012000c0086d20300b4580f08200000001200 *0c009cd2030000000000df00000012000000aed20300888f0d080c00000011000c00c3d20300b4 *440a080000000010000c00f2d2030010f41108040000001100100015d303002cf50b080c000000 *11000c0029d3030030170c087200000012000c0045d303007cd31108040000001100100060d303 *0080940b083200000012000c0087d303006c4a0c082300000012000c00a5d30300ba5e10080500 *000012000c00b2d3030068f411080400000011001000d6d303009c5110088000000012000c00ea *d3030068c409080000000010000c000ad40300708b0c080c00000012000c0020d40300a42d0c08 *0300000012000c0040d40300e8b60a080000000010000c006cd4030078d5110804000000110010 *0096d40300accc0b080c00000011000c00acd40300746007080000000010000c00d3d403008004 *0f085b00000012000c00f0d4030084990e085b00000012000c0008d503007ca10d080c00000011 *000c0029d50300d0e30c081000000011000c003dd50300f0160b080000000010000c0066d50300 *d8300c080300000012000c0080d50300bc3b10080800000012000c008fd503000cdc1108040000 *0011001000b3d5030084d011080400000011001000cfd503001ce811080400000011001000fbd5 *030034fa0d080c00000012000c001ad6030014760d081000000011000c0039d6030094bf110800 *0000001000100076d603005cdb0c081000000011000c0092d6030004d10b080c00000011000c00 *abd60300500912080400000011001000cad60300fcba0a080000000010000c00fed603005c260e *080800000011000c001bd703002ceb1108040000001100100041d70300e0470c08300000001200 *0c005bd7030068d91108040000001100100078d703000c8c0b080000000010000c00aad703002c *4207080000000010000c00d0d703003c8d0d080c00000011000c00fad70300f0dc0b0806000000 *12000c0012d8030094f70a080000000010000c0043d8030050e21108040000001100100066d803 *0004a70b080300000012000c008fd8030094cb0b080c00000011000c00a5d80300101f06080000 *000010000c00d9d8030080ec0b080c00000012000c00ecd80300a0b11108000000001000100018 *d9030084a40e085b00000012000c002ed9030048fb0c080f00000012000c0049d90300e48b0b08 *0000000010000c0079d903003c330e080800000011000c00a5d9030070b2110800000000100010 *00ccd903009cff11080400000011001000e4d903002ca71108000000001000100014da0300f49a *0b084b00000012000c0033da0300f8a60b080800000011000c0058da0300e43110080c00000011 *000c007cda030048020f085b00000012000c0097da030054160b080000000010000c00c8da0300 *1cb00c081000000011000c00e1da030014cc1108000000001000100010db03006cff0d080c0000 *0012000c002edb0300048e05080000000010000c005bdb0300c4f50d080c00000011000c0074db *0300d0630f082f00000012000c008bdb030010f511080400000011001000aedb030088310f080c *00000011000c00c8db03001c9f05080000000010000c00f7db030098d911080400000011001000 *13dc03008cff1108040000001100100037dc03006cd31108040000001100100051dc030050760a *080000000010000c0082dc0300e0b111080000000010001000a7dc030000000000360000001200 *0000b9dc03006cdc11080400000011001000d1dc030090d111080400000011001000eddc0300c0 *b812080400000011001700fadc0300dc4107080000000010000c0023dd030018220f0808000000 *12000c004ddd030008be09080000000010000c007fdd0300d06107080000000010000c00a9dd03 *002c2f0f080800000011000c00c4dd0300b8fc11080400000011001000e5dd0300dc050d080c00 *000011000c0005de030060b809080000000010000c0034de03004c1810080c00000011000c0044 *de030038041208040000001100100069de0300d4530f085900000012000c007fde03001ca70d08 *1000000011000c009cde030044c911080000000010001000ccde0300e0a2110800000000100010 *00f9de0300c09a04080000000010000c0009df0300e8f91108040000001100100029df0300acd8 *0c080c00000011000c0043df0300b82f0e085200000012000c006ddf030014df0c081000000011 *000c0081df0300a8d81108040000001100100099df030094a11108000000001000f1ffaadf0300 *f0f70d080600000012000c00cedf0300dce00b080600000012000c00f2df0300546c0608000000 *0010000c001de00300d8900f080800000011000c003de003003cf01108040000001100100055e0 *030010960c080c00000011000c006de0030024f61108040000001100100086e0030044ec090800 *00000010000c00bbe00300285f0f081800000011000c00e4e00300000000003a00000012000000 *f9e00300c0680f083000000012000c001de1030010e9110804000000110010004ee10300bc900d *080c00000011000c0063e10300d0df110804000000110010008de10300201d0b08000000001000 *0c00bce103007dd710087700000012000c00c8e10300f0ff11080400000011001000ebe10300e4 *f01108040000001100100002e2030060f31108040000001100100030e203005861070800000000 *10000c0058e20300e85307080000000010000c007ae203004805120804000000110010009de203 *0068ab0d084400000012000c00bee20300b80412080400000011001000e1e20300bcc90b080c00 *000011000c00f3e20300d01f06080000000010000c0029e3030080d5110804000000110010004e *e3030024510f082f00000012000c006ce303001ccd11080000000010001000a0e3030044331008 *0900000012000c00b6e3030090560f082000000012000c00cce303006ce1110804000000110010 *00e8e3030050b21108000000001000100010e40300cc1d0e085b00000012000c0032e40300b01b *0d080c00000011000c004fe4030004c61108000000001000100080e403000c6207080000000010 *000c00a7e4030028f111080400000011001000bfe403000c3b0e080c00000011000c00ede40300 *887c0c081000000011000c000ce50300083a10080c00000011000c001be50300e4f21108040000 *001100100049e5030008b40b080c00000011000c005ee50300746207080000000010000c008ae5 *030014cb0b080c00000011000c00a1e5030099c810081b00000012000c00b0e503006c4d100895 *00000012000c00c2e50300f4970d080c00000011000c00d9e50300f01e0d082300000012000c00 *f3e50300a8de110804000000110010001fe6030044890c080800000011000c0046e603005cdd0b *080800000011000c0065e60300d4c61108000000001000100092e6030034610708000000001000 *0c00b7e60300a0a104080000000010000c00e0e60300e06210084900000012000c00f4e60300e0 *e10b080c00000011000c000ce7030030330b080000000010000c003ae703004cd8110804000000 *1100100052e70300185005080000000010000c0080e70300f83b0a080000000010000c00aae703 *00088f0d080c00000011000c00bde70300bc8c0f085100000012000c00e0e7030090c60e08bc00 *000012000c00f7e70300186207080000000010000c0020e80300e4ab110800000000100010004b *e8030058d50c080c00000011000c0061e80300c8890c080c00000011000c007be8030058d11108 *040000001100100095e80300000000009c00000012000000a7e80300c4db110804000000110010 *00c7e803007f0210086700000012000c00d5e8030098ef11080400000011001000ede80300b861 *07080000000010000c0016e90300575810080600000012000c002fe90300e8d311080400000011 *0010004ee90300a01f0c085500000012000c0063e9030068bb1108000000001000100099e90300 *acb111080000000010001000bae903009ca911080000000010001000efe903007c060d080c0000 *0011000c0014ea030010dd0b080800000011000c002bea0300b7b40f087200000012000c003eea *0300b0e20b081000000011000c0056ea0300045206080000000010000c007eea030050f4110804 *00000011001000a2ea030008e411080400000011001000c2ea0300f8e411080400000011001000 *e1ea03009c270b080000000010000c0007eb0300382c0f080c00000011000c0029eb0300d0d611 *08040000001100100053eb0300cce6110804000000110010006aeb030050a40b082f0000001200 *0c0086eb0300381d0a080000000010000c00b0eb0300ec9f0d080c00000011000c00d4eb0300c8 *8a0f080800000011000c00f4eb0300046b0f081000000011000c0009ec030045b40f0872000000 *12000c001dec030068170b080000000010000c004aec030048061208040000001100100060ec03 *00641b0f080800000011000c007cec0300d0130f085b00000012000c0098ec0300a80812080400 *000011001000bbec0300a4a911080000000010001000e9ec03003c6507080000000010000c0017 *ed0300405307080000000010000c003bed03003c860f080800000011000c005bed0300a0f60c08 *0c00000012000c0079ed0300b0e41108040000001100100090ed03000c9f05080000000010000c *00c0ed0300c8e511080400000011001000d8ed030080510f080c00000012000c00ebed030014cf *0c080c00000011000c0000ee0300b8ef1108040000001100100018ee0300844510086000000012 *000c002bee0300945106080000000010000c0056ee0300e81310080c00000011000c0065ee0300 *8cc30e081000000011000c0079ee030038f311080400000011001000a0ee030058230e080c0000 *0012000c00b6ee0300583b0f080800000012000c00d1ee0300c8d211080400000011001000f5ee *030000000000940000001200000007ef0300b4250f080c00000011000c0029ef03008005120804 *000000110010003fef0300e02a0e081800000011000c0068ef030014f111080400000011001000 *87ef0300f4e311080400000011001000adef030008d011080400000011001000d7ef0300e8210e *081000000011000c00efef0300c0c50e080800000011000c0001f003003ceb1108040000001100 *100027f00300004e0c087d00000012000c0047f0030004de0b080700000012000c005bf0030020 *f5110804000000110010007ef00300d4390f084b00000012000c009cf003000cf6110804000000 *11001000b1f0030010cb0c080c00000011000c00c5f00300d4430c081800000011000c00e6f003 *000cdd110804000000110010000ef1030020170b080000000010000c004cf10300d8900f085b00 *000012000c006df10300f8c41108000000001000100099f103006c5910080c00000011000c00af *f1030060de11080400000011001000dbf10300e77510081300000012000c00e6f103007c510608 *0000000010000c000ff203005c7f0f080800000011000c0022f20300382c0f085b00000012000c *0045f203005cd00c082800000012000c0068f2030044fe110804000000110010007df203005ce4 *110804000000110010009cf2030038cd0b082000000012000c00b5f20300b4160b080000000010 *000c00eef2030040790e082e00000012000c0014f30300248e0c080c00000011000c0029f30300 *40d81108040000001100100044f30300a05e0c080800000011000c0070f30300c4f20b08100000 *0011000c0087f303001ca90e080300000012000c00acf3030004ff0d080c00000011000c00c8f3 *03003ae80f08e300000012000c00def3030004140e080800000011000c00f0f303001ab40f080b *00000012000c0002f40300546210080800000011000c0015f4030060b111080000000010001000 *39f4030090e41108040000001100100057f4030000f4110804000000110010007af4030034a90e *080800000011000c009ff40300ac5f0d080600000012000c00cef4030004dd0c085b0000001200 *0c00e3f40300b01b0d080c00000012000c0001f50300dc320c083800000012000c001df503004c *8c0b080000000010000c0050f503005d5810080600000012000c0069f50300c8b4090800000000 *10000c0099f503008cf70d080300000012000c00bef50300f4820d080c00000011000c00d6f503 *0080d811080400000011001000edf50300f4e60e080c00000011000c000ff60300dc330e081000 *000011000c003af6030040b509080000000010000c006df603004cf11108040000001100100084 *f60300b0150e086e00000012000c0099f6030060d511080400000011001000b4f6030040cc1108 *0000000010001000e0f6030048e91108040000001100100013f703008cef0c081000000011000c *0034f70300d8b809080000000010000c0068f703005c4807080000000010000c0092f70300f863 *10084900000012000c00a6f7030050c71008b900000012000c00b4f703003c5f0d080800000011 *000c00ddf7030014d211080400000011001000f2f7030088021208040000001100100017f80300 *c0030e081000000011000c002ef803004ce01108040000001100100050f8030000620708000000 *0010000c0079f8030060740f085100000012000c009cf80300804b07080000000010000c00bdf8 *0300784305080000000010000c00f1f80300d8130e080800000011000c000cf9030080f4090800 *00000010000c003af90300ec6b0a080000000010000c006df90300e43710080c00000011000c00 *81f90300e8001208040000001100100097f903003c1e0f080c00000011000c00b4f90300645a10 *080800000011000c00c1f9030004ff11080400000011001000edf90300a8f91108040000001100 *10000cfa030040bd0c080500000012000c0028fa0300dca50e080800000011000c003dfa0300e0 *000d080c00000011000c005dfa030054970c080800000011000c0074fa030090300c0803000000 *12000c008cfa030054070a080000000010000c00b4fa0300dc140e080c00000011000c00c9fa03 *007c9f0d080800000011000c00e7fa0300e4050c080300000012000c0004fb0300d4a00e085b00 *000012000c0018fb0300780b0e081000000011000c002dfb0300408e0f085100000012000c0050 *fb030024ac0e080c00000012000c0068fb030020670c080c00000011000c008efb030004d21108 *0400000011001000a5fb030098b709080000000010000c00d3fb0300282810080c00000011000c *00e7fb030044b305080000000010000c0017fc0300a8a21108000000001000100042fc03007c77 *0c080700000012000c0057fc030008de1108040000001100100077fc0300b45106080000000010 *000c009efc0300dc050d081700000012000c00bffc0300f0cb11080000000010001000ebfc0300 *a8b609080000000010000c001efd0300d8ce110800000000100010004cfd0300bc8c0f08100000 *0011000c006efd030068f3110804000000110010009cfd0300f0e311080400000011001000c0fd *030078340d081800000011000c00eafd030000000000ad00000012000000fefd03006860070800 *00000010000c002afe030068f5110804000000110010004dfe03005c210c080c00000011000c00 *67fe030060b30e080c00000011000c0083fe0300fcea11080400000011001000aafe03003cb90a *080000000010000c00e0fe0300785307080000000010000c0004ff030038bb0f08270000001200 *0c000eff03007ceb1108040000001100100034ff030048df110804000000110010005cff030024 *c60b080700000012000c007eff0300689d0b086900000012000c009cff030028f4110804000000 *11001000bfff03006cd711080400000011001000deff030034c409080000000010000c00160004 *00a4a11108000000001102100023000400707d0f085b00000012000c0044000400bccf11080000 *0000100010006f000400e40c05080000000010000c008f0004006cfe11080400000011001000a7 *000400dcd50e085400000012000c00d0000400fcec11080400000011001000f400040088730f08 *0800000011000c0014010400f0f10c080800000011000c002901040024910d080c00000012000c *003f0104007cd6110804000000110010006f01040018b509080000000010000c009f01040090c5 *11080000000010001000c8010400745a10080800000011000c00dc010400305510087300000012 *000c00ee010400f89c0f080800000011000c000f02040070e31108040000001100100025020400 *d8990d085300000012000c003c0204005cc6110800000000100010006502040004fd1108040000 *00110010008f02040024dc0b080800000011000c00aa02040061b30f080f00000012000c00b402 *040070d911080400000011001000c902040064ec11080400000011001000e60204008c3d0d0810 *00000011000c0015030400609d0b080700000012000c0032030400ec3e1008c700000012000c00 *4003040048bf0c083200000012000c005e0304007cea1108040000001100100084030400f4ad0e *080c00000011000c009a030400942c0a080000000010000c00c403040058d21108040000001100 *1000df03040098fc11080400000011001000fa0304006caa0d080500000012000c001c04040048 *f8110804000000110010003a04040008dd110804000000110010005a040400688d0c080c000000 *11000c007104040054770c080600000012000c009204040024770c080600000012000c00b40404 *0044d311080400000011001000ce04040064480f085100000012000c00f1040400acd211080400 *0000110010000b050400f0dd0c080c00000011000c0023050400b8a20b080c00000011000c003c *05040000080d080c00000012000c0050050400d8d8110804000000110010006a05040098fb0b08 *2300000012000c0084050400346c0b080000000010000c00ab05040050b70a080000000010000c *00d9050400819b04080000000010000c00f7050400d08c0d080c00000012000c0022060400f8e8 *0b080300000012000c0043060400cc9e05080000000010000c007006040090ed0b080300000012 *000c008c060400206810081e00000012000c00a206040004d10b085100000012000c00bc060400 *7cdf11080400000011001000e6060400fc6c0e080800000011000c000307040024910d080c0000 *0011000c0018070400dcdb110804000000110010003c07040011c10f081301000012000c004407 *04008c2f0e081300000012000c006e070400541d0d080c00000011000c008b07040074bd0b0810 *00000011000c00a70704002c9f05080000000010000c00d807040008f211080400000011001000 *fc0704003c980c08b900000012000c0022080400f0790c080700000012000c0037080400ec0e0c *081000000011000c005a080400a4c40f084700000012000c0065080400408e0f08100000001100 *0c008708040078810e080800000011000c009e080400048e05080000000010000c00ca080400dc *6c0e080600000012000c00ea08040044770c080600000012000c000c090400e445100851000000 *12000c00200904001ceb09080000000010000c00430904007cc811080000000010001000780904 *0018a90f080800000011000c009809040048d711080400000011001000b4090400d0d511080400 *000011001000d00904001c620c080c00000011000c00fd09040014c61108000000001000100028 *0a0400d4eb09080000000010000c005a0a040030b609080000000010000c008a0a0400e8e31108 *0400000011001000ac0a0400b4c511080000000010001000d50a040090d5110804000000110010 *00020b040014450a080000000010000c002f0b0400689905080000000010000c005a0b0400fcab *11080000000010001000850b0400e0eb10085000000012000c00950b0400a0210f080800000012 *000c00be0b040068dd0b080300000012000c00d90b04003c4c10089500000012000c00eb0b0400 *b4fa11080400000011001000170c040044d50c080800000012000c00330c0400ac610708000000 *0010000c00640c0400a8fa0c084d00000012000c007e0c040008a80b080c00000011000c009c0c *040078ad0e080c00000011000c00b10c04004c170d081000000011000c00d70c0400d0ee090800 *00000010000c00fd0c0400e04b0c080c00000012000c00280d0400a0b409080000000010000c00 *580d0400cc020f080800000011000c00730d0400888505080000000010000c009e0d0400b8ad0b *080c00000012000c00b50d040010ef11080400000011001000cc0d0400cc8b0e08260000001200 *0c00f90d0400e89a0d080c00000011000c000c0e040048bf0c080c00000011000c00290e040054 *d3110804000000110010003f0e040018310f080c00000011000c00590e040040ef0d080c000000 *11000c007d0e0400a8e311080400000011001000980e04005cec11080400000011001000b50e04 *005c4807080000000010000c00de0e0400581705080000000010000c00060f0400d8d20e081900 *000012000c002e0f0400a4dd11080400000011001000540f040000000000190200001200000069 *0f04006c7508080000000010000c00a20f0400941e0b080000000010000c00d30f0400d4cd0c08 *2300000012000c00f00f040034b7110800000000100010003210040064480f081000000011000c *005410040060b30e085b00000012000c0071100400a8760e080500000012000c009610040030d7 *11080400000011001000c1100400386007080000000010000c00ec1004003c860f085b00000012 *000c000d110400d0420c080500000012000c003211040060d91108040000001100100051110400 *44450a080000000010000c007f11040078160b080000000010000c00bd11040014910c080c0000 *0011000c00da110400985207080000000010000c00ff1104007c4207080000000010000c002412 *040030000d081000000011000c00461204004cdc110804000000110010005b120400bfec0f0849 *00000012000c0068120400a8b90d081000000011000c008012040090ff11080400000011001000 *a61204003ca10e080800000011000c00c1120400d8380a080000000010000c00e9120400477810 *082200000012000c00f3120400f4f11108040000001100100014130400dcc40c08060000001200 *0c003913040000e9110804000000110010006a13040020670c080c00000012000c0091130400e0 *9d0b080c00000011000c00b113040070a00f081000000011000c00d3130400e8e6110804000000 *11001000eb13040004070c080800000011000c0007140400b0d10e085b00000012000c00291404 *00002d0c080c00000011000c0042140400d0b70a080000000010000c006b14040070c805080000 *000010000c0096140400201005080000000010000c00b414040091c40f081300000012000c00bc *140400087d0f080800000011000c00cf14040050ba0e080800000011000c00e4140400f0e90b08 *7d00000012000c00f81404009ce8110804000000110010002415040084df110804000000110010 *00541504002c0f0c084300000012000c007415040018f60b082300000012000c0088150400b4a4 *0b086300000012000c00a6150400986810080800000011000c00bb1504006c860e086800000012 *000c00e3150400c0d51108040000001100100000160400d4d00e080800000011000c0014160400 *ece5110804000000110010003716040028c3110800000000100010007a1604007ab20f082a0000 *0012000c008816040018f311080400000011001000b41604000cac11080000000010001000e416 *0400a8210f080500000012000c000c1704002c5e07080000000010000c002a170400fcfa0d080c *00000012000c0040170400d0e1110804000000110010005a170400249b04080000000010000c00 *6b1704000000000001060000120000008017040020c10e082300000012000c0099170400cc6c0e *080800000011000c00bc170400a0240e085b00000012000c00dd17040040380d08050000001200 *0c0007180400c48b08080000000010000c003d18040028ef110804000000110010005418040058 *db0b080c00000012000c006b18040024230b080000000010000c009918040034aa0f0808000000 *11000c00ac18040024340d082300000012000c00dc180400acdc0b080800000011000c00f51804 *0014bd05080000000010000c002319040098f911080400000011001000421904007cdc11080400 *0000110010005a190400ecec0b080c00000011000c006c190400d4b2110800000000100010009d *190400ecf111080400000011001000be19040088e311080400000011001000e01904009c0e0c08 *0c00000011000c00f519040048cc110800000000100010001c1a0400dc7a08080000000010000c *00561a0400088b0c080c00000012000c006c1a0400e0d70e080c00000011000c00951a0400d0f7 *11080400000011001000af1a0400d8ae0e082a00000012000c00d41a0400e8c50c080c00000012 *000c00ee1a04007cea0b080c00000011000c00091b04006cee110804000000110010002a1b0400 *6cff0d080c00000011000c00471b0400f4e30b083000000012000c00601b040010dd0f08810000 *0012000c00761b0400f0f70d080800000011000c00991b040078a40c081000000011000c00b51b *0400ecf60e080800000011000c00cc1b0400b4a00d085600000012000c00f21b040030890b0800 *00000010000c00181c0400ac370a080000000010000c003f1c0400bcd011080400000011001000 *5d1c0400185e10082c00000011000c00721c0400c4b8120804000000110017007f1c040094fc11 *0804000000110010009c1c0400b8810d080c00000011000c00b41c040074da1108040000001100 *1000ca1c0400909c0f080800000011000c00dd1c040078ed0b080300000012000c00f91c0400f8 *a511080000000010001000291d04004ccc11080000000010001000521d04005c3a0f0810000000 *11000c00651d0400c8850b080000000010000c008d1d0400e4840b080000000010000c00b81d04 *00adae0f081001000012000c00c31d0400305f0f080500000012000c00ec1d0400a1d10f080b00 *000012000c00fa1d040090770e081800000011000c001f1e0400e4fb110804000000110010003f *1e0400bccc0e080500000012000c00581e0400b0f611080400000011001000721e04004c5f0d08 *0800000011000c009e1e0400f8e011080400000011001000b41e040020e9110804000000110010 *00e51e040092fa0f080f00000012000c00f91e0400989f0f085b00000012000c000d1f0400b073 *0e085b00000012000c002a1f0400dcd7110804000000110010004f1f0400f0dc0b080800000011 *000c00661f04000c5d10080800000011000c00791f040010ed11080400000011001000971f0400 *20ba12080400000011001700a81f040024980b080700000012000c00c91f0400d4600708000000 *0010000c00f21f040046c80f081300000012000c00ff1f040074610b080000000010000c003120 *04001c9a0e080800000011000c004a2004003c9c0b080800000011000c006a20040048f5110804 *000000110010008d200400f0b409080000000010000c00be20040020e211080400000011001000 *e220040008c30c082000000012000c00f9200400e4e90b080800000011000c001621040090a711 *0800000000100010003f210400e86107080000000010000c006b21040008f01108040000001100 *10008f21040090560f081000000011000c00a421040068fd0b083000000012000c00bb21040090 *f70b082f00000012000c00d1210400701805080000000010000c00fa210400f4d50c0820000000 *12000c0016220400c09d05080000000010000c00452204005c7f0f085b00000012000c00592204 *008c1e0f085200000012000c007722040050cc09080000000010000c00a22204004c4a07080000 *000010000c00cc220400f0210f080800000012000c00f62204002cc50c080800000011000c0016 *230400a0230d081a00000012000c004023040020c50c080800000011000c005f23040038da1108 *040000001100100079230400a8ef110804000000110010009123040054c90c082000000012000c *00a523040054d711080400000011001000c5230400accc0b082000000012000c00dc23040044eb *09080000000010000c0003240400548f0f085b00000012000c0024240400a4b20f081200000012 *000c0034240400500c0e081000000011000c00492404008c050d080c00000011000c0066240400 *e02406080000000010000c0084240400344410083700000012000c0098240400a0330e08260000 *0012000c00c224040030cc11080000000010001000fb2404008ca8110800000000100010002b25 *0400b8f60b080c00000011000c003e250400a85c10080800000011000c004c250400d45d100808 *00000011000c005d25040004fa0c083900000012000c0076250400f0c311080000000010001000 *af25040034bc12080400000011001700cb2504006cb30c081000000011000c00e325040094ca0b *080c00000011000c00fa25040024b01108000000001000100022260400d0f31108040000001100 *100057260400d4ba05080000000010000c007c260400b02d0c080300000012000c009f26040094 *7e0b080000000010000c00ca260400ecec0b080c00000012000c00dd26040084c0110800000000 *1000100015270400649c0c080c00000011000c0037270400703a0e080c00000011000c00652704 *0080aa0e080c00000011000c0086270400b4770c083800000012000c00a4270400d80012080400 *000011001000ba270400000000003900000012000000d6270400243710080c00000011000c00e7 *270400b4cd1108000000001000100018280400a01805080000000010000c003d28040008011208 *04000000110010006028040054fe1108040000001100100075280400101805080000000010000c *009d28040000330e080c00000012000c00c22804004ce411080400000011001000e1280400b401 *0f084600000012000c00f628040044d80e082500000012000c001c290400dccb0c082300000012 *000c0039290400f4770f080c00000011000c0050290400e0dd1108040000001100100070290400 *54d2110804000000110010008729040034800f085100000012000c00aa290400b4fd0d080c0000 *0011000c00c6290400f4890d080c00000011000c00ed2904004cf70a080000000010000c001f2a *040080a711080000000010001000502a0400100712080400000011001000752a0400b0d40d0873 *00000012000c00962a0400049b0e080800000011000c00b02a0400e0e411080400000011001000 *ca2a0400c0bb0b080c00000012000c00e02a0400dc270a080000000010000c000c2b040010c409 *080000000010000c00422b0400401805080000000010000c006a2b04005c240f08100000001100 *0c008b2b040080650a080000000010000c00be2b0400486b0c080600000012000c00ed2b04005c *fd11080400000011001000102c040014f50d080c00000012000c00292c0400b8d9110804000000 *11001000442c04008c4107080000000010000c00692c0400e52406080000000010000c00882c04 *0064a711080000000010001000ae2c0400e88a08080000000010000c00ec2c040054c90c081000 *000011000c00ff2c040044170b080000000010000c002f2d04002ca70f080800000011000c0042 *2d04001c150d084a00000012000c00602d040030da11080400000011001000772d0400e0c40b08 *0700000012000c00992d0400180312080400000011001000be2d0400a0440a080000000010000c *00eb2d040018e511080400000011001000032e0400205407080000000010000c00212e04000cad *0e080c00000012000c00392e0400d84707080000000010000c00602e0400b4890f085100000012 *000c00832e0400b8d1110804000000110010009a2e0400180710080100000012000c00a52e0400 *4c4f0f080c00000011000c00c22e0400f4bc0b082900000012000c00df2e040020b70908000000 *0010000c00122f040008220d080c00000012000c003b2f040080170b080000000010000c006f2f *040014050d081000000011000c008c2f0400cab90f082900000012000c00992f040038ac080800 *00000010000c00d22f0400081005080000000010000c00fd2f0400240a0d085100000012000c00 *14300400f01a08080000000010000c00423004001ced1108040000001100100060300400f4a911 *0800000000100010008f300400882705080000000010000c00bd3004001cd70508000000001000 *0c00ee300400b4ba12080400000011001700f93004005c260d080c00000011000c0023310400e0 *07120804000000110010004831040030fe110804000000110010005e310400c0e3110804000000 *110010007f31040078e11108040000001100100095310400f8dd11080400000011001000be3104 *001cea11080400000011001000e431040030c20f082600000012000c00fb31040084030e081000 *000011000c001332040048160b080000000010000c004d320400a01805080000000010000c0073 *32040065cf0f08df00000012000c0080320400c0e91008b801000012020c008a32040078f51108 *0400000011001000b032040004200c080c00000011000c00c932040068010e080c00000011000c *00dc320400f4df1108040000001100100004330400d8e70e085b00000012000c00273304001c6d *0e080600000012000c0045330400b8200f085b00000012000c0062330400f4910f080800000011 *000c007533040080ff110804000000110010008e330400b8ff0c080c00000012000c00b0330400 *2ce011080400000011001000cf33040014d311080400000011001000ed33040068850508000000 *0010000c001434040038c00e083000000012000c002b34040064e1110804000000110010004634 *040060bc0e083000000012000c006334040030db0b080c00000011000c007734040008f8110804 *000000110010008e340400484b07080000000010000c00b2340400c4f40e085b00000012000c00 *c9340400d05207080000000010000c00ec34040040e11108040000001100100004350400acf511 *08040000001100100028350400b8e5110804000000110010004035040088b30508000000001000 *0c00663504008ce9110804000000110010009b350400fc850d080c00000011000c00bc350400b4 *980d085c00000012000c00d535040094070e081000000011000c00f035040058ed110804000000 *1100100010360400c8120d085900000012000c002e36040018e60b081000000011000c00433604 *00b8b509080000000010000c00733604009cdc1108040000001100100096360400486b0c080800 *000011000c00c436040040c409080000000010000c00f73604005409120804000000110010000d *370400e0ec0c080c00000011000c00263704003cda110804000000110010003c37040064c31108 *000000001000100070370400a4d40e085400000012000c009b370400289c0e080500000012000c *00bc370400e81f0e080c00000011000c00de370400b4880d080c00000011000c00fa3704004489 *0f080800000011000c001a380400aca10e085b00000012000c002f38040004070c080300000012 *000c004c380400c0180e081000000011000c006838040000000000d3000000120000007c380400 *d4120e081000000011000c009138040040d104080000000010000c00b43804006ccd0e080c0000 *0011000c00ce380400f0fd11080400000011001000eb380400f8ec110804000000110010000f39 *040034220b080000000010000c003d39040078a30f085100000012000c006039040048810f0808 *00000011000c0080390400fcd9110804000000110010009d3904000c6c0a080000000010000c00 *cd390400b4e704080000000010000c00f2390400bcf811080400000011001000093a04005c4a0e *081000000011000c00393a04004cdd11080400000011001000523a0400288a0d08080000001200 *0c00743a04008cc30c080c00000011000c008c3a040008f511080400000011001000af3a040096 *f90f083b00000012000c00c03a04006cd70e081800000011000c00e93a040024dc110804000000 *11001000133b04008c6b10082f00000012000c00263b0400b45e10080600000012000c00383b04 *004008120804000000110010004e3b0400d4f10c080800000011000c00683b0400b0170b080000 *000010000c00a83b040078160b080000000010000c00e73b040050b409080000000010000c0017 *3c040004a80e081000000011000c00363c04001c2f0e081300000012000c00603c040004ea1108 *0400000011001000863c0400f08b0b080000000010000c00b93c0400c4d1110804000000110010 *00d43c040028110e080c00000011000c00e63c0400ace8110804000000110010000d3d0400e006 *0c080800000011000c00233d0400e0910c080c00000012000c00393d0400bc4307080000000010 *000c00633d040000e411080400000011001000833d0400d01006080000000010000c00ba3d0400 *8ca911080000000010001000ec3d040024ac0e080c00000011000c00033e040068d61108040000 *0011001000303e04009c4310083700000012000c00413e0400dc770e080500000012000c00663e *04001c2a08080000000010000c00a63e0400203310080900000012000c00bc3e04005cbd0f08a9 *00000012000c00cd3e040064ff11080400000011001000eb3e040000ed11080400000011001000 *133f0400acd4110804000000110010002e3f0400f8d911080400000011001000473f0400a02c0f *082900000012000c00683f040088f8110804000000110010007e3f040004ed1108040000001100 *1000a63f0400d46d10082c00000011000c00b93f040054ef0c081000000011000c00dc3f0400dc *a2110800000000100010000740040078b1110800000000100010002f40040034920b0810000000 *11000c00564004003cd11108040000001100100071400400b60410084f00000012000c00834004 *0034fe110804000000110010009d400400bc6c0e080800000011000c00bd4004004ceb11080400 *000011001000e340040064d311080400000011001000fe40040084c20c080c00000011000c0018 *410400e84607080000000010000c0048410400b4dc1108040000001100100065410400a8e01108 *04000000110010008a41040080c311080000000010001000bf410400a8b1110800000000100010 *00df410400603910089a00000012000c00e941040090e810082b01000012020c00f341040040f4 *110804000000110010001842040034920b084100000012000c0040420400485e10082a00000012 *000c005542040004fe110804000000110010006b420400e4220b080000000010000c0094420400 *3b3310080900000012000c00aa4204003cfd11080400000011001000cf420400e8d71108040000 *0011001000fc420400000000003a000000120000000d43040098c70c081000000011000c002343 *040050170b080000000010000c0054430400480c10080c00000011000c0062430400244b0e080c *00000011000c00944304009dc50f084100000012000c00a543040050e111080400000011001000 *bd430400fc3010084f00000012000c00d94304007cf909080000000010000c0004440400144107 *080000000010000c0025440400f4780c084a00000012000c0044440400980b0508000000001000 *0c0067440400d4950f085100000012000c008a440400dca50e085b00000012000c00a044040078 *e311080400000011001000ce4404001c810d080800000011000c00ea44040024dd110804000000 *1100100000450400ec6b0a080000000010000c003245040000da110804000000110010004b4504 *00a46a0a080000000010000c007c450400786f0e080c00000011000c00a345040018ff11080400 *000011001000c6450400c8ed11080400000011001000f0450400dcdc0c080600000012000c000a *460400b0a80f085b00000012000c001e46040010fb110804000000110010004246040084da1108 *040000001100100059460400e07a0c082d00000012000c006e460400446207080000000010000c *009446040050f90f084600000012000c00a0460400d4340f080c00000011000c00b5460400e0d4 *11080400000011001000d3460400280412080400000011001000f646040090770e084a00000012 *000c001c470400fc580b080000000010000c00484704003c6507080000000010000c0077470400 *6003120804000000110010009d47040010e711080400000011001000b34704001c6c0f08200000 *0012000c00c8470400ec870a080000000010000c00fb47040078370a080000000010000c002548 *040000500f080c00000011000c0038480400e81310081d02000012000c0046480400688d0f085b *00000012000c005a480400386b0c080800000011000c008548040064b111080000000010001000 *b0480400d8fb11080400000011001000cc480400580f0e085500000012000c00e2480400e8830d *085a00000012000c00094904000c8c0b080000000010000c003a490400205d0b08000000001000 *0c006a49040090de1108040000001100100096490400b4d411080400000011001000b549040078 *670f084100000012000c00d7490400c00612080400000011001000fc490400bcd1110804000000 *11001000134a040008bc0b080800000011000c002f4a04002c100a080000000010000c00604a04 *0038fc110804000000110010007d4a040098c50c080c00000011000c00964a0400e8d511080400 *000011001000c24a0400843d0c081000000011000c00e44a0400e0fa1108040000001100100008 *4b0400b0140a080000000010000c002f4b040044a3110800000000100010005a4b040058230f08 *0e00000012000c00874b0400cc180c087800000012000c00a24b0400e8e90b080700000012000c *00b54b040098220b080000000010000c00dd4b0400a8be09080000000010000c00144c0400fca7 *110800000000100010003f4c04001c620c083d00000012000c006d4c040054710f081000000011 *000c00824c0400d8f911080400000011001000a14c0400c86a0c080800000011000c00ca4c0400 *40d911080400000011001000e44c04009c360c087d00000012000c00014d040070be0e080c0000 *0011000c00154d040014ec0b080c00000012000c00284d040023ff0f085400000012000c00354d *0400fc1a0f085b00000012000c00524d0400605108080000000010000c00814d0400440c0d0820 *00000012000c009e4d0400b4a911080000000010001000d44d0400000000000104000012000000 *df4d0400804e0c080700000012000c00f64d0400f4cc11080000000010001000234e040074440a *080000000010000c004e4e0400ac4f08080000000010000c00804e04004c170d085e0000001200 *0c00a74e0400547b0c080c00000012000c00c44e0400e8a211080000000010001000ef4e0400fc *300c080800000011000c000b4f0400f0990f085b00000012000c002c4f040048e00b0803000000 *12000c00484f040068d111080400000011001000614f0400c05b0f086600000012000c00764f04 *00583c0f081000000011000c008b4f04003c2f0e082100000012000c00b54f0400f4770f083e00 *000012000c00cd4f04008cde11080400000011001000f94f0400e4bb0b080300000012000c0013 *500400d4e7110804000000110010003c500400d01f0d081900000012000c0066500400d8e41108 *040000001100100081500400a0d511080400000011001000a45004008cd10c080c00000011000c *00bf500400500d0c080c00000012000c00d450040094a70f085b00000012000c00f550040004db *1108040000001100100014510400c84305080000000010000c004051040040220f080800000012 *000c006a510400c05e0c080800000011000c0097510400bfed0f089000000012000c00a4510400 *64fb11080400000011001000c25104008cdc0b080800000011000c00db510400041d0f08080000 *0011000c00f8510400246010080800000011000c000b52040060680f080c00000011000c002c52 *04005fbb0f080800000012000c003852040060c7110800000000100010006352040058d3110804 *000000110010007952040098f211080400000011001000a3520400c80412080400000011001000 *c8520400acdc11080400000011001000e3520400d8dc0b080800000011000c00fd520400f00812 *08040000001100100020530400386007080000000010000c004a53040028661008490000001200 *0c005f530400000000004e020000120000006a530400684205080000000010000c0094530400a4 *9304080000000012000a009a5304008c990b080700000012000c00bc530400f017050800000000 *10000c00df53040010b20e080800000011000c0004540400644107080000000010000c002c5404 *00a06b0c080700000012000c004654040028bb1208040000001100170050540400101f0e080c00 *000011000c0072540400041c0d080800000011000c008f54040094b10d081000000011000c00aa *540400d4ec11080400000011001000cc540400dc9e05080000000010000c00f75404008fb30f08 *1f00000012000c000e550400b8ff0d082000000012000c0022550400ecdf0d081800000011000c *003555040000f40b080c00000011000c004b550400d4230a080000000010000c00725504002018 *05080000000010000c009d55040064b70f087c00000012000c00ae5504004cde0b080300000012 *000c00ca550400806007080000000010000c00f45504007ca71108000000001000100021560400 *e0bb12084000000011001700355604008cb10f083800000012000c004156040050fb1108040000 *00110010005e56040038ac08080000000010000c009856040034b305080000000010000c00bf56 *040010730e080800000011000c00db560400b00712080400000011001000f1560400a0920d0836 *00000012000c001557040044da110804000000110010002b5704000cc111080000000010001000 *6557040054540f081000000011000c007857040074f2110804000000110010009c57040030aa0d *080a00000012000c00bf57040030f80d080800000011000c00df5704006c1c0a08000000001000 *0c0007580400c4a2110800000000100010002b580400d8f70e080800000011000c0042580400a0 *a20f085b00000012000c00565804009dce0f08a000000012000c0063580400b4060c0823000000 *12000c007758040088c40c080c00000011000c008e580400bce311080400000011001000b05804 *0080d111080400000011001000cc580400dce611080400000011001000e958040074c811080000 *0000100010001c590400ac6107080000000010000c004c590400e0dc1108040000001100100071 *590400d4a911080000000010001000a6590400a4720f080c00000012000c00c059040030d40c08 *0c00000011000c00da59040028da11080400000011001000fa590400d37610080101000012000c *00045a0400b4f90c080c00000011000c00205a04005bfa0f081500000012000c00305a040024d9 *0d080500000012000c004e5a0400202d0a080000000010000c00795a0400b4c611080000000010 *001000a85a0400c4a90b080600000012000c00c45a0400e8b111080000000010001000e85a0400 *4c2406080000000010000c00215b040030f511080400000011001000445b040008d61108040000 *00110010006d5b0400a0360b080000000010000c009c5b0400c4620b080000000010000c00c35b *04003c590a080000000010000c00f95b04005c3a0f082900000012000c000d5c0400e8f1110804 *00000011001000265c0400fca90b080700000012000c003b5c0400441e0b080000000010000c00 *6a5c040091dd0f083d03000012000c00755c040038f90e085b00000012000c008d5c0400980b0f *083000000012000c00a15c0400c8f911080400000011001000c05c0400fcc40c08060000001200 *0c00e55c0400d01805080000000010000c000d5d040048de110804000000110010002b5d0400c0 *d711080400000011001000515d0400ccad0d082300000012000c00765d0400bc4b0e0863000000 *12000c00ac5d04006cb80c081000000011000c00c45d0400601f0c080700000012000c00d95d04 *005cc50f084100000012000c00ec5d0400880312080400000011001000025e0400b46a10081e00 *000012000c00195e040014770c080800000011000c00375e040018e60b082300000012000c004d *5e040070d711080400000011001000665e040018d305080000000010000c00995e040000e21108 *0400000011001000c05e0400c86a0c080600000012000c00ea5e040018b509080000000010000c *00195f0400a4ba12080400000011001700225f0400e4c111080000000010001000635f0400ecd7 *110804000000110010008e5f0400485a10081800000011000c009b5f04004c8c0f080800000011 *000c00bb5f04003c460f080800000011000c00e25f040080ae0d080c00000011000c0000600400 *a81d0c080c00000011000c001860040008c30c080c00000011000c002e60040000b40908000000 *0010000c005d60040090c60e080c00000011000c0073600400d08c0d080c00000011000c009d60 *0400e8dd11080400000011001000bd60040024a40f080800000011000c00d060040050030b0800 *00000010000c000161040024080f080c00000011000c001261040050640c084000000012000c00 *3961040094b40b082d00000012000c005061040048200f080800000011000c006c610400bc5f0d *080600000012000c009b610400a04d0c085500000012000c00bd610400d4850f085b0000001200 *0c00d16104008ce411080400000011001000f161040078e21108040000001100100016620400c0 *d9110804000000110010003262040094670a080000000010000c00636204003805120804000000 *1100100079620400003f0c082500000012000c00a562040054b30b080c00000011000c00c06204 *0000000000b501000012000000d262040054d811080400000011001000ea62040050760a080000 *000010000c001c630400085c10080800000011000c00336304009cc8110800000000100010006a *630400b46610084900000012000c007f6304004ab30f081700000012000c008963040004580e08 *0c00000011000c00b2630400044e10086d00000012000c00cb630400e8f3110804000000110010 *00ee63040040db110804000000110010000e640400e4290d080c00000011000c003b640400cc3c *0f083000000012000c005064040058230f080c00000011000c007c640400e8640c083000000012 *000c00a3640400641b0f085b00000012000c00c06404006c080d080c00000011000c00d3640400 *30170c081000000011000c00ee6404001cb30f081700000012000c00f86404008cf00c08540000 *0012000c0020650400ece80b080300000012000c003e650400245106080000000010000c006765 *0400e0f4110804000000110010008a65040008170b080000000010000c00be650400dcc40c0808 *00000011000c00e2650400e0060c080300000012000c00f9650400f81805080000000010000c00 *2766040024d70e080500000012000c0050660400fcbb0b080800000011000c0069660400ccdc0c *080600000012000c008066040094c511080000000010001000b0660400a4420708000000001000 *0c00d56604000cbe0b080300000012000c00f6660400349a0b084100000012000c0015670400a8 *8508080000000010000c004f670400c43f0a080000000010000c007a670400d4eb090800000000 *10000c00ad67040060c209080000000010000c00ec67040094e1110804000000110010000b6804 *0040d31108040000001100100027680400f0b20e080c00000011000c0043680400ebc40f081700 *000012000c00516804007cf80d086f00000012000c006b680400b8b90b080c00000011000c0085 *68040014030e085b00000012000c009868040084e60e080800000011000c00b8680400fcd51108 *0400000011001000e4680400c4fc0b080c00000011000c00fd68040008ed110804000000110010 *0010690400dcc30c080c00000011000c002e690400b0d4110804000000110010004d690400bcee *0b083500000012000c006569040077ff0f087900000012000c00736904008c4110082200000012 *000c008469040030f211080400000011001000a0690400ec2f0c080c00000011000c00c2690400 *c0e411080400000011001000d869040024b305080000000010000c00006a040060650a08000000 *0010000c00316a0400904a0c080700000012000c00546a04002cc60b084100000012000c00776a *0400f4440a080000000010000c00a46a040029f60f080000000010000c00ae6a040020dd0b0808 *00000011000c00c86a0400b49e05080000000010000c00f26a0400909c0f085b00000012000c00 *066b040098cb0d080800000011000c001f6b040024f3110804000000110010004b6b040054c711 *080000000010001000746b04000ca7110800000000100010009e6b040018490f08100000001100 *0c00c06b040084990e080800000011000c00d76b040060d80b080c00000011000c00ec6b0400c4 *a911080000000010001000196c04004c3910081200000012000c00276c04008cd10c0820000000 *12000c00436c040050f90b082f00000012000c00586c040008a70b080700000012000c006d6c04 *0094f6110804000000110010008d6c04004ce511080400000011001000a26c0400dce80b080600 *000012000c00c56c04003cd305080000000010000c00f56c040038c00e081000000011000c000b *6d0400fc960e080800000011000c001f6d0400481e0d080a00000012000c00376d0400c8331008 *f601000012000c00446d0400ac860f081000000011000c00666d040060b2110800000000100010 *008c6d0400807b08080000000010000c00c66d040018b506080000000010000c00f26d0400acba *12080400000011001700fe6d040094e711080400000011001000176e0400d4db11080400000011 *0010003d6e040098f8110804000000110010005a6e0400ecc40c080800000011000c007d6e0400 *0c2c0b080000000010000c00a16e040094c311080000000010001000d26e040018d20e080c0000 *0012000c00f46e0400dc650e086b00000012000c00186f0400000000003a000000120000002a6f *040068eb0e086000000012000c004e6f040058f511080400000011001000716f040074fd110804 *00000011001000966f040098c511080000000010001000cb6f0400a8300c080300000012000c00 *e46f040070410a080000000010000c000b70040078a71108000000001000100036700400f4370f *081000000011000c0050700400947e0d080c00000011000c006f7004002cda1108040000001100 *10008970040054da11080400000011001000a3700400f4cf0c085900000012000c00b970040090 *aa0d080a00000012000c00dd7004005cd811080400000011001000f8700400996f100898000000 *12000c000c71040064f01108040000001100100034710400fcbb0b080300000012000c004e7104 *0050920c081000000011000c0063710400dc050a080000000010000c0090710400e0f70d080800 *000011000c00b5710400ec500f082900000012000c00cf710400fc830a080000000010000c0001 *720400545b10080800000011000c001a72040084250e085b00000012000c003872040060051208 *04000000110010005d72040018260c081000000011000c007972040080b609080000000010000c *00af720400ecf811080400000011001000c372040034870a080000000010000c00f3720400c4c2 *110800000000100010002e7304005c6007080000000010000c0057730400580512080400000011 *0010007c7304008ceb11080400000011001000a2730400f8b609080000000010000c00d0730400 *b80812080400000011001000f5730400e4160b080000000010000c0028740400cc071008540000 *0012000c00367404007cc50b080c00000011000c005f74040050980d081800000011000c007874 *0400d01d0c080c00000011000c0094740400a0fc11080400000011001000ae740400d0da110804 *00000011001000c674040084a10f085b00000012000c00e774040054600d080800000011000c00 *0875040014df0c085a00000012000c001d750400d48d0c080c00000011000c003775040074dd11 *08040000001100100056750400a0bd09080000000010000c008a7504003c8b0808000000001000 *0c00c7750400bcc40c080600000012000c00ec750400e42a0d082000000012000c0019760400e4 *c20e082300000012000c002f76040074770c080800000011000c004f7604009c890a0800000000 *10000c007f7604003c0f05080000000010000c00a876040000f40b082500000012000c00bf7604 *00e06007080000000010000c00eb76040000d31108040000001100100011770400b6bb0f080b00 *000012000c001f77040030aa0d081800000011000c0041770400b8d5110804000000110010005e *770400fc300c080300000012000c007b7704000c7c0c080c00000012000c009e770400f4c61108 *0000000010001000c877040048bb11080000000010001000047804000cf0110804000000110010 *001d78040060160b080000000010000c005278040094210e080c00000012000c00727804004453 *0b080000000010000c009b780400000000008b00000012000000ae7804005cdc11080400000011 *001000c6780400a4b111080000000010001000e6780400a0d91108040000001100100001790400 *9cc51108000000001000100038790400c8d1110804000000110010005379040048e51108040000 *00110010006b790400748a0b080000000010000c009679040068a411080000000010001000c579 *0400f8f30e080300000012000c00e779040034d311080400000011001000037a04008cc6110800 *000000100010002f7a0400345d10080800000011000c00467a040068e70e085b00000012000c00 *697a0400c4240d081a00000012000c00937a0400b00312080400000011001000b87a0400acae11 *080000000010001000ea7a040060f70e080800000011000c00017b040040e61108040000001100 *1000257b0400c88f0b083200000012000c004b7b0400d8dc0b080300000012000c00667b0400e4 *bb0b080800000011000c007f7b040078070a080000000010000c00a67b0400088f0d0859000000 *12000c00ba7b040044890c080300000012000c00e27b04002cf00b082300000012000c00fc7b04 *00980b05080000000010000c00207c0400b8f811080400000011001000387c040034f611080400 *000011001000597c040004df11080400000011001000827c0400b00e0a080000000010000c00b3 *7c040000880c080c00000011000c00d97c040020d104080000000010000c00047d0400f8061208 *0400000011001000277d0400eccb110800000000100010005c7d04000c5106080000000010000c *00837d040054a811080000000010001000b07d0400a46d0e080c00000011000c00d77d0400e8c3 *110800000000100010000f7e0400bcbc12080400000011001700237e040014e111080400000011 *0010003e7e040014b90c081000000011000c00577e04009c640c080c00000011000c007d7e0400 *2cd511080400000011001000997e04003c6a10081e00000012000c00b07e0400919f0508000000 *0010000c00d17e04000c460d080c00000012000c00fe7e0400c8210f081800000011000c00267f *0400000000003c000000120000003b7f040090fd11080400000011001000527f040094cc050800 *00000010000c00857f04007c5f0d080800000011000c00af7f040010ed0e081000000011000c00 *d67f040068eb0e080c00000011000c00f97f0400247a0c082300000012000c001180040074f409 *080000000010000c003b80040070f711080400000011001000558004006fe90f08550000001200 *0c006a80040084fe110804000000110010008080040068b211080000000010001000a7800400e4 *130e080300000012000c00c380040050e311080400000011001000e580040044530b0800000000 *10000c000d810400c0c50e085b00000012000c0020810400c8b211080000000010001000458104 *00b8a2110800000000100010006b81040038390e085900000012000c009a810400b8ff11080400 *000011001000b28104007c541008b400000012000c00c18104009cd70e080500000012000c00ea *81040000000000d101000012000000f5810400d0f4110804000000110010001882040024d21108 *040000001100100035820400c4b1110800000000100010005a82040024aa110800000000100010 *008c820400348a0c082000000012000c00a7820400a4c611080000000010001000d18204006cb3 *05080000000010000c00fb82040070bb110800000000100010002e830400285f0f080800000012 *000c0058830400c0300c080300000012000c007283040000000000d30000001200000086830400 *5cda110804000000110010009f83040074e809080000000010000c00c983040040180508000000 *0010000c00f2830400d01d0c080c00000012000c000f8404000c5c06080000000010000c003a84 *04001c5110088000000012000c004d84040088f51108040000001100100077840400c806120804 *000000110010009c84040030e611080400000011001000c084040074170b080000000010000c00 *f6840400d8a60e085b00000012000c000c850400b0b809080000000010000c003c8504000cc709 *080000000010000c0068850400bcf10b083200000012000c008285040048ca0b080c0000001100 *0c0095850400d87a0c080700000012000c00a9850400f0300c080300000012000c00c385040098 *bb0b080c00000011000c00d885040004bf0f086600000012000c00ed850400c0cf110800000000 *1000100018860400deb00f083800000012000c0024860400fc840b080000000010000c00508604 *0020f80d080600000012000c0078860400805f0c080c00000011000c00a5860400e8050c080700 *000012000c00b9860400c8db0b080c00000011000c00d086040030e00b080800000011000c00eb *860400446207080000000010000c0010870400e8640c080c00000011000c0036870400aeb30f08 *1f00000012000c004d870400d4b81208040000001100170059870400bcf2110804000000110010 *008587040060f80d080600000012000c00ab8704005c050c080700000012000c00be870400a8d6 *11080400000011001000f987040047b90f083700000012000c000588040040fc11080400000011 *001000228804008c910d080c00000011000c003a8804009c0710082600000012000c0047880400 *f86a0c080600000012000c0078880400b8820c084800000012000c00a088040020c70b08730000 *0012000c00c388040020730f085b00000012000c00d7880400ccba0a080000000010000c000889 *0400dc0b0d080800000011000c00248904009cd61108040000001100100053890400d8050c0803 *00000012000c006d890400e4fe110804000000110010008389040084c311080000000010001000 *b58904001ca10f085b00000012000c00c9890400f8dc11080400000011001000e989040004b70d *086900000012000c000e8a04002c2b0a080000000010000c00398a04006c1d0f08080000001100 *0c00568a04007c4010082200000012000c00678a04002cea110804000000110010008d8a040098 *db11080400000011001000ac8a040068a50e085b00000012000c00c28a040009b40f0809000000 *12000c00d18a0400c8b409080000000010000c00028b0400500812080400000011001000188b04 *000005120804000000110010003b8b0400449e0d080c00000012000c00588b0400f4890d081a00 *000012000c00808b040020cd05080000000010000c00a98b040088f411080400000011001000cb *8b0400a82a0d081000000011000c00fa8b0400f0850b080000000010000c00218c0400b8d31108 *04000000110010003a8c0400cc0710080800000011000c00478c040004e8110804000000110010 *00738c0400801605080000000010000c00948c040000620d081000000011000c00b08c040020e4 *11080400000011001000cb8c0400d8b812080400000011001700da8c040048910f081000000011 *000c00fc8c040060070d080c00000011000c00108d04001cd70e081800000011000c00398d0400 *515810080600000012000c00528d0400d0b60b082300000012000c006a8d0400dc410708000000 *0010000c00928d040038f811080400000011001000b08d040094fe0d080c00000011000c00cc8d *040000620d089601000012000c00e98d0400146007080000000010000c00148e0400fcd80d0818 *00000011000c00328e0400e02a0e080800000012000c005c8e0400f4ca11080000000010001000 *918e04000c9b0f085b00000012000c00a58e040010b809080000000010000c00d58e04005c460c *087d00000012000c00eb8e0400985a10080800000011000c00fa8e040008ce0b080c0000001100 *0c000e8f0400f08b0b080000000010000c00408f04002be20f081300000012000c00508f04003c *590a080000000010000c00878f0400e41a10088902000012000c00968f0400b80d0d0808000000 *11000c00b98f0400a8d911080400000011001000d68f040014290d084f00000012000c00039004 *0008da110804000000110010002290040068170b080000000010000c00509004005cd311080400 *0000110010006a90040068e70e080c00000011000c008c90040090680c085c00000012000c00bb *90040054b909080000000010000c00ec9004008001120804000000110010000f910400f8fd1108 *040000001100100031910400d8450f080800000011000c005291040018e4110804000000110010 *0073910400801a0b080000000010000c009f91040028b409080000000010000c00d191040030e1 *11080400000011001000ef91040054d1110804000000110010000592040030b10e080c00000011 *000c001992040034d81108040000001100100031920400f86310080800000011000c0044920400 *60f80d080800000011000c00699204005c8a0b080000000010000c009b920400d8470708000000 *0010000c00c392040080960f080800000011000c00d6920400d4f50e080a00000012000c00f192 *0400901d0b080000000010000c002193040000ef110804000000110010003f93040038170b0800 *00000010000c007d930400882705080000000010000c00ac930400e0e004080000000010000c00 *cf930400344210080c00000011000c00e6930400f4470f085b00000012000c000794040074ec11 *08040000001100100031940400f0d0110804000000110010004994040080cc0d085b0000001200 *0c005d940400a8f0110804000000110010007c94040030880f081000000011000c009e9404002c *da0b080c00000011000c00b294040078f811080400000011001000d1940400f8f60c080c000000 *12000c00f2940400bfd20f082400000012000c000595040028d00e080c00000012000c00209504 *00e8830e087200000012000c004495040000171208040000001100170056950400dcfe11080400 *00001100100074950400d0b80e081000000011000c008f950400487a0c080700000012000c00a9 *950400908508080000000010000c00e29504003cec1108040000001100100009960400b8840f08 *0800000011000c002996040084b60b080c00000012000c0045960400d8d1110804000000110010 *006c960400c0b1110800000000100010009e960400041712080400000011001700b096040074c0 *0f081300000012000c00bc960400941e0d080c00000011000c00d7960400c8c311080000000010 *0010000d970400e0d70e081a00000012000c00379704002c4207080000000010000c005c970400 *3cde11080400000011001000769704008cb1110800000000100010009e9704001cf31108040000 *0011001000ca97040054db11080400000011001000e097040084e90b080300000012000c000098 *040034e90b080800000011000c00269804002c9f05080000000010000c005898040004aa0b0855 *00000012000c006e98040060070d080800000012000c008398040018ef11080400000011001000 *9a98040038db11080400000011001000b9980400a8030f080800000011000c00d4980400c0f80e *080800000011000c00eb980400e45f0d085b00000012000c000d99040074ea0508000000001000 *0c00389904006cfd110804000000110010005d990400d8810c080c00000011000c007f9904003c *490c080c00000011000c00a599040064cc11080000000010001000e099040018db110804000000 *11001000fe9904009caa0f085b00000012000c001f9a0400f4470f080800000011000c003f9a04 *000c300e080500000012000c00689a04009ceb110804000000110010008e9a0400b4b111080000 *000010001000b19a040000000000fa01000012000000c29a0400a86710081e00000012000c00d8 *9a04009c9e08080000000010000c00109b0400d0e911080400000011001000389b0400f4f21108 *0400000011001000639b040080ec11080400000011001000879b0400205d10080800000011000c *009b9b040060e90b080300000012000c00c39b040018bf09080000000010000c00fb9b040064de *0b083700000012000c000f9c04009cc311080000000010001000449c0400c46107080000000010 *000c006f9c0400bc6c0e080600000012000c00909c0400dc520f082900000012000c00a39c0400 *145e07080000000010000c00c89c0400bee70f082200000012000c00d59c040044450a08000000 *0010000c00049d040080f70d080800000011000c00319d040024da11080400000011001000519d *040004dc11080400000011001000779d040021cd0f080600000012000c00859d0400586b0c0808 *00000011000c00b69d0400947410080100000012000c00c99d040000be0b080300000012000c00 *eb9d0400181905080000000010000c00179e040018fc11080400000011001000369e0400746007 *080000000010000c005e9e0400446007080000000010000c00829e040094fe1108040000001100 *10009a9e0400dc560b080000000010000c00c69e040034160b080000000010000c00f49e040000 *0000004300000012000000009f04007c1d10080c00000011000c00119f040051450a0800000000 *10000c003c9f04000c9f05080000000010000c006b9f0400f8420a080000000010000c00949f04 *00ece00b080800000011000c00ba9f04006ca411080000000010001000f19f0400483d0d082300 *000012000c001ba0040044b21108000000001000100044a00400e0ad1108000000001000100070 *a004003ceb04080000000010000c0092a00400acee11080400000011001000aea00400b43f1008 *c700000012000c00bca0040060cc11080000000010001000eaa00400805e10082600000012000c *00faa0040060210d081a00000012000c0024a1040044ec09080000000010000c0058a10400b814 *0f083000000012000c006aa10400f4a40e080800000011000c007fa1040044cc11080000000010 *001000aca10400e42408080000000010000c00eaa104002cb30d082900000012000c000da20400 *90dd0b080700000012000c0021a20400406710084900000012000c0036a2040088041208040000 *00110010005ba20400d8380a080000000010000c0084a204004cc711080000000010001000aca2 *040080f711080400000011001000c6a204006c050a080000000010000c00f5a2040014af110800 *0000001000100027a30400dcc20d082300000012000c0047a30400d88b0c080c00000012000c00 *5da30400b0c31108000000001000100091a30400801a08080000000010000c00c3a30400000000 *00d605000012000000cea3040004c40c080c00000011000c00e8a3040038090a08000000001000 *0c000fa40400484b07080000000010000c0032a40400684205080000000010000c005da40400cc *e90b080800000011000c0086a4040048b211080000000010001000aca404004c860d080c000000 *11000c00d6a40400d8050c080800000011000c00efa40400fcfb05080000000010000c0024a504 *00f8b11108000000001000100049a50400741505080000000010000c0071a50400a67810081300 *000012000c0082a50400ec9a0b080700000012000c00a0a5040060ed0b080800000011000c00ba *a50400b4da11080400000011001000d9a504005c6810081e00000012000c00efa504000c390f08 *1000000011000c0006a604002cf10c081000000011000c0027a6040004690c081000000011000c *004da60400f0850b080000000010000c0075a60400e4220b080000000010000c009fa604007041 *0a080000000010000c00c7a60400ac7e0b080000000010000c00f3a60400d0bb09080000000010 *000c0029a70400d44307080000000010000c0051a70400b4300c080800000011000c006ca70400 *9a0410081c00000012000c007ea70400e80610080100000012000c008ba70400c0081208040000 *0011001000b0a70400a05e0c080600000012000c00dda704003c5206080000000010000c000ba8 *040094d30e085400000012000c003aa80400ec060e080c00000012000c0051a80400a4200d0808 *00000011000c007ca8040024bf09080000000010000c00b5a804001ca611080000000010001000 *e5a804003cdf110804000000110010000da9040098bc0c082300000012000c0028a90400fccf11 *08040000001100100056a90400f41f0d085400000012000c007fa904002c170b08000000001000 *0c00bea9040028810d080800000011000c00dda90400407b08080000000010000c0019aa0400f4 *cf0c080c00000011000c002eaa040060a71108000000001000100058aa04008898050800000000 *10000c0081aa0400889805080000000010000c00a9aa0400e4df11080400000011001000cdaa04 *00546207080000000010000c00f2aa040014e10d08a700000012000c0012ab040018d211080400 *00001100100027ab040090800c082000000012000c0047ab040051dc0f08ac00000012000c0057 *ab0400684807080000000010000c007cab040068f91108040000001100100099ab0400288e0d08 *0c00000011000c00c0ab04008cea11080400000011001000e6ab0400f0f5110804000000110010 *0009ac0400701c0d080800000011000c0027ac0400f8d61108040000001100100051ac04003c37 *0c084500000012000c007eac040094670a080000000010000c00b0ac040020f711080400000011 *001000caac0400fcc40c080800000011000c00eeac0400455810080600000012000c0007ad0400 *9ced0b080800000011000c001fad0400e0c31108000000001000100050ad040080960f085b0000 *0012000c0064ad040078021208040000001100100087ad040040220f081800000011000c00b0ad *0400a0fb11080400000011001000cead0400a9d60f081b00000012000c00dbad040070f5110804 *00000011001000fead040068b509080000000010000c0032ae0400f89705080000000010000c00 *59ae04006c2a0d082000000012000c008aae040030db11080400000011001000a8ae04006cb80c *082300000012000c00c1ae040000f711080400000011001000dbae040030980e08200000001200 *0c00f1ae040000000000400000001200000004af040004e41108040000001100100029af04005c *c71108000000001000100053af040098bc0c081000000011000c006daf04007807120804000000 *1100100083af04000ce50e080c00000011000c00b1af04005cdd0b080300000012000c00d1af04 *0088d311080400000011001000eaaf0400b4db1108040000001100100006b0040074f40e080c00 *000012000c0025b00400106107080000000010000c004ab00400f4ca0e082500000012000c0063 *b0040010dc0c080c00000012000c0077b0040094d81108040000001100100095b00400a4800a08 *0000000010000c00c6b0040080380f083000000012000c00e1b0040094970a080000000010000c *000db1040010110c087200000012000c002ab10400e4db1108040000001100100046b104002cbc *0b08b300000012000c0060b10400b8200f080800000011000c007cb1040048fb0d080c00000011 *000c009db1040004dd0c080800000011000c00b1b10400a42d0c080800000011000c00d0b10400 *98a30e080800000011000c00e5b10400c8b005080000000010000c000db2040028fa0e085b0000 *0012000c0025b20400741e0d081800000011000c003cb2040024300f085b00000012000c0052b2 *04003c8d0d084300000012000c007db2040024d911080400000011001000a5b204008cf3110804 *00000011001000d6b20400a8ce0e084c00000012000c00f0b2040038a00e080c00000011000c00 *0ab30400f4440a080000000010000c0038b30400f4fc110804000000110010005cb30400d4a211 *08000000001000100080b3040078e00e080c00000011000c00abb3040020f01108040000001100 *1000c2b30400981005080000000010000c00e4b30400f82b0f080c00000011000c0006b4040038 *130d084300000012000c0024b4040080d20f081b00000012000c0033b4040020bc0b0808000000 *11000c004fb4040048ed0c085400000012000c006db4040034cd05080000000010000c0098b404 *0030280e080800000012000c00c2b40400a0850b080000000010000c00eab4040004f311080400 *00001100100014b50400a45f0c081000000011000c0042b50400fc8b0b080000000010000c0070 *b50400000000003b3b00001200000084b50400581c0e082f00000012000c00aeb50400644a0c08 *0700000012000c00cbb50400f4bd0b080300000012000c00eab5040058c409080000000010000c *0027b60400d4cf1108000000001000100053b60400f87a08080000000010000c008db6040054fb *11080400000011001000adb6040038ce0c082000000012000c00c4b604001de90f085200000012 *000c00d7b60400ecdf0d080800000012000c00ebb604004cec110804000000110010000fb70400 *f0db0b080c00000011000c0026b70400c0380b080000000010000c0052b7040028610f08080000 *0011000c006cb704000cf9110804000000110010008ab70400c8f011080400000011001000a9b7 *04002cf70d080300000012000c00ccb70400304b07080000000010000c00f9b7040048ed0c080c *00000011000c0016b804003c4107080000000010000c0038b80400408c0c080c00000011000c00 *51b80400b4e90b080300000012000c0079b80400c46910081e00000012000c008fb80400b8820c *080c00000011000c00b6b80400385d0c081000000011000c00dfb8040068aa0b08200000001200 *0c00f8b80400a0360b080000000010000c0028b90400204507080000000010000c0055b904009c *ae110800000000100010007fb90400f4f811080400000011001000a7b9040018de110804000000 *11001000c8b90400ec980b080700000012000c00eab9040078200a080000000010000c0013ba04 *005ceb09080000000010000c0040ba0400ccd61108040000001100100069ba0400c4f311080400 *0000110010009eba0400dc560b080000000010000c00c9ba040070470e080c00000012000c00f6 *ba040014ea0e081000000011000c001dbb0400f8f9110804000000110010003dbb040024cf1108 *000000001000100072bb040064820f080800000011000c0085bb04004cde110804000000110010 *00b1bb0400d8a60e080800000011000c00c6bb040028d00e080c00000011000c00e0bb0400f040 *0a080000000010000c0007bc0400a8d31108040000001100100020bc04007c580a080000000010 *000c004ebc040044d50e085600000012000c007abc0400d0b80e084000000012000c0096bc0400 *94c811080000000010001000cabc04005c1005080000000010000c00eebc040000000000320500 *0012000000f9bc0400a43810089c00000012000c0003bd040020eb0b080c00000011000c0016bd *040064d11108040000001100100031bd0400301905080000000010000c0051bd040058c3110800 *0000001000100084bd040024d811080400000011001000a1bd0400d0b30e080c00000011000c00 *bdbd040028bd09080000000010000c00ebbd0400001805080000000010000c0011be0400d0fa11 *08040000001100100042be040070a90e080c00000011000c0062be040020f31108040000001100 *10008ebe0400c03510080500000012000c009dbe0400cc320b080000000010000c00cbbe040034 *c61108000000001000100000bf0400dc720f083700000012000c0019bf0400082b0e0818000000 *11000c0042bf0400c4690c082000000012000c0068bf040034b70b085000000012000c0085bf04 *00dcd104080000000010000c00aabf0400fcf60d080300000012000c00d0bf0400000000007c00 *000012000000e3bf04006eb00f083800000012000c00f0bf040000fb1108040000001100100013 *c00400a82a0d082000000012000c0043c0040020d01108040000001100100065c0040000b40908 *0000000010000c0093c00400600012080400000011001000a9c004000caf0e080800000011000c *00c1c004006c330e080c00000011000c00eac004002cd311080400000011001000ffc0040020bc *120804000000110017000cc104004c200c080c00000012000c0026c10400f0050c085500000012 *000c003bc1040004f60e080800000011000c0050c10400c4910c080c00000011000c0067c10400 *f0300c080800000011000c0080c1040064f6110804000000110010009dc10400e4e51108040000 *0011001000bcc1040064de11080400000011001000e7c10400c0970c080800000011000c00fec1 *0400245a0b080000000010000c002bc2040054070a080000000010000c0054c20400c0b7090800 *00000010000c0084c204008cb40b080700000012000c009ac20400ece011080400000011001000 *c4c20400989f0f080800000011000c00d7c20400acf31108040000001100100008c30400a4000d *083a00000012000c0029c30400bc260b080000000010000c0059c3040018081208040000001100 *10007cc3040000061208040000001100100092c3040008860b080000000010000c00bec3040024 *bc12080400000011001700d2c304003c9f05080000000010000c0004c4040000c4110800000000 *1000100047c4040010730e085b00000012000c0064c40400e45010081a00000012000c0077c404 *00e0f0110804000000110010008dc4040088ed11080400000011001000a7c40400e4290d080c00 *000012000c00d5c4040090140a080000000010000c00fbc4040044001208040000001100100013 *c5040044d10e080800000011000c0028c50400c4f50d082000000012000c0042c5040074e11108 *04000000110010005bc5040064d7110804000000110010007ac50400f9bb0f080800000012000c *0088c5040004dd11080400000011001000abc5040099ac10082600000012000c00b8c5040064f1 *11080400000011001000cfc5040044f70d080300000012000c00f6c50400b8f20c080c00000012 *000c0017c6040078200a080000000010000c003fc60400186b0c080800000011000c006bc60400 *784305080000000010000c00a0c60400fc2310080c00000011000c00b3c6040010d21108040000 *0011001000cdc60400a4d811080400000011001000e7c6040084230f080800000011000c0015c7 *04003c0d0d085b00000012000c0032c70400949b0d081000000011000c004fc70400f8420a0800 *00000010000c0077c7040018240a080000000010000c009ec704005c260d085300000012000c00 *c9c704006c5f0d080800000011000c00fac70400286b0c080600000012000c002ac804004c0410 *081a00000012000c003fc80400aca2110800000000100010006ac80400085e0f08100000001100 *0c0085c8040048f0110804000000110010009bc80400c80512080400000011001000b1c8040048 *7e0f085100000012000c00d4c80400c4ed11080400000011001000fac8040078370a0800000000 *10000c0023c9040098dd0b086900000012000c0038c904004cc91108000000001000100070c904 *0094cc0e082500000012000c008ac9040004140e085b00000012000c009dc90400580612080400 *000011001000b3c904001cbe0b080700000012000c00c8c904008c440a080000000010000c00ee *c90400a4e50f082d00000012000c0001ca0400ec060c080300000012000c001bca040090e90b08 *0300000012000c003eca040080d21108040000001100100059ca0400c4fe110804000000110010 *0073ca040084d71108040000001100100095ca040070dd11080400000011001000b4ca040008e7 *0b083700000012000c00caca040045791008fc0d000012000c00d9ca04003c0f0a080000000010 *000c0008cb04003cd51108040000001100100025cb040050dd0b080300000012000c0042cb0400 *6c050a080000000010000c0072cb040094dc1108040000001100100095cb040034df1108040000 *0011001000c2cb0400c8050c080800000011000c00dbcb04007cbf1108000000001000100018cc *0400901805080000000010000c003fcc0400e4300c080800000011000c005bcc0400dcef0d0810 *00000011000c007acc0400701b0d080c00000011000c0097cc0400dcba0a080000000010000c00 *cccc0400d0e30e085900000012000c00fbcc040094720e080c00000012000c001bcd040024fc0c *083d00000012000c0038cd040064950f085b00000012000c0059cd04003ce81108040000001100 *100084cd0400cc1d0e080c00000011000c00a5cd040084a40e080800000011000c00bacd040068 *e911080400000011001000f2cd0400d0011208040000001100100014ce040034160b0800000000 *10000c0043ce040014240c083d00000012000c005cce040028d41108040000001100100073ce04 *0000b9120804000000110017007dce0400d0fb1108040000001100100093ce040080040f080800 *000011000c00afce0400440d0f081000000011000c00c8ce0400b0fa0d080c00000011000c00e0 *ce0400d8c71108000000001000100017cf0400441205080000000010000c003ecf04004cd70e08 *0500000012000c0067cf04008cc3110800000000100010009fcf0400204510083d00000012000c *00b4cf040030bb12080400000011001700becf040017e50f088d00000012000c00d2cf04001ca1 *0f080800000011000c00e5cf040084370f080800000011000c0000d00400b8f111080400000011 *00100015d00400dce01108040000001100100040d00400c46910080800000011000c0055d00400 *56d90f087000000012000c0066d00400b0f41108040000001100100088d0040028e81108040000 *0011001000b4d004004cce0b080c00000011000c00d9d00400603310080e00000012000c00e9d0 *040004cd1108000000001000100019d1040048ec09080000000010000c003fd10400b099040800 *00000012000c0046d10400083310080600000012000c005ad10400acea11080400000011001000 *80d10400b8f9110804000000110010009fd104008c690e080c00000011000c00bfd1040028cd0d *080500000012000c00ded10400c05e0c080600000012000c000cd2040078f60e085b0000001200 *0c0024d20400fc830a080000000010000c0057d20400bcf5110804000000110010007bd20400f4 *d2110804000000110010009dd20400bc6007080000000010000c00c4d20400e0910c0810000000 *11000c00d9d2040038d811080400000011001000f5d20400c4d4110804000000110010000fd304 *00fcfe0b080c00000012000c0024d3040098e31108040000001100100042d30400e4c511080000 *00001000100070d30400b02a07080000000010000c0093d30400aca911080000000010001000c5 *d30400b88a0e080800000011000c00e0d3040028480e080c00000012000c000dd40400d4890d08 *1100000012000c0034d40400d44307080000000010000c005bd4040000b2110800000000100010 *0085d404004cd2110804000000110010009fd4040030e911080400000011001000d0d404007c8c *0b080000000010000c00fed40400cf7810080100000012000c0010d5040008f611080400000011 *00100031d50400c0f7110804000000110010004bd5040038070e080c00000012000c0068d50400 *240a0d081000000011000c007ed50400b88a0e085700000012000c009ad50400b82f0e08180000 *0011000c00c3d504002c210e080c00000011000c00e5d50400381e0e085b00000012000c0007d6 *040054e00b087d00000012000c0022d60400c4d6110804000000110010004bd6040060c2090800 *00000010000c0089d6040044d90b080c00000011000c009cd60400986007080000000010000c00 *c5d60400e9bb0f080800000012000c00d6d6040050d911080400000011001000ffd60400e00312 *08040000001100100022d70400b8cd0e085500000012000c003ed7040088270b08000000001000 *0c0063d7040084060a080000000010000c0092d704009c0710082c00000011000c00a0d7040084 *550f082f00000012000c00b4d7040048150e085b00000012000c00cad70400a8df110804000000 *11001000fcd7040014290d080c00000011000c0028d80400a8ca0c080c00000012000c003dd804 *00dc4b0a080000000010000c0072d8040014340a080000000010000c009ad804000cef09080000 *000010000c00bfd80400a0fd11080400000011001000d8d8040050890c080300000012000c0003 *d90400307e0c082300000012000c001cd90400d0c80b080700000012000c0030d90400b4410708 *0000000010000c0053d90400f4910f085b00000012000c0067d90400e0d6110804000000110010 *0098d9040040f511080400000011001000bbd9040014760d082600000012000c00dbd90400a0e3 *11080400000011001000fdd90400dcd11108040000001100100015da0400988e0b080c00000011 *000c0040da0400d87d0f085b00000012000c0061da040018a00c083200000012000c0088da0400 *444307080000000010000c00b0da040024fb11080400000011001000d5da04001cb00c084b0000 *0012000c00efda0400b0f70d080600000012000c0016db0400f42e0c080c00000012000c0031db *04001c0910080c00000011000c003fdb0400b8d0110804000000110010005ddb040028e1110804 *0000001100100083db04005cb211080000000010001000aadb0400dc330e085000000012000c00 *d6db040050da11080400000011001000f2db040074dc110804000000110010000adc040010110c *081000000011000c0026dc04000ce909080000000010000c005adc0400a8f81108040000001100 *100070dc04002c330e080800000011000c009fdc0400504e07080000000010000c00c4dc040030 *2e0c082900000012000c00e0dc040004a70b080800000011000c0008dd040044d5110804000000 *1100100025dd04001c0910084001000012000c0032dd040018d0110804000000110010005ddd04 *0098c41108000000001000100092dd040038d411080400000011001000aadd040080a411080000 *000010001000d7dd0400101f0e085b00000012000c00fadd040088250d082600000012000c002b *de040050170b080000000010000c005dde040080aa0e080500000012000c007fde04002cb30d08 *1000000011000c00a1de040088dd0c080800000011000c00b5de0400d8610b080000000010000c *00e6de040028f21108040000001100100004df0400403c0a080000000010000c002bdf0400f82b *0f082600000012000c004edf0400288e0d080c00000012000c0076df040074610b080000000010 *000c00a7df0400d4390e080c00000011000c00d5df04000c6c10080c00000011000c00e7df0400 *78c3110800000000100010001ae004007cf909080000000010000c0046e004004c8c0f085b0000 *0012000c0067e00400d89805080000000010000c0091e0040098e011080400000011001000b0e0 *040018620f082000000012000c00c4e004006deb0f081c00000012000c00dce004000c1c0e082a *00000012000c00fee00400e8960c085b00000012000c0015e10400b02e0b080000000010000c00 *43e10400280810080800000011000c004fe104006fd40f082100000012000c0068e1040008bc0b *080300000012000c0085e1040048a70e085b00000012000c009be1040080610d080c0000001100 *0c00bce104004c0710082400000012000c00cee1040064e91108040000001100100009e2040050 *f70d080800000011000c002ce204003cdd1108040000001100100053e2040090310c08db000000 *12000c0066e20400b97810081600000012000c0075e20400e8420e080c00000012000c00abe204 *00ccd111080400000011001000c7e2040014e10d081000000011000c00e6e2040018fb11080400 *0000110010000be30400b8cd0e081000000011000c0026e3040070fa0f082200000012000c003a *e304002ec00f082700000012000c0049e30400e8060a080000000010000c0070e3040030c40508 *0000000010000c00a1e3040028690f081000000011000c00b5e30400a0f7110804000000110010 *00cfe3040054b30b085200000012000c00ebe30400a8051208040000001100100010e404006ca5 *0d081000000011000c0036e4040078210c082300000012000c0053e4040014170b080000000010 *000c0091e40400c44205080000000010000c00bde4040058d40e080c00000011000c00e6e40400 *30b10e085900000012000c00fbe40400b4ca0d085b00000012000c0015e5040024fc0c08100000 *0011000c0031e50400144810089500000012000c0044e50400404205080000000010000c006be5 *0400a8f20e080500000012000c008be50400e05e0c080600000012000c00bce5040014050d0817 *00000012000c00dae50400385d0c082000000012000c0004e604004cea11080400000011001000 *2be6040058091208000800001100100040e6040000cd0c082300000012000c005de60400c48f0f *085100000012000c0080e6040000eb0e080800000011000c00a1e6040054f21108040000001100 *1000b8e60400b8050c080800000011000c00cee6040028f811080400000011001000ece604007c *fe1108040000001100100002e70400a4ce0c080c00000011000c0017e70400e0e10b0854000000 *12000c0030e7040089bb0f080b00000012000c003de70400dcea1108040000001100100064e704 *00206810080800000011000c0079e70400bc5c10080800000011000c008ce7040010da11080400 *000011001000a9e70400c88a0f085b00000012000c00cae70400c8fd0e085b00000012000c00e2 *e704007cfd1108040000001100100007e80400b0070d080c00000012000c001fe804005cd71108 *04000000110010003de8040018310f085900000012000c0058e80400cc920f085100000012000c *007be804002cf311080400000011001000a7e80400407b08080000000010000c00e2e80400c8d5 *11080400000011001000fee804001bcd0f080600000012000c0016e9040016b10f083800000012 *000c0022e9040014dc0b080800000011000c003ee90400cce70b088700000012000c0055e90400 *2003120804000000110010007ae90400888f0d082000000012000c0090e9040058170508000000 *0010000c00b9e90400e4110f080c00000011000c00cee90400f0cf11080000000010001000fce9 *0400f4d4110804000000110010001aea040034830f085b00000012000c003bea040090680c080c *00000011000c0069ea040014450a080000000010000c0095ea0400b01805080000000010000c00 *beea0400c8e811080400000011001000e6ea0400601d0e085b00000012000c0008eb0400ecee0c *085400000012000c0030eb0400bc6007080000000010000c0058eb0400b4a21108000000001000 *100079eb040064f20c080c00000012000c0096eb040058d911080400000011001000bdeb040014 *a211080000000010001000e4eb040088310f085900000012000c00ffeb0400705d100808000000 *11000c001bec0400b8001208040000001100100040ec040088e01108040000001100100064ec04 *0074e80b080c00000011000c007bec0400c8850b080000000010000c00a2ec0400a80312080400 *000011001000c7ec040074e50e086000000012000c00faec04007ca10d085600000012000c001c *ed040000dd0b080800000011000c0036ed040008170b080000000010000c006bed04006c3d0a08 *0000000010000c0094ed0400505610081000000012000c00aaed040048c9110800000000100010 *00d6ed040030f711080400000011001000f0ed04007ca30b080c00000011000c000fee0400fcc3 *1108000000001000100050ee04008cc30e082300000012000c0065ee040080f011080400000011 *0010007bee0400f4c511080000000010001000adee040098b709080000000010000c00daee0400 *c88508080000000010000c0016ef0400a8c31108000000001000100046ef040094a70f08080000 *0011000c0066ef0400bcd41108040000001100100082ef0400799a04080000000010000c0092ef *0400e0f10c080800000011000c00afef040094d011080400000011001000cfef040058b6090800 *00000010000c00fdef0400c0f11108040000001100100012f0040088e00d085d00000012000c00 *3af00400a4970b087d00000012000c0057f00400e0580b080000000010000c0084f004006c6310 *080800000011000c0097f00400ecd011080400000011001000aff00400ec500f080c0000001100 *0c00c8f00400f0f411080400000011001000ebf00400f05e0c080800000011000c001af1040084 *3d0c084600000012000c003df1040080b20e085b00000012000c005af10400381c0e0805000000 *12000c007bf1040038070e080c00000011000c0097f1040034170e082000000012000c00adf104 *0020220e084300000012000c00c8f1040088b809080000000010000c00fbf10400a04010082200 *000012000c0014f2040004a10b083700000012000c002ef2040020dd1108040000001100100044 *f20400b08d0b087300000012000c0062f20400c0160b080000000010000c0095f20400ec3a1008 *c100000012000c00a2f2040030e00b080300000012000c00bef20400a46007080000000010000c *00e6f20400b0f81108040000001100100002f304002c8c0b080000000010000c002ff3040090a8 *110800000000100010005af30400106910081e00000012000c0070f30400d8e70e080c00000011 *000c0092f3040028960d085900000012000c00a8f304006cc311080000000010001000ddf30400 *70f011080400000011001000f4f30400b4770c080c00000011000c0011f4040040b21108000000 *001000100036f40400dc880f085b00000012000c004af40400d8160b080000000010000c0081f4 *04003c1e0f081700000012000c009ff4040078910e081800000011000c00c6f4040084c30b0807 *00000012000c00e2f40400a0bb12083400000011001700ecf4040094dd11080400000011001000 *13f504003cff0b080c00000011000c0029f504008cb70a080000000010000c0057f50400e4b111 *0800000000100010007cf504008c6f0f082f00000012000c0090f5040080510f080c0000001100 *0c00a2f50400385c0a080000000010000c00dff50400bcda11080400000011001000f8f504000c *d1110804000000110010001df6040068cc110800000000100010004cf60400e4bc0c0827000000 *12000c0069f60400d06107080000000010000c0092f6040038cd0b080c00000011000c00aaf604 *00d09705080000000010000c00d4f60400b0d311080400000011001000ebf6040068d211080400 *00001100100006f70400cce80b080800000011000c0027f70400b0070d080c00000011000c003e *f70400786a10080800000011000c0054f7040084670e084000000012000c0078f70400b4e01108 *04000000110010009df70400688d0f080800000011000c00b0f70400c0f6110804000000110010 *00caf70400dce311080400000011001000eff7040024450a080000000010000c001ef80400c0ba *120808000000110017002ef8040078f60e080800000011000c0045f804001cc811080000000010 *00100078f804005004120804000000110010008ef80400d4850f080800000011000c00a1f80400 *f01a08080000000010000c00d0f80400ece311080400000011001000eff8040070d61108040000 *00110010001bf9040000000000470000001200000030f904004c00120804000000110010004af9 *040040bc1208780000001100170059f9040030f4110804000000110010007ef9040040210d0811 *00000012000c00a8f90400202d0a080000000010000c00d4f9040058bb11080000000010001000 *12fa040028101008d401000012000c001ffa040030d01108040000001100100042fa0400b0a80f *080800000011000c0055fa0400e0e81108040000001100100086fa04005c920f085b0000001200 *0c00a7fa040014f50d080c00000011000c00bffa0400c4cd0b080c00000011000c00d3fa04008c *1e0f080c00000011000c00f0fa0400b85b0e084400000012000c0014fb0400f4c3110800000000 *100010004ffb040014b70e082000000012000c0063fb040010f7110804000000110010007dfb04 *00f0400c080700000012000c009bfb040070a711080000000010001000c4fb0400fc310f081000 *000011000c00ddfb0400ecea1108040000001100100004fc040084b90b080600000012000c0025 *fc0400b8860c081000000011000c004dfc040028a90e080800000011000c0074fc0400ccf60d08 *0c00000011000c0091fc040094240d080c00000011000c00bafc0400e4dc0b080300000012000c *00d8fc04003ee20f082300000012000c00e9fc040098a60b082f00000012000c0003fd0400bcc3 *1108000000001000100035fd04000c5c06080000000010000c005ffd0400e8ec11080400000011 *0010007efd040040001208040000001100100096fd0400d05210080f00000012000c00a9fd0400 *004c0f082000000012000c00c9fd040098960d080c00000011000c00defd0400a8e90b08030000 *0012000c0003fe04008cd41108040000001100100020fe0400a44b10089500000012000c0037fe *040064d60b083600000012000c0057fe040004980f080800000011000c006afe040054710f0820 *00000012000c0080fe0400d4340f083000000012000c0096fe040000310c080700000012000c00 *a8fe040020170b080000000010000c00e7fe040070d0110804000000110010000aff040008ed0f *085900000012000c0019ff040088dd0c085b00000012000c002eff0400202f0c080c0000001200 *0c004cff0400bdf80f089300000012000c005aff0400d4fb0c080c00000011000c006fff040000 *000000d30000001200000083ff040030bc1208040000001100170091ff04004ce7110804000000 *11001000b1ff04005c290c081000000011000c00cbff04000cbe0b080800000011000c00ebff04 *006c320c080700000012000c0001000500004707080000000010000c0024000500fcd211080400 *0000110010004400050054250d080c00000011000c0073000500c09e05080000000010000c00a0 *000500600812080400000011001000c4000500d00712080400000011001000e700050074640608 *0000000010000c00110105000c9d0b080c00000011000c00410105000cb2110800000000100010 *006b010500544207080000000010000c0092010500a0ec11080400000011001000b701050028f5 *11080400000011001000da0105006ca50d082900000012000c0001020500f0d911080400000011 *0010001e020500346207080000000010000c00420205006cbf0f08c200000012000c004a020500 *dceb1108040000001100100070020500c4ab0e080c00000011000c00840205001ce01108040000 *0011001000b2020500707d0f080800000011000c00d2020500c8780e085b00000012000c00ee02 *0500f05f07080000000010000c0017030500701c0d085b00000012000c0036030500680a1008d4 *01000012000c004303050050fc1108040000001100100063030500cc4207080000000010000c00 *8a030500cc5106080000000010000c00b3030500a4cb11080000000010001000e403050038ef11 *080400000011001000fb0305009ced0b080300000012000c001404050088730f085b0000001200 *0c0035040500005f0c080600000012000c0068040500b0190f080300000012000c008d040500c4 *ec0e080c00000011000c00b004050070970d086e00000012000c00c9040500e861070800000000 *10000c00f6040500d85f07080000000010000c0018050500445f0f085b00000012000c00390505 *00f05e0c080600000012000c006905050080db0b083900000012000c007c050500f80012080400 *0000110010009f050500a4d611080400000011001000d00505002c9a0b080700000012000c00ee *0505004dec09080000000010000c0015060500a0210f081800000011000c003d060500e0f50e08 *0500000012000c00570605003ccc11080000000010001000900605008c6b10080c00000011000c *00a2060500fca40f085100000012000c00c5060500ec240d080c00000011000c00ee060500c4eb *0b080c00000012000c0005070500404205080000000010000c002d07050018740e083e00000012 *000c004f07050098e51108040000001100100064070500f4f00c081000000011000c0087070500 *e4110f080c00000012000c009d070500949d0d080800000011000c00b1070500288a0d08180000 *0011000c00d20705005c030c082000000012000c00e907050074170b080000000010000c002008 *0500c0d6110804000000110010004b08050000a00f080800000011000c006b08050018ca0c080c *00000012000c007f08050000380e080c00000011000c00ab0805003caa0d080500000012000c00 *cd08050015bb0f082300000012000c00da0805004cfb11080400000011001000fe08050078d611 *0804000000110010002a09050028b909080000000010000c005d09050004d31108040000001100 *10007a09050094cc0e081800000011000c009309050040e211080400000011001000b20905009c *970b080700000012000c00ce090500446d0e085400000012000c00e9090500649c0c0844000000 *12000c000c0a0500f0990f080800000011000c002c0a0500689b0c081800000011000c00430a05 *00ac1e06080000000010000c00740a050024fe0d085b00000012000c00910a05004c860d084300 *000012000c00bc0a05005cde0b080700000012000c00cf0a050024bc0b080700000012000c00e8 *0a05008c170b080000000010000c001e0b050038320a080000000010000c00450b05009c651008 *0800000011000c00590b0500900810087d00000012000c006c0b0500583110080c00000011000c *00920b0500781e0a080000000010000c00b90b0500e48b0f080800000011000c00cc0b050010fb *0b080c00000011000c00e00b050040f80d080800000011000c00030c05001ce411080400000011 *001000230c0500c0fd110804000000110010003f0c05005cb111080000000010001000630c0500 *a8d5110804000000110010008b0c0500f86007080000000010000c00b30c0500006a10081e0000 *0012000c00ca0c0500180412080400000011001000e00c0500f09805080000000010000c00070d *050074dd0b080800000011000c00240d0500c86110084900000012000c00380d0500a02f0f085b *00000012000c00540d0500185010081e00000012000c00690d050008f109080000000010000c00 *960d050078f611080400000011001000b60d0500b8460e080c00000011000c00e10d05002c800e *085b00000012000c00050e0500001e0c080800000011000c00230e050098011208040000001100 *1000480e0500c47f0f085b00000012000c00690e05008c9f05080000000010000c00890e0500a4 *9905080000000010000c00b80e0500fc310f083000000012000c00d20e050024e90b0808000000 *11000c00f60e050008b609080000000010000c00280f0500c003120804000000110010003e0f05 *000cbf0b087300000012000c005b0f0500f3b90f082000000012000c00680f0500e4e711080400 *000011001000930f0500b0d711080400000011001000b70f050034b20b082500000012000c00d3 *0f050068ef11080400000011001000eb0f0500ecc40c080600000012000c000f1005002c4f0c08 *2000000012000c0038100500fcfe0b081000000011000c004c1005005c1d0a080000000010000c *0071100500141610082a02000012000c007f100500c8860a080000000010000c00b2100500ecf6 *0e085b00000012000c00ca100500c0200e080c00000011000c00ec100500f44207080000000010 *000c001211050040031208040000001100100028110500a0ac0e080c00000012000c003e110500 *ccea1108040000001100100065110500fc8c0c080c00000011000c007d1105007c8c0b08000000 *0010000c00aa11050078d311080400000011001000c611050048f60d080c00000011000c00e111 *0500fce3110804000000110010000a12050000d70f081b00000012000c001d120500c0bb0b080c *00000011000c0032120500a8ba120804000000110017003e120500d43510080c00000011000c00 *4d1205000c250d081300000012000c007712050088d9110804000000110010008c12050014ee11 *080400000011001000b5120500c8810c080300000012000c00d7120500d4630c08230000001200 *0c00fe12050060d11108040000001100100017130500c0e90b080800000011000c003d130500ac *4c0c080c00000011000c0064130500d4b0110800000000100010008a13050074d70e0805000000 *12000c00b313050010a40e080800000011000c00c8130500aca10e080800000011000c00dc1305 *00bc4b0e080c00000011000c00111405002c330e080600000012000c0041140500000000006305 *0000120000004c14050058970f085100000012000c006f14050048f80e085b00000012000c0087 *140500d80212080400000011001000ac140500a8ce0e081000000011000c00c514050068f70d08 *0300000012000c00f0140500e81e0d080700000012000c000915050038b2110800000000100010 *002d15050084a71108000000001000100062150500c0af0f083800000012000c006f150500cc18 *0c081000000011000c008915050048160b080000000010000c00c2150500005110081a00000012 *000c00d6150500f0db0b080c00000012000c00ee1505005ca60e085b00000012000c0004160500 *d0b812080400000011001700131605006cc90b082d00000012000c002a1605005ccc1108000000 *00100010006116050030f0110804000000110010007b16050028d8110804000000110010009316 *05003c460f085400000012000c00bb160500541e0d080500000012000c00d2160500f051070800 *00000010000c00f916050088d61108040000001100100028170500e0ee11080400000011001000 *461705007cd00b080c00000011000c005e17050030db0b080c00000012000c007317050048ff0c *080c00000011000c0095170500e0d811080400000011001000b01705007c201008720300001200 *0c00c11705000cad0e080c00000011000c00d817050030d40e081900000012000c0002180500e0 *ce1108000000001000100032180500d0bb09080000000010000c006718050078810e085b000000 *12000c007f180500e4a911080000000010001000b418050044d90b082300000012000c00c81805 *00f0810e085b00000012000c00e8180500c8050c080600000012000c00021905006c9f05080000 *000010000c003c190500c46107080000000010000c00681905009c6510084900000012000c007d *190500b0fc110804000000110010009419050004a30d087200000012000c00b5190500441b0808 *0000000010000c00e2190500b8840f085b00000012000c00031a0500788e0d080c00000012000c *002b1a0500201805080000000010000c00551a0500f0220e080c00000012000c006b1a0500c4e7 *11080400000011001000961a050074650c080c00000011000c00c11a050038c911080000000010 *001000f11a0500986007080000000010000c001b1b0500605610088d00000012000c00291b0500 *58530f085900000012000c003f1b050018a00c081000000011000c00651b050008670a08000000 *0010000c00981b050094240d082100000012000c00c21b0500001e0c080300000012000c00e11b *050020cc11080000000010001000101c0500388b0f081000000011000c00331c050004370f080c *00000011000c004f1c05000ce011080400000011001000731c0500b0df0b086900000012000c00 *891c05002cc40b085f00000012000c00a81c0500f8b80f082f00000012000c00b41c0500bcb111 *080000000010001000e41c050094110e080c00000012000c00fa1c050000021208040000001100 *10001f1d050034ed11080400000011001000451d0500f0e4110804000000110010005e1d050020 *0612080400000011001000811d0500f0dd11080400000011001000a11d05008c440a0800000000 *10000c00c81d0500b0710e085b00000012000c00eb1d0500000000007f00000012000000fe1d05 *00b0b809080000000010000c002d1e0500101805080000000010000c00541e0500b0d70e080c00 *000011000c007d1e0500006207080000000010000c00a51e0500884807080000000010000c00ca *1e050024450a080000000010000c00fa1e0500a4e011080400000011001000241f0500c8de1108 *04000000110010004d1f0500dcb111080000000010001000731f050038f2110804000000110010 *008f1f0500a4b90b080600000012000c00ad1f0500cccf11080000000010001000dc1f05005060 *07080000000010000c0004200500c0030e080c00000012000c001c200500e4e011080400000011 *00100049200500000000000d020000120000005b2005006c9b0e080c00000011000c0076200500 *d05207080000000010000c009a2005000c7410084f00000012000c00b1200500ccf81108040000 *0011001000cf200500c8e20f084f02000012000c00df200500dc6c0e080800000011000c00fe20 *050028690f082000000012000c001321050014ce1108000000001000100043210500d8910e0805 *00000012000c006a21050088f01108040000001100100092210500e84e0c083700000012000c00 *bc210500dcba0a080000000010000c00f0210500440c0d080c00000011000c000c220500646107 *080000000010000c0036220500d4a411080000000010001000632205006c1d0f085b0000001200 *0c0081220500c4b611080000000010001000b2220500f4db11080400000011001000dc220500dc *d20b080c00000011000c00f62205000c1e0c085500000012000c000b23050038170b0800000000 *10000c0048230500c4d011080400000011001000652305006c4307080000000010000c008f2305 *000ce111080400000011001000a72305005cf111080400000011001000c623050030c20c080c00 *000011000c00dc230500c86007080000000010000c0007240500d4b11108000000001000100034 *24050054cd1108000000001000100066240500a4d0110804000000110010007f240500ec060c08 *0800000011000c0098240500402b0e082000000012000c00c8240500c002120804000000110010 *00eb24050044eb09080000000010000c00112505005dcf0f080800000012000c002125050034e3 *0e080c00000011000c004f25050028b409080000000010000c0080250500446d0e080c00000011 *000c009a250500e41a10080c00000011000c00aa2505006c2a0d081000000011000c00da250500 *7ccb0c080c00000011000c00f6250500b04b0c080c00000011000c001f260500a09e0508000000 *0010000c004c2605009c0e0c082000000012000c00622605008cdd0b080800000011000c007e26 *0500c0680f080c00000011000c00a12605009cc50b080700000012000c00c326050060820e080c *00000011000c00e5260500e4130e080800000011000c0000270500fc9d0d080c00000012000c00 *1627050030c91108000000001000100044270500e43a10080600000012000c005927050070d20e *085b00000012000c008427050054471008be00000012000c009b270500248e0c080c0000001200 *0c00b1270500a4c40c080800000011000c00d4270500946107080000000010000c00fd270500ac *4c0c080c00000012000c002528050054c705080000000010000c00582805006cc7110800000000 *1000100088280500f8de0e081000000011000c00b3280500c09e05080000000010000c00e12805 *00a4dc1108040000001100100000290500a0290e080800000011000c00282905001ceb11080400 *0000110010005029050084fb0c082000000012000c006d2905004cea0a080000000010000c009d *2905005c9f05080000000010000c00d3290500d44c10089500000012000c00e429050050840f08 *5b00000012000c00f829050044a90e080600000012000c00212a050098dc110804000000110010 *00412a0500e43b0f081000000011000c00582a050030df11080400000011001000852a050080ec *0b080c00000011000c00972a0500c47f0f080800000011000c00b72a0500e0fc0e085b00000012 *000c00cf2a0500c0fb0d081000000011000c00e32a050060df110804000000110010000c2b0500 *10750c085a00000012000c00262b050038120f082700000012000c00402b0500b8b90b08560000 *0012000c005b2b0500b06007080000000010000c00872b0500e8960f085b00000012000c00a82b *050068ed11080400000011001000c82b0500f86c10080c00000011000c00da2b0500d435100829 *00000012000c00e82b050004fa0c080c00000011000c00002c050050d511080400000011001000 *1d2c0500b80d0d085b00000012000c00412c050050e611080400000011001000652c050058ef11 *0804000000110010007d2c0500b0de11080400000011001000a92c0500eca21108000000001000 *1000d62c0500a0df110804000000110010000b2d050040fe0f081400000012000c00172d0500e4 *e90b080300000012000c00352d050035f70f088700000012000c00432d05006885050800000000 *10000c006b2d0500e0bc12080010000011001700762d050038fe11080400000011001000942d05 *0058b211080000000010001000b92d0500c8f311080400000011001000e82d050074f111080400 *000011001000032e05004cce0b083f00000012000c00292e0500c0a1110800000000100010003d *2e0500000000004c00000012000000542e0500d8450f085b00000012000c00762e050010e31108 *0400000011001000922e0500000000007f020000120000009d2e050090f4110804000000110010 *00c02e0500e8e011080400000011001000ea2e050024340d081000000011000c00192f050034d9 *11080400000011001000332f050060dc0b080300000012000c004e2f0500d0f111080400000011 *0010006d2f0500900612080400000011001000832f050000fe11080400000011001000a32f0500 *c8e211080400000011001000ca2f0500a02f0f080800000011000c00e52f0500788f0d08080000 *0011000c0002300500880112080400000011001000253005003c710e080800000011000c004630 *050040140f085900000012000c005b3005001ca30e080800000011000c00703005003cd8110804 *000000110010008b300500245b10080800000011000c009f30050034800f081000000011000c00 *c1300500fc1a0f080800000011000c00dd30050070b70d080500000012000c0001310500b45f0f *081000000011000c0023310500e0fb110804000000110010003b310500c0e91108040000001100 *10005e3105001c5610083100000012000c007331050000000000de000000120000008231050004 *cc0d080800000011000c0095310500d8e311080400000011001000ba31050044dc110804000000 *11001000ce310500a4640a080000000010000c000d32050094a811080000000010001000383205 *0088a90f081000000011000c005a320500284b0f085b00000012000c00753205002c9905080000 *000010000c009e320500000000006100000012000000af320500ec040f080800000011000c00cb *320500e48e0d080c00000011000c00f132050034770c080800000011000c000f33050018cc0508 *0000000010000c003e33050008d2110804000000110010005533050038860d080500000012000c *0076330500d0b60b080c00000011000c008d330500bd051008f300000012000c00a03305001000 *12080400000011001000c3330500b8ba0e080c00000012000c00e03305005c1a0e082f00000012 *000c0002340500b8e11108040000001100100019340500ec8f0c085900000012000c002e340500 *90f70b080c00000011000c004334050090001208040000001100100066340500b4400a08000000 *0010000c008c34050018ca0c081000000011000c009f34050044f211080400000011001000b634 *05002cf00b080c00000011000c00cf3405009cfe11080400000011001000e734050008fa110804 *0000001100100007350500749f0c081000000011000c0025350500f0d111080400000011001000 *3c3505000cf40e085b00000012000c005f35050058a806080000000010000c0089350500e00112 *080400000011001000ac3505007c9f05080000000010000c00d335050094a11108000000001000 *f1ffe6350500184310088400000012000c00f6350500d81c0d082300000012000c001336050048 *a70b080700000012000c002836050074cd110800000000100010004e36050064ab0b080c000000 *11000c00643605004c2d0c080800000011000c007f36050088a711080000000010001000af3605 *00480212080400000011001000d4360500c8780e080800000011000c00ef36050020c10e081000 *000011000c000737050038f5110804000000110010002a3705000ece0f088f00000012000c0038 *370500e8ac0b082000000012000c00513705001bd70f083b02000012000c005c370500a8030f08 *5b00000012000c0078370500b02d0c080800000011000c009a370500f97110089800000012000c *00ae370500f47e0f085b00000012000c00c1370500cc5106080000000010000c00e9370500501f *0f080800000011000c000538050050f90b080c00000011000c00193805003ce00b080300000012 *000c0032380500887c0c084400000012000c005238050030570b080000000010000c007e380500 *7c580a080000000010000c00ad38050000000000d800000012000000be380500000000001b0200 *0012000000cd380500b0fe0e085b00000012000c00e538050004de110804000000110010000539 *050080eb10085400000012000c001539050028a90e080300000012000c003d39050098d0110804 *0000001100100059390500dc0e0e080c00000011000c006b39050060600f082300000012000c00 *883905008cfd11080400000011001000ae3905000c250d080c00000011000c00d739050048fb0c *081000000011000c00f139050010cc11080000000010001000253a0500e0e11108040000001100 *10003f3a0500b0d811080400000011001000573a05000cd711080400000011001000813a050028 *1905080000000010000c00b13a050094d30e080800000011000c00df3a050090df110804000000 *11001000113b0500b4de0b083f00000012000c00293b0500c4cd0b080c00000012000c003e3b05 *00c4900c080c00000012000c005a3b0500ace311080400000011001000763b050098a711080000 *000010001000a63b050058d40e081900000012000c00d03b0500e0480e080c00000012000c00fd *3b0500142b0e080500000012000c00263c0500a86b0c087d00000012000c00413c0500743b0f08 *3000000012000c005a3c050038320a080000000010000c00823c0500b06007080000000010000c *00ad3c0500d4ba05080000000010000c00d33c050084a811080000000010001000f63c0500c84f *0f080c00000011000c00093d0500d05e0c080800000011000c00393d0500587310082c00000011 *000c004c3d0500a4b90b080800000011000c00693d05000000000010010000120000007e3d0500 *d0630f080c00000011000c00943d0500f8900b080c00000011000c00b73d050058300a08000000 *0010000c00de3d050010750c081000000011000c00f73d05006ce60b081000000011000c000c3e *050078df0b082d00000012000c00263e05007cc5110800000000100010005d3e0500c46d0e080c *00000011000c008e3e050090e111080400000011001000a43e0500b00112080400000011001000 *ba3e050074e80b080b00000012000c00d23e05009c4c0b080000000010000c00f93e0500f4060d *080c00000011000c00153f050098d5110804000000110010003d3f0500ccd41108040000001100 *10005c3f0500b8d811080400000011001000793f050098180b080000000010000c009c3f050078 *e911080400000011001000cb3f050054ed0b080800000011000c00e23f05000cbb0a0800000000 *10000c001340050024c20f080c00000012000c0023400500b8ba0a080000000010000c005b4005 *00e48b0f085b00000012000c006f40050050300e082500000012000c00954005004c2f0c080c00 *000012000c00b0400500dc270a080000000010000c00dd400500dc1705080000000010000c0007 *410500e8440c080700000012000c001e41050018b00e085800000012000c00444105005cc31108 *000000001000100077410500049f0c080500000012000c008e410500f0730f080800000011000c *00ae410500e4050c080800000011000c00ca4105003c6a10080800000011000c00e041050089eb *0f082300000012000c00ee41050080d9110804000000110010000342050020bb12080400000011 *00170015420500f1bb0f080800000012000c002042050084fb1108040000001100100038420500 *98de1108040000001100100062420500bcee0b080c00000011000c0079420500d04e0f082f0000 *0012000c009642050074f311080400000011001000bd420500e8ee0d084c00000012000c00d942 *0500f8a60b080300000012000c00ff420500bc110d085700000012000c0029430500e816120800 *0000001000f1ff3543050044d50c080c00000011000c0050430500a46a0a080000000010000c00 *8243050048fa11080400000011001000a1430500500312080400000011001000c443050014f911 *080400000011001000e9430500082b0e080a00000012000c001344050004ee0b080c0000001200 *0c002a440500246207080000000010000c004e44050010fa1108040000001100100066440500f4 *250d085900000012000c0097440500201d0b080000000010000c00c544050010d3110804000000 *11001000e3440500e0970d080500000012000c00fb44050054b305080000000010000c00304505 *00ac490c080c00000011000c004b45050054160b080000000010000c007b450500f8400c085500 *000012000c009a450500344f1008bd00000012000c00af4505008ccd05080000000010000c00e0 *45050085be0f087f00000012000c00f04505006c080d080c00000012000c0004460500e4840c08 *6b00000012000c002f460500049f0d080800000011000c0046460500f4a40e085b00000012000c *005c4605009cd0110804000000110010007d460500281905080000000010000c00ac460500a4de *11080400000011001000d846050064e211080400000011001000f2460500440912080400000011 *0010000b470500d8160b080000000010000c004147050084ff1108040000001100100063470500 *9c990c082900000012000c007b470500e09d0b086300000012000c009c47050078ed0b08080000 *0011000c00b74705002c6d0e080800000011000c00d7470500a00512080400000011001000fc47 *05002c9b0d085400000012000c001948050094c70e084c01000012000c00384805008ce7110804 *000000110010006b48050054ef0c082300000012000c008f48050034d10c084c00000012000c00 *ac4805003c8c0b080000000010000c00dd480500185005080000000010000c000a490500e0b70f *08ab00000012000c000f490500f8980c080500000012000c003449050060120d08540000001200 *0c0068490500c4a90b080800000011000c0083490500f4d50c080c00000011000c009e4905001c *ca0b080b00000012000c00b44905004c8b0b080000000010000c00e4490500a4eb050800000000 *10000c00114a0500f0f6110804000000110010002b4a0500e4d10f088100000012000c00344a05 *00fc2310081d04000012000c00464a050034cd05080000000010000c00704a050074d60e080800 *000011000c00974a05009c300c080800000011000c00b14a0500d0ce11080000000010001000dc *4a05005c920f080800000011000c00fc4a0500f4f00c082300000012000c00204b050050030b08 *0000000010000c00524b0500e8b709080000000010000c00844b050004b2110800000000100010 *00a84b0500484210083500000012000c00ba4b05004c9f05080000000010000c00f04b0500dc98 *0f085100000012000c00134c0500ac870a080000000010000c00444c0500ccc511080000000010 *001000754c050074e3110804000000110010008b4c050058f811080400000011001000aa4c0500 *b01305080000000010000c00d44c050048d911080400000011001000f54c05003c030f08590000 *0012000c00114d050018b506080000000010000c003e4d0500400412080400000011001000634d *050094ff110804000000110010007a4d050088f911080400000011001000994d050024ce110800 *00000010001000cb4d05003cd911080400000011001000f04d05007cfb0e085b00000012000c00 *084e050098a30e085b00000012000c001e4e0500286610080800000011000c00324e0500100912 *080400000011001000484e0500f2e50f08cb00000012000c005c4e0500643d0e08230000001200 *0c00904e0500e4c611080000000010001000bb4e0500d4d111080400000011001000dd4e0500c8 *c90d085b00000012000c00ef4e0500282406080000000010000c00264f050024300f0808000000 *11000c003b4f0500006a0e081000000011000c005c4f0500a8b90d083000000012000c00754f05 *0054890c080700000012000c00884f0500a06107080000000010000c00b44f0500148c08080000 *000010000c00eb4f0500d89805080000000010000c00165005009cd40c080c00000011000c0029 *500500108e0e081000000011000c004d5005006cc6110800000000100010007750050024371008 *0600000012000c008750050054fd11080400000011001000ac5005005ca60e080800000011000c *00c150050044dd0b080400000011000c00db50050050b70a080000000010000c0008510500189f *08080000000010000c004551050074d3110804000000110010005c51050050f80d080600000012 *000c007f510500a0920d080c00000011000c00a251050078340d082300000012000c00cd510500 *98490e080c00000012000c00fa510500b8f60b082300000012000c000e520500b0170b08000000 *0010000c004d52050028850f085100000012000c00705205007cec110804000000110010009a52 *050054770c080800000011000c00ba520500500012080400000011001000d0520500e0f5110804 *00000011001000fa52050033b30f081700000012000c000353050040ff11080400000011001000 *28530500badb1008f805000012000c00365305003000120804000000110010005b530500041e0c *080700000012000c006f530500c42e0c081000000011000c008953050030d20408000000001000 *0c00a85305008cbf0b080c00000011000c00d4530500fca00b080700000012000c00ed53050058 *6b10082800000012000c0000540500783110085d00000012000c001e5405006c9f050800000000 *10000c005754050084370f085b00000012000c00735405004c5f0d080600000012000c00a05405 *00dcdc0c080800000011000c00b9540500d8460f080800000011000c00d954050000f80d080800 *000011000c00ff540500cc1b0f080800000011000c001b550500b4d31108040000001100100034 *550500108e0e084b00000012000c005955050030f3110804000000110010008155050004aa1108 *0000000010001000af550500f0f10c085b00000012000c00c5550500c01805080000000010000c *00eb550500e0080a080000000010000c00145605000c6207080000000010000c003a5605005b74 *10083600000012000c0047560500689d0f081000000011000c0069560500600112080400000011 *0010008b560500cc8b0e081000000011000c00b756050030d40c082900000012000c00d2560500 *14c50c080300000012000c00ef5605003c5f0d080600000012000c0019570500d83b0c08290000 *0012000c0041570500fcba0a080000000010000c00765705001c0710082d00000012000c008457 *0500a86710080800000011000c009957050010c811080000000010001000da570500a8fc110804 *00000011001000f25705007000120804000000110010000858050064f211080400000011001000 *20580500ec6007080000000010000c004a580500cccb0e080c00000011000c006158050010b20e *085b00000012000c0087580500088b0c080c00000011000c009c58050054dc0b08030000001200 *0c00b4580500a4c311080000000010001000e8580500785307080000000010000c000b59050020 *1f0d080c00000011000c003459050040c60c080c00000012000c004c590500cc9e050800000000 *10000c007a590500981f0c080700000012000c008e59050010cb0c080c00000012000c00a35905 *0070d20e080800000011000c00cd59050000000000fa00000012000000ea590500bc2e0a080000 *000010000c00135a0500000000004600000012000000245a05004809120804000000110010003e *5a0500f0af110800000000100010006a5a050088f105080000000010000c00985a0500acc61108 *0000000010001000c35a05001cc50e081000000011000c00d75a05005c760e084a00000012000c *00fd5a0500801a08080000000010000c002e5b0500b0c40c080300000012000c00555b0500acdc *0b080600000012000c006f5b0500f0160b080000000010000c00975b050044d111080400000011 *001000ac5b050028fa0e080800000011000c00c35b0500f84c0e080c00000011000c00e55b0500 *006a0e085000000012000c00075c05005cdb0c080c00000012000c00245c0500ec9e0f08100000 *0011000c00465c050064950f080800000011000c00665c05002c9905080000000010000c008e5c *050000500f082900000012000c00a25c050090e011080400000011001000cf5c0500ccd90e084e *00000012000c00fc5c0500b8ad0b080c00000011000c00125d050027cd0f08bd00000012000c00 *1e5d050028fb11080400000011001000435d0500dc320c081000000011000c005e5d0500a4170b *080000000010000c00915d05007c4207080000000010000c00b75d050044bb0a08000000001000 *0c00d95d0500280812080400000011001000fe5d050000000000b2010000120000000c5e050094 *a11108000000001000f1ff1d5e0500d8b809080000000010000c00505e050020dd0b0806000000 *12000c006b5e0500e45f07080000000010000c008f5e050070470e080c00000011000c00bb5e05 *00f04b07080000000010000c00e15e0500cc020f085b00000012000c00fd5e050094d70e081800 *000011000c00265f0500dcc20d081800000011000c00455f050038bc1208040000001100170063 *5f05005ce5110804000000110010007b5f05003c140a080000000010000c00a25f0500a0f81108 *0400000011001000b65f05009c5f0d080600000012000c00e25f050084160b080000000010000c *001e60050094f309080000000010000c004c60050044c81108000000001000100080600500201f *0d080c00000012000c00aa60050028590a080000000010000c00df600500e01805080000000010 *000c0005610500f0810e080800000011000c00246105001ce11108040000001100100043610500 *f4d8110804000000110010005c61050080fc0b080c00000011000c00726105003c8c0b08000000 *0010000c00a2610500886910081e00000012000c00b8610500e0480e080c00000011000c00e461 *050010fb0b080c00000012000c00f9610500bcdc0b080800000011000c0012620500088a0a0800 *00000010000c003c620500481d0e080500000012000c005d620500806007080000000010000c00 *88620500ac5210080500000012000c0095620500ac480c082300000012000c00ad620500b4ec0d *080c00000012000c00cd620500b0910c080c00000011000c00e6620500d0f50c080c0000001100 *0c00066305006ce411080400000011001000256305004c09120804000000110010003e630500a4 *f81108040000001100100052630500d8d911080400000011001000716305008c5910080c000000 *11000c0086630500c0870f080800000011000c00a663050004da11080400000011001000c16305 *0040d711080400000011001000dd63050068010e082000000012000c00f1630500b0e311080400 *0000110010000d640500cc0e0d082a00000012000c003464050084e60e085b00000012000c0055 *64050078ad0c082000000012000c00686405008c8c0b080000000010000c009964050074ca1108 *0000000010001000cd64050084cd0e080c00000012000c00e8640500b0d2110804000000110010 *000965050008fe110804000000110010002865050080ae0d084400000012000c00476505008cc3 *0c080c00000012000c0060650500c88e0d080d00000012000c0089650500d0920c085b00000012 *000c00a4650500f41d0c080300000012000c00c06505000ce909080000000010000c00f5650500 *4c6107080000000010000c00216605001cc409080000000010000c005a660500984b0f080c0000 *0011000c0074660500f0f7110804000000110010008866050020b00a080000000010000c00b266 *0500701805080000000010000c00da660500984a0f080800000011000c00f3660500a0b4090800 *00000010000c002467050030fa1108040000001100100044670500fc190b080000000010000c00 *6e670500f0b205080000000010000c009967050024230f082600000012000c00ca670500d8ae0e *080c00000011000c00ee670500fc6c0e080600000012000c000c680500e4c31108000000001000 *100042680500c4230e085400000012000c006068050028b50c080500000012000c007a6805006c *8c0b080000000010000c00a7680500a4a70b085500000012000c00c0680500c8dd110804000000 *11001000e06805003ca20b082300000012000c00fc6805000cf40e080800000011000c001e6905 *00788f0d080300000012000c003c690500b4680b080000000010000c0064690500e85a10080800 *000011000c00736905004cbf0e083500000012000c008969050080cc0d080800000011000c009c *690500a0e811080400000011001000c869050024fd11080400000011001000eb69050044e41108 *0400000011001000106a05007cc211080000000010001000536a05007806120804000000110010 *00786a0500a09e05080000000010000c00a66a0500d45a10080800000011000c00b56a05009086 *0b080000000010000c00df6a05001ceb09080000000010000c00036b05005c1a0e081000000011 *000c00246b0500d46d10089500000012000c00366b0500903810080c00000011000c00456b0500 *94fe0b082000000012000c005a6b050078c705080000000010000c00846b050080760f080c0000 *0011000c00996b0500305f0c084100000012000c00c66b0500086007080000000010000c00f06b *050088a90f085100000012000c00136c050090ff0e085300000012000c00256c0500b0e1110804 *00000011001000456c0500c8d8110804000000110010005b6c0500846207080000000010000c00 *8a6c05006cd70e080800000012000c00b46c050080940b081000000011000c00da6c0500d0f70d *080600000012000c00026d0500341c0f085b00000012000c001f6d05001ce00d08050000001200 *0c00326d05009c1c0f080800000011000c004e6d0500bcfd11080400000011001000666d05008c *5f0d080600000012000c00946d0500d8fd0b080c00000011000c00a86d0500a0ea090800000000 *10000c00db6d0500f0bd09080000000010000c00116e050054c40e081000000011000c00256e05 *00b8460e080c00000012000c00516e0500f8c3110800000000100010008d6e0500706107080000 *000010000c00b76e05006cfc0e085b00000012000c00cf6e0500d0b111080000000010001000f7 *6e05008ce2110804000000110010001d6f0500504b0c080c00000011000c00456f05007cdc0b08 *0600000012000c005c6f050027b90f082000000012000c00686f05006ccd0e080b00000012000c *00836f05003cb211080000000010001000a76f050008880d080c00000011000c00d06f0500f897 *05080000000010000c00f86f050062ec0f085d00000012000c0007700500e8d50d081000000011 *000c0028700500386b0c080600000012000c005470050064d60b080c00000011000c0073700500 *80061208040000001100100098700500689b0c082800000012000c00b0700500ec9e0508000000 *0010000c00de7005006c980f080800000011000c00fe7005006cc8110800000000100010002f71 *0500e0d9110804000000110010004f710500e05210084900000012000c005e710500e82a0e0805 *00000012000c008771050010dc0c081000000011000c009a71050014170b080000000010000c00 *d7710500241d0e082300000012000c00f9710500b4250f082600000012000c001c72050068f611 *08040000001100100034720500e0f1110804000000110010004c72050058870f085b0000001200 *0c0060720500c00112080400000011001000767205007ccb0c085400000012000c009372050038 *ec09080000000010000c00c5720500ac5a10080800000011000c00d4720500dc650e0810000000 *11000c00f772050020cc0b080c00000011000c000f7305005c8a0b080000000010000c00407305 *00886107080000000010000c00657305005fea0f08eb00000012000c007a73050030290a080000 *000010000c00a27305005c260e085b00000012000c00c073050000000000ba01000012000000d3 *7305004cc50f081000000012000c00e17305000c4b10089500000012000c00f373050090e31108 *04000000110010001574050020730f080800000011000c0028740500a47b0c080c00000011000c *003e740500f4fb0e080800000011000c005574050070cf0e084c00000012000c006f74050010e6 *110804000000110010009b740500b0aa0d082000000012000c00bc74050050b20f082a00000012 *000c00c974050020e111080400000011001000e47405008cdc0b080600000012000c00fe740500 *58c10b087d00000012000c001c7505009cfa0e085b00000012000c00347505009caa0d08050000 *0012000c0057750500f8cb110800000000100010008d750500a4b10e081000000011000c00a075 *050074440a080000000010000c00ca75050094f309080000000010000c00f9750500786f0e0830 *00000012000c002176050014030e080800000011000c0033760500080712080400000011001000 *58760500406107080000000010000c008176050054b211080000000010001000a776050030d40e *080c00000011000c00d076050050920c080c00000012000c00e676050004c71108000000001000 *100011770500941e0d080c00000012000c002d77050010d01108040000001100100056770500dc *880f080800000011000c0069770500f0d8110804000000110010008f77050050a70b084b000000 *12000c00a577050050ff0b082300000012000c00be770500ec6c0e080600000012000c00e17705 *0070e111080400000011001000fc770500a4ce0c085900000012000c001278050090d40f082100 *000012000c002578050074bd0b082f00000012000c004278050050f80d080800000011000c0064 *780500c4240d080c00000011000c008d780500f8f511080400000011001000b2780500ac481008 *9500000012000c00c6780500cc630c080700000012000c00ec7805006cc90b080c00000011000c *0002790500c09d05080000000010000c00327905002ced110804000000110010005a790500280d *0c081000000011000c006e79050094d7110804000000110010009079050034fc0b083d00000012 *000c00a97905002cde11080400000011001000c97905005c210c080500000012000c00e4790500 *74bb0e085900000012000c00f979050060aa0d081800000011000c001b7a0500f4f71108040000 *0011001000397a050030c20c083200000012000c00507a0500e01d0b080000000010000c00827a *0500b4650a080000000010000c00b77a0500586107080000000010000c00de7a050094b90b0808 *00000011000c00f87a0500009a0e080500000012000c00117b050038510c081000000011000c00 *3b7b0500642d0c083700000012000c00527b0500b09a04080000000010000c00607b050094590a *080000000010000c009d7b050044060e081000000011000c00b47b0500c8c90d08080000001100 *0c00c57b05005c470c083000000012000c00e07b050010990d080500000012000c00f87b0500b4 *170b080000000010000c00267c050070b709080000000010000c00587c0500980b0f0810000000 *11000c006b7c0500a4000f080c00000011000c007f7c0500e4b90e080800000011000c00947c05 *002cfe0b082000000012000c00a97c050040990b084b00000012000c00c87c0500b84b07080000 *000010000c00ed7c050098f70d080300000012000c00177d0500a4f70d080800000011000c003b *7d0500788e0d080c00000011000c00627d050090160b080000000010000c00917d050018f60b08 *0c00000011000c00a47d0500c8fa11080400000011001000d77d050084b90b080800000011000c *00f77d050074cf11080000000010001000267e0500f4250d080c00000011000c00567e0500a029 *0e085400000012000c007f7e0500e4a90b080800000011000c009b7e050074e809080000000010 *000c00c47e050044de11080400000011001000de7e050098490e080c00000011000c000a7f0500 *48a10b082000000012000c00267f05003c400a080000000010000c005a7f050094de1108040000 *0011001000857f0500282406080000000010000c00bd7f0500fc850d081800000012000c00df7f *050008c90b080c00000011000c00f77f05008cb70a080000000010000c002480050048d5110804 *0000001100100044800500f0ce1108000000001000100072800500a0a111080000000020001000 *7d80050002bb0f081300000012000c008880050038e5110804000000110010009d80050040480c *083000000012000c00b7800500c4ab0e085400000012000c00cc8005001cc71108000000001000 *1000f8800500c05e10080900000012000c0001810500b4fe11080400000011001000208105001c *810d080300000012000c003d8105007cc31108000000001000100073810500003f0c0818000000 *11000c009e810500e01805080000000010000c00c3810500f0250e080c00000011000c00f48105 *00745c0b080000000010000c001f82050064a4110800000000100010004c820500cc130e080300 *000012000c00658205004cc10c083f00000012000c007e8205002c980b08bd00000012000c00a0 *820500c8f10c080300000012000c00c38205007cd411080400000011001000e282050044510608 *0000000010000c001083050090ed0b080800000011000c002b830500acc3110800000000100010 *005e830500b0b1110800000000100010007e830500b0d0110804000000110010009d830500d82d *0f082000000012000c00b88305005c1005080000000010000c00db830500705710083d00000012 *000c00ec83050034fa0d080c00000011000c000a840500d01908080000000010000c003c840500 *c8b1110800000000100010006684050028cc110800000000100010009b84050004980f085b0000 *0012000c00af840500ccd90e080c00000011000c00db840500dc880b080000000010000c000885 *0500ace9110804000000110010002d850500f4880b080000000010000c0058850500804b070800 *00000010000c007a85050014e90b080600000012000c009c850500e00412080400000011001000 *b2850500d0250a080000000010000c00da850500b8a20b082300000012000c00f4850500944007 *080000000010000c001986050014ea0e082e00000012000c004186050034e81108040000001100 *1000688605009c990c081000000011000c007f860500f8d711080400000011001000a886050044 *e90b080600000012000c00ce860500ecb111080000000010001000f586050004fa0f0835000000 *12000c000a8705003ca10e085b00000012000c002687050058230e080c00000011000c003b8705 *0058280e080800000012000c0065870500b06b0b080000000010000c008f87050064910c082000 *000012000c00a98705001ccc11080000000010001000db87050070960c083800000012000c00ff *870500941a0f080800000011000c001b880500c8860a080000000010000c004d88050070900f08 *5b00000012000c006188050058001208040000001100100080880500a001120804000000110010 *00a5880500a8fa11080400000011001000d0880500acb00e080c00000011000c00e788050008f7 *0d080300000012000c0012890500e4dc1108040000001100100036890500d8890b080000000010 *000c006689050004450a080000000010000c0094890500341f0d080800000011000c00c0890500 *345308080000000010000c00f18905003c6307080000000010000c001e8a050088990f08080000 *0011000c00318a0500a0240e080800000011000c00518a05005c4a0e083900000012000c00828a *050070c805080000000010000c00ae8a0500a4a30c082300000012000c00d38a050034450c0830 *00000012000c00ef8a05006c4c0a080000000010000c001d8b05005cfd0e085b00000012000c00 *358b0500706107080000000010000c005e8b0500044207080000000010000c00848b050030e410 *08bc00000012020c00918b0500a0f411080400000011001000b38b0500d0240c086f0000001200 *0c00cf8b050094600c084900000012000c00fc8b0500f4270b080000000010000c001e8c050098 *4a0c087d00000012000c00428c0500e46710081e00000012000c00588c0500d0b30e085b000000 *12000c00758c050038a00e082000000012000c00908c05006cdb11080400000011001000a78c05 *00c03310080800000011000c00b68c05000ceb11080400000011001000dd8c0500b05710088a00 *000012000c00ea8c050064820f085b00000012000c00fe8c0500d4390e085900000012000c002d *8d050034e90b080600000012000c00548d0500f0610b080000000010000c00868d0500c4420508 *0000000010000c00b38d050010ed0e08fb00000012000c00db8d0500e86a0c080600000012000c *000a8e050068aa0b080c00000011000c00228e0500701b0d080c00000012000c00408e0500f86a *0c080800000011000c00708e05004cd5110804000000110010008d8e050068ae0e082000000012 *000c00a48e050084fb0c081000000011000c00c08e0500405307080000000010000c00e58e0500 *c8df11080400000011001000148f05006c330e082600000012000c003e8f050024c40b08070000 *0012000c005c8f0500a46c10080c00000011000c006e8f0500500510080c00000012000c00788f *0500a45f0c085c00000012000c00a78f050070ec10080000000012000d00ad8f0500c4b10f0838 *00000012000c00b98f050060e011080400000011001000d48f0500f4e00b080700000012000c00 *ea8f05004ccd110800000000100010001690050008e5110804000000110010003490050024f00c *080c00000011000c004d900500000000007d000000120000005e90050014f70d08080000001100 *0c00879005007dbc0f085f00000012000c009190050000cd0d081800000011000c00b090050004 *1c0d085b00000012000c00ce900500c4bf110800000000100010000a91050018a90f085b000000 *12000c002b91050050e80e081000000011000c004f91050088ef11080400000011001000679105 *0060dc0b080800000011000c008191050050d7110804000000110010009d910500c0160b080000 *000010000c00d1910500000000004600000012000000e3910500f4bc0b081000000011000c00ff *910500e4b90e085b00000012000c0015920500fc430c080500000012000c00369205003cc71108 *00000000100010006d920500b8fb05080000000010000c009c9205001ca70d082800000012000c *00ba920500c09b0e081800000011000c00db920500f4460c082f00000012000c00f6920500302e *0c081000000011000c0011930500b4c30c080c00000012000c002e93050024c511080000000010 *00100065930500c8120d080c00000011000c0082930500a4c50b087d00000012000c00a5930500 *446007080000000010000c00ca93050074b211080000000010001000ee930500b0910c08080000 *0012000c000894050090f7110804000000110010002294050004a4110800000000100010005394 *05002c010f080c00000011000c0067940500b0ed0c081000000011000c008a9405007cd8100813 *00000012000c0094940500ec5310088f00000012000c00a794050014cb0b082000000012000c00 *bf940500646107080000000010000c00ea94050034db1108040000001100100007950500500112 *0804000000110010001d95050060c111080000000010001000559505008ca71108000000001000 *100087950500ecd511080400000011001000b2950500a4f111080400000011001000cf95050004 *f011080400000011001000f2950500d86a0c080800000011000c001e960500b8dd110804000000 *110010005496050010e2110804000000110010007c96050000000000be000000120000008e9605 *0058970f081000000011000c00b0960500dc3a0f082f00000012000c00c496050090ea0e080800 *000011000c00e59605004c860b080000000010000c000b970500448a0d084b00000012000c0034 *9705008c6007080000000010000c005a97050034c409080000000010000c009197050070e91108 *0400000011001000bf970500b0c811080000000010001000f3970500b4ee09080000000010000c *001a9805009cbf110800000000100010005a980500a8ac0c080700000012000c006c9805009421 *0e080c00000011000c008b980500b8e811080400000011001000b398050044e90b080800000011 *000c00d8980500b4440a080000000010000c00089905000000000080010000120000001a990500 *949b0d083900000012000c00389905004ce00b080700000012000c005299050098520708000000 *0010000c007899050054fb0b080c00000011000c008c99050000be0b080800000011000c00ad99 *050028b909080000000010000c00df990500b0a111080000000010001000f1990500b0ac0c08b3 *00000012000c00049a0500f81805080000000010000c00339a0500b4880d080c00000012000c00 *509a050034dc11080400000011001000769a0500c0180e086300000012000c00939a0500bcd910 *088e00000012000c009e9a050054060c082000000012000c00bc9a050070d81108040000001100 *1000d49a0500635810080600000012000c00ed9a0500909b0c080500000012000c00049b050090 *f8110804000000110010001a9b0500941e0b080000000010000c004a9b0500b8050c0806000000 *12000c00619b0500c97010089800000012000c00759b0500e0fd11080400000011001000929b05 *00e6021008bf00000012000c009b9b050030640f082f00000012000c00b29b050044d80e081000 *000011000c00d79b0500b4680b080000000010000c00009c0500b4d01108040000001100100017 *9c050000000000b9010000120000002a9c050048fb0d080c00000012000c004c9c050020fa1108 *0400000011001000679c050090b111080000000010001000909c050044d4110804000000110010 *00b29c0500187b0c082d00000012000c00c69c050044170b080000000010000c00f79c0500e008 *0a080000000010000c001f9d0500580212080400000011001000359d0500c0f70d080600000012 *000c005a9d050094e011080400000011001000869d0500d8ef110804000000110010009e9d0500 *c0e211080400000011001000c39d0500705c06080000000010000c00e99d050000000000360000 *0012000000fa9d0500f4e60e085b00000012000c001d9e0500dc4b0a080000000010000c00519e *0500d0ee09080000000010000c00789e0500886107080000000010000c009e9e050074b1110800 *00000010001000c79e0500fcd111080400000011001000df9e050020f70d080800000011000c00 *089f0500a44207080000000010000c002c9f0500a0ba12080400000011001700359f050055c00f *081f00000012000c00419f05007cdc0b080800000011000c00579f050080041208040000001100 *10007c9f050028ff0e080800000011000c00939f0500fc9e05080000000010000c00bf9f0500c4 *401008c700000012000c00cd9f050054600d085b00000012000c00ef9f05000cdb110804000000 *110010000ca00500c86007080000000010000c0036a005004001120804000000110010004ca005 *0094ee110804000000110010005fa0050004b305080000000010000c0086a00500c81305080000 *000010000c00a7a00500980812080400000011001000bda005000cc011080000000010001000f6 *a0050000000000c80000001200000003a1050094a71108000000001000100031a1050084ed0b08 *0300000012000c004aa1050050ff1108040000001100100069a10500acfc0d081000000011000c *007da105003c400a080000000010000c00b2a1050094b90b080600000012000c00cda105001cfb *11080400000011001000f2a10500504e07080000000010000c0018a2050084bf11080000000010 *00100056a2050068f81108040000001100100075a20500b8b1110800000000100010009fa20500 *b49e05080000000010000c00caa20500e45f0d080800000011000c00eba2050004640c08400000 *0012000c0014a3050000d2110804000000110010002ba3050020e6110804000000110010004fa3 *0500cce80b080600000012000c0071a30500800e05080000000010000c009aa305002c6d0e0806 *00000012000c00bba30500206007080000000010000c00e9a3050060e80b080500000012000c00 *03a40500323310080900000012000c0019a40500a8fa0c081000000011000c0032a4050064220f *080c00000011000c0056a4050080060e080c00000012000c006da4050000000000360000001200 *00007ea40500d1f90f083300000012000c0093a40500286b0c080800000011000c00c2a40500e4 *cf11080000000010001000eba405005c120e080c00000011000c00fda4050078ad0c0810000000 *11000c000fa5050000dd0b080600000012000c002aa505004ccf1108000000001000100057a505 *0030980e081000000011000c006ca50500107b0c080700000012000c007fa50500a81d0c080c00 *000012000c0098a505004c450a080000000010000c00c2a50500281a0f080800000011000c00de *a5050070140e080800000011000c00f1a5050010b809080000000010000c0020a6050048c50c08 *2000000012000c0038a60500d05c10080800000011000c004ea605006004120804000000110010 *0064a605009cea110804000000110010008aa6050018e111080400000011001000a5a6050034b0 *11080000000010001000d4a6050078a811080000000010001000f6a60500900212080400000011 *0010001ba7050078f9110804000000110010003aa705000caf0e086200000012000c0053a70500 *90f51108040000001100100077a70500b0140a080000000010000c009fa70500a4d41108040000 *0011001000bca7050080b211080000000010001000e4a70500086b0c080800000011000c0017a8 *050098170b080000000010000c0052a80500a0de110804000000110010007ea80500d4230a0800 *00000010000c00a6a80500f4ca0e081800000011000c00bea80500eced11080400000011001000 *d8a8050078c60b089f00000012000c00faa8050048af0b080c00000011000c0016a9050048ed11 *08040000001100100036a90500d87d0f080800000011000c0056a9050060fc1108040000001100 *10006ca9050068fa110804000000110010008ba90500f41d0c080800000011000c00a6a9050078 *d011080400000011001000c4a9050008d111080400000011001000eba905000cc7110800000000 *1000100017aa0500f85c10080800000011000c002caa0500f0031208040000001100100051aa05 *009ce31108040000001100100078aa05002cbb0a080000000010000c00a6aa050024e411080400 *000011001000beaa050080eb0b080c00000011000c00d4aa0500746207080000000010000c00ff *aa05005c520f082900000012000c0012ab05007cdb1108040000001100100029ab0500c4440a08 *0000000010000c0052ab0500bc4307080000000010000c007bab050070e6110804000000110010 *00a0ab0500d0d911080400000011001000bdab050028bd09080000000010000c00ecab0500d4fb *0c082000000012000c0002ac05009c5f0d080800000011000c002dac0500a4fe11080400000011 *0010004dac0500ecee0c080c00000011000c0074ac0500fc8b0b080000000010000c00a3ac0500 *a0a211080000000010001000cdac0500a4e811080400000011001000fbac050070500f080c0000 *0011000c0016ad0500a4af0c085b00000012000c0029ad050020770a080000000010000c0057ad *05000000000033000000120000006aad050010cc0e080800000011000c008bad0500d8d7110804 *00000011001000b5ad050030b609080000000010000c00e4ad0500605207080000000010000c00 *04ae050054ec1108040000001100100020ae050090300c080800000011000c0037ae0500383710 *080c00000011000c004bae0500ac890a080000000010000c007cae0500ac870a08000000001000 *0c00aeae0500000000008600000012000000c2ae05008cda11080400000011001000e1ae05008c *8c0b080000000010000c0011af0500e4440a080000000010000c003baf05006ce7110804000000 *110010006faf050008e11108040000001100100087af0500741505080000000010000c00b0af05 *005c6810080800000011000c00c5af0500e00812080400000011001000dbaf0500049f0d085b00 *000012000c00f3af0500c05a10080800000011000c0002b00500c0fb110804000000110010001f *b00500acb61108000000001000100053b005009caa110800000000100010008db0050018df1108 *0400000011001000bfb00500f4d111080400000011001000d8b00500f0700b080000000010000c *0000b10500000000003a0000001200000018b10500b006120804000000110010003cb1050058f7 *0b082900000012000c0054b105003c9c0b085b00000012000c0075b10500e89905080000000010 *000c00a7b10500d07a0f082300000012000c00c4b10500d4260e081000000011000c00f4b10500 *900810080800000011000c0006b20500d4fc110804000000110010001cb20500e4d91108040000 *001100100036b20500a0aa0e087100000012000c004db20500445f0f080800000011000c006db2 *0500e0e0110804000000110010009ab2050024a40f085b00000012000c00aeb20500a8300f085b *00000012000c00cab2050018e611080400000011001000eeb2050074e911080400000011001000 *1db30500d8d51108040000001100100037b3050090d3110804000000110010004eb305009c340d *080500000012000c0080b305008c170b080000000010000c00b7b3050038160f08200000001200 *0c00d3b3050004f60e085b00000012000c00e9b305006c3d0a080000000010000c0011b40500c0 *f70d080800000011000c0035b40500189f08080000000010000c0073b4050070c7110800000000 *10001000a5b405003c0f05080000000010000c00cdb4050004f111080400000011001000e5b405 *00282e0b080000000010000c0012b5050044d70e081800000011000c003bb5050008ce0b080c00 *000012000c0050b5050058071208040000001100100075b50500281a0e080500000012000c0095 *b5050088d211080400000011001000b8b50500f4250a080000000010000c00e3b50500ac7e0b08 *0000000010000c0010b6050034450a080000000010000c003cb60500205f0c080600000012000c *006eb6050008a80b085600000012000c008db6050038310b080000000010000c00b9b60500ac5f *0d080800000011000c00e7b6050048e00b080800000011000c0002b705008c6207080000000010 *000c002db70500202f0a080000000010000c0053b705004cb21108000000001000100076b70500 *a8300f080800000011000c0091b7050090e611080400000011001000b6b70500a0d81108040000 *0011001000d2b7050094cb0b082000000012000c00e9b70500696e10089800000012000c00fdb7 *05007c5f0d080600000012000c0028b8050084dd110804000000110010004eb8050000000000c0 *0100001200000061b80500b4a00d080c00000011000c0086b80500dc520f081000000011000c00 *98b80500bc260b080000000010000c00c7b80500801605080000000010000c00e9b80500f0130e *080300000012000c0008b9050054dc0b080800000011000c001fb9050040fe1108040000001100 *10003fb905001c7a0c080700000012000c0056b90500d8650a080000000010000c008cb9050094 *4007080000000010000c00b2b905003c5810080300000012000c00cab90500e802120804000000 *11001000e0b9050030180b080000000010000c000aba050080170b080000000010000c003dba05 *00d4100d080c00000011000c0060ba0500005f0c080800000011000c0092ba0500041d0f085b00 *000012000c00b0ba0500ec0e0c083300000012000c00d4ba0500546c10084100000012000c00e7 *ba0500f8ef1108040000001100100008bb0500d4cd0c080c00000011000c0024bb05008cdb1108 *04000000110010003fbb0500ec230f080800000011000c0060bb0500f8280d080c00000011000c *008abb050050840f080800000011000c009dbb050024f211080400000011001000babb050004ff *0d085b00000012000c00d7bb050078910e085d00000012000c00ffbb050044e011080400000011 *00100021bc050070140e085b00000012000c0035bc050038950d080c00000011000c0050bc0500 *84b60b080c00000011000c006bbc0500b04110082f00000012000c0077bc05009cde1108040000 *0011001000a3bc0500d08b0b080000000010000c00d5bc0500b0d511080400000011001000f3bc *05007c1f0e080c00000011000c0015bd0500a0d3110804000000110010002cbd0500a0e0110804 *0000001100100055bd050004d11108040000001100100084bd050050f511080400000011001000 *a7bd050060950b082800000012000c00d0bd050058c711080000000010001000fbbd0500e85d10 *080800000011000c000ebe0500480110081800000012000c0020be05005cea1108040000001100 *100046be050004450a080000000010000c0073be0500f8f30e080800000011000c0094be050058 *f411080400000011001000b8be050088e00d081000000011000c00dfbe05007c740a0800000000 *10000c0011bf05000ce905080000000010000c0044bf05004ca90e081800000011000c0067bf05 *0018da1108040000001100100087bf05005c030c080c00000011000c009dbf0500282d0c080c00 *000012000c00b6bf0500183c0c081000000011000c00ddbf050008070c080700000012000c00f1 *bf05007cf80d081000000011000c000ac0050094970a080000000010000c0035c0050068f11108 *04000000110010004dc0050061e20f082300000012000c0060c005003cdc110804000000110010 *0084c005003cbb0a080000000010000c00b5c0050068b111080000000010001000dcc005005cd1 *11080400000011001000f6c00500b85910080c00000011000c000bc10500d4100d082000000012 *000c002fc10500a0021208040000001100100045c10500984d0c080700000012000c0066c10500 *38690b080000000010000c008fc105001c4307080000000010000c00b5c1050020640608000000 *0010000c00ddc1050004a80e080c00000012000c00fdc10500ecb00d080800000011000c0025c2 *0500049b0e085b00000012000c0040c205006cea1108040000001100100066c20500c8d0110804 *0000001100100084c20500406107080000000010000c00aec205005ce211080400000011001000 *cec20500d8dd11080400000011001000eec2050054fb0b080c00000012000c0003c30500e06210 *080800000011000c0016c3050054c31108000000001000100049c305008cd61108040000001100 *100078c30500d0160f088200000012000c008dc3050038930c080800000011000c00a0c305005b *c40f083600000012000c00afc30500483d0d081800000011000c00d8c3050044b60b080c000000 *12000c00f3c30500509e05080000000010000c001fc4050070a4110800000000100010004fc405 *00f44207080000000010000c0074c40500a4f70d080300000012000c0099c4050038e00d081000 *000011000c00c4c40500b8810d085600000012000c00ddc4050038160f081000000011000c00f8 *c40500e4dc0b080800000011000c0015c5050064890a080000000010000c0049c50500e0e21108 *04000000110010005dc5050024ec09080000000010000c0091c50500d8990d080c00000011000c *00a7c50500e4e611080400000011001000bfc5050048d811080400000011001000dcc505004cee *0b080c00000012000c00f6c50500d4d01108040000001100100014c605005c580e081000000011 *000c0036c60500087d0f085b00000012000c004ac605001c9a0e085b00000012000c0064c60500 *d8f41108040000001100100087c6050020f70d080300000012000c00b1c60500b1d40f08150000 *0012000c00c1c60500f8af0f083800000012000c00cec6050050e011080400000011001000ecc6 *05009cd81108040000001100100008c70500e8d1110804000000110010001fc705006c8c0b0800 *00000010000c004dc7050068ab0d080c00000011000c006dc70500509e05080000000010000c00 *98c7050030b00f081f00000012000c00a5c70500d04e0f080c00000011000c00c1c7050034bb12 *080400000011001700cac70500e0d011080400000011001000e6c70500000000004d0000001200 *0000fdc70500b0610f085b00000012000c0019c80500341c0f080800000011000c0035c8050020 *300e080c00000011000c005ec80500749b0f080800000011000c007ec80500e4c1050800000000 *10000c00adc8050024e00b080300000012000c00c6c80500803b0e081000000011000c00fbc805 *0084f11108040000001100100013c90500fce91108040000001100100039c9050048ff0c080c00 *000012000c005cc9050054cc110800000000100010008bc90500f8990e080800000012000c00a5 *c9050038fb11080400000011001000cac9050088fa1108040000001100100000ca0500a0e61108 *040000001100100025ca05004c5807080000000010000c0048ca0500601d0e080c00000011000c *0069ca05005c290c088200000012000c0084ca05002805120804000000110010009aca0500c864 *0a080000000010000c00c3ca050058870f080800000011000c00d6ca050014bc0b080800000011 *000c00efca0500d8fd0b080c00000012000c0004cb050034fd1108040000001100100027cb0500 *d0130f080800000011000c0042cb050018740e080c00000011000c0063cb05007c0a0b08000000 *0010000c0090cb0500b0670a080000000010000c00c0cb0500d8480c085500000012000c00ddcb *0500609a0f081000000011000c00ffcb050024fe0d080c00000011000c001bcc0500c0e90b0803 *00000012000c0042cc0500006a10080800000011000c0058cc0500d4950f081000000011000c00 *7acc050025b40f080d00000012000c008bcc050060bc0e081000000011000c00a7cc0500a8e90b *080800000011000c00cbcc050074d011080400000011001000eecc050098071208040000001100 *100013cd050030000d082100000012000c0036cd0500e45f07080000000010000c005bcd0500e4 *bb0e085900000012000c0070cd0500b03d10083a01000012000c007acd0500a4db110804000000 *1100100092cd05006c400c083a00000012000c00b8cd05003f5810080600000012000c00d1cd05 *00284b0f080800000011000c00ebcd050048020f080800000011000c0005ce0500a8f90e080800 *000011000c001cce0500246a0f080c00000012000c0032ce05001ce60e080c00000011000c0064 *ce050060e1110804000000110010007dce0500d82d0f080c00000011000c0097ce0500c8f51108 *0400000011001000bbce0500e0580b080000000010000c00e9ce0500bc810c080800000011000c *0007cf050090c20e081000000011000c001ecf0500c0da1108040000001100100036cf0500c01f *0f085b00000012000c0053cf05004c9f05080000000010000c0088cf050060600f080c00000011 *000c00a4cf0500b0ba12080400000011001700a7cf050044cf11080000000010001000d2cf0500 *78670f080c00000011000c00f3cf0500444910089500000012000c0007d0050010dd1108040000 *001100100026d0050060e90b080800000011000c004dd00500ecba0a080000000010000c007fd0 *050030e905080000000010000c00a9d00500b4c810081b00000012000c00bbd005008cfe110804 *00000011001000d1d00500cc160b080000000010000c0007d1050084a611080000000010001000 *33d10500fcf60d080800000011000c0058d105009cd40c080c00000012000c006cd10500dcc611 *0800000000100010009ad105008ca40f080800000011000c00bad105004c580708000000001000 *0c00ded1050034220b080000000010000c000dd205006cdc0b080800000011000c0028d20500bc *2e0a080000000010000c0050d2050024d5110804000000110010006dd2050018490f0851000000 *12000c0090d2050030d311080400000011001000a9d2050044c00c080c00000011000c00c0d205 *0094c70b080700000012000c00d7d20500dcef0d085600000012000c00f7d2050028c409080000 *000010000c002bd30500c0190f080800000011000c0045d3050078e90b080800000011000c0066 *d3050010f8110804000000110010007dd305006ca711080000000010001000aad30500bc5f0d08 *0800000011000c00d8d30500f4f011080400000011001000f0d3050024e00b080800000011000c *0008d405002c2b0a080000000010000c0032d40500081c0a080000000010000c005ad40500101f *06080000000010000c008fd4050008d311080400000011001000b2d4050008c90b080c00000012 *000c00cbd40500fcc309080000000010000c000cd50500e0d11108040000001100100022d50500 *fcd80d082600000012000c0041d50500cc2c0b080000000010000c006cd50500081210080c0000 *0011000c007ad50500245108080000000010000c00add50500dcc30c080c00000012000c00ccd5 *0500408c0c080c00000012000c00e6d50500904c0e085900000012000c0008d60500a4800a0800 *00000010000c0038d6050060011008b200000012000c0047d60500542d0b080000000010000c00 *74d6050000000000d10000001200000084d60500f0f60d080800000011000c00aad6050020c50c *080300000012000c00cad6050010960c085400000012000c00e3d60500d89d0508000000001000 *0c0009d7050040f21108040000001100100026d7050038f70d080300000012000c0056d70500d8 *c3110800000000100010008ed70500c0b709080000000010000c00bfd7050044f0110804000000 *11001000d8d7050064910c080c00000011000c00f1d70500b8ff0d080c00000011000c0004d805 *0038d3110804000000110010001ed805002c800e080c00000011000c0041d8050008e70b081000 *000011000c0056d8050094ca0b082000000012000c006ed805009cdd1108040000001100100097 *d805003ce00b080800000011000c00afd8050060b90c082700000012000c00cbd8050098a60b08 *0c00000011000c00e4d80500c03d0a080000000010000c000dd90500889f05080000000010000c *0038d905003002120804000000110010005bd9050090e90b080800000011000c007dd90500c42e *0c080c00000012000c0098d9050034a30b080c00000011000c00b2d90500f4420e080500000012 *000c00e7d90500f8f60c081000000011000c0007da0500c4eb0b080c00000011000c001dda0500 *c8001208040000001100100032da0500a4d40e080800000011000c005cda050024d31108040000 *001100100071da0500643d0e080c00000011000c00a4da05006c8f0d080800000011000c00beda *050038390e080c00000011000c00ecda0500c0ee1108040000001100100009db050070a90e0853 *00000012000c002adb0500d40f0c083d00000012000c0048db050090a806080000000010000c00 *73db0500e03f0e082300000012000c009fdb050044a90e080800000011000c00c7db050040020c *080c00000011000c00dddb0500b0d70e082100000012000c0007dc0500402b0e08100000001100 *0c0036dc0500d05e0c080600000012000c0067dc050064220f085600000012000c008cdc05008c *f111080400000011001000a3dc0500d4e611080400000011001000bbdc050000000000d3000000 *12000000cfdc0500f80212080400000011001000e5dc0500ccc61108000000001000100012dd05 *00dc0b0d085b00000012000c002fdd0500cc4207080000000010000c0055dd0500cc0e0d081000 *000011000c007bdd050058d81108040000001100100093dd0500b84b07080000000010000c00b7 *dd0500285a10080c00000011000c00cddd050028de11080400000011001000ecdd050069180b08 *0000000010000c0017de0500e4a2110800000000100010003bde05006cb1110800000000100010 *0061de0500e0b50b080c00000011000c007cde05003ce40b084b00000012000c009dde050088de *11080400000011001000c9de0500ec8e0f085b00000012000c00ddde05007cff11080400000011 *001000f6de05000c300c080700000012000c000adf0500641c08080000000010000c0038df0500 *08c81108000000001000100079df050024230f080c00000011000c00a9df0500d0f70d08080000 *0011000c00d0df050000f511080400000011001000f3df0500c09b0e086500000012000c0015e0 *0500c4ec1108040000001100100032e0050030091208040000001100100055e0050014dc0b0806 *00000012000c0072e00500442d0a080000000010000c0099e00500d8d611080400000011001000 *c2e00500d8090f082000000012000c00d4e00500305710083d00000012000c00e4e00500f46107 *080000000010000c0012e1050098b1110800000000100010003ee10500c8820508000000001000 *0c0064e10500f8e80b080800000011000c0084e10500b0ea09080000000010000c00b9e10500fc *5f07080000000010000c00e1e105004c6910080800000011000c00f6e105003cc9110800000000 *1000100024e20500cbeb0f089700000012000c002ee20500dcf0110804000000110010004be205 *00589b0b085b00000012000c006be20500109805080000000010000c008fe205003cfe11080400 *000011001000abe205000cec11080400000011001000d1e20500f0610b080000000010000c0004 *e30500744a10089500000012000c0017e3050084770c082300000012000c002de30500a4a30c08 *1000000011000c0051e30500dccf1108000000001000100080e30500a0d2110804000000110010 *0098e30500ccf90b082300000012000c00b0e305006c6310084900000012000c00c4e305003850 *10084e00000012000c00d9e305004cf70a080000000010000c000ae40500702c0a080000000010 *000c0035e40500b0fe0e080800000011000c004ce40500cc300c080300000012000c0069e40500 *6cb30c089100000012000c0082e4050020300e081300000012000c00ace40500c8230d080c0000 *0012000c00d6e40500508d0b085500000012000c00fae40500ecd91108040000001100100015e5 *050068dd0b080800000011000c002fe5050024e8110804000000110010005be5050030290a0800 *00000010000c0084e505009cf211080400000011001000b5e50500a8e211080400000011001000 *e0e50500546210084900000012000c00f4e5050094e21108040000001100100017e6050068c711 *08000000001000100040e605001c6107080000000010000c0068e605006c430708000000001000 *0c0091e605004c5910080c00000011000c00aae60500fca40f081000000011000c00cce605003c *000f085b00000012000c00e8e60500ccb50c085100000012000c0003e705002c60070800000000 *10000c002ae7050060f71108040000001100100044e70500f8f41108040000001100100067e705 *0080e91108040000001100100096e70500d8460f085b00000012000c00b7e70500c4dc11080400 *000011001000d4e705003c4107080000000010000c00f5e70500105b10080800000011000c0004 *e80500957410085201000012000c000fe80500ccb1110800000000100010003be80500405a0b08 *0000000010000c0065e8050040f80d080600000012000c0089e805006c860e081000000011000c *00b0e8050078e90b080300000012000c00d2e80500d0c90b080c00000011000c00e4e8050084ed *0b080800000011000c00fce8050028bc120804000000110017000de9050094980d080500000012 *000c0026e90500583e0e080c00000012000c0059e905003c370c081000000011000c0085e90500 *70d111080400000011001000a1e905006fbb0f080900000012000c00ade90500a8ca0c080c0000 *0011000c00c1e90500ccb611080000000010001000f9e905008ce0110804000000110010001dea *050034b70b080c00000011000c0039ea0500f0210f081800000011000c0062ea0500d0f50c0866 *00000012000c0083ea05007cc50b080c00000012000c00adea050040b509080000000010000c00 *dfea050074f40e080c00000011000c00fdea050024a20e085b00000012000c0012eb050080610d *085b00000012000c0034eb050004d9110804000000110010004eeb050060c31108000000001000 *100081eb0500884807080000000010000c00a7eb0500e0f711080400000011001000c1eb050090 *4c0e080c00000011000c00e2eb0500f4e7110804000000110010000dec050008be090800000000 *10000c003eec0500ddc30f083b00000012000c004dec050068c20f08cb00000012000c0052ec05 *00201f0c080700000012000c0064ec0500f0700b080000000010000c008dec050010fb0e085b00 *000012000c00a5ec05003cdf0b083200000012000c00baec0500881808080000000010000c00ea *ec05008cd31108040000001100100001ed0500f8250f087700000012000c0024ed050080d40e08 *0c00000011000c004ded050080fc0b083700000012000c0064ed0500e0ec0c085400000012000c *007eed0500346107080000000010000c00a4ed0500749a04080000000010000c00b3ed0500e816 *1208000000001000f1ffbaed0500b85b0e081000000011000c00dded0500382a0e080800000011 *000c0005ee050048d41108040000001100100025ee0500acfa1108040000001100100051ee0500 *388b0f085100000012000c0075ee050030ec10080000000012020c008cee0500b8e21108040000 *0011001000aaee0500ec2f0c080c00000012000c00cdee0500b4e704080000000010000c00f1ee *050020021208040000001100100007ef0500e0aa0c081000000011000c0021ef050088b8090800 *00000010000c0053ef050028281008c304000012000c0066ef0500ec0610082c00000012000c00 *75ef0500ac480c081000000011000c008cef05004cc409080000000010000c00c1ef05000cfc11 *080400000011001000d5ef0500a0d711080400000011001000f3ef050060151208000000001100 *f1ff09f0050000000000b10000001200000019f00500acbf1108000000001000100053f00500f0 *b1110800000000100010007ff00500d0081208040000001100100095f0050058e3110804000000 *11001000b8f00500c4910c080800000012000c00d0f0050018dd11080400000011001000eaf005 *00f8280d080e00000012000c0015f105001ca30e085b00000012000c002bf1050060cd12080000 *00001000f1ff30f10500e0f3110804000000110010004df10500d44310085d00000012000c0067 *f1050018c40f084300000012000c0077f1050088c40c080800000012000c008ff10500d8890b08 *0000000010000c00bef1050004150a080000000010000c00e5f105005811120808010000110010 *00f9f1050058d51108040000001100100017f20500c01805080000000010000c003cf2050004e9 *0b080600000012000c0061f205008cd01108040000001100100083f205009cb111080000000010 *001000acf20500d8d411080400000011001000caf20500173310080900000012000c00e0f20500 *646207080000000010000c0007f305008cc81108000000001000100042f30500a8d21108040000 *00110010005ef3050080e709080000000010000c0086f30500c0f211080400000011001000b2f3 *0500c0c311080000000010001000e7f30500f06a10081e00000012000c00fef305005c790f083e *00000012000c0016f4050044770c080800000011000c0037f405008bfe0f086900000012000c00 *46f40500f0bd09080000000010000c007bf4050050940f085100000012000c009ff405008ea910 *082800000012000c00aaf40500a00012080400000011001000cdf405005c470c08100000001100 *0c00e7f4050028d311080400000011001000fcf405009eb90f082c00000012000c0008f5050010 *6910080800000011000c001df5050078fa1108040000001100100043f5050014990e085b000000 *12000c005bf5050088bf0c080c00000012000c0073f5050028830e085600000012000c0099f505 *003cee11080400000011001000c8f5050048c80b088700000012000c00e5f5050090db11080400 *000011001000fcf5050033c30f087100000012000c0007f6050080e21108040000001100100021 *f6050044bf09080000000010000c005bf605000c3b0e085900000012000c008af6050004200c08 *3a00000012000c00a4f60500dca911080000000010001000d8f60500081905080000000010000c *0002f70500508508080000000010000c003ef70500dcd2110804000000110010005df705000856 *0f082f00000012000c0071f705008c690e085b00000012000c0092f70500a41e0e080c00000011 *000c00b3f70500681605080000000010000c00def70500ac060c080700000012000c00f1f70500 *74ff1108040000001100100007f8050014dd110804000000110010001ef80500c0d11108040000 *001100100046f805006c160b080000000010000c0080f80500b45f0f085100000012000c00a3f8 *0500d4220d080c00000012000c00cbf8050048ca0b080c00000012000c00dff805003cbb0a0800 *00000010000c000ff90500286107080000000010000c0031f90500000000003a00000012000000 *42f9050000000000280100001200000054f90500b8e31108040000001100100074f90500a8b609 *080000000010000c00a8f9050048f80e080800000011000c00bff9050024cc1108000000001000 *1000e3f90500c4b21108000000001000100003fa050028e41108040000001100100027fa0500b0 *ea09080000000010000c005bfa0500a0ff1108040000001100100073fa050064050c084b000000 *12000c0087fa05004009120804000000110010009cfa050029c50f081400000012000c00a7fa05 *0034fa11080400000011001000c7fa0500a0bd09080000000010000c00fafa050048470f085100 *000012000c001dfb0500580f0e081000000011000c0032fb0500a8041208040000001100100048 *fb0500c0ff1108040000001100100064fb0500c4e70b080700000012000c007afb0500d08d0f08 *5b00000012000c009bfb0500b45210080600000012000c00adfb050084dc110804000000110010 *00ccfb050034f011080400000011001000e4fb0500845a10080800000011000c00f3fb05002933 *10080900000012000c0009fc050068ae0e080c00000011000c001ffc0500b8d411080400000011 *0010003bfc0500f0041208040000001100100051fc050084e91108040000001100100084fc0500 *48fc110804000000110010009efc0500d0e30e080c00000011000c00ccfc0500fcb11108000000 *0010001000f4fc05004c3910080c00000011000c0003fd050008220d080c00000011000c002bfd *0500748a0b080000000010000c0057fd050018be0b080300000012000c007bfd05000000000035 *000000120000008dfd0500cc1b0f085b00000012000c00aafd0500f8b609080000000010000c00 *d9fd050034ce1108000000001000100008fe0500045206080000000010000c0031fe05004cd311 *0804000000110010004afe0500601805080000000010000c0070fe050084060a08000000001000 *0c009efe050084b111080000000010001000c5fe0500e8f511080400000011001000e1fe0500e8 *ce1108000000001000100011ff050040c60c081000000011000c0028ff0500c45f070800000000 *10000c004dff050050e80e082300000012000c0072ff0500b0e61108040000001100100097ff05 *004c200c080c00000011000c00b0ff050004ee0b080c00000011000c00c6ff050070a00f085100 *000012000c00e9ff050018620f080c00000011000c00fcff0500e89a0d080c00000012000c0010 *00060008121008d401000012000c001d00060048fb110804000000110010004000060090d21108 *0400000011001000580006000000000052000000120000006a00060010dd0b080600000012000c *00820006006cd8110804000000110010009e000600406710080800000011000c00b20006005c51 *06080000000010000c00e1000600b0aa0d080c00000011000c0001010600b4160b080000000010 *000c00390106002cbc120804000000110017004a0106009ce21108040000001100100071010600 *6c610c080c00000011000c009d010600c0970c085b00000012000c00b5010600e01d0b08000000 *0010000c00e6010600ec9e05080000000010000c00150206005c2e0c080700000012000c002c02 *06002c8e0b085f00000012000c004c02060048b709080000000010000c007d0206000000000013 *000000120000008e020600e8330d081800000011000c00c0020600348a0c080c00000011000c00 *da020600947e0d082300000012000c00fa02060038df1108040000001100100029030600109805 *080000000010000c004c03060000970d085600000012000c0063030600608a0f085b0000001200 *0c007703060004690c082000000012000c009e03060080a60f085100000012000c00c1030600fc *640a080000000010000c00f003060038b809080000000010000c001d04060004580e080c000000 *12000c0047040600a80b0c084300000012000c005e040600c4ec0e082600000012000c00820406 *0070e211080400000011001000a7040600285207080000000010000c00ca040600c4e311080400 *000011001000e9040600b000120804000000110010000e05060064a61108000000001000100039 *050600003610089100000012000c004a05060014fc110804000000110010005f050600d4430c08 *2800000012000c00810506008cdd0b080300000012000c009e05060078a30f081000000011000c *00c0050600c8db0b080c00000012000c00d8050600e4c10b083000000012000c00fd050600d8e9 *1108040000001100100029060600e04e0c080700000012000c00520606002cc811080000000010 *0010008c0606003c0d0d080800000011000c00a8060600a4a20e080800000011000c00bc060600 *34a911080000000010001000e4060600eab30f081f00000012000c00fc060600708b0c080c0000 *0011000c00110706009cd71108040000001100100031070600d0240c081000000011000c004c07 *06002cdd110804000000110010006b07060034cc11080000000010001000a5070600b02e0b0800 *00000010000c00d4070600944307080000000010000c00fa070600dcf811080400000011001000 *11080600547b0c080c00000011000c002d080600a8ed0b080300000012000c0049080600b0e20b *082000000012000c006208060014e8110804000000110010008e08060050fe1108040000001100 *1000a3080600d41d0f080800000011000c00b808060034d10c080c00000011000c00d4080600b8 *da11080400000011001000f308060080d61108040000001100100024090600d0d1110804000000 *110010004109060000f60f084600000012000c0048090600a88508080000000010000c00830906 *00c0f80e085b00000012000c009b0906000cbb0e085400000012000c00c3090600a89c0b085400 *000012000c00f30906004cc311080000000010001000240a06001ce60e085900000012000c0057 *0a0600848b08080000000010000c00960a0600c4490f080c00000011000c00b90a060020df1108 *0400000011001000ec0a0600d8300c080800000011000c00050b0600b81b05080000000010000c *002c0b060080db0b080c00000011000c003e0b060034750e080c00000011000c005f0b06001c30 *10087000000011000c00760b06002cbb0a080000000010000c00a30b0600443710089100000012 *000c00b20b0600b0d10e080800000011000c00d30b0600b4ed11080400000011001000fb0b0600 *f4d710084300000012000c00060c06004cda11080400000011001000220c0600d8d01108040000 *00110010003c0c0600fc490f080c00000011000c00500c060058fc11080400000011001000660c *0600c0200a080000000010000c008c0c06004c6107080000000010000c00b90c060088d5110804 *00000011001000e70c0600744e1008bd00000012000c00fd0c060038ca0d080c00000011000c00 *0f0d06006c980f085b00000012000c00300d06003c2f0e080c00000011000c00590d060067bb0f *080800000012000c00640d060000cd0c080c00000011000c00800d0600f83b0a08000000001000 *0c00a90d060004ac11080000000010001000d40d0600c0e611080400000011001000f60d0600a4 *ed110804000000110010001b0e060060f50e080800000011000c00300e0600d4e3110804000000 *11001000560e0600f84c0e082300000012000c00790e0600e4c10c082600000012000c00920e06 *00f0dd0c082000000012000c00ab0e060064180b080000000010000c00d50e0600ec1805080000 *000010000c00fd0e060094110e080c00000011000c00120f0600d4e01108040000001100100037 *0f0600bc5210080300000012000c004a0f06007c2e0f081000000011000c00630f060050300e08 *1000000011000c00880f06009c9e08080000000010000c00bf0f06006bbf0f080100000012000c *00ca0f0600d80512080400000011001000ed0f06002cf50e080b00000012000c000c100600a842 *0c081800000011000c0031100600b8150d082f00000012000c004f100600e0ff11080400000011 *00100065100600e0fc0e080800000011000c007c100600fcd20e080800000011000c00aa100600 *d0c81008530e000012000c00b7100600400712080400000011001000da1006002c010f08460000 *0012000c00ef100600a8e41108040000001100100006110600b0df110804000000110010003311 *060098df110804000000110010006211060078850b080000000010000c008a110600cc160b0800 *00000010000c00bf1106002c8c0b080000000010000c00ed11060080cb11080000000010001000 *1e120600f4d0110804000000110010003d120600b00610083600000012000c004a120600701e0c *082300000012000c006712060048b90b083300000012000c007e120600e8b70908000000001000 *0c00af1206002c720e080800000011000c00c91206006ce60b082300000012000c00df120600a0 *330e080c00000011000c0008130600943610088400000012000c0016130600f4bd0b0808000000 *11000c003413060024a20e080800000011000c0048130600bcec11080400000011001000661306 *0050de110804000000110010009513060078de11080400000011001000c313060050a40b080c00 *000011000c00de130600985f10084900000012000c00f213060010021208040000001100100008 *140600604e0e081000000011000c002d14060048150e080c00000011000c0042140600445b1008 *0800000011000c0056140600d88b0c080c00000011000c006b1406002c5e07080000000010000c *0088140600586b10080c00000011000c009a14060030fc0d082000000012000c00b5140600a4a5 *11080000000010001000e71406000c2d0f080c00000011000c0008150600ec5106080000000010 *000c002f15060028dd1108040000001100100045150600a6b00f083800000012000c0052150600 *2ce11108040000001100100070150600c4f40e080800000011000c0086150600b4580f08100000 *0011000c009b15060070280e080800000011000c00c3150600285207080000000010000c00e715 *0600606b0c080700000012000c00fc15060060d80b083800000012000c001216060098660a0800 *00000010000c0044160600300112080400000011001000691606003cf111080400000011001000 *80160600d0e30c084f00000012000c009516060058840a080000000010000c00c616060024670a *080000000010000c00f61606008cc5110800000000100010001c1706000c6c10083b0000001200 *0c002f170600ecf30e080300000012000c004e170600b4de110804000000110010007a17060068 *0a10080c00000011000c008817060012b40f080800000012000c009717060064c8110800000000 *10001000cb170600a46d0e081300000012000c00f31706002cc6110800000000100010001e1806 *00440d0f082300000012000c003818060000000000a6000000120000004b180600a00712080400 *0000110010007018060048220f080500000012000c00991806000ccd11080000000010001000ca *18060004700f082000000012000c00e0180600447c0c080700000012000c00f618060008db0b08 *0c00000012000c000d190600889f05080000000010000c00371906003c000f080800000011000c *0052190600acd80c082000000012000c006d1906008cf70d080800000011000c00911906005c8c *0b080000000010000c00bb190600d8670c080c00000012000c00e2190600782f0c080c00000012 *000c00fd1906006012120886000000110010000b1a0600c8e411080400000011001000201a0600 *681f0c082d00000012000c00361a0600e0cf11080000000010001000631a060004d01108040000 *0011001000891a0600044207080000000010000c00b01a060020d411080400000011001000c91a *0600ccb80f082c00000012000c00d41a060094fe0b081000000011000c00e81a060084e0110804 *00000011001000111b060084140d081000000011000c002e1b060000a00f085b00000012000c00 *4f1b0600fc840b080000000010000c007c1b0600acde11080400000011001000a81b060044890f *085b00000012000c00c91b0600c0df11080400000011001000fb1b0600b0e71108040000001100 *1000151c060054b305080000000010000c00491c06000808120804000000110010005f1c0600b8 *140f081000000011000c00701c06008cb00b083c00000012000c00851c0600345b100808000000 *11000c00971c0600d41d0f085b00000012000c00ad1c0600a4b10e080c00000012000c00c11c06 *0014040f085b00000012000c00de1c06006db10f081f00000012000c00ea1c060080d711080400 *0000110010000f1d06007c740a080000000010000c00401d06002cee1108040000001100100076 *1d0600e4bc0c081800000011000c00921d0600380612080400000011001000b71d0600a41e0e08 *5b00000012000c00d91d06002c210f085b00000012000c00fd1d060014e90b080800000011000c *001e1e060040f9110804000000110010003b1e0600c8600d080c00000011000c00601e06000009 *12080400000011001000831e0600300612080400000011001000a81e0600700412080400000011 *001000cb1e0600e80512080400000011001000f01e0600fcfd110804000000110010000f1f0600 *38500f080c00000011000c00261f060018d3110804000000110010003c1f0600000000008f0100 *00120000004a1f060074de11080400000011001000761f060054970c085b00000012000c008e1f *0600500c0e083d00000012000c00a41f0600b0f70d080800000011000c00ca1f0600c0380b0800 *00000010000c00f71f0600f48e0c080c00000012000c000d20060014a711080000000010001000 *3c200600bc3b10080c00000011000c004c20060038ec09080000000010000c007d200600bcb805 *080000000010000c00a1200600c8ef11080400000011001000b920060004a80f08510000001200 *0c00dc20060020cc0b082000000012000c00f5200600144107080000000010000c0017210600e0 *3f0e080c00000011000c00422106004c1810088902000012000c0051210600e0470a0800000000 *10000c0084210600d41005080000000010000c00a5210600b4bf11080000000010001000e52106 *0050f70d080300000012000c000922060068b509080000000010000c003c220600f41f0d080800 *000011000c0064220600589f0b083e00000012000c008522060004370f085900000012000c00a2 *22060040ef0d083100000012000c00c7220600884e0c085500000012000c00df220600f0ff0f08 *1c01000012000c00e8220600f4060d082900000012000c000523060058fa0c080f00000012000c *00202306001cda110804000000110010004523060054460c080700000012000c005a23060098c4 *0c080800000011000c007e23060090160b080000000010000c00ae23060070970d081800000011 *000c00c6230600d81c0d080c00000011000c00e223060000d6110804000000110010000f240600 *54900c080c00000012000c002f2406008c9a0e080800000011000c004924060038b40e080c0000 *0011000c006924060004cc1108000000001000100094240600e4bb0e080c00000011000c00a824 *0600f4311008e600000012000c00ba240600bcf10c080800000011000c00d9240600a4300a0800 *00000010000c00ff24060070b1110800000000100010002a25060094a11108000000001000f1ff *3d250600e0f90d084800000012000c005625060058d50c080c00000012000c006d25060040c911 *0800000000100010009d250600ccc10c080900000012000c00b8250600f8900b08320000001200 *0c00dc250600689d0f085100000012000c00ff250600a8f4110804000000110010002126060094 *e91108040000001100100045260600686b0c083700000012000c005b260600548f0f0808000000 *11000c007b260600206406080000000010000c00a22606000c7c0c080c00000011000c00c42606 *00546207080000000010000c00e8260600c4b60e080c00000011000c000227060080e011080400 *0000110010001d27060024dc0b080600000012000c0039270600281010080c00000011000c0047 *27060060160b080000000010000c007d27060088d0110804000000110010009a2706009cda1108 *0400000011001000b82706009c190e088b00000012000c00d927060054fe0f081f00000012000c *00e0270600a00612080400000011001000f627060038b40e082000000012000c00172806000cd3 *110804000000110010003428060014c7110800000000100010005f28060018bf09080000000010 *000c0098280600083310082c00000011000c00ad280600801e0d080500000012000c00c4280600 *30dd0b080300000012000c00e0280600e8360f080c00000011000c00f228060080e61008030200 *0012020c00fb2806006cda1108040000001100100011290600a4000d081000000011000c003129 *0600d0e2110804000000110010004c29060068fd0b080c00000011000c0062290600fce00b08d1 *00000012000c0079290600ece80b080800000011000c0096290600c0e60f081100000012000c00 *a529060028ff11080400000011001000c829060020000b080000000010000c00fb29060050c311 *0800000000100010002f2a0600acfc0d082000000012000c00442a060098960d08590000001200 *0c005a2a0600000000006800000012000000752a0600106510080800000011000c00892a060080 *e611080400000011001000ae2a060064ab0b083000000012000c00c52a06007cf1110804000000 *11001000df2a060058fa0c081000000011000c00f92a06006803120804000000110010001f2b06 *00a4c30f083900000012000c00252b0600149e0f080800000011000c00382b060010bd09080000 *000010000c006f2b0600d4390f081000000011000c008c2b06008c8e0c080c00000012000c00a2 *2b0600b05307080000000010000c00c62b0600980312080400000011001000e92b06000ce90508 *0000000010000c001b2c0600100612080400000011001000312c0600745c0b080000000010000c *005d2c0600b0710e080800000011000c007f2c0600d03f0c083a00000012000c00aa2c0600d808 *0d080c00000011000c00bd2c06004c860b080000000010000c00e42c060090aa0d081800000011 *000c00072d060084670e081000000011000c002a2d060078a40c087500000012000c00472d0600 *70290a080000000010000c00702d06007eb90f082000000012000c007b2d0600c88e0d080c0000 *0011000c00a32d06004c2f0c080c00000011000c00bd2d060058820d085600000012000c00de2d *060060450f080800000011000c00f12d0600f0fa11080400000011001000152e0600a4ec100804 *00000011000e00242e060094600c080c00000011000c00502e0600a4200d085400000012000c00 *7c2e06009cc70b086900000012000c00942e0600245106080000000010000c00bc2e0600984b0f *085900000012000c00d72e0600d4d00e085b00000012000c00ec2e0600b4de0b08100000001100 *0c00032f0600f4ab11080000000010001000302f0600583110081e00000012000c00572f0600f8 *c711080000000010001000902f0600dcc311080000000010001000ca2f060090d0110804000000 *11001000e82f06006bd00f081300000012000c00f72f060004f211080400000011001000113006 *0048be0b080700000012000c002330060084d41108040000001100100041300600e8c40b088700 *000012000c006430060040fe0e080800000011000c007b30060064f20c081000000011000c0097 *30060074650c082300000012000c00c3300600e84607080000000010000c00f230060090660f08 *4c00000012000c00123106003c3d0f086001000012000c0025310600c8210f080800000012000c *004e310600d8e51108040000001100100065310600fc940f080800000011000c0078310600c0bc *120804000000110017009131060040020c082300000012000c00a83106003c710e085b00000012 *000c00ca3106009ca70b080700000012000c00e23106000cef09080000000010000c0008320600 *e0930f080800000011000c00283206001c2a08080000000010000c0067320600e8dc1108040000 *00110010008c320600c0190f085b00000012000c00a7320600ec6007080000000010000c00d032 *0600d4d711080400000011001000ff320600805f0c080e00000012000c002d3306000420050800 *00000010000c005533060094d70e080800000012000c007f33060038ed11080400000011001000 *a0330600a0230d080c00000011000c00c9330600380e1008e101000012000c00d63306007c2e0f *082e00000012000c00f0330600b0d40d081000000011000c001034060040280a08000000001000 *0c003734060044b305080000000010000c00663406002cc71108000000001000100093340600ec *060e080c00000011000c00a9340600ec9f0d085600000012000c00ce3406004c810d0808000000 *11000c00e934060074770c080600000012000c000a3506005007120804000000110010002f3506 *003ce40b081000000011000c004f350600bcb90c080500000012000c006a350600a4fa11080400 *00001100100095350600c0f411080400000011001000b8350600449e0d080c00000011000c00d4 *35060084c20c082000000012000c00ef35060008b21108000000001000100017360600448a0d08 *0c00000011000c003f36060098b40c081800000011000c0059360600701e0c080c00000011000c *00753606008808120804000000110010008b360600d0160f081000000011000c009f3606001cd5 *11080400000011001000be360600b0f711080400000011001000d8360600f8250f081000000011 *000c00fa360600d0b70a080000000010000c002437060090b509080000000010000c0056370600 *ccba0a080000000010000c0088370600d4d611080400000011001000b637060064b61108000000 *0010001000f7370600986810081e00000012000c000d380600c8f4110804000000110010003038 *0600981005080000000010000c0051380600b45e0f085b00000012000c006538060034aa0f085b *00000012000c00793806007ed00f089400000012000c008c38060048cf0b080c00000011000c00 *a438060090a10b080c00000011000c00be3806005ca411080000000010001000e8380600384610 *081b01000012000c00fe380600f8990e081800000011000c0017390600105f0c08060000001200 *0c004639060050c7110800000000100010006f39060034b909080000000010000c009f3906004c *090d085b00000012000c00bc39060028830e080c00000011000c00e139060040f50d080c000000 *11000c00fa390600c81b0b080000000010000c00273a060024b305080000000010000c004e3a06 *007ca30b085100000012000c006e3a06001c2f0e080c00000011000c00973a060084ee11080400 *000011001000b13a060014f811080400000011001000c83a0600d4f211080400000011001000f5 *3a0600f0130e080800000011000c00133b0600381d0a080000000010000c003c3b06000cc70908 *0000000010000c00693b0600f8790c082300000012000c007f3b0600582d0c080300000012000c *009e3b0600b0c511080000000010001000c83b0600c0300c080800000011000c00e13b0600e450 *0c083a00000012000c000d3c0600ecba0a080000000010000c00403c0600000000008701000012 *000000573c060094210d081800000011000c00803c0600085e0f083000000012000c009c3c0600 *90c80c082000000012000c00b03c060013ba0f083700000012000c00bd3c060034d51108040000 *0011001000db3c060028240e080800000011000c00ee3c0600e85d10080300000012000c00023d *06003dcf0f082000000012000c000d3d0600e8d911080400000011001000273d06009018050800 *00000010000c004f3d0600dce911080400000011001000743d0600f8d605080000000010000c00 *a63d06004c090d080800000011000c00c23d0600bcdc0b080600000012000c00dc3d0600c04410 *085e00000012000c00ea3d0600c0950d080800000011000c00053e060018001208040000001100 *1000283e060000eb0e085b00000012000c004a3e06002801120804000000110010006f3e060028 *810d080300000012000c008f3e060024f00c085400000012000c00a93e0600f4c1110800000000 *10001000e43e0600fcd011080400000011001000033f0600b8210d080500000012000c002c3f06 *00dcd611080400000011001000553f06004cc8110800000000100010008a3f0600686007080000 *000010000c00b73f0600382a0e085400000012000c00e03f0600a8300c080800000011000c00f8 *3f060098bb0b080c00000012000c000e4006004d3310080900000012000c00244006002cd81108 *04000000110010003c4006001c8c0b080000000010000c006640060090c20e082300000012000c *007e400600d8cf11080000000010001000ab40060010fb0e080800000011000c00c2400600949d *0d085b00000012000c00d7400600b8860c082000000012000c000041060010190b080000000010 *000c0029410600a8af1108000000001000100055410600e4300c080300000012000c0072410600 *384005080000000010000c009841060078ad0e080c00000012000c00ae410600e0e70f085a0000 *0012000c00bc410600d00212080400000011001000e14106000c6d0e080600000012000c000242 *060070e01108040000001100100025420600444307080000000010000c004e420600d01e060800 *00000010000c00814206002cbb120804000000110017008b42060078bb0f080900000012000c00 *9842060038510c082300000012000c00c342060010f80d080800000011000c00e7420600d4f10c *080300000012000c0002430600a88d0b080700000012000c001f43060044bf0908000000001000 *0c00584306008c2406080000000010000c0093430600000000001400000012000000a24306005c *240f084d00000012000c00c44306007c060d081f00000012000c00ea43060038bb120804000000 *11001700f743060074f70d080800000011000c001d440600782f0c080c00000011000c00374406 *0054c705080000000010000c006944060074070d080c00000012000c00814406000cbb0a080000 *000010000c00b3440600fc940f085b00000012000c00c74406001c6c0f080c00000011000c00db *44060008cc110800000000100010001145060078b21108000000001000100032450600cc920f08 *1000000011000c0054450600481e0d081800000011000c006b450600946107080000000010000c *0093450600c0a211080000000010001000ba4506005c520f080c00000011000c00cc450600dcd5 *0e080800000011000c00f445060088bf0c080c00000011000c000b4606006c160b080000000010 *000c0046460600f0250e085400000012000c00784606001cee1108040000001100100096460600 *bc810c080300000012000c00b5460600b05307080000000010000c00da460600c0d01108040000 *0011001000f2460600cc130e080800000011000c000a470600a49905080000000010000c003847 *0600c4cf11080000000010001000624706008c2406080000000010000c009c47060098a2110800 *00000010001000c047060044e20b085400000012000c00d9470600b4620c080c00000011000c00 *05480600000000003400000012000000184806002c6007080000000010000c00404806001ca90e *080800000011000c0064480600f0bb0b080300000012000c0081480600b8e41108040000001100 *1000984806001cbb0a080000000010000c00cc4806008c2f0e080c00000011000c00f5480600ec *e9110804000000110010001e490600cca2110800000000100010004a4906000000000065010000 *120000005c49060048f60d082000000012000c007849060094c611080000000010001000a14906 *00d03b1008b200000012000c00b04906000ca90e080600000012000c00d7490600ecee11080400 *000011001000f449060098cb0d085b00000012000c000e4a060094bb0f080800000012000c001a *4a060054200e085b00000012000c003d4a060024770c080800000011000c005e4a06004cbf0e08 *0c00000011000c00734a060040dd0b080800000011000c008d4a06003cea110804000000110010 *00b34a060018b00e081000000011000c00d84a06005c0510086100000012000c00f04a0600a816 *0b080000000010000c002f4b0600b8ba12080400000011001700344b06005c170b080000000010 *000c005f4b06009c300c080300000012000c007a4b0600fc960e086800000012000c008f4b0600 *e4510f081000000011000c00a14b0600f0dc11080400000011001000c44b0600d0b60908000000 *0010000c00f34b0600d8e211080400000011001000154c06009cdc0b080600000012000c002f4c *0600cd640a080000000010000c00594c060060aa0d080a00000012000c007c4c060050890c0808 *00000011000c00a64c06004cee11080400000011001000d04c0600d01f0d080c00000011000c00 *f94c0600a0a111080000000010001000064d060024cb0d085b00000012000c00204d0600780312 *080400000011001000364d060060ed0b080300000012000c00514d060008310c087d0000001200 *0c00644d0600845d10080800000011000c007c4d060060e911080400000011001000aa4d06003c *d711080400000011001000d44d06003cd411080400000011001000fa4d06007c660a0800000000 *10000c00314e060060650a080000000010000c00614e06007c6107080000000010000c008a4e06 *00cc300c080800000011000c00a64e060074df11080400000011001000d04e0600541d0d082000 *000012000c00ee4e0600245a0b080000000010000c001c4f06000c750f084a00000012000c0032 *4f060064890a080000000010000c00674f0600481405080000000010000c00884f060020e81108 *0400000011001000b44f0600c4be0b080700000012000c00c94f060074a7110800000000100010 *00f34f0600949e0d085b00000012000c000b5006003cdf0b080c00000011000c001f50060020e5 *1108040000001100100034500600b0fa110804000000110010006050060018f411080400000011 *001000855006006c650e080c00000011000c00ab50060078ee11080400000011001000cd500600 *fc9d0d080c00000011000c00e25006005cd70b084500000012000c000751060044ca1108000000 *00100010003651060008d51108040000001100100053510600000f0a080000000010000c008651 *060088a211080000000010001000ac510600b06b0b080000000010000c00d751060094b1110800 *0000001000100002520600c4f20b082300000012000c001a520600d0f611080400000011001000 *34520600fc5a10080800000011000c0043520600f0860e083200000012000c006a5206006c5f0d *080600000012000c009c5206007cea0b080c00000012000c00b852060044ee1108040000001100 *1000df52060050810c080c00000012000c00fd520600244b0c081a00000012000c00275306002c *e8110804000000110010004f530600e0b50b082300000012000c006b530600dc720f0810000000 *11000c0083530600f8ed110804000000110010009c53060054df11080400000011001000c45306 *00d4870b080000000010000c00ef53060050be0b087300000012000c000254060000e611080400 *00001100100026540600cc320b080000000010000c005354060030071208040000001100100069 *54060048f6110804000000110010008254060026b20f082a00000012000c0091540600c48f0f08 *1000000011000c00b3540600206007080000000010000c00e0540600c4c6110800000000100010 *000b550600b4c30c080c00000011000c00275506009c160b080000000010000c0062550600a4c8 *1108000000001000100096550600245206080000000010000c00c255060038610d083000000012 *000c00e1550600f0e11108040000001100100002560600786a10081e00000012000c0019560600 *3c6110084900000012000c002d56060070f3110804000000110010005b560600a0aa0e08180000 *0011000c00715606002c250d081a00000012000c009b560600d0c90b083e00000012000c00ae56 *060068a50e080800000011000c00c356060014f70d080300000012000c00ed5606000000000000 *00000020000000015706000000000071000000120000001a5706003c330e080600000012000c00 *47570600bceb110804000000110010006d57060034fc0b080c00000011000c008557060040d011 *080400000011001000a8570600a4a20e085b00000012000c00bd57060044d70e08080000001200 *0c00e757060065d20f081b00000012000c00f15706006abf0f080100000012000c00fa57060034 *840c082300000012000c0027580600e8cf1108000000001000100059580600ec18050800000000 *10000c0082580600180512080400000011001000a7580600eceb11080400000011001000cd5806 *00843c10082901000012000c00d858060008b609080000000010000c000b590600200912080400 *0000110010002e59060044e8110804000000110010005b59060094cd110800000000100010008a *590600acf211080400000011001000bb590600c0200e085b00000012000c00de59060080d40e08 *1900000012000c00085a060030f80d080600000012000c00295a060054f0110804000000110010 *00445a0600ccb2110800000000100010006b5a0600b6a910082800000012000c00745a060014cf *0c085900000012000c008a5a0600b4a40b080c00000011000c00a75a0600283f0c080500000012 *000c00d25a060090d611080400000011001000045b0600c8cf110800000000100010002e5b0600 *081c0a080000000010000c00575b06003ca20b080c00000011000c00725b060090051208040000 *0011001000955b0600604a0f080800000011000c00b15b060098c40c080300000012000c00d65b *06005cd00c080c00000011000c00f85b0600f4b1110800000000100010001f5c0600b0ee110804 *000000110010003b5c060028960d080c00000011000c00505c0600246207080000000010000c00 *755c0600e0800f080800000011000c00885c0600083a10083100000012000c00965c0600e8ed0c *081000000011000c00b75c060038ca0d085900000012000c00ca5c06001cdd1108040000001100 *1000e45c060080d311080400000011001000fd5c0600241d0e081800000011000c001e5d060098 *d8110804000000110010003e5d060018e8110804000000110010006a5d060020eb0b080c000000 *12000c007e5d06005cf70d080800000011000c00a65d0600dc9b05080000000010000c00d45d06 *009cf311080400000011001000055e060020220e081000000011000c001f5e0600c8f10c080800 *000011000c00415e060008db0b080c00000011000c00575e0600c05210081000000012000c0073 *5e060080d011080400000011001000915e060068f70d080800000011000c00bb5e060064d61108 *0400000011001000e95e06009c5810082c00000011000c00ff5e0600e4500c080c00000011000c *002a5f0600948c0b080700000012000c00425f0600acd3110804000000110010005d5f0600e4d1 *11080400000011001000745f0600f4cb11080000000010001000a55f060034830f080800000011 *000c00c55f060004c40c082000000012000c00e05f0600081905080000000010000c0009600600 *08d80e082200000012000c0033600600b0ed0c082300000012000c0057600600dc9e0508000000 *0010000c00836006001cdb110804000000110010009c60060010db11080400000011001000b260 *060012d10f088f00000012000c00c0600600b4ca0d080800000011000c00d960060018220f0818 *00000011000c000261060034a90e080600000012000c002861060060210d080c00000011000c00 *5161060018be0b080800000011000c007461060040bb120858000000110017007d610600e0b509 *080000000010000c00b06106006ced0b080300000012000c00c9610600ccc40c08080000001100 *0c00f2610600cc9b0b085b00000012000c001362060070b30f081f00000012000c00296206006c *8f0c080c00000011000c003e620600a2ba0f082000000012000c004e62060000cc110800000000 *100010008562060058a806080000000010000c00ae620600a4830f085100000012000c00d16206 *00cc9b0b080800000011000c00f1620600fc160b080000000010000c002b63060080b111080000 *0000100010005363060028001208040000001100100078630600ecd11108040000001100100091 *63060064c711080000000010001000be630600a8c511080000000010001000e8630600780b0e08 *3500000012000c00fe63060026891008af00000012000c000664060038280e080500000012000c *002f64060008ff11080400000011001000526406009c380e085900000012000c00816406001cc0 *11080000000010001000bb64060054c811080000000010001000f0640600000000004700000012 *0000000565060030880f085100000012000c002865060038fa1108040000001100100047650600 *e4c20e081000000011000c005c650600dc140e085b00000012000c0072650600800e0508000000 *0010000c009a650600a08a0c080c00000012000c00b06506001c8c0b080000000010000c00db65 *0600dc0e0e086000000012000c00ee65060004640c080c00000011000c0016660600e8ac0b080c *00000011000c002e660600cc820f080800000011000c004d66060034e011080400000011001000 *71660600f03710089100000012000c0080660600d8a211080000000010001000a46606003cdc0b *080300000012000c00bc6606000c460d081000000011000c00e8660600f0e21108040000001100 *1000fd6606005cd70b080c00000011000c002167060080ab0f081c00000012000c0035670600d8 *5107080000000010000c005d670600688d0c080c00000012000c0075670600e8830d080c000000 *11000c009b67060060e80b080c00000011000c00b4670600f4e411080400000011001000cd6706 *002c060d080c00000011000c00ea6706008cf00c080c00000011000c001168060034d611080400 *0000110010003e68060028c60e080800000011000c005a68060028240e085b00000012000c006e *680600d0480c080700000012000c008a6806009c160b080000000010000c00c468060098d21108 *0400000011001000dc680600f05610083d00000012000c00ec680600ccd2110804000000110010 *000e69060084140d084a00000012000c002c69060010a60f085b00000012000c004e690600c4f8 *110804000000110010006a69060034ac1108000000001000100094690600cccb0e080b00000012 *000c00ac690600000000007c00000012000000bc690600d4530f080c00000011000c00d1690600 *984a0f085b00000012000c00eb6906006cf111080400000011001000046a060020e71108040000 *00110010001c6a0600f80112080400000011001000416a06006cfc0e080800000011000c00586a *060094ed110804000000110010007a6a060048a10b080c00000011000c00956a060064b3050800 *00000010000c00c46a0600f0e511080400000011001000e86a060080dd0b080800000011000c00 *016b060044060e083000000012000c00196b06003cc8110800000000100010004d6b060028400a *080000000010000c00806b0600dce511080400000011001000986b0600fcc61108000000001000 *1000c26b0600accf11080000000010001000f16b060038120f081000000011000c000a6c0600e4 *2a0d081000000011000c00366c0600341f0d085400000012000c00636c0600307e0c0810000000 *11000c007b6c0600fc2a07080000000010000c009f6c060034170e081000000011000c00b46c06 *003cdc0b080800000011000c00cb6c060072ba0f083000000012000c00d86c06003c3d0f081000 *000011000c00ea6c0600bcd2110804000000110010000c6d0600703a0e085900000012000c003b *6d06007cc611080000000010001000666d060037d810084500000012000c00766d060070d51108 *0400000011001000a06d0600000000001001000012000000b66d060024c510087700000012000c *00c66d060018f811080400000011001000e36d060050cc09080000000010000c000d6e0600c423 *0e080c00000011000c002a6e060044a20d080c00000011000c004d6e060038cc11080000000010 *001000876e06007c6107080000000010000c00b16e0600e4c105080000000010000c00e16e0600 *c8b812080400000011001700f26e060074c311080000000010001000266f0600f0ef1108040000 *0011001000486f0600f4ad0e082000000012000c005f6f0600e4c10c080c00000011000c00776f *0600d8090f080c00000011000c00886f060038ce0c080c00000011000c009e6f0600d4a00e0808 *00000011000c00b16f0600b4980d081800000011000c00c96f0600fc9e05080000000010000c00 *f66f0600105f0c080800000011000c002470060014b90c082300000012000c003e700600e8960c *080800000011000c0054700600d03b10080c00000011000c0064700600501f0f085b0000001200 *0c008170060058de0b080800000011000c009f7006007ce911080400000011001000ce70060034 *750e083e00000012000c00f0700600f46107080000000010000c001f710600f005120804000000 *1100100044710600e48e0d080d00000012000c006b710600d09e0c081800000011000c00827106 *00642e0c084b00000012000c009a71060060d011080400000011001000cd710600f8d605080000 *000010000c00fe71060048b709080000000010000c002e720600d0920c080800000011000c0048 *720600c0c8110800000000100010007c720600740e0a080000000010000c00a572060088e11108 *0400000011001000bb7206000cf80b080c00000011000c00d3720600ecc3110800000000100010 *000773060098d3110804000000110010001e730600e4510f082900000012000c003173060060fa *0d080c00000011000c004e730600186b0c080600000012000c007b7306007cd011080400000011 *001000987306006cb211080000000010001000bd73060060e311080400000011001000e1730600 *2cfe0b081000000011000c00f57306007c9f05080000000010000c001d7406000cea1108040000 *0011001000407406006c2207080000000010000c0062740600004c0f080c00000011000c008174 *06008c6f0f080c00000011000c0094740600046107080000000010000c00bf740600dc5b100808 *00000011000c00d5740600dc980f081000000011000c00f7740600a4af0c080800000011000c00 *09750600b8f20c081000000011000c0029750600a8420c082800000012000c004f750600944307 *080000000010000c0076750600f4460c081000000011000c0090750600a8a50f085b0000001200 *0c00a4750600e0f611080400000011001000be75060084e90b080800000011000c00dd75060066 *0410083400000012000c00ef75060080a81108000000001000100012760600e0f70d0806000000 *12000c0038760600b8b509080000000010000c006976060092e20f083600000012000c007a7606 *000803120804000000110010009d76060034e411080400000011001000ba7606005cdb11080400 *000011001000d376060064ee11080400000011001000eb7606006cd11108040000001100100006 *770600506007080000000010000c002d77060028d711080400000011001000557706001ccb0e08 *0500000012000c006d770600c8810c080800000011000c008e770600c0870f085b00000012000c *00af77060044b60b081000000011000c00c9770600b0a211080000000010001000f6770600ccfa *1108040000001100100025780600c2ba0f082000000012000c002f780600b8f011080400000011 *0010004e78060010a40e085b00000012000c0064780600c4dc0b080c00000011000c0083780600 *d8810c082300000012000c00a67806005c5d10080800000011000c00b87806000ccc1108000000 *0010001000f278060054250d082600000012000c0022790600d03f0c081000000011000c004c79 *060020da110804000000110010006c790600a0d6110804000000110010009d79060060b8090800 *00000010000c00cd79060088990f085b00000012000c00e179060008f70d080800000011000c00 *0b7a0600b02a07080000000010000c002f7a0600dc4910089500000012000c00417a060054dc11 *080400000011001000587a0600e0800f085b00000012000c006c7a060050ba0e085b0000001200 *0c00827a0600b8150d081000000011000c009f7a0600f4d911080400000011001000ba7a060000 *0000007f02000012000000c57a060000f80d080600000012000c00ec7a06002c6b10081e000000 *12000c00037b060090c80c081000000011000c00167b06005c6c0c081000000011000c002f7b06 *0060fa0d080c00000012000c004d7b0600742b0a080000000010000c00767b0600099410081100 *000012000c007f7b0600c8890c082000000012000c009a7b060020000b080000000010000c00cc *7b06002c100a080000000010000c00fc7b0600249b04080000000010000c000e7c060000000000 *00000000200000001d7c0600886910080800000011000c00327c0600dce80b080800000011000c *00547c06003c030f080c00000011000c006f7c0600ece00b080600000012000c00967c06009c27 *0b080000000010000c00bd7c0600000000007f00000012000000ce7c0600fceb11080400000011 *001000f47c0600b4300c080300000012000c00107d0600f8060c080300000012000c002a7d0600 *1ccf110800000000100010005e7d060050980d084100000012000c00787d060070c31108000000 *0010001000ae7d060044f70d080800000011000c00d47d060070d311080400000011001000eb7d *06003ccc05080000000010000c001d7e0600d4f50e081800000011000c00377e0600ccf60d080c *00000012000c00557e0600908c0c080c00000012000c006e7e0600f0de11080400000011001000 *987e060004e90b080800000011000c00bc7e060060280e080500000012000c00e57e06002c250d *080c00000011000c000e7f06002c860d080a00000012000c00307f06004cee0b080c0000001100 *0c00497f060010a70b083700000012000c005f7f0600f80712080400000011001000757f0600a8 *f90e085b00000012000c008d7f060000db11080400000011001000b27f0600dce00b0808000000 *11000c00d57f0600e4440a080000000010000c00008006009d180b080000000010000c00003c63 *6f6d6d616e64206c696e653e002f686f6d652f676f746f6d2f64656269616e2f676c6962632f63 *76732f6275696c642e6c6f63616c2f676c6962635f322e332e322e6473312d31392e7465737434 *2f676c6962632d322e332e322e6473312f6275696c642d747265652f693338362d6c6962632f63 *6f6e6669672e68003c6275696c742d696e3e006162692d6e6f74652e53002f686f6d652f676f74 *6f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f676c6962635f32 *2e332e322e6473312d31392e74657374342f676c6962632d322e332e322e6473312f6275696c64 *2d747265652f693338362d6c6962632f6373752f6162692d7461672e6800696e69742e63002f68 *6f6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f *676c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e6473 *312f6275696c642d747265652f693338362d6c6962632f6373752f637274692e53002f686f6d65 *2f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f63616c2f676c69 *62635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e6473312f62 *75696c642d747265652f693338362d6c6962632f6373752f646566732e6800696e697466696e69 *2e630063616c6c5f676d6f6e5f73746172740063727473747566662e63005f5f43544f525f4c49 *53545f5f005f5f44544f525f4c4953545f5f005f5f4a43525f4c4953545f5f00702e3000636f6d *706c657465642e31005f5f646f5f676c6f62616c5f64746f72735f617578006672616d655f6475 *6d6d79005f5f43544f525f454e445f5f005f5f44544f525f454e445f5f005f5f4652414d455f45 *4e445f5f005f5f4a43525f454e445f5f005f5f646f5f676c6f62616c5f63746f72735f61757800 *2f686f6d652f676f746f6d2f64656269616e2f676c6962632f6376732f6275696c642e6c6f6361 *6c2f676c6962635f322e332e322e6473312d31392e74657374342f676c6962632d322e332e322e *6473312f6275696c642d747265652f693338362d6c6962632f6373752f6372746e2e5300723264 *575f73727400723264575f636c6f7375726500723264575f696e666f00733265695f696e666f00 *733265695f656e74727900733265615f696e666f00733265615f656e74727900733265635f696e *666f00733265635f656e74727900733265375f696e666f00733265375f656e7472790073326565 *5f696e666f00733265655f656e74727900733265675f696e666f00733265675f656e7472790073 *326f305f696e666f0073326f305f72657400723264575f656e74727900723264595f7372740072 *3264595f636c6f7375726500723264595f696e666f0073326e515f696e666f0073326e515f7265 *7400733265445f315f616c7400733265525f696e666f00733265525f656e74727900733265465f *696e666f00733265465f656e74727900733265485f696e666f00733265485f656e747279007332 *65795f696e666f00733265795f656e747279007332654a5f696e666f007332654a5f656e747279 *00733265775f696e666f00733265775f656e747279007332654c5f696e666f007332654c5f656e *7472790073326e575f696e666f0073326e575f72657400733265445f325f616c7400733265445f *7674626c00723264595f656e7472790073326d725f737274640073326d635f737274640073326d *615f737274640073326d745f73727464007332666e5f737274640073326e4e5f696e666f007332 *6e4e5f72657400733266715f696e666f00733266715f656e74727900733266695f696e666f0073 *3266695f656e74727900733266735f696e666f00733266735f656e74727900733268705f737274 *640073326e645f73727464007332686e5f73727464007332686b5f7372746400733268685f696e *666f00733268685f656e74727900733268665f737274640073326e665f737274640073326e685f *7372746400733268645f696e666f00733268645f656e7472790073326e685f315f616c74007332 *68625f696e666f00733268625f656e7472790073326e685f325f616c740073326e685f7674626c *0073326e665f696e666f0073326e665f72657400733268665f696e666f00733268665f656e7472 *79007332686b5f696e666f007332686b5f656e74727900733268325f7372746400733268305f73 *72746400733267595f737274640073326e725f315f616c74007332674e5f696e666f007332674e *5f656e74727900733267515f696e666f00733267515f656e7472790073326e725f325f616c7400 *73326e725f7674626c0073326e695f696e666f0073326e695f72657400733267535f696e666f00 *733267535f656e7472790073326e425f315f616c7400733267745f696e666f00733267745f656e *74727900733267775f696e666f00733267775f656e7472790073326e425f325f616c740073326e *425f7674626c0073326e735f696e666f0073326e735f72657400733267795f696e666f00733267 *795f656e74727900733267555f696e666f00733267555f656e7472790073326e4c5f315f616c74 *0073326e4d5f315f616c740073326e4d5f325f616c740073326e4d5f335f616c740073326e4d5f *64666c740073326e4d5f7674626c00733267345f696e666f00733267345f656e74727900733267 *305f696e666f00733267305f656e74727900733267365f696e666f00733267365f656e74727900 *73326e4c5f325f616c740073326e4c5f7674626c0073326e4b5f315f616c7400733267395f696e *666f00733267395f656e74727900733267635f696e666f00733267635f656e7472790073326e4b *5f325f616c740073326e4b5f7674626c0073326e435f696e666f0073326e435f72657400733267 *655f696e666f00733267655f656e74727900733267575f696e666f00733267575f656e74727900 *733267595f696e666f00733267595f656e74727900733266495f696e666f00733266495f656e74 *727900733268305f696e666f00733268305f656e74727900733268325f696e666f00733268325f *656e747279007332686e5f696e666f007332686e5f656e74727900733266475f696e666f007332 *66475f656e7472790073326e645f696e666f0073326e645f72657400733268705f696e666f0073 *3268705f656e74727900733266785f696e666f00733266785f656e747279007332685a5f737274 *640073326e375f7372746400733268585f7372746400733268565f7372746400733268545f696e *666f00733268545f656e74727900733268525f737274640073326e615f737274640073326e635f *7372746400733268505f696e666f00733268505f656e7472790073326e635f315f616c74007332 *684e5f696e666f007332684e5f656e7472790073326e635f325f616c740073326e635f7674626c *0073326e615f696e666f0073326e615f72657400733268525f696e666f00733268525f656e7472 *7900733268565f696e666f00733268565f656e74727900733268455f7372746400733268435f69 *6e666f00733268435f656e74727900733268455f696e666f00733268455f656e74727900733268 *585f696e666f00733268585f656e74727900733268415f696e666f00733268415f656e74727900 *73326e375f696e666f0073326e375f726574007332685a5f696e666f007332685a5f656e747279 *00733268725f696e666f00733268725f656e747279007332697a5f737274640073326e315f7372 *746400733269785f7372746400733269765f7372746400733269745f696e666f00733269745f65 *6e74727900733269725f737274640073326e345f737274640073326e365f737274640073326970 *5f696e666f00733269705f656e7472790073326e365f315f616c74007332696e5f696e666f0073 *32696e5f656e7472790073326e365f325f616c740073326e365f7674626c0073326e345f696e66 *6f0073326e345f72657400733269725f696e666f00733269725f656e74727900733269765f696e *666f00733269765f656e74727900733269655f7372746400733269635f696e666f00733269635f *656e74727900733269655f696e666f00733269655f656e74727900733269785f696e666f007332 *69785f656e74727900733269615f696e666f00733269615f656e7472790073326e315f696e666f *0073326e315f726574007332697a5f696e666f007332697a5f656e74727900733269315f696e66 *6f00733269315f656e7472790073326a655f737274640073326d585f737274640073326d5a5f73 *7274640073326a635f737274640073326a615f73727464007332695a5f696e666f007332695a5f *656e7472790073326a335f696e666f0073326a335f656e7472790073326a365f696e666f007332 *6a365f656e74727900733269575f696e666f00733269575f656e7472790073326a385f696e666f *0073326a385f656e7472790073326a615f696e666f0073326a615f656e7472790073326a635f69 *6e666f0073326a635f656e74727900733269555f696e666f00733269555f656e7472790073326d *5a5f696e666f0073326d5a5f7265740073326d585f696e666f0073326d585f7265740073326a65 *5f696e666f0073326a655f656e74727900733269485f696e666f00733269485f656e7472790073 *326b365f737274640073326d505f737274640073326d525f737274640073326b345f7372746400 *73326b325f737274640073326b305f737274640073326a595f696e666f0073326a595f656e7472 *790073326a575f737274640073326d555f737274640073326d575f737274640073326a555f696e *666f0073326a555f656e7472790073326d575f315f616c740073326a535f696e666f0073326a53 *5f656e7472790073326d575f325f616c740073326d575f7674626c0073326d555f696e666f0073 *326d555f7265740073326a575f696e666f0073326a575f656e7472790073326b305f696e666f00 *73326b305f656e7472790073326a4a5f737274640073326a485f696e666f0073326a485f656e74 *72790073326a4a5f696e666f0073326a4a5f656e7472790073326b325f696e666f0073326b325f *656e7472790073326a465f737274640073326a445f737274640073326a425f696e666f0073326a *425f656e7472790073326a445f696e666f0073326a445f656e7472790073326a465f696e666f00 *73326a465f656e7472790073326b345f696e666f0073326b345f656e7472790073326a7a5f696e *666f0073326a7a5f656e7472790073326d525f696e666f0073326d525f7265740073326d505f69 *6e666f0073326d505f7265740073326b365f696e666f0073326b365f656e7472790073326a6d5f *696e666f0073326a6d5f656e7472790073326b475f737274640073326d4a5f737274640073326b *455f737274640073326b435f737274640073326b415f696e666f0073326b415f656e7472790073 *326b795f737274640073326d4d5f737274640073326d4f5f737274640073326b775f696e666f00 *73326b775f656e7472790073326d4f5f315f616c740073326b755f696e666f0073326b755f656e *7472790073326d4f5f325f616c740073326d4f5f7674626c0073326d4d5f696e666f0073326d4d *5f7265740073326b795f696e666f0073326b795f656e7472790073326b435f696e666f0073326b *435f656e7472790073326b6c5f737274640073326b6a5f696e666f0073326b6a5f656e74727900 *73326b6c5f696e666f0073326b6c5f656e7472790073326b455f696e666f0073326b455f656e74 *72790073326b685f696e666f0073326b685f656e7472790073326d4a5f696e666f0073326d4a5f *7265740073326b475f696e666f0073326b475f656e7472790073326b385f696e666f0073326b38 *5f656e7472790073326c795f737274640073326d415f737274640073326d435f73727464007332 *6d455f737274640073326c355f696e666f0073326c355f656e7472790073326c775f7372746400 *73326c755f737274640073326c735f696e666f0073326c735f656e7472790073326c715f737274 *640073326d475f737274640073326d495f737274640073326c6f5f696e666f0073326c6f5f656e *7472790073326d495f315f616c740073326c6d5f696e666f0073326c6d5f656e7472790073326d *495f325f616c740073326d495f7674626c0073326d475f696e666f0073326d475f726574007332 *6c715f696e666f0073326c715f656e7472790073326c755f696e666f0073326c755f656e747279 *0073326c645f737274640073326c625f696e666f0073326c625f656e7472790073326c645f696e *666f0073326c645f656e7472790073326c775f696e666f0073326c775f656e7472790073326c39 *5f696e666f0073326c395f656e7472790073326d455f696e666f0073326d455f7265740073326d *435f696e666f0073326d435f7265740073326d415f696e666f0073326d415f7265740073326c79 *5f696e666f0073326c795f656e7472790073326b4f5f696e666f0073326b4f5f656e7472790073 *326d385f737274640073326d755f737274640073326d365f737274640073326d345f7372746400 *73326d325f696e666f0073326d325f656e7472790073326d305f737274640073326d785f737274 *640073326d7a5f737274640073326c595f696e666f0073326c595f656e7472790073326d7a5f31 *5f616c740073326c575f696e666f0073326c575f656e7472790073326d7a5f325f616c74007332 *6d7a5f7674626c0073326d785f696e666f0073326d785f7265740073326d305f696e666f007332 *6d305f656e7472790073326d345f696e666f0073326d345f656e7472790073326c4e5f73727464 *0073326c4c5f696e666f0073326c4c5f656e7472790073326c4e5f696e666f0073326c4e5f656e *7472790073326d365f696e666f0073326d365f656e7472790073326c4a5f696e666f0073326c4a *5f656e7472790073326d755f696e666f0073326d755f7265740073326d385f696e666f0073326d *385f656e7472790073326c415f696e666f0073326c415f656e747279007332666e5f696e666f00 *7332666e5f7265740073326d745f696e666f0073326d745f7265740073326d615f696e666f0073 *326d615f656e74727900733266395f696e666f00733266395f656e7472790073326d635f696e66 *6f0073326d635f656e7472790073326d725f696e666f0073326d725f7265740073326d6c5f696e *666f0073326d6c5f656e7472790073326d6d5f696e666f0073326d6d5f72657400723163355f73 *727400723163355f636c6f7375726500723163355f696e666f00733159655f696e666f00733159 *655f656e74727900733159375f696e666f00733159375f656e74727900733159675f696e666f00 *733159675f656e74727900733159695f696e666f00733159695f656e74727900733159345f696e *666f00733159345f656e747279007331596b5f696e666f007331596b5f656e7472790072316335 *5f656e747279007231624f5f737274007231624f5f636c6f73757265007231624f5f696e666f00 *733269695f315f616c74007331594a5f315f616c74007331594a5f325f616c74007331594a5f76 *74626c00733269695f325f616c7400733269695f7674626c007331594b5f696e666f007331594b *5f656e747279007332696c5f315f616c740073315a7a5f696e666f0073315a7a5f656e74727900 *73315a425f696e666f0073315a425f656e747279007332696c5f325f616c740073315a675f696e *666f0073315a675f656e7472790073315a695f696e666f0073315a695f656e7472790073315a6b *5f696e666f0073315a6b5f656e747279007332696c5f335f616c74007332696c5f7674626c0073 *315a4b5f696e666f0073315a4b5f656e7472790073315a4e5f696e666f0073315a4e5f656e7472 *790073315a505f696e666f0073315a505f656e74727900733230735f696e666f00733230735f65 *6e74727900733269705f315f616c74007332306e5f696e666f007332306e5f656e747279007332 *30705f696e666f00733230705f656e74727900733230675f696e666f00733230675f656e747279 *00733269705f325f616c7400733230385f696e666f00733230385f656e74727900733230315f69 *6e666f00733230315f656e74727900733230615f696e666f00733230615f656e74727900733230 *635f696e666f00733230635f656e7472790073315a595f696e666f0073315a595f656e74727900 *733269705f335f616c7400733269705f7674626c00733230755f696e666f00733230755f656e74 *727900733230785f696e666f00733230785f656e747279007332307a5f696e666f007332307a5f *656e74727900733269745f315f616c7400733269755f315f616c7400733269755f325f616c7400 *733269755f7674626c00733230535f696e666f00733230535f656e74727900733230585f696e66 *6f00733230585f656e74727900733269745f325f616c7400733269745f7674626c00733269685f *696e666f00733269685f726574007231624f5f656e74727900723158525f73727400723158525f *636c6f7375726500723158525f696e666f00723158525f656e74727900733231385f696e666f00 *733231385f656e74727900733231625f696e666f00733231625f656e74727900733269375f315f *616c74007332316e5f696e666f007332316e5f656e74727900733231705f696e666f0073323170 *5f656e74727900733231725f696e666f00733231725f656e74727900733269375f325f616c7400 *733269375f7674626c00733231745f696e666f00733231745f656e74727900733231785f696e66 *6f00733231785f656e74727900733231415f696e666f00733231415f656e74727900733231445f *696e666f00733231445f656e74727900733232695f696e666f00733232695f656e747279007332 *32395f696e666f00733232395f656e74727900733231505f696e666f00733231505f656e747279 *00733231535f696e666f00733231535f656e74727900733231555f696e666f00733231555f656e *747279007332314d5f696e666f007332314d5f656e74727900733231575f696e666f0073323157 *5f656e74727900733231595f696e666f00733231595f656e747279007332314a5f696e666f0073 *32314a5f656e74727900733232305f696e666f00733232305f656e74727900733232725f696e66 *6f00733232725f656e74727900723163335f73727400723163335f636c6f737572650072316333 *5f696e666f00733232425f696e666f00733232425f656e74727900733232445f696e666f007332 *32445f656e74727900733232795f696e666f00733232795f656e74727900733232465f696e666f *00733232465f656e74727900733232495f696e666f00733232495f656e74727900723163335f65 *6e74727900723158545f73727400723158545f636c6f7375726500723158545f696e666f007231 *58545f656e74727900723158565f73727400723158565f636c6f7375726500723158565f696e66 *6f0073326c6d5f72657400723158565f656e74727900723158585f73727400723158585f636c6f *7375726500723158585f696e666f00723158585f656e74727900733269765f315f616c74007332 *33625f315f616c7400733269795f315f616c740073326a665f315f616c740073326a6a5f315f61 *6c74007332334a5f656e7472790073326a6d5f315f616c7400733233565f656e7472790073326a *6d5f325f616c740073326a6d5f7674626c0073326a6b5f696e666f0073326a6b5f726574007332 *6a6a5f325f616c740073326a6a5f7674626c00733233565f696e666f00733233545f696e666f00 *733233545f7265740073326a665f325f616c740073326a665f7674626c007332334a5f696e666f *00733234315f696e666f00733234315f656e7472790073326a6e5f315f616c740073326a6f5f69 *6e666f0073326a6f5f7265740073326a6e5f325f616c740073326a6e5f7674626c00733234685f *696e666f00733234685f656e74727900733235505f315f616c7400733235505f325f616c740073 *3235505f7674626c0073326a735f315f616c74007332356c5f315f616c74007332356c5f325f61 *6c74007332356c5f7674626c0073326a795f315f616c7400733235625f696e666f00733235625f *656e7472790073326a425f315f616c740073326a425f325f616c740073326a425f7674626c0073 *32344f5f315f616c74007332344f5f325f616c74007332344f5f7674626c0073326a795f325f61 *6c7400733234475f696e666f00733234475f656e74727900733234785f315f616c740073323443 *5f696e666f00733234435f656e74727900733234785f325f616c7400733234785f7674626c0073 *326a795f335f616c740073326a795f7674626c0073326a765f315f616c7400733235425f696e66 *6f00733235425f656e7472790073326a765f325f616c740073326a765f7674626c0073326a735f *325f616c740073326a735f7674626c00733236685f315f616c7400733269435f696e666f007332 *69435f72657400733236675f696e666f00733236675f656e747279007332366a5f696e666f0073 *32366a5f656e74727900733269475f315f616c74007332694b5f315f616c74007332364d5f656e *747279007332694c5f315f616c7400733236555f656e747279007332694c5f325f616c74007332 *694c5f7674626c007332694b5f325f616c74007332694b5f7674626c00733236555f696e666f00 *733236535f696e666f00733236535f72657400733269475f325f616c7400733269475f7674626c *007332364d5f696e666f007332365a5f696e666f007332365a5f656e74727900733237325f696e *666f00733237325f656e747279007332694d5f315f616c74007332694d5f325f616c7400733269 *4d5f7674626c00733237365f696e666f00733237365f656e747279007332694e5f315f616c7400 *7332694f5f696e666f007332694f5f726574007332694e5f325f616c74007332694e5f7674626c *007332376d5f696e666f007332376d5f656e74727900733237725f696e666f00733237725f656e *74727900733237745f696e666f00733237745f656e74727900733269535f315f616c7400733269 *5a5f315f616c7400733239325f696e666f00733239325f656e74727900733239345f696e666f00 *733239345f656e74727900733239655f696e666f00733239655f656e74727900733239615f696e *666f00733239615f656e74727900733239635f696e666f00733239635f656e7472790073323967 *5f696e666f00733239675f656e74727900733239385f696e666f00733239385f656e7472790073 *3239695f696e666f00733239695f656e7472790073326a315f696e666f0073326a315f72657400 *7332695a5f325f616c74007332695a5f7674626c00733269585f696e666f00733269585f726574 *00733269575f315f616c74007332384a5f696e666f007332384a5f656e747279007332384c5f69 *6e666f007332384c5f656e747279007332384e5f696e666f007332384e5f656e7472790073326a *365f315f616c740073326a365f325f616c740073326a365f7674626c0073326a355f315f616c74 *007332386e5f696e666f007332386e5f656e74727900733238705f696e666f00733238705f656e *7472790073326a375f696e666f0073326a375f7265740073326a355f325f616c740073326a355f *7674626c0073326a335f72657400733269575f325f616c7400733238355f696e666f0073323835 *5f656e7472790073326a635f315f616c7400733237525f696e666f00733237525f656e74727900 *733237545f696e666f00733237545f656e74727900733238315f696e666f00733238315f656e74 *72790073326a645f696e666f0073326a645f7265740073326a635f325f616c740073326a635f76 *74626c0073326a615f72657400733269575f335f616c7400733269575f7674626c00733269545f *315f616c7400733239725f696e666f00733239725f656e74727900733239745f696e666f007332 *39745f656e74727900733239765f696e666f00733239765f656e74727900733269545f325f616c *7400733269545f7674626c00733269535f325f616c7400733269535f7674626c00733236685f32 *5f616c7400733236685f7674626c00733233505f696e666f00733233505f72657400733269795f *325f616c7400733269795f7674626c00733269775f696e666f00733269775f7265740073323362 *5f325f616c7400733233625f7674626c00733239785f696e666f00733239785f656e7472790073 *3239495f696e666f00733239495f656e7472790073326a4c5f315f616c740073326a4c5f325f61 *6c740073326b695f315f616c740073326b695f325f616c740073326b695f335f616c740073326b *695f7674626c0073326a4c5f335f616c740073326b545f315f616c740073326b545f325f616c74 *00733261735f696e666f00733261735f656e7472790073326b545f335f616c740073326b545f76 *74626c0073326a4c5f345f616c740073326a4c5f355f616c740073326a4c5f7674626c0073326a *4a5f72657400733269765f325f616c7400733269765f7674626c007231585a5f73727400723158 *5a5f636c6f73757265007231585a5f696e666f00733264755f696e666f00733264755f656e7472 *7900733264775f696e666f00733264775f656e74727900733264725f696e666f00733264725f65 *6e747279007231585a5f656e74727900733264475f696e666f00733264475f656e747279007332 *684e5f315f616c74007332684f5f315f616c74007332684f5f325f616c74007332684f5f767462 *6c007332684e5f325f616c74007332684e5f7674626c007332684d5f315f616c74007332684d5f *325f616c74007332684d5f335f616c74007332684d5f7674626c007332684c5f315f616c740073 *32684c5f325f616c74007332684c5f7674626c00733268485f315f616c7400733268495f315f61 *6c74007332684a5f315f616c74007332684a5f325f616c74007332684a5f7674626c0073326849 *5f325f616c7400733268495f7674626c00733268485f325f616c7400733268485f7674626c0073 *3268475f315f616c7400733268475f325f616c7400733268475f335f616c7400733268475f345f *616c7400733268475f355f616c7400733268475f7674626c00733268435f315f616c7400733268 *465f696e666f00733268465f72657400733268445f315f616c7400733268455f72657400733268 *445f325f616c7400733268445f7674626c00733268435f325f616c7400733268435f7674626c00 *733268425f315f616c7400733268425f325f616c7400733268425f335f616c7400733268425f76 *74626c00733268415f726574007332687a5f696e666f007332687a5f72657400733268795f696e *666f00733268795f72657400733268785f696e666f00733268785f72657400723273695f737274 *00723273695f636c6f7375726500723273695f696e666f00723273695f656e747279007232736b *5f737274007232736b5f636c6f73757265007232736b5f696e666f00733331695f696e666f0073 *3331695f726574007232736b5f656e747279007232736d5f737274007232736d5f636c6f737572 *65007232736d5f696e666f007232736d5f656e747279007232736f5f737274007232736f5f636c *6f73757265007232736f5f696e666f00733331655f696e666f00733331655f726574007232736f *5f656e74727900723273715f73727400723273715f636c6f7375726500723273715f696e666f00 *723273715f656e747279007332756d5f696e666f007332756d5f656e74727900733259645f696e *666f00733259645f72657400733276635f696e666f00733276635f656e74727900733275555f69 *6e666f00733275555f656e74727900733275535f696e666f00733275535f656e74727900733259 *6b5f696e666f007332596b5f72657400733275585f696e666f00733275585f656e747279007332 *755a5f696e666f007332755a5f656e74727900733259395f696e666f00733259395f7265740073 *3276665f696e666f00733276665f656e74727900733275425f696e666f00733275425f656e7472 *7900733275765f696e666f00733275765f656e74727900733275745f696e666f00733275745f65 *6e74727900733275785f696e666f00733275785f656e74727900733275445f696e666f00733275 *445f656e74727900733259385f696e666f00733259385f72657400723273735f73727400723273 *735f636c6f7375726500723273735f696e666f00723273735f656e74727900723273755f737274 *00723273755f636c6f7375726500723273755f696e666f00733331615f696e666f00733331615f *72657400723273755f656e74727900723273775f73727400723273775f636c6f73757265007232 *73775f696e666f00723273775f656e74727900723273795f73727400723273795f636c6f737572 *6500723273795f696e666f00723273795f656e74727900723273415f73727400723273415f636c *6f7375726500723273415f696e666f00733331375f696e666f00733331375f7265740072327341 *5f656e74727900723273435f73727400723273435f636c6f7375726500723273435f696e666f00 *723273435f656e74727900723273455f73727400723273455f636c6f7375726500723273455f69 *6e666f00723273455f656e74727900723273475f73727400723273475f636c6f73757265007232 *73475f696e666f00723273475f656e74727900723273495f73727400723273495f636c6f737572 *6500723273495f696e666f00723273495f656e747279007232734b5f737274007232734b5f636c *6f73757265007232734b5f696e666f007333305a5f696e666f007333305a5f726574007232734b *5f656e747279007232734d5f737274007232734d5f636c6f73757265007232734d5f696e666f00 *7332776a5f696e666f007332776a5f656e74727900733277725f696e666f00733277725f656e74 *727900733259325f696e666f00733259325f72657400733277385f696e666f00733277385f656e *747279007232734d5f656e747279007232734f5f737274007232734f5f636c6f73757265007232 *734f5f696e666f007332584d5f696e666f007332584d5f726574007232734f5f656e7472790073 *3277575f696e666f00733277575f656e74727900733277595f696e666f00733277595f656e7472 *7900723273525f73727400723273525f636c6f7375726500723273525f696e666f00733279305f *696e666f00733279305f656e74727900733258785f696e666f00733258785f7265740073327855 *5f696e666f00733278555f656e74727900733279325f696e666f00733279325f656e7472790073 *3278495f696e666f00733278495f656e747279007332784b5f696e666f007332784b5f656e7472 *7900733279345f696e666f00733279345f656e74727900733278455f696e666f00733278455f65 *6e74727900733278475f696e666f00733278475f656e74727900733279365f696e666f00733279 *365f656e74727900733258415f696e666f00733258415f72657400733278435f696e666f007332 *78435f656e74727900733279385f696e666f00733279385f656e74727900733278715f696e666f *00733278715f656e74727900733278735f696e666f00733278735f656e74727900733279615f69 *6e666f00733279615f656e747279007332786d5f696e666f007332786d5f656e74727900733278 *6f5f696e666f007332786f5f656e74727900733279635f696e666f00733279635f656e74727900 *733258445f696e666f00733258445f726574007332786b5f696e666f007332786b5f656e747279 *00733258775f696e666f00733258775f72657400723273525f656e74727900733279665f636c6f *7375726500733279685f73727400733279685f636c6f7375726500733279685f696e666f007332 *79685f656e74727900723273545f73727400723273545f636c6f7375726500723273545f696e66 *6f00723273545f656e74727900733242705f73727400733242705f636c6f737572650073324270 *5f696e666f00733279745f696e666f00733279745f656e74727900733279775f696e666f007332 *79775f72657400733279425f696e666f00733279425f656e74727900733257535f315f616c7400 *733279485f696e666f00733279485f656e747279007332794a5f696e666f007332794a5f726574 *00733257555f315f616c740073327a335f696e666f0073327a335f656e7472790073327a355f69 *6e666f0073327a355f7265740073327a615f696e666f0073327a615f656e747279007332575a5f *315f616c740073327a675f696e666f0073327a675f656e7472790073327a695f696e666f007332 *7a695f72657400733258315f315f616c740073327a465f696e666f0073327a465f656e74727900 *73327a485f696e666f0073327a485f72657400733258365f315f616c7400733241315f696e666f *00733241315f656e74727900733241335f696e666f00733241335f72657400733241385f696e66 *6f00733241385f656e74727900733258625f315f616c7400733241655f696e666f00733241655f *656e74727900733241675f696e666f00733241675f72657400733258645f315f616c7400733241 *445f696e666f00733241445f656e74727900733241465f696e666f00733241465f726574007332 *58695f315f616c74007332586c5f315f616c74007332586c5f325f616c74007332586c5f767462 *6c007332586a5f696e666f007332586a5f72657400733258695f325f616c7400733258695f7674 *626c00733258685f335f616c7400733258685f64666c7400733258685f7674626c00733242325f *696e666f00733242325f656e74727900733242355f696e666f00733242355f656e747279007332 *41795f696e666f00733241795f656e74727900733258675f315f616c7400733258675f325f616c *7400733258675f7674626c00733258655f696e666f00733258655f72657400733258645f325f61 *6c7400733258645f7674626c00733258635f335f616c7400733258635f64666c7400733258635f *7674626c00733242375f696e666f00733242375f656e74727900733258625f325f616c74007332 *58625f7674626c00733258615f345f616c7400733258615f64666c7400733258615f7674626c00 *733242395f696e666f00733242395f656e74727900733258395f315f616c7400733258395f325f *616c7400733258395f7674626c00733258375f696e666f00733258375f72657400733258365f32 *5f616c7400733258365f7674626c00733258355f335f616c7400733258355f64666c7400733258 *355f7674626c00733242625f696e666f00733242625f656e74727900733242645f696e666f0073 *3242645f656e7472790073327a415f696e666f0073327a415f656e74727900733258345f315f61 *6c7400733258345f325f616c7400733258345f7674626c00733258325f696e666f00733258325f *72657400733258315f325f616c7400733258315f7674626c00733258305f335f616c7400733258 *305f64666c7400733258305f7674626c00733242665f696e666f00733242665f656e7472790073 *32575a5f325f616c74007332575a5f7674626c00733257595f345f616c7400733257595f64666c *7400733257595f7674626c00733242685f696e666f00733242685f656e74727900733257585f31 *5f616c7400733257585f325f616c7400733257585f7674626c00733257565f696e666f00733257 *565f72657400733257555f325f616c7400733257555f7674626c00733257545f335f616c740073 *3257545f64666c7400733257545f7674626c007332426a5f696e666f007332426a5f656e747279 *00733257535f325f616c7400733257535f7674626c00733257525f345f616c7400733257525f64 *666c7400733257525f7674626c007332426c5f696e666f007332426c5f656e7472790073325750 *5f696e666f00733257505f726574007332426e5f696e666f007332426e5f656e74727900733242 *705f656e74727900723273565f73727400723273565f636c6f7375726500723273565f696e666f *00723273565f656e747279007332424e5f696e666f007332424e5f656e74727900733242515f69 *6e666f00733242515f656e74727900733242435f696e666f00733242435f656e74727900733242 *455f696e666f00733242455f656e74727900733242475f696e666f00733242475f656e74727900 *7332574f5f696e666f007332574f5f72657400733243645f696e666f00733243645f656e747279 *00733243615f696e666f00733243615f656e74727900733243685f696e666f00733243685f656e *747279007332436c5f696e666f007332436c5f656e747279007332436f5f696e666f007332436f *5f656e74727900733257345f315f616c7400733244345f696e666f00733244345f656e74727900 *733257365f696e666f00733257365f72657400733244375f696e666f00733244375f656e747279 *00733257355f696e666f00733257355f72657400733257345f325f616c7400733257345f767462 *6c00733244395f696e666f00733244395f656e74727900733244785f696e666f00733244785f65 *6e74727900733244745f696e666f00733244745f656e747279007332446a5f696e666f00733244 *6a5f656e747279007332444c5f696e666f007332444c5f656e74727900733257635f696e666f00 *733257635f72657400733243465f696e666f00733243465f656e74727900733243765f696e666f *00733243765f656e74727900733243785f696e666f00733243785f656e74727900733257615f69 *6e666f00733257615f72657400733243495f696e666f00733243495f656e74727900733244505f *696e666f00733244505f656e747279007332576a5f696e666f007332576a5f7265740073324636 *5f696e666f00733246365f656e74727900733257765f696e666f00733257765f72657400733245 *535f696e666f00733245535f656e74727900733257735f696e666f00733257735f726574007332 *45565f696e666f00733245565f656e747279007332457a5f696e666f007332457a5f656e747279 *00733245425f696e666f00733245425f656e74727900733257715f696e666f00733257715f7265 *7400733245595f696e666f00733245595f656e74727900733246385f696e666f00733246385f65 *6e74727900733257485f696e666f00733257485f726574007332456d5f696e666f007332456d5f *656e74727900733257455f696e666f00733257455f72657400733245705f696e666f0073324570 *5f656e74727900733245325f696e666f00733245325f656e74727900733245345f696e666f0073 *3245345f656e74727900733257435f696e666f00733257435f72657400733245735f696e666f00 *733245735f656e74727900733246615f696e666f00733246615f656e74727900733257695f696e *666f00733257695f72657400723273595f73727400723273595f636c6f7375726500723273595f *696e666f00723273595f656e74727900723274305f73727400723274305f636c6f737572650072 *3274305f696e666f007332484c5f696e666f007332484c5f656e747279007333306b5f315f616c *7400733248485f696e666f00733248485f656e74727900733248415f696e666f00733248415f65 *6e74727900733248435f696e666f00733248435f656e747279007332484a5f696e666f00733248 *4a5f656e747279007333306c5f696e666f007333306c5f72657400733248795f696e666f007332 *48795f656e747279007333306b5f325f616c7400733248685f696e666f00733248685f656e7472 *7900733248615f696e666f00733248615f656e74727900733248635f696e666f00733248635f65 *6e747279007332486a5f696e666f007332486a5f656e74727900733330745f696e666f00733330 *745f72657400733248385f696e666f00733248385f656e747279007333306b5f335f616c740073 *3247525f696e666f00733247525f656e747279007332474b5f696e666f007332474b5f656e7472 *79007332474d5f696e666f007332474d5f656e74727900733247545f696e666f00733247545f65 *6e74727900733330425f696e666f00733330425f72657400733247495f696e666f00733247495f *656e747279007333306b5f345f616c74007332476e5f696e666f007332476e5f656e7472790072 *3274305f656e74727900733247705f696e666f00733247705f656e74727900733247695f696e66 *6f00733247695f656e74727900733247725f696e666f00733247725f656e74727900733247625f *696e666f00733247625f656e74727900733247645f696e666f00733247645f656e747279007332 *47745f696e666f00733247745f656e747279007333304a5f696e666f007333304a5f7265740073 *3247395f696e666f00733247395f656e747279007333306b5f355f616c74007332464e5f696e66 *6f007332464e5f656e74727900733246505f696e666f00733246505f656e74727900733246495f *696e666f00733246495f656e74727900733246525f696e666f00733246525f656e747279007332 *46425f696e666f00733246425f656e74727900733246445f696e666f00733246445f656e747279 *00733246545f696e666f00733246545f656e74727900733330525f696e666f00733330525f7265 *74007332467a5f696e666f007332467a5f656e747279007333306b5f365f616c74007333306b5f *7674626c007332484f5f636c6f7375726500733248515f73727400733248515f636c6f73757265 *00733248515f696e666f00733248515f656e74727900723274325f73727400723274325f636c6f *7375726500723274325f696e666f00723274325f656e74727900723274355f7372740072327437 *5f73727400723274395f73727400723274355f636c6f7375726500723274375f636c6f73757265 *00723274395f636c6f7375726500723274355f696e666f00723274355f656e7472790072327437 *5f696e666f00723274375f656e74727900723274395f696e666f00723274395f656e7472790073 *324c465f73727400723274625f636c6f7375726500723274625f7372740073324c465f636c6f73 *7572650073324c465f696e666f0073324b5a5f696e666f0073324b5a5f656e7472790073324c32 *5f696e666f0073324c325f7265740073324c375f696e666f0073324c375f656e7472790073325a *5a5f315f616c740073324c6d5f696e666f0073324c6d5f656e7472790073324c655f696e666f00 *73324c655f656e7472790073324c705f696e666f0073324c705f656e7472790073324c625f696e *666f0073324c625f656e7472790073325a5a5f325f616c740073325a5a5f7674626c0073325a59 *5f345f616c740073325a595f64666c740073325a595f7674626c0073324c725f696e666f007332 *4c725f656e7472790073325a575f696e666f0073325a575f7265740073324c745f696e666f0073 *324c745f656e7472790073324c765f696e666f0073324c765f656e7472790073324b695f696e66 *6f0073324b695f656e7472790073324b6c5f696e666f0073324b6c5f7265740073324b715f696e *666f0073324b715f656e74727900733330335f315f616c740073324b465f696e666f0073324b46 *5f656e7472790073324b785f696e666f0073324b785f656e7472790073324b495f696e666f0073 *324b495f656e7472790073324b755f696e666f0073324b755f656e74727900733330335f325f61 *6c7400733330335f7674626c00733330325f345f616c7400733330325f64666c7400733330325f *7674626c0073324b4b5f696e666f0073324b4b5f656e74727900733330305f696e666f00733330 *305f7265740073324b4d5f696e666f0073324b4d5f656e7472790073324b4f5f696e666f007332 *4b4f5f656e7472790073324c785f696e666f0073324c785f656e7472790073324a485f696e666f *0073324a485f656e7472790073324a4b5f696e666f0073324a4b5f7265740073324a505f696e66 *6f0073324a505f656e74727900733330375f315f616c740073324b305f696e666f0073324b305f *656e7472790073324a545f696e666f0073324a545f656e74727900733330375f325f616c740073 *3330375f7674626c00733330365f345f616c7400733330365f64666c7400733330365f7674626c *0073324b335f696e666f0073324b335f656e74727900733330345f696e666f00733330345f7265 *740073324b355f696e666f0073324b355f656e7472790073324b375f696e666f0073324b375f65 *6e7472790073324c7a5f696e666f0073324c7a5f656e7472790073324a365f696e666f0073324a *365f656e7472790073324a395f696e666f0073324a395f7265740073324a655f696e666f007332 *4a655f656e74727900733330625f315f616c740073324a705f696e666f0073324a705f656e7472 *790073324a695f696e666f0073324a695f656e74727900733330625f325f616c7400733330625f *7674626c00733330615f345f616c7400733330615f64666c7400733330615f7674626c0073324a *735f696e666f0073324a735f656e74727900733330385f696e666f00733330385f726574007332 *4a755f696e666f0073324a755f656e7472790073324a775f696e666f0073324a775f656e747279 *0073324c425f696e666f0073324c425f656e74727900733249765f696e666f00733249765f656e *74727900733249795f696e666f00733249795f72657400733249445f696e666f00733249445f65 *6e74727900733330665f315f616c74007332494f5f696e666f007332494f5f656e747279007332 *49485f696e666f00733249485f656e74727900733330665f325f616c7400733330665f7674626c *00733330655f345f616c7400733330655f64666c7400733330655f7674626c00733249525f696e *666f00733249525f656e74727900733330635f696e666f00733330635f72657400733249545f69 *6e666f00733249545f656e74727900733249565f696e666f00733249565f656e7472790073324c *445f696e666f0073324c445f656e74727900733249345f696e666f00733249345f656e74727900 *733249375f696e666f00733249375f72657400733249635f696e666f00733249635f656e747279 *007333306a5f315f616c74007333306a5f325f616c74007333306a5f7674626c00733330695f34 *5f616c7400733330695f64666c7400733330695f7674626c00733249685f696e666f0073324968 *5f656e74727900733330675f696e666f00733330675f726574007332496b5f696e666f00733249 *6b5f656e7472790073324c465f656e74727900723274625f696e666f00723274625f656e747279 *00723274655f73727400723274675f73727400723274695f73727400723274655f636c6f737572 *6500723274675f636c6f7375726500723274695f636c6f7375726500723274655f696e666f0072 *3274655f656e74727900723274675f696e666f00723274675f656e74727900723274695f696e66 *6f00723274695f656e7472790073324d725f7372740073324d725f636c6f737572650073324d72 *5f696e666f0073324c565f696e666f0073324c565f656e7472790073324c595f696e666f007332 *4c595f7265740073324d335f696e666f0073324d335f656e74727900733257335f315f616c7400 *73324d695f696e666f0073324d695f656e7472790073324d615f696e666f0073324d615f656e74 *72790073324d6c5f696e666f0073324d6c5f656e7472790073324d375f696e666f0073324d375f *656e74727900733257335f325f616c7400733257335f7674626c00733257325f345f616c740073 *3257325f64666c7400733257325f7674626c0073324d6e5f696e666f0073324d6e5f656e747279 *00733257305f696e666f00733257305f7265740073324d705f696e666f0073324d705f656e7472 *790073324d725f656e747279007232746b5f737274007232746b5f636c6f73757265007232746b *5f696e666f007232746b5f656e747279007232746e5f737274007232746e5f636c6f7375726500 *7232746e5f696e666f007232746e5f656e74727900723274705f73727400723274705f636c6f73 *75726500723274705f696e666f0073324e385f696e666f0073324e385f656e7472790073324e61 *5f696e666f0073324e615f656e74727900733256505f696e666f00733256505f7265740073324e *335f696e666f0073324e335f656e7472790073324e635f696e666f0073324e635f656e74727900 *73324d525f696e666f0073324d525f656e7472790073324d545f696e666f0073324d545f656e74 *72790073324e655f696e666f0073324e655f656e74727900733256535f696e666f00733256535f *7265740073324d505f696e666f0073324d505f656e747279007332564f5f696e666f007332564f *5f72657400723274705f656e7472790073324e685f636c6f737572650073324e6a5f7372740073 *324e6a5f636c6f737572650073324e6a5f696e666f0073324e6a5f656e74727900723274725f73 *727400723274725f636c6f7375726500723274725f696e666f00723274725f656e747279007232 *74755f73727400723274755f636c6f7375726500723274755f696e666f00723274755f656e7472 *7900723274785f737274007232747a5f73727400723274425f73727400723274785f636c6f7375 *7265007232747a5f636c6f7375726500723274425f636c6f7375726500723274785f696e666f00 *723274785f656e747279007232747a5f696e666f007232747a5f656e74727900723274425f696e *666f00723274425f656e74727900723274455f73727400723274455f636c6f7375726500723274 *455f696e666f00723274455f656e74727900723274485f737274007232744a5f73727400723274 *4c5f737274007232744e5f73727400723274505f73727400723274525f73727400723274485f63 *6c6f73757265007232744a5f636c6f73757265007232744c5f636c6f73757265007232744e5f63 *6c6f7375726500723274505f636c6f7375726500723274525f636c6f7375726500723274485f69 *6e666f00723274485f656e747279007232744a5f696e666f007232744a5f656e74727900723274 *4c5f696e666f007232744c5f656e747279007232744e5f696e666f007232744e5f656e74727900 *723274505f696e666f00723274505f656e74727900723274525f696e666f00723274525f656e74 *72790073325a785f315f616c740073325a785f325f616c740073325a795f696e666f0073325a79 *5f7265740073325a785f335f616c740073325a4b5f696e666f0073325a4b5f7265740073325a78 *5f345f616c740073324e555f696e666f0073324e555f656e7472790073324e525f696e666f0073 *324e525f656e7472790073325a785f355f616c740073324e4d5f696e666f0073324e4d5f656e74 *72790073324e4a5f696e666f0073324e4a5f656e7472790073325a785f365f616c740073325a78 *5f7674626c0073325a6f5f315f616c7400733251705f696e666f00733251705f656e7472790073 *325a6f5f325f616c7400733251685f696e666f00733251685f656e7472790073325a6f5f335f61 *6c7400733251625f696e666f00733251625f656e7472790073325a6f5f345f616c740073325039 *5f696e666f00733250395f656e74727900733250365f696e666f00733250365f656e7472790073 *3250625f696e666f00733250625f656e74727900733250345f696e666f00733250345f656e7472 *7900733250645f696e666f00733250645f7265740073325a725f315f616c7400733251335f696e *666f00733251335f656e7472790073325a725f325f616c740073325a725f7674626c0073325a71 *5f335f616c740073325a735f315f616c7400733250535f696e666f00733250535f656e74727900 *73325a735f325f616c740073325a735f7674626c0073325a715f345f616c740073325a715f6466 *6c740073325a715f7674626c0073325a705f325f616c740073325a755f315f616c740073325045 *5f696e666f00733250455f656e7472790073325a755f325f616c740073325a755f7674626c0073 *325a745f325f616c740073325a745f64666c740073325a745f7674626c0073325a705f335f616c *740073325a775f315f616c7400733250715f696e666f00733250715f656e7472790073325a775f *325f616c740073325a775f7674626c0073325a765f325f616c740073325a765f64666c74007332 *5a765f7674626c0073325a705f345f616c740073325a705f64666c740073325a705f7674626c00 *73325a6f5f355f616c740073324f575f696e666f0073324f575f656e7472790073324f545f696e *666f0073324f545f656e7472790073324f595f696e666f0073324f595f656e7472790073324f52 *5f696e666f0073324f525f656e7472790073325a6f5f365f616c740073325a6f5f7674626c0072 *3274545f73727400723274545f636c6f7375726500723274545f696e666f00733259705f315f61 *6c7400733259705f325f616c7400733259705f335f616c7400733259705f345f616c7400733259 *705f355f616c7400733259705f365f616c7400733259705f7674626c007332596f5f315f616c74 *00733259795f315f616c7400733259795f325f616c7400733259795f335f616c7400733259795f *345f616c7400733259795f355f616c7400733259795f365f616c7400733259795f7674626c0073 *32596f5f325f616c7400733259485f315f616c7400733259485f325f616c7400733259485f335f *616c7400733259485f345f616c7400733259485f355f616c7400733259485f365f616c74007332 *59485f7674626c007332596f5f335f616c7400733259515f315f616c7400733259515f325f616c *7400733259515f335f616c7400733259515f345f616c7400733259515f355f616c740073325951 *5f365f616c7400733259515f7674626c007332596f5f345f616c740073325a305f315f616c7400 *73325a305f325f616c740073325a305f335f616c740073325a305f345f616c740073325a305f35 *5f616c740073325a305f365f616c740073325a305f7674626c007332596f5f355f616c74007332 *5a615f315f616c740073325a615f325f616c740073325a615f335f616c740073325a615f345f61 *6c740073325a615f355f616c740073325a615f365f616c740073325a615f7674626c007332596f *5f365f616c74007332596f5f7674626c00733252745f696e666f00733252745f7265740073325a *695f315f616c740073325a6a5f325f616c740073325a6a5f64666c740073325a6a5f7674626c00 *73325a695f325f616c740073325a6b5f335f616c740073325a6b5f64666c740073325a6b5f7674 *626c0073325a695f335f616c740073325a6c5f345f616c740073325a6c5f64666c740073325a6c *5f7674626c0073325a695f345f616c7400733252555f696e666f00733252555f656e7472790072 *3274545f656e74727900733252515f696e666f00733252515f656e7472790073325a6d5f355f61 *6c740073325a6d5f64666c740073325a6d5f7674626c0073325a695f355f616c7400733252485f *696e666f00733252485f656e74727900733252445f696e666f00733252445f656e747279007332 *5a6e5f365f616c740073325a6e5f64666c740073325a6e5f7674626c0073325a695f365f616c74 *0073325a695f7674626c00723274565f73727400723274565f636c6f7375726500723274565f69 *6e666f00733253675f696e666f00733253675f656e74727900723274565f656e74727900723274 *595f73727400723274595f636c6f7375726500723274595f696e666f00733253455f696e666f00 *733253455f656e747279007332564d5f696e666f007332564d5f72657400733253415f696e666f *00733253415f656e747279007332564c5f696e666f007332564c5f726574007332564b5f696e66 *6f007332564b5f72657400723274595f656e74727900723275305f73727400723275305f636c6f *7375726500723275305f696e666f007332534c5f696e666f007332534c5f656e74727900723275 *305f656e74727900733256495f696e666f00733256495f72657400733256475f696e666f007332 *56475f72657400733256465f696e666f00733256465f72657400733256455f696e666f00733256 *455f72657400733256425f315f616c7400733256435f315f616c7400733256435f325f616c7400 *733256435f7674626c00733256425f325f616c7400733256425f7674626c00733256775f315f61 *6c7400733256785f315f616c7400733256415f696e666f00733256415f72657400733256795f31 *5f616c74007332567a5f696e666f007332567a5f72657400733256795f325f616c740073325679 *5f7674626c00733256785f325f616c7400733256785f7674626c00733256775f325f616c740073 *3256775f7674626c00733256765f315f616c7400733256765f325f616c7400733256765f335f61 *6c7400733256765f345f616c7400733256765f355f616c7400733256765f365f616c7400733256 *765f7674626c00733256755f696e666f00733256755f72657400733256745f696e666f00733256 *745f72657400724c775f73727400724c775f636c6f7375726500724c775f696e666f00734d385f *696e666f00734d385f656e747279007351385f315f616c7400734d365f696e666f00734d365f65 *6e747279007351385f325f616c7400734d345f696e666f00734d345f656e747279007351385f33 *5f616c7400734d325f696e666f00734d325f656e747279007351385f345f616c7400734d305f69 *6e666f00734d305f656e747279007351385f355f616c7400734c595f696e666f00734c595f656e *747279007351385f365f616c7400734c575f696e666f00734c575f656e747279007351385f375f *616c74007351385f7674626c00724c775f656e74727900734d625f636c6f7375726500734d645f *73727400734d645f636c6f7375726500734d645f696e666f00734d645f656e74727900724c795f *73727400724c795f636c6f7375726500724c795f696e666f00724c795f656e74727900734e515f *73727400734e515f636c6f7375726500734e515f696e666f007350465f696e666f007350465f72 *657400734e795f696e666f00734e795f656e74727900734e715f696e666f00734e715f656e7472 *790073504a5f696e666f0073504a5f72657400734e6d5f696e666f00734e6d5f656e7472790073 *4e655f696e666f00734e655f656e7472790073504e5f696e666f0073504e5f72657400734e615f *696e666f00734e615f656e74727900734e325f696e666f00734e325f656e747279007350525f69 *6e666f007350525f72657400734d595f696e666f00734d595f656e74727900734d515f696e666f *00734d515f656e747279007350565f696e666f007350565f72657400734d4d5f696e666f00734d *4d5f656e74727900734d455f696e666f00734d455f656e7472790073505a5f696e666f0073505a *5f72657400734d415f696e666f00734d415f656e74727900734d735f696e666f00734d735f656e *747279007351335f696e666f007351335f72657400734d6f5f696e666f00734d6f5f656e747279 *00734d675f696e666f00734d675f656e74727900734e515f656e74727900724c415f7372740072 *4c415f636c6f7375726500724c415f696e666f00724c415f656e74727900724c435f636c6f7375 *726500724c435f696e666f007350795f315f616c74007350795f64666c74007350795f7674626c *007350785f315f616c740073507a5f325f616c740073507a5f64666c740073507a5f7674626c00 *7350785f325f616c74007350415f335f616c74007350415f64666c74007350415f7674626c0073 *50785f335f616c74007350425f345f616c74007350425f64666c74007350425f7674626c007350 *785f345f616c74007350435f355f616c74007350435f64666c74007350435f7674626c00735078 *5f355f616c74007350445f365f616c74007350445f64666c74007350445f7674626c007350785f *365f616c74007350455f315f616c74007350455f325f616c74007350455f335f616c7400735045 *5f345f616c74007350455f355f616c74007350455f365f616c74007350455f375f616c74007350 *455f7674626c007350785f375f616c74007350785f7674626c00724c435f656e74727900724c45 *5f73727400724c455f636c6f7375726500724c455f696e666f00734f615f696e666f00734f615f *656e74727900724c455f656e74727900724c495f73727400724c4b5f73727400724c4d5f737274 *00724c495f636c6f7375726500724c4b5f636c6f7375726500724c4d5f636c6f7375726500724c *495f696e666f00724c495f656e74727900724c4b5f696e666f00724c4b5f656e74727900724c4d *5f696e666f00724c4d5f656e74727900724c505f73727400724c505f636c6f7375726500724c50 *5f696e666f00724c505f656e747279007350735f315f616c74007350745f315f616c7400735074 *5f325f616c74007350745f7674626c007350735f325f616c74007350735f7674626c0073506b5f *315f616c74007350705f315f616c74007350705f325f616c74007350705f7674626c0073506c5f *315f616c740073506d5f315f616c740073506d5f325f616c740073506d5f7674626c0073506c5f *325f616c740073506c5f7674626c0073506b5f325f616c740073506b5f7674626c0073506a5f31 *5f616c740073506a5f325f616c740073506a5f335f616c740073506a5f345f616c740073506a5f *355f616c740073506a5f365f616c740073506a5f375f616c740073506a5f7674626c0072356c35 *5f636c6f737572650072356c355f696e666f00733650535f315f616c7400733650545f315f616c *7400733671455f696e666f00733671455f656e7472790072356c355f656e74727900733650545f *325f616c7400733650545f7674626c00733650535f325f616c7400733650535f7674626c007236 *704c5f636c6f73757265007236704e5f636c6f7375726500723670505f73727400723670505f63 *6c6f7375726500723670505f696e666f00723670505f656e74727900723670525f737274007236 *70525f636c6f7375726500723670525f696e666f00723670525f656e74727900723670545f7372 *7400723670545f636c6f7375726500723670545f696e666f00723670545f656e74727900723670 *565f73727400723670565f636c6f7375726500723670565f696e666f00723670565f656e747279 *00723670585f73727400723670585f636c6f7375726500723670585f696e666f00723670585f65 *6e747279007236705a5f737274007236705a5f636c6f73757265007236705a5f696e666f007236 *705a5f656e74727900723671315f73727400723671315f636c6f7375726500723671315f696e66 *6f00723671315f656e74727900723671335f73727400723671335f636c6f737572650072367133 *5f696e666f007336504f5f696e666f007336504f5f72657400723671335f656e74727900733672 *695f696e666f00733672695f656e74727900733672615f696e666f00733672615f656e74727900 *733672635f696e666f00733672635f656e747279007336726c5f696e666f007336726c5f656e74 *727900733672335f696e666f00733672335f656e74727900733650435f696e666f00733650435f *72657400723671355f73727400723671355f636c6f7375726500723671355f696e666f00723671 *355f656e74727900723671375f73727400723671375f636c6f7375726500723671375f696e666f *00723671375f656e74727900723671395f73727400723671395f636c6f7375726500723671395f *696e666f00723671395f656e74727900723671625f73727400723671625f636c6f737572650072 *3671625f696e666f00723671625f656e74727900723671645f73727400723671645f636c6f7375 *726500723671645f696e666f00723671645f656e74727900733673685f696e666f00733673685f *656e747279007336736a5f696e666f007336736a5f656e74727900733650745f315f616c740073 *3673655f696e666f00733673655f656e74727900733673335f696e666f00733673335f656e7472 *7900733673365f696e666f00733673365f656e74727900733673385f696e666f00733673385f65 *6e74727900733673615f696e666f00733673615f656e74727900733650755f696e666f00733650 *755f72657400733672545f696e666f00733672545f656e74727900733672565f696e666f007336 *72565f656e74727900733673635f696e666f00733673635f656e74727900733650745f325f616c *7400733650745f7674626c007336736c5f696e666f007336736c5f656e74727900733672435f69 *6e666f00733672435f656e74727900733650715f696e666f00733650715f72657400723671665f *73727400723671665f636c6f7375726500723671665f696e666f00733673455f696e666f007336 *73455f656e74727900733673785f696e666f00733673785f656e74727900733673475f696e666f *00733673475f656e74727900733673495f696e666f00733673495f656e74727900733673765f69 *6e666f00733673765f656e747279007336506d5f696e666f007336506d5f72657400723671665f *656e74727900733674715f696e666f00733674715f656e74727900733674665f696e666f007336 *74665f656e74727900733674695f696e666f00733674695f656e747279007336746b5f696e666f *007336746b5f656e747279007336746d5f696e666f007336746d5f656e74727900733650655f69 *6e666f00733650655f72657400733674355f696e666f00733674355f656e74727900733674375f *696e666f00733674375f656e747279007336746f5f696e666f007336746f5f656e747279007336 *50615f696e666f00733650615f72657400733650395f315f616c7400733650395f325f616c7400 *733650395f7674626c00733650375f696e666f00733650375f726574007336744a5f696e666f00 *7336744a5f656e74727900733650345f696e666f00733650345f72657400733675725f696e666f *00733675725f656e74727900733675745f696e666f00733675745f656e74727900733675675f69 *6e666f00733675675f656e747279007336756a5f696e666f007336756a5f656e74727900733675 *6c5f696e666f007336756c5f656e747279007336756e5f696e666f007336756e5f656e74727900 *73364f575f696e666f0073364f575f72657400733675365f696e666f00733675365f656e747279 *00733675385f696e666f00733675385f656e74727900733675705f696e666f00733675705f656e *7472790073364f535f696e666f0073364f535f72657400733675445f696e666f00733675445f65 *6e747279007336754e5f737274007336754e5f636c6f73757265007336754e5f696e666f007336 *754c5f696e666f007336754c5f726574007336754e5f656e7472790073364f4e5f315f616c7400 *73364f505f315f616c7400733676555f656e7472790073364f505f325f616c740073364f505f76 *74626c0073364f4f5f696e666f0073364f4f5f7265740073364f4e5f325f616c740073364f4e5f *7674626c00733676555f696e666f00733677305f696e666f00733677305f656e74727900733677 *325f696e666f00733677325f656e74727900733676675f696e666f00733676675f656e74727900 *733676695f696e666f00733676695f656e7472790073364f515f315f616c7400733676735f696e *666f00733676735f656e7472790073364f515f325f616c740073364f515f7674626c0073367675 *5f696e666f00733676755f656e747279007336767a5f696e666f007336767a5f656e7472790073 *3676435f696e666f00733676435f656e74727900733676375f696e666f00733676375f656e7472 *7900733676305f696e666f00733676305f656e74727900733676615f696e666f00733676615f65 *6e74727900733676455f696e666f00733676455f656e7472790073364f4b5f696e666f0073364f *4b5f72657400733677495f696e666f00733677495f656e74727900733677765f696e666f007336 *77765f656e74727900733677795f696e666f00733677795f656e74727900733677415f696e666f *00733677415f656e74727900733677735f696e666f00733677735f656e74727900733677435f69 *6e666f00733677435f656e74727900733677455f696e666f00733677455f656e7472790073364f *435f696e666f0073364f435f726574007336776f5f696e666f007336776f5f656e747279007336 *77715f696e666f00733677715f656e74727900733677475f696e666f00733677475f656e747279 *0073364f795f696e666f0073364f795f7265740073364f645f737274640073367a745f73727464 *0073367a725f7372746400733678545f696e666f00733678545f656e74727900733679375f696e *666f00733679375f656e7472790073364f675f696e666f0073364f675f72657400733679615f69 *6e666f00733679615f656e74727900733679635f696e666f00733679635f656e7472790073364f *665f315f616c740073364f665f325f616c740073364f665f7674626c00733679655f696e666f00 *733679655f656e7472790073367a705f737274640073367a6e5f696e666f0073367a6e5f656e74 *72790073367a6c5f737274640073364f705f315f616c740073367a395f696e666f0073367a395f *656e7472790073367a625f696e666f0073367a625f656e7472790073364f715f696e666f007336 *4f715f7265740073364f705f325f616c740073364f705f7674626c0073367a645f696e666f0073 *367a645f656e7472790073367a685f696e666f0073367a685f656e7472790073367a6a5f696e66 *6f0073367a6a5f656e7472790073367a6c5f696e666f0073367a6c5f656e7472790073367a705f *696e666f0073367a705f656e74727900733679545f7372746400733679525f7372746400733679 *505f73727464007336794c5f737274640073364f725f737274640073364f725f315f616c740073 *3679765f696e666f00733679765f656e74727900733679785f696e666f00733679785f656e7472 *790073364f755f315f616c74007336794c5f656e74727900733679465f696e666f00733679465f *656e74727900733679485f696e666f00733679485f656e747279007336794a5f696e666f007336 *794a5f656e7472790073364f755f325f616c740073364f755f7674626c0073364f735f696e666f *0073364f735f7265740073364f725f325f616c740073364f725f7674626c007336794c5f696e66 *6f00733679505f696e666f00733679505f656e74727900733679525f696e666f00733679525f65 *6e74727900733679675f696e666f00733679675f656e74727900733679695f696e666f00733679 *695f656e74727900733679545f696e666f00733679545f656e7472790073367a725f696e666f00 *73367a725f656e747279007336784f5f73727464007336784c5f7372746400733678495f737274 *6400733678445f7372746400733678425f7372746400733678795f696e666f00733678795f656e *74727900733678735f7372746400733678715f73727464007336786f5f73727464007336786d5f *737274640073364f765f696e666f0073364f765f726574007336786b5f696e666f007336786b5f *656e74727900733678645f696e666f00733678645f656e747279007336786d5f696e666f007336 *786d5f656e747279007336786f5f696e666f007336786f5f656e74727900733678625f696e666f *00733678625f656e74727900733678715f696e666f00733678715f656e74727900733678735f69 *6e666f00733678735f656e74727900733678425f696e666f00733678425f656e74727900733678 *395f696e666f00733678395f656e74727900733678445f696e666f00733678445f656e74727900 *733678495f696e666f00733678495f656e74727900733678355f696e666f00733678355f656e74 *7279007336784c5f696e666f007336784c5f656e747279007336784f5f696e666f007336784f5f *656e7472790073367a745f696e666f0073367a745f656e74727900733677585f696e666f007336 *77585f656e7472790073364f645f696e666f0073364f645f72657400723671685f636c6f737572 *650073367a455f696e666f0073367a455f656e7472790073367a475f696e666f0073367a475f65 *6e7472790073367a425f696e666f0073367a425f656e7472790073367a495f696e666f0073367a *495f656e747279007236716a5f737274007236716a5f636c6f73757265007236716a5f696e666f *0073367a515f696e666f0073367a515f656e747279007336504b5f696e666f007336504b5f7265 *74007236716a5f656e7472790073364e415f696e666f0073364e415f72657400733641625f696e *666f00733641625f656e7472790073364e535f696e666f0073364e535f7265740073364e4a5f69 *6e666f0073364e4a5f72657400733641435f696e666f00733641435f656e747279007336416a5f *696e666f007336416a5f656e74727900733641455f696e666f00733641455f656e747279007336 *41485f696e666f00733641485f656e747279007336414a5f696e666f007336414a5f656e747279 *00733642635f696e666f00733642635f656e74727900733642655f696e666f00733642655f656e *7472790073364e5a5f315f616c740073364f305f696e666f0073364f305f72657400733642365f *696e666f00733642365f656e7472790073364e5a5f325f616c7400733642375f656e7472790073 *364e5a5f7674626c00733642675f696e666f00733642675f656e74727900733641515f696e666f *00733641515f656e7472790073364e565f696e666f0073364e565f72657400733642375f696e66 *6f00733642725f696e666f00733642725f656e7472790073364f395f696e666f0073364f395f72 *65740073364e745f315f616c7400733642515f696e666f00733642515f656e747279007336424c *5f656e74727900733642595f315f616c740073364e785f315f616c7400733643705f696e666f00 *733643705f656e747279007336436e5f656e7472790073364e795f696e666f0073364e795f7265 *740073364e785f325f616c740073364e785f7674626c0073364e765f696e666f0073364e765f72 *657400733642595f325f616c7400733642595f7674626c007336424a5f696e666f007336424a5f *7265740073364e745f325f616c740073364e745f7674626c007336424c5f696e666f0073364d47 *5f315f616c7400733643545f315f616c740073364d4c5f696e666f0073364d4c5f726574007336 *44365f696e666f00733644365f656e7472790073364d4a5f696e666f0073364d4a5f7265740073 *3643545f325f616c7400733643545f7674626c0073364d485f696e666f0073364d485f72657400 *73364d475f325f616c740073364d475f7674626c00733644395f696e666f00733644395f726574 *0073364d575f315f616c74007336446d5f696e666f007336446d5f656e7472790073364d575f32 *5f616c740073364d575f7674626c0073364d555f696e666f0073364d555f726574007336446f5f *696e666f007336446f5f7265740073364d585f315f616c740073364e305f315f616c740073364e *335f696e666f0073364e335f72657400733644535f696e666f00733644535f656e747279007336 *4e315f696e666f0073364e315f7265740073364e305f325f616c740073364e305f7674626c0073 *364d595f696e666f0073364d595f7265740073364d585f325f616c740073364d585f7674626c00 *733644565f696e666f00733644565f7265740073364e655f315f616c740073364e6f5f315f616c *740073364e725f696e666f0073364e725f72657400733645745f696e666f00733645745f656e74 *727900733645775f696e666f00733645775f656e7472790073364e705f696e666f0073364e705f *7265740073364e6f5f325f616c740073364e6f5f7674626c0073364e685f315f616c740073364e *6b5f315f616c740073364e6e5f315f616c740073364e6e5f325f616c740073364e6e5f7674626c *0073364e6c5f696e666f0073364e6c5f7265740073364e6b5f325f616c740073364e6b5f767462 *6c0073364e695f696e666f0073364e695f7265740073364e685f325f616c740073364e685f7674 *626c0073364e665f696e666f0073364e665f7265740073364e655f325f616c740073364e655f76 *74626c0073364e635f696e666f0073364e635f726574007336436e5f696e666f00733646775f69 *6e666f00733646775f656e74727900733646735f696e666f00733646735f656e74727900733646 *6f5f696e666f007336466f5f656e7472790073364d365f696e666f0073364d365f726574007336 *4d355f696e666f0073364d355f72657400733646795f696e666f00733646795f656e7472790073 *36474f5f737274640073364d375f737274640073364d375f315f616c7400733646475f696e666f *00733646475f656e7472790073364d385f7372746400733646505f696e666f00733646505f656e *7472790073364d395f7372746400733646575f696e666f00733646575f656e7472790073364d61 *5f7372746400733647335f696e666f00733647335f656e7472790073364d625f73727464007336 *47615f696e666f00733647615f656e7472790073364d635f73727464007336474c5f696e666f00 *7336474c5f656e7472790073364d645f315f616c740073364d645f325f616c740073364d645f76 *74626c0073364d635f315f616c740073364d655f315f616c740073364d685f315f616c74007336 *4d685f325f616c740073364d685f7674626c0073364d675f315f616c740073364d6e5f315f616c *740073364d6e5f325f616c740073364d6e5f7674626c0073364d6d5f315f616c740073364d6d5f *325f616c740073364d6d5f7674626c0073364d6b5f696e666f0073364d6b5f7265740073364d67 *5f325f616c740073364d675f7674626c0073364d665f696e666f0073364d665f7265740073364d *655f325f616c740073364d655f7674626c00733647485f696e666f00733647485f656e74727900 *7336474a5f696e666f007336474a5f656e7472790073364d635f325f616c740073364d635f7674 *626c0073364d625f315f616c740073364d625f325f616c740073364d625f7674626c0073364d61 *5f315f616c740073364d615f325f616c740073364d615f7674626c0073364d395f315f616c7400 *73364d395f325f616c740073364d395f7674626c0073364d385f315f616c740073364d385f325f *616c740073364d385f7674626c0073364d375f325f616c740073364d375f7674626c007336474f *5f696e666f007336474f5f656e74727900733648635f737274640073364d735f73727464007336 *4d735f315f616c7400733647575f696e666f00733647575f656e7472790073364d745f73727464 *0073364d745f315f616c7400733648365f696e666f00733648365f656e74727900733648345f69 *6e666f00733648345f656e7472790073364d775f315f616c7400733648615f696e666f00733648 *615f656e7472790073364d775f325f616c740073364d775f7674626c0073364d755f696e666f00 *73364d755f7265740073364d745f325f616c740073364d745f7674626c0073364d735f325f616c *740073364d735f7674626c00733648635f696e666f00733648635f656e7472790073364d785f31 *5f616c740073364d7a5f696e666f0073364d7a5f7265740073364d785f325f616c740073364d78 *5f7674626c00733648705f696e666f00733648705f656e7472790073364d425f73727464007336 *49635f7372746400733649615f7372746400733649385f7372746400733649365f737274640073 *3649345f7372746400733649325f7372746400733649305f7372746400733648595f7372746400 *733648575f7372746400733648555f7372746400733648515f696e666f00733648515f656e7472 *790073364d465f315f616c740073364d465f325f616c740073364d465f7674626c00733648555f *696e666f00733648555f656e747279007336484f5f696e666f007336484f5f656e747279007336 *48575f696e666f00733648575f656e74727900733648595f696e666f00733648595f656e747279 *007336484b5f696e666f007336484b5f656e747279007336484d5f696e666f007336484d5f656e *74727900733649305f696e666f00733649305f656e74727900733648495f696e666f0073364849 *5f656e74727900733649325f696e666f00733649325f656e74727900733648475f696e666f0073 *3648475f656e74727900733649345f696e666f00733649345f656e74727900733649365f696e66 *6f00733649365f656e74727900733648455f696e666f00733648455f656e74727900733649385f *696e666f00733649385f656e74727900733648435f696e666f00733648435f656e747279007336 *49615f696e666f00733649615f656e74727900733649635f696e666f00733649635f656e747279 *00733648785f696e666f00733648785f656e7472790073364d425f696e666f0073364d425f7265 *74007236716c5f737274007236716c5f636c6f73757265007236716c5f696e666f007236716c5f *656e7472790072356c695f7372740072356c695f636c6f737572650072356c695f696e666f0073 *364d335f696e666f0073364d335f72657400733649755f696e666f00733649755f656e74727900 *733649785f696e666f00733649785f656e7472790073364d305f696e666f0073364d305f726574 *00733649415f696e666f00733649415f656e74727900733649695f696e666f00733649695f656e *74727900733649435f696e666f00733649435f656e7472790072356c695f656e74727900723671 *6e5f737274007236716e5f636c6f73757265007236716e5f696e666f007236716e5f656e747279 *00723671705f73727400723671705f636c6f7375726500723671705f696e666f0073364c575f69 *6e666f0073364c575f72657400733649575f696e666f00733649575f656e747279007336494c5f *696e666f007336494c5f656e747279007336494e5f696e666f007336494e5f656e747279007336 *4c595f696e666f0073364c595f72657400733649515f696e666f00733649515f656e7472790072 *3671705f656e7472790072356c675f7372740072356c675f636c6f737572650072356c675f696e *666f007336495a5f696e666f007336495a5f656e7472790073364a315f696e666f0073364a315f *656e7472790072356c675f656e7472790073364a705f315f616c740073364c4f5f315f616c7400 *73364c4f5f325f616c740073364c4f5f7674626c0073364c4e5f315f616c740073364b635f696e *666f0073364b635f656e7472790073364b655f696e666f0073364b655f656e7472790073364b67 *5f696e666f0073364b675f656e7472790073364c4e5f325f616c740073364c4e5f7674626c0073 *364c4c5f696e666f0073364c4c5f7265740073364c4b5f315f616c740073364c545f315f616c74 *0073364a565f696e666f0073364a565f656e7472790073364a505f696e666f0073364a505f656e *7472790073364a585f696e666f0073364a585f656e7472790073364a5a5f696e666f0073364a5a *5f656e7472790073364c545f325f616c740073364c545f7674626c0073364c535f315f616c7400 *73364a455f696e666f0073364a455f656e7472790073364a785f696e666f0073364a785f656e74 *72790073364a475f696e666f0073364a475f656e7472790073364a495f696e666f0073364a495f *656e7472790073364c535f325f616c740073364c535f7674626c0073364c515f696e666f007336 *4c515f7265740073364c505f315f616c740073364c505f325f616c740073364c505f7674626c00 *73364c4b5f325f616c740073364c4b5f7674626c0073364a705f325f616c740073364a705f7674 *626c0073364b6c5f696e666f0073364b6c5f656e7472790073364a625f696e666f0073364a625f *656e7472790073364c495f696e666f0073364c495f72657400733650475f696e666f0073365047 *5f72657400723671725f73727400723671725f636c6f7375726500723671725f696e666f007236 *71725f656e7472790073364c415f315f616c740073364b535f696e666f0073364b535f656e7472 *790073364b555f696e666f0073364b555f656e7472790073364c445f315f616c740073364c305f *656e7472790073364b595f696e666f0073364b595f656e7472790073364c445f325f616c740073 *364c445f7674626c0073364c425f696e666f0073364c425f7265740073364c415f325f616c7400 *73364c415f7674626c0073364c305f696e666f0073364c455f315f616c740073364c465f315f61 *6c740073364c635f696e666f0073364c635f656e7472790073364c655f696e666f0073364c655f *656e7472790073364c465f325f616c740073364c465f7674626c0073364c455f325f616c740073 *364c455f7674626c0073364c6b5f696e666f0073364c6b5f656e7472790073364b455f696e666f *0073364b455f656e7472790073364c785f696e666f0073364c785f7265740073364c745f696e66 *6f0073364c745f72657400723270435f73727400723270435f636c6f7375726500723270435f69 *6e666f007336684a5f315f616c74007336684b5f696e666f007336684b5f72657400733459765f *656e747279007336684a5f325f616c74007336684a5f7674626c00733459765f696e666f007334 *59415f696e666f00733459415f656e747279007334596b5f696e666f007334596b5f656e747279 *00723270435f656e74727900723270715f636c6f7375726500723270715f696e666f0073366848 *5f315f616c7400733668495f696e666f00733668495f726574007334594e5f656e747279007336 *68485f325f616c7400733668485f7674626c007334594e5f696e666f00723270715f656e747279 *007232706f5f737274007232706f5f636c6f73757265007232706f5f696e666f00733668455f31 *5f616c7400733668475f315f616c740073345a6b5f696e666f0073345a6b5f656e747279007336 *68475f325f616c740073345a715f696e666f0073345a715f656e74727900733668475f335f616c *7400733668475f7674626c0073345a745f696e666f0073345a745f656e74727900733668465f69 *6e666f00733668465f72657400733668455f325f616c7400733668455f7674626c0073345a795f *696e666f0073345a795f656e747279007232706f5f656e74727900723270695f73727400723270 *695f636c6f7375726500723270695f696e666f0073345a4d5f696e666f0073345a4d5f656e7472 *790073345a475f696e666f0073345a475f656e7472790073345a455f696e666f0073345a455f65 *6e74727900723270695f656e74727900723270525f73727400723270525f636c6f737572650072 *3270525f696e666f0073345a545f696e666f0073345a545f656e7472790073345a525f696e666f *0073345a525f656e7472790073345a505f696e666f0073345a505f656e74727900723270525f65 *6e747279007234576f5f636c6f7375726500723457715f73727400723457715f636c6f73757265 *00723457715f696e666f00723457715f656e747279007232706b5f737274007232706b5f636c6f *73757265007232706b5f696e666f00733530335f696e666f00733530335f656e74727900733530 *355f696e666f00733530355f656e747279007335306c5f696e666f007335306c5f656e74727900 *733530625f696e666f00733530625f656e747279007232706b5f656e747279007232706d5f7372 *74007232706d5f636c6f73757265007232706d5f696e666f007232706d5f656e74727900723270 *495f73727400723270495f636c6f7375726500723270495f696e666f00733530765f696e666f00 *733530765f656e74727900733530745f696e666f00733530745f656e74727900733530725f696e *666f00733530725f656e74727900723270495f656e747279007232704c5f737274007232704c5f *636c6f73757265007232704c5f696e666f00733530475f696e666f00733530475f656e74727900 *733530455f696e666f00733530455f656e74727900733530435f696e666f00733530435f656e74 *7279007232704c5f656e747279007232704e5f737274007232704e5f636c6f7375726500723270 *4e5f696e666f00733530505f696e666f00733530505f656e747279007335304e5f696e666f0073 *35304e5f656e747279007232704e5f656e74727900723270555f73727400723270555f636c6f73 *75726500723270555f696e666f00733531755f696e666f00733531755f656e747279007335316f *5f696e666f007335316f5f656e747279007335316b5f696e666f007335316b5f656e7472790073 *3531655f696e666f00733531655f656e74727900733531615f696e666f00733531615f656e7472 *7900733531365f696e666f00733531365f656e74727900733531325f696e666f00733531325f65 *6e74727900733531305f696e666f00733531305f656e74727900733530595f696e666f00733530 *595f656e74727900733530575f696e666f00733530575f656e74727900723270555f656e747279 *00723270575f73727400723270575f636c6f7375726500723270575f696e666f007335315a5f69 *6e666f007335315a5f656e74727900733531565f696e666f00733531565f656e74727900733531 *525f696e666f00733531525f656e74727900733531505f696e666f00733531505f656e74727900 *7335314e5f696e666f007335314e5f656e747279007335314c5f696e666f007335314c5f656e74 *727900723270575f656e74727900723271305f73727400723271305f636c6f7375726500723271 *305f696e666f00733532675f696e666f00733532675f656e74727900733532655f696e666f0073 *3532655f656e74727900733532635f696e666f00733532635f656e74727900723271305f656e74 *727900723271335f73727400723271335f636c6f7375726500723271335f696e666f007335324a *5f696e666f007335324a5f656e74727900733532445f696e666f00733532445f656e7472790073 *35327a5f696e666f007335327a5f656e74727900733532745f696e666f00733532745f656e7472 *7900733532725f696e666f00733532725f656e74727900733532705f696e666f00733532705f65 *6e747279007335326e5f696e666f007335326e5f656e74727900723271335f656e747279007232 *71365f73727400723271365f636c6f7375726500723271365f696e666f00733533325f696e666f *00733533325f656e74727900733533305f696e666f00733533305f656e74727900733532595f69 *6e666f00733532595f656e74727900723271365f656e74727900723270795f7372740072327079 *5f636c6f7375726500723270795f696e666f007335346f5f696e666f007335346f5f656e747279 *00733534375f696e666f00733534375f656e74727900733534395f696e666f00733534395f656e *747279007335334c5f696e666f007335334c5f656e74727900733533775f696e666f0073353377 *5f656e747279007335334e5f696e666f007335334e5f656e74727900733533505f696e666f0073 *3533505f656e747279007335336b5f696e666f007335336b5f656e74727900733533525f696e66 *6f00733533525f656e74727900733533545f696e666f00733533545f656e74727900733533685f *696e666f00733533685f656e74727900733533565f696e666f00733533565f656e747279007335 *34625f696e666f00733534625f656e74727900733534645f696e666f00733534645f656e747279 *00733534725f696e666f00733534725f656e74727900733668685f696e666f00733668685f7265 *7400723270795f656e74727900723457735f73727400723457735f636c6f737572650072345773 *5f696e666f00723457735f656e74727900723457755f73727400723457755f636c6f7375726500 *723457755f696e666f00723457755f656e74727900723457775f73727400723457775f636c6f73 *75726500723457775f696e666f00723457775f656e74727900723271395f73727400723271395f *636c6f7375726500723271395f696e666f007335344e5f696e666f007335344e5f656e74727900 *733534505f696e666f00733534505f656e74727900733534535f696e666f00733534535f656e74 *727900733536635f696e666f00733536635f656e74727900733668355f315f616c740073353631 *5f696e666f00733536315f656e74727900733668365f696e666f00733668365f72657400733536 *355f696e666f00733536355f656e74727900733668355f325f616c7400733668355f7674626c00 *733535565f696e666f00733535565f656e74727900733536615f696e666f00733536615f656e74 *727900733668315f696e666f00733668315f72657400733668305f315f616c7400733535465f69 *6e666f00733535465f656e74727900733535445f696e666f00733535445f656e74727900733668 *375f696e666f00733668375f72657400733668305f325f616c7400733668305f7674626c007335 *356b5f315f616c7400733535735f696e666f00733535735f656e747279007335356d5f696e666f *007335356d5f656e74727900733535765f696e666f00733535765f656e74727900733535685f69 *6e666f00733535685f656e747279007335356a5f696e666f007335356a5f656e74727900733668 *645f696e666f00733668645f726574007335356b5f325f616c74007335356b5f7674626c007336 *67585f696e666f00733667585f72657400723271395f656e74727900733667685f315f616c7400 *7335376b5f696e666f007335376b5f656e74727900733537735f64666c7400733537735f767462 *6c007336676a5f696e666f007336676a5f72657400733537755f696e666f00733537755f656e74 *727900733667695f696e666f00733667695f72657400733667685f325f616c7400733667685f76 *74626c00733537655f696e666f00733537655f656e74727900733537485f696e666f0073353748 *5f656e747279007336676d5f696e666f007336676d5f72657400733537455f696e666f00733537 *455f656e747279007335374a5f696e666f007335374a5f656e747279007335374d5f696e666f00 *7335374d5f656e74727900733538595f696e666f00733538595f656e74727900733539345f696e *666f00733539345f656e74727900733538505f64666c7400733538505f7674626c00733538525f *696e666f00733538525f656e74727900733667435f696e666f00733667435f726574007335384c *5f696e666f007335384c5f656e747279007335384e5f696e666f007335384e5f656e7472790073 *3538545f696e666f00733538545f656e747279007336677a5f696e666f007336677a5f72657400 *733667795f315f616c74007335387a5f696e666f007335387a5f656e74727900733538785f696e *666f00733538785f656e74727900733667455f696e666f00733667455f72657400733667795f32 *5f616c7400733667795f7674626c00733538655f315f616c74007335386d5f696e666f00733538 *6d5f656e74727900733538675f696e666f00733538675f656e74727900733538705f696e666f00 *733538705f656e74727900733538625f696e666f00733538625f656e74727900733538645f696e *666f00733538645f656e747279007336674b5f696e666f007336674b5f72657400733538655f32 *5f616c7400733538655f7674626c00733667765f696e666f00733667765f726574007335396d5f *696e666f007335396d5f656e747279007336664d5f696e666f007336664d5f726574007335396a *5f696e666f007335396a5f656e747279007335396f5f696e666f007335396f5f656e7472790073 *3539725f696e666f00733539725f656e74727900733561555f696e666f00733561555f656e7472 *7900733667335f315f616c7400733561455f696e666f00733561455f656e74727900733667355f *696e666f00733667355f72657400733561505f696e666f00733561505f656e7472790073366734 *5f696e666f00733667345f72657400733667335f325f616c7400733667335f7674626c00733561 *795f696e666f00733561795f656e74727900733561535f696e666f00733561535f656e74727900 *7336665a5f696e666f007336665a5f72657400733666595f315f616c7400733561655f696e666f *00733561655f656e74727900733561635f696e666f00733561635f656e74727900733667375f69 *6e666f00733667375f72657400733666595f325f616c7400733666595f7674626c00733539545f *315f616c7400733561315f696e666f00733561315f656e74727900733539565f696e666f007335 *39565f656e74727900733561345f696e666f00733561345f656e74727900733539515f696e666f *00733539515f656e74727900733539535f696e666f00733539535f656e74727900733667645f69 *6e666f00733667645f72657400733539545f325f616c7400733539545f7674626c00733666565f *696e666f00733666565f72657400733562665f696e666f00733562665f656e7472790073366668 *5f696e666f00733666685f72657400733562635f696e666f00733562635f656e74727900733562 *685f696e666f00733562685f656e747279007335626b5f696e666f007335626b5f656e74727900 *7335634a5f696e666f007335634a5f656e74727900733666795f315f616c7400733563785f696e *666f00733563785f656e74727900733666415f696e666f00733666415f72657400733563455f69 *6e666f00733563455f656e747279007336667a5f696e666f007336667a5f72657400733666795f *325f616c7400733666795f7674626c00733563725f696e666f00733563725f656e747279007335 *63485f696e666f00733563485f656e74727900733666755f696e666f00733666755f7265740073 *3666745f315f616c7400733563375f696e666f00733563375f656e74727900733563355f696e66 *6f00733563355f656e74727900733666435f696e666f00733666435f72657400733666745f325f *616c7400733666745f7674626c007335624d5f315f616c7400733562555f696e666f0073356255 *5f656e747279007335624f5f696e666f007335624f5f656e74727900733562585f696e666f0073 *3562585f656e747279007335624a5f696e666f007335624a5f656e747279007335624c5f696e66 *6f007335624c5f656e74727900733666495f696e666f00733666495f726574007335624d5f325f *616c74007335624d5f7674626c00733666715f696e666f00733666715f72657400723457795f73 *727400723457795f636c6f7375726500723457795f696e666f007336694e5f696e666f00733669 *4e5f72657400723457795f656e74727900723457415f73727400723457415f636c6f7375726500 *723457415f696e666f007336694b5f696e666f007336694b5f72657400723457415f656e747279 *00723457435f73727400723457435f636c6f7375726500723457435f696e666f00733669425f69 *6e666f00733669425f72657400723457435f656e74727900723457455f73727400723457455f63 *6c6f7375726500723457455f696e666f007336697a5f696e666f007336697a5f72657400723457 *455f656e74727900723457475f73727400723457475f636c6f7375726500723457475f696e666f *00733669765f696e666f00733669765f72657400723457475f656e74727900723457495f737274 *00723457495f636c6f7375726500723457495f696e666f00723457495f656e747279007234574b *5f737274007234574b5f636c6f73757265007234574b5f696e666f007234574b5f656e74727900 *7234574d5f737274007234574d5f636c6f73757265007234574d5f696e666f00733669735f696e *666f00733669735f726574007234574d5f656e747279007234574f5f737274007234574f5f636c *6f73757265007234574f5f696e666f007234574f5f656e74727900723457515f73727400723457 *515f636c6f7375726500723457515f696e666f007336696b5f696e666f007336696b5f72657400 *723457515f656e74727900723457535f73727400723457535f636c6f7375726500723457535f69 *6e666f00723457535f656e74727900723457555f73727400723457555f636c6f73757265007234 *57555f696e666f00733669675f696e666f00733669675f72657400723457555f656e7472790072 *3457575f73727400723457575f636c6f7375726500723457575f696e666f00723457575f656e74 *727900723457595f73727400723457595f636c6f7375726500723457595f696e666f0072345759 *5f656e74727900723458305f73727400723458305f636c6f7375726500723458305f696e666f00 *733669655f696e666f00733669655f72657400723458305f656e74727900733566515f73727400 *733566515f636c6f7375726500733566515f696e666f007335666f5f696e666f007335666f5f65 *6e74727900733566725f696e666f00733566725f72657400733566775f696e666f00733566775f *656e74727900733665575f315f616c7400733566485f696e666f00733566485f656e7472790073 *3566415f696e666f00733566415f656e74727900733665575f325f616c7400733665575f767462 *6c00733665565f345f616c7400733665565f64666c7400733665565f7674626c007335664b5f69 *6e666f007335664b5f656e74727900733665545f696e666f00733665545f726574007335664d5f *696e666f007335664d5f656e747279007335664f5f696e666f007335664f5f656e747279007336 *65585f696e666f00733665585f726574007335655a5f696e666f007335655a5f656e7472790073 *3565525f696e666f00733565525f656e74727900733666315f696e666f00733666315f72657400 *7335654e5f696e666f007335654e5f656e74727900733565465f696e666f00733565465f656e74 *727900733666355f696e666f00733666355f72657400733565425f696e666f00733565425f656e *74727900733565745f696e666f00733565745f656e74727900733666395f696e666f0073366639 *5f72657400733565705f696e666f00733565705f656e74727900733565685f696e666f00733565 *685f656e74727900733666645f696e666f00733666645f72657400733565645f696e666f007335 *65645f656e74727900733565355f696e666f00733565355f656e74727900733566645f696e666f *00733566645f656e74727900733566515f656e74727900723458325f73727400723458325f636c *6f7375726500723458325f696e666f00723458325f656e74727900723458345f73727400723458 *345f636c6f7375726500723458345f696e666f00733567425f696e666f00733567425f656e7472 *7900733665485f315f616c74007335677a5f696e666f007335677a5f656e74727900733665485f *325f616c7400733567785f696e666f00733567785f656e74727900733665485f335f616c740073 *3567765f696e666f00733567765f656e74727900733665485f345f616c7400733567745f696e66 *6f00733567745f656e74727900733665485f355f616c7400733665495f696e666f00733665495f *72657400733567705f696e666f00733567705f656e74727900733567645f696e666f0073356764 *5f656e74727900733567665f696e666f00733567665f656e74727900733567725f696e666f0073 *3567725f656e747279007336654c5f696e666f007336654c5f72657400733567625f696e666f00 *733567625f656e74727900733665485f365f616c7400733665485f7674626c00723458345f656e *74727900733567455f636c6f7375726500733567475f73727400733567475f636c6f7375726500 *733567475f696e666f00733567475f656e74727900723458365f73727400723458365f636c6f73 *75726500723458365f696e666f00723458365f656e74727900723458385f636c6f737572650072 *3270465f73727400723270465f636c6f7375726500723270465f696e666f0073356a305f696e66 *6f0073356a305f656e74727900733569575f696e666f00733569575f656e74727900733569535f *696e666f00733569535f656e747279007335694f5f696e666f007335694f5f656e747279007335 *694b5f696e666f007335694b5f656e74727900733569475f696e666f00733569475f656e747279 *00733569435f696e666f00733569435f656e74727900733569795f696e666f00733569795f656e *74727900733569755f696e666f00733569755f656e74727900733569715f696e666f0073356971 *5f656e747279007335696d5f696e666f007335696d5f656e74727900733569695f696e666f0073 *3569695f656e74727900733569655f696e666f00733569655f656e74727900733569615f696e66 *6f00733569615f656e74727900733569365f696e666f00733569365f656e74727900733569325f *696e666f00733569325f656e74727900733568595f696e666f00733568595f656e747279007335 *68555f696e666f00733568555f656e74727900733568515f696e666f00733568515f656e747279 *007335684d5f696e666f007335684d5f656e74727900733568495f696e666f00733568495f656e *74727900733568455f696e666f00733568455f656e74727900733568415f696e666f0073356841 *5f656e74727900733568775f696e666f00733568775f656e747279007335686f5f696e666f0073 *35686f5f656e74727900733568695f696e666f00733568695f656e74727900733568655f696e66 *6f00733568655f656e74727900733568385f696e666f00733568385f656e74727900733568305f *696e666f00733568305f656e74727900733567555f696e666f00733567555f656e747279007335 *674f5f696e666f007335674f5f656e747279007335674d5f696e666f007335674d5f656e747279 *007335674b5f696e666f007335674b5f656e74727900723270465f656e74727900723270735f73 *727400723270735f636c6f7375726500723270735f696e666f00723270735f656e747279007234 *58615f73727400723458615f636c6f7375726500723458615f696e666f007336684f5f315f616c *740073356b745f696e666f0073356b745f656e747279007336684f5f325f616c74007336684f5f *7674626c0073356b765f696e666f0073356b765f656e7472790073356b7a5f696e666f0073356b *7a5f656e7472790073356b425f696e666f0073356b425f656e7472790073356c535f696e666f00 *73356c535f656e7472790073356c555f696e666f0073356c555f656e7472790073356c515f696e *666f0073356c515f656e7472790073356c575f696e666f0073356c575f656e7472790073356c59 *5f696e666f0073356c595f656e74727900733668555f315f616c740073356c7a5f696e666f0073 *356c7a5f656e7472790073356c6d5f696e666f0073356c6d5f656e7472790073356c6f5f696e66 *6f0073356c6f5f656e7472790073356c435f696e666f0073356c435f656e7472790073356c395f *696e666f0073356c395f656e74727900733669355f696e666f00733669355f7265740073356c63 *5f696e666f0073356c635f656e7472790073356c675f696e666f0073356c675f656e7472790073 *356c695f696e666f0073356c695f656e7472790073356c6b5f696e666f0073356c6b5f656e7472 *790073356c455f696e666f0073356c455f656e7472790073356b4b5f696e666f0073356b4b5f65 *6e7472790073356b4d5f696e666f0073356b4d5f656e7472790073356c475f696e666f0073356c *475f656e74727900733668555f325f616c7400733668555f7674626c0073356c495f696e666f00 *73356c495f656e7472790073356c4d5f696e666f0073356c4d5f656e7472790073356c4f5f696e *666f0073356c4f5f656e7472790073356d305f696e666f0073356d305f656e7472790073356b37 *5f696e666f0073356b375f656e7472790073356b395f696e666f0073356b395f656e7472790073 *356d325f696e666f0073356d325f656e7472790073356a585f696e666f0073356a585f656e7472 *790073356a5a5f696e666f0073356a5a5f656e7472790073356a555f696e666f0073356a555f65 *6e7472790073356b315f696e666f0073356b315f656e7472790073356b335f696e666f0073356b *335f656e7472790073356b355f696e666f0073356b355f656e7472790073356d345f696e666f00 *73356d345f656e747279007336684c5f696e666f007336684c5f72657400723458615f656e7472 *790073356d785f696e666f0073356d785f656e7472790073356d725f696e666f0073356d725f65 *6e7472790073356d415f696e666f0073356d415f656e7472790073356d6d5f696e666f0073356d *6d5f656e7472790073356d6f5f696e666f0073356d6f5f656e74727900733665345f696e666f00 *733665345f7265740073356d435f696e666f0073356d435f7265740073356e545f696e666f0073 *356e545f656e7472790073356e4c5f696e666f0073356e4c5f656e7472790073356e4e5f696e66 *6f0073356e4e5f656e74727900733665615f696e666f00733665615f72657400733665395f315f *616c7400733665395f325f616c7400733665395f7674626c00733665385f315f616c7400733665 *685f696e666f00733665685f7265740073356d535f696e666f0073356d535f656e747279007335 *6d555f696e666f0073356d555f656e7472790073356e415f696e666f0073356e415f656e747279 *0073356e6f5f696e666f0073356e6f5f656e7472790073356e715f696e666f0073356e715f656e *7472790073356e6d5f696e666f0073356e6d5f656e7472790073356e735f696e666f0073356e73 *5f656e7472790073356e755f696e666f0073356e755f656e747279007336656b5f696e666f0073 *36656b5f726574007336656a5f315f616c74007336656f5f696e666f007336656f5f7265740073 *36656a5f325f616c74007336656a5f7674626c00733665675f315f616c7400733665675f325f61 *6c7400733665675f7674626c00733665385f325f616c7400733665385f7674626c0073356e575f *696e666f0073356e575f72657400733665415f315f616c740073356f385f696e666f0073356f38 *5f656e74727900733665425f696e666f00733665425f72657400733665415f325f616c74007336 *65415f7674626c007336657a5f315f616c74007336657a5f325f616c74007336657a5f7674626c *00733665325f696e666f00733665325f7265740073356f715f696e666f0073356f715f656e7472 *7900733664635f696e666f00733664635f7265740073356f6e5f696e666f0073356f6e5f656e74 *72790073356f735f696e666f0073356f735f656e7472790073356f765f696e666f0073356f765f *656e74727900733574425f696e666f00733574425f656e74727900733664745f315f616c740073 *3570455f696e666f00733570455f656e74727900733664505f696e666f00733664505f72657400 *7336644e5f696e666f007336644e5f726574007336644c5f696e666f007336644c5f7265740073 *36644a5f696e666f007336644a5f72657400733664485f696e666f00733664485f726574007336 *64465f696e666f00733664465f72657400733664445f696e666f00733664445f72657400733664 *425f696e666f00733664425f726574007336647a5f696e666f007336647a5f7265740073366478 *5f696e666f00733664785f72657400733664765f696e666f00733664765f72657400733664755f *696e666f00733664755f72657400733574775f696e666f00733574775f656e7472790073366474 *5f325f616c7400733664745f7674626c00733570795f696e666f00733570795f656e7472790073 *35747a5f696e666f007335747a5f656e74727900733664705f696e666f00733664705f72657400 *7336646f5f315f616c7400733570695f696e666f00733570695f656e74727900733570675f696e *666f00733570675f656e74727900733664535f696e666f00733664535f726574007336646f5f32 *5f616c74007336646f5f7674626c0073356f585f315f616c7400733570355f696e666f00733570 *355f656e7472790073356f5a5f696e666f0073356f5a5f656e74727900733570385f696e666f00 *733570385f656e7472790073356f555f696e666f0073356f555f656e7472790073356f575f696e *666f0073356f575f656e74727900733664595f696e666f00733664595f7265740073356f585f32 *5f616c740073356f585f7674626c007336646c5f696e666f007336646c5f72657400723458635f *73727400723458635f636c6f7375726500723458635f696e666f00723458635f656e7472790072 *3458655f73727400723458655f636c6f7375726500723458655f696e666f00733663565f315f61 *6c7400733663565f325f616c7400733663565f335f616c7400733663565f345f616c7400733663 *565f355f616c7400733663565f365f616c7400733663565f7674626c00733663555f315f616c74 *00733663585f315f616c7400733663585f325f616c7400733663585f335f616c7400733663585f *345f616c7400733663585f355f616c7400733663585f365f616c7400733663585f7674626c0073 *3663555f325f616c74007336635a5f315f616c74007336635a5f325f616c74007336635a5f335f *616c74007336635a5f345f616c74007336635a5f355f616c74007336635a5f365f616c74007336 *635a5f7674626c00733663555f335f616c7400733664315f315f616c7400733664315f325f616c *7400733664315f335f616c7400733664315f345f616c7400733664315f355f616c740073366431 *5f365f616c7400733664315f7674626c00733663555f345f616c7400733664335f315f616c7400 *733664335f325f616c7400733664335f335f616c7400733664335f345f616c7400733664335f35 *5f616c7400733664335f365f616c7400733664335f7674626c00733663555f355f616c74007336 *64365f315f616c7400733664365f325f616c7400733664365f335f616c7400733664365f345f61 *6c7400733664365f355f616c7400733664365f365f616c7400733664365f7674626c0073366355 *5f365f616c7400733663555f7674626c00733575345f696e666f00733575345f72657400733664 *615f696e666f00733664615f72657400733664395f365f616c7400733664395f64666c74007336 *64395f7674626c00733664385f365f616c7400733664385f64666c7400733664385f7674626c00 *723458655f656e74727900723458675f73727400723458675f636c6f7375726500723458675f69 *6e666f007335756c5f696e666f007335756c5f656e74727900723458675f656e74727900723458 *6a5f737274007234586a5f636c6f73757265007234586a5f696e666f007234586a5f656e747279 *007234586c5f737274007234586c5f636c6f73757265007234586c5f696e666f00733663435f69 *6e666f00733663435f72657400733577615f696e666f00733577615f656e74727900733663455f *696e666f00733663455f72657400733577305f696e666f00733577305f656e7472790073366347 *5f696e666f00733663475f72657400733576515f696e666f00733576515f656e74727900733663 *495f696e666f00733663495f72657400733576475f696e666f00733576475f656e747279007336 *634b5f696e666f007336634b5f72657400733576775f696e666f00733576775f656e7472790073 *36634d5f696e666f007336634d5f726574007335766d5f696e666f007335766d5f656e74727900 *7336634f5f696e666f007336634f5f72657400733576635f696e666f00733576635f656e747279 *00733663515f696e666f00733663515f72657400733576325f696e666f00733576325f656e7472 *7900733663535f696e666f00733663535f72657400733575555f696e666f00733575555f656e74 *727900733576345f696e666f00733576345f656e74727900733576655f696e666f00733576655f *656e747279007335766f5f696e666f007335766f5f656e74727900733576795f696e666f007335 *76795f656e74727900733576495f696e666f00733576495f656e74727900733576535f696e666f *00733576535f656e74727900733577325f696e666f00733577325f656e74727900733663425f69 *6e666f00733663425f72657400733663415f696e666f00733663415f726574007234586c5f656e *747279007234586e5f737274007234586e5f636c6f73757265007234586e5f696e666f00733577 *685f696e666f00733577685f656e747279007234586e5f656e74727900723458715f7372740072 *3458715f636c6f7375726500723458715f696e666f00733663755f696e666f00733663755f7265 *7400733578335f696e666f00733578335f656e74727900733663775f696e666f00733663775f72 *657400733577545f696e666f00733577545f656e74727900733663795f696e666f00733663795f *726574007335774a5f696e666f007335774a5f656e74727900733577425f696e666f0073357742 *5f656e747279007335774c5f696e666f007335774c5f656e74727900733577565f696e666f0073 *3577565f656e74727900733663745f696e666f00733663745f72657400733663735f696e666f00 *733663735f72657400723458715f656e74727900723458735f73727400723458735f636c6f7375 *726500723458735f696e666f00733578615f696e666f00733578615f656e74727900723458735f *656e74727900723458775f73727400723458795f73727400723458415f73727400723458775f63 *6c6f7375726500723458795f636c6f7375726500723458415f636c6f7375726500723458775f69 *6e666f00723458775f656e74727900723458795f696e666f00723458795f656e74727900723458 *415f696e666f00723458415f656e74727900733543425f73727400733543425f636c6f73757265 *00733543425f696e666f00733578725f696e666f00733578725f656e74727900733578755f696e *666f00733578755f726574007335787a5f696e666f007335787a5f656e74727900733662695f31 *5f616c7400733578465f696e666f00733578465f656e74727900733578485f696e666f00733578 *485f726574007336626b5f315f616c7400733579315f696e666f00733579315f656e7472790073 *3579335f696e666f00733579335f72657400733579385f696e666f00733579385f656e74727900 *733662705f315f616c7400733579655f696e666f00733579655f656e74727900733579675f696e *666f00733579675f72657400733662725f315f616c7400733579445f696e666f00733579445f65 *6e74727900733579465f696e666f00733579465f72657400733662775f315f616c74007335795a *5f696e666f007335795a5f656e7472790073357a315f696e666f0073357a315f7265740073357a *365f696e666f0073357a365f656e74727900733662425f315f616c740073357a635f696e666f00 *73357a635f656e7472790073357a655f696e666f0073357a655f72657400733662445f315f616c *740073357a425f696e666f0073357a425f656e7472790073357a445f696e666f0073357a445f72 *657400733662495f315f616c740073357a585f696e666f0073357a585f656e7472790073357a5a *5f696e666f0073357a5a5f72657400733541345f696e666f00733541345f656e74727900733662 *4e5f315f616c7400733541615f696e666f00733541615f656e74727900733541635f696e666f00 *733541635f72657400733662505f315f616c74007335417a5f696e666f007335417a5f656e7472 *7900733541425f696e666f00733541425f72657400733662555f315f616c7400733541565f696e *666f00733541565f656e74727900733541585f696e666f00733541585f72657400733542325f69 *6e666f00733542325f656e747279007336625a5f315f616c7400733542385f696e666f00733542 *385f656e74727900733542615f696e666f00733542615f72657400733663315f315f616c740073 *3542785f696e666f00733542785f656e747279007335427a5f696e666f007335427a5f72657400 *733663365f315f616c7400733663395f315f616c7400733663395f325f616c7400733663395f76 *74626c00733663375f696e666f00733663375f72657400733663365f325f616c7400733663365f *7674626c00733663355f335f616c7400733663355f64666c7400733663355f7674626c00733542 *595f696e666f00733542595f656e74727900733543315f696e666f00733543315f656e74727900 *733542735f696e666f00733542735f656e74727900733663345f315f616c7400733663345f325f *616c7400733663345f7674626c00733663325f696e666f00733663325f72657400733663315f32 *5f616c7400733663315f7674626c00733663305f335f616c7400733663305f64666c7400733663 *305f7674626c00733543335f696e666f00733543335f656e747279007336625a5f325f616c7400 *7336625a5f7674626c00733662595f345f616c7400733662595f64666c7400733662595f767462 *6c00733543355f696e666f00733543355f656e74727900733662585f315f616c7400733662585f *325f616c7400733662585f7674626c00733662565f696e666f00733662565f7265740073366255 *5f325f616c7400733662555f7674626c00733662545f335f616c7400733662545f64666c740073 *3662545f7674626c00733543375f696e666f00733543375f656e74727900733543395f696e666f *00733543395f656e74727900733541755f696e666f00733541755f656e74727900733662535f31 *5f616c7400733662535f325f616c7400733662535f7674626c00733662515f696e666f00733662 *515f72657400733662505f325f616c7400733662505f7674626c007336624f5f335f616c740073 *36624f5f64666c74007336624f5f7674626c00733543625f696e666f00733543625f656e747279 *007336624e5f325f616c74007336624e5f7674626c007336624d5f345f616c74007336624d5f64 *666c74007336624d5f7674626c00733543645f696e666f00733543645f656e747279007336624c *5f315f616c74007336624c5f325f616c74007336624c5f7674626c007336624a5f696e666f0073 *36624a5f72657400733662495f325f616c7400733662495f7674626c00733662485f335f616c74 *00733662485f64666c7400733662485f7674626c00733543665f696e666f00733543665f656e74 *727900733543685f696e666f00733543685f656e7472790073357a775f696e666f0073357a775f *656e74727900733662475f315f616c7400733662475f325f616c7400733662475f7674626c0073 *3662455f696e666f00733662455f72657400733662445f325f616c7400733662445f7674626c00 *733662435f335f616c7400733662435f64666c7400733662435f7674626c007335436a5f696e66 *6f007335436a5f656e74727900733662425f325f616c7400733662425f7674626c00733662415f *345f616c7400733662415f64666c7400733662415f7674626c007335436c5f696e666f00733543 *6c5f656e747279007336627a5f315f616c74007336627a5f325f616c74007336627a5f7674626c *00733662785f696e666f00733662785f72657400733662775f325f616c7400733662775f767462 *6c00733662765f335f616c7400733662765f64666c7400733662765f7674626c007335436e5f69 *6e666f007335436e5f656e74727900733543705f696e666f00733543705f656e74727900733579 *795f696e666f00733579795f656e74727900733662755f315f616c7400733662755f325f616c74 *00733662755f7674626c00733662735f696e666f00733662735f72657400733662725f325f616c *7400733662725f7674626c00733662715f335f616c7400733662715f64666c7400733662715f76 *74626c00733543725f696e666f00733543725f656e74727900733662705f325f616c7400733662 *705f7674626c007336626f5f345f616c74007336626f5f64666c74007336626f5f7674626c0073 *3543745f696e666f00733543745f656e747279007336626e5f315f616c74007336626e5f325f61 *6c74007336626e5f7674626c007336626c5f696e666f007336626c5f726574007336626b5f325f *616c74007336626b5f7674626c007336626a5f335f616c74007336626a5f64666c74007336626a *5f7674626c00733543765f696e666f00733543765f656e74727900733662695f325f616c740073 *3662695f7674626c00733662685f345f616c7400733662685f64666c7400733662685f7674626c *00733543785f696e666f00733543785f656e74727900733662665f696e666f00733662665f7265 *74007335437a5f696e666f007335437a5f656e74727900733543425f656e74727900723458435f *73727400723458435f636c6f7375726500723458435f696e666f00723458435f656e7472790072 *3458465f73727400723458465f636c6f7375726500723458465f696e666f00723458465f656e74 *727900723458485f73727400723458485f636c6f7375726500723458485f696e666f0073354563 *5f696e666f00733545635f656e74727900733661595f696e666f00733661595f72657400733545 *365f696e666f00733545365f656e74727900733545655f696e666f00733545655f656e74727900 *733544555f696e666f00733544555f656e74727900733544575f696e666f00733544575f656e74 *727900733545675f696e666f00733545675f656e74727900733544515f696e666f00733544515f *656e74727900733544535f696e666f00733544535f656e74727900733545695f696e666f007335 *45695f656e74727900733662315f696e666f00733662315f726574007335444f5f696e666f0073 *35444f5f656e747279007335456b5f696e666f007335456b5f656e74727900733544435f696e66 *6f00733544435f656e74727900733544455f696e666f00733544455f656e747279007335456d5f *696e666f007335456d5f656e74727900733544795f696e666f00733544795f656e747279007335 *44415f696e666f00733544415f656e747279007335456f5f696e666f007335456f5f656e747279 *00733662345f696e666f00733662345f72657400733544775f696e666f00733544775f656e7472 *7900733545715f696e666f00733545715f656e747279007335446b5f696e666f007335446b5f65 *6e747279007335446d5f696e666f007335446d5f656e74727900733545735f696e666f00733545 *735f656e74727900733544675f696e666f00733544675f656e74727900733544695f696e666f00 *733544695f656e74727900733545755f696e666f00733545755f656e74727900733544655f696e *666f00733544655f656e74727900733545775f696e666f00733545775f656e7472790073354437 *5f696e666f00733544375f656e74727900733544395f696e666f00733544395f656e7472790073 *3545795f696e666f00733545795f656e74727900733544335f696e666f00733544335f656e7472 *7900733544355f696e666f00733544355f656e74727900733545415f696e666f00733545415f65 *6e74727900733662375f696e666f00733662375f72657400733544315f696e666f00733544315f *656e74727900733661585f696e666f00733661585f72657400723458485f656e74727900733545 *445f636c6f7375726500733545465f73727400733545465f636c6f7375726500733545465f696e *666f00733545465f656e747279007234584a5f737274007234584a5f636c6f7375726500723458 *4a5f696e666f007234584a5f656e747279007234584c5f737274007234584c5f636c6f73757265 *007234584c5f696e666f007234584c5f656e747279007234584e5f737274007234584e5f636c6f *73757265007234584e5f696e666f00733548525f696e666f00733548525f656e74727900733661 *6f5f696e666f007336616f5f726574007335484c5f696e666f007335484c5f656e747279007335 *48545f696e666f00733548545f656e747279007335487a5f696e666f007335487a5f656e747279 *00733548425f696e666f00733548425f656e74727900733548565f696e666f00733548565f656e *74727900733548765f696e666f00733548765f656e74727900733548785f696e666f0073354878 *5f656e74727900733548585f696e666f00733548585f656e74727900733661725f696e666f0073 *3661725f72657400733548745f696e666f00733548745f656e747279007335485a5f696e666f00 *7335485a5f656e74727900733548685f696e666f00733548685f656e747279007335486a5f696e *666f007335486a5f656e74727900733549315f696e666f00733549315f656e7472790073354864 *5f696e666f00733548645f656e74727900733548665f696e666f00733548665f656e7472790073 *3549335f696e666f00733549335f656e74727900733661755f696e666f00733661755f72657400 *733548625f696e666f00733548625f656e74727900733549355f696e666f00733549355f656e74 *7279007335475a5f696e666f007335475a5f656e74727900733548315f696e666f00733548315f *656e74727900733549375f696e666f00733549375f656e74727900733547565f696e666f007335 *47565f656e74727900733547585f696e666f00733547585f656e74727900733549395f696e666f *00733549395f656e74727900733661785f696e666f00733661785f72657400733547545f696e66 *6f00733547545f656e74727900733549625f696e666f00733549625f656e74727900733547485f *696e666f00733547485f656e747279007335474a5f696e666f007335474a5f656e747279007335 *49645f696e666f00733549645f656e74727900733547445f696e666f00733547445f656e747279 *00733547465f696e666f00733547465f656e74727900733549665f696e666f00733549665f656e *74727900733661415f696e666f00733661415f72657400733547425f696e666f00733547425f65 *6e74727900733549685f696e666f00733549685f656e74727900733547705f696e666f00733547 *705f656e74727900733547725f696e666f00733547725f656e747279007335496a5f696e666f00 *7335496a5f656e747279007335476c5f696e666f007335476c5f656e747279007335476e5f696e *666f007335476e5f656e747279007335496c5f696e666f007335496c5f656e7472790073366144 *5f696e666f00733661445f726574007335476a5f696e666f007335476a5f656e74727900733549 *6e5f696e666f007335496e5f656e74727900733547375f696e666f00733547375f656e74727900 *733547395f696e666f00733547395f656e74727900733549705f696e666f00733549705f656e74 *727900733547335f696e666f00733547335f656e74727900733547355f696e666f00733547355f *656e74727900733549725f696e666f00733549725f656e74727900733661475f696e666f007336 *61475f72657400733547315f696e666f00733547315f656e74727900733549745f696e666f0073 *3549745f656e74727900733546505f696e666f00733546505f656e74727900733546525f696e66 *6f00733546525f656e74727900733549765f696e666f00733549765f656e747279007335464c5f *696e666f007335464c5f656e747279007335464e5f696e666f007335464e5f656e747279007335 *49785f696e666f00733549785f656e747279007336614a5f696e666f007336614a5f7265740073 *35464a5f696e666f007335464a5f656e747279007335497a5f696e666f007335497a5f656e7472 *7900733546785f696e666f00733546785f656e747279007335467a5f696e666f007335467a5f65 *6e74727900733549425f696e666f00733549425f656e74727900733546745f696e666f00733546 *745f656e74727900733546765f696e666f00733546765f656e74727900733549445f696e666f00 *733549445f656e747279007336614d5f696e666f007336614d5f72657400733546725f696e666f *00733546725f656e74727900733549465f696e666f00733549465f656e74727900733546665f69 *6e666f00733546665f656e74727900733546685f696e666f00733546685f656e74727900733549 *485f696e666f00733549485f656e74727900733546625f696e666f00733546625f656e74727900 *733546645f696e666f00733546645f656e747279007335494a5f696e666f007335494a5f656e74 *727900733661505f696e666f00733661505f72657400733546395f696e666f00733546395f656e *747279007336616e5f696e666f007336616e5f726574007234584e5f656e747279007335494d5f *636c6f73757265007335494f5f737274007335494f5f636c6f73757265007335494f5f696e666f *007335494f5f656e74727900723458505f73727400723458505f636c6f7375726500723458505f *696e666f00723458505f656e74727900723458535f73727400723458555f73727400723458575f *73727400723458535f636c6f7375726500723458555f636c6f7375726500723458575f636c6f73 *75726500723458535f696e666f00723458535f656e74727900723458555f696e666f0072345855 *5f656e74727900723458575f696e666f00723458575f656e747279007234585a5f737274007234 *585a5f636c6f73757265007234585a5f696e666f007234585a5f656e74727900723459315f7372 *7400723459315f636c6f7375726500723459315f696e666f0073354a355f696e666f0073354a35 *5f7265740073354a345f696e666f0073354a345f7265740073354a645f696e666f0073354a645f *7265740073354a635f696e666f0073354a635f726574007336616c5f696e666f007336616c5f72 *65740073354a615f696e666f0073354a615f7265740073354a735f696e666f0073354a735f7265 *740073354a725f696e666f0073354a725f726574007336616a5f696e666f007336616a5f726574 *0073354a705f696e666f0073354a705f7265740073354a485f696e666f0073354a485f72657400 *73354a475f696e666f0073354a475f72657400733661685f696e666f00733661685f7265740073 *354a455f696e666f0073354a455f7265740073354a575f696e666f0073354a575f726574007335 *4a565f696e666f0073354a565f7265740073354a545f696e666f0073354a545f7265740073354a *305f696e666f0073354a305f72657400723459315f656e74727900723459335f73727400723459 *335f636c6f7375726500723459335f696e666f0073354b375f696e666f0073354b375f656e7472 *7900723459335f656e74727900723459375f73727400723459375f636c6f737572650072345937 *5f696e666f00723459375f656e74727900723459395f73727400723459395f636c6f7375726500 *723459395f696e666f0073354b685f696e666f0073354b685f656e7472790073354b6a5f696e66 *6f0073354b6a5f656e74727900733661365f696e666f00733661365f7265740073354b4e5f696e *666f0073354b4e5f656e7472790073354b425f696e666f0073354b425f656e7472790073354b44 *5f696e666f0073354b445f656e7472790073354b505f696e666f0073354b505f656e7472790073 *3661395f696e666f00733661395f7265740073354b7a5f696e666f0073354b7a5f656e74727900 *73354b525f696e666f0073354b525f656e74727900733639565f696e666f00733639565f726574 *0073354c6b5f696e666f0073354c6b5f656e7472790073354c385f696e666f0073354c385f656e *7472790073354c615f696e666f0073354c615f656e7472790073354c6d5f696e666f0073354c6d *5f656e74727900733639595f696e666f00733639595f7265740073354c365f696e666f0073354c *365f656e7472790073354c6f5f696e666f0073354c6f5f656e7472790073354c715f696e666f00 *73354c715f656e747279007336394b5f696e666f007336394b5f7265740073354c545f696e666f *0073354c545f656e7472790073354c485f696e666f0073354c485f656e7472790073354c4a5f69 *6e666f0073354c4a5f656e7472790073354c565f696e666f0073354c565f656e74727900733639 *4e5f696e666f007336394e5f7265740073354c465f696e666f0073354c465f656e747279007335 *4c585f696e666f0073354c585f656e7472790073354c5a5f696e666f0073354c5a5f656e747279 *0073354d6e5f696e666f0073354d6e5f656e7472790073354d675f696e666f0073354d675f656e *7472790073354d695f696e666f0073354d695f656e7472790073354d705f696e666f0073354d70 *5f656e74727900733639435f696e666f00733639435f7265740073354d655f696e666f0073354d *655f656e74727900733639425f696e666f00733639425f72657400723459395f656e7472790073 *354d735f636c6f737572650073354d755f7372740073354d755f636c6f737572650073354d755f *696e666f0073354d755f656e74727900723459625f73727400723459625f636c6f737572650072 *3459625f696e666f00723459625f656e74727900723459655f73727400723459655f636c6f7375 *726500723459655f696e666f00723459655f656e7472790073354d4a5f696e666f0073354d4a5f *7265740073354d495f696e666f0073354d495f7265740073354d525f696e666f0073354d525f72 *65740073354d515f696e666f0073354d515f7265740073354d4f5f696e666f0073354d4f5f7265 *740073354e335f696e666f0073354e335f7265740073354e325f696e666f0073354e325f726574 *0073354e305f696e666f0073354e305f7265740073354e655f696e666f0073354e655f72657400 *73354e645f696e666f0073354e645f7265740073354e625f696e666f0073354e625f7265740073 *354e705f696e666f0073354e705f7265740073354e6f5f696e666f0073354e6f5f726574007335 *4e6d5f696e666f0073354e6d5f7265740073354e415f696e666f0073354e415f7265740073354e *7a5f696e666f0073354e7a5f7265740073354e785f696e666f0073354e785f7265740073354e4c *5f696e666f0073354e4c5f7265740073354e4b5f696e666f0073354e4b5f7265740073354e495f *696e666f0073354e495f7265740073354e575f696e666f0073354e575f7265740073354e565f69 *6e666f0073354e565f7265740073354e545f696e666f0073354e545f7265740073354f375f696e *666f0073354f375f7265740073354f365f696e666f0073354f365f7265740073354f345f696e66 *6f0073354f345f7265740073354f695f696e666f0073354f695f7265740073354f685f696e666f *0073354f685f7265740073354f665f696e666f0073354f665f7265740073354f745f696e666f00 *73354f745f7265740073354f735f696e666f0073354f735f7265740073354f715f696e666f0073 *354f715f7265740073354f455f696e666f0073354f455f7265740073354f445f696e666f007335 *4f445f7265740073354f425f696e666f0073354f425f7265740073354d455f696e666f0073354d *455f7265740073354f4b5f696e666f0073354f4b5f656e7472790073354f535f696e666f007335 *4f535f656e74727900733550665f696e666f00733550665f656e74727900733550375f696e666f *00733550375f656e74727900733550395f696e666f00733550395f656e74727900733550685f69 *6e666f00733550685f656e74727900733550355f696e666f00733550355f656e74727900733550 *765f696e666f00733550765f656e747279007335506f5f696e666f007335506f5f656e74727900 *733550715f696e666f00733550715f656e74727900733550785f696e666f00733550785f656e74 *7279007335506d5f696e666f007335506d5f656e747279007335504c5f696e666f007335504c5f *656e74727900733550455f696e666f00733550455f656e74727900733550475f696e666f007335 *50475f656e747279007335504e5f696e666f007335504e5f656e74727900733550435f696e666f *00733550435f656e74727900733550505f696e666f00733550505f656e74727900733550525f69 *6e666f00733550525f656e74727900733550545f696e666f00733550545f656e74727900733551 *375f696e666f00733551375f656e74727900733551305f696e666f00733551305f656e74727900 *733551325f696e666f00733551325f656e74727900733551395f696e666f00733551395f656e74 *727900733550595f696e666f00733550595f656e747279007335516e5f696e666f007335516e5f *656e74727900733551675f696e666f00733551675f656e74727900733551695f696e666f007335 *51695f656e74727900733551705f696e666f00733551705f656e74727900733551655f696e666f *00733551655f656e74727900733551445f696e666f00733551445f656e74727900733551775f69 *6e666f00733551775f656e74727900733551795f696e666f00733551795f656e74727900733551 *465f696e666f00733551465f656e74727900733551755f696e666f00733551755f656e74727900 *733551545f696e666f00733551545f656e747279007335514d5f696e666f007335514d5f656e74 *7279007335514f5f696e666f007335514f5f656e74727900733551565f696e666f00733551565f *656e747279007335514b5f696e666f007335514b5f656e74727900733552395f696e666f007335 *52395f656e74727900733552325f696e666f00733552325f656e74727900733552345f696e666f *00733552345f656e74727900733552625f696e666f00733552625f656e74727900733552305f69 *6e666f00733552305f656e74727900733552705f696e666f00733552705f656e74727900733552 *695f696e666f00733552695f656e747279007335526b5f696e666f007335526b5f656e74727900 *733552725f696e666f00733552725f656e74727900733552675f696e666f00733552675f656e74 *727900733552465f696e666f00733552465f656e74727900733552795f696e666f00733552795f *656e74727900733552415f696e666f00733552415f656e74727900733552485f696e666f007335 *52485f656e74727900733552775f696e666f00733552775f656e74727900733552565f696e666f *00733552565f656e747279007335524f5f696e666f007335524f5f656e74727900733552515f69 *6e666f00733552515f656e74727900733552585f696e666f00733552585f656e74727900733552 *4d5f696e666f007335524d5f656e747279007335525a5f696e666f007335525a5f656e74727900 *733553315f696e666f00733553315f656e74727900733553335f696e666f00733553335f656e74 *727900733639415f696e666f00733639415f72657400733553355f696e666f00733553355f656e *74727900733553635f696e666f00733553635f656e74727900733553675f696e666f0073355367 *5f656e74727900733639765f696e666f00733639765f72657400733639715f696e666f00733639 *715f726574007336396c5f696e666f007336396c5f72657400733639675f696e666f0073363967 *5f72657400733639625f696e666f00733639625f72657400733639325f696e666f00733639325f *72657400733638545f696e666f00733638545f726574007336384b5f696e666f007336384b5f72 *657400733638425f696e666f00733638425f72657400733638735f696e666f00733638735f7265 *74007336386a5f696e666f007336386a5f72657400733638615f696e666f00733638615f726574 *00733638315f696e666f00733638315f72657400733637535f696e666f00733637535f72657400 *7336374f5f696e666f007336374f5f726574007336374b5f696e666f007336374b5f7265740073 *3637475f696e666f00733637475f72657400733637435f696e666f00733637435f726574007336 *37785f315f616c7400733637795f315f616c7400733637795f325f616c7400733637795f767462 *6c00733637785f325f616c7400733637785f7674626c00733637735f315f616c7400733637745f *315f616c7400733637755f315f616c7400733637755f325f616c7400733637755f7674626c0073 *3637745f325f616c7400733637745f7674626c00733637735f325f616c7400733637735f767462 *6c00733637725f315f616c7400733637725f325f616c7400733637725f335f616c740073363772 *5f345f616c7400733637725f355f616c7400733637725f365f616c7400733637725f7674626c00 *733637715f696e666f00733637715f72657400733637705f696e666f00733637705f7265740073 *36376f5f696e666f007336376f5f726574007336376e5f696e666f007336376e5f726574007336 *376d5f696e666f007336376d5f726574007336376c5f696e666f007336376c5f72657400733637 *6b5f696e666f007336376b5f726574007336376a5f696e666f007336376a5f7265740073363769 *5f696e666f00733637695f72657400733637685f696e666f00733637685f72657400733637675f *696e666f00733637675f72657400733637665f696e666f00733637665f72657400733637655f69 *6e666f00733637655f72657400733637635f315f616c7400733637635f325f616c740073363763 *5f7674626c00733637375f315f616c7400733637385f315f616c7400733637395f315f616c7400 *733637395f325f616c7400733637395f7674626c00733637385f325f616c7400733637385f7674 *626c00733637375f325f616c7400733637375f7674626c00733636585f315f616c740073363733 *5f315f616c7400733637345f315f616c7400733637345f325f616c7400733637345f7674626c00 *733637335f325f616c7400733637335f7674626c00733636595f315f616c74007336365a5f315f *616c7400733637305f315f616c7400733637305f325f616c7400733637305f7674626c00733636 *5a5f325f616c74007336365a5f7674626c00733636595f325f616c7400733636595f7674626c00 *733636585f325f616c7400733636585f7674626c00733636575f696e666f00733636575f726574 *00733636545f315f616c7400733636545f325f616c7400733636545f7674626c00733636515f31 *5f616c7400733636525f315f616c7400733636525f325f616c7400733636525f7674626c007336 *36515f325f616c7400733636515f7674626c007336364d5f315f616c7400733636505f315f616c *7400733636505f325f616c7400733636505f7674626c007336364e5f315f616c74007336364f5f *315f616c74007336364f5f325f616c74007336364f5f7674626c007336364e5f325f616c740073 *36364e5f7674626c007336364d5f325f616c74007336364d5f7674626c00733636415f315f616c *74007336364c5f315f616c74007336364c5f325f616c74007336364c5f7674626c00733636495f *315f616c74007336364a5f315f616c74007336364a5f325f616c74007336364a5f7674626c0073 *3636495f325f616c7400733636495f7674626c00733636425f315f616c7400733636465f315f61 *6c7400733636465f325f616c7400733636465f7674626c00733636435f315f616c740073363644 *5f315f616c7400733636455f315f616c7400733636455f325f616c7400733636455f7674626c00 *733636445f325f616c7400733636445f7674626c00733636435f325f616c7400733636435f7674 *626c00733636425f325f616c7400733636425f7674626c00733636415f325f616c740073363641 *5f7674626c007336367a5f696e666f007336367a5f72657400733636795f696e666f0073363679 *5f72657400733636785f696e666f00733636785f72657400733636775f696e666f00733636775f *72657400733636765f696e666f00733636765f72657400733636755f696e666f00733636755f72 *657400733670675f696e666f00733670675f656e74727900733671785f315f616c74007336714e *5f315f616c7400733670525f656e747279007336714e5f325f616c74007336714e5f7674626c00 *733671415f696e666f00733671415f726574007336704d5f696e666f007336704d5f7265740073 *3671785f325f616c7400733671785f7674626c00733670525f696e666f00733671675f696e666f *00733671675f656e74727900733935645f696e666f00733935645f656e7472790072366a515f73 *72740072366a515f636c6f737572650072366a515f696e666f0072366a515f656e747279007236 *6a535f7372740072366a535f636c6f737572650072366a535f696e666f007339366a5f696e666f *007339366a5f7265740072366a535f656e7472790072317a4a5f7372740072317a4a5f636c6f73 *7572650072317a4a5f696e666f00733672785f64666c7400733672785f7674626c00733935635f *315f616c7400733935635f325f616c7400733935635f7674626c00733672705f696e666f007336 *72705f656e74727900733672465f696e666f00733672465f656e74727900733672665f696e666f *00733672665f656e74727900733672685f696e666f00733672685f656e74727900733672645f69 *6e666f00733672645f656e747279007336726a5f696e666f007336726a5f656e74727900733672 *625f696e666f00733672625f656e747279007336726e5f696e666f007336726e5f656e74727900 *733672495f696e666f00733672495f656e74727900733672375f696e666f00733672375f656e74 *727900733935615f696e666f00733935615f7265740072317a4a5f656e7472790072366a555f73 *72740072366a555f636c6f737572650072366a555f696e666f00733936665f696e666f00733936 *665f7265740072366a555f656e7472790072366a575f7372740072366a575f636c6f7375726500 *72366a575f696e666f0072366a575f656e7472790072366a595f7372740072366a595f636c6f73 *7572650072366a595f696e666f0072366a595f656e7472790072366b305f7372740072366b305f *636c6f737572650072366b305f696e666f0072366b305f656e7472790072366b325f7372740072 *366b325f636c6f737572650072366b325f696e666f0072366b325f656e7472790072366b345f73 *72740072366b345f636c6f737572650072366b345f696e666f0072366b345f656e747279007236 *6b365f7372740072366b365f636c6f737572650072366b365f696e666f0072366b365f656e7472 *790072366b385f7372740072366b385f636c6f737572650072366b385f696e666f00733936635f *696e666f00733936635f7265740072366b385f656e7472790072366b615f7372740072366b615f *636c6f737572650072366b615f696e666f0072366b615f656e7472790072366b635f7372740072 *366b635f636c6f737572650072366b635f696e666f00733936395f696e666f00733936395f7265 *740072366b635f656e7472790072366b655f7372740072366b655f636c6f737572650072366b65 *5f696e666f0072366b655f656e7472790072366b675f7372740072366b675f636c6f7375726500 *72366b675f696e666f00733936355f696e666f00733936355f7265740072366b675f656e747279 *0072366b695f7372740072366b695f636c6f737572650072366b695f696e666f0072366b695f65 *6e7472790072366b6b5f7372740072366b6b5f636c6f737572650072366b6b5f696e666f007339 *36315f696e666f00733936315f7265740072366b6b5f656e7472790072366b6d5f737274007236 *6b6d5f636c6f737572650072366b6d5f696e666f0072366b6d5f656e7472790072366b6f5f7372 *740072366b6f5f636c6f737572650072366b6f5f696e666f0072366b6f5f656e7472790072366b *715f7372740072366b715f636c6f737572650072366b715f696e666f0072366b715f656e747279 *0072366b735f7372740072366b735f636c6f737572650072366b735f696e666f0072366b735f65 *6e7472790072366b755f7372740072366b755f636c6f737572650072366b755f696e666f007236 *6b755f656e7472790072366b775f7372740072366b775f636c6f737572650072366b775f696e66 *6f0072366b775f656e7472790072366b795f7372740072366b795f636c6f737572650072366b79 *5f696e666f0072366b795f656e7472790072366b415f7372740072366b415f636c6f7375726500 *72366b415f696e666f0072366b415f656e7472790072366b435f7372740072366b435f636c6f73 *7572650072366b435f696e666f00733935595f696e666f00733935595f7265740072366b435f65 *6e7472790072366b455f7372740072366b455f636c6f737572650072366b455f696e666f007236 *6b455f656e7472790072366b475f7372740072366b475f636c6f737572650072366b475f696e66 *6f00733935555f696e666f00733935555f7265740072366b475f656e7472790072366b495f7372 *740072366b495f636c6f737572650072366b495f696e666f0072366b495f656e7472790072366b *4b5f7372740072366b4b5f636c6f737572650072366b4b5f696e666f0072366b4b5f656e747279 *0072366b4d5f7372740072366b4d5f636c6f737572650072366b4d5f696e666f00733935515f69 *6e666f00733935515f7265740072366b4d5f656e7472790072366b4f5f7372740072366b4f5f63 *6c6f737572650072366b4f5f696e666f0072366b4f5f656e7472790072366b515f737274007236 *6b515f636c6f737572650072366b515f696e666f0072366b515f656e7472790072366b535f7372 *740072366b535f636c6f737572650072366b535f696e666f0072366b535f656e7472790072366b *555f7372740072366b555f636c6f737572650072366b555f696e666f0072366b555f656e747279 *0072366b575f7372740072366b575f636c6f737572650072366b575f696e666f007339354d5f69 *6e666f007339354d5f7265740072366b575f656e7472790072366b595f7372740072366b595f63 *6c6f737572650072366b595f696e666f00733935495f696e666f00733935495f7265740072366b *595f656e7472790072366c305f7372740072366c305f636c6f737572650072366c305f696e666f *00733935455f696e666f00733935455f7265740072366c305f656e7472790072366c325f737274 *0072366c325f636c6f737572650072366c325f696e666f00733935415f696e666f00733935415f *7265740072366c325f656e7472790072366c345f7372740072366c345f636c6f73757265007236 *6c345f696e666f00733935775f696e666f00733935775f7265740072366c345f656e7472790072 *366c365f7372740072366c365f636c6f737572650072366c365f696e666f0072366c365f656e74 *72790072366c385f7372740072366c385f636c6f737572650072366c385f696e666f0072366c38 *5f656e7472790072366c615f7372740072366c615f636c6f737572650072366c615f696e666f00 *72366c615f656e7472790072366c635f7372740072366c635f636c6f737572650072366c635f69 *6e666f0072366c635f656e7472790072366c655f7372740072366c655f636c6f73757265007236 *6c655f696e666f0072366c655f656e7472790072366c675f7372740072366c675f636c6f737572 *650072366c675f696e666f0072366c675f656e7472790072366c695f7372740072366c695f636c *6f737572650072366c695f696e666f0072366c695f656e7472790072317a505f7372740072317a *505f636c6f737572650072317a505f696e666f00733675715f696e666f00733675715f656e7472 *7900733675735f696e666f00733675735f656e74727900733675685f696e666f00733675685f65 *6e747279007339356e5f696e666f007339356e5f726574007339356d5f315f616c740073393576 *5f315f616c740072317a505f656e74727900733935765f325f616c7400733935765f7674626c00 *733935745f696e666f00733935745f72657400733935735f696e666f00733935735f7265740073 *3935705f696e666f00733935705f726574007339356d5f325f616c74007339356d5f7674626c00 *72366c6b5f7372740072366c6b5f636c6f737572650072366c6b5f696e666f007339344b5f696e *666f007339344b5f72657400733678315f696e666f00733678315f656e747279007339344d5f69 *6e666f007339344d5f72657400733677525f696e666f00733677525f656e747279007339344f5f *696e666f007339344f5f72657400733677485f696e666f00733677485f656e7472790073393451 *5f696e666f00733934515f72657400733677785f696e666f00733677785f656e74727900733934 *535f696e666f00733934535f726574007336776e5f696e666f007336776e5f656e747279007339 *34555f696e666f00733934555f72657400733677645f696e666f00733677645f656e7472790073 *3934575f696e666f00733934575f72657400733677335f696e666f00733677335f656e74727900 *733934595f696e666f00733934595f72657400733676545f696e666f00733676545f656e747279 *00733935305f696e666f00733935305f726574007336764a5f696e666f007336764a5f656e7472 *7900733935325f696e666f00733935325f72657400733935345f696e666f00733935345f726574 *00733676705f696e666f00733676705f656e74727900733935365f696e666f00733935365f7265 *7400733676665f696e666f00733676665f656e74727900733935385f696e666f00733935385f72 *657400733676685f696e666f00733676685f656e74727900733676725f696e666f00733676725f *656e74727900733676425f696e666f00733676425f656e747279007336764c5f696e666f007336 *764c5f656e74727900733676565f696e666f00733676565f656e74727900733677355f696e666f *00733677355f656e74727900733677665f696e666f00733677665f656e74727900733677705f69 *6e666f00733677705f656e747279007336777a5f696e666f007336777a5f656e74727900733677 *4a5f696e666f007336774a5f656e74727900733677545f696e666f00733677545f656e74727900 *7339344a5f696e666f007339344a5f72657400733934495f696e666f00733934495f7265740072 *366c6b5f656e7472790072366c6d5f7372740072366c6d5f636c6f737572650072366c6d5f696e *666f00733678385f696e666f00733678385f656e7472790072366c6d5f656e7472790073364d77 *5f7372740073364d775f636c6f737572650073364d775f696e666f007336786c5f696e666f0073 *36786c5f656e747279007336786f5f72657400733678745f696e666f00733678745f656e747279 *00733931655f315f616c74007336787a5f696e666f007336787a5f656e74727900733678425f72 *657400733931675f315f616c7400733678565f696e666f00733678565f656e7472790073367858 *5f696e666f00733678585f72657400733679325f696e666f00733679325f656e74727900733931 *6c5f315f616c7400733679385f696e666f00733679385f656e74727900733679615f7265740073 *39316e5f315f616c74007336797a5f696e666f007336797a5f72657400733931735f315f616c74 *00733679565f696e666f00733679565f7265740073367a305f696e666f0073367a305f656e7472 *7900733931785f315f616c740073367a365f696e666f0073367a365f656e7472790073367a385f *696e666f0073367a385f726574007339317a5f315f616c740073367a765f696e666f0073367a76 *5f656e7472790073367a785f696e666f0073367a785f72657400733931455f315f616c74007336 *7a525f696e666f0073367a525f656e7472790073367a545f696e666f0073367a545f7265740073 *367a595f696e666f0073367a595f656e747279007339314a5f315f616c7400733641345f696e66 *6f00733641345f656e74727900733641365f696e666f00733641365f726574007339314c5f315f *616c7400733641745f696e666f00733641745f656e74727900733641765f696e666f0073364176 *5f72657400733931515f315f616c7400733641505f696e666f00733641505f656e747279007336 *41525f696e666f00733641525f72657400733641575f696e666f00733641575f656e7472790073 *3931565f315f616c7400733642325f696e666f00733642325f656e74727900733642345f696e66 *6f00733642345f72657400733931585f315f616c7400733642745f696e666f00733642745f7265 *7400733932325f315f616c74007336424e5f696e666f007336424e5f656e74727900733642505f *696e666f00733642505f72657400733642555f696e666f00733642555f656e7472790073393237 *5f315f616c7400733643305f696e666f00733643305f656e74727900733643325f696e666f0073 *3643325f72657400733932395f315f616c7400733643725f696e666f00733643725f7265740073 *3932655f315f616c74007336434c5f696e666f007336434c5f656e747279007336434e5f696e66 *6f007336434e5f72657400733643535f696e666f00733643535f656e747279007339326a5f315f *616c7400733643595f696e666f00733643595f656e74727900733644305f696e666f0073364430 *5f726574007339326c5f315f616c74007336446e5f696e666f007336446e5f656e747279007336 *44705f696e666f00733644705f72657400733932715f315f616c74007336444a5f696e666f0073 *36444a5f656e747279007336444c5f696e666f007336444c5f72657400733644515f696e666f00 *733644515f656e74727900733932765f315f616c7400733644575f696e666f00733644575f656e *74727900733644595f696e666f00733644595f72657400733932785f315f616c74007336456c5f *696e666f007336456c5f656e747279007336456e5f696e666f007336456e5f7265740073393243 *5f315f616c7400733645485f696e666f00733645485f656e747279007336454a5f696e666f0073 *36454a5f726574007336454f5f696e666f007336454f5f656e74727900733932485f315f616c74 *00733645555f696e666f00733645555f656e74727900733645575f696e666f00733645575f7265 *74007339324a5f315f616c74007336466a5f696e666f007336466a5f656e747279007336466c5f *696e666f007336466c5f726574007339324f5f315f616c7400733646465f696e666f0073364646 *5f656e74727900733646485f696e666f00733646485f726574007336464d5f696e666f00733646 *4d5f656e74727900733932545f315f616c7400733646535f696e666f00733646535f656e747279 *00733646555f696e666f00733646555f72657400733932565f315f616c7400733647685f696e66 *6f00733647685f656e747279007336476a5f696e666f007336476a5f72657400733933305f315f *616c7400733647445f696e666f00733647445f656e74727900733647465f696e666f0073364746 *5f726574007336474b5f696e666f007336474b5f656e74727900733933355f315f616c74007336 *47515f696e666f00733647515f656e74727900733647535f696e666f00733647535f7265740073 *3933375f315f616c7400733648665f696e666f00733648665f656e74727900733648685f696e66 *6f00733648685f72657400733933635f315f616c7400733648425f696e666f00733648425f656e *74727900733648445f696e666f00733648445f72657400733933685f315f616c7400733648515f *726574007339336a5f315f616c7400733649645f696e666f00733649645f656e74727900733649 *665f696e666f00733649665f726574007339336f5f315f616c74007336497a5f696e666f007336 *497a5f656e74727900733649425f696e666f00733649425f72657400733649475f696e666f0073 *3649475f656e74727900733933745f315f616c74007336494d5f696e666f007336494d5f656e74 *7279007336494f5f696e666f007336494f5f72657400733933765f315f616c740073364a645f69 *6e666f0073364a645f72657400733933415f315f616c740073364a7a5f696e666f0073364a7a5f *72657400733933465f315f616c740073364a4b5f696e666f0073364a4b5f656e7472790073364a *4d5f696e666f0073364a4d5f72657400733933485f315f616c740073364b395f696e666f007336 *4b395f656e7472790073364b625f696e666f0073364b625f726574007339334d5f315f616c7400 *733933505f315f616c7400733933505f325f616c7400733933505f7674626c007339334e5f696e *666f007339334e5f726574007339334d5f325f616c74007339334d5f7674626c007339334c5f33 *5f616c74007339334c5f64666c74007339334c5f7674626c0073364b4a5f696e666f0073364b4a *5f656e7472790073364b4d5f696e666f0073364b4d5f656e7472790073364b345f696e666f0073 *364b345f656e747279007339334b5f315f616c74007339334b5f325f616c74007339334b5f7674 *626c00733933495f696e666f00733933495f72657400733933485f325f616c7400733933485f76 *74626c00733933475f335f616c7400733933475f64666c7400733933475f7674626c0073364b4f *5f696e666f0073364b4f5f656e74727900733933465f325f616c7400733933465f7674626c0073 *3933455f345f616c7400733933455f64666c7400733933455f7674626c0073364b515f696e666f *0073364b515f656e74727900733933445f315f616c7400733933445f325f616c7400733933445f *7674626c00733933425f696e666f00733933425f72657400733933415f325f616c740073393341 *5f7674626c007339337a5f335f616c74007339337a5f64666c74007339337a5f7674626c007336 *4a365f696e666f0073364a365f656e74727900733933795f315f616c7400733933795f325f616c *7400733933795f7674626c00733933775f696e666f00733933775f72657400733933765f325f61 *6c7400733933765f7674626c00733933755f335f616c7400733933755f64666c7400733933755f *7674626c0073364b575f696e666f0073364b575f656e74727900733933745f325f616c74007339 *33745f7674626c00733933735f345f616c7400733933735f64666c7400733933735f7674626c00 *733933725f315f616c7400733933725f325f616c7400733933725f7674626c00733933705f696e *666f00733933705f726574007339336f5f325f616c74007339336f5f7674626c007339336e5f33 *5f616c74007339336e5f64666c74007339336e5f7674626c0073364c325f696e666f0073364c32 *5f656e747279007339336d5f315f616c74007339336d5f325f616c74007339336d5f7674626c00 *7339336b5f696e666f007339336b5f726574007339336a5f325f616c74007339336a5f7674626c *00733933695f335f616c7400733933695f64666c7400733933695f7674626c0073364c345f696e *666f0073364c345f656e74727900733933685f325f616c7400733933685f7674626c0073393367 *5f345f616c7400733933675f64666c7400733933675f7674626c0073364c365f696e666f007336 *4c365f656e74727900733933665f315f616c7400733933665f325f616c7400733933665f767462 *6c00733933645f696e666f00733933645f72657400733933635f325f616c7400733933635f7674 *626c00733933625f335f616c7400733933625f64666c7400733933625f7674626c0073364c385f *696e666f0073364c385f656e7472790073364c615f696e666f0073364c615f656e747279007339 *33615f315f616c7400733933615f325f616c7400733933615f7674626c00733933385f696e666f *00733933385f72657400733933375f325f616c7400733933375f7674626c00733933365f335f61 *6c7400733933365f64666c7400733933365f7674626c00733933355f325f616c7400733933355f *7674626c00733933345f345f616c7400733933345f64666c7400733933345f7674626c00733933 *335f315f616c7400733933335f325f616c7400733933335f7674626c00733933315f696e666f00 *733933315f72657400733933305f325f616c7400733933305f7674626c007339325a5f335f616c *74007339325a5f64666c74007339325a5f7674626c0073364c675f696e666f0073364c675f656e *7472790073364c695f696e666f0073364c695f656e74727900733647635f696e666f0073364763 *5f656e74727900733932595f315f616c7400733932595f325f616c7400733932595f7674626c00 *733932575f696e666f00733932575f72657400733932565f325f616c7400733932565f7674626c *00733932555f335f616c7400733932555f64666c7400733932555f7674626c00733932545f325f *616c7400733932545f7674626c00733932535f345f616c7400733932535f64666c740073393253 *5f7674626c0073364c6d5f696e666f0073364c6d5f656e74727900733932525f315f616c740073 *3932525f325f616c7400733932525f7674626c00733932505f696e666f00733932505f72657400 *7339324f5f325f616c74007339324f5f7674626c007339324e5f335f616c74007339324e5f6466 *6c74007339324e5f7674626c0073364c6f5f696e666f0073364c6f5f656e7472790073364c715f *696e666f0073364c715f656e74727900733646655f696e666f00733646655f656e747279007339 *324d5f315f616c74007339324d5f325f616c74007339324d5f7674626c007339324b5f696e666f *007339324b5f726574007339324a5f325f616c74007339324a5f7674626c00733932495f335f61 *6c7400733932495f64666c7400733932495f7674626c0073364c735f696e666f0073364c735f65 *6e74727900733932485f325f616c7400733932485f7674626c00733932475f345f616c74007339 *32475f64666c7400733932475f7674626c0073364c755f696e666f0073364c755f656e74727900 *733932465f315f616c7400733932465f325f616c7400733932465f7674626c00733932445f696e *666f00733932445f72657400733932435f325f616c7400733932435f7674626c00733932425f33 *5f616c7400733932425f64666c7400733932425f7674626c0073364c775f696e666f0073364c77 *5f656e7472790073364c795f696e666f0073364c795f656e74727900733645675f696e666f0073 *3645675f656e74727900733932415f315f616c7400733932415f325f616c7400733932415f7674 *626c00733932795f696e666f00733932795f72657400733932785f325f616c7400733932785f76 *74626c00733932775f335f616c7400733932775f64666c7400733932775f7674626c0073364c41 *5f696e666f0073364c415f656e74727900733932765f325f616c7400733932765f7674626c0073 *3932755f345f616c7400733932755f64666c7400733932755f7674626c0073364c435f696e666f *0073364c435f656e74727900733932745f315f616c7400733932745f325f616c7400733932745f *7674626c00733932725f696e666f00733932725f72657400733932715f325f616c740073393271 *5f7674626c00733932705f335f616c7400733932705f64666c7400733932705f7674626c007336 *4c455f696e666f0073364c455f656e7472790073364c475f696e666f0073364c475f656e747279 *00733644695f696e666f00733644695f656e747279007339326f5f315f616c74007339326f5f32 *5f616c74007339326f5f7674626c007339326d5f696e666f007339326d5f726574007339326c5f *325f616c74007339326c5f7674626c007339326b5f335f616c74007339326b5f64666c74007339 *326b5f7674626c0073364c495f656e747279007339326a5f325f616c74007339326a5f7674626c *00733932695f345f616c7400733932695f64666c7400733932695f7674626c0073364c4b5f696e *666f0073364c4b5f656e74727900733932685f315f616c7400733932685f325f616c7400733932 *685f7674626c00733932665f696e666f00733932665f72657400733932655f325f616c74007339 *32655f7674626c00733932645f335f616c7400733932645f64666c7400733932645f7674626c00 *73364c4d5f696e666f0073364c4d5f656e7472790073364c4f5f696e666f0073364c4f5f656e74 *7279007336436b5f696e666f007336436b5f656e74727900733932635f315f616c740073393263 *5f325f616c7400733932635f7674626c00733932615f696e666f00733932615f72657400733932 *395f325f616c7400733932395f7674626c00733932385f335f616c7400733932385f64666c7400 *733932385f7674626c0073364c515f656e74727900733932375f325f616c7400733932375f7674 *626c00733932365f345f616c7400733932365f64666c7400733932365f7674626c0073364c535f *696e666f0073364c535f656e74727900733932355f315f616c7400733932355f325f616c740073 *3932355f7674626c00733932335f696e666f00733932335f72657400733932325f325f616c7400 *733932325f7674626c00733932315f335f616c7400733932315f64666c7400733932315f767462 *6c0073364c555f696e666f0073364c555f656e7472790073364c575f656e747279007336426d5f *696e666f007336426d5f656e74727900733932305f315f616c7400733932305f325f616c740073 *3932305f7674626c00733931595f696e666f00733931595f72657400733931585f325f616c7400 *733931585f7674626c00733931575f335f616c7400733931575f64666c7400733931575f767462 *6c0073364c595f656e74727900733931565f325f616c7400733931565f7674626c00733931555f *345f616c7400733931555f64666c7400733931555f7674626c0073364d305f656e747279007339 *31545f315f616c7400733931545f325f616c7400733931545f7674626c00733931525f696e666f *00733931525f72657400733931515f325f616c7400733931515f7674626c00733931505f335f61 *6c7400733931505f64666c7400733931505f7674626c0073364d325f696e666f0073364d325f65 *6e7472790073364d345f696e666f0073364d345f656e747279007336416f5f696e666f00733641 *6f5f656e747279007339314f5f315f616c74007339314f5f325f616c74007339314f5f7674626c *007339314d5f696e666f007339314d5f726574007339314c5f325f616c74007339314c5f767462 *6c007339314b5f335f616c74007339314b5f64666c74007339314b5f7674626c0073364d365f65 *6e747279007339314a5f325f616c74007339314a5f7674626c00733931495f345f616c74007339 *31495f64666c7400733931495f7674626c0073364d385f696e666f0073364d385f656e74727900 *733931485f315f616c7400733931485f325f616c7400733931485f7674626c00733931465f696e *666f00733931465f72657400733931455f325f616c7400733931455f7674626c00733931445f33 *5f616c7400733931445f64666c7400733931445f7674626c0073364d615f696e666f0073364d61 *5f656e7472790073364d635f696e666f0073364d635f656e7472790073367a715f696e666f0073 *367a715f656e74727900733931435f315f616c7400733931435f325f616c7400733931435f7674 *626c00733931415f696e666f00733931415f726574007339317a5f325f616c74007339317a5f76 *74626c00733931795f335f616c7400733931795f64666c7400733931795f7674626c0073364d65 *5f696e666f0073364d655f656e74727900733931785f325f616c7400733931785f7674626c0073 *3931775f345f616c7400733931775f64666c7400733931775f7674626c0073364d675f696e666f *0073364d675f656e74727900733931765f315f616c7400733931765f325f616c7400733931765f *7674626c00733931745f696e666f00733931745f72657400733931735f325f616c740073393173 *5f7674626c00733931725f335f616c7400733931725f64666c7400733931725f7674626c007336 *4d695f696e666f0073364d695f656e7472790073364d6b5f656e74727900733679735f696e666f *00733679735f656e74727900733931715f315f616c7400733931715f325f616c7400733931715f *7674626c007339316f5f696e666f007339316f5f726574007339316e5f325f616c74007339316e *5f7674626c007339316d5f335f616c74007339316d5f64666c74007339316d5f7674626c007336 *4d6d5f696e666f0073364d6d5f656e747279007339316c5f325f616c74007339316c5f7674626c *007339316b5f345f616c74007339316b5f64666c74007339316b5f7674626c0073364d6f5f696e *666f0073364d6f5f656e747279007339316a5f315f616c74007339316a5f325f616c7400733931 *6a5f7674626c00733931685f696e666f00733931685f72657400733931675f325f616c74007339 *31675f7674626c00733931665f335f616c7400733931665f64666c7400733931665f7674626c00 *73364d715f696e666f0073364d715f656e74727900733931655f325f616c7400733931655f7674 *626c00733931645f345f616c7400733931645f64666c7400733931645f7674626c0073364d735f *696e666f0073364d735f656e74727900733931625f696e666f00733931625f7265740073364d75 *5f656e7472790073364d775f656e7472790072366c705f7372740072366c705f636c6f73757265 *0072366c705f696e666f0072366c705f656e7472790072366c725f7372740072366c725f636c6f *737572650072366c725f696e666f00733651565f696e666f00733651565f656e74727900733930 *715f696e666f00733930715f72657400733651505f696e666f00733651505f656e747279007336 *51585f696e666f00733651585f656e74727900733651445f696e666f00733651445f656e747279 *00733651465f696e666f00733651465f656e747279007336515a5f696e666f007336515a5f656e *747279007336517a5f696e666f007336517a5f656e74727900733651425f696e666f0073365142 *5f656e74727900733652315f696e666f00733652315f656e74727900733930745f696e666f0073 *3930745f72657400733651785f696e666f00733651785f656e74727900733652335f696e666f00 *733652335f656e747279007336516c5f696e666f007336516c5f656e747279007336516e5f696e *666f007336516e5f656e74727900733652355f696e666f00733652355f656e7472790073365168 *5f696e666f00733651685f656e747279007336516a5f696e666f007336516a5f656e7472790073 *3652375f696e666f00733652375f656e74727900733930775f696e666f00733930775f72657400 *733651665f696e666f00733651665f656e74727900733652395f696e666f00733652395f656e74 *727900733651335f696e666f00733651335f656e74727900733651355f696e666f00733651355f *656e74727900733652625f696e666f00733652625f656e747279007336505a5f696e666f007336 *505a5f656e74727900733651315f696e666f00733651315f656e74727900733652645f696e666f *00733652645f656e747279007339307a5f696e666f007339307a5f72657400733650585f696e66 *6f00733650585f656e74727900733652665f696e666f00733652665f656e747279007336504c5f *696e666f007336504c5f656e747279007336504e5f696e666f007336504e5f656e747279007336 *52685f696e666f00733652685f656e74727900733650485f696e666f00733650485f656e747279 *007336504a5f696e666f007336504a5f656e747279007336526a5f696e666f007336526a5f656e *74727900733930435f696e666f00733930435f72657400733650465f696e666f00733650465f65 *6e747279007336526c5f696e666f007336526c5f656e74727900733650745f696e666f00733650 *745f656e74727900733650765f696e666f00733650765f656e747279007336526e5f696e666f00 *7336526e5f656e74727900733650705f696e666f00733650705f656e74727900733650725f696e *666f00733650725f656e74727900733652705f696e666f00733652705f656e7472790073393046 *5f696e666f00733930465f726574007336506e5f696e666f007336506e5f656e74727900733652 *725f696e666f00733652725f656e74727900733650625f696e666f00733650625f656e74727900 *733650645f696e666f00733650645f656e74727900733652745f696e666f00733652745f656e74 *727900733650375f656e74727900733650395f696e666f00733650395f656e7472790073365276 *5f696e666f00733652765f656e74727900733930495f696e666f00733930495f72657400733650 *355f696e666f00733650355f656e74727900733652785f696e666f00733652785f656e74727900 *73364f545f696e666f0073364f545f656e7472790073364f565f696e666f0073364f565f656e74 *7279007336527a5f696e666f007336527a5f656e7472790073364f505f696e666f0073364f505f *656e7472790073364f525f696e666f0073364f525f656e74727900733652425f696e666f007336 *52425f656e747279007339304c5f696e666f007339304c5f7265740073364f4e5f696e666f0073 *364f4e5f656e74727900733652445f696e666f00733652445f656e7472790073364f425f696e66 *6f0073364f425f656e7472790073364f445f696e666f0073364f445f656e74727900733652465f *696e666f00733652465f656e7472790073364f785f696e666f0073364f785f656e747279007336 *4f7a5f696e666f0073364f7a5f656e74727900733652485f696e666f00733652485f656e747279 *007339304f5f696e666f007339304f5f7265740073364f765f656e747279007336524a5f696e66 *6f007336524a5f656e7472790073364f6a5f696e666f0073364f6a5f656e7472790073364f6c5f *696e666f0073364f6c5f656e747279007336524c5f696e666f007336524c5f656e747279007336 *4f665f696e666f0073364f665f656e7472790073364f685f696e666f0073364f685f656e747279 *007336524e5f696e666f007336524e5f656e74727900733930525f696e666f00733930525f7265 *740073364f645f656e74727900733652505f696e666f00733652505f656e7472790073364f315f *696e666f0073364f315f656e7472790073364f335f696e666f0073364f335f656e747279007336 *52525f696e666f00733652525f656e7472790073364e585f696e666f0073364e585f656e747279 *0073364e5a5f696e666f0073364e5a5f656e74727900733652545f696e666f00733652545f656e *74727900733930555f696e666f00733930555f7265740073364e565f656e74727900733652565f *696e666f00733652565f656e7472790073364e4a5f656e7472790073364e4c5f696e666f007336 *4e4c5f656e74727900733652585f696e666f00733652585f656e7472790073364e465f696e666f *0073364e465f656e7472790073364e485f696e666f0073364e485f656e747279007336525a5f69 *6e666f007336525a5f656e74727900733930585f696e666f00733930585f7265740073364e445f *696e666f0073364e445f656e74727900733653315f696e666f00733653315f656e747279007336 *4e725f656e7472790073364e745f696e666f0073364e745f656e74727900733653335f696e666f *00733653335f656e7472790073364e6e5f696e666f0073364e6e5f656e7472790073364e705f65 *6e74727900733653355f696e666f00733653355f656e74727900733931305f696e666f00733931 *305f7265740073364e6c5f656e74727900733653375f696e666f00733653375f656e7472790073 *364e395f696e666f0073364e395f656e7472790073364e625f696e666f0073364e625f656e7472 *7900733653395f696e666f00733653395f656e7472790073364e355f696e666f0073364e355f65 *6e7472790073364e375f696e666f0073364e375f656e74727900733653625f696e666f00733653 *625f656e74727900733931335f696e666f00733931335f7265740073364e335f656e7472790073 *3930705f696e666f00733930705f7265740072366c725f656e74727900733653655f636c6f7375 *726500733653675f73727400733653675f636c6f7375726500733653675f696e666f0073365367 *5f656e7472790072366c745f7372740072366c745f636c6f737572650072366c745f696e666f00 *72366c745f656e7472790072366c765f636c6f737572650072366c785f636c6f73757265007336 *53495f696e666f00733653495f656e747279007336534b5f696e666f007336534b5f656e747279 *00733653475f696e666f00733653475f656e74727900733930395f696e666f00733930395f7265 *7400733654365f696e666f00733654365f656e7472790073385a545f696e666f0073385a545f72 *657400733654625f696e666f00733654625f656e74727900733654435f696e666f00733654435f *656e7472790073385a6a5f696e666f0073385a6a5f7265740073385a695f315f616c7400733655 *6b5f696e666f007336556b5f656e7472790073385a695f325f616c740073385a695f7674626c00 *72366c7a5f636c6f737572650072366c425f7372740072366c425f636c6f737572650072366c42 *5f696e666f0073365a715f696e666f0073365a715f656e7472790073365a365f696e666f007336 *5a365f656e747279007336594d5f696e666f007336594d5f656e74727900733659735f696e666f *00733659735f656e74727900733659385f696e666f00733659385f656e747279007336584f5f69 *6e666f007336584f5f656e74727900733658755f696e666f00733658755f656e74727900733658 *365f696e666f00733658365f656e74727900733658345f696e666f00733658345f656e74727900 *733658385f696e666f00733658385f656e747279007338584c5f315f616c74007338584c5f325f *616c74007338584c5f7674626c00733858785f315f616c74007338584d5f696e666f007338584d *5f72657400733858785f325f616c7400733858785f7674626c00733858765f696e666f00733858 *765f72657400733658615f696e666f00733658615f656e74727900733657705f696e666f007336 *57705f656e74727900733657355f696e666f00733657355f656e747279007336564c5f696e666f *007336564c5f656e74727900733656725f696e666f00733656725f656e74727900733656375f69 *6e666f00733656375f656e74727900733857315f696e666f00733857315f7265740072366c425f *656e7472790072366c445f636c6f7375726500733856505f315f616c7400733856565f315f616c *7400733730645f656e74727900733730385f696e666f00733730385f656e74727900733856575f *696e666f00733856575f72657400733730615f696e666f00733730615f656e7472790073385656 *5f325f616c7400733856565f7674626c00733856515f696e666f00733856515f72657400733730 *635f696e666f00733730635f72657400733856505f325f616c7400733856505f7674626c007337 *30645f696e666f00733731385f696e666f00733731385f656e74727900733856595f315f616c74 *007338565a5f315f616c7400733730595f696e666f00733730595f656e74727900733857305f69 *6e666f00733857305f72657400733731305f696e666f00733731305f656e747279007338565a5f *325f616c74007338565a5f7674626c00733856595f325f616c7400733856595f7674626c007337 *31345f696e666f00733731345f656e74727900733856585f696e666f00733856585f7265740073 *38564f5f696e666f007338564f5f726574007337326b5f737274007337326b5f636c6f73757265 *007337326b5f696e666f007338564d5f696e666f007338564d5f72657400733732665f696e666f *00733732665f656e747279007338564c5f696e666f007338564c5f726574007337326b5f656e74 *7279007337317a5f737274007337317a5f636c6f73757265007337317a5f696e666f007337317a *5f656e74727900733731625f73727400733731625f636c6f7375726500733731625f696e666f00 *733731625f656e7472790072366c465f7372740072366c465f636c6f737572650072366c465f69 *6e666f0072366c465f656e7472790072366c485f636c6f7375726500733733305f636c6f737572 *6500733733305f696e666f00733856745f696e666f00733856745f72657400733733305f656e74 *7279007337326f5f737274007337326f5f636c6f73757265007337326f5f696e666f007337326f *5f656e7472790072366c4a5f7372740072366c4a5f636c6f737572650072366c4a5f696e666f00 *72366c4a5f656e7472790072366c4c5f636c6f73757265007337334b5f636c6f73757265007337 *334b5f696e666f00733856725f696e666f00733856725f726574007337334b5f656e7472790073 *3733385f73727400733733385f636c6f7375726500733733385f696e666f00733733365f696e66 *6f00733733365f656e74727900733733385f656e74727900733733345f73727400733733345f63 *6c6f7375726500733733345f696e666f00733733345f656e7472790072366c4e5f737274007236 *6c4e5f636c6f737572650072366c4e5f696e666f0072366c4e5f656e7472790072366c505f636c *6f7375726500733734755f636c6f7375726500733734755f696e666f00733856705f696e666f00 *733856705f72657400733734755f656e74727900733733535f73727400733733535f636c6f7375 *726500733733535f696e666f00733733515f696e666f00733733515f656e74727900733733535f *656e747279007337334f5f737274007337334f5f636c6f73757265007337334f5f696e666f0073 *37334f5f656e7472790072366c525f7372740072366c525f636c6f737572650072366c525f696e *666f0072366c525f656e7472790072366c545f636c6f7375726500733735655f636c6f73757265 *00733735655f696e666f007338566e5f696e666f007338566e5f72657400733735655f656e7472 *7900733734435f73727400733734435f636c6f7375726500733734435f696e666f00733734415f *696e666f00733734415f656e74727900733734435f656e74727900733734795f73727400733734 *795f636c6f7375726500733734795f696e666f00733734795f656e7472790072366c565f737274 *0072366c565f636c6f737572650072366c565f696e666f0072366c565f656e7472790072366c58 *5f636c6f7375726500733735595f636c6f7375726500733735595f696e666f007338566c5f696e *666f007338566c5f72657400733735595f656e747279007337356d5f737274007337356d5f636c *6f73757265007337356d5f696e666f007337356b5f696e666f007337356b5f656e747279007337 *356d5f656e74727900733735695f73727400733735695f636c6f7375726500733735695f696e66 *6f00733735695f656e7472790072366c5a5f7372740072366c5a5f636c6f737572650072366c5a *5f696e666f0072366c5a5f656e7472790072366d315f636c6f7375726500733736495f636c6f73 *75726500733736495f696e666f007338566a5f696e666f007338566a5f72657400733736495f65 *6e74727900733736365f73727400733736365f636c6f7375726500733736365f696e666f007337 *36345f696e666f00733736345f656e74727900733736365f656e74727900733736325f73727400 *733736325f636c6f7375726500733736325f696e666f00733736325f656e7472790072366d335f *7372740072366d335f636c6f737572650072366d335f696e666f0072366d335f656e7472790072 *366d355f636c6f7375726500733737735f636c6f7375726500733737735f696e666f0073385668 *5f696e666f00733856685f72657400733737735f656e74727900733736515f7372740073373651 *5f636c6f7375726500733736515f696e666f007337364f5f696e666f007337364f5f656e747279 *00733736515f656e747279007337364d5f737274007337364d5f636c6f73757265007337364d5f *696e666f007337364d5f656e7472790072366d375f7372740072366d375f636c6f737572650072 *366d375f696e666f0072366d375f656e7472790072366d395f636c6f7375726500733738635f63 *6c6f7375726500733738635f696e666f00733856665f696e666f00733856665f72657400733738 *635f656e74727900733737415f73727400733737415f636c6f7375726500733737415f696e666f *00733737795f696e666f00733737795f656e74727900733737415f656e74727900733737775f73 *727400733737775f636c6f7375726500733737775f696e666f00733737775f656e747279007236 *6d625f7372740072366d625f636c6f737572650072366d625f696e666f0072366d625f656e7472 *790072366d645f636c6f7375726500733738535f636c6f7375726500733738535f696e666f0073 *3856645f696e666f00733856645f72657400733738535f656e74727900733738675f7372740073 *3738675f636c6f7375726500733738675f696e666f00733738675f656e7472790072366d665f73 *72740072366d665f636c6f737572650072366d665f696e666f0072366d665f656e747279007236 *6d685f636c6f7375726500733739435f636c6f7375726500733739435f696e666f00733856625f *696e666f00733856625f72657400733739435f656e74727900733739305f73727400733739305f *636c6f7375726500733739305f696e666f00733738595f696e666f00733738595f656e74727900 *733739305f656e74727900733738575f73727400733738575f636c6f7375726500733738575f69 *6e666f00733738575f656e7472790072366d6a5f7372740072366d6a5f636c6f73757265007236 *6d6a5f696e666f0072366d6a5f656e7472790072366d6c5f636c6f73757265007337616d5f636c *6f73757265007337616d5f696e666f00733856395f696e666f00733856395f726574007337616d *5f656e747279007337394b5f737274007337394b5f636c6f73757265007337394b5f696e666f00 *733739495f696e666f00733739495f656e747279007337394b5f656e74727900733739475f7372 *7400733739475f636c6f7375726500733739475f696e666f00733739475f656e7472790072366d *6e5f7372740072366d6e5f636c6f737572650072366d6e5f696e666f0072366d6e5f656e747279 *0072366d705f636c6f7375726500733762325f636c6f7375726500733762325f696e666f007338 *56375f696e666f00733856375f72657400733762325f656e74727900733761715f737274007337 *61715f636c6f7375726500733761715f696e666f00733761715f656e7472790072366d725f7372 *740072366d725f636c6f737572650072366d725f696e666f0072366d725f656e7472790072366d *745f636c6f73757265007337624b5f636c6f73757265007337624b5f696e666f00733856355f69 *6e666f00733856355f726574007337624b5f656e74727900733762385f73727400733762385f63 *6c6f7375726500733762385f696e666f00733762385f656e74727900733762365f737274007337 *62365f636c6f7375726500733762365f696e666f00733762365f656e7472790072366d765f7372 *740072366d765f636c6f737572650072366d765f696e666f0072366d765f656e7472790072366d *785f636c6f7375726500733763425f636c6f7375726500733763425f696e666f00733856335f69 *6e666f00733856335f726574007337636b5f696e666f007337636b5f656e74727900733856325f *696e666f00733856325f72657400733763425f656e74727900733762535f73727400733762535f *636c6f7375726500733762535f696e666f00733762535f656e74727900733762515f7372740073 *3762515f636c6f7375726500733762515f696e666f00733762515f656e747279007337624f5f73 *7274007337624f5f636c6f73757265007337624f5f696e666f007337624f5f656e747279007236 *6d7a5f7372740072366d7a5f636c6f737572650072366d7a5f696e666f0072366d7a5f656e7472 *790072366d425f636c6f7375726500733764715f636c6f7375726500733764715f696e666f0073 *3856305f696e666f00733856305f72657400733764395f696e666f00733764395f656e74727900 *7338555a5f696e666f007338555a5f72657400733764715f656e74727900733763485f73727400 *733763485f636c6f7375726500733763485f696e666f00733763485f656e74727900733763465f *73727400733763465f636c6f7375726500733763465f696e666f00733763465f656e7472790072 *366d445f7372740072366d445f636c6f737572650072366d445f696e666f0072366d445f656e74 *727900733764585f696e666f00733764585f656e74727900733764565f696e666f00733764565f *656e747279007337645a5f696e666f007337645a5f656e74727900733765335f696e666f007337 *65335f656e74727900733855445f315f616c7400733855485f315f616c7400733765765f656e74 *727900733855495f315f616c7400733855495f325f616c7400733855495f7674626c0073376541 *5f696e666f00733765415f656e74727900733855485f325f616c7400733855485f7674626c0073 *3855465f696e666f00733855465f72657400733855455f696e666f00733855455f726574007338 *55445f325f616c7400733855445f7674626c00733765765f696e666f00733765545f636c6f7375 *726500733765545f696e666f00733855425f696e666f00733855425f72657400733765545f656e *74727900733765485f73727400733765485f636c6f7375726500733765485f696e666f00733765 *485f656e7472790072366d465f7372740072366d465f636c6f737572650072366d465f696e666f *0072366d465f656e7472790072366d485f636c6f7375726500733766645f636c6f737572650073 *3766645f696e666f007338557a5f696e666f007338557a5f72657400733766645f656e74727900 *733766315f73727400733766315f636c6f7375726500733766315f696e666f007337655a5f696e *666f007337655a5f656e74727900733766315f656e74727900733765585f73727400733765585f *636c6f7375726500733765585f696e666f00733765585f656e7472790072366d4a5f7372740072 *366d4a5f636c6f737572650072366d4a5f696e666f0072366d4a5f656e7472790072366d4c5f63 *6c6f73757265007337664e5f636c6f73757265007337664e5f696e666f00733855785f696e666f *00733855785f726574007337664e5f656e74727900733766685f73727400733766685f636c6f73 *75726500733766685f696e666f00733766685f656e7472790072366d4e5f7372740072366d4e5f *636c6f737572650072366d4e5f696e666f0072366d4e5f656e7472790072366d505f636c6f7375 *7265007337676e5f636c6f73757265007337676e5f696e666f00733855765f696e666f00733855 *765f726574007337676e5f656e74727900733766525f73727400733766525f636c6f7375726500 *733766525f696e666f00733766525f656e7472790072366d525f7372740072366d525f636c6f73 *7572650072366d525f696e666f0072366d525f656e7472790072366d545f636c6f737572650073 *3767585f636c6f7375726500733767585f696e666f00733855745f696e666f00733855745f7265 *7400733767585f656e74727900733767725f73727400733767725f636c6f737572650073376772 *5f696e666f00733767725f656e7472790072366d565f7372740072366d565f636c6f7375726500 *72366d565f696e666f0072366d565f656e7472790072366d585f636c6f7375726500733768785f *636c6f7375726500733768785f696e666f00733855725f696e666f00733855725f726574007337 *68785f656e74727900733768315f73727400733768315f636c6f7375726500733768315f696e66 *6f00733768315f656e7472790072366d5a5f7372740072366d5a5f636c6f737572650072366d5a *5f696e666f0072366d5a5f656e7472790072366e315f636c6f7375726500733769375f636c6f73 *75726500733769375f696e666f00733855705f696e666f00733855705f72657400733769375f65 *6e74727900733768425f73727400733768425f636c6f7375726500733768425f696e666f007337 *68425f656e7472790072366e335f7372740072366e335f636c6f737572650072366e335f696e66 *6f0072366e335f656e7472790072366e355f636c6f7375726500733769485f636c6f7375726500 *733769485f696e666f007338556e5f696e666f007338556e5f72657400733769485f656e747279 *00733769625f73727400733769625f636c6f7375726500733769625f696e666f00733769625f65 *6e7472790072366e375f7372740072366e375f636c6f737572650072366e375f696e666f007236 *6e375f656e7472790072366e395f636c6f737572650073376a685f636c6f737572650073376a68 *5f696e666f007338556c5f696e666f007338556c5f7265740073376a685f656e74727900733769 *4c5f737274007337694c5f636c6f73757265007337694c5f696e666f007337694c5f656e747279 *0072366e625f7372740072366e625f636c6f737572650072366e625f696e666f0072366e625f65 *6e7472790072366e645f636c6f737572650073376a525f636c6f737572650073376a525f696e66 *6f007338556a5f696e666f007338556a5f7265740073376a525f656e7472790073376a6c5f7372 *740073376a6c5f636c6f737572650073376a6c5f696e666f0073376a6c5f656e7472790072366e *665f7372740072366e665f636c6f737572650072366e665f696e666f0072366e665f656e747279 *0072366e685f636c6f737572650073376b725f636c6f737572650073376b725f696e666f007338 *55685f696e666f00733855685f7265740073376b725f656e7472790073376a565f737274007337 *6a565f636c6f737572650073376a565f696e666f0073376a565f656e7472790072366e6a5f7372 *740072366e6a5f636c6f737572650072366e6a5f696e666f0072366e6a5f656e7472790072366e *6c5f636c6f737572650073376c335f636c6f737572650073376c335f696e666f00733855665f69 *6e666f00733855665f7265740073376c335f656e7472790073376b785f7372740073376b785f63 *6c6f737572650073376b785f696e666f0073376b785f656e7472790073376b765f737274007337 *6b765f636c6f737572650073376b765f696e666f0073376b765f656e7472790072366e6e5f7372 *740072366e6e5f636c6f737572650072366e6e5f696e666f0072366e6e5f656e7472790072366e *705f636c6f737572650073376c445f636c6f737572650073376c445f696e666f00733855645f69 *6e666f00733855645f7265740073376c445f656e7472790073376c375f7372740073376c375f63 *6c6f737572650073376c375f696e666f0073376c375f656e7472790072366e725f737274007236 *6e725f636c6f737572650072366e725f696e666f0072366e725f656e7472790072366e745f636c *6f737572650073376d6e5f636c6f737572650073376d6e5f696e666f00733855625f696e666f00 *733855625f7265740073376d6e5f656e7472790073376c525f7372740073376c525f636c6f7375 *72650073376c525f696e666f0073376c4e5f696e666f0073376c4e5f656e7472790073376c505f *696e666f0073376c505f656e7472790073376c525f656e7472790073376c4c5f7372740073376c *4c5f636c6f737572650073376c4c5f696e666f0073376c4a5f696e666f0073376c4a5f656e7472 *790073376c4c5f656e7472790073376c485f7372740073376c485f636c6f737572650073376c48 *5f696e666f0073376c485f656e7472790072366e765f7372740072366e765f636c6f7375726500 *72366e765f696e666f0072366e765f656e7472790072366e785f636c6f737572650073376e375f *636c6f737572650073376e375f696e666f00733855395f696e666f00733855395f726574007337 *6e375f656e7472790073376d425f7372740073376d425f636c6f737572650073376d425f696e66 *6f0073376d785f696e666f0073376d785f656e7472790073376d7a5f696e666f0073376d7a5f65 *6e7472790073376d425f656e7472790073376d765f7372740073376d765f636c6f737572650073 *376d765f696e666f0073376d745f696e666f0073376d745f656e7472790073376d765f656e7472 *790073376d725f7372740073376d725f636c6f737572650073376d725f696e666f0073376d725f *656e7472790072366e7a5f7372740072366e7a5f636c6f737572650072366e7a5f696e666f0072 *366e7a5f656e7472790072366e425f636c6f737572650073376e525f636c6f737572650073376e *525f696e666f00733855375f696e666f00733855375f7265740073376e525f656e747279007337 *6e6c5f7372740073376e6c5f636c6f737572650073376e6c5f696e666f0073376e685f696e666f *0073376e685f656e7472790073376e6a5f696e666f0073376e6a5f656e7472790073376e6c5f65 *6e7472790073376e665f7372740073376e665f636c6f737572650073376e665f696e666f007337 *6e645f696e666f0073376e645f656e7472790073376e665f656e7472790073376e625f73727400 *73376e625f636c6f737572650073376e625f696e666f0073376e625f656e7472790072366e445f *7372740072366e445f636c6f737572650072366e445f696e666f0072366e445f656e7472790072 *366e465f636c6f737572650073376f745f636c6f737572650073376f745f696e666f0073385535 *5f696e666f00733855355f7265740073376f745f656e7472790073376e585f7372740073376e58 *5f636c6f737572650073376e585f696e666f0073376e585f656e7472790073376e565f73727400 *73376e565f636c6f737572650073376e565f696e666f0073376e565f656e7472790072366e485f *7372740072366e485f636c6f737572650072366e485f696e666f0072366e485f656e7472790072 *366e4a5f636c6f7375726500733854595f315f616c74007338545a5f696e666f007338545a5f72 *657400733854595f325f616c7400733854595f7674626c0073376f565f696e666f0073376f565f *656e7472790073376f5a5f696e666f0073376f5a5f656e747279007337706f5f696e666f007337 *706f5f656e74727900733770685f696e666f00733770685f656e74727900733770635f696e666f *00733770635f656e74727900733770655f696e666f00733770655f656e747279007337706a5f69 *6e666f007337706a5f656e747279007337706c5f696e666f007337706c5f656e74727900733855 *335f696e666f00733855335f72657400733770715f696e666f00733770715f656e747279007337 *70745f696e666f00733770745f656e74727900733770765f696e666f00733770765f656e747279 *00733855345f315f616c7400733855345f325f616c7400733855345f7674626c00733770355f69 *6e666f00733770355f656e74727900733770785f696e666f00733770785f656e74727900733854 *585f696e666f00733854585f72657400733770455f696e666f00733770455f656e747279007337 *71725f696e666f00733771725f656e74727900733854465f315f616c74007337705a5f696e666f *007337705a5f656e74727900733770585f696e666f00733770585f656e747279007337716e5f69 *6e666f007337716e5f656e747279007338544a5f315f616c74007337716a5f696e666f00733771 *6a5f656e74727900733771385f696e666f00733771385f656e74727900733771625f696e666f00 *733771625f656e747279007338544b5f696e666f007338544b5f726574007338544a5f325f616c *74007338544a5f7674626c00733854485f696e666f00733854485f72657400733854475f696e66 *6f00733854475f72657400733854465f325f616c7400733854465f7674626c00733771745f696e *666f00733771745f656e74727900733771475f696e666f00733771475f656e7472790073377271 *5f315f616c7400733772795f696e666f00733772795f656e74727900733772735f696e666f0073 *3772735f656e747279007337726a5f315f616c74007337726f5f696e666f007337726f5f656e74 *727900733772685f696e666f00733772685f656e747279007337726a5f325f616c74007337726a *5f7674626c00733772415f696e666f00733772415f656e74727900733772365f315f616c740073 *3772315f696e666f00733772315f656e747279007337715a5f696e666f007337715a5f656e7472 *7900733854575f315f616c7400733772355f696e666f00733772355f656e74727900733772385f *696e666f00733772385f656e74727900733854575f325f616c7400733854575f7674626c007338 *54555f696e666f00733854555f72657400733854525f696e666f00733854525f72657400733772 *365f325f616c7400733772365f7674626c00733772615f696e666f00733772615f656e74727900 *733772715f325f616c7400733772715f7674626c00733772435f696e666f00733772435f656e74 *727900733771425f696e666f00733771425f656e747279007338544e5f696e666f007338544e5f *72657400733853595f315f616c74007338535a5f696e666f007338535a5f72657400733853595f *325f616c7400733853595f7674626c00733773335f696e666f00733773335f656e747279007337 *73375f696e666f00733773375f656e74727900733773555f696e666f00733773555f656e747279 *007337734a5f696e666f007337734a5f656e747279007337734c5f696e666f007337734c5f656e *74727900733773575f696e666f00733773575f656e74727900733774695f696e666f0073377469 *5f656e747279007337746b5f696e666f007337746b5f656e74727900733854435f315f616c7400 *733854435f325f616c7400733854435f7674626c007338546d5f696e666f007338546d5f726574 *00733773445f696e666f00733773445f656e74727900733773615f696e666f00733773615f656e *74727900733773465f696e666f00733773465f656e747279007337746d5f696e666f007337746d *5f656e74727900733774745f696e666f00733774745f656e74727900733852535f315f616c7400 *733852575f315f616c7400733774565f656e74727900733852575f325f616c7400733852575f76 *74626c00733852555f696e666f00733852555f72657400733852545f696e666f00733852545f72 *657400733852535f325f616c7400733852535f7674626c00733774565f696e666f00733853325f *696e666f00733853325f72657400733776315f696e666f00733776315f656e7472790073377634 *5f696e666f00733776345f656e74727900733775525f696e666f00733775525f656e7472790073 *38525a5f696e666f007338525a5f72657400733852595f696e666f00733852595f726574007338 *52585f315f616c7400733853645f315f616c7400733775755f656e74727900733853645f325f61 *6c7400733853645f7674626c00733853625f696e666f00733853625f72657400733853615f696e *666f00733853615f72657400733853375f696e666f00733853375f72657400733852585f325f61 *6c7400733852585f7674626c00733775755f696e666f00733776565f7372746400733776705f73 *72746400733776625f64666c7400733776625f7674626c00733776705f315f616c740073385366 *5f73727464007337766b5f696e666f007337766b5f656e74727900733853675f73727464007337 *76525f696e666f00733776525f656e747279007337764c5f696e666f007337764c5f656e747279 *00733776545f696e666f00733776545f656e747279007337764a5f696e666f007337764a5f656e *74727900733853675f315f616c74007337766f5f696e666f007337766f5f656e74727900733853 *685f7372746400733776435f696e666f00733776435f656e74727900733776455f696e666f0073 *3776455f656e747279007337767a5f696e666f007337767a5f656e74727900733776475f696e66 *6f00733776475f656e74727900733853685f315f616c7400733776785f696e666f00733776785f *656e74727900733853695f696e666f00733853695f72657400733853685f325f616c7400733853 *685f7674626c00733853675f325f616c7400733853675f7674626c00733853665f696e666f0073 *3853665f72657400733776705f325f616c7400733776705f7674626c00733776565f696e666f00 *733776565f656e74727900733777565f696e666f00733777565f656e74727900733853495f696e *666f00733853495f72657400733778515f696e666f00733778515f656e74727900733853475f69 *6e666f00733853475f72657400733778565f696e666f00733778565f656e74727900733778595f *696e666f00733778595f656e74727900733778645f696e666f00733778645f656e747279007338 *53445f696e666f00733853445f726574007338536d5f696e666f007338536d5f72657400733853 *6c5f315f616c7400733853535f315f616c7400733777755f656e74727900733853535f325f616c *7400733853535f7674626c00733853515f696e666f00733853515f72657400733853505f696e66 *6f00733853505f726574007338534d5f696e666f007338534d5f726574007338536c5f325f616c *74007338536c5f7674626c00733777755f696e666f00733779635f696e666f00733779635f656e *74727900733853565f315f616c7400733853575f696e666f00733853575f726574007337795a5f *696e666f007337795a5f656e7472790073377a325f696e666f0073377a325f656e747279007337 *796f5f696e666f007337796f5f656e7472790073377a355f696e666f0073377a355f656e747279 *00733779685f696e666f00733779685f656e747279007337796b5f696e666f007337796b5f656e *74727900733853565f325f616c7400733853565f7674626c0073377a375f696e666f0073377a37 *5f656e74727900733779375f696e666f00733779375f656e74727900733853545f696e666f0073 *3853545f7265740072366e4c5f7372740072366e4c5f636c6f737572650072366e4c5f696e666f *0073377a735f696e666f0073377a735f656e7472790073377a6b5f696e666f0073377a6b5f656e *7472790073377a6e5f696e666f0073377a6e5f656e7472790073377a705f696e666f0073377a70 *5f656e74727900733852505f696e666f00733852505f7265740072366e4c5f656e747279007338 *50635f696e666f00733850635f726574007337444b5f696e666f007337444b5f656e7472790073 *3744595f696e666f00733744595f656e74727900733745305f696e666f00733745305f656e7472 *7900733743315f696e666f00733743315f656e74727900733743335f696e666f00733743335f72 *6574007338504c5f696e666f007338504c5f72657400733744775f696e666f00733744775f656e *74727900733744795f696e666f00733744795f656e74727900733744365f696e666f0073374436 *5f656e74727900733851335f315f616c7400733851335f325f616c7400733851335f7674626c00 *733850755f315f616c74007338516b5f315f616c74007338516b5f325f616c74007338516b5f76 *74626c00733850755f325f616c7400733850755f7674626c00733744425f696e666f0073374442 *5f656e74727900733745335f696e666f00733745335f656e74727900733742525f696e666f0073 *3742525f656e74727900733742765f696e666f00733742765f656e74727900733851525f315f61 *6c7400733742555f696e666f00733742555f656e74727900733851525f325f616c740073385152 *5f7674626c00733742575f696e666f00733742575f656e74727900733745355f696e666f007337 *45355f656e74727900733852615f696e666f00733852615f72657400733852385f696e666f0073 *3852385f72657400733851535f696e666f00733851535f72657400733742315f696e666f007337 *42315f656e74727900733742335f696e666f00733742335f656e74727900733852735f696e666f *00733852735f72657400733852635f696e666f00733852635f72657400733741785f696e666f00 *733741785f656e747279007337417a5f696e666f007337417a5f656e74727900733852755f315f *616c7400733742365f696e666f00733742365f656e74727900733852755f325f616c7400733852 *755f7674626c00733742385f696e666f00733742385f656e74727900733745375f696e666f0073 *3745375f656e747279007338524c5f315f616c74007338524f5f315f616c7400733741355f696e *666f00733741355f656e747279007338524f5f325f616c74007338524f5f7674626c007338524c *5f325f616c74007338524c5f7674626c00733852765f696e666f00733852765f72657400733741 *385f696e666f00733741385f656e74727900733850395f696e666f00733850395f726574007236 *6e4e5f7372740072366e4e5f636c6f737572650072366e4e5f696e666f00733745755f696e666f *00733745755f656e74727900733850375f696e666f00733850375f72657400733745715f696e66 *6f00733745715f656e74727900733850365f696e666f00733850365f72657400733850355f696e *666f00733850355f7265740072366e4e5f656e7472790072366e505f7372740072366e505f636c *6f737572650072366e505f696e666f00733745425f696e666f00733745425f656e747279007236 *6e505f656e7472790072366e535f7372740072366e535f636c6f737572650072366e535f696e66 *6f0072366e535f656e7472790072366e555f7372740072366e555f636c6f737572650072366e55 *5f696e666f00733746635f696e666f00733746635f656e74727900733850315f696e666f007338 *50315f72657400733746365f696e666f00733746365f656e74727900733850335f696e666f0073 *3850335f72657400733745595f696e666f00733745595f656e74727900733746385f696e666f00 *733746385f656e74727900733850305f696e666f00733850305f7265740073384f5a5f696e666f *0073384f5a5f7265740072366e555f656e7472790072366e575f7372740072366e575f636c6f73 *7572650072366e575f696e666f007337466a5f696e666f007337466a5f656e7472790072366e57 *5f656e7472790072366f305f7372740072366f325f7372740072366f345f7372740072366f305f *636c6f737572650072366f325f636c6f737572650072366f345f636c6f737572650072366f305f *696e666f0072366f305f656e7472790072366f325f696e666f0072366f325f656e747279007236 *6f345f696e666f0072366f345f656e74727900733749775f73727400733749775f636c6f737572 *6500733749775f696e666f00733746415f696e666f00733746415f656e74727900733746445f69 *6e666f00733746445f72657400733746495f696e666f00733746495f656e7472790073384f6c5f *315f616c74007337464f5f696e666f007337464f5f656e74727900733746515f696e666f007337 *46515f7265740073384f6e5f315f616c7400733747615f696e666f00733747615f656e74727900 *733747635f696e666f00733747635f72657400733747685f696e666f00733747685f656e747279 *0073384f735f315f616c74007337476e5f696e666f007337476e5f656e74727900733747705f69 *6e666f00733747705f7265740073384f755f315f616c74007337474d5f696e666f007337474d5f *656e747279007337474f5f696e666f007337474f5f7265740073384f7a5f315f616c7400733748 *385f696e666f00733748385f656e74727900733748615f696e666f00733748615f726574007337 *48665f696e666f00733748665f656e7472790073384f455f315f616c74007337486c5f696e666f *007337486c5f656e747279007337486e5f696e666f007337486e5f7265740073384f475f315f61 *6c74007337484b5f696e666f007337484b5f656e747279007337484d5f696e666f007337484d5f *7265740073384f4c5f315f616c740073384f4f5f315f616c740073384f4f5f325f616c74007338 *4f4f5f7674626c0073384f4d5f696e666f0073384f4d5f7265740073384f4c5f325f616c740073 *384f4c5f7674626c0073384f4b5f335f616c740073384f4b5f64666c740073384f4b5f7674626c *00733749395f696e666f00733749395f656e74727900733749635f696e666f00733749635f656e *74727900733748465f696e666f00733748465f656e7472790073384f4a5f315f616c740073384f *4a5f325f616c740073384f4a5f7674626c0073384f485f696e666f0073384f485f726574007338 *4f475f325f616c740073384f475f7674626c0073384f465f335f616c740073384f465f64666c74 *0073384f465f7674626c00733749655f696e666f00733749655f656e7472790073384f455f325f *616c740073384f455f7674626c0073384f445f345f616c740073384f445f64666c740073384f44 *5f7674626c00733749675f696e666f00733749675f656e7472790073384f435f315f616c740073 *384f435f325f616c740073384f435f7674626c0073384f415f696e666f0073384f415f72657400 *73384f7a5f325f616c740073384f7a5f7674626c0073384f795f335f616c740073384f795f6466 *6c740073384f795f7674626c00733749695f696e666f00733749695f656e747279007337496b5f *696e666f007337496b5f656e74727900733747485f696e666f00733747485f656e747279007338 *4f785f315f616c740073384f785f325f616c740073384f785f7674626c0073384f765f696e666f *0073384f765f7265740073384f755f325f616c740073384f755f7674626c0073384f745f335f61 *6c740073384f745f64666c740073384f745f7674626c007337496d5f696e666f007337496d5f65 *6e7472790073384f735f325f616c740073384f735f7674626c0073384f725f345f616c74007338 *4f725f64666c740073384f725f7674626c007337496f5f696e666f007337496f5f656e74727900 *73384f715f315f616c740073384f715f325f616c740073384f715f7674626c0073384f6f5f696e *666f0073384f6f5f7265740073384f6e5f325f616c740073384f6e5f7674626c0073384f6d5f33 *5f616c740073384f6d5f64666c740073384f6d5f7674626c00733749715f696e666f0073374971 *5f656e7472790073384f6c5f325f616c740073384f6c5f7674626c0073384f6b5f345f616c7400 *73384f6b5f64666c740073384f6b5f7674626c00733749735f696e666f00733749735f656e7472 *790073384f695f696e666f0073384f695f72657400733749755f696e666f00733749755f656e74 *727900733749775f656e7472790072366f365f7372740072366f365f636c6f737572650072366f *365f696e666f0072366f365f656e7472790072366f395f7372740072366f625f7372740072366f *645f7372740072366f395f636c6f737572650072366f625f636c6f737572650072366f645f636c *6f737572650072366f395f696e666f0072366f395f656e7472790072366f625f696e666f007236 *6f625f656e7472790072366f645f696e666f0072366f645f656e7472790072366f665f73727400 *72366f665f636c6f737572650072366f665f696e666f0072366f665f656e7472790072366f685f *7372740072366f685f636c6f737572650072366f685f696e666f00733935695f696e666f007339 *35695f7265740072366f685f656e7472790073374d585f7372740073374d585f636c6f73757265 *0073374d585f696e666f00733749555f696e666f00733749555f656e74727900733749585f696e *666f00733749585f7265740073374a325f696e666f0073374a325f656e7472790073384e6f5f31 *5f616c740073374a385f696e666f0073374a385f656e7472790073374a615f696e666f0073374a *615f7265740073384e715f315f616c740073374a755f696e666f0073374a755f656e7472790073 *374a775f696e666f0073374a775f7265740073374a425f696e666f0073374a425f656e74727900 *73384e765f315f616c740073374a485f696e666f0073374a485f656e7472790073374a4a5f696e *666f0073374a4a5f7265740073384e785f315f616c740073374b365f696e666f0073374b365f65 *6e7472790073374b385f696e666f0073374b385f7265740073384e435f315f616c740073374b73 *5f696e666f0073374b735f656e7472790073374b755f696e666f0073374b755f7265740073374b *7a5f696e666f0073374b7a5f656e7472790073384e485f315f616c740073374b465f696e666f00 *73374b465f656e7472790073374b485f696e666f0073374b485f7265740073384e4a5f315f616c *740073374c345f696e666f0073374c345f656e7472790073374c365f696e666f0073374c365f72 *65740073384e4f5f315f616c740073374c715f696e666f0073374c715f656e7472790073374c73 *5f696e666f0073374c735f7265740073374c785f696e666f0073374c785f656e7472790073384e *545f315f616c740073374c445f696e666f0073374c445f656e7472790073374c465f696e666f00 *73374c465f7265740073384e565f315f616c740073374d325f696e666f0073374d325f656e7472 *790073374d345f696e666f0073374d345f7265740073384f305f315f616c740073384f335f315f *616c740073384f335f325f616c740073384f335f7674626c0073384f315f696e666f0073384f31 *5f7265740073384f305f325f616c740073384f305f7674626c0073384e5a5f335f616c74007338 *4e5a5f64666c740073384e5a5f7674626c0073374d735f696e666f0073374d735f656e74727900 *73374d765f696e666f0073374d765f656e7472790073374c585f696e666f0073374c585f656e74 *72790073384e595f315f616c740073384e595f325f616c740073384e595f7674626c0073384e57 *5f696e666f0073384e575f7265740073384e565f325f616c740073384e565f7674626c0073384e *555f335f616c740073384e555f64666c740073384e555f7674626c0073374d785f696e666f0073 *374d785f656e7472790073384e545f325f616c740073384e545f7674626c0073384e535f345f61 *6c740073384e535f64666c740073384e535f7674626c0073374d7a5f696e666f0073374d7a5f65 *6e7472790073384e525f315f616c740073384e525f325f616c740073384e525f7674626c007338 *4e505f696e666f0073384e505f7265740073384e4f5f325f616c740073384e4f5f7674626c0073 *384e4e5f335f616c740073384e4e5f64666c740073384e4e5f7674626c0073374d425f696e666f *0073374d425f656e7472790073374d445f696e666f0073374d445f656e7472790073374b5a5f69 *6e666f0073374b5a5f656e7472790073384e4d5f315f616c740073384e4d5f325f616c74007338 *4e4d5f7674626c0073384e4b5f696e666f0073384e4b5f7265740073384e4a5f325f616c740073 *384e4a5f7674626c0073384e495f335f616c740073384e495f64666c740073384e495f7674626c *0073374d465f696e666f0073374d465f656e7472790073384e485f325f616c740073384e485f76 *74626c0073384e475f345f616c740073384e475f64666c740073384e475f7674626c0073374d48 *5f696e666f0073374d485f656e7472790073384e465f315f616c740073384e465f325f616c7400 *73384e465f7674626c0073384e445f696e666f0073384e445f7265740073384e435f325f616c74 *0073384e435f7674626c0073384e425f335f616c740073384e425f64666c740073384e425f7674 *626c0073374d4a5f696e666f0073374d4a5f656e7472790073374d4c5f696e666f0073374d4c5f *656e7472790073374b315f696e666f0073374b315f656e7472790073384e415f315f616c740073 *384e415f325f616c740073384e415f7674626c0073384e795f696e666f0073384e795f72657400 *73384e785f325f616c740073384e785f7674626c0073384e775f335f616c740073384e775f6466 *6c740073384e775f7674626c0073374d4e5f696e666f0073374d4e5f656e7472790073384e765f *325f616c740073384e765f7674626c0073384e755f345f616c740073384e755f64666c74007338 *4e755f7674626c0073374d505f696e666f0073374d505f656e7472790073384e745f315f616c74 *0073384e745f325f616c740073384e745f7674626c0073384e725f696e666f0073384e725f7265 *740073384e715f325f616c740073384e715f7674626c0073384e705f335f616c740073384e705f *64666c740073384e705f7674626c0073374d525f696e666f0073374d525f656e7472790073384e *6f5f325f616c740073384e6f5f7674626c0073384e6e5f345f616c740073384e6e5f64666c7400 *73384e6e5f7674626c0073374d545f696e666f0073374d545f656e7472790073384e6c5f696e66 *6f0073384e6c5f7265740073374d565f696e666f0073374d565f656e7472790073374d585f656e *7472790072366f6a5f7372740072366f6a5f636c6f737572650072366f6a5f696e666f0072366f *6a5f656e7472790072366f6d5f7372740072366f6d5f636c6f737572650072366f6d5f696e666f *0072366f6d5f656e7472790072366f6f5f7372740072366f6f5f636c6f737572650072366f6f5f *696e666f0073374e575f696e666f0073374e575f656e7472790073374e515f696e666f0073374e *515f656e7472790073374e595f696e666f0073374e595f656e7472790073374e4a5f696e666f00 *73374e4a5f656e7472790073374e4c5f696e666f0073374e4c5f656e7472790073374f305f696e *666f0073374f305f656e7472790073374e465f696e666f0073374e465f656e7472790073374e48 *5f696e666f0073374e485f656e7472790073374f325f696e666f0073374f325f656e7472790073 *384e615f696e666f0073384e615f7265740073374e445f696e666f0073374e445f656e74727900 *73374f345f696e666f0073374f345f656e7472790073374e725f696e666f0073374e725f656e74 *72790073374e745f696e666f0073374e745f656e7472790073374f365f696e666f0073374f365f *656e7472790073374e6e5f696e666f0073374e6e5f656e7472790073374e705f696e666f007337 *4e705f656e7472790073374f385f696e666f0073374f385f656e7472790073384e645f696e666f *0073384e645f7265740073374e6c5f696e666f0073374e6c5f656e7472790073384e395f696e66 *6f0073384e395f7265740072366f6f5f656e7472790073374f625f636c6f737572650073374f64 *5f7372740073374f645f636c6f737572650073374f645f696e666f0073374f645f656e74727900 *72366f715f7372740072366f715f636c6f737572650072366f715f696e666f0072366f715f656e *7472790072366f745f7372740072366f745f636c6f737572650072366f745f696e666f0072366f *745f656e7472790072366f765f7372740072366f765f636c6f737572650072366f765f696e666f *0072366f765f656e7472790072366f785f7372740072366f785f636c6f737572650072366f785f *696e666f00733750775f696e666f00733750775f656e74727900733750715f696e666f00733750 *715f656e74727900733750795f696e666f00733750795f656e747279007337506a5f696e666f00 *7337506a5f656e747279007337506c5f696e666f007337506c5f656e74727900733750415f696e *666f00733750415f656e74727900733750665f696e666f00733750665f656e7472790073375068 *5f696e666f00733750685f656e74727900733750435f696e666f00733750435f656e7472790073 *384d565f696e666f0073384d565f72657400733750645f696e666f00733750645f656e74727900 *733750455f696e666f00733750455f656e74727900733750315f696e666f00733750315f656e74 *727900733750335f696e666f00733750335f656e74727900733750475f696e666f00733750475f *656e7472790073374f585f696e666f0073374f585f656e7472790073374f5a5f696e666f007337 *4f5a5f656e74727900733750495f696e666f00733750495f656e7472790073384d595f696e666f *0073384d595f7265740073374f565f696e666f0073374f565f656e747279007337504b5f696e66 *6f007337504b5f656e7472790073374f4a5f696e666f0073374f4a5f656e7472790073374f4c5f *696e666f0073374f4c5f656e747279007337504d5f696e666f007337504d5f656e747279007337 *4f465f696e666f0073374f465f656e7472790073374f485f696e666f0073374f485f656e747279 *007337504f5f696e666f007337504f5f656e7472790073384e315f696e666f0073384e315f7265 *740073374f445f696e666f0073374f445f656e7472790073384d555f696e666f0073384d555f72 *65740072366f785f656e74727900733750525f636c6f7375726500733750545f73727400733750 *545f636c6f7375726500733750545f696e666f00733750545f656e7472790072366f7a5f737274 *0072366f7a5f636c6f737572650072366f7a5f696e666f0072366f7a5f656e7472790072366f42 *5f7372740072366f425f636c6f737572650072366f425f696e666f0072366f425f656e74727900 *72366f445f7372740072366f445f636c6f737572650072366f445f696e666f0073384d6f5f696e *666f0073384d6f5f72657400733754335f696e666f00733754335f656e7472790073384d715f69 *6e666f0073384d715f72657400733753545f696e666f00733753545f656e7472790073384d735f *696e666f0073384d735f726574007337534a5f696e666f007337534a5f656e7472790073384d75 *5f696e666f0073384d755f726574007337537a5f696e666f007337537a5f656e7472790073384d *775f696e666f0073384d775f72657400733753705f696e666f00733753705f656e747279007338 *4d795f696e666f0073384d795f72657400733753665f696e666f00733753665f656e7472790073 *384d415f696e666f0073384d415f72657400733753355f696e666f00733753355f656e74727900 *73384d435f696e666f0073384d435f72657400733752565f696e666f00733752565f656e747279 *0073384d455f696e666f0073384d455f726574007337524c5f696e666f007337524c5f656e7472 *790073384d475f696e666f0073384d475f72657400733752425f696e666f00733752425f656e74 *72790073384d495f696e666f0073384d495f72657400733752725f696e666f00733752725f656e *7472790073384d4b5f696e666f0073384d4b5f72657400733752685f696e666f00733752685f65 *6e7472790073384d4d5f696e666f0073384d4d5f72657400733752375f696e666f00733752375f *656e7472790073384d4f5f696e666f0073384d4f5f72657400733751585f696e666f0073375158 *5f656e7472790073384d515f696e666f0073384d515f726574007337514e5f696e666f00733751 *4e5f656e7472790073384d535f696e666f0073384d535f72657400733751465f696e666f007337 *51465f656e74727900733751505f696e666f00733751505f656e747279007337515a5f696e666f *007337515a5f656e74727900733752395f696e666f00733752395f656e747279007337526a5f69 *6e666f007337526a5f656e74727900733752745f696e666f00733752745f656e74727900733752 *445f696e666f00733752445f656e747279007337524e5f696e666f007337524e5f656e74727900 *733752585f696e666f00733752585f656e74727900733753375f696e666f00733753375f656e74 *727900733753685f696e666f00733753685f656e74727900733753725f696e666f00733753725f *656e74727900733753425f696e666f00733753425f656e747279007337534c5f696e666f007337 *534c5f656e74727900733753565f696e666f00733753565f656e7472790073384d6e5f696e666f *0073384d6e5f7265740073384d6d5f696e666f0073384d6d5f7265740072366f445f656e747279 *0072366f465f7372740072366f465f636c6f737572650072366f465f696e666f00733754615f69 *6e666f00733754615f656e7472790072366f465f656e7472790072366f4a5f7372740072366f4c *5f7372740072366f4e5f7372740072366f4a5f636c6f737572650072366f4c5f636c6f73757265 *0072366f4e5f636c6f737572650072366f4a5f696e666f0072366f4a5f656e7472790072366f4c *5f696e666f0072366f4c5f656e7472790072366f4e5f696e666f0072366f4e5f656e7472790072 *366f505f7372740072366f505f636c6f737572650072366f505f696e666f0072366f505f656e74 *72790072366f525f7372740072366f525f636c6f737572650072366f525f696e666f0073393565 *5f696e666f00733935655f7265740072366f525f656e74727900733863355f7372740073386335 *5f636c6f7375726500733863355f696e666f007337547a5f696e666f007337547a5f656e747279 *00733754435f696e666f00733754435f72657400733754485f696e666f00733754485f656e7472 *7900733849365f315f616c74007337544e5f696e666f007337544e5f656e74727900733754505f *696e666f00733754505f72657400733849385f315f616c7400733755395f696e666f0073375539 *5f656e74727900733755625f696e666f00733755625f72657400733755675f696e666f00733755 *675f656e74727900733849645f315f616c74007337556d5f696e666f007337556d5f656e747279 *007337556f5f696e666f007337556f5f72657400733849665f315f616c74007337554c5f696e66 *6f007337554c5f656e747279007337554e5f696e666f007337554e5f726574007338496b5f315f *616c7400733756375f696e666f00733756375f656e74727900733756395f696e666f0073375639 *5f72657400733756655f696e666f00733756655f656e74727900733849705f315f616c74007337 *566b5f696e666f007337566b5f656e747279007337566d5f696e666f007337566d5f7265740073 *3849725f315f616c74007337564a5f696e666f007337564a5f656e747279007337564c5f696e66 *6f007337564c5f72657400733849775f315f616c7400733757355f696e666f00733757355f656e *74727900733757375f696e666f00733757375f72657400733757635f696e666f00733757635f65 *6e74727900733849425f315f616c7400733757695f696e666f00733757695f656e747279007337 *576b5f696e666f007337576b5f72657400733849445f315f616c7400733757485f696e666f0073 *3757485f656e747279007337574a5f696e666f007337574a5f72657400733849495f315f616c74 *00733758335f696e666f00733758335f656e74727900733758355f696e666f00733758355f7265 *7400733758615f696e666f00733758615f656e747279007338494e5f315f616c7400733758675f *696e666f00733758675f656e74727900733758695f696e666f00733758695f7265740073384950 *5f315f616c7400733758465f696e666f00733758465f656e74727900733758485f696e666f0073 *3758485f72657400733849555f315f616c7400733759315f696e666f00733759315f656e747279 *00733759335f696e666f00733759335f72657400733759385f696e666f00733759385f656e7472 *79007338495a5f315f616c7400733759655f696e666f00733759655f656e74727900733759675f *696e666f00733759675f7265740073384a315f315f616c7400733759445f696e666f0073375944 *5f656e74727900733759465f696e666f00733759465f7265740073384a365f315f616c74007337 *595a5f696e666f007337595a5f656e7472790073375a315f696e666f0073375a315f7265740073 *375a365f696e666f0073375a365f656e7472790073384a625f315f616c740073375a635f696e66 *6f0073375a635f656e7472790073375a655f696e666f0073375a655f7265740073384a645f315f *616c740073375a425f696e666f0073375a425f656e7472790073375a445f696e666f0073375a44 *5f7265740073384a695f315f616c740073375a585f696e666f0073375a585f656e747279007337 *5a5a5f696e666f0073375a5a5f72657400733830345f696e666f00733830345f656e7472790073 *384a6e5f315f616c7400733830615f696e666f00733830615f656e74727900733830635f696e66 *6f00733830635f7265740073384a705f315f616c74007338307a5f696e666f007338307a5f656e *74727900733830425f696e666f00733830425f7265740073384a755f315f616c7400733830565f *696e666f00733830565f656e74727900733830585f696e666f00733830585f7265740073383132 *5f696e666f00733831325f656e7472790073384a7a5f315f616c7400733831385f696e666f0073 *3831385f656e74727900733831615f696e666f00733831615f7265740073384a425f315f616c74 *00733831785f696e666f00733831785f656e747279007338317a5f696e666f007338317a5f7265 *740073384a475f315f616c7400733831545f696e666f00733831545f656e74727900733831565f *696e666f00733831565f72657400733832305f696e666f00733832305f656e7472790073384a4c *5f315f616c7400733832365f696e666f00733832365f656e74727900733832385f696e666f0073 *3832385f7265740073384a4e5f315f616c7400733832765f696e666f00733832765f656e747279 *00733832785f696e666f00733832785f7265740073384a535f315f616c7400733832525f696e66 *6f00733832525f656e74727900733832545f696e666f00733832545f72657400733832595f696e *666f00733832595f656e7472790073384a585f315f616c7400733833345f696e666f0073383334 *5f656e74727900733833365f696e666f00733833365f7265740073384a5a5f315f616c74007338 *33745f696e666f00733833745f656e74727900733833765f696e666f00733833765f7265740073 *384b345f315f616c7400733833505f696e666f00733833505f656e74727900733833525f696e66 *6f00733833525f72657400733833575f696e666f00733833575f656e7472790073384b395f315f *616c7400733834325f696e666f00733834325f656e74727900733834345f696e666f0073383434 *5f7265740073384b625f315f616c7400733834725f696e666f00733834725f656e747279007338 *34745f696e666f00733834745f7265740073384b675f315f616c74007338344e5f696e666f0073 *38344e5f656e74727900733834505f696e666f00733834505f72657400733834555f696e666f00 *733834555f656e7472790073384b6c5f315f616c7400733835305f696e666f00733835305f656e *74727900733835325f696e666f00733835325f7265740073384b6e5f315f616c7400733835705f *696e666f00733835705f656e74727900733835725f696e666f00733835725f7265740073384b73 *5f315f616c74007338354c5f696e666f007338354c5f656e747279007338354e5f696e666f0073 *38354e5f72657400733835535f696e666f00733835535f656e7472790073384b785f315f616c74 *00733835595f696e666f00733835595f656e74727900733836305f696e666f00733836305f7265 *740073384b7a5f315f616c74007338366e5f696e666f007338366e5f656e74727900733836705f *696e666f00733836705f7265740073384b455f315f616c74007338364a5f696e666f007338364a *5f656e747279007338364c5f696e666f007338364c5f72657400733836515f696e666f00733836 *515f656e7472790073384b4a5f315f616c7400733836575f696e666f00733836575f656e747279 *00733836595f696e666f00733836595f7265740073384b4c5f315f616c74007338376c5f696e66 *6f007338376c5f656e747279007338376e5f696e666f007338376e5f7265740073384b515f315f *616c7400733837485f696e666f00733837485f656e747279007338374a5f696e666f007338374a *5f726574007338374f5f696e666f007338374f5f656e7472790073384b565f315f616c74007338 *37555f696e666f00733837555f656e74727900733837575f696e666f00733837575f7265740073 *384b585f315f616c74007338386a5f696e666f007338386a5f656e747279007338386c5f696e66 *6f007338386c5f7265740073384c325f315f616c7400733838465f696e666f00733838465f656e *74727900733838485f696e666f00733838485f726574007338384d5f696e666f007338384d5f65 *6e7472790073384c375f315f616c7400733838535f696e666f00733838535f656e747279007338 *38555f696e666f00733838555f7265740073384c395f315f616c7400733839685f696e666f0073 *3839685f656e747279007338396a5f696e666f007338396a5f7265740073384c655f315f616c74 *0073384c685f315f616c740073384c685f325f616c740073384c685f7674626c0073384c665f69 *6e666f0073384c665f7265740073384c655f325f616c740073384c655f7674626c0073384c645f *335f616c740073384c645f64666c740073384c645f7674626c00733839555f696e666f00733839 *555f656e74727900733839585f696e666f00733839585f656e74727900733839635f696e666f00 *733839635f656e7472790073384c635f315f616c740073384c635f325f616c740073384c635f76 *74626c0073384c615f696e666f0073384c615f7265740073384c395f325f616c740073384c395f *7674626c0073384c385f335f616c740073384c385f64666c740073384c385f7674626c00733839 *5a5f696e666f007338395a5f656e7472790073384c375f325f616c740073384c375f7674626c00 *73384c365f345f616c740073384c365f64666c740073384c365f7674626c00733861315f696e66 *6f00733861315f656e7472790073384c355f315f616c740073384c355f325f616c740073384c35 *5f7674626c0073384c335f696e666f0073384c335f7265740073384c325f325f616c740073384c *325f7674626c0073384c315f335f616c740073384c315f64666c740073384c315f7674626c0073 *3861335f696e666f00733861335f656e74727900733861355f696e666f00733861355f656e7472 *7900733838655f696e666f00733838655f656e7472790073384c305f315f616c740073384c305f *325f616c740073384c305f7674626c0073384b595f696e666f0073384b595f7265740073384b58 *5f325f616c740073384b585f7674626c0073384b575f335f616c740073384b575f64666c740073 *384b575f7674626c00733861375f696e666f00733861375f656e7472790073384b565f325f616c *740073384b565f7674626c0073384b555f345f616c740073384b555f64666c740073384b555f76 *74626c00733861395f696e666f00733861395f656e7472790073384b545f315f616c740073384b *545f325f616c740073384b545f7674626c0073384b525f696e666f0073384b525f726574007338 *4b515f325f616c740073384b515f7674626c0073384b505f335f616c740073384b505f64666c74 *0073384b505f7674626c00733861625f696e666f00733861625f656e74727900733861645f696e *666f00733861645f656e74727900733837675f696e666f00733837675f656e7472790073384b4f *5f315f616c740073384b4f5f325f616c740073384b4f5f7674626c0073384b4d5f696e666f0073 *384b4d5f7265740073384b4c5f325f616c740073384b4c5f7674626c0073384b4b5f335f616c74 *0073384b4b5f64666c740073384b4b5f7674626c00733861665f696e666f00733861665f656e74 *72790073384b4a5f325f616c740073384b4a5f7674626c0073384b495f345f616c740073384b49 *5f64666c740073384b495f7674626c00733861685f696e666f00733861685f656e747279007338 *4b485f315f616c740073384b485f325f616c740073384b485f7674626c0073384b465f696e666f *0073384b465f7265740073384b455f325f616c740073384b455f7674626c0073384b445f335f61 *6c740073384b445f64666c740073384b445f7674626c007338616a5f696e666f007338616a5f65 *6e747279007338616c5f696e666f007338616c5f656e74727900733836695f696e666f00733836 *695f656e7472790073384b435f315f616c740073384b435f325f616c740073384b435f7674626c *0073384b415f696e666f0073384b415f7265740073384b7a5f325f616c740073384b7a5f767462 *6c0073384b795f335f616c740073384b795f64666c740073384b795f7674626c007338616e5f69 *6e666f007338616e5f656e7472790073384b785f325f616c740073384b785f7674626c0073384b *775f345f616c740073384b775f64666c740073384b775f7674626c00733861705f696e666f0073 *3861705f656e7472790073384b765f315f616c740073384b765f325f616c740073384b765f7674 *626c0073384b745f696e666f0073384b745f7265740073384b735f325f616c740073384b735f76 *74626c0073384b725f335f616c740073384b725f64666c740073384b725f7674626c0073386172 *5f696e666f00733861725f656e74727900733861745f696e666f00733861745f656e7472790073 *38356b5f696e666f007338356b5f656e7472790073384b715f315f616c740073384b715f325f61 *6c740073384b715f7674626c0073384b6f5f696e666f0073384b6f5f7265740073384b6e5f325f *616c740073384b6e5f7674626c0073384b6d5f335f616c740073384b6d5f64666c740073384b6d *5f7674626c00733861765f696e666f00733861765f656e7472790073384b6c5f325f616c740073 *384b6c5f7674626c0073384b6b5f345f616c740073384b6b5f64666c740073384b6b5f7674626c *00733861785f696e666f00733861785f656e7472790073384b6a5f315f616c740073384b6a5f32 *5f616c740073384b6a5f7674626c0073384b685f696e666f0073384b685f7265740073384b675f *325f616c740073384b675f7674626c0073384b665f335f616c740073384b665f64666c74007338 *4b665f7674626c007338617a5f696e666f007338617a5f656e74727900733861425f696e666f00 *733861425f656e747279007338346d5f696e666f007338346d5f656e7472790073384b655f315f *616c740073384b655f325f616c740073384b655f7674626c0073384b635f696e666f0073384b63 *5f7265740073384b625f325f616c740073384b625f7674626c0073384b615f335f616c74007338 *4b615f64666c740073384b615f7674626c00733861445f696e666f00733861445f656e74727900 *73384b395f325f616c740073384b395f7674626c0073384b385f345f616c740073384b385f6466 *6c740073384b385f7674626c00733861465f696e666f00733861465f656e7472790073384b375f *315f616c740073384b375f325f616c740073384b375f7674626c0073384b355f696e666f007338 *4b355f7265740073384b345f325f616c740073384b345f7674626c0073384b335f335f616c7400 *73384b335f64666c740073384b335f7674626c00733861485f696e666f00733861485f656e7472 *79007338614a5f696e666f007338614a5f656e747279007338336f5f696e666f007338336f5f65 *6e7472790073384b325f315f616c740073384b325f325f616c740073384b325f7674626c007338 *4b305f696e666f0073384b305f7265740073384a5a5f325f616c740073384a5a5f7674626c0073 *384a595f335f616c740073384a595f64666c740073384a595f7674626c007338614c5f696e666f *007338614c5f656e7472790073384a585f325f616c740073384a585f7674626c0073384a575f34 *5f616c740073384a575f64666c740073384a575f7674626c007338614e5f696e666f007338614e *5f656e7472790073384a565f315f616c740073384a565f325f616c740073384a565f7674626c00 *73384a545f696e666f0073384a545f7265740073384a535f325f616c740073384a535f7674626c *0073384a525f335f616c740073384a525f64666c740073384a525f7674626c00733861505f696e *666f00733861505f656e74727900733861525f696e666f00733861525f656e7472790073383271 *5f696e666f00733832715f656e7472790073384a515f315f616c740073384a515f325f616c7400 *73384a515f7674626c0073384a4f5f696e666f0073384a4f5f7265740073384a4e5f325f616c74 *0073384a4e5f7674626c0073384a4d5f335f616c740073384a4d5f64666c740073384a4d5f7674 *626c00733861545f696e666f00733861545f656e7472790073384a4c5f325f616c740073384a4c *5f7674626c0073384a4b5f345f616c740073384a4b5f64666c740073384a4b5f7674626c007338 *61565f696e666f00733861565f656e7472790073384a4a5f315f616c740073384a4a5f325f616c *740073384a4a5f7674626c0073384a485f696e666f0073384a485f7265740073384a475f325f61 *6c740073384a475f7674626c0073384a465f335f616c740073384a465f64666c740073384a465f *7674626c00733861585f696e666f00733861585f656e747279007338615a5f696e666f00733861 *5a5f656e74727900733831735f696e666f00733831735f656e7472790073384a455f315f616c74 *0073384a455f325f616c740073384a455f7674626c0073384a435f696e666f0073384a435f7265 *740073384a425f325f616c740073384a425f7674626c0073384a415f335f616c740073384a415f *64666c740073384a415f7674626c00733862315f696e666f00733862315f656e7472790073384a *7a5f325f616c740073384a7a5f7674626c0073384a795f345f616c740073384a795f64666c7400 *73384a795f7674626c00733862335f696e666f00733862335f656e7472790073384a785f315f61 *6c740073384a785f325f616c740073384a785f7674626c0073384a765f696e666f0073384a765f *7265740073384a755f325f616c740073384a755f7674626c0073384a745f335f616c740073384a *745f64666c740073384a745f7674626c00733862355f696e666f00733862355f656e7472790073 *3862375f696e666f00733862375f656e74727900733830755f696e666f00733830755f656e7472 *790073384a735f315f616c740073384a735f325f616c740073384a735f7674626c0073384a715f *696e666f0073384a715f7265740073384a705f325f616c740073384a705f7674626c0073384a6f *5f335f616c740073384a6f5f64666c740073384a6f5f7674626c00733862395f696e666f007338 *62395f656e7472790073384a6e5f325f616c740073384a6e5f7674626c0073384a6d5f345f616c *740073384a6d5f64666c740073384a6d5f7674626c00733862625f696e666f00733862625f656e *7472790073384a6c5f315f616c740073384a6c5f325f616c740073384a6c5f7674626c0073384a *6a5f696e666f0073384a6a5f7265740073384a695f325f616c740073384a695f7674626c007338 *4a685f335f616c740073384a685f64666c740073384a685f7674626c00733862645f696e666f00 *733862645f656e74727900733862665f696e666f00733862665f656e7472790073375a775f696e *666f0073375a775f656e7472790073384a675f315f616c740073384a675f325f616c740073384a *675f7674626c0073384a655f696e666f0073384a655f7265740073384a645f325f616c74007338 *4a645f7674626c0073384a635f335f616c740073384a635f64666c740073384a635f7674626c00 *733862685f696e666f00733862685f656e7472790073384a625f325f616c740073384a625f7674 *626c0073384a615f345f616c740073384a615f64666c740073384a615f7674626c007338626a5f *696e666f007338626a5f656e7472790073384a395f315f616c740073384a395f325f616c740073 *384a395f7674626c0073384a375f696e666f0073384a375f7265740073384a365f325f616c7400 *73384a365f7674626c0073384a355f335f616c740073384a355f64666c740073384a355f767462 *6c007338626c5f696e666f007338626c5f656e747279007338626e5f696e666f007338626e5f65 *6e74727900733759795f696e666f00733759795f656e7472790073384a345f315f616c74007338 *4a345f325f616c740073384a345f7674626c0073384a325f696e666f0073384a325f7265740073 *384a315f325f616c740073384a315f7674626c0073384a305f335f616c740073384a305f64666c *740073384a305f7674626c00733862705f696e666f00733862705f656e747279007338495a5f32 *5f616c74007338495a5f7674626c00733849595f345f616c7400733849595f64666c7400733849 *595f7674626c00733862725f696e666f00733862725f656e74727900733849585f315f616c7400 *733849585f325f616c7400733849585f7674626c00733849565f696e666f00733849565f726574 *00733849555f325f616c7400733849555f7674626c00733849545f335f616c7400733849545f64 *666c7400733849545f7674626c00733862745f696e666f00733862745f656e7472790073386276 *5f696e666f00733862765f656e74727900733758415f696e666f00733758415f656e7472790073 *3849535f315f616c7400733849535f325f616c7400733849535f7674626c00733849515f696e66 *6f00733849515f72657400733849505f325f616c7400733849505f7674626c007338494f5f335f *616c74007338494f5f64666c74007338494f5f7674626c00733862785f696e666f00733862785f *656e747279007338494e5f325f616c74007338494e5f7674626c007338494d5f345f616c740073 *38494d5f64666c74007338494d5f7674626c007338627a5f696e666f007338627a5f656e747279 *007338494c5f315f616c74007338494c5f325f616c74007338494c5f7674626c007338494a5f69 *6e666f007338494a5f72657400733849495f325f616c7400733849495f7674626c00733849485f *335f616c7400733849485f64666c7400733849485f7674626c00733862425f696e666f00733862 *425f656e74727900733862445f696e666f00733862445f656e74727900733757435f696e666f00 *733757435f656e74727900733849475f315f616c7400733849475f325f616c7400733849475f76 *74626c00733849455f696e666f00733849455f72657400733849445f325f616c7400733849445f *7674626c00733849435f335f616c7400733849435f64666c7400733849435f7674626c00733862 *465f696e666f00733862465f656e74727900733849425f325f616c7400733849425f7674626c00 *733849415f345f616c7400733849415f64666c7400733849415f7674626c00733862485f696e66 *6f00733862485f656e747279007338497a5f315f616c74007338497a5f325f616c74007338497a *5f7674626c00733849785f696e666f00733849785f72657400733849775f325f616c7400733849 *775f7674626c00733849765f335f616c7400733849765f64666c7400733849765f7674626c0073 *38624a5f696e666f007338624a5f656e747279007338624c5f696e666f007338624c5f656e7472 *7900733756455f696e666f00733756455f656e74727900733849755f315f616c7400733849755f *325f616c7400733849755f7674626c00733849735f696e666f00733849735f7265740073384972 *5f325f616c7400733849725f7674626c00733849715f335f616c7400733849715f64666c740073 *3849715f7674626c007338624e5f696e666f007338624e5f656e74727900733849705f325f616c *7400733849705f7674626c007338496f5f345f616c74007338496f5f64666c74007338496f5f76 *74626c00733862505f696e666f00733862505f656e747279007338496e5f315f616c7400733849 *6e5f325f616c74007338496e5f7674626c007338496c5f696e666f007338496c5f726574007338 *496b5f325f616c74007338496b5f7674626c007338496a5f335f616c74007338496a5f64666c74 *007338496a5f7674626c00733862525f696e666f00733862525f656e74727900733862545f696e *666f00733862545f656e74727900733755475f696e666f00733755475f656e7472790073384969 *5f315f616c7400733849695f325f616c7400733849695f7674626c00733849675f696e666f0073 *3849675f72657400733849665f325f616c7400733849665f7674626c00733849655f335f616c74 *00733849655f64666c7400733849655f7674626c00733862565f696e666f00733862565f656e74 *727900733849645f325f616c7400733849645f7674626c00733849635f345f616c740073384963 *5f64666c7400733849635f7674626c00733862585f696e666f00733862585f656e747279007338 *49625f315f616c7400733849625f325f616c7400733849625f7674626c00733849395f696e666f *00733849395f72657400733849385f325f616c7400733849385f7674626c00733849375f335f61 *6c7400733849375f64666c7400733849375f7674626c007338625a5f696e666f007338625a5f65 *6e74727900733849365f325f616c7400733849365f7674626c00733849355f345f616c74007338 *49355f64666c7400733849355f7674626c00733863315f696e666f00733863315f656e74727900 *733849335f696e666f00733849335f72657400733863335f696e666f00733863335f656e747279 *00733863355f656e7472790072366f545f7372740072366f545f636c6f737572650072366f545f *696e666f0072366f545f656e7472790072366f575f7372740072366f595f73727400723670305f *7372740072366f575f636c6f737572650072366f595f636c6f7375726500723670305f636c6f73 *7572650072366f575f696e666f0072366f575f656e7472790072366f595f696e666f0072366f59 *5f656e74727900723670305f696e666f00723670305f656e74727900723670335f737274007236 *70335f636c6f7375726500723670335f696e666f00723670335f656e74727900723670355f7372 *7400723670355f636c6f7375726500723670355f696e666f00723670355f656e74727900723670 *375f73727400723670375f636c6f7375726500723670375f696e666f00733868775f696e666f00 *733868775f656e74727900733848395f696e666f00733848395f72657400733868715f696e666f *00733868715f656e74727900733868795f696e666f00733868795f656e74727900733868655f69 *6e666f00733868655f656e74727900733868675f696e666f00733868675f656e74727900733868 *415f696e666f00733868415f656e74727900733868615f696e666f00733868615f656e74727900 *733868635f696e666f00733868635f656e74727900733868435f696e666f00733868435f656e74 *727900733848635f696e666f00733848635f72657400733868385f696e666f00733868385f656e *74727900733868455f696e666f00733868455f656e74727900733867575f696e666f0073386757 *5f656e74727900733867595f696e666f00733867595f656e74727900733868475f696e666f0073 *3868475f656e74727900733867535f696e666f00733867535f656e74727900733867555f696e66 *6f00733867555f656e74727900733868495f696e666f00733868495f656e74727900733848665f *696e666f00733848665f72657400733867515f696e666f00733867515f656e747279007338684b *5f696e666f007338684b5f656e74727900733867455f696e666f00733867455f656e7472790073 *3867475f696e666f00733867475f656e747279007338684d5f696e666f007338684d5f656e7472 *7900733867415f696e666f00733867415f656e74727900733867435f696e666f00733867435f65 *6e747279007338684f5f696e666f007338684f5f656e74727900733848695f696e666f00733848 *695f72657400733867795f696e666f00733867795f656e74727900733868515f696e666f007338 *68515f656e747279007338676d5f696e666f007338676d5f656e747279007338676f5f696e666f *007338676f5f656e74727900733868535f696e666f00733868535f656e74727900733867695f69 *6e666f00733867695f656e747279007338676b5f696e666f007338676b5f656e74727900733868 *555f696e666f00733868555f656e747279007338486c5f696e666f007338486c5f726574007338 *67675f696e666f00733867675f656e74727900733868575f696e666f00733868575f656e747279 *00733867345f696e666f00733867345f656e74727900733867365f696e666f00733867365f656e *74727900733868595f696e666f00733868595f656e74727900733867305f696e666f0073386730 *5f656e74727900733867325f696e666f00733867325f656e74727900733869305f696e666f0073 *3869305f656e747279007338486f5f696e666f007338486f5f72657400733866595f696e666f00 *733866595f656e74727900733869325f696e666f00733869325f656e747279007338664d5f696e *666f007338664d5f656e747279007338664f5f696e666f007338664f5f656e7472790073386934 *5f696e666f00733869345f656e74727900733866495f696e666f00733866495f656e7472790073 *38664b5f696e666f007338664b5f656e74727900733869365f696e666f00733869365f656e7472 *7900733848725f696e666f00733848725f72657400733866475f696e666f00733866475f656e74 *727900733869385f696e666f00733869385f656e74727900733866755f696e666f00733866755f *656e74727900733866775f696e666f00733866775f656e74727900733869615f696e666f007338 *69615f656e74727900733866715f696e666f00733866715f656e74727900733866735f696e666f *00733866735f656e74727900733869635f696e666f00733869635f656e74727900733848755f69 *6e666f00733848755f726574007338666f5f696e666f007338666f5f656e74727900733869655f *696e666f00733869655f656e74727900733866635f696e666f00733866635f656e747279007338 *66655f696e666f00733866655f656e74727900733869675f696e666f00733869675f656e747279 *00733866385f696e666f00733866385f656e74727900733866615f696e666f00733866615f656e *74727900733869695f696e666f00733869695f656e74727900733848785f696e666f0073384878 *5f72657400733866365f696e666f00733866365f656e747279007338696b5f696e666f00733869 *6b5f656e74727900733865555f696e666f00733865555f656e74727900733865575f696e666f00 *733865575f656e747279007338696d5f696e666f007338696d5f656e74727900733865515f696e *666f00733865515f656e74727900733865535f696e666f00733865535f656e747279007338696f *5f696e666f007338696f5f656e74727900733848415f696e666f00733848415f72657400733865 *4f5f696e666f007338654f5f656e74727900733869715f696e666f00733869715f656e74727900 *733865435f696e666f00733865435f656e74727900733865455f696e666f00733865455f656e74 *727900733869735f696e666f00733869735f656e74727900733865795f696e666f00733865795f *656e74727900733865415f696e666f00733865415f656e74727900733869755f696e666f007338 *69755f656e74727900733848445f696e666f00733848445f72657400733865775f696e666f0073 *3865775f656e74727900733869775f696e666f00733869775f656e747279007338656b5f696e66 *6f007338656b5f656e747279007338656d5f696e666f007338656d5f656e74727900733869795f *696e666f00733869795f656e74727900733865675f696e666f00733865675f656e747279007338 *65695f696e666f00733865695f656e74727900733869415f696e666f00733869415f656e747279 *00733848475f696e666f00733848475f72657400733865655f696e666f00733865655f656e7472 *7900733869435f696e666f00733869435f656e74727900733865325f696e666f00733865325f65 *6e74727900733865345f696e666f00733865345f656e74727900733869455f696e666f00733869 *455f656e74727900733864595f696e666f00733864595f656e74727900733865305f696e666f00 *733865305f656e74727900733869475f696e666f00733869475f656e747279007338484a5f696e *666f007338484a5f72657400733864575f696e666f00733864575f656e74727900733869495f69 *6e666f00733869495f656e747279007338644b5f696e666f007338644b5f656e74727900733864 *4d5f696e666f007338644d5f656e747279007338694b5f696e666f007338694b5f656e74727900 *733864475f696e666f00733864475f656e74727900733864495f696e666f00733864495f656e74 *7279007338694d5f696e666f007338694d5f656e747279007338484d5f696e666f007338484d5f *72657400733864455f696e666f00733864455f656e747279007338694f5f696e666f007338694f *5f656e74727900733864735f696e666f00733864735f656e74727900733864755f696e666f0073 *3864755f656e74727900733869515f696e666f00733869515f656e747279007338646f5f696e66 *6f007338646f5f656e74727900733864715f696e666f00733864715f656e74727900733869535f *696e666f00733869535f656e74727900733848505f696e666f00733848505f726574007338646d *5f696e666f007338646d5f656e74727900733869555f696e666f00733869555f656e7472790073 *3864615f696e666f00733864615f656e74727900733864635f696e666f00733864635f656e7472 *7900733869575f696e666f00733869575f656e74727900733864365f696e666f00733864365f65 *6e74727900733864385f696e666f00733864385f656e74727900733869595f696e666f00733869 *595f656e74727900733848535f696e666f00733848535f72657400733864345f696e666f007338 *64345f656e7472790073386a305f696e666f0073386a305f656e74727900733863535f696e666f *00733863535f656e74727900733863555f696e666f00733863555f656e7472790073386a325f69 *6e666f0073386a325f656e747279007338634f5f696e666f007338634f5f656e74727900733863 *515f696e666f00733863515f656e7472790073386a345f696e666f0073386a345f656e74727900 *733848565f696e666f00733848565f726574007338634d5f696e666f007338634d5f656e747279 *00733848385f696e666f00733848385f72657400723670375f656e7472790073386a375f636c6f *737572650073386a395f7372740073386a395f636c6f737572650073386a395f696e666f007338 *6a395f656e74727900723670395f73727400723670395f636c6f7375726500723670395f696e66 *6f00723670395f656e74727900723670635f73727400723670635f636c6f737572650072367063 *5f696e666f00723670635f656e74727900733848355f696e666f00733848355f72657400733848 *325f696e666f00733848325f726574007338475a5f696e666f007338475a5f726574007338474d *5f696e666f007338474d5f726574007338477a5f696e666f007338477a5f726574007338476d5f *696e666f007338476d5f72657400733847395f696e666f00733847395f72657400733846575f69 *6e666f00733846575f726574007338464a5f696e666f007338464a5f72657400733846775f696e *666f00733846775f726574007338466a5f696e666f007338466a5f72657400733846365f696e66 *6f00733846365f72657400733845545f696e666f00733845545f72657400733845475f696e666f *00733845475f72657400733845745f696e666f00733845745f72657400733845675f696e666f00 *733845675f72657400733845655f696e666f00733845655f72657400733845635f696e666f0073 *3845635f72657400733844575f696e666f00733844575f72657400733844475f696e666f007338 *44475f72657400733844715f696e666f00733844715f72657400733844615f696e666f00733844 *615f72657400733843555f696e666f00733843555f72657400733843455f696e666f0073384345 *5f726574007338436f5f696e666f007338436f5f72657400733843385f696e666f00733843385f *72657400733842535f696e666f00733842535f72657400733842435f696e666f00733842435f72 *6574007338426d5f696e666f007338426d5f72657400733842365f696e666f00733842365f7265 *7400733841515f696e666f00733841515f72657400733841415f696e666f00733841415f726574 *007338416b5f696e666f007338416b5f72657400733841345f696e666f00733841345f72657400 *733841335f696e666f00733841335f72657400733841325f696e666f00733841325f7265740073 *3841315f696e666f00733841315f72657400733841305f696e666f00733841305f726574007338 *7a5a5f696e666f0073387a5a5f7265740073387a595f696e666f0073387a595f7265740073387a *585f696e666f0073387a585f7265740073387a575f696e666f0073387a575f7265740073387a56 *5f696e666f0073387a565f7265740073387a555f696e666f0073387a555f7265740073387a545f *696e666f0073387a545f7265740073387a535f696e666f0073387a535f7265740073387a525f69 *6e666f0073387a525f7265740073387a515f696e666f0073387a515f7265740073387a505f696e *666f0073387a505f7265740073387a4f5f696e666f0073387a4f5f7265740073387a4e5f696e66 *6f0073387a4e5f7265740073387a4d5f696e666f0073387a4d5f7265740073387a4c5f696e666f *0073387a4c5f7265740073387a4b5f696e666f0073387a4b5f7265740073387a4a5f696e666f00 *73387a4a5f7265740073387a495f696e666f0073387a495f7265740073387a485f696e666f0073 *387a485f7265740073387a475f696e666f0073387a475f7265740073387a465f696e666f007338 *7a465f7265740073387a455f696e666f0073387a455f7265740073387a445f696e666f0073387a *445f7265740073387a435f696e666f0073387a435f7265740073387a425f696e666f0073387a42 *5f7265740073387a415f696e666f0073387a415f7265740073387a7a5f696e666f0073387a7a5f *7265740073387a795f696e666f0073387a795f7265740073387a785f696e666f0073387a785f72 *65740073387a775f696e666f0073387a775f7265740073686a4b5f696e666f0073686a4b5f656e *7472790073686a4d5f696e666f0073686a4d5f656e747279007368734f5f696e666f007368734f *5f7265740073686a505f696e666f0073686a505f656e7472790073686a765f696e666f0073686a *765f656e7472790073686a725f696e666f0073686a725f656e7472790073686a785f696e666f00 *73686a785f656e747279007368734b5f696e666f007368734b5f72657400726869485f73727400 *726869485f636c6f7375726500726869485f696e666f00736873475f696e666f00736873475f72 *657400726869485f656e747279007268694a5f737274007268694a5f636c6f7375726500726869 *4a5f696e666f007268694a5f656e747279007268694c5f737274007268694c5f636c6f73757265 *007268694c5f696e666f00736873435f696e666f00736873435f726574007268694c5f656e7472 *79007268694e5f737274007268694e5f636c6f73757265007268694e5f696e666f007268694e5f *656e74727900726869505f73727400726869505f636c6f7375726500726869505f696e666f0072 *6869505f656e74727900736873715f696e666f00736873715f7265740073686b555f696e666f00 *73686b555f656e74727900736873755f696e666f00736873755f7265740073686b465f696e666f *0073686b465f656e7472790073686b735f696e666f0073686b735f656e74727900736873795f69 *6e666f00736873795f7265740073686b765f696e666f0073686b765f656e7472790073686b485f *696e666f0073686b485f656e747279007368736d5f696e666f007368736d5f7265740073686b58 *5f696e666f0073686b585f656e74727900736873695f696e666f00736873695f72657400726869 *525f73727400726869525f636c6f7375726500726869525f696e666f00726869525f656e747279 *00726869545f73727400726869545f636c6f7375726500726869545f696e666f00736873655f69 *6e666f00736873655f7265740073686c715f696e666f0073686c715f656e74727900736873675f *696e666f00736873675f7265740073686c695f696e666f0073686c695f656e7472790073687364 *5f696e666f00736873645f72657400736873635f696e666f00736873635f72657400726869545f *656e74727900726869565f73727400726869565f636c6f7375726500726869565f696e666f0073 *686c785f696e666f0073686c785f656e74727900726869565f656e747279007268695a5f737274 *007268695a5f636c6f73757265007268695a5f696e666f0073686d415f696e666f0073686d415f *656e74727900736872595f696e666f00736872595f7265740073686d755f696e666f0073686d75 *5f656e7472790073686d435f696e666f0073686d435f656e7472790073686d695f696e666f0073 *686d695f656e7472790073686d6b5f696e666f0073686d6b5f656e7472790073686d455f696e66 *6f0073686d455f656e7472790073686d655f696e666f0073686d655f656e7472790073686d675f *696e666f0073686d675f656e7472790073686d475f696e666f0073686d475f656e747279007368 *73315f696e666f00736873315f7265740073686d635f696e666f0073686d635f656e7472790073 *686d495f696e666f0073686d495f656e7472790073686d305f696e666f0073686d305f656e7472 *790073686d325f696e666f0073686d325f656e7472790073686d4b5f696e666f0073686d4b5f65 *6e7472790073686c575f696e666f0073686c575f656e7472790073686c595f696e666f0073686c *595f656e7472790073686d4d5f696e666f0073686d4d5f656e74727900736873345f696e666f00 *736873345f7265740073686c555f696e666f0073686c555f656e74727900736872585f696e666f *00736872585f726574007268695a5f656e7472790073686d505f636c6f737572650073686d525f *7372740073686d525f636c6f737572650073686d525f696e666f0073686d525f656e7472790072 *686a315f7372740072686a315f636c6f737572650072686a315f696e666f0072686a315f656e74 *7279007368705a5f737274007368705a5f636c6f73757265007368705a5f696e666f0073686e33 *5f696e666f0073686e335f656e7472790073686e365f696e666f0073686e365f7265740073686e *625f696e666f0073686e625f656e747279007368726a5f315f616c740073686e685f696e666f00 *73686e685f656e7472790073686e6a5f696e666f0073686e6a5f726574007368726c5f315f616c *740073686e445f696e666f0073686e445f656e7472790073686e465f696e666f0073686e465f72 *65740073686e4b5f696e666f0073686e4b5f656e74727900736872715f315f616c740073686e51 *5f696e666f0073686e515f656e7472790073686e535f696e666f0073686e535f72657400736872 *735f315f616c740073686f665f696e666f0073686f665f656e7472790073686f685f696e666f00 *73686f685f72657400736872785f315f616c740073686f425f696e666f0073686f425f656e7472 *790073686f445f696e666f0073686f445f7265740073686f495f696e666f0073686f495f656e74 *727900736872435f315f616c740073686f4f5f696e666f0073686f4f5f656e7472790073686f51 *5f696e666f0073686f515f72657400736872455f315f616c7400736870645f696e666f00736870 *645f656e74727900736870665f696e666f00736870665f726574007368724a5f315f616c740073 *68724d5f315f616c74007368724d5f325f616c74007368724d5f7674626c007368724b5f696e66 *6f007368724b5f726574007368724a5f325f616c74007368724a5f7674626c00736872495f335f *616c7400736872495f64666c7400736872495f7674626c00736870435f696e666f00736870435f *656e74727900736870465f696e666f00736870465f656e74727900736870385f696e666f007368 *70385f656e74727900736872485f315f616c7400736872485f325f616c7400736872485f767462 *6c00736872465f696e666f00736872465f72657400736872455f325f616c7400736872455f7674 *626c00736872445f335f616c7400736872445f64666c7400736872445f7674626c00736870485f *696e666f00736870485f656e74727900736872435f325f616c7400736872435f7674626c007368 *72425f345f616c7400736872425f64666c7400736872425f7674626c007368704a5f696e666f00 *7368704a5f656e74727900736872415f315f616c7400736872415f325f616c7400736872415f76 *74626c00736872795f696e666f00736872795f72657400736872785f325f616c7400736872785f *7674626c00736872775f335f616c7400736872775f64666c7400736872775f7674626c00736870 *4c5f696e666f007368704c5f656e747279007368704e5f696e666f007368704e5f656e74727900 *73686f615f696e666f0073686f615f656e74727900736872765f315f616c7400736872765f325f *616c7400736872765f7674626c00736872745f696e666f00736872745f72657400736872735f32 *5f616c7400736872735f7674626c00736872725f335f616c7400736872725f64666c7400736872 *725f7674626c00736870505f696e666f00736870505f656e74727900736872715f325f616c7400 *736872715f7674626c00736872705f345f616c7400736872705f64666c7400736872705f767462 *6c00736870525f696e666f00736870525f656e747279007368726f5f315f616c74007368726f5f *325f616c74007368726f5f7674626c007368726d5f696e666f007368726d5f726574007368726c *5f325f616c74007368726c5f7674626c007368726b5f335f616c74007368726b5f64666c740073 *68726b5f7674626c00736870545f696e666f00736870545f656e747279007368726a5f325f616c *74007368726a5f7674626c00736872695f345f616c7400736872695f64666c7400736872695f76 *74626c00736870565f696e666f00736870565f656e74727900736872675f696e666f0073687267 *5f72657400736870585f696e666f00736870585f656e747279007368705a5f656e747279007268 *6a335f7372740072686a335f636c6f737572650072686a335f696e666f0072686a335f656e7472 *7900736872645f315f616c74007368716a5f696e666f007368716a5f656e74727900736872645f *325f616c7400736872645f7674626c00736871685f696e666f00736871685f7265740073687262 *5f696e666f00736872625f7265740072686a375f7372740072686a355f636c6f73757265007268 *6a375f636c6f737572650072686a375f696e666f0072686a375f656e7472790072686a645f7372 *740072686a625f636c6f737572650072686a665f7372740072686a685f7372740072686a645f63 *6c6f737572650072686a665f636c6f737572650072686a685f636c6f737572650072686a645f69 *6e666f0072686a645f656e7472790072686a665f696e666f0072686a665f656e7472790072686a *685f696e666f0072686a685f656e74727900736872395f696e666f00736872395f726574007368 *72375f696e666f00736872375f72657400736872365f696e666f00736872365f72657400736872 *355f696e666f00736872355f72657400733561565f696e666f00733561565f656e747279007335 *47615f696e666f00733547615f72657400733562315f696e666f00733562315f656e7472790073 *3562375f696e666f00733562375f656e74727900723357415f636c6f7375726500723357415f69 *6e666f00733547385f315f616c7400733547385f325f616c74007335627a5f656e747279007335 *47385f7674626c00733547375f315f616c7400733547375f325f616c7400733547375f335f616c *7400733547375f345f616c7400733547375f355f616c7400733547375f7674626c007335627a5f *696e666f00723357415f656e74727900733547325f315f616c7400733547345f315f616c740073 *3563615f656e74727900733547345f325f616c7400733547345f7674626c00733563665f696e66 *6f00733563665f656e747279007335636f5f696e666f007335636f5f656e74727900733547335f *72657400733547325f325f616c7400733547325f7674626c00733563615f696e666f0073356377 *5f315f616c7400733563775f325f616c7400733563775f7674626c00733563795f696e666f0073 *3563795f656e74727900723561705f73727400723561705f636c6f7375726500723561705f696e *666f00733547785f696e666f00733547785f72657400723561705f656e74727900733563525f69 *6e666f00733563525f656e74727900733563585f696e666f00733563585f656e74727900733565 *395f696e666f00733565395f656e74727900733564515f656e74727900733547675f315f616c74 *00733565315f696e666f00733565315f656e74727900733547675f325f616c7400733547675f33 *5f616c7400733547685f696e666f00733547685f72657400733547675f345f616c74007335476b *5f315f616c74007335476d5f315f616c74007335646d5f656e747279007335476d5f325f616c74 *007335476d5f7674626c00733564725f696e666f00733564725f656e74727900733564415f696e *666f00733564415f656e747279007335476c5f726574007335476b5f325f616c74007335476b5f *7674626c007335646d5f696e666f00733564465f315f616c7400733564465f325f616c74007335 *64465f7674626c00733547675f355f616c7400733547675f7674626c00733564515f696e666f00 *733565715f345f616c7400733565765f335f616c7400733565745f335f616c7400733566395f69 *6e666f00733566395f656e74727900733566635f696e666f00733566635f656e74727900733566 *655f696e666f00733566655f656e74727900733565785f355f616c7400733565555f696e666f00 *733565555f656e74727900733565485f656e74727900733565535f315f616c7400733566345f69 *6e666f00733566345f656e74727900733565535f325f616c7400733565535f7674626c00733565 *435f325f616c7400733547715f315f616c74007335654a5f696e666f007335654a5f656e747279 *00733547715f325f616c7400733547715f7674626c00733565435f64666c7400733565435f7674 *626c00733565785f64666c7400733565785f7674626c00733566675f696e666f00733566675f72 *657400733566555f696e666f00733566555f656e74727900733566585f696e666f00733566585f *656e747279007335665a5f696e666f007335665a5f656e74727900733547745f355f616c740073 *3547745f64666c7400733547745f7674626c00733547735f325f616c7400733566715f696e666f *00733566715f656e74727900733566735f696e666f00733566735f656e74727900733566755f69 *6e666f00733566755f656e747279007335666e5f315f616c7400733566475f696e666f00733566 *475f656e74727900733566495f696e666f00733566495f656e747279007335666e5f325f616c74 *00733566795f696e666f00733566795f656e747279007335666e5f355f616c74007335666e5f76 *74626c00733547735f355f616c7400733547735f64666c7400733547735f7674626c0073356574 *5f64666c7400733565745f7674626c00733565765f64666c7400733565765f7674626c00733565 *715f64666c7400733565715f7674626c00733567375f696e666f00733567375f72657400733547 *775f315f616c7400733547775f64666c7400733547775f7674626c00733547765f315f616c7400 *733547765f345f616c7400733547765f64666c7400733547765f7674626c00733565485f696e66 *6f00733546585f696e666f00733546585f72657400733546555f696e666f00733546555f726574 *007335464d5f315f616c7400733568615f315f616c7400733546525f72657400733546515f696e *666f00733546515f656e74727900733568615f325f616c7400733568615f7674626c007335464d *5f325f616c74007335464d5f7674626c00733568625f696e666f00733568625f656e7472790073 *3569385f696e666f00733569385f656e74727900733569665f696e666f00733569665f656e7472 *7900733546475f315f616c7400733569315f696e666f00733569315f656e74727900733546475f *325f616c7400733546475f335f616c74007335684c5f696e666f007335684c5f656e7472790073 *35684f5f696e666f007335684f5f656e74727900733546485f696e666f00733546485f72657400 *733546475f345f616c7400733568435f64666c7400733568435f7674626c00733546475f355f61 *6c7400733546475f7674626c00733569685f696e666f00733569685f656e74727900733569775f *696e666f00733569775f656e74727900733569445f696e666f00733569445f726574007335697a *5f696e666f007335697a5f656e74727900733569505f696e666f00733569505f656e7472790073 *356a345f696e666f0073356a345f656e7472790073356a655f696e666f0073356a655f656e7472 *790073356a685f696e666f0073356a685f656e7472790073356a6c5f696e666f0073356a6c5f65 *6e74727900723561765f73727400723561765f636c6f7375726500723561765f696e666f007335 *6a725f696e666f0073356a725f656e74727900733546715f696e666f00733546715f7265740073 *356a455f696e666f0073356a455f656e74727900733546755f696e666f00733546755f72657400 *73356a565f696e666f0073356a565f656e7472790073356a475f696e666f0073356a475f656e74 *727900733546785f7265740073356b365f696e666f0073356b365f656e74727900733546435f69 *6e666f00733546435f72657400733546425f696e666f00733546425f656e7472790073356b6f5f *696e666f0073356b6f5f656e74727900723561765f656e74727900733547655f696e666f007335 *47655f72657400733547635f696e666f00733547635f72657400733545715f7265740073356b49 *5f696e666f0073356b495f656e7472790073356e775f696e666f0073356e775f7265740073356c *305f696e666f0073356c305f656e7472790073356e465f696e666f0073356e465f726574007335 *6c525f696e666f0073356c525f656e7472790073356c505f656e74727900733545475f696e666f *00733545475f72657400733545465f315f616c74007335454b5f696e666f007335454b5f726574 *00733545465f325f616c7400733545465f7674626c00733545775f72657400733545765f696e66 *6f00733545765f7265740073356c505f696e666f007335454f5f696e666f007335454f5f726574 *0073356d385f696e666f0073356d385f656e74727900733545585f315f616c7400733545595f69 *6e666f00733545595f7265740073356e695f696e666f0073356e695f656e74727900733545585f *325f616c740073356d575f656e74727900733545585f7674626c0073356d4c5f315f616c740073 *356d4c5f325f616c740073356d4c5f335f616c7400733546625f7265740073356d505f696e666f *0073356d505f656e74727900733546385f696e666f00733546385f7265740073356d4c5f345f61 *6c7400733546695f696e666f00733546695f7265740073356d4c5f355f616c740073356d4c5f76 *74626c0073356d575f696e666f007335466d5f696e666f007335466d5f726574007335456c5f31 *5f616c74007335456d5f726574007335456c5f325f616c74007335456c5f7674626c0073356f37 *5f696e666f0073356f375f656e74727900733545685f696e666f00733545685f72657400733545 *635f315f616c7400733545645f696e666f00733545645f72657400733545635f325f616c740073 *3545635f7674626c00733545615f696e666f00733545615f7265740073356f785f696e666f0073 *356f785f656e74727900733545365f72657400733544515f72657400733544505f315f616c7400 *733544555f315f616c7400733544585f315f616c7400733544595f696e666f00733544595f7265 *7400733544585f325f616c7400733544585f7674626c00733544565f696e666f00733544565f72 *657400733544555f325f616c7400733544555f7674626c00733544505f325f616c740073354450 *5f7674626c00733570335f696e666f00733570335f656e747279007335706d5f696e666f007335 *706d5f656e74727900733545325f696e666f00733545325f72657400733544485f696e666f0073 *3544485f72657400733544705f315f616c7400733544725f696e666f00733544725f7265740073 *3544715f315f616c7400733544445f696e666f00733544445f72657400733571365f696e666f00 *733571365f656e747279007335447a5f696e666f007335447a5f72657400733571395f696e666f *00733571395f656e74727900733544765f696e666f00733544765f72657400733544715f325f61 *6c7400733544715f7674626c00733544705f325f616c7400733544705f7674626c00733570535f *696e666f00733570535f656e74727900733571695f696e666f00733571695f656e747279007335 *71725f696e666f00733571725f656e747279007335444c5f696e666f007335444c5f7265740073 *3544675f315f616c74007335446c5f696e666f007335446c5f72657400733571575f696e666f00 *733571575f656e747279007335714b5f696e666f007335714b5f656e74727900733544685f696e *666f00733544685f72657400733544675f325f616c7400733544675f7674626c007335715a5f69 *6e666f007335715a5f656e74727900733544635f696e666f00733544635f72657400733544345f *696e666f00733544345f72657400733543555f315f616c7400733543575f696e666f0073354357 *5f72657400733543565f315f616c7400733544305f696e666f00733544305f7265740073354356 *5f325f616c7400733543565f7674626c00733543555f325f616c7400733543555f7674626c0073 *35726f5f696e666f007335726f5f656e747279007335727a5f696e666f007335727a5f656e7472 *7900733572495f696e666f00733572495f656e74727900733544385f696e666f00733544385f72 *6574007335434d5f696e666f007335434d5f72657400733572575f696e666f00733572575f656e *74727900733543515f696e666f00733543515f72657400733543545f696e666f00733543545f65 *6e74727900733543415f696e666f00733543415f72657400733573715f696e666f00733573715f *656e74727900733543775f696e666f00733543775f72657400733573745f696e666f0073357374 *5f656e74727900733543455f696e666f00733543455f72657400733573435f696e666f00733573 *435f656e74727900733543495f696e666f00733543495f726574007335434c5f696e666f007335 *434c5f656e74727900733543715f696e666f00733543715f72657400733574615f696e666f0073 *3574615f656e74727900733543755f696e666f00733543755f72657400733574325f696e666f00 *733574325f656e747279007335436d5f696e666f007335436d5f726574007335746c5f696e666f *007335746c5f656e74727900733543695f696e666f00733543695f72657400733574715f696e66 *6f00733574715f656e747279007335744c5f696e666f007335744c5f72657400733574465f696e *666f00733574465f656e747279007335744a5f696e666f007335744a5f72657400733574495f69 *6e666f00733574495f656e74727900733574585f696e666f00733574585f656e74727900733543 *395f72657400733575365f696e666f00733575365f656e74727900733543645f72657400733543 *675f696e666f00733543675f656e74727900733543355f726574007335754b5f696e666f007335 *754b5f656e74727900733543315f726574007335754e5f696e666f007335754e5f656e74727900 *733542585f696e666f00733542585f72657400733575515f696e666f00733575515f656e747279 *00733542565f696e666f00733542565f72657400733542525f696e666f00733542525f72657400 *7335766a5f696e666f007335766a5f656e747279007335424e5f696e666f007335424e5f726574 *007335424a5f696e666f007335424a5f72657400733576705f696e666f00733576705f656e7472 *7900733542485f696e666f00733542485f72657400733542775f696e666f00733542775f726574 *00733577345f696e666f00733577345f656e74727900733542735f72657400733577375f696e66 *6f00733577375f656e747279007335426f5f696e666f007335426f5f72657400733542415f696e *666f00733542415f726574007335776a5f696e666f007335776a5f656e74727900733542455f69 *6e666f00733542455f72657400733577775f696e666f00733577775f656e74727900733577795f *696e666f00733577795f656e747279007335426b5f696e666f007335426b5f7265740073357749 *5f696e666f00733577495f656e74727900733542635f696e666f00733542635f72657400733577 *535f696e666f00733577535f656e74727900733542675f696e666f00733542675f726574007335 *426a5f696e666f007335426a5f656e74727900733578785f696e666f00733578785f656e747279 *00733578765f656e74727900733541575f696e666f00733541575f72657400733578415f696e66 *6f00733578415f656e74727900733541535f696e666f00733541535f72657400733578445f696e *666f00733578445f656e74727900733542305f696e666f00733542305f726574007335784d5f69 *6e666f007335784d5f656e74727900733542345f696e666f00733542345f72657400733542375f *696e666f00733542375f656e74727900733578765f696e666f00733542385f7265740073357964 *5f696e666f00733579645f656e747279007335414b5f696e666f007335414b5f72657400733579 *6e5f696e666f007335796e5f656e747279007335414f5f696e666f007335414f5f726574007335 *41525f696e666f00733541525f656e7472790073357a325f696e666f0073357a325f656e747279 *00733541455f696e666f00733541455f72657400733579565f696e666f00733579565f656e7472 *7900733541435f696e666f00733541435f72657400733579595f696e666f00733579595f656e74 *72790073357a305f696e666f0073357a305f656e74727900733541425f656e7472790073354141 *5f315f616c7400733541415f325f616c7400733541415f7674626c00733541765f315f616c7400 *733541775f315f616c7400733541795f696e666f00733541795f72657400733541785f315f616c *7400733541785f325f616c7400733541785f7674626c00733541775f325f616c7400733541775f *7674626c00733541765f325f616c7400733541765f7674626c00733541755f315f616c74007335 *41755f325f616c7400733541755f335f616c7400733541755f345f616c7400733541755f355f61 *6c7400733541755f7674626c0072336a495f636c6f737572650072336a4b5f636c6f7375726500 *72336a4d5f7372740072336a4d5f636c6f737572650072336a4d5f696e666f0072336a4d5f656e *7472790072336a4f5f7372740072336a4f5f636c6f737572650072336a4f5f696e666f0072336a *4f5f656e7472790072336a515f7372740072336a515f636c6f737572650072336a515f696e666f *0072336a515f656e7472790072336a535f7372740072336a535f636c6f737572650072336a535f *696e666f0072336a535f656e7472790072336a555f7372740072336a555f636c6f737572650072 *336a555f696e666f0072336a555f656e747279007333706f5f696e666f007333706f5f72657400 *7333706e5f315f616c740073336b665f696e666f0073336b665f656e7472790073336b685f696e *666f0073336b685f656e74727900733370765f315f616c740073336b775f656e74727900733370 *765f325f616c7400733370765f7674626c0073336b795f696e666f0073336b795f656e74727900 *73336b6f5f696e666f0073336b6f5f656e74727900733370735f696e666f00733370735f726574 *007333706e5f325f616c74007333706e5f7674626c0073336b775f696e666f0073336b535f696e *666f0073336b535f656e7472790073336b555f696e666f0073336b555f656e7472790073336b4d *5f696e666f0073336b4d5f656e7472790073336b4f5f696e666f0073336b4f5f656e7472790073 *3370775f696e666f00733370775f7265740073336c485f737274640073336c785f737274640073 *3370335f737274640073336c455f737274640073336c775f696e666f0073336c775f656e747279 *0073336c435f696e666f0073336c435f656e7472790073336c745f7372746400733370365f696e *666f00733370365f7265740073336c725f696e666f0073336c725f656e7472790073336c745f69 *6e666f0073336c745f656e7472790073336c455f696e666f0073336c455f656e7472790073336c *645f696e666f0073336c645f656e74727900733370335f696e666f00733370335f726574007333 *6c785f696e666f0073336c785f656e7472790073336c485f696e666f0073336c485f656e747279 *00733370655f7372746400733370675f737274640073336d505f696e666f0073336d505f656e74 *72790073336d475f696e666f0073336d475f656e7472790073336d455f696e666f0073336d455f *656e7472790073336d495f696e666f0073336d495f656e7472790073336d415f696e666f007333 *6d415f656e7472790073336d4b5f696e666f0073336d4b5f656e7472790073336d4d5f696e666f *0073336d4d5f656e7472790073336d535f696e666f0073336d535f656e7472790073336d725f69 *6e666f0073336d725f656e7472790073336d745f696e666f0073336d745f656e7472790073336d *6e5f696e666f0073336d6e5f656e7472790073336d775f696e666f0073336d775f656e74727900 *73336d795f696e666f0073336d795f656e7472790073336d555f696e666f0073336d555f656e74 *72790073336d6a5f696e666f0073336d6a5f656e7472790073336d645f696e666f0073336d645f *656e7472790073336d6c5f696e666f0073336d6c5f656e74727900733370685f696e666f007333 *70685f7265740073336d575f696e666f0073336d575f656e7472790073336d335f696e666f0073 *336d335f656e7472790073336d355f696e666f0073336d355f656e7472790073336d595f696e66 *6f0073336d595f656e7472790073336c595f696e666f0073336c595f656e7472790073336d305f *696e666f0073336d305f656e74727900733370675f315f616c740073336c565f696e666f007333 *6c565f656e747279007333706a5f696e666f007333706a5f72657400733370675f325f616c7400 *733370675f7674626c00733370655f696e666f00733370655f7265740073336e315f7372740073 *336e315f636c6f737572650073336e315f696e666f0073336e315f656e7472790073336e6c5f31 *5f616c7400733370475f315f616c740073336e705f696e666f0073336e705f656e747279007333 *6e725f696e666f0073336e725f656e7472790073336e6e5f696e666f0073336e6e5f656e747279 *00733370475f325f616c7400733370475f7674626c00733370465f315f616c7400733370465f32 *5f616c7400733370465f7674626c0073336e6c5f325f616c740073336e6c5f7674626c0073336e *755f696e666f0073336e755f656e7472790073336e635f696e666f0073336e635f656e74727900 *733370415f696e666f00733370415f7265740073336f515f696e666f0073336f515f656e747279 *0073336f565f315f616c740073336f335f696e666f0073336f335f656e7472790073336f575f69 *6e666f0073336f575f7265740073336f365f696e666f0073336f365f656e7472790073336f595f *696e666f0073336f595f7265740073336e595f696e666f0073336e595f656e7472790073337030 *5f315f616c740073336f485f656e7472790073336f615f696e666f0073336f615f656e74727900 *73336f765f696e666f0073336f765f656e7472790073336f725f696e666f0073336f725f656e74 *72790073336f6f5f696e666f0073336f6f5f656e7472790073336f745f696e666f0073336f745f *656e7472790073336f795f696e666f0073336f795f656e7472790073336f6b5f696e666f007333 *6f6b5f656e74727900733370315f315f616c7400733370315f325f616c7400733370315f767462 *6c0073336f445f696e666f0073336f445f656e7472790073336f635f696e666f0073336f635f65 *6e7472790073336f655f696e666f0073336f655f656e7472790073336f465f696e666f0073336f *465f656e74727900733370305f325f616c7400733370305f7674626c0073336f565f325f616c74 *0073336f565f7674626c0073336f485f696e666f0073336f4d5f696e666f0073336f4d5f656e74 *72790073336f4f5f696e666f0073336f4f5f656e7472790073336f535f696e666f0073336f535f *656e7472790073336e465f696e666f0073336e465f656e7472790073336f545f696e666f007333 *6f545f72657400736135345f315f616c7400736135345f325f616c7400736135345f7674626c00 *7361674e5f696e666f007361674e5f72657400736135765f315f616c74007361674d5f315f616c *74007361674d5f325f616c74007361674d5f7674626c007361674b5f696e666f007361674b5f72 *657400736135765f325f616c7400736135765f7674626c00736167475f315f616c740073616749 *5f696e666f00736167495f72657400736167475f325f616c7400736167475f7674626c00736167 *435f315f616c7400736167455f696e666f00736167455f72657400736167435f325f616c740073 *6167435f7674626c00736136315f696e666f00736136315f656e74727900736136335f696e666f *00736136335f656e74727900736167745f696e666f00736167745f72657400736136655f696e66 *6f00736136655f656e74727900736136485f315f616c7400736167795f315f616c74007361364a *5f696e666f007361364a5f656e74727900736136455f696e666f00736136455f656e7472790073 *6136475f696e666f00736136475f656e74727900736167795f325f616c7400736167795f767462 *6c00736136485f325f616c7400736136485f7674626c00736167765f696e666f00736167765f72 *6574007361676c5f696e666f007361676c5f72657400736137305f315f616c7400736167705f69 *6e666f00736167705f72657400736136585f696e666f00736136585f656e74727900736137305f *325f616c7400736137305f7674626c00736139735f315f616c7400736137485f696e666f007361 *37485f656e747279007361665a5f315f616c7400736137465f696e666f00736137465f656e7472 *7900736167305f315f616c7400736167345f315f616c7400736167345f325f616c740073613744 *5f656e74727900736167345f7674626c00736167325f696e666f00736167325f72657400736167 *305f325f616c7400736167305f7674626c007361665a5f325f616c74007361665a5f7674626c00 *736137445f696e666f007361374a5f696e666f007361374a5f656e74727900736167665f315f61 *6c7400736167695f315f616c7400736138395f656e74727900736167695f325f616c7400736138 *385f656e74727900736167695f7674626c00736167675f696e666f00736167675f726574007361 *67665f325f616c7400736167665f7674626c00736138475f696e666f00736138475f656e747279 *00736167615f315f616c7400736167625f315f616c7400736167655f315f616c7400736167655f *325f616c7400736167655f7674626c00736167635f696e666f00736167635f7265740073616762 *5f325f616c7400736167625f7674626c00736167615f325f616c7400736167615f7674626c0073 *6138395f696e666f00736139675f696e666f00736139675f656e74727900736167355f315f616c *7400736139635f696e666f00736139635f656e74727900736167365f315f616c7400736167395f *315f616c7400736167395f325f616c7400736167395f7674626c00736167375f696e666f007361 *67375f72657400736167365f325f616c7400736167365f7674626c00736167355f325f616c7400 *736167355f7674626c00736138385f696e666f00736139725f696e666f00736139725f656e7472 *79007361676a5f315f616c74007361676a5f325f616c74007361676a5f7674626c00736139705f *315f616c7400736139705f325f616c7400736139705f7674626c00736139735f325f616c740073 *6139735f7674626c00736139515f315f616c74007361394c5f696e666f007361394c5f656e7472 *7900736166535f315f616c7400736166535f325f616c7400736166535f7674626c00736166515f *696e666f00736166515f72657400736139515f325f616c7400736139515f7674626c0073613955 *5f696e666f00736139555f72657400736166545f315f616c7400736166575f315f616c74007361 *66575f325f616c7400736166575f7674626c00736166555f696e666f00736166555f7265740073 *6166545f325f616c7400736166545f7674626c007361616e5f315f616c74007361664e5f315f61 *6c74007361664e5f325f616c74007361664e5f7674626c007361664c5f696e666f007361664c5f *726574007361616e5f325f616c74007361616e5f7674626c00736161415f315f616c7400736166 *665f315f616c7400736166665f325f616c7400736166665f7674626c00736161415f325f616c74 *00736161415f7674626c00736161445f696e666f00736161445f656e747279007361614d5f315f *616c74007361666c5f315f616c74007361666c5f325f616c74007361666c5f7674626c00736166 *6b5f696e666f007361666b5f72657400736161585f696e666f00736161585f656e747279007361 *62655f696e666f00736162655f656e747279007361626f5f696e666f007361626f5f656e747279 *00736162735f696e666f00736162735f656e74727900736166725f315f616c74007361626d5f69 *6e666f007361626d5f656e74727900736162685f696e666f00736162685f656e74727900736166 *725f325f616c7400736166725f7674626c00736162755f696e666f00736162755f726574007361 *66735f315f616c7400736166765f315f616c7400736162695f656e74727900736166765f325f61 *6c7400736166765f7674626c00736166745f696e666f00736166745f72657400736166735f325f *616c7400736166735f7674626c007361614d5f325f616c74007361614d5f7674626c0073616269 *5f696e666f007361624f5f696e666f007361624f5f656e74727900736163615f315f616c740073 *6166415f315f616c7400736163385f696e666f00736163385f656e74727900736163345f696e66 *6f00736163345f656e74727900736166415f325f616c7400736166415f7674626c00736166795f *696e666f00736166795f72657400736163615f325f616c7400736163615f7674626c0073616363 *5f696e666f00736163635f656e74727900736163425f696e666f00736163425f656e7472790073 *6163445f696e666f00736163445f656e74727900736163735f696e666f00736163735f656e7472 *7900736163465f696e666f00736163465f656e747279007361634c5f696e666f007361634c5f65 *6e747279007361634e5f696e666f007361634e5f656e74727900736164645f315f616c74007361 *64645f325f616c7400736164645f7674626c00736166355f696e666f00736166355f7265740073 *6164685f696e666f00736164685f656e747279007361646a5f696e666f007361646a5f656e7472 *7900736163565f315f616c74007361635a5f315f616c74007361635a5f325f616c74007361635a *5f7674626c00736163565f325f616c7400736163565f7674626c00736166395f696e666f007361 *66395f72657400736164335f696e666f00736164335f656e74727900736164355f696e666f0073 *6164355f656e74727900736164705f696e666f00736164705f656e74727900736164495f696e66 *6f00736164495f656e74727900736165575f696e666f00736165575f72657400736164415f696e *666f00736164415f656e74727900736165395f696e666f00736165395f656e747279007361655a *5f315f616c7400736165315f696e666f00736165315f656e74727900736164595f696e666f0073 *6164595f656e747279007361655a5f325f616c74007361655a5f7674626c00736165595f696e66 *6f00736165595f72657400736165685f696e666f00736165685f656e74727900736165505f696e *666f00736165505f72657400736165775f696e666f00736165775f656e74727900736165535f31 *5f616c7400736165535f325f616c7400736165535f7674626c00736165525f696e666f00736165 *525f72657400736165485f696e666f00736165485f656e74727900726134545f636c6f73757265 *00723131525f636c6f7375726500723131545f73727400723131545f636c6f7375726500723131 *545f696e666f00723131545f656e74727900723131565f73727400723131565f636c6f73757265 *00723131565f696e666f00733165715f696e666f00733165715f72657400723131565f656e7472 *7900723131585f73727400723131585f636c6f7375726500723131585f696e666f00733132715f *696e666f00733132715f656e74727900733133495f696e666f00733133495f656e747279007331 *334b5f696e666f007331334b5f656e74727900733133475f696e666f00733133475f656e747279 *007331334d5f696e666f007331334d5f656e747279007331334f5f696e666f007331334f5f656e *74727900733133455f696e666f00733133455f656e74727900733133515f696e666f0073313351 *5f656e74727900733163465f696e666f00733163465f72657400733133435f696e666f00733133 *435f656e74727900733133535f696e666f00733133535f656e74727900733133765f696e666f00 *733133765f656e74727900733133305f315f616c7400733133665f696e666f00733133665f656e *74727900733133685f696e666f00733133685f656e74727900733133645f696e666f0073313364 *5f656e747279007331336a5f696e666f007331336a5f656e747279007331336c5f696e666f0073 *31336c5f656e74727900733133625f696e666f00733133625f656e747279007331336e5f696e66 *6f007331336e5f656e747279007331634b5f696e666f007331634b5f72657400733133395f696e *666f00733133395f656e74727900733133705f696e666f00733133705f656e7472790073313332 *5f696e666f00733133325f656e74727900733133725f696e666f00733133725f656e7472790073 *3133745f696e666f00733133745f656e747279007331325a5f696e666f007331325a5f656e7472 *7900733133305f325f616c7400733133305f7674626c00733163455f315f616c74007331324b5f *696e666f007331324b5f656e747279007331324d5f696e666f007331324d5f656e747279007331 *32485f696e666f00733132485f656e747279007331324f5f696e666f007331324f5f656e747279 *00733132515f696e666f00733132515f656e74727900733132455f696e666f00733132455f656e *74727900733132535f696e666f00733132535f656e747279007331634e5f696e666f007331634e *5f72657400733132435f696e666f00733132435f656e74727900733132555f696e666f00733132 *555f656e74727900733132755f696e666f00733132755f656e74727900733163455f325f616c74 *00733163455f7674626c00723131585f656e747279007231315a5f737274007231315a5f636c6f *73757265007231315a5f696e666f007231315a5f656e74727900723132315f7372740072313231 *5f636c6f7375726500723132315f696e666f00733164435f315f616c7400733134695f696e666f *00733134695f656e74727900723132315f656e74727900733164445f315f616c7400733134655f *696e666f00733134655f656e74727900733164445f325f616c7400733164445f7674626c007331 *346b5f696e666f007331346b5f72657400733164455f315f616c74007331344e5f696e666f0073 *31344e5f656e747279007331644c5f696e666f007331644c5f72657400733134475f696e666f00 *733134475f656e747279007331344a5f696e666f007331344a5f656e74727900733135355f696e *666f00733135355f656e74727900733164485f315f616c7400733164495f315f616c7400733164 *4b5f315f616c7400733134595f696e666f00733134595f656e747279007331644b5f325f616c74 *007331644b5f7674626c00733164495f325f616c7400733164495f7674626c00733164485f325f *616c7400733164485f7674626c00733135315f696e666f00733135315f656e7472790073316446 *5f696e666f00733164465f72657400733164455f325f616c7400733164455f7674626c00733164 *435f325f616c7400733164435f7674626c00733135375f696e666f00733135375f726574007331 *64575f315f616c7400733164585f315f616c7400733135725f696e666f00733135725f656e7472 *7900733135545f696e666f00733135545f656e74727900733165345f696e666f00733165345f72 *657400733135575f696e666f00733135575f656e747279007331355a5f696e666f007331355a5f *656e74727900733164595f696e666f00733164595f72657400733164585f325f616c7400733164 *585f7674626c00733164575f325f616c7400733164575f7674626c00733164555f696e666f0073 *3164555f72657400733136315f696e666f00733136315f72657400733165645f315f616c740073 *3165655f315f616c7400733165685f315f616c7400733136415f315f616c74007331364b5f696e *666f007331364b5f656e747279007331656d5f315f616c7400733136515f696e666f0073313651 *5f656e747279007331656d5f325f616c74007331656d5f7674626c007331656b5f696e666f0073 *31656b5f72657400733165695f696e666f00733165695f72657400733136415f325f616c740073 *3136415f7674626c00733165685f325f616c7400733165685f7674626c00733136715f696e666f *00733136715f656e74727900733137305f696e666f00733137305f656e74727900733165705f31 *5f616c7400733165705f325f616c7400733165705f7674626c007331656e5f696e666f00733165 *6e5f72657400733165665f696e666f00733165665f72657400733165655f325f616c7400733165 *655f7674626c00733165645f325f616c7400733165645f7674626c00723132335f737274007231 *32335f636c6f7375726500723132335f696e666f007331637a5f315f616c74007331637a5f325f *616c74007331637a5f335f616c7400733163415f696e666f00733163415f72657400733137725f *696e666f00733137725f656e74727900733137795f696e666f00733137795f656e747279007331 *637a5f345f616c74007331637a5f355f616c74007331637a5f7674626c00723132335f656e7472 *7900723132355f73727400723132355f636c6f7375726500723132355f696e666f00733163515f *315f616c7400733163525f696e666f00733163525f72657400733138335f696e666f0073313833 *5f656e74727900733138365f696e666f00733138365f656e74727900723132355f656e74727900 *733163515f325f616c7400733163515f7674626c00733138385f696e666f00733138385f726574 *00733164315f315f616c74007331394d5f696e666f007331394d5f656e747279007331394b5f69 *6e666f007331394b5f656e747279007331394f5f64666c74007331394f5f7674626c007331396c *5f335f616c7400733139495f696e666f00733139495f656e747279007331396c5f345f616c7400 *733164335f696e666f00733164335f72657400733139795f696e666f00733139795f656e747279 *00733139435f696e666f00733139435f656e747279007331396c5f355f616c74007331396c5f64 *666c74007331396c5f7674626c00733164315f325f616c7400733164315f7674626c007331397a *5f315f616c7400733164635f315f616c7400733139645f696e666f00733139645f656e74727900 *733138525f345f616c7400733164655f696e666f00733164655f72657400733139345f696e666f *00733139345f656e74727900733139375f696e666f00733139375f656e74727900733138525f35 *5f616c7400733138525f64666c7400733138525f7674626c00733164635f325f616c7400733164 *635f7674626c007331397a5f325f616c74007331646e5f315f616c7400733138495f696e666f00 *733138495f656e74727900733138475f696e666f00733138475f656e747279007331384b5f6466 *6c74007331384b5f7674626c00733138685f315f616c7400733138445f696e666f00733138445f *656e74727900733138685f345f616c7400733164715f696e666f00733164715f72657400733138 *755f696e666f00733138755f656e74727900733138785f696e666f00733138785f656e74727900 *733138685f355f616c7400733138685f64666c7400733138685f7674626c007331646e5f325f61 *6c74007331646e5f7674626c007331397a5f335f616c74007331397a5f64666c74007331397a5f *7674626c00733139515f696e666f00733139515f72657400733164425f315f616c740073316133 *5f696e666f00733161335f656e74727900733164425f325f616c7400733164425f7674626c0073 *31647a5f696e666f007331647a5f72657400733162615f696e666f00733162615f656e74727900 *733163765f315f616c7400733161465f696e666f00733161465f656e74727900733161485f696e *666f00733161485f656e747279007331614e5f696e666f007331614e5f656e7472790073316149 *5f656e747279007331614c5f696e666f007331614c5f656e74727900733161585f315f616c7400 *7331615a5f696e666f007331615a5f656e74727900733161575f696e666f00733161575f656e74 *727900733162345f696e666f00733162345f656e74727900733162315f696e666f00733162315f *656e74727900733163785f696e666f00733163785f72657400733161585f325f616c7400733161 *585f7674626c00733162385f696e666f00733162385f656e74727900733162365f696e666f0073 *3162365f656e74727900733161435f696e666f00733161435f72657400733163765f325f616c74 *00733163765f7674626c00733161495f696e666f00733162645f696e666f00733162645f656e74 *727900733161685f696e666f00733161685f656e74727900733161645f696e666f00733161645f *656e747279007331616a5f696e666f007331616a5f656e74727900733161385f696e666f007331 *61385f656e747279007331616c5f696e666f007331616c5f656e74727900733163745f315f616c *7400733163745f325f616c7400733163745f7674626c007331636f5f315f616c7400733163705f *315f616c7400733163725f696e666f00733163725f72657400733163715f315f616c7400733163 *715f325f616c7400733163715f7674626c00733163705f325f616c7400733163705f7674626c00 *7331636f5f325f616c74007331636f5f7674626c007331636e5f315f616c74007331636e5f325f *616c74007331636e5f335f616c74007331636e5f345f616c74007331636e5f355f616c74007331 *636e5f7674626c00723257325f636c6f7375726500723257325f696e666f00733355615f315f61 *6c7400733355625f315f616c740073337a505f656e74727900733355625f325f616c7400733355 *625f7674626c00733355615f325f616c7400733355615f7674626c0073337a505f696e666f0073 *337a565f696e666f0073337a565f656e74727900733355645f315f616c7400733355655f315f61 *6c7400733355655f325f616c740073337a775f656e74727900733355655f7674626c0073335564 *5f325f616c7400733355645f7674626c0073337a775f696e666f0073337a445f696e666f007333 *7a445f656e74727900723257325f656e74727900723379515f73727400723379515f636c6f7375 *726500723379515f696e666f00723379515f656e747279007333475a5f737274007333475a5f63 *6c6f73757265007333475a5f696e666f00733353615f696e666f00733353615f72657400733346 *565f696e666f00733346565f656e747279007333464e5f696e666f007333464e5f656e74727900 *733353655f696e666f00733353655f726574007333464a5f696e666f007333464a5f656e747279 *00733346425f696e666f00733346425f656e74727900733353695f696e666f00733353695f7265 *7400733346785f696e666f00733346785f656e74727900733346705f696e666f00733346705f65 *6e747279007333536d5f696e666f007333536d5f726574007333466c5f696e666f007333466c5f *656e74727900733346645f696e666f00733346645f656e74727900733353715f696e666f007333 *53715f72657400733346395f696e666f00733346395f656e74727900733346315f696e666f0073 *3346315f656e74727900733353755f696e666f00733353755f72657400733345585f696e666f00 *733345585f656e74727900733345505f696e666f00733345505f656e74727900733353795f696e *666f00733353795f726574007333454c5f696e666f007333454c5f656e74727900733345445f69 *6e666f00733345445f656e74727900733353435f696e666f00733353435f726574007333457a5f *696e666f007333457a5f656e74727900733345725f696e666f00733345725f656e747279007333 *53475f696e666f00733353475f726574007333456e5f696e666f007333456e5f656e7472790073 *3345665f696e666f00733345665f656e747279007333534b5f696e666f007333534b5f72657400 *733345625f696e666f00733345625f656e74727900733345335f696e666f00733345335f656e74 *7279007333534f5f696e666f007333534f5f726574007333445a5f696e666f007333445a5f656e *74727900733344525f696e666f00733344525f656e74727900733353535f696e666f0073335353 *5f726574007333444e5f696e666f007333444e5f656e74727900733344465f696e666f00733344 *465f656e74727900733353575f696e666f00733353575f72657400733344425f696e666f007333 *44425f656e74727900733344745f696e666f00733344745f656e74727900733354305f696e666f *00733354305f72657400733344705f696e666f00733344705f656e74727900733344685f696e66 *6f00733344685f656e74727900733354345f696e666f00733354345f72657400733344645f696e *666f00733344645f656e74727900733344355f696e666f00733344355f656e7472790073335438 *5f696e666f00733354385f72657400733344315f696e666f00733344315f656e74727900733343 *545f696e666f00733343545f656e74727900733354635f696e666f00733354635f726574007333 *43505f696e666f00733343505f656e74727900733343485f696e666f00733343485f656e747279 *00733354675f696e666f00733354675f72657400733343445f696e666f00733343445f656e7472 *7900733343765f696e666f00733343765f656e747279007333546b5f696e666f007333546b5f72 *657400733343725f696e666f00733343725f656e747279007333436a5f696e666f007333436a5f *656e747279007333546f5f696e666f007333546f5f72657400733343665f696e666f0073334366 *5f656e74727900733343375f696e666f00733343375f656e74727900733354735f696e666f0073 *3354735f72657400733343335f696e666f00733343335f656e74727900733342565f696e666f00 *733342565f656e74727900733354775f696e666f00733354775f72657400733342525f696e666f *00733342525f656e747279007333424a5f696e666f007333424a5f656e74727900733354415f69 *6e666f00733354415f72657400733342465f696e666f00733342465f656e74727900733342785f *696e666f00733342785f656e74727900733354455f696e666f00733354455f7265740073334274 *5f696e666f00733342745f656e747279007333426c5f696e666f007333426c5f656e7472790073 *3354495f696e666f00733354495f72657400733342685f696e666f00733342685f656e74727900 *733342395f696e666f00733342395f656e747279007333544d5f696e666f007333544d5f726574 *00733342355f696e666f00733342355f656e74727900733341585f696e666f00733341585f656e *74727900733354515f696e666f00733354515f72657400733341545f696e666f00733341545f65 *6e747279007333414c5f696e666f007333414c5f656e74727900733354555f696e666f00733354 *555f72657400733341485f696e666f00733341485f656e747279007333417a5f696e666f007333 *417a5f656e74727900733354595f696e666f00733354595f72657400733341765f696e666f0073 *3341765f656e747279007333416e5f696e666f007333416e5f656e74727900733355325f696e66 *6f00733355325f726574007333416a5f696e666f007333416a5f656e74727900733341625f696e *666f00733341625f656e74727900733355365f696e666f00733355365f72657400733341375f69 *6e666f00733341375f656e7472790073337a5a5f696e666f0073337a5a5f656e74727900733347 *5a5f656e74727900723379535f73727400723379535f636c6f7375726500723379535f696e666f *00723379535f656e74727900723379555f73727400723379555f636c6f7375726500723379555f *696e666f00733348365f696e666f00733348365f656e74727900733348385f696e666f00733348 *385f656e74727900733348615f696e666f00733348615f656e74727900733348635f696e666f00 *733348635f656e74727900733348655f696e666f00733348655f656e74727900733348675f696e *666f00733348675f656e74727900733348695f696e666f00733348695f656e747279007333486b *5f696e666f007333486b5f656e747279007333486d5f696e666f007333486d5f656e7472790073 *33486f5f696e666f007333486f5f656e74727900733348715f696e666f00733348715f656e7472 *7900733348735f696e666f00733348735f656e74727900733348755f696e666f00733348755f65 *6e74727900733348775f696e666f00733348775f656e74727900733348795f696e666f00733348 *795f656e74727900733348415f696e666f00733348415f656e74727900733348435f696e666f00 *733348435f656e74727900733348455f696e666f00733348455f656e74727900733348475f696e *666f00733348475f656e74727900733348495f696e666f00733348495f656e747279007333484b *5f696e666f007333484b5f656e747279007333484d5f696e666f007333484d5f656e7472790073 *33484f5f696e666f007333484f5f656e74727900733348515f696e666f00733348515f656e7472 *7900733348535f696e666f00733348535f656e74727900733348555f696e666f00733348555f65 *6e74727900733348575f696e666f00733348575f656e74727900733348595f696e666f00733348 *595f656e74727900733349305f696e666f00733349305f656e74727900733349325f696e666f00 *733349325f656e74727900733349345f696e666f00733349345f656e74727900733353395f696e *666f00733353395f72657400723379555f656e74727900733349375f636c6f7375726500733349 *395f73727400733349395f636c6f7375726500733349395f696e666f00733349395f656e747279 *00723379575f73727400723379575f636c6f7375726500723379575f696e666f00723379575f65 *6e74727900723379595f73727400723379595f636c6f7375726500723379595f696e666f007333 *49695f696e666f00733349695f72657400733349685f696e666f00733349685f72657400723379 *595f656e7472790072337a305f7372740072337a305f636c6f737572650072337a305f696e666f *00733349715f696e666f00733349715f656e7472790072337a305f656e7472790072337a345f73 *72740072337a345f636c6f737572650072337a345f696e666f0072337a345f656e747279007233 *7a365f7372740072337a365f636c6f737572650072337a365f696e666f0072337a365f656e7472 *7900733349415f696e666f00733349415f656e74727900733349435f696e666f00733349435f65 *6e74727900733349455f696e666f00733349455f656e74727900733349475f696e666f00733349 *475f656e74727900733349495f696e666f00733349495f656e747279007333494b5f696e666f00 *7333494b5f656e747279007333494d5f696e666f007333494d5f656e747279007333494f5f696e *666f007333494f5f656e74727900733349515f696e666f00733349515f656e7472790073334953 *5f696e666f00733349535f656e74727900733349555f696e666f00733349555f656e7472790073 *3349575f696e666f00733349575f656e74727900733349595f696e666f00733349595f656e7472 *790073334a305f696e666f0073334a305f656e7472790073334a325f696e666f0073334a325f65 *6e7472790073334a345f696e666f0073334a345f656e7472790073334a365f696e666f0073334a *365f656e7472790073334a385f696e666f0073334a385f656e7472790073334a615f696e666f00 *73334a615f656e7472790073334a635f696e666f0073334a635f656e7472790073334a655f696e *666f0073334a655f656e7472790073334a675f696e666f0073334a675f656e7472790073334a69 *5f696e666f0073334a695f656e7472790073334a6b5f696e666f0073334a6b5f656e7472790073 *334a6d5f696e666f0073334a6d5f656e7472790073334a6f5f696e666f0073334a6f5f656e7472 *7900733353375f696e666f00733353375f7265740073334a715f696e666f0073334a715f656e74 *72790073334a745f696e666f0073334a745f656e7472790073334a765f696e666f0073334a765f *656e7472790073334a445f696e666f0073334a445f656e7472790073334a465f696e666f007333 *4a465f656e7472790073334a485f696e666f0073334a485f656e7472790073334a4a5f696e666f *0073334a4a5f656e7472790073334a4c5f696e666f0073334a4c5f656e7472790073334a4e5f69 *6e666f0073334a4e5f656e7472790073334a505f696e666f0073334a505f656e7472790073334a *525f696e666f0073334a525f656e7472790073334a545f696e666f0073334a545f656e74727900 *73334a565f696e666f0073334a565f656e7472790073334a585f696e666f0073334a585f656e74 *72790073334a5a5f696e666f0073334a5a5f656e7472790073334b315f696e666f0073334b315f *656e7472790073334b335f696e666f0073334b335f656e7472790073334b355f696e666f007333 *4b355f656e7472790073334b375f696e666f0073334b375f656e7472790073334a425f696e666f *0073334a425f7265740073334b395f696e666f0073334b395f656e7472790073334b635f696e66 *6f0073334b635f656e7472790073334b655f696e666f0073334b655f656e7472790073334b6d5f *696e666f0073334b6d5f656e7472790073334b6f5f696e666f0073334b6f5f656e747279007333 *4b6b5f696e666f0073334b6b5f7265740073334b715f696e666f0073334b715f656e7472790073 *334b745f696e666f0073334b745f656e7472790073334b765f696e666f0073334b765f656e7472 *790072337a615f7372740072337a615f636c6f737572650072337a615f696e666f0072337a615f *656e7472790072337a655f7372740072337a675f7372740072337a695f7372740072337a655f63 *6c6f737572650072337a675f636c6f737572650072337a695f636c6f737572650072337a655f69 *6e666f0072337a655f656e7472790072337a675f696e666f0072337a675f656e7472790072337a *695f696e666f0072337a695f656e74727900733353325f315f616c7400733353335f315f616c74 *00733353335f325f616c7400733353335f7674626c00733353325f325f616c7400733353325f76 *74626c00733352555f315f616c74007333525a5f315f616c74007333525a5f325f616c74007333 *525a5f7674626c00733352565f315f616c7400733352575f315f616c7400733352575f325f616c *7400733352575f7674626c00733352565f325f616c7400733352565f7674626c00733352555f32 *5f616c7400733352555f7674626c00733352455f315f616c7400733352525f315f616c74007333 *52525f325f616c7400733352525f7674626c007333524e5f315f616c74007333524f5f315f616c *74007333524f5f325f616c74007333524f5f7674626c007333524e5f325f616c74007333524e5f *7674626c00733352465f315f616c74007333524b5f315f616c74007333524b5f325f616c740073 *33524b5f7674626c00733352475f315f616c7400733352485f315f616c7400733352485f325f61 *6c7400733352485f7674626c00733352475f325f616c7400733352475f7674626c00733352465f *325f616c7400733352465f7674626c00733352455f325f616c7400733352455f7674626c007333 *52385f315f616c7400733352425f315f616c7400733352425f325f616c7400733352425f767462 *6c00733352785f315f616c7400733352795f315f616c7400733352795f325f616c740073335279 *5f7674626c00733352785f325f616c7400733352785f7674626c00733352705f315f616c740073 *3352755f315f616c7400733352755f325f616c7400733352755f7674626c00733352715f315f61 *6c7400733352725f315f616c7400733352725f325f616c7400733352725f7674626c0073335271 *5f325f616c7400733352715f7674626c00733352705f325f616c7400733352705f7674626c0073 *3352395f315f616c74007333526d5f315f616c74007333526d5f325f616c74007333526d5f7674 *626c00733352695f315f616c74007333526a5f315f616c74007333526a5f325f616c7400733352 *6a5f7674626c00733352695f325f616c7400733352695f7674626c00733352615f315f616c7400 *733352665f315f616c7400733352665f325f616c7400733352665f7674626c00733352625f315f *616c7400733352635f315f616c7400733352635f325f616c7400733352635f7674626c00733352 *625f325f616c7400733352625f7674626c00733352615f325f616c7400733352615f7674626c00 *733352395f325f616c7400733352395f7674626c00733352385f325f616c7400733352385f7674 *626c00733352375f696e666f00733352375f7265740073456c5a5f696e666f0073456c5a5f656e *7472790073456d325f696e666f0073456d325f656e7472790073456d625f696e666f0073456d62 *5f656e7472790073456d375f696e666f0073456d375f656e7472790073456d745f696e666f0073 *456d745f656e7472790073454f725f696e666f0073454f725f7265740073456d775f696e666f00 *73456d775f656e7472790073454f6e5f696e666f0073454f6e5f7265740073456d7a5f696e666f *0073456d7a5f656e7472790073454f6a5f696e666f0073454f6a5f7265740073456d4c5f696e66 *6f0073456d4c5f656e7472790073456d4e5f696e666f0073456d4e5f656e7472790073456d505f *696e666f0073456d505f656e7472790073456d535f696e666f0073456d535f656e747279007345 *6d565f696e666f0073456d565f656e7472790073454e565f696e666f0073454e565f7265740073 *456e355f696e666f0073456e355f656e7472790073456e485f696e666f0073456e485f656e7472 *790073454f385f696e666f0073454f385f7265740073456e4b5f696e666f0073456e4b5f656e74 *72790073454f665f696e666f0073454f665f7265740073456e745f696e666f0073456e745f656e *7472790073456e765f696e666f0073456e765f656e7472790073454f355f696e666f0073454f35 *5f7265740073456e4e5f696e666f0073456e4e5f656e7472790073454f305f696e666f0073454f *305f7265740073456e515f696e666f0073456e515f656e7472790073454e5a5f696e666f007345 *4e5a5f7265740073456e575f696e666f0073456e575f656e7472790073454e4c5f696e666f0073 *454e4c5f7265740073456f495f696e666f0073456f495f656e7472790073454e475f696e666f00 *73454e475f7265740073456f4c5f696e666f0073456f4c5f656e7472790073454e525f696e666f *0073454e525f7265740073456f6f5f696e666f0073456f6f5f656e7472790073456f715f696e66 *6f0073456f715f656e7472790073454e445f696e666f0073454e445f7265740073456f4f5f696e *666f0073456f4f5f656e7472790073454e795f696e666f0073454e795f7265740073456f525f69 *6e666f0073456f525f656e7472790073456f355f696e666f0073456f355f656e7472790073454e *785f696e666f0073454e785f7265740073456f555f696e666f0073456f555f656e747279007345 *6f575f696e666f0073456f575f656e74727900724467735f73727400724467735f636c6f737572 *6500724467735f696e666f0073454e765f696e666f0073454e765f72657400724467735f656e74 *7279007345706d5f696e666f007345706d5f656e7472790073454e665f315f616c740073454e68 *5f315f616c740073454e685f325f616c7400734570445f656e7472790073454e685f7674626c00 *73454e675f696e666f0073454e675f7265740073454e665f325f616c740073454e665f7674626c *00734570445f696e666f0073454e6c5f315f616c740073454e6e5f315f616c7400734571385f65 *6e7472790073454e6e5f325f616c740073454e6e5f7674626c0073454e6d5f696e666f0073454e *6d5f7265740073454e6c5f325f616c740073454e6c5f7674626c00734571385f696e666f007345 *4e6f5f315f616c740073454e705f315f616c740073454e705f325f616c740073454e705f767462 *6c0073454e6f5f325f616c740073454e6f5f7674626c0073454e6b5f315f616c740073454e735f *315f616c740073454e735f325f616c740073454e735f7674626c0073454e6b5f325f616c740073 *454e6b5f7674626c0072456c665f636c6f737572650072456c685f7372740072456c685f636c6f *737572650072456c685f696e666f0072456c685f656e74727900734571745f696e666f00734571 *745f656e74727900734571725f696e666f00734571725f656e7472790072456c6a5f7372740072 *456c6a5f636c6f737572650072456c6a5f696e666f0072456c6a5f656e747279007345717a5f69 *6e666f007345717a5f656e74727900734571785f696e666f00734571785f656e7472790072456c *6c5f7372740072456c6c5f636c6f737572650072456c6c5f696e666f0072456c6c5f656e747279 *00734571445f73727400734571445f636c6f7375726500734571445f696e666f00734571445f65 *6e7472790072456c6e5f7372740072456c6e5f636c6f737572650072456c6e5f696e666f007245 *6c6e5f656e7472790072456c705f7372740072456c705f636c6f737572650072456c705f696e66 *6f0072456c705f656e7472790072456c725f7372740072456c725f636c6f737572650072456c72 *5f696e666f0072456c725f656e747279007345714d5f696e666f007345714d5f656e7472790073 *45714f5f696e666f007345714f5f656e747279007345714b5f696e666f007345714b5f656e7472 *7900734571515f696e666f00734571515f656e74727900734571535f696e666f00734571535f65 *6e7472790073454e385f696e666f0073454e385f72657400734572775f696e666f00734572775f *656e74727900734572645f696e666f00734572645f656e74727900734572665f696e666f007345 *72665f656e74727900734572625f696e666f00734572625f656e74727900734572685f696e666f *00734572685f656e747279007345726a5f696e666f007345726a5f656e7472790073454e345f69 *6e666f0073454e345f726574007345727a5f696e666f007345727a5f656e74727900734572315f *696e666f00734572315f656e7472790073454e335f696e666f0073454e335f7265740073457243 *5f696e666f00734572435f656e74727900734572455f696e666f00734572455f656e7472790073 *454e315f696e666f0073454e315f72657400734572545f696e666f00734572545f656e74727900 *7345724a5f696e666f007345724a5f656e747279007345724c5f696e666f007345724c5f656e74 *727900734572565f696e666f00734572565f656e74727900734572585f696e666f00734572585f *656e74727900724467765f73727400724467765f636c6f7375726500724467765f696e666f0073 *454d4f5f315f616c7400734573695f696e666f00734573695f656e74727900734573675f656e74 *727900734573745f315f616c740073454d535f315f616c740073454d545f696e666f0073454d54 *5f726574007345734f5f696e666f007345734f5f656e7472790073454d565f696e666f0073454d *565f72657400734573475f696e666f00734573475f656e7472790073454d585f315f616c740073 *4573545f696e666f00734573545f656e74727900734574305f696e666f00734574305f656e7472 *7900734574325f696e666f00734574325f656e74727900734574395f696e666f00734574395f72 *65740073454d595f315f616c74007345746f5f696e666f007345746f5f656e7472790073457471 *5f696e666f00734574715f656e7472790073454d5a5f696e666f0073454d5a5f7265740073454d *595f325f616c740073454d595f7674626c0073454d585f325f616c740073454d585f7674626c00 *73454d535f325f616c740073454d535f7674626c0073454d515f696e666f0073454d515f726574 *00734573745f325f616c7400734573745f7674626c0073454d505f696e666f0073454d505f7265 *740073454d4f5f325f616c740073454d4f5f7674626c00734573675f696e666f00724467765f65 *6e7472790072456c745f7372740072456c745f636c6f737572650072456c745f696e666f007245 *6c745f656e7472790072456c765f7372740072456c765f636c6f737572650072456c765f696e66 *6f0072456c765f656e7472790072456c785f7372740072456c785f636c6f737572650072456c78 *5f696e666f0072456c785f656e7472790072456c7a5f7372740072456c7a5f636c6f7375726500 *72456c7a5f696e666f0073454f5a5f696e666f0073454f5a5f7265740072456c7a5f656e747279 *0072456c425f636c6f737572650072456c425f696e666f0072456c425f656e7472790072456c44 *5f636c6f737572650072456c445f696e666f0072456c445f656e7472790072456c465f636c6f73 *7572650072456c465f696e666f0073454d4e5f315f616c740073454d4e5f325f616c740073454d *4e5f7674626c0072456c465f656e7472790072456c485f7372740072456c485f636c6f73757265 *0072456c485f696e666f0073454d375f696e666f0073454d375f72657400734577695f696e666f *00734577695f656e747279007345776b5f696e666f007345776b5f656e7472790073454d615f69 *6e666f0073454d615f72657400734577385f696e666f00734577385f656e747279007345776d5f *696e666f007345776d5f656e74727900734576575f696e666f00734576575f656e747279007345 *76595f696e666f00734576595f656e747279007345776f5f696e666f007345776f5f656e747279 *0073454d645f696e666f0073454d645f72657400734576555f696e666f00734576555f656e7472 *790073454d365f315f616c740073454d6c5f696e666f0073454d6c5f72657400734576795f696e *666f00734576795f656e74727900734576415f696e666f00734576415f656e7472790073454d6f *5f696e666f0073454d6f5f726574007345766f5f696e666f007345766f5f656e74727900734576 *435f696e666f00734576435f656e74727900734576635f696e666f00734576635f656e74727900 *734576655f696e666f00734576655f656e74727900734576455f696e666f00734576455f656e74 *72790073454d725f696e666f0073454d725f72657400734576615f696e666f00734576615f656e *7472790073454d365f325f616c740073454d7a5f696e666f0073454d7a5f726574007345754f5f *696e666f007345754f5f656e74727900734575515f696e666f00734575515f656e747279007345 *4d435f696e666f0073454d435f72657400734575455f696e666f00734575455f656e7472790073 *4575535f696e666f00734575535f656e74727900734575735f696e666f00734575735f656e7472 *7900734575755f696e666f00734575755f656e74727900734575555f696e666f00734575555f65 *6e7472790073454d465f696e666f0073454d465f72657400734575715f696e666f00734575715f *656e7472790073454d365f335f616c740073454d365f7674626c0072456c485f656e7472790073 *4577725f636c6f7375726500734577745f73727400734577745f636c6f7375726500734577745f *696e666f00734577745f656e7472790072456c4a5f7372740072456c4a5f636c6f737572650072 *456c4a5f696e666f0072456c4a5f656e74727900734578425f696e666f00734578425f656e7472 *7900734578755f696e666f00734578755f656e74727900734578445f696e666f00734578445f65 *6e7472790073454c575f696e666f0073454c575f72657400734578735f696e666f00734578735f *656e74727900734578465f696e666f00734578465f656e747279007345786b5f696e666f007345 *786b5f656e7472790073454c565f315f616c7400734578615f696e666f00734578615f656e7472 *7900734578635f696e666f00734578635f656e74727900734578375f696e666f00734578375f65 *6e74727900734578655f696e666f00734578655f656e7472790073454c5a5f696e666f0073454c *5a5f72657400734578355f696e666f00734578355f656e74727900734578675f696e666f007345 *78675f656e74727900734577585f696e666f00734577585f656e7472790073454c565f325f616c *740073454d325f315f616c74007345774f5f696e666f007345774f5f656e74727900734577525f *696e666f00734577525f656e7472790073454d335f696e666f0073454d335f726574007345774d *5f696e666f007345774d5f656e74727900734577545f696e666f00734577545f656e7472790073 *4577455f696e666f00734577455f656e7472790073454d325f325f616c740073454d325f767462 *6c0073454c565f335f616c740073454c565f7674626c0073454c515f696e666f0073454c515f72 *657400734578565f696e666f00734578565f656e7472790073454c545f315f616c740073454c54 *5f325f616c740073454c545f7674626c0073454c535f696e666f0073454c535f72657400734579 *375f696e666f00734579375f656e747279007345796a5f696e666f007345796a5f656e74727900 *7345796c5f696e666f007345796c5f656e74727900734579685f696e666f00734579685f656e74 *7279007345796e5f696e666f007345796e5f656e74727900734579765f696e666f00734579765f *656e7472790073454c555f315f616c740073454c555f325f616c740073454c555f7674626c0073 *4579515f696e666f00734579515f656e74727900734579535f696e666f00734579535f656e7472 *790073454c4e5f696e666f0073454c4e5f726574007345794a5f696e666f007345794a5f656e74 *727900734579555f696e666f00734579555f656e7472790073454c4d5f696e666f0073454c4d5f *7265740073457a365f696e666f0073457a365f656e7472790073457a385f696e666f0073457a38 *5f656e7472790073457a335f696e666f0073457a335f656e7472790073454c4c5f696e666f0073 *454c4c5f7265740073454c4a5f315f616c740073454c4b5f315f616c740073454c4b5f325f616c *740073454c4b5f7674626c0073457a6e5f696e666f0073457a6e5f656e7472790073457a705f69 *6e666f0073457a705f656e7472790073454c4a5f325f616c740073454c4a5f7674626c0073457a *725f696e666f0073457a725f656e7472790073457a775f696e666f0073457a775f656e74727900 *73457a795f696e666f0073457a795f656e7472790072456c4d5f7372740072456c4d5f636c6f73 *7572650072456c4d5f696e666f0072456c4d5f656e74727900734541645f696e666f0073454164 *5f656e74727900734541365f696e666f00734541365f656e74727900734541385f696e666f0073 *4541385f656e74727900734541665f696e666f00734541665f656e74727900734541345f696e66 *6f00734541345f656e7472790073454c495f315f616c740073457a585f696e666f0073457a585f *656e7472790073457a505f696e666f0073457a505f656e7472790073457a525f696e666f007345 *7a525f656e7472790073457a5a5f696e666f0073457a5a5f656e7472790073457a4e5f696e666f *0073457a4e5f656e7472790073454c495f325f616c740073454c495f7674626c00734541685f69 *6e666f00734541685f656e747279007345416f5f696e666f007345416f5f656e74727900734541 *735f696e666f00734541735f656e7472790072456c515f636c6f737572650072456c515f737274 *0072456c515f696e666f0072456c515f656e7472790073454c445f696e666f0073454c445f7265 *740073454c425f696e666f0073454c425f72657400734542425f696e666f00734542425f656e74 *727900734542445f696e666f00734542445f656e7472790073454c465f315f616c740073454c46 *5f325f616c740073454c465f7674626c007345426c5f696e666f007345426c5f656e7472790073 *4542675f696e666f00734542675f656e747279007345426e5f696e666f007345426e5f656e7472 *7900734542495f696e666f00734542495f656e747279007345424c5f696e666f007345424c5f65 *6e7472790073454c475f315f616c7400734542345f696e666f00734542345f656e747279007345 *4c475f325f616c740073454c475f7674626c00734542365f696e666f00734542365f656e747279 *0073454c485f315f616c7400734541525f696e666f00734541525f656e74727900734541545f69 *6e666f00734541545f656e747279007345414d5f696e666f007345414d5f656e74727900734541 *4f5f696e666f007345414f5f656e7472790073454c485f325f616c740073454c485f7674626c00 *734541565f696e666f00734541565f656e7472790073454c415f315f616c740073454c415f325f *616c740073454c415f7674626c00734543705f696e666f00734543705f656e7472790073454338 *5f696e666f00734543385f656e74727900734543345f696e666f00734543345f656e7472790073 *4542565f696e666f00734542565f656e74727900734542585f696e666f00734542585f656e7472 *7900734543365f696e666f00734543365f656e74727900734544645f696e666f00734544645f65 *6e7472790073454c765f315f616c740073454c765f325f616c740073454c765f7674626c007345 *44705f696e666f00734544705f656e74727900734544325f315f616c7400734544315f696e666f *00734544315f656e74727900734544345f696e666f00734544345f656e74727900734544325f32 *5f616c7400734544325f7674626c00734544365f696e666f00734544365f656e74727900734543 *495f315f616c74007345434b5f696e666f007345434b5f656e747279007345434d5f696e666f00 *7345434d5f656e747279007345434f5f696e666f007345434f5f656e74727900734543455f696e *666f00734543455f656e74727900734543475f696e666f00734543475f656e7472790073454349 *5f325f616c7400734543495f7674626c00734543515f696e666f00734543515f656e7472790072 *456c535f7372740072456c535f636c6f737572650072456c535f696e666f0073454f425f315f61 *6c740073454f445f315f616c740073454f495f315f616c7400734545745f656e7472790073454f *4a5f696e666f0073454f4a5f72657400734545665f696e666f00734545665f656e747279007345 *45375f696e666f00734545375f656e74727900734545685f696e666f00734545685f656e747279 *0073454f4d5f696e666f0073454f4d5f72657400734545355f696e666f00734545355f656e7472 *79007345456a5f696e666f007345456a5f656e74727900734544585f696e666f00734544585f65 *6e747279007345456c5f696e666f007345456c5f656e747279007345456e5f696e666f00734545 *6e5f656e74727900734544565f696e666f00734544565f656e74727900734545705f696e666f00 *734545705f656e7472790073454f495f325f616c740073454f495f7674626c0073454f475f696e *666f0073454f475f7265740073454f455f696e666f0073454f455f7265740073454f445f325f61 *6c740073454f445f7674626c00734545745f696e666f0073454f505f696e666f0073454f505f72 *657400734545455f696e666f00734545455f656e74727900734545555f696e666f00734545555f *656e7472790073454f535f696e666f0073454f535f72657400734545535f696e666f0073454553 *5f656e74727900734545575f696e666f00734545575f656e747279007345454c5f696e666f0073 *45454c5f656e74727900734545595f696e666f00734545595f656e74727900734546305f696e66 *6f00734546305f7265740073454f565f315f616c7400734546645f696e666f00734546645f656e *7472790073454f595f315f616c74007345466d5f696e666f007345466d5f656e7472790073454f *595f325f616c740073454f595f7674626c0073454f575f696e666f0073454f575f726574007245 *6c535f656e7472790073454f565f325f616c740073454f565f7674626c0073454f525f696e666f *0073454f525f7265740073454f435f696e666f0073454f435f7265740073454f425f325f616c74 *0073454f425f7674626c00734547675f73727400734547675f636c6f7375726500734547675f69 *6e666f0073454c655f696e666f0073454c655f72657400734547385f696e666f00734547385f65 *6e74727900734547615f696e666f00734547615f656e74727900734547635f696e666f00734547 *635f656e7472790073454c6f5f315f616c740073454c725f315f616c740073454c735f696e666f *0073454c735f7265740073454c725f325f616c740073454c725f7674626c0073454c705f696e66 *6f0073454c705f7265740073454c6f5f325f616c740073454c6f5f7674626c0073454c6d5f696e *666f0073454c6d5f72657400734546555f696e666f00734546555f656e74727900734546575f69 *6e666f00734546575f656e74727900734547655f696e666f00734547655f656e74727900734547 *675f656e7472790072456c555f7372740072456c555f636c6f737572650072456c555f696e666f *007345476f5f315f616c7400734547715f696e666f00734547715f656e74727900734547455f69 *6e666f00734547455f656e74727900734547475f696e666f00734547475f656e7472790072456c *555f656e747279007345476f5f325f616c74007345476f5f7674626c00734548795f7372740073 *4548795f636c6f7375726500734548795f696e666f0073454b585f696e666f0073454b585f7265 *74007345486f5f696e666f007345486f5f656e74727900734548715f696e666f00734548715f65 *6e74727900734548735f696e666f00734548735f656e7472790073454c375f315f616c74007345 *4c615f315f616c740073454c625f696e666f0073454c625f7265740073454c615f325f616c7400 *73454c615f7674626c0073454c385f696e666f0073454c385f7265740073454c375f325f616c74 *0073454c375f7674626c0073454c355f696e666f0073454c355f72657400734548615f696e666f *00734548615f656e74727900734548635f696e666f00734548635f656e74727900734548755f69 *6e666f00734548755f656e74727900734548775f696e666f00734548775f656e74727900734547 *4c5f696e666f007345474c5f656e74727900734548795f656e747279007345474a5f7372740073 *45474a5f636c6f73757265007345474a5f696e666f007345474a5f656e7472790073454b545f69 *6e666f0073454b545f7265740073454b505f696e666f0073454b505f7265740073454b4c5f696e *666f0073454b4c5f7265740073454b485f696e666f0073454b485f7265740073454b475f696e66 *6f0073454b475f7265740073454b435f315f616c740073454b465f696e666f0073454b465f7265 *740073454b445f315f616c740073454b455f696e666f0073454b455f7265740073454b445f325f *616c740073454b445f7674626c0073454b435f325f616c740073454b435f7674626c0073454b42 *5f315f616c740073454b425f325f616c740073454b425f335f616c740073454b425f7674626c00 *73454b415f315f616c740073454b415f325f616c740073454b415f7674626c0073454b7a5f315f *616c740073454b7a5f325f616c740073454b7a5f7674626c0073454b795f696e666f0073454b79 *5f7265740073454b785f696e666f0073454b785f7265740073454b775f696e666f0073454b775f *7265740073454b765f696e666f0073454b765f726574005f6d6f64756c655f7265676973746572 *656400733758575f696e666f00733758575f736c6f7700733758575f656e74727900733871305f *315f616c7400733871305f325f616c7400733871305f7674626c00733871335f315f616c740073 *3871335f325f616c7400733871335f7674626c007337594e5f696e666f007337594e5f736c6f77 *007337594e5f656e74727900733870545f315f616c7400733870545f325f616c7400733870545f *7674626c00733759795f72657400733870575f315f616c7400733870575f325f616c7400733870 *575f7674626c00733833565f696e666f00733833565f736c6f7700733833565f656e7472790073 *3870645f315f616c7400733870645f325f616c7400733870645f7674626c00733833475f696e66 *6f00733833475f72657400733870675f315f616c7400733870675f325f616c7400733870675f76 *74626c0053797374656d7a69506f7369787a6946696c65735f73657446696c6554696d65735f73 *727400733839485f696e666f00733839745f736c6f7700733839745f656e7472790073386f465f *696e666f0073386f465f72657400733839745f696e666f0073386f455f696e666f0073386f455f *72657400733839765f696e666f00733839765f656e7472790073386f475f696e666f0073386f47 *5f7265740073386f445f696e666f0073386f445f7265740073386f435f696e666f0073386f435f *7265740073386f415f696e666f0073386f415f72657400733839485f656e747279005379737465 *6d7a69506f7369787a6946696c65735f73657446696c654d6f64655f737274007338616b5f696e *666f00733861695f696e666f00733861695f656e747279007338616b5f656e7472790053797374 *656d7a69506f7369787a6946696c65735f67657446696c655374617475735f7372740073386f70 *5f696e666f007338626e5f736c6f770073386f735f696e666f0073386f735f7265740073386f72 *5f696e666f0073386f725f7265740073386f745f696e666f0073386f745f7265740073386f715f *696e666f0073386f715f7265740073386f705f7265740053797374656d7a69506f7369787a6946 *696c65735f7468726f774572726e6f49664d696e7573317a755f7372740053797374656d7a6950 *6f7369787a6946696c65735f7468726f774572726e6f49664d696e7573317a75315f7372740073 *3234595f696e666f00733235365f696e666f007332356c5f696e666f00733262335f696e666f00 *733261585f696e666f00733261585f72657400733234595f656e74727900733235365f736c6f77 *00733235365f656e747279007332356c5f736c6f77007332356c5f656e74727900733262315f69 *6e666f00733262315f72657400733262305f696e666f00733262305f72657400733262335f736c *6f7700733262335f656e74727900733236385f696e666f00733236385f736c6f7700733236385f *656e74727900733261525f696e666f00733261525f72657400733235555f696e666f0073323555 *5f656e74727900733235485f736c6f7700733235485f656e74727900733235485f696e666f0073 *3261565f696e666f00733261565f72657400733261555f696e666f00733261555f726574007332 *61515f696e666f00733261515f72657400733145665f696e666f00733145665f72657400733145 *635f696e666f00733178665f696e666f00733178665f656e74727900733145635f726574007331 *45375f7674626c00733145375f315f616c7400733145385f696e666f00733145385f7265740073 *3145375f325f616c7400733145325f7674626c00733145335f696e666f00733145335f72657400 *733145325f315f616c7400733145325f325f616c7400733144525f696e666f00733144525f7265 *74007331426d5f696e666f007331426b5f696e666f007331426d5f656e747279007331426b5f65 *6e74727900733142775f7674626c00733142775f64666c7400733142565f696e666f0073314244 *5f696e666f00733142545f696e666f00733142565f656e74727900733142445f656e7472790073 *3142505f696e666f00733142505f656e74727900733142525f696e666f00733142525f656e7472 *7900733142545f656e74727900733143355f7674626c00733143355f64666c74007343665f696e *666f0073436e5f696e666f007345435f315f616c74007345435f325f616c74007345435f767462 *6c0073457a5f315f616c74007345415f315f616c74007345415f325f616c74007345415f767462 *6c0073457a5f325f616c740073457a5f7674626c007343665f656e7472790073436c5f64666c74 *0073436c5f7674626c0073436e5f656e74727900733539495f7674626c00733539495f315f616c *74007334716c5f315f616c74007334716e5f696e666f007334716e5f656e747279007334716c5f *325f616c74007334716c5f7674626c00733539495f325f616c7400733471785f7674626c007334 *71785f315f616c7400733539445f696e666f00733539445f72657400733471455f696e666f0073 *3471455f656e74727900733539455f696e666f00733539455f72657400733471515f696e666f00 *733471515f656e74727900733471785f325f616c7400733539415f7674626c00733539415f315f *616c7400733472305f696e666f00733472305f656e74727900733539415f325f616c7400733472 *615f7674626c00733472615f315f616c7400733539745f696e666f00733539745f726574007334 *72685f696e666f00733472685f656e74727900733539775f315f616c7400733539775f325f616c *7400733539775f7674626c00733539755f696e666f00733539755f72657400733472785f696e66 *6f00733472785f656e74727900733472615f325f616c74007335304f5f7674626c007335304f5f *315f616c7400733455435f315f616c7400733455455f696e666f00733455455f656e7472790073 *3455435f325f616c7400733455435f7674626c007335304f5f325f616c7400733459385f696e66 *6f00733459385f656e74727900733530725f315f616c7400733459635f696e666f00733459635f *656e74727900733530735f315f616c7400733530735f325f616c7400733530735f7674626c0073 *3530725f325f616c7400733530725f7674626c00733459455f726574007335306d5f315f616c74 *007335306e5f315f616c7400733530715f315f616c7400733530715f325f616c7400733530715f *7674626c007335306f5f696e666f007335306f5f726574007335306e5f325f616c74007335306e *5f7674626c007335306d5f325f616c74007335306d5f7674626c00733459455f696e666f007334 *59525f696e666f007334594f5f7674626c00733459525f656e747279007334594f5f64666c7400 *733530675f7674626c00733530675f315f616c7400733530675f325f616c740073576d5f767462 *6c0073576d5f315f616c740073576e5f315f616c74007353615f696e666f007353615f656e7472 *790073576e5f325f616c740073576e5f7674626c0073576d5f325f616c74007357675f7674626c *007357675f315f616c74007357675f325f616c7400446174617a694d617962655f66726f6d4a75 *73745f737274007357665f7674626c007357665f315f616c74007357665f325f616c7400735764 *5f7674626c007357645f315f616c74007357645f325f616c74007357615f7674626c007357615f *315f616c74007357615f325f616c74007354575f696e666f007355345f696e666f007354485f69 *6e666f007354485f726574007354475f696e666f007354475f726574007354435f315f616c7400 *7354505f696e666f007354505f7265740073544f5f696e666f0073544f5f7265740073544d5f31 *5f616c740073544d5f325f616c740073544d5f7674626c007354435f325f616c74007354435f76 *74626c007354575f656e747279007355325f64666c74007355325f7674626c007355345f656e74 *72790073384a705f696e666f0073384a785f696e666f0073384a6e5f696e666f0073384a6e5f65 *6e7472790073384a695f64666c74007367666f5f696e666f007367666f5f726574007367666e5f *696e666f007367666e5f7265740073384a705f656e7472790073384a765f64666c740073384a76 *5f7674626c0073384a785f656e747279007367634d5f696e666f007367634d5f72657400736763 *4b5f696e666f007367634b5f72657400446174617a695479706561626c655f6d6b5479436f6e5f *737274007337694f5f696e666f007337694f5f72657400446174617a695479706561626c655f6d *6b41707054795f73727400733769735f696e666f00733769735f72657400733359355f696e666f *00733436415f696e666f00733359325f696e666f00733359325f656e74727900733436645f696e *666f00733436645f72657400733359355f656e74727900733436785f315f616c7400733436795f *696e666f00733436795f72657400733436785f325f616c7400733436785f7674626c0073343676 *5f696e666f00733436765f726574007334366d5f696e666f007334366d5f726574007334366c5f *696e666f007334366c5f72657400733436415f656e7472790073354b645f315f616c740073354b *655f696e666f0073354b655f7265740073354b645f325f616c740073354b645f7674626c007335 *4b685f7265740073354b665f696e666f0073354b665f7265740073354b625f696e666f0073354b *625f72657400733545495f696e666f00733545495f72657400733250525f696e666f0073326951 *5f696e666f00733269515f656e74727900733250525f7265740073326f425f696e666f0073326f *425f7265740073324f4d5f7674626c0073324f4d5f315f616c740073324f4d5f325f616c740073 *324e595f696e666f0073324f365f315f616c740073324f365f325f616c740073324f365f767462 *6c0073324e595f7265740073324e4f5f696e666f0073324e575f315f616c740073324e575f325f *616c740073324e575f7674626c0073324e4f5f7265740073324e455f696e666f0073324e4d5f31 *5f616c740073324e4d5f64666c740073324e4d5f7674626c0073324e455f7265740073324e755f *696e666f0073324e435f315f616c740073324e435f64666c740073324e435f7674626c0073324e *755f7265740073324e6b5f696e666f0073324e735f335f616c740073324e735f64666c74007332 *4e735f7674626c0073324e6b5f7265740073324e695f335f616c740073324e695f64666c740073 *324e695f7674626c0073324e615f7265740073324e315f7674626c0073324e315f315f616c7400 *73324e315f325f616c740073324e305f7674626c0073324e305f315f616c740073324e305f325f *616c74007332776e5f696e666f007332776e5f656e74727900733277705f696e666f0073327770 *5f656e747279007332516e5f7674626c007332516f5f315f616c74007332516f5f325f616c7400 *7332516f5f7674626c007332516e5f315f616c7400733251725f315f616c7400733251745f696e *666f00733251745f72657400733251735f696e666f00733251735f72657400733251725f325f61 *6c7400733251725f7674626c007332516e5f325f616c740073324d535f696e666f0073324d555f *315f616c740073324d555f325f616c740073324d555f7674626c0073324d535f72657400733241 *705f696e666f0073324d4f5f315f616c740073324d4f5f325f616c740073324d4f5f7674626c00 *73324d4e5f315f616c740073324d525f315f616c74007332416d5f64666c74007332416d5f7674 *626c0073324d525f325f616c740073324d525f7674626c0073324d4e5f325f616c740073324d4e *5f7674626c00733241705f656e74727900733242335f696e666f007332426b5f696e666f007332 *426d5f696e666f007332426f5f696e666f0073324d4a5f315f616c740073324d4a5f325f616c74 *0073324d4a5f7674626c0073324d495f315f616c740073324d4d5f315f616c7400733242305f32 *5f616c7400733242335f656e74727900733242305f64666c7400733242305f7674626c0073324d *4d5f325f616c740073324d4d5f7674626c0073324d495f325f616c740073324d495f7674626c00 *7332426b5f656e747279007332426d5f656e747279007332426f5f656e74727900733243705f69 *6e666f00733243705f656e74727900733243725f696e666f00733243725f656e74727900733243 *4a5f696e666f007332434a5f656e747279007332434c5f696e666f007332434c5f656e74727900 *733245385f696e666f00733245385f656e7472790073324d785f315f616c740073324d785f325f *616c740073324d785f7674626c0073324d795f7674626c0073324d795f315f616c740073324572 *5f696e666f00733245725f656e7472790073324d795f325f616c740073324d7a5f7674626c0073 *324d7a5f315f616c7400733245445f696e666f00733245445f656e7472790073324d7a5f325f61 *6c740073324d735f696e666f0073324d735f7265740073324d635f696e666f0073324d635f7265 *740073324d385f696e666f0073324d385f7265740073324d345f696e666f0073324d345f726574 *0073324c475f696e666f0073324c475f7265740073324b4d5f726574004748437a694572725f70 *61744572726f725f73727400733131565f696e666f00733131565f656e747279004748437a6948 *616e646c655f7374646572725f737274004748437a6948616e646c655f7374646f75745f737274 *004748437a6948616e646c655f68436c6f73655f73727400736342735f7674626c00736342735f *315f616c740073646b345f696e666f0073646b345f72657400736342735f325f616c7400474843 *7a6948616e646c655f68466c7573685f737274004748437a6948616e646c655f6f70656e42696e *61727946696c655f73727400736464735f696e666f00736464325f696e666f007364654e5f696e *666f007364654e5f726574007364646d5f696e666f007364646d5f656e74727900736464375f69 *6e666f00736464375f72657400736464735f656e74727900736464325f656e747279004748437a *69494f5f684765744275665f737274007361336e5f696e666f007361336e5f726574004748437a *69494f5f685075744275665f73727400736133645f696e666f00736133655f696e666f00736133 *655f72657400736133645f726574004748437a69494f5f685075745374725f7372740073613254 *5f696e666f00736132565f315f616c7400736132565f325f616c7400736132565f335f616c7400 *736132565f7674626c00736132555f696e666f00736132555f72657400736132545f7265740073 *37756a5f696e666f007337756a5f72657400736268565f7674626c00736268565f315f616c7400 *736145325f696e666f00736145325f72657400736268565f325f616c7400736145675f696e666f *00736145675f72657400736268535f696e666f00736268535f72657400736268525f696e666f00 *736268525f72657400736268505f696e666f00736268515f696e666f00736268515f7265740073 *6268505f726574007362684e5f696e666f007362684f5f696e666f007362684f5f726574007362 *684e5f726574007362684c5f696e666f007362684d5f696e666f007362684d5f72657400736268 *4c5f7265740073324f515f7674626c0073324f515f315f616c740073324f515f325f616c740073 *324f485f7674626c0073324f485f315f616c740073324f485f325f616c740073324e7a5f696e66 *6f0073324e7a5f72657400733278675f696e666f00733278675f656e7472790073324f785f7674 *626c0073324f785f315f616c740073324f795f315f616c740073324f7a5f315f616c7400733279 *6d5f696e666f007332796d5f656e7472790073324f7a5f325f616c740073324f7a5f7674626c00 *73324f795f325f616c740073324f795f7674626c0073324f785f325f616c7400733241615f696e *666f00733241615f656e7472790073324e705f315f616c7400733241385f64666c740073324138 *5f7674626c0073324e705f325f616c740073324e705f7674626c004748437a694c6973745f6d61 *78696d756d5f7372740073324e355f7674626c0073324e355f315f616c740073324e365f315f61 *6c740073324e375f696e666f0073324e375f7265740073324e365f325f616c7400733242685f72 *65740073324e365f7674626c0073324e355f325f616c74007332424b5f7265740073324e345f31 *5f616c740073324e345f325f616c740073324e345f7674626c0073324e325f696e666f0073324e *325f7265740073324e315f696e666f0073324e315f726574007332424b5f696e666f0073324377 *5f7265740073324d535f315f616c740073324d565f315f616c740073324d565f325f616c740073 *324d565f7674626c0073324d545f7265740073324d535f325f616c740073324d535f7674626c00 *733243775f696e666f0073324f735f7674626c0073324f735f315f616c740073324f745f315f61 *6c740073324f745f325f616c740073324f745f7674626c0073324f735f325f616c740073324f71 *5f7674626c0073324f715f315f616c740073324f725f315f616c740073324f725f325f616c7400 *73324f725f7674626c0073324f715f325f616c740073324f675f696e666f0073324f675f726574 *00733244415f7674626c00733244415f315f616c7400733244465f696e666f00733244465f656e *7472790073324f685f315f616c740073324f685f325f616c740073324f685f7674626c00733244 *415f325f616c740073324f615f696e666f0073324f615f726574007332457a5f7674626c007332 *457a5f315f616c740073324f625f315f616c74007332456a5f696e666f007332456a5f656e7472 *790073324f625f325f616c740073324f625f7674626c007332457a5f325f616c740073324d4e5f *696e666f0073324d4e5f7265740073324d4b5f696e666f0073324d4b5f72657400733247355f76 *74626c00733247355f315f616c740073324f375f315f616c740073324f375f325f616c74007332 *4f375f7674626c00733247355f325f616c740073324d475f696e666f00733247535f696e666f00 *733247535f656e7472790073324d475f7265740073324a4a5f696e666f0073324a4a5f72657400 *4748437a694c6973745f696e69745f737274004748437a694c6973745f6c6173745f7372740047 *48437a694c6973745f7461696c5f7372740073324d765f7674626c0073324d765f315f616c7400 *73324d765f325f616c740073324d705f7674626c0073324d705f315f616c740073324d715f315f *616c740073324c615f696e666f0073324c615f656e7472790073324d715f325f616c740073324d *715f7674626c0073324d705f325f616c740073324d725f7674626c0073324d725f315f616c7400 *73324d735f315f616c740073324d735f325f616c740073324d735f7674626c0073324d725f325f *616c740073324d6e5f7674626c0073324d6e5f315f616c740073324d6f5f315f616c740073324c *4b5f696e666f0073324c4b5f656e7472790073324d6f5f325f616c740073324d6f5f7674626c00 *73324d6e5f325f616c740073324d6b5f7674626c0073324d6b5f315f616c740073324d6c5f315f *616c740073324d6d5f315f616c740073324d6d5f325f616c740073324d6d5f7674626c0073324d *645f696e666f0073324d645f656e7472790073324d6c5f325f616c740073324d6c5f7674626c00 *73324d315f696e666f0073324d315f656e7472790073324d6a5f696e666f0073324d6a5f656e74 *72790073324d6b5f325f616c74007358425f696e666f007358425f726574004748437a69526561 *645f63686f6f73655f73727400733665635f696e666f00733665635f656e7472790073364d675f *345f616c740073364d675f64666c7400733665425f656e74727900733665445f696e666f007336 *65445f656e74727900733665465f696e666f00733665465f656e747279007336654a5f696e666f *007336654a5f656e747279007336654f5f696e666f007336654f5f656e74727900733665555f69 *6e666f00733665555f656e747279004748437a69526561645f706172656e735f73727400733667 *655f696e666f00733667655f656e747279007336676b5f64666c74007336676b5f7674626c0073 *3667355f656e747279004748437a69526561645f6c6578505f737274004748437a69526561645f *726561645f7372740073366d585f64666c740073366d585f7674626c0073366e305f696e666f00 *73366e305f656e7472790073364b645f315f616c740073364b655f315f616c740073364b655f32 *5f616c740073364b655f7674626c0073364b645f325f616c740073364b645f7674626c0073364b *395f7265740073364b315f696e666f0073364b315f726574004748437a69526561645f72656164 *4c6973745072656344656661756c745f73727400733674645f696e666f0073364a705f696e666f *0073364a705f72657400733674645f656e74727900733674765f696e666f0073364a6c5f696e66 *6f0073364a6c5f72657400733674765f656e747279004748437a69526561645f7a646652656164 *4d617962655f73727400733675785f696e666f00733675795f696e666f007336757a5f696e666f *00733674555f696e666f00733674555f656e74727900733674595f696e666f00733674595f656e *7472790073364a695f315f616c7400733675375f696e666f00733675375f656e7472790073364a *695f325f616c740073364a695f7674626c00733675335f64666c7400733675335f7674626c0073 *364a685f345f616c740073364a685f64666c740073364a685f7674626c00733674465f696e666f *00733674465f656e7472790073364a6b5f315f616c740073364a6b5f325f616c740073364a6b5f *7674626c007336744b5f64666c74007336744b5f7674626c0073364a6a5f345f616c740073364a *6a5f64666c740073364a6a5f7674626c007336744f5f696e666f007336744f5f656e7472790073 *3674515f696e666f00733674515f656e74727900733675785f656e74727900733675795f656e74 *7279007336757a5f656e747279004748437a69526561645f7a6466526561645a4d5a4e5f737274 *00733677625f696e666f00733677685f696e666f00733677695f696e666f007336776a5f696e66 *6f00733677625f656e74727900733677685f656e74727900733677695f656e747279007336776a *5f656e747279004748437a69526561645f7a6466526561645a32545f73727400733679425f696e *666f00733679435f696e666f00733679445f696e666f007336784e5f696e666f007336784e5f65 *6e7472790073364a305f315f616c74007336796b5f696e666f007336796b5f656e747279007336 *4a335f315f616c740073364a335f325f616c740073364a335f7674626c0073364a315f72657400 *73364a305f325f616c740073364a305f7674626c007336495a5f335f616c74007336495a5f6466 *6c74007336495a5f7674626c007336796d5f696e666f007336796d5f656e74727900733679705f *696e666f00733679705f656e747279007336784a5f696e666f007336784a5f656e747279007336 *79725f696e666f00733679725f656e74727900733679745f696e666f00733679745f656e747279 *00733679425f656e74727900733679435f656e74727900733679445f656e74727900733648485f *696e666f00733648485f72657400733646315f696e666f00733646615f696e666f00733646615f *7265740073354a545f656e74727900733646315f7265740073326d6e5f7674626c0073326d6e5f *315f616c7400733263715f696e666f00733263715f656e7472790073326d6f5f696e666f007332 *6d6f5f656e7472790073326d6e5f325f616c74004748437a6953686f775f73686f774c6973747a *757a755f7372740073326d6c5f7674626c0073326d6c5f315f616c740073326d6d5f315f616c74 *00733264355f696e666f00733264355f656e7472790073326d6d5f325f616c740073326d6d5f76 *74626c00733264305f696e666f00733264305f656e74727900733264395f696e666f0073326439 *5f656e74727900733264625f696e666f00733264625f656e7472790073326d6c5f325f616c7400 *7332654d5f696e666f007332654d5f656e747279004748437a6953686f775f7a646653686f775a *4d5a4e5f73727400733265575f696e666f00733266305f696e666f00733266365f696e666f0073 *3266375f696e666f00733265575f656e74727900733266305f656e74727900733266365f656e74 *727900733266375f656e747279004748437a6953686f775f7a646653686f774d617962655f7372 *7400733266485f696e666f007332664d5f696e666f007332664e5f696e666f00733266465f6466 *6c7400733266465f7674626c0073326d335f315f616c7400733266415f696e666f00733266415f *656e74727900733266755f696e666f00733266755f656e74727900733266775f696e666f007332 *66775f656e74727900733266435f696e666f00733266435f656e7472790073326d335f325f616c *740073326d335f7674626c00733266485f656e747279007332664d5f656e747279007332664e5f *656e747279004748437a6953686f775f7a646653686f775a32545f73727400733267485f696e66 *6f007332674c5f696e666f00733268655f696e666f007332686c5f696e666f00733267485f656e *747279007332674c5f656e74727900733268355f696e666f00733268355f656e74727900733268 *375f696e666f00733268375f656e74727900733268395f696e666f00733268395f656e74727900 *733267565f696e666f00733267565f656e7472790073326d315f696e666f0073326d315f726574 *00733268655f656e747279007332686c5f656e7472790073326c565f696e666f0073326c565f72 *65740073326c505f696e666f0073326c505f726574004748437a69546f7048616e646c65725f72 *756e494f5f737274004748437a69556e69636f64655f746f4c6f7765725f737274007332504a5f *696e666f007332504a5f72657400733250485f696e666f00733250485f72657400733250455f72 *657400733250435f696e666f00733250435f72657400733250735f696e666f00733250735f7265 *74007346595f696e666f007346595f7265740053797374656d7a69436d645f7261775379737465 *6d5f73727400733356575f696e666f00733356795f736c6f7700733356795f656e747279007333 *57565f696e666f00733357565f72657400733356795f696e666f00733357555f696e666f007333 *57555f72657400733357545f696e666f00733357545f72657400733356415f696e666f00733356 *415f656e747279007333564c5f696e666f007333564c5f72657400733357575f696e666f007333 *57575f72657400733356525f696e666f00733356525f656e74727900733356555f696e666f0073 *3356555f656e74727900733356575f656e7472790053797374656d7a69436d645f73797374656d *5f737274007333574b5f7674626c007333574b5f315f616c74007333574b5f325f616c74005379 *7374656d7a694469726563746f72795f6765744469726563746f7279436f6e74656e74735f7372 *740073396a595f696e666f0073396a4a5f696e666f0073396a535f696e666f0073396a535f656e *7472790073396a4f5f696e666f0073396a4f5f7265740073396a595f656e7472790073396a4a5f *736c6f770073396a4a5f656e7472790073396a775f736c6f770073396a775f656e747279007339 *6a355f696e666f0073396a355f656e7472790073396a375f696e666f0073396a375f656e747279 *0073394b6f5f696e666f0073394b6f5f7265740073396a675f696e666f0073396a675f656e7472 *7900733969595f736c6f7700733969595f656e7472790073394b725f696e666f0073394b725f72 *657400733969595f696e666f0073396a325f736c6f770073396a325f656e7472790073396a325f *696e666f0073396a6e5f696e666f0073396a6e5f656e7472790073394b745f696e666f0073394b *745f7265740073394b735f696e666f0073394b735f7265740073394b6e5f696e666f0073394b6e *5f7265740073396a775f696e666f0073394b765f696e666f0073394b765f7265740073394b6c5f *696e666f0073394b6c5f7265740053797374656d7a694469726563746f72795f63726561746544 *69726563746f72795f7372740053797374656d7a694469726563746f72795f72656d6f76654469 *726563746f72795f737274007339706f5f696e666f00733970395f696e666f00733970695f696e *666f00733970695f656e74727900733970655f696e666f00733970655f726574007339706f5f65 *6e74727900733970395f656e7472790053797374656d7a694469726563746f72795f72656d6f76 *6546696c655f73727400733970515f696e666f00733970425f696e666f007339704b5f696e666f *007339704b5f656e74727900733970475f696e666f00733970475f72657400733970515f656e74 *727900733970425f656e7472790053797374656d7a694469726563746f72795f67657443757272 *656e744469726563746f72795f7372740073394a635f696e666f0073394a675f696e666f007339 *4a675f7265740073394a665f696e666f0073394a665f7265740073394a645f696e666f0073394a *645f7265740073394a635f7265740053797374656d7a694469726563746f72795f646f65734469 *726563746f727945786973745f737274007339417a5f696e666f007339417a5f656e7472790053 *797374656d7a694469726563746f72795f646f657346696c6545786973745f7372740073394151 *5f696e666f00733941515f656e7472790053797374656d7a69456e7669726f6e6d656e745f6765 *74456e765f73727400733634535f696e666f00733662325f696e666f00733662325f7265740073 *3634535f656e74727900733661545f696e666f00733635565f696e666f00733635565f656e7472 *7900733662305f696e666f00733662305f72657400733661565f696e666f00733661565f726574 *00733661545f726574007336614b5f696e666f00733661535f696e666f00733661535f72657400 *733661525f696e666f00733661525f726574007336614f5f696e666f007336614f5f7265740073 *36614b5f7265740053797374656d7a69457869745f65786974576974685f73727400733166335f *696e666f00733165575f315f616c7400733166665f736c6f7700733166665f656e747279007331 *66665f696e666f00733166645f696e666f00733166645f72657400733165575f325f616c740073 *3165575f7674626c00733166335f656e7472790053797374656d7a69494f5f685075745374724c *6e5f73727400733530715f696e666f00733530715f7265740053797374656d7a69494f5f777269 *746546696c655f73727400733530365f696e666f00733530375f696e666f00733530375f726574 *00733530365f7265740053797374656d7a69494f5f7265616446696c655f73727400733530355f *7265740053797374656d7a69494f5f7075745374724c6e5f7372740073345a5a5f696e666f0073 *345a5a5f7265740053797374656d7a69494f5f7075745374725f7372740073316a355f696e666f *0073316a355f726574007331684f5f696e666f007331684f5f736c6f77007331684f5f656e7472 *7900733169305f696e666f00733169305f7265740053797374656d7a69506f7369787a69496e74 *65726e616c735f637a756765747069645f7372740073384f685f696e666f007338436f5f736c6f *77007338436f5f656e7472790073384f685f7265740073384f325f696e666f007338454b5f736c *6f77007338454b5f656e7472790073384f345f696e666f0073384f345f726574007338454b5f69 *6e666f0073384f335f696e666f0073384f335f7265740073384f325f726574007331486e5f7674 *626c007331486f5f315f616c7400733177415f64666c7400733177415f7674626c007331486f5f *325f616c74007331486f5f7674626c007331486e5f315f616c7400733177735f64666c74007331 *77735f7674626c007331486e5f325f616c74007331486e5f335f616c74007331776f5f696e666f *007331776f5f656e747279007331486e5f345f616c74007331486e5f355f616c7400546578747a *69506172736572436f6d62696e61746f72737a6952656164505f6d706c75735f73727400733148 *6c5f7674626c0073317a385f696e666f0073317a385f656e74727900733178755f345f616c7400 *7331787a5f335f616c7400733178785f335f616c7400733179635f64666c7400733179635f7674 *626c00733179665f696e666f00733179665f656e74727900733179685f696e666f00733179685f *656e74727900733178425f355f616c7400733178555f64666c7400733178555f7674626c007331 *78585f696e666f00733178585f656e74727900733178565f315f616c7400733179325f64666c74 *00733179325f7674626c00733179375f696e666f00733179375f656e74727900733178565f325f *616c7400733178565f7674626c00733178475f325f616c7400733148675f315f616c7400733178 *4d5f696e666f007331784d5f656e74727900733148675f325f616c7400733148675f7674626c00 *733178475f64666c7400733178475f7674626c00733178425f64666c7400733178425f7674626c *007331796a5f696e666f007331796a5f72657400733179585f64666c7400733179585f7674626c *00733179565f64666c7400733179565f7674626c0073317a305f696e666f0073317a305f656e74 *72790073317a325f696e666f0073317a325f656e747279007331486a5f355f616c74007331486a *5f64666c74007331486a5f7674626c00733148695f325f616c7400733179745f696e666f007331 *79745f656e74727900733179765f696e666f00733179765f656e74727900733179785f696e666f *00733179785f656e74727900733179715f315f616c7400733179485f64666c7400733179485f76 *74626c007331794a5f696e666f007331794a5f656e747279007331794c5f696e666f007331794c *5f656e747279007331794e5f696e666f007331794e5f656e74727900733179715f325f616c7400 *733179425f696e666f00733179425f656e74727900733179715f355f616c7400733179715f7674 *626c00733148695f355f616c7400733148695f64666c7400733148695f7674626c00733178785f *64666c7400733178785f7674626c007331787a5f64666c74007331787a5f7674626c0073317875 *5f64666c7400733178755f7674626c0073317a615f696e666f0073317a615f7265740073317a70 *5f64666c740073317a705f7674626c0073317a755f696e666f0073317a755f656e747279007331 *486d5f315f616c74007331486d5f64666c74007331486d5f7674626c007331486c5f315f616c74 *0073317a685f696e666f0073317a685f656e747279007331486c5f345f616c74007331486c5f64 *666c7400546578747a69506172736572436f6d62696e61746f72737a6952656164505f736b6970 *5f73727400733148315f7674626c00733148315f315f616c7400733148325f315f616c74007331 *45795f696e666f00733145795f656e74727900733145485f696e666f00733145485f656e747279 *00733148335f696e666f00733148335f656e74727900733148325f325f616c7400733148325f76 *74626c00733148315f325f616c7400546578747a69506172736572436f6d62696e61746f72737a *6952656164507265635f7a707a707a705f737274007331737a5f696e666f00733171385f64666c *7400733171385f7674626c007331737a5f656e74727900733173775f696e666f00733173755f69 *6e666f00733173755f72657400733173745f696e666f00733173745f72657400733173775f656e *747279007331714f5f696e666f00733173735f696e666f00733173735f726574007331714f5f65 *6e74727900733172305f696e666f00733173715f696e666f00733172305f656e74727900733173 *715f656e747279007331736b5f696e666f007331724e5f696e666f007331724e5f656e74727900 *7331736b5f656e7472790073346b335f696e666f0073346b335f726574007334495a5f7674626c *007334495a5f315f616c740073344a305f315f616c740073346b785f696e666f0073346b785f65 *6e7472790073344a305f325f616c740073344a305f7674626c0073346b415f696e666f0073346b *415f656e747279007334495a5f325f616c740073344a4d5f7674626c0073344a4d5f315f616c74 *0073346b4f5f696e666f0073346b4f5f656e7472790073344a4d5f325f616c740073344a4c5f76 *74626c0073344a4c5f315f616c740073346b595f696e666f0073346b595f656e7472790073344a *4c5f325f616c7400546578747a695072657474795072696e747a69487567686573504a5f667365 *705f73727400733449555f7674626c00733449555f315f616c74007334736b5f64666c74007334 *736b5f7674626c00733449555f325f616c7400546578747a695072657474795072696e747a6948 *7567686573504a5f7365705f73727400733449535f7674626c00733449535f315f616c74007334 *76645f64666c7400733476645f7674626c00733449535f325f616c7400546578747a6950726574 *74795072696e747a69487567686573504a5f72656e6465725f73727400546578747a6952656164 *7a694c65785f6137305f73727400733661515f696e666f007336396f5f696e666f00733661495f *696e666f00733661495f656e74727900733661475f64666c7400733661475f7674626c00733661 *4b5f656e74727900733665355f315f616c7400733665365f315f616c7400733665365f325f616c *7400733665365f7674626c00733661415f656e74727900733665355f325f616c7400733665355f *7674626c00733661435f696e666f00733661435f656e747279007336614d5f656e747279007336 *65375f315f616c7400733665375f325f616c7400733665375f7674626c007336616a5f656e7472 *79007336614f5f656e74727900733661305f696e666f00733661305f656e74727900733665385f *696e666f00733665385f72657400733661385f696e666f00733661385f656e7472790073366151 *5f656e74727900733639355f696e666f00733639355f656e74727900733639645f696e666f0073 *3639645f656e74727900733639665f696e666f00733639665f72657400733665645f696e666f00 *733665645f72657400733665635f315f616c7400733665635f325f616c7400733665635f767462 *6c007336396f5f656e74727900733665665f696e666f00733665665f72657400733639795f696e *666f00733639795f656e74727900733639415f656e74727900733639495f696e666f0073363949 *5f726574007336394b5f656e74727900733639565f656e74727900546578747a69526561647a69 *4c65785f6c65785f73727400733662615f696e666f00733662655f696e666f007336626a5f696e *666f00733662385f696e666f00733662385f656e74727900733661585f656e7472790073366532 *5f315f616c7400733665325f325f616c7400733665325f7674626c00733662345f656e74727900 *733662615f656e74727900733662655f656e747279007336626a5f656e74727900733174335f69 *6e666f00733174335f656e74727900733145755f315f616c7400733174355f696e666f00733174 *355f656e74727900733145755f325f616c7400733145755f7674626c007331744f5f696e666f00 *7331744c5f696e666f007331744c5f656e747279007331744f5f656e74727900733536785f696e *666f00733536785f72657400446174617a694d617962655f6c766c315f737274007357345f7674 *626c007357345f315f616c74007357345f325f616c7400446174617a695479706561626c655f7a *64776d6b5479436f6e5f73727400733656545f696e666f00733769565f696e666f00733656545f *736c6f7700733656545f656e74727900733769545f696e666f00733769545f7265740073376953 *5f696e666f00733769535f72657400733769525f315f616c7400733769525f325f616c74007337 *69525f7674626c00733769515f696e666f00733769515f72657400733769505f696e666f007337 *69505f72657400733769565f72657400446174617a695479706561626c655f6c676f5f73727400 *73376b435f7674626c0073376b435f315f616c7400733732635f696e666f00733732635f656e74 *727900733732495f736c6f7700733732495f656e7472790073376b485f696e666f0073376b485f *7265740073376b475f696e666f0073376b475f7265740073376b465f315f616c740073376b465f *325f616c740073376b465f7674626c0073376b455f696e666f0073376b455f7265740073376b44 *5f696e666f0073376b445f72657400733732495f696e666f007337324b5f696e666f007337324b *5f656e7472790073376b435f325f616c7400446174617a695479706561626c655f7a64776d6b41 *707054795f737274007337336a5f696e666f00733769755f696e666f00733769755f7265740073 *3733665f64666c7400733733665f7674626c007337336a5f726574007337684b5f696e666f0073 *37684c5f696e666f007337684c5f726574007337684b5f72657400733437335f696e666f007333 *576a5f696e666f007333576a5f656e74727900733437335f72657400733542515f696e666f0073 *354b775f696e666f00733542515f656e7472790073354b785f696e666f0073354b785f72657400 *73354b775f726574007335454a5f696e666f007335454c5f696e666f007335454c5f7265740073 *35454a5f72657400733358485f696e666f00733464315f696e666f00733464315f726574007333 *58485f656e74727900733463545f696e666f00733463545f72657400733463535f696e666f0073 *3463535f726574007334634b5f696e666f007334634b5f72657400466f726569676e7a694d6172 *7368616c7a6941727261795f776974684172726179305f73727400733433625f696e666f007334 *62705f696e666f00733462705f726574007334626e5f696e666f007334626e5f72657400733462 *6c5f696e666f007334626c5f726574007334626b5f696e666f007334626b5f726574007334324b *5f696e666f007334324b5f72657400733433625f72657400733579775f7674626c00733579775f *315f616c7400733574525f696e666f00733574525f656e74727900733574545f696e666f007335 *74545f656e74727900733579775f325f616c7400733267615f696e666f00733267625f696e666f *00733267625f72657400733267615f726574007332674d5f696e666f007332674c5f7265740073 *32674d5f72657400733250745f696e666f00733250755f696e666f00733250755f726574007332 *50745f72657400733250725f696e666f00733250725f726574007332506c5f696e666f00733250 *6d5f696e666f007332506d5f726574007332506c5f726574007332506a5f696e666f007332506b *5f696e666f007332506b5f726574007332506a5f72657400733250695f696e666f00733250695f *72657400733250635f696e666f00733250635f72657400733250615f696e666f00733250625f72 *657400733250615f72657400733250385f696e666f00733250395f72657400733250385f726574 *0073324f505f696e666f0073324f515f696e666f0073324f515f7265740073324f505f72657400 *73324f745f696e666f0073324f755f696e666f0073324f755f7265740073324f745f7265740073 *324f725f696e666f0073324f735f696e666f0073324f735f7265740073324f725f726574007332 *4f655f7674626c0073324f665f315f616c740073324f665f325f616c740073324f665f7674626c *0073324f655f315f616c740073324f655f325f616c740073324f635f7674626c0073324f635f31 *5f616c740073324f645f315f616c740073324f645f325f616c740073324f645f7674626c007332 *4f635f325f616c74004748437a69426173655f6c766c335f73727400733245525f696e666f0073 *3245545f696e666f00733245545f72657400733245535f72657400733245525f72657400733245 *505f696e666f00733245515f696e666f00733245515f72657400733245505f726574007332454e *5f696e666f007332454f5f696e666f007332454f5f726574007332454e5f726574007332454d5f *696e666f007332454d5f726574004748437a69456e756d5f73756363355f737274007332454c5f *696e666f007332454c5f726574004748437a69456e756d5f70726564355f737274007332454b5f *696e666f007332454b5f726574004748437a694572725f756e74616e676c655f73727400733130 *515f7674626c00733131315f696e666f00733131315f656e74727900733131335f696e666f0073 *3131335f656e74727900733131355f696e666f00733131355f656e74727900733131375f696e66 *6f00733131375f72657400733132785f315f616c7400733132795f696e666f00733132795f7265 *7400733132785f325f616c7400733132785f7674626c00733132775f696e666f00733132775f72 *657400733130515f64666c74004748437a694572725f756e646566696e65645f73727400734362 *5f696e666f007343625f656e747279004748437a6948616e646c655f7a6477666c757368577269 *74654275666665725f7372740073646f4c5f696e666f0073646f4d5f696e666f0073646f4d5f72 *65740073646f4c5f726574004748437a6948616e646c655f6c766c35325f7372740073646e365f *696e666f0073646e395f315f616c74007363646a5f696e666f007363646a5f656e747279007363 *64685f696e666f00736364685f656e7472790073646e625f696e666f0073646e625f7265740073 *646e395f325f616c740073646e395f7674626c0073646e385f696e666f0073646e385f72657400 *73646e365f726574004748437a6948616e646c655f6c766c35335f7372740073646d4b5f696e66 *6f0073646d4c5f696e666f0073646d4c5f7265740073646d4b5f7265740073636a525f696e666f *0073636a525f736c6f770073636a525f656e7472790073636a795f696e666f0073636a795f656e *7472790073636a735f696e666f0073636a735f7265740073636a425f696e666f0073636a425f72 *65740073636a455f696e666f0073636a455f656e7472790073636a4f5f696e666f0073636a4f5f *7265740073646d785f696e666f0073646d785f7265740073646d775f696e666f0073646d775f72 *65740073646d765f696e666f0073646d765f726574004748437a6948616e646c655f6c766c3732 *5f7372740073646b715f696e666f0073646b725f696e666f0073646b725f7265740073646b715f *726574004748437a6948616e646c655f68436c6f73657a7568656c705f7372740073646b375f76 *74626c0073646b375f315f616c740073646b385f696e666f0073646b385f7265740073646b375f *64666c74004748437a6948616e646c655f77616e745772697461626c6548616e646c657a715f73 *7274007363566f5f696e666f00736468495f315f616c7400736468495f325f616c740073646849 *5f335f616c7400736355795f696e666f00736355795f656e74727900736468505f736c6f770073 *6468505f656e74727900736355535f696e666f00736355535f656e747279007364684e5f696e66 *6f007364684e5f72657400736356645f696e666f00736356645f656e747279007364684d5f696e *666f007364684d5f726574007364684c5f315f616c74007364684c5f325f616c74007364684c5f *7674626c00736356695f696e666f00736356695f726574007364684a5f696e666f007364684a5f *72657400736468505f696e666f00736468495f365f616c7400736468495f64666c740073646849 *5f7674626c007363566f5f656e747279004748437a6948616e646c655f77616e74577269746162 *6c6548616e646c655f73727400736356415f7674626c00736356415f315f616c7400736356415f *325f616c74004748437a6948616e646c655f6f70656e46696c657a715f73727400736461485f69 *6e666f00736462775f696e666f007364636b5f696e666f00736465545f325f616c740073646554 *5f64666c7400736465545f7674626c00736461485f656e74727900736465555f315f616c740073 *6465565f696e666f00736465565f72657400736465555f325f616c7400736465555f7674626c00 *736462395f696e666f00736462395f656e74727900736462755f696e666f00736462755f726574 *00736465585f696e666f00736465585f72657400736465575f315f616c7400736462705f696e66 *6f00736462705f72657400736465595f696e666f00736465595f72657400736465575f325f616c *7400736462665f696e666f00736462665f72657400736466305f696e666f00736466305f726574 *00736465575f335f616c74007364626b5f696e666f007364626b5f726574007364655a5f696e66 *6f007364655a5f72657400736465575f345f616c7400736465575f7674626c00736462775f656e *74727900736462525f736c6f7700736462525f656e74727900736466335f696e666f0073646633 *5f72657400736462525f696e666f00736466355f696e666f00736466355f72657400736463325f *696e666f00736463325f656e74727900736466375f696e666f00736466375f7265740073646636 *5f696e666f00736466365f72657400736463675f696e666f00736463675f656e74727900736463 *345f696e666f00736463345f656e74727900736466345f696e666f00736466345f726574007364 *66325f696e666f00736466325f72657400736466315f696e666f00736466315f72657400736463 *6b5f656e747279004748437a6948616e646c655f6f70656e46696c655f73727400736463535f69 *6e666f00736463735f696e666f00736465515f696e666f00736465515f726574007364634d5f69 *6e666f007364634d5f656e74727900736463785f696e666f00736463785f72657400736463535f *656e74727900736463735f656e747279004748437a69494f5f6c766c355f73727400736135315f *696e666f0073396c775f315f616c7400736135625f696e666f00736135625f7265740073613561 *5f696e666f00736135615f72657400736135395f315f616c7400736135635f696e666f00736135 *635f7265740073396c445f696e666f0073396c445f656e74727900736135395f325f616c740073 *6135395f7674626c0073396c775f64666c740073396c775f7674626c00736135315f7265740047 *48437a69494f5f7a647768507574436861725f7372740073397a435f696e666f007361347a5f69 *6e666f007361347a5f7265740073397a625f696e666f0073397a625f656e7472790073397a6d5f *736c6f770073397a6d5f656e7472790073397a6a5f696e666f0073397a6a5f7265740073397a6d *5f696e666f00736134425f696e666f00736134425f7265740073397a655f696e666f0073397a65 *5f72657400736134415f315f616c7400736134415f325f616c7400736134415f7674626c007361 *34795f696e666f00736134795f72657400736134775f696e666f00736134775f72657400736134 *755f315f616c7400736134755f325f616c7400736134755f335f616c7400736134755f7674626c *0073397a435f656e747279004748437a69494f5f7a6477684765744275665f7372740073394b57 *5f696e666f00736133705f696e666f00736133705f7265740073394b575f656e74727900474843 *7a69494f5f7a6477685075744275667a715f7372740073394c485f696e666f00736133685f696e *666f00736133685f7265740073394c485f656e747279004748437a69494f5f68476574436f6e74 *656e74735f73727400733956495f696e666f00733957675f696e666f007339576b5f7674626c00 *733956495f656e74727900736132585f315f616c7400736132585f325f616c7400736132585f34 *5f616c7400736132585f355f616c74007361325a5f696e666f007361325a5f7265740073395761 *5f696e666f00733957615f656e74727900736132595f696e666f00736132595f72657400736132 *585f64666c7400736132585f7674626c00733957675f656e747279007339576b5f315f616c7400 *7339576b5f325f616c74004748437a69494f5f685075744368617273315f73727400736136345f *7674626c00736136345f315f616c7400736136365f696e666f00736136365f7265740073613635 *5f696e666f00736136355f72657400736136345f325f616c74004748437a69494f5f7772697465 *4c696e6573315f73727400736135535f696e666f004748437a69494f5f7a647777726974654c69 *6e65735f73727400733958545f72657400736135535f72657400733958775f696e666f00733958 *775f656e74727900736136335f72657400733959655f696e666f00733959655f656e7472790073 *6135595f696e666f00736135595f72657400736135585f315f616c7400733959335f696e666f00 *733959335f656e74727900736136325f696e666f00736136325f72657400736136305f696e666f *00736136305f72657400736135585f325f616c7400736135585f7674626c00733958545f696e66 *6f004748437a69494f5f7772697465426c6f636b73315f73727400736135495f696e666f004748 *437a69494f5f7a64777772697465426c6f636b735f7372740073395a705f72657400736135495f *7265740073395a335f696e666f0073395a335f656e74727900736135525f696e666f0073613552 *5f7265740073395a765f696e666f0073395a765f656e747279007361354f5f696e666f00736135 *4f5f726574007361354e5f315f616c7400736135515f696e666f00736135515f72657400736135 *4e5f325f616c74007361354e5f7674626c0073395a705f696e666f00733771755f7674626c0073 *3771775f315f616c7400733771775f325f616c7400733771775f7674626c00733771755f315f61 *6c7400733771765f315f616c7400733771765f325f616c7400733771765f7674626c0073377175 *5f325f616c7400733771345f7674626c00733771395f315f616c7400733771395f325f616c7400 *733771395f7674626c00733771345f315f616c7400733771355f315f616c7400733771375f696e *666f00733771375f72657400733771365f696e666f00733771365f72657400733771355f325f61 *6c7400733771355f7674626c00733771345f325f616c740073365a695f696e666f0073365a695f *656e7472790073376f555f696e666f0073376f555f7265740073365a4f5f696e666f0073365a4f *5f656e7472790073376f625f696e666f00733731725f696e666f00733731725f7265740073376f *625f7265740073376e595f696e666f00733731525f696e666f00733731525f7265740073376e59 *5f7265740073376e515f696e666f0073376e515f7265740073376e415f696e666f0073376e415f *7265740073376e735f696e666f0073376e735f7265740073376e6b5f696e666f00733732585f69 *6e666f00733732585f7265740073376e6b5f7265740073626c615f696e666f0073626c615f7265 *7400736268575f696e666f00736268585f696e666f00736268585f72657400736268575f726574 *00736268455f696e666f00736268455f726574004748437a69496e745f71756f7452656d325f73 *727400736268435f696e666f007361477a5f696e666f007361477a5f656e74727900736147755f *696e666f00736147755f656e74727900736268445f696e666f00736268445f7265740073626843 *5f726574004748437a69496e745f6469764d6f64325f73727400736268415f696e666f00736268 *425f696e666f00736268425f72657400736268415f726574004748437a69496e745f71756f7432 *5f73727400736268795f696e666f007362687a5f696e666f007362687a5f72657400736268795f *726574004748437a69496e745f6d6f64325f73727400736268775f696e666f00736148665f696e *666f00736148665f72657400736268785f696e666f00736268785f72657400736268775f726574 *004748437a69496e745f646976325f73727400736268755f696e666f00736148755f696e666f00 *736148755f72657400736268765f696e666f00736268765f72657400736268755f726574004748 *437a69496e745f72656d325f73727400736268735f696e666f00736268745f696e666f00736268 *745f72657400736268735f72657400736264415f696e666f00736264425f696e666f0073626442 *5f72657400736264415f72657400736264785f696e666f00736264795f696e666f00736264795f *72657400736264785f726574004748437a69496e745f7a64646d73686f774c697374325f737274 *0073324f555f7674626c0073324f555f315f616c740073324f565f315f616c7400733274325f69 *6e666f00733274325f656e7472790073324f565f325f616c740073324f565f7674626c0073324f *555f325f616c740073324f545f7674626c0073324f545f315f616c7400733274655f696e666f00 *733274655f656e7472790073324f545f325f616c740073324f535f7674626c0073324f535f315f *616c740073324f535f325f616c740073324f4f5f7674626c0073324f4f5f315f616c740073324f *4f5f325f616c74004748437a694c6973745f6c766c31325f737274004748437a694c6973745f6c *766c31365f737274004748437a694c6973745f6c766c32305f737274004748437a694c6973745f *6c766c33325f7372740073324f385f7674626c0073324f385f315f616c74007332464a5f696e66 *6f007332464a5f656e7472790073324f385f325f616c74007332415a5f7674626c00733334495f *696e666f00733334495f72657400733334485f696e666f00733334485f72657400733241505f31 *5f616c7400733334455f696e666f00733334455f72657400733241505f325f616c740073324150 *5f7674626c007332415a5f315f616c7400733334425f696e666f00733334425f72657400733334 *7a5f315f616c7400733334415f696e666f00733334415f726574007333347a5f325f616c740073 *33347a5f7674626c007332415a5f325f616c74007332466f5f696e666f007332466f5f72657400 *7332476f5f696e666f007332476f5f72657400733332475f696e666f00733332475f7265740073 *3332305f7674626c00733332305f315f616c740073324f495f696e666f0073324f495f72657400 *733332305f325f616c7400733250495f7674626c00733333505f696e666f00733333505f726574 *007333334f5f696e666f007333334f5f72657400733250795f315f616c74007333334d5f696e66 *6f007333334d5f72657400733250795f325f616c7400733250795f7674626c00733250495f315f *616c74007333334a5f696e666f007333334a5f72657400733333485f315f616c7400733333495f *696e666f00733333495f72657400733333485f325f616c7400733333485f7674626c0073325049 *5f325f616c7400733251525f7674626c00733333475f696e666f00733333475f72657400733333 *465f696e666f00733333465f72657400733251485f315f616c7400733333435f696e666f007333 *33435f72657400733251485f325f616c7400733251485f7674626c00733251525f315f616c7400 *7333337a5f696e666f007333337a5f72657400733333785f315f616c7400733333795f696e666f *00733333795f72657400733333785f325f616c7400733333785f7674626c00733251525f325f61 *6c74004748437a694e756d5f6e6567617465496e74656765725f737274007333315a5f7674626c *007333315a5f315f616c74007333315a5f325f616c74004748437a694e756d5f616273325f7372 *7400733256665f7674626c00733256665f315f616c7400733256665f325f616c740073364d6a5f *7674626c0073364d6a5f315f616c74007336634f5f656e7472790073364d6c5f315f616c740073 *364d6c5f325f616c740073364d6c5f7674626c0073364d6a5f325f616c74004748437a69526561 *645f6c766c395f73727400733663555f696e666f00733663595f696e666f00733664335f696e66 *6f00733663555f656e74727900733663595f656e74727900733664335f656e747279004748437a *69526561645f706172656e5f73727400733666315f656e74727900733666545f315f616c740073 *3666575f315f616c7400733666575f325f616c7400733666575f7674626c00733666555f696e66 *6f00733666555f72657400733666545f325f616c7400733666545f7674626c00733666535f335f *616c7400733666535f64666c7400733666535f7674626c00733666755f656e7472790073366677 *5f696e666f00733666775f656e74727900733666795f696e666f00733666795f656e7472790073 *364b575f315f616c740073364b5a5f315f616c740073364b5a5f325f616c740073364b5a5f7674 *626c0073364b585f696e666f0073364b585f7265740073364b575f325f616c740073364b575f76 *74626c0073364b565f335f616c740073364b565f64666c740073364b565f7674626c0073366652 *5f696e666f00733666525f656e747279004748437a69526561645f6c6973745f73727400733667 *415f696e666f00733667545f696e666f00733667415f656e74727900733667515f696e666f0073 *3667515f656e74727900733667565f696e666f00733667565f656e74727900733667545f656e74 *727900733667585f656e74727900733668325f696e666f00733668325f656e7472790073364b72 *5f315f616c740073364b785f315f616c740073364b785f325f616c740073364b785f7674626c00 *73364b755f315f616c740073364b755f325f616c740073364b755f7674626c0073364b735f696e *666f0073364b735f7265740073364b725f325f616c740073364b725f7674626c0073364b715f33 *5f616c740073364b715f64666c740073364b715f7674626c007336686f5f696e666f007336686f *5f656e74727900733669635f696e666f00733669635f656e74727900733669655f656e74727900 *733668775f696e666f00733668775f656e7472790073364b425f315f616c740073364b485f315f *616c740073364b485f325f616c740073364b485f7674626c0073364b455f315f616c740073364b *455f325f616c740073364b455f7674626c0073364b435f696e666f0073364b435f726574007336 *4b425f325f616c740073364b425f7674626c0073364b415f335f616c740073364b415f64666c74 *0073364b415f7674626c00733668535f696e666f00733668535f656e74727900733668555f696e *666f00733668555f656e74727900733668575f696e666f00733668575f656e7472790073366930 *5f696e666f00733669305f656e74727900733669355f656e74727900733669675f656e74727900 *73364b4c5f315f616c740073364b4f5f315f616c740073364b4f5f325f616c740073364b4f5f76 *74626c0073364b4d5f7265740073364b4c5f325f616c740073364b4c5f7674626c0073364b4b5f *335f616c740073364b4b5f64666c740073364b4b5f7674626c007336697a5f656e747279007336 *69425f656e747279004748437a69526561645f7265616450726563315f737274004748437a6952 *6561645f726561644c69737450726563315f737274004748437a69526561645f7a647372656164 *4c69737444656661756c74315f737274004748437a69526561645f7a64737a64646d7265616473 *50726563315f73727400733671645f696e666f00733671645f656e747279004748437a69526561 *645f7265616450726563325f737274004748437a69526561645f7a6473726561644c6973745072 *656344656661756c74325f737274004748437a69526561645f7a6473726561644c697374446566 *61756c74325f737274004748437a69526561645f7a64737a64646d726561647350726563325f73 *727400733671495f696e666f00733671495f656e747279004748437a69526561645f7265616450 *726563345f737274004748437a69526561645f7a6473726561644c697374507265634465666175 *6c74345f737274004748437a69526561645f7a6473726561644c69737444656661756c74345f73 *7274004748437a69526561645f7a64737a64646d726561647350726563345f7372740073367242 *5f696e666f00733672425f656e747279004748437a6953686f775f7a64737a64646d73686f7732 *5f7372740073326e395f7674626c0073326e395f315f616c740073326e395f325f616c74004748 *437a6953686f775f7a64737a64646d73686f774c697374325f7372740073326d585f7674626c00 *73326d585f315f616c740073326d595f315f616c740073326d5a5f315f616c740073326d5a5f32 *5f616c740073326d5a5f7674626c00733236445f696e666f00733236445f656e7472790073326d *595f325f616c740073326d595f7674626c00733236785f696e666f00733236785f656e74727900 *733236485f696e666f00733236485f656e7472790073326e305f315f616c740073326e305f325f *616c740073326e305f7674626c007332364c5f696e666f007332364c5f656e7472790073326d58 *5f325f616c740073326d4e5f696e666f0073326d4f5f696e666f0073326d4f5f7265740073326d *4e5f726574004748437a6953686f775f7a64737a64646d73686f774c697374335f737274007332 *6d4a5f7674626c0073326d4a5f315f616c740073326d4c5f315f616c7400733239735f696e666f *00733239735f656e7472790073326d4c5f325f616c740073326d4c5f7674626c007332396f5f69 *6e666f007332396f5f656e74727900733239775f696e666f00733239775f656e7472790073326d *4b5f696e666f0073326d4b5f72657400733239795f696e666f00733239795f656e747279007332 *6d4a5f325f616c740073326d495f696e666f0073326d495f726574004748437a6953686f775f73 *686f777350726563325f7372740073326d695f7674626c0073326d695f315f616c740073326d69 *5f325f616c74004748437a6953686f775f73686f774c697374315f73727400733264445f696e66 *6f00733264445f656e747279004748437a6953686f775f73686f777350726563345f7372740073 *326d655f696e666f0073326d655f726574004748437a6953686f775f7a64737a64646d73686f77 *345f7372740073326d635f7265740073326d385f726574004748437a6953686f775f7a64646d73 *686f774c6973745f7372740073326d375f696e666f0073326d355f315f616c740073326d365f31 *5f616c74007332657a5f696e666f007332657a5f656e7472790073326d365f325f616c74007332 *6d365f7674626c00733265765f696e666f00733265765f656e74727900733265445f696e666f00 *733265445f656e7472790073326d355f325f616c740073326d355f7674626c0073326d375f656e *74727900733237555f696e666f00733237575f696e666f00733237575f72657400733237565f69 *6e666f00733237565f72657400733237555f72657400733237385f696e666f00733237395f696e *666f00733237395f72657400733237385f726574004748437a69546f7048616e646c65725f7a64 *4c723337776c766c31365f737274004748437a69546f7048616e646c65725f746f7048616e646c *65725f73727400733361595f696e666f00733362505f696e666f00733362505f72657400733362 *4e5f315f616c74007333624e5f325f616c74007333624e5f335f616c74007333624e5f345f616c *74007333624e5f355f616c74007333624e5f7674626c007333624d5f696e666f007333624d5f72 *657400733361765f696e666f00733361765f656e747279007333617a5f315f616c74007333624c *5f325f616c74007333624c5f335f616c74007333624c5f7674626c00733361435f696e666f0073 *3361435f656e747279007333617a5f64666c74007333617a5f7674626c00733362485f315f616c *74007333624b5f736c6f77007333624b5f656e747279007333624a5f696e666f007333624a5f72 *6574007333624b5f696e666f00733362495f696e666f00733362495f72657400733362485f325f *616c7400733362485f7674626c00733339585f696e666f00733339585f72657400733361595f65 *6e747279004748437a69556e69636f64655f7a6477746f4c6f7765725f73727400733251365f69 *6e666f00733251365f72657400733251305f696e666f00733251305f726574007332504c5f696e *666f007332504c5f726574007345715f726574007347305f696e666f007347305f726574007345 *715f696e666f00736234645f696e666f00736234645f72657400736249745f696e666f00736249 *745f72657400736249735f696e666f00736249735f72657400736249715f696e666f0073624972 *5f696e666f00736249725f72657400736249715f726574007362496f5f696e666f00736249705f *696e666f00736249705f726574007362496f5f726574007362496d5f696e666f007362496e5f69 *6e666f007362496e5f726574007362496d5f7265740053797374656d7a69436d645f7468726f77 *4572726e6f49664d696e7573315f7372740053797374656d7a69436d645f6c766c315f73727400 *7333576c5f696e666f00733357525f696e666f007333576a5f736c6f7700733357515f696e666f *00733357515f72657400733357505f696e666f00733357505f726574007333576c5f656e747279 *00733357775f696e666f00733357775f72657400733357525f7265740073394b445f696e666f00 *73394b465f696e666f0073394b465f72657400733966775f696e666f00733966775f656e747279 *0073394b455f696e666f0073394b455f7265740073394b445f7265740053797374656d7a694469 *726563746f72795f7a644c723962416c766c31395f73727400733967385f696e666f0073396738 *5f656e7472790053797374656d7a694469726563746f72795f7a644c723962437a64776c6f6f70 *5f7372740073394c4e5f696e666f0073394c5a5f696e666f0073394c5a5f7265740073394c585f *696e666f0073394c585f7265740073394c575f696e666f0073394c575f7265740073394c565f69 *6e666f0073394c565f7265740073394c555f696e666f0073394c555f7265740073394c545f696e *666f0073394c545f7265740073394c535f696e666f0073394c535f7265740073394c4f5f696e66 *6f0073394c4f5f7265740073394c4e5f7265740073394b775f696e666f0073394b795f696e666f *0073394b795f72657400733968755f696e666f00733968755f656e7472790073394b785f696e66 *6f0073394b785f7265740073394b775f7265740073394c4c5f696e666f0073394c4c5f72657400 *53797374656d7a694469726563746f72795f7a644c723962457468726f774572726e6f49664d69 *6e7573317a755f7372740053797374656d7a694469726563746f72795f6c766c32335f73727400 *53797374656d7a694469726563746f72795f6c766c32345f7372740073396f545f696e666f0073 *396f525f736c6f770073396f525f656e7472790073394a4b5f696e666f0073394a4b5f72657400 *73396f525f696e666f0073394a4a5f696e666f0073394a4a5f7265740073396f545f656e747279 *0053797374656d7a694469726563746f72795f6c766c32355f73727400733970335f696e666f00 *733970335f656e7472790053797374656d7a694469726563746f72795f6c766c32365f73727400 *733970765f696e666f00733970765f656e7472790053797374656d7a694469726563746f72795f *7a6477676f5f7372740073394c6f5f696e666f0073394c795f696e666f0073394c795f72657400 *73394c785f696e666f0073394c785f7265740073394c775f696e666f0073394c775f7265740073 *394c765f696e666f0073394c765f7265740073394c745f696e666f0073394c745f726574007339 *4c735f696e666f0073394c735f7265740073394c715f696e666f0073394c715f7265740073394c *6f5f7265740053797374656d7a694469726563746f72795f7769746846696c655374617475735f *73727400733979625f696e666f00733977535f696e666f00733978575f696e666f00733979355f *696e666f00733979355f656e74727900733979315f696e666f00733979315f7265740073397962 *5f656e74727900733977535f656e74727900733978575f736c6f7700733978575f656e74727900 *733978695f696e666f00733978695f656e74727900733978425f736c6f7700733978425f656e74 *72790073394a385f696e666f0073394a385f72657400733978425f696e666f0073394a375f696e *666f0073394a375f72657400733978445f696e666f00733978445f656e7472790073394a395f69 *6e666f0073394a395f726574007339784b5f696e666f007339784b5f656e7472790073394a625f *696e666f0073394a625f7265740073394a355f696e666f0073394a355f7265740073394a345f69 *6e666f0073394a345f72657400733941715f696e666f00733941715f72657400733941485f696e *666f00733941485f72657400733662655f7674626c00733662655f315f616c7400733662655f32 *5f616c7400733662375f7674626c00733662375f315f616c7400733662615f7265740073366239 *5f696e666f00733662395f72657400733662385f72657400733662375f325f616c740053797374 *656d7a69457869745f6c766c315f73727400733168735f696e666f00733168735f726574007338 *53785f696e666f00733853785f72657400733853765f696e666f00733853765f72657400733853 *385f696e666f00733853385f72657400733851785f696e666f00733851785f726574007338504b *5f696e666f0073386f755f736c6f770073386f755f656e7472790073386f755f696e666f007338 *504b5f72657400733850725f696e666f00733872435f736c6f7700733872435f656e7472790073 *3850735f696e666f00733850735f72657400733872435f696e666f00733850725f726574007338 *50625f696e666f007338754d5f736c6f77007338754d5f656e747279007338754d5f696e666f00 *733850625f72657400546578747a69506172736572436f6d62696e61746f72737a695265616450 *5f7a644c723174736c766c375f73727400733175545f696e666f00733176675f696e666f007331 *47595f315f616c74007331475a5f315f616c7400733176345f696e666f00733176345f656e7472 *7900733176365f696e666f00733176365f656e74727900733176615f696e666f00733176615f65 *6e74727900733148305f696e666f00733148305f656e747279007331475a5f325f616c74007331 *475a5f7674626c00733147595f325f616c7400733147595f7674626c00733175545f656e747279 *00733176675f656e747279007331736c5f696e666f00733172775f696e666f00733172775f656e *747279007331736c5f656e7472790073344a325f7674626c0073344a325f315f616c740073344a *325f325f616c740073344a325f335f616c7400546578747a695072657474795072696e747a6948 *7567686573504a5f7a644c72346755626573696465315f7372740073346f495f7674626c005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c7234675761626f766531 *5f73727400733470435f7674626c00546578747a695072657474795072696e747a694875676865 *73504a5f726564756365446f63315f73727400733471305f7674626c0073346f495f315f616c74 *00733470765f696e666f00733470765f656e7472790073346f495f325f616c7400733470705f31 *5f616c7400733470705f64666c7400733470705f7674626c00733470725f696e666f0073347072 *5f656e7472790073346f495f335f616c7400733470685f696e666f00733470685f656e74727900 *73346f495f345f616c7400733470625f696e666f00733470625f656e74727900733470385f696e *666f00733470385f656e7472790073346f495f355f616c740073346f495f365f616c740073346f *575f696e666f0073346f575f656e7472790073344a765f315f616c740073346f595f64666c7400 *73346f595f7674626c0073344a765f325f616c740073344a765f7674626c0073344a745f315f61 *6c7400733470335f64666c7400733470335f7674626c0073344a755f315f616c7400733470315f *696e666f00733470315f656e7472790073344a755f325f616c740073344a755f7674626c007334 *4a745f325f616c740073344a745f7674626c0073346f495f375f616c740073346f4b5f64666c74 *0073346f4b5f7674626c0073346f495f385f616c7400733470565f696e666f00733470565f656e *74727900733470545f64666c7400733470545f7674626c00733470435f375f616c74007334704f *5f696e666f007334704f5f656e74727900733470435f385f616c7400733470475f696e666f0073 *3470475f656e74727900733470435f64666c7400733471675f696e666f00733471675f656e7472 *7900733471305f375f616c7400733471385f696e666f00733471385f656e74727900733471305f *385f616c7400733471305f64666c7400546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c723468307a647766696c6c4e425f737274007334717a5f7674626c00546578 *747a695072657474795072696e747a69487567686573504a5f7a644c7234683266696c6c31315f *7372740073344a715f7674626c00546578747a695072657474795072696e747a69487567686573 *504a5f7a647766696c6c315f7372740073344a725f7674626c0073344a6e5f315f616c74007334 *71555f315f616c7400733471595f64666c7400733471595f7674626c00733471575f64666c7400 *733471575f7674626c00733471555f64666c7400733471555f7674626c00733471535f64666c74 *00733471535f7674626c007334714f5f64666c74007334714f5f7674626c007334714d5f64666c *74007334714d5f7674626c00733472325f696e666f00733472325f7265740073344a6f5f315f61 *6c740073344a6f5f325f616c740073344a6f5f7674626c0073344a6e5f325f616c740073344a6e *5f7674626c007334717a5f315f616c74007334717a5f345f616c74007334717a5f64666c740073 *344a715f315f616c7400733472685f64666c7400733472685f7674626c0073344a715f325f616c *7400733473625f64666c7400733473625f7674626c0073344a735f315f616c7400733473385f64 *666c7400733473385f7674626c0073344a735f325f616c740073344a735f7674626c0073344a72 *5f315f616c7400733473305f696e666f00733473305f656e74727900733473325f696e666f0073 *3473325f656e7472790073344a725f325f616c7400733472575f696e666f00733472575f656e74 *72790073344a725f335f616c74007334724c5f696e666f007334724c5f656e7472790073344a72 *5f345f616c7400733472415f696e666f00733472415f656e74727900733472435f696e666f0073 *3472435f656e7472790073344a725f355f616c740073344a725f365f616c740073344a725f6466 *6c7400546578747a695072657474795072696e747a69487567686573504a5f7a6477736570315f *7372740073344a635f7674626c00546578747a695072657474795072696e747a69487567686573 *504a5f7a644c723468697365704e42315f73727400733475755f7674626c00733475695f64666c *7400733475695f7674626c0073344a645f315f616c7400733475665f64666c7400733475665f76 *74626c0073344a645f325f616c740073344a645f7674626c0073344a635f315f616c7400733475 *355f64666c7400733475355f7674626c00733475375f696e666f00733475375f656e7472790073 *3475395f696e666f00733475395f656e7472790073344a635f325f616c7400733475315f696e66 *6f00733475315f656e7472790073344a635f335f616c74007334744f5f696e666f007334744f5f *656e7472790073344a635f345f616c7400733474425f64666c7400733474425f7674626c007334 *74445f696e666f00733474445f656e74727900733474465f696e666f00733474465f656e747279 *00733474795f696e666f00733474795f656e7472790073344a635f355f616c740073344a635f36 *5f616c740073344a635f64666c7400733475495f315f616c7400733475505f64666c7400733475 *505f7674626c007334754e5f64666c74007334754e5f7674626c0073344a665f696e666f007334 *4a665f72657400733475525f696e666f00733475525f656e74727900733475495f64666c740073 *3475495f7674626c00733475475f64666c7400733475475f7674626c00733475455f64666c7400 *733475455f7674626c00733475435f64666c7400733475435f7674626c0073344a655f315f616c *740073344a655f325f616c740073344a655f7674626c00733475755f315f616c7400733475755f *345f616c740073344a685f696e666f0073344a685f72657400733475755f64666c740054657874 *7a695072657474795072696e747a69487567686573504a5f66756c6c52656e6465725f73727400 *73347a635f7674626c00733442685f64666c7400733442685f7674626c0073347a635f335f616c *7400733442665f64666c7400733442665f7674626c0073347a635f345f616c74007334496e5f69 *6e666f007334496e5f726574007334496d5f696e666f007334496d5f72657400733477725f696e *666f00733477725f656e74727900733449775f315f616c7400733478635f696e666f0073347863 *5f656e74727900733477475f656e74727900733449775f325f616c7400733478385f696e666f00 *733478385f656e74727900733478365f656e74727900733449775f335f616c7400733477585f69 *6e666f00733477585f656e74727900733449775f345f616c7400733477495f696e666f00733477 *495f656e74727900733449415f315f616c7400733449415f325f616c7400733449415f7674626c *007334497a5f315f616c74007334497a5f325f616c74007334497a5f7674626c00733449785f69 *6e666f00733449785f72657400733449775f355f616c7400733449775f365f616c740073344977 *5f64666c7400733449775f7674626c00733477475f696e666f007334496f5f315f616c74007334 *49705f696e666f00733449705f72657400733479665f696e666f00733479665f656e7472790073 *34496f5f325f616c7400733449715f696e666f00733449715f72657400733479325f696e666f00 *733479325f656e74727900733479355f696e666f00733479355f656e747279007334496f5f335f *616c74007334496f5f345f616c7400733478735f696e666f00733478735f656e74727900733449 *765f315f616c7400733449765f325f616c7400733449765f7674626c00733478445f696e666f00 *733478445f72657400733449755f315f616c7400733449755f325f616c7400733449755f767462 *6c007334784d5f696e666f007334784d5f72657400733449735f696e666f00733449735f726574 *007334496f5f355f616c74007334496f5f365f616c74007334496f5f64666c74007334496f5f76 *74626c00733478365f696e666f00733449435f696e666f00733449435f72657400733449425f69 *6e666f00733449425f72657400733479725f696e666f00733479725f656e74727900733449445f *696e666f00733449445f72657400733479415f696e666f00733479415f656e7472790073344945 *5f696e666f00733449455f72657400733479475f696e666f00733479475f656e74727900733449 *465f696e666f00733449465f72657400733479505f696e666f00733479505f656e747279007334 *49495f315f616c7400733441425f696e666f00733441425f656e7472790073347a385f656e7472 *7900733449495f325f616c740073347a715f696e666f0073347a715f656e7472790073347a6f5f *656e7472790073347a745f696e666f0073347a745f656e7472790073347a665f696e666f007334 *7a665f656e747279007334494a5f315f616c740073347a4f5f696e666f0073347a4f5f656e7472 *790073347a515f696e666f0073347a515f656e7472790073347a485f696e666f0073347a485f65 *6e747279007334494f5f696e666f007334494f5f7265740073347a535f696e666f0073347a535f *656e7472790073347a555f696e666f0073347a555f656e7472790073347a575f696e666f007334 *7a575f656e74727900733441655f696e666f00733441655f656e74727900733441675f696e666f *00733441675f656e74727900733441375f696e666f00733441375f656e747279007334494e5f69 *6e666f007334494e5f72657400733441695f696e666f00733441695f656e747279007334416b5f *696e666f007334416b5f656e747279007334416d5f696e666f007334416d5f656e747279007334 *41765f696e666f00733441765f656e74727900733441785f696e666f00733441785f656e747279 *007334416f5f696e666f007334416f5f656e747279007334494b5f696e666f007334494b5f7265 *74007334494a5f325f616c74007334494a5f7674626c00733449495f335f616c7400733449495f *345f616c7400733449495f64666c7400733449495f7674626c0073347a385f696e666f00733449 *475f315f616c7400733442305f696e666f00733442305f656e74727900733449475f325f616c74 *00733441575f696e666f00733441575f656e74727900733449475f335f616c7400733449475f34 *5f616c7400733449475f64666c7400733449475f7674626c0073347a6f5f696e666f0073344239 *5f64666c7400733442395f7674626c00733442375f64666c7400733442375f7674626c00733449 *515f696e666f00733449515f72657400733449505f315f616c7400733442645f64666c74007334 *42645f7674626c00733442625f64666c7400733442625f7674626c00733449505f325f616c7400 *733449505f7674626c0073347a635f64666c7400546578747a69526561647a694c65785f7a644c *72684b6c65784e756d6265725f73727400546578747a69526561647a694c65785f7a644c723575 *44705f73727400546578747a69526561647a694c65785f7a644c7268416c657849645f73727400 *546578747a69526561647a694c65785f6c766c3132355f73727400733633335f696e666f007336 *33365f696e666f00733633395f696e666f00733633635f696e666f00733633665f696e666f0073 *3633695f696e666f007336336c5f696e666f007336336f5f696e666f00733633725f696e666f00 *733633755f696e666f00733633435f696e666f00733633335f656e74727900733633365f656e74 *727900733633395f656e74727900733633635f656e74727900733633665f656e74727900733633 *695f656e747279007336336c5f656e74727900733636725f696e666f00733636725f656e747279 *00733636745f696e666f00733636745f656e747279007336344b5f696e666f007336344b5f656e *747279007336344e5f696e666f007336344e5f656e74727900733634515f696e666f0073363451 *5f656e74727900733634545f696e666f00733634545f656e74727900733634575f696e666f0073 *3634575f656e747279007336345a5f696e666f007336345a5f656e74727900733635325f696e66 *6f00733635325f656e74727900733635355f696e666f00733635355f656e74727900733635385f *696e666f00733635385f656e74727900733635625f696e666f00733635625f656e747279007336 *35655f696e666f00733635655f656e74727900733635685f696e666f00733635685f656e747279 *007336356b5f696e666f007336356b5f656e747279007336356e5f696e666f007336356e5f656e *74727900733635715f696e666f00733635715f656e74727900733635745f696e666f0073363574 *5f656e74727900733635775f696e666f00733635775f656e747279007336357a5f696e666f0073 *36357a5f656e74727900733635435f696e666f00733635435f656e74727900733635465f696e66 *6f00733635465f656e74727900733635495f696e666f00733635495f656e747279007336354c5f *696e666f007336354c5f656e747279007336354f5f696e666f007336354f5f656e747279007336 *35525f696e666f00733635525f656e74727900733635555f696e666f00733635555f656e747279 *00733636305f696e666f00733636305f656e747279007336656e5f696e666f007336656e5f7265 *7400733636385f696e666f00733636385f656e747279007336366a5f696e666f007336366a5f65 *6e74727900733636765f656e747279007336334a5f696e666f007336334a5f656e747279007336 *65715f315f616c7400733634385f696e666f00733634385f72657400733665715f325f616c7400 *733665715f7674626c00733634695f696e666f00733634695f656e747279007336346d5f696e66 *6f007336346d5f72657400733665745f315f616c74007336347a5f696e666f007336347a5f7265 *7400733665745f325f616c7400733665745f7674626c007336334f5f64666c74007336334f5f76 *74626c00733634445f696e666f00733634445f656e74727900733634465f696e666f0073363446 *5f656e74727900733634485f64666c7400733634485f7674626c00733636785f656e7472790073 *36336f5f656e74727900733633725f656e74727900733633755f656e74727900733665775f696e *666f00733665775f72657400733633435f656e74727900546578747a69526561647a694c65785f *7a644c72354148657461315f73727400446174617a69486173685461626c655f7a6477696e7365 *72745f7372740073354e725f696e666f0073354e435f696e666f0073354e435f7265740073356d *535f7265740073356e765f696e666f0073356e765f7265740073354e735f696e666f0073354e73 *5f7265740073356e515f696e666f0073356e515f72657400733570395f696e666f00733570395f *726574007335706e5f696e666f007335706e5f72657400733570785f696e666f00733570785f65 *6e7472790073354e595f696e666f0073354e595f7265740073354e555f696e666f0073354e555f *7265740073354e535f315f616c7400733571795f696e666f00733571795f72657400733571755f *656e7472790073354f615f696e666f0073354f615f7265740073354f325f696e666f0073354f32 *5f726574007335716f5f696e666f007335716f5f7265740073354e535f325f616c740073354e53 *5f7674626c00733571755f696e666f0073354f655f696e666f0073354f655f7265740073354e4d *5f696e666f0073354e4d5f7265740073356f785f72657400733572735f696e666f00733572735f *7265740073354f6f5f696e666f0073354f6f5f7265740073354f6c5f696e666f0073354f6c5f72 *65740073356f685f696e666f0073356f685f7265740073354e725f7265740073354e375f696e66 *6f0073354e6a5f315f616c740073354e6c5f315f616c740073354e6c5f325f616c740073354e6c *5f7674626c0073354e6b5f696e666f0073354e6b5f7265740073354e6a5f325f616c740073354e *6a5f7674626c0073354e6d5f315f616c740073354e6d5f325f616c740073354e6d5f7674626c00 *73354e665f696e666f0073354e665f72657400733574645f696e666f00733574645f7265740073 *3575375f696e666f00733575375f7265740073354e375f72657400446174617a69547970656162 *6c655f74626c5f7372740073376c4c5f72657400446174617a695479706561626c655f7a644c72 *364f4f74626c315f7372740073376b4a5f696e666f0073376b4a5f7265740073376b795f767462 *6c0073376b795f315f616c7400733733325f696e666f00733733325f656e7472790073376b7a5f *696e666f0073376b7a5f7265740073376b795f325f616c7400733356615f696e666f0073335678 *5f696e666f00733437365f696e666f00733437365f72657400733356615f656e74727900733356 *785f736c6f7700733356785f656e74727900733437615f696e666f00733437615f726574007334 *37395f696e666f00733437395f72657400733437385f696e666f00733437385f72657400733358 *695f696e666f00733436575f696e666f00733358665f696e666f00733358665f656e7472790073 *3436425f696e666f00733436425f72657400733358695f656e74727900733436565f315f616c74 *00733436565f325f616c7400733436565f7674626c00733436545f696e666f00733436545f7265 *74007334364b5f696e666f007334364b5f726574007334364a5f696e666f007334364a5f726574 *00733436575f656e74727900733436375f696e666f00733436385f315f616c7400733436395f69 *6e666f00733436395f72657400733436385f325f616c7400733436385f7674626c00733436375f *72657400733435705f696e666f00733435705f726574007334356a5f696e666f007334356b5f31 *5f616c74007334356e5f696e666f007334356e5f726574007334356c5f696e666f007334356c5f *726574007334356b5f325f616c74007334356b5f7674626c007334356a5f726574007334304c5f *696e666f007334304c5f656e74727900733462475f696e666f00733462475f7265740073346246 *5f315f616c74007334304e5f696e666f007334304e5f656e747279007334624f5f696e666f0073 *34624f5f72657400733431355f696e666f00733431355f656e74727900733462595f736c6f7700 *733462595f656e74727900733462575f696e666f00733462575f72657400733462595f696e666f *00733462465f325f616c7400733462465f7674626c0073346c4a5f696e666f0073346c4b5f696e *666f0073346c4b5f7265740073346c4a5f726574007333526b5f696e666f0073346c495f696e66 *6f007333526b5f656e7472790073346c485f696e666f0073346c485f7265740073346c475f696e *666f0073346c475f7265740073346c495f656e7472790073346c455f696e666f0073346c455f72 *65740073346c435f696e666f0073346c445f696e666f0073346c445f7265740073346c435f7265 *74004748437a694172725f6c766c375f73727400733251465f7674626c00733251475f315f616c *7400733251475f325f616c7400733251475f7674626c00733251465f315f616c74007332514a5f *315f616c74007332514c5f696e666f007332514c5f726574007332514b5f696e666f007332514b *5f726574007332514a5f325f616c74007332514a5f7674626c00733251465f325f616c74007332 *50705f696e666f00733250715f72657400733250705f726574007332506e5f696e666f00733250 *6f5f696e666f007332506f5f726574007332506e5f7265740073326f375f7265740073326f375f *696e666f00733277495f696e666f00733277495f656e747279007332774b5f696e666f00733277 *4b5f656e7472790073327a6b5f696e666f0073327a6b5f656e747279004748437a69456e756d5f *6c766c31365f737274004748437a69456e756d5f6c766c31385f7372740073326f4e5f696e666f *0073326f4e5f656e7472790073326f505f696e666f0073326f505f656e74727900733270395f69 *6e666f00733270395f656e74727900733270625f696e666f00733270625f656e74727900733132 *415f696e666f00733132415f726574004748437a69466c6f61745f7a64777a6473726f756e6433 *5f737274007363644b5f696e666f00736364505f696e666f00736364505f726574007363644f5f *696e666f007363644f5f72657400733945445f696e666f00733945445f726574007339454c5f69 *6e666f007339454c5f726574007339454e5f696e666f007339454e5f726574007363644c5f696e *666f007363644c5f726574007363644b5f7265740073646e7a5f696e666f0073646e7a5f726574 *0073646e785f696e666f0073646e785f726574004748437a6948616e646c655f7a644c724a6677 *726974657a75666c6167735f7372740073646f555f696e666f0073646f565f696e666f0073646f *565f7265740073646f555f726574004748437a6948616e646c655f7a644c724a6a617070656e64 *7a75666c6167735f7372740073646f535f696e666f0073646f545f696e666f0073646f545f7265 *740073646f535f726574004748437a6948616e646c655f7a644c724a6872777a75666c6167735f *7372740073646f515f696e666f0073646f525f696e666f0073646f525f7265740073646f515f72 *6574004748437a6948616e646c655f7a644c724a64726561647a75666c6167735f737274007364 *6f4f5f696e666f0073646f505f696e666f0073646f505f7265740073646f4f5f72657400736362 *4e5f696e666f007363624c5f696e666f007363624e5f656e7472790073646e675f696e666f0073 *646e675f7265740073646e665f696e666f0073646e665f7265740073646e655f696e666f007364 *6e655f72657400736362485f696e666f00736362485f656e7472790073646e685f315f616c7400 *73646e685f325f616c740073646e685f7674626c0073646e645f696e666f0073646e645f726574 *007363624c5f656e747279004748437a6948616e646c655f666c75736857726974654275666665 *724f6e6c795f7372740073646e325f696e666f0073646e345f315f616c7400736365305f696e66 *6f00736365305f656e74727900736364595f696e666f00736364595f656e7472790073646e355f *696e666f0073646e355f7265740073646e345f325f616c740073646e345f7674626c0073636452 *5f696e666f00736364525f7265740073646e325f726574004748437a6948616e646c655f6d6b53 *746448616e646c655f7372740073646d4d5f696e666f0073646d505f696e666f0073646d505f72 *65740073646d4f5f696e666f0073646d4f5f72657400736367385f696e666f00736367385f656e *74727900736367665f696e666f00736367665f656e74727900736367785f736c6f770073636778 *5f656e74727900736367755f696e666f00736367755f7265740073646d525f696e666f0073646d *525f7265740073646d515f696e666f0073646d515f72657400736367785f696e666f0073646d54 *5f696e666f0073646d545f72657400736367795f696e666f00736367795f7265740073646d4e5f *696e666f0073646d4e5f7265740073646d4d5f726574004748437a6948616e646c655f696f657a *756e6f745772697461626c655f737274004748437a6948616e646c655f696f657a756e6f745265 *616461626c655f737274004748437a6948616e646c655f696f657a75636c6f73656448616e646c *655f7372740073646d795f696e666f0073646d425f696e666f0073646d425f7265740073646d79 *5f7265740073636c645f696e666f0073636c645f736c6f770073636c645f656e7472790073636b *555f696e666f0073636b555f656e7472790073636b4f5f696e666f0073636b4f5f726574007363 *6b585f696e666f0073636b585f7265740073636c305f696e666f0073636c305f656e7472790073 *636c395f696e666f0073636c395f7265740073646d715f696e666f0073646d715f726574007364 *6d705f696e666f0073646d705f7265740073646d6f5f696e666f0073646d6f5f72657400474843 *7a6948616e646c655f77616e745265616461626c6548616e646c655f7372740073636d795f7674 *626c0073636d795f315f616c740073636d795f325f616c7400736373535f696e666f0073637353 *5f736c6f7700736373535f656e74727900736373755f696e666f00736373755f656e7472790073 *63736f5f696e666f007363736f5f72657400736373785f696e666f00736373785f726574007363 *73415f696e666f00736373415f656e747279007363734f5f696e666f007363734f5f7265740073 *646c6b5f696e666f0073646c6b5f7265740073646c6a5f696e666f0073646c6a5f726574007364 *6c695f696e666f0073646c695f7265740073646c685f696e666f0073646c685f7265740073646f *475f696e666f0073646f475f726574004748437a6948616e646c655f6765744275666665725f73 *72740073646b775f696e666f00736379545f696e666f00736379545f656e7472790073646b415f *696e666f0073646b415f7265740073646b7a5f696e666f0073646b7a5f7265740073646b795f69 *6e666f0073646b795f7265740073646b785f696e666f0073646b785f7265740073646b775f7265 *74004748437a6948616e646c655f68436c6f73657a7568616e646c657a755f7372740073637a59 *5f696e666f0073646b615f696e666f0073646b615f72657400736341345f696e666f0073634134 *5f656e7472790073646b665f696e666f0073646b665f72657400736341455f696e666f00736341 *455f656e7472790073646b645f696e666f0073646b645f7265740073646b635f696e666f007364 *6b635f7265740073646b625f696e666f0073646b625f72657400736341485f696e666f00736341 *485f72657400736342335f736c6f7700736342335f656e7472790073646b6d5f696e666f007364 *6b6d5f72657400736342335f696e666f0073646b6c5f696e666f0073646b6c5f72657400736342 *355f696e666f00736342355f656e7472790073646b6e5f696e666f0073646b6e5f726574007364 *6b6a5f696e666f0073646b6a5f7265740073646b695f315f616c740073646b695f325f616c7400 *73646b695f7674626c0073637a595f726574004748437a6948616e646c655f7a6477666c757368 *526561644275666665725f73727400736468535f696e666f00736354515f736c6f770073635451 *5f656e74727900736468575f696e666f00736468575f72657400736354515f696e666f00736468 *585f696e666f00736468585f72657400736468565f696e666f00736468565f7265740073646854 *5f696e666f00736468545f72657400736468535f726574004748437a6948616e646c655f6f7065 *6e46645f73727400736466615f696e666f00736466635f315f616c7400736466635f325f616c74 *00736466635f335f616c7400736466635f345f616c7400736466635f7674626c00736437495f69 *6e666f00736437495f656e74727900736466645f315f616c7400736466675f696e666f00736466 *675f72657400736466645f325f616c7400736466645f7674626c00736438375f696e666f007364 *38375f726574007364666e5f696e666f007364666e5f72657400736438775f696e666f00736438 *775f656e747279007364666f5f315f616c74007364666f5f325f616c74007364666f5f7674626c *007364666c5f696e666f007364666c5f726574007364666b5f696e666f007364666b5f72657400 *736438415f696e666f00736438415f656e74727900736466705f315f616c7400736466435f696e *666f00736466435f72657400736466425f696e666f00736466425f72657400736439665f696e66 *6f00736439665f656e74727900736466495f696e666f00736466495f72657400736466485f696e *666f00736466485f72657400736439515f696e666f00736439515f656e74727900736439585f73 *6c6f7700736439585f656e74727900736439585f696e666f007364664a5f696e666f007364664a *5f72657400736439595f696e666f00736439595f72657400736466475f696e666f00736466475f *72657400736466465f696e666f00736466465f72657400736466455f696e666f00736466455f72 *657400736466445f696e666f00736466445f726574007364396a5f696e666f007364396a5f7265 *7400736466415f696e666f00736466415f726574007364667a5f696e666f007364667a5f726574 *00736466795f696e666f00736466795f72657400736466785f696e666f00736466785f72657400 *7364384c5f365f616c74007364384c5f64666c74007364384c5f7674626c00736466765f696e66 *6f00736466765f72657400736466705f325f616c7400736466745f696e666f00736466745f7265 *7400736466725f696e666f00736466725f72657400736466715f696e666f00736466715f726574 *00736466705f335f616c7400736466705f7674626c007364616e5f696e666f007364616e5f7265 *74007364664d5f696e666f007364664d5f726574007364664c5f315f616c74007364664c5f325f *616c74007364664c5f7674626c00736466615f726574004748437a69494f5f7a6477636f6d6d69 *744275666665727a715f73727400736135665f696e666f007361356d5f315f616c74007361356d *5f325f616c74007361356d5f7674626c007339697a5f696e666f007339697a5f72657400733969 *515f696e666f00733969515f656e7472790073396a465f736c6f770073396a465f656e74727900 *733969585f696e666f00733969585f656e74727900736135745f696e666f00736135745f726574 *00736135735f315f616c7400736135735f325f616c7400736135735f7674626c00736135715f69 *6e666f00736135715f7265740073396a755f696e666f0073396a755f72657400736135755f315f *616c7400736135755f325f616c7400736135755f7674626c00736135705f696e666f0073613570 *5f7265740073396a465f696e666f00736135445f696e666f00736135445f72657400736135435f *696e666f00736135435f72657400736135425f696e666f00736135425f72657400736135785f31 *5f616c74007361357a5f696e666f007361357a5f72657400736135795f696e666f00736135795f *72657400736135785f325f616c7400736135785f7674626c007361356c5f696e666f007361356c *5f72657400736135665f726574004748437a69494f5f6c766c335f737274004748437a69494f5f *7a6477706f6c797a7562756657726974655f737274007361386a5f696e666f00736138475f7265 *7400736138465f696e666f00736138465f72657400736138785f736c6f7700736138785f656e74 *727900736138765f696e666f00736138765f72657400736138745f696e666f00736138745f7265 *7400733971775f696e666f00733971775f72657400733971665f656e74727900736138735f696e *666f00736138735f72657400736138715f696e666f00736138715f726574007339716d5f696e66 *6f007339716d5f72657400736138705f696e666f00736138705f72657400736138785f696e666f *00733971665f696e666f007361386e5f315f616c740073396f515f696e666f0073396f515f656e *74727900736138435f736c6f7700736138435f656e74727900736138425f696e666f0073613842 *5f726574007339706b5f696e666f007339706b5f656e74727900736138415f696e666f00736138 *415f72657400733970705f656e747279007361387a5f696e666f007361387a5f72657400736138 *435f696e666f00733970705f696e666f00736138445f696e666f00736138445f72657400736138 *6e5f325f616c74007361386e5f7674626c007361386c5f696e666f007361386c5f726574007361 *386a5f726574004748437a69494f5f696c6c6567616c42756666657253697a7a655f7372740073 *3977785f696e666f00736134515f696e666f00736134515f72657400733977765f696e666f0073 *3977765f656e74727900733977785f656e747279004748437a69494f5f7a644c72444a68507574 *6342756666657265645f73727400736134445f696e666f00733978485f696e666f00733978485f *656e74727900733978465f696e666f00733978465f656e747279007361344a5f696e666f007361 *344a5f72657400733978585f696e666f00733978585f726574007361344c5f315f616c74007361 *344c5f325f616c74007361344c5f7674626c00736134485f696e666f00736134485f7265740073 *6134475f696e666f00736134475f72657400736134465f696e666f00736134465f726574007339 *786c5f696e666f007339786c5f72657400736134445f726574004748437a69494f5f7a6477706f *6c797a75627566526561645f73727400736137645f696e666f00736137795f696e666f00736137 *795f72657400733941545f696e666f00733941545f656e74727900736137785f696e666f007361 *37785f72657400733942645f736c6f7700733942645f656e74727900736137755f696e666f0073 *6137755f72657400733942645f696e666f00736137775f315f616c7400736137775f325f616c74 *00736137775f7674626c00736137765f696e666f00736137765f72657400736137725f696e666f *00736137725f72657400736137715f696e666f00736137715f726574007361376f5f696e666f00 *7361376f5f726574007361376e5f696e666f007361376e5f726574007361376d5f696e666f0073 *61376d5f72657400733944695f696e666f00733944695f656e747279007361376c5f696e666f00 *7361376c5f72657400736137695f696e666f00736137695f72657400736137685f696e666f0073 *6137685f72657400736137645f726574004748437a69494f5f7a644c723967707a64776c617a7a *7952656164486176654275666665725f73727400736136385f696e666f004748437a69494f5f7a *644c723967726c617a7a79526561644275666665726564315f73727400733954685f696e666f00 *733953595f696e666f004748437a69494f5f7a644c723967746c617a7a7952656164315f737274 *00733954765f696e666f007339566b5f696e666f00733956425f696e666f00736136615f696e66 *6f00736136615f72657400733952795f696e666f00733952795f656e74727900733953395f696e *666f00733953395f656e74727900736136685f696e666f00736136685f72657400736136655f72 *657400736136645f696e666f00736136645f72657400733952565f696e666f00733952565f7265 *7400736136395f696e666f00736136395f72657400736136385f726574007361366a5f315f616c *74007361366d5f696e666f007361366d5f726574007361366b5f696e666f007361366b5f726574 *007361366a5f64666c74007361366a5f7674626c00733954335f696e666f00733954335f726574 *00733954685f656e74727900733953595f736c6f7700733953595f656e747279007339534b5f69 *6e666f007339534b5f656e74727900736136705f696e666f00736136705f726574007339534c5f *696e666f007339534c5f72657400733954765f656e74727900736136715f315f616c7400736136 *795f696e666f00736136795f726574007339556d5f696e666f007339556d5f656e747279007339 *55785f736c6f7700733955785f656e74727900733955755f696e666f00733955755f7265740073 *3955785f696e666f00736136485f696e666f00736136485f72657400736136465f696e666f0073 *6136465f72657400736136445f696e666f00736136445f72657400736136425f696e666f007361 *36425f72657400736136415f696e666f00736136415f72657400733955705f696e666f00733955 *705f726574007361367a5f315f616c74007361367a5f325f616c74007361367a5f7674626c0073 *6136785f696e666f00736136785f72657400736136765f315f616c7400733956665f696e666f00 *733956665f656e74727900736136765f325f616c7400733956645f696e666f00733956645f656e *74727900736136765f335f616c7400736136765f7674626c00733954595f696e666f0073395459 *5f72657400733954585f696e666f00733954585f72657400736136715f325f616c740073613671 *5f64666c7400736136715f7674626c007339566b5f656e74727900733956425f736c6f77007339 *56425f656e74727900733956705f315f616c7400733956705f325f616c7400733956705f767462 *6c004748437a69494f426173655f7a647773686f777350726563325f737274007337755a5f7674 *626c00733671375f315f616c7400733671395f696e666f00733671395f656e7472790073367137 *5f325f616c7400733671375f7674626c00733671625f696e666f00733671625f656e7472790073 *37755a5f315f616c7400733670575f315f616c74007336705a5f696e666f007336705a5f656e74 *727900733670575f325f616c7400733670575f7674626c00733671315f696e666f00733671315f *656e747279007337755a5f325f616c7400733676635f696e666f007337756c5f696e666f007337 *756c5f72657400733676635f656e747279004748437a69494f426173655f7a647773686f777350 *726563355f73727400733774665f7674626c007336414b5f315f616c74007336414b5f325f616c *74007336414b5f7674626c00733641525f656e74727900733641545f696e666f00733641545f65 *6e74727900733641595f315f616c7400733642305f696e666f00733642305f656e747279007336 *41595f325f616c7400733641595f7674626c00733774675f315f616c74007336426f5f696e666f *007336426f5f656e74727900733642735f696e666f00733642735f656e74727900733774685f31 *5f616c7400733642665f696e666f00733642665f656e747279007336426a5f696e666f00733642 *6a5f656e74727900733774685f325f616c7400733774685f7674626c00733774675f325f616c74 *00733774675f7674626c00733774665f315f616c7400733642775f696e666f00733642775f656e *74727900733774665f325f616c740073376f715f696e666f0073376f715f7265740073376f6c5f *696e666f00733731315f696e666f00733731315f7265740073376f6c5f7265740073376f675f69 *6e666f00733731655f696e666f00733731655f7265740073376f675f7265740073376e635f696e *666f00733733645f696e666f00733733645f7265740073376e635f7265740073376e345f696e66 *6f0073376e345f726574004748437a69496e745f7a64776469764d6f64325f7372740073395938 *5f696e666f00733959345f696e666f00733959365f696e666f00733959365f7265740073395938 *5f656e74727900733959325f696e666f00733959325f72657400733959345f656e747279007362 *6c645f696e666f0073626c645f7265740073626c625f696e666f0073626c635f696e666f007362 *6c635f7265740073626c625f726574007362684b5f696e666f007362684b5f726574007362684a *5f696e666f007362684a5f72657400736268475f696e666f00736268495f696e666f0073626849 *5f72657400736268485f696e666f00736268485f72657400736268475f726574004748437a6949 *6e745f73756363325f73727400736268465f696e666f00736268465f726574004748437a69496e *745f746f526174696f6e616c325f737274007362675a5f696e666f007362675a5f726574004748 *437a69496e745f70726564325f73727400736267575f696e666f00736267585f696e666f007362 *67585f72657400736267575f726574004748437a69496e745f626f756e646564456e756d46726f *6d5468656e5f73727400736267535f696e666f00736267545f696e666f00736267545f72657400 *736267535f726574004748437a694c6973745f7a644c723272696c766c31315f73727400474843 *7a694c6973745f7a644c723272716c766c31355f737274004748437a694c6973745f7a644c7232 *72796c766c31395f737274004748437a694c6973745f7a644c723272576c766c33315f73727400 *733333615f7674626c00733333615f315f616c7400733333615f325f616c7400733332415f7674 *626c00733332455f315f616c7400733332465f696e666f00733332465f72657400733332455f32 *5f616c7400733332455f7674626c00733332415f315f616c7400733332445f696e666f00733332 *445f72657400733332425f315f616c7400733332435f696e666f00733332435f72657400733332 *425f325f616c7400733332425f7674626c00733332415f325f616c7400733332755f7674626c00 *733332795f315f616c74007333327a5f696e666f007333327a5f72657400733332795f325f616c *7400733332795f7674626c00733332755f315f616c7400733332785f696e666f00733332785f72 *657400733332765f315f616c7400733332775f696e666f00733332775f72657400733332765f32 *5f616c7400733332765f7674626c00733332755f325f616c74004748437a694e756d5f73686f77 *73507265635f73727400733331555f696e666f00733331555f726574004748437a694e756d5f73 *686f774c6973745f73727400733331535f7674626c00733331535f315f616c7400733331545f31 *5f616c7400733253445f696e666f00733253445f656e74727900733331545f325f616c74007333 *31545f7674626c007332537a5f696e666f007332537a5f656e74727900733253485f696e666f00 *733253485f656e747279007332534a5f696e666f007332534a5f656e74727900733331535f325f *616c74004748437a694e756d5f7a64646d73686f775f73727400734e565f696e666f00734e575f *696e666f00734e575f72657400734e565f72657400734e555f696e666f00734e555f7265740073 *364c335f7674626c0073364c335f315f616c740073364c335f325f616c74004748437a69526561 *645f726561644e756d626572335f7372740073366b435f696e666f0073366c6e5f696e666f0073 *366b435f656e7472790073366b4b5f696e666f0073366b4b5f656e7472790073366b4e5f696e66 *6f0073366b4e5f656e7472790073366b505f696e666f0073366b505f656e7472790073364c525f *315f616c740073364c525f325f616c740073364c525f7674626c0073364c515f315f616c740073 *364c515f325f616c740073364c515f7674626c0073366b545f355f616c740073366b545f64666c *740073366b545f7674626c0073366c6c5f696e666f0073366c6c5f656e7472790073366c6e5f65 *6e747279004748437a69526561645f6c766c32315f737274007336706c5f696e666f0073364a52 *5f315f616c740073364a525f64666c740073364a525f7674626c007336706c5f656e7472790047 *48437a69526561645f6c766c32345f73727400733670415f696e666f00733670415f656e747279 *0073364a4c5f325f616c740073364a4c5f64666c740073364a4c5f7674626c007336704b5f696e *666f007336704b5f656e747279007336704d5f656e747279007336704f5f696e666f007336704f *5f656e74727900733670535f696e666f00733670535f656e74727900733670585f696e666f0073 *3670585f656e7472790073364a4d5f656e747279004748437a69526561645f61345f7372740047 *48437a69526561645f6c766c32355f737274007336716b5f696e666f007336716e5f696e666f00 *733671775f696e666f007336716b5f656e747279007336716e5f656e7472790073364a4b5f315f *616c740073364a4b5f325f616c740073364a4b5f7674626c0073364a4a5f315f616c740073364a *4a5f325f616c740073364a4a5f7674626c0073364a495f345f616c740073364a495f64666c7400 *73364a495f7674626c00733671775f656e747279004748437a69526561645f61355f7372740073 *364a425f7674626c0073364a425f365f616c740073364a425f64666c74004748437a6952656164 *5f61375f737274004748437a695265616c5f7a64737a765f737274007335704c5f7674626c0073 *364e785f696e666f0073364e785f726574007335704a5f64666c74007335704a5f7674626c0073 *3570485f64666c7400733570485f7674626c007335704c5f64666c74004748437a6953686f775f *6c766c32335f737274004748437a6953686f775f6c766c32345f73727400733238795f696e666f *00733238775f696e666f00733238755f696e666f00733238755f656e74727900733238775f656e *74727900733238795f656e747279004748437a6953686f775f73686f776c5f7372740073326e66 *5f7674626c0073326e665f315f616c7400733262595f696e666f00733262595f656e7472790073 *3263305f696e666f00733263305f656e7472790073326e675f696e666f0073326e675f72657400 *73326e665f325f616c74004748437a6953686f775f7a647773686f7773507265635f7372740073 *3263625f696e666f00733263625f656e74727900733362475f696e666f00733362475f72657400 *4748437a69546f7048616e646c65725f7265706f72744572726f725f73727400733362755f696e *666f00733362415f315f616c7400733362425f696e666f00733362425f72657400733362415f32 *5f616c7400733362415f7674626c007333627a5f696e666f007333627a5f72657400733362795f *696e666f00733362795f72657400733362785f696e666f00733362785f72657400733362775f69 *6e666f00733362775f726574007333384b5f696e666f007333384b5f656e74727900733362755f *726574004748437a69546f7048616e646c65725f7a644c723337346c766c335f73727400474843 *7a69546f7048616e646c65725f7265706f7274537461636b4f766572666c6f775f737274007333 *626c5f696e666f007333626f5f315f616c7400733362705f696e666f00733362705f7265740073 *33626f5f325f616c74007333626f5f7674626c007333626e5f696e666f007333626e5f72657400 *7333626c5f726574004748437a69546f7048616e646c65725f7a644c723337616c766c355f7372 *74004748437a69546f7048616e646c65725f7a644c723337636c766c365f737274004748437a69 *546f7048616e646c65725f7a644c723337656c766c375f737274004748437a69546f7048616e64 *6c65725f7a644c723337676c766c385f737274004748437a69546f7048616e646c65725f7a644c *723337696c766c395f737274004748437a69546f7048616e646c65725f7a644c7233376b6c766c *31305f737274004748437a69546f7048616e646c65725f7a644c7233376d6c766c31315f737274 *004748437a69546f7048616e646c65725f7a644c7233376f6c766c31325f737274004748437a69 *546f7048616e646c65725f7a644c723337716c766c31335f737274004748437a69546f7048616e *646c65725f7a644c723337736c766c31345f737274004748437a69546f7048616e646c65725f7a *644c723337756c766c31355f73727400736251725f7674626c00736251725f315f616c74007362 *51725f325f616c74004748437a69576f72645f7a64646d73686f775f7372740073624f655f696e *666f0073624f655f726574004748437a69576f72645f73686f777350726563335f737274007362 *384e5f696e666f007362484d5f696e666f007362384e5f656e747279007362484c5f696e666f00 *7362484c5f726574007362484d5f656e74727900736244465f696e666f00736244475f696e666f *00736244475f72657400736244465f72657400736244435f696e666f00736244445f696e666f00 *736244445f72657400736244435f726574004748437a69576f72645f7a64646d73686f774c6973 *74335f7372740053797374656d7a694469726563746f72795f7468726f774572726e6f49664d69 *6e75733152657472797a755f7372740053797374656d7a694469726563746f72795f7a644c7239 *637166696c654e616d65456e64436c65616e315f73727400733977715f696e666f00733977465f *64666c7400733977465f7674626c007339774a5f64666c74007339774a5f7674626c0073394c6b *5f696e666f0073394c6b5f72657400733977715f72657400733853675f696e666f00733853675f *72657400733853655f696e666f00733853655f7265740053797374656d7a69506f7369787a6949 *6e7465726e616c735f7365744e6f6e426c6f636b696e6746445f73727400733850585f696e666f *00733851695f696e666f00733851695f72657400733851685f696e666f00733851685f72657400 *733851675f696e666f00733851675f7265740073386d7a5f696e666f0073386d7a5f7265740073 *386d4a5f696e666f0073386d4a5f7265740073386c585f696e666f0073386c585f726574007338 *51655f696e666f00733851655f72657400733851645f696e666f00733851645f72657400733851 *635f696e666f00733851635f7265740073386c485f696e666f0073386c485f7265740073386c46 *5f736c6f770073386c465f656e74727900733851625f696e666f00733851625f72657400733851 *615f696e666f00733851615f7265740073386c465f696e666f00733851365f315f616c74007338 *51395f736c6f7700733851395f656e74727900733851385f696e666f00733851385f7265740073 *3851375f696e666f00733851375f72657400733851395f696e666f0073386c745f696e666f0073 *386c745f72657400733851365f325f616c7400733851365f7674626c00733850585f7265740053 *797374656d7a69506f7369787a69496e7465726e616c735f6664547970655f7372740073384f72 *5f696e666f0073387a685f736c6f770073387a685f656e7472790073387a685f696e666f007338 *4f4f5f696e666f0073384f4f5f7265740073384f4c5f696e666f0073384f4c5f7265740073384f *495f696e666f0073384f495f7265740073384f465f696e666f0073384f465f7265740073384f43 *5f696e666f0073384f435f7265740073384f7a5f696e666f0073384f7a5f7265740073384f795f *696e666f0073384f795f7265740073384f775f696e666f0073384f775f7265740073384f755f69 *6e666f0073384f755f7265740073384f735f696e666f0073384f735f7265740073384f725f7265 *740053797374656d7a69506f7369787a69496e7465726e616c735f6c766c31355f737274007338 *4f395f696e666f0073384f395f72657400546578747a69506172736572436f6d62696e61746f72 *737a6952656164505f7a6c7a707a705f73727400733142615f696e666f00733142715f696e666f *007331474e5f696e666f00733147485f315f616c7400733142695f64666c7400733142615f656e *74727900733142695f7674626c00733147485f325f616c7400733147485f7674626c007331414d *5f315f616c7400733142395f64666c7400733142395f7674626c007331414d5f325f616c740073 *31414d5f335f616c7400733141555f696e666f00733141555f656e747279007331415a5f696e66 *6f007331415a5f656e74727900733142335f696e666f00733142335f656e747279007331474b5f *696e666f007331474b5f656e747279007331414d5f345f616c74007331474d5f696e666f007331 *474d5f656e747279007331414d5f355f616c74007331414d5f7674626c00733142715f656e7472 *7900733142775f696e666f00733142775f656e747279007331474e5f656e74727900546578747a *695072657474795072696e747a69487567686573504a5f7a644c723466536c766c5f7372740054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467636c766c3130 *5f73727400546578747a695072657474795072696e747a69487567686573504a5f7a644c723467 *6f6c766c31365f73727400546578747a695072657474795072696e747a69487567686573504a5f *7a644c723467716c766c31375f73727400546578747a695072657474795072696e747a69487567 *686573504a5f7a644c723467736c766c31385f73727400546578747a695072657474795072696e *747a69487567686573504a5f7a644c723467756c766c31395f73727400546578747a6950726574 *74795072696e747a69487567686573504a5f7a644c723661656173797a75646973706c61795f73 *72740073346a315f696e666f0073346a315f656e7472790073344a335f315f616c740073346a68 *5f696e666f0073346a685f656e7472790073344a335f325f616c740073344a335f335f616c7400 *73344a335f345f616c740073344a335f355f616c740073344a335f365f616c740073344a335f64 *666c740073344a335f7674626c0073346d485f7674626c0073346d485f315f616c740073346d48 *5f345f616c740073344a4a5f315f616c740073344a4a5f325f616c740073344a4a5f7674626c00 *73346d485f64666c7400546578747a695072657474795072696e747a69487567686573504a5f7a *644c7234674d6f6e654c696e6572315f7372740073344a465f7674626c0073344a465f315f616c *740073344a465f325f616c740073346e355f696e666f0073346e355f656e7472790073344a465f *335f616c740073346d585f696e666f0073346d585f656e7472790073344a465f345f616c740073 *344a465f355f616c740073344a465f365f616c740073344a465f64666c740073346e665f767462 *6c0073346e665f315f616c740073346e665f345f616c740073346e665f365f616c740073346e66 *5f64666c740073346e435f7674626c0073346e435f315f616c740073346e435f345f616c740073 *346e7a5f696e666f0073346e7a5f656e7472790073346e455f696e666f0073346e455f656e7472 *790073344a445f315f616c740073346e475f696e666f0073346e475f656e7472790073344a445f *325f616c740073344a445f7674626c0073346e435f64666c7400546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c723467537a647761626f76654e6573745f73727400 *73344a435f7674626c0073344a435f315f616c740073346f795f696e666f0073346f795f656e74 *72790073344a435f325f616c740073346f6d5f315f616c740073346f6d5f64666c740073346f6d *5f7674626c0073346f755f696e666f0073346f755f656e7472790073344a435f335f616c740073 *346f655f696e666f0073346f655f656e7472790073344a435f345f616c740073346f355f696e66 *6f0073346f355f656e7472790073346f325f696e666f0073346f325f656e7472790073344a435f *355f616c740073344a435f365f616c740073344a435f64666c740073344a6d5f7674626c007334 *4a6d5f315f616c7400733473465f696e666f00733473465f656e7472790073344a6d5f325f616c *740073344a6c5f7674626c0073344a6c5f315f616c7400733473505f696e666f00733473505f65 *6e7472790073344a6c5f325f616c740073344a6b5f7674626c0073344a6b5f315f616c74007334 *735a5f696e666f007334735a5f656e7472790073344a6b5f325f616c740073344a6a5f7674626c *0073344a6a5f315f616c7400733474395f696e666f00733474395f656e7472790073344a6a5f32 *5f616c740073344a695f7674626c0073344a695f315f616c74007334746a5f696e666f00733474 *6a5f656e7472790073344a695f325f616c7400546578747a695072657474795072696e747a6948 *7567686573504a5f7a644c7234686b7a6477666974735f7372740073344a395f7674626c007334 *4a395f315f616c740073344a395f325f616c740073344a395f335f616c740073344a395f365f61 *6c740073344a395f64666c7400733476505f696e666f00733476505f656e74727900733477315f *696e666f00733477315f656e74727900546578747a69526561647a694c65785f7a644c7235734e *6c766c335f73727400733669525f7674626c00733669525f315f616c74007335426e5f64666c74 *007335426e5f7674626c00733542695f64666c7400733542695f7674626c00733669535f696e66 *6f00733669535f72657400733669525f325f616c7400546578747a69526561647a694c65785f7a *644c7268576c65784469676974735f73727400733544735f696e666f00733668545f315f616c74 *00733544725f656e74727900733544755f696e666f00733544755f656e74727900733544735f65 *6e74727900733544445f656e74727900733544475f696e666f00733544475f7265740073354452 *5f696e666f00733544525f656e74727900733669695f696e666f00733669695f656e7472790073 *3545375f696e666f00733545375f656e74727900733669685f696e666f00733669685f656e7472 *7900733669645f696e666f00733669645f656e74727900733669395f696e666f00733669395f72 *657400733546685f736c6f77007335455a5f696e666f007335455a5f72657400733546715f656e *74727900733669385f696e666f00733669385f656e74727900733669375f315f616c7400733669 *375f325f616c7400733669375f7674626c00733669365f696e666f00733669365f656e74727900 *733669355f315f616c7400733669355f325f616c7400733669355f7674626c00733668595f696e *666f00733668595f72657400733668565f696e666f00733668565f72657400733668545f325f61 *6c7400733668545f7674626c00733547305f315f616c7400733547305f325f616c740073354730 *5f7674626c00733667775f696e666f00733667775f72657400546578747a69526561647a694c65 *785f7a644c723575786c766c31365f73727400733552755f696e666f00733552785f696e666f00 *733552475f696e666f007335526a5f696e666f007335526a5f656e747279007335526e5f696e66 *6f007335526e5f656e74727900733552735f696e666f00733552735f656e74727900733552755f *656e74727900733552785f656e74727900733552475f656e74727900733665525f696e666f0073 *3665525f72657400733665535f696e666f00733665535f72657400546578747a69526561647a69 *4c65785f7a644c7235757a7a6c766c31375f73727400733554515f696e666f00733553365f696e *666f00733553365f656e74727900733553395f64666c7400733553395f7674626c00733553625f *696e666f00733553625f656e74727900733553655f64666c7400733553655f7674626c00733665 *455f315f616c7400733554775f64666c7400733554775f7674626c00733554415f64666c740073 *3554415f7674626c00733665485f696e666f00733665485f72657400733665475f696e666f0073 *3665475f72657400733554485f696e666f00733554485f656e74727900733665465f315f616c74 *007335546b5f64666c74007335546b5f7674626c007335546d5f696e666f007335546d5f656e74 *727900733665465f325f616c7400733665465f7674626c00733665455f325f616c740073366545 *5f7674626c00733665445f315f616c7400733553475f64666c7400733553475f7674626c007335 *53415f64666c7400733553415f7674626c00733553455f64666c7400733553455f7674626c0073 *3553495f64666c7400733553495f7674626c007336654b5f696e666f007336654b5f7265740073 *36654a5f72657400733553505f696e666f00733553505f656e747279007336654d5f315f616c74 *00733665505f696e666f00733665505f72657400733554335f64666c7400733554335f7674626c *00733554375f64666c7400733554375f7674626c007336654f5f726574007336654e5f696e666f *007336654e5f72657400733554655f696e666f00733554655f656e747279007336654d5f325f61 *6c74007336654d5f7674626c00733665445f325f616c7400733665445f7674626c007335544a5f *696e666f007335544a5f656e747279007335544d5f696e666f007335544d5f656e747279007335 *544f5f696e666f007335544f5f656e74727900733554515f656e74727900546578747a69526561 *647a694c65785f7a644c72357a7a316c657841736369695f73727400546578747a69526561647a *694c65785f7a644c72357a7a646c766c38365f73727400733631775f696e666f00733631685f69 *6e666f007336316c5f696e666f007336316e5f7674626c00733631715f696e666f00733631715f *656e74727900733631755f696e666f00733631755f656e74727900733631775f656e7472790073 *3631685f656e747279007336316c5f656e747279007336316e5f64666c7400546578747a695265 *61647a694c65785f7a644c72357a7a666c766c38375f737274007336315a5f696e666f00733631 *505f696e666f00733631505f656e74727900733631485f696e666f00733631485f726574007336 *31585f696e666f00733631585f656e747279007336315a5f656e74727900546578747a69526561 *647a694c65785f7a644c72357a7a7264735f73727400546578747a69526561647a694c65785f7a *644c72354146626f64795f73727400733637545f696e666f00733669485f696e666f0073363754 *5f656e74727900733638695f696e666f00733638695f656e74727900733669475f315f616c7400 *733638715f696e666f00733638715f656e74727900733669475f325f616c7400733669475f7674 *626c00733638645f696e666f00733638645f72657400733669455f696e666f00733669455f7265 *7400733638735f656e74727900733669485f656e74727900446174617a695479706561626c655f *63616368655f73727400733430745f696e666f007334354c5f696e666f00733430715f696e666f *00733430715f656e74727900733435715f696e666f00733435715f72657400733430745f656e74 *727900733435485f696e666f00733435485f72657400733435795f696e666f00733435795f7265 *74007334354a5f696e666f007334354a5f726574007334354c5f656e7472790073354b6b5f315f *616c740073354b6c5f696e666f0073354b6c5f72657400733546755f656e7472790073354b6b5f *325f616c740073354b6b5f7674626c0073354b6f5f696e666f0073354b6f5f7265740073354b6d *5f696e666f0073354b6d5f7265740073354b695f696e666f0073354b695f72657400733169475f *696e666f00733165785f696e666f00733165785f72657400733169475f7265740073326a4c5f69 *6e666f0073326a4c5f656e7472790073326a4e5f696e666f0073326a4e5f656e7472790073326b *615f696e666f0073326b615f656e7472790073326b7a5f696e666f0073326b7a5f656e74727900 *73326b425f696e666f0073326b425f656e7472790073326c305f696e666f0073326c305f656e74 *72790073326c325f696e666f0073326c325f656e747279004748437a69466c6f61745f7a64777a *647370726f7065724672616374696f6e5f73727400736366685f696e666f00733973795f696e66 *6f00733973795f72657400733973785f696e666f00733973785f72657400733973445f696e666f *00733973445f656e74727900733973505f696e666f00733973505f656e747279007363666f5f69 *6e666f007363666f5f726574007363666c5f315f616c74007363666d5f696e666f007363666d5f *726574007363666c5f325f616c74007363666c5f7674626c007339746e5f696e666f007339746e *5f656e747279007339735a5f696e666f007339735a5f656e747279007363666b5f696e666f0073 *63666b5f72657400733974715f696e666f00733974715f72657400736366755f696e666f007363 *66755f72657400736366725f315f616c7400736366735f696e666f00736366735f726574007363 *66725f325f616c7400736366725f7674626c00733974585f696e666f00733974585f656e747279 *007339747a5f696e666f007339747a5f656e74727900736366715f696e666f00736366715f7265 *7400733975305f696e666f00733975305f72657400736366775f315f616c7400736366785f696e *666f00736366785f72657400736366775f325f616c7400736366775f7674626c00736366685f72 *657400736333585f696e666f0073646f345f315f616c740073646f345f325f616c740073646f34 *5f7674626c00736333565f315f616c7400736333565f325f616c7400736333565f7674626c0073 *6333585f656e747279004748437a6948616e646c655f7a644c724a397374647a75666c6167735f *7372740073646f595f696e666f0073646f5a5f696e666f0073646f5a5f7265740073646f595f72 *6574004748437a6948616e646c655f7a644c724a626f75747075747a75666c6167735f73727400 *73646f575f696e666f0073646f585f696e666f0073646f585f7265740073646f575f7265740073 *6362345f696e666f00736362325f696e666f00736362345f656e7472790073646e6d5f696e666f *0073646e6d5f7265740073646e6c5f696e666f0073646e6c5f7265740073646e6b5f696e666f00 *73646e6b5f7265740073646e6a5f696e666f0073646e6a5f72657400736361595f696e666f0073 *6361595f656e7472790073646e6e5f315f616c740073646e6e5f325f616c740073646e6e5f7674 *626c0073646e695f696e666f0073646e695f72657400736362325f656e747279004748437a6948 *616e646c655f696f657a7566696e616c697a7a656448616e646c655f737274004748437a694861 *6e646c655f77616e745265616461626c6548616e646c657a715f7372740073636d6d5f696e666f *0073646d665f315f616c740073646d665f325f616c740073646d665f335f616c740073646d665f *345f616c740073646d665f355f616c740073636c795f696e666f0073636c795f656e7472790073 *646d6e5f736c6f770073646d6e5f656e7472790073646d6a5f315f616c740073636c565f696e66 *6f0073636c565f656e7472790073636c545f696e666f0073636c545f656e7472790073646d6c5f *696e666f0073646d6c5f7265740073636d665f696e666f0073636d665f656e7472790073646d6b *5f696e666f0073646d6b5f7265740073646d6a5f325f616c740073646d6a5f7674626c0073646d *695f696e666f0073646d695f7265740073646d675f696e666f0073646d675f7265740073646d6e *5f696e666f0073646d665f365f616c740073646d665f7674626c0073636d6d5f656e7472790073 *646f455f696e666f0073646f455f726574004748437a6948616e646c655f7a644c7263307a7a74 *68726f774572726e6f49664d696e75733152657472797a755f737274004748437a6948616e646c *655f7a644c726330427a647768616e646c6546696e616c697a7a65725f7372740073646a585f69 *6e666f00736343675f696e666f00736343675f656e747279007363436a5f696e666f007363436a *5f7265740073646a595f315f616c7400736342585f696e666f00736342585f656e747279007363 *43395f696e666f00736343395f656e74727900736343645f696e666f00736343645f7265740073 *646b315f696e666f0073646b315f7265740073646a5a5f696e666f0073646a5a5f726574007364 *6a595f64666c740073646a595f7674626c0073646a585f726574004748437a6948616e646c655f *7a644c724a726d6b46696c6548616e646c655f73727400736343775f696e666f0073646a505f69 *6e666f0073646a4f5f335f616c740073646a4f5f64666c740073646a4f5f7674626c0073634377 *5f656e7472790073646a555f696e666f0073646a555f7265740073646a545f696e666f0073646a *545f72657400736344325f696e666f00736344325f656e74727900736344615f736c6f77007363 *44615f656e74727900736344615f696e666f0073646a565f696e666f0073646a565f7265740073 *6344625f696e666f00736344625f7265740073646a535f696e666f0073646a535f726574007364 *6a525f696e666f0073646a525f7265740073646a515f696e666f0073646a515f7265740073646a *505f726574004748437a6948616e646c655f7a647766696c6c526561644275666665724c6f6f70 *5f7372740073634d4f5f696e666f0073634d375f696e666f0073646f6a5f696e666f0073646f6a *5f7265740073634c705f696e666f0073634c705f656e7472790073634c425f736c6f770073634c *425f656e7472790073634c795f696e666f0073634c795f7265740073634c425f696e666f007364 *6f765f696e666f0073646f765f7265740073634d335f696e666f0073634d335f656e7472790073 *646f725f315f616c740073646f735f696e666f0073646f735f7265740073634d6f5f696e666f00 *73634d6f5f656e7472790073646f725f325f616c740073646f725f7674626c0073646f6e5f696e *666f0073646f6e5f7265740073634d435f696e666f0073634d435f656e7472790073646f6d5f69 *6e666f0073646f6d5f7265740073646f6c5f696e666f0073646f6c5f7265740073634c745f696e *666f0073634c745f7265740073646f6b5f315f616c740073646f6b5f325f616c740073646f6b5f *7674626c0073634d375f7265740073646f675f696e666f0073646f675f7265740073634d4f5f65 *6e7472790073646f385f696e666f0073646f615f696e666f0073646f615f7265740073646f385f *726574004748437a6948616e646c655f6132385f73727400736469645f696e666f00736469655f *696e666f00736469655f72657400736469645f726574004748437a69494f5f7a644c7239664a7a *6477726561644368756e6b5f7372740073396d705f696e666f0073396d745f696e666f0073396e *765f696e666f0073396e765f656e7472790073396d705f736c6f770073396d705f656e74727900 *73396d745f656e74727900736134565f696e666f00736134565f72657400736134555f696e666f *00736134555f72657400736134545f696e666f00736134545f7265740073396e335f696e666f00 *73396e335f656e74727900736134575f315f616c7400736134575f325f616c7400736134575f76 *74626c00736134535f696e666f00736134535f7265740073396e375f696e666f0073396e375f65 *6e74727900736135305f736c6f7700736135305f656e747279007361345a5f696e666f00736134 *5a5f7265740073396e715f696e666f0073396e715f656e74727900736134595f696e666f007361 *34595f72657400736134585f696e666f00736134585f72657400736135305f696e666f0073397a *545f696e666f00736134735f696e666f00736134735f726574007361346e5f696e666f00736134 *6e5f7265740073397a545f726574004748437a69494f426173655f7a647773686f777350726563 *345f737274007337754b5f696e666f00733673625f64666c7400733673625f7674626c00733775 *4b5f73727464007337754b5f72657400733959725f696e666f00733959725f656e747279007339 *59745f696e666f00733959745f656e7472790073626e715f696e666f0073626e715f7265740047 *48437a69496e745f6c766c31365f737274004748437a69496e745f6c766c31375f737274007362 *6d335f696e666f0073626d345f696e666f0073626d345f7265740073626d335f7265740073626c *5a5f696e666f0073626d305f696e666f0073626d305f7265740073626c5a5f7265740073626c56 *5f696e666f0073626c575f696e666f0073626c575f7265740073626c565f7265740073626c535f *696e666f0073626c545f696e666f0073626c545f7265740073626c535f726574007361397a5f69 *6e666f00736139435f696e666f00736139435f726574007361397a5f72657400736139545f696e *666f00736139515f696e666f00736139515f72657400736139545f726574007362706f5f767462 *6c007362706f5f315f616c740073614e6b5f696e666f0073614e6b5f726574007362706f5f325f *616c74004748437a69496e745f7a6477626f756e646564456e756d46726f6d5468656e5f737274 *00736267565f696e666f00736267565f72657400736264435f696e666f00736264445f696e666f *00736264445f72657400736264435f726574004748437a694c6973745f6c766c365f7372740047 *48437a694c6973745f7375625f7372740073324f475f7674626c0073324f475f315f616c740073 *324f475f325f616c74004748437a694c6973745f7a644c723272676c766c31305f737274004748 *437a694c6973745f7a644c7232726f6c766c31345f737274004748437a694c6973745f7a644c72 *3272776c766c31385f737274004748437a694c6973745f7a644c723272556c766c33305f737274 *00733245765f7674626c00733245645f315f616c74007333346b5f696e666f007333346b5f7265 *7400733245645f325f616c7400733245645f7674626c00733334685f696e666f00733334685f72 *657400733245765f315f616c7400733334675f696e666f00733334675f72657400733334655f31 *5f616c7400733334665f696e666f00733334665f72657400733334655f325f616c740073333465 *5f7674626c00733245765f325f616c74007333324f5f696e666f007333324f5f72657400733332 *6f5f7674626c00733332715f315f616c740073324c4f5f696e666f0073324c4f5f726574007333 *32715f325f616c7400733332715f7674626c007333326f5f315f616c740073324c5a5f696e666f *0073324c5a5f72657400733332705f315f616c740073324d375f72657400733332705f325f616c *7400733332705f7674626c007333326f5f325f616c74004748437a694e756d5f7a647773686f77 *73507265635f73727400733331575f7674626c00733331575f315f616c7400733253375f696e66 *6f00733253375f656e74727900733331575f325f616c740073364b525f7674626c0073364b525f *315f616c740073364b525f325f616c74004748437a69526561645f7a6473726561644c69737450 *72656344656661756c74315f737274004748437a695265616c5f6c766c355f737274004748437a *695265616c5f6c766c365f737274004748437a695265616c5f7a64777a64737265647563655f73 *727400733651755f7674626c007335616b5f64666c74007335616b5f7674626c007335616a5f64 *666c74007335616a5f7674626c007335616e5f64666c74007335616e5f7674626c00733561675f *315f616c7400733561795f64666c7400733561795f7674626c00733561785f64666c7400733561 *785f7674626c00733561425f64666c7400733561425f7674626c00733651765f696e666f007336 *51765f72657400733561675f325f616c7400733561675f7674626c00733651755f315f616c7400 *733651755f325f616c7400733565635f72657400733565365f64666c7400733565365f7674626c *00733565385f64666c7400733565385f7674626c00733565635f696e666f00733565585f696e66 *6f00733565585f72657400733652785f726574004748437a695265616c5f7a64737a63325f7372 *740073364f345f7674626c0073364f355f315f616c740073356b655f64666c740073356b655f76 *74626c0073364f355f325f616c740073364f355f7674626c0073364f345f315f616c740073364f *345f325f616c74004748437a695265616c5f71756f7452656d315f73727400733645305f696e66 *6f0073354d4b5f696e666f0073354d4b5f656e7472790073354d465f696e666f0073354d465f65 *6e74727900733645315f696e666f00733645315f72657400733645305f726574004748437a6952 *65616c5f6469764d6f64315f737274007336445a5f696e666f007336445a5f726574004748437a *695265616c5f71756f74315f73727400733644585f696e666f00733644585f726574004748437a *695265616c5f6d6f64315f7372740073354e6e5f696e666f0073354e6e5f72657400733644575f *726574004748437a695265616c5f646976315f73727400733644545f696e666f00733644555f69 *6e666f00733644555f72657400733644545f726574004748437a695265616c5f72656d315f7372 *7400733644525f696e666f00733644535f72657400733644525f726574004748437a6953686f77 *5f7a647773686f774c6974436861725f737274007332626b5f696e666f00733262375f696e666f *007332614c5f315f616c740073326d7a5f696e666f0073326d7a5f726574007332614c5f325f61 *6c74007332614c5f7674626c00733261505f696e666f00733261505f656e74727900733261525f *656e74727900733262375f656e74727900733262695f315f616c740073326d765f696e666f0073 *326d765f72657400733262695f325f616c7400733262695f7674626c007332626b5f656e747279 *004748437a69546f7048616e646c65725f64735f737274007333374f5f7674626c007333374f5f *315f616c74007333374f5f325f616c74004748437a69546f7048616e646c65725f6473315f7372 *7400733338575f7674626c00733338575f315f616c7400733338575f325f616c7400733250445f *696e666f00733250445f726574004748437a69576f72645f7a64777a64646d73686f775f737274 *00736254305f696e666f007339524c5f7674626c007339524c5f64666c7400736254305f726574 *004748437a69576f72645f707265644572726f725f73727400736167665f696e666f0073616768 *5f7674626c00736167665f656e74727900736167685f64666c74004748437a69576f72645f7375 *63634572726f725f73727400736167725f696e666f00736167745f7674626c00736167725f656e *74727900736167745f64666c740073624e475f696e666f0073624e475f72657400733853365f69 *6e666f00733853365f72657400733854305f696e666f00733854305f72657400733853595f696e *666f00733853595f72657400733853745f696e666f00733853745f7265740053797374656d7a69 *506f7369787a69496e7465726e616c735f7a644c723757436c766c31335f73727400733853735f *696e666f00733853735f72657400733853715f696e666f00733853715f726574007338536b5f69 *6e666f007338536b5f7265740053797374656d7a69506f7369787a69496e7465726e616c735f7a *64776c766c5f7372740073384f615f696e666f00733844395f736c6f7700733844395f656e7472 *790073384f625f696e666f0073384f625f72657400733844395f696e666f0073384f655f696e66 *6f0073384f655f7265740073384f645f696e666f0073384f645f7265740073384f635f696e666f *0073384f635f7265740073384f615f72657400733175745f696e666f00733148705f696e666f00 *733175745f656e74727900733175435f696e666f00733175435f656e74727900733148705f656e *74727900546578747a69506172736572436f6d62696e61746f72737a6952656164505f7a677a67 *7a655f73727400733148615f7674626c007331416e5f64666c74007331416e5f7674626c007331 *41705f696e666f00733141705f656e74727900733148615f315f616c7400733141665f64666c74 *00733141665f7674626c00733141685f696e666f00733141685f656e74727900733148615f325f *616c7400733148615f335f616c7400733141395f696e666f00733141395f656e74727900733141 *365f64666c7400733141365f7674626c00733148615f345f616c7400733148625f315f616c7400 *73317a535f64666c740073317a535f7674626c0073317a505f64666c740073317a505f7674626c *00733148635f696e666f00733148635f72657400733148625f325f616c7400733148625f767462 *6c0073317a555f696e666f0073317a555f656e74727900733141315f315f616c7400733141315f *325f616c7400733141315f7674626c00733148615f355f616c7400546578747a69506172736572 *436f6d62696e61746f72737a6952656164505f63686f6963655f73727400733148365f7674626c *00733148365f315f616c7400733142555f315f616c7400733142575f696e666f00733142575f65 *6e74727900733143315f64666c7400733143315f7674626c00733148395f696e666f0073314839 *5f656e74727900733142555f325f616c7400733142555f7674626c00733148365f325f616c7400 *733144675f696e666f00733144475f696e666f00733144585f696e666f00733144675f656e7472 *79007331477a5f315f616c7400733147415f315f616c7400733144525f656e7472790073314745 *5f696e666f00733147455f656e74727900733147435f696e666f00733147435f72657400733147 *425f696e666f00733147425f72657400733147415f325f616c7400733147415f7674626c007331 *477a5f325f616c74007331477a5f7674626c00733144475f656e74727900733144585f656e7472 *7900546578747a695072657474795072696e747a69487567686573504a5f7a644c723467656c76 *6c31315f73727400546578747a695072657474795072696e747a69487567686573504a5f7a644c *723467776c766c32305f73727400546578747a695072657474795072696e747a69487567686573 *504a5f7a644c723467796c766c32315f73727400546578747a695072657474795072696e747a69 *487567686573504a5f7a644c723467436c766c32335f73727400733469495f696e666f00733469 *495f656e74727900546578747a695072657474795072696e747a69487567686573504a5f7a644c *72363863616e747a756661696c5f73727400546578747a69526561647a694c65785f7a644c7235 *74566c766c31315f73727400546578747a69526561647a694c65785f7a644c7235745a5a7a637a *635f73727400546578747a69526561647a694c65785f7a644c723575396c766c31355f73727400 *546578747a69526561647a694c65785f7a644c723575707a6477667261635f7372740073366950 *5f7674626c00733552365f64666c7400733552365f7674626c00733552345f64666c7400733552 *345f7674626c00733552385f64666c7400733552385f7674626c00733669505f315f616c740073 *3552315f64666c7400733552315f7674626c00733552305f64666c7400733552305f7674626c00 *733551545f64666c7400733551545f7674626c00733669515f696e666f00733669515f72657400 *733669505f325f616c7400546578747a69526561647a694c65785f7a644c72357a7a3369734964 *66436861725f73727400733665435f7674626c00733665435f315f616c7400733665435f325f61 *6c7400733632395f696e666f00733632635f696e666f007336326b5f696e666f00733632395f65 *6e74727900733632635f656e74727900733665795f696e666f00733665795f726574007336326b *5f656e74727900546578747a69526561647a694c65785f7a644c723541446c6578537472497465 *6d5f73727400733637415f696e666f007336374c5f696e666f00733636445f696e666f00733636 *4d5f696e666f00733636545f696e666f007336365a5f696e666f00733637635f696e666f007336 *37765f696e666f00733637415f656e74727900733637485f696e666f00733637485f7265740073 *36374c5f656e74727900733636445f656e747279007336694a5f696e666f007336694a5f726574 *007336364d5f656e74727900733636545f656e747279007336365a5f656e747279007336694c5f *315f616c74007336694c5f325f616c74007336694c5f7674626c00733637635f656e7472790073 *36694d5f696e666f007336694d5f726574007336376b5f656e74727900733637765f656e747279 *00446174617a69486173685461626c655f6e65775f7372740073354c535f696e666f0073354c55 *5f696e666f0073354c555f7265740073354c545f7265740073354c535f72657400446174617a69 *5479706561626c655f7a644c72364f346c766c345f73727400733769575f696e666f0073376a30 *5f696e666f0073376a305f726574007337695a5f696e666f007337695a5f72657400733656635f *696e666f00733656635f656e74727900733769595f696e666f00733769595f7265740073376958 *5f696e666f00733769585f72657400733769575f72657400733169465f696e666f007331654a5f *696e666f007331654a5f72657400733169465f72657400733959465f696e666f00733959465f65 *6e74727900736146785f696e666f00736146785f656e7472790073614e485f696e666f0073614e *485f656e7472790073614e4f5f696e666f0073614e4f5f656e747279004748437a694c6973745f *7a644c723271556c766c385f737274004748437a694e756d5f71756f74496e74656765725f7372 *7400733333555f7674626c00733249465f315f616c7400733334335f696e666f00733334335f72 *657400733249465f325f616c7400733249465f7674626c00733334305f696e666f00733334305f *72657400733333565f315f616c74007333335a5f696e666f007333335a5f72657400733333595f *696e666f00733333595f72657400733333575f315f616c7400733333585f696e666f0073333358 *5f72657400733333575f325f616c7400733333575f7674626c00733333565f325f616c74007333 *33565f7674626c00733333555f315f616c7400733333555f325f616c7400733332725f7674626c *00733332745f315f616c740073324b365f696e666f0073324b365f72657400733332745f325f61 *6c7400733332745f7674626c00733332725f315f616c740073324b685f696e666f0073324b685f *72657400733332735f315f616c740073324b705f696e666f0073324b705f72657400733332735f *325f616c7400733332735f7674626c00733332725f325f616c74007333326c5f7674626c007333 *326e5f315f616c740073324d725f726574007333326e5f325f616c74007333326e5f7674626c00 *7333326c5f315f616c740073324d435f696e666f0073324d435f726574007333326d5f315f616c *74007333326d5f325f616c74007333326d5f7674626c007333326c5f325f616c74004748437a69 *4e756d5f6a746f735f73727400733331585f7674626c00733331585f315f616c7400733252515f *64666c7400733252515f7674626c00733331595f315f616c7400733331595f325f616c74007333 *31595f7674626c00733252545f696e666f00733252545f656e74727900733331585f325f616c74 *004748437a694e756d5f676364496e74656765725f73727400733333715f7674626c0073325778 *5f696e666f00733257785f72657400733257395f696e666f00733257395f72657400733257675f *696e666f00733257675f72657400733256595f315f616c7400733257595f315f616c7400733333 *645f696e666f00733333645f72657400733333635f696e666f00733333635f7265740073325759 *5f325f616c7400733256595f325f616c7400733256595f7674626c00733258305f696e666f0073 *3258305f726574007333336e5f696e666f007333336e5f726574007333336c5f315f616c740073 *33336c5f325f616c74007333336c5f7674626c00733258675f696e666f00733258675f72657400 *733333735f696e666f00733333735f72657400733333715f315f616c7400733333715f325f616c *740073364a4e5f7674626c0073364a4e5f315f616c740073364a4e5f325f616c74004748437a69 *5265616c5f7a64776469764d6f645f73727400733651455f696e666f007335384b5f696e666f00 *7335384b5f726574007335384d5f696e666f007335384d5f656e74727900733538475f696e666f *00733538475f72657400733538495f696e666f00733538495f656e74727900733651455f726574 *004748437a695265616c5f6c766c395f737274004748437a695265616c5f665f73727400733652 *725f7674626c0073356b325f64666c740073356b325f7674626c0073356b345f64666c74007335 *6b345f7674626c00733652735f315f616c740073356a585f64666c740073356b305f7265740073 *356a585f7674626c0073356a5a5f64666c740073356a5a5f7674626c00733652735f325f616c74 *00733652735f7674626c0073356b305f696e666f00733652725f315f616c7400733652725f325f *616c74004748437a695265616c5f746f526174696f6e616c315f73727400733645325f696e666f *00733645335f696e666f00733645335f72657400733645325f726574004748437a695265616c5f *7a637a635f73727400733638365f696e666f00733638475f696e666f00733678535f696e666f00 *733638365f656e747279007336786b5f72657400733638475f656e747279007336784a5f726574 *00733639695f696e666f00733639695f656e747279007336396b5f696e666f007336396b5f656e *74727900733678465f696e666f00733678465f72657400733678455f315f616c7400733678455f *325f616c7400733678455f7674626c00733678775f696e666f00733678775f7265740073367874 *5f72657400733678535f656e747279007332504f5f696e666f007332504f5f7265740073625171 *5f696e666f00736251715f7265740053797374656d7a69506f7369787a69496e7465726e616c73 *5f6c766c31345f73727400733853635f696e666f00733853645f696e666f00733853645f726574 *00733853635f72657400546578747a69526561647a694c65785f7a644c723574526c766c395f73 *727400733547695f696e666f00733547715f696e666f00733547675f696e666f00733547675f65 *6e74727900733547695f656e74727900733668525f696e666f00733668525f7265740073354771 *5f656e74727900546578747a69526561647a694c65785f7a644c723575356c766c31335f737274 *0073354c6e5f696e666f0073354c765f696e666f0073354b6d5f656e747279007336676f5f315f *616c7400733667705f315f616c7400733667705f325f616c7400733667705f7674626c00733667 *6f5f325f616c74007336676f5f7674626c0073354b475f696e666f0073354b475f656e74727900 *73354b4c5f696e666f0073354b4c5f656e7472790073354c665f696e666f0073354c665f656e74 *72790073354c6a5f696e666f0073354c6a5f656e7472790073354c6c5f696e666f0073354c6c5f *656e7472790073354c355f696e666f0073354c355f7265740073354c375f696e666f0073354c37 *5f656e7472790073354b555f696e666f0073354b555f7265740073354b575f696e666f0073354b *575f656e7472790073354c625f64666c740073354c625f7674626c0073354c6e5f656e74727900 *733667735f696e666f00733667735f72657400733667755f696e666f00733667755f7265740073 *354c765f656e74727900546578747a69526561647a694c65785f7a644c723575526c766c32305f *7372740073376a565f7265740073376a355f696e666f0073376a365f696e666f0073376a365f72 *65740073376a355f726574004748437a69426173655f7a6477676364496e745f73727400733244 *685f72657400733244685f696e666f004748437a694e756d5f7a644c723278746c766c315f7372 *74004748437a694e756d5f7a644c723278786c766c335f737274004748437a694e756d5f72656d *496e74656765725f73727400733334345f7674626c007332487a5f315f616c7400733334645f69 *6e666f00733334645f726574007332487a5f325f616c74007332487a5f7674626c00733334615f *696e666f00733334615f72657400733334355f315f616c7400733249335f696e666f0073324933 *5f72657400733334395f696e666f00733334395f72657400733334385f696e666f00733334385f *72657400733334365f315f616c7400733334375f696e666f00733334375f72657400733334365f *325f616c7400733334365f7674626c00733334355f325f616c7400733334355f7674626c007333 *34345f315f616c7400733334345f325f616c7400733333515f7674626c00733333535f315f616c *740073324c6c5f696e666f0073324c6c5f72657400733333535f325f616c7400733333535f7674 *626c00733333525f696e666f00733333525f72657400733333515f315f616c7400733333545f31 *5f616c740073324b4f5f72657400733333545f325f616c7400733333545f7674626c0073333351 *5f325f616c74004748437a695265616c5f7a644c7235315a5a6c766c375f737274004748437a69 *5265616c5f7a64737a64646d6469765f7372740073364f635f7674626c0073364f635f315f616c *740073364f635f325f616c74004748437a695265616c5f7a64737a64646d6d6f645f7372740073 *364f395f7674626c0073364f615f696e666f0073364f615f7265740073364f395f315f616c7400 *73364f395f325f616c74004748437a695265616c5f7a64736576656e5f7372740073364f365f76 *74626c0073364f365f315f616c740073364f375f696e666f0073364f375f7265740073364f365f *325f616c74004748437a695265616c5f7a6477746f526174696f6e616c5f7372740073356d315f *7674626c0073356d315f64666c74004748437a695265616c5f6131345f7372740073364e495f69 *6e666f0073364e495f726574004748437a695265616c5f6131355f737274004748437a69526561 *6c5f71756f7452656d325f73727400733644505f7674626c00733644505f315f616c7400733644 *505f325f616c74004748437a695265616c5f6469764d6f64325f737274007336444f5f7674626c *007336444f5f315f616c74007336444f5f325f616c74004748437a695265616c5f71756f74325f *737274007336444e5f7674626c007336444e5f315f616c74007336444e5f325f616c7400474843 *7a695265616c5f72656d325f737274007336444d5f7674626c007336444d5f315f616c74007336 *444d5f325f616c74004748437a695265616c5f7a635f73727400733633415f696e666f00733633 *575f696e666f00733634615f696e666f00733634645f696e666f00733635315f696e666f007336 *35665f696e666f00733636465f696e666f00733641715f696e666f00733633415f656e74727900 *7336796d5f72657400733633575f656e74727900733679765f72657400733634615f656e747279 *00733634645f656e74727900733679515f696e666f00733679515f726574007336795a5f696e66 *6f007336795a5f72657400733635315f656e74727900733635665f656e7472790073367a775f69 *6e666f0073367a775f72657400733636455f696e666f00733636455f656e7472790073367a465f *696e666f0073367a465f7265740073367a765f315f616c7400733636465f656e7472790073367a *4f5f696e666f0073367a4f5f72657400733636645f696e666f00733636645f656e747279007336 *7a585f696e666f0073367a585f7265740073367a765f325f616c7400733636655f726574007336 *7a765f7674626c00733636655f696e666f0073367a755f315f616c740073367a755f325f616c74 *0073367a755f7674626c0073367a735f696e666f0073367a735f7265740073367a6b5f696e666f *0073367a6b5f7265740073367a685f72657400733641675f315f616c7400733641685f696e666f *00733641685f72657400733637655f656e74727900733641675f325f616c7400733641675f7674 *626c00733641665f315f616c7400733641665f325f616c7400733641665f7674626c0073364164 *5f696e666f00733641645f72657400733641715f656e747279007338536f5f696e666f00733853 *6f5f72657400546578747a69526561647a694c65785f7a644c7235754a6c766c31385f73727400 *733555335f696e666f00733555375f696e666f00733555335f656e74727900733555375f656e74 *727900546578747a69526561647a694c65785f7a644c723575506c766c31395f73727400733555 *665f696e666f007335556a5f696e666f00733555665f656e747279007335556a5f656e74727900 *546578747a69526561647a694c65785f7a644c723575566c766c32315f73727400733555725f69 *6e666f00733555765f696e666f00733555725f656e74727900733555765f656e74727900474843 *7a69426173655f6c766c315f737274004748437a694e756d5f7a644c723278426c766c355f7372 *7400733244355f7674626c007332437a5f696e666f007332437a5f726574007332434e5f315f61 *6c7400733334725f696e666f00733334725f726574007332434e5f325f616c74007332434e5f76 *74626c007333346f5f696e666f007333346f5f72657400733244355f315f616c74007333346e5f *696e666f007333346e5f726574007333346c5f315f616c74007333346d5f696e666f007333346d *5f726574007333346c5f325f616c74007333346c5f7674626c00733244355f325f616c74007333 *32545f696e666f00733332545f72657400733332535f696e666f00733332535f72657400733254 *685f696e666f00733254685f656e74727900733256325f7674626c00733256325f64666c740073 *3539375f7674626c00733539375f64666c74004748437a695265616c5f61365f73727400733651 *435f696e666f00733651435f72657400733651425f726574004748437a695265616c5f61385f73 *727400733651415f696e666f00733651415f726574004748437a695265616c5f6c766c31365f73 *727400733652765f726574004748437a695265616c5f6c766c31375f73727400733652745f7265 *74004748437a695265616c5f6131315f7372740073364e595f696e666f0073356b4c5f64666c74 *0073356b4c5f7674626c0073356b505f64666c740073356b505f7674626c0073364e5a5f726574 *0073364e595f726574004748437a695265616c5f6131325f737274004748437a695265616c5f61 *31335f737274004748437a695265616c5f7a647761355f7372740073356e4f5f64666c74007335 *6e4f5f7674626c0073356e4d5f64666c740073356e4d5f7674626c0073364e4d5f315f616c7400 *73356e485f696e666f0073356e485f7265740073364e4d5f325f616c740073364e4d5f7674626c *0073356f615f64666c740073356f615f7674626c0073356e575f315f616c740073356e575f325f *616c740073356e575f7674626c004748437a695265616c5f7a647761365f7372740073364e7a5f *696e666f0073356f575f64666c740073356f575f7674626c0073356f435f64666c740073356f43 *5f7674626c0073356f555f64666c740073356f555f7674626c0073364e445f315f616c74007335 *6f505f696e666f0073356f505f7265740073364e445f325f616c740073364e445f7674626c0073 *3570695f64666c7400733570695f7674626c00733570345f315f616c7400733570345f325f616c *7400733570345f7674626c0073356f795f64666c740073356f795f7674626c0073364e7a5f7265 *74004748437a695265616c5f7a64646d73686f774c6973745f73727400733547525f696e666f00 *733548615f696e666f00733647625f696e666f00733647625f72657400733647385f696e666f00 *733647385f72657400733547525f656e747279007336476e5f696e666f007336476e5f72657400 *7336476b5f696e666f007336476b5f72657400733548615f656e747279007336474a5f72657400 *733548485f696e666f00733548485f656e74727900733647485f726574007336477a5f696e666f *007336477a5f72657400733647775f696e666f00733647775f72657400733647535f656e747279 *004748437a695265616c5f746f526174696f6e616c325f7372740073354e585f7674626c007336 *44515f7265740073354e585f64666c7400546578747a69526561647a694c65785f7a644c723576 *316c766c32325f73727400733555445f696e666f00733555485f696e666f00733555445f656e74 *727900733555485f656e7472790073354c465f7674626c0073354c465f315f616c740073354c47 *5f696e666f0073354c475f7265740073354c465f325f616c7400733332695f7674626c00733332 *6b5f315f616c740073324e345f696e666f0073324e345f726574007333326b5f325f616c740073 *33326b5f7674626c00733332695f315f616c740073324e665f696e666f0073324e665f72657400 *7333326a5f315f616c740073324e6e5f696e666f0073324e6e5f726574007333326a5f325f616c *74007333326a5f7674626c00733332695f325f616c7400733332685f7674626c00733332685f31 *5f616c7400733332685f325f616c7400733332675f7674626c00733332675f315f616c74007333 *32675f325f616c7400733332355f7674626c00733332625f315f616c740073324e575f696e666f *0073324e575f72657400733332625f325f616c7400733332625f7674626c00733332355f315f61 *6c7400733332365f315f616c740073324f6c5f696e666f0073324f6c5f72657400733332365f32 *5f616c7400733332365f7674626c00733332355f325f616c7400733253575f696e666f00733253 *555f696e666f00733253555f656e74727900733253575f656e74727900733254375f696e666f00 *733254355f696e666f00733254355f656e74727900733254375f656e74727900733333765f7674 *626c00733333765f315f616c7400733333765f325f616c7400733333775f7674626c0073333377 *5f315f616c7400733333775f325f616c74004748437a695265616c5f7a6477615f737274007335 *35555f64666c7400733535555f7674626c007336526b5f315f616c74007336526b5f325f616c74 *007336526b5f7674626c007336526a5f72657400733652635f696e666f00733652655f315f616c *7400733536765f696e666f00733536765f72657400733652655f325f616c7400733652655f7674 *626c00733652635f726574004748437a695265616c5f7a647761325f73727400733537305f6466 *6c7400733537305f7674626c00733536515f315f616c7400733536515f325f616c740073353651 *5f7674626c00733652395f7265740073364f6d5f315f616c740073364f6e5f696e666f0073364f *6e5f7265740073364f6d5f325f616c740073364f6d5f7674626c0073364f695f315f616c740073 *364f6c5f7265740073364f6a5f315f616c740073364f6b5f696e666f0073364f6b5f7265740073 *364f6a5f325f616c740073364f6a5f7674626c0073364f695f325f616c740073364f695f767462 *6c007335696f5f696e666f007335696f5f7265740073364f735f315f616c740073364f745f696e *666f0073364f745f7265740073364f735f325f616c740073364f735f7674626c0073364f6f5f31 *5f616c740073364f725f696e666f0073364f725f7265740073364f6f5f325f616c740073364f6f *5f7674626c0073364f685f726574004748437a695265616c5f7a647761335f7372740073364e57 *5f696e666f0073356d6d5f64666c740073356d6d5f7674626c0073356d675f64666c740073356d *675f7674626c0073356d6b5f64666c740073356d6b5f7674626c0073356d6f5f64666c74007335 *6d6f5f7674626c0073364e585f7265740073364e575f726574004748437a695265616c5f7a6477 *61345f7372740073364e545f696e666f0073356d545f64666c740073356d545f7674626c007335 *6d4e5f64666c740073356d4e5f7674626c0073356d525f64666c740073356d525f7674626c0073 *356d565f64666c740073356d565f7674626c0073364e555f696e666f0073364e555f7265740073 *364e545f726574004748437a695265616c5f73686f7773507265635f7372740073364e655f696e *666f0073364e655f726574004748437a695265616c5f7a64646d73686f775f7372740054657874 *7a69526561647a694c65785f7a644c723576376c766c32335f73727400733555505f696e666f00 *733555545f696e666f00733555505f656e74727900733555545f656e74727900733254795f696e *666f00733254795f656e74727900733254785f64666c7400733254785f7674626c00733254415f *696e666f00733254415f656e74727900733331525f315f616c7400733331525f325f616c740073 *3331525f7674626c00733254545f696e666f00733254545f656e74727900733254535f64666c74 *00733254535f7674626c00733254565f696e666f00733254565f656e74727900733331515f315f *616c7400733331515f325f616c7400733331515f7674626c00733255625f696e666f0073325562 *5f656e74727900733255615f64666c7400733255615f7674626c00733255645f696e666f007332 *55645f656e74727900733331505f315f616c7400733331505f325f616c7400733331505f767462 *6c00733255735f696e666f00733255735f656e74727900733255725f64666c7400733255725f76 *74626c00733255755f696e666f00733255755f656e747279007333314f5f315f616c7400733331 *4f5f325f616c74007333314f5f7674626c004748437a695265616c5f7a647773686f7773507265 *635f737274007335394b5f696e666f007335394b5f656e747279007335394d5f696e666f007335 *394d5f656e747279007335394f5f696e666f007335394f5f656e74727900733539585f696e666f *00733539585f656e74727900733651785f72657400546578747a69526561647a694c65785f7a64 *4c723576646c766c32345f73727400733556315f696e666f00733556355f696e666f0073355631 *5f656e74727900733556355f656e74727900546578747a69526561647a694c65785f7a644c7235 *766a6c766c32355f73727400733556645f696e666f00733556685f696e666f00733556645f656e *74727900733556685f656e74727900546578747a69526561647a694c65785f7a644c723576706c *766c32365f73727400733556705f696e666f00733556745f696e666f00733556705f656e747279 *00733556745f656e74727900546578747a69526561647a694c65785f7a644c723576766c766c32 *375f73727400733556425f696e666f00733556465f696e666f00733556425f656e747279007335 *56465f656e74727900546578747a69526561647a694c65785f7a644c723576426c766c32385f73 *7274007335564e5f696e666f00733556525f696e666f007335564e5f656e74727900733556525f *656e74727900546578747a69526561647a694c65785f7a644c723576486c766c32395f73727400 *7335565a5f696e666f00733557335f696e666f007335565a5f656e74727900733557335f656e74 *727900546578747a69526561647a694c65785f7a644c7235764e6c766c33305f73727400733557 *625f696e666f00733557665f696e666f00733557625f656e74727900733557665f656e74727900 *546578747a69526561647a694c65785f7a644c723576546c766c33315f737274007335576e5f69 *6e666f00733557725f696e666f007335576e5f656e74727900733557725f656e74727900546578 *747a69526561647a694c65785f7a644c7235765a5a6c766c33325f737274007335577a5f696e66 *6f00733557445f696e666f007335577a5f656e74727900733557445f656e74727900546578747a *69526561647a694c65785f7a644c723577356c766c33335f737274007335574c5f696e666f0073 *3557505f696e666f007335574c5f656e74727900733557505f656e74727900546578747a695265 *61647a694c65785f7a644c723577626c766c33345f73727400733557585f696e666f0073355831 *5f696e666f00733557585f656e74727900733558315f656e74727900546578747a69526561647a *694c65785f7a644c723577686c766c33355f73727400733558395f696e666f00733558645f696e *666f00733558395f656e74727900733558645f656e74727900546578747a69526561647a694c65 *785f7a644c7235776e6c766c33365f737274007335586c5f696e666f00733558705f696e666f00 *7335586c5f656e74727900733558705f656e74727900546578747a69526561647a694c65785f7a *644c723577746c766c33375f73727400733558785f696e666f00733558425f696e666f00733558 *785f656e74727900733558425f656e74727900546578747a69526561647a694c65785f7a644c72 *35777a7a6c766c33385f737274007335584a5f696e666f007335584e5f696e666f007335584a5f *656e747279007335584e5f656e74727900546578747a69526561647a694c65785f7a644c723577 *466c766c33395f73727400733558565f696e666f007335585a5f696e666f00733558565f656e74 *7279007335585a5f656e74727900546578747a69526561647a694c65785f7a644c7235774c6c76 *6c34305f73727400733559375f696e666f00733559625f696e666f00733559375f656e74727900 *733559625f656e74727900546578747a69526561647a694c65785f7a644c723577526c766c3431 *5f737274007335596a5f696e666f007335596e5f696e666f007335596a5f656e74727900733559 *6e5f656e74727900546578747a69526561647a694c65785f7a644c723577586c766c34325f7372 *7400733559765f696e666f007335597a5f696e666f00733559765f656e747279007335597a5f65 *6e74727900546578747a69526561647a694c65785f7a644c723578336c766c34335f7372740073 *3559485f696e666f007335594c5f696e666f00733559485f656e747279007335594c5f656e7472 *7900546578747a69526561647a694c65785f7a644c723578396c766c34345f7372740073355954 *5f696e666f00733559585f696e666f00733559545f656e74727900733559585f656e7472790054 *6578747a69526561647a694c65785f7a644c723578666c766c34355f7372740073355a355f696e *666f0073355a395f696e666f0073355a355f656e7472790073355a395f656e7472790054657874 *7a69526561647a694c65785f7a644c7235786c6c766c34365f7372740073355a685f696e666f00 *73355a6c5f696e666f0073355a685f656e7472790073355a6c5f656e74727900546578747a6952 *6561647a694c65785f7a644c723578726c766c34375f7372740073355a745f696e666f0073355a *785f696e666f0073355a745f656e7472790073355a785f656e74727900546578747a6952656164 *7a694c65785f7a644c723578786c766c34385f7372740073355a465f696e666f0073355a4a5f69 *6e666f0073355a465f656e7472790073355a4a5f656e74727900546578747a69526561647a694c *65785f7a644c723578446c766c34395f7372740073355a525f696e666f0073355a565f696e666f *0073355a525f656e7472790073355a565f656e74727900546578747a69526561647a694c65785f *7a644c7235784a6c766c35305f73727400733630335f696e666f00733630375f696e666f007336 *30335f656e74727900733630375f656e74727900546578747a69526561647a694c65785f7a644c *723578506c766c35315f73727400733630665f696e666f007336306a5f696e666f00733630665f *656e747279007336306a5f656e74727900546578747a69526561647a694c65785f7a644c723578 *566c766c35325f73727400733630725f696e666f00733630765f696e666f00733630725f656e74 *727900733630765f656e747279006e6d5f6d61782e3000726561644c6f636b730077726974654c *6f636b7300726561644c6f636b0077726974654c6f636b007274734170694361706162696c6974 *790068735f696e69745f636f756e7400696e69745f737461636b005f5f47656e53796d436f756e *746572006e6578745f7468726561645f6964007368757474696e675f646f776e5f736368656475 *6c6572007363686564756c6500646574656374426c61636b486f6c65730072656164795f746f5f *676300746872656164537461636b4f766572666c6f770064656c657465546872656164496d6d65 *64696174656c790073757370656e6465645f6363616c6c696e675f746872656164730073636865 *64756c655468726561645f00776169745468726561645f00416c6c526f6f74730065787472615f *726f6f747300756e626c6f636b4f6e654c6f636b656400756e626c6f636b546872656164007072 *696e74546872656164426c6f636b616765007072696e745468726561645374617475730068616e *646c657273006e48616e646c657273006e5f6861736b656c6c5f68616e646c657273006d6f7265 *5f68616e646c65727300636f6e745f68616e646c65720067656e657269635f68616e646c657200 *757365725369676e616c730073617665645369676e616c730073687574646f776e5f68616e646c *657200737461626c655f7074725f66726565005350545f73697a650061646472546f537461626c *65486173680072656d6f7665496e646972656374696f6e73005469636b735065725365636f6e64 *00456c617073656454696d6553746172740043757272656e74456c617073656454696d65004375 *7272656e745573657254696d6500496e69745573657254696d6500496e6974456c617073656454 *696d6500496e6974456c61707365645374616d70004d75745573657254696d65004d7574456c61 *7073656454696d65004d7574456c61707365645374616d7000457869745573657254696d650045 *786974456c617073656454696d650047435f746f745f616c6c6f630047435f746f745f636f7069 *65640047435f73746172745f74696d650047435f746f745f74696d65004743655f73746172745f *74696d65004743655f746f745f74696d65004d61785265736964656e6379004176675265736964 *656e6379005265736964656e637953616d706c65730047435f73746172745f6661756c74730047 *435f656e645f6661756c74730067657454696d657300706167654661756c74730047435f636f6c *6c5f74696d6573007275625f62656c6c007374674465616c6c6f63466f72474d50007374675265 *616c6c6f63466f72474d5000737467416c6c6f63466f72474d50007468726561644c6162656c73 *007469636b735f746f5f637478745f7377697463680068616e646c655f7469636b007374675f61 *705f73746b5f6e007374675f73746b5f736176655f6e007374675f61705f73746b5f7000737467 *5f73746b5f736176655f70007374675f61705f73746b5f66007374675f73746b5f736176655f66 *007374675f61705f73746b5f64007374675f73746b5f736176655f64007374675f61705f73746b *5f6c007374675f73746b5f736176655f6c007374675f61705f73746b5f6e6e007374675f73746b *5f736176655f6e6e007374675f61705f73746b5f6e70007374675f73746b5f736176655f6e7000 *7374675f61705f73746b5f706e007374675f73746b5f736176655f706e007374675f61705f7374 *6b5f7070007374675f73746b5f736176655f7070007374675f61705f73746b5f6e6e6e00737467 *5f73746b5f736176655f6e6e6e007374675f61705f73746b5f6e6e70007374675f73746b5f7361 *76655f6e6e70007374675f61705f73746b5f6e706e007374675f73746b5f736176655f6e706e00 *7374675f61705f73746b5f6e7070007374675f73746b5f736176655f6e7070007374675f61705f *73746b5f706e6e007374675f73746b5f736176655f706e6e007374675f61705f73746b5f706e70 *007374675f73746b5f736176655f706e70007374675f61705f73746b5f70706e007374675f7374 *6b5f736176655f70706e007374675f61705f73746b5f707070007374675f73746b5f736176655f *707070007374675f61705f73746b5f70707070007374675f73746b5f736176655f707070700073 *74675f61705f73746b5f7070707070007374675f73746b5f736176655f7070707070007374675f *61705f73746b5f707070707070007374675f73746b5f736176655f707070707070007374675f61 *705f73746b5f70707070707070007374675f73746b5f736176655f70707070707070007374675f *61705f73746b5f7070707070707070007374675f73746b5f736176655f70707070707070700073 *74675f626c6f636b5f74616b656d7661725f726574007374675f626c6f636b5f7075746d766172 *5f726574007374675f63746f695f7265745f5231705f375f726574007374675f63746f695f7265 *745f5231705f365f726574007374675f63746f695f7265745f5231705f355f726574007374675f *63746f695f7265745f5231705f345f726574007374675f63746f695f7265745f5231705f335f72 *6574007374675f63746f695f7265745f5231705f325f726574007374675f63746f695f7265745f *5231705f315f726574007374675f63746f695f7265745f5231705f305f726574007374675f6374 *6f695f7265745f5231705f726574007374675f63746f695f7265745f5231756e70745f656e7472 *79007374675f63746f695f7265745f52316e5f656e747279007374675f63746f695f7265745f46 *315f656e747279007374675f63746f695f7265745f44315f656e747279007374675f63746f695f *7265745f4c315f656e747279007374675f63746f695f7265745f565f656e747279007374675f61 *70706c795f696e746572705f656e747279007374675f494e445f656e747279007374675f494e44 *5f6469726563745f656e747279007374675f494e445f305f656e747279007374675f494e445f31 *5f656e747279007374675f494e445f325f656e747279007374675f494e445f335f656e74727900 *7374675f494e445f345f656e747279007374675f494e445f355f656e747279007374675f494e44 *5f365f656e747279007374675f494e445f375f656e747279007374675f494e445f535441544943 *5f656e747279007374675f494e445f5045524d5f656e747279007374675f494e445f4f4c444745 *4e5f656e747279007374675f494e445f4f4c4447454e5f5045524d5f656e747279007374675f42 *4c41434b484f4c455f656e747279007374675f424c41434b484f4c455f42515f656e7472790073 *74675f4341465f424c41434b484f4c455f656e747279007374675f54534f5f656e747279007374 *675f4556414355415445445f656e747279007374675f5745414b5f656e747279007374675f4445 *41445f5745414b5f656e747279007374675f4e4f5f46494e414c495a45525f656e747279007374 *675f464f524549474e5f656e747279007374675f535441424c455f4e414d455f656e7472790073 *74675f46554c4c5f4d5641525f656e747279007374675f454d5054595f4d5641525f656e747279 *007374675f454e445f54534f5f51554555455f656e747279007374675f454e445f4d55545f4c49 *53545f656e747279007374675f4d55545f434f4e535f656e747279007374675f454e445f455843 *455054494f4e5f4c4953545f656e747279007374675f455843455054494f4e5f434f4e535f656e *747279007374675f4152525f574f5244535f656e747279007374675f4d55545f4152525f505452 *535f656e747279007374675f4d55545f4152525f505452535f46524f5a454e5f656e7472790073 *74675f4d55545f5641525f656e747279007374675f73656c5f7265745f305f7570645f696e666f *007374675f73656c5f7265745f305f7570645f726574007374675f73656c5f7265745f315f7570 *645f696e666f007374675f73656c5f7265745f315f7570645f726574007374675f73656c5f7265 *745f325f7570645f696e666f007374675f73656c5f7265745f325f7570645f726574007374675f *73656c5f7265745f335f7570645f696e666f007374675f73656c5f7265745f335f7570645f7265 *74007374675f73656c5f7265745f345f7570645f696e666f007374675f73656c5f7265745f345f *7570645f726574007374675f73656c5f7265745f355f7570645f696e666f007374675f73656c5f *7265745f355f7570645f726574007374675f73656c5f7265745f365f7570645f696e666f007374 *675f73656c5f7265745f365f7570645f726574007374675f73656c5f7265745f375f7570645f69 *6e666f007374675f73656c5f7265745f375f7570645f726574007374675f73656c5f7265745f38 *5f7570645f696e666f007374675f73656c5f7265745f385f7570645f726574007374675f73656c *5f7265745f395f7570645f696e666f007374675f73656c5f7265745f395f7570645f7265740073 *74675f73656c5f7265745f31305f7570645f696e666f007374675f73656c5f7265745f31305f75 *70645f726574007374675f73656c5f7265745f31315f7570645f696e666f007374675f73656c5f *7265745f31315f7570645f726574007374675f73656c5f7265745f31325f7570645f696e666f00 *7374675f73656c5f7265745f31325f7570645f726574007374675f73656c5f7265745f31335f75 *70645f696e666f007374675f73656c5f7265745f31335f7570645f726574007374675f73656c5f *7265745f31345f7570645f696e666f007374675f73656c5f7265745f31345f7570645f72657400 *7374675f73656c5f7265745f31355f7570645f696e666f007374675f73656c5f7265745f31355f *7570645f726574007374675f73656c5f7265745f305f6e6f7570645f696e666f007374675f7365 *6c5f7265745f305f6e6f7570645f726574007374675f73656c5f7265745f315f6e6f7570645f69 *6e666f007374675f73656c5f7265745f315f6e6f7570645f726574007374675f73656c5f726574 *5f325f6e6f7570645f696e666f007374675f73656c5f7265745f325f6e6f7570645f7265740073 *74675f73656c5f7265745f335f6e6f7570645f696e666f007374675f73656c5f7265745f335f6e *6f7570645f726574007374675f73656c5f7265745f345f6e6f7570645f696e666f007374675f73 *656c5f7265745f345f6e6f7570645f726574007374675f73656c5f7265745f355f6e6f7570645f *696e666f007374675f73656c5f7265745f355f6e6f7570645f726574007374675f73656c5f7265 *745f365f6e6f7570645f696e666f007374675f73656c5f7265745f365f6e6f7570645f72657400 *7374675f73656c5f7265745f375f6e6f7570645f696e666f007374675f73656c5f7265745f375f *6e6f7570645f726574007374675f73656c5f7265745f385f6e6f7570645f696e666f007374675f *73656c5f7265745f385f6e6f7570645f726574007374675f73656c5f7265745f395f6e6f757064 *5f696e666f007374675f73656c5f7265745f395f6e6f7570645f726574007374675f73656c5f72 *65745f31305f6e6f7570645f696e666f007374675f73656c5f7265745f31305f6e6f7570645f72 *6574007374675f73656c5f7265745f31315f6e6f7570645f696e666f007374675f73656c5f7265 *745f31315f6e6f7570645f726574007374675f73656c5f7265745f31325f6e6f7570645f696e66 *6f007374675f73656c5f7265745f31325f6e6f7570645f726574007374675f73656c5f7265745f *31335f6e6f7570645f696e666f007374675f73656c5f7265745f31335f6e6f7570645f72657400 *7374675f73656c5f7265745f31345f6e6f7570645f696e666f007374675f73656c5f7265745f31 *345f6e6f7570645f726574007374675f73656c5f7265745f31355f6e6f7570645f696e666f0073 *74675f73656c5f7265745f31355f6e6f7570645f726574007374675f7365715f6672616d655f72 *6574006d616c6c6f634279746573525758006f6273637572655f6363616c6c5f7265745f636f64 *6500667265655f6c69737400616c6c6f634d65676147726f757000696e69744d426c6f636b0066 *7265654d65676147726f757000696e69744361706162696c69747900673073305f70636e745f6b *657074007468756e6b5f73656c6563746f725f64657074680067635f616c6c6f635f626c6f636b *004e006e65775f626c6f636b73006d616a6f725f6763007374617469635f6f626a65637473007a *65726f5f6d757461626c655f6c697374006f6c645f746f5f626c6f636b73006d61726b5f737461 *636b5f626465736372006d61726b5f737461636b006d61726b5f7370006d61726b5f73706c696d *0073636176656e67655f6c617267650073636176656e67655f6d75745f6f6e63655f6c69737400 *657661635f67656e0073636176656e67650073636176656e67655f6d757461626c655f6c697374 *006d61726b5f726f6f74006d61726b5f7765616b5f7074725f6c697374007765616b5f73746167 *65006f6c645f616c6c5f746872656164730073636176656e67655f737461746963006d61726b5f *737461636b5f6f766572666c6f776564006f6c6467656e5f7363616e5f62640073636176656e67 *655f6d61726b5f737461636b0074726176657273655f7765616b5f7074725f6c697374007a6572 *6f5f7374617469635f6f626a6563745f6c69737400657661637561746500636f70795061727400 *6d6b4d7574436f6e73006661696c65645f746f5f657661630065766163756174655f6c61726765 *006576616c5f7468756e6b5f73656c6563746f720073636176656e67655f6c617267655f737274 *5f6269746d61700073636176656e676554534f0073636176656e67655f737461636b0073636176 *656e67655f504150006f6c6467656e5f7363616e0073636176656e67655f6f6e65007363617665 *6e67655f6c617267655f6269746d61700073636176656e67655f6172675f626c6f636b00746872 *6561644c617a79426c61636b486f6c650074687265616453717565657a65537461636b00746872 *6561645f737461746963007468726561645f737461636b007468726561645f6172675f626c6f63 *6b007468726561645f54534f007570646174655f6677645f6c61726765007468726561645f5041 *50007570646174655f667764007468726561645f6f626a007570646174655f6677645f636f6d70 *616374007570646174655f626b77645f636f6d70616374006f626a5f73697a6557007468726561 *645f6d75745f6f6e63655f6c697374007468726561640068617368576f72640068617368537472 *00636f6d70617265576f726400636f6d7061726553747200616c6c6f635365676d656e74006578 *70616e6400667265654c69737400616c6c6f63486173684c6973740066726565486173684c6973 *7400616c6c6f63486173685461626c655f006170705f707472735f6974626c00696e7374616c6c *5f7674616c726d5f68616e646c6572006d795f6d6d61700067656e5f6d61705f6d626c6f636b73 *006e6578745f726571756573742e300075736167655f746578740073706c6974527473466c6167 *7300737472657175616c006465636f6465006261645f6f7074696f6e006f70656e5f7374617473 *5f66696c650053797374656d7a694469726563746f72795f6c766c31335f636c6f737572650047 *48437a695265616c5f72656d315f656e747279004748437a69494f426173655f5265736f757263 *65427573795f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a6466 *5265616456657273696f6e52616e67655f636c6f7375726500446973747269627574696f6e7a69 *4765744f70745f4f70745f7374617469635f696e666f004748437a69526561645f7a64737a6464 *6d726561647350726563345f656e747279004748437a69494f426173655f486561704f76657266 *6c6f775f636c6f7375726500446973747269627574696f6e7a694d616b655f64656661756c744d *61696e5f696e666f00446973747269627574696f6e7a694765744f70745f52657475726e496e4f *726465725f636f6e5f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f526567756c617246696c655f7374617469635f656e747279005f5f737467696e69745f446973 *747269627574696f6e7a695061636b6167655f00686561704f766572666c6f77004748437a6953 *686f775f6134335f636c6f7375726500546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c723467517a64776e696c41626f76654e6573745f696e666f00446973747269 *627574696f6e7a694765744f70745f5265714172675f7374617469635f696e666f00446174617a *694d617962655f7a646645714d617962655f636c6f73757265004748437a69494f426173655f45 *786974457863657074696f6e5f7374617469635f696e666f0053797374656d7a69506f7369787a *6946696c65735f61636365737354696d655f636c6f7375726500546578747a69526561647a694c *65785f7a644c723576486c766c32395f656e747279004748437a695265616c5f72656d315f636c *6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c7234 *686d7a6477696e64656e745f656e747279007374675f61705f365f7570645f656e747279005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32345f636c6f7375 *726500546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f7a67 *7a677a655f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f73 *6d617274436f7079536f75726365735f73727464004748437a695265616c5f7a647761325f656e *74727900446973747269627574696f6e7a6953657475705f706172736550726f6772616d617469 *6361417267735f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c73 *5f6f7a75415050454e445f656e747279004748437a69456e756d5f65666474496e745f656e7472 *79004748437a69526561645f726561645f696e666f00446174617a694d617962655f6d61704d61 *7962655f656e74727900546578747a695072657474795072696e747a69487567686573504a5f7a *644c723468307a647766696c6c4e425f656e747279004748437a69426173655f6d6f64496e747a *685f656e747279004748437a69456e756d5f656e756d46726f6d546f325f696e666f0044697374 *7269627574696f6e7a6953657475705f57697468416c65785f636f6e5f656e747279005f5f676d *706e5f636d7000546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467436c766c32335f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a69 *52656164505f6d616e795f696e666f00446973747269627574696f6e7a694765744f70745f5265 *714172675f656e747279004748437a69426173655f7a737a65335f656e74727900546578747a69 *506172736572436f6d62696e61746f72737a6952656164507265635f6661696c5f656e74727900 *4748437a694c6973745f627265616b5f636c6f7375726500446973747269627574696f6e7a6950 *61636b6167654465736372697074696f6e5f4c6962726172795f636f6e5f696e666f004748437a *69526561645f7a6473726561644c6973745072656344656661756c74315f696e666f006f6c645f *7765616b5f7074725f6c69737400546578747a69526561647a694c65785f7a644c723574316138 *5f656e74727900446973747269627574696f6e7a6950617273655574696c735f73686f7746696c *65506174685f7372740053797374656d7a694469726563746f72795f6c766c32365f696e666f00 *4748437a694e756d5f7a6c5f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f6c69624d6f64756c65735f696e666f00446973747269627574696f *6e7a6956657273696f6e5f5468697356657273696f6e5f656e747279007374675f626c6f636b5f *74616b656d7661725f696e666f00446174617a694c6973745f756e6c696e65735f636c6f737572 *65006d616b65537461626c654e616d657a685f66617374004748437a6953686f775f6135385f63 *6c6f73757265004748437a69494f426173655f557365724572726f725f636c6f73757265005379 *7374656d7a694469726563746f72795f7a644c723962416c766c31395f656e74727900756c6c6f *6e675f666f726d61745f737472696e6700446973747269627574696f6e7a695061727365557469 *6c735f7a646653686f77504572726f725f636c6f7375726500446973747269627574696f6e7a69 *53696d706c657a695574696c735f6d6f64756c65546f46696c65506174685f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c34305f696e666f0047 *48437a69494f426173655f5061747465726e4d617463684661696c5f7374617469635f656e7472 *790053797374656d7a69506f7369787a6946696c65735f7468726f774572726e6f49664d696e75 *73317a75315f656e74727900446973747269627574696f6e7a6953657475705f636f6e66696748 *6164646f636b5f656e747279007374675f73656c5f305f7570645f696e666f0053797374656d7a *69436d645f61315f696e666f004748437a69494f426173655f6133345f636c6f73757265005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c723467436c766c32335f *656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7365744e6f6e426c *6f636b696e6746445f636c6f73757265004748437a69526561645f7265616450726563325f656e *747279005f5f737467696e69745f446973747269627574696f6e7a69436f6d7061747a69457863 *657074696f6e5f004748437a6953686f775f6131365f656e74727900446973747269627574696f *6e7a6950617273655574696c735f7a646766726f6d5374616e7a7a614669656c645f656e747279 *00446973747269627574696f6e7a6953657475705f4e6863466c61675f7374617469635f656e74 *72790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c375f73 *6c6f77004748437a694e756d5f71756f74496e74656765725f656e747279007374675f696e7465 *72705f636f6e737472335f656e7472790053797374656d7a69436d645f7468726f774572726e6f *49664d696e7573315f656e74727900546578747a69526561647a694c65785f7a644c7235744c61 *33315f656e747279004748437a694c6973745f7a644c723272696c766c31315f656e7472790073 *74675f4556414355415445445f696e666f004748437a694e756d5f71756f74496e74656765725f *696e666f00546578747a69526561647a694c65785f50756e635f636f6e5f656e74727900446973 *747269627574696f6e7a6953657475705f636f6e6669674873633268735f636c6f737572650044 *6973747269627574696f6e7a694765744f70745f4e6f6e4f70745f636f6e5f656e747279006e65 *774279746541727261797a685f6661737400446973747269627574696f6e7a6953657475705f52 *65676973746572436d645f636f6e5f656e74727900446973747269627574696f6e7a694765744f *70745f5065726d7574655f636c6f7375726500546578747a69526561647a694c65785f7a644c72 *35416c6c766c3131375f636c6f7375726500546578747a69526561647a694c65785f436861725f *636f6e5f656e74727900546578747a69526561647a694c65785f7a644c723574666131355f636c *6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164505f7a67 *7a677a655f696e666f0053797374656d7a69436d645f61315f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f6f7074696f6e735f636c6f737572 *65004748437a6953686f775f6134325f696e666f004748437a69426173655f6c65496e745f696e *666f00446973747269627574696f6e7a6956657273696f6e5f76657273696f6e4272616e63685f *696e666f004748437a69494f426173655f526561644275666665725f636c6f7375726500546578 *747a69526561647a694c65785f7a644c723579706c766c36375f636c6f73757265005379737465 *6d7a69456e7669726f6e6d656e745f676574456e765f656e747279004748437a695265616c5f61 *31355f696e666f004748437a695265616c5f5a43444672616374696f6e616c5f7374617469635f *696e666f004748437a69494f5f7a6477636f6d6d69744275666665727a715f736c6f7700474843 *7a69496e745f7a737a65335f636c6f73757265007374675f65786974004748437a6953686f775f *7a646653686f774d617962655f656e7472790053797374656d7a69506f7369787a695479706573 *5f7a646653686f77435069645f636c6f7375726500546578747a69526561647a694c65785f7a64 *4c723576376c766c32335f696e666f005f5f737467696e69745f53797374656d7a69506f736978 *7a695265736f757263655f00446973747269627574696f6e7a6953657475705f7a646766726f6d *416374696f6e5f696e666f004748437a69426173655f7a657a655f656e747279007374675f6170 *5f355f7570645f696e666f00446973747269627574696f6e7a69436f6d7061747a695265616450 *5f636861725f696e666f00446973747269627574696f6e7a6953657475705f496e737450726566 *69785f636f6e5f656e747279004748437a69494f426173655f7a647773686f777350726563345f *737274640053797374656d7a69506f7369787a6946696c65735f67657446696c65537461747573 *5f696e666f00446973747269627574696f6e7a694765744f70745f4e6f4172675f636f6e5f696e *666f007374675f73656c5f31335f6e6f7570645f696e666f00546578747a69526561647a694c65 *785f7a644c7235744c6133315f696e666f004748437a69426173655f6e65496e745f656e747279 *00546578747a69526561647a694c65785f7a644c72354148657461315f656e747279004748437a *694c6973745f7a644c723272576c766c33315f636c6f73757265004748437a694c6973745f636f *6e6361744d61705f696e666f00616c6c6f63617465645f627974657300466f726569676e7a6943 *7a694572726f725f7468726f774572726e6f49664d696e7573317a755f656e7472790044697374 *7269627574696f6e7a6953657475705f7a646653686f77416374696f6e5f636c6f737572650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f736b69704d616e795f696e66 *6f0053797374656d7a694469726563746f72795f6c766c31325f656e7472790053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c33375f696e666f004748437a69 *5265616c5f646976315f636c6f73757265004748437a69494f426173655f494f45786365707469 *6f6e5f636f6e5f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f616c *6c6f636142797465735f636c6f73757265006e657744796e434146004748437a6953686f775f61 *32325f696e666f00546578747a69526561647a694c65785f7a644c7235766c6134315f636c6f73 *7572650053797374656d7a694469726563746f72795f646f657346696c6545786973745f696e66 *6f00446973747269627574696f6e7a6953696d706c657a695574696c735f7769746854656d7046 *696c655f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f5075626c69 *63446f6d61696e5f636c6f73757265004748437a69494f426173655f4e6f427566666572696e67 *5f7374617469635f696e666f00546578747a69526561647a694c65785f7a644c723579316c766c *35355f636c6f737572650053797374656d7a694469726563746f72795f6c766c32325f636c6f73 *757265007274735f6d6b43686172004748437a69526561645f706172656e735f696e666f00696e *697453746f72616765004748437a694c6973745f666f6c6472325f656e747279004748437a6942 *6173655f69645f636c6f73757265004748437a695265616c5f61345f656e747279004748437a69 *4e756d5f73686f7773507265635f656e74727900546578747a69506172736572436f6d62696e61 *746f72737a6952656164505f72756e5f696e666f00446973747269627574696f6e7a6950617273 *655574696c735f70617273654f707456657273696f6e5f7372740053797374656d7a6944697265 *63746f72795f6c766c32345f696e666f0053797374656d7a69457869745f65786974576974685f *696e666f004748437a69496e745f7a64777368696674335f696e666f0053797374656d7a69436d *645f73797374656d5f696e666f004748437a69496e745f636f6d70617265325f636c6f73757265 *00546578747a69526561647a694c65785f7a644c72357a7a4e6c766c3130305f636c6f73757265 *00446973747269627574696f6e7a6953657475705f5265676973746572436d645f696e666f0047 *48437a69426173655f7a64664f72645a4d5a4e5f656e74727900446973747269627574696f6e7a *69457874656e73696f6e5f46756e6374696f6e616c446570656e64656e636965735f7374617469 *635f696e666f007374675f67635f756e70745f72315f726574004748437a69496e745f7a64646d *6d696e5f636c6f73757265004748437a6948616e646c655f7a644c724a64726561647a75666c61 *67735f656e7472790053797374656d7a69506f7369787a6946696c65735f7468726f774572726e *6f49664d696e7573317a755f636c6f73757265004748437a69494f5f6c766c32335f656e747279 *004748437a69526561645f7265616450726563345f636c6f737572650044697374726962757469 *6f6e7a6950617273655574696c735f416d6269676f757350617273655f7374617469635f656e74 *727900546578747a69526561647a694c65785f7a644c7235754878315f636c6f73757265004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f6861734c6962735f *7372740053797374656d7a694469726563746f72795f6765744469726563746f7279436f6e7465 *6e74735f636c6f73757265004748437a6953686f775f6132385f656e747279004748437a694e75 *6d5f646e7a756c6973745f696e666f007374675f73656c5f315f6e6f7570645f696e666f007374 *675f54534f5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a6477 *6363616c6c35375f656e747279004748437a69494f426173655f6c766c33325f696e666f006d6b *6469724040474c4942435f322e30004748437a69496e745f72656d325f636c6f73757265004748 *437a6953686f775f73686f77436861725f636c6f7375726500446973747269627574696f6e7a69 *53657475705f7061727365496e7374616c6c417267735f636c6f7375726500546578747a695061 *72736572436f6d62696e61746f72737a6952656164505f63686f6963655f656e74727900546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f72756e5f636c6f73757265 *004748437a69546f7048616e646c65725f64735f636c6f7375726500546578747a695061727365 *72436f6d62696e61746f72737a6952656164505f4765745f7374617469635f696e666f00474843 *7a69494f426173655f426c6f636b65644f6e446561644d5661725f7374617469635f656e747279 *004748437a69426173655f6571537472696e675f656e74727900446973747269627574696f6e7a *695061636b6167655f70617273655061636b6167654e616d655f636c6f73757265005f5f737467 *696e69745f4748437a69466c6f6174004748437a6953686f775f6134325f656e74727900474843 *7a69426173655f636f6d70617265496e747a685f696e666f00446973747269627574696f6e7a69 *436f6d7061747a6946696c65506174685f69734162736f6c757465506174685f656e7472790069 *6e6974527473466c61677344656661756c7473004748437a694c6973745f64726f705768696c65 *5f696e666f00446973747269627574696f6e7a695061636b6167655f70617273655061636b6167 *654e616d655f73727400446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f6672616d65776f726b735f656e74727900446973747269627574696f6e7a695061636b *6167654465736372697074696f6e5f6c6963656e73655f636c6f73757265005f5f693638362e67 *65745f70635f7468756e6b2e6378004748437a69496e745f49387a685f636f6e5f656e74727900 *4748437a69456e756d5f5a4344456e756d5f7374617469635f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f6d61696e7461696e65725f696e66 *6f004748437a69426173655f7a737a65325f696e666f004748437a6948616e646c655f68466c75 *73685f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f636f75 *6e745f696e666f004748437a6953686f775f73686f77537472696e675f636c6f73757265005465 *78747a69526561647a694c65785f7a644c723575466133345f636c6f73757265004748437a6945 *6e756d5f656e756d46726f6d5468656e335f656e74727900546578747a69526561647a694c6578 *5f7a644c723574376131315f636c6f7375726500546578747a695072657474795072696e747a69 *487567686573504a5f5374725f7374617469635f656e747279007374675f4152525f574f524453 *5f696e666f004748437a6948616e646c655f6132345f636c6f73757265004748437a69494f5f7a *644c723966746c766c395f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f62 *7261636b65745f696e666f00446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f6275696c6461626c655f696e666f007374675f73656c5f31355f6e6f7570645f69 *6e666f00546578747a695072657474795072696e747a69487567686573504a5f72656e6465725f *696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f73706c *697446696c65506174685f636c6f73757265007374675f61705f335f7570645f656e7472790044 *6174617a69486173685461626c655f7a647768617368537472696e675f656e7472790044697374 *7269627574696f6e7a69436f6d7061747a6952656164505f73657042795f656e74727900446973 *747269627574696f6e7a6953696d706c657a695574696c735f6765744f7074696f6e7346726f6d *536f757263655f636c6f7375726500546578747a69526561647a694c65785f7a644c7235786e61 *36325f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c33315f656e74727900446973747269627574696f6e7a695061636b6167655f7061727365 *5061636b61676549645f636c6f7375726500446973747269627574696f6e7a694765744f70745f *6765744f70745f656e74727900446973747269627574696f6e7a69436f6d7061747a6944697265 *63746f72795f6372656174654469726563746f727949664d697373696e675f656e747279004748 *437a6948616e646c655f666c75736857726974654275666665724f6e6c795f636c6f7375726500 *4748437a695265616c5f6c766c315f636c6f73757265005f5f646976646933004748437a69494f *426173655f6c766c33345f656e747279004748437a69496e745f7a70325f696e666f0044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f7a646645714c69627261 *72795f636c6f7375726500446174617a695475706c655f5a32545f7374617469635f696e666f00 *446973747269627574696f6e7a694765744f70745f4f70744172675f7374617469635f656e7472 *7900446973747269627574696f6e7a6953657475705f436d645f636f6e5f696e666f0044697374 *7269627574696f6e7a69436f6d7061747a6946696c65506174685f70617468506172656e74735f *73727400446973747269627574696f6e7a694c6963656e73655f7a646766726f6d4c6963656e73 *655f636c6f73757265004748437a695265616c5f6131325f696e666f004748437a694c6973745f *6c766c32305f656e747279004748437a695265616c5f7a647761315f696e666f004748437a6952 *65616c5f7a64646d73686f775f636c6f73757265004748437a69494f426173655f457869744578 *63657074696f6e5f636f6e5f656e74727900446973747269627574696f6e7a6953696d706c657a *695574696c735f6765744f7074696f6e7346726f6d536f757263655f696e666f004748437a6957 *6f72645f7a6d335f656e747279007374675f73656c5f31315f7570645f656e747279004748437a *695265616c5f7a647761335f636c6f7375726500446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e5f7061636b6167655f696e666f00446973747269627574696f6e *7a6953657475705f4f74686572436f6d70696c65725f7374617469635f696e666f004469737472 *69627574696f6e7a6953657475705f4c6966745f636f6e5f656e747279004748437a694c697374 *5f7265706c69636174655f636c6f73757265004748437a69526561645f706172656e5f696e666f *004748437a6953686f775f73686f774c6973745f636c6f7375726500446973747269627574696f *6e7a69436f6d7061747a6946696c65506174685f646c6c457874656e73696f6e5f656e74727900 *446973747269627574696f6e7a6953657475705f496e73745072656669785f7374617469635f65 *6e747279007374675f73656c5f305f7570645f656e747279004748437a6953686f775f6132375f *636c6f7375726500446174617a695479706561626c655f7a644c72364f346c766c345f656e7472 *79004748437a695265616c5f7a6477665f656e747279007374675f67635f6c31004748437a6954 *6f7048616e646c65725f7a644c723336556c766c5f696e666f00546578747a6950617273657243 *6f6d62696e61746f72737a6952656164505f7a644c723174676c766c315f636c6f737572650054 *6578747a69526561647a694c65785f7a644c7235775a5a6135385f656e747279007374675f7574 *5f315f305f756e7265675f696e666f00546578747a69526561647a694c65785f7a644c7235754a *6c766c31385f696e666f005f5f737467696e69745f53797374656d7a69506f7369787a6954656d *7000446973747269627574696f6e7a694d616b655f64656661756c744d61696e4e6f526561645f *696e666f00446973747269627574696f6e7a694765744f70745f4e6f4172675f636f6e5f656e74 *7279004748437a6948616e646c655f6c766c31345f696e666f00446973747269627574696f6e7a *6956657273696f6e5f76657273696f6e4272616e63685f636c6f73757265004748437a69526561 *6c5f6131335f696e666f005f5f737467696e69745f4748437a694c697374004748437a69457272 *5f756e74616e676c655f656e74727900446174617a69486173685461626c655f6e65775f656e74 *7279004748437a6948616e646c655f66647a757374646f75745f636c6f73757265005379737465 *6d7a69456e7669726f6e6d656e745f676574456e765f696e666f00546578747a69507265747479 *5072696e747a69487567686573504a5f73706163655f636c6f7375726500546578747a69526561 *647a694c65785f7a644c723578356135395f696e666f00676364496e747a685f66617374005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c5f696e666f004748 *437a69576f72645f737563634572726f725f696e666f004748437a69526561645f7a644c723639 *666c766c31385f696e666f00446174617a694c6973745f6c696e65735f636c6f73757265004748 *437a6953686f775f7a64737a64646d73686f774c697374325f636c6f7375726500446973747269 *627574696f6e7a6950617273655574696c735f70617273655061636b6167654e616d65515f636c *6f7375726500446973747269627574696f6e7a69457874656e73696f6e5f7a646766726f6d4578 *74656e73696f6e5f636c6f73757265004748437a694e756d5f7a64646d6d696e5f696e666f0053 *797374656d7a694469726563746f72795f7a644c72396145615f636c6f73757265005379737465 *6d7a69506f7369787a69496e7465726e616c735f636f6e73747a75667a75736574666c5f656e74 *727900446973747269627574696f6e7a6950617273655574696c735f7a646766726f6d50617273 *65526573756c745f636c6f7375726500446973747269627574696f6e7a6953657475705f576974 *68416c65785f696e666f007374675f454e445f4d55545f4c4953545f696e666f00546578747a69 *526561647a694c65785f7a644c72357a7a706c766c38395f636c6f737572650053797374656d7a *69494f7a694572726f725f696f6553657446696c654e616d655f656e7472790053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c32355f696e666f004748437a69 *426173655f7a737a65325f636c6f7375726500446973747269627574696f6e7a69457874656e73 *696f6e5f54656d706c6174654861736b656c6c5f636c6f7375726500446973747269627574696f *6e7a6953657475705f7a6467746f436d645f696e666f00466f726569676e7a69437a694572726f *725f7468726f774572726e6f49664d696e75733152657472797a755f636c6f7375726500474843 *7a69494f5f7a644c7239663961355f636c6f737572650053797374656d7a694469726563746f72 *795f72656d6f76654469726563746f72795f656e74727900546578747a69526561647a694c6578 *5f7a644c7235787a7a6136345f696e666f005f5f737467696e69745f466f726569676e7a695374 *6f7261626c65004748437a694e756d5f656e756d44656c7461496e74656765725f696e666f0047 *48437a69546f7048616e646c65725f6c766c345f636c6f73757265004748437a69494f42617365 *5f6132325f636c6f73757265004748437a69426173655f6c766c335f696e666f004748437a6953 *686f775f7a64737a64646d73686f77345f636c6f73757265004748437a694c6973745f7a644c72 *32726d6c766c31335f696e666f004748437a694c6973745f7a7a69705f656e7472790044697374 *7269627574696f6e7a6950617273655574696c735f70617273654c69624e616d65515f73727400 *4748437a6948616e646c655f77616e745265616461626c6548616e646c655f696e666f00446973 *747269627574696f6e7a6953657475705f436f6d70696c65725f7374617469635f656e74727900 *5f5f737467696e69745f446973747269627574696f6e7a694765744f70745f00546578747a6952 *6561647a694c65785f7a644c72357a7a6e6c766c38385f636c6f73757265004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f7a646766726f6d4275696c64496e *666f5f656e747279007374675f61705f737461636b5f656e747269657300546578747a69526561 *647a694c65785f7a644c7235784a6c766c35305f696e666f004748437a69494f426173655f6c76 *6c32335f696e666f00466f726569676e7a69437a694572726f725f7468726f774572726e6f4966 *52657472794d6179426c6f636b5f656e747279004748437a694e756d5f7369676e756d315f636c *6f7375726500446973747269627574696f6e7a6953657475705f55736572466c61675f636c6f73 *75726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6578 *74656e73696f6e735f696e666f00446973747269627574696f6e7a6956657273696f6e5f456172 *6c69657256657273696f6e5f636f6e5f696e666f00546578747a695072657474795072696e747a *69487567686573504a5f7a644c723661656173797a75646973706c61795f656e74727900446973 *747269627574696f6e7a694765744f70745f7573616765496e666f5f636c6f7375726500474843 *7a69426173655f636f6d70617265496e747a685f656e747279004748437a69426173655f5a3054 *5f636c6f7375726500446973747269627574696f6e7a694765744f70745f7a646766726f6d4172 *6744657363725f696e666f004748437a695265616c5f73686f7773507265635f696e666f004748 *437a694c6973745f7a7a69705f696e666f004748437a69526561645f63686f6f73655f696e666f *0053797374656d7a69494f7a694572726f725f7472795f636c6f73757265004469737472696275 *74696f6e7a6950617273655574696c735f72756e505f696e666f005f5f737472746f645f696e74 *65726e616c4040474c4942435f322e3000756e626c6f636b4f6e6500466f726569676e7a69437a *694572726f725f7468726f774572726e6f496652657472795f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f73616e697479436865636b506163 *6b6167655f73727400636d70496e74656765727a685f6661737400446973747269627574696f6e *7a694765744f70745f7a6467746f4f70744b696e645f656e747279004748437a69526561645f61 *375f656e747279004748437a69556e69636f64655f7a6477697355707065725f636c6f73757265 *004748437a69494f5f7a6477706f6c797a75627566526561645f636c6f7375726500746f776c6f *7765724040474c4942435f322e30004748437a6953686f775f73686f775369676e6564496e745f *696e666f004748437a69494f426173655f756e73616665506572666f726d494f5f656e74727900 *446973747269627574696f6e7a69457874656e73696f6e5f5479706553796e6f6e796d496e7374 *616e6365735f7374617469635f696e666f00446973747269627574696f6e7a694c6963656e7365 *5f7a646766726f6d4c6963656e73655f696e666f004748437a6948616e646c655f7a644c726330 *7a7a7468726f774572726e6f49664d696e75733152657472797a755f696e666f0072656e616d65 *4040474c4942435f322e30004748437a695265616c5f7a64646d73686f774c6973745f696e666f *00546578747a695072657474795072696e747a69487567686573504a5f7a644c723467796c766c *32315f656e747279004748437a69526561645f726561644e756d626572335f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6946696c65506174685f69735061746853657061 *7261746f725f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f *7061727365446570656e64656e63795f636c6f73757265004748437a69494f426173655f454f46 *5f7374617469635f656e747279004748437a694e756d5f7369676e756d315f656e747279004469 *73747269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f4e4843466c *61675f636c6f73757265004748437a69494f5f6c766c32325f736c6f77004748437a69496e745f *73756363325f636c6f73757265004748437a69556e69636f64655f6973416c7068614e756d5f69 *6e666f0053797374656d7a694469726563746f72795f6372656174654469726563746f72795f69 *6e666f004748437a69426173655f7a64646d7a737a655f656e747279004748437a69576f72645f *7a644c723943386c766c31325f696e666f004748437a69494f426173655f68614275666665724d *6f64655f636c6f7375726500446973747269627574696f6e7a694765744f70745f4f70745f656e *74727900446973747269627574696f6e7a6953657475705f57697468436f6d70696c65725f696e *666f00446973747269627574696f6e7a6950617273655574696c735f50617273654f6b5f656e74 *7279004748437a695074725f706c75735074725f696e666f00446973747269627574696f6e7a69 *436f6d7061747a694469726563746f72795f636f707946696c655f636c6f737572650044697374 *7269627574696f6e7a69436f6d7061747a6952656164505f6265747765656e5f656e7472790047 *48437a6953686f775f6133375f636c6f73757265004748437a694e756d5f7a647771756f745265 *6d496e74656765725f636c6f73757265004748437a69494f426173655f6c766c32305f656e7472 *790053797374656d7a694469726563746f72795f7a644c723962416c766c31395f696e666f0044 *6973747269627574696f6e7a6950726550726f636573737a69556e6c69745f756e6c69745f696e *666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f657870 *6f7365644d6f64756c65735f696e666f004748437a69494f426173655f6c766c32365f696e666f *00546578747a695072657474795072696e747a69487567686573504a5f7a644c723466536c766c *5f656e747279005f5f737467696e69745f4748437a6953746f7261626c655f0044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f6c69624275696c64496e666f5f *636c6f7375726500546578747a69526561647a694c65785f7a644c7235784a6c766c35305f636c *6f7375726500446973747269627574696f6e7a6953657475705f486164646f636b436d645f7374 *617469635f696e666f00737461727454696d6572004748437a69494f5f7a644c723966726c766c *385f696e666f0053797374656d7a69506f7369787a6946696c65735f6c766c375f696e666f0047 *48437a69494f426173655f426c6f636b65644f6e446561644d5661725f7374617469635f696e66 *6f00546578747a695072657474795072696e747a69487567686573504a5f7a644c723467796c76 *6c32315f696e666f00446973747269627574696f6e7a6950617273655574696c735f7061727365 *436f6d6d614c6973745f656e74727900546578747a69526561647a694c65785f7a644c72354139 *6c766c3131315f636c6f73757265004748437a694e756d5f7a737a655f636c6f73757265004748 *437a69494f5f7a647777726974654c696e65735f636c6f7375726500446973747269627574696f *6e7a6950726550726f636573737a69556e6c69745f706c61696e5f636c6f737572650044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f7061727365486f6f6b65 *644275696c64496e666f5f636c6f7375726500446973747269627574696f6e7a694c6963656e73 *655f47504c5f7374617469635f696e666f00546578747a69526561647a694c65785f537472696e *675f7374617469635f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f6c766c31355f696e666f004748437a69496e745f6469764d6f64325f656e747279004748437a *69426173655f5a4d5a4e5f7374617469635f656e747279004748437a69556e69636f64655f7a64 *77697355707065725f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f7a64776363616c6c31395f636c6f73757265004748437a69494f5f6c766c31385f636c6f7375 *7265004748437a69426173655f706c7573496e745f636c6f73757265007374675f72616973655f *656e747279004748437a69494f5f7a644c723966766c766c31305f656e747279005f5f73746769 *6e69745f466f726569676e7a69537461626c655074725f007274735f61726776004748437a6949 *4f426173655f6c766c33335f696e666f004748437a694c6973745f6c766c32305f696e666f005f *5f656e636f6465446f75626c65007374675f626c6f636b5f74616b656d766172004748437a6952 *65616c5f6131305f636c6f73757265005f5f737467696e69745f53797374656d7a69506f736978 *7a69556e697374640053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c31395f696e666f004748437a6948616e646c655f6c766c35385f636c6f73757265005f5f *737467696e69745f466f726569676e7a694d61727368616c7a69506f6f6c004469737472696275 *74696f6e7a6953696d706c657a695574696c735f66696e645061636b616765446573635f656e74 *727900446973747269627574696f6e7a69457874656e73696f6e5f4e6f4d6f6e6f6d6f72706869 *736d5265737472696374696f6e5f636c6f7375726500446973747269627574696f6e7a69506163 *6b6167654465736372697074696f6e5f73657475704d6573736167655f656e747279004748437a *694c6973745f7a64777370616e5f696e666f004748437a694c6973745f706f6c797a75666f6c64 *72325f696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e6c6974 *5f496e636c7564655f7374617469635f656e747279004748437a6953686f775f6137345f636c6f *73757265004748437a69466c6f61745f7a644c723967636c766c33335f636c6f73757265004748 *437a69496e745f7a64777368696674335f636c6f7375726500446973747269627574696f6e7a69 *457874656e73696f6e5f657874656e73696f6e73546f4e4843466c61675f737274004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f6a6f696e46696c654e616d655f *73727400446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c69 *62726172795f656e747279004d61696e5f6d61696e5f696e666f00736967616374696f6e404047 *4c4942435f322e30005f5f737467696e69745f466f726569676e7a69435f007274735f6576616c *004748437a6948616e646c655f7769746848616e646c657a757a715f636c6f7375726500474843 *7a69494f5f7a644c723966706c766c375f636c6f7375726500446973747269627574696f6e7a69 *436f6d7061747a6952656164505f6765745f636c6f7375726500446973747269627574696f6e7a *69436f6d7061747a6952656164505f6265747765656e5f696e666f004748437a69494f42617365 *5f6c766c32395f656e74727900546578747a69526561647a694c65785f7a644c72357a7a377833 *345f636c6f73757265004748437a6953686f775f6134375f636c6f73757265004748437a695265 *616c5f746f496e7465676572315f696e666f004748437a69494f426173655f48616e646c657a75 *7a755f636f6e5f656e74727900446973747269627574696f6e7a6950726550726f636573737a69 *556e6c69745f7a646766726f6d436c61737369666965645f636c6f73757265004748437a695265 *616c5f7a64737a64646d6469765f656e74727900446973747269627574696f6e7a695365747570 *5f636f6e6669675072656669785f656e747279007374675f41505f656e74727900446973747269 *627574696f6e7a695061636b6167654465736372697074696f6e5f6578654d6f64756c65735f63 *6c6f737572650063617463687a685f66617374004748437a6953686f775f6133355f636c6f7375 *7265004748437a69496e745f6c766c31365f696e666f00546578747a69526561647a694c65785f *7a644c7235785a5a6c766c35345f636c6f7375726500446174617a694569746865725f52696768 *745f7374617469635f656e747279004748437a6953545265665f53545265665f7374617469635f *656e74727900446174617a694d617962655f66726f6d4a7573745f636c6f737572650044697374 *7269627574696f6e7a6956657273696f6e5f496e7465727365637456657273696f6e52616e6765 *735f636f6e5f656e747279007374675f73656c5f375f6e6f7570645f656e747279005379737465 *6d7a69506f7369787a69496e7465726e616c735f6c766c31325f636c6f73757265004748437a69 *5265616c5f61365f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f44 *6570656e64656e63795f656e74727900546578747a69526561647a694c65785f7a644c72357654 *6c766c33315f696e666f004748437a6948616e646c655f7a644c7262583761325f656e74727900 *4748437a6953686f775f69746f735f696e666f0053797374656d7a69506f7369787a6946696c65 *735f61636365737354696d655f696e666f00446973747269627574696f6e7a6956657273696f6e *5f496e7465727365637456657273696f6e52616e6765735f656e747279004748437a6953686f77 *5f6135335f636c6f73757265004748437a695265616c5f7a635f636c6f73757265004748437a69 *494f426173655f4173796e63457863657074696f6e5f636f6e5f696e666f004469737472696275 *74696f6e7a6953696d706c657a695574696c735f72617753797374656d50617468457869745f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35 *385f696e666f005f5f737467696e69745f446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f00737461745f65786974004748437a69494f5f7a644c7239655a5a61 *5f696e666f004748437a69494f426173655f52656164577269746548616e646c655f636c6f7375 *7265004748437a695265616c5f7a64737a765f656e74727900546578747a69526561647a694c65 *785f7a644c723577426135345f696e666f00546578747a69526561647a694c65785f7a644c7235 *74466132385f636c6f73757265004748437a6953686f775f6131305f636c6f7375726500474843 *7a69496e745f7369676e756d325f636c6f7375726500657865636c4040474c4942435f322e3000 *546578747a69526561647a694c65785f7a644c723578336c766c34335f696e666f004748437a69 *426173655f6765496e745f636c6f73757265005f5f737467696e69745f466f726569676e7a6943 *7a694572726f7200546578747a69526561647a694c65785f7a644c723541376c766c3131305f63 *6c6f7375726500446174617a695479706561626c655f676f315f656e747279004748437a69496e *745f7a64646d7a677a655f636c6f7375726500446973747269627574696f6e7a6953657475705f *7061727365496e7374616c6c417267735f737274004748437a69496e745f626f756e646564456e *756d46726f6d5468656e5f656e74727900546578747a695072657474795072696e747a69487567 *686573504a5f4e6573745f7374617469635f696e666f004748437a69494f426173655f42756666 *65725f636f6e5f696e666f00446174617a694d617962655f4a7573745f636c6f73757265007374 *675f73656c5f355f7570645f696e666f00546578747a69526561647a694c65785f7a644c723576 *426c766c32385f696e666f00546578747a69526561647a694c65785f7a644c72357a7a35613638 *5f656e747279004748437a69494f426173655f6c766c32365f636c6f73757265004748437a6953 *686f775f5a434453686f775f7374617469635f696e666f00546578747a69526561647a694c6578 *5f7a644c723575586133375f656e74727900546578747a69526561647a694c65785f7a644c7235 *7a7a316c657841736369695f656e74727900546578747a695072657474795072696e747a694875 *67686573504a5f7a644c723467537a647761626f76654e6573745f696e666f004748437a694261 *73655f437a685f7374617469635f656e74727900446973747269627574696f6e7a69436f6d7061 *747a6952656164505f7a64664d6f6e61645061727365725f636c6f73757265004748437a695265 *616c5f6c766c31365f696e666f00446973747269627574696f6e7a69436f6d7061747a69526561 *64505f6265747765656e5f636c6f73757265007374675f61705f70707070705f696e666f004748 *437a69494f426173655f6133345f696e666f007274735f676574576f72643332004748437a6952 *65616c5f7a637a635f636c6f73757265004748437a69494f426173655f5265736f757263655661 *6e69736865645f7374617469635f696e666f00546578747a69526561647a694c65785f7a644c72 *68576c65784469676974735f656e74727900446973747269627574696f6e7a6950617273655574 *696c735f46726f6d537472696e675f696e666f004748437a69494f426173655f72657475726e49 *4f5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f636f756e *745f737274004748437a6948616e646c655f7a644c7262583961335f636c6f7375726500737467 *5f73656c5f345f7570645f696e666f00446174617a695479706561626c655f7a64776d6b417070 *54795f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4578697374656e *7469616c5175616e74696669636174696f6e5f7374617469635f696e666f007374675f4d55545f *4152525f505452535f46524f5a454e5f696e666f00446174617a694569746865725f4c6566745f *7374617469635f696e666f00446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f5061636b6167654465736372697074696f6e5f7374617469635f696e666f007374 *675f73656c5f315f7570645f696e666f004748437a694e756d5f7a677a655f696e666f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164507265635f737465705f656e74 *7279006e657750696e6e65644279746541727261797a685f666173740044697374726962757469 *6f6e7a69436f6d7061747a694469726563746f72795f6372656174654469726563746f72794966 *4d697373696e675f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164 *505f6d756e6368315f656e747279004748437a69426173655f646976496e747a685f656e747279 *00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f4578656375 *7461626c655f636f6e5f696e666f004748437a695074725f46756e5074725f636f6e5f696e666f *00446174617a694c6973745f69735072656669784f665f696e666f004748437a6948616e646c65 *5f7a644c7262596a6c766c31355f696e666f00546578747a69526561647a694c65785f7a644c72 *3578726c766c34375f656e74727900546578747a69526561647a694c65785f6137305f656e7472 *7900446973747269627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e *6765735f636f6e5f656e747279004748437a695061636b5f756e7061636b43537472696e675f63 *6c6f73757265007374675f61705f385f7570645f696e666f007374675f61705f6c5f696e666f00 *53797374656d7a69506f7369787a69496e7465726e616c735f53747265616d5f636c6f73757265 *00446973747269627574696f6e7a6953657475705f7061727365486164646f636b417267735f69 *6e666f005f5f737467696e69745f4748437a69526561645f00446973747269627574696f6e7a69 *4c6963656e73655f4c47504c5f7374617469635f656e7472790053797374656d7a69506f736978 *7a69496e7465726e616c735f7a64776363616c6c34395f636c6f73757265004748437a694e756d *5f7a64664e756d496e745f636c6f73757265005f5f737467696e69745f466f726569676e7a6943 *7a69537472696e67006c6f6f6b7570537461626c654e616d65007274735f6d6b46756e50747200 *4748437a6948616e646c655f7a644c7263307a7a7468726f774572726e6f49664d696e75733152 *657472797a755f656e7472790053797374656d7a69494f7a694572726f725f696f655365744669 *6c654e616d655f636c6f7375726500446174617a694d617962655f4a7573745f696e666f005465 *78747a69506172736572436f6d62696e61746f72737a6952656164505f737472696e675f656e74 *7279004748437a6948616e646c655f7a644c726258446131385f636c6f73757265004748437a69 *53686f775f6133325f696e666f004748437a69494f426173655f4173796e63457863657074696f *6e5f636f6e5f656e74727900446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f5061636b6167654465736372697074696f6e5f7374617469635f656e7472790054 *6578747a69526561647a694c65785f7a644c723578686136315f636c6f73757265004748437a69 *53686f775f7a64646d73686f774c6973745f636c6f7375726500446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f4275696c64496e666f5f636c6f737572650047 *48437a69494f426173655f4c696e65427566666572696e675f636c6f7375726500446973747269 *627574696f6e7a69436f6d7061747a6946696c65506174685f636f6d6d6f6e506172656e745f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3466536c766c5f636c6f73757265007374675f73656c5f31345f6e6f7570645f696e666f004748 *437a695265616c5f5a437a765f7374617469635f656e74727900546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c723661656173797a75646973706c61795f636c6f73 *7572650053797374656d7a694469726563746f72795f6c6f6e677a75706174687a7573697a7a65 *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f6132 *325f636c6f73757265004748437a69426173655f6571496e745f636c6f73757265004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f4c6962726172795f737461 *7469635f656e74727900446973747269627574696f6e7a6953657475705f636d644f7074696f6e *735f696e666f00436f6e74726f6c7a694d6f6e61645f7a64776c6966744d325f696e666f005465 *78747a69526561647a694c65785f7a644c723576316c766c32325f636c6f737572650053797374 *656d7a69506f7369787a69496e7465726e616c735f6c766c31345f636c6f73757265004748437a *69546f7048616e646c65725f6473315f636c6f7375726500446973747269627574696f6e7a6950 *61636b6167654465736372697074696f6e5f706b6755726c5f656e747279004469737472696275 *74696f6e7a6953657475705f576974684873633268735f636f6e5f656e74727900446973747269 *627574696f6e7a6953657475705f7a646766726f6d436f6e666967466c6167735f696e666f0044 *6973747269627574696f6e7a694765744f70745f7a646766726f6d4172674f726465725f696e66 *6f007374675f6e6f666f726365494f5f696e666f00446973747269627574696f6e7a6953696d70 *6c657a695574696c735f7769746854656d7046696c655f696e666f004748437a6953686f775f61 *37345f696e666f004748437a694172725f7a644c723575446c766c365f656e7472790044697374 *7269627574696f6e7a6950617273655574696c735f7a6467746f5374616e7a7a614669656c645f *636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f726177 *53797374656d457869745f656e74727900436f6e74726f6c7a694d6f6e61645f666f6c644d5f65 *6e747279004748437a69496e745f6c766c32365f656e747279004748437a695265616c5f6c766c *355f696e666f007374675f42434f5f656e74727900546578747a695072657474795072696e747a *69487567686573504a5f7a6c7a675f696e666f004748437a69466c6f61745f7a64777a64737072 *6f7065724672616374696f6e5f696e666f004748437a69496e745f7a64646d73686f775f696e66 *6f00546578747a695072657474795072696e747a69487567686573504a5f7a644c7234686f7a64 *776d756c74697a7563685f636c6f73757265004748437a695265616c5f7a64737a64646d6d6f64 *5f696e666f00546578747a69526561647a694c65785f7a644c723541766c766c3132325f636c6f *73757265004748437a694c6973745f7a7a6970576974685f696e666f005f5f737467696e69745f *4748437a69576f72645f006763537461626c655074725461626c65004748437a6953686f775f61 *34385f696e666f00546578747a69526561647a694c65785f7a644c723576706c766c32365f656e *74727900466f726569676e7a6953746f7261626c655f706f6c797a75616c69676e6d656e74325f *636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f7a646766726f *6d504572726f725f696e666f00546578747a69526561647a694c65785f7a644c723578566c766c *35325f636c6f7375726500446973747269627574696f6e7a69457874656e73696f6e5f45787465 *6e7369626c655265636f7264735f636c6f7375726500446973747269627574696f6e7a6953696d *706c657a695574696c735f6d6b4c69624e616d655f656e747279004748437a6948616e646c655f *77616e745265616461626c6548616e646c657a715f696e666f00546578747a69526561647a694c *65785f7a644c723577586c766c34325f656e747279004748437a69576f72645f7a644c72394361 *6c766c31335f656e747279004748437a6948616e646c655f6c766c32335f636c6f737572650047 *48437a69426173655f7a644c723265586c766c5f656e74727900546578747a6950617273657243 *6f6d62696e61746f72737a6952656164505f4661696c5f7374617469635f696e666f0044697374 *7269627574696f6e7a69436f6d7061747a6946696c65506174685f6a6f696e50617468735f656e *74727900446973747269627574696f6e7a69436f6d7061747a694469726563746f72795f72656d *6f76654469726563746f72795265637572736976655f696e666f00446973747269627574696f6e *7a69436f6d7061747a6946696c65506174685f6368616e676546696c654578745f737274007374 *675f61705f645f72657400466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c32 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c72357544705f696e666f00 *546578747a695072657474795072696e747a69487567686573504a5f4e696c41626f76655f636f *6e5f696e666f004748437a69526561645f7a644c723639686c766c31395f636c6f737572650044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6275696c646162 *6c655f656e747279004748437a69426173655f7a695f636c6f73757265004748437a695265616c *5f5a43444672616374696f6e616c5f636f6e5f656e747279004748437a694e756d5f7a64777368 *6f7773507265635f636c6f73757265004748437a69496e745f71756f74325f696e666f00446973 *747269627574696f6e7a695061636b6167654465736372697074696f6e5f706b6755726c5f636c *6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c7234 *674b6e696c426573696465315f636c6f7375726500446973747269627574696f6e7a6953657475 *705f48756773466c61675f7374617469635f696e666f00446973747269627574696f6e7a694c69 *63656e73655f4c47504c5f636c6f73757265004748437a695265616c5f6576656e5f696e666f00 *4748437a6948616e646c655f68436c6f73657a7568656c705f656e7472790072656d6f76654861 *73685461626c65004748437a6953686f775f6135345f696e666f004748437a69494f426173655f *48617264776172654661756c745f636c6f737572650053797374656d7a69506f7369787a69496e *7465726e616c735f4644547970655f636c6f737572655f74626c00446973747269627574696f6e *7a6956657273696f6e5f706172736556657273696f6e5f656e747279004748437a695265616c5f *7a64736576656e5f656e747279004748437a69576f72645f7a70335f696e666f005f5f73746769 *6e69745f466f726569676e7a69537461626c6550747200446973747269627574696f6e7a694578 *74656e73696f6e5f416c6c6f77556e646563696461626c65496e7374616e6365735f7374617469 *635f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f52657375 *6c745f656e74727900546578747a69506172736572436f6d62696e61746f72737a695265616450 *5f7a644c723174676c766c315f696e666f00446973747269627574696f6e7a6953657475705f70 *61727365476c6f62616c417267735f73727400546578747a69526561647a694c65785f7a644c72 *35777a7a6c766c33385f636c6f73757265004748437a69494f426173655f7a647773686f777350 *726563325f696e666f004748437a69456e756d5f7a644c723261666c766c31355f636c6f737572 *6500446973747269627574696f6e7a69436f6d7061747a6952656164505f526573756c745f696e *666f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6973416273 *6f6c757465506174685f636c6f7375726500446973747269627574696f6e7a6953657475705f7a *64664571436f6d70696c6572466c61766f725f636c6f7375726500446973747269627574696f6e *7a69457874656e73696f6e5f456d707479446174614465636c735f7374617469635f656e747279 *004748437a69526561645f7265616450726563325f696e666f004748437a69426173655f636f6e *73745f696e666f004748437a6948616e646c655f7374646f75745f696e666f0044697374726962 *7574696f6e7a6953696d706c657a695574696c735f64656661756c745061636b61676544657363 *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a64 *4c723467496c766c32345f656e747279004748437a69496e745f70726564325f636c6f73757265 *004748437a69496e745f4936347a685f7374617469635f696e666f007274735f676574466c6f61 *74004748437a69494f5f6c766c32335f696e666f004748437a69546f7048616e646c65725f7265 *706f7274537461636b4f766572666c6f775f696e666f004748437a694c6973745f6c766c33325f *636c6f73757265004748437a695765616b5f72756e46696e616c697a7a657242617463685f636c *6f7375726500546578747a69526561647a694c65785f7a644c723577316134385f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c7234674d6f6e654c69 *6e6572315f636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f776974684c69625f656e747279004748437a694c6973745f7370616e5f636c6f *73757265007374675f73656c5f355f6e6f7570645f656e747279004748437a69526561645f7a64 *737a64646d726561647350726563315f656e74727900546578747a695072657474795072696e74 *7a69487567686573504a5f7365705f696e666f004748437a69496e745f66726f6d456e756d325f *656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f7370 *6c697446696c654e616d655f737274004748437a69496e745f7a64646d7a675f696e666f004748 *437a69456e756d5f7a644c723979676f7a75646e7a75696e747a7566625f696e666f0054657874 *7a69526561647a694c65785f7a644c723575786c766c31365f656e7472790053797374656d7a69 *506f7369787a69496e7465726e616c735f6f7a75524457525f656e747279004748437a6953746f *7261626c655f726561645074724f66665074725f696e666f004748437a6953686f775f7a64737a *64646d73686f77335f656e74727900546578747a69506172736572436f6d62696e61746f72737a *6952656164507265635f72657365745f636c6f737572650053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c33315f636c6f73757265004748437a69526561645f *7a64737a64646d726561647350726563325f656e74727900466f726569676e7a694d6172736861 *6c7a69416c6c6f635f7a64776363616c6c5f696e666f004748437a69496e745f73686f77735072 *6563325f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952656164 *507265635f72657475726e5f696e666f00446174617a694c6973745f696e746572737065727365 *5f656e74727900696e73657274486173685461626c6500546578747a695072657474795072696e *747a69487567686573504a5f7a644c723467457a64777370616365735f696e666f004748437a69 *526561645f6c766c32315f636c6f7375726500446973747269627574696f6e7a6953696d706c65 *7a695574696c735f7769746854656d7046696c655f656e74727900446973747269627574696f6e *7a69436f6d7061747a6952656164505f6761746865725f696e666f004748437a695265616c5f69 *6e66696e6974795f636c6f73757265004748437a69494f426173655f6131395f636c6f73757265 *004748437a69526561645f6c6578505f656e747279004748437a6953686f775f6137315f636c6f *73757265004748437a6948616e646c655f6c766c32305f636c6f73757265004748437a6948616e *646c655f7769746848616e646c657a715f636c6f7375726500446174617a695479706561626c65 *5f6c676f5f636c6f7375726500446973747269627574696f6e7a6953657475705f706172736550 *726f6772616d6174696361417267735f656e74727900546578747a69526561647a694c65785f7a *644c723578526136375f696e666f00446973747269627574696f6e7a69436f6d7061747a695265 *6164505f706661696c5f656e747279004748437a694172725f535441727261795f636f6e5f656e *747279005f5f737467696e69745f466f726569676e7a69437a6954797065735f007374675f6361 *7463685f6672616d655f305f726574004748437a6948616e646c655f6132345f656e7472790047 *48437a69494f426173655f4d5661725f636f6e5f656e747279004748437a69426173655f69645f *656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f637a75636c6f7365 *6469725f696e666f007274735f6d6b496e7400546578747a69526561647a694c65785f7a644c72 *3579766c766c37305f636c6f73757265004748437a69494f426173655f494f457863657074696f *6e5f636f6e5f696e666f00666f726b7a685f666173740064656c657465416c6c54687265616473 *004748437a695265616c5f7a64646d73686f774c6973745f656e747279004748437a69556e6963 *6f64655f6973416c7068615f696e666f004748437a69426173655f636f6d70617265496e745f65 *6e747279004748437a69426173655f47545f636c6f73757265004748437a694e756d5f656e756d *46726f6d5468656e546f5f696e666f004748437a69494f5f7a6477685075744275667a715f656e *74727900446973747269627574696f6e7a6953657475705f7061727365556e7265676973746572 *417267735f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c33355f656e7472790053797374656d7a69494f5f7075745374724c6e5f696e666f0044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73686f77506163 *6b6167654465736372697074696f6e5f696e666f004748437a69494f5f6c766c31355f656e7472 *790053797374656d7a69436d645f73797374656d5f656e747279004748437a69576f72645f7a64 *646d73686f775f636c6f73757265004748437a694c6973745f706f6c797a75666f6c6472325f63 *6c6f737572650063726561746541646a7573746f720068735f6164645f726f6f74004748437a69 *53686f775f6132335f636c6f73757265004748437a694e756d5f7a644c723278766c766c325f63 *6c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6c766c315f696e *666f004748437a69496e745f6c766c31365f656e747279004748437a69494f426173655f446976 *69646542795a5a65726f5f7374617469635f696e666f004748437a69426173655f7a644c723266 *336c766c325f656e74727900546578747a695072657474795072696e747a69487567686573504a *5f72656e6465725f656e747279004748437a6953686f775f7a647773686f774c6974436861725f *696e666f00436f6e74726f6c7a694d6f6e61645f6c6966744d5f656e747279005f5f737467696e *69745f446973747269627574696f6e7a6956657273696f6e5f00446973747269627574696f6e7a *6953657475705f7061727365436f6e666967757265417267735f636c6f73757265004748437a69 *494f426173655f6861427566666572735f636c6f73757265004748437a69426173655f6c766c31 *5f656e747279004748437a69546f7048616e646c65725f7a644c7233376d6c766c31315f656e74 *727900546578747a69526561647a694c65785f53796d626f6c5f7374617469635f696e666f0044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f7a6467746f5061727365725f *656e747279004748437a694e756d5f6c766c31305f636c6f73757265004748437a69496e745f73 *69676e756d325f656e74727900446174617a695475706c655f5a34545f7374617469635f656e74 *7279007374675f73656c5f31345f7570645f696e666f004748437a6953686f775f6132325f636c *6f73757265004748437a6953686f775f6137365f636c6f7375726500446973747269627574696f *6e7a69436f6d7061747a6952656164505f636861725f656e74727900446973747269627574696f *6e7a69436f6d7061747a6952656164505f63686f6963655f636c6f73757265007274735f676574 *496e74333200546578747a69526561647a694c65785f7a644c723541686c766c3131355f636c6f *73757265004748437a69426173655f7a657a655f696e666f004748437a69526561645f6c766c32 *355f636c6f737572650053797374656d7a69506f7369787a6954797065735f7a64664571434d6f *64655f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f4f746865724c *6963656e73655f7374617469635f656e74727900676574416c6c6f636174696f6e73004748437a *694e756d5f7a644c7232787a7a6c766c345f696e666f0053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c32375f736c6f77005f5f737467696e69745f4748437a *6953545f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a *6467746f45786563757461626c655f696e666f004748437a694e756d5f4a7a685f636f6e5f696e *666f00446973747269627574696f6e7a694765744f70745f456e644f664f7074735f7374617469 *635f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f4275696c64496e666f5f696e666f00446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f77726974655061636b6167654465736372697074696f6e5f696e666f *00756e736166655468617741727261797a685f66617374007374675f4d55545f4152525f505452 *535f696e666f00446973747269627574696f6e7a6956657273696f6e5f4561726c696572566572 *73696f6e5f696e666f0053797374656d7a694469726563746f72795f7a644c723962457468726f *774572726e6f49664d696e7573317a755f696e666f004748437a69426173655f5a30545f737461 *7469635f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a6467746f5665 *7273696f6e52616e67655f696e666f006765747069644040474c4942435f322e30004748437a69 *4c6973745f7a644c723272676c766c31305f636c6f73757265004748437a694e756d5f656e756d *46726f6d5f656e7472790053797374656d7a694469726563746f72795f6c766c32385f636c6f73 *757265005f44594e414d494300446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f726561645061636b6167654465736372697074696f6e5f737274004748437a69 *526561645f7a646652656164426f6f6c5f636c6f7375726500446973747269627574696f6e7a69 *4c6963656e73655f425344345f7374617469635f656e74727900546578747a6950726574747950 *72696e747a69487567686573504a5f456d7074795f7374617469635f696e666f00546578747a69 *526561647a694c65785f7a644c723577546135375f636c6f737572650044697374726962757469 *6f6e7a6953657475705f7a646766726f6d466c61675f656e747279007374675f73656c5f335f75 *70645f656e747279004748437a69576f72645f7369676e756d335f696e666f0044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f6c6963656e736546696c655f69 *6e666f007374675f626c6f636b4173796e63457863657074696f6e737a685f7265745f656e7472 *7900446174617a695479706561626c655f7a644c727864686173684b505f656e74727900446174 *617a694569746865725f4c6566745f7374617469635f656e74727900446973747269627574696f *6e7a6953657475705f57697468436f6d70696c65725f636f6e5f696e666f00546578747a695072 *657474795072696e747a69487567686573504a5f687365705f696e666f00546578747a69526561 *647a694c65785f7a644c7235786e6136325f696e666f005f5f737467696e69745f53797374656d *7a69506f7369787a695479706573005f5f737467696e69745f53797374656d7a69506f7369787a *69556e697374645f004748437a694c6973745f7a644c7232726f6c766c31345f656e7472790073 *74675f7570645f6672616d655f355f72657400446174617a69486173685461626c655f68617368 *537472696e675f696e666f00446973747269627574696f6e7a69436f6d7061747a695265616450 *5f4765745f696e666f004748437a6948616e646c655f6c766c35325f636c6f7375726500446973 *747269627574696f6e7a695061636b6167654465736372697074696f6e5f45786563757461626c *655f7374617469635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f *637a75726d6469725f696e666f00446973747269627574696f6e7a6950617273655574696c735f *6669656c6453686f775f656e747279004748437a69494f5f68476574436f6e74656e74735f696e *666f00546578747a69526561647a694c65785f7a644c72357542785f636c6f73757265005f5f73 *7467696e69745f53797374656d7a69436d645f004748437a69494f5f7a644c7239667a7a6c766c *31325f656e747279004748437a69576f72645f7a657a65345f696e666f00446973747269627574 *696f6e7a695061636b6167655f70617273655061636b61676549645f7372740044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f6275696c64496e666f5f656e74 *727900446973747269627574696f6e7a6953657475705f5072656669785f656e74727900446973 *747269627574696f6e7a6953696d706c657a695574696c735f66696e645061636b616765446573 *635f73727400446973747269627574696f6e7a69436f6d7061747a6952656164505f656e644279 *315f696e666f004748437a695265616c5f7a647773686f7773507265635f696e666f004748437a *69456e756d5f7a644c7232616a6c766c31375f696e666f004748437a694572725f6c766c375f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f637a7563686d6f645f *636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f686f6d65706167655f636c6f73757265005f5f737467696e69745f44697374726962757469 *6f6e7a69457874656e73696f6e5f00446174617a694c6973745f66696e645f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f4765745f7374617469635f656e *74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f656e644279315f *656e74727900546578747a69526561647a694c65785f7a644c7235777a7a6c766c33385f696e66 *6f00546578747a69526561647a694c65785f7a644c723573526c766c355f636c6f737572650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f4c6f6f6b5f696e666f004748 *437a69494f426173655f44697669646542795a5a65726f5f636c6f73757265004748437a695265 *61645f6c6973745f636c6f7375726500446973747269627574696f6e7a6950617273655574696c *735f7a6467746f5374616e7a7a614669656c645f656e74727900446973747269627574696f6e7a *6953657475705f7a6467746f436f6e666967466c6167735f656e7472790053797374656d7a6950 *6f7369787a69496e7465726e616c735f7a644c7237566d6c766c335f636c6f7375726500466f72 *6569676e7a694d61727368616c7a69416c6c6f635f7a64776363616c6c325f656e747279004748 *437a6953686f775f5a434453686f775f636f6e5f656e747279004748437a69494f426173655f55 *7365724572726f725f7374617469635f696e666f005f5f676d707a5f6469766578616374007374 *675f61705f385f7570645f656e74727900446973747269627574696f6e7a69436f6d7061747a69 *46696c65506174685f6a6f696e50617468735f73727400446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f7061727365486f6f6b65644275696c64496e666f5f69 *6e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *6645714275696c64496e666f5f636c6f7375726500446973747269627574696f6e7a694765744f *70745f6765744f70745f696e666f004748437a69526561645f7a6473726561644c697374507265 *6344656661756c74315f636c6f737572650053797374656d7a694469726563746f72795f7a644c *7239637166696c654e616d65456e64436c65616e315f656e747279004748437a69496e745f7175 *6f74325f636c6f73757265004748437a695265616c5f7a6466496e74656772616c496e745f636c *6f73757265004748437a69456e756d5f656e756d46726f6d5468656e546f335f696e666f004469 *73747269627574696f6e7a6950617273655574696c735f5374616e7a7a614669656c645f636f6e *5f696e666f006973466c6f61744e614e00446973747269627574696f6e7a69436f6d7061747a69 *52656164505f6d616e7954696c6c5f696e666f004748437a69494f426173655f7a737a65355f65 *6e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73 *686f77486f6f6b65644275696c64496e666f5f656e74727900446973747269627574696f6e7a69 *53696d706c657a695574696c735f6765744f7074696f6e7346726f6d536f757263655f73727464 *00446973747269627574696f6e7a694765744f70745f4e6f4172675f636c6f7375726500474843 *7a69494f5f7a644c7239664a7a6477726561644368756e6b5f636c6f7375726500546578747a69 *526561647a694c65785f7a644c72357a7a6c7833375f636c6f7375726500546578747a69526561 *647a694c65785f7a644c723578356135395f656e747279007374675f7570645f6672616d655f37 *5f726574005f5f737467696e69745f4748437a69456e756d5f00446973747269627574696f6e7a *6953657475705f70617273655265676973746572417267735f656e747279004748437a69546f70 *48616e646c65725f7a644c723337716c766c31335f696e666f00546578747a69526561647a694c *65785f7a644c7235744a6133305f636c6f737572650053797374656d7a69494f7a694572726f72 *5f7472795f656e747279007374675f73656c5f355f6e6f7570645f696e666f00446174617a694d *617962655f7a644c7252426c766c5f656e7472790053797374656d7a69436d645f7468726f7745 *72726e6f49664d696e7573315f696e666f005f5f737467696e69745f53797374656d7a69446972 *6563746f727900546578747a69526561647a694c65785f7a644c723576666134305f656e747279 *004748437a69546f7048616e646c65725f7a644c723337326c766c325f656e747279004748437a *69494f426173655f4275666665724c697374436f6e735f7374617469635f696e666f0044617461 *7a694d617962655f6c766c315f656e747279004748437a6948616e646c655f7a644c724a397374 *647a75666c6167735f656e747279006c6f636b46696c650053797374656d7a69457869745f6c76 *6c335f656e74727900466f726569676e7a69437a69537472696e675f7a64777065656b43537472 *696e675f636c6f73757265005f5f737467696e69745f4748437a694c6973745f00446973747269 *627574696f6e7a694765744f70745f4f70744172675f656e747279004748437a69526561645f63 *686f6f73655f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f *61335f696e666f004748437a69426173655f7a644c723265586c766c5f636c6f73757265004748 *437a6948616e646c655f6f70656e46696c655f656e747279005f5f737467696e69745f466f7265 *69676e7a694d61727368616c007374675f61705f70705f696e666f0074616b654d5661727a685f *6661737400446973747269627574696f6e7a6953657475705f7a64664571436f6e666967466c61 *67735f636c6f73757265004748437a69494f426173655f556e737570706f727465644f70657261 *74696f6e5f7374617469635f656e747279004748437a6948616e646c655f7a644c726259786c76 *6c32325f656e74727900466f726569676e7a6953746f7261626c655f706f6c797a7573697a7a65 *4f66325f636c6f7375726500446973747269627574696f6e7a694765744f70745f4e6f4172675f *696e666f00446174617a695475706c655f5a34545f636f6e5f656e747279004469737472696275 *74696f6e7a6950617273655574696c735f7a6467746f504572726f725f696e666f005379737465 *6d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33355f696e666f00474843 *7a6948616e646c655f7a6477666c75736857726974654275666665725f696e666f00446174617a *694c6973745f756e776f7264735f636c6f7375726500446973747269627574696f6e7a69536574 *75705f476863466c61675f7374617469635f696e666f007374675f424c41434b484f4c455f696e *666f004748437a69426173655f4c545f7374617469635f696e666f0053797374656d7a69506f73 *69787a69496e7465726e616c735f7a64776363616c6c37305f696e666f004748437a6953686f77 *5f73686f774c6973745f696e666f0053797374656d7a69456e7669726f6e6d656e745f67657441 *7267735f636c6f73757265004748437a695265616c5f6469764d6f64325f656e74727900474843 *7a695265616c5f72656d325f696e666f004748437a69436f6e635f746872656164576169745772 *6974655f696e666f004748437a694c6973745f7a6477627265616b5f656e747279004748437a69 *48616e646c655f64735f636c6f73757265004748437a694c6973745f7a7a697057697468335f63 *6c6f73757265005f5f737467696e69745f53797374656d7a69506f7369787a694469726563746f *7279004748437a6953686f775f6137365f656e74727900546578747a695072657474795072696e *747a69487567686573504a5f546578744265736964655f7374617469635f656e74727900537973 *74656d7a69494f5f7265616446696c655f696e666f00546578747a69526561647a694c65785f7a *644c723576396133395f636c6f7375726500546578747a69526561647a694c65785f7a644c7235 *77337831345f636c6f7375726500546578747a69526561647a694c65785f7a644c723576766c76 *6c32375f696e666f007374675f6571496e743634007374675f6d696e7573496e74363400474843 *7a6953686f775f7a64646d73686f775f696e666f0053797374656d7a69506f7369787a6946696c *65735f7468726f774572726e6f49664d696e7573317a755f696e666f0044697374726962757469 *6f6e7a6953657475705f636d644465736372697074696f6e5f656e747279004748437a69576f72 *645f7a644c723943616c766c31335f636c6f7375726500446973747269627574696f6e7a69436f *6d7061747a6952656164505f636f756e745f656e7472790053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c32365f736c6f7700546578747a69526561647a694c *65785f6c766c375f636c6f7375726500446973747269627574696f6e7a694765744f70745f4f70 *745f636f6e5f696e666f00546578747a69526561647a694c65785f7a644c723578686136315f69 *6e666f004748437a695265616c5f646976315f656e747279004748437a6948616e646c655f7772 *6974655261774275666665725f696e666f005f5f737467696e69745f4748437a69426173655f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f737472696e675f636c6f73 *75726500446973747269627574696f6e7a6953657475705f706172736552656769737465724172 *67735f636c6f7375726500546578747a69526561647a694c65785f7a644c723578746136335f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a644c733869727361 *745f656e747279004748437a69426173655f437a685f7374617469635f696e666f004748437a69 *4e756d5f75707a7566625f696e666f004748437a69496e745f6e6567617465325f636c6f737572 *6500546578747a695072657474795072696e747a69487567686573504a5f7a644c723467556265 *73696465315f636c6f73757265004748437a69526561645f706172656e5f656e747279005f5f73 *7467696e69745f466f726569676e7a694d61727368616c5f00446973747269627574696f6e7a69 *4c6963656e73655f7a6467746f4c6963656e73655f656e747279004748437a6948616e646c655f *6c766c37325f656e747279004748437a69456e756d5f5a4344456e756d5f636f6e5f696e666f00 *696e746572727570746564007374675f756e636865636b65644953686966745241363400474843 *7a694e756d5f656e756d46726f6d5468656e5f656e74727900446174617a694569746865725f52 *696768745f7374617469635f696e666f004748437a69576f72645f7a64646d73686f775f656e74 *727900546578747a69526561647a694c65785f7a644c7235757a7a6c766c31375f636c6f737572 *65004748437a695265616c5f71756f74325f656e747279004748437a69546f7048616e646c6572 *5f7a644c723337346c766c335f696e666f00446973747269627574696f6e7a6953657475705f7a *646766726f6d436d645f696e666f004748437a69426173655f6765745461675f636c6f73757265 *004748437a6953686f775f6136305f636c6f73757265005f5f6465636f6465446f75626c650054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467636c766c3130 *5f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f6465666175 *6c74486f6f6b65645061636b616765446573635f636c6f73757265004748437a6953686f775f73 *686f774c697374315f636c6f73757265004748437a69494f426173655f615f636c6f7375726500 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35385f656e74 *7279004748437a69526561645f726561645f636c6f73757265005f5f737467696e69745f446973 *747269627574696f6e7a694d616b6500466f726569676e7a69437a694572726f725f7468726f77 *4572726e6f496652657472794d6179426c6f636b5f696e666f004748437a69494f426173655f6c *766c32375f636c6f73757265004748437a69426173655f426f6f6c5f636c6f737572655f74626c *004748437a69496e745f746f526174696f6e616c325f696e666f00446973747269627574696f6e *7a69436f6d7061747a6952656164505f4765745f7374617469635f696e666f0044697374726962 *7574696f6e7a694765744f70745f456e644f664f7074735f7374617469635f696e666f00737467 *5f67635f756e62785f72315f726574004748437a69496e745f746f496e7465676572325f696e66 *6f00446973747269627574696f6e7a6953657475705f55736572466c61675f7374617469635f65 *6e747279007274735f6d6b466c6f617400546578747a695072657474795072696e747a69487567 *686573504a5f7a644c723467517a64776e696c41626f76654e6573745f656e7472790044617461 *7a695475706c655f7a646645715a32545f636c6f73757265004748437a6953686f775f6134365f *696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f7a64 *6766726f6d436c61737369666965645f696e666f004748437a69546f7048616e646c65725f7a64 *4c723337346c766c335f636c6f73757265007374675f7570645f6672616d655f335f7265740046 *6f726569676e7a69437a694572726f725f7a64776363616c6c325f696e666f00546578747a6950 *72657474795072696e747a69487567686573504a5f7a6477736570315f736c6f77004748437a69 *496e745f71756f74325f656e747279004748437a69494f426173655f4275666665724c69737443 *6f6e735f636f6e5f656e747279004748437a69494f5f7a644c723966786c766c31315f636c6f73 *757265004748437a69457863657074696f6e5f6361746368457863657074696f6e5f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6973506174685365 *70617261746f725f696e666f00446174617a695479706561626c655f7a644c72364f346c766c34 *5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a75524457525f *696e666f004748437a69494f426173655f556e736174697366696564436f6e73747261696e7473 *5f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061747a6944697265 *63746f72795f636f707946696c655f73727400546578747a69506172736572436f6d62696e6174 *6f72737a6952656164505f4765745f7374617469635f656e74727900446973747269627574696f *6e7a694c6963656e73655f4c47504c5f7374617469635f696e666f00446973747269627574696f *6e7a694765744f70745f4f70744572725f656e74727900546578747a69506172736572436f6d62 *696e61746f72737a6952656164505f46696e616c5f7374617469635f696e666f004748437a694c *6973745f726576657273655f696e666f005f5f737467696e69745f446174617a695475706c655f *00446973747269627574696f6e7a6956657273696f6e5f7a64665479706561626c655665727369 *6f6e5f7372740053797374656d7a69506f7369787a6954797065735f7a64664f7264435069645f *636c6f73757265005f5f737467696e69745f446174617a69486173685461626c655f004748437a *6948616e646c655f6131375f636c6f73757265005f5f737467696e69745f446973747269627574 *696f6e7a6950726550726f636573737a69556e6c69745f004748437a69546f7048616e646c6572 *5f7a644c7233376b6c766c31305f636c6f7375726500546578747a695072657474795072696e74 *7a69487567686573504a5f7a647a645f636c6f7375726500616e795573657248616e646c657273 *004748437a695265616c5f6576656e5f636c6f73757265004748437a69496e745f676f5f696e66 *6f0072617753797374656d00546578747a69526561647a694c65785f5261745f636f6e5f696e66 *6f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f63617465 *676f72795f636c6f7375726500446973747269627574696f6e7a6953657475705f7a6467746f43 *6f6d70696c6572466c61766f725f656e747279004748437a69494f5f7a6477706f6c797a756275 *6657726974655f656e747279004748437a694c6973745f7a644c723272536c766c32395f656e74 *7279004748437a6948616e646c655f6765744275666665725f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f6c6962726172795f696e666f0044 *6973747269627574696f6e7a6950617273655574696c735f6669656c644e616d655f656e747279 *00546578747a69526561647a694c65785f7a644c7235763578345f636c6f73757265004748437a *69456e756d5f656664496e745f696e666f00546578747a695072657474795072696e747a694875 *67686573504a5f506167654d6f64655f7374617469635f656e74727900466f726569676e7a694d *61727368616c7a69416c6c6f635f7a64776363616c6c325f696e666f004748437a69494f426173 *655f4e6f6e5465726d696e6174696f6e5f7374617469635f696e666f0044697374726962757469 *6f6e7a6950617273655574696c735f50617273654661696c65645f696e666f004748437a69496e *745f7a64777a657a655f736c6f7700446973747269627574696f6e7a694d616b655f6465666175 *6c744d61696e4e6f526561645f636c6f73757265004748437a694e756d5f7a644c723278746c76 *6c315f636c6f7375726500446973747269627574696f6e7a6953657475705f4c6966745f656e74 *7279007374675f73656c5f31305f7570645f696e666f007374675f63617463685f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f667365705f636c6f73757265 *007374675f61705f707070705f72657400546578747a695072657474795072696e747a69487567 *686573504a5f7a644c7234674d6f6e654c696e6572315f696e666f00446973747269627574696f *6e7a69436f6d7061747a6952656164505f636861696e6c315f7372740073617665645f7465726d *696f7300546578747a69526561647a694c65785f7a644c723575707a6477667261635f636c6f73 *757265004748437a69526561645f63686f6f73655f656e747279004748437a69494f426173655f *756e73616665506572666f726d494f5f696e666f00446973747269627574696f6e7a6950617273 *655574696c735f4e6f50617273655f636f6e5f656e747279007374675f706c7573496e74363400 *466f726569676e7a694d61727368616c7a6941727261795f6c766c5f636c6f7375726500474843 *7a694e756d5f6c766c31315f636c6f73757265004748437a69426173655f69645f696e666f0074 *696d657374616d70004748437a6953686f775f73686f77735f636c6f73757265005f5f73746769 *6e69745f4748437a69457863657074696f6e007374675f73746f705f7468726561645f72657400 *4748437a69556e69636f64655f7a6477697344696769745f656e74727900446973747269627574 *696f6e7a69457874656e73696f6e5f4e6f496d706c696369745072656c7564655f636c6f737572 *6500446973747269627574696f6e7a6956657273696f6e5f7a6467746f56657273696f6e5f636c *6f73757265004748437a69426173655f556e69745f7374617469635f696e666f00446973747269 *627574696f6e7a6950617273655574696c735f7061727365446570656e64656e63795f73727400 *7274735f676574426f6f6c004748437a69494f5f6c766c31355f636c6f73757265005f5f737467 *696e69745f5a434d61696e004748437a69466c6f61745f6c766c315f636c6f7375726500474843 *7a6953686f775f73686f774c6973747a757a755f696e666f004748437a69426173655f72657475 *726e5f696e666f007274735f676574446f75626c65004748437a69546f7048616e646c65725f7a *644c723337756c766c31355f656e747279004748437a6948616e646c655f777269746552617742 *75666665725074725f696e666f007374675f7570645f6672616d655f315f72657400466f726569 *676e7a69437a694572726f725f7468726f774572726e6f496652657472794d6179426c6f636b5f *636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a69526561645072 *65635f72657475726e5f656e7472790077726974654040474c4942435f322e30007374675f6374 *6f695f7265745f565f696e666f004748437a69576f72645f7a64646d73686f774c697374335f63 *6c6f7375726500466f726569676e7a694d61727368616c7a695574696c735f776974684d616e79 *5f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f63686169 *6e6c5f636c6f7375726500446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f6f7074696f6e735f656e747279004748437a695265616c5f5a4344496e7465677261 *6c5f636f6e5f656e747279004748437a69496e745f7a64777a64646d656e756d46726f6d546865 *6e546f5f636c6f7375726500466f726569676e7a69437a69537472696e675f7769746843537472 *696e675f696e666f00466f726569676e7a694d61727368616c7a695574696c735f776974684d61 *6e795f636c6f73757265005f5f737467696e69745f4748437a694172725f007374675f73656c5f *335f7570645f696e666f004748437a69426173655f5a435f636c6f7375726500696e6974537461 *626c655074725461626c65007374675f776f72643634546f496e743634007374675f63746f695f *7265745f4c315f696e666f0068616e646c655369676e616c73496e546869735468726561640044 *6973747269627574696f6e7a6953657475705f566572626f73655f696e666f004748437a695265 *616c5f7a644c723532316c766c385f636c6f7375726500446973747269627574696f6e7a695365 *7475705f7a6467746f466c61675f636c6f73757265004748437a694e756d5f656e756d44656c74 *61496e746567657246425f636c6f7375726500446973747269627574696f6e7a6953657475705f *48656c69756d5f7374617469635f656e74727900546578747a69526561647a694c65785f7a644c *723578767832395f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946 *696c65506174685f64726f704162736f6c7574655072656669785f656e74727900446973747269 *627574696f6e7a6953657475705f7a646766726f6d436f6e666967466c6167735f636c6f737572 *6500546578747a69526561647a694c65785f7a644c723577706135325f656e747279004748437a *69494f426173655f48616e646c657a757a755f7374617469635f656e74727900546578747a6950 *72657474795072696e747a69487567686573504a5f506167654d6f64655f636c6f737572650054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467656c766c3131 *5f636c6f73757265007374675f73656c5f325f7570645f656e747279004748437a695265616c5f *6131315f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f4275696c64496e666f5f636f6e5f656e74727900446973747269627574696f6e7a6950 *617273655574696c735f7a646766726f6d5374616e7a7a614669656c645f636c6f737572650073 *74675f67635f66315f72657400446973747269627574696f6e7a694765744f70745f4f70744572 *725f636f6e5f696e666f004748437a69576f72645f7a646653686f77576f726433325f636c6f73 *7572650053797374656d7a694469726563746f72795f6c6f6e677a75706174687a7573697a7a65 *5f696e666f00446973747269627574696f6e7a6950617273655574696c735f4e6f50617273655f *636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f70617273654c *6963656e7365515f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f7a64 *67746f457874656e73696f6e5f696e666f00446973747269627574696f6e7a6953696d706c657a *695574696c735f7374726970436f6d6d656e74735f656e747279004748437a6953686f775f7a64 *4c72315a5a466c766c345f656e747279004748437a695061636b5f756e7061636b43537472696e *675f696e666f004748437a695265616c5f61395f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f4e696c41626f76655f636f6e5f656e747279004748437a6952 *65616c5f7a647761335f696e666f00446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f6861734c6962735f636c6f73757265005f5f737467696e69745f5072656c *75646500446973747269627574696f6e7a69457874656e73696f6e5f4172726f77735f73746174 *69635f656e74727900446973747269627574696f6e7a6953657475705f566572626f73655f7374 *617469635f656e747279007374675f61705f375f7570645f656e74727900626c6f636b65645f71 *756575655f746c0053797374656d7a694469726563746f72795f6c766c31325f696e666f004469 *73747269627574696f6e7a6953657475705f57697468416c65785f656e74727900546578747a69 *5072657474795072696e747a69487567686573504a5f7a644c723467656c766c31315f656e7472 *79004748437a6953686f775f7a644c72315a5a426c766c325f656e74727900466f726569676e7a *694d61727368616c7a6941727261795f6c766c5f736c6f7700446973747269627574696f6e7a69 *457874656e73696f6e5f48657265446f63756d656e74735f7374617469635f696e666f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164507265635f7a677a677a655f65 *6e747279004748437a69526561645f726561644c69737444656661756c745f696e666f005f5f68 *73636f72655f72656164646972004748437a694c6973745f7265706c69636174655f656e747279 *005f5f737467696e69745f53797374656d7a69506f7369787a695465726d696e616c5f00474843 *7a69426173655f7a6470314f72645f636c6f737572650072657365744e75727365726965730047 *48437a695265616c5f5a43444672616374696f6e616c5f636f6e5f696e666f0053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c32355f636c6f73757265004748 *437a694572725f6469765a5a65726f4572726f725f696e666f004748437a69496e745f4931367a *685f636f6e5f696e666f00446973747269627574696f6e7a694765744f70745f5265714172675f *696e666f007374675f6172675f6269746d61707300546578747a69526561647a694c65785f7a64 *4c723576706c766c32365f696e666f004748437a69494f426173655f416c726561647945786973 *74735f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f637a75 *6765747069645f656e74727900446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f63536f75726365735f636c6f73757265006d61696e5f74687265616473007374 *72636d704040474c4942435f322e30004748437a6953686f775f6132385f636c6f737572650053 *797374656d7a69436d645f6c766c325f636c6f7375726500446973747269627574696f6e7a6950 *617273655574696c735f6c6973744669656c645f636c6f73757265004748437a69494f42617365 *5f42756666657253746174655f636c6f737572655f74626c004748437a694e756d5f656e756d44 *656c7461546f496e74656765725f656e74727900446973747269627574696f6e7a695365747570 *5f476c6f62616c466c61675f7374617469635f696e666f004748437a6953686f775f61335f636c *6f73757265004748437a69546f7048616e646c65725f7a644c7233376f6c766c31325f656e7472 *790067656e53796d5a68004748437a69556e69636f64655f697355707065725f696e666f004748 *437a694c6973745f7a644c723272796c766c31395f656e747279004748437a69426173655f5a43 *444f72645f7374617469635f656e747279004748437a694572725f7a644c723130726c766c3134 *5f636c6f737572650064655265665765616b7a685f66617374004748437a69496e745f6c766c31 *365f636c6f73757265004748437a69494f426173655f6c766c32385f696e666f004748437a6949 *6e745f626f756e646564456e756d46726f6d5468656e5f696e666f00546578747a69526561647a *694c65785f7a644c723578726c766c34375f696e666f004748437a6948616e646c655f7a644c72 *4a64726561647a75666c6167735f636c6f73757265004748437a69496e745f7a64776469764d6f *64325f636c6f7375726500546578747a69526561647a694c65785f7a644c72354148657461315f *696e666f004748437a694e756d5f6d696e7573496e74656765725f636c6f737572650044697374 *7269627574696f6e7a6953657475705f4e48435f7374617469635f656e747279004748437a6949 *4f5f7a644c72444a685075746342756666657265645f656e74727900446973747269627574696f *6e7a6950617273655574696c735f416d6269676f757350617273655f656e747279004748437a69 *494f426173655f6c766c33365f656e747279004748437a69526561645f6c766c345f636c6f7375 *72650053797374656d7a69506f7369787a6946696c65735f6d6f64696669636174696f6e54696d *655f656e74727900446973747269627574696f6e7a695061636b6167655f7a646766726f6d5061 *636b6167654964656e7469666965725f656e747279004748437a6953686f775f7a64646d73686f *775f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a644c72 *3757436c766c31335f696e666f0053797374656d7a69457869745f61315f656e74727900546578 *747a69526561647a694c65785f4964656e745f7374617469635f696e666f004748437a6948616e *646c655f657272325f636c6f73757265004748437a69496e745f6c766c32365f636c6f73757265 *004748437a69494f5f7a647777726974654c696e65735f696e666f00446973747269627574696f *6e7a694d616b655f64656661756c744d61696e4e6f526561645f7372746400546578747a695265 *61647a694c65785f7a644c723577546135375f656e74727900546578747a69526561647a694c65 *785f7a644c7235746c6131385f636c6f7375726500546578747a695072657474795072696e747a *69487567686573504a5f7a644c723468697365704e42315f656e747279004748437a694c697374 *5f656c656d5f636c6f73757265007374675f73656c5f31305f7570645f656e747279004748437a *694e756d5f75707a756c6973745f636c6f7375726500446973747269627574696f6e7a69507265 *50726f636573737a69556e6c69745f7a6467746f436c61737369666965645f696e666f00737467 *5f61705f335f7570645f696e666f005f5f696e745f656e636f6465466c6f617400466f72656967 *6e7a694d61727368616c7a6941727261795f7a64777065656b41727261795f696e666f00446973 *747269627574696f6e7a69436f6d7061747a6952656164505f4765745f636f6e5f656e74727900 *546578747a69526561647a694c65785f7a644c723576426c766c32385f636c6f73757265004748 *437a69494f426173655f6c766c31395f656e747279004748437a69426173655f7a707a705f656e *74727900446973747269627574696f6e7a694765744f70745f7a6467746f4f70744b696e645f63 *6c6f7375726500636c6f73654040474c4942435f322e300053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c37345f656e74727900546578747a69526561647a69 *4c65785f7a644c723577447832305f636c6f73757265004748437a69494f426173655f53656d69 *436c6f73656448616e646c655f7374617469635f656e747279004748437a694c6973745f6c766c *32305f636c6f7375726500446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f68634f7074696f6e735f696e666f00446973747269627574696f6e7a694c6963656e *73655f7a6466526561644c6963656e73655f636c6f73757265004748437a6953686f775f7a644c *72315a5a446c766c335f656e747279004748437a695265616c5f6c766c395f696e666f00446973 *747269627574696f6e7a69436f6d7061747a6952656164505f7a646646756e63746f7250617273 *65725f696e666f00446174617a695479706561626c655f43616368655f636f6e5f696e666f0044 *6174617a69486173685461626c655f6e65775f696e666f00546578747a69526561647a694c6578 *5f7a644c72357544705f636c6f73757265004748437a69494f426173655f457869744661696c75 *72655f7374617469635f656e747279004748437a69494f426173655f4d5661725f636f6e5f696e *666f004748437a695265616c5f7a64737a64664e756d526174696f5f636c6f7375726500537973 *74656d7a69457869745f6c766c5f636c6f7375726500446973747269627574696f6e7a6953696d *706c657a695574696c735f72617753797374656d457869745f7372740053797374656d7a69506f *7369787a69496e7465726e616c735f61335f636c6f73757265005f5f737467696e69745f446973 *747269627574696f6e7a6953696d706c657a695574696c735f007374675f72656d576f72643634 *00546578747a69526561647a694c65785f7a644c7235767478385f636c6f737572650053797374 *656d7a694469726563746f72795f6c766c31335f696e666f005f5f737467696e69745f4748437a *6953746f7261626c6500546578747a69526561647a694c65785f53796d626f6c5f737461746963 *5f656e747279004748437a69456e756d5f656e756d46726f6d5468656e546f335f636c6f737572 *6500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f65786563 *757461626c65735f636c6f7375726500446174617a695479706561626c655f7a64574b65795072 *5f696e666f004748437a69426173655f5a434445715f636f6e5f656e747279005f66705f687700 *737461745f656e644743004748437a69494f426173655f48617264776172654661756c745f7374 *617469635f656e747279004748437a69426173655f7a64737a64646d6d696e5f636c6f73757265 *004748437a6948616e646c655f68436c6f73655f636c6f7375726500446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f77726974655061636b6167654465736372 *697074696f6e5f636c6f73757265004748437a6948616e646c655f64454641554c547a75425546 *4645527a7553495a5a455f656e747279005f5f737467696e69745f53797374656d7a69506f7369 *785f00446973747269627574696f6e7a694765744f70745f4e6f6e4f70745f636f6e5f696e666f *007374675f666f726365494f5f696e666f00436f6e74726f6c7a694d6f6e61645f7a64776c6966 *744d325f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a *5f7a647a645f656e74727900446973747269627574696f6e7a6953657475705f57697468486164 *646f636b5f636f6e5f656e747279005a434d61696e5f6d61696e5f7372740073797374656d436d *6400446973747269627574696f6e7a6953657475705f636f6e666967486164646f636b5f636c6f *737572650076666f726b4040474c4942435f322e30004748437a694e756d5f696e7432496e7465 *6765725f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a646645714465 *70656e64656e63795f636c6f7375726500546578747a69506172736572436f6d62696e61746f72 *737a6952656164505f646973636172645f636c6f7375726500446174617a694c6973745f6e7562 *5f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *5061636b6167654465736372697074696f6e5f636f6e5f656e747279004748437a69526561645f *7a64646d7265616473507265635f696e666f00446973747269627574696f6e7a6953657475705f *566572626f73655f636f6e5f656e74727900546578747a69526561647a694c65785f7a644c7235 *78666c766c34355f656e74727900446973747269627574696f6e7a6950617273655574696c735f *706172736551756f7465645f656e747279007274735f676574576f72643136004748437a695368 *6f775f6131385f696e666f00446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f6c6962726172795f636c6f7375726500737461745f656e6445786974004748437a *694e756d5f7a64646d73686f775f636c6f73757265005f5f737467696e69745f4748437a695374 *61626c6500546578747a69526561647a694c65785f7a644c723573506c766c345f656e74727900 *4748437a69494f5f7a644c723967726c617a7a79526561644275666665726564315f636c6f7375 *726500446973747269627574696f6e7a69436f6d7061747a6952656164505f656e644279315f73 *7274004748437a69494f426173655f627566525074725f656e747279004748437a695265616c5f *6c766c31365f636c6f73757265004748437a69426173655f6d696e7573496e745f656e74727900 *4748437a69546f7048616e646c65725f7a644c723337676c766c385f696e666f004748437a6945 *72725f756e74616e676c655f696e666f00446973747269627574696f6e7a6953657475705f7a64 *6653686f77466c61675f636c6f7375726500466f726569676e7a69437a694572726f725f746872 *6f774572726e6f5f636c6f7375726500446973747269627574696f6e7a6953657475705f636d64 *416374696f6e5f656e74727900446973747269627574696f6e7a6953696d706c657a695574696c *735f66696e645061636b616765446573635f636c6f7375726500546578747a69526561647a694c *65785f7a644c723578506c766c35315f696e666f004748437a69426173655f7a657a65345f696e *666f00466f726569676e7a694d61727368616c7a69416c6c6f635f7a6477616c6c6f6361427974 *65735f696e666f004748437a694c6973745f656c656d5f656e7472790044697374726962757469 *6f6e7a6953657475705f5265676973746572436d645f636f6e5f696e666f004748437a69496e74 *5f6c766c32395f696e666f004748437a69494f426173655f757365724572726f725f696e666f00 *4748437a694e756d5f636f6d706172655f696e666f004748437a69494f426173655f556e736174 *697366696564436f6e73747261696e74735f636c6f7375726500706572726f724040474c494243 *5f322e3000546578747a69526561647a694c65785f7a644c723541786c766c3132335f636c6f73 *7572650053797374656d7a69506f7369787a69496e7465726e616c735f637a756f70656e646972 *5f696e666f00546578747a69526561647a694c65785f7a644c723579336c766c35365f636c6f73 *75726500546578747a69526561647a694c65785f7a644c7235776e6c766c33365f656e74727900 *53797374656d7a69506f7369787a69496e7465726e616c735f526567756c617246696c655f7374 *617469635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c35335f636c6f7375726500446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f7a646766726f6d5061636b6167654465736372697074696f6e5f696e666f *004748437a694e756d5f7a64646d6d61785f636c6f73757265007374675f696e746572705f636f *6e737472385f656e747279005f5f737467696e69745f53797374656d7a69457869745f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f7a677a677a655f656e7472 *79004748437a694e756d5f646e7a7566625f656e747279004748437a694e756d5f636f6d706172 *655f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f6578654d6f64756c65735f73727400546578747a695072657474795072696e747a69487567 *686573504a5f7a6477736570315f636c6f73757265004748437a69426173655f636f6e73745f63 *6c6f73757265004748437a69494f5f7a644c723967707a64776c617a7a79526561644861766542 *75666665725f656e74727900446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f636f707972696768745f636c6f73757265004748437a694e756d5f71756f745265 *6d496e74656765725f656e747279004748437a695265616c5f71756f7452656d325f696e666f00 *4748437a6953686f775f7a644c72315a5a506c766c395f656e74727900736967696e7465727275 *70744040474c4942435f322e30004748437a69496e745f636f6d70617265325f656e7472790053 *797374656d7a69506f7369787a6954797065735f7a64664e756d435069645f636c6f7375726500 *7274735f6576616c494f00446174617a695479706561626c655f7a644c72364f4f74626c315f69 *6e666f007374675f776f72643634546f576f7264004748437a69496e745f73756363325f656e74 *727900546578747a69526561647a694c65785f7a644c72684b6c65784e756d6265725f656e7472 *79004748437a694e756d5f7369676e756d315f696e666f004748437a69426173655f7a645f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6578 *7472614c6962446972735f656e74727900546578747a69526561647a694c65785f7a644c723578 *336c766c34335f656e747279004748437a69426173655f7a6477676364496e745f636c6f737572 *6500446973747269627574696f6e7a69436f6d7061747a6952656164505f46696e616c5f636f6e *5f696e666f00446973747269627574696f6e7a695061636b6167655f7a646653686f775061636b *6167654964656e7469666965725f737274004748437a69526561645f7a64665265616443686172 *5f636c6f7375726500546578747a69526561647a694c65785f496e745f7374617469635f696e66 *6f004748437a69426173655f556e69745f636c6f737572655f74626c0044697374726962757469 *6f6e7a69457874656e73696f6e5f466c657869626c65436f6e74657874735f636c6f7375726500 *546578747a69526561647a694c65785f7a644c723574746132325f636c6f73757265004748437a *69494f426173655f48616e646c657a757a755f7374617469635f696e666f0053797374656d7a69 *4469726563746f72795f6c766c335f636c6f7375726500667072696e74664040474c4942435f32 *2e3000636f6d70616374004748437a69494f426173655f6661696c494f5f696e666f00666f726b *4040474c4942435f322e30007274735f6576616c4c617a79494f004748437a694c6973745f7a64 *4c723272676c766c31305f696e666f00446973747269627574696f6e7a6953657475705f436f6d *70696c65725f696e666f00446973747269627574696f6e7a694765744f70745f7a646766726f6d *4f707444657363725f656e747279004748437a69426173655f74696d6573496e745f696e666f00 *7374675f464f524549474e5f696e666f004748437a6953686f775f6132355f636c6f7375726500 *446973747269627574696f6e7a69436f6d7061747a6952656164505f6d616e795f737274007274 *735f676574576f726438007374675f6e65576f72643634004748437a694e756d5f7a6466457149 *6e74656765725f636c6f73757265004748437a69426173655f5a43444d6f6e61645f636f6e5f69 *6e666f004748437a6953686f775f6135305f636c6f73757265005f5f737467696e69745f446174 *617a69576f72645f00446973747269627574696f6e7a694765744f70745f7a646766726f6d4f70 *744b696e645f696e666f00676574656e764040474c4942435f322e3000446174617a6945697468 *65725f52696768745f636f6e5f656e74727900466f726569676e7a69437a694572726f725f7468 *726f774572726e6f49664d696e75733152657472797a755f656e747279004748437a69496e745f *746f456e756d5f696e666f00546578747a695072657474795072696e747a69487567686573504a *5f7a644c7234676d6c766c31355f636c6f7375726500446973747269627574696f6e7a69476574 *4f70745f4e6f6e4f70745f636c6f73757265004748437a69426173655f646976496e747a685f69 *6e666f005f5f737467696e69745f53797374656d7a69506f7369787a6946696c6573004748437a *69426173655f7a64737a64646d7a737a655f656e747279005f5f737467696e69745f546578747a *69506172736572436f6d62696e61746f72737a695265616450726563004748437a69456e756d5f *65666474496e745f636c6f7375726500546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c7234676b6c766c31345f636c6f7375726500446973747269627574696f6e7a *6950617273655574696c735f6d794572726f725f636c6f73757265004748437a6948616e646c65 *5f7a6477666c757368526561644275666665725f696e666f004748437a695265616c5f7a657a65 *5f636c6f7375726500446973747269627574696f6e7a6953657475705f496e7374616c6c436d64 *5f636f6e5f696e666f004748437a694e756d5f707265645f656e74727900546578747a69507265 *7474795072696e747a69487567686573504a5f7a644c72346861676f325f696e666f004748437a *69526561645f61355f656e74727900446174617a694d617962655f6d61704d617962655f696e66 *6f00446973747269627574696f6e7a695061636b6167655f5061636b6167654964656e74696669 *65725f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6f7a754352 *4541545f656e747279004748437a69494f426173655f496e76616c6964417267756d656e745f73 *74617469635f656e747279004748437a6953686f775f73686f7773507265635f656e7472790054 *6578747a69526561647a694c65785f7a644c723576646c766c32345f696e666f00446973747269 *627574696f6e7a69457874656e73696f6e5f526573747269637465645479706553796e6f6e796d *735f7374617469635f656e7472790063616c634e6565646564005f5f696e745f656e636f646544 *6f75626c65004748437a69494f426173655f416c72656164794578697374735f7374617469635f *656e747279004748437a69494f5f68476574436f6e74656e74735f636c6f737572650044697374 *7269627574696f6e7a6953657475705f7a6467746f436d645f656e747279007374675f74696d65 *73496e743634005f5f737467696e69745f466f726569676e7a694d61727368616c7a695574696c *73004748437a695265616c5f7a647761365f656e7472790066666c7573684040474c4942435f32 *2e30004748437a69426173655f7a657a65315f696e666f00446973747269627574696f6e7a6943 *6f6d7061747a6952656164505f7a646766726f6d5061727365725f696e666f00546578747a6952 *6561647a694c65785f7a644c723574506133335f636c6f73757265004748437a694c6973745f65 *6c656d5f696e666f004748437a69526561645f7a6466526561645a4d5a4e5f656e747279004748 *437a694c6973745f72657065617446425f636c6f737572650053797374656d7a69506f7369787a *6946696c65735f73657446696c654d6f64655f656e747279005f5f737467696e69745f53797374 *656d7a69494f7a69556e736166655f007374675f696e69745f72657400546578747a6952656164 *7a694c65785f7a644c723575766c6974335f636c6f73757265006465636f6465446f75626c657a *685f66617374005f5f737467696e69745f446973747269627574696f6e7a695061636b61676500 *4748437a69426173655f6765496e745f656e747279004748437a69537461626c655f537461626c *655074725f636f6e5f656e74727900446973747269627574696f6e7a6950726550726f63657373 *7a69556e6c69745f756e6c69745f656e7472790053797374656d7a694469726563746f72795f72 *656d6f76654469726563746f72795f636c6f73757265004748437a69426173655f7a64646d7a67 *5f696e666f00446973747269627574696f6e7a6953657475705f5769746848617070795f636f6e *5f696e666f004748437a694c6973745f7a644c723272756c766c31375f656e747279004748437a *69494f5f7a644c7239663961355f656e747279004748437a6948616e646c655f7a644c724a6872 *777a75666c6167735f696e666f004748437a69526561645f6c6973745f696e666f004469737472 *69627574696f6e7a69457874656e73696f6e5f4350505f7374617469635f656e74727900474843 *7a69576f72645f5733327a685f636f6e5f656e747279007374675f67635f66756e5f7265740047 *48437a69526561645f7a64737a64646d726561647350726563325f636c6f7375726500436f6e74 *726f6c7a694d6f6e61645f7768656e5f636c6f737572650053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c35385f636c6f73757265004748437a69496e745f62 *6f756e646564456e756d46726f6d5f656e74727900446174617a69486173685461626c655f7a64 *77696e736572745f696e666f00446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f72656164486f6f6b65644275696c64496e666f5f636c6f73757265004748437a *694e756d5f6e6567617465496e74656765725f696e666f004748437a69426173655f7a64664571 *5a4d5a4e5f696e666f007374675f454e445f455843455054494f4e5f4c4953545f636c6f737572 *6500446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f436f6d6d65 *6e745f7374617469635f696e666f0053797374656d7a694469726563746f72795f6c766c32325f *696e666f00546578747a69526561647a694c65785f7a644c723541316c766c3130375f636c6f73 *7572650053797374656d7a69494f5f7265616446696c655f656e747279004748437a6948616e64 *6c655f6f70656e46696c655f636c6f7375726500446973747269627574696f6e7a695061727365 *5574696c735f50617273654661696c65645f7374617469635f656e747279004469737472696275 *74696f6e7a6953657475705f636f6e6669674863506b675f656e74727900466f726569676e7a69 *53746f7261626c655f706f6c797a75706f6b65427974654f6666325f696e666f004748437a6942 *6173655f496e6c5f636f6e5f656e74727900446973747269627574696f6e7a69457874656e7369 *6f6e5f657874656e73696f6e73546f48756773466c61675f737274004748437a6948616e646c65 *5f77726974655261774275666665725f636c6f7375726500436f6e74726f6c7a694d6f6e61645f *5a43444d6f6e6164506c75735f7374617469635f656e747279004748437a69426173655f7a6464 *6d7a6c5f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f6465 *6661756c745061636b616765446573635f696e666f004748437a69496e745f7a74325f656e7472 *7900446973747269627574696f6e7a6953657475705f636f6d70696c6572506b67546f6f6c5f63 *6c6f73757265004748437a69494f426173655f6132325f656e747279004748437a6953686f775f *73686f777350726563345f656e74727900446973747269627574696f6e7a695061727365557469 *6c735f5374616e7a7a614669656c645f636f6e5f656e7472790053797374656d7a69506f736978 *7a69496e7465726e616c735f53747265616d5f7374617469635f696e666f004469737472696275 *74696f6e7a6953657475705f496e73745072656669785f636c6f73757265004748437a69526561 *6c5f7a647761315f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a *6466457156657273696f6e52616e67655f636c6f73757265005f5f737467696e69745f53797374 *656d7a69506f7369787a69557365725f00436f6e74726f6c7a694d6f6e61645f5a43444d6f6e61 *64506c75735f636f6e5f696e666f007374675f626c6f636b4173796e63457863657074696f6e73 *7a685f7265745f696e666f004748437a694c6973745f7a644c723271456c766c5f656e74727900 *446973747269627574696f6e7a69457874656e73696f6e5f526563757273697665446f5f737461 *7469635f656e747279004748437a69494f5f7a647768507574436861725f696e666f0044697374 *7269627574696f6e7a69457874656e73696f6e5f496d706c69636974506172616d735f636c6f73 *757265004748437a694e756d5f7a6477696e746567657232496e745f656e747279004469737472 *69627574696f6e7a6956657273696f6e5f73686f7756657273696f6e52616e67655f656e747279 *004748437a69494f426173655f627566575074725f696e666f004748437a694e756d5f7a64646d *6d61785f656e74727900546578747a69526561647a694c65785f7a644c723577787831395f636c *6f73757265004748437a694e756d5f7a644c723278786c766c335f696e666f0044697374726962 *7574696f6e7a6956657273696f6e5f4561726c69657256657273696f6e5f636f6e5f656e747279 *004748437a69494f5f7a647768507574436861725f636c6f73757265004748437a694e756d5f65 *6e756d44656c7461546f496e74656765725f636c6f73757265004748437a694c6973745f7a6477 *7370616e5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946696c65 *506174685f6a6f696e46696c654e616d655f696e666f00446973747269627574696f6e7a695365 *7475705f4275696c64436d645f636c6f7375726500756e6c696e6b4040474c4942435f322e3000 *4748437a6953686f775f6c766c31345f636c6f73757265004748437a69426173655f7a64664f72 *64496e745f636c6f737572650072756e5f71756575655f686400446973747269627574696f6e7a *6953657475705f636f6e6669674863466c61766f725f656e7472790053797374656d7a69506f73 *69787a69496e7465726e616c735f7a64776363616c6c32375f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f45786563757461626c655f656e74 *727900446973747269627574696f6e7a6953657475705f5344697374436d645f7374617469635f *656e747279004748437a6948616e646c655f7a644c7262583761325f696e666f004748437a6952 *65616c5f7a64665265616c496e74656765725f636c6f73757265004748437a69556e69636f6465 *5f7a64776973416c7068614e756d5f696e666f00446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e5f73796e6f707369735f696e666f007374675f61705f7070765f *696e666f00546578747a69526561647a694c65785f7a644c723577686c766c33355f636c6f7375 *7265004748437a695265616c5f6c766c31375f656e747279004748437a6948616e646c655f6d6b *53746448616e646c655f696e666f00446973747269627574696f6e7a6950726550726f63657373 *7a69556e6c69745f496e636c7564655f636c6f7375726500446973747269627574696f6e7a6947 *65744f70745f7a646766726f6d41726744657363725f636c6f73757265004d61696e5f6d61696e *5f656e747279004748437a6953686f775f7a644c72315a5a526c766c31305f636c6f7375726500 *4748437a694e756d5f706c7573496e74656765725f696e666f0053797374656d7a69506f736978 *7a69496e7465726e616c735f7a64776363616c6c36375f656e747279004748437a69526561645f *6c766c395f696e666f004748437a69456e756d5f73756363355f636c6f73757265005f5f66696e *695f61727261795f656e64004748437a69494f426173655f5265616448616e646c655f73746174 *69635f656e747279004748437a69466f726569676e5074725f4d616c6c6f635074725f636f6e5f *656e74727900446973747269627574696f6e7a6953657475705f70617273655265676973746572 *417267735f696e666f00546578747a69526561647a694c65785f7a644c723577646135305f696e *666f004748437a69496e745f7a64646d7a6c5f636c6f73757265004748437a694572725f756e64 *6566696e65645f696e666f004748437a6948616e646c655f6c766c315f636c6f73757265004469 *73747269627574696f6e7a695061636b6167655f5061636b6167654964656e7469666965725f73 *74617469635f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64 *776363616c6c32385f696e666f006765747275736167654040474c4942435f322e30004748437a *694e756d5f656e756d44656c7461546f496e746567657246425f656e74727900546578747a6950 *72657474795072696e747a69487567686573504a5f7a644c723467716c766c31375f636c6f7375 *7265004748437a69426173655f6e65496e745f696e666f00546578747a69507265747479507269 *6e747a69487567686573504a5f4e6f446f635f636c6f7375726500446973747269627574696f6e *7a6950617273655574696c735f70617273654f707456657273696f6e5f656e7472790073746172 *745469636b657200546578747a69526561647a694c65785f7a644c7235746a6131375f636c6f73 *757265004748437a694e756d5f6c766c31355f636c6f7375726500546578747a69506172736572 *436f6d62696e61746f72737a6952656164505f7a677a677a655f636c6f73757265004469737472 *69627574696f6e7a6953657475705f436f6e666967436d645f636f6e5f656e7472790044697374 *7269627574696f6e7a6953657475705f566572626f73655f656e74727900546578747a69526561 *647a694c65785f7a644c723577766135335f636c6f73757265004748437a6948616e646c655f77 *69746848616e646c657a757a715f656e74727900546578747a69526561647a694c65785f7a644c *7235776a6135315f636c6f73757265004748437a69426173655f7a645f696e666f004469737472 *69627574696f6e7a6953696d706c657a695574696c735f66696e64486f6f6b65645061636b6167 *65446573635f7372740053797374656d7a694469726563746f72795f72656d6f766546696c655f *636c6f73757265004748437a694e756d5f656e756d46726f6d5468656e546f5f656e7472790044 *6973747269627574696f6e7a6950617273655574696c735f706172736556657273696f6e52616e *6765515f636c6f73757265007374675f63617463685f6672616d655f365f726574004748437a69 *5265616c5f7a647761355f656e747279004748437a69456e756d5f65666474496e7446425f636c *6f7375726500446973747269627574696f6e7a6953657475705f57697468486164646f636b5f63 *6c6f73757265004748437a69546f7048616e646c65725f7a644c723337656c766c375f656e7472 *790053797374656d7a694469726563746f72795f6c766c32395f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f72656164507a75746f7a75535f636c6f737572 *6500446973747269627574696f6e7a6953657475705f436f6d70696c65725f636f6e5f656e7472 *79004748437a69526561645f6c766c32335f636c6f7375726500546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c723467756c766c31395f696e666f00446174617a69 *5479706561626c655f7a64776d6b5479436f6e5f696e666f007374675f67635f6c315f696e666f *0053797374656d7a69506f7369787a69496e7465726e616c735f7a644c723757436c766c31335f *636c6f7375726500446174617a694c6973745f66696e645f696e666f0044697374726962757469 *6f6e7a6953657475705f4f74686572436f6d70696c65725f636f6e5f656e747279004748437a69 *426173655f7a64646d6d696e5f696e666f00616c6c6f63486173685461626c6500786f72496e74 *656765727a685f66617374004748437a69456e756d5f65666474496e745f696e666f005f5f7374 *67696e69745f53797374656d7a694c6f63616c655f0053797374656d7a69506f7369787a69496e *7465726e616c735f7a64776363616c6c36395f636c6f7375726500466f726569676e7a6953746f *7261626c655f5a434453746f7261626c655f636f6e5f696e666f004748437a69426173655f5a43 *444d6f6e61645f7374617469635f696e666f00446973747269627574696f6e7a69436f6d706174 *7a6952656164505f736b69704d616e795f636c6f7375726500446973747269627574696f6e7a69 *53657475705f4c6966745f7374617469635f696e666f00446973747269627574696f6e7a694d61 *6b655f64656661756c744d61696e4e6f526561645f737274007374675f73656c5f375f7570645f *656e747279004748437a6948616e646c655f7374646572725f696e666f00446973747269627574 *696f6e7a6950617273655574696c735f70617273654d6f64756c654e616d65515f737274004748 *437a69426173655f7a657a65335f636c6f7375726500446973747269627574696f6e7a69566572 *73696f6e5f706172736556657273696f6e52616e67655f656e7472790044697374726962757469 *6f6e7a69436f6d7061747a6952656164505f636861696e6c315f656e747279004748437a694172 *725f6c766c375f696e666f00546578747a69526561647a694c65785f7a644c723577356c766c33 *335f656e747279004748437a6953686f775f69746f737a715f656e747279004469737472696275 *74696f6e7a6953657475705f436f6d70696c65725f7374617469635f696e666f00446973747269 *627574696f6e7a6953657475705f70617273654275696c64417267735f636c6f73757265004748 *437a694e756d5f7369676e756d325f696e666f004748437a69426173655f7a64737a64646d6d69 *6e5f696e666f004748437a69426173655f7a64646d6d61785f636c6f73757265006d6d61703634 *4040474c4942435f322e31004748437a69526561645f726561644c69737450726563315f636c6f *737572650063616c63416c6c6f6361746564004748437a69494f426173655f6132355f636c6f73 *75726500446973747269627574696f6e7a6953657475705f496e7374616c6c436d645f636f6e5f *656e747279007374675f696e746572705f636f6e737472355f656e747279004748437a694e756d *5f7a64664e756d496e74656765725f636c6f73757265005f5f737467696e69745f4748437a6953 *686f775f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73 *657475704d6573736167655f636c6f7375726500446973747269627574696f6e7a695365747570 *5f487567735f636c6f7375726500446973747269627574696f6e7a6953696d706c657a69557469 *6c735f72617753797374656d566572626f73655f636c6f73757265004748437a695765616b5f7a *647772756e46696e616c697a7a657242617463685f696e666f004748437a69426173655f496e72 *5f636f6e5f696e666f007374675f696e7465676572546f496e743634004748437a6948616e646c *655f68436c6f73655f696e666f00446973747269627574696f6e7a6953657475705f7061727365 *5344697374417267735f696e666f00546578747a69526561647a694c65785f7a644c723575626c *6974315f636c6f73757265004748437a69494f426173655f496e7465727275707465645f636c6f *73757265004748437a69526561645f7a644c723639626c766c31365f636c6f7375726500446973 *747269627574696f6e7a6950617273655574696c735f6d794572726f725f696e666f0054657874 *7a69526561647a694c65785f7a644c723575526c766c32305f696e666f00546578747a69507265 *7474795072696e747a69487567686573504a5f656d7074795f636c6f73757265004748437a6957 *6f72645f6c6974345f636c6f7375726500436f6e74726f6c7a694d6f6e61645f6d61704d7a755f *656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f7361746973 *66795f656e747279004748437a6948616e646c655f7a644c724a6677726974657a75666c616773 *5f696e666f00546578747a69526561647a694c65785f7a644c723576506134365f696e666f0047 *48437a695265616c5f7a647761325f696e666f007374675f696e7465676572546f576f72643634 *00446973747269627574696f6e7a69457874656e73696f6e5f47656e65726963735f7374617469 *635f696e666f004748437a6953686f775f6133315f636c6f73757265004748437a6953686f775f *7a644c72315a5a4a6c766c365f696e666f004748437a695265616c5f7a644c723531526c766c33 *5f656e74727900546578747a69526561647a694c65785f7a644c723578466136355f636c6f7375 *726500446973747269627574696f6e7a6953696d706c657a695574696c735f6d61796265457869 *745f636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f776974684578655f696e666f00446973747269627574696f6e7a6953657475705f5769 *74684873633268735f696e666f00546578747a69526561647a694c65785f7a644c723576786134 *335f696e666f004748437a6953686f775f73686f775369676e6564496e745f656e747279004748 *437a694e756d5f6c766c31335f636c6f7375726500446973747269627574696f6e7a6956657273 *696f6e5f4c6174657256657273696f6e5f7374617469635f656e747279004748437a6953686f77 *5f6c766c32345f636c6f73757265004748437a695265616c5f61355f656e747279004748437a69 *4c6973745f6c766c31365f696e666f004748437a69494f426173655f6132375f636c6f73757265 *00696e7432496e74656765727a685f6661737400446973747269627574696f6e7a695365747570 *5f7061727365486164646f636b417267735f656e747279007374675f61705f70765f696e666f00 *4748437a695265616c5f6d6f64315f696e666f0053797374656d7a69506f7369787a6954797065 *735f7a64664571435069645f636c6f73757265004748437a69576f72645f7a737a65345f656e74 *7279004748437a695265616c5f746f496e7465676572315f656e747279004748437a69494f4261 *73655f756e73616665506572666f726d494f5f636c6f737572650073656c6563744040474c4942 *435f322e3000546578747a69526561647a694c65785f7a644c723574546c766c31305f696e666f *004748437a6953686f775f6133385f636c6f737572650053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c33365f696e666f004748437a69526561645f7a644c72 *3639666c766c31385f636c6f73757265004748437a69494f426173655f496e617070726f707269 *617465547970655f636c6f737572650053797374656d7a69506f7369787a6946696c65735f7365 *7446696c6554696d65735f636c6f73757265004748437a69576f72645f7a64646d73686f775f69 *6e666f004748437a6953686f775f61355f696e666f00546578747a69526561647a694c65785f7a *644c723541336c766c3130385f636c6f73757265005f5f737467696e69745f53797374656d7a69 *506f7369787a6954797065735f005f5f737467696e69745f4748437a69456e756d00546578747a *69526561647a694c65785f7a644c7235774a7832315f636c6f73757265004748437a695265616c *5f7a6477746f526174696f6e616c5f656e747279004748437a69466c6f61745f615f636c6f7375 *7265004748437a69496e745f7a737a65335f696e666f0053797374656d7a69456e7669726f6e6d *656e745f676574417267735f696e666f004748437a695765616b5f7a647772756e46696e616c69 *7a7a657242617463685f636c6f7375726500446973747269627574696f6e7a69457874656e7369 *6f6e5f416c6c6f774f7665726c617070696e67496e7374616e6365735f7374617469635f696e66 *6f00546578747a69526561647a694c65785f7a644c723577646135305f656e7472790044697374 *7269627574696f6e7a695061636b6167655f73686f775061636b61676549645f636c6f73757265 *007374675f63746f695f7265745f52316e5f696e666f0053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c32315f636c6f7375726500616c6c6f63426c6f636b00 *446973747269627574696f6e7a6953657475705f7061727365486164646f636b417267735f7372 *74004748437a6953686f775f6136385f696e666f00546578747a69526561647a694c65785f7a64 *4c723575526c766c32305f656e747279004748437a694c6973745f74616b657a75756e73616665 *7a7555496e745f656e747279004748437a695265616c5f61355f636c6f73757265004748437a69 *4c6973745f7a644c723272716c766c31355f636c6f73757265004748437a69426173655f7a6464 *6d7a6c7a655f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f53636f *706564547970655661726961626c65735f7374617469635f656e747279004748437a69466c6f61 *745f7a64777a647370726f7065724672616374696f6e5f656e747279004748437a69426173655f *7a657a65335f696e666f004748437a69426173655f6d696e7573496e745f636c6f737572650054 *6578747a69506172736572436f6d62696e61746f72737a6952656164505f4765745f636f6e5f69 *6e666f004748437a694c6973745f6d6178696d756d5f696e666f004748437a69494f426173655f *4172697468457863657074696f6e5f636f6e5f656e747279004748437a694c6973745f7a644c72 *3272576c766c33315f696e666f00656e6c61726765537461626c655074725461626c6500474843 *7a6953686f775f61395f696e666f007374675f696e743634546f576f72643634007374675f7365 *6c5f365f7570645f696e666f00446973747269627574696f6e7a6953657475705f636d6448656c *705f636c6f73757265004748437a694e756d5f7a7a65726f496e74656765725f636c6f73757265 *00546578747a69526561647a694c65785f7a644c723574486132395f636c6f7375726500474843 *7a69494f426173655f417070656e6448616e646c655f7374617469635f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f556e696f6e5f7374617469635f656e74 *7279004748437a69526561645f6c766c355f656e7472790053797374656d7a694469726563746f *72795f6c766c32395f656e7472790053797374656d7a69436d645f72617753797374656d5f656e *74727900446973747269627574696f6e7a6950617273655574696c735f416d6269676f75735061 *7273655f7374617469635f696e666f007374675f696e746572705f636f6e737472365f656e7472 *7900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c644f70 *74696f6e735f696e666f004748437a69494f426173655f54696d65457870697265645f73746174 *69635f656e74727900446174617a695479706561626c655f676f315f696e666f004748437a6942 *6173655f6c766c335f636c6f7375726500546578747a69526561647a694c65785f7a644c723574 *566c766c31315f696e666f00546578747a69506172736572436f6d62696e61746f72737a695265 *6164505f7a6c7a707a705f696e666f00446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f6873536f757263654469725f656e747279004748437a695265616c5f6c *766c365f636c6f73757265004748437a6953686f775f69746f735f656e7472790053797374656d *7a69436d645f73797374656d5f636c6f7375726500446973747269627574696f6e7a6945787465 *6e73696f6e5f496e6c696e6550686173655f636c6f7375726500546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c7234456e6c7a75746578745f636c6f737572650047 *48437a69526561645f7a64737a64646d726561647350726563325f696e666f0044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f6275696c64446570656e64735f *656e74727900446973747269627574696f6e7a6953657475705f7a646766726f6d436f6d70696c *65725f656e747279007374675f73656c5f395f7570645f656e7472790066726565486173685461 *626c6500546578747a695072657474795072696e747a69487567686573504a5f4368725f636f6e *5f696e666f004748437a69426173655f4c545f636c6f7375726500546578747a69526561647a69 *4c65785f7a644c723576486c766c32395f636c6f73757265004748437a694e756d5f73686f774c *6973745f696e666f00446174617a69486173685461626c655f7a64776c6f6f6b75705f636c6f73 *75726500446973747269627574696f6e7a6953657475705f48656c70436d645f7374617469635f *656e74727900546578747a69526561647a694c65785f7a644c723576376c766c32335f656e7472 *7900446973747269627574696f6e7a6953657475705f436f7079436d645f696e666f0044697374 *7269627574696f6e7a6956657273696f6e5f6265747765656e56657273696f6e73496e636c7573 *6976655f696e666f004748437a695265616c5f5a437a765f7374617469635f696e666f00446973 *747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c7573505f *73727400446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6368616e *676546696c654578745f656e747279007374675f67635f756e62785f72315f696e666f00474843 *7a6953686f775f6136385f636c6f73757265004748437a69556e69636f64655f7a64776973416c *7068615f696e666f007374675f494e445f696e666f0053797374656d7a69506f7369787a69496e *7465726e616c735f7a64776363616c6c32385f636c6f73757265004748437a6953686f775f7a64 *4c72315a5a4a6c766c365f636c6f73757265004748437a69494f5f7a64777772697465426c6f63 *6b735f736c6f77004748437a69494f426173655f6132365f696e666f004748437a69546f704861 *6e646c65725f746f7048616e646c65725f73727464004748437a6948616e646c655f6c766c3136 *5f696e666f004748437a69576f72645f577a685f636f6e5f656e74727900446973747269627574 *696f6e7a69436f6d7061747a6952656164505f7a707a707a705f696e666f004748437a6953686f *775f6c766c32335f696e666f004748437a6948616e646c655f7a644c726259786c766c32325f69 *6e666f004748437a694e756d5f5a43444e756d5f7374617469635f656e747279004748437a6949 *4f426173655f615f656e747279004748437a69526561645f6c766c32315f696e666f0054657874 *7a69526561647a694c65785f7a644c723577626c766c33345f656e747279004748437a69496e74 *5f7a64646d7a6c7a655f656e74727900546578747a695072657474795072696e747a6948756768 *6573504a5f766361745f696e666f004748437a69426173655f547275655f636c6f737572650044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f617574686f725f *656e747279007374675f61705f707070707070705f696e666f00446973747269627574696f6e7a *694c6963656e73655f5075626c6963446f6d61696e5f7374617469635f656e7472790044697374 *7269627574696f6e7a694765744f70745f52657475726e496e4f726465725f636c6f7375726500 *5f5f737467696e69745f546578747a6953686f770053797374656d7a69456e7669726f6e6d656e *745f6c766c5f636c6f7375726500446973747269627574696f6e7a6953657475705f7061727365 *436c65616e417267735f737274004748437a69556e69636f64655f7a64776973416c7068614e75 *6d5f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f52656375727369 *7665446f5f636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f6c69624275696c64496e666f5f696e666f00446973747269627574696f6e7a69 *50617273655574696c735f73686f7746696c65506174685f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c723577356c766c33335f696e666f00546578747a69506172736572 *436f6d62696e61746f72737a6952656164505f63686f6963655f636c6f73757265004748437a69 *494f426173655f496e76616c6964417267756d656e745f636c6f7375726500546578747a695072 *657474795072696e747a69487567686573504a5f7a647766696c6c315f696e666f007374726572 *726f724040474c4942435f322e3000446973747269627574696f6e7a6953657475705f57697468 *486164646f636b5f7374617469635f696e666f00546578747a69526561647a694c65785f7a644c *723578427833305f636c6f73757265004748437a6953686f775f73686f77537472696e675f696e *666f004748437a694c6973745f7a644c723272776c766c31385f696e666f00546578747a695265 *61647a694c65785f7a644c72357a7a566c766c3130345f636c6f73757265004469737472696275 *74696f6e7a6950726550726f636573737a69556e6c69745f7a6467746f436c6173736966696564 *5f656e74727900446973747269627574696f6e7a6953657475705f5769746843707068735f656e *747279007274735f6170706c7900546578747a69526561647a694c65785f7a644c723541626c76 *6c3131325f636c6f7375726500546578747a695072657474795072696e747a6948756768657350 *4a5f6132335f636c6f73757265005f5f737467696e69745f466f726569676e7a694d6172736861 *6c7a694572726f72005f5f737467696e69745f436f6e74726f6c7a69457863657074696f6e5f00 *546578747a69526561647a694c65785f7a644c723574586c69745f636c6f737572650044617461 *7a694c6973745f7a644c72346e396c766c325f636c6f7375726500446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f4275696c64496e666f5f7374617469635f65 *6e747279005f5f64736f5f68616e646c6500546578747a69526561647a694c65785f7a644c7235 *74686131365f656e74727900446973747269627574696f6e7a6950617273655574696c735f6669 *656c644e616d655f636c6f7375726500446973747269627574696f6e7a694765744f70745f6765 *744f70745f737274004748437a695265616c5f6c766c31375f636c6f737572650053797374656d *7a69506f7369787a69496e7465726e616c735f6f7a754e4f435454595f656e747279004748437a *69456e756d5f676f7a7575707a75696e747a756c6973745f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c7235746c6131385f696e666f004748437a6953686f775f6c766c31 *335f696e666f004748437a69426173655f6571496e745f656e74727900546578747a6950617273 *6572436f6d62696e61746f72737a6952656164507265635f706661696c5f636c6f737572650044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f63536f75726365 *735f656e74727900446973747269627574696f6e7a695061636b6167655f706b6756657273696f *6e5f636c6f73757265007374675f494e445f6469726563745f696e666f007472795075744d5661 *727a685f6661737400546578747a69526561647a694c65785f7a644c7235775a5a6135385f696e *666f004748437a69494f5f6c766c32325f636c6f73757265004748437a69456e756d5f65667449 *6e745f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f6d61 *6e795f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a75 *5452554e435f636c6f73757265004748437a69426173655f547275655f7374617469635f696e66 *6f007374675f6e6f743634004748437a69494f5f6c766c345f636c6f7375726500446174617a69 *5479706561626c655f63616368655f636c6f7375726500546578747a695072657474795072696e *747a69487567686573504a5f7a644c723468697365704e42315f696e666f005f5f737467696e69 *745f436f6e74726f6c7a69457863657074696f6e007374675f67635f67656e5f6870004748437a *69494f426173655f696f457863657074696f6e5f656e74727900546578747a69526561647a694c *65785f7a644c72357a7a466c766c39365f636c6f73757265004748437a69496e745f7a64646d6d *696e5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f736b69 *704d616e79315f737274004748437a6948616e646c655f7374646572725f636c6f737572650047 *48437a695265616c5f71756f7452656d325f636c6f73757265004748437a6948616e646c655f69 *6f657a756e6f745265616461626c655f736c6f77004748437a694c6973745f7a644c723272656c *766c395f636c6f73757265004748437a69556e69636f64655f7a6477697344696769745f636c6f *73757265004748437a69426173655f706c7573496e745f696e666f00546578747a69526561647a *694c65785f53796d626f6c5f636f6e5f656e74727900546578747a69526561647a694c65785f43 *6861725f7374617469635f656e747279004748437a694c6973745f6d6178696d756d5f636c6f73 *75726500546578747a69526561647a694c65785f7a644c723575506c766c31395f656e74727900 *4748437a69494f426173655f7468726f775f636c6f73757265004748437a69526561645f706f6c *797a75676f5f696e666f00436f6e74726f6c7a694d6f6e61645f7768656e5f696e666f00474843 *7a69576f72645f7a70335f656e747279004748437a694572725f756e74616e676c655f636c6f73 *757265004748437a694c6973745f64726f705768696c655f656e74727900446973747269627574 *696f6e7a6950617273655574696c735f6c6973744669656c645f73727400446973747269627574 *696f6e7a6950726550726f636573737a69556e6c69745f50726f6772616d5f656e747279005f5f *737467696e69745f446973747269627574696f6e7a694d616b655f00466f726569676e7a695374 *6f7261626c655f706f6c797a757065656b427974654f6666325f656e747279004748437a69494f *426173655f494f4572726f725f7374617469635f656e74727900446973747269627574696f6e7a *6956657273696f6e5f416e7956657273696f6e5f7374617469635f696e666f004748437a69496e *745f4933327a685f7374617469635f656e747279007374675f73656c5f325f6e6f7570645f656e *747279004748437a69426173655f7a646645715a4d5a4e5f656e74727900546578747a69507265 *7474795072696e747a69487567686573504a5f6c766c31335f636c6f7375726500546578747a69 *526561647a694c65785f496e745f636f6e5f696e666f004748437a69426173655f6571496e745f *696e666f004748437a69526561645f7a64737a64646d726561647350726563315f636c6f737572 *650068735f657869740053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c36345f656e7472790053797374656d7a69456e7669726f6e6d656e745f676f325f696e *666f00446174617a695479706561626c655f6d6b41707054795f696e666f004469737472696275 *74696f6e7a6956657273696f6e5f4561726c69657256657273696f6e5f7374617469635f696e66 *6f004748437a69546f7048616e646c65725f7a644c723337326c766c325f636c6f737572650047 *48437a6948616e646c655f7a6477666c75736857726974654275666665725f656e747279005f5f *737467696e69745f446174617a69426f6f6c004748437a69526561645f726561644c6973745072 *656344656661756c745f696e666f005f73746741737365727400546578747a69526561647a694c *65785f7a644c723577626c766c33345f696e666f004748437a6948616e646c655f6c766c32335f *696e666f00446973747269627574696f6e7a6956657273696f6e5f73686f7756657273696f6e52 *616e67655f696e666f00546578747a69526561647a694c65785f4964656e745f636f6e5f656e74 *727900546578747a69526561647a694c65785f50756e635f7374617469635f656e74727900776f *726432496e74656765727a685f6661737400446973747269627574696f6e7a695061636b616765 *5f706b674e616d655f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c *65506174685f73706c697446696c654e616d655f636c6f7375726500546578747a69526561647a *694c65785f7a644c7235784c6136365f696e666f00546578747a69526561647a694c65785f6c65 *785f636c6f737572650053797374656d7a69494f5f7075745374724c6e5f636c6f737572650054 *6578747a69506172736572436f6d62696e61746f72737a6952656164507265635f72657365745f *696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a707a707a70 *5f636c6f7375726500446973747269627574696f6e7a695061636b6167655f7a6467746f506163 *6b6167654964656e7469666965725f696e666f00446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e5f696e636c756465735f656e747279004748437a69494f426173 *655f50726f746f636f6c4572726f725f636c6f7375726500446973747269627574696f6e7a6943 *6f6d7061747a6952656164505f6c6f6f6b5f636c6f737572650053797374656d7a694469726563 *746f72795f646f65734469726563746f727945786973745f636c6f737572650044697374726962 *7574696f6e7a69436f6d7061747a6952656164505f526573756c745f636f6e5f656e7472790044 *6973747269627574696f6e7a6956657273696f6e5f4561726c69657256657273696f6e5f656e74 *727900446973747269627574696f6e7a6953657475705f7061727365436c65616e417267735f63 *6c6f73757265005f5f6c6962635f6373755f66696e690053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c365f656e747279004748437a69426173655f5a43444f *72645f636f6e5f656e74727900616e64496e74656765727a685f666173740053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c33305f636c6f7375726500474843 *7a694e756d5f66726f6d496e7465676572315f656e74727900446973747269627574696f6e7a69 *53657475705f50726f6772616d6174696361436d645f7374617469635f656e747279004748437a *6953686f775f73686f774c697374315f656e74727900446174617a694569746865725f7a646645 *714569746865725f696e666f004748437a69496e745f7a64646d7a6c5f696e666f005379737465 *6d7a694469726563746f72795f7769746846696c655374617475735f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f6c6f6f6b5f696e666f0053797374656d7a *69506f7369787a69496e7465726e616c735f637a75636c6f73656469725f656e74727900446973 *747269627574696f6e7a695061636b6167654465736372697074696f6e5f63634f7074696f6e73 *5f696e666f004748437a694c6973745f7a644c7232714f6c766c355f696e666f00446973747269 *627574696f6e7a6956657273696f6e5f73686f7756657273696f6e52616e67655f737274004461 *74617a694c6973745f6c696e65735f656e747279004748437a69494f426173655f61325f636c6f *73757265004748437a6948616e646c655f7a644c726330427a647768616e646c6546696e616c69 *7a7a65725f656e747279004748437a694572725f6c766c395f696e666f004748437a69494f4261 *73655f696f457863657074696f6e5f696e666f004748437a694c6973745f616c6c5f636c6f7375 *7265004748437a694e756d5f7a644c723278746c766c315f696e666f004748437a69494f426173 *655f756e73616665496e7465726c65617665494f5f696e666f004748437a69494f426173655f62 *75664275665f636c6f7375726500446174617a69486173685461626c655f6c766c315f636c6f73 *75726500446973747269627574696f6e7a6953657475705f7a646766726f6d436f6d70696c6572 *5f696e666f00446973747269627574696f6e7a694765744f70745f7a6467746f4f707444657363 *725f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c *6c5f656e7472790053797374656d7a694469726563746f72795f69734469726563746f72795f63 *6c6f73757265007463736574617474724040474c4942435f322e3000446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f73686f77486f6f6b65644275696c64496e *666f5f73727400446973747269627574696f6e7a6950617273655574696c735f70617273655061 *636b6167654e616d65515f656e747279004748437a694c6973745f706f6c797a756c6173747a71 *5f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e *5f7570646174655061636b6167654465736372697074696f6e5f636c6f7375726500546578747a *69526561647a694c65785f7a644c723575506c766c31395f696e666f004748437a694c6973745f *7a644c723272776c766c31385f656e747279004748437a69456e756d5f7a644c723979676f7a75 *646e7a75696e747a7566625f736c6f7700546578747a695072657474795072696e747a69487567 *686573504a5f72656e6465725f636c6f7375726500446973747269627574696f6e7a6953657475 *705f576974684863506b675f7374617469635f656e74727900546578747a69526561647a694c65 *785f7a644c723576786134335f656e7472790053797374656d7a69456e7669726f6e6d656e745f *67657450726f674e616d655f736c6f77004748437a6948616e646c655f6f70656e46696c657a71 *5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f4669 *6e616c5f7374617469635f696e666f00446973747269627574696f6e7a69457874656e73696f6e *5f4e6f4d6f6e6f6d6f72706869736d5265737472696374696f6e5f7374617469635f696e666f00 *4748437a69456e756d5f656e756d46726f6d5468656e335f696e666f0044697374726962757469 *6f6e7a6953657475705f57697468486164646f636b5f696e666f00446973747269627574696f6e *7a6953657475705f636f6e66696748617070795f696e666f004748437a69546f7048616e646c65 *725f7a644c723337776c766c31365f696e666f004748437a6953686f775f61315f636c6f737572 *6500737461745f656e64496e6974004748437a6948616e646c655f6f70656e46645f696e666f00 *4748437a694e756d5f656e756d44656c7461546f496e746567657246425f636c6f737572650047 *48437a69494f426173655f7a644c7236624861315f696e666f00446973747269627574696f6e7a *69436f6d7061747a6952656164505f636861696e725f696e666f0066726565436861696e004748 *437a69546f7048616e646c65725f7a644c72333653615f636c6f73757265004748437a69494f42 *6173655f577269746548616e646c655f7374617469635f656e74727900546578747a6950726574 *74795072696e747a69487567686573504a5f7a644c7234676f6c766c31365f636c6f7375726500 *546578747a695072657474795072696e747a69487567686573504a5f766361745f656e74727900 *436f6e74726f6c7a69457863657074696f6e5f66696e616c6c795f696e666f00546578747a6952 *6561647a694c65785f7a644c7235786c6c766c34365f696e666f004748437a69576f72645f7a73 *7a65345f636c6f73757265004748437a695074725f46756e5074725f7374617469635f696e666f *0053797374656d7a69506f7369787a69496e7465726e616c735f61315f656e747279004748437a *6953686f775f73686f7773507265635f696e666f00446973747269627574696f6e7a6950726550 *726f636573737a69556e6c69745f5072655f696e666f00446973747269627574696f6e7a695369 *6d706c657a695574696c735f6d61796265457869745f696e666f00446973747269627574696f6e *7a694765744f70745f4f70745f696e666f0073746746726565004748437a6953686f775f613730 *5f696e666f004748437a69526561645f6c766c31345f696e666f005f5f737467696e69745f4748 *437a69496e745f00546578747a69506172736572436f6d62696e61746f72737a6952656164505f *6c766c325f636c6f7375726500546578747a695072657474795072696e747a6948756768657350 *4a5f737472696e677a757478745f636c6f73757265004748437a69526561645f726561644c6973 *7444656661756c745f656e747279004748437a694c6973745f616c6c5f656e74727900436f6e74 *726f6c7a694d6f6e61645f73657175656e63655f656e747279007374675f73656c5f345f6e6f75 *70645f696e666f004748437a6948616e646c655f696f657a7566696e616c697a7a656448616e64 *6c655f656e7472790053797374656d7a69494f5f777269746546696c655f636c6f737572650053 *797374656d7a69457869745f615f696e666f004748437a69546f7048616e646c65725f7a644c72 *3336556c766c5f636c6f7375726500446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f7a646653686f775061636b6167654465736372697074696f6e5f636c6f73 *757265007374675f71756f74496e7436340053797374656d7a69506f7369787a69496e7465726e *616c735f7a64776363616c6c33325f636c6f7375726500446973747269627574696f6e7a695365 *7475705f7061727365556e7265676973746572417267735f636c6f737572650053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c365f736c6f7700446973747269 *627574696f6e7a6953657475705f436d645f656e747279004748437a69496e745f746f456e756d *5f656e747279004748437a6948616e646c655f6c766c31345f636c6f73757265005a434d61696e *5f6d61696e5f696e666f007365746c6f63616c654040474c4942435f322e30004748437a695265 *616c5f71756f7452656d315f656e74727900546578747a69526561647a694c65785f537472696e *675f7374617469635f696e666f0053797374656d7a694469726563746f72795f7a644c72396145 *615f656e74727900546578747a695072657474795072696e747a69487567686573504a5f7a6477 *66696c6c315f736c6f7700446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f70617273654465736372697074696f6e5f737274004748437a69494f426173655f61 *355f636c6f73757265004748437a69426173655f72657475726e5f656e74727900446973747269 *627574696f6e7a6950617273655574696c735f706172736554657374656457697468515f737274 *004748437a6953686f775f6131325f696e666f00546578747a695072657474795072696e747a69 *487567686573504a5f7a644c7234683266696c6c31315f656e747279004748437a69426173655f *45515f7374617469635f696e666f00446973747269627574696f6e7a6953696d706c657a695574 *696c735f72617753797374656d506174685f737274004748437a6953686f775f7a644c72315a5a *486c766c355f636c6f73757265004748437a6953686f775f6c766c31365f636c6f737572650047 *48437a69496e745f7a6d325f696e666f00446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f776974684578655f636c6f73757265004748437a6953686f775f7a64 *7773686f774c6974436861725f636c6f73757265004748437a69494f5f7a644c723967746c617a *7a7952656164315f636c6f73757265004748437a69526561645f72656164735f696e666f004469 *73747269627574696f6e7a69457874656e73696f6e5f4172726f77735f636c6f73757265004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f73686f77486f6f6b *65644275696c64496e666f5f696e666f004748437a69426173655f6c74496e745f656e74727900 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35335f696e66 *6f004748437a69494f426173655f6c766c33355f636c6f73757265004748437a69496e745f7a64 *777a64646d656e756d46726f6d5468656e546f5f656e747279004748437a69496e745f746f496e *7465676572325f656e747279004748437a69496e745f66726f6d496e7465676572325f696e666f *004748437a6948616e646c655f7a644c726333746c766c39395f636c6f73757265004748437a69 *4e756d5f7a6477696e746567657232496e745f696e666f004748437a6948616e646c655f68466c *7573685f656e7472790077616b655570536c656570696e6754687265616473004748437a69494f *426173655f5265616448616e646c655f7374617469635f696e666f004748437a6948616e646c65 *5f6f70656e46696c657a715f696e666f004748437a69494f426173655f6c766c31385f696e666f *004748437a6948616e646c655f7a644c724a6a617070656e647a75666c6167735f656e74727900 *446973747269627574696f6e7a6950617273655574696c735f50617273654f6b5f696e666f0044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f636861696e725f7372740044 *6174617a694c6973745f69735375666669784f665f636c6f73757265007374675f73746f705f74 *68726561645f696e666f0072756e5f71756575655f746c004748437a695265616c5f746f496e74 *65676572315f636c6f7375726500446174617a695479706561626c655f74626c5f696e666f0047 *48437a69496e745f646976325f636c6f73757265004748437a6953686f775f6133305f696e666f *004748437a69496e745f4931367a685f7374617469635f656e7472790044697374726962757469 *6f6e7a6956657273696f6e5f7a646653686f77446570656e64656e63795f636c6f737572650044 *6973747269627574696f6e7a69457874656e73696f6e5f47656e65726963735f636c6f73757265 *004748437a695265616c5f6131345f696e666f00446973747269627574696f6e7a695061727365 *5574696c735f6669656c644765745f656e74727900446973747269627574696f6e7a6950617273 *655574696c735f73706c69745374616e7a7a61735f73727400756e6c6f636b46696c6500537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32385f736c6f770065 *7869745363686564756c6572004748437a69456e756d5f7a644c723977676f7a7575707a75696e *747a7566625f696e666f004748437a694e756d5f7a6466456e756d496e74656765725f636c6f73 *757265004748437a69546f7048616e646c65725f6473315f736c6f77004748437a69494f426173 *655f6c766c31375f636c6f7375726500546578747a695072657474795072696e747a6948756768 *6573504a5f4368725f7374617469635f696e666f004748437a694172725f6c766c375f636c6f73 *75726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72346773 *6c766c31385f636c6f73757265006973466c6f61744e656761746976655a65726f004748437a69 *53686f775f6132365f656e747279004748437a69456e756d5f7a644c7232616a6c766c31375f65 *6e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c365f636c6f7375 *7265004748437a69426173655f496e6c5f636f6e5f696e666f007374675f46554c4c5f4d564152 *5f696e666f004748437a694572725f7a644c7231306a6c766c31305f636c6f7375726500737461 *626c655f7074725f7461626c65005f5f737467696e69745f53797374656d7a69506f7369787a69 *50726f6365737300446973747269627574696f6e7a6953657475705f55736572466c61675f7374 *617469635f696e666f0067656e65726963526169736500446973747269627574696f6e7a695061 *7273655574696c735f7a646653686f775061727365526573756c745f656e747279004748437a69 *494f5f7a644c723966666c766c325f696e666f0053797374656d7a69506f7369787a6946696c65 *735f6c766c32325f696e666f00546578747a69526561647a694c65785f7a644c72357864783236 *5f636c6f7375726500446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6672616d65776f726b735f696e666f004748437a6948616e646c655f7a644c724a687277 *7a75666c6167735f636c6f73757265004748437a69494f426173655f686146445f656e74727900 *4748437a69494f426173655f4d5661725f7374617469635f696e666f0044697374726962757469 *6f6e7a6956657273696f6e5f446570656e64656e63795f636c6f73757265004469737472696275 *74696f6e7a6953657475705f5265676973746572436d645f7374617469635f696e666f00474843 *7a69496e745f7a6477626f756e646564456e756d46726f6d5f636c6f73757265004748437a6952 *65616c5f7a647761355f696e666f004748437a694c6973745f6c656e6774685f656e7472790047 *48437a694c6973745f627265616b5f656e74727900446973747269627574696f6e7a694765744f *70745f4f70744572725f7374617469635f656e747279004748437a694e756d5f74696d6573496e *74656765725f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a64676672 *6f6d56657273696f6e52616e67655f696e666f004748437a6953686f775f6136385f656e747279 *004748437a69576f72645f7a6477746f496e7465676572315f656e747279004469737472696275 *74696f6e7a695061636b6167655f70617273655061636b61676549645f656e7472790044697374 *7269627574696f6e7a6953657475705f7a6467746f436f6e666967466c6167735f696e666f0053 *797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32365f656e7472 *79004748437a69494f426173655f48616e646c657a757a755f636f6e5f696e666f005379737465 *6d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36335f656e747279004748 *437a69494f426173655f4275666665725f7374617469635f696e666f004748437a69496e745f7a *64646d73686f775f636c6f73757265004748437a69494f426173655f6132365f636c6f73757265 *004748437a69496e745f646976325f656e74727900436f6e74726f6c7a694d6f6e61645f7a6477 *666f6c644d5f636c6f73757265004748437a69426173655f7a64646d7a675f656e747279004469 *73747269627574696f6e7a695061636b6167655f706b6756657273696f6e5f656e747279005465 *78747a69526561647a694c65785f7a644c723577376134395f656e747279007374675f6e656761 *7465496e743634004748437a69526561645f6c766c32345f696e666f004748437a69556e69636f *64655f7a6477697355707065725f696e666f005f5f737467696e69745f44697374726962757469 *6f6e7a695365747570006d6b466f726569676e4f626a7a685f6661737400546578747a69506172 *736572436f6d62696e61746f72737a6952656164505f6c766c335f656e74727900446973747269 *627574696f6e7a69457874656e73696f6e5f466f726569676e46756e6374696f6e496e74657266 *6163655f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f416c6c5269 *6768747352657365727665645f636c6f73757265004748437a694c6973745f616e795f696e666f *007374675f5745414b5f696e666f007374675f4d55545f5641525f696e666f004748437a695368 *6f775f73686f77436861725f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f7a6467746f45786563757461626c655f636c6f7375726500474843 *5f5a434343616c6c61626c655f7374617469635f696e666f004748437a69494f5f7a6477684765 *744275665f696e666f004748437a69426173655f7a64646d6d61785f696e666f00446973747269 *627574696f6e7a6953657475705f7a64664571416374696f6e5f636c6f7375726500546578747a *695072657474795072696e747a69487567686573504a5f7a644c72363863616e747a756661696c *5f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f6469 *655f696e666f004748437a69537461626c655f537461626c655074725f7374617469635f656e74 *727900446973747269627574696f6e7a6950617273655574696c735f73696e676c655374616e7a *7a615f737274004748437a69496e745f7a6d325f656e74727900446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f7a6466526561644c6962726172795f636c6f73 *757265004748437a6948616e646c655f7769746848616e646c657a757a757a715f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467736c766c3138 *5f696e666f004748437a69496e745f7a6477626f756e646564456e756d46726f6d5f696e666f00 *436f6e74726f6c7a694d6f6e61645f7a6477666f6c644d5f656e747279004748437a6953686f77 *5f6136375f636c6f73757265005f5f6572726e6f5f6c6f636174696f6e4040474c4942435f322e *30007374675f67635f766f69645f696e666f00446973747269627574696f6e7a69506172736555 *74696c735f7061727365457874656e73696f6e515f636c6f737572650044697374726962757469 *6f6e7a694765744f70745f5265714172675f636f6e5f696e666f00546578747a69526561647a69 *4c65785f7a644c723574646131345f636c6f73757265004748437a695265616c5f61385f636c6f *7375726500446973747269627574696f6e7a694765744f70745f556e7265714f70745f636f6e5f *656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6c766c31355f656e *747279004748437a694c6973745f7a644c723272696c766c31315f636c6f73757265004748437a *69496e745f6c766c32395f656e7472790053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776c766c5f656e747279004748437a694c6973745f706f6c797a75666f6c6472325f *656e747279004748437a694e756d5f75707a756c6973745f696e666f0053797374656d7a694469 *726563746f72795f6c766c32355f636c6f73757265004748437a694572725f6572726f725f636c *6f7375726500546578747a69526561647a694c65785f7a644c7235766a6c766c32355f656e7472 *79004748437a694c6973745f7a644c723272696c766c31315f696e666f00466f726569676e7a69 *4d61727368616c7a69416c6c6f635f7a64776363616c6c315f696e666f00446973747269627574 *696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f474843466c61675f656e7472 *7900446973747269627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e *6765735f636c6f7375726500546578747a69526561647a694c65785f7a644c723579396c766c35 *395f636c6f73757265004748437a69494f5f696c6c6567616c42756666657253697a7a655f656e *747279004748437a69494f5f7a644c723966786c766c31315f696e666f004748437a694e756d5f *73686f774c6973745f636c6f7375726500446174617a695475706c655f6673745f656e74727900 *446973747269627574696f6e7a69436f6d7061747a6952656164505f736b69705370616365735f *696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f45 *786563757461626c655f636f6e5f656e74727900446973747269627574696f6e7a694765744f70 *745f4e6f6e4f70745f7374617469635f696e666f00546578747a69526561647a694c65785f7a64 *4c723574526c766c395f696e666f00446973747269627574696f6e7a69436f6d7061747a694669 *6c65506174685f697350617468536570617261746f725f73727400546578747a69507265747479 *5072696e747a69487567686573504a5f41626f76655f7374617469635f656e7472790054657874 *7a69526561647a694c65785f7a644c7235754c6133355f636c6f73757265004748437a69494f42 *6173655f6275664275665f656e747279004748437a69494f5f685075744368617273315f636c6f *7375726500446973747269627574696f6e7a6953657475705f636d644f7074696f6e735f656e74 *7279005f5f737467696e69745f446973747269627574696f6e7a6953657475705f004469737472 *69627574696f6e7a6956657273696f6e5f56657273696f6e5f636c6f7375726500446973747269 *627574696f6e7a695061636b6167654465736372697074696f6e5f73686f775061636b61676544 *65736372697074696f6e5f656e747279004748437a69496e745f646976325f696e666f00446973 *747269627574696f6e7a69457874656e73696f6e5f496e6c696e6550686173655f737461746963 *5f696e666f004748437a6953686f775f6131365f696e666f0053797374656d7a69446972656374 *6f72795f6c766c32365f656e747279004748437a69496e745f6c766c31385f636c6f7375726500 *5f5f737467696e69745f466f726569676e7a694d61727368616c7a69416c6c6f6300546578747a *69526561647a694c65785f7a644c723576546c766c33315f636c6f737572650044697374726962 *7574696f6e7a69436f6d7061747a6952656164505f7a6467746f5061727365725f696e666f0047 *48437a69526561645f6c766c32345f636c6f7375726500446973747269627574696f6e7a695365 *7475705f4c6966745f696e666f004748437a69496e745f7a64646d7a677a655f656e7472790044 *6973747269627574696f6e7a6953657475705f7a6467746f436f6d70696c65725f696e666f0054 *6578747a69526561647a694c65785f7a644c723576546c766c33315f656e747279004748437a69 *426173655f7a627a625f636c6f73757265004f6e45786974486f6f6b004748437a694e756d5f71 *756f7452656d496e74656765725f696e666f00446174617a695479706561626c655f6d6b547943 *6f6e5f656e74727900446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6c6963656e736546696c655f656e7472790053797374656d7a69506f7369787a69496e74 *65726e616c735f637a75756e6c696e6b5f656e74727900446973747269627574696f6e7a694578 *74656e73696f6e5f4e616d65644669656c6450756e735f7374617469635f656e74727900474843 *7a69556e69636f64655f7a6477746f4c6f7765725f696e666f007274735f6d6b576f7264313600 *446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73616e697479 *436865636b5061636b6167655f696e666f00446973747269627574696f6e7a694765744f70745f *7a646766726f6d4172674f726465725f656e7472790053797374656d7a69436d645f6c766c315f *656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *6861734c6962735f696e666f004748437a694572725f7a644c723130706c766c31335f636c6f73 *75726500446973747269627574696f6e7a6953696d706c657a695574696c735f63757272656e74 *4469725f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a64665479 *706561626c6556657273696f6e5f696e666f00446973747269627574696f6e7a6953696d706c65 *7a695574696c735f736d617274436f7079536f75726365735f737274006f6c646573745f67656e *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f6d756e63685f69 *6e666f00546578747a69526561647a694c65785f7a644c723578786c766c34385f636c6f737572 *65004748437a694e756d5f737563635f636c6f73757265004748437a69494f426173655f436c6f *73656448616e646c655f636c6f73757265004748437a694572725f6c766c365f636c6f73757265 *0053797374656d7a694469726563746f72795f7769746846696c655374617475735f636c6f7375 *726500546578747a69526561647a694c65785f7a644c72357a7a746c766c39305f636c6f737572 *650073687574646f776e4861736b656c6c416e6445786974004748437a694e756d5f73686f7773 *507265635f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4f7665726c *617070696e67496e7374616e6365735f7374617469635f656e7472790044697374726962757469 *6f6e7a694765744f70745f5265714172675f636f6e5f656e747279006372656174655468726561 *64005f5f756d6f6464693300546578747a69526561647a694c65785f7a644c7235795a5a6c766c *38355f636c6f73757265004748437a6953686f775f73686f7753706163655f696e666f00474843 *7a694e756d5f7a737a655f696e666f00546578747a69526561647a694c65785f7a644c72684b6c *65784e756d6265725f636c6f7375726500546578747a69526561647a694c65785f7a644c723575 *396c766c31355f656e74727900546578747a69526561647a694c65785f5261745f636f6e5f656e *747279004748437a69576f72645f7a644c723943636c766c31345f656e747279004748437a6953 *686f775f6134345f696e666f004748437a694e756d5f636f6d706172655f636c6f737572650047 *48437a6953746f7261626c655f726561645074724f66665074725f656e74727900546578747a69 *526561647a694c65785f6c766c3132355f636c6f73757265004748437a69496e745f66726f6d49 *6e7465676572325f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f77 *697468696e52616e67655f696e666f004748437a695265616c5f7a64737a63325f656e74727900 *4748437a69456e756d5f656664496e7446425f636c6f73757265004748437a695265616c5f7a64 *777a64737265647563655f656e747279004748437a69426173655f7a677a675f696e666f004748 *437a69496e745f6c766c32375f636c6f7375726500446973747269627574696f6e7a6953657475 *705f436f6e666967436d645f656e747279004748437a6948616e646c655f6c766c315f656e7472 *7900446973747269627574696f6e7a6953657475705f5769746848617070795f696e666f004748 *437a69456e756d5f6c766c31365f636c6f7375726500546578747a69526561647a694c65785f7a *644c72357a7a396136395f636c6f73757265004748437a6953686f775f6c766c32335f636c6f73 *757265005f5f737467696e69745f446973747269627574696f6e7a6953696d706c657a69557469 *6c7300546578747a695072657474795072696e747a69487567686573504a5f7a644c7234686d7a *6477696e64656e745f636c6f7375726500466f726569676e7a69437a694572726f725f7a647763 *63616c6c315f696e666f004748437a69456e756d5f656674496e7446425f656e74727900474843 *7a69526561645f726561644e756d626572335f696e666f004748437a6948616e646c655f7a644c *726259336c766c375f636c6f737572650053797374656d7a694469726563746f72795f6c766c32 *335f656e747279004748437a69494f5f684765744275665f696e666f0044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f65787472614c6962735f696e666f0047 *48437a6953686f775f7a64737a64646d73686f774c697374335f636c6f7375726500546578747a *695072657474795072696e747a69487567686573504a5f41626f76655f7374617469635f696e66 *6f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f4c696272 *6172795f636f6e5f656e747279007374675f64756d6d795f7265745f636c6f7375726500474843 *7a69526561645f7265616450726563315f696e666f004748437a69496e745f6c6974325f636c6f *7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f66 *72616d65776f726b735f636c6f737572650053797374656d7a69506f7369787a69496e7465726e *616c735f6f7a754e4f4e424c4f434b5f656e747279004748437a69494f5f7a644c7239664a7a64 *77726561644368756e6b5f736c6f77004748437a69546f7048616e646c65725f7a644c7233376f *6c766c31325f696e666f00466f726569676e7a69437a694572726f725f6c766c315f696e666f00 *546578747a69526561647a694c65785f7a644c7235764a6134355f696e666f004748437a69494f *426173655f61335f656e747279004748437a695074725f46756e5074725f7374617469635f656e *747279004748437a6953686f775f7a647773686f7773507265635f696e666f00697377616c6e75 *6d4040474c4942435f322e30004748437a695265616c5f7a64737a765f696e666f004469737472 *69627574696f6e7a694d616b655f64656661756c744d61696e5f737274004748437a69546f7048 *616e646c65725f6c766c345f696e666f004748437a694e756d5f7a644c7232784a6c766c395f63 *6c6f73757265004748437a69456e756d5f676f7a75646e7a75696e747a756c6973745f636c6f73 *75726500446973747269627574696f6e7a6950617273655574696c735f7061727365446570656e *64656e63795f696e666f00546578747a69526561647a694c65785f7a644c723578786c766c3438 *5f656e74727900546578747a69526561647a694c65785f7a644c723576666134305f696e666f00 *4748437a69494f426173655f62756653697a7a655f636c6f737572650044697374726962757469 *6f6e7a69436f6d7061747a6946696c65506174685f636f6d6d6f6e506172656e745f7372740044 *6973747269627574696f6e7a694765744f70745f7573616765496e666f5f656e74727900474843 *7a695265616c5f6c766c325f636c6f7375726500546578747a695072657474795072696e747a69 *487567686573504a5f7a644c7234686b7a6477666974735f696e666f0053797374656d7a69436d *645f6c766c315f636c6f7375726500466f726569676e7a694d61727368616c7a6941727261795f *6c766c5f656e747279004748437a69494f426173655f6861547970655f696e666f00546578747a *69526561647a694c65785f7a644c723577727831385f636c6f73757265006973446f75626c6549 *6e66696e6974650053797374656d7a69506f7369787a69496e7465726e616c735f7a6477636361 *6c6c33335f696e666f004748437a69526561645f7a6473726561644c6973745072656344656661 *756c74345f636c6f73757265007374675f61705f325f7570645f656e747279007374675f6e6f66 *6f726365494f5f726574004748437a6953686f775f6131375f636c6f73757265004748437a6953 *545265665f53545265665f636f6e5f696e666f00446973747269627574696f6e7a69457874656e *73696f6e5f556e736166654f7665726c617070696e67496e7374616e6365735f7374617469635f *656e74727900446973747269627574696f6e7a69457874656e73696f6e5f4e6f4d6f6e6f6d6f72 *706869736d5265737472696374696f6e5f7374617469635f656e74727900446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f6275696c64496e666f5f696e666f00 *4748437a69494f426173655f7a647773686f777350726563345f696e666f0053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c35345f656e74727900546578747a *69526561647a694c65785f7a644c72357a7a666c766c38375f636c6f7375726500446973747269 *627574696f6e7a6950617273655574696c735f5374616e7a7a614669656c645f7374617469635f *656e747279004748437a69426173655f6571537472696e675f636c6f73757265004748437a6952 *6561645f61355f696e666f00546578747a695072657474795072696e747a69487567686573504a *5f61355f636c6f73757265004748437a695074725f5074725f636f6e5f696e666f004748437a69 *456e756d5f73756363355f656e74727900446973747269627574696f6e7a6953657475705f636f *6d70696c6572506b67546f6f6c5f656e747279004748437a69494f426173655f54696d65457870 *697265645f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c *735f6765744f7074696f6e7346726f6d536f757263655f656e7472790044697374726962757469 *6f6e7a6953696d706c657a695574696c735f72617753797374656d506174685f636c6f73757265 *004748437a69496e745f7a64646d7a6c7a655f696e666f00546578747a69506172736572436f6d *62696e61746f72737a6952656164505f6d706c75735f636c6f73757265006e65774d7574566172 *7a685f66617374004748437a69456e756d5f7a644c723977676f7a7575707a75696e747a756662 *5f736c6f7700446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *7570646174655061636b6167654465736372697074696f6e5f656e747279007374675f63617463 *685f6672616d655f325f726574007274735f6576616c537461626c65494f004748437a694e756d *5f7a644c7232787a7a6c766c345f636c6f73757265004748437a69456e756d5f7a644c72397967 *6f7a75646e7a75696e747a7566625f636c6f73757265004748437a69526561645f726561645072 *65635f636c6f73757265004748437a69494f426173655f7a677a675f636c6f7375726500446174 *617a69486173685461626c655f68617368537472696e675f656e747279004748437a694e756d5f *6c766c365f636c6f73757265004748437a69456e756d5f7a644c723977676f7a7575707a75696e *747a7566625f636c6f73757265007374675f7570645f6672616d655f696e666f004748437a6952 *6561645f7a6473726561644c69737444656661756c74325f696e666f0044697374726962757469 *6f6e7a694765744f70745f7a6467746f41726744657363725f636c6f7375726500446973747269 *627574696f6e7a6953657475705f636f6e6669674863506b675f636c6f73757265005379737465 *6d7a69506f7369787a6946696c65735f73657446696c6554696d65735f696e666f004748437a69 *426173655f7a64646d7a677a675f636c6f737572650072656d6f76655468726561644c6162656c *004748437a694e756d5f656e756d46726f6d5f636c6f7375726500546578747a69526561647a69 *4c65785f537472696e675f636f6e5f696e666f00546578747a69526561647a694c65785f7a644c *723541356c766c3130395f636c6f73757265004748437a694c6973745f7a6477627265616b5f63 *6c6f73757265004748437a69494f426173655f62756653697a7a655f696e666f00446973747269 *627574696f6e7a6953657475705f7a646766726f6d436f6d70696c6572466c61766f725f656e74 *7279004748437a6953686f775f73686f777350726563325f636c6f7375726500466f726569676e *7a694d61727368616c7a69416c6c6f635f6c766c345f636c6f7375726500446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f696e636c756465446972735f636c6f *7375726500446973747269627574696f6e7a6953657475705f4e48435f636c6f73757265007374 *675f67635f6431005f5f7564697664693300546578747a69526561647a694c65785f7a644c7235 *75396c766c31355f636c6f737572650053797374656d7a69506f7369787a6946696c65735f7365 *7446696c6554696d65735f656e747279007374675f72657475726e546f537461636b546f700047 *48437a694e756d5f707265645f636c6f7375726500446973747269627574696f6e7a6950617273 *655574696c735f706172736552656164535f696e666f007374675f63617463685f6672616d655f *355f72657400546578747a69526561647a694c65785f7a644c723575336c766c31325f636c6f73 *75726500466f726569676e7a694d61727368616c7a6941727261795f7a64777065656b41727261 *795f636c6f737572650063686d6f644040474c4942435f322e30004748437a69496e745f646976 *4d6f64325f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f436f6e7465 *7874537461636b5f7374617469635f696e666f007374675f61705f645f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f7a644c7234686d7a6477696e64656e74 *5f696e666f007365744e6f6e426c6f636b696e674664004748437a69456e756d5f6c766c31385f *636c6f7375726500626c6f636b4173796e63457863657074696f6e737a685f6661737400446973 *747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164505f696e666f *00446973747269627574696f6e7a6953657475705f636d644e616d655f696e666f00436f6e7472 *6f6c7a694d6f6e61645f7a64776c6966744d325f656e74727900446973747269627574696f6e7a *694765744f70745f6765744f70747a715f696e666f00546578747a69526561647a694c65785f7a *644c723577466c766c33395f656e747279004748437a69494f426173655f6132365f656e747279 *004748437a69494f5f7a644c723967707a64776c617a7a7952656164486176654275666665725f *636c6f7375726500446174617a69486173685461626c655f48545f636f6e5f696e666f00474843 *7a69576f72645f7a74335f636c6f7375726500446973747269627574696f6e7a69436f6d706174 *7a6946696c65506174685f6368616e676546696c654578745f696e666f004748437a69494f4261 *73655f686146445f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946 *696c65506174685f73706c697446696c654578745f696e666f00466f726569676e7a69437a6953 *7472696e675f7769746843537472696e674c656e5f696e666f00546578747a69526561647a694c *65785f7a644c723574726132315f636c6f73757265004748437a6948616e646c655f696f657a75 *66696e616c697a7a656448616e646c655f636c6f73757265004748437a694e756d5f4a7a685f73 *74617469635f656e747279004748437a6953686f775f6131345f656e74727900546578747a6952 *6561647a694c65785f7a644c723574526c766c395f636c6f73757265004748437a69496e745f7a *657a65335f636c6f73757265005f5f737467696e69745f446174617a69496e745f004469737472 *69627574696f6e7a6953657475705f487567735f7374617469635f656e747279006973446f7562 *6c654e614e004748437a694e756d5f6a746f737a715f696e666f004748437a6953686f775f7a64 *6653686f77426f6f6c5f636c6f7375726500546578747a69526561647a694c65785f7a644c7235 *77376134395f636c6f73757265004748437a69456e756d5f7a644c723977676f7a7575707a7569 *6e747a7566625f656e74727900446973747269627574696f6e7a6950617273655574696c735f73 *686f77446570656e64656e63795f73727400446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f776974684578655f656e74727900546578747a69526561647a694c *65785f7a644c7235765a5a6c766c33325f636c6f737572650053797374656d7a69436d645f615f *636c6f73757265004748437a695265616c5f7a657a655f656e7472790044697374726962757469 *6f6e7a69436f6d7061747a6946696c65506174685f7061727365536561726368506174685f7372 *7400446973747269627574696f6e7a69436f6d7061747a6952656164505f636861696e72315f65 *6e747279004748437a694e756d5f737563635f696e666f007374675f61705f70765f7265740047 *48437a6953686f775f6135305f656e74727900546578747a695072657474795072696e747a6948 *7567686573504a5f41626f76655f636f6e5f696e666f00446973747269627574696f6e7a695365 *7475705f636d644465736372697074696f6e5f636c6f73757265004748437a694e756d5f72656d *496e74656765725f636c6f73757265004748437a69526561645f6c766c32355f656e7472790046 *6f726569676e7a69437a694572726f725f6572726e6f546f494f4572726f725f656e7472790044 *6973747269627574696f6e7a6950617273655574696c735f50617273654661696c65645f737461 *7469635f696e666f00446973747269627574696f6e7a6950617273655574696c735f7a64665368 *6f775061727365526573756c745f7372740053797374656d7a69506f7369787a69496e7465726e *616c735f7a644c733869727361745f636c6f73757265004748437a695265616c5f66726f6d496e *74656772616c5f636c6f73757265004748437a694e756d5f656e756d44656c7461496e74656765 *7246425f656e74727900546578747a69526561647a694c65785f7a644c723578396c766c34345f *636c6f73757265004748437a69426173655f7a617a615f636c6f7375726500446174617a695475 *706c655f5a33545f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061 *747a6952656164505f7a64664d6f6e61645061727365725f656e747279004748437a695265616c *5f7a64737a64646d6469765f636c6f73757265004748437a69496e745f73686f77735072656332 *5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c *34305f636c6f737572650053797374656d7a694469726563746f72795f72656d6f766546696c65 *5f696e666f00546578747a69526561647a694c65785f7a644c723573506c766c345f636c6f7375 *726500446973747269627574696f6e7a69436f6d7061747a6952656164505f6d616e79315f696e *666f00446973747269627574696f6e7a6956657273696f6e5f706172736556657273696f6e5f63 *6c6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164505f72 *657475726e315f656e747279004748437a69526561645f7a6466526561645a32545f656e747279 *005f5f737467696e69745f4748437a69496e7400446973747269627574696f6e7a695061727365 *5574696c735f706172736552656164535f73727400446973747269627574696f6e7a695061636b *6167654465736372697074696f6e5f7a6467746f45786563757461626c655f656e747279004469 *73747269627574696f6e7a694c6963656e73655f7a646645714c6963656e73655f636c6f737572 *6500546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f726573 *65745f656e747279004748437a695265616c5f7a647761345f696e666f004748437a6953686f77 *5f7a644c72315a5a506c766c395f636c6f7375726500546578747a695072657474795072696e74 *7a69487567686573504a5f5374725f636f6e5f696e666f004748437a6948616e646c655f6c766c *37325f636c6f73757265005f5f737467696e69745f53797374656d7a694469726563746f72795f *004748437a695265616c5f7a6477665f696e666f004748437a69496e745f7a70325f656e747279 *00616c6c6f634e757273657279004748437a6953686f775f7a644c72315a5a486c766c355f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6863 *4f7074696f6e735f7372740053797374656d7a694469726563746f72795f6c766c345f656e7472 *7900446973747269627574696f6e7a6953696d706c657a695574696c735f72617753797374656d *50617468457869745f636c6f73757265005f5f676d707a5f676364005f5f737467696e69745f53 *797374656d7a6954696d6500446973747269627574696f6e7a6950617273655574696c735f7061 *72736551756f7465645f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a *6952656164505f7a646766726f6d505f656e74727900446973747269627574696f6e7a69506163 *6b6167654465736372697074696f6e5f73657475704d6573736167655f7372740053797374656d *7a694469726563746f72795f7769746846696c655374617475735f656e74727900446174617a69 *4c6973745f7a644c72346e396c766c325f656e74727900446973747269627574696f6e7a694765 *744f70745f7a6467746f4f707444657363725f636c6f73757265004748437a69576f72645f5736 *347a685f7374617469635f696e666f00546578747a69526561647a694c65785f7a644c7235774e *6135365f656e747279004748437a69466c6f61745f467a685f7374617469635f656e7472790047 *48437a69426173655f7a64646d7a675f636c6f73757265004748437a695265616c5f6576656e5f *656e747279004748437a695265616c5f71756f74325f696e666f0053797374656d7a69506f7369 *787a69496e7465726e616c735f7a64776363616c6c35355f656e747279004748437a694e756d5f *75707a756c6973745f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f7a64776363616c6c33385f636c6f7375726500446174617a695475706c655f5a32545f636f6e *5f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7552445752 *5f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c32315f656e747279004748437a694e756d5f73686f7773507265635f636c6f7375726500 *53797374656d7a69456e7669726f6e6d656e745f676574456e765f636c6f73757265004748437a *694e756d5f6d696e7573496e74656765725f696e666f004748437a69526561645f726561645f65 *6e74727900546578747a69526561647a694c65785f7a644c723578466136355f656e7472790047 *48437a694c6973745f7a644c723273796c766c34325f636c6f7375726500446973747269627574 *696f6e7a6956657273696f6e5f706172736556657273696f6e52616e67655f7372740053797374 *656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33305f656e7472790054 *6578747a69506172736572436f6d62696e61746f72737a6952656164505f4c6f6f6b5f636f6e5f *696e666f00737461745f73746172744743004748437a6948616e646c655f7a644c726258376132 *5f636c6f73757265004748437a69426173655f5a435f7374617469635f696e666f004748437a69 *53686f775f7a644c72315a5a526c766c31305f696e666f007374675f73656c5f325f7570645f69 *6e666f004748437a694e756d5f656e756d44656c7461546f496e74656765725f696e666f007274 *735f6765744368617200446973747269627574696f6e7a69436f6d7061747a6952656164505f7a *6467746f505f636c6f73757265004748437a694c6973745f616e795f636c6f7375726500537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c5f636c6f7375726500 *546578747a69526561647a694c65785f7a644c723577746c766c33375f636c6f73757265004748 *437a6953686f775f61707050726563315f636c6f73757265004748437a69426173655f5a437a74 *5a435f636f6e5f696e666f00546578747a69526561647a694c65785f7a644c7235784c6136365f *636c6f7375726500446973747269627574696f6e7a6953657475705f576974684863506b675f73 *74617469635f696e666f007374675f73656c5f31335f7570645f656e747279005f5f676d707a5f *6d756c00446973747269627574696f6e7a6956657273696f6e5f6f724c6174657256657273696f *6e5f696e666f005f696e6974005f5f737467696e69745f53797374656d7a69506f7369787a6954 *65726d696e616c00446973747269627574696f6e7a694765744f70745f4f70745f636f6e5f656e *747279004748437a694c6973745f7a644c7262317072656c7a756c6973747a757374725f696e66 *6f00446973747269627574696f6e7a6953657475705f636d644465736372697074696f6e5f696e *666f005f5f737467696e69745f546578747a69526561647a694c65780070726f675f6172676300 *4748437a69546f7048616e646c65725f7a644c7233376b6c766c31305f696e666f005379737465 *6d7a69456e7669726f6e6d656e745f6c766c5f696e666f004748437a6948616e646c655f676574 *4275666665725f696e666f004748437a69436f6e635f7468726561645761697457726974655f63 *6c6f7375726500446973747269627574696f6e7a6956657273696f6e5f5468697356657273696f *6e5f636f6e5f696e666f007374675f756e636865636b65645368696674524c3634004748437a69 *4e756d5f7a657a655f656e747279004748437a69494f5f6c766c32325f696e666f004748437a69 *4c6973745f6c6f6f6b75705f696e666f00446973747269627574696f6e7a69436f6d7061747a69 *52656164505f6d756e63685f696e666f00446973747269627574696f6e7a694765744f70745f55 *6e7265714f70745f7374617469635f656e747279007772697465457272537472696e675f5f0047 *48437a69456e756d5f5a4344456e756d5f636f6e5f656e74727900446973747269627574696f6e *7a6953657475705f5769746848617070795f7374617469635f696e666f00446973747269627574 *696f6e7a6956657273696f6e5f4561726c69657256657273696f6e5f636c6f737572650070656e *64696e675f68616e646c65725f627566007374675f6c74496e74363400446174617a6954797065 *61626c655f7a657a65325f636c6f7375726500446973747269627574696f6e7a695061636b6167 *654465736372697074696f6e5f73616e697479436865636b5061636b6167655f656e7472790044 *6973747269627574696f6e7a694c6963656e73655f425344345f7374617469635f696e666f0047 *48437a69456e756d5f7a644c723261666c766c31355f696e666f004748437a6953686f775f6132 *315f636c6f73757265004748437a69426173655f756e7061636b43537472696e67557466387a68 *5f656e747279004748437a69496e745f6c6974375f636c6f737572650044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f7a646653686f774275696c64496e666f *5f636c6f73757265004748437a695265616c5f6131315f696e666f0053797374656d7a69506f73 *69787a69496e7465726e616c735f61315f636c6f73757265004748437a6948616e646c655f696f *657a756e6f745772697461626c655f656e747279004748437a69494f426173655f46696c654861 *6e646c655f636f6e5f696e666f00446973747269627574696f6e7a69436f6d7061747a69526561 *64505f736174697366795f73727400446973747269627574696f6e7a694765744f70745f4f7074 *4572725f636c6f73757265004748437a69494f426173655f6c766c32305f696e666f004748437a *6953686f775f6132325f656e74727900726573756d65546872656164005f5f737467696e69745f *4748437a695074725f004748437a69494f426173655f7a6457494f5f696e666f004748437a6949 *4f426173655f4275666665724c6973744e696c5f636c6f73757265004748437a69426173655f7a *64664571436861725f636c6f73757265004748437a69576f72645f73686f777350726563335f63 *6c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f70 *617468506172656e74735f636c6f7375726500446973747269627574696f6e7a6953657475705f *50726f6772616d6174696361436d645f7374617469635f696e666f004748437a6953746f726162 *6c655f77726974655074724f66665074725f636c6f7375726500446973747269627574696f6e7a *6953696d706c657a695574696c735f6d6f64756c65546f46696c65506174685f636c6f73757265 *004748437a695265616c5f73686f7773507265635f656e747279004748437a694e756d5f696e74 *6567657232496e745f696e666f004748437a69494f426173655f4e6f537563685468696e675f63 *6c6f73757265006672656547726f7570004748437a6953686f775f7a64737a64646d73686f7733 *5f696e666f006973466c6f6174496e66696e697465004748437a69494f5f7a6477706f6c797a75 *627566526561645f736c6f7700446973747269627574696f6e7a69436f6d7061747a6952656164 *505f736b69704d616e79315f696e666f00446973747269627574696f6e7a69436f6d7061747a69 *52656164505f736b69705370616365735f636c6f7375726500446174617a694569746865725f4c *6566745f636f6e5f656e74727900446973747269627574696f6e7a6953657475705f436f707943 *6d645f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f *64656661756c74486f6f6b65645061636b616765446573635f73727400546578747a6952656164 *7a694c65785f7a644c723577567832335f636c6f737572650053797374656d7a69506f7369787a *6954797065735f7a64664e756d434d6f64655f636c6f7375726500446973747269627574696f6e *7a6950617273655574696c735f70617273654d6f64756c654e616d65515f696e666f0044697374 *7269627574696f6e7a6950617273655574696c735f6f7074734669656c645f7372740044697374 *7269627574696f6e7a69436f6d7061747a694469726563746f72795f676574486f6d6544697265 *63746f72795f696e666f004748437a695265616c5f6131345f656e747279004748437a6953686f *775f69746f737a715f636c6f73757265005f5f737467696e69745f446174617a694c6973740044 *6973747269627574696f6e7a6950617273655574696c735f70617273655061636b6167654e616d *65515f7372740061776169744576656e74004748437a69494f426173655f6c766c32335f656e74 *7279004748437a694e756d5f6a746f735f656e747279004748437a6953686f775f7a644c72315a *5a4e6c766c385f636c6f73757265004748437a69494f426173655f57726974654275666665725f *7374617469635f656e74727900446973747269627574696f6e7a694765744f70745f4f70744172 *675f7374617469635f696e666f0053797374656d7a69494f7a694572726f725f6c766c5f636c6f *7375726500466f726569676e7a69437a6954797065735f7a646653686f7743496e745f636c6f73 *757265004748437a6948616e646c655f77616e745265616461626c6548616e646c655f656e7472 *7900546578747a695072657474795072696e747a69487567686573504a5f7a644c7234686f7a64 *776d756c74697a7563685f656e747279004748437a69494f5f685075744368617273315f696e66 *6f005f5f737467696e69745f4748437a6953545265660072657365744e6f6e426c6f636b696e67 *4664004748437a6953686f775f6135325f636c6f73757265007374675f73656c5f31335f6e6f75 *70645f656e74727900546578747a69526561647a694c65785f436861725f636f6e5f696e666f00 *4748437a69494f5f684765744275665f656e74727900446174617a694d617962655f6c766c315f *636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f6d6f64 *756c65546f46696c65506174685f656e747279004748437a6948616e646c655f7a644c724a6677 *726974657a75666c6167735f636c6f7375726500546578747a695072657474795072696e747a69 *487567686573504a5f5374725f636f6e5f656e74727900446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f63536f75726365735f696e666f00616c6c6f635f4870 *00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64664571 *5061636b6167654465736372697074696f6e5f636c6f7375726500466f726569676e7a694d6172 *7368616c7a6941727261795f776974684172726179305f636c6f73757265007374675f42434f5f *696e666f00546578747a69526561647a694c65785f7a644c723576566134375f696e666f005379 *7374656d7a69506f7369787a69496e7465726e616c735f6f7a755452554e435f696e666f004748 *437a6948616e646c655f7769746848616e646c657a715f696e666f004748437a69526561645f72 *656164507265635f696e666f004748437a69494f426173655f686146445f696e666f0044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f6578654e616d655f656e *747279004748437a6953686f775f69746f737a715f696e666f00466f726569676e7a6953746f72 *61626c655f706f6c797a757065656b427974654f6666325f696e666f0053797374656d7a694469 *726563746f72795f6c766c32365f636c6f73757265004748437a6953686f775f6132305f696e66 *6f00446973747269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f4e *4843466c61675f696e666f004748437a694e756d5f7a6c5f696e666f00546578747a6950726574 *74795072696e747a69487567686573504a5f7a6c7a675f656e747279005f5f737467696e69745f *446174617a694d617962655f004748437a69576f72645f7a644c723943616c766c31335f696e66 *6f00546578747a695072657474795072696e747a69487567686573504a5f4e6f446f635f737461 *7469635f656e747279005f5f737467696e69745f53797374656d7a69506f7369787a695369676e *616c735f004748437a6953686f775f6136305f656e747279004748437a694e756d5f7a6477696e *746567657232496e745f636c6f73757265004748437a6948616e646c655f696f657a756e6f7452 *65616461626c655f636c6f73757265004748437a69494f5f77726974654c696e6573315f636c6f *7375726500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f697352 *6f6f746564506174685f696e666f004748437a6953686f775f6134305f636c6f73757265005379 *7374656d7a694469726563746f72795f67657443757272656e744469726563746f72795f656e74 *727900446174617a694c6973745f69735375666669784f665f696e666f006d616c6c6f63404047 *4c4942435f322e30004748437a69426173655f7a657a65345f636c6f7375726500446973747269 *627574696f6e7a69436f6d7061747a6946696c65506174685f6a6f696e46696c654e616d655f65 *6e747279007374675f4341465f424c41434b484f4c455f696e666f00446973747269627574696f *6e7a69436f6d7061747a6946696c65506174685f7061727365536561726368506174685f636c6f *73757265007374675f73656c5f31345f7570645f656e747279007374675f786f72363400546578 *747a69526561647a694c65785f7a644c7235753166726f6d496e74656772616c5f696e666f0063 *6f6d706c656d656e74496e74656765727a685f6661737400546578747a69526561647a694c6578 *5f7a644c723574766132335f636c6f73757265004748437a694e756d5f7a646653686f77496e74 *656765725f636c6f7375726500546578747a695072657474795072696e747a6948756768657350 *4a5f737472696e677a757478745f696e666f004748437a695265616c5f72656d325f656e747279 *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f72657475726e31 *5f696e666f00546578747a695072657474795072696e747a69487567686573504a5f746578745f *656e747279004748437a6953686f775f7a644c72315a5a4a6c766c365f656e747279004748437a *69576f72645f7a74335f696e666f004748437a69526561645f7a6466526561645a4d5a4e5f696e *666f007374675f616e643634004748437a69526561645f7a6473726561644c6973745072656344 *656661756c74345f656e747279004748437a69494f426173655f494f4572726f725f636f6e5f65 *6e74727900446973747269627574696f6e7a6953657475705f70617273654275696c6441726773 *5f656e74727900546578747a69526561647a694c65785f7a644c723576587831335f636c6f7375 *726500446973747269627574696f6e7a69457874656e73696f6e5f54656d706c6174654861736b *656c6c5f7374617469635f696e666f004748437a69494f426173655f577269746548616e646c65 *5f7374617469635f696e666f004748437a695074725f5074725f636f6e5f656e74727900446973 *747269627574696f6e7a694765744f70745f526571756972654f726465725f7374617469635f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c3331 *5f736c6f7700446174617a695475706c655f5a33545f636f6e5f696e666f004748437a694e756d *5f4a7a685f636f6e5f656e74727900446973747269627574696f6e7a695061636b6167655f5061 *636b6167654964656e7469666965725f636c6f7375726500446973747269627574696f6e7a6953 *657475705f636f6e666967416c65785f656e74727900446174617a695479706561626c655f5479 *70655265705f636f6e5f656e747279005f5f737467696e69745f53797374656d7a69506f736978 *7a6954696d655f00446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f72656164486f6f6b65644275696c64496e666f5f696e666f00446973747269627574696f6e *7a69436f6d7061747a6952656164505f6d616e7954696c6c5f656e747279004469737472696275 *74696f6e7a695061636b6167655f7a6467746f5061636b6167654964656e7469666965725f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *67746f5061636b6167654465736372697074696f6e5f656e747279004748437a694572725f6469 *765a5a65726f4572726f725f636c6f73757265004748437a694c6973745f636f6e6361744d6170 *5f636c6f73757265004748437a694c6973745f7a644c7232726f6c766c31345f696e666f007374 *61636b4f766572666c6f77004748437a69496e745f7a64776469764d6f64325f656e7472790044 *6174617a695475706c655f7a646645715a32545f696e666f004748437a694e756d5f6c69745f65 *6e74727900546578747a69526561647a694c65785f7a644c723574486132395f696e666f005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35375f636c6f7375 *7265004748437a694c6973745f7265706c69636174655f696e666f004748437a694572725f615f *636c6f73757265004748437a69494f426173655f68614275666665724d6f64655f696e666f0047 *48437a69526561645f726561644c697374507265635f636c6f73757265004748437a694c697374 *5f756e7a7a6970335f656e74727900726573697a654e757273657279007374675f626c6f636b5f *6e6f72656773004748437a69576f72645f707265644572726f725f636c6f73757265004748437a *695765616b5f72756e46696e616c697a7a657242617463685f696e666f004748437a694e756d5f *7a657a655f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f42534433 *5f7374617469635f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c *65506174685f6a6f696e46696c654578745f656e747279005f5f737467696e69745f5379737465 *6d7a69506f7369787a69496e7465726e616c73005f5f737467696e69745f466f726569676e7a69 *4d61727368616c7a694572726f725f00446973747269627574696f6e7a69436f6d7061747a6952 *656164505f4c6f6f6b5f7374617469635f696e666f0053746752657475726e004748437a694261 *73655f496e725f7374617469635f696e666f00446973747269627574696f6e7a6956657273696f *6e5f446570656e64656e63795f636f6e5f696e666f004748437a6953686f775f6133305f656e74 *7279004748437a69494f5f7a644c723966746c766c395f696e666f0053797374656d7a69506f73 *69787a69496e7465726e616c735f7a64776363616c6c35325f636c6f7375726500446973747269 *627574696f6e7a69436f6d7061747a6952656164505f4661696c5f636c6f737572650044697374 *7269627574696f6e7a6956657273696f6e5f77697468696e52616e67655f636c6f737572650054 *6578747a69526561647a694c65785f7a644c723575566c766c32315f696e666f004748437a6949 *4f5f7a644c7239663961355f696e666f004748437a69426173655f666f6c64725f696e666f0044 *6973747269627574696f6e7a6953696d706c657a695574696c735f646f74546f5365705f636c6f *73757265007374675f67635f64315f726574004748437a694e756d5f6d696e7573496e74656765 *725f656e747279004748437a694c6973745f7370616e5f656e747279005f5f737467696e69745f *446174617a6942697473004748437a6948616e646c655f7a644c72633372657272385f636c6f73 *757265004748437a69526561645f61375f636c6f73757265004748437a69494f426173655f5772 *6974654d6f64655f7374617469635f656e74727900446973747269627574696f6e7a6953696d70 *6c657a695574696c735f636f707946696c65566572626f73655f737274004748437a695265616c *5f7a64737a63325f696e666f004748437a6948616e646c655f64735f696e666f0053797374656d *7a69457869745f6c766c315f656e7472790072616973657a685f6661737400546578747a695265 *61647a694c65785f7a644c723576486c766c32395f696e666f00446973747269627574696f6e7a *6953657475705f5769746843707068735f636c6f7375726500446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f7061727365486f6f6b65644275696c64496e666f *5f73727400446973747269627574696f6e7a6953657475705f7061727365436f6e666967757265 *417267735f696e666f0067656e65726174696f6e730053797374656d7a69457869745f6572725f *636c6f73757265004748437a69526561645f7a6473726561644c69737444656661756c74315f63 *6c6f73757265004748437a694e756d5f71756f74496e74656765725f636c6f7375726500474843 *7a69494f426173655f526561644275666665725f7374617469635f696e666f0044697374726962 *7574696f6e7a6950617273655574696c735f72756e505f656e7472790044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f7061636b6167655f636c6f7375726500 *53797374656d7a69506f7369787a69496e7465726e616c735f61335f656e74727900546578747a *69526561647a694c65785f7a644c72357a7a646c766c38365f656e747279006d756e6d61704040 *474c4942435f322e3000546578747a69526561647a694c65785f7a644c72357a7a6e6c766c3838 *5f656e74727900546578747a69526561647a694c65785f7a644c723578707832385f636c6f7375 *726500546578747a69526561647a694c65785f7a644c723575566c766c32315f636c6f73757265 *00446973747269627574696f6e7a695061636b6167655f7a6467746f5061636b6167654964656e *7469666965725f636c6f73757265004748437a69576f72645f57387a685f636f6e5f656e747279 *00446973747269627574696f6e7a69436f6d7061747a6952656164505f46696e616c5f696e666f *00446973747269627574696f6e7a6956657273696f6e5f4c6174657256657273696f6e5f636c6f *73757265004748437a695265616c5f7a64737a64646d6469765f696e666f00446174617a694861 *73685461626c655f7a64776c6f6f6b75705f696e666f004748437a69494f426173655f7a645749 *4f5f636c6f73757265004748437a69496e745f71756f7452656d325f636c6f7375726500474843 *7a694c6973745f6c766c33325f656e747279004748437a6948616e646c655f696f657a75636c6f *73656448616e646c655f656e747279004748437a69426173655f7a64664571496e745f636c6f73 *757265007374675f7570645f6672616d655f325f726574004748437a69496e745f7a6477626f75 *6e646564456e756d46726f6d5468656e5f636c6f7375726500446174617a695475706c655f5a33 *545f636f6e5f656e747279004748437a69456e756d5f70726564355f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f72656164507a75746f7a75535f73727400 *4748437a69494f426173655f436c6f73656448616e646c655f7374617469635f696e666f004748 *437a694e756d5f656e756d46726f6d546f5f656e74727900446973747269627574696f6e7a6943 *6f6d7061747a6946696c65506174685f73706c697446696c654e616d655f696e666f007374675f *494e445f4f4c4447454e5f5045524d5f696e666f0053797374656d7a694469726563746f72795f *6c766c31335f656e74727900546578747a69526561647a694c65785f7a644c7235796c6c766c36 *355f636c6f73757265004748437a6953686f775f7a646653686f774d617962655f696e666f0044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6578706f736564 *4d6f64756c65735f656e747279004748437a695265616c5f665f636c6f73757265004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f6d6b536561726368506174685f *73727400446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *6653686f7745786563757461626c655f636c6f7375726500446973747269627574696f6e7a6953 *657475705f57697468486164646f636b5f636f6e5f696e666f00546578747a69526561647a694c *65785f7a644c723577466c766c33395f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723541646c766c3131335f636c6f7375726500446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f6c6963656e73655f696e666f00546578747a69526561 *647a694c65785f7a644c723578506c766c35315f636c6f7375726500446973747269627574696f *6e7a69457874656e73696f6e5f456d707479446174614465636c735f7374617469635f696e666f *007374675f5041505f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f *616c6c6f636142797465735f696e666f004748437a69456e756d5f65666474496e7446425f696e *666f004748437a69526561645f726561644c697374507265635f696e666f004748437a69526561 *6c5f6469764d6f64325f636c6f73757265004748437a694c6973745f6c766c31365f636c6f7375 *726500546578747a69526561647a694c65785f7a644c723578686136315f656e74727900546578 *747a69526561647a694c65785f7a644c723573546c766c365f696e666f004748437a6952656164 *5f6c766c395f656e747279004748437a69426173655f636f6d70617265496e745f696e666f0053 *797374656d7a694469726563746f72795f6c766c355f636c6f7375726500446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f7a6467746f4c6962726172795f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7772 *6974655061636b6167654465736372697074696f6e5f737274004748437a69494f426173655f4e *6f427566666572696e675f7374617469635f656e74727900546578747a69507265747479507269 *6e747a69487567686573504a5f726564756365446f63315f656e747279004748437a695265616c *5f71756f74315f656e74727900546578747a69526561647a694c65785f454f465f737461746963 *5f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f646c *6c457874656e73696f6e5f73727400446973747269627574696f6e7a694765744f70745f7a6467 *746f4172674f726465725f656e747279004748437a694c6973745f6c6f6f6b75705f656e747279 *00446973747269627574696f6e7a6953657475705f476c6f62616c466c61675f7374617469635f *656e747279004748437a69494f426173655f426c6f636b65644f6e446561644d5661725f636c6f *73757265007274735f676574576f72643634004748437a6948616e646c655f696f657a756e6f74 *5772697461626c655f696e666f0053797374656d7a69494f5f685075745374724c6e5f636c6f73 *757265004748437a69576f72645f5736347a685f7374617469635f656e74727900446174617a69 *4d617962655f636f6e327461677a754d617962657a685f656e7472790044697374726962757469 *6f6e7a69436f6d7061747a6952656164505f73657042795f636c6f737572650044697374726962 *7574696f6e7a695061636b6167654465736372697074696f6e5f62617369635374616e7a7a6146 *69656c64735f636c6f73757265004748437a69496e745f7a64777a657a655f636c6f7375726500 *446973747269627574696f6e7a69457874656e73696f6e5f506172616c6c656c4c697374436f6d *705f7374617469635f696e666f004748437a69576f72645f7a647766726f6d496e746567657233 *5f656e74727900446973747269627574696f6e7a6950617273655574696c735f73686f77457272 *6f725f656e747279006d656d6d6f76654040474c4942435f322e30004748437a6953686f775f6c *766c31335f636c6f7375726500446973747269627574696f6e7a6953657475705f4748435f636c *6f73757265004748437a69494f5f7a6477684765744275665f636c6f7375726500446973747269 *627574696f6e7a695061636b6167655f7a646766726f6d5061636b6167654964656e7469666965 *725f636c6f73757265004748437a69426173655f7a64646d7a737a655f636c6f73757265004748 *437a69526561645f6c766c32375f636c6f7375726500446973747269627574696f6e7a69506172 *73655574696c735f5374616e7a7a614669656c645f696e666f00446973747269627574696f6e7a *6956657273696f6e5f6f724561726c69657256657273696f6e5f636c6f7375726500446174617a *695479706561626c655f43616368655f7374617469635f656e747279004748437a694c6973745f *706f6c797a757265765f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a *6952656164505f736174697366795f636c6f73757265007374675f454e445f54534f5f51554555 *455f696e666f00546578747a69526561647a694c65785f7a644c7235745a5a7a637a635f656e74 *72790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36395f *656e74727900546578747a69526561647a694c65785f7a644c723579786c766c37315f636c6f73 *75726500446973747269627574696f6e7a6953657475705f7a646652656164436f6d70696c6572 *466c61766f725f636c6f73757265004748437a69494f426173655f6c766c31395f696e666f0047 *48437a69546f7048616e646c65725f7a644c723337676c766c385f636c6f737572650053797374 *656d7a69506f7369787a6946696c65735f61636365737354696d655f656e747279004748437a69 *426173655f5a437a745a435f636f6e5f656e74727900446174617a695475706c655f5a32545f63 *6f6e5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f63686f *6963655f737274004748437a694172725f6c766c375f656e74727900466f726569676e7a695374 *6f7261626c655f5a434453746f7261626c655f636f6e5f656e747279004748437a694c6973745f *7a7a697057697468335f656e74727900446973747269627574696f6e7a694765744f70745f6765 *744f70747a715f656e747279004748437a69526561645f6c766c32325f636c6f73757265004748 *437a6948616e646c655f7a644c7262596a6c766c31355f636c6f737572650053797374656d7a69 *506f7369787a6954797065735f7a64665265616c435069645f636c6f7375726500446973747269 *627574696f6e7a69436f6d7061747a6952656164505f7a646646756e63746f725061727365725f *73727400466f726569676e7a694d61727368616c7a695574696c735f776974684d616e795f696e *666f00446973747269627574696f6e7a694d616b655f64656661756c744d61696e4e6f52656164 *5f656e74727900546578747a69526561647a694c65785f7a644c723578356135395f636c6f7375 *726500446973747269627574696f6e7a69457874656e73696f6e5f4f7665726c617070696e6749 *6e7374616e6365735f636c6f7375726500446973747269627574696f6e7a6953657475705f7061 *7273654275696c64417267735f73727400446973747269627574696f6e7a694c6963656e73655f *7a646653686f774c6963656e73655f636c6f7375726500466f726569676e7a69437a694572726f *725f7a644c723353517a64776363616c6c5f696e666f00446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f7a646766726f6d4c6962726172795f636c6f73757265 *0072657375727265637465645f74687265616473004748437a69426173655f6d6f64496e747a68 *5f636c6f73757265004748437a69494f5f77726974654c696e6573315f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f7a647a645f696e666f004748437a6953 *686f775f73686f7773507265635f636c6f73757265007374675f73656c5f31315f6e6f7570645f *656e747279005f5f737467696e69745f446973747269627574696f6e7a694c6963656e73655f00 *546578747a695072657474795072696e747a69487567686573504a5f66756c6c52656e6465725f *656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c *375f696e666f007365746974696d65724040474c4942435f322e30004748437a69426173655f6c *766c315f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c73 *5f72617753797374656d50617468457869745f696e666f00546578747a69507265747479507269 *6e747a69487567686573504a5f4e6573745f636f6e5f696e666f00546578747a69526561647a69 *4c65785f7a644c723541446c65785374724974656d5f696e666f00546578747a69526561647a69 *4c65785f7a644c72357a7a6e6c766c38385f696e666f005f5f737467696e69745f446174617a69 *4569746865725f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a6466 *4d6f6e6164505f737274004748437a69494f426173655f6c766c32395f636c6f73757265007468 *72656164537461626c655074725461626c65004748437a695265616c5f6131325f636c6f737572 *6500446973747269627574696f6e7a6953657475705f476c6f62616c466c61675f636c6f737572 *65004748437a695265616c5f5a43445265616c5f636f6e5f656e747279004748437a69494f5f7a *6477706f6c797a7562756657726974655f636c6f7375726500446973747269627574696f6e7a69 *50617273655574696c735f73686f774572726f725f696e666f004748437a6953686f775f61355f *656e74727900446973747269627574696f6e7a6953657475705f7a6467746f436d645f636c6f73 *75726500446973747269627574696f6e7a694765744f70745f556e7265714f70745f636c6f7375 *726500546578747a695072657474795072696e747a69487567686573504a5f7a644c7234676f6c *766c31365f656e747279004748437a695265616c5f7a647761345f636c6f73757265007075744d *5661727a685f666173740053797374656d7a69506f7369787a69496e7465726e616c735f7a6477 *6363616c6c33345f736c6f77005f5f676d707a5f636f6d00546578747a69526561647a694c6578 *5f7a644c7235764c7831315f636c6f73757265004748437a69456e756d5f7a6466456e756d496e *745f636c6f7375726500446973747269627574696f6e7a6953657475705f436f6d70696c65725f *636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f737472 *6970436f6d6d656e74735f636c6f73757265004748437a69426173655f7a64737a64646d6d6178 *5f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f6d756e63 *685f636c6f7375726500446973747269627574696f6e7a694c6963656e73655f4c6963656e7365 *5f636c6f737572655f74626c00446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f68634f7074696f6e735f636c6f737572650053797374656d7a69506f7369787a *69496e7465726e616c735f7a64776363616c6c32385f656e747279004748437a69576f72645f57 *31367a685f636f6e5f656e7472790069737764696769744040474c4942435f322e30004748437a *69496e745f6469764d6f64325f636c6f7375726500446973747269627574696f6e7a695061636b *6167655f73686f775061636b61676549645f656e74727900446973747269627574696f6e7a6947 *65744f70745f4e6f6e4f70745f7374617469635f656e747279004748437a69526561645f726561 *644c697374507265635f656e74727900446973747269627574696f6e7a6953657475705f706172 *7365496e7374616c6c417267735f656e747279006465636f6465466c6f61747a685f6661737400 *546578747a69526561647a694c65785f7a644c72357a7a336973496466436861725f636c6f7375 *726500546578747a69526561647a694c65785f7a644c723579626c766c36305f636c6f73757265 *004748437a69546f7048616e646c65725f7a644c723337656c766c375f636c6f73757265004469 *73747269627574696f6e7a69457874656e73696f6e5f4e6f496d706c696369745072656c756465 *5f7374617469635f696e666f004748437a69494f426173655f6132385f656e7472790044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f63617465676f72795f65 *6e74727900446973747269627574696f6e7a695061636b6167655f70617273655061636b616765 *4e616d655f696e666f004748437a694c6973745f636f6e6361744d61705f656e74727900474843 *7a69426173655f6e6f745f696e666f005f5f737467696e69745f446174617a69496e7400474843 *7a69576f72645f5736347a685f636f6e5f656e74727900446174617a695475706c655f736e645f *696e666f007274735f636865636b536368656453746174757300446973747269627574696f6e7a *6950617273655574696c735f6669656c6453686f775f636c6f73757265007374675f6774496e74 *363400446973747269627574696f6e7a6950617273655574696c735f73706c69745374616e7a7a *61735f696e666f004748437a69494f426173655f4275666665724c697374436f6e735f73746174 *69635f656e74727900546578747a69506172736572436f6d62696e61746f72737a695265616450 *7265635f706661696c5f696e666f005f5f737467696e69745f4748437a695061636b004748437a *69426173655f636f6d706172655f696e666f004748437a69466c6f61745f447a685f7374617469 *635f696e666f00446973747269627574696f6e7a6953657475705f487567735f7374617469635f *696e666f00546578747a695072657474795072696e747a69487567686573504a5f746578745f69 *6e666f007374675f756e636865636b65644953686966744c363400616c6c5f7468726561647300 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32305f636c6f *73757265004748437a69494f426173655f4475706c657848616e646c655f7374617469635f656e *747279005f5f737467696e69745f4748437a694e756d00546578747a69506172736572436f6d62 *696e61746f72737a6952656164507265635f7a64664d6f6e616452656164507265635f636c6f73 *757265007274735f6d6b496e743634004748437a695265616c5f7a64737a64646d6d6f645f636c *6f73757265004748437a69426173655f6d6f64496e747a685f696e666f007374675f61705f305f *72657400546578747a695072657474795072696e747a69487567686573504a5f54657874426573 *6964655f636f6e5f656e74727900466f726569676e7a69437a69537472696e675f7a6477706565 *6b43537472696e675f656e747279005f5f737467696e69745f466f726569676e7a694d61727368 *616c7a695574696c735f004748437a6953686f775f6137325f656e747279004469737472696275 *74696f6e7a6950726550726f636573737a69556e6c69745f50726f6772616d5f636f6e5f696e66 *6f0053797374656d7a694469726563746f72795f6c766c335f696e666f00546578747a69506172 *736572436f6d62696e61746f72737a6952656164507265635f6661696c5f636c6f737572650047 *48437a694e756d5f5a43444e756d5f636f6e5f656e747279004748437a6953686f775f6137335f *636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f696e636c756465735f636c6f73757265004748437a6953686f775f6132345f656e74727900 *4748437a69556e69636f64655f7a6477746f4c6f7765725f636c6f73757265004748437a694861 *6e646c655f7a6477666c757368526561644275666665725f656e74727900446973747269627574 *696f6e7a69436f6d7061747a6952656164505f6f7074696f6e616c5f656e747279004748437a69 *53686f775f7a644c72315a5a546c766c31315f696e666f007374675f7969656c645f6e6f726567 *7300546578747a69526561647a694c65785f7a644c72357a7a766c766c39315f636c6f73757265 *004748437a69526561645f7a644c723639646c766c31375f636c6f73757265004748437a69494f *426173655f6132355f656e747279007374675f696e74546f496e74363400446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f6c644f7074696f6e735f656e747279 *004748437a6953686f775f6131385f636c6f7375726500546578747a69526561647a694c65785f *7a644c723577706135325f636c6f73757265004748437a6948616e646c655f7a644c7262584461 *31385f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f7a6477636361 *6c6c315f656e74727900446973747269627574696f6e7a6953696d706c657a695574696c735f64 *6f74546f5365705f73727400546578747a69526561647a694c65785f7a644c7235754e78325f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *34675761626f7665315f696e666f00446973747269627574696f6e7a6950617273655574696c73 *5f6669656c645365745f696e666f004748437a694c6973745f636f6e6361745f636c6f73757265 *007374675f5041505f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f *7a64776363616c6c33365f636c6f7375726500446973747269627574696f6e7a694765744f7074 *5f4f7074696f6e5f696e666f00546578747a69526561647a694c65785f6c766c3132355f696e66 *6f004748437a69496e745f66726f6d456e756d325f636c6f7375726500636f6e746578745f7377 *6974636800546578747a69526561647a694c65785f7a644c7235776e6c766c33365f696e666f00 *4748437a69576f72645f616273335f696e666f0053797374656d7a69506f7369787a69496e7465 *726e616c735f7a64776363616c6c33315f696e666f007374675f696e746572705f636f6e737472 *345f656e74727900446174617a694d617962655f6d617962655f656e7472790044697374726962 *7574696f6e7a6953657475705f636f6e6669674863466c61766f725f696e666f004748437a694c *6973745f7a644c723271556c766c385f636c6f73757265004748437a694c6973745f7a644c7232 *72796c766c31395f696e666f00546578747a69526561647a694c65785f6c766c3132355f656e74 *727900446973747269627574696f6e7a6953657475705f57697468436f6d70696c65725f636f6e *5f656e747279004748437a69494f5f7a6477706f6c797a75627566526561645f696e666f005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33365f656e747279 *00446973747269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f4875 *6773466c61675f636c6f73757265004748437a6953686f775f6133325f656e7472790044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f686f6d65706167655f65 *6e747279005f5f737467696e69745f53797374656d7a69494f5f007374675f494e445f315f696e *666f004748437a69426173655f7a617a615f696e666f00446973747269627574696f6e7a695061 *7273655574696c735f5374616e7a7a614669656c645f7374617469635f696e666f00696e697455 *7365725369676e616c7300446973747269627574696f6e7a69436f6d7061747a69446972656374 *6f72795f676574486f6d654469726563746f72795f656e747279007374675f61705f7070705f72 *65740053797374656d7a694469726563746f72795f7a644c72396279646573635f696e666f0047 *48437a69494f5f7a6477685075744275667a715f636c6f7375726500546578747a695061727365 *72436f6d62696e61746f72737a6952656164507265635f7a677a675f656e747279004748437a69 *494f426173655f6861497353747265616d5f636c6f7375726500446973747269627574696f6e7a *69457874656e73696f6e5f47656e65726963735f7374617469635f656e747279004748437a694c *6973745f726576657273655f636c6f7375726500546578747a69526561647a694c65785f7a644c *7235745a5a7a637a635f696e666f00546578747a695072657474795072696e747a694875676865 *73504a5f646f75626c6551756f7465735f656e74727900446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f4275696c64496e666f5f656e74727900546578747a69 *526561647a694c65785f7a644c723574626131335f636c6f73757265004748437a694e756d5f7a *64776469764d6f64496e74656765725f636c6f737572650053797374656d7a69506f7369787a69 *496e7465726e616c735f61345f696e666f004748437a69496e745f626f756e646564456e756d46 *726f6d5f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f7061 *727365436f6d6d614c6973745f73727400446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f6d6f64756c65506174685f656e747279004748437a69426173655f7a *644c723266336c766c325f636c6f73757265004748437a69426173655f6e6f745f636c6f737572 *65004748437a694c6973745f6c766c365f696e666f004748437a69426173655f6774496e745f63 *6c6f73757265007374675f73656c5f395f7570645f696e666f004748437a69494f426173655f44 *75706c657848616e646c655f7374617469635f696e666f00446973747269627574696f6e7a6950 *617273655574696c735f7a646766726f6d5061727365526573756c745f656e7472790044697374 *7269627574696f6e7a6953657475705f7a6467746f436f6d70696c65725f656e74727900474843 *7a6953686f775f6133385f696e666f004748437a6948616e646c655f696f657a75454f465f656e *74727900446973747269627574696f6e7a6950617273655574696c735f70617273655665727369 *6f6e52616e6765515f737274004748437a69494f426173655f7a644c7236624861315f636c6f73 *75726500446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f77496e636f6865 *72656e74496e7374616e6365735f7374617469635f656e74727900446973747269627574696f6e *7a6956657273696f6e5f7a64665479706561626c6556657273696f6e5f656e7472790044697374 *7269627574696f6e7a694765744f70745f7573616765496e666f5f737274007374675f626c6f63 *6b5f7075746d7661725f696e666f00546578747a69526561647a694c65785f7a644c7235754c61 *33355f656e74727900466f726569676e7a69437a694572726f725f7a644c723353517a64776363 *616c6c5f636c6f7375726500446174617a695475706c655f6673745f636c6f7375726500474843 *7a69494f5f6c766c31385f656e747279004748437a694c6973745f7a644c7232726f6c766c3134 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c7235764e6c766c33305f69 *6e666f004748437a69426173655f7a707a705f696e666f004748437a694c6973745f7a644c7232 *72536c766c32395f636c6f73757265004748437a6953686f775f7a64737a64646d73686f774c69 *7374335f656e74727900706572666f726d474357697468526f6f7473004748437a69576f72645f *746f496e7465676572325f656e747279004748437a6948616e646c655f77726974655261774275 *666665725074725f656e747279007374646f75744040474c4942435f322e30004748437a695265 *616c5f746f526174696f6e616c325f636c6f73757265004748437a694e756d5f7a647773686f77 *73507265635f696e666f005f5f737467696e69745f446174617a69486173685461626c65004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f72656164486f6f6b *65644275696c64496e666f5f73727400546578747a69526561647a694c65785f7a644c7235417a *7a6c766c3132345f636c6f7375726500546578747a69526561647a694c65785f7a644c72357672 *6134325f696e666f00446174617a694d617962655f69734e6f7468696e675f656e747279004748 *437a69426173655f756e7061636b466f6c647243537472696e677a685f636c6f73757265004469 *73747269627574696f6e7a6953657475705f7a646766726f6d436f6d70696c6572466c61766f72 *5f636c6f73757265007374646572724040474c4942435f322e300073657450726f674172677600 *53797374656d7a69494f7a694572726f725f6c766c5f696e666f00446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f6275696c64446570656e64735f636c6f7375 *72650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35335f *656e74727900446973747269627574696f6e7a6953657475705f636f6e6669674863506b675f69 *6e666f0053797374656d7a69457869745f6c766c315f636c6f7375726500446973747269627574 *696f6e7a6953657475705f636f6e66696743707068735f636c6f737572650053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c33335f636c6f7375726500474843 *7a694e756d5f616273325f636c6f73757265004748437a69494f426173655f4572726f7243616c *6c5f636f6e5f656e747279004748437a69494f426173655f537461636b4f766572666c6f775f73 *74617469635f696e666f00446973747269627574696f6e7a6956657273696f6e5f4561726c6965 *7256657273696f6e5f7374617469635f656e747279005f5f737467696e69745f446174617a694c *6973745f004748437a69576f72645f616273335f656e747279004748437a69494f426173655f61 *335f636c6f73757265004748437a694e756d5f6e6567617465496e74656765725f636c6f737572 *65004748437a694c6973745f7a644c723272656c766c395f696e666f004748437a69494f426173 *655f6c766c32325f696e666f00546578747a69526561647a694c65785f7a644c723573526c766c *355f656e74727900446973747269627574696f6e7a6953696d706c657a695574696c735f6d6b4c *69624e616d655f696e666f00546578747a69526561647a694c65785f7a644c723575506c766c31 *395f636c6f7375726500466f726569676e7a69437a694572726f725f7468726f774572726e6f5f *696e666f0053797374656d7a69494f7a694572726f725f696f6553657446696c654e616d655f69 *6e666f00446973747269627574696f6e7a69457874656e73696f6e5f556e736166654f7665726c *617070696e67496e7374616e6365735f636c6f73757265004748437a694e756d5f66726f6d496e *7465676572315f636c6f7375726500546578747a69526561647a694c65785f7a644c7235785261 *36375f656e74727900546578747a69526561647a694c65785f7a644c7235754c6133355f696e66 *6f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36375f73 *6c6f7700546578747a69526561647a694c65785f7a644c723541666c766c3131345f636c6f7375 *726500446973747269627574696f6e7a6953657475705f48656c69756d5f636c6f737572650061 *626f72744040474c4942435f322e30007374675f73656c5f305f6e6f7570645f656e7472790044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f70617273654465 *736372697074696f6e5f656e74727900546578747a69526561647a694c65785f7a644c7268576c *65784469676974735f636c6f737572650053797374656d7a69506f7369787a69496e7465726e61 *6c735f6f7a754e4f435454595f636c6f7375726500466f726569676e7a694d61727368616c7a69 *416c6c6f635f6c766c5f636c6f73757265007374675f454d5054595f4d5641525f696e666f0047 *48437a69494f426173655f4173796e63457863657074696f6e5f7374617469635f656e74727900 *446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a646766726f *6d45786563757461626c655f696e666f005f5f737467696e69745f4748437a694572725f004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c6963656e736546 *696c655f636c6f7375726500446973747269627574696f6e7a6953657475705f496e7374616c6c *436d645f7374617469635f696e666f00546578747a69526561647a694c65785f537472696e675f *636f6e5f656e747279004748437a695265616c5f61385f656e7472790044697374726962757469 *6f6e7a6953657475705f7a646766726f6d466c61675f696e666f00676574537461626c65507472 *00446973747269627574696f6e7a69436f6d7061747a6952656164505f46696e616c5f73746174 *69635f656e747279004748437a69494f426173655f556e737570706f727465644f706572617469 *6f6e5f7374617469635f696e666f004748437a69494f426173655f4e6f427566666572696e675f *636c6f73757265004748437a69526561645f7a6473726561644c69737444656661756c74325f63 *6c6f73757265006973546872656164426f756e6400546578747a695072657474795072696e747a *69487567686573504a5f506167654d6f64655f7374617469635f696e666f00696e6974426c6f63 *6b416c6c6f6361746f7200446174617a695479706561626c655f5479436f6e5f7374617469635f *656e74727900446973747269627574696f6e7a694765744f70745f52657475726e496e4f726465 *725f636f6e5f696e666f004748437a695265616c5f7a644c7235315a5a6c766c375f636c6f7375 *726500446973747269627574696f6e7a6953657475705f5769746848617070795f636f6e5f656e *74727900446973747269627574696f6e7a6953657475705f5072656669785f636f6e5f696e666f *004748437a695265616c5f7a647761355f636c6f7375726500446973747269627574696f6e7a69 *50617273655574696c735f73686f7746696c65506174685f656e74727900446973747269627574 *696f6e7a69457874656e73696f6e5f7a646766726f6d457874656e73696f6e5f696e666f005f5f *676d707a5f696e6974007374675f61705f707070705f696e666f005f5f737467696e69745f4469 *73747269627574696f6e7a69436f6d7061747a694469726563746f72795f004469737472696275 *74696f6e7a6956657273696f6e5f4c6174657256657273696f6e5f7374617469635f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f7a6467746f505f656e7472 *79004748437a69466f726569676e5074725f4d616c6c6f635074725f7374617469635f696e666f *00446973747269627574696f6e7a6956657273696f6e5f6265747765656e56657273696f6e7349 *6e636c75736976655f636c6f7375726500546578747a695072657474795072696e747a69487567 *686573504a5f7a6477736570315f656e74727900446973747269627574696f6e7a695365747570 *5f57697468436f6d70696c65725f636c6f7375726500446973747269627574696f6e7a69536574 *75705f7061727365476c6f62616c417267735f636c6f7375726500446973747269627574696f6e *7a694765744f70745f6765744f70747a715f737274004748437a69494f5f7a644c723966646c76 *6c315f636c6f73757265007374675f67656e5f7969656c6400446973747269627574696f6e7a69 *457874656e73696f6e5f48657265446f63756d656e74735f636c6f73757265007374675f666f72 *6365494f5f7265740053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c33385f656e74727900446973747269627574696f6e7a695061636b6167655f5061636b61 *67654964656e7469666965725f7374617469635f696e666f004748437a695265616c5f665f656e *747279004748437a69494f426173655f6132335f696e666f00446973747269627574696f6e7a69 *457874656e73696f6e5f436f6e74657874537461636b5f636c6f73757265004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f7570646174655061636b61676544 *65736372697074696f6e5f737274004748437a6948616e646c655f68436c6f73657a7568616e64 *6c657a755f656e747279005f5f737467696e69745f4748437a69436f6e63007374675f73656c5f *31355f7570645f656e74727900546578747a69526561647a694c65785f7a644c723579726c766c *36385f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f *636861696e725f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164 *505f4765745f636c6f73757265004748437a69494f426173655f6c766c33305f636c6f73757265 *00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c *7573505f696e666f00446973747269627574696f6e7a6953657475705f7a646653686f77436f6d *70696c6572466c61766f725f636c6f73757265004748437a69494f5f7a6477636f6d6d69744275 *666665727a715f656e747279004748437a69426173655f6774496e745f656e7472790044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f74657374656457697468 *5f636c6f7375726500446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6578654d6f64756c65735f656e747279005f5f676d707a5f786f72004748437a69494f42 *6173655f68614275666665725f696e666f00446973747269627574696f6e7a69436f6d7061747a *6952656164505f6761746865725f73727400446973747269627574696f6e7a6953657475705f43 *6f6e666967436d645f696e666f00446973747269627574696f6e7a6956657273696f6e5f6f724c *6174657256657273696f6e5f656e747279004748437a69494f426173655f5061747465726e4d61 *7463684661696c5f7374617469635f696e666f00446973747269627574696f6e7a695365747570 *5f576974684863506b675f636c6f7375726500466f726569676e7a69437a694572726f725f7468 *726f774572726e6f49664d696e7573315f696e666f004748437a694e756d5f5a43444e756d5f63 *6f6e5f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f676574 *4f7074696f6e7346726f6d536f757263655f73727400446973747269627574696f6e7a69536574 *75705f5344697374436d645f636c6f7375726500446973747269627574696f6e7a694765744f70 *745f7a6467746f41726744657363725f696e666f00696e69744361706162696c6974696573005f *5f737467696e69745f53797374656d7a69506f7369787a6955736572004748437a69496e745f49 *387a685f7374617469635f696e666f004748437a694c6973745f706f6c797a75696e69747a715f *636c6f73757265007374675f73656c5f335f6e6f7570645f656e747279004748437a695265616c *5f7a64736576656e5f696e666f004748437a69526561645f7a64737a64646d7265616473507265 *63345f696e666f00546578747a695072657474795072696e747a69487567686573504a5f667365 *705f696e666f00446973747269627574696f6e7a6950617273655574696c735f6669656c645365 *745f656e74727900446973747269627574696f6e7a6950617273655574696c735f706172736552 *656164535f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f *46696e616c5f656e74727900446973747269627574696f6e7a6950617273655574696c735f7369 *6e676c655374616e7a7a615f696e666f00446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f7a6467746f4275696c64496e666f5f656e7472790044697374726962 *7574696f6e7a6953657475705f4f74686572436f6d70696c65725f656e747279004748437a6957 *6f72645f57387a685f7374617469635f696e666f006c6f6f6b75705468726561644c6162656c00 *64656661756c7473486f6f6b00546578747a69526561647a694c65785f7a644c723578586c766c *35335f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a69526561 *64505f4765745f636f6e5f656e74727900446973747269627574696f6e7a6953657475705f7061 *727365556e7265676973746572417267735f656e7472790053797374656d7a69506f7369787a69 *496e7465726e616c735f636f6e73747a75667a75676574666c5f656e747279004748437a695074 *725f636173745074725f656e7472790053797374656d7a69506f7369787a69496e7465726e616c *735f656e647a756f667a756469725f696e666f00446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e5f5061636b6167654465736372697074696f6e5f736c6f770044 *6973747269627574696f6e7a6956657273696f6e5f7a646652656164446570656e64656e63795f *636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f613231 *5f636c6f73757265004748437a69494f5f7772697465426c6f636b73315f656e74727900537973 *74656d7a69506f7369787a6946696c65735f6d6f64696669636174696f6e54696d655f636c6f73 *7572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7542494e4152595f *656e74727900446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f77556e6465 *63696461626c65496e7374616e6365735f7374617469635f656e74727900446174617a69486173 *685461626c655f48545f7374617469635f696e666f00446973747269627574696f6e7a69506163 *6b6167654465736372697074696f6e5f7772697465486f6f6b65644275696c64496e666f5f656e *747279004748437a694c6973745f6c766c33325f696e666f00446973747269627574696f6e7a69 *56657273696f6e5f76657273696f6e546167735f636c6f7375726500446973747269627574696f *6e7a6956657273696f6e5f7a6467746f56657273696f6e5f656e74727900446973747269627574 *696f6e7a6956657273696f6e5f7a6467746f56657273696f6e5f696e666f00546578747a695265 *61647a694c65785f7a644c723573546c766c365f636c6f7375726500446973747269627574696f *6e7a6953657475705f4842435f7374617469635f656e747279004748437a69494f5f7a644c7239 *67746c617a7a7952656164315f656e747279004748437a69426173655f45515f636c6f73757265 *00446174617a695479706561626c655f7a64776d6b41707054795f656e747279007072696e7441 *6c6c5468726561647300446973747269627574696f6e7a6953657475705f436f6e666967466c61 *67735f736c6f77004748437a6953686f775f7a644c72315a5a6461325f636c6f7375726500466f *726569676e7a6953746f7261626c655f706f6c797a757a64646d7065656b325f696e666f005465 *78747a69526561647a694c65785f7a644c72357a7a486c766c39375f636c6f7375726500446174 *617a695479706561626c655f7a644c72364f346c766c345f636c6f737572650053797374656d7a *69456e7669726f6e6d656e745f6c766c315f696e666f00546578747a695072657474795072696e *747a69487567686573504a5f636f6d6d615f636c6f737572650053797374656d7a694469726563 *746f72795f6765744469726563746f7279436f6e74656e74735f656e7472790044697374726962 *7574696f6e7a69436f6d7061747a6946696c65506174685f6973526f6f746564506174685f656e *747279004748437a69494f426173655f6c766c32345f636c6f73757265004748437a69494f4261 *73655f57726974654275666665725f7374617469635f696e666f007374675f696e746572705f63 *6f6e737472325f656e747279004748437a69496e745f4936347a685f636f6e5f696e666f004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f4c6962726172795f *636c6f73757265004748437a6953686f775f6133385f656e74727900546578747a69526561647a *694c65785f7a644c723576786134335f636c6f737572650053797374656d7a69506f7369787a69 *496e7465726e616c735f7a64776363616c6c33305f696e666f004748437a694c6973745f7a644c *723271536c766c375f636c6f737572650064656c65746554687265616400546578747a69526561 *647a694c65785f7a644c723578487833315f636c6f7375726500446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f6f746865724d6f64756c65735f656e74727900 *446973747269627574696f6e7a6956657273696f6e5f76657273696f6e546167735f696e666f00 *546578747a695072657474795072696e747a69487567686573504a5f7a644c7234675562657369 *6465315f656e747279004748437a694e756d5f74696d6573496e74656765725f636c6f73757265 *004748437a69494f5f685075744368617273315f656e747279004748437a69494f426173655f6c *766c32325f636c6f73757265004748437a6948616e646c655f6132385f656e7472790073797363 *6f6e664040474c4942435f322e30004748437a69494f426173655f5265736f7572636556616e69 *736865645f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164 *505f46696e616c5f636c6f73757265004748437a69494f5f7772697465426c6f636b73315f696e *666f004748437a6953686f775f6132345f636c6f7375726500546578747a695072657474795072 *696e747a69487567686573504a5f7a644c723467436c766c32335f696e666f004748437a694261 *73655f5a43444d6f6e61645f7374617469635f656e747279004748437a694c6973745f6c656e67 *74685f636c6f73757265004748437a69526561645f7265616450726563315f636c6f7375726500 *4748437a69436f6e635f74687265616457616974526561645f656e747279004469737472696275 *74696f6e7a6953657475705f566572626f73655f636f6e5f696e666f004748437a69546f704861 *6e646c65725f64735f656e747279004748437a694e756d5f616273325f656e747279004748437a *69456e756d5f656e756d46726f6d546f325f636c6f7375726500446973747269627574696f6e7a *69436f6d7061747a6946696c65506174685f70617468506172656e74735f656e74727900474843 *7a695265616c5f7a64737a64646d6d6f645f656e74727900446973747269627574696f6e7a6950 *726550726f636573737a69556e6c69745f706c61696e5f656e747279004748437a69526561645f *7a6466526561644d617962655f656e747279004748437a69526561645f7265616450726563325f *636c6f73757265005f5f737467696e69745f446174617a695479706561626c655f004748437a69 *576f72645f7a644c723943636c766c31345f696e666f004748437a69496e745f7a64646d656e75 *6d46726f6d5468656e546f5f696e666f004748437a69526561645f6c766c355f696e666f004748 *437a69537461626c655f537461626c655074725f636f6e5f696e666f004748437a69494f426173 *655f6132305f696e666f00446973747269627574696f6e7a694c6963656e73655f7a6467746f4c *6963656e73655f696e666f004748437a69494f426173655f6c766c32355f656e74727900537973 *74656d7a69457869745f6c766c335f696e666f004748437a6948616e646c655f6132355f656e74 *727900466f726569676e7a6953746f7261626c655f706f6c797a75706f6b65427974654f666632 *5f656e747279004748437a6948616e646c655f7a6477666c75736857726974654275666665725f *636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c *723467776c766c32305f636c6f73757265004748437a69576f72645f707265644572726f725f65 *6e747279004748437a69494f5f7a644c723966566c766c31395f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f4c6f6f6b5f7374617469635f656e7472790053 *797374656d7a69506f7369787a69496e7465726e616c735f61345f636c6f737572650044697374 *7269627574696f6e7a694765744f70745f5265714172675f636c6f7375726500546578747a6950 *6172736572436f6d62696e61746f72737a6952656164505f737472696e675f696e666f00474843 *7a69496e745f6c766c31375f636c6f7375726500446973747269627574696f6e7a694765744f70 *745f4e6f6e4f70745f656e74727900546578747a69526561647a694c65785f7a644c723575376c *766c31345f696e666f0053797374656d7a694469726563746f72795f6c766c32345f656e747279 *00706572666f726d4d616a6f72474300446174617a695475706c655f5a34545f7374617469635f *696e666f004748437a69526561645f726561644c69737450726563315f656e7472790044697374 *7269627574696f6e7a6953696d706c657a695574696c735f646f74546f5365705f656e74727900 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c31395f656e74 *727900446973747269627574696f6e7a6950617273655574696c735f6669656c6453686f775f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7543524541545f63 *6c6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164507265 *635f7a707a707a705f696e666f00446973747269627574696f6e7a6950617273655574696c735f *50617273654661696c65645f636f6e5f696e666f0076667072696e74664040474c4942435f322e *30004748437a69546f7048616e646c65725f7265706f7274537461636b4f766572666c6f775f65 *6e747279005f5f737467696e69745f53797374656d7a69494f7a69556e7361666500446174617a *695479706561626c655f5479436f6e5f636f6e5f656e74727900446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f5061636b6167654465736372697074696f6e5f *636f6e5f696e666f00446973747269627574696f6e7a6950617273655574696c735f46726f6d53 *7472696e675f636c6f7375726500446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f7772697465486f6f6b65644275696c64496e666f5f73727400446174617a69 *5479706561626c655f7a644c72364f32765f636c6f73757265004748437a694c6973745f64726f *707a685f656e747279006d61726b537461626c655074725461626c65004748437a69494f5f6c76 *6c32325f656e74727900546578747a69526561647a694c65785f7a644c72354146626f64795f63 *6c6f73757265004748437a69426173655f7a6470314f72645f696e666f00446973747269627574 *696f6e7a6950617273655574696c735f70617273654c69624e616d65515f696e666f004748437a *69426173655f7a644c723265586c766c5f696e666f004748437a695265616c5f746f526174696f *6e616c315f636c6f73757265004748437a694c6973745f7a644c723272556c766c33305f636c6f *73757265004748437a69494f426173655f557365724572726f725f7374617469635f656e747279 *00446973747269627574696f6e7a6953657475705f7a646766726f6d436f6e666967466c616773 *5f656e747279004748437a69526561645f726561644c69737450726563315f696e666f00446973 *747269627574696f6e7a6953657475705f636d6448656c705f656e747279004748437a69426173 *655f6e6567617465496e745f696e666f004748437a69494f426173655f4e6f6e5465726d696e61 *74696f6e5f7374617469635f656e747279007374675f73656c5f395f6e6f7570645f656e747279 *00466f726569676e7a69437a69537472696e675f7a64777065656b43537472696e675f696e666f *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f736b69705f696e *666f00446174617a694c6973745f756e776f7264735f656e74727900446973747269627574696f *6e7a6950617273655574696c735f70617273654d6f64756c654e616d65515f656e747279004469 *73747269627574696f6e7a6953657475705f7a6467746f436f6d70696c6572466c61766f725f69 *6e666f00446973747269627574696f6e7a6953657475705f7a64664571436f6d70696c65725f63 *6c6f73757265004748437a695265616c5f7a64737a64664672616374696f6e616c526174696f5f *636c6f737572650053797374656d7a69456e7669726f6e6d656e745f6c766c315f636c6f737572 *65005f5f737467696e69745f53797374656d7a69506f7369787a695265736f7572636500446973 *747269627574696f6e7a69436f6d7061747a6952656164505f737472696e675f656e7472790044 *6973747269627574696f6e7a695061636b6167655f5061636b6167654964656e7469666965725f *696e666f00546578747a695072657474795072696e747a69487567686573504a5f746578745f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467457a64777370616365735f636c6f7375726500446973747269627574696f6e7a6950617273 *655574696c735f73686f7746696c65506174685f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f7a644c72346838676f315f656e74727900546578747a695265 *61647a694c65785f7a644c72357a7a336973496466436861725f696e666f004748437a6953686f *775f7a644c72315a5a546c766c31315f636c6f7375726500446973747269627574696f6e7a6950 *617273655574696c735f7a64664d6f6e61645061727365526573756c745f636c6f737572650047 *48437a6953686f775f6136345f696e666f0053797374656d7a69506f7369787a69496e7465726e *616c735f7a64776363616c6c31365f636c6f73757265004748437a69494f426173655f6132385f *696e666f004748437a69576f72645f746f496e7465676572325f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f4c6f6f6b5f656e747279004748437a694c6973 *745f666f6c6472325f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a69 *4469726563746f72795f636f707946696c655f696e666f0053797374656d7a69506f7369787a69 *496e7465726e616c735f7a644c723757436c766c31335f656e747279004748437a694e756d5f7a *647773686f7773507265635f656e74727900446973747269627574696f6e7a69436f6d7061747a *6946696c65506174685f6d6b536561726368506174685f636c6f73757265004469737472696275 *74696f6e7a694765744f70745f556e7265714f70745f656e747279005f5f676d707a5f616e6400 *7374675f67635f6631004748437a69496e745f616273325f696e666f004748437a69426173655f *7a64646d7a677a655f636c6f73757265005f5f737467696e69745f446973747269627574696f6e *7a6956657273696f6e00446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f6275696c6461626c655f636c6f73757265004748437a69426173655f7a64737a64646d *6d61785f636c6f73757265004748437a694c6973745f7a644c723272556c766c33305f696e666f *00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f4c69627261 *72795f696e666f00446973747269627574696f6e7a694765744f70745f4f70745f737461746963 *5f656e74727900546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467496c766c32345f636c6f73757265004748437a69496e745f7a64777a64646d656e756d4672 *6f6d546f5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c33345f636c6f73757265007261697365494f7a685f6661737400446973747269627574 *696f6e7a6950617273655574696c735f706172736546696c6550617468515f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f7a646646756e63746f72506172 *7365725f636c6f73757265004748437a695265616c5f7a64646d73686f775f656e747279005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c34395f696e666f00 *546578747a695072657474795072696e747a69487567686573504a5f7365705f656e7472790044 *6174617a694d617962655f7a646645714d617962655f656e74727900446973747269627574696f *6e7a694d616b655f64656661756c744d61696e5f656e747279004748437a69494f426173655f52 *65736f75726365427573795f7374617469635f656e74727900776169747069644040474c494243 *5f322e30007374675f6c74576f7264363400546578747a69526561647a694c65785f7a644c7235 *74446132375f636c6f7375726500546578747a695072657474795072696e747a69487567686573 *504a5f7a644c7234675761626f7665315f656e7472790053797374656d7a69506f7369787a6946 *696c65735f6c766c375f636c6f7375726500446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f6578654e616d655f696e666f004748437a6953686f775f6136395f *636c6f73757265004748437a69496e745f6d696e426f756e64325f696e666f00546578747a6950 *6172736572436f6d62696e61746f72737a6952656164505f6c766c325f696e666f004748437a69 *496e745f7a6d325f636c6f7375726500616c6c6f635f626c6f636b73004748437a6953686f775f *73686f77506172656e5f656e747279005f5f737467696e69745f4748437a695061636b5f004748 *437a6948616e646c655f6132365f696e666f004748437a69456e756d5f746f456e756d345f696e *666f004748437a69576f72645f5736347a685f636f6e5f696e666f004748437a6948616e646c65 *5f696f657a75454f465f636c6f73757265004748437a6953686f775f7a647773686f7773507265 *635f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7542 *494e4152595f636c6f73757265004748437a6948616e646c655f6c766c32305f696e666f004469 *73747269627574696f6e7a6950617273655574696c735f73686f77446570656e64656e63795f69 *6e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a707a707a705f *656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *73746162696c6974795f696e666f005f5f737467696e69745f446174617a694d6179626500466f *726569676e7a6953746f7261626c655f706f6c797a757a64646d706f6b65325f636c6f73757265 *004748437a6953686f775f6132365f696e666f00546578747a695072657474795072696e747a69 *487567686573504a5f7a644c723467416c766c32325f636c6f73757265004748437a69546f7048 *616e646c65725f746f7048616e646c65725f656e74727900446973747269627574696f6e7a6950 *617273655574696c735f706172736554657374656457697468515f656e74727900546578747a69 *526561647a694c65785f7a644c723578746136335f636c6f73757265004748437a6953686f775f *6133335f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f416d *6269676f757350617273655f696e666f0070696e6e65645f6f626a6563745f626c6f636b004469 *73747269627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e6765735f *636f6e5f696e666f00446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f7a646766726f6d5061636b6167654465736372697074696f6e5f636c6f73757265004748 *437a69456e756d5f7a644c723261666c766c31355f656e74727900696e746567657232496e747a *685f66617374004748437a694e756d5f7a677a655f636c6f73757265004748437a6948616e646c *655f6c766c32345f636c6f7375726500546578747a695072657474795072696e747a6948756768 *6573504a5f737472696e677a757478745f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f6d616e79315f737274004748437a694e756d5f646e7a7566625f63 *6c6f737572650053797374656d7a69457869745f61315f696e666f004748437a69494f42617365 *5f627566575074725f656e747279004748437a69456e756d5f656674496e745f636c6f73757265 *00446174617a694c6973745f7a644c72346e376c766c315f636c6f73757265007274735f676574 *46756e507472004748437a69556e69636f64655f7a64776973416c7068614e756d5f636c6f7375 *726500746872656164506175736564004748437a695265616c5f7a6477665f636c6f7375726500 *4748437a69494f426173655f50726f746f636f6c4572726f725f7374617469635f656e74727900 *4748437a6953686f775f7a64737a64646d73686f774c697374325f656e74727900446973747269 *627574696f6e7a69436f6d7061747a6952656164505f737472696e675f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f4265736964655f636f6e5f696e666f00 *446973747269627574696f6e7a6956657273696f6e5f6265747765656e56657273696f6e73496e *636c75736976655f656e747279007374675f61705f7070707070705f696e666f004748437a6942 *6173655f636f6d706172655f636c6f73757265004748437a69456e756d5f746f456e756d345f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467496c766c32345f696e666f0053797374656d7a694469726563746f72795f6c766c355f656e *747279004748437a69466c6f61745f7a64777a6473726f756e64335f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f7a6467746f505f696e666f004469737472 *69627574696f6e7a69436f6d7061747a6952656164505f6d756e6368315f73727400546578747a *69506172736572436f6d62696e61746f72737a6952656164505f6d756e63685f656e7472790054 *6578747a695072657474795072696e747a69487567686573504a5f4e696c41626f76655f737461 *7469635f696e666f00546578747a695072657474795072696e747a69487567686573504a5f4265 *736964655f7374617469635f656e74727900696e69745468726561644c6162656c5461626c6500 *446973747269627574696f6e7a694765744f70745f7a6467746f4172674f726465725f636c6f73 *757265004748437a695265616c5f746f526174696f6e616c325f696e666f004748437a69496e74 *5f6c6974345f636c6f73757265004748437a6953686f775f6133365f636c6f7375726500546578 *747a69526561647a694c65785f7a644c723576646c766c32345f656e747279004748437a694861 *6e646c655f77726974655261774275666665725074725f636c6f73757265004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f636861696e72315f696e666f005f5f73746769 *6e69745f4748437a69436f6e635f00446973747269627574696f6e7a6950726550726f63657373 *7a69556e6c69745f7a6467746f436c61737369666965645f636c6f73757265004748437a69546f *7048616e646c65725f6473315f656e747279004748437a6953686f775f61395f656e7472790047 *48437a6953686f775f6133325f636c6f73757265005f5f737467696e69745f446174617a69576f *726400446973747269627574696f6e7a69436f6d7061747a6952656164505f7a6457525f696e66 *6f006d61726b5369676e616c48616e646c657273004748437a695074725f5074725f7374617469 *635f656e747279004748437a69494f426173655f4572726f7243616c6c5f7374617469635f656e *747279004748437a6948616e646c655f68466c7573685f636c6f73757265004748437a69526561 *6c5f7a646453686f775f636c6f7375726500446174617a695479706561626c655f7a64776d6b54 *79436f6e5f636c6f737572650053797374656d7a694469726563746f72795f6c766c345f636c6f *73757265004748437a69494f5f685075745374725f656e7472790047617262616765436f6c6c65 *637400446973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164 *5061727365725f737274004748437a69556e69636f64655f746f4c6f7765725f636c6f73757265 *004748437a69426173655f5a43444d6f6e61645f636f6e5f656e74727900446973747269627574 *696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c7573505f656e74727900 *4748437a6953686f775f7a647773686f775369676e6564496e745f636c6f737572650054657874 *7a69506172736572436f6d62696e61746f72737a6952656164505f706661696c5f636c6f737572 *65004748437a694e756d5f537a685f7374617469635f696e666f00446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f73686f77486f6f6b65644275696c64496e66 *6f5f636c6f7375726500446973747269627574696f6e7a694765744f70745f4e6f4172675f7374 *617469635f696e666f004748437a69576f72645f5733327a685f7374617469635f696e666f0047 *48437a69494f426173655f7a647773686f777350726563355f696e666f0053797374656d7a6944 *69726563746f72795f6c766c32385f696e666f00446973747269627574696f6e7a695072655072 *6f636573737a69556e6c69745f50726f6772616d5f7374617469635f656e74727900546578747a *695072657474795072696e747a69487567686573504a5f7a644c723467776c766c32305f656e74 *7279004748437a69436f6e635f7468726561645761697457726974655f656e747279004748437a *6953686f775f7a64646d73686f774c6973745f656e74727900546578747a69526561647a694c65 *785f7a644c723577766135335f656e7472790053797374656d7a69506f7369787a69496e746572 *6e616c735f4469726563746f72795f636c6f73757265004748437a69546f7048616e646c65725f *7a644c723337656c766c375f696e666f004748437a69494f426173655f6132325f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c723467537a64776162 *6f76654e6573745f636c6f7375726500546578747a69526561647a694c65785f7a644c72357431 *61385f636c6f7375726500446973747269627574696f6e7a69457874656e73696f6e5f7a646766 *726f6d457874656e73696f6e5f656e747279004748437a6953686f775f7a64646d73686f775f65 *6e747279004748437a69526561645f6c6578505f636c6f73757265006e6f636c6473746f700047 *48437a694e756d5f6c766c385f636c6f73757265004748437a694c6973745f7a644c723272756c *766c31375f696e666f004748437a694e756d5f676364496e74656765725f696e666f004748437a *69496e745f66726f6d456e756d325f696e666f00446973747269627574696f6e7a69436f6d7061 *747a694469726563746f72795f66696e6445786563757461626c655f636c6f7375726500446973 *747269627574696f6e7a694765744f70745f7a6467746f4f70744b696e645f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33325f736c6f770044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6578706f736564 *4d6f64756c65735f636c6f737572650066696e616c697a7a655765616b7a685f66617374007072 *6f675f6e616d650073746172745369676e616c48616e646c657273004748437a6953686f775f61 *32345f696e666f004748437a695265616c5f7a644c723532316c766c385f696e666f004748437a *6953686f775f61345f636c6f7375726500466f726569676e7a694d61727368616c7a6941727261 *795f706f6b654172726179305f636c6f73757265007374675f73656c5f395f6e6f7570645f696e *666f007265737572726563745468726561647300546578747a69526561647a694c65785f7a644c *7235766e78375f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c73 *5f7a64776363616c6c36385f636c6f73757265004748437a69426173655f756e7061636b417070 *656e6443537472696e677a685f696e666f007374675f63617463685f656e747279004469737472 *69627574696f6e7a6950617273655574696c735f7061727365436f6d6d614c6973745f636c6f73 *757265005f5f737467696e69745f446973747269627574696f6e7a69436f6d7061747a69526561 *6450005f7374617274007374675f63617463685f6672616d655f72657400546578747a69526561 *647a694c65785f7a644c72357a7a4c6c766c39395f636c6f73757265004748437a6953686f775f *7a644c72315a5a4c6c766c375f636c6f7375726500546578747a69526561647a694c65785f7a64 *4c72357a7a7264735f696e666f004748437a69494f5f7a6477706f6c797a756275665772697465 *5f736c6f7700546578747a69506172736572436f6d62696e61746f72737a6952656164505f4c6f *6f6b5f636f6e5f656e747279004748437a69494f426173655f6c766c31375f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6946696c65506174685f73706c697446696c654e *616d655f656e74727900546578747a69526561647a694c65785f7a644c72357a7a627833355f63 *6c6f73757265004748437a69494f426173655f537461636b4f766572666c6f775f636c6f737572 *6500446973747269627574696f6e7a6953657475705f5769746843707068735f636f6e5f696e66 *6f004748437a69456e756d5f73756363355f696e666f004748437a69426173655f6e6567617465 *496e745f636c6f73757265004748437a6953686f775f617070507265635f636c6f737572650047 *48437a694c6973745f7461696c5f656e747279004748437a69494f426173655f75736572457272 *6f725f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f *7a64664d6f6e6164505f636c6f7375726500446973747269627574696f6e7a6953657475705f7a *64664571466c61675f696e666f00446973747269627574696f6e7a6953696d706c657a69557469 *6c735f72617753797374656d457869745f636c6f73757265004748437a6948616e646c655f7345 *454b7a754355525f696e666f00546578747a695072657474795072696e747a6948756768657350 *4a5f7a644c72346861676f325f656e74727900466f726569676e7a694d61727368616c7a69416c *6c6f635f7a64776363616c6c5f656e74727900446973747269627574696f6e7a6953657475705f *4f74686572436f6d70696c65725f696e666f00446973747269627574696f6e7a6953657475705f *556e7265676973746572436d645f636c6f73757265004748437a694572725f7061744572726f72 *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a64 *4c723467756c766c31395f636c6f7375726500446973747269627574696f6e7a69506172736555 *74696c735f46726f6d537472696e675f636f6e5f656e7472790072656c65617365436170616269 *6c697479004748437a69436f6e635f74687265616457616974526561645f636c6f737572650047 *48437a69494f426173655f6c766c33345f636c6f73757265004748437a69526561645f7a644c72 *3639626c766c31365f656e7472790053797374656d7a69436d645f6c766c315f696e666f004748 *437a6948616e646c655f7345454b7a754355525f656e7472790053797374656d7a69506f736978 *7a69496e7465726e616c735f7a64776363616c6c36375f696e666f004748437a69546f7048616e *646c65725f7a644c723337756c766c31355f696e666f004748437a69546f7048616e646c65725f *7a644c723337676c766c385f656e747279005f5f737467696e69745f4748437a69466f72656967 *6e5074725f00546578747a695072657474795072696e747a69487567686573504a5f7a6c7a675f *636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f7a6467746f5061636b6167654465736372697074696f6e5f696e666f004748437a69426173 *655f6d61705f696e666f00446973747269627574696f6e7a6953657475705f57697468416c6578 *5f7374617469635f696e666f007274735f676574537461626c65507472004748437a6948616e64 *6c655f77616e745772697461626c6548616e646c657a715f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c723577316134385f636c6f73757265004748437a69576f72645f7a *64777a64646d73686f775f656e74727900446973747269627574696f6e7a695061727365557469 *6c735f6d794572726f725f73727400446973747269627574696f6e7a69436f6d7061747a695265 *6164505f72656164507a75746f7a75535f656e747279007374675f61705f305f696e666f004748 *437a695265616c5f6131325f656e747279004748437a6953686f775f6c766c32345f656e747279 *00546578747a695072657474795072696e747a69487567686573504a5f7a644c7234683266696c *6c31315f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a695265 *6164507265635f7a677a675f696e666f004748437a69496e745f7a657a65335f656e7472790044 *6973747269627574696f6e7a69436f6d7061747a694469726563746f72795f66696e6445786563 *757461626c655f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164 *505f636861696e72315f73727400446973747269627574696f6e7a69436f6d7061747a69526561 *64505f6765745f696e666f004748437a6948616e646c655f657272345f636c6f7375726500466f *726569676e7a6953746f7261626c655f5a434453746f7261626c655f7374617469635f656e7472 *7900446174617a695479706561626c655f6c676f5f656e747279005f5f737467696e69745f4748 *437a694261736500446973747269627574696f6e7a6953657475705f636d64416374696f6e5f69 *6e666f004748437a6953686f775f6134345f656e74727900546578747a69507265747479507269 *6e747a69487567686573504a5f646f75626c6551756f7465735f636c6f7375726500546578747a *69526561647a694c65785f7a644c723578377832355f636c6f7375726500446174617a69486173 *685461626c655f7a6477696e736572745f656e747279004748437a69494f426173655f7a647773 *686f777350726563355f636c6f73757265004748437a69426173655f666f6c64725f636c6f7375 *72650053797374656d7a69506f7369787a6946696c65735f6d6f64696669636174696f6e54696d *655f696e666f00546578747a69526561647a694c65785f7a644c723576336133385f656e747279 *004748437a6948616e646c655f77616e745772697461626c6548616e646c657a715f656e747279 *00446973747269627574696f6e7a6953657475705f636f6d70696c6572466c61766f725f696e66 *6f00546578747a69526561647a694c65785f7a644c723575376c766c31345f636c6f7375726500 *4748437a69494f5f7a647768507574436861725f656e747279004748437a69494f426173655f4c *696e65427566666572696e675f7374617469635f656e747279004748437a69556e69636f64655f *697355707065725f656e747279007374675f61705f765f696e666f00446174617a694c6973745f *69735072656669784f665f636c6f73757265004748437a69426173655f756e7061636b43537472 *696e67557466387a685f636c6f7375726500446973747269627574696f6e7a6953657475705f57 *6974684873633268735f636c6f7375726500546578747a69506172736572436f6d62696e61746f *72737a6952656164505f7a6c7a707a705f656e747279004748437a69496e745f746f496e746567 *6572325f636c6f73757265004748437a6953686f775f6c766c31355f636c6f7375726500474843 *7a69526561645f7a6466526561644d617962655f696e666f00446973747269627574696f6e7a69 *5061636b6167655f7a646653686f775061636b6167654964656e7469666965725f696e666f0047 *48437a694e756d5f6a746f735f636c6f737572650053797374656d7a69506f7369787a69496e74 *65726e616c735f4469726563746f72795f7374617469635f696e666f0044697374726962757469 *6f6e7a6953657475705f7a6467746f416374696f6e5f696e666f004748437a69546f7048616e64 *6c65725f72756e494f5f656e74727900436f6e74726f6c7a694d6f6e61645f5a43444d6f6e6164 *506c75735f7374617469635f696e666f004748437a69556e69636f64655f697355707065725f63 *6c6f73757265007374675f61705f765f7265740053797374656d7a69506f7369787a6946696c65 *735f67657446696c655374617475735f636c6f7375726500446973747269627574696f6e7a6950 *61636b6167655f7a646645715061636b6167654964656e7469666965725f636c6f737572650047 *48437a69526561645f72656164735f636c6f7375726500446973747269627574696f6e7a695665 *7273696f6e5f7a646653686f7756657273696f6e5f636c6f73757265004748437a69546f704861 *6e646c65725f7a644c7233376b6c766c31305f656e74727900546578747a69506172736572436f *6d62696e61746f72737a6952656164505f7a644c723174676c766c315f656e7472790044697374 *7269627574696f6e7a69457874656e73696f6e5f436f6e74657874537461636b5f737461746963 *5f656e747279004748437a69496e745f7a6477626f756e646564456e756d46726f6d5f656e7472 *79004748437a6948616e646c655f68436c6f73657a7568616e646c657a755f696e666f00474843 *7a69526561645f6c766c375f696e666f00446973747269627574696f6e7a695061727365557469 *6c735f7a64664d6f6e61645061727365526573756c745f737274004748437a69576f72645f7a64 *777a64646d73686f775f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a *6952656164505f636861696e6c5f73727400546578747a69526561647a694c65785f7a644c7235 *75376c766c31345f656e74727900466f726569676e7a6953746f7261626c655f706f6c797a757a *64646d7065656b325f656e74727900446973747269627574696f6e7a6950617273655574696c73 *5f7a646653686f775061727365526573756c745f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f7a644c723467716c766c31375f696e666f007374675f61705f *345f7570645f696e666f00446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f65787472614c6962735f636c6f7375726500446973747269627574696f6e7a69436f *6d7061747a6952656164505f7a64664d6f6e6164505f656e74727900546578747a69526561647a *694c65785f7a644c723576566134375f656e74727900446973747269627574696f6e7a69566572 *73696f6e5f7a646766726f6d56657273696f6e5f696e666f00466f726569676e7a69437a694572 *726f725f6c766c315f636c6f73757265004748437a694e756d5f7a6c7a655f656e747279006d75 *745f757365725f74696d655f647572696e675f4743004748437a69546f7048616e646c65725f7a *644c723337346c766c335f656e747279004748437a6948616e646c655f6c766c345f656e747279 *00446973747269627574696f6e7a6950617273655574696c735f7061727365457874656e73696f *6e515f696e666f007374675f41505f696e666f006177616b656e426c6f636b656451756575654e *6f4c6f636b00446174617a695475706c655f5a33545f7374617469635f656e747279004748437a *69494f426173655f6133345f656e74727900546578747a69526561647a694c65785f7a644c7268 *416c657849645f696e666f00537461636b4f766572666c6f77486f6f6b00546578747a69507265 *7474795072696e747a69487567686573504a5f7a644c723467517a64776e696c41626f76654e65 *73745f636c6f73757265004748437a69494f426173655f4f746865724572726f725f7374617469 *635f696e666f0053797374656d7a69436d645f7468726f774572726e6f49664d696e7573315f63 *6c6f73757265005f5f737467696e69745f5072656c7564655f00677261624361706162696c6974 *7900546578747a695072657474795072696e747a69487567686573504a5f7a644c723467537a64 *7761626f76654e6573745f656e747279004748437a69426173655f7a646645715a4d5a4e5f636c *6f73757265004748437a69494f5f7a644c723967746c617a7a7952656164315f696e666f005465 *78747a69526561647a694c65785f7a644c723574546c766c31305f636c6f73757265004748437a *69576f72645f7a64777a64646d73686f775f696e666f006973466c6f617444656e6f726d616c69 *7a656400737461727475704861736b656c6c00446973747269627574696f6e7a69436f6d706174 *7a6952656164505f7a707a707a705f73727400446973747269627574696f6e7a6953696d706c65 *7a695574696c735f72617753797374656d566572626f73655f737274004748437a695265616c5f *7a6477615f696e666f004748437a69494f426173655f6c766c33325f636c6f7375726500446174 *617a694c6973745f69735375666669784f665f656e74727900546578747a69526561647a694c65 *785f7a644c7235796a6c766c36345f636c6f73757265004748437a6948616e646c655f666c7573 *6857726974654275666665724f6e6c795f696e666f004748437a6953686f775f73686f774c6973 *747a757a755f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f466f72 *6569676e46756e6374696f6e496e746572666163655f7374617469635f656e7472790044697374 *7269627574696f6e7a6956657273696f6e5f6f724561726c69657256657273696f6e5f696e666f *0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32335f696e *666f004748437a694c6973745f6c766c365f656e747279004748437a69494f5f7a644c72396670 *6c766c375f656e747279004748437a6953686f775f7a64646d73686f774c6973745f696e666f00 *706c7573496e74656765727a685f6661737400446973747269627574696f6e7a6956657273696f *6e5f73686f7756657273696f6e5f696e666f00446174617a695479706561626c655f7a644c7236 *4f346c766c345f736c6f7700546578747a69506172736572436f6d62696e61746f72737a695265 *6164505f4661696c5f7374617469635f656e747279004748437a69556e69636f64655f7a647774 *6f4c6f7765725f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952 *656164505f736b69705f656e74727900546578747a69526561647a694c65785f7a644c72357a7a *7a7a6c766c39335f636c6f73757265007374675f434841524c494b455f636c6f73757265004748 *437a694c6973745f706f6c797a75696e69747a715f656e74727900546578747a69526561647a69 *4c65785f7a644c723577686c766c33355f656e74727900546578747a69526561647a694c65785f *7a644c72357a7a396136395f696e666f0053797374656d7a69457869745f615f636c6f73757265 *004748437a694e756d5f537a685f636f6e5f696e666f004748437a694c6973745f7a644c723271 *4f6c766c355f636c6f73757265004748437a695265616c5f6131315f636c6f7375726500474843 *7a694c6973745f6c766c31325f696e666f004748437a6948616e646c655f7374646572725f656e *747279007274735f676574496e74363400546578747a69526561647a694c65785f7a644c72357a *7a526c766c3130325f636c6f73757265007374675f73656c5f325f6e6f7570645f696e666f0073 *74675f444541445f5745414b5f696e666f004748437a69494f426173655f68614275666665725f *636c6f7375726500546578747a69526561647a694c65785f7a644c723576506134365f656e7472 *79004748437a69494f426173655f6c766c33335f656e74727900546578747a69526561647a694c *65785f7a644c723579566c766c38335f636c6f73757265004748437a69576f72645f6e65676174 *65335f656e74727900446174617a694c6973745f7a644c72346e356c766c5f636c6f7375726500 *4748437a694e756d5f7a644c723278746c766c315f656e74727900546578747a69526561647a69 *4c65785f7a644c723577746c766c33375f656e7472790053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c37305f636c6f7375726500446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f7772697465486f6f6b65644275696c6449 *6e666f5f696e666f0053797374656d7a69494f5f7265616446696c655f636c6f73757265007274 *73537570706f727473426f756e6454687265616473007374675f6765496e743634004748437a69 *426173655f46616c73655f7374617469635f696e666f005f5f737467696e69745f4748437a6949 *4f426173655f00546578747a69526561647a694c65785f7a644c723579426c766c37335f636c6f *73757265004748437a69426173655f7a657a65315f656e74727900446973747269627574696f6e *7a694765744f70745f7a6467746f4f707444657363725f656e747279004748437a69526561645f *6c766c32325f696e666f00446973747269627574696f6e7a6950617273655574696c735f537461 *6e7a7a614669656c645f636c6f73757265004748437a6953686f775f7a646653686f7743686172 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c7235766c6134315f656e74 *727900546578747a695072657474795072696e747a69487567686573504a5f646f75626c655175 *6f7465735f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f52 *6573756c745f636f6e5f696e666f00446973747269627574696f6e7a694765744f70745f526571 *4172675f7374617469635f656e74727900546578747a695072657474795072696e747a69487567 *686573504a5f6132345f636c6f73757265004748437a69546f7048616e646c65725f7a644c7233 *37636c766c365f656e747279004748437a69526561645f7a6473726561644c6973745072656344 *656661756c74325f656e74727900446973747269627574696f6e7a6953657475705f5769746843 *707068735f636f6e5f656e74727900446973747269627574696f6e7a694765744f70745f4f7074 *5f636c6f73757265004748437a6953686f775f7a64737a64646d73686f77325f656e7472790047 *48437a6948616e646c655f77616e745772697461626c6548616e646c655f636c6f737572650044 *6973747269627574696f6e7a694d616b655f64656661756c744d61696e5f636c6f737572650047 *48437a694e756d5f7a644c723278786c766c335f656e747279007374675f454e445f4558434550 *54494f4e5f4c4953545f696e666f00546578747a69526561647a694c65785f7a644c723579506c *766c38305f636c6f7375726500466f726569676e7a69437a694572726f725f7a64776363616c6c *315f636c6f73757265004748437a69494f426173655f7468726f775f696e666f00446973747269 *627574696f6e7a6950617273655574696c735f6669656c644765745f696e666f00546578747a69 *526561647a694c65785f7a644c723577356c766c33335f636c6f7375726500546578747a695072 *657474795072696e747a69487567686573504a5f7a644c723467457a64777370616365735f656e *747279004748437a6948616e646c655f7a644c724a6872777a75666c6167735f656e7472790047 *48437a69426173655f496e6c5f7374617469635f696e666f00446973747269627574696f6e7a69 *457874656e73696f6e5f54656d706c6174654861736b656c6c5f7374617469635f656e74727900 *446973747269627574696f6e7a69436f6d7061747a6952656164505f636861696e6c5f656e7472 *79006465526566537461626c655074727a685f6661737400446973747269627574696f6e7a6950 *726550726f636573737a69556e6c69745f5072655f636c6f73757265004748437a69494f426173 *655f6c766c32355f636c6f7375726500436f6e74726f6c7a694d6f6e61645f73657175656e6365 *7a755f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f7a6467746f5061636b6167654465736372697074696f6e5f636c6f73757265004748437a69 *5265616c5f6d6f64315f656e747279004748437a694c6973745f7375625f636c6f737572650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c7573 *505f636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f617574686f725f696e666f00446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f73686f775061636b6167654465736372697074696f6e5f737274004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f617574686f725f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c723578466136355f696e666f00 *4748437a6953686f775f73686f77506172656e5f636c6f73757265005f5f737467696e69745f4d *61696e5f004748437a6953545265665f53545265665f7374617469635f696e666f00436f6e7472 *6f6c7a694d6f6e61645f73657175656e63655f636c6f7375726500446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f6f7074696f6e735f696e666f004748437a69 *53686f775f61355f636c6f73757265004748437a69494f5f7a644c723967726c617a7a79526561 *644275666665726564315f656e747279005f5f737467696e69745f53797374656d7a69506f7369 *787a69494f5f00446973747269627574696f6e7a6950617273655574696c735f73686f77546573 *746564576974685f696e666f007374675f73656c5f385f7570645f696e666f00446174617a6954 *75706c655f736e645f636c6f73757265004748437a694e756d5f656e756d46726f6d546f5f696e *666f00546578747a69526561647a694c65785f7a644c723577397831355f636c6f737572650054 *6578747a69506172736572436f6d62696e61746f72737a6952656164505f526573756c745f636f *6e5f696e666f0053797374656d7a694469726563746f72795f72656d6f766546696c655f656e74 *7279004748437a694c6973745f7a644c723272676c766c31305f656e747279004748437a69546f *7048616e646c65725f7a644c723337346c766c335f736c6f77004748437a69526561645f7a644c *723639626c766c31365f696e666f004748437a6953686f775f73686f776c5f656e747279004748 *437a69576f72645f73686f777350726563335f656e74727900446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f6465736372697074696f6e5f656e747279007374 *675f7969656c645f746f5f696e746572707265746572005f5f737467696e69745f436f6e74726f *6c7a694d6f6e61645f004748437a69576f72645f7a70335f636c6f73757265005f5f737467696e *69745f53797374656d7a69506f7369787a69456e765f00446973747269627574696f6e7a694578 *74656e73696f6e5f496d706c69636974506172616d735f7374617469635f696e666f005f5f7374 *675f67635f66756e004748437a69466c6f61745f447a685f7374617469635f656e747279004469 *73747269627574696f6e7a6953657475705f576974684873633268735f636f6e5f696e666f0047 *48437a694e756d5f676364496e74656765725f636c6f7375726500446973747269627574696f6e *7a6950617273655574696c735f50617273654f6b5f7374617469635f696e666f00446973747269 *627574696f6e7a694c6963656e73655f4f746865724c6963656e73655f636c6f73757265007374 *675f73656c5f365f6e6f7570645f656e74727900546578747a69526561647a694c65785f7a644c *723575396c766c31355f696e666f004748437a69456e756d5f6c766c31365f656e747279004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f6873536f75726365 *4469725f636c6f73757265004748437a694c6973745f6c766c365f636c6f7375726500436f6e74 *726f6c7a694d6f6e61645f7a6477666f6c644d5f696e666f00446973747269627574696f6e7a69 *53657475705f48756773466c61675f636c6f73757265004748437a6953686f775f6135365f656e *74727900446973747269627574696f6e7a69457874656e73696f6e5f466c657869626c65496e73 *74616e6365735f7374617469635f656e747279004748437a69556e69636f64655f7a6477697341 *6c7068615f656e747279004748437a6948616e646c655f7a647766696c6c526561644275666665 *724c6f6f705f696e666f005f5f737467696e69745f466f726569676e7a69437a69547970657300 *64756d6d795f74736f0053797374656d7a694469726563746f72795f7a644c723962416c766c31 *395f636c6f73757265004748437a694c6973745f666f6c6472325f696e666f0044697374726962 *7574696f6e7a6950726550726f636573737a69556e6c69745f496e636c7564655f656e74727900 *446973747269627574696f6e7a6953657475705f436c65616e436d645f636c6f73757265004748 *437a695265616c5f6131305f656e747279004748437a695265616c5f61355f696e666f00446973 *747269627574696f6e7a69436f6d7061747a694469726563746f72795f72656d6f766544697265 *63746f72795265637572736976655f737274004748437a694c6973745f64726f707a685f636c6f *7375726500466f726569676e7a69437a6954797065735f7a64664e756d43496e745f636c6f7375 *726500446973747269627574696f6e7a69457874656e73696f6e5f7a6467746f457874656e7369 *6f6e5f636c6f73757265004748437a69494f5f7a64777772697465426c6f636b735f656e747279 *00446973747269627574696f6e7a6953657475705f5344697374436d645f7374617469635f696e *666f004748437a69426173655f7a64646d7a6c7a655f696e666f00446973747269627574696f6e *7a6956657273696f6e5f76657273696f6e4272616e63685f656e747279004748437a694c697374 *5f7a7a69705f636c6f73757265004748437a6948616e646c655f7374646f75745f636c6f737572 *65004748437a69494f426173655f526561644d6f64655f7374617469635f696e666f004748437a *69576f72645f6e6567617465335f696e666f007374675f73656c5f31325f6e6f7570645f696e66 *6f00546578747a69526561647a694c65785f7a644c72357a7a666c766c38375f656e7472790046 *6f726569676e7a694d61727368616c7a69416c6c6f635f6c766c355f636c6f7375726500474843 *7a6953686f775f6135305f696e666f004748437a69494f426173655f6c766c31385f636c6f7375 *7265004748437a69494f426173655f5065726d697373696f6e44656e6965645f636c6f73757265 *00446973747269627574696f6e7a69436f6d7061747a6952656164505f526573756c745f737461 *7469635f696e666f00746f74616c5f616c6c6f6361746564004748437a69494f426173655f6c76 *6c31375f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f6a6f696e46696c654578745f636c6f73757265004748437a6953686f775f6134355f636c6f73 *757265004748437a6953686f775f6136305f696e666f00446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f6861734c6962735f656e747279004748437a69494f42 *6173655f4f746865724572726f725f636c6f7375726500546578747a69506172736572436f6d62 *696e61746f72737a6952656164505f736b69705f636c6f73757265007369676164647365744040 *474c4942435f322e30004748437a694e756d5f646e7a756c6973745f636c6f73757265004d6169 *6e4361706162696c69747900546578747a69526561647a694c65785f7a644c7235745a5a7a637a *635f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c33375f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164 *505f736b69704d616e79315f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f656d707479486f6f6b65644275696c64496e666f5f636c6f737572 *65007374675f61705f6e5f7265740053797374656d7a69506f7369787a6946696c65735f6c766c *31395f636c6f73757265004748437a6953686f775f6131345f696e666f00546578747a69507265 *7474795072696e747a69487567686573504a5f7a644c723467636c766c31305f636c6f73757265 *00546578747a69526561647a694c65785f7a644c7235776a6135315f656e747279004748437a69 *494f426173655f6275664275665f696e666f004748437a69426173655f7a627a625f696e666f00 *4748437a69576f72645f7a6477746f496e7465676572315f696e666f00546578747a6952656164 *7a694c65785f7a644c7235757a7a6c766c31375f656e74727900446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f7a646766726f6d45786563757461626c655f63 *6c6f73757265004748437a694e756d5f7a677a655f656e747279004748437a69494f426173655f *6c766c32335f636c6f73757265005f5f737467696e69745f53797374656d7a69456e7669726f6e *6d656e7400446973747269627574696f6e7a6956657273696f6e5f416e7956657273696f6e5f63 *6c6f73757265004748437a694e756d5f72656d496e74656765725f696e666f00546578747a6952 *6561647a694c65785f7a644c72357a7a546c766c3130335f636c6f7375726500446174617a694d *617962655f4e6f7468696e675f7374617469635f656e74727900466f726569676e7a694d617273 *68616c7a6941727261795f776974684172726179305f696e666f004748437a69494f426173655f *4172697468457863657074696f6e5f7374617469635f696e666f004748437a69494f426173655f *68614f74686572536964655f696e666f0053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c36355f696e666f004748437a69426173655f5a437a745a435f737461 *7469635f656e74727900626c6f636b557365725369676e616c7300436f6e74726f6c7a694d6f6e *61645f6d61704d5f656e74727900446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f73796e6f707369735f636c6f7375726500446973747269627574696f6e7a69 *53657475705f7061727365496e7374616c6c417267735f696e666f004748437a69456e756d5f7a *644c7232616a6c766c31375f636c6f73757265004748437a694e756d5f75707a7566625f636c6f *73757265006973456d7074794d5661727a685f66617374004748437a694e756d5f7a6477646976 *4d6f64496e74656765725f656e747279004748437a69456e756d5f6c766c31385f696e666f0047 *48437a69494f426173655f494f457863657074696f6e5f7374617469635f656e74727900474843 *7a69526561645f7a646652656164496e745f636c6f73757265006469764578616374496e746567 *65727a685f66617374004748437a69426173655f756e7061636b43537472696e677a685f656e74 *7279004748437a6953686f775f6133365f696e666f004748437a695265616c5f7a647761345f65 *6e747279004748437a694e756d5f6a746f737a715f656e747279005f5f737467696e69745f4e75 *6d6572696300446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f774f766572 *6c617070696e67496e7374616e6365735f7374617469635f656e74727900436f6e74726f6c7a69 *457863657074696f6e5f66696e616c6c795f636c6f7375726500737461745f7374617274457869 *74004748437a69526561645f6c766c375f656e747279004748437a69556e69636f64655f697341 *6c7068614e756d5f656e747279005f5f6465636f6465466c6f6174004748437a6953686f775f73 *686f77735f696e666f0069737775707065724040474c4942435f322e30007765616b5f7074725f *6c6973740053797374656d7a694469726563746f72795f6c766c31325f636c6f73757265004748 *437a6953686f775f7a646653686f775a32545f696e666f00446174617a695479706561626c655f *547970655265705f636f6e5f696e666f005f5f737467696e69745f53797374656d7a69436d6400 *446973747269627574696f6e7a6953657475705f436f6d70696c65725f656e747279004748437a *69494f426173655f45786974537563636573735f636c6f7375726500546578747a695061727365 *72436f6d62696e61746f72737a6952656164505f7a644c723174656c766c5f696e666f00446973 *747269627574696f6e7a6956657273696f6e5f446570656e64656e63795f7374617469635f696e *666f00546578747a69526561647a694c65785f7a644c7235787a7a6136345f636c6f7375726500 *546578747a69526561647a694c65785f7a644c7235786e6136325f636c6f737572650044697374 *7269627574696f6e7a6953657475705f70617273655265676973746572417267735f7372740053 *797374656d7a69506f7369787a6946696c65735f7468726f774572726e6f49664d696e7573317a *75315f696e666f00446973747269627574696f6e7a6953657475705f7a646766726f6d41637469 *6f6e5f636c6f7375726500446973747269627574696f6e7a6953657475705f636f6e6669674861 *64646f636b5f696e666f00466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c33 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c723577507832325f636c6f *73757265004748437a6948616e646c655f666c75736857726974654275666665724f6e6c795f65 *6e747279004748437a69494f426173655f72657475726e494f5f636c6f73757265004469737472 *69627574696f6e7a6953657475705f4e48435f7374617469635f696e666f0068735f696e697400 *546578747a69526561647a694c65785f7a644c7235416e6c766c3131385f636c6f737572650047 *48437a69496e745f6c766c31375f696e666f00546578747a69526561647a694c65785f7a644c72 *357a7a6872657365727665647a756f70735f636c6f7375726500546578747a69526561647a694c *65785f7a644c723574686131365f696e666f004748437a694572725f7a644c723130706c766c31 *335f656e74727900446973747269627574696f6e7a6953657475705f476863466c61675f737461 *7469635f656e7472790053797374656d7a69456e7669726f6e6d656e745f6c766c315f656e7472 *79007374675f61705f665f726574004748437a695265616c5f7a6477746f526174696f6e616c5f *636c6f7375726500446973747269627574696f6e7a6953657475705f636f6e6669674873633268 *735f656e74727900446973747269627574696f6e7a6953657475705f7061727365436c65616e41 *7267735f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f7a64665265 *6164457874656e73696f6e5f636c6f73757265004748437a69494f426173655f61375f636c6f73 *757265004748437a69496e745f4936347a685f636f6e5f656e74727900546578747a6952656164 *7a694c65785f7a644c7235746c6131385f656e74727900546578747a69506172736572436f6d62 *696e61746f72737a6952656164505f526573756c745f7374617469635f656e747279004748437a *695265616c5f5a43444672616374696f6e616c5f7374617469635f656e74727900546578747a69 *526561647a694c65785f7a644c72357a7a706c766c38395f696e666f004748437a69456e756d5f *656664496e7446425f656e74727900446973747269627574696f6e7a6953657475705f52656769 *73746572436d645f7374617469635f656e74727900446973747269627574696f6e7a6953657475 *705f436d645f636f6e5f656e74727900546578747a69526561647a694c65785f7a644c72357554 *6133365f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952656164 *505f526573756c745f636f6e5f656e747279004748437a69426173655f5a435f656e7472790054 *6578747a69526561647a694c65785f7a644c723574396131325f636c6f7375726500546578747a *69506172736572436f6d62696e61746f72737a6952656164507265635f7a677a677a655f636c6f *73757265005f5f737467696e69745f53797374656d7a69506f7369787a6954696d65005f5f7374 *67696e69745f446973747269627574696f6e7a69436f6d7061747a6952656164505f0053797374 *656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c365f696e666f00474843 *7a6948616e646c655f696f657a75454f465f736c6f7700446973747269627574696f6e7a694578 *74656e73696f6e5f416c6c6f77496e636f686572656e74496e7374616e6365735f636c6f737572 *65007374675f61705f325f7570645f696e666f00546578747a69526561647a694c65785f7a644c *723578446c766c34395f656e7472790053797374656d7a69506f7369787a69496e7465726e616c *735f7a64776363616c6c37345f696e666f004748437a69496e745f6e6567617465325f656e7472 *7900446973747269627574696f6e7a6956657273696f6e5f73686f7756657273696f6e5f656e74 *7279004748437a69456e756d5f676f7a75646e7a75696e747a756c6973745f656e747279004748 *437a6953686f775f61395f636c6f73757265004748437a69526561645f7a6473726561644c6973 *7444656661756c74345f696e666f004748437a69526561645f6c766c32325f656e747279004748 *437a6948616e646c655f61315f696e666f00466f726569676e7a694d61727368616c7a69417272 *61795f6c766c5f696e666f004748437a694c6973745f636f6e6361745f656e7472790044697374 *7269627574696f6e7a69457874656e73696f6e5f4e6f496d706c696369745072656c7564655f73 *74617469635f656e74727900546578747a695072657474795072696e747a69487567686573504a *5f7a6c7a707a675f636c6f7375726500546578747a69526561647a694c65785f7a644c72357862 *6136305f696e666f004748437a69496e745f72656d325f656e74727900546578747a6950726574 *74795072696e747a69487567686573504a5f7a644c723466536c766c5f696e666f004748437a69 *48616e646c655f696f657a756e6f745772697461626c655f736c6f77007274735f6d6b53747269 *6e6700446174617a695479706561626c655f7a644c727864686173684b505f636c6f7375726500 *546578747a69506172736572436f6d62696e61746f72737a6952656164505f4661696c5f636c6f *7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f65 *786563757461626c65735f656e747279004748437a69494f426173655f446561646c6f636b5f63 *6c6f73757265004748437a69546f7048616e646c65725f6473315f696e666f004748437a694861 *6e646c655f66647a757374646572725f636c6f73757265005f5f737467696e69745f5379737465 *6d7a69506f7369787a69494f00446174617a695479706561626c655f63616368655f656e747279 *004748437a6948616e646c655f7769746848616e646c657a757a757a715f656e74727900546578 *747a69526561647a694c65785f7a644c7235774e6135365f696e666f004748437a6948616e646c *655f6c766c35335f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c *735f66696e645061636b616765446573635f696e666f004748437a694c6973745f7a644c723272 *716c766c31355f656e74727900466f726569676e7a69437a694572726f725f7468726f77457272 *6e6f49664d696e7573315f656e747279005f5f737467696e69745f4748437a69457272005f5f73 *7467696e69745f446174617a695479706561626c6500446973747269627574696f6e7a69457874 *656e73696f6e5f457874656e7369626c655265636f7264735f7374617469635f696e666f004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f656e6442795f696e666f007374 *675f73656c5f31325f7570645f696e666f007374675f41505f535441434b5f656e747279007374 *675f756e626c6f636b4173796e63457863657074696f6e737a685f7265745f696e666f00446973 *747269627574696f6e7a69436f6d7061747a6952656164505f737472696e675f73727400474843 *7a6953686f775f6135325f696e666f004748437a694c6973745f64726f705f696e666f00474843 *7a69494f426173655f46696c6548616e646c655f7374617469635f696e666f004748437a69496e *745f7a64646d656e756d46726f6d546f5f636c6f73757265004748437a694e756d5f7a644c7232 *78726c766c5f636c6f7375726500446973747269627574696f6e7a6953657475705f636d644e61 *6d655f636c6f737572650053797374656d7a69456e7669726f6e6d656e745f67657450726f674e *616d655f636c6f7375726500446973747269627574696f6e7a6953657475705f496e7374507265 *6669785f636f6e5f696e666f007374675f73656c5f31305f6e6f7570645f656e74727900474843 *7a6953686f775f6134385f636c6f7375726500446973747269627574696f6e7a6956657273696f *6e5f5468697356657273696f6e5f696e666f004748437a69426173655f5a43444f72645f737461 *7469635f696e666f007374675f73656c5f355f7570645f656e747279004748437a6948616e646c *655f7a644c7262583961335f656e74727900676364496e7465676572496e747a685f6661737400 *446973747269627574696f6e7a69436f6d7061747a6952656164505f72656164537a75746f7a75 *505f737274004748437a6948616e646c655f7a644c72633370657272375f636c6f737572650054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c72346836676f5f696e *666f004748437a6948616e646c655f7a64776175676d656e74494f4572726f725f656e74727900 *4748437a69526561645f5a4344526561645f7374617469635f696e666f00546578747a69526561 *647a694c65785f7a644c723576706c766c32365f636c6f7375726500546578747a69526561647a *694c65785f7a644c723576396133395f656e747279005f5f737467696e69745f44697374726962 *7574696f6e7a694c6963656e736500446973747269627574696f6e7a6956657273696f6e5f556e *696f6e56657273696f6e52616e6765735f656e747279004748437a694e756d5f72656d496e7465 *6765725f656e747279004748437a69494f426173655f457869744661696c7572655f7374617469 *635f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e *5f696e636c756465446972735f696e666f004748437a6953686f775f6134395f636c6f73757265 *005f5f737467696e69745f466f726569676e7a69437a694572726f725f007274735f6d6b576f72 *6433320053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7557524f4e4c595f *636c6f7375726500466f726569676e7a69437a6954797065735f7a6466457143496e745f636c6f *7375726500446174617a694c6973745f69735072656669784f665f656e747279004748437a6949 *4f426173655f6132315f636c6f73757265004748437a69494f426173655f526561644275666665 *725f7374617469635f656e74727900546578747a69506172736572436f6d62696e61746f72737a *6952656164505f72756e5f656e747279004748437a694c6973745f7461696c5f696e666f004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f636861725f737274007374675f *61705f70705f72657400446973747269627574696f6e7a69436f6d7061747a6946696c65506174 *685f73706c697446696c65506174685f656e747279004748437a69494f426173655f6c766c3138 *5f656e747279004748437a69546f7048616e646c65725f7a644c723337736c766c31345f696e66 *6f00446973747269627574696f6e7a6953657475705f636f6e66696743707068735f656e747279 *004748437a6953686f775f6135345f636c6f73757265004748437a69496e745f7a64646d7a675f *656e74727900546578747a69526561647a694c65785f7a644c72357a7a506c766c3130315f636c *6f73757265004748437a69426173655f6d696e7573496e745f696e666f00446973747269627574 *696f6e7a6950617273655574696c735f46726f6d537472696e675f636f6e5f696e666f00474843 *7a694c6973745f64726f705768696c655f636c6f73757265004748437a69494f426173655f6861 *427566666572735f696e666f004748437a69494f426173655f556e737570706f727465644f7065 *726174696f6e5f636c6f737572650072616973654173796e63576974684c6f636b00446174617a *695475706c655f6673745f696e666f00616c6c6f635f48704c696d007374675f656e7465725f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c3735 *5f656e747279004748437a69494f5f6c766c365f636c6f73757265004748437a6948616e646c65 *5f77616e745265616461626c6548616e646c657a715f636c6f7375726500446174617a69547970 *6561626c655f4b657950725f7374617469635f656e747279005f5f737467696e69745f54657874 *7a695072657474795072696e747a69487567686573504a5f004748437a69426173655f7a64646d *7a6c5f636c6f73757265004748437a69494f426173655f5061747465726e4d617463684661696c *5f636f6e5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f637a7563 *686d6f645f696e666f00446973747269627574696f6e7a6953657475705f7a64664571466c6167 *5f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c33335f736c6f77004748437a69494f426173655f6132315f696e666f004748437a69494f *426173655f61335f696e666f00546578747a695072657474795072696e747a6948756768657350 *4a5f7a644c7234686f7a64776d756c74697a7563685f696e666f0053797374656d7a69506f7369 *787a69496e7465726e616c735f4469726563746f72795f7374617469635f656e747279005f5f67 *6d707a5f696f7200546578747a69526561647a694c65785f7a644c7235774c6c766c34305f656e *747279004748437a69494f426173655f6c766c32315f656e74727900546578747a69526561647a *694c65785f7a644c723579446c766c37345f636c6f73757265004748437a69576f72645f707265 *644572726f725f696e666f004748437a69494f426173655f496e617070726f7072696174655479 *70655f7374617469635f656e747279005f5f737467696e69745f53797374656d7a694c6f63616c *6500446973747269627574696f6e7a6953657475705f476863466c61675f636c6f737572650044 *6973747269627574696f6e7a6956657273696f6e5f496e7465727365637456657273696f6e5261 *6e6765735f636c6f73757265007374675f6774576f72643634004748437a69526561645f7a6466 *526561645a32545f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4f76 *65726c617070696e67496e7374616e6365735f7374617469635f696e666f00696e746567657232 *576f72647a685f66617374004748437a69426173655f7a6470314f72645f656e74727900474843 *7a69494f426173655f6132375f656e74727900736c656570696e675f7175657565004748437a69 *426173655f6765745461675f656e74727900446973747269627574696f6e7a69457874656e7369 *6f6e5f526573747269637465645479706553796e6f6e796d735f636c6f73757265004748437a69 *496e745f7a64646d7a6c7a655f636c6f73757265004748437a69426173655f6c65496e745f636c *6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a755452554e43 *5f656e7472790053797374656d7a69457869745f6c766c315f736c6f7700446973747269627574 *696f6e7a6953657475705f57697468436f6d70696c65725f656e74727900546578747a69506172 *736572436f6d62696e61746f72737a6952656164507265635f707265635f636c6f737572650047 *48437a69494f5f7a644c7239667a7a6c766c31325f636c6f73757265004748437a69426173655f *7a64646d7a737a655f696e666f004748437a69426173655f7a677a675f656e747279004748437a *6953746f7261626c655f77726974655074724f66665074725f696e666f004748437a694572725f *756e646566696e65645f636c6f73757265007374675f61705f70707070705f726574004748437a *69496e745f7a64646d7a677a655f696e666f0053797374656d7a69506f7369787a69496e746572 *6e616c735f7a64776363616c6c32305f656e74727900446973747269627574696f6e7a69506172 *73655574696c735f73686f77546573746564576974685f636c6f73757265004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f7a6467746f4275696c64496e666f *5f696e666f004748437a6948616e646c655f6c766c32335f656e74727900446973747269627574 *696f6e7a6953696d706c657a695574696c735f736d617274436f7079536f75726365735f636c6f *73757265004748437a69426173655f6d61705f656e747279004748437a6948616e646c655f7a64 *4c72625a5a376c766c34305f656e747279004748437a694e756d5f537a685f7374617469635f65 *6e74727900446973747269627574696f6e7a6956657273696f6e5f496e74657273656374566572 *73696f6e52616e6765735f7374617469635f656e74727900446973747269627574696f6e7a6953 *657475705f496e7374616c6c436d645f7374617469635f656e747279007374675f73656c5f3132 *5f7570645f656e747279004748437a695265616c5f72656d325f636c6f73757265004748437a69 *48616e646c655f77726974655261774275666665725f656e74727900446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f776974684c69625f73727400546578747a *69526561647a694c65785f7a644c723576726134325f656e74727900466f726569676e7a695374 *6f7261626c655f706f6c797a757a64646d706f6b65325f656e7472790044697374726962757469 *6f6e7a694765744f70745f556e7265714f70745f7374617469635f696e666f004748437a69576f *72645f7a657a65345f656e7472790053797374656d7a69506f7369787a69496e7465726e616c73 *5f6f7a75415050454e445f636c6f7375726500546578747a695072657474795072696e747a6948 *7567686573504a5f70756e6374756174655f696e666f00446973747269627574696f6e7a695072 *6550726f636573737a69556e6c69745f50726f6772616d5f636c6f737572650044697374726962 *7574696f6e7a6953657475705f57697468416c65785f7374617469635f656e747279006e657742 *434f7a685f66617374004748437a695265616c5f6c766c31365f656e747279004748437a694861 *6e646c655f77616e745772697461626c6548616e646c657a715f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6946696c65506174685f69734162736f6c757465506174685f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c3635 *5f656e747279004748437a69526561645f5a4344526561645f7374617469635f656e7472790044 *6973747269627574696f6e7a69457874656e73696f6e5f456d707479446174614465636c735f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c7235765a5a6c766c33325f696e *666f004748437a695265616c5f7a644c7235315a5a6c766c375f696e666f00546578747a695265 *61647a694c65785f7a644c7268416c657849645f636c6f73757265005f5f737467696e69745f47 *48437a69466c6f61745f005f5f737467696e69745f466f726569676e7a69466f726569676e5074 *725f007274735f6d6b496e74313600446973747269627574696f6e7a6953657475705f7a646774 *6f436f6d70696c6572466c61766f725f636c6f73757265004748437a69526561645f6c766c3237 *5f656e74727900546578747a69526561647a694c65785f7a644c7235794a6c766c37375f636c6f *73757265004748437a6948616e646c655f7a64776175676d656e74494f4572726f725f636c6f73 *757265004748437a695074725f706c75735074725f636c6f7375726500546578747a6952656164 *7a694c65785f7a644c7235774e6135365f636c6f737572650053797374656d7a69446972656374 *6f72795f7a6477676f5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a *6952656164505f7a6457525f656e74727900466f726569676e7a694d61727368616c7a69416c6c *6f635f6c766c325f656e747279006c7365656b36344040474c4942435f322e3100446973747269 *627574696f6e7a695061636b6167654465736372697074696f6e5f63617465676f72795f696e66 *6f00446973747269627574696f6e7a694765744f70745f556e7265714f70745f636f6e5f696e66 *6f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35325f69 *6e666f00446973747269627574696f6e7a6953657475705f48656c70436d645f7374617469635f *696e666f00446973747269627574696f6e7a6953657475705f436f6e666967466c6167735f696e *666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f526573756c745f73 *74617469635f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f7a6477 *6363616c6c315f636c6f737572650053797374656d7a69506f7369787a6954797065735f7a6466 *456e756d435069645f636c6f7375726500446973747269627574696f6e7a6953657475705f436f *6e666967436d645f636c6f73757265004748437a69576f72645f737563634572726f725f636c6f *7375726500446174617a694d617962655f4a7573745f7374617469635f656e7472790044697374 *7269627574696f6e7a6950617273655574696c735f416d6269676f757350617273655f636c6f73 *75726500446973747269627574696f6e7a6953657475705f5072656669785f7374617469635f65 *6e747279004748437a694e756d5f73686f774c6973745f656e74727900466f726569676e7a6953 *746f7261626c655f706f6c797a75706f6b65427974654f6666325f636c6f737572650065786563 *76704040474c4942435f322e30004748437a69494f5f7a644c7239667a7a6c766c31325f696e66 *6f00446973747269627574696f6e7a6953657475705f5769746848617070795f656e7472790066 *7265654861736b656c6c46756e6374696f6e507472004748437a695265616c5f7a644c72353152 *6c766c335f636c6f73757265007374675f7369675f696e7374616c6c00546578747a6952656164 *7a694c65785f4964656e745f636f6e5f696e666f004748437a695265616c5f7a6477615f656e74 *727900446973747269627574696f6e7a6950617273655574696c735f706172736546696c655061 *7468515f636c6f73757265004748437a6948616e646c655f7a647766696c6c5265616442756666 *65724c6f6f705f736c6f77004748437a694c6973745f7a644c7262317072656c7a756c6973747a *757374725f636c6f73757265005f5f737467696e69745f546578747a69506172736572436f6d62 *696e61746f72737a6952656164505f00446973747269627574696f6e7a6950726550726f636573 *737a69556e6c69745f50726f6772616d5f7374617469635f696e666f0053797374656d7a694469 *726563746f72795f6c766c345f696e666f00446973747269627574696f6e7a6953657475705f43 *6f6e666967436d645f7374617469635f696e666f00446973747269627574696f6e7a6956657273 *696f6e5f7a64665265616456657273696f6e5f636c6f73757265004748437a6953686f775f7a64 *4c72315a5a546c766c31315f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f776974684c69625f636c6f73757265004748437a69526561645f7a *6473726561644c6973745072656344656661756c74325f636c6f73757265004748437a69426173 *655f7a64664f72645a4d5a4e5f696e666f005f5f737467696e69745f4748437a695265616c5f00 *446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f77496e636f686572656e74 *496e7374616e6365735f7374617469635f696e666f00446174617a694d617962655f6d61704d61 *7962655f636c6f7375726500446973747269627574696f6e7a6953657475705f636f6d70696c65 *7256657273696f6e5f656e747279004748437a69426173655f6e65496e745f636c6f7375726500 *4748437a695265616c5f7a64777a64737265647563655f636c6f73757265004748437a69494f42 *6173655f7a677a675f696e666f00446973747269627574696f6e7a6953657475705f5769746843 *707068735f7374617469635f656e74727900446973747269627574696f6e7a6953657475705f7a *6467746f436f6e666967466c6167735f636c6f7375726500446973747269627574696f6e7a6950 *617273655574696c735f706172736554657374656457697468515f636c6f737572650044617461 *7a694c6973745f776f7264735f636c6f73757265004748437a695074725f5074725f7374617469 *635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7365744e6f6e42 *6c6f636b696e6746445f656e74727900546578747a69526561647a694c65785f7a644c72357644 *6134345f636c6f7375726500446973747269627574696f6e7a695061636b6167655f706b675665 *7273696f6e5f696e666f007274735f676574546872656164496400546578747a69507265747479 *5072696e747a69487567686573504a5f7a644c723467656c766c31315f696e666f004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f6d6f64756c65506174685f *696e666f00446174617a695479706561626c655f63616368655f696e666f007374675f61705f70 *70705f696e666f00546578747a695072657474795072696e747a69487567686573504a5f7a644c *72346755626573696465315f696e666f004748437a69496e745f7a64646d73686f774c69737432 *5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c *35375f696e666f00446973747269627574696f6e7a6956657273696f6e5f7a646766726f6d4465 *70656e64656e63795f696e666f004748437a69526561645f72656164735f656e74727900474843 *7a69426173655f5a434445715f7374617469635f696e666f004748437a694e756d5f656e756d44 *656c7461546f496e746567657246425f696e666f005f5f737467696e69745f466f726569676e7a *694d61727368616c7a694172726179004748437a6948616e646c655f7a644c724a397374647a75 *666c6167735f696e666f004748437a695265616c5f5a43445265616c5f636f6e5f696e666f0047 *48437a6948616e646c655f6131375f656e74727900446973747269627574696f6e7a6950726550 *726f636573737a69556e6c69745f756e6c69745f636c6f73757265007374675f75745f315f305f *756e7265675f7265740053797374656d7a69506f7369787a69496e7465726e616c735f7a644c72 *37566d6c766c335f656e74727900776f72643634546f496e74656765727a685f66617374004748 *437a69426173655f7a657a65335f656e747279004748437a69494f426173655f45786974457863 *657074696f6e5f636f6e5f696e666f00446973747269627574696f6e7a6953657475705f436f70 *79436d645f7374617469635f656e7472790053797374656d7a69506f7369787a69496e7465726e *616c735f637a7563686d6f645f656e74727900446973747269627574696f6e7a6953696d706c65 *7a695574696c735f72617753797374656d566572626f73655f656e747279004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f7a6467746f5061727365725f636c6f73757265 *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f63686f6963655f *696e666f00446973747269627574696f6e7a6956657273696f6e5f446570656e64656e63795f73 *74617469635f656e747279004748437a6953686f775f7a64737a64646d73686f77335f636c6f73 *7572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7557524f4e4c595f *696e666f00546578747a69526561647a694c65785f7a644c72357a7a5a5a6c766c3130365f636c *6f73757265004748437a6953686f775f7a64737a64646d73686f77345f656e7472790044697374 *7269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e73546f474843466c6167 *5f73727400446973747269627574696f6e7a6956657273696f6e5f496e74657273656374566572 *73696f6e52616e6765735f636f6e5f696e666f006f72496e74656765727a685f66617374004748 *437a6953686f775f6136325f656e747279004748437a69494f426173655f526561645772697465 *48616e646c655f7374617469635f656e747279004748437a6953686f775f73686f775369676e65 *64496e745f636c6f73757265004748437a695265616c5f6469764d6f64325f696e666f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f6d756e63685f636c6f7375 *7265004748437a69496e745f7a74325f696e666f00546578747a69526561647a694c65785f7a64 *4c723576396133395f696e666f004748437a69494f426173655f6c766c33315f656e7472790047 *48437a69496e745f73756363325f696e666f00546578747a695072657474795072696e747a6948 *7567686573504a5f6c766c335f636c6f7375726500546578747a69526561647a694c65785f6c65 *785f656e747279004748437a695265616c5f7a64776469764d6f645f656e74727900446174617a *695475706c655f7a646645715a32545f656e74727900446973747269627574696f6e7a69536574 *75705f576974684873633268735f7374617469635f656e74727900546578747a69526561647a69 *4c65785f7a644c723577426135345f656e747279004748437a6948616e646c655f7a644c726259 *356c766c385f636c6f73757265007374675f61705f375f7570645f696e666f007374675f656e74 *65725f726574004748437a6953686f775f73686f77436861725f696e666f004748437a69556e69 *636f64655f697353706163655f636c6f737572650053797374656d7a694469726563746f72795f *7a644c72396279646573635f656e747279004748437a69546f7048616e646c65725f7a644c7233 *37696c766c395f636c6f73757265004748437a69494f426173655f6132305f636c6f7375726500 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c37355f636c6f *7375726500446973747269627574696f6e7a694765744f70745f7a646766726f6d4f7074446573 *63725f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f *7a644c723468307a647766696c6c4e425f636c6f73757265006578697453746f72616765004748 *437a69494f426173655f4d5661725f7374617469635f656e747279005f5f656e636f6465466c6f *617400446973747269627574696f6e7a6956657273696f6e5f77697468696e52616e67655f656e *747279006d626c6f636b5f6d6170004748437a694e756d5f656e756d46726f6d5468656e5f636c *6f7375726500446973747269627574696f6e7a6953657475705f57697468416c65785f636c6f73 *75726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72346747 *6132385f636c6f73757265004748437a695265616c5f71756f7452656d315f636c6f7375726500 *4748437a69426173655f756e7061636b417070656e6443537472696e677a685f656e747279005a *434d61696e5f6d61696e5f636c6f737572650073696770726f636d61736b4040474c4942435f32 *2e300053797374656d7a69506f7369787a69496e7465726e616c735f61345f656e747279004748 *437a69494f5f7a644c723966726c766c385f636c6f73757265005f5f676d707a5f616464005465 *78747a69526561647a694c65785f7a644c7235755a5a78335f636c6f7375726500466f72656967 *6e7a6953746f7261626c655f706f6c797a757a64646d7065656b325f636c6f7375726500546578 *747a695072657474795072696e747a69487567686573504a5f7a644c7234683266696c6c31315f *696e666f004748437a6948616e646c655f6c766c35335f636c6f73757265004748437a69426173 *655f497a685f7374617469635f656e747279004748437a6953686f775f7a644c72315a5a426c76 *6c325f636c6f73757265004748437a6953686f775f6132395f636c6f73757265004748437a694e *756d5f71756f7452656d496e74656765725f636c6f73757265004748437a6948616e646c655f7a *6477666c757368526561644275666665725f636c6f73757265004748437a6948616e646c655f7a *644c7262583961335f696e666f004748437a694172725f535441727261795f7374617469635f69 *6e666f00546578747a69526561647a694c65785f7a644c723576666134305f636c6f7375726500 *466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c5f696e666f004748437a6952 *65616c5f6c766c395f656e747279004748437a69494f426173655f6131395f696e666f00474843 *7a69426173655f74696d6573496e745f636c6f73757265007374675f494e445f5354415449435f *696e666f00546578747a69526561647a694c65785f7a644c7235766a6c766c32355f696e666f00 *4748437a6953686f775f7a644c72315a5a486c766c355f696e666f004748437a6948616e646c65 *5f7a6477666c757368526561644275666665725f736c6f7700546578747a69526561647a694c65 *785f7a644c723576316c766c32325f696e666f004748437a694e756d5f6a746f737a715f636c6f *7375726500546578747a69526561647a694c65785f7a644c7235744c6133315f636c6f73757265 *006d616b65537461626c655074727a685f66617374005f5f676d707a5f666469765f7172004748 *437a69494f5f6c766c31355f696e666f004748437a69494f426173655f496c6c6567616c4f7065 *726174696f6e5f636c6f73757265004748437a6953686f775f615f636c6f737572650044697374 *7269627574696f6e7a69436f6d7061747a694469726563746f72795f72656d6f76654469726563 *746f72795265637572736976655f656e74727900446973747269627574696f6e7a694c6963656e *73655f7a6467746f4c6963656e73655f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723578566c766c35325f696e666f004748437a694e756d5f7a644c723278766c766c32 *5f656e74727900446973747269627574696f6e7a6956657273696f6e5f4c617465725665727369 *6f6e5f656e7472790070617573654040474c4942435f322e30004748437a694c6973745f7a644c *723272536c766c32395f696e666f00466f726569676e7a6953746f7261626c655f706f6c797a75 *73697a7a654f66325f696e666f00546578747a69526561647a694c65785f50756e635f636f6e5f *696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f726177537973 *74656d457869745f696e666f004748437a69426173655f556e69745f636c6f7375726500466f72 *6569676e7a69437a694572726f725f7a64776363616c6c325f736c6f7700446174617a694d6179 *62655f6d617962655f696e666f007363686564756c6546696e616c697a65727300546578747a69 *526561647a694c65785f7a644c723574706132305f636c6f73757265004748437a69526561645f *7a644c723639666c766c31385f656e747279004748437a69546f7048616e646c65725f7265706f *72744572726f725f656e747279004748437a6948616e646c655f61315f636c6f73757265004748 *437a69426173655f6c766c335f656e747279004748437a694c6973745f627265616b5f696e666f *00546578747a69526561647a694c65785f7a644c723574686131365f636c6f7375726500446973 *747269627574696f6e7a69436f6d7061747a6952656164505f4765745f656e747279004748437a *69496e745f72656d325f696e666f0053797374656d7a69436d645f61315f636c6f737572650047 *48437a694c6973745f7a7a697057697468335f696e666f004748437a695265616c5f7a64776136 *5f636c6f73757265004748437a6953686f775f7a644c72315a5a566c766c31325f636c6f737572 *65004748437a6948616e646c655f68436c6f73657a7568656c705f696e666f004748437a694261 *73655f7a677a675f636c6f7375726500466f726569676e7a694d61727368616c7a69416c6c6f63 *5f6c766c315f656e74727900446973747269627574696f6e7a6953657475705f7061727365476c *6f62616c417267735f656e74727900546578747a69526561647a694c65785f7a644c7235743561 *31305f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f56657273696f *6e5f636f6e5f696e666f005f5f66696e695f61727261795f7374617274006e657741727261797a *685f666173740053797374656d7a69456e7669726f6e6d656e745f676f5f656e747279005f5f73 *7467696e69745f446174617a694368617200446973747269627574696f6e7a6950617273655574 *696c735f72756e505f636c6f7375726500446174617a694c6973745f776f7264735f696e666f00 *4748437a6953686f775f5a434453686f775f636f6e5f696e666f00446973747269627574696f6e *7a6956657273696f6e5f7a6467746f56657273696f6e52616e67655f636c6f7375726500546578 *747a69526561647a694c65785f7a644c723579486c766c37365f636c6f73757265004748437a69 *4572725f7a644c723130706c766c31335f696e666f004748437a695265616c5f71756f7452656d *315f696e666f00546578747a69526561647a694c65785f7a644c723578317832345f636c6f7375 *72650073757370656e6454687265616400446174617a694c6973745f756e6c696e65735f656e74 *72790072616973654173796e63004748437a694c6973745f7a644c723272656c766c395f656e74 *7279004748437a69537461626c655f537461626c655074725f7374617469635f696e666f007374 *675f7570645f6672616d655f365f726574004748437a695265616c5f61395f656e747279004469 *73747269627574696f6e7a6953657475705f7061727365436c65616e417267735f696e666f0047 *48437a69576f72645f7a644c723943366c766c31315f696e666f004748437a694c6973745f7370 *616e5f696e666f004748437a69466c6f61745f467a685f636f6e5f656e74727900446174617a69 *5479706561626c655f7a64776d6b5479436f6e5f656e74727900446973747269627574696f6e7a *6950617273655574696c735f73686f77546573746564576974685f737274004469737472696275 *74696f6e7a69436f6d7061747a694469726563746f72795f636f707946696c655f656e74727900 *66707574634040474c4942435f322e30005f5f676d707a5f746469765f7172004748437a69494f *426173655f6c766c33355f656e7472790053797374656d7a694469726563746f72795f6c766c32 *395f636c6f73757265005f5f6c6962635f6373755f696e6974004748437a69494f426173655f41 *72697468457863657074696f6e5f7374617469635f656e74727900436f6e74726f6c7a694d6f6e *61645f6d61704d5f636c6f73757265004748437a69526561645f61345f696e666f00446174617a *69486173685461626c655f7a64776c676f5f656e74727900446174617a69486173685461626c65 *5f7a647768617368537472696e675f636c6f737572650053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c37355f696e666f004748437a6953686f775f73686f77 *7350726563345f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f53636f *706564547970655661726961626c65735f636c6f73757265004748437a6948616e646c655f6c76 *6c31375f636c6f73757265004748437a69456e756d5f70726564355f636c6f7375726500546578 *747a695072657474795072696e747a69487567686573504a5f636f6c6f6e5f636c6f7375726500 *446973747269627574696f6e7a694765744f70745f52657475726e496e4f726465725f73746174 *69635f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f636f6e7374 *7a75667a75676574666c5f696e666f00546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c7234675761626f7665315f636c6f73757265004748437a694572725f706174 *4572726f725f656e747279004748437a69426173655f7a627a625f656e747279004748437a6945 *6e756d5f656e756d46726f6d546f325f656e747279004748437a69494f426173655f6275665250 *74725f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a646766726f *6d446570656e64656e63795f636c6f737572650053797374656d7a69506f7369787a69496e7465 *726e616c735f7a64776363616c6c32335f656e74727900546578747a695072657474795072696e *747a69487567686573504a5f7a644c72346863676f335f656e7472790053797374656d7a69506f *7369787a69496e7465726e616c735f7a64776363616c6c34395f736c6f77005f5f737467696e69 *745f546578747a69526561647a694c65785f004748437a695265616c5f71756f7452656d325f65 *6e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f656e6442795f *656e74727900446973747269627574696f6e7a6953657475705f576974684873633268735f7374 *617469635f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f64 *69655f656e74727900446973747269627574696f6e7a694c6963656e73655f425344345f636c6f *73757265004748437a694e756d5f707265645f696e666f00546578747a69506172736572436f6d *62696e61746f72737a6952656164505f4c6f6f6b5f7374617469635f696e666f007374675f7365 *715f6672616d655f696e666f00446174617a694d617962655f4a7573745f7374617469635f696e *666f005f5f787374617436344040474c4942435f322e32004748437a694e756d5f7a64646d6d61 *785f696e666f0053797374656d7a69506f7369787a6946696c65735f66696c654d6f64655f696e *666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f73657042795f696e *666f00546578747a69526561647a694c65785f6c65785f696e666f004748437a69494f5f685075 *744275665f696e666f005f5f737467696e69745f4748437a69457863657074696f6e5f00446973 *747269627574696f6e7a695061636b6167655f7a6466526561645061636b6167654964656e7469 *666965725f636c6f7375726500466f726569676e7a69437a694572726f725f7468726f77457272 *6e6f49664d696e75733152657472797a755f696e666f004748437a694572725f6c766c395f636c *6f73757265004748437a6953686f775f6136335f636c6f73757265004748437a69494f42617365 *5f7468726f775f656e74727900446973747269627574696f6e7a6950617273655574696c735f73 *686f774572726f725f737274004748437a69576f72645f66726f6d496e7465676572335f696e66 *6f0053797374656d7a694469726563746f72795f646f657346696c6545786973745f636c6f7375 *7265004748437a6953686f775f73686f774c6973747a757a755f636c6f73757265004748437a69 *4572725f7a644c723130356c766c335f636c6f73757265005f5f737467696e69745f4469737472 *69627574696f6e7a6950617273655574696c7300546578747a695072657474795072696e747a69 *487567686573504a5f7a644c72346861676f325f636c6f73757265004748437a69496e745f4938 *7a685f636f6e5f696e666f00446973747269627574696f6e7a6950726550726f636573737a6955 *6e6c69745f496e636c7564655f636f6e5f696e666f0073687574646f776e4861736b656c6c0044 *6973747269627574696f6e7a6950726550726f636573737a69556e6c69745f7a646766726f6d43 *6c61737369666965645f656e747279004748437a6953686f775f6135325f656e74727900537973 *74656d7a69506f7369787a69496e7465726e616c735f6664547970655f656e747279004748437a *69556e69636f64655f697344696769745f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f736b69705370616365735f656e7472790044697374726962757469 *6f6e7a694765744f70745f7a646766726f6d4f707444657363725f696e666f005f5f737467696e *69745f53797374656d7a6945786974004748437a69496e745f7a6477626f756e646564456e756d *46726f6d5468656e5f656e74727900446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f63634f7074696f6e735f636c6f73757265004748437a6948616e646c655f *6c766c37325f736c6f7700546578747a69526561647a694c65785f7a644c723575586133375f69 *6e666f004748437a694e756d5f5a43444e756d5f7374617469635f696e666f007374675f73656c *5f31315f6e6f7570645f696e666f006d75745f757365725f74696d65004748437a69494f5f6c76 *6c355f636c6f73757265006d626c6f636b735f616c6c6f6361746564007274735f676574507472 *004748437a6948616e646c655f6132355f636c6f737572650053797374656d7a69506f7369787a *69496e7465726e616c735f637a75726d6469725f636c6f73757265004748437a694c6973745f75 *6e7a7a6970335f696e666f004748437a694e756d5f6469764d6f64496e74656765725f656e7472 *7900546578747a695072657474795072696e747a69487567686573504a5f61345f636c6f737572 *65004748437a69494f426173655f757365724572726f725f656e74727900436f6e74726f6c7a69 *4d6f6e61645f5a43444d6f6e6164506c75735f636f6e5f656e7472790053797374656d7a694469 *726563746f72795f6c6f6e677a75706174687a7573697a7a655f656e747279005f5f6273735f73 *74617274004748437a694e756d5f66726f6d496e7465676572315f696e666f0044697374726962 *7574696f6e7a69436f6d7061747a6946696c65506174685f73706c697446696c654578745f656e *747279004748437a69576f72645f7a644c723943386c766c31325f636c6f737572650054657874 *7a69526561647a694c65785f7a644c723576506134365f636c6f73757265004748437a69526561 *6c5f7a6466496e74656772616c496e74656765725f636c6f737572650053797374656d7a69506f *7369787a69496e7465726e616c735f7a64776363616c6c34395f656e747279004748437a694c69 *73745f7a64776c656e5f656e74727900446973747269627574696f6e7a6953657475705f474843 *5f7374617469635f696e666f004748437a6953686f775f6c766c31375f636c6f73757265005465 *78747a69506172736572436f6d62696e61746f72737a6952656164505f7a644c723174736c766c *375f656e74727900446973747269627574696f6e7a6950617273655574696c735f70617273654f *707456657273696f6e5f696e666f004748437a69494f426173655f57726974654d6f64655f636c *6f73757265004748437a69456e756d5f656664496e7446425f736c6f7700446973747269627574 *696f6e7a694c6963656e73655f416c6c52696768747352657365727665645f7374617469635f65 *6e7472790053797374656d7a69494f7a694572726f725f7472795f696e666f0044697374726962 *7574696f6e7a69457874656e73696f6e5f526563757273697665446f5f7374617469635f696e66 *6f005f5f737467696e69745f53797374656d7a69456e7669726f6e6d656e745f006469764d6f64 *496e74656765727a685f6661737400446973747269627574696f6e7a6953696d706c657a695574 *696c735f6d6f64756c65546f46696c65506174685f737274007274735f6576616c4c617a79494f *5f004748437a69576f72645f7a74335f656e74727900466f726569676e7a694d61727368616c7a *6941727261795f7a64777065656b41727261795f656e747279004748437a6948616e646c655f6c *766c31375f696e666f004748437a69494f426173655f6132335f656e74727900446174617a6945 *69746865725f7a646645714569746865725f636c6f7375726500446973747269627574696f6e7a *694765744f70745f52657475726e496e4f726465725f7374617469635f696e666f005379737465 *6d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36355f636c6f7375726500 *4748437a6948616e646c655f6c766c35365f636c6f73757265007374675f4e4f5f46494e414c49 *5a45525f636c6f7375726500446973747269627574696f6e7a69457874656e73696f6e5f466c65 *7869626c65496e7374616e6365735f7374617469635f696e666f004748437a694e756d5f656e75 *6d44656c7461496e74656765725f636c6f73757265004748437a6948616e646c655f6c766c3532 *5f656e74727900436f6e74726f6c7a69457863657074696f6e5f66696e616c6c795f656e747279 *004748437a69496e745f4931367a685f7374617469635f696e666f00546578747a69526561647a *694c65785f5261745f7374617469635f696e666f00546578747a69526561647a694c65785f7a64 *4c7235774c6c766c34305f636c6f73757265004748437a694572725f6469765a5a65726f457272 *6f725f656e747279004748437a6953686f775f7a647773686f774c6974436861725f656e747279 *0053797374656d7a694469726563746f72795f7a644c7239637166696c654e616d65456e64436c *65616e315f636c6f73757265004748437a69526561645f7a6473726561644c6973744465666175 *6c74325f656e747279004748437a694c6973745f7a644c723273796c766c34325f656e74727900 *446973747269627574696f6e7a6950617273655574696c735f416d6269676f757350617273655f *636f6e5f656e74727900446973747269627574696f6e7a6956657273696f6e5f70617273655665 *7273696f6e52616e67655f696e666f006d61696e004748437a6948616e646c655f7a6477666c75 *736857726974654275666665725f736c6f770053797374656d7a694469726563746f72795f7a64 *4c723962457468726f774572726e6f49664d696e7573317a755f656e74727900446174617a6945 *69746865725f4c6566745f636f6e5f696e666f004748437a694e756d5f74696d6573496e746567 *65725f696e666f004748437a69426173655f636f6e73745f656e74727900446973747269627574 *696f6e7a6950617273655574696c735f7a6467746f5374616e7a7a614669656c645f696e666f00 *446973747269627574696f6e7a6953696d706c657a695574696c735f7769746854656d7046696c *655f737274004748437a69494f426173655f6c766c32315f636c6f7375726500476574526f6f74 *73007374675f61705f7070707070705f72657400446973747269627574696f6e7a6953696d706c *657a695574696c735f646f74546f5365705f696e666f0053797374656d7a69506f7369787a6949 *6e7465726e616c735f6f7a7543524541545f696e666f004748437a69576f72645f577a685f7374 *617469635f696e666f00446973747269627574696f6e7a6950617273655574696c735f73686f77 *4572726f725f636c6f7375726500546578747a69526561647a694c65785f7a644c7235776a6135 *315f696e666f004748437a69526561645f7a6473726561644c69737444656661756c74345f656e *74727900446973747269627574696f6e7a69457874656e73696f6e5f657874656e73696f6e7354 *6f4e4843466c61675f656e74727900446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f746573746564576974685f656e74727900446973747269627574696f6e7a *6953657475705f48656c70436d645f636c6f73757265007374675f626c6f636b5f7075746d7661 *7200446973747269627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e *6765735f7374617469635f656e74727900546578747a69526561647a694c65785f7a644c723577 *526c766c34315f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65 *506174685f6d6b536561726368506174685f696e666f00446973747269627574696f6e7a69436f *6d7061747a6952656164505f72656164537a75746f7a75505f636c6f73757265004748437a6949 *4f5f6c766c32335f636c6f73757265004748437a694c6973745f7a644c7232726d6c766c31335f *636c6f7375726500446973747269627574696f6e7a694765744f70745f7a646766726f6d4f7074 *4b696e645f656e747279004748437a6948616e646c655f68436c6f73657a7568656c705f636c6f *73757265004748437a694c6973745f7a644c723271556c766c385f656e74727900446973747269 *627574696f6e7a6953657475705f7061727365436f6e666967757265417267735f656e74727900 *546578747a69526561647a694c65785f7a644c723579746c766c36395f636c6f73757265004748 *437a695265616c5f7a6477615f636c6f73757265004748437a6953686f775f7a644c72315a5a46 *6c766c345f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f70 *617273654d6f64756c654e616d65515f636c6f73757265004748437a6948616e646c655f776974 *6848616e646c657a757a757a715f636c6f73757265004748437a69494f426173655f6c766c3238 *5f656e747279004748437a69494f426173655f6132305f656e747279007374675f73656c5f3133 *5f7570645f696e666f004748437a6953686f775f6131325f636c6f7375726500696e6974446566 *61756c7448616e646c65727300546578747a695072657474795072696e747a6948756768657350 *4a5f7a644c7234674b6e696c426573696465315f656e74727900446973747269627574696f6e7a *69436f6d7061747a6952656164505f7365704279315f636c6f73757265004748437a6942617365 *5f756e7061636b43537472696e677a685f636c6f73757265004748437a69494f5f6c766c5f656e *74727900446973747269627574696f6e7a6953696d706c657a695574696c735f66696e64486f6f *6b65645061636b616765446573635f696e666f004748437a6948616e646c655f6132355f696e66 *6f00546578747a69526561647a694c65785f7a644c72354146626f64795f696e666f004748437a *6948616e646c655f6f70656e46645f656e747279005f5f737467696e69745f4748437a69417272 *00446973747269627574696f6e7a6953657475705f486164646f636b436d645f7374617469635f *656e74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f *70617273654465736372697074696f6e5f7372746400446973747269627574696f6e7a69566572 *73696f6e5f7a646766726f6d56657273696f6e5f656e747279004748437a694e756d5f61627331 *5f696e666f004748437a6948616e646c655f7a644c724a726d6b46696c6548616e646c655f696e *666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f6d616e79315f636c *6f73757265007374675f67635f766f69645f72657400546578747a69526561647a694c65785f7a *644c7235754a6c766c31385f636c6f73757265004748437a69494f426173655f6132375f696e66 *6f004748437a69426173655f5a30545f636c6f737572655f74626c00446973747269627574696f *6e7a6950726550726f636573737a69556e6c69745f50726f6772616d5f696e666f004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f726561645061636b616765 *4465736372697074696f6e5f696e666f004748437a694c6973745f74616b655f636c6f73757265 *004748437a69494f426173655f4475706c657848616e646c655f636f6e5f656e74727900474843 *7a69426173655f756e7061636b43537472696e67557466387a685f696e666f00546578747a6950 *72657474795072696e747a69487567686573504a5f7a647766696c6c315f656e74727900546578 *747a695072657474795072696e747a69487567686573504a5f7a644c72346865676f345f656e74 *7279004748437a694c6973745f616e795f656e74727900446973747269627574696f6e7a694578 *74656e73696f6e5f556e736166654f7665726c617070696e67496e7374616e6365735f73746174 *69635f696e666f00546578747a69526561647a694c65785f7a644c723576426c766c32385f656e *74727900466f726569676e7a69437a69537472696e675f7769746843537472696e674c656e5f63 *6c6f7375726500546578747a69526561647a694c65785f53796d626f6c5f636f6e5f696e666f00 *4748437a695265616c5f6c766c5f636c6f7375726500546578747a69526561647a694c65785f7a *644c723541446c65785374724974656d5f636c6f73757265007374675f6f72363400546578747a *69526561647a694c65785f7a644c723579546c766c38325f636c6f737572650073657475705274 *73466c61677300546578747a69526561647a694c65785f7a644c723579526c766c38315f636c6f *73757265005f5f737467696e69745f4748437a695265616c004748437a69556e69636f64655f74 *6f4c6f7765725f696e666f005f5f737467696e69745f446973747269627574696f6e7a69476574 *4f707400466f726569676e7a69437a694572726f725f7468726f774572726e6f49664d696e7573 *317a755f696e666f005f5f737467696e69745f436f6e74726f6c7a694d6f6e6164007374675f61 *705f315f7570645f656e74727900756e626c6f636b4173796e63457863657074696f6e737a685f *6661737400446973747269627574696f6e7a6956657273696f6e5f496e74657273656374566572 *73696f6e52616e6765735f7374617469635f696e666f004748437a695265616c5f7a644c723532 *316c766c385f656e74727900546578747a695072657474795072696e747a69487567686573504a *5f4368725f7374617469635f656e747279004748437a694e756d5f4a7a685f7374617469635f69 *6e666f00546578747a69526561647a694c65785f7a644c723575466133345f696e666f00474843 *7a69494f426173655f4275666665724c6973744e696c5f7374617469635f696e666f004748437a *6953686f775f7a644c72315a5a4c6c766c375f696e666f004748437a694c6973745f66696c7465 *725f636c6f73757265004748437a6948616e646c655f7a644c724a726d6b46696c6548616e646c *655f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776c766c *5f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f6d6b *4c69624e616d655f636c6f73757265004748437a6953686f775f6c766c31335f656e7472790044 *6973747269627574696f6e7a694765744f70745f4f70744172675f636f6e5f656e747279004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f63686f6963655f656e74727900 *446973747269627574696f6e7a6953657475705f436f6d70696c65725f636f6e5f696e666f0069 *6e697441646a7573746f7200546578747a69526561647a694c65785f7a644c723578396c766c34 *345f696e666f00546578747a69526561647a694c65785f7a644c7235743361395f636c6f737572 *65004748437a6948616e646c655f7a644c726330427a647768616e646c6546696e616c697a7a65 *725f696e666f004748437a694e756d5f696e746567657232496e745f656e747279004748437a69 *494f426173655f4275666665725f636f6e5f656e74727900546578747a69507265747479507269 *6e747a69487567686573504a5f4368725f636f6e5f656e7472790053797374656d7a6944697265 *63746f72795f6372656174654469726563746f72795f656e74727900446973747269627574696f *6e7a6950726550726f636573737a69556e6c69745f436f6d6d656e745f7374617469635f656e74 *7279004f75744f6648656170486f6f6b007374675f73656c5f305f6e6f7570645f696e666f0044 *6973747269627574696f6e7a69436f6d7061747a694469726563746f72795f72656d6f76654469 *726563746f72795265637572736976655f636c6f73757265004748437a695265616c5f71756f74 *325f636c6f73757265004748437a6953686f775f6137305f636c6f737572650053797374656d7a *69457869745f61315f636c6f7375726500446973747269627574696f6e7a6953657475705f4865 *6c70466c61675f7374617469635f656e747279004748437a69546f7048616e646c65725f6b5f69 *6e666f004748437a694c6973745f7a644c7262317072656c7a756c6973747a757374725f656e74 *7279004748437a69426173655f6c74496e745f696e666f004748437a69426173655f497a685f63 *6f6e5f656e74727900446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6d61696e7461696e65725f636c6f7375726500446973747269627574696f6e7a69536574 *75705f5769746843707068735f696e666f0053797374656d7a69506f7369787a69496e7465726e *616c735f7a64776363616c6c31365f696e666f004748437a69496e745f71756f7452656d325f65 *6e74727900446973747269627574696f6e7a6956657273696f6e5f416e7956657273696f6e5f73 *74617469635f656e747279005f5f737467696e69745f4748437a6953686f77004748437a69496e *745f7a737a65335f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f *7a644c7237566d6c766c335f696e666f005f5f6c6962635f73746172745f6d61696e4040474c49 *42435f322e3000446973747269627574696f6e7a69436f6d7061747a6952656164505f73657042 *79315f656e7472790072616973654040474c4942435f322e30007374675f454e445f54534f5f51 *554555455f636c6f7375726500446973747269627574696f6e7a6953657475705f7a646653686f *77436f6d70696c65725f636c6f7375726500446973747269627574696f6e7a6953696d706c657a *695574696c735f7374726970436f6d6d656e74735f73727400446973747269627574696f6e7a69 *436f6d7061747a6952656164505f6d756e6368315f636c6f73757265004748437a695265616c5f *72656d315f696e666f004748437a69456e756d5f7a644c723979676f7a75646e7a75696e747a75 *66625f656e74727900446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f6578654d6f64756c65735f696e666f004748437a69494f426173655f4578697445786365 *7074696f6e5f7374617469635f656e747279004748437a69426173655f45515f7374617469635f *656e74727900446973747269627574696f6e7a69457874656e73696f6e5f4350505f7374617469 *635f696e666f004748437a69426173655f7a645f636c6f73757265004748437a69494f42617365 *5f6c766c32355f696e666f00546578747a69526561647a694c65785f7a644c7235735a5a76616c *315f696e666f00546578747a69526561647a694c65785f7a644c72354146626f64795f656e7472 *79004748437a694e756d5f6e6567617465496e74656765725f656e74727900546578747a695265 *61647a694c65785f7a644c723578666c766c34355f696e666f00546578747a69526561647a694c *65785f7a644c723577766135335f696e666f00446973747269627574696f6e7a6956657273696f *6e5f4c6174657256657273696f6e5f696e666f004748437a694e756d5f737563635f656e747279 *00466f726569676e7a69437a694572726f725f7468726f774572726e6f49664d696e7573315f63 *6c6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164505f64 *6973636172645f656e74727900446174617a694c6973745f6c696e65735f696e666f00666f726b *50726f6365737300546578747a69526561647a694c65785f7a644c723575526c766c32305f636c *6f737572650053797374656d7a69436d645f72617753797374656d5f696e666f00446973747269 *627574696f6e7a69457874656e73696f6e5f48657265446f63756d656e74735f7374617469635f *656e74727900446973747269627574696f6e7a6953657475705f636f6e66696748617070795f65 *6e747279005f5f737467696e69745f446973747269627574696f6e7a69457874656e73696f6e00 *546578747a69526561647a694c65785f7a644c723578446c766c34395f636c6f73757265005f5f *676d707a5f746469765f72005f5f696e69745f61727261795f656e640044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f6275696c64446570656e64735f696e66 *6f004748437a69426173655f496e725f7374617469635f656e7472790044697374726962757469 *6f6e7a6953657475705f436d645f7374617469635f696e666f00546578747a6950726574747950 *72696e747a69487567686573504a5f7a644c72346838676f315f696e666f004469737472696275 *74696f6e7a6953657475705f5265676973746572436d645f656e747279004748437a694c697374 *5f7a644c7232714f6c766c355f656e7472790053797374656d7a69506f7369787a69496e746572 *6e616c735f7a64776363616c6c33345f696e666f004748437a69494f5f7a6477636f6d6d697442 *75666665727a715f696e666f004748435f5a434352657475726e61626c655f7374617469635f69 *6e666f004748437a695265616c5f7a64737a765f636c6f7375726500446973747269627574696f *6e7a69436f6d7061747a6952656164505f6d616e795f656e747279004748437a694e756d5f7a6c *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f556e *696f6e5f636f6e5f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f46 *756e6374696f6e616c446570656e64656e636965735f7374617469635f656e7472790044697374 *7269627574696f6e7a69436f6d7061747a6952656164505f72656164537a75746f7a75505f696e *666f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f73706c6974 *46696c654578745f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c *735f7a64776363616c6c31365f656e74727900446973747269627574696f6e7a69436f6d706174 *7a694469726563746f72795f676574486f6d654469726563746f72795f73727400446973747269 *627574696f6e7a694765744f70745f4f7074696f6e5f636f6e5f656e747279004748437a694861 *6e646c655f7a644c72625a5a376c766c34305f696e666f004748437a69426173655f636f6d7061 *7265496e747a685f636c6f73757265004748437a6948616e646c655f6c766c345f636c6f737572 *65004748437a694c6973745f7265706561745f696e666f00446973747269627574696f6e7a6950 *617273655574696c735f416d6269676f757350617273655f636f6e5f696e666f007374675f7365 *6c5f385f6e6f7570645f656e74727900546578747a695072657474795072696e747a6948756768 *6573504a5f7a644c72346863676f335f696e666f004748437a694c6973745f64726f705f656e74 *7279004748437a69426173655f47545f7374617469635f696e666f005f5f737467696e69745f44 *6973747269627574696f6e7a6950726550726f636573737a69556e6c6974004748437a69546f70 *48616e646c65725f7a644c723337616c766c355f736c6f7700446973747269627574696f6e7a69 *53657475705f5769746848617070795f7374617469635f656e747279007969656c647a685f6661 *73740053797374656d7a69494f5f7075745374725f656e747279004748437a69494f426173655f *7a647773686f777350726563325f656e747279004748437a69456e756d5f66726f6d456e756d34 *5f696e666f004748437a6953686f775f7a647773686f775369676e6564496e745f696e666f0047 *48437a694c6973745f7a644c723272796c766c31395f636c6f73757265007374675f454e445f4d *55545f4c4953545f636c6f73757265004748437a694e756d5f7a675f636c6f7375726500474843 *7a69494f5f7a64777772697465426c6f636b735f636c6f73757265007374675f63746f695f7265 *745f46315f696e666f00546578747a69526561647a694c65785f7a644c723576446134345f696e *666f004748437a69494f426173655f6861547970655f636c6f7375726500546578747a69526561 *647a694c65785f6137305f636c6f73757265004748437a694e756d5f7a737a655f656e74727900 *4748437a69494f426173655f627566575074725f636c6f737572650053797374656d7a69446972 *6563746f72795f7a644c723962437a64776c6f6f705f656e74727900546578747a69526561647a *694c65785f7a644c723574486132395f656e747279004748437a69494f5f6c766c355f656e7472 *7900446973747269627574696f6e7a6950617273655574696c735f46726f6d537472696e675f73 *74617469635f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f657874 *656e73696f6e73546f474843466c61675f636c6f73757265004748437a69556e69636f64655f69 *73416c7068615f656e747279004748437a69494f426173655f686561704f766572666c6f775f63 *6c6f73757265004748437a694e756d5f7a64664f7264496e74656765725f636c6f737572650047 *48437a6948616e646c655f7769746848616e646c657a715f656e747279004748437a69494f4261 *73655f6861547970655f656e74727900466f726569676e7a6953746f7261626c655f706f6c797a *75616c69676e6d656e74325f656e747279004748437a694572725f7a644c723130356c766c335f *656e747279004748437a69526561645f5a4344526561645f636f6e5f656e747279004469737472 *69627574696f6e7a695061636b6167655f7a646653686f775061636b6167654964656e74696669 *65725f656e74727900446973747269627574696f6e7a6953657475705f436f6e666967466c6167 *735f7374617469635f696e666f00446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f45786563757461626c655f7374617469635f656e747279004748437a694e75 *6d5f7a644c723278426c766c355f696e666f004748437a69496e745f676f5f636c6f7375726500 *446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f756e6c69745f73 *727400446973747269627574696f6e7a694765744f70745f4f70744572725f7374617469635f69 *6e666f004748437a694e756d5f7a644c723278726c766c5f696e666f0044697374726962757469 *6f6e7a695061636b6167654465736372697074696f6e5f63634f7074696f6e735f656e74727900 *4748437a69556e69636f64655f7a64776973416c7068615f636c6f737572650044697374726962 *7574696f6e7a6950617273655574696c735f706172736551756f7465645f696e666f0044697374 *7269627574696f6e7a694c6963656e73655f7a646766726f6d4c6963656e73655f656e74727900 *546578747a69506172736572436f6d62696e61746f72737a6952656164505f7a644c7231746d6c *766c345f656e747279004748437a69496e745f7a64777a64646d656e756d46726f6d5468656e54 *6f5f696e666f00546578747a69526561647a694c65785f496e745f636f6e5f656e747279004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a6467746f4c6962 *726172795f636c6f73757265004748437a69576f72645f7a64646d73686f774c697374335f656e *747279004748437a69494f5f7a6477685075744275667a715f736c6f7700446973747269627574 *696f6e7a6950617273655574696c735f4e6f50617273655f7374617469635f696e666f005f5f73 *7467696e69745f446174617a6944796e616d69635f0053797374656d7a694469726563746f7279 *5f6c766c32335f636c6f7375726500436f6e74726f6c7a694d6f6e61645f756e6c6573735f656e *74727900466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c315f696e666f0047 *48437a694172725f535441727261795f7374617469635f656e7472790044697374726962757469 *6f6e7a6950617273655574696c735f6f7074734669656c645f696e666f007374675f494e445f35 *5f696e666f004748437a695265616c5f7a647766315f656e747279004748437a69494f5f6c766c *31385f696e666f00546578747a69506172736572436f6d62696e61746f72737a6952656164505f *6c766c335f636c6f7375726500546578747a69526561647a694c65785f7a644c72357478613234 *5f636c6f73757265004748437a69496e745f626f756e646564456e756d46726f6d5468656e5f63 *6c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e *5f7a6466526561645061636b6167654465736372697074696f6e5f636c6f737572650054657874 *7a69526561647a694c65785f7a644c723578336c766c34335f636c6f7375726500446973747269 *627574696f6e7a6956657273696f6e5f7a646766726f6d446570656e64656e63795f656e747279 *007374675f494e445f345f696e666f00446973747269627574696f6e7a6950617273655574696c *735f46726f6d537472696e675f656e74727900446973747269627574696f6e7a695061636b6167 *655f706b674e616d655f656e747279004748437a69546f7048616e646c65725f7265706f727445 *72726f725f696e666f007374675f7570645f6672616d655f726574007374675f67635f66315f69 *6e666f004748437a694c6973745f6c6173745f656e74727900446973747269627574696f6e7a69 *53696d706c657a695574696c735f6d61796265457869745f737274004748437a694e756d5f646e *7a7566625f696e666f005f5f737467696e69745f546578747a69506172736572436f6d62696e61 *746f72737a6952656164507265635f00446973747269627574696f6e7a6953657475705f487567 *73466c61675f7374617469635f656e74727900546578747a69526561647a694c65785f7a644c72 *3578566c766c35325f656e747279004748437a69496e745f676f5f656e747279004748437a6946 *6c6f61745f7a64777a6473726f756e64335f636c6f73757265004748437a694572725f6c766c37 *5f636c6f7375726500446973747269627574696f6e7a6953657475705f4f74686572436f6d7069 *6c65725f7374617469635f656e7472790053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c33335f656e7472790053797374656d7a69506f7369787a6946696c65 *735f73657446696c654d6f64655f696e666f004748437a69494f426173655f426c6f636b427566 *666572696e675f7374617469635f656e747279004748437a6953686f775f7a644c72315a5a4e6c *766c385f656e747279004748437a69494f5f6c766c32335f736c6f77004748437a6953686f775f *7a644c72315a5a506c766c395f696e666f004748437a69494f426173655f454f465f636c6f7375 *726500546578747a695072657474795072696e747a69487567686573504a5f4e6573745f737461 *7469635f656e747279004748437a694c6973745f6e756c6c5f696e666f00446973747269627574 *696f6e7a695061636b6167655f7a6466526561645061636b6167654964656e7469666965725f73 *727400446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a6467 *66726f6d4c6962726172795f656e747279004748437a695265616c5f646976315f696e666f0054 *6578747a695072657474795072696e747a69487567686573504a5f7a644c72346836676f5f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f5061 *636b6167654465736372697074696f6e5f636c6f7375726500446973747269627574696f6e7a69 *53657475705f4275696c64436d645f7374617469635f656e747279004748437a69494f42617365 *5f6c766c33305f656e74727900446973747269627574696f6e7a6953657475705f436f6e666967 *466c6167735f636c6f73757265004748437a6948616e646c655f696f657a75636c6f7365644861 *6e646c655f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f63 *7a756765747069645f696e666f004748437a69426173655f5a435f636f6e5f656e747279007274 *735f6d6b496e743332004748437a69546f7048616e646c65725f6c766c345f656e747279004469 *73747269627574696f6e7a6953657475705f4e6863466c61675f636c6f7375726500466f726569 *676e7a69437a694572726f725f7468726f774572726e6f496652657472795f696e666f00446973 *747269627574696f6e7a6956657273696f6e5f76657273696f6e546167735f656e747279007374 *61745f7374617274496e6974004748437a69494f5f7a644c72444a685075746342756666657265 *645f696e666f00546578747a695072657474795072696e747a69487567686573504a5f41626f76 *655f636f6e5f656e747279004748437a69426173655f756e7061636b43537472696e677a685f69 *6e666f00546578747a69526561647a694c65785f7a644c723579646c766c36315f636c6f737572 *65004748437a6948616e646c655f6c766c35335f656e74727900446973747269627574696f6e7a *6956657273696f6e5f5468697356657273696f6e5f7374617469635f696e666f00546578747a69 *526561647a694c65785f7a644c723577486135355f696e666f00446973747269627574696f6e7a *69436f6d7061747a6946696c65506174685f6a6f696e50617468735f636c6f7375726500474843 *7a69494f426173655f696f457863657074696f6e5f636c6f73757265006e65774d5661727a685f *666173740053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33 *365f736c6f77004748437a694e756d5f616273325f696e666f00446973747269627574696f6e7a *69457874656e73696f6e5f466f726569676e46756e6374696f6e496e746572666163655f737461 *7469635f696e666f004748437a69546f7048616e646c65725f7a644c723337616c766c355f656e *74727900546578747a69526561647a694c65785f7a644c723574546c766c31305f656e74727900 *4748437a6948616e646c655f6132365f636c6f73757265004748437a6953686f775f6c766c3138 *5f636c6f73757265004748437a6953686f775f6135385f656e747279004748437a6953686f775f *6136345f636c6f73757265004748437a69496e745f7a64646d73686f774c697374325f656e7472 *7900446973747269627574696f6e7a695061636b6167655f5061636b6167654964656e74696669 *65725f636f6e5f656e747279007374675f494e445f325f696e666f00546578747a69526561647a *694c65785f7a644c72357a7a646c766c38365f696e666f004748437a69426173655f7a64646d7a *677a655f696e666f00446973747269627574696f6e7a6950617273655574696c735f7a64676672 *6f6d5061727365526573756c745f696e666f00446973747269627574696f6e7a6953657475705f *436f7079436d645f636f6e5f696e666f00757064617465537461626c655074725461626c650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f6f7074696f6e5f696e666f00 *53797374656d7a694469726563746f72795f6c766c32325f656e747279007265616c6c6f634040 *474c4942435f322e3000726573657447656e53796d5a680072656d496e74656765727a685f6661 *7374004748437a69494f426173655f7a647773686f777350726563325f636c6f73757265004748 *437a6953686f775f6137325f696e666f00446174617a694d617962655f6c766c315f696e666f00 *4748437a69494f426173655f6c766c32395f696e666f004748437a69576f72645f737563634572 *726f725f656e747279004748437a69546f7048616e646c65725f7265706f7274537461636b4f76 *6572666c6f775f636c6f73757265004748437a6948616e646c655f6175676d656e74494f457272 *6f725f656e747279007374675f72656d496e743634004748437a69426173655f7a7a65726f496e *745f636c6f73757265004748437a69426173655f5a435f7374617469635f656e747279005f5f73 *7467696e69745f466f726569676e7a69437a69537472696e675f004748437a69494f426173655f *6c766c32365f656e747279004748437a6948616e646c655f696f657a75636c6f73656448616e64 *6c655f736c6f7700446973747269627574696f6e7a69457874656e73696f6e5f4d756c74695061 *72616d54797065436c61737365735f636c6f73757265004748437a694c6973745f7375625f696e *666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a646766726f6d50 *5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7265616453 *7a75746f7a75505f656e74727900466f726569676e7a69437a69537472696e675f776974684353 *7472696e674c656e5f656e747279004748437a694e756d5f6c69745f696e666f00546578747a69 *526561647a694c65785f7a644c723578666c766c34355f636c6f73757265004469737472696275 *74696f6e7a6953657475705f436f6e666967466c6167735f636f6e5f696e666f00446973747269 *627574696f6e7a6953657475705f5769746848617070795f636c6f737572650053797374656d7a *69506f7369787a69496e7465726e616c735f7a64776363616c6c32305f696e666f004748437a69 *456e756d5f70726564355f656e74727900446973747269627574696f6e7a69436f6d7061747a69 *52656164505f656e644279315f636c6f737572650053797374656d7a69494f7a694572726f725f *6c766c5f656e7472790053797374656d7a69506f7369787a6946696c65735f73657446696c654d *6f64655f636c6f73757265004748437a6953686f775f6135365f696e666f004748437a69457863 *657074696f6e5f6361746368457863657074696f6e5f636c6f73757265005f5f737467696e6974 *5f446174617a69436861725f004748437a694c6973745f7a7a6970576974685f656e7472790054 *6578747a69526561647a694c65785f4964656e745f7374617469635f656e747279004748437a69 *456e756d5f656674496e7446425f636c6f73757265004748437a694c6973745f6c766c31325f65 *6e747279006177616b656e426c6f636b6564517565756500446174617a695479706561626c655f *6d6b41707054795f656e747279004748437a69494f426173655f4475706c657848616e646c655f *636f6e5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c36395f696e666f00466f726569676e7a694d61727368616c7a69416c6c6f635f6c766c31 *5f636c6f73757265006d696e7573496e74656765727a685f66617374005f5f737467696e69745f *546578747a695072657474795072696e747a69487567686573504a004748437a69426173655f67 *65745461675f696e666f00446973747269627574696f6e7a6956657273696f6e5f7a646766726f *6d56657273696f6e52616e67655f656e747279004748437a69466c6f61745f7a64777a64737072 *6f7065724672616374696f6e5f636c6f73757265004748437a69526561645f6c6578505f696e66 *6f00446174617a695479706561626c655f7a64776d6b41707054795f636c6f7375726500474843 *7a694c6973745f72657065617446425f656e7472790053797374656d7a69456e7669726f6e6d65 *6e745f676f325f636c6f73757265004748437a6953686f775f73686f77537472696e675f656e74 *7279004748437a695265616c5f6c766c355f656e747279004748437a6948616e646c655f696f65 *7a756e6f745265616461626c655f696e666f004748437a69496e745f7a644c723945436c766c31 *355f636c6f73757265004748437a69494f426173655f7a677a675f656e74727900446973747269 *627574696f6e7a6950617273655574696c735f706172736556657273696f6e52616e6765515f65 *6e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f697350 *617468536570617261746f725f656e74727900446973747269627574696f6e7a6953657475705f *436f6e666967436d645f636f6e5f696e666f00446174617a694d617962655f4a7573745f636f6e *5f696e666f004748437a69494f5f7a644c723966646c766c315f736c6f7700546578747a695061 *72736572436f6d62696e61746f72737a6952656164505f6d706c75735f696e666f005f5f737467 *696e69745f4748437a69537461626c655f004d61696e5f6d61696e5f7372740044697374726962 *7574696f6e7a69436f6d7061747a694469726563746f72795f6372656174654469726563746f72 *7949664d697373696e675f737274004748437a694e756d5f7a64646d73686f775f696e666f0047 *48437a69494f5f6c766c5f696e666f0053797374656d7a69494f5f777269746546696c655f656e *747279004748437a69456e756d5f656674496e7446425f736c6f7700446973747269627574696f *6e7a69457874656e73696f6e5f457874656e73696f6e5f636c6f737572655f74626c0044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f6d61696e7461696e6572 *5f656e747279004748437a694e756d5f6a746f735f696e666f004748437a69496e745f6c766c32 *365f696e666f004748437a69526561645f6c766c31335f696e666f004748437a694c6973745f69 *6e69745f656e747279005f5f737467696e69745f53797374656d7a69506f7369787a6954656d70 *5f00446973747269627574696f6e7a6953657475705f496e7374616c6c436d645f656e74727900 *4748437a69494f426173655f5265736f7572636556616e69736865645f7374617469635f656e74 *7279004748437a69494f426173655f496e7465727275707465645f7374617469635f696e666f00 *466f726569676e7a6953746f7261626c655f706f6c797a757a64646d706f6b65325f696e666f00 *446973747269627574696f6e7a69457874656e73696f6e5f52616e6b4e54797065735f73746174 *69635f696e666f004748437a694c6973745f616c6c5f696e666f00546578747a69506172736572 *436f6d62696e61746f72737a6952656164505f7a644c7231746d6c766c345f636c6f7375726500 *446174617a694d617962655f4e6f7468696e675f7374617469635f696e666f0044697374726962 *7574696f6e7a6950617273655574696c735f73696e676c655374616e7a7a615f636c6f73757265 *00546578747a69506172736572436f6d62696e61746f72737a6952656164505f7a644c72317473 *6c766c375f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7557 *524f4e4c595f656e74727900446174617a694569746865725f52696768745f636f6e5f696e666f *00446973747269627574696f6e7a695061636b6167655f73686f775061636b61676549645f696e *666f0053797374656d7a69457869745f6c766c335f636c6f7375726500546578747a6950726574 *74795072696e747a69487567686573504a5f7a644c72346865676f345f696e666f00436f6e7472 *6f6c7a694d6f6e61645f6c6966744d325f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f7a64664d6f6e6164506c75735061727365725f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f637a75756e6c696e6b5f636c6f73757265 *00446973747269627574696f6e7a6953696d706c657a695574696c735f66696e64486f6f6b6564 *5061636b616765446573635f656e74727900466f726569676e7a69437a694572726f725f7a6477 *6363616c6c315f656e747279004748437a69426173655f7a64646d7a677a675f696e666f004469 *73747269627574696f6e7a6950726550726f636573737a69556e6c69745f496e636c7564655f69 *6e666f004748437a69556e69636f64655f6973416c7068614e756d5f636c6f7375726500446973 *747269627574696f6e7a6950617273655574696c735f73686f7746726565546578745f636c6f73 *75726500646174615f7374617274007274735f6d6b426f6f6c004748437a69526561645f61355f *636c6f737572650053797374656d7a69494f5f7075745374724c6e5f656e747279004748437a69 *496e745f6c766c31375f656e74727900446973747269627574696f6e7a69436f6d7061747a6952 *656164505f636861696e6c315f636c6f73757265007374675f696e6974004748437a695265616c *5f7a64646d73686f774c6973745f636c6f7375726500446174617a69486173685461626c655f48 *545f636f6e5f656e74727900446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f65787472614c6962446972735f636c6f737572650053797374656d7a6944697265 *63746f72795f67657443757272656e744469726563746f72795f696e666f004469737472696275 *74696f6e7a694765744f70745f4f7074696f6e5f636f6e5f696e666f0053797374656d7a694469 *726563746f72795f7468726f774572726e6f49664d696e75733152657472797a755f696e666f00 *446973747269627574696f6e7a6950617273655574696c735f73686f7746726565546578745f69 *6e666f00446973747269627574696f6e7a6956657273696f6e5f6f724c6174657256657273696f *6e5f636c6f73757265004748437a695265616c5f5a437a765f636f6e5f656e747279004748437a *69494f426173655f6661696c494f5f656e747279005f5f737467696e69745f53797374656d7a69 *506f7369787a6950726f636573735f004748437a695265616c5f5a4344496e74656772616c5f73 *74617469635f656e747279004748437a69526561645f7a6466526561644d617962655f636c6f73 *75726500446973747269627574696f6e7a6953657475705f706172736550726f6772616d617469 *6361417267735f737274004748437a69496e745f4933327a685f7374617469635f696e666f0044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f73746162696c69 *74795f636c6f7375726500446973747269627574696f6e7a6953657475705f4842435f636c6f73 *75726500446174617a694c6973745f696e7465727370657273655f636c6f737572650044617461 *7a695479706561626c655f7a657a65325f656e74727900446973747269627574696f6e7a694765 *744f70745f556e7265714f70745f696e666f007761697457726974657a685f6661737400474843 *7a69496e745f626f756e646564456e756d46726f6d5f696e666f00446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f6c69624d6f64756c65735f656e7472790044 *6973747269627574696f6e7a6953657475705f7a6467746f436f6d70696c65725f636c6f737572 *6500446973747269627574696f6e7a69457874656e73696f6e5f5479706553796e6f6e796d496e *7374616e6365735f636c6f73757265004748437a6953686f775f6133365f656e74727900546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f646973636172645f696e66 *6f00446973747269627574696f6e7a6950617273655574696c735f7a646766726f6d504572726f *725f656e74727900546578747a69526561647a694c65785f7a644c7235735a5a76616c315f636c *6f7375726500446973747269627574696f6e7a6950617273655574696c735f5061727365466169 *6c65645f656e74727900446973747269627574696f6e7a6953657475705f436f7079436d645f65 *6e747279004748437a69494f426173655f457869744661696c7572655f636f6e5f656e74727900 *4748437a6953686f775f6134315f636c6f7375726500446973747269627574696f6e7a69436f6d *7061747a6952656164505f6d756e6368315f696e666f00436f6e74726f6c7a694d6f6e61645f77 *68656e5f656e74727900446973747269627574696f6e7a6953657475705f7a646653686f77466c *61675f696e666f00546578747a69526561647a694c65785f7a644c72357a7a3369734964664368 *61725f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6c766c3135 *5f636c6f73757265004748437a6948616e646c655f6c766c35325f696e666f00466f726569676e *7a6953746f7261626c655f7a646653746f7261626c655074725f636c6f73757265004748437a69 *494f426173655f486561704f766572666c6f775f7374617469635f656e74727900446973747269 *627574696f6e7a6953657475705f486164646f636b436d645f636c6f73757265006973446f7562 *6c654e656761746976655a65726f004748437a69494f426173655f7a644c7236624861315f656e *747279004748437a69576f72645f7a737a65345f696e666f0053797374656d7a69506f7369787a *69496e7465726e616c735f7a64776363616c6c32355f656e74727900446973747269627574696f *6e7a6950617273655574696c735f73696d706c654669656c645f696e666f004748437a69456e75 *6d5f656e756d46726f6d325f656e74727900446973747269627574696f6e7a69457874656e7369 *6f6e5f466c657869626c65496e7374616e6365735f636c6f73757265004748437a694578636570 *74696f6e5f6361746368457863657074696f6e5f656e747279004748437a6953686f775f7a644c *72315a5a466c766c345f696e666f00446973747269627574696f6e7a69436f6d7061747a694669 *6c65506174685f73706c697446696c65506174685f696e666f004748437a6953686f775f613436 *5f656e747279004748437a695265616c5f7a647773686f7773507265635f636c6f737572650054 *6578747a69526561647a694c65785f7a644c7235794c6c766c37385f636c6f7375726500537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c375f636c6f73757265 *004748437a69496e745f636f6d70617265325f696e666f004748437a69494f426173655f526573 *6f757263654578686175737465645f7374617469635f656e747279004748437a6953746f726162 *6c655f726561645074724f66665074725f636c6f7375726500446973747269627574696f6e7a69 *50617273655574696c735f7a6467746f5061727365526573756c745f656e747279004469737472 *69627574696f6e7a69436f6d7061747a6952656164505f4661696c5f7374617469635f656e7472 *790053797374656d7a69506f7369787a69496e7465726e616c735f73697a7a656f667a75737461 *745f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e *5f68634f7074696f6e735f656e74727900446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f776974684578655f737274004748437a6953686f775f6133345f696e *666f0053797374656d7a694469726563746f72795f7a644c72396145615f696e666f0054657874 *7a695072657474795072696e747a69487567686573504a5f7a644c7234686b7a6477666974735f *656e74727900446973747269627574696f6e7a6953696d706c657a695574696c735f6d61796265 *457869745f656e747279004748437a6948616e646c655f77616e745772697461626c6548616e64 *6c655f656e7472790053797374656d7a69457869745f65786974576974685f656e747279004469 *73747269627574696f6e7a69436f6d7061747a694469726563746f72795f636f707946696c655f *73727464004748437a69494f426173655f6c766c33325f656e7472790044697374726962757469 *6f6e7a6953657475705f4275696c64436d645f7374617469635f696e666f004469737472696275 *74696f6e7a6953657475705f636f6e6669674863506174685f696e666f005f5f666978756e7364 *66646900546578747a69526561647a694c65785f7a644c7235766278355f636c6f737572650047 *48437a6953686f775f7a646653686f775a4d5a4e5f656e74727900546578747a69506172736572 *436f6d62696e61746f72737a6952656164507265635f707265635f656e74727900446973747269 *627574696f6e7a6950617273655574696c735f72756e505f737274005f5f737467696e69745f53 *797374656d7a69506f7369787a69496e7465726e616c735f007374675f73656c5f315f6e6f7570 *645f656e747279004748437a694c6973745f7a644c723272556c766c33305f656e747279004748 *437a69494f5f7a644c723966566c766c31395f656e747279004748437a69526561645f6c766c35 *5f636c6f73757265007374675f72616973655f696e666f00546578747a69526561647a694c6578 *5f7a644c72357a7a586c766c3130355f636c6f737572650064656c61797a685f66617374004748 *437a6953686f775f6136345f656e74727900546578747a695072657474795072696e747a694875 *67686573504a5f7a644c723467716c766c31375f656e747279004748437a69494f426173655f53 *7461636b4f766572666c6f775f7374617469635f656e74727900446973747269627574696f6e7a *6950617273655574696c735f7a64664d6f6e61645061727365526573756c745f696e666f004469 *73747269627574696f6e7a6956657273696f6e5f6f724561726c69657256657273696f6e5f656e *74727900546578747a69526561647a694c65785f7a644c723541446c65785374724974656d5f65 *6e74727900546578747a695072657474795072696e747a69487567686573504a5f456d7074795f *7374617469635f656e74727900446174617a694c6973745f756e776f7264735f696e666f005379 *7374656d7a694469726563746f72795f6c766c32385f656e74727900546578747a695072657474 *795072696e747a69487567686573504a5f546578744265736964655f636f6e5f696e666f004748 *437a69556e69636f64655f697344696769745f636c6f73757265004748437a69496e745f7a6464 *6d6d61785f656e747279004748437a6953686f775f7a64737a64646d73686f77345f696e666f00 *446973747269627574696f6e7a6953657475705f576974684873633268735f656e747279005465 *78747a695072657474795072696e747a69487567686573504a5f66756c6c52656e6465725f636c *6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164505f6c76 *6c325f656e747279005f5f737467696e69745f466f726569676e7a69466f726569676e50747200 *7374675f61705f365f7570645f696e666f0073746f7054696d657200546578747a695061727365 *72436f6d62696e61746f72737a6952656164507265635f7a707a707a705f656e747279005f6669 *6e69007374675f6c65496e74363400446174617a695479706561626c655f74626c5f636c6f7375 *7265005f5f737467696e69745f4748437a6948616e646c6500446973747269627574696f6e7a69 *50617273655574696c735f706172736552656164535f636c6f73757265004748437a6952656164 *5f726561644e756d626572335f636c6f73757265004748437a69526561645f7265616450726563 *345f696e666f0066636e746c4040474c4942435f322e30004748437a69494f426173655f496c6c *6567616c4f7065726174696f6e5f7374617469635f696e666f007274735f6576616c5f00474843 *7a69494f5f7a6477706f6c797a7562756657726974655f696e666f0053797374656d7a69456e76 *69726f6e6d656e745f6c766c5f656e74727900446973747269627574696f6e7a695061636b6167 *654465736372697074696f6e5f73616e697479436865636b5061636b6167655f636c6f73757265 *00546578747a69526561647a694c65785f7a644c7235784c6136365f656e74727900546578747a *69526561647a694c65785f7a644c723575707a6477667261635f696e666f004748437a69494f42 *6173655f6132335f636c6f73757265004748437a69426173655f497a685f7374617469635f696e *666f00546578747a69526561647a694c65785f454f465f636c6f73757265004469737472696275 *74696f6e7a69457874656e73696f6e5f496d706c69636974506172616d735f7374617469635f65 *6e747279006d656d6370794040474c4942435f322e3000446174617a695479706561626c655f6d *6b5479436f6e5f696e666f004748437a69526561645f6c766c31335f656e747279005379737465 *6d7a69456e7669726f6e6d656e745f676574417267735f736c6f7700446973747269627574696f *6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c75735061727365725f636c6f *7375726500446973747269627574696f6e7a6953696d706c657a695574696c735f737472697043 *6f6d6d656e74735f696e666f004748437a6948616e646c655f6d6b53746448616e646c655f656e *747279004748437a69494f5f7a644c7239664a7a6477726561644368756e6b5f696e666f005379 *7374656d7a69494f5f685075745374724c6e5f656e747279004748437a69546f7048616e646c65 *725f72756e494f5f696e666f004748437a69494f426173655f6861497353747265616d5f656e74 *727900446973747269627574696f6e7a695061636b6167655f7a646653686f775061636b616765 *4964656e7469666965725f636c6f737572650053797374656d7a694469726563746f72795f6c76 *6c32335f696e666f005f5f737467696e69745f466f726569676e7a694d61727368616c7a694172 *7261795f00446973747269627574696f6e7a6953657475705f5072656669785f636f6e5f656e74 *727900446973747269627574696f6e7a6953657475705f566572626f73655f636c6f7375726500 *4748437a69456e756d5f66726f6d456e756d345f656e747279004748437a69494f426173655f6c *766c33315f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a646654 *79706561626c6556657273696f6e5f636c6f73757265004748437a69496e745f6c766c32385f69 *6e666f004748437a69526561645f7a6473726561644c69737444656661756c74315f696e666f00 *6765744d426c6f636b0074727954616b654d5661727a685f66617374004748437a69426173655f *7a64646d6d696e5f656e74727900446973747269627574696f6e7a6953657475705f436f6e6669 *67436d645f7374617469635f656e747279004748437a694e756d5f706c7573496e74656765725f *636c6f73757265004748437a6953686f775f6136365f636c6f7375726500446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f7a646653686f774c6962726172795f *636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a646766726f6d5665 *7273696f6e52616e67655f636c6f737572650053797374656d7a69506f7369787a69496e746572 *6e616c735f637a756765747069645f636c6f73757265004748437a695265616c5f7a6466526561 *6c496e745f636c6f73757265004748437a69496e745f7a64777a64646d656e756d46726f6d546f *5f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f5374 *725f7374617469635f696e666f0053797374656d7a694469726563746f72795f7a644c72396245 *7468726f774572726e6f49664d696e7573317a755f636c6f73757265004748437a6948616e646c *655f7a644c724a6a617070656e647a75666c6167735f636c6f73757265006f70656e3634404047 *4c4942435f322e3100546578747a69526561647a694c65785f7a644c7235774c6c766c34305f69 *6e666f004748437a695265616c5f6131355f656e74727900546578747a69526561647a694c6578 *5f7a644c72357a7a356136385f696e666f00446973747269627574696f6e7a6950617273655574 *696c735f4e6f50617273655f696e666f00466f726569676e7a694d61727368616c7a6941727261 *795f706f6b654172726179305f656e74727900446973747269627574696f6e7a6953657475705f *57697468416c65785f636f6e5f696e666f00446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f4275696c64496e666f5f7374617469635f696e666f00546578747a *695072657474795072696e747a69487567686573504a5f7a644c72346836676f5f636c6f737572 *6500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6f626a457874 *656e73696f6e5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a695265 *6164505f706661696c5f696e666f00446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f73686f775061636b6167654465736372697074696f6e5f636c6f73757265 *005f5f737467696e69745f4748437a69494f004748437a69576f72645f7a647766726f6d496e74 *65676572335f696e666f00546578747a695072657474795072696e747a69487567686573504a5f *6132305f636c6f73757265004748437a69494f426173655f486561704f766572666c6f775f7374 *617469635f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7a *646766726f6d5061727365725f656e7472790066636c6f73654040474c4942435f322e31004748 *437a69466c6f61745f7a64777a6473726f756e64335f656e747279005f5f737467696e69745f47 *48437a69466f726569676e50747200446973747269627574696f6e7a6953657475705f57697468 *486164646f636b5f656e747279004748437a694c6973745f74616b655f696e666f00446174617a *695479706561626c655f5479436f6e5f7374617469635f696e666f00446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f65786563757461626c65735f696e666f00 *4d61696e5f6d61696e5f636c6f73757265005f5f737467696e69745f4748437a69494f5f004469 *73747269627574696f6e7a694765744f70745f526571756972654f726465725f7374617469635f *656e74727900466f726569676e7a69437a694572726f725f6c766c315f656e747279004748437a *69526561645f7a6473726561644c69737444656661756c74345f636c6f73757265004748437a69 *53686f775f7a647773686f7773507265635f656e747279006765744d426c6f636b73004748437a *695061636b5f756e7061636b43537472696e675f656e747279004748437a69426173655f7a6464 *45715f636c6f73757265007374675f696e746572705f636f6e737472375f656e74727900474843 *7a6948616e646c655f6c766c35335f736c6f77004748437a694e756d5f6c766c375f636c6f7375 *726500446973747269627574696f6e7a6950617273655574696c735f70617273655061636b6167 *654e616d65515f696e666f004748437a694e756d5f537a685f636f6e5f656e747279007374675f *7570645f6672616d655f345f726574004748437a694e756d5f7a644c723278426c766c355f636c *6f737572650063616c634c697665004748437a694e756d5f7a64646d6d696e5f656e7472790053 *797374656d7a69506f7369787a69496e7465726e616c735f7a64776c766c5f696e666f00446973 *747269627574696f6e7a6950617273655574696c735f6f7074734669656c645f656e7472790044 *6174617a694c6973745f6e75625f636c6f7375726500737472726368724040474c4942435f322e *30004748437a69496e745f7a64646d656e756d46726f6d5468656e546f5f656e74727900474843 *7a6953686f775f61736369695461625f636c6f7375726500446973747269627574696f6e7a6953 *657475705f636f6e6669675072656669785f636c6f73757265004748437a69526561645f726561 *644c69737444656661756c745f636c6f73757265005f5f737467696e69745f446174617a694978 *5f00446973747269627574696f6e7a69457874656e73696f6e5f496e6c696e6550686173655f73 *74617469635f656e74727900446973747269627574696f6e7a69436f6d7061747a695265616450 *5f63686f6963655f696e666f004748437a6953686f775f6135395f636c6f73757265004748437a *69494f426173655f426c6f636b427566666572696e675f636f6e5f656e74727900466f72656967 *6e7a69437a694572726f725f7468726f774572726e6f496652657472795f636c6f737572650047 *48437a69494f426173655f6133335f636c6f73757265004748437a6948616e646c655f68436c6f *73657a7568616e646c657a755f636c6f7375726500446973747269627574696f6e7a6953657475 *705f7061727365436f7079417267735f7372740074696d65734040474c4942435f322e30005465 *78747a69526561647a694c65785f7a644c723574566c766c31315f656e74727900446973747269 *627574696f6e7a69436f6d7061747a694469726563746f72795f66696e6445786563757461626c *655f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f6c6f6f6b *5f656e74727900446973747269627574696f6e7a6953657475705f436f7079436d645f636f6e5f *656e74727900446973747269627574696f6e7a6953657475705f636f6e6669674863506174685f *636c6f73757265004748437a69426173655f46616c73655f636c6f73757265004748437a69494f *426173655f5065726d697373696f6e44656e6965645f7374617469635f696e666f004469737472 *69627574696f6e7a6953657475705f636f6e666967416c65785f696e666f006361665f6c697374 *0067657450726f6741726776004748437a69426173655f5a435f636f6e5f696e666f0054657874 *7a69526561647a694c65785f7a644c7235776e6c766c33365f636c6f73757265004748437a6949 *4f426173655f6c766c33365f696e666f00446973747269627574696f6e7a6956657273696f6e5f *4c6174657256657273696f6e5f636f6e5f696e666f007374675f67656e5f626c6f636b00546578 *747a69526561647a694c65785f7a644c723573546c766c365f656e747279004748437a694e756d *5f696e746567657232496e745f636c6f7375726500446973747269627574696f6e7a6953657475 *705f5769746843707068735f7374617469635f696e666f004748437a6953686f775f6136355f63 *6c6f73757265004748437a69494f5f61315f636c6f7375726500446973747269627574696f6e7a *694c6963656e73655f47504c5f7374617469635f656e74727900446973747269627574696f6e7a *694765744f70745f4e6f4172675f656e747279004748437a6953686f775f6131365f636c6f7375 *726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a6466 *457145786563757461626c655f636c6f73757265005f5f676d706e5f6763645f31004469737472 *69627574696f6e7a6956657273696f6e5f7a6467746f446570656e64656e63795f636c6f737572 *65004748437a69496e745f4933327a685f636f6e5f656e74727900446174617a69486173685461 *626c655f7a64776c676f5f636c6f73757265004748437a69496e745f70726564325f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c75 *735061727365725f656e74727900446174617a694d617962655f4a7573745f636f6e5f656e7472 *7900546578747a69526561647a694c65785f7a644c723575356c766c31335f636c6f7375726500 *446973747269627574696f6e7a6953657475705f7a6467746f416374696f6e5f656e7472790044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7772697465486f *6f6b65644275696c64496e666f5f636c6f73757265004748437a694c6973745f7a644c72327275 *6c766c31375f636c6f7375726500446973747269627574696f6e7a6953657475705f4f74686572 *436f6d70696c65725f636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f *446570656e64656e63795f636f6e5f656e74727900546578747a69526561647a694c65785f7a64 *4c723573526c766c355f696e666f00546578747a695072657474795072696e747a694875676865 *73504a5f7a6c7a707a675f656e747279004748437a69426173655f5a4d5a4e5f636c6f73757265 *004748437a69546f7048616e646c65725f7a644c723337636c766c365f636c6f73757265004748 *437a69494f426173655f526561644d6f64655f7374617469635f656e7472790044697374726962 *7574696f6e7a694765744f70745f52657475726e496e4f726465725f656e74727900546578747a *69526561647a694c65785f5261745f7374617469635f656e74727900446973747269627574696f *6e7a6953657475705f57697468436f6d70696c65725f7374617469635f656e747279004748437a *69494f426173655f696f4572726f725f656e747279007374675f63617463685f6672616d655f34 *5f726574004748437a6953686f775f73686f774c697374315f696e666f0053797374656d7a6950 *6f7369787a69496e7465726e616c735f6c766c31345f696e666f004748437a695074725f706c75 *735074725f656e74727900726d6469724040474c4942435f322e30006973446f75626c6544656e *6f726d616c697a656400546578747a695072657474795072696e747a69487567686573504a5f42 *65736964655f7374617469635f696e666f00446973747269627574696f6e7a6950617273655574 *696c735f50617273654f6b5f636c6f73757265004748437a69526561645f61375f696e666f0047 *48437a69494f5f6c766c355f696e666f004748437a69426173655f496e6c5f7374617469635f65 *6e74727900446973747269627574696f6e7a6950617273655574696c735f73696d706c65466965 *6c645f636c6f73757265004748437a6948616e646c655f6132385f696e666f005f5f737467696e *69745f446174617a694978004748437a69526561645f72656164507265635f656e747279005f5f *737467696e69745f446973747269627574696f6e7a69436f6d7061747a694469726563746f7279 *004748437a6953686f775f7a644c72315a5a446c766c335f696e666f004748437a6953686f775f *6131305f696e666f00446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f686f6d65706167655f696e666f004748437a69496e745f7a64646d73686f775f656e7472 *79007374675f4e4f5f46494e414c495a45525f696e666f004748437a6953686f775f6134365f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c72357a7a4a6c766c39385f636c *6f73757265004748437a69426173655f646976496e747a685f636c6f7375726500446973747269 *627574696f6e7a6953657475705f7a646653686f77436f6e666967466c6167735f636c6f737572 *6500446973747269627574696f6e7a694c6963656e73655f47504c5f636c6f7375726500546578 *747a69526561647a694c65785f7a644c723579466c766c37355f636c6f73757265004748437a69 *53686f775f7a644c72315a5a446c766c335f636c6f73757265004748437a69496e745f6d696e42 *6f756e64325f656e74727900546578747a69526561647a694c65785f7a644c72357a7a35613638 *5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f6d61 *6e79315f656e747279004748437a69526561645f7a6466526561645a32545f636c6f7375726500 *446973747269627574696f6e7a6953657475705f7a646766726f6d466c61675f636c6f73757265 *00546578747a695072657474795072696e747a69487567686573504a5f54657874426573696465 *5f7374617469635f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f5265 *73747269637465645479706553796e6f6e796d735f7374617469635f696e666f0053797374656d *7a69506f7369787a69496e7465726e616c735f637a756f70656e6469725f636c6f737572650044 *6973747269627574696f6e7a69436f6d7061747a6952656164505f6d756e63685f656e74727900 *4748437a69546f7048616e646c65725f64735f696e666f004748437a6948616e646c655f6c766c *35375f636c6f73757265005f5f737467696e69745f466f726569676e7a694d61727368616c7a69 *506f6f6c5f00446174617a694c6973745f696e7465727370657273655f696e666f004748437a69 *48616e646c655f7a644c726259316c766c365f636c6f7375726500546578747a69526561647a69 *4c65785f7a644c723576336133385f696e666f004748437a695265616c5f6131355f636c6f7375 *7265004748437a69576f72645f7a644c723943636c766c31345f636c6f73757265004748437a69 *526561645f5a4344526561645f636f6e5f696e666f00436f6e74726f6c7a694d6f6e61645f6c69 *66744d325f636c6f7375726500466f726569676e7a69437a69537472696e675f77697468435374 *72696e675f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164 *505f636861696e72315f636c6f73757265007374675f535441424c455f4e414d455f696e666f00 *546578747a69526561647a694c65785f7a644c723577626c766c33345f636c6f73757265004748 *437a69494f426173655f756e73616665496e7465726c65617665494f5f636c6f73757265004469 *73747269627574696f6e7a6950726550726f636573737a69556e6c69745f5072655f636f6e5f65 *6e747279004748437a69496e745f746f456e756d5f636c6f73757265004748437a69496e745f73 *69676e756d325f696e666f00446973747269627574696f6e7a6953657475705f4f74686572436f *6d70696c65725f636f6e5f696e666f004748437a695265616c5f61375f656e747279004748437a *69526561645f6c766c375f636c6f7375726500446973747269627574696f6e7a69436f6d706174 *7a6952656164505f4765745f636f6e5f696e666f00446973747269627574696f6e7a6953657475 *705f636f6d70696c6572506b67546f6f6c5f696e666f004748437a69546f7048616e646c65725f *7a644c7233376d6c766c31315f636c6f73757265004748437a69494f5f7772697465426c6f636b *73315f636c6f7375726500446973747269627574696f6e7a695061636b61676544657363726970 *74696f6e5f4c6962726172795f656e747279004748437a6953686f775f73686f77735f656e7472 *7900546578747a695072657474795072696e747a69487567686573504a5f556e696f6e5f636f6e *5f696e666f004748437a695265616c5f7a64737a64664571526174696f5f636c6f737572650047 *48437a69526561645f7a6473726561644c6973745072656344656661756c74325f696e666f0044 *6973747269627574696f6e7a6950617273655574696c735f50617273654661696c65645f636f6e *5f656e74727900446973747269627574696f6e7a694765744f70745f526571756972654f726465 *725f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164 *505f7a6c7a707a705f636c6f73757265004748437a694e756d5f656e756d46726f6d5468656e5f *696e666f004748437a69494f5f6c766c365f656e74727900446973747269627574696f6e7a6943 *6f6d7061747a6946696c65506174685f6a6f696e50617468735f696e666f00666f70656e363440 *40474c4942435f322e31004748437a69546f7048616e646c65725f7a644c723337326c766c325f *696e666f00466f726569676e7a694d61727368616c7a69416c6c6f635f7a64776363616c6c325f *636c6f7375726500446973747269627574696f6e7a695061636b6167654465736372697074696f *6e5f696e636c756465735f696e666f00446973747269627574696f6e7a6953657475705f507265 *6669785f696e666f00446174617a69486173685461626c655f6c766c5f636c6f73757265004748 *437a69576f72645f577a685f636f6e5f696e666f007374675f67635f756e70745f72315f696e66 *6f00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f646c6c457874 *656e73696f6e5f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c6550 *6174685f6d6b536561726368506174685f656e74727900636c6f73656469724040474c4942435f *322e30004748437a69496e745f7a64646d73686f774c697374325f636c6f737572650044697374 *7269627574696f6e7a6950617273655574696c735f46726f6d537472696e675f7374617469635f *696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f4c6f6f6b5f63 *6f6e5f696e666f0053797374656d7a694469726563746f72795f7468726f774572726e6f49664d *696e75733152657472797a755f636c6f73757265004748437a69426173655f7a657a65315f636c *6f7375726500446973747269627574696f6e7a694765744f70745f7a6467746f41726744657363 *725f656e747279007374675f73656c5f335f6e6f7570645f696e666f004748437a6953686f775f *6131345f636c6f73757265004748437a6948616e646c655f6c766c31375f656e74727900737467 *5f494e445f335f696e666f004748437a694e756d5f7a644c723278786c766c335f636c6f737572 *6500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c69624d *6f64756c65735f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574 *696c735f66696e64486f6f6b65645061636b616765446573635f636c6f7375726500546578747a *69506172736572436f6d62696e61746f72737a6952656164505f7a644c723174656c766c5f636c *6f73757265004748437a69426173655f72657475726e5f636c6f73757265004469737472696275 *74696f6e7a6950617273655574696c735f6c6973744669656c645f696e666f0067657474696d65 *6f666461794040474c4942435f322e3000546578747a69526561647a694c65785f7a644c723577 *5a5a6135385f636c6f73757265004748437a694c6973745f726576657273655f656e7472790053 *797374656d7a69506f7369787a6946696c65735f6c766c32325f656e7472790044697374726962 *7574696f6e7a6956657273696f6e5f496e7465727365637456657273696f6e52616e6765735f69 *6e666f004748437a695265616c5f7a647773686f7773507265635f656e7472790053797374656d *7a694469726563746f72795f7a644c7239637166696c654e616d65456e64436c65616e315f696e *666f007374675f41505f535441434b5f696e666f004748437a6953686f775f6137355f636c6f73 *757265004748437a69494f426173655f7a657a65385f636c6f73757265004748437a69496e745f *7a64777a657a655f656e74727900546578747a69526561647a694c65785f7a644c723575546133 *365f696e666f00466f726569676e7a6953746f7261626c655f706f6c797a757065656b42797465 *4f6666325f636c6f73757265004748437a6953686f775f6132305f656e747279004748437a694c *6973745f7a644c723271536c766c375f656e747279004748437a69546f7048616e646c65725f7a *644c723337616c766c355f636c6f7375726500546578747a695072657474795072696e747a6948 *7567686573504a5f7a644c72346838676f315f636c6f737572650053797374656d7a69494f5f70 *75745374725f636c6f73757265004748437a694c6973745f696e69745f636c6f73757265005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c723468307a647766696c *6c4e425f736c6f7700446973747269627574696f6e7a69457874656e73696f6e5f457874656e73 *69626c655265636f7264735f7374617469635f656e747279004748437a695265616c5f746f5261 *74696f6e616c315f656e747279004748437a6948616e646c655f6132365f656e74727900446973 *747269627574696f6e7a69436f6d7061747a6952656164505f636861696e6c5f696e666f004748 *437a69494f426173655f426c6f636b427566666572696e675f636f6e5f696e666f004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f726561645061636b616765 *4465736372697074696f6e5f656e74727900446973747269627574696f6e7a69436f6d7061747a *6952656164505f7a646766726f6d5061727365725f636c6f737572650044697374726962757469 *6f6e7a694765744f70745f7a6467746f4172674f726465725f696e666f004748437a6952656164 *5f6c766c31345f636c6f7375726500446973747269627574696f6e7a6950617273655574696c73 *5f7061727365457874656e73696f6e515f7372740053797374656d7a69506f7369787a69496e74 *65726e616c735f7a64776363616c6c33325f696e666f004748437a69426173655f7a617a615f65 *6e74727900546578747a69526561647a694c65785f7a644c723579376c766c35385f636c6f7375 *7265004748437a69546f7048616e646c65725f7a644c723336556c766c5f736c6f77004748437a *6948616e646c655f6f70656e42696e61727946696c655f636c6f73757265004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f736b69705370616365735f7372740044697374 *7269627574696f6e7a6950617273655574696c735f73696e676c655374616e7a7a615f656e7472 *7900446973747269627574696f6e7a69436f6d7061747a6952656164505f46696e616c5f636f6e *5f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952656164505f46 *696e616c5f7374617469635f656e74727900446174617a694569746865725f7a64664571456974 *6865725f656e74727900446973747269627574696f6e7a6950617273655574696c735f70617273 *6546696c6550617468515f73727400546578747a695072657474795072696e747a694875676865 *73504a5f556e696f6e5f7374617469635f696e666f004748437a69466c6f61745f467a685f7374 *617469635f696e666f005f5f737467696e69745f446973747269627574696f6e7a695061636b61 *67654465736372697074696f6e00446973747269627574696f6e7a69436f6d7061747a69526561 *64505f73657042795f73727400446973747269627574696f6e7a6953657475705f507265666978 *5f636c6f73757265004748437a694c6973745f7a644c723271536c766c375f696e666f00474843 *7a69546f7048616e646c65725f7a644c723337716c766c31335f636c6f73757265004748437a69 *456e756d5f66726f6d456e756d345f636c6f73757265004748437a69426173655f7a64646d7a6c *5f656e747279007374675f7570645f6672616d655f305f72657400546578747a69507265747479 *5072696e747a69487567686573504a5f4e6573745f636f6e5f656e7472790053797374656d7a69 *4469726563746f72795f7a644c72396279646573635f636c6f73757265006f70656e6469724040 *474c4942435f322e30004748437a6948616e646c655f7a644c724a6a617070656e647a75666c61 *67735f696e666f004748437a695265616c5f61385f696e666f00446973747269627574696f6e7a *6950617273655574696c735f706172736554657374656457697468515f696e666f004469737472 *69627574696f6e7a694765744f70745f4f7074696f6e5f656e747279004748437a695265616c5f *5a43445265616c5f7374617469635f656e747279004748437a69426173655f497a685f636f6e5f *696e666f004748437a694e756d5f656e756d46726f6d5468656e546f5f636c6f73757265005f5f *737467696e69745f446174617a6945697468657200446973747269627574696f6e7a69436f6d70 *61747a6946696c65506174685f64726f704162736f6c7574655072656669785f73727400446973 *747269627574696f6e7a6953657475705f7a646653686f77466c61675f656e747279007374675f *696e746572705f636f6e7374725f656e747279004748437a6953686f775f6135355f636c6f7375 *7265005f5f737467696e69745f446973747269627574696f6e7a69436f6d7061747a6945786365 *7074696f6e00446973747269627574696f6e7a69457874656e73696f6e5f4e616d65644669656c *6450756e735f7374617469635f696e666f0053797374656d7a694469726563746f72795f697344 *69726563746f72795f696e666f00546578747a69506172736572436f6d62696e61746f72737a69 *52656164505f526573756c745f7374617469635f696e666f004748437a6953686f775f7a644c72 *315a5a526c766c31305f656e747279004748437a69526561645f726561644c6973745072656344 *656661756c745f656e747279007374675f61705f355f7570645f656e747279004748437a69494f *426173655f417070656e6448616e646c655f636c6f73757265004748437a694c6973745f706f6c *797a756c6173747a715f696e666f004748437a69526561645f706f6c797a75676f5f636c6f7375 *726500546578747a69526561647a694c65785f7a644c723573506c766c345f696e666f00546578 *747a69506172736572436f6d62696e61746f72737a6952656164505f706661696c5f696e666f00 *4748437a6953686f775f6136325f696e666f004748437a69556e69636f64655f6973416c706861 *5f636c6f73757265004748437a694c6973745f7a644c723272576c766c33315f656e7472790047 *48437a6948616e646c655f7a647766696c6c526561644275666665724c6f6f705f656e74727900 *446174617a69486173685461626c655f7a6477696e736572745f636c6f73757265004748437a69 *53686f775f6131305f656e747279004748437a69426173655f7a64737a64646d7a737a655f696e *666f00446174617a694d617962655f69734e6f7468696e675f696e666f007374675f626c6f636b *5f310053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36335f *636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f7a646766726f *6d5374616e7a7a614669656c645f696e666f0053797374656d7a69457869745f65786974576974 *685f636c6f73757265004748437a69546f7048616e646c65725f7a644c7233376d6c766c31315f *696e666f004748437a694c6973745f7461696c5f636c6f7375726500466f726569676e7a694d61 *727368616c7a69416c6c6f635f7a64776363616c6c5f636c6f7375726500466f726569676e7a69 *437a694572726f725f7468726f774572726e6f49664d696e7573317a755f636c6f737572650054 *6578747a69526561647a694c65785f7a644c7235786a7832375f636c6f73757265005379737465 *6d7a69506f7369787a6946696c65735f67657446696c655374617475735f656e74727900446973 *747269627574696f6e7a69436f6d7061747a6952656164505f526573756c745f636c6f73757265 *007374675f64756d6d795f7265745f696e666f0074696479416c6c6f636174654c697374730054 *6578747a69526561647a694c65785f7a644c72357a7a426c766c39345f636c6f73757265004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f4661696c5f7374617469635f69 *6e666f00446174617a695479706561626c655f43616368655f7374617469635f696e666f005465 *78747a69526561647a694c65785f7a644c723575646c6974325f636c6f73757265004748437a69 *494f5f7a644c723967726c617a7a79526561644275666665726564315f696e666f004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f636f6d6d6f6e506172656e745f *656e74727900446973747269627574696f6e7a6953696d706c657a695574696c735f736d617274 *436f7079536f75726365735f656e747279004748437a69494f426173655f48616e646c65547970 *655f636c6f737572655f74626c004748437a69494f426173655f57726974654275666665725f63 *6c6f73757265004748437a694c6973745f636f6e6361745f696e666f004748437a6953686f775f *73686f774c6973745f656e7472790053797374656d7a694469726563746f72795f72656d6f7665 *4469726563746f72795f696e666f005f5f737467696e69745f4748437a6952656164004748437a *69496e745f7a64776469764d6f64325f696e666f00446973747269627574696f6e7a6950726550 *726f636573737a69556e6c69745f706c61696e5f696e666f004748437a695265616c5f7a647766 *315f636c6f7375726500756e626c6f636b557365725369676e616c73004748437a69526561645f *7a64737a64646d726561647350726563345f636c6f7375726500446973747269627574696f6e7a *6950726550726f636573737a69556e6c69745f5072655f7374617469635f656e74727900446973 *747269627574696f6e7a6953657475705f636d644f7074696f6e735f636c6f7375726500474843 *7a69426173655f7a64646d6d696e5f636c6f73757265007374675f63746f695f7265745f44315f *696e666f0053797374656d7a694469726563746f72795f69734469726563746f72795f656e7472 *79004748437a6953686f775f6135375f636c6f73757265005f5f737467696e69745f5379737465 *6d7a69506f7369787a695369676e616c7300446973747269627574696f6e7a6950617273655574 *696c735f73696d706c654669656c645f73727400446973747269627574696f6e7a695365747570 *5f636f6e6669675072656669785f696e666f00446973747269627574696f6e7a6953657475705f *7061727365436f7079417267735f656e747279004748437a69494f426173655f7a647773686f77 *7350726563345f656e747279004748437a6948616e646c655f64454641554c547a754255464645 *527a7553495a5a455f696e666f004748437a69494f5f7a644c723966786c766c31315f656e7472 *7900546578747a69526561647a694c65785f7a644c72357a7a446c766c39355f636c6f73757265 *00446174617a694d617962655f66726f6d4d617962655f636c6f73757265004469737472696275 *74696f6e7a6953657475705f436f6e666967466c6167735f636f6e5f656e747279004748437a69 *48616e646c655f6d6b53746448616e646c655f636c6f737572650053797374656d7a6944697265 *63746f72795f6c766c32345f636c6f73757265004748437a694c6973745f74616b655f656e7472 *79007374675f73656c5f375f7570645f696e666f00446973747269627574696f6e7a695061636b *6167654465736372697074696f6e5f6275696c64496e666f5f636c6f7375726500546578747a69 *506172736572436f6d62696e61746f72737a6952656164507265635f737465705f636c6f737572 *65004748437a695265616c5f7a637a635f656e747279004748437a694572725f6c766c375f696e *666f0073746743616c6c6f63427974657300546578747a695072657474795072696e747a694875 *67686573504a5f7a6477736570315f696e666f00446174617a694d617962655f66726f6d4a7573 *745f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a6467746f44657065 *6e64656e63795f656e74727900446973747269627574696f6e7a6956657273696f6e5f70617273 *6556657273696f6e52616e67655f636c6f7375726500446973747269627574696f6e7a69536574 *75705f636f6e66696743707068735f696e666f004748437a69494f426173655f496e7465727275 *707465645f7374617469635f656e747279004748437a69494f5f7a644c723967707a64776c617a *7a7952656164486176654275666665725f696e666f00446174617a695479706561626c655f7462 *6c5f656e747279004748437a695265616c5f746f526174696f6e616c315f696e666f004748437a *69426173655f5a437a745a435f7374617469635f696e666f00446973747269627574696f6e7a69 *436f6d7061747a6946696c65506174685f7061727365536561726368506174685f696e666f0047 *48437a69494f5f6c766c5f636c6f7375726500446973747269627574696f6e7a695061636b6167 *655f7a646766726f6d5061636b6167654964656e7469666965725f696e666f004748437a69456e *756d5f656674496e745f696e666f004748437a69576f72645f7a657a65345f636c6f7375726500 *4748437a69426173655f636f6d70617265496e745f636c6f73757265004748437a694c6973745f *706f6c797a757265765f656e74727900446174617a694d617962655f69734e6f7468696e675f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c723575786c766c31365f696e66 *6f004748437a6953686f775f6137305f656e747279004748437a69494f5f7a644c723966666c76 *6c325f656e74727900546578747a69526561647a694c65785f7a644c723576527831325f636c6f *73757265004748437a69494f426173655f5065726d697373696f6e44656e6965645f7374617469 *635f656e74727900696e74657272757074537467527473007374675f6765576f72643634004461 *74617a694d617962655f7a644c7252426c766c5f636c6f73757265004748437a69456e756d5f65 *6e756d46726f6d325f636c6f73757265004748437a69426173655f7a657a655f636c6f73757265 *00446973747269627574696f6e7a6950617273655574696c735f4e6f50617273655f7374617469 *635f656e747279004748437a6948616e646c655f7769746848616e646c657a757a715f696e666f *00446973747269627574696f6e7a6956657273696f6e5f7a6467746f446570656e64656e63795f *696e666f007374675f6571576f72643634004748437a694e756d5f6469764d6f64496e74656765 *725f696e666f007274735f6172676300446174617a694d617962655f4e6f7468696e675f636c6f *7375726500736967656d7074797365744040474c4942435f322e30004748437a694e756d5f7a64 *4c7232787a7a6c766c345f656e747279004748437a6953686f775f7a644c72315a5a4e6c766c38 *5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c *36385f696e666f00546578747a69526561647a694c65785f7a644c723577546135375f696e666f *00446973747269627574696f6e7a6953696d706c657a695574696c735f72617753797374656d50 *6174685f696e666f004748437a69466c6f61745f447a685f636f6e5f656e74727900546578747a *695072657474795072696e747a69487567686573504a5f7a644c723661656173797a7564697370 *6c61795f696e666f004748437a695265616c5f71756f74315f636c6f7375726500546578747a69 *526561647a694c65785f7a644c72357a7a646c766c38365f636c6f73757265004748437a695374 *6f7261626c655f77726974655074724f66665074725f656e74727900446973747269627574696f *6e7a69457874656e73696f6e5f4e616d65644669656c6450756e735f636c6f7375726500474843 *7a69494f5f7a644c723966646c766c315f656e74727900546578747a69526561647a694c65785f *7a644c723579586c766c38345f636c6f737572650053797374656d7a69506f7369787a69496e74 *65726e616c735f696f657a75756e6b6e6f776e66696c65747970655f636c6f7375726500474843 *7a69546f7048616e646c65725f7a644c723337736c766c31345f636c6f73757265004469737472 *69627574696f6e7a6953657475705f7a6467746f466c61675f696e666f004748437a69546f7048 *616e646c65725f7a644c723337636c766c365f696e666f004748437a6953686f775f7a64665368 *6f775a32545f656e747279004748437a6953686f775f6133395f636c6f73757265005f5f737467 *696e69745f446973747269627574696f6e7a69436f6d7061747a6946696c655061746800474843 *7a6953686f775f6135385f696e666f00446174617a695475706c655f5a34545f636f6e5f696e66 *6f004748437a694c6973745f6e756c6c5f656e74727900546578747a69526561647a694c65785f *7a644c723574426132365f636c6f73757265004748437a695265616c5f7a644c723531526c766c *335f696e666f004748437a69456e756d5f676f7a75646e7a75696e747a756c6973745f696e666f *00446973747269627574696f6e7a69457874656e73696f6e5f7a6467746f457874656e73696f6e *5f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f73 *706c697446696c654578745f737274005f5f737467696e69745f53797374656d7a69494f7a6945 *72726f725f00546578747a69526561647a694c65785f7a644c723577586c766c34325f696e666f *004748437a694c6973745f7a644c723272716c766c31355f696e666f004748437a69494f426173 *655f5061747465726e4d617463684661696c5f636f6e5f656e747279007374675f73656c5f3130 *5f6e6f7570645f696e666f00546578747a69526561647a694c65785f7a644c723577466c766c33 *395f696e666f007374675f776f7264546f576f72643634004748437a695265616c5f7a64777a64 *737265647563655f696e666f004748437a69494f426173655f494f457863657074696f6e5f7374 *617469635f696e666f00436f6e74726f6c7a69457863657074696f6e5f627261636b65745f636c *6f7375726500546578747a69526561647a694c65785f7a644c723578726c766c34375f636c6f73 *757265004748437a69546f7048616e646c65725f7a644c723337776c766c31365f656e74727900 *446973747269627574696f6e7a6953657475705f436d645f7374617469635f656e747279004748 *437a695265616c5f6c766c365f656e747279007374675f67635f7574004748437a69526561645f *706172656e5f636c6f737572650053797374656d7a694469726563746f72795f646f657346696c *6545786973745f656e747279007374675f696e746572705f636f6e737472315f656e7472790047 *48437a694e756d5f7a644c723278766c766c325f696e666f004748437a694c6973745f7a644c72 *3271456c766c5f696e666f004748437a69494f426173655f6c766c32345f696e666f004748437a *695265616c5f7a647761315f656e74727900546578747a695072657474795072696e747a694875 *67686573504a5f7a644c72363863616e747a756661696c5f696e666f004748437a69456e756d5f *656664496e745f636c6f7375726500446174617a695479706561626c655f7a657a65325f696e66 *6f00546578747a69526561647a694c65785f7a644c72357a7a6a7833365f636c6f737572650044 *6973747269627574696f6e7a6950617273655574696c735f73686f77546573746564576974685f *656e74727900446174617a695479706561626c655f4b657950725f636f6e5f696e666f00474843 *7a695265616c5f6469764d6f64315f696e666f004748437a694c6973745f6c766c31325f636c6f *73757265004748437a69576f72645f7a644c723943386c766c31325f656e747279004469737472 *69627574696f6e7a6956657273696f6e5f556e696f6e56657273696f6e52616e6765735f737461 *7469635f696e666f00446174617a69486173685461626c655f7a64776c676f5f696e666f006730 *00446973747269627574696f6e7a6950617273655574696c735f6f7074734669656c645f636c6f *73757265004748437a694e756d5f656e756d44656c7461496e746567657246425f696e666f0074 *696d6573496e74656765727a685f66617374004748437a69576f72645f66726f6d496e74656765 *72335f636c6f73757265004748437a69494f426173655f4173796e63457863657074696f6e5f73 *74617469635f696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e *6c69745f426c616e6b5f7374617469635f696e666f00446973747269627574696f6e7a6953696d *706c657a695574696c735f6d6b4c69624e616d655f73727400616c6c6f63537472486173685461 *626c65004748437a695265616c5f6131335f636c6f7375726500446973747269627574696f6e7a *69457874656e73696f6e5f466c657869626c65436f6e74657874735f7374617469635f656e7472 *7900446973747269627574696f6e7a6956657273696f6e5f7a64664f726456657273696f6e5f63 *6c6f73757265004748437a69494f426173655f5265736f75726365427573795f7374617469635f *696e666f004748437a694e756d5f616273315f656e74727900446973747269627574696f6e7a69 *436f6d7061747a6952656164505f736b69704d616e79315f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c723578746136335f696e666f00446973747269627574696f6e7a69 *53657475705f7a6467746f466c61675f656e74727900446973747269627574696f6e7a69506172 *73655574696c735f7061727365446570656e64656e63795f656e747279004748437a6942617365 *5f5a4d5a4e5f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061747a *6952656164505f7365704279315f696e666f004748437a6953686f775f7a646653686f775a3254 *5f636c6f7375726500546578747a69526561647a694c65785f7a644c723575566c766c32315f65 *6e747279004748437a694c6973745f7a64776c656e5f636c6f73757265004748437a69494f4261 *73655f7a737a65355f696e666f005f5f737467696e69745f466f726569676e7a69507472004748 *437a69494f426173655f7a647773686f777350726563355f656e74727900446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f4275696c64496e666f5f636f6e5f69 *6e666f004748437a6953686f775f7a644c72315a5a6461325f696e666f004748437a69494f4261 *73655f446561646c6f636b5f7374617469635f696e666f004748437a69496e745f6c766c32385f *636c6f7375726500446973747269627574696f6e7a6956657273696f6e5f7a646766726f6d5665 *7273696f6e5f636c6f7375726500546578747a695072657474795072696e747a69487567686573 *504a5f4e6f446f635f7374617469635f696e666f004748437a69526561645f6c766c31335f636c *6f73757265004748437a69466c6f61745f447a685f636f6e5f696e666f00446973747269627574 *696f6e7a69436f6d7061747a6952656164505f6f7074696f6e616c5f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f7a6c7a707a705f696e666f004469737472 *69627574696f6e7a6953696d706c657a695574696c735f64656661756c745061636b6167654465 *73635f656e747279004748437a69494f426173655f4e6f6e5465726d696e6174696f6e5f636c6f *73757265004748437a69426173655f7a64646d7a677a675f656e74727900446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f7a646766726f6d5061636b61676544 *65736372697074696f6e5f656e747279004748437a69426173655f6d61705f636c6f7375726500 *4748437a69494f5f7a6477706f6c797a75627566526561645f656e747279004469737472696275 *74696f6e7a6950617273655574696c735f70617273654c6963656e7365515f737274007374675f *61705f705f696e666f00446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f73657475704d6573736167655f696e666f004748437a69494f426173655f6861427566 *6665724d6f64655f656e747279004748437a69426173655f6e6567617465496e745f656e747279 *00546578747a69526561647a694c65785f7a644c7235734e6c766c335f656e7472790044697374 *7269627574696f6e7a69436f6d7061747a6946696c65506174685f70617468506172656e74735f *696e666f00616c6c6f6361746550696e6e656400446973747269627574696f6e7a695061727365 *5574696c735f70617273654c6963656e7365515f656e74727900657869744040474c4942435f32 *2e30004748437a69494f426173655f416c72656164794578697374735f7374617469635f696e66 *6f004748437a69494f426173655f4275666665725f7374617469635f656e747279004748437a69 *4572725f756e646566696e65645f656e74727900446973747269627574696f6e7a695665727369 *6f6e5f446570656e64656e63795f696e666f004748437a69576f72645f746f496e746567657232 *5f636c6f73757265004748437a69494f426173655f556e736174697366696564436f6e73747261 *696e74735f7374617469635f656e74727900446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f7a6467746f4275696c64496e666f5f636c6f737572650044697374 *7269627574696f6e7a695061636b6167654465736372697074696f6e5f73746162696c6974795f *656e747279004748437a69496e745f7a64646d6d61785f636c6f73757265004748437a69456e75 *6d5f656e756d46726f6d325f696e666f004748437a694e756d5f7a657a655f696e666f00474843 *7a694c6973745f756e7a7a6970335f636c6f73757265004748437a6948616e646c655f7a647761 *75676d656e74494f4572726f725f696e666f004748437a69494f5f685075745374725f696e666f *004748437a69426173655f7a64646d6d61785f656e7472790053797374656d7a69446972656374 *6f72795f7a644c723962437a64776c6f6f705f636c6f73757265004748437a69466c6f61745f46 *7a685f636f6e5f696e666f004748437a69494f5f7a647777726974654c696e65735f656e747279 *00436f6e74726f6c7a694d6f6e61645f6d61704d5f696e666f00446973747269627574696f6e7a *69436f6d7061747a6952656164505f6d616e7954696c6c5f73727400446973747269627574696f *6e7a6956657273696f6e5f56657273696f6e5f7374617469635f656e74727900546578747a6952 *6561647a694c65785f7a644c723576726134325f636c6f73757265004748437a69494f42617365 *5f4572726f7243616c6c5f7374617469635f696e666f004748437a69556e69636f64655f746f4c *6f7765725f656e74727900436f6e74726f6c7a694d6f6e61645f666f6c644d5f696e666f005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c723467537a647761626f *76654e6573745f736c6f77004748437a6953686f775f7a64737a64646d73686f774c697374335f *696e666f004748437a69496e745f6e6567617465325f696e666f004748437a695265616c5f6139 *5f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a754e4f *4e424c4f434b5f696e666f004748437a69496e745f7a70325f636c6f7375726500546578747a69 *5072657474795072696e747a69487567686573504a5f7a644c7234674b6e696c42657369646531 *5f696e666f004748437a694172725f535441727261795f636f6e5f696e666f00546578747a6950 *72657474795072696e747a69487567686573504a5f7a644c7234676f6c766c31365f696e666f00 *4748437a69494f5f7a644c723966766c766c31305f636c6f73757265004748437a69496e745f7a *64777a64646d656e756d46726f6d546f5f656e747279004748437a69526561645f7a64646d7265 *616473507265635f656e74727900446973747269627574696f6e7a6953657475705f7061727365 *436f6e666967757265417267735f73727400546578747a695072657474795072696e747a694875 *67686573504a5f7a64776d6b4e6573745f656e747279004748437a69494f426173655f52656164 *577269746548616e646c655f7374617469635f696e666f004748437a694c6973745f66696c7465 *725f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c *6c35325f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7365744e *6f6e426c6f636b696e6746445f696e666f00546578747a69506172736572436f6d62696e61746f *72737a6952656164505f4c6f6f6b5f7374617469635f656e7472790053797374656d7a69506f73 *69787a69496e7465726e616c735f6c766c31345f656e747279004748437a695265616c5f6d6f64 *315f636c6f73757265004748437a69576f72645f6c697431305f636c6f7375726500697377616c *7068614040474c4942435f322e30004748437a6953686f775f6135365f636c6f73757265004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f6f7074696f6e616c5f636c6f73 *7572650053797374656d7a694469726563746f72795f6c766c335f656e74727900446973747269 *627574696f6e7a6953657475705f636f6e6669674873633268735f696e666f0053797374656d7a *694469726563746f72795f7a644c723962437a64776c6f6f705f696e666f004748437a69426173 *655f7a737a65335f636c6f7375726500446973747269627574696f6e7a6953657475705f496e73 *74616c6c436d645f696e666f007374675f6170706c795f696e746572705f696e666f0053797374 *656d7a69456e7669726f6e6d656e745f676f5f636c6f73757265005f5f737467696e69745f4469 *73747269627574696f6e7a69436f6d7061747a6952617753797374656d5f004469737472696275 *74696f6e7a694765744f70745f4f7074696f6e5f636c6f7375726500446973747269627574696f *6e7a6953657475705f636d64416374696f6e5f636c6f7375726500446174617a694d617962655f *66726f6d4d617962655f696e666f004748437a6948616e646c655f6f70656e42696e6172794669 *6c655f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c33375f636c6f73757265004748437a6953686f775f6134385f656e747279004748437a69 *4e756d5f7a64646d6d696e5f636c6f73757265005f5f737467696e69745f4748437a69576f7264 *00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f776974684c *69625f696e666f00446973747269627574696f6e7a69436f6d7061747a694469726563746f7279 *5f6372656174654469726563746f727949664d697373696e675f636c6f7375726500546578747a *69506172736572436f6d62696e61746f72737a6952656164505f7a644c7231746d6c766c345f69 *6e666f004748437a69494f426173655f426c6f636b427566666572696e675f7374617469635f69 *6e666f00546578747a69526561647a694c65785f7a644c7235776c7831375f636c6f7375726500 *4748437a69494f5f7a644c7239664a7a6477726561644368756e6b5f656e747279004748437a69 *4172725f7a644c723575446c766c365f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723578547833335f636c6f73757265004748437a69426173655f46616c73655f737461 *7469635f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f73 *65704279315f73727400546578747a695072657474795072696e747a69487567686573504a5f76 *6361745f636c6f73757265004748437a694e756d5f7a675f656e7472790077616974526561647a *685f6661737400446973747269627574696f6e7a6953657475705f556e7265676973746572436d *645f7374617469635f696e666f00446973747269627574696f6e7a6953657475705f636f6d7069 *6c657256657273696f6e5f636c6f7375726500446973747269627574696f6e7a6956657273696f *6e5f77697468696e52616e67655f737274004748437a69494f426173655f494f4572726f725f73 *74617469635f696e666f00446973747269627574696f6e7a695061636b6167655f7a6466526561 *645061636b6167654964656e7469666965725f656e74727900446973747269627574696f6e7a69 *53657475705f4e6863466c61675f7374617469635f696e666f007374675f73656c5f375f6e6f75 *70645f696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e6c6974 *5f426c616e6b5f636c6f7375726500696e69745374617473004748437a694e756d5f696e743249 *6e74656765725f636c6f737572650053797374656d7a69506f7369787a6946696c65735f6c766c *375f656e74727900446973747269627574696f6e7a6956657273696f6e5f56657273696f6e5f65 *6e747279004748437a694e756d5f656e756d46726f6d546f5f636c6f7375726500546578747a69 *526561647a694c65785f7a644c723541746c766c3132315f636c6f737572650044697374726962 *7574696f6e7a6950617273655574696c735f7a64664d6f6e61645061727365526573756c745f65 *6e7472790071756f74496e74656765727a685f66617374005f5f737467696e69745f546578747a *6953686f775f004748437a6948616e646c655f77616e745772697461626c6548616e646c655f69 *6e666f00446973747269627574696f6e7a6950617273655574696c735f7a646766726f6d504572 *726f725f636c6f73757265004748437a69494f5f685075745374725f636c6f7375726500474843 *7a694c6973745f7a64777370616e5f656e747279007374675f73656c5f385f7570645f656e7472 *7900636d70496e7465676572496e747a685f6661737400446973747269627574696f6e7a694578 *74656e73696f6e5f657874656e73696f6e73546f474843466c61675f696e666f00446973747269 *627574696f6e7a69436f6d7061747a6952656164505f736b69704d616e795f656e747279004748 *437a69494f426173655f6c766c33355f696e666f004748437a69576f72645f5731367a685f7374 *617469635f656e747279004748437a69494f5f7a6477684765744275665f656e74727900537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36385f656e74727900 *53797374656d7a69506f7369787a69496e7465726e616c735f637a756f70656e6469725f656e74 *7279005f5f737467696e69745f53797374656d7a69506f7369787a694469726563746f72795f00 *4748437a69494f426173655f6661696c494f5f636c6f73757265004748437a69426173655f5a43 *444f72645f636f6e5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f *7a64776363616c6c36375f636c6f7375726500446973747269627574696f6e7a69436f6d706174 *7a6952656164505f6f7074696f6e5f656e7472790053797374656d7a69506f7369787a69496e74 *65726e616c735f636f6e73747a75667a75736574666c5f636c6f73757265004748437a6948616e *646c655f64454641554c547a754255464645527a7553495a5a455f636c6f73757265007374675f *73656c5f365f7570645f656e747279004748437a6948616e646c655f6175676d656e74494f4572 *726f725f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a695265616450 *5f7a6457525f636c6f7375726500446973747269627574696f6e7a6953657475705f566572626f *73655f7374617469635f696e666f00446973747269627574696f6e7a6953657475705f636f6d70 *696c657256657273696f6e5f696e666f007374675f63746f695f7265745f5231756e70745f696e *666f00546578747a69526561647a694c65785f7a644c723578446c766c34395f696e666f004748 *437a69496e745f7a644c723945436c766c31355f656e747279004748437a69494f5f6847657443 *6f6e74656e74735f656e74727900446973747269627574696f6e7a6953657475705f5769746848 *63506b675f636f6e5f696e666f004748437a69494f426173655f6c766c32385f636c6f73757265 *00546578747a69526561647a694c65785f7a644c723577667831365f636c6f7375726500546578 *747a695072657474795072696e747a69487567686573504a5f7a644c72346865676f345f636c6f *7375726500546578747a69526561647a694c65785f7a644c723575466133345f656e7472790047 *48437a6953686f775f73686f777350726563345f636c6f7375726500446973747269627574696f *6e7a6953657475705f636d6448656c705f696e666f007374675f494e445f375f696e666f00616c *6c6f6347726f757000446973747269627574696f6e7a6953657475705f7a646766726f6d436f6d *70696c65725f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f *73686f7746726565546578745f737274004748437a69494f426173655f46696c6548616e646c65 *5f7374617469635f656e747279004748437a6948616e646c655f696f657a7566696e616c697a7a *656448616e646c655f696e666f004748437a69494f426173655f446561646c6f636b5f73746174 *69635f656e747279004748437a69426173655f7a695f696e666f004748437a69496e745f493332 *7a685f636f6e5f696e666f00616c6c6f635f626c6f636b735f6c696d004748437a69456e756d5f *65666474496e7446425f736c6f7700546578747a695072657474795072696e747a694875676865 *73504a5f7a644c7234674d6f6e654c696e6572315f656e7472790053797374656d7a6944697265 *63746f72795f6765744469726563746f7279436f6e74656e74735f696e666f004748437a694261 *73655f7a64664571426f6f6c5f636c6f73757265007274735f676574496e7438004748437a6949 *6e745f7a657a65335f696e666f00446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f656d7074794275696c64496e666f5f636c6f7375726500466f726569676e7a *69437a694572726f725f7a64776363616c6c325f636c6f7375726500446174617a694d61796265 *5f7a646645714d617962655f696e666f0053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c32365f696e666f004748437a6953686f775f7a647773686f77536967 *6e6564496e745f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f616c *6c6f636142797465735f656e74727900446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f6873536f757263654469725f696e666f004748437a69436f6e635f7468 *7265616457616974526561645f696e666f004748437a69494f426173655f61355f656e74727900 *546578747a69526561647a694c65785f7a644c7268416c657849645f656e747279004748437a69 *48616e646c655f6c766c31365f636c6f7375726500446973747269627574696f6e7a695061636b *6167654465736372697074696f6e5f6c644f7074696f6e735f636c6f7375726500446973747269 *627574696f6e7a6953657475705f436f6e666967466c6167735f656e747279004748437a69494f *426173655f6c766c33365f636c6f7375726500546578747a69526561647a694c65785f7a644c72 *35734e6c766c335f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f *7a7552444f4e4c595f636c6f7375726500446973747269627574696f6e7a695061636b61676544 *65736372697074696f6e5f45786563757461626c655f696e666f007374674d616c6c6f63427974 *65730062617266005f5f737467696e69745f4748437a69535400446973747269627574696f6e7a *6950617273655574696c735f6c6973744669656c645f656e747279004748437a69494f42617365 *5f6c766c32375f656e747279004748437a694572725f6572726f725f656e747279004469737472 *69627574696f6e7a695061636b6167654465736372697074696f6e5f6c69624d6f64756c65735f *737274004748437a694c6973745f6e756c6c5f636c6f7375726500546578747a69526561647a69 *4c65785f7a644c723575356c766c31335f656e7472790053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c32345f696e666f004748437a694c6973745f72657065 *61745f656e747279004748437a69526561645f7265616450726563315f656e7472790044697374 *7269627574696f6e7a6953657475705f4c6966745f7374617469635f656e747279005f5f737467 *696e69745f4d61696e005f656461746100546578747a69526561647a694c65785f7a644c723575 *7a7a6c766c31375f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f *7a7552444f4e4c595f696e666f004748437a69526561645f7a64646d7265616473507265635f63 *6c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c *6c32365f636c6f7375726500546578747a69526561647a694c65785f7a644c7235765a5a6c766c *33325f656e747279005f5f693638362e6765745f70635f7468756e6b2e6278004748437a694861 *6e646c655f6765744275666665725f636c6f73757265004748437a695765616b5f72756e46696e *616c697a7a657242617463685f656e74727900446973747269627574696f6e7a694765744f7074 *5f7573616765496e666f5f696e666f004748437a6953686f775f6136325f636c6f737572650047 *48437a6948616e646c655f6f70656e46696c655f696e666f00446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f6465736372697074696f6e5f696e666f00737467 *5f61705f707070707070705f726574004d616c6c6f634661696c486f6f6b0053797374656d7a69 *494f5f7075745374725f696e666f00446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f4c6962726172795f7374617469635f696e666f004748437a695265616c5f *615f636c6f7375726500466f726569676e7a69437a694572726f725f6c766c5f636c6f73757265 *005f474c4f42414c5f4f46465345545f5441424c455f00667265654040474c4942435f322e3000 *446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f706172736544 *65736372697074696f6e5f636c6f7375726500446973747269627574696f6e7a6953657475705f *50726f6772616d6174696361436d645f636c6f73757265004748437a6953686f775f6131335f63 *6c6f73757265004748437a69494f5f696c6c6567616c42756666657253697a7a655f636c6f7375 *7265004748437a69456e756d5f746f456e756d345f656e747279004748437a69576f72645f7369 *676e756d335f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a69 *52656164505f706661696c5f656e747279004748437a69494f426173655f6131395f656e747279 *005f656e6400546578747a69526561647a694c65785f6c766c315f636c6f737572650061746f6d *69634d6f646966794d75745661727a685f66617374007374675265616c6c6f6342797465730047 *48437a69494f426173655f7a6457494f5f656e74727900446973747269627574696f6e7a695061 *7273655574696c735f7a6467746f5061727365526573756c745f696e666f004469737472696275 *74696f6e7a69436f6d7061747a6952656164505f7a6c7a707a705f737274007374675f494e544c *494b455f636c6f737572650053797374656d7a69436d645f72617753797374656d5f636c6f7375 *726500446973747269627574696f6e7a694765744f70745f4f70744172675f636f6e5f696e666f *004748437a69494f426173655f45786974537563636573735f7374617469635f656e7472790043 *6f6e74726f6c7a694d6f6e61645f73657175656e63657a755f636c6f7375726500446973747269 *627574696f6e7a6953657475705f636f6d70696c6572506174685f636c6f73757265004748437a *6953686f775f7a646653686f775a4d5a4e5f636c6f73757265007374675f63617463685f667261 *6d655f315f72657400446973747269627574696f6e7a6953657475705f48656c69756d5f737461 *7469635f696e666f00446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f73656172636850617468536570617261746f725f636c6f73757265004748437a69494f426173 *655f696f4572726f725f636c6f7375726500446973747269627574696f6e7a695061636b616765 *5f73686f775061636b61676549645f7372740053797374656d7a69506f7369787a69496e746572 *6e616c735f7a64776363616c6c32335f636c6f7375726500446973747269627574696f6e7a6950 *61636b6167654465736372697074696f6e5f6465736372697074696f6e5f636c6f737572650073 *74675f73656c5f31345f6e6f7570645f656e747279004748437a694e756d5f646e7a756c697374 *5f656e74727900546578747a69526561647a694c65785f50756e635f7374617469635f696e666f *00616c6c6f634e757273657269657300446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f7a646766726f6d4c6962726172795f696e666f00546578747a69526561 *647a694c65785f7a644c7235777a7a6c766c33385f656e74727900726576657274434146730054 *6578747a69526561647a694c65785f7a644c723576336133385f636c6f73757265005379737465 *6d7a69494f5f777269746546696c655f696e666f004748437a69496e745f7a74325f636c6f7375 *7265007274735f6d6b576f726438007374675f73656c5f365f6e6f7570645f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f6c766c315f636c6f73757265004748437a *69494f5f7a644c7239655a5a615f656e747279004748437a69494f426173655f7a657a65385f65 *6e747279004748437a6948616e646c655f7a644c724a626f75747075747a75666c6167735f656e *747279004748437a6948616e646c655f7a644c726330427a647768616e646c6546696e616c697a *7a65725f636c6f73757265005f5f737467696e69745f466f726569676e7a6953746f7261626c65 *5f004748437a69526561645f6c766c395f636c6f737572650070726f675f62656c636800474843 *7a6948616e646c655f6c766c35395f636c6f7375726500446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f5061636b6167654465736372697074696f6e5f656e74 *727900546578747a695072657474795072696e747a69487567686573504a5f7a644c723467756c *766c31395f656e747279004748437a6953686f775f73686f7753706163655f656e747279004469 *73747269627574696f6e7a6953696d706c657a695574696c735f636f707946696c65566572626f *73655f636c6f7375726500446973747269627574696f6e7a694765744f70745f5065726d757465 *5f7374617469635f656e74727900446973747269627574696f6e7a695061636b61676544657363 *72697074696f6e5f7061727365486f6f6b65644275696c64496e666f5f656e747279004748437a *69494f426173655f7a64664d6f6e6164494f5f636c6f73757265004748437a695265616c5f6131 *335f656e74727900546578747a69526561647a694c65785f7a644c72357a7a7264735f656e7472 *79004748437a69546f7048616e646c65725f7a644c723337696c766c395f696e666f0044697374 *7269627574696f6e7a694765744f70745f7a646766726f6d41726744657363725f656e74727900 *5f5f737467696e69745f4748437a69507472004748437a694e756d5f7a6c7a655f636c6f737572 *65004748437a69576f72645f616273335f636c6f73757265004748437a69426173655f756e7061 *636b417070656e6443537472696e677a685f636c6f7375726500446973747269627574696f6e7a *69457874656e73696f6e5f4d756c7469506172616d54797065436c61737365735f737461746963 *5f696e666f00546578747a69526561647a694c65785f7a644c723576316c766c32325f656e7472 *790053797374656d7a69506f7369787a69496e7465726e616c735f637a75726d6469725f656e74 *7279004748437a69426173655f6e6f745f656e74727900446973747269627574696f6e7a695072 *6550726f636573737a69556e6c69745f5072655f7374617469635f696e666f0044697374726962 *7574696f6e7a6953657475705f4c6966745f636f6e5f696e666f007574696d654040474c494243 *5f322e30006765746377644040474c4942435f322e30004748437a69494f426173655f68614f74 *686572536964655f636c6f7375726500446973747269627574696f6e7a695061636b6167654465 *736372697074696f6e5f6c69624275696c64496e666f5f656e747279004748437a69494f426173 *655f6c766c32315f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4350 *505f636c6f7375726500446973747269627574696f6e7a6953657475705f436d645f636c6f7375 *7265004748437a69496e745f7a64646d656e756d46726f6d5468656e546f5f636c6f7375726500 *446973747269627574696f6e7a695061636b6167655f7a6466526561645061636b616765496465 *6e7469666965725f696e666f004748437a695265616c5f7a647761325f636c6f73757265005f5f *737467696e69745f4748437a694e756d5f006e6578745f70656e64696e675f68616e646c657200 *7374675f7374726c656e004748437a69576f72645f7a6477746f496e7465676572315f636c6f73 *75726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *67746f4c6962726172795f696e666f00546578747a69526561647a694c65785f7a644c7235754a *6c766c31385f656e747279004748437a69526561645f6c766c32355f696e666f004748437a6953 *686f775f6134345f636c6f73757265004748437a695265616c5f73686f7773507265635f636c6f *73757265005f5f737467696e69745f4748437a69494f4261736500546578747a69526561647a69 *4c65785f7a644c723577316134385f656e747279006d7954687265616449647a685f6661737400 *4748437a6953686f775f7a64737a64646d73686f77325f636c6f73757265004748437a69496e74 *5f7a64646d7a675f636c6f73757265007374675f494e445f305f696e666f007374675f63617463 *685f6672616d655f335f726574004748437a69496e745f7a64646d6d61785f696e666f00474843 *7a6953686f775f73686f7753706163655f636c6f73757265004748437a6953686f775f6134325f *636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c *7234686b7a6477666974735f636c6f73757265004748437a695265616c5f7a64736576656e5f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467776c766c32305f696e666f00446973747269627574696f6e7a6953657475705f5265676973 *746572436d645f636c6f73757265007374675f67635f64315f696e666f0053797374656d7a6950 *6f7369787a69496e7465726e616c735f637a75756e6c696e6b5f696e666f004469737472696275 *74696f6e7a6950617273655574696c735f5374616e7a7a614669656c645f656e74727900446174 *617a695479706561626c655f547970655265705f7374617469635f656e74727900697361747479 *4040474c4942435f322e30004748437a6953686f775f7a644c72315a5a4c6c766c375f656e7472 *7900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6c696365 *6e73655f656e74727900446973747269627574696f6e7a6950617273655574696c735f70617273 *654c69624e616d65515f636c6f7375726500446973747269627574696f6e7a6953657475705f70 *617273655344697374417267735f656e747279004748437a694c6973745f6c6f6f6b75705f636c *6f7375726500446973747269627574696f6e7a694765744f70745f4f70744572725f636f6e5f65 *6e74727900446973747269627574696f6e7a69436f6d7061747a6952656164505f72656164507a *75746f7a75535f696e666f00446973747269627574696f6e7a6953657475705f636f6e66696741 *6c65785f636c6f7375726500446174617a69486173685461626c655f6e65775f636c6f73757265 *00446973747269627574696f6e7a6950617273655574696c735f73686f77446570656e64656e63 *795f636c6f73757265004748437a69496e745f71756f7452656d325f696e666f00446973747269 *627574696f6e7a6953657475705f7a646766726f6d436d645f656e74727900546578747a695265 *61647a694c65785f7a644c723575707a6477667261635f656e747279004748437a69546f704861 *6e646c65725f7a644c723337756c766c31355f636c6f73757265004748437a6953686f775f7368 *6f77506172656e5f696e666f004748437a694c6973745f7a64776c656e5f696e666f0054657874 *7a69526561647a694c65785f7a644c7235786c6c766c34365f656e747279004748437a694e756d *5f7a6c7a655f696e666f004748437a694572725f6c766c395f656e747279007374675f61705f70 *5f72657400446174617a69486173685461626c655f68617368537472696e675f636c6f73757265 *004748437a69494f5f684765744275665f636c6f73757265006d656d7365744040474c4942435f *322e30004748437a69426173655f496e725f636f6e5f656e747279004748437a69426173655f6f *74686572776973655f636c6f73757265007374675f73656c5f31355f7570645f696e666f004469 *73747269627574696f6e7a6953657475705f706172736550726f6772616d617469636141726773 *5f696e666f004748437a6948616e646c655f6175676d656e74494f4572726f725f696e666f0044 *6973747269627574696f6e7a69457874656e73696f6e5f53636f70656454797065566172696162 *6c65735f7374617469635f696e666f00736d616c6c5f616c6c6f635f6c697374004748437a6948 *616e646c655f77616e745265616461626c6548616e646c655f636c6f7375726500546578747a69 *506172736572436f6d62696e61746f72737a6952656164507265635f737465705f696e666f0047 *48437a6948616e646c655f6c766c32305f656e74727900446973747269627574696f6e7a695061 *7273655574696c735f706172736556657273696f6e52616e6765515f696e666f00446973747269 *627574696f6e7a6956657273696f6e5f5468697356657273696f6e5f7374617469635f656e7472 *79005f5f737467696e69745f4748437a69556e69636f6465005f5f737467696e69745f53797374 *656d7a69506f7369787a6946696c65735f00446973747269627574696f6e7a695061636b616765 *4465736372697074696f6e5f636f707972696768745f656e747279005f657869744040474c4942 *435f322e3000546578747a695072657474795072696e747a69487567686573504a5f7a644c7234 *68307a647766696c6c4e425f696e666f004748437a69426173655f7a64737a64646d6d61785f69 *6e666f00446174617a69486173685461626c655f7a64776c6f6f6b75705f656e74727900546578 *747a69506172736572436f6d62696e61746f72737a6952656164507265635f7a677a675f636c6f *7375726500446973747269627574696f6e7a6956657273696f6e5f56657273696f6e5f696e666f *004748437a69456e756d5f656664496e745f656e747279004748437a6953686f775f6135345f65 *6e74727900546578747a695072657474795072696e747a69487567686573504a5f667365705f65 *6e74727900546578747a69526561647a694c65785f7a644c7235784a6c766c35305f656e747279 *00446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6a6f696e46696c *654578745f73727400446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f706b6755726c5f696e666f00546578747a69526561647a694c65785f7a644c7235753166 *726f6d496e74656772616c5f656e747279004748437a69526561645f706172656e735f656e7472 *7900546578747a69526561647a694c65785f7a644c72357a7a706c766c38395f656e7472790047 *48437a6948616e646c655f696f657a756e6f745772697461626c655f636c6f7375726500446973 *747269627574696f6e7a6953657475705f576974684863506b675f696e666f004748437a69494f *426173655f5265616448616e646c655f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723576646c766c32345f636c6f7375726500446973747269627574696f6e7a69566572 *73696f6e5f7a6466457156657273696f6e5f636c6f73757265005f5f7374675f67635f656e7465 *725f31004748437a695265616c5f61345f636c6f737572650053797374656d7a69456e7669726f *6e6d656e745f676574417267735f656e747279004748437a69426173655f5a434445715f737461 *7469635f656e74727900546578747a69526561647a694c65785f7a644c723578786c766c34385f *696e666f004748437a69426173655f636f6d706172655f656e74727900466f726569676e7a6943 *7a69537472696e675f7769746843537472696e675f656e74727900546578747a69526561647a69 *4c65785f7a644c7235753166726f6d496e74656772616c5f636c6f73757265005f5f737467696e *69745f546578747a69506172736572436f6d62696e61746f72737a695265616450004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f64726f704162736f6c75746550 *72656669785f636c6f737572650053797374656d7a694469726563746f72795f6c766c355f696e *666f004748437a69494f426173655f61375f696e666f00446973747269627574696f6e7a695369 *6d706c657a695574696c735f6469655f636c6f73757265007374675f756e636865636b65644953 *68696674524c3634004748437a69426173655f6765496e745f696e666f00446174617a69547970 *6561626c655f7a64574b657950725f636c6f73757265004748437a6953686f775f7a646653686f *775a4d5a4e5f696e666f0053797374656d7a69436d645f7a644c7233554c6c766c5f636c6f7375 *726500446973747269627574696f6e7a69457874656e73696f6e5f416c6c6f774f7665726c6170 *70696e67496e7374616e6365735f636c6f7375726500446973747269627574696f6e7a69506172 *73655574696c735f7061727365457874656e73696f6e515f656e74727900446973747269627574 *696f6e7a6953657475705f636f6d70696c6572506174685f696e666f004748437a695265616c5f *6c766c395f636c6f7375726500446174617a694c6973745f7a644c72346e396c766c325f696e66 *6f004748437a69496e745f4936347a685f7374617469635f656e747279004748437a6948616e64 *6c655f68436c6f73655f656e7472790053797374656d7a69506f7369787a69496e7465726e616c *735f7a64776363616c6c35345f636c6f73757265004748437a695265616c5f61375f636c6f7375 *7265004748437a6953686f775f6c766c31375f696e666f004748437a694c6973745f7a644c7232 *73796c766c34325f696e666f004748437a694c6973745f706f6c797a756c6173747a715f636c6f *7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f *7a707a707a705f636c6f73757265004748437a69426173655f7a64664f72645a4d5a4e5f636c6f *737572650053746752756e00446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f72656164486f6f6b65644275696c64496e666f5f656e747279004748437a69494f *426173655f6c766c32325f656e747279004748437a69526561645f7a6473726561644c69737450 *72656344656661756c74315f656e7472790053797374656d7a69506f7369787a6946696c65735f *7468726f774572726e6f49664d696e7573317a755f656e74727900446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f6578654e616d655f636c6f73757265005465 *78747a695072657474795072696e747a69487567686573504a5f7a644c72363863616e747a7566 *61696c5f656e74727900446973747269627574696f6e7a695061636b6167654465736372697074 *696f6e5f77726974655061636b6167654465736372697074696f6e5f656e74727900446174617a *69486173685461626c655f7a647768617368537472696e675f696e666f00546578747a69506172 *736572436f6d62696e61746f72737a6952656164505f7a644c723174736c766c375f636c6f7375 *7265004748437a69576f72645f5733327a685f636f6e5f696e666f00446973747269627574696f *6e7a6956657273696f6e5f706172736556657273696f6e5f737274004748437a69426173655f5a *435f696e666f004748437a69456e756d5f676f7a7575707a75696e747a756c6973745f696e666f *007374675f737461636b5f736176655f656e747269657300446973747269627574696f6e7a6950 *726550726f636573737a69556e6c69745f5072655f636f6e5f696e666f007374675f67635f756e *70745f72310053797374656d7a69506f7369787a69496e7465726e616c735f61315f696e666f00 *4748437a6948616e646c655f7a644c724a626f75747075747a75666c6167735f636c6f73757265 *0073746f705469636b6572004748437a69496e745f73686f777350726563325f636c6f73757265 *00446174617a694d617962655f6d617962655f636c6f73757265004748437a69426173655f6c76 *6c315f696e666f004748437a695265616c5f6131345f636c6f7375726500446973747269627574 *696f6e7a69436f6d7061747a6952656164505f6d756e63685f7372740044697374726962757469 *6f6e7a6953657475705f436f6e666967466c6167735f7374617469635f656e7472790053797374 *656d7a694469726563746f72795f67657443757272656e744469726563746f72795f636c6f7375 *72650071756f7452656d496e74656765727a685f66617374004748437a69494f5f6c766c335f69 *6e666f00546578747a69526561647a694c65785f7a644c723577486135355f656e747279005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35355f696e666f00 *7274735f676574496e74004748437a694c6973745f706f6c797a75696e69747a715f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f636861696e6c315f696e66 *6f00446973747269627574696f6e7a6953657475705f70617273655344697374417267735f636c *6f73757265004748437a69576f72645f7a647766726f6d496e7465676572335f636c6f73757265 *004748437a6948616e646c655f7a644c724a397374647a75666c6167735f636c6f737572650047 *48437a6948616e646c655f6132345f696e666f004748437a69494f426173655f5265736f757263 *654578686175737465645f636c6f7375726500546578747a69526561647a694c65785f7a644c72 *35735a5a76616c315f656e747279004748437a69494f426173655f62696e64494f5f656e747279 *004748437a69526561645f706f6c797a75676f5f656e747279005f5f737467696e69745f446973 *747269627574696f6e7a69436f6d7061747a6952617753797374656d0044697374726962757469 *6f6e7a694765744f70745f4f7074696f6e5f7374617469635f696e666f004748437a6952656164 *5f6c766c32375f696e666f00466f726569676e7a694d61727368616c7a6941727261795f6c766c *315f636c6f73757265006c6162656c5468726561647a685f66617374004748437a69426173655f *7a6477676364496e745f696e666f0053797374656d7a69506f7369787a69496e7465726e616c73 *5f6664547970655f696e666f00446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f70617273654465736372697074696f6e5f696e666f007274735f756e6c6f636b *00546578747a69526561647a694c65785f7a644c723577486135355f636c6f7375726500474843 *7a6948616e646c655f7a644c7262596a6c766c31355f656e7472790053797374656d7a69456e76 *69726f6e6d656e745f67657450726f674e616d655f696e666f0053797374656d7a694469726563 *746f72795f7a6477676f5f656e747279004748437a6953686f775f6137325f636c6f7375726500 *4748437a69494f426173655f6c766c33315f696e666f0053797374656d7a69506f7369787a6949 *6e7465726e616c735f636f6e73747a75667a75736574666c5f696e666f00696e74657270726574 *42434f00546578747a69526561647a694c65785f7a644c723578626136305f636c6f7375726500 *4748437a69496e745f6c766c32385f656e747279004748437a694e756d5f6c766c31325f636c6f *7375726500546578747a695072657474795072696e747a69487567686573504a5f7a647766696c *6c315f636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f *726564756365446f63315f636c6f7375726500446973747269627574696f6e7a69506172736555 *74696c735f6669656c644e616d655f696e666f00446973747269627574696f6e7a69457874656e *73696f6e5f466c657869626c65436f6e74657874735f7374617469635f696e666f004469737472 *69627574696f6e7a6950617273655574696c735f50617273654f6b5f7374617469635f656e7472 *7900446973747269627574696f6e7a69457874656e73696f6e5f7a646653686f77457874656e73 *696f6e5f636c6f7375726500446174617a695479706561626c655f6d6b5479436f6e5f636c6f73 *757265004572726f72486472486f6f6b004748437a695265616c5f66726f6d496e74656772616c *5f656e74727900446174617a694d617962655f4a7573745f656e74727900446973747269627574 *696f6e7a695061636b6167654465736372697074696f6e5f746573746564576974685f696e666f *004748437a694172725f7a644c723575446c766c365f696e666f004748437a69494f5f68507574 *4275665f656e74727900546578747a69506172736572436f6d62696e61746f72737a6952656164 *505f6c766c335f696e666f007374675f67635f6e6f7265677300446174617a695479706561626c *655f5479436f6e5f636f6e5f696e666f004748437a69494f426173655f61355f696e666f00466f *726569676e7a6953746f7261626c655f6c766c5f636c6f737572650053797374656d7a69506f73 *69787a69496e7465726e616c735f73697a7a656f667a75737461745f636c6f7375726500537973 *74656d7a69506f7369787a69496e7465726e616c735f656e647a756f667a756469725f636c6f73 *75726500436f6e74726f6c7a694d6f6e61645f6d61704d7a755f696e666f007374675f73656c5f *315f7570645f656e747279004748437a6953686f775f6136315f636c6f7375726500546578747a *69526561647a694c65785f7a644c7268576c65784469676974735f696e666f004748437a695368 *6f775f6c766c32345f696e666f007374675f494e445f4f4c4447454e5f696e666f004748437a69 *426173655f6774496e745f696e666f00446973747269627574696f6e7a6953657475705f436d64 *5f696e666f007374675f61705f315f7570645f696e666f004748437a69496e745f746f52617469 *6f6e616c325f656e74727900446973747269627574696f6e7a6956657273696f6e5f7a64665368 *6f7756657273696f6e52616e67655f636c6f7375726500446174617a695479706561626c655f7a *644c727864686173684b505f696e666f00446973747269627574696f6e7a6953657475705f7061 *7273655344697374417267735f737274004748437a69576f72645f7a6d335f636c6f7375726500 *7374675f6c65576f72643634004748437a69426173655f7a64737a64646d7a737a655f636c6f73 *757265004748437a6948616e646c655f6c766c315f696e666f004748437a695265616c5f7a6477 *61365f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a75415050 *454e445f696e666f00446973747269627574696f6e7a6953657475705f576974684863506b675f *656e747279005f5f737467696e69745f546578747a6952656164004748437a69426173655f666f *6c64725f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c65506174 *685f69734162736f6c757465506174685f73727400546578747a69526561647a694c65785f7a64 *4c7235794e6c766c37395f636c6f73757265004748437a695265616c5f6c766c355f636c6f7375 *7265004748437a69526561645f6c6973745f656e74727900446973747269627574696f6e7a6943 *6f6d7061747a6946696c65506174685f73706c697446696c65506174685f737274004469737472 *69627574696f6e7a69436f6d7061747a6946696c65506174685f6973526f6f746564506174685f *73727400446973747269627574696f6e7a695061636b6167655f706b674e616d655f636c6f7375 *7265007374675f61705f345f7570645f656e74727900446174617a695479706561626c655f4361 *6368655f636f6e5f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f *7a64776363616c6c37375f636c6f73757265007374675f61705f665f696e666f007374675f696e *743634546f496e7400446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f6a6f696e46696c654e616d655f636c6f7375726500466f726569676e7a69437a694572726f72 *5f7a644c723353517a64776363616c6c5f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f6761746865725f636c6f73757265004748437a694e756d5f676364 *496e74656765725f656e747279007374726e6370794040474c4942435f322e3000546578747a69 *526561647a694c65785f7a644c723579356c766c35375f636c6f737572650053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c33305f736c6f7700446973747269 *627574696f6e7a6950617273655574696c735f70617273654f707456657273696f6e5f636c6f73 *757265004748437a695265616c5f7a647761335f656e747279005f5f737467696e69745f446174 *617a695475706c65004748437a69426173655f7a677a677a655f656e7472790044697374726962 *7574696f6e7a6956657273696f6e5f56657273696f6e5f7374617469635f696e666f004748437a *69496e745f7a644c723945436c766c31355f696e666f004748437a694e756d5f706c7573496e74 *656765725f656e747279004748437a69494f426173655f54696d65457870697265645f73746174 *69635f696e666f00446973747269627574696f6e7a6950617273655574696c735f4e6f50617273 *655f636f6e5f696e666f00546578747a695072657474795072696e747a69487567686573504a5f *687365705f656e747279004748437a69556e69636f64655f697353706163655f656e7472790063 *6c6f737572655f666c616773004748437a694e756d5f6c69745f636c6f73757265005f5f737467 *696e69745f4748437a6953545265665f00446973747269627574696f6e7a695061727365557469 *6c735f50617273654661696c65645f636c6f737572650053797374656d7a69506f7369787a6946 *696c65735f66696c654d6f64655f636c6f7375726500446973747269627574696f6e7a69536574 *75705f636f6e6669674863506174685f656e747279004748437a69526561645f706172656e735f *636c6f73757265007274735f6d6b496e7438004748437a694c6973745f6c6173745f696e666f00 *466f726569676e7a69437a694572726f725f6572726e6f546f494f4572726f725f636c6f737572 *650053797374656d7a694469726563746f72795f6c766c32355f696e666f00546578747a695265 *61647a694c65785f7a644c723578626136305f656e74727900446973747269627574696f6e7a69 *50617273655574696c735f73706c69745374616e7a7a61735f656e7472790053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c37345f636c6f7375726500546578 *747a69526561647a694c65785f7a644c7235764a6134355f656e74727900546578747a69507265 *7474795072696e747a69487567686573504a5f7a644c723468697365704e42315f636c6f737572 *650053797374656d7a69457869745f6c766c325f636c6f7375726500446973747269627574696f *6e7a694c6963656e73655f416c6c52696768747352657365727665645f7374617469635f696e66 *6f004748437a6953686f775f6132305f636c6f73757265004748437a695265616c5f665f696e66 *6f00446174617a694c6973745f6e75625f656e747279007374675f494e445f5045524d5f696e66 *6f004748437a6953686f775f6c766c31375f656e747279004748437a694c6973745f7375625f65 *6e747279004748437a694c6973745f7a644c7232726d6c766c31335f656e747279007374675f6e *65496e74363400446174617a694d617962655f636f6e327461677a754d617962657a685f636c6f *7375726500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f636f6d *6d6f6e506172656e745f696e666f004748437a6948616e646c655f7a644c7263307a7a7468726f *774572726e6f49664d696e75733152657472797a755f636c6f73757265004748437a69494f5f7a *64777772697465426c6f636b735f696e666f00546578747a69526561647a694c65785f7a644c72 *3579666c766c36325f636c6f73757265004748437a69546f7048616e646c65725f7a644c723337 *696c766c395f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f6c76 *6c315f656e747279004748437a69494f426173655f457869744661696c7572655f636f6e5f696e *666f004748437a695265616c5f6e6f74414e756d6265725f636c6f7375726500546578747a6952 *6561647a694c65785f7a644c72684b6c65784e756d6265725f696e666f00546578747a69526561 *647a694c65785f7a644c7235784e7833325f636c6f7375726500546578747a69526561647a694c *65785f7a644c723577586c766c34325f636c6f7375726500546578747a69526561647a694c6578 *5f7a644c723577646135305f636c6f7375726500546578747a69526561647a694c65785f7a644c *723577526c766c34315f636c6f73757265004748437a694e756d5f6469764d6f64496e74656765 *725f636c6f73757265004748437a694e756d5f656e756d46726f6d5f696e666f004748437a6949 *6e745f616273325f636c6f73757265005f5f676d707a5f746469765f710053797374656d7a6950 *6f7369787a69496e7465726e616c735f7a64776363616c6c33355f636c6f73757265004748437a *6948616e646c655f6c766c31365f656e747279004748437a69526561645f6c766c32345f656e74 *7279004748437a69494f426173655f4c696e65427566666572696e675f7374617469635f696e66 *6f00446973747269627574696f6e7a6950617273655574696c735f70617273654c69624e616d65 *515f656e747279004748437a69426173655f7a657a65345f656e74727900446973747269627574 *696f6e7a6956657273696f6e5f73686f7756657273696f6e52616e67655f636c6f737572650073 *74675f67635f66756e5f696e666f00446973747269627574696f6e7a695061636b6167655f5061 *636b6167654964656e7469666965725f636f6e5f696e666f00446973747269627574696f6e7a69 *53696d706c657a695574696c735f6469655f737274004748437a69494f426173655f6132385f63 *6c6f7375726500546578747a69526561647a694c65785f7a644c723578506c766c35315f656e74 *7279004748437a69426173655f7a64646d7a677a655f656e74727900446973747269627574696f *6e7a6953657475705f636d644e616d655f656e74727900546578747a695072657474795072696e *747a69487567686573504a5f7a64776d6b4e6573745f696e666f007374675f61705f7070765f72 *657400446973747269627574696f6e7a69436f6d7061747a694469726563746f72795f66696e64 *45786563757461626c655f73727400446973747269627574696f6e7a694765744f70745f4f7074 *4572725f696e666f00446973747269627574696f6e7a695061636b616765446573637269707469 *6f6e5f726561645061636b6167654465736372697074696f6e5f636c6f73757265004748437a69 *494f426173655f4f746865724572726f725f7374617469635f656e747279004469737472696275 *74696f6e7a695061636b6167654465736372697074696f6e5f6f746865724d6f64756c65735f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f6f7a7542494e4152595f *696e666f00436f6e74726f6c7a69457863657074696f6e5f627261636b65745f656e7472790047 *48437a695265616c5f7a644c7235315a5a6c766c375f656e747279004748437a69494f42617365 *5f756e73616665496e7465726c65617665494f5f656e747279005f5f737467696e69745f537973 *74656d7a6954696d655f00616c6c6f63617465004748437a69576f72645f66726f6d496e746567 *6572335f656e747279004748437a6953686f775f73686f777350726563325f656e747279004748 *437a69494f426173655f53656d69436c6f73656448616e646c655f636c6f73757265005f5f7374 *67696e69745f53797374656d7a69494f004748437a69494f426173655f4e6f537563685468696e *675f7374617469635f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f52 *616e6b4e54797065735f7374617469635f656e747279004748437a69456e756d5f656664496e74 *46425f696e666f0053797374656d7a69456e7669726f6e6d656e745f676f5f696e666f00537973 *74656d7a69506f7369787a69496e7465726e616c735f637a75636c6f73656469725f636c6f7375 *7265004748437a69456e756d5f656e756d46726f6d5468656e546f335f656e747279004748437a *69494f5f7a644c723966766c766c31305f696e666f004748437a694e756d5f7a647771756f7452 *656d496e74656765725f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f *52616e6b4e54797065735f636c6f73757265004748437a695265616c5f6c766c365f696e666f00 *6b696c6c5468726561647a685f66617374004748437a695265616c5f5a4344496e74656772616c *5f636f6e5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f65 *6e6442795f73727400446973747269627574696f6e7a6953657475705f636f6e6669674863466c *61766f725f636c6f73757265005f5f696e69745f61727261795f7374617274004748437a69496e *745f7a64777368696674335f656e747279004748437a694e756d5f7369676e756d325f656e7472 *7900446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f436f6d6d65 *6e745f636c6f73757265004748437a69494f426173655f72657475726e494f5f656e7472790053 *797374656d7a69506f7369787a6946696c65735f66696c654d6f64655f656e7472790054657874 *7a69526561647a694c65785f7a644c723578396c766c34345f656e74727900546578747a695265 *61647a694c65785f7a644c7235766878365f636c6f7375726500546578747a69526561647a694c *65785f7a644c7235734e6c766c335f636c6f73757265005f5f737467696e69745f546578747a69 *526561645f00546578747a69526561647a694c65785f7a644c723577376134395f696e666f0044 *6973747269627574696f6e7a6953657475705f7061727365436f7079417267735f696e666f0044 *6174617a694d617962655f636f6e327461677a754d617962657a685f696e666f00446973747269 *627574696f6e7a6953657475705f4842435f7374617469635f696e666f004748437a694e756d5f *696e7432496e74656765725f696e666f00446174617a695479706561626c655f676f315f636c6f *73757265004748437a69426173655f547275655f7374617469635f656e747279007374675f6170 *5f6e5f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f506172616c6c65 *6c4c697374436f6d705f7374617469635f656e74727900436f6e74726f6c7a694d6f6e61645f66 *6f6c644d5f636c6f73757265004748437a69496e745f7a646653686f77496e7433325f636c6f73 *757265004748437a69546f7048616e646c65725f7a644c723336556c766c5f656e747279006e65 *77434146004748437a6953686f775f6133305f636c6f73757265004748437a694e756d5f7a6477 *71756f7452656d496e74656765725f656e747279004748437a69494f426173655f526561644d6f *64655f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f *636861696e725f636c6f7375726500446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f7a646766726f6d45786563757461626c655f656e747279007374675f6361 *7463685f6672616d655f696e666f0053797374656d7a69457869745f6c766c335f736c6f770047 *48437a69426173655f556e69745f7374617469635f656e747279004748437a695265616c5f6134 *5f696e666f005f5f6d6f64646933004748437a69496e745f6d6f64325f636c6f73757265004748 *437a69546f7048616e646c65725f746f7048616e646c65725f696e666f004748437a6948616e64 *6c655f6f70656e46645f636c6f73757265004748437a694c6973745f6c656e6774685f696e666f *005f5f737467696e69745f4748437a6948616e646c655f004748437a69494f426173655f494f45 *72726f725f636f6e5f696e666f006465526566537461626c6550747200546578747a6952656164 *7a694c65785f7a644c723575546133365f636c6f7375726500446973747269627574696f6e7a69 *457874656e73696f6e5f657874656e73696f6e73546f48756773466c61675f656e747279004469 *73747269627574696f6e7a695061636b6167654465736372697074696f6e5f6d6f64756c655061 *74685f636c6f73757265004748437a69496e745f70726564325f656e747279004748437a69456e *756d5f6c766c31385f656e747279005f5f676d705f7365745f6d656d6f72795f66756e6374696f *6e73007374675f73656c5f31315f7570645f696e666f004748437a69546f7048616e646c65725f *7a644c7233376f6c766c31325f636c6f7375726500446174617a694c6973745f776f7264735f65 *6e747279004748437a695265616c5f6469764d6f64315f636c6f73757265004748437a6953686f *775f73686f777350726563325f696e666f00546578747a69526561647a694c65785f7a644c7235 *797a7a6c766c37325f636c6f737572650062656c6368004748437a6953686f775f6132385f696e *666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a6467 *66726f6d4275696c64496e666f5f696e666f004748437a695265616c5f7a6477746f526174696f *6e616c5f696e666f004748437a69426173655f7a737a65325f656e747279004469737472696275 *74696f6e7a6953657475705f496e73745072656669785f696e666f00546578747a69526561647a *694c65785f7a644c723576566134375f636c6f7375726500446973747269627574696f6e7a6953 *696d706c657a695574696c735f736d617274436f7079536f75726365735f696e666f004748437a *6953686f775f6133345f636c6f7375726500446973747269627574696f6e7a6950617273655574 *696c735f73686f7746726565546578745f656e74727900466f726569676e7a694d61727368616c *7a69416c6c6f635f6c766c325f696e666f0053797374656d7a694469726563746f72795f646f65 *734469726563746f727945786973745f656e747279004748437a69576f72645f7a6d335f696e66 *6f00446973747269627574696f6e7a6950617273655574696c735f4e6f50617273655f656e7472 *79004748437a6948616e646c655f696f657a75636c6f73656448616e646c655f696e666f005465 *78747a69526561647a694c65785f7a644c72357a7a666c766c38375f696e666f004748437a6948 *616e646c655f6f70656e46696c657a715f656e74727900446973747269627574696f6e7a69436f *6d7061747a6952656164505f6f7074696f6e616c5f737274007274735f6d6b576f726400466f72 *6569676e7a6953746f7261626c655f706f6c797a75616c69676e6d656e74325f696e666f004748 *437a69556e69636f64655f697344696769745f696e666f00446174617a695479706561626c655f *7a644c72364f4f74626c315f656e747279004748437a6953686f775f6137365f696e666f005465 *78747a69526561647a694c65785f7a644c7235747a7a6132355f636c6f73757265005f494f5f73 *7464696e5f7573656400546578747a69506172736572436f6d62696e61746f72737a6952656164 *507265635f707265635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c73 *5f656e647a756f667a756469725f656e747279005f5f737467696e69745f466f726569676e7a69 *5074725f00446973747269627574696f6e7a6953657475705f70617273654275696c6441726773 *5f696e666f004748437a694e756d5f7a644c723278426c766c355f656e7472790053797374656d *7a69457869745f615f656e747279004748437a694572725f7061744572726f725f696e666f0044 *6973747269627574696f6e7a6953657475705f7061727365486164646f636b417267735f636c6f *73757265007374675f756e626c6f636b4173796e63457863657074696f6e737a685f7265745f65 *6e74727900446973747269627574696f6e7a69436f6d7061747a694469726563746f72795f6765 *74486f6d654469726563746f72795f636c6f7375726500446973747269627574696f6e7a695061 *636b6167654465736372697074696f6e5f7a646766726f6d4275696c64496e666f5f636c6f7375 *726500436f6e74726f6c7a694d6f6e61645f6d61704d7a755f636c6f7375726500736368656475 *6c65546872656164004748437a69546f7048616e646c65725f6b5f636c6f73757265005f5f7374 *67696e69745f466f726569676e004748437a69526561645f7a6466526561645a4d5a4e5f636c6f *73757265005f5f737467696e69745f466f726569676e7a694d61727368616c7a69416c6c6f635f *004748437a69494f426173655f6c766c33345f696e666f004748437a6953686f775f7a64737a64 *646d73686f77325f696e666f00546578747a695072657474795072696e747a6948756768657350 *4a5f70756e6374756174655f656e74727900446973747269627574696f6e7a6953657475705f7a *646766726f6d436f6d70696c6572466c61766f725f696e666f004748437a694e756d5f656e756d *44656c7461496e74656765725f656e747279004748437a695265616c5f7a635f656e7472790053 *797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c375f656e747279 *004748437a6953686f775f69746f735f636c6f73757265004748437a6953686f775f6134305f69 *6e666f0073636176656e6765645f7374617469635f6f626a65637473004748437a694c6973745f *66696c7465725f656e74727900466f726569676e7a694d61727368616c7a69416c6c6f635f6c76 *6c5f656e747279005f5f737467696e69745f446174617a6944796e616d69630044697374726962 *7574696f6e7a69436f6d7061747a6952656164505f6765745f656e74727900546578747a695265 *61647a694c65785f7a644c723577706135325f696e666f00446973747269627574696f6e7a6950 *61636b6167654465736372697074696f6e5f7570646174655061636b6167654465736372697074 *696f6e5f696e666f004748437a69546f7048616e646c65725f7a644c723337776c766c31365f63 *6c6f73757265004748437a6953686f775f7a644c72315a5a6461325f656e747279004469737472 *69627574696f6e7a6953657475705f48656c70466c61675f7374617469635f696e666f00466f72 *6569676e7a694d61727368616c7a69416c6c6f635f7a6477616c6c6f636142797465735f636c6f *7375726500546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f *706661696c5f656e74727900446973747269627574696f6e7a6956657273696f6e5f7061727365 *56657273696f6e5f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a *64776363616c6c33345f656e747279004748437a6948616e646c655f7a644c7262585a5a6c766c *355f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f7a647763 *63616c6c36335f696e666f007374675f61705f6c5f726574004748437a69426173655f7a647767 *6364496e745f656e747279004748437a69494f5f696c6c6567616c42756666657253697a7a655f *696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f6f7074696f6e *5f73727400446973747269627574696f6e7a694c6963656e73655f5075626c6963446f6d61696e *5f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164 *505f6d616e7954696c6c5f636c6f73757265004748437a695074725f636173745074725f696e66 *6f004748437a6948616e646c655f7a644c724a6677726974657a75666c6167735f656e74727900 *446174617a694d617962655f7a644c7252426c766c5f696e666f00546578747a69526561647a69 *4c65785f454f465f7374617469635f656e74727900546578747a69526561647a694c65785f7a64 *4c7235786c6c766c34365f636c6f73757265004748437a6948616e646c655f6f70656e42696e61 *727946696c655f696e666f004748437a69494f5f7a647777726974654c696e65735f736c6f7700 *53797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c365f636c6f73 *75726500546578747a69526561647a694c65785f7a644c7235767a7a78395f636c6f7375726500 *4748437a6948616e646c655f7a644c726258446131385f696e666f004748437a69494f42617365 *5f62756653697a7a655f656e74727900446973747269627574696f6e7a6953657475705f7a6467 *746f416374696f6e5f636c6f7375726500466f726569676e7a694d61727368616c7a6941727261 *795f706f6b654172726179305f696e666f004748437a69494f5f7a6477685075744275667a715f *696e666f004748437a695265616c5f66726f6d496e74656772616c5f696e666f004748437a6953 *686f775f6131355f636c6f73757265004748437a695265616c5f7a637a635f696e666f00474843 *7a6953686f775f7a646653686f774d617962655f636c6f73757265004748437a69494f42617365 *5f6c766c33335f636c6f7375726500546578747a69526561647a694c65785f7a644c723575356c *766c31335f696e666f00446973747269627574696f6e7a6950726550726f636573737a69556e6c *69745f5072655f656e74727900446973747269627574696f6e7a695061636b6167654465736372 *697074696f6e5f657874656e73696f6e735f656e74727900446973747269627574696f6e7a6950 *726550726f636573737a69556e6c69745f50726f6772616d5f636f6e5f656e7472790054657874 *7a695072657474795072696e747a69487567686573504a5f70756e6374756174655f636c6f7375 *726500446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f656d70 *74795061636b6167654465736372697074696f6e5f636c6f73757265007374675f73656c5f345f *6e6f7570645f656e74727900546578747a69526561647a694c65785f7a644c723576467831305f *636c6f7375726500446973747269627574696f6e7a694765744f70745f4e6f6e4f70745f696e66 *6f004748437a6953686f775f6137345f656e747279004748437a6953686f775f6131325f656e74 *7279007363686564756c6557616974546872656164004748437a69426173655f6571537472696e *675f696e666f00436f6e74726f6c7a694d6f6e61645f6c6966744d5f696e666f00446973747269 *627574696f6e7a6956657273696f6e5f73686f7756657273696f6e5f636c6f7375726500696e74 *3634546f496e74656765727a685f66617374004748437a69494f5f7a644c723966646c766c315f *696e666f00546578747a69506172736572436f6d62696e61746f72737a6952656164505f46696e *616c5f636f6e5f656e74727900446973747269627574696f6e7a69436f6d7061747a6952656164 *505f4c6f6f6b5f636c6f7375726500446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f4275696c64496e666f5f736c6f770053797374656d7a69436d645f7a644c *7233554c6c766c5f656e747279004748437a6948616e646c655f7a644c724a626f75747075747a *75666c6167735f696e666f004748437a69494f426173655f627566525074725f696e666f004469 *73747269627574696f6e7a6950617273655574696c735f7061727365436f6d6d614c6973745f69 *6e666f00446973747269627574696f6e7a694c6963656e73655f425344335f7374617469635f69 *6e666f00436f6e74726f6c7a694d6f6e61645f73657175656e63657a755f656e74727900537973 *74656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c35345f696e666f0047 *48437a69494f5f7a644c7239655a5a615f636c6f73757265004748437a69496e745f6c766c3239 *5f636c6f737572650053797374656d7a69506f7369787a69496e7465726e616c735f6f7a754e4f *4e424c4f434b5f636c6f73757265004748437a695265616c5f5a43445265616c5f737461746963 *5f696e666f00446973747269627574696f6e7a69436f6d7061747a6952656164505f7361746973 *66795f696e666f00446973747269627574696f6e7a695061636b6167655f70617273655061636b *6167654e616d655f656e747279005f5f737467696e69745f446174617a69426f6f6c5f00474843 *7a6953686f775f5a434453686f775f7374617469635f656e74727900446973747269627574696f *6e7a69436f6d7061747a6952656164505f706661696c5f636c6f73757265004748437a69576f72 *645f5731367a685f636f6e5f696e666f00546578747a69506172736572436f6d62696e61746f72 *737a6952656164505f72657475726e5f656e74727900446973747269627574696f6e7a69507265 *50726f636573737a69556e6c69745f426c616e6b5f7374617469635f656e747279007265616464 *697236345f724040474c4942435f322e320053797374656d7a69506f7369787a69496e7465726e *616c735f7a644c733869727361745f696e666f004748437a695265616c5f746f526174696f6e61 *6c325f656e747279004748437a69496e745f6d6f64325f656e747279007274735f6d6b576f7264 *3634004748437a69546f7048616e646c65725f72756e494f5f636c6f737572650053797374656d *7a69436d645f615f696e666f007374675f64756d6d795f7265745f656e74727900636d705f7468 *72656164004748437a69494f426173655f7a737a65355f636c6f73757265004469737472696275 *74696f6e7a694765744f70745f4e6f4172675f7374617469635f656e74727900546578747a6952 *6561647a694c65785f7a644c723575786c766c31365f636c6f7375726500446973747269627574 *696f6e7a6953696d706c657a695574696c735f636f707946696c65566572626f73655f656e7472 *790053797374656d7a69436d645f7a644c7233554c6c766c5f696e666f004748437a6942617365 *5f47545f7374617469635f656e747279006d6b5765616b7a685f66617374004748437a69426173 *655f7a644c723266336c766c325f696e666f00546578747a69526561647a694c65785f7a644c72 *3575586133375f636c6f7375726500546578747a69526561647a694c65785f7a644c72357a7a39 *6136395f656e74727900546578747a69526561647a694c65785f7a644c7235766a6c766c32355f *636c6f7375726500446174617a69486173685461626c655f48545f7374617469635f656e747279 *004748437a69526561645f7265616450726563345f656e74727900446973747269627574696f6e *7a695061636b6167654465736372697074696f6e5f7a64665265616445786563757461626c655f *636c6f7375726500446174617a695479706561626c655f6d6b41707054795f636c6f7375726500 *53797374656d7a69506f7369787a69496e7465726e616c735f7a644c733869727361745f736c6f *7700546578747a695072657474795072696e747a69487567686573504a5f687365705f636c6f73 *75726500446973747269627574696f6e7a69436f6d7061747a6946696c65506174685f6368616e *676546696c654578745f636c6f7375726500446973747269627574696f6e7a6953657475705f57 *697468486164646f636b5f7374617469635f656e7472790053797374656d7a69506f7369787a69 *496e7465726e616c735f6f7a7552444f4e4c595f656e747279004748437a69576f72645f57387a *685f636f6e5f696e666f00446174617a695475706c655f736e645f656e747279007374675f6361 *7463685f6672616d655f375f726574004748437a69426173655f6c74496e745f636c6f73757265 *00446973747269627574696f6e7a6950617273655574696c735f50617273654f6b5f636f6e5f69 *6e666f004748437a695265616c5f6469764d6f64315f656e74727900446973747269627574696f *6e7a6950617273655574696c735f7a6467746f504572726f725f636c6f73757265004748437a69 *494f426173655f6c766c32375f696e666f004748437a6948616e646c655f61315f656e74727900 *466f726569676e7a694d61727368616c7a6941727261795f776974684172726179305f656e7472 *7900446973747269627574696f6e7a6950617273655574696c735f706172736551756f7465645f *73727400446973747269627574696f6e7a6953657475705f7a646652656164436f6d70696c6572 *5f636c6f73757265004748437a69576f72645f5733327a685f7374617469635f656e7472790044 *6973747269627574696f6e7a6956657273696f6e5f73686f7756657273696f6e5f737274004748 *437a69496e745f7a64646d7a6c5f656e7472790066726565537461626c6550747200546578747a *69526561647a694c65785f7a644c7235764e6c766c33305f636c6f7375726500546578747a6952 *6561647a694c65785f496e745f7374617469635f656e74727900446174617a695479706561626c *655f7a644c72364f4f74626c315f636c6f7375726500446973747269627574696f6e7a69536574 *75705f636f6d70696c6572466c61766f725f656e74727900446973747269627574696f6e7a6953 *696d706c657a695574696c735f64656661756c745061636b616765446573635f7372740070726f *675f61726776007274735f676574496e74313600546578747a69506172736572436f6d62696e61 *746f72737a6952656164505f6d706c75735f656e747279004748437a69494f426173655f427566 *6665724c697374436f6e735f636f6e5f696e666f004748437a6953545265665f53545265665f63 *6f6e5f656e747279005f5f737467696e69745f53797374656d7a69506f7369787a69456e760044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f5061636b616765 *4465736372697074696f6e5f696e666f00446973747269627574696f6e7a6953696d706c657a69 *5574696c735f64656661756c74486f6f6b65645061636b616765446573635f656e747279006162 *734040474c4942435f322e3000546578747a69526561647a694c65785f7a644c723574526c766c *395f656e747279004748437a695765616b5f7a647772756e46696e616c697a7a65724261746368 *5f656e747279006768635f7274735f6f707473004748437a69494f426173655f48617264776172 *654661756c745f7374617469635f696e666f004748437a69556e69636f64655f69735370616365 *5f696e666f00446973747269627574696f6e7a6953696d706c657a695574696c735f7261775379 *7374656d566572626f73655f696e666f004748437a69576f72645f7369676e756d335f656e7472 *7900446973747269627574696f6e7a6950726550726f636573737a69556e6c69745f496e636c75 *64655f636f6e5f656e747279004748437a6953686f775f6134305f656e747279004748437a6952 *65616c5f7a657a655f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f50 *6f6c796d6f7270686963436f6d706f6e656e74735f636c6f737572650044697374726962757469 *6f6e7a6953657475705f4c6966745f636c6f7375726500546578747a69526561647a694c65785f *7a644c723577746c766c33375f696e666f0053797374656d7a69457869745f6c766c315f696e66 *6f00446973747269627574696f6e7a6953657475705f436f7079436d645f7374617469635f696e *666f00446973747269627574696f6e7a694765744f70745f456e644f664f7074735f636c6f7375 *7265004748437a695265616c5f61375f696e666f0053797374656d7a69506f7369787a69496e74 *65726e616c735f6f7a754e4f435454595f696e666f004748437a69494f426173655f7a657a6538 *5f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f4d756c746950617261 *6d54797065436c61737365735f7374617469635f656e7472790053797374656d7a694469726563 *746f72795f7468726f774572726e6f49664d696e75733152657472797a755f656e747279004748 *437a6948616e646c655f7345454b7a754355525f636c6f7375726500446174617a695479706561 *626c655f4b657950725f636f6e5f656e74727900446973747269627574696f6e7a695365747570 *5f496e73745072656669785f656e74727900446174617a694c6973745f66696e645f636c6f7375 *7265004748437a695265616c5f5a437a765f636f6e5f696e666f00446973747269627574696f6e *7a6956657273696f6e5f556e696f6e56657273696f6e52616e6765735f696e666f004469737472 *69627574696f6e7a6950617273655574696c735f6669656c644765745f636c6f73757265004469 *73747269627574696f6e7a6953696d706c657a695574696c735f64656661756c74486f6f6b6564 *5061636b616765446573635f696e666f00446973747269627574696f6e7a694765744f70745f67 *65744f70745f636c6f73757265004748437a6948616e646c655f7374646f75745f656e74727900 *546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f6661696c5f *696e666f00737072696e74664040474c4942435f322e3000446973747269627574696f6e7a6953 *657475705f576974684863506b675f636f6e5f656e747279004748437a69494f426173655f4172 *697468457863657074696f6e5f636f6e5f696e666f00446174617a695475706c655f5a32545f73 *74617469635f656e747279004748437a694e756d5f6c766c31345f636c6f737572650044697374 *7269627574696f6e7a6950726550726f636573737a69556e6c69745f496e636c7564655f737461 *7469635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c36345f696e666f00546578747a69526561647a694c65785f7a644c72357a7a316c657841 *736369695f636c6f7375726500446973747269627574696f6e7a694765744f70745f7a64676672 *6f6d4f70744b696e645f636c6f73757265006677726974654040474c4942435f322e3000474843 *7a69494f426173655f6861427566666572735f656e74727900446973747269627574696f6e7a69 *436f6d7061747a6952656164505f636861725f636c6f73757265007374675f67635f67656e5f72 *6574004748437a69494f426173655f44697669646542795a5a65726f5f7374617469635f656e74 *7279004748437a69494f5f7a644c723966566c766c31395f636c6f73757265004748437a69494f *5f7a644c723966746c766c395f656e747279007274735f676574576f7264004748437a69546f70 *48616e646c65725f7a644c723337716c766c31335f656e74727900546578747a69526561647a69 *4c65785f436861725f7374617469635f696e666f004748437a695265616c5f7a647766315f696e *666f004748437a69426173655f5a30545f7374617469635f696e666f00546578747a6952656164 *7a694c65785f7a644c72357a7a786c766c39325f636c6f73757265004748437a69496e745f7a64 *77626f756e646564456e756d46726f6d5468656e5f696e666f0066696e616c697a655765616b50 *6f696e746572734e6f7700446973747269627574696f6e7a69457874656e73696f6e5f45786973 *74656e7469616c5175616e74696669636174696f6e5f7374617469635f656e7472790067307330 *00446973747269627574696f6e7a69457874656e73696f6e5f4172726f77735f7374617469635f *696e666f004748437a69576f72645f577a685f7374617469635f656e747279004748437a694861 *6e646c655f64735f656e747279004748437a695265616c5f61365f696e666f004748437a69546f *7048616e646c65725f746f7048616e646c65725f636c6f7375726500446973747269627574696f *6e7a695061636b6167654465736372697074696f6e5f7061636b6167655f656e74727900474843 *7a69494f5f7a6477636f6d6d69744275666665727a715f636c6f73757265004748437a69426173 *655f4c545f7374617469635f656e747279005f5f737467696e69745f446973747269627574696f *6e7a69436f6d7061747a6946696c65506174685f004748437a6948616e646c655f696f657a756e *6f745265616461626c655f656e74727900466f726569676e7a6953746f7261626c655f5a434453 *746f7261626c655f7374617469635f696e666f004748437a6948616e646c655f7a647766696c6c *526561644275666665724c6f6f705f636c6f737572650053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c32315f696e666f005f5f646174615f73746172740047 *48437a69494f5f7a644c723966726c766c385f656e747279004748437a6953686f775f6135315f *636c6f73757265004748437a69496e745f49387a685f7374617469635f656e747279005f5f7374 *67696e69745f4e756d657269635f007374675f455843455054494f4e5f434f4e535f696e666f00 *546578747a695072657474795072696e747a69487567686573504a5f7a64776d6b4e6573745f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f456d7074 *795f636c6f73757265004748437a69526561645f726561644c6973745072656344656661756c74 *5f636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f64726f704162736f6c7574655072656669785f696e666f00446973747269627574696f6e7a69 *436f6d7061747a6946696c65506174685f6a6f696e46696c654578745f696e666f004469737472 *69627574696f6e7a6953657475705f436c65616e436d645f7374617469635f696e666f00474843 *7a69576f72645f5731367a685f7374617469635f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f6c766c31325f636c6f737572650053797374656d7a69456e76 *69726f6e6d656e745f676f325f656e74727900446973747269627574696f6e7a69506172736555 *74696c735f73686f77446570656e64656e63795f656e747279004748437a694e756d5f75707a75 *66625f656e74727900446973747269627574696f6e7a69436f6d7061747a6946696c6550617468 *5f7061727365536561726368506174685f656e74727900446973747269627574696f6e7a694765 *744f70745f4f70744172675f696e666f0053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c36345f636c6f73757265005f5f737467696e69745f466f726569676e *7a694300446973747269627574696f6e7a6956657273696f6e5f5468697356657273696f6e5f63 *6c6f73757265004748437a6948616e646c655f6c766c31345f656e747279004748437a69457272 *5f6572726f725f696e666f004748437a69526561645f61345f636c6f737572650053797374656d *7a69506f7369787a69496e7465726e616c735f7a64776363616c6c32375f636c6f737572650054 *6578747a69526561647a694c65785f7a644c723574566c766c31315f636c6f7375726500546578 *747a69526561647a694c65785f7a644c72357a7a316c657841736369695f696e666f004748437a *6948616e646c655f7a644c726333766c766c3130305f636c6f73757265004748437a6948616e64 *6c655f6131375f696e666f004748437a69426173655f756e7061636b466f6c647243537472696e *677a685f656e74727900446973747269627574696f6e7a69457874656e73696f6e5f7a64664571 *457874656e73696f6e5f636c6f73757265004748437a6953686f775f7a646653686f77496e745f *636c6f7375726500446973747269627574696f6e7a69436f6d7061747a6952656164505f7a6466 *46756e63746f725061727365725f656e74727900446973747269627574696f6e7a694765744f70 *745f6765744f70747a715f636c6f7375726500446973747269627574696f6e7a69506172736555 *74696c735f73696d706c654669656c645f656e74727900446973747269627574696f6e7a695365 *7475705f636f6d70696c6572466c61766f725f636c6f73757265004748437a694c6973745f6d61 *78696d756d5f656e747279004748437a69494f426173655f6c766c31395f636c6f737572650073 *74675f494e445f365f696e666f004748437a6948616e646c655f77616e745265616461626c6548 *616e646c657a715f656e74727900546578747a695072657474795072696e747a69487567686573 *504a5f4e696c41626f76655f7374617469635f656e747279004748437a69496e745f66726f6d49 *6e7465676572325f656e747279004748437a6948616e646c655f7a644c724a726d6b46696c6548 *616e646c655f636c6f7375726500446174617a695479706561626c655f7a64574b657950725f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c34 *305f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f666454797065 *5f636c6f7375726500446174617a694d617962655f66726f6d4d617962655f656e747279004748 *437a695265616c5f7a64646d73686f775f696e666f004748437a6948616e646c655f657272355f *636c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f613235 *5f636c6f7375726500446973747269627574696f6e7a6950617273655574696c735f7a6467746f *504572726f725f656e747279005f5f737467696e69745f466f726569676e5f004748437a69546f *7048616e646c65725f7265706f72744572726f725f636c6f737572650044697374726962757469 *6f6e7a6950617273655574696c735f706172736546696c6550617468515f696e666f004748437a *6953686f775f6132365f636c6f73757265004748437a6948616e646c655f657272335f636c6f73 *757265007374675f71756f74576f7264363400546578747a69526561647a694c65785f7a644c72 *3577686c766c33355f696e666f00446973747269627574696f6e7a6953657475705f5769746843 *6f6d70696c65725f7374617469635f696e666f00446973747269627574696f6e7a69436f6d7061 *747a6952656164505f6f7074696f6e5f636c6f73757265004748437a69494f426173655f686149 *7353747265616d5f696e666f00446973747269627574696f6e7a69457874656e73696f6e5f506f *6c796d6f7270686963436f6d706f6e656e74735f7374617469635f656e74727900446973747269 *627574696f6e7a69436f6d7061747a6946696c65506174685f657865457874656e73696f6e5f63 *6c6f7375726500446973747269627574696f6e7a6953657475705f7061727365556e7265676973 *746572417267735f73727400546578747a69526561647a694c65785f7a644c72357544705f656e *747279004748437a6948616e646c655f7a644c726259786c766c32325f636c6f73757265007374 *675f73656c5f31325f6e6f7570645f656e747279007374675f73656c5f345f7570645f656e7472 *7900546578747a69506172736572436f6d62696e61746f72737a6952656164505f737472696e67 *5f636c6f73757265004748437a69496e745f7a64777a657a655f696e666f0053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c37375f656e747279004748437a69 *426173655f7a695f656e747279004748437a69494f426173655f6132355f696e666f004748437a *69494f426173655f496c6c6567616c4f7065726174696f6e5f7374617469635f656e747279005f *4a765f5265676973746572436c6173736573005f5f63747970655f625f6c6f634040474c494243 *5f322e330053797374656d7a69506f7369787a69496e7465726e616c735f53747265616d5f7374 *617469635f656e74727900546578747a69526561647a694c65785f7a644c7235416a6c766c3131 *365f636c6f73757265004748437a694c6973745f72657065617446425f696e666f005379737465 *6d7a69506f7369787a6946696c65735f6c766c32325f636c6f73757265004748437a69494f4261 *73655f61375f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64 *776363616c6c33325f656e74727900706572666f726d4743007274735f6c6f636b00466f726569 *676e7a694d61727368616c7a69416c6c6f635f7a6477616c6c6f636142797465735f656e747279 *00446973747269627574696f6e7a6950617273655574696c735f7a6467746f5061727365526573 *756c745f636c6f7375726500446973747269627574696f6e7a694765744f70745f4f7074696f6e *5f7374617469635f656e74727900546578747a69526561647a694c65785f7a644c7235796e6c76 *6c36365f636c6f7375726500546578747a69526561647a694c65785f7a644c723541706c766c31 *31395f636c6f73757265007374675f67635f67656e00446973747269627574696f6e7a69506163 *6b6167654465736372697074696f6e5f696e636c756465446972735f656e74727900546578747a *69526561647a694c65785f7a644c723578526136375f636c6f737572650053797374656d7a6950 *6f7369787a69496e7465726e616c735f526567756c617246696c655f636c6f7375726500446973 *747269627574696f6e7a6950617273655574696c735f70617273654c6963656e7365515f636c6f *737572650053797374656d7a69506f7369787a69496e7465726e616c735f636f6e73747a75667a *75676574666c5f636c6f73757265004748437a69546f7048616e646c65725f7a644c723337736c *766c31345f656e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a6477 *6363616c6c32345f656e747279004748437a69494f426173655f46696c6548616e646c655f636f *6e5f656e747279004748437a69496e745f6d696e426f756e64325f636c6f737572650044697374 *7269627574696f6e7a6953657475705f7a646766726f6d436d645f636c6f73757265006d61726b *43414673004748437a694c6973745f6c766c31365f656e74727900436f6e74726f6c7a694d6f6e *61645f73657175656e63655f696e666f0053797374656d7a694469726563746f72795f67657443 *757272656e744469726563746f72795f736c6f7700546578747a69506172736572436f6d62696e *61746f72737a6952656164507265635f6d696e507265635f636c6f737572650044697374726962 *7574696f6e7a6950617273655574696c735f6669656c645365745f636c6f737572650044697374 *7269627574696f6e7a69436f6d7061747a6952656164505f7a6c7a707a705f656e74727900436f *6e74726f6c7a694d6f6e61645f756e6c6573735f696e666f00546578747a69526561647a694c65 *785f7a644c723577426135345f636c6f73757265004748437a69494f426173655f454f465f7374 *617469635f696e666f004748437a69494f426173655f4e6f537563685468696e675f7374617469 *635f656e747279004748437a694c6973745f74616b657a75756e736166657a7555496e745f696e *666f00446973747269627574696f6e7a6953657475705f496e7374616c6c436d645f636c6f7375 *7265004748437a69494f5f7a644c723966666c766c325f636c6f73757265004748437a69456e75 *6d5f6c766c31365f696e666f00446973747269627574696f6e7a6953657475705f4748435f7374 *617469635f656e747279004748437a6953686f775f6136365f696e666f007374675f67635f6c31 *5f726574004748437a69526561645f7a64737a64646d726561647350726563315f696e666f0047 *48437a69494f5f6c766c335f656e747279004748437a69576f72645f6e6567617465335f636c6f *73757265004748437a694c6973745f7265706561745f636c6f73757265004748437a69546f7048 *616e646c65725f7a644c723337616c766c355f696e666f004748437a69456e756d5f656e756d46 *726f6d5468656e335f636c6f737572650053797374656d7a69506f7369787a69496e7465726e61 *6c735f7a64776363616c6c35355f636c6f73757265004748437a69496e745f616273325f656e74 *7279004748437a69494f426173655f496e76616c6964417267756d656e745f7374617469635f69 *6e666f00446973747269627574696f6e7a6956657273696f6e5f7a6467746f56657273696f6e52 *616e67655f656e74727900546578747a695072657474795072696e747a69487567686573504a5f *7a644c723467796c766c32315f636c6f73757265004748437a69576f72645f73686f7773507265 *63335f696e666f004748437a695265616c5f5a4344496e74656772616c5f7374617469635f696e *666f004748437a69426173655f7a677a677a655f696e666f00697343757272656e745468726561 *64426f756e647a685f6661737400436f6e74726f6c7a694d6f6e61645f756e6c6573735f636c6f *73757265004748437a69494f426173655f496e617070726f707269617465547970655f73746174 *69635f696e666f00546578747a69506172736572436f6d62696e61746f72737a6952656164505f *72657475726e5f636c6f73757265007374675f63746f695f7265745f5231705f696e666f005465 *78747a69506172736572436f6d62696e61746f72737a6952656164505f72657475726e5f696e66 *6f005f5f737467696e69745f53797374656d7a69506f736978004748437a694c6973745f7a7a69 *70576974685f636c6f73757265004748437a69426173655f7a707a705f636c6f73757265004469 *73747269627574696f6e7a69457874656e73696f6e5f506172616c6c656c4c697374436f6d705f *636c6f7375726500546578747a69526561647a694c65785f7a644c7235766c6134315f696e666f *004748437a69494f426173655f68614275666665725f656e74727900446973747269627574696f *6e7a694765744f70745f5065726d7574655f7374617469635f696e666f0053797374656d7a6950 *6f7369787a69496e7465726e616c735f7a64776363616c6c37305f656e747279004748437a6952 *6561645f7a6473726561644c69737444656661756c74315f656e74727900446973747269627574 *696f6e7a6956657273696f6e5f5468697356657273696f6e5f636f6e5f656e747279004748437a *694e756d5f7369676e756d325f636c6f73757265004748437a694e756d5f616273315f636c6f73 *75726500696e69745363686564756c6572004748437a69494f5f7a644c723966706c766c375f69 *6e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c3237 *5f696e666f004748437a69494f426173655f417070656e6448616e646c655f7374617469635f65 *6e7472790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c33 *385f696e666f00446174617a695479706561626c655f547970655265705f7374617469635f696e *666f00527473466c61677300446973747269627574696f6e7a695061636b616765446573637269 *7074696f6e5f65787472614c6962446972735f696e666f004748437a69496e745f4931367a685f *636f6e5f656e747279004748437a69494f426173655f53656d69436c6f73656448616e646c655f *7374617469635f696e666f0053797374656d7a69506f7369787a6946696c65735f6c766c31395f *656e747279007374675f756e636865636b656453686966744c3634004748437a69426173655f7a *737a65335f696e666f007274735f6d6b537461626c6550747200446973747269627574696f6e7a *69457874656e73696f6e5f46756e6374696f6e616c446570656e64656e636965735f636c6f7375 *726500446973747269627574696f6e7a6953657475705f7061727365476c6f62616c417267735f *696e666f00546578747a69526561647a694c65785f7a644c723576766c766c32375f656e747279 *0053797374656d7a69506f7369787a6946696c65735f6c766c31395f696e666f00446973747269 *627574696f6e7a69457874656e73696f6e5f5479706553796e6f6e796d496e7374616e6365735f *7374617469635f656e74727900446973747269627574696f6e7a6953657475705f636f6e666967 *48617070795f636c6f7375726500546578747a69526561647a694c65785f7a644c723576376c76 *6c32335f636c6f73757265004748437a69426173655f7a677a677a655f636c6f73757265004469 *73747269627574696f6e7a69436f6d7061747a6952656164505f7a646766726f6d505f636c6f73 *75726500446973747269627574696f6e7a69436f6d7061747a6952656164505f636f756e745f63 *6c6f73757265004748437a69526561645f6c766c32315f656e747279006973416c697665005379 *7374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c31395f736c6f7700 *546578747a69526561647a694c65785f7a644c7235746e6131395f636c6f737572650054657874 *7a695072657474795072696e747a69487567686573504a5f7a644c723467636c766c31305f656e *74727900446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f7a64 *66526561644275696c64496e666f5f636c6f7375726500446973747269627574696f6e7a69436f *6d7061747a6946696c65506174685f70617468536570617261746f725f636c6f73757265007369 *6764656c7365744040474c4942435f322e3000546578747a69526561647a694c65785f7a644c72 *35764e6c766c33305f656e747279004748437a69576f72645f7a644c723943366c766c31315f63 *6c6f73757265004748437a695265616c5f71756f74315f696e666f004748437a6953686f775f6c *766c32335f656e74727900446973747269627574696f6e7a694765744f70745f52657475726e49 *6e4f726465725f696e666f004748437a69426173655f6c65496e745f656e747279004469737472 *69627574696f6e7a6950617273655574696c735f50617273654f6b5f636f6e5f656e7472790047 *48437a69526561645f61345f656e74727900546578747a695072657474795072696e747a694875 *67686573504a5f7a6c7a707a675f696e666f00446174617a694c6973745f756e6c696e65735f69 *6e666f00546578747a69526561647a694c65785f7a644c7235743161385f696e666f0054657874 *7a69526561647a694c65785f7a644c72354148657461315f636c6f73757265007374675f67635f *756e62785f723100446973747269627574696f6e7a694765744f70745f4f70744172675f636c6f *73757265004748437a69426173655f437a685f636f6e5f656e74727900546578747a6950726574 *74795072696e747a69487567686573504a5f66756c6c52656e6465725f696e666f004748437a69 *494f5f6c766c335f636c6f73757265004748437a69426173655f756e7061636b466f6c64724353 *7472696e677a685f696e666f005f5f6873636f72655f72656e616d6546696c6500446973747269 *627574696f6e7a6953657475705f7a646766726f6d416374696f6e5f656e747279004748437a69 *426173655f706c7573496e745f656e74727900466f726569676e7a69437a694572726f725f6572 *726e6f546f494f4572726f725f696e666f004748437a69494f426173655f696f4572726f725f69 *6e666f004748437a695074725f636173745074725f636c6f73757265004748437a69556e69636f *64655f7a6477697344696769745f696e666f004748437a69526561645f7a6473726561644c6973 *745072656344656661756c74345f696e666f0053797374656d7a69506f7369787a695479706573 *5f7a6466496e74656772616c435069645f636c6f73757265004748437a6953686f775f7a644c72 *315a5a426c766c325f696e666f0053797374656d7a69436d645f615f656e747279005f5f737467 *696e69745f53797374656d7a69494f7a694572726f7200446973747269627574696f6e7a694578 *74656e73696f6e5f506f6c796d6f7270686963436f6d706f6e656e74735f7374617469635f696e *666f004748437a69494f5f685075744275665f636c6f73757265006d6b4170557064307a685f66 *617374004748437a69494f426173655f7a6466457145786974436f64655f636c6f737572650053 *797374656d7a694469726563746f72795f6c766c32355f656e74727900546578747a6952656164 *7a694c65785f7a644c7235787a7a6136345f656e747279004748437a695265616c5f7a64776469 *764d6f645f636c6f7375726500446973747269627574696f6e7a6953657475705f706172736543 *6f7079417267735f636c6f73757265004748437a69546f7048616e646c65725f6b5f656e747279 *00726561644040474c4942435f322e30004748437a695265616c5f6c766c31375f696e666f0047 *48437a694e756d5f7a644c723278726c766c5f656e747279004748437a695265616c5f7a64737a *63325f636c6f737572650053797374656d7a69436d645f6572725f636c6f737572650054657874 *7a69526561647a694c65785f7a644c723576766c766c32375f636c6f73757265004748437a6949 *4f426173655f6c766c33305f696e666f004748437a6948616e646c655f7a644c72625a5a376c76 *6c34305f636c6f7375726500436f6e74726f6c7a694d6f6e61645f6c6966744d325f696e666f00 *446973747269627574696f6e7a694c6963656e73655f4f746865724c6963656e73655f73746174 *69635f696e666f004748437a69546f7048616e646c65725f7a644c723336576c766c315f636c6f *73757265004748437a69426173655f5a434445715f636f6e5f696e666f004748437a694e756d5f *7a64646d73686f775f656e74727900446973747269627574696f6e7a69436f6d7061747a694669 *6c65506174685f6973526f6f746564506174685f636c6f7375726500446973747269627574696f *6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506c75735061727365725f737274 *004748437a6953686f775f73686f776c5f636c6f7375726500446973747269627574696f6e7a69 *436f6d7061747a6952656164505f656e6442795f636c6f7375726500446973747269627574696f *6e7a6950617273655574696c735f73706c69745374616e7a7a61735f636c6f7375726500474843 *7a695265616c5f7a64776469764d6f645f696e666f00546578747a695072657474795072696e74 *7a69487567686573504a5f726564756365446f63315f696e666f0053797374656d7a69506f7369 *787a69496e7465726e616c735f73697a7a656f667a75737461745f656e74727900446174617a69 *5479706561626c655f6c676f5f696e666f00446973747269627574696f6e7a6953657475705f7a *646653686f77466c61675f737274004748437a6953686f775f73686f776c5f696e666f00474843 *7a69426173655f437a685f636f6e5f696e666f007274735f6d6b446f75626c65004748437a6952 *65616c5f7a635f696e666f004748437a69494f426173655f737461636b4f766572666c6f775f63 *6c6f7375726500546578747a695072657474795072696e747a69487567686573504a5f7a644c72 *3467736c766c31385f656e74727900446973747269627574696f6e7a69436f6d7061747a695265 *6164505f7a6c7a707a705f636c6f73757265006765746f757274696d656f666461790053797374 *656d7a694469726563746f72795f6372656174654469726563746f72795f636c6f73757265005f *5f66787374617436344040474c4942435f322e32006c6f6f6b7570486173685461626c65004748 *437a694c6973745f7a644c723271456c766c5f636c6f7375726500446973747269627574696f6e *7a695061636b6167655f70617273655061636b61676549645f696e666f004748437a69576f7264 *5f7a64646d73686f774c697374335f696e666f004748437a6948616e646c655f7a644c724a6472 *6561647a75666c6167735f696e666f00446973747269627574696f6e7a69457874656e73696f6e *5f416c6c6f77556e646563696461626c65496e7374616e6365735f636c6f737572650044697374 *7269627574696f6e7a6953657475705f436c65616e436d645f7374617469635f656e7472790044 *6973747269627574696f6e7a6953696d706c657a695574696c735f72617753797374656d506174 *685f656e74727900626c6f636b65645f71756575655f686400446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f657874656e73696f6e735f636c6f737572650047 *48437a69494f426173655f7a647773686f777350726563345f636c6f73757265004748437a6949 *6e745f7a64646d6d696e5f656e747279004748437a69494f426173655f62696e64494f5f696e66 *6f004748437a694e756d5f7a675f696e666f004748437a694c6973745f64726f707a685f696e66 *6f004748437a69494f426173655f615f696e666f004748437a69456e756d5f656674496e744642 *5f696e666f00446973747269627574696f6e7a6956657273696f6e5f4c6174657256657273696f *6e5f636f6e5f656e74727900546578747a69506172736572436f6d62696e61746f72737a695265 *6164505f46696e616c5f636f6e5f696e666f004748437a69494f5f77726974654c696e6573315f *656e747279004748437a6948616e646c655f6c766c345f696e666f007374675f67635f67656e5f *696e666f004748437a69576f72645f7a644c723943366c766c31315f656e747279004748437a69 *456e756d5f5a4344456e756d5f7374617469635f696e666f00546578747a695072657474795072 *696e747a69487567686573504a5f7a644c72346863676f335f636c6f73757265004748437a6945 *6e756d5f676f7a7575707a75696e747a756c6973745f656e74727900446973747269627574696f *6e7a6953657475705f556e7265676973746572436d645f7374617469635f656e74727900546578 *747a69526561647a694c65785f7a644c723579686c766c36335f636c6f7375726500466f726569 *676e7a6953746f7261626c655f706f6c797a7573697a7a654f66325f656e747279004748437a69 *48616e646c655f6c766c37325f696e666f005f5f737467696e69745f4748437a69556e69636f64 *655f0053797374656d7a69506f7369787a6946696c65735f7468726f774572726e6f49664d696e *7573317a75315f636c6f7375726500446973747269627574696f6e7a6953696d706c657a695574 *696c735f636f707946696c65566572626f73655f696e666f00446973747269627574696f6e7a69 *5061636b6167654465736372697074696f6e5f636f707972696768745f696e666f004748437a69 *4572725f7a644c723130356c766c335f696e666f00446973747269627574696f6e7a69436f6d70 *61747a6946696c65506174685f646c6c457874656e73696f6e5f636c6f73757265004469737472 *69627574696f6e7a69436f6d7061747a6952656164505f6761746865725f656e74727900474843 *7a694572725f6c766c385f636c6f73757265004748437a694c6973745f7a6477627265616b5f69 *6e666f00446973747269627574696f6e7a695061636b6167654465736372697074696f6e5f4578 *6563757461626c655f636c6f73757265004748437a694c6973745f6c6173745f636c6f73757265 *004748437a695265616c5f61365f656e747279004748437a69496e745f7a64646d656e756d4672 *6f6d546f5f696e666f00546578747a695072657474795072696e747a69487567686573504a5f42 *65736964655f636f6e5f656e74727900436f6e74726f6c7a694d6f6e61645f6c6966744d5f636c *6f7375726500446973747269627574696f6e7a6953657475705f48656c70466c61675f636c6f73 *757265004748437a69494f5f7a644c72444a685075746342756666657265645f636c6f73757265 *004748437a694c6973745f696e69745f696e666f00446973747269627574696f6e7a6956657273 *696f6e5f56657273696f6e5f636f6e5f656e74727900546578747a69526561647a694c65785f7a *644c72357a7a7264735f636c6f7375726500446973747269627574696f6e7a6953657475705f7a *64664571466c61675f737274004748437a694e756d5f7a64776469764d6f64496e74656765725f *696e666f004748437a695265616c5f6131305f696e666f00446973747269627574696f6e7a6953 *657475705f496e73745072656669785f7374617469635f696e666f007374675f424c41434b484f *4c455f42515f696e666f00546578747a69526561647a694c65785f7a644c723577526c766c3431 *5f696e666f004748437a69494f5f6c766c365f696e666f004748437a6953686f775f7a64737a64 *646d73686f774c697374325f696e666f0053797374656d7a69456e7669726f6e6d656e745f6765 *7450726f674e616d655f656e74727900446973747269627574696f6e7a6953657475705f636f6d *70696c6572506174685f656e7472790053797374656d7a69494f5f685075745374724c6e5f696e *666f004748437a6953686f775f6131385f656e747279004748437a69494f426173655f6c766c32 *305f636c6f73757265004748437a69494f426173655f4572726f7243616c6c5f636f6e5f696e66 *6f007570646174655468726561644c6162656c00446973747269627574696f6e7a694c6963656e *73655f425344335f636c6f73757265004748437a69494f426173655f436c6f73656448616e646c *655f7374617469635f656e74727900446973747269627574696f6e7a695061636b616765446573 *6372697074696f6e5f65787472614c6962735f656e747279006177616974557365725369676e61 *6c7300546578747a69526561647a694c65785f7a644c7235764a6134355f636c6f737572650047 *48437a69496e745f746f526174696f6e616c325f636c6f73757265004748437a695074725f6e75 *6c6c5074725f636c6f73757265004748437a6948616e646c655f6132385f636c6f737572650047 *48437a69426173655f7a64646d7a6c7a655f636c6f7375726500446973747269627574696f6e7a *6953657475705f5072656669785f7374617469635f696e666f00546578747a6950726574747950 *72696e747a69487567686573504a5f7365705f636c6f73757265004748437a69546f7048616e64 *6c65725f64735f736c6f7700446174617a695479706561626c655f4b657950725f737461746963 *5f696e666f00546578747a69526561647a694c65785f7a644c723576446134345f656e74727900 *446174617a694d617962655f66726f6d4a7573745f696e666f00446973747269627574696f6e7a *694765744f70745f7a646766726f6d4172674f726465725f636c6f7375726500546578747a6950 *6172736572436f6d62696e61746f72737a6952656164505f72657475726e315f636c6f73757265 *007274735f6d6b507472004748437a694c6973745f7a644c723272776c766c31385f636c6f7375 *7265004748437a69494f426173655f6132315f656e747279004748437a69426173655f4f726465 *72696e675f636c6f737572655f74626c00466f726569676e7a69437a694572726f725f7468726f *774572726e6f5f656e747279007374675f4d55545f434f4e535f696e666f004469737472696275 *74696f6e7a69457874656e73696f6e5f4578697374656e7469616c5175616e7469666963617469 *6f6e5f636c6f7375726500546578747a69506172736572436f6d62696e61746f72737a69526561 *64505f7a644c723174656c766c5f656e7472790053797374656d7a694469726563746f72795f64 *6f65734469726563746f727945786973745f696e666f004748437a69494f426173655f57726974 *6548616e646c655f636c6f7375726500546578747a69506172736572436f6d62696e61746f7273 *7a6952656164507265635f72657475726e5f636c6f7375726500446973747269627574696f6e7a *695061636b6167654465736372697074696f6e5f73796e6f707369735f656e747279004748437a *6953686f775f6133345f656e747279004748437a69494f426173655f5265736f75726365457868 *6175737465645f7374617469635f696e666f00446973747269627574696f6e7a6953657475705f *7a64664571466c61675f656e74727900676364496e74656765727a685f66617374004748437a69 *53686f775f6c766c315f636c6f73757265004748437a6953686f775f6136365f656e7472790047 *48437a69526561645f6c766c31345f656e7472790053797374656d7a694469726563746f72795f *7a6477676f5f696e666f004748437a69494f426173655f62696e64494f5f636c6f73757265005f *5f676d707a5f737562004748437a69494f426173655f4275666665724c6973744e696c5f737461 *7469635f656e747279007374675f73656c5f31355f6e6f7570645f656e747279004748437a6949 *6e745f6d6f64325f696e666f00546578747a69526561647a694c65785f6137305f696e666f0047 *48437a69496e745f7a64646d656e756d46726f6d546f5f656e7472790044697374726962757469 *6f6e7a69436f6d7061747a6952656164505f736b69704d616e795f737274006d6f76655f54534f *004748437a69426173655f7a64737a64646d6d696e5f656e74727900446973747269627574696f *6e7a69457874656e73696f6e5f657874656e73696f6e73546f48756773466c61675f696e666f00 *446973747269627574696f6e7a69436f6d7061747a6952656164505f7a64664d6f6e6164506172 *7365725f696e666f005a434d61696e5f6d61696e5f656e747279005f5f676d6f6e5f7374617274 *5f5f007374675f73656c5f385f6e6f7570645f696e666f004748437a69494f426173655f577269 *74654d6f64655f7374617469635f696e666f004748437a694c6973745f7a644c723271556c766c *385f696e666f004748437a69466f726569676e5074725f4d616c6c6f635074725f737461746963 *5f656e74727900446973747269627574696f6e7a6950617273655574696c735f6d794572726f72 *5f656e747279006c646578704040474c4942435f322e3000546578747a69526561647a694c6578 *5f7a644c723541726c766c3132305f636c6f73757265004748437a69576f72645f57387a685f73 *74617469635f656e747279004748437a695074725f46756e5074725f636f6e5f656e7472790044 *6973747269627574696f6e7a6950617273655574696c735f7a646653686f775061727365526573 *756c745f636c6f73757265004748437a69456e756d5f65666474496e7446425f656e7472790044 *6973747269627574696f6e7a695061636b6167654465736372697074696f6e5f6f746865724d6f *64756c65735f636c6f73757265004748437a69494f426173655f50726f746f636f6c4572726f72 *5f7374617469635f696e666f004748437a694c6973745f64726f705f636c6f7375726500446973 *747269627574696f6e7a6953696d706c657a695574696c735f72617753797374656d5061746845 *7869745f737274004748437a6948616e646c655f696f657a75454f465f696e666f004748437a69 *494f426173655f68614f74686572536964655f656e747279004748437a69426173655f74696d65 *73496e745f656e7472790053797374656d7a69506f7369787a6954797065735f7a646653686f77 *434d6f64655f636c6f73757265004748437a69494f426173655f45786974537563636573735f73 *74617469635f696e666f0053797374656d7a69506f7369787a69496e7465726e616c735f7a6477 *6363616c6c32355f736c6f770053797374656d7a69506f7369787a69496e7465726e616c735f7a *64776363616c6c37375f696e666f00466f726569676e7a69437a694572726f725f7a6477636361 *6c6c325f656e747279004748437a694c6973745f706f6c797a757265765f696e666f005f5f7374 *67696e69745f446174617a69426974735f004748437a6953686f775f6131395f636c6f73757265 *004748437a69494f426173655f6c766c32345f656e747279004748437a694c6973745f74616b65 *7a75756e736166657a7555496e745f636c6f73757265004748437a69466f726569676e5074725f *4d616c6c6f635074725f636f6e5f696e666f00446973747269627574696f6e7a69436f6d706174 *7a6952656164505f4c6f6f6b5f636f6e5f656e747279005f5f737467696e69745f446973747269 *627574696f6e7a6950617273655574696c735f00 newhex * rmfile ./tests/HSQL/setup hunk ./GNUmakefile 100 - ghc -main-is Distribution.ModuleTest.main $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:tests/HUnit-1.0/src Distribution/ModuleTest -o moduleTest + ghc $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest hunk ./tests/ModuleTest.hs 43 -module Distribution.ModuleTest where +module Main where hunk ./tests/HSQL/build/Database/HSQL/Types.hs.tmp 1 -# 1 "build/Database/HSQL/Types.hs" -# 1 "" -# 1 "" -# 1 "build/Database/HSQL/Types.hs" --- #hide -module Database.HSQL.Types where - -import Control.Concurrent.MVar -import Data.Dynamic -import Foreign.C - -type FieldDef = (String, SqlType, Bool) - -data SqlType - = SqlChar Int -- ODBC, MySQL, PostgreSQL - | SqlVarChar Int -- ODBC, MySQL, PostgreSQL - | SqlLongVarChar Int -- ODBC - | SqlText -- , , PostgreSQL - | SqlWChar Int -- ODBC - | SqlWVarChar Int -- ODBC - | SqlWLongVarChar Int -- ODBC - | SqlDecimal Int Int -- ODBC - | SqlNumeric Int Int -- ODBC, MySQL, PostgreSQL - | SqlSmallInt -- ODBC, MySQL, PostgreSQL - | SqlMedInt -- , MySQL - | SqlInteger -- ODBC, MySQL, PostgreSQL - | SqlReal -- ODBC, MySQL, PostgreSQL - | SqlFloat -- ODBC - | SqlDouble -- ODBC, MySQL, PostgreSQL - | SqlBit -- ODBC, , PostgreSQL - | SqlTinyInt -- ODBC, MySQL, PostgreSQL - | SqlBigInt -- ODBC, MySQL, PostgreSQL - | SqlBinary Int -- ODBC, , PostgreSQL - | SqlVarBinary Int -- ODBC, , PostgreSQL - | SqlLongVarBinary Int -- ODBC - | SqlDate -- ODBC, MySQL, PostgreSQL - | SqlTime -- ODBC, MySQL, PostgreSQL - | SqlTimeTZ -- , , PostgreSQL - | SqlAbsTime -- , , PostgreSQL - | SqlRelTime -- , , PostgreSQL - | SqlTimeInterval -- , , PostgreSQL - | SqlAbsTimeInterval -- , , PostgreSQL - | SqlTimeStamp -- ODBC, MySQL - | SqlDateTime -- , MySQL - | SqlDateTimeTZ -- , MySQL, PostgreSQL - | SqlYear -- , MySQL - | SqlSET -- , MySQL - | SqlENUM -- , MySQL - | SqlBLOB -- , MySQL - | SqlMoney -- , , PostgreSQL - | SqlINetAddr -- , , PostgreSQL - | SqlCIDRAddr -- , , PostgreSQL - | SqlMacAddr -- , , PostgreSQL - | SqlPoint -- , , PostgreSQL - | SqlLSeg -- , , PostgreSQL - | SqlPath -- , , PostgreSQL - | SqlBox -- , , PostgreSQL - | SqlPolygon -- , , PostgreSQL - | SqlLine -- , , PostgreSQL - | SqlCircle -- , , PostgreSQL - | SqlUnknown Int -- ^ HSQL returns @SqlUnknown tp@ for all - -- columns for which it cannot determine - -- the right type. The @tp@ here is the - -- internal type code returned from the - -- backend library - deriving (Eq, Show) - -data SqlError - = SqlError - { seState :: String - , seNativeError :: Int - , seErrorMsg :: String - } - | SqlNoData - | SqlInvalidHandle - | SqlStillExecuting - | SqlNeedData - | SqlBadTypeCast - { seFieldName :: String - , seFieldType :: SqlType - } - | SqlFetchNull - { seFieldName :: String - } - | SqlUnknownField - { seFieldName :: String - } - | SqlUnsupportedOperation - | SqlClosedHandle - -sqlErrorTc :: TyCon -sqlErrorTc = mkTyCon "Database.HSQL.SqlError" - -instance Typeable SqlError where - typeOf _ = mkAppTy sqlErrorTc [] - -instance Show SqlError where - showsPrec _ (SqlError{seErrorMsg=msg}) = showString msg - showsPrec _ SqlNoData = showString "No data" - showsPrec _ SqlInvalidHandle = showString "Invalid handle" - showsPrec _ SqlStillExecuting = showString "Stlll executing" - showsPrec _ SqlNeedData = showString "Need data" - showsPrec _ (SqlBadTypeCast name tp) = showString ("The type of " ++ name ++ " field can't be converted to " ++ show tp ++ " type") - showsPrec _ (SqlFetchNull name) = showString ("The value of " ++ name ++ " field is null") - showsPrec _ (SqlUnknownField name) = showString ("Unknown field name: " ++ name) - showsPrec _ SqlUnsupportedOperation = showString "Unsupported operation" - showsPrec _ SqlClosedHandle = showString "The referenced handle is already closed" - --- | A 'Connection' type represents a connection to a database, through which you can operate on the it. --- In order to create the connection you need to use the @connect@ function from the module for --- your prefered backend. -data Connection - = Connection - { connDisconnect :: IO () - , connExecute :: String -> IO () - , connQuery :: String -> IO Statement - , connTables :: IO [String] - , connDescribe :: String -> IO [FieldDef] - , connBeginTransaction :: IO () - , connCommitTransaction :: IO () - , connRollbackTransaction :: IO () - , connClosed :: MVar Bool - } - --- | The 'Statement' type represents a result from the execution of given SQL query. -data Statement - = Statement - { stmtConn :: Connection - , stmtClose :: IO () - , stmtFetch :: IO Bool - , stmtGetCol :: forall a . Int -> FieldDef -> (SqlType -> CString -> Int -> IO (Maybe a)) -> IO (Maybe a) - , stmtFields :: [FieldDef] - , stmtClosed :: MVar Bool - } - - -class SqlBind a where - -- This allows for faster conversion for eq. integral numeric types, etc. - -- Default version uses fromSqlValue. - fromNonNullSqlCStringLen :: SqlType -> CString -> Int -> IO (Maybe a) - fromNonNullSqlCStringLen sqlType cstr cstrLen = do - str <- peekCStringLen (cstr, cstrLen) - return (fromSqlValue sqlType str) - - fromSqlValue :: SqlType -> String -> Maybe a - toSqlValue :: a -> String rmfile ./tests/HSQL/build/Database/HSQL/Types.hs.tmp rmdir ./tests/HSQL/build/Database/HSQL hunk ./tests/HSQL/build/Database/HSQL.hs.tmp 1 -# 1 "build/Database/HSQL.hs" -# 1 "" -# 1 "" -# 1 "build/Database/HSQL.hs" -{-# OPTIONS -#include #-} -{-# LINE 1 "HSQL.hsc" #-} ------------------------------------------------------------------------------------------ -{-# LINE 2 "HSQL.hsc" #-} -{-| Module : Database.HSQL.ODBC - Copyright : (c) Krasimir Angelov 2003 - License : BSD-style - - Maintainer : ka2_mail@yahoo.com - Stability : provisional - Portability : portable - - The module provides an abstract database interface --} ------------------------------------------------------------------------------------------ - -module Database.HSQL - ( - -- * Connect\/Disconnect - Connection - , disconnect -- :: Connection -> IO () - - -- * Command Execution Functions - -- | Once a connection to a database has been successfully established, - -- the functions described here are used to perform SQL queries and commands. - , execute -- :: Connection -> String -> IO () - , Statement - , query -- :: Connection -> String -> IO Statement - , closeStatement -- :: Statement -> IO () - , fetch -- :: Statement -> IO Bool - - -- * Retrieving Statement values and types - , FieldDef, SqlType(..), SqlBind, toSqlValue - , getFieldValueMB -- :: SqlBind a => Statement -> String -> IO (Maybe a) - , getFieldValue -- :: SqlBind a => Statement -> String -> IO a - , getFieldValue' -- :: SqlBind a => Statement -> String -> a -> IO a - , getFieldValueType -- :: Statement -> String -> (SqlType, Bool) - , getFieldsTypes -- :: Statement -> [(String, SqlType, Bool)] - - -- * Transactions - , inTransaction -- :: Connection -> (Connection -> IO a) -> IO a - - - -- * SQL Exceptions handling - , SqlError(..) - , catchSql -- :: IO a -> (SqlError -> IO a) -> IO a - , handleSql -- :: (SqlError -> IO a) -> IO a -> IO a - , sqlExceptions -- :: Exception -> Maybe SqlError - - -- * Utilities - , forEachRow -- :: (Statement -> s -> IO s) -- ^ an action - , forEachRow' -- :: (Statement -> IO ()) -> Statement -> IO () - , collectRows -- :: (Statement -> IO a) -> Statement -> IO [a] - - -- * Metadata - , tables -- :: Connection -> IO [String] - , describe -- :: Connection -> String -> IO [FieldDef] - - -- * Extra types - , Point(..), Line(..), Path(..), Box(..), Circle(..), Polygon(..) - ) where - -import Prelude hiding (catch) -import Foreign -import Foreign.C -import Data.Int -import Data.Char -import Data.Dynamic -import System.Time -import System.IO.Unsafe(unsafePerformIO) -import Control.Monad(when,unless,mplus) -import Control.Exception (throwDyn, catchDyn, dynExceptions, Exception(..), finally, catch, throwIO) -import Control.Concurrent.MVar -import Text.ParserCombinators.ReadP -import Text.Read -import Text.Read.Lex -import Numeric -import Database.HSQL.Types - - -{-# LINE 78 "HSQL.hsc" #-} - ------------------------------------------------------------------------------------------ --- routines for exception handling ------------------------------------------------------------------------------------------ - -catchSql :: IO a -> (SqlError -> IO a) -> IO a -catchSql = catchDyn - -handleSql :: (SqlError -> IO a) -> IO a -> IO a -handleSql h f = catchDyn f h - -sqlExceptions :: Exception -> Maybe SqlError -sqlExceptions e = dynExceptions e >>= fromDynamic - -checkHandle :: MVar Bool -> IO a -> IO a -checkHandle ref action = - withMVar ref (\closed -> when closed (throwDyn SqlClosedHandle) >> action) - -closeHandle :: MVar Bool -> IO () -> IO () -closeHandle ref action = - modifyMVar_ ref (\closed -> unless closed action >> return True) - ------------------------------------------------------------------------------------------ --- Operations on the connection ------------------------------------------------------------------------------------------ - --- | Closes the connection. Performing 'disconnect' on a connection that has already been --- closed has no effect. All other operations on a closed connection will fail. -disconnect :: Connection -> IO () -disconnect conn = closeHandle (connClosed conn) (connDisconnect conn) - --- | Submits a command to the database. -execute :: Connection -- ^ the database connection - -> String -- ^ the text of SQL command - -> IO () -execute conn query = checkHandle (connClosed conn) (connExecute conn query) - --- | Executes a query and returns a result set -query :: Connection -- ^ the database connection - -> String -- ^ the text of SQL query - -> IO Statement -- ^ the associated statement. Must be closed with - -- the 'closeStatement' function -query conn query = checkHandle (connClosed conn) (connQuery conn query) - - --- | List all tables in the database. -tables :: Connection -- ^ Database connection - -> IO [String] -- ^ The names of all tables in the database. -tables conn = checkHandle (connClosed conn) (connTables conn) - --- | List all columns in a table along with their types and @nullable@ flags -describe :: Connection -- ^ Database connection - -> String -- ^ Name of a database table - -> IO [FieldDef] -- ^ The list of fields in the table -describe conn table = checkHandle (connClosed conn) (connDescribe conn table) - ------------------------------------------------------------------------------------------ --- transactions ------------------------------------------------------------------------------------------ - --- | The 'inTransaction' function executes the specified action in transaction mode. --- If the action completes successfully then the transaction will be commited. --- If the action completes with an exception then the transaction will be rolled back --- and the exception will be throw again. -inTransaction :: Connection - -> (Connection -> IO a) -- ^ an action - -> IO a -- ^ the returned value is the result returned from action -inTransaction conn action = do - checkHandle (connClosed conn) (connBeginTransaction conn) - r <- catch (action conn) (\err -> do - checkHandle (connClosed conn) (connRollbackTransaction conn) - throwIO err) - checkHandle (connClosed conn) (connCommitTransaction conn) - return r - ------------------------------------------------------------------------------------------ --- Operations on the statements ------------------------------------------------------------------------------------------ - --- | 'fetch' fetches the next rowset of data from the result set. --- The values from columns can be retrieved with 'getFieldValue' function. -fetch :: Statement -> IO Bool -fetch stmt = checkHandle (stmtClosed stmt) (stmtFetch stmt) - --- | 'closeStatement' stops processing associated with a specific statement, closes any open cursors --- associated with the statement, discards pending results, and frees all resources associated with --- the statement. Performing 'closeStatement' on a statement that has already been --- closed has no effect. All other operations on a closed statement will fail. -closeStatement :: Statement -> IO () -closeStatement stmt = closeHandle (stmtClosed stmt) (stmtClose stmt) - --- | Returns the type and the @nullable@ flag for field with specified name -getFieldValueType :: Statement -> String -> (SqlType, Bool) -getFieldValueType stmt name = (sqlType, nullable) - where - (sqlType,nullable,colNumber) = findFieldInfo name (stmtFields stmt) 0 - --- | Returns the list of fields with their types and @nullable@ flags -getFieldsTypes :: Statement -> [(String, SqlType, Bool)] -getFieldsTypes stmt = stmtFields stmt - -findFieldInfo :: String -> [FieldDef] -> Int -> (SqlType,Bool,Int) -findFieldInfo name [] colNumber = throwDyn (SqlUnknownField name) -findFieldInfo name (fieldDef@(name',sqlType,nullable):fields) colNumber - | name == name' = (sqlType,nullable,colNumber) - | otherwise = findFieldInfo name fields $! (colNumber+1) - ------------------------------------------------------------------------------------------ --- binding ------------------------------------------------------------------------------------------ - -foreign import ccall "stdlib.h atoi" c_atoi :: CString -> IO Int - -{-# LINE 193 "HSQL.hsc" #-} -foreign import ccall "stdlib.h strtoll" c_strtoll :: CString -> Ptr CString -> Int -> IO Int64 - -{-# LINE 195 "HSQL.hsc" #-} - -instance SqlBind Int where - fromNonNullSqlCStringLen sqlType cstr cstrLen = do - if sqlType==SqlInteger || sqlType==SqlMedInt - || sqlType==SqlTinyInt || sqlType==SqlSmallInt - || sqlType==SqlBigInt - then do - val <- c_atoi cstr - return (Just val) - else - return Nothing - - fromSqlValue SqlInteger s = Just (read s) - fromSqlValue SqlMedInt s = Just (read s) - fromSqlValue SqlTinyInt s = Just (read s) - fromSqlValue SqlSmallInt s = Just (read s) - fromSqlValue SqlBigInt s = Just (read s) - fromSqlValue _ _ = Nothing - - toSqlValue s = show s - -instance SqlBind Int64 where - fromNonNullSqlCStringLen sqlType cstr cstrLen = do - if sqlType==SqlInteger || sqlType==SqlMedInt - || sqlType==SqlTinyInt || sqlType==SqlSmallInt || sqlType==SqlBigInt - then do - -{-# LINE 224 "HSQL.hsc" #-} - val <- c_strtoll cstr nullPtr 10 - -{-# LINE 226 "HSQL.hsc" #-} - return (Just val) - else - return Nothing - - fromSqlValue SqlInteger s = Just (read s) - fromSqlValue SqlMedInt s = Just (read s) - fromSqlValue SqlTinyInt s = Just (read s) - fromSqlValue SqlSmallInt s = Just (read s) - fromSqlValue SqlBigInt s = Just (read s) - fromSqlValue _ s = Nothing - - toSqlValue val = show val - -instance SqlBind Integer where - fromSqlValue SqlInteger s = Just (read s) - fromSqlValue SqlMedInt s = Just (read s) - fromSqlValue SqlTinyInt s = Just (read s) - fromSqlValue SqlSmallInt s = Just (read s) - fromSqlValue SqlBigInt s = Just (read s) - fromSqlValue _ _ = Nothing - - toSqlValue s = show s -instance SqlBind String where - fromSqlValue _ = Just - - toSqlValue s = '\'' : foldr mapChar "'" s - where - mapChar '\\' s = '\\':'\\':s - mapChar '\'' s = '\\':'\'':s - mapChar '\n' s = '\\':'n' :s - mapChar '\r' s = '\\':'r' :s - mapChar '\t' s = '\\':'t' :s - mapChar '\NUL' s = '\\':'0' :s - mapChar c s = c :s - -instance SqlBind Bool where - fromSqlValue SqlBit s = Just (s == "t") - fromSqlValue _ _ = Nothing - - toSqlValue True = "'t'" - toSqlValue False = "'f'" - -instance SqlBind Double where - fromSqlValue (SqlDecimal _ _) s = Just (read s) - fromSqlValue (SqlNumeric _ _) s = Just (read s) - fromSqlValue SqlDouble s = Just (read s) - fromSqlValue SqlReal s = Just (read s) - fromSqlValue SqlFloat s = Just (read s) - fromSqlValue _ _ = Nothing - - toSqlValue d = show d - -mkClockTime :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> ClockTime -mkClockTime year mon mday hour min sec tz = - unsafePerformIO $ do - allocaBytes (44) $ \ p_tm -> do -{-# LINE 282 "HSQL.hsc" #-} - ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) p_tm (fromIntegral sec :: CInt) -{-# LINE 283 "HSQL.hsc" #-} - ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) p_tm (fromIntegral min :: CInt) -{-# LINE 284 "HSQL.hsc" #-} - ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) p_tm (fromIntegral hour :: CInt) -{-# LINE 285 "HSQL.hsc" #-} - ((\hsc_ptr -> pokeByteOff hsc_ptr 12)) p_tm (fromIntegral mday :: CInt) -{-# LINE 286 "HSQL.hsc" #-} - ((\hsc_ptr -> pokeByteOff hsc_ptr 16)) p_tm (fromIntegral (mon-1) :: CInt) -{-# LINE 287 "HSQL.hsc" #-} - ((\hsc_ptr -> pokeByteOff hsc_ptr 20)) p_tm (fromIntegral (year-1900) :: CInt) -{-# LINE 288 "HSQL.hsc" #-} - ((\hsc_ptr -> pokeByteOff hsc_ptr 32)) p_tm (-1 :: CInt) -{-# LINE 289 "HSQL.hsc" #-} - t <- mktime p_tm - return (TOD (fromIntegral t + fromIntegral (tz-currTZ)) 0) -foreign import ccall unsafe mktime :: Ptr () -> IO CTime - -{-# NOINLINE currTZ #-} -currTZ :: Int -currTZ = ctTZ (unsafePerformIO (getClockTime >>= toCalendarTime)) -- Hack - -parseTZ :: ReadP Int -parseTZ = (char '+' >> readDecP) `mplus` (char '-' >> fmap negate readDecP) - -f_read :: ReadP a -> String -> Maybe a -f_read f s = case readP_to_S f s of {[(x,_)] -> Just x} - -instance SqlBind ClockTime where - fromSqlValue SqlTimeTZ s = f_read getTimeTZ s - where - getTimeTZ :: ReadP ClockTime - getTimeTZ = do - hour <- readDecP - char ':' - minutes <- readDecP - char ':' - seconds <- readDecP - (char '.' >> readDecP) `mplus` (return 0) - tz <- parseTZ - return (mkClockTime 1970 1 1 hour minutes seconds (tz*3600)) - - fromSqlValue SqlTime s = f_read getTime s - where - getTime :: ReadP ClockTime - getTime = do - hour <- readDecP - char ':' - minutes <- readDecP - char ':' - seconds <- readDecP - return (mkClockTime 1970 1 1 hour minutes seconds currTZ) - - fromSqlValue SqlDate s = f_read getDate s - where - getDate :: ReadP ClockTime - getDate = do - year <- readDecP - char '-' - month <- readDecP - char '-' - day <- readDecP - return (mkClockTime year month day 0 0 0 currTZ) - - fromSqlValue SqlDateTimeTZ s = f_read getDateTimeTZ s - where - getDateTimeTZ :: ReadP ClockTime - getDateTimeTZ = do - year <- readDecP - char '-' - month <- readDecP - char '-' - day <- readDecP - skipSpaces - hour <- readDecP - char ':' - minutes <- readDecP - char ':' - seconds <- readDecP - char '.' >> readDecP -- ) `mplus` (return 0) - tz <- parseTZ - return (mkClockTime year month day hour minutes seconds (tz*3600)) - - fromSqlValue SqlDateTime s = f_read getDateTime s - where - getDateTime :: ReadP ClockTime - getDateTime = do - year <- readDecP - char '-' - month <- readDecP - char '-' - day <- readDecP - skipSpaces - hour <- readDecP - char ':' - minutes <- readDecP - char ':' - seconds <- readDecP - return (mkClockTime year month day hour minutes seconds currTZ) - - fromSqlValue SqlTimeStamp s = - let - [year,month,day,hour,minutes,seconds] = parts [4,2,2,2,2,2] s - - parts [] xs = [] - parts (ix:ixs) xs = part ix 0 xs - where - part 0 n xs = n : parts ixs xs - part k n (x:xs) = part (k-1) (n*10 + (ord x - ord '0')) xs - in - Just (mkClockTime year month day hour minutes seconds currTZ) - - fromSqlValue _ _ = Nothing - - toSqlValue ct = '\'' : (shows (ctYear t) . - score . - shows (ctMonth t) . - score . - shows (ctDay t) . - space . - shows (ctHour t) . - colon . - shows (ctMin t) . - colon . - shows (ctSec t)) "'" - where - t = toUTCTime ct - score = showChar '-' - space = showChar ' ' - colon = showChar ':' - -data Point = Point Double Double deriving (Eq, Show) -data Line = Line Point Point deriving (Eq, Show) -data Path = OpenPath [Point] | ClosedPath [Point] deriving (Eq, Show) -data Box = Box Double Double Double Double deriving (Eq, Show) -data Circle = Circle Point Double deriving (Eq, Show) -data Polygon = Polygon [Point] deriving (Eq, Show) - -instance SqlBind Point where - fromSqlValue SqlPoint s = case read s of - (x,y) -> Just (Point x y) - fromSqlValue _ _ = Nothing - - toSqlValue (Point x y) = '\'' : shows (x,y) "'" - -instance SqlBind Line where - fromSqlValue SqlLSeg s = case read s of - [(x1,y1),(x2,y2)] -> Just (Line (Point x1 y1) (Point x2 y2)) - fromSqlValue _ _ = Nothing - - toSqlValue (Line (Point x1 y1) (Point x2 y2)) = '\'' : shows [(x1,y1),(x2,y2)] "'" - -instance SqlBind Path where - fromSqlValue SqlPath ('(':s) = case read ("["++init s++"]") of -- closed path - ps -> Just (ClosedPath (map (\(x,y) -> Point x y) ps)) - fromSqlValue SqlPath s = case read s of -- closed path -- open path - ps -> Just (OpenPath (map (\(x,y) -> Point x y) ps)) - fromSqlValue SqlLSeg s = case read s of - [(x1,y1),(x2,y2)] -> Just (OpenPath [(Point x1 y1), (Point x2 y2)]) - fromSqlValue SqlPoint s = case read s of - (x,y) -> Just (ClosedPath [Point x y]) - fromSqlValue _ _ = Nothing - - toSqlValue (OpenPath ps) = '\'' : shows ps "'" - toSqlValue (ClosedPath ps) = "'(" ++ init (tail (show ps)) ++ "')" - -instance SqlBind Box where - fromSqlValue SqlBox s = case read ("("++s++")") of - ((x1,y1),(x2,y2)) -> Just (Box x1 y1 x2 y2) - fromSqlValue _ _ = Nothing - - toSqlValue (Box x1 y1 x2 y2) = '\'' : shows ((x1,y1),(x2,y2)) "'" - -instance SqlBind Polygon where - fromSqlValue SqlPolygon s = case read ("["++init (tail s)++"]") of - ps -> Just (Polygon (map (\(x,y) -> Point x y) ps)) - fromSqlValue _ _ = Nothing - - toSqlValue (Polygon ps) = "'(" ++ init (tail (show ps)) ++ "')" - -instance SqlBind Circle where - fromSqlValue SqlCircle s = case read ("("++init (tail s)++")") of - ((x,y),r) -> Just (Circle (Point x y) r) - fromSqlValue _ _ = Nothing - - toSqlValue (Circle (Point x y) r) = "'<" ++ show (x,y) ++ "," ++ show r ++ "'>" - -data INetAddr = INetAddr Int Int Int Int Int deriving (Eq,Show) - -instance SqlBind INetAddr where - fromSqlValue t s - | t == SqlINetAddr || t == SqlCIDRAddr = - case readNum s of - (x1,s) -> case readNum s of - (x2,s) -> case readNum s of - (x3,s) -> case readNum s of - (x4,s) -> case readNum s of - (mask,_) -> Just (INetAddr x1 x2 x3 x4 mask) - | otherwise = Nothing - where - readNum s = case readDec s of - [(x,'.':s)] -> (x,s) - [(x,'/':s)] -> (x,s) - [(x,"")] -> (x,"") - _ -> (0,"") - - toSqlValue (INetAddr x1 x2 x3 x4 mask) = '\'' : - (shows x1 . - dot . - shows x2. - dot . - shows x3 . - dot . - shows x4 . - slash . - shows mask) "'" - where - dot = showChar '.' - slash = showChar '/' - -data MacAddr = MacAddr Int Int Int Int Int Int deriving (Eq,Show) - -instance SqlBind MacAddr where - fromSqlValue SqlMacAddr s = - case readHex s of - [(x1,':':s)] -> case readHex s of - [(x2,':':s)] -> case readHex s of - [(x3,':':s)] -> case readHex s of - [(x4,':':s)] -> case readHex s of - [(x5,':':s)] -> case readHex s of - [(x6,_)] -> Just (MacAddr x1 x2 x3 x4 x5 x6) - fromSqlValue _ _ = Nothing - - toSqlValue (MacAddr x1 x2 x3 x4 x5 x6) = '\'' : - (showHex x1 . - colon . - showHex x2 . - colon . - showHex x3 . - colon . - showHex x4 . - colon . - showHex x5 . - colon . - showHex x6) "'" - where - colon = showChar ':' - showHex = showIntAtBase 16 intToDigit - --- | Retrieves the value of field with the specified name. --- The returned value is Nothing if the field value is @null@. -getFieldValueMB :: SqlBind a => Statement - -> String -- ^ Field name - -> IO (Maybe a) -- ^ Field value or Nothing -getFieldValueMB stmt name = checkHandle (stmtClosed stmt) $ - stmtGetCol stmt colNumber (name,sqlType,nullable) fromNonNullSqlCStringLen - where - (sqlType,nullable,colNumber) = findFieldInfo name (stmtFields stmt) 0 - --- | Retrieves the value of field with the specified name. --- If the field value is @null@ then the function will throw 'SqlFetchNull' exception. -getFieldValue :: SqlBind a => Statement - -> String -- ^ Field name - -> IO a -- ^ Field value -getFieldValue stmt name = do - mb_v <- getFieldValueMB stmt name - case mb_v of - Nothing -> throwDyn (SqlFetchNull name) - Just a -> return a - --- | Retrieves the value of field with the specified name. --- If the field value is @null@ then the function will return the default value. -getFieldValue' :: SqlBind a => Statement - -> String -- ^ Field name - -> a -- ^ Default field value - -> IO a -- ^ Field value -getFieldValue' stmt name def = do - mb_v <- getFieldValueMB stmt name - return (case mb_v of { Nothing -> def; Just a -> a }) - - ------------------------------------------------------------------------------------------ --- helpers ------------------------------------------------------------------------------------------ - --- | The 'forEachRow' function iterates through the result set in 'Statement' and --- executes the given action for each row in the set. The function closes the 'Statement' --- after the last row processing or if the given action raises an exception. -forEachRow :: (Statement -> s -> IO s) -- ^ an action - -> Statement -- ^ the statement - -> s -- ^ initial state - -> IO s -- ^ final state -forEachRow f stmt s = loop s `finally` closeStatement stmt - where - loop s = do - success <- fetch stmt - if success then f stmt s >>= loop else return s - --- | The 'forEachRow\'' function is analogous to 'forEachRow' but doesn't provide state. --- The function closes the 'Statement' after the last row processing or if the given --- action raises an exception. -forEachRow' :: (Statement -> IO ()) -> Statement -> IO () -forEachRow' f stmt = loop `finally` closeStatement stmt - where - loop = do - success <- fetch stmt - when success (f stmt >> loop) - --- | The 'collectRows' function iterates through the result set in 'Statement' and --- executes the given action for each row in the set. The values returned from action --- are collected and returned as list. The function closes the 'Statement' after the --- last row processing or if the given action raises an exception. -collectRows :: (Statement -> IO a) -> Statement -> IO [a] -collectRows f stmt = loop `finally` closeStatement stmt - where - loop = do - success <- fetch stmt - if success - then do - x <- f stmt - xs <- loop - return (x:xs) - else return [] rmfile ./tests/HSQL/build/Database/HSQL.hs.tmp rmdir ./tests/HSQL/build/Database rmdir ./tests/HSQL/build hunk ./tests/twoMains/.installed-pkg-config 1 -Package - {name = "test", - auto = False, - import_dirs = [",tmp/lib/test-1.0"], - source_dirs = [], - library_dirs = [",tmp/lib/test-1.0"], - hs_libraries = ["HStest-1.0"], - extra_libraries = [], - include_dirs = [], - c_includes = [], - package_deps = [], - extra_ghc_opts = [], - extra_cc_opts = [], - extra_ld_opts = [], - framework_dirs = [], - extra_frameworks = []} rmfile ./tests/twoMains/.installed-pkg-config hunk ./tests/twoMains/.setup-config 1 -LocalBuildInfo {prefix = ",tmp", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,2,2], versionTags = []}, compilerPath = "/usr/bin/ghc", compilerPkgTool = "/usr/bin/ghc-pkg"}, buildDir = "dist/build", packageDeps = [], withHaddock = Just "/usr/bin/haddock", withHappy = Just "/usr/bin/happy", withAlex = Just "/usr/bin/alex", withHsc2hs = Just "/usr/bin/hsc2hs", withCpphs = Just "/usr/local/bin/cpphs", executableDeps = [("testA",[]),("testB",[])]} + rmfile ./tests/twoMains/.setup-config hunk ./Distribution/Compat/Directory.hs 16 -import System.Directory ( findExecutable, copyFile, getHomeDirectory,createDirectoryIfMissing,removeDirectoryRecursive ) +import System.Directory hunk ./Distribution/Make.hs 61 -import Distribution.GetOpt(OptDescr) -import Control.Monad (unless) hunk ./Distribution/Make.hs 101 + showHC c = "unknown compiler: " ++ (show c) hunk ./Distribution/Make.hs 124 - BuildCmd -> do - (_, _, args) <- parseBuildArgs args [] - no_extra_flags args - retVal <- exec "make" - if (retVal == ExitSuccess) - then putStrLn "Build Succeeded." - else putStrLn "Build failed." - exitWith retVal - - CleanCmd -> do - (_, _, args) <- parseCleanArgs args [] - no_extra_flags args - retVal <- exec "make clean" - if (retVal == ExitSuccess) - then putStrLn "Clean Succeeded." - else putStrLn "Clean failed." - exitWith retVal - hunk ./Distribution/Make.hs 125 - ((mprefix,verbose), _, args) <- parseCopyArgs (mprefix,0) args [] + ((mprefix,_), _, args) <- parseCopyArgs (mprefix,0) args [] hunk ./Distribution/Make.hs 131 - ((uInst,verbose), _, args) <- parseInstallArgs (uInst,0) args [] + ((_,_), _, args) <- parseInstallArgs (uInst,0) args [] hunk ./Distribution/Make.hs 140 - SDistCmd -> do - (_, _, args) <- parseSDistArgs args [] - no_extra_flags args - retVal <- exec "make dist" - if (retVal == ExitSuccess) - then putStrLn "Sdist Succeeded." - else putStrLn "Sdist failed." - exitWith retVal hunk ./Distribution/Make.hs 141 - RegisterCmd uInst -> do - ((uInst,0), _, args) <- parseRegisterArgs (uInst,0) args [] - no_extra_flags args - retVal <- exec "make register" - if (retVal == ExitSuccess) - then putStrLn "Register Succeeded." - else putStrLn "Register failed." - exitWith retVal + BuildCmd -> basicCommand "Build" "make" (parseBuildArgs args []) hunk ./Distribution/Make.hs 143 - UnregisterCmd -> do - (_, _, args) <- parseUnregisterArgs args [] - no_extra_flags args - retVal <- exec "make unregister" - if (retVal == ExitSuccess) - then putStrLn "Unregister Succeeded." - else putStrLn "Unregister failed." - exitWith retVal + CleanCmd -> basicCommand "Clean" "make clean" (parseCleanArgs args []) + + SDistCmd -> basicCommand "SDist" "make dist" (parseSDistArgs args []) + + RegisterCmd uInst -> basicCommand "Register" "make register" + (parseRegisterArgs (uInst,0) args []) + + UnregisterCmd -> basicCommand "Unregister" "make unregister" + (parseUnregisterArgs args []) hunk ./Distribution/Make.hs 154 + +-- |convinience function for repetitions above +basicCommand :: String -- ^Command name + -> String -- ^Command command + -> (IO (b, [a], [String])) -- ^Command parser function + -> IO () +basicCommand commandName commandCommand commandParseFun = do + (_, _, args) <- commandParseFun + no_extra_flags args + retVal <- exec commandCommand + putStrLn $ commandName ++ + if (retVal == ExitSuccess) + then " Succeeded." + else " Failed." + exitWith retVal hunk ./Distribution/Make.hs 81 +HaddockCmd: We assume there is a "docs" or "doc" target +ProgramaticaCmd: We assume there is a "programatica" target hunk ./Distribution/Make.hs 142 + HaddockCmd -> do + (_, _, args) <- parseHaddockArgs args [] + no_extra_flags args + retVal <- exec "make docs" + case retVal of + ExitSuccess -> do putStrLn "Haddock Succeeded" + exitWith ExitSuccess + _ -> do retVal' <- exec "make doc" + case retVal' of + ExitSuccess -> do putStrLn "Haddock Succeeded" + exitWith ExitSuccess + _ -> do putStrLn "Haddock Failed." + exitWith retVal' hunk ./Distribution/Make.hs 167 - cmd -> do - error $ "Simple Cabal Makefile interface doesn't support command: " ++ (show cmd) + ProgramaticaCmd -> basicCommand "Programatica" "make programatica" + (parseProgramaticaArgs args []) + + HelpCmd -> exitWith ExitSuccess -- this is handled elsewhere hunk ./Distribution/Setup.hs 114 - configPrefix :: Maybe FilePath -- ^installation prefix + configPrefix :: Maybe FilePath, -- ^installation prefix + configVerbose :: Int -- ^verbosity level hunk ./Distribution/Setup.hs 129 - configPrefix = Nothing + configPrefix = Nothing, + configVerbose = 0 hunk ./Distribution/Setup.hs 133 --- |Most of these flags are for Configure, but InstPrefix is for Install. +-- |Most of these flags are for Configure, but InstPrefix is for Copy. hunk ./Distribution/Setup.hs 138 + -- For install and register: hunk ./Distribution/Setup.hs 140 - | HelpFlag - -- For install: + -- For copy: hunk ./Distribution/Setup.hs 142 + -- For everyone: + | HelpFlag hunk ./Distribution/Setup.hs 160 - cmd_help, cmd_verbose + cmd_help hunk ./Distribution/Setup.hs 191 - let syntax_line = "Usage: " ++ pname ++ " [GLOBAL FLAGS] COMMAND [FLAGS]\n\nGlobal flags:" + let syntax_line = "Usage: " ++ pname ++ " [GLOBAL FLAGS]\n or: " ++ pname ++ " COMMAND [FLAGS]\n\nGlobal flags:" hunk ./Distribution/Setup.hs 205 - let syntax_line = "Usage: " ++ pname ++ " [GLOBAL FLAGS] " ++ cmdName cmd ++ " [FLAGS]\n\nFlags for " ++ cmdName cmd ++ ":" + let syntax_line = "Usage: " ++ pname ++ " " ++ cmdName cmd ++ " [FLAGS]\n\nFlags for " ++ cmdName cmd ++ ":" hunk ./Distribution/Setup.hs 238 - cmdDescription = "This is the long description for configure.\n", -- Multi-line! - cmdOptions = [cmd_help, + cmdDescription = "", -- This can be a multi-line description + cmdOptions = [cmd_help, cmd_verbose, hunk ./Distribution/Setup.hs 288 + Verbose n -> t { configVerbose = n } hunk ./Distribution/Setup.hs 297 - cmdDescription = "This is the long description for build.\n", -- Multi-line! + cmdDescription = "", -- This can be a multi-line description hunk ./Distribution/Setup.hs 334 - cmdOptions = [cmd_help], + cmdOptions = [cmd_help, cmd_verbose], hunk ./Distribution/Setup.hs 425 - cmdDescription = "This is the long description for sdist.\n", -- Multi-line! + cmdDescription = "", -- This can be a multi-line description hunk ./Distribution/Setup.hs 437 - cmdDescription = "This is the long description for register.\n", -- Multi-line! + cmdDescription = "", -- This can be a multi-line description hunk ./Distribution/Setup.hs 475 - cmdDescription = "This is the long description for unregister.\n", -- Multi-line! + cmdDescription = "", -- This can be a multi-line description hunk ./Distribution/Simple/Build.hs 212 - let destMainFile = destDir `joinFileName` hugsMainFilename exe + let exeDir = destDir `joinFileName` exeName exe + let destMainFile = exeDir `joinFileName` hugsMainFilename exe hunk ./Distribution/Simple/Build.hs 215 - compileBuildInfo destDir (library pkg_descr >>= Just . hsSourceDir . libBuildInfo) exeMods bi + compileBuildInfo exeDir (library pkg_descr >>= Just . hsSourceDir . libBuildInfo) exeMods bi hunk ./Distribution/Simple/Install.hs 48 - hugsProgramsDir, + hugsProgramsDirs, hunk ./Distribution/Simple/Install.hs 125 --- |Install for Hugs +-- Install for Hugs +-- The library goes in /hugs/packages/ +-- Each executable goes in /hugs/programs/ +-- with a script / pointing at it. hunk ./Distribution/Simple/Install.hs 138 - let hugsInstallDir = libPref `joinFileName` "hugs" - let hugsTargetDir = targetLibPref `joinFileName` "hugs" hunk ./Distribution/Simple/Install.hs 140 - let pkgDir = hugsInstallDir `joinFileName` "packages" - `joinFileName` pkg_name - try $ removeDirectoryRecursive pkgDir - smartCopySources verbose buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes - unless (null (executables pkg_descr)) $ do - let progBuildDir = buildPref `joinFileName` "programs" - let progInstallDir = hugsInstallDir `joinFileName` "programs" - `joinFileName` pkg_name - let progTargetDir = hugsTargetDir `joinFileName` "programs" - `joinFileName` pkg_name - try $ removeDirectoryRecursive progInstallDir - smartCopySources verbose progBuildDir progInstallDir - (exeModules pkg_descr) hugsInstallSuffixes - withExe pkg_descr $ \ exe -> do - let fname = hugsMainFilename exe - let installName = progInstallDir `joinFileName` fname - copyFileVerbose verbose (progBuildDir `joinFileName` fname) installName + let pkgDir = libPref `joinFileName` "packages" + `joinFileName` pkg_name + try $ removeDirectoryRecursive pkgDir + smartCopySources verbose buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes + let progBuildDir = buildPref `joinFileName` "programs" + let progInstallDir = libPref `joinFileName` "programs" + let progTargetDir = targetLibPref `joinFileName` "programs" + withExe pkg_descr $ \ exe -> do + let buildDir = progBuildDir `joinFileName` exeName exe + let installDir = progInstallDir `joinFileName` exeName exe + let targetDir = progInstallDir `joinFileName` exeName exe + try $ removeDirectoryRecursive installDir + smartCopySources verbose buildDir installDir + (otherModules (buildInfo exe)) hugsInstallSuffixes + let fname = hugsMainFilename exe + copyFileVerbose verbose (buildDir `joinFileName` fname) + (installDir `joinFileName` fname) hunk ./Distribution/Simple/Install.hs 158 - -- FIX (HUGS): works for Unix only - let targetName = progTargetDir `joinFileName` fname - let exeFile = binPref `joinFileName` exeName exe - -- FIX (HUGS): use extensions, and options from file too? - let hugsOptions = hcOptions Hugs (options (buildInfo exe)) - let script = unlines [ - "#! /bin/sh", - unwords ("runhugs" : hugsOptions ++ [targetName, "\"$@\""])] - writeFile exeFile script - perms <- getPermissions exeFile - setPermissions exeFile perms { executable = True, readable = True } + -- FIX (HUGS): works for Unix only + let targetName = targetDir `joinFileName` fname + let exeFile = binPref `joinFileName` exeName exe + -- FIX (HUGS): use extensions, and options from file too? + let hugsOptions = hcOptions Hugs (options (buildInfo exe)) + let script = unlines [ + "#! /bin/sh", + unwords ("runhugs" : hugsOptions ++ [targetName, "\"$@\""])] + writeFile exeFile script + perms <- getPermissions exeFile + setPermissions exeFile perms { executable = True, readable = True } hunk ./Distribution/Simple/Install.hs 174 --- |Prefix for Hugs package directories +-- |Hugs library directory for a package hunk ./Distribution/Simple/Install.hs 177 - prefix lbi `joinFileName` "lib" `joinFileName` "hugs" + mkLibDir pkg_descr lbi Nothing hunk ./Distribution/Simple/Install.hs 180 --- |Prefix for Hugs program directories -hugsProgramsDir :: PackageDescription -> LocalBuildInfo -> FilePath -hugsProgramsDir pkg_descr lbi = - prefix lbi `joinFileName` "lib" `joinFileName` "hugs" - `joinFileName` "programs" `joinFileName` pkgName (package pkg_descr) +-- |Hugs program directories for a package +hugsProgramsDirs :: PackageDescription -> LocalBuildInfo -> [FilePath] +hugsProgramsDirs pkg_descr lbi = + [exeDir `joinFileName` exeName exe | + exe <- executables pkg_descr, buildable (buildInfo exe)] + where exeDir = mkLibDir pkg_descr lbi Nothing `joinFileName` "programs" hunk ./Distribution/Simple/Install.hs 191 -hugsMainFilename exe = (exeName exe ++ "-Main") `joinFileExt` ext +hugsMainFilename exe = "Main" `joinFileExt` ext hunk ./Distribution/Simple/Install.hs 199 - (fromMaybe (prefix lbi) install_prefixM) `joinFileName` + case compilerFlavor (compiler lbi) of + Hugs -> libDir `joinFileName` "hugs" + _ -> libDir `joinFileName` showPackageId (package pkg_descr) + where libDir = (fromMaybe (prefix lbi) install_prefixM) hunk ./Distribution/Simple/Install.hs 204 - "lib" `joinFileName` + `joinFileName` "lib" hunk ./Distribution/Simple/Install.hs 206 - showPackageId (package pkg_descr) hunk ./Distribution/Simple/Register.hs 67 -import Distribution.Simple.Install (hugsPackageDir, hugsProgramsDir) +import Distribution.Simple.Install (hugsPackageDir) hunk ./Distribution/Simple/Register.hs 213 - try $ removeDirectoryRecursive (hugsProgramsDir pkg_descr lbi) hunk ./Distribution/Simple.hs 209 - writeInstalledConfig pkg_descr localbuildinfo + when (hasLibs pkg_descr) $ + writeInstalledConfig pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 87 -import System.Exit(ExitCode(..), exitWith) +import System.Exit(ExitCode(..)) hunk ./Distribution/Simple.hs 144 - postUnreg :: Args -> Int -> LocalBuildInfo -> IO ExitCode + postUnreg :: Args -> Int -> LocalBuildInfo -> IO ExitCode, + + preHaddock :: Args -> Int -> IO HookedBuildInfo, + postHaddock :: Args -> Int -> LocalBuildInfo -> IO ExitCode, + + prePFE :: Args -> Int -> IO HookedBuildInfo, + postPFE :: Args -> Int -> LocalBuildInfo -> IO ExitCode + hunk ./Distribution/Simple.hs 221 - pkg_descr <- hookOrInArgs preBuild args verbose + pkg_descr <- hookOrInArgs preHaddock args verbose + localbuildinfo <- getPersistBuildConfig hunk ./Distribution/Simple.hs 252 - when (code /= ExitSuccess) (exitWith code) - return code) + postHook postHaddock args verbose localbuildinfo) hunk ./Distribution/Simple.hs 255 - pkg_descr <- hookOrInArgs preBuild args verbose + pkg_descr <- hookOrInArgs prePFE args verbose + localbuildinfo <- getPersistBuildConfig hunk ./Distribution/Simple.hs 268 - let tmpDir = joinPaths (buildDir lbi) "tmp" - mapM_ (mockPP ["-D__HUGS__"] pkg_descr bi lbi tmpDir verbose) inFiles - setupMessage "Running pfesetup for " pkg_descr - let outFiles = map (joinFileName tmpDir) - (map ((flip changeFileExt) "hs") inFiles) hunk ./Distribution/Simple.hs 269 --- (["-h", --- "-o", targetDir, --- "-t", showPkg, --- "-p", prologName] hunk ./Distribution/Simple.hs 271 - when (code /= ExitSuccess) (exitWith code) - return code) + postHook postPFE args verbose localbuildinfo) hunk ./Distribution/Simple.hs 392 - postUnreg = res + postUnreg = res, + prePFE = rn, + postPFE = res, + preHaddock = rn, + postHaddock = res hunk ./Distribution/PreProcess.hs 57 -import Control.Monad (when) +import Control.Monad (unless) hunk ./Distribution/PreProcess.hs 104 - sequence_ [preprocessModule [hsSourceDir bi] modu verbose builtinSuffixes biHandlers | - modu <- libModules pkg_descr] -- FIX: output errors? - when (not (null (executables pkg_descr))) $ + sequence_ [do retVal <- preprocessModule [hsSourceDir bi] modu + verbose builtinSuffixes biHandlers + unless (retVal == ExitSuccess) + (error $ "got error code while preprocessing: " ++ modu) + | modu <- libModules pkg_descr] + unless (null (executables pkg_descr)) $ hunk ./Distribution/PreProcess.hs 114 - sequence_ [preprocessModule ((hsSourceDir bi) - :(maybeToList (library pkg_descr >>= Just . hsSourceDir . libBuildInfo))) - modu verbose builtinSuffixes biHandlers | - modu <- otherModules bi] -- FIX: output errors? + sequence_ [do retVal <- preprocessModule ((hsSourceDir bi) + :(maybeToList (library pkg_descr + >>= Just . hsSourceDir . libBuildInfo))) + modu verbose builtinSuffixes biHandlers + unless (retVal == ExitSuccess) + (error $ "got error code while preprocessing: " ++ modu) + | modu <- otherModules bi] hunk ./Distribution/PreProcess.hs 181 - when (not (null fs)) (mapM_ removeFile hs) + unless (null fs) (mapM_ removeFile hs) hunk ./Distribution/Simple/Utils.hs 232 --- system-specific. In Unix, it's @\".\"@. FIX: What about other arches? +-- system-specific. In Unix, it's @\".\"@. hunk ./TODO 4 -* Write tests for make and hugs +* Write tests for hugs hunk ./Distribution/InstalledPackageInfo.hs 143 +noVersion :: Version hunk ./Distribution/InstalledPackageInfo.hs 151 - lines <- singleStanza inp + stLines <- singleStanza inp hunk ./Distribution/InstalledPackageInfo.hs 154 - foldM (parseBasicStanza fields) emptyInstalledPackageInfo lines + foldM (parseBasicStanza fields) emptyInstalledPackageInfo stLines hunk ./Distribution/InstalledPackageInfo.hs 169 - ppFields ((StanzaField _ get _ _):flds) = get pkg $$ ppFields flds + ppFields ((StanzaField _ get' _ _):flds) = get' pkg $$ ppFields flds hunk ./Distribution/InstalledPackageInfo.hs 175 - = case [ get | (StanzaField f get _ _) <- fields, f == field ] of + = case [ get' | (StanzaField f get' _ _) <- fields, f == field ] of hunk ./Distribution/InstalledPackageInfo.hs 177 - (get:_) -> Just (render . get) + (get':_) -> Just (render . get') hunk ./Distribution/InstalledPackageInfo.hs 182 +fields :: [StanzaField InstalledPackageInfo] hunk ./Distribution/PackageDescription.hs 101 -import HUnit (Test(..), assertBool, Assertion, runTestTT) +import HUnit (Test(..), assertBool, Assertion, runTestTT, Counts) hunk ./Distribution/PackageDescription.hs 604 +testPkgDesc :: String hunk ./Distribution/PackageDescription.hs 647 +testPkgDescAnswer :: PackageDescription hunk ./Distribution/PackageDescription.hs 744 +test :: IO Counts hunk ./Distribution/ParseUtils.hs 168 +allSpaces :: (a, String) -> Bool hunk ./Distribution/ParseUtils.hs 181 +merge :: [(a, [Char])] -> [(a, [Char])] hunk ./Distribution/ParseUtils.hs 200 - checkDuplField fld [] = return () - checkDuplField fld (x'@(n',fld',val'):xs') + checkDuplField _ [] = return () + checkDuplField fld ((n',fld',_):xs') hunk ./Distribution/ParseUtils.hs 207 -parseModuleNameQ = parseQuoted mod <++ mod - where mod = do +parseModuleNameQ = parseQuoted modu <++ modu + where modu = do hunk ./Distribution/Setup.hs 223 - (flags, cname:cargs, _, []) -> do + (_, cname:cargs, _, []) -> do hunk ./Distribution/Simple/Build.hs 236 - stubsFileLists <- sequence [moduleToFilePath [destDir] mod suffixes | - mod <- mods] + stubsFileLists <- sequence [moduleToFilePath [destDir] modu suffixes | + modu <- mods] hunk ./Distribution/Simple/Configure.hs 291 -configCompilerVersion GHC compiler = +configCompilerVersion GHC compilerPath = hunk ./Distribution/Simple/Configure.hs 293 - maybeExit $ system (compiler ++ " --version >" ++ tmp) + maybeExit $ system (compilerPath ++ " --version >" ++ tmp) hunk ./Distribution/Simple/Configure.hs 297 - _ -> die ("cannot determine version of " ++ compiler ++ ":\n " + _ -> die ("cannot determine version of " ++ compilerPath ++ ":\n " hunk ./Distribution/Simple/Configure.hs 322 -packageID = PackageIdentifier "Foo" (Version [1] []) hunk ./Distribution/Simple/Configure.hs 326 +packageID = PackageIdentifier "Foo" (Version [1] []) hunk ./Distribution/Simple/GHCPackageConfig.hs 58 +checkPermission :: (Permissions -> Bool) -> IO Bool hunk ./Distribution/Simple/Install.hs 65 - setupMessage, hasLibs, withLib, libModules, withExe, exeModules, + setupMessage, hasLibs, withLib, libModules, withExe, hunk ./Distribution/Simple/Install.hs 72 -import Control.Monad(when, unless) +import Control.Monad(when) hunk ./Distribution/Simple/Install.hs 146 - let progTargetDir = targetLibPref `joinFileName` "programs" hunk ./Distribution/Simple/Utils.hs 173 - searchModuleToPossiblePaths s suffs searchP - = moduleToPossiblePaths searchP s suffs + searchModuleToPossiblePaths s' suffs searchP + = moduleToPossiblePaths searchP s' suffs hunk ./Distribution/Simple/Utils.hs 250 - findTempName tmp_dir x + findTempName x hunk ./Distribution/Simple/Utils.hs 252 - findTempName tmp_dir x + findTempName x hunk ./Distribution/Simple/Utils.hs 256 - if b then findTempName tmp_dir (x+1) + if b then findTempName (x+1) hunk ./Distribution/Simple/Utils.hs 347 +oldDescFile :: String hunk ./Distribution/Simple/Utils.hs 349 + +cabalExt :: String hunk ./Distribution/Simple/Utils.hs 352 + +buildInfoExt :: String hunk ./Distribution/Simple/Utils.hs 360 +noDesc :: IO a hunk ./Distribution/Simple/Utils.hs 363 +multiDesc :: [String] -> IO a hunk ./GNUmakefile 2 -GHCFLAGS= --make -W -fno-warn-unused-matches -cpp +GHCFLAGS= --make -Wall -fno-warn-unused-matches -cpp hunk ./Distribution/Compat/ReadP.hs 63 + Parser, hunk ./Distribution/InstalledPackageInfo.hs 59 - StanzaField(..), singleStanza, ParseResult(..), + StanzaField(..), singleStanza, ParseResult(..), LineNo, hunk ./Distribution/InstalledPackageInfo.hs 156 +parseBasicStanza :: [StanzaField a] + -> a + -> (LineNo, String, String) + -> ParseResult a hunk ./Distribution/InstalledPackageInfo.hs 163 -parseBasicStanza [] pkg (lineNo, f, val) = return pkg - +parseBasicStanza [] pkg (_, _, _) = return pkg hunk ./Distribution/InstalledPackageInfo.hs 280 +parsePackageId' :: ReadP.Parser r Char PackageIdentifier hunk ./Distribution/Simple/Configure.hs 284 +compilerBinaryName cmp = error $ "Unsupported compiler: " ++ (show cmp) hunk ./Distribution/Simple/Configure.hs 290 +compilerPkgToolName cmp = error $ "Unsupported compiler: " ++ (show cmp) hunk ./Distribution/Simple/Configure.hs 293 -configCompilerVersion GHC compilerPath = +configCompilerVersion GHC compilerP = hunk ./Distribution/Simple/Configure.hs 295 - maybeExit $ system (compilerPath ++ " --version >" ++ tmp) + maybeExit $ system (compilerP ++ " --version >" ++ tmp) hunk ./Distribution/Simple/Configure.hs 299 - _ -> die ("cannot determine version of " ++ compilerPath ++ ":\n " + _ -> die ("cannot determine version of " ++ compilerP ++ ":\n " hunk ./Distribution/Simple/Configure.hs 303 +pCheck :: [(a, [Char])] -> [a] hunk ./Distribution/Simple/Register.hs 138 +userPkgConfErr :: String -> IO a hunk ./TODO 1 -* misc +------------------------------------------------------------ +-= 1.0 =- hunk ./TODO 4 -* Fix up sdist! +* Fix up sdist? hide sdist? bdist? +** if there's a flag, --include-preprocessed-sources (or something + better) run the preprocessing phase and include both the + unpreprocessed and the preprocessed sources in the source tarball? +** Better way to find 'tar'; is there a library? what does darcs do? + hunk ./TODO 16 -** add hooks to haddock cmd +* Decide on interface +** Which fields are required +** which Distribution.* things won't change? hunk ./TODO 20 -** make debian watchfile -** find a real test case that uses preprocessors -** unregistering the package, etc -*** --user flag to unregister +* unregistering the package, etc +** --user flag to unregister hunk ./TODO 23 -*** think about HC-PKG's role here. maybe HC-PKG should do all this - instead -*** Should "setup install" copy Setup.lhs, Setup.description, and +** think about HC-PKG's role here. maybe HC-PKG should do all this instead + +** Should "setup install" copy Setup.lhs, Setup.description, and hunk ./TODO 30 -*** Add a flag to configure to specify where to put them? +** Add a flag to configure to specify where to put them? hunk ./TODO 32 -** It would be useful to have alternatives in dependencies, e.g. HGL - could depend on X11 | Win32. +* Preprocessors +** chain of preprocessors +** what other preprocessors can't unlit? hunk ./TODO 36 -** Preprocessors -*** chain of preprocessors -*** what other preprocessors can't unlit? +* Hugs - look for "FIX (HUGS)" hunk ./TODO 38 -** Hugs -- look for "FIX (HUGS)" -- no way to tell Hugs to turn packages on or off -- no register / unregister for hugs - -** Haddock +* Haddock hunk ./TODO 53 -** for a source tarball:? -- if there's a flag, --include-preprocessed-sources (or something - better) run the preprocessing phase and include both the - unpreprocessed and the preprocessed sources in the source tarball? +* grep for "FIX" hunk ./TODO 55 -** grep for "FIX" +* Compatibility +** verify windows test suite +** verify ghc6.4 test suite hunk ./TODO 59 -** Compatibility -*** add information for compiling w/ nhc -*** add install target for nhc -*** verify windows test suite -*** Better way to find 'tar'; is there a library? what does darcs do? +* Parsing +** Allow quoting in the options fields, to allow things like + -f"something with spaces" +** Instead of freaking out on unknown fields, the parser should return + a list of those unknown fields so a warning can be printed. Or not. hunk ./TODO 65 -** Doc -*** do comments have to start in the first column? -*** clarify relationship between exposed-modules and modules, etc. -*** add preprocessor explanation (see bottom of this TODO). -*** Fix example for angela, expose Data.Set, etc, not A, B, etc.b -*** add information about executable stanzas -*** elimintate need for cpphs in haddock makefile rule. +* Doc +** do comments have to start in the first column? +** clarify relationship between exposed-modules and modules, etc. +** add preprocessor explanation (see bottom of this TODO). +** Fix example for angela, expose Data.Set, etc, not A, B, etc.b +** add information about executable stanzas +** elimintate need for cpphs in haddock makefile rule. hunk ./TODO 73 -** look carefully at "rawSystem" and error handing stuff for nhc. - -** It actually makes sense to have several libraries ("hs-packages") - in one package ("cabal-package"), look at wxhaskell for example. - - So, Library stanzas, I suppose - - ./setup build should take an optional list of build targets - (that is, library and executable names) - - The overloaded terminology is *way* confusing. Feh. -** API Versioning? Libtool-style or just a major number? -** Extensions -- complain if their use makes the code non-portable? --- but what does this mean? ghc & hugs? - -** Reorganize compiler dependent code into Distribution.Compiler.* - -** Parsing -*** Parser error reporting -*** Allow quoting in the options fields, to allow things like - -f"something with spaces" -*** Instead of freaking out on unknown fields, the parser should return - a list of those unknown fields so a warning can be printed. Or not. - - -* 1.0 -** add a make target or command for tests we know will fail? +* Misc hunk ./TODO 75 -** ./Setup.lhs build for nhc -** ./Setup.lhs bdist hunk ./TODO 82 +** find a real test case that uses preprocessors +** add a make target or command for tests we know will fail? hunk ./TODO 86 -** test / port code for Hugs and nhc +** test / port code for Hugs hunk ./TODO 92 +------------------------------------------------------------ +-= Future Releases =- + hunk ./TODO 97 -** nhc-pkg (see old package manager code) hunk ./TODO 98 -** register -*** for hugs & nhc +** register for hugs hunk ./TODO 101 +* NHC Support +** look carefully at "rawSystem" and error handing stuff for nhc. +** add install target for nhc +** add information for compiling w/ nhc +** nhc-pkg (see old package manager code) +** register + +* Hugs +- no way to tell Hugs to turn packages on or off +- no register / unregister for hugs + hunk ./TODO 113 +** ./Setup.lhs bdist +** Reorganize compiler dependent code into Distribution.Compiler.* +** API Versioning? Libtool-style or just a major number? +** Extensions +- complain if their use makes the code non-portable? +-- but what does this mean? ghc & hugs? + +** "collections / distributions, etc" multiple cabal packages in one package +** It would be useful to have alternatives in dependencies, e.g. HGL + could depend on X11 | Win32. + hunk ./TODO 147 ------------------------------------------------------------- -* Setup Command-line interface -** Actions -- build -- install (+maybe installprefix, maybe system) -- configure (+flags) -- packageinfo -- sdist -- clean -- register (maybe system) -- unregister (maybe system) - -** flags ---help ---ghc ---nhc ---hugs ---with-compiler= ---prefix= ---instprefix= - -* 1.0 -** actions -- bdist -- doc stuff? - -** flags ---hbc ---helium ---with-compiler= - - ------------------------------------------------------------- - -* Priorities for first beta release -(basically what was in SPJ's document): - -** Basic command-line interface for configure, build, install, - register, unregister, info -** Ability to wrap make -** basic build system (think hmake) -** binary distributions? - -* Priorities for 1.0 -** binary distributions? -** basic pre-processor extensions hunk ./TODO 148 -** haddock support -** user use configuration vs system use configuration - -* looking ahead hunk ./TODO 150 +** helium +** hbc + + +------------------------------------------------------------ hunk ./Distribution/Compat/ReadP.hs 63 - Parser, hunk ./Distribution/InstalledPackageInfo.hs 280 -parsePackageId' :: ReadP.Parser r Char PackageIdentifier hunk ./Distribution/Make.hs 165 - UnregisterCmd -> basicCommand "Unregister" "make unregister" - (parseUnregisterArgs args []) + UnregisterCmd uInst -> basicCommand "Unregister" "make unregister" + (parseUnregisterArgs (uInst, 0) args []) hunk ./Distribution/Setup.hs 95 - | UnregisterCmd -- unregister + | UnregisterCmd Bool -- unregister (--user flag) hunk ./Distribution/Setup.hs 476 - cmdOptions = [cmd_help, cmd_verbose], - cmdAction = UnregisterCmd + cmdOptions = [cmd_help, cmd_verbose, + Option "" ["user"] (NoArg UserFlag) + "unregister this package in the user's local package database", + Option "" ["global"] (NoArg GlobalFlag) + "(default) unregister this package in the system-wide package database" + ], + cmdAction = UnregisterCmd False hunk ./Distribution/Setup.hs 485 -parseUnregisterArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) -parseUnregisterArgs = parseNoArgs unregisterCmd +parseUnregisterArgs :: RegisterFlags -> [String] -> [OptDescr a] -> + IO (RegisterFlags, [a], [String]) +parseUnregisterArgs = parseRegisterArgs hunk ./Distribution/Simple/Register.hs 204 -unregister :: PackageDescription -> LocalBuildInfo -> Int -> IO () -unregister pkg_descr lbi verbose = do +unregister :: PackageDescription -> LocalBuildInfo -> (Bool,Int) -> IO () +unregister pkg_descr lbi (user_unreg, verbose) = do hunk ./Distribution/Simple/Register.hs 207 - + let ghc_63_plus = compilerVersion (compiler lbi) >= Version [6,3] [] + let theName = pkgName (package pkg_descr) hunk ./Distribution/Simple/Register.hs 210 - GHC -> + GHC -> do + config_flags <- + if user_unreg + then if ghc_63_plus + then return ["--user"] + else do + instConfExists <- doesFileExist installedPkgConfigFile + localConf <- GHC.localPackageConfig + unless instConfExists (userPkgConfErr localConf) + return ["--config-file=" ++ localConf] + else return [] + let removeCmd = if ghc_63_plus + then ["unregister",theName] + else ["--remove-package="++theName] hunk ./Distribution/Simple/Register.hs 225 - ["--remove-package=" ++ pkgName (package pkg_descr)] + (removeCmd++config_flags) hunk ./Distribution/Simple.hs 143 - preUnreg :: Args -> Int -> IO HookedBuildInfo, - postUnreg :: Args -> Int -> LocalBuildInfo -> IO ExitCode, + preUnreg :: Args -> RegisterFlags -> IO HookedBuildInfo, + postUnreg :: Args -> RegisterFlags -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 319 - UnregisterCmd -> do - (flags,_, args) <- parseUnregisterArgs args [] + UnregisterCmd uInst -> do + (flags,_, args) <- parseUnregisterArgs (uInst,0) args [] hunk ./GNUmakefile 7 - +#HCBASE=/tmp/ghc/bin/ +HCBASE=/usr/bin/ +HC=$(HCBASE)ghc +HC_PKG=$(HCBASE)/ghc-pkg hunk ./GNUmakefile 29 - ghc $(GHCFLAGS) -odir dist/tmp -hidir dist/tmp Setup -o setup + $(HC) $(GHCFLAGS) -odir dist/tmp -hidir dist/tmp Setup -o setup hunk ./GNUmakefile 81 - -ghc-pkg $(GHCPKGFLAGS) -r Cabal + -$(HC_PKG) $(GHCPKGFLAGS) -r Cabal hunk ./GNUmakefile 84 - -ghc-pkg $(GHCPKGFLAGS) -r HUnit + -$(HC_PKG) $(GHCPKGFLAGS) -r HUnit hunk ./GNUmakefile 103 - ghc $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest + $(HC) $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest hunk ./tests/ModuleTest.hs 137 + -- no unregister, because it has no libs! hunk ./tests/ModuleTest.hs 142 - system $ "ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit" hunk ./tests/ModuleTest.hs 144 + system "setup unregister --user" hunk ./tests/ModuleTest.hs 170 - assertCmd ("ghc-pkg --config-file=" ++ pkgConf ++ " -r HUnit") "package remove" + assertCmd "./setup unregister --user" "unregister failed" hunk ./tests/ModuleTest.hs 217 + assertCmd "./setup unregister --user" "unregister failed" hunk ./tests/Tests.mk 1 +#HC=/tmp/ghc/bin/ghc +HC=ghc hunk ./tests/Tests.mk 4 - ghc -cpp --make -i../.. Setup.lhs -o setup 2>out.build + $(HC) -cpp --make -i../.. Setup.lhs -o setup 2>out.build hunk ./TODO 10 +* buildDepToDep in Configure doesn't set version dependency + hunk ./TODO 98 -** buildDepToDep in Configure doesn't set version dependency hunk ./doc/Cabal.xml 399 - give information for the building of the corresponding library - or executable. All are optional. + give information for the building of the corresponding library + or executable. They may also be present in a + package.buildinfo + file. See for more + details. All are optional. hunk ./doc/Cabal.xml 573 - For this you need a slightly extended + + Some packages may require a configuration step to set + certain fields. The fields in build information (see ) can be generated and put into + package.buildinfo. + For this you need a slightly extended + hunk ./doc/Cabal.xml 744 - runhaskell Setup.hs + runhaskell Setup.hs hunk ./doc/Cabal.xml 1007 + + + + + Deregister this package in the system-wide database. + (This is the default.) + + + + + + + Deregister this package in the user's local package + database. + + + hunk ./TODO 22 -* unregistering the package, etc -** --user flag to unregister +* un/registering the package on the target +** dump shell scripts for registering and unregistering? +** dry run, just to dump the .installed-pkg-config? hunk ./Distribution/Simple/Install.hs 126 --- The library goes in /hugs/packages/ --- Each executable goes in /hugs/programs/ --- with a script / pointing at it. +-- For install, copy-prefix = prefix, but for copy they're different. +-- The library goes in /lib/hugs/packages/ +-- (i.e. /lib/hugs/packages/ on the target system). +-- Each executable goes in /lib/hugs/programs/ +-- (i.e. /lib/hugs/programs/ on the target system) +-- with a script /bin/ pointing at +-- /lib/hugs/programs/ hunk ./Distribution/Simple/Install.hs 150 + let progTargetDir = targetLibPref `joinFileName` "programs" + when (not (null (executables pkg_descr))) $ + createDirectoryIfMissing True binPref hunk ./Distribution/Simple/Install.hs 156 - let targetDir = progInstallDir `joinFileName` exeName exe + let targetDir = progTargetDir `joinFileName` exeName exe hunk ./doc/Cabal.xml 8 + Haddock'> hunk ./doc/Cabal.xml 33 - Hugs doesn't support module hiding. - Just pretend they're not there, OK? + Hugs doesn't support module hiding. hunk ./doc/Cabal.xml 73 - time, a program cannot use two packages, P and Q, which depend + time, a program cannot use two packages, P and Q that depend hunk ./doc/Cabal.xml 86 - package.cabal + + package.cabal + hunk ./doc/Cabal.xml 92 - ), and + ), and hunk ./doc/Cabal.xml 97 - Setup.hs or - Setup.lhs + + Setup.hs or + Setup.lhs + hunk ./doc/Cabal.xml 152 -Hidden-Modules: Utils +Other-Modules: Utils hunk ./doc/Cabal.xml 169 -Hidden-Modules: A, B +Other-Modules: A, B hunk ./doc/Cabal.xml 174 -Hidden-Modules: A, C, Utils +Other-Modules: A, C, Utils hunk ./doc/Cabal.xml 192 -
+
hunk ./doc/Cabal.xml 197 - Each stanza consists of a number of fields, with a syntax like - mail message headers. - + Each stanza consists of a number of field/value pairs, with a + syntax like mail message headers. + hunk ./doc/Cabal.xml 210 - + hunk ./doc/Cabal.xml 219 - name: identifier + + name: identifier + hunk ./doc/Cabal.xml 229 - version: string + + version: string + hunk ./doc/Cabal.xml 240 - license: string + + license: string + hunk ./doc/Cabal.xml 250 - license-file: filename + + license-file: + filename + hunk ./doc/Cabal.xml 261 - copyright: freeform text + + copyright: + freeform text + hunk ./doc/Cabal.xml 271 - author: freeform text + + author: + freeform text + hunk ./doc/Cabal.xml 281 - maintainer: email address + + maintainer: + email address + hunk ./doc/Cabal.xml 292 - stability: freeform text + + stability: + freeform text + hunk ./doc/Cabal.xml 304 - homepage: URL + + homepage: URL + hunk ./doc/Cabal.xml 313 - package-url: URL + + package-url: URL + hunk ./doc/Cabal.xml 317 - The location of a source bundle for the package. + The location of a source bundle for the package. + The distribution should be a Cabal package. hunk ./doc/Cabal.xml 323 - synopsis: freeform text + + synopsis: + freeform text + hunk ./doc/Cabal.xml 337 - description: freeform text + + description: + freeform text + hunk ./doc/Cabal.xml 349 - category: freeform text + + category: + freeform text + hunk ./doc/Cabal.xml 362 - tested-with: compiler list + + tested-with: + compiler list + hunk ./doc/Cabal.xml 373 - build-depends: package list + + build-depends: + package list + hunk ./doc/Cabal.xml 386 - exposed-modules: module list + + exposed-modules: + module list + hunk ./doc/Cabal.xml 415 - This stanza may also contain build information fields relating - to the library (see ). + This stanza may also contain build information fields + (see ) relating to the library. hunk ./doc/Cabal.xml 427 - executable: string + + executable: string + hunk ./doc/Cabal.xml 436 - main-is: filename + + main-is: filename + hunk ./doc/Cabal.xml 450 - The following fields may be present in any stanza, and - give information for the building of the corresponding library - or executable. They may also be present in a - package.buildinfo - file. See for more - details. All are optional. + + The following fields may be optionally present + in any stanza, and give information for the building + of the corresponding library or executable. See also + for a way to supply + system-dependent values for these fields. + hunk ./doc/Cabal.xml 459 - buildable: Boolean + + buildable: Boolean + hunk ./doc/Cabal.xml 473 - other-modules: module list + + other-modules: + module list + hunk ./doc/Cabal.xml 487 - hs-source-dir: directory + + hs-source-dir: + directory + hunk ./doc/Cabal.xml 498 - extensions: string list + + extensions: + string list + hunk ./doc/Cabal.xml 518 - options-ghc: string list + + options-ghc: + string list + hunk ./doc/Cabal.xml 534 - options-hugs: string list + + options-hugs: + string list + hunk ./doc/Cabal.xml 550 - options-nhc: string list + + options-nhc: + string list + hunk ./doc/Cabal.xml 566 - includes: string list + + includes: + string list + hunk ./doc/Cabal.xml 579 - include-dirs: directory list + + include-dirs: + directory list + hunk ./doc/Cabal.xml 590 - c-sources: filename list + + c-sources: + filename list + hunk ./doc/Cabal.xml 607 - extra-libs: string list + + extra-libs: + string list + hunk ./doc/Cabal.xml 617 - extra-lib-dirs: string list + + extra-lib-dirs: + string list + hunk ./doc/Cabal.xml 627 - cc-options: space separated list + + cc-options: + space separated list + hunk ./doc/Cabal.xml 640 - ld-options: space separated list + + ld-options: + space separated list + hunk ./doc/Cabal.xml 653 - frameworks: space separated list + + frameworks: + space separated list + hunk ./doc/Cabal.xml 670 - - Some packages may require a configuration step to set - certain fields. The fields in build information (see ) can be generated and put into - package.buildinfo. - For this you need a slightly extended hunk ./doc/Cabal.xml 671 - Setup.hs: + For some packages, implementation details and the build + procedure depend on the build environment. The simple build + infrastructure can handle many such situations using a slightly + extended Setup.hs: hunk ./doc/Cabal.xml 678 + hunk ./doc/Cabal.xml 685 - run that. This configure program - may be a script produced by the autoconf - system, or may be hand-written. In this way you can generate - system-dependent header files and the like. (Clearly this - won't work for Windows without MSYS or Cygwin: other ideas - are needed.) + run that. This configure program may + be a script produced by the autoconf + system, or may be hand-written. This program typically + discovers information about the system and records it for + later steps, e.g. by generating system-dependent header files + for inclusion in C source files and preprocessed Haskell + source files. (Clearly this won't work for Windows without + MSYS or Cygwin: other ideas are needed.) hunk ./doc/Cabal.xml 699 - it to obtain additional build information. In particular, this - file may be produced by the configure - script mentioned above. - - + it to obtain additional settings for build information fields + (see ), to be merged with the + ones given in the .cabal file. + In particular, this file may be generated by the + configure script mentioned above, + allowing these settings to vary depending on the build + environment. hunk ./doc/Cabal.xml 707 - The build information file should have the following - structure: - + The build information file should have the following + structure: + hunk ./doc/Cabal.xml 719 + where each buildinfo consists + of settings of fields listed in . + The first one (if present) relates to the library, while each + of the others relate to the named executable. (The names + must match the package description, but you don't have to + have entries for all of them.) hunk ./doc/Cabal.xml 726 - Each buildinfo may include settings - of any of the fields listed in . - The first one (if present) relates to the library, while each - of the others relate to the named executable. (The names must - match the package description, but you don't have to have entries - for all of them.) + + hunk ./doc/Cabal.xml 729 - The buildinfo's you - supply here will be merged with the ones given in the - .cabal file. In this way you can make some - of the above buildinfo fields vary - depending on the build environment. + Neither of these files is required. If they are absent, this + setup script is equivalent to defaultMain. hunk ./doc/Cabal.xml 744 -AC_CONFIG_SRCDIR([include/HsXlib.h]) +AC_CONFIG_SRCDIR([X11.cabal]) hunk ./doc/Cabal.xml 772 - This produces a file X11.buildinfo + This generates a file X11.buildinfo hunk ./doc/Cabal.xml 778 + + The configure script also generates + a header file include/HsX11Config.h + containing C preprocessor defines recording the results of + various tests. This file may be included by C source files + and preprocessed Haskell source files in the package. hunk ./doc/Cabal.xml 799 - for the details. + for the details, but note that this interface is experimental, + and likely to change in future releases.. hunk ./doc/Cabal.xml 810 - + hunk ./doc/Cabal.xml 813 - This assumes a configure script and - a Makefile with a default target that - builds the package, plus targets install, - register, unregister, - clean, dist. - (More detail needed.) + + The root directory of the package should contain + a configure script, and, after + that has run, a Makefile with a + default target that builds the package, plus targets + install, register, + unregister, clean, + dist and docs. + Some options to commands are passed through as follows: + + + + The --with-hc, + --with-hc-pkg and + --prefix options to the + configure command are passed on to + the configure script. + + + + the --copy-prefix option to the + copy command becomes a setting of a + prefix variable on the invocation of + make install. + + hunk ./doc/Cabal.xml 869 - runhaskell Setup.hs + runhaskell Setup.hs hunk ./doc/Cabal.xml 916 - , or - + + , or + + hunk ./doc/Cabal.xml 926 - =n - or n + + =n or + n + hunk ./doc/Cabal.xml 991 - Specify the path to haddock. + Specify the path to &Haddock;. hunk ./doc/Cabal.xml 1056 - haddock. + &Haddock;. hunk ./doc/Cabal.xml 1061 - Copy the files into the install locations and register the - package with the compiler, i.e. make the modules it contains - available to programs. This command takes the following - options: + Copy the files into the install locations and (for library + packages) register the package with the compiler, i.e. make the + modules it contains available to programs. + + This command takes the following options: hunk ./doc/Cabal.xml 1089 - is mainly of use to those creating binary packages. - This command takes the following option: + is mainly of use to those creating binary packages. + + This command takes the following option: hunk ./doc/Cabal.xml 1109 - modules it contains available to programs. Note that the - install command incorporates this action. - The main use of this separate command is in the post-installation - step for a binary package. + modules it contains available to programs. This only makes sense + for library packages. Note that the install + command incorporates this action. The main use of this + separate command is in the post-installation step for a binary + package. hunk ./doc/Cabal.xml 1115 - This command takes the following options: + This command takes the following options: hunk ./doc/Cabal.xml 1139 + + This command takes the following options: + hunk ./doc/Cabal.xml 1177 -
-
- -
- Installed packages - - (steal from GHC User's Guide?) - -
- Package management - ... -
- -
- Installed package descriptions - ... hunk ./Distribution/attic 2 +rawSystemEmit :: FilePath -- ^Script name + -> Bool -- ^if true, emit, if false, run + -> Int -- ^Verbosity + -> FilePath -- ^Program to run + -> [String] -- ^Args + -> IO () +rawSystemEmit _ False verbosity path args + = rawSystemExit verbosity path args +rawSystemEmit scriptName True verbosity path args + = writeFile scriptName ("#!/bin/sh\n\n" + ++ (path ++ concatMap (' ':) args) + ++ "\n") + >> putStrLn (path ++ concatMap (' ':) args) + hunk ./Distribution/Setup.hs 447 --- | Flags to @register@: (user package, verbose) +-- | Flags to @register@ and @unregister@: (user package, verbose) hunk ./Distribution/Simple/Register.hs 57 -import Distribution.Setup (CompilerFlavor(..), Compiler(..)) +import Distribution.Setup (CompilerFlavor(..), Compiler(..), RegisterFlags) hunk ./Distribution/Simple/Register.hs 92 - -> (Bool,Int) -- ^Install in the user's database?; verbose + -> RegisterFlags -- ^Install in the user's database?; verbose hunk ./Distribution/Simple/Register.hs 204 -unregister :: PackageDescription -> LocalBuildInfo -> (Bool,Int) -> IO () +unregister :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO () hunk ./Distribution/Simple/Register.hs 231 - - hunk ./tests/HSQL/Makefile 7 -ifneq "$(HUGS)" "" -COMPILERS += hugs -endif +# ifneq "$(HUGS)" "" +# COMPILERS += hugs +# endif hunk ./tests/ModuleTest.hs 55 +import Distribution.Setup (CompilerFlavor(..)) hunk ./tests/ModuleTest.hs 111 + +assertCmd' :: String -- ^Command + -> String -- ^args + -> String -- ^Comment + -> Assertion +assertCmd' command args comment + = system (command ++ " "++ args) >>= assertEqual (command ++ ":" ++ comment) ExitSuccess hunk ./tests/ModuleTest.hs 130 - [TestLabel "testing the wash2hs package" $ TestCase $ + [ +-- wash2hs + TestLabel "testing the wash2hs package" $ TestCase $ hunk ./tests/ModuleTest.hs 136 - assertCmdFail "./setup configure --someUnknownFlag" "wash2hs configure with unknown flag" + assertCmdFail "./setup configure --someUnknownFlag" + "wash2hs configure with unknown flag" hunk ./tests/ModuleTest.hs 148 + assertCmd "./setup clean" "clean failed" + assertCmd "make clean" "make clean failed" hunk ./tests/ModuleTest.hs 151 +-- HUnit hunk ./tests/ModuleTest.hs 185 - + assertCmd "./setup clean" "clean failed" + assertCmd "make clean" "make clean failed" +-- A hunk ./tests/ModuleTest.hs 220 - ,TestLabel "package A: GHC and copy to configure loc." $ TestCase $ -- (uses above config) + ,TestLabel "package A: GHC and copy to configure loc." $ TestCase $ + -- (uses above config) hunk ./tests/ModuleTest.hs 235 +-- A - Hugs + ,TestLabel "package A: configure Hugs" $ TestCase $ + do let targetDir=",tmp" + setCurrentDirectory $ (testdir `joinFileName` "A") + system "make clean" + system "make" + assertCmd ("runhugs -98 Setup.lhs configure --prefix=" ++ targetDir) + "configure returned error code" + assertCmd "runhugs -98 Setup.lhs build" + "build returned error code" + assertCmd "runhugs -98 Setup.lhs copy" + "copy returned error code" + doesFileExist ",tmp/lib/hugs/packages/test/A.hs" >>= + assertBool "A.hs not produced" + doesFileExist ",tmp/bin/testA" >>= + assertBool "testA not produced" + doesFileExist ",tmp/bin/testB" >>= + assertBool "testB not produced" +-- HSQL hunk ./tests/ModuleTest.hs 267 +-- withHooks hunk ./tests/ModuleTest.hs 295 - ,TestLabel "package twoMains: GHC building" $ TestCase $ + +-- ,TestLabel "package A:no install-prefix and hugs" $ TestCase $ +-- do assertCmd "./setup configure --hugs --prefix=,tmp" +-- "Hugs configure returned error code" +-- assertCmd "./setup build" +-- "Hugs build returned error code" +-- instRetCode <- system "./setup install --user" +-- let targetDir = ",tmp/lib/test-1.0/" +-- checkTargetDir targetDir [".hs"] +-- assertEqual "install Hugs returned error code" ExitSuccess instRetCode + ] + +genericTests :: FilePath -- ^Currdir + -> CompilerFlavor -- ^Which compiler + -> String -- compiler configure flag + -> [Test] +genericTests currDir comp compFlag + = let testdir = currDir `joinFileName` "tests" + compStr = show comp + compCmd = command comp + assertConfigure pref + = assertCmd' compCmd ("configure --prefix=" ++ pref ++ " " ++ compFlag) + "configure returned error code" + in [ +-- twoMains + TestLabel ("package twoMains: building " ++ compStr ++ "/" ++ compFlag) $ TestCase $ hunk ./tests/ModuleTest.hs 324 - assertCmd "./setup configure --ghc --prefix=,tmp" - "configure returned error code" - assertCmd "./setup haddock" "setup haddock returned error code." - assertCmd "./setup build" + assertConfigure ",tmp" + assertCmd' compCmd "haddock" "setup haddock returned error code." + assertCmd' compCmd "build" + "build returned error code" + assertCmd' compCmd "copy" hunk ./tests/ModuleTest.hs 330 - doesFileExist "dist/build/testA" >>= + doesFileExist ",tmp/bin/testA" >>= hunk ./tests/ModuleTest.hs 332 - doesFileExist "dist/build/testB" >>= + doesFileExist ",tmp/bin/testB" >>= hunk ./tests/ModuleTest.hs 334 - assertCmd "./dist/build/testA isA" "A is not A" - assertCmd "./dist/build/testB isB" "B is not B" - ,TestLabel "package depOnLib: GHC building (executable depending on its lib)" $ TestCase $ + assertCmd "./,tmp/bin/testA isA" "A is not A" + assertCmd "./,tmp/bin/testB isB" "B is not B" +-- depOnLib + ,TestLabel ("package depOnLib: (executable depending on its lib)"++compStr ++ "/" ++ compFlag) $ TestCase $ hunk ./tests/ModuleTest.hs 341 - assertCmd "./setup configure --ghc --prefix=,tmp" - "configure returned error code" - assertCmd "./setup haddock" "setup haddock returned error code." - assertCmd "./setup build" + assertConfigure ",tmp" + assertCmd' compCmd "haddock" "setup haddock returned error code." + assertCmd' compCmd "build" hunk ./tests/ModuleTest.hs 345 - assertCmd "./setup copy" + assertCmd' compCmd "copy" hunk ./tests/ModuleTest.hs 355 - --- ,TestLabel "package A:no install-prefix and hugs" $ TestCase $ --- do assertCmd "./setup configure --hugs --prefix=,tmp" --- "HUGS configure returned error code" --- assertCmd "./setup build" --- "HUGS build returned error code" --- instRetCode <- system "./setup install --user" --- let targetDir = ",tmp/lib/test-1.0/" --- checkTargetDir targetDir [".hs"] --- assertEqual "install HUGS returned error code" ExitSuccess instRetCode - ] + ] + where command GHC = "./setup" + command Hugs = "runhugs -98 Setup.lhs" hunk ./tests/ModuleTest.hs 362 - count1 <- runTestTT' $ TestList $ +{- count1 <- runTestTT' $ TestList $ hunk ./tests/ModuleTest.hs 369 - D.PD.hunitTests ++ D.E.hunitTests) + D.PD.hunitTests ++ D.E.hunitTests) -} hunk ./tests/ModuleTest.hs 371 - count2 <- runTestTT' $ TestList (tests dir) +-- count2 <- runTestTT' $ TestList (tests dir) + count3 <- runTestTT' $ TestList (genericTests dir Hugs "--hugs") +-- count3' <- runTestTT' $ TestList (genericTests dir Hugs "--ghc") + count4 <- runTestTT' $ TestList (genericTests dir GHC "") hunk ./tests/ModuleTest.hs 377 - putStrLn $ showCounts $ combineCounts count1 count2 + putStrLn $ showCounts $ foldl1 combineCounts [count3, count4] hunk ./tests/ModuleTest.hs 70 +import Control.Monad(when) hunk ./tests/ModuleTest.hs 118 - = system (command ++ " "++ args) >>= assertEqual (command ++ ":" ++ comment) ExitSuccess + = system (command ++ " "++ args ++ ">>out.build") + >>= assertEqual (command ++ ":" ++ comment) ExitSuccess hunk ./tests/ModuleTest.hs 133 --- wash2hs - TestLabel "testing the wash2hs package" $ TestCase $ - do setCurrentDirectory $ (testdir `joinFileName` "wash2hs") - system "make clean" - system "make" - assertCmdFail "./setup configure --someUnknownFlag" - "wash2hs configure with unknown flag" - assertCmd "./setup configure --prefix=\",tmp\"" "wash2hs configure" - assertCmd "./setup haddock" "setup haddock returned error code." - assertCmd "./setup build" "wash2hs build" - doesFileExist "dist/build/hs/wash2hs" - >>= assertBool "wash2hs build didn't create executable!" - assertCmd "./setup install --user" "wash2hs install" - doesFileExist ",tmp/bin/wash2hs" - >>= assertBool "wash2hs didn't put executable into place." - perms <- getPermissions ",tmp/bin/wash2hs" - assertBool "wash2hs isn't +x" (executable perms) - assertCmd "./setup clean" "clean failed" - assertCmd "make clean" "make clean failed" - -- no unregister, because it has no libs! hunk ./tests/ModuleTest.hs 134 - ,TestLabel "testing the HUnit package" $ TestCase $ + TestLabel "testing the HUnit package" $ TestCase $ hunk ./tests/ModuleTest.hs 249 --- withHooks - ,TestLabel "package withHooks: GHC building" $ TestCase $ - do setCurrentDirectory $ (testdir `joinFileName` "withHooks") - system "make clean" - system "make" - assertCmd "./setup configure --ghc --prefix=,tmp --woohoo" - "configure returned error code" - assertCmd "./setup haddock" "setup haddock returned error code." - assertCmd "./setup build" - "build returned error code" - doesFileExist "dist/build/withHooks" >>= - assertBool "build did not create the executable: withHooks" - doesFileExist "dist/build/C.o" >>= - assertBool "C.testSuffix did not get compiled to C.o." - doesFileExist "dist/build/D.o" >>= - assertBool "D.gc did not get compiled to D.o this is an overriding test" - ,TestLabel "package withHooks: GHC and copy" $ TestCase $ - do let targetDir = ",tmp" - instRetCode <- system $ "./setup copy --copy-prefix=" ++ targetDir - doesFileExist (",tmp/lib/withHooks-1.0/" `joinFileName` "libHSwithHooks-1.0.a") - >>= assertBool "library doesn't exist" - doesFileExist ",tmp/bin/withHooks" - >>= assertBool "executable doesn't exist" - assertEqual "install returned error code" ExitSuccess instRetCode - ,TestLabel "package withHooks: GHC and clean" $ TestCase $ - do system "./setup clean" - doesFileExist "C.hs" >>= - assertEqual "C.hs (a generated file) not cleaned." False hunk ./tests/ModuleTest.hs 269 + compIdent = compStr ++ "/" ++ compFlag + testPrelude = system "make clean >> out.build" >> system "make >> out.build" hunk ./tests/ModuleTest.hs 274 + assertBuild = assertCmd' compCmd "build" "build returned error code" + assertCopy = assertCmd' compCmd "copy" "copy returned error code" + assertHaddock = assertCmd' compCmd "haddock" "setup haddock returned error code." hunk ./tests/ModuleTest.hs 279 - TestLabel ("package twoMains: building " ++ compStr ++ "/" ++ compFlag) $ TestCase $ + TestLabel ("package twoMains: building " ++ compIdent) $ TestCase $ hunk ./tests/ModuleTest.hs 281 - system "make clean" - system "make" - assertConfigure ",tmp" + testPrelude + assertConfigure ",tmp" hunk ./tests/ModuleTest.hs 284 - assertCmd' compCmd "build" - "build returned error code" - assertCmd' compCmd "copy" - "build returned error code" + assertBuild + assertCopy hunk ./tests/ModuleTest.hs 293 - ,TestLabel ("package depOnLib: (executable depending on its lib)"++compStr ++ "/" ++ compFlag) $ TestCase $ + ,TestLabel ("package depOnLib: (executable depending on its lib)"++ compIdent) $ TestCase $ hunk ./tests/ModuleTest.hs 295 - system "make clean" - system "make" + testPrelude hunk ./tests/ModuleTest.hs 297 - assertCmd' compCmd "haddock" "setup haddock returned error code." - assertCmd' compCmd "build" - "build returned error code" - assertCmd' compCmd "copy" - "copy returned error code" + assertHaddock + assertBuild + assertCopy hunk ./tests/ModuleTest.hs 308 +-- wash2hs + ,TestLabel ("testing the wash2hs package" ++ compIdent) $ TestCase $ + do setCurrentDirectory $ (testdir `joinFileName` "wash2hs") + testPrelude + assertCmdFail "./setup configure --someUnknownFlag" + "wash2hs configure with unknown flag" + assertConfigure ",tmp" + assertHaddock + assertBuild + assertCopy + doesFileExist ",tmp/bin/wash2hs" + >>= assertBool "wash2hs didn't put executable into place." + perms <- getPermissions ",tmp/bin/wash2hs" + assertBool "wash2hs isn't +x" (executable perms) + assertCmd' compCmd "clean" "clean failed" + -- no unregister, because it has no libs! +-- withHooks + ,TestLabel ("package withHooks: "++compIdent) $ TestCase $ + do setCurrentDirectory $ (testdir `joinFileName` "withHooks") + testPrelude + assertCmd ("./setup configure --prefix=,tmp --woohoo " ++ compFlag) + "configure returned error code" + assertHaddock + assertBuild + assertCopy + when (comp == GHC) + (do doesFileExist "dist/build/C.o" >>= + assertBool "C.testSuffix did not get compiled to C.o." + doesFileExist "dist/build/D.o" >>= + assertBool "D.gc did not get compiled to D.o this is an overriding test" + doesFileExist (",tmp/lib/withHooks-1.0/" `joinFileName` "libHSwithHooks-1.0.a") + >>= assertBool "library doesn't exist") + + doesFileExist ",tmp/bin/withHooks" >>= + assertBool "copy did not create the executable: withHooks" + assertCmd' compCmd "clean" "withHooks clean failed" + doesFileExist "C.hs" >>= + assertEqual "C.hs (a generated file) not cleaned." False hunk ./tests/ModuleTest.hs 70 -import Control.Monad(when) +import Control.Monad(when, unless) hunk ./tests/ModuleTest.hs 74 +import Distribution.Compat.Directory (removeDirectoryRecursive) hunk ./tests/ModuleTest.hs 81 + +-- ------------------------------------------------------------ +-- * Helpers +-- ------------------------------------------------------------ + +combineCounts :: Counts -> Counts -> Counts +combineCounts (Counts a b c d) (Counts a' b' c' d') + = Counts (a + a') (b + b') (c + c') (d + d') + hunk ./tests/ModuleTest.hs 123 +-- |like assertCmd, but separates command and args hunk ./tests/ModuleTest.hs 140 -tests :: FilePath -> [Test] -tests currDir - = let testdir = currDir `joinFileName` "tests" in - [ + +-- ------------------------------------------------------------ +-- * Integration Tests +-- ------------------------------------------------------------ + +tests :: FilePath -- ^Currdir + -> CompilerFlavor -- ^build setup with compiler + -> CompilerFlavor -- ^configure with which compiler + -> [Test] +tests currDir comp compConf = [ +-- A + TestLabel ("package A: " ++ compIdent) $ TestCase $ + do let targetDir=",tmp" + setCurrentDirectory $ (testdir `joinFileName` "A") + testPrelude + assertConfigure targetDir + assertHaddock + assertBuild + when (comp == GHC) -- are these tests silly? + (do doesDirectoryExist "dist/build" >>= + assertBool "dist/build doesn't exist" + doesFileExist "dist/build/testA" >>= + assertBool "build did not create the executable: testA" + doesFileExist "dist/build/testB" >>= + assertBool "build did not create the executable: testB") + assertCopy + libForA targetDir + doesFileExist ",tmp/bin/testA" >>= + assertBool "testA not produced" + doesFileExist ",tmp/bin/testB" >>= + assertBool "testB not produced" + assertCmd' compCmd "sdist" "setup sdist returned error code" + doesFileExist "dist/test-1.0.tgz" >>= + assertBool "sdist did not put the expected file in place" + doesFileExist "dist/src" >>= + assertEqual "dist/src exists" False + ,TestLabel ("package A copy-prefix: " ++ compIdent) $ TestCase $ -- (uses above config) + do let targetDir = ",tmp2" + assertCmd' compCmd ("copy --copy-prefix=" ++ targetDir) "copy --copy-prefix failed" + doesFileExist ",tmp2/bin/testA" >>= + assertBool "testA not produced" + doesFileExist ",tmp2/bin/testB" >>= + assertBool "testB not produced" + libForA ",tmp2" + ,TestLabel ("package A and install w/ no prefix: " ++ compIdent) $ TestCase $ + do let targetDir = ",tmp/lib/test-1.0/" + removeDirectoryRecursive ",tmp" + assertCmd' compCmd "install --user" "install --user failed" + libForA ",tmp" + assertCmd "./setup unregister --user" "unregister failed" hunk ./tests/ModuleTest.hs 191 - TestLabel "testing the HUnit package" $ TestCase $ + ,TestLabel "testing the HUnit package" $ TestCase $ hunk ./tests/ModuleTest.hs 193 - pkgConf <- GHC.localPackageConfig hunk ./tests/ModuleTest.hs 196 + assertCmd' compCmd "configure" "configure failed" hunk ./tests/ModuleTest.hs 198 + + hunk ./tests/ModuleTest.hs 204 - assertCmd "./setup configure --prefix=\",tmp\"" "hunit configure" - assertCmd "./setup haddock" "setup haddock returned error code." hunk ./tests/ModuleTest.hs 206 - assertCmd "./setup build" "hunit build" + assertBuild hunk ./tests/ModuleTest.hs 209 - assertCmd "./setup clean" "hunit clean" + assertCmd' compCmd "clean" "hunit clean" hunk ./tests/ModuleTest.hs 212 + hunk ./tests/ModuleTest.hs 218 - assertCmd "./setup configure --prefix=\",tmp\"" "hunit configure" - assertCmd "./setup haddock" "setup haddock returned error code." - assertCmd "./setup build" "hunit build" - assertCmd "./setup install --user" "hunit install" - assertCmd ("ghc -package-conf " ++ pkgConf ++ " -package HUnit HUnitTester.hs -o ./hunitTest") "compile w/ hunit" - assertCmd "./hunitTest" "hunit test" - assertCmd "./setup unregister --user" "unregister failed" - assertCmd "./setup clean" "clean failed" + assertConfigure ",tmp" + assertHaddock + assertBuild + when (comp == GHC) -- tests building w/ an installed -package + (do pkgConf <- GHC.localPackageConfig + assertCmd' compCmd "install --user" "hunit install" + assertCmd ("ghc -package-conf " ++ pkgConf + ++ " -package HUnit HUnitTester.hs -o ./hunitTest") + "compile w/ hunit" + assertCmd "./hunitTest" "hunit test" + assertCmd' compCmd "unregister --user" "unregister failed") + assertClean hunk ./tests/ModuleTest.hs 231 --- A - ,TestLabel "package A: configure GHC, sdist" $ TestCase $ - do pkgConf <- GHC.localPackageConfig - GHC.maybeCreateLocalPackageConfig - system $ "ghc-pkg -r test --config-file=" ++ pkgConf - setCurrentDirectory $ (testdir `joinFileName` "A") - system "make clean" - system "make" - assertCmd "./setup configure --ghc --prefix=,tmp" - "configure returned error code" - assertCmd "./setup haddock" "setup haddock returned error code." hunk ./tests/ModuleTest.hs 232 - assertCmd "./setup build" - "build returned error code" - doesFileExist "dist/build/testA" >>= - assertBool "build did not create the executable: testA" - doesFileExist "dist/build/testB" >>= - assertBool "build did not create the executable: testB" - assertCmd "./setup sdist" - "setup sdist returned error code" - doesFileExist "dist/test-1.0.tgz" >>= - assertBool "sdist did not put the expected file in place" - doesFileExist "dist/src" >>= - assertEqual "dist/src exists" False - doesDirectoryExist "dist/build" >>= - assertBool "dist/build doesn't exists" - ,TestLabel "package A: GHC and copy-prefix" $ TestCase $ -- (uses above config) - do let targetDir = ",tmp2" - instRetCode <- system $ "./setup copy --copy-prefix=" ++ targetDir - checkTargetDir ",tmp2/lib/test-1.0/" [".hi"] - doesFileExist (",tmp2/lib/test-1.0/" `joinFileName` "libHStest-1.0.a") - >>= assertBool "library doesn't exist" - assertEqual "install returned error code" ExitSuccess instRetCode - ,TestLabel "package A: GHC and copy to configure loc." $ TestCase $ - -- (uses above config) - do instRetCode <- system $ "./setup copy" - checkTargetDir ",tmp/lib/test-1.0/" [".hi"] - doesFileExist (",tmp/lib/test-1.0/" `joinFileName` "libHStest-1.0.a") - >>= assertBool "library doesn't exist" - assertEqual "install returned error code" ExitSuccess instRetCode - ,TestLabel "package A: GHC and install w/ no prefix" $ TestCase $ - do let targetDir = ",tmp/lib/test-1.0/" - instRetCode <- system $ "./setup install --user" - checkTargetDir targetDir [".hi"] - doesFileExist (targetDir `joinFileName` "libHStest-1.0.a") - >>= assertBool "library doesn't exist" - assertEqual "install returned error code" ExitSuccess instRetCode - assertCmd "./setup unregister --user" "unregister failed" --- A - Hugs - ,TestLabel "package A: configure Hugs" $ TestCase $ - do let targetDir=",tmp" - setCurrentDirectory $ (testdir `joinFileName` "A") - system "make clean" - system "make" - assertCmd ("runhugs -98 Setup.lhs configure --prefix=" ++ targetDir) - "configure returned error code" - assertCmd "runhugs -98 Setup.lhs build" - "build returned error code" - assertCmd "runhugs -98 Setup.lhs copy" - "copy returned error code" - doesFileExist ",tmp/lib/hugs/packages/test/A.hs" >>= - assertBool "A.hs not produced" - doesFileExist ",tmp/bin/testA" >>= - assertBool "testA not produced" - doesFileExist ",tmp/bin/testB" >>= - assertBool "testB not produced" --- HSQL - ,TestLabel "package HSQL (make-based): GHC building" $ TestCase $ - do setCurrentDirectory $ (testdir `joinFileName` "HSQL") - system "make distclean" - system "rm -rf /tmp/lib/HSQL" - system "ghc -cpp --make -i../.. Setup.lhs -o setup 2>out.build" - assertCmd "./setup configure --ghc --prefix=/tmp" - "configure returned error code" - doesFileExist "config.mk" >>= - assertBool "config.mk not generated after configure" - assertCmd "./setup build" "build hsql returned error code" - assertCmd "./setup copy" "copy hsql returned error code" - doesFileExist "/tmp/lib/HSQL/GHC/libHSsql.a" >>= - assertBool "libHSsql.a doesn't exist. copy failed." - --- ,TestLabel "package A:no install-prefix and hugs" $ TestCase $ --- do assertCmd "./setup configure --hugs --prefix=,tmp" --- "Hugs configure returned error code" --- assertCmd "./setup build" --- "Hugs build returned error code" --- instRetCode <- system "./setup install --user" --- let targetDir = ",tmp/lib/test-1.0/" --- checkTargetDir targetDir [".hs"] --- assertEqual "install Hugs returned error code" ExitSuccess instRetCode - ] - -genericTests :: FilePath -- ^Currdir - -> CompilerFlavor -- ^Which compiler - -> String -- compiler configure flag - -> [Test] -genericTests currDir comp compFlag - = let testdir = currDir `joinFileName` "tests" - compStr = show comp - compCmd = command comp - compIdent = compStr ++ "/" ++ compFlag - testPrelude = system "make clean >> out.build" >> system "make >> out.build" - assertConfigure pref - = assertCmd' compCmd ("configure --prefix=" ++ pref ++ " " ++ compFlag) - "configure returned error code" - assertBuild = assertCmd' compCmd "build" "build returned error code" - assertCopy = assertCmd' compCmd "copy" "copy returned error code" - assertHaddock = assertCmd' compCmd "haddock" "setup haddock returned error code." - in [ hunk ./tests/ModuleTest.hs 233 - TestLabel ("package twoMains: building " ++ compIdent) $ TestCase $ + ,TestLabel ("package twoMains: building " ++ compIdent) $ TestCase $ hunk ./tests/ModuleTest.hs 276 - assertCmd' compCmd "clean" "clean failed" + assertClean hunk ./tests/ModuleTest.hs 287 - when (comp == GHC) + when (comp == GHC) -- FIX: come up with good test for Hugs hunk ./tests/ModuleTest.hs 297 - assertCmd' compCmd "clean" "withHooks clean failed" + assertClean hunk ./tests/ModuleTest.hs 300 +-- HSQL + ,TestLabel ("package HSQL (make-based): " ++ show compIdent) $ + TestCase $ unless (compFlag == "--hugs") $ -- FIX: won't compile w/ hugs + do setCurrentDirectory $ (testdir `joinFileName` "HSQL") + system "make distclean" + system "rm -rf /tmp/lib/HSQL" + when (comp== GHC) + (system "ghc -cpp --make -i../.. Setup.lhs -o setup 2>out.build" >> return()) + assertConfigure "/tmp" + doesFileExist "config.mk" >>= + assertBool "config.mk not generated after configure" + assertBuild + assertCopy + when (comp == GHC) -- FIX: do something for hugs + (doesFileExist "/tmp/lib/HSQL/GHC/libHSsql.a" >>= + assertBool "libHSsql.a doesn't exist. copy failed.") hunk ./tests/ModuleTest.hs 317 - where command GHC = "./setup" - command Hugs = "runhugs -98 Setup.lhs" - + where testdir = currDir `joinFileName` "tests" + compStr = show comp + compCmd = command comp + compFlag = case compConf of + GHC -> "--ghc" + Hugs -> "--hugs" + compIdent = compStr ++ "/" ++ compFlag + testPrelude = system "make clean >> out.build" >> system "make >> out.build" + assertConfigure pref + = assertCmd' compCmd ("configure --prefix=" ++ pref ++ " " ++ compFlag) + "configure returned error code" + assertBuild = assertCmd' compCmd "build" "build returned error code" + assertCopy = assertCmd' compCmd "copy" "copy returned error code" + assertClean = assertCmd' compCmd "clean" "clean returned error code" + assertHaddock = assertCmd' compCmd "haddock" "setup haddock returned error code." + command GHC = "./setup" + command Hugs = "runhugs -98 Setup.lhs" + libForA pref -- checks to see if the lib exists, for tests/A + = let ghcTargetDir = pref ++ "/lib/test-1.0/" in + case compConf of + Hugs -> checkTargetDir (pref ++ "/lib/hugs/packages/test/") [".hs"] + GHC -> do checkTargetDir ghcTargetDir [".hi"] + doesFileExist (ghcTargetDir `joinFileName` "libHStest-1.0.a") + >>= assertBool "library doesn't exist" hunk ./tests/ModuleTest.hs 344 -{- count1 <- runTestTT' $ TestList $ + setupCount <- runTestTT' $ TestList $ hunk ./tests/ModuleTest.hs 351 - D.PD.hunitTests ++ D.E.hunitTests) -} + D.PD.hunitTests ++ D.E.hunitTests) hunk ./tests/ModuleTest.hs 353 --- count2 <- runTestTT' $ TestList (tests dir) - count3 <- runTestTT' $ TestList (genericTests dir Hugs "--hugs") --- count3' <- runTestTT' $ TestList (genericTests dir Hugs "--ghc") - count4 <- runTestTT' $ TestList (genericTests dir GHC "") +-- count' <- runTestTT' $ TestList (tests dir Hugs GHC) + globalTests <- sequence [runTestTT' $ TestList (tests dir x x) + | x <- [GHC, Hugs]] hunk ./tests/ModuleTest.hs 358 - putStrLn $ showCounts $ foldl1 combineCounts [count3, count4] + putStrLn $ showCounts $ + foldl1 combineCounts (setupCount:globalTests) hunk ./tests/ModuleTest.hs 362 -combineCounts :: Counts -> Counts -> Counts -combineCounts (Counts a b c d) (Counts a' b' c' d') - = Counts (a + a') (b + b') (c + c') (d + d') hunk ./TODO 4 +* add withGreencard= + hunk ./TODO 77 +** add info about deb packages to web page at least check out the + manpage for dh_haskell, section "How to package a haskell library" hunk ./TODO 166 -** public database of packages +** hackage hunk ./Distribution/Setup.hs 115 - configVerbose :: Int -- ^verbosity level + configVerbose :: Int, -- ^verbosity level + configUser :: Bool -- ^--user flag? hunk ./Distribution/Setup.hs 131 - configVerbose = 0 + configVerbose = 0, + configUser = False hunk ./Distribution/Setup.hs 260 - "give the path to cpphs" + "give the path to cpphs", + Option "" ["user"] (NoArg UserFlag) + "allow dependencies to be satisfied from the user package database", + Option "" ["global"] (NoArg GlobalFlag) + "(default) dependencies must be satisfied from the global package database" hunk ./Distribution/Setup.hs 295 + UserFlag -> t { configUser = True } + GlobalFlag -> t { configUser = False } hunk ./Distribution/Simple/Build.hs 57 -import Distribution.PreProcess (preprocessSources, PPSuffixHandler) +import Distribution.PreProcess (preprocessSources, PPSuffixHandler, ppCpp) hunk ./Distribution/Simple/Build.hs 59 -import Distribution.Simple.Configure (LocalBuildInfo(..), exeDeps) +import Distribution.Simple.Configure (LocalBuildInfo(..)) hunk ./Distribution/Simple/Build.hs 76 -import System.Info hunk ./Distribution/Simple/Build.hs 178 - exeBi (exeDeps exeName' lbi) + exeBi (packageDeps lbi) hunk ./Distribution/Simple/Build.hs 198 - ++ (concat [ ["-package", pkgName pkg] | pkg <- deps ]) + ++ (concat [ ["-package", showPackageId pkg] | pkg <- deps ]) hunk ./Distribution/Simple/Build.hs 200 --- | +-- |Building a package for Hugs. hunk ./Distribution/Simple/Build.hs 247 - if cppAll || CPP `elem` exts || "-cpp" `elem` ghcOpts then - cppFile bi srcFile destFile + if cppAll || CPP `elem` exts || "-cpp" `elem` ghcOpts then do + ppCpp bi lbi srcFile destFile verbose + return () hunk ./Distribution/Simple/Build.hs 252 - - {- FIX (HUGS): assumes gcc -} - cppFile bi inFile outFile = - rawSystemExit verbose "cpp" - (["-traditional", "-P"] ++ defines ++ - ["-I" ++ dir | dir <- includeDirs bi] ++ - ccOptions bi ++ [inFile, outFile]) - - defines = "-D__HUGS__" : - ["-D" ++ os ++ "_" ++ loc ++ "_OS" | loc <- locations] ++ - ["-D" ++ arch ++ "_" ++ loc ++ "_ARCH" | loc <- locations] - locations = ["HOST", "TARGET"] hunk ./Distribution/Simple/Configure.hs 50 - exeDeps, - buildDepToDep, hunk ./Distribution/Simple/Configure.hs 70 -import Distribution.Package (PackageIdentifier(..)) +import Distribution.Package (PackageIdentifier(..), showPackageId, + parsePackageId) hunk ./Distribution/Simple/Configure.hs 76 -import Distribution.Version (Version(..), VersionRange(..), Dependency(..), - parseVersion, showVersion) +import Distribution.Version (Version(..), Dependency(..), + parseVersion, showVersion, withinRange, + showVersionRange) hunk ./Distribution/Simple/Configure.hs 80 -import Data.List (intersperse, nub) +import Data.List (intersperse, nub, maximumBy) hunk ./Distribution/Simple/Configure.hs 86 +import System.Exit ( ExitCode(..) ) hunk ./Distribution/Simple/Configure.hs 105 --- |Throws an error if it's not found. -exeDeps :: String -> LocalBuildInfo -> [PackageIdentifier] -exeDeps s d = fromMaybe (error "Incorrect executableDeps in .setup-config file. Re-run configure?") (lookup s (executableDeps d)) - hunk ./Distribution/Simple/Configure.hs 169 + -- FIXME: currently only GHC has hc-pkg + dep_pkgs <- if f' == GHC then do + ipkgs <- getInstalledPackages comp (configUser cfg) + mapM (configDependency ipkgs) (buildDepends pkg_descr) + else return [PackageIdentifier pname (Version [] []) | + Dependency pname _ <- buildDepends pkg_descr] hunk ./Distribution/Simple/Configure.hs 177 - packageDeps=map buildDepToDep (buildDepends pkg_descr), + packageDeps=dep_pkgs, hunk ./Distribution/Simple/Configure.hs 180 - withHsc2hs=hsc2hs, withCpphs=cpphs, - executableDeps = [(n, map buildDepToDep (buildDepends pkg_descr)) - | Executable n _ _ <- executables pkg_descr] + withHsc2hs=hsc2hs, withCpphs=cpphs hunk ./Distribution/Simple/Configure.hs 196 --- |Converts build dependencies to real dependencies. FIX: doesn't --- set any version information - will need to query HC-PKG for this. -buildDepToDep :: Dependency -> PackageIdentifier hunk ./Distribution/Simple/Configure.hs 197 --- if they specify the exact version, use that: -buildDepToDep (Dependency s (ThisVersion v)) = PackageIdentifier s v +-- | Test for a package dependency and record the version we have installed. +configDependency :: [PackageIdentifier] -> Dependency -> IO PackageIdentifier +configDependency ps (Dependency pkgname vrange) = do + let + ok p = pkgName p == pkgname && pkgVersion p `withinRange` vrange + -- + case filter ok ps of + [] -> die ("cannot satisfy dependency " ++ + pkgname ++ showVersionRange vrange) + qs -> let + pkg = maximumBy versions qs + versions a b = pkgVersion a `compare` pkgVersion b + in do message ("Dependency " ++ pkgname ++ showVersionRange vrange ++ + ": using " ++ showPackageId pkg) + return pkg hunk ./Distribution/Simple/Configure.hs 213 --- otherwise, calculate it from the installed module. FIX: not --- implemented because HC-PKG doesn't yet do this. -buildDepToDep (Dependency s _) = PackageIdentifier s (Version [] []) +getInstalledPackages :: Compiler -> Bool -> IO [PackageIdentifier] +getInstalledPackages comp user = do + message "Reading installed packages..." + withTempFile "." "" $ \tmp -> do + let user_flag = if user then " --user" else " --global" + res <- system (compilerPkgTool comp ++ user_flag ++ " list >" ++ tmp) + case res of + ExitFailure _ -> die ("cannot get package list") + ExitSuccess -> do + str <- readFile tmp + let str1 = unlines (filter (':' `notElem`) (lines str)) + str2 = filter (`notElem` ",()") str1 + case pCheck (readP_to_S (many (skipSpaces >> parsePackageId)) str2) of + [ps] -> return ps + _ -> die "cannot parse package list" hunk ./Distribution/Simple/LocalBuildInfo.hs 68 - withCpphs :: Maybe FilePath, -- ^Might be the location of the Cpphs executable. - executableDeps :: [(String,[PackageIdentifier])] -- FIX: No longer used?! + withCpphs :: Maybe FilePath -- ^Might be the location of the Cpphs executable. hunk ./doc/Cabal.xml 102 - a Haskell script to perform various setup tasks (with - the interface described in ). - In most cases this will be trivial, calling on the Cabal - library to do most of the work. + a single-module Haskell program to perform various + setup tasks (with the interface described in + ). This module should import only + modules that will be present in all Haskell implementations, + including modules of the Cabal library. In most cases it + will be trivial, calling on the Cabal library to do most of + the work. hunk ./doc/Cabal.xml 979 - this must match the implementation selected above. The - default is to search for the selected compiler. + this must match the implementation selected above. + The default is to search for the usual name of the + selected implementation. hunk ./doc/Cabal.xml 988 - Specify the path to the package tool. + Specify the path to the package tool, e.g. + ghc-pkg. hunk ./doc/Cabal.xml 1027 + + + + + Allow dependencies to be satisfied by the user package + database, in addition to the global database. + + + + + + + (default) Dependencies must be satisfied by the global + package database. + + hunk ./doc/Cabal.xml 1046 - recognized: + is recognized: hunk ./doc/Cabal.xml 1053 - build (default: dist/build. + built (default: dist/build). hunk ./doc/Cabal.xml 1058 - If a user-supplied configure script is - run (see ), it is passed the - option and any unrecognized options. - hunk ./doc/Cabal.xml 1062 + If a user-supplied configure script is + run (see ), it is passed the + option and any unrecognized options. + hunk ./doc/Cabal.xml 1184 - Remove any files created during the configure, build, or - register steps. + Remove any files created during the configure or build + steps. hunk ./tests/Tests.mk 11 -check: all +check: setup hunk ./tests/wash2hs/wash2hs.cabal 4 -Build-Depends: text +Build-Depends: text, lang hunk ./Distribution/Simple/Configure.hs 76 -import Distribution.Version (Version(..), Dependency(..), +import Distribution.Version (Version(..), Dependency(..), VersionRange(ThisVersion), hunk ./Distribution/Simple/Configure.hs 170 - dep_pkgs <- if f' == GHC then do + dep_pkgs <- if f' == GHC && ver >= Version [6,3] [] then do hunk ./Distribution/Simple/Configure.hs 173 - else return [PackageIdentifier pname (Version [] []) | - Dependency pname _ <- buildDepends pkg_descr] + else return $ map setDepByVersion (buildDepends pkg_descr) hunk ./Distribution/Simple/Configure.hs 181 + +-- |Converts build dependencies to a versioned dependency. only sets +-- version information for exact versioned dependencies. +setDepByVersion :: Dependency -> PackageIdentifier + +-- if they specify the exact version, use that: +setDepByVersion (Dependency s (ThisVersion v)) = PackageIdentifier s v + +-- otherwise, just set it to empty +setDepByVersion (Dependency s _) = PackageIdentifier s (Version [] []) + hunk ./TODO 12 -* buildDepToDep in Configure doesn't set version dependency - -* Write tests for hugs - hunk ./tests/ModuleTest.hs 282 - assertCmd ("./setup configure --prefix=,tmp --woohoo " ++ compFlag) + assertCmd' compCmd ("configure --prefix=,tmp --woohoo " ++ compFlag) hunk ./Distribution/Simple/Register.hs 84 +regScriptLocation :: FilePath +regScriptLocation = "register.sh" + +unregScriptLocation :: FilePath +unregScriptLocation = "unregister.sh" + hunk ./Distribution/Simple/Register.hs 133 - rawSystemExit verbose (compilerPkgTool (compiler lbi)) + rawSystemEmit regScriptLocation (verbose>10) verbose (compilerPkgTool (compiler lbi)) hunk ./Distribution/Simple/Register.hs 230 - rawSystemExit verbose (compilerPkgTool (compiler lbi)) + rawSystemEmit unregScriptLocation (verbose>10) verbose (compilerPkgTool (compiler lbi)) hunk ./Distribution/Simple/Register.hs 237 + +rawSystemEmit :: FilePath -- ^Script name + -> Bool -- ^if true, emit, if false, run + -> Int -- ^Verbosity + -> FilePath -- ^Program to run + -> [String] -- ^Args + -> IO () +rawSystemEmit _ False verbosity path args + = rawSystemExit verbosity path args +rawSystemEmit scriptName True verbosity path args + = writeFile scriptName ("#!/bin/sh\n\n" + ++ (path ++ concatMap (' ':) args) + ++ "\n") + >> putStrLn (path ++ concatMap (' ':) args) hunk ./Distribution/Simple/Register.hs 105 - setupMessage "Registering" pkg_descr + let writeRegScript = verbose > 10 -- FIX, thread new flag. + setupMessage (if writeRegScript + then ("Writing registration script: " ++ regScriptLocation) + else "Registering") + pkg_descr hunk ./Distribution/Simple/Register.hs 122 - when (not pkgConfWriteable) $ userPkgConfErr localConf + when (not pkgConfWriteable && not writeRegScript) + $ userPkgConfErr localConf hunk ./Distribution/Simple/Register.hs 128 - unless instConfExists $ do + when (not instConfExists && not writeRegScript) $ do hunk ./Distribution/Simple/Register.hs 135 - | otherwise = ["--update-package", - "--input-file="++installedPkgConfigFile] + | otherwise = "--update-package": + if writeRegScript + then [] + else ["--input-file="++installedPkgConfigFile] + + let allFlags = "--auto-ghci-libs": + (register_flags + ++ config_flags) + let pkgTool = compilerPkgTool (compiler lbi) hunk ./Distribution/Simple/Register.hs 145 - rawSystemEmit regScriptLocation (verbose>10) verbose (compilerPkgTool (compiler lbi)) - (["--auto-ghci-libs"] - ++ register_flags - ++ config_flags) + if writeRegScript + then rawSystemPipe regScriptLocation verbose + (showInstalledConfig pkg_descr lbi) + pkgTool allFlags + else rawSystemExit verbose pkgTool allFlags + hunk ./Distribution/Simple/Register.hs 166 - let hc = compiler lbi - let pkg_config = case compilerFlavor hc of - GHC | compilerVersion hc < Version [6,3] [] -> - showGHCPackageConfig (mkGHCPackageConfig pkg_descr lbi) - _ -> showInstalledPackageInfo (mkInstalledPackageInfo pkg_descr lbi) + let pkg_config = showInstalledConfig pkg_descr lbi hunk ./Distribution/Simple/Register.hs 169 +-- |Create a string suitable for writing out to the package config file +showInstalledConfig :: PackageDescription -> LocalBuildInfo -> String +showInstalledConfig pkg_descr lbi + = let hc = compiler lbi + in case compilerFlavor hc of + GHC | compilerVersion hc < Version [6,3] [] -> + showGHCPackageConfig (mkGHCPackageConfig pkg_descr lbi) + _ -> showInstalledPackageInfo (mkInstalledPackageInfo pkg_descr lbi) + hunk ./Distribution/Simple/Register.hs 257 +-- |Like rawSystemExit, but optionally emits to a script instead of +-- exiting. hunk ./Distribution/Simple/Register.hs 272 + +-- |Like rawSystemEmit, except it has string for pipeFrom +rawSystemPipe :: FilePath -- ^Script location + -> Int -- ^Verbosity + -> String -- ^where to pipe from + -> FilePath -- ^Program to run + -> [String] -- ^Args + -> IO () +rawSystemPipe scriptName verbose pipeFrom path args + = writeFile scriptName ("#!/bin/sh\n\n" + ++ "echo '" ++ pipeFrom + ++ "' |" + ++ (path ++ concatMap (' ':) args) + ++ "\n") hunk ./Distribution/Simple/Register.hs 50 + regScriptLocation, + unregScriptLocation, hunk ./Distribution/Simple/Register.hs 260 --- exiting. +-- exiting. FIX: chmod +x? hunk ./Distribution/Simple/Register.hs 275 --- |Like rawSystemEmit, except it has string for pipeFrom +-- |Like rawSystemEmit, except it has string for pipeFrom. FIX: chmod +x hunk ./Distribution/Simple.hs 76 - writeInstalledConfig, installedPkgConfigFile ) + writeInstalledConfig, installedPkgConfigFile, + regScriptLocation, unregScriptLocation + ) hunk ./Distribution/Simple.hs 283 + try $ removeFile regScriptLocation + try $ removeFile unregScriptLocation hunk ./TODO 33 +* do we have to run configure before clean? + hunk ./tests/ModuleTest.hs 176 + assertCmd' compCmd "register --user" "pkg A, register failed" + assertCmd' compCmd "unregister --user" "pkg A, unregister failed" + assertCmd' compCmd ("register --user "++dumpScriptFlag) + "pkg A, register dump script failed" + assertCmd' compCmd ("unregister --user "++dumpScriptFlag) + "pkg A, register dump script failed" + assertCmd' "source" "register.sh" "reg script failed" -- FIX: chmod +x instead of source + assertCmd' "source" "unregister.sh" "unreg script failed" -- FIX: chmod +x instead of source hunk ./tests/ModuleTest.hs 197 - assertCmd "./setup unregister --user" "unregister failed" + assertCmd' compCmd "unregister --user" "unregister failed" hunk ./tests/ModuleTest.hs 274 - assertCmdFail "./setup configure --someUnknownFlag" + assertCmdFail (compCmd ++ " configure --someUnknownFlag") hunk ./tests/ModuleTest.hs 314 - when (comp== GHC) + when (comp == GHC) hunk ./tests/ModuleTest.hs 349 + dumpScriptFlag = "-v11" hunk ./Cabal.cabal 2 -Version: 0.4 +Version: 0.6 hunk ./Distribution/Make.hs 162 - RegisterCmd uInst -> basicCommand "Register" "make register" - (parseRegisterArgs (uInst,0) args []) + RegisterCmd uInst genScript -> basicCommand "Register" "make register" + (parseRegisterArgs (uInst,genScript, 0) args []) hunk ./Distribution/Make.hs 165 - UnregisterCmd uInst -> basicCommand "Unregister" "make unregister" - (parseUnregisterArgs (uInst, 0) args []) + UnregisterCmd uInst genScript -> basicCommand "Unregister" "make unregister" + (parseUnregisterArgs (uInst, genScript, 0) args []) hunk ./Distribution/Setup.hs 94 - | RegisterCmd Bool -- register (--user flag) - | UnregisterCmd Bool -- unregister (--user flag) + | RegisterCmd Bool Bool -- register (--user flag, --gen-script) + | UnregisterCmd Bool Bool -- unregister (--user flag, --gen-script) hunk ./Distribution/Setup.hs 140 - -- For install and register: + -- For install, register, and unregister: hunk ./Distribution/Setup.hs 142 + -- for register & unregister + | GenScriptFlag hunk ./Distribution/Setup.hs 452 - "(default) upon registration, register this package in the system-wide package database" + "(default) upon registration, register this package in the system-wide package database", + Option "" ["gen-script"] (NoArg GenScriptFlag) + "Instead of performing the register command, generate a script to register later" hunk ./Distribution/Setup.hs 456 - cmdAction = RegisterCmd False + cmdAction = RegisterCmd False False hunk ./Distribution/Setup.hs 459 --- | Flags to @register@ and @unregister@: (user package, verbose) -type RegisterFlags = (Bool,Int) +-- | Flags to @register@ and @unregister@: (user package, gen-script, verbose) +type RegisterFlags = (Bool, Bool, Int) hunk ./Distribution/Setup.hs 474 - where updateCfg (fl:flags) (uFlag,verbose) = updateCfg flags $ + where updateCfg (fl:flags) (uFlag, genScriptFlag, verbose) = updateCfg flags $ hunk ./Distribution/Setup.hs 476 - UserFlag -> (True,verbose) - GlobalFlag -> (False,verbose) - Verbose n -> (uFlag,n) - Lift _ -> (uFlag,verbose) + UserFlag -> (True, genScriptFlag, verbose) + GlobalFlag -> (False, genScriptFlag, verbose) + Verbose n -> (uFlag,genScriptFlag, n) + GenScriptFlag -> (uFlag, True, verbose) + Lift _ -> (uFlag,genScriptFlag, verbose) hunk ./Distribution/Setup.hs 493 - "(default) unregister this package in the system-wide package database" + "(default) unregister this package in the system-wide package database", + Option "" ["gen-script"] (NoArg GenScriptFlag) + "Instead of performing the unregister command, generate a script to unregister later" + hunk ./Distribution/Setup.hs 498 - cmdAction = UnregisterCmd False + cmdAction = UnregisterCmd False False hunk ./Distribution/Simple/Register.hs 102 -register pkg_descr lbi (userInst,verbose) +register pkg_descr lbi (userInst, genScript, verbose) hunk ./Distribution/Simple/Register.hs 107 - let writeRegScript = verbose > 10 -- FIX, thread new flag. - setupMessage (if writeRegScript + setupMessage (if genScript hunk ./Distribution/Simple/Register.hs 123 - when (not pkgConfWriteable && not writeRegScript) + when (not pkgConfWriteable && not genScript) hunk ./Distribution/Simple/Register.hs 129 - when (not instConfExists && not writeRegScript) $ do + when (not instConfExists && not genScript) $ do hunk ./Distribution/Simple/Register.hs 137 - if writeRegScript + if genScript hunk ./Distribution/Simple/Register.hs 146 - if writeRegScript + if genScript hunk ./Distribution/Simple/Register.hs 231 -unregister pkg_descr lbi (user_unreg, verbose) = do +unregister pkg_descr lbi (user_unreg, genScript, verbose) = do hunk ./Distribution/Simple/Register.hs 250 - rawSystemEmit unregScriptLocation (verbose>10) verbose (compilerPkgTool (compiler lbi)) + rawSystemEmit unregScriptLocation genScript verbose (compilerPkgTool (compiler lbi)) hunk ./Distribution/Simple.hs 304 - (register pkg_descr localbuildinfo flags) + (register pkg_descr localbuildinfo (uInst, False, verbose)) hunk ./Distribution/Simple.hs 316 - RegisterCmd uInst -> do - (flags, _, args) <- parseRegisterArgs (uInst,0) args [] + RegisterCmd uInst genScript -> do + (flags, _, args) <- parseRegisterArgs (uInst, genScript, 0) args [] hunk ./Distribution/Simple.hs 323 - UnregisterCmd uInst -> do - (flags,_, args) <- parseUnregisterArgs (uInst,0) args [] + UnregisterCmd uInst genScript -> do + (flags,_, args) <- parseUnregisterArgs (uInst,genScript, 0) args [] hunk ./tests/ModuleTest.hs 349 - dumpScriptFlag = "-v11" + dumpScriptFlag = "--gen-script" hunk ./Distribution/Simple.hs 320 - when (hasLibs pkg_descr) (register pkg_descr localbuildinfo flags) + if hasLibs pkg_descr + then register pkg_descr localbuildinfo flags + else putStrLn "Package contains no library to register." hunk ./tests/ModuleTest.hs 178 - assertCmd' compCmd ("register --user "++dumpScriptFlag) - "pkg A, register dump script failed" - assertCmd' compCmd ("unregister --user "++dumpScriptFlag) - "pkg A, register dump script failed" - assertCmd' "source" "register.sh" "reg script failed" -- FIX: chmod +x instead of source - assertCmd' "source" "unregister.sh" "unreg script failed" -- FIX: chmod +x instead of source + -- tricky, script-based register + registerAndExecute comp "pkg A: register with script failed" + unregisterAndExecute comp "pkg A: unregister with script failed" + -- non-trick non-script based register + assertCmd' compCmd "register --user" "regular register returned error" + assertCmd' compCmd "unregister --user" "regular unregister returned error" + hunk ./tests/ModuleTest.hs 196 - assertCmd' compCmd "install --user" "install --user failed" - libForA ",tmp" - assertCmd' compCmd "unregister --user" "unregister failed" + when (comp == GHC) -- FIX: hugs can't do --user yet + (do assertCmd' compCmd "install --user" "install --user failed" + libForA ",tmp" + assertCmd' compCmd "unregister --user" "unregister failed") hunk ./tests/ModuleTest.hs 256 + -- no register, since there's no library hunk ./tests/ModuleTest.hs 265 - doesFileExist "dist/build/mains/mainForA" >>= - assertBool "build did not create the executable: mainForA" - doesFileExist ("dist/build/" `joinFileName` "libHStest-1.0.a") - >>= assertBool "library doesn't exist" - doesFileExist (",tmp/bin/mainForA") - >>= assertBool "installed bin doesn't exist" - doesFileExist (",tmp/lib/test-1.0/libHStest-1.0.a") - >>= assertBool "installed lib doesn't exist" + registerAndExecute comp "pkg depOnLib: register with script failed" + unregisterAndExecute comp "pkg DepOnLib: unregister with script failed" + when (comp == GHC) (do + doesFileExist "dist/build/mains/mainForA" >>= + assertBool "build did not create the executable: mainForA" + doesFileExist ("dist/build/" `joinFileName` "libHStest-1.0.a") + >>= assertBool "library doesn't exist" + doesFileExist (",tmp/bin/mainForA") + >>= assertBool "installed bin doesn't exist" + doesFileExist (",tmp/lib/test-1.0/libHStest-1.0.a") + >>= assertBool "installed lib doesn't exist") hunk ./tests/ModuleTest.hs 286 + -- no library to register hunk ./tests/ModuleTest.hs 302 + assertCmd' compCmd "register --user" "regular register returned error" + assertCmd' compCmd "unregister --user" "regular unregister returned error" hunk ./tests/ModuleTest.hs 359 + registerAndExecute comp comment = do + assertCmd' compCmd ("register --user "++dumpScriptFlag) comment + if comp == GHC -- FIX: chmod +x instead of source + then assertCmd' "source" "register.sh" "reg script failed" + else do ex <- doesFileExist "register.sh" + assertBool "hugs should not produce register.sh" (not ex) + unregisterAndExecute comp comment = do + assertCmd' compCmd ("unregister --user "++dumpScriptFlag) comment + if comp == GHC -- FIX: chmod +x instead of source + then assertCmd' "source" "unregister.sh" "reg script failed" + else do ex <- doesFileExist "unregister.sh" + assertBool "hugs should not produce unregister.sh" (not ex) + hunk ./tests/Tests.mk 6 - rm -f setup a.out .setup-config + rm -f setup a.out .setup-config register.sh unregister.sh hunk ./tests/withHooks/Setup.buildinfo.in 1 -include-dirs: /foo/bar, /bang/baz +include-dirs: /tmp, /etc hunk ./Distribution/Simple/Register.hs 73 -import Distribution.Compat.Directory (createDirectoryIfMissing,removeDirectoryRecursive) +import Distribution.Compat.Directory (createDirectoryIfMissing,removeDirectoryRecursive, + setPermissions, getPermissions, executable + ) hunk ./Distribution/Simple/Register.hs 270 -rawSystemEmit scriptName True verbosity path args - = writeFile scriptName ("#!/bin/sh\n\n" - ++ (path ++ concatMap (' ':) args) - ++ "\n") - >> putStrLn (path ++ concatMap (' ':) args) +rawSystemEmit scriptName True verbosity path args = do + writeFile scriptName ("#!/bin/sh\n\n" + ++ (path ++ concatMap (' ':) args) + ++ "\n") + putStrLn (path ++ concatMap (' ':) args) + p <- getPermissions scriptName + setPermissions scriptName p{executable=True} hunk ./Distribution/Simple/Register.hs 285 -rawSystemPipe scriptName verbose pipeFrom path args - = writeFile scriptName ("#!/bin/sh\n\n" - ++ "echo '" ++ pipeFrom - ++ "' |" - ++ (path ++ concatMap (' ':) args) - ++ "\n") +rawSystemPipe scriptName verbose pipeFrom path args = do + writeFile scriptName ("#!/bin/sh\n\n" + ++ "echo '" ++ pipeFrom + ++ "' |" + ++ (path ++ concatMap (' ':) args) + ++ "\n") + p <- getPermissions scriptName + setPermissions scriptName p{executable=True} hunk ./tests/ModuleTest.hs 361 - if comp == GHC -- FIX: chmod +x instead of source - then assertCmd' "source" "register.sh" "reg script failed" + if comp == GHC + then assertCmd' "./register.sh" "" "reg script failed" hunk ./tests/ModuleTest.hs 367 - if comp == GHC -- FIX: chmod +x instead of source - then assertCmd' "source" "unregister.sh" "reg script failed" + if comp == GHC + then assertCmd' "./unregister.sh" "" "reg script failed" hunk ./TODO 4 +* Write semantic checker for package description file. start w/ + sanity checker. give error if buildInfo field given when no + exposed or hidden modules for a library. Check for required + fields. + +* Decide on interface +** Which fields are required, which targets required. +** which Distribution.* things won't change? +** document + hunk ./TODO 22 -* Write semantic checker for package description file. start w/ - sanity checker. give error if buildInfo field given when no - exposed or hidden modules for a library. - -* Decide on interface -** Which fields are required -** which Distribution.* things won't change? - -* un/registering the package on the target -** dump shell scripts for registering and unregistering? -** dry run, just to dump the .installed-pkg-config? - -** think about HC-PKG's role here. maybe HC-PKG should do all this instead - -** Should "setup install" copy Setup.lhs, Setup.description, and - local-build-info into a common location for the sake of unregister? - Will we have to make this a requirement of 'install'? (suggested by - kosmikus) Would it be better for HC-PKG to have the unregister - command? -** Add a flag to configure to specify where to put them? - hunk ./TODO 46 - -* Compatibility -** verify windows test suite -** verify ghc6.4 test suite hunk ./tests/A/A.cabal 10 -Other-Modules: A, MainA +Other-Modules: A hunk ./tests/A/A.cabal 15 -Other-Modules: B.A, B.MainB +Other-Modules: B.A adddir ./tests/exeWithC hunk ./Distribution/Simple/Build.hs 78 - searchPathSeparator, objExtension, joinPaths) + searchPathSeparator, objExtension, joinPaths, splitFileName) hunk ./Distribution/Simple/Build.hs 161 - ++ [pref `joinFileName` x | x <- hObjs ++ cObjs] + ++ [pref `joinFileName` x | x <- hObjs ++ cObjs] hunk ./Distribution/Simple/Build.hs 170 + -- build executables + unless (null (cSources exeBi)) $ + sequence_ [do let cSrcODir = exeDir `joinFileName` (fst $ splitFileName c) + createDirectoryIfMissing True cSrcODir + let cArgs = ["-I" ++ dir | dir <- includeDirs exeBi] + ++ ["-optc" ++ opt | opt <- ccOptions exeBi] + ++ ["-odir", cSrcODir, "-hidir", pref, "-c"] + ++ (if verbose > 4 then ["-v"] else []) + rawSystemExit verbose ghcPath (cArgs ++ [c]) + | c <- cSources exeBi] + + let cObjs = [ path `joinFileName` file `joinFileExt` objExtension + | (path, file, _) <- (map splitFilePath (cSources exeBi)) ] hunk ./Distribution/Simple/Build.hs 192 + ++ [exeDir `joinFileName` x | x <- cObjs] hunk ./Distribution/Simple/Build.hs 240 + when (verbose > 3) (putStrLn $ "Source directories: " ++ show srcDirs) hunk ./Distribution/Simple/Build.hs 273 + when (verbose > 2) (putStrLn "Compiling FFI stubs") hunk ./tests/A/A.cabal 12 +C-Sources: c_src/hello.c hunk ./tests/ModuleTest.hs 150 +-- executableWithC + TestLabel ("package exeWithC: " ++ compIdent) $ TestCase $ + do let targetDir =",tmp" + setCurrentDirectory $ (testdir `joinFileName` "exeWithC") + testPrelude + assertConfigure targetDir + assertBuild + assertCopy + assertCmd ",tmp/bin/tt" "exeWithC failed" hunk ./tests/ModuleTest.hs 160 - TestLabel ("package A: " ++ compIdent) $ TestCase $ + ,TestLabel ("package A: " ++ compIdent) $ TestCase $ hunk ./tests/ModuleTest.hs 173 - assertBool "build did not create the executable: testB") + assertBool "build did not create the executable: testB" + doesFileExist "dist/build/testA-tmp/hello.o" >>= + assertBool "build did not build c source for testA" + doesFileExist "dist/build/hello.o" >>= + assertBool "build did not build c source for A library" + ) hunk ./tests/Tests.mk 6 - rm -f setup a.out .setup-config register.sh unregister.sh + rm -f setup a.out .setup-config register.sh unregister.sh out.build hunk ./Distribution/InstalledPackageInfo.hs 61 - parseFilePathQ, parseLibNameQ, parseModuleNameQ, parsePackageNameQ, - showFilePath, parseReadS, parseOptVersion, parseQuoted, + parseFilePathQ, parseTokenQ, parseModuleNameQ, parsePackageNameQ, + showFilePath, showToken, parseReadS, parseOptVersion, parseQuoted, hunk ./Distribution/InstalledPackageInfo.hs 101 - extraHugsOpts :: [Opt], - extraCcOpts :: [Opt], - extraLdOpts :: [Opt], + hugsOptions :: [Opt], + ccOptions :: [Opt], + ldOptions :: [Opt], hunk ./Distribution/InstalledPackageInfo.hs 105 - extraFrameworks :: [String], + frameworks :: [String], hunk ./Distribution/InstalledPackageInfo.hs 114 - package = PackageIdentifier "" noVersion, - license = AllRightsReserved, - copyright = "", - maintainer = "", - author = "", - stability = "", - homepage = "", - pkgUrl = "", - description = "", - category = "", - exposed = False, - exposedModules = [], - hiddenModules = [], - importDirs = [], - libraryDirs = [], - hsLibraries = [], - extraLibraries = [], - includeDirs = [], - includes = [], - depends = [], - extraHugsOpts = [], - extraCcOpts = [], - extraLdOpts = [], - frameworkDirs = [], - extraFrameworks = [], + package = PackageIdentifier "" noVersion, + license = AllRightsReserved, + copyright = "", + maintainer = "", + author = "", + stability = "", + homepage = "", + pkgUrl = "", + description = "", + category = "", + exposed = False, + exposedModules = [], + hiddenModules = [], + importDirs = [], + libraryDirs = [], + hsLibraries = [], + extraLibraries = [], + includeDirs = [], + includes = [], + depends = [], + hugsOptions = [], + ccOptions = [], + ldOptions = [], + frameworkDirs = [], + frameworks = [], hunk ./Distribution/InstalledPackageInfo.hs 160 -parseBasicStanza ((StanzaField name _ _ set):fields) pkg (lineNo, f, val) +parseBasicStanza ((StanzaField name _ set):fields) pkg (lineNo, f, val) hunk ./Distribution/InstalledPackageInfo.hs 172 - ppFields ((StanzaField _ get' _ _):flds) = get' pkg $$ ppFields flds + ppFields ((StanzaField name get' _):flds) = + pprField name (get' pkg) $$ ppFields flds hunk ./Distribution/InstalledPackageInfo.hs 179 - = case [ get' | (StanzaField f get' _ _) <- fields, f == field ] of + = case [ (f,get') | (StanzaField f get' _) <- fields, f == field ] of hunk ./Distribution/InstalledPackageInfo.hs 181 - (get':_) -> Just (render . get') + ((f,get'):_) -> Just (render . pprField f . get') + +pprField name field = text name <> colon <+> field hunk ./Distribution/InstalledPackageInfo.hs 246 - showFilePath parseLibNameQ + showFilePath parseTokenQ hunk ./Distribution/InstalledPackageInfo.hs 248 - , listField "extra-libs" - text parseLibNameQ + , listField "extra-libraries" + showToken parseTokenQ hunk ./Distribution/InstalledPackageInfo.hs 260 - , listField "extra-hugs-opts" - text parseFilePathQ - extraHugsOpts (\path pkg -> pkg{extraHugsOpts=path}) - , listField "extra-cc-opts" - text parseFilePathQ - extraCcOpts (\path pkg -> pkg{extraCcOpts=path}) - , listField "extra-ld-opts" - text parseFilePathQ - extraLdOpts (\path pkg -> pkg{extraLdOpts=path}) + , listField "hugs-options" + showToken parseTokenQ + hugsOptions (\path pkg -> pkg{hugsOptions=path}) + , listField "cc-options" + showToken parseTokenQ + ccOptions (\path pkg -> pkg{ccOptions=path}) + , listField "ld-options" + showToken parseTokenQ + ldOptions (\path pkg -> pkg{ldOptions=path}) hunk ./Distribution/InstalledPackageInfo.hs 272 - , listField "extra-frameworks" - showFilePath parseFilePathQ - extraFrameworks (\xs pkg -> pkg{extraFrameworks=xs}) + , listField "frameworks" + showToken parseTokenQ + frameworks (\xs pkg -> pkg{frameworks=xs}) hunk ./Distribution/PackageDescription.hs 84 -import Text.PrettyPrint.HughesPJ(text, render, ($$), (<+>), empty, space, vcat, fsep) +import Text.PrettyPrint.HughesPJ hunk ./Distribution/PackageDescription.hs 334 - , listField "build-depends" + , commaListField "build-depends" hunk ./Distribution/PackageDescription.hs 384 - , simpleField "cc-options" - (fsep . map text) (fmap words (munch (const True))) + , listField "cc-options" + showToken parseTokenQ hunk ./Distribution/PackageDescription.hs 387 - , simpleField "ld-options" - (fsep . map text) (fmap words (munch (const True))) + , listField "ld-options" + showToken parseTokenQ hunk ./Distribution/PackageDescription.hs 390 - , simpleField "frameworks" - (fsep . map text) (fmap words (munch (const True))) + , listField "frameworks" + showToken parseTokenQ hunk ./Distribution/PackageDescription.hs 400 - text parseLibNameQ + showToken parseTokenQ hunk ./Distribution/PackageDescription.hs 403 - text parseLibNameQ + showFilePath parseFilePathQ hunk ./Distribution/PackageDescription.hs 452 - parseBasicStanza ((StanzaField name _ _ set):fields) pkg (lineNo, f, val) + parseBasicStanza ((StanzaField name _ set):fields) pkg (lineNo, f, val) hunk ./Distribution/PackageDescription.hs 468 - parseExecutableField ((StanzaField name _ _ set):fields) exe (lineNo, f, val) + parseExecutableField ((StanzaField name _ set):fields) exe (lineNo, f, val) hunk ./Distribution/PackageDescription.hs 508 -parseBInfoField ((StanzaField name _ _ set):fields) binfo (lineNo, f, val) +parseBInfoField ((StanzaField name _ set):fields) binfo (lineNo, f, val) hunk ./Distribution/PackageDescription.hs 534 - ppFields pkg' ((StanzaField _ get _ _):flds) = - get pkg' $$ ppFields pkg' flds + ppFields pkg' ((StanzaField name get _):flds) = + ppField name (get pkg') $$ ppFields pkg' flds + +ppField name field = text name <> colon <+> field hunk ./Distribution/PackageDescription.hs 555 - ppFields bi ((StanzaField _ get _ _):flds) = - get bi $$ ppFields bi flds + ppFields bi ((StanzaField name get _):flds) = + ppField name (get bi) $$ ppFields bi flds hunk ./Distribution/ParseUtils.hs 50 - parseFilePathQ, parseLibNameQ, + parseFilePathQ, parseTokenQ, hunk ./Distribution/ParseUtils.hs 54 - showFilePath, showTestedWith, showDependency, showFreeText, - simpleField, listField, optsField, + showFilePath, showToken, showTestedWith, showDependency, showFreeText, + simpleField, listField, commaListField, optsField, hunk ./Distribution/ParseUtils.hs 110 - , fieldShow :: a -> Doc hunk ./Distribution/ParseUtils.hs 116 - (\st -> text name <> colon <+> showF (get st)) - (showF . get) + (\st -> showF (get st)) hunk ./Distribution/ParseUtils.hs 121 +commaListField :: String -> (a -> Doc) -> (ReadP [a] a) -> (b -> [a]) -> ([a] -> b -> b) -> StanzaField b +commaListField name showF readF get set = StanzaField name + (\st -> fsep (punctuate comma (map showF (get st)))) + (\lineNo val st -> do + xs <- runP lineNo name (parseCommaList readF) val + return (set xs st)) + hunk ./Distribution/ParseUtils.hs 130 - (\st -> case get st of - [] -> empty - lst -> - text name <> colon <+> fsep (punctuate comma (map showF lst))) - (\st -> case get st of - [] -> empty - lst -> - vcat (map (\value -> comma <+> showF value) lst)) + (\st -> fsep (map showF (get st))) hunk ./Distribution/ParseUtils.hs 132 - xs <- runP lineNo name (parseCommaList readF) val + xs <- runP lineNo name (parseOptCommaList readF) val hunk ./Distribution/ParseUtils.hs 138 - Just args -> text name <> colon <+> hsep (map text args) - Nothing -> empty) - (\st -> case lookup flavor (get st) of - Just args -> sep (map text args) + Just args -> hsep (map text args) hunk ./Distribution/ParseUtils.hs 209 -parseFilePathQ = parseReadS <++ (munch1 (\x -> isAlphaNum x || x `elem` "-+/_.")) +parseFilePathQ = parseTokenQ hunk ./Distribution/ParseUtils.hs 251 -parseLibNameQ :: ReadP r String -parseLibNameQ = parseReadS <++ munch1 (\x -> not (isSpace x) && x /= ',') +parseTokenQ :: ReadP r String +parseTokenQ = parseReadS <++ munch1 (\x -> not (isSpace x) && x /= ',') hunk ./Distribution/ParseUtils.hs 258 + +parseOptCommaList :: ReadP r a -- ^The parser for the stuff between commas + -> ReadP r [a] +parseOptCommaList p = sepBy p separator + where separator = skipSpaces >> optional (ReadP.char ',') >> skipSpaces hunk ./Distribution/ParseUtils.hs 271 -showFilePath fpath - | all (\x -> isAlphaNum x || x `elem` "-+/_.") fpath = text (replaceSlash fpath) - | otherwise = doubleQuotes (text (replaceSlash fpath)) - where - replaceSlash s = case break (== '\\') s of - (a, (h:t)) -> a ++ (h:h:(replaceSlash t)) - (a, []) -> a +showFilePath = showToken + +showToken :: String -> Doc +showToken str + | not (any dodgy str) = text str + | otherwise = text (show str) + where dodgy c = isSpace c || c == ',' hunk ./Distribution/Simple/Install.hs 159 - (otherModules (buildInfo exe)) hugsInstallSuffixes - let fname = hugsMainFilename exe - copyFileVerbose verbose (buildDir `joinFileName` fname) - (installDir `joinFileName` fname) + ("Main" : otherModules (buildInfo exe)) hugsInstallSuffixes hunk ./Distribution/Simple/Install.hs 162 - let targetName = targetDir `joinFileName` fname + let targetName = targetDir `joinFileName` hugsMainFilename exe hunk ./Distribution/Simple/Register.hs 73 -import Distribution.Compat.Directory (createDirectoryIfMissing,removeDirectoryRecursive, - setPermissions, getPermissions, executable - ) +import Distribution.Compat.Directory + (createDirectoryIfMissing,removeDirectoryRecursive, + setPermissions, getPermissions, Permissions(executable) + ) hunk ./Distribution/Simple/Register.hs 221 - IPI.extraHugsOpts = concat [opts | (Hugs,opts) <- options bi], - IPI.extraCcOpts = ccOptions bi, - IPI.extraLdOpts = ldOptions bi, + IPI.hugsOptions = concat [opts | (Hugs,opts) <- options bi], + IPI.ccOptions = ccOptions bi, + IPI.ldOptions = ldOptions bi, hunk ./Distribution/Simple/Register.hs 225 - IPI.extraFrameworks = frameworks bi, + IPI.frameworks = frameworks bi, hunk ./Distribution/Simple/Register.hs 228 - } + } hunk ./doc/Cabal.xml 443 - The name of the source file containing the main module, - relative to the hs-sources directory - (required). + The name of the source file containing the + Main module, relative to the + hs-source-dir directory (required). hunk ./doc/Cabal.xml 881 + The first line readies the system to build the tool using GHC; + for example, it checks that GHC exists on the system. The second + line performs the actual building, while the last both copies + the build results to some permanent place and registers the + package with GHC. hunk ./doc/Cabal.xml 887 - The first line readies the system to build the tool using GHC; - for example, it checks that GHC exists on the system. The second - line performs the actual building, while the last both copies the - build results to some permanent place and registers the package - with GHC. hunk ./doc/Cabal.xml 909 - After unpacking on the target system, the package must be - registered: - runhaskell Setup.lhs register - A similar procedure would be needed for creating Windows - installer packages. + + If the package contains a library, you need two additional + steps: + +runhaskell Setup.hs register --gen-script +runhaskell Setup.hs unregister --gen-script + This creates shell scripts register.sh + and unregister.sh, which must also be sent + to the target system. After unpacking there, the package must be + registered by running the register.sh script. + The unregister.sh script would be used + in the uninstall procedure of the package. There is not yet a + similar procedure for creating Windows installer packages. hunk ./doc/Cabal.xml 1162 + + + + + Instead of registering the package, generate a script + register.sh containing commands to + perform the register step. This file might be included + in a binary bundle, to be run after the bundle is unpacked + on the target system. + + hunk ./doc/Cabal.xml 1198 + + + + + Instead of deregistering the package, generate a script + unregister.sh containing commands to + perform the unregister step. This file might be included + in a binary bundle, to be run on the target system. + + hunk ./doc/Cabal.xml 1219 - This command is intended to create a system- and - compiler-independent source distribution, but it's not working - yet. - - The plan is to produce a file + Create a system- and compiler-independent source distribution + in a file hunk ./doc/Cabal.xml 1222 - which can be distributed to package builders. When unpacked, + that can be distributed to package builders. When unpacked, hunk ./doc/Cabal.xml 1224 + + However this command is not yet working in the simple build + infrastructure. hunk ./doc/Cabal.xml 1228 +
+ +
+ Known bugs and deficiencies + + All these should be fixed in future versions: + + + + In the simple build infrastructure, the + sdist command does not work. + + + + Cabal has some limitations both running under Hugs + and building packages for it: + + + Cabal does not work with the current stable release + (Nov 2003), just the development version. + + + + It doesn't work with Windows. + + + + The option is unavailable. + + + + There is no hugs-pkg tool. + + + + + + Though the library runs under Nhc98, it cannot build + packages for Nhc98. + + + + + Please report any other flaws to + libraries@haskell.org. hunk ./package.conf.in 42 -extra-libs: +extra-libraries: hunk ./package.conf.in 50 -extra-hugs-opts: -extra-cc-opts: -extra-ld-opts: +hugs-options: +cc-options: +ld-options: hunk ./package.conf.in 54 -extra-frameworks: +frameworks: hunk ./Distribution/PackageDescription.hs 399 - , listField "extra-libs" + , listField "extra-libraries" hunk ./Distribution/PackageDescription.hs 417 - , optsField "options-ghc" GHC + , optsField "ghc-options" GHC hunk ./Distribution/PackageDescription.hs 419 - , optsField "options-hugs" Hugs + , optsField "hugs-options" Hugs hunk ./Distribution/PackageDescription.hs 421 - , optsField "options-nhc" NHC + , optsField "nhc-options" NHC hunk ./Distribution/PackageDescription.hs 634 - "Extra-Libs: libfoo, bar, bang", + "Extra-Libraries: libfoo, bar, bang", hunk ./Distribution/PackageDescription.hs 638 - "Options-ghc: -fTH -fglasgow-exts", - "Options-hugs: +TH", + "GHC-Options: -fTH -fglasgow-exts", + "Hugs-Options: +TH", hunk ./Distribution/Simple/Build.hs 195 + ++ ["-l"++lib | lib <- extraLibs exeBi] + ++ ["-L"++libDir | libDir <- extraLibDirs exeBi] hunk ./Distribution/Simple/Configure.hs 141 - comp@(Compiler f' ver p' pkg) <- configCompiler (configHcFlavor cfg) (configHcPath cfg) (configHcPkg cfg) pkg_descr + comp@(Compiler f' ver p' pkg) <- configCompiler cfg hunk ./Distribution/Simple/Configure.hs 171 - ipkgs <- getInstalledPackages comp (configUser cfg) + ipkgs <- getInstalledPackages comp cfg hunk ./Distribution/Simple/Configure.hs 223 -getInstalledPackages :: Compiler -> Bool -> IO [PackageIdentifier] -getInstalledPackages comp user = do +getInstalledPackages :: Compiler -> ConfigFlags -> IO [PackageIdentifier] +getInstalledPackages comp cfg = do hunk ./Distribution/Simple/Configure.hs 227 - let user_flag = if user then " --user" else " --global" - res <- system (compilerPkgTool comp ++ user_flag ++ " list >" ++ tmp) + let user_flag = if configUser cfg then " --user" else " --global" + cmd_line = compilerPkgTool comp ++ user_flag ++ " list >" ++ tmp + when (configVerbose cfg > 0) $ + putStrLn cmd_line + res <- system cmd_line hunk ./Distribution/Simple/Configure.hs 268 -configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath - -> PackageDescription -> IO Compiler - -configCompiler (Just flavor) maybe_compiler maybe_pkgtool _ - = do comp <- - case maybe_compiler of +configCompiler :: ConfigFlags -> IO Compiler +configCompiler cfg + = do let flavor = case configHcFlavor cfg of + Just f -> f + Nothing -> defaultCompilerFlavor + comp <- + case configHcPath cfg of hunk ./Distribution/Simple/Configure.hs 278 - ver <- configCompilerVersion flavor comp + ver <- configCompilerVersion flavor comp cfg hunk ./Distribution/Simple/Configure.hs 281 - case maybe_pkgtool of + case configHcPkg cfg of hunk ./Distribution/Simple/Configure.hs 290 -configCompiler Nothing maybe_path maybe_hc_pkg pkg_descr - = configCompiler (Just defaultCompilerFlavor) - maybe_path maybe_hc_pkg pkg_descr - hunk ./Distribution/Simple/Configure.hs 325 -configCompilerVersion :: CompilerFlavor -> FilePath -> IO Version -configCompilerVersion GHC compilerP = +configCompilerVersion :: CompilerFlavor -> FilePath -> ConfigFlags -> IO Version +configCompilerVersion GHC compilerP cfg = hunk ./Distribution/Simple/Configure.hs 328 - maybeExit $ system (compilerP ++ " --version >" ++ tmp) + let cmd_line = compilerP ++ " --version >" ++ tmp + when (configVerbose cfg > 0) $ + putStrLn cmd_line + maybeExit $ system cmd_line hunk ./Distribution/Simple/Configure.hs 337 -configCompilerVersion _ _ = return Version{ versionBranch=[],versionTags=[] } +configCompilerVersion _ _ _ = return Version{ versionBranch=[],versionTags=[] } hunk ./doc/Cabal.xml 217 + The syntax of the value depends on the field. Field types + include: + + + + + token + + + filename + + + directory + + + Either a sequence of one or more non-space non-comma + characters, or a quoted string in Haskell 98 lexical + syntax. + + + + + + freeform + + + URL + + + address + + + An arbitrary, uninterpreted string. + + + + + + identifier + + + A letter followed by zero or more alphanumerics + or underscores. + + + + + Some fields take lists of values, which + are optionally separated by commas, except for the + build-depends field, where the commas are + mandatory. + hunk ./doc/Cabal.xml 285 - version: string + version: numbers hunk ./doc/Cabal.xml 296 - license: string + license: identifier hunk ./doc/Cabal.xml 318 - freeform text + freeform hunk ./doc/Cabal.xml 328 - freeform text + freeform hunk ./doc/Cabal.xml 338 - email address + address hunk ./doc/Cabal.xml 349 - freeform text + freeform hunk ./doc/Cabal.xml 380 - freeform text + freeform hunk ./doc/Cabal.xml 394 - freeform text + freeform hunk ./doc/Cabal.xml 406 - freeform text + freeform hunk ./doc/Cabal.xml 443 - module list + identifier list hunk ./doc/Cabal.xml 483 - executable: string + executable: + freeform hunk ./doc/Cabal.xml 531 - module list + identifier list hunk ./doc/Cabal.xml 556 - string list + identifier list hunk ./doc/Cabal.xml 575 - options-ghc: - string list + ghc-options: + token list hunk ./doc/Cabal.xml 591 - options-hugs: - string list + hugs-options: + token list hunk ./doc/Cabal.xml 607 - options-nhc: - string list + nhc-options: + token list hunk ./doc/Cabal.xml 624 - string list + filename list hunk ./doc/Cabal.xml 664 - extra-libs: - string list + extra-libraries: + token list hunk ./doc/Cabal.xml 675 - string list + directory list hunk ./doc/Cabal.xml 685 - space separated list + token list hunk ./doc/Cabal.xml 698 - space separated list + token list hunk ./doc/Cabal.xml 711 - space separated list + token list hunk ./tests/ModuleTest.hs 174 - doesFileExist "dist/build/testA-tmp/hello.o" >>= + doesFileExist "dist/build/testA-tmp/c_src/hello.o" >>= hunk ./Distribution/PackageDescription.hs 83 -import Data.Maybe(fromMaybe, fromJust, isNothing) +import Data.Maybe(fromMaybe, fromJust, isNothing, catMaybes) hunk ./Distribution/PackageDescription.hs 640 + "Nhc-Options: ", hunk ./Distribution/PackageDescription.hs 647 - "Extensions: OverlappingInstances" + "Extensions: OverlappingInstances", + "GHC-Options: ", + "Hugs-Options: ", + "Nhc-Options: " hunk ./Distribution/PackageDescription.hs 693 - options = [(Hugs,["+TH"]), (GHC,["-fTH","-fglasgow-exts"])]} + options = [(NHC, []), (Hugs,["+TH"]), (GHC,["-fTH","-fglasgow-exts"])]} hunk ./Distribution/PackageDescription.hs 700 - extensions = [OverlappingInstances] + extensions = [OverlappingInstances], + options = [(NHC,[]),(Hugs,[]),(GHC,[])] hunk ./Distribution/PackageDescription.hs 739 - ParseOk d -> assertParseOk "parse . show . parse not identity" - testPkgDescAnswer (parseDescription $ showPackageDescription d) - ] + ParseOk d -> case parseDescription $ showPackageDescription d of + ParseFailed _ -> + assertBool "can't parse description after pretty print!" False + ParseOk d' -> + assertBool ("parse . show . parse not identity." + ++" Incorrect fields:" + ++ (show $ comparePackageDescriptions d d')) + (d == d') + + ] hunk ./Distribution/PackageDescription.hs 750 +-- |Compare two package descriptions and see which fields aren't the same. +comparePackageDescriptions :: PackageDescription + -> PackageDescription + -> [String] -- ^Errors +comparePackageDescriptions p1 p2 + = catMaybes $ myCmp package "package" : myCmp license "license": myCmp licenseFile "licenseFile": myCmp copyright "copyright": myCmp maintainer "maintainer": myCmp author "author": myCmp stability "stability": myCmp testedWith "testedWith": myCmp homepage "homepage": myCmp pkgUrl "pkgUrl": myCmp synopsis "synopsis": myCmp description "description": myCmp category "category": myCmp buildDepends "buildDepends": myCmp library "library": myCmp executables "executables": [] hunk ./Distribution/PackageDescription.hs 757 + + where myCmp :: (Eq a, Show a) => (PackageDescription -> a) + -> String -- Error message + -> Maybe String -- + myCmp f er = let e1 = f p1 + e2 = f p2 + in if e1 == e2 + then Nothing + else Just (er ++ " Expected: " ++ show e1 + ++ " Got: " ++ show e2) + +-- |Assert that the 2nd value parses correctly and matches the first value addfile ./runTests.sh hunk ./runTests.sh 1 +#!/bin/sh + +HCBASE=/usr/bin/ +HC=$HCBASE/ghc +GHCFLAGS='--make -Wall -fno-warn-unused-matches -cpp' +ISPOSIX=-DHAVE_UNIX_PACKAGE + +rm moduleTest +mkdir -p dist/debug +$HC $GHCFLAGS $ISPOSIX -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest +./moduleTest hunk ./Cabal.cabal 2 -Version: 0.6 +Version: 0.5 hunk ./GNUmakefile 1 -CABALVERSION=0.4 +CABALVERSION=0.5 hunk ./GNUmakefile 58 + ./setup configure hunk ./GNUmakefile 61 +clean-doc: + cd doc && make clean + +doc: haddock + docbook2html doc/Cabal.xml --output doc/users-guide + hunk ./GNUmakefile 147 + rm -rf $(TMPDISTLOC) hunk ./GNUmakefile 151 - mkdir $(TMPDISTLOC)/cabal/doc + #mkdir $(TMPDISTLOC)/cabal/doc + make doc hunk ./GNUmakefile 154 + cp -r doc/users-guide $(TMPDISTLOC)/cabal/doc/users-guide hunk ./changelog 3 -0.6 Isaac Jones Wed Feb 2 2005 - * No more executable-modules. Use "hidden-modules" instead. - +0.5 Isaac Jones Wed Feb 19 2005 + * WARNING: this is a pre-release and the interfaces are still + likely to change until we reach a 1.0 release. + * Hooks interfaces changed + * Added preprocessors to user hooks + * No more executable-modules or hidden-modules. Use + "other-modules" instead. + * Certain fields moved into BuildInfo, much refactoring + * extra-libs -> extra-libraries + * Added --gen-script to configure and unconfigure. + * modules-ghc (etc) now ghc-modules (etc) + * added new fields including "synopsis" + * Lots of bug fixes + * spaces can sometimes be used instead of commas + * A user manual has appeared (Thanks, ross!) + * for ghc 6.4, configures versionsed depends properly + * more features to ./setup haddock hunk ./debian/changelog 1 +haskell-cabal (0.5-1) unstable; urgency=low + + * new upstream version. see upstream changelog for more info. + * some interface changes, see upstream changelog + + -- Isaac Jones Sat, 19 Feb 2005 12:41:18 -0800 + hunk ./debian/libghc6-cabal-dev.postinst 22 - /usr/lib/ghc-6.2.2/bin/ghc-pkg-6.2.2 -g --add-package \ - < /usr/share/doc/libghc6-cabal-dev/installed-pkg-config + /usr/share/doc/libghc6-cabal-dev/register.sh hunk ./debian/libghc6-cabal-dev.prerm 22 - /usr/lib/ghc-6.2.2/bin/ghc-pkg-6.2.2 -r Cabal - rm /usr/lib/haskell-packages/ghc6/lib/Cabal-0.4/HSCabal*.o + /usr/share/doc/libghc6-cabal-dev/unregister.sh + rm -f /usr/lib/haskell-packages/ghc6/lib/Cabal-0.5/HSCabal*.o hunk ./debian/rules 27 +cp $(CURDIR)/doc/API $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) +cp $(CURDIR)/doc/users-guide $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) hunk ./debian/rules 30 -cp .installed-pkg-config $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE)/installed-pkg-config +#generate the register and unregister scripts +./setup register --gen-script +./setup unregister --gen-script +# install them for later +cp register.sh $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE)/register.sh +cp unregister.sh $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE)/unregister.sh hunk ./doc/Cabal.xml 925 - runhaskell Setup.hs + runhaskell Setup.hs hunk ./doc/GNUmakefile 4 +clean: + rm -fr *~ API users-guide Cabal.pdf Cabal.dvi semantic.cache + hunk ./GNUmakefile 147 + darcs record hunk ./debian/rules 27 -cp $(CURDIR)/doc/API $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) -cp $(CURDIR)/doc/users-guide $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) +cp -r $(CURDIR)/doc/API $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) +cp -r $(CURDIR)/doc/users-guide $(CURDIR)/debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) hunk ./GNUmakefile 139 + darcs record hunk ./GNUmakefile 148 - darcs record hunk ./debian/libghc6-cabal-dev.postinst 22 - /usr/share/doc/libghc6-cabal-dev/register.sh + source /usr/share/doc/libghc6-cabal-dev/register.sh hunk ./debian/libghc6-cabal-dev.prerm 22 - /usr/share/doc/libghc6-cabal-dev/unregister.sh + source /usr/share/doc/libghc6-cabal-dev/unregister.sh hunk ./debian/libghc6-cabal-dev.postinst 22 - source /usr/share/doc/libghc6-cabal-dev/register.sh + chmod +x /usr/share/doc/libghc6-cabal-dev/register.sh + /usr/share/doc/libghc6-cabal-dev/register.sh hunk ./debian/libghc6-cabal-dev.prerm 22 - source /usr/share/doc/libghc6-cabal-dev/unregister.sh + chmod +x /usr/share/doc/libghc6-cabal-dev/unregister.sh + /usr/share/doc/libghc6-cabal-dev/unregister.sh hunk ./Cabal.cabal 2 -Version: 0.5 +Version: 0.6 hunk ./GNUmakefile 1 -CABALVERSION=0.5 +CABALVERSION=0.6 hunk ./debian/libghc6-cabal-dev.prerm 24 - rm -f /usr/lib/haskell-packages/ghc6/lib/Cabal-0.5/HSCabal*.o + rm -f /usr/lib/haskell-packages/ghc6/lib/Cabal-0.6/HSCabal*.o hunk ./Distribution/Simple/Register.hs 57 +#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ < 603 +#include "config.h" +#else +#include "ghcconfig.h" +#endif +#endif + hunk ./Distribution/Simple/Register.hs 98 +#ifdef mingw32_TARGET_OS +regScriptLocation = "register.bat" +#else hunk ./Distribution/Simple/Register.hs 102 +#endif hunk ./Distribution/Simple/Register.hs 105 +#ifdef mingw32_TARGET_OS +unregScriptLocation = "unregister.bat" +#else hunk ./Distribution/Simple/Register.hs 109 +#endif hunk ./Distribution/Simple/Register.hs 154 - | ghc_63_plus = ["update", installedPkgConfigFile] + | ghc_63_plus = "update": +#ifndef mingw32_TARGET_OS + if genScript + then [] + else +#endif + [installedPkgConfigFile] hunk ./Distribution/Simple/Register.hs 162 +#ifndef mingw32_TARGET_OS hunk ./Distribution/Simple/Register.hs 165 - else ["--input-file="++installedPkgConfigFile] + else +#endif + ["--input-file="++installedPkgConfigFile] hunk ./Distribution/Simple/Register.hs 297 +#ifdef mingw32_TARGET_OS + writeFile scriptName ("@" ++ path ++ concatMap (' ':) args) +#else hunk ./Distribution/Simple/Register.hs 303 - putStrLn (path ++ concatMap (' ':) args) hunk ./Distribution/Simple/Register.hs 305 +#endif hunk ./Distribution/Simple/Register.hs 315 +#ifdef mingw32_TARGET_OS + writeFile scriptName ("@" ++ path ++ concatMap (' ':) args) +#else hunk ./Distribution/Simple/Register.hs 320 - ++ "' |" + ++ "' | " hunk ./Distribution/Simple/Register.hs 325 +#endif hunk ./Distribution/Simple.hs 424 - preBuild = readHook, - preClean = readHook, - preCopy = readHook, - preInst = readHook, - preSDist = readHook, - preReg = readHook, - preUnreg = readHook + preBuild = readHook id, + preClean = readHook id, + preCopy = readHook snd, + preInst = readHook snd, + preSDist = readHook id, + preReg = readHook thd3, + preUnreg = readHook thd3 hunk ./Distribution/Simple.hs 438 - rawSystem "sh" + rawSystemVerbose (configVerbose flags) "sh" hunk ./Distribution/Simple.hs 445 - readHook :: Args -> a -> IO HookedBuildInfo - readHook a _ = do + readHook :: (a -> Int) -> Args -> a -> IO HookedBuildInfo + readHook verbose a flags = do hunk ./Distribution/Simple.hs 451 - Just infoFile -> readHookedBuildInfo infoFile + Just infoFile -> do + when (verbose flags > 0) $ + putStrLn $ "Reading parameters from " ++ infoFile + readHookedBuildInfo infoFile + + thd3 (_,_,z) = z hunk ./TODO 4 +* Install libraries in $libdir/ghc-$ghc_version/ rather than $libdir. + hunk ./doc/Cabal.xml 12 - Common Architecture for Building Applications and Tools + Common Architecture for Building Applications and Libraries hunk ./doc/Cabal.xml 197 - The package description file should have a name - ending in .cabal, and contain several - stanzas separated by blank lines. + + The package description file should have a name ending in + .cabal. There must be exactly + one such file in the directory, and the first part of the name is + immaterial, but it is conventional to use the package name. + + This file should contain several + stanzas separated by blank lines. hunk ./doc/Cabal.xml 238 - characters, or a quoted string in Haskell 98 lexical - syntax. + characters, or a quoted string in Haskell 98 lexical syntax. + Unless otherwise stated, relative filenames and directories + are interpreted from the package root directory. hunk ./doc/Cabal.xml 554 - The name of root directory of the module - hierarchy, relative to the package root + The name of root directory of the module hierarchy hunk ./doc/Cabal.xml 632 - A list of header files, typically + A list of header files from standard include directories + or those listed in include-dirs, typically hunk ./doc/Cabal.xml 758 - If the file + If the package root directory contains a file called hunk ./doc/Cabal.xml 760 - exists after the configuration step, subsequent steps will read - it to obtain additional settings for build information fields + after the configuration step, subsequent steps will read it + to obtain additional settings for build information fields hunk ./doc/Cabal.xml 979 - in the uninstall procedure of the package. There is not yet a - similar procedure for creating Windows installer packages. + in the uninstall procedure of the package. Similar steps may + be used for creating binary backages for Windows. hunk ./doc/Cabal.xml 1226 - register.sh containing commands to - perform the register step. This file might be included - in a binary bundle, to be run after the bundle is unpacked - on the target system. + containing commands to perform the registration. On Unix, + this file is called register.sh, on + Windows, register.bat. This script + might be included in a binary bundle, to be run after the + bundle is unpacked on the target system. hunk ./doc/Cabal.xml 1263 - unregister.sh containing commands to - perform the unregister step. This file might be included - in a binary bundle, to be run on the target system. + containing commands to perform the deregistration. On Unix, + this file is called unregister.sh, on + Windows, unregister.bat. This script + might be included in a binary bundle, to be run on the + target system. hunk ./doc/Cabal.xml 1301 + + + + The scheme described in + will not work on Windows without MSYS or Cygwin. hunk ./Distribution/PackageDescription.hs 51 - sanityCheckPackage, + sanityCheckPackage, errorOut, hunk ./Distribution/PackageDescription.hs 81 -import Control.Monad(liftM, foldM, when) +import Control.Monad(liftM, foldM, when, unless) hunk ./Distribution/PackageDescription.hs 101 -import HUnit (Test(..), assertBool, Assertion, runTestTT, Counts) +import HUnit (Test(..), assertBool, Assertion, runTestTT, Counts, assertEqual) hunk ./Distribution/PackageDescription.hs 314 +-- the strings for the required fields are necessary here, and so we +-- don't repeat ourselves, I name them: + +reqNameName = "name" +reqNameVersion = "version" +reqNameCopyright = "copyright" +reqNameMaintainer = "maintainer" +reqNameSynopsis = "synopsis" + hunk ./Distribution/PackageDescription.hs 325 - [ simpleField "name" + [ simpleField reqNameName hunk ./Distribution/PackageDescription.hs 328 - , simpleField "version" + , simpleField reqNameVersion hunk ./Distribution/PackageDescription.hs 337 - , simpleField "copyright" + , simpleField reqNameCopyright hunk ./Distribution/PackageDescription.hs 340 - , simpleField "maintainer" + , simpleField reqNameMaintainer hunk ./Distribution/PackageDescription.hs 355 - , simpleField "synopsis" + , simpleField reqNameSynopsis hunk ./Distribution/PackageDescription.hs 434 + hunk ./Distribution/PackageDescription.hs 575 --- FIX: add a sanity check for missing haskell files? -sanityCheckPackage :: PackageDescription -> IO Bool +-- FIX: add a sanity check for missing haskell files? That's why its +-- in the IO monad. + +sanityCheckPackage :: PackageDescription -> IO ([String] -- Warnings + ,[String])-- Errors hunk ./Distribution/PackageDescription.hs 581 - = do libSane <- sanityCheckLib (library pkg_descr) - identSane <- checkSanity - (null (pkgName (package pkg_descr)) - || null (versionBranch (pkgVersion (package pkg_descr)))) - "package identifier malformed, either empty name or empty version" - nothingToDo <- checkSanity - (null (executables pkg_descr) && isNothing (library pkg_descr)) - "No executables and no library found. Nothing to do." - noModules <- checkSanity (hasMods pkg_descr) + = let libSane = sanityCheckLib (library pkg_descr) + nothingToDo = checkSanity + (null (executables pkg_descr) && isNothing (library pkg_descr)) + "No executables and no library found. Nothing to do." + noModules = checkSanity (hasMods pkg_descr) hunk ./Distribution/PackageDescription.hs 587 + allRights = checkSanity (license pkg_descr == AllRightsReserved) + "Package is copyright All Rights Reserved" + noLicenseFile = checkSanity (null $ licenseFile pkg_descr) + "No license-file field." hunk ./Distribution/PackageDescription.hs 592 - return $ any (==True) [libSane, identSane, nothingToDo, noModules] + in return $ (catMaybes [nothingToDo, noModules, + allRights, noLicenseFile] + ,catMaybes $ libSane:(checkMissingFields pkg_descr)) hunk ./Distribution/PackageDescription.hs 596 -sanityCheckLib :: Maybe Library -> IO Bool -sanityCheckLib Nothing = return True +-- |Output warnings and errors. Exit if any errors. +errorOut :: [String] -- ^Warnings + -> [String] -- ^errors + -> IO () +errorOut warnings errors = do + mapM (putStrLn . ("Warning: " ++)) warnings + mapM (putStrLn . ("Error: " ++)) errors + unless (null errors) (error "Errors detected. See above.") + +checkMissingFields :: PackageDescription -> [Maybe String] +checkMissingFields pkg_descr = + [missingField (pkgName . package) reqNameName + ,missingField copyright reqNameCopyright + ,missingField maintainer reqNameMaintainer + ,missingField synopsis reqNameSynopsis + ,missingField (versionBranch .pkgVersion .package) reqNameVersion + ] + where missingField :: (PackageDescription -> [a]) -- Field accessor + -> String -- Name of field + -> Maybe String -- error message + missingField f n + = if null (f pkg_descr) + then Just $ "Missing field: " ++ n + else Nothing + +sanityCheckLib :: Maybe Library -> Maybe String +sanityCheckLib Nothing = Nothing hunk ./Distribution/PackageDescription.hs 625 - then sanityWarning "Non-empty library, but empty exposed modules list. Cabal may not build this library correctly" - else return True + then Just "Non-empty library, but empty exposed modules list. Cabal may not build this library correctly" + else Nothing hunk ./Distribution/PackageDescription.hs 628 -checkSanity :: Bool -> String -> IO Bool -checkSanity False _ = return False -checkSanity True s = sanityWarning s - -sanityWarning :: String -> IO Bool -sanityWarning s = do putStrLn $ "Sanity Check Warning: " ++ s - return True +checkSanity :: Bool -> String -> Maybe String +checkSanity False _ = Nothing +checkSanity True s = Just s hunk ./Distribution/PackageDescription.hs 782 - (d == d') - + (d == d'), + TestLabel "Sanity checker" $ TestCase $ do + (warns, ers) <- sanityCheckPackage emptyPackageDescription + assertEqual "Wrong number of errors" (length ers) 5 + assertEqual "Wrong number of warnings" (length warns) 4 hunk ./Distribution/Simple.hs 202 - sanityCheckPackage pkg_descr + (warns, ers) <- sanityCheckPackage pkg_descr + errorOut warns ers hunk ./tests/A/A.cabal 3 +copyright: filler for test suite +maintainer: Isaac Jones hunk ./tests/HSQL/HSQL.cabal 4 +copyright: filler for test suite +maintainer: filler for test suite hunk ./tests/HUnit-1.0/HUnit.cabal 3 +copyright: filler for test suite +maintainer: filler for test suite +synopsis: filler for test suite hunk ./tests/depOnLib/test.cabal 4 +copyright: filler for test suite +maintainer: filler for test suite +synopsis: filler for test suite hunk ./tests/twoMains/test.cabal 3 +copyright: filler for test suite +maintainer: filler for test suite +synopsis: filler for test suite hunk ./tests/wash2hs/wash2hs.cabal 5 +copyright: filler for test suite +maintainer: filler for test suite +synopsis: filler for test suite hunk ./tests/withHooks/withHooks.cabal 3 +copyright: filler for test suite +maintainer: filler for test suite +synopsis: filler for test suite hunk ./Distribution/PackageDescription.hs 48 + StanzaField(..), + LineNo, hunk ./Distribution/PackageDescription.hs 610 - ,missingField copyright reqNameCopyright - ,missingField maintainer reqNameMaintainer - ,missingField synopsis reqNameSynopsis hunk ./TODO 6 -* Write semantic checker for package description file. start w/ - sanity checker. give error if buildInfo field given when no - exposed or hidden modules for a library. Check for required - fields. +* do something with stub files generated by ghc? hunk ./TODO 54 -** clarify relationship between exposed-modules and modules, etc. +** clarify relationship between other-modules and modules, etc. hunk ./doc/Cabal.xml 146 +Synopsis: Small package with two programs hunk ./doc/Cabal.xml 167 +Synopsis: Package with library and two programs hunk ./doc/Cabal.xml 171 -Executable: program1 -Main-Is: Main.hs -Hs-Source-Dir: prog1 -Other-Modules: A, B +Executable: program1 +Main-Is: Main.hs +Hs-Source-Dir: prog1 +Other-Modules: A, B hunk ./doc/Cabal.xml 176 -Executable: program2 -Main-Is: Main.hs -Hs-Source-Dir: prog2 -Other-Modules: A, C, Utils +Executable: program2 +Main-Is: Main.hs +Hs-Source-Dir: prog2 +Other-Modules: A, C, Utils hunk ./doc/Cabal.xml 277 + Some fields are marked as required. All others are optional, + and unless otherwise specified have empty default values. + hunk ./doc/Cabal.xml 287 + (required) hunk ./doc/Cabal.xml 290 - The unique name of the package, without the version number - (required). + The unique name of the package, without the version + number. hunk ./doc/Cabal.xml 298 + (required) hunk ./doc/Cabal.xml 301 - The package version number, usually consisting of - a sequence of natural numbers separated by dots - (required). + The package version number, usually consisting of a + sequence of natural numbers separated by dots. hunk ./doc/Cabal.xml 309 + (default: AllRightsReserved) hunk ./doc/Cabal.xml 313 - License names are the constants of the &License; type. + License names are the constants of the &License; type. hunk ./doc/Cabal.xml 334 - The name of the holder of the copyright on the package. + The content of a copyright notice, typically the name of + the holder of the copyright on the package and the year(s) + from which copyright is claimed. hunk ./doc/Cabal.xml 356 - The current maintainer of the package, if different - from the author. + The current maintainer or maintainers of the package. + This is an e-mail address to which users should send bug + reports, feature requests and patches. hunk ./doc/Cabal.xml 399 - A very short description of the package, - for use in a table of packages. This is your headline, - so keep it short (one line) but as informative as possible. - Save space by not including the package name or saying - it's written in Haskell. + A very short description of the package, for use in a + table of packages. This is your headline, so keep it short + (one line) but as informative as possible. Save space + by not including the package name or saying it's written + in Haskell. hunk ./doc/Cabal.xml 460 + (required if this package contains a library) hunk ./doc/Cabal.xml 463 - A list of modules added by this package (required if - this package contains a library). + A list of modules added by this package. hunk ./doc/Cabal.xml 501 + (required) hunk ./doc/Cabal.xml 504 - The name of the executable program (required). + The name of the executable program. hunk ./doc/Cabal.xml 511 + (required) hunk ./doc/Cabal.xml 516 - hs-source-dir directory (required). + hs-source-dir directory. hunk ./doc/Cabal.xml 535 + (default: True) hunk ./doc/Cabal.xml 539 - (default: True.) hunk ./doc/Cabal.xml 564 + (default: .) hunk ./doc/Cabal.xml 567 - The name of root directory of the module hierarchy - (default: .). + The name of root directory of the module + hierarchy. hunk ./doc/Cabal.xml 645 - A list of header files from standard include directories - or those listed in include-dirs, typically - containing function prototypes for any foreign imports - used by the package. These will be included in any - compilations via C. + A list of header files from standard + include directories or those listed in + include-dirs, to be included in any + compilations via C. These files typically contain + function prototypes for foreign imports used by the + package. hunk ./doc/Cabal.xml 660 - A list of directories to search for - header files. + A list of directories to search for header files, + both when using a C preprocessor and when compiling + via C. hunk ./doc/Cabal.xml 735 - On Darwin/MacOS X, a list of - frameworks to link to. Take a look at Apple's developer - documentation to find out what frameworks actually are. - This entry is ignored on all other platforms. + On Darwin/MacOS X, a list of frameworks to link to. + See Apple's developer documentation for more details + on frameworks. This entry is ignored on all other + platforms. hunk ./doc/Cabal.xml 751 - extended Setup.hs: + longer Setup.hs: hunk ./doc/Cabal.xml 756 - This differs from defaultMain in two - ways: + This program differs from defaultMain + in two ways: hunk ./doc/Cabal.xml 995 - be used for creating binary backages for Windows. + be used for creating binary packages for Windows. hunk ./Distribution/Simple.hs 300 - -- FIX (HUGS): fix 'die' checks commands below. - when (compilerFlavor (compiler (localbuildinfo)) == Hugs && uInst) - (die "Hugs cannot yet install user-only packages.") hunk ./Setup.lhs 1 -#!/usr/bin/runhugs -98 +#!/usr/bin/runhaskell hunk ./doc/Cabal.xml 22 -
+ hunk ./doc/Cabal.xml 76 -
+ hunk ./doc/Cabal.xml 78 -
+ hunk ./doc/Cabal.xml 197 -
+ hunk ./doc/Cabal.xml 743 -
+ hunk ./doc/Cabal.xml 745 -
+ hunk ./doc/Cabal.xml 862 -
+ hunk ./doc/Cabal.xml 864 -
+ hunk ./doc/Cabal.xml 926 -
-
+ + hunk ./doc/Cabal.xml 929 -
+ hunk ./doc/Cabal.xml 1027 -
+ hunk ./doc/Cabal.xml 1148 -
+ hunk ./doc/Cabal.xml 1150 -
+ hunk ./doc/Cabal.xml 1154 -
+ hunk ./doc/Cabal.xml 1156 -
+ hunk ./doc/Cabal.xml 1160 -
+ hunk ./doc/Cabal.xml 1162 -
+ hunk ./doc/Cabal.xml 1187 -
+ hunk ./doc/Cabal.xml 1189 -
+ hunk ./doc/Cabal.xml 1207 -
+ hunk ./doc/Cabal.xml 1209 -
+ hunk ./doc/Cabal.xml 1249 -
+ hunk ./doc/Cabal.xml 1251 -
+ hunk ./doc/Cabal.xml 1286 -
+ hunk ./doc/Cabal.xml 1288 -
+ hunk ./doc/Cabal.xml 1292 -
+ hunk ./doc/Cabal.xml 1294 -
+ hunk ./doc/Cabal.xml 1304 -
-
+ + hunk ./doc/Cabal.xml 1307 -
+ hunk ./doc/Cabal.xml 1355 -
+ hunk ./tests/A/Setup.lhs 1 -#!/usr/bin/runhugs +#!/usr/bin/env runhaskell hunk ./Distribution/PackageDescription.hs 4 --- Copyright : Isaac Jones 2003-2004 +-- Copyright : Isaac Jones 2003-2005 hunk ./Distribution/PackageDescription.hs 107 --- | This data type is the internal representation of the file @pkg.descr@. +-- | This data type is the internal representation of the file @pkg.cabal@. hunk ./Distribution/PackageDescription.hs 126 - synopsis :: String, - description :: String, + synopsis :: String, -- ^A one-line summary of this package + description :: String, -- ^A more verbose description of this package hunk ./Distribution/PackageDescription.hs 183 - frameworks :: [String], + frameworks :: [String], -- ^support frameworks for Mac OS X hunk ./Distribution/PackageDescription.hs 185 - hsSourceDir :: FilePath, - otherModules :: [String], + hsSourceDir :: FilePath, -- ^ where to look for the haskell module hierarchy + otherModules :: [String], -- ^ non-exposed or non-main modules hunk ./Distribution/PackageDescription.hs 188 - extraLibs :: [String], + extraLibs :: [String], -- ^ what libraries to link with when compiling a program that uses your package hunk ./Distribution/PackageDescription.hs 372 - - , listField "exposed-modules" - text parseModuleNameQ - (\p -> maybe [] exposedModules (library p)) - (\xs pkg -> let lib = fromMaybe emptyLibrary (library pkg) in - pkg{library = Just lib{exposedModules=xs}}) hunk ./Distribution/PackageDescription.hs 461 - parseBasicStanza [] pkg (lineNo, f, val) = do - let lib = fromMaybe emptyLibrary (library pkg) - bi <- parseBInfoField binfoFields (libBuildInfo lib) (lineNo, f, val) - return pkg{library=Just lib{libBuildInfo=bi}} + {- + , listField "exposed-modules" + text parseModuleNameQ + (\p -> maybe [] exposedModules (library p)) + (\xs pkg -> let lib = fromMaybe emptyLibrary (library pkg) in + pkg{library = Just lib{exposedModules=xs}}) +-} + parseBasicStanza [] pkg (lineNo, f, val) + | "exposed-modules" == f = do + mods <- runP lineNo f (parseOptCommaList parseModuleNameQ) val + return pkg{library=Just lib{exposedModules=mods}} + | otherwise = do + bi <- parseBInfoField binfoFields (libBuildInfo lib) (lineNo, f, val) + return pkg{library=Just lib{libBuildInfo=bi}} + where + lib = fromMaybe emptyLibrary (library pkg) hunk ./Distribution/PackageDescription.hs 543 - Just lib -> ppFields (libBuildInfo lib) binfoFields) $$ + Just lib -> + text "exposed-modules" <> colon <+> fsep (punctuate comma (map text (exposedModules lib))) $$ + ppFields (libBuildInfo lib) binfoFields) $$ hunk ./Distribution/ParseUtils.hs 53 - parseTestedWithQ, parseLicenseQ, parseExtensionQ, parseCommaList, + parseTestedWithQ, parseLicenseQ, parseExtensionQ, parseCommaList, parseOptCommaList, hunk ./Distribution/ParseUtils.hs 275 - | not (any dodgy str) = text str + | not (any dodgy str) && + not (null str) = text str hunk ./Distribution/Simple/SrcDist.hs 56 -import Distribution.Simple.Utils(smartCopySources, die, findPackageDesc) +import Distribution.Simple.Utils + (smartCopySources, die, findPackageDesc, copyFileVerbose) hunk ./Distribution/Simple/SrcDist.hs 62 -import Distribution.Compat.Directory (doesDirectoryExist, getCurrentDirectory, copyFile) -import Distribution.Compat.FilePath (joinFileName) +import Distribution.Compat.Directory (doesFileExist, doesDirectoryExist, + getCurrentDirectory, createDirectoryIfMissing) +import Distribution.Compat.FilePath (joinFileName, splitFileName) hunk ./Distribution/Simple/SrcDist.hs 87 - sequence_ [prepareDir verbose targetDir pps [] exeBi | (Executable _ _ exeBi) <- executables pkg_descr] + flip mapM_ (executables pkg_descr) $ \ (Executable _ mainPath exeBi) -> do + prepareDir verbose targetDir pps [] exeBi + copyFileTo verbose targetDir (hsSourceDir exeBi `joinFileName` mainPath) + when (not (null (licenseFile pkg_descr))) $ + copyFileTo verbose targetDir (licenseFile pkg_descr) hunk ./Distribution/Simple/SrcDist.hs 93 - smartCopySources verbose "" targetDir ["Setup"] ["lhs", "hs"] + hsExists <- doesFileExist "Setup.hs" + lhsExists <- doesFileExist "Setup.lhs" + if hsExists then copyFileTo verbose targetDir "Setup.hs" + else if lhsExists then copyFileTo verbose targetDir "Setup.lhs" + else writeFile (targetDir `joinFileName` "Setup.hs") $ unlines [ + "import Distribution.Simple", + "main = defaultMainWithHooks defaultUserHooks"] + -- the description file itself hunk ./Distribution/Simple/SrcDist.hs 102 - copyFile descFile (joinFileName targetDir descFile) - system $ "tar --directory=" ++ tmpDir ++ " -zcf " ++ - (targetPref `joinFileName` (tarBallName pkg_descr)) - ++ " " ++ (nameVersion pkg_descr) + copyFileTo verbose targetDir descFile + + system $ "(cd " ++ tmpDir + ++ ";tar cf - " ++ (nameVersion pkg_descr) ++ ") | gzip -9 >" + ++ (targetPref `joinFileName` (tarBallName pkg_descr)) hunk ./Distribution/Simple/SrcDist.hs 117 -prepareDir verbose inPref pps mods BuildInfo{hsSourceDir=srcDir, otherModules=mods'} +prepareDir verbose inPref pps mods BuildInfo{hsSourceDir=srcDir, otherModules=mods', cSources=cfiles} hunk ./Distribution/Simple/SrcDist.hs 122 + mapM_ (copyFileTo verbose inPref) cfiles + +copyFileTo :: Int -> FilePath -> FilePath -> IO () +copyFileTo verbose dir file = do + let targetFile = dir `joinFileName` file + createDirectoryIfMissing True (fst (splitFileName targetFile)) + copyFileVerbose verbose file targetFile hunk ./Distribution/Simple/Utils.hs 208 - = if null pref then sourceLocs + = if null pref || pref == currentDir then sourceLocs hunk ./Distribution/Simple.hs 87 -import System.Cmd (rawSystem) hunk ./Distribution/Simple.hs 408 --- * all pre-hooks except 'preConf' read additional build information from +-- * the pre-hooks 'preBuild', 'preClean', 'preCopy', 'preInst', +-- 'preReg' and 'preUnreg' read additional build information from hunk ./Distribution/Simple.hs 426 - preSDist = readHook id, hunk ./GNUmakefile 29 - $(HC) $(GHCFLAGS) -odir dist/tmp -hidir dist/tmp Setup -o setup + $(HC) $(GHCFLAGS) -package Cabal -odir dist/tmp -hidir dist/tmp Setup -o setup hunk ./Distribution/Compat/FilePath.hs 14 + , breakFilePath + , dropPrefix hunk ./Distribution/Compat/FilePath.hs 225 +-- | Split the path into a list of strings constituting the filepath +-- > breakFilePath "/usr/bin/ls" == ["/","usr","bin","ls"] +breakFilePath :: FilePath -> [String] +breakFilePath = worker [] + where worker ac path + | less == path = less:ac + | otherwise = worker (current:ac) less + where (less,current) = splitFileName path + +-- | Drops a specified prefix from a filepath. +-- > stripPrefix "." "Src/Test.hs" == "Src/Test.hs" +-- > stripPrefix "Src" "Src/Test.hs" == "Test.hs" +dropPrefix :: FilePath -> FilePath -> FilePath +dropPrefix prefix path + = worker (breakFilePath prefix) (breakFilePath path) + where worker (x:xs) (y:ys) + | x == y = worker xs ys + worker _ ys = foldr1 joinPaths ys hunk ./Distribution/Simple/Utils.hs 79 +import Distribution.Compat.FilePath (dropPrefix) hunk ./Distribution/Simple/Utils.hs 210 - else map (drop ((length pref) +1)) sourceLocs + else map (dropPrefix pref) sourceLocs hunk ./Distribution/Simple/Register.hs 172 + ++ if ghc_63_plus then ["-"] else [] hunk ./Distribution/Simple/Register.hs 172 - ++ if ghc_63_plus then ["-"] else [] + ++ if ghc_63_plus && genScript then ["-"] else [] hunk ./Distribution/PackageDescription.hs 792 - assertEqual "Wrong number of errors" (length ers) 5 - assertEqual "Wrong number of warnings" (length warns) 4 + assertEqual "Wrong number of errors" 2 (length ers) + assertEqual "Wrong number of warnings" 4 (length warns) hunk ./tests/HUnit-1.0/HUnit.cabal 1 -Name: HUnit +Name: HUnitTest hunk ./tests/ModuleTest.hs 249 - ++ " -package HUnit HUnitTester.hs -o ./hunitTest") + ++ " -package HUnitTest HUnitTester.hs -o ./hunitTest") hunk ./Distribution/GetOpt.hs 167 - procNextOpt EndOfOpts RequireOrder = ([],rest,us,[]) - procNextOpt EndOfOpts Permute = ([],rest,us,[]) - procNextOpt EndOfOpts (ReturnInOrder f) = (map f rest,[],us,[]) + procNextOpt EndOfOpts RequireOrder = ([],rest,[],[]) + procNextOpt EndOfOpts Permute = ([],rest,[],[]) + procNextOpt EndOfOpts (ReturnInOrder f) = (map f rest,[],[],[]) hunk ./Distribution/PreProcess.hs 211 - extraArgs = "--noline" : hcDefines hc ++ sysDefines ++ + extraArgs = "--noline" : "--strip" : hcDefines hc ++ sysDefines ++ hunk ./Cabal.cabal 6 +License-File: LICENSE addfile ./LICENSE hunk ./LICENSE 1 +Copyright Isaac Jones 2003-2005. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. hunk ./Distribution/Compat/FilePath.hs 226 +-- hunk ./Distribution/Compat/FilePath.hs 236 +-- hunk ./Distribution/Setup.hs 53 - parseHaddockArgs, parseProgramaticaArgs, + parseHaddockArgs, parseProgramaticaArgs, parseTestArgs, hunk ./Distribution/Setup.hs 94 + | TestCmd -- test hunk ./Distribution/Setup.hs 188 - copyCmd, sdistCmd, haddockCmd, programaticaCmd, + copyCmd, sdistCmd, testCmd, haddockCmd, programaticaCmd, hunk ./Distribution/Setup.hs 443 + +testCmd :: Cmd a +testCmd = Cmd { + cmdName = "test", + cmdHelp = "Run the test suite, if any (configure with UserHooks).", + cmdDescription = "", -- This can be a multi-line description + cmdOptions = [cmd_help,cmd_verbose], + cmdAction = TestCmd + } + +parseTestArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) +parseTestArgs = parseNoArgs testCmd hunk ./Distribution/Simple.hs 313 + TestCmd -> do + (verbose,_, args) <- parseTestArgs args [] + case hooks of + Nothing -> return ExitSuccess + Just h -> do localbuildinfo <- getPersistBuildConfig + (runTests h) args False localbuildinfo + hunk ./tests/withHooks/Setup.lhs 36 +> testing :: Args -> Bool -> a -> IO ExitCode +> testing [] _ _ = return ExitSuccess +> testing a@(h:_) _ _ = do putStrLn $ "testing: " ++ (show a) +> if h == "--pass" +> then return ExitSuccess +> else return (ExitFailure 1) hunk ./tests/withHooks/Setup.lhs 48 +> runTests=testing, hunk ./Distribution/Simple.hs 88 -import System.Exit(ExitCode(..)) +import System.Exit(ExitCode(..), exitWith) hunk ./Distribution/Simple.hs 318 - (runTests h) args False localbuildinfo + out <- (runTests h) args False localbuildinfo + when (isFailure out) (exitWith out) + return out hunk ./Distribution/Simple.hs 353 + isFailure :: ExitCode -> Bool + isFailure (ExitFailure _) = True + isFailure _ = False hunk ./tests/ModuleTest.hs 313 + assertCmdFail (compCmd ++ " test --asdf") "test was supposed to fail" + assertCmd' compCmd ("test --pass") "test should not have failed" + adddir ./tests/recursive addfile ./tests/recursive/A.hi-boot addfile ./tests/recursive/A.hs addfile ./tests/recursive/B.hs addfile ./tests/recursive/Makefile addfile ./tests/recursive/Setup.lhs addfile ./tests/recursive/recursive.cabal hunk ./tests/ModuleTest.hs 271 +-- mutually recursive modules + ,TestLabel ("package recursive: building " ++ compIdent) $ TestCase $ + when (comp == GHC) (do + setCurrentDirectory $ (testdir `joinFileName` "recursive") + testPrelude + assertConfigure ",tmp" + assertBuild + assertCopy + doesFileExist "dist/build/A.hi-boot" >>= + assertBool "build did not move A.hi-boot file into place lib" + doesFileExist ",tmp/lib/recursive-1.0/libHSrecursive-1.0.a" >>= + assertBool "recursive build didn't create library" + doesFileExist "dist/build/testExe-tmp/A.hi" >>= + assertBool "build did not move A.hi-boot file into place exe" + doesFileExist "dist/build/testExe" >>= + assertBool "recursive build didn't create binary") hunk ./tests/recursive/A.hi-boot 1 +module A where +newtype TA = MkTA GHC.Base.Int hunk ./tests/recursive/A.hs 1 +module A where + +import B( TB(..) ) + +newtype TA = MkTA Int + +f :: TB -> TA +f (MkTB x) = MkTA x hunk ./tests/recursive/B.hs 1 +module B where +import {-# SOURCE #-} A( TA(..) ) + +data TB = MkTB !Int + +g :: TA -> TB +g (MkTA x) = MkTB x + hunk ./tests/recursive/Makefile 1 +include ../Tests.mk hunk ./tests/recursive/Setup.lhs 1 +#!/usr/bin/env runhaskell + +> module Main where + +> import Distribution.Simple + +> main :: IO () +> main = defaultMain hunk ./tests/recursive/recursive.cabal 1 +name: recursive +version: 1.0 +copyright: filler for test suite +maintainer: Isaac Jones +synopsis: this package is really awesome. +Exposed-Modules: A, B + +Executable: testExe +Main-is: C.hs +other-modules: A, B hunk ./Distribution/Simple/Build.hs 64 - getOptionsFromSource, stripComments + getOptionsFromSource, stripComments, + smartCopySources hunk ./Distribution/Simple/Build.hs 127 - createDirectoryIfMissing True (pref `joinFileName` (hsSourceDir libBi)) + libTargetDir = pref `joinFileName` (hsSourceDir libBi) + createDirectoryIfMissing True libTargetDir + -- put hi-boot files into place for mutually recurive modules + smartCopySources verbose (hsSourceDir libBi) + libTargetDir (libModules pkg_descr) ["hi-boot"] False hunk ./Distribution/Simple/Build.hs 136 - "-odir", pref `joinFileName` (hsSourceDir libBi), - "-hidir", pref `joinFileName` (hsSourceDir libBi) + "-odir", libTargetDir, + "-hidir", libTargetDir hunk ./Distribution/Simple/Build.hs 175 + -- put hi-boot files into place for mutually recurive modules + -- FIX: what about exeName.hi-boot? + smartCopySources verbose (hsSourceDir exeBi) + exeDir (otherModules exeBi) ["hi-boot"] False + hunk ./Distribution/Simple/Install.hs 120 - = do smartCopySources verbose (buildPref `joinFileName` (hsSourceDir $ libBuildInfo l)) pref (libModules pd) ["hi"] + = do smartCopySources verbose (buildPref `joinFileName` (hsSourceDir $ libBuildInfo l)) pref (libModules pd) ["hi"] True hunk ./Distribution/Simple/Install.hs 147 - smartCopySources verbose buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes + smartCopySources verbose buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes True hunk ./Distribution/Simple/Install.hs 159 - ("Main" : otherModules (buildInfo exe)) hugsInstallSuffixes + ("Main" : otherModules (buildInfo exe)) hugsInstallSuffixes True hunk ./Distribution/Simple/SrcDist.hs 120 - smartCopySources verbose srcDir pref (mods++mods') suff + smartCopySources verbose srcDir pref (mods++mods') suff True hunk ./Distribution/Simple/Utils.hs 202 + -> Bool -- ^Exit if no such modules hunk ./Distribution/Simple/Utils.hs 204 -smartCopySources verbose pref targetDir sources searchSuffixes +smartCopySources verbose pref targetDir sources searchSuffixes exitIfNone hunk ./Distribution/Simple/Utils.hs 208 - let sourceLocs = concat sourceLocs' + let sourceLocs = concat $ filter (not . null) sourceLocs' hunk ./Distribution/Simple/Utils.hs 221 - when (null p) + when (null p && exitIfNone) addfile ./tests/exeWithC/Makefile addfile ./tests/exeWithC/Setup.lhs addfile ./tests/exeWithC/a.c addfile ./tests/exeWithC/test.hs addfile ./tests/exeWithC/tt.cabal hunk ./tests/exeWithC/Makefile 1 +include ../Tests.mk hunk ./tests/exeWithC/Setup.lhs 1 +> import Distribution.Simple +> main = defaultMainWithHooks defaultUserHooks hunk ./tests/exeWithC/a.c 1 +int foo(int v) { return 2*v; } hunk ./tests/exeWithC/test.hs 1 +{-# CFILES a.c #-} +foreign import ccall unsafe "foo" foo :: Int -> Int + +main = print $ foo 6 hunk ./tests/exeWithC/tt.cabal 1 +Name: tt +Version: 0.0 +Copyright: Einar Karttunen +Maintainer: Isaac Jones +Synopsis: Provided as a test. +License: BSD3 +Author: This Test Case Contributed by: Einar Karttunen Thanks! + +Executable: tt +Main-Is: test.hs +C-Sources: a.c +Extensions: ForeignFunctionInterface addfile ./tests/recursive/C.hs hunk ./tests/recursive/C.hs 1 +module Main where +import B +import A -- FIX: GHC doesn't seem to figure out this dependency?! + +main :: IO () +main = let f = g in putStrLn "C" addfile ./tests/withHooks/D.gc hunk ./tests/withHooks/D.gc 1 +module D where +a = 42 :: Int + +main2 = print a addfile ./tests/HSQL/config.mk hunk ./tests/HSQL/config.mk 1 +WithODBC=NO +WithPostgreSQL=NO +WithMySQL=NO +WithSQLite=NO + +SO_EXT = so + +WIN32=NO + +AR = /usr/bin/ar +LD = /usr/bin/ld +INSTALL = /usr/bin/install -c + +CPPFLAGS = +LDFLAGS = + +HSC2HS = /usr/bin/hsc2hs + +HADDOCK = /usr/bin/haddock +DOC_DIR = /tmp/doc/HSQL + +GHC = /usr/bin/ghc +GHC_DIR = /tmp/lib/HSQL/GHC +GHC_PKG = /usr/bin/ghc-pkg + +HUGS = /usr/bin/hugs +HUGS_DIR = /tmp/lib/HSQL/Hugs +FFIHUGS = /usr/bin/ffihugs hunk ./Distribution/GetOpt.hs 200 - long _ _ rest = (UnreqOpt optStr,rest) + long _ _ rest = (UnreqOpt ("--"++ls),rest) hunk ./Distribution/Simple/Utils.hs 50 + matchesDescFile, hunk ./Distribution/Simple.hs 230 - let targetDir = joinPaths "dist" (joinPaths "doc" "html") + let targetDir = joinPaths distPref (joinPaths "doc" "html") hunk ./Distribution/Simple.hs 281 + try $ removeDirectoryRecursive (joinPaths distPref "doc") hunk ./Distribution/Simple.hs 306 - let distPref = "dist" hunk ./Distribution/Simple.hs 340 + distPref :: FilePath + distPref = "dist" hunk ./tests/ModuleTest.hs 244 + doesDirectoryExist "dist/doc" >>= assertEqual "create of dist/doc" True hunk ./tests/ModuleTest.hs 255 + doesDirectoryExist "dist/doc" >>= assertEqual "clean dist/doc" False adddir ./tests/ffi-bin adddir ./tests/ffi-package adddir ./tests/ffi-package/src addfile ./tests/ffi-bin/Main.hs addfile ./tests/ffi-bin/Makefile addfile ./tests/ffi-bin/Setup.lhs addfile ./tests/ffi-bin/main.cabal addfile ./tests/ffi-package/Makefile addfile ./tests/ffi-package/Setup.lhs addfile ./tests/ffi-package/TestFFIExe.hs addfile ./tests/ffi-package/src/TestFFI.hs addfile ./tests/ffi-package/testffi.cabal hunk ./Distribution/Simple/Build.hs 162 - unless (null hObjs && null cObjs) $ do + + stubObjs <- sequence [moduleToFilePath [libTargetDir] (x ++"_stub") [objExtension] + | x <- libModules pkg_descr ] >>= return . concat + + unless (null hObjs && null cObjs && null stubObjs) $ do hunk ./Distribution/Simple/Build.hs 171 + ++ stubObjs hunk ./Distribution/Simple/Utils.hs 163 --- Returns Nothing if the file doesn't exist. +-- Returns empty list if no such files exist. hunk ./Distribution/Simple.hs 276 + putStrLn "cleaning..." hunk ./Distribution/Simple.hs 288 + + -- remove source stubs for library + withLib pkg_descr () (\Library{libBuildInfo=BuildInfo{hsSourceDir=dir}} -> do + s <- sequence [moduleToFilePath [dir] (x ++"_stub") ["h", "c"] + | x <- libModules pkg_descr ] + mapM_ removeFile (concat s) + ) + -- remove source stubs for executables + withExe pkg_descr (\Executable{modulePath=exeSrcName + ,buildInfo=BuildInfo{hsSourceDir=dir}} -> do + s <- sequence [moduleToFilePath [dir] (x ++"_stub") ["h", "c"] + | x <- exeModules pkg_descr ] + mapM_ removeFile (concat s) + let (startN, _) = splitFileExt exeSrcName + try $ removeFile (startN ++ "_stub.h") + try $ removeFile (startN ++ "_stub.c") + ) hunk ./tests/ModuleTest.hs 215 - ,TestLabel "testing the HUnit package" $ TestCase $ + ,TestLabel ("testing the HUnit package" ++ compIdent) $ TestCase $ hunk ./tests/ModuleTest.hs 289 +-- linking in ffi stubs + ,TestLabel ("package ffi: " ++ compIdent) $ TestCase $ + do setCurrentDirectory (testdir `joinFileName` "ffi-package") + testPrelude + assertConfigure "/tmp" + assertBuild + -- install it so we can test building with it. + assertCmd' compCmd "install --user" "ffi-package install" + assertClean + doesFileExist "src/TestFFI_stub.c" >>= + assertEqual "FFI-generated stub not cleaned." False + -- now build something that depends on it + setCurrentDirectory (".." `joinFileName` "ffi-bin") + testPrelude + assertConfigure ",tmp" + assertBuild + assertCopy hunk ./tests/ffi-bin/Main.hs 1 +module Main where + +import TestFFI + +main :: IO () +main = putStrLn "test" + hunk ./tests/ffi-bin/Makefile 1 +include ../Tests.mk hunk ./tests/ffi-bin/Setup.lhs 1 +#! /usr/bin/env runhaskell + +> import Distribution.Simple +> main = defaultMain hunk ./tests/ffi-bin/main.cabal 1 +Name: test-bin +Build-Depends: testffi +Version: 0.0 + +Executable: test +Main-Is: Main.hs hunk ./tests/ffi-package/Makefile 1 +include ../Tests.mk hunk ./tests/ffi-package/Setup.lhs 1 +#! /usr/bin/env runhugs + +> import Distribution.Simple +> main = defaultMain hunk ./tests/ffi-package/TestFFIExe.hs 1 +module Main where + +import Foreign + +type Action = IO () + +foreign import ccall "wrapper" + mkAction :: Action -> IO (FunPtr Action) + +main :: IO () +main = return () hunk ./tests/ffi-package/src/TestFFI.hs 1 +module TestFFI where + +import Foreign + +type Action = IO () + +foreign import ccall "wrapper" + mkAction :: Action -> IO (FunPtr Action) hunk ./tests/ffi-package/testffi.cabal 1 +Name: testffi +Version: 0.0 +Build-Depends: base +hs-source-dir: src +Exposed-modules: TestFFI +Extensions: ForeignFunctionInterface + +executable: foo +main-is: TestFFIExe.hs +Extensions: ForeignFunctionInterface hunk ./Distribution/Simple/Utils.hs 85 -import Control.Monad(when) +import Control.Monad(when, filterM) hunk ./Distribution/Simple/Utils.hs 171 - = do let possiblePaths = concatMap (searchModuleToPossiblePaths s possibleSuffixes) pref - matchList <- mapM (\x -> do y <- doesFileExist x; return (x, y)) possiblePaths - return [x | (x, True) <- matchList] + = filterM doesFileExist $ + concatMap (searchModuleToPossiblePaths s possibleSuffixes) pref hunk ./Distribution/Extension.hs 92 + | PatternGuards hunk ./Distribution/Extension.hs 133 + extensionToGHCFlag PatternGuards = Right "-fglasgow-exts" hunk ./Distribution/PackageDescription.hs 44 - PackageDescription(..), - emptyPackageDescription, + PackageDescription(..), + emptyPackageDescription, hunk ./Distribution/PackageDescription.hs 47 - parseDescription, + parseDescription, hunk ./Distribution/PackageDescription.hs 52 - showPackageDescription, + showPackageDescription, hunk ./Distribution/PackageDescription.hs 66 - HookedBuildInfo, - emptyHookedBuildInfo, - readHookedBuildInfo, - parseHookedBuildInfo, - writeHookedBuildInfo, - showHookedBuildInfo, - updatePackageDescription, + HookedBuildInfo, + emptyHookedBuildInfo, + readHookedBuildInfo, + parseHookedBuildInfo, + writeHookedBuildInfo, + showHookedBuildInfo, + updatePackageDescription, hunk ./Distribution/PackageDescription.hs 91 - parsePackageName) + parsePackageName) hunk ./Distribution/PackageDescription.hs 104 -import Distribution.ParseUtils (runP) +import Distribution.ParseUtils (runP) hunk ./Distribution/PackageDescription.hs 115 - -- the following are required by all packages: - package :: PackageIdentifier, + -- the following are required by all packages: + package :: PackageIdentifier, hunk ./Distribution/PackageDescription.hs 121 - author :: String, + author :: String, hunk ./Distribution/PackageDescription.hs 123 - testedWith :: [(CompilerFlavor,VersionRange)], - homepage :: String, - pkgUrl :: String, - synopsis :: String, -- ^A one-line summary of this package - description :: String, -- ^A more verbose description of this package - category :: String, + testedWith :: [(CompilerFlavor,VersionRange)], + homepage :: String, + pkgUrl :: String, + synopsis :: String, -- ^A one-line summary of this package + description :: String, -- ^A more verbose description of this package + category :: String, hunk ./Distribution/PackageDescription.hs 130 - -- components + -- components hunk ./Distribution/PackageDescription.hs 136 -data Library = Library { exposedModules :: [String], - libBuildInfo :: BuildInfo } - deriving (Show, Eq, Read) +data Library = Library { + exposedModules :: [String], + libBuildInfo :: BuildInfo + } + deriving (Show, Eq, Read) hunk ./Distribution/PackageDescription.hs 152 - author = "", + author = "", hunk ./Distribution/PackageDescription.hs 154 - testedWith = [], + testedWith = [], hunk ./Distribution/PackageDescription.hs 156 - homepage = "", - pkgUrl = "", - synopsis = "", - description = "", - category = "", + homepage = "", + pkgUrl = "", + synopsis = "", + description = "", + category = "", hunk ./Distribution/PackageDescription.hs 188 - otherModules :: [String], -- ^ non-exposed or non-main modules + otherModules :: [String], -- ^ non-exposed or non-main modules hunk ./Distribution/PackageDescription.hs 200 - buildable = True, - ccOptions = [], - ldOptions = [], - frameworks = [], - cSources = [], - hsSourceDir = currentDir, - otherModules = [], + buildable = True, + ccOptions = [], + ldOptions = [], + frameworks = [], + cSources = [], + hsSourceDir = currentDir, + otherModules = [], hunk ./Distribution/PackageDescription.hs 303 - | v1 == def = v2 - | v2 == def = v1 - | otherwise = error $ "union: Two non-empty fields found in union attempt: " ++ s + | v1 == def = v2 + | v2 == def = v1 + | otherwise = error $ "union: Two non-empty fields found in union attempt: " ++ s hunk ./Distribution/PackageDescription.hs 307 - v2 = f b2 - def = f emptyBuildInfo + v2 = f b2 + def = f emptyBuildInfo hunk ./Distribution/PackageDescription.hs 392 - showToken parseTokenQ + showToken parseTokenQ hunk ./Distribution/PackageDescription.hs 395 - showToken parseTokenQ + showToken parseTokenQ hunk ./Distribution/PackageDescription.hs 398 - showToken parseTokenQ + showToken parseTokenQ hunk ./Distribution/PackageDescription.hs 407 - showToken parseTokenQ + showToken parseTokenQ hunk ./Distribution/PackageDescription.hs 475 - bi <- parseBInfoField binfoFields (libBuildInfo lib) (lineNo, f, val) + bi <- parseBInfoField binfoFields (libBuildInfo lib) (lineNo, f, val) hunk ./Distribution/PackageDescription.hs 482 - Just (_,_) -> foldM (parseExecutableField executableStanzaFields) emptyExecutable st - Nothing -> fail $ "No 'Main-Is' field found for " ++ eName ++ " stanza" + Just (_,_) -> foldM (parseExecutableField executableStanzaFields) emptyExecutable st + Nothing -> fail $ "No 'Main-Is' field found for " ++ eName ++ " stanza" hunk ./Distribution/PackageDescription.hs 489 - | name == f = set lineNo val exe - | otherwise = parseExecutableField fields exe (lineNo, f, val) - parseExecutableField [] exe (lineNo, f, val) = do - binfo <- parseBInfoField binfoFields (buildInfo exe) (lineNo, f, val) + | name == f = set lineNo val exe + | otherwise = parseExecutableField fields exe (lineNo, f, val) + parseExecutableField [] exe (lineNo, f, val) = do + binfo <- parseBInfoField binfoFields (buildInfo exe) (lineNo, f, val) hunk ./Distribution/PackageDescription.hs 529 - | name == f = set lineNo val binfo - | otherwise = parseBInfoField fields binfo (lineNo, f, val) + | name == f = set lineNo val binfo + | otherwise = parseBInfoField fields binfo (lineNo, f, val) hunk ./Distribution/PackageDescription.hs 532 - myError lineNo $ "Unknown field '" ++ f ++ "'" + myError lineNo $ "Unknown field '" ++ f ++ "'" hunk ./Distribution/PackageDescription.hs 680 - "Extra-Lib-Dirs: \"/usr/local/libs\"", + "Extra-Lib-Dirs: \"/usr/local/libs\"", hunk ./Distribution/PreProcess.hs 193 - = rawSystemPath verbose "c2hs" ["-o " ++ outFile, inFile] + = rawSystemPath verbose "c2hs" ["-o", outFile, inFile] hunk ./Distribution/Simple/Configure.hs 51 + getInstalledPackages, + getInstalledPackagesAux, + configCompilerAux, hunk ./Distribution/Simple/Configure.hs 227 -getInstalledPackages comp cfg = do - message "Reading installed packages..." +getInstalledPackages comp cfg = getInstalledPackagesAux comp (configUser cfg) (configVerbose cfg) + +getInstalledPackagesAux :: Compiler -> Bool -> Int -> IO [PackageIdentifier] +getInstalledPackagesAux comp user verbose = do + when (verbose > 0) $ message "Reading installed packages..." hunk ./Distribution/Simple/Configure.hs 233 - let user_flag = if configUser cfg then " --user" else " --global" + let user_flag = if user then " --user" else " --global" hunk ./Distribution/Simple/Configure.hs 235 - when (configVerbose cfg > 0) $ + when (verbose > 0) $ hunk ./Distribution/Simple/Configure.hs 275 -configCompiler cfg - = do let flavor = case configHcFlavor cfg of +configCompiler cfg = configCompilerAux (configHcFlavor cfg) + (configHcPath cfg) + (configHcPkg cfg) + (configVerbose cfg) + +configCompilerAux :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> Int -> IO Compiler +configCompilerAux hcFlavor hcPath hcPkg verbose + = do let flavor = case hcFlavor of hunk ./Distribution/Simple/Configure.hs 286 - case configHcPath cfg of + case hcPath of hunk ./Distribution/Simple/Configure.hs 288 - Nothing -> findCompiler flavor + Nothing -> findCompiler verbose flavor hunk ./Distribution/Simple/Configure.hs 290 - ver <- configCompilerVersion flavor comp cfg + ver <- configCompilerVersion flavor comp verbose hunk ./Distribution/Simple/Configure.hs 293 - case configHcPkg cfg of + case hcPkg of hunk ./Distribution/Simple/Configure.hs 295 - Nothing -> guessPkgToolFromHCPath flavor comp + Nothing -> guessPkgToolFromHCPath verbose flavor comp hunk ./Distribution/Simple/Configure.hs 314 -findCompiler :: CompilerFlavor -> IO FilePath -findCompiler flavor = do +findCompiler :: Int -> CompilerFlavor -> IO FilePath +findCompiler verbose flavor = do hunk ./Distribution/Simple/Configure.hs 317 - message $ "searching for " ++ prog ++ " in path." + when (verbose > 0) $ message $ "searching for " ++ prog ++ " in path." hunk ./Distribution/Simple/Configure.hs 321 - Just path -> do message ("found " ++ prog ++ " at "++ path) + Just path -> do when (verbose > 0) $ message ("found " ++ prog ++ " at "++ path) hunk ./Distribution/Simple/Configure.hs 337 -configCompilerVersion :: CompilerFlavor -> FilePath -> ConfigFlags -> IO Version -configCompilerVersion GHC compilerP cfg = +configCompilerVersion :: CompilerFlavor -> FilePath -> Int -> IO Version +configCompilerVersion GHC compilerP verbose = hunk ./Distribution/Simple/Configure.hs 341 - when (configVerbose cfg > 0) $ + when (verbose > 0) $ hunk ./Distribution/Simple/Configure.hs 354 -guessPkgToolFromHCPath :: CompilerFlavor -> FilePath -> IO FilePath -guessPkgToolFromHCPath flavor path +guessPkgToolFromHCPath :: Int -> CompilerFlavor -> FilePath -> IO FilePath +guessPkgToolFromHCPath verbose flavor path hunk ./Distribution/Simple/Configure.hs 359 - message $ "looking for package tool: " ++ pkgToolName ++ " near compiler in " ++ path + when (verbose > 0) $ message $ "looking for package tool: " ++ pkgToolName ++ " near compiler in " ++ path hunk ./Distribution/Simple/Configure.hs 363 - message $ "found package tool in " ++ pkgtool + when (verbose > 0) $ message $ "found package tool in " ++ pkgtool hunk ./Distribution/Simple/Configure.hs 52 - getInstalledPackagesAux, - configCompilerAux, + configCompiler, hunk ./Distribution/Simple/Configure.hs 143 - comp@(Compiler f' ver p' pkg) <- configCompiler cfg + comp@(Compiler f' ver p' pkg) <- configCompilerAux cfg hunk ./Distribution/Simple/Configure.hs 273 -configCompiler :: ConfigFlags -> IO Compiler -configCompiler cfg = configCompilerAux (configHcFlavor cfg) +configCompilerAux :: ConfigFlags -> IO Compiler +configCompilerAux cfg = configCompiler (configHcFlavor cfg) hunk ./Distribution/Simple/Configure.hs 279 -configCompilerAux :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> Int -> IO Compiler -configCompilerAux hcFlavor hcPath hcPkg verbose +configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> Int -> IO Compiler +configCompiler hcFlavor hcPath hcPkg verbose hunk ./Cabal.cabal 2 -Version: 0.6 +Version: 1.1 hunk ./Distribution/Simple/Configure.hs 6 --- Copyright : Isaac Jones 2003-2004 +-- Copyright : Isaac Jones 2003-2005 hunk ./changelog 3 +1.1 Isaac Jones Wed Feb 19 2005 + * Handles recursive modules for GHC 6.2 + * Added "setup test" command (Used with UserHook) + * implemented handling of _stub.{c,h,o} files + * Added pattern guards as a language extension + * Register / unregister .bat files for windows + * Exposed some API stuff + * Several bug fixes + +1.0 Isaac Jones March 11 2005 + * Released with GHC 6.4, Hugs March 2005, and nhc98 1.18 + * Some sanity checking + hunk ./Distribution/Simple/Install.hs 69 -import Distribution.Simple.Utils(smartCopySources, copyFileVerbose, mkLibName, die) +import Distribution.Simple.Utils(smartCopySources, copyFileVerbose, mkLibName, + die, rawSystemVerbose) hunk ./Distribution/Simple/Install.hs 75 -import Distribution.Compat.Directory(createDirectoryIfMissing,removeDirectoryRecursive) +import Distribution.Compat.Directory(createDirectoryIfMissing, removeDirectoryRecursive, + findExecutable) hunk ./Distribution/Simple/Install.hs 123 - copyFileVerbose verbose (mkLibName buildPref (showPackageId p)) (mkLibName pref (showPackageId p)) + let libTargetLoc = mkLibName pref (showPackageId p) + copyFileVerbose verbose (mkLibName buildPref (showPackageId p)) libTargetLoc + + -- use ranlib or ar -s to build an index. this is necessary + -- on some systems like MacOS X. If we can't find those, + -- don't worry too much about it. + mRanlibLoc <- findExecutable "ranlib" + case mRanlibLoc of + Just ranLibLoc -> rawSystemVerbose verbose "ranlib" [libTargetLoc] >> return () + Nothing -> do mArLoc <- findExecutable "ar" + case mArLoc of + Nothing -> setupMessage "Warning: Unable to generate index for library (missing ranlib and ar)" pd + Just arLoc -> rawSystemVerbose verbose + "ar" ["-s", libTargetLoc] >> return () + hunk ./Distribution/Simple/Configure.hs 173 - ipkgs <- getInstalledPackages comp cfg + ipkgs <- getInstalledPackagesAux comp cfg hunk ./Distribution/Simple/Configure.hs 225 -getInstalledPackages :: Compiler -> ConfigFlags -> IO [PackageIdentifier] -getInstalledPackages comp cfg = getInstalledPackagesAux comp (configUser cfg) (configVerbose cfg) +getInstalledPackagesAux :: Compiler -> ConfigFlags -> IO [PackageIdentifier] +getInstalledPackagesAux comp cfg = getInstalledPackages comp (configUser cfg) (configVerbose cfg) hunk ./Distribution/Simple/Configure.hs 228 -getInstalledPackagesAux :: Compiler -> Bool -> Int -> IO [PackageIdentifier] -getInstalledPackagesAux comp user verbose = do +getInstalledPackages :: Compiler -> Bool -> Int -> IO [PackageIdentifier] +getInstalledPackages comp user verbose = do hunk ./Distribution/PreProcess.hs 188 -ppGreenCard, ppC2hs :: PreProcessor - +ppGreenCard :: PreProcessor hunk ./Distribution/PreProcess.hs 191 -ppC2hs inFile outFile verbose - = rawSystemPath verbose "c2hs" ["-o", outFile, inFile] hunk ./Distribution/PreProcess.hs 208 - extraArgs = "--noline" : "--strip" : hcDefines hc ++ sysDefines ++ - incOptions ++ ccOptions bi ++ inputArgs - hc = compiler lbi + extraArgs = "--noline" : "--strip" : + sysDefines ++ cppOptions bi lbi ++ inputArgs hunk ./Distribution/PreProcess.hs 214 - incOptions = ["-I" ++ dir | dir <- includeDirs bi] hunk ./Distribution/PreProcess.hs 218 - where pp n = standardPP n (hcDefines hc ++ incOptions ++ ccOptions bi) - hc = compiler lbi - incOptions = ["-I" ++ dir | dir <- includeDirs bi] + where pp n = standardPP n (cppOptions bi lbi) + +ppC2hs :: BuildInfo -> LocalBuildInfo -> PreProcessor +ppC2hs bi lbi + = maybe (ppNone "c2hs") pp (withC2hs lbi) + where pp n = standardPP n (concat [["-C", opt] | opt <- cppOptions bi lbi]) + +cppOptions :: BuildInfo -> LocalBuildInfo -> [String] +cppOptions bi lbi + = hcDefines (compiler lbi) ++ + ["-I" ++ dir | dir <- includeDirs bi] ++ + [opt | opt@('-':c:_) <- ccOptions bi, c `elem` "DIU"] hunk ./Distribution/PreProcess.hs 262 - = rawSystemVerbose verbose eName (args ++ ["-o" ++ outFile, inFile]) + = rawSystemVerbose verbose eName (args ++ ["-o", outFile, inFile]) hunk ./Distribution/PreProcess.hs 277 - , ("chs", \ _ _ -> ppC2hs) + , ("chs", ppC2hs) hunk ./Distribution/Setup.hs 114 + configC2hs :: Maybe FilePath, -- ^C2hs path hunk ./Distribution/Setup.hs 131 + configC2hs = Nothing, hunk ./Distribution/Setup.hs 142 - | WithHsc2hs FilePath | WithCpphs FilePath + | WithHsc2hs FilePath | WithC2hs FilePath | WithCpphs FilePath hunk ./Distribution/Setup.hs 264 + Option "" ["with-c2hs"] (ReqArg WithC2hs "PATH") + "give the path to c2hs", hunk ./Distribution/Setup.hs 299 + WithC2hs path -> t { configC2hs = Just path } hunk ./Distribution/Simple/Configure.hs 159 + c2hs <- findProgram "c2hs" (configC2hs cfg) hunk ./Distribution/Simple/Configure.hs 171 + reportProgram "c2hs" c2hs hunk ./Distribution/Simple/Configure.hs 183 - withHsc2hs=hsc2hs, withCpphs=cpphs + withHsc2hs=hsc2hs, withC2hs=c2hs, + withCpphs=cpphs hunk ./Distribution/Simple/LocalBuildInfo.hs 68 + withC2hs :: Maybe FilePath, -- ^Might be the location of the C2hs executable. hunk ./doc/Cabal.xml 180 - with Setup.hs the same as above. + with Setup.hs the same as above. + Note that any library modules required (directly or indirectly) + by an executable must be listed again. hunk ./doc/Cabal.xml 491 -
+ hunk ./doc/Cabal.xml 522 -
+ hunk ./doc/Cabal.xml 524 -
+ hunk ./doc/Cabal.xml 744 -
+ hunk ./doc/Cabal.xml 1102 +
+ + + + =path + + Specify the path to c2hs. hunk ./Distribution/Simple.hs 123 + -- |Hook to run before configure command hunk ./Distribution/Simple.hs 125 + -- |Hook to run after configure command hunk ./Distribution/Simple.hs 128 + -- |Hook to run before build command. Second arg indicates verbosity level. hunk ./Distribution/Simple.hs 130 + -- |Hook to run after build command. Second arg indicates verbosity level. hunk ./Distribution/Simple.hs 133 + -- |Hook to run before clean command. Second arg indicates verbosity level. hunk ./Distribution/Simple.hs 135 + -- |Hook to run after clean command. Second arg indicates verbosity level. hunk ./Distribution/Simple.hs 138 + -- |Hook to run before copy command hunk ./Distribution/Simple.hs 140 + -- |Hook to run after copy command hunk ./Distribution/Simple.hs 143 + -- |Hook to run before install command hunk ./Distribution/Simple.hs 145 - postInst :: Args -> InstallFlags -> LocalBuildInfo -> IO ExitCode, -- ^guaranteed to be run on target + -- |Hook to run after install command. postInst should be run + -- on the target, not on the build machine. + postInst :: Args -> InstallFlags -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 149 + -- |Hook to run before sdist command. Second arg indicates verbosity level. hunk ./Distribution/Simple.hs 151 + -- |Hook to run after sdist command. Second arg indicates verbosity level. hunk ./Distribution/Simple.hs 154 + -- |Hook to run before register command hunk ./Distribution/Simple.hs 156 + -- |Hook to run after register command hunk ./Distribution/Simple.hs 159 + -- |Hook to run before unregister command hunk ./Distribution/Simple.hs 161 + -- |Hook to run after unregister command hunk ./Distribution/Simple.hs 164 + -- |Hook to run before haddock command. Second arg indicates verbosity level. hunk ./Distribution/Simple.hs 166 + -- |Hook to run after haddock command. Second arg indicates verbosity level. hunk ./Distribution/Simple.hs 169 + -- |Hook to run before pfe command. Second arg indicates verbosity level. hunk ./Distribution/Simple.hs 171 + -- |Hook to run after pfe command. Second arg indicates verbosity level. hunk ./Distribution/Simple/Configure.hs 82 -import Data.List (intersperse, nub, maximumBy) +import Data.List (intersperse, nub, maximumBy, isPrefixOf) hunk ./Distribution/Simple/Configure.hs 244 - let str1 = unlines (filter (':' `notElem`) (lines str)) + let + keep_line s = ':' `notElem` s && not ("Creating" `isPrefixOf` s) + str1 = unlines (filter keep_line (lines str)) hunk ./Distribution/Simple/Configure.hs 248 + -- hunk ./Distribution/Simple/Configure.hs 51 - getInstalledPackages, - configCompiler, hunk ./Cabal.cabal 41 + Distribution.Compat.FilePath, + Distribution.GetOpt, hunk ./Cabal.cabal 45 - Distribution.GetOpt, hunk ./Cabal.cabal 47 - Distribution.Compat.FilePath, hunk ./Distribution/Simple/Configure.hs 226 -getInstalledPackagesAux :: Compiler -> ConfigFlags -> IO [PackageIdentifier] -getInstalledPackagesAux comp cfg = getInstalledPackages comp (configUser cfg) (configVerbose cfg) - -getInstalledPackages :: Compiler -> Bool -> Int -> IO [PackageIdentifier] -getInstalledPackages comp user verbose = do - when (verbose > 0) $ message "Reading installed packages..." +getInstalledPackages :: Compiler -> ConfigFlags -> IO [PackageIdentifier] +getInstalledPackages comp cfg = do + message "Reading installed packages..." hunk ./Distribution/Simple/Configure.hs 230 - let user_flag = if user then " --user" else " --global" + let user_flag = if configUser cfg then " --user" else " --global" hunk ./Distribution/Simple/Configure.hs 232 - when (verbose > 0) $ + when (configVerbose cfg > 0) $ hunk ./Distribution/Simple/Configure.hs 274 -configCompilerAux :: ConfigFlags -> IO Compiler -configCompilerAux cfg = configCompiler (configHcFlavor cfg) - (configHcPath cfg) - (configHcPkg cfg) - (configVerbose cfg) - -configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> Int -> IO Compiler -configCompiler hcFlavor hcPath hcPkg verbose - = do let flavor = case hcFlavor of +configCompiler :: ConfigFlags -> IO Compiler +configCompiler cfg + = do let flavor = case configHcFlavor cfg of hunk ./Distribution/Simple/Configure.hs 280 - case hcPath of + case configHcPath cfg of hunk ./Distribution/Simple/Configure.hs 284 - ver <- configCompilerVersion flavor comp verbose + ver <- configCompilerVersion flavor comp cfg hunk ./Distribution/Simple/Configure.hs 287 - case hcPkg of + case configHcPkg cfg of hunk ./Distribution/Simple/Configure.hs 331 -configCompilerVersion :: CompilerFlavor -> FilePath -> Int -> IO Version -configCompilerVersion GHC compilerP verbose = +configCompilerVersion :: CompilerFlavor -> FilePath -> ConfigFlags -> IO Version +configCompilerVersion GHC compilerP cfg = hunk ./Distribution/Simple/Configure.hs 335 - when (verbose > 0) $ + when (configVerbose cfg > 0) $ hunk ./Cabal.cabal 42 - Distribution.GetOpt, hunk ./Cabal.cabal 44 + Distribution.GetOpt, hunk ./Setup.lhs 2 - hunk ./Setup.lhs 3 - hunk ./Setup.lhs 4 - addfile ./tests/recursive/A.hs-boot hunk ./Cabal.cabal 2 -Version: 1.1 +Version: 0.6 hunk ./tests/recursive/A.hs-boot 1 +module A where +newtype TA = MkTA Int hunk ./Cabal.cabal 2 -Version: 0.6 +Version: 1.0.1 hunk ./Distribution/Simple/Configure.hs 51 + getInstalledPackages, + configCompiler, hunk ./Distribution/Simple/Configure.hs 228 -getInstalledPackages :: Compiler -> ConfigFlags -> IO [PackageIdentifier] -getInstalledPackages comp cfg = do - message "Reading installed packages..." +getInstalledPackagesAux :: Compiler -> ConfigFlags -> IO [PackageIdentifier] +getInstalledPackagesAux comp cfg = getInstalledPackages comp (configUser cfg) (configVerbose cfg) + +getInstalledPackages :: Compiler -> Bool -> Int -> IO [PackageIdentifier] +getInstalledPackages comp user verbose = do + when (verbose > 0) $ message "Reading installed packages..." hunk ./Distribution/Simple/Configure.hs 235 - let user_flag = if configUser cfg then " --user" else " --global" + let user_flag = if user then " --user" else " --global" hunk ./Distribution/Simple/Configure.hs 237 - when (configVerbose cfg > 0) $ + when (verbose > 0) $ hunk ./Distribution/Simple/Configure.hs 279 -configCompiler :: ConfigFlags -> IO Compiler -configCompiler cfg - = do let flavor = case configHcFlavor cfg of +configCompilerAux :: ConfigFlags -> IO Compiler +configCompilerAux cfg = configCompiler (configHcFlavor cfg) + (configHcPath cfg) + (configHcPkg cfg) + (configVerbose cfg) + +configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> Int -> IO Compiler +configCompiler hcFlavor hcPath hcPkg verbose + = do let flavor = case hcFlavor of hunk ./Distribution/Simple/Configure.hs 291 - case configHcPath cfg of + case hcPath of hunk ./Distribution/Simple/Configure.hs 295 - ver <- configCompilerVersion flavor comp cfg + ver <- configCompilerVersion flavor comp verbose hunk ./Distribution/Simple/Configure.hs 298 - case configHcPkg cfg of + case hcPkg of hunk ./Distribution/Simple/Configure.hs 342 -configCompilerVersion :: CompilerFlavor -> FilePath -> ConfigFlags -> IO Version -configCompilerVersion GHC compilerP cfg = +configCompilerVersion :: CompilerFlavor -> FilePath -> Int -> IO Version +configCompilerVersion GHC compilerP verbose = hunk ./Distribution/Simple/Configure.hs 346 - when (configVerbose cfg > 0) $ + when (verbose > 0) $ hunk ./Cabal.cabal 12 - The Haskell Common Architecture for Building Applications and + The Haskell Common Architecture for Building Applications and hunk ./Cabal.cabal 14 - easily build their Haskell applications in a portable way. - . - The Haskell Cabal is meant to be a part of a larger infrastructure - for distributing, organizing, and cataloging Haskell libraries - and tools. + easily build their Haskell applications in a portable way. + . + The Haskell Cabal is meant to be a part of a larger infrastructure + for distributing, organizing, and cataloging Haskell libraries + and tools. hunk ./Cabal.cabal 21 - Distribution.Compat.ReadP, - Distribution.Extension, - Distribution.InstalledPackageInfo, - Distribution.License, - Distribution.Make, - Distribution.Package, - Distribution.PackageDescription, - Distribution.ParseUtils, - Distribution.PreProcess, - Distribution.PreProcess.Unlit, - Distribution.Setup, - Distribution.Simple, - Distribution.Simple.Build, - Distribution.Simple.Configure, - Distribution.Simple.GHCPackageConfig, - Distribution.Simple.Install, - Distribution.Simple.LocalBuildInfo, - Distribution.Simple.Register, - Distribution.Simple.SrcDist, - Distribution.Simple.Utils, - Distribution.Compat.FilePath, - Distribution.Version + Distribution.Compat.ReadP, + Distribution.Extension, + Distribution.InstalledPackageInfo, + Distribution.License, + Distribution.Make, + Distribution.Package, + Distribution.PackageDescription, + Distribution.ParseUtils, + Distribution.PreProcess, + Distribution.PreProcess.Unlit, + Distribution.Setup, + Distribution.Simple, + Distribution.Simple.Build, + Distribution.Simple.Configure, + Distribution.Simple.GHCPackageConfig, + Distribution.Simple.Install, + Distribution.Simple.LocalBuildInfo, + Distribution.Simple.Register, + Distribution.Simple.SrcDist, + Distribution.Simple.Utils, + Distribution.Compat.FilePath, + Distribution.Version hunk ./Cabal.cabal 44 - Distribution.GetOpt, - Distribution.Compat.Directory, - Distribution.Compat.Exception, - Distribution.Compat.RawSystem + Distribution.GetOpt, + Distribution.Compat.Directory, + Distribution.Compat.Exception, + Distribution.Compat.RawSystem hunk ./changelog 3 -1.1 Isaac Jones Wed Feb 19 2005 - * Handles recursive modules for GHC 6.2 +1.0.2 Isaac Jones May 2005 + * WARNING: Interfaces not documented in the user's guide may + change in future releases. + * Handles recursive modules for GHC 6.2 and GHC 6.4. hunk ./changelog 11 - * Exposed some API stuff + * Exposed more of the API hunk ./releaseNotes 12 -The Haskell Cabal has reached pre-release stage, with a 0.4 version -The community should use this release to evaluate the interfaces and -explore the concepts of these tools. +The Haskell Cabal has reached version 1.0.2. The community should use +this release to evaluate the interfaces and explore the concepts of +these tools. It is still possible that some interfaces may change. hunk ./releaseNotes 24 - hunk ./releaseNotes 45 -You cannot currently execute the setup scripts with "./Setup.lhs" -since Cabal Hugs support isn't ready-for-prime-time. You can compile -it with ghc thusly: "ghc -package Cabal Setup.lhs -o setup" and then -use the "setup" executable after that. +You cannot currently execute most setup scripts with "./Setup.lhs" +since most systems do not have a runHaskell executable installed. You +can compile it with ghc thusly: "ghc -package Cabal Setup.lhs -o +setup" and then use the "setup" executable after that. hunk ./Distribution/Simple/Build.hs 4 --- Copyright : Isaac Jones 2003-2004 +-- Copyright : Isaac Jones 2003-2005 hunk ./Distribution/Simple/Build.hs 11 -{- Copyright (c) 2003-2004, Isaac Jones +{- Copyright (c) 2003-2005, Isaac Jones hunk ./Distribution/Simple/Build.hs 59 +import Distribution.Version (Version(..)) hunk ./Distribution/Simple/Build.hs 140 - ++ constructGHCCmdLine Nothing libBi (packageDeps lbi) + ++ constructGHCCmdLine (compiler lbi) Nothing libBi (packageDeps lbi) hunk ./Distribution/Simple/Build.hs 206 - ++ constructGHCCmdLine (library pkg_descr >>= Just . hsSourceDir . libBuildInfo) + ++ constructGHCCmdLine (compiler lbi) (library pkg_descr >>= Just . hsSourceDir . libBuildInfo) hunk ./Distribution/Simple/Build.hs 219 -constructGHCCmdLine :: Maybe FilePath -- If we're building an executable, we need the library's filepath +constructGHCCmdLine :: Compiler + -> Maybe FilePath -- If we're building an executable, we need the library's filepath hunk ./Distribution/Simple/Build.hs 224 -constructGHCCmdLine mSrcLoc bi deps = +constructGHCCmdLine comp mSrcLoc bi deps = hunk ./Distribution/Simple/Build.hs 227 - in [ "--make", "-i" ++ hsSourceDir bi ] + in (if compilerVersion comp > Version [6,4] [] + then ["-fhide-all-packages"] + else []) + ++ ["--make", "-i" ++ hsSourceDir bi ] hunk ./Distribution/PackageDescription.hs 132 - executables :: [Executable] + executables :: [Executable], + otherFiles :: [FilePath] hunk ./Distribution/PackageDescription.hs 163 - executables = [] + executables = [], + otherFiles = [] hunk ./Distribution/PackageDescription.hs 189 - hsSourceDir :: FilePath, -- ^ where to look for the haskell module hierarchy + hsSourceDirs :: [FilePath], -- ^ where to look for the haskell module hierarchy hunk ./Distribution/PackageDescription.hs 207 - hsSourceDir = currentDir, + hsSourceDirs = [currentDir], hunk ./Distribution/PackageDescription.hs 291 - hsSourceDir = override hsSourceDir "hs-source-dir", + hsSourceDirs = combine hsSourceDirs, hunk ./Distribution/PackageDescription.hs 303 - override :: (Eq a) => (BuildInfo -> a) -> String -> a - override f s - | v1 == def = v2 - | v2 == def = v1 - | otherwise = error $ "union: Two non-empty fields found in union attempt: " ++ s - where v1 = f b1 - v2 = f b2 - def = f emptyBuildInfo hunk ./Distribution/PackageDescription.hs 368 + , listField "other-files" showFilePath parseFilePathQ + otherFiles (\val pkg -> pkg{otherFiles=val}) hunk ./Distribution/PackageDescription.hs 414 - , simpleField "hs-source-dir" + , listField "hs-source-dirs" hunk ./Distribution/PackageDescription.hs 416 - hsSourceDir (\path binfo -> binfo{hsSourceDir=path}) + hsSourceDirs (\paths binfo -> binfo{hsSourceDirs=paths}) hunk ./Distribution/ParseUtils.hs 66 - +import Debug.Trace hunk ./Distribution/ParseUtils.hs 189 - let fld = map toLower fld' + let fld'' = map toLower fld' + fld | fld'' == "hs-source-dir" + = trace "The field \"hs-source-dir\" is deprecated, please use hs-source-dirs." "hs-source-dirs" + | otherwise = fld'' hunk ./Distribution/PreProcess.hs 91 --- |Apply preprocessors to the sources from 'hsSourceDir', to obtain +-- |Apply preprocessors to the sources from 'hsSourceDirs', to obtain hunk ./Distribution/PreProcess.hs 104 - sequence_ [do retVal <- preprocessModule [hsSourceDir bi] modu + sequence_ [do retVal <- preprocessModule (hsSourceDirs bi) modu hunk ./Distribution/PreProcess.hs 114 - sequence_ [do retVal <- preprocessModule ((hsSourceDir bi) - :(maybeToList (library pkg_descr - >>= Just . hsSourceDir . libBuildInfo))) + sequence_ [do retVal <- preprocessModule ((hsSourceDirs bi) + ++(maybe [] (hsSourceDirs . libBuildInfo) (library pkg_descr))) hunk ./Distribution/PreProcess.hs 163 - removePreprocessed (r `joinFileName` hsSourceDir bi) (libModules pkg_descr) suff) + removePreprocessed (map (joinFileName r) (hsSourceDirs bi)) (libModules pkg_descr) suff) hunk ./Distribution/PreProcess.hs 166 - removePreprocessed (r `joinFileName` hsSourceDir bi) (otherModules bi) suff) + removePreprocessed (map (joinFileName r) (hsSourceDirs bi)) (otherModules bi) suff) hunk ./Distribution/PreProcess.hs 169 -removePreprocessed :: FilePath -- ^search Location +removePreprocessed :: [FilePath] -- ^search Location hunk ./Distribution/PreProcess.hs 173 -removePreprocessed searchLoc mods suffixesIn +removePreprocessed searchLocs mods suffixesIn hunk ./Distribution/PreProcess.hs 177 - fs <- moduleToFilePath [searchLoc] m otherSuffixes + fs <- moduleToFilePath searchLocs m otherSuffixes hunk ./Distribution/PreProcess.hs 179 - hs <- moduleToFilePath [searchLoc] m ["hs"] + hs <- moduleToFilePath searchLocs m ["hs"] hunk ./Distribution/Simple/Build.hs 66 - smartCopySources + smartCopySources, + findFile hunk ./Distribution/Simple/Build.hs 80 -import Distribution.Compat.FilePath (splitFilePath, joinFileName, joinFileExt, +import Distribution.Compat.FilePath (splitFilePath, joinFileName, + splitFileExt, joinFileExt, hunk ./Distribution/Simple/Build.hs 130 - libTargetDir = pref `joinFileName` (hsSourceDir libBi) + libTargetDir = pref hunk ./Distribution/Simple/Build.hs 133 - smartCopySources verbose (hsSourceDir libBi) + smartCopySources verbose (hsSourceDirs libBi) hunk ./Distribution/Simple/Build.hs 142 - ++ constructGHCCmdLine (compiler lbi) Nothing libBi (packageDeps lbi) + ++ constructGHCCmdLine (compiler lbi) [] libBi (packageDeps lbi) hunk ./Distribution/Simple/Build.hs 160 - let hObjs = [ (hsSourceDir libBi) `joinFileName` (dotToSep x) `joinFileExt` objExtension + let hObjs = [ (dotToSep x) `joinFileExt` objExtension hunk ./Distribution/Simple/Build.hs 179 - createDirectoryIfMissing True (pref `joinFileName` (hsSourceDir exeBi)) - let targetDir = pref `joinFileName` hsSourceDir exeBi + let targetDir = pref `joinFileName` exeName' hunk ./Distribution/Simple/Build.hs 181 + createDirectoryIfMissing True targetDir hunk ./Distribution/Simple/Build.hs 183 - -- put hi-boot files into place for mutually recurive modules + -- put hi-boot files into place for mutually recursive modules hunk ./Distribution/Simple/Build.hs 185 - smartCopySources verbose (hsSourceDir exeBi) + smartCopySources verbose (hsSourceDirs exeBi) hunk ./Distribution/Simple/Build.hs 199 + srcMainFile <- findFile (hsSourceDirs exeBi) modPath + hunk ./Distribution/Simple/Build.hs 210 - ++ constructGHCCmdLine (compiler lbi) (library pkg_descr >>= Just . hsSourceDir . libBuildInfo) + ++ constructGHCCmdLine (compiler lbi) (maybe [] (hsSourceDirs . libBuildInfo) (library pkg_descr)) hunk ./Distribution/Simple/Build.hs 213 - ++ [hsSourceDir exeBi `joinFileName` modPath] + ++ [srcMainFile] hunk ./Distribution/Simple/Build.hs 224 - -> Maybe FilePath -- If we're building an executable, we need the library's filepath + -> [FilePath] -- If we're building an executable, we need the library's filepath hunk ./Distribution/Simple/Build.hs 228 -constructGHCCmdLine comp mSrcLoc bi deps = +constructGHCCmdLine comp srcLocs bi deps = hunk ./Distribution/Simple/Build.hs 234 - ++ ["--make", "-i" ++ hsSourceDir bi ] - ++ maybe [] (\l -> ["-i" ++ l]) mSrcLoc + ++ ["--make"] + ++ ["-i" ++ l | l <- hsSourceDirs bi ++ srcLocs] hunk ./Distribution/Simple/Build.hs 244 - withLib pkg_descr () $ (\l -> compileBuildInfo pref Nothing (libModules pkg_descr) (libBuildInfo l)) + withLib pkg_descr () $ (\l -> compileBuildInfo pref [] (libModules pkg_descr) (libBuildInfo l)) hunk ./Distribution/Simple/Build.hs 250 - let srcMainFile = hsSourceDir bi `joinFileName` mainPath + srcMainFile <- findFile (hsSourceDirs bi) mainPath hunk ./Distribution/Simple/Build.hs 254 - compileBuildInfo exeDir (library pkg_descr >>= Just . hsSourceDir . libBuildInfo) exeMods bi + compileBuildInfo exeDir (maybe [] (hsSourceDirs . libBuildInfo) (library pkg_descr)) exeMods bi hunk ./Distribution/Simple/Build.hs 258 - -> Maybe FilePath -- ^The library source dir, if building exes + -> [FilePath] -- ^library source dirs, if building exes hunk ./Distribution/Simple/Build.hs 261 - compileBuildInfo destDir mLibSrcDir mods bi = do + compileBuildInfo destDir mLibSrcDirs mods bi = do hunk ./Distribution/Simple/Build.hs 264 - let srcDir = hsSourceDir bi - let srcDirs = srcDir:(maybeToList mLibSrcDir) + let srcDirs = hsSourceDirs bi ++ mLibSrcDirs hunk ./Distribution/Simple/Build.hs 266 - fileLists <- sequence [moduleToFilePath srcDirs modu suffixes | - modu <- mods] - let trimSrcDir - | null srcDir || srcDir == currentDir = id - | otherwise = drop (length srcDir + 1) - let copy_or_cpp f = - copyModule useCpp bi f (destDir `joinFileName` trimSrcDir f) - mapM_ copy_or_cpp (concat fileLists) + flip mapM_ mods $ \ m -> do + fs <- moduleToFilePath srcDirs m suffixes + if null fs then + die ("can't find source for module " ++ m) + else do + let srcFile = head fs + let (_, ext) = splitFileExt srcFile + copyModule useCpp bi srcFile + (destDir `joinFileName` dotToSep m `joinFileExt` ext) hunk ./Distribution/Simple/Build.hs 302 - let srcDir = hsSourceDir bi hunk ./Distribution/Simple/Build.hs 310 - map (joinFileName srcDir) cfiles ++ + cfiles ++ hunk ./Distribution/Simple/Install.hs 113 - copyFileVerbose verbose (buildPref `joinFileName` (hsSourceDir b) `joinFileName` e) (pref `joinFileName` e) + copyFileVerbose verbose (buildPref `joinFileName` e) (pref `joinFileName` e) hunk ./Distribution/Simple/Install.hs 122 - = do smartCopySources verbose (buildPref `joinFileName` (hsSourceDir $ libBuildInfo l)) pref (libModules pd) ["hi"] True + = do smartCopySources verbose [buildPref] pref (libModules pd) ["hi"] True hunk ./Distribution/Simple/Install.hs 163 - smartCopySources verbose buildPref pkgDir (libModules pkg_descr) hugsInstallSuffixes True + smartCopySources verbose [buildPref] pkgDir (libModules pkg_descr) hugsInstallSuffixes True hunk ./Distribution/Simple/Install.hs 174 - smartCopySources verbose buildDir installDir + smartCopySources verbose [buildDir] installDir hunk ./Distribution/Simple/SrcDist.hs 57 - (smartCopySources, die, findPackageDesc, copyFileVerbose) + (smartCopySources, die, findPackageDesc, findFile, copyFileVerbose) hunk ./Distribution/Simple/SrcDist.hs 89 - copyFileTo verbose targetDir (hsSourceDir exeBi `joinFileName` mainPath) + srcMainFile <- findFile (hsSourceDirs exeBi) mainPath + copyFileTo verbose targetDir srcMainFile hunk ./Distribution/Simple/SrcDist.hs 93 + flip mapM_ (otherFiles pkg_descr) $ \ fpath -> do + copyFileTo verbose targetDir fpath hunk ./Distribution/Simple/SrcDist.hs 120 -prepareDir verbose inPref pps mods BuildInfo{hsSourceDir=srcDir, otherModules=mods', cSources=cfiles} - = do let pref = inPref `joinFileName` srcDir - let suff = ppSuffixes pps ++ ["hs", "lhs"] - smartCopySources verbose srcDir pref (mods++mods') suff True - removePreprocessed pref mods suff +prepareDir verbose inPref pps mods BuildInfo{hsSourceDirs=srcDirs, otherModules=mods', cSources=cfiles} + = do let suff = ppSuffixes pps ++ ["hs", "lhs"] + smartCopySources verbose srcDirs inPref (mods++mods') suff True + removePreprocessed (map (joinFileName inPref) srcDirs) mods suff hunk ./Distribution/Simple/Utils.hs 61 + findFile, hunk ./Distribution/Simple/Utils.hs 178 +-- |Like 'moduleToFilePath', but return the location and the rest of +-- the path as separate results. +moduleToFilePath2 + :: [FilePath] -- ^search locations + -> String -- ^Module Name + -> [String] -- ^possible suffixes + -> IO [(FilePath, FilePath)] -- ^locations and relative names +moduleToFilePath2 locs mname possibleSuffixes + = filterM exists $ + [(loc, fname `joinFileExt` ext) | loc <- locs, ext <- possibleSuffixes] + where + fname = dotToSep mname + exists (loc, relname) = doesFileExist (loc `joinFileName` relname) + hunk ./Distribution/Simple/Utils.hs 201 +findFile :: [FilePath] -- ^search locations + -> FilePath -- ^File Name + -> IO FilePath +findFile prefPaths locPath = do + paths <- filterM doesFileExist [prefPath `joinFileName` locPath | prefPath <- prefPaths] + case paths of + [path] -> return path + [] -> die (locPath ++ " doesn't exists") + paths -> die (locPath ++ "is found in multiple places:" ++ unlines (map ((++) " ") paths)) + hunk ./Distribution/Simple/Utils.hs 223 - -> FilePath -- ^build prefix (location of objects) + -> [FilePath] -- ^build prefix (location of objects) hunk ./Distribution/Simple/Utils.hs 229 -smartCopySources verbose pref targetDir sources searchSuffixes exitIfNone +smartCopySources verbose srcDirs targetDir sources searchSuffixes exitIfNone hunk ./Distribution/Simple/Utils.hs 231 + allLocations <- mapM moduleToFPErr sources + let copies = [(srcDir `joinFileName` name, + targetDir `joinFileName` name) | + (srcDir, name) <- concat allLocations] hunk ./Distribution/Simple/Utils.hs 236 - sourceLocs' <- mapM moduleToFPErr sources - let sourceLocs = concat $ filter (not . null) sourceLocs' - let sourceLocsNoPref -- get rid of the prefix, for target location. - = if null pref || pref == currentDir then sourceLocs - else map (dropPrefix pref) sourceLocs - mapM (createDirectoryIfMissing True) - $ nub [fst (splitFileName (targetDir `joinFileName` x)) - | x <- sourceLocsNoPref, fst (splitFileName x) /= "."] + mapM_ (createDirectoryIfMissing True) $ nub $ + [fst (splitFileName targetFile) | (_, targetFile) <- copies] hunk ./Distribution/Simple/Utils.hs 239 - sequence_ [copyFileVerbose verbose x (targetDir `joinFileName` y) - | (x,y) <- (zip sourceLocs sourceLocsNoPref)] - return () + sequence_ [copyFileVerbose verbose srcFile destFile | + (srcFile, destFile) <- copies] hunk ./Distribution/Simple/Utils.hs 242 - = do p <- moduleToFilePath [pref] m searchSuffixes + = do p <- moduleToFilePath2 srcDirs m searchSuffixes hunk ./Distribution/Simple/Utils.hs 452 - do mp1 <- moduleToFilePath "" "Distribution.Simple.Build" suffixes --exists - mp2 <- moduleToFilePath "" "Foo.Bar" suffixes -- doesn't exist + do mp1 <- moduleToFilePath [""] "Distribution.Simple.Build" suffixes --exists + mp2 <- moduleToFilePath [""] "Foo.Bar" suffixes -- doesn't exist hunk ./Distribution/Simple.hs 256 - inFiles <- sequence [moduleToFilePath [hsSourceDir bi] m ["hs", "lhs"] + inFiles <- sequence [moduleToFilePath (hsSourceDirs bi) m ["hs", "lhs"] hunk ./Distribution/Simple.hs 289 - inFiles <- sequence [moduleToFilePath [hsSourceDir bi] m ["hs", "lhs"] + inFiles <- sequence [moduleToFilePath (hsSourceDirs bi) m ["hs", "lhs"] hunk ./Distribution/Simple.hs 311 - withLib pkg_descr () (\Library{libBuildInfo=BuildInfo{hsSourceDir=dir}} -> do - s <- sequence [moduleToFilePath [dir] (x ++"_stub") ["h", "c"] + withLib pkg_descr () (\Library{libBuildInfo=BuildInfo{hsSourceDirs=dirs}} -> do + s <- sequence [moduleToFilePath dirs (x ++"_stub") ["h", "c"] hunk ./Distribution/Simple.hs 318 - ,buildInfo=BuildInfo{hsSourceDir=dir}} -> do - s <- sequence [moduleToFilePath [dir] (x ++"_stub") ["h", "c"] + ,buildInfo=BuildInfo{hsSourceDirs=dirs}} -> do + s <- sequence [moduleToFilePath dirs (x ++"_stub") ["h", "c"] hunk ./doc/Cabal.xml 460 + other-files: + filename list + + + A list of additional files to be included in source + distributions built with setup sdist + (see ). + + + + + hunk ./doc/Cabal.xml 529 - Main module, relative to the - hs-source-dir directory. + Main module, relative to one of the + directories listed in hs-source-dirs. hunk ./doc/Cabal.xml 576 - hs-source-dir: - directory + hs-source-dirs: + directory list hunk ./doc/Cabal.xml 581 - The name of root directory of the module - hierarchy. + Root directories for the module hierarchy. + + For backwards compatibility, the old variant + hs-source-dir is also recognized. hunk ./doc/Cabal.xml 764 - For some packages, implementation details and the build - procedure depend on the build environment. The simple build - infrastructure can handle many such situations using a slightly - longer Setup.hs: + For some packages, especially those interfacing with C + libraries, implementation details and the build procedure depend + on the build environment. The simple build infrastructure + can handle many such situations using a slightly longer + Setup.hs: hunk ./doc/Cabal.xml 879 + + + Packages using these features will also need to list + additional files such as configure, + templates for .buildinfo files, files named + only in .buildinfo files, header files and + so on in the other-files field, to ensure + that they are included in source distributions. + hunk ./doc/Cabal.xml 1053 - + hunk ./doc/Cabal.xml 1183 - + hunk ./doc/Cabal.xml 1189 - + hunk ./doc/Cabal.xml 1195 - + hunk ./doc/Cabal.xml 1222 - + hunk ./doc/Cabal.xml 1242 - + hunk ./doc/Cabal.xml 1284 - + hunk ./doc/Cabal.xml 1327 - + hunk ./doc/Cabal.xml 1332 - that can be distributed to package builders. When unpacked, - the commands listed in this section will be available. + in the dist subdirectory, for distribution + to package builders. When unpacked, the commands listed in this + section will be available. hunk ./doc/Cabal.xml 1336 - However this command is not yet working in the simple build - infrastructure. + The files placed in this distribution are the package + description file, the setup script, the sources of the modules + named in the package description file, and files named in the + license-file, main-is, + c-sources and other-files + fields. hunk ./doc/Cabal.xml 1352 - In the simple build infrastructure, the - sdist command does not work. - - - hunk ./doc/Cabal.xml 1361 - Cabal does not work with the current stable release - (Nov 2003), just the development version. + Cabal requires the latest release (Mar 2005). hunk ./doc/Cabal.xml 1366 - - - - The option is unavailable. hunk ./Distribution/PackageDescription.hs 86 +import Data.List (nub) hunk ./Distribution/PackageDescription.hs 303 - combine f = f b1 ++ f b2 + combine f = nub $ f b1 ++ f b2 hunk ./Distribution/PackageDescription.hs 672 + "Other-Files: file1, file2", hunk ./Distribution/PackageDescription.hs 674 - "HS-Source-Dir: src", + "HS-Source-Dirs: src, src2", hunk ./Distribution/PackageDescription.hs 710 + otherFiles=["file1", "file2"], hunk ./Distribution/PackageDescription.hs 727 - hsSourceDir = "src", + hsSourceDirs = ["src", "src2"], hunk ./Distribution/PackageDescription.hs 743 - hsSourceDir = "scripts", + hsSourceDirs = ["scripts"], hunk ./Distribution/PreProcess.hs 59 +import Data.List (nub) hunk ./Distribution/PreProcess.hs 115 - sequence_ [do retVal <- preprocessModule ((hsSourceDirs bi) + sequence_ [do retVal <- preprocessModule (nub $ (hsSourceDirs bi) hunk ./Distribution/Simple/Build.hs 64 - moduleToFilePath, currentDir, + moduleToFilePath, hunk ./Distribution/Simple/Build.hs 179 + putStrLn $ "hsSourceDirs: " ++ (show (hsSourceDirs exeBi)) hunk ./Distribution/Simple/Build.hs 199 - hunk ./Distribution/Simple/Build.hs 235 - ++ ["-i" ++ l | l <- hsSourceDirs bi ++ srcLocs] + ++ ["-i" ++ l | l <- nub (hsSourceDirs bi ++ srcLocs)] hunk ./Distribution/Simple/Build.hs 264 - let srcDirs = hsSourceDirs bi ++ mLibSrcDirs + let srcDirs = nub $ hsSourceDirs bi ++ mLibSrcDirs hunk ./Distribution/Simple/Install.hs 113 - copyFileVerbose verbose (buildPref `joinFileName` e) (pref `joinFileName` e) + copyFileVerbose verbose (buildPref `joinFileName` e `joinFileName` e) (pref `joinFileName` e) hunk ./Distribution/Simple/Utils.hs 204 -findFile prefPaths locPath = do +findFile prefPathsIn locPath = do + let prefPaths = nub prefPathsIn -- ignore dups hunk ./Distribution/Simple/Utils.hs 207 - case paths of + case nub paths of -- also ignore dups, though above nub should fix this. hunk ./Distribution/Simple/Utils.hs 210 - paths -> die (locPath ++ "is found in multiple places:" ++ unlines (map ((++) " ") paths)) + paths -> die (locPath ++ " is found in multiple places:" ++ unlines (map ((++) " ") paths)) hunk ./tests/ModuleTest.hs 170 - doesFileExist "dist/build/testA" >>= + doesFileExist "dist/build/testA/testA" >>= hunk ./tests/ModuleTest.hs 172 - doesFileExist "dist/build/testB" >>= + doesFileExist "dist/build/testB/testB" >>= hunk ./tests/ModuleTest.hs 174 - doesFileExist "dist/build/testA-tmp/c_src/hello.o" >>= + doesFileExist "dist/build/testA/testA-tmp/c_src/hello.o" >>= hunk ./tests/ModuleTest.hs 267 - assertBool "build did not create the executable: testA" + assertBool "install did not create the executable: testA" hunk ./tests/ModuleTest.hs 269 - assertBool "build did not create the executable: testB" + assertBool "install did not create the executable: testB" hunk ./tests/ModuleTest.hs 285 - doesFileExist "dist/build/testExe-tmp/A.hi" >>= + doesFileExist "dist/build/testExe/testExe-tmp/A.hi" >>= hunk ./tests/ModuleTest.hs 287 - doesFileExist "dist/build/testExe" >>= + doesFileExist "dist/build/testExe/testExe" >>= hunk ./tests/ModuleTest.hs 317 - doesFileExist "dist/build/mains/mainForA" >>= + doesFileExist "dist/build/mainForA/mainForA" >>= hunk ./Distribution/Simple/Build.hs 232 - then ["-fhide-all-packages"] + then ["-hide-all-packages"] addfile ./DefaultSetup.lhs hunk ./Cabal.cabal 50 +executable: cabal-setup +main-is: DefaultSetup.lhs +Other-Modules: + Distribution.Compat.ReadP, + Distribution.Extension, + Distribution.InstalledPackageInfo, + Distribution.License, + Distribution.Make, + Distribution.Package, + Distribution.PackageDescription, + Distribution.ParseUtils, + Distribution.PreProcess, + Distribution.PreProcess.Unlit, + Distribution.Setup, + Distribution.Simple, + Distribution.Simple.Build, + Distribution.Simple.Configure, + Distribution.Simple.GHCPackageConfig, + Distribution.Simple.Install, + Distribution.Simple.LocalBuildInfo, + Distribution.Simple.Register, + Distribution.Simple.SrcDist, + Distribution.Simple.Utils, + Distribution.Compat.FilePath, + Distribution.Version, + Distribution.GetOpt, + Distribution.Compat.Directory, + Distribution.Compat.Exception, + Distribution.Compat.RawSystem +Extensions: CPP + hunk ./DefaultSetup.lhs 1 +#!/usr/bin/runhaskell +> module Main where +> import Distribution.Simple +> main :: IO () +> main = defaultMain hunk ./Distribution/PackageDescription.hs 195 - includeDirs :: [FilePath], - includes :: [FilePath], + includeDirs :: [FilePath], -- ^directories to find .h files + includes :: [FilePath], -- ^ The .h files to be found in includeDirs hunk ./changelog 12 + * Added support for the hide-all-packages flag in GHC > 6.4 hunk ./Distribution/Simple/Configure.hs 113 - let bi = read str -#ifndef __NHC__ - evaluate bi `catch` \_ -> - die dieMsg -#else --- FIXME: Is there anything we can do here? DeepSeq? -#endif - return bi + case reads str of + [(bi,_)] -> return bi + _ -> die dieMsg hunk ./Distribution/Simple/Configure.hs 86 -import Distribution.Compat.FilePath (splitFilePath, joinFileName, joinFileExt) +import Distribution.Compat.FilePath (splitFileName, joinFileName, joinFileExt) hunk ./Distribution/Simple/Configure.hs 357 - (dir,_,ext) = splitFilePath path - pkgtool = dir `joinFileName` pkgToolName `joinFileExt` ext + (dir,name) = splitFileName path + pkgtool = dir `joinFileName` pkgToolName ++ drop (length (compilerBinaryName flavor)) name hunk ./Distribution/Simple/Build.hs 171 + try (removeFile profLibName) -- first remove library if it exists hunk ./Distribution/PackageDescription.hs 197 - options :: [(CompilerFlavor,[String])] + options :: [(CompilerFlavor,[String])], + profOptions :: [String] hunk ./Distribution/PackageDescription.hs 216 - options = [] + options = [], + profOptions = [] hunk ./Distribution/PackageDescription.hs 423 + , listField "prof-options" + text parseTokenQ + profOptions (\val binfo -> binfo{profOptions=val}) hunk ./Distribution/Setup.hs 116 + configProfLib :: Bool, -- ^Enable profiling in the library + configProfExe :: Bool, -- ^Enable profiling in the executables. hunk ./Distribution/Setup.hs 134 + configProfLib = False, + configProfExe = False, hunk ./Distribution/Setup.hs 147 + | WithProfLib | WithoutProfLib + | WithProfExe | WithoutProfExe hunk ./Distribution/Setup.hs 274 + Option "p" ["enable-library-profiling"] (NoArg WithProfLib) + "Enable library profiling", + Option "" ["disable-library-profiling"] (NoArg WithoutProfLib) + "Disable library profiling", + Option "" ["enable-executable-profiling"] (NoArg WithProfExe) + "Enable executable profiling", + Option "" ["disable-executable-profiling"] (NoArg WithoutProfExe) + "Disable executable profiling", hunk ./Distribution/Setup.hs 315 + WithProfLib -> t { configProfLib = True } + WithoutProfLib -> t { configProfLib = False } + WithProfExe -> t { configProfExe = True } + WithoutProfExe -> t { configProfExe = False } hunk ./Distribution/Simple/Build.hs 63 - mkLibName, dotToSep, + mkLibName, mkProfLibName, dotToSep, hunk ./Distribution/Simple/Build.hs 70 -import Data.Maybe(maybeToList) +import Data.Maybe(maybeToList, fromMaybe) hunk ./Distribution/Simple/Build.hs 125 + ifProfLib = when (withProfLib lbi) hunk ./Distribution/Simple/Build.hs 146 + ghcArgsProf = ghcArgs + ++ ["-prof", + "-hisuf", "p_hi", + "-osuf", "p_o" + ] + ++ profOptions libBi hunk ./Distribution/Simple/Build.hs 153 - rawSystemExit verbose ghcPath ghcArgs + do rawSystemExit verbose ghcPath ghcArgs + ifProfLib (rawSystemExit verbose ghcPath ghcArgsProf) hunk ./Distribution/Simple/Build.hs 173 + hProfObjs = [ (dotToSep x) `joinFileExt` "p_"++objExtension + | x <- libModules pkg_descr ] + profLibName = mkProfLibName pref (showPackageId (package pkg_descr)) hunk ./Distribution/Simple/Build.hs 187 + arProfArgs = ["q"++ (if verbose > 4 then "v" else "")] + ++ [profLibName] + ++ [pref `joinFileName` x | x <- hProfObjs ++ cObjs] + ++ stubObjs hunk ./Distribution/Simple/Build.hs 192 + ifProfLib (rawSystemPathExit verbose "ar" arProfArgs) hunk ./Distribution/Simple/Build.hs 235 + ++ if withProfExe lbi + then "-prof":profOptions exeBi + else [] hunk ./Distribution/Simple/Configure.hs 179 - withCpphs=cpphs + withCpphs=cpphs, + withProfLib=configProfLib cfg, + withProfExe=configProfExe cfg hunk ./Distribution/Simple/Install.hs 70 - die, rawSystemVerbose) + mkProfLibName, die, rawSystemVerbose) hunk ./Distribution/Simple/Install.hs 98 - GHC -> do when (hasLibs pkg_descr) (installLibGHC verbose libPref buildPref pkg_descr) + GHC -> do when (hasLibs pkg_descr) (installLibGHC verbose (withProfLib lbi) libPref buildPref pkg_descr) hunk ./Distribution/Simple/Install.hs 117 + -> Bool -- ^has profiling library hunk ./Distribution/Simple/Install.hs 121 -installLibGHC verbose pref buildPref pd@PackageDescription{library=Just l, +installLibGHC verbose hasProf pref buildPref pd@PackageDescription{library=Just l, hunk ./Distribution/Simple/Install.hs 124 + ifProf $ smartCopySources verbose [buildPref] pref (libModules pd) ["p_hi"] True hunk ./Distribution/Simple/Install.hs 126 + profLibTargetLoc = mkProfLibName pref (showPackageId p) hunk ./Distribution/Simple/Install.hs 128 + ifProf $ copyFileVerbose verbose (mkProfLibName buildPref (showPackageId p)) profLibTargetLoc hunk ./Distribution/Simple/Install.hs 135 - Just ranLibLoc -> rawSystemVerbose verbose "ranlib" [libTargetLoc] >> return () + Just ranLibLoc -> do rawSystemVerbose verbose "ranlib" [libTargetLoc] + ifProf $ rawSystemVerbose verbose "ranlib" [profLibTargetLoc] + return () hunk ./Distribution/Simple/Install.hs 141 - Just arLoc -> rawSystemVerbose verbose - "ar" ["-s", libTargetLoc] >> return () - -installLibGHC _ _ _ PackageDescription{library=Nothing} + Just arLoc -> do rawSystemVerbose verbose "ar" ["-s", libTargetLoc] + ifProf $ rawSystemVerbose verbose "ar" ["-s", profLibTargetLoc] + return () + where ifProf action = when hasProf (action >> return ()) +installLibGHC _ _ _ _ PackageDescription{library=Nothing} hunk ./Distribution/Simple/LocalBuildInfo.hs 50 - prefix :: FilePath, + prefix :: FilePath, hunk ./Distribution/Simple/LocalBuildInfo.hs 53 - compiler :: Compiler, + compiler :: Compiler, hunk ./Distribution/Simple/LocalBuildInfo.hs 55 - buildDir :: FilePath, + buildDir :: FilePath, hunk ./Distribution/Simple/LocalBuildInfo.hs 57 - packageDeps :: [PackageIdentifier], + packageDeps :: [PackageIdentifier], hunk ./Distribution/Simple/LocalBuildInfo.hs 64 - withHaddock :: Maybe FilePath, -- ^Might be the location of the Haddock executable. - withHappy :: Maybe FilePath, -- ^Might be the location of the Happy executable. - withAlex :: Maybe FilePath, -- ^Might be the location of the Alex executable. - withHsc2hs :: Maybe FilePath, -- ^Might be the location of the Hsc2hs executable. - withC2hs :: Maybe FilePath, -- ^Might be the location of the C2hs executable. - withCpphs :: Maybe FilePath -- ^Might be the location of the Cpphs executable. + withHaddock :: Maybe FilePath, -- ^Might be the location of the Haddock executable. + withHappy :: Maybe FilePath, -- ^Might be the location of the Happy executable. + withAlex :: Maybe FilePath, -- ^Might be the location of the Alex executable. + withHsc2hs :: Maybe FilePath, -- ^Might be the location of the Hsc2hs executable. + withC2hs :: Maybe FilePath, -- ^Might be the location of the C2hs executable. + withCpphs :: Maybe FilePath, -- ^Might be the location of the Cpphs executable. + withProfLib :: Bool, + withProfExe :: Bool hunk ./Distribution/Simple/Utils.hs 56 + mkProfLibName, hunk ./Distribution/Simple/Utils.hs 266 + +mkProfLibName :: FilePath -- ^file Prefix + -> String -- ^library name. + -> String +mkProfLibName pref lib = mkLibName pref (lib++"_p") hunk ./Distribution/PackageDescription.hs 742 + profOptions = [], hunk ./Distribution/PreProcess.hs 188 -ppGreenCard :: PreProcessor -ppGreenCard inFile outFile verbose - = rawSystemPath verbose "green-card" ["-tffi", "-o" ++ outFile, inFile] +ppGreenCard :: BuildInfo -> LocalBuildInfo -> PreProcessor +ppGreenCard = ppGreenCard' [] + +ppGreenCard' :: [String] -> BuildInfo -> LocalBuildInfo -> PreProcessor +ppGreenCard' inputArgs bi lbi + = maybe (ppNone "greencard") pp (withGreencard lbi) + where pp greencard inFile outFile verbose + = rawSystemPath verbose greencard (["-tffi", "-o" ++ outFile, inFile] ++ inputArgs) hunk ./Distribution/PreProcess.hs 281 - [ ("gc", \ _ _ -> ppGreenCard) + [ ("gc", ppGreenCard) hunk ./Distribution/Setup.hs 116 + configGreencard:: Maybe FilePath, -- ^GreenCard path hunk ./Distribution/Setup.hs 138 + configGreencard= Nothing, hunk ./Distribution/Setup.hs 149 + | WithGreencard FilePath hunk ./Distribution/Setup.hs 277 + Option "" ["with-greencard"] (ReqArg WithGreencard "PATH") + "give the path to greencard", hunk ./Distribution/Setup.hs 320 + WithGreencard path-> t { configGreencard= Just path } hunk ./Distribution/Simple/Configure.hs 150 - haddock <- findProgram "haddock" (configHaddock cfg) - happy <- findProgram "happy" (configHappy cfg) - alex <- findProgram "alex" (configAlex cfg) - hsc2hs <- findProgram "hsc2hs" (configHsc2hs cfg) - c2hs <- findProgram "c2hs" (configC2hs cfg) - cpphs <- findProgram "cpphs" (configCpphs cfg) + haddock <- findProgram "haddock" (configHaddock cfg) + happy <- findProgram "happy" (configHappy cfg) + alex <- findProgram "alex" (configAlex cfg) + hsc2hs <- findProgram "hsc2hs" (configHsc2hs cfg) + c2hs <- findProgram "c2hs" (configC2hs cfg) + cpphs <- findProgram "cpphs" (configCpphs cfg) + greencard <- findProgram "greencard" (configGreencard cfg) hunk ./Distribution/Simple/Configure.hs 163 - reportProgram "haddock" haddock - reportProgram "happy" happy - reportProgram "alex" alex - reportProgram "hsc2hs" hsc2hs - reportProgram "c2hs" c2hs - reportProgram "cpphs" cpphs + reportProgram "haddock" haddock + reportProgram "happy" happy + reportProgram "alex" alex + reportProgram "hsc2hs" hsc2hs + reportProgram "c2hs" c2hs + reportProgram "cpphs" cpphs + reportProgram "greencard" greencard hunk ./Distribution/Simple/Configure.hs 182 + withGreencard=greencard, hunk ./Distribution/Simple/LocalBuildInfo.hs 70 + withGreencard :: Maybe FilePath, -- ^Might be the location of the GreenCard executable. hunk ./TODO 13 -* add withGreencard= - hunk ./Distribution/PreProcess.hs 195 - = rawSystemPath verbose greencard (["-tffi", "-o" ++ outFile, inFile] ++ inputArgs) + = rawSystemVerbose verbose greencard (["-tffi", "-o" ++ outFile, inFile] ++ inputArgs) hunk ./Cabal.cabal 22 + Distribution.Compiler, hunk ./Cabal.cabal 43 - Distribution.Version + Distribution.Version, + Language.Haskell.Extension hunk ./Distribution/Extension.hs 42 -module Distribution.Extension ( - Extension(..), Opt, +module Distribution.Extension +{-# DEPRECATED "Use modules Language.Haskell.Extension and Distribution.Compiler instead" #-} + (Extension(..), Opt, hunk ./Distribution/Extension.hs 46 -#ifdef DEBUG - hunitTests -#endif hunk ./Distribution/Extension.hs 48 -import Data.List(nub) - -#ifdef DEBUG -import HUnit (Test) -#endif - --- ------------------------------------------------------------ --- * Extension --- ------------------------------------------------------------ - --- |This represents non-standard compiler extensions which each --- package might employ. - -data Extension = - OverlappingInstances - | RecursiveDo - | ParallelListComp - | MultiParamTypeClasses - | NoMonomorphismRestriction - | FunctionalDependencies - | RankNTypes - | PolymorphicComponents - | ExistentialQuantification - | ScopedTypeVariables - | ImplicitParams - | FlexibleContexts - | FlexibleInstances - | EmptyDataDecls - | CPP - - | TypeSynonymInstances - | TemplateHaskell - | ForeignFunctionInterface - | AllowOverlappingInstances - | AllowUndecidableInstances - | AllowIncoherentInstances - | InlinePhase - | ContextStack - | Arrows - | Generics - | NoImplicitPrelude - | NamedFieldPuns - | PatternGuards - - | ExtensibleRecords - | RestrictedTypeSynonyms - | HereDocuments - | UnsafeOverlappingInstances - deriving (Show, Read, Eq) - --- |GHC: Return the unsupported extensions, and the flags for the supported extensions -extensionsToGHCFlag :: [ Extension ] -> ([Extension], [Opt]) -extensionsToGHCFlag l - = splitEither $ nub $ map extensionToGHCFlag l - where - extensionToGHCFlag :: Extension -> Either Extension String - extensionToGHCFlag OverlappingInstances = Right "-fallow-overlapping-instances" - extensionToGHCFlag TypeSynonymInstances = Right "-fglasgow-exts" - extensionToGHCFlag TemplateHaskell = Right "-fth" - extensionToGHCFlag ForeignFunctionInterface = Right "-ffi" - extensionToGHCFlag NoMonomorphismRestriction = Right "-fno-monomorphism-restriction" - extensionToGHCFlag AllowOverlappingInstances = Right "-fallow-overlapping-instances" - extensionToGHCFlag AllowUndecidableInstances = Right "-fallow-undecidable-instances" - extensionToGHCFlag AllowIncoherentInstances = Right "-fallow-incoherent-instances" - extensionToGHCFlag InlinePhase = Right "-finline-phase" - extensionToGHCFlag ContextStack = Right "-fcontext-stack" - extensionToGHCFlag Arrows = Right "-farrows" - extensionToGHCFlag Generics = Right "-fgenerics" - extensionToGHCFlag NoImplicitPrelude = Right "-fno-implicit-prelude" - extensionToGHCFlag ImplicitParams = Right "-fimplicit-params" - extensionToGHCFlag CPP = Right "-cpp" - - extensionToGHCFlag RecursiveDo = Right "-fglasgow-exts" - extensionToGHCFlag ParallelListComp = Right "-fglasgow-exts" - extensionToGHCFlag MultiParamTypeClasses = Right "-fglasgow-exts" - extensionToGHCFlag FunctionalDependencies = Right "-fglasgow-exts" - extensionToGHCFlag RankNTypes = Right "-fglasgow-exts" - extensionToGHCFlag PolymorphicComponents = Right "-fglasgow-exts" - extensionToGHCFlag ExistentialQuantification = Right "-fglasgow-exts" - extensionToGHCFlag ScopedTypeVariables = Right "-fglasgow-exts" - extensionToGHCFlag FlexibleContexts = Right "-fglasgow-exts" - extensionToGHCFlag FlexibleInstances = Right "-fglasgow-exts" - extensionToGHCFlag EmptyDataDecls = Right "-fglasgow-exts" - extensionToGHCFlag PatternGuards = Right "-fglasgow-exts" - - extensionToGHCFlag e@ExtensibleRecords = Left e - extensionToGHCFlag e@RestrictedTypeSynonyms = Left e - extensionToGHCFlag e@HereDocuments = Left e - extensionToGHCFlag e@UnsafeOverlappingInstances = Left e - extensionToGHCFlag e@NamedFieldPuns = Left e - --- |NHC: Return the unsupported extensions, and the flags for the supported extensions -extensionsToNHCFlag :: [ Extension ] -> ([Extension], [Opt]) -extensionsToNHCFlag l - = splitEither $ nub $ map extensionToNHCFlag l - where - -- NHC doesn't enforce the monomorphism restriction at all. - extensionToNHCFlag NoMonomorphismRestriction = Right "" - extensionToNHCFlag ForeignFunctionInterface = Right "" - extensionToNHCFlag ExistentialQuantification = Right "" - extensionToNHCFlag EmptyDataDecls = Right "" - extensionToNHCFlag NamedFieldPuns = Right "-puns" - extensionToNHCFlag CPP = Right "-cpp" - extensionToNHCFlag e = Left e - --- |Hugs: Return the unsupported extensions, and the flags for the supported extensions -extensionsToHugsFlag :: [ Extension ] -> ([Extension], [Opt]) -extensionsToHugsFlag l - = splitEither $ nub $ map extensionToHugsFlag l - where - extensionToHugsFlag OverlappingInstances = Right "+o" - extensionToHugsFlag UnsafeOverlappingInstances = Right "+O" - extensionToHugsFlag HereDocuments = Right "+H" - extensionToHugsFlag RecursiveDo = Right "-98" - extensionToHugsFlag ParallelListComp = Right "-98" - extensionToHugsFlag MultiParamTypeClasses = Right "-98" - extensionToHugsFlag FunctionalDependencies = Right "-98" - extensionToHugsFlag RankNTypes = Right "-98" - extensionToHugsFlag PolymorphicComponents = Right "-98" - extensionToHugsFlag ExistentialQuantification = Right "-98" - extensionToHugsFlag ScopedTypeVariables = Right "-98" - extensionToHugsFlag ImplicitParams = Right "-98" - extensionToHugsFlag ExtensibleRecords = Right "-98" - extensionToHugsFlag RestrictedTypeSynonyms = Right "-98" - extensionToHugsFlag FlexibleContexts = Right "-98" - extensionToHugsFlag FlexibleInstances = Right "-98" - extensionToHugsFlag ForeignFunctionInterface = Right "" - extensionToHugsFlag EmptyDataDecls = Right "" - extensionToHugsFlag CPP = Right "" - extensionToHugsFlag e = Left e - -splitEither :: [Either a b] -> ([a], [b]) -splitEither l = ([a | Left a <- l], [b | Right b <- l]) - -type Opt = String - --- ------------------------------------------------------------ --- * Testing --- ------------------------------------------------------------ - -#ifdef DEBUG -hunitTests :: [Test] -hunitTests = [] -#endif +import Distribution.Compiler (Opt, extensionsToNHCFlag, extensionsToGHCFlag, + extensionsToHugsFlag) +import Language.Haskell.Extension (Extension(..)) hunk ./Distribution/InstalledPackageInfo.hs 65 -import Distribution.Extension ( Opt ) +import Distribution.Compiler ( Opt ) hunk ./Distribution/Make.hs 55 -import Distribution.Simple.Utils (maybeExit, defaultPackageDesc) +import Distribution.Simple.Utils (die, maybeExit, defaultPackageDesc) hunk ./Distribution/Make.hs 62 -import System.IO (hPutStrLn, stderr) hunk ./Distribution/Make.hs 189 - do hPutStrLn stderr $ "Unrecognised flags: " ++ concat (intersperse "," (extra_flags)) - exitWith (ExitFailure 1) + die $ "Unrecognised flags: " ++ concat (intersperse "," (extra_flags)) hunk ./Distribution/PackageDescription.hs 83 -import Control.Monad(liftM, foldM, when, unless) +import Control.Monad(liftM, foldM, when) hunk ./Distribution/PackageDescription.hs 89 +import System.Environment(getProgName) +import System.IO(hPutStrLn, stderr) +import System.Exit hunk ./Distribution/PackageDescription.hs 100 -import Distribution.Extension(Extension(..)) -import Distribution.Setup(CompilerFlavor(..)) -import Distribution.Simple.Utils(currentDir, die) +import Distribution.Compiler(CompilerFlavor(..)) +import Distribution.Simple.Utils(currentDir, die, dieWithLocation, warn) +import Language.Haskell.Extension(Extension(..)) hunk ./Distribution/PackageDescription.hs 449 - ParseFailed e -> error (showError e) -- FIXME + ParseFailed e -> do + let (lineNo, message) = locatedErrorMsg e + dieWithLocation fpath lineNo message hunk ./Distribution/PackageDescription.hs 453 + where hunk ./Distribution/PackageDescription.hs 488 - parseExecutableStanza st@((_, "executable",eName):_) = + parseExecutableStanza st@((lineNo, "executable",eName):_) = hunk ./Distribution/PackageDescription.hs 491 - Nothing -> fail $ "No 'Main-Is' field found for " ++ eName ++ " stanza" + Nothing -> syntaxError lineNo $ "No 'Main-Is' field found for " ++ eName ++ " stanza" hunk ./Distribution/PackageDescription.hs 493 - myError lineNo $ "'Executable' stanza starting with field '" ++ f ++ "'" + syntaxError lineNo $ "'Executable' stanza starting with field '" ++ f ++ "'" hunk ./Distribution/PackageDescription.hs 530 - | otherwise = myError lineNo "expecting 'executable' at top of stanza" - parseExe [] = myError 0 "error in parsing buildinfo file. Expected executable stanza" + | otherwise = syntaxError lineNo "expecting 'executable' at top of stanza" + parseExe [] = syntaxError 0 "error in parsing buildinfo file. Expected executable stanza" hunk ./Distribution/PackageDescription.hs 540 - myError lineNo $ "Unknown field '" ++ f ++ "'" + syntaxError lineNo $ "Unknown field '" ++ f ++ "'" hunk ./Distribution/PackageDescription.hs 621 - mapM (putStrLn . ("Warning: " ++)) warnings - mapM (putStrLn . ("Error: " ++)) errors - unless (null errors) (error "Errors detected. See above.") + mapM warn warnings + when (not (null errors)) $ do + pname <- getProgName + mapM (hPutStrLn stderr . ((pname ++ ": Error: ") ++)) errors + exitWith (ExitFailure 1) hunk ./Distribution/ParseUtils.hs 47 - LineNo, PError(..), showError, myError, runP, + LineNo, PError(..), locatedErrorMsg, showError, syntaxError, runP, hunk ./Distribution/ParseUtils.hs 60 +import Distribution.Compiler (CompilerFlavor) hunk ./Distribution/ParseUtils.hs 63 -import Distribution.Extension hunk ./Distribution/ParseUtils.hs 65 -import Distribution.Setup(CompilerFlavor(..)) hunk ./Distribution/ParseUtils.hs 67 +import Language.Haskell.Extension (Extension) hunk ./Distribution/ParseUtils.hs 98 +-- TODO: deprecated hunk ./Distribution/ParseUtils.hs 100 -showError (AmbigousParse f n) = "Line "++show n++": Ambigous parse in field '"++f++"'" -showError (NoParse f n) = "Line "++show n++": Parse of field '"++f++"' failed" -showError (FromString s (Just n)) = "Line "++show n++": " ++ s -showError (FromString s Nothing) = s +showError e = + case locatedErrorMsg e of + (Just n, s) -> "Line "++show n++": " ++ s + (Nothing, s) -> s + +locatedErrorMsg :: PError -> (Maybe LineNo, String) +locatedErrorMsg (AmbigousParse f n) = (Just n, "Ambigous parse in field '"++f++"'") +locatedErrorMsg (NoParse f n) = (Just n, "Parse of field '"++f++"' failed") +locatedErrorMsg (FromString s n) = (n, s) hunk ./Distribution/ParseUtils.hs 110 -myError :: LineNo -> String -> ParseResult a -myError n s = ParseFailed $ FromString s (Just n) +syntaxError :: LineNo -> String -> ParseResult a +syntaxError n s = ParseFailed $ FromString s (Just n) hunk ./Distribution/ParseUtils.hs 202 - (_, _) -> fail $ "Line "++show n++": Invalid syntax (no colon after field name)" + (_, _) -> syntaxError n "Invalid syntax (no colon after field name)" hunk ./Distribution/ParseUtils.hs 206 - | fld' == fld = fail ("The field "++fld++" is defined on both line "++show n++" and "++show n') + | fld' == fld = syntaxError (max n n') $ "The field "++fld++" was already defined on line " ++ show (min n n') hunk ./Distribution/PreProcess.hs 52 -import Distribution.Setup (CompilerFlavor(..), Compiler(..)) +import Distribution.Compiler (CompilerFlavor(..), Compiler(..)) hunk ./Distribution/PreProcess.hs 55 - moduleToFilePath, die) + moduleToFilePath, die, dieWithLocation) hunk ./Distribution/PreProcess.hs 58 -import Data.Maybe (fromMaybe, maybeToList) +import Data.Maybe (fromMaybe) hunk ./Distribution/PreProcess.hs 63 -import System.IO (stderr, hPutStrLn) hunk ./Distribution/PreProcess.hs 107 - (error $ "got error code while preprocessing: " ++ modu) + (die $ "got error code while preprocessing: " ++ modu) hunk ./Distribution/PreProcess.hs 118 - (error $ "got error code while preprocessing: " ++ modu) + (die $ "got error code while preprocessing: " ++ modu) hunk ./Distribution/PreProcess.hs 211 +#if __HUGS__ && mingw32_TARGET_OS + = rawSystemVerbose verbose "sh" (cpphs : extraArgs ++ ["-O" ++ outFile, inFile]) +#else hunk ./Distribution/PreProcess.hs 215 +#endif hunk ./Distribution/PreProcess.hs 226 +#if __HUGS__ && mingw32_TARGET_OS + where pp n = standardPP "sh" (n : cppOptions bi lbi) +#else hunk ./Distribution/PreProcess.hs 230 +#endif hunk ./Distribution/PreProcess.hs 277 -ppNone name inFile _ _ = do - hPutStrLn stderr (inFile ++ ": no " ++ name ++ " preprocessor available") - return (ExitFailure 1) +ppNone name inFile _ _ = + dieWithLocation inFile Nothing $ "no " ++ name ++ " preprocessor available" hunk ./Distribution/Setup.hs 44 + module Distribution.Compiler, hunk ./Distribution/Setup.hs 47 - CompilerFlavor(..), Compiler(..), hunk ./Distribution/Setup.hs 58 + hunk ./Distribution/Setup.hs 64 -import Control.Monad(when) -import Distribution.Version (Version) +import Distribution.Compiler +import Distribution.Simple.Utils (die) hunk ./Distribution/Setup.hs 71 --- ------------------------------------------------------------ --- * Command Line Types and Exports --- ------------------------------------------------------------ - -data CompilerFlavor = GHC | NHC | Hugs | HBC | Helium | OtherCompiler String - deriving (Show, Read, Eq) - -data Compiler = Compiler {compilerFlavor:: CompilerFlavor, - compilerVersion :: Version, - compilerPath :: FilePath, - compilerPkgTool :: FilePath} - deriving (Show, Read, Eq) - hunk ./Distribution/Setup.hs 146 + -- For sdist: + | Snapshot hunk ./Distribution/Setup.hs 176 -unliftFlags :: [Flag a] -> [a] -unliftFlags flags = [ fl | Lift fl <- flags ] - hunk ./Distribution/Setup.hs 229 - Nothing -> do putStrLn $ "Unrecognised command: " ++ cname ++ " (try --help)" - exitWith (ExitFailure 1) - (_, [], _, []) -> do putStrLn $ "No command given (try --help)" - exitWith (ExitFailure 1) - (_, _, _, errs) -> do putStrLn "Errors:" - mapM_ putStrLn errs - exitWith (ExitFailure 1) + Nothing -> die $ "Unrecognised command: " ++ cname ++ " (try --help)" + (_, [], _, []) -> die $ "No command given (try --help)" + (_, _, _, errs) -> putErrors errs hunk ./Distribution/Setup.hs 280 +<<<<<<< Setup.hs hunk ./Distribution/Setup.hs 316 +======= +parseConfigureArgs = parseArgs configureCmd updateCfg + where updateCfg t GhcFlag = t { configHcFlavor = Just GHC } + updateCfg t NhcFlag = t { configHcFlavor = Just NHC } + updateCfg t HugsFlag = t { configHcFlavor = Just Hugs } + updateCfg t (WithCompiler path) = t { configHcPath = Just path } + updateCfg t (WithHcPkg path) = t { configHcPkg = Just path } + updateCfg t (WithHaddock path) = t { configHaddock = Just path } + updateCfg t (WithHappy path) = t { configHappy = Just path } + updateCfg t (WithAlex path) = t { configAlex = Just path } + updateCfg t (WithHsc2hs path) = t { configHsc2hs = Just path } + updateCfg t (WithC2hs path) = t { configC2hs = Just path } + updateCfg t (WithCpphs path) = t { configCpphs = Just path } + updateCfg t WithProfLib = t { configProfLib = True } + updateCfg t WithoutProfLib = t { configProfLib = False } + updateCfg t WithProfExe = t { configProfExe = True } + updateCfg t WithoutProfExe = t { configProfExe = False } + updateCfg t (Prefix path) = t { configPrefix = Just path } + updateCfg t (Verbose n) = t { configVerbose = n } + updateCfg t UserFlag = t { configUser = True } + updateCfg t GlobalFlag = t { configUser = False } + updateCfg t _ = error $ "Unexpected flag!" +>>>>>>> 1.37 hunk ./Distribution/Setup.hs 421 -parseCopyArgs cfg args customOpts = - case getCmdOpt copyCmd customOpts args of - (flags, _, []) | hasHelpFlag flags -> do - printCmdHelp copyCmd customOpts - exitWith ExitSuccess - (flags, args', []) -> - return (updateCfg flags cfg, unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) - where updateCfg (fl:flags) (mprefix,verbose) = updateCfg flags $ - case fl of - InstPrefix path -> (Just path,verbose) - Verbose n -> (mprefix,n) - Lift _ -> (mprefix,verbose) +parseCopyArgs = parseArgs copyCmd updateCfg + where updateCfg (mprefix,verbose) fl = case fl of + InstPrefix path -> (Just path, verbose) + Verbose n -> (mprefix, n) hunk ./Distribution/Setup.hs 426 - updateCfg [] t = t hunk ./Distribution/Setup.hs 432 -parseInstallArgs cfg args customOpts = - case getCmdOpt installCmd customOpts args of - (flags, _, []) | hasHelpFlag flags -> do - printCmdHelp installCmd customOpts - exitWith ExitSuccess - (flags, args', []) -> - when (any isInstallPref flags) (error "--install-prefix is deprecated. Use copy command instead.") >> - return (updateCfg flags cfg, unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) - where updateCfg :: [Flag a] -> (Bool,Int) -> (Bool,Int) - updateCfg (fl:flags) (uFlag,verbose) = updateCfg flags $ - case fl of - InstPrefix _ -> error "--install-prefix is deprecated. Use copy command instead." - UserFlag -> (True,verbose) - GlobalFlag -> (False,verbose) - Verbose n -> (uFlag,n) - Lift _ -> (uFlag,verbose) +parseInstallArgs = parseArgs installCmd updateCfg + where updateCfg (uFlag,verbose) fl = case fl of + InstPrefix _ -> error "--install-prefix is obsolete. Use copy command instead." + UserFlag -> (True, verbose) + GlobalFlag -> (False, verbose) + Verbose n -> (uFlag, n) hunk ./Distribution/Setup.hs 439 - updateCfg [] t = t - isInstallPref (InstPrefix _) = True - isInstallPref _ = False hunk ./Distribution/Setup.hs 445 - cmdOptions = [cmd_help,cmd_verbose], + cmdOptions = [cmd_help,cmd_verbose, + Option "" ["snapshot"] (NoArg Snapshot) + "Produce a snapshot source distribution" + ], hunk ./Distribution/Setup.hs 452 -parseSDistArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) -parseSDistArgs = parseNoArgs sdistCmd +-- | Flags to @sdist@: (snapshot, verbose) +type SDistFlags = (Bool, Int) + +parseSDistArgs :: [String] -> [OptDescr a] -> IO (SDistFlags, [a], [String]) +parseSDistArgs = parseArgs sdistCmd updateCfg (False, 0) + where updateCfg (snapshot, verbose) fl = case fl of + Snapshot -> (True, verbose) + Verbose n -> (snapshot, n) + _ -> error $ "Unexpected flag!" hunk ./Distribution/Setup.hs 495 -parseRegisterArgs cfg args customOpts = - case getCmdOpt registerCmd customOpts args of - (flags, _, []) | hasHelpFlag flags -> do - printCmdHelp registerCmd customOpts - exitWith ExitSuccess - (flags, args', []) -> - return (updateCfg flags cfg, unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) - where updateCfg (fl:flags) (uFlag, genScriptFlag, verbose) = updateCfg flags $ - case fl of - UserFlag -> (True, genScriptFlag, verbose) +parseRegisterArgs = parseArgs registerCmd updateCfg + where updateCfg (uFlag, genScriptFlag, verbose) fl = case fl of + UserFlag -> (True, genScriptFlag, verbose) hunk ./Distribution/Setup.hs 499 - Verbose n -> (uFlag,genScriptFlag, n) - GenScriptFlag -> (uFlag, True, verbose) - Lift _ -> (uFlag,genScriptFlag, verbose) + Verbose n -> (uFlag, genScriptFlag, n) + GenScriptFlag -> (uFlag, True, verbose) hunk ./Distribution/Setup.hs 502 - updateCfg [] t = t hunk ./Distribution/Setup.hs 528 -parseNoArgs cmd args customOpts = +parseNoArgs cmd = parseArgs cmd updateCfg 0 + where + updateCfg _ (Verbose n) = n + updateCfg _ _ = error "Unexpected flag!" + +-- |Helper function for commands with more options. + +parseArgs :: Cmd a -> (cfg -> Flag a -> cfg) -> cfg -> + [String] -> [OptDescr a] -> IO (cfg, [a], [String]) +parseArgs cmd updateCfg cfg args customOpts = hunk ./Distribution/Setup.hs 543 - return (updateCmd flags 0, unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) + let flags' = filter (not.isLift) flags in + return (foldl updateCfg cfg flags', unliftFlags flags, args') + (_, _, errs) -> putErrors errs hunk ./Distribution/Setup.hs 547 - updateCmd (fl:flags) _ = updateCmd flags $ - case fl of - Verbose n -> n - _ -> error $ "Unexpected flag!" - updateCmd [] t = t + isLift (Lift _) = True + isLift _ = False + unliftFlags :: [Flag a] -> [a] + unliftFlags flags = [ fl | Lift fl <- flags ] hunk ./Distribution/Setup.hs 552 +putErrors :: [String] -> IO a +putErrors errs = die $ "Errors:" ++ concat ['\n':err | err <- errs] hunk ./Distribution/Simple/Build.hs 49 -import Distribution.Extension (Extension(..), +import Distribution.Compiler (Compiler(..), CompilerFlavor(..), hunk ./Distribution/Simple/Build.hs 51 -import Distribution.Setup (Compiler(..), CompilerFlavor(..)) hunk ./Distribution/Simple/Build.hs 64 - getOptionsFromSource, stripComments, hunk ./Distribution/Simple/Build.hs 67 +import Language.Haskell.Extension (Extension(..)) hunk ./Distribution/Simple/Build.hs 69 -import Data.Maybe(maybeToList, fromMaybe) +import Data.Char(isSpace) +import Data.Maybe(mapMaybe, maybeToList) hunk ./Distribution/Simple/Build.hs 99 + -- check that there's something to build + let buildInfos = + map libBuildInfo (maybeToList (library pkg_descr)) ++ + map buildInfo (executables pkg_descr) + unless (any buildable buildInfos) $ do + let name = showPackageId (package pkg_descr) + die ("Package " ++ name ++ " can't be built on this system.") + hunk ./Distribution/Simple/Build.hs 377 + +-- ------------------------------------------------------------ +-- * options in source files +-- ------------------------------------------------------------ + +-- |Read the initial part of a source file, before any Haskell code, +-- and return the contents of any LANGUAGE, OPTIONS and INCLUDE pragmas. +getOptionsFromSource + :: FilePath + -> IO ([Extension], -- LANGUAGE pragma, if any + [(CompilerFlavor,[String])], -- OPTIONS_FOO pragmas + [String] -- INCLUDE pragmas + ) +getOptionsFromSource file = do + text <- readFile file + return $ foldr appendOptions ([],[],[]) $ map getOptions $ + takeWhileJust $ map getPragma $ + filter textLine $ map (dropWhile isSpace) $ lines $ + stripComments True $ + if ".lhs" `isSuffixOf` file then unlit file text else text + where textLine [] = False + textLine ('#':_) = False + textLine _ = True + + getPragma :: String -> Maybe [String] + getPragma line = case words line of + ("{-#" : rest) | last rest == "#-}" -> Just (init rest) + _ -> Nothing + + getOptions ("OPTIONS":opts) = ([], [(GHC, opts)], []) + getOptions ("OPTIONS_GHC":opts) = ([], [(GHC, opts)], []) + getOptions ("OPTIONS_NHC98":opts) = ([], [(NHC, opts)], []) + getOptions ("OPTIONS_HUGS":opts) = ([], [(Hugs, opts)], []) + getOptions ("LANGUAGE":ws) = (mapMaybe readExtension ws, [], []) + where readExtension :: String -> Maybe Extension + readExtension w = case reads w of + [(ext, "")] -> Just ext + [(ext, ",")] -> Just ext + _ -> Nothing + getOptions ("INCLUDE":ws) = ([], [], ws) + getOptions _ = ([], [], []) + + appendOptions (exts, opts, incs) (exts', opts', incs') + = (exts++exts', opts++opts', incs++incs') + +-- takeWhileJust f = map fromJust . takeWhile isJust +takeWhileJust :: [Maybe a] -> [a] +takeWhileJust (Just x:xs) = x : takeWhileJust xs +takeWhileJust _ = [] + +-- |Strip comments from Haskell source. +stripComments + :: Bool -- ^ preserve pragmas? + -> String -- ^ input source text + -> String +stripComments keepPragmas = stripCommentsLevel 0 + where stripCommentsLevel :: Int -> String -> String + stripCommentsLevel 0 ('-':'-':cs) = -- FIX: symbols like --> + stripCommentsLevel 0 (dropWhile (/= '\n') cs) + stripCommentsLevel 0 ('{':'-':'#':cs) + | keepPragmas = '{' : '-' : '#' : copyPragma cs + stripCommentsLevel n ('{':'-':cs) = stripCommentsLevel (n+1) cs + stripCommentsLevel 0 (c:cs) = c : stripCommentsLevel 0 cs + stripCommentsLevel n ('-':'}':cs) = stripCommentsLevel (n-1) cs + stripCommentsLevel n (c:cs) = stripCommentsLevel n cs + stripCommentsLevel _ [] = [] + + copyPragma ('#':'-':'}':cs) = '#' : '-' : '}' : stripCommentsLevel 0 cs + copyPragma (c:cs) = c : copyPragma cs + copyPragma [] = [] hunk ./Distribution/Simple/Configure.hs 69 -import Distribution.Extension(extensionsToGHCFlag, - extensionsToNHCFlag, extensionsToHugsFlag) -import Distribution.Setup(ConfigFlags(..),CompilerFlavor(..), Compiler(..)) +import Distribution.Setup(ConfigFlags(..)) +import Distribution.Compiler(CompilerFlavor(..), Compiler(..), + compilerBinaryName, extensionsToFlags) hunk ./Distribution/Simple/Configure.hs 77 -import Distribution.Simple.Utils (die, withTempFile,maybeExit) +import Distribution.Simple.Utils (die, warn, withTempFile,maybeExit) hunk ./Distribution/Simple/Configure.hs 84 -import Data.Maybe(fromMaybe) +import Data.Maybe(fromMaybe, isJust) hunk ./Distribution/Simple/Configure.hs 86 -import Distribution.Compat.FilePath (splitFileName, joinFileName, joinFileExt) +import Distribution.Compat.FilePath (splitFileName, joinFileName) hunk ./Distribution/Simple/Configure.hs 92 -#ifndef __NHC__ -import Control.Exception ( catch, evaluate ) -#endif hunk ./Distribution/Simple/Configure.hs 136 +<<<<<<< Configure.hs +======= + -- prefix + defPrefix <- system_default_prefix pkg_descr + let pref = fromMaybe defPrefix (configPrefix cfg) +>>>>>>> 1.36 hunk ./Distribution/Simple/Configure.hs 145 - let exts = case f' of - GHC -> fst $ extensionsToGHCFlag extlist - NHC -> fst $ extensionsToNHCFlag extlist - Hugs -> fst $ extensionsToHugsFlag extlist - _ -> [] -- Hmm. - unless (null exts) $ putStrLn $ -- Just warn, FIXME: Should this be an error? - "Warning: " ++ show f' ++ " does not support the following extensions:\n " ++ + let exts = fst $ extensionsToFlags f' extlist + unless (null exts) $ warn $ -- Just warn, FIXME: Should this be an error? + show f' ++ " does not support the following extensions:\n " ++ hunk ./Distribution/Simple/Configure.hs 254 -system_default_prefix PackageDescription{package=pkg} = +system_default_prefix pkg_descr@PackageDescription{package=pkg} = hunk ./Distribution/Simple/Configure.hs 258 - return (s++'\\':pkgName pkg) + if isJust (library pkg_descr) + then return (s `joinFileName` "Haskell" `joinFileName` showPackageId pkg) + else return (s `joinFileName` showPackageId pkg) hunk ./Distribution/Simple/Configure.hs 331 +<<<<<<< Configure.hs hunk ./Distribution/Simple/Configure.hs 338 +======= +>>>>>>> 1.36 hunk ./Distribution/Simple/Install.hs 71 -import Distribution.Setup (CompilerFlavor(..), Compiler(..)) +import Distribution.Compiler (CompilerFlavor(..), Compiler(..), showCompilerId) hunk ./Distribution/Simple/Install.hs 77 -import Distribution.Compat.FilePath(joinFileName, dllExtension, +import Distribution.Compat.FilePath(joinFileName, dllExtension, exeExtension, hunk ./Distribution/Simple/Install.hs 112 - withExe pkg_descr $ \ (Executable e _ b) -> - copyFileVerbose verbose (buildPref `joinFileName` e `joinFileName` e) (pref `joinFileName` e) + withExe pkg_descr $ \ (Executable e _ b) -> do + let exeName = e `joinFileExt` exeExtension + copyFileVerbose verbose (buildPref `joinFileName` e `joinFileName` exeName) (pref `joinFileName` exeName) hunk ./Distribution/Simple/Install.hs 226 - case compilerFlavor (compiler lbi) of + case compilerFlavor hc of hunk ./Distribution/Simple/Install.hs 228 - _ -> libDir `joinFileName` showPackageId (package pkg_descr) - where libDir = (fromMaybe (prefix lbi) install_prefixM) + _ -> +#ifdef mingw32_TARGET_OS + libDir `joinFileName`showCompilerId hc +#else + libDir `joinFileName` showPackageId (package pkg_descr) + `joinFileName`showCompilerId hc +#endif + where + hc = compiler lbi + libDir = (fromMaybe (prefix lbi) install_prefixM) hunk ./Distribution/Simple/LocalBuildInfo.hs 46 -import Distribution.Setup (Compiler) +import Distribution.Compiler (Compiler) hunk ./Distribution/Simple/Register.hs 67 -import Distribution.Setup (CompilerFlavor(..), Compiler(..), RegisterFlags) +import Distribution.Compiler (CompilerFlavor(..), Compiler(..)) +import Distribution.Setup (RegisterFlags) hunk ./Distribution/Simple/Register.hs 242 - IPI.libraryDirs = [mkLibDir pkg_descr lbi Nothing], + IPI.libraryDirs = (mkLibDir pkg_descr lbi Nothing) : extraLibDirs bi, hunk ./Distribution/Simple/SrcDist.hs 55 -import Distribution.Package (showPackageId) +import Distribution.Package (showPackageId, PackageIdentifier(pkgVersion)) +import Distribution.Version (Version(versionBranch)) hunk ./Distribution/Simple/SrcDist.hs 62 +import Data.Char (isSpace, toLower) +import Data.List (isPrefixOf) hunk ./Distribution/Simple/SrcDist.hs 65 +import System.Time (getClockTime, toCalendarTime, CalendarTime(..)) hunk ./Distribution/Simple/SrcDist.hs 79 + -> Bool -- ^snapshot hunk ./Distribution/Simple/SrcDist.hs 83 -sdist tmpDir targetPref verbose pps pkg_descr = do +sdist tmpDir targetPref verbose snapshot pps pkg_descr_orig = do + time <- getClockTime + ct <- toCalendarTime time + let date = ctYear ct*10000 + (fromEnum (ctMonth ct) + 1)*100 + ctDay ct + let pkg_descr + | snapshot = updatePackage (updatePkgVersion + (updateVersionBranch (++ [date]))) pkg_descr_orig + | otherwise = pkg_descr_orig hunk ./Distribution/Simple/SrcDist.hs 95 + createDirectoryIfMissing True targetDir hunk ./Distribution/Simple/SrcDist.hs 118 - copyFileTo verbose targetDir descFile + let targetDescFile = targetDir `joinFileName` descFile + -- We could just writePackageDescription targetDescFile pkg_descr, + -- but that would lose comments and formatting. + if snapshot then do + contents <- readFile descFile + writeFile targetDescFile $ + unlines $ map (appendVersion date) $ lines $ contents + else copyFileVerbose verbose descFile targetDescFile hunk ./Distribution/Simple/SrcDist.hs 132 + + where + updatePackage f pd = pd { package = f (package pd) } + updatePkgVersion f pkg = pkg { pkgVersion = f (pkgVersion pkg) } + updateVersionBranch f v = v { versionBranch = f (versionBranch v) } + + appendVersion :: Int -> String -> String + appendVersion n line + | "version:" `isPrefixOf` map toLower line = + trimTrailingSpace line ++ "." ++ show n + | otherwise = line + + trimTrailingSpace :: String -> String + trimTrailingSpace = reverse . dropWhile isSpace . reverse hunk ./Distribution/Simple/Utils.hs 46 + dieWithLocation, + warn, hunk ./Distribution/Simple/Utils.hs 62 - getOptionsFromSource, - stripComments, hunk ./Distribution/Simple/Utils.hs 82 -import Distribution.Compat.FilePath (dropPrefix) -import Distribution.Extension (Extension) -import Distribution.Setup (CompilerFlavor(..)) -import Distribution.PreProcess.Unlit (unlit) hunk ./Distribution/Simple/Utils.hs 84 -import Data.Char(isSpace) -import Data.List(nub, isSuffixOf) -import Data.Maybe(mapMaybe) -import System.IO (hPutStr, stderr, hFlush, stdout) +import Data.List (nub) +import System.Environment (getProgName) +import System.IO (hPutStrLn, stderr, hFlush, stdout) hunk ./Distribution/Simple/Utils.hs 105 --- ----------------------------------------------------------------------------- --- Utils for setup +-- ------------------------------------------------------------------------------- Utils for setup + +dieWithLocation :: FilePath -> (Maybe Int) -> String -> IO a +dieWithLocation fname Nothing msg = die (fname ++ ": " ++ msg) +dieWithLocation fname (Just n) msg = die (fname ++ ":" ++ show n ++ ": " ++ msg) hunk ./Distribution/Simple/Utils.hs 112 -die msg = do hFlush stdout; hPutStr stderr (msg++"\n"); exitWith (ExitFailure 1) +die msg = do + hFlush stdout + pname <- getProgName + hPutStrLn stderr (pname ++ ": " ++ msg) + exitWith (ExitFailure 1) hunk ./Distribution/Simple/Utils.hs 119 -warn msg = do hFlush stdout; hPutStr stderr ("Warning: " ++ msg++"\n") +warn msg = do + hFlush stdout + pname <- getProgName + hPutStrLn stderr (pname ++ ": Warning: " ++ msg) hunk ./Distribution/Simple/Utils.hs 251 - (putStrLn ("Error: Could not find module: " ++ m - ++ " with any suffix: " ++ (show searchSuffixes)) - >> exitWith (ExitFailure 1)) + (die ("Error: Could not find module: " ++ m + ++ " with any suffix: " ++ (show searchSuffixes))) hunk ./Distribution/Simple/Utils.hs 304 - --- ------------------------------------------------------------ --- * options in source files --- ------------------------------------------------------------ - --- |Read the initial part of a source file, before any Haskell code, --- and return the contents of any LANGUAGE, OPTIONS and INCLUDE pragmas. -getOptionsFromSource - :: FilePath - -> IO ([Extension], -- LANGUAGE pragma, if any - [(CompilerFlavor,[String])], -- OPTIONS_FOO pragmas - [String] -- INCLUDE pragmas - ) -getOptionsFromSource file = do - text <- readFile file - return $ foldr appendOptions ([],[],[]) $ map getOptions $ - takeWhileJust $ map getPragma $ - filter textLine $ map (dropWhile isSpace) $ lines $ - stripComments True $ - if ".lhs" `isSuffixOf` file then unlit file text else text - where textLine [] = False - textLine ('#':_) = False - textLine _ = True - - getPragma :: String -> Maybe [String] - getPragma line = case words line of - ("{-#" : rest) | last rest == "#-}" -> Just (init rest) - _ -> Nothing - - getOptions ("OPTIONS":opts) = ([], [(GHC, opts)], []) - getOptions ("OPTIONS_GHC":opts) = ([], [(GHC, opts)], []) - getOptions ("OPTIONS_NHC98":opts) = ([], [(NHC, opts)], []) - getOptions ("OPTIONS_HUGS":opts) = ([], [(Hugs, opts)], []) - getOptions ("LANGUAGE":ws) = (mapMaybe readExtension ws, [], []) - where readExtension :: String -> Maybe Extension - readExtension w = case reads w of - [(ext, "")] -> Just ext - [(ext, ",")] -> Just ext - _ -> Nothing - getOptions ("INCLUDE":ws) = ([], [], ws) - getOptions _ = ([], [], []) - - appendOptions (exts, opts, incs) (exts', opts', incs') - = (exts++exts', opts++opts', incs++incs') - --- takeWhileJust f = map fromJust . takeWhile isJust -takeWhileJust :: [Maybe a] -> [a] -takeWhileJust (Just x:xs) = x : takeWhileJust xs -takeWhileJust _ = [] - --- |Strip comments from Haskell source. -stripComments - :: Bool -- ^ preserve pragmas? - -> String -- ^ input source text - -> String -stripComments keepPragmas = stripCommentsLevel 0 - where stripCommentsLevel :: Int -> String -> String - stripCommentsLevel 0 ('-':'-':cs) = -- FIX: symbols like --> - stripCommentsLevel 0 (dropWhile (/= '\n') cs) - stripCommentsLevel 0 ('{':'-':'#':cs) - | keepPragmas = '{' : '-' : '#' : copyPragma cs - stripCommentsLevel n ('{':'-':cs) = stripCommentsLevel (n+1) cs - stripCommentsLevel 0 (c:cs) = c : stripCommentsLevel 0 cs - stripCommentsLevel n ('-':'}':cs) = stripCommentsLevel (n-1) cs - stripCommentsLevel n (c:cs) = stripCommentsLevel n cs - stripCommentsLevel _ [] = [] - - copyPragma ('#':'-':'}':cs) = '#' : '-' : '}' : stripCommentsLevel 0 cs - copyPragma (c:cs) = c : copyPragma cs - copyPragma [] = [] - - - hunk ./Distribution/Simple.hs 53 - module Distribution.Extension, + module Distribution.Compiler, + module Language.Haskell.Extension, hunk ./Distribution/Simple.hs 67 +import Distribution.Compiler hunk ./Distribution/Simple.hs 88 +import Language.Haskell.Extension hunk ./Distribution/Simple.hs 97 -import Data.Maybe ( isNothing, fromJust, maybeToList ) +import Data.Maybe ( isNothing, fromJust ) hunk ./Distribution/Simple.hs 107 -import Distribution.Extension hiding (hunitTests) hunk ./Distribution/Simple.hs 109 -import Distribution.Extension hunk ./Distribution/Simple.hs 232 - let buildInfos = - map libBuildInfo (maybeToList (library pkg_descr)) ++ - map buildInfo (executables pkg_descr) - when (not (any buildable buildInfos)) $ do - let name = showPackageId (package pkg_descr) - die ("Package " ++ name ++ " can't be built on this system.") hunk ./Distribution/Simple.hs 237 + hunk ./Distribution/Simple.hs 242 - withLib pkg_descr ExitSuccess (\lib -> - do lbi <- getPersistBuildConfig - mHaddock <- findProgram "haddock" (withHaddock lbi) - when (isNothing mHaddock) (error "haddock command not found") - let bi = libBuildInfo lib - let targetDir = joinPaths distPref (joinPaths "doc" "html") - let tmpDir = joinPaths (buildDir lbi) "tmp" - createDirectoryIfMissing True tmpDir - createDirectoryIfMissing True targetDir - preprocessSources pkg_descr lbi verbose pps - inFiles <- sequence [moduleToFilePath (hsSourceDirs bi) m ["hs", "lhs"] - | m <- exposedModules lib] >>= return . concat - mapM_ (mockPP ["-D__HADDOCK__"] pkg_descr bi lbi tmpDir verbose) inFiles - let showPkg = showPackageId (package pkg_descr) - let prologName = showPkg ++ "-haddock-prolog.txt" - writeFile prologName ((description pkg_descr) ++ "\n") - setupMessage "Running Haddock for" pkg_descr - let outFiles = map (joinFileName tmpDir) - (map ((flip changeFileExt) "hs") inFiles) - code <- rawSystemVerbose verbose (fromJust mHaddock) - (["-h", - "-o", targetDir, - "-t", showPkg, - "-p", prologName] - ++ (if verbose > 4 then ["-v"] else []) - ++ outFiles - ) - removeDirectoryRecursive tmpDir - removeFile prologName - postHook postHaddock args verbose localbuildinfo) + haddock pkg_descr localbuildinfo verbose pps + postHook postHaddock args verbose localbuildinfo + hunk ./Distribution/Simple.hs 246 - (verbose, _, args) <- parseProgramaticaArgs args [] - pkg_descr <- hookOrInArgs prePFE args verbose - localbuildinfo <- getPersistBuildConfig - unless (hasLibs pkg_descr) (error "no libraries found in this project.") - withLib pkg_descr ExitSuccess (\lib -> - do lbi <- getPersistBuildConfig - mPfe <- findProgram "pfesetup" Nothing - when (isNothing mPfe) (error "pfe command not found") - putStrLn $ "using : " ++ fromJust mPfe - let bi = libBuildInfo lib - let mods = exposedModules lib ++ otherModules (libBuildInfo lib) - preprocessSources pkg_descr lbi verbose pps - inFiles <- sequence [moduleToFilePath (hsSourceDirs bi) m ["hs", "lhs"] - | m <- mods] >>= return . concat - code <- rawSystemVerbose verbose (fromJust mPfe) - ("noplogic":"cpp": (if verbose > 4 then ["-v"] else []) - ++ inFiles) - postHook postPFE args verbose localbuildinfo) + (verbose, _, args) <- parseProgramaticaArgs args [] + pkg_descr <- hookOrInArgs prePFE args verbose + localbuildinfo <- getPersistBuildConfig + pfe pkg_descr localbuildinfo verbose pps + postHook postPFE args verbose localbuildinfo hunk ./Distribution/Simple.hs 253 - putStrLn "cleaning..." hunk ./Distribution/Simple.hs 256 - let buildPref = buildDir localbuildinfo - try $ removeDirectoryRecursive buildPref - try $ removeDirectoryRecursive (joinPaths distPref "doc") - try $ removeFile installedPkgConfigFile - try $ removeFile localBuildInfoFile - try $ removeFile regScriptLocation - try $ removeFile unregScriptLocation - removePreprocessedPackage pkg_descr currentDir (ppSuffixes pps) - - -- remove source stubs for library - withLib pkg_descr () (\Library{libBuildInfo=BuildInfo{hsSourceDirs=dirs}} -> do - s <- sequence [moduleToFilePath dirs (x ++"_stub") ["h", "c"] - | x <- libModules pkg_descr ] - mapM_ removeFile (concat s) - ) - -- remove source stubs for executables - withExe pkg_descr (\Executable{modulePath=exeSrcName - ,buildInfo=BuildInfo{hsSourceDirs=dirs}} -> do - s <- sequence [moduleToFilePath dirs (x ++"_stub") ["h", "c"] - | x <- exeModules pkg_descr ] - mapM_ removeFile (concat s) - let (startN, _) = splitFileExt exeSrcName - try $ removeFile (startN ++ "_stub.h") - try $ removeFile (startN ++ "_stub.c") - ) + clean pkg_descr localbuildinfo verbose pps hunk ./Distribution/Simple.hs 277 - (verbose,_, args) <- parseSDistArgs args [] + ((snapshot,verbose),_, args) <- parseSDistArgs args [] hunk ./Distribution/Simple.hs 280 - sdist srcPref distPref verbose pps pkg_descr + sdist srcPref distPref verbose snapshot pps pkg_descr hunk ./Distribution/Simple.hs 298 - else putStrLn "Package contains no library to register." + else die "Package contains no library to register" hunk ./Distribution/Simple.hs 310 - distPref :: FilePath - distPref = "dist" hunk ./Distribution/Simple.hs 326 + + overridesPP :: [PPSuffixHandler] -> [PPSuffixHandler] -> [PPSuffixHandler] + overridesPP = unionBy (\x y -> fst x == fst y) +-- (filter (\x -> notElem x overriders) overridden) ++ overriders + +distPref :: FilePath +distPref = "dist" + +haddock :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO () +haddock pkg_descr lbi verbose pps = + withLib pkg_descr () $ \lib -> do + mHaddock <- findProgram "haddock" (withHaddock lbi) + when (isNothing mHaddock) (die "haddock command not found") + let bi = libBuildInfo lib + let targetDir = joinPaths distPref (joinPaths "doc" "html") + let tmpDir = joinPaths (buildDir lbi) "tmp" + createDirectoryIfMissing True tmpDir + createDirectoryIfMissing True targetDir + preprocessSources pkg_descr lbi verbose pps + inFiles <- sequence [moduleToFilePath (hsSourceDirs bi) m ["hs", "lhs"] + | m <- exposedModules lib] >>= return . concat + mapM_ (mockPP ["-D__HADDOCK__"] pkg_descr bi lbi tmpDir verbose) inFiles + let showPkg = showPackageId (package pkg_descr) + let prologName = showPkg ++ "-haddock-prolog.txt" + writeFile prologName ((description pkg_descr) ++ "\n") + setupMessage "Running Haddock for" pkg_descr + let outFiles = map (joinFileName tmpDir) + (map ((flip changeFileExt) "hs") inFiles) + code <- rawSystemVerbose verbose (fromJust mHaddock) + (["-h", + "-o", targetDir, + "-t", showPkg, + "-p", prologName] + ++ (if verbose > 4 then ["-v"] else []) + ++ outFiles + ) + removeDirectoryRecursive tmpDir + removeFile prologName + where hunk ./Distribution/Simple.hs 374 - when (targetFileExt == "lhs") - (ppUnlit targetFile (joinFileExt targetFileNoext "hs") verbose >> return ()) + when (targetFileExt == "lhs") $ do + ppUnlit targetFile (joinFileExt targetFileNoext "hs") verbose + return () hunk ./Distribution/Simple.hs 380 - overridesPP :: [PPSuffixHandler] -> [PPSuffixHandler] -> [PPSuffixHandler] - overridesPP = unionBy (\x y -> fst x == fst y) --- (filter (\x -> notElem x overriders) overridden) ++ overriders - + +pfe :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO () +pfe pkg_descr _lbi verbose pps = do + unless (hasLibs pkg_descr) $ + die "no libraries found in this project" + withLib pkg_descr () $ \lib -> do + lbi <- getPersistBuildConfig + mPfe <- findProgram "pfesetup" Nothing + when (isNothing mPfe) (die "pfe command not found") + putStrLn $ "using : " ++ fromJust mPfe + let bi = libBuildInfo lib + let mods = exposedModules lib ++ otherModules (libBuildInfo lib) + preprocessSources pkg_descr lbi verbose pps + inFiles <- sequence [moduleToFilePath (hsSourceDirs bi) m ["hs", "lhs"] + | m <- mods] >>= return . concat + rawSystemVerbose verbose (fromJust mPfe) + ("noplogic":"cpp": (if verbose > 4 then ["-v"] else []) + ++ inFiles) + return () + +clean :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO () +clean pkg_descr lbi verbose pps = do + putStrLn "cleaning..." + let buildPref = buildDir lbi + try $ removeDirectoryRecursive buildPref + try $ removeDirectoryRecursive (joinPaths distPref "doc") + try $ removeFile installedPkgConfigFile + try $ removeFile localBuildInfoFile + try $ removeFile regScriptLocation + try $ removeFile unregScriptLocation + removePreprocessedPackage pkg_descr currentDir (ppSuffixes pps) + case compilerFlavor (compiler lbi) of + GHC -> cleanGHCExtras + _ -> return () + where + cleanGHCExtras = do + -- remove source stubs for library + withLib pkg_descr () $ \ Library{libBuildInfo=bi} -> + removeGHCModuleStubs bi (libModules pkg_descr) + -- remove source stubs for executables + withExe pkg_descr $ \ Executable{modulePath=exeSrcName + ,buildInfo=bi} -> do + removeGHCModuleStubs bi (exeModules pkg_descr) + let (startN, _) = splitFileExt exeSrcName + try $ removeFile (startN ++ "_stub.h") + try $ removeFile (startN ++ "_stub.c") + removeGHCModuleStubs :: BuildInfo -> [String] -> IO () + removeGHCModuleStubs (BuildInfo{hsSourceDirs=dirs}) mods = do + s <- sequence [moduleToFilePath dirs (x ++"_stub") ["h", "c"] + | x <- mods ] + mapM_ removeFile (concat s) + hunk ./Distribution/Version.hs 272 + skipSpaces hunk ./Distribution/Version.hs 275 + skipSpaces hunk ./Distribution/Version.hs 281 + skipSpaces hunk ./Distribution/Version.hs 288 - [ string s >> liftM f parseVersion - | (s,f) <- rangeOps ]) + map parseRangeOp rangeOps) + parseRangeOp (s,f) = string s >> skipSpaces >> liftM f parseVersion hunk ./README 49 +- David Himmelstrup (Lemmih) hunk ./doc/Cabal.xml 7 - Extension'> + Extension'> hunk ./doc/Cabal.xml 53 - package name, an identifier containing - no spaces. Chaos will result if two distinct packages with the + package name, which consists of one or + more alphanumeric words separated by hyphens. To avoid ambiguity, + each of these words should contain at least one letter. + Chaos will result if two distinct packages with the hunk ./doc/Cabal.xml 61 - of one or more integers. These can be combined to form a single - text string called the package ID, using - a hyphen to separate the version from the name, and dots to - separate the version components, e.g. - HUnit-1.1. + of one or more integers separated by dots. These can be combined + to form a single text string called the package + ID, using a hyphen to separate the name from the + version, e.g. HUnit-1.1. hunk ./doc/Cabal.xml 152 -Hs-Source-Dir: prog1 +Hs-Source-Dirs: prog1 hunk ./doc/Cabal.xml 156 -Hs-Source-Dir: prog2 +Hs-Source-Dirs: prog2 hunk ./doc/Cabal.xml 174 -Hs-Source-Dir: prog1 +Hs-Source-Dirs: prog1 hunk ./doc/Cabal.xml 179 -Hs-Source-Dir: prog2 +Hs-Source-Dirs: prog2 hunk ./doc/Cabal.xml 205 - one such file in the directory, and the first part of the name is + one such file in the directory. The first part of the name is hunk ./doc/Cabal.xml 208 - This file should contain several - stanzas separated by blank lines. - Each stanza consists of a number of field/value pairs, with a + In the package description file, lines beginning with + -- are treated as comments + and ignored. + + This file should contain one or more + stanzas separated by blank lines: + + + The first stanza describes the package as a whole + (see ), as well as an optional + library (see ) and relevant build + information (see ). + + + Each subsequent stanza (if any) describes an executable + program (see ) and relevant + build information (see ). + + + + Each stanza consists of a number of field/value pairs, with a hunk ./doc/Cabal.xml 242 - Lines beginning with -- - are treated as comments and ignored. - hunk ./doc/Cabal.xml 290 + + Module names may correspond to Haskell source files, i.e. + with names ending in .hs + or .lhs, or to inputs for + various Haskell preprocessors. The simple build infrastructure + understands + .gc (GreenCard), + .chs (c2hs), + .hsc (hsc2hs), + .y and + .ly (happy), + .x (alex) + and + .cpphs (cpphs). + In such cases the appropriate preprocessor will be run + automatically as required. + + hunk ./doc/Cabal.xml 316 - The first stanza describes the package - as a whole, as well as the library it contains (if any), using - the following fields: - - - - name: identifier - (required) - - - The unique name of the package, without the version - number. - - + + Package properties hunk ./doc/Cabal.xml 319 - - - version: numbers - (required) - - - The package version number, usually consisting of a - sequence of natural numbers separated by dots. - - + These fields may occur in the first stanza, and describe + the package as a whole: hunk ./doc/Cabal.xml 322 - - - license: identifier - (default: AllRightsReserved) - - - The type of license under which this package is distributed. - License names are the constants of the &License; type. - - + + + + name: package-name + (required) + + + The unique name of the package + (see ), without the version + number. + + hunk ./doc/Cabal.xml 335 - - - license-file: - filename - - - The name of a file containing the precise license for - this package. - - + + + version: numbers + (required) + + + The package version number, usually consisting of a + sequence of natural numbers separated by dots. + + hunk ./doc/Cabal.xml 346 - - - copyright: - freeform - - - The content of a copyright notice, typically the name of - the holder of the copyright on the package and the year(s) - from which copyright is claimed. - - + + + license: identifier + (default: AllRightsReserved) + + + The type of license under which this package is + distributed. License names are the constants of the + &License; type. + + hunk ./doc/Cabal.xml 358 - - - author: - freeform - - - The original author of the package. - - + + + license-file: + filename + + + The name of a file containing the precise license + for this package. + + hunk ./doc/Cabal.xml 369 - - - maintainer: - address - - - The current maintainer or maintainers of the package. - This is an e-mail address to which users should send bug - reports, feature requests and patches. - - + + + copyright: + freeform + + + The content of a copyright notice, typically the + name of the holder of the copyright on the package and + the year(s) from which copyright is claimed. + + hunk ./doc/Cabal.xml 381 - - - stability: - freeform - - - The stability level of the package, e.g. - alpha, experimental, - provisional, stable. - - + + + author: + freeform + + + The original author of the package. + + hunk ./doc/Cabal.xml 391 - - - homepage: URL - - - The package homepage. - - + + + maintainer: + address + + + The current maintainer or maintainers of the package. + This is an e-mail address to which users should send bug + reports, feature requests and patches. + + hunk ./doc/Cabal.xml 403 - - - package-url: URL - - - The location of a source bundle for the package. - The distribution should be a Cabal package. - - + + + stability: + freeform + + + The stability level of the package, e.g. + alpha, experimental, + provisional, + stable. + + hunk ./doc/Cabal.xml 416 - - - synopsis: - freeform - - - A very short description of the package, for use in a - table of packages. This is your headline, so keep it short - (one line) but as informative as possible. Save space - by not including the package name or saying it's written - in Haskell. - - + + + homepage: URL + + + The package homepage. + + hunk ./doc/Cabal.xml 425 - - - description: - freeform - - - Description of the package. This may be several - paragraphs, and should be aimed at a Haskell programmer - who has never heard of your package before. - - + + + package-url: URL + + + The location of a source bundle for the package. + The distribution should be a Cabal package. + + hunk ./doc/Cabal.xml 435 - - - category: - freeform - - - A classification category for future use by the package - catalogue Hackage. These categories - have not yet been specified, but the upper levels of the - module hierarchy make a good start. - - + + + synopsis: + freeform + + + A very short description of the package, for use in + a table of packages. This is your headline, so keep + it short (one line) but as informative as possible. + Save space by not including the package name or saying + it's written in Haskell. + + hunk ./doc/Cabal.xml 449 - - - tested-with: - compiler list - - - A list of compilers and versions against which the - package has been tested (or at least built). - - + + + description: + freeform + + + Description of the package. This may be several + paragraphs, and should be aimed at a Haskell programmer + who has never heard of your package before. + + hunk ./doc/Cabal.xml 461 - - - build-depends: - package list - - - A list of packages, possibly annotated with versions, - needed to build this one, e.g. foo > 1.2, bar. - If no version constraint is specified, any version is assumed - to be acceptable. - - + + + category: + freeform + + + A classification category for future use by the + package catalogue Hackage. These + categories have not yet been specified, but the upper + levels of the module hierarchy make a good start. + + hunk ./doc/Cabal.xml 474 - - - other-files: - filename list - - - A list of additional files to be included in source - distributions built with setup sdist - (see ). - - + + + tested-with: + compiler list + + + A list of compilers and versions against which the + package has been tested (or at least built). + + hunk ./doc/Cabal.xml 485 - - - exposed-modules: - identifier list - (required if this package contains a library) - - - A list of modules added by this package. - - - + + + build-depends: + package list + + + A list of packages, possibly annotated with versions, + needed to build this one, + e.g. foo > 1.2, bar. + If no version constraint is specified, any version is + assumed to be acceptable. + + hunk ./doc/Cabal.xml 499 - - Module names may correspond to Haskell source files, i.e. - with names ending in .hs - or .lhs, or to inputs for - various Haskell preprocessors. The simple build infrastructure - understands - .gc (GreenCard), - .chs (c2hs), - .hsc (hsc2hs), - .y and - .ly (happy), - .x (alex) - and - .cpphs (cpphs). - In such cases the appropriate preprocessor will be run - automatically as required. - + + + other-files: + filename list + + + A list of additional files to be included in source + distributions built with setup sdist + (see ). + + + + hunk ./doc/Cabal.xml 513 - This stanza may also contain build information fields - (see ) relating to the library. + + Library hunk ./doc/Cabal.xml 516 + If the package contains a library, the first stanza should + also contain the following field: + + + + + exposed-modules: + identifier list + (required if this package contains a library) + + + A list of modules added by this package. + + + + + The first stanza may also contain build information fields + (see ) relating to the library. + + hunk ./doc/Cabal.xml 567 + + These stanzas may also contain build information fields + (see ) relating to the executable. hunk ./doc/Cabal.xml 1359 - Remove any files created during the configure or build - steps. + Remove any local files created during the + configure, build, + haddock, register or + unregister steps. hunk ./doc/Cabal.xml 1380 + + This command takes the following option: + + + + + + Append today's date + (in YYYYMMDD form) to the version + number for the generated source package. The original + package is unaffected. + + + hunk ./package.conf.in 11 + Distribution.Compiler, hunk ./package.conf.in 32 - Distribution.Simple.Utils + Distribution.Simple.Utils, + Language.Haskell.Extension hunk ./tests/A/A.cabal 6 +Build-Depends: base hunk ./tests/ModuleTest.hs 50 -import qualified Distribution.Extension as D.E (hunitTests) +import qualified Distribution.Compiler as D.C (hunitTests) hunk ./tests/ModuleTest.hs 55 -import Distribution.Setup (CompilerFlavor(..)) +import Distribution.Compiler (CompilerFlavor(..)) hunk ./tests/ModuleTest.hs 434 - D.PD.hunitTests ++ D.E.hunitTests) + D.PD.hunitTests ++ D.C.hunitTests) hunk ./tests/depOnLib/test.cabal 7 +build-depends: base hunk ./tests/exeWithC/tt.cabal 8 +Build-Depends: base hunk ./tests/ffi-bin/main.cabal 2 -Build-Depends: testffi +Build-Depends: base, testffi hunk ./tests/twoMains/test.cabal 5 +build-depends: base hunk ./tests/wash2hs/wash2hs.cabal 4 -Build-Depends: text, lang +Build-Depends: base, text, lang hunk ./tests/withHooks/withHooks.cabal 6 +build-depends: base adddir ./Language adddir ./Language/Haskell addfile ./Language/Haskell/Extension.hs hunk ./Language/Haskell/Extension.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Language.Haskell.Extension +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : portable +-- +-- Haskell language extensions + +{- All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Language.Haskell.Extension ( + Extension(..), + ) where + +-- ------------------------------------------------------------ +-- * Extension +-- ------------------------------------------------------------ + +-- |This represents language extensions beyond Haskell 98 that are +-- supported by some implementations, usually in some special mode. + +data Extension + = OverlappingInstances + | RecursiveDo + | ParallelListComp + | MultiParamTypeClasses + | NoMonomorphismRestriction + | FunctionalDependencies + | RankNTypes + | PolymorphicComponents + | ExistentialQuantification + | ScopedTypeVariables + | ImplicitParams + | FlexibleContexts + | FlexibleInstances + | EmptyDataDecls + | CPP + + | TypeSynonymInstances + | TemplateHaskell + | ForeignFunctionInterface + | AllowOverlappingInstances + | AllowUndecidableInstances + | AllowIncoherentInstances + | InlinePhase + | ContextStack + | Arrows + | Generics + | NoImplicitPrelude + | NamedFieldPuns + | PatternGuards + + | ExtensibleRecords + | RestrictedTypeSynonyms + | HereDocuments + | UnsafeOverlappingInstances + deriving (Show, Read, Eq) hunk ./Distribution/Setup.hs 64 -import Distribution.Compiler +import Distribution.Compiler (CompilerFlavor(..), Compiler(..)) hunk ./Distribution/Setup.hs 280 -<<<<<<< Setup.hs -parseConfigureArgs cfg args customOpts = - case getCmdOpt configureCmd customOpts args of - (flags, _, []) | hasHelpFlag flags -> do - printCmdHelp configureCmd customOpts - exitWith ExitSuccess - (flags, args', []) -> - return (updateCfg flags cfg, unliftFlags flags, args') - (_, _, errs) -> do putStrLn "Errors: " - mapM_ putStrLn errs - exitWith (ExitFailure 1) - where updateCfg (fl:flags) t = updateCfg flags $ - case fl of - GhcFlag -> t { configHcFlavor = Just GHC } - NhcFlag -> t { configHcFlavor = Just NHC } - HugsFlag -> t { configHcFlavor = Just Hugs } - WithCompiler path -> t { configHcPath = Just path } - WithHcPkg path -> t { configHcPkg = Just path } - WithHaddock path -> t { configHaddock = Just path } - WithHappy path -> t { configHappy = Just path } - WithAlex path -> t { configAlex = Just path } - WithHsc2hs path -> t { configHsc2hs = Just path } - WithC2hs path -> t { configC2hs = Just path } - WithCpphs path -> t { configCpphs = Just path } - WithGreencard path-> t { configGreencard= Just path } - WithProfLib -> t { configProfLib = True } - WithoutProfLib -> t { configProfLib = False } - WithProfExe -> t { configProfExe = True } - WithoutProfExe -> t { configProfExe = False } - Prefix path -> t { configPrefix = Just path } - Verbose n -> t { configVerbose = n } - UserFlag -> t { configUser = True } - GlobalFlag -> t { configUser = False } - Lift _ -> t - _ -> error $ "Unexpected flag!" - updateCfg [] t = t -======= hunk ./Distribution/Setup.hs 281 - where updateCfg t GhcFlag = t { configHcFlavor = Just GHC } - updateCfg t NhcFlag = t { configHcFlavor = Just NHC } - updateCfg t HugsFlag = t { configHcFlavor = Just Hugs } - updateCfg t (WithCompiler path) = t { configHcPath = Just path } - updateCfg t (WithHcPkg path) = t { configHcPkg = Just path } - updateCfg t (WithHaddock path) = t { configHaddock = Just path } - updateCfg t (WithHappy path) = t { configHappy = Just path } - updateCfg t (WithAlex path) = t { configAlex = Just path } - updateCfg t (WithHsc2hs path) = t { configHsc2hs = Just path } - updateCfg t (WithC2hs path) = t { configC2hs = Just path } - updateCfg t (WithCpphs path) = t { configCpphs = Just path } - updateCfg t WithProfLib = t { configProfLib = True } - updateCfg t WithoutProfLib = t { configProfLib = False } - updateCfg t WithProfExe = t { configProfExe = True } - updateCfg t WithoutProfExe = t { configProfExe = False } - updateCfg t (Prefix path) = t { configPrefix = Just path } - updateCfg t (Verbose n) = t { configVerbose = n } - updateCfg t UserFlag = t { configUser = True } - updateCfg t GlobalFlag = t { configUser = False } - updateCfg t _ = error $ "Unexpected flag!" ->>>>>>> 1.37 + where updateCfg t GhcFlag = t { configHcFlavor = Just GHC } + updateCfg t NhcFlag = t { configHcFlavor = Just NHC } + updateCfg t HugsFlag = t { configHcFlavor = Just Hugs } + updateCfg t (WithCompiler path) = t { configHcPath = Just path } + updateCfg t (WithHcPkg path) = t { configHcPkg = Just path } + updateCfg t (WithHaddock path) = t { configHaddock = Just path } + updateCfg t (WithHappy path) = t { configHappy = Just path } + updateCfg t (WithAlex path) = t { configAlex = Just path } + updateCfg t (WithHsc2hs path) = t { configHsc2hs = Just path } + updateCfg t (WithC2hs path) = t { configC2hs = Just path } + updateCfg t (WithCpphs path) = t { configCpphs = Just path } + updateCfg t (WithGreencard path) = t { configGreencard= Just path } + updateCfg t WithProfLib = t { configProfLib = True } + updateCfg t WithoutProfLib = t { configProfLib = False } + updateCfg t WithProfExe = t { configProfExe = True } + updateCfg t WithoutProfExe = t { configProfExe = False } + updateCfg t (Prefix path) = t { configPrefix = Just path } + updateCfg t (Verbose n) = t { configVerbose = n } + updateCfg t UserFlag = t { configUser = True } + updateCfg t GlobalFlag = t { configUser = False } + updateCfg t (Lift _) = t + updateCfg t _ = error $ "Unexpected flag!" hunk ./Distribution/Simple/Configure.hs 136 -<<<<<<< Configure.hs -======= - -- prefix - defPrefix <- system_default_prefix pkg_descr - let pref = fromMaybe defPrefix (configPrefix cfg) ->>>>>>> 1.36 hunk ./Distribution/Simple/Configure.hs 325 -<<<<<<< Configure.hs -compilerBinaryName :: CompilerFlavor -> String -compilerBinaryName GHC = "ghc" -compilerBinaryName NHC = "hmake" -- FIX: uses hmake for now -compilerBinaryName Hugs = "ffihugs" -compilerBinaryName cmp = error $ "Unsupported compiler: " ++ (show cmp) - -======= ->>>>>>> 1.36 hunk ./changelog 3 -1.0.2 Isaac Jones May 2005 +1.0.2 Isaac Jones June 2005 hunk ./changelog 5 - change in future releases. + change in future releases. hunk ./changelog 9 + * Added support for profiling + * Changed install prefix of libraries (pref/pkgname-version + to prefix/pkgname-version/compname-version) hunk ./changelog 13 + * Moved some functionality to Language.Haskell.Extension hunk ./tests/ModuleTest.hs 208 - do let targetDir = ",tmp/lib/test-1.0/" + do let targetDir = ",tmp/lib/test-1.0/ghc-6.2.2" -- FIX: Compiler-version hunk ./tests/ModuleTest.hs 283 - doesFileExist ",tmp/lib/recursive-1.0/libHSrecursive-1.0.a" >>= + doesFileExist ",tmp/lib/recursive-1.0/ghc-6.2.2/libHSrecursive-1.0.a" >>= -- FIX: Comp hunk ./tests/ModuleTest.hs 323 - doesFileExist (",tmp/lib/test-1.0/libHStest-1.0.a") + doesFileExist (",tmp/lib/test-1.0/ghc-6.2.2/libHStest-1.0.a") hunk ./tests/ModuleTest.hs 361 - doesFileExist (",tmp/lib/withHooks-1.0/" `joinFileName` "libHSwithHooks-1.0.a") + doesFileExist (",tmp/lib/withHooks-1.0/ghc-6.2.2/" `joinFileName` "libHSwithHooks-1.0.a") hunk ./tests/ModuleTest.hs 404 - = let ghcTargetDir = pref ++ "/lib/test-1.0/" in + = let ghcTargetDir = pref ++ "/lib/test-1.0/ghc-6.2.2/" in hunk ./GNUmakefile 129 - scp /tmp/cabal-code.tgz ijones@www.haskell.org:~/cabal/cabal-code.tgz + scp $(TMPDISTLOC)/cabal-code.tgz ijones@www.haskell.org:~/cabal/cabal-code.tgz hunk ./GNUmakefile 129 - scp $(TMPDISTLOC)/cabal-code.tgz ijones@www.haskell.org:~/cabal/cabal-code.tgz + scp $(TMPDISTLOC)/cabal.tar.gz ijones@www.haskell.org:~/cabal/cabal-code.tgz hunk ./Distribution/PackageDescription.hs 201 - profOptions :: [String] + ghcProfOptions :: [String] hunk ./Distribution/PackageDescription.hs 220 - profOptions = [] + ghcProfOptions = [] hunk ./Distribution/PackageDescription.hs 426 - , listField "prof-options" + , listField "ghc-prof-options" hunk ./Distribution/PackageDescription.hs 428 - profOptions (\val binfo -> binfo{profOptions=val}) + ghcProfOptions (\val binfo -> binfo{ghcProfOptions=val}) hunk ./Distribution/PackageDescription.hs 750 - profOptions = [], + ghcProfOptions = [], hunk ./Distribution/Simple/Build.hs 159 - ++ profOptions libBi + ++ ghcProfOptions libBi hunk ./Distribution/Simple/Build.hs 244 - then "-prof":profOptions exeBi + then "-prof":ghcProfOptions exeBi addfile ./Distribution/Compiler.hs hunk ./Distribution/Compiler.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Compiler +-- Copyright : Isaac Jones 2003-2004 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : portable +-- +-- Haskell implementations. + +{- All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Compiler ( + -- * Haskell implementations + CompilerFlavor(..), Compiler(..), showCompilerId, + compilerBinaryName, + -- * Support for language extensions + Opt, + extensionsToFlags, + extensionsToNHCFlag, extensionsToGHCFlag, extensionsToHugsFlag, +#ifdef DEBUG + hunitTests +#endif + ) where + +import Distribution.Version (Version(..), showVersion) +import Language.Haskell.Extension (Extension(..)) + +import Data.List (nub) + +#ifdef DEBUG +import HUnit (Test) +#endif + +-- ------------------------------------------------------------ +-- * Command Line Types and Exports +-- ------------------------------------------------------------ + +data CompilerFlavor + = GHC | NHC | Hugs | HBC | Helium | JHC | OtherCompiler String + deriving (Show, Read, Eq) + +data Compiler = Compiler {compilerFlavor:: CompilerFlavor, + compilerVersion :: Version, + compilerPath :: FilePath, + compilerPkgTool :: FilePath} + deriving (Show, Read, Eq) + +showCompilerId :: Compiler -> String +showCompilerId (Compiler f (Version [] _) _ _) = compilerBinaryName f +showCompilerId (Compiler f v _ _) = compilerBinaryName f ++ '-': showVersion v + +compilerBinaryName :: CompilerFlavor -> String +compilerBinaryName GHC = "ghc" +compilerBinaryName NHC = "hmake" -- FIX: uses hmake for now +compilerBinaryName Hugs = "ffihugs" +compilerBinaryName cmp = error $ "Unsupported compiler: " ++ (show cmp) + +-- ------------------------------------------------------------ +-- * Extensions +-- ------------------------------------------------------------ + +-- |For the given compiler, return the unsupported extensions, and the +-- flags for the supported extensions. +extensionsToFlags :: CompilerFlavor -> [ Extension ] -> ([Extension], [Opt]) +extensionsToFlags GHC exts = extensionsToGHCFlag exts +extensionsToFlags Hugs exts = extensionsToHugsFlag exts +extensionsToFlags NHC exts = extensionsToNHCFlag exts +extensionsToFlags _ exts = (exts, []) + +-- |GHC: Return the unsupported extensions, and the flags for the supported extensions +extensionsToGHCFlag :: [ Extension ] -> ([Extension], [Opt]) +extensionsToGHCFlag l + = splitEither $ nub $ map extensionToGHCFlag l + where + extensionToGHCFlag :: Extension -> Either Extension String + extensionToGHCFlag OverlappingInstances = Right "-fallow-overlapping-instances" + extensionToGHCFlag TypeSynonymInstances = Right "-fglasgow-exts" + extensionToGHCFlag TemplateHaskell = Right "-fth" + extensionToGHCFlag ForeignFunctionInterface = Right "-ffi" + extensionToGHCFlag NoMonomorphismRestriction = Right "-fno-monomorphism-restriction" + extensionToGHCFlag AllowOverlappingInstances = Right "-fallow-overlapping-instances" + extensionToGHCFlag AllowUndecidableInstances = Right "-fallow-undecidable-instances" + extensionToGHCFlag AllowIncoherentInstances = Right "-fallow-incoherent-instances" + extensionToGHCFlag InlinePhase = Right "-finline-phase" + extensionToGHCFlag ContextStack = Right "-fcontext-stack" + extensionToGHCFlag Arrows = Right "-farrows" + extensionToGHCFlag Generics = Right "-fgenerics" + extensionToGHCFlag NoImplicitPrelude = Right "-fno-implicit-prelude" + extensionToGHCFlag ImplicitParams = Right "-fimplicit-params" + extensionToGHCFlag CPP = Right "-cpp" + + extensionToGHCFlag RecursiveDo = Right "-fglasgow-exts" + extensionToGHCFlag ParallelListComp = Right "-fglasgow-exts" + extensionToGHCFlag MultiParamTypeClasses = Right "-fglasgow-exts" + extensionToGHCFlag FunctionalDependencies = Right "-fglasgow-exts" + extensionToGHCFlag RankNTypes = Right "-fglasgow-exts" + extensionToGHCFlag PolymorphicComponents = Right "-fglasgow-exts" + extensionToGHCFlag ExistentialQuantification = Right "-fglasgow-exts" + extensionToGHCFlag ScopedTypeVariables = Right "-fglasgow-exts" + extensionToGHCFlag FlexibleContexts = Right "-fglasgow-exts" + extensionToGHCFlag FlexibleInstances = Right "-fglasgow-exts" + extensionToGHCFlag EmptyDataDecls = Right "-fglasgow-exts" + extensionToGHCFlag PatternGuards = Right "-fglasgow-exts" + + extensionToGHCFlag e@ExtensibleRecords = Left e + extensionToGHCFlag e@RestrictedTypeSynonyms = Left e + extensionToGHCFlag e@HereDocuments = Left e + extensionToGHCFlag e@UnsafeOverlappingInstances = Left e + extensionToGHCFlag e@NamedFieldPuns = Left e + +-- |NHC: Return the unsupported extensions, and the flags for the supported extensions +extensionsToNHCFlag :: [ Extension ] -> ([Extension], [Opt]) +extensionsToNHCFlag l + = splitEither $ nub $ map extensionToNHCFlag l + where + -- NHC doesn't enforce the monomorphism restriction at all. + extensionToNHCFlag NoMonomorphismRestriction = Right "" + extensionToNHCFlag ForeignFunctionInterface = Right "" + extensionToNHCFlag ExistentialQuantification = Right "" + extensionToNHCFlag EmptyDataDecls = Right "" + extensionToNHCFlag NamedFieldPuns = Right "-puns" + extensionToNHCFlag CPP = Right "-cpp" + extensionToNHCFlag e = Left e + +-- |Hugs: Return the unsupported extensions, and the flags for the supported extensions +extensionsToHugsFlag :: [ Extension ] -> ([Extension], [Opt]) +extensionsToHugsFlag l + = splitEither $ nub $ map extensionToHugsFlag l + where + extensionToHugsFlag OverlappingInstances = Right "+o" + extensionToHugsFlag UnsafeOverlappingInstances = Right "+O" + extensionToHugsFlag HereDocuments = Right "+H" + extensionToHugsFlag RecursiveDo = Right "-98" + extensionToHugsFlag ParallelListComp = Right "-98" + extensionToHugsFlag MultiParamTypeClasses = Right "-98" + extensionToHugsFlag FunctionalDependencies = Right "-98" + extensionToHugsFlag RankNTypes = Right "-98" + extensionToHugsFlag PolymorphicComponents = Right "-98" + extensionToHugsFlag ExistentialQuantification = Right "-98" + extensionToHugsFlag ScopedTypeVariables = Right "-98" + extensionToHugsFlag ImplicitParams = Right "-98" + extensionToHugsFlag ExtensibleRecords = Right "-98" + extensionToHugsFlag RestrictedTypeSynonyms = Right "-98" + extensionToHugsFlag FlexibleContexts = Right "-98" + extensionToHugsFlag FlexibleInstances = Right "-98" + extensionToHugsFlag ForeignFunctionInterface = Right "" + extensionToHugsFlag EmptyDataDecls = Right "" + extensionToHugsFlag CPP = Right "" + extensionToHugsFlag e = Left e + +splitEither :: [Either a b] -> ([a], [b]) +splitEither l = ([a | Left a <- l], [b | Right b <- l]) + +type Opt = String + +-- ------------------------------------------------------------ +-- * Testing +-- ------------------------------------------------------------ + +#ifdef DEBUG +hunitTests :: [Test] +hunitTests = [] +#endif hunk ./tests/ModuleTest.hs 208 - do let targetDir = ",tmp/lib/test-1.0/ghc-6.2.2" -- FIX: Compiler-version + do let targetDir = ",tmp/lib/test-1.0/ghc-6.4" -- FIX: Compiler-version hunk ./tests/ModuleTest.hs 211 - (do assertCmd' compCmd "install --user" "install --user failed" + (do system $ "ghc-pkg unregister --user test-1.0" + assertCmd' compCmd "install --user" "install --user failed" hunk ./tests/ModuleTest.hs 284 - doesFileExist ",tmp/lib/recursive-1.0/ghc-6.2.2/libHSrecursive-1.0.a" >>= -- FIX: Comp + doesFileExist ",tmp/lib/recursive-1.0/ghc-6.4/libHSrecursive-1.0.a" >>= -- FIX: Comp hunk ./tests/ModuleTest.hs 324 - doesFileExist (",tmp/lib/test-1.0/ghc-6.2.2/libHStest-1.0.a") + doesFileExist (",tmp/lib/test-1.0/ghc-6.4/libHStest-1.0.a") hunk ./tests/ModuleTest.hs 362 - doesFileExist (",tmp/lib/withHooks-1.0/ghc-6.2.2/" `joinFileName` "libHSwithHooks-1.0.a") + doesFileExist (",tmp/lib/withHooks-1.0/ghc-6.4/" `joinFileName` "libHSwithHooks-1.0.a") hunk ./tests/ModuleTest.hs 371 - ,TestLabel ("package HSQL (make-based): " ++ show compIdent) $ +{- ,TestLabel ("package HSQL (make-based): " ++ show compIdent) $ hunk ./tests/ModuleTest.hs 385 - assertBool "libHSsql.a doesn't exist. copy failed.") + assertBool "libHSsql.a doesn't exist. copy failed.")-} hunk ./tests/ModuleTest.hs 405 - = let ghcTargetDir = pref ++ "/lib/test-1.0/ghc-6.2.2/" in + = let ghcTargetDir = pref ++ "/lib/test-1.0/ghc-6.4/" in hunk ./tests/ffi-package/testffi.cabal 4 -hs-source-dir: src +hs-source-dir: src hunk ./Distribution/PreProcess.hs 54 -import Distribution.Simple.Utils (rawSystemPath, rawSystemVerbose, +import Distribution.Simple.Utils (rawSystemVerbose, hunk ./Distribution/Setup.hs 46 - CopyFlags, InstallFlags, RegisterFlags, + CopyFlags, InstallFlags, RegisterFlags, SDistFlags, hunk ./Distribution/Simple/Configure.hs 84 -import Data.Maybe(fromMaybe, isJust) +import Data.Maybe(fromMaybe) hunk ./Distribution/Simple/Configure.hs 132 - defPrefix <- system_default_prefix pkg_descr + defPrefix <- system_default_prefix hunk ./Distribution/Simple/Configure.hs 246 -system_default_prefix :: PackageDescription -> IO String +system_default_prefix :: IO String hunk ./Distribution/Simple/Configure.hs 248 -system_default_prefix pkg_descr@PackageDescription{package=pkg} = +system_default_prefix = hunk ./Distribution/Simple/Configure.hs 251 - s <- peekCString pPath - if isJust (library pkg_descr) - then return (s `joinFileName` "Haskell" `joinFileName` showPackageId pkg) - else return (s `joinFileName` showPackageId pkg) + peekCString pPath hunk ./Distribution/Simple/Configure.hs 264 -system_default_prefix _ = +system_default_prefix = hunk ./Distribution/Simple/Install.hs 228 - _ -> -#ifdef mingw32_TARGET_OS - libDir `joinFileName`showCompilerId hc -#else - libDir `joinFileName` showPackageId (package pkg_descr) - `joinFileName`showCompilerId hc -#endif + _ -> libDir `joinFileName` showPackageId (package pkg_descr) + `joinFileName` showCompilerId hc hunk ./Distribution/Simple/Install.hs 233 -#ifndef mingw32_TARGET_OS +#ifdef mingw32_TARGET_OS + `joinFileName` "Haskell" +#else hunk ./Distribution/Simple/Install.hs 240 -mkBinDir _ lbi install_prefixM = - (fromMaybe (prefix lbi) install_prefixM) `joinFileName` "bin" +mkBinDir pkg_descr lbi install_prefixM = + (fromMaybe (prefix lbi) install_prefixM) +#ifdef mingw32_TARGET_OS + `joinFileName` showPackageId (package pkg_descr) +#endif + `joinFileName` "bin" hunk ./changelog 6 - * Handles recursive modules for GHC 6.2 and GHC 6.4. + * Handles recursive modules for GHC 6.2 and GHC 6.4. hunk ./doc/Cabal.xml 661 + ghc-prof-options: + token list + + + Additional options for GHC when the package is built + with profiling enabled. + + + + + hunk ./doc/Cabal.xml 1113 - (default: /usr/local on Unix systems). + (default: /usr/local on Unix systems, + the Program Files folder on Windows, e.g. + C:\Program Files in an English + locale). hunk ./doc/Cabal.xml 1187 + =path + + Specify the path to greencard. + + + + hunk ./doc/Cabal.xml 1213 + + + + + or + + + Request that an additional version of the library + with profiling features enabled be built and installed + (only for implementations that support profiling). + + + + + + + (default) Do not generate an additional profiling + version of the library. + + + + + + + Any executables generated should have profiling enabled + (only for implementations that support profiling). For this + to work, all libraries used by these executables must also + have been built with profiling support. + + + + + + + (default) Do not enable profiling in generated + executables. hunk ./README 8 + If you get an error about multiple versions of Cabal, read the section + below "Working with older versions of Cabal" hunk ./README 22 + +-= Working with older versions of Cabal =- + +If you have an older version of Cabal installed, you may have to +specify which version you want when you run ghci. For instance: + + $ ghci -package Cabal + ... + ghc-6.4: Error; multiple packages match Cabal: Cabal-1.0, Cabal-1.0.1 + $ ghci -package Cabal-1.0.1 + ... + (OK) + +If you want to avoid this situation, you can remove the older version +with: + + $ ghc-pkg unregister Cabal-1.0 + +or + + $ ghc-pkg unregister Cabal-1.0 --user + +If you don't have root access, and you need to install a newer version +of Cabal in your user directory, then this formula may help to hide +the global version: + + $ ghc-pkg describe Cabal-1.0 | ghc-pkg --user regiser - + $ ghc-pkg --user hide Cabal-1.0 hunk ./doc/Cabal.xml 937 + + Preprocessors + Cabal will automatically handle certain preprocessors + including GreenCard, hsc2hs, happy, and alex. To use these + preprocessors, just specify the module name (without any + extension) in the exposed-modules or + extra-modules fields. No further steps are + required. Cabal will look for modules with extensions + corresponding to the preprocessors it knows about (".y" for + Happy files, ".gc" for GreenCard files, etc.), run the + appropriate preprocessor on those files, then compile the + output. + + hunk ./doc/Cabal.xml 959 - You can customize the simple build infrastructure using - hooks. These allow you to perform - additional actions before and after each command is run, - and also to specify additional preprocessors. See &Simple; - for the details, but note that this interface is experimental, - and likely to change in future releases.. + You can customize the simple build infrastructure + using hooks. These allow you to + perform additional actions before and after each command is + run, and also to specify additional preprocessors. See + UserHooks in &Simple; for the details, + but note that this interface is experimental, and likely to + change in future releases. hunk ./doc/Cabal.xml 1435 + + + + setup test + + Run the test suite specified by the + runTests field of + Distribution.Simple.UserHooks. See &Simple; + for information about creating hooks and using + defaultMainWithHooks. + hunk ./changelog 3 -1.0.2 Isaac Jones June 2005 +1.2 Isaac Jones June 2005 hunk ./releaseNotes 8 -changes. +changes and installation instructions. hunk ./releaseNotes 12 -The Haskell Cabal has reached version 1.0.2. The community should use -this release to evaluate the interfaces and explore the concepts of -these tools. It is still possible that some interfaces may change. +The Haskell Cabal has reached version 1.2-RC1. This pre-release has a +number of new features including a hook for testing, support for +profiling, and support for _stub files, as well as several bug fixes. hunk ./Cabal.cabal 2 -Version: 1.0.1 +Version: 1.2-RC1 hunk ./GNUmakefile 1 -CABALVERSION=0.6 +CABALVERSION=1.2-RC1 hunk ./GNUmakefile 29 - $(HC) $(GHCFLAGS) -package Cabal -odir dist/tmp -hidir dist/tmp Setup -o setup + $(HC) $(GHCFLAGS) -odir dist/tmp -hidir dist/tmp Setup -o setup hunk ./GNUmakefile 128 + hunk ./GNUmakefile 131 +# PUSH ELSEWHERE: scp changelog ijones@www.haskell.org:~/cabal/release/changelog +# PUSH ELSEWHERE: scp releaseNotes ijones@www.haskell.org:~/cabal/release/notes hunk ./GNUmakefile 150 +# after this command, there will be cabal.tar.gz in $(TMPDISTLOC), +# which will have built docs, haddock, and source code. + hunk ./GNUmakefile 168 + +release: dist + mkdir $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal/releaseNotes $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal/changelog $(TMPDISTLOC)/release + cp -r $(TMPDISTLOC)/cabal/doc $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal.tar.gz $(TMPDISTLOC)/release/cabal-$(CABALVERSION).tar.gz + scp -r $(TMPDISTLOC)/release ijones@www.haskell.org:~/cabal/release/cabal-$(CABALVERSION) + ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f latest && ln -s cabal-$(CABALVERSION) latest' hunk ./Cabal.cabal 2 -Version: 1.2-RC1 +Version: 1.1.1 hunk ./GNUmakefile 1 -CABALVERSION=1.2-RC1 +CABALVERSION=1.1.1 +KIND=rc +#KIND=latest hunk ./GNUmakefile 178 - ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f latest && ln -s cabal-$(CABALVERSION) latest' + ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f latest && ln -s cabal-$(CABALVERSION) $(KIND)' hunk ./changelog 3 -1.2 Isaac Jones June 2005 +1.1.1 Isaac Jones July 2005 hunk ./GNUmakefile 178 - ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f latest && ln -s cabal-$(CABALVERSION) $(KIND)' + ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f $(KIND) && ln -s cabal-$(CABALVERSION) $(KIND)' hunk ./releaseNotes 12 -The Haskell Cabal has reached version 1.2-RC1. This pre-release has a +The Haskell Cabal has reached version 1.1.1. This pre-release has a hunk ./Cabal.cabal 2 -Version: 1.1.1 +Version: 1.1.2 hunk ./GNUmakefile 1 -CABALVERSION=1.1.1 +CABALVERSION=1.1.2 hunk ./releaseNotes 12 -The Haskell Cabal has reached version 1.1.1. This pre-release has a +The Haskell Cabal has reached version 1.1.2. This pre-release has a hunk ./README 25 -If you have an older version of Cabal installed, you may have to -specify which version you want when you run ghci. For instance: +* Installing as root / Administrator (GHC's global package file) + +This is the recommended method of installing Cabal. + +If you have an older version of Cabal installed, in order to use the +new one after installation you may have to specify which version you +want when you run ghci. For instance: hunk ./README 53 - $ ghc-pkg describe Cabal-1.0 | ghc-pkg --user regiser - + $ ghc-pkg describe Cabal-1.0 | ghc-pkg --user register - hunk ./TODO 2 +-= 1.2 =- + +* Move Distribution and everything into a subdirectory, so we can + build the Setup file with the normal invocation of cabal. + +* Clean up readme according to Simon's suggestions + - to install globally / with root access: should "just work" + + - to install just for me: copy+hide Cabal-1.0, then install the + new one with --user. + +* grab and test: +> Another option is to patch the PreProcess.hs module to check to see if +> cpphs exists and if not, to use "raw" cpp, or cpp through ghc or +> something. If someone does this, they should also patch the sanity +> checker to add a warning. + +I've fixed this now (as per your last paragraph above), and done some +rudimentary testing. I didn't add a warning though; perhaps we should, +but since it's using the same preprocessor that will be used when +compiling with GHC anyway, I'm not sure a warning will be terribly +helpful. + +I hope this can sneak into the Cabal release, but don't worry if not. + hunk ./Distribution/Simple/Build.hs 166 - sequence_ [do let odir = pref `joinFileName` dirOf c + sequence_ [do let ghc_vers = compilerVersion (compiler lbi) + odir | versionBranch ghc_vers >= [6,4,1] = pref + | otherwise = pref `joinFileName` dirOf c + -- ghc 6.4.1 fixed a bug in -odir handling + -- for C compilations. hunk ./Distribution/Version.hs 102 -import Data.List ( intersperse ) +import Data.List ( intersperse, sort ) hunk ./Distribution/Version.hs 164 - && all (`elem` (versionTags v2)) (versionTags v1) + && sort (versionTags v1) == sort (versionTags v2) hunk ./Distribution/PreProcess.hs 208 -ppCpp' inputArgs bi lbi - = maybe (ppNone "cpphs") pp (withCpphs lbi) - where pp cpphs inFile outFile verbose +ppCpp' inputArgs bi lbi = + case withCpphs lbi of + Just path -> use_cpphs path + Nothing | compilerFlavor hc == GHC -> use_ghc + _otherwise -> ppNone "cpphs (or GHC)" + where + hc = compiler lbi + + use_cpphs cpphs inFile outFile verbose hunk ./Distribution/PreProcess.hs 218 - = rawSystemVerbose verbose "sh" (cpphs : extraArgs ++ ["-O" ++ outFile, inFile]) + = rawSystemVerbose verbose "sh" (cpphs : cpphsArgs) hunk ./Distribution/PreProcess.hs 220 - = rawSystemVerbose verbose cpphs (extraArgs ++ ["-O" ++ outFile, inFile]) + = rawSystemVerbose verbose cpphs cpphsArgs hunk ./Distribution/PreProcess.hs 222 - extraArgs = "--noline" : "--strip" : - sysDefines ++ cppOptions bi lbi ++ inputArgs + where cpphsArgs = ("-O"++outFile) : inFile : "--noline" : "--strip" + : extraArgs + + extraArgs = sysDefines ++ cppOptions bi lbi ++ inputArgs + hunk ./Distribution/PreProcess.hs 231 + + use_ghc inFile outFile verbose + = rawSystemVerbose verbose (compilerPath hc) + (["-E", "-cpp", "-optP-P", "-o", outFile, inFile] ++ extraArgs) hunk ./GNUmakefile 75 + -rm -f darcs* out.build *~ semantic.cache* x*.html hunk ./TODO 27 +* add a haskell-version field? +* ignore unknown fields? (--force?) + hunk ./README 4 +WARNING If you already have Cabal installed, including GHC 6.4 users, +read "Working with older versions of Cabal" for information first! If +you do this out of order, stuff might get screwy. If stuff gets +screwy, post to libraries@haskell.org for help. hunk ./README 11 -* "make install" as root, then try "ghci -package Cabal" to test it. - If you get an error about multiple versions of Cabal, read the section - below "Working with older versions of Cabal" +* If you don't already have Cabal installed: "make install" as root, +then try "ghci -package Cabal" to + test it. If you get an error about multiple versions of Cabal, read + the section below "Working with older versions of Cabal" You were + supposed to read this first. hunk ./README 35 -If you have an older version of Cabal installed, in order to use the -new one after installation you may have to specify which version you -want when you run ghci. For instance: +If you have an older version of Cabal installed, you probably just +want to remove it: hunk ./README 38 + $ ghc-pkg unregister Cabal + + +If you don't want to remove it, and want both the old and new versions +installed, that's fine... In order to use the new one after +installation you may have to specify which version you want when you +run ghci. For instance: + hunk ./README 53 -If you want to avoid this situation, you can remove the older version -with: +* Installing as a user (no root or administer access) hunk ./README 55 - $ ghc-pkg unregister Cabal-1.0 +If you have cabal installed already, you can this command to remove +it: hunk ./README 58 -or + $ ghc-pkg unregister Cabal --user hunk ./README 60 - $ ghc-pkg unregister Cabal-1.0 --user +If: hunk ./README 62 -If you don't have root access, and you need to install a newer version -of Cabal in your user directory, then this formula may help to hide -the global version: +1) Cabal is installed in the global package file (use ghc-pkg -l to see) + +2) You don't have root access + +3) You need to install a newer version of Cabal in your user directory, + +then this formula may help to hide the global version: hunk ./README 107 -Cabal proposal: +Cabal spec: hunk ./TODO 4 -* Move Distribution and everything into a subdirectory, so we can - build the Setup file with the normal invocation of cabal. +* MOVED FOR DARCS BUT NOT CVS. Move Distribution and everything + into a subdirectory, so we can build the Setup file with the normal + invocation of cabal. adddir ./src move ./DefaultSetup.lhs ./src/DefaultSetup.lhs move ./Distribution ./src/Distribution move ./Language ./src/Language hunk ./Cabal.cabal 8 +hs-source-dir: src hunk ./Cabal.cabal 55 +hs-source-dir: src hunk ./GNUmakefile 113 - $(HC) $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:.:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest + $(HC) $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:src:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest hunk ./src/Distribution/Simple/Utils.hs 390 - do mp1 <- moduleToFilePath [""] "Distribution.Simple.Build" suffixes --exists + do mp1 <- moduleToFilePath ["src"] "Distribution.Simple.Build" suffixes --exists hunk ./tests/Tests.mk 4 - $(HC) -cpp --make -i../.. Setup.lhs -o setup 2>out.build + $(HC) -cpp --make -i../../src Setup.lhs -o setup 2>out.build hunk ./GNUmakefile 31 - $(HC) $(GHCFLAGS) -odir dist/tmp -hidir dist/tmp Setup -o setup + $(HC) $(GHCFLAGS) -isrc -odir dist/tmp -hidir dist/tmp Setup -o setup hunk ./TODO 8 -* Clean up readme according to Simon's suggestions - - to install globally / with root access: should "just work" - - - to install just for me: copy+hide Cabal-1.0, then install the - new one with --user. - -* grab and test: -> Another option is to patch the PreProcess.hs module to check to see if -> cpphs exists and if not, to use "raw" cpp, or cpp through ghc or -> something. If someone does this, they should also patch the sanity -> checker to add a warning. - -I've fixed this now (as per your last paragraph above), and done some -rudimentary testing. I didn't add a warning though; perhaps we should, -but since it's using the same preprocessor that will be used when -compiling with GHC anyway, I'm not sure a warning will be terribly -helpful. - -I hope this can sneak into the Cabal release, but don't worry if not. - hunk ./TODO 9 + hunk ./Cabal.cabal 53 -executable: cabal-setup -main-is: DefaultSetup.lhs -hs-source-dir: src -Other-Modules: - Distribution.Compat.ReadP, - Distribution.Extension, - Distribution.InstalledPackageInfo, - Distribution.License, - Distribution.Make, - Distribution.Package, - Distribution.PackageDescription, - Distribution.ParseUtils, - Distribution.PreProcess, - Distribution.PreProcess.Unlit, - Distribution.Setup, - Distribution.Simple, - Distribution.Simple.Build, - Distribution.Simple.Configure, - Distribution.Simple.GHCPackageConfig, - Distribution.Simple.Install, - Distribution.Simple.LocalBuildInfo, - Distribution.Simple.Register, - Distribution.Simple.SrcDist, - Distribution.Simple.Utils, - Distribution.Compat.FilePath, - Distribution.Version, - Distribution.GetOpt, - Distribution.Compat.Directory, - Distribution.Compat.Exception, - Distribution.Compat.RawSystem -Extensions: CPP - hunk ./src/Distribution/Simple/Configure.hs 256 -foreign import stdcall unsafe "SHGetFolderPath" +foreign import stdcall unsafe "SHGetFolderPathW" hunk ./debian/control 4 -Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.2), ghc6 (<< 6.2.3) +Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.2), ghc6 (== 6.4) hunk ./debian/changelog 1 +haskell-cabal (1.1.1) unstable; urgency=low + + * Release candidate for 1.2. + * WARNING: Interfaces not documented in the user's guide may + change in future releases. + * Handles recursive modules for GHC 6.2 and GHC 6.4. + * Added "setup test" command (Used with UserHook) + * implemented handling of _stub.{c,h,o} files + * Added support for profiling + * Changed install prefix of libraries (pref/pkgname-version + to prefix/pkgname-version/compname-version) + * Added pattern guards as a language extension + * Moved some functionality to Language.Haskell.Extension + * Register / unregister .bat files for windows + * Exposed more of the API + * Added support for the hide-all-packages flag in GHC > 6.4 + * Several bug fixes + + -- Isaac Jones Sun, 17 Jul 2005 22:16:42 -0700 + hunk ./debian/control 4 -Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.2), ghc6 (== 6.4) +Build-Depends: debhelper (>= 4.0.0), ghc6 (>= 6.2.2), ghc6 (6.4) move ./src/DefaultSetup.lhs ./DefaultSetup.lhs move ./src/Distribution ./Distribution move ./src/Language ./Language hunk ./Cabal.cabal 8 -hs-source-dir: src hunk ./Distribution/Simple/Utils.hs 390 - do mp1 <- moduleToFilePath ["src"] "Distribution.Simple.Build" suffixes --exists + do mp1 <- moduleToFilePath [""] "Distribution.Simple.Build" suffixes --exists hunk ./tests/Tests.mk 4 - $(HC) -cpp --make -i../../src Setup.lhs -o setup 2>out.build + $(HC) -cpp --make -i../.. Setup.lhs -o setup 2>out.build hunk ./Distribution/Simple/Configure.hs 86 -import Distribution.Compat.FilePath (splitFileName, joinFileName) +import Distribution.Compat.FilePath (splitFileName, joinFileName, + joinFileExt, exeExtension) hunk ./Distribution/Simple/Configure.hs 349 - (dir,name) = splitFileName path - pkgtool = dir `joinFileName` pkgToolName ++ drop (length (compilerBinaryName flavor)) name + (dir,_) = splitFileName path + pkgtool = dir `joinFileName` pkgToolName `joinFileExt` exeExtension hunk ./GNUmakefile 31 - $(HC) $(GHCFLAGS) -isrc -odir dist/tmp -hidir dist/tmp Setup -o setup + $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup hunk ./TODO 4 +* Something for gentoo which produces a package gen file but doesn't + do the register?? + +* Mine Brian Smith emails for tests & patches + hunk ./Distribution/Compat/Directory.hs 27 -#ifndef mingw32_TARGET_OS +#if !(mingw32_HOST_OS || mingw32_TARGET_OS) hunk ./Distribution/Compat/Directory.hs 46 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/Directory.hs 53 -#ifndef mingw32_TARGET_OS +#if !(mingw32_HOST_OS || mingw32_TARGET_OS) hunk ./Distribution/Compat/Directory.hs 64 -#ifndef mingw32_TARGET_OS +#if !(mingw32_HOST_OS || mingw32_TARGET_OS) hunk ./Distribution/Compat/FilePath.hs 28 + , platformPath hunk ./Distribution/Compat/FilePath.hs 74 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 175 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 200 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 208 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 220 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 276 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 307 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 380 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 391 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 401 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 407 +-- |Convert Unix-style path separators to the path separators for this platform. +platformPath :: FilePath -> FilePath +#if mingw32_HOST_OS || mingw32_TARGET_OS +platformPath = map slash + where slash '/' = '\\' + slash c = c +#else +platformPath = id +#endif + hunk ./Distribution/Compat/FilePath.hs 421 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Compat/FilePath.hs 436 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/ParseUtils.hs 65 +import Distribution.Compat.FilePath (platformPath) hunk ./Distribution/ParseUtils.hs 67 +import Control.Monad (liftM) hunk ./Distribution/ParseUtils.hs 220 -parseFilePathQ = parseTokenQ +parseFilePathQ = liftM platformPath parseTokenQ hunk ./Distribution/PreProcess.hs 217 -#if __HUGS__ && mingw32_TARGET_OS - = rawSystemVerbose verbose "sh" (cpphs : cpphsArgs) -#else hunk ./Distribution/PreProcess.hs 218 -#endif hunk ./Distribution/PreProcess.hs 235 -#if __HUGS__ && mingw32_TARGET_OS - where pp n = standardPP "sh" (n : cppOptions bi lbi) -#else hunk ./Distribution/PreProcess.hs 236 -#endif hunk ./Distribution/Setup.hs 55 - parseUnregisterArgs, parseCopyArgs + parseUnregisterArgs, parseCopyArgs, + reqPathArg, reqDirArg hunk ./Distribution/Setup.hs 69 +import Distribution.Compat.FilePath (platformPath) hunk ./Distribution/Setup.hs 244 - Option "w" ["with-compiler"] (ReqArg WithCompiler "PATH") + Option "w" ["with-compiler"] (reqPathArg WithCompiler) hunk ./Distribution/Setup.hs 246 - Option "" ["with-hc-pkg"] (ReqArg WithHcPkg "PATH") + Option "" ["with-hc-pkg"] (reqPathArg WithHcPkg) hunk ./Distribution/Setup.hs 248 - Option "" ["prefix"] (ReqArg Prefix "DIR") + Option "" ["prefix"] (reqDirArg Prefix) hunk ./Distribution/Setup.hs 250 - Option "" ["with-haddock"] (ReqArg WithHaddock "PATH") + Option "" ["with-haddock"] (reqPathArg WithHaddock) hunk ./Distribution/Setup.hs 252 - Option "" ["with-happy"] (ReqArg WithHappy "PATH") + Option "" ["with-happy"] (reqPathArg WithHappy) hunk ./Distribution/Setup.hs 254 - Option "" ["with-alex"] (ReqArg WithAlex "PATH") + Option "" ["with-alex"] (reqPathArg WithAlex) hunk ./Distribution/Setup.hs 256 - Option "" ["with-hsc2hs"] (ReqArg WithHsc2hs "PATH") + Option "" ["with-hsc2hs"] (reqPathArg WithHsc2hs) hunk ./Distribution/Setup.hs 258 - Option "" ["with-c2hs"] (ReqArg WithC2hs "PATH") + Option "" ["with-c2hs"] (reqPathArg WithC2hs) hunk ./Distribution/Setup.hs 260 - Option "" ["with-cpphs"] (ReqArg WithCpphs "PATH") + Option "" ["with-cpphs"] (reqPathArg WithCpphs) hunk ./Distribution/Setup.hs 262 - Option "" ["with-greencard"] (ReqArg WithGreencard "PATH") + Option "" ["with-greencard"] (reqPathArg WithGreencard) hunk ./Distribution/Setup.hs 280 +reqPathArg :: (FilePath -> a) -> ArgDescr a +reqPathArg constr = ReqArg (constr . platformPath) "PATH" + +reqDirArg :: (FilePath -> a) -> ArgDescr a +reqDirArg constr = ReqArg (constr . platformPath) "DIR" + hunk ./Distribution/Setup.hs 366 - Option "" ["install-prefix"] (ReqArg InstPrefix "DIR") + Option "" ["install-prefix"] (reqDirArg InstPrefix) hunk ./Distribution/Setup.hs 382 - Option "" ["copy-prefix"] (ReqArg InstPrefix "DIR") + Option "" ["copy-prefix"] (reqDirArg InstPrefix) hunk ./Distribution/Simple/Build.hs 71 -import Control.Monad (unless, when) +import Control.Monad (unless, when, filterM) hunk ./Distribution/Simple/Build.hs 81 - splitFileExt, joinFileExt, - searchPathSeparator, objExtension, joinPaths, splitFileName) + splitFileExt, joinFileExt, objExtension, + searchPathSeparator, joinPaths, + splitFileName, platformPath) hunk ./Distribution/Simple/Build.hs 288 - compileFFI bi destMainFile + compileFiles bi [destMainFile] hunk ./Distribution/Simple/Build.hs 311 - mapM_ (compileFFI bi) (concat stubsFileLists) + compileFiles bi (concat stubsFileLists) hunk ./Distribution/Simple/Build.hs 327 - compileFFI :: BuildInfo -> FilePath -> IO () - compileFFI bi file = do - -- Only compile FFI stubs for a file if it contains some FFI stuff - inp <- readHaskellFile file - when ("foreign" `elem` symbols (stripComments False inp)) $ do + compileFiles :: BuildInfo -> [FilePath] -> IO () + compileFiles bi fileList = do + ffiFileList <- filterM testFFI fileList + unless (null ffiFileList) $ do hunk ./Distribution/Simple/Build.hs 332 - (_, opts, file_incs) <- getOptionsFromSource file - let ghcOpts = hcOptions GHC opts - let pkg_incs = ["\"" ++ inc ++ "\"" | inc <- includes bi] - let incs = uniq (sort (file_incs ++ includeOpts ghcOpts ++ pkg_incs)) - let pathFlag = "-P" ++ buildDir lbi ++ [searchPathSeparator] - let hugsArgs = "-98" : pathFlag : map ("-i" ++) incs - cfiles <- getCFiles file - let cArgs = - ["-I" ++ dir | dir <- includeDirs bi] ++ - ccOptions bi ++ - cfiles ++ - ["-L" ++ dir | dir <- extraLibDirs bi] ++ - ldOptions bi ++ - ["-l" ++ lib | lib <- extraLibs bi] ++ - concat [["-framework", f] | f <- frameworks bi] - rawSystemExit verbose ffihugs (hugsArgs ++ file : cArgs) + mapM_ (compileFFI bi) ffiFileList + + -- Only compile FFI stubs for a file if it contains some FFI stuff + testFFI :: FilePath -> IO Bool + testFFI file = do + inp <- readHaskellFile file + return ("foreign" `elem` symbols (stripComments False inp)) + + compileFFI :: BuildInfo -> FilePath -> IO () + compileFFI bi file = do + (_, opts, file_incs) <- getOptionsFromSource file + let ghcOpts = hcOptions GHC opts + let pkg_incs = ["\"" ++ inc ++ "\"" | inc <- includes bi] + let incs = uniq (sort (file_incs ++ includeOpts ghcOpts ++ pkg_incs)) + let pathFlag = "-P" ++ buildDir lbi ++ [searchPathSeparator] + let hugsArgs = "-98" : pathFlag : map ("-i" ++) incs + cfiles <- getCFiles file + let cArgs = + ["-I" ++ dir | dir <- includeDirs bi] ++ + ccOptions bi ++ + cfiles ++ + ["-L" ++ dir | dir <- extraLibDirs bi] ++ + ldOptions bi ++ + ["-l" ++ lib | lib <- extraLibs bi] ++ + concat [["-framework", f] | f <- frameworks bi] + rawSystemExit verbose ffihugs (hugsArgs ++ file : cArgs) hunk ./Distribution/Simple/Build.hs 370 - return [cfile | + return [platformPath cfile | hunk ./Distribution/Simple/Build.hs 448 + stripCommentsLevel 0 ('"':cs) = '"':copyString cs hunk ./Distribution/Simple/Build.hs 458 + + copyString ('\\':c:cs) = '\\' : c : copyString cs + copyString ('"':cs) = '"' : stripCommentsLevel 0 cs + copyString (c:cs) = c : copyString cs + copyString [] = [] hunk ./Distribution/Simple/Configure.hs 95 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Simple/Configure.hs 248 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS +# if __HUGS__ +system_default_prefix = + return "C:\\Program Files" +# else hunk ./Distribution/Simple/Configure.hs 261 -foreign import stdcall unsafe "SHGetFolderPathW" +foreign import stdcall unsafe "shlobj.h SHGetFolderPathA" hunk ./Distribution/Simple/Configure.hs 268 +# endif hunk ./Distribution/Simple/Install.hs 184 -#ifndef mingw32_TARGET_OS +#if !(mingw32_HOST_OS || mingw32_TARGET_OS) hunk ./Distribution/Simple/Install.hs 233 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Simple/Install.hs 242 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Simple/Register.hs 99 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Simple/Register.hs 106 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Simple/Register.hs 156 -#ifndef mingw32_TARGET_OS +#if !(mingw32_HOST_OS || mingw32_TARGET_OS) hunk ./Distribution/Simple/Register.hs 163 -#ifndef mingw32_TARGET_OS +#if !(mingw32_HOST_OS || mingw32_TARGET_OS) hunk ./Distribution/Simple/Register.hs 299 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Simple/Register.hs 317 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Simple/Utils.hs 89 -#if (__GLASGOW_HASKELL__ || __HUGS__) && !defined(mingw32_TARGET_OS) +#if (__GLASGOW_HASKELL__ || __HUGS__) && !(mingw32_HOST_OS || mingw32_TARGET_OS) hunk ./Distribution/Simple/Utils.hs 294 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Simple/Utils.hs 389 -#ifdef mingw32_TARGET_OS +#if mingw32_HOST_OS || mingw32_TARGET_OS hunk ./Distribution/Simple.hs 438 -buildDirOpt = Option "b" ["builddir"] (ReqArg setBuildDir "DIR") +buildDirOpt = Option "b" ["scratchdir"] (reqDirArg setBuildDir) hunk ./doc/Cabal.xml 291 - Module names may correspond to Haskell source files, i.e. - with names ending in .hs - or .lhs, or to inputs for - various Haskell preprocessors. The simple build infrastructure - understands + Modules and preprocessors + Haskell module names listed in the + exposed-modules and + other-modules fields may + correspond to Haskell source files, i.e. with names + ending in .hs or + .lhs, or to inputs for + various Haskell preprocessors. + The simple build infrastructure understands the extensions hunk ./doc/Cabal.xml 308 - In such cases the appropriate preprocessor will be run - automatically as required. + When building, Cabal will automatically run the appropriate + preprocessor and compile the Haskell module it produces. hunk ./doc/Cabal.xml 941 - - Preprocessors - Cabal will automatically handle certain preprocessors - including GreenCard, hsc2hs, happy, and alex. To use these - preprocessors, just specify the module name (without any - extension) in the exposed-modules or - extra-modules fields. No further steps are - required. Cabal will look for modules with extensions - corresponding to the preprocessors it knows about (".y" for - Happy files, ".gc" for GreenCard files, etc.), run the - appropriate preprocessor on those files, then compile the - output. - - hunk ./doc/Cabal.xml 1262 - =dir or + =dir or hunk ./tests/ModuleTest.hs 156 + assertClean + assertConfigure targetDir hunk ./tests/ModuleTest.hs 398 - = assertCmd' compCmd ("configure --prefix=" ++ pref ++ " " ++ compFlag) + = assertCmd' compCmd ("configure --user --prefix=" ++ pref ++ " " ++ compFlag) hunk ./Distribution/Setup.hs 111 - configUser :: Bool -- ^--user flag? + configUser :: Bool, -- ^--user flag? + configGHCiLib :: Bool -- ^Enable compiling library for GHCi hunk ./Distribution/Setup.hs 132 - configUser = False + configUser = False, + configGHCiLib = True hunk ./Distribution/Setup.hs 144 + | WithGHCiLib | WithoutGHCiLib hunk ./Distribution/Setup.hs 275 + Option "" ["enable-library-for-ghci"] (NoArg WithGHCiLib) + "compile library for use with GHCi", + Option "" ["disable-library-for-ghci"] (NoArg WithoutGHCiLib) + "do not compile libraries for GHCi", hunk ./Distribution/Setup.hs 312 + updateCfg t WithGHCiLib = t { configGHCiLib = True } + updateCfg t WithoutGHCiLib = t { configGHCiLib = False } hunk ./Distribution/Simple/Build.hs 62 - mkLibName, mkProfLibName, dotToSep, + mkLibName, mkProfLibName, mkGHCiLibName, dotToSep, hunk ./Distribution/Simple/Build.hs 135 + ifGHCiLib = when (withGHCiLib lbi) hunk ./Distribution/Simple/Build.hs 190 + ghciLibName = mkGHCiLibName pref (showPackageId (package pkg_descr)) hunk ./Distribution/Simple/Build.hs 198 + try (removeFile ghciLibName) -- first remove library if it exists hunk ./Distribution/Simple/Build.hs 207 + ldArgs = ["-r"] + ++ ["-x"] -- FIXME: only some systems's ld support the "-x" flag + ++ ["-o", ghciLibName] + ++ [pref `joinFileName` x | x <- hObjs ++ cObjs] + ++ stubObjs hunk ./Distribution/Simple/Build.hs 214 + ifGHCiLib (rawSystemPathExit verbose "ld" ldArgs) hunk ./Distribution/Simple/Configure.hs 178 - withProfExe=configProfExe cfg + withProfExe=configProfExe cfg, + withGHCiLib=configGHCiLib cfg hunk ./Distribution/Simple/Install.hs 70 - mkProfLibName, die, rawSystemVerbose) + mkProfLibName, mkGHCiLibName, die, rawSystemVerbose) hunk ./Distribution/Simple/Install.hs 98 - GHC -> do when (hasLibs pkg_descr) (installLibGHC verbose (withProfLib lbi) libPref buildPref pkg_descr) + GHC -> do when (hasLibs pkg_descr) (installLibGHC verbose (withProfLib lbi) (withGHCiLib lbi) libPref buildPref pkg_descr) hunk ./Distribution/Simple/Install.hs 116 --- |Install for ghc, .hi and .a +-- |Install for ghc, .hi, .a and, if --with-ghci given, .o hunk ./Distribution/Simple/Install.hs 119 + -> Bool -- ^has GHCi libs hunk ./Distribution/Simple/Install.hs 123 -installLibGHC verbose hasProf pref buildPref pd@PackageDescription{library=Just l, +installLibGHC verbose hasProf hasGHCi pref buildPref pd@PackageDescription{library=Just l, hunk ./Distribution/Simple/Install.hs 131 + ifGHCi $ copyFileVerbose verbose (mkGHCiLibName buildPref (showPackageId p)) libTargetLoc hunk ./Distribution/Simple/Install.hs 148 -installLibGHC _ _ _ _ PackageDescription{library=Nothing} + ifGHCi action = when hasGHCi (action >> return ()) +installLibGHC _ _ _ _ _ PackageDescription{library=Nothing} hunk ./Distribution/Simple/LocalBuildInfo.hs 72 - withProfExe :: Bool + withProfExe :: Bool, + withGHCiLib :: Bool hunk ./Distribution/Simple/Register.hs 170 - let allFlags = "--auto-ghci-libs": - (register_flags - ++ config_flags) + let allFlags = register_flags + ++ config_flags hunk ./Distribution/Simple/Utils.hs 59 + mkGHCiLibName, hunk ./Distribution/Simple/Utils.hs 276 + +mkGHCiLibName :: FilePath -- ^file Prefix + -> String -- ^library name. + -> String +mkGHCiLibName pref lib = pref `joinFileName` ("HS" ++ lib ++ ".o") hunk ./Distribution/Simple/Install.hs 129 + libGHCiTargetLoc = mkGHCiLibName pref (showPackageId p) hunk ./Distribution/Simple/Install.hs 132 - ifGHCi $ copyFileVerbose verbose (mkGHCiLibName buildPref (showPackageId p)) libTargetLoc + ifGHCi $ copyFileVerbose verbose (mkGHCiLibName buildPref (showPackageId p)) libGHCiTargetLoc hunk ./TODO 4 +* add flags The patch adds a couple extra configure options, + --enable-library-for-ghci / --disable-library-for-ghci or whatever + they end up being, to the manual. + hunk ./Distribution/Simple/Build.hs 214 - ifGHCiLib (rawSystemPathExit verbose "ld" ldArgs) +#if defined(mingw32_TARGET_OS) || defined(mingw32_HOST_OS) + let (compilerDir, _) = splitFileName $ compilerPath (compiler lbi) + (baseDir, _) = splitFileName compilerDir + ld = baseDir `joinFileName` "gcc-lib\\ld.exe" + ifGHCiLib (rawSystemExit verbose ld ldArgs) +#else + ifGHCiLib (rawSystemPathExit verbose "ld" ldArgs) +#endif hunk ./TODO 4 +For the release notes: +Cabal 1.1.1 cannot read Cabal 1.0's .setup-config files. Users will +need to re-run the configure command for all their projects after +upgrading from Cabal 1.0. Otherwise, they will get: +C:\software\cabal>runghc Setup.lhs build +Setup.lhs: error reading ./.setup-config; run "setup configure" command? + +It is not clear how to build an executable whose Main module is +preprocessed. The following does not work: +Executable: Foo +Main-is: Main.hsc + +Cabal does not handle dependencies for HSC2HS correctly. For example, +if Foo.hsc has + #include "x.h" +then Foo.hs should get regenerated whenever x.h is modified. However, +Cabal only regenerates Foo.hs when Foo.hsc has been modified. Please +let me know if you want a complete testcase. + +- Brian + + hunk ./TODO 28 - they end up being, to the manual. + they end up being, to the manual. Which is default? Add test case + for this. hunk ./TODO 36 -* MOVED FOR DARCS BUT NOT CVS. Move Distribution and everything +* Move Distribution and everything hunk ./TODO 38 - invocation of cabal. + invocation of cabal? hunk ./TODO 40 -* add a haskell-version field? +* add a cabal-version field? hunk ./Distribution/Simple/Install.hs 188 -#if !(mingw32_HOST_OS || mingw32_TARGET_OS) - -- FIX (HUGS): works for Unix only - let targetName = targetDir `joinFileName` hugsMainFilename exe - let exeFile = binPref `joinFileName` exeName exe + let targetName = "\"" ++ (targetDir `joinFileName` hugsMainFilename exe) ++ "\"" hunk ./Distribution/Simple/Install.hs 191 +#if mingw32_HOST_OS || mingw32_TARGET_OS + let exeFile = binPref `joinFileName` exeName exe `joinFileExt` "bat" hunk ./Distribution/Simple/Install.hs 194 - "#! /bin/sh", + "@echo off", + unwords ("runhugs" : hugsOptions ++ [targetName, "%*"])] +#else + let exeFile = binPref `joinFileName` exeName exe + let script = unlines [ + "#! /bin/sh", hunk ./Distribution/Simple/Install.hs 201 +#endif hunk ./Distribution/Simple/Install.hs 205 -#endif hunk ./Distribution/Simple/Utils.hs 216 - [] -> die (locPath ++ " doesn't exists") + [] -> die (locPath ++ " doesn't exist") hunk ./Distribution/Simple/Build.hs 284 + ++ ["-i"] hunk ./package.conf.in 46 - "shell32" + "shfolder" hunk ./TODO 45 +* new field data-files, a list of files to be copied to a place where +>> > an executable can find them (e.g. template-hsc.h for hsc2hs): +>> > Hugs: the directory containing the Main module +>> > GHC/Windows: the directory containing the executable +>> > GHC/Unix: /usr/local/share/ +>> > plus a new function in System.Directory to return the name of this +>> > directory. That would address Dimitry's requirements in +>> +>> How about allowing directories too, which would be copied recursively? + +Also, if we do this, we should probably specify the manner in which +such a directory should be layed out so: + +1) it doesn't get too cluttered +2) different packages don't stomp on each-other's files and +3) different versions of different packages can use the same filenames. + +dataFileDir :: Distribution.Package.PackageIdentifier -> FilePath +dataFileDir ident = dataFileDirRoot `joinFilePath` (showPackageId ident) + +which I like better, but that strongly couples "dataFileDir" to the +Cabal package in that you need to have a PackageIdentifier. How do +you get that PackageIdentifier? Well, your program will have to parse +your .cabal file. No problem! (if you have one) + +* New field extra-tmp-files, a list of extra files to be removed by + setup clean, beyond those that can be deduced. + +* Rename other-files as extra-source-files for consistency and clarity. hunk ./TODO 88 +But really, there are two kinds of preprocessors, as Ross points out. +The kind that produce OS-independent code, and the kind that produce +OS-dependent code. Perhaps this concept shoudl be added to the +PreProcessor type, and a we could have two flags to sdist: + +--include-standalone-preprocessed-sources + +Which would generate the OS-independent sources from tools like Alex +and Happy... + +--include-all-preprocessed-sources + +Which just includes all of the preprocessed sources as above. + +A downside to this is in how it interacts with another proposal to add +tool dependencies. If a package tool-depends on "alex", and then a +source tarball is created with +--include-standalone-preprocessed-sources, then it actually no longer +tool-depends on alex, so we should regenerate the .cabal file. I +guess that's no big deal. + hunk ./Distribution/Simple/Build.hs 194 + stubProfObjs <- sequence [moduleToFilePath [libTargetDir] (x ++"_stub") ["p_" ++ objExtension] + | x <- libModules pkg_descr ] >>= return . concat hunk ./Distribution/Simple/Build.hs 208 - ++ stubObjs + ++ stubProfObjs hunk ./Distribution/Simple/Build.hs 227 - putStrLn $ "hsSourceDirs: " ++ (show (hsSourceDirs exeBi)) hunk ./Distribution/PackageDescription.hs 137 - otherFiles :: [FilePath] + extraSrcFiles :: [FilePath], + extraTmpFiles :: [FilePath] hunk ./Distribution/PackageDescription.hs 169 - otherFiles = [] + extraSrcFiles = [], + extraTmpFiles = [] hunk ./Distribution/PackageDescription.hs 376 - , listField "other-files" showFilePath parseFilePathQ - otherFiles (\val pkg -> pkg{otherFiles=val}) + , listField "extra-source-files" showFilePath parseFilePathQ + extraSrcFiles (\val pkg -> pkg{extraSrcFiles=val}) + , listField "extra-tmp-files" showFilePath parseFilePathQ + extraTmpFiles (\val pkg -> pkg{extraTmpFiles=val}) hunk ./Distribution/PackageDescription.hs 689 - "Other-Files: file1, file2", + "Extra-Source-Files: file1, file2", hunk ./Distribution/PackageDescription.hs 727 - otherFiles=["file1", "file2"], + extraSrcFiles=["file1", "file2"], hunk ./Distribution/Simple/SrcDist.hs 106 - flip mapM_ (otherFiles pkg_descr) $ \ fpath -> do + flip mapM_ (extraSrcFiles pkg_descr) $ \ fpath -> do hunk ./Distribution/Simple.hs 92 -import System.Directory(removeFile, doesFileExist) +import System.Directory(removeFile, doesFileExist, doesDirectoryExist) hunk ./Distribution/Simple.hs 414 + mapM_ removeFileOrDirectory (extraTmpFiles pkg_descr) hunk ./Distribution/Simple.hs 432 + removeFileOrDirectory :: FilePath -> IO () + removeFileOrDirectory fname = do + isDir <- doesDirectoryExist fname + isFile <- doesFileExist fname + if isDir then removeDirectoryRecursive fname + else if isFile then removeFile fname + else return () hunk ./doc/Cabal.xml 505 - other-files: + extra-source-files: hunk ./doc/Cabal.xml 514 + + + + extra-tmp-files: + filename list + + + A list of additional files or directories to be + removed by setup clean + (see ). + These would typically be additional files created by + additional hooks, such as the scheme described in + . + + hunk ./doc/Cabal.xml 951 - so on in the other-files field, to ensure - that they are included in source distributions. + so on in the extra-source-files field, + to ensure that they are included in source distributions. + They should also list files and directories generated by + configure in the + extra-tmp-files field to ensure that they + are removed by setup clean. hunk ./doc/Cabal.xml 1438 - + hunk ./doc/Cabal.xml 1443 - unregister steps. + unregister steps, and also any files and + directories listed in the extra-tmp-files + field. hunk ./doc/Cabal.xml 1472 - c-sources and other-files + c-sources and extra-source-files hunk ./Distribution/PackageDescription.hs 689 - "Extra-Source-Files: file1, file2", + "Other-files: file1, file2", + "Extra-Tmp-Files: file1, file2", hunk ./Distribution/PackageDescription.hs 728 - extraSrcFiles=["file1", "file2"], hunk ./Distribution/PackageDescription.hs 735 + extraTmpFiles=["file1", "file2"], + extraSrcFiles=["file1", "file2"], hunk ./Distribution/ParseUtils.hs 200 + | fld'' == "other-files" + = trace "The field \"other-files\" is deprecated, please use extra-source-files." "extra-source-files" hunk ./Distribution/Simple/Build.hs 168 + -- FIX: similar 'versionBranch' logic duplicated below. refactor for code sharing hunk ./Distribution/Simple/Build.hs 239 - sequence_ [do let cSrcODir = exeDir `joinFileName` (fst $ splitFileName c) + sequence_ [do let cSrcODir |versionBranch (compilerVersion (compiler lbi)) + >= [6,4,1] = exeDir + | otherwise + = exeDir `joinFileName` (dirOf c) hunk ./TODO 25 +* Clarify build-depends; unix? posix? utils? see journal entry of aug + 22, 2005. hunk ./TODO 28 -* add flags The patch adds a couple extra configure options, +* REMOVE THESE FLAGS: add flags The patch adds a couple extra configure options, hunk ./Distribution/Simple.hs 8 --- Portability : GHC +-- Portability : portable hunk ./Distribution/Simple.hs 88 +#if mingw32_HOST_OS || mingw32_TARGET_OS +import Distribution.Simple.Utils (rawSystemPath) +#endif hunk ./Distribution/Simple.hs 512 - = do let prefix_opt pref opts = - ("--prefix=" ++ pref) : opts + = do let verbose = configVerbose flags + args' = addOption "prefix" (configPrefix flags) args hunk ./Distribution/Simple.hs 515 - if confExists then do - rawSystemVerbose (configVerbose flags) "sh" - ("configure" : maybe id prefix_opt (configPrefix flags) args) - return () - else - no_extra_flags args - return ExitSuccess + if confExists then +#if mingw32_HOST_OS || mingw32_TARGET_OS + -- FIXME: hack for script files under MinGW + -- This assumes sh (check for #! line?) + rawSystemPath verbose "sh" ("configure" : args') +#else + rawSystemVerbose verbose "./configure" args' +#endif + else do + no_extra_flags args + return ExitSuccess + + addOption :: String -> Maybe String -> [String] -> [String] + addOption _flag Nothing opts = opts + addOption flag (Just value) opts = + ("--" ++ flag ++ "=" ++ value) : opts hunk ./Distribution/Compat/ReadP.hs 9 --- Portability : non-portable (local universal quantification) +-- Portability : portable hunk ./Distribution/Make.hs 8 --- Portability : GHC +-- Portability : portable hunk ./Distribution/PackageDescription.hs 8 --- Portability : +-- Portability : portable hunk ./Distribution/PreProcess/Unlit.hs 8 --- Portability : All +-- Portability : portable hunk ./Distribution/PreProcess.hs 7 --- Portability : GHC, Hugs +-- Portability : portable hunk ./Distribution/Setup.hs 8 --- Portability : GHC, Hugs +-- Portability : portable hunk ./Distribution/Simple/Build.hs 8 --- Portability : +-- Portability : portable hunk ./Distribution/Simple/Configure.hs 10 --- Portability : GHC +-- Portability : portable hunk ./Distribution/Simple/Install.hs 8 --- Portability : GHC +-- Portability : portable hunk ./Distribution/Simple/LocalBuildInfo.hs 8 --- Portability : GHC +-- Portability : portable hunk ./Distribution/Simple/Register.hs 8 --- Portability : GHC, Hugs +-- Portability : portable hunk ./Distribution/Simple/SrcDist.hs 8 --- Portability : +-- Portability : portable hunk ./Distribution/Simple/Utils.hs 9 --- Portability : GHC +-- Portability : portable hunk ./Distribution/Version.hs 9 --- Portability : GHC +-- Portability : portable hunk ./Distribution/Simple/SrcDist.hs 127 + let tarBallFilePath = targetPref `joinFileName` tarBallName pkg_descr hunk ./Distribution/Simple/SrcDist.hs 130 - ++ (targetPref `joinFileName` (tarBallName pkg_descr)) + ++ tarBallFilePath hunk ./Distribution/Simple/SrcDist.hs 132 - putStrLn "Source tarball created." + putStrLn $ "Source tarball created: " ++ tarBallFilePath hunk ./Distribution/Simple/SrcDist.hs 171 -tarBallName p = (nameVersion p) ++ ".tgz" +tarBallName p = (nameVersion p) ++ ".tar.gz" hunk ./Distribution/PreProcess.hs 253 +hcDefines Compiler { compilerFlavor=GHC, compilerVersion=version } + = ["-D__GLASGOW_HASKELL__=" ++ versionInt version] hunk ./TODO 28 +* look at "cabal design + hunk ./Distribution/PreProcess.hs 249 +hcDefines Compiler { compilerFlavor=GHC, compilerVersion=version } + = ["-D__GLASGOW_HASKELL__=" ++ versionInt version] hunk ./Distribution/PreProcess.hs 255 -hcDefines Compiler { compilerFlavor=GHC, compilerVersion=version } - = ["-D__GLASGOW_HASKELL__=" ++ versionInt version] hunk ./Distribution/Simple/Build.hs 292 - ++ nub (flags ++ hcOptions GHC (options bi)) + ++ (flags ++ hcOptions GHC (options bi)) hunk ./Distribution/Simple.hs 129 + -- |Over-ride this hook to get different behavior during configure. + confHook :: PackageDescription -> ConfigFlags -> IO LocalBuildInfo, hunk ./Distribution/Simple.hs 136 + + -- |Over-ride this hook to get different behavior during build. + buildHook :: PackageDescription + -> LocalBuildInfo + -> Int -- verbose + -> [ PPSuffixHandler ] + -> IO (), hunk ./Distribution/Simple.hs 148 + -- |Over-ride this hook to get different behavior during clean. + cleanHook :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO (), hunk ./Distribution/Simple.hs 155 + -- |Over-ride this hook to get different behavior during copy. + copyHook :: PackageDescription + -> LocalBuildInfo + -> (Maybe FilePath,Int) -- ^install-prefix, verbose + -> IO (), hunk ./Distribution/Simple.hs 165 + + -- |Over-ride this hook to get different behavior during install. + instHook :: PackageDescription + -> LocalBuildInfo + -> Int -- verbose + -> Bool -- user install? + -> IO (), hunk ./Distribution/Simple.hs 178 + -- |Over-ride this hook to get different behavior during sdist. + sDistHook :: FilePath -- ^build prefix (temp dir) + -> FilePath -- ^TargetPrefix + -> Int -- ^verbose + -> Bool -- ^snapshot + -> [PPSuffixHandler] -- ^ extra preprocessors (includes suffixes) + -> PackageDescription + -> IO (), hunk ./Distribution/Simple.hs 191 + -- |Over-ride this hook to get different behavior during pfe. + regHook :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO (), hunk ./Distribution/Simple.hs 198 + -- |Over-ride this hook to get different behavior during pfe. + unregHook :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO (), hunk ./Distribution/Simple.hs 206 + -- |Over-ride this hook to get different behavior during haddock. + haddockHook :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO (), hunk ./Distribution/Simple.hs 212 + -- |Over-ride this hook to get different behavior during pfe. + pfeHook :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO (), hunk ./Distribution/Simple.hs 267 - localbuildinfo <- configure pkg_descr flags + + let c = maybe (confHook defaultUserHooks) confHook hooks + localbuildinfo <- c pkg_descr flags + hunk ./Distribution/Simple.hs 278 - build pkg_descr localbuildinfo flags pps - when (hasLibs pkg_descr) $ - writeInstalledConfig pkg_descr localbuildinfo + + let bld = cmdHook buildHook + bld pkg_descr localbuildinfo flags pps + hunk ./Distribution/Simple.hs 288 - haddock pkg_descr localbuildinfo verbose pps + + let hdk = cmdHook haddockHook + hdk pkg_descr localbuildinfo verbose pps + hunk ./Distribution/Simple.hs 298 - pfe pkg_descr localbuildinfo verbose pps + + let p = cmdHook pfeHook + p pkg_descr localbuildinfo verbose pps + hunk ./Distribution/Simple.hs 308 - clean pkg_descr localbuildinfo verbose pps + + let c = cmdHook cleanHook + c pkg_descr localbuildinfo verbose pps + hunk ./Distribution/Simple.hs 318 - install pkg_descr localbuildinfo flags + + let c = maybe (copyHook defaultUserHooks) copyHook hooks + c pkg_descr localbuildinfo flags + hunk ./Distribution/Simple.hs 328 - install pkg_descr localbuildinfo (Nothing, verbose) - when (hasLibs pkg_descr) - (register pkg_descr localbuildinfo (uInst, False, verbose)) + + let inst = cmdHook instHook + inst pkg_descr localbuildinfo verbose uInst + hunk ./Distribution/Simple.hs 339 - sdist srcPref distPref verbose snapshot pps pkg_descr + + let sd = maybe (sDistHook defaultUserHooks) sDistHook hooks + sd srcPref distPref verbose snapshot pps pkg_descr + hunk ./Distribution/Simple.hs 358 - if hasLibs pkg_descr - then register pkg_descr localbuildinfo flags - else die "Package contains no library to register" + + let r = maybe (regHook defaultUserHooks) regHook hooks + r pkg_descr localbuildinfo flags + hunk ./Distribution/Simple.hs 368 - unregister pkg_descr localbuildinfo flags + + let ur = maybe (unregHook defaultUserHooks) unregHook hooks + ur pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 384 + cmdHook f = maybe (f defaultUserHooks) f hooks hunk ./Distribution/Simple.hs 389 + hunk ./Distribution/Simple.hs 526 + confHook = (\_ _ -> return (error "No local build info generated during configure. Over-ride empty configure hook.")), hunk ./Distribution/Simple.hs 529 + buildHook = ru, hunk ./Distribution/Simple.hs 532 + cleanHook = ru, hunk ./Distribution/Simple.hs 535 + copyHook = (\_ _ _ -> return ()), hunk ./Distribution/Simple.hs 538 + instHook = ru, hunk ./Distribution/Simple.hs 541 + sDistHook = (\_ _ _ _ _ _ -> return ()), hunk ./Distribution/Simple.hs 544 + regHook = (\_ _ _ -> return ()), hunk ./Distribution/Simple.hs 547 + unregHook = (\_ _ _ -> return ()), hunk ./Distribution/Simple.hs 550 + pfeHook = ru, hunk ./Distribution/Simple.hs 553 + haddockHook = ru, hunk ./Distribution/Simple.hs 556 - where rn _ _ = return emptyHookedBuildInfo - res _ _ _ = return ExitSuccess + where rn _ _ = return emptyHookedBuildInfo + res _ _ _ = return ExitSuccess + ru _ _ _ _ = return () hunk ./Distribution/Simple.hs 578 + confHook = configure, hunk ./Distribution/Simple.hs 580 + buildHook = defaultBuildHook, hunk ./Distribution/Simple.hs 583 + copyHook = install, -- has correct 'copy' behavior with params hunk ./Distribution/Simple.hs 585 + instHook = defaultInstallHook, + sDistHook = sdist, + pfeHook = pfe, + cleanHook = clean, + haddockHook = haddock, hunk ./Distribution/Simple.hs 591 + regHook = defaultRegHook, + unregHook = unregister, hunk ./Distribution/Simple.hs 627 - hunk ./Distribution/Simple.hs 628 + +defaultInstallHook pkg_descr localbuildinfo verbose uInst = do + install pkg_descr localbuildinfo (Nothing, verbose) + when (hasLibs pkg_descr) + (register pkg_descr localbuildinfo (uInst, False, verbose)) + +defaultBuildHook pkg_descr localbuildinfo flags pps = do + build pkg_descr localbuildinfo flags pps + when (hasLibs pkg_descr) $ + writeInstalledConfig pkg_descr localbuildinfo + +defaultRegHook pkg_descr localbuildinfo flags = + if hasLibs pkg_descr + then register pkg_descr localbuildinfo flags + else die "Package contains no library to register" hunk ./tests/ModuleTest.hs 356 - assertCopy + assertCmd' compCmd "copy --copy-prefix=,tmp" "copy w/ prefix" + doesFileExist ",tmp/withHooks" >>= -- this file is added w/ the hook. + assertBool "hooked copy, redirecting prefix didn't work." hunk ./tests/withHooks/Setup.lhs 6 -> import Distribution.PackageDescription (readPackageDescription, readHookedBuildInfo) +> import Distribution.PackageDescription (PackageDescription, +> readPackageDescription, readHookedBuildInfo) +> import Distribution.Simple.Configure(LocalBuildInfo(..)) hunk ./tests/withHooks/Setup.lhs 10 +> import Distribution.Compat.FilePath(joinPaths) hunk ./tests/withHooks/Setup.lhs 12 -> import System.Directory (removeFile) +> import System.Directory (removeFile, createDirectoryIfMissing) hunk ./tests/withHooks/Setup.lhs 46 +> myCopyHook :: PackageDescription +> -> LocalBuildInfo +> -> (Maybe FilePath,Int) -- ^install-prefix, verbose +> -> IO () +> myCopyHook a b c@((Just p), _) = do +> createDirectoryIfMissing True p +> copyFile (foldl1 joinPaths ["dist", "build", "withHooks", "withHooks"]) +> (p `joinPaths` "withHooks") +> -- now call the default copy hook so the rest of the test case works nice ... so tricky ;) +> (copyHook defaultUserHooks) a b c + hunk ./tests/withHooks/Setup.lhs 65 -> postClean=(\_ _ _ -> removeFile "Setup.buildinfo" >> return ExitSuccess) +> postClean=(\_ _ _ -> removeFile "Setup.buildinfo" >> return ExitSuccess), +> copyHook=myCopyHook hunk ./doc/Cabal.xml 1463 - package-version.tgz + package-version.tar.gz hunk ./Distribution/Simple/Configure.hs 230 - let user_flag = if user then " --user" else " --global" - cmd_line = compilerPkgTool comp ++ user_flag ++ " list >" ++ tmp + let user_flag = if user then "--user" else "--global" + cmd_line = "\"" ++ compilerPkgTool comp ++ "\" " ++ user_flag ++ " list >" ++ tmp hunk ./Distribution/Simple/Configure.hs 338 - let cmd_line = compilerP ++ " --version >" ++ tmp + let cmd_line = "\"" ++ compilerP ++ "\" --version >" ++ tmp hunk ./Cabal.cabal 2 -Version: 1.1.2 +Version: 1.1.3 hunk ./GNUmakefile 1 -CABALVERSION=1.1.2 +CABALVERSION=1.1.3 hunk ./README 12 -then try "ghci -package Cabal" to - test it. If you get an error about multiple versions of Cabal, read - the section below "Working with older versions of Cabal" You were - supposed to read this first. + then try "ghci -package Cabal" to test it. If you get an error + about multiple versions of Cabal, read the section below "Working + with older versions of Cabal" You were supposed to read this first. + +* The cabal should build just like any other Cabal-ized package. If + you're using windows or have another means of building cabal + packages, you might want to ignore the GNUmakefile + altogether. hunk ./README 52 - ghc-6.4: Error; multiple packages match Cabal: Cabal-1.0, Cabal-1.0.1 - $ ghci -package Cabal-1.0.1 + ghc-6.4: Error; multiple packages match Cabal: Cabal-1.0, Cabal-1.1.3 + $ ghci -package Cabal-1.1.3 hunk ./changelog 3 +1.1.3 Isaac Jones Sept 2005 + * WARNING: Interfaces not documented in the user's guide may + change in future releases. + * Move building of GHCi .o libs to the build phase rather than + register phase. (from Duncan Coutts) + * Use .tar.gz for source package extension + * Uses GHC instead of cpphs if the latter is not available + * Added experimental "command hooks" which completely override the + default behavior of a command. + * Some bugfixes hunk ./Distribution/Simple.hs 158 - -> (Maybe FilePath,Int) -- ^install-prefix, verbose + -> (Maybe FilePath,Int) -- install-prefix, verbose hunk ./Distribution/Simple.hs 179 - sDistHook :: FilePath -- ^build prefix (temp dir) - -> FilePath -- ^TargetPrefix - -> Int -- ^verbose - -> Bool -- ^snapshot - -> [PPSuffixHandler] -- ^ extra preprocessors (includes suffixes) + sDistHook :: FilePath -- build prefix (temp dir) + -> FilePath -- TargetPrefix + -> Int -- verbose + -> Bool -- snapshot + -> [PPSuffixHandler] -- extra preprocessors (includes suffixes) hunk ./releaseNotes 12 -The Haskell Cabal has reached version 1.1.2. This pre-release has a -number of new features including a hook for testing, support for -profiling, and support for _stub files, as well as several bug fixes. +The Haskell Cabal has reached version 1.1.3. This pre-release has a +number of new features and bugfixes. hunk ./Cabal.cabal 2 -Version: 1.1.3 +Version: 1.1.4 hunk ./GNUmakefile 1 -CABALVERSION=1.1.3 +CABALVERSION=1.1.4 hunk ./Distribution/Simple/Build.hs 140 + when (verbose > 3) (putStrLn "Building library...") hunk ./Distribution/Simple/Build.hs 168 - unless (null (cSources libBi)) $ + unless (null (cSources libBi)) $ do + when (verbose > 3) (putStrLn "Building C Sources...") hunk ./Distribution/Simple/Build.hs 185 + when (verbose > 3) (putStrLn "cabal-linking...") hunk ./Distribution/Simple/Build.hs 231 + when (verbose > 3) + (putStrLn $ "Building executable: " ++ exeName' ++ "...") hunk ./Distribution/Simple/Build.hs 243 - unless (null (cSources exeBi)) $ + unless (null (cSources exeBi)) $ do + when (verbose > 3) (putStrLn "Building C Sources.") addfile ./Distribution/Program.hs hunk ./Cabal.cabal 27 + Distribution.Program, hunk ./Distribution/Program.hs 1 +module Distribution.Program( Program(..) + , ProgramLocation(..) + , ProgramConfiguration + , withProgramFlag + , programOptsFlag + , programOptsField + , defaultProgramConfiguration + , lookupProgram) where +{- + , ghcProgram + , ghcPkgProgram + , nhcProgram + , hugsProgram + , alexProgram + , hsc2hsProgram + , c2hsProgram + , cpphsProgram + , haddockProgram + , greencardProgram + , ldProgram + , cppProgram + , pfesetupProgram +-} + +import Data.List(find) +import Distribution.Compat.Directory(findExecutable) + +-- |Represents a program which cabal may call. +data Program + = Program { -- |The simple name of the program, eg ghc + programName :: String + -- |The name of this program's binary, eg ghc-6.4 + ,programBinName :: String + -- |Default command-line args for this program + ,programDefaultArgs :: [String] + -- |Location of the program. eg. /usr/bin/ghc-6.4 + ,programLocation :: ProgramLocation + } deriving (Read, Show) + +-- |Similar to Maybe, but tells us whether it's specifed by user or +-- not. +data ProgramLocation = EmptyLocation + | UserSpecified FilePath + | FoundOnSystem FilePath + deriving (Read, Show) +type ProgramConfiguration = [Program] + +defaultProgramConfiguration :: ProgramConfiguration +defaultProgramConfiguration = [ ghcProgram + , ghcPkgProgram + , nhcProgram + , hugsProgram + , alexProgram + , hsc2hsProgram + , c2hsProgram + , cpphsProgram + , haddockProgram + , greencardProgram + , ldProgram + , cppProgram + , pfesetupProgram + ] + +-- |The flag for giving a path to this program. eg --with-alex=/usr/bin/alex +withProgramFlag :: Program -> String +withProgramFlag Program{programName=n} = "with-" ++ n + +-- |The flag for giving args for this program. +-- eg --haddock-options=-s http://foo +programOptsFlag :: Program -> String +programOptsFlag Program{programName=n} = n ++ "-options" + +-- |The foo.cabal field for giving args for this program. +-- eg haddock-options: -s http://foo +programOptsField :: Program -> String +programOptsField = programOptsFlag + +-- ------------------------------------------------------------ +-- * cabal programs +-- ------------------------------------------------------------ + +ghcProgram :: Program +ghcProgram = simpleProgram "ghc" + +ghcPkgProgram :: Program +ghcPkgProgram = simpleProgram "ghc-pkg" + +nhcProgram :: Program +nhcProgram = simpleProgram "nhc" + +hugsProgram :: Program +hugsProgram = simpleProgram "hugs" + +alexProgram :: Program +alexProgram = simpleProgram "alex" + +hsc2hsProgram :: Program +hsc2hsProgram = simpleProgram "hsc2hs" + +c2hsProgram :: Program +c2hsProgram = simpleProgram "c2hs" + +cpphsProgram :: Program +cpphsProgram = simpleProgram "cpphs" + +haddockProgram :: Program +haddockProgram = simpleProgram "haddock" + +greencardProgram :: Program +greencardProgram = simpleProgram "greencard" + +ldProgram :: Program +ldProgram = simpleProgram "ld" + +cppProgram :: Program +cppProgram = simpleProgram "cpp" + +pfesetupProgram :: Program +pfesetupProgram = simpleProgram "pfesetup" + +-- ------------------------------------------------------------ +-- * helpers +-- ------------------------------------------------------------ + +-- |Looks up a program in the given configuration. If the user +-- provides a location, then we use that location in the returned +-- program. If no location is given then we check in the +-- configuration for a location. If there's none in the +-- configuration, then we use IO to look on the system. Do we want a +-- way to specify NOT to find it on the system (populate +-- programLocation). + +lookupProgram :: String -- simple name of program + -> ProgramConfiguration + -> ProgramLocation -- find location on system in PATH, if EmptyLocation + -> IO (Maybe Program) -- the full program +lookupProgram name conf inLoc = + case lookupProgram' name conf of + Nothing -> return Nothing + Just p@Program{ programLocation= configLoc + , programBinName = binName} + -> do newLoc <- case (inLoc, configLoc) of + (EmptyLocation, EmptyLocation) + -> do maybeLoc <- findExecutable binName + return $ maybe EmptyLocation FoundOnSystem maybeLoc + (EmptyLocation, a) -> return a + (a, _) -> return a + return $ Just p{programLocation=newLoc} + + +-- |Populate the "programLocation" field in this configuration. +{-lookupAllPrograms :: ProgramConfiguration + -> CommandLine? + -> IO ProgramConfiguration +lookupAllPrograms conf = mapM +-} +-- ------------------------------------------------------------ +-- * Internal helpers +-- ------------------------------------------------------------ + +-- Export? +lookupProgram' :: String -> ProgramConfiguration -> Maybe Program +lookupProgram' name = find (\(Program {programName=n}) -> n == name) + +simpleProgram :: String -> Program +simpleProgram s = Program s s [] EmptyLocation + hunk ./Distribution/Setup.hs 67 +import Distribution.Program(ProgramLocation(..), ProgramConfiguration, + defaultProgramConfiguration) hunk ./Distribution/Setup.hs 95 - deriving (Show, Eq) hunk ./Distribution/Setup.hs 98 + configPrograms :: ProgramConfiguration, -- ^All programs that cabal may run hunk ./Distribution/Setup.hs 102 - configHaddock :: Maybe FilePath, -- ^Haddock path + configHaddock :: ProgramLocation, -- ^Haddock path hunk ./Distribution/Setup.hs 116 - deriving (Show, Eq) hunk ./Distribution/Setup.hs 119 + configPrograms = defaultProgramConfiguration, hunk ./Distribution/Setup.hs 123 - configHaddock = Nothing, + configHaddock = EmptyLocation, hunk ./Distribution/Setup.hs 301 + updateCfg t (WithHaddock path) = t { configHaddock = UserSpecified path } hunk ./Distribution/Setup.hs 304 - updateCfg t (WithHaddock path) = t { configHaddock = Just path } hunk ./Distribution/Simple/Configure.hs 88 +import Distribution.Program(Program(..), ProgramLocation(..), lookupProgram) hunk ./Distribution/Simple/Configure.hs 145 - haddock <- findProgram "haddock" (configHaddock cfg) + haddock <- lookupProgram "haddock" (configPrograms cfg) (configHaddock cfg) hunk ./Distribution/Simple/Configure.hs 158 - reportProgram "haddock" haddock + reportProgram' "haddock" haddock hunk ./Distribution/Simple/Configure.hs 206 + +reportProgram' :: String -> Maybe Program -> IO () +reportProgram' _ (Just Program{ programName=name + , programLocation=EmptyLocation}) + = message ("No " ++ name ++ " found") +reportProgram' _ (Just Program{ programName=name + , programLocation=FoundOnSystem p}) + = message ("Using " ++ name ++ " found on system at: " ++ p) +reportProgram' _ (Just Program{ programName=name + , programLocation=UserSpecified p}) + = message ("Using " ++ name ++ " given by user at: " ++ p) +reportProgram' name Nothing = message ("No " ++ name ++ " found") hunk ./Distribution/Simple/LocalBuildInfo.hs 46 +import Distribution.Program (ProgramLocation, Program) hunk ./Distribution/Simple/LocalBuildInfo.hs 65 - withHaddock :: Maybe FilePath, -- ^Might be the location of the Haddock executable. + withHaddock :: Maybe Program, -- ^Might be the location of the Haddock executable. hunk ./Distribution/Simple/LocalBuildInfo.hs 75 - } - deriving (Show, Read, Eq) + } deriving (Read, Show) hunk ./Distribution/Simple.hs 4 --- Copyright : Isaac Jones 2003-2004 +-- Copyright : Isaac Jones 2003-2005 hunk ./Distribution/Simple.hs 70 +import Distribution.Program(lookupProgram, Program(..)) hunk ./Distribution/Simple.hs 405 - mHaddock <- findProgram "haddock" (withHaddock lbi) + let mHaddock = withHaddock lbi hunk ./Distribution/Simple.hs 422 - code <- rawSystemVerbose verbose (fromJust mHaddock) + code <- rawSystemVerbose verbose (programBinName $ fromJust mHaddock) hunk ./Distribution/Program.hs 8 - , lookupProgram) where -{- + , userSpecifyPath + , lookupProgram hunk ./Distribution/Program.hs 23 --} + ) where hunk ./Distribution/Program.hs 25 -import Data.List(find) +import Data.FiniteMap hunk ./Distribution/Program.hs 36 - -- |Location of the program. eg. /usr/bin/ghc-6.4 + -- |Location of the program. eg. \/usr\/bin\/ghc-6.4 hunk ./Distribution/Program.hs 46 -type ProgramConfiguration = [Program] + +type ProgramConfiguration = FiniteMap String Program hunk ./Distribution/Program.hs 50 -defaultProgramConfiguration = [ ghcProgram +defaultProgramConfiguration = progListToFM + [ ghcProgram hunk ./Distribution/Program.hs 66 --- |The flag for giving a path to this program. eg --with-alex=/usr/bin/alex +-- |The flag for giving a path to this program. eg --with-alex=\/usr\/bin\/alex hunk ./Distribution/Program.hs 71 --- eg --haddock-options=-s http://foo +-- eg --haddock-options=-s http:\/\/foo hunk ./Distribution/Program.hs 76 --- eg haddock-options: -s http://foo +-- eg haddock-options: -s http:\/\/foo hunk ./Distribution/Program.hs 137 - -> ProgramLocation -- find location on system in PATH, if EmptyLocation hunk ./Distribution/Program.hs 138 -lookupProgram name conf inLoc = +lookupProgram name conf = hunk ./Distribution/Program.hs 143 - -> do newLoc <- case (inLoc, configLoc) of - (EmptyLocation, EmptyLocation) + -> do newLoc <- case configLoc of + EmptyLocation hunk ./Distribution/Program.hs 147 - (EmptyLocation, a) -> return a - (a, _) -> return a + a -> return a hunk ./Distribution/Program.hs 150 +-- |User-specify this path. If it's not a known program, add it. +userSpecifyPath :: String -- ^Program name + -> FilePath -- ^user-specified path to filename + -> ProgramConfiguration + -> ProgramConfiguration +userSpecifyPath name path conf + = case lookupFM conf name of + Just p -> addToFM conf name p{programLocation=UserSpecified path} + Nothing -> addToFM conf name (Program name name [] (UserSpecified path)) hunk ./Distribution/Program.hs 172 -lookupProgram' name = find (\(Program {programName=n}) -> n == name) +lookupProgram' = flip lookupFM + +progListToFM :: [Program] -> ProgramConfiguration +progListToFM progs = foldl + (\ conf' + p@(Program {programName=n}) + -> addToFM conf' n p) + emptyFM + progs hunk ./Distribution/Program.hs 184 - hunk ./Distribution/Setup.hs 67 -import Distribution.Program(ProgramLocation(..), ProgramConfiguration, - defaultProgramConfiguration) +import Distribution.Program(ProgramLocation(..), ProgramConfiguration, Program(..), + defaultProgramConfiguration, userSpecifyPath, haddockProgram) hunk ./Distribution/Setup.hs 102 - configHaddock :: ProgramLocation, -- ^Haddock path +-- configHaddock :: ProgramLocation, -- ^Haddock path hunk ./Distribution/Setup.hs 123 - configHaddock = EmptyLocation, +-- configHaddock = EmptyLocation, hunk ./Distribution/Setup.hs 301 - updateCfg t (WithHaddock path) = t { configHaddock = UserSpecified path } + updateCfg t (WithHaddock path) = t { configPrograms = (userSpecifyPath + (programName haddockProgram) + path (configPrograms t))} hunk ./Distribution/Simple/Configure.hs 88 -import Distribution.Program(Program(..), ProgramLocation(..), lookupProgram) +import Distribution.Program(Program(..), ProgramLocation(..), lookupProgram, + haddockProgram) hunk ./Distribution/Simple/Configure.hs 146 - haddock <- lookupProgram "haddock" (configPrograms cfg) (configHaddock cfg) + let haddockName = programName haddockProgram + haddock <- lookupProgram haddockName (configPrograms cfg) hunk ./Distribution/Simple/Configure.hs 160 - reportProgram' "haddock" haddock + reportProgram' haddockName haddock hunk ./Distribution/Program.hs 3 - , ProgramConfiguration + , ProgramConfiguration(..) hunk ./Distribution/Program.hs 8 + , updateProgram hunk ./Distribution/Program.hs 10 + , userSpecifyArgs hunk ./Distribution/Program.hs 37 - ,programDefaultArgs :: [String] + ,programArgs :: [String] hunk ./Distribution/Program.hs 49 -type ProgramConfiguration = FiniteMap String Program +data ProgramConfiguration = ProgramConfiguration (FiniteMap String Program) hunk ./Distribution/Program.hs 51 +instance Show ProgramConfiguration where + show (ProgramConfiguration s) = show $ fmToList s + +instance Read ProgramConfiguration where + readsPrec _ s = [(ProgramConfiguration $ listToFM $ read s, "")] + hunk ./Distribution/Program.hs 163 -userSpecifyPath name path conf +userSpecifyPath name path conf'@(ProgramConfiguration conf) hunk ./Distribution/Program.hs 165 - Just p -> addToFM conf name p{programLocation=UserSpecified path} - Nothing -> addToFM conf name (Program name name [] (UserSpecified path)) + Just p -> updateProgram (Just p{programLocation=UserSpecified path}) conf' + Nothing -> updateProgram (Just $ Program name name [] (UserSpecified path)) + conf' hunk ./Distribution/Program.hs 169 --- |Populate the "programLocation" field in this configuration. -{-lookupAllPrograms :: ProgramConfiguration - -> CommandLine? - -> IO ProgramConfiguration -lookupAllPrograms conf = mapM --} +-- |User-specify this path. If it's not a known program, add it. +userSpecifyArgs :: String -- ^Program name + -> String -- ^user-specified args + -> ProgramConfiguration + -> ProgramConfiguration +userSpecifyArgs name args conf'@(ProgramConfiguration conf) + = case lookupFM conf name of + Just p -> updateProgram (Just p{programArgs=[args]}) conf' + Nothing -> updateProgram (Just $ Program name name [args] EmptyLocation) conf' + +updateProgram :: Maybe Program -> ProgramConfiguration -> ProgramConfiguration +updateProgram (Just p@Program{programName=n}) (ProgramConfiguration conf) + = ProgramConfiguration $ addToFM conf n p +updateProgram Nothing conf = conf + hunk ./Distribution/Program.hs 190 -lookupProgram' = flip lookupFM +lookupProgram' s (ProgramConfiguration conf) = lookupFM conf s hunk ./Distribution/Program.hs 194 - (\ conf' + (\ (ProgramConfiguration conf') hunk ./Distribution/Program.hs 196 - -> addToFM conf' n p) - emptyFM + -> ProgramConfiguration (addToFM conf' n p)) + (ProgramConfiguration emptyFM) hunk ./Distribution/Setup.hs 67 -import Distribution.Program(ProgramLocation(..), ProgramConfiguration, Program(..), - defaultProgramConfiguration, userSpecifyPath, haddockProgram) +import Distribution.Program(ProgramLocation(..), ProgramConfiguration(..), + Program(..), + defaultProgramConfiguration, userSpecifyPath, + userSpecifyArgs, haddockProgram) hunk ./Distribution/Setup.hs 72 +import Data.FiniteMap(keysFM) hunk ./Distribution/Setup.hs 150 + | ProgramArgs String String -- program name, arguments hunk ./Distribution/Setup.hs 289 - ], + ] + ++ (programArgsOptions defaultProgramConfiguration), -- FIX: shouldn't use default. hunk ./Distribution/Setup.hs 294 +programArgsOptions :: ProgramConfiguration -> [OptDescr (Flag a)] +programArgsOptions (ProgramConfiguration conf) = map f (keysFM conf) + where f name = Option "" [name ++ "-args"] (reqPathArg (ProgramArgs name)) + ("give the args to " ++ name) + hunk ./Distribution/Setup.hs 322 + updateCfg t (ProgramArgs name path) = t { configPrograms = (userSpecifyArgs + name + path (configPrograms t))} hunk ./Distribution/Simple/Configure.hs 89 - haddockProgram) + updateProgram, haddockProgram) hunk ./Distribution/Simple/Configure.hs 167 + let newConfig = updateProgram haddock (configPrograms cfg) hunk ./Distribution/Simple/Configure.hs 176 + withPrograms=newConfig, hunk ./Distribution/Simple/LocalBuildInfo.hs 46 -import Distribution.Program (ProgramLocation, Program) +import Distribution.Program (ProgramLocation, Program, ProgramConfiguration) hunk ./Distribution/Simple/LocalBuildInfo.hs 65 + withPrograms :: ProgramConfiguration, -- location and args for all programs hunk ./Distribution/Program.hs 55 - readsPrec _ s = [(ProgramConfiguration $ listToFM $ read s, "")] + readsPrec p s = [(ProgramConfiguration $ listToFM $ s', r) | (s', r) <- readsPrec p s ] hunk ./Distribution/Program.hs 176 - Just p -> updateProgram (Just p{programArgs=[args]}) conf' - Nothing -> updateProgram (Just $ Program name name [args] EmptyLocation) conf' + Just p -> updateProgram (Just p{programArgs=(words args)}) conf' + Nothing -> updateProgram (Just $ Program name name (words args) EmptyLocation) conf' hunk ./Distribution/Simple.hs 70 -import Distribution.Program(lookupProgram, Program(..)) +import Distribution.Program(lookupProgram, Program(..), haddockProgram) hunk ./Distribution/Simple.hs 405 - let mHaddock = withHaddock lbi - when (isNothing mHaddock) (die "haddock command not found") + + -- get all of the configure information about Haddock. FIX: + -- This complexity will go away when we get rid of withHaddock + confHaddock <- do let programConf = withPrograms lbi + let haddockName = programName $ haddockProgram + mHaddock <- lookupProgram haddockName programConf + case withHaddock lbi of + Nothing -> + case mHaddock of + Nothing -> (die "haddock command not found") + Just h -> return h + -- uug; get the location from withHaddock + Just withH -> + case mHaddock of + Nothing -> return withH + Just confH -> return confH{programLocation + =(programLocation withH)} hunk ./Distribution/Simple.hs 437 - code <- rawSystemVerbose verbose (programBinName $ fromJust mHaddock) + code <- rawSystemVerbose verbose (programBinName confHaddock) hunk ./Distribution/Simple.hs 441 - "-p", prologName] + "-p", prologName] ++ (programArgs confHaddock) hunk ./Distribution/Program.hs 12 + , rawSystemProgram + -- Programs hunk ./Distribution/Program.hs 30 +import Control.Monad(when) +import System.Exit (ExitCode) hunk ./Distribution/Program.hs 33 +import Distribution.Simple.Utils (die, rawSystemVerbose) hunk ./Distribution/Program.hs 55 + +-- Read & Show instances are based on listToFM hunk ./Distribution/Program.hs 62 - readsPrec p s = [(ProgramConfiguration $ listToFM $ s', r) | (s', r) <- readsPrec p s ] + readsPrec p s = [(ProgramConfiguration $ listToFM $ s', r) + | (s', r) <- readsPrec p s ] + +-- |The default list of programs and their arguments. These programs +-- are typically used internally to Cabal. hunk ./Distribution/Program.hs 70 - [ ghcProgram + [ haddockProgram ] +-- haddock is currently the only one that really works. +{- [ ghcProgram hunk ./Distribution/Program.hs 85 - ] + ]-} hunk ./Distribution/Program.hs 148 --- |Looks up a program in the given configuration. If the user --- provides a location, then we use that location in the returned --- program. If no location is given then we check in the --- configuration for a location. If there's none in the --- configuration, then we use IO to look on the system. Do we want a --- way to specify NOT to find it on the system (populate --- programLocation). +-- |Looks up a program in the given configuration. If there's no +-- location information in the configuration, then we use IO to look +-- on the system in PATH for the program. If the program is not in +-- the configuration at all, we return Nothing. FIX: should we build +-- a simpleProgram in that case? Do we want a way to specify NOT to +-- find it on the system (populate programLocation). hunk ./Distribution/Program.hs 170 --- |User-specify this path. If it's not a known program, add it. -userSpecifyPath :: String -- ^Program name +-- |User-specify this path. Basically override any path information +-- for this program in the configuration. If it's not a known +-- program, add it. +userSpecifyPath :: String -- ^Program name hunk ./Distribution/Program.hs 183 --- |User-specify this path. If it's not a known program, add it. +-- |User-specify the arguments for this program. Basically override +-- any args information for this program in the configuration. If it's +-- not a known program, add it. hunk ./Distribution/Program.hs 195 +-- |Update this program's entry in the configuration. No changes if +-- you pass in Nothing. hunk ./Distribution/Program.hs 201 + +-- |Runs the given program. +rawSystemProgram :: Int -- ^Verbosity + -> Program -- ^The program to run + -> [String] -- ^Any /extra/ arguments to add + -> IO ExitCode +rawSystemProgram verbose (Program { programLocation=(UserSpecified p) + , programArgs=args + }) + + extraArgs = rawSystemVerbose verbose p (extraArgs ++ args) +rawSystemProgram verbose (Program { programLocation=(FoundOnSystem p) + , programArgs=args + }) + + extraArgs = rawSystemVerbose verbose p (extraArgs ++ args) +rawSystemProgram _ (Program { programLocation=EmptyLocation + , programName=n})_ + = die ("Error: Could not find location for program: " ++ n) hunk ./Distribution/Simple/Utils.hs 98 - doesFileExist, removeFile) + doesFileExist, removeFile, getPermissions, executable) hunk ./Distribution/Simple/Utils.hs 132 - Just path -> do - when (verbose > 0) $ - putStrLn (path ++ concatMap (' ':) args) - rawSystem path args + Just path -> rawSystemVerbose verbose path args hunk ./Distribution/Simple/Utils.hs 134 -rawSystemVerbose :: Int -> String -> [String] -> IO ExitCode +rawSystemVerbose :: Int -> FilePath -> [String] -> IO ExitCode hunk ./Distribution/Simple/Utils.hs 138 - rawSystem prog args + e <- doesFileExist prog + if e + then do perms <- getPermissions prog + if (executable perms) + then rawSystem prog args + else die ("Error: file is not executable: " ++ show prog) + else die ("Error: file does not exist: " ++ show prog) hunk ./Distribution/Simple.hs 70 -import Distribution.Program(lookupProgram, Program(..), haddockProgram) +import Distribution.Program(lookupProgram, Program(..), + haddockProgram, rawSystemProgram) hunk ./Distribution/Simple.hs 84 -import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, findProgram, - configure, writePersistBuildConfig, localBuildInfoFile) +import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, + findProgram, configure, writePersistBuildConfig, + localBuildInfoFile) hunk ./Distribution/Simple.hs 439 - code <- rawSystemVerbose verbose (programBinName confHaddock) + code <- rawSystemProgram verbose confHaddock hunk ./Distribution/Setup.hs 144 - | WithHaddock FilePath | WithHappy FilePath | WithAlex FilePath + | WithHappy FilePath | WithAlex FilePath hunk ./Distribution/Setup.hs 150 - | ProgramArgs String String -- program name, arguments + | ProgramArgs String String -- program name, arguments + | WithProgram String FilePath -- program name, location hunk ./Distribution/Setup.hs 260 - Option "" ["with-haddock"] (reqPathArg WithHaddock) - "give the path to haddock", hunk ./Distribution/Setup.hs 289 - ++ (programArgsOptions defaultProgramConfiguration), -- FIX: shouldn't use default. +{- + FIX: Instead of using ++ here, we might add extra arguments. That + way, we can condense the help out put to something like + --with-{haddock,happy,alex,etc} + + FIX: shouldn't use default. Look in hooks?. +-} + ++ (withProgramOptions defaultProgramConfiguration) + ++ (programArgsOptions defaultProgramConfiguration), hunk ./Distribution/Setup.hs 306 +withProgramOptions :: ProgramConfiguration -> [OptDescr (Flag a)] +withProgramOptions (ProgramConfiguration conf) = map f (keysFM conf) + where f name = Option "" ["with-" ++ name] (reqPathArg (WithProgram name)) + ("give the path to " ++ name) + hunk ./Distribution/Setup.hs 323 - updateCfg t (WithHaddock path) = t { configPrograms = (userSpecifyPath - (programName haddockProgram) - path (configPrograms t))} hunk ./Distribution/Setup.hs 331 - updateCfg t (ProgramArgs name path) = t { configPrograms = (userSpecifyArgs + updateCfg t (ProgramArgs name args) = t { configPrograms = (userSpecifyArgs + name + args (configPrograms t))} + updateCfg t (WithProgram name path) = t { configPrograms = (userSpecifyPath hunk ./Distribution/Simple/Configure.hs 177 - withHaddock=haddock, hunk ./Distribution/Simple/LocalBuildInfo.hs 66 - withHaddock :: Maybe Program, -- ^Might be the location of the Haddock executable. hunk ./Distribution/Simple/Utils.hs 131 - Nothing -> die ("Cannot find: " ++ prog) + Nothing -> die ("Cannot find: " ++ prog) hunk ./Distribution/Simple.hs 407 - - -- get all of the configure information about Haddock. FIX: - -- This complexity will go away when we get rid of withHaddock hunk ./Distribution/Simple.hs 410 - case withHaddock lbi of - Nothing -> - case mHaddock of - Nothing -> (die "haddock command not found") - Just h -> return h - -- uug; get the location from withHaddock - Just withH -> - case mHaddock of - Nothing -> return withH - Just confH -> return confH{programLocation - =(programLocation withH)} + case mHaddock of + Nothing -> (die "haddock command not found") + Just h -> return h + hunk ./Distribution/Program.hs 70 - [ haddockProgram ] + [ haddockProgram + , pfesetupProgram] hunk ./Distribution/Simple/Configure.hs 89 - updateProgram, haddockProgram) + updateProgram, haddockProgram, pfesetupProgram) hunk ./Distribution/Simple/Configure.hs 147 + -- FIX: just do a map over all of them :) hunk ./Distribution/Simple/Configure.hs 149 + pfe <- lookupProgram (programName pfesetupProgram) (configPrograms cfg) + hunk ./Distribution/Simple/Configure.hs 164 + reportProgram' (programName pfesetupProgram) pfe hunk ./Distribution/Simple.hs 71 - haddockProgram, rawSystemProgram) + haddockProgram, rawSystemProgram, + pfesetupProgram) hunk ./Distribution/Simple.hs 463 - mPfe <- findProgram "pfesetup" Nothing - when (isNothing mPfe) (die "pfe command not found") - putStrLn $ "using : " ++ fromJust mPfe + confPfe <- do let programConf = withPrograms lbi + let progName = programName $ pfesetupProgram + mProg <- lookupProgram progName programConf + case mProg of + Nothing -> (die (progName ++ " command not found")) + Just h -> return h + hunk ./Distribution/Simple.hs 475 - rawSystemVerbose verbose (fromJust mPfe) + rawSystemProgram verbose confPfe hunk ./TODO 1 +* Program + +** Got basic haddock stuff working, --with-haddock and --haddock-args. + Next some other programs, then non-preprocessor, then the + preprocessors, finally the compilers. Work w/ backward + compatibility here. + hunk ./doc/Cabal.xml 8 - Haddock'> + alex'> + autoconf'> + c2hs'> + cpphs'> + haddock'> + haddock'> + happy'> hunk ./doc/Cabal.xml 23 - distribution of Haskell software. It does this by specifying a - number of interfaces between package authors, builders and users, - as well as providing a library implementing these interfaces. + distribution of Haskell + software. It does this by specifying a number of interfaces between + package authors, builders and users, as well as providing a library + implementing these interfaces. hunk ./doc/Cabal.xml 307 - .gc (GreenCard), - .chs (c2hs), + .gc (&Greencard;), + .chs (&C2hs;), hunk ./doc/Cabal.xml 311 - .ly (happy), - .x (alex) + .ly (&Happy;), + .x (&Alex;) hunk ./doc/Cabal.xml 314 - .cpphs (cpphs). + .cpphs (&Cpphs;). hunk ./doc/Cabal.xml 507 + + + + + + data-files: + filename list + + + A list of files to be installed for run-time use by + the package. This is useful for packages that use a + large amount of static data, such as tables of values + or code templates. For details on how to find these + files at run-time, see + . hunk ./doc/Cabal.xml 680 - {-# LANGUAGE CPP, MultiParamTypeClasses #-} + {-# LANGUAGE CPP, MultiParamTypeClasses #-} + + GHC doesn't support the LANGUAGE + pragma yet. + hunk ./doc/Cabal.xml 851 + + + + Accessing data files from package code + The placement on the target system of files listed in the + data-files field varies between systems, and in + some cases one can even move packages around after installation + (see ). To enable packages + to find these files in a portable way, Cabal generates a module + called Paths_pkgname + (with any hyphens in pkgname replaced + by underscores) during building, so that it may be imported by + modules of the package. This module defines a function + getDataFileName :: FilePath -> IO FilePath + If the argument is a filename listed in the + data-files field, the result is the name + of the corresponding file on the system on which the program + is running. hunk ./doc/Cabal.xml 890 - be a script produced by the autoconf + be a script produced by the &Autoconf; hunk ./doc/Cabal.xml 939 - (This example is for people familiar with the autoconf + (This example is for people familiar with the &Autoconf; hunk ./doc/Cabal.xml 1043 - The --with-hc, - --with-hc-pkg and - --prefix options to the + The , + , + , , + , + and options to the hunk ./doc/Cabal.xml 1053 - the --copy-prefix option to the + the --destdir option to the hunk ./doc/Cabal.xml 1055 - prefix variable on the invocation of - make install. + destdir variable on the invocation of + make copy. The supplied + Makefile should provide a + copy target, which will probably + look like this: + +copy : + $(MAKE) install prefix=$(destdir)/$(prefix) \ + bindir=$(destdir)/$(bindir) \ + libdir=$(destdir)/$(libdir) \ + datadir=$(destdir)/$(datadir) \ + libexecdir=$(destdir)/$(libexecdir) + + hunk ./doc/Cabal.xml 1075 - interface of , possibly using the - Cabal library for part of the work. One option is to copy the - source of Distribution.Simple, and alter it for your needs. - Good luck. + interface of , possibly using + the Cabal library for part of the work. One option is to + copy the source of Distribution.Simple, + and alter it for your needs. Good luck. hunk ./doc/Cabal.xml 1096 - runhugs, runghc or - runnhc. The command + runhugs, runghc or + runnhc. The command hunk ./doc/Cabal.xml 1136 -runhaskell Setup.hs copy --copy-prefix=/tmp/mypkg/usr +runhaskell Setup.hs copy --destdir=/tmp/mypkg hunk ./doc/Cabal.xml 1184 - Prepare to build the package. - Typically, this step checks that the target platform is capable - of building the package, and discovers platform-specific features - that are needed during the build. In addition to the general - options, this command recognizes the following + Prepare to build the package. Typically, this step checks + that the target platform is capable of building the package, + and discovers platform-specific features that are needed during + the build. + + The user may also adjust the behaviour of later stages using + the options listed in the following subsections. In the simple + build infrastructure, the values supplied via these options are + recorded in a private file read by later stages. + + If a user-supplied configure + script is run (see + or ), it is passed the + , , + , , + , and + options, plus any unrecognized + options. + + + Programs used for building + + The following options govern the programs used to process + the source files of a package: + + + + or + or + + + Specify which Haskell implementation to use to build + the package. At most one of these flags may be given. + If none is given, the implementation under which the setup + script was compiled or interpreted is used. + + + + + =path + or path + + Specify the path to a particular compiler. If given, + this must match the implementation selected above. + The default is to search for the usual name of the + selected implementation. + + + + + =path + + Specify the path to the package tool, e.g. + ghc-pkg. + + + + + =path + + Specify the path to &Haddock;. + + + + + =path + + Specify the path to &Happy;. + + + + + =path + + Specify the path to &Alex;. + + + + + =path + + Specify the path to hsc2hs. + + + + + =path + + Specify the path to &C2hs;. + + + + + =path + + Specify the path to &Greencard;. + + + + + =path + + Specify the path to &Cpphs;. + + + + + + + + Installation paths + + The following options govern the location of installed files + from a package: + + + + =dir + + The root of the installation, for example + /usr/local on a Unix system, or + C:\Program Files on a Windows system. + The other installation paths are usually subdirectories of + prefix, but they don't have + to be. + + + + + =dir + + Executables that the user might invoke are installed here. + + + + + =dir + + Object-code libraries are installed here. + + + + + =dir + + A subdirectory of libdir + in which libraries are actually installed. For example, + in the simple build system on Unix, the default + libdir is + /usr/local/lib, and + libsubdir contains the package + identifier and compiler, + e.g. mypkg-0.2/ghc-6.4, so libraries + would be installed in + /usr/local/lib/mypkg-0.2/ghc-6.4. + + Not all build systems make use of + libsubdir, in particular the + &Make; system does not. + + + + + =dir + + Architecture-independent data files are installed + here. + + + + + =dir + + A subdirectory of datadir + in which data files are actually installed. This option + is similar to --libsubdir in that + not all build systems make use of it. + + + + + =dir + + Executables that are not expected to be invoked + directly by the user are installed here. + + + + + + Paths in the simple build system + + For the simple build system, the following defaults + apply: + + + + + + + + + + Option + Windows Default + Unix Default + + + + + --prefix + C:\Program Files + /usr/local + + + + --bindir + $prefix\$pkgid + $prefix/bin + + + + --libdir + $prefix\Haskell + $prefix/lib + + + + --libsubdir (Hugs) + hugs\packages\$pkg + hugs/packages/$pkg + + + + --libsubdir (others) + $pkgid\$compiler + $pkgid/$compiler + hunk ./doc/Cabal.xml 1423 - - - =dir - - Specify the installation prefix - (default: /usr/local on Unix systems, - the Program Files folder on Windows, e.g. - C:\Program Files in an English - locale). - - + + --datadir (executable) + $prefix + $prefix/share + hunk ./doc/Cabal.xml 1429 - - or - or - - - Specify which Haskell implementation to use to build - the package. At most one of these flags may be given. - If none is given, the implementation under which the setup - script was compiled or interpreted is used. - - + + --datadir (library) + C:\Program Files\Common Files + $prefix/share + hunk ./doc/Cabal.xml 1435 - - =path - or path - - Specify the path to a particular compiler. If given, - this must match the implementation selected above. - The default is to search for the usual name of the - selected implementation. - - + + --datasubdir + $pkgid + $pkgid + hunk ./doc/Cabal.xml 1441 - - =path - - Specify the path to the package tool, e.g. - ghc-pkg. - - + + --libexecdir + $prefix\$pkgid + $prefix/libexec + + + + hunk ./doc/Cabal.xml 1450 - - =path - - Specify the path to &Haddock;. - - + The following strings are substituted into directory + names: hunk ./doc/Cabal.xml 1453 - - =path - - Specify the path to happy. - - + + + $prefix + + The value of prefix + + + + $pkgid + + The full package identifier, e.g. pkg-0.1 + + + + $compiler + + The compiler and version, e.g. ghc-6.4.1 + + + + $pkg + + The name of the package only + + + + $version + + The version of the package + + + + hunk ./doc/Cabal.xml 1487 - - =path - - Specify the path to alex. - - + + Prefix-independence hunk ./doc/Cabal.xml 1490 - - =path - - Specify the path to hsc2hs. - - + On Windows (and perhaps other OSs), it is possible + to query the pathname of the running binary. This means + that we can construct an installable executable package + that is independent of its absolute install location. + The executable can find its auxiliary files by finding its + own path and knowing the location of the other files relative + to bindir. Prefix-independence is + particularly useful: it means the user can choose the install + location (i.e. the value of prefix) + at install-time, rather than having to bake the path into + the binary when it is built. hunk ./doc/Cabal.xml 1502 - - =path - - Specify the path to c2hs. - - + In order to achieve this, we require + that for an executable on Windows, all + of bindir, + libdir, + datadir and + libexecdir begin with + $prefix. An error will be returned + from setup configure if this is not + the case. hunk ./doc/Cabal.xml 1512 - - =path - - Specify the path to greencard. - - + The application need do nothing special to achieve + prefix-independence. If it finds any files using + getDataFileName and the other functions + provided for the purpose (see ), + the files will be accessed relative to the location of the + current executable. hunk ./doc/Cabal.xml 1519 - - =path - - Specify the path to cpphs. - - + A library cannot (currently) be prefix-independent, + because it will be linked into an executable whose + filesystem location bears no relation to the library + package. + + hunk ./doc/Cabal.xml 1526 - - - - Allow dependencies to be satisfied by the user package - database, in addition to the global database. - - + + Miscellaneous options hunk ./doc/Cabal.xml 1529 - - - - (default) Dependencies must be satisfied by the global - package database. - - + + + + + Allow dependencies to be satisfied by the user package + database, in addition to the global database. + + hunk ./doc/Cabal.xml 1538 - - or - - - Request that an additional version of the library - with profiling features enabled be built and installed - (only for implementations that support profiling). - - + + + + (default) Dependencies must be satisfied by the global + package database. + + hunk ./doc/Cabal.xml 1546 - - - - (default) Do not generate an additional profiling - version of the library. - - + + or + + + Request that an additional version of the library + with profiling features enabled be built and installed + (only for implementations that support profiling). + + hunk ./doc/Cabal.xml 1556 - - - - Any executables generated should have profiling enabled - (only for implementations that support profiling). For this - to work, all libraries used by these executables must also - have been built with profiling support. - - + + + + (default) Do not generate an additional profiling + version of the library. + + hunk ./doc/Cabal.xml 1564 - - - - (default) Do not enable profiling in generated - executables. - - - + + + + Any executables generated should have profiling enabled + (only for implementations that support profiling). For this + to work, all libraries used by these executables must also + have been built with profiling support. + + hunk ./doc/Cabal.xml 1574 - In the simple build infrastructure, an additional option - is recognized: - - - =dir or - dir - - Specify the directory into which the package will be - built (default: dist/build). - - - + + + + (default) Do not enable profiling in generated + executables. + + + hunk ./doc/Cabal.xml 1583 - In the simple build infrastructure, the values supplied via - these options are recorded in a private file for use by later - stages. + In the simple build infrastructure, an additional option + is recognized: + + + =dir or + dir + + Specify the directory into which the package will be + built (default: dist/build). + + + hunk ./doc/Cabal.xml 1596 - If a user-supplied configure script is - run (see ), it is passed the - option and any unrecognized options. + hunk ./doc/Cabal.xml 1617 + + The install locations are determined by options to + setup configure + (see ). hunk ./doc/Cabal.xml 1652 - =path + =path hunk ./doc/Cabal.xml 1655 - installed files. If this is not given, the - argument of the option to - configure is used. + installed files. If this is not given, then the root + directory is assumed. hunk ./doc/Cabal.xml 1775 - c-sources and extra-source-files - fields. + c-sources, data-files and + extra-source-files fields. hunk ./Cabal.cabal 4 +-- We want "base, unix" on Unix and just "base" on Windows, but can't +-- express that directly, so we fake it by depending on util. hunk ./Distribution/InstalledPackageInfo.hs 10 --- Explanation: Information on how to USE an installed package, --- consumed by HC-PKG (ghc-pkg, for instance). THIS MODULE IS NOT YET --- USED. HC-PKG is not yet implemented, and ghc-pkg has its own file --- format, so this module is very much subject to change once HC-PKG --- is implemented. +-- This is the information about an /installed/ package that +-- is communicated to the @hc-pkg@ program in order to register +-- a package. @ghc-pkg@ now consumes this package format (as of verison +-- 6.4). hunk ./Distribution/Make.hs 71 -ConfigCmd: We assume the configure script accepts a --with-hc flag +ConfigCmd: We assume the configure script accepts: + --with-hc + --with-hc-pkg + --prefix + --bindir + --libdir + --libexecdir + --datadir + hunk ./Distribution/Make.hs 81 -InstallCmd: We assume there is an install target and a variable $(prefix) - that can be overridden - (./Setup --install-prefix=foo -> make prefix=foo install) + +InstallCmd: We assume there is an install target hunk ./Distribution/Make.hs 84 + +CopyCmd: We assume there is a copy target, and a variable $(destdir) + The 'copy' target should probably just invoke make install recursively, eg. + copy : + $(MAKE) install prefix=$(destdir)/$(prefix) \ + bindir=$(destdir)/$(bindir) \ + ... + The reason we can't invoke make install directly here is that we don't + know the value of $(prefix). + hunk ./Distribution/Make.hs 95 + hunk ./Distribution/Make.hs 97 + hunk ./Distribution/Make.hs 99 + hunk ./Distribution/Make.hs 101 + hunk ./Distribution/Make.hs 105 -configureArgs :: ConfigFlags -> String -configureArgs flags - = unwords (hc_flag ++ hc_pkg_flag ++ prefix_flag) - where - hc_flag = case (configHcFlavor flags, configHcPath flags) of - (_, Just hc_path) -> ["--with-hc=" ++ hc_path] - (Just hc, Nothing) -> ["--with-hc=" ++ showHC hc] - (Nothing,Nothing) -> [] - hc_pkg_flag = case configHcPkg flags of - Just hc_pkg_path -> ["--with-hc-pkg=" ++ hc_pkg_path] - Nothing -> [] - prefix_flag = case configPrefix flags of - Just p -> ["--prefix=" ++ p] - Nothing -> [] - - showHC GHC = "ghc" - showHC NHC = "nhc98" - showHC Hugs = "hugs" - showHC c = "unknown compiler: " ++ (show c) - hunk ./Distribution/Make.hs 119 - no_extra_flags args - retVal <- exec $ "./configure " ++ configureArgs flags + retVal <- exec $ unwords $ + "./configure" : configureArgs flags ++ args hunk ./Distribution/Make.hs 126 - CopyCmd mprefix -> do - ((mprefix,_), _, args) <- parseCopyArgs (mprefix,0) args [] + CopyCmd copydest0 -> do + ((copydest,_), _, args) <- parseCopyArgs (copydest0,0) args [] hunk ./Distribution/Make.hs 129 - maybeExit $ system $ "make install" ++ - maybe "" (" prefix="++) mprefix + let cmd = case copydest of + NoCopyDest -> "install" + CopyTo path -> "copy destdir=" ++ path + CopyPrefix path -> "install prefix=" ++ path + -- CopyPrefix is backwards compat, DEPRECATED + maybeExit $ system $ ("make " ++ cmd) hunk ./Distribution/Package.hs 57 - deriving (Read, Show, Eq) + deriving (Read, Show, Eq, Ord) hunk ./Distribution/PackageDescription.hs 137 + dataFiles :: [FilePath], hunk ./Distribution/PackageDescription.hs 170 + dataFiles = [], hunk ./Distribution/PackageDescription.hs 378 + , listField "data-files" showFilePath parseFilePathQ + dataFiles (\val pkg -> pkg{dataFiles=val}) hunk ./Distribution/Setup.hs 45 - Action(..), ConfigFlags(..), - CopyFlags, InstallFlags, RegisterFlags, SDistFlags, + Action(..), + ConfigFlags(..), emptyConfigFlags, configureArgs, + CopyFlags, CopyDest(..), InstallFlags, RegisterFlags, SDistFlags, hunk ./Distribution/Setup.hs 85 - | CopyCmd (Maybe FilePath) -- copy + | CopyCmd CopyDest -- copy (--destdir flag) hunk ./Distribution/Setup.hs 115 - configPrefix :: Maybe FilePath, -- ^installation prefix + configPrefix :: Maybe FilePath, + -- ^installation prefix + configBinDir :: Maybe FilePath, + -- ^installation dir for binaries, + configLibDir :: Maybe FilePath, + -- ^installation dir for object code libraries, + configLibSubDir :: Maybe FilePath, + -- ^subdirectory of libdir in which libs are installed + configLibExecDir :: Maybe FilePath, + -- ^installation dir for program executables, + configDataDir :: Maybe FilePath, + -- ^installation dir for read-only arch-independent data, + configDataSubDir :: Maybe FilePath, + -- ^subdirectory of datadir in which data files are installed + hunk ./Distribution/Setup.hs 137 - configPrograms = defaultProgramConfiguration, hunk ./Distribution/Setup.hs 150 + configBinDir = Nothing, + configLibDir = Nothing, + configLibSubDir = Nothing, + configLibExecDir = Nothing, + configDataDir = Nothing, + configDataSubDir = Nothing, hunk ./Distribution/Setup.hs 161 +defaultCompilerFlavor :: Maybe CompilerFlavor +defaultCompilerFlavor = +#if defined(__GLASGOW_HASKELL__) + Just GHC +#elif defined(__NHC__) + Just NHC +#elif defined(__HUGS__) + Just Hugs +#else + Nothing +#endif + +-- | Arguments to pass to a @configure@ script, e.g. generated by +-- @autoconf@. +configureArgs :: ConfigFlags -> [String] +configureArgs flags + = hc_flag ++ + optFlag "with-hc-pkg" configHcPkg ++ + optFlag "prefix" configPrefix ++ + optFlag "bindir" configBinDir ++ + optFlag "libdir" configLibDir ++ + optFlag "libexecdir" configLibExecDir ++ + optFlag "datadir" configDataDir + where + hc_flag = case (configHcFlavor flags, configHcPath flags) of + (_, Just hc_path) -> ["--with-hc=" ++ hc_path] + (Just hc, Nothing) -> ["--with-hc=" ++ showHC hc] + (Nothing,Nothing) -> [] + optFlag name config_field = case config_field flags of + Just p -> ["--" ++ name ++ "=" ++ p] + Nothing -> [] + + showHC GHC = "ghc" + showHC NHC = "nhc98" + showHC Hugs = "hugs" + showHC c = "unknown compiler: " ++ (show c) + hunk ./Distribution/Setup.hs 200 - | WithCompiler FilePath | WithHcPkg FilePath | Prefix FilePath + | WithCompiler FilePath | WithHcPkg FilePath hunk ./Distribution/Setup.hs 207 - | ProgramArgs String String -- program name, arguments - | WithProgram String FilePath -- program name, location hunk ./Distribution/Setup.hs 213 + | DestDir FilePath hunk ./Distribution/Setup.hs 316 + Option "" ["with-haddock"] (reqPathArg WithHaddock) + "give the path to haddock", hunk ./Distribution/Setup.hs 402 + updateCfg t (BinDir path) = t { configBinDir = Just path } + updateCfg t (LibDir path) = t { configLibDir = Just path } + updateCfg t (LibSubDir path) = t { configLibSubDir= Just path } + updateCfg t (LibExecDir path) = t { configLibExecDir = Just path } + updateCfg t (DataDir path) = t { configDataDir = Just path } + updateCfg t (DataSubDir path) = t { configDataSubDir = Just path } hunk ./Distribution/Setup.hs 482 - cmdDescription = "Does not call register, and allows a prefix at install time\nWithout the copy-prefix flag, configure determines location.\n", + cmdDescription = "Does not call register, and allows a prefix at install time\nWithout the --destdir flag, configure determines location.\n", hunk ./Distribution/Setup.hs 484 + Option "" ["destdir"] (reqDirArg DestDir) + "directory to copy files to, prepended to installation directories", hunk ./Distribution/Setup.hs 487 - "specify the directory in which to place installed files" + "[DEPRECATED, directory to copy files to instead of prefix]" hunk ./Distribution/Setup.hs 489 - cmdAction = CopyCmd Nothing + cmdAction = CopyCmd NoCopyDest hunk ./Distribution/Setup.hs 492 --- | Flags to @copy@: (Copy Location, verbose) -type CopyFlags = (Maybe FilePath,Int) +-- | Flags to @copy@: (destdir, copy-prefix (backwards compat), verbose) +type CopyFlags = (CopyDest,Int) + +data CopyDest + = NoCopyDest + | CopyTo FilePath + | CopyPrefix FilePath -- DEPRECATED + deriving (Eq, Show) hunk ./Distribution/Setup.hs 504 - where updateCfg (mprefix,verbose) fl = case fl of - InstPrefix path -> (Just path, verbose) - Verbose n -> (mprefix, n) + where updateCfg (copydest,verbose) fl = case fl of + InstPrefix path -> (CopyPrefix path, verbose) + DestDir path -> (CopyTo path,verbose) + Verbose n -> (copydest,n) hunk ./Distribution/Simple/Build.hs 52 - setupMessage, withLib, + setupMessage, withLib, hasLibs, hunk ./Distribution/Simple/Build.hs 56 +import Distribution.Setup (CopyDest(..)) hunk ./Distribution/Simple/Build.hs 60 -import Distribution.Simple.Configure (LocalBuildInfo(..)) +import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..), + mkBinDir, mkLibDir, mkDataDir, + mkLibexecDir) hunk ./Distribution/Simple/Build.hs 85 + pathSeparator, hunk ./Distribution/Simple/Build.hs 113 + + -- construct and write the Paths_.hs file + createDirectoryIfMissing True (autogenModulesDir lbi) + buildPathsModule pkg_descr lbi + hunk ./Distribution/Simple/Build.hs 156 - let ghcArgs = ["-I" ++ dir | dir <- includeDirs libBi] - ++ ["-optc" ++ opt | opt <- ccOptions libBi] - ++ (if pkgConfReadable then ["-package-conf", pkgConf] else []) - ++ ["-package-name", pkgName (package pkg_descr), - "-odir", libTargetDir, - "-hidir", libTargetDir - ] - ++ constructGHCCmdLine (compiler lbi) [] libBi (packageDeps lbi) + let ghcArgs = + (if pkgConfReadable then ["-package-conf", pkgConf] else []) + ++ ["-package-name", pkgName (package pkg_descr) ] + ++ constructGHCCmdLine lbi libBi libTargetDir verbose hunk ./Distribution/Simple/Build.hs 161 - ++ (if verbose > 4 then ["-v"] else []) hunk ./Distribution/Simple/Build.hs 264 - let binArgs = ["-I" ++ dir | dir <- includeDirs exeBi] - ++ ["-optc" ++ opt | opt <- ccOptions exeBi] - ++ (if pkgConfReadable then ["-package-conf", pkgConf] else []) - ++ ["-odir", exeDir, - "-hidir", exeDir, - "-o", targetDir `joinFileName` exeName' + let binArgs = + (if pkgConfReadable then ["-package-conf", pkgConf] else []) + ++ ["-I"++pref, + "-o", targetDir `joinFileName` exeName' hunk ./Distribution/Simple/Build.hs 269 - ++ constructGHCCmdLine (compiler lbi) (maybe [] (hsSourceDirs . libBuildInfo) (library pkg_descr)) - exeBi (packageDeps lbi) + ++ constructGHCCmdLine lbi exeBi exeDir verbose hunk ./Distribution/Simple/Build.hs 275 - ++ (if verbose > 4 then ["-v"] else []) hunk ./Distribution/Simple/Build.hs 283 -constructGHCCmdLine :: Compiler - -> [FilePath] -- If we're building an executable, we need the library's filepath - -> BuildInfo - -> [PackageIdentifier] - -> [String] -constructGHCCmdLine comp srcLocs bi deps = - -- Unsupported extensions have already been checked by configure - let flags = snd $ extensionsToGHCFlag (extensions bi) - in (if compilerVersion comp > Version [6,4] [] +constructGHCCmdLine + :: LocalBuildInfo + -> BuildInfo + -> FilePath + -> Int -- verbosity level + -> [String] +constructGHCCmdLine lbi bi odir verbose = + ["--make"] + ++ (if verbose > 4 then ["-v"] else []) + -- Unsupported extensions have already been checked by configure + ++ snd (extensionsToGHCFlag (extensions bi)) + ++ hcOptions GHC (options bi) + ++ (if compilerVersion (compiler lbi) > Version [6,4] [] hunk ./Distribution/Simple/Build.hs 298 - ++ ["--make"] hunk ./Distribution/Simple/Build.hs 299 - ++ ["-i" ++ l | l <- nub (hsSourceDirs bi ++ srcLocs)] + ++ ["-i" ++ autogenModulesDir lbi] + ++ ["-i" ++ l | l <- nub (hsSourceDirs bi)] + ++ ["-I" ++ dir | dir <- includeDirs bi] + ++ ["-optc" ++ opt | opt <- ccOptions bi] hunk ./Distribution/Simple/Build.hs 304 - ++ (flags ++ hcOptions GHC (options bi)) - ++ (concat [ ["-package", showPackageId pkg] | pkg <- deps ]) + ++ [ "-odir", odir, "-hidir", odir ] + ++ (concat [ ["-package", showPackageId pkg] | pkg <- packageDeps lbi ]) hunk ./Distribution/Simple/Build.hs 501 + +-- ------------------------------------------------------------ +-- * Building Paths_.hs +-- ------------------------------------------------------------ + +-- The directory in which we put auto-generated modules +autogenModulesDir :: LocalBuildInfo -> String +autogenModulesDir lbi = buildDir lbi `joinFileName` "autogen" + +buildPathsModule :: PackageDescription -> LocalBuildInfo -> IO () +buildPathsModule pkg_descr lbi = + let pragmas + | absolute = "" + | otherwise = + "{-# OPTIONS_GHC -fffi #-}\n"++ + "{-# LANGUAGE FFI #-}\n" + + foreign_imports + | absolute = "" + | otherwise = + "import Foreign\n"++ + "import Foreign.C\n"++ + "import Data.Maybe\n" + + header = + pragmas++ + "module " ++ paths_modulename ++ " (\n"++ + "\tversion,\n"++ + "\tgetBinDir, getLibDir, getDataDir, getLibexecDir,\n"++ + "\tgetDataFileName\n"++ + "\t) where\n"++ + "\n"++ + foreign_imports++ + "import Data.Version"++ + "\n"++ + "\nversion = " ++ show (pkgVersion (package pkg_descr))++ + "\n" + + body + | absolute = + "\nbindir = " ++ show flat_bindir ++ + "\nlibdir = " ++ show flat_libdir ++ + "\ndatadir = " ++ show flat_datadir ++ + "\nlibexecdir = " ++ show flat_libexecdir ++ + "\n"++ + "\ngetBinDir, getLibDir, getDataDir, getLibexecDir :: IO FilePath\n"++ + "getBinDir = return bindir\n"++ + "getLibDir = return libdir\n"++ + "getDataDir = return datadir\n"++ + "getLibexecDir = return libexecdir\n" ++ + "\n"++ + "getDataFileName :: FilePath -> IO FilePath\n"++ + "getDataFileName name = return (datadir ++ "++path_sep++" ++ name)\n" + | otherwise = + "\nprefix = " ++ show (prefix lbi) ++ + "\nbindirrel = " ++ show (prefixRel flat_bindir) ++ + "\nlibdirrel = " ++ show (prefixRel flat_libdir) ++ + "\ndatadirrel = " ++ show (prefixRel flat_datadir) ++ + "\nlibexecdirrel = " ++ show (prefixRel flat_libexecdir) ++ + "\n"++ + "\ngetBinDir :: IO FilePath\n"++ + "getBinDir = do\n"++ + " m <- getPrefix bindirrel\n"++ + " return (fromMaybe prefix m `joinFileName` bindirrel)\n"++ + "getLibDir :: IO FilePath\n"++ + "getLibDir = do\n"++ + " m <- getPrefix bindirrel\n"++ + " return (fromMaybe prefix m `joinFileName` libdirrel)\n"++ + "getDataDir :: IO FilePath\n"++ + "getDataDir = do\n"++ + " m <- getPrefix bindirrel\n"++ + " return (fromMaybe prefix m `joinFileName` datadirrel)\n"++ + "\n"++ + "getDataFileName :: FilePath -> IO FilePath\n"++ + "getDataFileName name = do\n"++ + " dir <- getDataDir\n"++ + " return (dir `joinFileName` name)\n"++ + "\n"++ + get_prefix_stuff + in + writeFile (autogenModulesDir lbi `joinFileName` paths_filename) (header++body) + where + flat_bindir = mkBinDir pkg_descr lbi NoCopyDest + flat_libdir = mkLibDir pkg_descr lbi NoCopyDest + flat_datadir = mkDataDir pkg_descr lbi NoCopyDest + flat_libexecdir = mkLibexecDir pkg_descr lbi NoCopyDest + +#if mingw32_HOST_OS + absolute = hasLibs pkg_descr +#else + absolute = True +#endif + + paths_modulename = "Paths_" ++ fix (pkgName (package pkg_descr)) + paths_filename = paths_modulename ++ ".hs" + + path_sep = show [pathSeparator] + + fix = map fixchar + where fixchar '-' = '_' + fixchar c = c + + prefixRel ('$':'p':'r':'e':'f':'i':'x':s) = s + prefixRel _ = error "buildPathsModule" + +get_prefix_stuff = + "getPrefix :: FilePath -> IO (Maybe FilePath)\n"++ + "getPrefix binDirRel = do \n"++ + " let len = (2048::Int) -- plenty, PATH_MAX is 512 under Win32.\n"++ + " buf <- mallocArray len\n"++ + " ret <- getModuleFileName nullPtr buf len\n"++ + " if ret == 0 \n"++ + " then do free buf; return Nothing\n"++ + " else do s <- peekCString buf\n"++ + " free buf\n"++ + " return (Just (prefixFromExePath s binDirRel))\n"++ + "\n"++ + "foreign import stdcall \"GetModuleFileNameA\" unsafe\n"++ + " getModuleFileName :: Ptr () -> CString -> Int -> IO Int32\n"++ + "\n"++ + "prefixFromExePath :: FilePath -> FilePath -> FilePath\n"++ + "prefixFromExePath exe_path binDirRel\n"++ + " = bindir `joinFileName` foldr joinFileName \".\" dotdots\n"++ + " where\n"++ + " (bindir,exe) = splitFileName exe_path\n"++ + " bincomps = breakFilePath binDirRel -- something like [\".\",\"bin\"]\n"++ + " dotdots = take (length bincomps) (repeat \"..\")\n"++ + "\n"++ + "joinFileName :: String -> String -> FilePath\n"++ + "joinFileName \"\" fname = fname\n"++ + "joinFileName \".\" fname = fname\n"++ + "joinFileName dir \"\" = dir\n"++ + "joinFileName dir fname\n"++ + " | isPathSeparator (last dir) = dir++fname\n"++ + " | otherwise = dir++pathSeparator:fname\n"++ + "\n"++ + "splitFileName p = (reverse (path2++drive), reverse fname)\n"++ + " where\n"++ + " (path,drive) = case p of\n"++ + " (c:':':p) -> (reverse p,[':',c])\n"++ + " _ -> (reverse p,\"\")\n"++ + " (fname,path1) = break isPathSeparator path\n"++ + " path2 = case path1 of\n"++ + " [] -> \".\"\n"++ + " [_] -> path1 -- don't remove the trailing slash if \n"++ + " -- there is only one character\n"++ + " (c:path) | isPathSeparator c -> path\n"++ + " _ -> path1\n"++ + "\n"++ + "breakFilePath :: FilePath -> [String]\n"++ + "breakFilePath = worker []\n"++ + " where worker ac path\n"++ + " | less == path = less:ac\n"++ + " | otherwise = worker (current:ac) less\n"++ + " where (less,current) = splitFileName path\n"++ + "\n"++ + "pathSeparator :: Char\n"++ + "pathSeparator = '\\'\n"++ + "\n"++ + "isPathSeparator :: Char -> Bool\n"++ + "isPathSeparator ch =\n"++ + " ch == '/' || ch == '\\'\n" hunk ./Distribution/Simple/Configure.hs 1 -{-# OPTIONS -fffi #-} - hunk ./Distribution/Simple/Configure.hs 65 -import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..)) +import Distribution.Simple.LocalBuildInfo hunk ./Distribution/Simple/Configure.hs 67 -import Distribution.Setup(ConfigFlags(..)) +import Distribution.Setup(ConfigFlags(..), CopyDest(..)) hunk ./Distribution/Simple/Configure.hs 95 -#if mingw32_HOST_OS || mingw32_TARGET_OS -import Foreign -import Foreign.C -#endif hunk ./Distribution/Simple/Configure.hs 128 - -- prefix - defPrefix <- system_default_prefix - let pref = fromMaybe defPrefix (configPrefix cfg) hunk ./Distribution/Simple/Configure.hs 130 + + -- installation directories + defPrefix <- default_prefix + defDataDir <- default_datadir pkg_descr + let + pref = fromMaybe defPrefix (configPrefix cfg) + my_bindir = fromMaybe default_bindir + (configBinDir cfg) + my_libdir = fromMaybe (default_libdir comp) + (configLibDir cfg) + my_libsubdir = fromMaybe (default_libsubdir comp) + (configLibSubDir cfg) + my_libexecdir = fromMaybe default_libexecdir + (configLibExecDir cfg) + my_datadir = fromMaybe defDataDir + (configDataDir cfg) + my_datasubdir = fromMaybe default_datasubdir + (configDataSubDir cfg) + + -- on Windows, our directories should all be relative to $prefix if we're + -- building an executable, so we can be prefix-independent +#if mingw32_HOST_OS + let checkPrefix (s,('$':'p':'r':'e':'f':'i':'x':_)) = return () + checkPrefix (s,_other) = + die (s ++ " must begin with $prefix for an executable") + mapM_ checkPrefix [ + ("bindir",my_bindir), + ("libdir",my_libdir), + ("libexecdir",my_libexecdir), + ("datadir",my_datadir) + ] +#endif + hunk ./Distribution/Simple/Configure.hs 187 - reportProgram' haddockName haddock - reportProgram' (programName pfesetupProgram) pfe + reportProgram "haddock" haddock hunk ./Distribution/Simple/Configure.hs 194 - let newConfig = updateProgram haddock (configPrograms cfg) hunk ./Distribution/Simple/Configure.hs 199 - return LocalBuildInfo{prefix=pref, compiler=comp, + + let lbi = LocalBuildInfo{prefix=pref, compiler=comp, hunk ./Distribution/Simple/Configure.hs 202 + bindir=my_bindir, + libdir=my_libdir, + libsubdir=my_libsubdir, + libexecdir=my_libexecdir, + datadir=my_datadir, + datasubdir=my_datasubdir, hunk ./Distribution/Simple/Configure.hs 219 + -- FIXME: maybe this should only be printed when verbose? + message $ "Using install prefix: " ++ pref + message $ "Binaries installed in: " ++ mkBinDir pkg_descr lbi NoCopyDest + message $ "Libraries installed in: " ++ mkLibDir pkg_descr lbi NoCopyDest + message $ "Private binaries installed in: " ++ mkLibexecDir pkg_descr lbi NoCopyDest + message $ "Data files installed in: " ++ mkDataDir pkg_descr lbi NoCopyDest + message $ "Using compiler: " ++ p' + message $ "Compiler flavor: " ++ (show f') + message $ "Compiler version: " ++ showVersion ver + message $ "Using package tool: " ++ pkg + reportProgram "haddock" haddock + reportProgram "happy" happy + reportProgram "alex" alex + reportProgram "hsc2hs" hsc2hs + reportProgram "c2hs" c2hs + reportProgram "cpphs" cpphs + reportProgram "greencard" greencard + + return lbi + hunk ./Distribution/Simple/Configure.hs 317 -system_default_prefix :: IO String -#if mingw32_HOST_OS || mingw32_TARGET_OS -# if __HUGS__ -system_default_prefix = - return "C:\\Program Files" -# else -system_default_prefix = - allocaBytes long_path_size $ \pPath -> do - r <- c_SHGetFolderPath nullPtr csidl_PROGRAM_FILES nullPtr 0 pPath - peekCString pPath - where - csidl_PROGRAM_FILES = 0x0026 - long_path_size = 1024 - -foreign import stdcall unsafe "shlobj.h SHGetFolderPathA" - c_SHGetFolderPath :: Ptr () - -> CInt - -> Ptr () - -> CInt - -> CString - -> IO CInt -# endif -#else -system_default_prefix = - return "/usr/local" -#endif - hunk ./Distribution/Simple/Configure.hs 330 - Nothing -> defaultCompilerFlavor + Nothing -> error "Unknown compiler" hunk ./Distribution/Simple/Configure.hs 347 - -defaultCompilerFlavor :: CompilerFlavor -defaultCompilerFlavor = -#if defined(__GLASGOW_HASKELL__) - GHC -#elif defined(__NHC__) - NHC -#elif defined(__HUGS__) - Hugs -#else - error "Unknown compiler" -#endif hunk ./Distribution/Simple/GHCPackageConfig.hs 25 -import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..)) -import Distribution.Simple.Install (mkLibDir) +import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..),mkLibDir) +import Distribution.Setup (CopyDest(..)) hunk ./Distribution/Simple/GHCPackageConfig.hs 85 - import_dirs = [mkLibDir pkg_descr lbi Nothing], - library_dirs = (mkLibDir pkg_descr lbi Nothing : + import_dirs = [mkLibDir pkg_descr lbi NoCopyDest], + library_dirs = (mkLibDir pkg_descr lbi NoCopyDest: hunk ./Distribution/Simple/Install.hs 45 - mkBinDir, - mkLibDir, hunk ./Distribution/Simple/Install.hs 66 -import Distribution.Simple.LocalBuildInfo(LocalBuildInfo(..)) +import Distribution.Simple.LocalBuildInfo ( + LocalBuildInfo(..), mkLibDir, mkBinDir, mkDataDir, mkProgDir) hunk ./Distribution/Simple/Install.hs 70 -import Distribution.Compiler (CompilerFlavor(..), Compiler(..), showCompilerId) +import Distribution.Compiler (CompilerFlavor(..), Compiler(..)) +import Distribution.Setup (CopyFlags, CopyDest(..)) hunk ./Distribution/Simple/Install.hs 74 +import Data.List(any) hunk ./Distribution/Simple/Install.hs 90 - -> (Maybe FilePath,Int) -- ^install-prefix, verbose + -> CopyFlags hunk ./Distribution/Simple/Install.hs 92 -install pkg_descr lbi (install_prefixM,verbose) = do +install pkg_descr lbi (copydest, verbose) = do + when (not (null (dataFiles pkg_descr))) $ do + let dataPref = mkDataDir pkg_descr lbi copydest + createDirectoryIfMissing True dataPref + flip mapM_ (dataFiles pkg_descr) $ \ file -> + copyFileVerbose verbose file (dataPref `joinFileName` file) hunk ./Distribution/Simple/Install.hs 99 - let libPref = mkLibDir pkg_descr lbi install_prefixM - let targetLibPref = mkLibDir pkg_descr lbi Nothing - let binPref = mkBinDir pkg_descr lbi install_prefixM + let libPref = mkLibDir pkg_descr lbi copydest + let binPref = mkBinDir pkg_descr lbi copydest hunk ./Distribution/Simple/Install.hs 105 - Hugs -> installHugs verbose libPref binPref targetLibPref buildPref pkg_descr + Hugs -> do + let progPref = mkProgDir pkg_descr lbi copydest + let targetProgPref = mkProgDir pkg_descr lbi NoCopyDest + installHugs verbose libPref progPref binPref targetProgPref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 172 + -> FilePath -- ^Program install location hunk ./Distribution/Simple/Install.hs 174 - -> FilePath -- ^Library location on target system + -> FilePath -- ^Program location on target system hunk ./Distribution/Simple/Install.hs 178 -installHugs verbose libPref binPref targetLibPref buildPref pkg_descr = do +installHugs verbose libDir installProgDir binDir targetProgDir buildPref pkg_descr = do hunk ./Distribution/Simple/Install.hs 181 - let pkgDir = libPref `joinFileName` "packages" - `joinFileName` pkg_name - try $ removeDirectoryRecursive pkgDir - smartCopySources verbose [buildPref] pkgDir (libModules pkg_descr) hugsInstallSuffixes True - let progBuildDir = buildPref `joinFileName` "programs" - let progInstallDir = libPref `joinFileName` "programs" - let progTargetDir = targetLibPref `joinFileName` "programs" - when (not (null (executables pkg_descr))) $ - createDirectoryIfMissing True binPref + try $ removeDirectoryRecursive libDir + smartCopySources verbose [buildPref] libDir (libModules pkg_descr) hugsInstallSuffixes True + let buildProgDir = buildPref `joinFileName` "programs" + when (any (buildable . buildInfo) (executables pkg_descr)) $ + createDirectoryIfMissing True binDir hunk ./Distribution/Simple/Install.hs 187 - let buildDir = progBuildDir `joinFileName` exeName exe - let installDir = progInstallDir `joinFileName` exeName exe - let targetDir = progTargetDir `joinFileName` exeName exe + let buildDir = buildProgDir `joinFileName` exeName exe + let installDir = installProgDir `joinFileName` exeName exe + let targetDir = targetProgDir `joinFileName` exeName exe hunk ./Distribution/Simple/Install.hs 197 - let exeFile = binPref `joinFileName` exeName exe `joinFileExt` "bat" + let exeFile = binDir `joinFileName` exeName exe `joinFileExt` "bat" hunk ./Distribution/Simple/Install.hs 202 - let exeFile = binPref `joinFileName` exeName exe + let exeFile = binDir `joinFileName` exeName exe hunk ./Distribution/Simple/Install.hs 217 - mkLibDir pkg_descr lbi Nothing + mkLibDir pkg_descr lbi NoCopyDest hunk ./Distribution/Simple/Install.hs 225 - where exeDir = mkLibDir pkg_descr lbi Nothing `joinFileName` "programs" + where exeDir = mkLibDir pkg_descr lbi NoCopyDest `joinFileName` "programs" hunk ./Distribution/Simple/Install.hs 233 - --- ----------------------------------------------------------------------------- --- Installation policies - -mkLibDir :: PackageDescription -> LocalBuildInfo -> Maybe FilePath -> FilePath -mkLibDir pkg_descr lbi install_prefixM = - case compilerFlavor hc of - Hugs -> libDir `joinFileName` "hugs" - _ -> libDir `joinFileName` showPackageId (package pkg_descr) - `joinFileName` showCompilerId hc - where - hc = compiler lbi - libDir = (fromMaybe (prefix lbi) install_prefixM) -#if mingw32_HOST_OS || mingw32_TARGET_OS - `joinFileName` "Haskell" -#else - `joinFileName` "lib" -#endif - -mkBinDir :: PackageDescription -> LocalBuildInfo -> Maybe FilePath -> FilePath -mkBinDir pkg_descr lbi install_prefixM = - (fromMaybe (prefix lbi) install_prefixM) -#if mingw32_HOST_OS || mingw32_TARGET_OS - `joinFileName` showPackageId (package pkg_descr) -#endif - `joinFileName` "bin" hunk ./Distribution/Simple/LocalBuildInfo.hs 1 +{-# OPTIONS -fffi #-} + hunk ./Distribution/Simple/LocalBuildInfo.hs 44 -module Distribution.Simple.LocalBuildInfo ( LocalBuildInfo(..) ) - where +module Distribution.Simple.LocalBuildInfo ( + LocalBuildInfo(..), + default_prefix, + default_bindir, + default_libdir, + default_libsubdir, + default_libexecdir, + default_datadir, + default_datasubdir, + mkLibDir, mkBinDir, mkLibexecDir, mkDataDir, mkProgDir, + substDir, + ) where hunk ./Distribution/Simple/LocalBuildInfo.hs 58 -import Distribution.Program (ProgramLocation, Program, ProgramConfiguration) hunk ./Distribution/Simple/LocalBuildInfo.hs 65 + bindir :: FilePath, + -- ^ The bin directory + libdir :: FilePath, + -- ^ The lib directory + libsubdir :: FilePath, + -- ^ Subdirectory of libdir into which libraries are installed + libexecdir :: FilePath, + -- ^ The lib directory + datadir :: FilePath, + -- ^ The data directory + datasubdir :: FilePath, + -- ^ Subdirectory of datadir into which data files are installed hunk ./Distribution/Simple/LocalBuildInfo.hs 100 +-- ----------------------------------------------------------------------------- +-- Default directories + +{- +The defaults are as follows: + +Windows: + prefix = C:\Program Files + bindir = $prefix\$pkgid + libdir = $prefix\Haskell + libsubdir = $pkgid\$compiler + datadir = $prefix (for an executable) + = $prefix\Common Files (for a library) + datasubdir = $pkgid + libexecdir = $prefix\$pkgid + +Unix: + prefix = /usr/local + bindir = $prefix/bin + libdir = $prefix/lib/$pkgid/$compiler + libsubdir = $pkgid/$compiler + datadir = $prefix/share/$pkgid + datasubdir = $pkgid + libexecdir = $prefix/libexec +-} + +default_prefix :: IO String +#if mingw32_HOST_OS || mingw32_TARGET_OS +# if __HUGS__ +default_prefix = return "C:\\Program Files" +# else +default_prefix = getProgramFilesDir +# endif +#else +default_prefix = return "/usr/local" +#endif + +#if mingw32_HOST_OS || mingw32_TARGET_OS +getProgramFilesDir = do + m <- shGetFolderPath csidl_PROGRAM_FILES + return (fromMaybe "C:\\Program Files" m) + +getCommonFilesDir = do + m <- shGetFolderPath csidl_PROGRAM_FILES_COMMON + case m of + Nothing -> getProgramFilesDir + Just s -> return s + +shGetFolderPath id = + allocaBytes long_path_size $ \pPath -> do + r <- c_SHGetFolderPath nullPtr id nullPtr 0 pPath + if (r /= 0) + then return Nothing + else do s <- peekCString pPath; return (Just s) + where + long_path_size = 1024 + +csidl_PROGRAM_FILES = 0x0026 +csidl_PROGRAM_FILES_COMMON = 0x002b + +foreign import stdcall unsafe "shlobj.h SHGetFolderPathA" + c_SHGetFolderPath :: Ptr () + -> CInt + -> Ptr () + -> CInt + -> CString + -> IO CInt +#endif + +default_bindir = "$prefix" `joinFileName` +#if mingw32_HOST_OS || mingw32_TARGET_OS + "$pkgid" +#else + "bin" +#endif + +default_libdir hc = "$prefix" `joinFileName` +#if mingw32_HOST_OS || mingw32_TARGET_OS + "Haskell" +#else + "lib" +#endif + +default_libsubdir hc = + case compilerFlavor hc of + Hugs -> "hugs" `joinFileName` "packages" `joinFileName` "$pkg" + _ -> "$pkgid" `joinFileName` "$compiler" + +default_libexecdir = "$prefix" `joinFileName` +#if mingw32_HOST_OS || mingw32_TARGET_OS + "$pkgid" +#else + "libexec" +#endif + +default_datadir :: PackageDescription -> IO FilePath +default_datadir pkg_descr +#if mingw32_HOST_OS || mingw32_TARGET_OS + | hasLibs pkg_descr = getCommonFilesDir + | otherwise = return "$prefix" +#else + = return ("$prefix" `joinFileName` "share") +#endif + +default_datasubdir = "$pkgid" + + +mkBinDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath +mkBinDir pkg_descr lbi0 copydest = + prepend copydest $ + substDir pkg_descr lbi (bindir lbi) + where + lbi = case copydest of + CopyPrefix d -> lbi0{prefix=d} + _otherwise -> lbi0 + +mkLibDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath +mkLibDir pkg_descr lbi0 copydest = + prepend copydest $ + substDir pkg_descr lbi (libdir lbi) `joinFileName` + substDir pkg_descr lbi (libsubdir lbi) + where + lbi = case copydest of + CopyPrefix d -> lbi0{prefix=d} + _otherwise -> lbi0 + +mkLibexecDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath +mkLibexecDir pkg_descr lbi0 copydest = + prepend copydest $ + substDir pkg_descr lbi (libexecdir lbi) + where + lbi = case copydest of + CopyPrefix d -> lbi0{prefix=d} + _otherwise -> lbi0 + +mkDataDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath +mkDataDir pkg_descr lbi0 copydest = + prepend copydest $ + substDir pkg_descr lbi (datadir lbi) `joinFileName` + substDir pkg_descr lbi (datasubdir lbi) + where + lbi = case copydest of + CopyPrefix d -> lbi0{prefix=d} + _otherwise -> lbi0 + +-- | Directory for program modules (Hugs only). +mkProgDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath +mkProgDir pkg_descr lbi0 copydest = + prepend copydest $ + substDir pkg_descr lbi (libdir lbi) `joinFileName` + "hugs" `joinFileName` "programs" + where + lbi = case copydest of + CopyPrefix d -> lbi0{prefix=d} + _otherwise -> lbi0 + +prepend (CopyTo p) q = p `joinFileName` dropAbsolutePrefix q +prepend _ q = q + +substDir :: PackageDescription -> LocalBuildInfo -> String -> String +substDir pkg_descr lbi s = loop s + where + loop "" = "" + loop ('$':'p':'r':'e':'f':'i':'x':s) + = prefix lbi ++ loop s + loop ('$':'c':'o':'m':'p':'i':'l':'e':'r':s) + = showCompilerId (compiler lbi) ++ loop s + loop ('$':'p':'k':'g':'i':'d':s) + = showPackageId (package pkg_descr) ++ loop s + loop ('$':'p':'k':'g':s) + = pkgName (package pkg_descr) ++ loop s + loop ('$':'v':'e':'r':'s':'i':'o':'n':s) + = show (pkgVersion (package pkg_descr)) ++ loop s + loop ('$':'$':s) = '$' : loop s + loop (c:s) = c : loop s hunk ./Distribution/Simple/Register.hs 65 -import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..)) -import Distribution.Simple.Install (mkLibDir) +import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..), mkLibDir) hunk ./Distribution/Simple/Register.hs 67 -import Distribution.Setup (RegisterFlags) +import Distribution.Setup (RegisterFlags, CopyDest(..)) hunk ./Distribution/Simple/Register.hs 239 - IPI.importDirs = [mkLibDir pkg_descr lbi Nothing], - IPI.libraryDirs = (mkLibDir pkg_descr lbi Nothing) : extraLibDirs bi, + IPI.importDirs = [mkLibDir pkg_descr lbi NoCopyDest], + IPI.libraryDirs = (mkLibDir pkg_descr lbi NoCopyDest) : extraLibDirs bi, hunk ./Distribution/Simple/SrcDist.hs 104 + sequence_ [copyFileVerbose verbose df (targetDir `joinFileName` df) | df <- dataFiles pkg_descr] hunk ./Distribution/Simple.hs 126 - runTests :: Args -> Bool -> LocalBuildInfo -> IO ExitCode, -- ^Used for @.\/setup test@ + runTests :: Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ExitCode, -- ^Used for @.\/setup test@ hunk ./Distribution/Simple.hs 136 - postConf :: Args -> ConfigFlags -> LocalBuildInfo -> IO ExitCode, + postConf :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 148 - postBuild :: Args -> Int -> LocalBuildInfo -> IO ExitCode, + postBuild :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 155 - postClean :: Args -> Int -> LocalBuildInfo -> IO ExitCode, + postClean :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 162 - -> (Maybe FilePath,Int) -- install-prefix, verbose + -> CopyFlags -- install-prefix, verbose hunk ./Distribution/Simple.hs 165 - postCopy :: Args -> CopyFlags -> LocalBuildInfo -> IO ExitCode, + postCopy :: Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 178 - postInst :: Args -> InstallFlags -> LocalBuildInfo -> IO ExitCode, + postInst :: Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 191 - postSDist :: Args -> Int -> LocalBuildInfo -> IO ExitCode, + postSDist :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 198 - postReg :: Args -> RegisterFlags -> LocalBuildInfo -> IO ExitCode, + postReg :: Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 205 - postUnreg :: Args -> RegisterFlags -> LocalBuildInfo -> IO ExitCode, + postUnreg :: Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 212 - postHaddock :: Args -> Int -> LocalBuildInfo -> IO ExitCode, + postHaddock :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 219 - postPFE :: Args -> Int -> LocalBuildInfo -> IO ExitCode + postPFE :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode hunk ./Distribution/Simple.hs 276 - postHook postConf args flags localbuildinfo + postHook postConf args flags pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 286 - postHook postBuild args flags localbuildinfo + postHook postBuild args flags pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 296 - postHook postHaddock args verbose localbuildinfo + postHook postHaddock args verbose pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 306 - postHook postPFE args verbose localbuildinfo + postHook postPFE args verbose pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 316 - postHook postClean args verbose localbuildinfo + postHook postClean args verbose pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 326 - postHook postCopy args flags localbuildinfo + postHook postCopy args flags pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 336 - postHook postInst args flags localbuildinfo + postHook postInst args flags pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 347 - postHook postSDist args verbose localbuildinfo + postHook postSDist args verbose pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 354 - out <- (runTests h) args False localbuildinfo + out <- (runTests h) args False pkg_descr_in localbuildinfo hunk ./Distribution/Simple.hs 366 - postHook postReg args flags localbuildinfo + postHook postReg args flags pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 375 - postHook postUnreg args flags localbuildinfo + postHook postUnreg args flags pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 389 - postHook f args flags localbuildinfo + postHook f args flags pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 392 - Just h -> f h args flags localbuildinfo + Just h -> f h args flags pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 570 - res _ _ _ = return ExitSuccess + res _ _ _ _ = return ExitSuccess hunk ./Distribution/Simple.hs 608 - where defaultPostConf :: Args -> ConfigFlags -> LocalBuildInfo -> IO ExitCode - defaultPostConf args flags lbi + where defaultPostConf :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode + defaultPostConf args flags pkg_descr lbi hunk ./Distribution/Simple.hs 611 - args' = addOption "prefix" (configPrefix flags) args + args' = configureArgs flags ++ args hunk ./Distribution/Simple.hs 625 - addOption :: String -> Maybe String -> [String] -> [String] - addOption _flag Nothing opts = opts - addOption flag (Just value) opts = - ("--" ++ flag ++ "=" ++ value) : opts - hunk ./Distribution/Simple.hs 638 - install pkg_descr localbuildinfo (Nothing, verbose) + install pkg_descr localbuildinfo (NoCopyDest, verbose) hunk ./TODO 23 +Remove 'util' dependency. Do something for ghc 6.2.2. + hunk ./Distribution/PackageDescription.hs 741 + dataFiles=[], hunk ./Distribution/Setup.hs 137 + configPrograms = defaultProgramConfiguration, hunk ./Distribution/Setup.hs 208 + + | Prefix FilePath + | BinDir FilePath + | LibDir FilePath + | LibSubDir FilePath + | LibExecDir FilePath + | DataDir FilePath + | DataSubDir FilePath + + | ProgramArgs String String -- program name, arguments + | WithProgram String FilePath -- program name, location + hunk ./Distribution/Setup.hs 329 - Option "" ["with-haddock"] (reqPathArg WithHaddock) - "give the path to haddock", + Option "" ["bindir"] (reqDirArg BinDir) + "installation directory for executables", + Option "" ["libdir"] (reqDirArg LibDir) + "installation directory for libraries", + Option "" ["libsubdir"] (reqDirArg LibSubDir) + "subdirectory of libdir in which libs are installed", + Option "" ["libexecdir"] (reqDirArg LibExecDir) + "installation directory for program executables", + Option "" ["datadir"] (reqDirArg DataDir) + "installation directory for read-only data", + Option "" ["datasubdir"] (reqDirArg DataSubDir) + "subdirectory of datadir in which data files are installed", hunk ./Distribution/Simple/Configure.hs 181 - -- FIXME: maybe this should only be printed when verbose? - message $ "Using install prefix: " ++ pref - message $ "Using compiler: " ++ p' - message $ "Compiler flavor: " ++ (show f') - message $ "Compiler version: " ++ showVersion ver - message $ "Using package tool: " ++ pkg - reportProgram "haddock" haddock - reportProgram "happy" happy - reportProgram "alex" alex - reportProgram "hsc2hs" hsc2hs - reportProgram "c2hs" c2hs - reportProgram "cpphs" cpphs - reportProgram "greencard" greencard + + let newConfig = updateProgram haddock (configPrograms cfg) + hunk ./Distribution/Simple/Configure.hs 219 - reportProgram "haddock" haddock + + reportProgram' haddockName haddock + reportProgram' (programName pfesetupProgram) pfe hunk ./Distribution/Simple/LocalBuildInfo.hs 57 + hunk ./Distribution/Simple/LocalBuildInfo.hs 59 +import Distribution.Program (ProgramLocation, Program, ProgramConfiguration) hunk ./Distribution/Simple/LocalBuildInfo.hs 61 +import Distribution.PackageDescription (PackageDescription(..), hasLibs) +import Distribution.Package (PackageIdentifier(..), showPackageId) +import Distribution.Compiler (Compiler(..), CompilerFlavor(..), showCompilerId) +import Distribution.Setup (CopyDest(..)) +import Distribution.Compat.FilePath +import Data.Maybe (fromMaybe) +#if mingw32_HOST_OS || mingw32_TARGET_OS +import Foreign +import Foreign.C +#endif hunk ./Distribution/Program.hs 72 +-- FIXME: Add ranlib! hunk ./Distribution/Setup.hs 138 - configHcFlavor = Nothing, + configHcFlavor = defaultCompilerFlavor, hunk ./Distribution/Simple/Install.hs 147 - Just ranLibLoc -> do rawSystemVerbose verbose "ranlib" [libTargetLoc] - ifProf $ rawSystemVerbose verbose "ranlib" [profLibTargetLoc] + Just ranLibLoc -> do rawSystemVerbose verbose ranLibLoc [libTargetLoc] + ifProf $ rawSystemVerbose verbose ranLibLoc [profLibTargetLoc] hunk ./tests/ModuleTest.hs 188 - doesFileExist "dist/test-1.0.tgz" >>= + doesFileExist "dist/test-1.0.tar.gz" >>= hunk ./tests/depOnLib/test.cabal 12 -hs-source-dir: mains +hs-source-dirs: mains, libs hunk ./tests/withHooks/Setup.lhs 9 +> import Distribution.Setup(CopyFlags, CopyDest(..)) hunk ./tests/withHooks/Setup.lhs 40 -> testing :: Args -> Bool -> a -> IO ExitCode -> testing [] _ _ = return ExitSuccess -> testing a@(h:_) _ _ = do putStrLn $ "testing: " ++ (show a) -> if h == "--pass" -> then return ExitSuccess -> else return (ExitFailure 1) +> testing :: Args -> Bool -> a -> b -> IO ExitCode +> testing [] _ _ _ = return ExitSuccess +> testing a@(h:_) _ _ _ = do putStrLn $ "testing: " ++ (show a) +> if h == "--pass" +> then return ExitSuccess +> else return (ExitFailure 1) hunk ./tests/withHooks/Setup.lhs 49 -> -> (Maybe FilePath,Int) -- ^install-prefix, verbose +> -> CopyFlags -- ^install-prefix, verbose hunk ./tests/withHooks/Setup.lhs 51 -> myCopyHook a b c@((Just p), _) = do +> myCopyHook a b c@((CopyPrefix p), _) = do hunk ./tests/withHooks/Setup.lhs 64 -> postConf=(\_ _ _-> return ExitSuccess), +> postConf=(\_ _ _ _ -> return ExitSuccess), hunk ./tests/withHooks/Setup.lhs 66 -> postClean=(\_ _ _ -> removeFile "Setup.buildinfo" >> return ExitSuccess), +> postClean=(\_ _ _ _ -> removeFile "Setup.buildinfo" >> return ExitSuccess), hunk ./Distribution/Program.hs 18 + , ranlibProgram + , arProgram hunk ./Distribution/Program.hs 73 - , pfesetupProgram] --- FIXME: Add ranlib! + , pfesetupProgram + , ranlibProgram + , arProgram] hunk ./Distribution/Program.hs 90 + , ranlib, ar hunk ./Distribution/Program.hs 125 + +ranlibProgram :: Program +ranlibProgram = simpleProgram "ranlib" + +arProgram :: Program +arProgram = simpleProgram "ar" hunk ./Distribution/Simple/Configure.hs 87 - updateProgram, haddockProgram, pfesetupProgram) + updateProgram, haddockProgram, pfesetupProgram, + ranlibProgram, arProgram) hunk ./Distribution/Simple/Configure.hs 175 + ranlib <- lookupProgram (programName ranlibProgram) (configPrograms cfg) + ar <- lookupProgram (programName arProgram) (configPrograms cfg) hunk ./Distribution/Simple/Configure.hs 225 + reportProgram' (programName ranlibProgram) ranlib + reportProgram' (programName arProgram) ar hunk ./Distribution/Simple/Install.hs 66 +import Distribution.Program(ProgramConfiguration, Program(..), ProgramLocation(..), + rawSystemProgram, ranlibProgram, + lookupProgram, arProgram) hunk ./Distribution/Simple/Install.hs 106 - GHC -> do when (hasLibs pkg_descr) (installLibGHC verbose (withProfLib lbi) (withGHCiLib lbi) libPref buildPref pkg_descr) + GHC -> do when (hasLibs pkg_descr) (installLibGHC verbose (withPrograms lbi) (withProfLib lbi) (withGHCiLib lbi) libPref buildPref pkg_descr) hunk ./Distribution/Simple/Install.hs 129 + -> ProgramConfiguration hunk ./Distribution/Simple/Install.hs 135 -installLibGHC verbose hasProf hasGHCi pref buildPref pd@PackageDescription{library=Just l, - package=p} +installLibGHC verbose programConf hasProf hasGHCi pref buildPref + pd@PackageDescription{library=Just l, + package=p} hunk ./Distribution/Simple/Install.hs 150 - mRanlibLoc <- findExecutable "ranlib" - case mRanlibLoc of - Just ranLibLoc -> do rawSystemVerbose verbose ranLibLoc [libTargetLoc] - ifProf $ rawSystemVerbose verbose ranLibLoc [profLibTargetLoc] - return () - Nothing -> do mArLoc <- findExecutable "ar" - case mArLoc of - Nothing -> setupMessage "Warning: Unable to generate index for library (missing ranlib and ar)" pd - Just arLoc -> do rawSystemVerbose verbose "ar" ["-s", libTargetLoc] - ifProf $ rawSystemVerbose verbose "ar" ["-s", profLibTargetLoc] - return () + let progName = programName $ ranlibProgram + mProg <- lookupProgram progName programConf + case foundProg mProg of + Just rl -> do rawSystemProgram verbose rl [libTargetLoc] + ifProf $ rawSystemProgram verbose rl [profLibTargetLoc] + + Nothing -> do let progName = programName $ arProgram + mProg <- lookupProgram progName programConf + case mProg of + Just ar -> do rawSystemProgram verbose ar ["-s", libTargetLoc] + ifProf $ rawSystemProgram verbose ar ["-s", profLibTargetLoc] + Nothing -> setupMessage "Warning: Unable to generate index for library (missing ranlib and ar)" pd + return () hunk ./Distribution/Simple/Install.hs 165 -installLibGHC _ _ _ _ _ PackageDescription{library=Nothing} +installLibGHC _ _ _ _ _ _ PackageDescription{library=Nothing} hunk ./Distribution/Simple/Install.hs 167 + +-- Also checks whether the program was actually found. +foundProg :: Maybe Program -> Maybe Program +foundProg Nothing = Nothing +foundProg (Just Program{programLocation=EmptyLocation}) = Nothing +foundProg x = x hunk ./Distribution/Program.hs 12 + , lookupPrograms hunk ./Distribution/Program.hs 34 +import Data.Maybe(catMaybes) hunk ./Distribution/Program.hs 183 + +lookupPrograms :: ProgramConfiguration -> IO [(String, Maybe Program)] +lookupPrograms conf@(ProgramConfiguration fm) = do + let l = eltsFM fm + mapM (\p -> do fp <- lookupProgram (programName p) conf + return (programName p, fp) + ) l hunk ./Distribution/Simple/Configure.hs 87 - updateProgram, haddockProgram, pfesetupProgram, - ranlibProgram, arProgram) + lookupPrograms, updateProgram, defaultProgramConfiguration) hunk ./Distribution/Simple/Configure.hs 170 - let haddockName = programName haddockProgram - -- FIX: just do a map over all of them :) - haddock <- lookupProgram haddockName (configPrograms cfg) - pfe <- lookupProgram (programName pfesetupProgram) (configPrograms cfg) - ranlib <- lookupProgram (programName ranlibProgram) (configPrograms cfg) - ar <- lookupProgram (programName arProgram) (configPrograms cfg) hunk ./Distribution/Simple/Configure.hs 171 + foundPrograms <- lookupPrograms (configPrograms cfg) + hunk ./Distribution/Simple/Configure.hs 180 - let newConfig = updateProgram haddock (configPrograms cfg) + let newConfig = foldr (\(_, p) c -> updateProgram p c) (configPrograms cfg) foundPrograms hunk ./Distribution/Simple/Configure.hs 218 - reportProgram' haddockName haddock - reportProgram' (programName pfesetupProgram) pfe - reportProgram' (programName ranlibProgram) ranlib - reportProgram' (programName arProgram) ar + mapM (\(s,p) -> reportProgram' s p) foundPrograms + hunk ./Distribution/Simple/Configure.hs 74 - BuildInfo(..), Executable(..), setupMessage) + BuildInfo(..), Executable(..), setupMessage, hasLibs) hunk ./Distribution/Simple/Configure.hs 158 - ("libexecdir",my_libexecdir), - ("datadir",my_datadir) + ("libexecdir",my_libexecdir) hunk ./Distribution/Simple/Configure.hs 160 + unless (hasLibs pkg_descr) $ + checkPrefix ("datadir",my_datadir) hunk ./Distribution/Simple/Utils.hs 97 -import System.Directory (getDirectoryContents, getCurrentDirectory, - doesFileExist, removeFile, getPermissions, executable) +import System.Directory (getDirectoryContents, getCurrentDirectory + , doesFileExist, removeFile, getPermissions + , Permissions(executable)) hunk ./Cabal.cabal 4 --- We want "base, unix" on Unix and just "base" on Windows, but can't --- express that directly, so we fake it by depending on util. -Build-Depends: base, util + +-- Util dependency removed. This may break ghc 6.2 builds :( Will +-- have to figure something out for ghc 6.2 +Build-Depends: base hunk ./Cabal.cabal 4 - hunk ./Distribution/Compat/FilePath.hs 30 - -- * Filename extensions - , exeExtension - , objExtension - , dllExtension + -- * Filename extensions + , exeExtension + , objExtension + , dllExtension hunk ./Distribution/Compat/FilePath.hs 94 - "" -> [pathSeparator] - p -> p + "" -> [pathSeparator] + p -> p hunk ./Distribution/Compat/FilePath.hs 114 - (suf@(_:_),_:pre) -> (reverse (pre++path), reverse suf) - _ -> (p, []) + (suf@(_:_),_:pre) -> (reverse (pre++path), reverse suf) + _ -> (p, []) hunk ./Distribution/Compat/FilePath.hs 310 - getDrive (d:':':_) ds - | not (d `elem` ds) = d:ds - getDrive _ ds = ds + getDrive (d:':':_) ds + | not (d `elem` ds) = d:ds + getDrive _ ds = ds hunk ./Distribution/Compat/FilePath.hs 354 -parseSearchPath path = split searchPathSeparator path +parseSearchPath path = split path hunk ./Distribution/Compat/FilePath.hs 356 - split :: Char -> String -> [String] - split c s = - case rest of - [] -> [chunk] - _:rest' -> chunk : split c rest' + split :: String -> [String] + split s = + case rest' of + [] -> [chunk] + _:rest -> chunk : split rest hunk ./Distribution/Compat/FilePath.hs 362 - (chunk, rest) = break (==c) s + chunk = + case chunk' of +#ifdef mingw32_HOST_OS + ('\"':xs@(_:_)) | last xs == '\"' -> init xs +#endif + _ -> chunk' + + (chunk', rest') = break (==searchPathSeparator) s hunk ./package.conf.in 21 + Distribution.PreProcess.Unlit, + Distribution.Program, hunk ./package.conf.in 26 - Distribution.PreProcess.Unlit, hunk ./Distribution/Simple/Register.hs 262 - let theName = pkgName (package pkg_descr) hunk ./Distribution/Simple/Register.hs 275 - then ["unregister",theName] - else ["--remove-package="++theName] + then ["unregister",showPackageId (package pkg_descr)] + else ["--remove-package="++(pkgName $ package pkg_descr)] hunk ./TODO 11 +add version number to unregister script + hunk ./debian/changelog 1 +haskell-cabal (1.1.3) unstable; urgency=low + + * Release candidate for 1.2. + * WARNING: Interfaces not documented in the user's guide may + change in future releases. + * Move building of GHCi .o libs to the build phase rather than + register phase. (from Duncan Coutts) + * Use .tar.gz for source package extension + * Uses GHC instead of cpphs if the latter is not available + * Added experimental "command hooks" which completely override the + default behavior of a command. + * Some bugfixes + + -- Isaac Jones Sat, 22 Oct 2005 11:38:59 -0700 + hunk ./tests/HUnit-1.0/HUnit.cabal 7 -Build-Depends: haskell-src +Build-Depends: haskell-src, haskell98 hunk ./tests/recursive/recursive.cabal 2 +build-depends: base hunk ./tests/twoMains/test.cabal 5 -build-depends: base +build-depends: base, haskell98 hunk ./tests/wash2hs/wash2hs.cabal 4 -Build-Depends: base, text, lang +Build-Depends: base, text, lang, haskell98 hunk ./TODO 3 -** Got basic haddock stuff working, --with-haddock and --haddock-args. - Next some other programs, then non-preprocessor, then the - preprocessors, finally the compilers. Work w/ backward - compatibility here. - hunk ./TODO 6 -add version number to unregister script - -For the release notes: -Cabal 1.1.1 cannot read Cabal 1.0's .setup-config files. Users will -need to re-run the configure command for all their projects after -upgrading from Cabal 1.0. Otherwise, they will get: -C:\software\cabal>runghc Setup.lhs build -Setup.lhs: error reading ./.setup-config; run "setup configure" command? - -It is not clear how to build an executable whose Main module is -preprocessed. The following does not work: -Executable: Foo -Main-is: Main.hsc - -Remove 'util' dependency. Do something for ghc 6.2.2. - -Cabal does not handle dependencies for HSC2HS correctly. For example, -if Foo.hsc has - #include "x.h" -then Foo.hs should get regenerated whenever x.h is modified. However, -Cabal only regenerates Foo.hs when Foo.hsc has been modified. Please -let me know if you want a complete testcase. - -- Brian - -* Clarify build-depends; unix? posix? utils? see journal entry of aug - 22, 2005. - hunk ./TODO 8 -* REMOVE THESE FLAGS: add flags The patch adds a couple extra configure options, - --enable-library-for-ghci / --disable-library-for-ghci or whatever - they end up being, to the manual. Which is default? Add test case - for this. - hunk ./TODO 13 -* Move Distribution and everything - into a subdirectory, so we can build the Setup file with the normal - invocation of cabal? - -* add a cabal-version field? - -* ignore unknown fields? (--force?) - hunk ./TODO 46 -* do something with stub files generated by ghc? - -* Decide on interface -** Which fields are required, which targets required. -** which Distribution.* things won't change? -** document - hunk ./TODO 72 - -* do we have to run configure before clean? - -* Preprocessors -** chain of preprocessors -** what other preprocessors can't unlit? hunk ./Distribution/Compat/Directory.hs 6 -#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 604 hunk ./Distribution/Compat/FilePath.hs 36 -#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 604 hunk ./Distribution/Simple/Build.hs 61 - mkBinDir, mkLibDir, mkDataDir, - mkLibexecDir) + mkBinDir, mkBinDirRel, + mkLibDir, mkLibDirRel, + mkDataDir,mkDataDirRel, + mkLibexecDir, mkLibexecDirRel) +import Distribution.Simple.Configure (localBuildInfoFile) hunk ./Distribution/Simple/Build.hs 76 -import Data.Maybe(mapMaybe, maybeToList) +import Data.Maybe(mapMaybe, maybeToList, fromJust) hunk ./Distribution/Simple/Build.hs 84 -import System.Directory (removeFile) +import System.Directory (removeFile, getModificationTime, doesFileExist) hunk ./Distribution/Simple/Build.hs 519 - "{-# LANGUAGE FFI #-}\n" + "{-# LANGUAGE ForeignFunctionInterface #-}\n" hunk ./Distribution/Simple/Build.hs 559 - "\nbindirrel = " ++ show (prefixRel flat_bindir) ++ - "\nlibdirrel = " ++ show (prefixRel flat_libdir) ++ - "\ndatadirrel = " ++ show (prefixRel flat_datadir) ++ - "\nlibexecdirrel = " ++ show (prefixRel flat_libexecdir) ++ + "\nbindirrel = " ++ show (fromJust flat_bindirrel) ++ hunk ./Distribution/Simple/Build.hs 562 - "getBinDir = do\n"++ - " m <- getPrefix bindirrel\n"++ - " return (fromMaybe prefix m `joinFileName` bindirrel)\n"++ + "getBinDir = getPrefixDirRel bindirrel\n\n"++ hunk ./Distribution/Simple/Build.hs 564 - "getLibDir = do\n"++ - " m <- getPrefix bindirrel\n"++ - " return (fromMaybe prefix m `joinFileName` libdirrel)\n"++ + "getLibDir = "++mkGetDir flat_libdir flat_libdirrel++"\n\n"++ hunk ./Distribution/Simple/Build.hs 566 - "getDataDir = do\n"++ - " m <- getPrefix bindirrel\n"++ - " return (fromMaybe prefix m `joinFileName` datadirrel)\n"++ - "\n"++ + "getDataDir = "++mkGetDir flat_datadir flat_datadirrel++"\n\n"++ + "getLibexecDir :: IO FilePath\n"++ + "getLibexecDir = "++mkGetDir flat_libexecdir flat_libexecdirrel++"\n\n"++ hunk ./Distribution/Simple/Build.hs 575 - in - writeFile (autogenModulesDir lbi `joinFileName` paths_filename) (header++body) + in do btime <- getModificationTime localBuildInfoFile + exists <- doesFileExist paths_filepath + ptime <- if exists + then getModificationTime paths_filepath + else return btime + if btime >= ptime + then writeFile paths_filepath (header++body) + else return () hunk ./Distribution/Simple/Build.hs 584 - flat_bindir = mkBinDir pkg_descr lbi NoCopyDest - flat_libdir = mkLibDir pkg_descr lbi NoCopyDest - flat_datadir = mkDataDir pkg_descr lbi NoCopyDest - flat_libexecdir = mkLibexecDir pkg_descr lbi NoCopyDest + flat_bindir = mkBinDir pkg_descr lbi NoCopyDest + flat_bindirrel = mkBinDirRel pkg_descr lbi NoCopyDest + flat_libdir = mkLibDir pkg_descr lbi NoCopyDest + flat_libdirrel = mkLibDirRel pkg_descr lbi NoCopyDest + flat_datadir = mkDataDir pkg_descr lbi NoCopyDest + flat_datadirrel = mkDataDirRel pkg_descr lbi NoCopyDest + flat_libexecdir = mkLibexecDir pkg_descr lbi NoCopyDest + flat_libexecdirrel = mkLibexecDirRel pkg_descr lbi NoCopyDest + + mkGetDir dir (Just dirrel) = "getPrefixDirRel " ++ show dirrel + mkGetDir dir Nothing = "return " ++ show dir hunk ./Distribution/Simple/Build.hs 597 - absolute = hasLibs pkg_descr + absolute = hasLibs pkg_descr || flat_bindirrel == Nothing hunk ./Distribution/Simple/Build.hs 604 + paths_filepath = autogenModulesDir lbi `joinFileName` paths_filename hunk ./Distribution/Simple/Build.hs 612 - prefixRel ('$':'p':'r':'e':'f':'i':'x':s) = s - prefixRel _ = error "buildPathsModule" - hunk ./Distribution/Simple/Build.hs 613 - "getPrefix :: FilePath -> IO (Maybe FilePath)\n"++ - "getPrefix binDirRel = do \n"++ + "getPrefixDirRel :: FilePath -> IO FilePath\n"++ + "getPrefixDirRel dirRel = do \n"++ hunk ./Distribution/Simple/Build.hs 619 - " then do free buf; return Nothing\n"++ - " else do s <- peekCString buf\n"++ - " free buf\n"++ - " return (Just (prefixFromExePath s binDirRel))\n"++ + " then do free buf;\n"++ + " return (prefix `joinFileName` dirRel)\n"++ + " else do exePath <- peekCString buf\n"++ + " free buf\n"++ + " let (bindir,_) = splitFileName exePath\n"++ + " return (prefixFromBinDir bindir bindirrel `joinFileName` dirRel)\n"++ + " where\n"++ + " prefixFromBinDir bindir path\n"++ + " | path' == \".\" = bindir'\n"++ + " | otherwise = prefixFromBinDir bindir' path'\n"++ + " where\n"++ + " (bindir',_) = splitFileName bindir\n"++ + " (path', _) = splitFileName path\n"++ hunk ./Distribution/Simple/Build.hs 633 - "foreign import stdcall \"GetModuleFileNameA\" unsafe\n"++ + "foreign import stdcall unsafe \"GetModuleFileNameA\"\n"++ hunk ./Distribution/Simple/Build.hs 636 - "prefixFromExePath :: FilePath -> FilePath -> FilePath\n"++ - "prefixFromExePath exe_path binDirRel\n"++ - " = bindir `joinFileName` foldr joinFileName \".\" dotdots\n"++ - " where\n"++ - " (bindir,exe) = splitFileName exe_path\n"++ - " bincomps = breakFilePath binDirRel -- something like [\".\",\"bin\"]\n"++ - " dotdots = take (length bincomps) (repeat \"..\")\n"++ - "\n"++ hunk ./Distribution/Simple/Build.hs 657 - "breakFilePath :: FilePath -> [String]\n"++ - "breakFilePath = worker []\n"++ - " where worker ac path\n"++ - " | less == path = less:ac\n"++ - " | otherwise = worker (current:ac) less\n"++ - " where (less,current) = splitFileName path\n"++ - "\n"++ hunk ./Distribution/Simple/Build.hs 658 - "pathSeparator = '\\'\n"++ + "pathSeparator = '\\\\'\n"++ hunk ./Distribution/Simple/Build.hs 662 - " ch == '/' || ch == '\\'\n" + " ch == '/' || ch == '\\\\'\n" hunk ./Distribution/Simple/Configure.hs 57 -#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 604 hunk ./Distribution/Simple/Configure.hs 148 - - -- on Windows, our directories should all be relative to $prefix if we're - -- building an executable, so we can be prefix-independent -#if mingw32_HOST_OS - let checkPrefix (s,('$':'p':'r':'e':'f':'i':'x':_)) = return () - checkPrefix (s,_other) = - die (s ++ " must begin with $prefix for an executable") - mapM_ checkPrefix [ - ("bindir",my_bindir), - ("libdir",my_libdir), - ("libexecdir",my_libexecdir) - ] - unless (hasLibs pkg_descr) $ - checkPrefix ("datadir",my_datadir) -#endif hunk ./Distribution/Simple/Install.hs 53 -#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 604 hunk ./Distribution/Simple/LocalBuildInfo.hs 53 - mkLibDir, mkBinDir, mkLibexecDir, mkDataDir, mkProgDir, + mkLibDir, mkLibDirRel, mkBinDir, mkBinDirRel, mkLibexecDir, mkLibexecDirRel, mkDataDir, mkDataDirRel, mkProgDir, hunk ./Distribution/Simple/LocalBuildInfo.hs 217 - hunk ./Distribution/Simple/LocalBuildInfo.hs 219 -mkBinDir pkg_descr lbi0 copydest = - prepend copydest $ - substDir pkg_descr lbi (bindir lbi) - where - lbi = case copydest of - CopyPrefix d -> lbi0{prefix=d} - _otherwise -> lbi0 +mkBinDir pkg_descr lbi copydest = + absolutePath pkg_descr lbi copydest (bindir lbi) + +mkBinDirRel :: PackageDescription -> LocalBuildInfo -> CopyDest -> Maybe FilePath +mkBinDirRel pkg_descr lbi copydest = + prefixRelPath pkg_descr lbi copydest (bindir lbi) hunk ./Distribution/Simple/LocalBuildInfo.hs 227 -mkLibDir pkg_descr lbi0 copydest = - prepend copydest $ - substDir pkg_descr lbi (libdir lbi) `joinFileName` - substDir pkg_descr lbi (libsubdir lbi) - where - lbi = case copydest of - CopyPrefix d -> lbi0{prefix=d} - _otherwise -> lbi0 +mkLibDir pkg_descr lbi copydest = + absolutePath pkg_descr lbi copydest (libdir lbi `joinFileName` libsubdir lbi) + +mkLibDirRel :: PackageDescription -> LocalBuildInfo -> CopyDest -> Maybe FilePath +mkLibDirRel pkg_descr lbi copydest = + prefixRelPath pkg_descr lbi copydest (libdir lbi `joinFileName` libsubdir lbi) hunk ./Distribution/Simple/LocalBuildInfo.hs 235 -mkLibexecDir pkg_descr lbi0 copydest = - prepend copydest $ - substDir pkg_descr lbi (libexecdir lbi) - where - lbi = case copydest of - CopyPrefix d -> lbi0{prefix=d} - _otherwise -> lbi0 +mkLibexecDir pkg_descr lbi copydest = + absolutePath pkg_descr lbi copydest (libexecdir lbi) + +mkLibexecDirRel :: PackageDescription -> LocalBuildInfo -> CopyDest -> Maybe FilePath +mkLibexecDirRel pkg_descr lbi copydest = + prefixRelPath pkg_descr lbi copydest (libexecdir lbi) hunk ./Distribution/Simple/LocalBuildInfo.hs 243 -mkDataDir pkg_descr lbi0 copydest = - prepend copydest $ - substDir pkg_descr lbi (datadir lbi) `joinFileName` - substDir pkg_descr lbi (datasubdir lbi) - where - lbi = case copydest of - CopyPrefix d -> lbi0{prefix=d} - _otherwise -> lbi0 +mkDataDir pkg_descr lbi copydest = + absolutePath pkg_descr lbi copydest (datadir lbi `joinFileName` datasubdir lbi) + +mkDataDirRel :: PackageDescription -> LocalBuildInfo -> CopyDest -> Maybe FilePath +mkDataDirRel pkg_descr lbi copydest = + prefixRelPath pkg_descr lbi copydest (datadir lbi `joinFileName` datasubdir lbi) hunk ./Distribution/Simple/LocalBuildInfo.hs 252 -mkProgDir pkg_descr lbi0 copydest = - prepend copydest $ - substDir pkg_descr lbi (libdir lbi) `joinFileName` +mkProgDir pkg_descr lbi copydest = + absolutePath pkg_descr lbi copydest (libdir lbi) `joinFileName` hunk ./Distribution/Simple/LocalBuildInfo.hs 255 - where - lbi = case copydest of - CopyPrefix d -> lbi0{prefix=d} - _otherwise -> lbi0 + +prefixRelPath pkg_descr lbi0 copydest ('$':'p':'r':'e':'f':'i':'x':s) = Just $ + case s of + (c:s) | isPathSeparator c -> substDir pkg_descr lbi s + s -> substDir pkg_descr lbi s + where + lbi = case copydest of + CopyPrefix d -> lbi0{prefix=d} + _otherwise -> lbi0 +prefixRelPath pkg_descr lbi copydest s = Nothing hunk ./Distribution/Simple/LocalBuildInfo.hs 266 -prepend (CopyTo p) q = p `joinFileName` dropAbsolutePrefix q -prepend _ q = q +absolutePath pkg_descr lbi copydest s = + case copydest of + NoCopyDest -> substDir pkg_descr lbi s + CopyPrefix d -> substDir pkg_descr lbi{prefix=d} s + CopyTo p -> p `joinFileName` (dropAbsolutePrefix (substDir pkg_descr lbi s)) hunk ./Distribution/Simple/Register.hs 57 -#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 604 hunk ./Distribution/Simple/Utils.hs 73 -#if __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 604 hunk ./Distribution/Simple.hs 91 - moduleToFilePath) + moduleToFilePath, findFile) hunk ./Distribution/Simple.hs 406 -haddock pkg_descr lbi verbose pps = - withLib pkg_descr () $ \lib -> do - confHaddock <- do let programConf = withPrograms lbi - let haddockName = programName $ haddockProgram - mHaddock <- lookupProgram haddockName programConf - case mHaddock of - Nothing -> (die "haddock command not found") - Just h -> return h +haddock pkg_descr lbi verbose pps = do + confHaddock <- do let programConf = withPrograms lbi + let haddockName = programName $ haddockProgram + mHaddock <- lookupProgram haddockName programConf + case mHaddock of + Nothing -> (die "haddock command not found") + Just h -> return h hunk ./Distribution/Simple.hs 414 + let targetDir = joinPaths distPref (joinPaths "doc" "html") + let tmpDir = joinPaths (buildDir lbi) "tmp" + createDirectoryIfMissing True tmpDir + createDirectoryIfMissing True targetDir + preprocessSources pkg_descr lbi verbose pps + + setupMessage "Running Haddock for" pkg_descr + + withLib pkg_descr () $ \lib -> do hunk ./Distribution/Simple.hs 424 - let targetDir = joinPaths distPref (joinPaths "doc" "html") - let tmpDir = joinPaths (buildDir lbi) "tmp" - createDirectoryIfMissing True tmpDir - createDirectoryIfMissing True targetDir - preprocessSources pkg_descr lbi verbose pps hunk ./Distribution/Simple.hs 425 - | m <- exposedModules lib] >>= return . concat + | m <- exposedModules lib ++ otherModules bi] >>= return . concat hunk ./Distribution/Simple.hs 430 - setupMessage "Running Haddock for" pkg_descr hunk ./Distribution/Simple.hs 432 - code <- rawSystemProgram verbose confHaddock + rawSystemProgram verbose confHaddock hunk ./Distribution/Simple.hs 439 + ++ map ((++) "--hide=") (otherModules bi) hunk ./Distribution/Simple.hs 441 - removeDirectoryRecursive tmpDir hunk ./Distribution/Simple.hs 442 + withExe pkg_descr $ \exe -> do + let bi = buildInfo exe + exeTargetDir = targetDir `joinFileName` exeName exe + createDirectoryIfMissing True exeTargetDir + inFiles' <- sequence [moduleToFilePath (hsSourceDirs bi) m ["hs", "lhs"] + | m <- otherModules bi] >>= return . concat + srcMainPath <- findFile (hsSourceDirs bi) (modulePath exe) + let inFiles = srcMainPath : inFiles' + mapM_ (mockPP ["-D__HADDOCK__"] pkg_descr bi lbi tmpDir verbose) inFiles + let outFiles = map (joinFileName tmpDir) + (map ((flip changeFileExt) "hs") inFiles) + rawSystemProgram verbose confHaddock + (["-h", + "-o", exeTargetDir, + "-t", exeName exe] ++ (programArgs confHaddock) + ++ (if verbose > 4 then ["-v"] else []) + ++ outFiles + ) + + removeDirectoryRecursive tmpDir hunk ./doc/Cabal.xml 4 - Distribution.Simple'> - Distribution.Make'> - License'> - Extension'> + Distribution.Simple'> + Distribution.Make'> + License'> + Extension'> hunk ./doc/Cabal.xml 1508 - $prefix. An error will be returned - from setup configure if this is not - the case. + $prefix. If this is not the case + then the compiled executable will have baked in + all absolute paths. hunk ./package.conf.in 1 +#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 604 hunk ./package.conf.in 3 +#endif hunk ./Distribution/Simple/Configure.hs 195 - message $ "Binaries installed in: " ++ mkBinDir pkg_descr lbi NoCopyDest - message $ "Libraries installed in: " ++ mkLibDir pkg_descr lbi NoCopyDest - message $ "Private binaries installed in: " ++ mkLibexecDir pkg_descr lbi NoCopyDest - message $ "Data files installed in: " ++ mkDataDir pkg_descr lbi NoCopyDest + + messageDir pkg_descr lbi "Binaries" mkBinDir mkBinDirRel + messageDir pkg_descr lbi "Libraries" mkLibDir mkLibDirRel + messageDir pkg_descr lbi "Private binaries" mkLibexecDir mkLibexecDirRel + messageDir pkg_descr lbi "Data files" mkDataDir mkDataDirRel + hunk ./Distribution/Simple/Configure.hs 216 + +messageDir pkg_descr lbi name mkDir mkDirRel = + message (name ++ " installed in: " ++ mkDir pkg_descr lbi NoCopyDest ++ rel_note) + where +#if mingw32_HOST_OS + rel_note + | not (hasLibs pkg_descr) && + mkDirRel pkg_descr lbi NoCopyDest == Nothing + = " (fixed location)" + | otherwise = "" +#else + rel_note = "" +#endif hunk ./Distribution/PackageDescription.hs 285 - updateExecutables :: [(String, BuildInfo)] -> [Executable] -> [Executable] + updateExecutables :: [(String, BuildInfo)] -- ^[(exeName, new buildinfo)] + -> [Executable] -- ^list of executables to update + -> [Executable] -- ^list with exeNames updated hunk ./Distribution/PackageDescription.hs 290 - updateExecutable :: (String, BuildInfo) -> [Executable] -> [Executable] + updateExecutable :: (String, BuildInfo) -- ^(exeName, new buildinfo) + -> [Executable] -- ^list of executables to update + -> [Executable] -- ^libst with exeName updated hunk ./Distribution/PackageDescription.hs 296 - | otherwise = updateExecutable exe_bi' exes + | otherwise = exe : updateExecutable exe_bi' exes hunk ./tests/HUnit-1.0/HUnit.cabal 7 -Build-Depends: haskell-src, haskell98 +Build-Depends: haskell-src, haskell98, base hunk ./tests/ModuleTest.hs 286 - doesFileExist ",tmp/lib/recursive-1.0/ghc-6.4/libHSrecursive-1.0.a" >>= -- FIX: Comp + doesFileExist ",tmp/lib/recursive-1.0/ghc-6.4.1/libHSrecursive-1.0.a" >>= -- FIX: Comp hunk ./tests/ModuleTest.hs 326 - doesFileExist (",tmp/lib/test-1.0/ghc-6.4/libHStest-1.0.a") + doesFileExist (",tmp/lib/test-1.0/ghc-6.4.1/libHStest-1.0.a") hunk ./tests/ModuleTest.hs 366 - doesFileExist (",tmp/lib/withHooks-1.0/ghc-6.4/" `joinFileName` "libHSwithHooks-1.0.a") + doesFileExist (",tmp/lib/withHooks-1.0/ghc-6.4.1/" `joinFileName` "libHSwithHooks-1.0.a") hunk ./tests/ModuleTest.hs 409 - = let ghcTargetDir = pref ++ "/lib/test-1.0/ghc-6.4/" in + = let ghcTargetDir = pref ++ "/lib/test-1.0/ghc-6.4.1/" in hunk ./tests/withHooks/Setup.lhs 52 +> let copySource = case compilerFlavor $ compiler b of +> GHC -> foldl1 joinPaths ["dist", "build", "withHooks", "withHooks"] +> Hugs -> foldl1 joinPaths ["dist", "build", "Main.hs"] -- some random file hunk ./tests/withHooks/Setup.lhs 56 -> copyFile (foldl1 joinPaths ["dist", "build", "withHooks", "withHooks"]) -> (p `joinPaths` "withHooks") +> copyFile copySource (p `joinPaths` "withHooks") + hunk ./tests/withHooks/Setup.lhs 60 +> myCopyHook _ _ _ = error "Please use --copy-prefix." hunk ./Distribution/Simple.hs 426 - mapM_ (mockPP ["-D__HADDOCK__"] pkg_descr bi lbi tmpDir verbose) inFiles + extraFiles <- sequence [moduleToFilePath (hsSourceDirs bi) m ["hs", "lhs"] + | m <- otherModules $ libBuildInfo lib] >>= return . concat + let allInputFiles = inFiles ++ extraFiles + mapM_ (mockPP ["-D__HADDOCK__"] pkg_descr bi lbi tmpDir verbose) allInputFiles + mapM_ (addHidePragma tmpDir verbose) extraFiles hunk ./Distribution/Simple.hs 435 - (map ((flip changeFileExt) "hs") inFiles) + (map ((flip changeFileExt) "hs") allInputFiles) hunk ./Distribution/Simple.hs 482 + addHidePragma tmpDir verbose file + = do let fn = joinFileName tmpDir $ changeFileExt file "hs" + when (verbose > 0) $ putStrLn $ "Hiding " ++ file + inp <- readFile fn + last inp `seq` writeFile fn ("-- #hide\n"++inp) move ./tests/A/B/A.hs ./tests/A/B/A.lhs hunk ./tests/A/B/A.lhs 1 -module B.A where -a = 42 :: Int +> module B.A where +> a = 42 :: Int hunk ./tests/A/B/A.lhs 4 -main = print a +> main = print a hunk ./tests/ModuleTest.hs 100 +anyExists :: [FilePath] -> IO Bool +anyExists l = do l' <- mapM doesFileExist l + return $ any (== True) l' + hunk ./tests/ModuleTest.hs 110 - let files = [x++y | - x <- ["A", "B/A"], - y <- suffixes] - allFilesE <- sequence [doesFileExist (targetDir ++ t) - | t <- files] + let mods = ["A", "B/A"] + allFilesE <- mapM anyExists [[(targetDir ++ t ++ y) + | y <- suffixes] + | t <- mods] hunk ./tests/ModuleTest.hs 116 - | (e, f) <- zip allFilesE files] + | (e, f) <- zip allFilesE mods] hunk ./tests/ModuleTest.hs 414 - Hugs -> checkTargetDir (pref ++ "/lib/hugs/packages/test/") [".hs"] + Hugs -> checkTargetDir (pref ++ "/lib/hugs/packages/test/") [".hs", ".lhs"] hunk ./Distribution/Make.hs 52 +import Distribution.Program(defaultProgramConfiguration) hunk ./Distribution/Make.hs 116 - (action, args) <- parseGlobalArgs args + (action, args) <- parseGlobalArgs defaultProgramConfiguration args hunk ./Distribution/Make.hs 119 - (flags, _, args) <- parseConfigureArgs flags args [] + (flags, _, args) <- parseConfigureArgs defaultProgramConfiguration flags args [] hunk ./Distribution/Program.hs 14 + , rawSystemProgramConf + , simpleProgram hunk ./Distribution/Program.hs 243 + +rawSystemProgramConf :: Int -- ^verbosity + -> String -- ^The name of the program to run + -> ProgramConfiguration -- ^look up the program here + -> [String] -- ^Any /extra/ arguments to add + -> IO ExitCode +rawSystemProgramConf verbose progName programConf extraArgs + = do prog <- do mProg <- lookupProgram progName programConf + case mProg of + Nothing -> (die (progName ++ " command not found")) + Just h -> return h + rawSystemProgram verbose prog extraArgs + hunk ./Distribution/Setup.hs 135 -emptyConfigFlags :: ConfigFlags -emptyConfigFlags = ConfigFlags { - configPrograms = defaultProgramConfiguration, +emptyConfigFlags :: ProgramConfiguration -> ConfigFlags +emptyConfigFlags progConf = ConfigFlags { + configPrograms = progConf, hunk ./Distribution/Setup.hs 265 -commandList :: [Cmd a] -commandList = [configureCmd, buildCmd, cleanCmd, installCmd, - copyCmd, sdistCmd, testCmd, haddockCmd, programaticaCmd, - registerCmd, unregisterCmd] +commandList :: ProgramConfiguration -> [Cmd a] +commandList progConf = [(configureCmd progConf), buildCmd, cleanCmd, installCmd, + copyCmd, sdistCmd, testCmd, haddockCmd, programaticaCmd, + registerCmd, unregisterCmd] hunk ./Distribution/Setup.hs 273 -printGlobalHelp :: IO () -printGlobalHelp = do pname <- getProgName +printGlobalHelp :: ProgramConfiguration -> IO () +printGlobalHelp progConf = + do pname <- getProgName hunk ./Distribution/Setup.hs 279 - let maxlen = maximum [ length (cmdName cmd) | cmd <- commandList ] + let maxlen = maximum [ length (cmdName cmd) | cmd <- (commandList progConf) ] hunk ./Distribution/Setup.hs 284 - | cmd <- commandList ] + | cmd <- (commandList progConf) ] hunk ./Distribution/Setup.hs 302 -parseGlobalArgs :: [String] -> IO (Action,[String]) -parseGlobalArgs args = +parseGlobalArgs :: ProgramConfiguration -> [String] -> IO (Action,[String]) +parseGlobalArgs progConf args = hunk ./Distribution/Setup.hs 306 - printGlobalHelp + (printGlobalHelp progConf) hunk ./Distribution/Setup.hs 309 - case lookupCommand cname commandList of + case lookupCommand cname (commandList progConf) of hunk ./Distribution/Setup.hs 315 -configureCmd :: Cmd a -configureCmd = Cmd { +configureCmd :: ProgramConfiguration -> Cmd a +configureCmd progConf = Cmd { hunk ./Distribution/Setup.hs 378 - ++ (withProgramOptions defaultProgramConfiguration) - ++ (programArgsOptions defaultProgramConfiguration), - cmdAction = ConfigCmd emptyConfigFlags + ++ (withProgramOptions progConf) + ++ (programArgsOptions progConf), + cmdAction = ConfigCmd (emptyConfigFlags progConf) hunk ./Distribution/Setup.hs 399 -parseConfigureArgs :: ConfigFlags -> [String] -> [OptDescr a] -> +parseConfigureArgs :: ProgramConfiguration -> ConfigFlags -> [String] -> [OptDescr a] -> hunk ./Distribution/Setup.hs 401 -parseConfigureArgs = parseArgs configureCmd updateCfg +parseConfigureArgs progConf = parseArgs (configureCmd progConf) updateCfg hunk ./Distribution/Simple/Configure.hs 87 - lookupPrograms, updateProgram, defaultProgramConfiguration) + lookupPrograms, updateProgram) hunk ./Distribution/Simple.hs 70 -import Distribution.Program(lookupProgram, Program(..), - haddockProgram, rawSystemProgram, - pfesetupProgram) +import Distribution.Program(lookupProgram, Program(..), ProgramConfiguration(..), + haddockProgram, rawSystemProgram, defaultProgramConfiguration, + pfesetupProgram, updateProgram, rawSystemProgramConf) hunk ./Distribution/Simple.hs 130 + hookedPrograms :: [Program], + -- ^These programs are detected at configure time. Arguments for them are added to the configure command. hunk ./Distribution/Simple.hs 230 - (action, args) <- parseGlobalArgs args + (action, args) <- parseGlobalArgs (allPrograms Nothing) args hunk ./Distribution/Simple.hs 240 - (action, args) <- parseGlobalArgs args + (action, args) <- parseGlobalArgs (allPrograms (Just hooks)) args hunk ./Distribution/Simple.hs 252 - (action, args) <- parseGlobalArgs args + (action, args) <- parseGlobalArgs (allPrograms Nothing) args hunk ./Distribution/Simple.hs 256 +allPrograms :: Maybe UserHooks + -> ProgramConfiguration -- combine defaults w/ user programs +allPrograms Nothing = defaultProgramConfiguration +allPrograms (Just h) = foldl (\pConf p -> updateProgram (Just p) pConf) + defaultProgramConfiguration + (hookedPrograms h) + hunk ./Distribution/Simple.hs 276 - parseConfigureArgs flags args [buildDirOpt] + parseConfigureArgs (allPrograms hooks) flags args [buildDirOpt] hunk ./Distribution/Simple.hs 283 - hunk ./Distribution/Simple.hs 444 + -- FIX: replace w/ rawSystemProgramConf? hunk ./Distribution/Simple.hs 503 - confPfe <- do let programConf = withPrograms lbi - let progName = programName $ pfesetupProgram - mProg <- lookupProgram progName programConf - case mProg of - Nothing -> (die (progName ++ " command not found")) - Just h -> return h - hunk ./Distribution/Simple.hs 508 - rawSystemProgram verbose confPfe + rawSystemProgramConf verbose (programName pfesetupProgram) (withPrograms lbi) hunk ./Distribution/Simple.hs 571 + hookedPrograms = [], hunk ./tests/ModuleTest.hs 99 - -anyExists :: [FilePath] -> IO Bool -anyExists l = do l' <- mapM doesFileExist l - return $ any (== True) l' - hunk ./tests/ModuleTest.hs 113 + + where anyExists :: [FilePath] -> IO Bool + anyExists l = do l' <- mapM doesFileExist l + return $ any (== True) l' hunk ./tests/withHooks/Setup.lhs 13 +> import Distribution.Program(simpleProgram, rawSystemProgramConf) hunk ./tests/withHooks/Setup.lhs 53 +> -- call 'ls' from our hookedPrograms hook... pointless except as a demo +> rawSystemProgramConf 0 "ls" (withPrograms b) [] hunk ./tests/withHooks/Setup.lhs 70 +> hookedPrograms=[simpleProgram "ls"], hunk ./Distribution/Compat/FilePath.hs 111 +-- > splitFileExt "foo.tar.gz" == ("foo.tar","gz") + hunk ./Distribution/Simple.hs 434 - extraFiles <- sequence [moduleToFilePath (hsSourceDirs bi) m ["hs", "lhs"] - | m <- otherModules $ libBuildInfo lib] >>= return . concat - let allInputFiles = inFiles ++ extraFiles - mapM_ (mockPP ["-D__HADDOCK__"] pkg_descr bi lbi tmpDir verbose) allInputFiles - mapM_ (addHidePragma tmpDir verbose) extraFiles + mapM_ (mockPP ["-D__HADDOCK__"] pkg_descr bi lbi tmpDir verbose) inFiles hunk ./Distribution/Simple.hs 439 - (map ((flip changeFileExt) "hs") allInputFiles) + (map ((flip changeFileExt) "hs") inFiles) hunk ./Distribution/Simple.hs 487 - addHidePragma tmpDir verbose file - = do let fn = joinFileName tmpDir $ changeFileExt file "hs" - when (verbose > 0) $ putStrLn $ "Hiding " ++ file - inp <- readFile fn - last inp `seq` writeFile fn ("-- #hide\n"++inp) hunk ./Distribution/Setup.hs 48 + InstallUserFlag(..), hunk ./Distribution/Setup.hs 89 - | InstallCmd Bool -- install (install-prefix) (--user flag) + | InstallCmd InstallUserFlag -- install (install-prefix) (--user flag) hunk ./Distribution/Setup.hs 368 - "allow dependencies to be satisfied from the user package database", + "allow dependencies to be satisfied from the user package database. also implies install --user", hunk ./Distribution/Setup.hs 498 - "(default) upon registration, register this package in the system-wide package database" + "(default; override with configure) upon registration, register this package in the system-wide package database" hunk ./Distribution/Setup.hs 500 - cmdAction = InstallCmd False + cmdAction = InstallCmd InstallUserNone hunk ./Distribution/Setup.hs 526 +data InstallUserFlag = InstallUserNone -- ^no --user OR --global flag. + | InstallUserUser -- ^--user flag + | InstallUserGlobal -- ^--global flag + hunk ./Distribution/Setup.hs 540 -type InstallFlags = (Bool,Int) +type InstallFlags = (InstallUserFlag,Int) hunk ./Distribution/Setup.hs 547 - UserFlag -> (True, verbose) - GlobalFlag -> (False, verbose) + UserFlag -> (InstallUserUser, verbose) + GlobalFlag -> (InstallUserGlobal, verbose) hunk ./Distribution/Simple/Configure.hs 190 - withGHCiLib=configGHCiLib cfg + withGHCiLib=configGHCiLib cfg, + userConf=configUser cfg hunk ./Distribution/Simple/LocalBuildInfo.hs 101 + userConf :: Bool, -- ^Was this package configured with --user? hunk ./Distribution/Simple.hs 176 - -> Bool -- user install? + -> InstallUserFlag -- user install? hunk ./Distribution/Simple.hs 662 -defaultInstallHook pkg_descr localbuildinfo verbose uInst = do +defaultInstallHook pkg_descr localbuildinfo verbose uInstFlag = do + let uInst = case uInstFlag of + InstallUserUser -> True + InstallUserGlobal -> False --over-rides configure setting + -- no flag, check how it was configured: + InstallUserNone -> userConf localbuildinfo addfile ./CabalInstall.hs hunk ./CabalInstall.hs 1 +-- TODO: +-- make compilerCommand respect the --with-runhugs= stuff. doesn't work at all right now. +-- Don't continue if configure fails +-- integrate this prototype into cabal-get-bootstrap? + +module Main where + +import Control.Monad(when) +import Data.Maybe (fromJust) -- FIX: remove. +import Data.List(partition) +import System.Directory(getCurrentDirectory, setCurrentDirectory, getDirectoryContents) +import System.Cmd(system) +import System.Environment(getArgs) +import System.Exit(ExitCode(..), exitWith) + +-- from cabal: +import Distribution.Compat.FilePath (splitFileExt, splitFilePath) +import Distribution.Setup(defaultCompilerFlavor, parseConfigureArgs, emptyConfigFlags, ConfigFlags(..)) +import Distribution.Program(defaultProgramConfiguration, simpleProgram, updateProgram, + lookupProgram, rawSystemProgram, + Program(..), ProgramLocation(..)) +import Distribution.Compiler (CompilerFlavor(..)) + +-- |If this is an error, quit with that exit code +quitFail :: ExitCode -> IO () +quitFail ExitSuccess = return () +quitFail e = exitWith e + +doInstall dir conf confArgs = do + currDir <- getCurrentDirectory + setCurrentDirectory dir + comp <- compilerCommand conf + -- FIX: remove fromJust + let p = rawSystemProgram 0 (fromJust comp) + p ("configure":confArgs) >>= quitFail + p ["build"] >>= quitFail + p ["install"] >>= quitFail + setCurrentDirectory currDir + return () + +installerPrograms = + foldl (\pConf p -> updateProgram (Just p) pConf) + defaultProgramConfiguration + [Program "runghc" "runghc" ["Setup"] EmptyLocation, + Program "runhugs" "runhugs" ["-98", "Setup"] EmptyLocation] + +-- FIX: +-- * get program config from --with-runghc=, etc. +-- * some day be more flexible here; allow setup script to be built +-- w/ nhc or GHC, for instance. +compilerCommand :: ConfigFlags -> IO (Maybe Program) +compilerCommand conf = do + let prog = (case configHcFlavor conf of + Just GHC -> "runghc" + Just Hugs -> "runhugs" + Nothing -> case defaultCompilerFlavor of + Just GHC -> "runghc" + Just Hugs -> "runhugs" + Nothing -> error "please specify one of --ghc or --hugs") + lookupProgram prog (configPrograms conf) + +unPackOrGo tarOrDir conf confArgs = do + let (packageIdentStr, ext) = splitFileExt tarOrDir + putStrLn $ "package; " ++ (show packageIdentStr) + case ext of + "tgz" -> do system $ "tar -zxvf " ++ tarOrDir + unPackOrGo packageIdentStr conf confArgs + "gz" -> do system $ "gunzip " ++ tarOrDir + unPackOrGo packageIdentStr conf confArgs + "tar" -> do system $ "tar -xvf " ++ tarOrDir + unPackOrGo packageIdentStr conf confArgs + "cabal" -> let (dir, _, _) = splitFilePath tarOrDir + in doInstall dir conf confArgs + _ -> doInstall tarOrDir conf confArgs + +main :: IO () +main = do + putStrLn $ "default compiler: " ++ (show defaultCompilerFlavor) + args <- getArgs + let (toInstall, configArgs) = partition (\x -> head x /= '-') args + (conf, _, _) <- parseConfigureArgs + installerPrograms + (emptyConfigFlags installerPrograms) + configArgs + [] + when (toInstall == []) (error "please give a tarball or directory on the command-line.") + mapM (\i -> unPackOrGo i conf configArgs) toInstall + return () hunk ./Distribution/Program.hs 239 - extraArgs = rawSystemVerbose verbose p (extraArgs ++ args) + extraArgs = rawSystemVerbose verbose p (args ++ extraArgs) hunk ./Distribution/Setup.hs 53 - parseGlobalArgs, + parseGlobalArgs, defaultCompilerFlavor, hunk ./Distribution/Setup.hs 107 --- configHaddock :: ProgramLocation, -- ^Haddock path hunk ./doc/Cabal.xml 1120 -runhaskell Setup.hs configure --ghc --prefix=$HOME +runhaskell Setup.hs configure --ghc --user --prefix=$HOME hunk ./doc/Cabal.xml 1122 -runhaskell Setup.hs install --user - In this case, since the package will be registered in the - user's package database, we also install it under the user's - home directory. +runhaskell Setup.hs install + The package may use packages from the user's package database + as well as the global one (), is installed + under the user's home directory (), + and is registered in the user's package database + (). hunk ./doc/Cabal.xml 1537 + + This also implies a default of + for any subsequent install command, + as packages registered in the global database should not + depend on packages registered in a user's database. hunk ./doc/Cabal.xml 1636 - (This is the default.) + (This is the default, unless the + option was supplied to the configure + command.) hunk ./doc/Cabal.xml 1645 - Register this package in the user's local package - database. + Register this package in the user's local package database. + (This is the default if the + option was supplied to the configure + command.) hunk ./Distribution/Compiler.hs 111 - extensionToGHCFlag AllowOverlappingInstances = Right "-fallow-overlapping-instances" - extensionToGHCFlag AllowUndecidableInstances = Right "-fallow-undecidable-instances" - extensionToGHCFlag AllowIncoherentInstances = Right "-fallow-incoherent-instances" + extensionToGHCFlag UndecidableInstances = Right "-fallow-undecidable-instances" + extensionToGHCFlag IncoherentInstances = Right "-fallow-incoherent-instances" hunk ./Distribution/Compiler.hs 125 + extensionToGHCFlag Rank2Types = Right "-fglasgow-exts" hunk ./Distribution/Compiler.hs 138 - extensionToGHCFlag e@UnsafeOverlappingInstances = Left e hunk ./Distribution/Compiler.hs 160 - extensionToHugsFlag UnsafeOverlappingInstances = Right "+O" + extensionToHugsFlag IncoherentInstances = Right "+oO" hunk ./Distribution/Compiler.hs 162 + extensionToHugsFlag TypeSynonymInstances = Right "-98" hunk ./Distribution/Compiler.hs 167 - extensionToHugsFlag RankNTypes = Right "-98" + extensionToHugsFlag Rank2Types = Right "-98" hunk ./Language/Haskell/Extension.hs 55 + | UndecidableInstances + | IncoherentInstances hunk ./Language/Haskell/Extension.hs 62 + | Rank2Types hunk ./Language/Haskell/Extension.hs 76 - | AllowOverlappingInstances - | AllowUndecidableInstances - | AllowIncoherentInstances hunk ./Language/Haskell/Extension.hs 87 - | UnsafeOverlappingInstances adddir ./cabal-install move ./CabalInstall.hs ./cabal-install/CabalInstall.hs hunk ./GNUmakefile 46 +cabal-install: install + cd cabal-install && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install + addfile ./cabal-install/Setup.lhs addfile ./cabal-install/cabal-install.cabal hunk ./GNUmakefile 45 - -cabal-install: install hunk ./cabal-install/Setup.lhs 1 +#!/usr/bin/runhaskell +> module Main where +> import Distribution.Simple +> main :: IO () +> main = defaultMain hunk ./cabal-install/cabal-install.cabal 1 +Name: cabal-install +Version: 1.1.4 +Copyright: 2005, Isaac Jones +Build-depends: Cabal, base +License: BSD3 +License-File: ../LICENSE +Author: Isaac Jones +Maintainer: Isaac Jones +Homepage: http://www.haskell.org/cabal/ +Category: Distribution +Synopsis: A tool to install Haskell Cabal packages in one step. +Description: + cabal-install uses Cabal's standard interface to configure, + build, and intsall packages in a single command: + 'cabal-install Foo/Foo.cabal', for instance. It accepts the + same flags as standard Cabal's configure and can be run + against directories, tarballs, or .cabal files. + +Executable: cabal-install +Main-is: CabalInstall.hs hunk ./Distribution/PackageDescription.hs 97 - showVersion, parseVersion) + showVersion, parseVersion, showVersionRange, parseVersionRange) hunk ./Distribution/PackageDescription.hs 134 + cabalVersion :: VersionRange, -- ^If this package depends on a specific version of Cabal, give that here. hunk ./Distribution/PackageDescription.hs 158 + cabalVersion = AnyVersion, hunk ./Distribution/PackageDescription.hs 345 + , simpleField "cabal-version" + (text . showVersionRange) parseVersionRange + cabalVersion (\v pkg -> pkg{cabalVersion=v}) hunk ./Distribution/PackageDescription.hs 686 + "Cabal-version: >1.1.1", hunk ./Distribution/PackageDescription.hs 742 + cabalVersion=LaterVersion (Version [1,1,1] []), hunk ./Distribution/PackageDescription.hs 838 - = catMaybes $ myCmp package "package" : myCmp license "license": myCmp licenseFile "licenseFile": myCmp copyright "copyright": myCmp maintainer "maintainer": myCmp author "author": myCmp stability "stability": myCmp testedWith "testedWith": myCmp homepage "homepage": myCmp pkgUrl "pkgUrl": myCmp synopsis "synopsis": myCmp description "description": myCmp category "category": myCmp buildDepends "buildDepends": myCmp library "library": myCmp executables "executables": [] + = catMaybes $ myCmp package "package" : myCmp license "license": myCmp licenseFile "licenseFile": myCmp copyright "copyright": myCmp maintainer "maintainer": myCmp author "author": myCmp stability "stability": myCmp testedWith "testedWith": myCmp homepage "homepage": myCmp pkgUrl "pkgUrl": myCmp synopsis "synopsis": myCmp description "description": myCmp category "category": myCmp buildDepends "buildDepends": myCmp library "library": myCmp executables "executables": myCmp cabalVersion "cabal-version":[] hunk ./Distribution/PreProcess.hs 204 -ppCpp :: BuildInfo -> LocalBuildInfo -> PreProcessor +ppCpp :: PackageDescription -> LocalBuildInfo -> PreProcessor hunk ./GNUmakefile 70 -clean: clean-cabal clean-hunit clean-test +clean: clean-cabal clean-hunit clean-test clean-doc rmdir ./src hunk ./tests/A/A.cabal 2 +cabal-version: > 1.1 hunk ./Distribution/PackageDescription.hs 96 -import Distribution.Version(Version(..), VersionRange(..), +import Distribution.Version(Version(..), VersionRange(..), withinRange, hunk ./Distribution/PackageDescription.hs 111 +-- |Fix. Figure out a way to get this from .cabal file +cabalVersion :: Version +cabalVersion = Version [1,1,4] [] + hunk ./Distribution/PackageDescription.hs 138 - cabalVersion :: VersionRange, -- ^If this package depends on a specific version of Cabal, give that here. + descCabalVersion :: VersionRange, -- ^If this package depends on a specific version of Cabal, give that here. hunk ./Distribution/PackageDescription.hs 162 - cabalVersion = AnyVersion, + descCabalVersion = AnyVersion, hunk ./Distribution/PackageDescription.hs 347 - (text . showVersion) parseVersion + (text . showVersion) parseVersion hunk ./Distribution/PackageDescription.hs 350 - (text . showVersionRange) parseVersionRange - cabalVersion (\v pkg -> pkg{cabalVersion=v}) + (text . showVersionRange) parseCabalVersion + descCabalVersion (\v pkg -> pkg{descCabalVersion=v}) hunk ./Distribution/PackageDescription.hs 632 + goodCabal = let v = (descCabalVersion pkg_descr) + in checkSanity (not $ cabalVersion `withinRange` v) + ("This package requires Cabal verion: " ++ (showVersionRange v) ++ ".") hunk ./Distribution/PackageDescription.hs 638 - ,catMaybes $ libSane:(checkMissingFields pkg_descr)) + ,catMaybes $ libSane:goodCabal:(checkMissingFields pkg_descr)) hunk ./Distribution/PackageDescription.hs 681 +parseCabalVersion = do v <- parseVersionRange + if (cabalVersion `withinRange` v) + then return v + else error ("This package requires Cabal verion: " ++ (showVersionRange v) ++ ".") + hunk ./Distribution/PackageDescription.hs 754 - cabalVersion=LaterVersion (Version [1,1,1] []), + descCabalVersion=LaterVersion (Version [1,1,1] []), hunk ./Distribution/PackageDescription.hs 850 - = catMaybes $ myCmp package "package" : myCmp license "license": myCmp licenseFile "licenseFile": myCmp copyright "copyright": myCmp maintainer "maintainer": myCmp author "author": myCmp stability "stability": myCmp testedWith "testedWith": myCmp homepage "homepage": myCmp pkgUrl "pkgUrl": myCmp synopsis "synopsis": myCmp description "description": myCmp category "category": myCmp buildDepends "buildDepends": myCmp library "library": myCmp executables "executables": myCmp cabalVersion "cabal-version":[] + = catMaybes $ myCmp package "package" : myCmp license "license": myCmp licenseFile "licenseFile": myCmp copyright "copyright": myCmp maintainer "maintainer": myCmp author "author": myCmp stability "stability": myCmp testedWith "testedWith": myCmp homepage "homepage": myCmp pkgUrl "pkgUrl": myCmp synopsis "synopsis": myCmp description "description": myCmp category "category": myCmp buildDepends "buildDepends": myCmp library "library": myCmp executables "executables": myCmp descCabalVersion "cabal-version":[] hunk ./Distribution/ParseUtils.hs 109 -locatedErrorMsg (NoParse f n) = (Just n, "Parse of field '"++f++"' failed") +locatedErrorMsg (NoParse f n) = (Just n, "Parse of field '"++f++"' failed: ") hunk ./Distribution/PreProcess.hs 204 -ppCpp :: PackageDescription -> LocalBuildInfo -> PreProcessor +ppCpp :: BuildInfo -> LocalBuildInfo -> PreProcessor hunk ./Distribution/Simple.hs 60 - defaultHookedPackageDesc, + defaultHookedPackageDesc hunk ./Distribution/Simple.hs 62 - simpleHunitTests + ,simpleHunitTests hunk ./Distribution/Simple.hs 119 - hunk ./doc/Cabal.xml 358 + + cabal-version: >, <=, etc. & numbers + + + The version of Cabal required for this package. + Use ONLY if this package requires a particular version + of Cabal, since unfortunitely, early versions of Cabal + do not recognize this field. List the field early in + your .cabal file so that it will appear as a syntax + error before any others. + + + + hunk ./doc/Cabal.xml 359 - cabal-version: >, <=, etc. & numbers + cabal-version: >, <=, etc. & numbers hunk ./Distribution/Simple/Build.hs 158 - libTargetDir (libModules pkg_descr) ["hi-boot"] False + libTargetDir (libModules pkg_descr) ["hi-boot"] False False hunk ./Distribution/Simple/Build.hs 247 - exeDir (otherModules exeBi) ["hi-boot"] False + exeDir (otherModules exeBi) ["hi-boot"] False False hunk ./Distribution/Simple/Install.hs 81 -import Distribution.Compat.FilePath(joinFileName, dllExtension, exeExtension, +import Distribution.Compat.FilePath(splitFileName,joinFileName, dllExtension, exeExtension, hunk ./Distribution/Simple/Install.hs 99 - flip mapM_ (dataFiles pkg_descr) $ \ file -> + flip mapM_ (dataFiles pkg_descr) $ \ file -> do + let (dir, _) = splitFileName file + createDirectoryIfMissing True (dataPref `joinFileName` dir) hunk ./Distribution/Simple/Install.hs 140 - = do smartCopySources verbose [buildPref] pref (libModules pd) ["hi"] True - ifProf $ smartCopySources verbose [buildPref] pref (libModules pd) ["p_hi"] True + = do smartCopySources verbose [buildPref] pref (libModules pd) ["hi"] True False + ifProf $ smartCopySources verbose [buildPref] pref (libModules pd) ["p_hi"] True False hunk ./Distribution/Simple/Install.hs 197 - smartCopySources verbose [buildPref] libDir (libModules pkg_descr) hugsInstallSuffixes True + smartCopySources verbose [buildPref] libDir (libModules pkg_descr) hugsInstallSuffixes True False hunk ./Distribution/Simple/Install.hs 207 - ("Main" : otherModules (buildInfo exe)) hugsInstallSuffixes True + ("Main" : otherModules (buildInfo exe)) hugsInstallSuffixes True False hunk ./Distribution/Simple/SrcDist.hs 67 - getCurrentDirectory, createDirectoryIfMissing) + getCurrentDirectory, createDirectoryIfMissing, removeDirectoryRecursive) hunk ./Distribution/Simple/SrcDist.hs 104 - sequence_ [copyFileVerbose verbose df (targetDir `joinFileName` df) | df <- dataFiles pkg_descr] + flip mapM_ (dataFiles pkg_descr) $ \ file -> do + let (dir, _) = splitFileName file + createDirectoryIfMissing True (targetDir `joinFileName` dir) + copyFileVerbose verbose file (targetDir `joinFileName` file) hunk ./Distribution/Simple/SrcDist.hs 135 - system $ "rm -rf " ++ tmpDir + removeDirectoryRecursive tmpDir hunk ./Distribution/Simple/SrcDist.hs 161 - smartCopySources verbose srcDirs inPref (mods++mods') suff True + smartCopySources verbose srcDirs inPref (mods++mods') suff True True hunk ./Distribution/Simple/Utils.hs 240 + -> Bool -- ^Preserve directory structure hunk ./Distribution/Simple/Utils.hs 242 -smartCopySources verbose srcDirs targetDir sources searchSuffixes exitIfNone +smartCopySources verbose srcDirs targetDir sources searchSuffixes exitIfNone preserveDirs hunk ./Distribution/Simple/Utils.hs 246 - targetDir `joinFileName` name) | + if preserveDirs + then targetDir `joinFileName` srcDir `joinFileName` name + else targetDir `joinFileName` name) | hunk ./Distribution/Simple.hs 121 --- | Hooks allow authors to add specific functionality before and after --- a command is run, and also to specify additional preprocessors. +-- | WARNING: The hooks interface is under rather constant flux as we +-- try to understand users needs. Setup files that depend on this +-- interface may break in future releases. Hooks allow authors to add +-- specific functionality before and after a command is run, and also +-- to specify additional preprocessors. hunk ./Distribution/Program.hs 79 + , simpleProgram "runghc" + , simpleProgram "runhugs" hunk ./cabal-install/CabalInstall.hs 9 -import Data.Maybe (fromJust) -- FIX: remove. hunk ./cabal-install/CabalInstall.hs 31 - comp <- compilerCommand conf - -- FIX: remove fromJust - let p = rawSystemProgram 0 (fromJust comp) + compM <- compilerCommand conf + let comp = case compM of + Nothing -> noCompErr + Just (Program _ _ _ EmptyLocation) -> noCompErr + Just c -> c + let p = rawSystemProgram 3 comp hunk ./cabal-install/CabalInstall.hs 42 + where noCompErr = error "No compiler found during configure. Please use --with-runghc= or --with-runhugs=." hunk ./cabal-install/CabalInstall.hs 44 -installerPrograms = - foldl (\pConf p -> updateProgram (Just p) pConf) - defaultProgramConfiguration - [Program "runghc" "runghc" ["Setup"] EmptyLocation, - Program "runhugs" "runhugs" ["-98", "Setup"] EmptyLocation] +installerPrograms = defaultProgramConfiguration hunk ./cabal-install/CabalInstall.hs 46 --- FIX: --- * get program config from --with-runghc=, etc. --- * some day be more flexible here; allow setup script to be built --- w/ nhc or GHC, for instance. +-- |Figure out how to use runghc or runhugs. hunk ./cabal-install/CabalInstall.hs 49 - let prog = (case configHcFlavor conf of - Just GHC -> "runghc" - Just Hugs -> "runhugs" - Nothing -> case defaultCompilerFlavor of - Just GHC -> "runghc" - Just Hugs -> "runhugs" - Nothing -> error "please specify one of --ghc or --hugs") - lookupProgram prog (configPrograms conf) + let (progName, args) + = case compilerFlav conf of + GHC -> ("runghc", ["Setup"]) + Hugs -> ("runhugs", ["-98", "Setup"]) + progM <- lookupProgram progName (configPrograms conf) + case progM of + Nothing -> return Nothing + Just prog -> return $ Just prog{programArgs=args ++ (programArgs prog)} + +compilerFlav :: ConfigFlags -> CompilerFlavor +compilerFlav conf = + case configHcFlavor conf of + Just GHC -> GHC + Just Hugs -> Hugs + Nothing -> case defaultCompilerFlavor of + Just GHC -> GHC + Just Hugs -> Hugs + Nothing -> error "please specify one of --ghc or --hugs" hunk ./cabal-install/CabalInstall.hs 70 - putStrLn $ "package; " ++ (show packageIdentStr) + putStrLn $ "package: " ++ (show packageIdentStr) hunk ./cabal-install/CabalInstall.hs 92 - when (toInstall == []) (error "please give a tarball or directory on the command-line.") + when (toInstall == []) (error "please give a tarball or directory on the command-line (try --help)") hunk ./cabal-install/CabalInstall.hs 23 --- |If this is an error, quit with that exit code -quitFail :: ExitCode -> IO () -quitFail ExitSuccess = return () -quitFail e = exitWith e +-- ------------------------------------------------------------ +-- * Guts +-- ------------------------------------------------------------ hunk ./cabal-install/CabalInstall.hs 27 +-- |perform runghc (or runhugs) Setup configure, (build, install). hunk ./cabal-install/CabalInstall.hs 42 - where noCompErr = error "No compiler found during configure. Please use --with-runghc= or --with-runhugs=." + where noCompErr + = error "No compiler found during configure. Please use --with-runghc= or --with-runhugs=." + +-- |Call doInstall on the given argument, perhaps after unzipping it or whatever. +unPackOrGo tarOrDir conf confArgs = do + let (packageIdentStr, ext) = splitFileExt tarOrDir + putStrLn $ "package: " ++ (show packageIdentStr) + case ext of + "tgz" -> do system $ "tar -zxvf " ++ tarOrDir + unPackOrGo packageIdentStr conf confArgs + "gz" -> do system $ "gunzip " ++ tarOrDir + unPackOrGo packageIdentStr conf confArgs + "tar" -> do system $ "tar -xvf " ++ tarOrDir + unPackOrGo packageIdentStr conf confArgs + "cabal" -> let (dir, _, _) = splitFilePath tarOrDir + in doInstall dir conf confArgs + _ -> doInstall tarOrDir conf confArgs + + +-- ------------------------------------------------------------ +-- * Helpers +-- ------------------------------------------------------------ hunk ./cabal-install/CabalInstall.hs 65 +-- |If this is an error, quit with that exit code +quitFail :: ExitCode -> IO () +quitFail ExitSuccess = return () +quitFail e = exitWith e + +-- Probably delete this. hunk ./cabal-install/CabalInstall.hs 85 + +-- |Given the configure flags, get the compiler flavor. hunk ./cabal-install/CabalInstall.hs 97 -unPackOrGo tarOrDir conf confArgs = do - let (packageIdentStr, ext) = splitFileExt tarOrDir - putStrLn $ "package: " ++ (show packageIdentStr) - case ext of - "tgz" -> do system $ "tar -zxvf " ++ tarOrDir - unPackOrGo packageIdentStr conf confArgs - "gz" -> do system $ "gunzip " ++ tarOrDir - unPackOrGo packageIdentStr conf confArgs - "tar" -> do system $ "tar -xvf " ++ tarOrDir - unPackOrGo packageIdentStr conf confArgs - "cabal" -> let (dir, _, _) = splitFilePath tarOrDir - in doInstall dir conf confArgs - _ -> doInstall tarOrDir conf confArgs +-- ------------------------------------------------------------ +-- * Main +-- ------------------------------------------------------------ hunk ./Distribution/Compiler.hs 134 + extensionToGHCFlag GeneralizedNewtypeDeriving = Right "-fglasgow-exts" hunk ./Language/Haskell/Extension.hs 83 + | GeneralizedNewtypeDeriving hunk ./Distribution/Simple/LocalBuildInfo.hs 54 + absolutePath, prefixRelPath, hunk ./TODO 1 -* Program - hunk ./TODO 4 -* look at "cabal design - -* Something for gentoo which produces a package gen file but doesn't - do the register?? - -* Mine Brian Smith emails for tests & patches - --= 1.0 =- -* new field data-files, a list of files to be copied to a place where ->> > an executable can find them (e.g. template-hsc.h for hsc2hs): ->> > Hugs: the directory containing the Main module ->> > GHC/Windows: the directory containing the executable ->> > GHC/Unix: /usr/local/share/ ->> > plus a new function in System.Directory to return the name of this ->> > directory. That would address Dimitry's requirements in ->> ->> How about allowing directories too, which would be copied recursively? - -Also, if we do this, we should probably specify the manner in which -such a directory should be layed out so: - -1) it doesn't get too cluttered -2) different packages don't stomp on each-other's files and -3) different versions of different packages can use the same filenames. - -dataFileDir :: Distribution.Package.PackageIdentifier -> FilePath -dataFileDir ident = dataFileDirRoot `joinFilePath` (showPackageId ident) - -which I like better, but that strongly couples "dataFileDir" to the -Cabal package in that you need to have a PackageIdentifier. How do -you get that PackageIdentifier? Well, your program will have to parse -your .cabal file. No problem! (if you have one) - -* New field extra-tmp-files, a list of extra files to be removed by - setup clean, beyond those that can be deduced. - -* Rename other-files as extra-source-files for consistency and clarity. - -* Install libraries in $libdir/ghc-$ghc_version/ rather than $libdir. - -* Fix up sdist? hide sdist? bdist? -** if there's a flag, --include-preprocessed-sources (or something - better) run the preprocessing phase and include both the - unpreprocessed and the preprocessed sources in the source tarball? -But really, there are two kinds of preprocessors, as Ross points out. -The kind that produce OS-independent code, and the kind that produce -OS-dependent code. Perhaps this concept shoudl be added to the -PreProcessor type, and a we could have two flags to sdist: - ---include-standalone-preprocessed-sources - -Which would generate the OS-independent sources from tools like Alex -and Happy... - ---include-all-preprocessed-sources - -Which just includes all of the preprocessed sources as above. - -A downside to this is in how it interacts with another proposal to add -tool dependencies. If a package tool-depends on "alex", and then a -source tarball is created with ---include-standalone-preprocessed-sources, then it actually no longer -tool-depends on alex, so we should regenerate the .cabal file. I -guess that's no big deal. - -** Better way to find 'tar'; is there a library? what does darcs do? - hunk ./Distribution/PackageDescription.hs 77 + autogenModuleName, hunk ./Distribution/PackageDescription.hs 329 +-- |The name of the auto-generated module associated with a package +autogenModuleName :: PackageDescription -> String +autogenModuleName pkg_descr = + "Paths_" ++ map fixchar (pkgName (package pkg_descr)) + where fixchar '-' = '_' + fixchar c = c + hunk ./Distribution/Simple/Build.hs 54 - Library(..), libModules, hcOptions) + Library(..), libModules, hcOptions, + autogenModuleName) hunk ./Distribution/Simple/Build.hs 325 + let paths_modulename = autogenModuleName pkg_descr ++ ".hs" + copyFile (autogenModulesDir lbi `joinFileName` paths_modulename) + (exeDir `joinFileName` paths_modulename) hunk ./Distribution/Simple/Build.hs 606 - paths_modulename = "Paths_" ++ fix (pkgName (package pkg_descr)) + paths_modulename = autogenModuleName pkg_descr hunk ./Distribution/Simple/Build.hs 612 - fix = map fixchar - where fixchar '-' = '_' - fixchar c = c - hunk ./Distribution/Simple/Install.hs 64 - hcOptions) + hcOptions, autogenModuleName) hunk ./Distribution/Simple/Install.hs 207 - ("Main" : otherModules (buildInfo exe)) hugsInstallSuffixes True False + ("Main" : autogenModuleName pkg_descr : otherModules (buildInfo exe)) hugsInstallSuffixes True False hunk ./Distribution/Simple/Configure.hs 354 -compilerPkgToolName Hugs = "hugs" -- FIX (HUGS): hugs-pkg does not yet exist +compilerPkgToolName Hugs = "hugs" hunk ./Distribution/Simple/Install.hs 210 + -- see http://hackage.haskell.org/trac/hackage/ticket/43 hunk ./Distribution/Simple/Register.hs 180 - -- FIX (HUGS): hunk ./GNUmakefile 1 -CABALVERSION=1.1.4 -KIND=rc -#KIND=latest -GHCFLAGS= --make -Wall -fno-warn-unused-matches -cpp -# later: -Wall -PREF=/usr/local -USER_FLAG = -GHCPKGFLAGS = -#HCBASE=/tmp/ghc/bin/ -HCBASE=/usr/bin/ -HC=$(HCBASE)ghc -HC_PKG=$(HCBASE)/ghc-pkg -# Comment out this line if your system doesn't have System.Posix. -ISPOSIX=-DHAVE_UNIX_PACKAGE - -ifdef user -USER_FLAG = --user -GHCPKGFLAGS = -f ~/.ghc-packages -GHCFLAGS += -package-conf ~/.ghc-packages -endif - -# the cabal tarball... -CABALBALL=cabal.tar.gz - -all: moduleTest - -# build the library itself - -setup:: - mkdir -p dist/tmp - $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup - -Setup-nhc: - hmake -nhc98 -package base -prelude Setup - -config: setup - ./setup configure --ghc --prefix=$(PREF) - -build: build-stamp -build-stamp: config - ./setup build - -install: build-stamp - ./setup install $(USER_FLAG) - cd cabal-install && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install - -hugsbootstrap: - rm -rf dist/tmp dist/hugs - mkdir -p dist/tmp - mkdir dist/hugs - cp -r Distribution dist/tmp - hugs-package dist/tmp dist/hugs - cp Setup.lhs Cabal.cabal dist/hugs - -hugsinstall: hugsbootstrap - cd dist/hugs && ./Setup.lhs configure --hugs - cd dist/hugs && ./Setup.lhs build - cd dist/hugs && ./Setup.lhs install - -haddock: setup - ./setup configure - ./setup haddock - -clean-doc: - cd doc && make clean - -doc: haddock - docbook2html doc/Cabal.xml --output doc/users-guide - -clean: clean-cabal clean-hunit clean-test clean-doc - -clean-cabal: - -rm -f Distribution/*.o Distribution/*.hi - -rm -f Distribution/Simple/*.o Distribution/Simple/*.hi - -rm -f Compat/*.o Compat/*.hi - -rm -f darcs* out.build *~ semantic.cache* x*.html - -rm -f library-infrastructure--darcs.tar.gz - -rm -rf setup *.o *.hi moduleTest dist installed-pkg-config - -rm -f build-stamp - -rm -rf dist/hugs - -clean-hunit: - -rm -f hunit-stamp hunitInstall-stamp - cd tests/HUnit-1.0 && make clean - -clean-test: - cd tests/A && make clean - cd tests/wash2hs && make clean - -remove: remove-cabal remove-hunit -remove-cabal: - -$(HC_PKG) $(GHCPKGFLAGS) -r Cabal - -rm -rf $(PREF)/lib/Cabal-0.1 -remove-hunit: - -$(HC_PKG) $(GHCPKGFLAGS) -r HUnit - -rm -rf $(PREF)/lib/HUnit-1.0 - -# dependencies (included): - -hunit: hunit-stamp -hunit-stamp: - cd tests/HUnit-1.0 && make && ./setup configure --prefix=$(PREF) && ./setup build - touch $@ - -hunitInstall: hunitInstall-stamp -hunitInstall-stamp: hunit-stamp - cd tests/HUnit-1.0 && ./setup install $(USER_FLAG) - touch $@ - -# testing... - -moduleTest: - mkdir -p dist/debug - $(HC) $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:src:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest - -tests: moduleTest clean - cd tests/A && make clean - cd tests/HUnit-1.0 && make clean - cd tests/A && make - cd tests/HUnit-1.0 && make - -check: - rm -f moduleTest - make moduleTest - ./moduleTest - -# distribution... - -pushall: - darcs push --all ijones@cvs.haskell.org:/home/darcs/cabal - - -pushdist: pushall dist - scp $(TMPDISTLOC)/cabal.tar.gz ijones@www.haskell.org:~/cabal/cabal-code.tgz -# PUSH ELSEWHERE: scp changelog ijones@www.haskell.org:~/cabal/release/changelog -# PUSH ELSEWHERE: scp releaseNotes ijones@www.haskell.org:~/cabal/release/notes -# rm -f /tmp/cabal-code.tgz - -deb: dist - cd $(TMPDISTLOC) && ln -s $(CABALBALL) haskell-cabal_$(CABALVERSION).orig.tar.gz - cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) - mv $(TMPDISTLOC)/cabal $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) - cd $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) && debuild - -$(CABALBALL): - darcs record - rm -rf /tmp/cabal* /tmp/Cabal* - rm -rf $(TMPDISTLOC) - darcs dist - mv Cabal.tar.gz $(CABALBALL) - -TMPDISTLOC=/tmp/cabaldist - -# after this command, there will be cabal.tar.gz in $(TMPDISTLOC), -# which will have built docs, haddock, and source code. - -dist: haddock $(CABALBALL) - rm -rf $(TMPDISTLOC) - mkdir $(TMPDISTLOC) - mv $(CABALBALL) $(TMPDISTLOC) - cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) && mv Cabal cabal - #mkdir $(TMPDISTLOC)/cabal/doc - make doc - cp -r dist/doc/html $(TMPDISTLOC)/cabal/doc/API - cp -r doc/users-guide $(TMPDISTLOC)/cabal/doc/users-guide - cd ~/usr/doc/haskell/haskell-report/packages && docbook2html -o /tmp/pkg-spec-html pkg-spec.sgml && docbook2pdf pkg-spec.sgml -o /tmp - cp -r /tmp/pkg-spec{-html,.pdf} $(TMPDISTLOC)/cabal/doc - - cd $(TMPDISTLOC) && tar -zcvf $(CABALBALL) cabal -# rm -f /tmp/Cabal.tar.gz -# rm -rf /tmp/cabal - -release: dist - mkdir $(TMPDISTLOC)/release - cp $(TMPDISTLOC)/cabal/releaseNotes $(TMPDISTLOC)/release - cp $(TMPDISTLOC)/cabal/changelog $(TMPDISTLOC)/release - cp -r $(TMPDISTLOC)/cabal/doc $(TMPDISTLOC)/release - cp $(TMPDISTLOC)/cabal.tar.gz $(TMPDISTLOC)/release/cabal-$(CABALVERSION).tar.gz - scp -r $(TMPDISTLOC)/release ijones@www.haskell.org:~/cabal/release/cabal-$(CABALVERSION) - ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f $(KIND) && ln -s cabal-$(CABALVERSION) $(KIND)' rmfile ./GNUmakefile addfile ./Makefile hunk ./Makefile 1 +TOP=.. +include $(TOP)/mk/boilerplate.mk + +SUBDIRS = doc + +ALL_DIRS = \ + Distribution \ + Distribution/Simple \ + Distribution/PreProcess \ + Distribution/Compat \ + Language/Haskell + +EXCLUDED_SRCS = DefaultSetup.lhs + +PACKAGE = Cabal +VERSION = 1.0 + +PACKAGE_DEPS = base + +SRC_HADDOCK_OPTS += -t "Haskell Core Libraries (Cabal package)" + +SRC_HC_OPTS += -cpp + +include $(TOP)/mk/target.mk addfile ./Makefile.inc hunk ./Makefile.inc 1 +ifeq "" "${MKDIR}" +MKDIR:=$(shell pwd) +#MKDIR:=$(PWD) +else +MKDIR:=$(patsubst %/$(notdir ${MKDIR}),%, ${MKDIR}) +endif +include ${MKDIR}/Makefile.inc addfile ./Makefile.nhc98 hunk ./Makefile.nhc98 1 +# Hey Emacs, this is a -*- makefile -*- ! + +THISPKG = Cabal +SEARCH = -package base +EXTRA_H_FLAGS = -K4M +EXTRA_HBC_FLAGS = -H80M -A4M + +SRCS = \ + Distribution/Extension.hs \ + Distribution/GetOpt.hs \ + Distribution/InstalledPackageInfo.hs \ + Distribution/License.hs \ + Distribution/Make.hs \ + Distribution/Package.hs \ + Distribution/PackageDescription.hs \ + Distribution/ParseUtils.hs \ + Distribution/PreProcess.hs \ + Distribution/Setup.hs \ + Distribution/Simple.hs \ + Distribution/Version.hs \ + \ + Distribution/Compat/Directory.hs \ + Distribution/Compat/Exception.hs \ + Distribution/Compat/FilePath.hs \ + Distribution/Compat/RawSystem.hs \ + Distribution/Compat/ReadP.hs \ + \ + Distribution/PreProcess/Unlit.hs \ + \ + Distribution/Simple/Build.hs \ + Distribution/Simple/Configure.hs \ + Distribution/Simple/GHCPackageConfig.hs \ + Distribution/Simple/Install.hs \ + Distribution/Simple/LocalBuildInfo.hs \ + Distribution/Simple/Register.hs \ + Distribution/Simple/SrcDist.hs \ + Distribution/Simple/Utils.hs \ + + +# Here are the main rules. +include ../Makefile.common + +# Here are any extra dependencies. + +# C-files dependencies. + hunk ./doc/GNUmakefile 1 -all: Cabal.xml - docbook2pdf Cabal.xml - -clean: - rm -fr *~ API users-guide Cabal.pdf Cabal.dvi semantic.cache rmfile ./doc/GNUmakefile addfile ./doc/Makefile hunk ./doc/Makefile 1 +TOP = ../.. +include $(TOP)/mk/boilerplate.mk + +XML_DOC = Cabal +INSTALL_XML_DOC = $(XML_DOC) + +include $(TOP)/mk/target.mk addfile ./prologue.txt hunk ./prologue.txt 1 +The Haskell Cabal is the Common Architecture for Building Applications +and Libraries. It is a framework which defines a common interface for +authors to more easily build their applications in a portable way. The +Haskell Cabal is meant to be a part of a larger infrastructure for +distributing, organizing, and cataloging Haskell Libraries and +Tools. For more information, please see: +. addfile ./GNUmakefile hunk ./GNUmakefile 1 +CABALVERSION=1.1.4 +KIND=rc +#KIND=latest +GHCFLAGS= --make -Wall -fno-warn-unused-matches -cpp +# later: -Wall +PREF=/usr/local +USER_FLAG = +GHCPKGFLAGS = +#HCBASE=/tmp/ghc/bin/ +HCBASE=/usr/bin/ +HC=$(HCBASE)ghc +HC_PKG=$(HCBASE)/ghc-pkg +# Comment out this line if your system doesn't have System.Posix. +ISPOSIX=-DHAVE_UNIX_PACKAGE + +ifdef user +USER_FLAG = --user +GHCPKGFLAGS = -f ~/.ghc-packages +GHCFLAGS += -package-conf ~/.ghc-packages +endif + +# the cabal tarball... +CABALBALL=cabal.tar.gz + +all: moduleTest + +# build the library itself + +setup:: + mkdir -p dist/tmp + $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup + +Setup-nhc: + hmake -nhc98 -package base -prelude Setup + +config: setup + ./setup configure --ghc --prefix=$(PREF) + +build: build-stamp +build-stamp: config + ./setup build + +install: build-stamp + ./setup install $(USER_FLAG) + cd cabal-install && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install + +hugsbootstrap: + rm -rf dist/tmp dist/hugs + mkdir -p dist/tmp + mkdir dist/hugs + cp -r Distribution dist/tmp + hugs-package dist/tmp dist/hugs + cp Setup.lhs Cabal.cabal dist/hugs + +hugsinstall: hugsbootstrap + cd dist/hugs && ./Setup.lhs configure --hugs + cd dist/hugs && ./Setup.lhs build + cd dist/hugs && ./Setup.lhs install + +haddock: setup + ./setup configure + ./setup haddock + +clean-doc: + cd doc && make clean + +doc: haddock + docbook2html doc/Cabal.xml --output doc/users-guide + +clean: clean-cabal clean-hunit clean-test clean-doc + +clean-cabal: + -rm -f Distribution/*.o Distribution/*.hi + -rm -f Distribution/Simple/*.o Distribution/Simple/*.hi + -rm -f Compat/*.o Compat/*.hi + -rm -f darcs* out.build *~ semantic.cache* x*.html + -rm -f library-infrastructure--darcs.tar.gz + -rm -rf setup *.o *.hi moduleTest dist installed-pkg-config + -rm -f build-stamp + -rm -rf dist/hugs + +clean-hunit: + -rm -f hunit-stamp hunitInstall-stamp + cd tests/HUnit-1.0 && make clean + +clean-test: + cd tests/A && make clean + cd tests/wash2hs && make clean + +remove: remove-cabal remove-hunit +remove-cabal: + -$(HC_PKG) $(GHCPKGFLAGS) -r Cabal + -rm -rf $(PREF)/lib/Cabal-0.1 +remove-hunit: + -$(HC_PKG) $(GHCPKGFLAGS) -r HUnit + -rm -rf $(PREF)/lib/HUnit-1.0 + +# dependencies (included): + +hunit: hunit-stamp +hunit-stamp: + cd tests/HUnit-1.0 && make && ./setup configure --prefix=$(PREF) && ./setup build + touch $@ + +hunitInstall: hunitInstall-stamp +hunitInstall-stamp: hunit-stamp + cd tests/HUnit-1.0 && ./setup install $(USER_FLAG) + touch $@ + +# testing... + +moduleTest: + mkdir -p dist/debug + $(HC) $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:src:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest + +tests: moduleTest clean + cd tests/A && make clean + cd tests/HUnit-1.0 && make clean + cd tests/A && make + cd tests/HUnit-1.0 && make + +check: + rm -f moduleTest + make moduleTest + ./moduleTest + +# distribution... + +pushall: + darcs push --all ijones@cvs.haskell.org:/home/darcs/cabal + + +pushdist: pushall dist + scp $(TMPDISTLOC)/cabal.tar.gz ijones@www.haskell.org:~/cabal/cabal-code.tgz +# PUSH ELSEWHERE: scp changelog ijones@www.haskell.org:~/cabal/release/changelog +# PUSH ELSEWHERE: scp releaseNotes ijones@www.haskell.org:~/cabal/release/notes +# rm -f /tmp/cabal-code.tgz + +deb: dist + cd $(TMPDISTLOC) && ln -s $(CABALBALL) haskell-cabal_$(CABALVERSION).orig.tar.gz + cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) + mv $(TMPDISTLOC)/cabal $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) + cd $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) && debuild + +$(CABALBALL): + darcs record + rm -rf /tmp/cabal* /tmp/Cabal* + rm -rf $(TMPDISTLOC) + darcs dist + mv Cabal.tar.gz $(CABALBALL) + +TMPDISTLOC=/tmp/cabaldist + +# after this command, there will be cabal.tar.gz in $(TMPDISTLOC), +# which will have built docs, haddock, and source code. + +dist: haddock $(CABALBALL) + rm -rf $(TMPDISTLOC) + mkdir $(TMPDISTLOC) + mv $(CABALBALL) $(TMPDISTLOC) + cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) && mv Cabal cabal + #mkdir $(TMPDISTLOC)/cabal/doc + make doc + cp -r dist/doc/html $(TMPDISTLOC)/cabal/doc/API + cp -r doc/users-guide $(TMPDISTLOC)/cabal/doc/users-guide + cd ~/usr/doc/haskell/haskell-report/packages && docbook2html -o /tmp/pkg-spec-html pkg-spec.sgml && docbook2pdf pkg-spec.sgml -o /tmp + cp -r /tmp/pkg-spec{-html,.pdf} $(TMPDISTLOC)/cabal/doc + + cd $(TMPDISTLOC) && tar -zcvf $(CABALBALL) cabal +# rm -f /tmp/Cabal.tar.gz +# rm -rf /tmp/cabal + +release: dist + mkdir $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal/releaseNotes $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal/changelog $(TMPDISTLOC)/release + cp -r $(TMPDISTLOC)/cabal/doc $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal.tar.gz $(TMPDISTLOC)/release/cabal-$(CABALVERSION).tar.gz + scp -r $(TMPDISTLOC)/release ijones@www.haskell.org:~/cabal/release/cabal-$(CABALVERSION) + ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f $(KIND) && ln -s cabal-$(CABALVERSION) $(KIND)' addfile ./doc/GNUmakefile hunk ./doc/GNUmakefile 1 +all: Cabal.xml + docbook2pdf Cabal.xml + +clean: + rm -fr *~ API users-guide Cabal.pdf Cabal.dvi semantic.cache hunk ./doc/GNUmakefile 1 -all: Cabal.xml - docbook2pdf Cabal.xml - -clean: - rm -fr *~ API users-guide Cabal.pdf Cabal.dvi semantic.cache rmfile ./doc/GNUmakefile hunk ./GNUmakefile 1 -CABALVERSION=1.1.4 -KIND=rc -#KIND=latest -GHCFLAGS= --make -Wall -fno-warn-unused-matches -cpp -# later: -Wall -PREF=/usr/local -USER_FLAG = -GHCPKGFLAGS = -#HCBASE=/tmp/ghc/bin/ -HCBASE=/usr/bin/ -HC=$(HCBASE)ghc -HC_PKG=$(HCBASE)/ghc-pkg -# Comment out this line if your system doesn't have System.Posix. -ISPOSIX=-DHAVE_UNIX_PACKAGE - -ifdef user -USER_FLAG = --user -GHCPKGFLAGS = -f ~/.ghc-packages -GHCFLAGS += -package-conf ~/.ghc-packages -endif - -# the cabal tarball... -CABALBALL=cabal.tar.gz - -all: moduleTest - -# build the library itself - -setup:: - mkdir -p dist/tmp - $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup - -Setup-nhc: - hmake -nhc98 -package base -prelude Setup - -config: setup - ./setup configure --ghc --prefix=$(PREF) - -build: build-stamp -build-stamp: config - ./setup build - -install: build-stamp - ./setup install $(USER_FLAG) - cd cabal-install && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install - -hugsbootstrap: - rm -rf dist/tmp dist/hugs - mkdir -p dist/tmp - mkdir dist/hugs - cp -r Distribution dist/tmp - hugs-package dist/tmp dist/hugs - cp Setup.lhs Cabal.cabal dist/hugs - -hugsinstall: hugsbootstrap - cd dist/hugs && ./Setup.lhs configure --hugs - cd dist/hugs && ./Setup.lhs build - cd dist/hugs && ./Setup.lhs install - -haddock: setup - ./setup configure - ./setup haddock - -clean-doc: - cd doc && make clean - -doc: haddock - docbook2html doc/Cabal.xml --output doc/users-guide - -clean: clean-cabal clean-hunit clean-test clean-doc - -clean-cabal: - -rm -f Distribution/*.o Distribution/*.hi - -rm -f Distribution/Simple/*.o Distribution/Simple/*.hi - -rm -f Compat/*.o Compat/*.hi - -rm -f darcs* out.build *~ semantic.cache* x*.html - -rm -f library-infrastructure--darcs.tar.gz - -rm -rf setup *.o *.hi moduleTest dist installed-pkg-config - -rm -f build-stamp - -rm -rf dist/hugs - -clean-hunit: - -rm -f hunit-stamp hunitInstall-stamp - cd tests/HUnit-1.0 && make clean - -clean-test: - cd tests/A && make clean - cd tests/wash2hs && make clean - -remove: remove-cabal remove-hunit -remove-cabal: - -$(HC_PKG) $(GHCPKGFLAGS) -r Cabal - -rm -rf $(PREF)/lib/Cabal-0.1 -remove-hunit: - -$(HC_PKG) $(GHCPKGFLAGS) -r HUnit - -rm -rf $(PREF)/lib/HUnit-1.0 - -# dependencies (included): - -hunit: hunit-stamp -hunit-stamp: - cd tests/HUnit-1.0 && make && ./setup configure --prefix=$(PREF) && ./setup build - touch $@ - -hunitInstall: hunitInstall-stamp -hunitInstall-stamp: hunit-stamp - cd tests/HUnit-1.0 && ./setup install $(USER_FLAG) - touch $@ - -# testing... - -moduleTest: - mkdir -p dist/debug - $(HC) $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:src:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest - -tests: moduleTest clean - cd tests/A && make clean - cd tests/HUnit-1.0 && make clean - cd tests/A && make - cd tests/HUnit-1.0 && make - -check: - rm -f moduleTest - make moduleTest - ./moduleTest - -# distribution... - -pushall: - darcs push --all ijones@cvs.haskell.org:/home/darcs/cabal - - -pushdist: pushall dist - scp $(TMPDISTLOC)/cabal.tar.gz ijones@www.haskell.org:~/cabal/cabal-code.tgz -# PUSH ELSEWHERE: scp changelog ijones@www.haskell.org:~/cabal/release/changelog -# PUSH ELSEWHERE: scp releaseNotes ijones@www.haskell.org:~/cabal/release/notes -# rm -f /tmp/cabal-code.tgz - -deb: dist - cd $(TMPDISTLOC) && ln -s $(CABALBALL) haskell-cabal_$(CABALVERSION).orig.tar.gz - cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) - mv $(TMPDISTLOC)/cabal $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) - cd $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) && debuild - -$(CABALBALL): - darcs record - rm -rf /tmp/cabal* /tmp/Cabal* - rm -rf $(TMPDISTLOC) - darcs dist - mv Cabal.tar.gz $(CABALBALL) - -TMPDISTLOC=/tmp/cabaldist - -# after this command, there will be cabal.tar.gz in $(TMPDISTLOC), -# which will have built docs, haddock, and source code. - -dist: haddock $(CABALBALL) - rm -rf $(TMPDISTLOC) - mkdir $(TMPDISTLOC) - mv $(CABALBALL) $(TMPDISTLOC) - cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) && mv Cabal cabal - #mkdir $(TMPDISTLOC)/cabal/doc - make doc - cp -r dist/doc/html $(TMPDISTLOC)/cabal/doc/API - cp -r doc/users-guide $(TMPDISTLOC)/cabal/doc/users-guide - cd ~/usr/doc/haskell/haskell-report/packages && docbook2html -o /tmp/pkg-spec-html pkg-spec.sgml && docbook2pdf pkg-spec.sgml -o /tmp - cp -r /tmp/pkg-spec{-html,.pdf} $(TMPDISTLOC)/cabal/doc - - cd $(TMPDISTLOC) && tar -zcvf $(CABALBALL) cabal -# rm -f /tmp/Cabal.tar.gz -# rm -rf /tmp/cabal - -release: dist - mkdir $(TMPDISTLOC)/release - cp $(TMPDISTLOC)/cabal/releaseNotes $(TMPDISTLOC)/release - cp $(TMPDISTLOC)/cabal/changelog $(TMPDISTLOC)/release - cp -r $(TMPDISTLOC)/cabal/doc $(TMPDISTLOC)/release - cp $(TMPDISTLOC)/cabal.tar.gz $(TMPDISTLOC)/release/cabal-$(CABALVERSION).tar.gz - scp -r $(TMPDISTLOC)/release ijones@www.haskell.org:~/cabal/release/cabal-$(CABALVERSION) - ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f $(KIND) && ln -s cabal-$(CABALVERSION) $(KIND)' rmfile ./GNUmakefile hunk ./Distribution/InstalledPackageInfo.hs 97 + extraGHCiLibraries:: [String], -- overrides extraLibraries for GHCi hunk ./Distribution/InstalledPackageInfo.hs 131 + extraGHCiLibraries= [], hunk ./Distribution/InstalledPackageInfo.hs 252 + , listField "extra-ghci-libraries" + showToken parseTokenQ + extraGHCiLibraries (\xs pkg -> pkg{extraGHCiLibraries=xs}) hunk ./Makefile 16 -VERSION = 1.0 +VERSION = 1.1.4 hunk ./TODO 1 ------------------------------------------------------------- --= 1.2 =- - -* Hugs - look for "FIX (HUGS)" - -* Haddock - - should process hidden modules as well as exposed ones. The hidden - modules might contain entities that are re-exported by an exposed - module. Hidden modules should use the #hide haddock directive. - - - if GHC is present and hscpp is not, we can use 'ghc -E -cpp'. This - also unlits. - - - haddock should be passed the names of the interface files for the - dependent packages (gotten from haddock_interfaces field of the - dependent packages, query ghc-pkg). - - - we should install the haddock interface, and fill in the location - in haddock_interfaces. Similarly for the HTML, and haddock_html. - -* grep for "FIX" +OLD TODOS: hunk ./TODO 6 -** Instead of freaking out on unknown fields, the parser should return - a list of those unknown fields so a warning can be printed. Or not. hunk ./TODO 40 -** hugs-pkg -** register for hugs hunk ./TODO 49 -* Hugs -- no way to tell Hugs to turn packages on or off -- no register / unregister for hugs - hunk ./TODO 50 -** ./Setup.lhs bdist hunk ./TODO 52 -** Extensions -- complain if their use makes the code non-portable? --- but what does this mean? ghc & hugs? - -** "collections / distributions, etc" multiple cabal packages in one package -** It would be useful to have alternatives in dependencies, e.g. HGL - could depend on X11 | Win32. hunk ./Distribution/Make.hs 128 - ((copydest,_), _, args) <- parseCopyArgs (copydest0,0) args [] + ((CopyFlags copydest _), _, args) <- parseCopyArgs (CopyFlags copydest0 0) args [] hunk ./Distribution/Make.hs 138 - ((_,_), _, args) <- parseInstallArgs (uInst,0) args [] + ((InstallFlags _ _), _, args) <- parseInstallArgs (InstallFlags uInst 0) args [] hunk ./Distribution/Make.hs 168 - (parseRegisterArgs (uInst,genScript, 0) args []) + (parseRegisterArgs (RegisterFlags uInst genScript 0) args []) hunk ./Distribution/Make.hs 171 - (parseUnregisterArgs (uInst, genScript, 0) args []) + (parseUnregisterArgs (RegisterFlags uInst genScript 0) args []) hunk ./Distribution/Setup.hs 47 - CopyFlags, CopyDest(..), InstallFlags, RegisterFlags, SDistFlags, + CopyFlags(..), CopyDest(..), InstallFlags(..), + RegisterFlags(..), SDistFlags(..), hunk ./Distribution/Setup.hs 102 +-- ------------------------------------------------------------ +-- * Flag-related types +-- ------------------------------------------------------------ + hunk ./Distribution/Setup.hs 167 -defaultCompilerFlavor :: Maybe CompilerFlavor -defaultCompilerFlavor = -#if defined(__GLASGOW_HASKELL__) - Just GHC -#elif defined(__NHC__) - Just NHC -#elif defined(__HUGS__) - Just Hugs -#else - Nothing -#endif +-- | Flags to @copy@: (destdir, copy-prefix (backwards compat), verbose) +data CopyFlags = CopyFlags {copyDest :: CopyDest + ,copyVerbose :: Int} hunk ./Distribution/Setup.hs 171 --- | Arguments to pass to a @configure@ script, e.g. generated by --- @autoconf@. -configureArgs :: ConfigFlags -> [String] -configureArgs flags - = hc_flag ++ - optFlag "with-hc-pkg" configHcPkg ++ - optFlag "prefix" configPrefix ++ - optFlag "bindir" configBinDir ++ - optFlag "libdir" configLibDir ++ - optFlag "libexecdir" configLibExecDir ++ - optFlag "datadir" configDataDir - where - hc_flag = case (configHcFlavor flags, configHcPath flags) of - (_, Just hc_path) -> ["--with-hc=" ++ hc_path] - (Just hc, Nothing) -> ["--with-hc=" ++ showHC hc] - (Nothing,Nothing) -> [] - optFlag name config_field = case config_field flags of - Just p -> ["--" ++ name ++ "=" ++ p] - Nothing -> [] +data CopyDest + = NoCopyDest + | CopyTo FilePath + | CopyPrefix FilePath -- DEPRECATED + deriving (Eq, Show) hunk ./Distribution/Setup.hs 177 - showHC GHC = "ghc" - showHC NHC = "nhc98" - showHC Hugs = "hugs" - showHC c = "unknown compiler: " ++ (show c) +data InstallUserFlag = InstallUserNone -- ^no --user OR --global flag. + | InstallUserUser -- ^--user flag + | InstallUserGlobal -- ^--global flag + +-- | Flags to @install@: (user package, verbose) +data InstallFlags = InstallFlags {installUserFlags::InstallUserFlag + ,installVerbose :: Int} + +-- | Flags to @sdist@: (snapshot, verbose) +data SDistFlags = SDistFlags {sDistSnapshot::Bool + ,sDistVerbose:: Int} + +-- | Flags to @register@ and @unregister@: (user package, gen-script, verbose) +data RegisterFlags = RegisterFlags {regUserPackage::Bool + ,regGenScript::Bool + ,regVerbose::Int} hunk ./Distribution/Setup.hs 231 + +-- ------------------------------------------------------------ +-- * Mostly parsing functions +-- ------------------------------------------------------------ + +defaultCompilerFlavor :: Maybe CompilerFlavor +defaultCompilerFlavor = +#if defined(__GLASGOW_HASKELL__) + Just GHC +#elif defined(__NHC__) + Just NHC +#elif defined(__HUGS__) + Just Hugs +#else + Nothing +#endif + +-- | Arguments to pass to a @configure@ script, e.g. generated by +-- @autoconf@. +configureArgs :: ConfigFlags -> [String] +configureArgs flags + = hc_flag ++ + optFlag "with-hc-pkg" configHcPkg ++ + optFlag "prefix" configPrefix ++ + optFlag "bindir" configBinDir ++ + optFlag "libdir" configLibDir ++ + optFlag "libexecdir" configLibExecDir ++ + optFlag "datadir" configDataDir + where + hc_flag = case (configHcFlavor flags, configHcPath flags) of + (_, Just hc_path) -> ["--with-hc=" ++ hc_path] + (Just hc, Nothing) -> ["--with-hc=" ++ showHC hc] + (Nothing,Nothing) -> [] + optFlag name config_field = case config_field flags of + Just p -> ["--" ++ name ++ "=" ++ p] + Nothing -> [] + + showHC GHC = "ghc" + showHC NHC = "nhc98" + showHC Hugs = "hugs" + showHC c = "unknown compiler: " ++ (show c) + + hunk ./Distribution/Setup.hs 554 --- | Flags to @copy@: (destdir, copy-prefix (backwards compat), verbose) -type CopyFlags = (CopyDest,Int) - -data CopyDest - = NoCopyDest - | CopyTo FilePath - | CopyPrefix FilePath -- DEPRECATED - deriving (Eq, Show) - -data InstallUserFlag = InstallUserNone -- ^no --user OR --global flag. - | InstallUserUser -- ^--user flag - | InstallUserGlobal -- ^--global flag - hunk ./Distribution/Setup.hs 557 - where updateCfg (copydest,verbose) fl = case fl of - InstPrefix path -> (CopyPrefix path, verbose) - DestDir path -> (CopyTo path,verbose) - Verbose n -> (copydest,n) + where updateCfg (CopyFlags copydest verbose) fl = case fl of + InstPrefix path -> (CopyFlags (CopyPrefix path) verbose) + DestDir path -> (CopyFlags (CopyTo path) verbose) + Verbose n -> (CopyFlags copydest n) hunk ./Distribution/Setup.hs 563 --- | Flags to @install@: (user package, verbose) -type InstallFlags = (InstallUserFlag,Int) hunk ./Distribution/Setup.hs 567 - where updateCfg (uFlag,verbose) fl = case fl of + where updateCfg (InstallFlags uFlag verbose) fl = case fl of hunk ./Distribution/Setup.hs 569 - UserFlag -> (InstallUserUser, verbose) - GlobalFlag -> (InstallUserGlobal, verbose) - Verbose n -> (uFlag, n) + UserFlag -> (InstallFlags InstallUserUser verbose) + GlobalFlag -> (InstallFlags InstallUserGlobal verbose) + Verbose n -> (InstallFlags uFlag n) hunk ./Distribution/Setup.hs 586 --- | Flags to @sdist@: (snapshot, verbose) -type SDistFlags = (Bool, Int) - hunk ./Distribution/Setup.hs 587 -parseSDistArgs = parseArgs sdistCmd updateCfg (False, 0) - where updateCfg (snapshot, verbose) fl = case fl of - Snapshot -> (True, verbose) - Verbose n -> (snapshot, n) +parseSDistArgs = parseArgs sdistCmd updateCfg (SDistFlags False 0) + where updateCfg (SDistFlags snapshot verbose) fl = case fl of + Snapshot -> (SDistFlags True verbose) + Verbose n -> (SDistFlags snapshot n) hunk ./Distribution/Setup.hs 621 --- | Flags to @register@ and @unregister@: (user package, gen-script, verbose) -type RegisterFlags = (Bool, Bool, Int) - hunk ./Distribution/Setup.hs 624 - where updateCfg (uFlag, genScriptFlag, verbose) fl = case fl of - UserFlag -> (True, genScriptFlag, verbose) - GlobalFlag -> (False, genScriptFlag, verbose) - Verbose n -> (uFlag, genScriptFlag, n) - GenScriptFlag -> (uFlag, True, verbose) + where updateCfg (RegisterFlags uFlag genScriptFlag verbose) fl = case fl of + UserFlag -> (RegisterFlags True genScriptFlag verbose) + GlobalFlag -> (RegisterFlags False genScriptFlag verbose) + Verbose n -> (RegisterFlags uFlag genScriptFlag n) + GenScriptFlag -> (RegisterFlags uFlag True verbose) hunk ./Distribution/Simple/Install.hs 74 -import Distribution.Setup (CopyFlags, CopyDest(..)) +import Distribution.Setup (CopyFlags(..), CopyDest(..)) hunk ./Distribution/Simple/Install.hs 95 -install pkg_descr lbi (copydest, verbose) = do +install pkg_descr lbi (CopyFlags copydest verbose) = do hunk ./Distribution/Simple/Register.hs 67 -import Distribution.Setup (RegisterFlags, CopyDest(..)) +import Distribution.Setup (RegisterFlags(..), CopyDest(..)) hunk ./Distribution/Simple/Register.hs 121 -register pkg_descr lbi (userInst, genScript, verbose) +register pkg_descr lbi (RegisterFlags userInst genScript verbose) hunk ./Distribution/Simple/Register.hs 258 -unregister pkg_descr lbi (user_unreg, genScript, verbose) = do +unregister pkg_descr lbi (RegisterFlags user_unreg genScript verbose) = do hunk ./Distribution/Simple.hs 329 - (flags, _, args) <- parseCopyArgs (mprefix,0) args [] + (flags, _, args) <- parseCopyArgs (CopyFlags mprefix 0) args [] hunk ./Distribution/Simple.hs 339 - (flags@(uInst, verbose), _, args) <- parseInstallArgs (uInst,0) args [] + (flags@(InstallFlags uInst verbose), _, args) <- parseInstallArgs (InstallFlags uInst 0) args [] hunk ./Distribution/Simple.hs 350 - ((snapshot,verbose),_, args) <- parseSDistArgs args [] + ((SDistFlags snapshot verbose),_, args) <- parseSDistArgs args [] hunk ./Distribution/Simple.hs 369 - (flags, _, args) <- parseRegisterArgs (uInst, genScript, 0) args [] + (flags, _, args) <- parseRegisterArgs (RegisterFlags uInst genScript 0) args [] hunk ./Distribution/Simple.hs 379 - (flags,_, args) <- parseUnregisterArgs (uInst,genScript, 0) args [] + (flags,_, args) <- parseUnregisterArgs (RegisterFlags uInst genScript 0) args [] hunk ./Distribution/Simple.hs 622 - preCopy = readHook snd, + preCopy = readHook copyVerbose, hunk ./Distribution/Simple.hs 624 - preInst = readHook snd, + preInst = readHook installVerbose, hunk ./Distribution/Simple.hs 630 - preReg = readHook thd3, + preReg = readHook regVerbose, hunk ./Distribution/Simple.hs 633 - preUnreg = readHook thd3 + preUnreg = readHook regVerbose hunk ./Distribution/Simple.hs 662 - thd3 (_,_,z) = z hunk ./Distribution/Simple.hs 669 - install pkg_descr localbuildinfo (NoCopyDest, verbose) + install pkg_descr localbuildinfo (CopyFlags NoCopyDest verbose) hunk ./Distribution/Simple.hs 671 - (register pkg_descr localbuildinfo (uInst, False, verbose)) + (register pkg_descr localbuildinfo (RegisterFlags uInst False verbose)) hunk ./Distribution/Setup.hs 48 + BuildFlags(..), CleanFlags(..), HaddockFlags(..), PFEFlags(..), hunk ./Distribution/Setup.hs 195 +-- Following only have verbose flags, but for consistency and +-- extensibility we make them into a type. +data BuildFlags = BuildFlags {buildVerbose :: Int} +data CleanFlags = CleanFlags {cleanVerbose :: Int} +data HaddockFlags = HaddockFlags {haddockVerbose :: Int} +data PFEFlags = PFEFlags {pfeVerbose :: Int} + hunk ./Distribution/Setup.hs 493 -parseBuildArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) -parseBuildArgs = parseNoArgs buildCmd +parseBuildArgs :: [String] -> [OptDescr a] -> IO (BuildFlags, [a], [String]) +parseBuildArgs = parseNoArgs buildCmd BuildFlags hunk ./Distribution/Setup.hs 514 -parseProgramaticaArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) -parseProgramaticaArgs = parseNoArgs programaticaCmd +parseProgramaticaArgs :: [String] -> [OptDescr a] -> IO (PFEFlags, [a], [String]) +parseProgramaticaArgs = parseNoArgs programaticaCmd PFEFlags hunk ./Distribution/Setup.hs 517 -parseHaddockArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) -parseHaddockArgs = parseNoArgs haddockCmd +parseHaddockArgs :: [String] -> [OptDescr a] -> IO (HaddockFlags, [a], [String]) +parseHaddockArgs = parseNoArgs haddockCmd HaddockFlags hunk ./Distribution/Setup.hs 529 -parseCleanArgs :: [String] -> [OptDescr a] -> IO (Int, [a], [String]) -parseCleanArgs = parseNoArgs cleanCmd +parseCleanArgs :: [String] -> [OptDescr a] -> IO (CleanFlags, [a], [String]) +parseCleanArgs = parseNoArgs cleanCmd CleanFlags hunk ./Distribution/Setup.hs 611 -parseTestArgs = parseNoArgs testCmd +parseTestArgs = parseNoArgs testCmd id hunk ./Distribution/Setup.hs 663 -parseNoArgs :: (Cmd a) -> [String] -> [OptDescr a] -> IO (Int, [a], [String]) -parseNoArgs cmd = parseArgs cmd updateCfg 0 +parseNoArgs :: (Cmd a) + -> (Int -> b) -- Constructor to make this type. + -> [String] -> [OptDescr a]-> IO (b, [a], [String]) +parseNoArgs cmd c = parseArgs cmd updateCfg (c 0) hunk ./Distribution/Setup.hs 668 - updateCfg _ (Verbose n) = n + updateCfg _ (Verbose n) = c n hunk ./Distribution/Simple/Build.hs 57 -import Distribution.Setup (CopyDest(..)) +import Distribution.Setup (CopyDest(..), BuildFlags(..)) hunk ./Distribution/Simple/Build.hs 104 - -> Int -- verbose + -> BuildFlags hunk ./Distribution/Simple/Build.hs 107 -build pkg_descr lbi verbose suffixes = do +build pkg_descr lbi (BuildFlags verbose) suffixes = do hunk ./Distribution/Simple/SrcDist.hs 59 +import Distribution.Setup (SDistFlags(..)) hunk ./Distribution/Simple/SrcDist.hs 77 -sdist :: FilePath -- ^build prefix (temp dir) +sdist :: PackageDescription + -> SDistFlags -- verbose & snapshot + -> FilePath -- ^build prefix (temp dir) hunk ./Distribution/Simple/SrcDist.hs 81 - -> Int -- ^verbose - -> Bool -- ^snapshot hunk ./Distribution/Simple/SrcDist.hs 82 - -> PackageDescription hunk ./Distribution/Simple/SrcDist.hs 83 -sdist tmpDir targetPref verbose snapshot pps pkg_descr_orig = do +sdist pkg_descr_orig (SDistFlags snapshot verbose) tmpDir targetPref pps = do hunk ./Distribution/Simple.hs 143 - preBuild :: Args -> Int -> IO HookedBuildInfo, + preBuild :: Args -> BuildFlags -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 148 - -> Int -- verbose + -> BuildFlags -- verbose hunk ./Distribution/Simple.hs 152 - postBuild :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode, + postBuild :: Args -> BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 155 - preClean :: Args -> Int -> IO HookedBuildInfo, + preClean :: Args -> CleanFlags -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 157 - cleanHook :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO (), + cleanHook :: PackageDescription -> LocalBuildInfo -> CleanFlags -> [PPSuffixHandler] -> IO (), hunk ./Distribution/Simple.hs 159 - postClean :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode, + postClean :: Args -> CleanFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 177 - -> Int -- verbose - -> InstallUserFlag -- user install? + -> InstallFlags -- verbosity & user install hunk ./Distribution/Simple.hs 184 - preSDist :: Args -> Int -> IO HookedBuildInfo, + preSDist :: Args -> SDistFlags -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 186 - sDistHook :: FilePath -- build prefix (temp dir) + sDistHook :: PackageDescription + -> SDistFlags -- verbose and snapshot + -> FilePath -- build prefix (temp dir) hunk ./Distribution/Simple.hs 190 - -> Int -- verbose - -> Bool -- snapshot hunk ./Distribution/Simple.hs 191 - -> PackageDescription hunk ./Distribution/Simple.hs 193 - postSDist :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode, + postSDist :: Args -> SDistFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 210 - preHaddock :: Args -> Int -> IO HookedBuildInfo, + preHaddock :: Args -> HaddockFlags -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 213 - haddockHook :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO (), - postHaddock :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode, + haddockHook :: PackageDescription -> LocalBuildInfo -> HaddockFlags -> [PPSuffixHandler] -> IO (), + postHaddock :: Args -> HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 217 - prePFE :: Args -> Int -> IO HookedBuildInfo, + prePFE :: Args -> PFEFlags -> IO HookedBuildInfo, hunk ./Distribution/Simple.hs 219 - pfeHook :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO (), + pfeHook :: PackageDescription -> LocalBuildInfo -> PFEFlags -> [PPSuffixHandler] -> IO (), hunk ./Distribution/Simple.hs 221 - postPFE :: Args -> Int -> PackageDescription -> LocalBuildInfo -> IO ExitCode + postPFE :: Args -> PFEFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode hunk ./Distribution/Simple.hs 342 - inst pkg_descr localbuildinfo verbose uInst + inst pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 348 - ((SDistFlags snapshot verbose),_, args) <- parseSDistArgs args [] - pkg_descr <- hookOrInArgs preSDist args verbose + (flags,_, args) <- parseSDistArgs args [] + pkg_descr <- hookOrInArgs preSDist args flags hunk ./Distribution/Simple.hs 353 - sd srcPref distPref verbose snapshot pps pkg_descr + sd pkg_descr flags srcPref distPref pps hunk ./Distribution/Simple.hs 355 - postHook postSDist args verbose pkg_descr localbuildinfo + postHook postSDist args flags pkg_descr localbuildinfo hunk ./Distribution/Simple.hs 413 -haddock :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO () -haddock pkg_descr lbi verbose pps = do +haddock :: PackageDescription -> LocalBuildInfo -> HaddockFlags -> [PPSuffixHandler] -> IO () +haddock pkg_descr lbi (HaddockFlags verbose) pps = do hunk ./Distribution/Simple.hs 488 -pfe :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO () -pfe pkg_descr _lbi verbose pps = do +pfe :: PackageDescription -> LocalBuildInfo -> PFEFlags -> [PPSuffixHandler] -> IO () +pfe pkg_descr _lbi (PFEFlags verbose) pps = do hunk ./Distribution/Simple.hs 504 -clean :: PackageDescription -> LocalBuildInfo -> Int -> [PPSuffixHandler] -> IO () -clean pkg_descr lbi verbose pps = do +clean :: PackageDescription -> LocalBuildInfo -> CleanFlags -> [PPSuffixHandler] -> IO () +clean pkg_descr lbi (CleanFlags verbose) pps = do hunk ./Distribution/Simple.hs 576 - instHook = ru, + instHook = (\_ _ _ -> return ()), hunk ./Distribution/Simple.hs 579 - sDistHook = (\_ _ _ _ _ _ -> return ()), + sDistHook = (\_ _ _ _ _ -> return ()), hunk ./Distribution/Simple.hs 617 - preBuild = readHook id, + preBuild = readHook buildVerbose, hunk ./Distribution/Simple.hs 619 - preClean = readHook id, + preClean = readHook cleanVerbose, hunk ./Distribution/Simple.hs 661 -defaultInstallHook pkg_descr localbuildinfo verbose uInstFlag = do +defaultInstallHook pkg_descr localbuildinfo (InstallFlags uInstFlag verbose) = do hunk ./tests/withHooks/Setup.lhs 9 -> import Distribution.Setup(CopyFlags, CopyDest(..)) +> import Distribution.Setup(CopyFlags(..), CopyDest(..)) hunk ./tests/withHooks/Setup.lhs 52 -> myCopyHook a b c@((CopyPrefix p), _) = do +> myCopyHook a b c@(CopyFlags (CopyPrefix p) _) = do hunk ./Distribution/Simple/Utils.hs 68 + distPref, + srcPref, hunk ./Distribution/Simple/Utils.hs 291 --- ----------------------------------------------------------------------------- + +-- ------------------------------------------------------------ +-- * Some Paths +-- ------------------------------------------------------------ +distPref :: FilePath +distPref = "dist" + +srcPref :: FilePath +srcPref = distPref `joinFileName` "src" + +-- ------------------------------------------------------------ hunk ./Distribution/Simple/Utils.hs 303 --- ----------------------------------------------------------------------------- +-- ------------------------------------------------------------ hunk ./Distribution/Simple.hs 91 - moduleToFilePath, findFile) + moduleToFilePath, findFile, distPref, srcPref) hunk ./Distribution/Simple.hs 188 - -> FilePath -- build prefix (temp dir) - -> FilePath -- TargetPrefix hunk ./Distribution/Simple.hs 254 +-- |Combine the programs in the given hooks with the programs built +-- into cabal. hunk ./Distribution/Simple.hs 263 +-- |Combine the preprocessors in the given hooks with the +-- preprocessors built into cabal. +allSuffixHandlers :: Maybe UserHooks + -> [PPSuffixHandler] +allSuffixHandlers hooks + = maybe knownSuffixHandlers + (\h -> overridesPP (hookedPreProcessors h) knownSuffixHandlers) + hooks + where + overridesPP :: [PPSuffixHandler] -> [PPSuffixHandler] -> [PPSuffixHandler] + overridesPP = unionBy (\x y -> fst x == fst y) + hunk ./Distribution/Simple.hs 282 - = do let pps = maybe knownSuffixHandlers - (\h -> overridesPP (hookedPreProcessors h) knownSuffixHandlers) - hooks + = do let pps = allSuffixHandlers hooks hunk ./Distribution/Simple.hs 363 - sd pkg_descr flags srcPref distPref pps + sd pkg_descr flags pps hunk ./Distribution/Simple.hs 416 - overridesPP :: [PPSuffixHandler] -> [PPSuffixHandler] -> [PPSuffixHandler] - overridesPP = unionBy (\x y -> fst x == fst y) hunk ./Distribution/Simple.hs 418 -distPref :: FilePath -distPref = "dist" - hunk ./Distribution/Simple.hs 572 - buildHook = ru, + buildHook = ru4, hunk ./Distribution/Simple.hs 575 - cleanHook = ru, + cleanHook = ru4, hunk ./Distribution/Simple.hs 578 - copyHook = (\_ _ _ -> return ()), + copyHook = ru3, hunk ./Distribution/Simple.hs 581 - instHook = (\_ _ _ -> return ()), + instHook = ru3, hunk ./Distribution/Simple.hs 584 - sDistHook = (\_ _ _ _ _ -> return ()), + sDistHook = ru3, hunk ./Distribution/Simple.hs 587 - regHook = (\_ _ _ -> return ()), + regHook = ru3, hunk ./Distribution/Simple.hs 590 - unregHook = (\_ _ _ -> return ()), + unregHook = ru3, hunk ./Distribution/Simple.hs 593 - pfeHook = ru, + pfeHook = ru4, hunk ./Distribution/Simple.hs 596 - haddockHook = ru, + haddockHook = ru4, hunk ./Distribution/Simple.hs 601 - ru _ _ _ _ = return () + ru4 _ _ _ _ = return () + ru3 _ _ _ = return () hunk ./Distribution/Simple.hs 630 - sDistHook = sdist, + sDistHook = \p f pps -> sdist p f srcPref distPref pps, hunk ./Distribution/Simple.hs 146 - buildHook :: PackageDescription - -> LocalBuildInfo - -> BuildFlags -- verbose - -> [ PPSuffixHandler ] - -> IO (), + buildHook :: PackageDescription -> LocalBuildInfo -> BuildFlags -> [ PPSuffixHandler ] -> IO (), hunk ./Distribution/Simple.hs 160 - copyHook :: PackageDescription - -> LocalBuildInfo - -> CopyFlags -- install-prefix, verbose - -> IO (), + copyHook :: PackageDescription -> LocalBuildInfo -> CopyFlags -> IO (), hunk ./Distribution/Simple.hs 168 - instHook :: PackageDescription - -> LocalBuildInfo - -> InstallFlags -- verbosity & user install - -> IO (), + instHook :: PackageDescription -> LocalBuildInfo -> InstallFlags -> IO (), hunk ./Distribution/Simple.hs 176 - sDistHook :: PackageDescription - -> SDistFlags -- verbose and snapshot - -> [PPSuffixHandler] -- extra preprocessors (includes suffixes) - -> IO (), + sDistHook :: PackageDescription -> LocalBuildInfo -> SDistFlags -> [PPSuffixHandler] -> IO (), hunk ./Distribution/Simple.hs 350 - sd pkg_descr flags pps - + sd pkg_descr localbuildinfo flags pps hunk ./Distribution/Simple.hs 570 - sDistHook = ru3, + sDistHook = ru4, hunk ./Distribution/Simple.hs 616 - sDistHook = \p f pps -> sdist p f srcPref distPref pps, + sDistHook = \p _ f pps -> sdist p f srcPref distPref pps, hunk ./Distribution/Simple.hs 146 - buildHook :: PackageDescription -> LocalBuildInfo -> BuildFlags -> [ PPSuffixHandler ] -> IO (), + buildHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> BuildFlags -> IO (), hunk ./Distribution/Simple.hs 153 - cleanHook :: PackageDescription -> LocalBuildInfo -> CleanFlags -> [PPSuffixHandler] -> IO (), + cleanHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> CleanFlags -> IO (), hunk ./Distribution/Simple.hs 160 - copyHook :: PackageDescription -> LocalBuildInfo -> CopyFlags -> IO (), + copyHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> CopyFlags -> IO (), hunk ./Distribution/Simple.hs 168 - instHook :: PackageDescription -> LocalBuildInfo -> InstallFlags -> IO (), + instHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> InstallFlags -> IO (), hunk ./Distribution/Simple.hs 176 - sDistHook :: PackageDescription -> LocalBuildInfo -> SDistFlags -> [PPSuffixHandler] -> IO (), + sDistHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> SDistFlags -> IO (), hunk ./Distribution/Simple.hs 183 - regHook :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO (), + regHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> RegisterFlags -> IO (), hunk ./Distribution/Simple.hs 190 - unregHook :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO (), + unregHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> RegisterFlags -> IO (), hunk ./Distribution/Simple.hs 198 - haddockHook :: PackageDescription -> LocalBuildInfo -> HaddockFlags -> [PPSuffixHandler] -> IO (), + haddockHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> HaddockFlags -> IO (), hunk ./Distribution/Simple.hs 204 - pfeHook :: PackageDescription -> LocalBuildInfo -> PFEFlags -> [PPSuffixHandler] -> IO (), + pfeHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> PFEFlags -> IO (), hunk ./Distribution/Simple.hs 288 - let bld = cmdHook buildHook - bld pkg_descr localbuildinfo flags pps - + cmdHook buildHook pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 296 - let hdk = cmdHook haddockHook - hdk pkg_descr localbuildinfo verbose pps - + cmdHook haddockHook pkg_descr localbuildinfo verbose hunk ./Distribution/Simple.hs 304 - let p = cmdHook pfeHook - p pkg_descr localbuildinfo verbose pps - + cmdHook pfeHook pkg_descr localbuildinfo verbose hunk ./Distribution/Simple.hs 312 - let c = cmdHook cleanHook - c pkg_descr localbuildinfo verbose pps + cmdHook cleanHook pkg_descr localbuildinfo verbose hunk ./Distribution/Simple.hs 321 - let c = maybe (copyHook defaultUserHooks) copyHook hooks - c pkg_descr localbuildinfo flags - + cmdHook copyHook pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 329 - let inst = cmdHook instHook - inst pkg_descr localbuildinfo flags - + cmdHook instHook pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 338 - let sd = maybe (sDistHook defaultUserHooks) sDistHook hooks - sd pkg_descr localbuildinfo flags pps + cmdHook sDistHook pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 355 - let r = maybe (regHook defaultUserHooks) regHook hooks - r pkg_descr localbuildinfo flags - + cmdHook regHook pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 363 - let ur = maybe (unregHook defaultUserHooks) unregHook hooks - ur pkg_descr localbuildinfo flags + cmdHook unregHook pkg_descr localbuildinfo flags hunk ./Distribution/Simple.hs 377 - cmdHook f = maybe (f defaultUserHooks) f hooks + cmdHook f desc lbi = (maybe (f defaultUserHooks) f hooks) desc lbi hooks hunk ./Distribution/Simple.hs 389 -haddock :: PackageDescription -> LocalBuildInfo -> HaddockFlags -> [PPSuffixHandler] -> IO () -haddock pkg_descr lbi (HaddockFlags verbose) pps = do +haddock :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> HaddockFlags -> IO () +haddock pkg_descr lbi hooks (HaddockFlags verbose) = do + let pps = allSuffixHandlers hooks hunk ./Distribution/Simple.hs 465 -pfe :: PackageDescription -> LocalBuildInfo -> PFEFlags -> [PPSuffixHandler] -> IO () -pfe pkg_descr _lbi (PFEFlags verbose) pps = do +pfe :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> PFEFlags -> IO () +pfe pkg_descr _lbi hooks (PFEFlags verbose) = do + let pps = allSuffixHandlers hooks hunk ./Distribution/Simple.hs 482 -clean :: PackageDescription -> LocalBuildInfo -> CleanFlags -> [PPSuffixHandler] -> IO () -clean pkg_descr lbi (CleanFlags verbose) pps = do +clean :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> CleanFlags -> IO () +clean pkg_descr lbi hooks (CleanFlags verbose) = do + let pps = allSuffixHandlers hooks hunk ./Distribution/Simple.hs 546 - buildHook = ru4, + buildHook = ru, hunk ./Distribution/Simple.hs 549 - cleanHook = ru4, + cleanHook = ru, hunk ./Distribution/Simple.hs 552 - copyHook = ru3, + copyHook = ru, hunk ./Distribution/Simple.hs 555 - instHook = ru3, + instHook = ru, hunk ./Distribution/Simple.hs 558 - sDistHook = ru4, + sDistHook = ru, hunk ./Distribution/Simple.hs 561 - regHook = ru3, + regHook = ru, hunk ./Distribution/Simple.hs 564 - unregHook = ru3, + unregHook = ru, hunk ./Distribution/Simple.hs 567 - pfeHook = ru4, + pfeHook = ru, hunk ./Distribution/Simple.hs 570 - haddockHook = ru4, + haddockHook = ru, hunk ./Distribution/Simple.hs 575 - ru4 _ _ _ _ = return () - ru3 _ _ _ = return () + ru _ _ _ _ = return () hunk ./Distribution/Simple.hs 600 - copyHook = install, -- has correct 'copy' behavior with params + copyHook = \desc lbi _ f -> install desc lbi f, -- has correct 'copy' behavior with params hunk ./Distribution/Simple.hs 603 - sDistHook = \p _ f pps -> sdist p f srcPref distPref pps, + sDistHook = \p _ h f -> sdist p f srcPref distPref (allSuffixHandlers h), hunk ./Distribution/Simple.hs 609 - unregHook = unregister, + unregHook = \p l _ f -> unregister p l f, hunk ./Distribution/Simple.hs 640 -defaultInstallHook pkg_descr localbuildinfo (InstallFlags uInstFlag verbose) = do +defaultInstallHook pkg_descr localbuildinfo _ (InstallFlags uInstFlag verbose) = do hunk ./Distribution/Simple.hs 650 -defaultBuildHook pkg_descr localbuildinfo flags pps = do - build pkg_descr localbuildinfo flags pps +defaultBuildHook pkg_descr localbuildinfo hooks flags = do + build pkg_descr localbuildinfo flags (allSuffixHandlers hooks) hunk ./Distribution/Simple.hs 655 -defaultRegHook pkg_descr localbuildinfo flags = +defaultRegHook pkg_descr localbuildinfo _ flags = hunk ./tests/withHooks/Setup.lhs 50 +> -> Maybe UserHooks hunk ./tests/withHooks/Setup.lhs 53 -> myCopyHook a b c@(CopyFlags (CopyPrefix p) _) = do +> myCopyHook a b c d@(CopyFlags (CopyPrefix p) _) = do hunk ./tests/withHooks/Setup.lhs 63 -> (copyHook defaultUserHooks) a b c -> myCopyHook _ _ _ = error "Please use --copy-prefix." +> (copyHook defaultUserHooks) a b c d +> myCopyHook _ _ _ _ = error "Please use --copy-prefix." hunk ./Distribution/Simple.hs 56 - defaultMain, defaultMainNoRead, + defaultMain, defaultMainNoRead, defaultMainArgs, hunk ./Distribution/Simple.hs 214 -defaultMain = do args <- getArgs +defaultMain = getArgs >>=defaultMainArgs + +defaultMainArgs :: [String] -> IO () +defaultMainArgs args = do hunk ./cabal-install/CabalInstall.hs 10 -import System.Directory(getCurrentDirectory, setCurrentDirectory, getDirectoryContents) +import System.Directory(getCurrentDirectory, setCurrentDirectory, getDirectoryContents, doesFileExist) hunk ./cabal-install/CabalInstall.hs 16 -import Distribution.Compat.FilePath (splitFileExt, splitFilePath) +import Distribution.Compat.FilePath (splitFileExt, splitFilePath, joinPaths) hunk ./cabal-install/CabalInstall.hs 21 +import Distribution.Simple (defaultMainArgs) hunk ./cabal-install/CabalInstall.hs 28 +-- |Is there a Setup.hs or Setup.lhs in the given directory? +hasSetup :: FilePath -- the directory to check for the Setup module + -> IO Bool +hasSetup dir = do + e1 <- doesFileExist (dir `joinPaths` "Setup.lhs") + e2 <- doesFileExist (dir `joinPaths` "Setup.hs") + return $ e1 || e2 + hunk ./cabal-install/CabalInstall.hs 40 - compM <- compilerCommand conf - let comp = case compM of - Nothing -> noCompErr - Just (Program _ _ _ EmptyLocation) -> noCompErr - Just c -> c - let p = rawSystemProgram 3 comp - p ("configure":confArgs) >>= quitFail - p ["build"] >>= quitFail - p ["install"] >>= quitFail + hasSetupMod <- hasSetup dir + + p <- if hasSetupMod + then do compM <- compilerCommand conf + let comp = case compM of + Nothing -> noCompErr + Just (Program _ _ _ EmptyLocation) -> noCompErr + Just c -> c + putStrLn $ "Using Compiler: " ++ (show comp) + return $ \args -> (rawSystemProgram 3 comp args) >>= quitFail + else do putStrLn "no Setup file found. Using defaultMain." + return defaultMainArgs + p ("configure":confArgs) + p ["build"] + p ["install"] hunk ./cabal-install/CabalInstall.hs 118 - putStrLn $ "default compiler: " ++ (show defaultCompilerFlavor) hunk ./cabal-install/cabal-install.cabal 4 -Build-depends: Cabal, base +Build-depends: Cabal >= 1.1.4, base hunk ./Distribution/Program.hs 54 --- not. +-- not. This includes not just the path, but the program as well. hunk ./Distribution/Simple/Configure.hs 50 - configCompiler, + configCompiler, configCompilerAux, hunk ./cabal-install/CabalInstall.hs 22 -import Distribution.Compiler (CompilerFlavor(..)) +import Distribution.Simple.Configure(configCompilerAux) +import Distribution.Compiler (CompilerFlavor(..), Compiler(..)) hunk ./cabal-install/CabalInstall.hs 49 - putStrLn $ "Using Compiler: " ++ (show comp) hunk ./cabal-install/CabalInstall.hs 50 - else do putStrLn "no Setup file found. Using defaultMain." + else do putStrLn $ "no Setup file found in " ++ dir ++ ". Using defaultMain." hunk ./cabal-install/CabalInstall.hs 61 -unPackOrGo tarOrDir conf confArgs = do +unPackOrGo tarOrDirIn conf confArgs = do + currDir <- getCurrentDirectory + let tarOrDir = currDir `joinPaths` tarOrDirIn hunk ./cabal-install/CabalInstall.hs 90 --- |Figure out how to use runghc or runhugs. +-- |Figure out how to use ghc or runhugs. hunk ./cabal-install/CabalInstall.hs 92 -compilerCommand conf = do - let (progName, args) - = case compilerFlav conf of - GHC -> ("runghc", ["Setup"]) - Hugs -> ("runhugs", ["-98", "Setup"]) - progM <- lookupProgram progName (configPrograms conf) - case progM of - Nothing -> return Nothing - Just prog -> return $ Just prog{programArgs=args ++ (programArgs prog)} - +compilerCommand conf = + case compilerFlav conf of + Hugs -> do let (progName, args) = ("runhugs", ["-98", "Setup"]) + progM <- lookupProgram progName (configPrograms conf) + case progM of + Nothing -> return Nothing + Just prog -> return $ Just prog{programArgs=args ++ (programArgs prog)} + -- Yuck. This would be much easier if the compilers used the Program interface. + GHC -> do let (progName, args) = ("ghc", ["--make", "-package", + "Cabal", "Setup", "-o", "setup"]) + ghc1 <- configCompilerAux conf + let ghc2 = Program "ghc" "ghc" [] (FoundOnSystem (compilerPath ghc1)) + putStrLn "compiling Setup." + rawSystemProgram (configVerbose conf) ghc2 args + dir <- getCurrentDirectory + let path = dir `joinPaths` "setup" + return $ Just $ Program "setup" "setup" [] (FoundOnSystem path) hunk ./Makefile 2 + +ifeq "$(findstring boilerplate.mk, $(wildcard $(TOP)/mk/*))" "" +# ---------------------------------------------------------------------------- +# Standalone Makefile: + +CABALVERSION=1.1.4 +KIND=rc +#KIND=latest +GHCFLAGS= --make -Wall -fno-warn-unused-matches -cpp +# later: -Wall +PREF=/usr/local +USER_FLAG = +GHCPKGFLAGS = +#HCBASE=/tmp/ghc/bin/ +HCBASE=/usr/bin/ +HC=$(HCBASE)ghc +HC_PKG=$(HCBASE)/ghc-pkg +# Comment out this line if your system doesn't have System.Posix. +ISPOSIX=-DHAVE_UNIX_PACKAGE + +ifdef user +USER_FLAG = --user +GHCPKGFLAGS = -f ~/.ghc-packages +GHCFLAGS += -package-conf ~/.ghc-packages +endif + +# the cabal tarball... +CABALBALL=cabal.tar.gz + +all: moduleTest + +# build the library itself + +setup:: + mkdir -p dist/tmp + $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup + +Setup-nhc: + hmake -nhc98 -package base -prelude Setup + +config: setup + ./setup configure --ghc --prefix=$(PREF) + +build: build-stamp +build-stamp: config + ./setup build + +install: build-stamp + ./setup install $(USER_FLAG) + cd cabal-install && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install + +hugsbootstrap: + rm -rf dist/tmp dist/hugs + mkdir -p dist/tmp + mkdir dist/hugs + cp -r Distribution dist/tmp + hugs-package dist/tmp dist/hugs + cp Setup.lhs Cabal.cabal dist/hugs + +hugsinstall: hugsbootstrap + cd dist/hugs && ./Setup.lhs configure --hugs + cd dist/hugs && ./Setup.lhs build + cd dist/hugs && ./Setup.lhs install + +haddock: setup + ./setup configure + ./setup haddock + +clean-doc: + cd doc && make clean + +doc: haddock + docbook2html doc/Cabal.xml --output doc/users-guide + +clean: clean-cabal clean-hunit clean-test clean-doc + +clean-cabal: + -rm -f Distribution/*.o Distribution/*.hi + -rm -f Distribution/Simple/*.o Distribution/Simple/*.hi + -rm -f Compat/*.o Compat/*.hi + -rm -f darcs* out.build *~ semantic.cache* x*.html + -rm -f library-infrastructure--darcs.tar.gz + -rm -rf setup *.o *.hi moduleTest dist installed-pkg-config + -rm -f build-stamp + -rm -rf dist/hugs + +clean-hunit: + -rm -f hunit-stamp hunitInstall-stamp + cd tests/HUnit-1.0 && make clean + +clean-test: + cd tests/A && make clean + cd tests/wash2hs && make clean + +remove: remove-cabal remove-hunit +remove-cabal: + -$(HC_PKG) $(GHCPKGFLAGS) -r Cabal + -rm -rf $(PREF)/lib/Cabal-0.1 +remove-hunit: + -$(HC_PKG) $(GHCPKGFLAGS) -r HUnit + -rm -rf $(PREF)/lib/HUnit-1.0 + +# dependencies (included): + +hunit: hunit-stamp +hunit-stamp: + cd tests/HUnit-1.0 && make && ./setup configure --prefix=$(PREF) && ./setup build + touch $@ + +hunitInstall: hunitInstall-stamp +hunitInstall-stamp: hunit-stamp + cd tests/HUnit-1.0 && ./setup install $(USER_FLAG) + touch $@ + +# testing... + +moduleTest: + mkdir -p dist/debug + $(HC) $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:src:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest + +tests: moduleTest clean + cd tests/A && make clean + cd tests/HUnit-1.0 && make clean + cd tests/A && make + cd tests/HUnit-1.0 && make + +check: + rm -f moduleTest + make moduleTest + ./moduleTest + +# distribution... + +pushall: + darcs push ijones@darcs.haskell.org:/home/darcs/cabal + darcs push ijones@darcs.haskell.org:/home/darcs/packages/Cabal + +pullall: + darcs pull ijones@darcs.haskell.org:/home/darcs/cabal + darcs pull ijones@darcs.haskell.org:/home/darcs/packages/Cabal + + +pushdist: pushall dist + scp $(TMPDISTLOC)/cabal.tar.gz ijones@www.haskell.org:~/cabal/cabal-code.tgz +# PUSH ELSEWHERE: scp changelog ijones@www.haskell.org:~/cabal/release/changelog +# PUSH ELSEWHERE: scp releaseNotes ijones@www.haskell.org:~/cabal/release/notes +# rm -f /tmp/cabal-code.tgz + +deb: dist + cd $(TMPDISTLOC) && ln -s $(CABALBALL) haskell-cabal_$(CABALVERSION).orig.tar.gz + cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) + mv $(TMPDISTLOC)/cabal $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) + cd $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) && debuild + +$(CABALBALL): + darcs record + rm -rf /tmp/cabal* /tmp/Cabal* + rm -rf $(TMPDISTLOC) + darcs dist + mv Cabal.tar.gz $(CABALBALL) + +TMPDISTLOC=/tmp/cabaldist + +# after this command, there will be cabal.tar.gz in $(TMPDISTLOC), +# which will have built docs, haddock, and source code. + +dist: haddock $(CABALBALL) + rm -rf $(TMPDISTLOC) + mkdir $(TMPDISTLOC) + mv $(CABALBALL) $(TMPDISTLOC) + cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) && mv Cabal cabal + #mkdir $(TMPDISTLOC)/cabal/doc + make doc + cp -r dist/doc/html $(TMPDISTLOC)/cabal/doc/API + cp -r doc/users-guide $(TMPDISTLOC)/cabal/doc/users-guide + cd ~/usr/doc/haskell/haskell-report/packages && docbook2html -o /tmp/pkg-spec-html pkg-spec.sgml && docbook2pdf pkg-spec.sgml -o /tmp + cp -r /tmp/pkg-spec{-html,.pdf} $(TMPDISTLOC)/cabal/doc + + cd $(TMPDISTLOC) && tar -zcvf $(CABALBALL) cabal +# rm -f /tmp/Cabal.tar.gz +# rm -rf /tmp/cabal + +release: dist + mkdir $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal/releaseNotes $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal/changelog $(TMPDISTLOC)/release + cp -r $(TMPDISTLOC)/cabal/doc $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal.tar.gz $(TMPDISTLOC)/release/cabal-$(CABALVERSION).tar.gz + scp -r $(TMPDISTLOC)/release ijones@www.haskell.org:~/cabal/release/cabal-$(CABALVERSION) + ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f $(KIND) && ln -s cabal-$(CABALVERSION) $(KIND)' + +else # boilerplate.mk exists +# ---------------------------------------------------------------------------- +# GHC build tree Makefile: + hunk ./Makefile 221 +endif + hunk ./doc/Makefile 2 + +ifeq "$(findstring boilerplate.mk, $(wildcard $(TOP)/mk/*))" "" +# ---------------------------------------------------------------------------- +# Standalone Makefile: + +all: Cabal.xml + docbook2pdf Cabal.xml + +clean: + rm -fr *~ API users-guide Cabal.pdf Cabal.dvi semantic.cache + +else # boilerplate.mk exists +# ---------------------------------------------------------------------------- +# GHC build tree Makefile: + hunk ./doc/Makefile 24 +endif + addfile ./GNUmakefile hunk ./GNUmakefile 1 +CABALVERSION=1.1.4 +KIND=rc +#KIND=latest +GHCFLAGS= --make -Wall -fno-warn-unused-matches -cpp +# later: -Wall +PREF=/usr/local +USER_FLAG = +GHCPKGFLAGS = +#HCBASE=/tmp/ghc/bin/ +HCBASE=/usr/bin/ +HC=$(HCBASE)ghc +HC_PKG=$(HCBASE)/ghc-pkg +# Comment out this line if your system doesn't have System.Posix. +ISPOSIX=-DHAVE_UNIX_PACKAGE + +ifdef user +USER_FLAG = --user +GHCPKGFLAGS = -f ~/.ghc-packages +GHCFLAGS += -package-conf ~/.ghc-packages +endif + +# the cabal tarball... +CABALBALL=cabal.tar.gz + +all: moduleTest + +# build the library itself + +setup:: + mkdir -p dist/tmp + $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup + +Setup-nhc: + hmake -nhc98 -package base -prelude Setup + +config: setup + ./setup configure --ghc --prefix=$(PREF) + +build: build-stamp +build-stamp: config + ./setup build + +install: build-stamp + ./setup install $(USER_FLAG) + cd cabal-install && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install + +hugsbootstrap: + rm -rf dist/tmp dist/hugs + mkdir -p dist/tmp + mkdir dist/hugs + cp -r Distribution dist/tmp + hugs-package dist/tmp dist/hugs + cp Setup.lhs Cabal.cabal dist/hugs + +hugsinstall: hugsbootstrap + cd dist/hugs && ./Setup.lhs configure --hugs + cd dist/hugs && ./Setup.lhs build + cd dist/hugs && ./Setup.lhs install + +haddock: setup + ./setup configure + ./setup haddock + +clean-doc: + cd doc && make clean + +doc: haddock + docbook2html doc/Cabal.xml --output doc/users-guide + +clean: clean-cabal clean-hunit clean-test clean-doc + +clean-cabal: + -rm -f Distribution/*.o Distribution/*.hi + -rm -f Distribution/Simple/*.o Distribution/Simple/*.hi + -rm -f Compat/*.o Compat/*.hi + -rm -f darcs* out.build *~ semantic.cache* x*.html + -rm -f library-infrastructure--darcs.tar.gz + -rm -rf setup *.o *.hi moduleTest dist installed-pkg-config + -rm -f build-stamp + -rm -rf dist/hugs + +clean-hunit: + -rm -f hunit-stamp hunitInstall-stamp + cd tests/HUnit-1.0 && make clean + +clean-test: + cd tests/A && make clean + cd tests/wash2hs && make clean + +remove: remove-cabal remove-hunit +remove-cabal: + -$(HC_PKG) $(GHCPKGFLAGS) -r Cabal + -rm -rf $(PREF)/lib/Cabal-0.1 +remove-hunit: + -$(HC_PKG) $(GHCPKGFLAGS) -r HUnit + -rm -rf $(PREF)/lib/HUnit-1.0 + +# dependencies (included): + +hunit: hunit-stamp +hunit-stamp: + cd tests/HUnit-1.0 && make && ./setup configure --prefix=$(PREF) && ./setup build + touch $@ + +hunitInstall: hunitInstall-stamp +hunitInstall-stamp: hunit-stamp + cd tests/HUnit-1.0 && ./setup install $(USER_FLAG) + touch $@ + +# testing... + +moduleTest: + mkdir -p dist/debug + $(HC) $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:src:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest + +tests: moduleTest clean + cd tests/A && make clean + cd tests/HUnit-1.0 && make clean + cd tests/A && make + cd tests/HUnit-1.0 && make + +check: + rm -f moduleTest + make moduleTest + ./moduleTest + +# distribution... + +pushall: + darcs push --all ijones@cvs.haskell.org:/home/darcs/cabal + + +pushdist: pushall dist + scp $(TMPDISTLOC)/cabal.tar.gz ijones@www.haskell.org:~/cabal/cabal-code.tgz +# PUSH ELSEWHERE: scp changelog ijones@www.haskell.org:~/cabal/release/changelog +# PUSH ELSEWHERE: scp releaseNotes ijones@www.haskell.org:~/cabal/release/notes +# rm -f /tmp/cabal-code.tgz + +deb: dist + cd $(TMPDISTLOC) && ln -s $(CABALBALL) haskell-cabal_$(CABALVERSION).orig.tar.gz + cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) + mv $(TMPDISTLOC)/cabal $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) + cd $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) && debuild + +$(CABALBALL): + darcs record + rm -rf /tmp/cabal* /tmp/Cabal* + rm -rf $(TMPDISTLOC) + darcs dist + mv Cabal.tar.gz $(CABALBALL) + +TMPDISTLOC=/tmp/cabaldist + +# after this command, there will be cabal.tar.gz in $(TMPDISTLOC), +# which will have built docs, haddock, and source code. + +dist: haddock $(CABALBALL) + rm -rf $(TMPDISTLOC) + mkdir $(TMPDISTLOC) + mv $(CABALBALL) $(TMPDISTLOC) + cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) && mv Cabal cabal + #mkdir $(TMPDISTLOC)/cabal/doc + make doc + cp -r dist/doc/html $(TMPDISTLOC)/cabal/doc/API + cp -r doc/users-guide $(TMPDISTLOC)/cabal/doc/users-guide + cd ~/usr/doc/haskell/haskell-report/packages && docbook2html -o /tmp/pkg-spec-html pkg-spec.sgml && docbook2pdf pkg-spec.sgml -o /tmp + cp -r /tmp/pkg-spec{-html,.pdf} $(TMPDISTLOC)/cabal/doc + + cd $(TMPDISTLOC) && tar -zcvf $(CABALBALL) cabal +# rm -f /tmp/Cabal.tar.gz +# rm -rf /tmp/cabal + +release: dist + mkdir $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal/releaseNotes $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal/changelog $(TMPDISTLOC)/release + cp -r $(TMPDISTLOC)/cabal/doc $(TMPDISTLOC)/release + cp $(TMPDISTLOC)/cabal.tar.gz $(TMPDISTLOC)/release/cabal-$(CABALVERSION).tar.gz + scp -r $(TMPDISTLOC)/release ijones@www.haskell.org:~/cabal/release/cabal-$(CABALVERSION) + ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f $(KIND) && ln -s cabal-$(CABALVERSION) $(KIND)' hunk ./GNUmakefile 1 -CABALVERSION=1.1.4 -KIND=rc -#KIND=latest -GHCFLAGS= --make -Wall -fno-warn-unused-matches -cpp -# later: -Wall -PREF=/usr/local -USER_FLAG = -GHCPKGFLAGS = -#HCBASE=/tmp/ghc/bin/ -HCBASE=/usr/bin/ -HC=$(HCBASE)ghc -HC_PKG=$(HCBASE)/ghc-pkg -# Comment out this line if your system doesn't have System.Posix. -ISPOSIX=-DHAVE_UNIX_PACKAGE - -ifdef user -USER_FLAG = --user -GHCPKGFLAGS = -f ~/.ghc-packages -GHCFLAGS += -package-conf ~/.ghc-packages -endif - -# the cabal tarball... -CABALBALL=cabal.tar.gz - -all: moduleTest - -# build the library itself - -setup:: - mkdir -p dist/tmp - $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup - -Setup-nhc: - hmake -nhc98 -package base -prelude Setup - -config: setup - ./setup configure --ghc --prefix=$(PREF) - -build: build-stamp -build-stamp: config - ./setup build - -install: build-stamp - ./setup install $(USER_FLAG) - cd cabal-install && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install - -hugsbootstrap: - rm -rf dist/tmp dist/hugs - mkdir -p dist/tmp - mkdir dist/hugs - cp -r Distribution dist/tmp - hugs-package dist/tmp dist/hugs - cp Setup.lhs Cabal.cabal dist/hugs - -hugsinstall: hugsbootstrap - cd dist/hugs && ./Setup.lhs configure --hugs - cd dist/hugs && ./Setup.lhs build - cd dist/hugs && ./Setup.lhs install - -haddock: setup - ./setup configure - ./setup haddock - -clean-doc: - cd doc && make clean - -doc: haddock - docbook2html doc/Cabal.xml --output doc/users-guide - -clean: clean-cabal clean-hunit clean-test clean-doc - -clean-cabal: - -rm -f Distribution/*.o Distribution/*.hi - -rm -f Distribution/Simple/*.o Distribution/Simple/*.hi - -rm -f Compat/*.o Compat/*.hi - -rm -f darcs* out.build *~ semantic.cache* x*.html - -rm -f library-infrastructure--darcs.tar.gz - -rm -rf setup *.o *.hi moduleTest dist installed-pkg-config - -rm -f build-stamp - -rm -rf dist/hugs - -clean-hunit: - -rm -f hunit-stamp hunitInstall-stamp - cd tests/HUnit-1.0 && make clean - -clean-test: - cd tests/A && make clean - cd tests/wash2hs && make clean - -remove: remove-cabal remove-hunit -remove-cabal: - -$(HC_PKG) $(GHCPKGFLAGS) -r Cabal - -rm -rf $(PREF)/lib/Cabal-0.1 -remove-hunit: - -$(HC_PKG) $(GHCPKGFLAGS) -r HUnit - -rm -rf $(PREF)/lib/HUnit-1.0 - -# dependencies (included): - -hunit: hunit-stamp -hunit-stamp: - cd tests/HUnit-1.0 && make && ./setup configure --prefix=$(PREF) && ./setup build - touch $@ - -hunitInstall: hunitInstall-stamp -hunitInstall-stamp: hunit-stamp - cd tests/HUnit-1.0 && ./setup install $(USER_FLAG) - touch $@ - -# testing... - -moduleTest: - mkdir -p dist/debug - $(HC) $(GHCFLAGS) $(ISPOSIX) -DDEBUG -odir dist/debug -hidir dist/debug -idist/debug/:src:tests/HUnit-1.0/src tests/ModuleTest.hs -o moduleTest - -tests: moduleTest clean - cd tests/A && make clean - cd tests/HUnit-1.0 && make clean - cd tests/A && make - cd tests/HUnit-1.0 && make - -check: - rm -f moduleTest - make moduleTest - ./moduleTest - -# distribution... - -pushall: - darcs push --all ijones@cvs.haskell.org:/home/darcs/cabal - - -pushdist: pushall dist - scp $(TMPDISTLOC)/cabal.tar.gz ijones@www.haskell.org:~/cabal/cabal-code.tgz -# PUSH ELSEWHERE: scp changelog ijones@www.haskell.org:~/cabal/release/changelog -# PUSH ELSEWHERE: scp releaseNotes ijones@www.haskell.org:~/cabal/release/notes -# rm -f /tmp/cabal-code.tgz - -deb: dist - cd $(TMPDISTLOC) && ln -s $(CABALBALL) haskell-cabal_$(CABALVERSION).orig.tar.gz - cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) - mv $(TMPDISTLOC)/cabal $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) - cd $(TMPDISTLOC)/haskell-cabal-$(CABALVERSION) && debuild - -$(CABALBALL): - darcs record - rm -rf /tmp/cabal* /tmp/Cabal* - rm -rf $(TMPDISTLOC) - darcs dist - mv Cabal.tar.gz $(CABALBALL) - -TMPDISTLOC=/tmp/cabaldist - -# after this command, there will be cabal.tar.gz in $(TMPDISTLOC), -# which will have built docs, haddock, and source code. - -dist: haddock $(CABALBALL) - rm -rf $(TMPDISTLOC) - mkdir $(TMPDISTLOC) - mv $(CABALBALL) $(TMPDISTLOC) - cd $(TMPDISTLOC) && tar -zxvf $(CABALBALL) && mv Cabal cabal - #mkdir $(TMPDISTLOC)/cabal/doc - make doc - cp -r dist/doc/html $(TMPDISTLOC)/cabal/doc/API - cp -r doc/users-guide $(TMPDISTLOC)/cabal/doc/users-guide - cd ~/usr/doc/haskell/haskell-report/packages && docbook2html -o /tmp/pkg-spec-html pkg-spec.sgml && docbook2pdf pkg-spec.sgml -o /tmp - cp -r /tmp/pkg-spec{-html,.pdf} $(TMPDISTLOC)/cabal/doc - - cd $(TMPDISTLOC) && tar -zcvf $(CABALBALL) cabal -# rm -f /tmp/Cabal.tar.gz -# rm -rf /tmp/cabal - -release: dist - mkdir $(TMPDISTLOC)/release - cp $(TMPDISTLOC)/cabal/releaseNotes $(TMPDISTLOC)/release - cp $(TMPDISTLOC)/cabal/changelog $(TMPDISTLOC)/release - cp -r $(TMPDISTLOC)/cabal/doc $(TMPDISTLOC)/release - cp $(TMPDISTLOC)/cabal.tar.gz $(TMPDISTLOC)/release/cabal-$(CABALVERSION).tar.gz - scp -r $(TMPDISTLOC)/release ijones@www.haskell.org:~/cabal/release/cabal-$(CABALVERSION) - ssh ijones@www.haskell.org 'cd ~/cabal/release && rm -f $(KIND) && ln -s cabal-$(CABALVERSION) $(KIND)' rmfile ./GNUmakefile hunk ./Distribution/PackageDescription.hs 481 - ParseOk x -> return x - where + ParseOk ws x -> do + mapM_ warn ws + return x hunk ./Distribution/PackageDescription.hs 569 -parseBInfoField [] _ (lineNo, f, _) = - syntaxError lineNo $ "Unknown field '" ++ f ++ "'" +parseBInfoField [] binfo (lineNo, f, _) = do + warning $ "Unknown field '" ++ f ++ "'" + return binfo hunk ./Distribution/ParseUtils.hs 47 - LineNo, PError(..), locatedErrorMsg, showError, syntaxError, runP, - ParseResult(..), + LineNo, PError(..), locatedErrorMsg, showError, syntaxError, warning, + runP, ParseResult(..), hunk ./Distribution/ParseUtils.hs 66 -import Debug.Trace hunk ./Distribution/ParseUtils.hs 79 -data ParseResult a = ParseFailed PError | ParseOk a +type PWarning = String + +data ParseResult a = ParseFailed PError | ParseOk [PWarning] a hunk ./Distribution/ParseUtils.hs 85 - return x = ParseOk x + return x = ParseOk [] x hunk ./Distribution/ParseUtils.hs 87 - ParseOk x >>= f = f x + ParseOk ws x >>= f = case f x of + ParseFailed err -> ParseFailed err + ParseOk ws' x' -> ParseOk (ws'++ws) x' hunk ./Distribution/ParseUtils.hs 95 - [a] -> ParseOk a + [a] -> ParseOk [] a hunk ./Distribution/ParseUtils.hs 97 - [a] -> ParseOk a + [a] -> ParseOk [] a hunk ./Distribution/ParseUtils.hs 118 +warning :: String -> ParseResult () +warning s = ParseOk [s] () + hunk ./Distribution/ParseUtils.hs 204 - fld | fld'' == "hs-source-dir" - = trace "The field \"hs-source-dir\" is deprecated, please use hs-source-dirs." "hs-source-dirs" - | fld'' == "other-files" - = trace "The field \"other-files\" is deprecated, please use extra-source-files." "extra-source-files" - | otherwise = fld'' + fld <- case () of + _ | fld'' == "hs-source-dir" + -> do warning "The field \"hs-source-dir\" is deprecated, please use hs-source-dirs." + return "hs-source-dirs" + | fld'' == "other-files" + -> do warning "The field \"other-files\" is deprecated, please use extra-source-files." + return "extra-source-files" + | otherwise -> return fld'' hunk ./Distribution/PackageDescription.hs 569 +-- ignore "x-" extension fields without a warning +parseBInfoField [] binfo (lineNo, 'x':'-':f, _) = return binfo hunk ./Distribution/PackageDescription.hs 843 - ParseOk d -> case parseDescription $ showPackageDescription d of + ParseOk _ d -> case parseDescription $ showPackageDescription d of hunk ./Distribution/PackageDescription.hs 846 - ParseOk d' -> + ParseOk _ d' -> hunk ./Distribution/PackageDescription.hs 880 - ParseOk v -> v == expected + ParseOk _ v -> v == expected hunk ./tests/A/A.cabal 12 +x-darcs-repo: http://darcs.haskell.org/tmp +unknown-field: Filler. hunk ./Distribution/Compat/FilePath.hs 7 + , baseName + , dirName hunk ./Distribution/Compat/FilePath.hs 137 +baseName :: FilePath -> FilePath +baseName = snd . splitFileName +dirName :: FilePath -> FilePath +dirName = fst . splitFileName + + hunk ./Distribution/Compiler.hs 49 - extensionsToNHCFlag, extensionsToGHCFlag, extensionsToHugsFlag, + extensionsToGHCFlag, extensionsToHugsFlag, + extensionsToNHCFlag, extensionsToJHCFlag, hunk ./Distribution/Compiler.hs 87 +compilerBinaryName JHC = "jhc" hunk ./Distribution/Compiler.hs 100 +extensionsToFlags JHC exts = extensionsToJHCFlag exts hunk ./Distribution/Compiler.hs 158 +-- |JHC: Return the unsupported extensions, and the flags for the supported extensions +extensionsToJHCFlag :: [ Extension ] -> ([Extension], [Opt]) +extensionsToJHCFlag l = (es, filter (not . null) rs) + where + (es,rs) = splitEither $ nub $ map extensionToJHCFlag l + extensionToJHCFlag TypeSynonymInstances = Right "" + extensionToJHCFlag ForeignFunctionInterface = Right "" + extensionToJHCFlag NoImplicitPrelude = Right "--noprelude" + extensionToJHCFlag CPP = Right "-f cpp" + extensionToJHCFlag e = Left e + hunk ./Distribution/Extension.hs 45 - extensionsToNHCFlag, extensionsToGHCFlag, extensionsToHugsFlag, + extensionsToNHCFlag, extensionsToGHCFlag, + extensionsToJHCFlag, extensionsToHugsFlag hunk ./Distribution/Extension.hs 50 - extensionsToHugsFlag) + extensionsToJHCFlag, extensionsToHugsFlag) hunk ./Distribution/InstalledPackageInfo.hs 13 --- 6.4). +-- 6.4). This is specific to GHC at the moment. hunk ./Distribution/PackageDescription.hs 463 + options (\path binfo -> binfo{options=path}) + , optsField "jhc-options" JHC hunk ./Distribution/PackageDescription.hs 742 + "Jhc-Options: ", hunk ./Distribution/PackageDescription.hs 752 - "Nhc-Options: " + "Nhc-Options: ", + "Jhc-Options: " hunk ./Distribution/PackageDescription.hs 801 - options = [(NHC, []), (Hugs,["+TH"]), (GHC,["-fTH","-fglasgow-exts"])]} + options = [(JHC,[]),(NHC, []), (Hugs,["+TH"]), (GHC,["-fTH","-fglasgow-exts"])]} hunk ./Distribution/PackageDescription.hs 809 - options = [(NHC,[]),(Hugs,[]),(GHC,[])] + options = [(JHC,[]),(NHC,[]),(Hugs,[]),(GHC,[])] hunk ./Distribution/PreProcess.hs 251 +hcDefines Compiler { compilerFlavor=JHC, compilerVersion=version } + = ["-D__JHC__=" ++ versionInt version] hunk ./Distribution/Program.hs 20 + , jhcProgram hunk ./Distribution/Program.hs 127 +jhcProgram :: Program +jhcProgram = simpleProgram "jhc" + hunk ./Distribution/Setup.hs 203 -data Flag a = GhcFlag | NhcFlag | HugsFlag +data Flag a = GhcFlag | NhcFlag | HugsFlag | JhcFlag hunk ./Distribution/Setup.hs 250 +#elif defined(__JHC__) + Just JHC hunk ./Distribution/Setup.hs 280 + showHC JHC = "jhc" hunk ./Distribution/Setup.hs 372 + Option "" ["jhc"] (NoArg JhcFlag) "compile with JHC", hunk ./Distribution/Setup.hs 454 + updateCfg t JhcFlag = t { configHcFlavor = Just JHC } hunk ./Distribution/Simple.hs 499 + JHC -> cleanJHCExtras hunk ./Distribution/Simple.hs 519 + -- JHC FIXME remove exe-sources + cleanJHCExtras = do + try $ removeFile (buildDir lbi `joinFileName` "jhc-pkg.conf") + removePreprocessedPackage pkg_descr currentDir ["ho"] hunk ./Distribution/Simple/Build.hs 50 - extensionsToGHCFlag, extensionsToNHCFlag) + extensionsToGHCFlag, extensionsToJHCFlag, extensionsToNHCFlag) hunk ./Distribution/Simple/Build.hs 84 -import Data.List(nub, sort, isSuffixOf) +import Data.List(nub, sort, isSuffixOf, intersperse) hunk ./Distribution/Simple/Build.hs 89 - pathSeparator, + pathSeparator, baseName, hunk ./Distribution/Simple/Build.hs 126 + JHC -> buildJHC pkg_descr lbi verbose hunk ./Distribution/Simple/Build.hs 128 - _ -> die ("Only building with GHC and preprocessing for hugs are implemented.") + _ -> die ("Building is not supported with this compiler.") hunk ./Distribution/Simple/Build.hs 312 +-- | Building a package for JHC. +-- Currently C source files are not supported. +buildJHC :: PackageDescription -> LocalBuildInfo -> Int -> IO () +buildJHC pkg_descr lbi verbose = do + let jhcPath = compilerPath (compiler lbi) + withLib pkg_descr () $ \lib -> do + when (verbose > 3) (putStrLn "Building library...") + let libBi = libBuildInfo lib + let args = constructJHCCmdLine lbi libBi (buildDir lbi) verbose + rawSystemExit verbose jhcPath (["-c"] ++ args ++ libModules pkg_descr) + let pkgid = showPackageId (package pkg_descr) + pfile = buildDir lbi `joinFileName` "jhc-pkg.conf" + hlfile= buildDir lbi `joinFileName` (pkgid ++ ".hl") + writeFile pfile $ jhcPkgConf pkg_descr + rawSystemExit verbose jhcPath ["--build-hl="++hlfile,pfile] + withExe pkg_descr $ \exe -> do + when (verbose > 3) (putStrLn ("Building executable "++exeName exe)) + let exeBi = buildInfo exe + let out = buildDir lbi `joinFileName` exeName exe + let args = constructJHCCmdLine lbi exeBi (buildDir lbi) verbose + rawSystemExit verbose jhcPath (["-o",out] ++ args ++ [modulePath exe]) + +constructJHCCmdLine lbi bi odir verbose = + (if verbose > 4 then ["-v"] else []) + ++ snd (extensionsToJHCFlag (extensions bi)) + ++ hcOptions JHC (options bi) + ++ ["--noauto","-i-"] + ++ ["-i", autogenModulesDir lbi] + ++ concat [["-i", l] | l <- nub (hsSourceDirs bi)] + ++ ["-optc" ++ opt | opt <- ccOptions bi] + ++ (concat [ ["-p", showPackageId pkg] | pkg <- packageDeps lbi ]) + +jhcPkgConf pd = + let sline name sel = name ++ ": "++sel pd + Just lib = library pd + comma f l = concat $ intersperse "," $ map f l + in unlines [sline "name" (showPackageId . package) + ,"exposed-modules: " ++ (comma id (exposedModules lib)) + ,"hidden-modules: " ++ (comma id (otherModules $ libBuildInfo lib)) + ] + hunk ./Distribution/Simple/Configure.hs 169 - dep_pkgs <- if f' == GHC && ver >= Version [6,3] [] then do - ipkgs <- getInstalledPackagesAux comp cfg - mapM (configDependency ipkgs) (buildDepends pkg_descr) - else return $ map setDepByVersion (buildDepends pkg_descr) + dep_pkgs <- case f' of + GHC | ver >= Version [6,3] [] -> do + ipkgs <- getInstalledPackagesAux comp cfg + mapM (configDependency ipkgs) (buildDepends pkg_descr) + JHC -> do + ipkgs <- getInstalledPackagesJHC comp cfg + mapM (configDependency ipkgs) (buildDepends pkg_descr) + _ -> do + return $ map setDepByVersion (buildDepends pkg_descr) hunk ./Distribution/Simple/Configure.hs 289 +getInstalledPackagesJHC :: Compiler -> ConfigFlags -> IO [PackageIdentifier] +getInstalledPackagesJHC comp cfg = do + let verbose = configVerbose cfg + when (verbose > 0) $ message "Reading installed packages..." + let cmd_line = "\"" ++ compilerPkgTool comp ++ "\" --list-libraries" + str <- systemCaptureStdout verbose cmd_line + case pCheck (readP_to_S (many (skipSpaces >> parsePackageId)) str) of + [ps] -> return ps + _ -> die "cannot parse package list" + hunk ./Distribution/Simple/Configure.hs 305 + let user_flag = if user then "--user" else "--global" + cmd_line = "\"" ++ compilerPkgTool comp ++ "\" " ++ user_flag ++ " list" + str <- systemCaptureStdout verbose cmd_line + let keep_line s = ':' `notElem` s && not ("Creating" `isPrefixOf` s) + str1 = unlines (filter keep_line (lines str)) + str2 = filter (`notElem` ",()") str1 + -- + case pCheck (readP_to_S (many (skipSpaces >> parsePackageId)) str2) of + [ps] -> return ps + _ -> die "cannot parse package list" + +systemCaptureStdout :: Int -> String -> IO String +systemCaptureStdout verbose cmd = do hunk ./Distribution/Simple/Configure.hs 319 - let user_flag = if user then "--user" else "--global" - cmd_line = "\"" ++ compilerPkgTool comp ++ "\" " ++ user_flag ++ " list >" ++ tmp - when (verbose > 0) $ - putStrLn cmd_line + let cmd_line = cmd ++ " >" ++ tmp + when (verbose > 0) $ putStrLn cmd_line hunk ./Distribution/Simple/Configure.hs 323 - ExitFailure _ -> die ("cannot get package list") - ExitSuccess -> do - str <- readFile tmp - let - keep_line s = ':' `notElem` s && not ("Creating" `isPrefixOf` s) - str1 = unlines (filter keep_line (lines str)) - str2 = filter (`notElem` ",()") str1 - -- - case pCheck (readP_to_S (many (skipSpaces >> parsePackageId)) str2) of - [ps] -> return ps - _ -> die "cannot parse package list" + ExitFailure _ -> die ("executing external program failed: "++cmd_line) + ExitSuccess -> do str <- readFile tmp + let ev [] = ' '; ev xs = last xs + ev str `seq` return str hunk ./Distribution/Simple/Configure.hs 374 +compilerPkgToolName JHC = "jhc" hunk ./Distribution/Simple/Configure.hs 378 -configCompilerVersion GHC compilerP verbose = +configCompilerVersion GHC compilerP verbose = do + str <- systemGetStdout verbose ("\"" ++ compilerP ++ "\" --version") + case pCheck (readP_to_S parseVersion (dropWhile (not.isDigit) str)) of + [v] -> return v + _ -> die ("cannot determine version of " ++ compilerP ++ ":\n "++ str) +configCompilerVersion JHC compilerP verbose = do + str <- systemGetStdout verbose ("\"" ++ compilerP ++ "\" --version") + case words str of + (_:ver:_) -> case pCheck $ readP_to_S parseVersion ver of + [v] -> return v + _ -> fail ("parsing version: "++ver++" failed.") + _ -> fail ("reading version string: "++show str++" failed.") +configCompilerVersion _ _ _ = return Version{ versionBranch=[],versionTags=[] } + +systemGetStdout :: Int -> String -> IO String +systemGetStdout verbose cmd = do hunk ./Distribution/Simple/Configure.hs 395 - let cmd_line = "\"" ++ compilerP ++ "\" --version >" ++ tmp - when (verbose > 0) $ - putStrLn cmd_line + let cmd_line = cmd ++ " >" ++ tmp + when (verbose > 0) $ putStrLn cmd_line hunk ./Distribution/Simple/Configure.hs 399 - case pCheck (readP_to_S parseVersion (dropWhile (not.isDigit) str)) of - [v] -> return v - _ -> die ("cannot determine version of " ++ compilerP ++ ":\n " - ++ str) -configCompilerVersion _ _ _ = return Version{ versionBranch=[],versionTags=[] } + let eval [] = ' '; eval xs = last xs + eval str `seq` return str hunk ./Distribution/Simple/Install.hs 109 - installExeGhc verbose binPref buildPref pkg_descr + installExeGHC verbose binPref buildPref pkg_descr + JHC -> do withLib pkg_descr () $ installLibJHC verbose libPref buildPref pkg_descr + withExe pkg_descr $ installExeJHC verbose binPref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 121 -installExeGhc :: Int -- ^verbose +installExeGHC :: Int -- ^verbose hunk ./Distribution/Simple/Install.hs 125 -installExeGhc verbose pref buildPref pkg_descr +installExeGHC verbose pref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 178 +installLibJHC :: Int -> FilePath -> FilePath -> PackageDescription -> Library -> IO () +installLibJHC verb dest build pkg_descr _ = do + let p = showPackageId (package pkg_descr)++".hl" + createDirectoryIfMissing True dest + copyFileVerbose verb (joinFileName build p) (joinFileName dest p) + +installExeJHC :: Int -> FilePath -> FilePath -> PackageDescription -> Executable -> IO () +installExeJHC verb dest build pkg_descr exe = do + let out = exeName exe `joinFileName` exeExtension + createDirectoryIfMissing True dest + copyFileVerbose verb (joinFileName build out) (joinFileName dest out) + + hunk ./Distribution/Simple/LocalBuildInfo.hs 200 + JHC -> "$compiler" hunk ./Distribution/Simple/Register.hs 184 + JHC -> when (verbose > 0) $ putStrLn "registering for JHC (nothing to do)" hunk ./Distribution/Setup.hs 138 - configGHCiLib :: Bool -- ^Enable compiling library for GHCi + configGHCiLib :: Bool, -- ^Enable compiling library for GHCi + configSplitObjs :: Bool -- ^Enable -split-objs with GHC hunk ./Distribution/Setup.hs 166 - configGHCiLib = True + configGHCiLib = True, + configSplitObjs = False -- takes longer, so turn off by default hunk ./Distribution/Setup.hs 213 + | WithSplitObjs | WithoutSplitObjs hunk ./Distribution/Setup.hs 419 + Option "" ["enable-split-objs"] (NoArg WithSplitObjs) + "split library into smaller objects to reduce binary sizes (GHC 6.6+)", + Option "" ["disable-split-objs"] (NoArg WithoutSplitObjs) + "split library into smaller objects to reduce binary sizes (GHC 6.6+)", hunk ./Distribution/Setup.hs 493 + updateCfg t WithSplitObjs = t { configSplitObjs = True } + updateCfg t WithoutSplitObjs = t { configSplitObjs = False } hunk ./Distribution/Simple/Build.hs 70 - moduleToFilePath, - smartCopySources, - findFile + moduleToFilePath, smartCopySources, findFile, + warn hunk ./Distribution/Simple/Build.hs 84 -import System.Directory (removeFile, getModificationTime, doesFileExist) +import System.Directory (removeFile, getModificationTime, doesFileExist, + getDirectoryContents) hunk ./Distribution/Simple/Build.hs 150 - pkgConf <- GHC.localPackageConfig - pkgConfReadable <- GHC.canReadLocalPackageConfig + + -- GHC versions prior to 6.4 didn't have the user package database, + -- so we fake it. TODO: This can go away in due course. + pkg_conf <- if versionBranch (compilerVersion (compiler lbi)) >= [6,4] + then return [] + else do pkgConf <- GHC.localPackageConfig + pkgConfReadable <- GHC.canReadLocalPackageConfig + if pkgConfReadable + then return ["-package-conf", pkgConf] + else return [] + hunk ./Distribution/Simple/Build.hs 166 + hunk ./Distribution/Simple/Build.hs 172 - (if pkgConfReadable then ["-package-conf", pkgConf] else []) + pkg_conf hunk ./Distribution/Simple/Build.hs 174 + ++ (if splitObjs lbi then ["-split-objs"] else []) hunk ./Distribution/Simple/Build.hs 206 - let hObjs = [ (dotToSep x) `joinFileExt` objExtension - | x <- libModules pkg_descr ] - cObjs = [ path `joinFileName` file `joinFileExt` objExtension + let cObjs = [ path `joinFileName` file `joinFileExt` objExtension hunk ./Distribution/Simple/Build.hs 219 + hObjs <- getHaskellObjects pkg_descr libBi lbi + pref objExtension + hProfObjs <- + if (withProfLib lbi) + then getHaskellObjects pkg_descr libBi lbi + pref ("p_" ++ objExtension) + else return [] + hunk ./Distribution/Simple/Build.hs 233 - ++ [pref `joinFileName` x | x <- hObjs ++ cObjs] + ++ hObjs + ++ map (pref `joinFileName`) cObjs hunk ./Distribution/Simple/Build.hs 238 - ++ [pref `joinFileName` x | x <- hProfObjs ++ cObjs] + ++ hProfObjs hunk ./Distribution/Simple/Build.hs 243 - ++ [pref `joinFileName` x | x <- hObjs ++ cObjs] + ++ hObjs + ++ map (pref `joinFileName`) cObjs hunk ./Distribution/Simple/Build.hs 289 - (if pkgConfReadable then ["-package-conf", pkgConf] else []) + pkg_conf hunk ./Distribution/Simple/Build.hs 304 + +-- when using -split-objs, we need to search for object files in the +-- Module_split directory for each module. +getHaskellObjects pkg_descr libBi lbi pref obj_ext + | splitObjs lbi = do + let dirs = [ pref `joinFileName` (dotToSep x ++ "_split") + | x <- libModules pkg_descr ] + objss <- mapM getDirectoryContents dirs + let objs = [ dir `joinFileName` obj + | (objs,dir) <- zip objss dirs, obj <- objs, + obj_ext `isSuffixOf` obj ] + return objs + | otherwise = + return [ pref `joinFileName` (dotToSep x) `joinFileExt` obj_ext + | x <- libModules pkg_descr ] + + hunk ./Distribution/Simple/Configure.hs 179 + split_objs <- case f' of + GHC | ver >= Version [6,5] [] -> return True + _ -> do warn ("this compiler does not support " ++ + "--enable-split-objs; ignoring") + return False + hunk ./Distribution/Simple/Configure.hs 202 + splitObjs=split_objs, hunk ./Distribution/Simple/LocalBuildInfo.hs 111 - withGHCiLib :: Bool + withGHCiLib :: Bool, + splitObjs :: Bool -- ^Use -split-objs with GHC, if available hunk ./Distribution/GetOpt.hs 53 -import Prelude -- necessary to get dependencies right +#if __GLASGOW_HASKELL__ >= 604 + +import System.Console.GetOpt + +#else +-- to end of file: hunk ./Distribution/GetOpt.hs 324 +#endif + hunk ./Distribution/PackageDescription.hs 358 - (text . showVersionRange) parseCabalVersion + (text . showVersionRange) parseVersionRange hunk ./Distribution/PackageDescription.hs 695 -parseCabalVersion = do v <- parseVersionRange - if (cabalVersion `withinRange` v) - then return v - else error ("This package requires Cabal verion: " ++ (showVersionRange v) ++ ".") - hunk ./Distribution/Simple/Configure.hs 375 - -- ToDo: check that compiler works? check compiler version? + -- ToDo: check that compiler works? hunk ./Distribution/Simple/Configure.hs 50 + configDependency, hunk ./Distribution/Simple/Configure.hs 180 - split_objs <- case f' of + split_objs <- + if not (configSplitObjs cfg) + then return False + else case f' of hunk ./Distribution/Simple/Utils.hs 418 - (Just "Distribution\\Simple\\Build.hs") mp1 - assertEqual "not existing not nothing failed" Nothing mp2, + ["Distribution\\Simple\\Build.hs"] mp1 + assertEqual "not existing not nothing failed" [] mp2, hunk ./Distribution/Simple/Utils.hs 426 + TestCase (do files <- filesWithExtensions "." "cabal" + assertEqual "filesWithExtensions" "Cabal.cabal" (head files)) hunk ./Distribution/Simple/Configure.hs 45 + maybeGetPersistBuildConfig, hunk ./Distribution/Simple/Configure.hs 103 -getPersistBuildConfig :: IO LocalBuildInfo -getPersistBuildConfig = do +tryGetPersistBuildConfig :: IO (Either String LocalBuildInfo) +tryGetPersistBuildConfig = do hunk ./Distribution/Simple/Configure.hs 107 - when (not e) (die dieMsg) + if (not e) then return $ Left dieMsg else do hunk ./Distribution/Simple/Configure.hs 110 - [(bi,_)] -> return bi - _ -> die dieMsg + [(bi,_)] -> return $ Right bi + _ -> return $ Left dieMsg + +getPersistBuildConfig :: IO LocalBuildInfo +getPersistBuildConfig = do + lbi <- tryGetPersistBuildConfig + either die return lbi + +maybeGetPersistBuildConfig :: IO (Maybe LocalBuildInfo) +maybeGetPersistBuildConfig = do + lbi <- tryGetPersistBuildConfig + return $ either (const Nothing) Just lbi hunk ./Distribution/Simple.hs 85 -import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, +import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, maybeGetPersistBuildConfig, hunk ./Distribution/Simple.hs 104 -import Data.Maybe ( isNothing, fromJust ) +import Data.Maybe ( isNothing, isJust, fromJust ) hunk ./Distribution/Simple.hs 153 - cleanHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> CleanFlags -> IO (), + cleanHook :: PackageDescription -> Maybe LocalBuildInfo -> Maybe UserHooks -> CleanFlags -> IO (), hunk ./Distribution/Simple.hs 155 - postClean :: Args -> CleanFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, + postClean :: Args -> CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 176 - sDistHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> SDistFlags -> IO (), + sDistHook :: PackageDescription -> Maybe LocalBuildInfo -> Maybe UserHooks -> SDistFlags -> IO (), hunk ./Distribution/Simple.hs 178 - postSDist :: Args -> SDistFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode, + postSDist :: Args -> SDistFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ExitCode, hunk ./Distribution/Simple.hs 313 - localbuildinfo <- getPersistBuildConfig - - cmdHook cleanHook pkg_descr localbuildinfo verbose + maybeLocalbuildinfo <- maybeGetPersistBuildConfig hunk ./Distribution/Simple.hs 315 - postHook postClean args verbose pkg_descr localbuildinfo + cmdHook cleanHook pkg_descr maybeLocalbuildinfo verbose + postHook postClean args verbose pkg_descr maybeLocalbuildinfo hunk ./Distribution/Simple.hs 338 - localbuildinfo <- getPersistBuildConfig + maybeLocalbuildinfo <- maybeGetPersistBuildConfig hunk ./Distribution/Simple.hs 340 - cmdHook sDistHook pkg_descr localbuildinfo flags - postHook postSDist args flags pkg_descr localbuildinfo + cmdHook sDistHook pkg_descr maybeLocalbuildinfo flags + postHook postSDist args flags pkg_descr maybeLocalbuildinfo hunk ./Distribution/Simple.hs 484 -clean :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> CleanFlags -> IO () -clean pkg_descr lbi hooks (CleanFlags verbose) = do +clean :: PackageDescription -> Maybe LocalBuildInfo -> Maybe UserHooks -> CleanFlags -> IO () +clean pkg_descr maybeLbi hooks (CleanFlags verbose) = do hunk ./Distribution/Simple.hs 488 - let buildPref = buildDir lbi - try $ removeDirectoryRecursive buildPref hunk ./Distribution/Simple.hs 494 - case compilerFlavor (compiler lbi) of - GHC -> cleanGHCExtras - JHC -> cleanJHCExtras - _ -> return () hunk ./Distribution/Simple.hs 495 + + when (isJust maybeLbi) $ do + let lbi = fromJust maybeLbi + try $ removeDirectoryRecursive (buildDir lbi) + case compilerFlavor (compiler lbi) of + GHC -> cleanGHCExtras lbi + JHC -> cleanJHCExtras lbi + _ -> return () hunk ./Distribution/Simple.hs 504 - cleanGHCExtras = do + cleanGHCExtras lbi = do hunk ./Distribution/Simple.hs 521 - cleanJHCExtras = do + cleanJHCExtras lbi = do adddir ./tests/buildInfo addfile ./tests/buildInfo/Makefile addfile ./tests/buildInfo/Setup.lhs addfile ./tests/buildInfo/buildinfo2.buildinfo addfile ./tests/buildInfo/buildinfo2.cabal adddir ./tests/buildInfo/src addfile ./tests/buildInfo/src/exe1.hs addfile ./tests/buildInfo/src/exe2.hs hunk ./tests/ModuleTest.hs 277 + -- no register, since there's no library +-- buildinfo + ,TestLabel ("buildinfo with multiple executables " ++ compIdent) $ TestCase $ + do setCurrentDirectory $ (testdir `joinFileName` "buildInfo") + testPrelude + assertConfigure ",tmp" + assertCmd' compCmd "haddock" "setup haddock returned error code." + assertBuild + assertCopy + doesFileExist ",tmp/bin/exe1" >>= + assertBool "install did not create the executable: exe1" + doesFileExist ",tmp/bin/exe2" >>= + assertBool "install did not create the executable: exe2" hunk ./tests/buildInfo/Makefile 1 +include ../Tests.mk hunk ./tests/buildInfo/Setup.lhs 1 +#!/usr/bin/runhaskell + +> import Distribution.Simple +> main = defaultMainWithHooks defaultUserHooks + hunk ./tests/buildInfo/buildinfo2.buildinfo 1 +Executable: exe1 +Buildable: True + +Executable: exe2 +Buildable: True hunk ./tests/buildInfo/buildinfo2.cabal 1 +Name: buildinfo2 +Version: 0.0 +License: GPL +License-file: COPYING +Build-Depends: base +Author: Evgeny Chukreev +Copyright: Evgeny Chukreev (C) 2005 +Maintainer: Evgeny Chukreev +Synopsis: Buildinfo testcase +Description: + Buildinfo testcase + +Executable: exe1 +Main-is: exe1.hs +HS-source-dirs: src + +Executable: exe2 +Main-is: exe2.hs +HS-source-dirs: src hunk ./tests/buildInfo/src/exe1.hs 1 +module Main () where + +main :: IO () +main = return () hunk ./tests/buildInfo/src/exe2.hs 1 +module Main () where + +main :: IO () +main = return () hunk ./Distribution/Simple/GHCPackageConfig.hs 84 - auto = False, + auto = True, hunk ./Distribution/Compiler.hs 112 - extensionToGHCFlag ForeignFunctionInterface = Right "-ffi" + extensionToGHCFlag ForeignFunctionInterface = Right "-fffi" hunk ./package.conf.in 15 - Distribution.GetOpt, hunk ./package.conf.in 38 + Distribution.GetOpt, hunk ./Cabal.cabal 45 - Distribution.Compat.FilePath, hunk ./Cabal.cabal 51 + Distribution.Compat.FilePath, hunk ./Distribution/Simple/LocalBuildInfo.hs 59 -import Distribution.Package (PackageIdentifier) -import Distribution.Program (ProgramLocation, Program, ProgramConfiguration) -import Distribution.Compiler (Compiler) -import Distribution.PackageDescription (PackageDescription(..), hasLibs) +import Distribution.Program (ProgramConfiguration) +import Distribution.PackageDescription (PackageDescription(..)) hunk ./Distribution/Simple/LocalBuildInfo.hs 65 -import Data.Maybe (fromMaybe) hunk ./Distribution/Simple/LocalBuildInfo.hs 181 +default_bindir :: FilePath hunk ./Distribution/Simple/LocalBuildInfo.hs 189 +default_libdir :: Compiler -> FilePath hunk ./Distribution/Simple/LocalBuildInfo.hs 197 +default_libsubdir :: Compiler -> FilePath hunk ./Distribution/Simple/LocalBuildInfo.hs 204 +default_libexecdir :: FilePath hunk ./Distribution/Simple/LocalBuildInfo.hs 221 +default_datasubdir :: FilePath hunk ./Distribution/Simple/LocalBuildInfo.hs 262 +prefixRelPath :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath + -> Maybe FilePath hunk ./Distribution/Simple/LocalBuildInfo.hs 274 +absolutePath :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath + -> FilePath hunk ./Distribution/PreProcess.hs 53 -import Distribution.Simple.Configure (LocalBuildInfo(..)) +import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..)) hunk ./Distribution/Simple/Configure.hs 46 - LocalBuildInfo(..), addfile ./Distribution/Simple/GHC.hs addfile ./Distribution/Simple/Hugs.hs addfile ./Distribution/Simple/JHC.hs addfile ./Distribution/Simple/NHC.hs hunk ./Distribution/Simple/Build.hs 49 -import Distribution.Compiler (Compiler(..), CompilerFlavor(..), - extensionsToGHCFlag, extensionsToJHCFlag, extensionsToNHCFlag) -import Distribution.PackageDescription (PackageDescription(..), BuildInfo(..), - setupMessage, withLib, hasLibs, - Executable(..), withExe, - Library(..), libModules, hcOptions, - autogenModuleName) -import Distribution.Package (PackageIdentifier(..), showPackageId) -import Distribution.Setup (CopyDest(..), BuildFlags(..)) -import Distribution.PreProcess (preprocessSources, PPSuffixHandler, ppCpp) -import Distribution.PreProcess.Unlit (unlit) -import Distribution.Version (Version(..)) -import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..), - mkBinDir, mkBinDirRel, - mkLibDir, mkLibDirRel, - mkDataDir,mkDataDirRel, - mkLibexecDir, mkLibexecDirRel) -import Distribution.Simple.Configure (localBuildInfoFile) -import Distribution.Simple.Install (hugsMainFilename) -import Distribution.Simple.Utils (rawSystemExit, die, rawSystemPathExit, - mkLibName, mkProfLibName, mkGHCiLibName, dotToSep, - moduleToFilePath, smartCopySources, findFile, - warn - ) -import Language.Haskell.Extension (Extension(..)) +import Distribution.Compiler ( Compiler(..), CompilerFlavor(..) ) +import Distribution.PackageDescription + ( PackageDescription(..), BuildInfo(..), + setupMessage, Executable(..), Library(..), + autogenModuleName ) +import Distribution.Package ( PackageIdentifier(..), showPackageId ) +import Distribution.Setup (CopyDest(..), BuildFlags(..) ) +import Distribution.PreProcess ( preprocessSources, PPSuffixHandler ) +import Distribution.Simple.LocalBuildInfo + ( LocalBuildInfo(..), mkBinDir, mkBinDirRel, + mkLibDir, mkLibDirRel, mkDataDir,mkDataDirRel, + mkLibexecDir, mkLibexecDirRel ) +import Distribution.Simple.Configure + ( localBuildInfoFile ) +import Distribution.Simple.Utils( die ) hunk ./Distribution/Simple/Build.hs 65 -import Data.Char(isSpace) -import Data.Maybe(mapMaybe, maybeToList, fromJust) -import Control.Monad (unless, when, filterM) -#ifndef __NHC__ -import Control.Exception (try) -#else -import IO (try) -#endif -import Data.List(nub, sort, isSuffixOf, intersperse) -import System.Directory (removeFile, getModificationTime, doesFileExist, - getDirectoryContents) -import Distribution.Compat.Directory (copyFile,createDirectoryIfMissing) -import Distribution.Compat.FilePath (splitFilePath, joinFileName, - splitFileExt, joinFileExt, objExtension, - pathSeparator, baseName, - searchPathSeparator, joinPaths, - splitFileName, platformPath) -import qualified Distribution.Simple.GHCPackageConfig - as GHC (localPackageConfig, canReadLocalPackageConfig) +import Distribution.Compat.Directory + ( createDirectoryIfMissing ) +import Distribution.Compat.FilePath + ( joinFileName, pathSeparator ) + +import Data.Maybe ( maybeToList, fromJust ) +import Control.Monad ( unless ) +import System.Directory ( getModificationTime, doesFileExist) + +import qualified Distribution.Simple.GHC as GHC +import qualified Distribution.Simple.JHC as JHC +-- import qualified Distribution.Simple.NHC as NHC +import qualified Distribution.Simple.Hugs as Hugs hunk ./Distribution/Simple/Build.hs 109 - GHC -> buildGHC pkg_descr lbi verbose - JHC -> buildJHC pkg_descr lbi verbose - Hugs -> buildHugs pkg_descr lbi verbose - _ -> die ("Building is not supported with this compiler.") - --- |FIX: For now, the target must contain a main module. Not used --- ATM. Re-add later. -buildNHC :: PackageDescription -> LocalBuildInfo -> Int -> IO () -buildNHC pkg_descr lbi verbose = do - -- Unsupported extensions have already been checked by configure - let flags = snd $ extensionsToNHCFlag (maybe [] (extensions . libBuildInfo) (library pkg_descr)) - rawSystemExit verbose (compilerPath (compiler lbi)) - (["-nhc98"] - ++ flags - ++ maybe [] (hcOptions NHC . options . libBuildInfo) (library pkg_descr) - ++ (libModules pkg_descr)) - --- |Building for GHC. If .ghc-packages exists and is readable, add --- it to the command-line. -buildGHC :: PackageDescription -> LocalBuildInfo -> Int -> IO () -buildGHC pkg_descr lbi verbose = do - let pref = buildDir lbi - let ghcPath = compilerPath (compiler lbi) - ifProfLib = when (withProfLib lbi) - ifGHCiLib = when (withGHCiLib lbi) - - -- GHC versions prior to 6.4 didn't have the user package database, - -- so we fake it. TODO: This can go away in due course. - pkg_conf <- if versionBranch (compilerVersion (compiler lbi)) >= [6,4] - then return [] - else do pkgConf <- GHC.localPackageConfig - pkgConfReadable <- GHC.canReadLocalPackageConfig - if pkgConfReadable - then return ["-package-conf", pkgConf] - else return [] - - -- Build lib - withLib pkg_descr () $ \lib -> do - when (verbose > 3) (putStrLn "Building library...") - let libBi = libBuildInfo lib - libTargetDir = pref - - createDirectoryIfMissing True libTargetDir - -- put hi-boot files into place for mutually recurive modules - smartCopySources verbose (hsSourceDirs libBi) - libTargetDir (libModules pkg_descr) ["hi-boot"] False False - let ghcArgs = - pkg_conf - ++ ["-package-name", pkgName (package pkg_descr) ] - ++ (if splitObjs lbi then ["-split-objs"] else []) - ++ constructGHCCmdLine lbi libBi libTargetDir verbose - ++ (libModules pkg_descr) - ghcArgsProf = ghcArgs - ++ ["-prof", - "-hisuf", "p_hi", - "-osuf", "p_o" - ] - ++ ghcProfOptions libBi - unless (null (libModules pkg_descr)) $ - do rawSystemExit verbose ghcPath ghcArgs - ifProfLib (rawSystemExit verbose ghcPath ghcArgsProf) - - -- build any C sources - unless (null (cSources libBi)) $ do - when (verbose > 3) (putStrLn "Building C Sources...") - -- FIX: similar 'versionBranch' logic duplicated below. refactor for code sharing - sequence_ [do let ghc_vers = compilerVersion (compiler lbi) - odir | versionBranch ghc_vers >= [6,4,1] = pref - | otherwise = pref `joinFileName` dirOf c - -- ghc 6.4.1 fixed a bug in -odir handling - -- for C compilations. - createDirectoryIfMissing True odir - let cArgs = ["-I" ++ dir | dir <- includeDirs libBi] - ++ ["-optc" ++ opt | opt <- ccOptions libBi] - ++ ["-odir", odir, "-hidir", pref, "-c"] - ++ (if verbose > 4 then ["-v"] else []) - rawSystemExit verbose ghcPath (cArgs ++ [c]) - | c <- cSources libBi] - - -- link: - when (verbose > 3) (putStrLn "cabal-linking...") - let cObjs = [ path `joinFileName` file `joinFileExt` objExtension - | (path, file, _) <- (map splitFilePath (cSources libBi)) ] - libName = mkLibName pref (showPackageId (package pkg_descr)) - hProfObjs = [ (dotToSep x) `joinFileExt` "p_"++objExtension - | x <- libModules pkg_descr ] - profLibName = mkProfLibName pref (showPackageId (package pkg_descr)) - ghciLibName = mkGHCiLibName pref (showPackageId (package pkg_descr)) - - stubObjs <- sequence [moduleToFilePath [libTargetDir] (x ++"_stub") [objExtension] - | x <- libModules pkg_descr ] >>= return . concat - stubProfObjs <- sequence [moduleToFilePath [libTargetDir] (x ++"_stub") ["p_" ++ objExtension] - | x <- libModules pkg_descr ] >>= return . concat - - hObjs <- getHaskellObjects pkg_descr libBi lbi - pref objExtension - hProfObjs <- - if (withProfLib lbi) - then getHaskellObjects pkg_descr libBi lbi - pref ("p_" ++ objExtension) - else return [] - - unless (null hObjs && null cObjs && null stubObjs) $ do - try (removeFile libName) -- first remove library if it exists - try (removeFile profLibName) -- first remove library if it exists - try (removeFile ghciLibName) -- first remove library if it exists - let arArgs = ["q"++ (if verbose > 4 then "v" else "")] - ++ [libName] - ++ hObjs - ++ map (pref `joinFileName`) cObjs - ++ stubObjs - arProfArgs = ["q"++ (if verbose > 4 then "v" else "")] - ++ [profLibName] - ++ hProfObjs - ++ stubProfObjs - ldArgs = ["-r"] - ++ ["-x"] -- FIXME: only some systems's ld support the "-x" flag - ++ ["-o", ghciLibName] - ++ hObjs - ++ map (pref `joinFileName`) cObjs - ++ stubObjs - rawSystemPathExit verbose "ar" arArgs - ifProfLib (rawSystemPathExit verbose "ar" arProfArgs) -#if defined(mingw32_TARGET_OS) || defined(mingw32_HOST_OS) - let (compilerDir, _) = splitFileName $ compilerPath (compiler lbi) - (baseDir, _) = splitFileName compilerDir - ld = baseDir `joinFileName` "gcc-lib\\ld.exe" - ifGHCiLib (rawSystemExit verbose ld ldArgs) -#else - ifGHCiLib (rawSystemPathExit verbose "ld" ldArgs) -#endif - - -- build any executables - withExe pkg_descr $ \ (Executable exeName' modPath exeBi) -> do - when (verbose > 3) - (putStrLn $ "Building executable: " ++ exeName' ++ "...") - let targetDir = pref `joinFileName` exeName' - let exeDir = joinPaths targetDir (exeName' ++ "-tmp") - createDirectoryIfMissing True targetDir - createDirectoryIfMissing True exeDir - -- put hi-boot files into place for mutually recursive modules - -- FIX: what about exeName.hi-boot? - smartCopySources verbose (hsSourceDirs exeBi) - exeDir (otherModules exeBi) ["hi-boot"] False False - - -- build executables - unless (null (cSources exeBi)) $ do - when (verbose > 3) (putStrLn "Building C Sources.") - sequence_ [do let cSrcODir |versionBranch (compilerVersion (compiler lbi)) - >= [6,4,1] = exeDir - | otherwise - = exeDir `joinFileName` (dirOf c) - createDirectoryIfMissing True cSrcODir - let cArgs = ["-I" ++ dir | dir <- includeDirs exeBi] - ++ ["-optc" ++ opt | opt <- ccOptions exeBi] - ++ ["-odir", cSrcODir, "-hidir", pref, "-c"] - ++ (if verbose > 4 then ["-v"] else []) - rawSystemExit verbose ghcPath (cArgs ++ [c]) - | c <- cSources exeBi] - srcMainFile <- findFile (hsSourceDirs exeBi) modPath - - let cObjs = [ path `joinFileName` file `joinFileExt` objExtension - | (path, file, _) <- (map splitFilePath (cSources exeBi)) ] - let binArgs = - pkg_conf - ++ ["-I"++pref, - "-o", targetDir `joinFileName` exeName' - ] - ++ constructGHCCmdLine lbi exeBi exeDir verbose - ++ [exeDir `joinFileName` x | x <- cObjs] - ++ [srcMainFile] - ++ ldOptions exeBi - ++ ["-l"++lib | lib <- extraLibs exeBi] - ++ ["-L"++libDir | libDir <- extraLibDirs exeBi] - ++ if withProfExe lbi - then "-prof":ghcProfOptions exeBi - else [] - rawSystemExit verbose ghcPath binArgs - - --- when using -split-objs, we need to search for object files in the --- Module_split directory for each module. -getHaskellObjects pkg_descr libBi lbi pref obj_ext - | splitObjs lbi = do - let dirs = [ pref `joinFileName` (dotToSep x ++ "_split") - | x <- libModules pkg_descr ] - objss <- mapM getDirectoryContents dirs - let objs = [ dir `joinFileName` obj - | (objs,dir) <- zip objss dirs, obj <- objs, - obj_ext `isSuffixOf` obj ] - return objs - | otherwise = - return [ pref `joinFileName` (dotToSep x) `joinFileExt` obj_ext - | x <- libModules pkg_descr ] - - -dirOf :: FilePath -> FilePath -dirOf f = (\ (x, _, _) -> x) $ (splitFilePath f) - -constructGHCCmdLine - :: LocalBuildInfo - -> BuildInfo - -> FilePath - -> Int -- verbosity level - -> [String] -constructGHCCmdLine lbi bi odir verbose = - ["--make"] - ++ (if verbose > 4 then ["-v"] else []) - -- Unsupported extensions have already been checked by configure - ++ snd (extensionsToGHCFlag (extensions bi)) - ++ hcOptions GHC (options bi) - ++ (if compilerVersion (compiler lbi) > Version [6,4] [] - then ["-hide-all-packages"] - else []) - ++ ["-i"] - ++ ["-i" ++ autogenModulesDir lbi] - ++ ["-i" ++ l | l <- nub (hsSourceDirs bi)] - ++ ["-I" ++ dir | dir <- includeDirs bi] - ++ ["-optc" ++ opt | opt <- ccOptions bi] - ++ [ "-#include \"" ++ inc ++ "\"" | inc <- includes bi ] - ++ [ "-odir", odir, "-hidir", odir ] - ++ (concat [ ["-package", showPackageId pkg] | pkg <- packageDeps lbi ]) - --- | Building a package for JHC. --- Currently C source files are not supported. -buildJHC :: PackageDescription -> LocalBuildInfo -> Int -> IO () -buildJHC pkg_descr lbi verbose = do - let jhcPath = compilerPath (compiler lbi) - withLib pkg_descr () $ \lib -> do - when (verbose > 3) (putStrLn "Building library...") - let libBi = libBuildInfo lib - let args = constructJHCCmdLine lbi libBi (buildDir lbi) verbose - rawSystemExit verbose jhcPath (["-c"] ++ args ++ libModules pkg_descr) - let pkgid = showPackageId (package pkg_descr) - pfile = buildDir lbi `joinFileName` "jhc-pkg.conf" - hlfile= buildDir lbi `joinFileName` (pkgid ++ ".hl") - writeFile pfile $ jhcPkgConf pkg_descr - rawSystemExit verbose jhcPath ["--build-hl="++hlfile,pfile] - withExe pkg_descr $ \exe -> do - when (verbose > 3) (putStrLn ("Building executable "++exeName exe)) - let exeBi = buildInfo exe - let out = buildDir lbi `joinFileName` exeName exe - let args = constructJHCCmdLine lbi exeBi (buildDir lbi) verbose - rawSystemExit verbose jhcPath (["-o",out] ++ args ++ [modulePath exe]) - -constructJHCCmdLine lbi bi odir verbose = - (if verbose > 4 then ["-v"] else []) - ++ snd (extensionsToJHCFlag (extensions bi)) - ++ hcOptions JHC (options bi) - ++ ["--noauto","-i-"] - ++ ["-i", autogenModulesDir lbi] - ++ concat [["-i", l] | l <- nub (hsSourceDirs bi)] - ++ ["-optc" ++ opt | opt <- ccOptions bi] - ++ (concat [ ["-p", showPackageId pkg] | pkg <- packageDeps lbi ]) - -jhcPkgConf pd = - let sline name sel = name ++ ": "++sel pd - Just lib = library pd - comma f l = concat $ intersperse "," $ map f l - in unlines [sline "name" (showPackageId . package) - ,"exposed-modules: " ++ (comma id (exposedModules lib)) - ,"hidden-modules: " ++ (comma id (otherModules $ libBuildInfo lib)) - ] - --- |Building a package for Hugs. -buildHugs :: PackageDescription -> LocalBuildInfo -> Int -> IO () -buildHugs pkg_descr lbi verbose = do - let pref = buildDir lbi - withLib pkg_descr () $ (\l -> compileBuildInfo pref [] (libModules pkg_descr) (libBuildInfo l)) - withExe pkg_descr $ compileExecutable (pref `joinFileName` "programs") - where - compileExecutable :: FilePath -> Executable -> IO () - compileExecutable destDir (exe@Executable {modulePath=mainPath, buildInfo=bi}) = do - let exeMods = otherModules bi - srcMainFile <- findFile (hsSourceDirs bi) mainPath - let exeDir = destDir `joinFileName` exeName exe - let destMainFile = exeDir `joinFileName` hugsMainFilename exe - copyModule (CPP `elem` extensions bi) bi srcMainFile destMainFile - let paths_modulename = autogenModuleName pkg_descr ++ ".hs" - copyFile (autogenModulesDir lbi `joinFileName` paths_modulename) - (exeDir `joinFileName` paths_modulename) - compileBuildInfo exeDir (maybe [] (hsSourceDirs . libBuildInfo) (library pkg_descr)) exeMods bi - compileFiles bi [destMainFile] - - compileBuildInfo :: FilePath - -> [FilePath] -- ^library source dirs, if building exes - -> [String] -- ^Modules - -> BuildInfo -> IO () - compileBuildInfo destDir mLibSrcDirs mods bi = do - -- Pass 1: copy or cpp files from src directory to build directory - let useCpp = CPP `elem` extensions bi - let srcDirs = nub $ hsSourceDirs bi ++ mLibSrcDirs - when (verbose > 3) (putStrLn $ "Source directories: " ++ show srcDirs) - flip mapM_ mods $ \ m -> do - fs <- moduleToFilePath srcDirs m suffixes - if null fs then - die ("can't find source for module " ++ m) - else do - let srcFile = head fs - let (_, ext) = splitFileExt srcFile - copyModule useCpp bi srcFile - (destDir `joinFileName` dotToSep m `joinFileExt` ext) - -- Pass 2: compile foreign stubs in build directory - stubsFileLists <- sequence [moduleToFilePath [destDir] modu suffixes | - modu <- mods] - compileFiles bi (concat stubsFileLists) - - suffixes = ["hs", "lhs"] - - -- Copy or cpp a file from the source directory to the build directory. - copyModule :: Bool -> BuildInfo -> FilePath -> FilePath -> IO () - copyModule cppAll bi srcFile destFile = do - createDirectoryIfMissing True (dirOf destFile) - (exts, opts, _) <- getOptionsFromSource srcFile - let ghcOpts = hcOptions GHC opts - if cppAll || CPP `elem` exts || "-cpp" `elem` ghcOpts then do - ppCpp bi lbi srcFile destFile verbose - return () - else - copyFile srcFile destFile - - compileFiles :: BuildInfo -> [FilePath] -> IO () - compileFiles bi fileList = do - ffiFileList <- filterM testFFI fileList - unless (null ffiFileList) $ do - when (verbose > 2) (putStrLn "Compiling FFI stubs") - mapM_ (compileFFI bi) ffiFileList - - -- Only compile FFI stubs for a file if it contains some FFI stuff - testFFI :: FilePath -> IO Bool - testFFI file = do - inp <- readHaskellFile file - return ("foreign" `elem` symbols (stripComments False inp)) - - compileFFI :: BuildInfo -> FilePath -> IO () - compileFFI bi file = do - (_, opts, file_incs) <- getOptionsFromSource file - let ghcOpts = hcOptions GHC opts - let pkg_incs = ["\"" ++ inc ++ "\"" | inc <- includes bi] - let incs = uniq (sort (file_incs ++ includeOpts ghcOpts ++ pkg_incs)) - let pathFlag = "-P" ++ buildDir lbi ++ [searchPathSeparator] - let hugsArgs = "-98" : pathFlag : map ("-i" ++) incs - cfiles <- getCFiles file - let cArgs = - ["-I" ++ dir | dir <- includeDirs bi] ++ - ccOptions bi ++ - cfiles ++ - ["-L" ++ dir | dir <- extraLibDirs bi] ++ - ldOptions bi ++ - ["-l" ++ lib | lib <- extraLibs bi] ++ - concat [["-framework", f] | f <- frameworks bi] - rawSystemExit verbose ffihugs (hugsArgs ++ file : cArgs) - - ffihugs = compilerPath (compiler lbi) - - includeOpts :: [String] -> [String] - includeOpts [] = [] - includeOpts ("-#include" : arg : opts) = arg : includeOpts opts - includeOpts (_ : opts) = includeOpts opts - - -- get C file names from CFILES pragmas throughout the source file - getCFiles :: FilePath -> IO [String] - getCFiles file = do - inp <- readHaskellFile file - return [platformPath cfile | - "{-#" : "CFILES" : rest <- - map words $ lines $ stripComments True inp, - last rest == "#-}", - cfile <- init rest] - - -- List of terminal symbols in a source file. - symbols :: String -> [String] - symbols cs = case lex cs of - (sym, cs'):_ | not (null sym) -> sym : symbols cs' - _ -> [] - - -- Get the non-literate source of a Haskell module. - readHaskellFile :: FilePath -> IO String - readHaskellFile file = do - text <- readFile file - return $ if ".lhs" `isSuffixOf` file then unlit file text else text - -uniq :: Ord a => [a] -> [a] -uniq [] = [] -uniq (x:xs) = x : uniq (dropWhile (== x) xs) - --- ------------------------------------------------------------ --- * options in source files --- ------------------------------------------------------------ - --- |Read the initial part of a source file, before any Haskell code, --- and return the contents of any LANGUAGE, OPTIONS and INCLUDE pragmas. -getOptionsFromSource - :: FilePath - -> IO ([Extension], -- LANGUAGE pragma, if any - [(CompilerFlavor,[String])], -- OPTIONS_FOO pragmas - [String] -- INCLUDE pragmas - ) -getOptionsFromSource file = do - text <- readFile file - return $ foldr appendOptions ([],[],[]) $ map getOptions $ - takeWhileJust $ map getPragma $ - filter textLine $ map (dropWhile isSpace) $ lines $ - stripComments True $ - if ".lhs" `isSuffixOf` file then unlit file text else text - where textLine [] = False - textLine ('#':_) = False - textLine _ = True - - getPragma :: String -> Maybe [String] - getPragma line = case words line of - ("{-#" : rest) | last rest == "#-}" -> Just (init rest) - _ -> Nothing - - getOptions ("OPTIONS":opts) = ([], [(GHC, opts)], []) - getOptions ("OPTIONS_GHC":opts) = ([], [(GHC, opts)], []) - getOptions ("OPTIONS_NHC98":opts) = ([], [(NHC, opts)], []) - getOptions ("OPTIONS_HUGS":opts) = ([], [(Hugs, opts)], []) - getOptions ("LANGUAGE":ws) = (mapMaybe readExtension ws, [], []) - where readExtension :: String -> Maybe Extension - readExtension w = case reads w of - [(ext, "")] -> Just ext - [(ext, ",")] -> Just ext - _ -> Nothing - getOptions ("INCLUDE":ws) = ([], [], ws) - getOptions _ = ([], [], []) - - appendOptions (exts, opts, incs) (exts', opts', incs') - = (exts++exts', opts++opts', incs++incs') - --- takeWhileJust f = map fromJust . takeWhile isJust -takeWhileJust :: [Maybe a] -> [a] -takeWhileJust (Just x:xs) = x : takeWhileJust xs -takeWhileJust _ = [] - --- |Strip comments from Haskell source. -stripComments - :: Bool -- ^ preserve pragmas? - -> String -- ^ input source text - -> String -stripComments keepPragmas = stripCommentsLevel 0 - where stripCommentsLevel :: Int -> String -> String - stripCommentsLevel 0 ('"':cs) = '"':copyString cs - stripCommentsLevel 0 ('-':'-':cs) = -- FIX: symbols like --> - stripCommentsLevel 0 (dropWhile (/= '\n') cs) - stripCommentsLevel 0 ('{':'-':'#':cs) - | keepPragmas = '{' : '-' : '#' : copyPragma cs - stripCommentsLevel n ('{':'-':cs) = stripCommentsLevel (n+1) cs - stripCommentsLevel 0 (c:cs) = c : stripCommentsLevel 0 cs - stripCommentsLevel n ('-':'}':cs) = stripCommentsLevel (n-1) cs - stripCommentsLevel n (c:cs) = stripCommentsLevel n cs - stripCommentsLevel _ [] = [] - - copyString ('\\':c:cs) = '\\' : c : copyString cs - copyString ('"':cs) = '"' : stripCommentsLevel 0 cs - copyString (c:cs) = c : copyString cs - copyString [] = [] - - copyPragma ('#':'-':'}':cs) = '#' : '-' : '}' : stripCommentsLevel 0 cs - copyPragma (c:cs) = c : copyPragma cs - copyPragma [] = [] + GHC -> GHC.build pkg_descr lbi verbose + JHC -> JHC.build pkg_descr lbi verbose + Hugs -> Hugs.build pkg_descr lbi verbose + _ -> die ("Building is not supported with this compiler.") hunk ./Distribution/Simple/Build.hs 217 +get_prefix_stuff :: String hunk ./Distribution/Simple/Configure.hs 75 - BuildInfo(..), Executable(..), setupMessage, hasLibs) + BuildInfo(..), Executable(..), setupMessage ) hunk ./Distribution/Simple/Configure.hs 87 -import Distribution.Program(Program(..), ProgramLocation(..), lookupProgram, +import Distribution.Program(Program(..), ProgramLocation(..), hunk ./Distribution/Simple/Configure.hs 244 +messageDir :: PackageDescription -> LocalBuildInfo -> String + -> (PackageDescription -> LocalBuildInfo -> CopyDest -> FilePath) + -> (PackageDescription -> LocalBuildInfo -> CopyDest -> Maybe FilePath) + -> IO () hunk ./Distribution/Simple/GHC.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.GHC +-- Copyright : Isaac Jones 2003-2006 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : portable +-- + +{- Copyright (c) 2003-2005, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.GHC ( + build, installLib, installExe + ) where + +import Distribution.PackageDescription + ( PackageDescription(..), BuildInfo(..), + withLib, setupMessage, + Executable(..), withExe, Library(..), + libModules, hcOptions ) +import Distribution.Simple.LocalBuildInfo + ( LocalBuildInfo(..), autogenModulesDir ) +import Distribution.Simple.Utils( rawSystemExit, rawSystemPathExit, die, + dirOf, moduleToFilePath, + smartCopySources, findFile, copyFileVerbose, + mkLibName, mkProfLibName, dotToSep ) +import Distribution.Package ( PackageIdentifier(..), showPackageId ) +import Distribution.Program ( rawSystemProgram, ranlibProgram, + Program(..), ProgramConfiguration(..), + ProgramLocation(..), + lookupProgram, arProgram ) +import Distribution.Compiler ( Compiler(..), CompilerFlavor(..), + extensionsToGHCFlag ) +import Distribution.Version ( Version(..) ) +import Distribution.Compat.FilePath + ( joinFileName, exeExtension, joinFileExt, + splitFilePath, objExtension, joinPaths ) +import Distribution.Compat.Directory + ( createDirectoryIfMissing ) +import qualified Distribution.Simple.GHCPackageConfig as GHC + ( localPackageConfig, + canReadLocalPackageConfig ) + +import Control.Monad ( unless, when ) +import Data.List ( isSuffixOf, nub ) +import System.Directory ( removeFile, getDirectoryContents ) +#ifndef __NHC__ +import Control.Exception (try) +#else +import IO (try) +#endif + +-- ----------------------------------------------------------------------------- +-- Building + +-- |Building for GHC. If .ghc-packages exists and is readable, add +-- it to the command-line. +build :: PackageDescription -> LocalBuildInfo -> Int -> IO () +build pkg_descr lbi verbose = do + let pref = buildDir lbi + let ghcPath = compilerPath (compiler lbi) + ifProfLib = when (withProfLib lbi) + ifGHCiLib = when (withGHCiLib lbi) + + -- GHC versions prior to 6.4 didn't have the user package database, + -- so we fake it. TODO: This can go away in due course. + pkg_conf <- if versionBranch (compilerVersion (compiler lbi)) >= [6,4] + then return [] + else do pkgConf <- GHC.localPackageConfig + pkgConfReadable <- GHC.canReadLocalPackageConfig + if pkgConfReadable + then return ["-package-conf", pkgConf] + else return [] + + -- Build lib + withLib pkg_descr () $ \lib -> do + when (verbose > 3) (putStrLn "Building library...") + let libBi = libBuildInfo lib + libTargetDir = pref + + createDirectoryIfMissing True libTargetDir + -- put hi-boot files into place for mutually recurive modules + smartCopySources verbose (hsSourceDirs libBi) + libTargetDir (libModules pkg_descr) ["hi-boot"] False False + let ghcArgs = + pkg_conf + ++ ["-package-name", pkgName (package pkg_descr) ] + ++ (if splitObjs lbi then ["-split-objs"] else []) + ++ constructGHCCmdLine lbi libBi libTargetDir verbose + ++ (libModules pkg_descr) + ghcArgsProf = ghcArgs + ++ ["-prof", + "-hisuf", "p_hi", + "-osuf", "p_o" + ] + ++ ghcProfOptions libBi + unless (null (libModules pkg_descr)) $ + do rawSystemExit verbose ghcPath ghcArgs + ifProfLib (rawSystemExit verbose ghcPath ghcArgsProf) + + -- build any C sources + unless (null (cSources libBi)) $ do + when (verbose > 3) (putStrLn "Building C Sources...") + -- FIX: similar 'versionBranch' logic duplicated below. refactor for code sharing + sequence_ [do let ghc_vers = compilerVersion (compiler lbi) + odir | versionBranch ghc_vers >= [6,4,1] = pref + | otherwise = pref `joinFileName` dirOf c + -- ghc 6.4.1 fixed a bug in -odir handling + -- for C compilations. + createDirectoryIfMissing True odir + let cArgs = ["-I" ++ dir | dir <- includeDirs libBi] + ++ ["-optc" ++ opt | opt <- ccOptions libBi] + ++ ["-odir", odir, "-hidir", pref, "-c"] + ++ (if verbose > 4 then ["-v"] else []) + rawSystemExit verbose ghcPath (cArgs ++ [c]) + | c <- cSources libBi] + + -- link: + when (verbose > 3) (putStrLn "cabal-linking...") + let cObjs = [ path `joinFileName` file `joinFileExt` objExtension + | (path, file, _) <- (map splitFilePath (cSources libBi)) ] + libName = mkLibName pref (showPackageId (package pkg_descr)) + profLibName = mkProfLibName pref (showPackageId (package pkg_descr)) + ghciLibName = mkGHCiLibName pref (showPackageId (package pkg_descr)) + + stubObjs <- sequence [moduleToFilePath [libTargetDir] (x ++"_stub") [objExtension] + | x <- libModules pkg_descr ] >>= return . concat + stubProfObjs <- sequence [moduleToFilePath [libTargetDir] (x ++"_stub") ["p_" ++ objExtension] + | x <- libModules pkg_descr ] >>= return . concat + + hObjs <- getHaskellObjects pkg_descr libBi lbi + pref objExtension + hProfObjs <- + if (withProfLib lbi) + then getHaskellObjects pkg_descr libBi lbi + pref ("p_" ++ objExtension) + else return [] + + unless (null hObjs && null cObjs && null stubObjs) $ do + try (removeFile libName) -- first remove library if it exists + try (removeFile profLibName) -- first remove library if it exists + try (removeFile ghciLibName) -- first remove library if it exists + let arArgs = ["q"++ (if verbose > 4 then "v" else "")] + ++ [libName] + ++ hObjs + ++ map (pref `joinFileName`) cObjs + ++ stubObjs + arProfArgs = ["q"++ (if verbose > 4 then "v" else "")] + ++ [profLibName] + ++ hProfObjs + ++ stubProfObjs + ldArgs = ["-r"] + ++ ["-x"] -- FIXME: only some systems's ld support the "-x" flag + ++ ["-o", ghciLibName] + ++ hObjs + ++ map (pref `joinFileName`) cObjs + ++ stubObjs + rawSystemPathExit verbose "ar" arArgs + ifProfLib (rawSystemPathExit verbose "ar" arProfArgs) +#if defined(mingw32_TARGET_OS) || defined(mingw32_HOST_OS) + let (compilerDir, _) = splitFileName $ compilerPath (compiler lbi) + (baseDir, _) = splitFileName compilerDir + ld = baseDir `joinFileName` "gcc-lib\\ld.exe" + ifGHCiLib (rawSystemExit verbose ld ldArgs) +#else + ifGHCiLib (rawSystemPathExit verbose "ld" ldArgs) +#endif + + -- build any executables + withExe pkg_descr $ \ (Executable exeName' modPath exeBi) -> do + when (verbose > 3) + (putStrLn $ "Building executable: " ++ exeName' ++ "...") + let targetDir = pref `joinFileName` exeName' + let exeDir = joinPaths targetDir (exeName' ++ "-tmp") + createDirectoryIfMissing True targetDir + createDirectoryIfMissing True exeDir + -- put hi-boot files into place for mutually recursive modules + -- FIX: what about exeName.hi-boot? + smartCopySources verbose (hsSourceDirs exeBi) + exeDir (otherModules exeBi) ["hi-boot"] False False + + -- build executables + unless (null (cSources exeBi)) $ do + when (verbose > 3) (putStrLn "Building C Sources.") + sequence_ [do let cSrcODir |versionBranch (compilerVersion (compiler lbi)) + >= [6,4,1] = exeDir + | otherwise + = exeDir `joinFileName` (dirOf c) + createDirectoryIfMissing True cSrcODir + let cArgs = ["-I" ++ dir | dir <- includeDirs exeBi] + ++ ["-optc" ++ opt | opt <- ccOptions exeBi] + ++ ["-odir", cSrcODir, "-hidir", pref, "-c"] + ++ (if verbose > 4 then ["-v"] else []) + rawSystemExit verbose ghcPath (cArgs ++ [c]) + | c <- cSources exeBi] + srcMainFile <- findFile (hsSourceDirs exeBi) modPath + + let cObjs = [ path `joinFileName` file `joinFileExt` objExtension + | (path, file, _) <- (map splitFilePath (cSources exeBi)) ] + let binArgs = + pkg_conf + ++ ["-I"++pref, + "-o", targetDir `joinFileName` exeName' + ] + ++ constructGHCCmdLine lbi exeBi exeDir verbose + ++ [exeDir `joinFileName` x | x <- cObjs] + ++ [srcMainFile] + ++ ldOptions exeBi + ++ ["-l"++lib | lib <- extraLibs exeBi] + ++ ["-L"++libDir | libDir <- extraLibDirs exeBi] + ++ if withProfExe lbi + then "-prof":ghcProfOptions exeBi + else [] + rawSystemExit verbose ghcPath binArgs + + +-- when using -split-objs, we need to search for object files in the +-- Module_split directory for each module. +getHaskellObjects :: PackageDescription -> BuildInfo -> LocalBuildInfo + -> FilePath -> String -> IO [FilePath] +getHaskellObjects pkg_descr libBi lbi pref obj_ext + | splitObjs lbi = do + let dirs = [ pref `joinFileName` (dotToSep x ++ "_split") + | x <- libModules pkg_descr ] + objss <- mapM getDirectoryContents dirs + let objs = [ dir `joinFileName` obj + | (objs,dir) <- zip objss dirs, obj <- objs, + obj_ext `isSuffixOf` obj ] + return objs + | otherwise = + return [ pref `joinFileName` (dotToSep x) `joinFileExt` obj_ext + | x <- libModules pkg_descr ] + + +constructGHCCmdLine + :: LocalBuildInfo + -> BuildInfo + -> FilePath + -> Int -- verbosity level + -> [String] +constructGHCCmdLine lbi bi odir verbose = + ["--make"] + ++ (if verbose > 4 then ["-v"] else []) + -- Unsupported extensions have already been checked by configure + ++ snd (extensionsToGHCFlag (extensions bi)) + ++ hcOptions GHC (options bi) + ++ (if compilerVersion (compiler lbi) > Version [6,4] [] + then ["-hide-all-packages"] + else []) + ++ ["-i"] + ++ ["-i" ++ autogenModulesDir lbi] + ++ ["-i" ++ l | l <- nub (hsSourceDirs bi)] + ++ ["-I" ++ dir | dir <- includeDirs bi] + ++ ["-optc" ++ opt | opt <- ccOptions bi] + ++ [ "-#include \"" ++ inc ++ "\"" | inc <- includes bi ] + ++ [ "-odir", odir, "-hidir", odir ] + ++ (concat [ ["-package", showPackageId pkg] | pkg <- packageDeps lbi ]) + + +mkGHCiLibName :: FilePath -- ^file Prefix + -> String -- ^library name. + -> String +mkGHCiLibName pref lib = pref `joinFileName` ("HS" ++ lib ++ ".o") + +-- ----------------------------------------------------------------------------- +-- Installing + +-- |Install executables for GHC. +installExe :: Int -- ^verbose + -> FilePath -- ^install location + -> FilePath -- ^Build location + -> PackageDescription -> IO () +installExe verbose pref buildPref pkg_descr + = do createDirectoryIfMissing True pref + withExe pkg_descr $ \ (Executable e _ b) -> do + let exeName = e `joinFileExt` exeExtension + copyFileVerbose verbose (buildPref `joinFileName` e `joinFileName` exeName) (pref `joinFileName` exeName) + +-- |Install for ghc, .hi, .a and, if --with-ghci given, .o +installLib :: Int -- ^verbose + -> ProgramConfiguration + -> Bool -- ^has profiling library + -> Bool -- ^has GHCi libs + -> FilePath -- ^install location + -> FilePath -- ^Build location + -> PackageDescription -> IO () +installLib verbose programConf hasProf hasGHCi pref buildPref + pd@PackageDescription{library=Just l, + package=p} + = do smartCopySources verbose [buildPref] pref (libModules pd) ["hi"] True False + ifProf $ smartCopySources verbose [buildPref] pref (libModules pd) ["p_hi"] True False + let libTargetLoc = mkLibName pref (showPackageId p) + profLibTargetLoc = mkProfLibName pref (showPackageId p) + libGHCiTargetLoc = mkGHCiLibName pref (showPackageId p) + copyFileVerbose verbose (mkLibName buildPref (showPackageId p)) libTargetLoc + ifProf $ copyFileVerbose verbose (mkProfLibName buildPref (showPackageId p)) profLibTargetLoc + ifGHCi $ copyFileVerbose verbose (mkGHCiLibName buildPref (showPackageId p)) libGHCiTargetLoc + + -- use ranlib or ar -s to build an index. this is necessary + -- on some systems like MacOS X. If we can't find those, + -- don't worry too much about it. + let progName = programName $ ranlibProgram + mProg <- lookupProgram progName programConf + case foundProg mProg of + Just rl -> do rawSystemProgram verbose rl [libTargetLoc] + ifProf $ rawSystemProgram verbose rl [profLibTargetLoc] + + Nothing -> do let progName = programName $ arProgram + mProg <- lookupProgram progName programConf + case mProg of + Just ar -> do rawSystemProgram verbose ar ["-s", libTargetLoc] + ifProf $ rawSystemProgram verbose ar ["-s", profLibTargetLoc] + Nothing -> setupMessage "Warning: Unable to generate index for library (missing ranlib and ar)" pd + return () + where ifProf action = when hasProf (action >> return ()) + ifGHCi action = when hasGHCi (action >> return ()) +installLib _ _ _ _ _ _ PackageDescription{library=Nothing} + = die $ "Internal Error. installLibGHC called with no library." + +-- Also checks whether the program was actually found. +foundProg :: Maybe Program -> Maybe Program +foundProg Nothing = Nothing +foundProg (Just Program{programLocation=EmptyLocation}) = Nothing +foundProg x = x hunk ./Distribution/Simple/Hugs.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.Hugs +-- Copyright : Isaac Jones 2003-2006 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : portable +-- + +{- Copyright (c) 2003-2005, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.Hugs ( + build, install, + hugsPackageDir + ) where + +import Distribution.PackageDescription + ( PackageDescription(..), BuildInfo(..), + withLib, + Executable(..), withExe, Library(..), + libModules, hcOptions, autogenModuleName ) +import Distribution.Compiler ( Compiler(..), CompilerFlavor(..) ) +import Distribution.Package ( PackageIdentifier(..) ) +import Distribution.Setup ( CopyDest(..) ) +import Distribution.PreProcess ( ppCpp ) +import Distribution.PreProcess.Unlit + ( unlit ) +import Distribution.Simple.LocalBuildInfo + ( LocalBuildInfo(..), + mkLibDir, autogenModulesDir ) +import Distribution.Simple.Utils( rawSystemExit, die, + dirOf, dotToSep, moduleToFilePath, + smartCopySources, findFile ) +import Language.Haskell.Extension + ( Extension(..) ) +import Distribution.Compat.Directory + ( copyFile,createDirectoryIfMissing, + removeDirectoryRecursive ) +import Distribution.Compat.FilePath + ( joinFileName, splitFileExt, joinFileExt, + dllExtension, searchPathSeparator, + platformPath ) + + +import Data.Char ( isSpace ) +import Data.Maybe ( mapMaybe ) +import Control.Monad ( unless, when, filterM ) +#ifndef __NHC__ +import Control.Exception ( try ) +#else +import IO ( try ) +#endif +import Data.List ( nub, sort, isSuffixOf ) +import System.Directory ( Permissions(..), getPermissions, + setPermissions ) + +-- ----------------------------------------------------------------------------- + +-- |Building a package for Hugs. +build :: PackageDescription -> LocalBuildInfo -> Int -> IO () +build pkg_descr lbi verbose = do + let pref = buildDir lbi + withLib pkg_descr () $ (\l -> compileBuildInfo pref [] (libModules pkg_descr) (libBuildInfo l)) + withExe pkg_descr $ compileExecutable (pref `joinFileName` "programs") + where + compileExecutable :: FilePath -> Executable -> IO () + compileExecutable destDir (exe@Executable {modulePath=mainPath, buildInfo=bi}) = do + let exeMods = otherModules bi + srcMainFile <- findFile (hsSourceDirs bi) mainPath + let exeDir = destDir `joinFileName` exeName exe + let destMainFile = exeDir `joinFileName` hugsMainFilename exe + copyModule (CPP `elem` extensions bi) bi srcMainFile destMainFile + let paths_modulename = autogenModuleName pkg_descr ++ ".hs" + copyFile (autogenModulesDir lbi `joinFileName` paths_modulename) + (exeDir `joinFileName` paths_modulename) + compileBuildInfo exeDir (maybe [] (hsSourceDirs . libBuildInfo) (library pkg_descr)) exeMods bi + compileFiles bi [destMainFile] + + compileBuildInfo :: FilePath + -> [FilePath] -- ^library source dirs, if building exes + -> [String] -- ^Modules + -> BuildInfo -> IO () + compileBuildInfo destDir mLibSrcDirs mods bi = do + -- Pass 1: copy or cpp files from src directory to build directory + let useCpp = CPP `elem` extensions bi + let srcDirs = nub $ hsSourceDirs bi ++ mLibSrcDirs + when (verbose > 3) (putStrLn $ "Source directories: " ++ show srcDirs) + flip mapM_ mods $ \ m -> do + fs <- moduleToFilePath srcDirs m suffixes + if null fs then + die ("can't find source for module " ++ m) + else do + let srcFile = head fs + let (_, ext) = splitFileExt srcFile + copyModule useCpp bi srcFile + (destDir `joinFileName` dotToSep m `joinFileExt` ext) + -- Pass 2: compile foreign stubs in build directory + stubsFileLists <- sequence [moduleToFilePath [destDir] modu suffixes | + modu <- mods] + compileFiles bi (concat stubsFileLists) + + suffixes = ["hs", "lhs"] + + -- Copy or cpp a file from the source directory to the build directory. + copyModule :: Bool -> BuildInfo -> FilePath -> FilePath -> IO () + copyModule cppAll bi srcFile destFile = do + createDirectoryIfMissing True (dirOf destFile) + (exts, opts, _) <- getOptionsFromSource srcFile + let ghcOpts = hcOptions GHC opts + if cppAll || CPP `elem` exts || "-cpp" `elem` ghcOpts then do + ppCpp bi lbi srcFile destFile verbose + return () + else + copyFile srcFile destFile + + compileFiles :: BuildInfo -> [FilePath] -> IO () + compileFiles bi fileList = do + ffiFileList <- filterM testFFI fileList + unless (null ffiFileList) $ do + when (verbose > 2) (putStrLn "Compiling FFI stubs") + mapM_ (compileFFI bi) ffiFileList + + -- Only compile FFI stubs for a file if it contains some FFI stuff + testFFI :: FilePath -> IO Bool + testFFI file = do + inp <- readHaskellFile file + return ("foreign" `elem` symbols (stripComments False inp)) + + compileFFI :: BuildInfo -> FilePath -> IO () + compileFFI bi file = do + (_, opts, file_incs) <- getOptionsFromSource file + let ghcOpts = hcOptions GHC opts + let pkg_incs = ["\"" ++ inc ++ "\"" | inc <- includes bi] + let incs = nub (sort (file_incs ++ includeOpts ghcOpts ++ pkg_incs)) + let pathFlag = "-P" ++ buildDir lbi ++ [searchPathSeparator] + let hugsArgs = "-98" : pathFlag : map ("-i" ++) incs + cfiles <- getCFiles file + let cArgs = + ["-I" ++ dir | dir <- includeDirs bi] ++ + ccOptions bi ++ + cfiles ++ + ["-L" ++ dir | dir <- extraLibDirs bi] ++ + ldOptions bi ++ + ["-l" ++ lib | lib <- extraLibs bi] ++ + concat [["-framework", f] | f <- frameworks bi] + rawSystemExit verbose ffihugs (hugsArgs ++ file : cArgs) + + ffihugs = compilerPath (compiler lbi) + + includeOpts :: [String] -> [String] + includeOpts [] = [] + includeOpts ("-#include" : arg : opts) = arg : includeOpts opts + includeOpts (_ : opts) = includeOpts opts + + -- get C file names from CFILES pragmas throughout the source file + getCFiles :: FilePath -> IO [String] + getCFiles file = do + inp <- readHaskellFile file + return [platformPath cfile | + "{-#" : "CFILES" : rest <- + map words $ lines $ stripComments True inp, + last rest == "#-}", + cfile <- init rest] + + -- List of terminal symbols in a source file. + symbols :: String -> [String] + symbols cs = case lex cs of + (sym, cs'):_ | not (null sym) -> sym : symbols cs' + _ -> [] + + -- Get the non-literate source of a Haskell module. + readHaskellFile :: FilePath -> IO String + readHaskellFile file = do + text <- readFile file + return $ if ".lhs" `isSuffixOf` file then unlit file text else text + +-- ------------------------------------------------------------ +-- * options in source files +-- ------------------------------------------------------------ + +-- |Read the initial part of a source file, before any Haskell code, +-- and return the contents of any LANGUAGE, OPTIONS and INCLUDE pragmas. +getOptionsFromSource + :: FilePath + -> IO ([Extension], -- LANGUAGE pragma, if any + [(CompilerFlavor,[String])], -- OPTIONS_FOO pragmas + [String] -- INCLUDE pragmas + ) +getOptionsFromSource file = do + text <- readFile file + return $ foldr appendOptions ([],[],[]) $ map getOptions $ + takeWhileJust $ map getPragma $ + filter textLine $ map (dropWhile isSpace) $ lines $ + stripComments True $ + if ".lhs" `isSuffixOf` file then unlit file text else text + where textLine [] = False + textLine ('#':_) = False + textLine _ = True + + getPragma :: String -> Maybe [String] + getPragma line = case words line of + ("{-#" : rest) | last rest == "#-}" -> Just (init rest) + _ -> Nothing + + getOptions ("OPTIONS":opts) = ([], [(GHC, opts)], []) + getOptions ("OPTIONS_GHC":opts) = ([], [(GHC, opts)], []) + getOptions ("OPTIONS_NHC98":opts) = ([], [(NHC, opts)], []) + getOptions ("OPTIONS_HUGS":opts) = ([], [(Hugs, opts)], []) + getOptions ("LANGUAGE":ws) = (mapMaybe readExtension ws, [], []) + where readExtension :: String -> Maybe Extension + readExtension w = case reads w of + [(ext, "")] -> Just ext + [(ext, ",")] -> Just ext + _ -> Nothing + getOptions ("INCLUDE":ws) = ([], [], ws) + getOptions _ = ([], [], []) + + appendOptions (exts, opts, incs) (exts', opts', incs') + = (exts++exts', opts++opts', incs++incs') + +-- takeWhileJust f = map fromJust . takeWhile isJust +takeWhileJust :: [Maybe a] -> [a] +takeWhileJust (Just x:xs) = x : takeWhileJust xs +takeWhileJust _ = [] + +-- |Strip comments from Haskell source. +stripComments + :: Bool -- ^ preserve pragmas? + -> String -- ^ input source text + -> String +stripComments keepPragmas = stripCommentsLevel 0 + where stripCommentsLevel :: Int -> String -> String + stripCommentsLevel 0 ('"':cs) = '"':copyString cs + stripCommentsLevel 0 ('-':'-':cs) = -- FIX: symbols like --> + stripCommentsLevel 0 (dropWhile (/= '\n') cs) + stripCommentsLevel 0 ('{':'-':'#':cs) + | keepPragmas = '{' : '-' : '#' : copyPragma cs + stripCommentsLevel n ('{':'-':cs) = stripCommentsLevel (n+1) cs + stripCommentsLevel 0 (c:cs) = c : stripCommentsLevel 0 cs + stripCommentsLevel n ('-':'}':cs) = stripCommentsLevel (n-1) cs + stripCommentsLevel n (c:cs) = stripCommentsLevel n cs + stripCommentsLevel _ [] = [] + + copyString ('\\':c:cs) = '\\' : c : copyString cs + copyString ('"':cs) = '"' : stripCommentsLevel 0 cs + copyString (c:cs) = c : copyString cs + copyString [] = [] + + copyPragma ('#':'-':'}':cs) = '#' : '-' : '}' : stripCommentsLevel 0 cs + copyPragma (c:cs) = c : copyPragma cs + copyPragma [] = [] + +-- ----------------------------------------------------------------------------- +-- Install for Hugs +-- For install, copy-prefix = prefix, but for copy they're different. +-- The library goes in /lib/hugs/packages/ +-- (i.e. /lib/hugs/packages/ on the target system). +-- Each executable goes in /lib/hugs/programs/ +-- (i.e. /lib/hugs/programs/ on the target system) +-- with a script /bin/ pointing at +-- /lib/hugs/programs/ +install + :: Int -- ^verbose + -> FilePath -- ^Library install location + -> FilePath -- ^Program install location + -> FilePath -- ^Executable install location + -> FilePath -- ^Program location on target system + -> FilePath -- ^Build location + -> PackageDescription + -> IO () +install verbose libDir installProgDir binDir targetProgDir buildPref pkg_descr = do + withLib pkg_descr () $ \ libInfo -> do + try $ removeDirectoryRecursive libDir + smartCopySources verbose [buildPref] libDir (libModules pkg_descr) hugsInstallSuffixes True False + let buildProgDir = buildPref `joinFileName` "programs" + when (any (buildable . buildInfo) (executables pkg_descr)) $ + createDirectoryIfMissing True binDir + withExe pkg_descr $ \ exe -> do + let buildDir = buildProgDir `joinFileName` exeName exe + let installDir = installProgDir `joinFileName` exeName exe + let targetDir = targetProgDir `joinFileName` exeName exe + try $ removeDirectoryRecursive installDir + smartCopySources verbose [buildDir] installDir + ("Main" : autogenModuleName pkg_descr : otherModules (buildInfo exe)) hugsInstallSuffixes True False + let targetName = "\"" ++ (targetDir `joinFileName` hugsMainFilename exe) ++ "\"" + -- FIX (HUGS): use extensions, and options from file too? + -- see http://hackage.haskell.org/trac/hackage/ticket/43 + let hugsOptions = hcOptions Hugs (options (buildInfo exe)) +#if mingw32_HOST_OS || mingw32_TARGET_OS + let exeFile = binDir `joinFileName` exeName exe `joinFileExt` "bat" + let script = unlines [ + "@echo off", + unwords ("runhugs" : hugsOptions ++ [targetName, "%*"])] +#else + let exeFile = binDir `joinFileName` exeName exe + let script = unlines [ + "#! /bin/sh", + unwords ("runhugs" : hugsOptions ++ [targetName, "\"$@\""])] +#endif + writeFile exeFile script + perms <- getPermissions exeFile + setPermissions exeFile perms { executable = True, readable = True } + +hugsInstallSuffixes :: [String] +hugsInstallSuffixes = ["hs", "lhs", dllExtension] + +-- |Hugs library directory for a package +hugsPackageDir :: PackageDescription -> LocalBuildInfo -> FilePath +hugsPackageDir pkg_descr lbi = + mkLibDir pkg_descr lbi NoCopyDest + `joinFileName` "packages" `joinFileName` pkgName (package pkg_descr) + +-- |Filename used by Hugs for the main module of an executable. +-- This is a simple filename, so that Hugs will look for any auxiliary +-- modules it uses relative to the directory it's in. +hugsMainFilename :: Executable -> FilePath +hugsMainFilename exe = "Main" `joinFileExt` ext + where (_, ext) = splitFileExt (modulePath exe) hunk ./Distribution/Simple/Install.hs 45 - hugsPackageDir, - hugsProgramsDirs, - hugsMainFilename, hunk ./Distribution/Simple/Install.hs 59 - PackageDescription(..), BuildInfo(..), Executable(..), Library (..), - setupMessage, hasLibs, withLib, libModules, withExe, - hcOptions, autogenModuleName) -import Distribution.Package (showPackageId, PackageIdentifier(pkgName)) -import Distribution.Program(ProgramConfiguration, Program(..), ProgramLocation(..), - rawSystemProgram, ranlibProgram, - lookupProgram, arProgram) + PackageDescription(..), + setupMessage, hasLibs, withLib, withExe ) hunk ./Distribution/Simple/Install.hs 63 -import Distribution.Simple.Utils(smartCopySources, copyFileVerbose, mkLibName, - mkProfLibName, mkGHCiLibName, die, rawSystemVerbose) +import Distribution.Simple.Utils(copyFileVerbose, die) hunk ./Distribution/Simple/Install.hs 67 +import Distribution.Compat.Directory(createDirectoryIfMissing) +import Distribution.Compat.FilePath(splitFileName,joinFileName) + +import qualified Distribution.Simple.GHC as GHC +import qualified Distribution.Simple.JHC as JHC +-- import qualified Distribution.Simple.NHC as NHC +import qualified Distribution.Simple.Hugs as Hugs + hunk ./Distribution/Simple/Install.hs 76 -import Data.List(any) -import Data.Maybe(fromMaybe) -import Distribution.Compat.Directory(createDirectoryIfMissing, removeDirectoryRecursive, - findExecutable) -import Distribution.Compat.FilePath(splitFileName,joinFileName, dllExtension, exeExtension, - splitFileExt, joinFileExt) -import System.IO.Error(try) -import System.Directory(Permissions(..), getPermissions, setPermissions) hunk ./Distribution/Simple/Install.hs 99 - GHC -> do when (hasLibs pkg_descr) (installLibGHC verbose (withPrograms lbi) (withProfLib lbi) (withGHCiLib lbi) libPref buildPref pkg_descr) - installExeGHC verbose binPref buildPref pkg_descr - JHC -> do withLib pkg_descr () $ installLibJHC verbose libPref buildPref pkg_descr - withExe pkg_descr $ installExeJHC verbose binPref buildPref pkg_descr + GHC -> do when (hasLibs pkg_descr) (GHC.installLib verbose (withPrograms lbi) (withProfLib lbi) (withGHCiLib lbi) libPref buildPref pkg_descr) + GHC.installExe verbose binPref buildPref pkg_descr + JHC -> do withLib pkg_descr () $ JHC.installLib verbose libPref buildPref pkg_descr + withExe pkg_descr $ JHC.installExe verbose binPref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 106 - installHugs verbose libPref progPref binPref targetProgPref buildPref pkg_descr + Hugs.install verbose libPref progPref binPref targetProgPref buildPref pkg_descr hunk ./Distribution/Simple/Install.hs 111 --- |Install executables for GHC. -installExeGHC :: Int -- ^verbose - -> FilePath -- ^install location - -> FilePath -- ^Build location - -> PackageDescription -> IO () -installExeGHC verbose pref buildPref pkg_descr - = do createDirectoryIfMissing True pref - withExe pkg_descr $ \ (Executable e _ b) -> do - let exeName = e `joinFileExt` exeExtension - copyFileVerbose verbose (buildPref `joinFileName` e `joinFileName` exeName) (pref `joinFileName` exeName) - --- |Install for ghc, .hi, .a and, if --with-ghci given, .o -installLibGHC :: Int -- ^verbose - -> ProgramConfiguration - -> Bool -- ^has profiling library - -> Bool -- ^has GHCi libs - -> FilePath -- ^install location - -> FilePath -- ^Build location - -> PackageDescription -> IO () -installLibGHC verbose programConf hasProf hasGHCi pref buildPref - pd@PackageDescription{library=Just l, - package=p} - = do smartCopySources verbose [buildPref] pref (libModules pd) ["hi"] True False - ifProf $ smartCopySources verbose [buildPref] pref (libModules pd) ["p_hi"] True False - let libTargetLoc = mkLibName pref (showPackageId p) - profLibTargetLoc = mkProfLibName pref (showPackageId p) - libGHCiTargetLoc = mkGHCiLibName pref (showPackageId p) - copyFileVerbose verbose (mkLibName buildPref (showPackageId p)) libTargetLoc - ifProf $ copyFileVerbose verbose (mkProfLibName buildPref (showPackageId p)) profLibTargetLoc - ifGHCi $ copyFileVerbose verbose (mkGHCiLibName buildPref (showPackageId p)) libGHCiTargetLoc - - -- use ranlib or ar -s to build an index. this is necessary - -- on some systems like MacOS X. If we can't find those, - -- don't worry too much about it. - let progName = programName $ ranlibProgram - mProg <- lookupProgram progName programConf - case foundProg mProg of - Just rl -> do rawSystemProgram verbose rl [libTargetLoc] - ifProf $ rawSystemProgram verbose rl [profLibTargetLoc] - - Nothing -> do let progName = programName $ arProgram - mProg <- lookupProgram progName programConf - case mProg of - Just ar -> do rawSystemProgram verbose ar ["-s", libTargetLoc] - ifProf $ rawSystemProgram verbose ar ["-s", profLibTargetLoc] - Nothing -> setupMessage "Warning: Unable to generate index for library (missing ranlib and ar)" pd - return () - where ifProf action = when hasProf (action >> return ()) - ifGHCi action = when hasGHCi (action >> return ()) -installLibGHC _ _ _ _ _ _ PackageDescription{library=Nothing} - = die $ "Internal Error. installLibGHC called with no library." - --- Also checks whether the program was actually found. -foundProg :: Maybe Program -> Maybe Program -foundProg Nothing = Nothing -foundProg (Just Program{programLocation=EmptyLocation}) = Nothing -foundProg x = x - -installLibJHC :: Int -> FilePath -> FilePath -> PackageDescription -> Library -> IO () -installLibJHC verb dest build pkg_descr _ = do - let p = showPackageId (package pkg_descr)++".hl" - createDirectoryIfMissing True dest - copyFileVerbose verb (joinFileName build p) (joinFileName dest p) - -installExeJHC :: Int -> FilePath -> FilePath -> PackageDescription -> Executable -> IO () -installExeJHC verb dest build pkg_descr exe = do - let out = exeName exe `joinFileName` exeExtension - createDirectoryIfMissing True dest - copyFileVerbose verb (joinFileName build out) (joinFileName dest out) - - --- Install for Hugs --- For install, copy-prefix = prefix, but for copy they're different. --- The library goes in /lib/hugs/packages/ --- (i.e. /lib/hugs/packages/ on the target system). --- Each executable goes in /lib/hugs/programs/ --- (i.e. /lib/hugs/programs/ on the target system) --- with a script /bin/ pointing at --- /lib/hugs/programs/ -installHugs - :: Int -- ^verbose - -> FilePath -- ^Library install location - -> FilePath -- ^Program install location - -> FilePath -- ^Executable install location - -> FilePath -- ^Program location on target system - -> FilePath -- ^Build location - -> PackageDescription - -> IO () -installHugs verbose libDir installProgDir binDir targetProgDir buildPref pkg_descr = do - let pkg_name = pkgName (package pkg_descr) - withLib pkg_descr () $ \ libInfo -> do - try $ removeDirectoryRecursive libDir - smartCopySources verbose [buildPref] libDir (libModules pkg_descr) hugsInstallSuffixes True False - let buildProgDir = buildPref `joinFileName` "programs" - when (any (buildable . buildInfo) (executables pkg_descr)) $ - createDirectoryIfMissing True binDir - withExe pkg_descr $ \ exe -> do - let buildDir = buildProgDir `joinFileName` exeName exe - let installDir = installProgDir `joinFileName` exeName exe - let targetDir = targetProgDir `joinFileName` exeName exe - try $ removeDirectoryRecursive installDir - smartCopySources verbose [buildDir] installDir - ("Main" : autogenModuleName pkg_descr : otherModules (buildInfo exe)) hugsInstallSuffixes True False - let targetName = "\"" ++ (targetDir `joinFileName` hugsMainFilename exe) ++ "\"" - -- FIX (HUGS): use extensions, and options from file too? - -- see http://hackage.haskell.org/trac/hackage/ticket/43 - let hugsOptions = hcOptions Hugs (options (buildInfo exe)) -#if mingw32_HOST_OS || mingw32_TARGET_OS - let exeFile = binDir `joinFileName` exeName exe `joinFileExt` "bat" - let script = unlines [ - "@echo off", - unwords ("runhugs" : hugsOptions ++ [targetName, "%*"])] -#else - let exeFile = binDir `joinFileName` exeName exe - let script = unlines [ - "#! /bin/sh", - unwords ("runhugs" : hugsOptions ++ [targetName, "\"$@\""])] -#endif - writeFile exeFile script - perms <- getPermissions exeFile - setPermissions exeFile perms { executable = True, readable = True } - -hugsInstallSuffixes :: [String] -hugsInstallSuffixes = ["hs", "lhs", dllExtension] - --- |Hugs library directory for a package -hugsPackageDir :: PackageDescription -> LocalBuildInfo -> FilePath -hugsPackageDir pkg_descr lbi = - mkLibDir pkg_descr lbi NoCopyDest - `joinFileName` "packages" `joinFileName` pkgName (package pkg_descr) - --- |Hugs program directories for a package -hugsProgramsDirs :: PackageDescription -> LocalBuildInfo -> [FilePath] -hugsProgramsDirs pkg_descr lbi = - [exeDir `joinFileName` exeName exe | - exe <- executables pkg_descr, buildable (buildInfo exe)] - where exeDir = mkLibDir pkg_descr lbi NoCopyDest `joinFileName` "programs" - --- |Filename used by Hugs for the main module of an executable. --- This is a simple filename, so that Hugs will look for any auxiliary --- modules it uses relative to the directory it's in. -hugsMainFilename :: Executable -> FilePath -hugsMainFilename exe = "Main" `joinFileExt` ext - where (_, ext) = splitFileExt (modulePath exe) - hunk ./Distribution/Simple/JHC.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.JHC +-- Copyright : Isaac Jones 2003-2006 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : portable +-- + +{- Copyright (c) 2003-2005, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.JHC ( + build, installLib, installExe + ) where + +import Distribution.PackageDescription + ( PackageDescription(..), BuildInfo(..), + withLib, + Executable(..), withExe, Library(..), + libModules, hcOptions ) +import Distribution.Simple.LocalBuildInfo + ( LocalBuildInfo(..), + autogenModulesDir ) +import Distribution.Compiler ( Compiler(..), CompilerFlavor(..), + extensionsToJHCFlag ) +import Distribution.Package ( showPackageId ) +import Distribution.Simple.Utils( rawSystemExit, copyFileVerbose ) +import Distribution.Compat.FilePath + ( joinFileName, exeExtension ) +import Distribution.Compat.Directory + ( createDirectoryIfMissing ) + +import Control.Monad ( when ) +import Data.List ( nub, intersperse ) + + +-- ----------------------------------------------------------------------------- +-- Building + +-- | Building a package for JHC. +-- Currently C source files are not supported. +build :: PackageDescription -> LocalBuildInfo -> Int -> IO () +build pkg_descr lbi verbose = do + let jhcPath = compilerPath (compiler lbi) + withLib pkg_descr () $ \lib -> do + when (verbose > 3) (putStrLn "Building library...") + let libBi = libBuildInfo lib + let args = constructJHCCmdLine lbi libBi (buildDir lbi) verbose + rawSystemExit verbose jhcPath (["-c"] ++ args ++ libModules pkg_descr) + let pkgid = showPackageId (package pkg_descr) + pfile = buildDir lbi `joinFileName` "jhc-pkg.conf" + hlfile= buildDir lbi `joinFileName` (pkgid ++ ".hl") + writeFile pfile $ jhcPkgConf pkg_descr + rawSystemExit verbose jhcPath ["--build-hl="++hlfile,pfile] + withExe pkg_descr $ \exe -> do + when (verbose > 3) (putStrLn ("Building executable "++exeName exe)) + let exeBi = buildInfo exe + let out = buildDir lbi `joinFileName` exeName exe + let args = constructJHCCmdLine lbi exeBi (buildDir lbi) verbose + rawSystemExit verbose jhcPath (["-o",out] ++ args ++ [modulePath exe]) + +constructJHCCmdLine :: LocalBuildInfo -> BuildInfo -> FilePath -> Int -> [String] +constructJHCCmdLine lbi bi odir verbose = + (if verbose > 4 then ["-v"] else []) + ++ snd (extensionsToJHCFlag (extensions bi)) + ++ hcOptions JHC (options bi) + ++ ["--noauto","-i-"] + ++ ["-i", autogenModulesDir lbi] + ++ concat [["-i", l] | l <- nub (hsSourceDirs bi)] + ++ ["-optc" ++ opt | opt <- ccOptions bi] + ++ (concat [ ["-p", showPackageId pkg] | pkg <- packageDeps lbi ]) + +jhcPkgConf :: PackageDescription -> String +jhcPkgConf pd = + let sline name sel = name ++ ": "++sel pd + Just lib = library pd + comma f l = concat $ intersperse "," $ map f l + in unlines [sline "name" (showPackageId . package) + ,"exposed-modules: " ++ (comma id (exposedModules lib)) + ,"hidden-modules: " ++ (comma id (otherModules $ libBuildInfo lib)) + ] + +installLib :: Int -> FilePath -> FilePath -> PackageDescription -> Library -> IO () +installLib verb dest build pkg_descr _ = do + let p = showPackageId (package pkg_descr)++".hl" + createDirectoryIfMissing True dest + copyFileVerbose verb (joinFileName build p) (joinFileName dest p) + +installExe :: Int -> FilePath -> FilePath -> PackageDescription -> Executable -> IO () +installExe verb dest build pkg_descr exe = do + let out = exeName exe `joinFileName` exeExtension + createDirectoryIfMissing True dest + copyFileVerbose verb (joinFileName build out) (joinFileName dest out) hunk ./Distribution/Simple/LocalBuildInfo.hs 56 + distPref, srcPref, autogenModulesDir, hunk ./Distribution/Simple/LocalBuildInfo.hs 113 +-- ------------------------------------------------------------ +-- * Some Paths +-- ------------------------------------------------------------ + +distPref :: FilePath +distPref = "dist" + +srcPref :: FilePath +srcPref = distPref `joinFileName` "src" + +-- |The directory in which we put auto-generated modules +autogenModulesDir :: LocalBuildInfo -> String +autogenModulesDir lbi = buildDir lbi `joinFileName` "autogen" + hunk ./Distribution/Simple/NHC.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Distribution.Simple.NHC +-- Copyright : Isaac Jones 2003-2006 +-- +-- Maintainer : Isaac Jones +-- Stability : alpha +-- Portability : portable +-- + +{- Copyright (c) 2003-2005, Isaac Jones +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Isaac Jones nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} + +module Distribution.Simple.NHC ( + build{-, install -} + ) where + +import Distribution.PackageDescription + ( PackageDescription(..), BuildInfo(..), + Library(..), libModules, hcOptions) +import Distribution.Simple.LocalBuildInfo + ( LocalBuildInfo(..) ) +import Distribution.Simple.Utils( rawSystemExit ) +import Distribution.Compiler ( Compiler(..), CompilerFlavor(..), + extensionsToNHCFlag ) + +-- |FIX: For now, the target must contain a main module. Not used +-- ATM. Re-add later. +build :: PackageDescription -> LocalBuildInfo -> Int -> IO () +build pkg_descr lbi verbose = do + -- Unsupported extensions have already been checked by configure + let flags = snd $ extensionsToNHCFlag (maybe [] (extensions . libBuildInfo) (library pkg_descr)) + rawSystemExit verbose (compilerPath (compiler lbi)) + (["-nhc98"] + ++ flags + ++ maybe [] (hcOptions NHC . options . libBuildInfo) (library pkg_descr) + ++ (libModules pkg_descr)) + hunk ./Distribution/Simple/Register.hs 77 -import Distribution.Simple.Install (hugsPackageDir) +import Distribution.Simple.Hugs (hugsPackageDir) hunk ./Distribution/Simple/Utils.hs 59 - mkGHCiLibName, hunk ./Distribution/Simple/Utils.hs 60 + dirOf, hunk ./Distribution/Simple/Utils.hs 68 - distPref, - srcPref, hunk ./Distribution/Simple/Utils.hs 96 - pathSeparator) + pathSeparator,splitFilePath) hunk ./Distribution/Simple/Utils.hs 274 +dirOf :: FilePath -> FilePath +dirOf f = (\ (x, _, _) -> x) $ (splitFilePath f) + hunk ./Distribution/Simple/Utils.hs 287 -mkGHCiLibName :: FilePath -- ^file Prefix - -> String -- ^library name. - -> String -mkGHCiLibName pref lib = pref `joinFileName` ("HS" ++ lib ++ ".o") - - --- ------------------------------------------------------------ --- * Some Paths --- ------------------------------------------------------------ -distPref :: FilePath -distPref = "dist" - -srcPref :: FilePath -srcPref = distPref `joinFileName` "src" - hunk ./Distribution/Make.hs 137 - InstallCmd uInst -> do - ((InstallFlags _ _), _, args) <- parseInstallArgs (InstallFlags uInst 0) args [] + InstallCmd -> do + ((InstallFlags _ _), _, args) <- parseInstallArgs emptyInstallFlags args [] hunk ./Distribution/Make.hs 167 - RegisterCmd uInst genScript -> basicCommand "Register" "make register" - (parseRegisterArgs (RegisterFlags uInst genScript 0) args []) + RegisterCmd -> basicCommand "Register" "make register" + (parseRegisterArgs emptyRegisterFlags args []) hunk ./Distribution/Make.hs 170 - UnregisterCmd uInst genScript -> basicCommand "Unregister" "make unregister" - (parseUnregisterArgs (RegisterFlags uInst genScript 0) args []) + UnregisterCmd -> basicCommand "Unregister" "make unregister" + (parseUnregisterArgs emptyRegisterFlags args []) hunk ./Distribution/Setup.hs 47 - CopyFlags(..), CopyDest(..), InstallFlags(..), + CopyFlags(..), CopyDest(..), + InstallFlags(..), emptyInstallFlags, hunk ./Distribution/Setup.hs 50 - RegisterFlags(..), SDistFlags(..), - InstallUserFlag(..), + RegisterFlags(..), emptyRegisterFlags, + SDistFlags(..), + MaybeUserFlag(..), userOverride, hunk ./Distribution/Setup.hs 73 -import Distribution.Program(ProgramLocation(..), ProgramConfiguration(..), - Program(..), - defaultProgramConfiguration, userSpecifyPath, - userSpecifyArgs, haddockProgram) +import Distribution.Program(ProgramConfiguration(..), + userSpecifyPath, userSpecifyArgs) hunk ./Distribution/Setup.hs 85 -data Action = ConfigCmd ConfigFlags -- config - | BuildCmd -- build - | CleanCmd -- clean - | CopyCmd CopyDest -- copy (--destdir flag) - | HaddockCmd -- haddock - | ProgramaticaCmd -- pfesetup - | InstallCmd InstallUserFlag -- install (install-prefix) (--user flag) - | SDistCmd -- sdist - | TestCmd -- test - | RegisterCmd Bool Bool -- register (--user flag, --gen-script) - | UnregisterCmd Bool Bool -- unregister (--user flag, --gen-script) - | HelpCmd -- help +data Action = ConfigCmd ConfigFlags -- config + | BuildCmd -- build + | CleanCmd -- clean + | CopyCmd CopyDest -- copy (--destdir flag) + | HaddockCmd -- haddock + | ProgramaticaCmd -- pfesetup + | InstallCmd -- install (install-prefix) + | SDistCmd -- sdist + | TestCmd -- test + | RegisterCmd -- register + | UnregisterCmd -- unregister + | HelpCmd -- help hunk ./Distribution/Setup.hs 180 -data InstallUserFlag = InstallUserNone -- ^no --user OR --global flag. - | InstallUserUser -- ^--user flag - | InstallUserGlobal -- ^--global flag +data MaybeUserFlag = MaybeUserNone -- ^no --user OR --global flag. + | MaybeUserUser -- ^--user flag + | MaybeUserGlobal -- ^--global flag + +-- |A 'MaybeUserFlag' overrides the default --user setting +userOverride :: MaybeUserFlag -> Bool -> Bool +MaybeUserUser `userOverride` _ = True +MaybeUserGlobal `userOverride` _ = False +_ `userOverride` r = r hunk ./Distribution/Setup.hs 191 -data InstallFlags = InstallFlags {installUserFlags::InstallUserFlag +data InstallFlags = InstallFlags {installUserFlags::MaybeUserFlag hunk ./Distribution/Setup.hs 194 +emptyInstallFlags :: InstallFlags +emptyInstallFlags = InstallFlags{ installUserFlags=MaybeUserNone, + installVerbose=0 } + hunk ./Distribution/Setup.hs 202 --- | Flags to @register@ and @unregister@: (user package, gen-script, verbose) -data RegisterFlags = RegisterFlags {regUserPackage::Bool +-- | Flags to @register@ and @unregister@: (user package, gen-script, +-- in-place, verbose) +data RegisterFlags = RegisterFlags {regUser::MaybeUserFlag hunk ./Distribution/Setup.hs 206 + ,regInPlace::Bool + ,regWithHcPkg::Maybe FilePath hunk ./Distribution/Setup.hs 210 + +emptyRegisterFlags :: RegisterFlags +emptyRegisterFlags = RegisterFlags { regUser=MaybeUserNone, + regGenScript=False, + regInPlace=False, + regWithHcPkg=Nothing, + regVerbose=0 } + hunk ./Distribution/Setup.hs 251 + | InPlaceFlag hunk ./Distribution/Setup.hs 318 +cmd_with_hc_pkg :: OptDescr (Flag a) +cmd_with_hc_pkg = Option "" ["with-hc-pkg"] (reqPathArg WithHcPkg) + "give the path to the package tool" + hunk ./Distribution/Setup.hs 405 - Option "" ["with-hc-pkg"] (reqPathArg WithHcPkg) - "give the path to the package tool", + cmd_with_hc_pkg, hunk ./Distribution/Setup.hs 584 - cmdAction = InstallCmd InstallUserNone + cmdAction = InstallCmd hunk ./Distribution/Setup.hs 616 - UserFlag -> (InstallFlags InstallUserUser verbose) - GlobalFlag -> (InstallFlags InstallUserGlobal verbose) + UserFlag -> (InstallFlags MaybeUserUser verbose) + GlobalFlag -> (InstallFlags MaybeUserGlobal verbose) hunk ./Distribution/Setup.hs 662 + Option "" ["inplace"] (NoArg InPlaceFlag) + "register the package in the build location, so it can be used without being installed", hunk ./Distribution/Setup.hs 665 - "Instead of performing the register command, generate a script to register later" + "Instead of performing the register command, generate a script to register later", + cmd_with_hc_pkg hunk ./Distribution/Setup.hs 668 - cmdAction = RegisterCmd False False + cmdAction = RegisterCmd hunk ./Distribution/Setup.hs 674 - where updateCfg (RegisterFlags uFlag genScriptFlag verbose) fl = case fl of - UserFlag -> (RegisterFlags True genScriptFlag verbose) - GlobalFlag -> (RegisterFlags False genScriptFlag verbose) - Verbose n -> (RegisterFlags uFlag genScriptFlag n) - GenScriptFlag -> (RegisterFlags uFlag True verbose) + where updateCfg reg fl = case fl of + UserFlag -> reg { regUser=MaybeUserUser } + GlobalFlag -> reg { regUser=MaybeUserGlobal } + Verbose n -> reg { regVerbose=n } + GenScriptFlag -> reg { regGenScript=True } + InPlaceFlag -> reg { regInPlace=True } + WithHcPkg f -> reg { regWithHcPkg=Just f } hunk ./Distribution/Setup.hs 697 - cmdAction = UnregisterCmd False False + cmdAction = UnregisterCmd hunk ./Distribution/Simple/Register.hs 67 -import Distribution.Setup (RegisterFlags(..), CopyDest(..)) +import Distribution.Setup (RegisterFlags(..), CopyDest(..), userOverride) hunk ./Distribution/Simple/Register.hs 87 -import System.Directory(doesFileExist, removeFile) +import System.Directory(doesFileExist, removeFile, getCurrentDirectory) hunk ./Distribution/Simple/Register.hs 114 --- |Be sure to call writeInstalledConfig first. If the --user flag --- was passed, and ~\/.ghc-packages is writable, or can be created, --- then we use that file, perhaps creating it. - hunk ./Distribution/Simple/Register.hs 117 -register pkg_descr lbi (RegisterFlags userInst genScript verbose) +register pkg_descr lbi regFlags hunk ./Distribution/Simple/Register.hs 122 + let ghc_63_plus = compilerVersion (compiler lbi) >= Version [6,3] [] + genScript = regGenScript regFlags + verbose = regVerbose regFlags + user = regUser regFlags `userOverride` userConf lbi + inplace = regInPlace regFlags hunk ./Distribution/Simple/Register.hs 133 - let ghc_63_plus = compilerVersion (compiler lbi) >= Version [6,3] [] - hunk ./Distribution/Simple/Register.hs 134 - if userInst + if user hunk ./Distribution/Simple/Register.hs 146 - instConfExists <- doesFileExist installedPkgConfigFile + let instConf = if inplace then inplacePkgConfigFile + else installedPkgConfigFile + + instConfExists <- doesFileExist instConf hunk ./Distribution/Simple/Register.hs 152 - putStrLn ("create "++installedPkgConfigFile) - writeInstalledConfig pkg_descr lbi + putStrLn ("create " ++ instConf) + writeInstalledConfig pkg_descr lbi inplace hunk ./Distribution/Simple/Register.hs 155 - let register_flags + let register_flags hunk ./Distribution/Simple/Register.hs 162 - [installedPkgConfigFile] + [instConf] hunk ./Distribution/Simple/Register.hs 169 - ["--input-file="++installedPkgConfigFile] + ["--input-file="++instConf] hunk ./Distribution/Simple/Register.hs 174 - let pkgTool = compilerPkgTool (compiler lbi) + let pkgTool = case regWithHcPkg regFlags of + Just f -> f + Nothing -> compilerPkgTool (compiler lbi) hunk ./Distribution/Simple/Register.hs 179 - then rawSystemPipe regScriptLocation verbose - (showInstalledConfig pkg_descr lbi) + then do cfg <- showInstalledConfig pkg_descr lbi inplace + rawSystemPipe regScriptLocation verbose cfg hunk ./Distribution/Simple/Register.hs 185 + when inplace $ die "--inplace is not supported with Hugs" hunk ./Distribution/Simple/Register.hs 197 --- |Register doesn't drop the register info file, it must be done in a separate step. -writeInstalledConfig :: PackageDescription -> LocalBuildInfo -> IO () -writeInstalledConfig pkg_descr lbi = do - let pkg_config = showInstalledConfig pkg_descr lbi - writeFile installedPkgConfigFile (pkg_config ++ "\n") +-- ----------------------------------------------------------------------------- +-- The installed package config + +-- |Register doesn't drop the register info file, it must be done in a +-- separate step. +writeInstalledConfig :: PackageDescription -> LocalBuildInfo -> Bool -> IO () +writeInstalledConfig pkg_descr lbi inplace = do + pkg_config <- showInstalledConfig pkg_descr lbi inplace + writeFile (if inplace then inplacePkgConfigFile else installedPkgConfigFile) + (pkg_config ++ "\n") hunk ./Distribution/Simple/Register.hs 209 -showInstalledConfig :: PackageDescription -> LocalBuildInfo -> String -showInstalledConfig pkg_descr lbi - = let hc = compiler lbi - in case compilerFlavor hc of - GHC | compilerVersion hc < Version [6,3] [] -> - showGHCPackageConfig (mkGHCPackageConfig pkg_descr lbi) - _ -> showInstalledPackageInfo (mkInstalledPackageInfo pkg_descr lbi) +showInstalledConfig :: PackageDescription -> LocalBuildInfo -> Bool + -> IO String +showInstalledConfig pkg_descr lbi inplace + | (case compilerFlavor hc of GHC -> True; _ -> False) && + compilerVersion hc < Version [6,3] [] + = if inplace then + error "--inplace not supported for GHC < 6.3" + else + return (showGHCPackageConfig (mkGHCPackageConfig pkg_descr lbi)) + | otherwise + = do cfg <- mkInstalledPackageInfo pkg_descr lbi inplace + return (showInstalledPackageInfo cfg) + where + hc = compiler lbi hunk ./Distribution/Simple/Register.hs 225 -removeInstalledConfig = try (removeFile installedPkgConfigFile) >> return () +removeInstalledConfig = do + try (removeFile installedPkgConfigFile) >> return () + try (removeFile inplacePkgConfigFile) >> return () hunk ./Distribution/Simple/Register.hs 232 +inplacePkgConfigFile :: String +inplacePkgConfigFile = ".inplace-pkg-config" + hunk ./Distribution/Simple/Register.hs 241 - -> InstalledPackageInfo -mkInstalledPackageInfo pkg_descr lbi - = let + -> Bool + -> IO InstalledPackageInfo +mkInstalledPackageInfo pkg_descr lbi inplace = do + pwd <- getCurrentDirectory + let hunk ./Distribution/Simple/Register.hs 248 - in - emptyInstalledPackageInfo{ + build_dir = pwd `joinFileName` buildDir lbi + -- + return + emptyInstalledPackageInfo{ hunk ./Distribution/Simple/Register.hs 265 - IPI.importDirs = [mkLibDir pkg_descr lbi NoCopyDest], - IPI.libraryDirs = (mkLibDir pkg_descr lbi NoCopyDest) : extraLibDirs bi, + IPI.importDirs = [if inplace then build_dir else + mkLibDir pkg_descr lbi NoCopyDest], + IPI.libraryDirs = (if inplace then build_dir else + mkLibDir pkg_descr lbi NoCopyDest) + : extraLibDirs bi, hunk ./Distribution/Simple/Register.hs 282 - } + } hunk ./Distribution/Simple/Register.hs 288 -unregister pkg_descr lbi (RegisterFlags user_unreg genScript verbose) = do +unregister pkg_descr lbi regFlags = do hunk ./Distribution/Simple/Register.hs 291 + genScript = regGenScript regFlags + verbose = regVerbose regFlags + user = regUser regFlags `userOverride` userConf lbi hunk ./Distribution/Simple/Register.hs 297 - if user_unreg + if user hunk ./Distribution/Simple/Register.hs 309 - rawSystemEmit unregScriptLocation genScript verbose (compilerPkgTool (compiler lbi)) + let pkgTool = case regWithHcPkg regFlags of + Just f -> f + Nothing -> compilerPkgTool (compiler lbi) + rawSystemEmit unregScriptLocation genScript verbose pkgTool hunk ./Distribution/Simple.hs 85 -import Distribution.Simple.Configure(LocalBuildInfo(..), getPersistBuildConfig, maybeGetPersistBuildConfig, - findProgram, configure, writePersistBuildConfig, +import Distribution.Simple.Configure(getPersistBuildConfig, maybeGetPersistBuildConfig, + configure, writePersistBuildConfig, hunk ./Distribution/Simple.hs 88 +import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..), distPref, srcPref) hunk ./Distribution/Simple.hs 92 - moduleToFilePath, findFile, distPref, srcPref) + moduleToFilePath, findFile) hunk ./Distribution/Simple.hs 105 -import Data.Maybe ( isNothing, isJust, fromJust ) +import Data.Maybe ( isJust, fromJust ) hunk ./Distribution/Simple.hs 273 - = do let pps = allSuffixHandlers hooks - case action of + = do case action of hunk ./Distribution/Simple.hs 326 - InstallCmd uInst -> do - (flags@(InstallFlags uInst verbose), _, args) <- parseInstallArgs (InstallFlags uInst 0) args [] + InstallCmd -> do + (flags, _, args) <- parseInstallArgs emptyInstallFlags args [] hunk ./Distribution/Simple.hs 335 - let srcPref = distPref `joinFileName` "src" hunk ./Distribution/Simple.hs 351 - RegisterCmd uInst genScript -> do - (flags, _, args) <- parseRegisterArgs (RegisterFlags uInst genScript 0) args [] + RegisterCmd -> do + (flags, _, args) <- parseRegisterArgs emptyRegisterFlags args [] hunk ./Distribution/Simple.hs 359 - UnregisterCmd uInst genScript -> do - (flags,_, args) <- parseUnregisterArgs (RegisterFlags uInst genScript 0) args [] + UnregisterCmd -> do + (flags,_, args) <- parseUnregisterArgs emptyRegisterFlags args [] hunk ./Distribution/Simple.hs 648 +defaultInstallHook :: PackageDescription -> LocalBuildInfo + -> Maybe UserHooks ->InstallFlags -> IO () hunk ./Distribution/Simple.hs 651 - let uInst = case uInstFlag of - InstallUserUser -> True - InstallUserGlobal -> False --over-rides configure setting - -- no flag, check how it was configured: - InstallUserNone -> userConf localbuildinfo hunk ./Distribution/Simple.hs 652 - when (hasLibs pkg_descr) - (register pkg_descr localbuildinfo (RegisterFlags uInst False verbose)) + when (hasLibs pkg_descr) $ + register pkg_descr localbuildinfo emptyRegisterFlags{ regUser=uInstFlag } hunk ./Distribution/Simple.hs 655 +defaultBuildHook :: PackageDescription -> LocalBuildInfo + -> Maybe UserHooks -> BuildFlags -> IO () hunk ./Distribution/Simple.hs 660 - writeInstalledConfig pkg_descr localbuildinfo + writeInstalledConfig pkg_descr localbuildinfo False hunk ./Distribution/Simple.hs 662 +defaultRegHook :: PackageDescription -> LocalBuildInfo + -> Maybe UserHooks -> RegisterFlags -> IO () hunk ./Cabal.cabal 39 + Distribution.Simple.GHC, hunk ./Cabal.cabal 41 + Distribution.Simple.Hugs, hunk ./Cabal.cabal 43 + Distribution.Simple.JHC, hunk ./Cabal.cabal 45 + Distribution.Simple.NHC, hunk ./package.conf.in 29 + Distribution.Simple.GHC, hunk ./package.conf.in 31 + Distribution.Simple.Hugs, hunk ./package.conf.in 33 + Distribution.Simple.JHC, hunk ./package.conf.in 35 + Distribution.Simple.NHC, adddir ./cabal-setup addfile ./cabal-setup/CabalSetup.hs hunk ./cabal-setup/CabalSetup.hs 1 +{-# OPTIONS_GHC -cpp #-} +----------------------------------------------------------------------------- +-- | +-- Module : CabalSetup +-- Copyright : (c) The University of Glasgow 2006 +-- +-- Maintainer : http://hackage.haskell.org/trac/hackage +-- Stability : alpha +-- Portability : portable +-- +-- The user interface to building and installing Cabal packages. + +module Main (main) where + +import Distribution.Simple +import Distribution.Simple.Utils +import Distribution.Simple.Configure + ( configCompiler, getInstalledPackages, + configDependency ) +import Distribution.Setup ( reqPathArg ) +import Distribution.PackageDescription + ( readPackageDescription, + PackageDescription(..) ) +import System.Console.GetOpt +import System.Environment +import Control.Monad ( when ) +import System.Directory ( doesFileExist ) + +main = do + args <- getArgs + + -- read the .cabal file + -- - attempt to find the version of Cabal required + + -- if there's a Setup script, + -- - if we find GHC, + -- - build it with the right version of Cabal + -- - invoke it with args + -- - if we find runhaskell (TODO) + -- - use runhaskell to invoke it + -- otherwise, + -- - behave like a boilerplate Setup.hs + -- + -- Later: + -- - add support for multiple packages, by figuring out + -- dependencies here and building/installing the sub packages + -- in the right order. + + pkg_descr_file <- defaultPackageDesc + pkg_descr <- readPackageDescription pkg_descr_file + + let (flag_fn, non_opts, unrec_opts, errs) = getOpt' Permute opts args + when (not (null errs)) $ die (unlines errs) + let flags = foldr (.) id flag_fn defaultFlags + + comp <- configCompiler (Just GHC) (withCompiler flags) (withHcPkg flags) 0 + cabal_flag <- configCabalFlag flags (descCabalVersion pkg_descr) comp + + let + trySetupScript f on_fail = do + b <- doesFileExist f + if not b then on_fail else do + rawSystemExit (verbose flags) + (compilerPath comp) + (cabal_flag ++ + ["--make", f, "-o", "setup", "-v"++show (verbose flags)]) + rawSystemExit (verbose flags) + ('.':pathSeparator:"setup") + args + + trySetupScript "Setup.hs" $ do + trySetupScript "Setup.lhs" $ do + trySetupScript ".Setup.hs" $ do + + -- Setup.hs doesn't exist, we need to behave like defaultMain + if descCabalVersion pkg_descr == AnyVersion + then defaultMain + -- doesn't matter which version we use, so no need to compile + -- a special Setup.hs. + else do writeFile ".Setup.hs" + "import Distribution.Simple; main=defaultMain" + trySetupScript ".Setup.hs" $ error "panic! shouldn't happen" + +data Flags + = Flags { + withCompiler :: Maybe FilePath, + withHcPkg :: Maybe FilePath, + verbose :: Int + } + +defaultFlags = Flags { + withCompiler = Nothing, + withHcPkg = Nothing, + verbose = 0 + } + +setWithCompiler f flags = flags{ withCompiler=f } +setWithHcPkg f flags = flags{ withHcPkg=f } +setVerbose v flags = flags{ verbose=v } + +opts :: [OptDescr (Flags -> Flags)] +opts = [ + Option "w" ["with-compiler"] (reqPathArg (setWithCompiler.Just)) + "give the path to a particular compiler", + Option "" ["with-hc-pkg"] (reqPathArg (setWithHcPkg.Just)) + "give the path to the package tool", + Option "v" ["verbose"] (OptArg (setVerbose . maybe 3 read) "n") "Control verbosity (n is 0--5, normal verbosity level is 1, -v alone is equivalent to -v3)" + ] + +noSetupScript = error "noSetupScript" + +configCabalFlag :: Flags -> VersionRange -> Compiler -> IO [String] +configCabalFlag flags AnyVersion _ = return [] +configCabalFlag flags range comp = do + ipkgs <- getInstalledPackages comp True (verbose flags) + -- user packages are *allowed* here, no portability problem + cabal_pkgid <- configDependency ipkgs (Dependency "Cabal" range) + return ["-package", showPackageId cabal_pkgid] + +pathSeparator :: Char +#if mingw32_HOST_OS || mingw32_TARGET_OS +pathSeparator = '\\' +#else +pathSeparator = '/' +#endif addfile ./cabal-setup/Setup.hs hunk ./cabal-setup/Setup.hs 1 +import Distribution.Simple; main=defaultMain addfile ./cabal-setup/cabal-setup.cabal hunk ./cabal-setup/cabal-setup.cabal 1 +Name: cabal-setup +Version: 1.1.4 +Copyright: 2005, Simon Marlow +Build-depends: Cabal >= 1.1.4, base +License: BSD3 +License-File: ../LICENSE +Author: Simon Marlow +Maintainer: http://hackage.haskell.org/trac/hackage/ +Homepage: http://www.haskell.org/cabal/ +Category: Distribution +Synopsis: The user interface for building and installing Cabal packages +Description: + cabal-setup is the user interface to Cabal. It provides the + basic commands for configuring, building, and installing + Cabal packages. + +Executable: cabal-setup +Main-is: CabalSetup.hs hunk ./Distribution/Setup.hs 386 - (_, cname:cargs, _, []) -> do + (_, cname:cargs, extra_args, []) -> do hunk ./Distribution/Setup.hs 388 - Just cmd -> return (cmdAction cmd,cargs) + Just cmd -> return (cmdAction cmd, extra_args ++ cargs) hunk ./Distribution/GetOpt.hs 169 - procNextOpt (NonOpt x) RequireOrder = ([],x:rest,us,[]) + procNextOpt (NonOpt x) RequireOrder = ([],x:rest,[],[]) hunk ./Distribution/PackageDescription.hs 211 + installIncludes :: [FilePath], -- ^ .h files to install with the package hunk ./Distribution/PackageDescription.hs 231 + installIncludes = [], hunk ./Distribution/PackageDescription.hs 321 + installIncludes = combine installIncludes, hunk ./Distribution/PackageDescription.hs 449 + , listField "install-includes" + showFilePath parseFilePathQ + includes (\paths binfo -> binfo{installIncludes=paths}) hunk ./Distribution/PackageDescription.hs 740 + "Install-Includes: /easily/unclose, /me, \"funky, path\\\\name\"", hunk ./Distribution/PackageDescription.hs 801 + installIncludes = ["/easily/unclose", "/me", "funky, path\\name"], hunk ./Distribution/Simple/GHC.hs 52 - ( LocalBuildInfo(..), autogenModulesDir ) + ( LocalBuildInfo(..), autogenModulesDir, + mkLibDir, mkIncludeDir ) hunk ./Distribution/Simple/GHC.hs 68 - splitFilePath, objExtension, joinPaths ) + splitFilePath, objExtension, joinPaths, + isAbsolutePath ) hunk ./Distribution/Simple/GHC.hs 78 -import System.Directory ( removeFile, getDirectoryContents ) +import System.Directory ( removeFile, getDirectoryContents, + doesFileExist ) hunk ./Distribution/Simple/GHC.hs 288 - ++ [ "-#include \"" ++ inc ++ "\"" | inc <- includes bi ] + ++ [ "-#include \"" ++ inc ++ "\"" | inc <- includes bi ++ installIncludes bi ] hunk ./Distribution/Simple/GHC.hs 332 + installIncludeFiles verbose pd pref + hunk ./Distribution/Simple/GHC.hs 355 +-- | Install the files listed in install-includes +installIncludeFiles :: Int -> PackageDescription -> FilePath -> IO () +installIncludeFiles verbose pkg_descr@PackageDescription{library=Just l} libdir + = do + createDirectoryIfMissing True incdir + incs <- mapM (findInc relincdirs) (installIncludes lbi) + sequence_ [ copyFileVerbose verbose path (incdir `joinFileName` f) + | (f,path) <- incs ] + where + relincdirs = filter (not.isAbsolutePath) (includeDirs lbi) + lbi = libBuildInfo l + incdir = mkIncludeDir libdir + + findInc [] f = die ("can't find include file " ++ f) + findInc (d:ds) f = do + let path = (d `joinFileName` f) + b <- doesFileExist path + if b then return (f,path) else findInc ds f + hunk ./Distribution/Simple/Hugs.hs 163 - let pkg_incs = ["\"" ++ inc ++ "\"" | inc <- includes bi] + let pkg_incs = ["\"" ++ inc ++ "\"" + | inc <- includes bi ++ installIncludes bi] hunk ./Distribution/Simple/LocalBuildInfo.hs 56 - distPref, srcPref, autogenModulesDir, + distPref, srcPref, autogenModulesDir, mkIncludeDir hunk ./Distribution/Simple/LocalBuildInfo.hs 127 +-- |The place where install-includes are installed, relative to libdir +mkIncludeDir :: FilePath -> FilePath +mkIncludeDir = (`joinFileName` "include") + hunk ./Distribution/Simple/Register.hs 65 -import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..), mkLibDir) +import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..), mkLibDir, + mkIncludeDir) hunk ./Distribution/Simple/Register.hs 86 -import Distribution.Compat.FilePath (joinFileName) +import Distribution.Compat.FilePath (joinFileName, splitFileName, + isAbsolutePath) hunk ./Distribution/Simple/Register.hs 94 +import Data.List (partition) hunk ./Distribution/Simple/Register.hs 252 + libdir = mkLibDir pkg_descr lbi NoCopyDest + incdir = mkIncludeDir libdir + (absinc,relinc) = partition isAbsolutePath (includeDirs bi) hunk ./Distribution/Simple/Register.hs 271 - IPI.importDirs = [if inplace then build_dir else - mkLibDir pkg_descr lbi NoCopyDest], - IPI.libraryDirs = (if inplace then build_dir else - mkLibDir pkg_descr lbi NoCopyDest) + IPI.importDirs = [if inplace then build_dir else libdir], + IPI.libraryDirs = (if inplace then build_dir else libdir) hunk ./Distribution/Simple/Register.hs 276 - IPI.includeDirs = includeDirs bi, - IPI.includes = includes bi, + IPI.includeDirs = absinc + ++ if inplace + then map (pwd `joinFileName`) relinc + else [incdir], + IPI.includes = includes bi ++ map (snd.splitFileName) + (installIncludes bi), hunk ./Distribution/Simple/Build.hs 78 + +#ifdef mingw32_HOST_OS +import Distribution.PackageDescription (hasLibs) +#endif hunk ./Distribution/Simple/Configure.hs 97 +#ifdef mingw32_HOST_OS +import Distribution.PackageDescription (hasLibs) +#endif hunk ./Distribution/Simple/GHC.hs 80 + +#ifdef mingw32_HOST_OS +import Distribution.Compat.FilePath ( splitFileName ) +#endif + hunk ./Distribution/Simple/LocalBuildInfo.hs 67 +import Data.Maybe (fromMaybe) +import Distribution.PackageDescription (hasLibs) hunk ./doc/Cabal.xml 767 - A list of header files from standard - include directories or those listed in - include-dirs, to be included in any - compilations via C. These files typically contain - function prototypes for foreign imports used by the - package. + A list of header files already installed on the + system (i.e. not part of this package) to be included in + any compilations via C. These files typically contain + function prototypes for foreign imports used by the + package. + + + + + + install-includes: + filename list + + + A list of header files from this package to be + included in any compilations via C. These header files + will be installed into + $(libdir)/includes when the package + is installed. Files listed in + install-includes: should be found in + one of the directories listed in + include-dirs. + + install-includes is typically + used to name header files that contain prototypes for + foreign imports used in Haskell code in this package, + for which the C implementations are also provided with + the package. hunk ./doc/Cabal.xml 805 - both when using a C preprocessor and when compiling + when preprocessing with c2hs, + hsc2hs, ffihugs, + cpphs, or the C preprocessor, and also when compiling hunk ./doc/Cabal.xml 1750 + + + + + Registers the package for use directly from the + build tree, without needing to install it. This can be + useful for testing: there's no need to install the package + after modifying it, just recompile and test. + + However, there are some caveats. It only works with + GHC (currently). It only works if your package doesn't + depend on having any supplemental files installed - plain + Haskell libraries should be fine. + hunk ./doc/Cabal.xml 1765 + + + =path + + Specify the path to the package tool, e.g. + ghc-pkg. This overrides the + hc-pkg tool discovered during + configure. + + hunk ./Distribution/Compiler.hs 166 - extensionToJHCFlag CPP = Right "-f cpp" + extensionToJHCFlag CPP = Right "-fcpp" hunk ./Distribution/Simple/JHC.hs 84 - rawSystemExit verbose jhcPath ["--build-hl="++hlfile,pfile] + rawSystemExit verbose jhcPath ["--build-hl="++pfile, "-o", hlfile] adddir ./Network adddir ./Network/Hackage adddir ./Network/Hackage/CabalGet adddir ./cabal-get adddir ./dependencies adddir ./dependencies/Crypto-2.0.0 adddir ./dependencies/Crypto-2.0.0/Codec adddir ./dependencies/Crypto-2.0.0/Codec/ASN1 adddir ./dependencies/Crypto-2.0.0/Codec/Binary adddir ./dependencies/Crypto-2.0.0/Codec/Encryption adddir ./dependencies/Crypto-2.0.0/Codec/Encryption/RSA adddir ./dependencies/Crypto-2.0.0/Data adddir ./dependencies/Crypto-2.0.0/Data/Digest adddir ./dependencies/GnuPG-0.1.1 adddir ./dependencies/GnuPG-0.1.1/src adddir ./dependencies/GnuPG-0.1.1/src/System adddir ./dependencies/HTTP-2005.5.5 adddir ./dependencies/HTTP-2005.5.5/Network adddir ./dependencies/HTTP-2005.5.5/debian adddir ./dependencies/HTTP-2005.5.5/test adddir ./dependencies/HaXml-1.2 adddir ./dependencies/HaXml-1.2/docs adddir ./dependencies/HaXml-1.2/docs/HaXml adddir ./dependencies/HaXml-1.2/examples adddir ./dependencies/HaXml-1.2/examples/OpenOffice.org adddir ./dependencies/HaXml-1.2/examples/SMIL adddir ./dependencies/HaXml-1.2/src adddir ./dependencies/HaXml-1.2/src/Text adddir ./dependencies/HaXml-1.2/src/Text/ParserCombinators adddir ./dependencies/HaXml-1.2/src/Text/PrettyPrint adddir ./dependencies/HaXml-1.2/src/Text/XML adddir ./dependencies/HaXml-1.2/src/Text/XML/HaXml adddir ./dependencies/HaXml-1.2/src/Text/XML/HaXml/DtdToHaskell adddir ./dependencies/HaXml-1.2/src/Text/XML/HaXml/Html adddir ./dependencies/HaXml-1.2/src/Text/XML/HaXml/Xtract adddir ./dependencies/HaXml-1.2/src/tools adddir ./dependencies/NewBinary-0.1 adddir ./dependencies/NewBinary-0.1/NewBinary adddir ./dependencies/NewBinary-0.1/Tests adddir ./dependencies/NewBinary-0.1/debian adddir ./dependencies/XmlRpc-2005.5.5 adddir ./dependencies/XmlRpc-2005.5.5/Network adddir ./dependencies/XmlRpc-2005.5.5/Network/XmlRpc adddir ./dependencies/XmlRpc-2005.5.5/test adddir ./dependencies/XmlRpc-2005.5.5/test/quickcheck adddir ./dependencies/hackage-client-0.1.0 adddir ./dependencies/hackage-client-0.1.0/Network adddir ./dependencies/hackage-client-0.1.0/Network/Hackage hunk ./Cabal.cabal 6 -Build-Depends: base +Build-Depends: base, mtl, network, parsec hunk ./Cabal.cabal 50 - Language.Haskell.Extension -Other-Modules: + Language.Haskell.Extension, hunk ./Cabal.cabal 55 - Distribution.Compat.RawSystem -Extensions: CPP + Distribution.Compat.RawSystem, + Network.Hackage.CabalGet.BuildDep, + Network.Hackage.CabalGet.Clean, + Network.Hackage.CabalGet.Config, + Network.Hackage.CabalGet.Configure, + Network.Hackage.CabalGet.Dependency, + Network.Hackage.CabalGet.Fetch, + Network.Hackage.CabalGet.Info, + Network.Hackage.CabalGet.Install, + Network.Hackage.CabalGet.Main, + Network.Hackage.CabalGet.Setup, + Network.Hackage.CabalGet.TarUtils, + Network.Hackage.CabalGet.Types, + Network.Hackage.CabalGet.Update, + Network.Hackage.Client, + Network.Hackage.Interface, + Network.Hackage.Version +Extensions: CPP, OverlappingInstances, TypeSynonymInstances, TemplateHaskell +GHC-options: -idependencies/hackage-client-0.1.0 -idependencies/XmlRpc-2005.5.5 -idependencies/Crypto-2.0.0 -idependencies/GnuPG-0.1.1 -idependencies/HaXml-1.2/src -idependencies/HTTP-2005.5.5 -idependencies/NewBinary-0.1 hunk ./Distribution/Simple/GHC.hs 284 - ++ hcOptions GHC (options bi) hunk ./Distribution/Simple/GHC.hs 295 - + ++ hcOptions GHC (options bi) hunk ./Makefile 16 -HCBASE=/usr/bin/ +HCBASE=/usr/local/bin/ hunk ./Makefile 51 - cd cabal-install && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install + cd cabal-install && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i.. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install + cd cabal-get && mkdir -p dist/tmp && $(HC) $(GHCFLAGS) -i. -odir dist/tmp -hidir dist/tmp Setup.lhs -o setup && ./setup configure --ghc --prefix=$(PREF) && ./setup build && ./setup install addfile ./Network/Hackage/CabalGet/BuildDep.hs hunk ./Network/Hackage/CabalGet/BuildDep.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.BuildDep +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- High level interface to a specialized instance of package installation. +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.BuildDep where + +import Network.Hackage.CabalGet.Dependency (getPackages, getBuildDeps, resolveDependenciesAux) +import Network.Hackage.CabalGet.Install (installPkg) +import Network.Hackage.CabalGet.Types (ConfigFlags (..), UnresolvedDependency) + +import Distribution.Simple.Configure (getInstalledPackages) + +{-| + This function behaves exactly like 'Network.Hackage.CabalGet.Install.install' except + that it only builds the dependencies for packages. +-} +buildDep :: ConfigFlags -> [String] -> [UnresolvedDependency] -> IO () +buildDep cfg globalArgs deps + = do ipkgs <- getInstalledPackages (configCompiler cfg) (configUser cfg) (configVerbose cfg) + apkgs <- fmap getPackages (fmap (getBuildDeps ipkgs) (resolveDependenciesAux cfg ipkgs deps)) + mapM_ (installPkg cfg globalArgs) apkgs addfile ./Network/Hackage/CabalGet/Clean.hs hunk ./Network/Hackage/CabalGet/Clean.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Clean +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Clean + ( clean + ) where + +import Network.Hackage.CabalGet.Types (ConfigFlags) +import Network.Hackage.CabalGet.Fetch (packagesDirectory) + +import System.Directory (removeDirectoryRecursive) + +-- | 'clean' removes all downloaded packages from the {config-dir}\/packages\/ directory. +clean :: ConfigFlags -> IO () +clean cfg + = removeDirectoryRecursive (packagesDirectory cfg) + addfile ./Network/Hackage/CabalGet/Config.hs hunk ./Network/Hackage/CabalGet/Config.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Config +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- Utilities for handling saved state such as known packages, known servers and downloaded packages. +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Config + ( packagesDirectoryName + , getKnownServers + , getKnownPackages + , writeKnownPackages + , selectValidConfigDir + ) where + +import Control.Monad.Error (mplus, filterM) -- Using Control.Monad.Error to get the Error instance for IO. +import System.Directory (Permissions (..), getPermissions) + +import Distribution.Package (PackageIdentifier) +import Distribution.Version (Dependency) +import Distribution.Compat.FilePath (joinFileName) + +import Network.Hackage.CabalGet.Types (ConfigFlags (..)) + +pkgListFile :: FilePath +pkgListFile = "pkg.list" + +servListFile :: FilePath +servListFile = "serv.list" + +-- |Name of the packages directory. +packagesDirectoryName :: FilePath +packagesDirectoryName = "packages" + +pkgList :: ConfigFlags -> FilePath +pkgList cfg = configConfPath cfg `joinFileName` pkgListFile + +servList :: ConfigFlags -> FilePath +servList cfg = configConfPath cfg `joinFileName` servListFile + +-- |Read the list of known packages from the pkg.list file. +getKnownPackages :: ConfigFlags -> IO [(PackageIdentifier,[Dependency],String)] +getKnownPackages cfg + = fmap read (readFile (pkgList cfg)) + `mplus` return [] + +-- |Write the list of known packages to the pkg.list file. +writeKnownPackages :: ConfigFlags -> [(PackageIdentifier,[Dependency],String)] -> IO () +writeKnownPackages cfg pkgs + = writeFile (pkgList cfg) (show pkgs) + +getKnownServers :: ConfigFlags -> IO [String] +getKnownServers cfg + = fmap read (readFile (servList cfg)) + `mplus` return [] + +-- |Confirms validity of a config directory by checking the permissions for the package-list file, +-- server-list file and downloaded packages directory. +isValidConfigDir :: FilePath -> IO Bool +isValidConfigDir path + = do checks <- sequence + [ checkFiles readable [ path + , path `joinFileName` servListFile ] + , checkFiles writable [ path + , path `joinFileName` pkgListFile + , path `joinFileName` packagesDirectoryName ]] + return (and checks) + +-- |Picks the first valid config directory or throws an exception if none were found. +selectValidConfigDir :: [FilePath] -> IO FilePath +selectValidConfigDir paths + = do valids <- filterM isValidConfigDir paths + case valids of + [] -> error "No valid config dir found!" + (x:_) -> return x + +checkFiles :: (Permissions -> Bool) -> [FilePath] -> IO Bool +checkFiles check + = worker + where worker [] = return True + worker (x:xs) + = do permissions <- getPermissions x + if check permissions + then worker xs + else return False + `mplus` worker xs addfile ./Network/Hackage/CabalGet/Configure.hs hunk ./Network/Hackage/CabalGet/Configure.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Configure +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- Functions used to generate ConfigFlags. +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Configure + ( defaultOutputGen + , mkConfigFlags + ) where + +import Control.Monad (guard, mplus, when) + +import Network.Hackage.CabalGet.Types (ConfigFlags (..), OutputGen (..) + , TempFlags (..), ResolvedPackage (..)) +import Network.Hackage.CabalGet.Config (getKnownServers, selectValidConfigDir) + +import qualified Distribution.Simple.Configure as Configure (findProgram, configCompiler) +import Distribution.ParseUtils (showDependency) +import Distribution.Package (showPackageId) +import Distribution.Compat.FilePath (joinFileName) + +import Text.Printf (printf) +import System.IO (openFile, IOMode (..)) +import System.Directory (getHomeDirectory, getAppUserDataDirectory) +import Data.Maybe (fromMaybe) + +{-| + Structure with default responses to various events. +-} +defaultOutputGen :: Int -> IO OutputGen +defaultOutputGen verbose + = do (outch,errch) <- do guard (verbose <= 1) + nullOut <- openFile "/dev/null" AppendMode + nullErr <- openFile "/dev/null" AppendMode + return (Just nullOut, Just nullErr) + `mplus` return (Nothing,Nothing) + return OutputGen + { prepareInstall = \_pkgs -> return () + , pkgIsPresent = printf "'%s' is present.\n" . showPackageId + , downloadingPkg = printf "Downloading '%s'\n" . showPackageId + , executingCmd = \cmd args + -> when (verbose > 0) $ printf "Executing: '%s %s'\n" cmd (unwords args) + , cmdFailed = \cmd args errno + -> error (printf "Command failed: '%s %s'. Errno: %d\n" cmd (unwords args) errno) + , buildingPkg = printf "Building '%s'\n" . showPackageId + , stepConfigPkg = const (printf " Configuring...\n") + , stepBuildPkg = const (printf " Building...\n") + , stepInstallPkg = const (printf " Installing...\n") + , stepFinishedPkg= const (printf " Done.\n") + , noSetupScript = const (error "Couldn't find a setup script in the tarball.") + , noCabalFile = const (error "Couldn't find a .cabal file in the tarball") + , gettingPkgList = \serv -> + when (verbose > 0) (printf "Downloading package list from server '%s'\n" serv) + , showPackageInfo = showPkgInfo + , showOtherPackageInfo = showOtherPkg + , cmdStdout = outch + , cmdStderr = errch + } + where showOtherPkg mbPkg dep + = do printf " Package: '%s'\n" (show $ showDependency dep) + case mbPkg of + Nothing -> printf " Not available!\n\n" + Just pkg -> do printf " Using: %s\n" (showPackageId pkg) + printf " Installed: Yes\n\n" + showPkgInfo mbPath installed ops dep (pkg,location,deps) + = do printf " Package: '%s'\n" (show $ showDependency dep) + printf " Using: %s\n" (showPackageId pkg) + printf " Installed: %s\n" (if installed then "Yes" else "No") + printf " Depends: %s\n" (showDeps deps) + printf " Options: %s\n" (unwords ops) + printf " Location: %s\n" location + printf " Local: %s\n\n" (fromMaybe "*Not downloaded" mbPath) + showDeps = show . map showDep + showDep dep = show (showDependency (fulfilling dep)) + + + + +findProgramOrDie :: String -> Maybe FilePath -> IO FilePath +findProgramOrDie name p = fmap (fromMaybe (error $ printf "No %s found." name)) (Configure.findProgram name p) + +-- |Compute the default prefix when doing a local install ('~/usr' on Linux). +localPrefix :: IO FilePath +localPrefix + = do home <- getHomeDirectory + return (home `joinFileName` "usr") + +-- |Compute the local config directory ('~/.cabal-get' on Linux). +localConfigDir :: IO FilePath +localConfigDir + = getAppUserDataDirectory "cabal-get" + +{-| + Give concrete answers to questions like: + + * where to find \'runhaskell\'. + + * where to find \'tar\'. + + * which compiler to use. + + * which config-directory to use. +-} +mkConfigFlags :: TempFlags -> IO ConfigFlags +mkConfigFlags cfg + = do runHc <- findProgramOrDie "runhaskell" (tempRunHc cfg) + tarProg <- findProgramOrDie "tar" (tempTarPath cfg) + comp <- Configure.configCompiler (tempHcFlavor cfg) (tempHcPath cfg) (tempHcPkg cfg) (tempVerbose cfg) + localConfig <- localConfigDir + prefix <- if tempUserIns cfg || tempUser cfg + then fmap Just (maybe localPrefix return (tempPrefix cfg)) + else return Nothing + confPath <- selectValidConfigDir ( maybe id (:) (tempConfPath cfg) + ["/etc/cabal-get" + ,localConfig] ) + printf "Using config dir: %s\n" confPath + outputGen <- defaultOutputGen (tempVerbose cfg) + let config = ConfigFlags + { configCompiler = comp + , configConfPath = confPath + , configPrefix = prefix + , configServers = [] + , configTarPath = tarProg + , configRunHc = runHc + , configOutputGen = outputGen + , configVerbose = tempVerbose cfg +-- , configUpgradeDeps = tempUpgradeDeps cfg + , configUser = tempUser cfg + , configUserIns = tempUserIns cfg || tempUser cfg + } + knownServers <- getKnownServers config + return (config{ configServers = knownServers ++ tempServers cfg}) + addfile ./Network/Hackage/CabalGet/Dependency.hs hunk ./Network/Hackage/CabalGet/Dependency.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Dependency +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- Various kinds of dependency resolution and utilities. +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Dependency + ( + -- * Dependency resolution + resolveDependencies + , resolveDependenciesAux + -- * Utilities + , getPackages -- :: [ResolvedPackage] -> [(PackageIdentifier,[String],String)] + , getBuildDeps -- :: [PackageIdentifier] -> [ResolvedPackage] -> [ResolvedPackage] + , filterFetchables -- :: [ResolvedPackage] -> [(PackageIdentifier,String)] + , fulfillDependency -- :: Dependency -> PackageIdentifier -> Bool + ) where + +import Distribution.Version (Dependency(..), withinRange) +import Distribution.Package (PackageIdentifier(..)) +import Distribution.ParseUtils (showDependency) + +import Network.Hackage.Interface +import Data.List (nub, maximumBy) +import Data.Maybe (mapMaybe) +import Control.Monad (guard) + +import Network.Hackage.CabalGet.Config (getKnownPackages) +import Network.Hackage.CabalGet.Types ( ResolvedPackage(..), UnresolvedDependency(..) + , ConfigFlags (..)) +import Text.Printf (printf) + + +-- |Flattens a list of dependencies, filtering out installed packages. +-- Packages dependencies are placed before the packages and duplicate entries +-- are removed. +flattenDepList :: [PackageIdentifier] -- ^List of installed packages. + -> [ResolvedPackage] -- ^List of resolved packages. + -> [ResolvedPackage] +flattenDepList ps deps + = nub $ worker deps + where isBeingInstalled dep + = not . null $ flip mapMaybe deps $ \rpkg -> do (pkg,_,_) <- resolvedData rpkg + guard (fulfillDependency dep pkg) + worker [] = [] + worker (pkgInfo:xs) + = case getInstalledPkg ps (fulfilling pkgInfo) of + Just _pkg -> worker xs + Nothing + -> case resolvedData pkgInfo of + Just (_pkg,_location,subDeps) + -> worker (filter (not.isBeingInstalled.fulfilling) subDeps) ++ pkgInfo:worker xs + Nothing + -> pkgInfo:worker xs + +-- |Flattens a dependency list while only keeping the dependencies of the packages. +-- This is used for installing all the dependencies of a package but not the package itself. +getBuildDeps :: [PackageIdentifier] -> [ResolvedPackage] + -> [ResolvedPackage] +getBuildDeps ps deps + = nub $ concatMap worker deps + where worker pkgInfo + = case getInstalledPkg ps (fulfilling pkgInfo) of + Just _pkg -> [] + Nothing -> case resolvedData pkgInfo of + Just (_pkg,_location,subDeps) + -> flattenDepList ps subDeps + Nothing -> [] + +{- +getReverseDeps :: [PackageIdentifier] -- All installed packages. + -> [(PackageIdentifier,[Dependency],String)] -- Known packages. + -> [(PackageIdentifier,[Dependency],String)] -- Resolved and installed packages. + -> [(PackageIdentifier,[String],String)] -- Packages to be installed. + -> [(PackageIdentifier,[String],String)] +getReverseDeps ps knownPkgs ipkgs toBeInstalled + = nub $ concatMap resolve $ filter depends ipkgs + where depends (_pkg,deps,_location) + = or (map (\dep -> or (map (\(p,_,_) -> fulfillDependency dep p) toBeInstalled)) deps) + resolve (pkg,deps,location) + = let resolveDep dep + = case find (\(p,_,_) -> fulfillDependency dep p) knownPkgs of + Just (pkg,_,location) -> Just (pkg,[],location) + Nothing + | pkg `elem` ps -> Nothing + | otherwise -> error "Urk!" + in mapMaybe resolveDep deps ++ [(pkg,[],location)] + +-- |Find the dependencies and location for installed packages. +-- Packages not located on a Hackage server will be filtered out. +filterInstalledPkgs :: [PackageIdentifier] -> [(PackageIdentifier,[Dependency],String)] + -> [(PackageIdentifier,[Dependency],String)] +filterInstalledPkgs ipkgs knownPkgs + = filter worker knownPkgs + where worker (pkg,_deps,_location) + = pkg `elem` ipkgs +-} + +depToUnresolvedDep :: Dependency -> UnresolvedDependency +depToUnresolvedDep dep + = UnresolvedDependency + { dependency = dep + , depOptions = [] } + +resolvedDepToResolvedPkg :: (Dependency,Maybe ResolvedDependency) -> ResolvedPackage +resolvedDepToResolvedPkg (dep,rDep) + = ResolvedPackage + { fulfilling = dep + , resolvedData = rData + , pkgOptions = [] } + where rData = do ResolvedDependency pkg location subDeps <- rDep + return ( pkg + , location + , map resolvedDepToResolvedPkg subDeps ) + + +-- |Locates a @PackageIdentifier@ which satisfies a given @Dependency@. +-- Fails with "cannot satisfy dependency: %s." where %s == the given dependency. +getInstalledPkg :: (Monad m) => [PackageIdentifier] -> Dependency -> m PackageIdentifier +getInstalledPkg ps dep + = case filter (fulfillDependency dep) ps of + [] -> fail $ printf "cannot satisfy dependency: %s." (show (showDependency dep)) + qs -> let pkg = maximumBy versions qs + versions a b = pkgVersion a `compare` pkgVersion b + in return pkg + +-- |Evaluates to @True@ if the given @Dependency@ is satisfied by the given @PackageIdentifer@. +fulfillDependency :: Dependency -> PackageIdentifier -> Bool +fulfillDependency (Dependency depName vrange) pkg + = pkgName pkg == depName && pkgVersion pkg `withinRange` vrange + +getDependency :: [(PackageIdentifier,[Dependency],String)] + -> UnresolvedDependency -> ResolvedPackage +getDependency ps (UnresolvedDependency { dependency=dep@(Dependency pkgname vrange) + , depOptions=opts}) + = case filter ok ps of + [] -> ResolvedPackage + { fulfilling = dep + , resolvedData = Nothing + , pkgOptions = opts } + qs -> let (pkg,deps,location) = maximumBy versions qs + versions (a,_,_) (b,_,_) = pkgVersion a `compare` pkgVersion b + in ResolvedPackage + { fulfilling = dep + , resolvedData = Just ( pkg + , location + , (map (getDependency ps) (map depToUnresolvedDep deps))) + , pkgOptions = opts } + where ok (p,_,_) = pkgName p == pkgname && pkgVersion p `withinRange` vrange + +-- |Get the PackageIdentifier, build options and location from a list of resolved packages. +-- Throws an exception if a package couldn't be resolved. +getPackages :: [ResolvedPackage] -> [(PackageIdentifier,[String],String)] +getPackages = map worker + where worker dep + = case resolvedData dep of + Nothing + -> error $ printf "Couldn't satisfy dependency: '%s'." (show $ showDependency (fulfilling dep)) + Just (pkg,location,_) + -> (pkg,pkgOptions dep,location) + +-- |List all packages which can be fetched. +filterFetchables :: [ResolvedPackage] -> [(PackageIdentifier,String)] +filterFetchables = mapMaybe worker + where worker dep = do (pkg,location,_) <- resolvedData dep + return (pkg,location) + + +-- |Resolve some dependencies from the known packages while filtering out installed packages. +-- The result hasn't been modified to put the dependencies in front of the packages. +resolveDependenciesAux :: ConfigFlags + -> [PackageIdentifier] -- ^Installed packages. + -> [UnresolvedDependency] -- ^Dependencies in need of resolution. + -> IO [ResolvedPackage] +resolveDependenciesAux cfg ps deps + = do knownPkgs <- getKnownPackages cfg + let resolved = map (resolve knownPkgs) (filter isNotInstalled deps) + return resolved + where isNotInstalled pkgDep = not (or (map (fulfillDependency (dependency pkgDep)) ps)) + resolve pkgs dep + = let rDep = getDependency pkgs dep + in case resolvedData rDep of + Nothing -> resolvedDepToResolvedPkg (dependency dep,Nothing) + _ -> rDep + +-- |Resolve some dependencies from the known packages while filtering out installed packages. +-- The result has been modified to put the dependencies in front of the packages. +resolveDependencies :: ConfigFlags + -> [PackageIdentifier] -- ^Installed packages. + -> [UnresolvedDependency] -- ^Dependencies in need of resolution. + -> IO [ResolvedPackage] +resolveDependencies cfg ps deps + = fmap (flattenDepList ps) (resolveDependenciesAux cfg ps deps) addfile ./Network/Hackage/CabalGet/Fetch.hs hunk ./Network/Hackage/CabalGet/Fetch.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Fetch +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Fetch + ( + -- * Commands + fetch + , -- * Utilities + fetchPackage + , packageFile + , packagesDirectory + , isFetched + ) where + +import Network.URI (URI,parseURI) +import Network.HTTP (ConnError(..), Request (..), simpleHTTP + , Response(..), RequestMethod (..)) + +import Control.Monad (filterM) +import Text.Printf (printf) +import System.Directory (doesFileExist, createDirectoryIfMissing) + +import Network.Hackage.CabalGet.Types (ConfigFlags (..), OutputGen (..), UnresolvedDependency (..)) +import Network.Hackage.CabalGet.Config (packagesDirectoryName) +import Network.Hackage.CabalGet.Dependency (filterFetchables, resolveDependencies) + +import Distribution.Package (PackageIdentifier, showPackageId) +import Distribution.Compat.FilePath (joinFileName) +import Text.ParserCombinators.ReadP (readP_to_S) +import Distribution.ParseUtils (parseDependency) + + +downloadURI :: FilePath -- ^ Where to put it + -> URI -- ^ What to download + -> IO (Maybe ConnError) +downloadURI path uri + = do eitherResult <- simpleHTTP request + case eitherResult of + Left err -> return (Just err) + Right rsp + | rspCode rsp == (2,0,0) -> writeFile path (rspBody rsp) >> return Nothing + | otherwise -> return (Just (ErrorMisc ("Invalid HTTP code: " ++ show (rspCode rsp)))) + where request = Request uri GET [] "" + + +downloadFile :: FilePath + -> String + -> IO (Maybe ConnError) +downloadFile path url + = case parseURI url of + Just parsed -> downloadURI path parsed + Nothing -> return (Just (ErrorMisc ("Failed to parse url: " ++ show url))) + + +-- Downloads a package to [config-dir/packages/package-id] and returns the path to the package. +downloadPackage :: ConfigFlags -> PackageIdentifier -> String -> IO String +downloadPackage cfg pkg url + = do mbError <- downloadFile path url + case mbError of + Just err -> error $ printf "Failed to download '%s': %s" (showPackageId pkg) (show err) + Nothing -> return path + where path = configConfPath cfg `joinFileName` packagesDirectoryName `joinFileName` showPackageId pkg + +-- |Full path to the packages directory. +packagesDirectory :: ConfigFlags -> FilePath +packagesDirectory cfg = configConfPath cfg `joinFileName` packagesDirectoryName + +-- |Generate the full path to a given @PackageIdentifer@. +packageFile :: ConfigFlags -> PackageIdentifier -> FilePath +packageFile cfg pkg = packagesDirectory cfg `joinFileName` (showPackageId pkg) + +-- |Returns @True@ if the package has already been fetched. +isFetched :: ConfigFlags -> PackageIdentifier -> IO Bool +isFetched cfg pkg + = doesFileExist (packageFile cfg pkg) + +-- |Fetch a package if we don't have it already. +fetchPackage :: ConfigFlags -> PackageIdentifier -> String -> IO String +fetchPackage cfg pkg location + = do createDirectoryIfMissing True (packagesDirectory cfg) + fetched <- isFetched cfg pkg + if fetched + then return (packageFile cfg pkg) + else downloadPackage cfg pkg location + +-- |Fetch a list of packages and their dependencies. +fetch :: ConfigFlags -> [String] -> IO () +fetch cfg pkgs + = do apkgs <- fmap filterFetchables (resolveDependencies cfg [] (map parseDep pkgs)) + mapM_ (\(pkg,location) + -> do downloadingPkg output pkg + fetchPackage cfg pkg location + ) =<< filterM isNotFetched apkgs + where parseDep dep + = case readP_to_S parseDependency dep of + [] -> error ("Failed to parse package dependency: " ++ show dep) + x -> UnresolvedDependency + { dependency = (fst (last x)) + , depOptions = [] } + isNotFetched (pkg,_location) + = do fetched <- isFetched cfg pkg + pkgIsPresent output pkg + return (not fetched) + output = configOutputGen cfg addfile ./Network/Hackage/CabalGet/Info.hs hunk ./Network/Hackage/CabalGet/Info.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Info +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- High level interface to a dry-run package installation. +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Info where + +import Network.Hackage.CabalGet.Dependency (resolveDependencies, fulfillDependency) +import Network.Hackage.CabalGet.Fetch (isFetched, packageFile) +import Network.Hackage.CabalGet.Types (ConfigFlags(..), ResolvedPackage(..) + ,UnresolvedDependency(..), OutputGen(..)) + +import Distribution.Package (PackageIdentifier) +import Distribution.Simple.Configure (getInstalledPackages) + +import Data.Maybe (listToMaybe) + +info :: ConfigFlags -> [String] -> [UnresolvedDependency] -> IO () +info cfg globalArgs deps + = do ipkgs <- getInstalledPackages (configCompiler cfg) (configUser cfg) (configVerbose cfg) + apkgs <- resolveDependencies cfg [] deps + mapM_ (infoPkg cfg ipkgs globalArgs) apkgs + +{-| + 'infoPkg' displays various information about a package. + This information can be used to figure out what packages will be installed, from where they'll be downloaded + and what options will be parsed to them. +-} +infoPkg :: ConfigFlags -> [PackageIdentifier] -> [String] -> ResolvedPackage -> IO () +infoPkg cfg ipkgs _ (ResolvedPackage { fulfilling = dep + , resolvedData = Nothing }) + = showOtherPackageInfo output installedPkg dep + where installedPkg = listToMaybe (filter (fulfillDependency dep) ipkgs) + output = configOutputGen cfg +infoPkg cfg ipkgs globalArgs (ResolvedPackage { fulfilling = dep + , pkgOptions = ops + , resolvedData = (Just (pkg,location,deps)) }) + = do fetched <- isFetched cfg pkg + let pkgFile = if fetched then Just (packageFile cfg pkg) else Nothing + showPackageInfo output pkgFile isInstalled (globalArgs ++ ops) dep (pkg,location,deps) + where output = configOutputGen cfg + isInstalled = pkg `elem` ipkgs addfile ./Network/Hackage/CabalGet/Install.hs hunk ./Network/Hackage/CabalGet/Install.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Install +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- High level interface to package installation. +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Install + ( install -- :: ConfigFlags -> [UnresolvedDependency] -> IO () + , installPkg -- :: ConfigFlags -> (PackageIdentifier,[String],String) -> IO () + ) where + + +import Control.Exception (bracket_) + +import Network.Hackage.CabalGet.Dependency (getPackages, resolveDependencies) +import Network.Hackage.CabalGet.Fetch (isFetched, packageFile, fetchPackage) +import Network.Hackage.CabalGet.Types (ConfigFlags(..), UnresolvedDependency(..) + ,OutputGen(..)) +import Network.Hackage.CabalGet.TarUtils + +import Distribution.Simple.Configure (getInstalledPackages) +import Distribution.Package (showPackageId, PackageIdentifier) +import Distribution.Compat.FilePath (joinFileName, splitFileName) + +import Text.Printf (printf) +import System.Directory (getTemporaryDirectory, createDirectoryIfMissing + ,removeDirectoryRecursive, copyFile) +import System.Process (runProcess, waitForProcess, terminateProcess) +import System.Exit (ExitCode(..)) +import System.Posix.Signals + +-- |Installs the packages needed to satisfy a list of dependencies. +install :: ConfigFlags -> [String] -> [UnresolvedDependency] -> IO () +install cfg globalArgs deps + = do ipkgs <- getInstalledPackages (configCompiler cfg) (configUser cfg) (configVerbose cfg) + apkgs <- fmap getPackages (resolveDependencies cfg ipkgs deps) + mapM_ (installPkg cfg globalArgs) apkgs + +-- Fetch a package and output nice messages. +downloadPkg :: ConfigFlags -> PackageIdentifier -> String -> IO FilePath +downloadPkg cfg pkg location + = do fetched <- isFetched cfg pkg + if fetched + then do pkgIsPresent (configOutputGen cfg) pkg + return (packageFile cfg pkg) + else do downloadingPkg (configOutputGen cfg) pkg + fetchPackage cfg pkg location + +whenFlag :: Bool -> String -> [String] -> [String] +whenFlag True = (:) +whenFlag False = flip const + +-- Attach the correct prefix flag to configure commands, +-- correct --user flag to install commands and no options to other commands. +mkPkgOps :: ConfigFlags -> String -> [String] -> [String] +mkPkgOps cfg "configure" ops + = let ops' = whenFlag (configUser cfg) "--user" ops + in maybe id (\p -> (:) ("--prefix="++p)) (configPrefix cfg) ops' +mkPkgOps cfg "install" _ops + | configUserIns cfg = return "--user" +mkPkgOps _cfg _ _ops + = [] + +{-| + Download, build and install a given package with some given flags. + + The process is divided up in a few steps: + + * The package is downloaded to {config-dir}\/packages\/{pkg-id} (if not already there). + + * The fetched tarball is then moved to a temporary directory (\/tmp on linux) and unpacked. + + * The lowest directory with a .cabal file is located and searched for a \'Setup.lhs\' or + \'Setup.hs\' file. + + * \'runhaskell [Setup script] configure\' is called with the user specified options, \'--user\' + if the 'configUser' flag is @True@ and \'--prefix=[PREFIX]\' if 'configPrefix' is not @Nothing@. + + * \'runhaskell [Setup script] build\' is called with no options. + + * \'runhaskell [Setup script] install\' is called with the \'--user\' flag if 'configUserIns' is @True@. + + * The installation finishes by deleting the unpacked tarball. +-} +installPkg :: ConfigFlags + -> [String] -- ^Options which will be parse to every package. + -> (PackageIdentifier,[String],String) -- ^(Package, list of configure options, package location) + -> IO () +installPkg cfg globalArgs (pkg,ops,location) + = do pkgPath <- downloadPkg cfg pkg location + tmp <- getTemporaryDirectory + let tmpDirPath = tmp `joinFileName` printf "TMP%sTMP" (showPackageId pkg) + tmpPkgPath = tmpDirPath `joinFileName` printf "TAR%s.tgz" (showPackageId pkg) + setup setupScript cmd + = let (path,script) = splitFileName setupScript + cmdOps = mkPkgOps cfg cmd (globalArgs++ops) + in do executingCmd output runHc (script:cmd:cmdOps) + h <- runProcess runHc (script:cmd:cmdOps) + (Just (tmpDirPath `joinFileName` path)) + Nothing Nothing (cmdStdout output) (cmdStderr output) + oldHandler <- installHandler keyboardSignal (Catch (terminateProcess h)) Nothing + e <- waitForProcess h + installHandler keyboardSignal oldHandler Nothing + case e of + ExitFailure err -> cmdFailed output cmd (script:cmd:cmdOps) err + _ -> return () + bracket_ (createDirectoryIfMissing True tmpDirPath) + (removeDirectoryRecursive tmpDirPath) + (do copyFile pkgPath tmpPkgPath + extractTarFile tarProg tmpPkgPath + installUnpackedPkg cfg pkg tmpPkgPath setup + return ()) + where runHc = configRunHc cfg + tarProg = configTarPath cfg + output = configOutputGen cfg + +installUnpackedPkg :: ConfigFlags -> PackageIdentifier -> FilePath + -> (String -> String -> IO ()) -> IO () +installUnpackedPkg cfg pkgId tarFile setup + = do tarFiles <- tarballGetFiles tarProg tarFile + let cabalFile = locateFileExt tarFiles "cabal" + case cabalFile of + Just f -> let (path,_) = splitFileName f + mbScript = locateFile tarFiles path ["Setup.lhs", "Setup.hs"] + in case mbScript of + Just script + -> do buildingPkg output pkgId + stepConfigPkg output pkgId + setup script "configure" + stepBuildPkg output pkgId + setup script "build" + stepInstallPkg output pkgId + setup script "install" + stepFinishedPkg output pkgId + return () + Nothing + -> noSetupScript output pkgId + Nothing -> noCabalFile output pkgId + where output = configOutputGen cfg + tarProg = configTarPath cfg addfile ./Network/Hackage/CabalGet/Main.hs hunk ./Network/Hackage/CabalGet/Main.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Main +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- Entry point to the default cabal-get front-end. +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Main where + +import System.Environment (getArgs) +import Network.Hackage.CabalGet.Types (Action (..)) +import Network.Hackage.CabalGet.Setup (parseGlobalArgs, parseInstallArgs) +import Network.Hackage.CabalGet.Configure (mkConfigFlags) + +import Network.Hackage.CabalGet.Install (install) +import Network.Hackage.CabalGet.Info (info) +import Network.Hackage.CabalGet.Update (update) +import Network.Hackage.CabalGet.Fetch (fetch) +import Network.Hackage.CabalGet.Clean (clean) +import Network.Hackage.CabalGet.BuildDep (buildDep) + + +main :: IO () +main = do args <- getArgs + (action, flags, args) <- parseGlobalArgs args + config <- mkConfigFlags flags + case action of + InstallCmd + -> do (globalArgs, pkgs) <- parseInstallArgs args + install config globalArgs pkgs + BuildDepCmd + -> do (globalArgs, pkgs) <- parseInstallArgs args + buildDep config globalArgs pkgs + InfoCmd + -> do (globalArgs, pkgs) <- parseInstallArgs args + info config globalArgs pkgs + UpdateCmd + -> update config + CleanCmd + -> clean config + FetchCmd + -> fetch config args + _ -> putStrLn "Unhandled command." + addfile ./Network/Hackage/CabalGet/Setup.hs hunk ./Network/Hackage/CabalGet/Setup.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Setup +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Setup + ( emptyTempFlags + , parseInstallArgs + , parseGlobalArgs + ) where + +import Text.ParserCombinators.ReadP (readP_to_S) +import Distribution.ParseUtils (parseDependency) +import Distribution.Setup (defaultCompilerFlavor, CompilerFlavor(..)) +import Data.List (find) +import System.Console.GetOpt (ArgDescr (..), ArgOrder (..), OptDescr (..), usageInfo, getOpt') +import System.Exit (exitWith, ExitCode (..)) +import System.Environment (getProgName) + +import Network.Hackage.CabalGet.Types (TempFlags (..), Flag (..), Action (..) + , UnresolvedDependency (..)) + +emptyTempFlags :: TempFlags +emptyTempFlags = TempFlags { + tempHcFlavor = defaultCompilerFlavor, -- Nothing, + tempHcPath = Nothing, + tempConfPath = Nothing, + tempHcPkg = Nothing, + tempPrefix = Nothing, + tempServers = [], + tempRunHc = Nothing, + tempTarPath = Nothing, + tempVerbose = 3, +-- tempUpgradeDeps = False, + tempUser = False, + tempUserIns = False + } + +cmd_verbose :: OptDescr Flag +cmd_verbose = Option "v" ["verbose"] (OptArg verboseFlag "n") + "Control verbosity (n is 0--5, normal verbosity level is 1, -v alone is equivalent to -v3)" + where + verboseFlag mb_s = Verbose (maybe 3 read mb_s) + +globalOptions :: [OptDescr Flag] +globalOptions = + [ Option "h?" ["help"] (NoArg HelpFlag) "Show this help text" + , cmd_verbose + , Option "g" ["ghc"] (NoArg GhcFlag) "compile with GHC" + , Option "n" ["nhc"] (NoArg NhcFlag) "compile with NHC" + , Option "" ["hugs"] (NoArg HugsFlag) "compile with hugs" + , Option "s" ["with-server"] (ReqArg WithServer "URL") + "give the URL to a Hackage server" + , Option "c" ["config-path"] (ReqArg WithConfPath "PATH") + "give the path to the config dir. Default is /etc/cabal-get" + , Option "" ["tar-path"] (ReqArg WithTarPath "PATH") + "give the path to tar" + , Option "w" ["with-compiler"] (ReqArg WithCompiler "PATH") + "give the path to a particular compiler" + , Option "" ["with-hc-pkg"] (ReqArg WithHcPkg "PATH") + "give the path to the package tool" +-- , Option "" ["upgrade-deps"] (NoArg UpgradeDeps) +-- "Upgrade all dependencies which depend on the newly installed packages" + , Option "" ["user-install"] (NoArg UserInstallFlag) + "upon registration, register this package in the user's local package database" + , Option "" ["global-install"] (NoArg GlobalInstallFlag) + "upon registration, register this package in the system-wide package database" + , Option "" ["user-deps"] (NoArg UserFlag) + "allow dependencies to be satisfied from the user package database" + , Option "" ["global-deps"] (NoArg GlobalFlag) + "(default) dependencies must be satisfied from the global package database" + ] + +data Cmd = Cmd { + cmdName :: String, + cmdHelp :: String, -- Short description + cmdDescription :: String, -- Long description + cmdOptions :: [OptDescr Flag ], + cmdAction :: Action + } + + +commandList :: [Cmd] +commandList = [fetchCmd, installCmd, buildDepCmd, updateCmd, cleanCmd, infoCmd] + +lookupCommand :: String -> [Cmd] -> Maybe Cmd +lookupCommand name = find ((==name) . cmdName) + +printGlobalHelp :: IO () +printGlobalHelp = do pname <- getProgName + let syntax_line = concat [ "Usage: ", pname + , " [GLOBAL FLAGS]\n or: ", pname + , " COMMAND [FLAGS]\n\nGlobal flags:"] + putStrLn (usageInfo syntax_line globalOptions) + putStrLn "Commands:" + let maxlen = maximum [ length (cmdName cmd) | cmd <- commandList ] + sequence_ [ do putStr " " + putStr (align maxlen (cmdName cmd)) + putStr " " + putStrLn (cmdHelp cmd) + | cmd <- commandList ] + where align n str = str ++ replicate (n - length str) ' ' + +printCmdHelp :: Cmd -> IO () +printCmdHelp cmd = do pname <- getProgName + let syntax_line = "Usage: " ++ pname ++ " " ++ cmdName cmd ++ " [FLAGS]\n\nFlags for " ++ cmdName cmd ++ ":" + putStrLn (usageInfo syntax_line (cmdOptions cmd)) + putStr (cmdDescription cmd) + + +-- We don't want to use elem, because that imposes Eq a +hasHelpFlag :: [Flag] -> Bool +hasHelpFlag flags = not . null $ [ () | HelpFlag <- flags ] + +parseGlobalArgs :: [String] -> IO (Action,TempFlags,[String]) +parseGlobalArgs args = + case getOpt' RequireOrder globalOptions args of + (flags, _, _, []) | hasHelpFlag flags -> do + printGlobalHelp + exitWith ExitSuccess + (flags, cname:cargs, _, []) -> do + case lookupCommand cname commandList of + Just cmd -> return (cmdAction cmd,mkTempFlags flags emptyTempFlags, cargs) + Nothing -> do putStrLn $ "Unrecognised command: " ++ cname ++ " (try --help)" + exitWith (ExitFailure 1) + (_, [], _, []) -> do putStrLn $ "No command given (try --help)" + exitWith (ExitFailure 1) + (_, _, _, errs) -> do putStrLn "Errors:" + mapM_ putStrLn errs + exitWith (ExitFailure 1) + +mkTempFlags :: [Flag] -> TempFlags -> TempFlags +mkTempFlags = updateCfg + where updateCfg (fl:flags) t = updateCfg flags $ + case fl of + GhcFlag -> t { tempHcFlavor = Just GHC } + NhcFlag -> t { tempHcFlavor = Just NHC } + HugsFlag -> t { tempHcFlavor = Just Hugs } + WithCompiler path -> t { tempHcPath = Just path } + WithConfPath path -> t { tempConfPath = Just path } + WithHcPkg path -> t { tempHcPkg = Just path } + WithServer url -> t { tempServers = url:tempServers t } + Verbose n -> t { tempVerbose = n } +-- UpgradeDeps -> t { tempUpgradeDeps = True } + UserFlag -> t { tempUser = True } + GlobalFlag -> t { tempUser = False } + UserInstallFlag -> t { tempUserIns = True } + GlobalInstallFlag -> t { tempUserIns = False } + _ -> error $ "Unexpected flag!" + updateCfg [] t = t + +mkCmd :: String -> String -> String -> Action -> Cmd +mkCmd name help desc action = + Cmd { cmdName = name + , cmdHelp = help + , cmdDescription = desc + , cmdOptions = [] + , cmdAction = action + } + +fetchCmd :: Cmd +fetchCmd = mkCmd "fetch" "Downloads packages for later installation or study." "" FetchCmd + +installCmd :: Cmd +installCmd = mkCmd "install" "Installs a list of packages." "" InstallCmd + +buildDepCmd :: Cmd +buildDepCmd = mkCmd "build-dep" "Installs the dependencies for a list of packages." "" BuildDepCmd + +updateCmd :: Cmd +updateCmd = mkCmd "update" "Updates list of known packages" "" UpdateCmd + +cleanCmd :: Cmd +cleanCmd = mkCmd "clean" "Removes downloaded files" "" CleanCmd + +infoCmd :: Cmd +infoCmd = mkCmd "info" "Emit some info" + "Emits information about dependency resolution" InfoCmd + +parseInstallArgs :: [String] -> IO ([String],[UnresolvedDependency]) +parseInstallArgs [] = do printCmdHelp installCmd + exitWith ExitSuccess +parseInstallArgs args + = return (globalArgs,parsePkgArgs pkgs) + where (globalArgs,pkgs) = break (not.(==)'-'.head) args + parseDep dep + = case readP_to_S parseDependency dep of + [] -> error ("Failed to parse package dependency: " ++ show dep) + x -> fst (last x) + parsePkgArgs [] = [] + parsePkgArgs (x:xs) + = let (args,rest) = break (not.(==) '-'.head) xs + in (UnresolvedDependency + { dependency = parseDep x + , depOptions = args } + ):parsePkgArgs rest + addfile ./Network/Hackage/CabalGet/TarUtils.hs hunk ./Network/Hackage/CabalGet/TarUtils.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.TarUtils +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- Utility functions for manipulating tar archives. +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.TarUtils + ( tarballGetFiles + , locateFile + , locateFileExt + , extractTarFile + ) where + +import Distribution.Compat.FilePath (splitFileName, splitFileExt, breakFilePath) +import System.IO (hClose, hGetContents) +import System.Process (runInteractiveProcess, runProcess, waitForProcess) +import System.Exit (ExitCode(..)) +import Text.Printf (printf) +import Data.List (find, sortBy) +import Data.Maybe (listToMaybe) + + +-- |List the files in a gzipped tar archive. Throwing an exception on failure. +tarballGetFiles :: FilePath -- ^Path to the 'tar' binary. + -> FilePath -- ^Path to the .tgz archive. + -> IO [FilePath] +tarballGetFiles tarProg tarFile + = do (inch,out,_,handle) <- runInteractiveProcess tarProg args Nothing Nothing + hClose inch + files <- hGetContents out + length files `seq` hClose out + eCode <- waitForProcess handle + case eCode of + ExitFailure err -> error $ printf "Failed to get filelist from '%s': %s." tarFile (show err) + _ -> return (lines files) + where args = ["--list" + ,"--gunzip" + ,"--file" + ,tarFile] + +{-| +Find a file in a given directory. + +@ + locateFile [\"somedir\/jalla.txt\"] \"somedir\" [\"jalla.txt\"] + => Just \"somedir\/jalla.txt\" + locateFile [\"somepkg\/pkg.cabal\", \"somepkg\/Setup.hs\"] \"somepkg\" [\"Setup.lhs\", \"Setup.hs\"] + => Just \"somedir\/Setup.hs\" +@ +-} +locateFile :: [FilePath] -- ^File list. + -> FilePath -- ^Base directory. + -> [FilePath] -- ^List of filenames to locate. + -> Maybe FilePath +locateFile files dir names + = find findFile files + where findFile file + = let (root,name) = splitFileName file + in root == dir && name `elem` names + +{-| +Locate all files with a given extension and return the shortest result. + +@ + locateFileExt [\"somedir\/test.cabal\"] \"cabal\" + => Just \"somedir\/test.cabal\" +@ +-} +locateFileExt :: [FilePath] -> String -> Maybe FilePath +locateFileExt files fileExt + = let okExts = filter (\f -> let (_,ext) = splitFileExt f + in ext == fileExt) files + in (listToMaybe (sortBy sortFn okExts)) + where comparing f a b = f a `compare` f b + sortFn = comparing (length.breakFilePath) + +-- |Extract a given archive in the directory where it's placed. +extractTarFile :: FilePath -- ^Path to the 'tar' binary. + -> FilePath -- ^Path to the .tgz archive. + -> IO () +extractTarFile tarProg tarFile + = do tarHandle <- runProcess tarProg args (Just dir) Nothing Nothing Nothing Nothing + eCode <- waitForProcess tarHandle + case eCode of + ExitFailure err -> error $ printf "Failed to extract tar file '%s': %s." tarFile (show err) + _ -> return () + where args = ["-xzf",tarFile] + (dir,_) = splitFileName tarFile addfile ./Network/Hackage/CabalGet/Types.hs hunk ./Network/Hackage/CabalGet/Types.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Types +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- All data types for the entire cabal-get system gathered here to avoid some .hs-boot files. +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Types where + +import Distribution.Setup (CompilerFlavor(..),Compiler) +import Distribution.Package (PackageIdentifier) +import Distribution.Version (Dependency) + +import System.IO (Handle) + +data Action + = FetchCmd + | InstallCmd + | BuildDepCmd + | CleanCmd + | UpdateCmd + | InfoCmd + | HelpCmd + +data TempFlags = TempFlags { + tempHcFlavor :: Maybe CompilerFlavor, + tempHcPath :: Maybe FilePath, -- ^given compiler location + tempConfPath :: Maybe FilePath, + tempHcPkg :: Maybe FilePath, -- ^given hc-pkg location + tempPrefix :: Maybe FilePath, + tempServers :: [String], -- ^Available Hackage servers. + tempTarPath :: Maybe FilePath, + tempRunHc :: Maybe FilePath, + tempVerbose :: Int, -- ^verbosity level +-- tempUpgradeDeps :: Bool, + tempUser :: Bool, -- ^--user flag + tempUserIns :: Bool -- ^--user-install flag + } + +data ConfigFlags = ConfigFlags { + configCompiler :: Compiler, + configConfPath :: FilePath, + configPrefix :: Maybe FilePath, + configServers :: [String], -- ^Available Hackage servers. + configTarPath :: FilePath, + configRunHc :: FilePath, + configOutputGen :: OutputGen, + configVerbose :: Int, +-- configUpgradeDeps :: Bool, + configUser :: Bool, -- ^--user flag + configUserIns :: Bool -- ^--user-install flag + } + +data Flag + = GhcFlag | NhcFlag | HugsFlag + | WithCompiler FilePath | WithHcPkg FilePath + | WithConfPath FilePath | WithTarPath FilePath + | WithServer String + | UserFlag | GlobalFlag + | UserInstallFlag | GlobalInstallFlag +-- | UpgradeDeps + | HelpFlag + | Verbose Int + + +data OutputGen + = OutputGen + { prepareInstall :: [(PackageIdentifier,[String],String)] -> IO () + , pkgIsPresent :: PackageIdentifier -> IO () + , downloadingPkg :: PackageIdentifier -> IO () + , executingCmd :: String -> [String] -> IO () + , cmdFailed :: String -> [String] -> Int -> IO () -- cmd, flags and errno. + , buildingPkg :: PackageIdentifier -> IO () -- Package is fetched and unpacked. Starting installation. + , stepConfigPkg :: PackageIdentifier -> IO () + , stepBuildPkg :: PackageIdentifier -> IO () + , stepInstallPkg :: PackageIdentifier -> IO () + , stepFinishedPkg:: PackageIdentifier -> IO () + , noSetupScript :: PackageIdentifier -> IO () + , noCabalFile :: PackageIdentifier -> IO () + , gettingPkgList :: String -> IO () -- Server. + , showPackageInfo :: Maybe FilePath -- pkg file if fetched. + -> Bool -- is installed + -> [String] -- Options + -> Dependency -- Which dependency is this package supposed to fill + -> (PackageIdentifier,String,[ResolvedPackage]) + -> IO () + , showOtherPackageInfo :: Maybe PackageIdentifier -- package if installed. + -> Dependency + -> IO () -- Show package which isn't available from any server. + , cmdStdout :: Maybe Handle + , cmdStderr :: Maybe Handle + } + + + +data ResolvedPackage + = ResolvedPackage + { fulfilling :: Dependency + , resolvedData :: Maybe ( PackageIdentifier -- pkg id + , String -- pkg location + , [ResolvedPackage] -- pkg dependencies + ) + , pkgOptions :: [String] + } deriving Eq + +data UnresolvedDependency + = UnresolvedDependency + { dependency :: Dependency + , depOptions :: [String] + } + + addfile ./Network/Hackage/CabalGet/Update.hs hunk ./Network/Hackage/CabalGet/Update.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Hackage.CabalGet.Update +-- Copyright : (c) David Himmelstrup 2005 +-- License : BSD-like +-- +-- Maintainer : lemmih@gmail.com +-- Stability : provisional +-- Portability : portable +-- +-- +----------------------------------------------------------------------------- +module Network.Hackage.CabalGet.Update + ( update + ) where + +import Network.Hackage.CabalGet.Types (ConfigFlags (..), OutputGen(..)) +import Network.Hackage.CabalGet.Config (writeKnownPackages) + +import Network.Hackage.Client (listPackages) + +-- | 'update' downloads the package list from all known servers +update :: ConfigFlags -> IO () +update cfg + = do pkgs <- flip concatMapM servers + $ \serv -> do gettingPkgList (configOutputGen cfg) serv + listPackages serv + writeKnownPackages cfg pkgs + where servers = configServers cfg + concatMapM f = fmap concat . mapM f addfile ./Network/Hackage/Client.hs hunk ./Network/Hackage/Client.hs 1 +module Network.Hackage.Client where + +import Network.XmlRpc.Client +import Network.XmlRpc.Internals + +import Distribution.Package +import Distribution.Version +import Data.Version +import Data.Maybe + +import Network.Hackage.Version +import Network.Hackage.Interface + +getPkgDescription :: String -> PackageIdentifier -> IO (Maybe String) +getPkgDescription url = remote url "getPkgDescription" + +getPkgDescriptions :: String -> [PackageIdentifier] -> IO [Maybe String] +getPkgDescriptions url = remote url "getPkgDescriptions" + +getDependencies :: String -> [Dependency] -> IO [(Dependency, Maybe ResolvedDependency)] +getDependencies url = remote url "getDependencies" + +listPackages :: String -> IO [(PackageIdentifier,[Dependency],String)] +listPackages url = remote url "listPackages" + +getPkgLocation :: String -> PackageIdentifier -> IO (Maybe String) +getPkgLocation url = remote url "getPkgLocation" + +getServerVersion :: String -> IO Version +getServerVersion url = remote url "getServerVersion" + +isCompatible :: String -> IO Bool +isCompatible = fmap ((==) clientVersion) . getServerVersion addfile ./Network/Hackage/Interface.hs hunk ./Network/Hackage/Interface.hs 1 +module Network.Hackage.Interface where + +import Distribution.Package(PackageIdentifier(..)) +import Distribution.Version(Version(..), showVersion, VersionRange, + Dependency(..), withinRange) +import Network.XmlRpc.Server(ServerResult, fun, handleCall, methods) +import Network.XmlRpc.Internals(XmlRpcType(..), Type(TStruct, TArray, TString), + MethodCall, getField, Value(..)) +import Control.Monad.State(Functor(..), MonadIO(..), mapM, gets, + evalStateT) +import Data.List +import Data.Maybe + +-- Resolved dependency, pkg location and resolved dependencies of the dependency. +data ResolvedDependency + = ResolvedDependency PackageIdentifier String [(Dependency,Maybe ResolvedDependency)] + deriving (Eq,Show) + +instance XmlRpcType PackageIdentifier where + toValue p = toValue [("pkgName",toValue (pkgName p)), + ("pkgVersion", toValue (pkgVersion p))] + fromValue v = + do t <- fromValue v + name <- getField "pkgName" t + version <- getField "pkgVersion" t + return (PackageIdentifier name version) + getType _ = TStruct + +instance XmlRpcType Version where + toValue p = toValue [("branch",toValue (versionBranch p)), + ("tags", toValue (versionTags p))] + fromValue v = + do t <- fromValue v + branch <- getField "branch" t + tags <- getField "tags" t + return (Version branch tags) + getType _ = TStruct + +instance XmlRpcType Dependency where + toValue (Dependency name range) + = toValue [("name",toValue name), + ("range", toValue range)] + fromValue v = + do t <- fromValue v + name <- getField "name" t + range <- getField "range" t + return (Dependency name range) + getType _ = TStruct + +instance XmlRpcType ResolvedDependency where + toValue (ResolvedDependency pkg location deps) + = toValue [("pkg",toValue pkg), + ("deps", toValue deps), + ("location", toValue location)] + fromValue v = + do t <- fromValue v + pkg <- getField "pkg" t + deps <- getField "deps" t + location <- getField "location" t + return (ResolvedDependency pkg location deps) + getType _ = TStruct + +instance (XmlRpcType a, XmlRpcType b) => XmlRpcType (a,b) where + toValue (a,b) + = toValue [("fst",toValue a), + ("snd", toValue b)] + fromValue v = + do t <- fromValue v + a <- getField "fst" t + b <- getField "snd" t + return (a,b) + getType _ = TStruct + +instance (XmlRpcType a, XmlRpcType b, XmlRpcType c) + => XmlRpcType (a,b,c) where + toValue (a,b,c) + = toValue [("fst", toValue a), + ("snd", toValue b), + ("trd", toValue c)] + fromValue v = + do t <- fromValue v + a <- getField "fst" t + b <- getField "snd" t + c <- getField "trd" t + return (a,b,c) + getType _ = TStruct + +instance XmlRpcType VersionRange where + toValue versionRange + = toValue (show versionRange) + fromValue v = + do t <- fromValue v + return (read t) + getType _ = TString + +instance (XmlRpcType a) => XmlRpcType (Maybe a) where + toValue Nothing = toValue ([]::[Value]) + toValue (Just a) = toValue [toValue a] + fromValue v = + do t <- fromValue v + case t of + [x] -> fmap Just (fromValue x) + _ -> return Nothing + getType _ = TArray + addfile ./Network/Hackage/Version.hs hunk ./Network/Hackage/Version.hs 1 +module Network.Hackage.Version where + +import Data.Version + + +clientVersion :: Version +clientVersion = Version [0,1,0] [] addfile ./cabal-get/CabalGet.hs hunk ./cabal-get/CabalGet.hs 1 +module Main where + +import qualified Network.Hackage.CabalGet.Main as CabalGet + +main :: IO () +main = CabalGet.main addfile ./cabal-get/README hunk ./cabal-get/README 1 + + CabalGet, what happens under the hood. + + FetchCmd: + cabal-get stores packages in [config-dir]/packages/ by their package id. + This can lead to clashes if there's two identical (same name, same version) + packages from two servers with different functionality. + CleanCmd: + Removes all fetched packages. + UpdateCmd: + Queries all known servers for their packages and stores it in [cfg-dir]/pkg.list. + InstallCmd: + Installed packages are determined, and dependencies of the to-be-installed packages + are resolved and fetched. + The fetched tarballs are moved to a temporary directory (usually /tmp) and extracted. + Then cabal-get finds any files with a ".cabal" extension and picks the shortest (eg. + "myPkg/pkg.cabal" will be chosen over "myPkg/subdir/somefile.cabal"). Cabal-get looks + for "Setup.lhs" and "Setup.hs" (in that order) in the directory where the .cabal file + was found. Runhaskell is then called with user specified arguments. The user can + only pass arguments to the 'configure' phase of the installation. '--user' is only passed + to 'runhaskell install' when the '--user' flag is given to cabal-get. + InfoCmd: + To be written. + + + Files used by cabal-get: + [cfg-dir]/serv.list list of servers in the format of :: [String] + [cfg-dir]/pkg.list list of packages available from the servers. + Format: [(ServerURL,[(PackageIdentifier,[Dependency])])] where ServerURL = String + [cfg-dir]/packages/ directory containing all fetched packages. addfile ./cabal-get/Setup.lhs hunk ./cabal-get/Setup.lhs 1 +#!/usr/local/bin/runghc + +> module Main where + +> import Distribution.Simple + +> main :: IO () +> main = defaultMain addfile ./cabal-get/cabal-get.cabal hunk ./cabal-get/cabal-get.cabal 1 +Name: cabal-get +Version: 0.3.0 +License: BSD4 +License-File: ../LICENSE +Author: Lemmih +Maintainer: Lemmih +Copyright: 2005 Lemmih +Stability: Experimental +Category: Distribution +Build-depends: base, Cabal, hackage-client, mtl, network, FilePath +Synopsis: Automatic installer for Cabal packages. +Description: + apt-get like tool. + +Executable: cabal-get +Main-is: CabalGet.hs addfile ./dependencies/Crypto-2.0.0/BERTest.hs hunk ./dependencies/Crypto-2.0.0/BERTest.hs 1 +module Main(main) where + +import Data.Char +import Data.Maybe +import Control.Monad.Error +import Codec.ASN1.BER +import Codec.ASN1 +import Test.HUnit + +{- +Some of the ASN.1 definitions are taken from various standards and +these are annotated with references. The other ASN.1 definitions +have been created specifically to check decoding. These have been +checked using the on-line tool, Asnp, available at + +http://asn1.elibel.tm.fr/en/tools/asnp/index.htm + +Notes: Definitions using ANY DEFINED BY have to be checked with -1990 +option. Asnp was developed in Objective Caml. +-} + +expectSuccess testName asnType berValue expectedAbsValue = + TestCase $ + do w <- tc asnType berValue + let x = decode (getAbsType asnType) (Just w) + let (Just y) = x + assertEqual testName expectedAbsValue y + +expectFailure testName asnType berValue expectedError = + TestCase $ + do x <- (do y <- tc asnType berValue + return "Unexpected successful typechecking") + `catchError` (\e -> return $ show e) + assertEqual testName x expectedError + +{- +Some tagged value tests. See 8.14.3 of X.690 (ISO 8825-1). + +Type1 ::= VisibleString +Type2 ::= [APPLICATION 3] IMPLICIT Type1 +Type3 ::= [2] Type2 +Type4 ::= [APPLICATION 7] IMPLICIT Type3 +Type5 ::= [2] IMPLICIT Type2 +-} + +type1' = modName "Type1" absVisibleString + +type Type1 = VisibleString + +jones1 = Primitive Universal 26 5 [0x4a,0x6f,0x6e,0x65,0x73] + +decodedJones1 = VisibleString "Jones" + +tagTest1 = expectSuccess "Type1" type1' jones1 decodedJones1 + +type2 = "Type2" ::= AbsRef Application 3 Implicit type1' + +data Type2 = Type2 VisibleString + deriving (Eq,Show) + +instance Encode Type2 where + decode a b = + do let (AbsRef _ _ _ a') = a + a'' = getAbsType a' + x <- decode a'' b + return $ Type2 x + +jones2 = Primitive Application 3 5 [0x4a,0x6f,0x6e,0x65,0x73] + +decodedJones2 = Type2 decodedJones1 + +tagTest2 = expectSuccess "Type2" type2 jones2 decodedJones2 + +type3 = "Type3" ::= AbsRef Context 2 Explicit type2 + +data Type3 = Type3 Type2 + deriving (Eq,Show) + +instance Encode Type3 where + decode a b = + do let (AbsRef _ _ _ a') = a + a'' = getAbsType a' + x <- decode a'' b + return $ Type3 x + +jones3 = Constructed Context 2 7 [jones2] + +decodedJones3 = Type3 decodedJones2 + +tagTest3 = expectSuccess "Type3" type3 jones3 decodedJones3 + +type4 = "Type4" ::= AbsRef Application 7 Implicit type3 + +jones4 = Constructed Application 7 7 [jones2] + +data Type4 = Type4 Type3 + deriving (Eq,Show) + +instance Encode Type4 where + decode a b = + do let (AbsRef _ _ _ a') = a + a'' = getAbsType a' + x <- decode a'' b + return $ Type4 x + +decodedJones4 = Type4 decodedJones3 + +tagTest4 = expectSuccess "Type4" type4 jones4 decodedJones4 + +{- +Some tests for OPTIONAL components. +-} + +{- +Journey ::= + SEQUENCE { + origin IA5String, + stop1 [0] IA5String OPTIONAL, + stop2 [1] IA5String OPTIONAL, + destination IA5String + } +-} + +journey = + "Journey" ::= + AbsSeq Universal 16 Implicit [ + Regular (Just "origin" :>: (Nothing :@: absIA5String)), + Optional (Just "stop1" :>: (Just 0 :@: absIA5String)), + Optional (Just "stop2" :>: (Just 1 :@: absIA5String)), + Regular (Just "destination" :>: (Nothing :@: absIA5String)) + ] + +j1 = + Constructed Universal 16 24 [ + Primitive Universal 22 3 [97,97,98], + Constructed Context 0 5 [Primitive Universal 22 3 [99,100,101]], + Constructed Context 1 5 [Primitive Universal 22 3 [102,103,104]], + Primitive Universal 22 3 [97,97,98] + ] + +j2 = + Constructed Universal 16 24 [ + Primitive Universal 22 3 [97,97,98], + Constructed Context 1 5 [Primitive Universal 22 3 [102,103,104]], + Primitive Universal 22 3 [97,97,98] + ] + +data Journey = + Journey { + origin :: IA5String, + stop1 :: Maybe IA5String, + stop2 :: Maybe IA5String, + destination :: IA5String + } + deriving (Eq,Show) + +instance Encode Journey where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + Journey { + origin = fromJust (decode (as'!!0) (bs!!0)), + stop1 = decode (as'!!1) (bs!!1), + stop2 = decode (as'!!2) (bs!!2), + destination = fromJust (decode (as'!!3) (bs!!3)) + } + +decodedJ1 = + Journey { + origin = IA5String "aab", + stop1 = Just $ IA5String "cde", + stop2 = Just $ IA5String "fgh", + destination = IA5String "aab" + } + +decodedJ2 = + Journey { + origin = IA5String "aab", + stop1 = Nothing, + stop2 = Just $ IA5String "fgh", + destination = IA5String "aab" + } + +journeyTest1 = + expectSuccess "Journey1" journey j1 decodedJ1 + +journeyTest2 = + expectSuccess "Journey2" journey j2 decodedJ2 + +{- +Odyssey ::= SEQUENCE { + start Journey, + trip1 [0] Journey OPTIONAL, + trip2 [1] Journey OPTIONAL, + trip3 [2] Journey OPTIONAL, + end Journey + } +-} + +odyssey = + "Odyssey" ::= + AbsSeq Universal 16 Implicit [ + Regular (Just "start" :>: (Nothing :@: journey)), + Optional (Just "trip1" :>: (Just 0 :@: journey)), + Optional (Just "trip2" :>: (Just 1 :@: journey)), + Optional (Just "trip3" :>: (Just 2 :@: journey)), + Regular (Just "end" :>: (Nothing :@: journey)) + ] + +o1 = + Constructed Universal 16 130 [ + j1, + Constructed Context 0 26 [j1], + Constructed Context 1 26 [j1], + Constructed Context 2 26 [j1], + j1 + ] + +o2 = + Constructed Universal 16 52 [ + j1, + j1 + ] + +data Odyssey = + Odyssey { + start :: Journey, + trip1 :: Maybe Journey, + trip2 :: Maybe Journey, + trip3 :: Maybe Journey, + end :: Journey + } + deriving (Eq,Show) + +instance Encode Odyssey where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + Odyssey { + start = fromJust (decode (as'!!0) (bs!!0)), + trip1 = decode (as'!!1) (bs!!1), + trip2 = decode (as'!!2) (bs!!2), + trip3 = decode (as'!!2) (bs!!2), + end = fromJust (decode (as'!!4) (bs!!4)) + } + +decodedO1 = + Odyssey { + start = decodedJ1, + trip1 = Just decodedJ1, + trip2 = Just decodedJ1, + trip3 = Just decodedJ1, + end = decodedJ1 + } + +decodedO2 = + Odyssey { + start = decodedJ1, + trip1 = Nothing, + trip2 = Nothing, + trip3 = Nothing, + end = decodedJ1 + } + +odysseyTest1 = + expectSuccess "Odyssey1" odyssey o1 decodedO1 + +odysseyTest2 = + expectSuccess "Odyssey2" odyssey o2 decodedO2 + +{- +FunnyOptional ::= + SEQUENCE { + perhaps [0] IA5String OPTIONAL + } +-} + +funnyOptional = + "FunnyOptional" ::= + AbsSeq Universal 16 Implicit [ + Optional (Just "perhaps" :>: (Just 0 :@: absIA5String)) + ] + +fo1 = + Constructed Universal 16 7 [ + Constructed Context 0 5 [ + Primitive Universal 22 3 [97,97,98] + ] + ] + +fo2 = Constructed Universal 16 0 [] + +data FunnyOptional = + FunnyOptional { + perhaps :: Maybe IA5String + } + deriving (Eq,Show) + +instance Encode FunnyOptional where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + FunnyOptional { + perhaps = decode (as'!!0) (bs!!0) + } + +decodedFO1 = + FunnyOptional { + perhaps = Just $ IA5String "aab" + } + +funnyOptionalTest1 = + expectSuccess "FunnyOptional1" funnyOptional fo1 decodedFO1 + +decodedFO2 = + FunnyOptional { + perhaps = Nothing + } + +funnyOptionalTest2 = + expectSuccess "FunnyOptional2" funnyOptional fo2 decodedFO2 + + +{- +Some ANY DEFINED BY tests. See the former versions of the ASN.1 +standards, X.208 and X.209, sometimes referred to as ASN.1:1988 or +ASN.1:1990. This was used in some definitions of X.509 certificates, +for example: + +AlgorithmIdentifier ::= SEQUENCE { + algorithm OBJECT IDENTIFIER, + parameters ANY DEFINED BY algorithm OPTIONAL } + -- contains a value of the type + -- registered for use with the + -- algorithm object identifier value +-} + +{- +TextBook = SEQUENCE + { + author PrintableString, + citationType OID, + reference ANY DEFINED BY CitationType + } +-} + +textBook = + "TextBook" ::= + AbsSeq Universal 16 Implicit + [Regular (Just "author" :>: (Nothing :@: absPrintableString)), + Regular (Just "citationType" :>: (Nothing :@: absOID)), + AnyDefBy 1] + +data TextBook = + TextBook { + author :: PrintableString, + citationType :: OID, + reference :: PrintableString + } + deriving (Eq,Show) + +instance Encode TextBook where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + TextBook { + author = let (Just x) = decode (as'!!0) (bs!!0) in x, + citationType = let (Just x) = decode (as'!!1) (bs!!1) in x, + reference = let (Just x) = decode (as'!!2) (bs!!2) in x + } + +encodedPrintableString1 = + Primitive Universal 19 5 [104,101,108,108,111] + +encodedPrintableString2 = + Primitive Universal 19 5 [105,101,108,108,111] + +encodedPrintableString3 = + Primitive Universal 19 5 [106,101,108,108,111] + +encodedPrintableString4 = + Primitive Universal 19 5 [107,101,108,108,111] + +encodedOID1 = Primitive Universal 6 3 [85,4,7] + +encodedTextBook1 = + Constructed Universal 16 13 [ + encodedPrintableString1, + encodedOID1 + ] + +decodedTextBook1 = + "user error (Checking AnyDefBy 1: insufficient components)" + +encodedTextBook2 = + Constructed Universal 16 13 [ + encodedPrintableString1, + encodedOID1, + encodedPrintableString2 + ] + +decodedTextBook2 = + TextBook { + author = PrintableString "hello", + citationType = OID [2,5,4,7], + reference = PrintableString "iello" + } + +encodedTextBook3 = + Constructed Universal 16 13 [ + encodedPrintableString3, + encodedOID1, + encodedPrintableString4 + ] + +decodedTextBook3 = + TextBook { + author = PrintableString "jello", + citationType = OID [2,5,4,7], + reference = PrintableString "kello" + } + +textBookTest1 = + expectFailure "TextBook1" textBook encodedTextBook1 decodedTextBook1 + +textBookTest2 = + expectSuccess "TextBook2" textBook encodedTextBook2 decodedTextBook2 + +textBookTest3 = + expectSuccess "TextBook3" textBook encodedTextBook3 decodedTextBook3 + +library = + "Library" ::= + AbsSeq Universal 16 Implicit + [Regular (Just "first" :>: (Nothing :@: textBook)), + Regular (Just "second" :>: (Nothing :@: textBook))] + +data Library = + Library { + first :: TextBook, + second :: TextBook + } + deriving (Eq,Show) + +instance Encode Library where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + Library { + first = let (Just x) = decode (as'!!0) (bs!!0) in x, + second = let (Just x) = decode (as'!!1) (bs!!1) in x + } + +encodedLibrary = + Constructed Universal 16 28 [encodedTextBook2,encodedTextBook3] + +decodedLibrary = + Library { + first = decodedTextBook2, + second = decodedTextBook3 + } + +libraryTest = + expectSuccess "Library1" library encodedLibrary decodedLibrary + +v1 = Primitive Universal 26 5 [104,101,108,108,111] -- Valid +v2 = Primitive Universal 26 5 [103,101,108,108,111] -- Valid +v3 = Primitive Universal 26 5 [31,101,108,108,111] -- Not valid VisibleString + +expectedv1 = VisibleString "hello" +expectedv2 = VisibleString "gello" +expectedv3 = + "user error (Checking \"VisibleString\": type not compatible " ++ + "with values [31,101,108,108,111])" + +visibleStringTest1 = + expectSuccess "VisibleString1" absVisibleString v1 expectedv1 + +visibleStringTest2 = + expectSuccess "VisibleString2" absVisibleString v2 expectedv2 + +visibleStringTest3 = + expectFailure "VisibleString3" absVisibleString v3 expectedv3 + +{- +A modified version of the example in Annex A of X.690 (ISO 8825-1). +-} + +{- +Name ::= [APPLICATION 1] IMPLICIT SEQUENCE + {givenName VisibleString, + initial VisibleString, + familyName VisibleString} +-} + +name = + "Name" ::= + AbsSeq Application 1 Implicit [ + Regular (Just "givenName" :>: (Nothing :@: absVisibleString)), + Regular (Just "initial" :>: (Nothing :@: absVisibleString)), + Regular (Just "familyName" :>: (Nothing :@: absVisibleString)) + ] + +data Name = Name {givenName :: VisibleString, + initial :: VisibleString, + familyName :: VisibleString} + deriving (Eq,Show) + +instance Encode Name where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + Name { + givenName = let (Just x) = decode (as'!!0) (bs!!0) in x, + initial = let (Just x) = decode (as'!!1) (bs!!1) in x, + familyName = let (Just x) = decode (as'!!2) (bs!!2) in x + } + +n1 = Constructed Application 1 14 [v1,v2] -- Invalid number + -- of components + +n2 = Constructed Application 1 14 [v1] -- Invalid number + -- of components + +n3 = Constructed Application 1 14 [] -- Invalid number + -- of components + +n4 = Constructed Application 1 14 [v1,v2,v1] -- Valid + +n5 = Constructed Application 1 14 [v1,v2,v3] -- Invalid component + +expectedn1 = + "user error (Checking Regular (Just \"familyName\" :>: " ++ + "(Nothing :@: (\"VisibleString\" ::= " ++ + "AbsBasePrim Universal 26 AbsVisibleString))): " ++ + "insufficient components)" + +nameTest1 = + expectFailure "Name1" name n1 expectedn1 + +expectedn2 = + "user error (Checking Regular (Just \"initial\" :>: " ++ + "(Nothing :@: (\"VisibleString\" ::= " ++ + "AbsBasePrim Universal 26 AbsVisibleString))): " ++ + "insufficient components)" + +nameTest2 = + expectFailure "Name2" name n2 expectedn2 + +expectedn3 = + "user error (Checking Regular (Just \"givenName\" :>: " ++ + "(Nothing :@: (\"VisibleString\" ::= " ++ + "AbsBasePrim Universal 26 AbsVisibleString))): " ++ + "insufficient components)" + +nameTest3 = + expectFailure "Name3" name n3 expectedn3 + +expectedn4 = + Name { + givenName = VisibleString "hello", + initial = VisibleString "gello", + familyName = VisibleString "hello" + } + +nameTest4 = + expectSuccess "Name4" name n4 expectedn4 + +expectedn5 = + "user error (Checking \"VisibleString\": " ++ + "type not compatible with values [31,101,108,108,111])" + +nameTest5 = + expectFailure "Name5" name n5 expectedn5 + +{- +EmployeeNumber ::= [APPLICATION 2] IMPLICIT INTEGER +-} + +employeeNumber = + "EmployeeNumber" ::= AbsRef Application 2 Implicit absInteger + +data EmployeeNumber = EmployeeNumber Integer + deriving (Eq,Show) + +instance Encode EmployeeNumber where + decode a b = + do let (AbsRef _ _ _ a') = a + a'' = getAbsType a' + x <- decode a'' b + return $ EmployeeNumber x + +en1 = Primitive Application 2 1 [0x33] + +decodedEN1 = EmployeeNumber 51 + +enTest1 = + expectSuccess "EmployeeNumber1" employeeNumber en1 decodedEN1 + +{- +Date ::= [APPLICATION 3] IMPLICIT VisibleString -- YYYYMMDD +-} + +date = "Date" ::= + AbsRef Application 3 Implicit absVisibleString + +data Date = Date VisibleString + deriving (Eq,Show) + +instance Encode Date where + decode a b = + do let (AbsRef _ _ _ a') = a + a'' = getAbsType a' + x <- decode a'' b + return $ Date x + +b = "30/03/2003 19:37:34 GMT" +a = "30/03/2004 19:37:34 GMT" + +nb = map (fromIntegral . ord) b +na = map (fromIntegral . ord) a + +d1 = Constructed Application 3 7 [Primitive Universal 23 23 na] -- Invalid +d2 = Primitive Application 3 6 nb -- Valid + +expectedD1 = + "user error (Checking \"Date\": " ++ + "expected PRIMITIVE Tag found CONSTRUCTED Tag)" +decodedD2 = Date $ VisibleString b + +dateTest1 = + expectFailure "Date1" date d1 expectedD1 + +dateTest2 = + expectSuccess "Date2" date d2 decodedD2 + +{- +ChildInformation ::= SEQUENCE + { name Name, + dateOfBirth [0] Date} +-} + +childInformation = + "ChildInformation" ::= + AbsSeq Universal 16 Implicit [ + Regular (Just "name" :>: (Nothing :@: name)), + Regular (Just "dateOfBirth" :>: (Just 0 :@: date)) + ] + +data ChildInformation = + ChildInformation { name1 :: Name, + dateOfBirth :: Date } + deriving (Eq,Show) + +instance Encode ChildInformation where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + ChildInformation { + name1 = fromJust $ decode (as'!!0) (bs!!0), + dateOfBirth = fromJust $ decode (as'!!1) (bs!!1) + } + +ci1 = Constructed Universal 16 28 + [n4,Constructed Context 0 25 [d2]] + +expectedCI1 = + ChildInformation { + name1 = expectedn4, + dateOfBirth = decodedD2 + } + +ciTest1 = + expectSuccess "ChildInformation1" childInformation ci1 expectedCI1 + +{- +PersonnelRecord ::= [APPLICATION 0] IMPLICIT SEQUENCE { + name Name, + title [0] VisibleString, + number EmployeeNumber, + dateOfHire [1] Date, + nameOfSpouse [2] Name, + children [3] IMPLICIT + SEQUENCE OF ChildInformation DEFAULT {} } +-} + +personnelRecord = + "PersonnelRecord" ::= + AbsSeq Application 0 Implicit [ + Regular (Just "name" :>: (Nothing :@: name)), + Regular (Just "title" :>: (Just 0 :@: absVisibleString)), + Regular (Just "number" :>: (Nothing :@: employeeNumber)), + Regular (Just "dateOfHire" :>: (Just 1 :@: date)), + Regular (Just "nameOfSpouse" :>: (Just 2 :@: name)), + Regular ( + Just "children" :>: ( + Just 3 :@: ( + "SEQUENCE OF ChildInformation" ::= + AbsSeqOf Universal 16 Implicit childInformation + ) + ) + ) + ] + +data PersonnelRecord = + PersonnelRecord {name2 :: Name, + title :: VisibleString, + number :: EmployeeNumber, + dateOfHire :: Date, + nameOfSpouse :: Name, + children :: [ChildInformation]} + deriving (Eq,Show) + +instance Encode PersonnelRecord where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + PersonnelRecord { + name2 = fromJust $ decode (as'!!0) (bs!!0), + title = fromJust $ decode (as'!!1) (bs!!1), + number = fromJust $ decode (as'!!2) (bs!!2), + dateOfHire = fromJust $ decode (as'!!3) (bs!!3), + nameOfSpouse = fromJust $ decode (as'!!4) (bs!!4), + children = fromJust $ decode (as'!!5) (bs!!5)} + +pr1 = + Constructed Application 0 23 [ + n4, + Constructed Context 0 7 [v1], + en1, + Constructed Context 1 8 [d2], + Constructed Context 2 7 [n4], + Constructed Context 3 18 [Constructed Universal 16 16 [ci1]] + ] + +decodedpr1 = + PersonnelRecord { + name2 = expectedn4, + title = expectedv1, + number = decodedEN1, + dateOfHire = decodedD2, + nameOfSpouse = expectedn4, + children = [expectedCI1] + } + +prTest1 = + expectSuccess "PersonnelRecord1" personnelRecord pr1 decodedpr1 + +tests = + TestList [ + tagTest1, tagTest2, tagTest3, tagTest4, + textBookTest1, textBookTest2, textBookTest3, libraryTest, + visibleStringTest1, visibleStringTest2, visibleStringTest3, nameTest1, + nameTest2, nameTest3, nameTest4, nameTest5, + enTest1, dateTest1, dateTest2, ciTest1, + prTest1, journeyTest1, journeyTest2, odysseyTest1, + odysseyTest2, funnyOptionalTest1, funnyOptionalTest2 + ] + +main = runTestTT tests addfile ./dependencies/Crypto-2.0.0/Codec/ASN1.hs hunk ./dependencies/Crypto-2.0.0/Codec/ASN1.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.ASN1 +-- Copyright : (c) Dominic Steinitz 2005 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Typecheck and decode an abstract BER representations (as, for +-- example, produced by Codec.ASN1.TLV). +-- +----------------------------------------------------------------------------- + +module Codec.ASN1 ( + -- * Types + TagType(..), + TagValue, + TagPlicity(..), + AbsPrimType(..), + AbstractType(..), + TypeDefn(..), + TaggedType(..), + NamedType(..), + ComponentType(..), + -- * Haskell Equivalences of Base ASN.1 Types + VisibleString(..), + PrintableString(..), + IA5String(..), + DirectoryString(..), + OID(..), + NULL, + OctetString(..), + BitString(..), + SetOf(..), + -- * Modifiers and Accessor Functions + modName, + getAbsType, + modTagType, + modTagVal, + absRefedType, + absSeqComponents, + absSeqOfType, + absSetOfType, + unVisibleString, + unDirectoryString, + unSetOf, + -- * Base ASN.1 Type Definitions + absVisibleString, + absPrintableString, + absIA5String, + absInteger, + absOID, + absNull, + absOctetString, + absBitString, + -- * Auxilliary ASN.1 Type Definitions + commonName, + organizationUnitName, + emailAddress, + domainComponent, + -- * Association Table of Types and OIDs + oids + ) where + +import Char +import Data.FiniteMap +import Codec.Utils + +data TagType = Universal | Application | Context | Private + deriving (Eq,Show, Enum) + +type TagValue = Integer + +data TagPlicity = Implicit | Explicit + deriving (Eq,Show) + +data AbsPrimType = AbsVisibleString + | AbsPrintableString + | AbsIA5String + | AbsBool + | AbsInteger + | AbsOID + | AbsNull + | AbsOctetString + | AbsBitString + deriving (Eq,Show) + +data AbstractType = AbsBasePrim TagType TagValue AbsPrimType + | AbsRef TagType TagValue TagPlicity TypeDefn + | AbsSeq TagType TagValue TagPlicity [ComponentType] + | AbsSeqOf TagType TagValue TagPlicity TypeDefn + | AbsSetOf TagType TagValue TagPlicity TypeDefn + | AbsAnyDefBy ComponentIndex + deriving (Eq,Show) + +data TaggedType = Maybe TagValue :@: TypeDefn + deriving (Eq,Show) + +data NamedType = Maybe String :>: TaggedType + deriving (Eq,Show) + +{- +For now. We should probably replace [Octet] by an existential type +and know how to encode it rather than forcing the user to encode it +by hand for a specific encoding. +-} + +{- +Also for now, we will hand code the Component Index. +-} + +type ComponentIndex = Int + +data ComponentType = Regular NamedType + | Optional NamedType + | Default NamedType [Octet] + | AnyDefBy ComponentIndex + deriving (Eq,Show) + +data TypeDefn = String ::= AbstractType + deriving (Eq,Show) + +class Tagged a where + modTagVal :: Maybe TagValue -> a -> a + modTagType :: TagType -> a -> a + +instance Tagged AbstractType where + modTagVal x a@(AbsBasePrim tt tv at) = + case x of + Nothing -> a + Just y -> AbsBasePrim tt y at + modTagVal x a@(AbsRef tt tv tp at) = + case x of + Nothing -> a + Just y -> AbsRef tt y tp at + modTagVal x a@(AbsSeq tt tv tp as) = + case x of + Nothing -> a + Just y -> AbsSeq tt y tp as + modTagVal x a@(AbsSeqOf tt y tp td) = + case x of + Nothing -> a + Just y -> AbsSeqOf tt y tp td + modTagType x a@(AbsBasePrim tt tv at) = + AbsBasePrim x tv at + modTagType x a@(AbsRef tt tv tp at) = + AbsRef x tv tp at + modTagType x a@(AbsSeq tt tv tp as) = + AbsSeq x tv tp as + modTagType x a@(AbsSeqOf tt tv tp td) = + AbsSeqOf x tv tp td + +instance Tagged TypeDefn where + modTagVal x (n ::= t) = n ::= (modTagVal x t) + modTagType x (n ::= t) = n ::= (modTagType x t) + +-- | Create a new type definition from an existing one. + +modName :: String -> TypeDefn -> TypeDefn +modName x (_ ::= at) = (x ::= at) + +getAbsType (_ ::= t) = t + +-- | Get the components of a SEQUENCE. + +-- absSeqComponents :: AbstractType -> [AbstractType] +absSeqComponents (AbsSeq _ _ _ as) = ats + where ats = map f as + f (Regular (_ :>: (_ :@: (_ ::= x)))) = x + f (Optional (_ :>: (_ :@: (_ ::= x)))) = x + f (Default (_ :>: (_ :@: (_ ::= x))) _) = x + f (AnyDefBy n) = AbsAnyDefBy n + +-- | Get the component of the SEQUENCE OF. + +absSeqOfType :: AbstractType -> AbstractType +absSeqOfType (AbsSeqOf _ _ _ (_ ::= x)) = x + +-- | Get the component of the SET OF. + +absSetOfType :: AbstractType -> AbstractType +absSetOfType (AbsSetOf _ _ _ (_ ::= x)) = x + +-- | Get the component of a referenced type. + +absRefedType :: AbstractType -> AbstractType +absRefedType (AbsRef _ _ _ (_ ::= x)) = x + +data VisibleString = VisibleString String + deriving (Eq,Show) + +unVisibleString :: VisibleString -> String +unVisibleString (VisibleString x) = x + +data PrintableString = PrintableString String + deriving (Eq,Show) + +data IA5String = IA5String String + deriving (Eq,Show) + +data DirectoryString = VS VisibleString + | PS PrintableString + | IA IA5String + deriving (Eq,Show) + +unDirectoryString (PS (PrintableString x)) = x +unDirectoryString (VS (VisibleString x)) = x +unDirectoryString (IA (IA5String x)) = x + +newtype OID = OID [Integer] + deriving (Eq, Show, Ord) + +data NULL = NULL + deriving (Eq, Show) + +data OctetString = OctetString [Octet] + deriving (Eq,Show) + +data BitString = BitString [Octet] + deriving (Eq,Show) + +data SetOf a = SetOf [a] + deriving (Eq,Show) + +unSetOf (SetOf x) = x + +absVisibleString :: TypeDefn +absVisibleString = + "VisibleString" ::= AbsBasePrim Universal 26 AbsVisibleString + +absPrintableString :: TypeDefn +absPrintableString = + "PrintableString" ::= AbsBasePrim Universal 19 AbsPrintableString + +absIA5String :: TypeDefn +absIA5String = + "IA5String" ::= AbsBasePrim Universal 22 AbsIA5String + +absInteger :: TypeDefn +absInteger = + "Integer" ::= AbsBasePrim Universal 2 AbsInteger + +absOID :: TypeDefn +absOID = + "OID" ::= AbsBasePrim Universal 6 AbsOID + +absNull :: TypeDefn +absNull = + "NULL" ::= AbsBasePrim Universal 5 AbsNull + +absOctetString :: TypeDefn +absOctetString = + "OCTET STRING" ::= AbsBasePrim Universal 4 AbsOctetString + +absBitString :: TypeDefn +absBitString = + "BIT STRING" ::= AbsBasePrim Universal 3 AbsBitString + +commonName :: TypeDefn +commonName = modName "CommonName" absPrintableString + +countryName :: TypeDefn +countryName = modName "CountryName" absPrintableString + +localityName :: TypeDefn +localityName = modName "LocalityName" absPrintableString + +organization :: TypeDefn +organization = modName "Organization" absPrintableString + +organizationUnitName :: TypeDefn +organizationUnitName = modName "OrganizationUnitName" absPrintableString + +emailAddress :: TypeDefn +emailAddress = modName "EmailAddress" absIA5String + +domainComponent :: TypeDefn +domainComponent = modName "DomainComponent" absIA5String + +oids :: FiniteMap OID TypeDefn + +oids = + addListToFM emptyFM [ + (OID [2,5,4,3],commonName), + (OID [2,5,4,6],countryName), + (OID [2,5,4,7],localityName), + (OID [2,5,4,10],organization), + (OID [2,5,4,11],organizationUnitName), + (OID [1,2,840,113549,1,9,1],emailAddress), + (OID [0,9,2342,19200300,100,1,25],domainComponent) + ] addfile ./dependencies/Crypto-2.0.0/Codec/ASN1/BER.hs hunk ./dependencies/Crypto-2.0.0/Codec/ASN1/BER.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.ASN1.BER +-- Copyright : (c) Dominic Steinitz 2005 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Typecheck and decode BER representations as produced by +-- Codec.ASN1.TLV +-- +----------------------------------------------------------------------------- + +module Codec.ASN1.BER ( + -- * Types + Encoding(..), + Length, + -- * Type classes + Encode(..), + -- * Function types + encodedComponents, + encodedDefComps, + tc, + replaceRef + ) where + +import Char +import Bits +import Data.List +import Control.Monad.Error +import Control.Monad.State +import Data.FiniteMap +import Codec.Utils +import Codec.ASN1 + +type Length = Integer +type PrimitiveValue = [Octet] + +data Encoding = Primitive TagType TagValue Length PrimitiveValue + | Constructed TagType TagValue Length [Encoding] + deriving (Eq,Show) + +data Defaulted = DefPrim TagType TagValue Length PrimitiveValue + | DefCons TagType TagValue Length [Maybe Defaulted] + deriving (Eq,Show) + +encodedComponents :: Encoding -> [Encoding] +encodedComponents (Constructed _ _ _ es) = es + +encodedDefComps :: Defaulted -> [Maybe Defaulted] +encodedDefComps (DefCons _ _ _ es) = es + + +-- | Type check the abstract representation of a Tag Length Value +-- against an ASN.1 type definition. + +tc :: MonadError e m => TypeDefn -> Encoding -> m Defaulted + +tc (n ::= AbsBasePrim att atv at) b@(Primitive btt btv l bv) + | att /= btt = tagMismatch n att btt + | atv /= btv = tagValMismatch n atv btv + | not $ bv `compatibleWith` at = + fail ("Checking " ++ (show n) ++ ": " ++ + "type not compatible with values " ++ (show bv)) + | otherwise = return $ DefPrim btt btv l bv + +tc (n ::= AbsBasePrim att atv at) (Constructed btt btv _ bv) + = fail ("Checking " ++ (show n) ++ ": " ++ + "expected PRIMITIVE Tag found CONSTRUCTED Tag") + +-- See x.690 8.14.2 & 8.14.3 + +tc (n ::= AbsRef att atv atp at) b@(Primitive btt btv _ bv) + | atp == Explicit = + fail ("Checking " ++ (show n) ++ ": " ++ + "expected IMPLICIT Tag found PRIMITIVE type") + | att /= btt = tagMismatch n att btt + | atv /= btv = tagValMismatch n atv btv + | otherwise = tc a b + where a = modName n $ modTagType att $ modTagVal (Just atv) at + +tc (n ::= AbsRef att atv atp at) b@(Constructed btt btv _ bvs) + | att /= btt = tagMismatch n att btt + | atv /= btv = tagValMismatch n atv btv + | otherwise = case atp of + Implicit -> tc a b + Explicit -> if null bvs + then fail "unable to match empty value" + else tc (modName n at) (bvs!!0) + where a = modName n $ modTagType att $ modTagVal (Just atv) at + +tc (n ::= AbsSeq _ _ _ _) (Primitive _ _ _ _) = + constructionMismatch n "SEQUENCE" "PRIMITIVE" + +tc (n ::= AbsSeq att atv atp as) (Constructed btt btv l bvs) + | att /= btt = tagMismatch n att btt + | atv /= btv = tagValMismatch n atv btv +-- | bLength < minLength || bLength > maxLength = +-- fail ("Checking " ++ (show n) ++ ": " ++ +-- "expected " ++ (show $ minLength) ++ " - " ++ +-- (show $ maxLength) ++ " components " ++ +-- "found " ++ (show $ bLength)) + | otherwise = + do (bar,s) <- runStateT (k as bvs) [] +{- + let x = head bar + (Just (DefPrim _ _ _ y)) = x + z = head y + if z /= 104 + then error (show s) + else return (DefCons btt btv l bar) +-} + return (DefCons btt btv l bar) + where opts = map h as + h (Regular _) = False + h _ = True + minLength = length $ filter (==False) opts + maxLength = length opts + bLength = length bvs + +tc (n ::= AbsSeqOf _ _ _ _) (Primitive _ _ _ _) = + constructionMismatch n "SEQUENCE OF" "PRIMITIVE" + +tc (n ::= AbsSeqOf att atv Implicit td) (Constructed btt btv l bvs) + | att /= btt = tagMismatch n att btt + | atv /= btv = tagValMismatch n atv btv + | otherwise = do ds <- sequence $ zipWith tc (repeat td) bvs + return (DefCons btt btv l (map Just ds)) + +tc (n ::= AbsSetOf _ _ _ _) (Primitive _ _ _ _) = + constructionMismatch n "SET OF" "PRIMITIVE" + +tc (n ::= AbsSetOf att atv Implicit td) (Constructed btt btv l bvs) + | att /= btt = tagMismatch n att btt + | atv /= btv = tagValMismatch n atv btv + | otherwise = do ds <- sequence $ zipWith tc (repeat td) bvs + return (DefCons btt btv l (map Just ds)) +k :: MonadError e m => + [ComponentType] -> [Encoding] -> + StateT [Maybe Encoding] m [Maybe Defaulted] + +k [] [] = return [] + +k [] _ = return [] + +k ((a@(Regular _)):_) [] = + fail ("Checking " ++ (show a) ++ ": " ++ "insufficient components") + +k (a@(AnyDefBy n):as) [] = + fail ("Checking " ++ (show a) ++ ": " ++ "insufficient components") + +k (Optional _:_) [] = return [Nothing] + +k (Default _ _:_) [] = fail "To be fixed" + +k (Regular (mn :>: (tv :@: td)):as) (bv:bvs) = + do foo <- lift $ case tv of + Nothing -> + tc td bv + Just v -> + case mn of +-- 29/01/05 082427 Consider replacing Maybe String by String. +-- If there is no name then it's the empty String "". + Nothing -> + tc ("" ::= AbsRef Context v Explicit td) bv + Just name -> + tc (name ::= AbsRef Context v Explicit td) bv + s <- get + put (Just bv:s) + baz <- k as bvs + return ((Just foo):baz) + +k (Optional (mn :>: (tv :@: td)):as) b@(bv:bvs) = +-- For the moment. We don't want to catch all errors. For example, +-- if we get an eof error then it should be propogated. + do optionPresent <- + (do foo <- lift $ case tv of + Nothing -> + tc td bv + Just v -> + case mn of +-- 29/01/05 082427 Consider replacing Maybe String by String. +-- If there is no name then it's the empty String "". + Nothing -> + tc ("" ::= AbsRef Context v Explicit td) bv + Just name -> + tc (name ::= AbsRef Context v Explicit td) bv + return (Just foo)) `catchError` + (\_ -> return Nothing) + case optionPresent of + Nothing -> + do s <- get + put (Nothing:s) + baz <- k as b + return (optionPresent:baz) + (Just _) -> + do s <- get + put (Just bv:s) + baz <- k as bvs + return (optionPresent:baz) + +k (Default (mn :>: (tv :@: td)) _:as) b@(bv:bvs) = +-- For the moment. We don't want to catch all errors. For example, +-- if we get an eof error then it should be propogated. + do optionPresent <- + (do foo <- lift $ case tv of + Nothing -> + tc td bv + Just v -> + case mn of +-- 29/01/05 082427 Consider replacing Maybe String by String. +-- If there is no name then it's the empty String "". + Nothing -> + tc ("" ::= AbsRef Context v Explicit td) bv + Just name -> + tc (name ::= AbsRef Context v Explicit td) bv + return (Just foo)) `catchError` + (\_ -> return Nothing) + case optionPresent of + Nothing -> + do s <- get + put (Nothing:s) -- This is wrong. We should insert the default. + baz <- k as b + return (optionPresent:baz) + (Just _) -> + do s <- get + put (Just bv:s) + baz <- k as bvs + return (optionPresent:baz) + +k ((AnyDefBy n):as) (bv:bvs) = + do s <- get + if ((s!!n) == Nothing) + then fail ("Checking " ++ (show n) ++ ": " ++ + "no optional value present in ANY DEFINED BY") + else do let (Just x) = (reverse s)!!n + y <- lift $ tc absOID x + let u = decode (getAbsType absOID) (Just y) + (Just u') = u + v = lookupFM oids u' + if v == Nothing + then fail ("Checking " ++ (show n) ++ ": " ++ + (show u) ++ " not supported") + else do let (Just w) = v + foo <- lift $ tc w bv + s <- get + put (Just bv:s) + baz <- k as bvs + return (Just foo:baz) + +compatibleWith :: PrimitiveValue -> AbsPrimType -> Bool +compatibleWith pv AbsVisibleString = + all (flip elem visibleOctets) pv +compatibleWith pv AbsPrintableString = + all (flip elem printableOctets) pv +compatibleWith pv AbsIA5String = + all (flip elem ia5Octets) pv +compatibleWith pv AbsBool = + length pv == 1 +compatibleWith pv AbsInteger = + if length pv > 1 + then not ((pv!!0 == 0xff && (testBit (pv!!1) msb)) || + (pv!!0 == 0x00 && (not (testBit (pv!!1) msb)))) + else length pv == 1 +compatibleWith pv AbsOID = not $ null pv +compatibleWith pv AbsOctetString = True +compatibleWith pv AbsBitString = True +compatibleWith pv AbsNull = null pv + +ia5Octets :: [Octet] +ia5Octets = [0..127] + +visibleOctets :: [Octet] +visibleOctets = map fromIntegral [ord ' '..ord '~'] + +printableOctets :: [Octet] +printableOctets = + map (fromIntegral . ord) printableString + +printableString = + ['A'..'Z'] ++ + ['0'..'9'] ++ + [' '] ++ + ['a'..'z'] ++ + ['\''] ++ + ['('] ++ + [')'] ++ + ['+'] ++ + [','] ++ + ['-'] ++ + ['.'] ++ + ['/'] ++ + [':'] ++ + ['='] ++ + ['?'] + +tagMismatch n a b = + fail ("Checking " ++ (show n) ++ ": " ++ + "expected tag type " ++ (show a) ++ " " ++ + "found tag type " ++ (show b)) + +tagValMismatch n a b = + fail ("Checking " ++ (show n) ++ ": " ++ + "expected tag value " ++ (show a) ++ " " ++ + "found tag value " ++ (show b)) + +constructionMismatch n sa sb = + fail ("Checking " ++ (show n) ++ ": " ++ + "unable to match " ++ sa ++ " with " ++ sb) + +decodeMismatch a b = + fail ("Panic: unable to decode " ++ (show b) ++ " with " ++ (show a)) + +class Encode a where + decode :: AbstractType -> Maybe Defaulted -> Maybe a + +instance Encode VisibleString where + decode a@(AbsBasePrim _ _ AbsVisibleString) b = + do x <- b + case x of + DefPrim _ _ _ bv -> + return $ VisibleString $ map (chr . fromIntegral) bv + _ -> + decodeMismatch a b + +instance Encode PrintableString where + decode a@(AbsBasePrim _ _ AbsPrintableString) b = + do x <- b + case x of + DefPrim _ _ _ bv -> + return $ PrintableString $ map (chr . fromIntegral) bv + _ -> + decodeMismatch a b + +instance Encode IA5String where + decode a@(AbsBasePrim _ _ AbsIA5String) b = + do x <- b + case x of + DefPrim _ _ _ bv -> + return $ IA5String $ map (chr . fromIntegral) bv + _ -> + decodeMismatch a b + +instance Encode DirectoryString where + decode a@(AbsBasePrim _ _ AbsIA5String) b = + do x <- decode a b + return (IA x) + decode a@(AbsBasePrim _ _ AbsPrintableString) b = + do x <- decode a b + return (PS x) + decode a@(AbsBasePrim _ _ AbsVisibleString) b = + do x <- decode a b + return (VS x) + +instance Encode Bool where + decode a@(AbsBasePrim _ _ AbsBool) b = + do x <- b + case x of + DefPrim _ _ _ bv -> + case bv of + [0x00] -> return False + otherwise -> return True + _ -> + decodeMismatch a b + +instance Encode Integer where + decode a@(AbsBasePrim _ _ AbsInteger) b = + do x <- b + case x of + DefPrim _ _ _ bv -> + return (fromTwosComp bv) + _ -> + decodeMismatch a b + +instance Encode OctetString where + decode a@(AbsBasePrim _ _ AbsOctetString) b = + do x <- b + case x of + DefPrim _ _ _ bv -> + return $ OctetString bv + _ -> + decodeMismatch a b + +instance Encode BitString where + decode a@(AbsBasePrim _ _ AbsBitString) b = + do x <- b + case x of + DefPrim _ _ _ bv -> + return $ BitString (tail bv) +-- For now. Typechecking will have to ensure this is valid. + _ -> + decodeMismatch a b + +instance Encode a => Encode (SetOf a) where + decode a b = + do d <- b + let bs = encodedDefComps d + cs <- f a' bs + return $ SetOf cs + where a' = absSetOfType a + f x ys = + case ys of + [] -> + return $ [] + (z:zs) -> + do u <- decode x z + us <- f x zs + return $ (u:us) + +instance Encode a => Encode [a] where + decode a b = + do d <- b + let bs = encodedDefComps d + cs <- f a' bs + return cs + where a' = absSeqOfType a + f x ys = + case ys of + [] -> + return $ [] + (z:zs) -> + do u <- decode x z + us <- f x zs + return $ (u:us) + +instance Encode OID where + decode a@(AbsBasePrim _ _ AbsOID) b = + do x <- b + case x of + DefPrim _ _ _ bv -> + return $ decodeOIDAux bv + _ -> + decodeMismatch a b + +decodeOIDAux (x:xs) = + OID $ ((fromIntegral x) `div` 40):((fromIntegral x) `mod` 40):ys + where + ys = map fromIntegral $ + map (fromOctets (2^oidBitsPerOctet)) $ + (map . map) (flip clearBit oidBitsPerOctet) (subIds xs) + subIds :: [Octet] -> [[Octet]] + subIds = unfoldr getSubId + getSubId :: [Octet] -> Maybe ([Octet], [Octet]) + getSubId [] = Nothing + getSubId xs = Just $ span' endOfSubId xs + endOfSubId = not . (flip testBit oidBitsPerOctet) + +oidBitsPerOctet = 7 :: Int + +span' :: (a -> Bool) -> [a] -> ([a],[a]) +span' p [] + = ([],[]) +span' p xs@(x:xs') + | p x = ([x],xs') + | otherwise = (x:ys,zs) + where (ys,zs) = span' p xs' + +replaceRef :: AbstractType -> + [AbstractType] -> + [Maybe Defaulted] -> + AbstractType +replaceRef a as bs = + case a of + AbsAnyDefBy n -> u + where + oidat = decode (as!!n) (bs!!n) + (Just oidat') = oidat + t = lookupFM oids oidat' + (Just (_ ::= u)) = t + _ -> a addfile ./dependencies/Crypto-2.0.0/Codec/ASN1/PKCS8.hs hunk ./dependencies/Crypto-2.0.0/Codec/ASN1/PKCS8.hs 1 - +----------------------------------------------------------------------------- +-- | +-- Module : Coded.ASN1.PKCS8 +-- Copyright : (c) Dominic Steinitz 2003 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : non-portable +-- +-- Definitions to allow the typechecking of a PKCS8 private key and +-- functions to extract information from it. +-- +-- See . +-- +----------------------------------------------------------------------------- + +module Codec.ASN1.PKCS8 ( +-- * Type declarations + RSAPrivateKey(..), + PrivateKeyInfo(..), +-- * Function declarations + rsaPrivateKey, + privateKeyInfo + ) where + +import Data.Maybe +import Codec.ASN1 +import Codec.ASN1.BER +import Codec.ASN1.X509 ( + algorithmIdentifier, + AlgorithmIdentifier, + attributeTypeAndValue, + AttributeTypeAndValue + ) + +{- +See http://www.zvon.org/tmRFC/RFC3447/Output/index.html 10.1.2. A.1.2 +RSA private key syntax: + +RSAPrivateKey ::= SEQUENCE { + version Version, + modulus INTEGER, -- n + publicExponent INTEGER, -- e + privateExponent INTEGER, -- d + prime1 INTEGER, -- p + prime2 INTEGER, -- q + exponent1 INTEGER, -- d mod (p-1) + exponent2 INTEGER, -- d mod (q-1) + coefficient INTEGER, -- (inverse of q) mod p + otherPrimeInfos OtherPrimeInfos OPTIONAL + } +-} + +rsaPrivateKey :: TypeDefn +rsaPrivateKey = + "RSAPrivateKey" ::= + AbsSeq Universal 16 Implicit + [Regular (Just "version" :>: (Nothing :@: version)), + Regular (Just "modulus" :>: (Nothing :@: absInteger)), + Regular (Just "publicExponent" :>: (Nothing :@: absInteger)), + Regular (Just "privateExponent" :>: (Nothing :@: absInteger)), + Regular (Just "prime1" :>: (Nothing :@: absInteger)), + Regular (Just "prime2" :>: (Nothing :@: absInteger)), + Regular (Just "exponent1" :>: (Nothing :@: absInteger)), + Regular (Just "exponent2" :>: (Nothing :@: absInteger)), + Regular (Just "coefficient" :>: (Nothing :@: absInteger))] + +data RSAPrivateKey = + RSAPrivateKey { + version1 :: Integer, + modulus :: Integer, -- n + publicExponent :: Integer, -- e + privateExponent :: Integer, -- d + prime1 :: Integer, -- p + prime2 :: Integer, -- q + exponent1 :: Integer, -- d mod (p-1) + exponent2 :: Integer, -- d mod (q-1) + coefficient :: Integer -- (inverse of q) mod p + } + deriving Show + +instance Encode RSAPrivateKey where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + version = fromJust $ decode (as'!!0) (bs!!0) + modulus = fromJust $ decode (as'!!1) (bs!!1) + publicExponent = fromJust $ decode (as'!!2) (bs!!2) + privateExponent = fromJust $ decode (as'!!3) (bs!!3) + prime1 = fromJust $ decode (as'!!4) (bs!!4) + prime2 = fromJust $ decode (as'!!5) (bs!!5) + exponent1 = fromJust $ decode (as'!!6) (bs!!6) + exponent2 = fromJust $ decode (as'!!7) (bs!!7) + coefficient = fromJust $ decode (as'!!8) (bs!!8) + return $ + RSAPrivateKey { + version1 = version, + modulus = modulus, + publicExponent = publicExponent, + privateExponent = privateExponent, + prime1 = prime1, + prime2 = prime2, + exponent1 = exponent1, + exponent2 = exponent2, + coefficient = coefficient} + +version = modName "Version" absInteger + +type Version = Integer + +{- +PrivateKey ::= OCTET STRING +-} + +privateKey = modName "PrivateKey" absOctetString + +type PrivateKey = OctetString + +{- +Attributes ::= SET OF Attribute +-} + +attributes = + "Attributes" ::= AbsSetOf Universal 16 Implicit attributeTypeAndValue + +type Attributes = SetOf AttributeTypeAndValue + +{- +PrivateKeyInfo ::= SEQUENCE { + version Version, + privateKeyAlgorithm AlgorithmIdentifier {{PrivateKeyAlgorithms}}, + privateKey PrivateKey, + attributes [0] Attributes OPTIONAL + } +-} + +privateKeyInfo :: TypeDefn +privateKeyInfo = + "privateKeyInfo" ::= + AbsSeq Universal 16 Implicit [ + Regular (Just "version" :>: (Nothing :@: version)), + Regular ( + Just "privateKeyAlgorithm" :>: (Nothing :@: algorithmIdentifier) + ), + Regular (Just "privateKey" :>: (Nothing :@: privateKey)), + Optional (Just "attributes" :>: (Nothing :@: attributes)) + ] + +data PrivateKeyInfo = + PrivateKeyInfo { + version2 :: Version, + privateKeyAlgorithm :: AlgorithmIdentifier, + privateKey1 :: PrivateKey, + attributes1 :: Maybe Attributes + } + deriving Show + +instance Encode PrivateKeyInfo where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + version = fromJust $ decode (as'!!0) (bs!!0) + privateKeyAlgorithm = fromJust $ decode (as'!!1) (bs!!1) + privateKey = fromJust $ decode (as'!!2) (bs!!2) + attributes = decode (as'!!3) (bs!!3) + return $ + PrivateKeyInfo { + version2 = version, + privateKeyAlgorithm = privateKeyAlgorithm, + privateKey1 = privateKey, + attributes1 = attributes + } + +{- +type Algorithm = OID + +-- | This will do for now. DSA has some parameters which are more complicated +-- than this but since we plan to do RSA initially and this has NULL parameters +-- then anything will do to get us going. + +type Parameters = Int + +-- | The parameters will only ever be Nothing as this implementation +-- only supports RSA and this has no parameters. So even if the parameters +-- are non-NULL, fromASN will not fail but will ignore them. + +data AlgorithmIdentifier = + MkAlgorithmIdentifier { + algorithm :: Algorithm, + parameters :: Maybe Parameters } + deriving Show + +data PrivateKeyInfo = + MkPrivateKeyInfo { + version1 :: Version, + privateKeyAlgorithm :: AlgorithmIdentifier, + privateKey :: RSAPrivateKey } + deriving Show + +{- +We are "overloading" Version. It is defined in + +ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-8/pkcs-8v1_2.asn: + +Version ::= INTEGER {v1(0)} (v1,...) + +and also in + +http://www.zvon.org/tmRFC/RFC3447/Output/index.html 10.1.2: + +Version ::= INTEGER { two-prime(0), multi(1) } + +although for the latter +definition we represent two-prime in Haskell as V1 and do not support +multi. +-} + +{- +We assume: + +Algorithm ::= OID + +although the situation is far more complicated. +See http://www.zvon.org/tmRFC/RFC2898/Output/chapter12.html. +-} + +algorithm = modName "Algorithm" absOID + +type Algorithm = OID + +{- +We assume: + +Parameters ::= NULL + +although the situation is far more complicated. +See http://www.zvon.org/tmRFC/RFC2898/Output/chapter12.html. +-} + +parameters = modName "Parameters" absNull + +type Parameters = NULL + +{- +See http://www.itu.int/ITU-T/asn1/database/itu-t/x/x509/1997/AuthenticationFramework.html#AuthenticationFramework.AlgorithmIdentifier. + +For now, the parameters will only ever be Nothing as this implementation +only supports RSA and this has no parameters. If the parameters +are non-NULL, we will report an error. + +See http://www.zvon.org/tmRFC/RFC3447/Output/index.html 10.1. A.1 RSA key representation: + +"The parameters field associated with this OID in a value of type AlgorithmIdentifier shall have a value of type NULL" +-} + +{- +See ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-8/pkcs-8v1_2.asn. +-} + +-} addfile ./dependencies/Crypto-2.0.0/Codec/ASN1/TLV.hs hunk ./dependencies/Crypto-2.0.0/Codec/ASN1/TLV.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.ASN1.TLV +-- Copyright : (c) Dominic Steinitz 2005 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Decode binary BER into abstract an abstract representation of tag, +-- length and value ensuring that the lengths are consistent. +-- +----------------------------------------------------------------------------- + +module Codec.ASN1.TLV ( + -- * Types + + -- * Function types, + tlv, + tlvIO + ) where +import Data.Bits +import Control.Exception +import Control.Monad.State +import Control.Monad.Error +import System.IO.Error +import qualified NewBinary.Binary as B (BinHandle, getBits, getByte) +import Codec.ASN1.BER +import Codec.Utils + +-- The bit decoder will (by design) never lie about lengths +-- because it can check these. It may lie (if that's what it's being +-- told) about numbers of components because it can't check these +-- without having the ASN.1 definitions. + +{- +041120 125723 +When interpreting the bits into tag-length-value form, +remember to keep track of where things are. + +041120 161608 +We'll need isEOFBin or to catch exceptions. + +041121 151059 +As decoding to tag length value is monadic and then so it +decoding to the ASN.1 at some point we'll need to interleave +actions. + +080105 082425 +tlv should report an error if there are any Octets left over. +-} + +tlv :: [Octet] -> (Length,Encoding) +tlv xs = let ((l,e),_) = runState (tlv_ undefined) (xs,0::Offset) in (l,e) + +tlvIO :: BinHandle -> IO (Length, Encoding) +tlvIO = tlv_ + +tlv_ bin = + do tagValueVal <- getBits bin 5 + tagConstructionVal <- getBits bin 1 + tagTypeVal <- getBits bin 2 + let tagType = toEnum $ fromIntegral tagTypeVal + tagValue = fromIntegral tagValueVal + if tagValue /= 31 + then do (ll,l) <- getLength bin + f 1 tagConstructionVal + tagType tagValue ll l + else do xs <- getTagOctets bin + let longform = + fromIntegral (fromOctets 128 xs) + (ll,l) <- getLength bin + f (fromIntegral $ length xs) tagConstructionVal + tagType longform ll l + where f tl tcv tt tv ll l = + if tcv == 0 + then do xs <- getOctets bin l + let x = Primitive tt tv l xs + return (tl+ll+l,x) + else do ys <- tlvs_ bin l + let x = Constructed tt tv l ys + return (tl+ll+l,x) + +tlvs_ bin curLen + | curLen < 0 = fail "Codec.ASN1.TLV.tlvs_: trying to decode a negative number of octets" + | curLen == 0 = return [] + | otherwise = do (l,x) <- tlv_ bin + ys <- tlvs_ bin (curLen-l) + return (x:ys) + +getTagOctets bin = + do x <- getByte bin + if not (testBit x msb) + then return [x] + else do xs <- getTagOctets bin + return ((clearBit x msb):xs) + +-- Need to think about testing. Here are some links: + +-- http://www.eeye.com/html/Research/Advisories/AD20040210.html +-- http://www.galois.com/files/HCSS-04-ASN.1.pdf +-- http://www.larmouth.demon.co.uk/tutorials/tagging/sld003.htm + + +getLength bin = + do x <- getByte bin + let isShort = not (testBit x msb) + shortform = fromIntegral x + length = fromIntegral (clearBit x msb) in + if x == 0x80 + then error "Indefinite length not supported" + else if isShort + then return (1,shortform) + else do xs <- getOctets bin length + let longform = fromOctets 256 xs in + return (length+1,longform) + +getOctets bin l = + if l <= 0 + then return [] + else do x <- getByte bin + xs <- getOctets bin (l-1) + return (x:xs) + +type BinHandle = B.BinHandle + +type NumBits = Int + +class Binary m where + getBits :: BinHandle -> NumBits -> m Octet + getByte :: BinHandle -> m Octet + +instance Binary IO where + getBits = B.getBits + getByte = B.getByte + +type Offset = Int + +instance Binary (State ([Octet],Offset)) where + getBits = getBits' + getByte = getByte' + +{- +getBits is never exported and does not need to be general. We know +we will only ever use it at an Octet boundary and we will never cross +an Octet boundary. +-} + +getBits' :: MonadState ([Octet],Offset) m => BinHandle -> NumBits -> m Octet +getBits' _ n = + do (xs,offset) <- get + if null xs + then throw (IOException $ + mkIOError eofErrorType + "Codec.ASN1.TLV.getBits" + Nothing Nothing) + else do let r = select offset n (head xs) + m = bitSize r + if offset + n < m + then put (xs,offset + n) + else put (tail xs,0) + return r + +select :: Offset -> NumBits -> Octet -> Octet +select offset n x = + clearBits n p $ shiftR x offset + where p = bitSize n + +clearBits :: Bits a => Int -> Int -> a -> a +clearBits = bits clearBit + +bits :: Enum b => (a -> b -> a) -> b -> b -> a -> a +bits f m n = foldr (.) id (map (\i -> flip f i) [m..n]) + +getByte' :: MonadState ([Octet],Offset) m => BinHandle -> m Octet +getByte' _ = + do (xs,offset) <- get + if null xs + then throw (IOException $ + mkIOError eofErrorType + "Codec.ASN1.TLV.getByte" + Nothing Nothing) + else do put (tail xs,offset) + return (head xs) addfile ./dependencies/Crypto-2.0.0/Codec/ASN1/X509.hs hunk ./dependencies/Crypto-2.0.0/Codec/ASN1/X509.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.ASN1.X509 +-- Copyright : (c) Dominic Steinitz 2005 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Definitions to allow the typechecking of an X.509 +-- certificate and functions to extract information from it. +-- +----------------------------------------------------------------------------- + +module Codec.ASN1.X509 ( + -- * Types + Certificate(..), + SignedCertificate(..), + SubjectPublicKeyInfo(..), + RSAPublicKey(..), + AlgorithmIdentifier(..), + AttributeTypeAndValue, + -- * Type classes + -- * Function types + time, + validity, + attributeTypeAndValue, + relativeDistinguishedName, + algorithmIdentifier, + signedCertificate, + rsaPublicKey, + algorithm1, + parameters1, + validity1, + notBefore, + notAfter, + type1, + value, + unName, + unTime, + unRelativeDistinguishedName +) where +import System.Time +import Data.FiniteMap +import Data.Maybe +import Codec.ASN1.BER +import Codec.ASN1 + +{- +CertificateSerialNumber ::= INTEGER +-} + +certificateSerialNumber = modName "CertificateSerialNumber" absInteger + +type CertificateSerialNumber = Integer + +{- +AttributeTypeAndValue ::= + SEQUENCE { + type OBJECT IDENTIFIER, + value ANY DEFINED by type + } +-} + +attributeTypeAndValue = + "AttributeTypeAndValue" ::= + AbsSeq Universal 16 Implicit + [Regular (Just "type" :>: (Nothing :@: absOID)), + AnyDefBy 0] + +data AttributeTypeAndValue = + AttributeTypeAndValue { type1 :: OID, + value :: DirectoryString} + deriving (Eq,Show) + +instance Encode AttributeTypeAndValue where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + AttributeTypeAndValue { + type1 = fromJust $ decode (as'!!0) (bs!!0), + value = fromJust $ decode (as'!!1) (bs!!1) + } + +{- +RelativeDistinguishedName ::= + SET OF AttributeTypeAndValue +-} + +relativeDistinguishedName = + "RelativeDistinguishedName" ::= + AbsSetOf Universal 17 Implicit attributeTypeAndValue + +data RelativeDistinguishedName = + RelativeDistinguishedName (SetOf AttributeTypeAndValue) + deriving (Eq,Show) + +-- unRelativeDistinguishedName :: +-- RelativeDistinguishedName -> (OID,DirectoryString) +unRelativeDistinguishedName (RelativeDistinguishedName x) = x + +instance Encode RelativeDistinguishedName where + decode a b = + do x <- decode a b + return (RelativeDistinguishedName x) + +{- +Name ::= SEQUENCE OF RelativeDistnguishedName +-} + +name = + "Name" ::= + AbsSeqOf Universal 16 Implicit relativeDistinguishedName + +data Name = Name [RelativeDistinguishedName] + deriving (Eq,Show) + +unName :: Name -> [RelativeDistinguishedName] +unName (Name x) = x + +instance Encode Name where + decode a b = + do x <- decode a b + return (Name x) + +{- +Validity ::= + SEQUENCE {notBefore Time, + notAfter Time + } +-} + +validity = + "Validity" ::= + AbsSeq Universal 16 Implicit + [Regular (Just "notBefore" :>: (Nothing :@: time)), + Regular (Just "notAfter" :>: (Nothing :@: time))] + +data Validity = + Validity { + notBefore :: Time, -- CalendarTime + notAfter :: Time -- CalendarTime + } + deriving (Eq,Show) + +instance Encode Validity where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + Validity { + notBefore = fromJust $ decode (as!!0) (bs!!0), + notAfter = fromJust $ decode (as!!1) (bs!!1) + } + +{- +Time ::= + CHOICE {utcTime UTCTime, + generalizedTime GeneralizedTime + } +-} + +time = + "Time" ::= AbsRef Universal 23 Implicit absVisibleString + +data Time = Time VisibleString + deriving (Eq,Show) + +unTime :: Time -> VisibleString +unTime (Time x) = x + +instance Encode Time where + decode a b = + do let (AbsRef _ _ _ a') = a + a'' = getAbsType a' + x <- decode a'' b + return $ Time x + +{- +SubjectPublicKeyInfo ::= + SEQUENCE { + algorithm AlgorithmIdentifier, + subjectPublicKey BIT STRING + } +-} + +subjectPublicKeyInfo = + "SubjectPublicKeyInfo" ::= + AbsSeq Universal 16 Implicit + [Regular (Just "algorithm" :>: (Nothing :@: algorithmIdentifier)), + Regular (Just "subjectPublicKeyInfo" :>: (Nothing :@: absBitString))] + +data SubjectPublicKeyInfo = + SubjectPublicKeyInfo { + algorithm2 :: AlgorithmIdentifier, + subjectPublicKeyInfo1 :: BitString + } + deriving (Eq,Show) + +instance Encode SubjectPublicKeyInfo where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + SubjectPublicKeyInfo { + algorithm2 = fromJust $ decode (as!!0) (bs!!0), + subjectPublicKeyInfo1 = fromJust $ decode (as!!1) (bs!!1) + } + +{- +Certificate ::= + SEQUENCE { + version [0] Version DEFAULT v1, + serialNumber CertificateSerialNumber, + signature AlgorithmIdentifier, + issuer Name, + validity Validity, + subject Name, + subjectPublicKeyInfo SubjectPublicKeyInfo, + issuerUniqueIdentifier [1] IMPLICIT UniqueIdentifier OPTIONAL, + -- if present, version shall be v2 or v3 + subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL, + -- if present, version shall be v2 or v3 + extensions [3] Extensions OPTIONAL + -- If present, version shall be v3 + } +-} + +certificate = + "Certificate" ::= + AbsSeq Universal 16 Implicit + [Default (Just "version" :>: + ((Just 0) :@: version)) [030200], + Regular (Just "serialNumber" :>: + (Nothing :@: certificateSerialNumber)), + Regular (Just "signature" :>: + (Nothing :@: algorithmIdentifier)), + Regular (Just "issuer" :>: + (Nothing :@: name)), + Regular (Just "validity" :>: + (Nothing :@: validity)), + Regular (Just "subject" :>: + (Nothing :@: name)), + Regular (Just "subjectPublicKeyInfo" :>: + (Nothing :@: subjectPublicKeyInfo))] + +data Certificate = + Certificate { + version3 :: Version, + serialNumber :: CertificateSerialNumber, + signature :: AlgorithmIdentifier, + issuer :: Name, + validity1 :: Validity, + subject :: Name, + subjectPublicKeyInfo2 :: SubjectPublicKeyInfo + } + deriving (Eq,Show) + +instance Encode Certificate where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + version = fromJust $ decode (as!!0) (bs!!0) + serialNumber = fromJust $ decode (as!!1) (bs!!1) + signature = fromJust $ decode (as!!2) (bs!!2) + issuer = fromJust $ decode (as!!3) (bs!!3) + validity = fromJust $ decode (as!!4) (bs!!4) + subject = fromJust $ decode (as!!5) (bs!!5) + subjectPublicKeyInfo = fromJust $ decode (as!!6) (bs!!6) + return $ + Certificate { + version3 = version, + serialNumber = serialNumber, + signature = signature, + issuer = issuer, + validity1 = validity, + subject = subject, + subjectPublicKeyInfo2 = subjectPublicKeyInfo + } + +signedCertificate = + "SignedCertificate" ::= + AbsSeq Universal 16 Implicit + [Regular (Nothing :>: (Nothing :@: certificate)), + Regular (Nothing :>: (Nothing :@: algorithmIdentifier)), + Regular (Nothing :>: (Nothing :@: absBitString))] + +data SignedCertificate = + SignedCertificate { + certificate1 :: Certificate, + algorithmIdentifier1 :: AlgorithmIdentifier, + octetString :: BitString + } + deriving (Eq,Show) + +instance Encode SignedCertificate where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + SignedCertificate { + certificate1 = fromJust $ decode (as!!0) (bs!!0), + algorithmIdentifier1 = fromJust $ decode (as!!1) (bs!!1), + octetString = fromJust $ decode (as!!2) (bs!!2) + } + +{- +RSAPublicKey ::= SEQUENCE { + modulus INTEGER, -- n + publicExponent INTEGER -- e +} +-} + +rsaPublicKey = + "RSAPublicKey" ::= + AbsSeq Universal 16 Implicit [ + Regular (Just "modulus" :>: (Nothing :@: absInteger)), + Regular (Just "publicExponent" :>: (Nothing :@: absInteger)) + ] + +data RSAPublicKey = + RSAPublicKey { + modulus1 :: Integer, + publicExponent1 :: Integer + } + deriving (Eq,Show) + +instance Encode RSAPublicKey where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + RSAPublicKey { + modulus1 = fromJust $ decode (as!!0) (bs!!0), + publicExponent1 = fromJust $ decode (as!!1) (bs!!1) + } + +version = modName "Version" absInteger + +type Version = Integer + +{- +We assume: + +Algorithm ::= OID + +although the situation is far more complicated. +See http://www.zvon.org/tmRFC/RFC2898/Output/chapter12.html. +-} + +algorithm = modName "Algorithm" absOID + +type Algorithm = OID + +{- +We assume: + +Parameters ::= NULL + +although the situation is far more complicated. +See http://www.zvon.org/tmRFC/RFC2898/Output/chapter12.html. +-} + +parameters = modName "Parameters" absNull + +type Parameters = NULL + +{- +See http://www.itu.int/ITU-T/asn1/database/itu-t/x/x509/1997/AuthenticationFramework.html#AuthenticationFramework.AlgorithmIdentifier. + +For now, the parameters will only ever be Nothing as this implementation +only supports RSA and this has no parameters. If the parameters +are non-NULL, we will report an error. + +See http://www.zvon.org/tmRFC/RFC3447/Output/index.html 10.1. A.1 RSA key representation: + +"The parameters field associated with this OID in a value of type AlgorithmIdentifier shall have a value of type NULL" +-} + +algorithmIdentifier = + "AlgorithmIdentifier" ::= + AbsSeq Universal 16 Implicit + [Regular (Just "algorithm" :>: (Nothing :@: algorithm)), + Regular (Just "parameters" :>: (Nothing :@: parameters))] + +data AlgorithmIdentifier = + AlgorithmIdentifier { + algorithm1 :: Algorithm, + parameters1 :: Maybe Parameters } + deriving (Eq,Show) + +instance Encode AlgorithmIdentifier where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return $ + AlgorithmIdentifier { + algorithm1 = fromJust $ decode (as!!0) (bs!!0), + parameters1 = Nothing + } + addfile ./dependencies/Crypto-2.0.0/Codec/Binary/Base64.hs hunk ./dependencies/Crypto-2.0.0/Codec/Binary/Base64.hs 1 - +----------------------------------------------------------------------------- +-- | +-- Module : Codec.Binary.Base64 +-- Copyright : (c) Dominic Steinitz 2005, Warrick Gray 2002 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Base64 encoding and decoding functions provided by Warwick Gray. +-- See +-- and . +-- +----------------------------------------------------------------------------- + +module Codec.Binary.Base64 ( + encode, + decode, + chop72 +) where + + + +{------------------------------------------------------------------------ +This is what RFC2045 had to say: + +6.8. Base64 Content-Transfer-Encoding + + The Base64 Content-Transfer-Encoding is designed to represent + arbitrary sequences of octets in a form that need not be humanly + readable. The encoding and decoding algorithms are simple, but the + encoded data are consistently only about 33 percent larger than the + unencoded data. This encoding is virtually identical to the one used + in Privacy Enhanced Mail (PEM) applications, as defined in RFC 1421. + + A 65-character subset of US-ASCII is used, enabling 6 bits to be + represented per printable character. (The extra 65th character, "=", + is used to signify a special processing function.) + + NOTE: This subset has the important property that it is represented + identically in all versions of ISO 646, including US-ASCII, and all + characters in the subset are also represented identically in all + versions of EBCDIC. Other popular encodings, such as the encoding + used by the uuencode utility, Macintosh binhex 4.0 [RFC-1741], and + the base85 encoding specified as part of Level 2 PostScript, do not + share these properties, and thus do not fulfill the portability + requirements a binary transport encoding for mail must meet. + + The encoding process represents 24-bit groups of input bits as output + strings of 4 encoded characters. Proceeding from left to right, a + 24-bit input group is formed by concatenating 3 8bit input groups. + These 24 bits are then treated as 4 concatenated 6-bit groups, each + of which is translated into a single digit in the base64 alphabet. + When encoding a bit stream via the base64 encoding, the bit stream + must be presumed to be ordered with the most-significant-bit first. + That is, the first bit in the stream will be the high-order bit in + the first 8bit byte, and the eighth bit will be the low-order bit in + the first 8bit byte, and so on. + + Each 6-bit group is used as an index into an array of 64 printable + characters. The character referenced by the index is placed in the + output string. These characters, identified in Table 1, below, are + selected so as to be universally representable, and the set excludes + characters with particular significance to SMTP (e.g., ".", CR, LF) + and to the multipart boundary delimiters defined in RFC 2046 (e.g., + "-"). + + + + Table 1: The Base64 Alphabet + + Value Encoding Value Encoding Value Encoding Value Encoding + 0 A 17 R 34 i 51 z + 1 B 18 S 35 j 52 0 + 2 C 19 T 36 k 53 1 + 3 D 20 U 37 l 54 2 + 4 E 21 V 38 m 55 3 + 5 F 22 W 39 n 56 4 + 6 G 23 X 40 o 57 5 + 7 H 24 Y 41 p 58 6 + 8 I 25 Z 42 q 59 7 + 9 J 26 a 43 r 60 8 + 10 K 27 b 44 s 61 9 + 11 L 28 c 45 t 62 + + 12 M 29 d 46 u 63 / + 13 N 30 e 47 v + 14 O 31 f 48 w (pad) = + 15 P 32 g 49 x + 16 Q 33 h 50 y + + The encoded output stream must be represented in lines of no more + than 76 characters each. All line breaks or other characters not + found in Table 1 must be ignored by decoding software. In base64 + data, characters other than those in Table 1, line breaks, and other + white space probably indicate a transmission error, about which a + warning message or even a message rejection might be appropriate + under some circumstances. + + Special processing is performed if fewer than 24 bits are available + at the end of the data being encoded. A full encoding quantum is + always completed at the end of a body. When fewer than 24 input bits + are available in an input group, zero bits are added (on the right) + to form an integral number of 6-bit groups. Padding at the end of + the data is performed using the "=" character. Since all base64 + input is an integral number of octets, only the following cases can + arise: (1) the final quantum of encoding input is an integral + multiple of 24 bits; here, the final unit of encoded output will be + an integral multiple of 4 characters with no "=" padding, (2) the + final quantum of encoding input is exactly 8 bits; here, the final + unit of encoded output will be two characters followed by two "=" + padding characters, or (3) the final quantum of encoding input is + exactly 16 bits; here, the final unit of encoded output will be three + characters followed by one "=" padding character. + + Because it is used only for padding at the end of the data, the + occurrence of any "=" characters may be taken as evidence that the + end of the data has been reached (without truncation in transit). No + such assurance is possible, however, when the number of octets + transmitted was a multiple of three and no "=" characters are + present. + + Any characters outside of the base64 alphabet are to be ignored in + base64-encoded data. + + Care must be taken to use the proper octets for line breaks if base64 + encoding is applied directly to text material that has not been + converted to canonical form. In particular, text line breaks must be + converted into CRLF sequences prior to base64 encoding. The + important thing to note is that this may be done directly by the + encoder rather than in a prior canonicalization step in some + implementations. + + NOTE: There is no need to worry about quoting potential boundary + delimiters within base64-encoded bodies within multipart entities + because no hyphen characters are used in the base64 encoding. + + +----------------------------------------------------------------------------} + + +{- + +The following properties should hold: + + decode . encode = id + decode . chop72 . encode = id + +I.E. Both "encode" and "chop72 . encode" are valid methods of encoding input, +the second variation corresponds better with the RFC above, but outside of +MIME applications might be undesireable. + + + +But: The Haskell98 Char type is at least 16bits (and often 32), these implementations assume only + 8 significant bits, which is more than enough for US-ASCII. +-} + + + + +import Data.Array +import Data.Bits +import Data.Int +import Data.Char (chr,ord) +import Codec.Utils (Octet) + +encodeArray :: Array Int Char +encodeArray = array (0,64) + [ (0,'A'), (1,'B'), (2,'C'), (3,'D'), (4,'E'), (5,'F') + , (6,'G'), (7,'H'), (8,'I'), (9,'J'), (10,'K'), (11,'L') + , (12,'M'), (13,'N'), (14,'O'), (15,'P'), (16,'Q'), (17,'R') + , (18,'S'), (19,'T'), (20,'U'), (21,'V'), (22,'W'), (23,'X') + , (24,'Y'), (25,'Z'), (26,'a'), (27,'b'), (28,'c'), (29,'d') + , (30,'e'), (31,'f'), (32,'g'), (33,'h'), (34,'i'), (35,'j') + , (36,'k'), (37,'l'), (38,'m'), (39,'n'), (40,'o'), (41,'p') + , (42,'q'), (43,'r'), (44,'s'), (45,'t'), (46,'u'), (47,'v') + , (48,'w'), (49,'x'), (50,'y'), (51,'z'), (52,'0'), (53,'1') + , (54,'2'), (55,'3'), (56,'4'), (57,'5'), (58,'6'), (59,'7') + , (60,'8'), (61,'9'), (62,'+'), (63,'/') ] + + +-- Convert between 4 base64 (6bits ea) integers and 1 ordinary integer (32 bits) +-- clearly the upmost/leftmost 8 bits of the answer are 0. +-- Hack Alert: In the last entry of the answer, the upper 8 bits encode +-- the integer number of 6bit groups encoded in that integer, ie 1, 2, 3. +-- 0 represents a 4 :( +int4_char3 :: [Int] -> [Char] +int4_char3 (a:b:c:d:t) = + let n = (a `shiftL` 18 .|. b `shiftL` 12 .|. c `shiftL` 6 .|. d) + in (chr (n `shiftR` 16 .&. 0xff)) + : (chr (n `shiftR` 8 .&. 0xff)) + : (chr (n .&. 0xff)) : int4_char3 t + +int4_char3 [a,b,c] = + let n = (a `shiftL` 18 .|. b `shiftL` 12 .|. c `shiftL` 6) + in [ (chr (n `shiftR` 16 .&. 0xff)) + , (chr (n `shiftR` 8 .&. 0xff)) ] + +int4_char3 [a,b] = + let n = (a `shiftL` 18 .|. b `shiftL` 12) + in [ (chr (n `shiftR` 16 .&. 0xff)) ] + +int4_char3 [] = [] + + + + +-- Convert triplets of characters to +-- 4 base64 integers. The last entries +-- in the list may not produce 4 integers, +-- a trailing 2 character group gives 3 integers, +-- while a trailing single character gives 2 integers. +char3_int4 :: [Char] -> [Int] +char3_int4 (a:b:c:t) + = let n = (ord a `shiftL` 16 .|. ord b `shiftL` 8 .|. ord c) + in (n `shiftR` 18 .&. 0x3f) : (n `shiftR` 12 .&. 0x3f) : (n `shiftR` 6 .&. 0x3f) : (n .&. 0x3f) : char3_int4 t + +char3_int4 [a,b] + = let n = (ord a `shiftL` 16 .|. ord b `shiftL` 8) + in [ (n `shiftR` 18 .&. 0x3f) + , (n `shiftR` 12 .&. 0x3f) + , (n `shiftR` 6 .&. 0x3f) ] + +char3_int4 [a] + = let n = (ord a `shiftL` 16) + in [(n `shiftR` 18 .&. 0x3f),(n `shiftR` 12 .&. 0x3f)] + +char3_int4 [] = [] + + +-- Retrieve base64 char, given an array index integer in the range [0..63] +enc1 :: Int -> Char +enc1 ch = encodeArray!ch + + +-- | Cut up a string into 72 char lines, each line terminated by CRLF. + +chop72 :: String -> String +chop72 str = let (bgn,end) = splitAt 70 str + in if null end then bgn else "\r\n" ++ chop72 end + + +-- Pads a base64 code to a multiple of 4 characters, using the special +-- '=' character. +quadruplets (a:b:c:d:t) = a:b:c:d:quadruplets t +quadruplets [a,b,c] = [a,b,c,'='] -- 16bit tail unit +quadruplets [a,b] = [a,b,'=','='] -- 8bit tail unit +quadruplets [] = [] -- 24bit tail unit + + +enc :: [Int] -> [Char] +enc = quadruplets . map enc1 + + +dcd [] = [] +dcd (h:t) + | h <= 'Z' && h >= 'A' = ord h - ord 'A' : dcd t + | h >= '0' && h <= '9' = ord h - ord '0' + 52 : dcd t + | h >= 'a' && h <= 'z' = ord h - ord 'a' + 26 : dcd t + | h == '+' = 62 : dcd t + | h == '/' = 63 : dcd t + | h == '=' = [] -- terminate data stream + | otherwise = dcd t + + +-- Principal encoding and decoding functions. + +encode :: [Octet] -> String +encode = enc . char3_int4 . (map (chr .fromIntegral)) + +{- +prop_base64 os = + os == (f . g . h) os + where types = (os :: [Word8]) + f = map (fromIntegral. ord) + g = decode . encode + h = map (chr . fromIntegral) +-} + +decode :: String -> [Octet] +decode = (map (fromIntegral . ord)) . int4_char3 . dcd addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/AES.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/AES.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.Encryption.AES +-- Copyright : (c) Dominic Steinitz 2004 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Takes the AES module supplied by Lukasz Anforowicz and wraps it so it can +-- used with the standard modes. +-- +----------------------------------------------------------------------------- + +module Codec.Encryption.AES ( + -- * Function Types + encrypt, decrypt) where + +import Codec.Encryption.AESAux +import Data.LargeWord +import Codec.Utils +import Data.Word +import Data.Bits + +class (Bits a, Integral a) => AESKey a + +instance AESKey Word128 +instance AESKey Word192 +instance AESKey Word256 + +-- | Basic AES encryption which takes a key and a block of plaintext +-- and returns the encrypted block of ciphertext according to the standard. + +encrypt :: AESKey a => a -> Word128 -> Word128 +encrypt k p = + case bitSize k of + 128 -> f aes128Encrypt k p + 192 -> f aes192Encrypt k p + 256 -> f aes256Encrypt k p + +f g k p = + fromIntegral $ fromOctets 256 $ + g (i2osp (bitSize k `div` bitSize (0::Octet)) $ fromIntegral k) + (i2osp (bitSize p `div` bitSize (0::Octet)) $ fromIntegral p) + +-- | Basic AES decryption which takes a key and a block of ciphertext and +-- returns the decrypted block of plaintext according to the standard. + +decrypt :: AESKey a => a -> Word128 -> Word128 +decrypt k p = + case bitSize k of + 128 -> f aes128Decrypt k p + 192 -> f aes192Decrypt k p + 256 -> f aes256Decrypt k p + addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/AESAux.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/AESAux.hs 1 +-- | Advanced Encryption System (specification can be found in FIPS-197) +module Codec.Encryption.AESAux( + aes128Encrypt, + aes192Encrypt, + aes256Encrypt, + aes128Decrypt, + aes192Decrypt, + aes256Decrypt, +) where + +import Data.Bits +import Data.Int(Int) +import Data.Word(Word32) + +import Codec.Utils(Octet) + +aes128Encrypt :: [Octet] -- ^ key (16 octets) + -> [Octet] -- ^ msg (16 octets) + -> [Octet] -- ^ enciphered msg (16 octets) +aes128Encrypt = aesEncrypt 10 4 + +aes192Encrypt :: [Octet] -- ^ key (24 octets) + -> [Octet] -- ^ msg (16 octets) + -> [Octet] -- ^ enciphered msg (16 octets) +aes192Encrypt = aesEncrypt 12 6 + +aes256Encrypt :: [Octet] -- ^ key (32 octets) + -> [Octet] -- ^ msg (16 octets) + -> [Octet] -- ^ enciphered msg (16 octets) +aes256Encrypt = aesEncrypt 14 8 + +aes128Decrypt :: [Octet] -- ^ key (16 octets) + -> [Octet] -- ^ enciphered msg (16 octets) + -> [Octet] -- ^ deciphered msg (16 octets) +aes128Decrypt = aesDecrypt 10 4 + +aes192Decrypt :: [Octet] -- ^ key (24 octets) + -> [Octet] -- ^ enciphered msg (16 octets) + -> [Octet] -- ^ deciphered msg (16 octets) +aes192Decrypt = aesDecrypt 12 6 + +aes256Decrypt :: [Octet] -- ^ key (32 octets) + -> [Octet] -- ^ enciphered msg (16 octets) + -> [Octet] -- ^ deciphered msg (16 octets) +aes256Decrypt = aesDecrypt 14 8 + +aesEncrypt :: Int -- ^ nr + -> Int -- ^ nk + -> [Octet] -- ^ key + -> [Octet] -- ^ msg + -> [Octet] -- ^ enciphered msg +aesEncrypt nr nk key + [i00, i10, i20, i30, + i01, i11, i21, i31, + i02, i12, i22, i32, + i03, i13, i23, i33] = + [fo o00, fo o10, fo o20, fo o30, + fo o01, fo o11, fo o21, fo o31, + fo o02, fo o12, fo o22, fo o32, + fo o03, fo o13, fo o23, fo o33] + where State (o00, o01, o02, o03) + (o10, o11, o12, o13) + (o20, o21, o22, o23) + (o30, o31, o32, o33) = transform ( + State(fi i00, fi i01, fi i02, fi i03) + (fi i10, fi i11, fi i12, fi i13) + (fi i20, fi i21, fi i22, fi i23) + (fi i30, fi i31, fi i32, fi i33)) + fi = (fromIntegral :: Octet -> Word32) + fo = (fromIntegral :: Word32 -> Octet) + (kt0:kts) = genAddRoundKey (generateKeys nr nk key) + transform = foldr (.) kt0 (reverse rest) + mss = replicate (nr - 1) (mixColumns . shiftRows . subBytes) + rest = zipWith (.) kts (mss ++ [shiftRows . subBytes ]) + + +aesDecrypt :: Int -- ^ nr + -> Int -- ^ nk + -> [Octet] -- ^ key + -> [Octet] -- ^ enciphered msg + -> [Octet] -- ^ deciphered msg +aesDecrypt nr nk key + [i00, i10, i20, i30, + i01, i11, i21, i31, + i02, i12, i22, i32, + i03, i13, i23, i33] = + [fo o00, fo o10, fo o20, fo o30, + fo o01, fo o11, fo o21, fo o31, + fo o02, fo o12, fo o22, fo o32, + fo o03, fo o13, fo o23, fo o33] + where State (o00, o01, o02, o03) + (o10, o11, o12, o13) + (o20, o21, o22, o23) + (o30, o31, o32, o33) = transform ( + State(fi i00, fi i01, fi i02, fi i03) + (fi i10, fi i11, fi i12, fi i13) + (fi i20, fi i21, fi i22, fi i23) + (fi i30, fi i31, fi i32, fi i33)) + fi = (fromIntegral :: Octet -> Word32) + fo = (fromIntegral :: Word32 -> Octet) + (kt0:kts) = reverse (genAddRoundKey (generateKeys nr nk key)) + transform = foldr (.) kt0 (reverse rest) + ssm = replicate (nr - 1) + (subBytesRev . shiftRowsRev . mixColumnsRev) + rest = zipWith (.) kts ([subBytesRev . shiftRowsRev] ++ ssm) + + + +data State = State !(Word32, Word32, Word32, Word32) + !(Word32, Word32, Word32, Word32) + !(Word32, Word32, Word32, Word32) + !(Word32, Word32, Word32, Word32) + +sbox :: Word32 -> Word32 +sboxRev :: Word32 -> Word32 + +sbox 0x00 = 0x63 +sbox 0x01 = 0x7C +sbox 0x02 = 0x77 +sbox 0x03 = 0x7B +sbox 0x04 = 0xF2 +sbox 0x05 = 0x6B +sbox 0x06 = 0x6F +sbox 0x07 = 0xC5 + +sbox 0x08 = 0x30 +sbox 0x09 = 0x01 +sbox 0x0a = 0x67 +sbox 0x0b = 0x2B +sbox 0x0c = 0xFE +sbox 0x0d = 0xD7 +sbox 0x0e = 0xAB +sbox 0x0f = 0x76 + +sbox 0x10 = 0xCA +sbox 0x11 = 0x82 +sbox 0x12 = 0xC9 +sbox 0x13 = 0x7D +sbox 0x14 = 0xFA +sbox 0x15 = 0x59 +sbox 0x16 = 0x47 +sbox 0x17 = 0xF0 + +sbox 0x18 = 0xAD +sbox 0x19 = 0xD4 +sbox 0x1a = 0xA2 +sbox 0x1b = 0xAF +sbox 0x1c = 0x9C +sbox 0x1d = 0xA4 +sbox 0x1e = 0x72 +sbox 0x1f = 0xC0 + +sbox 0x20 = 0xB7 +sbox 0x21 = 0xFD +sbox 0x22 = 0x93 +sbox 0x23 = 0x26 +sbox 0x24 = 0x36 +sbox 0x25 = 0x3F +sbox 0x26 = 0xF7 +sbox 0x27 = 0xCC + +sbox 0x28 = 0x34 +sbox 0x29 = 0xA5 +sbox 0x2a = 0xE5 +sbox 0x2b = 0xF1 +sbox 0x2c = 0x71 +sbox 0x2d = 0xD8 +sbox 0x2e = 0x31 +sbox 0x2f = 0x15 + +sbox 0x30 = 0x04 +sbox 0x31 = 0xC7 +sbox 0x32 = 0x23 +sbox 0x33 = 0xC3 +sbox 0x34 = 0x18 +sbox 0x35 = 0x96 +sbox 0x36 = 0x05 +sbox 0x37 = 0x9A + +sbox 0x38 = 0x07 +sbox 0x39 = 0x12 +sbox 0x3a = 0x80 +sbox 0x3b = 0xE2 +sbox 0x3c = 0xEB +sbox 0x3d = 0x27 +sbox 0x3e = 0xB2 +sbox 0x3f = 0x75 + +sbox 0x40 = 0x09 +sbox 0x41 = 0x83 +sbox 0x42 = 0x2C +sbox 0x43 = 0x1A +sbox 0x44 = 0x1B +sbox 0x45 = 0x6E +sbox 0x46 = 0x5A +sbox 0x47 = 0xA0 + +sbox 0x48 = 0x52 +sbox 0x49 = 0x3B +sbox 0x4a = 0xD6 +sbox 0x4b = 0xB3 +sbox 0x4c = 0x29 +sbox 0x4d = 0xE3 +sbox 0x4e = 0x2F +sbox 0x4f = 0x84 + +sbox 0x50 = 0x53 +sbox 0x51 = 0xD1 +sbox 0x52 = 0x00 +sbox 0x53 = 0xED +sbox 0x54 = 0x20 +sbox 0x55 = 0xFC +sbox 0x56 = 0xB1 +sbox 0x57 = 0x5B + +sbox 0x58 = 0x6A +sbox 0x59 = 0xCB +sbox 0x5a = 0xBE +sbox 0x5b = 0x39 +sbox 0x5c = 0x4A +sbox 0x5d = 0x4C +sbox 0x5e = 0x58 +sbox 0x5f = 0xCF + +sbox 0x60 = 0xD0 +sbox 0x61 = 0xEF +sbox 0x62 = 0xAA +sbox 0x63 = 0xFB +sbox 0x64 = 0x43 +sbox 0x65 = 0x4D +sbox 0x66 = 0x33 +sbox 0x67 = 0x85 + +sbox 0x68 = 0x45 +sbox 0x69 = 0xF9 +sbox 0x6a = 0x02 +sbox 0x6b = 0x7F +sbox 0x6c = 0x50 +sbox 0x6d = 0x3C +sbox 0x6e = 0x9F +sbox 0x6f = 0xA8 + +sbox 0x70 = 0x51 +sbox 0x71 = 0xA3 +sbox 0x72 = 0x40 +sbox 0x73 = 0x8F +sbox 0x74 = 0x92 +sbox 0x75 = 0x9D +sbox 0x76 = 0x38 +sbox 0x77 = 0xF5 + +sbox 0x78 = 0xBC +sbox 0x79 = 0xB6 +sbox 0x7a = 0xDA +sbox 0x7b = 0x21 +sbox 0x7c = 0x10 +sbox 0x7d = 0xFF +sbox 0x7e = 0xF3 +sbox 0x7f = 0xD2 + +sbox 0x80 = 0xCD +sbox 0x81 = 0x0C +sbox 0x82 = 0x13 +sbox 0x83 = 0xEC +sbox 0x84 = 0x5F +sbox 0x85 = 0x97 +sbox 0x86 = 0x44 +sbox 0x87 = 0x17 + +sbox 0x88 = 0xC4 +sbox 0x89 = 0xA7 +sbox 0x8a = 0x7E +sbox 0x8b = 0x3D +sbox 0x8c = 0x64 +sbox 0x8d = 0x5D +sbox 0x8e = 0x19 +sbox 0x8f = 0x73 + +sbox 0x90 = 0x60 +sbox 0x91 = 0x81 +sbox 0x92 = 0x4F +sbox 0x93 = 0xDC +sbox 0x94 = 0x22 +sbox 0x95 = 0x2A +sbox 0x96 = 0x90 +sbox 0x97 = 0x88 + +sbox 0x98 = 0x46 +sbox 0x99 = 0xEE +sbox 0x9a = 0xB8 +sbox 0x9b = 0x14 +sbox 0x9c = 0xDE +sbox 0x9d = 0x5E +sbox 0x9e = 0x0B +sbox 0x9f = 0xDB + +sbox 0xa0 = 0xE0 +sbox 0xa1 = 0x32 +sbox 0xa2 = 0x3A +sbox 0xa3 = 0x0A +sbox 0xa4 = 0x49 +sbox 0xa5 = 0x06 +sbox 0xa6 = 0x24 +sbox 0xa7 = 0x5C + +sbox 0xa8 = 0xC2 +sbox 0xa9 = 0xD3 +sbox 0xaa = 0xAC +sbox 0xab = 0x62 +sbox 0xac = 0x91 +sbox 0xad = 0x95 +sbox 0xae = 0xE4 +sbox 0xaf = 0x79 + +sbox 0xb0 = 0xE7 +sbox 0xb1 = 0xC8 +sbox 0xb2 = 0x37 +sbox 0xb3 = 0x6D +sbox 0xb4 = 0x8D +sbox 0xb5 = 0xD5 +sbox 0xb6 = 0x4E +sbox 0xb7 = 0xA9 + +sbox 0xb8 = 0x6C +sbox 0xb9 = 0x56 +sbox 0xba = 0xF4 +sbox 0xbb = 0xEA +sbox 0xbc = 0x65 +sbox 0xbd = 0x7A +sbox 0xbe = 0xAE +sbox 0xbf = 0x08 + +sbox 0xc0 = 0xBA +sbox 0xc1 = 0x78 +sbox 0xc2 = 0x25 +sbox 0xc3 = 0x2E +sbox 0xc4 = 0x1C +sbox 0xc5 = 0xA6 +sbox 0xc6 = 0xB4 +sbox 0xc7 = 0xC6 + +sbox 0xc8 = 0xE8 +sbox 0xc9 = 0xDD +sbox 0xca = 0x74 +sbox 0xcb = 0x1F +sbox 0xcc = 0x4B +sbox 0xcd = 0xBD +sbox 0xce = 0x8B +sbox 0xcf = 0x8A + +sbox 0xd0 = 0x70 +sbox 0xd1 = 0x3E +sbox 0xd2 = 0xB5 +sbox 0xd3 = 0x66 +sbox 0xd4 = 0x48 +sbox 0xd5 = 0x03 +sbox 0xd6 = 0xF6 +sbox 0xd7 = 0x0E + +sbox 0xd8 = 0x61 +sbox 0xd9 = 0x35 +sbox 0xda = 0x57 +sbox 0xdb = 0xB9 +sbox 0xdc = 0x86 +sbox 0xdd = 0xC1 +sbox 0xde = 0x1D +sbox 0xdf = 0x9E + +sbox 0xe0 = 0xE1 +sbox 0xe1 = 0xF8 +sbox 0xe2 = 0x98 +sbox 0xe3 = 0x11 +sbox 0xe4 = 0x69 +sbox 0xe5 = 0xD9 +sbox 0xe6 = 0x8E +sbox 0xe7 = 0x94 + +sbox 0xe8 = 0x9B +sbox 0xe9 = 0x1E +sbox 0xea = 0x87 +sbox 0xeb = 0xE9 +sbox 0xec = 0xCE +sbox 0xed = 0x55 +sbox 0xee = 0x28 +sbox 0xef = 0xDF + +sbox 0xf0 = 0x8C +sbox 0xf1 = 0xA1 +sbox 0xf2 = 0x89 +sbox 0xf3 = 0x0D +sbox 0xf4 = 0xBF +sbox 0xf5 = 0xE6 +sbox 0xf6 = 0x42 +sbox 0xf7 = 0x68 + +sbox 0xf8 = 0x41 +sbox 0xf9 = 0x99 +sbox 0xfa = 0x2D +sbox 0xfb = 0x0F +sbox 0xfc = 0xB0 +sbox 0xfd = 0x54 +sbox 0xfe = 0xBB +sbox 0xff = 0x16 + +{----} + +sboxRev 0x63 = 0x00 +sboxRev 0x7C = 0x01 +sboxRev 0x77 = 0x02 +sboxRev 0x7B = 0x03 +sboxRev 0xF2 = 0x04 +sboxRev 0x6B = 0x05 +sboxRev 0x6F = 0x06 +sboxRev 0xC5 = 0x07 + +sboxRev 0x30 = 0x08 +sboxRev 0x01 = 0x09 +sboxRev 0x67 = 0x0a +sboxRev 0x2B = 0x0b +sboxRev 0xFE = 0x0c +sboxRev 0xD7 = 0x0d +sboxRev 0xAB = 0x0e +sboxRev 0x76 = 0x0f + +sboxRev 0xCA = 0x10 +sboxRev 0x82 = 0x11 +sboxRev 0xC9 = 0x12 +sboxRev 0x7D = 0x13 +sboxRev 0xFA = 0x14 +sboxRev 0x59 = 0x15 +sboxRev 0x47 = 0x16 +sboxRev 0xF0 = 0x17 + +sboxRev 0xAD = 0x18 +sboxRev 0xD4 = 0x19 +sboxRev 0xA2 = 0x1a +sboxRev 0xAF = 0x1b +sboxRev 0x9C = 0x1c +sboxRev 0xA4 = 0x1d +sboxRev 0x72 = 0x1e +sboxRev 0xC0 = 0x1f + +sboxRev 0xB7 = 0x20 +sboxRev 0xFD = 0x21 +sboxRev 0x93 = 0x22 +sboxRev 0x26 = 0x23 +sboxRev 0x36 = 0x24 +sboxRev 0x3F = 0x25 +sboxRev 0xF7 = 0x26 +sboxRev 0xCC = 0x27 + +sboxRev 0x34 = 0x28 +sboxRev 0xA5 = 0x29 +sboxRev 0xE5 = 0x2a +sboxRev 0xF1 = 0x2b +sboxRev 0x71 = 0x2c +sboxRev 0xD8 = 0x2d +sboxRev 0x31 = 0x2e +sboxRev 0x15 = 0x2f + +sboxRev 0x04 = 0x30 +sboxRev 0xC7 = 0x31 +sboxRev 0x23 = 0x32 +sboxRev 0xC3 = 0x33 +sboxRev 0x18 = 0x34 +sboxRev 0x96 = 0x35 +sboxRev 0x05 = 0x36 +sboxRev 0x9A = 0x37 + +sboxRev 0x07 = 0x38 +sboxRev 0x12 = 0x39 +sboxRev 0x80 = 0x3a +sboxRev 0xE2 = 0x3b +sboxRev 0xEB = 0x3c +sboxRev 0x27 = 0x3d +sboxRev 0xB2 = 0x3e +sboxRev 0x75 = 0x3f + +sboxRev 0x09 = 0x40 +sboxRev 0x83 = 0x41 +sboxRev 0x2C = 0x42 +sboxRev 0x1A = 0x43 +sboxRev 0x1B = 0x44 +sboxRev 0x6E = 0x45 +sboxRev 0x5A = 0x46 +sboxRev 0xA0 = 0x47 + +sboxRev 0x52 = 0x48 +sboxRev 0x3B = 0x49 +sboxRev 0xD6 = 0x4a +sboxRev 0xB3 = 0x4b +sboxRev 0x29 = 0x4c +sboxRev 0xE3 = 0x4d +sboxRev 0x2F = 0x4e +sboxRev 0x84 = 0x4f + +sboxRev 0x53 = 0x50 +sboxRev 0xD1 = 0x51 +sboxRev 0x00 = 0x52 +sboxRev 0xED = 0x53 +sboxRev 0x20 = 0x54 +sboxRev 0xFC = 0x55 +sboxRev 0xB1 = 0x56 +sboxRev 0x5B = 0x57 + +sboxRev 0x6A = 0x58 +sboxRev 0xCB = 0x59 +sboxRev 0xBE = 0x5a +sboxRev 0x39 = 0x5b +sboxRev 0x4A = 0x5c +sboxRev 0x4C = 0x5d +sboxRev 0x58 = 0x5e +sboxRev 0xCF = 0x5f + +sboxRev 0xD0 = 0x60 +sboxRev 0xEF = 0x61 +sboxRev 0xAA = 0x62 +sboxRev 0xFB = 0x63 +sboxRev 0x43 = 0x64 +sboxRev 0x4D = 0x65 +sboxRev 0x33 = 0x66 +sboxRev 0x85 = 0x67 + +sboxRev 0x45 = 0x68 +sboxRev 0xF9 = 0x69 +sboxRev 0x02 = 0x6a +sboxRev 0x7F = 0x6b +sboxRev 0x50 = 0x6c +sboxRev 0x3C = 0x6d +sboxRev 0x9F = 0x6e +sboxRev 0xA8 = 0x6f + +sboxRev 0x51 = 0x70 +sboxRev 0xA3 = 0x71 +sboxRev 0x40 = 0x72 +sboxRev 0x8F = 0x73 +sboxRev 0x92 = 0x74 +sboxRev 0x9D = 0x75 +sboxRev 0x38 = 0x76 +sboxRev 0xF5 = 0x77 + +sboxRev 0xBC = 0x78 +sboxRev 0xB6 = 0x79 +sboxRev 0xDA = 0x7a +sboxRev 0x21 = 0x7b +sboxRev 0x10 = 0x7c +sboxRev 0xFF = 0x7d +sboxRev 0xF3 = 0x7e +sboxRev 0xD2 = 0x7f + +sboxRev 0xCD = 0x80 +sboxRev 0x0C = 0x81 +sboxRev 0x13 = 0x82 +sboxRev 0xEC = 0x83 +sboxRev 0x5F = 0x84 +sboxRev 0x97 = 0x85 +sboxRev 0x44 = 0x86 +sboxRev 0x17 = 0x87 + +sboxRev 0xC4 = 0x88 +sboxRev 0xA7 = 0x89 +sboxRev 0x7E = 0x8a +sboxRev 0x3D = 0x8b +sboxRev 0x64 = 0x8c +sboxRev 0x5D = 0x8d +sboxRev 0x19 = 0x8e +sboxRev 0x73 = 0x8f + +sboxRev 0x60 = 0x90 +sboxRev 0x81 = 0x91 +sboxRev 0x4F = 0x92 +sboxRev 0xDC = 0x93 +sboxRev 0x22 = 0x94 +sboxRev 0x2A = 0x95 +sboxRev 0x90 = 0x96 +sboxRev 0x88 = 0x97 + +sboxRev 0x46 = 0x98 +sboxRev 0xEE = 0x99 +sboxRev 0xB8 = 0x9a +sboxRev 0x14 = 0x9b +sboxRev 0xDE = 0x9c +sboxRev 0x5E = 0x9d +sboxRev 0x0B = 0x9e +sboxRev 0xDB = 0x9f + +sboxRev 0xE0 = 0xa0 +sboxRev 0x32 = 0xa1 +sboxRev 0x3A = 0xa2 +sboxRev 0x0A = 0xa3 +sboxRev 0x49 = 0xa4 +sboxRev 0x06 = 0xa5 +sboxRev 0x24 = 0xa6 +sboxRev 0x5C = 0xa7 + +sboxRev 0xC2 = 0xa8 +sboxRev 0xD3 = 0xa9 +sboxRev 0xAC = 0xaa +sboxRev 0x62 = 0xab +sboxRev 0x91 = 0xac +sboxRev 0x95 = 0xad +sboxRev 0xE4 = 0xae +sboxRev 0x79 = 0xaf + +sboxRev 0xE7 = 0xb0 +sboxRev 0xC8 = 0xb1 +sboxRev 0x37 = 0xb2 +sboxRev 0x6D = 0xb3 +sboxRev 0x8D = 0xb4 +sboxRev 0xD5 = 0xb5 +sboxRev 0x4E = 0xb6 +sboxRev 0xA9 = 0xb7 + +sboxRev 0x6C = 0xb8 +sboxRev 0x56 = 0xb9 +sboxRev 0xF4 = 0xba +sboxRev 0xEA = 0xbb +sboxRev 0x65 = 0xbc +sboxRev 0x7A = 0xbd +sboxRev 0xAE = 0xbe +sboxRev 0x08 = 0xbf + +sboxRev 0xBA = 0xc0 +sboxRev 0x78 = 0xc1 +sboxRev 0x25 = 0xc2 +sboxRev 0x2E = 0xc3 +sboxRev 0x1C = 0xc4 +sboxRev 0xA6 = 0xc5 +sboxRev 0xB4 = 0xc6 +sboxRev 0xC6 = 0xc7 + +sboxRev 0xE8 = 0xc8 +sboxRev 0xDD = 0xc9 +sboxRev 0x74 = 0xca +sboxRev 0x1F = 0xcb +sboxRev 0x4B = 0xcc +sboxRev 0xBD = 0xcd +sboxRev 0x8B = 0xce +sboxRev 0x8A = 0xcf + +sboxRev 0x70 = 0xd0 +sboxRev 0x3E = 0xd1 +sboxRev 0xB5 = 0xd2 +sboxRev 0x66 = 0xd3 +sboxRev 0x48 = 0xd4 +sboxRev 0x03 = 0xd5 +sboxRev 0xF6 = 0xd6 +sboxRev 0x0E = 0xd7 + +sboxRev 0x61 = 0xd8 +sboxRev 0x35 = 0xd9 +sboxRev 0x57 = 0xda +sboxRev 0xB9 = 0xdb +sboxRev 0x86 = 0xdc +sboxRev 0xC1 = 0xdd +sboxRev 0x1D = 0xde +sboxRev 0x9E = 0xdf + +sboxRev 0xE1 = 0xe0 +sboxRev 0xF8 = 0xe1 +sboxRev 0x98 = 0xe2 +sboxRev 0x11 = 0xe3 +sboxRev 0x69 = 0xe4 +sboxRev 0xD9 = 0xe5 +sboxRev 0x8E = 0xe6 +sboxRev 0x94 = 0xe7 + +sboxRev 0x9B = 0xe8 +sboxRev 0x1E = 0xe9 +sboxRev 0x87 = 0xea +sboxRev 0xE9 = 0xeb +sboxRev 0xCE = 0xec +sboxRev 0x55 = 0xed +sboxRev 0x28 = 0xee +sboxRev 0xDF = 0xef + +sboxRev 0x8C = 0xf0 +sboxRev 0xA1 = 0xf1 +sboxRev 0x89 = 0xf2 +sboxRev 0x0D = 0xf3 +sboxRev 0xBF = 0xf4 +sboxRev 0xE6 = 0xf5 +sboxRev 0x42 = 0xf6 +sboxRev 0x68 = 0xf7 + +sboxRev 0x41 = 0xf8 +sboxRev 0x99 = 0xf9 +sboxRev 0x2D = 0xfa +sboxRev 0x0F = 0xfb +sboxRev 0xB0 = 0xfc +sboxRev 0x54 = 0xfd +sboxRev 0xBB = 0xfe +sboxRev 0x16 = 0xff + +xtime :: Word32 -> Word32 +xtime x = b + where a = x `shiftL` 1 + b = if a .&. (0x0100) == 0 then a else a `xor` 0x11b + +xtimeX2 :: Word32 -> Word32 +--xtimeX2 = xtime . xtime +xtimeX2 x = c + where a = x `shiftL` 2 + b = if a .&. (0x0200) == 0 then a else a `xor` 0x236 + c = if b .&. (0x0100) == 0 then b else b `xor` 0x11b + +xtimeX3 :: Word32 -> Word32 +--xtimeX3 = xtime . xtime . xtime +xtimeX3 x = d + where a = x `shiftL` 3 + b = if a .&. (0x0400) == 0 then a else a `xor` 0x46c + c = if b .&. (0x0200) == 0 then b else b `xor` 0x236 + d = if c .&. (0x0100) == 0 then c else c `xor` 0x11b + +xtime03 :: Word32 -> Word32 +xtime03 x = x `xor` (xtime x) + +xtime0e :: Word32 -> Word32 +xtime0e x = xtime (x `xor` (xtime (x `xor` (xtime x)))) + +xtime09 :: Word32 -> Word32 +xtime09 x = x `xor` (xtimeX3 x) + +xtime0d :: Word32 -> Word32 +xtime0d x = x `xor` (xtimeX2 (x `xor` (xtime x))) + +xtime0b :: Word32 -> Word32 +xtime0b x = x `xor` (xtime (x `xor` (xtimeX2 x))) + +generateKey :: Int -> Int -> Word32 -> Word32 -> Word32 +generateKey nk i wIminus1 wIminusNk = + (temp' `xor` wIminusNk) + where temp' = + if (i `mod` nk) == 0 then (subword(rotword temp)) `xor` rcon + else if (nk > 6) && ((i `mod` nk) == 4) then subword temp + else temp + temp = wIminus1 + subword :: Word32 -> Word32 + subword w = (a `shiftL` 24) .|. (b `shiftL` 16) .|. + (c `shiftL` 8) .|. d + where a = sbox ((w `shiftR` 24) .&. 0xff) + b = sbox ((w `shiftR` 16) .&. 0xff) + c = sbox ((w `shiftR` 8) .&. 0xff) + d = sbox ( w .&. 0xff) + rotword :: Word32 -> Word32 + rotword w = w `rotateL` 8 + rcon :: Word32 + rcon = ((fromIntegral rconMSB)::Word32) `shiftL` 24 + rconMSB = (iterate xtime 0x01) !! ((i `div` nk) - 1) + +wordify :: [Octet] -> [Word32] +wordify [] = [] +wordify octets = firstWord:otherWords + where + (firstWord, otherOctets) = getWord32 octets + otherWords = wordify otherOctets + +generateKeys :: Int -> Int -> [Octet] -> [Word32] +generateKeys nr nk mainKey = + -- assert ((nk * 4) == length mainKey) $ + (take (4 * (nr + 1)) xs) + where + xs = (wordify mainKey) ++ (zipWith3 (generateKey nk) + (drop nk [0,1..]) + (drop (nk - 1) xs) + xs + ) + +subBytes :: State -> State +subBytes (State (s00, s01, s02, s03) + (s10, s11, s12, s13) + (s20, s21, s22, s23) + (s30, s31, s32, s33)) = + State (sbox s00, sbox s01, sbox s02, sbox s03) + (sbox s10, sbox s11, sbox s12, sbox s13) + (sbox s20, sbox s21, sbox s22, sbox s23) + (sbox s30, sbox s31, sbox s32, sbox s33) + +subBytesRev :: State -> State +subBytesRev (State (s00, s01, s02, s03) + (s10, s11, s12, s13) + (s20, s21, s22, s23) + (s30, s31, s32, s33)) = + State (sboxRev s00, sboxRev s01, sboxRev s02, sboxRev s03) + (sboxRev s10, sboxRev s11, sboxRev s12, sboxRev s13) + (sboxRev s20, sboxRev s21, sboxRev s22, sboxRev s23) + (sboxRev s30, sboxRev s31, sboxRev s32, sboxRev s33) + +shiftRows :: State -> State +shiftRows (State (s00, s01, s02, s03) + (s10, s11, s12, s13) + (s20, s21, s22, s23) + (s30, s31, s32, s33)) = + State (s00, s01, s02, s03) + (s11, s12, s13, s10) + (s22, s23, s20, s21) + (s33, s30, s31, s32) + +shiftRowsRev :: State -> State +shiftRowsRev (State (s00, s01, s02, s03) + (s10, s11, s12, s13) + (s20, s21, s22, s23) + (s30, s31, s32, s33)) = + State (s00, s01, s02, s03) + (s13, s10, s11, s12) + (s22, s23, s20, s21) + (s31, s32, s33, s30) + +mixColumn:: (Word32, Word32, Word32, Word32) -> (Word32, Word32, Word32, Word32) +mixColumn (s0,s1,s2,s3) = + ((xtime s0) `xor` (xtime03 s1) `xor` s2 `xor` s3 , + s0 `xor` (xtime s1) `xor` (xtime03 s2) `xor` s3 , + s0 `xor` s1 `xor` (xtime s2) `xor` (xtime03 s3), + (xtime03 s0) `xor` s1 `xor` s2 `xor` (xtime s3)) + +mixColumns :: State -> State +mixColumns (State (s00, s01, s02, s03) + (s10, s11, s12, s13) + (s20, s21, s22, s23) + (s30, s31, s32, s33)) = + State (r00, r01, r02, r03) + (r10, r11, r12, r13) + (r20, r21, r22, r23) + (r30, r31, r32, r33) + where (r00, r10, r20, r30) = mixColumn (s00, s10, s20, s30) + (r01, r11, r21, r31) = mixColumn (s01, s11, s21, s31) + (r02, r12, r22, r32) = mixColumn (s02, s12, s22, s32) + (r03, r13, r23, r33) = mixColumn (s03, s13, s23, s33) + +mixColumnRev :: (Word32, Word32, Word32, Word32) + -> (Word32, Word32, Word32, Word32) +mixColumnRev (s0,s1,s2,s3) = + ((xtime0e s0) `xor` (xtime0b s1) `xor` (xtime0d s2) `xor` (xtime09 s3), + (xtime09 s0) `xor` (xtime0e s1) `xor` (xtime0b s2) `xor` (xtime0d s3), + (xtime0d s0) `xor` (xtime09 s1) `xor` (xtime0e s2) `xor` (xtime0b s3), + (xtime0b s0) `xor` (xtime0d s1) `xor` (xtime09 s2) `xor` (xtime0e s3)) + +mixColumnsRev :: State -> State +mixColumnsRev (State (s00, s01, s02, s03) + (s10, s11, s12, s13) + (s20, s21, s22, s23) + (s30, s31, s32, s33)) = + State (r00, r01, r02, r03) + (r10, r11, r12, r13) + (r20, r21, r22, r23) + (r30, r31, r32, r33) + where (r00, r10, r20, r30) = mixColumnRev (s00, s10, s20, s30) + (r01, r11, r21, r31) = mixColumnRev (s01, s11, s21, s31) + (r02, r12, r22, r32) = mixColumnRev (s02, s12, s22, s32) + (r03, r13, r23, r33) = mixColumnRev (s03, s13, s23, s33) + +addRoundKey :: State -> State -> State +addRoundKey (State (k00, k01, k02, k03) + (k10, k11, k12, k13) + (k20, k21, k22, k23) + (k30, k31, k32, k33)) + (State (s00, s01, s02, s03) + (s10, s11, s12, s13) + (s20, s21, s22, s23) + (s30, s31, s32, s33)) = + State (s00 `xor` k00, s01 `xor` k01, s02 `xor` k02, s03 `xor` k03) + (s10 `xor` k10, s11 `xor` k11, s12 `xor` k12, s13 `xor` k13) + (s20 `xor` k20, s21 `xor` k21, s22 `xor` k22, s23 `xor` k23) + (s30 `xor` k30, s31 `xor` k31, s32 `xor` k32, s33 `xor` k33) + +genAddRoundKey :: [Word32] -> [State -> State] +genAddRoundKey [] = [] +genAddRoundKey (a:b:c:d:ks) = (addRoundKey k):(genAddRoundKey ks) + where k = State (fromIntegral s00, fromIntegral s01, + fromIntegral s02, fromIntegral s03) + (fromIntegral s10, fromIntegral s11, + fromIntegral s12, fromIntegral s13) + (fromIntegral s20, fromIntegral s21, + fromIntegral s22, fromIntegral s23) + (fromIntegral s30, fromIntegral s31, + fromIntegral s32, fromIntegral s33) + [s00, s10, s20, s30] = putWord32 a + [s01, s11, s21, s31] = putWord32 b + [s02, s12, s22, s32] = putWord32 c + [s03, s13, s23, s33] = putWord32 d + +getWord32 :: [Octet] -> (Word32, [Octet]) +getWord32 (a:b:c:d:xs) = (x, xs) + where + x = ((fromIntegral a) `shiftL` 24) .|. + ((fromIntegral b) `shiftL` 16) .|. + ((fromIntegral c) `shiftL` 8) .|. + ((fromIntegral d) ) + +putWord32 :: Word32 -> [Octet] +--a bit slower putWord32 x = map fromIntegral [a,b,c,d] +putWord32 x = [fromIntegral a, fromIntegral b, fromIntegral c, fromIntegral d] + where + a = (x `shiftR` 24) + b = (x `shiftR` 16) .&. 255 + c = (x `shiftR` 8) .&. 255 + d = (x ) .&. 255 + +{- +testGenerateKeys128 :: Test +testGenerateKeys128 = + let key = [0x2b, 0x7e, 0x15, 0x16, + 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, + 0x09, 0xcf, 0x4f, 0x3c] + expected = [0x2b7e1516, 0x28aed2a6, 0xabf71588, 0x09cf4f3c, + 0xa0fafe17, 0x88542cb1, 0x23a33939, 0x2a6c7605, + 0xf2c295f2, 0x7a96b943, 0x5935807a, 0x7359f67f, + 0x3d80477d, 0x4716fe3e, 0x1e237e44, 0x6d7a883b, + 0xef44a541, 0xa8525b7f, 0xb671253b, 0xdb0bad00, + 0xd4d1c6f8, 0x7c839d87, 0xcaf2b8bc, 0x11f915bc, + 0x6d88a37a, 0x110b3efd, 0xdbf98641, 0xca0093fd, + 0x4e54f70e, 0x5f5fc9f3, 0x84a64fb2, 0x4ea6dc4f, + 0xead27321, 0xb58dbad2, 0x312bf560, 0x7f8d292f, + 0xac7766f3, 0x19fadc21, 0x28d12941, 0x575c006e, + 0xd014f9a8, 0xc9ee2589, 0xe13f0cc8, 0xb6630ca6 + ] + in TestCase (do + assertEqual "" expected (generateKeys 10 4 key) + ) + + +testGenerateKeys192 :: Test +testGenerateKeys192 = + let key = [0x8e, 0x73, 0xb0, 0xf7, + 0xda, 0x0e, 0x64, 0x52, + 0xc8, 0x10, 0xf3, 0x2b, + 0x80, 0x90, 0x79, 0xe5, + 0x62, 0xf8, 0xea, 0xd2, + 0x52, 0x2c, 0x6b, 0x7b] + expected = [0x8e73b0f7, 0xda0e6452, 0xc810f32b, 0x809079e5, + 0x62f8ead2, 0x522c6b7b, 0xfe0c91f7, 0x2402f5a5, + 0xec12068e, 0x6c827f6b, 0x0e7a95b9, 0x5c56fec2, + 0x4db7b4bd, 0x69b54118, 0x85a74796, 0xe92538fd, + 0xe75fad44, 0xbb095386, 0x485af057, 0x21efb14f + ] + in TestCase (do + assertEqual "" expected + (take (length expected) (generateKeys 12 6 key)) + ) + +testGenerateKeys256 :: Test +testGenerateKeys256 = + let key = [0x60, 0x3d, 0xeb, 0x10, + 0x15, 0xca, 0x71, 0xbe, + 0x2b, 0x73, 0xae, 0xf0, + 0x85, 0x7d, 0x77, 0x81, + 0x1f, 0x35, 0x2c, 0x07, + 0x3b, 0x61, 0x08, 0xd7, + 0x2d, 0x98, 0x10, 0xa3, + 0x09, 0x14, 0xdf, 0xf4] + expected = [0x603deb10, 0x15ca71be, 0x2b73aef0, 0x857d7781, + 0x1f352c07, 0x3b6108d7, 0x2d9810a3, 0x0914dff4, + 0x9ba35411, 0x8e6925af, 0xa51a8b5f, 0x2067fcde, + 0xa8b09c1a, 0x93d194cd, 0xbe49846e, 0xb75d5b9a, + 0xd59aecb8, 0x5bf3c917, 0xfee94248, 0xde8ebe96 + ] + in TestCase (do + assertEqual "" expected + (take (length expected) (generateKeys 14 8 key)) + ) + +testAes128 :: Test +testAes128 = + let key = [0x2b, 0x7e, 0x15, 0x16, + 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, + 0x09, 0xcf, 0x4f, 0x3c] + input = [0x32, 0x43, 0xf6, 0xa8, + 0x88, 0x5a, 0x30, 0x8d, + 0x31, 0x31, 0x98, 0xa2, + 0xe0, 0x37, 0x07, 0x34] + output = [0x39, 0x25, 0x84, 0x1d, + 0x02, 0xdc, 0x09, 0xfb, + 0xdc, 0x11, 0x85, 0x97, + 0x19, 0x6a, 0x0b, 0x32] + in TestCase (do + assertEqual "encrypt test" output (aes128Encrypt key input) + assertEqual "encrypt/decrypt test" input + (aes128Decrypt key (aes128Encrypt key input)) + ) + +testAesRandom :: Test +testAesRandom = + TestCase (do + key128 <- getRandomOctets 16 + key192 <- getRandomOctets 24 + key256 <- getRandomOctets 32 + msg <- getRandomOctets 16 + assertEqual "aes128" msg + (aes128Decrypt key128 (aes128Encrypt key128 msg)) + assertEqual "aes192" msg + (aes192Decrypt key192 (aes192Encrypt key192 msg)) + assertEqual "aes256" msg + (aes256Decrypt key256 (aes256Encrypt key256 msg)) + ) + +-- | HUnit tests +tests :: Test +tests = TestList [ + TestLabel "testGenerateKeys128" testGenerateKeys128, + TestLabel "testGenerateKeys192" testGenerateKeys192, + TestLabel "testGenerateKeys256" testGenerateKeys256, + TestLabel "testAes128" testAes128, + TestLabel "testAesRandom" testAesRandom + ] +-} + addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/Blowfish.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/Blowfish.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Coded.Encryption.Blowfish +-- Copyright : (c) Dominic Steinitz 2003 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : non-portable +-- +-- Takes the Blowfish module supplied by Doug Hoyte and wraps it so it can +-- used with the standard modes. +-- +----------------------------------------------------------------------------- + +module Codec.Encryption.Blowfish + ( + -- * Function Types + encrypt, + decrypt + ) where + +import Data.Bits +import Data.Word +import Data.Char +import Codec.Utils +import Codec.Encryption.BlowfishAux + +-- * Basic Blowfish Encryption + +-- | Basic Blowfish encryption which takes a key and a block of plaintext +-- and returns the encrypted block of ciphertext according to the standard. +-- Typical keys are Word8, Word16, Word32, Word64, Word128. See +-- . + +encrypt :: (Integral a) => a -> Word64 -> Word64 +encrypt k p = mergeWord32 (lo,hi) where + lo = head e + hi = head $ tail e + e = bfEnc (bfMakeKey (map (chr . fromIntegral) (toOctets 256 k))) [lo',hi'] + (lo',hi') = (splitZord64 p) + +-- | Basic Blowfish decryption which takes a key and a block of ciphertext +-- and returns the decrypted block of plaintext. + +decrypt :: (Integral a) => a -> Word64 -> Word64 +decrypt k p = mergeWord32 (lo,hi) where + lo = head d + hi = head $ tail d + d = bfDec (bfMakeKey (map (chr . fromIntegral) (toOctets 256 k))) [lo',hi'] + (lo',hi') = splitZord64 p + +splitZord64 :: Word64 -> (Word32,Word32) +splitZord64 x = (fromIntegral (shiftR (x .&. 0xffffffff00000000) 32), + fromIntegral (x .&. 0x00000000ffffffff)) + +mergeWord32 :: (Word32,Word32) -> Word64 +mergeWord32 (lo,hi) = shift (fromIntegral lo) 32 + fromIntegral hi addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/BlowfishAux.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/BlowfishAux.hs 1 +-- BlowfishAux.hs (C) 2002 HardCore SoftWare, Doug Hoyte +-- +-- Doug has kindly agreed to release this under BSD. +-- +-- Haskell implementation of Bruce Schneier's blowfish encryption algorithm. +-- This implementation uses 16 rounds and produces the same ciphertext as +-- the OpenBSD and Paul Kocher 16-round implementations. +-- +-- The function bfMakeKey should be passed a list of Chars. These represent +-- the key. It will return a datatype called "BF", which contains the +-- initialized key information. +-- +-- The function bfEnc is passed a BF datatype representing the key and a +-- list of 2 Word32s (the plaintext). It returns a list of 2 Word32s +-- (the ciphertext). +-- +-- The function bfDec is passed a BF datatype representing the key and a list +-- of 2 Word32s (the ciphertext) and a BF datatype representing the key. It +-- returns a list of 2 Word32s (the plaintext). + +module Codec.Encryption.BlowfishAux + (bfMakeKey, + bfEnc, + bfDec) where + +import Array +import Bits +import Word +import Char + +type Pbox = Array Word32 Word32 +type Sbox = Array Word32 Word32 + +data BF = BF Pbox Sbox Sbox Sbox Sbox + + + +bfEnc :: BF -> [Word32] -> [Word32] +bfEnc a b = aux a b 0 + where + aux :: BF -> [Word32] -> Word32 -> [Word32] + aux bs@(BF p s0 s1 s2 s3) (l:r:[]) 16 = (r `xor` p!17):(l `xor` p!16):[] + aux bs@(BF p s0 s1 s2 s3) (l:r:[]) i = aux bs (newr:newl:[]) (i+1) + where newl = l `xor` (p ! i) + newr = r `xor` (f newl) + f :: Word32 -> Word32 + f t = ((s0!a + s1!b) `xor` (s2 ! c)) + (s3 ! d) + where a = (t `shiftR` 24) + b = ((t `shiftL` 8) `shiftR` 24) + c = ((t `shiftL` 16) `shiftR` 24) + d = ((t `shiftL` 24) `shiftR` 24) + + +bfDec :: BF -> [Word32] -> [Word32] +bfDec (BF p s0 s1 s2 s3) a = bfEnc (BF (revP p) s0 s1 s2 s3) a + where revP :: Pbox -> Pbox + revP x = x//[(i, x ! (17-i)) | i <- [0..17]] + + +bfMakeKey :: [Char] -> BF +bfMakeKey [] = procKey [0,0] (BF iPbox iSbox0 iSbox1 iSbox2 iSbox3) 0 +bfMakeKey k = procKey [0,0] (BF (string2Pbox k) iSbox0 iSbox1 iSbox2 iSbox3) 0 + + +string2Pbox :: [Char] -> Pbox +string2Pbox k = array (0,17) [(fromIntegral i,xtext!!i) | i <- [0..17]] + where xtext = zipWith (xor) + (compress4 (doShift (makeTo72 (charsToWord32s k) 0) 0)) + [iPbox ! (fromIntegral i) | i <- [0..17]] + charsToWord32s [] = [] + charsToWord32s (k:ks) = (fromIntegral $ fromEnum k) : charsToWord32s ks + makeTo72 k 72 = [] + makeTo72 k i = k!!(i `mod` (length k)) : makeTo72 k (i+1) + doShift [] i = [] + doShift (w:ws) i = w `shiftL` (8*(3 - (i `mod` 4))) : doShift ws (i+1) + compress4 [] = [] + compress4 (a:b:c:d:etc) = (a .|. b .|. c .|. d) : compress4 etc + + +procKey :: [Word32] -> BF -> Word32 -> BF +procKey (l:r:[]) tpbf@(BF p s0 s1 s2 s3) 1042 = tpbf +procKey (l:r:[]) tpbf@(BF p s0 s1 s2 s3) i = procKey [nl,nr] (newbf i) (i+2) + where [nl,nr] = bfEnc tpbf [l,r] + newbf x | x < 18 = (BF (p//[(x,nl),(x+1,nr)]) s0 s1 s2 s3) + | x < 274 = (BF p (s0//[(x-18,nl),(x-17,nr)]) s1 s2 s3) + | x < 530 = (BF p s0 (s1//[(x-274,nl),(x-273,nr)]) s2 s3) + | x < 786 = (BF p s0 s1 (s2//[(x-530,nl),(x-529,nr)]) s3) + | x < 1042 = (BF p s0 s1 s2 (s3//[(x-786,nl),(x-785,nr)])) + + + +---------- INITIAL S AND P BOXES ARE THE HEXADECIMAL DIGITS OF PI ------------ + +iPbox :: Pbox +iPbox = array (0,17) (zip [0..17] + [0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b]) + +iSbox0 :: Sbox +iSbox0 = array (0,255) (zip [0..255] + [0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, + 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, + 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, + 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, + 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, + 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, + 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, + 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, + 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, + 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, + 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, + 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, + 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, + 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, + 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, + 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, + 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, + 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, + 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, + 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, + 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, + 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]) + +iSbox1 :: Sbox +iSbox1 = array (0,255) (zip [0..255] + [0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, + 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, + 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, + 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, + 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, + 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, + 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, + 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, + 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, + 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, + 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, + 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, + 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, + 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, + 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, + 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, + 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, + 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, + 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, + 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, + 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, + 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]) + +iSbox2 :: Sbox +iSbox2 = array (0,255) (zip [0..255] + [0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, + 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, + 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, + 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, + 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, + 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, + 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, + 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, + 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, + 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, + 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, + 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, + 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, + 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, + 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, + 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, + 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, + 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, + 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, + 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, + 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, + 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]) + +iSbox3 :: Sbox +iSbox3 = array (0,255) (zip [0..255] + [0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, + 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, + 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, + 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, + 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, + 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, + 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, + 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, + 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, + 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, + 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, + 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, + 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, + 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, + 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, + 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, + 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, + 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, + 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, + 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, + 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, + 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6]) addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/DES.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/DES.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.Encryption.DES +-- Copyright : (c) Dominic Steinitz 2003 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Takes the DES module supplied by Ian Lynagh and wraps it so it can +-- used with the standard modes. +-- +-- See . +-- +----------------------------------------------------------------------------- + +module Codec.Encryption.DES ( + -- * Function Types + encrypt, decrypt) where + +import Codec.Encryption.DESAux +import Word + +-- | Basic DES encryption which takes a key and a block of plaintext +-- and returns the encrypted block of ciphertext according to the standard. + +encrypt :: Word64 -> Word64 -> Word64 +encrypt = flip des_enc + +-- | Basic DES decryption which takes a key and a block of ciphertext and +-- returns the decrypted block of plaintext according to the standard. + +decrypt :: Word64 -> Word64 -> Word64 +decrypt = flip des_dec addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/DESAux.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/DESAux.hs 1 +module Codec.Encryption.DESAux (des_enc, des_dec) where + +import Word +import Bits + +type Rotation = Int +type Key = Word64 +type Message = Word64 +type Enc = Word64 + +type BitsX = [Bool] +type Bits4 = [Bool] +type Bits6 = [Bool] +type Bits32 = [Bool] +type Bits48 = [Bool] +type Bits56 = [Bool] +type Bits64 = [Bool] + +instance Num [Bool] + +instance Bits [Bool] where + a `xor` b = (zipWith (\x y -> (not x && y) || (x && not y)) a b) + rotate bits rot = drop rot' bits ++ take rot' bits + where rot' = rot `mod` (length bits) + +bitify :: Word64 -> Bits64 +bitify w = map (\b -> w .&. (shiftL 1 b) /= 0) [63,62..0] + +unbitify :: Bits64 -> Word64 +unbitify bs = foldl (\i b -> if b then 1 + shiftL i 1 else shiftL i 1) 0 bs + +initial_permutation :: Bits64 -> Bits64 +initial_permutation mb = map ((!!) mb) i + where i = [57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, + 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7, + 56, 48, 40, 32, 24, 16, 8, 0, 58, 50, 42, 34, 26, 18, 10, 2, + 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6] + +key_transformation :: Bits64 -> Bits56 +key_transformation kb = map ((!!) kb) i + where i = [56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, + 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, + 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, + 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3] + +des_enc :: Message -> Key -> Enc +des_enc = do_des [1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28] + +des_dec :: Message -> Key -> Enc +des_dec = do_des [28,27,25,23,21,19,17,15,14,12,10,8,6,4,2,1] + +do_des :: [Rotation] -> Message -> Key -> Enc +do_des rots m k = des_work rots (takeDrop 32 mb) kb + where kb = key_transformation $ bitify k + mb = initial_permutation $ bitify m + +des_work :: [Rotation] -> (Bits32, Bits32) -> Bits56 -> Enc +des_work [] (ml, mr) _ = unbitify $ final_perm $ (mr ++ ml) +des_work (r:rs) mb kb = des_work rs mb' kb + where mb' = do_round r mb kb + +do_round :: Rotation -> (Bits32, Bits32) -> Bits56 -> (Bits32, Bits32) +do_round r (ml, mr) kb = (mr, m') + where kb' = get_key kb r + comp_kb = compression_permutation kb' + expa_mr = expansion_permutation mr + res = comp_kb `xor` expa_mr + res' = tail $ iterate (trans 6) ([], res) + trans n (_, b) = (take n b, drop n b) + res_s = concat $ zipWith (\f (x,_) -> f x) [s_box_1, s_box_2, + s_box_3, s_box_4, + s_box_5, s_box_6, + s_box_7, s_box_8] res' + res_p = p_box res_s + m' = res_p `xor` ml + +get_key :: Bits56 -> Rotation -> Bits56 +get_key kb r = kb' + where (kl, kr) = takeDrop 28 kb + kb' = rotateL kl r ++ rotateL kr r + +compression_permutation :: Bits56 -> Bits48 +compression_permutation kb = map ((!!) kb) i + where i = [13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, + 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, + 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, + 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31] + +expansion_permutation :: Bits32 -> Bits48 +expansion_permutation mb = map ((!!) mb) i + where i = [31, 0, 1, 2, 3, 4, 3, 4, 5, 6, 7, 8, + 7, 8, 9, 10, 11, 12, 11, 12, 13, 14, 15, 16, + 15, 16, 17, 18, 19, 20, 19, 20, 21, 22, 23, 24, + 23, 24, 25, 26, 27, 28, 27, 28, 29, 30, 31, 0] + +s_box :: [[Word8]] -> Bits6 -> Bits4 +s_box s [a,b,c,d,e,f] = to_bool 4 $ (s !! row) !! col + where row = sum $ zipWith numericise [a,f] [1, 0] + col = sum $ zipWith numericise [b,c,d,e] [3, 2, 1, 0] + numericise = (\x y -> if x then 2^y else 0) + to_bool 0 _ = [] + to_bool n i = ((i .&. 8) == 8):to_bool (n-1) (shiftL i 1) + +s_box_1 :: Bits6 -> Bits4 +s_box_1 = s_box i + where i = [[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7], + [ 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8], + [ 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0], + [15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13]] + +s_box_2 :: Bits6 -> Bits4 +s_box_2 = s_box i + where i = [[15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10], + [3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5], + [0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15], + [13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9]] + +s_box_3 :: Bits6 -> Bits4 +s_box_3 = s_box i + where i = [[10, 0, 9, 14 , 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8], + [13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1], + [13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7], + [1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12]] + +s_box_4 :: Bits6 -> Bits4 +s_box_4 = s_box i + where i = [[7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15], + [13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9], + [10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4], + [3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14]] + +s_box_5 :: Bits6 -> Bits4 +s_box_5 = s_box i + where i = [[2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9], + [14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6], + [4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14], + [11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3]] + +s_box_6 :: Bits6 -> Bits4 +s_box_6 = s_box i + where i = [[12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11], + [10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8], + [9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6], + [4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13]] + +s_box_7 :: Bits6 -> Bits4 +s_box_7 = s_box i + where i = [[4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1], + [13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6], + [1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2], + [6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12]] + +s_box_8 :: Bits6 -> Bits4 +s_box_8 = s_box i + where i = [[13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7], + [1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2], + [7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8], + [2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11]] + +p_box :: Bits32 -> Bits32 +p_box kb = map ((!!) kb) i + where i = [15, 6, 19, 20, 28, 11, 27, 16, 0, 14, 22, 25, 4, 17, 30, 9, + 1, 7, 23, 13, 31, 26, 2, 8, 18, 12, 29, 5, 21, 10, 3, 24] + +final_perm :: Bits64 -> Bits64 +final_perm kb = map ((!!) kb) i + where i = [39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, + 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, + 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, + 33, 1, 41, 9, 49, 17, 57, 25, 32, 0, 40 , 8, 48, 16, 56, 24] + +takeDrop :: Int -> [a] -> ([a], [a]) +takeDrop _ [] = ([], []) +takeDrop 0 xs = ([], xs) +takeDrop n (x:xs) = (x:ys, zs) + where (ys, zs) = takeDrop (n-1) xs + addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/Modes.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/Modes.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.Encryption.Modes +-- Copyright : (c) Dominic Steinitz 2001-2003 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- This module currently supports Cipher Block Chaining (CBC) mode. +-- See for further details. +-- +----------------------------------------------------------------------------- + +module Codec.Encryption.Modes ( + -- * Function types + cbc, unCbc + ) where + +import Data.Word +import Data.Bits + +-- * CBC or Cipher Block Chaining Mode + +-- | In CBC or Cipher Block Chaining mode each block is XORed with +-- the previous enciphered block before encryption. For the first +-- block, start with an initialization vector. +-- Take an encryption function, an initialisation vector, a key and +-- a list of blocks and return the encrypted blocks using CBC. + +cbc :: Bits block => + (key -> block -> block) -> + block -> + key -> + [block] -> + [block] + +cbc e iv k ps = + ciphers where + ciphers = map (e k) feedIns + feedIns = zipWith xor (iv : ciphers) ps + +-- | To decipher in CBC or Cipher Block Chaining mode, decipher +-- each block, then XOR the result with the previous block of +-- plaintext result. Note that the initialization vector is treated as the +-- zeroth block of plaintext. +-- Take a decryption function, an initialisation vector, a key and a list +-- of encrypted blocks using CBC and return plaintext blocks. + +unCbc :: Bits block => + (key -> block -> block) -> + block -> + key -> + [block] -> + [block] + +unCbc d iv k ms = + outOfCbcs where + beforeXOrs = map (d k) ms + outOfCbcs = zipWith xor (iv : ms) beforeXOrs addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/Padding.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/Padding.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.Encryption.Padding +-- Copyright : (c) Dominic Steinitz 2003 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Padding algorithms for use with block ciphers. +-- +-- This module currently supports: +-- +-- * PKCS5 padding and unpadding. +-- +-- * Null padding and unpadding. +-- +----------------------------------------------------------------------------- + +module Codec.Encryption.Padding ( + -- * Function types + pkcs5, unPkcs5, + padNulls, unPadNulls, testPad + ) where + +import Data.Word +import Data.Bits +import Data.List +import Codec.Utils + +-- | When the last block of plaintext is shorter than the block size then it +-- must be padded. PKCS5 specifies that the padding octets should each +-- contain the number of octets which must be stripped off. So, for example, +-- with a block size of 8, \"0a0b0c\" will be padded with \"05\" resulting in +-- \"0a0b0c0505050505\". If the final block is a full block of 8 octets +-- then a whole block of \"0808080808080808\" is appended. + +pkcs5 :: (Integral a, Bits a) => [Octet] -> [a] +pkcs5 s = pad p s where p n = replicate n (fromIntegral n) + +-- | When the last block of plaintext is shorter than the block size then it +-- must be padded. Nulls padding specifies that the padding octets should each +-- contain a null. So, for example, +-- with a block size of 8, \"0a0b0c\" will be padded to +-- \"0a0b0c0000000000\". If the final block is a full block of 8 octets +-- then a whole block of \"0000000000000000\" is appended. +-- NB this is only suitable for data which does not contain nulls, +-- for example, ASCII. + +padNulls :: (Integral a, Bits a) => [Octet] -> [a] +padNulls s = pad p s where p n = replicate n 0 + +testPad s = pad p s where p n = replicate (n-1) 0xff ++ [fromIntegral n] + +pad p s = + blocks where + octetSize = (bitSize $ head blocks) `div` 8 + blocks = map (fromOctets 256) (unfoldr h $ concat $ unfoldr g s) + g :: [Octet] -> Maybe ([Octet],[Octet]) + g x + | l == 0 = Nothing + | l < octetSize = Just (t ++ (p (octetSize-l)), []) + | d == [] = Just (t ++ (p octetSize), []) + | otherwise = Just (t, d) + where l = length t + t = take octetSize x + d = drop octetSize x + h :: [Octet] -> Maybe ([Octet],[Octet]) + h x + | x == [] = Nothing + | otherwise = Just (take octetSize x, drop octetSize x) + +-- | Take a list of blocks padded using the method described in PKCS5 +-- (see ) +-- and return the list of unpadded octets. NB this function does not +-- currently check that the padded block is correctly formed and should +-- only be used for blocks that have been padded correctly. + +unPkcs5 :: (Bits a, Integral a) => [a] -> [Octet] +unPkcs5 s = + unPad h s + where + h octetSize x = take (octetSize - (fromIntegral (last x))) x + +-- | Take a list of blocks padded with nulls +-- and return the list of unpadded octets. NB if the blocks contain +-- a null then the result is unpredictable. + +unPadNulls :: (Bits a, Integral a) => [a] -> [Octet] +unPadNulls s = + unPad h s + where + h _ x = takeWhile (/=0) x + +unPad p s = + concat $ unfoldr g s where + g :: (Integral a, Bits a) => [a] -> Maybe ([Octet],[a]) + g x + | t == [] = Nothing + | d == [] = Just (s, []) + | otherwise = Just (v, d) + where t = take 1 x + d = drop 1 x + u = head t + octetSize = (bitSize u) `div` 8 + v = i2osp octetSize u + s = p octetSize v addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/RSA.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/RSA.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Coded.Encryption.RSA +-- Copyright : (c) David J. Sankel 2003, Dominic Steinitz 2003 +-- License : GPL (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : non-portable +-- +-- A modified version of the RSA module supplied by David J. Sankel +-- (). +-- +-- As the original code is GPL, this has to be. +-- This code is free software; you can redistribute it and\/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 2 of the License, or +-- (at your option) any later version. +-- +-- This code is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this code; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111\-1307 USA +----------------------------------------------------------------------------- + +module Codec.Encryption.RSA( + -- * Function Types + encrypt, + decrypt + )where + +import Codec.Utils +import Codec.Encryption.RSA.NumberTheory + +rsaep :: (Integer , Integer) -> Integer -> Integer +rsaep (n,e) m + | m < 0 || m > n-1 = + error "Codec.Encryption.RSA.rsaep: message too long" + | otherwise = + expmod m e n + +-- | Take the modulus of the RSA key and the public exponent expressed +-- as lists of octets and the plaintext also expressed as a list of +-- octets and return the ciphertext as a list of octets. Of course, +-- these are all large integers but using lists of octets makes +-- everything easier. See +-- for more +-- details. + +encrypt :: ([Octet],[Octet]) -> [Octet] -> [Octet] +encrypt (n,e) m = + i2osp (length n) $ + rsaep (fromOctets 256 n, fromOctets 256 e) (fromOctets 256 m) + +rsadp :: (Integer , Integer) -> Integer -> Integer +rsadp (n,d) c + | c < 0 || c > n-1 = + error "Codec.Encryption.RSA.rsadp: decryption error" + | otherwise = + expmod c d n + +-- | Take the modulus of the RSA key and the private exponent expressed +-- as lists of octets and the ciphertext also expressed as a list of +-- octets and return the plaintext as a list of octets. + +decrypt :: ([Octet],[Octet]) -> [Octet] -> [Octet] +decrypt (n,e) m = + i2osp (length n) $ + rsadp (fromOctets 256 n, fromOctets 256 e) (fromOctets 256 m) addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/RSA/EMEOAEP.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/RSA/EMEOAEP.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Coded.Encryption.RSA.EMEOAEP +-- Copyright : (c) David J. Sankel 2003, Dominic Steinitz 2003 +-- License : GPL (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : non-portable +-- +-- A modified version of the EMEOAEP module supplied by David J. Sankel +-- (). +-- +-- As the original code is GPL, this has to be. +-- This code is free software; you can redistribute it and\/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 2 of the License, or +-- (at your option) any later version. +-- +-- This code is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this code; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111\-1307 USA +----------------------------------------------------------------------------- + +module Codec.Encryption.RSA.EMEOAEP( + -- * Function Types + encode, + decode + )where + +import Codec.Utils (Octet) +import Data.Bits + +xorOctets :: Bits a => [a] -> [a] -> [a] +xorOctets = zipWith xor + +-- | Take a mask generating function, a hash function, a label (which may be +-- null), a random seed, the modulus of the key and the message and returns +-- an encoded message. NB you could pass in the length of the modulus +-- but it seems safer to pass in the modulus itself and calculate the +-- length when required. See +-- for more +-- details. + +encode :: (([Octet] -> [Octet]) -> [Octet] -> Int -> [Octet]) -> + ([Octet] -> [Octet]) -> [Octet] -> [Octet] -> [Octet] -> [Octet] -> + [Octet] + +encode mgf hash p seed n m = + if length m > emLen - 2*hLen - 2 + then error "Codec.Encryption.EMEOAEP.encode: message too long" + else em + where + emLen = length n + mLen = length m + ps = take (emLen-mLen-2*hLen-2) $ repeat $ 0x00 + pHash = hash p + hLen = length pHash + db = pHash ++ ps ++ [0x01] ++ m + dbMask = mgf hash seed (length db) + maskedDB = db `xorOctets` dbMask + seedMask = mgf hash maskedDB hLen + maskedSeed = seed `xorOctets` seedMask + em = [0x00] ++ maskedSeed ++ maskedDB + +-- | Take a mask generating function, a hash function, a label (which may be +-- null) and the message and returns the decoded. + +decode :: (([Octet] -> [Octet]) -> [Octet] -> Int -> [Octet]) -> + ([Octet] -> [Octet]) -> [Octet] -> [Octet] -> [Octet] + +decode mgf hash p em = + if length em < 2*hLen + 1 || + one /= 0x01 || + pHash' /= pHash || + y /= [0x00] + then error "Codec.Encryption.EMEOAEP.decode: decryption error" + else m + where + (y,rest) = splitAt 1 em + pHash = hash p + hLen = length pHash + (maskedSeed,maskedDB) = splitAt hLen rest + seedMask = mgf hash maskedDB hLen + seed = maskedSeed `xorOctets` seedMask + emLen = length em + dbMask = mgf hash seed (emLen - hLen - 1) + db = maskedDB `xorOctets` dbMask + (pHash',rest') = splitAt hLen db + (one:m) = dropWhile (== 0x00) rest' addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/RSA/MGF.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/RSA/MGF.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.Encryption.RSA.MGF +-- Copyright : (c) Dominic Steinitz 2003 +-- License : BSD-style (see the file libraries/base/LICENSE) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Implements the mask generation function as specified in: +-- +-- +----------------------------------------------------------------------------- + +module Codec.Encryption.RSA.MGF ( + -- * Function Types + mgf) where + +import Codec.Utils (Octet, i2osp) + +-- | Take a hash function, a seed and the intended length of the +-- the mask and deliver a mask of the requested length. + +mgf :: ([Octet] -> [Octet]) -> [Octet] -> Int -> [Octet] + +mgf hash z l = + take l $ concat $ hashes + where + hashes = map f [0..(l `div` hLen)] + hLen = length $ f 0 + f = hash . (z++) . (i2osp 4) addfile ./dependencies/Crypto-2.0.0/Codec/Encryption/RSA/NumberTheory.hs hunk ./dependencies/Crypto-2.0.0/Codec/Encryption/RSA/NumberTheory.hs 1 +--Copyright 2001, 2002, 2003 David J. Sankel +-- +--This file is part of rsa-haskell. +--rsa-haskell is free software; you can redistribute it and/or modify +--it under the terms of the GNU General Public License as published by +--the Free Software Foundation; either version 2 of the License, or +--(at your option) any later version. +-- +--rsa-haskell is distributed in the hope that it will be useful, +--but WITHOUT ANY WARRANTY; without even the implied warranty of +--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +--GNU General Public License for more details. +-- +--You should have received a copy of the GNU General Public License +--along with rsa-haskell; if not, write to the Free Software +--Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +module Codec.Encryption.RSA.NumberTheory( +inverse, extEuclGcd, simplePrimalityTest, getPrime, pg, isPrime, +rabinMillerPrimalityTest, expmod, factor, testInverse, primes, (/|), +randomOctet +) where + + +import Random(getStdRandom,randomR) +--The following line is required for ghc optomized implementation +-- (see comments beginning with GHC): +-- import Bits(setBit) +import List(elemIndex) +import Maybe(fromJust) +import Char(chr,ord) +import Bits(xor) + +--Precondition: the integer is >= 0 +randomOctet :: Int -> IO( String ) +randomOctet n + | n < 0 = error "randomOctet argument doesn't meet preconditions" + | otherwise = (sequence $ take n $ repeat $ getStdRandom (randomR( 0,255) )) + >>= (return . (map chr) ) + +--Returns a list [r_1,r_2,r_3,r_4, . . ., r_n ] where +-- a = p_1^r_1 * p_2^r_2 * p_3^r_3 * . . . * p_n^r_n +factor = factor_1 + +--An implimentation of factor +factor_1 :: Integer -> [Int] +factor_1 a = reverse . dropWhile (== 0) . reverse + . map (\x -> largestPower x a) . takeWhile (<= a ) $ primes + +--Another implimentation of factor +factor_2 :: Integer -> [Integer] +factor_2 a = + let + p = map (fromIntegral) . reverse . dropWhile (== 0) + . reverse . map (\x -> largestPower x a) + . takeWhile (<= a `div` 2) $ primes + in + if (length p == 0) + then (take ((fromIntegral . fromJust $ elemIndex a primes)-1) (repeat 0)) + ++ [1] + else p + +--Find the inverse of x (mod n) +inverse :: Integer -> Integer -> Integer +inverse x n = (fst (extEuclGcd x n)) `mod` n + +testInverse :: Integer ->Integer -> Bool +testInverse a b = ((inverse a b)*a) `mod` b == 1 + +--Extended Eucildean algorithm +--Returns (x,y) where gcd(a,b) = xa + yb +extEuclGcd :: Integer -> Integer -> (Integer,Integer) +extEuclGcd a b = extEuclGcd_iter a b (1,0) (0,1) + +extEuclGcd_iter :: Integer -> Integer + -> (Integer,Integer) -> (Integer,Integer) -> (Integer,Integer) +extEuclGcd_iter a b (c1,c2) (d1,d2) + | (a > b) && (r1 == 0) = (d1,d2) + | (a > b) && (r1 /= 0) = extEuclGcd_iter + (a - (q1*b)) b (c1 - (q1*d1), c2 - (q1*d2)) (d1,d2) + | (a <= b) && (r2 == 0) = (c1,c2) + | (a <= b) && (r2 /= 0) = extEuclGcd_iter + a (b - (q2*a)) (c1,c2) ( d1 - (q2*c1), d2- (q2*c2)) + where + q1 = a `div` b + q2 = b `div` a + r1 = a `mod` b + r2 = b `mod` a + +-- This will return a random Integer of n bits. The highest order bit +-- will always be 1. + +-- GHC optomized implementation +-- getNumber :: Int -> IO Integer +-- getNumber n = do +-- i <- getStdRandom ( randomR (0, a-1 ) ) +-- return (setBit i (n-1)) +-- where +-- a = (2^n) ::Integer + +--This is the portable version +getNumber :: Int -> IO Integer +getNumber n = do + i <- getStdRandom ( randomR (0, a-1 ) ) + return (i+(2^(n-1))) + where + a = (2^(n-1)) ::Integer + +--Returns a probable prime number of nBits bits + +-- GHC optomized implementation +-- getPrime :: Int -> IO Integer +-- getPrime nBits = do +-- r <- getNumber nBits +-- let p = (setBit r 0) --Make it odd for speed +-- pIsPrime <- isPrime p +-- if( pIsPrime ) +-- then return p +-- else getPrime nBits + +--This is the portable version +getPrime :: Int -> IO Integer +getPrime nBits = do + r <- getNumber nBits + let p = if( 2 /| r ) then r else r+1 + pIsPrime <- isPrime p + if( pIsPrime ) + then return p + else getPrime nBits + +--Prime Generate: +--Generates a prime p | minimum <= p <= maximum and gcd p e == 1 +pg :: Integer -> Integer -> Integer -> IO(Integer) +pg minimum maximum e = do + p <- getStdRandom( randomR( minimum, maximum ) ) + pIsPrime <- isPrime p + if( pIsPrime && (gcd p e) == 1 ) + then return p + else pg minimum maximum e + +isPrime :: Integer -> IO Bool +isPrime a + | (a <= 1) = return False + | (a <= 2000) = return (simplePrimalityTest a) + | otherwise = if (simplePrimalityTest a) + then do --Do this 5 times for saftey + test <- mapM rabinMillerPrimalityTest $ take 5 $ repeat a + return (and test) + else return False + +simplePrimalityTest :: Integer -> Bool +simplePrimalityTest a = foldr (&&) True (map (/| a)(takeWhile ( Integer -> Int +largestPower x y = fromJust . elemIndex False + . map (\b -> (y `mod` x^b) == 0) $ [1..] + +rabinMillerPrimalityTest :: Integer -> IO Bool +rabinMillerPrimalityTest p = rabinMillerPrimalityTest_iter_1 p b m + where + b = fromIntegral $ largestPower 2 (p-1) + m = (p-1) `div` (2^b) + +--The ?prime? Number -> The amount of iterations -> b -> m +rabinMillerPrimalityTest_iter_1 :: Integer -> Integer -> Integer -> IO Bool +rabinMillerPrimalityTest_iter_1 p b m = + do + a <- getStdRandom ( randomR (0, 2000 ) ) + return (rabinMillerPrimalityTest_iter_2 p b 0 (expmod a m p)) + +rabinMillerPrimalityTest_iter_2 :: Integer -> Integer -> Integer -> Integer + -> Bool +rabinMillerPrimalityTest_iter_2 p b j z + | (z == 1) || (z == p-1) = True + | (j > 0) && (z == 1) = False + | (j+1 < b) && (z /= p-1) = + (rabinMillerPrimalityTest_iter_2 p b (j+1) ((z^2) `mod` p )) + | z == p - 1 = True + | (j+1 == b) && (z /= p-1) = False + +--a^x (mod m) +expmod :: Integer -> Integer -> Integer -> Integer +expmod a x m | x == 0 = 1 + | x == 1 = a `mod` m + | even x = let p = (expmod a (x `div` 2) m) `mod` m + in (p^2) `mod` m + | otherwise = (a * expmod a (x-1) m) `mod` m + +--Largest x where x^2 < i +intSqrt :: Integer -> Integer +intSqrt i = floor (sqrt (fromIntegral i ) ) + +--The doesn't divide function +(/|) :: Integer -> Integer -> Bool +a /| b = b `mod` a /= 0 + +--List of primes +primes :: [Integer] +primes = 2:[x | x <- [3,5..], foldr (&&) True + ( map ( /| x ) (takeWhile (<=(intSqrt x)) primes ) ) ] addfile ./dependencies/Crypto-2.0.0/Codec/Utils.hs hunk ./dependencies/Crypto-2.0.0/Codec/Utils.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Codec.Utils +-- Copyright : (c) Dominic Steinitz 2003 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Utilities for coding and decoding. +-- +----------------------------------------------------------------------------- + +module Codec.Utils ( + -- * Types and Constants + Octet, + msb, + -- * Octet Conversion Functions + fromTwosComp, toTwosComp, + toOctets, fromOctets, + i2osp + ) where + +import Data.Word +import Data.Bits + +powersOf n = 1 : (map (*n) (powersOf n)) + +toBase x = + map fromIntegral . + reverse . + map (flip mod x) . + takeWhile (/=0) . + iterate (flip div x) + +-- | Take a number a convert it to base n as a list of octets. + +toOctets :: (Integral a, Integral b) => a -> b -> [Octet] +toOctets n x = (toBase n . fromIntegral) x + +-- | The basic type for encoding and decoding. + +type Octet = Word8 + +-- | The most significant bit of an 'Octet'. + +msb :: Int +msb = bitSize (undefined::Octet) - 1 + +-- | Take a list of octets (a number expressed in base n) and convert it +-- to a number. + +fromOctets :: (Integral a, Integral b) => a -> [Octet] -> b +fromOctets n x = + fromIntegral $ + sum $ + zipWith (*) (powersOf n) (reverse (map fromIntegral x)) + +-- | Take the length of the required number of octets and convert the +-- number to base 256 padding it out to the required length. If the +-- required length is less than the number of octets of the converted +-- number then return the converted number. NB this is different from +-- the standard +-- but mimics how replicate behaves. + +i2osp :: Integral a => Int -> a -> [Octet] +i2osp l y = + pad ++ z + where + pad = replicate (l - unPaddedLen) (0x00::Octet) + z = toOctets 256 y + unPaddedLen = length z + +-- | Convert from twos complement. + +fromTwosComp :: Integral a => [Octet] -> a +fromTwosComp x = conv x + where conv [] = 0 + conv w@(x:xs) = if (testBit x msb) + then neg w + else pos w + neg w@(x:xs) = let z=(clearBit x msb):xs in + fromIntegral((fromOctets 256 z)- + (128*(256^((length w)-1)))) + pos w = fromIntegral(fromOctets 256 w) + +toTwosComp :: Integral a => a -> [Octet] +toTwosComp x + | x < 0 = reverse . plusOne . reverse . (map complement) $ u + | x == 0 = [0x00] + | otherwise = u + where z@(y:ys) = toBase 256 (abs x) + u = if testBit y msb + then 0x00:z + else z + +plusOne :: [Octet] -> [Octet] +plusOne [] = [1] +plusOne (x:xs) = + if x == 0xff + then 0x00:(plusOne xs) + else (x+1):xs addfile ./dependencies/Crypto-2.0.0/Data/Digest/MD5.hs hunk ./dependencies/Crypto-2.0.0/Data/Digest/MD5.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Data.Digest.MD5 +-- Copyright : (c) Dominic Steinitz 2004 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Takes the MD5 module supplied by Ian Lynagh and wraps it so it +-- takes [Octet] and returns [Octet] where the length of the result +-- is always 16. +-- See +-- and . +-- +----------------------------------------------------------------------------- + +module Data.Digest.MD5 ( + -- * Function Types + hash) where + +import Data.Digest.MD5Aux +import Codec.Utils +import Char(chr) +import List(unfoldr) +import Numeric(readHex) + +-- | Take [Octet] and return [Octet] according to the standard. +-- The length of the result is always 16 octets or 128 bits as required +-- by the standard. + +hash :: [Octet] -> [Octet] +hash xs = + unfoldr f $ md5s $ Str $ map (chr . fromIntegral) xs + where f :: String -> Maybe (Octet,String) + f [] = + Nothing + f (x:y:zs) = + Just (fromIntegral a,zs) + where [(a,_)] = readHex (x:y:[]) addfile ./dependencies/Crypto-2.0.0/Data/Digest/MD5Aux.hs hunk ./dependencies/Crypto-2.0.0/Data/Digest/MD5Aux.hs 1 +module Data.Digest.MD5Aux + (md5, md5s, md5i, + MD5(..), ABCD(..), + Zord64, Str(..), BoolList(..), WordList(..)) where + +import Char +import Bits +import Word + +{- +Nasty kludge to create a type Zord64 which is really a Word64 but works +how we want in hugs ands nhc98 too... +Also need a rotate left function that actually works. + +#ifdef __GLASGOW_HASKELL__ +#define rotL rotateL +#include "Zord64_EASY.hs" +#else + +> import Zord64_HARD + +> rotL :: Word32 -> Rotation -> Word32 +> rotL a s = shiftL a s .|. shiftL a (s-32) + +#endif +-} + +rotL x = rotateL x +type Zord64 = Word64 + +-- ===================== TYPES AND CLASS DEFINTIONS ======================== + + +type XYZ = (Word32, Word32, Word32) +type Rotation = Int +newtype ABCD = ABCD (Word32, Word32, Word32, Word32) deriving (Eq, Show) +newtype Str = Str String +newtype BoolList = BoolList [Bool] +newtype WordList = WordList ([Word32], Zord64) + +-- Anything we want to work out the MD5 of must be an instance of class MD5 + +class MD5 a where + get_next :: a -> ([Word32], Int, a) -- get the next blocks worth + -- \ \ \------ the rest of the input + -- \ \--------- the number of bits returned + -- \--------------- the bits returned in 32bit words + len_pad :: Zord64 -> a -> a -- append the padding and length + finished :: a -> Bool -- Have we run out of input yet? + + +-- Mainly exists because it's fairly easy to do MD5s on input where the +-- length is not a multiple of 8 + +instance MD5 BoolList where + get_next (BoolList s) = (bools_to_word32s ys, length ys, BoolList zs) + where (ys, zs) = splitAt 512 s + len_pad l (BoolList bs) + = BoolList (bs ++ [True] + ++ replicate (fromIntegral $ (447 - l) .&. 511) False + ++ [l .&. (shiftL 1 x) > 0 | x <- (mangle [0..63])] + ) + where mangle [] = [] + mangle xs = reverse ys ++ mangle zs + where (ys, zs) = splitAt 8 xs + finished (BoolList s) = s == [] + + +-- The string instance is fairly straightforward + +instance MD5 Str where + get_next (Str s) = (string_to_word32s ys, 8 * length ys, Str zs) + where (ys, zs) = splitAt 64 s + len_pad c64 (Str s) = Str (s ++ padding ++ l) + where padding = '\128':replicate (fromIntegral zeros) '\000' + zeros = shiftR ((440 - c64) .&. 511) 3 + l = length_to_chars 8 c64 + finished (Str s) = s == "" + + +-- YA instance that is believed will be useful + +instance MD5 WordList where + get_next (WordList (ws, l)) = (xs, fromIntegral taken, WordList (ys, l - taken)) + where (xs, ys) = splitAt 16 ws + taken = if l > 511 then 512 else l .&. 511 + len_pad c64 (WordList (ws, l)) = WordList (beginning ++ nextish ++ blanks ++ size, newlen) + where beginning = if length ws > 0 then start ++ lastone' else [] + start = init ws + lastone = last ws + offset = c64 .&. 31 + lastone' = [if offset > 0 then lastone + theone else lastone] + theone = shiftL (shiftR 128 (fromIntegral $ offset .&. 7)) + (fromIntegral $ offset .&. (31 - 7)) + nextish = if offset == 0 then [128] else [] + c64' = c64 + (32 - offset) + num_blanks = (fromIntegral $ shiftR ((448 - c64') .&. 511) 5) + blanks = replicate num_blanks 0 + lowsize = fromIntegral $ c64 .&. (shiftL 1 32 - 1) + topsize = fromIntegral $ shiftR c64 32 + size = [lowsize, topsize] + newlen = l .&. (complement 511) + + if c64 .&. 511 >= 448 then 1024 else 512 + finished (WordList (_, z)) = z == 0 + + +instance Num ABCD where + ABCD (a1, b1, c1, d1) + ABCD (a2, b2, c2, d2) = ABCD (a1 + a2, b1 + b2, c1 + c2, d1 + d2) + + +-- ===================== EXPORTED FUNCTIONS ======================== + + +-- The simplest function, gives you the MD5 of a string as 4-tuple of +-- 32bit words. + +md5 :: (MD5 a) => a -> ABCD +md5 m = md5_main False 0 magic_numbers m + + +-- Returns a hex number ala the md5sum program + +md5s :: (MD5 a) => a -> String +md5s = abcd_to_string . md5 + + +-- Returns an integer equivalent to the above hex number + +md5i :: (MD5 a) => a -> Integer +md5i = abcd_to_integer . md5 + + +-- ===================== THE CORE ALGORITHM ======================== + + +-- Decides what to do. The first argument indicates if padding has been +-- added. The second is the length mod 2^64 so far. Then we have the +-- starting state, the rest of the string and the final state. + +md5_main :: (MD5 a) => + Bool -- Have we added padding yet? + -> Zord64 -- The length so far mod 2^64 + -> ABCD -- The initial state + -> a -- The non-processed portion of the message + -> ABCD -- The resulting state +md5_main padded ilen abcd m + = if finished m && padded + then abcd + else md5_main padded' (ilen + 512) (abcd + abcd') m'' + where (m16, l, m') = get_next m + len' = ilen + fromIntegral l + ((m16', _, m''), padded') = if not padded && l < 512 + then (get_next $ len_pad len' m, True) + else ((m16, l, m'), padded) + abcd' = md5_do_block abcd m16' + + +-- md5_do_block processes a 512 bit block by calling md5_round 4 times to +-- apply each round with the correct constants and permutations of the +-- block + +md5_do_block :: ABCD -- Initial state + -> [Word32] -- The block to be processed - 16 32bit words + -> ABCD -- Resulting state +md5_do_block abcd0 w = abcd4 + where (r1, r2, r3, r4) = rounds + {- + map (\x -> w !! x) [1,6,11,0,5,10,15,4,9,14,3,8,13,2,7,12] + -- [(5 * x + 1) `mod` 16 | x <- [0..15]] + map (\x -> w !! x) [5,8,11,14,1,4,7,10,13,0,3,6,9,12,15,2] + -- [(3 * x + 5) `mod` 16 | x <- [0..15]] + map (\x -> w !! x) [0,7,14,5,12,3,10,1,8,15,6,13,4,11,2,9] + -- [(7 * x) `mod` 16 | x <- [0..15]] + -} + perm5 [c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15] + = [c1,c6,c11,c0,c5,c10,c15,c4,c9,c14,c3,c8,c13,c2,c7,c12] + perm5 _ = error "broke at perm5" + perm3 [c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15] + = [c5,c8,c11,c14,c1,c4,c7,c10,c13,c0,c3,c6,c9,c12,c15,c2] + perm3 _ = error "broke at perm3" + perm7 [c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15] + = [c0,c7,c14,c5,c12,c3,c10,c1,c8,c15,c6,c13,c4,c11,c2,c9] + perm7 _ = error "broke at perm7" + abcd1 = md5_round md5_f abcd0 w r1 + abcd2 = md5_round md5_g abcd1 (perm5 w) r2 + abcd3 = md5_round md5_h abcd2 (perm3 w) r3 + abcd4 = md5_round md5_i abcd3 (perm7 w) r4 + + +-- md5_round does one of the rounds. It takes an auxiliary function and foldls +-- (md5_inner_function f) to repeatedly apply it to the initial state with the +-- correct constants + +md5_round :: (XYZ -> Word32) -- Auxiliary function (F, G, H or I + -- for those of you with a copy of + -- the prayer book^W^WRFC) + -> ABCD -- Initial state + -> [Word32] -- The 16 32bit words of input + -> [(Rotation, Word32)] -- The list of 16 rotations and + -- additive constants + -> ABCD -- Resulting state +md5_round f abcd s ns = foldl (md5_inner_function f) abcd ns' + where ns' = zipWith (\x (y, z) -> (y, x + z)) s ns + + +-- Apply one of the functions md5_[fghi] and put the new ABCD together + +md5_inner_function :: (XYZ -> Word32) -- Auxiliary function + -> ABCD -- Initial state + -> (Rotation, Word32) -- The rotation and additive + -- constant (X[i] + T[j]) + -> ABCD -- Resulting state +md5_inner_function f (ABCD (a, b, c, d)) (s, ki) = ABCD (d, a', b, c) + where mid_a = a + f(b,c,d) + ki + rot_a = rotL mid_a s + a' = b + rot_a + + +-- The 4 auxiliary functions + +md5_f :: XYZ -> Word32 +md5_f (x, y, z) = z `xor` (x .&. (y `xor` z)) +{- optimised version of: (x .&. y) .|. ((complement x) .&. z) -} + +md5_g :: XYZ -> Word32 +md5_g (x, y, z) = md5_f (z, x, y) +{- was: (x .&. z) .|. (y .&. (complement z)) -} + +md5_h :: XYZ -> Word32 +md5_h (x, y, z) = x `xor` y `xor` z + +md5_i :: XYZ -> Word32 +md5_i (x, y, z) = y `xor` (x .|. (complement z)) + + +-- The magic numbers from the RFC. + +magic_numbers :: ABCD +magic_numbers = ABCD (0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476) + + +-- The 4 lists of (rotation, additive constant) tuples, one for each round + +rounds :: ([(Rotation, Word32)], + [(Rotation, Word32)], + [(Rotation, Word32)], + [(Rotation, Word32)]) +rounds = (r1, r2, r3, r4) + where r1 = [(s11, 0xd76aa478), (s12, 0xe8c7b756), (s13, 0x242070db), + (s14, 0xc1bdceee), (s11, 0xf57c0faf), (s12, 0x4787c62a), + (s13, 0xa8304613), (s14, 0xfd469501), (s11, 0x698098d8), + (s12, 0x8b44f7af), (s13, 0xffff5bb1), (s14, 0x895cd7be), + (s11, 0x6b901122), (s12, 0xfd987193), (s13, 0xa679438e), + (s14, 0x49b40821)] + r2 = [(s21, 0xf61e2562), (s22, 0xc040b340), (s23, 0x265e5a51), + (s24, 0xe9b6c7aa), (s21, 0xd62f105d), (s22, 0x2441453), + (s23, 0xd8a1e681), (s24, 0xe7d3fbc8), (s21, 0x21e1cde6), + (s22, 0xc33707d6), (s23, 0xf4d50d87), (s24, 0x455a14ed), + (s21, 0xa9e3e905), (s22, 0xfcefa3f8), (s23, 0x676f02d9), + (s24, 0x8d2a4c8a)] + r3 = [(s31, 0xfffa3942), (s32, 0x8771f681), (s33, 0x6d9d6122), + (s34, 0xfde5380c), (s31, 0xa4beea44), (s32, 0x4bdecfa9), + (s33, 0xf6bb4b60), (s34, 0xbebfbc70), (s31, 0x289b7ec6), + (s32, 0xeaa127fa), (s33, 0xd4ef3085), (s34, 0x4881d05), + (s31, 0xd9d4d039), (s32, 0xe6db99e5), (s33, 0x1fa27cf8), + (s34, 0xc4ac5665)] + r4 = [(s41, 0xf4292244), (s42, 0x432aff97), (s43, 0xab9423a7), + (s44, 0xfc93a039), (s41, 0x655b59c3), (s42, 0x8f0ccc92), + (s43, 0xffeff47d), (s44, 0x85845dd1), (s41, 0x6fa87e4f), + (s42, 0xfe2ce6e0), (s43, 0xa3014314), (s44, 0x4e0811a1), + (s41, 0xf7537e82), (s42, 0xbd3af235), (s43, 0x2ad7d2bb), + (s44, 0xeb86d391)] + s11 = 7 + s12 = 12 + s13 = 17 + s14 = 22 + s21 = 5 + s22 = 9 + s23 = 14 + s24 = 20 + s31 = 4 + s32 = 11 + s33 = 16 + s34 = 23 + s41 = 6 + s42 = 10 + s43 = 15 + s44 = 21 + + +-- ===================== CONVERSION FUNCTIONS ======================== + + +-- Turn the 4 32 bit words into a string representing the hex number they +-- represent. + +abcd_to_string :: ABCD -> String +abcd_to_string (ABCD (a,b,c,d)) = concat $ map display_32bits_as_hex [a,b,c,d] + + +-- Split the 32 bit word up, swap the chunks over and convert the numbers +-- to their hex equivalents. + +display_32bits_as_hex :: Word32 -> String +display_32bits_as_hex w = swap_pairs cs + where cs = map (\x -> getc $ (shiftR w (4*x)) .&. 15) [0..7] + getc n = (['0'..'9'] ++ ['a'..'f']) !! (fromIntegral n) + swap_pairs (x1:x2:xs) = x2:x1:swap_pairs xs + swap_pairs _ = [] + +-- Convert to an integer, performing endianness magic as we go + +abcd_to_integer :: ABCD -> Integer +abcd_to_integer (ABCD (a,b,c,d)) = rev_num a * 2^(96 :: Int) + + rev_num b * 2^(64 :: Int) + + rev_num c * 2^(32 :: Int) + + rev_num d + +rev_num :: Word32 -> Integer +rev_num i = toInteger j `mod` (2^(32 :: Int)) + -- NHC's fault ~~~~~~~~~~~~~~~~~~~~~ + where j = foldl (\so_far next -> shiftL so_far 8 + (shiftR i next .&. 255)) + 0 [0,8,16,24] + +-- Used to convert a 64 byte string to 16 32bit words + +string_to_word32s :: String -> [Word32] +string_to_word32s "" = [] +string_to_word32s ss = this:string_to_word32s ss' + where (s, ss') = splitAt 4 ss + this = foldr (\c w -> shiftL w 8 + (fromIntegral.ord) c) 0 s + + +-- Used to convert a list of 512 bools to 16 32bit words + +bools_to_word32s :: [Bool] -> [Word32] +bools_to_word32s [] = [] +bools_to_word32s bs = this:bools_to_word32s rest + where (bs1, bs1') = splitAt 8 bs + (bs2, bs2') = splitAt 8 bs1' + (bs3, bs3') = splitAt 8 bs2' + (bs4, rest) = splitAt 8 bs3' + this = boolss_to_word32 [bs1, bs2, bs3, bs4] + bools_to_word8 = foldl (\w b -> shiftL w 1 + if b then 1 else 0) 0 + boolss_to_word32 = foldr (\w8 w -> shiftL w 8 + bools_to_word8 w8) 0 + + +-- Convert the size into a list of characters used by the len_pad function +-- for strings + +length_to_chars :: Int -> Zord64 -> String +length_to_chars 0 _ = [] +length_to_chars p n = this:length_to_chars (p-1) (shiftR n 8) + where this = chr $ fromIntegral $ n .&. 255 + addfile ./dependencies/Crypto-2.0.0/Data/Digest/SHA1.hs hunk ./dependencies/Crypto-2.0.0/Data/Digest/SHA1.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Data.Digest.SHA1 +-- Copyright : (c) Dominic Steinitz 2003 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Takes the SHA1 module supplied by Ian Lynagh and wraps it so it +-- takes [Octet] and returns [Octet] where the length of the result +-- is always 20. +-- See +-- and . +-- +----------------------------------------------------------------------------- + +module Data.Digest.SHA1 ( + -- * Function Types + hash) where + +import Data.Digest.SHA1Aux +import Codec.Utils +import Char(chr) +import List(unfoldr) +import Numeric(readHex) + +-- | Take [Octet] and return [Octet] according to the standard. +-- The length of the result is always 20 octets or 160 bits as required +-- by the standard. + +hash :: [Octet] -> [Octet] +hash xs = + unfoldr f $ sha1 $ map (chr . fromIntegral) xs + where f :: String -> Maybe (Octet,String) + f [] = + Nothing + f (x:y:zs) = + Just (fromIntegral a,zs) + where [(a,_)] = readHex (x:y:[]) addfile ./dependencies/Crypto-2.0.0/Data/Digest/SHA1Aux.hs hunk ./dependencies/Crypto-2.0.0/Data/Digest/SHA1Aux.hs 1 +module Data.Digest.SHA1Aux (sha1, sha1_size) where + +import Char +import Bits +import Word + +type ABCDE = (Word32, Word32, Word32, Word32, Word32) +type XYZ = (Word32, Word32, Word32) +type Rotation = Int + +sha1 :: String -> String +sha1 s = s5 + where s1_2 = sha1_step_1_2_pad_length s + abcde = sha1_step_3_init + abcde' = sha1_step_4_main abcde s1_2 + s5 = sha1_step_5_display abcde' + +sha1_size :: (Integral a) => a -> String -> String +sha1_size l s = s5 + where s1_2 = s ++ sha1_step_1_2_work (fromIntegral ((toInteger l) `mod` (2^64))) "" + abcde = sha1_step_3_init + abcde' = sha1_step_4_main abcde s1_2 + s5 = sha1_step_5_display abcde' + +sha1_step_1_2_pad_length :: String -> String +sha1_step_1_2_pad_length s = sha1_step_1_2_work 0 s + +sha1_step_1_2_work :: Integer -> String -> String +sha1_step_1_2_work c64 "" = padding ++ len + where padding = '\128':replicate' (shiftR (fromIntegral $ (440 - c64) `mod` 512) 3) '\000' + len = map chr $ size_split 8 c64 +sha1_step_1_2_work c64 (c:cs) = c:sha1_step_1_2_work ((c64 + 8) `mod` (2^64)) cs + +replicate' :: Word16 -> a -> [a] +replicate' 0 _ = [] +replicate' n x = x:replicate' (n-1) x + +size_split :: Int -> Integer -> [Int] +size_split 0 _ = [] +size_split p n = size_split (p-1) n' ++ [fromIntegral d] + where (n', d) = divMod n 256 + +sha1_step_3_init :: ABCDE +sha1_step_3_init = (0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0) + +sha1_step_4_main :: ABCDE -> String -> ABCDE +sha1_step_4_main abcde "" = {- abcde -} abcde +sha1_step_4_main abcde0 s = sha1_step_4_main abcde5 s' + where (s64, s') = takeDrop 64 s + s16 = get_word_32s s64 + s80 = s16 ++ sha1_add_ws 16 (drop 13 s16, drop 8 s16, drop 2 s16, s16) + (s20_0, s60) = takeDrop 20 s80 + (s20_1, s40) = takeDrop 20 s60 + (s20_2, s20_3) = takeDrop 20 s40 + abcde1 = foldl (doit f1 0x5a827999) abcde0 s20_0 + abcde2 = foldl (doit f2 0x6ed9eba1) abcde1 s20_1 + abcde3 = foldl (doit f3 0x8f1bbcdc) abcde2 s20_2 + abcde4 = foldl (doit f2 0xca62c1d6) abcde3 s20_3 + f1 (x, y, z) = (x .&. y) .|. ((complement x) .&. z) + f2 (x, y, z) = x `xor` y `xor` z + f3 (x, y, z) = (x .&. y) .|. (x .&. z) .|. (y .&. z) + (a, b, c, d, e ) = abcde0 + (a', b', c', d', e') = abcde4 + abcde5 = (a + a', b + b', c + c', d + d', e + e') + +doit :: (XYZ -> Word32) -> Word32 -> ABCDE -> Word32 -> ABCDE +doit f k (a, b, c, d, e) w = (a', a, rotL b 30, c, d) + where a' = rotL a 5 + f(b, c, d) + e + w + k + +sha1_add_ws :: Int -> ([Word32], [Word32], [Word32], [Word32]) -> [Word32] +sha1_add_ws 80 _ = [] +sha1_add_ws n (w1:w1s, w2:w2s, w3:w3s, w4:w4s) + = w:sha1_add_ws (n + 1) (w1s ++ [w], w2s ++ [w], w3s ++ [w], w4s ++ [w]) + where w = rotL (foldr1 xor [w1, w2, w3, w4]) 1 + +get_word_32s :: String -> [Word32] +get_word_32s "" = [] +get_word_32s ss = this:rest + where (s, ss') = takeDrop 4 ss + this = sum $ zipWith shiftL (map (fromIntegral.ord) s) [24, 16, 8, 0] + rest = get_word_32s ss' + +takeDrop :: Int -> [a] -> ([a], [a]) +takeDrop _ [] = ([], []) +takeDrop 0 xs = ([], xs) +takeDrop n (x:xs) = (x:ys, zs) + where (ys, zs) = takeDrop (n-1) xs + +sha1_step_5_display :: ABCDE -> String +sha1_step_5_display (a, b, c, d, e) + = foldr (\x y -> display_32bits_as_hex x ++ y) "" [a, b, c, d, e] + +display_32bits_as_hex :: Word32 -> String +display_32bits_as_hex x0 = map getc [y8,y7,y6,y5,y4,y3,y2,y1] + where (x1, y1) = divMod x0 16 + (x2, y2) = divMod x1 16 + (x3, y3) = divMod x2 16 + (x4, y4) = divMod x3 16 + (x5, y5) = divMod x4 16 + (x6, y6) = divMod x5 16 + (y8, y7) = divMod x6 16 + getc n = (['0'..'9'] ++ ['a'..'f']) !! (fromIntegral n) + +rotL :: Word32 -> Rotation -> Word32 +rotL a s = shiftL a s .|. shiftL a (s-32) + addfile ./dependencies/Crypto-2.0.0/Data/LargeWord.hs hunk ./dependencies/Crypto-2.0.0/Data/LargeWord.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Data.LargeWord +-- Copyright : (c) Dominic Steinitz 2004 +-- License : BSD-style (see the file ReadMe.tex) +-- +-- Maintainer : dominic.steinitz@blueyonder.co.uk +-- Stability : experimental +-- Portability : portable +-- +-- Provides Word128, Word192 and Word256 and a way of producing other +-- large words if required. +-- +----------------------------------------------------------------------------- + +module Data.LargeWord + (Word128,Word192,Word256) where + +import Data.Word +import Data.Bits +import Numeric +import Char + +-- Keys have certain capabilities. + +class LargeWord a where + largeWordToInteger :: a -> Integer + integerToLargeWord :: Integer -> a + largeWordPlus :: a -> a -> a + largeWordAnd :: a -> a -> a + largeWordOr :: a -> a -> a + largeWordShift :: a -> Int -> a + largeWordXor :: a -> a -> a + largeBitSize :: a -> Int + +-- Word64 is a key in the obvious way. + +instance LargeWord Word64 where + largeWordToInteger = toInteger + integerToLargeWord = fromInteger + largeWordPlus = (+) + largeWordAnd = (.&.) + largeWordOr = (.|.) + largeWordShift = shift + largeWordXor = xor + largeBitSize = bitSize + +-- Define larger keys from smaller ones. + +data LargeKey a b = LargeKey a b + deriving (Eq, Ord) + +instance (Ord a, Bits a, LargeWord a, Bits b, LargeWord b) => + LargeWord (LargeKey a b) where + largeWordToInteger (LargeKey lo hi) = + largeWordToInteger lo + (2^(bitSize lo)) * largeWordToInteger hi + integerToLargeWord x = + let (h,l) = x `quotRem` (2^(bitSize lo)) + (lo,hi) = (integerToLargeWord l, integerToLargeWord h) in + LargeKey lo hi + largeWordPlus (LargeKey alo ahi) (LargeKey blo bhi) = + LargeKey lo' hi' where + lo' = alo + blo + hi' = ahi + bhi + if lo' < alo then 1 else 0 + largeWordAnd (LargeKey alo ahi) (LargeKey blo bhi) = + LargeKey lo' hi' where + lo' = alo .&. blo + hi' = ahi .&. bhi + largeWordOr (LargeKey alo ahi) (LargeKey blo bhi) = + LargeKey lo' hi' where + lo' = alo .|. blo + hi' = ahi .|. bhi + largeWordXor (LargeKey alo ahi) (LargeKey blo bhi) = + LargeKey lo' hi' where + lo' = alo `xor` blo + hi' = ahi `xor` bhi + largeWordShift w 0 = w + largeWordShift (LargeKey lo hi) x = + if bitSize lo < bitSize hi + then LargeKey (shift lo x) + (shift hi x .|. (shift (conv lo) (x - (bitSize lo)))) + else LargeKey (shift lo x) + (shift hi x .|. (conv $ shift lo (x - (bitSize lo)))) + where conv = integerToLargeWord . largeWordToInteger + largeBitSize ~(LargeKey lo hi) = largeBitSize lo + largeBitSize hi + +instance (Ord a, Bits a, LargeWord a, Bits b, LargeWord b) => Show (LargeKey a b) where + showsPrec p = showInt . largeWordToInteger + +instance (Ord a, Bits a, LargeWord a, Bits b, LargeWord b) => + Num (LargeKey a b) where + (+) = largeWordPlus + fromInteger = integerToLargeWord + +-- Larger keys are instances of Bits provided their constituents are keys. + +instance (Ord a, Bits a, LargeWord a, Bits b, LargeWord b) => + Bits (LargeKey a b) where + (.&.) = largeWordAnd + (.|.) = largeWordOr + xor = largeWordXor + shift = largeWordShift + bitSize = largeBitSize + +instance (Ord a, Bits a, Bounded a, Integral a, LargeWord a, + Bits b, Bounded b, Integral b, LargeWord b) => + Bounded (LargeKey a b) where + minBound = 0 + maxBound = + result where + result = + fromIntegral $ + (1 + fromIntegral (maxBound `asTypeOf` (boflk result)))* + (1 + fromIntegral (maxBound `asTypeOf` (aoflk result))) - 1 + +aoflk :: (LargeKey a b) -> a +aoflk = undefined +boflk :: (LargeKey a b) -> b +boflk = undefined + +instance (Ord a, Bits a, LargeWord a, Ord b, Bits b, LargeWord b) => + Integral (LargeKey a b) where + toInteger = largeWordToInteger + +instance (Ord a, Bits a, LargeWord a, Ord b, Bits b, LargeWord b) => + Real (LargeKey a b) + +instance Enum (LargeKey a b) + +type Word96 = LargeKey Word32 Word64 +type Word128 = LargeKey Word64 Word64 +type Word160 = LargeKey Word32 Word128 +type Word192 = LargeKey Word64 Word128 +type Word224 = LargeKey Word32 Word192 +type Word256 = LargeKey Word64 Word192 addfile ./dependencies/Crypto-2.0.0/PKCS8Example.hs hunk ./dependencies/Crypto-2.0.0/PKCS8Example.hs 1 +module Main(main) where + +import System.IO +import System.Environment +import Control.Monad.Error +import Data.Maybe +import Data.List ( + unfoldr, + intersperse + ) +import Numeric ( + showHex + ) +import NewBinary.Binary +import Codec.Utils ( + toOctets + ) +import Codec.ASN1.BER +import Codec.ASN1 +import Codec.ASN1.TLV +import Codec.ASN1.PKCS8 +import Codec.ASN1.X509 ( + algorithm1, + parameters1 + ) +import Text.PrettyPrint + +pp pki rsapk = + render ( + ppLabelString "Version" (show (version2 pki)) + $$ + ppLabelDoc "Private Key Algorithm" algid + $$ + ppLabelDoc "Private Key" rs + ) + where + algid = + ppLabelString "Algorithm" (show (algorithm1 al)) + $$ + ppLabelString "Parameters" (show (parameters1 al)) + al = privateKeyAlgorithm pki + rs = ppLabelString "Version" (show (version1 rsapk)) + $$ + mod + $$ + ppLabelDoc "Public Exponent" puE + $$ + ppLabelDoc "Private Exponent" prE + $$ + ppLabelDoc "Prime 1" p1 + $$ + ppLabelDoc "Prime 2" p2 + $$ + ppLabelDoc "Exponent 1" e1 + $$ + ppLabelDoc "Exponent 2" e2 + $$ + ppLabelDoc "Coefficient" co + bar = map (map sh) (split 16 (toOctets 256 (modulus rsapk))) + sh x | x < 16 = showHex x "0" + | otherwise = showHex x "" + split :: Int -> [a] -> [[a]] + split n xs = unfoldr (g n) xs + g :: Int -> [a] -> Maybe ([a],[a]) + g n y + | length y == 0 = Nothing + | otherwise = Just (splitAt n y) + mods1 :: [[Doc]] + mods1 = map (intersperse colon) (map (map text) bar) + mods2 :: [Doc] + mods2 = map hcat mods1 + mod = ppLabelDoc "Modulus" (vcat mods2) + puE = hexify (publicExponent rsapk) + prE = hexify (privateExponent rsapk) + p1 = hexify (prime1 rsapk) + p2 = hexify (prime2 rsapk) + e1 = hexify (exponent1 rsapk) + e2 = hexify (exponent2 rsapk) + co = hexify (coefficient rsapk) + hexify :: Integral a => a -> Doc + hexify n = + let bar = map (map sh) (split 16 (toOctets 256 n)) + foo = map (intersperse colon) (map (map text) bar) + baz = vcat (map hcat foo) + in baz + +ppLabelString :: String -> String -> Doc +ppLabelString l x = + text l <> colon <> space <> (text x) + +ppLabelDoc :: String -> Doc -> Doc +ppLabelDoc l d = + text l <> colon + $$ + nest 3 d + +test fileName = + do h <- openFile fileName ReadMode + bin <- openBinIO_ h + (l,x) <- tlvIO bin + foo <- tc privateKeyInfo x + let (_ ::= t) = privateKeyInfo + pk = (decode t (Just foo))::(Maybe PrivateKeyInfo) + let (OctetString xs) = privateKey1 $ fromJust pk + (l',x') = tlv xs + bar <- tc rsaPrivateKey x' + let (_ ::= t') = rsaPrivateKey + rsapk = (decode t' (Just bar))::(Maybe RSAPrivateKey) + putStrLn (pp (fromJust pk) (fromJust rsapk)) + +main = + do progName <- getProgName + args <- getArgs + if length args /= 1 + then putStrLn ("Usage: " ++ progName ++ " ") + else test (args!!0) addfile ./dependencies/Crypto-2.0.0/QuickTest.hs hunk ./dependencies/Crypto-2.0.0/QuickTest.hs 1 - +module Main where + +import Codec.Utils +import Codec.Encryption.Blowfish as Blowfish +import Codec.Encryption.AES as AES +import Codec.Encryption.Modes +import Codec.Encryption.Padding +import Codec.Binary.Base64 +import Data.LargeWord +import Data.Word +import Data.Bits +import Numeric +import Data.Char +import Test.QuickCheck + +instance Arbitrary Word8 where + arbitrary = + do n <- choose ((fromIntegral (minBound::Word8))::Int, + (fromIntegral (maxBound::Word8))::Int) + return (fromIntegral n) + +instance Arbitrary Word64 where + arbitrary = + do n <- choose ((fromIntegral (minBound::Word64))::Integer, + (fromIntegral (maxBound::Word64))::Integer) + return (fromIntegral n) + +instance Arbitrary Word128 where + arbitrary = + do n <- choose ((fromIntegral (minBound::Word128))::Integer, + (fromIntegral (maxBound::Word128))::Integer) + return (fromIntegral n) + +prop_decryptEncrypt k b = b == Blowfish.decrypt k (Blowfish.encrypt k b) + where types = (k :: Word8, b :: Word64) + +prop_AESIdempotent k b = b == AES.decrypt k (AES.encrypt k b) + where types = (k :: Word128, b :: Word128) + +prop_unCbcCbc iv k bs = + bs == (unPkcs5 $ unCbc Blowfish.decrypt iv k $ cbc Blowfish.encrypt iv k $ pkcs5 bs) + where types =(k :: Word8, iv :: Word64, bs :: [Octet]) + +prop_unPkcs5Pkcs5 os = + os == (unPkcs5 $ ((pkcs5 os)::[Word64])) + where types = (os :: [Octet]) + +prop_unNullsNulls os = + all (/=0) os ==> + os == (unPadNulls $ ((padNulls os)::[Word64])) + where types = (os :: [Octet]) + +prop_fromOctetsToOctets k n = + k >= 0 && n > 1 ==> + k == (fromOctets n $ toOctets n k) + where types = (k :: Int, n :: Word8) + +prop_unTwosCompTwosComp n = + n < (0) ==> + collect n $ + forAll g $ + \n -> n == (fromTwosComp $ toTwosComp n) + where types = (n::Int) + g = do n <- choose (minBound::Int,maxBound::Int) + return (13*n) + +prop_base64 os = + os == g os + where types = (os :: [Word8]) + g = decode . encode + +prop_chop72 os = + os == g os + where types = (os :: [Word8]) + g = decode . chop72 . encode + +main = do quickCheck prop_base64 + quickCheck prop_chop72 + quickCheck prop_decryptEncrypt + quickCheck prop_AESIdempotent + quickCheck prop_unCbcCbc + quickCheck prop_unPkcs5Pkcs5 + quickCheck prop_unNullsNulls + quickCheck prop_fromOctetsToOctets + quickCheck prop_unTwosCompTwosComp addfile ./dependencies/Crypto-2.0.0/RSAEncryptionExample.hs hunk ./dependencies/Crypto-2.0.0/RSAEncryptionExample.hs 1 - +module Main(main) where + +import System.IO +import Data.Char +import Data.List +import System.Environment +import System.Console.GetOpt +import Data.Maybe +import Codec.ASN1 +import Codec.Utils +import Data.Digest.SHA1 +import Codec.Encryption.RSA.MGF +import qualified Codec.Encryption.RSA.EMEOAEP as E +import Codec.Encryption.RSA +import Codec.ASN1.TLV +import Codec.ASN1.X509 +import Codec.ASN1.BER +import NewBinary.Binary + +randomSeed :: [Octet] +randomSeed = hash [3] + +ciphertext :: [Octet] -> [Octet] -> String -> [Octet] +ciphertext n d x = + encrypt (n,d) $ + E.encode mgf hash [] randomSeed n $ + map (fromIntegral . ord) x + +encryptWith certFile plainTextFile cipherTextFile = +{- +certFile should contain an X.509 certificate. +-} + do hcert <- openFile certFile ReadMode + hplain <- openFile plainTextFile ReadMode + ptext <- hGetContents hplain + bin <- openBinIO_ hcert + (_,x) <- tlvIO bin +{- +Typecheck this is really a signed certificate. +-} + sc <- tc signedCertificate x +{- +If it is then decode it and extract the bitstring containing the RSA +public key. +-} + let (_ ::= c) = signedCertificate + d = (decode c (Just sc))::(Maybe SignedCertificate) + d1 = certificate1 (fromJust d) + d2 = subjectPublicKeyInfo2 d1 + d3 = subjectPublicKeyInfo1 d2 + (BitString e) = d3 + (_,x') = tlv e +{- +Typecheck this really is an RSA public key. +-} + rpk <- tc rsaPublicKey x' +{- +If it is then decode it and extract the modulus and the public +exponent. +-} + let (_ ::= r) = rsaPublicKey + s = (decode r (Just rpk)) + ct = ciphertext (toOctets 256 $ modulus1 $ fromJust s) + (toOctets 256 $ publicExponent1 $ fromJust s) + ptext +{- +Write out the encrypted text. +-} + ofh <- openFile cipherTextFile WriteMode + hPutStr ofh (map (chr . fromIntegral) ct) + hClose ofh + +main = do pn <- getProgName + args <- getArgs + (fs,ss) <- opts pn args + let sfs = sort fs + (Cert e) = sfs!!0 + (Input i) = sfs!!1 + (Output o) = sfs!!2 + encryptWith e i o + +data Flag = Cert String | Input String | Output String + deriving (Show,Eq,Ord) + +options = [ + Option ['e'] ["cert","certificate"] (ReqArg Cert "CERT") + "Certificate File", + Option ['p'] ["plain","plaintext"] (ReqArg Input "INPUT") + "Plaintext File", + Option ['c'] ["cipher","ciphertext"] (ReqArg Output "OUTPUT") + "Ciphertext Fileoutput" + ] + +opts :: String -> [String] -> IO ([Flag], [String]) +opts progName argv = + case getOpt Permute options argv of + (o,n,[] ) -> + if length o == 3 + then return (o,n) + else ioError (userError (usageInfo header options)) + (_,_,errs) -> + ioError (userError (concat errs ++ usageInfo header options)) + where header = "Usage: " ++ progName ++ " [OPTION...] files..." addfile ./dependencies/Crypto-2.0.0/RSATest.hs hunk ./dependencies/Crypto-2.0.0/RSATest.hs 1 +module Main(main) where + +import Codec.Utils +import Data.Digest.SHA1 +import Codec.Encryption.RSA.MGF +import Codec.Encryption.RSA.EMEOAEP +import Codec.Encryption.RSA +import Test.HUnit + +n :: [Octet] +n = + [0xbb, 0xf8, 0x2f, 0x09, 0x06, 0x82, 0xce, 0x9c, + 0x23, 0x38, 0xac, 0x2b, 0x9d, 0xa8, 0x71, 0xf7, + 0x36, 0x8d, 0x07, 0xee, 0xd4, 0x10, 0x43, 0xa4, + 0x40, 0xd6, 0xb6, 0xf0, 0x74, 0x54, 0xf5, 0x1f, + 0xb8, 0xdf, 0xba, 0xaf, 0x03, 0x5c, 0x02, 0xab, + 0x61, 0xea, 0x48, 0xce, 0xeb, 0x6f, 0xcd, 0x48, + 0x76, 0xed, 0x52, 0x0d, 0x60, 0xe1, 0xec, 0x46, + 0x19, 0x71, 0x9d, 0x8a, 0x5b, 0x8b, 0x80, 0x7f, + 0xaf, 0xb8, 0xe0, 0xa3, 0xdf, 0xc7, 0x37, 0x72, + 0x3e, 0xe6, 0xb4, 0xb7, 0xd9, 0x3a, 0x25, 0x84, + 0xee, 0x6a, 0x64, 0x9d, 0x06, 0x09, 0x53, 0x74, + 0x88, 0x34, 0xb2, 0x45, 0x45, 0x98, 0x39, 0x4e, + 0xe0, 0xaa, 0xb1, 0x2d, 0x7b, 0x61, 0xa5, 0x1f, + 0x52, 0x7a, 0x9a, 0x41, 0xf6, 0xc1, 0x68, 0x7f, + 0xe2, 0x53, 0x72, 0x98, 0xca, 0x2a, 0x8f, 0x59, + 0x46, 0xf8, 0xe5, 0xfd, 0x09, 0x1d, 0xbd, 0xcb] + +p :: [Octet] +p = [0xee, 0xcf, 0xae, 0x81, 0xb1, 0xb9, 0xb3, 0xc9, + 0x08, 0x81, 0x0b, 0x10, 0xa1, 0xb5, 0x60, 0x01, + 0x99, 0xeb, 0x9f, 0x44, 0xae, 0xf4, 0xfd, 0xa4, + 0x93, 0xb8, 0x1a, 0x9e, 0x3d, 0x84, 0xf6, 0x32, + 0x12, 0x4e, 0xf0, 0x23, 0x6e, 0x5d, 0x1e, 0x3b, + 0x7e, 0x28, 0xfa, 0xe7, 0xaa, 0x04, 0x0a, 0x2d, + 0x5b, 0x25, 0x21, 0x76, 0x45, 0x9d, 0x1f, 0x39, + 0x75, 0x41, 0xba, 0x2a, 0x58, 0xfb, 0x65, 0x99] + +q :: [Octet] +q = [0xc9, 0x7f, 0xb1, 0xf0, 0x27, 0xf4, 0x53, 0xf6, + 0x34, 0x12, 0x33, 0xea, 0xaa, 0xd1, 0xd9, 0x35, + 0x3f, 0x6c, 0x42, 0xd0, 0x88, 0x66, 0xb1, 0xd0, + 0x5a, 0x0f, 0x20, 0x35, 0x02, 0x8b, 0x9d, 0x86, + 0x98, 0x40, 0xb4, 0x16, 0x66, 0xb4, 0x2e, 0x92, + 0xea, 0x0d, 0xa3, 0xb4, 0x32, 0x04, 0xb5, 0xcf, + 0xce, 0x33, 0x52, 0x52, 0x4d, 0x04, 0x16, 0xa5, + 0xa4, 0x41, 0xe7, 0x00, 0xaf, 0x46, 0x15, 0x03] + +popTest = + TestCase ( + assertEqual "Product of Primes" + (fromOctets 256 n) + ((fromOctets 256 p)*(fromOctets 256 q)) + ) + +d :: [Octet] +d = [0xa5, 0xda, 0xfc, 0x53, 0x41, 0xfa, 0xf2, + 0x89, 0xc4, 0xb9, 0x88, 0xdb, 0x30, 0xc1, 0xcd, + 0xf8, 0x3f, 0x31, 0x25, 0x1e, 0x06, 0x68, 0xb4, + 0x27, 0x84, 0x81, 0x38, 0x01, 0x57, 0x96, 0x41, + 0xb2, 0x94, 0x10, 0xb3, 0xc7, 0x99, 0x8d, 0x6b, + 0xc4, 0x65, 0x74, 0x5e, 0x5c, 0x39, 0x26, 0x69, + 0xd6, 0x87, 0x0d, 0xa2, 0xc0, 0x82, 0xa9, 0x39, + 0xe3, 0x7f, 0xdc, 0xb8, 0x2e, 0xc9, 0x3e, 0xda, + 0xc9, 0x7f, 0xf3, 0xad, 0x59, 0x50, 0xac, 0xcf, + 0xbc, 0x11, 0x1c, 0x76, 0xf1, 0xa9, 0x52, 0x94, + 0x44, 0xe5, 0x6a, 0xaf, 0x68, 0xc5, 0x6c, 0x09, + 0x2c, 0xd3, 0x8d, 0xc3, 0xbe, 0xf5, 0xd2, 0x0a, + 0x93, 0x99, 0x26, 0xed, 0x4f, 0x74, 0xa1, 0x3e, + 0xdd, 0xfb, 0xe1, 0xa1, 0xce, 0xcc, 0x48, 0x94, + 0xaf, 0x94, 0x28, 0xc2, 0xb7, 0xb8, 0x88, 0x3f, + 0xe4, 0x46, 0x3a, 0x4b, 0xc8, 0x5b, 0x1c, 0xb3, + 0xc1] + +dP :: [Octet] +dP = [0x54, 0x49, 0x4c, 0xa6, 0x3e, 0xba, 0x03, 0x37, + 0xe4, 0xe2, 0x40, 0x23, 0xfc, 0xd6, 0x9a, 0x5a, + 0xeb, 0x07, 0xdd, 0xdc, 0x01, 0x83, 0xa4, 0xd0, + 0xac, 0x9b, 0x54, 0xb0, 0x51, 0xf2, 0xb1, 0x3e, + 0xd9, 0x49, 0x09, 0x75, 0xea, 0xb7, 0x74, 0x14, + 0xff, 0x59, 0xc1, 0xf7, 0x69, 0x2e, 0x9a, 0x2e, + 0x20, 0x2b, 0x38, 0xfc, 0x91, 0x0a, 0x47, 0x41, + 0x74, 0xad, 0xc9, 0x3c, 0x1f, 0x67, 0xc9, 0x81] + +exponent1 = + toOctets 256 $ (fromOctets 256 d) `mod` ((fromOctets 256 p) - 1) + +e1Test = + TestCase ( + assertEqual "Exponent" dP exponent1 + ) + +dQ :: [Octet] +dQ = [0x47, 0x1e, 0x02, 0x90, 0xff, 0x0a, 0xf0, 0x75, + 0x03, 0x51, 0xb7, 0xf8, 0x78, 0x86, 0x4c, 0xa9, + 0x61, 0xad, 0xbd, 0x3a, 0x8a, 0x7e, 0x99, 0x1c, + 0x5c, 0x05, 0x56, 0xa9, 0x4c, 0x31, 0x46, 0xa7, + 0xf9, 0x80, 0x3f, 0x8f, 0x6f, 0x8a, 0xe3, 0x42, + 0xe9, 0x31, 0xfd, 0x8a, 0xe4, 0x7a, 0x22, 0x0d, + 0x1b, 0x99, 0xa4, 0x95, 0x84, 0x98, 0x07, 0xfe, + 0x39, 0xf9, 0x24, 0x5a, 0x98, 0x36, 0xda, 0x3d] + +m :: [Octet] +m = [0xd4, 0x36, 0xe9, 0x95, 0x69, 0xfd, 0x32, 0xa7, + 0xc8, 0xa0, 0x5b, 0xbc, 0x90, 0xd3, 0x2c, 0x49] + +seed :: [Octet] +seed = [0xaa, 0xfd, 0x12, 0xf6, 0x59, 0xca, 0xe6, 0x34, + 0x89, 0xb4, 0x79, 0xe5, 0x07, 0x6d, 0xde, 0xc2, + 0xf0, 0x6c, 0xb5, 0x8f] + +e :: [Octet] +e = [0x11] + +encodedText = encode mgf hash [] seed n m + +decodedText = decode mgf hash [] encodedText + +encodingTest = + TestCase ( + assertEqual "Encoding / Decoding" m decodedText + ) + +cipherText = encrypt (n,e) encodedText + +plainText = decrypt (n,d) cipherText + +decodedText' = decode mgf hash [] plainText + +encryptionTest = + TestCase ( + assertEqual "Encrypting / Decrypting" m decodedText + ) + +tests = TestList [popTest, e1Test, encodingTest, encryptionTest] + +main = runTestTT tests addfile ./dependencies/Crypto-2.0.0/ReadMe.tex hunk ./dependencies/Crypto-2.0.0/ReadMe.tex 1 +\documentclass{article} + +\usepackage{listings} +\usepackage{a4} +\usepackage{courier} +\usepackage{hyperref} +\usepackage{html} + + +\lstdefinelanguage{ASN1} { + morekeywords={}, + sensitive=false, + morecomment=[s]{(--}{--)} + } + +\lstdefinelanguage{shell} { + sensitive=true + } + +\setlength{\parskip}{\medskipamount} +\setlength{\parindent}{0pt} + +\title{Haskell Cryptographic Library 2.0.1} +\author{Dominic Steinitz} + +\begin{document} + +\maketitle + +The +\htmladdnormallinkfoot +{Haskell Cryptographic Library 2.0.1} +{http://www.haskell.org/crypto} +collects together existing Haskell cryptographic +functions into one cabalized package, together with HUnit tests, +QuickCheck property tests, examples showing how to interwork with +other cryptographic implementations and examples showing how to +handle other ASN.1 definitions. + +This release contains: +\begin{itemize} +\item DES +\item Blowfish +\item AES +\item Cipher Block Chaining (CBC) +\item PKCS\#5 and nulls padding +\item SHA-1 +\item MD5 +\item RSA +\item OAEP +\item ASN.1 +\item PKCS\#8 +\item X.509 +\end{itemize} + +Haddock documentation for the library is available +\htmladdnormallinkfoot +{here} +{http://www.haskell.org/crypto/doc/html} +. + +This document was last updated on 24th April 2005. +\copyright\ 2005 Dominic Steinitz. + +\section{System Requirements} + +\begin{itemize} +\item +The code has been tested on GHC 6.4. +It does not currently work with Hugs or NHC. +\item +It requires the use of +\htmladdnormallinkfoot +{{\tt NewBinary.Binary}} +{http://www.n-heptane.com/nhlab/repos/NewBinary} +. +This uses an old version of cabal and you will need to download +\htmladdnormallinkfoot +{this} +{http://www.haskell.org/crypto/downloads/NewBinary.cabal} +this +in order to build and install it. +\end{itemize} + +\section{Installation Instructions} + +Get the sources: + +\lstset{language=shell,basicstyle=\ttfamily\small} +\begin{lstlisting}[frame=single] +darcs get --tag "2.0.1" http://www.haskell.org/crypto/src +\end{lstlisting} + +Build and install ready for testing: + +\begin{lstlisting}[frame=single] +ghc -o Setup Setup.hs -package Cabal +./Setup configure --prefix=/my/chosen/dir +./Setup build +./Setup install --user +\end{lstlisting} + +Run the tests. + +\begin{lstlisting}[frame=single] +cd /my/chosen/dir/bin +./BERTest +./RSATest +./SymmetricTest +./QuickTest +\end{lstlisting} + +Run the examples. For this you will need to generate an X.509 certificate +and a PKCS\#8 file containing a private key. Here's one way to do this. +Be careful as not all OIDs are supported (although they are easy to add). + +Notes: +\begin{itemize} +\item +The private key is produced in PKCS\#8 format. +You can look at it with Peter Gutmann's ASN.1 +\htmladdnormallinkfoot +{object dump program} +{http://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c} +if required. +\item +The private key is unencrypted. Storing private keys in clear +is not good security practice. The current implementation does not support +encrypted private keys but this should be straightforward to add. +\end{itemize} + +\begin{lstlisting}[frame=single] +openssl req -new -nodes -x509 -outform DER -out foo.der \ +-keyout key.pem -days 365 \ +-subj "/C=US/L=City/CN=localhost/emailAddress=root@localhost" + +openssl pkcs8 -topk8 -inform PEM -outform DER -in key.pem \ +-nocrypt -out key.der +\end{lstlisting} + +Run the examples to examine your private and public keys. + +\begin{lstlisting}[frame=single] +./PKCS8Example key.der +./X509Example foo.der +\end{lstlisting} + +Run the example to encrypt using Haskell and decrypt using openssl. + +\begin{lstlisting}[frame=single] +echo plaintext > plaintext + +./RSAEncryptionExample --cert=foo.der --plain=plaintext \ +--cipher=ciphertext + +openssl rsautl -decrypt -inkey key.pem -in ciphertext \ +-out unciphertext -oaep +\end{lstlisting} + +When you are happy, build and install them in +their final destination: + +\begin{lstlisting}[frame=single] +./Setup unregister --user +./Setup clean +./Setup configure +./Setup build +./Setup install +\end{lstlisting} + +\section{ASN.1 Support} + +The package contains some enough general ASN.1 support to decode PKCS\#8 and +X.509 encoded using BER. See the examples that +are provided with the package: \begin{tt}X509Example\end{tt} and +\begin{tt}PKCS8Example\end{tt}. + +Here's a further example. + +Suppose you have an ASN.1 module and have checked that it conforms to +the standard using, for example, +the on-line tool, +\htmladdnormallinkfoot{Asnp}{http://asn1.elibel.tm.fr/en/tools/asnp/index.htm} +\footnote{Definitions using ANY DEFINED BY have to be checked with -1990.} +\footnote{Asnp was developed in Objective Caml.} + +\lstset{language=ASN1} +\begin{lstlisting}[frame=single] +FooBar {1 2 0 0 6 1} DEFINITIONS ::= + BEGIN + Journey ::= SEQUENCE { + origin IA5String, + stop1 [0] IA5String OPTIONAL, + stop2 [1] IA5String OPTIONAL, + destination IA5String + } + Odyssey ::= SEQUENCE { + start Journey, + trip1 [0] Journey OPTIONAL, + trip2 [1] Journey OPTIONAL, + trip3 [2] Journey OPTIONAL, + end Journey + } + END +\end{lstlisting} + +Create abstract Haskell representations of the ASN.1 types. + +\lstset{language=Haskell} +\begin{lstlisting}[frame=single] +journey = + "Journey" ::= + AbsSeq Universal 16 Implicit [ + Regular (Just "origin" :>: + (Nothing :@: absIA5String)), + Optional (Just "stop1" :>: + (Just 0 :@: absIA5String)), + Optional (Just "stop2" :>: + (Just 1 :@: absIA5String)), + Regular (Just "destination" :>: + (Nothing :@: absIA5String)) + ] + +odyssey = + "Odyssey" ::= + AbsSeq Universal 16 Implicit [ + Regular (Just "start" :>: (Nothing :@: journey)), + Optional (Just "trip1" :>: (Just 0 :@: journey)), + Optional (Just "trip2" :>: (Just 1 :@: journey)), + Optional (Just "trip3" :>: (Just 2 :@: journey)), + Regular (Just "end" :>: (Nothing :@: journey)) + ] +\end{lstlisting} + +Then you can check that (abstract representations of) BER values conform +to these types. + +\begin{lstlisting}[frame=single] +module Main(main) where + +import Codec.ASN1.BER +import Codec.ASN1 + +-- Other definitions + +main = + do w <- tc odyssey berValue + putStrLn (show w) +\end{lstlisting} + +Now suppose that the BER value conforms to the ASN.1 type and that +you wish to manipulate the various values in the encoding. First +create some Haskell types to hold the decoded values. + +\begin{lstlisting}[frame=single] +data Journey = + Journey { + origin :: IA5String, + stop1 :: Maybe IA5String, + stop2 :: Maybe IA5String, + destination :: IA5String + } + deriving (Eq,Show) + +data Odyssey = + Odyssey { + start :: Journey, + trip1 :: Maybe Journey, + trip2 :: Maybe Journey, + trip3 :: Maybe Journey, + end :: Journey + } + deriving (Eq,Show) +\end{lstlisting} + +Then make them instances of the class {\begin{tt}Encode\end{tt}}. + +\begin{lstlisting}[frame=single] +instance Encode Journey where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return ( + Journey { + origin = fromJust (decode (as'!!0) (bs!!0)), + stop1 = decode (as'!!1) (bs!!1), + stop2 = decode (as'!!2) (bs!!2), + destination = fromJust (decode (as'!!3) (bs!!3)) + } + ) + +instance Encode Odyssey where + decode a b = + do x <- b + let as = absSeqComponents a + bs = encodedDefComps x + as' = map (\x -> replaceRef x as bs) as + return ( + Odyssey { + start = fromJust (decode (as'!!0) (bs!!0)), + trip1 = decode (as'!!1) (bs!!1), + trip2 = decode (as'!!2) (bs!!2), + trip3 = decode (as'!!2) (bs!!2), + end = fromJust (decode (as'!!4) (bs!!4)) + } + ) +\end{lstlisting} + +Finally, you can extract values from the decoded value. + +\begin{lstlisting}[frame=single] +module Main(main) where + +import Codec.ASN1.BER +import Codec.ASN1 + +-- Other definitions + +main = + do w <- tc odyssey berValue + let x = fromJust (decode (getAbsType odyssey) (Just w)) + putStrLn (show (start x)) +\end{lstlisting} + +\section{To Do} + +In no particular order: + +\begin{itemize} +\item +Read and generate PKCS12 private keys so that it is easy to inter-work +with other RSA implementations. +\item +Incorporate other symmetric key algorithms already coded in Haskell. +\item +Performance analysis as Blowfish ought to run more quickly than DES. +\item +Other modes / padding schemes. +\item +Digital signatures. +\item +Improve the support for {\begin{tt}ANY DEFINED BY\end{tt}} and its replacement +in later versions of the ASN.1 standards. In particular, replace the index +number by a label and do not treat as equivalent to {\tt OPTIONAL} or +{\tt DEFAULT}. +\item +Extend typechecking to ensure that only the appropriate key sizes are used +for a given algorithm. +\item +Put ASN.1 definitions into more appropriate modules, for example, +{\tt AlgorithmIdentifier}. +\item +Check lengths for correctness when decoding BER. See the Codec.ASN1.TLV +source for more on this. +\item +Improve the error messages when checking a BER encoding against its ASN.1 +specification. Currently the messages say what has failed but does not +give the context. +\end{itemize} + +\section{Contact} + +All questions, comments, bug reports, flames, requests for +updates / changes and suggestions should be directed to Dominic Steinitz. + +\section{Licensing} + +The modules in the library come from different authors and have been +released under different licences. + +\subsection{Contributors} + +\subsubsection{Codec.ASN1} +\begin{tabular}{|p{6cm}|p{3cm}|p{3cm}|p{1cm}|} +\hline\hline +Codec.ASN1 & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.ASN1.BER & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.ASN1.PKCS8 & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.ASN1.TLV & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.ASN1.X509 & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline\hline +\end{tabular} + +\subsubsection{Codec.Binary} +\begin{tabular}{|p{6cm}|p{3cm}|p{3cm}|p{1cm}|} +\hline\hline +Codec.Binary.Base64 & Warrick Gray & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline\hline +\end{tabular} + +\subsubsection{Codec.Encryption} +\begin{tabular}{|p{6cm}|p{3cm}|p{3cm}|p{1cm}|} +\hline\hline +Codec.Encryption.AES & Lukasz Anforowicz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.Encryption.AESAux & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.Encryption.Blowfish & Doug Hoyte & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.Encryption.BlowfishAux & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.Encryption.DES & Ian Lynagh & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.Encryption.DESAux & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.Encryption.Modes & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.Encryption.Padding & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.Encryption.RSA & David Sankel & +Copyright \copyright\ 2005, All rights reserved & GPL \\ +\hline +Codec.Encryption.RSA.EMEOAEP & David Sankel & +Copyright \copyright\ 2005, All rights reserved & GPL \\ +\hline +Codec.Encryption.RSA.MGF & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Codec.Encryption.RSA.NumberTheory & David Sankel & +Copyright \copyright\ 2005, All rights reserved & GPL \\ +\hline\hline +\end{tabular} + +\subsubsection{Codec} +\begin{tabular}{|p{6cm}|p{3cm}|p{3cm}|p{1cm}|} +\hline\hline +Codec.Utils & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline\hline +\end{tabular} + +\subsubsection{Data.Digest} +\begin{tabular}{|p{6cm}|p{3cm}|p{3cm}|p{1cm}|} +\hline\hline +Data.Digest.MD5 & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Data.Digest.MD5Aux & Ian Lynagh & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Data.Digest.SHA1 & Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +Data.Digest.SHA1Aux & Ian Lynagh & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline\hline +\end{tabular} + +\subsubsection{Data} +\begin{tabular}{|p{6cm}|p{3cm}|p{3cm}|p{1cm}|} +\hline\hline +Data.LargeWord +& Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline\hline +\end{tabular} + +\subsubsection{Tests and Examples} +\begin{tabular}{|p{6cm}|p{3cm}|p{3cm}|p{1cm}|} +\hline\hline +BERTest +& Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +RSATest +& Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +X509Example +& Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +QuickTest +& Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +SymmetricTest +& Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +PKCS8Example +& Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline +RSAEncryptionExample +& Dominic Steinitz & +Copyright \copyright\ 2005, All rights reserved & BSD \\ +\hline\hline +\end{tabular} + +\subsection{The BSD License} + +This license is based on +\htmladdnormallinkfoot +{The BSD License} +{http://www.opensource.org/licenses/bsd-license.php}. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +\begin{itemize} +\item +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +\item +Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +\item +The names of its contributors may not be used to endorse or promote +products derived from this software without specific prior written permission. +\end{itemize} + +\begin{sc} +This software is provided by the copyright holders and contributors ``AS IS'' +and any express or implied warranties, including, but not limited to, +the implied warranties of merchantability and fitness for a particular +purpose are disclaimed. In no event shall the copyright onwers or +contributors be liable for any direct, indirect, incidental, special, +exemplary, or consequential damages (including, but not limited to, +procurement of substitute goods or services; loss of use, data, or profits; +or business interruption) however caused and on any theory of liability, +whether in contract, strict liability, or tort (including negligence or +otherwise) arising in any way out of the use of this software, +even if advised of the possibility of such damage. +\end{sc} + +\subsection{The GNU General Public License (GPL)} + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You can find a copy of +the GNU General Public License +\htmladdnormallinkfoot +{here} +{http://www.opensource.org/licenses/gpl-license.php} +; +if not, write to the Free Software Foundation, Inc., 59 Temple Place, +Suite 330, Boston, MA 02111-1307 USA + +\section{Disclaimer} +Cryptography is a notoriously easy area in which to make mistakes, +not necessarily with the algorithms but with how they are implemented +(for example not protecting keys, using weak keys and so on). +For a readable account of some of the pitfalls, see +\htmladdnormallinkfoot +{Ross Anderson} +{http://www.cl.cam.ac.uk/users/rja14/} +'s book. + +\begin{sc} +This software is provided by the copyright holders and contributors ``AS IS'' +and any express or implied warranties, including, but not limited to, +the implied warranties of merchantability and fitness for a particular +purpose are disclaimed. In no event shall the copyright onwers or +contributors be liable for any direct, indirect, incidental, special, +exemplary, or consequential damages (including, but not limited to, +procurement of substitute goods or services; loss of use, data, or profits; +or business interruption) however caused and on any theory of liability, +whether in contract, strict liability, or tort (including negligence or +otherwise) arising in any way out of the use of this software, +even if advised of the possibility of such damage. +\end{sc} + +\section{Acknowledgements} + +\begin{itemize} +\item +Doug Hoyte (HardCore SoftWare) +\item +\htmladdnormallinkfoot + {Ian Lynagh} + {http://web.comlab.ox.ac.uk/oucl/work/ian.lynagh} +\item +\htmladdnormallinkfoot + {David Sankel} + {http://www.electronconsulting.com/whois.html} +\item +\htmladdnormallinkfoot +{Ross Paterson} +{http://www.soi.city.ac.uk/~ross} +\item +Lukasz Anforowicz +\item +\htmladdnormallinkfoot +{Warrick Gray} +{http://homepages.paradise.net.nz/warrickg/haskell/http/} +\end{itemize} + +\end{document} addfile ./dependencies/Crypto-2.0.0/Setup.lhs hunk ./dependencies/Crypto-2.0.0/Setup.lhs 1 +#!/usr/bin/env runghc + +> module Main where +> import Distribution.Simple + +> main :: IO () +> main = defaultMain addfile ./dependencies/Crypto-2.0.0/SymmetricTest.hs hunk ./dependencies/Crypto-2.0.0/SymmetricTest.hs 1 +module Main(main) where + +import Codec.Utils +import Codec.Encryption.Blowfish as Blowfish +import Codec.Encryption.Modes +import Codec.Encryption.Padding +import Codec.Encryption.DES as DES +import Codec.Encryption.AES as AES +import Data.Word +import Data.Bits +import Data.Char +import Data.LargeWord +import Test.HUnit +import Numeric + +-- AES Tests. + +-- Comparision with resuts from +-- http://www.cs.ucsd.edu/~fritz/rijndael_test.html + +ad = 0xF0E1D2C3B4A5968778695A4B3C2D1E0F :: Word128 +ak16 = 0xF0E1D2C3B4A5968778695A4B3C2D1E0F :: Word128 +ae16 = 0x6e94fffbb861b2c1769cd4629f3d724b :: Word128 +ae16' = AES.encrypt ak16 ad +aesTest1 = + TestCase ( + assertEqual "AES Key Length 128" ae16 ae16' + ) + +ak24 = 0xF0E1D2C3B4A5968778695A4B3C2D1E0FF0E1D2C3B4A59687 :: Word192 +ae24' = AES.encrypt ak24 ad +ae24 = 0x07d806bb62ebb4399354594ea6586ec6 :: Word128 +aesTest2 = + TestCase ( + assertEqual "AES Key Length 192" ae24 ae24' + ) + +ak32 = 0xF0E1D2C3B4A5968778695A4B3C2D1E0FF0E1D2C3B4A5968778695A4B3C2D1E0F :: Word256 +ae32' = AES.encrypt ak32 ad +ae32 = 0x28e88482d9b146fdde7e080fcbae1b98 :: Word128 +aes3 = ae32 == ae32' +aesTest3 = + TestCase ( + assertEqual "AES Key Length 256" ae32 ae32' + ) + +-- Comparision with resuts from +-- http://www.zvon.org/tmRFC/RFC3602/Output/chapter4.html + +aeskey16 = 0x06a9214036b8a15b512e03d534120006 :: Word128 +aesiv16 = 0x3dafba429d9eb430b422da802c9fac41 :: Word128 +aesplaintext = "Single block msg" +aesciphertext = [0xe353779c1079aeb82708942dbe77181a] :: [Word128] +aesciphertext' = + cbc AES.encrypt aesiv16 aeskey16 $ + pkcs5 $ + map (fromIntegral . ord) aesplaintext +-- aescbc1 = aesciphertext == take 1 aesciphertext' +aescbcTest1 = + TestCase ( + assertEqual "AES CBC PKCS5 Key Length 128" + aesciphertext (take 1 aesciphertext') + ) + +aesplaintext' = + map (chr . fromIntegral) $ + unPkcs5 $ + unCbc AES.decrypt aesiv16 aeskey16 aesciphertext' +aescbcTest2 = + TestCase ( + assertEqual "AES CBC PKCS5 Decryption Key Length 128" + aesplaintext aesplaintext' + ) + +aes2key16 = 0x6c3ea0477630ce21a2ce334aa746c2cd :: Word128 +aes2iv16 = 0xc782dc4c098c66cbd9cd27d825682c81 :: Word128 +aes2plaintext = "This is a 48-byte message (exactly 3 AES blocks)" +aes2ciphertext = [0xd0a02b3836451753d493665d33f0e886, + 0x2dea54cdb293abc7506939276772f8d5, + 0x021c19216bad525c8579695d83ba2684] :: [Word128] +aes2ciphertext' = + cbc AES.encrypt aes2iv16 aes2key16 $ + pkcs5 $ + map (fromIntegral . ord) aes2plaintext +aescbcTest3 = + TestCase ( + assertEqual "AES CBC PKCS5 3 Blocks Key Length 128" + aes2ciphertext (take 3 aes2ciphertext') + ) + +-- Comparision with resuts from +-- http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf + +aes3key24 = + 0x8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b :: Word192 +aes3iv16 = 0x000102030405060708090a0b0c0d0e0f :: Word128 +aes3plaintext = + [0x6bc1bee22e409f96e93d7e117393172a, + 0xae2d8a571e03ac9c9eb76fac45af8e51, + 0x30c81c46a35ce411e5fbc1191a0a52ef, + 0xf69f2445df4f9b17ad2b417be66c3710] :: [Word128] +aes3ciphertext' = + cbc AES.encrypt aes3iv16 aes3key24 $ + pkcs5 $ + concat $ + map (toOctets 256) aes3plaintext +aes3ciphertext = + [0x4f021db243bc633d7178183a9fa071e8, + 0xb4d9ada9ad7dedf4e5e738763f69145a, + 0x571b242012fb7ae07fa9baac3df102e0, + 0x08b0e27988598881d920a9e64f5615cd] :: [Word128] +aescbcTest4 = + TestCase ( + assertEqual "AES CBC PKCS5 4 Blocks Key Length 192" + aes3ciphertext (take 4 aes3ciphertext') + ) + +aes4key32 = + 0x603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4 + :: Word256 +aes4iv16 = 0x000102030405060708090a0b0c0d0e0f :: Word128 +aes4plaintext = + [0x6bc1bee22e409f96e93d7e117393172a, + 0xae2d8a571e03ac9c9eb76fac45af8e51, + 0x30c81c46a35ce411e5fbc1191a0a52ef, + 0xf69f2445df4f9b17ad2b417be66c3710] :: [Word128] +aes4ciphertext' = + cbc AES.encrypt aes4iv16 aes4key32 $ + pkcs5 $ + concat $ + map (toOctets 256) aes3plaintext +aes4ciphertext = + [0xf58c4c04d6e5f1ba779eabfb5f7bfbd6, + 0x9cfc4e967edb808d679f777bc6702c7d, + 0x39f23369a9d9bacfa530e26304231461, + 0xb2eb05e2c39be9fcda6c19078c6a9d1b] :: [Word128] +aescbcTest5 = + TestCase ( + assertEqual "AES CBC PKCS5 4 Blocks Key Length 256" + aes4ciphertext (take 4 aes4ciphertext') + ) + +-- Blowfish Tests. + +-- Tests from http://www.counterpane.com/vectors.txt. + +d = 0xFEDCBA9876543210 :: Word64 +k = 0xF0 :: Word8 +e = 0xF9AD597C49DB005E :: Word64 +e' = Blowfish.encrypt k d +bfTest1 = + TestCase ( + assertEqual "Blowfish Key Length 8" e e' + ) + +k2 = 0xF0E1 :: Word16 +e2 = 0xE91D21C1D961A6D6 :: Word64 +e2' = Blowfish.encrypt k2 d +bfTest2 = + TestCase ( + assertEqual "Blowfish Key Length 16" e2 e2' + ) + +e8 = 0xE87A244E2CC85E82 :: Word64 +k8 = 0xF0E1D2C3B4A59687 :: Word64 +e8' = Blowfish.encrypt k8 d +bfTest3 = + TestCase ( + assertEqual "Blowfish Key Length 64" e8 e8' + ) + +e16 = 0x93142887EE3BE15C :: Word64 +k16= 0xF0E1D2C3B4A5968778695A4B3C2D1E0F :: Word128 +e16' = Blowfish.encrypt k16 d +bfTest4 = + TestCase ( + assertEqual "Blowfish Key Length 128" e16 e16' + ) + +-- Blowfish test with Cipher Block Chaining. +-- Set up the published key, initialization vector and data. + +key16 = 0x0123456789ABCDEFF0E1D2C3B4A59687 :: Word128 +iv8 = 0xFEDCBA9876543210 :: Word64 +data29 = "7654321 Now is the time for \NUL" + +-- Pad with nulls as in the example. + +e29' = + cbc Blowfish.encrypt iv8 key16 $ padNulls $ map (fromIntegral . ord) data29 + +e29 = [0x6B,0x77,0xB4,0xD6,0x30,0x06,0xDE,0xE6, + 0x05,0xB1,0x56,0xE2,0x74,0x03,0x97,0x93, + 0x58,0xDE,0xB9,0xE7,0x15,0x46,0x16,0xD9, + 0x59,0xF1,0x65,0x2B,0xD5,0xFF,0x92,0xCC] :: [Octet] + +bfTest5 = + TestCase ( + assertEqual "AES CBC Nulls Key Length 128" + e29 (concat $ map (toOctets 256) e29') + ) + +-- DES Tests + +-- Test from http://www.itl.nist.gov/fipspubs/fip81.htm + +key = 0x0123456789abcdef :: Word64 +iv = 0x1234567890abcdef :: Word64 +expectedDES = [0xe5c7cdde872bf27c, + 0x43e934008c389c0f, + 0x683788499a7c05f6] :: [Word64] +plainText = "Now is the time for all " + +-- Pad using PKCS#5 so only take the first 3 blocks of the ciphertext. + +cipherText = + cbc DES.encrypt iv key $ pkcs5 $ map (fromIntegral . ord) plainText +descbcTest1 = + TestCase ( + assertEqual "DES CBC PKCS5 3 Blocks" + expectedDES (take 3 cipherText) + ) + +tests = + TestList [ + aesTest1, aesTest2, aesTest3, aescbcTest1, + aescbcTest2, aescbcTest3, aescbcTest4, aescbcTest5, + bfTest1, bfTest2, bfTest3, bfTest4, bfTest5, + descbcTest1 + ] + +main = runTestTT tests addfile ./dependencies/Crypto-2.0.0/X509Example.hs hunk ./dependencies/Crypto-2.0.0/X509Example.hs 1 - +module Main(main) where + +import System.IO +import System.Environment +import Control.Monad.Error +import Data.Maybe +import Data.List +import Numeric +import NewBinary.Binary +import Codec.ASN1.BER +import Codec.ASN1 +import Codec.ASN1.TLV +import Codec.ASN1.X509 +import Codec.Utils +import Text.PrettyPrint + +pp :: SignedCertificate -> RSAPublicKey -> String +pp sc rsapk = + render ( + ppLabelString "Version" (show (version3 (certificate1 sc))) + $$ + ppLabelString "Serial Number" (show (serialNumber (certificate1 sc))) + $$ + ppLabelDoc "Algorithm Identifier" algid + $$ + ppLabelDoc "Issuer" iss + $$ + ppLabelDoc "Validity" valid + $$ + ppLabelDoc "Subject" sub + $$ + ppLabelDoc "Subject Public Key Info" kk + ) + where + algid = + ppLabelString "Algorithm" + (show (algorithm1 (signature (certificate1 sc)))) + $$ + ppLabelString "Parameters" + (show (parameters1 (signature (certificate1 sc)))) + iss = vcat (rdns issuer) + sub = vcat (rdns subject) + rdns select = ( + (map (\x -> (text (show (fst x)) <> + space <> + text (unDirectoryString (snd x))))) . + (map (\x -> (type1 (head x),value (head x)))) . + (map unSetOf) . + (map unRelativeDistinguishedName) . + unName . + select . + certificate1 + ) sc + valid = + ppLabelString "NotBefore" nb + $$ + ppLabelString "NotAfter" na + nb = unVisibleString (unTime (notBefore (validity1 (certificate1 sc)))) + na = unVisibleString (unTime (notAfter (validity1 (certificate1 sc)))) + ki = subjectPublicKeyInfo2 (certificate1 sc) + al = algorithm2 ki + kj = subjectPublicKeyInfo1 ki + algid1 = + ppLabelString "Algorithm" (show (algorithm1 al)) + $$ + ppLabelString "Parameters" (show (parameters1 al)) + kk = ppLabelDoc "Algorithm" algid1 + $$ + ppLabelDoc "Subject Public Key Info" spki + spki = mod $$ exp + exp = ppLabelString "Exponent" (show (publicExponent1 rsapk)) + bar = map (map sh) (split 16 (toOctets 256 (modulus1 rsapk))) + sh x | x < 16 = showHex x "0" + | otherwise = showHex x "" + split :: Int -> [a] -> [[a]] + split n xs = unfoldr (g n) xs + g :: Int -> [a] -> Maybe ([a],[a]) + g n y + | length y == 0 = Nothing + | otherwise = Just (splitAt n y) + mods1 :: [[Doc]] + mods1 = map (intersperse colon) (map (map text) bar) + mods2 :: [Doc] + mods2 = map hcat mods1 + mod = ppLabelDoc "Modulus" (vcat mods2) + +ppLabelString :: String -> String -> Doc +ppLabelString l x = + text l <> colon <> space <> (text x) + +ppLabelDoc :: String -> Doc -> Doc +ppLabelDoc l d = + text l <> colon + $$ + nest 3 d + +test fileName = + do h <- openFile fileName ReadMode + bin <- openBinIO_ h + (l,x) <- tlvIO bin + foo <- tc signedCertificate x + let (_ ::= c) = signedCertificate + let d = (decode c (Just foo))::(Maybe SignedCertificate) + let d1 = certificate1 (fromJust d) + let d2 = subjectPublicKeyInfo2 d1 + let d3 = subjectPublicKeyInfo1 d2 + let (BitString e) = d3 + let (l',x') = tlv e + bar <- tc rsaPublicKey x' + let (_ ::= r) = rsaPublicKey + let s = (decode r (Just bar))::(Maybe RSAPublicKey) + putStrLn (pp (fromJust d) (fromJust s)) + +main = + do progName <- getProgName + args <- getArgs + if length args /= 1 + then putStrLn ("Usage: " ++ progName ++ " ") + else test (args!!0) addfile ./dependencies/Crypto-2.0.0/crypto.cabal hunk ./dependencies/Crypto-2.0.0/crypto.cabal 1 +Name: Crypto +Version: 2.0.0 +License: OtherLicense +License-File: ReadMe.tex +Author: Dominic Steinitz +Maintainer: dominic.steinitz@blueyonder.co.uk +Copyright: Dominic Steinitz 2003 - 2005 +Stability: Alpha +Synopsis: Package with library and test programs +Build-Depends: base, HUnit, NewBinary, haskell98, mtl +Ghc-options: -fglasgow-exts +Exposed-Modules: Codec.ASN1, + Codec.ASN1.BER, + Codec.ASN1.TLV, + Codec.ASN1.X509, + Codec.ASN1.PKCS8, + Codec.Binary.Base64, + Codec.Encryption.RSA, + Codec.Encryption.RSA.EMEOAEP, + Codec.Encryption.RSA.MGF, + Codec.Encryption.RSA.NumberTheory, + Codec.Encryption.DES, + Codec.Encryption.AES, + Codec.Encryption.Blowfish, + Codec.Encryption.Modes, + Codec.Encryption.Padding, + Codec.Utils, + Data.Digest.MD5, + Data.Digest.SHA1, + Data.LargeWord +Other-modules: Codec.Encryption.BlowfishAux, + Codec.Encryption.DESAux, + Data.Digest.SHA1Aux, + Codec.Encryption.AESAux, + Data.Digest.MD5Aux + addfile ./dependencies/GnuPG-0.1.1/GNUPG.cabal hunk ./dependencies/GnuPG-0.1.1/GNUPG.cabal 1 +Name: GnuPG +Version: 0.1.0 +Copyright: 2005, Lemmih +Build-Depends: base +License: BSD3 +Author: Lemmih +Maintainer: Lemmih +Synopsis: Utilities for handling 'gpg'. +Category: System +Hs-Source-Dirs: src +Exposed-Modules: + System.GPG +GHC-Options: -Wall -Werror + addfile ./dependencies/GnuPG-0.1.1/Setup.lhs hunk ./dependencies/GnuPG-0.1.1/Setup.lhs 1 +#!/usr/bin/runhaskell +> module Main where +> import Distribution.Simple +> main :: IO () +> main = defaultMain addfile ./dependencies/GnuPG-0.1.1/src/System/GPG.hs hunk ./dependencies/GnuPG-0.1.1/src/System/GPG.hs 1 +module System.GPG + ( Options (..) + , stdOptions + , mkDefaultOptions + , signArmored + , signArmoredFile + , verify + , verifyFile + , exportArmored + , importKey + , optionsToArgs + ) where + +import Control.Monad + +import System.Process +import System.Directory +import System.Exit +import System.IO + +data Options + = Options + { gpgBinary :: FilePath + , dryRun :: Bool + , batch :: Bool + , noOptions :: Bool + , homeDirectory :: Maybe FilePath + , noDefaultKeyring :: Bool + , keyrings :: [FilePath] + } deriving (Show,Eq) + +stdOptions :: Options +stdOptions = + Options + { gpgBinary = "gpg" + , dryRun = False + , batch = False + , noOptions = False + , homeDirectory = Nothing + , noDefaultKeyring = False + , keyrings = [] + } + +mkDefaultOptions :: IO Options +mkDefaultOptions = + do mbGPG <- findExecutable "gpg" + case mbGPG of + Just gpg -> return $ stdOptions { gpgBinary = gpg } + Nothing -> error "Failed to locate the GnuPG binary." + +optionsToArgs :: Options -> [String] +optionsToArgs opts + = foldr boolOpt [] [(dryRun opts,"--dry-run") + ,(batch opts,"--batch") + ,(noDefaultKeyring opts,"--no-default-keyring") + ,(noOptions opts,"--no-options") + ] ++ + foldr (\f l -> "--keyring":f:l) [] (keyrings opts) ++ + maybe [] (\homeDir -> ["--homedir",homeDir]) (homeDirectory opts) + where boolOpt (True,x) = (:) x + boolOpt (False,_) = id + +execGPG :: Options + -> [String] + -> String + -> IO (String,ExitCode) +execGPG opts args input + = do (inh,outh,_errh,handle) <- runInteractiveProcess + (gpgBinary opts) + (optionsToArgs opts ++ args) + Nothing Nothing + when (not (null input)) (hPutStr inh input) + hClose inh + output <- hGetContents outh + length output `seq` hClose outh + {-err <- hGetContents errh + length err `seq` hClose errh + writeFile "/var/www/gpgError" err -} + eCode <- waitForProcess handle + return (output,eCode) + +switchResult :: IO (String,ExitCode) -> (String -> IO a) -> (Int -> IO a) -> IO a +switchResult action okHandle errHandle + = action >>= \(output,code) -> + case code of + ExitSuccess -> okHandle output + ExitFailure err -> errHandle err + +execGPGThrowOnError :: Options + -> [String] + -> String + -> IO String +execGPGThrowOnError opts args input + = switchResult (execGPG opts args input) + (return) + (\err -> error $ unwords (gpgBinary opts:optionsToArgs opts ++ args) ++ + "\nGPG operation failed with code: " ++ show err) + +signArmored :: Options -> String -> IO String +signArmored opts str + = execGPGThrowOnError opts ["--sign","--detach","--armor"] str + +signArmoredFile :: Options -> FilePath -> IO String +signArmoredFile opts filepath = signArmored opts =<< readFile filepath + +verifyFile :: Options -> FilePath -> FilePath -> IO Bool +verifyFile opts signature file + = switchResult (execGPG opts ["--verify",signature,file] "") + (const $ return True) + (const $ return False) + +verify :: Options -> String -> FilePath -> IO Bool +verify opts signature file + = switchResult (execGPG opts ["--verify","-",file] signature) + (const $ return True) + (const $ return False) + +exportArmored :: Options -> IO String +exportArmored opts + = execGPGThrowOnError opts ["--export","--armor"] "" + +importKey :: Options -> FilePath -> IO Int +importKey opts pubkey + = switchResult (execGPG opts ["--import",pubkey] "") + (const $ return 0) + (return) addfile ./dependencies/HTTP-2005.5.5/LICENSE hunk ./dependencies/HTTP-2005.5.5/LICENSE 1 +Copyright (c) 2002, Warrick Gray +Copyright (c) 2002, Ian Lynagh +Copyright (c) 2003-2004, Bjorn Bringert +Copyright (c) 2004, Andre Furtado +Copyright (c) 2004, Ganesh Sittampalam + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * The names of contributors may not be used to endorse or promote + products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. addfile ./dependencies/HTTP-2005.5.5/Makefile hunk ./dependencies/HTTP-2005.5.5/Makefile 1 +HADDOCK = haddock + +TODAY = $(shell date +%Y%m%d) +DIST_NAME = http-$(TODAY) + +HADDOCK_FILES = Network/HTTP.hs Network/Browser.hs + +.PHONY: all configure build install dist haddock clean + +default all: configure build + +configure: + ./Setup.lhs configure + +build: + ./Setup.lhs build + +install: + ./Setup.lhs install + +dist: + darcs dist --dist-name=$(DIST_NAME) + +haddock: $(HADDOCK_FILES) + mkdir -p haddock + $(HADDOCK) -o haddock -h $^ + +clean: + -./Setup.lhs clean + -rm -rf haddock + -rm -rf dist + $(MAKE) -C test clean + +setup: Setup.lhs + ghc --make -package Cabal -o setup Setup.lhs addfile ./dependencies/HTTP-2005.5.5/Network/Browser.hs hunk ./dependencies/HTTP-2005.5.5/Network/Browser.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.Browser +-- Copyright : (c) Warrick Gray 2002 +-- License : BSD +-- +-- Maintainer : bjorn@bringert.net +-- Stability : experimental +-- Portability : non-portable (not tested) +-- +-- An HTTP\/1.1 compatible wrapper for the HTTP module. +----------------------------------------------------------------------------- + +{- + + Change Log: + - altered 'closeTCP' to 'close', for consistency with altered HTTP + - added debugging settings to browser. + + To Do: + - testing!!! + - remove BrowserAction type? Possibly replace with IORef? + - (more todo's in the HTTP mod) + +-} + +module Network.Browser ( + BrowserState, + BrowserAction, -- browser monad, effectively a state monad. + Cookie, + Form(..), + Proxy(..), + + browse, -- BrowserAction a -> IO a + request, -- Request -> BrowserAction Response + + setAllowRedirects, + getAllowRedirects, + + setCookieFilter, + defaultCookieFilter, + userCookieFilter, + + getCookies, + setCookies, + addCookie, + + setErrHandler, + setOutHandler, + + setProxy, + + setDebugLog, + + out, + err, + ioAction, -- :: IO a -> BrowserAction a + + defaultGETRequest, + formToRequest, + uriDefaultTo, + uriTrimHost +) where + +import Network.HTTP + +import Data.Char (toLower,isAlphaNum,isSpace) +import Data.List (isPrefixOf,isSuffixOf,elemIndex,elemIndices) +import Data.Maybe +import Control.Monad (foldM,filterM,liftM,when) +import Text.ParserCombinators.Parsec +import Network.URI + +import qualified System.IO +import qualified Data.Digest.MD5 as MD5 +import qualified Codec.Binary.Base64 as Base64 +import Codec.Utils (Octet) + + + + +------------------------------------------------------------------ +----------------------- Miscellaneous ---------------------------- +------------------------------------------------------------------ + +word, quotedstring :: Parser String +quotedstring = + do { char '"' + ; str <- many (satisfy $ not . (=='"')) + ; char '"' + ; return str + } + +word = many1 (satisfy (\x -> isAlphaNum x || x=='_' || x=='.')) + + +-- misc string fns +trim :: String -> String +trim = let dropspace = dropWhile isSpace in + reverse . dropspace . reverse . dropspace + + +-- Split a list into two parts, the delimiter occurs +-- at the head of the second list. Nothing is returned +-- when no occurance of the delimiter is found. +split :: Eq a => a -> [a] -> Maybe ([a],[a]) +split delim list = case delim `elemIndex` list of + Nothing -> Nothing + Just x -> Just $ splitAt x list + + + +-- removes delimiters +splitMany :: Eq a => a -> [a] -> [[a]] +splitMany delim str = fn str ixs + where + ixs = elemIndices delim str + fn _ [] = [] + fn ls (h:t) = let (a,b) = splitAt h ls in a : fn b t + + +-- Returns a URI that is consistent with the first +-- argument uri when read in the context of a second. +-- If second argument is not sufficient context for +-- determining a full URI then anarchy reins. +uriDefaultTo :: URI -> URI -> URI +uriDefaultTo a b = + case a `relativeTo` b of + Nothing -> a + Just x -> x + + +uriTrimHost :: URI -> URI +uriTrimHost uri = uri { uriScheme="", uriAuthority=Nothing } + + +------------------------------------------------------------------ +----------------------- Cookie Stuff ----------------------------- +------------------------------------------------------------------ + +-- Some conventions: +-- assume ckDomain is lowercase +-- +data Cookie = MkCookie { ckDomain + , ckName + , ckValue :: String + , ckPath + , ckComment + , ckVersion :: Maybe String + } + deriving(Show,Read) + + +instance Eq Cookie where + a == b = ckDomain a == ckDomain b + && ckName a == ckName b + && ckPath a == ckPath b + + + + +defaultCookieFilter url cky = return True +userCookieFilter url cky = + do putStrLn ("Set-Cookie received when requesting: " ++ show url) + case ckComment cky of + Nothing -> return () + Just x -> putStrLn ("Cookie Comment:\n" ++ x) + putStrLn ("Domain/Path: " ++ ckDomain cky ++ + case ckPath cky of + Nothing -> "" + Just x -> "/" ++ x) + putStrLn (ckName cky ++ '=' : ckValue cky) + System.IO.hSetBuffering System.IO.stdout System.IO.NoBuffering + System.IO.hSetBuffering System.IO.stdin System.IO.NoBuffering + System.IO.hPutStr System.IO.stdout "Accept [y/n]? " + x <- System.IO.hGetChar System.IO.stdin + System.IO.hSetBuffering System.IO.stdin System.IO.LineBuffering + System.IO.hSetBuffering System.IO.stdout System.IO.LineBuffering + return (toLower x == 'y') + + + +-- Serialise a Cookie for inclusion in a request. +cookieToHeader :: Cookie -> Header +cookieToHeader ck = Header HdrCookie text + where + text = "$Version=" ++ fromMaybe "0" (ckVersion ck) + ++ ';' : ckName ck ++ "=" ++ ckValue ck + ++ (case ckPath ck of + Nothing -> "" + Just x -> ";$Path=" ++ x) + ++ ";$Domain=" ++ ckDomain ck + + + +{- replace "error" call with [] in final version? -} +headerToCookies :: String -> Header -> [Cookie] +headerToCookies dom (Header HdrSetCookie val) = + case parse cookies "" val of + Left e -> error ("Cookie parse failure on: " ++ val ++ " " ++ show e) + Right x -> x + where + cookies :: Parser [Cookie] + cookies = sepBy1 cookie (char ',') + + cookie :: Parser Cookie + cookie = + do { name <- word + ; spaces + ; char '=' + ; spaces + ; val <- cvalue + ; args <- cdetail + ; return $ mkCookie name val args + } + + cvalue :: Parser String + + spaces = many (satisfy isSpace) + + cvalue = quotedstring <|> many1 (satisfy $ not . (==';')) + + -- all keys in the result list MUST be in lower case + cdetail :: Parser [(String,String)] + cdetail = many $ + do { spaces + ; char ';' + ; spaces + ; s1 <- word + ; spaces + ; s2 <- option "" (do { char '=' ; spaces ; v <- cvalue ; return v }) + ; return (map toLower s1,s2) + } + + mkCookie :: String -> String -> [(String,String)] -> Cookie + mkCookie nm val more = MkCookie { ckName=nm + , ckValue=val + , ckDomain=map toLower (fromMaybe dom (lookup "domain" more)) + , ckPath=lookup "path" more + , ckVersion=lookup "version" more + , ckComment=lookup "comment" more + } + + + +-- Adds a cookie to the browser state, removing duplicates. +addCookie :: Cookie -> BrowserAction () +addCookie c = alterBS (\b -> b { bsCookies=c : fn (bsCookies b) }) + where + fn = filter (not . (==c)) + +setCookies cs = alterBS (\b -> b { bsCookies=cs }) +getCookies = getBS bsCookies + +-- ...get domain specific cookies... +-- ... this needs changing for consistency with rfc2109... +-- ... currently too broad. +getCookiesFor :: String -> String -> BrowserAction [Cookie] +getCookiesFor dom path = + do cks <- getCookies + return (filter cookiematch cks) + where + cookiematch :: Cookie -> Bool + cookiematch ck = ckDomain ck `isSuffixOf` dom + && case ckPath ck of + Nothing -> True + Just p -> p `isPrefixOf` path + + +setCookieFilter :: (URI -> Cookie -> IO Bool) -> BrowserAction () +setCookieFilter f = alterBS (\b -> b { bsCookieFilter=f }) + +getCookieFilter :: BrowserAction (URI -> Cookie -> IO Bool) +getCookieFilter = getBS bsCookieFilter + +------------------------------------------------------------------ +----------------------- Authorisation Stuff ---------------------- +------------------------------------------------------------------ + +{- + +The browser handles 401 responses in the following manner: + 1) extract all WWW-Authenticate headers from a 401 response + 2) rewrite each as a Challenge object, using "headerToChallenge" + 3) pick a challenge to respond to, usually the strongest + challenge understood by the client, using "pickChallenge" + 4) generate a username/password combination using the browsers + "bsAuthorityGen" function (the default behaviour is to ask + the user) + 5) build an Authority object based upon the challenge and user + data, store this new Authority in the browser state + 6) convert the Authority to a request header and add this + to a request using "withAuthority" + 7) send the amended request + +Note that by default requests are annotated with authority headers +before the first sending, based upon previously generated Authority +objects (which contain domain information). Once a specific authority +is added to a rejected request this predictive annotation is suppressed. + +407 responses are handled in a similar manner, except + a) Authorities are not collected, only a single proxy authority + is kept by the browser + b) If the proxy used by the browser (type Proxy) is NoProxy, then + a 407 response will generate output on the "err" stream and + the response will be returned. + + +Notes: + - digest authentication so far ignores qop, so fails to authenticate + properly with qop=auth-int challenges + - calculates a1 more than necessary + - doesn't reverse authenticate + - doesn't properly receive AuthenticationInfo headers, so fails + to use next-nonce etc + +-} + + +data Algorithm = AlgMD5 | AlgMD5sess + deriving(Eq) + +instance Show Algorithm where + show AlgMD5 = "md5" + show AlgMD5sess = "md5-sess" + + +data Qop = QopAuth | QopAuthInt + deriving(Eq,Show) + + +data Challenge = ChalBasic { chRealm :: String } + | ChalDigest { chRealm :: String + , chDomain :: [URI] + , chNonce :: String + , chOpaque :: Maybe String + , chStale :: Bool + , chAlgorithm ::Maybe Algorithm + , chQop :: [Qop] + } + +-- Convert WWW-Authenticate header into a Challenge object +headerToChallenge :: URI -> Header -> Maybe Challenge +headerToChallenge baseURI (Header _ str) = + case parse challenge "" str of + Left e -> Nothing + Right (name,props) -> case name of + "basic" -> mkBasic props + "digest" -> mkDigest props + _ -> Nothing + where + challenge :: Parser (String,[(String,String)]) + challenge = + do { nme <- word + ; pps <- cprops + ; return (map toLower nme,pps) + } + + cprops = sepBy1 cprop comma + + comma = do { spaces ; char ',' ; spaces } + + cprop = + do { nm <- word + ; char '=' + ; val <- quotedstring + ; return (map toLower nm,val) + } + + quotedstring = + do { char '"' + ; str <- many (satisfy (not.(=='"'))) + ; char '"' + ; return str + } + + mkBasic, mkDigest :: [(String,String)] -> Maybe Challenge + + mkBasic params = fmap ChalBasic (lookup "realm" params) + + mkDigest params = + -- with Maybe monad + do { r <- lookup "realm" params + ; n <- lookup "nonce" params + ; return $ + ChalDigest { chRealm = r + , chDomain = (annotateURIs + $ map parseURI + $ words + $ fromMaybe [] + $ lookup "domain" params) + , chNonce = n + , chOpaque = lookup "opaque" params + , chStale = "true" == (map toLower + $ fromMaybe "" (lookup "stale" params)) + , chAlgorithm= readAlgorithm (fromMaybe "MD5" $ lookup "algorithm" params) + , chQop = readQop (fromMaybe "" $ lookup "qop" params) + } + } + + annotateURIs :: [Maybe URI] -> [URI] + annotateURIs = (map (\u -> fromMaybe u (u `relativeTo` baseURI))) . catMaybes + + -- Change These: + readQop :: String -> [Qop] + readQop = catMaybes . (map strToQop) . (splitMany ',') + + strToQop str = case map toLower (trim str) of + "auth" -> Just QopAuth + "auth-int" -> Just QopAuthInt + _ -> Nothing + + readAlgorithm str = case map toLower (trim str) of + "md5" -> Just AlgMD5 + "md5-sess" -> Just AlgMD5sess + _ -> Nothing + + +data Authority = AuthBasic { auRealm :: String + , auUsername :: String + , auPassword :: String + , auSite :: URI + } + | AuthDigest { auRealm :: String + , auUsername :: String + , auPassword :: String + , auNonce :: String + , auAlgorithm :: Maybe Algorithm + , auDomain :: [URI] + , auOpaque :: Maybe String + , auQop :: [Qop] + } + + +-- Return authorities for a given domain and path. +-- Assumes "dom" is lower case +getAuthFor :: String -> String -> BrowserAction [Authority] +getAuthFor dom pth = + do { list <- getAuthorities + ; return (filter match list) + } + where + match :: Authority -> Bool + match (AuthBasic _ _ _ s) = matchURI s + match (AuthDigest _ _ _ _ _ ds _ _) = or (map matchURI ds) + + matchURI :: URI -> Bool + matchURI s = (authority s == dom) && (path s `isPrefixOf` pth) + + +-- Interacting with browser state: +getAuthorities :: BrowserAction [Authority] +getAuthorities = getBS bsAuthorities + +setAuthorities :: [Authority] -> BrowserAction () +setAuthorities as = alterBS (\b -> b { bsAuthorities=as }) + +addAuthority :: Authority -> BrowserAction () +addAuthority a = alterBS (\b -> b { bsAuthorities=a:bsAuthorities b }) + +getAuthorityGen :: BrowserAction (URI -> String -> IO (Maybe (String,String))) +getAuthorityGen = getBS bsAuthorityGen + +setAuthorityGen :: (URI -> String -> IO (Maybe (String,String))) -> BrowserAction () +setAuthorityGen f = alterBS (\b -> b { bsAuthorityGen=f }) + +setAllowBasicAuth :: Bool -> BrowserAction () +setAllowBasicAuth ba = alterBS (\b -> b { bsAllowBasicAuth=ba }) + + + + +-- TO BE CHANGED!!! +pickChallenge :: [Challenge] -> Maybe Challenge +pickChallenge = listToMaybe + + + +-- Retrieve a likely looking authority for a Request. +anticipateChallenge :: Request -> BrowserAction (Maybe Authority) +anticipateChallenge rq = + let uri = rqURI rq in + do { authlist <- getAuthFor (authority uri) (path uri) + ; return (listToMaybe authlist) + } + + +-- Asking the user to respond to a challenge +challengeToAuthority :: URI -> Challenge -> BrowserAction (Maybe Authority) +challengeToAuthority uri ch = + -- prompt user for authority + if answerable ch then + do { prompt <- getAuthorityGen + ; userdetails <- ioAction $ prompt uri (chRealm ch) + ; case userdetails of + Nothing -> return Nothing + Just (u,p) -> return (Just $ buildAuth ch u p) + } + else return Nothing + where + answerable :: Challenge -> Bool + answerable (ChalBasic _) = True + answerable ch = (chAlgorithm ch) == Just AlgMD5 + + buildAuth :: Challenge -> String -> String -> Authority + buildAuth (ChalBasic r) u p = + AuthBasic { auSite=uri + , auRealm=r + , auUsername=u + , auPassword=p + } + + -- note to self: this is a pretty stupid operation + -- to perform isn't it? ChalX and AuthX are so very + -- similar. + buildAuth (ChalDigest r d n o s a q) u p = + AuthDigest { auRealm=r + , auUsername=u + , auPassword=p + , auDomain=d + , auNonce=n + , auOpaque=o + , auAlgorithm=a + , auQop=q + } + + +-- Generating a credentials value from an Authority, in +-- the context of a specific request. If a client nonce +-- was to be used then this function might need to +-- be of type ... -> BrowserAction String +withAuthority :: Authority -> Request -> String +withAuthority a rq = case a of + AuthBasic _ _ user pass -> + "basic " ++ base64encode (auUsername a ++ ':' : auPassword a) + AuthDigest _ _ _ _ _ _ _ _ -> + "digest username=\"" ++ auUsername a + ++ "\",realm=\"" ++ auRealm a + ++ "\",nonce=\"" ++ auNonce a + ++ "\",uri=\"" ++ digesturi + ++ ",response=\"" ++ rspdigest + ++ "\"" + -- plus optional stuff: + ++ ( if isJust (auAlgorithm a) then "" else ",algorithm=\"" ++ show (fromJust $ auAlgorithm a) ++ "\"" ) + ++ ( if isJust (auOpaque a) then "" else ",opaque=\"" ++ (fromJust $ auOpaque a) ++ "\"" ) + ++ ( if null (auQop a) then "" else ",qop=auth" ) + where + rspdigest = "\"" + ++ map toLower (kd (md5 a1) (noncevalue ++ ":" ++ md5 a2)) + ++ "\"" + + -- FIXME: these probably only work right for latin-1 strings + stringToOctets :: String -> [Octet] + stringToOctets = map (fromIntegral . fromEnum) + octetsToString :: [Octet] -> String + octetsToString = map (toEnum . fromIntegral) + base64encode :: String -> String + base64encode = Base64.encode . stringToOctets + md5 :: String -> String + md5 = octetsToString . MD5.hash . stringToOctets + + kd :: String -> String -> String + kd a b = md5 (a ++ ":" ++ b) + + a1, a2 :: String + a1 = auUsername a ++ ":" ++ auRealm a ++ ":" ++ auPassword a + + {- + If the "qop" directive's value is "auth" or is unspecified, then A2 + is: + A2 = Method ":" digest-uri-value + If the "qop" value is "auth-int", then A2 is: + A2 = Method ":" digest-uri-value ":" H(entity-body) + -} + a2 = show (rqMethod rq) ++ ":" ++ digesturi + + digesturi = show (rqURI rq) + noncevalue = auNonce a + + +------------------------------------------------------------------ +------------------ Proxy Stuff ----------------------------------- +------------------------------------------------------------------ + +data Proxy = NoProxy + | Proxy String (Maybe Authority) + + +------------------------------------------------------------------ +------------------ Browser State Actions ------------------------- +------------------------------------------------------------------ + + +data BrowserState = BS { bsErr, bsOut :: String -> IO () + , bsCookies :: [Cookie] + , bsCookieFilter :: URI -> Cookie -> IO Bool + , bsAuthorityGen :: URI -> String -> IO (Maybe (String,String)) + , bsAuthorities :: [Authority] + , bsAllowRedirects :: Bool + , bsAllowBasicAuth :: Bool + , bsConnectionPool :: [Connection] + , bsProxy :: Proxy + , bsDebug :: Maybe String + } + +instance Show BrowserState where + show bs = "BrowserState { " + ++ show (bsCookies bs) ++ "\n" + {- ++ show (bsAuthorities bs) ++ "\n"-} + ++ "AllowRedirects: " ++ show (bsAllowRedirects bs) + ++ "} " + + +-- Simple DIY stateful behaviour, with IO +data BrowserAction a = BA { lift :: (BrowserState -> IO (BrowserState,a)) } + +instance Monad BrowserAction where + a >>= f = BA (\b -> do { (nb,v) <- lift a b ; lift (f v) nb}) + return x = BA (\b -> return (b,x)) + + +-- Apply a browser action to a state. +browse :: BrowserAction a -> IO a +browse act = do x <- lift act defaultBrowserState + return (snd x) + where + defaultBrowserState :: BrowserState + defaultBrowserState = + BS { bsErr = putStrLn + , bsOut = putStrLn + , bsCookies = [] + , bsCookieFilter = defaultCookieFilter + , bsAuthorityGen = (error "bsAuthGen wanted") + , bsAuthorities = [] + , bsAllowRedirects = True + , bsAllowBasicAuth = False + , bsConnectionPool = [] + , bsProxy = NoProxy + , bsDebug = Nothing + } + +-- Alter browser state +alterBS :: (BrowserState -> BrowserState) -> BrowserAction () +alterBS f = BA (\b -> return (f b,())) + +getBS :: (BrowserState -> a) -> BrowserAction a +getBS f = BA (\b -> return (b,f b)) + +-- Do an io action +ioAction :: IO a -> BrowserAction a +ioAction a = BA (\b -> a >>= \v -> return (b,v)) + + +-- Stream handlers +setErrHandler, setOutHandler :: (String -> IO ()) -> BrowserAction () +setErrHandler h = alterBS (\b -> b { bsErr=h }) +setOutHandler h = alterBS (\b -> b { bsOut=h }) + +out, err :: String -> BrowserAction () +out s = do { f <- getBS bsOut ; ioAction $ f s } +err s = do { f <- getBS bsErr ; ioAction $ f s } + +-- Redirects +setAllowRedirects :: Bool -> BrowserAction () +setAllowRedirects bl = alterBS (\b -> b {bsAllowRedirects=bl}) + +getAllowRedirects :: BrowserAction Bool +getAllowRedirects = getBS bsAllowRedirects + + +-- Proxy +setProxy :: Proxy -> BrowserAction () +setProxy p = alterBS (\b -> b {bsProxy = p}) + +getProxy :: BrowserAction Proxy +getProxy = getBS bsProxy + + +-- Debug +setDebugLog :: Maybe String -> BrowserAction () +setDebugLog v = alterBS (\b -> b {bsDebug=v}) + + +-- Page control +type RequestState = ( Int -- number of 401 responses so far + , Int -- number of redirects so far + , Int -- number of retrys so far + , Bool -- whether to pre-empt 401 response + ) + + + +-- Surely the most important bit: +request = request' initialState + where + initialState = (0,0,0,True) + + +request' :: RequestState -> Request -> BrowserAction (URI,Response) +request' (denycount,redirectcount,retrycount,preempt) rq = + do -- add cookies to request + let uri = rqURI rq + cookies <- getCookiesFor (authority uri) (path uri) + + when (not $ null cookies) + (out $ "Adding cookies to request. Cookie names: " + ++ foldl spaceappend "" (map ckName cookies)) + + -- add credentials to request + rq' <- if not preempt then return rq else + do { auth <- anticipateChallenge rq + ; case auth of + Just x -> return (insertHeader HdrAuthorization (withAuthority x rq) rq) + Nothing -> return rq + } + + let rq'' = insertHeaders (map cookieToHeader cookies) rq' + + p <- getProxy + + out ("Sending:\n" ++ show rq'') + e_rsp <- case p of + NoProxy -> dorequest (authority $ rqURI rq'') rq'' + Proxy str ath -> + let rq''' = case ath of + Nothing -> rq'' + Just x -> insertHeader HdrProxyAuthorization (withAuthority x rq'') rq'' + in dorequest str rq''' + + case e_rsp of + Left v -> if (retrycount < 4) && (v == ErrorReset || v == ErrorClosed) + then request' (denycount,redirectcount,retrycount+1,preempt) rq + else error ("Exception raised in request: " ++ show v) + Right rsp -> do + out ("Received:\n" ++ show rsp) + + -- add new cookies to browser state + let cookieheaders = retrieveHeaders HdrSetCookie rsp + let newcookies = concat (map (headerToCookies $ authority uri) cookieheaders) + + when (not $ null newcookies) + (out $ foldl (\x y -> x ++ "\n " ++ show y) "Cookies received:" newcookies) + + filterfn <- getCookieFilter + newcookies' <- ioAction (filterM (filterfn uri) newcookies) + foldM (\_ -> addCookie) () newcookies' + + when (not $ null newcookies) + (out $ "Accepting cookies with names: " ++ foldl spaceappend "" (map ckName newcookies')) + + case rspCode rsp of + (4,0,1) -> -- Credentials not sent or refused. + out "401 - credentials not sent or refused" >> + if denycount > 2 then return (uri,rsp) else + do { let hdrs = retrieveHeaders HdrWWWAuthenticate rsp + ; case pickChallenge (catMaybes $ map (headerToChallenge uri) hdrs) of + Just x -> + do { au <- challengeToAuthority uri x + ; case au of + Just au' -> + out "Retrying request with new credentials" >> + request' (denycount+1,redirectcount,retrycount,False) + (insertHeader HdrAuthorization (withAuthority au' rq) rq) + Nothing -> return (uri,rsp) {- do nothing -} + } + + Nothing -> return (uri,rsp) {- do nothing -} + } + + + (4,0,7) -> -- Proxy Authentication required + out "407 - proxy authentication required" >> + if denycount > 2 then return (uri,rsp) else + do { let hdrs = retrieveHeaders HdrProxyAuthenticate rsp + ; case pickChallenge (catMaybes $ map (headerToChallenge uri) hdrs) of + Just x -> + do { au <- challengeToAuthority uri x + ; case au of + Just au' -> + do { pxy <- getBS bsProxy + ; case pxy of + NoProxy -> + do { err "Proxy authentication required without proxy!" + ; return (uri,rsp) + } + Proxy x y -> + do { out "Retrying with proxy authentication" + ; setProxy (Proxy x $ Just au') + ; request' (denycount+1,redirectcount,retrycount,False) rq + } + } + Nothing -> return (uri,rsp) {- do nothing -} + } + + Nothing -> return (uri,rsp) {- do nothing -} + } + + + (3,0,3) -> -- Redirect using GET request method. + do { out "303 - redirect using GET" + ; rd <- getAllowRedirects + ; if not rd || redirectcount > 4 then return (uri,rsp) else + case retrieveHeaders HdrLocation rsp of + (Header _ u:_) -> case parseURI u of + Just newuri -> + let newuri' = case newuri `relativeTo` uri of + Nothing -> newuri + Just x -> x + in do { out ("Redirecting to " ++ show newuri' ++ " ...") + ; let rq = rq { rqMethod=GET, rqURI=newuri', rqBody="" } + ; request' (0,redirectcount+1,retrycount,True) + (replaceHeader HdrContentLength "0" rq) + } + Nothing -> + do { err ("Parse of Location header in a redirect response failed: " ++ u) + ; return (uri,rsp) + } + [] -> do { err "No Location header in redirect response" + ; return (uri,rsp) + } + } + + (3,0,5) -> + case retrieveHeaders HdrLocation rsp of + (Header _ u:_) -> case parseURI u of + Just newuri -> + do { out ("Retrying with proxy " ++ show newuri ++ "...") + ; setProxy (Proxy (authority newuri) Nothing) + ; request' (0,0,retrycount+1,True) rq + } + Nothing -> + do { err ("Parse of Location header in a proxy redirect response failed: " ++ u) + ; return (uri,rsp) + } + [] -> do { err "No Location header in proxy redirect response." + ; return (uri,rsp) + } + + + (3,_,_) -> -- Redirection + do { rd <- getAllowRedirects + ; if not rd || redirectcount > 4 then return (uri,rsp) else + case retrieveHeaders HdrLocation rsp of + (Header _ u:_) -> case parseURI u of + Just newuri -> + let newuri' = case newuri `relativeTo` uri of + Nothing -> newuri + Just x -> x + in do { out ("Redirecting to " ++ show newuri' ++ " ...") + ; request' (0,redirectcount+1,retrycount,True) + (rq { rqURI=newuri' }) + } + Nothing -> + do { err ("Parse of Location header in a redirect response failed: " ++ u) + ; return (uri,rsp) + } + [] -> do { err "No Location header in redirect response." + ; return (uri,rsp) + } + } + + _ -> return (uri,rsp) + + where + spaceappend :: String -> String -> String + spaceappend x y = x ++ ' ' : y + + dorequest :: String -> Request -> BrowserAction (Either ConnError Response) + dorequest hst rqst = + do { pool <- getBS bsConnectionPool + ; conn <- ioAction $ filterM (\c -> c `isConnectedTo` hst) pool + ; rsp <- case conn of + [] -> do { out ("Creating new connection to " ++ hst) + ; c <- ioAction $ openTCP hst + ; let pool' = if length pool > 5 + then init pool + else pool + ; when (length pool > 5) + (ioAction $ close (last pool)) + ; alterBS (\b -> b { bsConnectionPool=c:pool' }) + ; dorequest2 hst c rqst + } + (c:_) -> + do { out ("Recovering connection to " ++ hst) + ; dorequest2 hst c rqst + } + ; + ; return rsp + } + + dorequest2 hst c r = + do { dbg <- getBS bsDebug + ; ioAction $ case dbg of + Nothing -> sendHTTP c r + Just f -> + debugStream (f++'-':hst) c + >>= \c' -> sendHTTP c' r + } + + + + + +------------------------------------------------------------------ +------------------ Request Building ------------------------------ +------------------------------------------------------------------ + + +libUA = "haskell-libwww/0.1" + +defaultGETRequest uri = + Request { rqURI=uri + , rqBody="" + , rqHeaders=[ Header HdrContentLength "0" + , Header HdrUserAgent libUA + ] + , rqMethod=GET + } + + + +-- This form junk is completely untested... + +type FormVar = (String,String) + +data Form = Form RequestMethod URI [FormVar] + + +formToRequest :: Form -> Request +formToRequest (Form m u vs) = + let enc = urlEncodeVars vs + in case m of + GET -> Request { rqMethod=GET + , rqHeaders=[ Header HdrContentLength "0" ] + , rqBody="" + , rqURI=u { uriQuery=enc } -- What about old query? + } + POST -> Request { rqMethod=POST + , rqHeaders=[ Header HdrContentLength (show $ length enc) ] + , rqBody=enc + , rqURI=u { uriQuery=enc } -- What about old query? + } addfile ./dependencies/HTTP-2005.5.5/Network/HTTP.hs hunk ./dependencies/HTTP-2005.5.5/Network/HTTP.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Network.HTTP +-- Copyright : (c) Warrick Gray 2002, Bjorn Bringert 2003-2005 +-- License : BSD +-- +-- Maintainer : bjorn@bringert.net +-- Stability : experimental +-- Portability : non-portable (not tested) +-- +-- An easy HTTP interface enjoy. +-- +-- * Changes by Graham Klyne: +-- - export httpVersion +-- - use new URI module (similar to old, but uses revised URI datatype) +-- +-- * Changes by Bjorn Bringert: +-- +-- - handle URIs with a port number +-- - added debugging toggle +-- - disabled 100-continue transfers to get HTTP\/1.0 compatibility +-- - change 'ioError' to 'throw' +-- +-- * Changes from 0.1 +-- - change 'openHTTP' to 'openTCP', removed 'closeTCP' - use 'close' from 'Stream' class. +-- - added use of inet_addr to openHTTP, allowing use of IP "dot" notation addresses. +-- - reworking of the use of Stream, including alterations to make 'sendHTTP' generic +-- and the addition of a debugging stream. +-- - simplified error handling. +-- +-- * TODO +-- - request pipelining +-- - https upgrade (includes full TLS, i.e. SSL, implementation) +-- - use of Stream classes will pay off +-- - consider C implementation of encryption\/decryption +-- - comm timeouts +-- - MIME & entity stuff (happening in separate module) +-- - support \"*\" uri-request-string for OPTIONS request method +-- +-- +-- * Header notes: +-- +-- [@Host@] +-- Required by HTTP\/1.1, if not supplied as part +-- of a request a default Host value is extracted +-- from the request-uri. +-- +-- [@Connection@] +-- If this header is present in any request or +-- response, and it's value is "close", then +-- the current request\/response is the last +-- to be allowed on that connection. +-- +-- [@Expect@] +-- Should a request contain a body, an Expect +-- header will be added to the request. The added +-- header has the value \"100-continue\". After +-- a 417 \"Expectation Failed\" response the request +-- is attempted again without this added Expect +-- header. +-- +-- [@TransferEncoding,ContentLength,...@] +-- if request is inconsistent with any of these +-- header values then you may not receive any response +-- or will generate an error response (probably 4xx). +-- +-- +-- * Response code notes +-- Some response codes induce special behaviour: +-- +-- [@1xx@] \"100 Continue\" will cause any unsent request body to be sent. +-- \"101 Upgrade\" will be returned. +-- Other 1xx responses are ignored. +-- +-- [@417@] The reason for this code is \"Expectation failed\", indicating +-- that the server did not like the Expect \"100-continue\" header +-- added to a request. Receipt of 417 will induce another +-- request attempt (without Expect header), unless no Expect header +-- had been added (in which case 417 response is returned). +-- +----------------------------------------------------------------------------- +module Network.HTTP ( + httpVersion, + + -- * Type declarations + + -- ** Streams + Debug, + Stream(..), + debugStream, + + -- ** Connections + Connection, + ConnError(..), + openTCP, + isConnectedTo, + + + -- ** HTTP + Request(..), + Response(..), + RequestMethod(..), + simpleHTTP, + sendHTTP, + + -- ** Header Functions + HasHeaders, + Header(..), + HeaderName(..), + insertHeader, + insertHeaderIfMissing, + insertHeaders, + retrieveHeaders, + replaceHeader, + + -- ** URL Encoding + urlEncode, + urlDecode, + urlEncodeVars, + + -- ** URI authority parsing + URIAuthority(..), + parseURIAuthority +) where + + + +----------------------------------------------------------------- +------------------ Imports -------------------------------------- +----------------------------------------------------------------- + +import Control.Exception as Exception + +-- Networking +import Network (withSocketsDo) +import Network.BSD +import Network.URI +import Network.Socket + +-- Util +import Data.Bits ((.&.)) +import Data.Char +import Data.List (isPrefixOf,partition,elemIndex) +import Data.Maybe +import Data.Array.MArray +import Data.IORef +import Control.Concurrent +import Control.Monad (when,liftM,guard) +import Control.Monad.ST (ST,stToIO) +import Numeric (readHex) +import Text.ParserCombinators.ReadP +import Text.Read.Lex +import System.IO +import System.IO.Error (isEOFError) +import qualified System.IO.Error + +import Foreign.C.Error + + +-- Turn on to enable HTTP traffic logging +debug :: Bool +debug = False + +-- File that HTTP traffic logs go to +httpLogFile :: String +httpLogFile = "http-debug.log" + +----------------------------------------------------------------- +------------------ Misc ----------------------------------------- +----------------------------------------------------------------- + +-- remove leading and trailing whitespace. +trim :: String -> String +trim = let dropspace = dropWhile isSpace in + reverse . dropspace . reverse . dropspace + + +-- Split a list into two parts, the delimiter occurs +-- at the head of the second list. Nothing is returned +-- when no occurance of the delimiter is found. +split :: Eq a => a -> [a] -> Maybe ([a],[a]) +split delim list = case delim `elemIndex` list of + Nothing -> Nothing + Just x -> Just $ splitAt x list + + + +crlf = "\r\n" +sp = " " + +----------------------------------------------------------------- +------------------ URI Authority parsing ------------------------ +----------------------------------------------------------------- + +data URIAuthority = URIAuthority { user :: Maybe String, + password :: Maybe String, + host :: String, + port :: Maybe Int + } deriving (Eq,Show) + +-- | Parse the authority part of a URL. +-- +-- > RFC 1732, section 3.1: +-- > +-- > //:@:/ +-- > Some or all of the parts ":@", ":", +-- > ":", and "/" may be excluded. +parseURIAuthority :: String -> Maybe URIAuthority +parseURIAuthority s = listToMaybe (map fst (readP_to_S pURIAuthority s)) + + +pURIAuthority :: ReadP URIAuthority +pURIAuthority = do + (u,pw) <- (pUserInfo `before` char '@') + <++ return (Nothing, Nothing) + h <- munch (/=':') + p <- orNothing (char ':' >> readDecP) + look >>= guard . null + return URIAuthority{ user=u, password=pw, host=h, port=p } + +pUserInfo :: ReadP (Maybe String, Maybe String) +pUserInfo = do + u <- orNothing (munch (`notElem` ":@")) + p <- orNothing (char ':' >> munch (/='@')) + return (u,p) + +before :: Monad m => m a -> m b -> m a +before a b = a >>= \x -> b >> return x + +orNothing :: ReadP a -> ReadP (Maybe a) +orNothing p = fmap Just p <++ return Nothing + +----------------------------------------------------------------- +------------------ Header Data ---------------------------------- +----------------------------------------------------------------- + + +-- | The Header data type pairs header names & values. +data Header = Header HeaderName String + + +instance Show Header where + show (Header key value) = show key ++ ": " ++ value ++ crlf + + +-- | HTTP Header Name type: +-- Why include this at all? I have some reasons +-- 1) prevent spelling errors of header names, +-- 2) remind everyone of what headers are available, +-- 3) might speed up searches for specific headers. +-- +-- Arguments against: +-- 1) makes customising header names laborious +-- 2) increases code volume. +-- +data HeaderName = + -- Generic Headers -- + HdrCacheControl + | HdrConnection + | HdrDate + | HdrPragma + | HdrTransferEncoding + | HdrUpgrade + | HdrVia + + -- Request Headers -- + | HdrAccept + | HdrAcceptCharset + | HdrAcceptEncoding + | HdrAcceptLanguage + | HdrAuthorization + | HdrCookie + | HdrExpect + | HdrFrom + | HdrHost + | HdrIfModifiedSince + | HdrIfMatch + | HdrIfNoneMatch + | HdrIfRange + | HdrIfUnmodifiedSince + | HdrMaxForwards + | HdrProxyAuthorization + | HdrRange + | HdrReferer + | HdrUserAgent + + -- Response Headers + | HdrAge + | HdrLocation + | HdrProxyAuthenticate + | HdrPublic + | HdrRetryAfter + | HdrServer + | HdrSetCookie + | HdrVary + | HdrWarning + | HdrWWWAuthenticate + + -- Entity Headers + | HdrAllow + | HdrContentBase + | HdrContentEncoding + | HdrContentLanguage + | HdrContentLength + | HdrContentLocation + | HdrContentMD5 + | HdrContentRange + | HdrContentType + | HdrETag + | HdrExpires + | HdrLastModified + + -- Mime entity headers (for sub-parts) + | HdrContentTransferEncoding + + -- | Allows for unrecognised or experimental headers. + | HdrCustom String -- not in header map below. + deriving(Eq) + + +-- Translation between header names and values, +-- good candidate for improvement. +headerMap :: [ (String,HeaderName) ] +headerMap + = [ ("Cache-Control" ,HdrCacheControl ) + , ("Connection" ,HdrConnection ) + , ("Date" ,HdrDate ) + , ("Pragma" ,HdrPragma ) + , ("Transfer-Encoding" ,HdrTransferEncoding ) + , ("Upgrade" ,HdrUpgrade ) + , ("Via" ,HdrVia ) + , ("Accept" ,HdrAccept ) + , ("Accept-Charset" ,HdrAcceptCharset ) + , ("Accept-Encoding" ,HdrAcceptEncoding ) + , ("Accept-Language" ,HdrAcceptLanguage ) + , ("Authorization" ,HdrAuthorization ) + , ("From" ,HdrFrom ) + , ("Host" ,HdrHost ) + , ("If-Modified-Since" ,HdrIfModifiedSince ) + , ("If-Match" ,HdrIfMatch ) + , ("If-None-Match" ,HdrIfNoneMatch ) + , ("If-Range" ,HdrIfRange ) + , ("If-Unmodified-Since" ,HdrIfUnmodifiedSince ) + , ("Max-Forwards" ,HdrMaxForwards ) + , ("Proxy-Authorization" ,HdrProxyAuthorization) + , ("Range" ,HdrRange ) + , ("Referer" ,HdrReferer ) + , ("User-Agent" ,HdrUserAgent ) + , ("Age" ,HdrAge ) + , ("Location" ,HdrLocation ) + , ("Proxy-Authenticate" ,HdrProxyAuthenticate ) + , ("Public" ,HdrPublic ) + , ("Retry-After" ,HdrRetryAfter ) + , ("Server" ,HdrServer ) + , ("Vary" ,HdrVary ) + , ("Warning" ,HdrWarning ) + , ("WWW-Authenticate" ,HdrWWWAuthenticate ) + , ("Allow" ,HdrAllow ) + , ("Content-Base" ,HdrContentBase ) + , ("Content-Encoding" ,HdrContentEncoding ) + , ("Content-Language" ,HdrContentLanguage ) + , ("Content-Length" ,HdrContentLength ) + , ("Content-Location" ,HdrContentLocation ) + , ("Content-MD5" ,HdrContentMD5 ) + , ("Content-Range" ,HdrContentRange ) + , ("Content-Type" ,HdrContentType ) + , ("ETag" ,HdrETag ) + , ("Expires" ,HdrExpires ) + , ("Last-Modified" ,HdrLastModified ) + , ("Set-Cookie" ,HdrSetCookie ) + , ("Cookie" ,HdrCookie ) + , ("Expect" ,HdrExpect ) ] + + +instance Show HeaderName where + show (HdrCustom s) = s + show x = case filter ((==x).snd) headerMap of + [] -> error "headerMap incomplete" + (h:_) -> fst h + + + + + +-- | This class allows us to write generic header manipulation functions +-- for both 'Request' and 'Response' data types. +class HasHeaders x where + getHeaders :: x -> [Header] + setHeaders :: x -> [Header] -> x + + + +-- Header manipulation functions +insertHeader, replaceHeader, insertHeaderIfMissing + :: HasHeaders a => HeaderName -> String -> a -> a + + +-- | Inserts a header with the given name and value. +-- Allows duplicate header names. +insertHeader name value x = setHeaders x newHeaders + where + newHeaders = (Header name value) : getHeaders x + + +-- | Adds the new header only if no previous header shares +-- the same name. +insertHeaderIfMissing name value x = setHeaders x (newHeaders $ getHeaders x) + where + newHeaders list@(h@(Header n _): rest) + | n == name = list + | otherwise = h : newHeaders rest + newHeaders [] = [Header name value] + + + +-- | Removes old headers with duplicate name. +replaceHeader name value x = setHeaders x newHeaders + where + newHeaders = Header name value : [ x | x@(Header n v) <- getHeaders x, name /= n ] + + +-- | Inserts multiple headers. +insertHeaders :: HasHeaders a => [Header] -> a -> a +insertHeaders hdrs x = setHeaders x (getHeaders x ++ hdrs) + + +-- | Gets a list of headers with a particular 'HeaderName'. +retrieveHeaders :: HasHeaders a => HeaderName -> a -> [Header] +retrieveHeaders name x = filter matchname (getHeaders x) + where + matchname (Header n _) | n == name = True + matchname _ = False + + +-- | Lookup presence of specific HeaderName in a list of Headers +-- Returns the value from the first matching header. +findHeader :: HasHeaders a => HeaderName -> a -> Maybe String +findHeader n x = lookupHeader n (getHeaders x) + +-- An anomally really: +lookupHeader :: HeaderName -> [Header] -> Maybe String +lookupHeader v (Header n s:t) | v == n = Just s + | otherwise = lookupHeader v t +lookupHeader _ _ = Nothing + + + + +{- +instance HasHeaders [Header] +...requires -fglasgow-exts, and is not really necessary anyway... +-} + + + +----------------------------------------------------------------- +------------------ HTTP Messages -------------------------------- +----------------------------------------------------------------- + + +-- Protocol version +httpVersion :: String +httpVersion = "HTTP/1.1" + + +-- | The HTTP request method, to be used in the 'Request' object. +-- We are missing a few of the stranger methods, but these are +-- not really necessary until we add full TLS. +data RequestMethod = HEAD | PUT | GET | POST | OPTIONS | TRACE + deriving(Show,Eq) + + +-- | An HTTP Request. +-- The 'Show' instance of this type is used for message serialisation, +-- which means no body data is output. +data Request = + Request { rqURI :: URI -- ^ might need changing in future + -- 1) to support '*' uri in OPTIONS request + -- 2) transparent support for both relative + -- & absolute uris, although this should + -- already work (leave scheme & host parts empty). + , rqMethod :: RequestMethod + , rqHeaders :: [Header] + , rqBody :: String + } + + + + +-- Notice that request body is not included, +-- this show function is used to serialise +-- a request for the transport link, we send +-- the body separately where possible. +instance Show Request where + show (Request u m h _) = + show m ++ sp ++ alt_uri ++ sp ++ httpVersion ++ crlf + ++ foldr (++) [] (map show h) ++ crlf + where + alt_uri = show $ if null (uriPath u) || head (uriPath u) /= '/' + then u { uriPath = '/' : uriPath u } + else u + + +instance HasHeaders Request where + getHeaders = rqHeaders + setHeaders rq hdrs = rq { rqHeaders=hdrs } + + + + + + +type ResponseCode = (Int,Int,Int) +type ResponseData = (ResponseCode,String,[Header]) + + +-- | An HTTP Response. +-- The 'Show' instance of this type is used for message serialisation, +-- which means no body data is output, additionally the output will +-- show an HTTP version of 1.1 instead of the actual version returned +-- by a server. +data Response = + Response { rspCode :: ResponseCode + , rspReason :: String + , rspHeaders :: [Header] + , rspBody :: String + } + + + +-- This is an invalid representation of a received response, +-- since we have made the assumption that all responses are HTTP/1.1 +instance Show Response where + show (Response (a,b,c) reason headers _) = + httpVersion ++ ' ' : map intToDigit [a,b,c] ++ ' ' : reason ++ crlf + ++ foldr (++) [] (map show headers) ++ crlf + + + +instance HasHeaders Response where + getHeaders = rspHeaders + setHeaders rsp hdrs = rsp { rspHeaders=hdrs } + + + + +----------------------------------------------------------------- +------------------ TCP Connections ------------------------------ +----------------------------------------------------------------- + +-- | The 'Connection' newtype is a wrapper that allows us to make +-- connections an instance of the StreamIn\/Out classes, without ghc extensions. +-- While this looks sort of like a generic reference to the transport +-- layer it is actually TCP specific, which can be seen in the +-- implementation of the 'Stream Connection' instance. +newtype Connection = ConnRef {getRef :: IORef Conn} + + +-- | The 'Conn' object allows input buffering, and maintenance of +-- some admin-type data. +data Conn = MkConn { connSock :: ! Socket + , connAddr :: ! SockAddr + , connBffr :: ! String + , connHost :: String + } + | ConnClosed + deriving(Eq) + + + +data ConnError = ErrorReset + | ErrorClosed + | ErrorParse String + | ErrorMisc String + deriving(Show,Eq) + + + +-- | This is the type returned by many exported network functions. +type Result a = Either ConnError {- error -} + a {- result -} + + +-- error propagating: +-- we could've used a monad, but that would lead us +-- into using the "-fglasgow-exts" compile flag. +bindE :: Either ConnError a -> (a -> Either ConnError b) -> Either ConnError b +bindE (Left e) _ = Left e +bindE (Right v) f = f v + + +-- | Open a connection to port 80 on a remote host. +openTCP :: String -> IO Connection +openTCP host = openTCPPort host 80 + + +-- This function establishes a connection to a remote +-- host, it uses "getHostByName" which interrogates the +-- DNS system, hence may trigger a network connection. +-- +-- Add a "persistant" option? Current persistant is default. +-- Use "Result" type for synchronous exception reporting? +openTCPPort :: String -> Int -> IO Connection +openTCPPort uri port = + do { s <- socket AF_INET Stream 6 + ; setSocketOption s KeepAlive 1 + ; host <- Exception.catch (inet_addr uri) -- handles ascii IP numbers + (\_ -> getHostByName uri >>= \host -> + case hostAddresses host of + [] -> return (error "no addresses in host entry") + (h:_) -> return h) + ; let a = SockAddrInet (toEnum port) host + ; connect s a + ; v <- newIORef (MkConn s a [] uri) + ; return (ConnRef v) + } + + + +----------------------------------------------------------------- +------------------ Gentle Art of Socket Sucking ----------------- +----------------------------------------------------------------- + +-- | Streams should make layering of TLS protocol easier in future, +-- they allow reading/writing to files etc for debugging, +-- they allow use of protocols other than TCP/IP +-- and they allow customisation. +-- +-- Instances of this class should not trim +-- the input in any way, e.g. leave LF on line +-- endings etc. Unless that is exactly the behaviour +-- you want from your twisted instances ;) +class Stream x where + readLine :: x -> IO (Result String) + readBlock :: x -> Int -> IO (Result String) + writeBlock :: x -> String -> IO (Result ()) + close :: x -> IO () + + + + + +-- Exception handler for socket operations +handleSocketError :: Socket -> Exception -> IO (Result a) +handleSocketError sk e = + do { se <- getSocketOption sk SoError + ; if se == 0 + then throw e + else return $ if se == 10054 -- reset + then Left ErrorReset + else Left $ ErrorMisc $ show se + } + + + + +instance Stream Socket where + readBlock sk n = (liftM Right $ fn n) `Exception.catch` (handleSocketError sk) + where + fn x = do { str <- myrecv sk x + ; let len = length str + ; if len < x + then ( fn (x-len) >>= \more -> return (str++more) ) + else return str + } + + -- Use of the following function is discouraged. + -- The function reads in one character at a time, + -- which causes many calls to the kernel recv() + -- hence causes many context switches. + readLine sk = (liftM Right $ fn "") `Exception.catch` (handleSocketError sk) + where + fn str = + do { c <- myrecv sk 1 -- like eating through a straw. + ; if null c || c == "\n" + then return (reverse str++c) + else fn (head c:str) + } + + writeBlock sk str = (liftM Right $ fn str) `Exception.catch` (handleSocketError sk) + where + fn [] = return () + fn x = send sk x >>= \i -> fn (drop i x) + + -- This slams closed the connection (which is considered rude for TCP\/IP) + close sk = shutdown sk ShutdownBoth >> sClose sk + + + + +instance Stream Connection where + readBlock ref n = + readIORef (getRef ref) >>= \conn -> case conn of + ConnClosed -> return (Left ErrorClosed) + (MkConn sk addr bfr hst) + | length bfr >= n -> + do { modifyIORef (getRef ref) (\c -> c { connBffr=(drop n bfr) }) + ; return (Right $ take n bfr) + } + | otherwise -> + do { modifyIORef (getRef ref) (\c -> c { connBffr=[] }) + ; more <- readBlock sk (n - length bfr) + ; return $ case more of + Left _ -> more + Right s -> (Right $ bfr ++ s) + } + + -- This function uses a buffer, at this time the buffer is just 1000 characters. + -- (however many bytes this is is left to the user to decypher) + readLine ref = + readIORef (getRef ref) >>= \conn -> case conn of + ConnClosed -> return (Left ErrorClosed) + (MkConn sk addr bfr _) + | null bfr -> {- read in buffer -} + do { str <- myrecv sk 1000 -- DON'T use "readBlock sk 1000" !! + -- ... since that call will loop. + ; let len = length str + ; if len == 0 {- indicates a closed connection -} + then return (Right "") + else modifyIORef (getRef ref) (\c -> c { connBffr=str }) + >> readLine ref -- recursion + } + | otherwise -> + case elemIndex '\n' bfr of + Nothing -> {- need recursion to finish line -} + do { modifyIORef (getRef ref) (\c -> c { connBffr=[] }) + ; more <- readLine ref -- contains extra recursion + ; return $ more `bindE` \str -> Right (bfr++str) + } + Just i -> {- end of line found -} + let (bgn,end) = splitAt i bfr in + do { modifyIORef (getRef ref) (\c -> c { connBffr=(drop 1 end) }) + ; return (Right (bgn++['\n'])) + } + + + + -- The 'Connection' object allows no outward buffering, + -- since in general messages are serialised in their entirety. + writeBlock ref str = + readIORef (getRef ref) >>= \conn -> case conn of + ConnClosed -> return (Left ErrorClosed) + (MkConn sk addr _ _) -> fn sk addr str `Exception.catch` (handleSocketError sk) + where + fn sk addr s + | null s = return (Right ()) -- done + | otherwise = + getSocketOption sk SoError >>= \se -> + if se == 0 + then sendTo sk s addr >>= \i -> fn sk addr (drop i s) + else writeIORef (getRef ref) ConnClosed >> + if se == 10054 + then return (Left ErrorReset) + else return (Left $ ErrorMisc $ show se) + + + -- Closes a Connection. Connection will no longer + -- allow any of the other Stream functions. Notice that a Connection may close + -- at any time before a call to this function. This function is idempotent. + -- (I think the behaviour here is TCP specific) + close ref = + do { c <- readIORef (getRef ref) + ; closeConn c `Exception.catch` (\_ -> return ()) + ; writeIORef (getRef ref) ConnClosed + } + where + -- Be kind to peer & close gracefully. + closeConn (ConnClosed) = return () + closeConn (MkConn sk addr [] _) = + do { shutdown sk ShutdownSend + ; suck ref + ; shutdown sk ShutdownReceive + ; sClose sk + } + + suck :: Connection -> IO () + suck cn = readLine cn >>= + either (\_ -> return ()) -- catch errors & ignore + (\x -> if null x then return () else suck cn) + + + + + + + +-- | Allows stream logging. +-- Refer to 'debugStream' below. +data Debug x = Dbg Handle x + + +instance (Stream x) => Stream (Debug x) where + readBlock (Dbg h c) n = + do { val <- readBlock c n + ; hPutStrLn h ("readBlock " ++ show n ++ ' ' : show val) + ; return val + } + + readLine (Dbg h c) = + do { val <- readLine c + ; hPutStrLn h ("readLine " ++ show val) + ; return val + } + + writeBlock (Dbg h c) str = + do { val <- writeBlock c str + ; hPutStrLn h ("writeBlock " ++ show val ++ ' ' : show str) + ; return val + } + + close (Dbg h c) = + do { hPutStrLn h "closing..." + ; hFlush h + ; close c + ; hPutStrLn h "...closed" + ; hClose h + } + + +-- | Wraps a stream with logging I\/O, the first +-- argument is a filename which is opened in AppendMode. +debugStream :: (Stream a) => String -> a -> IO (Debug a) +debugStream file stm = + do { h <- openFile file AppendMode + ; hPutStrLn h "File opened for appending." + ; return (Dbg h stm) + } + + +----------------------------------------------------------------- +------------------ Parsing -------------------------------------- +----------------------------------------------------------------- + +parseHeader :: String -> Result Header +parseHeader str = + case split ':' str of + Nothing -> Left (ErrorParse $ "Unable to parse header: " ++ str) + Just (k,v) -> Right $ Header (fn k) (trim $ drop 1 v) + where + fn k = case map snd $ filter (match k . fst) headerMap of + [] -> (HdrCustom k) + (h:_) -> h + + match :: String -> String -> Bool + match s1 s2 = map toLower s1 == map toLower s2 + + +parseHeaders :: [String] -> Result [Header] +parseHeaders = catRslts [] . map (parseHeader . clean) . joinExtended "" + where + -- Joins consecutive lines where the second line + -- begins with ' ' or '\t'. + joinExtended old (h : t) + | not (null h) && (head h == ' ' || head h == '\t') + = joinExtended (old ++ ' ' : tail h) t + | otherwise = old : joinExtended h t + joinExtended old [] = [old] + + clean [] = [] + clean (h:t) | h `elem` "\t\r\n" = ' ' : clean t + | otherwise = h : clean t + + -- tollerant of errors? should parse + -- errors here be reported or ignored? + -- currently ignored. + catRslts :: [a] -> [Result a] -> Result [a] + catRslts list (h:t) = + case h of + Left _ -> catRslts list t + Right v -> catRslts (v:list) t + catRslts list [] = Right $ reverse list + + +-- Parsing a response +parseResponseHead :: [String] -> Result ResponseData +parseResponseHead [] = Left ErrorClosed +parseResponseHead (sts:hdrs) = + responseStatus sts `bindE` \(version,code,reason) -> + parseHeaders hdrs `bindE` \hdrs' -> + Right (code,reason,hdrs') + where + + responseStatus line + = case words line of + yes@(version:code:reason) -> Right (version,match code,concatMap (++" ") reason) + no -> if null line + then Left ErrorClosed -- an assumption + else Left (ErrorParse $ "Response status line parse failure: " ++ line) + + + match [a,b,c] = (digitToInt a, + digitToInt b, + digitToInt c) + match _ = (-1,-1,-1) -- will create appropriate behaviour + + + + +----------------------------------------------------------------- +------------------ HTTP Send / Recv ---------------------------------- +----------------------------------------------------------------- + +data Behaviour = Continue + | Retry + | Done + | ExpectEntity + | DieHorribly String + + + + + +matchResponse :: RequestMethod -> ResponseCode -> Behaviour +matchResponse rqst rsp = + case rsp of + (1,0,0) -> Continue + (1,0,1) -> Done -- upgrade to TLS + (1,_,_) -> Continue -- default + (2,0,4) -> Done + (2,0,5) -> Done + (2,_,_) -> ans + (3,0,4) -> Done + (3,0,5) -> Done + (3,_,_) -> ans + (4,1,7) -> Retry -- Expectation failed + (4,_,_) -> ans + (5,_,_) -> ans + (a,b,c) -> DieHorribly ("Response code " ++ map intToDigit [a,b,c] ++ " not recognised") + where + ans | rqst == HEAD = Done + | otherwise = ExpectEntity + + +-- Checks both that the underlying Socket is connected +-- and that the connection peer matches the given +-- host name (which is recorded locally). +isConnectedTo :: Connection -> String -> IO Bool +isConnectedTo conn name = + do { v <- readIORef (getRef conn) + ; case v of + ConnClosed -> return False + (MkConn sk _ _ h) -> + if (map toLower h == map toLower name) + then sIsConnected sk + else return False + } + + + + +-- | Simple way to get a resource across a non-persistant connection. +-- Headers that may be altered: +-- Host Altered only if no Host header is supplied, HTTP\/1.1 +-- requires a Host header. +-- Connection Where no allowance is made for persistant connections +-- the Connection header will be set to "close" +simpleHTTP :: Request -> IO (Result Response) +simpleHTTP r = + do + auth <- getAuth r + let r' = fixReq auth r + c <- openTCPPort (host auth) (fromMaybe 80 (port auth)) + rsp <- if debug then do + c' <- debugStream httpLogFile c + sendHTTP c' r' + else + sendHTTP c r' + -- already done by sendHTTP because of "Connection: close" header + --; close c + return rsp + where + {- RFC 2616, section 5.1.2: + "The most common form of Request-URI is that used to identify a + resource on an origin server or gateway. In this case the absolute + path of the URI MUST be transmitted (see section 3.2.1, abs_path) as + the Request-URI, and the network location of the URI (authority) MUST + be transmitted in a Host header field." -} + -- we assume that this is the case, so we take the host name from + -- the Host header if there is one, otherwise from the request-URI. + -- Then we make the request-URI an abs_path and make sure that there + -- is a Host header. + fixReq :: URIAuthority -> Request -> Request + fixReq URIAuthority{host=h} r = + replaceHeader HdrConnection "close" $ + insertHeaderIfMissing HdrHost h $ + r { rqURI = (rqURI r){ uriScheme = "", + uriAuthority = Nothing } } + + getAuth :: Monad m => Request -> m URIAuthority + getAuth r = case parseURIAuthority auth of + Just x -> return x + Nothing -> fail $ "Error parsing URI authority '" + ++ auth ++ "'" + where auth = case findHeader HdrHost r of + Just h -> h + Nothing -> authority (rqURI r) + +sendHTTP :: Stream s => s -> Request -> IO (Result Response) +sendHTTP conn rq = + do { let a_rq = fixHostHeader rq + ; rsp <- Exception.catch (main a_rq) + (\e -> do { close conn; throw e }) + ; let fn list = when (or $ map findConnClose list) + (close conn) + ; either (\_ -> fn [rqHeaders rq]) + (\r -> fn [rqHeaders rq,rspHeaders r]) + rsp + ; return rsp + } + where +-- From RFC 2616, section 8.2.3: +-- 'Because of the presence of older implementations, the protocol allows +-- ambiguous situations in which a client may send "Expect: 100- +-- continue" without receiving either a 417 (Expectation Failed) status +-- or a 100 (Continue) status. Therefore, when a client sends this +-- header field to an origin server (possibly via a proxy) from which it +-- has never seen a 100 (Continue) status, the client SHOULD NOT wait +-- for an indefinite period before sending the request body.' +-- +-- Since we would wait forever, I have disabled use of 100-continue for now. + main :: Request -> IO (Result Response) + main rqst = + do + --let str = if null (rqBody rqst) + -- then show rqst + -- else show (insertHeader HdrExpect "100-continue" rqst) + writeBlock conn (show rqst) + -- write body immediately, don't wait for 100 CONTINUE + writeBlock conn (rqBody rqst) + rsp <- getResponseHead + switchResponse True False rsp rqst + + -- remove leading crlfs then call readTillEmpty2 (not required by RFC) + readTillEmpty1 :: IO (Result [String]) + readTillEmpty1 = + do { line <- readLine conn + ; case line of + Left e -> return $ Left e + Right s -> + if s == crlf + then readTillEmpty1 + else readTillEmpty2 [s] + } + + + -- read lines until an empty line (CRLF), + -- also accepts a connection close as end of + -- input, which is not an HTTP/1.1 compliant + -- thing to do - so probably indicates an + -- error condition. + readTillEmpty2 :: [String] -> IO (Result [String]) + readTillEmpty2 list = + do { line <- readLine conn + ; case line of + Left e -> return $ Left e + Right s -> + if s == crlf || null s + then return (Right $ reverse (s:list)) + else readTillEmpty2 (s:list) + } + + + -- reads and parses headers + getResponseHead :: IO (Result ResponseData) + getResponseHead = + do { lor <- readTillEmpty1 + ; return $ lor `bindE` parseResponseHead + } + + -- Hmmm, this could go bad if we keep getting "100 Continue" + -- responses... Except this should never happen according + -- to the RFC. + switchResponse :: Bool {- allow retry? -} + -> Bool {- is body sent? -} + -> Result ResponseData + -> Request + -> IO (Result Response) + + switchResponse _ _ (Left e) _ = return (Left e) + -- retry on connreset? + -- if we attempt to use the same socket then there is an excellent + -- chance that the socket is not in a completely closed state. + + switchResponse allow_retry bdy_sent (Right (cd,rn,hdrs)) rqst = + case matchResponse (rqMethod rqst) cd of + Continue + | not bdy_sent -> {- Time to send the body -} + do { val <- writeBlock conn (rqBody rqst) + ; case val of + Left e -> return (Left e) + Right _ -> + do { rsp <- getResponseHead + ; switchResponse allow_retry True rsp rqst + } + } + | otherwise -> {- keep waiting -} + do { rsp <- getResponseHead + ; switchResponse allow_retry bdy_sent rsp rqst + } + + Retry -> {- Request with "Expect" header failed. + Trouble is the request contains Expects + other than "100-Continue" -} + do { writeBlock conn (show rqst ++ rqBody rqst) + ; rsp <- getResponseHead + ; switchResponse False bdy_sent rsp rqst + } + + Done -> + return (Right $ Response cd rn hdrs "") + + DieHorribly str -> + return $ Left $ ErrorParse ("Invalid response: " ++ str) + + ExpectEntity -> + let tc = lookupHeader HdrTransferEncoding hdrs + cl = lookupHeader HdrContentLength hdrs + in + do { rslt <- case tc of + Nothing -> + case cl of + Just x -> linearTransfer (read x :: Int) + Nothing -> hopefulTransfer "" + Just x -> + case map toLower (trim x) of + "chunked" -> chunkedTransfer + _ -> uglyDeathTransfer + ; return $ rslt `bindE` \(ftrs,bdy) -> Right (Response cd rn (hdrs++ftrs) bdy) + } + + + -- Adds a Host header if one is NOT ALREADY PRESENT + fixHostHeader :: Request -> Request + fixHostHeader rq = + let uri = rqURI rq + host = authority uri + in insertHeaderIfMissing HdrHost host rq + + + -- Used when we know exactly how many bytes to expect. + linearTransfer :: Int -> IO (Result ([Header],String)) + linearTransfer n + = do info <- readBlock conn n + return $ info `bindE` \str -> Right ([],str) + + -- Used when nothing about data is known, + -- Unfortunately waiting for a socket closure + -- causes bad behaviour. Here we just + -- take data once and give up the rest. + hopefulTransfer :: String -> IO (Result ([Header],String)) + hopefulTransfer str + = readLine conn >>= + either (\v -> return $ Left v) + (\more -> if null more + then return (Right ([],str)) + else hopefulTransfer (str++more)) + + + -- A necessary feature of HTTP/1.1 + -- Also the only transfer variety likely to + -- return any footers. + chunkedTransfer :: IO (Result ([Header],String)) + chunkedTransfer + = chunkedTransferC 0 >>= \v -> + return $ v `bindE` \(ftrs,count,info) -> + let myftrs = Header HdrContentLength (show count) : ftrs + in Right (myftrs,info) + + chunkedTransferC :: Int -> IO (Result ([Header],Int,String)) + chunkedTransferC n + = readLine conn >>= \v -> case v of + Left e -> return (Left e) + Right line -> + let size = ( if null line || (head line) == '0' + then 0 + else case readHex line of + (n,_):_ -> n + _ -> 0 + ) + in if size == 0 + then do { rs <- readTillEmpty2 [] + ; return $ + rs `bindE` \strs -> + parseHeaders strs `bindE` \ftrs -> + Right (ftrs,n,"") + } + else do { some <- readBlock conn size + ; readLine conn + ; more <- chunkedTransferC (n+size) + ; return $ + some `bindE` \cdata -> + more `bindE` \(ftrs,m,mdata) -> + Right (ftrs,m,cdata++mdata) + } + + + -- Maybe in the future we will have a sensible thing + -- to do here, at that time we might want to change + -- the name. + uglyDeathTransfer :: IO (Result ([Header],String)) + uglyDeathTransfer + = return $ Left $ ErrorParse "Unknown Transfer-Encoding" + + + -- Looks for a "Connection" header with the value "close". + -- Returns True when this is found. + findConnClose :: [Header] -> Bool + findConnClose hdrs = + case lookupHeader HdrConnection hdrs of + Nothing -> False + Just x -> map toLower (trim x) == "close" + + + +----------------------------------------------------------------- +------------------ A little friendly funtionality --------------- +----------------------------------------------------------------- + + +{- + I had a quick look around but couldn't find any RFC about + the encoding of data on the query string. I did find an + IETF memo, however, so this is how I justify the urlEncode + and urlDecode methods. + + Doc name: draft-tiwari-appl-wxxx-forms-01.txt (look on www.ietf.org) + + Reserved chars: ";", "/", "?", ":", "@", "&", "=", "+", ",", and "$" are reserved. + Unwise: "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`" + URI delims: "<" | ">" | "#" | "%" | <"> + Unallowed ASCII: + + Also unallowed: any non-us-ascii character + + Escape method: char -> '%' a b where a, b :: Hex digits +-} + +urlEncode, urlDecode :: String -> String + +urlDecode ('%':a:b:rest) = chr (16 * digitToInt a + digitToInt b) + : urlDecode rest +urlDecode (h:t) = h : urlDecode t +urlDecode [] = [] + +urlEncode (h:t) = + let str = if reserved (ord h) then escape h else [h] + in str ++ urlEncode t + where + reserved x + | x >= ord 'a' && x <= ord 'z' = False + | x >= ord 'A' && x <= ord 'Z' = False + | x >= ord '0' && x <= ord '9' = False + | x <= 0x20 || x >= 0x7F = True + | otherwise = x `elem` map ord [';','/','?',':','@','&' + ,'=','+',',','$','{','}' + ,'|','\\','^','[',']','`' + ,'<','>','#','%','"'] + -- wouldn't it be nice if the compiler + -- optimised the above for us? + + escape x = + let y = ord x + in [ '%', intToDigit ((y `div` 16) .&. 0xf), intToDigit (y .&. 0xf) ] + +urlEncode [] = [] + + + +-- Encode form variables, useable in either the +-- query part of a URI, or the body of a POST request. +-- I have no source for this information except experience, +-- this sort of encoding worked fine in CGI programming. +urlEncodeVars :: [(String,String)] -> String +urlEncodeVars ((n,v):t) = + let (same,diff) = partition ((==n) . fst) t + in urlEncode n ++ '=' : foldl (\x y -> x ++ ',' : urlEncode y) (urlEncode $ v) (map snd same) + ++ urlEncodeRest diff + where urlEncodeRest [] = [] + urlEncodeRest diff = '&' : urlEncodeVars diff +urlEncodeVars [] = [] + + +myrecv :: Socket -> Int -> IO String +myrecv sock len = + let handler e = if isEOFError e then return [] else ioError e + in System.IO.Error.catch (recv sock len) handler addfile ./dependencies/HTTP-2005.5.5/README hunk ./dependencies/HTTP-2005.5.5/README 1 +DESCRIPTION + +This is the Haskell HTTP and Browser module package. It was originally +written by Wariick Gray and the original version is still available +from: http://homepages.paradise.net.nz/warrickg/haskell/http/ + +REQUIREMENTS + +* A Haskell implementation such as GHC (http://www.haskell.org/ghc/) +or Hugs (http://www.haskell.org/hugs/) with support for Cabal. + +* The Haskell Cryptographic Library (http://www.haskell.org/crypto/) + +INSTALLATION + +* Configure: + +$ ./Setup.lhs configure + +* Compile: + +$ ./Setup.lhs build + +* Install (as root): + +# ./Setup.lhs install addfile ./dependencies/HTTP-2005.5.5/Setup.lhs hunk ./dependencies/HTTP-2005.5.5/Setup.lhs 1 +#!/usr/bin/env runghc + +> module Main where + +> import Distribution.Simple + +> main :: IO () +> main = defaultMain addfile ./dependencies/HTTP-2005.5.5/debian/changelog hunk ./dependencies/HTTP-2005.5.5/debian/changelog 1 +haskell-http (0.4-1) unstable; urgency=low + + * Initial Debian package. + + -- Ganesh Sittampalam Tue, 7 Dec 2004 02:11:23 +0000 + addfile ./dependencies/HTTP-2005.5.5/debian/control hunk ./dependencies/HTTP-2005.5.5/debian/control 1 +Source: haskell-http +Priority: optional +Section: net +Maintainer: Ganesh Sittampalam +Build-Depends: debhelper (>= 4.0.0), haskell-devscripts (>=0.5.2), ghc6 (>=6.2.2), ghc6 (<6.2.3), libghc6-cabal-dev (>=0.2-3) +Standards-Version: 3.6.1 + +Package: libghc6-http-dev +Section: devel +Architecture: any +Depends: ${haskell:Depends} +Description: GHC 6 libraries for the Haskell HTTP client library + HTTP is a set of Haskell client libraries for HTTP/1.0 and HTTP/1.1. + . + This package contains the libraries compiled for GHC 6. + +# Package: libnhc98-http-dev +# Section: devel +# Architecture: any +# Description: +# +# +# Package: libhugs-http-dev +# Section: devel +# Architecture: any +# Description: +# addfile ./dependencies/HTTP-2005.5.5/debian/copyright hunk ./dependencies/HTTP-2005.5.5/debian/copyright 1 +This package was debianised by Ganesh Sittampalam +on Mon, 13 Dec 2004. + +It was downloaded using 'darcs get http://cvs.haskell.org/darcs/http/' ; +the homepage for the module is +http://www.dtek.chalmers.se/~d00bring/haskell-xml-rpc/http.html + +Copyright (c) 2002, Warrick Gray +Copyright (c) 2002, Ian Lynagh +Copyright (c) 2003-2004, Bjorn Bringert +Copyright (c) 2004, Andre Furtado +Copyright (c) 2004, Ganesh Sittampalam + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * The names of contributors may not be used to endorse or promote + products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. addfile ./dependencies/HTTP-2005.5.5/debian/rules hunk ./dependencies/HTTP-2005.5.5/debian/rules 1 +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + ghc -package Cabal Setup.lhs -o setup + ./setup configure --prefix=$(LIBPATH) --ghc + + touch configure-stamp + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + -./setup clean + -make clean + -rm -rf setup Setup.hi Setup.ho Setup.o .*config* dist html + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs -a + + # Add here commands to install the package into debian/tmp + dh_haskell -a + + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs -a + dh_installdocs -a + dh_installexamples -a +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman -a + dh_link -a + dh_strip -a + dh_compress -a + dh_fixperms -a +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a + dh_md5sums -a + dh_builddeb -a + +binary: binary-arch +.PHONY: build clean binary-arch binary install configure addfile ./dependencies/HTTP-2005.5.5/http.cabal hunk ./dependencies/HTTP-2005.5.5/http.cabal 1 +Name: HTTP +Version: 2005.5.5 +License: BSD4 +License-file: LICENSE +Copyright: Warrick Gray, 2002, Bjorn Bringert 2003-2005 +Author: Warrick Gray +Maintainer: Bjorn Bringert +Homepage: http://www.haskell.org/http/ +Description: A library for client-side HTTP +Build-depends: network, parsec, Crypto, base +Exposed-modules: + Network.HTTP, + Network.Browser +-- GHC-options: -O2 addfile ./dependencies/HTTP-2005.5.5/test/Makefile hunk ./dependencies/HTTP-2005.5.5/test/Makefile 1 +GHC = ghc +GHCFLAGS = -O2 -package HTTP + +TEST_PROGS = get + +.SUFFIXES: .hs .hi .o + +.PHONY: all clean + +default all: $(TEST_PROGS) + +%: %.hs + $(GHC) $(GHCFLAGS) --make -o $@ $< + +clean: + -rm -f *.hi *.o $(TEST_PROGS) addfile ./dependencies/HTTP-2005.5.5/test/get.hs hunk ./dependencies/HTTP-2005.5.5/test/get.hs 1 +-- A simple test program which takes a url on the commandline +-- and outputs the contents to stdout. + +-- ghc --make -package HTTP get.hs -o get + +import Data.Char (intToDigit) +import Network.HTTP +import Network.URI +import System.Environment (getArgs) +import System.Exit (exitFailure) +import System.IO (hPutStrLn, stderr) + +main = + do + args <- getArgs + case args of + [addr] -> case parseURI addr of + Nothing -> err "Could not parse URI" + Just uri -> do + cont <- get uri + putStr cont + _ -> err "Usage: get " + +err :: String -> IO a +err msg = do + hPutStrLn stderr msg + exitFailure + +get :: URI -> IO String +get uri = + do + eresp <- simpleHTTP (request uri) + resp <- handleE (err . show) eresp + case rspCode resp of + (2,0,0) -> return (rspBody resp) + _ -> err (httpError resp) + where + showRspCode (a,b,c) = map intToDigit [a,b,c] + httpError resp = showRspCode (rspCode resp) ++ " " ++ rspReason resp + +request :: URI -> Request +request uri = Request{ rqURI = uri, + rqMethod = GET, + rqHeaders = [], + rqBody = "" } + +handleE :: Monad m => (ConnError -> m a) -> Either ConnError a -> m a +handleE h (Left e) = h e +handleE _ (Right v) = return v addfile ./dependencies/HaXml-1.2/Build.bat hunk ./dependencies/HaXml-1.2/Build.bat 1 +REM -- Build HaXml package using GHC +REM +REM Usage: +REM Build compile and install the HaXml library GHC package +REM Build Remove remove the HaXml GHC library package +REM Build Tools compile the tools shipped with HaXml + +rem -- Change the following to suit the local system environment -- + +rem GHC installation directory: +set GHCDIR=C:\DEV\ghc\ghc-6.2 + +rem Programs needed to build HaXml: +rem +rem NOTE: install MinGW linked from +rem for a copy of 'ar.exe' +rem +set GHC=C:\DEV\ghc\ghc-6.2\bin\ghc.exe +set GHCPKG=C:\DEV\ghc\ghc-6.2\bin\ghc-pkg.exe +set AR=C:\DEV\MinGW\bin\ar.exe +set LD=C:\DEV\ghc\ghc-6.2\gcc-lib\ld.exe + +rem Source directory for HaXml: +set SRC=C:\DEV\Haskell\lib\HaXml-1.12\src + +rem Two very long lines (500-600 chars) follow here. +rem They should not need changing. +set SRCS=Text/XML/HaXml.hs Text/XML/HaXml/Combinators.hs Text/XML/HaXml/Lex.hs Text/XML/HaXml/Parse.hs Text/XML/HaXml/Pretty.hs Text/XML/HaXml/Types.hs Text/XML/HaXml/Validate.hs Text/XML/HaXml/Wrappers.hs Text/XML/HaXml/OneOfN.hs Text/XML/HaXml/Xml2Haskell.hs Text/XML/HaXml/Haskell2Xml.hs Text/XML/HaXml/Verbatim.hs Text/XML/HaXml/Escape.hs Text/XML/HaXml/Html/Generate.hs Text/XML/HaXml/Html/Parse.hs Text/XML/HaXml/Html/Pretty.hs Text/XML/HaXml/Xtract/Combinators.hs Text/XML/HaXml/Xtract/Lex.hs Text/XML/HaXml/Xtract/Parse.hs Text/ParserCombinators/HuttonMeijerWallace.hs +set OBJS=Text/XML/HaXml.o Text/XML/HaXml/Combinators.o Text/XML/HaXml/Lex.o Text/XML/HaXml/Parse.o Text/XML/HaXml/Pretty.o Text/XML/HaXml/Types.o Text/XML/HaXml/Validate.o Text/XML/HaXml/Wrappers.o Text/XML/HaXml/OneOfN.o Text/XML/HaXml/Xml2Haskell.o Text/XML/HaXml/Haskell2Xml.o Text/XML/HaXml/Verbatim.o Text/XML/HaXml/Escape.o Text/XML/HaXml/Html/Generate.o Text/XML/HaXml/Html/Parse.o Text/XML/HaXml/Html/Pretty.o Text/XML/HaXml/Xtract/Combinators.o Text/XML/HaXml/Xtract/Lex.o Text/XML/HaXml/Xtract/Parse.o Text/ParserCombinators/HuttonMeijerWallace.o + + +rem -- Get on with the real work -- + +if "%1"=="Remove" goto Remove +if "%1"=="Tools" goto Tools + +rem -- Compile sources and create library archive +cd %SRC% +%GHC% --make -cpp -i. -package-name HaXml %SRCS% +%AR% r libHSHaXml.a %OBJS% + +rem -- Create library file for GHCi +%LD% -r --whole-archive -o HSHaXml.o libHSHaXml.a + +rem -- Install the library archive(s) where GHC can find them +COPY libHSHaXml.a %GHCDIR% +COPY HSHaXml.o %GHCDIR% + +rem -- Install the interface files where GHC can find them +rem /L - list only, /Y - overrite without confirmation +rem /S - copy subdirectories, /T - create directories only +rem /F - display full filenames while copying +XCOPY /S /F *.hi %GHCDIR%\imports + +rem -- Finally, register the package with GHC +%GHCPKG% --add-package $$file.uncpp; \ + done + -mkdir docs/HaXml + haddock -h -t HaXml -o docs/HaXml $(patsubst %, %.uncpp, $(SRCS)) + rm $(patsubst %, %.uncpp, $(SRCS)) + +# packaging a distribution + +srcDist: $(ALLFILES) haddock + rm -f $(SOFTWARE)-$(VERSION).tar $(SOFTWARE)-$(VERSION).tar.gz + mkdir $(SOFTWARE)-$(VERSION) + tar cf - $(ALLFILES) | ( cd $(SOFTWARE)-$(VERSION); tar xf - ) + -rm -rf $(SOFTWARE)-$(VERSION)/docs/CVS + -rm -rf $(SOFTWARE)-$(VERSION)/examples/CVS + -rm -rf $(SOFTWARE)-$(VERSION)/examples/SMIL/CVS + -rm -rf $(SOFTWARE)-$(VERSION)/examples/OpenOffice.org/CVS + tar cf $(SOFTWARE)-$(VERSION).tar $(SOFTWARE)-$(VERSION) + rm -rf $(SOFTWARE)-$(VERSION) + gzip $(SOFTWARE)-$(VERSION).tar + +zipDist: $(ALLFILES) haddock + rm -f $(SOFTWARE)-$(VERSION).zip + mkdir $(SOFTWARE)-$(VERSION) + tar cf - $(ALLFILES) | ( cd $(SOFTWARE)-$(VERSION); tar xf - ) + -rm -rf $(SOFTWARE)-$(VERSION)/docs/CVS + -rm -rf $(SOFTWARE)-$(VERSION)/examples/CVS + -rm -rf $(SOFTWARE)-$(VERSION)/examples/SMIL/CVS + -rm -rf $(SOFTWARE)-$(VERSION)/examples/OpenOffice.org/CVS + zip -r $(SOFTWARE)-$(VERSION).zip $(SOFTWARE)-$(VERSION) + rm -rf $(SOFTWARE)-$(VERSION) + + +# clear up rubbish +clean: + -rm -r obj/ghc obj/nhc98 obj/hugs + -cd examples; rm -f *.hi *.o +realclean: clean + -rm -f DtdToHaskell Xtract Validate Canonicalise MkOneOf + +# DO NOT DELETE: Beginning of Haskell dependencies +src/Text/XML/HaXml/Html/Parse.o : src/Text/XML/HaXml/Html/Parse.hs +src/Text/XML/HaXml/Html/Pretty.o : src/Text/XML/HaXml/Html/Pretty.hs +src/Text/XML/HaXml/Html/Generate.o : src/Text/XML/HaXml/Html/Generate.hs +src/Text/XML/HaXml/Parse.o : src/Text/XML/HaXml/Parse.hs +src/Text/XML/HaXml/Combinators.o : src/Text/XML/HaXml/Combinators.hs +src/Text/XML/HaXml/Pretty.o : src/Text/XML/HaXml/Pretty.hs +src/Text/XML/HaXml/Lex.o : src/Text/XML/HaXml/Lex.hs +src/Text/XML/HaXml/Xtract/Parse.o : src/Text/XML/HaXml/Xtract/Parse.hs +src/Text/XML/HaXml/Xtract/Parse.o : src/Text/XML/HaXml/Combinators.hi +src/Text/XML/HaXml/Xtract/Combinators.o : src/Text/XML/HaXml/Xtract/Combinators.hs +src/Text/XML/HaXml/Xtract/Combinators.o : src/Text/XML/HaXml/Combinators.hi +src/Text/XML/HaXml/Xtract/Lex.o : src/Text/XML/HaXml/Xtract/Lex.hs +src/Text/XML/HaXml/DtdToHaskell/TypeDef.o : src/Text/XML/HaXml/DtdToHaskell/TypeDef.hs +src/Text/XML/HaXml/DtdToHaskell/Convert.o : src/Text/XML/HaXml/DtdToHaskell/Convert.hs +src/Text/XML/HaXml/DtdToHaskell/Convert.o : src/Text/XML/HaXml/DtdToHaskell/TypeDef.hi +src/Text/XML/HaXml/DtdToHaskell/Instance.o : src/Text/XML/HaXml/DtdToHaskell/Instance.hs +src/Text/XML/HaXml/DtdToHaskell/Instance.o : src/Text/XML/HaXml/DtdToHaskell/TypeDef.hi +src/Text/XML/HaXml/OneOfN.o : src/Text/XML/HaXml/OneOfN.hs +src/Text/XML/HaXml/Wrappers.o : src/Text/XML/HaXml/Wrappers.hs +src/Text/XML/HaXml/Wrappers.o : src/Text/XML/HaXml/Pretty.hi +src/Text/XML/HaXml/Wrappers.o : src/Text/XML/HaXml/Html/Parse.hi +src/Text/XML/HaXml/Wrappers.o : src/Text/XML/HaXml/Parse.hi +src/Text/XML/HaXml/Wrappers.o : src/Text/XML/HaXml/Combinators.hi +src/Text/XML/HaXml/Xml2Haskell.o : src/Text/XML/HaXml/Xml2Haskell.hs +src/Text/XML/HaXml/Xml2Haskell.o : src/Text/XML/HaXml/Parse.hi +src/Text/XML/HaXml/Xml2Haskell.o : src/Text/XML/HaXml/Pretty.hi +src/Text/XML/HaXml/Validate.o : src/Text/XML/HaXml/Validate.hs +src/Text/XML/HaXml/Validate.o : src/Text/XML/HaXml/Xml2Haskell.hi +src/Text/XML/HaXml/Validate.o : src/Text/XML/HaXml/Combinators.hi +src/Text/XML/HaXml/Haskell2Xml.o : src/Text/XML/HaXml/Haskell2Xml.hs +src/Text/XML/HaXml/Haskell2Xml.o : src/Text/XML/HaXml/Pretty.hi +src/Text/XML/HaXml/Haskell2Xml.o : src/Text/XML/HaXml/Parse.hi +src/Text/XML/HaXml/Verbatim.o : src/Text/XML/HaXml/Verbatim.hs +src/Text/XML/HaXml/Escape.o : src/Text/XML/HaXml/Escape.hs +src/Text/XML/HaXml/Types.o : src/Text/XML/HaXml/Types.hs +src/Text/XML/HaXml.o : src/Text/XML/HaXml.hs +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Escape.hi +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Verbatim.hi +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Wrappers.hi +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Validate.hi +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Html/Parse.hi +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Html/Generate.hi +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Pretty.hi +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Parse.hi +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Combinators.hi +src/Text/XML/HaXml.o : src/Text/XML/HaXml/Types.hi +src/Text/ParserCombinators/HuttonMeijerWallace.o : src/Text/ParserCombinators/HuttonMeijerWallace.hs +src/Text/PrettyPrint/HughesPJ.o : src/Text/PrettyPrint/HughesPJ.hs +src/tools/Canonicalise.o : src/tools/Canonicalise.hs +src/tools/Canonicalise.o : src/Text/PrettyPrint/HughesPJ.hi +src/tools/Canonicalise.o : src/Text/XML/HaXml/Wrappers.hi +src/tools/Canonicalise.o : src/Text/XML/HaXml/Pretty.hi +src/tools/Canonicalise.o : src/Text/XML/HaXml/Html/Parse.hi +src/tools/Canonicalise.o : src/Text/XML/HaXml/Parse.hi +src/tools/Xtract.o : src/tools/Xtract.hs +src/tools/Xtract.o : src/Text/XML/HaXml/Html/Generate.hi +src/tools/Xtract.o : src/Text/XML/HaXml/Pretty.hi +src/tools/Xtract.o : src/Text/PrettyPrint/HughesPJ.hi +src/tools/Xtract.o : src/Text/XML/HaXml/Xtract/Parse.hi +src/tools/Xtract.o : src/Text/XML/HaXml/Html/Parse.hi +src/tools/Xtract.o : src/Text/XML/HaXml/Parse.hi +src/tools/Xtract.o : src/Text/XML/HaXml/Types.hi +src/tools/Validate.o : src/tools/Validate.hs +src/tools/Validate.o : src/Text/XML/HaXml/Wrappers.hi +src/tools/Validate.o : src/Text/XML/HaXml/Validate.hi +src/tools/Validate.o : src/Text/XML/HaXml/Parse.hi +src/tools/Validate.o : src/Text/XML/HaXml/Types.hi +src/tools/MkOneOf.o : src/tools/MkOneOf.hs +src/tools/DtdToHaskell.o : src/tools/DtdToHaskell.hs +src/tools/DtdToHaskell.o : src/Text/PrettyPrint/HughesPJ.hi +src/tools/DtdToHaskell.o : src/Text/XML/HaXml/DtdToHaskell/Instance.hi +src/tools/DtdToHaskell.o : src/Text/XML/HaXml/DtdToHaskell/Convert.hi +src/tools/DtdToHaskell.o : src/Text/XML/HaXml/DtdToHaskell/TypeDef.hi +src/tools/DtdToHaskell.o : src/Text/XML/HaXml/Parse.hi +src/tools/DtdToHaskell.o : src/Text/XML/HaXml/Types.hi +src/tools/DtdToHaskell.o : src/Text/XML/HaXml/Wrappers.hi +# DO NOT DELETE: End of Haskell dependencies addfile ./dependencies/HaXml-1.2/README hunk ./dependencies/HaXml-1.2/README 1 + HaXml - Haskell utilities for processing XML + -------------------------------------------- + +Installation instructions: +We currently support nhc98, ghc, and Hugs. The automatic configuration +detects which compilers/interpreters you have, and prepares a build +tree for each. Installation requires write-permission on the system +directories of the compiler/interpreter - the libraries and interfaces +can then be used as "-package HaXml" (for ghc/nhc98 - no extra options +required for Hugs). The standalone tools are installed to a directory of +your choice. + + ./configure + make + make install + +Options to configure are: + --buildwith=... e.g. ghc-6.2, to build for a specific compiler + --prefix=... e.g. /usr/local/bin, installation location for HaXml tools + +Complaints to: :-) + Malcolm.Wallace@cs.york.ac.uk + +P.S. + For those building on Windows /without/ Cygwin, you can avoid the need + for configure/make steps by simply running the minimal build script in + Build.bat + You will need to edit it for the location of your compiler etc. + +---- +What this package contains: + + docs/ Some rudimentary HTML documentation about the libraries. + docs/HaXml/ Haddock-generated API documentation. + examples/ Some small examples of how the libraries/tools are used. + + src/Text/XML/HaXml/ Numerous support modules for processing XML. + (The main APIs are as follows:) + Types.hs Defines a (generic) representation for any XML document. + Parse.hs Parses an XML document into the generic representation. + Pretty.hs Pretty-prints an XML document. + Validate.hs Validates an XML document against a DTD. + Combinators.hs Provides the combinators described in the ICFP'99 paper + together with some other useful functions. + Wrappers.hs Simple top-level wrappers for processing a single + document using the combinators. + Haskell2Xml.hs A replacement class for Show/Read, to dump Haskell + values as XML documents. Use in conjunction with DrIFT. + Xml2Haskell.hs A support class for XML DTDs which have been translated + to Haskell types by tools/DtdToHaskell. + OneOfN.hs Some support types (OneOf2 - OneOf20) for code + generated by tools/DtdToHaskell. + + src/Text/XML/HaXml/Html Extra support modules for processing HTML. + Parse.hs An error-correcting HTML parser, produces the generic + XML representation. + Pretty.hs An HTML-specific pretty-printer. + Generate.hs Some useful combinators for generating HTML content. + + src/tools/ Standalone tools based on the library above. + DtdToHaskell Translates an XML doc containing a DTD into a Haskell + module containing data/newtype definitions. + Xtract A structured 'grep' for XML docs, loosely based on + the XPath and XQL query languages. + Validate A simple validation tool for XML docs. Give it a DTD + file and an XML file, and it reports all validation + errors it can find. + Canonicalise A 'cat' filter for XML docs, shows our "standard" + parsing and pretty-printing behaviour. + MkOneOf Generates a OneOfN type, given an N, together with + its required instance of XmlContent. Sometimes types + larger than OneOf20 are required in code generated by + DtdToHaskell. + + src/Text/XML/HaXml/Xtract Internal APIs of the Xtract tool. + Parse.hs Parse an XPath query to produce a filter. + Combinators.hs Modified version of the standard combinators. + + src/Text/XML/HaXml/DtdToHaskell Internal APIs of the DtdToHaskell tool. + TypeDef.hs A representation of the Haskell types corresponding + to an XML DTD, and a pretty printer for them. + Convert.hs Convert the standard DTD representation to the + Haskell-like TypeDef representation. + Instance.hs Generate appropriate Xml2Haskell class instances for + the TypeDefs. + +---- addfile ./dependencies/HaXml-1.2/Setup.lhs hunk ./dependencies/HaXml-1.2/Setup.lhs 1 +#!/usr/local/bin/runghc + +> module Main where + +> import Distribution.Simple + +> main :: IO () +> main = defaultMain addfile ./dependencies/HaXml-1.2/docs/Combinators.html hunk ./dependencies/HaXml-1.2/docs/Combinators.html 1 + + + + + HaXml: Haskell and XML + + + + + +
+

Combinators

+
+
+ +

+Text.XML.HaXml.Combinators is a combinator library +for generating, editing, and transforming XML documents in +a generic setting. Text.XML.HaXml.Html.Generate is a +small library of functions specifically for generating HTML +from XML. Text.XML.HaXml.Wrappers contains the wrapper +processXmlWith, in which input files are parsed as HTML if +the filename ends in .html or .htm - otherwise they are parsed as XML. + +

+Usage: import Text.XML.HaXml.Combinators
+ +

+Limitations
+Note that the combinator library defines the functions elm and +txt rather than the expected (elem +and text), to avoid a nasty name clash with a Prelude function. + +


+ + + addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.ParserCombinators.HuttonMeijerWallace.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.ParserCombinators.HuttonMeijerWallace.html 1 + + +Text.ParserCombinators.HuttonMeijerWallace
 HaXmlParentContentsIndex
Text.ParserCombinators.HuttonMeijerWallace
Contents
The parser monad
Primitive parser combinators
Derived combinators
Error handling
State handling
Re-parsing
Description
This library of monadic parser combinators is based on the ones + defined by Graham Hutton and Erik Meijer. It has been extended by + Malcolm Wallace to use an abstract token type (no longer just a + string) as input, and to incorporate a State Transformer monad, useful + for symbol tables, macros, and so on. Basic facilities for error + reporting have also been added, and later extended by Graham Klyne + to return the errors through an Either type, rather than just + calling error.
Synopsis
data Parser s t e a = P (s -> [Either e t] -> ParseResult s t e a)
item :: Parser s t e t
eof :: (Show p) => Parser s (p, t) String ()
papply :: Parser s t String a -> s -> [Either String t] -> [(a, s, [Either String t])]
papply' :: Parser s t e a -> s -> [Either e t] -> Either e [(a, s, [Either e t])]
(+++) :: Parser s t e a -> Parser s t e a -> Parser s t e a
tok :: (Eq t) => t -> Parser s (p, t) e t
nottok :: (Eq t) => [t] -> Parser s (p, t) e t
many :: Parser s t e a -> Parser s t e [a]
many1 :: Parser s t e a -> Parser s t e [a]
sepby :: Parser s t e a -> Parser s t e b -> Parser s t e [a]
sepby1 :: Parser s t e a -> Parser s t e b -> Parser s t e [a]
chainl :: Parser s t e a -> Parser s t e (a -> a -> a) -> a -> Parser s t e a
chainl1 :: Parser s t e a -> Parser s t e (a -> a -> a) -> Parser s t e a
chainr :: Parser s t e a -> Parser s t e (a -> a -> a) -> a -> Parser s t e a
chainr1 :: Parser s t e a -> Parser s t e (a -> a -> a) -> Parser s t e a
ops :: [(Parser s t e a, b)] -> Parser s t e b
bracket :: (Show p, Show t) => Parser s (p, t) e a -> Parser s (p, t) e b -> Parser s (p, t) e c -> Parser s (p, t) e b
toEOF :: (Show p) => Parser s (p, t) String a -> Parser s (p, t) String a
elserror :: (Show p, Show t) => Parser s (p, t) String a -> String -> Parser s (p, t) String a
stupd :: (s -> s) -> Parser s t e ()
stquery :: (s -> a) -> Parser s t e a
stget :: Parser s t e s
reparse :: [Either e t] -> Parser s t e ()
The parser monad
data Parser s t e a
Constructors
P (s -> [Either e t] -> ParseResult s t e a) The parser type is parametrised on the types of the state s, + the input tokens t, error-type e, and the result value a. + The state and remaining input are threaded through the monad.
Instances
Functor (Parser s t e)
Monad (Parser s t e)
MonadPlus (Parser s t e)
Primitive parser combinators
item :: Parser s t e t
Deliver the first remaining token.
eof :: (Show p) => Parser s (p, t) String ()
Fail if end of input is not reached
papply :: Parser s t String a -> s -> [Either String t] -> [(a, s, [Either String t])]
Apply the parser to some real input, given an initial state value. + If the parser fails, raise error to halt the program. + (This is the original exported behaviour - to allow the caller to + deal with the error differently, see papply'.)
papply' :: Parser s t e a -> s -> [Either e t] -> Either e [(a, s, [Either e t])]
Apply the parser to some real input, given an initial state value. + If the parser fails, return a diagnostic message to the caller.
Derived combinators
(+++) :: Parser s t e a -> Parser s t e a -> Parser s t e a
A choice between parsers. Keep only the first success.
tok :: (Eq t) => t -> Parser s (p, t) e t
Deliver the first token if it equals the argument.
nottok :: (Eq t) => [t] -> Parser s (p, t) e t
Deliver the first token if it does not equal the argument.
many :: Parser s t e a -> Parser s t e [a]
Deliver zero or more values of a.
many1 :: Parser s t e a -> Parser s t e [a]
Deliver one or more values of a.
sepby :: Parser s t e a -> Parser s t e b -> Parser s t e [a]
Deliver zero or more values of a separated by b's.
sepby1 :: Parser s t e a -> Parser s t e b -> Parser s t e [a]
Deliver one or more values of a separated by b's.
chainl :: Parser s t e a -> Parser s t e (a -> a -> a) -> a -> Parser s t e a
chainl1 :: Parser s t e a -> Parser s t e (a -> a -> a) -> Parser s t e a
chainr :: Parser s t e a -> Parser s t e (a -> a -> a) -> a -> Parser s t e a
chainr1 :: Parser s t e a -> Parser s t e (a -> a -> a) -> Parser s t e a
ops :: [(Parser s t e a, b)] -> Parser s t e b
bracket :: (Show p, Show t) => Parser s (p, t) e a -> Parser s (p, t) e b -> Parser s (p, t) e c -> Parser s (p, t) e b
toEOF :: (Show p) => Parser s (p, t) String a -> Parser s (p, t) String a
Accept a complete parse of the input only, no partial parses.
Error handling
elserror :: (Show p, Show t) => Parser s (p, t) String a -> String -> Parser s (p, t) String a
If the parser fails, generate an error message.
State handling
stupd :: (s -> s) -> Parser s t e ()
Update the internal state.
stquery :: (s -> a) -> Parser s t e a
Query the internal state.
stget :: Parser s t e s
Deliver the entire internal state.
Re-parsing
reparse :: [Either e t] -> Parser s t e ()
This is useful for recursively expanding macros. When the + user-parser recognises a macro use, it can lookup the macro + expansion from the parse state, lex it, and then stuff the + lexed expansion back down into the parser.
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.PrettyPrint.HughesPJ.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.PrettyPrint.HughesPJ.html 1 + + +Text.PrettyPrint.HughesPJ
 HaXmlParentContentsIndex
Text.PrettyPrint.HughesPJ
data Doc
Instances
Show Doc
data Mode
Constructors
PageMode
ZigZagMode
LeftMode
OneLineMode
data TextDetails
Constructors
Chr Char
Str String
PStr String
empty :: Doc
nest :: Int -> Doc -> Doc
text :: String -> Doc
char :: Char -> Doc
int :: Int -> Doc
integer :: Integer -> Doc
float :: Float -> Doc
double :: Double -> Doc
rational :: Rational -> Doc
parens :: Doc -> Doc
brackets :: Doc -> Doc
braces :: Doc -> Doc
quotes :: Doc -> Doc
doubleQuotes :: Doc -> Doc
semi :: Doc
comma :: Doc
colon :: Doc
space :: Doc
equals :: Doc
lparen :: Doc
rparen :: Doc
lbrack :: Doc
rbrack :: Doc
lbrace :: Doc
rbrace :: Doc
(<>) :: Doc -> Doc -> Doc
(<+>) :: Doc -> Doc -> Doc
hcat :: [Doc] -> Doc
hsep :: [Doc] -> Doc
($$) :: Doc -> Doc -> Doc
vcat :: [Doc] -> Doc
sep :: [Doc] -> Doc
cat :: [Doc] -> Doc
fsep :: [Doc] -> Doc
fcat :: [Doc] -> Doc
hang :: Doc -> Int -> Doc -> Doc
punctuate :: Doc -> [Doc] -> [Doc]
render :: Doc -> String
fullRender :: Mode -> Int -> Float -> (TextDetails -> a -> a) -> a -> Doc -> a
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Combinators.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Combinators.html 1 + + +Text.XML.HaXml.Combinators
 HaXmlParentContentsIndex
Text.XML.HaXml.Combinators
Contents
The content filter type.
Simple filters.
Selection filters.
Predicate filters.
Search filters.
Filter combinators
Basic combinators.
Recursive search.
Interior editing.
Constructive filters.
C-like conditionals.
Filters with labelled results.
Using and combining labelled filters.
Some label-generating filters.
Description

This module defines the notion of filters and filter combinators + for processing XML documents.

These XML transformation combinators are described in the paper + ``Haskell and XML: Generic Combinators or Type-Based Translation?'' + Malcolm Wallace and Colin Runciman, Proceedings ICFP'99.

Synopsis
type CFilter = Content -> [Content]
keep :: a -> [a]
none :: a -> [a]
children :: CFilter
position :: Int -> CFilter -> CFilter
elm :: CFilter
txt :: CFilter
tag :: String -> CFilter
attr :: Name -> CFilter
attrval :: Attribute -> CFilter
tagWith :: (String -> Bool) -> CFilter
find :: String -> (String -> CFilter) -> CFilter
iffind :: String -> (String -> CFilter) -> CFilter -> CFilter
ifTxt :: (String -> CFilter) -> CFilter -> CFilter
o :: CFilter -> CFilter -> CFilter
union :: (a -> [b]) -> (a -> [b]) -> a -> [b]
cat :: [a -> [b]] -> a -> [b]
andThen :: (a -> c) -> (c -> a -> b) -> a -> b
(|>|) :: (a -> [b]) -> (a -> [b]) -> a -> [b]
with :: CFilter -> CFilter -> CFilter
without :: CFilter -> CFilter -> CFilter
(/>) :: CFilter -> CFilter -> CFilter
(</) :: CFilter -> CFilter -> CFilter
et :: (String -> CFilter) -> CFilter -> CFilter
path :: [CFilter] -> CFilter
deep :: CFilter -> CFilter
deepest :: CFilter -> CFilter
multi :: CFilter -> CFilter
when :: CFilter -> CFilter -> CFilter
guards :: CFilter -> CFilter -> CFilter
chip :: CFilter -> CFilter
foldXml :: CFilter -> CFilter
mkElem :: String -> [CFilter] -> CFilter
mkElemAttr :: String -> [(String, CFilter)] -> [CFilter] -> CFilter
literal :: String -> CFilter
cdata :: String -> CFilter
replaceTag :: String -> CFilter
replaceAttrs :: [(String, String)] -> CFilter
data ThenElse a = (:>) a a
(?>) :: (a -> [b]) -> ThenElse (a -> [b]) -> a -> [b]
type LabelFilter a = Content -> [(a, Content)]
oo :: (a -> CFilter) -> LabelFilter a -> CFilter
x :: (CFilter -> LabelFilter a) -> (CFilter -> LabelFilter b) -> CFilter -> LabelFilter (a, b)
numbered :: CFilter -> LabelFilter String
interspersed :: String -> CFilter -> String -> LabelFilter String
tagged :: CFilter -> LabelFilter String
attributed :: String -> CFilter -> LabelFilter String
textlabelled :: CFilter -> LabelFilter (Maybe String)
extracted :: (Content -> a) -> CFilter -> LabelFilter a
The content filter type.
type CFilter = Content -> [Content]
All document transformations are content filters. + A filter takes a single XML Content value and returns a sequence + of Content values, possibly empty.
Simple filters.
Selection filters.
In the algebra of combinators, none is the zero, and keep the identity. + (They have a more general type than just CFilter.)
keep :: a -> [a]
none :: a -> [a]
children :: CFilter
Throw away current node, keep just the (unprocessed) children.
position :: Int -> CFilter -> CFilter
Select the n'th positional result of a filter.
Predicate filters.
These filters either keep or throw away some content based on + a simple test. For instance, elm keeps only a tagged element, + txt keeps only non-element text, tag keeps only an element + with the named tag, attr keeps only an element with the named + attribute, attrval keeps only an element with the given + attribute value, tagWith keeps only an element whose tag name + satisfies the given predicate.
elm :: CFilter
txt :: CFilter
tag :: String -> CFilter
attr :: Name -> CFilter
attrval :: Attribute -> CFilter
tagWith :: (String -> Bool) -> CFilter
Search filters.
find :: String -> (String -> CFilter) -> CFilter
For a mandatory attribute field, find key cont looks up the value of + the attribute name key, and applies the continuation cont to + the value.
iffind :: String -> (String -> CFilter) -> CFilter -> CFilter
When an attribute field may be absent, use iffind key yes no to lookup + its value. If the attribute is absent, it acts as the no filter, + otherwise it applies the yes filter.
ifTxt :: (String -> CFilter) -> CFilter -> CFilter
ifTxt yes no processes any textual content with the yes filter, + but otherwise is the same as the no filter.
Filter combinators
Basic combinators.
o :: CFilter -> CFilter -> CFilter
Sequential (Irish,backwards) composition
union :: (a -> [b]) -> (a -> [b]) -> a -> [b]
Binary parallel composition. Each filter uses a copy of the input, + rather than one filter using the result of the other. + (Has a more general type than just CFilter.)
cat :: [a -> [b]] -> a -> [b]
Glue a list of filters together. (A list version of union; + also has a more general type than just CFilter.)
andThen :: (a -> c) -> (c -> a -> b) -> a -> b
A special form of filter composition where the second filter + works over the same data as the first, but also uses the + first's result.
(|>|) :: (a -> [b]) -> (a -> [b]) -> a -> [b]
Directional choice: + in f |>| g give g-productions only if no f-productions
with :: CFilter -> CFilter -> CFilter
Pruning: in f with g, + keep only those f-productions which have at least one g-production
without :: CFilter -> CFilter -> CFilter
Pruning: in f without g, + keep only those f-productions which have no g-productions
(/>) :: CFilter -> CFilter -> CFilter
Pronounced slash, f /> g means g inside f
(</) :: CFilter -> CFilter -> CFilter
Pronounced outside, f </ g means f containing g
et :: (String -> CFilter) -> CFilter -> CFilter
Join an element-matching filter with a text-only filter
path :: [CFilter] -> CFilter
Express a list of filters like an XPath query, e.g. + path [children, tag "name1", attr "attr1", children, tag "name2"] + is like the XPath query /name1[@attr1]/name2.
Recursive search.
Recursive search has three variants: deep does a breadth-first + search of the tree, deepest does a depth-first search, multi returns + content at all tree-levels, even those strictly contained within results + that have already been returned.
deep :: CFilter -> CFilter
deepest :: CFilter -> CFilter
multi :: CFilter -> CFilter
Interior editing.
when :: CFilter -> CFilter -> CFilter
Interior editing: + f when g applies f only when the predicate g succeeds, + otherwise the content is unchanged.
guards :: CFilter -> CFilter -> CFilter
Interior editing: + g guards f applies f only when the predicate g succeeds, + otherwise the content is discarded.
chip :: CFilter -> CFilter
Process CHildren In Place. The filter is applied to any children + of an element content, and the element rebuilt around the results.
foldXml :: CFilter -> CFilter
Recursive application of filters: a fold-like operator. Defined + as f o chip (foldXml f).
Constructive filters.
mkElem :: String -> [CFilter] -> CFilter
Build an element with the given tag name - its content is the results + of the given list of filters.
mkElemAttr :: String -> [(String, CFilter)] -> [CFilter] -> CFilter
Build an element with the given name, attributes, and content.
literal :: String -> CFilter
Build some textual content.
cdata :: String -> CFilter
Build some CDATA content.
replaceTag :: String -> CFilter
Rename an element tag.
replaceAttrs :: [(String, String)] -> CFilter
Replace the attributes of an element.
C-like conditionals.

These definitions provide C-like conditionals, lifted to the filter level.

The (cond ? yes : no) style in C becomes (cond ?> yes :> no) in Haskell.

data ThenElse a
Conjoin the two branches of a conditional.
Constructors
(:>) a a
(?>) :: (a -> [b]) -> ThenElse (a -> [b]) -> a -> [b]
Select between the two branches of a joined conditional.
Filters with labelled results.
type LabelFilter a = Content -> [(a, Content)]
A LabelFilter is like a CFilter except that it pairs up a polymorphic + value (label) with each of its results.
Using and combining labelled filters.
oo :: (a -> CFilter) -> LabelFilter a -> CFilter
Compose a label-processing filter with a label-generating filter.
x :: (CFilter -> LabelFilter a) -> (CFilter -> LabelFilter b) -> CFilter -> LabelFilter (a, b)
Combine labels. Think of this as a pair-wise zip on labels.
Some label-generating filters.
numbered :: CFilter -> LabelFilter String
Number the results from 1 upwards.
interspersed :: String -> CFilter -> String -> LabelFilter String
In interspersed a f b, label each result of f with the string a, + except for the last one which is labelled with the string b.
tagged :: CFilter -> LabelFilter String
Label each element in the result with its tag name. Non-element + results get an empty string label.
attributed :: String -> CFilter -> LabelFilter String
Label each element in the result with the value of the named attribute. + Elements without the attribute, and non-element results, get an + empty string label.
textlabelled :: CFilter -> LabelFilter (Maybe String)
Label each textual part of the result with its text. Element + results get an empty string label.
extracted :: (Content -> a) -> CFilter -> LabelFilter a
Label each content with some information extracted from itself.
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.DtdToHaskell.Convert.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.DtdToHaskell.Convert.html 1 + + +Text.XML.HaXml.DtdToHaskell.Convert
 HaXmlParentContentsIndex
Text.XML.HaXml.DtdToHaskell.Convert
Description
This module performs the translation of a parsed XML DTD into the + internal representation of corresponding Haskell data/newtypes.
dtd2TypeDef :: [MarkupDecl] -> [TypeDef]
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.DtdToHaskell.Instance.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.DtdToHaskell.Instance.html 1 + + +Text.XML.HaXml.DtdToHaskell.Instance
 HaXmlParentContentsIndex
Text.XML.HaXml.DtdToHaskell.Instance
Synopsis
mkInstance :: TypeDef -> Doc
Documentation
mkInstance :: TypeDef -> Doc
Convert typedef to appropriate instance declaration, either XmlContent, + XmlAttributes, or XmlAttrType.
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.DtdToHaskell.TypeDef.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.DtdToHaskell.TypeDef.html 1 + + +Text.XML.HaXml.DtdToHaskell.TypeDef
 HaXmlParentContentsIndex
Text.XML.HaXml.DtdToHaskell.TypeDef
Contents
Internal representation of types
Pretty-print a TypeDef
Name mangling
Description
Defines an internal representation of Haskell data/newtype definitions + that correspond to the XML DTD types, and provides pretty-printers to + convert these types into the Doc type of Text.PrettyPrint.HughesPJ.
Synopsis
data TypeDef
= DataDef Bool Name AttrFields Constructors
| EnumDef Name [Name]
type Constructors = [(Name, [StructType])]
type AttrFields = [(Name, StructType)]
data StructType
= Maybe StructType
| Defaultable StructType String
| List StructType
| List1 StructType
| Tuple [StructType]
| OneOf [StructType]
| Any
| String
| Defined Name
ppTypeDef :: TypeDef -> Doc
ppHName :: Name -> Doc
ppXName :: Name -> Doc
ppAName :: Name -> Doc
data Name = Name {
xName :: String
hName :: String
}
name :: String -> Name
name_ :: String -> Name
name_a :: String -> String -> Name
name_ac :: String -> String -> String -> Name
name_f :: String -> String -> Name
mangle :: String -> String
manglef :: String -> String
Internal representation of types
data TypeDef
Constructors
DataDef Bool Name AttrFields Constructors Bool for main/aux.
EnumDef Name [Name]
type Constructors = [(Name, [StructType])]
type AttrFields = [(Name, StructType)]
data StructType
Constructors
Maybe StructType
Defaultable StructType String String holds default value.
List StructType
List1 StructType Non-empty lists.
Tuple [StructType]
OneOf [StructType]
Any XML's contentspec allows ANY
String
Defined Name
Instances
Show StructType
Pretty-print a TypeDef
ppTypeDef :: TypeDef -> Doc
ppHName :: Name -> Doc
Pretty print Haskell name.
ppXName :: Name -> Doc
Pretty print XML name.
ppAName :: Name -> Doc
Pretty print Haskell attributes name.
Name mangling
data Name
Need to keep both the XML and Haskell versions of a name.
Constructors
Name
xName :: String original XML name
hName :: String mangled Haskell name
name :: String -> Name
Make a name valid in both XML and Haskell.
name_ :: String -> Name
Append an underscore to the Haskell version of the name.
name_a :: String -> String -> Name
Prefix an attribute enumeration type name with its containing element + name.
name_ac :: String -> String -> String -> Name
Prefix an attribute enumeration constructor with its element-tag name, + and its enumeration type name.
name_f :: String -> String -> Name
Prefix a field name with its enclosing element name.
mangle :: String -> String
Convert an XML name to a Haskell conid.
manglef :: String -> String
Convert an XML name to a Haskell varid.
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Escape.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Escape.html 1 + + +Text.XML.HaXml.Escape
 HaXmlParentContentsIndex
Text.XML.HaXml.Escape
xmlEscape :: XmlEscaper -> Element -> Element
xmlUnEscape :: XmlEscaper -> Element -> Element
data XmlEscaper
stdXmlEscaper :: XmlEscaper
mkXmlEscaper :: [(Char, String)] -> (Char -> Bool) -> XmlEscaper
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Haskell2Xml.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Haskell2Xml.html 1 + + +Text.XML.HaXml.Haskell2Xml
 HaXmlParentContentsIndex
Text.XML.HaXml.Haskell2Xml
Contents
Re-export the entire set of XML type definitions
The class Haskell2Xml
Conversion functions
IO conversion functions
Auxiliary types
Description

The class Haskell2Xml is a replacement for Read and Show: it provides + textual conversions (to and from an XML representation) for your + Haskell data values. Use the tool + DrIFT to derive this class for your own datatypes, then + include this module where you want to use the facilities.

The methods toContents and fromContents convert a value to and from + a generic internal representation of an XML document without a DTD. + The functions toXml and fromXml convert a value to and from a generic + internal representation of an XML document including a DTD. + The functions readXml and showXml convert to and from Strings. + The functions fReadXml and fWriteXml do the conversion to and from + the given filenames. + The functions hGetXml and hPutXml do the conversion to and from + the given file handles. + (See the type signatures.)

Synopsis
module Text.XML.HaXml.Types
class Haskell2Xml a where
xFromChar :: Char -> a
xToChar :: a -> Char
fromContents :: [Content] -> (a, [Content])
toContents :: a -> [Content]
toHType :: a -> HType
toXml :: (Haskell2Xml a) => a -> Document
toDTD :: HType -> DocTypeDecl
fromXml :: (Haskell2Xml a) => Document -> a
readXml :: (Haskell2Xml a) => String -> Maybe a
showXml :: (Haskell2Xml a) => a -> String
fReadXml :: (Haskell2Xml a) => FilePath -> IO a
fWriteXml :: (Haskell2Xml a) => FilePath -> a -> IO ()
hGetXml :: (Haskell2Xml a) => Handle -> IO a
hPutXml :: (Haskell2Xml a) => Handle -> a -> IO ()
data HType
= Maybe HType
| List HType
| Tuple [HType]
| Prim String String
| String
| Defined String [HType] [Constr]
data Constr = Constr String [HType] [HType]
Re-export the entire set of XML type definitions
module Text.XML.HaXml.Types
The class Haskell2Xml
class Haskell2Xml a where
A class to convert any Haskell value to and from an XML representation.
Methods
xFromChar :: Char -> a
xToChar :: a -> Char
fromContents :: [Content] -> (a, [Content])
This function is a dummy for most types: it is used only in + the Char instance for coercing lists of Char into String.
toContents :: a -> [Content]
Parse a Haskell value from a generic XML representation, returning + the value and the remainder of the XML.
toHType :: a -> HType
Convert the Haskell value to a generic XML value.
Instances
Haskell2Xml Bool
Haskell2Xml Int
Haskell2Xml Integer
Haskell2Xml Float
Haskell2Xml Double
Haskell2Xml Char
(Haskell2Xml a) => Haskell2Xml [a]
(Haskell2Xml a, Haskell2Xml b) => Haskell2Xml (a, b)
(Haskell2Xml a) => Haskell2Xml (Maybe a)
(Haskell2Xml a, Haskell2Xml b) => Haskell2Xml (Either a b)
Haskell2Xml ()
Conversion functions
toXml :: (Haskell2Xml a) => a -> Document
Convert any Haskell value to an XML document, including both DTD and + content.
toDTD :: HType -> DocTypeDecl
toDTD converts a concrete representation of the Haskell type of + a value (obtained by the method toHType) into a real DocTypeDecl. + It ensures that PERefs are defined before they are used, and that no + element or attribute-list is declared more than once.
fromXml :: (Haskell2Xml a) => Document -> a
Read a Haskell value from an XML document, ignoring the DTD and + using the Haskell result type to determine how to parse it.
readXml :: (Haskell2Xml a) => String -> Maybe a
Convert an XML document encoded as a String, into a Haskell value.
showXml :: (Haskell2Xml a) => a -> String
Convert a Haskell value to an XML document, encoded as a String.
IO conversion functions
fReadXml :: (Haskell2Xml a) => FilePath -> IO a
Read a Haskell value from an XML document stored in a file.
fWriteXml :: (Haskell2Xml a) => FilePath -> a -> IO ()
Write a Haskell value to the given file as an XML document.
hGetXml :: (Haskell2Xml a) => Handle -> IO a
Read a Haskell value from an XML document transmitted through the + given Handle.
hPutXml :: (Haskell2Xml a) => Handle -> a -> IO ()
Write a Haskell value to the given Handle as an XML document.
Auxiliary types
data HType
A concrete representation of any Haskell type.
Constructors
Maybe HType
List HType
Tuple [HType]
Prim String String separate Haskell name and Xml name
String
Defined String [HType] [Constr] A user-defined type has a name, a sequence of type variables, + and a set of constructors.
Instances
Eq HType
data Constr
A concrete representation of any user-defined Haskell constructor. + The constructor has a name, and a sequence of component types. The + first sequence of types represents the minimum set of free type + variables occurring in the (second) list of real component types.
Constructors
Constr String [HType] [HType]
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Html.Generate.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Html.Generate.html 1 + + +Text.XML.HaXml.Html.Generate
 HaXmlParentContentsIndex
Text.XML.HaXml.Html.Generate
Contents
HTML construction filters
Containers
Anchors
Text style
Tables
Breaks, lines
Attributes
A simple HTML pretty-printer
Description
These are just some common abbreviations for generating HTML + content within the XML transformation framework defined + by Text.Xml.HaXml.Combinators.
Synopsis
html :: [CFilter] -> CFilter
hhead :: [CFilter] -> CFilter
htitle :: [CFilter] -> CFilter
hbody :: [CFilter] -> CFilter
h1 :: [CFilter] -> CFilter
h2 :: [CFilter] -> CFilter
h3 :: [CFilter] -> CFilter
h4 :: [CFilter] -> CFilter
hpara :: [CFilter] -> CFilter
hdiv :: [CFilter] -> CFilter
hspan :: [CFilter] -> CFilter
margin :: [CFilter] -> CFilter
anchor :: [(String, CFilter)] -> [CFilter] -> CFilter
makehref :: CFilter -> [CFilter] -> CFilter
anchorname :: CFilter -> [CFilter] -> CFilter
hpre :: [CFilter] -> CFilter
hcentre :: [CFilter] -> CFilter
hem :: [CFilter] -> CFilter
htt :: [CFilter] -> CFilter
hbold :: [CFilter] -> CFilter
parens :: CFilter -> CFilter
bullet :: [CFilter] -> CFilter
htable :: [CFilter] -> CFilter
hrow :: [CFilter] -> CFilter
hcol :: [CFilter] -> CFilter
hbr :: CFilter
hhr :: CFilter
showattr :: String -> CFilter
(!) :: String -> CFilter
(?) :: String -> CFilter
htmlprint :: [Content] -> Doc
HTML construction filters
Containers
html :: [CFilter] -> CFilter
hhead :: [CFilter] -> CFilter
htitle :: [CFilter] -> CFilter
hbody :: [CFilter] -> CFilter
h1 :: [CFilter] -> CFilter
h2 :: [CFilter] -> CFilter
h3 :: [CFilter] -> CFilter
h4 :: [CFilter] -> CFilter
hpara :: [CFilter] -> CFilter
hdiv :: [CFilter] -> CFilter
hspan :: [CFilter] -> CFilter
margin :: [CFilter] -> CFilter
Anchors
anchor :: [(String, CFilter)] -> [CFilter] -> CFilter
makehref :: CFilter -> [CFilter] -> CFilter
anchorname :: CFilter -> [CFilter] -> CFilter
Text style
hpre :: [CFilter] -> CFilter
hcentre :: [CFilter] -> CFilter
hem :: [CFilter] -> CFilter
htt :: [CFilter] -> CFilter
hbold :: [CFilter] -> CFilter
parens :: CFilter -> CFilter
bullet :: [CFilter] -> CFilter
Tables
htable :: [CFilter] -> CFilter
hrow :: [CFilter] -> CFilter
hcol :: [CFilter] -> CFilter
Breaks, lines
hbr :: CFilter
hhr :: CFilter
Attributes
showattr :: String -> CFilter
(!) :: String -> CFilter
(?) :: String -> CFilter
A simple HTML pretty-printer
htmlprint :: [Content] -> Doc
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Html.Parse.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Html.Parse.html 1 + + +Text.XML.HaXml.Html.Parse
 HaXmlParentContentsIndex
Text.XML.HaXml.Html.Parse
Description
This is a parser for HTML documents. Unlike for XML documents, it + must include a certain amount of error-correction to account for + HTML features like self-terminating tags, unterminated tags, and + incorrect nesting. The input is tokenised by the + XML lexer (a separate lexer is not required for HTML).
Synopsis
htmlParse :: String -> String -> Document
Documentation
htmlParse :: String -> String -> Document
The first argument is the name of the file, the second is the string + contents of the file. The result is the generic representation of + an XML document.
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Html.Pretty.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Html.Pretty.html 1 + + +Text.XML.HaXml.Html.Pretty
 HaXmlParentContentsIndex
Text.XML.HaXml.Html.Pretty
Description
This is a separate pretty-printer for HTML documents, recognising + some of the differences between HTML and true XML.
document :: Document -> Doc
element :: Element -> Doc
attribute :: Attribute -> Doc
content :: Content -> Doc
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Lex.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Lex.html 1 + + +Text.XML.HaXml.Lex
 HaXmlParentContentsIndex
Text.XML.HaXml.Lex
Contents
Entry points to the lexer
Token and position types
Description

You don't normally need to use this Lex module directly - it is + called automatically by the parser. (This interface is only exposed + for debugging purposes.)

This is a hand-written lexer for tokenising the text of an XML + document so that it is ready for parsing. It attaches position + information in (line,column) format to every token. The main + entry point is xmlLex. A secondary entry point, xmlReLex, is + provided for when the parser needs to stuff a string back onto + the front of the text and re-tokenise it (typically when expanding + macros).

As one would expect, the lexer is essentially a small finite + state machine.

Synopsis
xmlLex :: String -> String -> [Token]
xmlReLex :: Posn -> String -> [Token]
posInNewCxt :: String -> Maybe Posn -> Posn
type Token = Either String (Posn, TokenT)
data Posn = Pn String !Int !Int (Maybe Posn)
data TokenT
= TokCommentOpen
| TokCommentClose
| TokPIOpen
| TokPIClose
| TokSectionOpen
| TokSectionClose
| TokSection Section
| TokSpecialOpen
| TokSpecial Special
| TokEndOpen
| TokEndClose
| TokAnyOpen
| TokAnyClose
| TokSqOpen
| TokSqClose
| TokEqual
| TokQuery
| TokStar
| TokPlus
| TokAmp
| TokSemi
| TokHash
| TokBraOpen
| TokBraClose
| TokPipe
| TokPercent
| TokComma
| TokQuote
| TokName String
| TokFreeText String
| TokNull
data Special
= DOCTYPEx
| ELEMENTx
| ATTLISTx
| ENTITYx
| NOTATIONx
data Section
= CDATAx
| INCLUDEx
| IGNOREx
Entry points to the lexer
xmlLex :: String -> String -> [Token]
The first argument to xmlLex is the filename (used for source positions, + especially in error messages), and the second is the string content of + the XML file.
xmlReLex :: Posn -> String -> [Token]
xmlReLex is used when the parser expands a macro (PE reference). + The expansion of the macro must be re-lexed as if for the first time.
posInNewCxt :: String -> Maybe Posn -> Posn
posInNewCxt name pos creates a new source position from an old one. + It is used when opening a new file (e.g. a DTD inclusion), to denote + the start of the file name, but retain the stacked information that + it was included from the old pos.
Token and position types
type Token = Either String (Posn, TokenT)
All tokens are paired up with a source position. + Lexical errors are passed back through the Either type.
data Posn
Source positions contain a filename, line, column, and an + inclusion point, which is itself another source position, + recursively.
Constructors
Pn String !Int !Int (Maybe Posn)
Instances
Show Posn
data TokenT
The basic token type.
Constructors
TokCommentOpen <!--
TokCommentClose -->
TokPIOpen <?
TokPIClose ?>
TokSectionOpen <![
TokSectionClose ]]>
TokSection Section CDATA INCLUDE IGNORE etc
TokSpecialOpen <!
TokSpecial Special DOCTYPE ELEMENT ATTLIST etc
TokEndOpen </
TokEndClose />
TokAnyOpen <
TokAnyClose >
TokSqOpen [
TokSqClose ]
TokEqual =
TokQuery ?
TokStar *
TokPlus +
TokAmp &
TokSemi ;
TokHash #
TokBraOpen (
TokBraClose )
TokPipe |
TokPercent %
TokComma ,
TokQuote '' or ""
TokName String begins with letter
TokFreeText String any character data
TokNull fake token
Instances
Show TokenT
data Special
Constructors
DOCTYPEx
ELEMENTx
ATTLISTx
ENTITYx
NOTATIONx
data Section
Constructors
CDATAx
INCLUDEx
IGNOREx
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.OneOfN.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.OneOfN.html 1 + + +Text.XML.HaXml.OneOfN
 HaXmlParentContentsIndex
Text.XML.HaXml.OneOfN
data OneOf2 a b
Constructors
OneOf2 a
TwoOf2 b
Instances
(XmlContent a, XmlContent b) => XmlContent (OneOf2 a b)
data OneOf3 a b c
Constructors
OneOf3 a
TwoOf3 b
ThreeOf3 c
Instances
(XmlContent a, XmlContent b, XmlContent c) => XmlContent (OneOf3 a b c)
data OneOf4 a b c d
Constructors
OneOf4 a
TwoOf4 b
ThreeOf4 c
FourOf4 d
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d) => XmlContent (OneOf4 a b c d)
data OneOf5 a b c d e
Constructors
OneOf5 a
TwoOf5 b
ThreeOf5 c
FourOf5 d
FiveOf5 e
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e) => XmlContent (OneOf5 a b c d e)
data OneOf6 a b c d e f
Constructors
OneOf6 a
TwoOf6 b
ThreeOf6 c
FourOf6 d
FiveOf6 e
SixOf6 f
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f) => XmlContent (OneOf6 a b c d e f)
data OneOf7 a b c d e f g
Constructors
OneOf7 a
TwoOf7 b
ThreeOf7 c
FourOf7 d
FiveOf7 e
SixOf7 f
SevenOf7 g
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g) => XmlContent (OneOf7 a b c d e f g)
data OneOf8 a b c d e f g h
Constructors
OneOf8 a
TwoOf8 b
ThreeOf8 c
FourOf8 d
FiveOf8 e
SixOf8 f
SevenOf8 g
EightOf8 h
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h) => XmlContent (OneOf8 a b c d e f g h)
data OneOf9 a b c d e f g h i
Constructors
OneOf9 a
TwoOf9 b
ThreeOf9 c
FourOf9 d
FiveOf9 e
SixOf9 f
SevenOf9 g
EightOf9 h
NineOf9 i
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i) => XmlContent (OneOf9 a b c d e f g h i)
data OneOf10 a b c d e f g h i j
Constructors
OneOf10 a
TwoOf10 b
ThreeOf10 c
FourOf10 d
FiveOf10 e
SixOf10 f
SevenOf10 g
EightOf10 h
NineOf10 i
TenOf10 j
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j) => XmlContent (OneOf10 a b c d e f g h i j)
data OneOf11 a b c d e f g h i j k
Constructors
OneOf11 a
TwoOf11 b
ThreeOf11 c
FourOf11 d
FiveOf11 e
SixOf11 f
SevenOf11 g
EightOf11 h
NineOf11 i
TenOf11 j
ElevenOf11 k
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k) => XmlContent (OneOf11 a b c d e f g h i j k)
data OneOf12 a b c d e f g h i j k l
Constructors
OneOf12 a
TwoOf12 b
ThreeOf12 c
FourOf12 d
FiveOf12 e
SixOf12 f
SevenOf12 g
EightOf12 h
NineOf12 i
TenOf12 j
ElevenOf12 k
TwelveOf12 l
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l) => XmlContent (OneOf12 a b c d e f g h i j k l)
data OneOf13 a b c d e f g h i j k l m
Constructors
OneOf13 a
TwoOf13 b
ThreeOf13 c
FourOf13 d
FiveOf13 e
SixOf13 f
SevenOf13 g
EightOf13 h
NineOf13 i
TenOf13 j
ElevenOf13 k
TwelveOf13 l
ThirteenOf13 m
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m) => XmlContent (OneOf13 a b c d e f g h i j k l m)
data OneOf14 a b c d e f g h i j k l m n
Constructors
OneOf14 a
TwoOf14 b
ThreeOf14 c
FourOf14 d
FiveOf14 e
SixOf14 f
SevenOf14 g
EightOf14 h
NineOf14 i
TenOf14 j
ElevenOf14 k
TwelveOf14 l
ThirteenOf14 m
FourteenOf14 n
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n) => XmlContent (OneOf14 a b c d e f g h i j k l m n)
data OneOf15 a b c d e f g h i j k l m n o
Constructors
OneOf15 a
TwoOf15 b
ThreeOf15 c
FourOf15 d
FiveOf15 e
SixOf15 f
SevenOf15 g
EightOf15 h
NineOf15 i
TenOf15 j
ElevenOf15 k
TwelveOf15 l
ThirteenOf15 m
FourteenOf15 n
FifteenOf15 o
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o) => XmlContent (OneOf15 a b c d e f g h i j k l m n o)
data OneOf16 a b c d e f g h i j k l m n o p
Constructors
OneOf16 a
TwoOf16 b
ThreeOf16 c
FourOf16 d
FiveOf16 e
SixOf16 f
SevenOf16 g
EightOf16 h
NineOf16 i
TenOf16 j
ElevenOf16 k
TwelveOf16 l
ThirteenOf16 m
FourteenOf16 n
FifteenOf16 o
SixteenOf16 p
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p) => XmlContent (OneOf16 a b c d e f g h i j k l m n o p)
data OneOf17 a b c d e f g h i j k l m n o p q
Constructors
OneOf17 a
TwoOf17 b
ThreeOf17 c
FourOf17 d
FiveOf17 e
SixOf17 f
SevenOf17 g
EightOf17 h
NineOf17 i
TenOf17 j
ElevenOf17 k
TwelveOf17 l
ThirteenOf17 m
FourteenOf17 n
FifteenOf17 o
SixteenOf17 p
SeventeenOf17 q
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p, XmlContent q) => XmlContent (OneOf17 a b c d e f g h i j k l m n o p q)
data OneOf18 a b c d e f g h i j k l m n o p q r
Constructors
OneOf18 a
TwoOf18 b
ThreeOf18 c
FourOf18 d
FiveOf18 e
SixOf18 f
SevenOf18 g
EightOf18 h
NineOf18 i
TenOf18 j
ElevenOf18 k
TwelveOf18 l
ThirteenOf18 m
FourteenOf18 n
FifteenOf18 o
SixteenOf18 p
SeventeenOf18 q
EighteenOf18 r
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p, XmlContent q, XmlContent r) => XmlContent (OneOf18 a b c d e f g h i j k l m n o p q r)
data OneOf19 a b c d e f g h i j k l m n o p q r s
Constructors
OneOf19 a
TwoOf19 b
ThreeOf19 c
FourOf19 d
FiveOf19 e
SixOf19 f
SevenOf19 g
EightOf19 h
NineOf19 i
TenOf19 j
ElevenOf19 k
TwelveOf19 l
ThirteenOf19 m
FourteenOf19 n
FifteenOf19 o
SixteenOf19 p
SeventeenOf19 q
EighteenOf19 r
NineteenOf19 s
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p, XmlContent q, XmlContent r, XmlContent s) => XmlContent (OneOf19 a b c d e f g h i j k l m n o p q r s)
data OneOf20 a b c d e f g h i j k l m n o p q r s t
Constructors
OneOf20 a
TwoOf20 b
ThreeOf20 c
FourOf20 d
FiveOf20 e
SixOf20 f
SevenOf20 g
EightOf20 h
NineOf20 i
TenOf20 j
ElevenOf20 k
TwelveOf20 l
ThirteenOf20 m
FourteenOf20 n
FifteenOf20 o
SixteenOf20 p
SeventeenOf20 q
EighteenOf20 r
NineteenOf20 s
TwentyOf20 t
Instances
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p, XmlContent q, XmlContent r, XmlContent s, XmlContent t) => XmlContent (OneOf20 a b c d e f g h i j k l m n o p q r s t)
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Parse.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Parse.html 1 + + +Text.XML.HaXml.Parse
 HaXmlParentContentsIndex
Text.XML.HaXml.Parse
Contents
Parse a whole document
Parse just a DTD
Description
A non-validating XML parser. For the input grammar, see + http://www.w3.org/TR/REC-xml.
Synopsis
xmlParse :: String -> String -> Document
xmlParse' :: String -> String -> Either String Document
dtdParse :: String -> String -> Maybe DocTypeDecl
dtdParse' :: String -> String -> Either String (Maybe DocTypeDecl)
Parse a whole document
xmlParse :: String -> String -> Document
To parse a whole document, xmlParse file content takes a filename + (for generating error reports) and the string content of that file. + A parse error causes program failure, with message to stderr.
xmlParse' :: String -> String -> Either String Document
To parse a whole document, xmlParse' file content takes a filename + (for generating error reports) and the string content of that file. + Any parse error message is passed back to the caller through the + Either type.
Parse just a DTD
dtdParse :: String -> String -> Maybe DocTypeDecl
To parse just a DTD, dtdParse file content takes a filename + (for generating error reports) and the string content of that + file. If no DTD was found, you get Nothing rather than an error. + However, if a DTD is found but contains errors, the program crashes.
dtdParse' :: String -> String -> Either String (Maybe DocTypeDecl)
To parse just a DTD, dtdParse' file content takes a filename + (for generating error reports) and the string content of that + file. If no DTD was found, you get Right Nothing. + If a DTD was found but contains errors, you get a Left message.
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Pretty.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Pretty.html 1 + + +Text.XML.HaXml.Pretty
 HaXmlParentContentsIndex
Text.XML.HaXml.Pretty
Contents
Pretty-print a whole document
Just one content
Just one tagged element
Pretty-print just a DTD
The prolog
A content particle description
Description
This is a pretty-printer for turning the internal representation + of generic structured XML documents into the Doc type (which can + later be rendered using Text.ParserCombinators.HughesPJ.render). + Essentially there is one pp function for each type in + Text.Xml.HaXml.Types, so you can pretty-print as much or as little + of the document as you wish.
Synopsis
document :: Document -> Doc
content :: Content -> Doc
element :: Element -> Doc
doctypedecl :: DocTypeDecl -> Doc
prolog :: Prolog -> Doc
cp :: CP -> Doc
Pretty-print a whole document
document :: Document -> Doc
Just one content
content :: Content -> Doc
Just one tagged element
element :: Element -> Doc
Pretty-print just a DTD
doctypedecl :: DocTypeDecl -> Doc
The prolog
prolog :: Prolog -> Doc
A content particle description
cp :: CP -> Doc
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Types.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Types.html 1 + + +Text.XML.HaXml.Types
 HaXmlParentContentsIndex
Text.XML.HaXml.Types
Contents
A simple symbol table mapping strings (references) to values.
Symbol table operations
XML Types
The top-level document container
The main document content
Administrative parts of the document
The DTD
content model
attribute model
conditional sections
References
Entities
Basic value types
Description

This module defines an internal (generic) representation for XML + documents including their DTDs.

History: + The original module was derived by hand from the XML specification, + following the grammar precisely. Then we simplified the types, + removing layers of indirection and redundancy, and generally making + things easier to work with. Then we allowed PEReferences to be + ubiquitous, by removing them from the types and resolving all + PE references at parse-time. Finally, we added a per-document + symbol table for GEReferences, and a whitespace-significance flag + for plaintext. +

Synopsis
type SymTab a = [(String, a)]
emptyST :: SymTab a
addST :: String -> a -> SymTab a -> SymTab a
lookupST :: String -> SymTab a -> Maybe a
data Document = Document Prolog (SymTab EntityDef) Element
data Element = Elem Name [Attribute] [Content]
data ElemTag = ElemTag Name [Attribute]
data Content
= CElem Element
| CString Bool CharData
| CRef Reference
| CMisc Misc
type Attribute = (Name, AttValue)
data AttValue = AttValue [Either String Reference]
data Prolog = Prolog (Maybe XMLDecl) (Maybe DocTypeDecl)
data XMLDecl = XMLDecl VersionInfo (Maybe EncodingDecl) (Maybe SDDecl)
data Misc
= Comment Comment
| PI ProcessingInstruction
type ProcessingInstruction = (PITarget, String)
type SDDecl = Bool
type VersionInfo = String
type Comment = String
type PITarget = String
data DocTypeDecl = DTD Name (Maybe ExternalID) [MarkupDecl]
data MarkupDecl
= Element ElementDecl
| AttList AttListDecl
| Entity EntityDecl
| Notation NotationDecl
| MarkupMisc Misc
data ExtSubset = ExtSubset (Maybe TextDecl) [ExtSubsetDecl]
data ExtSubsetDecl
= ExtMarkupDecl MarkupDecl
| ExtConditionalSect ConditionalSect
data ElementDecl = ElementDecl Name ContentSpec
data ContentSpec
= EMPTY
| ANY
| Mixed Mixed
| ContentSpec CP
data CP
= TagName Name Modifier
| Choice [CP] Modifier
| Seq [CP] Modifier
data Modifier
= None
| Query
| Star
| Plus
data Mixed
= PCDATA
| PCDATAplus [Name]
data AttListDecl = AttListDecl Name [AttDef]
data AttDef = AttDef Name AttType DefaultDecl
data AttType
= StringType
| TokenizedType TokenizedType
| EnumeratedType EnumeratedType
data TokenizedType
= ID
| IDREF
| IDREFS
| ENTITY
| ENTITIES
| NMTOKEN
| NMTOKENS
data EnumeratedType
= NotationType NotationType
| Enumeration Enumeration
type NotationType = [Name]
type Enumeration = [NmToken]
data DefaultDecl
= REQUIRED
| IMPLIED
| DefaultTo AttValue (Maybe FIXED)
data FIXED = FIXED
data ConditionalSect
= IncludeSect IncludeSect
| IgnoreSect IgnoreSect
type IncludeSect = [ExtSubsetDecl]
type IgnoreSect = [IgnoreSectContents]
data Ignore = Ignore
data IgnoreSectContents = IgnoreSectContents Ignore [(IgnoreSectContents, Ignore)]
data Reference
= RefEntity EntityRef
| RefChar CharRef
type EntityRef = Name
type CharRef = Int
type PEReference = Name
data EntityDecl
= EntityGEDecl GEDecl
| EntityPEDecl PEDecl
data GEDecl = GEDecl Name EntityDef
data PEDecl = PEDecl Name PEDef
data EntityDef
= DefEntityValue EntityValue
| DefExternalID ExternalID (Maybe NDataDecl)
data PEDef
= PEDefEntityValue EntityValue
| PEDefExternalID ExternalID
data ExternalID
= SYSTEM SystemLiteral
| PUBLIC PubidLiteral SystemLiteral
data NDataDecl = NDATA Name
data TextDecl = TextDecl (Maybe VersionInfo) EncodingDecl
data ExtParsedEnt = ExtParsedEnt (Maybe TextDecl) Content
data ExtPE = ExtPE (Maybe TextDecl) [ExtSubsetDecl]
data NotationDecl = NOTATION Name (Either ExternalID PublicID)
data PublicID = PUBLICID PubidLiteral
data EncodingDecl = EncodingDecl String
data EntityValue = EntityValue [EV]
data EV
= EVString String
| EVRef Reference
data PubidLiteral = PubidLiteral String
data SystemLiteral = SystemLiteral String
type Name = String
type Names = [Name]
type NmToken = String
type NmTokens = [NmToken]
type CharData = String
type CDSect = CharData
A simple symbol table mapping strings (references) to values.
type SymTab a = [(String, a)]
Symbol table operations
emptyST :: SymTab a
addST :: String -> a -> SymTab a -> SymTab a
lookupST :: String -> SymTab a -> Maybe a
XML Types
The top-level document container
data Document
The symbol table stored in a document holds all its general entity + reference definitions.
Constructors
Document Prolog (SymTab EntityDef) Element
The main document content
data Element
Constructors
Elem Name [Attribute] [Content]
Instances
Verbatim Element
data ElemTag
Constructors
ElemTag Name [Attribute] intermediate for parsing
Instances
Eq ElemTag
data Content
Constructors
CElem Element
CString Bool CharData bool is whether whitespace is significant
CRef Reference
CMisc Misc
Instances
Verbatim Content
type Attribute = (Name, AttValue)
data AttValue
Constructors
AttValue [Either String Reference]
Administrative parts of the document
data Prolog
Constructors
Prolog (Maybe XMLDecl) (Maybe DocTypeDecl)
data XMLDecl
Constructors
XMLDecl VersionInfo (Maybe EncodingDecl) (Maybe SDDecl)
data Misc
Constructors
Comment Comment
PI ProcessingInstruction
type ProcessingInstruction = (PITarget, String)
type SDDecl = Bool
type VersionInfo = String
type Comment = String
type PITarget = String
The DTD
content model
data DocTypeDecl
Constructors
DTD Name (Maybe ExternalID) [MarkupDecl]
data MarkupDecl
Constructors
Element ElementDecl
AttList AttListDecl
Entity EntityDecl
Notation NotationDecl
MarkupMisc Misc
data ExtSubset
Constructors
ExtSubset (Maybe TextDecl) [ExtSubsetDecl]
data ExtSubsetDecl
Constructors
ExtMarkupDecl MarkupDecl
ExtConditionalSect ConditionalSect
data ElementDecl
Constructors
ElementDecl Name ContentSpec
data ContentSpec
Constructors
EMPTY
ANY
Mixed Mixed
ContentSpec CP
data CP
Constructors
TagName Name Modifier
Choice [CP] Modifier
Seq [CP] Modifier
Instances
Show CP
data Modifier
Constructors
None Just One
Query Zero Or One
Star Zero Or More
Plus One Or More
Instances
Show Modifier
data Mixed
Constructors
PCDATA
PCDATAplus [Name]
attribute model
data AttListDecl
Constructors
AttListDecl Name [AttDef]
data AttDef
Constructors
AttDef Name AttType DefaultDecl
data AttType
Constructors
StringType
TokenizedType TokenizedType
EnumeratedType EnumeratedType
data TokenizedType
Constructors
ID
IDREF
IDREFS
ENTITY
ENTITIES
NMTOKEN
NMTOKENS
data EnumeratedType
Constructors
NotationType NotationType
Enumeration Enumeration
type NotationType = [Name]
type Enumeration = [NmToken]
data DefaultDecl
Constructors
REQUIRED
IMPLIED
DefaultTo AttValue (Maybe FIXED)
data FIXED
Constructors
FIXED
conditional sections
data ConditionalSect
Constructors
IncludeSect IncludeSect
IgnoreSect IgnoreSect
type IncludeSect = [ExtSubsetDecl]
type IgnoreSect = [IgnoreSectContents]
data Ignore
Constructors
Ignore
data IgnoreSectContents
Constructors
IgnoreSectContents Ignore [(IgnoreSectContents, Ignore)]
References
data Reference
Constructors
RefEntity EntityRef
RefChar CharRef
Instances
Verbatim Reference
type EntityRef = Name
type CharRef = Int
type PEReference = Name
Entities
data EntityDecl
Constructors
EntityGEDecl GEDecl
EntityPEDecl PEDecl
data GEDecl
Constructors
GEDecl Name EntityDef
data PEDecl
Constructors
PEDecl Name PEDef
data EntityDef
Constructors
DefEntityValue EntityValue
DefExternalID ExternalID (Maybe NDataDecl)
data PEDef
Constructors
PEDefEntityValue EntityValue
PEDefExternalID ExternalID
data ExternalID
Constructors
SYSTEM SystemLiteral
PUBLIC PubidLiteral SystemLiteral
data NDataDecl
Constructors
NDATA Name
data TextDecl
Constructors
TextDecl (Maybe VersionInfo) EncodingDecl
data ExtParsedEnt
Constructors
ExtParsedEnt (Maybe TextDecl) Content
data ExtPE
Constructors
ExtPE (Maybe TextDecl) [ExtSubsetDecl]
data NotationDecl
Constructors
NOTATION Name (Either ExternalID PublicID)
data PublicID
Constructors
PUBLICID PubidLiteral
data EncodingDecl
Constructors
EncodingDecl String
data EntityValue
Constructors
EntityValue [EV]
data EV
Constructors
EVString String
EVRef Reference
data PubidLiteral
Constructors
PubidLiteral String
data SystemLiteral
Constructors
SystemLiteral String
Basic value types
type Name = String
type Names = [Name]
type NmToken = String
type NmTokens = [NmToken]
type CharData = String
type CDSect = CharData
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Validate.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Validate.html 1 + + +Text.XML.HaXml.Validate
 HaXmlParentContentsIndex
Text.XML.HaXml.Validate
Description
Validate a document against a dtd.
Synopsis
validate :: DocTypeDecl -> Element -> [String]
partialValidate :: DocTypeDecl -> Element -> [String]
Documentation
validate :: DocTypeDecl -> Element -> [String]

validate takes a DTD and a tagged element, and returns a list of + errors in the document with respect to its DTD.

If you have several documents to validate against a single DTD, + then you will gain efficiency by freezing-in the DTD through partial + application, e.g. checkMyDTD = validate myDTD.

partialValidate :: DocTypeDecl -> Element -> [String]
partialValidate is like validate, except that it does not check that + the element type matches that of the DTD's root element.
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Verbatim.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Verbatim.html 1 + + +Text.XML.HaXml.Verbatim
 HaXmlParentContentsIndex
Text.XML.HaXml.Verbatim
Portability portable
Stability experimental
Maintainer simons@cryp.to
Description

The preferred method for rendering a Document or single Content + is by using the pretty printing facility defined in Pretty. + Pretty-printing does not work well for cases, however, where the + formatting in the XML document is significant. Examples of this + case are XHTML's <pre> tag, Docbook's <literallayout> tag, + and many more.

Theoretically, the document author could avoid this problem by + wrapping the contents of these tags in a <![CDATA[...]]> section, + but often this is not practical, for instance when the + literal-layout section contains other elements. Finally, program + writers could manually format these elements by transforming them + into a literal string in their CFliter, etc., but this is + annoying to do and prone to omissions and formatting errors.

As an alternative, this module provides the function verbatim, + which will format XML Content as a String while retaining the + formatting of the input document unchanged.

Know problems:

  • HaXml's parser eats line feeds between two tags.

  • Attributes should be formatted by making them an instance of + Verbatim as well, but since an Attribute is just a tuple, + not a full data type, the helper function verbAttr must be + used instead.

  • CMisc is not yet supported.

  • Elements, which contain no content, are formatted as + <element-name/>, even if they were not defined as being of + type EMPTY. In XML this perfectly alright, but in SGML it is + not. Those, who wish to use verbatim to format parts of say + an HTML page will have to (a) replace problematic elements by + literals before running verbatim or (b) use a second + search-and-replace stage to fix this. +

Synopsis
class Verbatim a where
verbatim :: a -> String
verbAttr :: Attribute -> String
Documentation
class Verbatim a where
This class promises that the function verbatim knows how to + format this data type into a string without changing the + formatting.
Methods
verbatim :: a -> String
Instances
(Verbatim a) => Verbatim [a]
Verbatim Char
(Verbatim a, Verbatim b) => Verbatim (Either a b)
Verbatim Content
Verbatim Element
Verbatim Reference
verbAttr :: Attribute -> String
This is a helper function is required because Haskell does not + allow to make an ordinary tuple (like Attribute) an instance of a + class. The resulting output will preface the actual attribute with + a single blank so that lists of Attributes can be handled + implicitly by the definition for lists of Verbatim data types.
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Wrappers.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Wrappers.html 1 + + +Text.XML.HaXml.Wrappers
 HaXmlParentContentsIndex
Text.XML.HaXml.Wrappers
Synopsis
fix2Args :: IO (String, String)
processXmlWith :: CFilter -> IO ()
Documentation
fix2Args :: IO (String, String)
This useful auxiliary checks the commandline arguments for two + filenames, the input and output file respectively. If either + is missing, it is replaced by '-', which can be interpreted by the + caller as stdin and/or stdout.
processXmlWith :: CFilter -> IO ()

The wrapper processXmlWith returns an IO () computation + that collects the filenames (or stdin/stdout) to use when + reading/writing XML documents. Its CFilter argument + is applied to transform the XML document from the input and + write it to the output. No DTD is attached to the output.

If the input filename ends with .html or .htm, it is parsed using + the error-correcting HTML parser rather than the strict XML parser.

Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Xml2Haskell.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Xml2Haskell.html 1 + + +Text.XML.HaXml.Xml2Haskell
 HaXmlParentContentsIndex
Text.XML.HaXml.Xml2Haskell
Contents
Reading and writing XML data into a typed Haskell representation.
The enabling classes.
Parsing and printing helper functions
Re-exports
Description
This module provides the XmlContent class and readXml and writeXml + functions that you will need if you generate a module of Haskell + datatype definitions from an XML DTD. Use the DtdToHaskell + program to generate both datatypes and instances of this class, + then import this module to read and write values to and from XML files.
Synopsis
readXml :: (XmlContent a) => String -> Maybe a
showXml :: (XmlContent a) => a -> String
hGetXml :: (XmlContent a) => Handle -> IO a
hPutXml :: (XmlContent a) => Handle -> a -> IO ()
fReadXml :: (XmlContent a) => FilePath -> IO a
fWriteXml :: (XmlContent a) => FilePath -> a -> IO ()
class XmlContent a where
toElem :: a -> [Content]
fromElem :: [Content] -> (Maybe a, [Content])
class XmlAttributes a where
toAttrs :: a -> [Attribute]
fromAttrs :: [Attribute] -> a
class XmlAttrType a where
toAttrFrTyp :: String -> a -> Maybe Attribute
fromAttrToTyp :: String -> Attribute -> Maybe a
choice :: (XmlContent a) => (a -> b) -> ([Content] -> (Maybe b, [Content])) -> [Content] -> (Maybe b, [Content])
definite :: ([Content] -> (Maybe a, [Content])) -> String -> String -> [Content] -> (a, [Content])
many :: ([Content] -> (Maybe a, [Content])) -> [Content] -> ([a], [Content])
fromText :: [Content] -> (Maybe String, [Content])
toText :: String -> [Content]
data List1 a = NonEmpty [a]
data ANYContent = ANYContent
maybeToAttr :: (String -> a -> Maybe Attribute) -> String -> Maybe a -> Maybe Attribute
defaultToAttr :: (String -> a -> Maybe Attribute) -> String -> Defaultable a -> Maybe Attribute
definiteA :: (String -> Attribute -> Maybe a) -> String -> String -> [Attribute] -> a
defaultA :: (String -> Attribute -> Maybe a) -> a -> String -> [Attribute] -> Defaultable a
possibleA :: (String -> Attribute -> Maybe a) -> String -> [Attribute] -> Maybe a
fromAttrToStr :: String -> Attribute -> Maybe String
toAttrFrStr :: String -> String -> Maybe Attribute
data Defaultable a
= Default a
| NonDefault a
str2attr :: String -> AttValue
attr2str :: AttValue -> String
data Element = Elem Name [Attribute] [Content]
data Content
= CElem Element
| CString Bool CharData
| CRef Reference
| CMisc Misc
Reading and writing XML data into a typed Haskell representation.
readXml :: (XmlContent a) => String -> Maybe a
Read a fully-typed XML document from a string.
showXml :: (XmlContent a) => a -> String
Convert a fully-typed XML document to a string.
hGetXml :: (XmlContent a) => Handle -> IO a
Read a fully-typed XML document from a file handle.
hPutXml :: (XmlContent a) => Handle -> a -> IO ()
Write a fully-typed XML document to a file handle.
fReadXml :: (XmlContent a) => FilePath -> IO a
Read an XML document from a file and convert it to a fully-typed + Haskell value.
fWriteXml :: (XmlContent a) => FilePath -> a -> IO ()
Write a fully-typed Haskell value to the given file as an XML + document.
The enabling classes.
class XmlContent a where
The XmlContent class promises that an XML content element can be + converted to and from a Haskell value.
Methods
toElem :: a -> [Content]
fromElem :: [Content] -> (Maybe a, [Content])
Instances
(XmlContent a, XmlContent b) => XmlContent (OneOf2 a b)
(XmlContent a, XmlContent b, XmlContent c) => XmlContent (OneOf3 a b c)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d) => XmlContent (OneOf4 a b c d)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e) => XmlContent (OneOf5 a b c d e)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f) => XmlContent (OneOf6 a b c d e f)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g) => XmlContent (OneOf7 a b c d e f g)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h) => XmlContent (OneOf8 a b c d e f g h)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i) => XmlContent (OneOf9 a b c d e f g h i)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j) => XmlContent (OneOf10 a b c d e f g h i j)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k) => XmlContent (OneOf11 a b c d e f g h i j k)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l) => XmlContent (OneOf12 a b c d e f g h i j k l)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m) => XmlContent (OneOf13 a b c d e f g h i j k l m)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n) => XmlContent (OneOf14 a b c d e f g h i j k l m n)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o) => XmlContent (OneOf15 a b c d e f g h i j k l m n o)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p) => XmlContent (OneOf16 a b c d e f g h i j k l m n o p)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p, XmlContent q) => XmlContent (OneOf17 a b c d e f g h i j k l m n o p q)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p, XmlContent q, XmlContent r) => XmlContent (OneOf18 a b c d e f g h i j k l m n o p q r)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p, XmlContent q, XmlContent r, XmlContent s) => XmlContent (OneOf19 a b c d e f g h i j k l m n o p q r s)
(XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o, XmlContent p, XmlContent q, XmlContent r, XmlContent s, XmlContent t) => XmlContent (OneOf20 a b c d e f g h i j k l m n o p q r s t)
(XmlContent a, XmlContent b) => XmlContent (a, b)
(XmlContent a, XmlContent b, XmlContent c) => XmlContent (a, b, c)
(XmlContent a) => XmlContent [a]
(XmlContent a) => XmlContent (Maybe a)
(XmlContent a) => XmlContent (List1 a)
XmlContent ANYContent
class XmlAttributes a where
The XmlAttributes class promises that a list of XML tag attributes + can be converted to and from a Haskell value.
Methods
toAttrs :: a -> [Attribute]
fromAttrs :: [Attribute] -> a
class XmlAttrType a where
The XmlAttrType class promises that an attribute taking an XML enumerated + type can be converted to and from a Haskell value.
Methods
toAttrFrTyp :: String -> a -> Maybe Attribute
fromAttrToTyp :: String -> Attribute -> Maybe a
Parsing and printing helper functions
choice :: (XmlContent a) => (a -> b) -> ([Content] -> (Maybe b, [Content])) -> [Content] -> (Maybe b, [Content])
definite :: ([Content] -> (Maybe a, [Content])) -> String -> String -> [Content] -> (a, [Content])
many :: ([Content] -> (Maybe a, [Content])) -> [Content] -> ([a], [Content])
fromText :: [Content] -> (Maybe String, [Content])
toText :: String -> [Content]
data List1 a
The List1 type represents lists with at least one element. + It is required for DTD content models that use + as a modifier.
Constructors
NonEmpty [a]
Instances
(XmlContent a) => XmlContent (List1 a)
data ANYContent
A type corresponding to XML's ANY contentspec +data ANYContent = forall a . XmlContent a => ANYContent a
Constructors
ANYContent
Instances
XmlContent ANYContent
maybeToAttr :: (String -> a -> Maybe Attribute) -> String -> Maybe a -> Maybe Attribute
defaultToAttr :: (String -> a -> Maybe Attribute) -> String -> Defaultable a -> Maybe Attribute
definiteA :: (String -> Attribute -> Maybe a) -> String -> String -> [Attribute] -> a
defaultA :: (String -> Attribute -> Maybe a) -> a -> String -> [Attribute] -> Defaultable a
possibleA :: (String -> Attribute -> Maybe a) -> String -> [Attribute] -> Maybe a
fromAttrToStr :: String -> Attribute -> Maybe String
toAttrFrStr :: String -> String -> Maybe Attribute
data Defaultable a
If an attribute is defaultable, then it either takes the default + value (which is omitted from the output), or a non-default value + (which obviously must be printed).
Constructors
Default a
NonDefault a
str2attr :: String -> AttValue
attr2str :: AttValue -> String
Re-exports
data Element
Constructors
Elem Name [Attribute] [Content]
Instances
Verbatim Element
data Content
Constructors
CElem Element
CString Bool CharData bool is whether whitespace is significant
CRef Reference
CMisc Misc
Instances
Verbatim Content
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Xtract.Combinators.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Xtract.Combinators.html 1 + + +Text.XML.HaXml.Xtract.Combinators
 HaXmlParentContentsIndex
Text.XML.HaXml.Xtract.Combinators
Description

This is a new set of XML combinators for Xtract, not standard, + but based on the standard set in Text.Xml.Haxml.Combinators. + The main difference is that the Content Filter type becomes a + Double Filter. A Double Filter always takes the whole document + as an extra argument, so you can start to traverse it again from + any inner location within the document tree.

The new combinators definitions are derived from the old ones. + New names are derived from the old by surrounding with the letter o, + or by doubling the operator symbols.

Synopsis
type DFilter = Content -> Content -> [Content]
local :: CFilter -> DFilter
global :: CFilter -> DFilter
oloco :: (CFilter -> CFilter) -> DFilter -> DFilter
oglobo :: (CFilter -> CFilter) -> DFilter -> DFilter
ooo :: DFilter -> DFilter -> DFilter
(||>||) :: (a -> b -> [c]) -> (a -> b -> [c]) -> a -> b -> [c]
owitho :: DFilter -> DFilter -> DFilter
owithouto :: DFilter -> DFilter -> DFilter
okeepo :: DFilter
ononeo :: DFilter
ochildreno :: DFilter
oelmo :: DFilter
otxto :: DFilter
applypred :: CFilter -> DFilter -> CFilter
oiffindo :: String -> (String -> DFilter) -> DFilter -> DFilter
oifTxto :: (String -> DFilter) -> DFilter -> DFilter
ocato :: [a -> b -> [c]] -> a -> b -> [c]
(//>>) :: DFilter -> DFilter -> DFilter
(<<//) :: DFilter -> DFilter -> DFilter
odeepo :: DFilter -> DFilter
Documentation
type DFilter = Content -> Content -> [Content]
double content filter - takes document root + local subtree.
local :: CFilter -> DFilter
lift an ordinary content filter to a double filter.
global :: CFilter -> DFilter
oloco :: (CFilter -> CFilter) -> DFilter -> DFilter
lift a CFilter combinator to a DFilter combinator
oglobo :: (CFilter -> CFilter) -> DFilter -> DFilter
ooo :: DFilter -> DFilter -> DFilter
lifted composition over double filters.
(||>||) :: (a -> b -> [c]) -> (a -> b -> [c]) -> a -> b -> [c]
lifted choice.
owitho :: DFilter -> DFilter -> DFilter
lifted predicates.
owithouto :: DFilter -> DFilter -> DFilter
okeepo :: DFilter
lifted unit and zero.
ononeo :: DFilter
ochildreno :: DFilter
oelmo :: DFilter
otxto :: DFilter
applypred :: CFilter -> DFilter -> CFilter
oiffindo :: String -> (String -> DFilter) -> DFilter -> DFilter
oifTxto :: (String -> DFilter) -> DFilter -> DFilter
ocato :: [a -> b -> [c]] -> a -> b -> [c]
(//>>) :: DFilter -> DFilter -> DFilter
(<<//) :: DFilter -> DFilter -> DFilter
odeepo :: DFilter -> DFilter
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Xtract.Lex.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Xtract.Lex.html 1 + + +Text.XML.HaXml.Xtract.Lex
 HaXmlParentContentsIndex
Text.XML.HaXml.Xtract.Lex
Description

This is another hand-written lexer, this time for the Xtract + command-language. The entry point is lexXtract. You don't + normally need to use this module directly - the lexer is called + automatically by the parser. (We only expose this interface + for debugging purposes.)

The Xtract command language is very like the XPath specification.

lexXtract :: String -> [Token]
data Posn
Constructors
Pn Int
Instances
Show Posn
data TokenT
Constructors
Symbol String
TokString String
TokNum Integer
Instances
Show TokenT
type Token = Either String (Posn, TokenT)
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Xtract.Parse.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.Xtract.Parse.html 1 + + +Text.XML.HaXml.Xtract.Parse
 HaXmlParentContentsIndex
Text.XML.HaXml.Xtract.Parse
Description
A parser for the Xtract command-language. (The string input is + tokenised internally by the lexer lexXtract.) + See http://www.haskell.org/HaXml/Xtract.html for the grammar that + is accepted.
Synopsis
parseXtract :: String -> DFilter
Documentation
parseXtract :: String -> DFilter
The cool thing is that the Xtract command parser directly builds + a higher-order DFilter (see Text.Xml.HaXml.Xtract.Combinators) + which can be applied to an XML document without further ado.
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.html hunk ./dependencies/HaXml-1.2/docs/HaXml/Text.XML.HaXml.html 1 + + +Text.XML.HaXml
 HaXmlParentContentsIndex
Text.XML.HaXml
Description
This is just a convenient way of bunching the XML combinators + together with some other things you are likely to want at the + same time.
Synopsis
module Text.XML.HaXml.Types
module Text.XML.HaXml.Combinators
module Text.XML.HaXml.Parse
module Text.XML.HaXml.Pretty
module Text.XML.HaXml.Html.Generate
module Text.XML.HaXml.Html.Parse
module Text.XML.HaXml.Validate
module Text.XML.HaXml.Wrappers
module Text.XML.HaXml.Verbatim
module Text.XML.HaXml.Escape
render :: Doc -> String
version :: String
Documentation
module Text.XML.HaXml.Types
module Text.XML.HaXml.Combinators
module Text.XML.HaXml.Parse
module Text.XML.HaXml.Pretty
module Text.XML.HaXml.Html.Generate
module Text.XML.HaXml.Html.Parse
module Text.XML.HaXml.Validate
module Text.XML.HaXml.Wrappers
module Text.XML.HaXml.Verbatim
module Text.XML.HaXml.Escape
render :: Doc -> String
version :: String
The version of the library (currently 1.12).
Produced by Haddock version 0.4
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tA.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tA.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (A)
ANYContentText.XML.HaXml.Xml2Haskell
AttDefText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
AttListDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
AttTypeText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
AttValueText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
AttrFieldsText.XML.HaXml.DtdToHaskell.TypeDef
AttributeText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tB.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tB.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (B)
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tC.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tC.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (C)
CDSectText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
CFilterText.XML.HaXml Text.XML.HaXml.Combinators
CPText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
CharDataText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
CharRefText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
CommentText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ConditionalSectText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ConstrText.XML.HaXml.Haskell2Xml
ConstructorsText.XML.HaXml.DtdToHaskell.TypeDef
ContentText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types Text.XML.HaXml.Xml2Haskell
ContentSpecText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tD.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tD.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (D)
DFilterText.XML.HaXml.Xtract.Combinators
DefaultDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
DefaultableText.XML.HaXml.Xml2Haskell
DocText.PrettyPrint.HughesPJ
DocTypeDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
DocumentText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tE.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tE.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (E)
EVText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ElemTagText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ElementText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types Text.XML.HaXml.Xml2Haskell
ElementDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
EncodingDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
EntityDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
EntityDefText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
EntityRefText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
EntityValueText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
EnumeratedTypeText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
EnumerationText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ExtPEText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ExtParsedEntText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ExtSubsetText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ExtSubsetDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ExternalIDText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tF.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tF.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (F)
FIXEDText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tG.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tG.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (G)
GEDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tH.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tH.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (H)
HTypeText.XML.HaXml.Haskell2Xml
Haskell2XmlText.XML.HaXml.Haskell2Xml
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tI.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tI.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (I)
IgnoreText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
IgnoreSectText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
IgnoreSectContentsText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
IncludeSectText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tJ.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tJ.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (J)
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tK.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tK.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (K)
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tL.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tL.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (L)
LabelFilterText.XML.HaXml Text.XML.HaXml.Combinators
List1Text.XML.HaXml.Xml2Haskell
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tM.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tM.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (M)
MarkupDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
MiscText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
MixedText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ModeText.PrettyPrint.HughesPJ
ModifierText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tN.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tN.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (N)
NDataDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
NameText.XML.HaXml Text.XML.HaXml.DtdToHaskell.TypeDef Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
NamesText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
NmTokenText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
NmTokensText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
NotationDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
NotationTypeText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tO.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tO.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (O)
OneOf10Text.XML.HaXml.OneOfN
OneOf11Text.XML.HaXml.OneOfN
OneOf12Text.XML.HaXml.OneOfN
OneOf13Text.XML.HaXml.OneOfN
OneOf14Text.XML.HaXml.OneOfN
OneOf15Text.XML.HaXml.OneOfN
OneOf16Text.XML.HaXml.OneOfN
OneOf17Text.XML.HaXml.OneOfN
OneOf18Text.XML.HaXml.OneOfN
OneOf19Text.XML.HaXml.OneOfN
OneOf2Text.XML.HaXml.OneOfN
OneOf20Text.XML.HaXml.OneOfN
OneOf3Text.XML.HaXml.OneOfN
OneOf4Text.XML.HaXml.OneOfN
OneOf5Text.XML.HaXml.OneOfN
OneOf6Text.XML.HaXml.OneOfN
OneOf7Text.XML.HaXml.OneOfN
OneOf8Text.XML.HaXml.OneOfN
OneOf9Text.XML.HaXml.OneOfN
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tP.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tP.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (P)
PEDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
PEDefText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
PEReferenceText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
PITargetText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
ParserText.ParserCombinators.HuttonMeijerWallace
PosnText.XML.HaXml.Lex Text.XML.HaXml.Xtract.Lex
ProcessingInstructionText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
PrologText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
PubidLiteralText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
PublicIDText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tQ.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tQ.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (Q)
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tR.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tR.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (R)
ReferenceText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tS.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tS.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (S)
SDDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
SectionText.XML.HaXml.Lex
SpecialText.XML.HaXml.Lex
StructTypeText.XML.HaXml.DtdToHaskell.TypeDef
SymTabText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
SystemLiteralText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tT.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tT.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (T)
TextDeclText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
TextDetailsText.PrettyPrint.HughesPJ
ThenElseText.XML.HaXml Text.XML.HaXml.Combinators
TokenText.XML.HaXml.Lex Text.XML.HaXml.Xtract.Lex
TokenTText.XML.HaXml.Lex Text.XML.HaXml.Xtract.Lex
TokenizedTypeText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
TypeDefText.XML.HaXml.DtdToHaskell.TypeDef
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tU.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tU.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (U)
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tV.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tV.html 1 + + +HaXml (Type/ClassIndex)
 HaXmlContentsIndex
Type/Class Index (V)
VerbatimText.XML.HaXml Text.XML.HaXml.Verbatim
VersionInfoText.XML.HaXml Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Types
addfile ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tW.html hunk ./dependencies/HaXml-1.2/docs/HaXml/doc-index-tW.html 1 + + +HaXml